From minios-devel-bounces@lists.xenproject.org Fri Feb 01 03:16:35 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 01 Feb 2019 03:16:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gpPJh-0000Uw-Kg; Fri, 01 Feb 2019 03:16:33 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=c7UP=QI=gmail.com=jiakernel2@srs-us1.protection.inumbo.net>)
 id 1gpPJg-0000Ur-6K
 for minios-devel@lists.xenproject.org; Fri, 01 Feb 2019 03:16:32 +0000
X-Inumbo-ID: c45cb3df-25cf-11e9-bc90-bc764e045a96
Received: from mail-pg1-x544.google.com (unknown [2607:f8b0:4864:20::544])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id c45cb3df-25cf-11e9-bc90-bc764e045a96;
 Fri, 01 Feb 2019 03:16:29 +0000 (UTC)
Received: by mail-pg1-x544.google.com with SMTP id g189so2272546pgc.5
 for <minios-devel@lists.xenproject.org>; Thu, 31 Jan 2019 19:16:29 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:references:from:organization:message-id:date:user-agent
 :mime-version:in-reply-to:content-transfer-encoding;
 bh=Yrpxav1N1miOFrwgJN2+47IghawqrKffv3kuEWnblkQ=;
 b=WgpjzW9Kdy8HWYTuSWOCNIu/B+/YTX9GB88E2dbe3Kwr1r/AksqWzUIaRCf6E8jm8R
 avldWu7ULnKlAN4NBnBd/hz1VBaR19K9DNTNqeiI8HLFID2JRKvzc+bviES1fRsB5w48
 AHdGn0Dzr61/uGxSKVe5wB4+gnhOEkxSjVFgAZAHP5yA4Sc1zyGRcitIxvhUFWasmMDN
 BmxhqAlQCzhbgXs5ZCaeEaMeMrgYIHIbfR1Hfm58rBavYmiMplEsRWWsnJ4Caec0KWHK
 JWON5jx6YDUuA8AfgQW9SgoIBkRT3ZwYN4XdSd2Pp0MevvuEle7Qf4Xfdwy5Zo7w2aBq
 Ltpw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:references:from:organization
 :message-id:date:user-agent:mime-version:in-reply-to
 :content-transfer-encoding;
 bh=Yrpxav1N1miOFrwgJN2+47IghawqrKffv3kuEWnblkQ=;
 b=bIbw28tHu7q82+7BmxyLbL9ULT9QWvSNNOFEC1tou5J2J/ZDe0WdZAq3RmOM3hcMUr
 nm33EAhyDpmhwJjGMK0uGRWQTLmJbUr61iqK2JMVVzxyxpSEx37YZNfivIkEgxMrUlqz
 wDgDLvZw4QRBmS6FogvxlxvdmhtxbOvwmoteKpSx37KiM4zjrZQUX53naMdp1jAk7t0s
 Oi0CKJEFaeBLwhZ65GWh5EbQ1ZQ+MOC7x0rhPEF/XZxa846RqH3Zwja5Tnotck2QhqAz
 40llMFDoWBQonQReeVadPAwTnesouN0NH/DFgj1l1CMGk6xZ5m+I7BVaECjd21zF3j4p
 7ZNA==
X-Gm-Message-State: AJcUukeMKXpOTgUq0F+2P5YwdFoXEXukmD+U30VTy0heLeGeLRojjWry
 UMX6o3qJiTWmd7fY4/fVjIoaFAfi
X-Google-Smtp-Source: ALg8bN4FtK4GjLjwZ+qyj9AT0RGVlChR3DDpNMyRrj6vlrqG7ZK5r3bAAXuRwDJJL6SjKmnN+MxgkA==
X-Received: by 2002:a63:5e43:: with SMTP id s64mr34105420pgb.101.1548990988727; 
 Thu, 31 Jan 2019 19:16:28 -0800 (PST)
Received: from [0.0.0.0] (96.45.178.72.16clouds.com. [96.45.178.72])
 by smtp.gmail.com with ESMTPSA id x7sm6699310pga.68.2019.01.31.19.16.25
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Thu, 31 Jan 2019 19:16:27 -0800 (PST)
To: Sharan Santhanam <sharan.santhanam@neclab.eu>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>, minios-devel@lists.xenproject.org
References: <20190129031056.142151-1-justin.he@arm.com>
 <f77cecc0-3e9f-f515-90f6-3661332783ab@gmail.com>
 <23908f3d-557b-1504-4049-c345250f907e@neclab.eu>
From: Jia He <jiakernel2@gmail.com>
Organization: ARM
Message-ID: <ad12309f-dc6f-13fe-82ae-0ba7ac4e892b@gmail.com>
Date: Fri, 1 Feb 2019 11:16:21 +0800
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101
 Thunderbird/60.5.0
MIME-Version: 1.0
In-Reply-To: <23908f3d-557b-1504-4049-c345250f907e@neclab.eu>
Subject: Re: [Minios-devel] [UNIKRAFT PATCHv5 00/23] Follow up patches for
 Arm64 support series#1/5
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGkgU2hhcmFuCgpTdXJlLCB0aGFua3MKCkNoZWVycywKCkp1c3RpbiAoSmlhIEhlKQoKT24gMjAx
OS8xLzMxIDIyOjU2LCBTaGFyYW4gU2FudGhhbmFtIHdyb3RlOgo+IEhlbGxvIEppYSBIZSwKPgo+
IFRoYW5rIHlvdSBmb3IgdGhlIHVwZGF0ZWQgcGF0Y2hlcy4gSSBhbSBjdXJyZW50bHkgcmV2aWV3
aW5nIHBhdGNoZXMgaW4gCj4gb3VyIGJhY2tsb2cgYW5kIEkgd2lsbCBwcm9jZXNzIHRoZXNlIHBh
dGNoZXMgc29vbi4KPgo+IFRoYW5rcyAmIFJlZ2FyZHMKPiBTaGFyYW4KPgo+IE9uIDEvMzEvMTkg
OToyMSBBTSwgSmlhIEhlIHdyb3RlOgo+PiBQaW5nIDopCj4+Cj4+IC0tLQo+PiBDaGVlcnMsCj4+
IEp1c3RpbiAoSmlhIEhlKQo+Pgo+PiBPbiAyMDE5LzEvMjkgMTE6MTAsIEppYSBIZSB3cm90ZToK
Pj4+IFRoaXMgc2VyaWVzIGFkZHJlc3MgZm9sbG93aW5nIGNvbW1lbnRzOgo+Pj4gMDE6IFJlbW92
ZSB0aGUgY2hlY2sgb2YgJy0tZW5hYmxlLWRlZmF1bHQtcGllJyBpbiBNYWtlZmlsZS51aywKPj4+
IDAyOiBVc2UgbWFjcm8tZWQgaGVscGVyIHRvIHNpbXBsaWZ5IGlvcmVnX3JlYWQvd3JpdGUsCj4+
PiAwMzogVXNlIHRoZSBzYW1lIGRlY2xhcmF0aW9uIGZvciBfdGV4dCBhbmQgX2VuZCwKPj4+IDA0
OiBBZGRyZXNzIGNvbW1lbnRzIGZvciBELUNhY2hlIG9wZXJhdGlvbiBmdW5jdGlvbiwKPj4+IDA1
OiBHZXQgdmlydHVhbCBhZGRyZXNzIGJpdHMgZnJvbSBpZF9hYTY0bW1mcjBfZWwxLlBBUmFuZ2Us
Cj4+PiAwNjogRW5zdXJlIHN0YWNrIGFsaWdubWVudCBmb3IgZXhjZXB0aW9ucyBmcm9tIEVMMSwK
Pj4+IDA3OiBJbnZhbGlkYXRlIEQtQ2FjaGUgZm9yIG1vZGlmaWVkIGFyZWEgb25seSwKPj4+IDA4
OiBEaXNhYmxlIEQtQ2FjaGUgYmVmb3JlIGRvaW5nIGFueSBjaGFuZ2UsCj4+PiAwOTogQ2FsY3Vs
YXRlIEwzIHRhYmxlIGFuZCBwYWdlIHRhYmxlIHNpemUgYnkgaW1hZ2Ugc2l6ZSwKPj4+IDEwOiBS
ZW1vdmUgYSAtV3N0cmluZ29wLW92ZXJmbG93IHdhcm5pbmcgZm9yIHN0cm5jcHksCj4+PiAxMTog
UmVtb3ZlIHVzZWxlc3MgYmxhbmsgbGluZSwKPj4+Cj4+PiBTb21lIGNvbW1lbnRzIHRoYXQgaGF2
ZW4ndCBiZWVuIGFkZHJlc3NlZDoKPj4+IDAxOiBDaGVjayB0aGUgTUlEUiBhbmQgYXZvaWQgdGhl
IGVycmF0dW0gb24gYWZmZWN0ZWQgcGxhdGZvcm0KPj4+IMKgwqDCoMKgwqAgdmlhIGFuIGFsdGVy
bmF0aXZlIG9yIGp1bXAgdGFibGUuIC0tIFRoaXMgZXJyZXRhIGZyYW1ld29yawo+Pj4gwqDCoMKg
wqDCoCBpcyBub3Qgb25seSBmb3IgQXJtIGJ1dCBhbHNvIGZvciB4ODYuIEkgdGhpbmsgd2UnZCBi
ZXR0ZXIKPj4+IMKgwqDCoMKgwqAgdG8gZGlzY3VzcyBpbiBjb21tdW5pdHkuCj4+PiAwMjogRW5h
YmxlIEZJRk8gc3VwcG9ydCBmb3IgUEwwMTEuCj4+PiAwMzogQ29tcGFyZSB0aGUgcG9pbnRlcnMg
b2YgZGlmZmVyZW50IHR5cGUgaXMgYmVoYXZpb3VyIHVuZGVmaW5lZAo+Pj4KPj4+IElmIEkgZm9y
Z290IGFueXRoaW5nIHBsZWFzZSByZW1pbmQgbWUuCj4+Pgo+Pj4gWW91IGNhbiBnZXQgdGhlIDFz
dCBzZXJpZXMgYnk6Cj4+PiBnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL2hlamlhbmV0L1Vu
aWtyYWZ0X2FybTY0LmdpdCAtYiBcCj4+PiDCoMKgwqDCoHdlaV8xc3Rfc2VyaWVzX3Y1Cj4+Pgo+
Pj4gLS0tCj4+PiB2NCAtPiB2NTogZml4IGNvbXBpbGF0aW9uIGVycm9yCj4+PiB2MyAtPiB2NDoK
Pj4+IMKgwqAgMS4gRHJvcCAwNCBhbmQgMjQgcGF0Y2hlcyBpbiB2My4gcGF0Y2ggMDQgaXMgZ2Nj
IGNvbXBpbGVyCj4+PiDCoMKgIG9wdGltaXphdGlvbiByZWxhdGVkLCBub3QgYSBibG9ja2luZyBp
c3N1ZS4gVGhlIHJlc29sdXRpb24gaXMKPj4+IMKgwqAgdW5kZXIgZGlzY3Vzc2lvbi4gUGF0Y2gg
MjQgaXMgbm90IGNvbmNlcm5lZCBieSBTaGFyYW4uCj4+PiDCoMKgIDIuIFJlc3RvcmUgeDE4LHgx
OSBhZnRlciB1c2luZyB0aGVtLgo+Pj4gwqDCoCAzLiBGaXggSU1BR0VfUk9VTkRVUF9TSElGVCBm
cm9tIDIwIHRvIDIxLgo+Pj4gwqDCoCA0LiBsb3RzIG9mIGNoZWNrcGF0Y2ggd2FybmluZy4KPj4+
IHYyIC0+IHYzOiBSZWJhc2UgdG8gdGhlIGxhdGVzdCB1cHN0cmVhbSBiYXNlLgo+Pj4KPj4+IHYx
IC0+IHYyOgo+Pj4gwqDCoCAxLiBBZGQgVVJMIGxpbmsgZm9yICJVc2UgbWFjcm8tZWQgaGVscGVy
IHRvIHNpbXBsaWZ5IAo+Pj4gaW9yZWdfcmVhZC93cml0ZSIsCj4+PiDCoMKgIDIuIEludmFsaWRh
dGUgJiBjbGVhbiBDYWNoZSBmb3IgbWVtb3J5IHRoYXQgd291bGQgYmUgdXNlZCwKPj4+IMKgwqAg
My4gSW1wcm92ZSBjb2RlIGFuZCBjb21taXQgY29tbWVudHMgZm9yIGNhbGN1bGF0ZSBwYWdlYmFi
bGUgc2l6ZSwKPj4+IMKgwqAgNC4gVXNlIG1hY3JvcyB0byByZXBsYWNlIGhhcmRjb2RlIHZhbHVl
cywKPj4+IMKgwqAgNS4gVXNlIGxzci9sc2wgdG8gc2ltcGxpZnkgMk1CIHJvdW5kIHVwLAo+Pj4g
wqDCoCA2LiBEbyBvYmZ1c2NhdGVzIGFyaXRobWV0aWMgZm9yIGtlcm5lbCBpbWFnZSBzeW1ib2xz
LAo+Pj4gwqDCoCA3LiBDbGVhbiB1cCBrZXJuZWwgaW1hZ2Ugc3ltYm9scyBmb3IgQyBmaWxlcy4K
Pj4+Cj4+PiBKaWEgSGUgKDIzKToKPj4+IMKgwqAgYnVpbGQ6IFJlbW92ZSB0aGUgY2hlY2sgb2Yg
Jy0tZW5hYmxlLWRlZmF1bHQtcGllJyBpbiBNYWtlZmlsZS51awo+Pj4gwqDCoCBwbGF0L2luY2x1
ZGU6IFVzZSBtYWNyby1lZCBoZWxwZXIgdG8gc2ltcGxpZnkgaW9yZWdfcmVhZC93cml0ZSBmb3IK
Pj4+IMKgwqDCoMKgIEFybTY0Cj4+PiDCoMKgIHBsYXQvY29tbW9uOiBNb3ZlIGdsb2JhbCB2YXJp
YWJsZXMgZGVmaW5lZCBpbiBsaW5rIHNjcmlwdHMgdG8gYSAKPj4+IGhlYWRlcgo+Pj4gwqDCoCBw
bGF0OiBDbGVhbiB1cCBrZXJuZWwgaW1hZ2Ugc3ltYm9scwo+Pj4gwqDCoCBwbGF0L2NvbW1vbjog
UmVtb3ZlIGVhcmx5Y2xvYmVyciBmcm9tIFNZU1JFR19SRUFEMzIgZm9yIEFybTY0Cj4+PiDCoMKg
IHBsYXQvY29tbW9uOiBDbGVhbiBhbmQgaW52YWxpZGF0ZSBELUNhY2hlIG9ubHkgd2hlbiBib290
IGZvciBBcm02NAo+Pj4gwqDCoCBwbGF0L2NvbW1vbjogVXNlIGNvcnJlY3QgZHNiIG9wZXJhdGlv
biBmbGFnIGZvciBBcm02NAo+Pj4gwqDCoCBwbGF0L2NvbW1vbjogQWRkIHJlZmVycmVkIHNvdXJj
ZSBjb2RlIFVSTCBmb3IgY2FjaGUgb3BlcmF0aW9uCj4+PiDCoMKgIHBsYXQva3ZtOiBDb3JyZWN0
IGludmFsaWQgaW5kZW50IGNoYXJhY3RlciBmb3IgQXJtNjQKPj4+IMKgwqAgcGxhdC9rdm06IEdl
dCBWSVJUX0JJVFMgZnJvbSBpZF9hYTY0bW1mcjBfZWwxLlBBUmFuZ2UgZm9yIEFybTY0Cj4+PiDC
oMKgIGFyY2gvaW5jbHVkZTogQWRkIGEgX3JlZ3MgbWVtYmVyIHRvIHNhdmUgb3JpZ2lhbCBzdGFj
ayBwb2ludGVyCj4+PiDCoMKgIHBsYXQva3ZtOiBBZGQgX19UUkFQX1NUQUNLX1NJWkUgZm9yIHN0
YWNrIHBvaW50ZXIgd2hpbGUgZXhpdGluZyB0cmFwCj4+PiDCoMKgIHBsYXQva3ZtOiBSZW1vdmUg
cmVkdW5kYW50IHNwYWNlIHdoaWxlIGVudGVyaW5nIHRyYXAgZm9yIEFybQo+Pj4gwqDCoCBwbGF0
L2t2bTogRm9yY2UgYWxpZ24gdGhlIHN0YWNrIHBvaW50ZXIgZm9yIEFybTY0IEVMMSBleGNlcHRp
b25zCj4+PiDCoMKgIHBsYXQva3ZtOiBSZW5hbWUgcGFnZXRhYmxlLlMgdG8gcGFnZXRhYmxlNjQu
UyBmb3IgQXJtNjQKPj4+IMKgwqAgcGxhdC9rdm06IEludmFsaWRhdGUgRC1DYWNoZSB0aGF0IG1h
eSBoYXZlIGJlZW4gbW9kaWZpZWQgZm9yIEFybTY0Cj4+PiDCoMKgIHBsYXQva3ZtOiBhcm02NDog
Q2xlYXIgcGFnZXRhYmxlIG1lbW9yeSB3aXRoIGJvb3Qgc3RhY2sKPj4+IMKgwqAgcGxhdC9rdm06
IGFybTY0OiBDYWxjdWxhdGUgcGFnZXRhYmxlIHNpemUgZHluYW1pY2FsbHkgYnkgaW1hZ2Ugc2l6
ZQo+Pj4gwqDCoCBwbGF0L2t2bTogYXJtNjQ6IEJ1aWxkIEwzIHBhZ2UgdGFibGUgZm9yIHJhbmdl
IGdyZWF0ZXIgdGhhbiAyTUIKPj4+IMKgwqAgcGxhdC9rdm06IGFybTY0OiBTdXBwb3J0IGJ1aWxk
IEwzIHRhYmxlIGZvciBsYXJnZSBpbWFnZSBzaXplCj4+PiDCoMKgIHBsYXQva3ZtOiBhcm02NDog
UmVtb3ZlIG5lZWRsZXNzIHNlbWljb2xvbnMgaW4gYXNzZW1ibHkKPj4+IMKgwqAgcGxhdC9rdm06
IGFybTY0OiBFbnN1cmUgdGhlcmUgaXMgbm8gc3RhbGwgZGF0YSBpbiBjYWNoZSB3aGVuIGJvb3QK
Pj4+IMKgwqAgcGxhdC9rdm06IGFybTY0OiBSZW1vdmUgc3VwZXJmbHVvdXMgYmxhbmsgbGluZQo+
Pj4KPj4+IMKgIE1ha2VmaWxlLnVrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoCA4ICstCj4+PiDCoCBhcmNoL2FybS9h
cm02NC9pbmNsdWRlL3VrL2FzbS9sY3B1LmjCoMKgwqDCoMKgwqDCoCB8wqAgMTYgKystCj4+PiDC
oCBwbGF0L2NvbW1vbi9hcm0vY2FjaGU2NC5TwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgIHzCoCAzMSArKy0tLS0KPj4+IMKgIHBsYXQvY29tbW9uL2luY2x1ZGUvYXJtL2FybTY0
L2NwdS5owqDCoMKgwqDCoMKgwqDCoCB8wqAgNTggKysrKy0tLS0tLQo+Pj4gwqAgcGxhdC9jb21t
b24vaW5jbHVkZS9hcm0vYXJtNjQvY3B1X2RlZnMuaMKgwqDCoCB8wqAgMTYgKystCj4+PiDCoCBw
bGF0L2NvbW1vbi9pbmNsdWRlL3NlY3Rpb25zLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8
IDExMCArKysrKysrKysrKysrKysrKysrCj4+PiDCoCBwbGF0L2t2bS9NYWtlZmlsZS51a8KgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgMiArLQo+Pj4g
wqAgcGxhdC9rdm0vYXJtL2VudHJ5NjQuU8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoCB8wqAgNzcgKysrKysrKysrLS0tLQo+Pj4gwqAgcGxhdC9rdm0vYXJtL2V4Y2Vw
dGlvbnMuU8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgNzMgKysrKysr
KysrKy0tLQo+Pj4gwqAgcGxhdC9rdm0vYXJtL3twYWdldGFibGUuUyA9PiBwYWdldGFibGU2NC5T
fSB8IDExNSAKPj4+ICsrKysrKysrKysrKystLS0tLS0tCj4+PiDCoCBwbGF0L2t2bS9hcm0vc2V0
dXAuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDEy
ICstCj4+PiDCoCBwbGF0L2t2bS9pbmNsdWRlL2t2bS1hcm0vYXJtNjQvbW0uaMKgwqDCoMKgwqDC
oMKgwqAgfMKgIDE0ICsrLQo+Pj4gwqAgcGxhdC9rdm0vbWVtb3J5LmPCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCAyMyArKy0tCj4+PiDCoCBw
bGF0L2t2bS94ODYvc2V0dXAuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqAgfMKgwqAgNiArLQo+Pj4gwqAgcGxhdC94ZW4vYXJtL3NldHVwLmPCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDYgKy0KPj4+IMKgIHBs
YXQveGVuL2luY2x1ZGUveGVuLWFybS9tbS5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8
wqDCoCAzICstCj4+PiDCoCBwbGF0L3hlbi9pbmNsdWRlL3hlbi14ODYvbW0uaMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqAgfMKgIDIxICsrLS0KPj4+IMKgIHBsYXQveGVuL21lbW9yeS5jwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgMjIg
KystLQo+Pj4gwqAgcGxhdC94ZW4veDg2L21tLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCAxNyArKy0KPj4+IMKgIHBsYXQveGVuL3g4Ni9z
ZXR1cC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDC
oCAyICstCj4+PiDCoCAyMCBmaWxlcyBjaGFuZ2VkLCA0MTkgaW5zZXJ0aW9ucygrKSwgMjEzIGRl
bGV0aW9ucygtKQo+Pj4gwqAgY3JlYXRlIG1vZGUgMTAwNjQ0IHBsYXQvY29tbW9uL2luY2x1ZGUv
c2VjdGlvbnMuaAo+Pj4gwqAgcmVuYW1lIHBsYXQva3ZtL2FybS97cGFnZXRhYmxlLlMgPT4gcGFn
ZXRhYmxlNjQuU30gKDg0JSkKPj4+Cj4+Cj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCj4+IE1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKPj4gTWluaW9z
LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCj4+IGh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5v
cmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWwKPgoKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5p
b3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9y
Zy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Fri Feb 01 09:33:02 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 01 Feb 2019 09:33:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gpVC1-0007a2-Tn; Fri, 01 Feb 2019 09:33:01 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=PkWZ=QI=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1gpVC0-0007Zx-Sr
 for minios-devel@lists.xen.org; Fri, 01 Feb 2019 09:33:00 +0000
X-Inumbo-ID: 5c8561e8-2604-11e9-82a1-370d39bd6e4d
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 5c8561e8-2604-11e9-82a1-370d39bd6e4d;
 Fri, 01 Feb 2019 09:32:59 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 4F36F104D4C;
 Fri,  1 Feb 2019 10:32:58 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 69m42i3Od3Cx; Fri,  1 Feb 2019 10:32:58 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 2E5C2104708
 for <minios-devel@lists.xen.org>; Fri,  1 Feb 2019 10:32:56 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 1 Feb 2019 10:32:44
 +0100
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, <minios-devel@lists.xen.org>
References: <20181204171628.31870-1-yuri.volchkov@neclab.eu>
 <20181204171628.31870-3-yuri.volchkov@neclab.eu>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <78c83f3d-bf07-9303-3f76-f9188bd67a5e@neclab.eu>
Date: Fri, 1 Feb 2019 10:32:44 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20181204171628.31870-3-yuri.volchkov@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 2/3] lib/nolibc/string: import
 strlcpy and strlcat from musl
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: florian.schmidt@neclab.eu, simon.kuenzer@neclab.eu
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gWXVyaSwKClRoaXMgcGF0Y2ggc2VlbXMgZnVuY3Rpb25hbGx5IGZpbmUuCgpSZXZpZXdl
ZC1ieTogU2hhcmFuIFNhbnRoYW5hbSA8c2hhcmFuLnNhbnRoYW5hbUBuZWNsYWIuZXU+CgpUaGFu
a3MgJiBSZWdhcmRzClNoYXJhbgoKT24gMTIvNC8xOCA2OjE2IFBNLCBZdXJpIFZvbGNoa292IHdy
b3RlOgo+IGdpdCB0YWcgdjEuMS4yMAo+IGNvbW1pdCA8MGZhMWU2MzhlODdjZjI1N2U5Zjk2YjQw
MTliMjA3NmFmZDY3NGExOT4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBZdXJpIFZvbGNoa292IDx5dXJp
LnZvbGNoa292QG5lY2xhYi5ldT4KPiAtLS0KPiAgIGxpYi9ub2xpYmMvZXhwb3J0c3ltcy51ayAg
ICB8ICAyICsrCj4gICBsaWIvbm9saWJjL2luY2x1ZGUvc3RyaW5nLmggfCAgMiArKwo+ICAgbGli
L25vbGliYy9zdHJpbmcuYyAgICAgICAgIHwgMzIgKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysKPiAgIDMgZmlsZXMgY2hhbmdlZCwgMzYgaW5zZXJ0aW9ucygrKQo+IAo+IGRpZmYgLS1n
aXQgYS9saWIvbm9saWJjL2V4cG9ydHN5bXMudWsgYi9saWIvbm9saWJjL2V4cG9ydHN5bXMudWsK
PiBpbmRleCA2MWQ0OWM3Li42ZGJmYTcyIDEwMDY0NAo+IC0tLSBhL2xpYi9ub2xpYmMvZXhwb3J0
c3ltcy51awo+ICsrKyBiL2xpYi9ub2xpYmMvZXhwb3J0c3ltcy51awo+IEBAIC02NCw2ICs2NCw4
IEBAIHN0cnNwbgo+ICAgc3RydG9rCj4gICBzdHJuZHVwCj4gICBzdHJkdXAKPiArc3RybGNweQo+
ICtzdHJsY2F0Cj4gICAKPiAgICMgdGltZQo+ICAgbmFub3NsZWVwCj4gZGlmZiAtLWdpdCBhL2xp
Yi9ub2xpYmMvaW5jbHVkZS9zdHJpbmcuaCBiL2xpYi9ub2xpYmMvaW5jbHVkZS9zdHJpbmcuaAo+
IGluZGV4IGIyMWUyYzEuLjk1N2VmYzMgMTAwNjQ0Cj4gLS0tIGEvbGliL25vbGliYy9pbmNsdWRl
L3N0cmluZy5oCj4gKysrIGIvbGliL25vbGliYy9pbmNsdWRlL3N0cmluZy5oCj4gQEAgLTUyLDYg
KzUyLDggQEAgdm9pZCAqbWVtbW92ZSh2b2lkICpkc3QsIGNvbnN0IHZvaWQgKnNyYywgc2l6ZV90
IGxlbik7Cj4gICAKPiAgIGNoYXIgKnN0cm5jcHkoY2hhciAqZHN0LCBjb25zdCBjaGFyICpzcmMs
IHNpemVfdCBsZW4pOwo+ICAgY2hhciAqc3RyY3B5KGNoYXIgKmRzdCwgY29uc3QgY2hhciAqc3Jj
KTsKPiArc2l6ZV90IHN0cmxjcHkoY2hhciAqZCwgY29uc3QgY2hhciAqcywgc2l6ZV90IG4pOwo+
ICtzaXplX3Qgc3RybGNhdChjaGFyICpkLCBjb25zdCBjaGFyICpzLCBzaXplX3Qgbik7Cj4gICBz
aXplX3Qgc3Rybmxlbihjb25zdCBjaGFyICpzdHIsIHNpemVfdCBtYXhsZW4pOwo+ICAgc2l6ZV90
IHN0cmxlbihjb25zdCBjaGFyICpzdHIpOwo+ICAgY2hhciAqc3RyY2hybnVsKGNvbnN0IGNoYXIg
KnMsIGludCBjKTsKPiBkaWZmIC0tZ2l0IGEvbGliL25vbGliYy9zdHJpbmcuYyBiL2xpYi9ub2xp
YmMvc3RyaW5nLmMKPiBpbmRleCBmZWUyZDEwLi4wYTIyYzFhIDEwMDY0NAo+IC0tLSBhL2xpYi9u
b2xpYmMvc3RyaW5nLmMKPiArKysgYi9saWIvbm9saWJjL3N0cmluZy5jCj4gQEAgLTI4NywzICsy
ODcsMzUgQEAgY2hhciAqc3RyZHVwKGNvbnN0IGNoYXIgKnN0cikKPiAgIHsKPiAgIAlyZXR1cm4g
c3RybmR1cChzdHIsIFNJWkVfTUFYKTsKPiAgIH0KPiArCj4gKy8qIHN0cmxjcHkgaGFzIGRpZmZl
cmVudCBBTElHTiAqLwo+ICsjdW5kZWYgQUxJR04KPiArI2RlZmluZSBBTElHTiAoc2l6ZW9mKHNp
emVfdCktMSkKPiArc2l6ZV90IHN0cmxjcHkoY2hhciAqZCwgY29uc3QgY2hhciAqcywgc2l6ZV90
IG4pCj4gK3sKPiArCWNoYXIgKmQwID0gZDsKPiArCXNpemVfdCAqd2Q7Cj4gKwljb25zdCBzaXpl
X3QgKndzOwo+ICsKPiArCWlmICghbi0tKSBnb3RvIGZpbmlzaDsKPiArCWlmICgoKHVpbnRwdHJf
dClzICYgQUxJR04pID09ICgodWludHB0cl90KWQgJiBBTElHTikpIHsKPiArCQlmb3IgKDsgKCh1
aW50cHRyX3QpcyAmIEFMSUdOKSAmJiBuICYmICgqZD0qcyk7IG4tLSwgcysrLCBkKyspOwo+ICsJ
CWlmIChuICYmICpzKSB7Cj4gKwkJCXdkPSh2b2lkICopZDsgd3M9KGNvbnN0IHZvaWQgKilzOwo+
ICsJCQlmb3IgKDsgbj49c2l6ZW9mKHNpemVfdCkgJiYgIUhBU1pFUk8oKndzKTsKPiArCQkJICAg
ICAgIG4tPXNpemVvZihzaXplX3QpLCB3cysrLCB3ZCsrKSAqd2QgPSAqd3M7Cj4gKwkJCWQ9KHZv
aWQgKil3ZDsgcz0oY29uc3Qgdm9pZCAqKXdzOwo+ICsJCX0KPiArCX0KPiArCWZvciAoOyBuICYm
ICgqZD0qcyk7IG4tLSwgcysrLCBkKyspOwo+ICsJKmQgPSAwOwo+ICtmaW5pc2g6Cj4gKwlyZXR1
cm4gZC1kMCArIHN0cmxlbihzKTsKPiArfQo+ICsKPiArc2l6ZV90IHN0cmxjYXQoY2hhciAqZCwg
Y29uc3QgY2hhciAqcywgc2l6ZV90IG4pCj4gK3sKPiArCXNpemVfdCBsID0gc3RybmxlbihkLCBu
KTsKPiArCWlmIChsID09IG4pIHJldHVybiBsICsgc3RybGVuKHMpOwo+ICsJcmV0dXJuIGwgKyBz
dHJsY3B5KGQrbCwgcywgbi1sKTsKPiArfQo+IAoKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2
ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWls
bWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Fri Feb 01 09:34:20 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 01 Feb 2019 09:34:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gpVDI-0007e6-3Z; Fri, 01 Feb 2019 09:34:20 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=PkWZ=QI=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1gpVDG-0007e1-N6
 for minios-devel@lists.xen.org; Fri, 01 Feb 2019 09:34:18 +0000
X-Inumbo-ID: 8b3b0f7e-2604-11e9-b5c7-7788ed8a3149
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 8b3b0f7e-2604-11e9-b5c7-7788ed8a3149;
 Fri, 01 Feb 2019 09:34:17 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id A84E1F205C;
 Fri,  1 Feb 2019 10:34:16 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id PMrp5lEmD8Xa; Fri,  1 Feb 2019 10:34:16 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 8234DF204A
 for <minios-devel@lists.xen.org>; Fri,  1 Feb 2019 10:34:14 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 1 Feb 2019 10:34:14
 +0100
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, <minios-devel@lists.xen.org>
References: <20181204171628.31870-1-yuri.volchkov@neclab.eu>
 <20181204171628.31870-4-yuri.volchkov@neclab.eu>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <d61fe0c1-ddad-297d-effd-605ef3cbf358@neclab.eu>
Date: Fri, 1 Feb 2019 10:34:14 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20181204171628.31870-4-yuri.volchkov@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 3/3] lib/nolibc/string: fix
 checkpatch issues in strlcpy and strlcat
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: florian.schmidt@neclab.eu, simon.kuenzer@neclab.eu
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gWXVyaSwKClRoaXMgcGF0Y2ggc2VlbXMgZmluZS4KClJldmlld2VkLWJ5OiBTaGFyYW4g
U2FudGhhbmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xhYi5ldT4KClRoYW5rcyAmIFJlZ2FyZHMK
U2hhcmFuCgpPbiAxMi80LzE4IDY6MTYgUE0sIFl1cmkgVm9sY2hrb3Ygd3JvdGU6Cj4gU2lnbmVk
LW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Cj4gLS0tCj4g
ICBsaWIvbm9saWJjL3N0cmluZy5jIHwgMjYgKysrKysrKysrKysrKysrKysrLS0tLS0tLS0KPiAg
IDEgZmlsZSBjaGFuZ2VkLCAxOCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQo+IAo+IGRp
ZmYgLS1naXQgYS9saWIvbm9saWJjL3N0cmluZy5jIGIvbGliL25vbGliYy9zdHJpbmcuYwo+IGlu
ZGV4IDBhMjJjMWEuLjM3M2U1ZmQgMTAwNjQ0Cj4gLS0tIGEvbGliL25vbGliYy9zdHJpbmcuYwo+
ICsrKyBiL2xpYi9ub2xpYmMvc3RyaW5nLmMKPiBAQCAtMjk3LDE3ICsyOTcsMjYgQEAgc2l6ZV90
IHN0cmxjcHkoY2hhciAqZCwgY29uc3QgY2hhciAqcywgc2l6ZV90IG4pCj4gICAJc2l6ZV90ICp3
ZDsKPiAgIAljb25zdCBzaXplX3QgKndzOwo+ICAgCj4gLQlpZiAoIW4tLSkgZ290byBmaW5pc2g7
Cj4gKwlpZiAoIW4tLSkKPiArCQlnb3RvIGZpbmlzaDsKPiArCj4gICAJaWYgKCgodWludHB0cl90
KXMgJiBBTElHTikgPT0gKCh1aW50cHRyX3QpZCAmIEFMSUdOKSkgewo+IC0JCWZvciAoOyAoKHVp
bnRwdHJfdClzICYgQUxJR04pICYmIG4gJiYgKCpkPSpzKTsgbi0tLCBzKyssIGQrKyk7Cj4gKwkJ
Zm9yICg7ICgodWludHB0cl90KSBzICYgQUxJR04pICYmIG4gJiYgKCpkID0gKnMpOwo+ICsJCSAg
ICAgbi0tLCBzKyssIGQrKykKPiArCQkJOwo+ICsKPiAgIAkJaWYgKG4gJiYgKnMpIHsKPiAtCQkJ
d2Q9KHZvaWQgKilkOyB3cz0oY29uc3Qgdm9pZCAqKXM7Cj4gLQkJCWZvciAoOyBuPj1zaXplb2Yo
c2l6ZV90KSAmJiAhSEFTWkVSTygqd3MpOwo+IC0JCQkgICAgICAgbi09c2l6ZW9mKHNpemVfdCks
IHdzKyssIHdkKyspICp3ZCA9ICp3czsKPiAtCQkJZD0odm9pZCAqKXdkOyBzPShjb25zdCB2b2lk
ICopd3M7Cj4gKwkJCXdkID0gKHZvaWQgKilkOyB3cyA9IChjb25zdCB2b2lkICopczsKPiArCQkJ
Zm9yICg7IG4gPj0gc2l6ZW9mKHNpemVfdCkgJiYgIUhBU1pFUk8oKndzKTsKPiArCQkJICAgICBu
IC09IHNpemVvZihzaXplX3QpLCB3cysrLCB3ZCsrKQo+ICsJCQkJKndkID0gKndzOwo+ICsKPiAr
CQkJZCA9ICh2b2lkICopd2Q7IHMgPSAoY29uc3Qgdm9pZCAqKXdzOwo+ICAgCQl9Cj4gICAJfQo+
IC0JZm9yICg7IG4gJiYgKCpkPSpzKTsgbi0tLCBzKyssIGQrKyk7Cj4gKwo+ICsJZm9yICg7IG4g
JiYgKCpkID0gKnMpOyBuLS0sIHMrKywgZCsrKQo+ICsJCTsKPiAgIAkqZCA9IDA7Cj4gICBmaW5p
c2g6Cj4gICAJcmV0dXJuIGQtZDAgKyBzdHJsZW4ocyk7Cj4gQEAgLTMxNiw2ICszMjUsNyBAQCBm
aW5pc2g6Cj4gICBzaXplX3Qgc3RybGNhdChjaGFyICpkLCBjb25zdCBjaGFyICpzLCBzaXplX3Qg
bikKPiAgIHsKPiAgIAlzaXplX3QgbCA9IHN0cm5sZW4oZCwgbik7Cj4gLQlpZiAobCA9PSBuKSBy
ZXR1cm4gbCArIHN0cmxlbihzKTsKPiArCWlmIChsID09IG4pCj4gKwkJcmV0dXJuIGwgKyBzdHJs
ZW4ocyk7Cj4gICAJcmV0dXJuIGwgKyBzdHJsY3B5KGQrbCwgcywgbi1sKTsKPiAgIH0KPiAKCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZl
bCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8v
bGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Feb 04 14:38:09 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 04 Feb 2019 14:38:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gqfNt-00066H-Ih; Mon, 04 Feb 2019 14:38:05 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Kl24=QL=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gqfNs-00066C-Gl
 for minios-devel@lists.xen.org; Mon, 04 Feb 2019 14:38:04 +0000
X-Inumbo-ID: 78c77739-288a-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 78c77739-288a-11e9-bc90-bc764e045a96;
 Mon, 04 Feb 2019 14:38:01 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 0D369F2065;
 Mon,  4 Feb 2019 15:38:00 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id pUNSBjTbw_ID; Mon,  4 Feb 2019 15:37:59 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id D50C2F203D
 for <minios-devel@lists.xen.org>; Mon,  4 Feb 2019 15:37:57 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 4 Feb 2019 15:37:57 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>, <Simon.kuenzer@neclab.eu>,
 <sharan.santhanam@neclab.eu>
Date: Mon, 4 Feb 2019 15:36:52 +0100
Message-ID: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 00/23]  import vfs from OSv
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhpcyBzZXJpZXMgaXMgYW4gaW5pdGlhbCBpbXBvcnQuIEkgdHJ5aWVkIHRvIGtlZXAgYW1tb3Vu
dCBvZgptb2RpZmljYXRpb25zIHNtYWxsLiBBbmQgZmFpbGVkLgoKU2VyaWVzIGhhcyBhIGxvdCBv
ZiBzdHlsZSBwcm9ibGVtcy4gQnV0IGZpeGluZyBzdHlsZSB3b3VsZCBibG93IGl0CmV2ZW4gbW9y
ZS4gSSB3aWxsIHByb3ZpZGUgZm9sbG93LXVwcyBjbGVhbmluZyB1cCB0aGlzIG1lc3MuCgpBbmQg
c29ycnkgZm9yIHRoZSBwYXRjaCBzaXplcy4gQXQgbGVhc3QgdGhlc2UgaHVnZSBwYXRjaGVzIGNv
bnRhaW4gb25seQptZWNoYW5pY2FsIG1vZGlmaWNhdGlvbnMgKGUuZy4gbmV3IC0+IG1hbGxvYywg
ZGVsZXRlIC0+IGZyZWUsCnJlcGxhY2luZyBPU3YgZnVuY3Rpb25zIHdpdGggVW5pa3JhZnQgYW5h
bG9ndWVzKS4gSSBob3BlIHRoaXMgaGVscHMuCgpDaGFuZ2VzIHNpbmNlIHYxOgogLSByZWJhc2Ug
dG8gdGhlIGN1cnJlbnQgInN0YWdpbmciIGJyYW5jaAogLSB1cGRhdGUgbGljZW5zZSBoZWFkZXJz
CgpZdXJpIFZvbGNoa292ICgyMyk6CiAgaW5jbHVkZS91azogaW50cm9kdWNlIF9fd2Vha19hbGlh
cyBtYWNybwogIGxpYi9ub2xpYmM6IGltcG9ydCBtb3VudC5oCiAgbGliL25vbGliYzogYWRhcHQg
bW91bnQuaCB0byBVbmlrcmFmdAogIGxpYi92ZnNjb3JlOiBJbml0aWFsIGltcG9ydCBvZiBPU3Yg
dmZzCiAgbGliL3Zmc2NvcmU6IHRhYmlmeSBpbXBvcnRlZCB2ZnMgY29kZQogIGxpYi92ZnNjb3Jl
OiB1cGRhdGUgbGljZW5zZSBoZWFkZXIgZm9yIGltcG9ydGVkIGZpbGVzCiAgbGliL3Zmc2NvcmU6
IHJlbW92ZSBvYnZpb3VzIGMrK2lzbXMgYW5kIGlycmVsZXZhbnQgY29kZQogIGxpYi92ZnNjb3Jl
OiB1c2UgVW5pa3JhZnQgaW5jbHVkZXMKICBsaWIvdmZzY29yZTogdXNlIFVuaWtyYWZ0IHR5cGVz
IGFuZCBmdW5jdGlvbnMKICBsaWIvdmZzY29yZTogYWRkIHV0aWxpdHkgZnVuY3MmZGVmcyB0byBz
dXBwb3J0IGltcG9ydGVkCiAgbGliL3Zmc2NvcmU6IGludHJvZHVjZSBVS19GU19SRUdJU1RFUgog
IGxpYi92ZnNjb3JlOiBwcmVmaXggZXhwb3J0ZWQgZnVuY3Rpb25zCiAgbGliL3Zmc2NvcmU6IGlu
dHJvZHVjZSBmZ2V0LCBmZHJvcCwgZmRhbGxvYwogIGxpYi92ZnNjb3JlOiBrZWVwIHZub2RlIGxv
Y2tlZCBkdXJpbmcgZHJlbGUgY2FsbAogIGxpYi92ZnNjb3JlOiBhZGQgbmVjZXNzYXJ5IGZpZWxk
IGluIHZmc2NvcmVfZmlsZQogIGxpYi92ZnNjb3JlOiByZW1vdmUgX0tFUk5FTCBpZmRlZnMKICBs
aWIvdmZzY29yZTogaW50cm9kdWNlIGZkY2xvc2UKICBsaWIvdmZzY29yZTogYWRkIG5lY2Vzc2Fy
eSBpbnRlcm5hbCBwcm90b3R5cGVzCiAgbGliL3Zmc2NvcmU6IGZpeCBjb21waWxlciBjb21wbGFp
bnMKICBsaWIvdmZzY29yZTogYWRkIG1haW4gY29uc3RydWN0b3IKICBsaWIvbm9saWJjOiBhZGQg
cHJvdG90eXBlcyBmb3IgZnVuY3Rpb25zIGZyb20gdmZzY29yZQogIGxpYi92ZnNjb3JlOiByZS1p
bXBsZW1lbnQgc3RkaW8gYW5kIGVuYWJsZSBuZXcgY29kZQogIGxpYi92ZnNjb3JlOiByZW1vdmUg
c3lzIHByZWZpeCBmcm9tIHZmcyBhcGkgZnVuY3Rpb25zCgogaW5jbHVkZS91ay9lc3NlbnRpYWxz
LmggICAgICAgICAgICAgICAgICAgICAgIHwgICAgNCArCiBsaWIvbm9saWJjL2luY2x1ZGUvc3lz
L21vdW50LmggICAgICAgICAgICAgICAgfCAgMTA5ICsKIGxpYi9ub2xpYmMvaW5jbHVkZS9zeXMv
dWlvLmggICAgICAgICAgICAgICAgICB8ICAgMzUgKwogbGliL25vbGliYy9pbmNsdWRlL3VuaXN0
ZC5oICAgICAgICAgICAgICAgICAgIHwgICAgNSArCiBsaWIvdmZzY29yZS9Db25maWcudWsgICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKIGxpYi92ZnNjb3JlL01ha2VmaWxlLnVrICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgMTEgKwogbGliL3Zmc2NvcmUvZGVudHJ5LmMgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgIDIzNiArKwogbGliL3Zmc2NvcmUvZXhwb3J0c3ltcy51ayAg
ICAgICAgICAgICAgICAgICAgIHwgICAyNiArCiBsaWIvdmZzY29yZS9leHRyYS5sZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgICA5ICsKIGxpYi92ZnNjb3JlL2ZkLmMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgNjcgKy0KIGxpYi92ZnNjb3JlL2ZpbGUuYyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgNjEgKy0KIGxpYi92ZnNjb3JlL2ZvcHMuYyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAxNDAgKysKIC4uLi9pbmNsdWRlL3Zmc2NvcmUvZGVudHJ5Lmh9
ICAgICAgICAgICAgICAgICB8ICAgNDQgKy0KIGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9m
aWxlLmggICAgICAgICAgICB8ICAgMTcgKy0KIGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9m
cy5oICAgICAgICAgICAgICB8ICAgMjggKwogbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21v
dW50LmggICAgICAgICAgIHwgIDE0NSArKwogLi4uL2luY2x1ZGUvdmZzY29yZS9wcmV4Lmh9ICAg
ICAgICAgICAgICAgICAgIHwgICA0MCArLQogbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Vp
by5oICAgICAgICAgICAgIHwgICA2MiArCiBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5v
ZGUuaCAgICAgICAgICAgfCAgMjYzICsrKwogbGliL3Zmc2NvcmUvbG9va3VwLmMgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgIDM3NSArKysKIGxpYi92ZnNjb3JlL21haW4uYyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8IDIwNTggKysrKysrKysrKysrKysrKysKIGxpYi92ZnNjb3JlL21v
dW50LmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0OTQgKysrKwogbGliL3Zmc2NvcmUv
c3RkaW8uYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA3MyArLQogbGliL3Zmc2NvcmUv
c3Vicl91aW8uYyAgICAgICAgICAgICAgICAgICAgICAgIHwgICA3OCArCiBsaWIvdmZzY29yZS9z
eXNjYWxscy5jICAgICAgICAgICAgICAgICAgICAgICAgfCAxNTEyICsrKysrKysrKysrKwogbGli
L3Zmc2NvcmUvdGFzay5jICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE1NCArKwogbGli
L3Zmc2NvcmUvdmZzLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE2OSArKwogbGli
L3Zmc2NvcmUvdm5vZGUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDUzMCArKysrKwog
MjggZmlsZXMgY2hhbmdlZCwgNjYxOCBpbnNlcnRpb25zKCspLCAxMjggZGVsZXRpb25zKC0pCiBj
cmVhdGUgbW9kZSAxMDA2NDQgbGliL25vbGliYy9pbmNsdWRlL3N5cy9tb3VudC5oCiBjcmVhdGUg
bW9kZSAxMDA2NDQgbGliL3Zmc2NvcmUvZGVudHJ5LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIv
dmZzY29yZS9leHRyYS5sZAogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi92ZnNjb3JlL2ZvcHMuYwog
Y29weSBsaWIve25vbGliYy9pbmNsdWRlL3VuaXN0ZC5oID0+IHZmc2NvcmUvaW5jbHVkZS92ZnNj
b3JlL2RlbnRyeS5ofSAoNzAlKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi92ZnNjb3JlL2luY2x1
ZGUvdmZzY29yZS9mcy5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3Zmc2NvcmUvaW5jbHVkZS92
ZnNjb3JlL21vdW50LmgKIGNvcHkgbGliL3tub2xpYmMvaW5jbHVkZS91bmlzdGQuaCA9PiB2ZnNj
b3JlL2luY2x1ZGUvdmZzY29yZS9wcmV4Lmh9ICg3NSUpCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGli
L3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Vpby5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3Zm
c2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Zub2RlLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdmZz
Y29yZS9sb29rdXAuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi92ZnNjb3JlL21haW4uYwogY3Jl
YXRlIG1vZGUgMTAwNjQ0IGxpYi92ZnNjb3JlL21vdW50LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBs
aWIvdmZzY29yZS9zdWJyX3Vpby5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3Zmc2NvcmUvc3lz
Y2FsbHMuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi92ZnNjb3JlL3Rhc2suYwogY3JlYXRlIG1v
ZGUgMTAwNjQ0IGxpYi92ZnNjb3JlL3Zmcy5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3Zmc2Nv
cmUvdm5vZGUuYwoKLS0gCjIuMTkuMgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxp
c3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9s
aXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Feb 04 14:38:10 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 04 Feb 2019 14:38:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gqfNy-00066e-Kd; Mon, 04 Feb 2019 14:38:10 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Kl24=QL=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gqfNw-00066Q-Uq
 for minios-devel@lists.xen.org; Mon, 04 Feb 2019 14:38:08 +0000
X-Inumbo-ID: 79e65818-288a-11e9-adc9-73ae0e9385d7
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 79e65818-288a-11e9-adc9-73ae0e9385d7;
 Mon, 04 Feb 2019 14:38:03 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 85E8E104D60;
 Mon,  4 Feb 2019 15:38:02 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id gDSdz0yArfG3; Mon,  4 Feb 2019 15:38:02 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 69ADD104BDB
 for <minios-devel@lists.xen.org>; Mon,  4 Feb 2019 15:38:00 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 4 Feb 2019 15:38:00 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>, <Simon.kuenzer@neclab.eu>,
 <sharan.santhanam@neclab.eu>
Date: Mon, 4 Feb 2019 15:36:53 +0100
Message-ID: <20190204143739.29249-2-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 01/23] include/uk: introduce
 __weak_alias macro
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogaW5jbHVkZS91ay9lc3NlbnRpYWxzLmggfCA0ICsrKysKIDEgZmlsZSBjaGFuZ2VkLCA0IGlu
c2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9pbmNsdWRlL3VrL2Vzc2VudGlhbHMuaCBiL2luY2x1
ZGUvdWsvZXNzZW50aWFscy5oCmluZGV4IDNjMTZlMzA4Li5kYzFkNjliMCAxMDA2NDQKLS0tIGEv
aW5jbHVkZS91ay9lc3NlbnRpYWxzLmgKKysrIGIvaW5jbHVkZS91ay9lc3NlbnRpYWxzLmgKQEAg
LTc2LDYgKzc2LDEwIEBAIGV4dGVybiAiQyIgewogI2lmbmRlZiBfX2FsaWduCiAjZGVmaW5lIF9f
YWxpZ24oYnl0ZXMpICAgICAgICAgX19hdHRyaWJ1dGVfXygoYWxpZ25lZChieXRlcykpKQogI2Vu
ZGlmCisjaWZuZGVmIF9fd2Vha19hbGlhcworI2RlZmluZSBfX3dlYWtfYWxpYXMob2xkLCBuZXcp
IFwKKwlleHRlcm4gX190eXBlb2Yob2xkKSBuZXcgX19hdHRyaWJ1dGVfXygod2VhaywgYWxpYXMo
I29sZCkpKQorI2VuZGlmCiAKIC8qKgogICAqIE1hcmsgYSBmdW5jdGlvbiBhcyBjb25zdHJ1Y3Rv
cgotLSAKMi4xOS4yCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJv
amVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21p
bmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Feb 04 14:38:13 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 04 Feb 2019 14:38:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gqfO1-00067J-M8; Mon, 04 Feb 2019 14:38:13 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Kl24=QL=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gqfO0-000674-5i
 for minios-devel@lists.xen.org; Mon, 04 Feb 2019 14:38:12 +0000
X-Inumbo-ID: 7d5da7c6-288a-11e9-87fc-57fc23f04036
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 7d5da7c6-288a-11e9-87fc-57fc23f04036;
 Mon, 04 Feb 2019 14:38:09 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 44F76104D64;
 Mon,  4 Feb 2019 15:38:08 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id i51QgPH9nyuD; Mon,  4 Feb 2019 15:38:08 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 21BC6104D63
 for <minios-devel@lists.xen.org>; Mon,  4 Feb 2019 15:38:06 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 4 Feb 2019 15:38:05 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>, <Simon.kuenzer@neclab.eu>,
 <sharan.santhanam@neclab.eu>
Date: Mon, 4 Feb 2019 15:36:55 +0100
Message-ID: <20190204143739.29249-4-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 03/23] lib/nolibc: adapt mount.h
 to Unikraft
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U3R5bGUgcHJvYmxlbXMgYW5kIHByb3BlciBpbmNsdWRlcwoKU2lnbmVkLW9mZi1ieTogWXVyaSBW
b2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0tLQogbGliL25vbGliYy9pbmNsdWRl
L3N5cy9tb3VudC5oIHwgMzggKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQogMSBm
aWxlIGNoYW5nZWQsIDE5IGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp
dCBhL2xpYi9ub2xpYmMvaW5jbHVkZS9zeXMvbW91bnQuaCBiL2xpYi9ub2xpYmMvaW5jbHVkZS9z
eXMvbW91bnQuaAppbmRleCA1N2E4OWMwOS4uYWY4NTVkNjkgMTAwNjQ0Ci0tLSBhL2xpYi9ub2xp
YmMvaW5jbHVkZS9zeXMvbW91bnQuaAorKysgYi9saWIvbm9saWJjL2luY2x1ZGUvc3lzL21vdW50
LmgKQEAgLTUsMjMgKzUsMjIgQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKLSNpbmNsdWRlIDxz
eXMvaW9jdGwuaD4KIAotI2RlZmluZSBCTEtST1NFVCAgIF9JTygweDEyLCA5MykKLSNkZWZpbmUg
QkxLUk9HRVQgICBfSU8oMHgxMiwgOTQpCi0jZGVmaW5lIEJMS1JSUEFSVCAgX0lPKDB4MTIsIDk1
KQotI2RlZmluZSBCTEtHRVRTSVpFIF9JTygweDEyLCA5NikKLSNkZWZpbmUgQkxLRkxTQlVGICBf
SU8oMHgxMiwgOTcpCi0jZGVmaW5lIEJMS1JBU0VUICAgX0lPKDB4MTIsIDk4KQotI2RlZmluZSBC
TEtSQUdFVCAgIF9JTygweDEyLCA5OSkKLSNkZWZpbmUgQkxLRlJBU0VUICBfSU8oMHgxMiwxMDAp
Ci0jZGVmaW5lIEJMS0ZSQUdFVCAgX0lPKDB4MTIsMTAxKQotI2RlZmluZSBCTEtTRUNUU0VUIF9J
TygweDEyLDEwMikKLSNkZWZpbmUgQkxLU0VDVEdFVCBfSU8oMHgxMiwxMDMpCi0jZGVmaW5lIEJM
S1NTWkdFVCAgX0lPKDB4MTIsMTA0KQotI2RlZmluZSBCTEtCU1pHRVQgIF9JT1IoMHgxMiwxMTIs
c2l6ZV90KQotI2RlZmluZSBCTEtCU1pTRVQgIF9JT1coMHgxMiwxMTMsc2l6ZV90KQotI2RlZmlu
ZSBCTEtHRVRTSVpFNjQgX0lPUigweDEyLDExNCxzaXplX3QpCisjZGVmaW5lIEJMS1JPU0VUICAg
ICAgX0lPKDB4MTIsICA5MykKKyNkZWZpbmUgQkxLUk9HRVQgICAgICBfSU8oMHgxMiwgIDk0KQor
I2RlZmluZSBCTEtSUlBBUlQgICAgIF9JTygweDEyLCAgOTUpCisjZGVmaW5lIEJMS0dFVFNJWkUg
ICAgX0lPKDB4MTIsICA5NikKKyNkZWZpbmUgQkxLRkxTQlVGICAgICBfSU8oMHgxMiwgIDk3KQor
I2RlZmluZSBCTEtSQVNFVCAgICAgIF9JTygweDEyLCAgOTgpCisjZGVmaW5lIEJMS1JBR0VUICAg
ICAgX0lPKDB4MTIsICA5OSkKKyNkZWZpbmUgQkxLRlJBU0VUICAgICBfSU8oMHgxMiwgMTAwKQor
I2RlZmluZSBCTEtGUkFHRVQgICAgIF9JTygweDEyLCAxMDEpCisjZGVmaW5lIEJMS1NFQ1RTRVQg
ICAgX0lPKDB4MTIsIDEwMikKKyNkZWZpbmUgQkxLU0VDVEdFVCAgICBfSU8oMHgxMiwgMTAzKQor
I2RlZmluZSBCTEtTU1pHRVQgICAgIF9JTygweDEyLCAxMDQpCisjZGVmaW5lIEJMS0JTWkdFVCAg
ICBfSU9SKDB4MTIsIDExMiwgc2l6ZV90KQorI2RlZmluZSBCTEtCU1pTRVQgICAgX0lPVygweDEy
LCAxMTMsIHNpemVfdCkKKyNkZWZpbmUgQkxLR0VUU0laRTY0IF9JT1IoMHgxMiwgMTE0LCBzaXpl
X3QpCiAKICNkZWZpbmUgTVNfUkRPTkxZICAgICAgMQogI2RlZmluZSBNU19OT1NVSUQgICAgICAy
CkBAIC02Myw5ICs2MiwxMCBAQCBleHRlcm4gIkMiIHsKICNkZWZpbmUgTU5UX0VYUElSRSAgICAg
IDQKICNkZWZpbmUgVU1PVU5UX05PRk9MTE9XIDgKIAotaW50IG1vdW50KGNvbnN0IGNoYXIgKiwg
Y29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIHVuc2lnbmVkIGxvbmcsIGNvbnN0IHZvaWQgKik7
Ci1pbnQgdW1vdW50KGNvbnN0IGNoYXIgKik7Ci1pbnQgdW1vdW50Mihjb25zdCBjaGFyICosIGlu
dCk7CitpbnQgbW91bnQoY29uc3QgY2hhciAqZGV2LCBjb25zdCBjaGFyICpkaXIsIGNvbnN0IGNo
YXIgKmZzbmFtZSwKKwkgIHVuc2lnbmVkIGxvbmcgZmxhZ3MsIGNvbnN0IHZvaWQgKmRhdGEpOwor
aW50IHVtb3VudChjb25zdCBjaGFyICpwYXRoKTsKK2ludCB1bW91bnQyKGNvbnN0IGNoYXIgKnBh
dGgsIGludCBmbGFncyk7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQotLSAKMi4xOS4yCgoKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVs
IG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9s
aXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Feb 04 14:38:17 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 04 Feb 2019 14:38:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gqfO5-000684-PH; Mon, 04 Feb 2019 14:38:17 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Kl24=QL=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gqfO4-00067o-ER
 for minios-devel@lists.xen.org; Mon, 04 Feb 2019 14:38:16 +0000
X-Inumbo-ID: 7f2896c4-288a-11e9-ac9b-bb86fd4e67bd
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 7f2896c4-288a-11e9-ac9b-bb86fd4e67bd;
 Mon, 04 Feb 2019 14:38:12 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 3320EF2065;
 Mon,  4 Feb 2019 15:38:11 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id FvUiGyA1gx6S; Mon,  4 Feb 2019 15:38:10 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id BF643F203D
 for <minios-devel@lists.xen.org>; Mon,  4 Feb 2019 15:38:08 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 4 Feb 2019 15:38:08 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>, <Simon.kuenzer@neclab.eu>,
 <sharan.santhanam@neclab.eu>
Date: Mon, 4 Feb 2019 15:36:56 +0100
Message-ID: <20190204143739.29249-5-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 04/23] lib/vfscore: Initial
 import of OSv vfs
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhlIGNvZGUgaXMgaW1wb3J0ZWQgYXMgaXMuCgpDb21taXQgZjFmNDI5MTVhMzNiZWJlMTIwZTcw
YWYxZjMyYzFhNGQ5MmJhYzc4MAoKU2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52
b2xjaGtvdkBuZWNsYWIuZXU+Ci0tLQogbGliL3Zmc2NvcmUvZGVudHJ5LmMgICAgICAgICAgICAg
ICAgIHwgIDIzNCArKysKIGxpYi92ZnNjb3JlL2ZvcHMuYyAgICAgICAgICAgICAgICAgICB8ICAx
ODkgKysKIGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9kZW50cnkuaCB8ICAgNDUgKwogbGli
L3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmggIHwgIDE3MSArKwogbGliL3Zmc2NvcmUv
aW5jbHVkZS92ZnNjb3JlL3ByZXguaCAgIHwgICAzNCArCiBsaWIvdmZzY29yZS9pbmNsdWRlL3Zm
c2NvcmUvdWlvLmggICAgfCAgIDg5ICsKIGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9k
ZS5oICB8ICAyNDYgKysrCiBsaWIvdmZzY29yZS9sb29rdXAuYyAgICAgICAgICAgICAgICAgfCAg
Mzc1ICsrKysKIGxpYi92ZnNjb3JlL21haW4uYyAgICAgICAgICAgICAgICAgICB8IDI0MTMgKysr
KysrKysrKysrKysrKysrKysrKysrKysKIGxpYi92ZnNjb3JlL21vdW50LmMgICAgICAgICAgICAg
ICAgICB8ICA0OTEgKysrKysrCiBsaWIvdmZzY29yZS9zdWJyX3Vpby5jICAgICAgICAgICAgICAg
fCAgIDczICsKIGxpYi92ZnNjb3JlL3N5c2NhbGxzLmMgICAgICAgICAgICAgICB8IDE0ODYgKysr
KysrKysrKysrKysrKwogbGliL3Zmc2NvcmUvdGFzay5jICAgICAgICAgICAgICAgICAgIHwgIDE2
NyArKwogbGliL3Zmc2NvcmUvdmZzLmggICAgICAgICAgICAgICAgICAgIHwgIDE4OSArKwogbGli
L3Zmc2NvcmUvdm5vZGUuYyAgICAgICAgICAgICAgICAgIHwgIDUyMiArKysrKysKIDE1IGZpbGVz
IGNoYW5nZWQsIDY3MjQgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi92ZnNj
b3JlL2RlbnRyeS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3Zmc2NvcmUvZm9wcy5jCiBjcmVh
dGUgbW9kZSAxMDA2NDQgbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2RlbnRyeS5oCiBjcmVh
dGUgbW9kZSAxMDA2NDQgbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmgKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvcHJleC5oCiBjcmVhdGUg
bW9kZSAxMDA2NDQgbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Vpby5oCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Zub2RlLmgKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBsaWIvdmZzY29yZS9sb29rdXAuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi92ZnNj
b3JlL21haW4uYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi92ZnNjb3JlL21vdW50LmMKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBsaWIvdmZzY29yZS9zdWJyX3Vpby5jCiBjcmVhdGUgbW9kZSAxMDA2NDQg
bGliL3Zmc2NvcmUvc3lzY2FsbHMuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi92ZnNjb3JlL3Rh
c2suYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi92ZnNjb3JlL3Zmcy5oCiBjcmVhdGUgbW9kZSAx
MDA2NDQgbGliL3Zmc2NvcmUvdm5vZGUuYwoKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2RlbnRy
eS5jIGIvbGliL3Zmc2NvcmUvZGVudHJ5LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAuLmZhY2Q5ZWFhCi0tLSAvZGV2L251bGwKKysrIGIvbGliL3Zmc2NvcmUvZGVudHJ5LmMK
QEAgLTAsMCArMSwyMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQ2xvdWRpdXMgU3lz
dGVtcywgTHRkLgorICoKKyAqIFRoaXMgd29yayBpcyBvcGVuIHNvdXJjZSBzb2Z0d2FyZSwgbGlj
ZW5zZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZQorICogQlNEIGxpY2Vuc2UgYXMgZGVzY3JpYmVk
IGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHRvcC1sZXZlbCBkaXJlY3RvcnkuCisgKi8KKwor
LyoKKyAqIENvcHlyaWdodCAoYykgMjAwNS0yMDA3LCBLb2hzdWtlIE9odGFuaQorICogQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGF1
dGhvciBub3IgdGhlIG5hbWVzIG9mIGFueSBjby1jb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0
d2FyZQorICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN5cy9wYXJhbS5o
PgorCisjaW5jbHVkZSA8b3N2L2RlbnRyeS5oPgorI2luY2x1ZGUgPG9zdi92bm9kZS5oPgorI2lu
Y2x1ZGUgInZmcy5oIgorCisjZGVmaW5lIERFTlRSWV9CVUNLRVRTIDMyCisKK3N0YXRpYyBMSVNU
X0hFQUQoZGVudHJ5X2hhc2hfaGVhZCwgZGVudHJ5KSBkZW50cnlfaGFzaF90YWJsZVtERU5UUllf
QlVDS0VUU107CitzdGF0aWMgTElTVF9IRUFEKGZha2UsIGRlbnRyeSkgZmFrZTsKK3N0YXRpYyBt
dXRleCBkZW50cnlfaGFzaF9sb2NrOworCisvKgorICogR2V0IHRoZSBoYXNoIHZhbHVlIGZyb20g
dGhlIG1vdW50IHBvaW50IGFuZCBwYXRoIG5hbWUuCisgKiBYWFg6IHJlcGxhY2Ugd2l0aCBhIGJl
dHRlciBoYXNoIGZvciA2NC1iaXQgcG9pbnRlcnMuCisgKi8KK3N0YXRpYyB1X2ludAorZGVudHJ5
X2hhc2goc3RydWN0IG1vdW50ICptcCwgY29uc3QgY2hhciAqcGF0aCkKK3sKKyAgICB1X2ludCB2
YWwgPSAwOworCisgICAgaWYgKHBhdGgpIHsKKyAgICAgICAgd2hpbGUgKCpwYXRoKSB7CisgICAg
ICAgICAgICB2YWwgPSAoKHZhbCA8PCA1KSArIHZhbCkgKyAqcGF0aCsrOworICAgICAgICB9Cisg
ICAgfQorICAgIHJldHVybiAodmFsIF4gKHVuc2lnbmVkIGxvbmcpIG1wKSAmIChERU5UUllfQlVD
S0VUUyAtIDEpOworfQorCisKK3N0cnVjdCBkZW50cnkgKgorZGVudHJ5X2FsbG9jKHN0cnVjdCBk
ZW50cnkgKnBhcmVudF9kcCwgc3RydWN0IHZub2RlICp2cCwgY29uc3QgY2hhciAqcGF0aCkKK3sK
KyAgICBzdHJ1Y3QgbW91bnQgKm1wID0gdnAtPnZfbW91bnQ7CisgICAgc3RydWN0IGRlbnRyeSAq
ZHAgPSAoZGVudHJ5KiljYWxsb2Moc2l6ZW9mKCpkcCksIDEpOworCisgICAgaWYgKCFkcCkgewor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICB2cmVmKHZwKTsKKworICAgIGRw
LT5kX3JlZmNudCA9IDE7CisgICAgZHAtPmRfdm5vZGUgPSB2cDsKKyAgICBkcC0+ZF9tb3VudCA9
IG1wOworICAgIGRwLT5kX3BhdGggPSBzdHJkdXAocGF0aCk7CisgICAgTElTVF9JTklUKCZkcC0+
ZF9jaGlsZHJlbik7CisKKyAgICBpZiAocGFyZW50X2RwKSB7CisgICAgICAgIGRyZWYocGFyZW50
X2RwKTsKKyAgICAgICAgV0lUSF9MT0NLKHBhcmVudF9kcC0+ZF9sb2NrKSB7CisgICAgICAgICAg
ICAvLyBJbnNlcnQgZHAgaW50byBpdHMgcGFyZW50J3MgY2hpbGRyZW4gbGlzdC4KKyAgICAgICAg
ICAgIExJU1RfSU5TRVJUX0hFQUQoJnBhcmVudF9kcC0+ZF9jaGlsZHJlbiwgZHAsIGRfY2hpbGRy
ZW5fbGluayk7CisgICAgICAgIH0KKyAgICB9CisgICAgZHAtPmRfcGFyZW50ID0gcGFyZW50X2Rw
OworCisgICAgdm5fYWRkX25hbWUodnAsIGRwKTsKKworICAgIG11dGV4X2xvY2soJmRlbnRyeV9o
YXNoX2xvY2spOworICAgIExJU1RfSU5TRVJUX0hFQUQoJmRlbnRyeV9oYXNoX3RhYmxlW2RlbnRy
eV9oYXNoKG1wLCBwYXRoKV0sIGRwLCBkX2xpbmspOworICAgIG11dGV4X3VubG9jaygmZGVudHJ5
X2hhc2hfbG9jayk7CisgICAgcmV0dXJuIGRwOworfTsKKworc3RydWN0IGRlbnRyeSAqCitkZW50
cnlfbG9va3VwKHN0cnVjdCBtb3VudCAqbXAsIGNoYXIgKnBhdGgpCit7CisgICAgc3RydWN0IGRl
bnRyeSAqZHA7CisKKyAgICBtdXRleF9sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKKyAgICBMSVNU
X0ZPUkVBQ0goZHAsICZkZW50cnlfaGFzaF90YWJsZVtkZW50cnlfaGFzaChtcCwgcGF0aCldLCBk
X2xpbmspIHsKKyAgICAgICAgaWYgKGRwLT5kX21vdW50ID09IG1wICYmICFzdHJuY21wKGRwLT5k
X3BhdGgsIHBhdGgsIFBBVEhfTUFYKSkgeworICAgICAgICAgICAgZHAtPmRfcmVmY250Kys7Cisg
ICAgICAgICAgICBtdXRleF91bmxvY2soJmRlbnRyeV9oYXNoX2xvY2spOworICAgICAgICAgICAg
cmV0dXJuIGRwOworICAgICAgICB9CisgICAgfQorICAgIG11dGV4X3VubG9jaygmZGVudHJ5X2hh
c2hfbG9jayk7CisgICAgcmV0dXJuIG51bGxwdHI7ICAgICAgICAgICAgICAgIC8qIG5vdCBmb3Vu
ZCAqLworfQorCitzdGF0aWMgdm9pZCBkZW50cnlfY2hpbGRyZW5fcmVtb3ZlKHN0cnVjdCBkZW50
cnkgKmRwKQoreworICAgIHN0cnVjdCBkZW50cnkgKmVudHJ5ID0gbnVsbHB0cjsKKworICAgIFdJ
VEhfTE9DSyhkcC0+ZF9sb2NrKSB7CisgICAgICAgIExJU1RfRk9SRUFDSChlbnRyeSwgJmRwLT5k
X2NoaWxkcmVuLCBkX2NoaWxkcmVuX2xpbmspIHsKKyAgICAgICAgICAgIEFTU0VSVChlbnRyeSk7
CisgICAgICAgICAgICBBU1NFUlQoZW50cnktPmRfcmVmY250ID4gMCk7CisgICAgICAgICAgICBM
SVNUX1JFTU9WRShlbnRyeSwgZF9saW5rKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZAor
ZGVudHJ5X21vdmUoc3RydWN0IGRlbnRyeSAqZHAsIHN0cnVjdCBkZW50cnkgKnBhcmVudF9kcCwg
Y2hhciAqcGF0aCkKK3sKKyAgICBzdHJ1Y3QgZGVudHJ5ICpvbGRfcGRwID0gZHAtPmRfcGFyZW50
OworICAgIGNoYXIgKm9sZF9wYXRoID0gZHAtPmRfcGF0aDsKKworICAgIGlmIChvbGRfcGRwKSB7
CisgICAgICAgIFdJVEhfTE9DSyhvbGRfcGRwLT5kX2xvY2spIHsKKyAgICAgICAgICAgIC8vIFJl
bW92ZSBkcCBmcm9tIGl0cyBvbGQgcGFyZW50J3MgY2hpbGRyZW4gbGlzdC4KKyAgICAgICAgICAg
IExJU1RfUkVNT1ZFKGRwLCBkX2NoaWxkcmVuX2xpbmspOworICAgICAgICB9CisgICAgfQorCisg
ICAgaWYgKHBhcmVudF9kcCkgeworICAgICAgICBkcmVmKHBhcmVudF9kcCk7CisgICAgICAgIFdJ
VEhfTE9DSyhwYXJlbnRfZHAtPmRfbG9jaykgeworICAgICAgICAgICAgLy8gSW5zZXJ0IGRwIGlu
dG8gaXRzIG5ldyBwYXJlbnQncyBjaGlsZHJlbiBsaXN0LgorICAgICAgICAgICAgTElTVF9JTlNF
UlRfSEVBRCgmcGFyZW50X2RwLT5kX2NoaWxkcmVuLCBkcCwgZF9jaGlsZHJlbl9saW5rKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIFdJVEhfTE9DSyhkZW50cnlfaGFzaF9sb2NrKSB7CisgICAg
ICAgIC8vIFJlbW92ZSBhbGwgZHAncyBjaGlsZCBkZW50cmllcyBmcm9tIHRoZSBoYXNodGFibGUu
CisgICAgICAgIGRlbnRyeV9jaGlsZHJlbl9yZW1vdmUoZHApOworICAgICAgICAvLyBSZW1vdmUg
ZHAgd2l0aCBvdXRkYXRlZCBoYXNoIGluZm8gZnJvbSB0aGUgaGFzaHRhYmxlLgorICAgICAgICBM
SVNUX1JFTU9WRShkcCwgZF9saW5rKTsKKyAgICAgICAgLy8gVXBkYXRlIGRwLgorICAgICAgICBk
cC0+ZF9wYXRoID0gc3RyZHVwKHBhdGgpOworICAgICAgICBkcC0+ZF9wYXJlbnQgPSBwYXJlbnRf
ZHA7CisgICAgICAgIC8vIEluc2VydCBkcCB1cGRhdGVkIGhhc2ggaW5mbyBpbnRvIHRoZSBoYXNo
dGFibGUuCisgICAgICAgIExJU1RfSU5TRVJUX0hFQUQoJmRlbnRyeV9oYXNoX3RhYmxlW2RlbnRy
eV9oYXNoKGRwLT5kX21vdW50LCBwYXRoKV0sCisgICAgICAgICAgICBkcCwgZF9saW5rKTsKKyAg
ICB9CisKKyAgICBpZiAob2xkX3BkcCkgeworICAgICAgICBkcmVsZShvbGRfcGRwKTsKKyAgICB9
CisKKyAgICBmcmVlKG9sZF9wYXRoKTsKK30KKwordm9pZAorZGVudHJ5X3JlbW92ZShzdHJ1Y3Qg
ZGVudHJ5ICpkcCkKK3sKKyAgICBtdXRleF9sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKKyAgICBM
SVNUX1JFTU9WRShkcCwgZF9saW5rKTsKKyAgICAvKiBwdXQgaXQgb24gYSBmYWtlIGxpc3QgZm9y
IGRyZWxlKCkgdG8gd29yayovCisgICAgTElTVF9JTlNFUlRfSEVBRCgmZmFrZSwgZHAsIGRfbGlu
ayk7CisgICAgbXV0ZXhfdW5sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKK30KKwordm9pZAorZHJl
ZihzdHJ1Y3QgZGVudHJ5ICpkcCkKK3sKKyAgICBBU1NFUlQoZHApOworICAgIEFTU0VSVChkcC0+
ZF9yZWZjbnQgPiAwKTsKKworICAgIG11dGV4X2xvY2soJmRlbnRyeV9oYXNoX2xvY2spOworICAg
IGRwLT5kX3JlZmNudCsrOworICAgIG11dGV4X3VubG9jaygmZGVudHJ5X2hhc2hfbG9jayk7Cit9
CisKK3ZvaWQKK2RyZWxlKHN0cnVjdCBkZW50cnkgKmRwKQoreworICAgIEFTU0VSVChkcCk7Cisg
ICAgQVNTRVJUKGRwLT5kX3JlZmNudCA+IDApOworCisgICAgbXV0ZXhfbG9jaygmZGVudHJ5X2hh
c2hfbG9jayk7CisgICAgaWYgKC0tZHAtPmRfcmVmY250KSB7CisgICAgICAgIG11dGV4X3VubG9j
aygmZGVudHJ5X2hhc2hfbG9jayk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgTElTVF9S
RU1PVkUoZHAsIGRfbGluayk7CisgICAgdm5fZGVsX25hbWUoZHAtPmRfdm5vZGUsIGRwKTsKKwor
ICAgIG11dGV4X3VubG9jaygmZGVudHJ5X2hhc2hfbG9jayk7CisKKyAgICBpZiAoZHAtPmRfcGFy
ZW50KSB7CisgICAgICAgIFdJVEhfTE9DSyhkcC0+ZF9wYXJlbnQtPmRfbG9jaykgeworICAgICAg
ICAgICAgLy8gUmVtb3ZlIGRwIGZyb20gaXRzIHBhcmVudCdzIGNoaWxkcmVuIGxpc3QuCisgICAg
ICAgICAgICBMSVNUX1JFTU9WRShkcCwgZF9jaGlsZHJlbl9saW5rKTsKKyAgICAgICAgfQorICAg
ICAgICBkcmVsZShkcC0+ZF9wYXJlbnQpOworICAgIH0KKworICAgIHZyZWxlKGRwLT5kX3Zub2Rl
KTsKKworICAgIGZyZWUoZHAtPmRfcGF0aCk7CisgICAgZnJlZShkcCk7Cit9CisKK3ZvaWQKK2Rl
bnRyeV9pbml0KHZvaWQpCit7CisgICAgaW50IGk7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgREVO
VFJZX0JVQ0tFVFM7IGkrKykgeworICAgICAgICBMSVNUX0lOSVQoJmRlbnRyeV9oYXNoX3RhYmxl
W2ldKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9mb3BzLmMgYi9saWIvdmZz
Y29yZS9mb3BzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjNhOGY5OGI0
Ci0tLSAvZGV2L251bGwKKysrIGIvbGliL3Zmc2NvcmUvZm9wcy5jCkBAIC0wLDAgKzEsMTg5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIENsb3VkaXVzIFN5c3RlbXMsIEx0ZC4KKyAqCisg
KiBUaGlzIHdvcmsgaXMgb3BlbiBzb3VyY2Ugc29mdHdhcmUsIGxpY2Vuc2VkIHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUKKyAqIEJTRCBsaWNlbnNlIGFzIGRlc2NyaWJlZCBpbiB0aGUgTElDRU5TRSBm
aWxlIGluIHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5LgorICovCisKKworI2luY2x1ZGUgPGZjbnRs
Lmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxvc3YvZmlsZS5oPgorI2luY2x1
ZGUgPG9zdi9wb2xsLmg+CisjaW5jbHVkZSA8ZnMvdmZzL3Zmcy5oPgorI2luY2x1ZGUgPG9zdi92
ZnNfZmlsZS5oaD4KKyNpbmNsdWRlIDxvc3YvbW11LmhoPgorI2luY2x1ZGUgPG9zdi9wYWdlY2Fj
aGUuaGg+CisKK3Zmc19maWxlOjp2ZnNfZmlsZSh1bnNpZ25lZCBmbGFncykKKwk6IGZpbGUoZmxh
Z3MsIERUWVBFX1ZOT0RFKQoreworfQorCitpbnQgdmZzX2ZpbGU6OmNsb3NlKCkKK3sKKwlhdXRv
IGZwID0gdGhpczsKKwlzdHJ1Y3Qgdm5vZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOwor
CWludCBlcnJvcjsKKworCXZuX2xvY2sodnApOworCWVycm9yID0gVk9QX0NMT1NFKHZwLCBmcCk7
CisJdm5fdW5sb2NrKHZwKTsKKworCWlmIChlcnJvcikKKwkJcmV0dXJuIGVycm9yOworCisJZnAt
PmZfZGVudHJ5LnJlc2V0KCk7CisJcmV0dXJuIDA7Cit9CisKK2ludCB2ZnNfZmlsZTo6cmVhZChz
dHJ1Y3QgdWlvICp1aW8sIGludCBmbGFncykKK3sKKwlhdXRvIGZwID0gdGhpczsKKwlzdHJ1Y3Qg
dm5vZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOworCWludCBlcnJvcjsKKwlzaXplX3Qg
Y291bnQ7CisJc3NpemVfdCBieXRlczsKKworCWJ5dGVzID0gdWlvLT51aW9fcmVzaWQ7CisKKwl2
bl9sb2NrKHZwKTsKKwlpZiAoKGZsYWdzICYgRk9GX09GRlNFVCkgPT0gMCkKKwkJdWlvLT51aW9f
b2Zmc2V0ID0gZnAtPmZfb2Zmc2V0OworCisJZXJyb3IgPSBWT1BfUkVBRCh2cCwgZnAsIHVpbywg
MCk7CisJaWYgKCFlcnJvcikgeworCQljb3VudCA9IGJ5dGVzIC0gdWlvLT51aW9fcmVzaWQ7CisJ
CWlmICgoZmxhZ3MgJiBGT0ZfT0ZGU0VUKSA9PSAwKQorCQkJZnAtPmZfb2Zmc2V0ICs9IGNvdW50
OworCX0KKwl2bl91bmxvY2sodnApOworCisJcmV0dXJuIGVycm9yOworfQorCisKK2ludCB2ZnNf
ZmlsZTo6d3JpdGUoc3RydWN0IHVpbyAqdWlvLCBpbnQgZmxhZ3MpCit7CisJYXV0byBmcCA9IHRo
aXM7CisJc3RydWN0IHZub2RlICp2cCA9IGZwLT5mX2RlbnRyeS0+ZF92bm9kZTsKKwlpbnQgaW9m
bGFncyA9IDA7CisJaW50IGVycm9yOworCXNpemVfdCBjb3VudDsKKwlzc2l6ZV90IGJ5dGVzOwor
CisJYnl0ZXMgPSB1aW8tPnVpb19yZXNpZDsKKworCXZuX2xvY2sodnApOworCisJaWYgKGZwLT5m
X2ZsYWdzICYgT19BUFBFTkQpCisJCWlvZmxhZ3MgfD0gSU9fQVBQRU5EOworCWlmIChmcC0+Zl9m
bGFncyAmIChPX0RTWU5DfE9fU1lOQykpCisJCWlvZmxhZ3MgfD0gSU9fU1lOQzsKKworCWlmICgo
ZmxhZ3MgJiBGT0ZfT0ZGU0VUKSA9PSAwKQorCSAgICAgICAgdWlvLT51aW9fb2Zmc2V0ID0gZnAt
PmZfb2Zmc2V0OworCisJZXJyb3IgPSBWT1BfV1JJVEUodnAsIHVpbywgaW9mbGFncyk7CisJaWYg
KCFlcnJvcikgeworCQljb3VudCA9IGJ5dGVzIC0gdWlvLT51aW9fcmVzaWQ7CisJCWlmICgoZmxh
Z3MgJiBGT0ZfT0ZGU0VUKSA9PSAwKQorCQkJZnAtPmZfb2Zmc2V0ICs9IGNvdW50OworCX0KKwor
CXZuX3VubG9jayh2cCk7CisJcmV0dXJuIGVycm9yOworfQorCitpbnQgdmZzX2ZpbGU6OmlvY3Rs
KHVfbG9uZyBjb20sIHZvaWQgKmRhdGEpCit7CisJYXV0byBmcCA9IHRoaXM7CisJc3RydWN0IHZu
b2RlICp2cCA9IGZwLT5mX2RlbnRyeS0+ZF92bm9kZTsKKwlpbnQgZXJyb3I7CisKKwl2bl9sb2Nr
KHZwKTsKKwllcnJvciA9IFZPUF9JT0NUTCh2cCwgZnAsIGNvbSwgZGF0YSk7CisJdm5fdW5sb2Nr
KHZwKTsKKworCXJldHVybiBlcnJvcjsKK30KKworaW50IHZmc19maWxlOjpzdGF0KHN0cnVjdCBz
dGF0ICpzdCkKK3sKKwlhdXRvIGZwID0gdGhpczsKKwlzdHJ1Y3Qgdm5vZGUgKnZwID0gZnAtPmZf
ZGVudHJ5LT5kX3Zub2RlOworCWludCBlcnJvcjsKKworCXZuX2xvY2sodnApOworCWVycm9yID0g
dm5fc3RhdCh2cCwgc3QpOworCXZuX3VubG9jayh2cCk7CisKKwlyZXR1cm4gZXJyb3I7Cit9CisK
K2ludCB2ZnNfZmlsZTo6cG9sbChpbnQgZXZlbnRzKQoreworCXJldHVybiBwb2xsX25vX3BvbGwo
ZXZlbnRzKTsKK30KKworaW50IHZmc19maWxlOjp0cnVuY2F0ZShvZmZfdCBsZW4pCit7CisJLy8g
c29tZWhvdyB0aGlzIGlzIGhhbmRsZWQgb3V0c2lkZSBmaWxlIG9wcworCWFib3J0KCk7Cit9CisK
K2ludCB2ZnNfZmlsZTo6Y2htb2QobW9kZV90IG1vZGUpCit7CisJLy8gc29tZWhvdyB0aGlzIGlz
IGhhbmRsZWQgb3V0c2lkZSBmaWxlIG9wcworCWFib3J0KCk7Cit9CisKK2Jvb2wgdmZzX2ZpbGU6
Om1hcF9wYWdlKHVpbnRwdHJfdCBvZmYsIG1tdTo6aHdfcHRlcDwwPiBwdGVwLCBtbXU6OnB0X2Vs
ZW1lbnQ8MD4gcHRlLCBib29sIHdyaXRlLCBib29sIHNoYXJlZCkKK3sKKyAgICByZXR1cm4gcGFn
ZWNhY2hlOjpnZXQodGhpcywgb2ZmLCBwdGVwLCBwdGUsIHdyaXRlLCBzaGFyZWQpOworfQorCiti
b29sIHZmc19maWxlOjpwdXRfcGFnZSh2b2lkICphZGRyLCB1aW50cHRyX3Qgb2ZmLCBtbXU6Omh3
X3B0ZXA8MD4gcHRlcCkKK3sKKyAgICByZXR1cm4gcGFnZWNhY2hlOjpyZWxlYXNlKHRoaXMsIGFk
ZHIsIG9mZiwgcHRlcCk7Cit9CisKK3ZvaWQgdmZzX2ZpbGU6OnN5bmMob2ZmX3Qgc3RhcnQsIG9m
Zl90IGVuZCkKK3sKKyAgICBwYWdlY2FjaGU6OnN5bmModGhpcywgc3RhcnQsIGVuZCk7Cit9CisK
Ky8vIExvY2tpbmc6IFZPUF9DQUNIRSB3aWxsIGNhbGwgaW50byB0aGUgZmlsZXN5c3RlbSwgYW5k
IHRoYXQgY2FuIHRyaWdnZXIgYW4KKy8vIGV2aWN0aW9uIHRoYXQgd2lsbCBob2xkIHRoZSBtbXUt
c2lkZSBsb2NrIHRoYXQgcHJvdGVjdHMgdGhlIG1hcHBpbmdzCisvLyBBbHdheXMgZm9sbG93IHRo
YXQgb3JkZXIuIFdlIGhvd2V2ZXIgY2FuJ3QganVzdCBnZXQgcmlkIG9mIHRoZSBtbXUtc2lkZSBs
b2NrLAorLy8gYmVjYXVzZSBub3QgYWxsIGludmFsaWRhdGlvbnMgd2lsbCBiZSBzeW5jaHJvbm91
cy4KK2ludCB2ZnNfZmlsZTo6Z2V0X2FyY2J1Zih2b2lkKiBrZXksIG9mZl90IG9mZnNldCkKK3sK
KyAgICBzdHJ1Y3Qgdm5vZGUgKnZwID0gZl9kZW50cnktPmRfdm5vZGU7CisKKyAgICBpb3ZlYyBp
b1sxXTsKKworICAgIGlvWzBdLmlvdl9iYXNlID0ga2V5OworICAgIHVpbyBkYXRhOworICAgIGRh
dGEudWlvX2lvdiA9IGlvOworICAgIGRhdGEudWlvX2lvdmNudCA9IDE7CisgICAgZGF0YS51aW9f
b2Zmc2V0ID0gb2Zmc2V0OworICAgIGRhdGEudWlvX3Jlc2lkID0gbW11OjpwYWdlX3NpemU7Cisg
ICAgZGF0YS51aW9fcncgPSBVSU9fUkVBRDsKKworICAgIHZuX2xvY2sodnApOworICAgIGFzc2Vy
dChWT1BfQ0FDSEUodnAsIHRoaXMsICZkYXRhKSA9PSAwKTsKKyAgICB2bl91bmxvY2sodnApOwor
CisgICAgcmV0dXJuIChkYXRhLnVpb19yZXNpZCAhPSAwKSA/IC0xIDogMDsKK30KKworc3RkOjp1
bmlxdWVfcHRyPG1tdTo6ZmlsZV92bWE+IHZmc19maWxlOjptbWFwKGFkZHJfcmFuZ2UgcmFuZ2Us
IHVuc2lnbmVkIGZsYWdzLCB1bnNpZ25lZCBwZXJtLCBvZmZfdCBvZmZzZXQpCit7CisJYXV0byBm
cCA9IHRoaXM7CisJc3RydWN0IHZub2RlICp2cCA9IGZwLT5mX2RlbnRyeS0+ZF92bm9kZTsKKwlp
ZiAoIXZwLT52X29wLT52b3BfY2FjaGUgfHwgKHZwLT52X3NpemUgPCAob2ZmX3QpbW11OjpwYWdl
X3NpemUpKSB7CisJCXJldHVybiBtbXU6OmRlZmF1bHRfZmlsZV9tbWFwKHRoaXMsIHJhbmdlLCBm
bGFncywgcGVybSwgb2Zmc2V0KTsKKwl9CisJcmV0dXJuIG1tdTo6bWFwX2ZpbGVfbW1hcCh0aGlz
LCByYW5nZSwgZmxhZ3MsIHBlcm0sIG9mZnNldCk7Cit9CmRpZmYgLS1naXQgYS9saWIvdmZzY29y
ZS9pbmNsdWRlL3Zmc2NvcmUvZGVudHJ5LmggYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUv
ZGVudHJ5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLmEyNTQ1YWY4Ci0t
LSAvZGV2L251bGwKKysrIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2RlbnRyeS5oCkBA
IC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQ2xvdWRpdXMgU3lzdGVt
cywgTHRkLgorICoKKyAqIFRoaXMgd29yayBpcyBvcGVuIHNvdXJjZSBzb2Z0d2FyZSwgbGljZW5z
ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZQorICogQlNEIGxpY2Vuc2UgYXMgZGVzY3JpYmVkIGlu
IHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHRvcC1sZXZlbCBkaXJlY3RvcnkuCisgKi8KKworI2lm
bmRlZiBfT1NWX0RFTlRSWV9ICisjZGVmaW5lIF9PU1ZfREVOVFJZX0ggMQorCisjaW5jbHVkZSA8
b3N2L211dGV4Lmg+CisjaW5jbHVkZSA8YnNkL3N5cy9zeXMvcXVldWUuaD4KKworc3RydWN0IHZu
b2RlOworCitzdHJ1Y3QgZGVudHJ5IHsKKwlMSVNUX0VOVFJZKGRlbnRyeSkgZF9saW5rOwkvKiBs
aW5rIGZvciBoYXNoIGxpc3QgKi8KKwlpbnQJCWRfcmVmY250OwkvKiByZWZlcmVuY2UgY291bnQg
Ki8KKwljaGFyCQkqZF9wYXRoOwkvKiBwb2ludGVyIHRvIHBhdGggaW4gZnMgKi8KKwlzdHJ1Y3Qg
dm5vZGUJKmRfdm5vZGU7CisJc3RydWN0IG1vdW50CSpkX21vdW50OworCXN0cnVjdCBkZW50cnkg
ICAqZF9wYXJlbnQ7IC8qIHBvaW50ZXIgdG8gcGFyZW50ICovCisJTElTVF9FTlRSWShkZW50cnkp
IGRfbmFtZXNfbGluazsgLyogbGluayBmbyB2bm9kZTo6ZF9uYW1lcyAqLworCW11dGV4X3QJCWRf
bG9jazsKKwlMSVNUX0hFQUQoLCBkZW50cnkpIGRfY2hpbGRyZW47CisJTElTVF9FTlRSWShkZW50
cnkpIGRfY2hpbGRyZW5fbGluazsKK307CisKKyNpZmRlZiBfX2NwbHVzcGx1cworCisjaW5jbHVk
ZSA8Ym9vc3QvaW50cnVzaXZlX3B0ci5ocHA+CisKK3VzaW5nIGRlbnRyeV9yZWYgPSBib29zdDo6
aW50cnVzaXZlX3B0cjxkZW50cnk+OworCitleHRlcm4gIkMiIHsKKyAgICB2b2lkIGRyZWYoc3Ry
dWN0IGRlbnRyeSogZHApOworICAgIHZvaWQgZHJlbGUoc3RydWN0IGRlbnRyeSogZHApOworfTsK
KworaW5saW5lIHZvaWQgaW50cnVzaXZlX3B0cl9hZGRfcmVmKGRlbnRyeSogZHApIHsgZHJlZihk
cCk7IH0KK2lubGluZSB2b2lkIGludHJ1c2l2ZV9wdHJfcmVsZWFzZShkZW50cnkqIGRwKSB7IGRy
ZWxlKGRwKTsgfQorCisjZW5kaWYKKworI2VuZGlmIC8qIF9PU1ZfREVOVFJZX0ggKi8KZGlmZiAt
LWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9tb3VudC5oIGIvbGliL3Zmc2NvcmUv
aW5jbHVkZS92ZnNjb3JlL21vdW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAuLjcyNjhkOGNlCi0tLSAvZGV2L251bGwKKysrIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNj
b3JlL21vdW50LmgKQEAgLTAsMCArMSwxNzEgQEAKKy8qLQorICogQ29weXJpZ2h0IChjKSAxOTg5
LCAxOTkxLCAxOTkzCisgKglUaGUgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9y
bmlhLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5h
bWUgb2YgdGhlIFVuaXZlcnNpdHkgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisg
KiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tIHRoaXMgc29mdHdhcmUKKyAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIFJFR0VO
VFMgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBSRUdFTlRTIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
CisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0Uu
CisgKgorICoJQCgjKW1vdW50LmgJOC4yMSAoQmVya2VsZXkpIDUvMjAvOTUKKyAqLworCisjaWZu
ZGVmIF9TWVNfTU9VTlRfSF8KKyNkZWZpbmUgX1NZU19NT1VOVF9IXworCisjaW5jbHVkZSA8c3lz
L2NkZWZzLmg+CisjaW5jbHVkZSA8c3lzL3N0YXRmcy5oPgorI2luY2x1ZGUgPG9zdi92bm9kZS5o
PgorI2luY2x1ZGUgPGJzZC9zeXMvc3lzL3F1ZXVlLmg+CisKK19fQkVHSU5fREVDTFMKKworI2lm
ZGVmIF9LRVJORUwKKworLyoKKyAqIE1vdW50IGRhdGEKKyAqLworc3RydWN0IG1vdW50IHsKKwlz
dHJ1Y3QgdmZzb3BzCSptX29wOwkJLyogcG9pbnRlciB0byB2ZnMgb3BlcmF0aW9uICovCisJaW50
CQltX2ZsYWdzOwkvKiBtb3VudCBmbGFnICovCisJaW50CQltX2NvdW50OwkvKiByZWZlcmVuY2Ug
Y291bnQgKi8KKwljaGFyICAgICAgICAgICAgbV9wYXRoW1BBVEhfTUFYXTsgLyogbW91bnRlZCBw
YXRoICovCisJY2hhciAgICAgICAgICAgIG1fc3BlY2lhbFtQQVRIX01BWF07IC8qIHJlc291cmNl
ICovCisJc3RydWN0IGRldmljZQkqbV9kZXY7CQkvKiBtb3VudGVkIGRldmljZSAqLworCXN0cnVj
dCBkZW50cnkJKm1fcm9vdDsJLyogcm9vdCB2bm9kZSAqLworCXN0cnVjdCBkZW50cnkJKm1fY292
ZXJlZDsJLyogdm5vZGUgY292ZXJlZCBvbiBwYXJlbnQgZnMgKi8KKwl2b2lkCQkqbV9kYXRhOwkv
KiBwcml2YXRlIGRhdGEgZm9yIGZzICovCisJZnNpZF90IAkJbV9mc2lkOyAJLyogaWQgdGhhdCB1
bmlxdWVseSBpZGVudGlmaWVzIHRoZSBmcyAqLworfTsKKworI2VuZGlmCisKKy8qCisgKiBNb3Vu
dCBmbGFncy4KKyAqLworI2RlZmluZQlNTlRfUkRPTkxZCTB4MDAwMDAwMDEJLyogcmVhZCBvbmx5
IGZpbGVzeXN0ZW0gKi8KKyNkZWZpbmUJTU5UX1NZTkNIUk9OT1VTCTB4MDAwMDAwMDIJLyogZmls
ZSBzeXN0ZW0gd3JpdHRlbiBzeW5jaHJvbm91c2x5ICovCisjZGVmaW5lCU1OVF9OT0VYRUMJMHgw
MDAwMDAwNAkvKiBjYW4ndCBleGVjIGZyb20gZmlsZXN5c3RlbSAqLworI2RlZmluZQlNTlRfTk9T
VUlECTB4MDAwMDAwMDgJLyogZG9uJ3QgaG9ub3Igc2V0dWlkIGJpdHMgb24gZnMgKi8KKyNkZWZp
bmUJTU5UX05PREVWCTB4MDAwMDAwMTAJLyogZG9uJ3QgaW50ZXJwcmV0IHNwZWNpYWwgZmlsZXMg
Ki8KKyNkZWZpbmUJTU5UX1VOSU9OCTB4MDAwMDAwMjAJLyogdW5pb24gd2l0aCB1bmRlcmx5aW5n
IGZpbGVzeXN0ZW0gKi8KKyNkZWZpbmUJTU5UX0FTWU5DCTB4MDAwMDAwNDAJLyogZmlsZSBzeXN0
ZW0gd3JpdHRlbiBhc3luY2hyb25vdXNseSAqLworCisvKgorICogVW5tb3VudCBmbGFncy4KKyAq
LworI2RlZmluZSBNTlRfRk9SQ0UJMHgwMDAwMDAwMQkvKiBmb3JjZWQgdW5tb3VudCAqLworCisv
KgorICogZXhwb3J0ZWQgbW91bnQgZmxhZ3MuCisgKi8KKyNkZWZpbmUJTU5UX0VYUkRPTkxZCTB4
MDAwMDAwODAJLyogZXhwb3J0ZWQgcmVhZCBvbmx5ICovCisjZGVmaW5lCU1OVF9FWFBPUlRFRAkw
eDAwMDAwMTAwCS8qIGZpbGUgc3lzdGVtIGlzIGV4cG9ydGVkICovCisjZGVmaW5lCU1OVF9ERUZF
WFBPUlRFRAkweDAwMDAwMjAwCS8qIGV4cG9ydGVkIHRvIHRoZSB3b3JsZCAqLworI2RlZmluZQlN
TlRfRVhQT1JUQU5PTgkweDAwMDAwNDAwCS8qIHVzZSBhbm9uIHVpZCBtYXBwaW5nIGZvciBldmVy
eW9uZSAqLworI2RlZmluZQlNTlRfRVhLRVJCCTB4MDAwMDA4MDAJLyogZXhwb3J0ZWQgd2l0aCBL
ZXJiZXJvcyB1aWQgbWFwcGluZyAqLworCisvKgorICogRmxhZ3Mgc2V0IGJ5IGludGVybmFsIG9w
ZXJhdGlvbnMuCisgKi8KKyNkZWZpbmUJTU5UX0xPQ0FMCTB4MDAwMDEwMDAJLyogZmlsZXN5c3Rl
bSBpcyBzdG9yZWQgbG9jYWxseSAqLworI2RlZmluZQlNTlRfUVVPVEEJMHgwMDAwMjAwMAkvKiBx
dW90YXMgYXJlIGVuYWJsZWQgb24gZmlsZXN5c3RlbSAqLworI2RlZmluZQlNTlRfUk9PVEZTCTB4
MDAwMDQwMDAJLyogaWRlbnRpZmllcyB0aGUgcm9vdCBmaWxlc3lzdGVtICovCisKKy8qCisgKiBN
YXNrIG9mIGZsYWdzIHRoYXQgYXJlIHZpc2libGUgdG8gc3RhdGZzKCkKKyAqLworI2RlZmluZQlN
TlRfVklTRkxBR01BU0sJMHgwMDAwZmZmZgorCisjaWZkZWYgX0tFUk5FTAorCisvKgorICogRmls
ZXN5c3RlbSB0eXBlIHN3aXRjaCB0YWJsZS4KKyAqLworc3RydWN0IHZmc3N3IHsKKwljb25zdCBj
aGFyICAgICAgKnZzX25hbWU7CS8qIG5hbWUgb2YgZmlsZSBzeXN0ZW0gKi8KKwlpbnQJCSgqdnNf
aW5pdCkodm9pZCk7IC8qIGluaXRpYWxpemUgcm91dGluZSAqLworCXN0cnVjdCB2ZnNvcHMJKnZz
X29wOwkJLyogcG9pbnRlciB0byB2ZnMgb3BlcmF0aW9uICovCit9OworCisvKgorICogT3BlcmF0
aW9ucyBzdXBwb3J0ZWQgb24gdmlydHVhbCBmaWxlIHN5c3RlbS4KKyAqLworc3RydWN0IHZmc29w
cyB7CisJaW50ICgqdmZzX21vdW50KQkoc3RydWN0IG1vdW50ICosIGNvbnN0IGNoYXIgKiwgaW50
LCBjb25zdCB2b2lkICopOworCWludCAoKnZmc191bm1vdW50KQkoc3RydWN0IG1vdW50ICosIGlu
dCBmbGFncyk7CisJaW50ICgqdmZzX3N5bmMpCQkoc3RydWN0IG1vdW50ICopOworCWludCAoKnZm
c192Z2V0KQkJKHN0cnVjdCBtb3VudCAqLCBzdHJ1Y3Qgdm5vZGUgKik7CisJaW50ICgqdmZzX3N0
YXRmcykJKHN0cnVjdCBtb3VudCAqLCBzdHJ1Y3Qgc3RhdGZzICopOworCXN0cnVjdCB2bm9wcwkq
dmZzX3Zub3BzOworfTsKKwordHlwZWRlZiBpbnQgKCp2ZnNvcF9tb3VudF90KShzdHJ1Y3QgbW91
bnQgKiwgY29uc3QgY2hhciAqLCBpbnQsIGNvbnN0IHZvaWQgKik7Cit0eXBlZGVmIGludCAoKnZm
c29wX3Vtb3VudF90KShzdHJ1Y3QgbW91bnQgKiwgaW50IGZsYWdzKTsKK3R5cGVkZWYgaW50ICgq
dmZzb3Bfc3luY190KShzdHJ1Y3QgbW91bnQgKik7Cit0eXBlZGVmIGludCAoKnZmc29wX3ZnZXRf
dCkoc3RydWN0IG1vdW50ICosIHN0cnVjdCB2bm9kZSAqKTsKK3R5cGVkZWYgaW50ICgqdmZzb3Bf
c3RhdGZzX3QpKHN0cnVjdCBtb3VudCAqLCBzdHJ1Y3Qgc3RhdGZzICopOworCisvKgorICogVkZT
IGludGVyZmFjZQorICovCisjZGVmaW5lIFZGU19NT1VOVChNUCwgREVWLCBGTCwgREFUKSAoKE1Q
KS0+bV9vcC0+dmZzX21vdW50KShNUCwgREVWLCBGTCwgREFUKQorI2RlZmluZSBWRlNfVU5NT1VO
VChNUCwgRkwpICAgICAgICAgKChNUCktPm1fb3AtPnZmc191bm1vdW50KShNUCwgRkwpCisjZGVm
aW5lIFZGU19TWU5DKE1QKSAgICAgICAgICAgICAgICAoKE1QKS0+bV9vcC0+dmZzX3N5bmMpKE1Q
KQorI2RlZmluZSBWRlNfVkdFVChNUCwgVlApICAgICAgICAgICAgKChNUCktPm1fb3AtPnZmc192
Z2V0KShNUCwgVlApCisjZGVmaW5lIFZGU19TVEFURlMoTVAsIFNGUCkgICAgICAgICAoKE1QKS0+
bV9vcC0+dmZzX3N0YXRmcykoTVAsIFNGUCkKKworI2RlZmluZSBWRlNfTlVMTAkJICAgICgodm9p
ZCAqKXZmc19udWxsKQorCitpbnQJdmZzX251bGxvcCh2b2lkKTsKK2ludAl2ZnNfZWludmFsKHZv
aWQpOworCit2b2lkCSB2ZnNfYnVzeShzdHJ1Y3QgbW91bnQgKm1wKTsKK3ZvaWQJIHZmc191bmJ1
c3koc3RydWN0IG1vdW50ICptcCk7CisKK3ZvaWQJIHJlbGVhc2VfbXBfZGVudHJpZXMoc3RydWN0
IG1vdW50ICptcCk7CisKKyNlbmRpZgorCitfX0VORF9ERUNMUworCisjaWZkZWYgX19jcGx1c3Bs
dXMKKworI2luY2x1ZGUgPHZlY3Rvcj4KKyNpbmNsdWRlIDxzdHJpbmc+CisKK25hbWVzcGFjZSBv
c3YgeworCitzdHJ1Y3QgbW91bnRfZGVzYyB7CisgICAgc3RkOjpzdHJpbmcgc3BlY2lhbDsKKyAg
ICBzdGQ6OnN0cmluZyBwYXRoOworICAgIHN0ZDo6c3RyaW5nIHR5cGU7CisgICAgc3RkOjpzdHJp
bmcgb3B0aW9uczsKK307CisKK3N0ZDo6dmVjdG9yPG1vdW50X2Rlc2M+IGN1cnJlbnRfbW91bnRz
KCk7CisKK30KKworI2VuZGlmCisKKyNlbmRpZgkvKiAhX1NZU19NT1VOVF9IXyAqLwpkaWZmIC0t
Z2l0IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3ByZXguaCBiL2xpYi92ZnNjb3JlL2lu
Y2x1ZGUvdmZzY29yZS9wcmV4LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAu
LjQzNjUwMzQwCi0tLSAvZGV2L251bGwKKysrIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3Jl
L3ByZXguaApAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIENsb3Vk
aXVzIFN5c3RlbXMsIEx0ZC4KKyAqCisgKiBUaGlzIHdvcmsgaXMgb3BlbiBzb3VyY2Ugc29mdHdh
cmUsIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUKKyAqIEJTRCBsaWNlbnNlIGFzIGRl
c2NyaWJlZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5Lgor
ICovCisKKyNpZm5kZWYgX09TVl9QUkVYX0gKKyNkZWZpbmUgX09TVl9QUkVYX0ggMQorCisKKyNp
bmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxvc3YvZmNudGwuaD4KKworX19CRUdJTl9ERUNM
UworCisjZGVmaW5lIF9fcGFja2VkICAgICAgICBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fKSkK
KworI2RlZmluZQlCU0laRQk1MTIJCS8qIHNpemUgb2Ygc2Vjb25kYXJ5IGJsb2NrIChieXRlcykg
Ki8KKworI2RlZmluZSBET19SRFdSCQkweDIKKworI2RlZmluZSBQQUdFX1NJWkUJNDA5NgorI2Rl
ZmluZSBQQUdFX01BU0sJKFBBR0VfU0laRS0xKQorI2RlZmluZSByb3VuZF9wYWdlKHgpCSgoKHgp
ICsgUEFHRV9NQVNLKSAmIH5QQUdFX01BU0spCisKK3NpemVfdCBzdHJsY2F0KGNoYXIgKmRzdCwg
Y29uc3QgY2hhciAqc3JjLCBzaXplX3Qgc2l6KTsKK3NpemVfdCBzdHJsY3B5KGNoYXIgKmRzdCwg
Y29uc3QgY2hhciAqc3JjLCBzaXplX3Qgc2l6KTsKKwordm9pZCBzeXNfcGFuaWMoY29uc3QgY2hh
ciAqKTsKKworX19FTkRfREVDTFMKKworI2VuZGlmIC8qIF9PU1ZfUFJFWF9IICovCmRpZmYgLS1n
aXQgYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdWlvLmggYi9saWIvdmZzY29yZS9pbmNs
dWRlL3Zmc2NvcmUvdWlvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjY5
NmIwMWNmCi0tLSAvZGV2L251bGwKKysrIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Vp
by5oCkBAIC0wLDAgKzEsODkgQEAKKy8qLQorICogQ29weXJpZ2h0IChjKSAxOTgyLCAxOTg2LCAx
OTkzLCAxOTk0CisgKglUaGUgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlh
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDQuIE5laXRoZXIgdGhlIG5hbWUg
b2YgdGhlIFVuaXZlcnNpdHkgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisgKiAg
ICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
IHRoaXMgc29mdHdhcmUKKyAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIFJFR0VOVFMg
QU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBS
RUdFTlRTIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisg
KiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAor
ICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisg
KgorICoJQCgjKXVpby5oCTguNSAoQmVya2VsZXkpIDIvMjIvOTQKKyAqICRGcmVlQlNEJAorICov
CisKKyNpZm5kZWYgX1VJT19IXworI2RlZmluZQlfVUlPX0hfCisKKyNpbmNsdWRlIDxzeXMvY2Rl
ZnMuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvdWlvLmg+CisjaW5j
bHVkZSA8bGltaXRzLmg+CisKK19fQkVHSU5fREVDTFMKKworZW51bQl1aW9fcncgeyBVSU9fUkVB
RCwgVUlPX1dSSVRFIH07CisKKy8qCisgKiBTYWZlIGRlZmF1bHQgdG8gcHJldmVudCBwb3NzaWJs
ZSBvdmVyZmxvd3MgaW4gdXNlciBjb2RlLCBvdGhlcndpc2UgY291bGQKKyAqIGJlIFNTSVpFX1Rf
TUFYLgorICovCisjZGVmaW5lIElPU0laRV9NQVggICAgICBJTlRfTUFYCisKKyNkZWZpbmUgVUlP
X01BWElPViAxMDI0CisKKyNkZWZpbmUgVUlPX1NZU1NQQUNFIDAKKworc3RydWN0IHVpbyB7CisJ
c3RydWN0IGlvdmVjICp1aW9faW92OwkJLyogc2NhdHRlci9nYXRoZXIgbGlzdCAqLworCWludAl1
aW9faW92Y250OwkJLyogbGVuZ3RoIG9mIHNjYXR0ZXIvZ2F0aGVyIGxpc3QgKi8KKwlvZmZfdAl1
aW9fb2Zmc2V0OwkJLyogb2Zmc2V0IGluIHRhcmdldCBvYmplY3QgKi8KKwlzc2l6ZV90CXVpb19y
ZXNpZDsJCS8qIHJlbWFpbmluZyBieXRlcyB0byBwcm9jZXNzICovCisJZW51bQl1aW9fcncgdWlv
X3J3OwkJLyogb3BlcmF0aW9uICovCit9OworCitpbnQJdWlvbW92ZSh2b2lkICpjcCwgaW50IG4s
IHN0cnVjdCB1aW8gKnVpbyk7CisKK19fRU5EX0RFQ0xTCisKKyNpZmRlZiBfX2NwbHVzcGx1cwor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgRj4KK3N0YXRpYyBpbmxpbmUgdm9pZCBsaW5lYXJpemVfdWlv
X3dyaXRlKHN0cnVjdCB1aW8gKnVpbywgaW50IGlvZmxhZywgRiBmKQoreworICAgIHdoaWxlICh1
aW8tPnVpb19yZXNpZCA+IDApIHsKKyAgICAgICAgc3RydWN0IGlvdmVjICppb3YgPSB1aW8tPnVp
b19pb3Y7CisKKyAgICAgICAgaWYgKGlvdi0+aW92X2xlbikgeworICAgICAgICAgICAgZihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGNoYXIgKj4oaW92LT5pb3ZfYmFzZSksCisgICAgICAgICAgICAg
ICAgaW92LT5pb3ZfbGVuKTsKKyAgICAgICAgfQorCisgICAgICAgIHVpby0+dWlvX2lvdisrOwor
ICAgICAgICB1aW8tPnVpb19pb3ZjbnQtLTsKKyAgICAgICAgdWlvLT51aW9fcmVzaWQgLT0gaW92
LT5pb3ZfbGVuOworICAgICAgICB1aW8tPnVpb19vZmZzZXQgKz0gaW92LT5pb3ZfbGVuOworICAg
IH0KK30KKworI2VuZGlmCisKKyNlbmRpZiAvKiAhX1VJT19IXyAqLwpkaWZmIC0tZ2l0IGEvbGli
L3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Zub2RlLmggYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zm
c2NvcmUvdm5vZGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uZTM1YWE4
MzAKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUu
aApAQCAtMCwwICsxLDI0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwNS0yMDA3LCBLb2hz
dWtlIE9odGFuaQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRo
ZXIgdGhlIG5hbWUgb2YgdGhlIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGFueSBjby1jb250cmli
dXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQorICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBfU1lTX1ZOT0RFX0hfCisjZGVmaW5lIF9TWVNfVk5PREVf
SF8KKworI2lmZGVmIF9LRVJORUwKKworI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgorI2luY2x1ZGUg
PHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8b3N2L3ByZXguaD4KKyNpbmNsdWRlIDxvc3YvdWlvLmg+
CisjaW5jbHVkZSA8b3N2L211dGV4Lmg+CisjaW5jbHVkZSAiZmlsZS5oIgorI2luY2x1ZGUgImRp
cmVudC5oIgorCitfX0JFR0lOX0RFQ0xTCisKK3N0cnVjdCB2ZnNvcHM7CitzdHJ1Y3Qgdm5vcHM7
CitzdHJ1Y3Qgdm5vZGU7CitzdHJ1Y3QgZmlsZTsKKworLyoKKyAqIFZub2RlIHR5cGVzLgorICov
CitlbnVtIHZ0eXBlIHsKKwlWTk9OLAkgICAgLyogbm8gdHlwZSAqLworCVZSRUcsCSAgICAvKiBy
ZWd1bGFyIGZpbGUgICovCisJVkRJUiwJICAgIC8qIGRpcmVjdG9yeSAqLworCVZCTEssCSAgICAv
KiBibG9jayBkZXZpY2UgKi8KKwlWQ0hSLAkgICAgLyogY2hhcmFjdGVyIGRldmljZSAqLworCVZM
TkssCSAgICAvKiBzeW1ib2xpYyBsaW5rICovCisJVlNPQ0ssCSAgICAvKiBzb2NrcyAqLworCVZG
SUZPLAkgICAgLyogRklGTyAqLworCVZCQUQKK307CisKKy8qCisgKiBSZWFkaW5nIG9yIHdyaXRp
bmcgYW55IG9mIHRoZXNlIGl0ZW1zIHJlcXVpcmVzIGhvbGRpbmcgdGhlCisgKiBhcHByb3ByaWF0
ZSBsb2NrLgorICovCitzdHJ1Y3Qgdm5vZGUgeworCXVpbnQ2NF90CXZfaW5vOwkJLyogaW5vZGUg
bnVtYmVyICovCisJTElTVF9FTlRSWSh2bm9kZSkgdl9saW5rOwkvKiBsaW5rIGZvciBoYXNoIGxp
c3QgKi8KKwlzdHJ1Y3QgbW91bnQJKnZfbW91bnQ7CS8qIG1vdW50ZWQgdmZzIHBvaW50ZXIgKi8K
KwlzdHJ1Y3Qgdm5vcHMJKnZfb3A7CQkvKiB2bm9kZSBvcGVyYXRpb25zICovCisJaW50CQl2X3Jl
ZmNudDsJLyogcmVmZXJlbmNlIGNvdW50ICovCisJaW50CQl2X3R5cGU7CQkvKiB2bm9kZSB0eXBl
ICovCisJaW50CQl2X2ZsYWdzOwkvKiB2bm9kZSBmbGFnICovCisJbW9kZV90CQl2X21vZGU7CQkv
KiBmaWxlIG1vZGUgKi8KKwlvZmZfdAkJdl9zaXplOwkJLyogZmlsZSBzaXplICovCisJbXV0ZXhf
dAkJdl9sb2NrOwkJLyogbG9jayBmb3IgdGhpcyB2bm9kZSAqLworCUxJU1RfSEVBRCgsIGRlbnRy
eSkgdl9uYW1lczsJLyogZGlyZWN0b3J5IGVudHJpZXMgcG9pbnRpbmcgYXQgdGhpcyAqLworCWlu
dAkJdl9ucmxvY2tzOwkvKiBsb2NrIGNvdW50IChmb3IgZGVidWcpICovCisJdm9pZAkJKnZfZGF0
YTsJLyogcHJpdmF0ZSBkYXRhIGZvciBmcyAqLworfTsKKworLyogZmxhZ3MgZm9yIHZub2RlICov
CisjZGVmaW5lIFZST09UCQkweDAwMDEJCS8qIHJvb3Qgb2YgaXRzIGZpbGUgc3lzdGVtICovCisj
ZGVmaW5lIFZJU1RUWQkJMHgwMDAyCQkvKiBkZXZpY2UgaXMgdHR5ICovCisjZGVmaW5lIFZQUk9U
REVWCTB4MDAwNAkJLyogcHJvdGVjdGVkIGRldmljZSAqLworCisvKgorICogVm5vZGUgYXR0cmli
dXRlCisgKi8KK3N0cnVjdCB2YXR0ciB7CisJdW5zaWduZWQgaW50CXZhX21hc2s7CisJZW51bSB2
dHlwZQl2YV90eXBlOwkvKiB2bm9kZSB0eXBlICovCisJbW9kZV90CQl2YV9tb2RlOwkvKiBmaWxl
IGFjY2VzcyBtb2RlICovCisJbmxpbmtfdAkJdmFfbmxpbms7CisJdWlkX3QJCXZhX3VpZDsKKwln
aWRfdAkJdmFfZ2lkOworCWRldl90ICAgICAgICAgICB2YV9mc2lkOyAgICAgICAgLyogaWQgb2Yg
dGhlIHVuZGVybHlpbmcgZmlsZXN5c3RlbSAqLworCWlub190CQl2YV9ub2RlaWQ7CisJc3RydWN0
IHRpbWVzcGVjCXZhX2F0aW1lOworCXN0cnVjdCB0aW1lc3BlYwl2YV9tdGltZTsKKwlzdHJ1Y3Qg
dGltZXNwZWMJdmFfY3RpbWU7CisJZGV2X3QJCXZhX3JkZXY7CisJdWludDY0X3QJdmFfbmJsb2Nr
czsKKwlvZmZfdAkJdmFfc2l6ZTsKK307CisKKy8qCisgKiAgTW9kZXMuCisgKi8KKyNkZWZpbmUg
VkFQUEVORCAwMDAxMAorI2RlZmluZQlWUkVBRAkwMDAwNAkJLyogcmVhZCwgd3JpdGUsIGV4ZWN1
dGUgcGVybWlzc2lvbnMgKi8KKyNkZWZpbmUJVldSSVRFCTAwMDAyCisjZGVmaW5lCVZFWEVDCTAw
MDAxCisKKyNkZWZpbmUgSU9fQVBQRU5ECTB4MDAwMQorI2RlZmluZSBJT19TWU5DCQkweDAwMDIK
KworLyoKKyAqIEFSQyBhY3Rpb25zCisgKi8KKyNkZWZpbmUgQVJDX0FDVElPTl9RVUVSWSAgICAw
CisjZGVmaW5lIEFSQ19BQ1RJT05fSE9MRCAgICAgMQorI2RlZmluZSBBUkNfQUNUSU9OX1JFTEVB
U0UgIDIKKwordHlwZWRlZglpbnQgKCp2bm9wX29wZW5fdCkJKHN0cnVjdCBmaWxlICopOwordHlw
ZWRlZglpbnQgKCp2bm9wX2Nsb3NlX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IGZpbGUgKik7
Cit0eXBlZGVmCWludCAoKnZub3BfcmVhZF90KQkoc3RydWN0IHZub2RlICosIHN0cnVjdCBmaWxl
ICosIHN0cnVjdCB1aW8gKiwgaW50KTsKK3R5cGVkZWYJaW50ICgqdm5vcF93cml0ZV90KQkoc3Ry
dWN0IHZub2RlICosIHN0cnVjdCB1aW8gKiwgaW50KTsKK3R5cGVkZWYJaW50ICgqdm5vcF9zZWVr
X3QpCShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IGZpbGUgKiwgb2ZmX3QsIG9mZl90KTsKK3R5cGVk
ZWYJaW50ICgqdm5vcF9pb2N0bF90KQkoc3RydWN0IHZub2RlICosIHN0cnVjdCBmaWxlICosIHVf
bG9uZywgdm9pZCAqKTsKK3R5cGVkZWYJaW50ICgqdm5vcF9mc3luY190KQkoc3RydWN0IHZub2Rl
ICosIHN0cnVjdCBmaWxlICopOwordHlwZWRlZglpbnQgKCp2bm9wX3JlYWRkaXJfdCkJKHN0cnVj
dCB2bm9kZSAqLCBzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgZGlyZW50ICopOwordHlwZWRlZglpbnQg
KCp2bm9wX2xvb2t1cF90KQkoc3RydWN0IHZub2RlICosIGNoYXIgKiwgc3RydWN0IHZub2RlICoq
KTsKK3R5cGVkZWYJaW50ICgqdm5vcF9jcmVhdGVfdCkJKHN0cnVjdCB2bm9kZSAqLCBjaGFyICos
IG1vZGVfdCk7Cit0eXBlZGVmCWludCAoKnZub3BfcmVtb3ZlX3QpCShzdHJ1Y3Qgdm5vZGUgKiwg
c3RydWN0IHZub2RlICosIGNoYXIgKik7Cit0eXBlZGVmCWludCAoKnZub3BfcmVuYW1lX3QpCShz
dHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHZub2RlICosIGNoYXIgKiwKKwkJCQkgc3RydWN0IHZub2Rl
ICosIHN0cnVjdCB2bm9kZSAqLCBjaGFyICopOwordHlwZWRlZglpbnQgKCp2bm9wX21rZGlyX3Qp
CShzdHJ1Y3Qgdm5vZGUgKiwgY2hhciAqLCBtb2RlX3QpOwordHlwZWRlZglpbnQgKCp2bm9wX3Jt
ZGlyX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHZub2RlICosIGNoYXIgKik7Cit0eXBlZGVm
CWludCAoKnZub3BfZ2V0YXR0cl90KQkoc3RydWN0IHZub2RlICosIHN0cnVjdCB2YXR0ciAqKTsK
K3R5cGVkZWYJaW50ICgqdm5vcF9zZXRhdHRyX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHZh
dHRyICopOwordHlwZWRlZglpbnQgKCp2bm9wX2luYWN0aXZlX3QpCShzdHJ1Y3Qgdm5vZGUgKik7
Cit0eXBlZGVmCWludCAoKnZub3BfdHJ1bmNhdGVfdCkJKHN0cnVjdCB2bm9kZSAqLCBvZmZfdCk7
Cit0eXBlZGVmCWludCAoKnZub3BfbGlua190KSAgICAgIChzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0
IHZub2RlICosIGNoYXIgKik7Cit0eXBlZGVmIGludCAoKnZub3BfY2FjaGVfdCkgKHN0cnVjdCB2
bm9kZSAqLCBzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgdWlvICopOwordHlwZWRlZiBpbnQgKCp2bm9w
X2ZhbGxvY2F0ZV90KSAoc3RydWN0IHZub2RlICosIGludCwgbG9mZl90LCBsb2ZmX3QpOwordHlw
ZWRlZiBpbnQgKCp2bm9wX3JlYWRsaW5rX3QpICAoc3RydWN0IHZub2RlICosIHN0cnVjdCB1aW8g
Kik7Cit0eXBlZGVmIGludCAoKnZub3Bfc3ltbGlua190KSAgIChzdHJ1Y3Qgdm5vZGUgKiwgY2hh
ciAqLCBjaGFyICopOworCisvKgorICogdm5vZGUgb3BlcmF0aW9ucworICovCitzdHJ1Y3Qgdm5v
cHMgeworCXZub3Bfb3Blbl90CQl2b3Bfb3BlbjsKKwl2bm9wX2Nsb3NlX3QJCXZvcF9jbG9zZTsK
Kwl2bm9wX3JlYWRfdAkJdm9wX3JlYWQ7CisJdm5vcF93cml0ZV90CQl2b3Bfd3JpdGU7CisJdm5v
cF9zZWVrX3QJCXZvcF9zZWVrOworCXZub3BfaW9jdGxfdAkJdm9wX2lvY3RsOworCXZub3BfZnN5
bmNfdAkJdm9wX2ZzeW5jOworCXZub3BfcmVhZGRpcl90CQl2b3BfcmVhZGRpcjsKKwl2bm9wX2xv
b2t1cF90CQl2b3BfbG9va3VwOworCXZub3BfY3JlYXRlX3QJCXZvcF9jcmVhdGU7CisJdm5vcF9y
ZW1vdmVfdAkJdm9wX3JlbW92ZTsKKwl2bm9wX3JlbmFtZV90CQl2b3BfcmVuYW1lOworCXZub3Bf
bWtkaXJfdAkJdm9wX21rZGlyOworCXZub3Bfcm1kaXJfdAkJdm9wX3JtZGlyOworCXZub3BfZ2V0
YXR0cl90CQl2b3BfZ2V0YXR0cjsKKwl2bm9wX3NldGF0dHJfdAkJdm9wX3NldGF0dHI7CisJdm5v
cF9pbmFjdGl2ZV90CQl2b3BfaW5hY3RpdmU7CisJdm5vcF90cnVuY2F0ZV90CQl2b3BfdHJ1bmNh
dGU7CisJdm5vcF9saW5rX3QJCXZvcF9saW5rOworCXZub3BfY2FjaGVfdAkJdm9wX2NhY2hlOwor
CXZub3BfZmFsbG9jYXRlX3QJdm9wX2ZhbGxvY2F0ZTsKKwl2bm9wX3JlYWRsaW5rX3QJCXZvcF9y
ZWFkbGluazsKKwl2bm9wX3N5bWxpbmtfdAkJdm9wX3N5bWxpbms7Cit9OworCisvKgorICogdm5v
ZGUgaW50ZXJmYWNlCisgKi8KKyNkZWZpbmUgVk9QX09QRU4oVlAsIEZQKQkgICAoKFZQKS0+dl9v
cC0+dm9wX29wZW4pKEZQKQorI2RlZmluZSBWT1BfQ0xPU0UoVlAsIEZQKQkgICAoKFZQKS0+dl9v
cC0+dm9wX2Nsb3NlKShWUCwgRlApCisjZGVmaW5lIFZPUF9SRUFEKFZQLCBGUCwgVSwgRikJICAg
KChWUCktPnZfb3AtPnZvcF9yZWFkKShWUCwgRlAsIFUsIEYpCisjZGVmaW5lIFZPUF9DQUNIRShW
UCwgRlAsIFUpCSAgICgoVlApLT52X29wLT52b3BfY2FjaGUpKFZQLCBGUCwgVSkKKyNkZWZpbmUg
Vk9QX1dSSVRFKFZQLCBVLCBGKQkgICAoKFZQKS0+dl9vcC0+dm9wX3dyaXRlKShWUCwgVSwgRikK
KyNkZWZpbmUgVk9QX1NFRUsoVlAsIEZQLCBPTEQsIE5FVykgKChWUCktPnZfb3AtPnZvcF9zZWVr
KShWUCwgRlAsIE9MRCwgTkVXKQorI2RlZmluZSBWT1BfSU9DVEwoVlAsIEZQLCBDLCBBKQkgICAo
KFZQKS0+dl9vcC0+dm9wX2lvY3RsKShWUCwgRlAsIEMsIEEpCisjZGVmaW5lIFZPUF9GU1lOQyhW
UCwgRlApCSAgICgoVlApLT52X29wLT52b3BfZnN5bmMpKFZQLCBGUCkKKyNkZWZpbmUgVk9QX1JF
QURESVIoVlAsIEZQLCBESVIpICAgKChWUCktPnZfb3AtPnZvcF9yZWFkZGlyKShWUCwgRlAsIERJ
UikKKyNkZWZpbmUgVk9QX0xPT0tVUChEVlAsIE4sIFZQKQkgICAoKERWUCktPnZfb3AtPnZvcF9s
b29rdXApKERWUCwgTiwgVlApCisjZGVmaW5lIFZPUF9DUkVBVEUoRFZQLCBOLCBNKQkgICAoKERW
UCktPnZfb3AtPnZvcF9jcmVhdGUpKERWUCwgTiwgTSkKKyNkZWZpbmUgVk9QX1JFTU9WRShEVlAs
IFZQLCBOKQkgICAoKERWUCktPnZfb3AtPnZvcF9yZW1vdmUpKERWUCwgVlAsIE4pCisjZGVmaW5l
IFZPUF9SRU5BTUUoRFZQMSwgVlAxLCBOMSwgRFZQMiwgVlAyLCBOMikgXAorCQkJICAgKChEVlAx
KS0+dl9vcC0+dm9wX3JlbmFtZSkoRFZQMSwgVlAxLCBOMSwgRFZQMiwgVlAyLCBOMikKKyNkZWZp
bmUgVk9QX01LRElSKERWUCwgTiwgTSkJICAgKChEVlApLT52X29wLT52b3BfbWtkaXIpKERWUCwg
TiwgTSkKKyNkZWZpbmUgVk9QX1JNRElSKERWUCwgVlAsIE4pCSAgICgoRFZQKS0+dl9vcC0+dm9w
X3JtZGlyKShEVlAsIFZQLCBOKQorI2RlZmluZSBWT1BfR0VUQVRUUihWUCwgVkFQKQkgICAoKFZQ
KS0+dl9vcC0+dm9wX2dldGF0dHIpKFZQLCBWQVApCisjZGVmaW5lIFZPUF9TRVRBVFRSKFZQLCBW
QVApCSAgICgoVlApLT52X29wLT52b3Bfc2V0YXR0cikoVlAsIFZBUCkKKyNkZWZpbmUgVk9QX0lO
QUNUSVZFKFZQKQkgICAoKFZQKS0+dl9vcC0+dm9wX2luYWN0aXZlKShWUCkKKyNkZWZpbmUgVk9Q
X1RSVU5DQVRFKFZQLCBOKQkgICAoKFZQKS0+dl9vcC0+dm9wX3RydW5jYXRlKShWUCwgTikKKyNk
ZWZpbmUgVk9QX0xJTksoRFZQLCBTVlAsIE4pIAkgICAoKERWUCktPnZfb3AtPnZvcF9saW5rKShE
VlAsIFNWUCwgTikKKyNkZWZpbmUgVk9QX0ZBTExPQ0FURShWUCwgTSwgT0ZGLCBMRU4pICgoVlAp
LT52X29wLT52b3BfZmFsbG9jYXRlKShWUCwgTSwgT0ZGLCBMRU4pCisjZGVmaW5lIFZPUF9SRUFE
TElOSyhWUCwgVSkgICAgICAgICgoVlApLT52X29wLT52b3BfcmVhZGxpbmspKFZQLCBVKQorI2Rl
ZmluZSBWT1BfU1lNTElOSyhEVlAsIE9QLCBOUCkgICAoKERWUCktPnZfb3AtPnZvcF9zeW1saW5r
KShEVlAsIE9QLCBOUCkKKworaW50CSB2b3BfbnVsbG9wKHZvaWQpOworaW50CSB2b3BfZWludmFs
KHZvaWQpOworaW50CSB2b3BfZXBlcm0odm9pZCk7CitpbnQJIHZvcF9lcm9mcyh2b2lkKTsKK3N0
cnVjdCB2bm9kZSAqdm5fbG9va3VwKHN0cnVjdCBtb3VudCAqLCB1aW50NjRfdCk7Cit2b2lkCSB2
bl9sb2NrKHN0cnVjdCB2bm9kZSAqKTsKK3ZvaWQJIHZuX3VubG9jayhzdHJ1Y3Qgdm5vZGUgKik7
CitpbnQJIHZuX3N0YXQoc3RydWN0IHZub2RlICosIHN0cnVjdCBzdGF0ICopOworaW50CSB2bl9z
ZXR0aW1lcyhzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHRpbWVzcGVjWzJdKTsKK2ludAkgdm5fc2V0
bW9kZShzdHJ1Y3Qgdm5vZGUgKiwgbW9kZV90IG1vZGUpOworaW50CSB2bl9hY2Nlc3Moc3RydWN0
IHZub2RlICosIGludCk7CitpbnQJIHZnZXQoc3RydWN0IG1vdW50ICosIHVpbnQ2NF90IGlubywg
c3RydWN0IHZub2RlICoqdnBwKTsKK3ZvaWQJIHZwdXQoc3RydWN0IHZub2RlICopOwordm9pZAkg
dnJlZihzdHJ1Y3Qgdm5vZGUgKik7Cit2b2lkCSB2cmVsZShzdHJ1Y3Qgdm5vZGUgKik7Cit2b2lk
CSB2Zmx1c2goc3RydWN0IG1vdW50ICopOwordm9pZCB2bl9hZGRfbmFtZShzdHJ1Y3Qgdm5vZGUg
Kiwgc3RydWN0IGRlbnRyeSAqKTsKK3ZvaWQgdm5fZGVsX25hbWUoc3RydWN0IHZub2RlICosIHN0
cnVjdCBkZW50cnkgKik7CisKK2V4dGVybiBlbnVtIHZ0eXBlIGlmdG92dF90YWJbXTsKK2V4dGVy
biBpbnQgdnR0b2lmX3RhYltdOworI2RlZmluZSBJRlRPVlQobW9kZSkgICAgKGlmdG92dF90YWJb
KChtb2RlKSAmIFNfSUZNVCkgPj4gMTJdKQorI2RlZmluZSBWVFRPSUYoaW5keCkJKHZ0dG9pZl90
YWJbKGludCkoaW5keCldKQorI2RlZmluZSBNQUtFSU1PREUoaW5keCwgbW9kZSkgICAoaW50KShW
VFRPSUYoaW5keCkgfCAobW9kZSkpCisKKyNkZWZpbmUgVkFUVFJfTlVMTCh2cCkgKCoodnApID0g
KHZhdHRyX3Qpe30pCisKK3N0YXRpYyBpbmxpbmUgdm9pZCB2bm9kZV9wYWdlcl9zZXRzaXplKHN0
cnVjdCB2bm9kZSAqdnAsIG9mZl90IHNpemUpCit7CisJdnAtPnZfc2l6ZSA9IHNpemU7Cit9CisK
K19fRU5EX0RFQ0xTCisKKyNlbmRpZgorCisjZW5kaWYgLyogIV9TWVNfVk5PREVfSF8gKi8KZGlm
ZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2xvb2t1cC5jIGIvbGliL3Zmc2NvcmUvbG9va3VwLmMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLmFkMDNmZTI1Ci0tLSAvZGV2L251bGwK
KysrIGIvbGliL3Zmc2NvcmUvbG9va3VwLmMKQEAgLTAsMCArMSwzNzUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKGMpIDIwMDUtMjAwNywgS29oc3VrZSBPaHRhbmkKKyAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBhdXRob3Igbm9yIHRo
ZSBuYW1lcyBvZiBhbnkgY28tY29udHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKKyAqICAg
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAq
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlIDx1bmlzdGQu
aD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPHN0
ZGxpYi5oPgorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorCisjaW5jbHVkZSA8b3N2L2RlbnRyeS5o
PgorI2luY2x1ZGUgPG9zdi92bm9kZS5oPgorI2luY2x1ZGUgInZmcy5oIgorCitzdGF0aWMgc3Np
emVfdAorcmVhZF9saW5rKHN0cnVjdCB2bm9kZSAqdnAsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6
LCBzc2l6ZV90ICpzeikKK3sKKyAgICBzdHJ1Y3QgaW92ZWMgaW92ID0ge2J1ZiwgYnVmc3p9Owor
ICAgIHN0cnVjdCB1aW8gICB1aW8gPSB7JmlvdiwgMSwgMCwgKHNzaXplX3QpIGJ1ZnN6LCBVSU9f
UkVBRH07CisgICAgaW50IHJjOworCisgICAgKnN6ID0gMDsKKyAgICB2bl9sb2NrKHZwKTsKKyAg
ICByYyAgPSBWT1BfUkVBRExJTksodnAsICZ1aW8pOworICAgIHZuX3VubG9jayh2cCk7CisKKyAg
ICBpZiAocmMgIT0gMCkgeworICAgICAgICByZXR1cm4gKHJjKTsKKyAgICB9CisKKyAgICAqc3og
PSBidWZzeiAtIHVpby51aW9fcmVzaWQ7CisgICAgcmV0dXJuICgwKTsKK30KKworaW50CituYW1l
aV9mb2xsb3dfbGluayhzdHJ1Y3QgZGVudHJ5ICpkcCwgY2hhciAqbm9kZSwgY2hhciAqbmFtZSwg
Y2hhciAqZnAsIHNpemVfdCBtb3VudHBvaW50X2xlbikKK3sKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
Y2hhciBbXT4gbGluayAobmV3IGNoYXJbUEFUSF9NQVhdKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
Y2hhciBbXT4gdCAobmV3IGNoYXJbUEFUSF9NQVhdKTsKKyAgICBjaGFyICAgICpscDsKKyAgICBp
bnQgICAgIGVycm9yOworICAgIHNzaXplX3Qgc3o7CisgICAgY2hhciAgICAqcDsKKyAgICBpbnQg
ICAgIGM7CisKKyAgICBscCAgICA9IGxpbmsuZ2V0KCk7CisgICAgZXJyb3IgPSByZWFkX2xpbmso
ZHAtPmRfdm5vZGUsIGxwLCBQQVRIX01BWCwgJnN6KTsKKyAgICBpZiAoZXJyb3IgIT0gMCkgewor
ICAgICAgICByZXR1cm4gKGVycm9yKTsKKyAgICB9CisgICAgbHBbc3pdID0gMDsKKworICAgIHAg
PSBmcCArIG1vdW50cG9pbnRfbGVuICsgc3RybGVuKG5vZGUpOworICAgIGMgPSBzdHJsZW4obm9k
ZSkgLSBzdHJsZW4obmFtZSkgLSAxOworICAgIG5vZGVbY10gPSAwOworCisgICAgaWYgKGxwWzBd
ID09ICcvJykgeworICAgICAgICBzdHJsY2F0KGxwLCBwLCBQQVRIX01BWCk7CisgICAgICAgIHN0
cmxjcHkoZnAsIGxwLCBQQVRIX01BWCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc3RybGNweSh0
LmdldCgpLCBwLCBQQVRIX01BWCk7CisgICAgICAgIHN0cmxjcHkobm9kZSwgZnAsIG1vdW50cG9p
bnRfbGVuICsgYyArIDEpOworICAgICAgICBwYXRoX2NvbnYobm9kZSwgbHAsIGZwKTsKKyAgICAg
ICAgc3RybGNhdChmcCwgdC5nZXQoKSwgUEFUSF9NQVgpOworICAgIH0KKyAgICBub2RlWzBdID0g
MDsKKyAgICBuYW1lWzBdID0gMDsKKyAgICByZXR1cm4gKDApOworfQorLyoKKyAqIENvbnZlcnQg
YSBwYXRobmFtZSBpbnRvIGEgcG9pbnRlciB0byBhIGRlbnRyeQorICoKKyAqIEBwYXRoOiBmdWxs
IHBhdGggbmFtZS4KKyAqIEBkcHA6ICBkZW50cnkgdG8gYmUgcmV0dXJuZWQuCisgKi8KK2ludAor
bmFtZWkoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IGRlbnRyeSAqKmRwcCkKK3sKKyAgICBjaGFy
ICpwOworICAgIGNoYXIgbm9kZVtQQVRIX01BWF07CisgICAgY2hhciBuYW1lW1BBVEhfTUFYXTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8Y2hhciBbXT4gZnAgKG5ldyBjaGFyIFtQQVRIX01BWF0pOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxjaGFyIFtdPiB0IChuZXcgY2hhciBbUEFUSF9NQVhdKTsKKyAg
ICBzdHJ1Y3QgbW91bnQgKm1wOworICAgIHN0cnVjdCBkZW50cnkgKmRwLCAqZGRwOworICAgIHN0
cnVjdCB2bm9kZSAqZHZwLCAqdnA7CisgICAgaW50IGVycm9yLCBpOworICAgIGludCBsaW5rc19m
b2xsb3dlZDsKKyAgICBib29sIG5lZWRfY29udGludWU7CisKKyAgICBEUFJJTlRGKFZGU0RCX1ZO
T0RFLCAoIm5hbWVpOiBwYXRoPSVzXG4iLCBwYXRoKSk7CisKKyAgICBsaW5rc19mb2xsb3dlZCA9
IDA7CisgICAgc3RybGNweShmcC5nZXQoKSwgcGF0aCwgUEFUSF9NQVgpOworCisgICAgZG8gewor
ICAgICAgICBuZWVkX2NvbnRpbnVlID0gZmFsc2U7CisgICAgICAgIC8qCisgICAgICAgICAqIENv
bnZlcnQgYSBmdWxsIHBhdGggbmFtZSB0byBpdHMgbW91bnQgcG9pbnQgYW5kCisgICAgICAgICAq
IHRoZSBsb2NhbCBub2RlIGluIHRoZSBmaWxlIHN5c3RlbS4KKyAgICAgICAgICovCisgICAgICAg
IGlmICh2ZnNfZmluZHJvb3QoZnAuZ2V0KCksICZtcCwgJnApKSB7CisgICAgICAgICAgICByZXR1
cm4gRU5PVERJUjsKKyAgICAgICAgfQorICAgICAgICBpbnQgbW91bnRwb2ludF9sZW4gPSBwIC0g
ZnAuZ2V0KCkgLSAxOworICAgICAgICBzdHJsY3B5KG5vZGUsICIvIiwgc2l6ZW9mKG5vZGUpKTsK
KyAgICAgICAgc3RybGNhdChub2RlLCBwLCBzaXplb2Yobm9kZSkpOworICAgICAgICBkcCA9IGRl
bnRyeV9sb29rdXAobXAsIG5vZGUpOworICAgICAgICBpZiAoZHApIHsKKyAgICAgICAgICAgIC8q
IHZub2RlIGlzIGFscmVhZHkgYWN0aXZlLiAqLworICAgICAgICAgICAgKmRwcCA9IGRwOworICAg
ICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgLyoKKyAgICAgICAgICogRmlu
ZCB0YXJnZXQgdm5vZGUsIHN0YXJ0ZWQgZnJvbSByb290IGRpcmVjdG9yeS4KKyAgICAgICAgICog
VGhpcyBpcyBkb25lIHRvIGF0dGFjaCB0aGUgZnMgc3BlY2lmaWMgZGF0YSB0bworICAgICAgICAg
KiB0aGUgdGFyZ2V0IHZub2RlLgorICAgICAgICAgKi8KKyAgICAgICAgZGRwID0gbXAtPm1fcm9v
dDsKKyAgICAgICAgaWYgKCFkZHApIHsKKyAgICAgICAgICAgIHN5c19wYW5pYygiVkZTOiBubyBy
b290Iik7CisgICAgICAgIH0KKyAgICAgICAgZHJlZihkZHApOworCisgICAgICAgIG5vZGVbMF0g
PSAnXDAnOworCisgICAgICAgIHdoaWxlICgqcCAhPSAnXDAnKSB7CisgICAgICAgICAgICAvKgor
ICAgICAgICAgICAgICogR2V0IGxvd2VyIGRpcmVjdG9yeS9maWxlIG5hbWUuCisgICAgICAgICAg
ICAgKi8KKyAgICAgICAgICAgIHdoaWxlICgqcCA9PSAnLycpIHsKKyAgICAgICAgICAgICAgICBw
Kys7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICgqcCA9PSAnXDAnKSB7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZvciAoaSA9
IDA7IGkgPCBQQVRIX01BWDsgaSsrKSB7CisgICAgICAgICAgICAgICAgaWYgKCpwID09ICdcMCcg
fHwgKnAgPT0gJy8nKSB7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBuYW1lW2ldID0gKnArKzsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIG5hbWVbaV0gPSAnXDAnOworCisgICAgICAgICAgICAvKgorICAgICAgICAgICAg
ICogR2V0IGEgdm5vZGUgZm9yIHRoZSB0YXJnZXQuCisgICAgICAgICAgICAgKi8KKyAgICAgICAg
ICAgIHN0cmxjYXQobm9kZSwgIi8iLCBzaXplb2Yobm9kZSkpOworICAgICAgICAgICAgc3RybGNh
dChub2RlLCBuYW1lLCBzaXplb2Yobm9kZSkpOworICAgICAgICAgICAgZHZwID0gZGRwLT5kX3Zu
b2RlOworICAgICAgICAgICAgdm5fbG9jayhkdnApOworICAgICAgICAgICAgZHAgPSBkZW50cnlf
bG9va3VwKG1wLCBub2RlKTsKKyAgICAgICAgICAgIGlmIChkcCA9PSBudWxscHRyKSB7CisgICAg
ICAgICAgICAgICAgLyogRmluZCBhIHZub2RlIGluIHRoaXMgZGlyZWN0b3J5LiAqLworICAgICAg
ICAgICAgICAgIGVycm9yID0gVk9QX0xPT0tVUChkdnAsIG5hbWUsICZ2cCk7CisgICAgICAgICAg
ICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICAgICAgICAgIHZuX3VubG9jayhkdnApOwor
ICAgICAgICAgICAgICAgICAgICBkcmVsZShkZHApOworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZHAgPSBkZW50
cnlfYWxsb2MoZGRwLCB2cCwgbm9kZSk7CisgICAgICAgICAgICAgICAgdnB1dCh2cCk7CisKKyAg
ICAgICAgICAgICAgICBpZiAoIWRwKSB7CisgICAgICAgICAgICAgICAgICAgIHZuX3VubG9jayhk
dnApOworICAgICAgICAgICAgICAgICAgICBkcmVsZShkZHApOworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gRU5PTUVNOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIHZuX3VubG9jayhkdnApOworICAgICAgICAgICAgZHJlbGUoZGRwKTsKKyAgICAgICAg
ICAgIGRkcCA9IGRwOworCisgICAgICAgICAgICBpZiAoZHAtPmRfdm5vZGUtPnZfdHlwZSA9PSBW
TE5LKSB7CisgICAgICAgICAgICAgICAgZXJyb3IgPSBuYW1laV9mb2xsb3dfbGluayhkcCwgbm9k
ZSwgbmFtZSwgZnAuZ2V0KCksIG1vdW50cG9pbnRfbGVuKTsKKyAgICAgICAgICAgICAgICBpZiAo
ZXJyb3IpIHsKKyAgICAgICAgICAgICAgICAgICAgZHJlbGUoZHApOworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gKGVycm9yKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICBkcmVsZShkcCk7CisKKyAgICAgICAgICAgICAgICBwICAgICAgID0gZnAuZ2V0KCk7CisgICAg
ICAgICAgICAgICAgZHAgICAgICA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAgZGRwICAgICA9
IG51bGxwdHI7CisgICAgICAgICAgICAgICAgdnAgICAgICA9IG51bGxwdHI7CisgICAgICAgICAg
ICAgICAgZHZwICAgICA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAgbmFtZVswXSA9IDA7Cisg
ICAgICAgICAgICAgICAgbm9kZVswXSA9IDA7CisKKyAgICAgICAgICAgICAgICBpZiAoKytsaW5r
c19mb2xsb3dlZCA+PSBNQVhTWU1MSU5LUykgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
KEVMT09QKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbmVlZF9jb250aW51
ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGlmICgqcCA9PSAnLycgJiYgZGRwLT5kX3Zub2RlLT52X3R5cGUgIT0gVkRJUikgewor
ICAgICAgICAgICAgICAgIGRyZWxlKGRkcCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEVOT1RE
SVI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9IHdoaWxlIChuZWVkX2NvbnRpbnVl
ID09IHRydWUpOworCisgICAgKmRwcCA9IGRwOworICAgIHJldHVybiAwOworfQorCisvKgorICog
Q29udmVydCBsYXN0IGNvbXBvbmVudCBpbiB0aGUgcGF0aCB0byBwb2ludGVyIHRvIGRlbnRyeQor
ICoKKyAqIEBwYXRoOiBmdWxsIHBhdGggbmFtZQorICogQGRkcCA6IHBvaW50ZXIgdG8gZGVudHJ5
IG9mIHBhcmVudAorICogQGRwcCA6IGRlbnRyeSB0byBiZSByZXR1cm5lZAorICovCitpbnQKK25h
bWVpX2xhc3Rfbm9mb2xsb3coY2hhciAqcGF0aCwgc3RydWN0IGRlbnRyeSAqZGRwLCBzdHJ1Y3Qg
ZGVudHJ5ICoqZHBwKQoreworICAgIGNoYXIgICAgICAgICAgKm5hbWU7CisgICAgaW50ICAgICAg
ICAgICBlcnJvcjsKKyAgICBzdHJ1Y3QgbW91bnQgICptcDsKKyAgICBjaGFyICAgICAgICAgICpw
OworICAgIHN0cnVjdCBkZW50cnkgKmRwOworICAgIHN0cnVjdCB2bm9kZSAgKmR2cDsKKyAgICBz
dHJ1Y3Qgdm5vZGUgICp2cDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Y2hhciBbXT4gbm9kZSAobmV3
IGNoYXJbUEFUSF9NQVhdKTsKKworICAgIGR2cCAgPSBudWxscHRyOworCisgICAgaWYgKHBhdGhb
MF0gIT0gJy8nKSB7CisgICAgICAgIHJldHVybiAoRU5PVERJUik7CisgICAgfQorCisgICAgbmFt
ZSA9IHN0cnJjaHIocGF0aCwgJy8nKTsKKyAgICBpZiAobmFtZSA9PSBudWxscHRyKSB7CisgICAg
ICAgIHJldHVybiAoRU5PRU5UKTsKKyAgICB9CisgICAgbmFtZSsrOworCisgICAgZXJyb3IgPSB2
ZnNfZmluZHJvb3QocGF0aCwgJm1wLCAmcCk7CisgICAgaWYgKGVycm9yICE9IDApIHsKKyAgICAg
ICAgcmV0dXJuIChFTk9URElSKTsKKyAgICB9CisKKyAgICBzdHJsY3B5KG5vZGUuZ2V0KCksICIv
IiwgUEFUSF9NQVgpOworICAgIHN0cmxjYXQobm9kZS5nZXQoKSwgcCwgUEFUSF9NQVgpOworCisg
ICAgLy8gV2Ugd2FudCB0byB0cmVhdCB0aGluZ3MgbGlrZSAvdG1wLyB0aGUgc2FtZSBhcyAvdG1w
LiBCZXN0IHdheSB0byBkbyB0aGF0CisgICAgLy8gaXMgdG8gaWdub3JlIHRoZSBsYXN0IGNoYXJh
Y3RlciwgZXhjZXB0IHdoZW4gd2UncmUgc3RhdGluZyB0aGUgcm9vdC4KKyAgICBhdXRvIGwgPSBz
dHJsZW4obm9kZS5nZXQoKSkgLSAxOworICAgIGlmIChsICYmIG5vZGUuZ2V0KClbbF0gPT0gJy8n
KSB7CisgICAgICAgIG5vZGUuZ2V0KClbbF0gPSAnXDAnOworICAgIH0KKworICAgIGR2cCA9IGRk
cC0+ZF92bm9kZTsKKyAgICB2bl9sb2NrKGR2cCk7CisgICAgZHAgPSBkZW50cnlfbG9va3VwKG1w
LCBub2RlLmdldCgpKTsKKyAgICBpZiAoZHAgPT0gbnVsbHB0cikgeworICAgICAgICBlcnJvciA9
IFZPUF9MT09LVVAoZHZwLCBuYW1lLCAmdnApOworICAgICAgICBpZiAoZXJyb3IgIT0gMCkgewor
ICAgICAgICAgICAgZ290byBvdXQ7CisgICAgICAgIH0KKworICAgICAgICBkcCA9IGRlbnRyeV9h
bGxvYyhkZHAsIHZwLCBub2RlLmdldCgpKTsKKyAgICAgICAgdnB1dCh2cCk7CisKKyAgICAgICAg
aWYgKGRwID09IG51bGxwdHIpIHsKKyAgICAgICAgICAgIGVycm9yID0gRU5PTUVNOworICAgICAg
ICAgICAgZ290byBvdXQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAqZHBwICA9IGRwOworICAg
IGVycm9yID0gMDsKK291dDoKKyAgICBpZiAoZHZwICE9IG51bGxwdHIpIHsKKyAgICAgICAgdm5f
dW5sb2NrKGR2cCk7CisgICAgfQorICAgIHJldHVybiAoZXJyb3IpOworfQorCisvKgorICogU2Vh
cmNoIGEgcGF0aG5hbWUuCisgKiBUaGlzIGlzIGEgdmVyeSBjZW50cmFsIGJ1dCBub3Qgc28gY29t
cGxpY2F0ZWQgcm91dGluZS4gOy1QCisgKgorICogQHBhdGg6IGZ1bGwgcGF0aC4KKyAqIEBkcHA6
ICBwb2ludGVyIHRvIGRlbnRyeSBmb3IgZGlyZWN0b3J5LgorICogQG5hbWU6IGlmIG5vbi1udWxs
LCBwb2ludGVyIHRvIGZpbGUgbmFtZSBpbiBwYXRoLgorICoKKyAqIFRoaXMgcm91dGluZSByZXR1
cm5zIGEgbG9ja2VkIGRpcmVjdG9yeSB2bm9kZSBhbmQgZmlsZSBuYW1lLgorICovCitpbnQKK2xv
b2t1cChjaGFyICpwYXRoLCBzdHJ1Y3QgZGVudHJ5ICoqZHBwLCBjaGFyICoqbmFtZSkKK3sKKyAg
ICBjaGFyIGJ1ZltQQVRIX01BWF07CisgICAgY2hhciByb290W10gPSAiLyI7CisgICAgY2hhciAq
ZmlsZSwgKmRpcjsKKyAgICBzdHJ1Y3QgZGVudHJ5ICpkcDsKKyAgICBpbnQgZXJyb3I7CisKKyAg
ICBEUFJJTlRGKFZGU0RCX1ZOT0RFLCAoImxvb2t1cDogcGF0aD0lc1xuIiwgcGF0aCkpOworCisg
ICAgLyoKKyAgICAgKiBHZXQgdGhlIHBhdGggZm9yIGRpcmVjdG9yeS4KKyAgICAgKi8KKyAgICBz
dHJsY3B5KGJ1ZiwgcGF0aCwgc2l6ZW9mKGJ1ZikpOworICAgIGZpbGUgPSBzdHJyY2hyKGJ1Ziwg
Jy8nKTsKKyAgICBpZiAoIWJ1ZlswXSkgeworICAgICAgICByZXR1cm4gRU5PVERJUjsKKyAgICB9
CisgICAgaWYgKGZpbGUgPT0gYnVmKSB7CisgICAgICAgIGRpciA9IHJvb3Q7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgKmZpbGUgPSAnXDAnOworICAgICAgICBkaXIgPSBidWY7CisgICAgfQorICAg
IC8qCisgICAgICogR2V0IHRoZSB2bm9kZSBmb3IgZGlyZWN0b3J5CisgICAgICovCisgICAgaWYg
KChlcnJvciA9IG5hbWVpKGRpciwgJmRwKSkgIT0gMCkgeworICAgICAgICByZXR1cm4gZXJyb3I7
CisgICAgfQorICAgIGlmIChkcC0+ZF92bm9kZS0+dl90eXBlICE9IFZESVIpIHsKKyAgICAgICAg
ZHJlbGUoZHApOworICAgICAgICByZXR1cm4gRU5PVERJUjsKKyAgICB9CisKKyAgICAqZHBwID0g
ZHA7CisKKyAgICBpZiAobmFtZSkgeworICAgICAgICAvKgorICAgICAgICAgKiBHZXQgdGhlIGZp
bGUgbmFtZQorICAgICAgICAgKi8KKyAgICAgICAgKm5hbWUgPSBzdHJyY2hyKHBhdGgsICcvJykg
KyAxOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworLyoKKyAqIHZub2RlX2luaXQoKSBpcyBj
YWxsZWQgb25jZSAoZnJvbSB2ZnNfaW5pdCkKKyAqIGluIGluaXRpYWxpemF0aW9uLgorICovCit2
b2lkCitsb29rdXBfaW5pdCh2b2lkKQoreworICAgIGRlbnRyeV9pbml0KCk7Cit9CmRpZmYgLS1n
aXQgYS9saWIvdmZzY29yZS9tYWluLmMgYi9saWIvdmZzY29yZS9tYWluLmMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLmNkMTQxMTE3Ci0tLSAvZGV2L251bGwKKysrIGIvbGli
L3Zmc2NvcmUvbWFpbi5jCkBAIC0wLDAgKzEsMjQxMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMyBDbG91ZGl1cyBTeXN0ZW1zLCBMdGQuCisgKgorICogVGhpcyB3b3JrIGlzIG9wZW4gc291
cmNlIHNvZnR3YXJlLCBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlCisgKiBCU0QgbGlj
ZW5zZSBhcyBkZXNjcmliZWQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgdG9wLWxldmVsIGRp
cmVjdG9yeS4KKyAqLworCisvKgorICogQ29weXJpZ2h0IChjKSAyMDA1LTIwMDcsIEtvaHN1a2Ug
T2h0YW5pCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0
aGUgbmFtZSBvZiB0aGUgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgYW55IGNvLWNvbnRyaWJ1dG9y
cworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCisgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBB
VVRIT1IgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjaW5jbHVkZSA8c3lzL3N0YXR2ZnMu
aD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPHN5cy90aW1lLmg+CisjaW5jbHVk
ZSA8c3lzL3NlbmRmaWxlLmg+CisKKyNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDx1bmlz
dGQuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUg
PHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5j
bHVkZSA8c2lnbmFsLmg+CisjZGVmaW5lIG9wZW4gX19vcGVuX3ZhcmlhZGljCisjZGVmaW5lIGZj
bnRsIF9fZmNudGxfdmFyaWFkaWMKKyNpbmNsdWRlIDxmY250bC5oPgorI3VuZGVmIG9wZW4KKyN1
bmRlZiBmY250bAorCisjaW5jbHVkZSA8b3N2L3ByZXguaD4KKyNpbmNsdWRlIDxvc3Yvdm5vZGUu
aD4KKyNpbmNsdWRlIDxvc3Yvc3R1YmJpbmcuaGg+CisjaW5jbHVkZSA8b3N2L2lvY3RsLmg+Cisj
aW5jbHVkZSA8b3N2L3RyYWNlLmhoPgorI2luY2x1ZGUgPG9zdi9ydW4uaGg+CisjaW5jbHVkZSA8
ZHJpdmVycy9jb25zb2xlLmhoPgorCisjaW5jbHVkZSAidmZzLmgiCisKKyNpbmNsdWRlICJsaWJj
L2ludGVybmFsL2xpYmMuaCIKKworI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDx1bm9y
ZGVyZWRfbWFwPgorCisjaW5jbHVkZSA8c3lzL2ZpbGUuaD4KKworI2luY2x1ZGUgImZzL2ZzLmho
IgorI2luY2x1ZGUgImxpYmMvbGliYy5oaCIKKworI2luY2x1ZGUgPG1udGVudC5oPgorI2luY2x1
ZGUgPHN5cy9tbWFuLmg+CisKKyNpbmNsdWRlIDxvc3YvY2xvY2suaGg+CisjaW5jbHVkZSA8YXBp
L3V0aW1lLmg+CisjaW5jbHVkZSA8Y2hyb25vPgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOworCisK
KyNpZmRlZiBERUJVR19WRlMKK2ludAl2ZnNfZGVidWcgPSBWRlNEQl9GTEFHUzsKKyNlbmRpZgor
CitzdGQ6OmF0b21pYzxtb2RlX3Q+IGdsb2JhbF91bWFza3tTX0lXR1JQIHwgU19JV09USH07CisK
K3N0YXRpYyBpbmxpbmUgbW9kZV90IGFwcGx5X3VtYXNrKG1vZGVfdCBtb2RlKQoreworICAgIHJl
dHVybiBtb2RlICYgfmdsb2JhbF91bWFzay5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQp
OworfQorCitUUkFDRVBPSU5UKHRyYWNlX3Zmc19vcGVuLCAiXCIlc1wiIDB4JXggMCUwbyIsIGNv
bnN0IGNoYXIqLCBpbnQsIG1vZGVfdCk7CitUUkFDRVBPSU5UKHRyYWNlX3Zmc19vcGVuX3JldCwg
IiVkIiwgaW50KTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX29wZW5fZXJyLCAiJWQiLCBpbnQpOwor
CitzdHJ1Y3QgdGFzayAqbWFpbl90YXNrOwkvKiB3ZSBvbmx5IGhhdmUgYSBzaW5nbGUgcHJvY2Vz
cyAqLworCitleHRlcm4gIkMiCitpbnQgb3Blbihjb25zdCBjaGFyICpwYXRobmFtZSwgaW50IGZs
YWdzLCAuLi4pCit7CisgICAgbW9kZV90IG1vZGUgPSAwOworICAgIGlmIChmbGFncyAmIE9fQ1JF
QVQpIHsKKyAgICAgICAgdmFfbGlzdCBhcDsKKyAgICAgICAgdmFfc3RhcnQoYXAsIGZsYWdzKTsK
KyAgICAgICAgbW9kZSA9IGFwcGx5X3VtYXNrKHZhX2FyZyhhcCwgbW9kZV90KSk7CisgICAgICAg
IHZhX2VuZChhcCk7CisgICAgfQorCisgICAgdHJhY2VfdmZzX29wZW4ocGF0aG5hbWUsIGZsYWdz
LCBtb2RlKTsKKworICAgIHN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOworICAgIGNoYXIgcGF0
aFtQQVRIX01BWF07CisgICAgc3RydWN0IGZpbGUgKmZwOworICAgIGludCBmZCwgZXJyb3I7Cisg
ICAgaW50IGFjYzsKKworICAgIGFjYyA9IDA7CisgICAgc3dpdGNoIChmbGFncyAmIE9fQUNDTU9E
RSkgeworICAgIGNhc2UgT19SRE9OTFk6CisgICAgICAgIGFjYyA9IFZSRUFEOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIE9fV1JPTkxZOgorICAgICAgICBhY2MgPSBWV1JJVEU7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgT19SRFdSOgorICAgICAgICBhY2MgPSBWUkVBRCB8IFZXUklURTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5h
bWUsIGFjYywgcGF0aCk7CisgICAgaWYgKGVycm9yKQorICAgICAgICBnb3RvIG91dF9lcnJubzsK
KworICAgIGVycm9yID0gc3lzX29wZW4ocGF0aCwgZmxhZ3MsIG1vZGUsICZmcCk7CisgICAgaWYg
KGVycm9yKQorICAgICAgICBnb3RvIG91dF9lcnJubzsKKworICAgIGVycm9yID0gZmRhbGxvYyhm
cCwgJmZkKTsKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIGdvdG8gb3V0X2ZwdXQ7CisgICAgZmRy
b3AoZnApOworICAgIHRyYWNlX3Zmc19vcGVuX3JldChmZCk7CisgICAgcmV0dXJuIGZkOworCisg
ICAgb3V0X2ZwdXQ6CisgICAgZmRyb3AoZnApOworICAgIG91dF9lcnJubzoKKyAgICBlcnJubyA9
IGVycm9yOworICAgIHRyYWNlX3Zmc19vcGVuX2VycihlcnJvcik7CisgICAgcmV0dXJuIC0xOwor
fQorCitMRlM2NChvcGVuKTsKKworaW50IG9wZW5hdChpbnQgZGlyZmQsIGNvbnN0IGNoYXIgKnBh
dGhuYW1lLCBpbnQgZmxhZ3MsIC4uLikKK3sKKyAgICBtb2RlX3QgbW9kZSA9IDA7CisgICAgaWYg
KGZsYWdzICYgT19DUkVBVCkgeworICAgICAgICB2YV9saXN0IGFwOworICAgICAgICB2YV9zdGFy
dChhcCwgZmxhZ3MpOworICAgICAgICBtb2RlID0gYXBwbHlfdW1hc2sodmFfYXJnKGFwLCBtb2Rl
X3QpKTsKKyAgICAgICAgdmFfZW5kKGFwKTsKKyAgICB9CisKKyAgICBpZiAocGF0aG5hbWVbMF0g
PT0gJy8nIHx8IGRpcmZkID09IEFUX0ZEQ1dEKSB7CisgICAgICAgIHJldHVybiBvcGVuKHBhdGhu
YW1lLCBmbGFncywgbW9kZSk7CisgICAgfQorCisgICAgc3RydWN0IGZpbGUgKmZwOworICAgIGlu
dCBlcnJvciA9IGZnZXQoZGlyZmQsICZmcCk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIGVy
cm5vID0gZXJyb3I7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBzdHJ1Y3Qgdm5v
ZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOworICAgIHZuX2xvY2sodnApOworCisgICAg
c3RkOjp1bmlxdWVfcHRyPGNoYXIgW10+IHVwIChuZXcgY2hhcltQQVRIX01BWF0pOworICAgIGNo
YXIgKnAgPSB1cC5nZXQoKTsKKworICAgIC8qIGJ1aWxkIGFic29sdXRlIHBhdGggKi8KKyAgICBz
dHJsY3B5KHAsIGZwLT5mX2RlbnRyeS0+ZF9tb3VudC0+bV9wYXRoLCBQQVRIX01BWCk7CisgICAg
c3RybGNhdChwLCBmcC0+Zl9kZW50cnktPmRfcGF0aCwgUEFUSF9NQVgpOworICAgIHN0cmxjYXQo
cCwgIi8iLCBQQVRIX01BWCk7CisgICAgc3RybGNhdChwLCBwYXRobmFtZSwgUEFUSF9NQVgpOwor
CisgICAgZXJyb3IgPSBvcGVuKHAsIGZsYWdzLCBtb2RlKTsKKworICAgIHZuX3VubG9jayh2cCk7
CisgICAgZmRyb3AoZnApOworCisgICAgcmV0dXJuIGVycm9yOworfQorTEZTNjQob3BlbmF0KTsK
KworLy8gb3BlbigpIGhhcyBhbiBvcHRpb25hbCB0aGlyZCBhcmd1bWVudCwgIm1vZGUiLCB3aGlj
aCBpcyBvbmx5IG5lZWRlZCBpbgorLy8gc29tZSBjYXNlcyAod2hlbiB0aGUgT19DUkVBVCBtb2Rl
IGlzIHVzZWQpLiBBcyBhIHNhZmV0eSBmZWF0dXJlLCByZWNlbnQKKy8vIHZlcnNpb25zIG9mIEds
aWJjIGFkZCBhIGZlYXR1cmUgd2hlcmUgb3BlbigpIHdpdGggdHdvIGFyZ3VtZW50cyBpcyByZXBs
YWNlZAorLy8gYnkgYSBjYWxsIHRvIF9fb3Blbl8yKCksIHdoaWNoIHZlcmlmaWVzIGl0IGlzbid0
IGNhbGxlZCB3aXRoIE9fQ1JFQVRFLgorZXh0ZXJuICJDIiBpbnQgX19vcGVuXzIoY29uc3QgY2hh
ciAqcGF0aG5hbWUsIGludCBmbGFncykKK3sKKyAgICBhc3NlcnQoIShmbGFncyAmIE9fQ1JFQVQp
KTsKKyAgICByZXR1cm4gb3BlbihwYXRobmFtZSwgZmxhZ3MsIDApOworfQorCitleHRlcm4gIkMi
IGludCBfX29wZW42NF8yKGNvbnN0IGNoYXIgKmZpbGUsIGludCBmbGFncykKK3sKKyAgICBpZiAo
ZmxhZ3MgJiBPX0NSRUFUKSB7CisgICAgICAgIGVycm5vID0gRUlOVkFMOworICAgICAgICByZXR1
cm4gLTE7CisgICAgfQorCisgICAgcmV0dXJuIG9wZW42NChmaWxlLCBmbGFncyk7Cit9CisKK2lu
dCBjcmVhdChjb25zdCBjaGFyICpwYXRobmFtZSwgbW9kZV90IG1vZGUpCit7CisgICAgcmV0dXJu
IG9wZW4ocGF0aG5hbWUsIE9fQ1JFQVR8T19XUk9OTFl8T19UUlVOQywgbW9kZSk7Cit9CitMRlM2
NChjcmVhdCk7CisKK1RSQUNFUE9JTlQodHJhY2VfdmZzX2Nsb3NlLCAiJWQiLCBpbnQpOworVFJB
Q0VQT0lOVCh0cmFjZV92ZnNfY2xvc2VfcmV0LCAiIik7CitUUkFDRVBPSU5UKHRyYWNlX3Zmc19j
bG9zZV9lcnIsICIlZCIsIGludCk7CisKK2ludCBjbG9zZShpbnQgZmQpCit7CisgICAgaW50IGVy
cm9yOworCisgICAgdHJhY2VfdmZzX2Nsb3NlKGZkKTsKKyAgICBlcnJvciA9IGZkY2xvc2UoZmQp
OworICAgIGlmIChlcnJvcikKKyAgICAgICAgZ290byBvdXRfZXJybm87CisKKyAgICB0cmFjZV92
ZnNfY2xvc2VfcmV0KCk7CisgICAgcmV0dXJuIDA7CisKKyAgICBvdXRfZXJybm86CisgICAgdHJh
Y2VfdmZzX2Nsb3NlX2VycihlcnJvcik7CisgICAgZXJybm8gPSBlcnJvcjsKKyAgICByZXR1cm4g
LTE7Cit9CisKK1RSQUNFUE9JTlQodHJhY2VfdmZzX21rbm9kLCAiXCIlc1wiIDAlMG8gMHgleCIs
IGNvbnN0IGNoYXIqLCBtb2RlX3QsIGRldl90KTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX21rbm9k
X3JldCwgIiIpOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbWtub2RfZXJyLCAiJWQiLCBpbnQpOwor
CisKK2V4dGVybiAiQyIKK2ludCBfX3hta25vZChpbnQgdmVyLCBjb25zdCBjaGFyICpwYXRobmFt
ZSwgbW9kZV90IG1vZGUsIGRldl90ICpkZXYpCit7CisgICAgYXNzZXJ0KHZlciA9PSAwKTsgLy8g
T24geDg2LTY0IExpbnV4LCBfTUtOT0RfVkVSX0xJTlVYIGlzIDAuCisgICAgc3RydWN0IHRhc2sg
KnQgPSBtYWluX3Rhc2s7CisgICAgY2hhciBwYXRoW1BBVEhfTUFYXTsKKyAgICBpbnQgZXJyb3I7
CisKKyAgICB0cmFjZV92ZnNfbWtub2QocGF0aG5hbWUsIG1vZGUsICpkZXYpOworICAgIGlmICgo
ZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5hbWUsIFZXUklURSwgcGF0aCkpICE9IDApCisgICAg
ICAgIGdvdG8gb3V0X2Vycm5vOworCisgICAgZXJyb3IgPSBzeXNfbWtub2QocGF0aCwgbW9kZSk7
CisgICAgaWYgKGVycm9yKQorICAgICAgICBnb3RvIG91dF9lcnJubzsKKworICAgIHRyYWNlX3Zm
c19ta25vZF9yZXQoKTsKKyAgICByZXR1cm4gMDsKKworICAgIG91dF9lcnJubzoKKyAgICB0cmFj
ZV92ZnNfbWtub2RfZXJyKGVycm9yKTsKKyAgICBlcnJubyA9IGVycm9yOworICAgIHJldHVybiAt
MTsKK30KKworaW50IG1rbm9kKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBtb2RlX3QgbW9kZSwgZGV2
X3QgZGV2KQoreworICAgIHJldHVybiBfX3hta25vZCgwLCBwYXRobmFtZSwgbW9kZSwgJmRldik7
Cit9CisKKworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbHNlZWssICIlZCAweCV4ICVkIiwgaW50LCBv
ZmZfdCwgaW50KTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX2xzZWVrX3JldCwgIjB4JXgiLCBvZmZf
dCk7CitUUkFDRVBPSU5UKHRyYWNlX3Zmc19sc2Vla19lcnIsICIlZCIsIGludCk7CisKK29mZl90
IGxzZWVrKGludCBmZCwgb2ZmX3Qgb2Zmc2V0LCBpbnQgd2hlbmNlKQoreworICAgIHN0cnVjdCBm
aWxlICpmcDsKKyAgICBvZmZfdCBvcmc7CisgICAgaW50IGVycm9yOworCisgICAgdHJhY2VfdmZz
X2xzZWVrKGZkLCBvZmZzZXQsIHdoZW5jZSk7CisgICAgZXJyb3IgPSBmZ2V0KGZkLCAmZnApOwor
ICAgIGlmIChlcnJvcikKKyAgICAgICAgZ290byBvdXRfZXJybm87CisKKyAgICBlcnJvciA9IHN5
c19sc2VlayhmcCwgb2Zmc2V0LCB3aGVuY2UsICZvcmcpOworICAgIGZkcm9wKGZwKTsKKworICAg
IGlmIChlcnJvcikKKyAgICAgICAgZ290byBvdXRfZXJybm87CisgICAgdHJhY2VfdmZzX2xzZWVr
X3JldChvcmcpOworICAgIHJldHVybiBvcmc7CisKKyAgICBvdXRfZXJybm86CisgICAgdHJhY2Vf
dmZzX2xzZWVrX2VycihlcnJvcik7CisgICAgZXJybm8gPSBlcnJvcjsKKyAgICByZXR1cm4gLTE7
Cit9CisKK0xGUzY0KGxzZWVrKTsKKworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfcHJlYWQsICIlZCAl
cCAweCV4IDB4JXgiLCBpbnQsIHZvaWQqLCBzaXplX3QsIG9mZl90KTsKK1RSQUNFUE9JTlQodHJh
Y2VfdmZzX3ByZWFkX3JldCwgIjB4JXgiLCBzc2l6ZV90KTsKK1RSQUNFUE9JTlQodHJhY2VfdmZz
X3ByZWFkX2VyciwgIiVkIiwgaW50KTsKKworLy8gSW4gQlNEJ3MgaW50ZXJuYWwgaW1wbGVtZW50
YXRpb24gb2YgcmVhZCgpIGFuZCB3cml0ZSgpIGNvZGUsIGZvciBleGFtcGxlCisvLyBzb3NlbmRf
Z2VuZXJpYygpLCBhIHBhcnRpYWwgcmVhZCBvciB3cml0ZSByZXR1cm5zIGJvdGggYW4gRVdPVUxE
QkxPQ0sgZXJyb3IKKy8vICphbmQqIGEgbm9uLXplcm8gbnVtYmVyIG9mIHdyaXR0ZW4gYnl0ZXMu
IEluIHRoYXQgY2FzZSwgd2UgbmVlZCB0byB6ZXJvIHRoZQorLy8gZXJyb3IsIHNvIHRoZSBzeXN0
ZW0gY2FsbCBhcHBlYXIgYSBzdWNjZXNzZnVsIHBhcnRpYWwgcmVhZC93cml0ZS4KKy8vIEluIEZy
ZWVCU0QsIGRvZmlsZXdyaXRlKCkgYW5kIGRvZmlsZXJlYWQoKSAoc3lzX2dlbmVyaWMuYykgZG8g
dGhpcyB0b28uCitzdGF0aWMgaW5saW5lIGJvb2wgaGFzX2Vycm9yKGludCBlcnJvciwgaW50IGJ5
dGVzKQoreworICAgIHJldHVybiBlcnJvciAmJiAoCisgICAgICAgICAgICAoYnl0ZXMgPT0gMCkg
fHwKKyAgICAgICAgICAgIChlcnJvciAhPSBFV09VTERCTE9DSyAmJiBlcnJvciAhPSBFSU5UUiAm
JiBlcnJvciAhPSBFUkVTVEFSVCkpOworfQorCisKK3NzaXplX3QgcHJlYWQoaW50IGZkLCB2b2lk
ICpidWYsIHNpemVfdCBjb3VudCwgb2ZmX3Qgb2Zmc2V0KQoreworICAgIHRyYWNlX3Zmc19wcmVh
ZChmZCwgYnVmLCBjb3VudCwgb2Zmc2V0KTsKKyAgICBzdHJ1Y3QgaW92ZWMgaW92ID0geworICAg
ICAgICAgICAgLmlvdl9iYXNlCT0gYnVmLAorICAgICAgICAgICAgLmlvdl9sZW4JPSBjb3VudCwK
KyAgICB9OworICAgIHN0cnVjdCBmaWxlICpmcDsKKyAgICBzaXplX3QgYnl0ZXM7CisgICAgaW50
IGVycm9yOworCisgICAgZXJyb3IgPSBmZ2V0KGZkLCAmZnApOworICAgIGlmIChlcnJvcikKKyAg
ICAgICAgZ290byBvdXRfZXJybm87CisKKyAgICBlcnJvciA9IHN5c19yZWFkKGZwLCAmaW92LCAx
LCBvZmZzZXQsICZieXRlcyk7CisgICAgZmRyb3AoZnApOworCisgICAgaWYgKGhhc19lcnJvcihl
cnJvciwgYnl0ZXMpKQorICAgICAgICBnb3RvIG91dF9lcnJubzsKKyAgICB0cmFjZV92ZnNfcHJl
YWRfcmV0KGJ5dGVzKTsKKyAgICByZXR1cm4gYnl0ZXM7CisKKyAgICBvdXRfZXJybm86CisgICAg
dHJhY2VfdmZzX3ByZWFkX2VycihlcnJvcik7CisgICAgZXJybm8gPSBlcnJvcjsKKyAgICByZXR1
cm4gLTE7Cit9CisKK0xGUzY0KHByZWFkKTsKKworc3NpemVfdCByZWFkKGludCBmZCwgdm9pZCAq
YnVmLCBzaXplX3QgY291bnQpCit7CisgICAgcmV0dXJuIHByZWFkKGZkLCBidWYsIGNvdW50LCAt
MSk7Cit9CisKK1RSQUNFUE9JTlQodHJhY2VfdmZzX3B3cml0ZSwgIiVkICVwIDB4JXggMHgleCIs
IGludCwgY29uc3Qgdm9pZCosIHNpemVfdCwgb2ZmX3QpOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNf
cHdyaXRlX3JldCwgIjB4JXgiLCBzc2l6ZV90KTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX3B3cml0
ZV9lcnIsICIlZCIsIGludCk7CisKK3NzaXplX3QgcHdyaXRlKGludCBmZCwgY29uc3Qgdm9pZCAq
YnVmLCBzaXplX3QgY291bnQsIG9mZl90IG9mZnNldCkKK3sKKyAgICB0cmFjZV92ZnNfcHdyaXRl
KGZkLCBidWYsIGNvdW50LCBvZmZzZXQpOworICAgIHN0cnVjdCBpb3ZlYyBpb3YgPSB7CisgICAg
ICAgICAgICAuaW92X2Jhc2UJPSAodm9pZCAqKWJ1ZiwKKyAgICAgICAgICAgIC5pb3ZfbGVuCT0g
Y291bnQsCisgICAgfTsKKyAgICBzdHJ1Y3QgZmlsZSAqZnA7CisgICAgc2l6ZV90IGJ5dGVzOwor
ICAgIGludCBlcnJvcjsKKworICAgIGVycm9yID0gZmdldChmZCwgJmZwKTsKKyAgICBpZiAoZXJy
b3IpCisgICAgICAgIGdvdG8gb3V0X2Vycm5vOworCisgICAgZXJyb3IgPSBzeXNfd3JpdGUoZnAs
ICZpb3YsIDEsIG9mZnNldCwgJmJ5dGVzKTsKKyAgICBmZHJvcChmcCk7CisKKyAgICBpZiAoaGFz
X2Vycm9yKGVycm9yLCBieXRlcykpCisgICAgICAgIGdvdG8gb3V0X2Vycm5vOworICAgIHRyYWNl
X3Zmc19wd3JpdGVfcmV0KGJ5dGVzKTsKKyAgICByZXR1cm4gYnl0ZXM7CisKKyAgICBvdXRfZXJy
bm86CisgICAgdHJhY2VfdmZzX3B3cml0ZV9lcnIoZXJyb3IpOworICAgIGVycm5vID0gZXJyb3I7
CisgICAgcmV0dXJuIC0xOworfQorCitMRlM2NChwd3JpdGUpOworCitzc2l6ZV90IHdyaXRlKGlu
dCBmZCwgY29uc3Qgdm9pZCAqYnVmLCBzaXplX3QgY291bnQpCit7CisgICAgcmV0dXJuIHB3cml0
ZShmZCwgYnVmLCBjb3VudCwgLTEpOworfQorCitzc2l6ZV90IHByZWFkdihpbnQgZmQsIGNvbnN0
IHN0cnVjdCBpb3ZlYyAqaW92LCBpbnQgaW92Y250LCBvZmZfdCBvZmZzZXQpCit7CisgICAgc3Ry
dWN0IGZpbGUgKmZwOworICAgIHNpemVfdCBieXRlczsKKyAgICBpbnQgZXJyb3I7CisKKyAgICBl
cnJvciA9IGZnZXQoZmQsICZmcCk7CisgICAgaWYgKGVycm9yKQorICAgICAgICBnb3RvIG91dF9l
cnJubzsKKworICAgIGVycm9yID0gc3lzX3JlYWQoZnAsIGlvdiwgaW92Y250LCBvZmZzZXQsICZi
eXRlcyk7CisgICAgZmRyb3AoZnApOworCisgICAgaWYgKGhhc19lcnJvcihlcnJvciwgYnl0ZXMp
KQorICAgICAgICBnb3RvIG91dF9lcnJubzsKKyAgICByZXR1cm4gYnl0ZXM7CisKKyAgICBvdXRf
ZXJybm86CisgICAgZXJybm8gPSBlcnJvcjsKKyAgICByZXR1cm4gLTE7Cit9CisKK0xGUzY0KHBy
ZWFkdik7CisKK3NzaXplX3QgcmVhZHYoaW50IGZkLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlvdiwg
aW50IGlvdmNudCkKK3sKKyAgICByZXR1cm4gcHJlYWR2KGZkLCBpb3YsIGlvdmNudCwgLTEpOwor
fQorCitUUkFDRVBPSU5UKHRyYWNlX3Zmc19wd3JpdGV2LCAiJWQgJXAgMHgleCAweCV4IiwgaW50
LCBjb25zdCBzdHJ1Y3QgaW92ZWMqLCBpbnQsIG9mZl90KTsKK1RSQUNFUE9JTlQodHJhY2VfdmZz
X3B3cml0ZXZfcmV0LCAiMHgleCIsIHNzaXplX3QpOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfcHdy
aXRldl9lcnIsICIlZCIsIGludCk7CisKK3NzaXplX3QgcHdyaXRldihpbnQgZmQsIGNvbnN0IHN0
cnVjdCBpb3ZlYyAqaW92LCBpbnQgaW92Y250LCBvZmZfdCBvZmZzZXQpCit7CisgICAgc3RydWN0
IGZpbGUgKmZwOworICAgIHNpemVfdCBieXRlczsKKyAgICBpbnQgZXJyb3I7CisKKyAgICB0cmFj
ZV92ZnNfcHdyaXRldihmZCwgaW92LCBpb3ZjbnQsIG9mZnNldCk7CisgICAgZXJyb3IgPSBmZ2V0
KGZkLCAmZnApOworICAgIGlmIChlcnJvcikKKyAgICAgICAgZ290byBvdXRfZXJybm87CisKKyAg
ICBlcnJvciA9IHN5c193cml0ZShmcCwgaW92LCBpb3ZjbnQsIG9mZnNldCwgJmJ5dGVzKTsKKyAg
ICBmZHJvcChmcCk7CisKKyAgICBpZiAoaGFzX2Vycm9yKGVycm9yLCBieXRlcykpCisgICAgICAg
IGdvdG8gb3V0X2Vycm5vOworICAgIHRyYWNlX3Zmc19wd3JpdGV2X3JldChieXRlcyk7CisgICAg
cmV0dXJuIGJ5dGVzOworCisgICAgb3V0X2Vycm5vOgorICAgIHRyYWNlX3Zmc19wd3JpdGV2X2Vy
cihlcnJvcik7CisgICAgZXJybm8gPSBlcnJvcjsKKyAgICByZXR1cm4gLTE7Cit9CitMRlM2NChw
d3JpdGV2KTsKKworc3NpemVfdCB3cml0ZXYoaW50IGZkLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlv
diwgaW50IGlvdmNudCkKK3sKKyAgICByZXR1cm4gcHdyaXRldihmZCwgaW92LCBpb3ZjbnQsIC0x
KTsKK30KKworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfaW9jdGwsICIlZCAweCV4IiwgaW50LCB1bnNp
Z25lZCBsb25nKTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX2lvY3RsX3JldCwgIiIpOworVFJBQ0VQ
T0lOVCh0cmFjZV92ZnNfaW9jdGxfZXJyLCAiJWQiLCBpbnQpOworCitpbnQgaW9jdGwoaW50IGZk
LCB1bnNpZ25lZCBsb25nIGludCByZXF1ZXN0LCAuLi4pCit7CisgICAgc3RydWN0IGZpbGUgKmZw
OworICAgIGludCBlcnJvcjsKKyAgICB2YV9saXN0IGFwOworICAgIHZvaWQqIGFyZzsKKworICAg
IHRyYWNlX3Zmc19pb2N0bChmZCwgcmVxdWVzdCk7CisgICAgLyogZ2xpYmMgQUJJIHByb3ZpZGVz
IGEgdmFyaWFkaWMgcHJvdG90eXBlIGZvciBpb2N0bCBzbyB3ZSBuZWVkIHRvIGFncmVlCisgICAg
ICogd2l0aCBpdCwgc2luY2Ugd2Ugbm93IGluY2x1ZGUgc3lzL2lvY3RsLmgKKyAgICAgKiByZWFk
IHRoZSBmaXJzdCBhcmd1bWVudCBhbmQgcGFzcyBpdCB0byBzeXNfaW9jdGwoKSAqLworICAgIHZh
X3N0YXJ0KGFwLCByZXF1ZXN0KTsKKyAgICBhcmcgPSB2YV9hcmcoYXAsIHZvaWQqKTsKKyAgICB2
YV9lbmQoYXApOworCisgICAgZXJyb3IgPSBmZ2V0KGZkLCAmZnApOworICAgIGlmIChlcnJvcikK
KyAgICAgICAgZ290byBvdXRfZXJybm87CisKKyAgICBlcnJvciA9IHN5c19pb2N0bChmcCwgcmVx
dWVzdCwgYXJnKTsKKyAgICBmZHJvcChmcCk7CisKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIGdv
dG8gb3V0X2Vycm5vOworICAgIHRyYWNlX3Zmc19pb2N0bF9yZXQoKTsKKyAgICByZXR1cm4gMDsK
KworICAgIG91dF9lcnJubzoKKyAgICB0cmFjZV92ZnNfaW9jdGxfZXJyKGVycm9yKTsKKyAgICBl
cnJubyA9IGVycm9yOworICAgIHJldHVybiAtMTsKK30KKworVFJBQ0VQT0lOVCh0cmFjZV92ZnNf
ZnN5bmMsICIlZCIsIGludCk7CitUUkFDRVBPSU5UKHRyYWNlX3Zmc19mc3luY19yZXQsICIiKTsK
K1RSQUNFUE9JTlQodHJhY2VfdmZzX2ZzeW5jX2VyciwgIiVkIiwgaW50KTsKKworaW50IGZzeW5j
KGludCBmZCkKK3sKKyAgICBzdHJ1Y3QgZmlsZSAqZnA7CisgICAgaW50IGVycm9yOworCisgICAg
dHJhY2VfdmZzX2ZzeW5jKGZkKTsKKyAgICBlcnJvciA9IGZnZXQoZmQsICZmcCk7CisgICAgaWYg
KGVycm9yKQorICAgICAgICBnb3RvIG91dF9lcnJubzsKKworICAgIGVycm9yID0gc3lzX2ZzeW5j
KGZwKTsKKyAgICBmZHJvcChmcCk7CisKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIGdvdG8gb3V0
X2Vycm5vOworICAgIHRyYWNlX3Zmc19mc3luY19yZXQoKTsKKyAgICByZXR1cm4gMDsKKworICAg
IG91dF9lcnJubzoKKyAgICB0cmFjZV92ZnNfZnN5bmNfZXJyKGVycm9yKTsKKyAgICBlcnJubyA9
IGVycm9yOworICAgIHJldHVybiAtMTsKK30KKworaW50IGZkYXRhc3luYyhpbnQgZmQpCit7Cisg
ICAgLy8gVE9ETzogU2VlIGlmIHdlIGNhbiBkbyBsZXNzIHRoYW4gZnN5bmMoKS4KKyAgICByZXR1
cm4gZnN5bmMoZmQpOworfQorCitUUkFDRVBPSU5UKHRyYWNlX3Zmc19mc3RhdCwgIiVkICVwIiwg
aW50LCBzdHJ1Y3Qgc3RhdCopOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZnN0YXRfcmV0LCAiIik7
CitUUkFDRVBPSU5UKHRyYWNlX3Zmc19mc3RhdF9lcnIsICIlZCIsIGludCk7CisKK2V4dGVybiAi
QyIKK2ludCBfX2Z4c3RhdChpbnQgdmVyLCBpbnQgZmQsIHN0cnVjdCBzdGF0ICpzdCkKK3sKKyAg
ICBzdHJ1Y3QgZmlsZSAqZnA7CisgICAgaW50IGVycm9yOworCisgICAgdHJhY2VfdmZzX2ZzdGF0
KGZkLCBzdCk7CisKKyAgICBlcnJvciA9IGZnZXQoZmQsICZmcCk7CisgICAgaWYgKGVycm9yKQor
ICAgICAgICBnb3RvIG91dF9lcnJubzsKKworICAgIGVycm9yID0gc3lzX2ZzdGF0KGZwLCBzdCk7
CisgICAgZmRyb3AoZnApOworCisgICAgaWYgKGVycm9yKQorICAgICAgICBnb3RvIG91dF9lcnJu
bzsKKyAgICB0cmFjZV92ZnNfZnN0YXRfcmV0KCk7CisgICAgcmV0dXJuIDA7CisKKyAgICBvdXRf
ZXJybm86CisgICAgdHJhY2VfdmZzX2ZzdGF0X2VycihlcnJvcik7CisgICAgZXJybm8gPSBlcnJv
cjsKKyAgICByZXR1cm4gLTE7Cit9CisKK0xGUzY0KF9fZnhzdGF0KTsKKworZXh0ZXJuICJDIgor
aW50IGZzdGF0KGludCBmZCwgc3RydWN0IHN0YXQgKnN0KQoreworICAgIHJldHVybiBfX2Z4c3Rh
dCgxLCBmZCwgc3QpOworfQorCitMRlM2NChmc3RhdCk7CisKK2V4dGVybiAiQyIKK2ludCBfX2Z4
c3RhdGF0KGludCB2ZXIsIGludCBkaXJmZCwgY29uc3QgY2hhciAqcGF0aG5hbWUsIHN0cnVjdCBz
dGF0ICpzdCwKKyAgICAgICAgaW50IGZsYWdzKQoreworICAgIGlmIChmbGFncyAmIEFUX1NZTUxJ
TktfTk9GT0xMT1cpIHsKKyAgICAgICAgVU5JTVBMRU1FTlRFRCgiZnN0YXRhdCgpIHdpdGggQVRf
U1lNTElOS19OT0ZPTExPVyIpOworICAgIH0KKworICAgIGlmIChwYXRobmFtZVswXSA9PSAnLycg
fHwgZGlyZmQgPT0gQVRfRkRDV0QpIHsKKyAgICAgICAgcmV0dXJuIHN0YXQocGF0aG5hbWUsIHN0
KTsKKyAgICB9CisgICAgLy8gSWYgQVRfRU1QVFlfUEFUSCBhbmQgcGF0aG5hbWUgaXMgYW4gZW1w
dHkgc3RyaW5nLCBmc3RhdGF0KCkgb3BlcmF0ZXMgb24KKyAgICAvLyBkaXJmZCBpdHNlbGYsIGFu
ZCBpbiB0aGF0IGNhc2UgaXQgZG9lc24ndCBoYXZlIHRvIGJlIGEgZGlyZWN0b3J5LgorICAgIGlm
ICgoZmxhZ3MgJiBBVF9FTVBUWV9QQVRIKSAmJiAhcGF0aG5hbWVbMF0pIHsKKyAgICAgICAgcmV0
dXJuIGZzdGF0KGRpcmZkLCBzdCk7CisgICAgfQorCisgICAgc3RydWN0IGZpbGUgKmZwOworICAg
IGludCBlcnJvciA9IGZnZXQoZGlyZmQsICZmcCk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAg
IGVycm5vID0gZXJyb3I7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBzdHJ1Y3Qg
dm5vZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOworICAgIHZuX2xvY2sodnApOworCisg
ICAgc3RkOjp1bmlxdWVfcHRyPGNoYXIgW10+IHVwIChuZXcgY2hhcltQQVRIX01BWF0pOworICAg
IGNoYXIgKnAgPSB1cC5nZXQoKTsKKyAgICAvKiBidWlsZCBhYnNvbHV0ZSBwYXRoICovCisgICAg
c3RybGNweShwLCBmcC0+Zl9kZW50cnktPmRfbW91bnQtPm1fcGF0aCwgUEFUSF9NQVgpOworICAg
IHN0cmxjYXQocCwgZnAtPmZfZGVudHJ5LT5kX3BhdGgsIFBBVEhfTUFYKTsKKyAgICBzdHJsY2F0
KHAsICIvIiwgUEFUSF9NQVgpOworICAgIHN0cmxjYXQocCwgcGF0aG5hbWUsIFBBVEhfTUFYKTsK
KworICAgIGVycm9yID0gc3RhdChwLCBzdCk7CisKKyAgICB2bl91bmxvY2sodnApOworICAgIGZk
cm9wKGZwKTsKKworICAgIHJldHVybiBlcnJvcjsKK30KKworTEZTNjQoX19meHN0YXRhdCk7CisK
K2V4dGVybiAiQyIKK2ludCBmc3RhdGF0KGludCBkaXJmZCwgY29uc3QgY2hhciAqcGF0aCwgc3Ry
dWN0IHN0YXQgKnN0LCBpbnQgZmxhZ3MpCit7CisgICAgcmV0dXJuIF9fZnhzdGF0YXQoMSwgZGly
ZmQsIHBhdGgsIHN0LCBmbGFncyk7Cit9CisKK0xGUzY0KGZzdGF0YXQpOworCitleHRlcm4gIkMi
IGludCBmbG9jayhpbnQgZmQsIGludCBvcGVyYXRpb24pCit7CisgICAgaWYgKCFmaWxlcmVmX2Zy
b21fZmQoZmQpKSB7CisgICAgICAgIHJldHVybiBsaWJjX2Vycm9yKEVCQURGKTsKKyAgICB9CisK
KyAgICBzd2l0Y2ggKG9wZXJhdGlvbikgeworICAgIGNhc2UgTE9DS19TSDoKKyAgICBjYXNlIExP
Q0tfU0ggfCBMT0NLX05COgorICAgIGNhc2UgTE9DS19FWDoKKyAgICBjYXNlIExPQ0tfRVggfCBM
T0NLX05COgorICAgIGNhc2UgTE9DS19VTjoKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgcmV0dXJuIGxpYmNfZXJyb3IoRUlOVkFMKTsKKyAgICB9CisKKyAgICByZXR1cm4g
MDsKK30KKworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfcmVhZGRpciwgIiVkICVwIiwgaW50LCBkaXJl
bnQqKTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX3JlYWRkaXJfcmV0LCAiIik7CitUUkFDRVBPSU5U
KHRyYWNlX3Zmc19yZWFkZGlyX2VyciwgIiVkIiwgaW50KTsKKworc3RydWN0IF9fZGlyc3RyZWFt
Cit7CisgICAgaW50IGZkOworfTsKKworRElSICpvcGVuZGlyKGNvbnN0IGNoYXIgKnBhdGgpCit7
CisgICAgRElSICpkaXIgPSBuZXcgRElSOworCisgICAgaWYgKCFkaXIpCisgICAgICAgIHJldHVy
biBsaWJjX2Vycm9yX3B0cjxESVI+KEVOT01FTSk7CisKKyAgICBkaXItPmZkID0gb3BlbihwYXRo
LCBPX1JET05MWSk7CisgICAgaWYgKGRpci0+ZmQgPCAwKSB7CisgICAgICAgIGRlbGV0ZSBkaXI7
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICByZXR1cm4gZGlyOworfQorCitE
SVIgKmZkb3BlbmRpcihpbnQgZmQpCit7CisgICAgRElSICpkaXI7CisgICAgc3RydWN0IHN0YXQg
c3Q7CisgICAgaWYgKGZzdGF0KGZkLCAmc3QpIDwgMCkgeworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICB9CisgICAgaWYgKCFTX0lTRElSKHN0LnN0X21vZGUpKSB7CisgICAgICAgIGVycm5v
ID0gRU5PVERJUjsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIGRpciA9IG5l
dyBESVI7CisgICAgZGlyLT5mZCA9IGZkOworICAgIHJldHVybiBkaXI7CisKK30KKworaW50IGRp
cmZkKERJUiAqZGlycCkKK3sKKyAgICBpZiAoIWRpcnApIHsKKyAgICAgICAgcmV0dXJuIGxpYmNf
ZXJyb3IoRUlOVkFMKTsKKyAgICB9CisKKyAgICByZXR1cm4gZGlycC0+ZmQ7Cit9CisKK2ludCBj
bG9zZWRpcihESVIgKmRpcikKK3sKKyAgICBjbG9zZShkaXItPmZkKTsKKyAgICBkZWxldGUgZGly
OworICAgIHJldHVybiAwOworfQorCitzdHJ1Y3QgZGlyZW50ICpyZWFkZGlyKERJUiAqZGlyKQor
eworICAgIHN0YXRpYyBfX3RocmVhZCBzdHJ1Y3QgZGlyZW50IGVudHJ5LCAqcmVzdWx0OworICAg
IGludCByZXQ7CisKKyAgICByZXQgPSByZWFkZGlyX3IoZGlyLCAmZW50cnksICZyZXN1bHQpOwor
ICAgIGlmIChyZXQpCisgICAgICAgIHJldHVybiBsaWJjX2Vycm9yX3B0cjxzdHJ1Y3QgZGlyZW50
PihyZXQpOworCisgICAgZXJybm8gPSAwOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2ludCBy
ZWFkZGlyX3IoRElSICpkaXIsIHN0cnVjdCBkaXJlbnQgKmVudHJ5LCBzdHJ1Y3QgZGlyZW50ICoq
cmVzdWx0KQoreworICAgIGludCBlcnJvcjsKKyAgICBzdHJ1Y3QgZmlsZSAqZnA7CisKKyAgICB0
cmFjZV92ZnNfcmVhZGRpcihkaXItPmZkLCBlbnRyeSk7CisgICAgZXJyb3IgPSBmZ2V0KGRpci0+
ZmQsICZmcCk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIHRyYWNlX3Zmc19yZWFkZGlyX2Vy
cihlcnJvcik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZXJyb3IgPSBzeXNfcmVhZGRpcihmcCwg
ZW50cnkpOworICAgICAgICBmZHJvcChmcCk7CisgICAgICAgIGlmIChlcnJvcikgeworICAgICAg
ICAgICAgdHJhY2VfdmZzX3JlYWRkaXJfZXJyKGVycm9yKTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIHRyYWNlX3Zmc19yZWFkZGlyX3JldCgpOworICAgICAgICB9CisgICAgfQorICAg
IC8vIE91ciBkaXJlbnQgaGFzIChsaWtlIExpbnV4KSBhIGRfcmVjbGVuIGZpZWxkLCBidXQgYSBj
b25zdGFudCBzaXplLgorICAgIGVudHJ5LT5kX3JlY2xlbiA9IHNpemVvZigqZW50cnkpOworCisg
ICAgaWYgKGVycm9yKSB7CisgICAgICAgICpyZXN1bHQgPSBudWxscHRyOworICAgIH0gZWxzZSB7
CisgICAgICAgICpyZXN1bHQgPSBlbnRyeTsKKyAgICB9CisgICAgcmV0dXJuIGVycm9yID09IEVO
T0VOVCA/IDAgOiBlcnJvcjsKK30KKworLy8gRklYTUU6IGluIDY0Yml0IGRpcmVudDY0IGFuZCBk
aXJlbnQgYXJlIGlkZW50aWNhbCwgc28gaXQncyBzYWZlIHRvIGFsaWFzCisjdW5kZWYgcmVhZGRp
cjY0X3IKK2V4dGVybiAiQyIgaW50IHJlYWRkaXI2NF9yKERJUiAqZGlyLCBzdHJ1Y3QgZGlyZW50
NjQgKmVudHJ5LAorICAgICAgICBzdHJ1Y3QgZGlyZW50NjQgKipyZXN1bHQpCisgICAgICAgIF9f
YXR0cmlidXRlX18oKGFsaWFzKCJyZWFkZGlyX3IiKSkpOworCisjdW5kZWYgcmVhZGRpcjY0Citl
eHRlcm4gIkMiIHN0cnVjdCBkaXJlbnQgKnJlYWRkaXI2NChESVIgKmRpcikgX19hdHRyaWJ1dGVf
XygoYWxpYXMoInJlYWRkaXIiKSkpOworCit2b2lkIHJld2luZGRpcihESVIgKmRpcnApCit7Cisg
ICAgc3RydWN0IGZpbGUgKmZwOworCisgICAgYXV0byBlcnJvciA9IGZnZXQoZGlycC0+ZmQsICZm
cCk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIC8vIFBPU0lYIHNwZWNpZmllcyB0aGF0IHdo
YXQgcmV3aW5kZGlyKCkgZG9lcyBpbiB0aGUgY2FzZSBvZiBlcnJvcgorICAgICAgICAvLyBpcyB1
bmRlZmluZWQuLi4KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN5c19yZXdpbmRkaXIo
ZnApOworICAgIC8vIEFnYWluLCBlcnJvciBjb2RlIGZyb20gc3lzX3Jld2luZGRpcigpIGlzIGln
bm9yZWQuCisgICAgZmRyb3AoZnApOworfQorCitsb25nIHRlbGxkaXIoRElSICpkaXJwKQorewor
ICAgIHN0cnVjdCBmaWxlICpmcDsKKyAgICBpbnQgZXJyb3IgPSBmZ2V0KGRpcnAtPmZkLCAmZnAp
OworICAgIGlmIChlcnJvcikgeworICAgICAgICByZXR1cm4gbGliY19lcnJvcihlcnJvcik7Cisg
ICAgfQorCisgICAgbG9uZyBsb2M7CisgICAgZXJyb3IgPSBzeXNfdGVsbGRpcihmcCwgJmxvYyk7
CisgICAgZmRyb3AoZnApOworICAgIGlmIChlcnJvcikgeworICAgICAgICByZXR1cm4gbGliY19l
cnJvcihlcnJvcik7CisgICAgfQorICAgIHJldHVybiBsb2M7Cit9CisKK3ZvaWQgc2Vla2RpcihE
SVIgKmRpcnAsIGxvbmcgbG9jKQoreworICAgIHN0cnVjdCBmaWxlICpmcDsKKyAgICBpbnQgZXJy
b3IgPSBmZ2V0KGRpcnAtPmZkLCAmZnApOworICAgIGlmIChlcnJvcikgeworICAgICAgICAvLyBQ
T1NJWCBzcGVjaWZpZXMgc2Vla2RpcigpIGNhbm5vdCByZXR1cm4gZXJyb3JzLgorICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIHN5c19zZWVrZGlyKGZwLCBsb2MpOworICAgIC8vIEFnYWluLCBl
cnJvciBjb2RlIGZyb20gc3lzX3NlZWtkaXIoKSBpcyBpZ25vcmVkLgorICAgIGZkcm9wKGZwKTsK
K30KKworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbWtkaXIsICJcIiVzXCIgMCUwbyIsIGNvbnN0IGNo
YXIqLCBtb2RlX3QpOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbWtkaXJfcmV0LCAiIik7CitUUkFD
RVBPSU5UKHRyYWNlX3Zmc19ta2Rpcl9lcnIsICIlZCIsIGludCk7CisKK2ludAorbWtkaXIoY29u
c3QgY2hhciAqcGF0aG5hbWUsIG1vZGVfdCBtb2RlKQoreworICAgIHN0cnVjdCB0YXNrICp0ID0g
bWFpbl90YXNrOworICAgIGNoYXIgcGF0aFtQQVRIX01BWF07CisgICAgaW50IGVycm9yOworCisg
ICAgbW9kZSA9IGFwcGx5X3VtYXNrKG1vZGUpOworCisgICAgdHJhY2VfdmZzX21rZGlyKHBhdGhu
YW1lLCBtb2RlKTsKKyAgICBpZiAoKGVycm9yID0gdGFza19jb252KHQsIHBhdGhuYW1lLCBWV1JJ
VEUsIHBhdGgpKSAhPSAwKQorICAgICAgICBnb3RvIG91dF9lcnJubzsKKworICAgIGVycm9yID0g
c3lzX21rZGlyKHBhdGgsIG1vZGUpOworICAgIGlmIChlcnJvcikKKyAgICAgICAgZ290byBvdXRf
ZXJybm87CisgICAgdHJhY2VfdmZzX21rZGlyX3JldCgpOworICAgIHJldHVybiAwOworICAgIG91
dF9lcnJubzoKKyAgICB0cmFjZV92ZnNfbWtkaXJfZXJyKGVycm9yKTsKKyAgICBlcnJubyA9IGVy
cm9yOworICAgIHJldHVybiAtMTsKK30KKworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfcm1kaXIsICJc
IiVzXCIiLCBjb25zdCBjaGFyKik7CitUUkFDRVBPSU5UKHRyYWNlX3Zmc19ybWRpcl9yZXQsICIi
KTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX3JtZGlyX2VyciwgIiVkIiwgaW50KTsKKworaW50IHJt
ZGlyKGNvbnN0IGNoYXIgKnBhdGhuYW1lKQoreworICAgIHN0cnVjdCB0YXNrICp0ID0gbWFpbl90
YXNrOworICAgIGNoYXIgcGF0aFtQQVRIX01BWF07CisgICAgaW50IGVycm9yOworCisgICAgdHJh
Y2VfdmZzX3JtZGlyKHBhdGhuYW1lKTsKKyAgICBlcnJvciA9IEVOT0VOVDsKKyAgICBpZiAocGF0
aG5hbWUgPT0gbnVsbHB0cikKKyAgICAgICAgZ290byBvdXRfZXJybm87CisgICAgaWYgKChlcnJv
ciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwgVldSSVRFLCBwYXRoKSkgIT0gMCkKKyAgICAgICAg
Z290byBvdXRfZXJybm87CisKKyAgICBlcnJvciA9IHN5c19ybWRpcihwYXRoKTsKKyAgICBpZiAo
ZXJyb3IpCisgICAgICAgIGdvdG8gb3V0X2Vycm5vOworICAgIHRyYWNlX3Zmc19ybWRpcl9yZXQo
KTsKKyAgICByZXR1cm4gMDsKKyAgICBvdXRfZXJybm86CisgICAgdHJhY2VfdmZzX3JtZGlyX2Vy
cihlcnJvcik7CisgICAgZXJybm8gPSBlcnJvcjsKKyAgICByZXR1cm4gLTE7Cit9CisKK3N0YXRp
YyB2b2lkCitnZXRfbGFzdF9jb21wb25lbnQoY29uc3QgY2hhciAqcGF0aCwgY2hhciAqZHN0KQor
eworICAgIGludCBwb3MgPSBzdHJsZW4ocGF0aCkgLSAxOworCisgICAgd2hpbGUgKHBvcyA+PSAw
ICYmIHBhdGhbcG9zXSA9PSAnLycpCisgICAgICAgIHBvcy0tOworCisgICAgaW50IGNvbXBvbmVu
dF9lbmQgPSBwb3M7CisKKyAgICB3aGlsZSAocG9zID49IDAgJiYgcGF0aFtwb3NdICE9ICcvJykK
KyAgICAgICAgcG9zLS07CisKKyAgICBpbnQgY29tcG9uZW50X3N0YXJ0ID0gcG9zICsgMTsKKwor
ICAgIGludCBsZW4gPSBjb21wb25lbnRfZW5kIC0gY29tcG9uZW50X3N0YXJ0ICsgMTsKKyAgICBt
ZW1jcHkoZHN0LCBwYXRoICsgY29tcG9uZW50X3N0YXJ0LCBsZW4pOworICAgIGRzdFtsZW5dID0g
MDsKK30KKworc3RhdGljIGJvb2wgbnVsbF9vcl9lbXB0eShjb25zdCBjaGFyICpzdHIpCit7Cisg
ICAgcmV0dXJuIHN0ciA9PSBudWxscHRyIHx8ICpzdHIgPT0gJ1wwJzsKK30KKworVFJBQ0VQT0lO
VCh0cmFjZV92ZnNfcmVuYW1lLCAiXCIlc1wiIFwiJXNcIiIsIGNvbnN0IGNoYXIqLCBjb25zdCBj
aGFyKik7CitUUkFDRVBPSU5UKHRyYWNlX3Zmc19yZW5hbWVfcmV0LCAiIik7CitUUkFDRVBPSU5U
KHRyYWNlX3Zmc19yZW5hbWVfZXJyLCAiJWQiLCBpbnQpOworCitpbnQgcmVuYW1lKGNvbnN0IGNo
YXIgKm9sZHBhdGgsIGNvbnN0IGNoYXIgKm5ld3BhdGgpCit7CisgICAgdHJhY2VfdmZzX3JlbmFt
ZShvbGRwYXRoLCBuZXdwYXRoKTsKKyAgICBzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKKyAg
ICBjaGFyIHNyY1tQQVRIX01BWF07CisgICAgY2hhciBkZXN0W1BBVEhfTUFYXTsKKyAgICBpbnQg
ZXJyb3I7CisKKyAgICBlcnJvciA9IEVOT0VOVDsKKyAgICBpZiAobnVsbF9vcl9lbXB0eShvbGRw
YXRoKSB8fCBudWxsX29yX2VtcHR5KG5ld3BhdGgpKQorICAgICAgICBnb3RvIG91dF9lcnJubzsK
KworICAgIGdldF9sYXN0X2NvbXBvbmVudChvbGRwYXRoLCBzcmMpOworICAgIGlmICghc3RyY21w
KHNyYywgIi4iKSB8fCAhc3RyY21wKHNyYywgIi4uIikpIHsKKyAgICAgICAgZXJyb3IgPSBFSU5W
QUw7CisgICAgICAgIGdvdG8gb3V0X2Vycm5vOworICAgIH0KKworICAgIGdldF9sYXN0X2NvbXBv
bmVudChuZXdwYXRoLCBkZXN0KTsKKyAgICBpZiAoIXN0cmNtcChkZXN0LCAiLiIpIHx8ICFzdHJj
bXAoZGVzdCwgIi4uIikpIHsKKyAgICAgICAgZXJyb3IgPSBFSU5WQUw7CisgICAgICAgIGdvdG8g
b3V0X2Vycm5vOworICAgIH0KKworICAgIGlmICgoZXJyb3IgPSB0YXNrX2NvbnYodCwgb2xkcGF0
aCwgVlJFQUQsIHNyYykpICE9IDApCisgICAgICAgIGdvdG8gb3V0X2Vycm5vOworCisgICAgaWYg
KChlcnJvciA9IHRhc2tfY29udih0LCBuZXdwYXRoLCBWV1JJVEUsIGRlc3QpKSAhPSAwKQorICAg
ICAgICBnb3RvIG91dF9lcnJubzsKKworICAgIGVycm9yID0gc3lzX3JlbmFtZShzcmMsIGRlc3Qp
OworICAgIGlmIChlcnJvcikKKyAgICAgICAgZ290byBvdXRfZXJybm87CisgICAgdHJhY2VfdmZz
X3JlbmFtZV9yZXQoKTsKKyAgICByZXR1cm4gMDsKKyAgICBvdXRfZXJybm86CisgICAgdHJhY2Vf
dmZzX3JlbmFtZV9lcnIoZXJyb3IpOworICAgIGVycm5vID0gZXJyb3I7CisgICAgcmV0dXJuIC0x
OworfQorCitUUkFDRVBPSU5UKHRyYWNlX3Zmc19jaGRpciwgIlwiJXNcIiIsIGNvbnN0IGNoYXIq
KTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX2NoZGlyX3JldCwgIiIpOworVFJBQ0VQT0lOVCh0cmFj
ZV92ZnNfY2hkaXJfZXJyLCAiJWQiLCBpbnQpOworCitzdGF0aWMgaW50IHJlcGxhY2VfY3dkKHN0
cnVjdCB0YXNrICp0LCBzdHJ1Y3QgZmlsZSAqbmV3X2N3ZGZwLAorICAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6OmZ1bmN0aW9uPGludCAodm9pZCk+IGNoZGlyX2Z1bmMpCit7CisgICAgc3RydWN0
IGZpbGUgKm9sZCA9IG51bGxwdHI7CisKKyAgICBpZiAoIXQpIHsKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgfQorCisgICAgaWYgKHQtPnRfY3dkZnApIHsKKyAgICAgICAgb2xkID0gdC0+dF9jd2Rm
cDsKKyAgICB9CisKKyAgICAvKiBEbyB0aGUgYWN0dWFsIGNoZGlyIG9wZXJhdGlvbiBoZXJlICov
CisgICAgaW50IGVycm9yID0gY2hkaXJfZnVuYygpOworCisgICAgdC0+dF9jd2RmcCA9IG5ld19j
d2RmcDsKKyAgICBpZiAob2xkKSB7CisgICAgICAgIGZkcm9wKG9sZCk7CisgICAgfQorCisgICAg
cmV0dXJuIGVycm9yOworfQorCitpbnQgY2hkaXIoY29uc3QgY2hhciAqcGF0aG5hbWUpCit7Cisg
ICAgdHJhY2VfdmZzX2NoZGlyKHBhdGhuYW1lKTsKKyAgICBzdHJ1Y3QgdGFzayAqdCA9IG1haW5f
dGFzazsKKyAgICBjaGFyIHBhdGhbUEFUSF9NQVhdOworICAgIHN0cnVjdCBmaWxlICpmcDsKKyAg
ICBpbnQgZXJyb3I7CisKKyAgICBlcnJvciA9IEVOT0VOVDsKKyAgICBpZiAocGF0aG5hbWUgPT0g
bnVsbHB0cikKKyAgICAgICAgZ290byBvdXRfZXJybm87CisKKyAgICBpZiAoKGVycm9yID0gdGFz
a19jb252KHQsIHBhdGhuYW1lLCBWUkVBRCwgcGF0aCkpICE9IDApCisgICAgICAgIGdvdG8gb3V0
X2Vycm5vOworCisgICAgLyogQ2hlY2sgaWYgZGlyZWN0b3J5IGV4aXRzICovCisgICAgZXJyb3Ig
PSBzeXNfb3BlbihwYXRoLCBPX0RJUkVDVE9SWSwgMCwgJmZwKTsKKyAgICBpZiAoZXJyb3IpIHsK
KyAgICAgICAgZ290byBvdXRfZXJybm87CisgICAgfQorCisgICAgcmVwbGFjZV9jd2QodCwgZnAs
IFsmXSgpIHsgc3RybGNweSh0LT50X2N3ZCwgcGF0aCwgc2l6ZW9mKHQtPnRfY3dkKSk7IHJldHVy
biAwOyB9KTsKKworICAgIHRyYWNlX3Zmc19jaGRpcl9yZXQoKTsKKyAgICByZXR1cm4gMDsKKyAg
ICBvdXRfZXJybm86CisgICAgZXJybm8gPSBlcnJvcjsKKyAgICB0cmFjZV92ZnNfY2hkaXJfZXJy
KGVycm5vKTsKKyAgICByZXR1cm4gLTE7Cit9CisKK1RSQUNFUE9JTlQodHJhY2VfdmZzX2ZjaGRp
ciwgIiVkIiwgaW50KTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX2ZjaGRpcl9yZXQsICIiKTsKK1RS
QUNFUE9JTlQodHJhY2VfdmZzX2ZjaGRpcl9lcnIsICIlZCIsIGludCk7CisKK2ludCBmY2hkaXIo
aW50IGZkKQoreworICAgIHRyYWNlX3Zmc19mY2hkaXIoZmQpOworICAgIHN0cnVjdCB0YXNrICp0
ID0gbWFpbl90YXNrOworICAgIHN0cnVjdCBmaWxlICpmcDsKKyAgICBpbnQgZXJyb3I7CisKKyAg
ICBlcnJvciA9IGZnZXQoZmQsICZmcCk7CisgICAgaWYgKGVycm9yKQorICAgICAgICBnb3RvIG91
dF9lcnJubzsKKworICAgIGVycm9yID0gcmVwbGFjZV9jd2QodCwgZnAsIFsmXSgpIHsgcmV0dXJu
IHN5c19mY2hkaXIoZnAsIHQtPnRfY3dkKTsgfSk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAg
IGZkcm9wKGZwKTsKKyAgICAgICAgZ290byBvdXRfZXJybm87CisgICAgfQorCisgICAgdHJhY2Vf
dmZzX2ZjaGRpcl9yZXQoKTsKKyAgICByZXR1cm4gMDsKKworICAgIG91dF9lcnJubzoKKyAgICB0
cmFjZV92ZnNfZmNoZGlyX2VycihlcnJvcik7CisgICAgZXJybm8gPSBlcnJvcjsKKyAgICByZXR1
cm4gLTE7Cit9CisKK1RSQUNFUE9JTlQodHJhY2VfdmZzX2xpbmssICJcIiVzXCIgXCIlc1wiIiwg
Y29uc3QgY2hhciosIGNvbnN0IGNoYXIqKTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX2xpbmtfcmV0
LCAiIik7CitUUkFDRVBPSU5UKHRyYWNlX3Zmc19saW5rX2VyciwgIiVkIiwgaW50KTsKKworaW50
IGxpbmsoY29uc3QgY2hhciAqb2xkcGF0aCwgY29uc3QgY2hhciAqbmV3cGF0aCkKK3sKKyAgICBz
dHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKKyAgICBjaGFyIHBhdGgxW1BBVEhfTUFYXTsKKyAg
ICBjaGFyIHBhdGgyW1BBVEhfTUFYXTsKKyAgICBpbnQgZXJyb3I7CisKKyAgICB0cmFjZV92ZnNf
bGluayhvbGRwYXRoLCBuZXdwYXRoKTsKKworICAgIGVycm9yID0gRU5PRU5UOworICAgIGlmIChv
bGRwYXRoID09IG51bGxwdHIgfHwgbmV3cGF0aCA9PSBudWxscHRyKQorICAgICAgICBnb3RvIG91
dF9lcnJubzsKKyAgICBpZiAoKGVycm9yID0gdGFza19jb252KHQsIG9sZHBhdGgsIFZXUklURSwg
cGF0aDEpKSAhPSAwKQorICAgICAgICBnb3RvIG91dF9lcnJubzsKKyAgICBpZiAoKGVycm9yID0g
dGFza19jb252KHQsIG5ld3BhdGgsIFZXUklURSwgcGF0aDIpKSAhPSAwKQorICAgICAgICBnb3Rv
IG91dF9lcnJubzsKKworICAgIGVycm9yID0gc3lzX2xpbmsocGF0aDEsIHBhdGgyKTsKKyAgICBp
ZiAoZXJyb3IpCisgICAgICAgIGdvdG8gb3V0X2Vycm5vOworICAgIHRyYWNlX3Zmc19saW5rX3Jl
dCgpOworICAgIHJldHVybiAwOworICAgIG91dF9lcnJubzoKKyAgICB0cmFjZV92ZnNfbGlua19l
cnIoZXJyb3IpOworICAgIGVycm5vID0gZXJyb3I7CisgICAgcmV0dXJuIC0xOworfQorCisKK1RS
QUNFUE9JTlQodHJhY2VfdmZzX3N5bWxpbmssICJvbGRwYXRoPSVzLCBuZXdwYXRoPSVzIiwgY29u
c3QgY2hhciosIGNvbnN0IGNoYXIqKTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX3N5bWxpbmtfcmV0
LCAiIik7CitUUkFDRVBPSU5UKHRyYWNlX3Zmc19zeW1saW5rX2VyciwgImVycm5vPSVkIiwgaW50
KTsKKworaW50IHN5bWxpbmsoY29uc3QgY2hhciAqb2xkcGF0aCwgY29uc3QgY2hhciAqbmV3cGF0
aCkKK3sKKyAgICBpbnQgZXJyb3I7CisKKyAgICB0cmFjZV92ZnNfc3ltbGluayhvbGRwYXRoLCBu
ZXdwYXRoKTsKKworICAgIGVycm9yID0gRU5PRU5UOworICAgIGlmIChvbGRwYXRoID09IG51bGxw
dHIgfHwgbmV3cGF0aCA9PSBudWxscHRyKSB7CisgICAgICAgIGVycm5vID0gRU5PRU5UOworICAg
ICAgICB0cmFjZV92ZnNfc3ltbGlua19lcnIoZXJyb3IpOworICAgICAgICByZXR1cm4gKC0xKTsK
KyAgICB9CisKKyAgICBlcnJvciA9IHN5c19zeW1saW5rKG9sZHBhdGgsIG5ld3BhdGgpOworICAg
IGlmIChlcnJvcikgeworICAgICAgICBlcnJubyA9IGVycm9yOworICAgICAgICB0cmFjZV92ZnNf
c3ltbGlua19lcnIoZXJyb3IpOworICAgICAgICByZXR1cm4gKC0xKTsKKyAgICB9CisKKyAgICB0
cmFjZV92ZnNfc3ltbGlua19yZXQoKTsKKyAgICByZXR1cm4gMDsKK30KKworVFJBQ0VQT0lOVCh0
cmFjZV92ZnNfdW5saW5rLCAiXCIlc1wiIiwgY29uc3QgY2hhciopOworVFJBQ0VQT0lOVCh0cmFj
ZV92ZnNfdW5saW5rX3JldCwgIiIpOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfdW5saW5rX2Vyciwg
IiVkIiwgaW50KTsKKworaW50IHVubGluayhjb25zdCBjaGFyICpwYXRobmFtZSkKK3sKKyAgICB0
cmFjZV92ZnNfdW5saW5rKHBhdGhuYW1lKTsKKyAgICBzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFz
azsKKyAgICBjaGFyIHBhdGhbUEFUSF9NQVhdOworICAgIGludCBlcnJvcjsKKworICAgIGVycm9y
ID0gRU5PRU5UOworICAgIGlmIChwYXRobmFtZSA9PSBudWxscHRyKQorICAgICAgICBnb3RvIG91
dF9lcnJubzsKKyAgICBpZiAoKGVycm9yID0gdGFza19jb252KHQsIHBhdGhuYW1lLCBWV1JJVEUs
IHBhdGgpKSAhPSAwKQorICAgICAgICBnb3RvIG91dF9lcnJubzsKKworICAgIGVycm9yID0gc3lz
X3VubGluayhwYXRoKTsKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIGdvdG8gb3V0X2Vycm5vOwor
ICAgIHRyYWNlX3Zmc191bmxpbmtfcmV0KCk7CisgICAgcmV0dXJuIDA7CisgICAgb3V0X2Vycm5v
OgorICAgIHRyYWNlX3Zmc191bmxpbmtfZXJyKGVycm9yKTsKKyAgICBlcnJubyA9IGVycm9yOwor
ICAgIHJldHVybiAtMTsKK30KKworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfc3RhdCwgIlwiJXNcIiAl
cCIsIGNvbnN0IGNoYXIqLCBzdHJ1Y3Qgc3RhdCopOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfc3Rh
dF9yZXQsICIiKTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX3N0YXRfZXJyLCAiJWQiLCBpbnQpOwor
CitleHRlcm4gIkMiCitpbnQgX194c3RhdChpbnQgdmVyLCBjb25zdCBjaGFyICpwYXRobmFtZSwg
c3RydWN0IHN0YXQgKnN0KQoreworICAgIHN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOworICAg
IGNoYXIgcGF0aFtQQVRIX01BWF07CisgICAgaW50IGVycm9yOworCisgICAgdHJhY2VfdmZzX3N0
YXQocGF0aG5hbWUsIHN0KTsKKworICAgIGVycm9yID0gdGFza19jb252KHQsIHBhdGhuYW1lLCAw
LCBwYXRoKTsKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIGdvdG8gb3V0X2Vycm5vOworCisgICAg
ZXJyb3IgPSBzeXNfc3RhdChwYXRoLCBzdCk7CisgICAgaWYgKGVycm9yKQorICAgICAgICBnb3Rv
IG91dF9lcnJubzsKKyAgICB0cmFjZV92ZnNfc3RhdF9yZXQoKTsKKyAgICByZXR1cm4gMDsKKwor
ICAgIG91dF9lcnJubzoKKyAgICB0cmFjZV92ZnNfc3RhdF9lcnIoZXJyb3IpOworICAgIGVycm5v
ID0gZXJyb3I7CisgICAgcmV0dXJuIC0xOworfQorCitMRlM2NChfX3hzdGF0KTsKKworaW50IHN0
YXQoY29uc3QgY2hhciAqcGF0aG5hbWUsIHN0cnVjdCBzdGF0ICpzdCkKK3sKKyAgICByZXR1cm4g
X194c3RhdCgxLCBwYXRobmFtZSwgc3QpOworfQorCitMRlM2NChzdGF0KTsKKworVFJBQ0VQT0lO
VCh0cmFjZV92ZnNfbHN0YXQsICJwYXRobmFtZT0lcywgc3RhdD0lcCIsIGNvbnN0IGNoYXIqLCBz
dHJ1Y3Qgc3RhdCopOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbHN0YXRfcmV0LCAiIik7CitUUkFD
RVBPSU5UKHRyYWNlX3Zmc19sc3RhdF9lcnIsICJlcnJubz0lZCIsIGludCk7CitleHRlcm4gIkMi
CitpbnQgX19seHN0YXQoaW50IHZlciwgY29uc3QgY2hhciAqcGF0aG5hbWUsIHN0cnVjdCBzdGF0
ICpzdCkKK3sKKyAgICBzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKKyAgICBjaGFyIHBhdGhb
UEFUSF9NQVhdOworICAgIGludCBlcnJvcjsKKworICAgIHRyYWNlX3Zmc19sc3RhdChwYXRobmFt
ZSwgc3QpOworCisgICAgZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5hbWUsIDAsIHBhdGgpOwor
ICAgIGlmIChlcnJvcikgeworICAgICAgICBlcnJubyA9IGVycm9yOworICAgICAgICB0cmFjZV92
ZnNfbHN0YXRfZXJyKGVycm9yKTsKKyAgICAgICAgcmV0dXJuICgtMSk7CisgICAgfQorCisgICAg
ZXJyb3IgPSBzeXNfbHN0YXQocGF0aCwgc3QpOworICAgIGlmIChlcnJvcikgeworICAgICAgICBl
cnJubyA9IGVycm9yOworICAgICAgICB0cmFjZV92ZnNfbHN0YXRfZXJyKGVycm9yKTsKKyAgICAg
ICAgcmV0dXJuICgtMSk7CisgICAgfQorCisgICAgdHJhY2VfdmZzX2xzdGF0X3JldCgpOworICAg
IHJldHVybiAwOworfQorCitMRlM2NChfX2x4c3RhdCk7CisKK2ludCBsc3RhdChjb25zdCBjaGFy
ICpwYXRobmFtZSwgc3RydWN0IHN0YXQgKnN0KQoreworICAgIHJldHVybiBfX2x4c3RhdCgxLCBw
YXRobmFtZSwgc3QpOworfQorCitMRlM2NChsc3RhdCk7CisKK1RSQUNFUE9JTlQodHJhY2VfdmZz
X3N0YXRmcywgIlwiJXNcIiAlcCIsIGNvbnN0IGNoYXIqLCBzdHJ1Y3Qgc3RhdGZzKik7CitUUkFD
RVBPSU5UKHRyYWNlX3Zmc19zdGF0ZnNfcmV0LCAiIik7CitUUkFDRVBPSU5UKHRyYWNlX3Zmc19z
dGF0ZnNfZXJyLCAiJWQiLCBpbnQpOworCitleHRlcm4gIkMiCitpbnQgX19zdGF0ZnMoY29uc3Qg
Y2hhciAqcGF0aG5hbWUsIHN0cnVjdCBzdGF0ZnMgKmJ1ZikKK3sKKyAgICB0cmFjZV92ZnNfc3Rh
dGZzKHBhdGhuYW1lLCBidWYpOworICAgIHN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOworICAg
IGNoYXIgcGF0aFtQQVRIX01BWF07CisgICAgaW50IGVycm9yOworCisgICAgZXJyb3IgPSB0YXNr
X2NvbnYodCwgcGF0aG5hbWUsIDAsIHBhdGgpOworICAgIGlmIChlcnJvcikKKyAgICAgICAgZ290
byBvdXRfZXJybm87CisKKyAgICBlcnJvciA9IHN5c19zdGF0ZnMocGF0aCwgYnVmKTsKKyAgICBp
ZiAoZXJyb3IpCisgICAgICAgIGdvdG8gb3V0X2Vycm5vOworICAgIHRyYWNlX3Zmc19zdGF0ZnNf
cmV0KCk7CisgICAgcmV0dXJuIDA7CisgICAgb3V0X2Vycm5vOgorICAgIHRyYWNlX3Zmc19zdGF0
ZnNfZXJyKGVycm9yKTsKKyAgICBlcnJubyA9IGVycm9yOworICAgIHJldHVybiAtMTsKK30KK3dl
YWtfYWxpYXMoX19zdGF0ZnMsIHN0YXRmcyk7CisKK0xGUzY0KHN0YXRmcyk7CisKK1RSQUNFUE9J
TlQodHJhY2VfdmZzX2ZzdGF0ZnMsICJcIiVzXCIgJXAiLCBpbnQsIHN0cnVjdCBzdGF0ZnMqKTsK
K1RSQUNFUE9JTlQodHJhY2VfdmZzX2ZzdGF0ZnNfcmV0LCAiIik7CitUUkFDRVBPSU5UKHRyYWNl
X3Zmc19mc3RhdGZzX2VyciwgIiVkIiwgaW50KTsKKworZXh0ZXJuICJDIgoraW50IF9fZnN0YXRm
cyhpbnQgZmQsIHN0cnVjdCBzdGF0ZnMgKmJ1ZikKK3sKKyAgICBzdHJ1Y3QgZmlsZSAqZnA7Cisg
ICAgaW50IGVycm9yOworCisgICAgdHJhY2VfdmZzX2ZzdGF0ZnMoZmQsIGJ1Zik7CisgICAgZXJy
b3IgPSBmZ2V0KGZkLCAmZnApOworICAgIGlmIChlcnJvcikKKyAgICAgICAgZ290byBvdXRfZXJy
bm87CisKKyAgICBlcnJvciA9IHN5c19mc3RhdGZzKGZwLCBidWYpOworICAgIGZkcm9wKGZwKTsK
KworICAgIGlmIChlcnJvcikKKyAgICAgICAgZ290byBvdXRfZXJybm87CisgICAgdHJhY2VfdmZz
X2ZzdGF0ZnNfcmV0KCk7CisgICAgcmV0dXJuIDA7CisKKyAgICBvdXRfZXJybm86CisgICAgdHJh
Y2VfdmZzX2ZzdGF0ZnNfZXJyKGVycm9yKTsKKyAgICBlcnJubyA9IGVycm9yOworICAgIHJldHVy
biAtMTsKK30KK3dlYWtfYWxpYXMoX19mc3RhdGZzLCBmc3RhdGZzKTsKKworTEZTNjQoZnN0YXRm
cyk7CisKK3N0YXRpYyBpbnQKK3N0YXRmc190b19zdGF0dmZzKHN0cnVjdCBzdGF0dmZzICpkc3Qs
IHN0cnVjdCBzdGF0ZnMgKnNyYykKK3sKKyAgICBkc3QtPmZfYnNpemUgPSBzcmMtPmZfYnNpemU7
CisgICAgZHN0LT5mX2Zyc2l6ZSA9IHNyYy0+Zl9ic2l6ZTsKKyAgICBkc3QtPmZfYmxvY2tzID0g
c3JjLT5mX2Jsb2NrczsKKyAgICBkc3QtPmZfYmZyZWUgPSBzcmMtPmZfYmZyZWU7CisgICAgZHN0
LT5mX2JhdmFpbCA9IHNyYy0+Zl9iYXZhaWw7CisgICAgZHN0LT5mX2ZpbGVzID0gc3JjLT5mX2Zp
bGVzOworICAgIGRzdC0+Zl9mZnJlZSA9IHNyYy0+Zl9mZnJlZTsKKyAgICBkc3QtPmZfZmF2YWls
ID0gMDsKKyAgICBkc3QtPmZfZnNpZCA9IHNyYy0+Zl9mc2lkLl9fdmFsWzBdOworICAgIGRzdC0+
Zl9mbGFnID0gc3JjLT5mX2ZsYWdzOworICAgIGRzdC0+Zl9uYW1lbWF4ID0gc3JjLT5mX25hbWVs
ZW47CisgICAgcmV0dXJuIDA7Cit9CisKK2ludAorc3RhdHZmcyhjb25zdCBjaGFyICpwYXRobmFt
ZSwgc3RydWN0IHN0YXR2ZnMgKmJ1ZikKK3sKKyAgICBzdHJ1Y3Qgc3RhdGZzIHN0OworCisgICAg
aWYgKF9fc3RhdGZzKHBhdGhuYW1lLCAmc3QpIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworICAg
IHJldHVybiBzdGF0ZnNfdG9fc3RhdHZmcyhidWYsICZzdCk7Cit9CisKK0xGUzY0KHN0YXR2ZnMp
OworCitpbnQKK2ZzdGF0dmZzKGludCBmZCwgc3RydWN0IHN0YXR2ZnMgKmJ1ZikKK3sKKyAgICBz
dHJ1Y3Qgc3RhdGZzIHN0OworCisgICAgaWYgKF9fZnN0YXRmcyhmZCwgJnN0KSA8IDApCisgICAg
ICAgIHJldHVybiAtMTsKKyAgICByZXR1cm4gc3RhdGZzX3RvX3N0YXR2ZnMoYnVmLCAmc3QpOwor
fQorCitMRlM2NChmc3RhdHZmcyk7CisKKworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZ2V0Y3dkLCAi
JXAgJWQiLCBjaGFyKiwgc2l6ZV90KTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX2dldGN3ZF9yZXQs
ICJcIiVzXCIiLCBjb25zdCBjaGFyKik7CitUUkFDRVBPSU5UKHRyYWNlX3Zmc19nZXRjd2RfZXJy
LCAiJWQiLCBpbnQpOworCitjaGFyICpnZXRjd2QoY2hhciAqcGF0aCwgc2l6ZV90IHNpemUpCit7
CisgICAgdHJhY2VfdmZzX2dldGN3ZChwYXRoLCBzaXplKTsKKyAgICBzdHJ1Y3QgdGFzayAqdCA9
IG1haW5fdGFzazsKKyAgICBpbnQgbGVuID0gc3RybGVuKHQtPnRfY3dkKSArIDE7CisgICAgaW50
IGVycm9yOworCisgICAgaWYgKCFwYXRoKSB7CisgICAgICAgIGlmICghc2l6ZSkKKyAgICAgICAg
ICAgIHNpemUgPSBsZW47CisgICAgICAgIHBhdGggPSAoY2hhciopbWFsbG9jKHNpemUpOworICAg
ICAgICBpZiAoIXBhdGgpIHsKKyAgICAgICAgICAgIGVycm9yID0gRU5PTUVNOworICAgICAgICAg
ICAgZ290byBvdXRfZXJybm87CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAo
IXNpemUpIHsKKyAgICAgICAgICAgIGVycm9yID0gRUlOVkFMOworICAgICAgICAgICAgZ290byBv
dXRfZXJybm87CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoc2l6ZSA8IGxlbikgeworICAg
ICAgICBlcnJvciA9IEVSQU5HRTsKKyAgICAgICAgZ290byBvdXRfZXJybm87CisgICAgfQorCisg
ICAgbWVtY3B5KHBhdGgsIHQtPnRfY3dkLCBsZW4pOworICAgIHRyYWNlX3Zmc19nZXRjd2RfcmV0
KHBhdGgpOworICAgIHJldHVybiBwYXRoOworCisgICAgb3V0X2Vycm5vOgorICAgIHRyYWNlX3Zm
c19nZXRjd2RfZXJyKGVycm9yKTsKKyAgICBlcnJubyA9IGVycm9yOworICAgIHJldHVybiBudWxs
cHRyOworfQorCitUUkFDRVBPSU5UKHRyYWNlX3Zmc19kdXAsICIlZCIsIGludCk7CitUUkFDRVBP
SU5UKHRyYWNlX3Zmc19kdXBfcmV0LCAiXCIlc1wiIiwgaW50KTsKK1RSQUNFUE9JTlQodHJhY2Vf
dmZzX2R1cF9lcnIsICIlZCIsIGludCk7CisvKgorICogRHVwbGljYXRlIGEgZmlsZSBkZXNjcmlw
dG9yCisgKi8KK2ludCBkdXAoaW50IG9sZGZkKQoreworICAgIHN0cnVjdCBmaWxlICpmcDsKKyAg
ICBpbnQgbmV3ZmQ7CisgICAgaW50IGVycm9yOworCisgICAgdHJhY2VfdmZzX2R1cChvbGRmZCk7
CisgICAgZXJyb3IgPSBmZ2V0KG9sZGZkLCAmZnApOworICAgIGlmIChlcnJvcikKKyAgICAgICAg
Z290byBvdXRfZXJybm87CisKKyAgICBlcnJvciA9IGZkYWxsb2MoZnAsICZuZXdmZCk7CisgICAg
aWYgKGVycm9yKQorICAgICAgICBnb3RvIG91dF9mZHJvcDsKKworICAgIGZkcm9wKGZwKTsKKyAg
ICB0cmFjZV92ZnNfZHVwX3JldChuZXdmZCk7CisgICAgcmV0dXJuIG5ld2ZkOworCisgICAgb3V0
X2Zkcm9wOgorICAgIGZkcm9wKGZwKTsKKyAgICBvdXRfZXJybm86CisgICAgdHJhY2VfdmZzX2R1
cF9lcnIoZXJyb3IpOworICAgIGVycm5vID0gZXJyb3I7CisgICAgcmV0dXJuIC0xOworfQorCitU
UkFDRVBPSU5UKHRyYWNlX3Zmc19kdXAzLCAiJWQgJWQgMHgleCIsIGludCwgaW50LCBpbnQpOwor
VFJBQ0VQT0lOVCh0cmFjZV92ZnNfZHVwM19yZXQsICIlZCIsIGludCk7CitUUkFDRVBPSU5UKHRy
YWNlX3Zmc19kdXAzX2VyciwgIiVkIiwgaW50KTsKKy8qCisgKiBEdXBsaWNhdGUgYSBmaWxlIGRl
c2NyaXB0b3IgdG8gYSBwYXJ0aWN1bGFyIHZhbHVlLgorICovCitpbnQgZHVwMyhpbnQgb2xkZmQs
IGludCBuZXdmZCwgaW50IGZsYWdzKQoreworICAgIHN0cnVjdCBmaWxlICpmcDsKKyAgICBpbnQg
ZXJyb3I7CisKKyAgICB0cmFjZV92ZnNfZHVwMyhvbGRmZCwgbmV3ZmQsIGZsYWdzKTsKKyAgICAv
KgorICAgICAqIERvbid0IGFsbG93IGFueSBhcmd1bWVudCBidXQgT19DTE9FWEVDLiAgQnV0IHdl
IGV2ZW4gaWdub3JlCisgICAgICogdGhhdCBhcyB3ZSBkb24ndCBzdXBwb3J0IGV4ZWMoKSBhbmQg
dGh1cyBkb24ndCBjYXJlLgorICAgICAqLworICAgIGlmICgoZmxhZ3MgJiB+T19DTE9FWEVDKSAh
PSAwKSB7CisgICAgICAgIGVycm9yID0gRUlOVkFMOworICAgICAgICBnb3RvIG91dF9lcnJubzsK
KyAgICB9CisKKyAgICBpZiAob2xkZmQgPT0gbmV3ZmQpIHsKKyAgICAgICAgZXJyb3IgPSBFSU5W
QUw7CisgICAgICAgIGdvdG8gb3V0X2Vycm5vOworICAgIH0KKworICAgIGVycm9yID0gZmdldChv
bGRmZCwgJmZwKTsKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIGdvdG8gb3V0X2Vycm5vOworCisg
ICAgZXJyb3IgPSBmZHNldChuZXdmZCwgZnApOworICAgIGlmIChlcnJvcikgeworICAgICAgICBm
ZHJvcChmcCk7CisgICAgICAgIGdvdG8gb3V0X2Vycm5vOworICAgIH0KKworICAgIGZkcm9wKGZw
KTsKKyAgICB0cmFjZV92ZnNfZHVwM19yZXQobmV3ZmQpOworICAgIHJldHVybiBuZXdmZDsKKwor
ICAgIG91dF9lcnJubzoKKyAgICB0cmFjZV92ZnNfZHVwM19lcnIoZXJyb3IpOworICAgIGVycm5v
ID0gZXJyb3I7CisgICAgcmV0dXJuIC0xOworfQorCitpbnQgZHVwMihpbnQgb2xkZmQsIGludCBu
ZXdmZCkKK3sKKyAgICBpZiAob2xkZmQgPT0gbmV3ZmQpCisgICAgICAgIHJldHVybiBuZXdmZDsK
KworICAgIHJldHVybiBkdXAzKG9sZGZkLCBuZXdmZCwgMCk7Cit9CisKKy8qCisgKiBUaGUgZmls
ZSBjb250cm9sIHN5c3RlbSBjYWxsLgorICovCisjZGVmaW5lIFNFVEZMIChPX0FQUEVORCB8IE9f
QVNZTkMgfCBPX0RJUkVDVCB8IE9fTk9BVElNRSB8IE9fTk9OQkxPQ0spCisKK1RSQUNFUE9JTlQo
dHJhY2VfdmZzX2ZjbnRsLCAiJWQgJWQgMHgleCIsIGludCwgaW50LCBpbnQpOworVFJBQ0VQT0lO
VCh0cmFjZV92ZnNfZmNudGxfcmV0LCAiXCIlc1wiIiwgaW50KTsKK1RSQUNFUE9JTlQodHJhY2Vf
dmZzX2ZjbnRsX2VyciwgIiVkIiwgaW50KTsKKworZXh0ZXJuICJDIgoraW50IGZjbnRsKGludCBm
ZCwgaW50IGNtZCwgaW50IGFyZykKK3sKKyAgICBzdHJ1Y3QgZmlsZSAqZnA7CisgICAgaW50IHJl
dCA9IDAsIGVycm9yOworICAgIGludCB0bXA7CisKKyAgICB0cmFjZV92ZnNfZmNudGwoZmQsIGNt
ZCwgYXJnKTsKKyAgICBlcnJvciA9IGZnZXQoZmQsICZmcCk7CisgICAgaWYgKGVycm9yKQorICAg
ICAgICBnb3RvIG91dF9lcnJubzsKKworICAgIC8vIEFuIGltcG9ydGFudCBub3RlIGFib3V0IG91
ciBoYW5kbGluZyBvZiBGRF9DTE9FWEVDIC8gT19DTE9FWEVDOgorICAgIC8vIGNsb3NlLW9uLWV4
ZWMgc2hvdWxkbid0IGhhdmUgYmVlbiBhIGZpbGUgZmxhZyAoZnAtPmZfZmxhZ3MpIC0gaXQgaXMg
YQorICAgIC8vIGZpbGUgZGVzY3JpcHRvciBmbGFnLCBtZWFuaW5nIHRoYXQgdGhhdCB0d28gZHVw
KCllZCBmaWxlIGRlc2NyaXB0b3JzCisgICAgLy8gY291bGQgaGF2ZSBkaWZmZXJlbnQgdmFsdWVz
IGZvciBGRF9DTE9FWEVDLiBPdXIgY3VycmVudCBpbXBsZW1lbnRhdGlvbgorICAgIC8vICp3cm9u
Z2x5KiBtYWtlcyBjbG9zZS1vbi1leGVjIGFuIGZfZmxhZyAodXNpbmcgdGhlIGJpdCBPX0NMT0VY
RUMpLgorICAgIC8vIFRoZXJlIGlzIGxpdHRsZSBwcmFjdGljYWwgZGlmZmVyZW5jZSwgdGhvdWdo
LCBiZWNhdXNlIHRoaXMgZmxhZyBpcworICAgIC8vIGlnbm9yZWQgaW4gT1N2IGFueXdheSwgYXMg
aXQgZG9lc24ndCBzdXBwb3J0IGV4ZWMoKS4KKyAgICBzd2l0Y2ggKGNtZCkgeworICAgIGNhc2Ug
Rl9EVVBGRDoKKyAgICAgICAgZXJyb3IgPSBfZmRhbGxvYyhmcCwgJnJldCwgYXJnKTsKKyAgICAg
ICAgaWYgKGVycm9yKQorICAgICAgICAgICAgZ290byBvdXRfZXJybm87CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgRl9HRVRGRDoKKyAgICAgICAgcmV0ID0gKGZwLT5mX2ZsYWdzICYgT19DTE9F
WEVDKSA/IEZEX0NMT0VYRUMgOiAwOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZfU0VURkQ6
CisgICAgICAgIEZEX0xPQ0soZnApOworICAgICAgICBmcC0+Zl9mbGFncyA9IChmcC0+Zl9mbGFn
cyAmIH5PX0NMT0VYRUMpIHwKKyAgICAgICAgICAgICAgICAoKGFyZyAmIEZEX0NMT0VYRUMpID8g
T19DTE9FWEVDIDogMCk7CisgICAgICAgIEZEX1VOTE9DSyhmcCk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgRl9HRVRGTDoKKyAgICAgICAgLy8gQXMgZXhwbGFpbmVkIGFib3ZlLCB0aGUgT19D
TE9FWEVDIHNob3VsZCBoYXZlIGJlZW4gaW4gZl9mbGFncywKKyAgICAgICAgLy8gYW5kIHNob3Vs
ZG4ndCBiZSByZXR1cm5lZC4gTGludXggYWx3YXlzIHJldHVybnMgMDEwMDAwMCAoInRoZQorICAg
ICAgICAvLyBmbGFnIGZvcm1lcmx5IGtub3duIGFzIE9fTEFSR0VGSUxFKSBzbyBsZXQncyBkbyBp
dCB0b28uCisgICAgICAgIHJldCA9IChvZmxhZ3MoZnAtPmZfZmxhZ3MpICYgfk9fQ0xPRVhFQykg
fCAwMTAwMDAwOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZfU0VURkw6CisgICAgICAgIEZE
X0xPQ0soZnApOworICAgICAgICBmcC0+Zl9mbGFncyA9IGZmbGFncygob2ZsYWdzKGZwLT5mX2Zs
YWdzKSAmIH5TRVRGTCkgfAorICAgICAgICAgICAgICAgIChhcmcgJiBTRVRGTCkpOworICAgICAg
ICBGRF9VTkxPQ0soZnApOworCisgICAgICAgIC8qIFN5bmMgbm9uYmxvY2tpbmcvYXN5bmMgc3Rh
dGUgd2l0aCBmaWxlIGZsYWdzICovCisgICAgICAgIHRtcCA9IGZwLT5mX2ZsYWdzICYgRk5PTkJM
T0NLOworICAgICAgICBmcC0+aW9jdGwoRklPTkJJTywgJnRtcCk7CisgICAgICAgIHRtcCA9IGZw
LT5mX2ZsYWdzICYgRkFTWU5DOworICAgICAgICBmcC0+aW9jdGwoRklPQVNZTkMsICZ0bXApOwor
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRl9TRVRMSzoKKyAgICAgICAgV0FSTl9PTkNFKCJm
Y250bChGX1NFVExLKSBzdHViYmVkXG4iKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGX0dF
VExLOgorICAgICAgICBXQVJOX09OQ0UoImZjbnRsKEZfR0VUTEspIHN0dWJiZWRcbiIpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEZfU0VUTEtXOgorICAgICAgICBXQVJOX09OQ0UoImZjbnRs
KEZfU0VUTEtXKSBzdHViYmVkXG4iKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGX1NFVE9X
TjoKKyAgICAgICAgV0FSTl9PTkNFKCJmY250bChGX1NFVE9XTikgc3R1YmJlZFxuIik7CisgICAg
ICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGtwcmludGYoInVuc3VwcG9ydGVkIGZj
bnRsIGNtZCAweCV4XG4iLCBjbWQpOworICAgICAgICBlcnJvciA9IEVJTlZBTDsKKyAgICB9CisK
KyAgICBmZHJvcChmcCk7CisgICAgaWYgKGVycm9yKQorICAgICAgICBnb3RvIG91dF9lcnJubzsK
KyAgICB0cmFjZV92ZnNfZmNudGxfcmV0KHJldCk7CisgICAgcmV0dXJuIHJldDsKKworICAgIG91
dF9lcnJubzoKKyAgICB0cmFjZV92ZnNfZmNudGxfZXJyKGVycm9yKTsKKyAgICBlcnJubyA9IGVy
cm9yOworICAgIHJldHVybiAtMTsKK30KKworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfYWNjZXNzLCAi
XCIlc1wiIDAlMG8iLCBjb25zdCBjaGFyKiwgaW50KTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX2Fj
Y2Vzc19yZXQsICIiKTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX2FjY2Vzc19lcnIsICIlZCIsIGlu
dCk7CisKKy8qCisgKiBDaGVjayBwZXJtaXNzaW9uIGZvciBmaWxlIGFjY2VzcworICovCitpbnQg
YWNjZXNzKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBpbnQgbW9kZSkKK3sKKyAgICB0cmFjZV92ZnNf
YWNjZXNzKHBhdGhuYW1lLCBtb2RlKTsKKyAgICBzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsK
KyAgICBjaGFyIHBhdGhbUEFUSF9NQVhdOworICAgIGludCBhY2MsIGVycm9yID0gMDsKKworICAg
IGFjYyA9IDA7CisgICAgaWYgKG1vZGUgJiBSX09LKQorICAgICAgICBhY2MgfD0gVlJFQUQ7Cisg
ICAgaWYgKG1vZGUgJiBXX09LKQorICAgICAgICBhY2MgfD0gVldSSVRFOworCisgICAgaWYgKChl
cnJvciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwgYWNjLCBwYXRoKSkgIT0gMCkKKyAgICAgICAg
Z290byBvdXRfZXJybm87CisKKyAgICBlcnJvciA9IHN5c19hY2Nlc3MocGF0aCwgbW9kZSk7Cisg
ICAgaWYgKGVycm9yKQorICAgICAgICBnb3RvIG91dF9lcnJubzsKKyAgICB0cmFjZV92ZnNfYWNj
ZXNzX3JldCgpOworICAgIHJldHVybiAwOworICAgIG91dF9lcnJubzoKKyAgICBlcnJubyA9IGVy
cm9yOworICAgIHRyYWNlX3Zmc19hY2Nlc3NfZXJyKGVycm9yKTsKKyAgICByZXR1cm4gLTE7Cit9
CisKK2ludCBmYWNjZXNzYXQoaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwgaW50IG1v
ZGUsIGludCBmbGFncykKK3sKKyAgICBpZiAoZmxhZ3MgJiBBVF9TWU1MSU5LX05PRk9MTE9XKSB7
CisgICAgICAgIFVOSU1QTEVNRU5URUQoImZhY2Nlc3NhdCgpIHdpdGggQVRfU1lNTElOS19OT0ZP
TExPVyIpOworICAgIH0KKworICAgIGlmIChwYXRobmFtZVswXSA9PSAnLycgfHwgZGlyZmQgPT0g
QVRfRkRDV0QpIHsKKyAgICAgICAgcmV0dXJuIGFjY2VzcyhwYXRobmFtZSwgbW9kZSk7CisgICAg
fQorCisgICAgc3RydWN0IGZpbGUgKmZwOworICAgIGludCBlcnJvciA9IGZnZXQoZGlyZmQsICZm
cCk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIGVycm5vID0gZXJyb3I7CisgICAgICAgIHJl
dHVybiAtMTsKKyAgICB9CisKKyAgICBzdHJ1Y3Qgdm5vZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5k
X3Zub2RlOworICAgIHZuX2xvY2sodnApOworCisgICAgc3RkOjp1bmlxdWVfcHRyPGNoYXIgW10+
IHVwIChuZXcgY2hhcltQQVRIX01BWF0pOworICAgIGNoYXIgKnAgPSB1cC5nZXQoKTsKKworICAg
IC8qIGJ1aWxkIGFic29sdXRlIHBhdGggKi8KKyAgICBzdHJsY3B5KHAsIGZwLT5mX2RlbnRyeS0+
ZF9tb3VudC0+bV9wYXRoLCBQQVRIX01BWCk7CisgICAgc3RybGNhdChwLCBmcC0+Zl9kZW50cnkt
PmRfcGF0aCwgUEFUSF9NQVgpOworICAgIHN0cmxjYXQocCwgIi8iLCBQQVRIX01BWCk7CisgICAg
c3RybGNhdChwLCBwYXRobmFtZSwgUEFUSF9NQVgpOworCisgICAgZXJyb3IgPSBhY2Nlc3MocCwg
bW9kZSk7CisKKyAgICB2bl91bmxvY2sodnApOworICAgIGZkcm9wKGZwKTsKKworICAgIHJldHVy
biBlcnJvcjsKK30KKworZXh0ZXJuICJDIiAKK2ludCBldWlkYWNjZXNzKGNvbnN0IGNoYXIgKnBh
dGhuYW1lLCBpbnQgbW9kZSkKK3sKKyAgICByZXR1cm4gYWNjZXNzKHBhdGhuYW1lLCBtb2RlKTsK
K30KKword2Vha19hbGlhcyhldWlkYWNjZXNzLGVhY2Nlc3MpOworCisjaWYgMAorc3RhdGljIGlu
dAorZnNfcGlwZShzdHJ1Y3QgdGFzayAqdCwgc3RydWN0IG1zZyAqbXNnKQoreworI2lmZGVmIENP
TkZJR19GSUZPRlMKKyAgICBjaGFyIHBhdGhbUEFUSF9NQVhdOworICAgIGZpbGVfdCByZnAsIHdm
cDsKKyAgICBpbnQgZXJyb3IsIHJmZCwgd2ZkOworCisgICAgRFBSSU5URihWRlNEQl9DT1JFLCAo
ImZzX3BpcGVcbiIpKTsKKworICAgIGlmICgocmZkID0gdGFza19uZXdmZCh0KSkgPT0gLTEpCisg
ICAgICAgIHJldHVybiBFTUZJTEU7CisgICAgdC0+dF9vZmlsZVtyZmRdID0gKGZpbGVfdCkxOyAv
KiB0ZW1wICovCisKKyAgICBpZiAoKHdmZCA9IHRhc2tfbmV3ZmQodCkpID09IC0xKSB7CisgICAg
ICAgIHQtPnRfb2ZpbGVbcmZkXSA9IG51bGxwdHI7CisgICAgICAgIHJldHVybiBFTUZJTEU7Cisg
ICAgfQorICAgIHNwcmludGYocGF0aCwgIi9tbnQvZmlmby9waXBlLSV4LSVkIiwgKHVfaW50KXQt
PnRfdGFza2lkLCByZmQpOworCisgICAgaWYgKChlcnJvciA9IHN5c19ta25vZChwYXRoLCBTX0lG
SUZPKSkgIT0gMCkKKyAgICAgICAgZ290byBvdXQ7CisgICAgaWYgKChlcnJvciA9IHN5c19vcGVu
KHBhdGgsIE9fUkRPTkxZIHwgT19OT05CTE9DSywgMCwgJnJmcCkpICE9IDApIHsKKyAgICAgICAg
Z290byBvdXQ7CisgICAgfQorICAgIGlmICgoZXJyb3IgPSBzeXNfb3BlbihwYXRoLCBPX1dST05M
WSB8IE9fTk9OQkxPQ0ssIDAsICZ3ZnApKSAhPSAwKSB7CisgICAgICAgIGdvdG8gb3V0OworICAg
IH0KKyAgICB0LT50X29maWxlW3JmZF0gPSByZnA7CisgICAgdC0+dF9vZmlsZVt3ZmRdID0gd2Zw
OworICAgIHQtPnRfbm9wZW5zICs9IDI7CisgICAgbXNnLT5kYXRhWzBdID0gcmZkOworICAgIG1z
Zy0+ZGF0YVsxXSA9IHdmZDsKKyAgICByZXR1cm4gMDsKKyAgICBvdXQ6CisgICAgdC0+dF9vZmls
ZVtyZmRdID0gbnVsbHB0cjsKKyAgICB0LT50X29maWxlW3dmZF0gPSBudWxscHRyOworICAgIHJl
dHVybiBlcnJvcjsKKyNlbHNlCisgICAgcmV0dXJuIEVOT1NZUzsKKyNlbmRpZgorfQorI2VuZGlm
CisKK1RSQUNFUE9JTlQodHJhY2VfdmZzX2lzYXR0eSwgIiVkIiwgaW50KTsKK1RSQUNFUE9JTlQo
dHJhY2VfdmZzX2lzYXR0eV9yZXQsICIlZCIsIGludCk7CitUUkFDRVBPSU5UKHRyYWNlX3Zmc19p
c2F0dHlfZXJyLCAiJWQiLCBpbnQpOworCisvKgorICogUmV0dXJuIGlmIHNwZWNpZmllZCBmaWxl
IGlzIGEgdHR5CisgKi8KK2ludCBpc2F0dHkoaW50IGZkKQoreworICAgIHN0cnVjdCBmaWxlICpm
cDsKKyAgICBpbnQgaXN0dHkgPSAwOworCisgICAgdHJhY2VfdmZzX2lzYXR0eShmZCk7CisgICAg
ZmlsZXJlZiBmKGZpbGVyZWZfZnJvbV9mZChmZCkpOworICAgIGlmICghZikgeworICAgICAgICBl
cnJubyA9IEVCQURGOworICAgICAgICB0cmFjZV92ZnNfaXNhdHR5X2VycihlcnJubyk7CisgICAg
ICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBmcCA9IGYuZ2V0KCk7CisgICAgaWYgKGR5bmFt
aWNfY2FzdDx0dHlfZmlsZSo+KGZwKSB8fAorICAgICAgICAoZnAtPmZfZGVudHJ5ICYmIGZwLT5m
X2RlbnRyeS0+ZF92bm9kZS0+dl9mbGFncyAmIFZJU1RUWSkpIHsKKyAgICAgICAgaXN0dHkgPSAx
OworICAgIH0KKworICAgIHRyYWNlX3Zmc19pc2F0dHlfcmV0KGlzdHR5KTsKKyAgICByZXR1cm4g
aXN0dHk7Cit9CisKK1RSQUNFUE9JTlQodHJhY2VfdmZzX3RydW5jYXRlLCAiXCIlc1wiIDB4JXgi
LCBjb25zdCBjaGFyKiwgb2ZmX3QpOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfdHJ1bmNhdGVfcmV0
LCAiIik7CitUUkFDRVBPSU5UKHRyYWNlX3Zmc190cnVuY2F0ZV9lcnIsICIlZCIsIGludCk7CisK
K2ludCB0cnVuY2F0ZShjb25zdCBjaGFyICpwYXRobmFtZSwgb2ZmX3QgbGVuZ3RoKQoreworICAg
IHRyYWNlX3Zmc190cnVuY2F0ZShwYXRobmFtZSwgbGVuZ3RoKTsKKyAgICBzdHJ1Y3QgdGFzayAq
dCA9IG1haW5fdGFzazsKKyAgICBjaGFyIHBhdGhbUEFUSF9NQVhdOworICAgIGludCBlcnJvcjsK
KworICAgIGVycm9yID0gRU5PRU5UOworICAgIGlmIChwYXRobmFtZSA9PSBudWxscHRyKQorICAg
ICAgICBnb3RvIG91dF9lcnJubzsKKyAgICBpZiAoKGVycm9yID0gdGFza19jb252KHQsIHBhdGhu
YW1lLCBWV1JJVEUsIHBhdGgpKSAhPSAwKQorICAgICAgICBnb3RvIG91dF9lcnJubzsKKworICAg
IGVycm9yID0gc3lzX3RydW5jYXRlKHBhdGgsIGxlbmd0aCk7CisgICAgaWYgKGVycm9yKQorICAg
ICAgICBnb3RvIG91dF9lcnJubzsKKyAgICB0cmFjZV92ZnNfdHJ1bmNhdGVfcmV0KCk7CisgICAg
cmV0dXJuIDA7CisgICAgb3V0X2Vycm5vOgorICAgIGVycm5vID0gZXJyb3I7CisgICAgdHJhY2Vf
dmZzX3RydW5jYXRlX2VycihlcnJvcik7CisgICAgcmV0dXJuIC0xOworfQorCitMRlM2NCh0cnVu
Y2F0ZSk7CisKK1RSQUNFUE9JTlQodHJhY2VfdmZzX2Z0cnVuY2F0ZSwgIiVkIDB4JXgiLCBpbnQs
IG9mZl90KTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX2Z0cnVuY2F0ZV9yZXQsICIiKTsKK1RSQUNF
UE9JTlQodHJhY2VfdmZzX2Z0cnVuY2F0ZV9lcnIsICIlZCIsIGludCk7CisKK2ludCBmdHJ1bmNh
dGUoaW50IGZkLCBvZmZfdCBsZW5ndGgpCit7CisgICAgdHJhY2VfdmZzX2Z0cnVuY2F0ZShmZCwg
bGVuZ3RoKTsKKyAgICBzdHJ1Y3QgZmlsZSAqZnA7CisgICAgaW50IGVycm9yOworCisgICAgZXJy
b3IgPSBmZ2V0KGZkLCAmZnApOworICAgIGlmIChlcnJvcikKKyAgICAgICAgZ290byBvdXRfZXJy
bm87CisKKyAgICBlcnJvciA9IHN5c19mdHJ1bmNhdGUoZnAsIGxlbmd0aCk7CisgICAgZmRyb3Ao
ZnApOworCisgICAgaWYgKGVycm9yKQorICAgICAgICBnb3RvIG91dF9lcnJubzsKKyAgICB0cmFj
ZV92ZnNfZnRydW5jYXRlX3JldCgpOworICAgIHJldHVybiAwOworCisgICAgb3V0X2Vycm5vOgor
ICAgIGVycm5vID0gZXJyb3I7CisgICAgdHJhY2VfdmZzX2Z0cnVuY2F0ZV9lcnIoZXJyb3IpOwor
ICAgIHJldHVybiAtMTsKK30KKworTEZTNjQoZnRydW5jYXRlKTsKKworc3NpemVfdCByZWFkbGlu
ayhjb25zdCBjaGFyICpwYXRobmFtZSwgY2hhciAqYnVmLCBzaXplX3QgYnVmc2l6ZSkKK3sKKyAg
ICBzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKKyAgICBjaGFyIHBhdGhbUEFUSF9NQVhdOwor
ICAgIGludCBlcnJvcjsKKyAgICBzc2l6ZV90IHNpemU7CisKKyAgICBlcnJvciA9IC1FSU5WQUw7
CisgICAgaWYgKGJ1ZnNpemUgPD0gMCkKKyAgICAgICAgZ290byBvdXRfZXJybm87CisKKyAgICBl
cnJvciA9IEVOT0VOVDsKKyAgICBpZiAocGF0aG5hbWUgPT0gbnVsbHB0cikKKyAgICAgICAgZ290
byBvdXRfZXJybm87CisgICAgZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5hbWUsIFZXUklURSwg
cGF0aCk7CisgICAgaWYgKGVycm9yKQorICAgICAgICBnb3RvIG91dF9lcnJubzsKKworICAgIHNp
emUgID0gMDsKKyAgICBlcnJvciA9IHN5c19yZWFkbGluayhwYXRoLCBidWYsIGJ1ZnNpemUsICZz
aXplKTsKKworICAgIGlmIChlcnJvciAhPSAwKQorICAgICAgICBnb3RvIG91dF9lcnJubzsKKwor
ICAgIHJldHVybiBzaXplOworICAgIG91dF9lcnJubzoKKyAgICBlcnJubyA9IGVycm9yOworICAg
IHJldHVybiAtMTsKK30KKworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZmFsbG9jYXRlLCAiJWQgJWQg
MHgleCAweCV4IiwgaW50LCBpbnQsIGxvZmZfdCwgbG9mZl90KTsKK1RSQUNFUE9JTlQodHJhY2Vf
dmZzX2ZhbGxvY2F0ZV9yZXQsICIiKTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX2ZhbGxvY2F0ZV9l
cnIsICIlZCIsIGludCk7CisKK2ludCBmYWxsb2NhdGUoaW50IGZkLCBpbnQgbW9kZSwgbG9mZl90
IG9mZnNldCwgbG9mZl90IGxlbikKK3sKKyAgICBzdHJ1Y3QgZmlsZSAqZnA7CisgICAgaW50IGVy
cm9yOworCisgICAgdHJhY2VfdmZzX2ZhbGxvY2F0ZShmZCwgbW9kZSwgb2Zmc2V0LCBsZW4pOwor
ICAgIGVycm9yID0gZmdldChmZCwgJmZwKTsKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIGdvdG8g
b3V0X2Vycm5vOworCisgICAgZXJyb3IgPSBzeXNfZmFsbG9jYXRlKGZwLCBtb2RlLCBvZmZzZXQs
IGxlbik7CisgICAgZmRyb3AoZnApOworCisgICAgaWYgKGVycm9yKQorICAgICAgICBnb3RvIG91
dF9lcnJubzsKKyAgICB0cmFjZV92ZnNfZmFsbG9jYXRlX3JldCgpOworICAgIHJldHVybiAwOwor
CisgICAgb3V0X2Vycm5vOgorICAgIHRyYWNlX3Zmc19mYWxsb2NhdGVfZXJyKGVycm9yKTsKKyAg
ICBlcnJubyA9IGVycm9yOworICAgIHJldHVybiAtMTsKK30KKworTEZTNjQoZmFsbG9jYXRlKTsK
KworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfdXRpbWVzLCAiXCIlc1wiIiwgY29uc3QgY2hhciopOwor
VFJBQ0VQT0lOVCh0cmFjZV92ZnNfdXRpbWVzX3JldCwgIiIpOworVFJBQ0VQT0lOVCh0cmFjZV92
ZnNfdXRpbWVzX2VyciwgIiVkIiwgaW50KTsKKworaW50IGZ1dGltZXMoaW50IGZkLCBjb25zdCBz
dHJ1Y3QgdGltZXZhbCB0aW1lc1syXSkKK3sKKyAgICByZXR1cm4gZnV0aW1lc2F0KGZkLCBudWxs
cHRyLCB0aW1lcyk7Cit9CisKK2ludCBmdXRpbWVzYXQoaW50IGRpcmZkLCBjb25zdCBjaGFyICpw
YXRobmFtZSwgY29uc3Qgc3RydWN0IHRpbWV2YWwgdGltZXNbMl0pCit7CisgICAgc3RydWN0IHN0
YXQgc3Q7CisgICAgc3RydWN0IGZpbGUgKmZwOworICAgIGludCBlcnJvcjsKKyAgICBjaGFyICph
YnNvbHV0ZV9wYXRoOworCisgICAgaWYgKChwYXRobmFtZSAmJiBwYXRobmFtZVswXSA9PSAnLycp
IHx8IGRpcmZkID09IEFUX0ZEQ1dEKQorICAgICAgICByZXR1cm4gdXRpbWVzKHBhdGhuYW1lLCB0
aW1lcyk7CisKKyAgICAvLyBOb3RlOiBpZiBwYXRobmFtZSA9PSBudWxscHRyLCBmdXRpbWVzYXQg
b3BlcmF0ZXMgb24gZGlyZmQgaXRzZWxmLCBhbmQgaW4KKyAgICAvLyB0aGF0IGNhc2UgaXQgZG9l
c24ndCBoYXZlIHRvIGJlIGEgZGlyZWN0b3J5LgorICAgIGlmIChwYXRobmFtZSkgeworICAgICAg
ICBlcnJvciA9IGZzdGF0KGRpcmZkLCAmc3QpOworICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAg
ICAgICAgIGVycm9yID0gZXJybm87CisgICAgICAgICAgICBnb3RvIG91dF9lcnJubzsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmICghU19JU0RJUihzdC5zdF9tb2RlKSl7CisgICAgICAgICAgICBl
cnJvciA9IEVOT1RESVI7CisgICAgICAgICAgICBnb3RvIG91dF9lcnJubzsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGVycm9yID0gZmdldChkaXJmZCwgJmZwKTsKKyAgICBpZiAoZXJyb3IpCisg
ICAgICAgIGdvdG8gb3V0X2Vycm5vOworCisgICAgLyogYnVpbGQgYWJzb2x1dGUgcGF0aCAqLwor
ICAgIGFic29sdXRlX3BhdGggPSAoY2hhciopbWFsbG9jKFBBVEhfTUFYKTsKKyAgICBzdHJsY3B5
KGFic29sdXRlX3BhdGgsIGZwLT5mX2RlbnRyeS0+ZF9tb3VudC0+bV9wYXRoLCBQQVRIX01BWCk7
CisgICAgc3RybGNhdChhYnNvbHV0ZV9wYXRoLCBmcC0+Zl9kZW50cnktPmRfcGF0aCwgUEFUSF9N
QVgpOworCisgICAgaWYgKHBhdGhuYW1lKSB7CisgICAgICAgIHN0cmxjYXQoYWJzb2x1dGVfcGF0
aCwgIi8iLCBQQVRIX01BWCk7CisgICAgICAgIHN0cmxjYXQoYWJzb2x1dGVfcGF0aCwgcGF0aG5h
bWUsIFBBVEhfTUFYKTsKKyAgICB9CisKKyAgICBlcnJvciA9IHV0aW1lcyhhYnNvbHV0ZV9wYXRo
LCB0aW1lcyk7CisgICAgZnJlZShhYnNvbHV0ZV9wYXRoKTsKKworICAgIGZkcm9wKGZwKTsKKwor
ICAgIGlmIChlcnJvcikKKyAgICAgICAgZ290byBvdXRfZXJybm87CisgICAgcmV0dXJuIDA7CisK
KyAgICBvdXRfZXJybm86CisgICAgZXJybm8gPSBlcnJvcjsKKyAgICByZXR1cm4gLTE7Cit9CisK
K1RSQUNFUE9JTlQodHJhY2VfdmZzX3V0aW1lbnNhdCwgIlwiJXNcIiIsIGNvbnN0IGNoYXIqKTsK
K1RSQUNFUE9JTlQodHJhY2VfdmZzX3V0aW1lbnNhdF9yZXQsICIiKTsKK1RSQUNFUE9JTlQodHJh
Y2VfdmZzX3V0aW1lbnNhdF9lcnIsICIlZCIsIGludCk7CisKK2V4dGVybiAiQyIKK2ludCB1dGlt
ZW5zYXQoaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwgY29uc3Qgc3RydWN0IHRpbWVz
cGVjIHRpbWVzWzJdLCBpbnQgZmxhZ3MpCit7CisgICAgdHJhY2VfdmZzX3V0aW1lbnNhdChwYXRo
bmFtZSk7CisKKyAgICBhdXRvIGVycm9yID0gc3lzX3V0aW1lbnNhdChkaXJmZCwgcGF0aG5hbWUs
IHRpbWVzLCBmbGFncyk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIHRyYWNlX3Zmc191dGlt
ZW5zYXRfZXJyKGVycm9yKTsKKyAgICAgICAgZXJybm8gPSBlcnJvcjsKKyAgICAgICAgcmV0dXJu
IC0xOworICAgIH0KKworICAgIHRyYWNlX3Zmc191dGltZW5zYXRfcmV0KCk7CisgICAgcmV0dXJu
IDA7Cit9CisKK1RSQUNFUE9JTlQodHJhY2VfdmZzX2Z1dGltZW5zLCAiJWQiLCBpbnQpOworVFJB
Q0VQT0lOVCh0cmFjZV92ZnNfZnV0aW1lbnNfcmV0LCAiIik7CitUUkFDRVBPSU5UKHRyYWNlX3Zm
c19mdXRpbWVuc19lcnIsICIlZCIsIGludCk7CisKK2V4dGVybiAiQyIKK2ludCBmdXRpbWVucyhp
bnQgZmQsIGNvbnN0IHN0cnVjdCB0aW1lc3BlYyB0aW1lc1syXSkKK3sKKyAgICB0cmFjZV92ZnNf
ZnV0aW1lbnMoZmQpOworCisgICAgYXV0byBlcnJvciA9IHN5c19mdXRpbWVucyhmZCwgdGltZXMp
OworICAgIGlmIChlcnJvcikgeworICAgICAgICB0cmFjZV92ZnNfZnV0aW1lbnNfZXJyKGVycm9y
KTsKKyAgICAgICAgZXJybm8gPSBlcnJvcjsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKwor
ICAgIHRyYWNlX3Zmc19mdXRpbWVuc19yZXQoKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGlj
IGludCBkb191dGltZXMoY29uc3QgY2hhciAqcGF0aG5hbWUsIGNvbnN0IHN0cnVjdCB0aW1ldmFs
IHRpbWVzWzJdLCBpbnQgZmxhZ3MpCit7CisgICAgc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7
CisgICAgY2hhciBwYXRoW1BBVEhfTUFYXTsKKyAgICBpbnQgZXJyb3I7CisKKyAgICB0cmFjZV92
ZnNfdXRpbWVzKHBhdGhuYW1lKTsKKworICAgIGVycm9yID0gdGFza19jb252KHQsIHBhdGhuYW1l
LCAwLCBwYXRoKTsKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgdHJhY2VfdmZzX3V0aW1lc19l
cnIoZXJyb3IpOworICAgICAgICByZXR1cm4gbGliY19lcnJvcihlcnJvcik7CisgICAgfQorCisg
ICAgZXJyb3IgPSBzeXNfdXRpbWVzKHBhdGgsIHRpbWVzLCBmbGFncyk7CisgICAgaWYgKGVycm9y
KSB7CisgICAgICAgIHRyYWNlX3Zmc191dGltZXNfZXJyKGVycm9yKTsKKyAgICAgICAgcmV0dXJu
IGxpYmNfZXJyb3IoZXJyb3IpOworICAgIH0KKworICAgIHRyYWNlX3Zmc191dGltZXNfcmV0KCk7
CisgICAgcmV0dXJuIDA7Cit9CisKK2V4dGVybiAiQyIKK2ludCB1dGltZXMoY29uc3QgY2hhciAq
cGF0aG5hbWUsIGNvbnN0IHN0cnVjdCB0aW1ldmFsIHRpbWVzWzJdKQoreworICAgIHJldHVybiBk
b191dGltZXMocGF0aG5hbWUsIHRpbWVzLCAwKTsKK30KKworZXh0ZXJuICJDIgoraW50IGx1dGlt
ZXMoY29uc3QgY2hhciAqcGF0aG5hbWUsIGNvbnN0IHN0cnVjdCB0aW1ldmFsIHRpbWVzWzJdKQor
eworICAgIHJldHVybiBkb191dGltZXMocGF0aG5hbWUsIHRpbWVzLCBBVF9TWU1MSU5LX05PRk9M
TE9XKTsKK30KKworZXh0ZXJuICJDIgoraW50IHV0aW1lKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBj
b25zdCBzdHJ1Y3QgdXRpbWJ1ZiAqdCkKK3sKKyAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOjpjaHJv
bm87CisKKyAgICBzdHJ1Y3QgdGltZXZhbCB0aW1lc1syXTsKKyAgICB0aW1lc1swXS50dl91c2Vj
ID0gMDsKKyAgICB0aW1lc1sxXS50dl91c2VjID0gMDsKKyAgICBpZiAoIXQpIHsKKyAgICAgICAg
bG9uZyBpbnQgdHNlYyA9IGR1cmF0aW9uX2Nhc3Q8c2Vjb25kcz4ob3N2OjpjbG9jazo6d2FsbDo6
bm93KCkudGltZV9zaW5jZV9lcG9jaCgpKS5jb3VudCgpOworICAgICAgICB0aW1lc1swXS50dl9z
ZWMgPSB0c2VjOworICAgICAgICB0aW1lc1sxXS50dl9zZWMgPSB0c2VjOworICAgIH0gZWxzZSB7
CisgICAgICAgIHRpbWVzWzBdLnR2X3NlYyA9IHQtPmFjdGltZTsKKyAgICAgICAgdGltZXNbMV0u
dHZfc2VjID0gdC0+bW9kdGltZTsKKyAgICB9CisKKyAgICByZXR1cm4gdXRpbWVzKHBhdGhuYW1l
LCB0aW1lcyk7Cit9CisKK1RSQUNFUE9JTlQodHJhY2VfdmZzX2NobW9kLCAiXCIlc1wiIDAlMG8i
LCBjb25zdCBjaGFyKiwgbW9kZV90KTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX2NobW9kX3JldCwg
IiIpOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfY2htb2RfZXJyLCAiJWQiLCBpbnQpOworCitpbnQg
Y2htb2QoY29uc3QgY2hhciAqcGF0aG5hbWUsIG1vZGVfdCBtb2RlKQoreworICAgIHRyYWNlX3Zm
c19jaG1vZChwYXRobmFtZSwgbW9kZSk7CisgICAgc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7
CisgICAgY2hhciBwYXRoW1BBVEhfTUFYXTsKKyAgICBpbnQgZXJyb3IgPSBFTk9FTlQ7CisgICAg
aWYgKHBhdGhuYW1lID09IG51bGxwdHIpCisgICAgICAgIGdvdG8gb3V0X2Vycm5vOworICAgIGlm
ICgoZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5hbWUsIFZXUklURSwgcGF0aCkpICE9IDApCisg
ICAgICAgIGdvdG8gb3V0X2Vycm5vOworICAgIGVycm9yID0gc3lzX2NobW9kKHBhdGgsIG1vZGUg
JiBBTExQRVJNUyk7CisgICAgaWYgKGVycm9yKQorICAgICAgICBnb3RvIG91dF9lcnJubzsKKyAg
ICB0cmFjZV92ZnNfY2htb2RfcmV0KCk7CisgICAgcmV0dXJuIDA7CitvdXRfZXJybm86CisgICAg
dHJhY2VfdmZzX2NobW9kX2VycihlcnJvcik7CisgICAgZXJybm8gPSBlcnJvcjsKKyAgICByZXR1
cm4gLTE7Cit9CisKK1RSQUNFUE9JTlQodHJhY2VfdmZzX2ZjaG1vZCwgIlwiJWRcIiAwJTBvIiwg
aW50LCBtb2RlX3QpOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZmNobW9kX3JldCwgIiIpOworCitp
bnQgZmNobW9kKGludCBmZCwgbW9kZV90IG1vZGUpCit7CisgICAgdHJhY2VfdmZzX2ZjaG1vZChm
ZCwgbW9kZSk7CisgICAgYXV0byBlcnJvciA9IHN5c19mY2htb2QoZmQsIG1vZGUgJiBBTExQRVJN
Uyk7CisgICAgdHJhY2VfdmZzX2ZjaG1vZF9yZXQoKTsKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAg
ICAgZXJybm8gPSBlcnJvcjsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0gZWxzZSB7CisgICAg
ICAgIHJldHVybiAwOworICAgIH0KK30KKworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZmNob3duLCAi
XCIlZFwiICVkICVkIiwgaW50LCB1aWRfdCwgZ2lkX3QpOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNf
ZmNob3duX3JldCwgIiIpOworCitpbnQgZmNob3duKGludCBmZCwgdWlkX3Qgb3duZXIsIGdpZF90
IGdyb3VwKQoreworICAgIHRyYWNlX3Zmc19mY2hvd24oZmQsIG93bmVyLCBncm91cCk7CisgICAg
V0FSTl9TVFVCQkVEKCk7CisgICAgdHJhY2VfdmZzX2ZjaG93bl9yZXQoKTsKKyAgICByZXR1cm4g
MDsKK30KKworaW50IGNob3duKGNvbnN0IGNoYXIgKnBhdGgsIHVpZF90IG93bmVyLCBnaWRfdCBn
cm91cCkKK3sKKyAgICBXQVJOX1NUVUJCRUQoKTsKKyAgICByZXR1cm4gMDsKK30KKworaW50IGxj
aG93bihjb25zdCBjaGFyICpwYXRoLCB1aWRfdCBvd25lciwgZ2lkX3QgZ3JvdXApCit7CisgICAg
V0FSTl9TVFVCQkVEKCk7CisgICAgcmV0dXJuIDA7Cit9CisKKworc3NpemVfdCBzZW5kZmlsZShp
bnQgb3V0X2ZkLCBpbnQgaW5fZmQsIG9mZl90ICpfb2Zmc2V0LCBzaXplX3QgY291bnQpCit7Cisg
ICAgc3RydWN0IGZpbGUgKmluX2ZwOworICAgIHN0cnVjdCBmaWxlICpvdXRfZnA7CisgICAgZmls
ZXJlZiBpbl9me2ZpbGVyZWZfZnJvbV9mZChpbl9mZCl9OworICAgIGZpbGVyZWYgb3V0X2Z7Zmls
ZXJlZl9mcm9tX2ZkKG91dF9mZCl9OworCisgICAgaWYgKCFpbl9mIHx8ICFvdXRfZikgeworICAg
ICAgICByZXR1cm4gbGliY19lcnJvcihFQkFERik7CisgICAgfQorCisgICAgaW5fZnAgPSBpbl9m
LmdldCgpOworICAgIG91dF9mcCA9IG91dF9mLmdldCgpOworCisgICAgaWYgKCFpbl9mcC0+Zl9k
ZW50cnkpIHsKKyAgICAgICAgcmV0dXJuIGxpYmNfZXJyb3IoRUJBREYpOworICAgIH0KKworICAg
IGlmICghKGluX2ZwLT5mX2ZsYWdzICYgRlJFQUQpKSB7CisgICAgICAgIHJldHVybiBsaWJjX2Vy
cm9yKEVCQURGKTsKKyAgICB9CisKKyAgICBpZiAob3V0X2ZwLT5mX3R5cGUgJiBEVFlQRV9WTk9E
RSkgeworICAgICAgICBpZiAoIW91dF9mcC0+Zl9kZW50cnkpIHsKKyAgICAgICAgICAgIHJldHVy
biBsaWJjX2Vycm9yKEVCQURGKTsKKwl9IGVsc2UgaWYgKCEob3V0X2ZwLT5mX2ZsYWdzICYgRldS
SVRFKSkgeworICAgICAgICAgICAgcmV0dXJuIGxpYmNfZXJyb3IoRUJBREYpOworCX0KKyAgICB9
CisKKyAgICBvZmZfdCBvZmZzZXQgOworCisgICAgaWYgKF9vZmZzZXQgIT0gbnVsbHB0cikgewor
ICAgICAgICBvZmZzZXQgPSAqX29mZnNldDsKKyAgICB9IGVsc2UgeworICAgICAgICAvKiBpZiBf
b2Zmc2V0IGlzIG51bGxwdHIsIHdlIG5lZWQgdG8gcmVhZCBmcm9tIHRoZSBwcmVzZW50IHBvc2l0
aW9uIG9mIGluX2ZkICovCisgICAgICAgIG9mZnNldCA9IGxzZWVrKGluX2ZkLCAwLCBTRUVLX0NV
Uik7CisgICAgfQorCisgICAgLy8gQ29uc3RyYWluIGNvdW50IHRvIHRoZSBleHRlbnQgb2YgdGhl
IGZpbGUuLi4KKyAgICBzdHJ1Y3Qgc3RhdCBzdDsKKyAgICBpZiAoZnN0YXQoaW5fZmQsICZzdCkg
PCAwKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAob2Zm
c2V0ID49IHN0LnN0X3NpemUpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9IGVs
c2UgaWYgKChvZmZzZXQgKyBjb3VudCkgPj0gc3Quc3Rfc2l6ZSkgeworICAgICAgICAgICAgY291
bnQgPSBzdC5zdF9zaXplIC0gb2Zmc2V0OworICAgICAgICAgICAgaWYgKGNvdW50ID09IDApIHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KKworICAgIHNpemVfdCBieXRlc190b19tbWFwID0gY291bnQgKyAob2Zmc2V0ICUgbW11Ojpw
YWdlX3NpemUpOworICAgIG9mZl90IG9mZnNldF9mb3JfbW1hcCA9ICBhbGlnbl9kb3duKG9mZnNl
dCwgKG9mZl90KW1tdTo6cGFnZV9zaXplKTsKKworICAgIGNoYXIgKnNyYyA9IHN0YXRpY19jYXN0
PGNoYXIgKj4obW1hcChudWxscHRyLCBieXRlc190b19tbWFwLCBQUk9UX1JFQUQsIE1BUF9TSEFS
RUQsIGluX2ZkLCBvZmZzZXRfZm9yX21tYXApKTsKKworICAgIGlmIChzcmMgPT0gTUFQX0ZBSUxF
RCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgYXV0byByZXQgPSB3cml0ZShv
dXRfZmQsIHNyYyArIChvZmZzZXQgJSBQQUdFU0laRSksIGNvdW50KTsKKworICAgIGlmIChyZXQg
PCAwKSB7CisgICAgICAgIHJldHVybiBsaWJjX2Vycm9yKGVycm5vKTsKKyAgICB9IGVsc2UgaWYo
X29mZnNldCA9PSBudWxscHRyKSB7CisgICAgICAgIGxzZWVrKGluX2ZkLCByZXQsIFNFRUtfQ1VS
KTsKKyAgICB9IGVsc2UgeworICAgICAgICAqX29mZnNldCArPSByZXQ7CisgICAgfQorCisgICAg
YXNzZXJ0KG11bm1hcChzcmMsIGNvdW50KSA9PSAwKTsKKworICAgIHJldHVybiByZXQ7Cit9CisK
KyN1bmRlZiBzZW5kZmlsZTY0CitMRlM2NChzZW5kZmlsZSk7CisKK05PX1NZUyhpbnQgZmNobW9k
YXQoaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwgbW9kZV90IG1vZGUsIGludCBmbGFn
cykpOworCittb2RlX3QgdW1hc2sobW9kZV90IG5ld21hc2spCit7CisgICAgcmV0dXJuIGdsb2Jh
bF91bWFzay5leGNoYW5nZShuZXdtYXNrLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKK30K
KworaW50Citmc19ub29wKHZvaWQpCit7CisgICAgcmV0dXJuIDA7Cit9CisKK2ludCBjaHJvb3Qo
Y29uc3QgY2hhciAqcGF0aCkKK3sKKyAgICBXQVJOX1NUVUJCRUQoKTsKKyAgICBlcnJubyA9IEVO
T1NZUzsKKyAgICByZXR1cm4gLTE7Cit9CisKKy8vIHVucGFja19ib290ZnMoKSB1bnBhY2tzIGEg
Y29sbGVjdGlvbiBvZiBmaWxlcyBzdG9yZWQgYXMgcGFydCBvZiB0aGUgT1N2CisvLyBleGVjdXRh
YmxlIChpbiBtZW1vcnkgbG9jYXRpb24gImJvb3Rmc19zdGFydCIpIGludG8gdGhlIGZpbGUgc3lz
dGVtLAorLy8gbm9ybWFsbHkgdGhlIGluLW1lbW9yeSBmaWxlc3lzdGVtIHJhbWZzLgorLy8gVGhl
IGZpbGVzIGFyZSBwYWNrZWQgaW4gdGhlIGV4ZWN1dGFibGUgaW4gYW4gYWQtaG9jIGZvcm1hdCBk
ZWZpbmVkIGhlcmUuCisvLyBDb2RlIGluIHNjcmlwdHMvbWtib290ZnMucHkgcGFja3MgZmlsZXMg
aW50byB0aGlzIGZvcm1hdC4KKyNkZWZpbmUgQk9PVEZTX1BBVEhfTUFYIDExMQorZW51bSBjbGFz
cyBib290ZnNfZmlsZV90eXBlIDogY2hhciB7IG90aGVyID0gMCwgc3ltbGluayA9IDEgfTsKK3N0
cnVjdCBib290ZnNfbWV0YWRhdGEgeworICAgIHVpbnQ2NF90IHNpemU7CisgICAgdWludDY0X3Qg
b2Zmc2V0OworICAgIC8vIFRoZSBmaWxlJ3MgdHlwZS4gQ2FuIGJlICJzeW1saW5rIiBvciAib3Ro
ZXIiLiBBIGRpcmVjdG9yeSBpcyBhbiAib3RoZXIiCisgICAgLy8gZmlsZSB3aXRoIGl0cyBuYW1l
IGVuZGluZyB3aXRoIGEgIi8iIChhbmQgbm8gY29udGVudCkuCisgICAgYm9vdGZzX2ZpbGVfdHlw
ZSB0eXBlOworICAgIC8vIG5hbWUgbXVzdCBlbmQgd2l0aCBhIG51bGwuIEZvciBzeW1saW5rIGZp
bGVzLCB0aGUgY29udGVudCBtdXN0IGVuZAorICAgIC8vIHdpdGggYSBudWxsIGFzIHdlbGwuCisg
ICAgY2hhciBuYW1lW0JPT1RGU19QQVRIX01BWF07Cit9OworCitleHRlcm4gY2hhciBib290ZnNf
c3RhcnQ7CisKK2ludCByYW1mc19zZXRfZmlsZV9kYXRhKHN0cnVjdCB2bm9kZSAqdnAsIGNvbnN0
IHZvaWQgKmRhdGEsIHNpemVfdCBzaXplKTsKK3ZvaWQgdW5wYWNrX2Jvb3Rmcyh2b2lkKQorewor
ICAgIHN0cnVjdCBib290ZnNfbWV0YWRhdGEgKm1kID0gKHN0cnVjdCBib290ZnNfbWV0YWRhdGEg
KikmYm9vdGZzX3N0YXJ0OworICAgIGludCBmZCwgaTsKKworICAgIGZvciAoaSA9IDA7IG1kW2ld
Lm5hbWVbMF07IGkrKykgeworICAgICAgICBpbnQgcmV0OworICAgICAgICBjaGFyICpwOworCisg
ICAgICAgIC8vIG1rZGlyKCkgZGlyZWN0b3JpZXMgbmVlZGVkIGZvciB0aGlzIHBhdGggbmFtZSwg
YXMgbmVjZXNzYXJ5CisgICAgICAgIGNoYXIgdG1wW0JPT1RGU19QQVRIX01BWF07CisgICAgICAg
IHN0cmxjcHkodG1wLCBtZFtpXS5uYW1lLCBCT09URlNfUEFUSF9NQVgpOworICAgICAgICBmb3Ig
KHAgPSB0bXA7ICpwOyArK3ApIHsKKyAgICAgICAgICAgIGlmICgqcCA9PSAnLycpIHsKKyAgICAg
ICAgICAgICAgICAqcCA9ICdcMCc7CisgICAgICAgICAgICAgICAgbWtkaXIodG1wLCAwNjY2KTsg
IC8vIHNpbGVudGx5IGlnbm9yZSBlcnJvcnMgYW5kIGV4aXN0aW5nIGRpcnMKKyAgICAgICAgICAg
ICAgICAqcCA9ICcvJzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmICht
ZFtpXS50eXBlID09IGJvb3Rmc19maWxlX3R5cGU6OnN5bWxpbmspIHsKKyAgICAgICAgICAgIC8v
IFRoaXMgaXMgYSBzeW1ib2xpYyBsaW5rIHJlY29yZC4gVGhlIGZpbGUncyBjb250ZW50IGlzIHRo
ZQorICAgICAgICAgICAgLy8gdGFyZ2V0IHBhdGgsIGFuZCB3ZSBhc3N1bWUgZW5kcyB3aXRoIGEg
bnVsbC4KKyAgICAgICAgICAgIGlmIChzeW1saW5rKCZib290ZnNfc3RhcnQgKyBtZFtpXS5vZmZz
ZXQsIG1kW2ldLm5hbWUpICE9IDApIHsKKyAgICAgICAgICAgICAgICBrcHJpbnRmKCJjb3VsZG4n
dCBzeW1saW5rICVzOiAlZFxuIiwgbWRbaV0ubmFtZSwgZXJybm8pOworICAgICAgICAgICAgICAg
IHN5c19wYW5pYygidW5wYWNrX2Jvb3RmcyBmYWlsZWQiKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmICgqKHAtMSkgPT0gJy8nICYm
IG1kW2ldLnNpemUgPT0gMCkgeworICAgICAgICAgICAgLy8gVGhpcyBpcyBkaXJlY3RvcnkgcmVj
b3JkLiBOb3RoaW5nIGVsc2UgdG8gZG8KKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9
CisKKyAgICAgICAgZmQgPSBjcmVhdChtZFtpXS5uYW1lLCAwNjY2KTsKKyAgICAgICAgaWYgKGZk
IDwgMCkgeworICAgICAgICAgICAga3ByaW50ZigiY291bGRuJ3QgY3JlYXRlICVzOiAlZFxuIiwK
KyAgICAgICAgICAgICAgICAgICAgbWRbaV0ubmFtZSwgZXJybm8pOworICAgICAgICAgICAgc3lz
X3BhbmljKCJ1bnBhY2tfYm9vdGZzIGZhaWxlZCIpOworICAgICAgICB9CisKKyAgICAgICAgc3Ry
dWN0IGZpbGUgKmZwOworICAgICAgICBpbnQgZXJyb3IgPSBmZ2V0KGZkLCAmZnApOworICAgICAg
ICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgIGtwcmludGYoImNvdWxkbid0IGZnZXQgJXM6ICVk
XG4iLAorICAgICAgICAgICAgICAgICAgICBtZFtpXS5uYW1lLCBlcnJvcik7CisgICAgICAgICAg
ICBzeXNfcGFuaWMoInVucGFja19ib290ZnMgZmFpbGVkIik7CisgICAgICAgIH0KKworICAgICAg
ICBzdHJ1Y3Qgdm5vZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOworICAgICAgICByZXQg
PSByYW1mc19zZXRfZmlsZV9kYXRhKHZwLCAmYm9vdGZzX3N0YXJ0ICsgbWRbaV0ub2Zmc2V0LCBt
ZFtpXS5zaXplKTsKKyAgICAgICAgaWYgKHJldCkgeworICAgICAgICAgICAga3ByaW50ZigicmFt
ZnNfc2V0X2ZpbGVfZGF0YSBmYWlsZWQsIHJldCA9ICVkXG4iLCByZXQpOworICAgICAgICAgICAg
c3lzX3BhbmljKCJ1bnBhY2tfYm9vdGZzIGZhaWxlZCIpOworICAgICAgICB9CisKKyAgICAgICAg
ZmRyb3AoZnApOworICAgICAgICBjbG9zZShmZCk7CisgICAgfQorfQorCit2b2lkIG1vdW50X3Jv
b3Rmcyh2b2lkKQoreworICAgIGludCByZXQ7CisKKyAgICByZXQgPSBzeXNfbW91bnQoIiIsICIv
IiwgInJhbWZzIiwgMCwgbnVsbHB0cik7CisgICAgaWYgKHJldCkKKyAgICAgICAga3ByaW50Zigi
ZmFpbGVkIHRvIG1vdW50IHJvb3RmcywgZXJyb3IgPSAlc1xuIiwgc3RyZXJyb3IocmV0KSk7CisK
KyAgICBpZiAobWtkaXIoIi9kZXYiLCAwNzU1KSA8IDApCisgICAgICAgIGtwcmludGYoImZhaWxl
ZCB0byBjcmVhdGUgL2RldiwgZXJyb3IgPSAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKKworICAg
IHJldCA9IHN5c19tb3VudCgiIiwgIi9kZXYiLCAiZGV2ZnMiLCAwLCBudWxscHRyKTsKKyAgICBp
ZiAocmV0KQorICAgICAgICBrcHJpbnRmKCJmYWlsZWQgdG8gbW91bnQgZGV2ZnMsIGVycm9yID0g
JXNcbiIsIHN0cmVycm9yKHJldCkpOworfQorCitleHRlcm4gIkMiCitpbnQgbm1vdW50KHN0cnVj
dCBpb3ZlYyAqaW92LCB1bnNpZ25lZCBuaW92LCBpbnQgZmxhZ3MpCit7CisgICAgc3RydWN0IGFy
Z3MgeworICAgICAgICBjaGFyKiBmc3R5cGUgPSBudWxscHRyOworICAgICAgICBjaGFyKiBmc3Bh
dGggPSBudWxscHRyOworICAgICAgICBjaGFyKiBmcm9tID0gbnVsbHB0cjsKKyAgICB9OworICAg
IHN0YXRpYyB1bm9yZGVyZWRfbWFwPHN0cmluZywgY2hhciogYXJnczo6Kj4gYXJnbWFwIHsKKyAg
ICAgICAgeyAiZnN0eXBlIiwgJmFyZ3M6OmZzdHlwZSB9LAorICAgICAgICB7ICJmc3BhdGgiLCAm
YXJnczo6ZnNwYXRoIH0sCisgICAgICAgIHsgImZyb20iLCAmYXJnczo6ZnJvbSB9LAorICAgIH07
CisgICAgYXJncyBhOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbmlvdjsgaSArPSAyKSB7
CisgICAgICAgIHN0ZDo6c3RyaW5nIHMoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGlvdltpXS5p
b3ZfYmFzZSkpOworICAgICAgICBpZiAoYXJnbWFwLmNvdW50KHMpKSB7CisgICAgICAgICAgICBh
LiooYXJnbWFwW3NdKSA9IHN0YXRpY19jYXN0PGNoYXIqPihpb3ZbaSsxXS5pb3ZfYmFzZSk7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHN5c19tb3VudChhLmZyb20sIGEuZnNwYXRoLCBh
LmZzdHlwZSwgZmxhZ3MsIG51bGxwdHIpOworfQorCitzdGF0aWMgdm9pZCBpbXBvcnRfZXh0cmFf
emZzX3Bvb2xzKHZvaWQpCit7CisgICAgc3RydWN0IHN0YXQgc3Q7CisgICAgaW50IHJldDsKKwor
ICAgIC8vIFRoZSBmaWxlICcvZXRjL21udHRhYicgaXMgYSBMaWJaRlMgcmVxdWlyZW1lbnQgYW5k
IHdpbGwgbm90CisgICAgLy8gZXhpc3QgZHVyaW5nIGNwaW9kIHBoYXNlLiBUaGUgZnVuY3Rpb25h
bGl0eSBwcm92aWRlZCBieSB0aGlzCisgICAgLy8gZnVuY3Rpb24gaXNuJ3QgbmVlZGVkIGR1cmlu
ZyB0aGF0IHBoYXNlLCBzbyBsZXQncyBza2lwIGl0LgorICAgIGlmIChzdGF0KCIvZXRjL21udHRh
YiIgLCAmc3QpICE9IDApIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEltcG9y
dCBleHRyYSBwb29scyBtb3VudGluZyBkYXRhc2V0cyB0aGVyZSBjb250YWluZWQuCisgICAgLy8g
RGF0YXNldHMgZnJvbSBvc3YgcG9vbCB3aWxsIG5vdCBiZSBtb3VudGVkIGhlcmUuCisgICAgaWYg
KGFjY2VzcygienBvb2wuc28iLCBYX09LKSAhPSAwKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgdmVjdG9yPHN0cmluZz4genBvb2xfYXJncyA9IHsienBvb2wiLCAiaW1wb3J0IiwgIi1m
IiwgIi1hIiB9OworICAgIGF1dG8gb2sgPSBvc3Y6OnJ1bigienBvb2wuc28iLCB6cG9vbF9hcmdz
LCAmcmV0KTsKKyAgICBhc3NlcnQob2spOworCisgICAgaWYgKCFyZXQpIHsKKyAgICAgICAgZGVi
dWcoInpmczogZXh0cmEgWkZTIHBvb2wocykgZm91bmQuXG4iKTsKKyAgICB9Cit9CisKK3ZvaWQg
cGl2b3Rfcm9vdGZzKGNvbnN0IGNoYXIqIHBhdGgpCit7CisgICAgaW50IHJldCA9IHN5c19waXZv
dF9yb290KHBhdGgsICIvIik7CisgICAgaWYgKHJldCkKKyAgICAgICAga3ByaW50ZigiZmFpbGVk
IHRvIHBpdm90IHJvb3QsIGVycm9yID0gJXNcbiIsIHN0cmVycm9yKHJldCkpOworCisgICAgYXV0
byBlbnQgPSBzZXRtbnRlbnQoIi9ldGMvZnN0YWIiLCAiciIpOworICAgIGlmICghZW50KSB7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzdHJ1Y3QgbW50ZW50ICptID0gbnVsbHB0cjsK
KyAgICB3aGlsZSAoKG0gPSBnZXRtbnRlbnQoZW50KSkgIT0gbnVsbHB0cikgeworICAgICAgICBp
ZiAoIXN0cmNtcChtLT5tbnRfZGlyLCAiLyIpKSB7CisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmICgobS0+bW50X29wdHMgIT0gbnVsbHB0cikgJiYgc3RyY21w
KG0tPm1udF9vcHRzLCBNTlRPUFRfREVGQVVMVFMpKSB7CisgICAgICAgICAgICBwcmludGYoIldh
cm5pbmc6IG9wdHMgJXMsIGlnbm9yZWQgZm9yIGZzICVzXG4iLCBtLT5tbnRfb3B0cywgbS0+bW50
X3R5cGUpOworICAgICAgICB9CisKKyAgICAgICAgLy8gRklYTUU6IFJpZ2h0IG5vdywgaWdub3Jp
bmcgbW50b3BzLiBJbiB0aGUgZnV0dXJlIHdlIG1heSBoYXZlIGFuIG9wdGlvbiBwYXJzZXIKKyAg
ICAgICAgcmV0ID0gc3lzX21vdW50KG0tPm1udF9mc25hbWUsIG0tPm1udF9kaXIsIG0tPm1udF90
eXBlLCAwLCBudWxscHRyKTsKKyAgICAgICAgaWYgKHJldCkgeworICAgICAgICAgICAgcHJpbnRm
KCJmYWlsZWQgdG8gbW91bnQgJXMsIGVycm9yID0gJXNcbiIsIG0tPm1udF90eXBlLCBzdHJlcnJv
cihyZXQpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbmRtbnRlbnQoZW50KTsKK30KKworZXh0
ZXJuICJDIiB2b2lkIHVubW91bnRfZGV2ZnMoKQoreworICAgIGludCByZXQgPSBzeXNfdW1vdW50
KCIvZGV2Iik7CisgICAgaWYgKHJldCkKKyAgICAgICAga3ByaW50ZigiZmFpbGVkIHRvIHVubW91
bnQgL2RldiwgZXJyb3IgPSAlc1xuIiwgc3RyZXJyb3IocmV0KSk7Cit9CisKK2V4dGVybiAiQyIg
aW50IG1vdW50X3JvZnNfcm9vdGZzKGJvb2wgcGl2b3Rfcm9vdCkKK3sKKyAgICBpbnQgcmV0Owor
CisgICAgaWYgKG1rZGlyKCIvcm9mcyIsIDA3NTUpIDwgMCkKKyAgICAgICAga3ByaW50ZigiZmFp
bGVkIHRvIGNyZWF0ZSAvcm9mcywgZXJyb3IgPSAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKKwor
ICAgIHJldCA9IHN5c19tb3VudCgiL2Rldi92YmxrMC4xIiwgIi9yb2ZzIiwgInJvZnMiLCBNTlRf
UkRPTkxZLCAwKTsKKworICAgIGlmIChyZXQpIHsKKyAgICAgICAga3ByaW50ZigiZmFpbGVkIHRv
IG1vdW50IC9yb2ZzLCBlcnJvciA9ICVzXG4iLCBzdHJlcnJvcihyZXQpKTsKKyAgICAgICAgcm1k
aXIoIi9yb2ZzIik7CisgICAgICAgIHJldHVybiByZXQ7CisgICAgfQorCisgICAgaWYgKHBpdm90
X3Jvb3QpIHsKKyAgICAgICAgcGl2b3Rfcm9vdGZzKCIvcm9mcyIpOworICAgIH0KKworICAgIHJl
dHVybiAwOworfQorCitleHRlcm4gIkMiIHZvaWQgbW91bnRfemZzX3Jvb3Rmcyhib29sIHBpdm90
X3Jvb3QpCit7CisgICAgaWYgKG1rZGlyKCIvemZzIiwgMDc1NSkgPCAwKQorICAgICAgICBrcHJp
bnRmKCJmYWlsZWQgdG8gY3JlYXRlIC96ZnMsIGVycm9yID0gJXNcbiIsIHN0cmVycm9yKGVycm5v
KSk7CisKKyAgICBpbnQgcmV0ID0gc3lzX21vdW50KCIvZGV2L3ZibGswLjEiLCAiL3pmcyIsICJ6
ZnMiLCAwLCAodm9pZCAqKSJvc3YvemZzIik7CisKKyAgICBpZiAocmV0KQorICAgICAgICBrcHJp
bnRmKCJmYWlsZWQgdG8gbW91bnQgL3pmcywgZXJyb3IgPSAlc1xuIiwgc3RyZXJyb3IocmV0KSk7
CisKKyAgICBpZiAoIXBpdm90X3Jvb3QpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IHBpdm90X3Jvb3RmcygiL3pmcyIpOworCisgICAgaW1wb3J0X2V4dHJhX3pmc19wb29scygpOwor
fQorCitleHRlcm4gIkMiIHZvaWQgdW5tb3VudF9yb290ZnModm9pZCkKK3sKKyAgICBpbnQgcmV0
OworCisgICAgc3lzX3Vtb3VudCgiL2RldiIpOworCisgICAgcmV0ID0gc3lzX3Vtb3VudCgiL3By
b2MiKTsKKyAgICBpZiAocmV0KSB7CisgICAgICAgIGtwcmludGYoIldhcm5pbmc6IHVubW91bnRf
cm9vdGZzOiBmYWlsZWQgdG8gdW5tb3VudCAvcHJvYywgIgorICAgICAgICAgICAgImVycm9yID0g
JXNcbiIsIHN0cmVycm9yKHJldCkpOworICAgIH0KKworICAgIHJldCA9IHN5c191bW91bnQyKCIv
IiwgTU5UX0ZPUkNFKTsKKyAgICBpZiAocmV0KSB7CisgICAgICAgIGtwcmludGYoIldhcm5pbmc6
IHVubW91bnRfcm9vdGZzOiBmYWlsZWQgdG8gdW5tb3VudCAvLCAiCisgICAgICAgICAgICAiZXJy
b3IgPSAlc1xuIiwgc3RyZXJyb3IocmV0KSk7CisgICAgfQorfQorCitleHRlcm4gIkMiIHZvaWQg
YmlvX2luaXQodm9pZCk7CitleHRlcm4gIkMiIHZvaWQgYmlvX3N5bmModm9pZCk7CisKK2ludCB2
ZnNfaW5pdGlhbGl6ZWQ7CisKK2V4dGVybiAiQyIKK3ZvaWQKK3Zmc19pbml0KHZvaWQpCit7Cisg
ICAgY29uc3Qgc3RydWN0IHZmc3N3ICpmczsKKworICAgIGJpb19pbml0KCk7CisgICAgbG9va3Vw
X2luaXQoKTsKKyAgICB2bm9kZV9pbml0KCk7CisgICAgdGFza19hbGxvYygmbWFpbl90YXNrKTsK
KworICAgIC8qCisgICAgICogSW5pdGlhbGl6ZSBlYWNoIGZpbGUgc3lzdGVtLgorICAgICAqLwor
ICAgIGZvciAoZnMgPSB2ZnNzdzsgZnMtPnZzX25hbWU7IGZzKyspIHsKKyAgICAgICAgaWYgKGZz
LT52c19pbml0KSB7CisgICAgICAgICAgICBEUFJJTlRGKFZGU0RCX0NPUkUsICgiVkZTOiBpbml0
aWFsaXppbmcgJXNcbiIsCisgICAgICAgICAgICAgICAgICAgIGZzLT52c19uYW1lKSk7CisgICAg
ICAgICAgICBmcy0+dnNfaW5pdCgpOworICAgICAgICB9CisgICAgfQorCisgICAgbW91bnRfcm9v
dGZzKCk7CisgICAgdW5wYWNrX2Jvb3RmcygpOworCisgICAgLy8JaWYgKG9wZW4oIi9kZXYvY29u
c29sZSIsIE9fUkRXUiwgMCkgIT0gMCkKKyAgICBpZiAoY29uc29sZTo6b3BlbigpICE9IDApCisg
ICAgICAgIGtwcmludGYoImZhaWxlZCB0byBvcGVuIGNvbnNvbGUsIGVycm9yID0gJWRcbiIsIGVy
cm5vKTsKKyAgICBpZiAoZHVwKDApICE9IDEpCisgICAgICAgIGtwcmludGYoImZhaWxlZCB0byBk
dXAgY29uc29sZSAoMSlcbiIpOworICAgIGlmIChkdXAoMCkgIT0gMikKKyAgICAgICAga3ByaW50
ZigiZmFpbGVkIHRvIGR1cCBjb25zb2xlICgyKVxuIik7CisgICAgdmZzX2luaXRpYWxpemVkID0g
MTsKK30KKwordm9pZCB2ZnNfZXhpdCh2b2lkKQoreworICAgIC8qIEZyZWUgdXAgbWFpbl90YXNr
IChzdG9yZXMgY3dkIGRhdGEpIHJlc291cmNlcyAqLworICAgIHJlcGxhY2VfY3dkKG1haW5fdGFz
aywgbnVsbHB0ciwgW10oKSB7IHJldHVybiAwOyB9KTsKKyAgICAvKiBVbm1vdW50IGFsbCBmaWxl
IHN5c3RlbXMgKi8KKyAgICB1bm1vdW50X3Jvb3RmcygpOworICAgIC8qIEZpbmlzaCB3aXRoIHRo
ZSBiaW8gbGF5ZXIgKi8KKyAgICBiaW9fc3luYygpOworfQorCit2b2lkIHN5c19wYW5pYyhjb25z
dCBjaGFyICpzdHIpCit7CisgICAgYWJvcnQoInBhbmljOiAlcyIsIHN0cik7Cit9CisKZGlmZiAt
LWdpdCBhL2xpYi92ZnNjb3JlL21vdW50LmMgYi9saWIvdmZzY29yZS9tb3VudC5jCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi5kYWM0ZDA5YwotLS0gL2Rldi9udWxsCisrKyBi
L2xpYi92ZnNjb3JlL21vdW50LmMKQEAgLTAsMCArMSw0OTEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KGMpIDIwMDUtMjAwNywgS29oc3VrZSBPaHRhbmkKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBhdXRob3Igbm9yIHRoZSBuYW1l
cyBvZiBhbnkgY28tY29udHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKKyAqICAgIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKy8qCisgKiB2ZnNfbW91bnQuYyAtIG1v
dW50IG9wZXJhdGlvbnMKKyAqLworCisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxz
eXMvcGFyYW0uaD4KKyNpbmNsdWRlIDxkaXJlbnQuaD4KKworI2luY2x1ZGUgPGxpbWl0cy5oPgor
I2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmlu
Zy5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxm
Y250bC5oPgorCisjaW5jbHVkZSA8b3N2L3ByZXguaD4KKyNpbmNsdWRlIDxvc3Yvdm5vZGUuaD4K
KyNpbmNsdWRlIDxvc3YvZGV2aWNlLmg+CisjaW5jbHVkZSA8b3N2L2RlYnVnLmg+CisjaW5jbHVk
ZSA8b3N2L211dGV4Lmg+CisjaW5jbHVkZSAidmZzLmgiCisKKyNpbmNsdWRlIDxtZW1vcnk+Cisj
aW5jbHVkZSA8bGlzdD4KKworLyoKKyAqIExpc3QgZm9yIFZGUyBtb3VudCBwb2ludHMuCisgKi8K
K3N0YXRpYyBzdGQ6Omxpc3Q8bW91bnQqPiBtb3VudF9saXN0OworCisvKgorICogR2xvYmFsIGxv
Y2sgdG8gYWNjZXNzIG1vdW50IHBvaW50LgorICovCitzdGF0aWMgbXV0ZXggbW91bnRfbG9jazsK
KworLyoKKyAqIExvb2t1cCBmaWxlIHN5c3RlbS4KKyAqLworc3RhdGljIGNvbnN0IHN0cnVjdCB2
ZnNzdyAqCitmc19nZXRmcyhjb25zdCBjaGFyICpuYW1lKQoreworICAgIGNvbnN0IHN0cnVjdCB2
ZnNzdyAqZnM7CisKKyAgICBmb3IgKGZzID0gdmZzc3c7IGZzLT52c19uYW1lOyBmcysrKSB7Cisg
ICAgICAgIGlmICghc3RybmNtcChuYW1lLCBmcy0+dnNfbmFtZSwgRlNNQVhOQU1FUykpCisgICAg
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgaWYgKCFmcy0+dnNfbmFtZSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGZzOworfQorCitjb25zdCBjaGFyKgorZnNfZ2V0ZnNu
YW1lKHZmc29wcyogb3BzKQoreworICAgIGZvciAoYXV0byBmcyA9IHZmc3N3OyBmcy0+dnNfbmFt
ZTsgZnMrKykgeworICAgICAgICBpZiAoZnMtPnZzX29wID09IG9wcykgeworICAgICAgICAgICAg
cmV0dXJuIGZzLT52c19uYW1lOworICAgICAgICB9CisgICAgfQorICAgIGFib3J0KCk7Cit9CisK
K2ludAorc3lzX21vdW50KGNvbnN0IGNoYXIgKmRldiwgY29uc3QgY2hhciAqZGlyLCBjb25zdCBj
aGFyICpmc25hbWUsIGludCBmbGFncywgY29uc3Qgdm9pZCAqZGF0YSkKK3sKKyAgICBjb25zdCBz
dHJ1Y3QgdmZzc3cgKmZzOworICAgIHN0cnVjdCBtb3VudCAqbXA7CisgICAgc3RydWN0IGRldmlj
ZSAqZGV2aWNlOworICAgIHN0cnVjdCBkZW50cnkgKmRwX2NvdmVyZWQ7CisgICAgc3RydWN0IHZu
b2RlICp2cDsKKyAgICBpbnQgZXJyb3I7CisKKyAgICBrcHJpbnRmKCJWRlM6IG1vdW50aW5nICVz
IGF0ICVzXG4iLCBmc25hbWUsIGRpcik7CisKKyAgICBpZiAoIWRpciB8fCAqZGlyID09ICdcMCcp
CisgICAgICAgIHJldHVybiBFTk9FTlQ7CisKKyAgICAvKiBGaW5kIGEgZmlsZSBzeXN0ZW0uICov
CisgICAgaWYgKCEoZnMgPSBmc19nZXRmcyhmc25hbWUpKSkKKyAgICAgICAgcmV0dXJuIEVOT0RF
VjsgIC8qIE5vIHN1Y2ggZmlsZSBzeXN0ZW0gKi8KKworICAgIC8qIE9wZW4gZGV2aWNlLiBudWxs
cHRyIGNhbiBiZSBzcGVjaWZpZWQgYXMgYSBkZXZpY2UuICovCisgICAgLy8gQWxsb3cgZGV2aWNl
X29wZW4oKSB0byBmYWlsLCBpbiB3aGljaCBjYXNlIGRldiBpcyBpbnRlcnByZXRlZAorICAgIC8v
IGJ5IHRoZSBmaWxlIHN5c3RlbSBtb3VudCByb3V0aW5lIChlLmcgemZzIHBvb2xzKQorICAgIGRl
dmljZSA9IDA7CisgICAgaWYgKGRldiAmJiBzdHJuY21wKGRldiwgIi9kZXYvIiwgNSkgPT0gMCkK
KyAgICAgICAgZGV2aWNlX29wZW4oZGV2ICsgNSwgRE9fUkRXUiwgJmRldmljZSk7CisKKyAgICAv
KiBDaGVjayBpZiBkZXZpY2Ugb3IgZGlyZWN0b3J5IGhhcyBhbHJlYWR5IGJlZW4gbW91bnRlZC4g
Ki8KKyAgICAvLyBXZSBuZWVkIHRvIGF2b2lkIHRoZSBzaXR1YXRpb24gd2hlcmUgYWZ0ZXIgd2Ug
YWxyZWFkeSB2ZXJpZmllZCB0aGF0CisgICAgLy8gdGhlIG1vdW50IHBvaW50IGlzIGZyZWUsIGJ1
dCBiZWZvcmUgd2UgYWN0dWFsbHkgYWRkIGl0IHRvIG1vdW50X2xpc3QsCisgICAgLy8gYW5vdGhl
ciBjb25jdXJyZW50IG1vdW50IGFkZHMgaXQuIFNvIHdlIHVzZSBhIG5ldyBtdXRleCB0byBlbnN1
cmUKKyAgICAvLyB0aGF0IG9ubHkgb25lIHN5c19tb3VudCgpIHJ1bnMgYXQgYSB0aW1lLiBXZSBj
YW5ub3QgcmV1c2UgdGhlIGV4aXN0aW5nCisgICAgLy8gbW91bnRfbG9jayBmb3IgdGhpcyBwdXJw
b3NlOiBJZiB3ZSB0YWtlIG1vdW50X2xvY2sgYW5kIHRoZW4gZG8KKyAgICAvLyBsb29rdXBzLCB0
aGlzIGlzIGxvY2sgb3JkZXIgaW52ZXJzaW9uIGFuZCBjYW4gcmVzdWx0IGluIGRlYWRsb2NrLgor
ICAgIHN0YXRpYyBtdXRleCBzeXNfbW91bnRfbG9jazsKKyAgICBTQ09QRV9MT0NLKHN5c19tb3Vu
dF9sb2NrKTsKKyAgICBXSVRIX0xPQ0sobW91bnRfbG9jaykgeworICAgICAgICBmb3IgKGF1dG8m
JiBtcCA6IG1vdW50X2xpc3QpIHsKKyAgICAgICAgICAgIGlmICghc3RyY21wKG1wLT5tX3BhdGgs
IGRpcikgfHwKKyAgICAgICAgICAgICAgICAoZGV2aWNlICYmIG1wLT5tX2RldiA9PSBkZXZpY2Up
KSB7CisgICAgICAgICAgICAgICAgZXJyb3IgPSBFQlVTWTsgIC8qIEFscmVhZHkgbW91bnRlZCAq
LworICAgICAgICAgICAgICAgIGdvdG8gZXJyMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0KKyAgICAvKgorICAgICAqIENyZWF0ZSBWRlMgbW91bnQgZW50cnkuCisgICAgICovCisg
ICAgaWYgKCEobXAgPSBuZXcgbW91bnQpKSB7CisgICAgICAgIGVycm9yID0gRU5PTUVNOworICAg
ICAgICBnb3RvIGVycjE7CisgICAgfQorICAgIG1wLT5tX2NvdW50ID0gMDsKKyAgICBtcC0+bV9v
cCA9IGZzLT52c19vcDsKKyAgICBtcC0+bV9mbGFncyA9IGZsYWdzOworICAgIG1wLT5tX2RldiA9
IGRldmljZTsKKyAgICBtcC0+bV9kYXRhID0gbnVsbHB0cjsKKyAgICBzdHJsY3B5KG1wLT5tX3Bh
dGgsIGRpciwgc2l6ZW9mKG1wLT5tX3BhdGgpKTsKKyAgICBzdHJsY3B5KG1wLT5tX3NwZWNpYWws
IGRldiwgc2l6ZW9mKG1wLT5tX3NwZWNpYWwpKTsKKworICAgIC8qCisgICAgICogR2V0IHZub2Rl
IHRvIGJlIGNvdmVyZWQgaW4gdGhlIHVwcGVyIGZpbGUgc3lzdGVtLgorICAgICAqLworICAgIGlm
ICgqZGlyID09ICcvJyAmJiAqKGRpciArIDEpID09ICdcMCcpIHsKKyAgICAgICAgLyogSWdub3Jl
IGlmIGl0IG1vdW50cyB0byBnbG9iYWwgcm9vdCBkaXJlY3RvcnkuICovCisgICAgICAgIGRwX2Nv
dmVyZWQgPSBudWxscHRyOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmICgoZXJyb3IgPSBuYW1l
aShkaXIsICZkcF9jb3ZlcmVkKSkgIT0gMCkgeworCisgICAgICAgICAgICBlcnJvciA9IEVOT0VO
VDsKKyAgICAgICAgICAgIGdvdG8gZXJyMjsKKyAgICAgICAgfQorICAgICAgICBpZiAoZHBfY292
ZXJlZC0+ZF92bm9kZS0+dl90eXBlICE9IFZESVIpIHsKKyAgICAgICAgICAgIGVycm9yID0gRU5P
VERJUjsKKyAgICAgICAgICAgIGdvdG8gZXJyMzsKKyAgICAgICAgfQorICAgIH0KKyAgICBtcC0+
bV9jb3ZlcmVkID0gZHBfY292ZXJlZDsKKworICAgIC8qCisgICAgICogQ3JlYXRlIGEgcm9vdCB2
bm9kZSBmb3IgdGhpcyBmaWxlIHN5c3RlbS4KKyAgICAgKi8KKyAgICB2Z2V0KG1wLCAwLCAmdnAp
OworICAgIGlmICh2cCA9PSBudWxscHRyKSB7CisgICAgICAgIGVycm9yID0gRU5PTUVNOworICAg
ICAgICBnb3RvIGVycjM7CisgICAgfQorICAgIHZwLT52X3R5cGUgPSBWRElSOworICAgIHZwLT52
X2ZsYWdzID0gVlJPT1Q7CisgICAgdnAtPnZfbW9kZSA9IFNfSUZESVIgfCBTX0lSVVNSIHwgU19J
V1VTUiB8IFNfSVhVU1I7CisKKyAgICBtcC0+bV9yb290ID0gZGVudHJ5X2FsbG9jKG51bGxwdHIs
IHZwLCAiLyIpOworICAgIGlmICghbXAtPm1fcm9vdCkgeworICAgICAgICB2cHV0KHZwKTsKKyAg
ICAgICAgZ290byBlcnIzOworICAgIH0KKyAgICB2cHV0KHZwKTsKKworICAgIC8qCisgICAgICog
Q2FsbCBhIGZpbGUgc3lzdGVtIHNwZWNpZmljIHJvdXRpbmUuCisgICAgICovCisgICAgaWYgKChl
cnJvciA9IFZGU19NT1VOVChtcCwgZGV2LCBmbGFncywgZGF0YSkpICE9IDApCisgICAgICAgIGdv
dG8gZXJyNDsKKworICAgIGlmIChtcC0+bV9mbGFncyAmIE1OVF9SRE9OTFkpCisgICAgICAgIHZw
LT52X21vZGUgJj1+U19JV1VTUjsKKworICAgIC8qCisgICAgICogSW5zZXJ0IHRvIG1vdW50IGxp
c3QKKyAgICAgKi8KKyAgICBXSVRIX0xPQ0sobW91bnRfbG9jaykgeworICAgICAgICBtb3VudF9s
aXN0LnB1c2hfYmFjayhtcCk7CisgICAgfQorCisgICAgcmV0dXJuIDA7ICAgLyogc3VjY2VzcyAq
LworIGVycjQ6CisgICAgZHJlbGUobXAtPm1fcm9vdCk7CisgZXJyMzoKKyAgICBpZiAoZHBfY292
ZXJlZCkKKyAgICAgICAgZHJlbGUoZHBfY292ZXJlZCk7CisgZXJyMjoKKyAgICBkZWxldGUgbXA7
CisgZXJyMToKKyAgICBpZiAoZGV2aWNlKQorICAgICAgICBkZXZpY2VfY2xvc2UoZGV2aWNlKTsK
KworICAgIHJldHVybiBlcnJvcjsKK30KKwordm9pZAorcmVsZWFzZV9tcF9kZW50cmllcyhzdHJ1
Y3QgbW91bnQgKm1wKQoreworICAgIC8qIERlY3JlbWVudCByZWZlcmVjZSBjb3VudCBvZiByb290
IHZub2RlICovCisgICAgaWYgKG1wLT5tX2NvdmVyZWQpIHsKKyAgICAgICAgZHJlbGUobXAtPm1f
Y292ZXJlZCk7CisgICAgfQorCisgICAgLyogUmVsZWFzZSByb290IGRlbnRyeSAqLworICAgIGRy
ZWxlKG1wLT5tX3Jvb3QpOworfQorCitpbnQKK3N5c191bW91bnQyKGNvbnN0IGNoYXIgKnBhdGgs
IGludCBmbGFncykKK3sKKyAgICBzdHJ1Y3QgbW91bnQgKm1wOworICAgIGludCBlcnJvciwgcGF0
aGxlbjsKKworICAgIGtwcmludGYoIlZGUzogdW5tb3VudGluZyAlc1xuIiwgcGF0aCk7CisKKyAg
ICBTQ09QRV9MT0NLKG1vdW50X2xvY2spOworCisgICAgcGF0aGxlbiA9IHN0cmxlbihwYXRoKTsK
KyAgICBpZiAocGF0aGxlbiA+PSBNQVhQQVRITEVOKSB7CisgICAgICAgIGVycm9yID0gRU5BTUVU
T09MT05HOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAgICAvKiBHZXQgbW91bnQgZW50
cnkgKi8KKyAgICBmb3IgKGF1dG8mJiB0bXAgOiBtb3VudF9saXN0KSB7CisgICAgICAgIGlmICgh
c3RyY21wKHBhdGgsIHRtcC0+bV9wYXRoKSkgeworICAgICAgICAgICAgbXAgPSB0bXA7CisgICAg
ICAgICAgICBnb3RvIGZvdW5kOworICAgICAgICB9CisgICAgfQorCisgICAgZXJyb3IgPSBFSU5W
QUw7CisgICAgZ290byBvdXQ7CisKK2ZvdW5kOgorICAgIC8qCisgICAgICogUm9vdCBmcyBjYW4g
bm90IGJlIHVubW91bnRlZC4KKyAgICAgKi8KKyAgICBpZiAobXAtPm1fY292ZXJlZCA9PSBudWxs
cHRyICYmICEoZmxhZ3MgJiBNTlRfRk9SQ0UpKSB7CisgICAgICAgIGVycm9yID0gRUlOVkFMOwor
ICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAgICBpZiAoKGVycm9yID0gVkZTX1VOTU9VTlQo
bXAsIGZsYWdzKSkgIT0gMCkKKyAgICAgICAgZ290byBvdXQ7CisgICAgbW91bnRfbGlzdC5yZW1v
dmUobXApOworCisjaWZkZWYgSEFWRV9CVUZGRVJTCisgICAgLyogRmx1c2ggYWxsIGJ1ZmZlcnMg
Ki8KKyAgICBiaW52YWwobXAtPm1fZGV2KTsKKyNlbmRpZgorCisgICAgaWYgKG1wLT5tX2RldikK
KyAgICAgICAgZGV2aWNlX2Nsb3NlKG1wLT5tX2Rldik7CisgICAgZGVsZXRlIG1wOworIG91dDoK
KyAgICByZXR1cm4gZXJyb3I7Cit9CisKK2ludAorc3lzX3Vtb3VudChjb25zdCBjaGFyICpwYXRo
KQoreworICAgIHJldHVybiBzeXNfdW1vdW50MihwYXRoLCAwKTsKK30KKworaW50CitzeXNfcGl2
b3Rfcm9vdChjb25zdCBjaGFyICpuZXdfcm9vdCwgY29uc3QgY2hhciAqcHV0X29sZCkKK3sKKyAg
ICBzdHJ1Y3QgbW91bnQgKm5ld21wID0gbnVsbHB0ciwgKm9sZG1wID0gbnVsbHB0cjsKKyAgICBp
bnQgZXJyb3I7CisKKyAgICBXSVRIX0xPQ0sobW91bnRfbG9jaykgeworICAgICAgICBmb3IgKGF1
dG8mJiBtcCA6IG1vdW50X2xpc3QpIHsKKyAgICAgICAgICAgIGlmICghc3RyY21wKG1wLT5tX3Bh
dGgsIG5ld19yb290KSkgeworICAgICAgICAgICAgICAgIG5ld21wID0gbXA7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBpZiAoIXN0cmNtcChtcC0+bV9wYXRoLCBwdXRfb2xkKSkgeworICAg
ICAgICAgICAgICAgIG9sZG1wID0gbXA7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKCFuZXdtcCB8fCAhb2xkbXAgfHwgbmV3bXAgPT0gb2xkbXApIHsKKyAgICAgICAgICAg
IHJldHVybiBFSU5WQUw7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChhdXRvJiYgbXAgOiBtb3Vu
dF9saXN0KSB7CisgICAgICAgICAgICBpZiAobXAgPT0gbmV3bXAgfHwgbXAgPT0gb2xkbXApIHsK
KyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlm
ICghc3RybmNtcChtcC0+bV9wYXRoLCBwdXRfb2xkLCBzdHJsZW4ocHV0X29sZCkpKSB7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIEVCVVNZOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIGlmICgoZXJyb3IgPSBWRlNfVU5NT1VOVChvbGRtcCwgMCkpICE9IDApIHsKKyAgICAgICAg
ICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBtb3VudF9saXN0LnJlbW92ZShv
bGRtcCk7CisKKyAgICAgICAgbmV3bXAtPm1fcm9vdC0+ZF92bm9kZS0+dl9tb3VudCA9IG5ld21w
OworCisgICAgICAgIGlmIChuZXdtcC0+bV9jb3ZlcmVkKSB7CisgICAgICAgICAgICBkcmVsZShu
ZXdtcC0+bV9jb3ZlcmVkKTsKKyAgICAgICAgfQorICAgICAgICBuZXdtcC0+bV9jb3ZlcmVkID0g
bnVsbHB0cjsKKworICAgICAgICBpZiAobmV3bXAtPm1fcm9vdC0+ZF9wYXJlbnQpIHsKKyAgICAg
ICAgICAgIGRyZWxlKG5ld21wLT5tX3Jvb3QtPmRfcGFyZW50KTsKKyAgICAgICAgfQorICAgICAg
ICBuZXdtcC0+bV9yb290LT5kX3BhcmVudCA9IG51bGxwdHI7CisKKyAgICAgICAgc3RybGNweShu
ZXdtcC0+bV9wYXRoLCAiLyIsIHNpemVvZihuZXdtcC0+bV9wYXRoKSk7CisgICAgfQorICAgIHJl
dHVybiAwOworfQorCitpbnQKK3N5c19zeW5jKHZvaWQpCit7CisgICAgLyogQ2FsbCBlYWNoIG1v
dW50ZWQgZmlsZSBzeXN0ZW0uICovCisgICAgV0lUSF9MT0NLKG1vdW50X2xvY2spIHsKKyAgICAg
ICAgZm9yIChhdXRvJiYgbXAgOiBtb3VudF9saXN0KSB7CisgICAgICAgICAgICBWRlNfU1lOQyht
cCk7CisgICAgICAgIH0KKyAgICB9CisjaWZkZWYgSEFWRV9CVUZGRVJTCisgICAgYmlvX3N5bmMo
KTsKKyNlbmRpZgorICAgIHJldHVybiAwOworfQorCisvKgorICogQ29tcGFyZSB0d28gcGF0aCBz
dHJpbmdzLiBSZXR1cm4gbWF0Y2hlZCBsZW5ndGguCisgKiBAcGF0aDogdGFyZ2V0IHBhdGguCisg
KiBAcm9vdDogdmZzIHJvb3QgcGF0aCBhcyBtb3VudCBwb2ludC4KKyAqLworc3RhdGljIHNpemVf
dAorY291bnRfbWF0Y2goY29uc3QgY2hhciAqcGF0aCwgY2hhciAqbW91bnRfcm9vdCkKK3sKKyAg
ICBzaXplX3QgbGVuID0gMDsKKworICAgIHdoaWxlICgqcGF0aCAmJiAqbW91bnRfcm9vdCkgewor
ICAgICAgICBpZiAoKnBhdGggIT0gKm1vdW50X3Jvb3QpCisgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICBwYXRoKys7CisgICAgICAgIG1vdW50X3Jvb3QrKzsKKyAgICAgICAgbGVuKys7Cisg
ICAgfQorICAgIGlmICgqbW91bnRfcm9vdCAhPSAnXDAnKQorICAgICAgICByZXR1cm4gMDsKKwor
ICAgIGlmIChsZW4gPT0gMSAmJiAqKHBhdGggLSAxKSA9PSAnLycpCisgICAgICAgIHJldHVybiAx
OworCisgICAgaWYgKCpwYXRoID09ICdcMCcgfHwgKnBhdGggPT0gJy8nKQorICAgICAgICByZXR1
cm4gbGVuOworICAgIHJldHVybiAwOworfQorCisvKgorICogR2V0IHRoZSByb290IGRpcmVjdG9y
eSBhbmQgbW91bnQgcG9pbnQgZm9yIHNwZWNpZmllZCBwYXRoLgorICogQHBhdGg6IGZ1bGwgcGF0
aC4KKyAqIEBtcDogbW91bnQgcG9pbnQgdG8gcmV0dXJuLgorICogQHJvb3Q6IHBvaW50ZXIgdG8g
cm9vdCBkaXJlY3RvcnkgaW4gcGF0aC4KKyAqLworaW50Cit2ZnNfZmluZHJvb3QoY29uc3QgY2hh
ciAqcGF0aCwgc3RydWN0IG1vdW50ICoqbXAsIGNoYXIgKipyb290KQoreworICAgIHN0cnVjdCBt
b3VudCAqbSA9IG51bGxwdHI7CisgICAgc2l6ZV90IGxlbiwgbWF4X2xlbiA9IDA7CisKKyAgICBp
ZiAoIXBhdGgpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIC8qIEZpbmQgbW91bnQgcG9pbnQg
ZnJvbSBuZWFyZXN0IHBhdGggKi8KKyAgICBTQ09QRV9MT0NLKG1vdW50X2xvY2spOworICAgIGZv
ciAoYXV0byYmIHRtcCA6IG1vdW50X2xpc3QpIHsKKyAgICAgICAgbGVuID0gY291bnRfbWF0Y2go
cGF0aCwgdG1wLT5tX3BhdGgpOworICAgICAgICBpZiAobGVuID4gbWF4X2xlbikgeworICAgICAg
ICAgICAgbWF4X2xlbiA9IGxlbjsKKyAgICAgICAgICAgIG0gPSB0bXA7CisgICAgICAgIH0KKyAg
ICB9CisgICAgaWYgKG0gPT0gbnVsbHB0cikKKyAgICAgICAgcmV0dXJuIC0xOworICAgICpyb290
ID0gKGNoYXIgKikocGF0aCArIG1heF9sZW4pOworICAgIGlmICgqKnJvb3QgPT0gJy8nKQorICAg
ICAgICAoKnJvb3QpKys7CisgICAgKm1wID0gbTsKKyAgICByZXR1cm4gMDsKK30KKworLyoKKyAq
IE1hcmsgYSBtb3VudCBwb2ludCBhcyBidXN5LgorICovCit2b2lkCit2ZnNfYnVzeShzdHJ1Y3Qg
bW91bnQgKm1wKQoreworICAgIFNDT1BFX0xPQ0sobW91bnRfbG9jayk7CisgICAgbXAtPm1fY291
bnQrKzsKK30KKworCisvKgorICogTWFyayBhIG1vdW50IHBvaW50IGFzIGJ1c3kuCisgKi8KK3Zv
aWQKK3Zmc191bmJ1c3koc3RydWN0IG1vdW50ICptcCkKK3sKKyAgICBTQ09QRV9MT0NLKG1vdW50
X2xvY2spOworICAgIG1wLT5tX2NvdW50LS07Cit9CisKK2ludAordmZzX251bGxvcCh2b2lkKQor
eworICAgIHJldHVybiAwOworfQorCitpbnQKK3Zmc19laW52YWwodm9pZCkKK3sKKyAgICByZXR1
cm4gRUlOVkFMOworfQorCituYW1lc3BhY2Ugb3N2IHsKKworbW91bnRfZGVzYyB0b19tb3VudF9k
ZXNjKG1vdW50KiBtKQoreworICAgIG1vdW50X2Rlc2MgcmV0OworICAgIHJldC5zcGVjaWFsID0g
bS0+bV9zcGVjaWFsOworICAgIHJldC5wYXRoID0gbS0+bV9wYXRoOworICAgIHJldC50eXBlID0g
ZnNfZ2V0ZnNuYW1lKG0tPm1fb3ApOworICAgIC8vIEZJWE1FOiByZWNvcmQgb3B0aW9ucworICAg
IHJldC5vcHRpb25zID0gIiI7CisgICAgcmV0dXJuIHJldDsKK30KKworc3RkOjp2ZWN0b3I8bW91
bnRfZGVzYz4KK2N1cnJlbnRfbW91bnRzKCkKK3sKKyAgICBXSVRIX0xPQ0sobW91bnRfbG9jaykg
eworICAgICAgICBzdGQ6OnZlY3Rvcjxtb3VudF9kZXNjPiByZXQ7CisgICAgICAgIGZvciAoYXV0
byYmIG1wIDogbW91bnRfbGlzdCkgeworICAgICAgICAgICAgcmV0LnB1c2hfYmFjayh0b19tb3Vu
dF9kZXNjKG1wKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJldDsKKyAgICB9Cit9CisK
K30KKworI2lmZGVmIERFQlVHX1ZGUwordm9pZAorbW91bnRfZHVtcCh2b2lkKQoreworICAgIFND
T1BFX0xPQ0sobW91bnRfbG9jayk7CisKKyAgICBrcHJpbnRmKCJtb3VudF9kdW1wXG4iKTsKKyAg
ICBrcHJpbnRmKCJkZXYgICAgICBjb3VudCByb290XG4iKTsKKyAgICBrcHJpbnRmKCItLS0tLS0t
LSAtLS0tLSAtLS0tLS0tLVxuIik7CisKKyAgICBmb3IgKGF1dG8mJiBtcCA6IG1vdW50X2xpc3Qp
IHsKKyAgICAgICAga3ByaW50ZigiJTh4ICU1ZCAlc1xuIiwgbXAtPm1fZGV2LCBtcC0+bV9jb3Vu
dCwgbXAtPm1fcGF0aCk7CisgICAgfQorfQorI2VuZGlmCmRpZmYgLS1naXQgYS9saWIvdmZzY29y
ZS9zdWJyX3Vpby5jIGIvbGliL3Zmc2NvcmUvc3Vicl91aW8uYwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMC4uYmYxMzhiOGUKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvdmZzY29y
ZS9zdWJyX3Vpby5jCkBAIC0wLDAgKzEsNzMgQEAKKy8qLQorICogQ29weXJpZ2h0IChjKSAxOTgy
LCAxOTg2LCAxOTkxLCAxOTkzCisgKglUaGUgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBD
YWxpZm9ybmlhLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIChjKSBVTklYIFN5c3RlbSBMYWJv
cmF0b3JpZXMsIEluYy4KKyAqIEFsbCBvciBzb21lIHBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUg
ZGVyaXZlZCBmcm9tIG1hdGVyaWFsIGxpY2Vuc2VkCisgKiB0byB0aGUgVW5pdmVyc2l0eSBvZiBD
YWxpZm9ybmlhIGJ5IEFtZXJpY2FuIFRlbGVwaG9uZSBhbmQgVGVsZWdyYXBoCisgKiBDby4gb3Ig
VW5peCBTeXN0ZW0gTGFib3JhdG9yaWVzLCBJbmMuIGFuZCBhcmUgcmVwcm9kdWNlZCBoZXJlaW4g
d2l0aAorICogdGhlIHBlcm1pc3Npb24gb2YgVU5JWCBTeXN0ZW0gTGFib3JhdG9yaWVzLCBJbmMu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKiA0LiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBVbml2ZXJzaXR5IG5vciB0
aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCisgKiAgICB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBSRUdFTlRTIEFORCBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgUkVHRU5UUyBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAq
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICoKKyAqCUAoIylrZXJuX3N1YnIuYwk4
LjMgKEJlcmtlbGV5KSAxLzIxLzk0CisgKi8KKworI2luY2x1ZGUgPGFzc2VydC5oPgorI2luY2x1
ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+Cisj
aW5jbHVkZSA8b3N2L3Vpby5oPgorCitpbnQKK3Vpb21vdmUodm9pZCAqY3AsIGludCBuLCBzdHJ1
Y3QgdWlvICp1aW8pCit7CisJYXNzZXJ0KHVpby0+dWlvX3J3ID09IFVJT19SRUFEIHx8IHVpby0+
dWlvX3J3ID09IFVJT19XUklURSk7CisKKwl3aGlsZSAobiA+IDAgJiYgdWlvLT51aW9fcmVzaWQp
IHsKKwkJc3RydWN0IGlvdmVjICppb3YgPSB1aW8tPnVpb19pb3Y7CisJCWludCBjbnQgPSBpb3Yt
Pmlvdl9sZW47CisJCWlmIChjbnQgPT0gMCkgeworCQkJdWlvLT51aW9faW92Kys7CisJCQl1aW8t
PnVpb19pb3ZjbnQtLTsKKwkJCWNvbnRpbnVlOworCQl9CisJCWlmIChjbnQgPiBuKQorCQkJY250
ID0gbjsKKworCQlpZiAodWlvLT51aW9fcncgPT0gVUlPX1JFQUQpCisJCQltZW1jcHkoaW92LT5p
b3ZfYmFzZSwgY3AsIGNudCk7CisJCWVsc2UKKwkJCW1lbWNweShjcCwgaW92LT5pb3ZfYmFzZSwg
Y250KTsKKworCQlpb3YtPmlvdl9iYXNlID0gKGNoYXIgKilpb3YtPmlvdl9iYXNlICsgY250Owor
CQlpb3YtPmlvdl9sZW4gLT0gY250OworCQl1aW8tPnVpb19yZXNpZCAtPSBjbnQ7CisJCXVpby0+
dWlvX29mZnNldCArPSBjbnQ7CisJCWNwID0gKGNoYXIgKiljcCArIGNudDsKKwkJbiAtPSBjbnQ7
CisJfQorCisJcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9zeXNjYWxscy5j
IGIvbGliL3Zmc2NvcmUvc3lzY2FsbHMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMC4uNDg3ZDU3MjkKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvdmZzY29yZS9zeXNjYWxscy5j
CkBAIC0wLDAgKzEsMTQ4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBDbG91ZGl1cyBT
eXN0ZW1zLCBMdGQuCisgKgorICogVGhpcyB3b3JrIGlzIG9wZW4gc291cmNlIHNvZnR3YXJlLCBs
aWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlCisgKiBCU0QgbGljZW5zZSBhcyBkZXNjcmli
ZWQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgdG9wLWxldmVsIGRpcmVjdG9yeS4KKyAqLwor
CisvKgorICogQ29weXJpZ2h0IChjKSAyMDA1LTIwMDcsIEtvaHN1a2UgT2h0YW5pCisgKiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUg
YXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgYW55IGNvLWNvbnRyaWJ1dG9ycworICogICAgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNv
ZnR3YXJlCisgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisvKgor
ICogdmZzX3N5c2NhbGxzLmMgLSBldmVyeXRoaW5nIGluIHRoaXMgZmlsZSBpcyBhIHJvdXRpbmUg
aW1wbGVtZW50aW5nCisgKiAgICAgICAgICAgICAgICAgIGEgVkZTIHN5c3RlbSBjYWxsLgorICov
CisKKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPGRpcmVudC5oPgorCisjaW5jbHVk
ZSA8bGltaXRzLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+Cisj
aW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxlcnJuby5o
PgorI2luY2x1ZGUgPGZjbnRsLmg+CisKKyNpbmNsdWRlIDxvc3YvcHJleC5oPgorI2luY2x1ZGUg
PG9zdi92bm9kZS5oPgorI2luY2x1ZGUgPG9zdi92ZnNfZmlsZS5oaD4KKyNpbmNsdWRlICJ2ZnMu
aCIKKyNpbmNsdWRlIDxmcy9mcy5oaD4KKworZXh0ZXJuIHN0cnVjdCB0YXNrICptYWluX3Rhc2s7
CisKK3N0YXRpYyBpbnQKK29wZW5fbm9fZm9sbG93X2NoayhjaGFyICpwYXRoKQoreworCWludCAg
ICAgICAgICAgZXJyb3I7CisJc3RydWN0IGRlbnRyeSAqZGRwOworCWNoYXIgICAgICAgICAgKm5h
bWU7CisJc3RydWN0IGRlbnRyeSAqZHA7CisJc3RydWN0IHZub2RlICAqdnA7CisKKwlkZHAgPSBu
dWxscHRyOworCWRwICA9IG51bGxwdHI7CisJdnAgID0gbnVsbHB0cjsKKworCWVycm9yID0gbG9v
a3VwKHBhdGgsICZkZHAsICZuYW1lKTsKKwlpZiAoZXJyb3IpIHsKKwkJcmV0dXJuIChlcnJvcik7
CisJfQorCisJZXJyb3IgPSBuYW1laV9sYXN0X25vZm9sbG93KHBhdGgsIGRkcCwgJmRwKTsKKwlp
ZiAoZXJyb3IpIHsKKwkJZ290byBvdXQ7CisJfQorCisJdnAgPSBkcC0+ZF92bm9kZTsKKwl2bl9s
b2NrKHZwKTsKKwlpZiAodnAtPnZfdHlwZSA9PSBWTE5LKSB7CisJCWVycm9yID0gRUxPT1A7CisJ
CWdvdG8gb3V0OworCX0KKworCWVycm9yID0gMDsKK291dDoKKwlpZiAodnAgIT0gbnVsbHB0cikg
eworCQl2bl91bmxvY2sodnApOworCX0KKworCWlmIChkcCAhPSBudWxscHRyKSB7CisJCWRyZWxl
KGRwKTsKKwl9CisKKwlpZiAoZGRwICE9IG51bGxwdHIpIHsKKwkJZHJlbGUoZGRwKTsKKwl9CisK
KwlyZXR1cm4gKGVycm9yKTsKK30KKworaW50CitzeXNfb3BlbihjaGFyICpwYXRoLCBpbnQgZmxh
Z3MsIG1vZGVfdCBtb2RlLCBzdHJ1Y3QgZmlsZSAqKmZwcCkKK3sKKwlmaWxlICpmcDsKKwlzdHJ1
Y3QgZGVudHJ5ICpkcCwgKmRkcDsKKwlzdHJ1Y3Qgdm5vZGUgKnZwOworCWNoYXIgKmZpbGVuYW1l
OworCWludCBlcnJvcjsKKworCURQUklOVEYoVkZTREJfU1lTQ0FMTCwgKCJzeXNfb3BlbjogcGF0
aD0lcyBmbGFncz0leCBtb2RlPSV4XG4iLAorCQkJCXBhdGgsIGZsYWdzLCBtb2RlKSk7CisKKwlm
bGFncyA9IGZmbGFncyhmbGFncyk7CisJaWYgKGZsYWdzICYgT19DUkVBVCkgeworCQllcnJvciA9
IG5hbWVpKHBhdGgsICZkcCk7CisJCWlmIChlcnJvciA9PSBFTk9FTlQpIHsKKwkJCS8qIENyZWF0
ZSBuZXcgZmlsZS4gKi8KKwkJCWlmICgoZXJyb3IgPSBsb29rdXAocGF0aCwgJmRkcCwgJmZpbGVu
YW1lKSkgIT0gMCkKKwkJCQlyZXR1cm4gZXJyb3I7CisKKwkJCXZuX2xvY2soZGRwLT5kX3Zub2Rl
KTsKKwkJCWlmICgoZXJyb3IgPSB2bl9hY2Nlc3MoZGRwLT5kX3Zub2RlLCBWV1JJVEUpKSAhPSAw
KSB7CisJCQkJdm5fdW5sb2NrKGRkcC0+ZF92bm9kZSk7CisJCQkJZHJlbGUoZGRwKTsKKwkJCQly
ZXR1cm4gZXJyb3I7CisJCQl9CisJCQltb2RlICY9IH5TX0lGTVQ7CisJCQltb2RlIHw9IFNfSUZS
RUc7CisJCQllcnJvciA9IFZPUF9DUkVBVEUoZGRwLT5kX3Zub2RlLCBmaWxlbmFtZSwgbW9kZSk7
CisJCQl2bl91bmxvY2soZGRwLT5kX3Zub2RlKTsKKwkJCWRyZWxlKGRkcCk7CisKKwkJCWlmIChl
cnJvcikKKwkJCQlyZXR1cm4gZXJyb3I7CisJCQlpZiAoKGVycm9yID0gbmFtZWkocGF0aCwgJmRw
KSkgIT0gMCkKKwkJCQlyZXR1cm4gZXJyb3I7CisKKwkJCXZwID0gZHAtPmRfdm5vZGU7CisJCQlm
bGFncyAmPSB+T19UUlVOQzsKKwkJfSBlbHNlIGlmIChlcnJvcikgeworCQkJcmV0dXJuIGVycm9y
OworCQl9IGVsc2UgeworCQkJLyogRmlsZSBhbHJlYWR5IGV4aXRzICovCisJCQlpZiAoZmxhZ3Mg
JiBPX0VYQ0wpIHsKKwkJCQllcnJvciA9IEVFWElTVDsKKwkJCQlnb3RvIG91dF9kcmVsZTsKKwkJ
CX0KKwkJfQorCisJCXZwID0gZHAtPmRfdm5vZGU7CisJCWZsYWdzICY9IH5PX0NSRUFUOworCX0g
ZWxzZSB7CisJCS8qIE9wZW4gKi8KKwkJaWYgKGZsYWdzICYgT19OT0ZPTExPVykgeworCQkJZXJy
b3IgPSBvcGVuX25vX2ZvbGxvd19jaGsocGF0aCk7CisJCQlpZiAoZXJyb3IgIT0gMCkgeworCQkJ
CXJldHVybiAoZXJyb3IpOworCQkJfQorCQl9CisJCWVycm9yID0gbmFtZWkocGF0aCwgJmRwKTsK
KwkJaWYgKGVycm9yKQorCQkJcmV0dXJuIGVycm9yOworCisJCXZwID0gZHAtPmRfdm5vZGU7CisK
KwkJaWYgKGZsYWdzICYgRldSSVRFIHx8IGZsYWdzICYgT19UUlVOQykgeworCQkJZXJyb3IgPSB2
bl9hY2Nlc3ModnAsIFZXUklURSk7CisJCQlpZiAoZXJyb3IpCisJCQkJZ290byBvdXRfZHJlbGU7
CisKKwkJCWVycm9yID0gRUlTRElSOworCQkJaWYgKHZwLT52X3R5cGUgPT0gVkRJUikKKwkJCQln
b3RvIG91dF9kcmVsZTsKKwkJfQorCQlpZiAoZmxhZ3MgJiBPX0RJUkVDVE9SWSkgeworCQkgICAg
aWYgKHZwLT52X3R5cGUgIT0gVkRJUikgeworCQkgICAgICAgIGVycm9yID0gRU5PVERJUjsKKwkJ
ICAgICAgICBnb3RvIG91dF9kcmVsZTsKKwkJICAgIH0KKwkJfQorCX0KKworCXZuX2xvY2sodnAp
OworCS8qIFByb2Nlc3MgdHJ1bmNhdGUgcmVxdWVzdCAqLworCWlmIChmbGFncyAmIE9fVFJVTkMp
IHsKKwkJZXJyb3IgPSBFSU5WQUw7CisJCWlmICghKGZsYWdzICYgRldSSVRFKSB8fCB2cC0+dl90
eXBlID09IFZESVIpCisJCQlnb3RvIG91dF92bl91bmxvY2s7CisKKwkJZXJyb3IgPSBWT1BfVFJV
TkNBVEUodnAsIDApOworCQlpZiAoZXJyb3IpCisJCQlnb3RvIG91dF92bl91bmxvY2s7CisJfQor
CisJdHJ5IHsKKwkgICAgZmlsZXJlZiBmID0gbWFrZV9maWxlPHZmc19maWxlPihmbGFncyk7CisJ
ICAgIGZwID0gZi5nZXQoKTsKKwkgICAgZmhvbGQoZnApOworCX0gY2F0Y2ggKGludCBlcnIpIHsK
KwkgICAgZXJyb3IgPSBlcnI7CisJICAgIGdvdG8gb3V0X3ZuX3VubG9jazsKKwl9CisJLy8gY2hh
bmdlIHRvIHN0ZDo6bW92ZSBvbmNlIGRwIGlzIGEgZGVudHJ5X3JlZgorCWZwLT5mX2RlbnRyeSA9
IGRlbnRyeV9yZWYoZHAsIGZhbHNlKTsKKwlkcCA9IG51bGxwdHI7CisKKwllcnJvciA9IFZPUF9P
UEVOKHZwLCBmcCk7CisJaWYgKGVycm9yKSB7CisJCXZuX3VubG9jayh2cCk7CisJCS8vIE5vdGUg
ZGlyZWN0IGRlbGV0ZSBvZiBmcCBpbnN0ZWFkIG9mIGZkcm9wKGZwKS4gZnAgd2FzIG5ldmVyCisJ
CS8vIHJldHVybmVkIHNvIGNhbm5vdCBiZSBpbiB1c2UsIGFuZCBiZWNhdXNlIGl0IHdhc24ndCBv
cGVuZWQKKwkJLy8gaXQgY2Fubm90IGJlIGNsb3NlKCllZC4KKwkJZGVsZXRlIGZwOworCQlyZXR1
cm4gZXJyb3I7CisJfQorCXZuX3VubG9jayh2cCk7CisKKwkqZnBwID0gZnA7CisJcmV0dXJuIDA7
CisKK291dF92bl91bmxvY2s6CisJdm5fdW5sb2NrKHZwKTsKK291dF9kcmVsZToKKwlpZiAoZHAp
IHsKKwkJZHJlbGUoZHApOworCX0KKwlyZXR1cm4gZXJyb3I7Cit9CisKK2ludAorc3lzX2Nsb3Nl
KHN0cnVjdCBmaWxlICpmcCkKK3sKKworCXJldHVybiAwOworfQorCitpbnQKK3N5c19yZWFkKHN0
cnVjdCBmaWxlICpmcCwgY29uc3Qgc3RydWN0IGlvdmVjICppb3YsIHNpemVfdCBuaW92LAorCQlv
ZmZfdCBvZmZzZXQsIHNpemVfdCAqY291bnQpCit7CisgICAgaWYgKChmcC0+Zl9mbGFncyAmIEZS
RUFEKSA9PSAwKQorICAgICAgICByZXR1cm4gRUJBREY7CisKKyAgICBzaXplX3QgYnl0ZXMgPSAw
OworICAgIGF1dG8gaW92cCA9IGlvdjsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbmlv
djsgaSsrKSB7CisgICAgICAgIGlmIChpb3ZwLT5pb3ZfbGVuID4gSU9TSVpFX01BWCAtIGJ5dGVz
KSB7CisgICAgICAgICAgICByZXR1cm4gRUlOVkFMOworICAgICAgICB9CisgICAgICAgIGJ5dGVz
ICs9IGlvdnAtPmlvdl9sZW47CisgICAgICAgIGlvdnArKzsKKyAgICB9CisKKyAgICBpZiAoYnl0
ZXMgPT0gMCkgeworICAgICAgICAqY291bnQgPSAwOworICAgICAgICByZXR1cm4gMDsKKyAgICB9
CisKKyAgICBzdHJ1Y3QgdWlvIHVpbzsKKyAgICAvLyBVbmZvcnR1bmF0ZWx5LCB0aGUgY3VycmVu
dCBpbXBsZW1lbnRhdGlvbiBvZiBmcC0+cmVhZCB6ZXJvcyB0aGUKKyAgICAvLyBpb3ZfbGVuIGZp
ZWxkcyB3aGVuIGl0IHJlYWRzIGZyb20gZGlzaywgc28gd2UgaGF2ZSB0byBjb3B5IGlvdi4KKyAg
ICBzdGQ6OnZlY3Rvcjxpb3ZlYz4gY29weV9pb3YoaW92LCBpb3YgKyBuaW92KTsKKyAgICB1aW8u
dWlvX2lvdiA9IGNvcHlfaW92LmRhdGEoKTsKKyAgICB1aW8udWlvX2lvdmNudCA9IG5pb3Y7Cisg
ICAgdWlvLnVpb19vZmZzZXQgPSBvZmZzZXQ7CisgICAgdWlvLnVpb19yZXNpZCA9IGJ5dGVzOwor
ICAgIHVpby51aW9fcncgPSBVSU9fUkVBRDsKKyAgICBhdXRvIGVycm9yID0gZnAtPnJlYWQoJnVp
bywgKG9mZnNldCA9PSAtMSkgPyAwIDogRk9GX09GRlNFVCk7CisgICAgKmNvdW50ID0gYnl0ZXMg
LSB1aW8udWlvX3Jlc2lkOworICAgIHJldHVybiBlcnJvcjsKK30KKworaW50CitzeXNfd3JpdGUo
c3RydWN0IGZpbGUgKmZwLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlvdiwgc2l6ZV90IG5pb3YsCisJ
CW9mZl90IG9mZnNldCwgc2l6ZV90ICpjb3VudCkKK3sKKyAgICBpZiAoKGZwLT5mX2ZsYWdzICYg
RldSSVRFKSA9PSAwKQorICAgICAgICByZXR1cm4gRUJBREY7CisKKyAgICBzaXplX3QgYnl0ZXMg
PSAwOworICAgIGF1dG8gaW92cCA9IGlvdjsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bmlvdjsgaSsrKSB7CisgICAgICAgIGlmIChpb3ZwLT5pb3ZfbGVuID4gSU9TSVpFX01BWCAtIGJ5
dGVzKSB7CisgICAgICAgICAgICByZXR1cm4gRUlOVkFMOworICAgICAgICB9CisgICAgICAgIGJ5
dGVzICs9IGlvdnAtPmlvdl9sZW47CisgICAgICAgIGlvdnArKzsKKyAgICB9CisKKyAgICBpZiAo
Ynl0ZXMgPT0gMCkgeworICAgICAgICAqY291bnQgPSAwOworICAgICAgICByZXR1cm4gMDsKKyAg
ICB9CisKKyAgICBzdHJ1Y3QgdWlvIHVpbzsKKyAgICAvLyBVbmZvcnR1bmF0ZWx5LCB0aGUgY3Vy
cmVudCBpbXBsZW1lbnRhdGlvbiBvZiBmcC0+d3JpdGUgemVyb3MgdGhlCisgICAgLy8gaW92X2xl
biBmaWVsZHMgd2hlbiBpdCB3cml0ZXMgdG8gZGlzaywgc28gd2UgaGF2ZSB0byBjb3B5IGlvdi4K
KyAgICBzdGQ6OnZlY3Rvcjxpb3ZlYz4gY29weV9pb3YoaW92LCBpb3YgKyBuaW92KTsKKyAgICB1
aW8udWlvX2lvdiA9IGNvcHlfaW92LmRhdGEoKTsKKyAgICB1aW8udWlvX2lvdmNudCA9IG5pb3Y7
CisgICAgdWlvLnVpb19vZmZzZXQgPSBvZmZzZXQ7CisgICAgdWlvLnVpb19yZXNpZCA9IGJ5dGVz
OworICAgIHVpby51aW9fcncgPSBVSU9fV1JJVEU7CisgICAgYXV0byBlcnJvciA9IGZwLT53cml0
ZSgmdWlvLCAob2Zmc2V0ID09IC0xKSA/IDAgOiBGT0ZfT0ZGU0VUKTsKKyAgICAqY291bnQgPSBi
eXRlcyAtIHVpby51aW9fcmVzaWQ7CisgICAgcmV0dXJuIGVycm9yOworfQorCitpbnQKK3N5c19s
c2VlayhzdHJ1Y3QgZmlsZSAqZnAsIG9mZl90IG9mZiwgaW50IHR5cGUsIG9mZl90ICpvcmlnaW4p
Cit7CisJc3RydWN0IHZub2RlICp2cDsKKworCURQUklOVEYoVkZTREJfU1lTQ0FMTCwgKCJzeXNf
c2VlazogZnA9JXggb2ZmPSVkIHR5cGU9JWRcbiIsCisJCQkJKHVfbG9uZylmcCwgKHVfaW50KW9m
ZiwgdHlwZSkpOworCisJaWYgKCFmcC0+Zl9kZW50cnkpIHsKKwkgICAgLy8gTGludXggZG9lc24n
dCBpbXBsZW1lbnQgbHNlZWsoKSBvbiBwaXBlcywgc29ja2V0cywgb3IgdHR5cy4KKwkgICAgLy8g
SW4gT1NWLCB3ZSBvbmx5IGltcGxlbWVudCBsc2VlaygpIG9uIHJlZ3VsYXIgZmlsZXMsIGJhY2tl
ZCBieSB2bm9kZQorCSAgICByZXR1cm4gRVNQSVBFOworCX0KKworCXZwID0gZnAtPmZfZGVudHJ5
LT5kX3Zub2RlOworCWludCBlcnJvciA9IEVJTlZBTDsKKwl2bl9sb2NrKHZwKTsKKwlzd2l0Y2gg
KHR5cGUpIHsKKwljYXNlIFNFRUtfQ1VSOgorCQlvZmYgPSBmcC0+Zl9vZmZzZXQgKyBvZmY7CisJ
CWJyZWFrOworCWNhc2UgU0VFS19FTkQ6CisJCW9mZiA9IHZwLT52X3NpemUgKyBvZmY7CisJCWJy
ZWFrOworCX0KKwlpZiAob2ZmID49IDApIHsKKwkJZXJyb3IgPSBWT1BfU0VFSyh2cCwgZnAsIGZw
LT5mX29mZnNldCwgb2ZmKTsKKwkJaWYgKCFlcnJvcikgeworCQkJKm9yaWdpbiAgICAgID0gb2Zm
OworCQkJZnAtPmZfb2Zmc2V0ID0gb2ZmOworCQl9CisJfQorCXZuX3VubG9jayh2cCk7CisJcmV0
dXJuIGVycm9yOworfQorCitpbnQKK3N5c19pb2N0bChzdHJ1Y3QgZmlsZSAqZnAsIHVfbG9uZyBy
ZXF1ZXN0LCB2b2lkICpidWYpCit7CisJaW50IGVycm9yOworCisJRFBSSU5URihWRlNEQl9TWVND
QUxMLCAoInN5c19pb2N0bDogZnA9JXggcmVxdWVzdD0leFxuIiwgZnAsIHJlcXVlc3QpKTsKKwor
CWlmICgoZnAtPmZfZmxhZ3MgJiAoRlJFQUQgfCBGV1JJVEUpKSA9PSAwKQorCQlyZXR1cm4gRUJB
REY7CisKKwllcnJvciA9IGZwLT5pb2N0bChyZXF1ZXN0LCBidWYpOworCisJRFBSSU5URihWRlNE
Ql9TWVNDQUxMLCAoInN5c19pb2N0bDogY29tcCBlcnJvcj0lZFxuIiwgZXJyb3IpKTsKKwlyZXR1
cm4gZXJyb3I7Cit9CisKK2ludAorc3lzX2ZzeW5jKHN0cnVjdCBmaWxlICpmcCkKK3sKKwlzdHJ1
Y3Qgdm5vZGUgKnZwOworCWludCBlcnJvcjsKKworCURQUklOVEYoVkZTREJfU1lTQ0FMTCwgKCJz
eXNfZnN5bmM6IGZwPSV4XG4iLCBmcCkpOworCisJaWYgKCFmcC0+Zl9kZW50cnkpCisJCXJldHVy
biBFSU5WQUw7CisKKwl2cCA9IGZwLT5mX2RlbnRyeS0+ZF92bm9kZTsKKwl2bl9sb2NrKHZwKTsK
KwllcnJvciA9IFZPUF9GU1lOQyh2cCwgZnApOworCXZuX3VubG9jayh2cCk7CisJcmV0dXJuIGVy
cm9yOworfQorCitpbnQKK3N5c19mc3RhdChzdHJ1Y3QgZmlsZSAqZnAsIHN0cnVjdCBzdGF0ICpz
dCkKK3sKKwlpbnQgZXJyb3IgPSAwOworCisJRFBSSU5URihWRlNEQl9TWVNDQUxMLCAoInN5c19m
c3RhdDogZnA9JXhcbiIsIGZwKSk7CisKKwllcnJvciA9IGZwLT5zdGF0KHN0KTsKKworCXJldHVy
biBlcnJvcjsKK30KKworLyoKKyAqIFJldHVybiAwIGlmIGRpcmVjdG9yeSBpcyBlbXB0eQorICov
CitzdGF0aWMgaW50CitjaGVja19kaXJfZW1wdHkoY2hhciAqcGF0aCkKK3sKKwlpbnQgZXJyb3I7
CisJc3RydWN0IGZpbGUgKmZwOworCXN0cnVjdCBkaXJlbnQgZGlyOworCisJRFBSSU5URihWRlNE
Ql9TWVNDQUxMLCAoImNoZWNrX2Rpcl9lbXB0eVxuIikpOworCisJZXJyb3IgPSBzeXNfb3Blbihw
YXRoLCBPX1JET05MWSwgMCwgJmZwKTsKKwlpZiAoZXJyb3IpCisJCWdvdG8gb3V0X2Vycm9yOwor
CisJZG8geworCQllcnJvciA9IHN5c19yZWFkZGlyKGZwLCAmZGlyKTsKKwkJaWYgKGVycm9yICE9
IDAgJiYgZXJyb3IgIT0gRUFDQ0VTKQorCQkJYnJlYWs7CisJfSB3aGlsZSAoIXN0cmNtcChkaXIu
ZF9uYW1lLCAiLiIpIHx8ICFzdHJjbXAoZGlyLmRfbmFtZSwgIi4uIikpOworCisJaWYgKGVycm9y
ID09IEVOT0VOVCkKKwkJZXJyb3IgPSAwOworCWVsc2UgaWYgKGVycm9yID09IDApIHsKKwkgICAg
Ly8gUG9zaXggc3BlY2lmaWVzIHRvIHJldHVybiBFRVhJU1QgaW4gdGhpcyBjYXNlIChybWRpciBv
ZiBub24tZW1wdHkKKwkgICAgLy8gZGlyZWN0b3J5LCBidXQgTGludXggYWN0dWFsbHkgcmV0dXJu
cyBFTk9URU1QVFkpLgorCQllcnJvciA9IEVOT1RFTVBUWTsKKwl9CisJZmRyb3AoZnApOworb3V0
X2Vycm9yOgorCXJldHVybiBlcnJvcjsKK30KKworaW50CitzeXNfcmVhZGRpcihzdHJ1Y3QgZmls
ZSAqZnAsIHN0cnVjdCBkaXJlbnQgKmRpcikKK3sKKwlzdHJ1Y3Qgdm5vZGUgKmR2cDsKKwlpbnQg
ZXJyb3I7CisKKwlEUFJJTlRGKFZGU0RCX1NZU0NBTEwsICgic3lzX3JlYWRkaXI6IGZwPSV4XG4i
LCBmcCkpOworCisJaWYgKCFmcC0+Zl9kZW50cnkpCisJCXJldHVybiBFTk9URElSOworCisJZHZw
ID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOworCXZuX2xvY2soZHZwKTsKKwlpZiAoZHZwLT52X3R5
cGUgIT0gVkRJUikgeworCQl2bl91bmxvY2soZHZwKTsKKwkJcmV0dXJuIEVOT1RESVI7CisJfQor
CWVycm9yID0gVk9QX1JFQURESVIoZHZwLCBmcCwgZGlyKTsKKwlEUFJJTlRGKFZGU0RCX1NZU0NB
TEwsICgic3lzX3JlYWRkaXI6IGVycm9yPSVkIHBhdGg9JXNcbiIsCisJCQkJZXJyb3IsIGRpci0+
ZF9uYW1lKSk7CisJdm5fdW5sb2NrKGR2cCk7CisJcmV0dXJuIGVycm9yOworfQorCitpbnQKK3N5
c19yZXdpbmRkaXIoc3RydWN0IGZpbGUgKmZwKQoreworCXN0cnVjdCB2bm9kZSAqZHZwOworCisJ
aWYgKCFmcC0+Zl9kZW50cnkpCisJCXJldHVybiBFTk9URElSOworCisJZHZwID0gZnAtPmZfZGVu
dHJ5LT5kX3Zub2RlOworCXZuX2xvY2soZHZwKTsKKwlpZiAoZHZwLT52X3R5cGUgIT0gVkRJUikg
eworCQl2bl91bmxvY2soZHZwKTsKKwkJcmV0dXJuIEVCQURGOworCX0KKwlmcC0+Zl9vZmZzZXQg
PSAwOworCXZuX3VubG9jayhkdnApOworCXJldHVybiAwOworfQorCitpbnQKK3N5c19zZWVrZGly
KHN0cnVjdCBmaWxlICpmcCwgbG9uZyBsb2MpCit7CisJc3RydWN0IHZub2RlICpkdnA7CisKKwlp
ZiAoIWZwLT5mX2RlbnRyeSkKKwkJcmV0dXJuIEVOT1RESVI7CisKKwlkdnAgPSBmcC0+Zl9kZW50
cnktPmRfdm5vZGU7CisJdm5fbG9jayhkdnApOworCWlmIChkdnAtPnZfdHlwZSAhPSBWRElSKSB7
CisJCXZuX3VubG9jayhkdnApOworCQlyZXR1cm4gRUJBREY7CisJfQorCWZwLT5mX29mZnNldCA9
IChvZmZfdClsb2M7CisJdm5fdW5sb2NrKGR2cCk7CisJcmV0dXJuIDA7Cit9CisKK2ludAorc3lz
X3RlbGxkaXIoc3RydWN0IGZpbGUgKmZwLCBsb25nICpsb2MpCit7CisJc3RydWN0IHZub2RlICpk
dnA7CisKKwlpZiAoIWZwLT5mX2RlbnRyeSkKKwkJcmV0dXJuIEVOT1RESVI7CisKKwlkdnAgPSBm
cC0+Zl9kZW50cnktPmRfdm5vZGU7CisJdm5fbG9jayhkdnApOworCWlmIChkdnAtPnZfdHlwZSAh
PSBWRElSKSB7CisJCXZuX3VubG9jayhkdnApOworCQlyZXR1cm4gRUJBREY7CisJfQorCSpsb2Mg
PSAobG9uZylmcC0+Zl9vZmZzZXQ7CisJdm5fdW5sb2NrKGR2cCk7CisJcmV0dXJuIDA7Cit9CisK
K2ludAorc3lzX21rZGlyKGNoYXIgKnBhdGgsIG1vZGVfdCBtb2RlKQoreworCWNoYXIgKm5hbWU7
CisJc3RydWN0IGRlbnRyeSAqZHAsICpkZHA7CisJaW50IGVycm9yOworCisJRFBSSU5URihWRlNE
Ql9TWVNDQUxMLCAoInN5c19ta2RpcjogcGF0aD0lcyBtb2RlPSVkXG4iLAlwYXRoLCBtb2RlKSk7
CisKKwllcnJvciA9IG5hbWVpKHBhdGgsICZkcCk7CisJaWYgKCFlcnJvcikgeworCQkvKiBGaWxl
IGFscmVhZHkgZXhpc3RzICovCisJCWRyZWxlKGRwKTsKKwkJcmV0dXJuIEVFWElTVDsKKwl9CisK
KwlpZiAoKGVycm9yID0gbG9va3VwKHBhdGgsICZkZHAsICZuYW1lKSkgIT0gMCkgeworCQkvKiBE
aXJlY3RvcnkgYWxyZWFkeSBleGlzdHMgKi8KKwkJcmV0dXJuIGVycm9yOworCX0KKworCXZuX2xv
Y2soZGRwLT5kX3Zub2RlKTsKKwlpZiAoKGVycm9yID0gdm5fYWNjZXNzKGRkcC0+ZF92bm9kZSwg
VldSSVRFKSkgIT0gMCkKKwkJZ290byBvdXQ7CisJbW9kZSAmPSB+U19JRk1UOworCW1vZGUgfD0g
U19JRkRJUjsKKworCWVycm9yID0gVk9QX01LRElSKGRkcC0+ZF92bm9kZSwgbmFtZSwgbW9kZSk7
Cisgb3V0OgorCXZuX3VubG9jayhkZHAtPmRfdm5vZGUpOworCWRyZWxlKGRkcCk7CisJcmV0dXJu
IGVycm9yOworfQorCitpbnQKK3N5c19ybWRpcihjaGFyICpwYXRoKQoreworCXN0cnVjdCBkZW50
cnkgKmRwLCAqZGRwOworCXN0cnVjdCB2bm9kZSAqdnA7CisJaW50IGVycm9yOworCWNoYXIgKm5h
bWU7CisKKwlEUFJJTlRGKFZGU0RCX1NZU0NBTEwsICgic3lzX3JtZGlyOiBwYXRoPSVzXG4iLCBw
YXRoKSk7CisKKwlpZiAoKGVycm9yID0gY2hlY2tfZGlyX2VtcHR5KHBhdGgpKSAhPSAwKQorCQly
ZXR1cm4gZXJyb3I7CisJZXJyb3IgPSBuYW1laShwYXRoLCAmZHApOworCWlmIChlcnJvcikKKwkJ
cmV0dXJuIGVycm9yOworCisJdnAgPSBkcC0+ZF92bm9kZTsKKwl2bl9sb2NrKHZwKTsKKwlpZiAo
KGVycm9yID0gdm5fYWNjZXNzKHZwLCBWV1JJVEUpKSAhPSAwKQorCQlnb3RvIG91dDsKKwlpZiAo
dnAtPnZfdHlwZSAhPSBWRElSKSB7CisJCWVycm9yID0gRU5PVERJUjsKKwkJZ290byBvdXQ7CisJ
fQorCWlmICh2cC0+dl9mbGFncyAmIFZST09UIHx8IHZwLT52X3JlZmNudCA+PSAyKSB7CisJCWVy
cm9yID0gRUJVU1k7CisJCWdvdG8gb3V0OworCX0KKwlpZiAoKGVycm9yID0gbG9va3VwKHBhdGgs
ICZkZHAsICZuYW1lKSkgIT0gMCkKKwkJZ290byBvdXQ7CisKKwl2bl9sb2NrKGRkcC0+ZF92bm9k
ZSk7CisJZXJyb3IgPSBWT1BfUk1ESVIoZGRwLT5kX3Zub2RlLCB2cCwgbmFtZSk7CisJdm5fdW5s
b2NrKGRkcC0+ZF92bm9kZSk7CisKKwl2bl91bmxvY2sodnApOworCWRlbnRyeV9yZW1vdmUoZHAp
OworCWRyZWxlKGRkcCk7CisJZHJlbGUoZHApOworCXJldHVybiBlcnJvcjsKKworIG91dDoKKwl2
bl91bmxvY2sodnApOworCWRyZWxlKGRwKTsKKwlyZXR1cm4gZXJyb3I7Cit9CisKK2ludAorc3lz
X21rbm9kKGNoYXIgKnBhdGgsIG1vZGVfdCBtb2RlKQoreworCWNoYXIgKm5hbWU7CisJc3RydWN0
IGRlbnRyeSAqZHAsICpkZHA7CisJaW50IGVycm9yOworCisJRFBSSU5URihWRlNEQl9TWVNDQUxM
LCAoInN5c19ta25vZDogcGF0aD0lcyBtb2RlPSVkXG4iLAlwYXRoLCBtb2RlKSk7CisKKwlzd2l0
Y2ggKG1vZGUgJiBTX0lGTVQpIHsKKwljYXNlIFNfSUZSRUc6CisJY2FzZSBTX0lGRElSOgorCWNh
c2UgU19JRklGTzoKKwljYXNlIFNfSUZTT0NLOgorCQkvKiBPSyAqLworCQlicmVhazsKKwlkZWZh
dWx0OgorCQlyZXR1cm4gRUlOVkFMOworCX0KKworCWVycm9yID0gbmFtZWkocGF0aCwgJmRwKTsK
KwlpZiAoIWVycm9yKSB7CisJCWRyZWxlKGRwKTsKKwkJcmV0dXJuIEVFWElTVDsKKwl9CisKKwlp
ZiAoKGVycm9yID0gbG9va3VwKHBhdGgsICZkZHAsICZuYW1lKSkgIT0gMCkKKwkJcmV0dXJuIGVy
cm9yOworCisJdm5fbG9jayhkZHAtPmRfdm5vZGUpOworCWlmICgoZXJyb3IgPSB2bl9hY2Nlc3Mo
ZGRwLT5kX3Zub2RlLCBWV1JJVEUpKSAhPSAwKQorCQlnb3RvIG91dDsKKwlpZiAoU19JU0RJUiht
b2RlKSkKKwkJZXJyb3IgPSBWT1BfTUtESVIoZGRwLT5kX3Zub2RlLCBuYW1lLCBtb2RlKTsKKwll
bHNlCisJCWVycm9yID0gVk9QX0NSRUFURShkZHAtPmRfdm5vZGUsIG5hbWUsIG1vZGUpOworIG91
dDoKKwl2bl91bmxvY2soZGRwLT5kX3Zub2RlKTsKKwlkcmVsZShkZHApOworCXJldHVybiBlcnJv
cjsKK30KKworLyoKKyAqIFJldHVybnMgdHJ1ZSB3aGVuIEBwYXJlbnQgcGF0aCBjb3VsZCByZXBy
ZXNlbnQgcGFyZW50IGRpcmVjdG9yeQorICogb2YgYSBmaWxlIG9yIGRpcmVjdG9yeSByZXByZXNl
bnRlZCBieSBAY2hpbGQgcGF0aC4KKyAqCisgKiBBc3N1bWVzIGJvdGggcGF0aHMgZG8gbm90IGhh
dmUgdHJhaWxpbmcgc2xhc2hlcy4KKyAqLworc3RhdGljIGJvb2wKK2lzX3BhcmVudChjb25zdCBj
aGFyICpwYXJlbnQsIGNvbnN0IGNoYXIgKmNoaWxkKQoreworCXNpemVfdCBwX2xlbiA9IHN0cmxl
bihwYXJlbnQpOworCXJldHVybiAhc3RybmNtcChwYXJlbnQsIGNoaWxkLCBwX2xlbikgJiYgKHBh
cmVudFtwX2xlbi0xXSA9PSAnLycgfHwgY2hpbGRbcF9sZW5dID09ICcvJyk7Cit9CisKK3N0YXRp
YyBib29sCitoYXNfdHJhaWxpbmcoY29uc3QgY2hhciAqcGF0aCwgY2hhciBjaCkKK3sKKwlzaXpl
X3QgbGVuID0gc3RybGVuKHBhdGgpOworCXJldHVybiBsZW4gJiYgcGF0aFtsZW4gLSAxXSA9PSBj
aDsKK30KKworc3RhdGljIHZvaWQKK3N0cmlwX3RyYWlsaW5nKGNoYXIgKnBhdGgsIGNoYXIgY2gp
Cit7CisJc2l6ZV90IGxlbiA9IHN0cmxlbihwYXRoKTsKKworCXdoaWxlIChsZW4gJiYgcGF0aFts
ZW4gLSAxXSA9PSBjaCkKKwkJbGVuLS07CisKKwlwYXRoW2xlbl0gPSAnXDAnOworfQorCitpbnQK
K3N5c19yZW5hbWUoY2hhciAqc3JjLCBjaGFyICpkZXN0KQoreworCXN0cnVjdCBkZW50cnkgKmRw
MSwgKmRwMiA9IDAsICpkZHAxLCAqZGRwMjsKKwlzdHJ1Y3Qgdm5vZGUgKnZwMSwgKnZwMiA9IDAs
ICpkdnAxLCAqZHZwMjsKKwljaGFyICpzbmFtZSwgKmRuYW1lOworCWludCBlcnJvcjsKKwljaGFy
IHJvb3RbXSA9ICIvIjsKKwlib29sIHRzOyAvKiB0cmFpbGluZyBzbGFzaCAqLworCisJRFBSSU5U
RihWRlNEQl9TWVNDQUxMLCAoInN5c19yZW5hbWU6IHNyYz0lcyBkZXN0PSVzXG4iLCBzcmMsIGRl
c3QpKTsKKworCXRzID0gZmFsc2U7CisJaWYgKGhhc190cmFpbGluZyhzcmMsICcvJykgPT0gdHJ1
ZSkgeworCQlpZiAoc3RybGVuKHNyYykgIT0gMSkgeworCQkJLyogcmVtb3ZlIHRyYWlsaW5nIHNs
YXNoIGlmZiBwYXRoIGlzIG5vbmUgcm9vdCAqLworCQkJc3RyaXBfdHJhaWxpbmcoc3JjLCAnLycp
OworCQkJdHMgPSB0cnVlOworCQl9CisJfQorCisJZXJyb3IgPSBsb29rdXAoc3JjLCAmZGRwMSwg
JnNuYW1lKTsKKwlpZiAoZXJyb3IgIT0gMCkgeworCQlyZXR1cm4gKGVycm9yKTsKKwl9CisKKwll
cnJvciA9IG5hbWVpX2xhc3Rfbm9mb2xsb3coc3JjLCBkZHAxLCAmZHAxKTsKKwlpZiAoZXJyb3Ig
IT0gMCkgeworCQlkcmVsZShkZHAxKTsKKwkJcmV0dXJuIChlcnJvcik7CisJfQorCisJdnAxID0g
ZHAxLT5kX3Zub2RlOworCXZuX2xvY2sodnAxKTsKKworCWlmICh2cDEtPnZfdHlwZSAhPSBWRElS
ICYmIHRzID09IHRydWUpIHsKKwkJZXJyb3IgPSBFTk9URElSOworCQlnb3RvIGVycjE7CisJfQor
CisJdHMgPSBmYWxzZTsKKwlpZiAoaGFzX3RyYWlsaW5nKGRlc3QsICcvJykgPT0gdHJ1ZSkgewor
CQlpZiAoc3RybGVuKGRlc3QpICE9IDEpIHsKKwkJCS8qIHJlbW92ZSB0cmFpbGluZyBzbGFzaCBp
ZmYgcGF0aCBpcyBub25lIHJvb3QgKi8KKwkJCXN0cmlwX3RyYWlsaW5nKGRlc3QsICcvJyk7CisJ
CQl0cyA9IHRydWU7CisJCX0KKwl9CisKKwllcnJvciA9IGxvb2t1cChkZXN0LCAmZGRwMiwgJmRu
YW1lKTsKKwlpZiAoZXJyb3IgIT0gMCkgeworCQlnb3RvIGVycjE7CisJfQorCisJZXJyb3IgPSBu
YW1laV9sYXN0X25vZm9sbG93KGRlc3QsIGRkcDIsICZkcDIpOworCWlmIChlcnJvciA9PSAwKSB7
CisJCS8qIHRhcmdldCBleGlzdHMgKi8KKworCQl2cDIgPSBkcDItPmRfdm5vZGU7CisJCXZuX2xv
Y2sodnAyKTsKKworCQlpZiAodnAyLT52X3R5cGUgIT0gVkRJUiAmJiB2cDItPnZfdHlwZSAhPSBW
TE5LKSB7CisJCQlpZiAodnAxLT52X3R5cGUgPT0gVkRJUiB8fCB0cyA9PSB0cnVlKSB7CisJCQkJ
ZXJyb3IgPSBFTk9URElSOworCQkJCWdvdG8gZXJyMjsKKwkJCX0KKwkJfSBlbHNlIGlmICh2cDEt
PnZfdHlwZSAhPSBWRElSICYmIHZwMi0+dl90eXBlID09IFZESVIpIHsKKwkJCWVycm9yID0gRUlT
RElSOworCQkJZ290byBlcnIyOworCQl9CisJCWlmICh2cDItPnZfdHlwZSA9PSBWRElSICYmIGNo
ZWNrX2Rpcl9lbXB0eShkZXN0KSkgeworCQkJZXJyb3IgPSBFRVhJU1Q7CisJCQlnb3RvIGVycjI7
CisJCX0KKwl9IGVsc2UgaWYgKGVycm9yID09IEVOT0VOVCkgeworCQlpZiAodnAxLT52X3R5cGUg
IT0gVkRJUiAmJiB0cyA9PSB0cnVlKSB7CisJCQllcnJvciA9IEVOT1RESVI7CisJCQlnb3RvIGVy
cjI7CisJCX0KKwl9IGVsc2UgeworCQlnb3RvIGVycjI7CisJfQorCisJaWYgKHN0cmNtcChkZXN0
LCAiLyIpKQorCQlzdHJpcF90cmFpbGluZyhkZXN0LCAnLycpOworCisJaWYgKHN0cmNtcChzcmMs
ICIvIikpCisJCXN0cmlwX3RyYWlsaW5nKHNyYywgJy8nKTsKKworCS8qIElmIHNvdXJjZSBhbmQg
ZGVzdCBhcmUgdGhlIHNhbWUsIGRvIG5vdGhpbmcgKi8KKwlpZiAoIXN0cm5jbXAoc3JjLCBkZXN0
LCBQQVRIX01BWCkpCisJCWdvdG8gZXJyMjsKKworCS8qIENoZWNrIGlmIHRhcmdldCBpcyBkaXJl
Y3Rvcnkgb2Ygc291cmNlICovCisJaWYgKGlzX3BhcmVudChzcmMsIGRlc3QpKSB7CisJCWVycm9y
ID0gRUlOVkFMOworCQlnb3RvIGVycjI7CisJfQorCisJZG5hbWUgPSBzdHJyY2hyKGRlc3QsICcv
Jyk7CisJaWYgKGRuYW1lID09IG51bGxwdHIpIHsKKwkJZXJyb3IgPSBFTk9URElSOworCQlnb3Rv
IGVycjI7CisJfQorCWlmIChkbmFtZSA9PSBkZXN0KQorCQlkZXN0ID0gcm9vdDsKKworCSpkbmFt
ZSA9IDA7CisJZG5hbWUrKzsKKworCWR2cDEgPSBkZHAxLT5kX3Zub2RlOworCXZuX2xvY2soZHZw
MSk7CisKKwlkdnAyID0gZGRwMi0+ZF92bm9kZTsKKwl2bl9sb2NrKGR2cDIpOworCisJLyogU291
cmNlIGFuZCBkZXN0aW5hdGlvbiBkaXJlY3Rpb25zIHNob3VsZCBiZSB3cml0YWJsZSkgKi8KKwlp
ZiAoKGVycm9yID0gdm5fYWNjZXNzKGR2cDEsIFZXUklURSkpICE9IDApCisJICAgIGdvdG8gZXJy
MzsKKwlpZiAoKGVycm9yID0gdm5fYWNjZXNzKGR2cDIsIFZXUklURSkpICE9IDApCisJICAgIGdv
dG8gZXJyMzsKKworCS8qIFRoZSBzb3VyY2UgYW5kIGRlc3QgbXVzdCBiZSBzYW1lIGZpbGUgc3lz
dGVtICovCisJaWYgKGR2cDEtPnZfbW91bnQgIT0gZHZwMi0+dl9tb3VudCkgeworCQllcnJvciA9
IEVYREVWOworCQlnb3RvIGVycjM7CisJfQorCisJZXJyb3IgPSBWT1BfUkVOQU1FKGR2cDEsIHZw
MSwgc25hbWUsIGR2cDIsIHZwMiwgZG5hbWUpOworCisJZGVudHJ5X21vdmUoZHAxLCBkZHAyLCBk
bmFtZSk7CisJaWYgKGRwMikKKwkJZGVudHJ5X3JlbW92ZShkcDIpOworCisgZXJyMzoKKwl2bl91
bmxvY2soZHZwMik7CisJdm5fdW5sb2NrKGR2cDEpOworIGVycjI6CisJaWYgKHZwMikgeworCQl2
bl91bmxvY2sodnAyKTsKKwkJZHJlbGUoZHAyKTsKKwl9CisJZHJlbGUoZGRwMik7CisgZXJyMToK
Kwl2bl91bmxvY2sodnAxKTsKKwlkcmVsZShkcDEpOworCWRyZWxlKGRkcDEpOworCXJldHVybiBl
cnJvcjsKK30KKworaW50CitzeXNfc3ltbGluayhjb25zdCBjaGFyICpvbGRwYXRoLCBjb25zdCBj
aGFyICpuZXdwYXRoKQoreworCXN0cnVjdCB0YXNrCSp0ID0gbWFpbl90YXNrOworCWludAkJZXJy
b3I7CisJc3RkOjp1bmlxdWVfcHRyPGNoYXIgW10+IHVwX29wIChuZXcgY2hhcltQQVRIX01BWF0p
OworCWNoYXIJCSpvcCA9IHVwX29wLmdldCgpOworCXN0ZDo6dW5pcXVlX3B0cjxjaGFyIFtdPiB1
cF9ucCAobmV3IGNoYXJbUEFUSF9NQVhdKTsKKwljaGFyCQkqbnAgPSB1cF9ucC5nZXQoKTsKKwlz
dHJ1Y3QgZGVudHJ5CSpuZXdkcDsKKwlzdHJ1Y3QgZGVudHJ5CSpuZXdkaXJkcDsKKwljaGFyCQkq
bmFtZTsKKworCWlmIChvbGRwYXRoID09IG51bGxwdHIgfHwgbmV3cGF0aCA9PSBudWxscHRyKSB7
CisJCXJldHVybiAoRUZBVUxUKTsKKwl9CisKKwlEUFJJTlRGKFZGU0RCX1NZU0NBTEwsICgic3lz
X2xpbms6IG9sZHBhdGg9JXMgbmV3cGF0aD0lc1xuIiwKKwkJCQlvbGRwYXRoLCBuZXdwYXRoKSk7
CisKKwluZXdkcAkJPSBudWxscHRyOworCW5ld2RpcmRwCT0gbnVsbHB0cjsKKworCWVycm9yID0g
dGFza19jb252KHQsIG5ld3BhdGgsIFZXUklURSwgbnApOworCWlmIChlcnJvciAhPSAwKSB7CisJ
CXJldHVybiAoZXJyb3IpOworCX0KKworCS8qIHBhcmVudCBkaXJlY3RvcnkgZm9yIG5ldyBwYXRo
IG11c3QgZXhpc3QgKi8KKwlpZiAoKGVycm9yID0gbG9va3VwKG5wLCAmbmV3ZGlyZHAsICZuYW1l
KSkgIT0gMCkgeworCQllcnJvciA9IEVOT0VOVDsKKwkJZ290byBvdXQ7CisJfQorCXZuX2xvY2so
bmV3ZGlyZHAtPmRfdm5vZGUpOworCisJLyogbmV3cGF0aCBzaG91bGQgbm90IGFscmVhZHkgZXhp
c3QgKi8KKwlpZiAobmFtZWlfbGFzdF9ub2ZvbGxvdyhucCwgbmV3ZGlyZHAsICZuZXdkcCkgPT0g
MCkgeworCQlkcmVsZShuZXdkcCk7CisJCWVycm9yID0gRUVYSVNUOworCQlnb3RvIG91dDsKKwl9
CisKKwkvKiBjaGVjayBmb3Igd3JpdGUgYWNjZXNzIGF0IG5ld3BhdGggKi8KKwlpZiAoKGVycm9y
ID0gdm5fYWNjZXNzKG5ld2RpcmRwLT5kX3Zub2RlLCBWV1JJVEUpKSAhPSAwKSB7CisJCWdvdG8g
b3V0OworCX0KKworCS8qIG9sZHBhdGggbWF5IG5vdCBiZSBjb25zdCBjaGFyICogdG8gVk9QX1NZ
TUxJTksgLSBuZWVkIHRvIGNvcHkgKi8KKwlzaXplX3QgdG9jb3B5OworCXRvY29weSA9IHN0cmxj
cHkob3AsIG9sZHBhdGgsIFBBVEhfTUFYKTsKKwlpZiAodG9jb3B5ID49IFBBVEhfTUFYIC0gMSkg
eworCQllcnJvciA9IEVOQU1FVE9PTE9ORzsKKwkJZ290byBvdXQ7CisJfQorCWVycm9yID0gVk9Q
X1NZTUxJTksobmV3ZGlyZHAtPmRfdm5vZGUsIG5hbWUsIG9wKTsKKworb3V0OgorCWlmIChuZXdk
aXJkcCAhPSBudWxscHRyKSB7CisJCXZuX3VubG9jayhuZXdkaXJkcC0+ZF92bm9kZSk7CisJCWRy
ZWxlKG5ld2RpcmRwKTsKKwl9CisKKwlyZXR1cm4gKGVycm9yKTsKK30KKworaW50CitzeXNfbGlu
ayhjaGFyICpvbGRwYXRoLCBjaGFyICpuZXdwYXRoKQoreworCXN0cnVjdCBkZW50cnkgKm9sZGRw
LCAqbmV3ZHAsICpuZXdkaXJkcDsKKwlzdHJ1Y3Qgdm5vZGUgKnZwOworCWNoYXIgKm5hbWU7CisJ
aW50IGVycm9yOworCisJRFBSSU5URihWRlNEQl9TWVNDQUxMLCAoInN5c19saW5rOiBvbGRwYXRo
PSVzIG5ld3BhdGg9JXNcbiIsCisJCQkJb2xkcGF0aCwgbmV3cGF0aCkpOworCisJLyogRmlsZSBm
cm9tIG9sZHBhdGggbXVzdCBleGlzdCAqLworCWlmICgoZXJyb3IgPSBuYW1laShvbGRwYXRoLCAm
b2xkZHApKSAhPSAwKQorCQlyZXR1cm4gZXJyb3I7CisKKwl2cCA9IG9sZGRwLT5kX3Zub2RlOwor
CXZuX2xvY2sodnApOworCisJaWYgKHZwLT52X3R5cGUgPT0gVkRJUikgeworCQllcnJvciA9IEVQ
RVJNOworCQlnb3RvIG91dDsKKwl9CisKKwkvKiBJZiBuZXdwYXRoIGV4aXN0cywgaXQgc2hvdWxk
bid0IGJlIG92ZXJ3cml0dGVuICovCisJaWYgKCFuYW1laShuZXdwYXRoLCAmbmV3ZHApKSB7CisJ
CWVycm9yID0gRUVYSVNUOworCQlnb3RvIG91dDsKKwl9CisKKwkvKiBHZXQgcG9pbnRlciB0byB0
aGUgcGFyZW50IGRlbnRyeSBvZiBuZXdwYXRoICovCisJaWYgKChlcnJvciA9IGxvb2t1cChuZXdw
YXRoLCAmbmV3ZGlyZHAsICZuYW1lKSkgIT0gMCkKKwkJZ290byBvdXQ7CisKKwl2bl9sb2NrKG5l
d2RpcmRwLT5kX3Zub2RlKTsKKworCS8qIEJvdGggZmlsZXMgbXVzdCByZXNpZGUgb24gdGhlIHNh
bWUgbW91bnRlZCBmaWxlIHN5c3RlbSAqLworCWlmIChvbGRkcC0+ZF9tb3VudCAhPSBuZXdkaXJk
cC0+ZF9tb3VudCkgeworCQllcnJvciA9IEVYREVWOworCQlnb3RvIG91dDE7CisJfQorCisJLyog
V3JpdGUgYWNjZXNzIHRvIHRoZSBkaXIgY29udGFpbmluZyBuZXdwYXRoIGlzIHJlcXVpcmVkICov
CisJaWYgKChlcnJvciA9IHZuX2FjY2VzcyhuZXdkaXJkcC0+ZF92bm9kZSwgVldSSVRFKSkgIT0g
MCkKKwkJZ290byBvdXQxOworCisJLyogTWFwIG5ld3BhdGggaW50byBkZW50cnkgaGFzaCB3aXRo
IHRoZSBzYW1lIHZub2RlIGFzIG9sZHBhdGggKi8KKwlpZiAoIShuZXdkcCA9IGRlbnRyeV9hbGxv
YyhuZXdkaXJkcCwgdnAsIG5ld3BhdGgpKSkgeworCQllcnJvciA9IEVOT01FTTsKKwkJZ290byBv
dXQxOworCX0KKworCWVycm9yID0gVk9QX0xJTksobmV3ZGlyZHAtPmRfdm5vZGUsIHZwLCBuYW1l
KTsKKyBvdXQxOgorCXZuX3VubG9jayhuZXdkaXJkcC0+ZF92bm9kZSk7CisJZHJlbGUobmV3ZGly
ZHApOworIG91dDoKKwl2bl91bmxvY2sodnApOworCWRyZWxlKG9sZGRwKTsKKwlkcmVsZShuZXdk
cCk7CisJcmV0dXJuIGVycm9yOworfQorCitpbnQKK3N5c191bmxpbmsoY2hhciAqcGF0aCkKK3sK
KwljaGFyICpuYW1lOworCXN0cnVjdCBkZW50cnkgKmRwLCAqZGRwOworCXN0cnVjdCB2bm9kZSAq
dnA7CisJaW50IGVycm9yOworCisJRFBSSU5URihWRlNEQl9TWVNDQUxMLCAoInN5c191bmxpbms6
IHBhdGg9JXNcbiIsIHBhdGgpKTsKKworCWRkcCAgID0gbnVsbHB0cjsKKwlkcCAgICA9IG51bGxw
dHI7CisJdnAgICAgPSBudWxscHRyOworCisJZXJyb3IgPSBsb29rdXAocGF0aCwgJmRkcCwgJm5h
bWUpOworCWlmIChlcnJvciAhPSAwKSB7CisJCXJldHVybiAoZXJyb3IpOworCX0KKworCWVycm9y
ID0gbmFtZWlfbGFzdF9ub2ZvbGxvdyhwYXRoLCBkZHAsICZkcCk7CisJaWYgKGVycm9yICE9IDAp
IHsKKwkJZ290byBvdXQ7CisJfQorCisJdnAgPSBkcC0+ZF92bm9kZTsKKwl2bl9sb2NrKHZwKTsK
KwlpZiAodnAtPnZfdHlwZSA9PSBWRElSKSB7CisJICAgIC8vIFBvc2l4IHNwZWNpZmllcyB0aGF0
IHdlIHNob3VsZCByZXR1cm4gRVBFUk0gaGVyZSwgYnV0IExpbnV4CisJICAgIC8vIGFjdHVhbGx5
IHJldHVybnMgRUlTRElSLgorCQllcnJvciA9IEVJU0RJUjsKKwkJZ290byBvdXQ7CisJfQorCWlm
ICh2cC0+dl9mbGFncyAmIFZST09UKSB7CisJCWVycm9yID0gRUJVU1k7CisJCWdvdG8gb3V0Owor
CX0KKworCXZuX2xvY2soZGRwLT5kX3Zub2RlKTsKKwlpZiAoKGVycm9yID0gdm5fYWNjZXNzKGRk
cC0+ZF92bm9kZSwgVldSSVRFKSkgIT0gMCkgeworCSAgICB2bl91bmxvY2soZGRwLT5kX3Zub2Rl
KTsKKwkgICAgZ290byBvdXQ7CisJfQorCWVycm9yID0gVk9QX1JFTU9WRShkZHAtPmRfdm5vZGUs
IHZwLCBuYW1lKTsKKwl2bl91bmxvY2soZGRwLT5kX3Zub2RlKTsKKworCXZuX3VubG9jayh2cCk7
CisJZGVudHJ5X3JlbW92ZShkcCk7CisJZHJlbGUoZGRwKTsKKwlkcmVsZShkcCk7CisJcmV0dXJu
IGVycm9yOworIG91dDoKKwlpZiAodnAgIT0gbnVsbHB0cikgeworCQl2bl91bmxvY2sodnApOwor
CX0KKworCWlmIChkcCAhPSBudWxscHRyKSB7CisJCWRyZWxlKGRwKTsKKwl9CisKKwlpZiAoZGRw
ICE9IG51bGxwdHIpIHsKKwkJZHJlbGUoZGRwKTsKKwl9CisJcmV0dXJuIGVycm9yOworfQorCitp
bnQKK3N5c19hY2Nlc3MoY2hhciAqcGF0aCwgaW50IG1vZGUpCit7CisJc3RydWN0IGRlbnRyeSAq
ZHA7CisJaW50IGVycm9yLCBmbGFnczsKKworCURQUklOVEYoVkZTREJfU1lTQ0FMTCwgKCJzeXNf
YWNjZXNzOiBwYXRoPSVzIG1vZGU9JXhcbiIsIHBhdGgsIG1vZGUpKTsKKworCS8qIElmIEZfT0sg
aXMgc2V0LCB3ZSByZXR1cm4gaGVyZSBpZiBmaWxlIGlzIG5vdCBmb3VuZC4gKi8KKwllcnJvciA9
IG5hbWVpKHBhdGgsICZkcCk7CisJaWYgKGVycm9yKQorCQlyZXR1cm4gZXJyb3I7CisKKwlmbGFn
cyA9IDA7CisJaWYgKG1vZGUgJiBSX09LKQorCQlmbGFncyB8PSBWUkVBRDsKKwlpZiAobW9kZSAm
IFdfT0spCisJCWZsYWdzIHw9IFZXUklURTsKKwlpZiAobW9kZSAmIFhfT0spCisJCWZsYWdzIHw9
IFZFWEVDOworCisJZXJyb3IgPSB2bl9hY2Nlc3MoZHAtPmRfdm5vZGUsIGZsYWdzKTsKKworCWRy
ZWxlKGRwKTsKKwlyZXR1cm4gZXJyb3I7Cit9CisKK2ludAorc3lzX3N0YXQoY2hhciAqcGF0aCwg
c3RydWN0IHN0YXQgKnN0KQoreworCURQUklOVEYoVkZTREJfU1lTQ0FMTCwgKCJzeXNfc3RhdDog
cGF0aD0lc1xuIiwgcGF0aCkpOworCisJdHJ5IHsKKwkJZGVudHJ5X3JlZiBkcCA9IG5hbWVpKHBh
dGgpOworCQlpZiAoIWRwKSB7CisJCQlyZXR1cm4gRU5PRU5UOworCQl9CisJCXJldHVybiB2bl9z
dGF0KGRwLT5kX3Zub2RlLCBzdCk7CisJfSBjYXRjaCAoZXJyb3IgZSkgeworCQlyZXR1cm4gZS5n
ZXQoKTsKKwl9Cit9CisKK2ludCBzeXNfbHN0YXQoY2hhciAqcGF0aCwgc3RydWN0IHN0YXQgKnN0
KQoreworCWludCAgICAgICAgICAgZXJyb3I7CisJc3RydWN0IGRlbnRyeSAqZGRwOworCWNoYXIg
ICAgICAgICAgKm5hbWU7CisJc3RydWN0IGRlbnRyeSAqZHA7CisKKwlEUFJJTlRGKFZGU0RCX1NZ
U0NBTEwsICgic3lzX2xzdGF0OiBwYXRoPSVzXG4iLCBwYXRoKSk7CisKKwllcnJvciA9IGxvb2t1
cChwYXRoLCAmZGRwLCAmbmFtZSk7CisJaWYgKGVycm9yKSB7CisJCXJldHVybiAoZXJyb3IpOwor
CX0KKworCWVycm9yID0gbmFtZWlfbGFzdF9ub2ZvbGxvdyhwYXRoLCBkZHAsICZkcCk7CisJaWYg
KGVycm9yKSB7CisJCWRyZWxlKGRkcCk7CisJCXJldHVybiBlcnJvcjsKKwl9CisKKwllcnJvciA9
IHZuX3N0YXQoZHAtPmRfdm5vZGUsIHN0KTsKKwlkcmVsZShkcCk7CisJZHJlbGUoZGRwKTsKKwly
ZXR1cm4gZXJyb3I7Cit9CisKK2ludAorc3lzX3N0YXRmcyhjaGFyICpwYXRoLCBzdHJ1Y3Qgc3Rh
dGZzICpidWYpCit7CisJbWVtc2V0KGJ1ZiwgMCwgc2l6ZW9mKCpidWYpKTsKKwl0cnkgeworCQlk
ZW50cnlfcmVmIGRwID0gbmFtZWkocGF0aCk7CisJCWlmICghZHApIHsKKwkJCXJldHVybiBFTk9F
TlQ7CisJCX0KKwkJcmV0dXJuIFZGU19TVEFURlMoZHAtPmRfbW91bnQsIGJ1Zik7CisJfSBjYXRj
aCAoZXJyb3IgZSkgeworCQlyZXR1cm4gZS5nZXQoKTsKKwl9Cit9CisKK2ludAorc3lzX2ZzdGF0
ZnMoc3RydWN0IGZpbGUgKmZwLCBzdHJ1Y3Qgc3RhdGZzICpidWYpCit7CisJc3RydWN0IHZub2Rl
ICp2cDsKKwlpbnQgZXJyb3IgPSAwOworCisJaWYgKCFmcC0+Zl9kZW50cnkpCisJCXJldHVybiBF
QkFERjsKKworCXZwID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOworCW1lbXNldChidWYsIDAsIHNp
emVvZigqYnVmKSk7CisKKwl2bl9sb2NrKHZwKTsKKwllcnJvciA9IFZGU19TVEFURlModnAtPnZf
bW91bnQsIGJ1Zik7CisJdm5fdW5sb2NrKHZwKTsKKworCXJldHVybiBlcnJvcjsKK30KKworaW50
CitzeXNfdHJ1bmNhdGUoY2hhciAqcGF0aCwgb2ZmX3QgbGVuZ3RoKQoreworCXN0cnVjdCBkZW50
cnkgKmRwOworCWludCBlcnJvcjsKKworCWVycm9yID0gbmFtZWkocGF0aCwgJmRwKTsKKwlpZiAo
ZXJyb3IpCisJCXJldHVybiBlcnJvcjsKKworCXZuX2xvY2soZHAtPmRfdm5vZGUpOworCWVycm9y
ID0gVk9QX1RSVU5DQVRFKGRwLT5kX3Zub2RlLCBsZW5ndGgpOworCXZuX3VubG9jayhkcC0+ZF92
bm9kZSk7CisKKwlkcmVsZShkcCk7CisJcmV0dXJuIGVycm9yOworfQorCitpbnQKK3N5c19mdHJ1
bmNhdGUoc3RydWN0IGZpbGUgKmZwLCBvZmZfdCBsZW5ndGgpCit7CisJc3RydWN0IHZub2RlICp2
cDsKKwlpbnQgZXJyb3I7CisKKwlpZiAoIWZwLT5mX2RlbnRyeSkKKwkJcmV0dXJuIEVCQURGOwor
CisJdnAgPSBmcC0+Zl9kZW50cnktPmRfdm5vZGU7CisJdm5fbG9jayh2cCk7CisJZXJyb3IgPSBW
T1BfVFJVTkNBVEUodnAsIGxlbmd0aCk7CisJdm5fdW5sb2NrKHZwKTsKKworCXJldHVybiBlcnJv
cjsKK30KKworaW50CitzeXNfZmNoZGlyKHN0cnVjdCBmaWxlICpmcCwgY2hhciAqY3dkKQorewor
CXN0cnVjdCB2bm9kZSAqZHZwOworCisJaWYgKCFmcC0+Zl9kZW50cnkpCisJCXJldHVybiBFQkFE
RjsKKworCWR2cCA9IGZwLT5mX2RlbnRyeS0+ZF92bm9kZTsKKwl2bl9sb2NrKGR2cCk7CisJaWYg
KGR2cC0+dl90eXBlICE9IFZESVIpIHsKKwkJdm5fdW5sb2NrKGR2cCk7CisJCXJldHVybiBFQkFE
RjsKKwl9CisJc3RybGNweShjd2QsIGZwLT5mX2RlbnRyeS0+ZF9wYXRoLCBQQVRIX01BWCk7CisJ
dm5fdW5sb2NrKGR2cCk7CisJcmV0dXJuIDA7Cit9CisKK2ludAorc3lzX3JlYWRsaW5rKGNoYXIg
KnBhdGgsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnNpemUsIHNzaXplX3QgKnNpemUpCit7CisJaW50
CQllcnJvcjsKKwlzdHJ1Y3QgZGVudHJ5CSpkZHA7CisJY2hhcgkJKm5hbWU7CisJc3RydWN0IGRl
bnRyeQkqZHA7CisJc3RydWN0IHZub2RlCSp2cDsKKwlzdHJ1Y3QgaW92ZWMJdmVjOworCXN0cnVj
dCB1aW8JdWlvOworCisJKnNpemUgPSAwOworCWVycm9yID0gbG9va3VwKHBhdGgsICZkZHAsICZu
YW1lKTsKKwlpZiAoZXJyb3IpIHsKKwkJcmV0dXJuIChlcnJvcik7CisJfQorCisJZXJyb3IgPSBu
YW1laV9sYXN0X25vZm9sbG93KHBhdGgsIGRkcCwgJmRwKTsKKwlpZiAoZXJyb3IpIHsKKwkJZHJl
bGUoZGRwKTsKKwkJcmV0dXJuIChlcnJvcik7CisJfQorCisJaWYgKGRwLT5kX3Zub2RlLT52X3R5
cGUgIT0gVkxOSykgeworCQlkcmVsZShkcCk7CisJCWRyZWxlKGRkcCk7CisJCXJldHVybiAoRUlO
VkFMKTsKKwl9CisJdmVjLmlvdl9iYXNlCT0gYnVmOworCXZlYy5pb3ZfbGVuCT0gYnVmc2l6ZTsK
KworCXVpby51aW9faW92CT0gJnZlYzsKKwl1aW8udWlvX2lvdmNudAk9IDE7CisJdWlvLnVpb19v
ZmZzZXQJPSAwOworCXVpby51aW9fcmVzaWQJPSBidWZzaXplOworCXVpby51aW9fcncJPSBVSU9f
UkVBRDsKKworCXZwID0gZHAtPmRfdm5vZGU7CisJdm5fbG9jayh2cCk7CisJZXJyb3IgPSBWT1Bf
UkVBRExJTksodnAsICZ1aW8pOworCXZuX3VubG9jayh2cCk7CisKKwlkcmVsZShkcCk7CisJZHJl
bGUoZGRwKTsKKworCWlmIChlcnJvcikgeworCQlyZXR1cm4gKGVycm9yKTsKKwl9CisKKwkqc2l6
ZSA9IGJ1ZnNpemUgLSB1aW8udWlvX3Jlc2lkOworCXJldHVybiAoMCk7Cit9CisKKy8qCisgKiBD
aGVjayB0aGUgdmFsaWRpdHkgb2YgdGhlIG1lbWJlcnMgb2YgYSBzdHJ1Y3QgdGltZXZhbC4KKyAq
Lworc3RhdGljIGJvb2wgaXNfdGltZXZhbF92YWxpZChjb25zdCBzdHJ1Y3QgdGltZXZhbCAqdGlt
ZSkKK3sKKyAgICByZXR1cm4gKHRpbWUtPnR2X3NlYyA+PSAwKSAmJgorICAgICAgICAgICAodGlt
ZS0+dHZfdXNlYyA+PSAwICYmIHRpbWUtPnR2X3VzZWMgPCAxMDAwMDAwKTsKK30KKworLyoKKyAq
IENvbnZlcnQgYSB0aW1ldmFsIHN0cnVjdCB0byBhIHRpbWVzcGVjIG9uZS4KKyAqLworc3RhdGlj
IHZvaWQgY29udmVydF90aW1ldmFsKHN0cnVjdCB0aW1lc3BlYyAmdG8sIGNvbnN0IHN0cnVjdCB0
aW1ldmFsICpmcm9tKQoreworICAgIGlmIChmcm9tKSB7CisgICAgICAgIHRvLnR2X3NlYyA9IGZy
b20tPnR2X3NlYzsKKyAgICAgICAgdG8udHZfbnNlYyA9IGZyb20tPnR2X3VzZWMgKiAxMDAwOyAv
LyBDb252ZXJ0IG1pY3Jvc2Vjb25kcyB0byBuYW5vc2Vjb25kcworICAgIH0gZWxzZSB7CisgICAg
ICAgIGNsb2NrX2dldHRpbWUoQ0xPQ0tfUkVBTFRJTUUsICZ0byk7CisgICAgfQorfQorCitpbnQK
K3N5c191dGltZXMoY2hhciAqcGF0aCwgY29uc3Qgc3RydWN0IHRpbWV2YWwgdGltZXNbMl0sIGlu
dCBmbGFncykKK3sKKyAgICBpbnQgZXJyb3I7CisgICAgc3RydWN0IGRlbnRyeSAqZHA7CisgICAg
c3RydWN0IHRpbWVzcGVjIHRpbWVzcGVjX3RpbWVzWzJdOworCisgICAgRFBSSU5URihWRlNEQl9T
WVNDQUxMLCAoInN5c191dGltZXM6IHBhdGg9JXNcbiIsIHBhdGgpKTsKKworICAgIGlmICh0aW1l
cyAmJiAoIWlzX3RpbWV2YWxfdmFsaWQoJnRpbWVzWzBdKSB8fCAhaXNfdGltZXZhbF92YWxpZCgm
dGltZXNbMV0pKSkKKyAgICAgICAgcmV0dXJuIEVJTlZBTDsKKworICAgIC8vIENvbnZlcnQgZWFj
aCBlbGVtZW50IG9mIHRpbWV2YWwgYXJyYXkgdG8gdGhlIHRpbWVzcGVjIHR5cGUKKyAgICBjb252
ZXJ0X3RpbWV2YWwodGltZXNwZWNfdGltZXNbMF0sIHRpbWVzID8gdGltZXMgKyAwIDogbnVsbHB0
cik7CisgICAgY29udmVydF90aW1ldmFsKHRpbWVzcGVjX3RpbWVzWzFdLCB0aW1lcyA/IHRpbWVz
ICsgMSA6IG51bGxwdHIpOworCisgICAgaWYgKGZsYWdzICYgQVRfU1lNTElOS19OT0ZPTExPVykg
eworICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpkZHA7CisgICAgICAgIGVycm9yID0gbG9va3VwKHBh
dGgsICZkZHAsIG51bGxwdHIpOworICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgIHJl
dHVybiBlcnJvcjsKKyAgICAgICAgfQorCisgICAgICAgIGVycm9yID0gbmFtZWlfbGFzdF9ub2Zv
bGxvdyhwYXRoLCBkZHAsICZkcCk7CisgICAgICAgIGlmIChkZHAgIT0gbnVsbHB0cikgeworICAg
ICAgICAgICAgZHJlbGUoZGRwKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZXJyb3IpIHsKKyAg
ICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAg
IGVycm9yID0gbmFtZWkocGF0aCwgJmRwKTsKKyAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAg
ICAgcmV0dXJuIGVycm9yOworICAgIH0KKworICAgIGlmIChkcC0+ZF9tb3VudC0+bV9mbGFncyAm
IE1OVF9SRE9OTFkpIHsKKyAgICAgICAgZXJyb3IgPSBFUk9GUzsKKyAgICB9IGVsc2UgeworICAg
ICAgICBlcnJvciA9IHZuX3NldHRpbWVzKGRwLT5kX3Zub2RlLCB0aW1lc3BlY190aW1lcyk7Cisg
ICAgfQorCisgICAgZHJlbGUoZHApOworICAgIHJldHVybiBlcnJvcjsKK30KKworLyoKKyAqIENo
ZWNrIHRoZSB2YWxpZGl0eSBvZiBtZW1iZXJzIG9mIGEgc3RydWN0IHRpbWVzcGVjCisgKi8KK3N0
YXRpYyBib29sIGlzX3RpbWVzcGVjX3ZhbGlkKGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAmdGltZSkK
K3sKKyAgICByZXR1cm4gKHRpbWUudHZfc2VjID49IDApICYmCisJICAgKCh0aW1lLnR2X25zZWMg
Pj0gMCAmJiB0aW1lLnR2X25zZWMgPD0gOTk5OTk5OTk5KSB8fAorCSAgICB0aW1lLnR2X25zZWMg
PT0gVVRJTUVfTk9XIHx8CisJICAgIHRpbWUudHZfbnNlYyA9PSBVVElNRV9PTUlUKTsKK30KKwor
dm9pZCBpbml0X3RpbWVzcGVjKHN0cnVjdCB0aW1lc3BlYyAmX3RpbWVzLCBjb25zdCBzdHJ1Y3Qg
dGltZXNwZWMgKnRpbWVzKQoreworICAgIGlmICh0aW1lcyA9PSBudWxscHRyIHx8IHRpbWVzLT50
dl9uc2VjID09IFVUSU1FX05PVykgeworICAgICAgICBjbG9ja19nZXR0aW1lKENMT0NLX1JFQUxU
SU1FLCAmX3RpbWVzKTsKKyAgICB9IGVsc2UgeworICAgICAgICBfdGltZXMudHZfc2VjID0gdGlt
ZXMtPnR2X3NlYzsKKyAgICAgICAgX3RpbWVzLnR2X25zZWMgPSB0aW1lcy0+dHZfbnNlYzsKKyAg
ICB9CisgICAgcmV0dXJuOworfQorCitpbnQKK3N5c191dGltZW5zYXQoaW50IGRpcmZkLCBjb25z
dCBjaGFyICpwYXRobmFtZSwgY29uc3Qgc3RydWN0IHRpbWVzcGVjIHRpbWVzWzJdLCBpbnQgZmxh
Z3MpCit7CisgICAgaW50IGVycm9yOworICAgIHN0ZDo6c3RyaW5nIGFwOworICAgIHN0cnVjdCB0
aW1lc3BlYyB0aW1lc3BlY190aW1lc1syXTsKKyAgICBleHRlcm4gc3RydWN0IHRhc2sgKm1haW5f
dGFzazsKKyAgICBzdHJ1Y3QgZGVudHJ5ICpkcDsKKworICAgIC8qIHV0aW1lbnNhdCBzaG91bGQg
cmV0dXJuIEVOT0VOVCB3aGVuIHBhdGhuYW1lIGlzIGVtcHR5ICovCisgICAgaWYocGF0aG5hbWUg
JiYgcGF0aG5hbWVbMF0gPT0gMCkKKyAgICAgICAgcmV0dXJuIEVOT0VOVDsKKworICAgIGlmIChm
bGFncyAmJiAhKGZsYWdzICYgQVRfU1lNTElOS19OT0ZPTExPVykpCisgICAgICAgIHJldHVybiBF
SU5WQUw7CisKKyAgICBpZiAodGltZXMgJiYgKCFpc190aW1lc3BlY192YWxpZCh0aW1lc1swXSkg
fHwgIWlzX3RpbWVzcGVjX3ZhbGlkKHRpbWVzWzFdKSkpCisgICAgICAgIHJldHVybiBFSU5WQUw7
CisKKyAgICBpbml0X3RpbWVzcGVjKHRpbWVzcGVjX3RpbWVzWzBdLCB0aW1lcyA/IHRpbWVzICsg
MCA6IG51bGxwdHIpOworICAgIGluaXRfdGltZXNwZWModGltZXNwZWNfdGltZXNbMV0sIHRpbWVz
ID8gdGltZXMgKyAxIDogbnVsbHB0cik7CisKKyAgICBpZiAocGF0aG5hbWUgJiYgcGF0aG5hbWVb
MF0gPT0gJy8nKSB7CisJYXAgPSBwYXRobmFtZTsKKyAgICB9IGVsc2UgaWYgKGRpcmZkID09IEFU
X0ZEQ1dEKSB7CisJaWYgKCFwYXRobmFtZSkKKwkgICAgcmV0dXJuIEVGQVVMVDsKKwlhcCA9IHN0
ZDo6c3RyaW5nKG1haW5fdGFzay0+dF9jd2QpICsgIi8iICsgcGF0aG5hbWU7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgc3RydWN0IGZpbGUgKmZwOworICAgICAgICBmaWxlcmVmIGYoZmlsZXJlZl9m
cm9tX2ZkKGRpcmZkKSk7CisKKyAgICAgICAgaWYgKCFmKQorCSAgICByZXR1cm4gRUJBREY7CisK
KwlmcCA9IGYuZ2V0KCk7CisKKwlpZighZnAtPmZfZGVudHJ5KQorCSAgICByZXR1cm4gRUJBREY7
CisKKwlpZiAoIShmcC0+Zl9kZW50cnktPmRfdm5vZGUtPnZfdHlwZSAmIFZESVIpKQorCSAgICBy
ZXR1cm4gRU5PVERJUjsKKworCWlmIChwYXRobmFtZSkKKwkgICAgYXAgPSBzdGQ6OnN0cmluZyhm
cC0+Zl9kZW50cnktPmRfcGF0aCkgKyAiLyIgKyBwYXRobmFtZTsKKwllbHNlCisJICAgIGFwID0g
ZnAtPmZfZGVudHJ5LT5kX3BhdGg7CisKKwlhcCA9IHN0ZDo6c3RyaW5nKGZwLT5mX2RlbnRyeS0+
ZF9tb3VudC0+bV9wYXRoKSArICIvIiArIGFwOworICAgIH0KKworICAgIC8qIEZJWE1FOiBBZGQg
c3VwcG9ydCBmb3IgQVRfU1lNTElOS19OT0ZPTExPVyAqLworCisgICAgZXJyb3IgPSBuYW1laShh
cC5jX3N0cigpLCAmZHApOworCisgICAgaWYgKGVycm9yKQorICAgICAgICByZXR1cm4gZXJyb3I7
CisKKyAgICBpZiAoZHAtPmRfbW91bnQtPm1fZmxhZ3MgJiBNTlRfUkRPTkxZKSB7CisgICAgICAg
IGVycm9yID0gRVJPRlM7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKHZuX2FjY2VzcyhkcC0+
ZF92bm9kZSwgVldSSVRFKSkgeworICAgICAgICAgICAgcmV0dXJuIEVBQ0NFUzsKKyAgICAgICAg
fQorCSAgICBpZiAodGltZXMgJiYKKyAgICAgICAgICAgICAgICh0aW1lc1swXS50dl9uc2VjICE9
IFVUSU1FX05PVyB8fCB0aW1lc1sxXS50dl9uc2VjICE9IFVUSU1FX05PVykgJiYKKyAgICAgICAg
ICAgICAgICh0aW1lc1swXS50dl9uc2VjICE9IFVUSU1FX09NSVQgfHwgdGltZXNbMV0udHZfbnNl
YyAhPSBVVElNRV9PTUlUKSAmJgorCSAgICAgICAoIShkcC0+ZF92bm9kZS0+dl9tb2RlICYgflZB
UFBFTkQpKSkKKwkgICAgICAgIHJldHVybiBFUEVSTTsKKyAgICAgICAgZXJyb3IgPSB2bl9zZXR0
aW1lcyhkcC0+ZF92bm9kZSwgdGltZXNwZWNfdGltZXMpOworICAgIH0KKworICAgIGRyZWxlKGRw
KTsKKyAgICByZXR1cm4gZXJyb3I7Cit9CisKK2ludAorc3lzX2Z1dGltZW5zKGludCBmZCwgY29u
c3Qgc3RydWN0IHRpbWVzcGVjIHRpbWVzWzJdKQoreworICAgIHN0cnVjdCBmaWxlICpmcDsKKwor
ICAgIGZpbGVyZWYgZihmaWxlcmVmX2Zyb21fZmQoZmQpKTsKKyAgICBpZiAoIWYpCisgICAgICAg
IHJldHVybiBFQkFERjsKKworICAgIGZwID0gZi5nZXQoKTsKKworICAgIGlmICghZnAtPmZfZGVu
dHJ5KQorICAgICAgICByZXR1cm4gRUJBREY7CisKKyAgICBzdGQ6OnN0cmluZyBwYXRobmFtZSA9
IGZwLT5mX2RlbnRyeS0+ZF9wYXRoOworICAgIGF1dG8gZXJyb3IgPSBzeXNfdXRpbWVuc2F0KEFU
X0ZEQ1dELCBwYXRobmFtZS5jX3N0cigpLCB0aW1lcywgMCk7CisgICAgcmV0dXJuIGVycm9yOwor
fQorCitpbnQKK3N5c19mYWxsb2NhdGUoc3RydWN0IGZpbGUgKmZwLCBpbnQgbW9kZSwgbG9mZl90
IG9mZnNldCwgbG9mZl90IGxlbikKK3sKKyAgICBpbnQgZXJyb3I7CisgICAgc3RydWN0IHZub2Rl
ICp2cDsKKworICAgIERQUklOVEYoVkZTREJfU1lTQ0FMTCwgKCJzeXNfZmFsbG9jYXRlOiBmcD0l
eCIsIGZwKSk7CisKKyAgICBpZiAoIWZwLT5mX2RlbnRyeSB8fCAhKGZwLT5mX2ZsYWdzICYgRldS
SVRFKSkgeworICAgICAgICByZXR1cm4gRUJBREY7CisgICAgfQorCisgICAgaWYgKG9mZnNldCA8
IDAgfHwgbGVuIDw9IDApIHsKKyAgICAgICAgcmV0dXJuIEVJTlZBTDsKKyAgICB9CisKKyAgICAv
LyBTdHJhbmdlLCBidXQgdGhhdCdzIHdoYXQgTGludXggcmV0dXJucy4KKyAgICBpZiAoKG1vZGUg
JiBGQUxMT0NfRkxfUFVOQ0hfSE9MRSkgJiYgIShtb2RlICYgRkFMTE9DX0ZMX0tFRVBfU0laRSkp
IHsKKyAgICAgICAgcmV0dXJuIEVOT1RTVVA7CisgICAgfQorCisgICAgdnAgPSBmcC0+Zl9kZW50
cnktPmRfdm5vZGU7CisgICAgdm5fbG9jayh2cCk7CisKKyAgICAvLyBOT1RFOiBJdCdzIG5vdCBk
ZXRlY3RlZCBoZXJlIHdoZXRoZXIgb3Igbm90IHRoZSBkZXZpY2UgdW5kZXJseWluZworICAgIC8v
IHRoZSBmcyBpcyBhIGJsb2NrIGRldmljZS4gSXQncyB1cCB0byB0aGUgZnMgaXRzZWxmIHRlbGwg
dXMgd2hldGhlcgorICAgIC8vIG9yIG5vdCBmYWxsb2NhdGUgaXMgc3VwcG9ydGVkLiBTZWUgYmVs
b3c6CisgICAgaWYgKHZwLT52X3R5cGUgIT0gVlJFRyAmJiB2cC0+dl90eXBlICE9IFZESVIpIHsK
KyAgICAgICAgZXJyb3IgPSBFTk9ERVY7CisgICAgICAgIGdvdG8gcmV0OworICAgIH0KKworICAg
IC8vIEVPUE5PVFNVUFAgaGVyZSBtZWFucyB0aGF0IHRoZSB1bmRlcmx5aW5nIGZpbGUgc3lzdGVt
CisgICAgLy8gcmVmZXJyZWQgYnkgdnAgZG9lc24ndCBzdXBwb3J0IGZhbGxvY2F0ZS4KKyAgICBp
ZiAoIXZwLT52X29wLT52b3BfZmFsbG9jYXRlKSB7CisgICAgICAgIGVycm9yID0gRU9QTk9UU1VQ
UDsKKyAgICAgICAgZ290byByZXQ7CisgICAgfQorCisgICAgZXJyb3IgPSBWT1BfRkFMTE9DQVRF
KHZwLCBtb2RlLCBvZmZzZXQsIGxlbik7CityZXQ6CisgICAgdm5fdW5sb2NrKHZwKTsKKyAgICBy
ZXR1cm4gZXJyb3I7Cit9CisKK2ludAorc3lzX2NobW9kKGNvbnN0IGNoYXIgKnBhdGgsIG1vZGVf
dCBtb2RlKQoreworICAgIGludCBlcnJvcjsKKyAgICBzdHJ1Y3QgZGVudHJ5ICpkcDsKKyAgICBE
UFJJTlRGKFZGU0RCX1NZU0NBTEwsICgic3lzX2NobW9kOiBwYXRoPSVzXG4iLCBwYXRoKSk7Cisg
ICAgZXJyb3IgPSBuYW1laShwYXRoLCAmZHApOworICAgIGlmIChlcnJvcikKKyAgICAgICAgcmV0
dXJuIGVycm9yOworICAgIGlmIChkcC0+ZF9tb3VudC0+bV9mbGFncyAmIE1OVF9SRE9OTFkpIHsK
KyAgICAgICAgZXJyb3IgPSBFUk9GUzsKKyAgICB9IGVsc2UgeworICAgICAgICBlcnJvciA9IHZu
X3NldG1vZGUoZHAtPmRfdm5vZGUsIG1vZGUpOworICAgIH0KKyAgICBkcmVsZShkcCk7CisgICAg
cmV0dXJuIGVycm9yOworfQorCitpbnQKK3N5c19mY2htb2QoaW50IGZkLCBtb2RlX3QgbW9kZSkK
K3sKKyAgICBmaWxlcmVmIGYoZmlsZXJlZl9mcm9tX2ZkKGZkKSk7CisgICAgaWYgKCFmKQorICAg
ICAgICByZXR1cm4gRUJBREY7CisgICAgLy8gUG9zaXggaXMgYW1iaXZhbGVudCBvbiB3aGF0IGZj
aG1vZCgpIHNob3VsZCBkbyBvbiBhbiBmZCB0aGF0IGRvZXMgbm90CisgICAgLy8gcmVmZXIgdG8g
YSByZWFsIGZpbGUuIEl0IHN1Z2dlc3RzIGFuIGltcGxlbWVudGF0aW9uIG1heSAoYnV0IG5vdCBt
dXN0KQorICAgIC8vIGZhaWwgRUlOVkFMIG9uIGEgcGlwZSwgY2FuIGJlaGF2ZSBpbiBhbiAidW5z
cGVjaWZpZWQiIG1hbm5lciBvbiBhCisgICAgLy8gc29ja2V0LCBhbmQgZm9yIGEgU1RSRUFNLCBp
dCBtdXN0IHN1Y2NlZWQgYW5kIGRvIG5vdGhpbmcuIExpbnV4IHNlZW1zCisgICAgLy8gdG8ganVz
dCBkbyB0aGUgbGFzdCB0aGluZyAoZG8gbm90aGluZyBhbmQgc3VjY2VlZCkuCisgICAgaWYgKCFm
LT5mX2RlbnRyeSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgaWYgKGYtPmZfZGVu
dHJ5LT5kX21vdW50LT5tX2ZsYWdzICYgTU5UX1JET05MWSkgeworICAgICAgICByZXR1cm4gRVJP
RlM7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIHZuX3NldG1vZGUoZi0+Zl9kZW50cnkt
PmRfdm5vZGUsIG1vZGUpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3Rhc2su
YyBiL2xpYi92ZnNjb3JlL3Rhc2suYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MC4uN2EzNTUwMzQKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvdmZzY29yZS90YXNrLmMKQEAgLTAs
MCArMSwxNjcgQEAKKy8qLQorICogQ29weXJpZ2h0IChjKSAyMDA3LCBLb2hzdWtlIE9odGFuaSBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0
aGUgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgYW55IGNvLWNvbnRyaWJ1dG9ycworICogICAgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlz
IHNvZnR3YXJlCisgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1Ig
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisv
KgorICogdmZzX3Rhc2suYyAtIFJvdXRpbmVzIHRvIG1hbmFnZSB0aGUgcGVyIHRhc2sgZGF0YS4K
KyAqLworCisKKyNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNs
dWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisK
KyNpbmNsdWRlIDxvc3YvcHJleC5oPgorI2luY2x1ZGUgInZmcy5oIgorCisvKgorICogQWxsb2Nh
dGUgbmV3IHRhc2suCisgKi8KK2ludAordGFza19hbGxvYyhzdHJ1Y3QgdGFzayAqKnB0KQorewor
CXN0cnVjdCB0YXNrICp0OworCisgICAgLy8gRklYTUU6IHdoZXJlIGRvIHdlIGZyZWUgdGFzayA/
CisJaWYgKCEodCA9IG5ldyB0YXNrKSkKKwkJcmV0dXJuIEVOT01FTTsKKwltZW1zZXQodCwgMCwg
c2l6ZW9mKHN0cnVjdCB0YXNrKSk7CisJc3RybGNweSh0LT50X2N3ZCwgIi8iLCBzaXplb2YodC0+
dF9jd2QpKTsKKworCSpwdCA9IHQ7CisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBDb252ZXJ0IHRv
IGZ1bGwgcGF0aCBmcm9tIHRoZSBjd2Qgb2YgdGFzayBhbmQgcGF0aC4KKyAqIEB3ZDogICB3b3Jr
aW5nIGRpcmVjdG9yeQorICogQHBhdGg6IHRhcmdldCBwYXRoCisgKiBAZnVsbDogZnVsbCBwYXRo
IHRvIGJlIHJldHVybmVkCisgKi8KK2ludAorcGF0aF9jb252KGNoYXIgKndkLCBjb25zdCBjaGFy
ICpjcGF0aCwgY2hhciAqZnVsbCkKK3sKKwljaGFyIHBhdGhbUEFUSF9NQVhdOworCWNoYXIgKnNy
YywgKnRndCwgKnAsICplbmQ7CisJc2l6ZV90IGxlbiA9IDA7CisKKwlzdHJsY3B5KHBhdGgsIGNw
YXRoLCBQQVRIX01BWCk7CisJcGF0aFtQQVRIX01BWCAtIDFdID0gJ1wwJzsKKworCWxlbiA9IHN0
cmxlbihwYXRoKTsKKwlpZiAobGVuID49IFBBVEhfTUFYKQorCQlyZXR1cm4gRU5BTUVUT09MT05H
OworCWlmIChzdHJsZW4od2QpICsgbGVuID49IFBBVEhfTUFYKQorCQlyZXR1cm4gRU5BTUVUT09M
T05HOworCXNyYyA9IHBhdGg7CisJdGd0ID0gZnVsbDsKKwllbmQgPSBzcmMgKyBsZW47CisJaWYg
KHBhdGhbMF0gPT0gJy8nKSB7CisJCSp0Z3QrKyA9ICpzcmMrKzsKKwkJbGVuID0gMTsKKwl9IGVs
c2UgeworCQlzdHJsY3B5KGZ1bGwsIHdkLCBQQVRIX01BWCk7CisJCWxlbiA9IHN0cmxlbih3ZCk7
CisJCXRndCArPSBsZW47CisJCWlmIChsZW4gPiAxICYmIHBhdGhbMF0gIT0gJy4nKSB7CisJCQkq
dGd0ID0gJy8nOworCQkJdGd0Kys7CisJCQlsZW4rKzsKKwkJfQorCX0KKwl3aGlsZSAoKnNyYykg
eworCQlwID0gc3JjOworCQl3aGlsZSAoKnAgIT0gJy8nICYmICpwICE9ICdcMCcpCisJCQlwKys7
CisJCSpwID0gJ1wwJzsKKwkJaWYgKCFzdHJjbXAoc3JjLCAiLi4iKSkgeworCQkJaWYgKGxlbiA+
PSAyKSB7CisJCQkJbGVuIC09IDI7CisJCQkJdGd0IC09IDI7CS8qIHNraXAgcHJldmlvdXMgJy8n
ICovCisJCQkJd2hpbGUgKCp0Z3QgIT0gJy8nKSB7CisJCQkJCXRndC0tOworCQkJCQlsZW4tLTsK
KwkJCQl9CisJCQkJaWYgKGxlbiA9PSAwKSB7CisJCQkJCXRndCsrOworCQkJCQlsZW4rKzsKKwkJ
CQl9CisJCQl9CisJCX0gZWxzZSBpZiAoIXN0cmNtcChzcmMsICIuIikpIHsKKwkJCS8qIElnbm9y
ZSAiLiIgKi8KKwkJfSBlbHNlIHsKKwkJCXdoaWxlICgqc3JjICE9ICdcMCcpIHsKKwkJCQkqdGd0
KysgPSAqc3JjKys7CisJCQkJbGVuKys7CisJCQl9CisJCX0KKwkJaWYgKHAgPT0gZW5kKQorCQkJ
YnJlYWs7CisJCWlmIChsZW4gPiAwICYmICoodGd0IC0gMSkgIT0gJy8nKSB7CisJCQkqdGd0Kysg
PSAnLyc7CisJCQlsZW4rKzsKKwkJfQorCQlzcmMgPSBwICsgMTsKKwl9CisJKnRndCA9ICdcMCc7
CisKKwlyZXR1cm4gKDApOworfQorCisvKgorICogQ29udmVydCB0byBmdWxsIHBhdGggZnJvbSB0
aGUgY3dkIG9mIHRhc2sgYW5kIHBhdGguCisgKiBAdDogICAgdGFzayBzdHJ1Y3R1cmUKKyAqIEBw
YXRoOiB0YXJnZXQgcGF0aAorICogQGZ1bGw6IGZ1bGwgcGF0aCB0byBiZSByZXR1cm5lZAorICog
QGFjYzogYWNjZXNzIG1vZGUKKyAqLworaW50Cit0YXNrX2NvbnYoc3RydWN0IHRhc2sgKnQsIGNv
bnN0IGNoYXIgKmNwYXRoLCBpbnQgYWNjLCBjaGFyICpmdWxsKQoreworCWludCByYzsKKworCXJj
ID0gcGF0aF9jb252KHQtPnRfY3dkLCBjcGF0aCwgZnVsbCk7CisJaWYgKHJjICE9IDApIHsKKwkJ
cmV0dXJuIChyYyk7CisJfQorCisJLyogQ2hlY2sgaWYgdGhlIGNsaWVudCB0YXNrIGhhcyByZXF1
aXJlZCBwZXJtaXNzaW9uICovCisJcmV0dXJuICgwKTsgLy9zZWNfZmlsZV9wZXJtaXNzaW9uKHQt
PnRfdGFza2lkLCBmdWxsLCBhY2MpOworfQorCisvKgorICogU2FmZSBjb3B5aW5nIGZ1bmN0aW9u
IHRoYXQgY2hlY2tzIGZvciBvdmVyZmxvdy4KKyAqLworaW50IHZmc19kbmFtZV9jb3B5KGNoYXIg
KmRlc3QsIGNvbnN0IGNoYXIgKnNyYywgc2l6ZV90IHNpemUpCit7CisgICAgaWYgKHN0cmxjcHko
ZGVzdCwgc3JjLCBzaXplKSA+PSBzaXplKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9Cisg
ICAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS92ZnMuaCBiL2xpYi92ZnNj
b3JlL3Zmcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi5kODZlZjk1Nwot
LS0gL2Rldi9udWxsCisrKyBiL2xpYi92ZnNjb3JlL3Zmcy5oCkBAIC0wLDAgKzEsMTg5IEBACisv
KgorICogQ29weXJpZ2h0IChjKSAyMDA1LTIwMDcsIEtvaHN1a2UgT2h0YW5pCisgKiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgYXV0
aG9yIG5vciB0aGUgbmFtZXMgb2YgYW55IGNvLWNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3
YXJlCisgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
CisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IF9WRlNfSAorI2RlZmluZSBfVkZTX0gKKworI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgorI2luY2x1
ZGUgPGFzc2VydC5oPgorI2luY2x1ZGUgPGRpcmVudC5oPgorI2luY2x1ZGUgPGxpbWl0cy5oPgor
CisjaW5jbHVkZSA8b3N2L3ByZXguaD4KKyNpbmNsdWRlIDxvc3YvZmlsZS5oPgorI2luY2x1ZGUg
PG9zdi9tb3VudC5oPgorI2luY2x1ZGUgPG9zdi92bm9kZS5oPgorI2luY2x1ZGUgPG9zdi9kZW50
cnkuaD4KKyNpbmNsdWRlIDxvc3YvZXJyb3IuaD4KKworLyoKKyAqIEltcG9ydCB2bm9kZSBhdHRy
aWJ1dGVzIGZsYWdzCisgKi8KKyNpbmNsdWRlIDxvc3Yvdm5vZGVfYXR0ci5oPgorCisvKiAjZGVm
aW5lIERFQlVHX1ZGUyAxICovCisKKy8qCisgKiBUdW5hYmxlIHBhcmFtZXRlcnMKKyAqLworI2Rl
ZmluZSBGU01BWE5BTUVTCTE2CQkvKiBtYXggbGVuZ3RoIG9mICdmaWxlIHN5c3RlbScgbmFtZSAq
LworCisjaWZkZWYgREVCVUdfVkZTCisjaW5jbHVkZSA8b3N2L2RlYnVnLmg+CisKK2V4dGVybiBp
bnQgdmZzX2RlYnVnOworCisjZGVmaW5lCVZGU0RCX0NPUkUJMHgwMDAwMDAwMQorI2RlZmluZQlW
RlNEQl9TWVNDQUxMCTB4MDAwMDAwMDIKKyNkZWZpbmUJVkZTREJfVk5PREUJMHgwMDAwMDAwNAor
I2RlZmluZQlWRlNEQl9CSU8JMHgwMDAwMDAwOAorI2RlZmluZQlWRlNEQl9DQVAJMHgwMDAwMDAx
MAorCisjZGVmaW5lIFZGU0RCX0ZMQUdTCTB4MDAwMDAwMTMKKworI2RlZmluZQlEUFJJTlRGKF9t
LFgpCWlmICh2ZnNfZGVidWcgJiAoX20pKSBrcHJpbnRmIFgKKyNlbHNlCisjZGVmaW5lCURQUklO
VEYoX20sIFgpCisjZW5kaWYKKworI2RlZmluZSBBU1NFUlQoZSkJYXNzZXJ0KGUpCisKKyNkZWZp
bmUgT1BFTl9NQVgJMjU2CisKKy8qCisgKiBwZXIgdGFzayBkYXRhCisgKi8KK3N0cnVjdCB0YXNr
IHsKKwljaGFyIAkgICAgdF9jd2RbUEFUSF9NQVhdOwkvKiBjdXJyZW50IHdvcmtpbmcgZGlyZWN0
b3J5ICovCisJc3RydWN0IGZpbGUgKnRfY3dkZnA7CQkvKiBkaXJlY3RvcnkgZm9yIGN3ZCAqLwor
fTsKKworZXh0ZXJuIGNvbnN0IHN0cnVjdCB2ZnNzdyB2ZnNzd1tdOworCitfX0JFR0lOX0RFQ0xT
CitpbnQJIHN5c19vcGVuKGNoYXIgKnBhdGgsIGludCBmbGFncywgbW9kZV90IG1vZGUsIHN0cnVj
dCBmaWxlICoqZnApOworaW50CSBzeXNfcmVhZChzdHJ1Y3QgZmlsZSAqZnAsIGNvbnN0IHN0cnVj
dCBpb3ZlYyAqaW92LCBzaXplX3QgbmlvdiwKKwkJb2ZmX3Qgb2Zmc2V0LCBzaXplX3QgKmNvdW50
KTsKK2ludAkgc3lzX3dyaXRlKHN0cnVjdCBmaWxlICpmcCwgY29uc3Qgc3RydWN0IGlvdmVjICpp
b3YsIHNpemVfdCBuaW92LAorCQlvZmZfdCBvZmZzZXQsIHNpemVfdCAqY291bnQpOworaW50CSBz
eXNfbHNlZWsoc3RydWN0IGZpbGUgKmZwLCBvZmZfdCBvZmYsIGludCB0eXBlLCBvZmZfdCAqIGN1
cl9vZmYpOworaW50CSBzeXNfaW9jdGwoc3RydWN0IGZpbGUgKmZwLCB1X2xvbmcgcmVxdWVzdCwg
dm9pZCAqYnVmKTsKK2ludAkgc3lzX2ZzdGF0KHN0cnVjdCBmaWxlICpmcCwgc3RydWN0IHN0YXQg
KnN0KTsKK2ludAkgc3lzX2ZzdGF0ZnMoc3RydWN0IGZpbGUgKmZwLCBzdHJ1Y3Qgc3RhdGZzICpi
dWYpOworaW50CSBzeXNfZnN5bmMoc3RydWN0IGZpbGUgKmZwKTsKK2ludAkgc3lzX2Z0cnVuY2F0
ZShzdHJ1Y3QgZmlsZSAqZnAsIG9mZl90IGxlbmd0aCk7CisKK2ludAkgc3lzX3JlYWRkaXIoc3Ry
dWN0IGZpbGUgKmZwLCBzdHJ1Y3QgZGlyZW50ICpkaXJlbnQpOworaW50CSBzeXNfcmV3aW5kZGly
KHN0cnVjdCBmaWxlICpmcCk7CitpbnQJIHN5c19zZWVrZGlyKHN0cnVjdCBmaWxlICpmcCwgbG9u
ZyBsb2MpOworaW50CSBzeXNfdGVsbGRpcihzdHJ1Y3QgZmlsZSAqZnAsIGxvbmcgKmxvYyk7Citp
bnQJIHN5c19mY2hkaXIoc3RydWN0IGZpbGUgKmZwLCBjaGFyICpwYXRoKTsKKworaW50CSBzeXNf
bWtkaXIoY2hhciAqcGF0aCwgbW9kZV90IG1vZGUpOworaW50CSBzeXNfcm1kaXIoY2hhciAqcGF0
aCk7CitpbnQJIHN5c19ta25vZChjaGFyICpwYXRoLCBtb2RlX3QgbW9kZSk7CitpbnQJIHN5c19y
ZW5hbWUoY2hhciAqc3JjLCBjaGFyICpkZXN0KTsKK2ludAkgc3lzX2xpbmsoY2hhciAqb2xkcGF0
aCwgY2hhciAqbmV3cGF0aCk7CitpbnQJIHN5c191bmxpbmsoY2hhciAqcGF0aCk7CitpbnQJIHN5
c19zeW1saW5rKGNvbnN0IGNoYXIgKm9sZHBhdGgsIGNvbnN0IGNoYXIgKm5ld3BhdGgpOworaW50
CSBzeXNfYWNjZXNzKGNoYXIgKnBhdGgsIGludCBtb2RlKTsKK2ludAkgc3lzX3N0YXQoY2hhciAq
cGF0aCwgc3RydWN0IHN0YXQgKnN0KTsKK2ludAkgc3lzX2xzdGF0KGNoYXIgKnBhdGgsIHN0cnVj
dCBzdGF0ICpzdCk7CitpbnQJIHN5c19zdGF0ZnMoY2hhciAqcGF0aCwgc3RydWN0IHN0YXRmcyAq
YnVmKTsKK2ludAkgc3lzX3RydW5jYXRlKGNoYXIgKnBhdGgsIG9mZl90IGxlbmd0aCk7CitpbnQJ
IHN5c19yZWFkbGluayhjaGFyICpwYXRoLCBjaGFyICpidWYsIHNpemVfdCBidWZzaXplLCBzc2l6
ZV90ICpzaXplKTsKK2ludCAgc3lzX3V0aW1lcyhjaGFyICpwYXRoLCBjb25zdCBzdHJ1Y3QgdGlt
ZXZhbCB0aW1lc1syXSwgaW50IGZsYWdzKTsKK2ludCAgc3lzX3V0aW1lbnNhdChpbnQgZGlyZmQs
IGNvbnN0IGNoYXIgKnBhdGhuYW1lLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB0
aW1lc3BlYyB0aW1lc1syXSwgaW50IGZsYWdzKTsKK2ludCAgc3lzX2Z1dGltZW5zKGludCBmZCwg
Y29uc3Qgc3RydWN0IHRpbWVzcGVjIHRpbWVzWzJdKTsKK2ludCAgc3lzX2ZhbGxvY2F0ZShzdHJ1
Y3QgZmlsZSAqZnAsIGludCBtb2RlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuKTsKKworaW50
CSBzeXNfbW91bnQoY29uc3QgY2hhciAqZGV2LCBjb25zdCBjaGFyICpkaXIsIGNvbnN0IGNoYXIg
KmZzbmFtZSwgaW50IGZsYWdzLCBjb25zdCB2b2lkICpkYXRhKTsKK2ludAkgc3lzX3Vtb3VudDIo
Y29uc3QgY2hhciAqcGF0aCwgaW50IGZsYWdzKTsKK2ludAkgc3lzX3Vtb3VudChjb25zdCBjaGFy
ICpwYXRoKTsKK2ludAkgc3lzX3Bpdm90X3Jvb3QoY29uc3QgY2hhciAqbmV3X3Jvb3QsIGNvbnN0
IGNoYXIgKm9sZF9wdXQpOworaW50CSBzeXNfc3luYyh2b2lkKTsKK2ludAkgc3lzX2NobW9kKGNv
bnN0IGNoYXIgKnBhdGgsIG1vZGVfdCBtb2RlKTsKK2ludAkgc3lzX2ZjaG1vZChpbnQgZmQsIG1v
ZGVfdCBtb2RlKTsKKworCitpbnQJIHRhc2tfYWxsb2Moc3RydWN0IHRhc2sgKipwdCk7CitpbnQJ
IHRhc2tfY29udihzdHJ1Y3QgdGFzayAqdCwgY29uc3QgY2hhciAqcGF0aCwgaW50IG1vZGUsIGNo
YXIgKmZ1bGwpOworaW50CSBwYXRoX2NvbnYoY2hhciAqd2QsIGNvbnN0IGNoYXIgKmNwYXRoLCBj
aGFyICpmdWxsKTsKKworLy9pbnQJIHNlY19maWxlX3Blcm1pc3Npb24odGFza190IHRhc2ssIGNo
YXIgKnBhdGgsIGludCBtb2RlKTsKK2ludAkgc2VjX3Zub2RlX3Blcm1pc3Npb24oY2hhciAqcGF0
aCk7CisKK2ludCAgICAgbmFtZWkoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IGRlbnRyeSAqKmRw
cCk7CitpbnQJIG5hbWVpX2xhc3Rfbm9mb2xsb3coY2hhciAqcGF0aCwgc3RydWN0IGRlbnRyeSAq
ZGRwLCBzdHJ1Y3QgZGVudHJ5ICoqZHApOworaW50CSBsb29rdXAoY2hhciAqcGF0aCwgc3RydWN0
IGRlbnRyeSAqKmRwcCwgY2hhciAqKm5hbWUpOwordm9pZAkgdm5vZGVfaW5pdCh2b2lkKTsKK3Zv
aWQJIGxvb2t1cF9pbml0KHZvaWQpOworCitpbnQgICAgIHZmc19maW5kcm9vdChjb25zdCBjaGFy
ICpwYXRoLCBzdHJ1Y3QgbW91bnQgKiptcCwgY2hhciAqKnJvb3QpOworaW50CSB2ZnNfZG5hbWVf
Y29weShjaGFyICpkZXN0LCBjb25zdCBjaGFyICpzcmMsIHNpemVfdCBzaXplKTsKKworaW50CSBm
c19ub29wKHZvaWQpOworCitzdHJ1Y3QgZGVudHJ5ICpkZW50cnlfYWxsb2Moc3RydWN0IGRlbnRy
eSAqcGFyZW50X2RwLCBzdHJ1Y3Qgdm5vZGUgKnZwLCBjb25zdCBjaGFyICpwYXRoKTsKK3N0cnVj
dCBkZW50cnkgKmRlbnRyeV9sb29rdXAoc3RydWN0IG1vdW50ICptcCwgY2hhciAqcGF0aCk7Cit2
b2lkIGRlbnRyeV9tb3ZlKHN0cnVjdCBkZW50cnkgKmRwLCBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnRf
ZHAsIGNoYXIgKnBhdGgpOwordm9pZCBkZW50cnlfcmVtb3ZlKHN0cnVjdCBkZW50cnkgKmRwKTsK
K3ZvaWQgZHJlZihzdHJ1Y3QgZGVudHJ5ICpkcCk7Cit2b2lkIGRyZWxlKHN0cnVjdCBkZW50cnkg
KmRwKTsKK3ZvaWQgZGVudHJ5X2luaXQodm9pZCk7CisKKyNpZmRlZiBERUJVR19WRlMKK3ZvaWQJ
IHZub2RlX2R1bXAodm9pZCk7Cit2b2lkCSBtb3VudF9kdW1wKHZvaWQpOworI2VuZGlmCisKK19f
RU5EX0RFQ0xTCisKKyNpZmRlZiBfX2NwbHVzcGx1cworCisvLyBDb252ZXJ0IGEgcGF0aCB0byBh
IGRlbnRyeV9yZWYuICBSZXR1cm5zIGFuIGVtcHR5CisvLyByZWZlcmVuY2UgaWYgbm90IGZvdW5k
IChFTk9FTlQpIGZvciBlZmZpY2llbmN5LCB0aHJvd3MKKy8vIGFuIGVycm9yIG9uIG90aGVyIGVy
cm9ycy4KK2lubGluZSBkZW50cnlfcmVmIG5hbWVpKGNoYXIqIHBhdGgpCit7CisJZGVudHJ5KiBk
cDsKKwlhdXRvIGVyciA9IG5hbWVpKHBhdGgsICZkcCk7CisJaWYgKGVyciA9PSBFTk9FTlQpIHsK
KwkJcmV0dXJuIGRlbnRyeV9yZWYoKTsKKwl9IGVsc2UgaWYgKGVycikgeworCQl0aHJvdyBtYWtl
X2Vycm9yKGVycik7CisJfSBlbHNlIHsKKwkJcmV0dXJuIGRlbnRyeV9yZWYoZHAsIGZhbHNlKTsK
Kwl9Cit9CisKKyNlbmRpZgorCisjZW5kaWYgLyogIV9WRlNfSCAqLwpkaWZmIC0tZ2l0IGEvbGli
L3Zmc2NvcmUvdm5vZGUuYyBiL2xpYi92ZnNjb3JlL3Zub2RlLmMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAuLmEyOTIzNDRmCi0tLSAvZGV2L251bGwKKysrIGIvbGliL3Zmc2Nv
cmUvdm5vZGUuYwpAQCAtMCwwICsxLDUyMiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwNS0y
MDA4LCBLb2hzdWtlIE9odGFuaQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
IDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGFueSBj
by1jb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQorICogICAgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgor
ICogU1VDSCBEQU1BR0UuCisgKi8KKworLyoKKyAqIHZmc192bm9kZS5jIC0gdm5vZGUgc2Vydmlj
ZQorICovCisKKyNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNs
dWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgor
I2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKworI2luY2x1ZGUgPG9z
di9wcmV4Lmg+CisjaW5jbHVkZSA8b3N2L3Zub2RlLmg+CisjaW5jbHVkZSAidmZzLmgiCisKK2Vu
dW0gdnR5cGUgaWZ0b3Z0X3RhYlsxNl0gPSB7CisJVk5PTiwgVkZJRk8sIFZDSFIsIFZOT04sIFZE
SVIsIFZOT04sIFZCTEssIFZOT04sCisJVlJFRywgVk5PTiwgVkxOSywgVk5PTiwgVlNPQ0ssIFZO
T04sIFZOT04sIFZCQUQsCit9OworaW50IHZ0dG9pZl90YWJbMTBdID0geworCTAsIFNfSUZSRUcs
IFNfSUZESVIsIFNfSUZCTEssIFNfSUZDSFIsIFNfSUZMTkssCisJU19JRlNPQ0ssIFNfSUZJRk8s
IFNfSUZNVCwgU19JRk1UCit9OworCisvKgorICogTWVtbzoKKyAqCisgKiBGdW5jdGlvbiAgIFJl
ZiBjb3VudCBMb2NrCisgKiAtLS0tLS0tLS0tIC0tLS0tLS0tLSAtLS0tLS0tLS0tCisgKiB2bl9s
b2NrICAgICAqICAgICAgICBMb2NrCisgKiB2bl91bmxvY2sgICAqICAgICAgICBVbmxvY2sKKyAq
IHZnZXQgICAgICAgIDEgICAgICAgIExvY2sKKyAqIHZwdXQgICAgICAgLTEgICAgICAgIFVubG9j
aworICogdnJlZiAgICAgICArMSAgICAgICAgKgorICogdnJlbGUgICAgICAtMSAgICAgICAgKgor
ICovCisKKyNkZWZpbmUgVk5PREVfQlVDS0VUUyAzMgkJLyogc2l6ZSBvZiB2bm9kZSBoYXNoIHRh
YmxlICovCisKKy8qCisgKiB2bm9kZSB0YWJsZS4KKyAqIEFsbCBhY3RpdmUgKG9wZW5lZCkgdm5v
ZGVzIGFyZSBzdG9yZWQgb24gdGhpcyBoYXNoIHRhYmxlLgorICogVGhleSBjYW4gYmUgYWNjZXNz
ZWQgYnkgaXRzIHBhdGggbmFtZS4KKyAqLworc3RhdGljIExJU1RfSEVBRCh2bm9kZV9oYXNoX2hl
YWQsIHZub2RlKSB2bm9kZV90YWJsZVtWTk9ERV9CVUNLRVRTXTsKKworLyoKKyAqIEdsb2JhbCBs
b2NrIHRvIGFjY2VzcyBhbGwgdm5vZGVzIGFuZCB2bm9kZSB0YWJsZS4KKyAqIElmIGEgdm5vZGUg
aXMgYWxyZWFkeSBsb2NrZWQsIHRoZXJlIGlzIG5vIG5lZWQgdG8KKyAqIGxvY2sgdGhpcyBnbG9i
YWwgbG9jayB0byBhY2Nlc3MgaW50ZXJuYWwgZGF0YS4KKyAqLworc3RhdGljIG11dGV4X3Qgdm5v
ZGVfbG9jayA9IE1VVEVYX0lOSVRJQUxJWkVSOworI2RlZmluZSBWTk9ERV9MT0NLKCkJbXV0ZXhf
bG9jaygmdm5vZGVfbG9jaykKKyNkZWZpbmUgVk5PREVfVU5MT0NLKCkJbXV0ZXhfdW5sb2NrKCZ2
bm9kZV9sb2NrKQorI2RlZmluZSBWTk9ERV9PV05FRCgpCW11dGV4X293bmVkKCZ2bm9kZV9sb2Nr
KQorCisvKgorICogR2V0IHRoZSBoYXNoIHZhbHVlIGZyb20gdGhlIG1vdW50IHBvaW50IGFuZCBw
YXRoIG5hbWUuCisgKiBYWFgoaGNoKTogcmVwbGFjZSB3aXRoIGEgYmV0dGVyIGhhc2ggZm9yIDY0
LWJpdCBwb2ludGVycy4KKyAqLworc3RhdGljIHVfaW50Cit2bl9oYXNoKHN0cnVjdCBtb3VudCAq
bXAsIHVpbnQ2NF90IGlubykKK3sKKwlyZXR1cm4gKGlubyBeICh1bnNpZ25lZCBsb25nKW1wKSAm
IChWTk9ERV9CVUNLRVRTIC0gMSk7Cit9CisKKy8qCisgKiBSZXR1cm5zIGxvY2tlZCB2bm9kZSBm
b3Igc3BlY2lmaWVkIG1vdW50IHBvaW50IGFuZCBwYXRoLgorICogdm5fbG9jaygpIHdpbGwgaW5j
cmVtZW50IHRoZSByZWZlcmVuY2UgY291bnQgb2Ygdm5vZGUuCisgKgorICogTG9ja2luZzogVk5P
REVfTE9DSyBtdXN0IGJlIGhlbGQuCisgKi8KK3N0cnVjdCB2bm9kZSAqCit2bl9sb29rdXAoc3Ry
dWN0IG1vdW50ICptcCwgdWludDY0X3QgaW5vKQoreworCXN0cnVjdCB2bm9kZSAqdnA7CisKKwlh
c3NlcnQoVk5PREVfT1dORUQoKSk7CisJTElTVF9GT1JFQUNIKHZwLCAmdm5vZGVfdGFibGVbdm5f
aGFzaChtcCwgaW5vKV0sIHZfbGluaykgeworCQlpZiAodnAtPnZfbW91bnQgPT0gbXAgJiYgdnAt
PnZfaW5vID09IGlubykgeworCQkJdnAtPnZfcmVmY250Kys7CisJCQltdXRleF9sb2NrKCZ2cC0+
dl9sb2NrKTsKKwkJCXZwLT52X25ybG9ja3MrKzsKKwkJCXJldHVybiB2cDsKKwkJfQorCX0KKwly
ZXR1cm4gbnVsbHB0cjsJCS8qIG5vdCBmb3VuZCAqLworfQorCisjaWZkZWYgREVCVUdfVkZTCitz
dGF0aWMgY29uc3QgY2hhciAqCit2bl9wYXRoKHN0cnVjdCB2bm9kZSAqdnApCit7CisJc3RydWN0
IGRlbnRyeSAqZHA7CisKKwlpZiAoTElTVF9FTVBUWSgmdnAtPnZfbmFtZXMpID09IDEpIHsKKwkJ
cmV0dXJuICgiICIpOworCX0KKwlkcCA9IExJU1RfRklSU1QoJnZwLT52X25hbWVzKTsKKwlyZXR1
cm4gKGRwLT5kX3BhdGgpOworfQorI2VuZGlmCisKKy8qCisgKiBMb2NrIHZub2RlCisgKi8KK3Zv
aWQKK3ZuX2xvY2soc3RydWN0IHZub2RlICp2cCkKK3sKKwlBU1NFUlQodnApOworCUFTU0VSVCh2
cC0+dl9yZWZjbnQgPiAwKTsKKworCW11dGV4X2xvY2soJnZwLT52X2xvY2spOworCXZwLT52X25y
bG9ja3MrKzsKKwlEUFJJTlRGKFZGU0RCX1ZOT0RFLCAoInZuX2xvY2s6ICAgJXNcbiIsIHZuX3Bh
dGgodnApKSk7Cit9CisKKy8qCisgKiBVbmxvY2sgdm5vZGUKKyAqLwordm9pZAordm5fdW5sb2Nr
KHN0cnVjdCB2bm9kZSAqdnApCit7CisJQVNTRVJUKHZwKTsKKwlBU1NFUlQodnAtPnZfcmVmY250
ID4gMCk7CisJQVNTRVJUKHZwLT52X25ybG9ja3MgPiAwKTsKKworCXZwLT52X25ybG9ja3MtLTsK
KwltdXRleF91bmxvY2soJnZwLT52X2xvY2spOworCURQUklOVEYoVkZTREJfVk5PREUsICgidm5f
bG9jazogICAlc1xuIiwgdm5fcGF0aCh2cCkpKTsKK30KKworLyoKKyAqIEFsbG9jYXRlIG5ldyB2
bm9kZSBmb3Igc3BlY2lmaWVkIHBhdGguCisgKiBJbmNyZW1lbnQgaXRzIHJlZmVyZW5jZSBjb3Vu
dCBhbmQgbG9jayBpdC4KKyAqIFJldHVybnMgMSBpZiB2bm9kZSB3YXMgZm91bmQgaW4gY2FjaGU7
IG90aGVyd2lzZSByZXR1cm5zIDAuCisgKi8KK2ludAordmdldChzdHJ1Y3QgbW91bnQgKm1wLCB1
aW50NjRfdCBpbm8sIHN0cnVjdCB2bm9kZSAqKnZwcCkKK3sKKwlzdHJ1Y3Qgdm5vZGUgKnZwOwor
CWludCBlcnJvcjsKKworCSp2cHAgPSBudWxscHRyOworCisJRFBSSU5URihWRlNEQl9WTk9ERSwg
KCJ2Z2V0ICVMTHVcbiIsIGlubykpOworCisJVk5PREVfTE9DSygpOworCisJdnAgPSB2bl9sb29r
dXAobXAsIGlubyk7CisJaWYgKHZwKSB7CisJCVZOT0RFX1VOTE9DSygpOworCQkqdnBwID0gdnA7
CisJCXJldHVybiAxOworCX0KKworCWlmICghKHZwID0gbmV3IHZub2RlKCkpKSB7CisJCVZOT0RF
X1VOTE9DSygpOworCQlyZXR1cm4gMDsKKwl9CisKKwlMSVNUX0lOSVQoJnZwLT52X25hbWVzKTsK
Kwl2cC0+dl9pbm8gPSBpbm87CisJdnAtPnZfbW91bnQgPSBtcDsKKwl2cC0+dl9yZWZjbnQgPSAx
OworCXZwLT52X29wID0gbXAtPm1fb3AtPnZmc192bm9wczsKKwl2cC0+dl9ucmxvY2tzID0gMDsK
KworCS8qCisJICogUmVxdWVzdCB0byBhbGxvY2F0ZSBmcyBzcGVjaWZpYyBkYXRhIGZvciB2bm9k
ZS4KKwkgKi8KKwlpZiAoKGVycm9yID0gVkZTX1ZHRVQobXAsIHZwKSkgIT0gMCkgeworCQlWTk9E
RV9VTkxPQ0soKTsKKwkJZGVsZXRlIHZwOworCQlyZXR1cm4gZXJyb3I7CisJfQorCXZmc19idXN5
KHZwLT52X21vdW50KTsKKwltdXRleF9sb2NrKCZ2cC0+dl9sb2NrKTsKKwl2cC0+dl9ucmxvY2tz
Kys7CisKKwlMSVNUX0lOU0VSVF9IRUFEKCZ2bm9kZV90YWJsZVt2bl9oYXNoKG1wLCBpbm8pXSwg
dnAsIHZfbGluayk7CisJVk5PREVfVU5MT0NLKCk7CisKKwkqdnBwID0gdnA7CisKKwlyZXR1cm4g
MDsKK30KKworLyoKKyAqIFVubG9jayB2bm9kZSBhbmQgZGVjcmVtZW50IGl0cyByZWZlcmVuY2Ug
Y291bnQuCisgKi8KK3ZvaWQKK3ZwdXQoc3RydWN0IHZub2RlICp2cCkKK3sKKwlBU1NFUlQodnAp
OworCUFTU0VSVCh2cC0+dl9ucmxvY2tzID4gMCk7CisJQVNTRVJUKHZwLT52X3JlZmNudCA+IDAp
OworCURQUklOVEYoVkZTREJfVk5PREUsICgidnB1dDogcmVmPSVkICVzXG4iLCB2cC0+dl9yZWZj
bnQsIHZuX3BhdGgodnApKSk7CisKKwlWTk9ERV9MT0NLKCk7CisJdnAtPnZfcmVmY250LS07CisJ
aWYgKHZwLT52X3JlZmNudCA+IDApIHsKKwkgICAgVk5PREVfVU5MT0NLKCk7CisJCXZuX3VubG9j
ayh2cCk7CisJCXJldHVybjsKKwl9CisJTElTVF9SRU1PVkUodnAsIHZfbGluayk7CisJVk5PREVf
VU5MT0NLKCk7CisKKwkvKgorCSAqIERlYWxsb2NhdGUgZnMgc3BlY2lmaWMgdm5vZGUgZGF0YQor
CSAqLworCWlmICh2cC0+dl9vcC0+dm9wX2luYWN0aXZlKQorCQlWT1BfSU5BQ1RJVkUodnApOwor
CXZmc191bmJ1c3kodnAtPnZfbW91bnQpOworCXZwLT52X25ybG9ja3MtLTsKKwlBU1NFUlQodnAt
PnZfbnJsb2NrcyA9PSAwKTsKKwltdXRleF91bmxvY2soJnZwLT52X2xvY2spOworCWRlbGV0ZSB2
cDsKK30KKworLyoKKyAqIEluY3JlbWVudCB0aGUgcmVmZXJlbmNlIGNvdW50IG9uIGFuIGFjdGl2
ZSB2bm9kZS4KKyAqLwordm9pZAordnJlZihzdHJ1Y3Qgdm5vZGUgKnZwKQoreworCUFTU0VSVCh2
cCk7CisJQVNTRVJUKHZwLT52X3JlZmNudCA+IDApOwkvKiBOZWVkIHZnZXQgKi8KKworCVZOT0RF
X0xPQ0soKTsKKwlEUFJJTlRGKFZGU0RCX1ZOT0RFLCAoInZyZWY6IHJlZj0lZFxuIiwgdnAtPnZf
cmVmY250KSk7CisJdnAtPnZfcmVmY250Kys7CisJVk5PREVfVU5MT0NLKCk7Cit9CisKKy8qCisg
KiBEZWNyZW1lbnQgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiB0aGUgdm5vZGUuCisgKiBBbnkgY29k
ZSBpbiB0aGUgc3lzdGVtIHdoaWNoIGlzIHVzaW5nIHZub2RlIHNob3VsZCBjYWxsIHZyZWxlKCkK
KyAqIHdoZW4gaXQgaXMgZmluaXNoZWQgd2l0aCB0aGUgdm5vZGUuCisgKiBJZiBjb3VudCBkcm9w
cyB0byB6ZXJvLCBjYWxsIGluYWN0aXZlIHJvdXRpbmUgYW5kIHJldHVybiB0byBmcmVlbGlzdC4K
KyAqLwordm9pZAordnJlbGUoc3RydWN0IHZub2RlICp2cCkKK3sKKwlBU1NFUlQodnApOworCUFT
U0VSVCh2cC0+dl9yZWZjbnQgPiAwKTsKKworCVZOT0RFX0xPQ0soKTsKKwlEUFJJTlRGKFZGU0RC
X1ZOT0RFLCAoInZyZWxlOiByZWY9JWRcbiIsIHZwLT52X3JlZmNudCkpOworCXZwLT52X3JlZmNu
dC0tOworCWlmICh2cC0+dl9yZWZjbnQgPiAwKSB7CisJCVZOT0RFX1VOTE9DSygpOworCQlyZXR1
cm47CisJfQorCUxJU1RfUkVNT1ZFKHZwLCB2X2xpbmspOworCVZOT0RFX1VOTE9DSygpOworCisJ
LyoKKwkgKiBEZWFsbG9jYXRlIGZzIHNwZWNpZmljIHZub2RlIGRhdGEKKwkgKi8KKwlWT1BfSU5B
Q1RJVkUodnApOworCXZmc191bmJ1c3kodnAtPnZfbW91bnQpOworCWRlbGV0ZSB2cDsKK30KKwor
LyoKKyAqIFJlbW92ZSBhbGwgdm5vZGUgaW4gdGhlIHZub2RlIHRhYmxlIGZvciB1bm1vdW50Lgor
ICovCit2b2lkCit2Zmx1c2goc3RydWN0IG1vdW50ICptcCkKK3sKK30KKworaW50Cit2bl9zdGF0
KHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCBzdGF0ICpzdCkKK3sKKwlzdHJ1Y3QgdmF0dHIgdmF0
dHI7CisJc3RydWN0IHZhdHRyICp2YXA7CisJbW9kZV90IG1vZGU7CisJaW50IGVycm9yOworCisJ
dmFwID0gJnZhdHRyOworCisJbWVtc2V0KHN0LCAwLCBzaXplb2Yoc3RydWN0IHN0YXQpKTsKKwor
CW1lbXNldCh2YXAsIDAsIHNpemVvZihzdHJ1Y3QgdmF0dHIpKTsKKworCWVycm9yID0gVk9QX0dF
VEFUVFIodnAsIHZhcCk7CisJaWYgKGVycm9yKQorCQlyZXR1cm4gZXJyb3I7CisKKwlzdC0+c3Rf
aW5vID0gKGlub190KXZhcC0+dmFfbm9kZWlkOworCXN0LT5zdF9zaXplID0gdmFwLT52YV9zaXpl
OworCW1vZGUgPSB2YXAtPnZhX21vZGU7CisJc3dpdGNoICh2cC0+dl90eXBlKSB7CisJY2FzZSBW
UkVHOgorCQltb2RlIHw9IFNfSUZSRUc7CisJCWJyZWFrOworCWNhc2UgVkRJUjoKKwkJbW9kZSB8
PSBTX0lGRElSOworCQlicmVhazsKKwljYXNlIFZCTEs6CisJCW1vZGUgfD0gU19JRkJMSzsKKwkJ
YnJlYWs7CisJY2FzZSBWQ0hSOgorCQltb2RlIHw9IFNfSUZDSFI7CisJCWJyZWFrOworCWNhc2Ug
VkxOSzoKKwkJbW9kZSB8PSBTX0lGTE5LOworCQlicmVhazsKKwljYXNlIFZTT0NLOgorCQltb2Rl
IHw9IFNfSUZTT0NLOworCQlicmVhazsKKwljYXNlIFZGSUZPOgorCQltb2RlIHw9IFNfSUZJRk87
CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXJldHVybiBFQkFERjsKKwl9OworCXN0LT5zdF9tb2Rl
ID0gbW9kZTsKKwlzdC0+c3RfbmxpbmsgPSB2YXAtPnZhX25saW5rOworCXN0LT5zdF9ibGtzaXpl
ID0gQlNJWkU7CisJc3QtPnN0X2Jsb2NrcyA9IHZhcC0+dmFfc2l6ZSAvIFNfQkxLU0laRTsKKwlz
dC0+c3RfdWlkID0gdmFwLT52YV91aWQ7CisJc3QtPnN0X2dpZCA9IHZhcC0+dmFfZ2lkOworCXN0
LT5zdF9kZXYgPSB2YXAtPnZhX2ZzaWQ7CisJaWYgKHZwLT52X3R5cGUgPT0gVkNIUiB8fCB2cC0+
dl90eXBlID09IFZCTEspCisJCXN0LT5zdF9yZGV2ID0gdmFwLT52YV9yZGV2OworCisJc3QtPnN0
X2F0aW0gPSB2YXAtPnZhX2F0aW1lOworCXN0LT5zdF9tdGltID0gdmFwLT52YV9tdGltZTsKKwlz
dC0+c3RfY3RpbSA9IHZhcC0+dmFfY3RpbWU7CisKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIFNl
dCBhY2Nlc3MgYW5kIG1vZGlmaWNhdGlvbiB0aW1lcyBvZiB0aGUgdm5vZGUKKyAqLworaW50Cit2
bl9zZXR0aW1lcyhzdHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3QgdGltZXNwZWMgdGltZXNbMl0pCit7
CisgICAgc3RydWN0IHZhdHRyIHZhdHRyOworICAgIHN0cnVjdCB2YXR0ciAqdmFwOworICAgIGlu
dCBlcnJvcjsKKworICAgIHZhcCA9ICZ2YXR0cjsKKyAgICBtZW1zZXQodmFwLCAwLCBzaXplb2Yo
c3RydWN0IHZhdHRyKSk7CisKKyAgICB2YXAtPnZhX2F0aW1lID0gdGltZXNbMF07CisgICAgdmFw
LT52YV9tdGltZSA9IHRpbWVzWzFdOworICAgIHZhcC0+dmFfbWFzayA9ICgodGltZXNbMF0udHZf
bnNlYyA9PSBVVElNRV9PTUlUKSA/IDAgOiBBVF9BVElNRSkKKyAgICAgICAgICAgICAgICAgICAg
fCAoKHRpbWVzWzFdLnR2X25zZWMgPT0gVVRJTUVfT01JVCkgPyAwIDogQVRfTVRJTUUpOworICAg
IHZuX2xvY2sodnApOworICAgIGVycm9yID0gVk9QX1NFVEFUVFIodnAsIHZhcCk7CisgICAgdm5f
dW5sb2NrKHZwKTsKKworICAgIHJldHVybiBlcnJvcjsKK30KKworLyoKKyAqIFNldCBjaG1vZCBw
ZXJtaXNzaW9ucyBvbiB0aGUgdm5vZGUuCisgKi8KK2ludAordm5fc2V0bW9kZShzdHJ1Y3Qgdm5v
ZGUgKnZwLCBtb2RlX3QgbmV3X21vZGUpCit7CisgICAgc3RydWN0IHZhdHRyIHZhdHRyOworICAg
IG1lbXNldCgmdmF0dHIsIDAsIHNpemVvZih2YXR0cikpOworICAgIHZhdHRyLnZhX21vZGUgPSBu
ZXdfbW9kZTsKKyAgICB2YXR0ci52YV9tYXNrID0gQVRfTU9ERTsKKyAgICB2bl9sb2NrKHZwKTsK
KyAgICB2cC0+dl9tb2RlID0gbmV3X21vZGU7CisgICAgaW50IGVycm9yID0gVk9QX1NFVEFUVFIo
dnAsICZ2YXR0cik7CisgICAgdm5fdW5sb2NrKHZwKTsKKyAgICByZXR1cm4gZXJyb3I7Cit9CisK
Ky8qCisgKiBDaGVjayBwZXJtaXNzaW9uIG9uIHZub2RlIHBvaW50ZXIuCisgKi8KK2ludAordm5f
YWNjZXNzKHN0cnVjdCB2bm9kZSAqdnAsIGludCBmbGFncykKK3sKKwlpbnQgZXJyb3IgPSAwOwor
CisJaWYgKChmbGFncyAmIFZFWEVDKSAmJiAodnAtPnZfbW9kZSAmIDAxMTEpID09IDApIHsKKwkJ
ZXJyb3IgPSBFQUNDRVM7CisJCWdvdG8gb3V0OworCX0KKwlpZiAoKGZsYWdzICYgVlJFQUQpICYm
ICh2cC0+dl9tb2RlICYgMDQ0NCkgPT0gMCkgeworCQllcnJvciA9IEVBQ0NFUzsKKwkJZ290byBv
dXQ7CisJfQorCWlmIChmbGFncyAmIFZXUklURSkgeworCQlpZiAodnAtPnZfbW91bnQtPm1fZmxh
Z3MgJiBNTlRfUkRPTkxZKSB7CisJCQllcnJvciA9IEVST0ZTOworCQkJZ290byBvdXQ7CisJCX0K
KwkJaWYgKCh2cC0+dl9tb2RlICYgMDIyMikgPT0gMCkgeworCQkJZXJyb3IgPSBFQUNDRVM7CisJ
CQlnb3RvIG91dDsKKwkJfQorCX0KKyBvdXQ6CisJcmV0dXJuIGVycm9yOworfQorCisjaWZkZWYg
REVCVUdfVkZTCisvKgorICogRHVtcCBhbGwgYWxsIHZub2RlLgorICovCit2b2lkCit2bm9kZV9k
dW1wKHZvaWQpCit7CisJaW50IGk7CisJc3RydWN0IHZub2RlICp2cDsKKwlzdHJ1Y3QgbW91bnQg
Km1wOworCWNoYXIgdHlwZVtdWzZdID0geyAiVk5PTiAiLCAiVlJFRyAiLCAiVkRJUiAiLCAiVkJM
SyAiLCAiVkNIUiAiLAorCQkJICAgIlZMTksgIiwgIlZTT0NLIiwgIlZGSUZPIiB9OworCisJVk5P
REVfTE9DSygpOworCWtwcmludGYoIkR1bXAgdm5vZGVcbiIpOworCWtwcmludGYoIiB2bm9kZSAg
ICBtb3VudCAgICB0eXBlICByZWZjbnQgYmxrbm8gICAgcGF0aFxuIik7CisJa3ByaW50ZigiIC0t
LS0tLS0tIC0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS1cbiIpOworCisJZm9yIChpID0gMDsgaSA8IFZOT0RFX0JVQ0tFVFM7IGkrKykg
eworCSAgICAgICAgTElTVF9GT1JFQUNIKHZwLCAmdm5vZGVfdGFibGVbaV0sIHZfbGluaykgewor
CQkJbXAgPSB2cC0+dl9tb3VudDsKKworCQkJa3ByaW50ZigiICUwOHggJTA4eCAlcyAlNmQgJThk
ICVzJXNcbiIsICh1X2xvbmcpdnAsCisJCQkJKHVfbG9uZyltcCwgdHlwZVt2cC0+dl90eXBlXSwg
dnAtPnZfcmVmY250LAorCQkJCShzdHJsZW4obXAtPm1fcGF0aCkgPT0gMSkgPyAiXDAiIDogbXAt
Pm1fcGF0aCwKKwkJCQl2bl9wYXRoKHZwKSk7CisJCX0KKwl9CisJa3ByaW50ZigiXG4iKTsKKwlW
Tk9ERV9VTkxPQ0soKTsKK30KKyNlbmRpZgorCitpbnQKK3ZvcF9udWxsb3Aodm9pZCkKK3sKKwly
ZXR1cm4gMDsKK30KKworaW50Cit2b3BfZWludmFsKHZvaWQpCit7CisJcmV0dXJuIEVJTlZBTDsK
K30KKworaW50Cit2b3BfZXBlcm0odm9pZCkKK3sKKwlyZXR1cm4gRVBFUk07Cit9CisKK2ludAor
dm9wX2Vyb2ZzKHZvaWQpCit7CisJcmV0dXJuIEVST0ZTOworfQorCisvKgorICogdm5vZGVfaW5p
dCgpIGlzIGNhbGxlZCBvbmNlIChmcm9tIHZmc19pbml0KQorICogaW4gaW5pdGlhbGl6YXRpb24u
CisgKi8KK3ZvaWQKK3Zub2RlX2luaXQodm9pZCkKK3sKKwlpbnQgaTsKKworCWZvciAoaSA9IDA7
IGkgPCBWTk9ERV9CVUNLRVRTOyBpKyspCisJCUxJU1RfSU5JVCgmdm5vZGVfdGFibGVbaV0pOwor
fQorCit2b2lkIHZuX2FkZF9uYW1lKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCBkZW50cnkgKmRw
KQoreworCXZuX2xvY2sodnApOworCUxJU1RfSU5TRVJUX0hFQUQoJnZwLT52X25hbWVzLCBkcCwg
ZF9uYW1lc19saW5rKTsKKwl2bl91bmxvY2sodnApOworfQorCit2b2lkIHZuX2RlbF9uYW1lKHN0
cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCBkZW50cnkgKmRwKQoreworCXZuX2xvY2sodnApOworCUxJ
U1RfUkVNT1ZFKGRwLCBkX25hbWVzX2xpbmspOworCXZuX3VubG9jayh2cCk7Cit9CisKLS0gCjIu
MTkuMgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1p
bmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3Jn
Cmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2
ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Feb 04 14:38:21 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 04 Feb 2019 14:38:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gqfO8-00068o-Uh; Mon, 04 Feb 2019 14:38:20 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Kl24=QL=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gqfO6-00068Z-WA
 for minios-devel@lists.xen.org; Mon, 04 Feb 2019 14:38:19 +0000
X-Inumbo-ID: 8230ae6a-288a-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 8230ae6a-288a-11e9-bc90-bc764e045a96;
 Mon, 04 Feb 2019 14:38:17 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 57162F2065;
 Mon,  4 Feb 2019 15:38:16 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 6ZiAXCp3gKxl; Mon,  4 Feb 2019 15:38:16 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 26E77F203D
 for <minios-devel@lists.xen.org>; Mon,  4 Feb 2019 15:38:14 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 4 Feb 2019 15:38:13 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>, <Simon.kuenzer@neclab.eu>,
 <sharan.santhanam@neclab.eu>
Date: Mon, 4 Feb 2019 15:36:58 +0100
Message-ID: <20190204143739.29249-7-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 06/23] lib/vfscore: update
 license header for imported files
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogbGliL25vbGliYy9pbmNsdWRlL3N5cy9tb3VudC5oICAgICAgIHwgMzUgKysrKysrKysrKysr
KysrKysrKysrKysrKysrKwogbGliL25vbGliYy9pbmNsdWRlL3N5cy91aW8uaCAgICAgICAgIHwg
MzUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogbGliL3Zmc2NvcmUvZGVudHJ5LmMgICAg
ICAgICAgICAgICAgIHwgMTAgKysrLS0tLS0KIGxpYi92ZnNjb3JlL2ZvcHMuYyAgICAgICAgICAg
ICAgICAgICB8IDMzICsrKysrKysrKysrKysrKysrKysrKysrLS0tCiBsaWIvdmZzY29yZS9pbmNs
dWRlL3Zmc2NvcmUvZGVudHJ5LmggfCAzMiArKysrKysrKysrKysrKysrKysrKysrKy0tCiBsaWIv
dmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvcHJleC5oICAgfCAzMiArKysrKysrKysrKysrKysrKysr
KysrKy0tCiBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUuaCAgfCAgMyArKysKIGxp
Yi92ZnNjb3JlL2xvb2t1cC5jICAgICAgICAgICAgICAgICB8ICAzICsrKwogbGliL3Zmc2NvcmUv
bWFpbi5jICAgICAgICAgICAgICAgICAgIHwgMTAgKysrLS0tLS0KIGxpYi92ZnNjb3JlL21vdW50
LmMgICAgICAgICAgICAgICAgICB8ICAzICsrKwogbGliL3Zmc2NvcmUvc3Vicl91aW8uYyAgICAg
ICAgICAgICAgIHwgIDkgKysrKystLQogbGliL3Zmc2NvcmUvc3lzY2FsbHMuYyAgICAgICAgICAg
ICAgIHwgMTAgKysrLS0tLS0KIGxpYi92ZnNjb3JlL3Rhc2suYyAgICAgICAgICAgICAgICAgICB8
ICA4ICsrKysrLS0KIGxpYi92ZnNjb3JlL3Zmcy5oICAgICAgICAgICAgICAgICAgICB8ICAzICsr
KwogbGliL3Zmc2NvcmUvdm5vZGUuYyAgICAgICAgICAgICAgICAgIHwgIDMgKysrCiAxNSBmaWxl
cyBjaGFuZ2VkLCAxOTcgaW5zZXJ0aW9ucygrKSwgMzIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0
IGEvbGliL25vbGliYy9pbmNsdWRlL3N5cy9tb3VudC5oIGIvbGliL25vbGliYy9pbmNsdWRlL3N5
cy9tb3VudC5oCmluZGV4IGFmODU1ZDY5Li5kN2E5NWIzOCAxMDA2NDQKLS0tIGEvbGliL25vbGli
Yy9pbmNsdWRlL3N5cy9tb3VudC5oCisrKyBiL2xpYi9ub2xpYmMvaW5jbHVkZS9zeXMvbW91bnQu
aApAQCAtMSwzICsxLDM4IEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xh
dXNlICovCisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIENsb3VkaXVzIFN5c3RlbXMsIEx0ZC4K
KyAqIENvcHlyaWdodCAoYykgMjAxOSwgTkVDIEV1cm9wZSBMdGQuLCBORUMgQ29ycG9yYXRpb24u
CisgKgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVy
IHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJF
CisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisg
KiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKiBUSElTIEhFQURFUiBNQVkgTk9U
IEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgorICovCisKICNpZm5kZWYgX1NZ
U19NT1VOVF9ICiAjZGVmaW5lIF9TWVNfTU9VTlRfSAogCmRpZmYgLS1naXQgYS9saWIvbm9saWJj
L2luY2x1ZGUvc3lzL3Vpby5oIGIvbGliL25vbGliYy9pbmNsdWRlL3N5cy91aW8uaAppbmRleCAx
ODI2NjAzOC4uY2RmYmVjOWIgMTAwNjQ0Ci0tLSBhL2xpYi9ub2xpYmMvaW5jbHVkZS9zeXMvdWlv
LmgKKysrIGIvbGliL25vbGliYy9pbmNsdWRlL3N5cy91aW8uaApAQCAtMSwzICsxLDM4IEBACisv
KiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEzIENsb3VkaXVzIFN5c3RlbXMsIEx0ZC4KKyAqIENvcHlyaWdodCAoYykgMjAx
OSwgTkVDIEV1cm9wZSBMdGQuLCBORUMgQ29ycG9yYXRpb24uCisgKgorICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5
cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiAgICBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
ICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqCisgKiBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJ
RklFRCBJTiBBTlkgV0FZLgorICovCisKICNpZm5kZWYgX1NZU19VSU9fSAogI2RlZmluZSBfU1lT
X1VJT19ICiAKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2RlbnRyeS5jIGIvbGliL3Zmc2NvcmUv
ZGVudHJ5LmMKaW5kZXggYzJmMjA5YjIuLmVmYzEwYmQ2IDEwMDY0NAotLS0gYS9saWIvdmZzY29y
ZS9kZW50cnkuYworKysgYi9saWIvdmZzY29yZS9kZW50cnkuYwpAQCAtMSwxMiArMSw4IEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE0IENsb3VkaXVzIFN5c3RlbXMsIEx0ZC4KLSAqCi0gKiBU
aGlzIHdvcmsgaXMgb3BlbiBzb3VyY2Ugc29mdHdhcmUsIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUKLSAqIEJTRCBsaWNlbnNlIGFzIGRlc2NyaWJlZCBpbiB0aGUgTElDRU5TRSBmaWxl
IGluIHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5LgotICovCi0KKy8qIFNQRFgtTGljZW5zZS1JZGVu
dGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8KIC8qCiAgKiBDb3B5cmlnaHQgKGMpIDIwMDUtMjAwNywg
S29oc3VrZSBPaHRhbmkKKyAqIENvcHlyaWdodCAoQykgMjAxNCBDbG91ZGl1cyBTeXN0ZW1zLCBM
dGQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTksIE5FQyBFdXJvcGUgTHRkLiwgTkVDIENvcnBvcmF0
aW9uLgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKZGlmZiAtLWdp
dCBhL2xpYi92ZnNjb3JlL2ZvcHMuYyBiL2xpYi92ZnNjb3JlL2ZvcHMuYwppbmRleCBhYjFmOGNi
Yi4uYTk0Y2E0NTIgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2ZvcHMuYworKysgYi9saWIvdmZz
Y29yZS9mb3BzLmMKQEAgLTEsMTEgKzEsMzggQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy
OiBCU0QtMy1DbGF1c2UgKi8KIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQ2xvdWRpdXMgU3lz
dGVtcywgTHRkLgorICogQ29weXJpZ2h0IChjKSAyMDE5LCBORUMgRXVyb3BlIEx0ZC4sIE5FQyBD
b3Jwb3JhdGlvbi4KICAqCi0gKiBUaGlzIHdvcmsgaXMgb3BlbiBzb3VyY2Ugc29mdHdhcmUsIGxp
Y2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUKLSAqIEJTRCBsaWNlbnNlIGFzIGRlc2NyaWJl
ZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5LgorICogQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9m
IHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiAgICBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKiBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RF
RCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgogICovCiAKLQogI2luY2x1ZGUgPGZjbnRsLmg+CiAj
aW5jbHVkZSA8c3lzL3N0YXQuaD4KICNpbmNsdWRlIDxvc3YvZmlsZS5oPgpkaWZmIC0tZ2l0IGEv
bGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2RlbnRyeS5oIGIvbGliL3Zmc2NvcmUvaW5jbHVk
ZS92ZnNjb3JlL2RlbnRyeS5oCmluZGV4IGY1ODUwNzg2Li4yZDJlYWExYiAxMDA2NDQKLS0tIGEv
bGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2RlbnRyeS5oCisrKyBiL2xpYi92ZnNjb3JlL2lu
Y2x1ZGUvdmZzY29yZS9kZW50cnkuaApAQCAtMSw4ICsxLDM2IEBACisvKiBTUERYLUxpY2Vuc2Ut
SWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE0IENs
b3VkaXVzIFN5c3RlbXMsIEx0ZC4KKyAqIENvcHlyaWdodCAoYykgMjAxOSwgTkVDIEV1cm9wZSBM
dGQuLCBORUMgQ29ycG9yYXRpb24uCiAgKgotICogVGhpcyB3b3JrIGlzIG9wZW4gc291cmNlIHNv
ZnR3YXJlLCBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlCi0gKiBCU0QgbGljZW5zZSBh
cyBkZXNjcmliZWQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgdG9wLWxldmVsIGRpcmVjdG9y
eS4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0
aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
ICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqICAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRQor
ICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICog
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICogVEhJUyBIRUFERVIgTUFZIE5PVCBC
RSBFWFRSQUNURUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4KICAqLwogCiAjaWZuZGVmIF9PU1Zf
REVOVFJZX0gKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9wcmV4Lmgg
Yi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvcHJleC5oCmluZGV4IDQzNjUwMzQwLi43YjA1
MzMxOSAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3ByZXguaAorKysg
Yi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvcHJleC5oCkBAIC0xLDggKzEsMzYgQEAKKy8q
IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8KIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTMgQ2xvdWRpdXMgU3lzdGVtcywgTHRkLgorICogQ29weXJpZ2h0IChjKSAyMDE5
LCBORUMgRXVyb3BlIEx0ZC4sIE5FQyBDb3Jwb3JhdGlvbi4KICAqCi0gKiBUaGlzIHdvcmsgaXMg
b3BlbiBzb3VyY2Ugc29mdHdhcmUsIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUKLSAq
IEJTRCBsaWNlbnNlIGFzIGRlc2NyaWJlZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSB0b3At
bGV2ZWwgZGlyZWN0b3J5LgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJB
UyBJUyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09O
VFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKiBUSElTIEhF
QURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgogICovCiAK
ICNpZm5kZWYgX09TVl9QUkVYX0gKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZz
Y29yZS92bm9kZS5oIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Zub2RlLmgKaW5kZXgg
ZTM1YWE4MzAuLjQ4NzRmMWI5IDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2Nv
cmUvdm5vZGUuaAorKysgYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUuaApAQCAt
MSw1ICsxLDggQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8K
IC8qCiAgKiBDb3B5cmlnaHQgKGMpIDIwMDUtMjAwNywgS29oc3VrZSBPaHRhbmkKKyAqIENvcHly
aWdodCAoQykgMjAxNCBDbG91ZGl1cyBTeXN0ZW1zLCBMdGQuCisgKiBDb3B5cmlnaHQgKGMpIDIw
MTksIE5FQyBFdXJvcGUgTHRkLiwgTkVDIENvcnBvcmF0aW9uLgogICogQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2xvb2t1cC5j
IGIvbGliL3Zmc2NvcmUvbG9va3VwLmMKaW5kZXggMzAxMzlhODcuLjBhYTVjYTNiIDEwMDY0NAot
LS0gYS9saWIvdmZzY29yZS9sb29rdXAuYworKysgYi9saWIvdmZzY29yZS9sb29rdXAuYwpAQCAt
MSw1ICsxLDggQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8K
IC8qCiAgKiBDb3B5cmlnaHQgKGMpIDIwMDUtMjAwNywgS29oc3VrZSBPaHRhbmkKKyAqIENvcHly
aWdodCAoQykgMjAxNCBDbG91ZGl1cyBTeXN0ZW1zLCBMdGQuCisgKiBDb3B5cmlnaHQgKGMpIDIw
MTksIE5FQyBFdXJvcGUgTHRkLiwgTkVDIENvcnBvcmF0aW9uLgogICogQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL21haW4uYyBi
L2xpYi92ZnNjb3JlL21haW4uYwppbmRleCA4ZDlkYzMzYS4uZTMwMDQ1OTcgMTAwNjQ0Ci0tLSBh
L2xpYi92ZnNjb3JlL21haW4uYworKysgYi9saWIvdmZzY29yZS9tYWluLmMKQEAgLTEsMTIgKzEs
OCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBDbG91ZGl1cyBTeXN0ZW1zLCBMdGQuCi0g
KgotICogVGhpcyB3b3JrIGlzIG9wZW4gc291cmNlIHNvZnR3YXJlLCBsaWNlbnNlZCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlCi0gKiBCU0QgbGljZW5zZSBhcyBkZXNjcmliZWQgaW4gdGhlIExJQ0VO
U0UgZmlsZSBpbiB0aGUgdG9wLWxldmVsIGRpcmVjdG9yeS4KLSAqLwotCisvKiBTUERYLUxpY2Vu
c2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCiAvKgogICogQ29weXJpZ2h0IChjKSAyMDA1
LTIwMDcsIEtvaHN1a2UgT2h0YW5pCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQ2xvdWRpdXMgU3lz
dGVtcywgTHRkLgorICogQ29weXJpZ2h0IChjKSAyMDE5LCBORUMgRXVyb3BlIEx0ZC4sIE5FQyBD
b3Jwb3JhdGlvbi4KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CmRp
ZmYgLS1naXQgYS9saWIvdmZzY29yZS9tb3VudC5jIGIvbGliL3Zmc2NvcmUvbW91bnQuYwppbmRl
eCBiNTFiMjdhNC4uNzZlMmU3MGMgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL21vdW50LmMKKysr
IGIvbGliL3Zmc2NvcmUvbW91bnQuYwpAQCAtMSw1ICsxLDggQEAKKy8qIFNQRFgtTGljZW5zZS1J
ZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8KIC8qCiAgKiBDb3B5cmlnaHQgKGMpIDIwMDUtMjAw
NywgS29oc3VrZSBPaHRhbmkKKyAqIENvcHlyaWdodCAoQykgMjAxNCBDbG91ZGl1cyBTeXN0ZW1z
LCBMdGQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTksIE5FQyBFdXJvcGUgTHRkLiwgTkVDIENvcnBv
cmF0aW9uLgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKZGlmZiAt
LWdpdCBhL2xpYi92ZnNjb3JlL3N1YnJfdWlvLmMgYi9saWIvdmZzY29yZS9zdWJyX3Vpby5jCmlu
ZGV4IGJmMTM4YjhlLi44Mjc2ZDZkNCAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvc3Vicl91aW8u
YworKysgYi9saWIvdmZzY29yZS9zdWJyX3Vpby5jCkBAIC0xLDcgKzEsMTIgQEAKLS8qLQorLyog
U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLworLyoKICAqIENvcHlyaWdo
dCAoYykgMTk4MiwgMTk4NiwgMTk5MSwgMTk5MwotICoJVGhlIFJlZ2VudHMgb2YgdGhlIFVuaXZl
cnNpdHkgb2YgQ2FsaWZvcm5pYS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgICAgVGhlIFJl
Z2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KICAqIChjKSBVTklYIFN5c3Rl
bSBMYWJvcmF0b3JpZXMsIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAxNCBDbG91ZGl1cyBTeXN0
ZW1zLCBMdGQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTksIE5FQyBFdXJvcGUgTHRkLiwgTkVDIENv
cnBvcmF0aW9uLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCiAgKiBBbGwgb3Igc29tZSBw
b3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIGRlcml2ZWQgZnJvbSBtYXRlcmlhbCBsaWNlbnNlZAog
ICogdG8gdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYSBieSBBbWVyaWNhbiBUZWxlcGhvbmUg
YW5kIFRlbGVncmFwaAogICogQ28uIG9yIFVuaXggU3lzdGVtIExhYm9yYXRvcmllcywgSW5jLiBh
bmQgYXJlIHJlcHJvZHVjZWQgaGVyZWluIHdpdGgKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3N5
c2NhbGxzLmMgYi9saWIvdmZzY29yZS9zeXNjYWxscy5jCmluZGV4IGI1NDMzZWNlLi4yOWIxNDIy
MCAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvc3lzY2FsbHMuYworKysgYi9saWIvdmZzY29yZS9z
eXNjYWxscy5jCkBAIC0xLDEyICsxLDggQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQ2xv
dWRpdXMgU3lzdGVtcywgTHRkLgotICoKLSAqIFRoaXMgd29yayBpcyBvcGVuIHNvdXJjZSBzb2Z0
d2FyZSwgbGljZW5zZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZQotICogQlNEIGxpY2Vuc2UgYXMg
ZGVzY3JpYmVkIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHRvcC1sZXZlbCBkaXJlY3Rvcnku
Ci0gKi8KLQorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLwogLyoK
ICAqIENvcHlyaWdodCAoYykgMjAwNS0yMDA3LCBLb2hzdWtlIE9odGFuaQorICogQ29weXJpZ2h0
IChDKSAyMDE0IENsb3VkaXVzIFN5c3RlbXMsIEx0ZC4KKyAqIENvcHlyaWdodCAoYykgMjAxOSwg
TkVDIEV1cm9wZSBMdGQuLCBORUMgQ29ycG9yYXRpb24uCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dApkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvdGFzay5jIGIvbGli
L3Zmc2NvcmUvdGFzay5jCmluZGV4IGIyYTAyOGM2Li4yZDM0ZjBkZiAxMDA2NDQKLS0tIGEvbGli
L3Zmc2NvcmUvdGFzay5jCisrKyBiL2xpYi92ZnNjb3JlL3Rhc2suYwpAQCAtMSw1ICsxLDkgQEAK
LS8qLQotICogQ29weXJpZ2h0IChjKSAyMDA3LCBLb2hzdWtlIE9odGFuaSBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLworLyoK
KyAqIENvcHlyaWdodCAoYykgMjAwNywgS29oc3VrZSBPaHRhbmkKKyAqIENvcHlyaWdodCAoQykg
MjAxNCBDbG91ZGl1cyBTeXN0ZW1zLCBMdGQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTksIE5FQyBF
dXJvcGUgTHRkLiwgTkVDIENvcnBvcmF0aW9uLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvdmZz
LmggYi9saWIvdmZzY29yZS92ZnMuaAppbmRleCAyYjgyNTUyMS4uYzEzMDUxN2QgMTAwNjQ0Ci0t
LSBhL2xpYi92ZnNjb3JlL3Zmcy5oCisrKyBiL2xpYi92ZnNjb3JlL3Zmcy5oCkBAIC0xLDUgKzEs
OCBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLwogLyoKICAq
IENvcHlyaWdodCAoYykgMjAwNS0yMDA3LCBLb2hzdWtlIE9odGFuaQorICogQ29weXJpZ2h0IChD
KSAyMDE0IENsb3VkaXVzIFN5c3RlbXMsIEx0ZC4KKyAqIENvcHlyaWdodCAoYykgMjAxOSwgTkVD
IEV1cm9wZSBMdGQuLCBORUMgQ29ycG9yYXRpb24uCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dApkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvdm5vZGUuYyBiL2xpYi92
ZnNjb3JlL3Zub2RlLmMKaW5kZXggMTE5ZWQ4NzAuLjM0MTJjNmZiIDEwMDY0NAotLS0gYS9saWIv
dmZzY29yZS92bm9kZS5jCisrKyBiL2xpYi92ZnNjb3JlL3Zub2RlLmMKQEAgLTEsNSArMSw4IEBA
CisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCiAvKgogICogQ29w
eXJpZ2h0IChjKSAyMDA1LTIwMDgsIEtvaHN1a2UgT2h0YW5pCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQgQ2xvdWRpdXMgU3lzdGVtcywgTHRkLgorICogQ29weXJpZ2h0IChjKSAyMDE5LCBORUMgRXVy
b3BlIEx0ZC4sIE5FQyBDb3Jwb3JhdGlvbi4KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0tIAoyLjE5LjIKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBs
aXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4v
bGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Feb 04 14:38:28 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 04 Feb 2019 14:38:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gqfOG-0006A8-0c; Mon, 04 Feb 2019 14:38:28 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Kl24=QL=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gqfOE-00069s-RL
 for minios-devel@lists.xen.org; Mon, 04 Feb 2019 14:38:26 +0000
X-Inumbo-ID: 854ab26c-288a-11e9-9aa1-435ed133e932
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 854ab26c-288a-11e9-9aa1-435ed133e932;
 Mon, 04 Feb 2019 14:38:22 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 95124F2065;
 Mon,  4 Feb 2019 15:38:21 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id Gv3JVJLW81iR; Mon,  4 Feb 2019 15:38:21 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 68E3AF203D
 for <minios-devel@lists.xen.org>; Mon,  4 Feb 2019 15:38:19 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 4 Feb 2019 15:38:19 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>, <Simon.kuenzer@neclab.eu>,
 <sharan.santhanam@neclab.eu>
Date: Mon, 4 Feb 2019 15:37:00 +0100
Message-ID: <20190204143739.29249-9-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 08/23] lib/vfscore: use Unikraft
 includes
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogbGliL3Zmc2NvcmUvZGVudHJ5LmMgICAgICAgICAgICAgICAgIHwgIDcgKystLQogbGliL3Zm
c2NvcmUvZm9wcy5jICAgICAgICAgICAgICAgICAgIHwgMTEgKysrLS0tLQogbGliL3Zmc2NvcmUv
aW5jbHVkZS92ZnNjb3JlL2RlbnRyeS5oIHwgIDQgKy0tCiBsaWIvdmZzY29yZS9pbmNsdWRlL3Zm
c2NvcmUvZmlsZS5oICAgfCAgMSArCiBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvbW91bnQu
aCAgfCAgNiArKy0tCiBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvcHJleC5oICAgfCAgMSAt
CiBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdWlvLmggICAgfCAgMSAtCiBsaWIvdmZzY29y
ZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUuaCAgfCAxMyArKysrLS0tLQogbGliL3Zmc2NvcmUvbG9v
a3VwLmMgICAgICAgICAgICAgICAgIHwgIDQgKy0tCiBsaWIvdmZzY29yZS9tYWluLmMgICAgICAg
ICAgICAgICAgICAgfCA0OCArKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBsaWIvdmZzY29y
ZS9tb3VudC5jICAgICAgICAgICAgICAgICAgfCAyMSArKysrKy0tLS0tLS0KIGxpYi92ZnNjb3Jl
L3N0ZGlvLmMgICAgICAgICAgICAgICAgICB8ICAzICsrCiBsaWIvdmZzY29yZS9zdWJyX3Vpby5j
ICAgICAgICAgICAgICAgfCAgNCArLS0KIGxpYi92ZnNjb3JlL3N5c2NhbGxzLmMgICAgICAgICAg
ICAgICB8IDEyICsrKystLS0KIGxpYi92ZnNjb3JlL3Rhc2suYyAgICAgICAgICAgICAgICAgICB8
ICAyICstCiBsaWIvdmZzY29yZS92ZnMuaCAgICAgICAgICAgICAgICAgICAgfCAyMyArKystLS0t
LS0tLS0tCiBsaWIvdmZzY29yZS92bm9kZS5jICAgICAgICAgICAgICAgICAgfCAgNiArKy0tCiAx
NyBmaWxlcyBjaGFuZ2VkLCA2MyBpbnNlcnRpb25zKCspLCAxMDQgZGVsZXRpb25zKC0pCgpkaWZm
IC0tZ2l0IGEvbGliL3Zmc2NvcmUvZGVudHJ5LmMgYi9saWIvdmZzY29yZS9kZW50cnkuYwppbmRl
eCBlZmMxMGJkNi4uY2NjZTA3ZDEgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2RlbnRyeS5jCisr
KyBiL2xpYi92ZnNjb3JlL2RlbnRyeS5jCkBAIC0zMiwxMCArMzIsMTEgQEAKIAogI2luY2x1ZGUg
PHN0cmluZy5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgog
Ci0jaW5jbHVkZSA8b3N2L2RlbnRyeS5oPgotI2luY2x1ZGUgPG9zdi92bm9kZS5oPgorI2luY2x1
ZGUgPHVrL2xpc3QuaD4KKyNpbmNsdWRlIDx2ZnNjb3JlL2RlbnRyeS5oPgorI2luY2x1ZGUgPHZm
c2NvcmUvdm5vZGUuaD4KKyNpbmNsdWRlIDx1ay9tdXRleC5oPgogI2luY2x1ZGUgInZmcy5oIgog
CiAjZGVmaW5lIERFTlRSWV9CVUNLRVRTIDMyCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9mb3Bz
LmMgYi9saWIvdmZzY29yZS9mb3BzLmMKaW5kZXggZjFjMTYxZTcuLmI0NTgzZDIwIDEwMDY0NAot
LS0gYS9saWIvdmZzY29yZS9mb3BzLmMKKysrIGIvbGliL3Zmc2NvcmUvZm9wcy5jCkBAIC0zMywx
NCArMzMsMTMgQEAKICAqIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElG
SUVEIElOIEFOWSBXQVkuCiAgKi8KIAorI2RlZmluZSBfR05VX1NPVVJDRQogI2luY2x1ZGUgPGZj
bnRsLmg+CiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSNpbmNsdWRlIDxvc3YvZmlsZS5oPgotI2lu
Y2x1ZGUgPG9zdi9wb2xsLmg+Ci0jaW5jbHVkZSA8ZnMvdmZzL3Zmcy5oPgotI2luY2x1ZGUgPG9z
di92ZnNfZmlsZS5oaD4KLSNpbmNsdWRlIDxvc3YvbW11LmhoPgotI2luY2x1ZGUgPG9zdi9wYWdl
Y2FjaGUuaGg+CisjaW5jbHVkZSA8dmZzY29yZS9maWxlLmg+CisjaW5jbHVkZSAidmZzLmgiCisK
KyNpbmNsdWRlIDx1ay9hc3NlcnQuaD4KIAogaW50IHZmc19jbG9zZShzdHJ1Y3QgdmZzY29yZV9m
aWxlICpmcCkKIHsKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9kZW50
cnkuaCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9kZW50cnkuaAppbmRleCA5Y2ZlOGRh
Yy4uYmExYzM0NTcgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9kZW50
cnkuaAorKysgYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZGVudHJ5LmgKQEAgLTM2LDgg
KzM2LDggQEAKICNpZm5kZWYgX09TVl9ERU5UUllfSAogI2RlZmluZSBfT1NWX0RFTlRSWV9IIDEK
IAotI2luY2x1ZGUgPG9zdi9tdXRleC5oPgotI2luY2x1ZGUgPGJzZC9zeXMvc3lzL3F1ZXVlLmg+
CisjaW5jbHVkZSA8dWsvbXV0ZXguaD4KKyNpbmNsdWRlIDx1ay9saXN0Lmg+CiAKIHN0cnVjdCB2
bm9kZTsKIApkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2ZpbGUuaCBi
L2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9maWxlLmgKaW5kZXggOTk4NTcwNmYuLjczODcy
NjVkIDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZmlsZS5oCisrKyBi
L2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9maWxlLmgKQEAgLTM4LDYgKzM4LDcgQEAKIAog
I2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHZm
c2NvcmUvZGVudHJ5Lmg+CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CmRpZmYg
LS1naXQgYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvbW91bnQuaCBiL2xpYi92ZnNjb3Jl
L2luY2x1ZGUvdmZzY29yZS9tb3VudC5oCmluZGV4IGI2OGQzYzk4Li5lMTJhMTAzOSAxMDA2NDQK
LS0tIGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmgKKysrIGIvbGliL3Zmc2Nv
cmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmgKQEAgLTMyLDEwICszMiwxMCBAQAogI2lmbmRlZiBf
U1lTX01PVU5UX0hfCiAjZGVmaW5lIF9TWVNfTU9VTlRfSF8KIAotI2luY2x1ZGUgPHN5cy9jZGVm
cy5oPgogI2luY2x1ZGUgPHN5cy9zdGF0ZnMuaD4KLSNpbmNsdWRlIDxvc3Yvdm5vZGUuaD4KLSNp
bmNsdWRlIDxic2Qvc3lzL3N5cy9xdWV1ZS5oPgorI2luY2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1
ZGUgPHVrL2xpc3QuaD4KKyNpbmNsdWRlIDx2ZnNjb3JlL3Zub2RlLmg+CiAKICNpZmRlZiBfS0VS
TkVMCiAKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9wcmV4LmggYi9s
aWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvcHJleC5oCmluZGV4IDZjYmUzMTMwLi44YTMwNmQ1
NCAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3ByZXguaAorKysgYi9s
aWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvcHJleC5oCkBAIC0zOCw3ICszOCw2IEBACiAKIAog
I2luY2x1ZGUgPHVuaXN0ZC5oPgotI2luY2x1ZGUgPG9zdi9mY250bC5oPgogCiAjZGVmaW5lCUJT
SVpFCTUxMgkJLyogc2l6ZSBvZiBzZWNvbmRhcnkgYmxvY2sgKGJ5dGVzKSAqLwogCmRpZmYgLS1n
aXQgYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdWlvLmggYi9saWIvdmZzY29yZS9pbmNs
dWRlL3Zmc2NvcmUvdWlvLmgKaW5kZXggZDdmN2ZjZTkuLjhhZDFlM2ZiIDEwMDY0NAotLS0gYS9s
aWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdWlvLmgKKysrIGIvbGliL3Zmc2NvcmUvaW5jbHVk
ZS92ZnNjb3JlL3Vpby5oCkBAIC0zMyw3ICszMyw2IEBACiAjaWZuZGVmIF9VSU9fSF8KICNkZWZp
bmUJX1VJT19IXwogCi0jaW5jbHVkZSA8c3lzL2NkZWZzLmg+CiAjaW5jbHVkZSA8c3lzL3R5cGVz
Lmg+CiAjaW5jbHVkZSA8c3lzL3Vpby5oPgogI2luY2x1ZGUgPGxpbWl0cy5oPgpkaWZmIC0tZ2l0
IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Zub2RlLmggYi9saWIvdmZzY29yZS9pbmNs
dWRlL3Zmc2NvcmUvdm5vZGUuaAppbmRleCBkMzBhOTQxMS4uNDlmZDRkMzYgMTAwNjQ0Ci0tLSBh
L2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5oCisrKyBiL2xpYi92ZnNjb3JlL2lu
Y2x1ZGUvdmZzY29yZS92bm9kZS5oCkBAIC0zNSwxMyArMzUsMTQgQEAKIAogI2lmZGVmIF9LRVJO
RUwKIAotI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0jaW5j
bHVkZSA8b3N2L3ByZXguaD4KLSNpbmNsdWRlIDxvc3YvdWlvLmg+Ci0jaW5jbHVkZSA8b3N2L211
dGV4Lmg+Ci0jaW5jbHVkZSAiZmlsZS5oIgotI2luY2x1ZGUgImRpcmVudC5oIgorI2luY2x1ZGUg
PGRpcmVudC5oPgorCisjaW5jbHVkZSA8dWsvbXV0ZXguaD4KKyNpbmNsdWRlIDx1ay9saXN0Lmg+
CisjaW5jbHVkZSA8dGltZS5oPgorI2luY2x1ZGUgPHZmc2NvcmUvdWlvLmg+CisjaW5jbHVkZSA8
dmZzY29yZS9kZW50cnkuaD4KIAogc3RydWN0IHZmc29wczsKIHN0cnVjdCB2bm9wczsKZGlmZiAt
LWdpdCBhL2xpYi92ZnNjb3JlL2xvb2t1cC5jIGIvbGliL3Zmc2NvcmUvbG9va3VwLmMKaW5kZXgg
ZjdhMzhjNGYuLjk4MzdlODFmIDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9sb29rdXAuYworKysg
Yi9saWIvdmZzY29yZS9sb29rdXAuYwpAQCAtMzYsOCArMzYsOCBAQAogI2luY2x1ZGUgPHN0ZGxp
Yi5oPgogI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgogCi0jaW5jbHVkZSA8b3N2L2RlbnRyeS5oPgot
I2luY2x1ZGUgPG9zdi92bm9kZS5oPgorI2luY2x1ZGUgPHZmc2NvcmUvZGVudHJ5Lmg+CisjaW5j
bHVkZSA8dmZzY29yZS92bm9kZS5oPgogI2luY2x1ZGUgInZmcy5oIgogCiBzdGF0aWMgc3NpemVf
dApkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvbWFpbi5jIGIvbGliL3Zmc2NvcmUvbWFpbi5jCmlu
ZGV4IDc0ODc2ZGMxLi45MGRmM2Q3MSAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvbWFpbi5jCisr
KyBiL2xpYi92ZnNjb3JlL21haW4uYwpAQCAtMzAsNTMgKzMwLDIzIEBACiAgKiBTVUNIIERBTUFH
RS4KICAqLwogCi0jaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjZGVmaW5lIF9HTlVfU09VUkNFCisK
ICNpbmNsdWRlIDxzeXMvc3RhdHZmcy5oPgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0jaW5jbHVk
ZSA8c3lzL3RpbWUuaD4KLSNpbmNsdWRlIDxzeXMvc2VuZGZpbGUuaD4KLQogI2luY2x1ZGUgPGxp
bWl0cy5oPgotI2luY2x1ZGUgPHVuaXN0ZC5oPgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVk
ZSA8c3RkaW50Lmg+Ci0jaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAj
aW5jbHVkZSA8ZXJybm8uaD4KLSNpbmNsdWRlIDxzaWduYWwuaD4KLSNkZWZpbmUgb3BlbiBfX29w
ZW5fdmFyaWFkaWMKLSNkZWZpbmUgZmNudGwgX19mY250bF92YXJpYWRpYwogI2luY2x1ZGUgPGZj
bnRsLmg+Ci0jdW5kZWYgb3BlbgotI3VuZGVmIGZjbnRsCi0KLSNpbmNsdWRlIDxvc3YvcHJleC5o
PgotI2luY2x1ZGUgPG9zdi92bm9kZS5oPgotI2luY2x1ZGUgPG9zdi9zdHViYmluZy5oaD4KLSNp
bmNsdWRlIDxvc3YvaW9jdGwuaD4KLSNpbmNsdWRlIDxvc3YvdHJhY2UuaGg+Ci0jaW5jbHVkZSA8
b3N2L3J1bi5oaD4KLSNpbmNsdWRlIDxkcml2ZXJzL2NvbnNvbGUuaGg+Ci0KKyNpbmNsdWRlIDx2
ZnNjb3JlL3ByZXguaD4KKyNpbmNsdWRlIDx2ZnNjb3JlL3Zub2RlLmg+CiAjaW5jbHVkZSAidmZz
LmgiCi0KLSNpbmNsdWRlICJsaWJjL2ludGVybmFsL2xpYmMuaCIKLQotI2luY2x1ZGUgPGFsZ29y
aXRobT4KLSNpbmNsdWRlIDx1bm9yZGVyZWRfbWFwPgotCiAjaW5jbHVkZSA8c3lzL2ZpbGUuaD4K
LQotI2luY2x1ZGUgImZzL2ZzLmhoIgotI2luY2x1ZGUgImxpYmMvbGliYy5oaCIKLQotI2luY2x1
ZGUgPG1udGVudC5oPgotI2luY2x1ZGUgPHN5cy9tbWFuLmg+Ci0KLSNpbmNsdWRlIDxvc3YvY2xv
Y2suaGg+Ci0jaW5jbHVkZSA8YXBpL3V0aW1lLmg+Ci0jaW5jbHVkZSA8Y2hyb25vPgotCisjaW5j
bHVkZSA8c3RkYXJnLmg+CisjaW5jbHVkZSA8dmZzY29yZS9maWxlLmg+CisjaW5jbHVkZSA8dmZz
Y29yZS9tb3VudC5oPgorI2luY2x1ZGUgPHZmc2NvcmUvZnMuaD4KKyNpbmNsdWRlIDx1ay9lcnJw
dHIuaD4KIAogI2lmZGVmIERFQlVHX1ZGUwogaW50CXZmc19kZWJ1ZyA9IFZGU0RCX0ZMQUdTOwpk
aWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvbW91bnQuYyBiL2xpYi92ZnNjb3JlL21vdW50LmMKaW5k
ZXggMTBjMjdmYWQuLjA2OTIyZmZiIDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9tb3VudC5jCisr
KyBiL2xpYi92ZnNjb3JlL21vdW50LmMKQEAgLTM0LDI3ICszNCwyMiBAQAogICogdmZzX21vdW50
LmMgLSBtb3VudCBvcGVyYXRpb25zCiAgKi8KIAotI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAjaW5j
bHVkZSA8c3lzL3BhcmFtLmg+Ci0jaW5jbHVkZSA8ZGlyZW50Lmg+Ci0KICNpbmNsdWRlIDxsaW1p
dHMuaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRl
IDxzdHJpbmcuaD4KICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPGVycm5vLmg+Ci0jaW5j
bHVkZSA8ZmNudGwuaD4KLQotI2luY2x1ZGUgPG9zdi9wcmV4Lmg+Ci0jaW5jbHVkZSA8b3N2L3Zu
b2RlLmg+Ci0jaW5jbHVkZSA8b3N2L2RldmljZS5oPgotI2luY2x1ZGUgPG9zdi9kZWJ1Zy5oPgot
I2luY2x1ZGUgPG9zdi9tdXRleC5oPgogI2luY2x1ZGUgInZmcy5oIgotCi0jaW5jbHVkZSA8bWVt
b3J5PgotI2luY2x1ZGUgPGxpc3Q+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8
c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDx0aW1lLmg+CisjaW5jbHVkZSA8dWsvbGlzdC5oPgorI2lu
Y2x1ZGUgPHVrL211dGV4Lmg+CisjaW5jbHVkZSA8dmZzY29yZS9wcmV4Lmg+CisjaW5jbHVkZSA8
dmZzY29yZS9kZW50cnkuaD4KKyNpbmNsdWRlIDx2ZnNjb3JlL3Zub2RlLmg+CiAKIC8qCiAgKiBM
aXN0IGZvciBWRlMgbW91bnQgcG9pbnRzLgpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvc3RkaW8u
YyBiL2xpYi92ZnNjb3JlL3N0ZGlvLmMKaW5kZXggYTliZGZkNjEuLjdkNzQ5NDQyIDEwMDY0NAot
LS0gYS9saWIvdmZzY29yZS9zdGRpby5jCisrKyBiL2xpYi92ZnNjb3JlL3N0ZGlvLmMKQEAgLTM0
LDkgKzM0LDEyIEBACiAgKi8KIAogI2luY2x1ZGUgPHZmc2NvcmUvZmlsZS5oPgorI2luY2x1ZGUg
PHZmc2NvcmUvZnMuaD4KICNpbmNsdWRlIDx1ay9wbGF0L2NvbnNvbGUuaD4KICNpbmNsdWRlIDx1
ay9lc3NlbnRpYWxzLmg+CiAjaW5jbHVkZSA8dGVybWlvcy5oPgorI2luY2x1ZGUgPHZmc2NvcmUv
dm5vZGUuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KIAogLyogT25lIGZ1bmN0aW9uIGZvciBzdGRl
cnIgYW5kIHN0ZG91dCAqLwogc3RhdGljIHNzaXplX3Qgc3Rkb3V0X3dyaXRlKHN0cnVjdCB2ZnNj
b3JlX2ZpbGUgKnZmc2NvcmVfZmlsZSBfX3VudXNlZCwKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3Jl
L3N1YnJfdWlvLmMgYi9saWIvdmZzY29yZS9zdWJyX3Vpby5jCmluZGV4IDgyNzZkNmQ0Li5iYmNh
MzM2MiAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvc3Vicl91aW8uYworKysgYi9saWIvdmZzY29y
ZS9zdWJyX3Vpby5jCkBAIC0zOSwxMSArMzksMTEgQEAKICAqCUAoIylrZXJuX3N1YnIuYwk4LjMg
KEJlcmtlbGV5KSAxLzIxLzk0CiAgKi8KIAotI2luY2x1ZGUgPGFzc2VydC5oPgorI2luY2x1ZGUg
PHVrL2Fzc2VydC5oPgogI2luY2x1ZGUgPGVycm5vLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAj
aW5jbHVkZSA8c3RyaW5nLmg+Ci0jaW5jbHVkZSA8b3N2L3Vpby5oPgorI2luY2x1ZGUgPHZmc2Nv
cmUvdWlvLmg+CiAKIGludAogdWlvbW92ZSh2b2lkICpjcCwgaW50IG4sIHN0cnVjdCB1aW8gKnVp
bykKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3N5c2NhbGxzLmMgYi9saWIvdmZzY29yZS9zeXNj
YWxscy5jCmluZGV4IDRlNTUzMzdmLi5mNTBmYjM4ZiAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUv
c3lzY2FsbHMuYworKysgYi9saWIvdmZzY29yZS9zeXNjYWxscy5jCkBAIC0zNSw3ICszNSw4IEBA
CiAgKiAgICAgICAgICAgICAgICAgIGEgVkZTIHN5c3RlbSBjYWxsLgogICovCiAKLSNpbmNsdWRl
IDxzeXMvc3RhdC5oPgorI2RlZmluZSBfQlNEX1NPVVJDRQorI2RlZmluZSBfR05VX1NPVVJDRQog
I2luY2x1ZGUgPGRpcmVudC5oPgogCiAjaW5jbHVkZSA8bGltaXRzLmg+CkBAIC00NiwxMSArNDcs
MTIgQEAKICNpbmNsdWRlIDxlcnJuby5oPgogI2luY2x1ZGUgPGZjbnRsLmg+CiAKLSNpbmNsdWRl
IDxvc3YvcHJleC5oPgotI2luY2x1ZGUgPG9zdi92bm9kZS5oPgotI2luY2x1ZGUgPG9zdi92ZnNf
ZmlsZS5oaD4KKyNpbmNsdWRlIDx2ZnNjb3JlL3ByZXguaD4KKyNpbmNsdWRlIDx2ZnNjb3JlL3Zu
b2RlLmg+CisjaW5jbHVkZSA8dmZzY29yZS9maWxlLmg+CisKICNpbmNsdWRlICJ2ZnMuaCIKLSNp
bmNsdWRlIDxmcy9mcy5oaD4KKyNpbmNsdWRlIDx2ZnNjb3JlL2ZzLmg+CiAKIGV4dGVybiBzdHJ1
Y3QgdGFzayAqbWFpbl90YXNrOwogCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS90YXNrLmMgYi9s
aWIvdmZzY29yZS90YXNrLmMKaW5kZXggNGNlYjEyM2IuLjc2MzViZDdhIDEwMDY0NAotLS0gYS9s
aWIvdmZzY29yZS90YXNrLmMKKysrIGIvbGliL3Zmc2NvcmUvdGFzay5jCkBAIC00MSw3ICs0MSw3
IEBACiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxlcnJuby5oPgogCi0jaW5jbHVkZSA8
b3N2L3ByZXguaD4KKyNpbmNsdWRlIDx2ZnNjb3JlL3ByZXguaD4KICNpbmNsdWRlICJ2ZnMuaCIK
IAogCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS92ZnMuaCBiL2xpYi92ZnNjb3JlL3Zmcy5oCmlu
ZGV4IGNkOTQwOTc5Li4yNTMxZjczMCAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvdmZzLmgKKysr
IGIvbGliL3Zmc2NvcmUvdmZzLmgKQEAgLTMzLDI0ICszMywxMiBAQAogI2lmbmRlZiBfVkZTX0gK
ICNkZWZpbmUgX1ZGU19ICiAKLSNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KLSNpbmNsdWRlIDxhc3Nl
cnQuaD4KLSNpbmNsdWRlIDxkaXJlbnQuaD4KLSNpbmNsdWRlIDxsaW1pdHMuaD4KLQotI2luY2x1
ZGUgPG9zdi9wcmV4Lmg+Ci0jaW5jbHVkZSA8b3N2L2ZpbGUuaD4KLSNpbmNsdWRlIDxvc3YvbW91
bnQuaD4KLSNpbmNsdWRlIDxvc3Yvdm5vZGUuaD4KLSNpbmNsdWRlIDxvc3YvZGVudHJ5Lmg+Ci0j
aW5jbHVkZSA8b3N2L2Vycm9yLmg+Ci0KLS8qCi0gKiBJbXBvcnQgdm5vZGUgYXR0cmlidXRlcyBm
bGFncwotICovCi0jaW5jbHVkZSA8b3N2L3Zub2RlX2F0dHIuaD4KKyNkZWZpbmUgX0dOVV9TT1VS
Q0UKKyNpbmNsdWRlIDx2ZnNjb3JlL21vdW50Lmg+CiAKLS8qICNkZWZpbmUgREVCVUdfVkZTIDEg
Ki8KKyNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHN5
cy9zdGF0ZnMuaD4KIAogLyoKICAqIFR1bmFibGUgcGFyYW1ldGVycwpAQCAtNTgsNyArNDYsNiBA
QAogI2RlZmluZSBGU01BWE5BTUVTCTE2CQkvKiBtYXggbGVuZ3RoIG9mICdmaWxlIHN5c3RlbScg
bmFtZSAqLwogCiAjaWZkZWYgREVCVUdfVkZTCi0jaW5jbHVkZSA8b3N2L2RlYnVnLmg+CiAKIGV4
dGVybiBpbnQgdmZzX2RlYnVnOwogCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS92bm9kZS5jIGIv
bGliL3Zmc2NvcmUvdm5vZGUuYwppbmRleCBmNTY0NTc3Zi4uODFmNzhiZTggMTAwNjQ0Ci0tLSBh
L2xpYi92ZnNjb3JlL3Zub2RlLmMKKysrIGIvbGliL3Zmc2NvcmUvdm5vZGUuYwpAQCAtMzYsMTQg
KzM2LDE2IEBACiAKICNpbmNsdWRlIDxsaW1pdHMuaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KKyNp
bmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDxzdGRsaWIu
aD4KICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPGVycm5vLmg+CiAjaW5jbHVkZSA8c3lz
L3N0YXQuaD4KIAotI2luY2x1ZGUgPG9zdi9wcmV4Lmg+Ci0jaW5jbHVkZSA8b3N2L3Zub2RlLmg+
CisjaW5jbHVkZSA8dmZzY29yZS9wcmV4Lmg+CisjaW5jbHVkZSA8dmZzY29yZS9kZW50cnkuaD4K
KyNpbmNsdWRlIDx2ZnNjb3JlL3Zub2RlLmg+CiAjaW5jbHVkZSAidmZzLmgiCiAKIGVudW0gdnR5
cGUgaWZ0b3Z0X3RhYlsxNl0gPSB7Ci0tIAoyLjE5LjIKCgpfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlv
cy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3Jn
L21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Feb 04 14:38:30 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 04 Feb 2019 14:38:30 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gqfOI-0006As-55; Mon, 04 Feb 2019 14:38:30 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Kl24=QL=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gqfOG-0006A7-15
 for minios-devel@lists.xen.org; Mon, 04 Feb 2019 14:38:28 +0000
X-Inumbo-ID: 86f1b2c8-288a-11e9-b6a5-bb670a04f007
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 86f1b2c8-288a-11e9-b6a5-bb670a04f007;
 Mon, 04 Feb 2019 14:38:25 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 52556104D63;
 Mon,  4 Feb 2019 15:38:24 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id Yp9zVYBTs6ps; Mon,  4 Feb 2019 15:38:24 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 1C731104BDB
 for <minios-devel@lists.xen.org>; Mon,  4 Feb 2019 15:38:22 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 4 Feb 2019 15:38:21 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>, <Simon.kuenzer@neclab.eu>,
 <sharan.santhanam@neclab.eu>
Date: Mon, 4 Feb 2019 15:37:01 +0100
Message-ID: <20190204143739.29249-10-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 09/23] lib/vfscore: use Unikraft
 types and functions
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogbGliL3Zmc2NvcmUvZGVudHJ5LmMgICAgICAgICAgICAgICAgIHwgMTM3ICsrKysrKysrKysr
KysrLS0tLS0tLS0tLS0tLQogbGliL3Zmc2NvcmUvZm9wcy5jICAgICAgICAgICAgICAgICAgIHwg
ICAyICstCiBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZGVudHJ5LmggfCAgMTAgKy0KIGxp
Yi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9tb3VudC5oICB8ICAgMSArCiBsaWIvdmZzY29yZS9p
bmNsdWRlL3Zmc2NvcmUvdm5vZGUuaCAgfCAgMjkgKysrLS0tCiBsaWIvdmZzY29yZS9sb29rdXAu
YyAgICAgICAgICAgICAgICAgfCAgMzAgKysrLS0tCiBsaWIvdmZzY29yZS9tYWluLmMgICAgICAg
ICAgICAgICAgICAgfCAxMjEgKysrKysrKysrKystLS0tLS0tLS0tLS0KIGxpYi92ZnNjb3JlL21v
dW50LmMgICAgICAgICAgICAgICAgICB8IDExNCArKysrKysrKysrKystLS0tLS0tLS0tCiBsaWIv
dmZzY29yZS9zdWJyX3Vpby5jICAgICAgICAgICAgICAgfCAgIDIgKy0KIGxpYi92ZnNjb3JlL3N5
c2NhbGxzLmMgICAgICAgICAgICAgICB8IDEyOCArKysrKysrKysrKystLS0tLS0tLS0tLS0tCiBs
aWIvdmZzY29yZS92ZnMuaCAgICAgICAgICAgICAgICAgICAgfCAgMzggKysrKy0tLS0KIGxpYi92
ZnNjb3JlL3Zub2RlLmMgICAgICAgICAgICAgICAgICB8IDEyMiArKysrKysrKysrKystLS0tLS0t
LS0tLS0KIDEyIGZpbGVzIGNoYW5nZWQsIDM3NiBpbnNlcnRpb25zKCspLCAzNTggZGVsZXRpb25z
KC0pCgpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvZGVudHJ5LmMgYi9saWIvdmZzY29yZS9kZW50
cnkuYwppbmRleCBjY2NlMDdkMS4uZmUxODQxYmIgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2Rl
bnRyeS5jCisrKyBiL2xpYi92ZnNjb3JlL2RlbnRyeS5jCkBAIC00MSwxOCArNDEsMTggQEAKIAog
I2RlZmluZSBERU5UUllfQlVDS0VUUyAzMgogCi1zdGF0aWMgTElTVF9IRUFEKGRlbnRyeV9oYXNo
X2hlYWQsIGRlbnRyeSkgZGVudHJ5X2hhc2hfdGFibGVbREVOVFJZX0JVQ0tFVFNdOwotc3RhdGlj
IExJU1RfSEVBRChmYWtlLCBkZW50cnkpIGZha2U7Ci1zdGF0aWMgbXV0ZXggZGVudHJ5X2hhc2hf
bG9jazsKK3N0YXRpYyBzdHJ1Y3QgdWtfaGxpc3RfaGVhZCBkZW50cnlfaGFzaF90YWJsZVtERU5U
UllfQlVDS0VUU107CitzdGF0aWMgVUtfSExJU1RfSEVBRChmYWtlKTsKK3N0YXRpYyBzdHJ1Y3Qg
dWtfbXV0ZXggZGVudHJ5X2hhc2hfbG9jazsKIAogLyoKICAqIEdldCB0aGUgaGFzaCB2YWx1ZSBm
cm9tIHRoZSBtb3VudCBwb2ludCBhbmQgcGF0aCBuYW1lLgogICogWFhYOiByZXBsYWNlIHdpdGgg
YSBiZXR0ZXIgaGFzaCBmb3IgNjQtYml0IHBvaW50ZXJzLgogICovCi1zdGF0aWMgdV9pbnQKK3N0
YXRpYyB1bnNpZ25lZCBpbnQKIGRlbnRyeV9oYXNoKHN0cnVjdCBtb3VudCAqbXAsIGNvbnN0IGNo
YXIgKnBhdGgpCiB7Ci0JdV9pbnQgdmFsID0gMDsKKwl1bnNpZ25lZCBpbnQgdmFsID0gMDsKIAog
CWlmIChwYXRoKSB7CiAJCXdoaWxlICgqcGF0aCkgewpAQCAtNjcsMTAgKzY3LDEwIEBAIHN0cnVj
dCBkZW50cnkgKgogZGVudHJ5X2FsbG9jKHN0cnVjdCBkZW50cnkgKnBhcmVudF9kcCwgc3RydWN0
IHZub2RlICp2cCwgY29uc3QgY2hhciAqcGF0aCkKIHsKIAlzdHJ1Y3QgbW91bnQgKm1wID0gdnAt
PnZfbW91bnQ7Ci0Jc3RydWN0IGRlbnRyeSAqZHAgPSAoZGVudHJ5KiljYWxsb2Moc2l6ZW9mKCpk
cCksIDEpOworCXN0cnVjdCBkZW50cnkgKmRwID0gKHN0cnVjdCBkZW50cnkqKWNhbGxvYyhzaXpl
b2YoKmRwKSwgMSk7CiAKIAlpZiAoIWRwKSB7Ci0JCXJldHVybiBudWxscHRyOworCQlyZXR1cm4g
TlVMTDsKIAl9CiAKIAl2cmVmKHZwKTsKQEAgLTc5LDIyICs3OSwyNCBAQCBkZW50cnlfYWxsb2Mo
c3RydWN0IGRlbnRyeSAqcGFyZW50X2RwLCBzdHJ1Y3Qgdm5vZGUgKnZwLCBjb25zdCBjaGFyICpw
YXRoKQogCWRwLT5kX3Zub2RlID0gdnA7CiAJZHAtPmRfbW91bnQgPSBtcDsKIAlkcC0+ZF9wYXRo
ID0gc3RyZHVwKHBhdGgpOwotCUxJU1RfSU5JVCgmZHAtPmRfY2hpbGRyZW4pOworCVVLX0lOSVRf
TElTVF9IRUFEKCZkcC0+ZF9jaGlsZF9saXN0KTsKIAogCWlmIChwYXJlbnRfZHApIHsKIAkJZHJl
ZihwYXJlbnRfZHApOwotCQlXSVRIX0xPQ0socGFyZW50X2RwLT5kX2xvY2spIHsKLQkJCS8vIElu
c2VydCBkcCBpbnRvIGl0cyBwYXJlbnQncyBjaGlsZHJlbiBsaXN0LgotCQkJTElTVF9JTlNFUlRf
SEVBRCgmcGFyZW50X2RwLT5kX2NoaWxkcmVuLCBkcCwgZF9jaGlsZHJlbl9saW5rKTsKLQkJfQor
CisJCXVrX211dGV4X2xvY2soJnBhcmVudF9kcC0+ZF9sb2NrKTsKKwkJLy8gSW5zZXJ0IGRwIGlu
dG8gaXRzIHBhcmVudCdzIGNoaWxkcmVuIGxpc3QuCisJCXVrX2xpc3RfYWRkKCZkcC0+ZF9jaGls
ZF9saW5rLCAmcGFyZW50X2RwLT5kX2NoaWxkX2xpc3QpOworCQl1a19tdXRleF91bmxvY2soJnBh
cmVudF9kcC0+ZF9sb2NrKTsKIAl9CiAJZHAtPmRfcGFyZW50ID0gcGFyZW50X2RwOwogCiAJdm5f
YWRkX25hbWUodnAsIGRwKTsKIAotCW11dGV4X2xvY2soJmRlbnRyeV9oYXNoX2xvY2spOwotCUxJ
U1RfSU5TRVJUX0hFQUQoJmRlbnRyeV9oYXNoX3RhYmxlW2RlbnRyeV9oYXNoKG1wLCBwYXRoKV0s
IGRwLCBkX2xpbmspOwotCW11dGV4X3VubG9jaygmZGVudHJ5X2hhc2hfbG9jayk7CisJdWtfbXV0
ZXhfbG9jaygmZGVudHJ5X2hhc2hfbG9jayk7CisJdWtfaGxpc3RfYWRkX2hlYWQoJmRwLT5kX2xp
bmssCisJCQkgICZkZW50cnlfaGFzaF90YWJsZVtkZW50cnlfaGFzaChtcCwgcGF0aCldKTsKKwl1
a19tdXRleF91bmxvY2soJmRlbnRyeV9oYXNoX2xvY2spOwogCXJldHVybiBkcDsKIH07CiAKQEAg
LTEwMywyOSArMTA1LDMwIEBAIGRlbnRyeV9sb29rdXAoc3RydWN0IG1vdW50ICptcCwgY2hhciAq
cGF0aCkKIHsKIAlzdHJ1Y3QgZGVudHJ5ICpkcDsKIAotCW11dGV4X2xvY2soJmRlbnRyeV9oYXNo
X2xvY2spOwotCUxJU1RfRk9SRUFDSChkcCwgJmRlbnRyeV9oYXNoX3RhYmxlW2RlbnRyeV9oYXNo
KG1wLCBwYXRoKV0sIGRfbGluaykgeworCXVrX211dGV4X2xvY2soJmRlbnRyeV9oYXNoX2xvY2sp
OworCXVrX2hsaXN0X2Zvcl9lYWNoX2VudHJ5KGRwLCAmZGVudHJ5X2hhc2hfdGFibGVbZGVudHJ5
X2hhc2gobXAsIHBhdGgpXSwgZF9saW5rKSB7CiAJCWlmIChkcC0+ZF9tb3VudCA9PSBtcCAmJiAh
c3RybmNtcChkcC0+ZF9wYXRoLCBwYXRoLCBQQVRIX01BWCkpIHsKIAkJCWRwLT5kX3JlZmNudCsr
OwotCQkJbXV0ZXhfdW5sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKKwkJCXVrX211dGV4X3VubG9j
aygmZGVudHJ5X2hhc2hfbG9jayk7CiAJCQlyZXR1cm4gZHA7CiAJCX0KIAl9Ci0JbXV0ZXhfdW5s
b2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKLQlyZXR1cm4gbnVsbHB0cjsgICAgICAgICAgICAgICAg
Lyogbm90IGZvdW5kICovCisJdWtfbXV0ZXhfdW5sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKKwly
ZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgLyogbm90IGZvdW5kICovCiB9CiAKIHN0YXRpYyB2
b2lkIGRlbnRyeV9jaGlsZHJlbl9yZW1vdmUoc3RydWN0IGRlbnRyeSAqZHApCiB7Ci0Jc3RydWN0
IGRlbnRyeSAqZW50cnkgPSBudWxscHRyOworCXN0cnVjdCBkZW50cnkgKmVudHJ5ID0gTlVMTDsK
IAotCVdJVEhfTE9DSyhkcC0+ZF9sb2NrKSB7Ci0JCUxJU1RfRk9SRUFDSChlbnRyeSwgJmRwLT5k
X2NoaWxkcmVuLCBkX2NoaWxkcmVuX2xpbmspIHsKLQkJCUFTU0VSVChlbnRyeSk7Ci0JCQlBU1NF
UlQoZW50cnktPmRfcmVmY250ID4gMCk7Ci0JCQlMSVNUX1JFTU9WRShlbnRyeSwgZF9saW5rKTsK
LQkJfQorCXVrX211dGV4X2xvY2soJmRwLT5kX2xvY2spOworCXVrX2xpc3RfZm9yX2VhY2hfZW50
cnkoZW50cnksICZkcC0+ZF9jaGlsZF9saXN0LCBkX2NoaWxkX2xpbmspIHsKKwkJVUtfQVNTRVJU
KGVudHJ5KTsKKwkJVUtfQVNTRVJUKGVudHJ5LT5kX3JlZmNudCA+IDApOworCQl1a19obGlzdF9k
ZWwoJmVudHJ5LT5kX2xpbmspOwogCX0KKwl1a19tdXRleF91bmxvY2soJmRwLT5kX2xvY2spOwor
CiB9CiAKIHZvaWQKQEAgLTEzNSwzMyArMTM4LDM0IEBAIGRlbnRyeV9tb3ZlKHN0cnVjdCBkZW50
cnkgKmRwLCBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnRfZHAsIGNoYXIgKnBhdGgpCiAJY2hhciAqb2xk
X3BhdGggPSBkcC0+ZF9wYXRoOwogCiAJaWYgKG9sZF9wZHApIHsKLQkJV0lUSF9MT0NLKG9sZF9w
ZHAtPmRfbG9jaykgewotCQkJLy8gUmVtb3ZlIGRwIGZyb20gaXRzIG9sZCBwYXJlbnQncyBjaGls
ZHJlbiBsaXN0LgotCQkJTElTVF9SRU1PVkUoZHAsIGRfY2hpbGRyZW5fbGluayk7Ci0JCX0KKwkJ
dWtfbXV0ZXhfbG9jaygmb2xkX3BkcC0+ZF9sb2NrKTsKKwkJLy8gUmVtb3ZlIGRwIGZyb20gaXRz
IG9sZCBwYXJlbnQncyBjaGlsZHJlbiBsaXN0LgorCQl1a19saXN0X2RlbCgmZHAtPmRfY2hpbGRf
bGluayk7CisJCXVrX211dGV4X3VubG9jaygmb2xkX3BkcC0+ZF9sb2NrKTsKIAl9CiAKIAlpZiAo
cGFyZW50X2RwKSB7CiAJCWRyZWYocGFyZW50X2RwKTsKLQkJV0lUSF9MT0NLKHBhcmVudF9kcC0+
ZF9sb2NrKSB7Ci0JCQkvLyBJbnNlcnQgZHAgaW50byBpdHMgbmV3IHBhcmVudCdzIGNoaWxkcmVu
IGxpc3QuCi0JCQlMSVNUX0lOU0VSVF9IRUFEKCZwYXJlbnRfZHAtPmRfY2hpbGRyZW4sIGRwLCBk
X2NoaWxkcmVuX2xpbmspOwotCQl9Ci0JfQogCi0JV0lUSF9MT0NLKGRlbnRyeV9oYXNoX2xvY2sp
IHsKLQkJLy8gUmVtb3ZlIGFsbCBkcCdzIGNoaWxkIGRlbnRyaWVzIGZyb20gdGhlIGhhc2h0YWJs
ZS4KLQkJZGVudHJ5X2NoaWxkcmVuX3JlbW92ZShkcCk7Ci0JCS8vIFJlbW92ZSBkcCB3aXRoIG91
dGRhdGVkIGhhc2ggaW5mbyBmcm9tIHRoZSBoYXNodGFibGUuCi0JCUxJU1RfUkVNT1ZFKGRwLCBk
X2xpbmspOwotCQkvLyBVcGRhdGUgZHAuCi0JCWRwLT5kX3BhdGggPSBzdHJkdXAocGF0aCk7Ci0J
CWRwLT5kX3BhcmVudCA9IHBhcmVudF9kcDsKLQkJLy8gSW5zZXJ0IGRwIHVwZGF0ZWQgaGFzaCBp
bmZvIGludG8gdGhlIGhhc2h0YWJsZS4KLQkJTElTVF9JTlNFUlRfSEVBRCgmZGVudHJ5X2hhc2hf
dGFibGVbZGVudHJ5X2hhc2goZHAtPmRfbW91bnQsIHBhdGgpXSwKLQkJCWRwLCBkX2xpbmspOwor
CQl1a19tdXRleF9sb2NrKCZwYXJlbnRfZHAtPmRfbG9jayk7CisJCS8vIEluc2VydCBkcCBpbnRv
IGl0cyBuZXcgcGFyZW50J3MgY2hpbGRyZW4gbGlzdC4KKwkJdWtfbGlzdF9hZGQoJmRwLT5kX2No
aWxkX2xpbmssICZwYXJlbnRfZHAtPmRfY2hpbGRfbGlzdCk7CisJCXVrX211dGV4X3VubG9jaygm
cGFyZW50X2RwLT5kX2xvY2spOwogCX0KIAorCXVrX211dGV4X2xvY2soJmRlbnRyeV9oYXNoX2xv
Y2spOworCS8vIFJlbW92ZSBhbGwgZHAncyBjaGlsZCBkZW50cmllcyBmcm9tIHRoZSBoYXNodGFi
bGUuCisJZGVudHJ5X2NoaWxkcmVuX3JlbW92ZShkcCk7CisJLy8gUmVtb3ZlIGRwIHdpdGggb3V0
ZGF0ZWQgaGFzaCBpbmZvIGZyb20gdGhlIGhhc2h0YWJsZS4KKwl1a19obGlzdF9kZWwoJmRwLT5k
X2xpbmspOworCS8vIFVwZGF0ZSBkcC4KKwlkcC0+ZF9wYXRoID0gc3RyZHVwKHBhdGgpOworCWRw
LT5kX3BhcmVudCA9IHBhcmVudF9kcDsKKwkvLyBJbnNlcnQgZHAgdXBkYXRlZCBoYXNoIGluZm8g
aW50byB0aGUgaGFzaHRhYmxlLgorCXVrX2hsaXN0X2FkZF9oZWFkKCZkcC0+ZF9saW5rLAorCQkJ
ICAmZGVudHJ5X2hhc2hfdGFibGVbZGVudHJ5X2hhc2goZHAtPmRfbW91bnQsIHBhdGgpXSk7CisJ
dWtfbXV0ZXhfdW5sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKKwogCWlmIChvbGRfcGRwKSB7CiAJ
CWRyZWxlKG9sZF9wZHApOwogCX0KQEAgLTE3Miw0NSArMTc2LDQ2IEBAIGRlbnRyeV9tb3ZlKHN0
cnVjdCBkZW50cnkgKmRwLCBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnRfZHAsIGNoYXIgKnBhdGgpCiB2
b2lkCiBkZW50cnlfcmVtb3ZlKHN0cnVjdCBkZW50cnkgKmRwKQogewotCW11dGV4X2xvY2soJmRl
bnRyeV9oYXNoX2xvY2spOwotCUxJU1RfUkVNT1ZFKGRwLCBkX2xpbmspOworCXVrX211dGV4X2xv
Y2soJmRlbnRyeV9oYXNoX2xvY2spOworCXVrX2hsaXN0X2RlbCgmZHAtPmRfbGluayk7CiAJLyog
cHV0IGl0IG9uIGEgZmFrZSBsaXN0IGZvciBkcmVsZSgpIHRvIHdvcmsqLwotCUxJU1RfSU5TRVJU
X0hFQUQoJmZha2UsIGRwLCBkX2xpbmspOwotCW11dGV4X3VubG9jaygmZGVudHJ5X2hhc2hfbG9j
ayk7CisJdWtfaGxpc3RfYWRkX2hlYWQoJmRwLT5kX2xpbmssICZmYWtlKTsKKwl1a19tdXRleF91
bmxvY2soJmRlbnRyeV9oYXNoX2xvY2spOwogfQogCiB2b2lkCiBkcmVmKHN0cnVjdCBkZW50cnkg
KmRwKQogewotCUFTU0VSVChkcCk7Ci0JQVNTRVJUKGRwLT5kX3JlZmNudCA+IDApOworCVVLX0FT
U0VSVChkcCk7CisJVUtfQVNTRVJUKGRwLT5kX3JlZmNudCA+IDApOwogCi0JbXV0ZXhfbG9jaygm
ZGVudHJ5X2hhc2hfbG9jayk7CisJdWtfbXV0ZXhfbG9jaygmZGVudHJ5X2hhc2hfbG9jayk7CiAJ
ZHAtPmRfcmVmY250Kys7Ci0JbXV0ZXhfdW5sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKKwl1a19t
dXRleF91bmxvY2soJmRlbnRyeV9oYXNoX2xvY2spOwogfQogCiB2b2lkCiBkcmVsZShzdHJ1Y3Qg
ZGVudHJ5ICpkcCkKIHsKLQlBU1NFUlQoZHApOwotCUFTU0VSVChkcC0+ZF9yZWZjbnQgPiAwKTsK
KwlVS19BU1NFUlQoZHApOworCVVLX0FTU0VSVChkcC0+ZF9yZWZjbnQgPiAwKTsKIAotCW11dGV4
X2xvY2soJmRlbnRyeV9oYXNoX2xvY2spOworCXVrX211dGV4X2xvY2soJmRlbnRyeV9oYXNoX2xv
Y2spOwogCWlmICgtLWRwLT5kX3JlZmNudCkgewotCQltdXRleF91bmxvY2soJmRlbnRyeV9oYXNo
X2xvY2spOworCQl1a19tdXRleF91bmxvY2soJmRlbnRyeV9oYXNoX2xvY2spOwogCQlyZXR1cm47
CiAJfQotCUxJU1RfUkVNT1ZFKGRwLCBkX2xpbmspOworCXVrX2hsaXN0X2RlbCgmZHAtPmRfbGlu
ayk7CiAJdm5fZGVsX25hbWUoZHAtPmRfdm5vZGUsIGRwKTsKIAotCW11dGV4X3VubG9jaygmZGVu
dHJ5X2hhc2hfbG9jayk7CisJdWtfbXV0ZXhfdW5sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKIAog
CWlmIChkcC0+ZF9wYXJlbnQpIHsKLQkJV0lUSF9MT0NLKGRwLT5kX3BhcmVudC0+ZF9sb2NrKSB7
Ci0JCQkvLyBSZW1vdmUgZHAgZnJvbSBpdHMgcGFyZW50J3MgY2hpbGRyZW4gbGlzdC4KLQkJCUxJ
U1RfUkVNT1ZFKGRwLCBkX2NoaWxkcmVuX2xpbmspOwotCQl9CisJCXVrX211dGV4X2xvY2soJmRw
LT5kX3BhcmVudC0+ZF9sb2NrKTsKKwkJLy8gUmVtb3ZlIGRwIGZyb20gaXRzIHBhcmVudCdzIGNo
aWxkcmVuIGxpc3QuCisJCXVrX2xpc3RfZGVsKCZkcC0+ZF9jaGlsZF9saW5rKTsKKwkJdWtfbXV0
ZXhfdW5sb2NrKCZkcC0+ZF9wYXJlbnQtPmRfbG9jayk7CisKIAkJZHJlbGUoZHAtPmRfcGFyZW50
KTsKIAl9CiAKQEAgLTIyNiw2ICsyMzEsNiBAQCBkZW50cnlfaW5pdCh2b2lkKQogCWludCBpOwog
CiAJZm9yIChpID0gMDsgaSA8IERFTlRSWV9CVUNLRVRTOyBpKyspIHsKLQkJTElTVF9JTklUKCZk
ZW50cnlfaGFzaF90YWJsZVtpXSk7CisJCVVLX0lOSVRfSExJU1RfSEVBRCgmZGVudHJ5X2hhc2hf
dGFibGVbaV0pOwogCX0KIH0KZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2ZvcHMuYyBiL2xpYi92
ZnNjb3JlL2ZvcHMuYwppbmRleCBiNDU4M2QyMC4uNzkxMTRlMjEgMTAwNjQ0Ci0tLSBhL2xpYi92
ZnNjb3JlL2ZvcHMuYworKysgYi9saWIvdmZzY29yZS9mb3BzLmMKQEAgLTExNSw3ICsxMTUsNyBA
QCBpbnQgdmZzX3dyaXRlKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwLCBzdHJ1Y3QgdWlvICp1aW8s
IGludCBmbGFncykKIAlyZXR1cm4gZXJyb3I7CiB9CiAKLWludCB2ZnNfaW9jdGwoc3RydWN0IHZm
c2NvcmVfZmlsZSAqZnAsIHVfbG9uZyBjb20sIHZvaWQgKmRhdGEpCitpbnQgdmZzX2lvY3RsKHN0
cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwLCB1bnNpZ25lZCBsb25nIGNvbSwgdm9pZCAqZGF0YSkKIHsK
IAlzdHJ1Y3Qgdm5vZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOwogCWludCBlcnJvcjsK
ZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9kZW50cnkuaCBiL2xpYi92
ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9kZW50cnkuaAppbmRleCBiYTFjMzQ1Ny4uODVmMzdhYjcg
MTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9kZW50cnkuaAorKysgYi9s
aWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZGVudHJ5LmgKQEAgLTQyLDE2ICs0MiwxNiBAQAog
c3RydWN0IHZub2RlOwogCiBzdHJ1Y3QgZGVudHJ5IHsKLQlMSVNUX0VOVFJZKGRlbnRyeSkgZF9s
aW5rOwkvKiBsaW5rIGZvciBoYXNoIGxpc3QgKi8KKwlzdHJ1Y3QgdWtfaGxpc3Rfbm9kZSBkX2xp
bms7CS8qIGxpbmsgZm9yIGhhc2ggbGlzdCAqLwogCWludAkJZF9yZWZjbnQ7CS8qIHJlZmVyZW5j
ZSBjb3VudCAqLwogCWNoYXIJCSpkX3BhdGg7CS8qIHBvaW50ZXIgdG8gcGF0aCBpbiBmcyAqLwog
CXN0cnVjdCB2bm9kZQkqZF92bm9kZTsKIAlzdHJ1Y3QgbW91bnQJKmRfbW91bnQ7CiAJc3RydWN0
IGRlbnRyeSAgICpkX3BhcmVudDsgLyogcG9pbnRlciB0byBwYXJlbnQgKi8KLQlMSVNUX0VOVFJZ
KGRlbnRyeSkgZF9uYW1lc19saW5rOyAvKiBsaW5rIGZvIHZub2RlOjpkX25hbWVzICovCi0JbXV0
ZXhfdAkJZF9sb2NrOwotCUxJU1RfSEVBRCgsIGRlbnRyeSkgZF9jaGlsZHJlbjsKLQlMSVNUX0VO
VFJZKGRlbnRyeSkgZF9jaGlsZHJlbl9saW5rOworCXN0cnVjdCB1a19saXN0X2hlYWQgZF9uYW1l
c19saW5rOyAvKiBsaW5rIGZvIHZub2RlOjpkX25hbWVzICovCisJc3RydWN0IHVrX211dGV4CWRf
bG9jazsKKwlzdHJ1Y3QgdWtfbGlzdF9oZWFkIGRfY2hpbGRfbGlzdDsKKwlzdHJ1Y3QgdWtfbGlz
dF9oZWFkIGRfY2hpbGRfbGluazsKIH07CiAKICNlbmRpZiAvKiBfT1NWX0RFTlRSWV9IICovCmRp
ZmYgLS1naXQgYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvbW91bnQuaCBiL2xpYi92ZnNj
b3JlL2luY2x1ZGUvdmZzY29yZS9tb3VudC5oCmluZGV4IGUxMmExMDM5Li43YTYzOGRiZSAxMDA2
NDQKLS0tIGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmgKKysrIGIvbGliL3Zm
c2NvcmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmgKQEAgLTUyLDYgKzUyLDcgQEAgc3RydWN0IG1v
dW50IHsKIAlzdHJ1Y3QgZGVudHJ5CSptX3Jvb3Q7CS8qIHJvb3Qgdm5vZGUgKi8KIAlzdHJ1Y3Qg
ZGVudHJ5CSptX2NvdmVyZWQ7CS8qIHZub2RlIGNvdmVyZWQgb24gcGFyZW50IGZzICovCiAJdm9p
ZAkJKm1fZGF0YTsJLyogcHJpdmF0ZSBkYXRhIGZvciBmcyAqLworCXN0cnVjdCB1a19saXN0X2hl
YWQgbW50X2xpc3Q7CiAJZnNpZF90IAkJbV9mc2lkOyAJLyogaWQgdGhhdCB1bmlxdWVseSBpZGVu
dGlmaWVzIHRoZSBmcyAqLwogfTsKIApkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92
ZnNjb3JlL3Zub2RlLmggYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUuaAppbmRl
eCA0OWZkNGQzNi4uYTRkYjljMTMgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZz
Y29yZS92bm9kZS5oCisrKyBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5oCkBA
IC00Nyw3ICs0Nyw3IEBACiBzdHJ1Y3QgdmZzb3BzOwogc3RydWN0IHZub3BzOwogc3RydWN0IHZu
b2RlOwotc3RydWN0IGZpbGU7CitzdHJ1Y3QgdmZzY29yZV9maWxlOwogCiAvKgogICogVm5vZGUg
dHlwZXMuCkBAIC03MCw3ICs3MCw3IEBAIGVudW0gdnR5cGUgewogICovCiBzdHJ1Y3Qgdm5vZGUg
ewogCXVpbnQ2NF90CXZfaW5vOwkJLyogaW5vZGUgbnVtYmVyICovCi0JTElTVF9FTlRSWSh2bm9k
ZSkgdl9saW5rOwkvKiBsaW5rIGZvciBoYXNoIGxpc3QgKi8KKwlzdHJ1Y3QgdWtfbGlzdF9oZWFk
IHZfbGluazsJLyogbGluayBmb3IgaGFzaCBsaXN0ICovCiAJc3RydWN0IG1vdW50CSp2X21vdW50
OwkvKiBtb3VudGVkIHZmcyBwb2ludGVyICovCiAJc3RydWN0IHZub3BzCSp2X29wOwkJLyogdm5v
ZGUgb3BlcmF0aW9ucyAqLwogCWludAkJdl9yZWZjbnQ7CS8qIHJlZmVyZW5jZSBjb3VudCAqLwpA
QCAtNzgsOSArNzgsOCBAQCBzdHJ1Y3Qgdm5vZGUgewogCWludAkJdl9mbGFnczsJLyogdm5vZGUg
ZmxhZyAqLwogCW1vZGVfdAkJdl9tb2RlOwkJLyogZmlsZSBtb2RlICovCiAJb2ZmX3QJCXZfc2l6
ZTsJCS8qIGZpbGUgc2l6ZSAqLwotCW11dGV4X3QJCXZfbG9jazsJCS8qIGxvY2sgZm9yIHRoaXMg
dm5vZGUgKi8KLQlMSVNUX0hFQUQoLCBkZW50cnkpIHZfbmFtZXM7CS8qIGRpcmVjdG9yeSBlbnRy
aWVzIHBvaW50aW5nIGF0IHRoaXMgKi8KLQlpbnQJCXZfbnJsb2NrczsJLyogbG9jayBjb3VudCAo
Zm9yIGRlYnVnKSAqLworCXN0cnVjdCB1a19tdXRleAl2X2xvY2s7CQkvKiBsb2NrIGZvciB0aGlz
IHZub2RlICovCisJc3RydWN0IHVrX2xpc3RfaGVhZCB2X25hbWVzOwkvKiBkaXJlY3RvcnkgZW50
cmllcyBwb2ludGluZyBhdCB0aGlzICovCiAJdm9pZAkJKnZfZGF0YTsJLyogcHJpdmF0ZSBkYXRh
IGZvciBmcyAqLwogfTsKIApAQCAtMTI3LDE0ICsxMjYsMTQgQEAgc3RydWN0IHZhdHRyIHsKICNk
ZWZpbmUgQVJDX0FDVElPTl9IT0xEICAgICAxCiAjZGVmaW5lIEFSQ19BQ1RJT05fUkVMRUFTRSAg
MgogCi10eXBlZGVmCWludCAoKnZub3Bfb3Blbl90KQkoc3RydWN0IGZpbGUgKik7Ci10eXBlZGVm
CWludCAoKnZub3BfY2xvc2VfdCkJKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTsKLXR5
cGVkZWYJaW50ICgqdm5vcF9yZWFkX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IGZpbGUgKiwg
c3RydWN0IHVpbyAqLCBpbnQpOwotdHlwZWRlZglpbnQgKCp2bm9wX3dyaXRlX3QpCShzdHJ1Y3Qg
dm5vZGUgKiwgc3RydWN0IHVpbyAqLCBpbnQpOwotdHlwZWRlZglpbnQgKCp2bm9wX3NlZWtfdCkJ
KHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgZmlsZSAqLCBvZmZfdCwgb2ZmX3QpOwotdHlwZWRlZglp
bnQgKCp2bm9wX2lvY3RsX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IGZpbGUgKiwgdV9sb25n
LCB2b2lkICopOwotdHlwZWRlZglpbnQgKCp2bm9wX2ZzeW5jX3QpCShzdHJ1Y3Qgdm5vZGUgKiwg
c3RydWN0IGZpbGUgKik7Ci10eXBlZGVmCWludCAoKnZub3BfcmVhZGRpcl90KQkoc3RydWN0IHZu
b2RlICosIHN0cnVjdCBmaWxlICosIHN0cnVjdCBkaXJlbnQgKik7Cit0eXBlZGVmCWludCAoKnZu
b3Bfb3Blbl90KQkoc3RydWN0IHZmc2NvcmVfZmlsZSAqKTsKK3R5cGVkZWYJaW50ICgqdm5vcF9j
bG9zZV90KQkoc3RydWN0IHZub2RlICosIHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKik7Cit0eXBlZGVm
CXNzaXplX3QgKCp2bm9wX3JlYWRfdCkJKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgdmZzY29yZV9m
aWxlICosIHN0cnVjdCB1aW8gKiwgaW50KTsKK3R5cGVkZWYJc3NpemVfdCAoKnZub3Bfd3JpdGVf
dCkJKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgdWlvICosIGludCk7Cit0eXBlZGVmCW9mZl90ICgq
dm5vcF9zZWVrX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHZmc2NvcmVfZmlsZSAqLCBvZmZf
dCwgb2ZmX3QpOwordHlwZWRlZglpbnQgKCp2bm9wX2lvY3RsX3QpCShzdHJ1Y3Qgdm5vZGUgKiwg
c3RydWN0IHZmc2NvcmVfZmlsZSAqLCB1bnNpZ25lZCBsb25nLCB2b2lkICopOwordHlwZWRlZglp
bnQgKCp2bm9wX2ZzeW5jX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHZmc2NvcmVfZmlsZSAq
KTsKK3R5cGVkZWYJaW50ICgqdm5vcF9yZWFkZGlyX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0
IHZmc2NvcmVfZmlsZSAqLCBzdHJ1Y3QgZGlyZW50ICopOwogdHlwZWRlZglpbnQgKCp2bm9wX2xv
b2t1cF90KQkoc3RydWN0IHZub2RlICosIGNoYXIgKiwgc3RydWN0IHZub2RlICoqKTsKIHR5cGVk
ZWYJaW50ICgqdm5vcF9jcmVhdGVfdCkJKHN0cnVjdCB2bm9kZSAqLCBjaGFyICosIG1vZGVfdCk7
CiB0eXBlZGVmCWludCAoKnZub3BfcmVtb3ZlX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHZu
b2RlICosIGNoYXIgKik7CkBAIC0xNDcsOCArMTQ2LDggQEAgdHlwZWRlZglpbnQgKCp2bm9wX3Nl
dGF0dHJfdCkJKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgdmF0dHIgKik7CiB0eXBlZGVmCWludCAo
KnZub3BfaW5hY3RpdmVfdCkJKHN0cnVjdCB2bm9kZSAqKTsKIHR5cGVkZWYJaW50ICgqdm5vcF90
cnVuY2F0ZV90KQkoc3RydWN0IHZub2RlICosIG9mZl90KTsKIHR5cGVkZWYJaW50ICgqdm5vcF9s
aW5rX3QpICAgICAgKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3Qgdm5vZGUgKiwgY2hhciAqKTsKLXR5
cGVkZWYgaW50ICgqdm5vcF9jYWNoZV90KSAoc3RydWN0IHZub2RlICosIHN0cnVjdCBmaWxlICos
IHN0cnVjdCB1aW8gKik7Ci10eXBlZGVmIGludCAoKnZub3BfZmFsbG9jYXRlX3QpIChzdHJ1Y3Qg
dm5vZGUgKiwgaW50LCBsb2ZmX3QsIGxvZmZfdCk7Cit0eXBlZGVmIGludCAoKnZub3BfY2FjaGVf
dCkgKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgdmZzY29yZV9maWxlICosIHN0cnVjdCB1aW8gKik7
Cit0eXBlZGVmIGludCAoKnZub3BfZmFsbG9jYXRlX3QpIChzdHJ1Y3Qgdm5vZGUgKiwgaW50LCBv
ZmZfdCwgb2ZmX3QpOwogdHlwZWRlZiBpbnQgKCp2bm9wX3JlYWRsaW5rX3QpICAoc3RydWN0IHZu
b2RlICosIHN0cnVjdCB1aW8gKik7CiB0eXBlZGVmIGludCAoKnZub3Bfc3ltbGlua190KSAgIChz
dHJ1Y3Qgdm5vZGUgKiwgY2hhciAqLCBjaGFyICopOwogCmRpZmYgLS1naXQgYS9saWIvdmZzY29y
ZS9sb29rdXAuYyBiL2xpYi92ZnNjb3JlL2xvb2t1cC5jCmluZGV4IDk4MzdlODFmLi4xZTJjNDAw
NSAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvbG9va3VwLmMKKysrIGIvbGliL3Zmc2NvcmUvbG9v
a3VwLmMKQEAgLTExMSw3ICsxMTEsNyBAQCBuYW1laShjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3Qg
ZGVudHJ5ICoqZHBwKQogCXN0cnVjdCB2bm9kZSAqZHZwLCAqdnA7CiAJaW50IGVycm9yLCBpOwog
CWludCBsaW5rc19mb2xsb3dlZDsKLQlib29sIG5lZWRfY29udGludWU7CisJaW50IG5lZWRfY29u
dGludWU7CiAKIAlEUFJJTlRGKFZGU0RCX1ZOT0RFLCAoIm5hbWVpOiBwYXRoPSVzXG4iLCBwYXRo
KSk7CiAKQEAgLTExOSw3ICsxMTksNyBAQCBuYW1laShjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3Qg
ZGVudHJ5ICoqZHBwKQogCXN0cmxjcHkoZnAsIHBhdGgsIFBBVEhfTUFYKTsKIAogCWRvIHsKLQkJ
bmVlZF9jb250aW51ZSA9IGZhbHNlOworCQluZWVkX2NvbnRpbnVlID0gMDsKIAkJLyoKIAkJICog
Q29udmVydCBhIGZ1bGwgcGF0aCBuYW1lIHRvIGl0cyBtb3VudCBwb2ludCBhbmQKIAkJICogdGhl
IGxvY2FsIG5vZGUgaW4gdGhlIGZpbGUgc3lzdGVtLgpAQCAtMTQzLDcgKzE0Myw3IEBAIG5hbWVp
KGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBkZW50cnkgKipkcHApCiAJCSAqLwogCQlkZHAgPSBt
cC0+bV9yb290OwogCQlpZiAoIWRkcCkgewotCQkJc3lzX3BhbmljKCJWRlM6IG5vIHJvb3QiKTsK
KwkJCVVLX0NSQVNIKCJWRlM6IG5vIHJvb3QiKTsKIAkJfQogCQlkcmVmKGRkcCk7CiAKQEAgLTE3
Nyw3ICsxNzcsNyBAQCBuYW1laShjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3QgZGVudHJ5ICoqZHBw
KQogCQkJZHZwID0gZGRwLT5kX3Zub2RlOwogCQkJdm5fbG9jayhkdnApOwogCQkJZHAgPSBkZW50
cnlfbG9va3VwKG1wLCBub2RlKTsKLQkJCWlmIChkcCA9PSBudWxscHRyKSB7CisJCQlpZiAoZHAg
PT0gTlVMTCkgewogCQkJCS8qIEZpbmQgYSB2bm9kZSBpbiB0aGlzIGRpcmVjdG9yeS4gKi8KIAkJ
CQllcnJvciA9IFZPUF9MT09LVVAoZHZwLCBuYW1lLCAmdnApOwogCQkJCWlmIChlcnJvcikgewpA
QCAtMjA5LDE3ICsyMDksMTcgQEAgbmFtZWkoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IGRlbnRy
eSAqKmRwcCkKIAkJCQlkcmVsZShkcCk7CiAKIAkJCQlwICAgICAgID0gZnA7Ci0JCQkJZHAgICAg
ICA9IG51bGxwdHI7Ci0JCQkJZGRwICAgICA9IG51bGxwdHI7Ci0JCQkJdnAgICAgICA9IG51bGxw
dHI7Ci0JCQkJZHZwICAgICA9IG51bGxwdHI7CisJCQkJZHAgICAgICA9IE5VTEw7CisJCQkJZGRw
ICAgICA9IE5VTEw7CisJCQkJdnAgICAgICA9IE5VTEw7CisJCQkJZHZwICAgICA9IE5VTEw7CiAJ
CQkJbmFtZVswXSA9IDA7CiAJCQkJbm9kZVswXSA9IDA7CiAKIAkJCQlpZiAoKytsaW5rc19mb2xs
b3dlZCA+PSBNQVhTWU1MSU5LUykgewogCQkJCQlyZXR1cm4gKEVMT09QKTsKIAkJCQl9Ci0JCQkJ
bmVlZF9jb250aW51ZSA9IHRydWU7CisJCQkJbmVlZF9jb250aW51ZSA9IDE7CiAJCQkJYnJlYWs7
CiAJCQl9CiAKQEAgLTIyOCw3ICsyMjgsNyBAQCBuYW1laShjb25zdCBjaGFyICpwYXRoLCBzdHJ1
Y3QgZGVudHJ5ICoqZHBwKQogCQkJCXJldHVybiBFTk9URElSOwogCQkJfQogCQl9Ci0JfSB3aGls
ZSAobmVlZF9jb250aW51ZSA9PSB0cnVlKTsKKwl9IHdoaWxlIChuZWVkX2NvbnRpbnVlKTsKIAog
CSpkcHAgPSBkcDsKIAlyZXR1cm4gMDsKQEAgLTI1MywxNCArMjUzLDE0IEBAIG5hbWVpX2xhc3Rf
bm9mb2xsb3coY2hhciAqcGF0aCwgc3RydWN0IGRlbnRyeSAqZGRwLCBzdHJ1Y3QgZGVudHJ5ICoq
ZHBwKQogCXN0cnVjdCB2bm9kZSAgKnZwOwogCWNoYXIgbm9kZVtQQVRIX01BWF07CiAKLQlkdnAg
ID0gbnVsbHB0cjsKKwlkdnAgID0gTlVMTDsKIAogCWlmIChwYXRoWzBdICE9ICcvJykgewogCQly
ZXR1cm4gKEVOT1RESVIpOwogCX0KIAogCW5hbWUgPSBzdHJyY2hyKHBhdGgsICcvJyk7Ci0JaWYg
KG5hbWUgPT0gbnVsbHB0cikgeworCWlmIChuYW1lID09IE5VTEwpIHsKIAkJcmV0dXJuIChFTk9F
TlQpOwogCX0KIAluYW1lKys7CkBAIC0yODMsNyArMjgzLDcgQEAgbmFtZWlfbGFzdF9ub2ZvbGxv
dyhjaGFyICpwYXRoLCBzdHJ1Y3QgZGVudHJ5ICpkZHAsIHN0cnVjdCBkZW50cnkgKipkcHApCiAJ
ZHZwID0gZGRwLT5kX3Zub2RlOwogCXZuX2xvY2soZHZwKTsKIAlkcCA9IGRlbnRyeV9sb29rdXAo
bXAsIG5vZGUpOwotCWlmIChkcCA9PSBudWxscHRyKSB7CisJaWYgKGRwID09IE5VTEwpIHsKIAkJ
ZXJyb3IgPSBWT1BfTE9PS1VQKGR2cCwgbmFtZSwgJnZwKTsKIAkJaWYgKGVycm9yICE9IDApIHsK
IAkJCWdvdG8gb3V0OwpAQCAtMjkyLDcgKzI5Miw3IEBAIG5hbWVpX2xhc3Rfbm9mb2xsb3coY2hh
ciAqcGF0aCwgc3RydWN0IGRlbnRyeSAqZGRwLCBzdHJ1Y3QgZGVudHJ5ICoqZHBwKQogCQlkcCA9
IGRlbnRyeV9hbGxvYyhkZHAsIHZwLCBub2RlKTsKIAkJdnB1dCh2cCk7CiAKLQkJaWYgKGRwID09
IG51bGxwdHIpIHsKKwkJaWYgKGRwID09IE5VTEwpIHsKIAkJCWVycm9yID0gRU5PTUVNOwogCQkJ
Z290byBvdXQ7CiAJCX0KQEAgLTMwMSw3ICszMDEsNyBAQCBuYW1laV9sYXN0X25vZm9sbG93KGNo
YXIgKnBhdGgsIHN0cnVjdCBkZW50cnkgKmRkcCwgc3RydWN0IGRlbnRyeSAqKmRwcCkKIAkqZHBw
ICA9IGRwOwogCWVycm9yID0gMDsKIG91dDoKLQlpZiAoZHZwICE9IG51bGxwdHIpIHsKKwlpZiAo
ZHZwICE9IE5VTEwpIHsKIAkJdm5fdW5sb2NrKGR2cCk7CiAJfQogCXJldHVybiAoZXJyb3IpOwpk
aWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvbWFpbi5jIGIvbGliL3Zmc2NvcmUvbWFpbi5jCmluZGV4
IDkwZGYzZDcxLi44MmU0NTkxNyAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvbWFpbi5jCisrKyBi
L2xpYi92ZnNjb3JlL21haW4uYwpAQCAtNzksNyArNzksNyBAQCBpbnQgb3Blbihjb25zdCBjaGFy
ICpwYXRobmFtZSwgaW50IGZsYWdzLCAuLi4pCiAKIAlzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFz
azsKIAljaGFyIHBhdGhbUEFUSF9NQVhdOwotCXN0cnVjdCBmaWxlICpmcDsKKwlzdHJ1Y3QgdmZz
Y29yZV9maWxlICpmcDsKIAlpbnQgZmQsIGVycm9yOwogCWludCBhY2M7CiAKQEAgLTEzNSw3ICsx
MzUsNyBAQCBpbnQgb3BlbmF0KGludCBkaXJmZCwgY29uc3QgY2hhciAqcGF0aG5hbWUsIGludCBm
bGFncywgLi4uKQogCQlyZXR1cm4gb3BlbihwYXRobmFtZSwgZmxhZ3MsIG1vZGUpOwogCX0KIAot
CXN0cnVjdCBmaWxlICpmcDsKKwlzdHJ1Y3QgdmZzY29yZV9maWxlICpmcDsKIAlpbnQgZXJyb3Ig
PSBmZ2V0KGRpcmZkLCAmZnApOwogCWlmIChlcnJvcikgewogCQllcnJubyA9IGVycm9yOwpAQCAt
MTk3LDcgKzE5Nyw3IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX21rbm9kX2VyciwgIiVkIiwgaW50
KTsKIAogaW50IF9feG1rbm9kKGludCB2ZXIsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBtb2RlX3Qg
bW9kZSwgZGV2X3QgKmRldikKIHsKLQlhc3NlcnQodmVyID09IDApOyAvLyBPbiB4ODYtNjQgTGlu
dXgsIF9NS05PRF9WRVJfTElOVVggaXMgMC4KKwlVS19BU1NFUlQodmVyID09IDApOyAvLyBPbiB4
ODYtNjQgTGludXgsIF9NS05PRF9WRVJfTElOVVggaXMgMC4KIAlzdHJ1Y3QgdGFzayAqdCA9IG1h
aW5fdGFzazsKIAljaGFyIHBhdGhbUEFUSF9NQVhdOwogCWludCBlcnJvcjsKQEAgLTIzMSw3ICsy
MzEsNyBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19sc2Vla19lcnIsICIlZCIsIGludCk7CiAKIG9m
Zl90IGxzZWVrKGludCBmZCwgb2ZmX3Qgb2Zmc2V0LCBpbnQgd2hlbmNlKQogewotCXN0cnVjdCBm
aWxlICpmcDsKKwlzdHJ1Y3QgdmZzY29yZV9maWxlICpmcDsKIAlvZmZfdCBvcmc7CiAJaW50IGVy
cm9yOwogCkBAIC0yNjUsMTEgKzI2NSwxMiBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19wcmVhZF9l
cnIsICIlZCIsIGludCk7CiAvLyAqYW5kKiBhIG5vbi16ZXJvIG51bWJlciBvZiB3cml0dGVuIGJ5
dGVzLiBJbiB0aGF0IGNhc2UsIHdlIG5lZWQgdG8gemVybyB0aGUKIC8vIGVycm9yLCBzbyB0aGUg
c3lzdGVtIGNhbGwgYXBwZWFyIGEgc3VjY2Vzc2Z1bCBwYXJ0aWFsIHJlYWQvd3JpdGUuCiAvLyBJ
biBGcmVlQlNELCBkb2ZpbGV3cml0ZSgpIGFuZCBkb2ZpbGVyZWFkKCkgKHN5c19nZW5lcmljLmMp
IGRvIHRoaXMgdG9vLgotc3RhdGljIGlubGluZSBib29sIGhhc19lcnJvcihpbnQgZXJyb3IsIGlu
dCBieXRlcykKK3N0YXRpYyBpbmxpbmUgaW50IGhhc19lcnJvcihpbnQgZXJyb3IsIGludCBieXRl
cykKIHsKKwkvKiBUT0RPOiBPU3YgY2hlY2tzIGFsc28gZm9yIEVSRVNUQVJUICovCiAJcmV0dXJu
IGVycm9yICYmICgKIAkJCShieXRlcyA9PSAwKSB8fAotCQkJKGVycm9yICE9IEVXT1VMREJMT0NL
ICYmIGVycm9yICE9IEVJTlRSICYmIGVycm9yICE9IEVSRVNUQVJUKSk7CisJCQkoZXJyb3IgIT0g
RVdPVUxEQkxPQ0sgJiYgZXJyb3IgIT0gRUlOVFIpKTsKIH0KIAogCkBAIC0yODAsNyArMjgxLDcg
QEAgc3NpemVfdCBwcmVhZChpbnQgZmQsIHZvaWQgKmJ1Ziwgc2l6ZV90IGNvdW50LCBvZmZfdCBv
ZmZzZXQpCiAJCQkuaW92X2Jhc2UJPSBidWYsCiAJCQkuaW92X2xlbgk9IGNvdW50LAogCX07Ci0J
c3RydWN0IGZpbGUgKmZwOworCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwOwogCXNpemVfdCBieXRl
czsKIAlpbnQgZXJyb3I7CiAKQEAgLTMyMCw3ICszMjEsNyBAQCBzc2l6ZV90IHB3cml0ZShpbnQg
ZmQsIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGNvdW50LCBvZmZfdCBvZmZzZXQpCiAJCQkuaW92
X2Jhc2UJPSAodm9pZCAqKWJ1ZiwKIAkJCS5pb3ZfbGVuCT0gY291bnQsCiAJfTsKLQlzdHJ1Y3Qg
ZmlsZSAqZnA7CisJc3RydWN0IHZmc2NvcmVfZmlsZSAqZnA7CiAJc2l6ZV90IGJ5dGVzOwogCWlu
dCBlcnJvcjsKIApAQCAtMzUxLDcgKzM1Miw3IEBAIHNzaXplX3Qgd3JpdGUoaW50IGZkLCBjb25z
dCB2b2lkICpidWYsIHNpemVfdCBjb3VudCkKIAogc3NpemVfdCBwcmVhZHYoaW50IGZkLCBjb25z
dCBzdHJ1Y3QgaW92ZWMgKmlvdiwgaW50IGlvdmNudCwgb2ZmX3Qgb2Zmc2V0KQogewotCXN0cnVj
dCBmaWxlICpmcDsKKwlzdHJ1Y3QgdmZzY29yZV9maWxlICpmcDsKIAlzaXplX3QgYnl0ZXM7CiAJ
aW50IGVycm9yOwogCkBAIC0zODQsNyArMzg1LDcgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfcHdy
aXRldl9lcnIsICIlZCIsIGludCk7CiAKIHNzaXplX3QgcHdyaXRldihpbnQgZmQsIGNvbnN0IHN0
cnVjdCBpb3ZlYyAqaW92LCBpbnQgaW92Y250LCBvZmZfdCBvZmZzZXQpCiB7Ci0Jc3RydWN0IGZp
bGUgKmZwOworCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwOwogCXNpemVfdCBieXRlczsKIAlpbnQg
ZXJyb3I7CiAKQEAgLTQxOSw3ICs0MjAsNyBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19pb2N0bF9l
cnIsICIlZCIsIGludCk7CiAKIGludCBpb2N0bChpbnQgZmQsIHVuc2lnbmVkIGxvbmcgaW50IHJl
cXVlc3QsIC4uLikKIHsKLQlzdHJ1Y3QgZmlsZSAqZnA7CisJc3RydWN0IHZmc2NvcmVfZmlsZSAq
ZnA7CiAJaW50IGVycm9yOwogCXZhX2xpc3QgYXA7CiAJdm9pZCogYXJnOwpAQCAtNDU2LDcgKzQ1
Nyw3IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2ZzeW5jX2VyciwgIiVkIiwgaW50KTsKIAogaW50
IGZzeW5jKGludCBmZCkKIHsKLQlzdHJ1Y3QgZmlsZSAqZnA7CisJc3RydWN0IHZmc2NvcmVfZmls
ZSAqZnA7CiAJaW50IGVycm9yOwogCiAJdHJhY2VfdmZzX2ZzeW5jKGZkKTsKQEAgLTQ5MCw3ICs0
OTEsNyBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19mc3RhdF9lcnIsICIlZCIsIGludCk7CiAKIGlu
dCBfX2Z4c3RhdChpbnQgdmVyLCBpbnQgZmQsIHN0cnVjdCBzdGF0ICpzdCkKIHsKLQlzdHJ1Y3Qg
ZmlsZSAqZnA7CisJc3RydWN0IHZmc2NvcmVfZmlsZSAqZnA7CiAJaW50IGVycm9yOwogCiAJdHJh
Y2VfdmZzX2ZzdGF0KGZkLCBzdCk7CkBAIC01MjYsNyArNTI3LDcgQEAgaW50IF9fZnhzdGF0YXQo
aW50IHZlciwgaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwgc3RydWN0IHN0YXQgKnN0
LAogCQlpbnQgZmxhZ3MpCiB7CiAJaWYgKGZsYWdzICYgQVRfU1lNTElOS19OT0ZPTExPVykgewot
CQlVTklNUExFTUVOVEVEKCJmc3RhdGF0KCkgd2l0aCBBVF9TWU1MSU5LX05PRk9MTE9XIik7CisJ
CVVLX0NSQVNIKCJVTklNUExFTUVOVEVEOiBmc3RhdGF0KCkgd2l0aCBBVF9TWU1MSU5LX05PRk9M
TE9XIik7CiAJfQogCiAJaWYgKHBhdGhuYW1lWzBdID09ICcvJyB8fCBkaXJmZCA9PSBBVF9GRENX
RCkgewpAQCAtNTM4LDcgKzUzOSw3IEBAIGludCBfX2Z4c3RhdGF0KGludCB2ZXIsIGludCBkaXJm
ZCwgY29uc3QgY2hhciAqcGF0aG5hbWUsIHN0cnVjdCBzdGF0ICpzdCwKIAkJcmV0dXJuIGZzdGF0
KGRpcmZkLCBzdCk7CiAJfQogCi0Jc3RydWN0IGZpbGUgKmZwOworCXN0cnVjdCB2ZnNjb3JlX2Zp
bGUgKmZwOwogCWludCBlcnJvciA9IGZnZXQoZGlyZmQsICZmcCk7CiAJaWYgKGVycm9yKSB7CiAJ
CWVycm5vID0gZXJyb3I7CkBAIC01NzQsNyArNTc1LDkgQEAgTEZTNjQoZnN0YXRhdCk7CiAKIGlu
dCBmbG9jayhpbnQgZmQsIGludCBvcGVyYXRpb24pCiB7Ci0JaWYgKCFmaWxlcmVmX2Zyb21fZmQo
ZmQpKSB7CisJc3RydWN0IHZmc2NvcmVfZmlsZSAqZmlsZTsKKworCWlmICghZmdldChmZCwgJmZp
bGUpKSB7CiAJCXJldHVybiBsaWJjX2Vycm9yKEVCQURGKTsKIAl9CiAKQEAgLTU5Miw3ICs1OTUs
NyBAQCBpbnQgZmxvY2soaW50IGZkLCBpbnQgb3BlcmF0aW9uKQogCXJldHVybiAwOwogfQogCi1U
UkFDRVBPSU5UKHRyYWNlX3Zmc19yZWFkZGlyLCAiJWQgJXAiLCBpbnQsIGRpcmVudCopOworVFJB
Q0VQT0lOVCh0cmFjZV92ZnNfcmVhZGRpciwgIiVkICVwIiwgaW50LCBzdHJ1Y3QgZGlyZW50Kik7
CiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19yZWFkZGlyX3JldCwgIiIpOwogVFJBQ0VQT0lOVCh0cmFj
ZV92ZnNfcmVhZGRpcl9lcnIsICIlZCIsIGludCk7CiAKQEAgLTYxMSw3ICs2MTQsNyBAQCBESVIg
Km9wZW5kaXIoY29uc3QgY2hhciAqcGF0aCkKIAlkaXItPmZkID0gb3BlbihwYXRoLCBPX1JET05M
WSk7CiAJaWYgKGRpci0+ZmQgPCAwKSB7CiAJCWZyZWUoZGlyKTsKLQkJcmV0dXJuIG51bGxwdHI7
CisJCXJldHVybiBOVUxMOwogCX0KIAlyZXR1cm4gZGlyOwogfQpAQCAtNjIxLDExICs2MjQsMTEg
QEAgRElSICpmZG9wZW5kaXIoaW50IGZkKQogCURJUiAqZGlyOwogCXN0cnVjdCBzdGF0IHN0Owog
CWlmIChmc3RhdChmZCwgJnN0KSA8IDApIHsKLQkJcmV0dXJuIG51bGxwdHI7CisJCXJldHVybiBO
VUxMOwogCX0KIAlpZiAoIVNfSVNESVIoc3Quc3RfbW9kZSkpIHsKIAkJZXJybm8gPSBFTk9URElS
OwotCQlyZXR1cm4gbnVsbHB0cjsKKwkJcmV0dXJuIE5VTEw7CiAJfQogCWRpciA9IG1hbGxvYyhz
aXplb2YoKmRpcikpOwogCWlmICghZGlyKSB7CkBAIC02NjksMTMgKzY3MiwxMSBAQCBzdHJ1Y3Qg
ZGlyZW50ICpyZWFkZGlyKERJUiAqZGlyKQogaW50IHJlYWRkaXJfcihESVIgKmRpciwgc3RydWN0
IGRpcmVudCAqZW50cnksIHN0cnVjdCBkaXJlbnQgKipyZXN1bHQpCiB7CiAJaW50IGVycm9yOwot
CXN0cnVjdCBmaWxlICpmcDsKKwlzdHJ1Y3QgdmZzY29yZV9maWxlICpmcDsKIAogCXRyYWNlX3Zm
c19yZWFkZGlyKGRpci0+ZmQsIGVudHJ5KTsKIAllcnJvciA9IGZnZXQoZGlyLT5mZCwgJmZwKTsK
LQlpZiAoZXJyb3IpIHsKLQkJdHJhY2VfdmZzX3JlYWRkaXJfZXJyKGVycm9yKTsKLQl9IGVsc2Ug
eworCWlmICghZXJyb3IpIHsKIAkJZXJyb3IgPSBzeXNfcmVhZGRpcihmcCwgZW50cnkpOwogCQlm
ZHJvcChmcCk7CiAJCWlmIChlcnJvcikgewpAQCAtNjg4LDcgKzY4OSw3IEBAIGludCByZWFkZGly
X3IoRElSICpkaXIsIHN0cnVjdCBkaXJlbnQgKmVudHJ5LCBzdHJ1Y3QgZGlyZW50ICoqcmVzdWx0
KQogCWVudHJ5LT5kX3JlY2xlbiA9IHNpemVvZigqZW50cnkpOwogCiAJaWYgKGVycm9yKSB7Ci0J
CSpyZXN1bHQgPSBudWxscHRyOworCQkqcmVzdWx0ID0gTlVMTDsKIAl9IGVsc2UgewogCQkqcmVz
dWx0ID0gZW50cnk7CiAJfQpAQCAtNzA2LDcgKzcwNyw3IEBAIHN0cnVjdCBkaXJlbnQgKnJlYWRk
aXI2NChESVIgKmRpcikgX19hdHRyaWJ1dGVfXygoYWxpYXMoInJlYWRkaXIiKSkpOwogCiB2b2lk
IHJld2luZGRpcihESVIgKmRpcnApCiB7Ci0Jc3RydWN0IGZpbGUgKmZwOworCXN0cnVjdCB2ZnNj
b3JlX2ZpbGUgKmZwOwogCiAJaW50IGVycm9yID0gZmdldChkaXJwLT5mZCwgJmZwKTsKIAlpZiAo
ZXJyb3IpIHsKQEAgLTcyMiw3ICs3MjMsNyBAQCB2b2lkIHJld2luZGRpcihESVIgKmRpcnApCiAK
IGxvbmcgdGVsbGRpcihESVIgKmRpcnApCiB7Ci0Jc3RydWN0IGZpbGUgKmZwOworCXN0cnVjdCB2
ZnNjb3JlX2ZpbGUgKmZwOwogCWludCBlcnJvciA9IGZnZXQoZGlycC0+ZmQsICZmcCk7CiAJaWYg
KGVycm9yKSB7CiAJCXJldHVybiBsaWJjX2Vycm9yKGVycm9yKTsKQEAgLTczOSw3ICs3NDAsNyBA
QCBsb25nIHRlbGxkaXIoRElSICpkaXJwKQogCiB2b2lkIHNlZWtkaXIoRElSICpkaXJwLCBsb25n
IGxvYykKIHsKLQlzdHJ1Y3QgZmlsZSAqZnA7CisJc3RydWN0IHZmc2NvcmVfZmlsZSAqZnA7CiAJ
aW50IGVycm9yID0gZmdldChkaXJwLT5mZCwgJmZwKTsKIAlpZiAoZXJyb3IpIHsKIAkJLy8gUE9T
SVggc3BlY2lmaWVzIHNlZWtkaXIoKSBjYW5ub3QgcmV0dXJuIGVycm9ycy4KQEAgLTc5MCw3ICs3
OTEsNyBAQCBpbnQgcm1kaXIoY29uc3QgY2hhciAqcGF0aG5hbWUpCiAKIAl0cmFjZV92ZnNfcm1k
aXIocGF0aG5hbWUpOwogCWVycm9yID0gRU5PRU5UOwotCWlmIChwYXRobmFtZSA9PSBudWxscHRy
KQorCWlmIChwYXRobmFtZSA9PSBOVUxMKQogCQlnb3RvIG91dF9lcnJubzsKIAlpZiAoKGVycm9y
ID0gdGFza19jb252KHQsIHBhdGhuYW1lLCBWV1JJVEUsIHBhdGgpKSAhPSAwKQogCQlnb3RvIG91
dF9lcnJubzsKQEAgLTgyNiw5ICs4MjcsOSBAQCBnZXRfbGFzdF9jb21wb25lbnQoY29uc3QgY2hh
ciAqcGF0aCwgY2hhciAqZHN0KQogCWRzdFtsZW5dID0gMDsKIH0KIAotc3RhdGljIGJvb2wgbnVs
bF9vcl9lbXB0eShjb25zdCBjaGFyICpzdHIpCitzdGF0aWMgaW50IG51bGxfb3JfZW1wdHkoY29u
c3QgY2hhciAqc3RyKQogewotCXJldHVybiBzdHIgPT0gbnVsbHB0ciB8fCAqc3RyID09ICdcMCc7
CisJcmV0dXJuIHN0ciA9PSBOVUxMIHx8ICpzdHIgPT0gJ1wwJzsKIH0KIAogVFJBQ0VQT0lOVCh0
cmFjZV92ZnNfcmVuYW1lLCAiXCIlc1wiIFwiJXNcIiIsIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFy
Kik7CkBAIC04ODMsNyArODg0LDcgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfY2hkaXJfZXJyLCAi
JWQiLCBpbnQpOwogc3RhdGljIGludAogX19kb19mY2hkaXIoc3RydWN0IHZmc2NvcmVfZmlsZSAq
ZnAsIHN0cnVjdCB0YXNrICp0KQogewotCXN0cnVjdCBmaWxlICpvbGQgPSBudWxscHRyOworCXN0
cnVjdCB2ZnNjb3JlX2ZpbGUgKm9sZCA9IE5VTEw7CiAKIAlVS19BU1NFUlQodCk7CiAKQEAgLTkw
NywxMSArOTA4LDExIEBAIGludCBjaGRpcihjb25zdCBjaGFyICpwYXRobmFtZSkKIAl0cmFjZV92
ZnNfY2hkaXIocGF0aG5hbWUpOwogCXN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOwogCWNoYXIg
cGF0aFtQQVRIX01BWF07Ci0Jc3RydWN0IGZpbGUgKmZwOworCXN0cnVjdCB2ZnNjb3JlX2ZpbGUg
KmZwOwogCWludCBlcnJvcjsKIAogCWVycm9yID0gRU5PRU5UOwotCWlmIChwYXRobmFtZSA9PSBu
dWxscHRyKQorCWlmIChwYXRobmFtZSA9PSBOVUxMKQogCQlnb3RvIG91dF9lcnJubzsKIAogCWlm
ICgoZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5hbWUsIFZSRUFELCBwYXRoKSkgIT0gMCkKQEAg
LTk0NSw3ICs5NDYsNyBAQCBpbnQgZmNoZGlyKGludCBmZCkKIHsKIAl0cmFjZV92ZnNfZmNoZGly
KGZkKTsKIAlzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKLQlzdHJ1Y3QgZmlsZSAqZnA7CisJ
c3RydWN0IHZmc2NvcmVfZmlsZSAqZnA7CiAJaW50IGVycm9yOwogCiAJZXJyb3IgPSBmZ2V0KGZk
LCAmZnApOwpAQCAtOTgxLDcgKzk4Miw3IEBAIGludCBsaW5rKGNvbnN0IGNoYXIgKm9sZHBhdGgs
IGNvbnN0IGNoYXIgKm5ld3BhdGgpCiAJdHJhY2VfdmZzX2xpbmsob2xkcGF0aCwgbmV3cGF0aCk7
CiAKIAllcnJvciA9IEVOT0VOVDsKLQlpZiAob2xkcGF0aCA9PSBudWxscHRyIHx8IG5ld3BhdGgg
PT0gbnVsbHB0cikKKwlpZiAob2xkcGF0aCA9PSBOVUxMIHx8IG5ld3BhdGggPT0gTlVMTCkKIAkJ
Z290byBvdXRfZXJybm87CiAJaWYgKChlcnJvciA9IHRhc2tfY29udih0LCBvbGRwYXRoLCBWV1JJ
VEUsIHBhdGgxKSkgIT0gMCkKIAkJZ290byBvdXRfZXJybm87CkBAIC0xMDExLDcgKzEwMTIsNyBA
QCBpbnQgc3ltbGluayhjb25zdCBjaGFyICpvbGRwYXRoLCBjb25zdCBjaGFyICpuZXdwYXRoKQog
CXRyYWNlX3Zmc19zeW1saW5rKG9sZHBhdGgsIG5ld3BhdGgpOwogCiAJZXJyb3IgPSBFTk9FTlQ7
Ci0JaWYgKG9sZHBhdGggPT0gbnVsbHB0ciB8fCBuZXdwYXRoID09IG51bGxwdHIpIHsKKwlpZiAo
b2xkcGF0aCA9PSBOVUxMIHx8IG5ld3BhdGggPT0gTlVMTCkgewogCQllcnJubyA9IEVOT0VOVDsK
IAkJdHJhY2VfdmZzX3N5bWxpbmtfZXJyKGVycm9yKTsKIAkJcmV0dXJuICgtMSk7CkBAIC0xMDQw
LDcgKzEwNDEsNyBAQCBpbnQgdW5saW5rKGNvbnN0IGNoYXIgKnBhdGhuYW1lKQogCWludCBlcnJv
cjsKIAogCWVycm9yID0gRU5PRU5UOwotCWlmIChwYXRobmFtZSA9PSBudWxscHRyKQorCWlmIChw
YXRobmFtZSA9PSBOVUxMKQogCQlnb3RvIG91dF9lcnJubzsKIAlpZiAoKGVycm9yID0gdGFza19j
b252KHQsIHBhdGhuYW1lLCBWV1JJVEUsIHBhdGgpKSAhPSAwKQogCQlnb3RvIG91dF9lcnJubzsK
QEAgLTExNTYsNyArMTE1Nyw3IEBAIGludCBfX3N0YXRmcyhjb25zdCBjaGFyICpwYXRobmFtZSwg
c3RydWN0IHN0YXRmcyAqYnVmKQogCWVycm5vID0gZXJyb3I7CiAJcmV0dXJuIC0xOwogfQotd2Vh
a19hbGlhcyhfX3N0YXRmcywgc3RhdGZzKTsKK19fd2Vha19hbGlhcyhfX3N0YXRmcywgc3RhdGZz
KTsKIAogTEZTNjQoc3RhdGZzKTsKIApAQCAtMTE2Niw3ICsxMTY3LDcgQEAgVFJBQ0VQT0lOVCh0
cmFjZV92ZnNfZnN0YXRmc19lcnIsICIlZCIsIGludCk7CiAKIGludCBfX2ZzdGF0ZnMoaW50IGZk
LCBzdHJ1Y3Qgc3RhdGZzICpidWYpCiB7Ci0Jc3RydWN0IGZpbGUgKmZwOworCXN0cnVjdCB2ZnNj
b3JlX2ZpbGUgKmZwOwogCWludCBlcnJvcjsKIAogCXRyYWNlX3Zmc19mc3RhdGZzKGZkLCBidWYp
OwpAQCAtMTE4Nyw3ICsxMTg4LDcgQEAgaW50IF9fZnN0YXRmcyhpbnQgZmQsIHN0cnVjdCBzdGF0
ZnMgKmJ1ZikKIAllcnJubyA9IGVycm9yOwogCXJldHVybiAtMTsKIH0KLXdlYWtfYWxpYXMoX19m
c3RhdGZzLCBmc3RhdGZzKTsKK19fd2Vha19hbGlhcyhfX2ZzdGF0ZnMsIGZzdGF0ZnMpOwogCiBM
RlM2NChmc3RhdGZzKTsKIApAQCAtMTI0MSw3ICsxMjQyLDcgQEAgY2hhciAqZ2V0Y3dkKGNoYXIg
KnBhdGgsIHNpemVfdCBzaXplKQogewogCXRyYWNlX3Zmc19nZXRjd2QocGF0aCwgc2l6ZSk7CiAJ
c3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7Ci0JaW50IGxlbiA9IHN0cmxlbih0LT50X2N3ZCkg
KyAxOworCXNpemVfdCBsZW4gPSBzdHJsZW4odC0+dF9jd2QpICsgMTsKIAlpbnQgZXJyb3I7CiAK
IAlpZiAoIXBhdGgpIHsKQEAgLTEyNzEsNyArMTI3Miw3IEBAIGNoYXIgKmdldGN3ZChjaGFyICpw
YXRoLCBzaXplX3Qgc2l6ZSkKIAlvdXRfZXJybm86CiAJdHJhY2VfdmZzX2dldGN3ZF9lcnIoZXJy
b3IpOwogCWVycm5vID0gZXJyb3I7Ci0JcmV0dXJuIG51bGxwdHI7CisJcmV0dXJuIE5VTEw7CiB9
CiAKIFRSQUNFUE9JTlQodHJhY2VfdmZzX2R1cCwgIiVkIiwgaW50KTsKQEAgLTEyODIsNyArMTI4
Myw3IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2R1cF9lcnIsICIlZCIsIGludCk7CiAgKi8KIGlu
dCBkdXAoaW50IG9sZGZkKQogewotCXN0cnVjdCBmaWxlICpmcDsKKwlzdHJ1Y3QgdmZzY29yZV9m
aWxlICpmcDsKIAlpbnQgbmV3ZmQ7CiAJaW50IGVycm9yOwogCkBAIC0xMzE1LDcgKzEzMTYsNyBA
QCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19kdXAzX2VyciwgIiVkIiwgaW50KTsKICAqLwogaW50IGR1
cDMoaW50IG9sZGZkLCBpbnQgbmV3ZmQsIGludCBmbGFncykKIHsKLQlzdHJ1Y3QgZmlsZSAqZnA7
CisJc3RydWN0IHZmc2NvcmVfZmlsZSAqZnA7CiAJaW50IGVycm9yOwogCiAJdHJhY2VfdmZzX2R1
cDMob2xkZmQsIG5ld2ZkLCBmbGFncyk7CkBAIC0xMzM3LDcgKzEzMzgsNyBAQCBpbnQgZHVwMyhp
bnQgb2xkZmQsIGludCBuZXdmZCwgaW50IGZsYWdzKQogCWlmIChlcnJvcikKIAkJZ290byBvdXRf
ZXJybm87CiAKLQllcnJvciA9IGZkc2V0KG5ld2ZkLCBmcCk7CisJZXJyb3IgPSB2ZnNjb3JlX2lu
c3RhbGxfZmQobmV3ZmQsIGZwKTsKIAlpZiAoZXJyb3IpIHsKIAkJZmRyb3AoZnApOwogCQlnb3Rv
IG91dF9lcnJubzsKQEAgLTEzNzMsNyArMTM3NCw3IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2Zj
bnRsX2VyciwgIiVkIiwgaW50KTsKIAogaW50IGZjbnRsKGludCBmZCwgaW50IGNtZCwgaW50IGFy
ZykKIHsKLQlzdHJ1Y3QgZmlsZSAqZnA7CisJc3RydWN0IHZmc2NvcmVfZmlsZSAqZnA7CiAJaW50
IHJldCA9IDAsIGVycm9yOwogCWludCB0bXA7CiAKQEAgLTE0OTAsMTQgKzE0OTEsMTQgQEAgaW50
IGFjY2Vzcyhjb25zdCBjaGFyICpwYXRobmFtZSwgaW50IG1vZGUpCiBpbnQgZmFjY2Vzc2F0KGlu
dCBkaXJmZCwgY29uc3QgY2hhciAqcGF0aG5hbWUsIGludCBtb2RlLCBpbnQgZmxhZ3MpCiB7CiAJ
aWYgKGZsYWdzICYgQVRfU1lNTElOS19OT0ZPTExPVykgewotCQlVTklNUExFTUVOVEVEKCJmYWNj
ZXNzYXQoKSB3aXRoIEFUX1NZTUxJTktfTk9GT0xMT1ciKTsKKwkJVUtfQ1JBU0goIlVOSU1QTEVN
RU5URUQ6IGZhY2Nlc3NhdCgpIHdpdGggQVRfU1lNTElOS19OT0ZPTExPVyIpOwogCX0KIAogCWlm
IChwYXRobmFtZVswXSA9PSAnLycgfHwgZGlyZmQgPT0gQVRfRkRDV0QpIHsKIAkJcmV0dXJuIGFj
Y2VzcyhwYXRobmFtZSwgbW9kZSk7CiAJfQogCi0Jc3RydWN0IGZpbGUgKmZwOworCXN0cnVjdCB2
ZnNjb3JlX2ZpbGUgKmZwOwogCWludCBlcnJvciA9IGZnZXQoZGlyZmQsICZmcCk7CiAJaWYgKGVy
cm9yKSB7CiAJCWVycm5vID0gZXJyb3I7CkBAIC0xNTI4LDcgKzE1MjksNyBAQCBpbnQgZXVpZGFj
Y2Vzcyhjb25zdCBjaGFyICpwYXRobmFtZSwgaW50IG1vZGUpCiAJcmV0dXJuIGFjY2VzcyhwYXRo
bmFtZSwgbW9kZSk7CiB9CiAKLXdlYWtfYWxpYXMoZXVpZGFjY2VzcyxlYWNjZXNzKTsKK19fd2Vh
a19hbGlhcyhldWlkYWNjZXNzLGVhY2Nlc3MpOwogCiAjaWYgMAogLyoKQEAgLTE1MzYsNyArMTUz
Nyw3IEBAIHdlYWtfYWxpYXMoZXVpZGFjY2VzcyxlYWNjZXNzKTsKICAqLwogaW50IGlzYXR0eShp
bnQgZmQpCiB7Ci0Jc3RydWN0IGZpbGUgKmZwOworCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwOwog
CWludCBpc3R0eSA9IDA7CiAKIAl0cmFjZV92ZnNfaXNhdHR5KGZkKTsKQEAgLTE1NzAsNyArMTU3
MSw3IEBAIGludCB0cnVuY2F0ZShjb25zdCBjaGFyICpwYXRobmFtZSwgb2ZmX3QgbGVuZ3RoKQog
CWludCBlcnJvcjsKIAogCWVycm9yID0gRU5PRU5UOwotCWlmIChwYXRobmFtZSA9PSBudWxscHRy
KQorCWlmIChwYXRobmFtZSA9PSBOVUxMKQogCQlnb3RvIG91dF9lcnJubzsKIAlpZiAoKGVycm9y
ID0gdGFza19jb252KHQsIHBhdGhuYW1lLCBWV1JJVEUsIHBhdGgpKSAhPSAwKQogCQlnb3RvIG91
dF9lcnJubzsKQEAgLTE1OTUsNyArMTU5Niw3IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2Z0cnVu
Y2F0ZV9lcnIsICIlZCIsIGludCk7CiBpbnQgZnRydW5jYXRlKGludCBmZCwgb2ZmX3QgbGVuZ3Ro
KQogewogCXRyYWNlX3Zmc19mdHJ1bmNhdGUoZmQsIGxlbmd0aCk7Ci0Jc3RydWN0IGZpbGUgKmZw
OworCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwOwogCWludCBlcnJvcjsKIAogCWVycm9yID0gZmdl
dChmZCwgJmZwKTsKQEAgLTE2MzAsNyArMTYzMSw3IEBAIHNzaXplX3QgcmVhZGxpbmsoY29uc3Qg
Y2hhciAqcGF0aG5hbWUsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnNpemUpCiAJCWdvdG8gb3V0X2Vy
cm5vOwogCiAJZXJyb3IgPSBFTk9FTlQ7Ci0JaWYgKHBhdGhuYW1lID09IG51bGxwdHIpCisJaWYg
KHBhdGhuYW1lID09IE5VTEwpCiAJCWdvdG8gb3V0X2Vycm5vOwogCWVycm9yID0gdGFza19jb252
KHQsIHBhdGhuYW1lLCBWV1JJVEUsIHBhdGgpOwogCWlmIChlcnJvcikKQEAgLTE2NTQsNyArMTY1
NSw3IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2ZhbGxvY2F0ZV9lcnIsICIlZCIsIGludCk7CiAK
IGludCBmYWxsb2NhdGUoaW50IGZkLCBpbnQgbW9kZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxl
bikKIHsKLQlzdHJ1Y3QgZmlsZSAqZnA7CisJc3RydWN0IHZmc2NvcmVfZmlsZSAqZnA7CiAJaW50
IGVycm9yOwogCiAJdHJhY2VfdmZzX2ZhbGxvY2F0ZShmZCwgbW9kZSwgb2Zmc2V0LCBsZW4pOwpA
QCAtMTY4MiwxNCArMTY4MywxNCBAQCBMRlM2NChmYWxsb2NhdGUpOwogaW50IGZ1dGltZXNhdChp
bnQgZGlyZmQsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBjb25zdCBzdHJ1Y3QgdGltZXZhbCB0aW1l
c1syXSkKIHsKIAlzdHJ1Y3Qgc3RhdCBzdDsKLQlzdHJ1Y3QgZmlsZSAqZnA7CisJc3RydWN0IHZm
c2NvcmVfZmlsZSAqZnA7CiAJaW50IGVycm9yOwogCWNoYXIgKmFic29sdXRlX3BhdGg7CiAKIAlp
ZiAoKHBhdGhuYW1lICYmIHBhdGhuYW1lWzBdID09ICcvJykgfHwgZGlyZmQgPT0gQVRfRkRDV0Qp
CiAJCXJldHVybiB1dGltZXMocGF0aG5hbWUsIHRpbWVzKTsKIAotCS8vIE5vdGU6IGlmIHBhdGhu
YW1lID09IG51bGxwdHIsIGZ1dGltZXNhdCBvcGVyYXRlcyBvbiBkaXJmZCBpdHNlbGYsIGFuZCBp
bgorCS8vIE5vdGU6IGlmIHBhdGhuYW1lID09IE5VTEwsIGZ1dGltZXNhdCBvcGVyYXRlcyBvbiBk
aXJmZCBpdHNlbGYsIGFuZCBpbgogCS8vIHRoYXQgY2FzZSBpdCBkb2Vzbid0IGhhdmUgdG8gYmUg
YSBkaXJlY3RvcnkuCiAJaWYgKHBhdGhuYW1lKSB7CiAJCWVycm9yID0gZnN0YXQoZGlyZmQsICZz
dCk7CkBAIC0xODM1LDcgKzE4MzYsNyBAQCBpbnQgY2htb2QoY29uc3QgY2hhciAqcGF0aG5hbWUs
IG1vZGVfdCBtb2RlKQogCXN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOwogCWNoYXIgcGF0aFtQ
QVRIX01BWF07CiAJaW50IGVycm9yID0gRU5PRU5UOwotCWlmIChwYXRobmFtZSA9PSBudWxscHRy
KQorCWlmIChwYXRobmFtZSA9PSBOVUxMKQogCQlnb3RvIG91dF9lcnJubzsKIAlpZiAoKGVycm9y
ID0gdGFza19jb252KHQsIHBhdGhuYW1lLCBWV1JJVEUsIHBhdGgpKSAhPSAwKQogCQlnb3RvIG91
dF9lcnJubzsKQEAgLTE4OTMsOCArMTg5NCw4IEBAIGludCBsY2hvd24oY29uc3QgY2hhciAqcGF0
aCwgdWlkX3Qgb3duZXIsIGdpZF90IGdyb3VwKQogI2lmIDAKIHNzaXplX3Qgc2VuZGZpbGUoaW50
IG91dF9mZCwgaW50IGluX2ZkLCBvZmZfdCAqX29mZnNldCwgc2l6ZV90IGNvdW50KQogewotCXN0
cnVjdCBmaWxlICppbl9mcDsKLQlzdHJ1Y3QgZmlsZSAqb3V0X2ZwOworCXN0cnVjdCB2ZnNjb3Jl
X2ZpbGUgKmluX2ZwOworCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKm91dF9mcDsKIAlmaWxlcmVmIGlu
X2Z7ZmlsZXJlZl9mcm9tX2ZkKGluX2ZkKX07CiAJZmlsZXJlZiBvdXRfZntmaWxlcmVmX2Zyb21f
ZmQob3V0X2ZkKX07CiAKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL21vdW50LmMgYi9saWIvdmZz
Y29yZS9tb3VudC5jCmluZGV4IDA2OTIyZmZiLi43ZDA4M2Q2ZiAxMDA2NDQKLS0tIGEvbGliL3Zm
c2NvcmUvbW91bnQuYworKysgYi9saWIvdmZzY29yZS9tb3VudC5jCkBAIC01NCwxMiArNTQsMTMg
QEAKIC8qCiAgKiBMaXN0IGZvciBWRlMgbW91bnQgcG9pbnRzLgogICovCi1zdGF0aWMgc3RkOjps
aXN0PG1vdW50Kj4gbW91bnRfbGlzdDsKKworVUtfTElTVF9IRUFEKG1vdW50X2xpc3QpOwogCiAv
KgogICogR2xvYmFsIGxvY2sgdG8gYWNjZXNzIG1vdW50IHBvaW50LgogICovCi1zdGF0aWMgbXV0
ZXggbW91bnRfbG9jazsKK3N0YXRpYyBzdHJ1Y3QgdWtfbXV0ZXggbW91bnRfbG9jazsKIAogLyoK
ICAqIExvb2t1cCBmaWxlIHN5c3RlbS4KQEAgLTg0LDExICs4NSwxMSBAQCBzeXNfbW91bnQoY29u
c3QgY2hhciAqZGV2LCBjb25zdCBjaGFyICpkaXIsIGNvbnN0IGNoYXIgKmZzbmFtZSwgaW50IGZs
YWdzLCBjb25zdAogCWNvbnN0IHN0cnVjdCB2ZnNzdyAqZnM7CiAJc3RydWN0IG1vdW50ICptcDsK
IAlzdHJ1Y3QgZGV2aWNlICpkZXZpY2U7Ci0Jc3RydWN0IGRlbnRyeSAqZHBfY292ZXJlZDsKLQlz
dHJ1Y3Qgdm5vZGUgKnZwOworCXN0cnVjdCBkZW50cnkgKmRwX2NvdmVyZWQgPSBOVUxMOworCXN0
cnVjdCB2bm9kZSAqdnAgPSBOVUxMOwogCWludCBlcnJvcjsKIAotCWtwcmludGYoIlZGUzogbW91
bnRpbmcgJXMgYXQgJXNcbiIsIGZzbmFtZSwgZGlyKTsKKwl1a19wcl9pbmZvKCJWRlM6IG1vdW50
aW5nICVzIGF0ICVzXG4iLCBmc25hbWUsIGRpcik7CiAKIAlpZiAoIWRpciB8fCAqZGlyID09ICdc
MCcpCiAJCXJldHVybiBFTk9FTlQ7CkBAIC05Nyw3ICs5OCw3IEBAIHN5c19tb3VudChjb25zdCBj
aGFyICpkZXYsIGNvbnN0IGNoYXIgKmRpciwgY29uc3QgY2hhciAqZnNuYW1lLCBpbnQgZmxhZ3Ms
IGNvbnN0CiAJaWYgKCEoZnMgPSBmc19nZXRmcyhmc25hbWUpKSkKIAkJcmV0dXJuIEVOT0RFVjsg
IC8qIE5vIHN1Y2ggZmlsZSBzeXN0ZW0gKi8KIAotCS8qIE9wZW4gZGV2aWNlLiBudWxscHRyIGNh
biBiZSBzcGVjaWZpZWQgYXMgYSBkZXZpY2UuICovCisJLyogT3BlbiBkZXZpY2UuIE5VTEwgY2Fu
IGJlIHNwZWNpZmllZCBhcyBhIGRldmljZS4gKi8KIAkvLyBBbGxvdyBkZXZpY2Vfb3BlbigpIHRv
IGZhaWwsIGluIHdoaWNoIGNhc2UgZGV2IGlzIGludGVycHJldGVkCiAJLy8gYnkgdGhlIGZpbGUg
c3lzdGVtIG1vdW50IHJvdXRpbmUgKGUuZyB6ZnMgcG9vbHMpCiAJZGV2aWNlID0gMDsKQEAgLTEx
MSwxNyArMTEyLDIxIEBAIHN5c19tb3VudChjb25zdCBjaGFyICpkZXYsIGNvbnN0IGNoYXIgKmRp
ciwgY29uc3QgY2hhciAqZnNuYW1lLCBpbnQgZmxhZ3MsIGNvbnN0CiAJLy8gdGhhdCBvbmx5IG9u
ZSBzeXNfbW91bnQoKSBydW5zIGF0IGEgdGltZS4gV2UgY2Fubm90IHJldXNlIHRoZSBleGlzdGlu
ZwogCS8vIG1vdW50X2xvY2sgZm9yIHRoaXMgcHVycG9zZTogSWYgd2UgdGFrZSBtb3VudF9sb2Nr
IGFuZCB0aGVuIGRvCiAJLy8gbG9va3VwcywgdGhpcyBpcyBsb2NrIG9yZGVyIGludmVyc2lvbiBh
bmQgY2FuIHJlc3VsdCBpbiBkZWFkbG9jay4KLQlzdGF0aWMgbXV0ZXggc3lzX21vdW50X2xvY2s7
Ci0JU0NPUEVfTE9DSyhzeXNfbW91bnRfbG9jayk7Ci0JV0lUSF9MT0NLKG1vdW50X2xvY2spIHsK
LQkJZm9yIChhdXRvJiYgbXAgOiBtb3VudF9saXN0KSB7Ci0JCQlpZiAoIXN0cmNtcChtcC0+bV9w
YXRoLCBkaXIpIHx8Ci0JCQkJKGRldmljZSAmJiBtcC0+bV9kZXYgPT0gZGV2aWNlKSkgewotCQkJ
CWVycm9yID0gRUJVU1k7ICAvKiBBbHJlYWR5IG1vdW50ZWQgKi8KLQkJCQlnb3RvIGVycjE7Ci0J
CQl9CisKKwkvKiBUT0RPOiBwcm90ZWN0IHRoZSBmdW5jdGlvbiBmcm9tIHJlZW50cmFuY2UsIGFz
IGRlc2NyaWJlZCBpbgorCSAqIHRoZSBjb21tZW50IGFib3ZlICovCisJLyogc3RhdGljIG11dGV4
IHN5c19tb3VudF9sb2NrOyAqLworCS8qIFNDT1BFX0xPQ0soc3lzX21vdW50X2xvY2spOyAqLwor
CisJdWtfbXV0ZXhfbG9jaygmbW91bnRfbG9jayk7CisJdWtfbGlzdF9mb3JfZWFjaF9lbnRyeSht
cCwgJm1vdW50X2xpc3QsIG1udF9saXN0KSB7CisJCWlmICghc3RyY21wKG1wLT5tX3BhdGgsIGRp
cikgfHwKKwkJICAgIChkZXZpY2UgJiYgbXAtPm1fZGV2ID09IGRldmljZSkpIHsKKwkJCWVycm9y
ID0gRUJVU1k7ICAvKiBBbHJlYWR5IG1vdW50ZWQgKi8KKwkJCWdvdG8gZXJyMTsKIAkJfQogCX0K
Kwl1a19tdXRleF91bmxvY2soJm1vdW50X2xvY2spOwogCS8qCiAJICogQ3JlYXRlIFZGUyBtb3Vu
dCBlbnRyeS4KIAkgKi8KQEAgLTEzNCw3ICsxMzksNyBAQCBzeXNfbW91bnQoY29uc3QgY2hhciAq
ZGV2LCBjb25zdCBjaGFyICpkaXIsIGNvbnN0IGNoYXIgKmZzbmFtZSwgaW50IGZsYWdzLCBjb25z
dAogCW1wLT5tX29wID0gZnMtPnZzX29wOwogCW1wLT5tX2ZsYWdzID0gZmxhZ3M7CiAJbXAtPm1f
ZGV2ID0gZGV2aWNlOwotCW1wLT5tX2RhdGEgPSBudWxscHRyOworCW1wLT5tX2RhdGEgPSBOVUxM
OwogCXN0cmxjcHkobXAtPm1fcGF0aCwgZGlyLCBzaXplb2YobXAtPm1fcGF0aCkpOwogCXN0cmxj
cHkobXAtPm1fc3BlY2lhbCwgZGV2LCBzaXplb2YobXAtPm1fc3BlY2lhbCkpOwogCkBAIC0xNDMs
NyArMTQ4LDcgQEAgc3lzX21vdW50KGNvbnN0IGNoYXIgKmRldiwgY29uc3QgY2hhciAqZGlyLCBj
b25zdCBjaGFyICpmc25hbWUsIGludCBmbGFncywgY29uc3QKIAkgKi8KIAlpZiAoKmRpciA9PSAn
LycgJiYgKihkaXIgKyAxKSA9PSAnXDAnKSB7CiAJCS8qIElnbm9yZSBpZiBpdCBtb3VudHMgdG8g
Z2xvYmFsIHJvb3QgZGlyZWN0b3J5LiAqLwotCQlkcF9jb3ZlcmVkID0gbnVsbHB0cjsKKwkJZHBf
Y292ZXJlZCA9IE5VTEw7CiAJfSBlbHNlIHsKIAkJaWYgKChlcnJvciA9IG5hbWVpKGRpciwgJmRw
X2NvdmVyZWQpKSAhPSAwKSB7CiAKQEAgLTE2MCw4ICsxNjUsOCBAQCBzeXNfbW91bnQoY29uc3Qg
Y2hhciAqZGV2LCBjb25zdCBjaGFyICpkaXIsIGNvbnN0IGNoYXIgKmZzbmFtZSwgaW50IGZsYWdz
LCBjb25zdAogCS8qCiAJICogQ3JlYXRlIGEgcm9vdCB2bm9kZSBmb3IgdGhpcyBmaWxlIHN5c3Rl
bS4KIAkgKi8KLQl2Z2V0KG1wLCAwLCAmdnApOwotCWlmICh2cCA9PSBudWxscHRyKSB7CisJdmZz
Y29yZV92Z2V0KG1wLCAwLCAmdnApOworCWlmICh2cCA9PSBOVUxMKSB7CiAJCWVycm9yID0gRU5P
TUVNOwogCQlnb3RvIGVycjM7CiAJfQpAQCAtMTY5LDcgKzE3NCw3IEBAIHN5c19tb3VudChjb25z
dCBjaGFyICpkZXYsIGNvbnN0IGNoYXIgKmRpciwgY29uc3QgY2hhciAqZnNuYW1lLCBpbnQgZmxh
Z3MsIGNvbnN0CiAJdnAtPnZfZmxhZ3MgPSBWUk9PVDsKIAl2cC0+dl9tb2RlID0gU19JRkRJUiB8
IFNfSVJVU1IgfCBTX0lXVVNSIHwgU19JWFVTUjsKIAotCW1wLT5tX3Jvb3QgPSBkZW50cnlfYWxs
b2MobnVsbHB0ciwgdnAsICIvIik7CisJbXAtPm1fcm9vdCA9IGRlbnRyeV9hbGxvYyhOVUxMLCB2
cCwgIi8iKTsKIAlpZiAoIW1wLT5tX3Jvb3QpIHsKIAkJdnB1dCh2cCk7CiAJCWdvdG8gZXJyMzsK
QEAgLTE4OCw5ICsxOTMsOSBAQCBzeXNfbW91bnQoY29uc3QgY2hhciAqZGV2LCBjb25zdCBjaGFy
ICpkaXIsIGNvbnN0IGNoYXIgKmZzbmFtZSwgaW50IGZsYWdzLCBjb25zdAogCS8qCiAJICogSW5z
ZXJ0IHRvIG1vdW50IGxpc3QKIAkgKi8KLQlXSVRIX0xPQ0sobW91bnRfbG9jaykgewotCQltb3Vu
dF9saXN0LnB1c2hfYmFjayhtcCk7Ci0JfQorCXVrX211dGV4X2xvY2soJm1vdW50X2xvY2spOwor
CXVrX2xpc3RfYWRkX3RhaWwoJm1wLT5tbnRfbGlzdCwgJm1vdW50X2xpc3QpOworCXVrX211dGV4
X3VubG9jaygmbW91bnRfbG9jayk7CiAKIAlyZXR1cm4gMDsgICAvKiBzdWNjZXNzICovCiAgZXJy
NDoKQEAgLTIyMiwxMiArMjI3LDEyIEBAIHJlbGVhc2VfbXBfZGVudHJpZXMoc3RydWN0IG1vdW50
ICptcCkKIGludAogc3lzX3Vtb3VudDIoY29uc3QgY2hhciAqcGF0aCwgaW50IGZsYWdzKQogewot
CXN0cnVjdCBtb3VudCAqbXA7CisJc3RydWN0IG1vdW50ICptcCwgKnRtcDsKIAlpbnQgZXJyb3Is
IHBhdGhsZW47CiAKLQlrcHJpbnRmKCJWRlM6IHVubW91bnRpbmcgJXNcbiIsIHBhdGgpOworCXVr
X3ByX2luZm8oIlZGUzogdW5tb3VudGluZyAlc1xuIiwgcGF0aCk7CiAKLQlTQ09QRV9MT0NLKG1v
dW50X2xvY2spOworCXVrX211dGV4X2xvY2soJm1vdW50X2xvY2spOwogCiAJcGF0aGxlbiA9IHN0
cmxlbihwYXRoKTsKIAlpZiAocGF0aGxlbiA+PSBNQVhQQVRITEVOKSB7CkBAIC0yMzYsNyArMjQx
LDcgQEAgc3lzX3Vtb3VudDIoY29uc3QgY2hhciAqcGF0aCwgaW50IGZsYWdzKQogCX0KIAogCS8q
IEdldCBtb3VudCBlbnRyeSAqLwotCWZvciAoYXV0byYmIHRtcCA6IG1vdW50X2xpc3QpIHsKKwl1
a19saXN0X2Zvcl9lYWNoX2VudHJ5KHRtcCwgJm1vdW50X2xpc3QsIG1udF9saXN0KSB7CiAJCWlm
ICghc3RyY21wKHBhdGgsIHRtcC0+bV9wYXRoKSkgewogCQkJbXAgPSB0bXA7CiAJCQlnb3RvIGZv
dW5kOwpAQCAtMjUwLDE0ICsyNTUsMTQgQEAgZm91bmQ6CiAJLyoKIAkgKiBSb290IGZzIGNhbiBu
b3QgYmUgdW5tb3VudGVkLgogCSAqLwotCWlmIChtcC0+bV9jb3ZlcmVkID09IG51bGxwdHIgJiYg
IShmbGFncyAmIE1OVF9GT1JDRSkpIHsKKwlpZiAobXAtPm1fY292ZXJlZCA9PSBOVUxMICYmICEo
ZmxhZ3MgJiBNTlRfRk9SQ0UpKSB7CiAJCWVycm9yID0gRUlOVkFMOwogCQlnb3RvIG91dDsKIAl9
CiAKIAlpZiAoKGVycm9yID0gVkZTX1VOTU9VTlQobXAsIGZsYWdzKSkgIT0gMCkKIAkJZ290byBv
dXQ7Ci0JbW91bnRfbGlzdC5yZW1vdmUobXApOworCXVrX2xpc3RfZGVsX2luaXQoJm1wLT5tbnRf
bGlzdCk7CiAKICNpZmRlZiBIQVZFX0JVRkZFUlMKIAkvKiBGbHVzaCBhbGwgYnVmZmVycyAqLwpA
QCAtMjY4LDYgKzI3Myw3IEBAIGZvdW5kOgogCQlkZXZpY2VfY2xvc2UobXAtPm1fZGV2KTsKIAlm
cmVlKG1wKTsKICBvdXQ6CisJdWtfbXV0ZXhfdW5sb2NrKCZtb3VudF9sb2NrKTsKIAlyZXR1cm4g
ZXJyb3I7CiB9CiAKQEAgLTI4MSw3ICsyODcsNyBAQCBzeXNfdW1vdW50KGNvbnN0IGNoYXIgKnBh
dGgpCiBpbnQKIHN5c19waXZvdF9yb290KGNvbnN0IGNoYXIgKm5ld19yb290LCBjb25zdCBjaGFy
ICpwdXRfb2xkKQogewotCXN0cnVjdCBtb3VudCAqbmV3bXAgPSBudWxscHRyLCAqb2xkbXAgPSBu
dWxscHRyOworCXN0cnVjdCBtb3VudCAqbmV3bXAgPSBOVUxMLCAqb2xkbXAgPSBOVUxMOwogCWlu
dCBlcnJvcjsKIAogCVdJVEhfTE9DSyhtb3VudF9sb2NrKSB7CkBAIC0zMTQsMTIgKzMyMCwxMiBA
QCBzeXNfcGl2b3Rfcm9vdChjb25zdCBjaGFyICpuZXdfcm9vdCwgY29uc3QgY2hhciAqcHV0X29s
ZCkKIAkJaWYgKG5ld21wLT5tX2NvdmVyZWQpIHsKIAkJCWRyZWxlKG5ld21wLT5tX2NvdmVyZWQp
OwogCQl9Ci0JCW5ld21wLT5tX2NvdmVyZWQgPSBudWxscHRyOworCQluZXdtcC0+bV9jb3ZlcmVk
ID0gTlVMTDsKIAogCQlpZiAobmV3bXAtPm1fcm9vdC0+ZF9wYXJlbnQpIHsKIAkJCWRyZWxlKG5l
d21wLT5tX3Jvb3QtPmRfcGFyZW50KTsKIAkJfQotCQluZXdtcC0+bV9yb290LT5kX3BhcmVudCA9
IG51bGxwdHI7CisJCW5ld21wLT5tX3Jvb3QtPmRfcGFyZW50ID0gTlVMTDsKIAogCQlzdHJsY3B5
KG5ld21wLT5tX3BhdGgsICIvIiwgc2l6ZW9mKG5ld21wLT5tX3BhdGgpKTsKIAl9CkBAIC0zMzAs
MTEgKzMzNiwxMiBAQCBzeXNfcGl2b3Rfcm9vdChjb25zdCBjaGFyICpuZXdfcm9vdCwgY29uc3Qg
Y2hhciAqcHV0X29sZCkKIGludAogc3lzX3N5bmModm9pZCkKIHsKKwlzdHJ1Y3QgbW91bnQgKm1w
OworCXVrX211dGV4X2xvY2soJm1vdW50X2xvY2spOworCiAJLyogQ2FsbCBlYWNoIG1vdW50ZWQg
ZmlsZSBzeXN0ZW0uICovCi0JV0lUSF9MT0NLKG1vdW50X2xvY2spIHsKLQkJZm9yIChhdXRvJiYg
bXAgOiBtb3VudF9saXN0KSB7Ci0JCQlWRlNfU1lOQyhtcCk7Ci0JCX0KKwl1a19saXN0X2Zvcl9l
YWNoX2VudHJ5KG1wLCAmbW91bnRfbGlzdCwgbW50X2xpc3QpIHsKKwkJVkZTX1NZTkMobXApOwog
CX0KICNpZmRlZiBIQVZFX0JVRkZFUlMKIAliaW9fc3luYygpOwpAQCAtMzgwLDIyICszODcsMjMg
QEAgY291bnRfbWF0Y2goY29uc3QgY2hhciAqcGF0aCwgY2hhciAqbW91bnRfcm9vdCkKIGludAog
dmZzX2ZpbmRyb290KGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBtb3VudCAqKm1wLCBjaGFyICoq
cm9vdCkKIHsKLQlzdHJ1Y3QgbW91bnQgKm0gPSBudWxscHRyOworCXN0cnVjdCBtb3VudCAqbSA9
IE5VTEwsICp0bXA7CiAJc2l6ZV90IGxlbiwgbWF4X2xlbiA9IDA7CiAKIAlpZiAoIXBhdGgpCiAJ
CXJldHVybiAtMTsKIAogCS8qIEZpbmQgbW91bnQgcG9pbnQgZnJvbSBuZWFyZXN0IHBhdGggKi8K
LQlTQ09QRV9MT0NLKG1vdW50X2xvY2spOwotCWZvciAoYXV0byYmIHRtcCA6IG1vdW50X2xpc3Qp
IHsKKwl1a19tdXRleF9sb2NrKCZtb3VudF9sb2NrKTsKKwl1a19saXN0X2Zvcl9lYWNoX2VudHJ5
KHRtcCwgJm1vdW50X2xpc3QsIG1udF9saXN0KSB7CiAJCWxlbiA9IGNvdW50X21hdGNoKHBhdGgs
IHRtcC0+bV9wYXRoKTsKIAkJaWYgKGxlbiA+IG1heF9sZW4pIHsKIAkJCW1heF9sZW4gPSBsZW47
CiAJCQltID0gdG1wOwogCQl9CiAJfQotCWlmIChtID09IG51bGxwdHIpCisJdWtfbXV0ZXhfdW5s
b2NrKCZtb3VudF9sb2NrKTsKKwlpZiAobSA9PSBOVUxMKQogCQlyZXR1cm4gLTE7CiAJKnJvb3Qg
PSAoY2hhciAqKShwYXRoICsgbWF4X2xlbik7CiAJaWYgKCoqcm9vdCA9PSAnLycpCkBAIC00MTAs
OCArNDE4LDEwIEBAIHZmc19maW5kcm9vdChjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3QgbW91bnQg
KiptcCwgY2hhciAqKnJvb3QpCiB2b2lkCiB2ZnNfYnVzeShzdHJ1Y3QgbW91bnQgKm1wKQogewot
CVNDT1BFX0xPQ0sobW91bnRfbG9jayk7Ci0JbXAtPm1fY291bnQrKzsKKwkvKiBUaGUgbV9jb3Vu
dCBpcyBub3QgcmVhbGx5IGNoZWNrZWQgYW55d2hlcmUKKwkgKiBjdXJyZW50bHkuIEF0b21pYyBp
cyBlbm91Z2guIEJ1dCBpdCBjb3VsZCBiZSB0aGF0IG9idGFpbmluZworCSAqIG1vdW50X2xvY2sg
d2lsbCBiZSBuZWVkZWQgaW4gdGhlIGZ1dHVyZSAqLworCXVrYXJjaF9pbmMoJm1wLT5tX2NvdW50
KTsKIH0KIAogCkBAIC00MjEsOCArNDMxLDEwIEBAIHZmc19idXN5KHN0cnVjdCBtb3VudCAqbXAp
CiB2b2lkCiB2ZnNfdW5idXN5KHN0cnVjdCBtb3VudCAqbXApCiB7Ci0JU0NPUEVfTE9DSyhtb3Vu
dF9sb2NrKTsKLQltcC0+bV9jb3VudC0tOworCS8qIFRoZSBtX2NvdW50IGlzIG5vdCByZWFsbHkg
Y2hlY2tlZCBhbnl3aGVyZQorCSAqIGN1cnJlbnRseS4gQXRvbWljIGlzIGVub3VnaC4gQnV0IGl0
IGNvdWxkIGJlIHRoYXQgb2J0YWluaW5nCisJICogbW91bnRfbG9jayB3aWxsIGJlIG5lZWRlZCBp
biB0aGUgZnV0dXJlICovCisJdWthcmNoX2RlYygmbXAtPm1fY291bnQpOwogfQogCiBpbnQKQEAg
LTQ0MSwxNCArNDUzLDE2IEBAIHZmc19laW52YWwodm9pZCkKIHZvaWQKIG1vdW50X2R1bXAodm9p
ZCkKIHsKLQlTQ09QRV9MT0NLKG1vdW50X2xvY2spOworCXN0cnVjdCBtb3VudCAqbXA7CisJdWtf
bXV0ZXhfbG9jaygmbW91bnRfbG9jayk7CiAKLQlrcHJpbnRmKCJtb3VudF9kdW1wXG4iKTsKLQlr
cHJpbnRmKCJkZXYgICAgICBjb3VudCByb290XG4iKTsKLQlrcHJpbnRmKCItLS0tLS0tLSAtLS0t
LSAtLS0tLS0tLVxuIik7CisJdWtfcHJfZGVidWcoIm1vdW50X2R1bXBcbiIpOworCXVrX3ByX2Rl
YnVnKCJkZXYgICAgICBjb3VudCByb290XG4iKTsKKwl1a19wcl9kZWJ1ZygiLS0tLS0tLS0gLS0t
LS0gLS0tLS0tLS1cbiIpOwogCi0JZm9yIChhdXRvJiYgbXAgOiBtb3VudF9saXN0KSB7Ci0JCWtw
cmludGYoIiU4eCAlNWQgJXNcbiIsIG1wLT5tX2RldiwgbXAtPm1fY291bnQsIG1wLT5tX3BhdGgp
OworCXVrX2xpc3RfZm9yX2VhY2hfZW50cnkobXAsICZtb3VudF9saXN0LCBtbnRfbGlzdCkgewor
CQl1a19wcl9kZWJ1ZygiJThwICU1ZCAlc1xuIiwgbXAtPm1fZGV2LCBtcC0+bV9jb3VudCwgbXAt
Pm1fcGF0aCk7CiAJfQorCXVrX211dGV4X3VubG9jaygmbW91bnRfbG9jayk7CiB9CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3N1YnJfdWlvLmMgYi9saWIvdmZzY29yZS9zdWJyX3Vp
by5jCmluZGV4IGJiY2EzMzYyLi5kOGU5ZDFiZSAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvc3Vi
cl91aW8uYworKysgYi9saWIvdmZzY29yZS9zdWJyX3Vpby5jCkBAIC00OCw3ICs0OCw3IEBACiBp
bnQKIHVpb21vdmUodm9pZCAqY3AsIGludCBuLCBzdHJ1Y3QgdWlvICp1aW8pCiB7Ci0JYXNzZXJ0
KHVpby0+dWlvX3J3ID09IFVJT19SRUFEIHx8IHVpby0+dWlvX3J3ID09IFVJT19XUklURSk7CisJ
VUtfQVNTRVJUKHVpby0+dWlvX3J3ID09IFVJT19SRUFEIHx8IHVpby0+dWlvX3J3ID09IFVJT19X
UklURSk7CiAKIAl3aGlsZSAobiA+IDAgJiYgdWlvLT51aW9fcmVzaWQpIHsKIAkJc3RydWN0IGlv
dmVjICppb3YgPSB1aW8tPnVpb19pb3Y7CmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9zeXNjYWxs
cy5jIGIvbGliL3Zmc2NvcmUvc3lzY2FsbHMuYwppbmRleCBmNTBmYjM4Zi4uZmEwNDk4ZTcgMTAw
NjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL3N5c2NhbGxzLmMKKysrIGIvbGliL3Zmc2NvcmUvc3lzY2Fs
bHMuYwpAQCAtNjUsOSArNjUsOSBAQCBvcGVuX25vX2ZvbGxvd19jaGsoY2hhciAqcGF0aCkKIAlz
dHJ1Y3QgZGVudHJ5ICpkcDsKIAlzdHJ1Y3Qgdm5vZGUgICp2cDsKIAotCWRkcCA9IG51bGxwdHI7
Ci0JZHAgID0gbnVsbHB0cjsKLQl2cCAgPSBudWxscHRyOworCWRkcCA9IE5VTEw7CisJZHAgID0g
TlVMTDsKKwl2cCAgPSBOVUxMOwogCiAJZXJyb3IgPSBsb29rdXAocGF0aCwgJmRkcCwgJm5hbWUp
OwogCWlmIChlcnJvcikgewpAQCAtODgsMTUgKzg4LDE1IEBAIG9wZW5fbm9fZm9sbG93X2Noayhj
aGFyICpwYXRoKQogCiAJZXJyb3IgPSAwOwogb3V0OgotCWlmICh2cCAhPSBudWxscHRyKSB7CisJ
aWYgKHZwICE9IE5VTEwpIHsKIAkJdm5fdW5sb2NrKHZwKTsKIAl9CiAKLQlpZiAoZHAgIT0gbnVs
bHB0cikgeworCWlmIChkcCAhPSBOVUxMKSB7CiAJCWRyZWxlKGRwKTsKIAl9CiAKLQlpZiAoZGRw
ICE9IG51bGxwdHIpIHsKKwlpZiAoZGRwICE9IE5VTEwpIHsKIAkJZHJlbGUoZGRwKTsKIAl9CiAK
QEAgLTEwNCw5ICsxMDQsOSBAQCBvdXQ6CiB9CiAKIGludAotc3lzX29wZW4oY2hhciAqcGF0aCwg
aW50IGZsYWdzLCBtb2RlX3QgbW9kZSwgc3RydWN0IGZpbGUgKipmcHApCitzeXNfb3BlbihjaGFy
ICpwYXRoLCBpbnQgZmxhZ3MsIG1vZGVfdCBtb2RlLCBzdHJ1Y3QgdmZzY29yZV9maWxlICoqZnBw
KQogewotCWZpbGUgKmZwOworCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwOwogCXN0cnVjdCBkZW50
cnkgKmRwLCAqZGRwOwogCXN0cnVjdCB2bm9kZSAqdnA7CiAJY2hhciAqZmlsZW5hbWU7CkBAIC0x
MTUsMTEgKzExNSwxMSBAQCBzeXNfb3BlbihjaGFyICpwYXRoLCBpbnQgZmxhZ3MsIG1vZGVfdCBt
b2RlLCBzdHJ1Y3QgZmlsZSAqKmZwcCkKIAlEUFJJTlRGKFZGU0RCX1NZU0NBTEwsICgic3lzX29w
ZW46IHBhdGg9JXMgZmxhZ3M9JXggbW9kZT0leFxuIiwKIAkJCQlwYXRoLCBmbGFncywgbW9kZSkp
OwogCi0JZmxhZ3MgPSBmZmxhZ3MoZmxhZ3MpOworCWZsYWdzID0gdmZzY29yZV9mZmxhZ3MoZmxh
Z3MpOwogCWlmIChmbGFncyAmIE9fQ1JFQVQpIHsKIAkJZXJyb3IgPSBuYW1laShwYXRoLCAmZHAp
OwogCQlpZiAoZXJyb3IgPT0gRU5PRU5UKSB7Ci0JCQkvKiBDcmVhdGUgbmV3IGZpbGUuICovCisJ
CQkvKiBDcmVhdGUgbmV3IHN0cnVjdCB2ZnNjb3JlX2ZpbGUuICovCiAJCQlpZiAoKGVycm9yID0g
bG9va3VwKHBhdGgsICZkZHAsICZmaWxlbmFtZSkpICE9IDApCiAJCQkJcmV0dXJuIGVycm9yOwog
CkBAIC0yMzMsMTQgKzIzMywxNCBAQCBvdXRfZHJlbGU6CiB9CiAKIGludAotc3lzX2Nsb3NlKHN0
cnVjdCBmaWxlICpmcCkKK3N5c19jbG9zZShzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCBfX3VudXNl
ZCkKIHsKIAogCXJldHVybiAwOwogfQogCiBpbnQKLXN5c19yZWFkKHN0cnVjdCBmaWxlICpmcCwg
Y29uc3Qgc3RydWN0IGlvdmVjICppb3YsIHNpemVfdCBuaW92LAorc3lzX3JlYWQoc3RydWN0IHZm
c2NvcmVfZmlsZSAqZnAsIGNvbnN0IHN0cnVjdCBpb3ZlYyAqaW92LCBzaXplX3QgbmlvdiwKIAkJ
b2ZmX3Qgb2Zmc2V0LCBzaXplX3QgKmNvdW50KQogewogCWludCBlcnJvciA9IDA7CkBAIC0yOTAs
NyArMjkwLDcgQEAgc3lzX3JlYWQoc3RydWN0IGZpbGUgKmZwLCBjb25zdCBzdHJ1Y3QgaW92ZWMg
Kmlvdiwgc2l6ZV90IG5pb3YsCiB9CiAKIGludAotc3lzX3dyaXRlKHN0cnVjdCBmaWxlICpmcCwg
Y29uc3Qgc3RydWN0IGlvdmVjICppb3YsIHNpemVfdCBuaW92LAorc3lzX3dyaXRlKHN0cnVjdCB2
ZnNjb3JlX2ZpbGUgKmZwLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlvdiwgc2l6ZV90IG5pb3YsCiAJ
CW9mZl90IG9mZnNldCwgc2l6ZV90ICpjb3VudCkKIHsKIAlzdHJ1Y3QgaW92ZWMgKmNvcHlfaW92
OwpAQCAtMzM3LDEyICszMzcsMTIgQEAgc3lzX3dyaXRlKHN0cnVjdCBmaWxlICpmcCwgY29uc3Qg
c3RydWN0IGlvdmVjICppb3YsIHNpemVfdCBuaW92LAogfQogCiBpbnQKLXN5c19sc2VlayhzdHJ1
Y3QgZmlsZSAqZnAsIG9mZl90IG9mZiwgaW50IHR5cGUsIG9mZl90ICpvcmlnaW4pCitzeXNfbHNl
ZWsoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAsIG9mZl90IG9mZiwgaW50IHR5cGUsIG9mZl90ICpv
cmlnaW4pCiB7CiAJc3RydWN0IHZub2RlICp2cDsKIAotCURQUklOVEYoVkZTREJfU1lTQ0FMTCwg
KCJzeXNfc2VlazogZnA9JXggb2ZmPSVkIHR5cGU9JWRcbiIsCi0JCQkJKHVfbG9uZylmcCwgKHVf
aW50KW9mZiwgdHlwZSkpOworCURQUklOVEYoVkZTREJfU1lTQ0FMTCwgKCJzeXNfc2VlazogZnA9
JXAgb2ZmPSV1ZCB0eXBlPSVkXG4iLAorCQkJCWZwLCAodW5zaWduZWQgaW50KW9mZiwgdHlwZSkp
OwogCiAJaWYgKCFmcC0+Zl9kZW50cnkpIHsKIAkgICAgLy8gTGludXggZG9lc24ndCBpbXBsZW1l
bnQgbHNlZWsoKSBvbiBwaXBlcywgc29ja2V0cywgb3IgdHR5cy4KQEAgLTM3MywxMSArMzczLDEx
IEBAIHN5c19sc2VlayhzdHJ1Y3QgZmlsZSAqZnAsIG9mZl90IG9mZiwgaW50IHR5cGUsIG9mZl90
ICpvcmlnaW4pCiB9CiAKIGludAotc3lzX2lvY3RsKHN0cnVjdCBmaWxlICpmcCwgdV9sb25nIHJl
cXVlc3QsIHZvaWQgKmJ1ZikKK3N5c19pb2N0bChzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCwgdW5z
aWduZWQgbG9uZyByZXF1ZXN0LCB2b2lkICpidWYpCiB7CiAJaW50IGVycm9yOwogCi0JRFBSSU5U
RihWRlNEQl9TWVNDQUxMLCAoInN5c19pb2N0bDogZnA9JXggcmVxdWVzdD0leFxuIiwgZnAsIHJl
cXVlc3QpKTsKKwlEUFJJTlRGKFZGU0RCX1NZU0NBTEwsICgic3lzX2lvY3RsOiBmcD0lcCByZXF1
ZXN0PSVsdXhcbiIsIGZwLCByZXF1ZXN0KSk7CiAKIAlpZiAoKGZwLT5mX2ZsYWdzICYgKEZSRUFE
IHwgRldSSVRFKSkgPT0gMCkKIAkJcmV0dXJuIEVCQURGOwpAQCAtMzg5LDcgKzM4OSw3IEBAIHN5
c19pb2N0bChzdHJ1Y3QgZmlsZSAqZnAsIHVfbG9uZyByZXF1ZXN0LCB2b2lkICpidWYpCiB9CiAK
IGludAotc3lzX2ZzeW5jKHN0cnVjdCBmaWxlICpmcCkKK3N5c19mc3luYyhzdHJ1Y3QgdmZzY29y
ZV9maWxlICpmcCkKIHsKIAlzdHJ1Y3Qgdm5vZGUgKnZwOwogCWludCBlcnJvcjsKQEAgLTQwNyw3
ICs0MDcsNyBAQCBzeXNfZnN5bmMoc3RydWN0IGZpbGUgKmZwKQogfQogCiBpbnQKLXN5c19mc3Rh
dChzdHJ1Y3QgZmlsZSAqZnAsIHN0cnVjdCBzdGF0ICpzdCkKK3N5c19mc3RhdChzdHJ1Y3QgdmZz
Y29yZV9maWxlICpmcCwgc3RydWN0IHN0YXQgKnN0KQogewogCWludCBlcnJvciA9IDA7CiAKQEAg
LTQyNSw3ICs0MjUsNyBAQCBzdGF0aWMgaW50CiBjaGVja19kaXJfZW1wdHkoY2hhciAqcGF0aCkK
IHsKIAlpbnQgZXJyb3I7Ci0Jc3RydWN0IGZpbGUgKmZwOworCXN0cnVjdCB2ZnNjb3JlX2ZpbGUg
KmZwOwogCXN0cnVjdCBkaXJlbnQgZGlyOwogCiAJRFBSSU5URihWRlNEQl9TWVNDQUxMLCAoImNo
ZWNrX2Rpcl9lbXB0eVxuIikpOwpAQCAtNDUzLDcgKzQ1Myw3IEBAIG91dF9lcnJvcjoKIH0KIAog
aW50Ci1zeXNfcmVhZGRpcihzdHJ1Y3QgZmlsZSAqZnAsIHN0cnVjdCBkaXJlbnQgKmRpcikKK3N5
c19yZWFkZGlyKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwLCBzdHJ1Y3QgZGlyZW50ICpkaXIpCiB7
CiAJc3RydWN0IHZub2RlICpkdnA7CiAJaW50IGVycm9yOwpAQCAtNDc3LDcgKzQ3Nyw3IEBAIHN5
c19yZWFkZGlyKHN0cnVjdCBmaWxlICpmcCwgc3RydWN0IGRpcmVudCAqZGlyKQogfQogCiBpbnQK
LXN5c19yZXdpbmRkaXIoc3RydWN0IGZpbGUgKmZwKQorc3lzX3Jld2luZGRpcihzdHJ1Y3QgdmZz
Y29yZV9maWxlICpmcCkKIHsKIAlzdHJ1Y3Qgdm5vZGUgKmR2cDsKIApAQCAtNDk2LDcgKzQ5Niw3
IEBAIHN5c19yZXdpbmRkaXIoc3RydWN0IGZpbGUgKmZwKQogfQogCiBpbnQKLXN5c19zZWVrZGly
KHN0cnVjdCBmaWxlICpmcCwgbG9uZyBsb2MpCitzeXNfc2Vla2RpcihzdHJ1Y3QgdmZzY29yZV9m
aWxlICpmcCwgbG9uZyBsb2MpCiB7CiAJc3RydWN0IHZub2RlICpkdnA7CiAKQEAgLTUxNSw3ICs1
MTUsNyBAQCBzeXNfc2Vla2RpcihzdHJ1Y3QgZmlsZSAqZnAsIGxvbmcgbG9jKQogfQogCiBpbnQK
LXN5c190ZWxsZGlyKHN0cnVjdCBmaWxlICpmcCwgbG9uZyAqbG9jKQorc3lzX3RlbGxkaXIoc3Ry
dWN0IHZmc2NvcmVfZmlsZSAqZnAsIGxvbmcgKmxvYykKIHsKIAlzdHJ1Y3Qgdm5vZGUgKmR2cDsK
IApAQCAtNjYyLDE0ICs2NjIsMTQgQEAgc3lzX21rbm9kKGNoYXIgKnBhdGgsIG1vZGVfdCBtb2Rl
KQogICoKICAqIEFzc3VtZXMgYm90aCBwYXRocyBkbyBub3QgaGF2ZSB0cmFpbGluZyBzbGFzaGVz
LgogICovCi1zdGF0aWMgYm9vbAorc3RhdGljIGludAogaXNfcGFyZW50KGNvbnN0IGNoYXIgKnBh
cmVudCwgY29uc3QgY2hhciAqY2hpbGQpCiB7CiAJc2l6ZV90IHBfbGVuID0gc3RybGVuKHBhcmVu
dCk7CiAJcmV0dXJuICFzdHJuY21wKHBhcmVudCwgY2hpbGQsIHBfbGVuKSAmJiAocGFyZW50W3Bf
bGVuLTFdID09ICcvJyB8fCBjaGlsZFtwX2xlbl0gPT0gJy8nKTsKIH0KIAotc3RhdGljIGJvb2wK
K3N0YXRpYyBpbnQKIGhhc190cmFpbGluZyhjb25zdCBjaGFyICpwYXRoLCBjaGFyIGNoKQogewog
CXNpemVfdCBsZW4gPSBzdHJsZW4ocGF0aCk7CkBAIC02OTUsMTYgKzY5NSwxNiBAQCBzeXNfcmVu
YW1lKGNoYXIgKnNyYywgY2hhciAqZGVzdCkKIAljaGFyICpzbmFtZSwgKmRuYW1lOwogCWludCBl
cnJvcjsKIAljaGFyIHJvb3RbXSA9ICIvIjsKLQlib29sIHRzOyAvKiB0cmFpbGluZyBzbGFzaCAq
LworCWludCB0czsgLyogdHJhaWxpbmcgc2xhc2ggKi8KIAogCURQUklOVEYoVkZTREJfU1lTQ0FM
TCwgKCJzeXNfcmVuYW1lOiBzcmM9JXMgZGVzdD0lc1xuIiwgc3JjLCBkZXN0KSk7CiAKLQl0cyA9
IGZhbHNlOwotCWlmIChoYXNfdHJhaWxpbmcoc3JjLCAnLycpID09IHRydWUpIHsKKwl0cyA9IDA7
CisJaWYgKGhhc190cmFpbGluZyhzcmMsICcvJykpIHsKIAkJaWYgKHN0cmxlbihzcmMpICE9IDEp
IHsKIAkJCS8qIHJlbW92ZSB0cmFpbGluZyBzbGFzaCBpZmYgcGF0aCBpcyBub25lIHJvb3QgKi8K
IAkJCXN0cmlwX3RyYWlsaW5nKHNyYywgJy8nKTsKLQkJCXRzID0gdHJ1ZTsKKwkJCXRzID0gMTsK
IAkJfQogCX0KIApAQCAtNzIyLDE3ICs3MjIsMTcgQEAgc3lzX3JlbmFtZShjaGFyICpzcmMsIGNo
YXIgKmRlc3QpCiAJdnAxID0gZHAxLT5kX3Zub2RlOwogCXZuX2xvY2sodnAxKTsKIAotCWlmICh2
cDEtPnZfdHlwZSAhPSBWRElSICYmIHRzID09IHRydWUpIHsKKwlpZiAodnAxLT52X3R5cGUgIT0g
VkRJUiAmJiB0cykgewogCQllcnJvciA9IEVOT1RESVI7CiAJCWdvdG8gZXJyMTsKIAl9CiAKLQl0
cyA9IGZhbHNlOwotCWlmIChoYXNfdHJhaWxpbmcoZGVzdCwgJy8nKSA9PSB0cnVlKSB7CisJdHMg
PSAwOworCWlmIChoYXNfdHJhaWxpbmcoZGVzdCwgJy8nKSkgewogCQlpZiAoc3RybGVuKGRlc3Qp
ICE9IDEpIHsKIAkJCS8qIHJlbW92ZSB0cmFpbGluZyBzbGFzaCBpZmYgcGF0aCBpcyBub25lIHJv
b3QgKi8KIAkJCXN0cmlwX3RyYWlsaW5nKGRlc3QsICcvJyk7Ci0JCQl0cyA9IHRydWU7CisJCQl0
cyA9IDE7CiAJCX0KIAl9CiAKQEAgLTc0OSw3ICs3NDksNyBAQCBzeXNfcmVuYW1lKGNoYXIgKnNy
YywgY2hhciAqZGVzdCkKIAkJdm5fbG9jayh2cDIpOwogCiAJCWlmICh2cDItPnZfdHlwZSAhPSBW
RElSICYmIHZwMi0+dl90eXBlICE9IFZMTkspIHsKLQkJCWlmICh2cDEtPnZfdHlwZSA9PSBWRElS
IHx8IHRzID09IHRydWUpIHsKKwkJCWlmICh2cDEtPnZfdHlwZSA9PSBWRElSIHx8IHRzKSB7CiAJ
CQkJZXJyb3IgPSBFTk9URElSOwogCQkJCWdvdG8gZXJyMjsKIAkJCX0KQEAgLTc2Miw3ICs3NjIs
NyBAQCBzeXNfcmVuYW1lKGNoYXIgKnNyYywgY2hhciAqZGVzdCkKIAkJCWdvdG8gZXJyMjsKIAkJ
fQogCX0gZWxzZSBpZiAoZXJyb3IgPT0gRU5PRU5UKSB7Ci0JCWlmICh2cDEtPnZfdHlwZSAhPSBW
RElSICYmIHRzID09IHRydWUpIHsKKwkJaWYgKHZwMS0+dl90eXBlICE9IFZESVIgJiYgdHMpIHsK
IAkJCWVycm9yID0gRU5PVERJUjsKIAkJCWdvdG8gZXJyMjsKIAkJfQpAQCAtNzg3LDcgKzc4Nyw3
IEBAIHN5c19yZW5hbWUoY2hhciAqc3JjLCBjaGFyICpkZXN0KQogCX0KIAogCWRuYW1lID0gc3Ry
cmNocihkZXN0LCAnLycpOwotCWlmIChkbmFtZSA9PSBudWxscHRyKSB7CisJaWYgKGRuYW1lID09
IE5VTEwpIHsKIAkJZXJyb3IgPSBFTk9URElSOwogCQlnb3RvIGVycjI7CiAJfQpAQCAtODQ4LDE1
ICs4NDgsMTUgQEAgc3lzX3N5bWxpbmsoY29uc3QgY2hhciAqb2xkcGF0aCwgY29uc3QgY2hhciAq
bmV3cGF0aCkKIAlzdHJ1Y3QgZGVudHJ5CSpuZXdkaXJkcDsKIAljaGFyCQkqbmFtZTsKIAotCWlm
IChvbGRwYXRoID09IG51bGxwdHIgfHwgbmV3cGF0aCA9PSBudWxscHRyKSB7CisJaWYgKG9sZHBh
dGggPT0gTlVMTCB8fCBuZXdwYXRoID09IE5VTEwpIHsKIAkJcmV0dXJuIChFRkFVTFQpOwogCX0K
IAogCURQUklOVEYoVkZTREJfU1lTQ0FMTCwgKCJzeXNfbGluazogb2xkcGF0aD0lcyBuZXdwYXRo
PSVzXG4iLAogCQkJCW9sZHBhdGgsIG5ld3BhdGgpKTsKIAotCW5ld2RwCQk9IG51bGxwdHI7Ci0J
bmV3ZGlyZHAJPSBudWxscHRyOworCW5ld2RwCQk9IE5VTEw7CisJbmV3ZGlyZHAJPSBOVUxMOwog
CiAJZXJyb3IgPSB0YXNrX2NvbnYodCwgbmV3cGF0aCwgVldSSVRFLCBucCk7CiAJaWYgKGVycm9y
ICE9IDApIHsKQEAgLTg5Miw3ICs4OTIsNyBAQCBzeXNfc3ltbGluayhjb25zdCBjaGFyICpvbGRw
YXRoLCBjb25zdCBjaGFyICpuZXdwYXRoKQogCWVycm9yID0gVk9QX1NZTUxJTksobmV3ZGlyZHAt
PmRfdm5vZGUsIG5hbWUsIG9wKTsKIAogb3V0OgotCWlmIChuZXdkaXJkcCAhPSBudWxscHRyKSB7
CisJaWYgKG5ld2RpcmRwICE9IE5VTEwpIHsKIAkJdm5fdW5sb2NrKG5ld2RpcmRwLT5kX3Zub2Rl
KTsKIAkJZHJlbGUobmV3ZGlyZHApOwogCX0KQEAgLTk3Miw5ICs5NzIsOSBAQCBzeXNfdW5saW5r
KGNoYXIgKnBhdGgpCiAKIAlEUFJJTlRGKFZGU0RCX1NZU0NBTEwsICgic3lzX3VubGluazogcGF0
aD0lc1xuIiwgcGF0aCkpOwogCi0JZGRwICAgPSBudWxscHRyOwotCWRwICAgID0gbnVsbHB0cjsK
LQl2cCAgICA9IG51bGxwdHI7CisJZGRwICAgPSBOVUxMOworCWRwICAgID0gTlVMTDsKKwl2cCAg
ICA9IE5VTEw7CiAKIAllcnJvciA9IGxvb2t1cChwYXRoLCAmZGRwLCAmbmFtZSk7CiAJaWYgKGVy
cm9yICE9IDApIHsKQEAgLTEwMTMsMTUgKzEwMTMsMTUgQEAgc3lzX3VubGluayhjaGFyICpwYXRo
KQogCWRyZWxlKGRwKTsKIAlyZXR1cm4gZXJyb3I7CiAgb3V0OgotCWlmICh2cCAhPSBudWxscHRy
KSB7CisJaWYgKHZwICE9IE5VTEwpIHsKIAkJdm5fdW5sb2NrKHZwKTsKIAl9CiAKLQlpZiAoZHAg
IT0gbnVsbHB0cikgeworCWlmIChkcCAhPSBOVUxMKSB7CiAJCWRyZWxlKGRwKTsKIAl9CiAKLQlp
ZiAoZGRwICE9IG51bGxwdHIpIHsKKwlpZiAoZGRwICE9IE5VTEwpIHsKIAkJZHJlbGUoZGRwKTsK
IAl9CiAJcmV0dXJuIGVycm9yOwpAQCAtMTExNSw3ICsxMTE1LDcgQEAgc3lzX3N0YXRmcyhjaGFy
ICpwYXRoLCBzdHJ1Y3Qgc3RhdGZzICpidWYpCiB9CiAKIGludAotc3lzX2ZzdGF0ZnMoc3RydWN0
IGZpbGUgKmZwLCBzdHJ1Y3Qgc3RhdGZzICpidWYpCitzeXNfZnN0YXRmcyhzdHJ1Y3QgdmZzY29y
ZV9maWxlICpmcCwgc3RydWN0IHN0YXRmcyAqYnVmKQogewogCXN0cnVjdCB2bm9kZSAqdnA7CiAJ
aW50IGVycm9yID0gMDsKQEAgLTExNTIsNyArMTE1Miw3IEBAIHN5c190cnVuY2F0ZShjaGFyICpw
YXRoLCBvZmZfdCBsZW5ndGgpCiB9CiAKIGludAotc3lzX2Z0cnVuY2F0ZShzdHJ1Y3QgZmlsZSAq
ZnAsIG9mZl90IGxlbmd0aCkKK3N5c19mdHJ1bmNhdGUoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAs
IG9mZl90IGxlbmd0aCkKIHsKIAlzdHJ1Y3Qgdm5vZGUgKnZwOwogCWludCBlcnJvcjsKQEAgLTEx
NjksNyArMTE2OSw3IEBAIHN5c19mdHJ1bmNhdGUoc3RydWN0IGZpbGUgKmZwLCBvZmZfdCBsZW5n
dGgpCiB9CiAKIGludAotc3lzX2ZjaGRpcihzdHJ1Y3QgZmlsZSAqZnAsIGNoYXIgKmN3ZCkKK3N5
c19mY2hkaXIoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAsIGNoYXIgKmN3ZCkKIHsKIAlzdHJ1Y3Qg
dm5vZGUgKmR2cDsKIApAQCAtMTI0NCw3ICsxMjQ0LDcgQEAgc3lzX3JlYWRsaW5rKGNoYXIgKnBh
dGgsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnNpemUsIHNzaXplX3QgKnNpemUpCiAvKgogICogQ2hl
Y2sgdGhlIHZhbGlkaXR5IG9mIHRoZSBtZW1iZXJzIG9mIGEgc3RydWN0IHRpbWV2YWwuCiAgKi8K
LXN0YXRpYyBib29sIGlzX3RpbWV2YWxfdmFsaWQoY29uc3Qgc3RydWN0IHRpbWV2YWwgKnRpbWUp
CitzdGF0aWMgaW50IGlzX3RpbWV2YWxfdmFsaWQoY29uc3Qgc3RydWN0IHRpbWV2YWwgKnRpbWUp
CiB7CiAJcmV0dXJuICh0aW1lLT50dl9zZWMgPj0gMCkgJiYKIAkJICAgKHRpbWUtPnR2X3VzZWMg
Pj0gMCAmJiB0aW1lLT50dl91c2VjIDwgMTAwMDAwMCk7CkBAIC0xMjc2LDE4ICsxMjc2LDE4IEBA
IHN5c191dGltZXMoY2hhciAqcGF0aCwgY29uc3Qgc3RydWN0IHRpbWV2YWwgdGltZXNbMl0sIGlu
dCBmbGFncykKIAkJcmV0dXJuIEVJTlZBTDsKIAogCS8vIENvbnZlcnQgZWFjaCBlbGVtZW50IG9m
IHRpbWV2YWwgYXJyYXkgdG8gdGhlIHRpbWVzcGVjIHR5cGUKLQljb252ZXJ0X3RpbWV2YWwodGlt
ZXNwZWNfdGltZXNbMF0sIHRpbWVzID8gdGltZXMgKyAwIDogbnVsbHB0cik7Ci0JY29udmVydF90
aW1ldmFsKHRpbWVzcGVjX3RpbWVzWzFdLCB0aW1lcyA/IHRpbWVzICsgMSA6IG51bGxwdHIpOwor
CWNvbnZlcnRfdGltZXZhbCh0aW1lc3BlY190aW1lc1swXSwgdGltZXMgPyB0aW1lcyArIDAgOiBO
VUxMKTsKKwljb252ZXJ0X3RpbWV2YWwodGltZXNwZWNfdGltZXNbMV0sIHRpbWVzID8gdGltZXMg
KyAxIDogTlVMTCk7CiAKIAlpZiAoZmxhZ3MgJiBBVF9TWU1MSU5LX05PRk9MTE9XKSB7CiAJCXN0
cnVjdCBkZW50cnkgKmRkcDsKLQkJZXJyb3IgPSBsb29rdXAocGF0aCwgJmRkcCwgbnVsbHB0cik7
CisJCWVycm9yID0gbG9va3VwKHBhdGgsICZkZHAsIE5VTEwpOwogCQlpZiAoZXJyb3IpIHsKIAkJ
CXJldHVybiBlcnJvcjsKIAkJfQogCiAJCWVycm9yID0gbmFtZWlfbGFzdF9ub2ZvbGxvdyhwYXRo
LCBkZHAsICZkcCk7Ci0JCWlmIChkZHAgIT0gbnVsbHB0cikgeworCQlpZiAoZGRwICE9IE5VTEwp
IHsKIAkJCWRyZWxlKGRkcCk7CiAJCX0KIAkJaWYgKGVycm9yKSB7CkBAIC0xMzEyLDcgKzEzMTIs
NyBAQCBzeXNfdXRpbWVzKGNoYXIgKnBhdGgsIGNvbnN0IHN0cnVjdCB0aW1ldmFsIHRpbWVzWzJd
LCBpbnQgZmxhZ3MpCiAvKgogICogQ2hlY2sgdGhlIHZhbGlkaXR5IG9mIG1lbWJlcnMgb2YgYSBz
dHJ1Y3QgdGltZXNwZWMKICAqLwotc3RhdGljIGJvb2wgaXNfdGltZXNwZWNfdmFsaWQoY29uc3Qg
c3RydWN0IHRpbWVzcGVjICZ0aW1lKQorc3RhdGljIGludCBpc190aW1lc3BlY192YWxpZChjb25z
dCBzdHJ1Y3QgdGltZXNwZWMgJnRpbWUpCiB7CiAJcmV0dXJuICh0aW1lLnR2X3NlYyA+PSAwKSAm
JgogCSAgICgodGltZS50dl9uc2VjID49IDAgJiYgdGltZS50dl9uc2VjIDw9IDk5OTk5OTk5OSkg
fHwKQEAgLTEzMjIsNyArMTMyMiw3IEBAIHN0YXRpYyBib29sIGlzX3RpbWVzcGVjX3ZhbGlkKGNv
bnN0IHN0cnVjdCB0aW1lc3BlYyAmdGltZSkKIAogdm9pZCBpbml0X3RpbWVzcGVjKHN0cnVjdCB0
aW1lc3BlYyAmX3RpbWVzLCBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKnRpbWVzKQogewotCWlmICh0
aW1lcyA9PSBudWxscHRyIHx8IHRpbWVzLT50dl9uc2VjID09IFVUSU1FX05PVykgeworCWlmICh0
aW1lcyA9PSBOVUxMIHx8IHRpbWVzLT50dl9uc2VjID09IFVUSU1FX05PVykgewogCQljbG9ja19n
ZXR0aW1lKENMT0NLX1JFQUxUSU1FLCAmX3RpbWVzKTsKIAl9IGVsc2UgewogCQlfdGltZXMudHZf
c2VjID0gdGltZXMtPnR2X3NlYzsKQEAgLTEzNTAsOCArMTM1MCw4IEBAIHN5c191dGltZW5zYXQo
aW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwgY29uc3Qgc3RydWN0IHRpbWVzcGVjIHRp
bWVzWzJdLCBpCiAJaWYgKHRpbWVzICYmICghaXNfdGltZXNwZWNfdmFsaWQodGltZXNbMF0pIHx8
ICFpc190aW1lc3BlY192YWxpZCh0aW1lc1sxXSkpKQogCQlyZXR1cm4gRUlOVkFMOwogCi0JaW5p
dF90aW1lc3BlYyh0aW1lc3BlY190aW1lc1swXSwgdGltZXMgPyB0aW1lcyArIDAgOiBudWxscHRy
KTsKLQlpbml0X3RpbWVzcGVjKHRpbWVzcGVjX3RpbWVzWzFdLCB0aW1lcyA/IHRpbWVzICsgMSA6
IG51bGxwdHIpOworCWluaXRfdGltZXNwZWModGltZXNwZWNfdGltZXNbMF0sIHRpbWVzID8gdGlt
ZXMgKyAwIDogTlVMTCk7CisJaW5pdF90aW1lc3BlYyh0aW1lc3BlY190aW1lc1sxXSwgdGltZXMg
PyB0aW1lcyArIDEgOiBOVUxMKTsKIAogCWlmIChwYXRobmFtZSAmJiBwYXRobmFtZVswXSA9PSAn
LycpIHsKIAlhcCA9IHBhdGhuYW1lOwpAQCAtMTM2MCw3ICsxMzYwLDcgQEAgc3lzX3V0aW1lbnNh
dChpbnQgZGlyZmQsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBjb25zdCBzdHJ1Y3QgdGltZXNwZWMg
dGltZXNbMl0sIGkKIAkgICAgcmV0dXJuIEVGQVVMVDsKIAlhcCA9IHN0ZDo6c3RyaW5nKG1haW5f
dGFzay0+dF9jd2QpICsgIi8iICsgcGF0aG5hbWU7CiAJfSBlbHNlIHsKLQkJc3RydWN0IGZpbGUg
KmZwOworCQlzdHJ1Y3QgdmZzY29yZV9maWxlICpmcDsKIAkJZmlsZXJlZiBmKGZpbGVyZWZfZnJv
bV9mZChkaXJmZCkpOwogCiAJCWlmICghZikKQEAgLTE0MTAsNyArMTQxMCw3IEBAIHN5c191dGlt
ZW5zYXQoaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwgY29uc3Qgc3RydWN0IHRpbWVz
cGVjIHRpbWVzWzJdLCBpCiBpbnQKIHN5c19mdXRpbWVucyhpbnQgZmQsIGNvbnN0IHN0cnVjdCB0
aW1lc3BlYyB0aW1lc1syXSkKIHsKLQlzdHJ1Y3QgZmlsZSAqZnA7CisJc3RydWN0IHZmc2NvcmVf
ZmlsZSAqZnA7CiAKIAlmaWxlcmVmIGYoZmlsZXJlZl9mcm9tX2ZkKGZkKSk7CiAJaWYgKCFmKQpA
QCAtMTQyOCw3ICsxNDI4LDcgQEAgc3lzX2Z1dGltZW5zKGludCBmZCwgY29uc3Qgc3RydWN0IHRp
bWVzcGVjIHRpbWVzWzJdKQogI2VuZGlmCiAKIGludAotc3lzX2ZhbGxvY2F0ZShzdHJ1Y3QgZmls
ZSAqZnAsIGludCBtb2RlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuKQorc3lzX2ZhbGxvY2F0
ZShzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCwgaW50IG1vZGUsIG9mZl90IG9mZnNldCwgb2ZmX3Qg
bGVuKQogewogCWludCBlcnJvcjsKIAlzdHJ1Y3Qgdm5vZGUgKnZwOwpAQCAtMTQ5Myw3ICsxNDkz
LDcgQEAgc3lzX2NobW9kKGNvbnN0IGNoYXIgKnBhdGgsIG1vZGVfdCBtb2RlKQogaW50CiBzeXNf
ZmNobW9kKGludCBmZCwgbW9kZV90IG1vZGUpCiB7Ci0JZmlsZXJlZiBmKGZpbGVyZWZfZnJvbV9m
ZChmZCkpOworCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmYgPSB2ZnNjb3JlX2dldF9maWxlKGZkKTsK
IAlpZiAoIWYpCiAJCXJldHVybiBFQkFERjsKIAkvLyBQb3NpeCBpcyBhbWJpdmFsZW50IG9uIHdo
YXQgZmNobW9kKCkgc2hvdWxkIGRvIG9uIGFuIGZkIHRoYXQgZG9lcyBub3QKZGlmZiAtLWdpdCBh
L2xpYi92ZnNjb3JlL3Zmcy5oIGIvbGliL3Zmc2NvcmUvdmZzLmgKaW5kZXggMjUzMWY3MzAuLjE5
ZjhhYzg3IDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS92ZnMuaAorKysgYi9saWIvdmZzY29yZS92
ZnMuaApAQCAtNTcsNyArNTcsNyBAQCBleHRlcm4gaW50IHZmc19kZWJ1ZzsKIAogI2RlZmluZSBW
RlNEQl9GTEFHUwkweDAwMDAwMDEzCiAKLSNkZWZpbmUJRFBSSU5URihfbSxYKQlpZiAodmZzX2Rl
YnVnICYgKF9tKSkga3ByaW50ZiBYCisjZGVmaW5lCURQUklOVEYoX20sWCkJaWYgKHZmc19kZWJ1
ZyAmIChfbSkpIHVrX3ByX2RlYnVnIFgKICNlbHNlCiAjZGVmaW5lCURQUklOVEYoX20sIFgpCiAj
ZW5kaWYKQEAgLTcxLDI4ICs3MSwyNiBAQCBleHRlcm4gaW50IHZmc19kZWJ1ZzsKICAqLwogc3Ry
dWN0IHRhc2sgewogCWNoYXIgCSAgICB0X2N3ZFtQQVRIX01BWF07CS8qIGN1cnJlbnQgd29ya2lu
ZyBkaXJlY3RvcnkgKi8KLQlzdHJ1Y3QgZmlsZSAqdF9jd2RmcDsJCS8qIGRpcmVjdG9yeSBmb3Ig
Y3dkICovCisJc3RydWN0IHZmc2NvcmVfZmlsZSAqdF9jd2RmcDsJCS8qIGRpcmVjdG9yeSBmb3Ig
Y3dkICovCiB9OwogCi1leHRlcm4gY29uc3Qgc3RydWN0IHZmc3N3IHZmc3N3W107Ci0KLWludAkg
c3lzX29wZW4oY2hhciAqcGF0aCwgaW50IGZsYWdzLCBtb2RlX3QgbW9kZSwgc3RydWN0IGZpbGUg
KipmcCk7Ci1pbnQJIHN5c19yZWFkKHN0cnVjdCBmaWxlICpmcCwgY29uc3Qgc3RydWN0IGlvdmVj
ICppb3YsIHNpemVfdCBuaW92LAoraW50CSBzeXNfb3BlbihjaGFyICpwYXRoLCBpbnQgZmxhZ3Ms
IG1vZGVfdCBtb2RlLCBzdHJ1Y3QgdmZzY29yZV9maWxlICoqZnApOworaW50CSBzeXNfcmVhZChz
dHJ1Y3QgdmZzY29yZV9maWxlICpmcCwgY29uc3Qgc3RydWN0IGlvdmVjICppb3YsIHNpemVfdCBu
aW92LAogCQlvZmZfdCBvZmZzZXQsIHNpemVfdCAqY291bnQpOwotaW50CSBzeXNfd3JpdGUoc3Ry
dWN0IGZpbGUgKmZwLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlvdiwgc2l6ZV90IG5pb3YsCitpbnQJ
IHN5c193cml0ZShzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCwgY29uc3Qgc3RydWN0IGlvdmVjICpp
b3YsIHNpemVfdCBuaW92LAogCQlvZmZfdCBvZmZzZXQsIHNpemVfdCAqY291bnQpOwotaW50CSBz
eXNfbHNlZWsoc3RydWN0IGZpbGUgKmZwLCBvZmZfdCBvZmYsIGludCB0eXBlLCBvZmZfdCAqIGN1
cl9vZmYpOwotaW50CSBzeXNfaW9jdGwoc3RydWN0IGZpbGUgKmZwLCB1X2xvbmcgcmVxdWVzdCwg
dm9pZCAqYnVmKTsKLWludAkgc3lzX2ZzdGF0KHN0cnVjdCBmaWxlICpmcCwgc3RydWN0IHN0YXQg
KnN0KTsKLWludAkgc3lzX2ZzdGF0ZnMoc3RydWN0IGZpbGUgKmZwLCBzdHJ1Y3Qgc3RhdGZzICpi
dWYpOwotaW50CSBzeXNfZnN5bmMoc3RydWN0IGZpbGUgKmZwKTsKLWludAkgc3lzX2Z0cnVuY2F0
ZShzdHJ1Y3QgZmlsZSAqZnAsIG9mZl90IGxlbmd0aCk7Ci0KLWludAkgc3lzX3JlYWRkaXIoc3Ry
dWN0IGZpbGUgKmZwLCBzdHJ1Y3QgZGlyZW50ICpkaXJlbnQpOwotaW50CSBzeXNfcmV3aW5kZGly
KHN0cnVjdCBmaWxlICpmcCk7Ci1pbnQJIHN5c19zZWVrZGlyKHN0cnVjdCBmaWxlICpmcCwgbG9u
ZyBsb2MpOwotaW50CSBzeXNfdGVsbGRpcihzdHJ1Y3QgZmlsZSAqZnAsIGxvbmcgKmxvYyk7Ci1p
bnQJIHN5c19mY2hkaXIoc3RydWN0IGZpbGUgKmZwLCBjaGFyICpwYXRoKTsKK2ludAkgc3lzX2xz
ZWVrKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwLCBvZmZfdCBvZmYsIGludCB0eXBlLCBvZmZfdCAq
IGN1cl9vZmYpOworaW50CSBzeXNfaW9jdGwoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAsIHVuc2ln
bmVkIGxvbmcgcmVxdWVzdCwgdm9pZCAqYnVmKTsKK2ludAkgc3lzX2ZzdGF0KHN0cnVjdCB2ZnNj
b3JlX2ZpbGUgKmZwLCBzdHJ1Y3Qgc3RhdCAqc3QpOworaW50CSBzeXNfZnN0YXRmcyhzdHJ1Y3Qg
dmZzY29yZV9maWxlICpmcCwgc3RydWN0IHN0YXRmcyAqYnVmKTsKK2ludAkgc3lzX2ZzeW5jKHN0
cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwKTsKK2ludAkgc3lzX2Z0cnVuY2F0ZShzdHJ1Y3QgdmZzY29y
ZV9maWxlICpmcCwgb2ZmX3QgbGVuZ3RoKTsKKworaW50CSBzeXNfcmVhZGRpcihzdHJ1Y3QgdmZz
Y29yZV9maWxlICpmcCwgc3RydWN0IGRpcmVudCAqZGlyZW50KTsKK2ludAkgc3lzX3Jld2luZGRp
cihzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCk7CitpbnQJIHN5c19zZWVrZGlyKHN0cnVjdCB2ZnNj
b3JlX2ZpbGUgKmZwLCBsb25nIGxvYyk7CitpbnQJIHN5c190ZWxsZGlyKHN0cnVjdCB2ZnNjb3Jl
X2ZpbGUgKmZwLCBsb25nICpsb2MpOworaW50CSBzeXNfZmNoZGlyKHN0cnVjdCB2ZnNjb3JlX2Zp
bGUgKmZwLCBjaGFyICpwYXRoKTsKIAogaW50CSBzeXNfbWtkaXIoY2hhciAqcGF0aCwgbW9kZV90
IG1vZGUpOwogaW50CSBzeXNfcm1kaXIoY2hhciAqcGF0aCk7CkBAIC0xMTEsNyArMTA5LDcgQEAg
aW50ICBzeXNfdXRpbWVzKGNoYXIgKnBhdGgsIGNvbnN0IHN0cnVjdCB0aW1ldmFsIHRpbWVzWzJd
LCBpbnQgZmxhZ3MpOwogaW50ICBzeXNfdXRpbWVuc2F0KGludCBkaXJmZCwgY29uc3QgY2hhciAq
cGF0aG5hbWUsCiAJCQkJICAgY29uc3Qgc3RydWN0IHRpbWVzcGVjIHRpbWVzWzJdLCBpbnQgZmxh
Z3MpOwogaW50ICBzeXNfZnV0aW1lbnMoaW50IGZkLCBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgdGlt
ZXNbMl0pOwotaW50ICBzeXNfZmFsbG9jYXRlKHN0cnVjdCBmaWxlICpmcCwgaW50IG1vZGUsIGxv
ZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4pOworaW50ICBzeXNfZmFsbG9jYXRlKHN0cnVjdCB2ZnNj
b3JlX2ZpbGUgKmZwLCBpbnQgbW9kZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbik7CiAKIGlu
dAkgc3lzX21vdW50KGNvbnN0IGNoYXIgKmRldiwgY29uc3QgY2hhciAqZGlyLCBjb25zdCBjaGFy
ICpmc25hbWUsIGludCBmbGFncywgY29uc3Qgdm9pZCAqZGF0YSk7CiBpbnQJIHN5c191bW91bnQy
KGNvbnN0IGNoYXIgKnBhdGgsIGludCBmbGFncyk7CmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS92
bm9kZS5jIGIvbGliL3Zmc2NvcmUvdm5vZGUuYwppbmRleCA4MWY3OGJlOC4uYTJmNDU1OTYgMTAw
NjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL3Zub2RlLmMKKysrIGIvbGliL3Zmc2NvcmUvdm5vZGUuYwpA
QCAtNzcsMjQgKzc3LDI3IEBAIGludCB2dHRvaWZfdGFiWzEwXSA9IHsKICAqIEFsbCBhY3RpdmUg
KG9wZW5lZCkgdm5vZGVzIGFyZSBzdG9yZWQgb24gdGhpcyBoYXNoIHRhYmxlLgogICogVGhleSBj
YW4gYmUgYWNjZXNzZWQgYnkgaXRzIHBhdGggbmFtZS4KICAqLwotc3RhdGljIExJU1RfSEVBRCh2
bm9kZV9oYXNoX2hlYWQsIHZub2RlKSB2bm9kZV90YWJsZVtWTk9ERV9CVUNLRVRTXTsKK3N0YXRp
YyBzdHJ1Y3QgdWtfbGlzdF9oZWFkIHZub2RlX3RhYmxlW1ZOT0RFX0JVQ0tFVFNdOwogCiAvKgog
ICogR2xvYmFsIGxvY2sgdG8gYWNjZXNzIGFsbCB2bm9kZXMgYW5kIHZub2RlIHRhYmxlLgogICog
SWYgYSB2bm9kZSBpcyBhbHJlYWR5IGxvY2tlZCwgdGhlcmUgaXMgbm8gbmVlZCB0bwogICogbG9j
ayB0aGlzIGdsb2JhbCBsb2NrIHRvIGFjY2VzcyBpbnRlcm5hbCBkYXRhLgogICovCi1zdGF0aWMg
bXV0ZXhfdCB2bm9kZV9sb2NrID0gTVVURVhfSU5JVElBTElaRVI7Ci0jZGVmaW5lIFZOT0RFX0xP
Q0soKQltdXRleF9sb2NrKCZ2bm9kZV9sb2NrKQotI2RlZmluZSBWTk9ERV9VTkxPQ0soKQltdXRl
eF91bmxvY2soJnZub2RlX2xvY2spCi0jZGVmaW5lIFZOT0RFX09XTkVEKCkJbXV0ZXhfb3duZWQo
JnZub2RlX2xvY2spCitzdGF0aWMgc3RydWN0IHVrX211dGV4IHZub2RlX2xvY2sgPSBVS19NVVRF
WF9JTklUSUFMSVpFUih2bm9kZV9sb2NrKTsKKyNkZWZpbmUgVk5PREVfTE9DSygpCXVrX211dGV4
X2xvY2soJnZub2RlX2xvY2spCisjZGVmaW5lIFZOT0RFX1VOTE9DSygpCXVrX211dGV4X3VubG9j
aygmdm5vZGVfbG9jaykKKworLyogVE9ETzogaW1wbGVtZW50IG11dGV4X293bmVkICovCisjZGVm
aW5lIFZOT0RFX09XTkVEKCkJKDEpCisvKiAjZGVmaW5lIFZOT0RFX09XTkVEKCkJbXV0ZXhfb3du
ZWQoJnZub2RlX2xvY2spICovCisKIAogLyoKICAqIEdldCB0aGUgaGFzaCB2YWx1ZSBmcm9tIHRo
ZSBtb3VudCBwb2ludCBhbmQgcGF0aCBuYW1lLgogICogWFhYKGhjaCk6IHJlcGxhY2Ugd2l0aCBh
IGJldHRlciBoYXNoIGZvciA2NC1iaXQgcG9pbnRlcnMuCiAgKi8KLXN0YXRpYyB1X2ludAotdm5f
aGFzaChzdHJ1Y3QgbW91bnQgKm1wLCB1aW50NjRfdCBpbm8pCitzdGF0aWMgdW5zaWduZWQgaW50
IHZuX2hhc2goc3RydWN0IG1vdW50ICptcCwgdWludDY0X3QgaW5vKQogewogCXJldHVybiAoaW5v
IF4gKHVuc2lnbmVkIGxvbmcpbXApICYgKFZOT0RFX0JVQ0tFVFMgLSAxKTsKIH0KQEAgLTExMCwx
NiArMTEzLDE1IEBAIHZuX2xvb2t1cChzdHJ1Y3QgbW91bnQgKm1wLCB1aW50NjRfdCBpbm8pCiB7
CiAJc3RydWN0IHZub2RlICp2cDsKIAotCWFzc2VydChWTk9ERV9PV05FRCgpKTsKLQlMSVNUX0ZP
UkVBQ0godnAsICZ2bm9kZV90YWJsZVt2bl9oYXNoKG1wLCBpbm8pXSwgdl9saW5rKSB7CisJVUtf
QVNTRVJUKFZOT0RFX09XTkVEKCkpOworCXVrX2xpc3RfZm9yX2VhY2hfZW50cnkodnAsICZ2bm9k
ZV90YWJsZVt2bl9oYXNoKG1wLCBpbm8pXSwgdl9saW5rKSB7CiAJCWlmICh2cC0+dl9tb3VudCA9
PSBtcCAmJiB2cC0+dl9pbm8gPT0gaW5vKSB7CiAJCQl2cC0+dl9yZWZjbnQrKzsKLQkJCW11dGV4
X2xvY2soJnZwLT52X2xvY2spOwotCQkJdnAtPnZfbnJsb2NrcysrOworCQkJdWtfbXV0ZXhfbG9j
aygmdnAtPnZfbG9jayk7CiAJCQlyZXR1cm4gdnA7CiAJCX0KIAl9Ci0JcmV0dXJuIG51bGxwdHI7
CQkvKiBub3QgZm91bmQgKi8KKwlyZXR1cm4gTlVMTDsJCS8qIG5vdCBmb3VuZCAqLwogfQogCiAj
aWZkZWYgREVCVUdfVkZTCkBAIC0xMjgsMTAgKzEzMCwxMCBAQCB2bl9wYXRoKHN0cnVjdCB2bm9k
ZSAqdnApCiB7CiAJc3RydWN0IGRlbnRyeSAqZHA7CiAKLQlpZiAoTElTVF9FTVBUWSgmdnAtPnZf
bmFtZXMpID09IDEpIHsKKwlpZiAodWtfbGlzdF9lbXB0eSgmdnAtPnZfbmFtZXMpID09IDEpIHsK
IAkJcmV0dXJuICgiICIpOwogCX0KLQlkcCA9IExJU1RfRklSU1QoJnZwLT52X25hbWVzKTsKKwlk
cCA9IHVrX2xpc3RfZmlyc3RfZW50cnkoJnZwLT52X25hbWVzLCBzdHJ1Y3QgZGVudHJ5LCBkX25h
bWVzX2xpbmspOwogCXJldHVybiAoZHAtPmRfcGF0aCk7CiB9CiAjZW5kaWYKQEAgLTE0MiwxMSAr
MTQ0LDEwIEBAIHZuX3BhdGgoc3RydWN0IHZub2RlICp2cCkKIHZvaWQKIHZuX2xvY2soc3RydWN0
IHZub2RlICp2cCkKIHsKLQlBU1NFUlQodnApOwotCUFTU0VSVCh2cC0+dl9yZWZjbnQgPiAwKTsK
KwlVS19BU1NFUlQodnApOworCVVLX0FTU0VSVCh2cC0+dl9yZWZjbnQgPiAwKTsKIAotCW11dGV4
X2xvY2soJnZwLT52X2xvY2spOwotCXZwLT52X25ybG9ja3MrKzsKKwl1a19tdXRleF9sb2NrKCZ2
cC0+dl9sb2NrKTsKIAlEUFJJTlRGKFZGU0RCX1ZOT0RFLCAoInZuX2xvY2s6ICAgJXNcbiIsIHZu
X3BhdGgodnApKSk7CiB9CiAKQEAgLTE1NiwxMiArMTU3LDEwIEBAIHZuX2xvY2soc3RydWN0IHZu
b2RlICp2cCkKIHZvaWQKIHZuX3VubG9jayhzdHJ1Y3Qgdm5vZGUgKnZwKQogewotCUFTU0VSVCh2
cCk7Ci0JQVNTRVJUKHZwLT52X3JlZmNudCA+IDApOwotCUFTU0VSVCh2cC0+dl9ucmxvY2tzID4g
MCk7CisJVUtfQVNTRVJUKHZwKTsKKwlVS19BU1NFUlQodnAtPnZfcmVmY250ID49IDApOwogCi0J
dnAtPnZfbnJsb2Nrcy0tOwotCW11dGV4X3VubG9jaygmdnAtPnZfbG9jayk7CisJdWtfbXV0ZXhf
dW5sb2NrKCZ2cC0+dl9sb2NrKTsKIAlEUFJJTlRGKFZGU0RCX1ZOT0RFLCAoInZuX2xvY2s6ICAg
JXNcbiIsIHZuX3BhdGgodnApKSk7CiB9CiAKQEAgLTE3Niw3ICsxNzUsNyBAQCB2Z2V0KHN0cnVj
dCBtb3VudCAqbXAsIHVpbnQ2NF90IGlubywgc3RydWN0IHZub2RlICoqdnBwKQogCXN0cnVjdCB2
bm9kZSAqdnA7CiAJaW50IGVycm9yOwogCi0JKnZwcCA9IG51bGxwdHI7CisJKnZwcCA9IE5VTEw7
CiAKIAlEUFJJTlRGKFZGU0RCX1ZOT0RFLCAoInZnZXQgJUxMdVxuIiwgaW5vKSk7CiAKQEAgLTE5
NSwyNiArMTk0LDI0IEBAIHZnZXQoc3RydWN0IG1vdW50ICptcCwgdWludDY0X3QgaW5vLCBzdHJ1
Y3Qgdm5vZGUgKip2cHApCiAJCXJldHVybiAwOwogCX0KIAotCUxJU1RfSU5JVCgmdnAtPnZfbmFt
ZXMpOworCVVLX0lOSVRfTElTVF9IRUFEKCZ2cC0+dl9uYW1lcyk7CiAJdnAtPnZfaW5vID0gaW5v
OwogCXZwLT52X21vdW50ID0gbXA7CiAJdnAtPnZfcmVmY250ID0gMTsKIAl2cC0+dl9vcCA9IG1w
LT5tX29wLT52ZnNfdm5vcHM7Ci0JdnAtPnZfbnJsb2NrcyA9IDA7Ci0KKwl1a19tdXRleF9pbml0
KCZ2cC0+dl9sb2NrKTsKIAkvKgogCSAqIFJlcXVlc3QgdG8gYWxsb2NhdGUgZnMgc3BlY2lmaWMg
ZGF0YSBmb3Igdm5vZGUuCiAJICovCiAJaWYgKChlcnJvciA9IFZGU19WR0VUKG1wLCB2cCkpICE9
IDApIHsKIAkJVk5PREVfVU5MT0NLKCk7Ci0JCWRlbGV0ZSB2cDsKKwkJZnJlZSh2cCk7CiAJCXJl
dHVybiBlcnJvcjsKIAl9CiAJdmZzX2J1c3kodnAtPnZfbW91bnQpOwotCW11dGV4X2xvY2soJnZw
LT52X2xvY2spOwotCXZwLT52X25ybG9ja3MrKzsKKwl1a19tdXRleF9sb2NrKCZ2cC0+dl9sb2Nr
KTsKIAotCUxJU1RfSU5TRVJUX0hFQUQoJnZub2RlX3RhYmxlW3ZuX2hhc2gobXAsIGlubyldLCB2
cCwgdl9saW5rKTsKKwl1a19saXN0X2FkZCgmdnAtPnZfbGluaywgJnZub2RlX3RhYmxlW3ZuX2hh
c2gobXAsIGlubyldKTsKIAlWTk9ERV9VTkxPQ0soKTsKIAogCSp2cHAgPSB2cDsKQEAgLTIyOCw5
ICsyMjUsOCBAQCB2Z2V0KHN0cnVjdCBtb3VudCAqbXAsIHVpbnQ2NF90IGlubywgc3RydWN0IHZu
b2RlICoqdnBwKQogdm9pZAogdnB1dChzdHJ1Y3Qgdm5vZGUgKnZwKQogewotCUFTU0VSVCh2cCk7
Ci0JQVNTRVJUKHZwLT52X25ybG9ja3MgPiAwKTsKLQlBU1NFUlQodnAtPnZfcmVmY250ID4gMCk7
CisJVUtfQVNTRVJUKHZwKTsKKwlVS19BU1NFUlQodnAtPnZfcmVmY250ID4gMCk7CiAJRFBSSU5U
RihWRlNEQl9WTk9ERSwgKCJ2cHV0OiByZWY9JWQgJXNcbiIsIHZwLT52X3JlZmNudCwgdm5fcGF0
aCh2cCkpKTsKIAogCVZOT0RFX0xPQ0soKTsKQEAgLTI0MCw3ICsyMzYsNyBAQCB2cHV0KHN0cnVj
dCB2bm9kZSAqdnApCiAJCXZuX3VubG9jayh2cCk7CiAJCXJldHVybjsKIAl9Ci0JTElTVF9SRU1P
VkUodnAsIHZfbGluayk7CisJdWtfbGlzdF9kZWwoJnZwLT52X2xpbmspOwogCVZOT0RFX1VOTE9D
SygpOwogCiAJLyoKQEAgLTI0OSwxMCArMjQ1LDggQEAgdnB1dChzdHJ1Y3Qgdm5vZGUgKnZwKQog
CWlmICh2cC0+dl9vcC0+dm9wX2luYWN0aXZlKQogCQlWT1BfSU5BQ1RJVkUodnApOwogCXZmc191
bmJ1c3kodnAtPnZfbW91bnQpOwotCXZwLT52X25ybG9ja3MtLTsKLQlBU1NFUlQodnAtPnZfbnJs
b2NrcyA9PSAwKTsKLQltdXRleF91bmxvY2soJnZwLT52X2xvY2spOwotCWRlbGV0ZSB2cDsKKwl1
a19tdXRleF91bmxvY2soJnZwLT52X2xvY2spOworCWZyZWUodnApOwogfQogCiAvKgpAQCAtMjYx
LDggKzI1NSw4IEBAIHZwdXQoc3RydWN0IHZub2RlICp2cCkKIHZvaWQKIHZyZWYoc3RydWN0IHZu
b2RlICp2cCkKIHsKLQlBU1NFUlQodnApOwotCUFTU0VSVCh2cC0+dl9yZWZjbnQgPiAwKTsJLyog
TmVlZCB2Z2V0ICovCisJVUtfQVNTRVJUKHZwKTsKKwlVS19BU1NFUlQodnAtPnZfcmVmY250ID4g
MCk7CS8qIE5lZWQgdmZzY29yZV92Z2V0ICovCiAKIAlWTk9ERV9MT0NLKCk7CiAJRFBSSU5URihW
RlNEQl9WTk9ERSwgKCJ2cmVmOiByZWY9JWRcbiIsIHZwLT52X3JlZmNudCkpOwpAQCAtMjc5LDgg
KzI3Myw4IEBAIHZyZWYoc3RydWN0IHZub2RlICp2cCkKIHZvaWQKIHZyZWxlKHN0cnVjdCB2bm9k
ZSAqdnApCiB7Ci0JQVNTRVJUKHZwKTsKLQlBU1NFUlQodnAtPnZfcmVmY250ID4gMCk7CisJVUtf
QVNTRVJUKHZwKTsKKwlVS19BU1NFUlQodnAtPnZfcmVmY250ID4gMCk7CiAKIAlWTk9ERV9MT0NL
KCk7CiAJRFBSSU5URihWRlNEQl9WTk9ERSwgKCJ2cmVsZTogcmVmPSVkXG4iLCB2cC0+dl9yZWZj
bnQpKTsKQEAgLTI4OSw3ICsyODMsNyBAQCB2cmVsZShzdHJ1Y3Qgdm5vZGUgKnZwKQogCQlWTk9E
RV9VTkxPQ0soKTsKIAkJcmV0dXJuOwogCX0KLQlMSVNUX1JFTU9WRSh2cCwgdl9saW5rKTsKKwl1
a19saXN0X2RlbCgmdnAtPnZfbGluayk7CiAJVk5PREVfVU5MT0NLKCk7CiAKIAkvKgpAQCAtMjk3
LDcgKzI5MSw3IEBAIHZyZWxlKHN0cnVjdCB2bm9kZSAqdnApCiAJICovCiAJVk9QX0lOQUNUSVZF
KHZwKTsKIAl2ZnNfdW5idXN5KHZwLT52X21vdW50KTsKLQlkZWxldGUgdnA7CisJZnJlZSh2cCk7
CiB9CiAKIC8qCkBAIC00NTYsMjEgKzQ1MCwyNSBAQCB2bm9kZV9kdW1wKHZvaWQpCiAJCQkgICAi
VkxOSyAiLCAiVlNPQ0siLCAiVkZJRk8iIH07CiAKIAlWTk9ERV9MT0NLKCk7Ci0Ja3ByaW50Zigi
RHVtcCB2bm9kZVxuIik7Ci0Ja3ByaW50ZigiIHZub2RlICAgIG1vdW50ICAgIHR5cGUgIHJlZmNu
dCBibGtubyAgICBwYXRoXG4iKTsKLQlrcHJpbnRmKCIgLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0g
LS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7CisKKwl1
a19wcl9kZWJ1ZygiRHVtcCB2bm9kZVxuIik7CisJdWtfcHJfZGVidWcoIiB2bm9kZSAgICAgICAg
ICAgIG1vdW50ICAgICAgICAgICAgdHlwZSAgcmVmY250IHBhdGhcbiIpOworCXVrX3ByX2RlYnVn
KCIgLS0tLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOwogCiAJZm9yIChpID0gMDsgaSA8IFZOT0RFX0JV
Q0tFVFM7IGkrKykgewotCSAgICAgICAgTElTVF9GT1JFQUNIKHZwLCAmdm5vZGVfdGFibGVbaV0s
IHZfbGluaykgeworCQl1a19saXN0X2Zvcl9lYWNoX2VudHJ5KHZwLCAmdm5vZGVfdGFibGVbaV0s
IHZfbGluaykgewogCQkJbXAgPSB2cC0+dl9tb3VudDsKIAotCQkJa3ByaW50ZigiICUwOHggJTA4
eCAlcyAlNmQgJThkICVzJXNcbiIsICh1X2xvbmcpdnAsCi0JCQkJKHVfbG9uZyltcCwgdHlwZVt2
cC0+dl90eXBlXSwgdnAtPnZfcmVmY250LAotCQkJCShzdHJsZW4obXAtPm1fcGF0aCkgPT0gMSkg
PyAiXDAiIDogbXAtPm1fcGF0aCwKLQkJCQl2bl9wYXRoKHZwKSk7CisKKwkJCXVrX3ByX2RlYnVn
KCIgJTAxNmx4ICUwMTZseCAlcyAlNmQgJXMlc1xuIiwKKwkJCQkgICAgKHVuc2lnbmVkIGxvbmcp
IHZwLAorCQkJCSAgICAodW5zaWduZWQgbG9uZykgbXAsIHR5cGVbdnAtPnZfdHlwZV0sCisJCQkJ
ICAgIHZwLT52X3JlZmNudCwKKwkJCQkgICAgKHN0cmxlbihtcC0+bV9wYXRoKSA9PSAxKSA/ICJc
MCIgOiBtcC0+bV9wYXRoLAorCQkJCSAgICB2bl9wYXRoKHZwKSk7CiAJCX0KIAl9Ci0Ja3ByaW50
ZigiXG4iKTsKKwl1a19wcl9kZWJ1ZygiXG4iKTsKIAlWTk9ERV9VTkxPQ0soKTsKIH0KICNlbmRp
ZgpAQCAtNTA5LDIwICs1MDcsMjIgQEAgdm5vZGVfaW5pdCh2b2lkKQogCWludCBpOwogCiAJZm9y
IChpID0gMDsgaSA8IFZOT0RFX0JVQ0tFVFM7IGkrKykKLQkJTElTVF9JTklUKCZ2bm9kZV90YWJs
ZVtpXSk7CisJCVVLX0lOSVRfTElTVF9IRUFEKCZ2bm9kZV90YWJsZVtpXSk7CiB9CiAKIHZvaWQg
dm5fYWRkX25hbWUoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IGRlbnRyeSAqZHApCiB7Ci0Jdm5f
bG9jayh2cCk7Ci0JTElTVF9JTlNFUlRfSEVBRCgmdnAtPnZfbmFtZXMsIGRwLCBkX25hbWVzX2xp
bmspOwotCXZuX3VubG9jayh2cCk7CisJLyogVE9ETzogUmUtZW5hYmxlIHRoaXMgY2hlY2sgd2hl
biBwcmVlbXB0aW9uIGFuZC9vciBzbXAgaXMKKwkgKiBoZXJlICovCisJLyogVUtfQVNTRVJUKHVr
X211dGV4X2lzX2xvY2tlZCgmdnAtPnZfbG9jaykpOyAqLworCXVrX2xpc3RfYWRkKCZkcC0+ZF9u
YW1lc19saW5rLCAmdnAtPnZfbmFtZXMpOwogfQogCiB2b2lkIHZuX2RlbF9uYW1lKHN0cnVjdCB2
bm9kZSAqdnAsIHN0cnVjdCBkZW50cnkgKmRwKQogewotCXZuX2xvY2sodnApOwotCUxJU1RfUkVN
T1ZFKGRwLCBkX25hbWVzX2xpbmspOwotCXZuX3VubG9jayh2cCk7CisJLyogVE9ETzogUmUtZW5h
YmxlIHRoaXMgY2hlY2sgd2hlbiBwcmVlbXB0aW9uIGFuZC9vciBzbXAgaXMKKwkgKiBoZXJlICov
CisJLyogVUtfQVNTRVJUKHVrX211dGV4X2lzX2xvY2tlZCgmdnAtPnZfbG9jaykpOyAqLworCXVr
X2xpc3RfZGVsKCZkcC0+ZF9uYW1lc19saW5rKTsKIH0KIAotLSAKMi4xOS4yCgoKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxp
bmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54
ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Feb 04 14:38:30 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 04 Feb 2019 14:38:30 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gqfOI-0006B9-8Y; Mon, 04 Feb 2019 14:38:30 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Kl24=QL=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gqfOH-0006Al-LA
 for minios-devel@lists.xen.org; Mon, 04 Feb 2019 14:38:29 +0000
X-Inumbo-ID: 8871cc9a-288a-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 8871cc9a-288a-11e9-bc90-bc764e045a96;
 Mon, 04 Feb 2019 14:38:27 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id CFF9CF2065;
 Mon,  4 Feb 2019 15:38:26 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id a7ihq7KN9Ilc; Mon,  4 Feb 2019 15:38:26 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id A495AF203D
 for <minios-devel@lists.xen.org>; Mon,  4 Feb 2019 15:38:24 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 4 Feb 2019 15:38:24 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>, <Simon.kuenzer@neclab.eu>,
 <sharan.santhanam@neclab.eu>
Date: Mon, 4 Feb 2019 15:37:02 +0100
Message-ID: <20190204143739.29249-11-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 10/23] lib/vfscore: add utility
 funcs&defs to support imported
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2ZpbGUuaCAgfCAgMiArKwogbGliL3Zmc2Nv
cmUvaW5jbHVkZS92ZnNjb3JlL2ZzLmggICAgfCAyOCArKysrKysrKysrKysrKysrKysrKysrKysK
IGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5oIHwgMjEgKysrKysrKysrKysrKysr
KysrCiBsaWIvdmZzY29yZS9tYWluLmMgICAgICAgICAgICAgICAgICB8IDMzICsrKysrKysrKysr
KysrKysrKysrKysrKysrKysrCiBsaWIvdmZzY29yZS9tb3VudC5jICAgICAgICAgICAgICAgICB8
IDE3ICsrKysrKysrKysrKysrKwogbGliL3Zmc2NvcmUvdmZzLmggICAgICAgICAgICAgICAgICAg
fCAgOSArKysrKysrKwogbGliL3Zmc2NvcmUvdm5vZGUuYyAgICAgICAgICAgICAgICAgfCAgMiAr
KwogNyBmaWxlcyBjaGFuZ2VkLCAxMTIgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0
IGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9mcy5oCgpkaWZmIC0tZ2l0IGEvbGliL3Zmc2Nv
cmUvaW5jbHVkZS92ZnNjb3JlL2ZpbGUuaCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9m
aWxlLmgKaW5kZXggNzM4NzI2NWQuLjY4YmJmOTJjIDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9p
bmNsdWRlL3Zmc2NvcmUvZmlsZS5oCisrKyBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9m
aWxlLmgKQEAgLTYyLDYgKzYyLDggQEAgdm9pZCB2ZnNjb3JlX3B1dF9mZChpbnQgZmQpOwogdm9p
ZCB2ZnNjb3JlX2luc3RhbGxfZmQoaW50IGZkLCBzdHJ1Y3QgdmZzY29yZV9maWxlICpmaWxlKTsK
IHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKnZmc2NvcmVfZ2V0X2ZpbGUoaW50IGZkKTsKIAorI2RlZmlu
ZSBGT0ZfT0ZGU0VUICAweDA4MDAgICAgLyogVXNlIHRoZSBvZmZzZXQgaW4gdWlvIGFyZ3VtZW50
ICovCisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9saWIvdmZz
Y29yZS9pbmNsdWRlL3Zmc2NvcmUvZnMuaCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9m
cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi4xYmI0ZTI0ZAotLS0gL2Rl
di9udWxsCisrKyBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9mcy5oCkBAIC0wLDAgKzEs
MjggQEAKKyNpZm5kZWYgX1ZGU0NPUkVfRlNfSF8KKyNkZWZpbmUgX1ZGU0NPUkVfRlNfSF8KKwor
I2luY2x1ZGUgPGZjbnRsLmg+CisvKgorICogS2VybmVsIGVuY29kaW5nIG9mIG9wZW4gbW9kZTsg
c2VwYXJhdGUgcmVhZCBhbmQgd3JpdGUgYml0cyB0aGF0IGFyZQorICogaW5kZXBlbmRlbnRseSB0
ZXN0YWJsZTogMSBncmVhdGVyIHRoYW4gdGhlIGFib3ZlLgorICovCisjZGVmaW5lIEZSRUFEICAg
ICAgICAgICAweDAwMDAwMDAxCisjZGVmaW5lIEZXUklURSAgICAgICAgICAweDAwMDAwMDAyCisK
KyNkZWZpbmUgQUxMUEVSTVMgKFNfSVNVSUR8U19JU0dJRHxTX0lTVlRYfFNfSVJXWFV8U19JUldY
R3xTX0lSV1hPKQorCitzdGF0aWMgaW5saW5lIGludCB2ZnNjb3JlX2ZmbGFncyhpbnQgb2ZsYWdz
KQoreworICAgIGludCBydyA9IG9mbGFncyAmIE9fQUNDTU9ERTsKKyAgICBvZmxhZ3MgJj0gfk9f
QUNDTU9ERTsKKyAgICByZXR1cm4gKHJ3ICsgMSkgfCBvZmxhZ3M7Cit9CisKK3N0YXRpYyBpbmxp
bmUgaW50IHZmc2NvcmVfb2ZsYWdzKGludCBmZmxhZ3MpCit7CisgICAgaW50IHJ3ID0gZmZsYWdz
ICYgKEZSRUFEfEZXUklURSk7CisgICAgZmZsYWdzICY9IH4oRlJFQUR8RldSSVRFKTsKKyAgICBy
ZXR1cm4gKHJ3IC0gMSkgfCBmZmxhZ3M7Cit9CisKKyNlbmRpZiAvKiBfVkZTQ09SRV9GU19IXyAq
LwpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Zub2RlLmggYi9saWIv
dmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUuaAppbmRleCBhNGRiOWMxMy4uNDE1NWE3ZGIg
MTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5oCisrKyBiL2xp
Yi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5oCkBAIC0xMDgsNiArMTA4LDI3IEBAIHN0
cnVjdCB2YXR0ciB7CiAJb2ZmX3QJCXZhX3NpemU7CiB9OwogCisvKiBzdHJ1Y3QgdmF0dHIgaXMg
dXNlZCB0byBjb25zb2xpZGF0ZSBtdWx0aXBsZSB0eXBlcyBvZiBmaWxlCisgKiBhdHRyaWJ1dGVz
IGZvciBwYXNzaW5nIHRoZW0gYXMgZnVuY3Rpb24gcGFyYW1ldGVycy4gTWFjcm9zIGJlbGxvdwor
ICogYXJlIHNlbGVjdG9ycywgb2Ygd2hhdCB0eXBlcyBvZiBhdHRyaWJ1dGVzIGFyZSB2YWxpZCBp
biBwYXJ0aWN1bGFyCisgKiBzdHJ1Y3QgdmF0dHIqLworI2RlZmluZQlBVF9UWVBFCQkweDAwMDAx
CisjZGVmaW5lCUFUX01PREUJCTB4MDAwMDIKKyNkZWZpbmUJQVRfVUlECQkweDAwMDA0CisjZGVm
aW5lCUFUX0dJRAkJMHgwMDAwOAorI2RlZmluZQlBVF9GU0lECQkweDAwMDEwCisjZGVmaW5lCUFU
X05PREVJRAkweDAwMDIwCisjZGVmaW5lCUFUX05MSU5LCTB4MDAwNDAKKyNkZWZpbmUJQVRfU0la
RQkJMHgwMDA4MAorI2RlZmluZQlBVF9BVElNRQkweDAwMTAwCisjZGVmaW5lCUFUX01USU1FCTB4
MDAyMDAKKyNkZWZpbmUJQVRfQ1RJTUUJMHgwMDQwMAorI2RlZmluZQlBVF9SREVWCQkweDAwODAw
CisjZGVmaW5lCUFUX0JMS1NJWkUJMHgwMTAwMAorI2RlZmluZQlBVF9OQkxPQ0tTCTB4MDIwMDAK
KyNkZWZpbmUJQVRfU0VRCQkweDA4MDAwCisjZGVmaW5lCUFUX1hWQVRUUgkweDEwMDAwCisKIC8q
CiAgKiAgTW9kZXMuCiAgKi8KZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL21haW4uYyBiL2xpYi92
ZnNjb3JlL21haW4uYwppbmRleCA4MmU0NTkxNy4uMTE2NGIzMGIgMTAwNjQ0Ci0tLSBhL2xpYi92
ZnNjb3JlL21haW4uYworKysgYi9saWIvdmZzY29yZS9tYWluLmMKQEAgLTUyLDggKzUyLDQxIEBA
CiBpbnQJdmZzX2RlYnVnID0gVkZTREJfRkxBR1M7CiAjZW5kaWYKIAorLyogVGhpcyBtYWNybyBp
cyBmb3IgZGVmaW5pbmcgYW4gYWxpYXMgb2YgdGhlIDY0Yml0IHZlcnNpb24gb2YgYQorICogc3lz
Y2FsbCB0byB0aGUgcmVndWxhciBvbmUuIEl0IHNlYW1zIHdlIGNhbiBtYWtlIHRoZSBsb2dpYyB3
aGljaCBpcworICogY2hvb3NpbmcgdGhlIHJpZ2h0IGNhbGwgc2ltcGxlciB0aGVuIGluIGNvbW1v
biBsaWJjLgorICoKKyAqIExldCdzIGtlZXAgTEZTNjQgY2FsbHMganVzdCBpbiBjYXNlIGluIGZ1
dHVyZSB3ZSB3aWxsIGZpbmQgb3V0IHRoYXQKKyAqIHRoZXNlIGFsaWFzZXMgYXJlIG5lZWQuCisg
Ki8KKyNkZWZpbmUgTEZTNjQoeCkKKwogc3RhdGljIG1vZGVfdCBnbG9iYWxfdW1hc2sgPSBTX0lX
R1JQIHwgU19JV09USDsKIAorLyogVE9ETzogdGhlc2UgbWFjcm8gZG9lcyBub3QgYmVsb25nIGhl
cmUKKyAqIE5PVEU6IGJvcnJvd2VkIGZyb20gT1N2CisgKi8KKyNkZWZpbmUgRE9fT05DRSh0aGlu
ZykgZG8gewkJCQlcCisJc3RhdGljIGludCBfeDsJCQkJCVwKKwlpZiAoIV94KSB7CQkJCQlcCisJ
ICAgIF94ID0gMTsJCQkJCVwKKwkgICAgdGhpbmcgOwkJCQkJXAorCX0JCQkJCQlcCit9IHdoaWxl
ICgwKQorI2RlZmluZSBXQVJOX1NUVUJCRUQoKSBET19PTkNFKHVrX3ByX3dhcm4oIiVzKCkgc3R1
YmJlZFxuIiwgX19mdW5jX18pKQorCisjZGVmaW5lIE5PX1NZUyhkZWNsKSBkZWNsIHsJCQkJXAor
ICAgIERPX09OQ0UodWtfcHJfd2FybigiJXMgbm90IGltcGxlbWVudGVkXG4iLCBfX2Z1bmNfXykp
OwlcCisgICAgZXJybm8gPSBFTk9TWVM7CQkJCQlcCisgICAgcmV0dXJuIC0xOwkJCQkJCVwKK30K
Kworc3RhdGljIGlubGluZSBpbnQgbGliY19lcnJvcihpbnQgZXJyKQoreworICAgIGVycm5vID0g
ZXJyOworICAgIHJldHVybiAtMTsKK30KKwogc3RhdGljIGlubGluZSBtb2RlX3QgYXBwbHlfdW1h
c2sobW9kZV90IG1vZGUpCiB7CiAJcmV0dXJuIG1vZGUgJiB+dWthcmNoX2xvYWRfbigmZ2xvYmFs
X3VtYXNrKTsKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL21vdW50LmMgYi9saWIvdmZzY29yZS9t
b3VudC5jCmluZGV4IDdkMDgzZDZmLi5lMTJjMDAzMyAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUv
bW91bnQuYworKysgYi9saWIvdmZzY29yZS9tb3VudC5jCkBAIC03OSw2ICs3OSwyMyBAQCBmc19n
ZXRmcyhjb25zdCBjaGFyICpuYW1lKQogCXJldHVybiBmczsKIH0KIAoraW50IGRldmljZV9vcGVu
KGNvbnN0IGNoYXIgKm5hbWUsIGludCBtb2RlLCBzdHJ1Y3QgZGV2aWNlICoqZGV2cCkKK3sKKwko
dm9pZCkgbmFtZTsKKwkodm9pZCkgbW9kZTsKKwkodm9pZCkgZGV2cDsKKworCXVrX3ByX2Vycigi
ZGV2aWNlIG9wZW4gaXMgbm90IGltcGxlbWVudGVkICglcylcbiIsIG5hbWUpOworCXJldHVybiAw
OworfQorCitpbnQgZGV2aWNlX2Nsb3NlKHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwkodm9pZCkg
ZGV2OworCVVLX0NSQVNIKCJub3QgaW1wbGVtZW50ZWQiKTsKKwlyZXR1cm4gMDsKK30KKwogaW50
CiBzeXNfbW91bnQoY29uc3QgY2hhciAqZGV2LCBjb25zdCBjaGFyICpkaXIsIGNvbnN0IGNoYXIg
KmZzbmFtZSwgaW50IGZsYWdzLCBjb25zdCB2b2lkICpkYXRhKQogewpkaWZmIC0tZ2l0IGEvbGli
L3Zmc2NvcmUvdmZzLmggYi9saWIvdmZzY29yZS92ZnMuaAppbmRleCAxOWY4YWM4Ny4uNjA5ZGMx
ZjUgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL3Zmcy5oCisrKyBiL2xpYi92ZnNjb3JlL3Zmcy5o
CkBAIC0xNTEsNCArMTUxLDEzIEBAIHZvaWQJIHZub2RlX2R1bXAodm9pZCk7CiB2b2lkCSBtb3Vu
dF9kdW1wKHZvaWQpOwogI2VuZGlmCiAKK3N0YXRpYyB2b2lkIF9fYXR0cmlidXRlX18oKHVudXNl
ZCkpIHVrX3Zmc2NvcmVfdHJhY2UoaW50IGZvbyBfX3VudXNlZCwgLi4uKQoreworfQorCisjZGVm
aW5lIFRSQUNFUE9JTlQodHJhY2VfbmFtZSwgZm10LCAuLi4pCQkJXAorCXN0YXRpYyB2b2lkIHRy
YWNlX25hbWUoX19WQV9BUkdTX18gKSBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQsIGFsaWFzKCJ1a192
ZnNjb3JlX3RyYWNlIikpKQorCisKKwogI2VuZGlmIC8qICFfVkZTX0ggKi8KZGlmZiAtLWdpdCBh
L2xpYi92ZnNjb3JlL3Zub2RlLmMgYi9saWIvdmZzY29yZS92bm9kZS5jCmluZGV4IGEyZjQ1NTk2
Li44NmU2ZDljNyAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvdm5vZGUuYworKysgYi9saWIvdmZz
Y29yZS92bm9kZS5jCkBAIC00OCw2ICs0OCw4IEBACiAjaW5jbHVkZSA8dmZzY29yZS92bm9kZS5o
PgogI2luY2x1ZGUgInZmcy5oIgogCisjZGVmaW5lIFNfQkxLU0laRSA1MTIKKwogZW51bSB2dHlw
ZSBpZnRvdnRfdGFiWzE2XSA9IHsKIAlWTk9OLCBWRklGTywgVkNIUiwgVk5PTiwgVkRJUiwgVk5P
TiwgVkJMSywgVk5PTiwKIAlWUkVHLCBWTk9OLCBWTE5LLCBWTk9OLCBWU09DSywgVk5PTiwgVk5P
TiwgVkJBRCwKLS0gCjIuMTkuMgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3Rz
LnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0
aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Feb 04 14:38:45 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 04 Feb 2019 14:38:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gqfOX-0006GH-Aa; Mon, 04 Feb 2019 14:38:45 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Kl24=QL=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gqfOW-0006DI-L1
 for minios-devel@lists.xen.org; Mon, 04 Feb 2019 14:38:44 +0000
X-Inumbo-ID: 91526b7c-288a-11e9-8053-a73bd153f846
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 91526b7c-288a-11e9-8053-a73bd153f846;
 Mon, 04 Feb 2019 14:38:42 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id CDCB7104D63;
 Mon,  4 Feb 2019 15:38:41 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id HGxKWHvelm_Y; Mon,  4 Feb 2019 15:38:41 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id AD2FE104BDB
 for <minios-devel@lists.xen.org>; Mon,  4 Feb 2019 15:38:39 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 4 Feb 2019 15:38:39 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>, <Simon.kuenzer@neclab.eu>,
 <sharan.santhanam@neclab.eu>
Date: Mon, 4 Feb 2019 15:37:04 +0100
Message-ID: <20190204143739.29249-13-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 12/23] lib/vfscore: prefix
 exported functions
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmggfCAgNCArKy0tCiBsaWIvdmZz
Y29yZS9pbmNsdWRlL3Zmc2NvcmUvcHJleC5oICB8ICA2ICsrKy0tLQogbGliL3Zmc2NvcmUvaW5j
bHVkZS92ZnNjb3JlL3Vpby5oICAgfCAgMiArLQogbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3Jl
L3Zub2RlLmggfCAxMCArKysrKy0tLS0tCiBsaWIvdmZzY29yZS9tb3VudC5jICAgICAgICAgICAg
ICAgICB8ICA5ICsrKystLS0tLQogbGliL3Zmc2NvcmUvc3Vicl91aW8uYyAgICAgICAgICAgICAg
fCAgMiArLQogbGliL3Zmc2NvcmUvdmZzLmggICAgICAgICAgICAgICAgICAgfCAgMiArLQogbGli
L3Zmc2NvcmUvdm5vZGUuYyAgICAgICAgICAgICAgICAgfCAxMiArKysrKystLS0tLS0KIDggZmls
ZXMgY2hhbmdlZCwgMjMgaW5zZXJ0aW9ucygrKSwgMjQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0
IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmggYi9saWIvdmZzY29yZS9pbmNs
dWRlL3Zmc2NvcmUvbW91bnQuaAppbmRleCBiNGEwNzMyMy4uYTEyMjdjYmUgMTAwNjQ0Ci0tLSBh
L2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9tb3VudC5oCisrKyBiL2xpYi92ZnNjb3JlL2lu
Y2x1ZGUvdmZzY29yZS9tb3VudC5oCkBAIC0xMzksMTIgKzEzOSwxMiBAQCB0eXBlZGVmIGludCAo
KnZmc29wX3N0YXRmc190KShzdHJ1Y3QgbW91bnQgKiwgc3RydWN0IHN0YXRmcyAqKTsKIAogI2Rl
ZmluZSBWRlNfTlVMTAkJICAgICgodm9pZCAqKXZmc19udWxsKQogCi1pbnQJdmZzX251bGxvcCh2
b2lkKTsKK2ludAl2ZnNjb3JlX251bGxvcCh2b2lkKTsKIGludAl2ZnNfZWludmFsKHZvaWQpOwog
CiB2b2lkCSB2ZnNfYnVzeShzdHJ1Y3QgbW91bnQgKm1wKTsKIHZvaWQJIHZmc191bmJ1c3koc3Ry
dWN0IG1vdW50ICptcCk7CiAKLXZvaWQJIHJlbGVhc2VfbXBfZGVudHJpZXMoc3RydWN0IG1vdW50
ICptcCk7Cit2b2lkCSB2ZnNjb3JlX3JlbGVhc2VfbXBfZGVudHJpZXMoc3RydWN0IG1vdW50ICpt
cCk7CiAKICNlbmRpZgkvKiAhX1NZU19NT1VOVF9IXyAqLwpkaWZmIC0tZ2l0IGEvbGliL3Zmc2Nv
cmUvaW5jbHVkZS92ZnNjb3JlL3ByZXguaCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9w
cmV4LmgKaW5kZXggOGEzMDZkNTQuLjIyNjFiMjE2IDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9p
bmNsdWRlL3Zmc2NvcmUvcHJleC5oCisrKyBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9w
cmV4LmgKQEAgLTMzLDggKzMzLDggQEAKICAqIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFD
VEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCiAgKi8KIAotI2lmbmRlZiBfT1NWX1BSRVhfSAot
I2RlZmluZSBfT1NWX1BSRVhfSCAxCisjaWZuZGVmIF9VS19QUkVYX0gKKyNkZWZpbmUgX1VLX1BS
RVhfSCAxCiAKIAogI2luY2x1ZGUgPHVuaXN0ZC5oPgpAQCAtNTIsNCArNTIsNCBAQCBzaXplX3Qg
c3RybGNweShjaGFyICpkc3QsIGNvbnN0IGNoYXIgKnNyYywgc2l6ZV90IHNpeik7CiAKIHZvaWQg
c3lzX3BhbmljKGNvbnN0IGNoYXIgKik7CiAKLSNlbmRpZiAvKiBfT1NWX1BSRVhfSCAqLworI2Vu
ZGlmIC8qIF9VS19QUkVYX0ggKi8KZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZz
Y29yZS91aW8uaCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS91aW8uaAppbmRleCA4YWQx
ZTNmYi4uYzczNGZhMTkgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS91
aW8uaAorKysgYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdWlvLmgKQEAgLTU3LDYgKzU3
LDYgQEAgc3RydWN0IHVpbyB7CiAJZW51bQl1aW9fcncgdWlvX3J3OwkJLyogb3BlcmF0aW9uICov
CiB9OwogCi1pbnQJdWlvbW92ZSh2b2lkICpjcCwgaW50IG4sIHN0cnVjdCB1aW8gKnVpbyk7Citp
bnQJdmZzY29yZV91aW9tb3ZlKHZvaWQgKmNwLCBpbnQgbiwgc3RydWN0IHVpbyAqdWlvKTsKIAog
I2VuZGlmIC8qICFfVUlPX0hfICovCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zm
c2NvcmUvdm5vZGUuaCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5oCmluZGV4
IDQxNTVhN2RiLi4wOGI4ZTU2MiAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNj
b3JlL3Zub2RlLmgKKysrIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Zub2RlLmgKQEAg
LTIyOSwxMCArMjI5LDEwIEBAIHN0cnVjdCB2bm9wcyB7CiAjZGVmaW5lIFZPUF9SRUFETElOSyhW
UCwgVSkgICAgICAgICgoVlApLT52X29wLT52b3BfcmVhZGxpbmspKFZQLCBVKQogI2RlZmluZSBW
T1BfU1lNTElOSyhEVlAsIE9QLCBOUCkgICAoKERWUCktPnZfb3AtPnZvcF9zeW1saW5rKShEVlAs
IE9QLCBOUCkKIAotaW50CSB2b3BfbnVsbG9wKHZvaWQpOwotaW50CSB2b3BfZWludmFsKHZvaWQp
OwotaW50CSB2b3BfZXBlcm0odm9pZCk7Ci1pbnQJIHZvcF9lcm9mcyh2b2lkKTsKK2ludAkgdmZz
Y29yZV92b3BfbnVsbG9wKHZvaWQpOworaW50CSB2ZnNjb3JlX3ZvcF9laW52YWwodm9pZCk7Citp
bnQJIHZmc2NvcmVfdm9wX2VwZXJtKHZvaWQpOworaW50CSB2ZnNjb3JlX3ZvcF9lcm9mcyh2b2lk
KTsKIHN0cnVjdCB2bm9kZSAqdm5fbG9va3VwKHN0cnVjdCBtb3VudCAqLCB1aW50NjRfdCk7CiB2
b2lkCSB2bl9sb2NrKHN0cnVjdCB2bm9kZSAqKTsKIHZvaWQJIHZuX3VubG9jayhzdHJ1Y3Qgdm5v
ZGUgKik7CkBAIC0yNDAsNyArMjQwLDcgQEAgaW50CSB2bl9zdGF0KHN0cnVjdCB2bm9kZSAqLCBz
dHJ1Y3Qgc3RhdCAqKTsKIGludAkgdm5fc2V0dGltZXMoc3RydWN0IHZub2RlICosIHN0cnVjdCB0
aW1lc3BlY1syXSk7CiBpbnQJIHZuX3NldG1vZGUoc3RydWN0IHZub2RlICosIG1vZGVfdCBtb2Rl
KTsKIGludAkgdm5fYWNjZXNzKHN0cnVjdCB2bm9kZSAqLCBpbnQpOwotaW50CSB2Z2V0KHN0cnVj
dCBtb3VudCAqLCB1aW50NjRfdCBpbm8sIHN0cnVjdCB2bm9kZSAqKnZwcCk7CitpbnQJIHZmc2Nv
cmVfdmdldChzdHJ1Y3QgbW91bnQgKiwgdWludDY0X3QgaW5vLCBzdHJ1Y3Qgdm5vZGUgKip2cHAp
Owogdm9pZAkgdnB1dChzdHJ1Y3Qgdm5vZGUgKik7CiB2b2lkCSB2cmVmKHN0cnVjdCB2bm9kZSAq
KTsKIHZvaWQJIHZyZWxlKHN0cnVjdCB2bm9kZSAqKTsKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3Jl
L21vdW50LmMgYi9saWIvdmZzY29yZS9tb3VudC5jCmluZGV4IGRhZWQ4N2ZhLi42OTQxNzVmMSAx
MDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvbW91bnQuYworKysgYi9saWIvdmZzY29yZS9tb3VudC5j
CkBAIC0yNDIsNyArMjQyLDcgQEAgc3lzX21vdW50KGNvbnN0IGNoYXIgKmRldiwgY29uc3QgY2hh
ciAqZGlyLCBjb25zdCBjaGFyICpmc25hbWUsIGludCBmbGFncywgY29uc3QKIH0KIAogdm9pZAot
cmVsZWFzZV9tcF9kZW50cmllcyhzdHJ1Y3QgbW91bnQgKm1wKQordmZzY29yZV9yZWxlYXNlX21w
X2RlbnRyaWVzKHN0cnVjdCBtb3VudCAqbXApCiB7CiAJLyogRGVjcmVtZW50IHJlZmVyZWNlIGNv
dW50IG9mIHJvb3Qgdm5vZGUgKi8KIAlpZiAobXAtPm1fY292ZXJlZCkgewpAQCAtNDY2LDggKzQ2
Niw3IEBAIHZmc191bmJ1c3koc3RydWN0IG1vdW50ICptcCkKIAl1a2FyY2hfZGVjKCZtcC0+bV9j
b3VudCk7CiB9CiAKLWludAotdmZzX251bGxvcCh2b2lkKQoraW50IHZmc2NvcmVfbnVsbG9wKHZv
aWQpCiB7CiAJcmV0dXJuIDA7CiB9CkBAIC00ODAsMTIgKzQ3OSwxMiBAQCB2ZnNfZWludmFsKHZv
aWQpCiAKICNpZmRlZiBERUJVR19WRlMKIHZvaWQKLW1vdW50X2R1bXAodm9pZCkKK3Zmc2NvcmVf
bW91bnRfZHVtcCh2b2lkKQogewogCXN0cnVjdCBtb3VudCAqbXA7CiAJdWtfbXV0ZXhfbG9jaygm
bW91bnRfbG9jayk7CiAKLQl1a19wcl9kZWJ1ZygibW91bnRfZHVtcFxuIik7CisJdWtfcHJfZGVi
dWcoInZmc2NvcmVfbW91bnRfZHVtcFxuIik7CiAJdWtfcHJfZGVidWcoImRldiAgICAgIGNvdW50
IHJvb3RcbiIpOwogCXVrX3ByX2RlYnVnKCItLS0tLS0tLSAtLS0tLSAtLS0tLS0tLVxuIik7CiAK
ZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3N1YnJfdWlvLmMgYi9saWIvdmZzY29yZS9zdWJyX3Vp
by5jCmluZGV4IGQ4ZTlkMWJlLi5hYTE3NjA3NCAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvc3Vi
cl91aW8uYworKysgYi9saWIvdmZzY29yZS9zdWJyX3Vpby5jCkBAIC00Niw3ICs0Niw3IEBACiAj
aW5jbHVkZSA8dmZzY29yZS91aW8uaD4KIAogaW50Ci11aW9tb3ZlKHZvaWQgKmNwLCBpbnQgbiwg
c3RydWN0IHVpbyAqdWlvKQordmZzY29yZV91aW9tb3ZlKHZvaWQgKmNwLCBpbnQgbiwgc3RydWN0
IHVpbyAqdWlvKQogewogCVVLX0FTU0VSVCh1aW8tPnVpb19ydyA9PSBVSU9fUkVBRCB8fCB1aW8t
PnVpb19ydyA9PSBVSU9fV1JJVEUpOwogCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS92ZnMuaCBi
L2xpYi92ZnNjb3JlL3Zmcy5oCmluZGV4IDYwOWRjMWY1Li45NGZlODlhNSAxMDA2NDQKLS0tIGEv
bGliL3Zmc2NvcmUvdmZzLmgKKysrIGIvbGliL3Zmc2NvcmUvdmZzLmgKQEAgLTE0OCw3ICsxNDgs
NyBAQCB2b2lkIGRlbnRyeV9pbml0KHZvaWQpOwogCiAjaWZkZWYgREVCVUdfVkZTCiB2b2lkCSB2
bm9kZV9kdW1wKHZvaWQpOwotdm9pZAkgbW91bnRfZHVtcCh2b2lkKTsKK3ZvaWQJIHZmc2NvcmVf
bW91bnRfZHVtcCh2b2lkKTsKICNlbmRpZgogCiBzdGF0aWMgdm9pZCBfX2F0dHJpYnV0ZV9fKCh1
bnVzZWQpKSB1a192ZnNjb3JlX3RyYWNlKGludCBmb28gX191bnVzZWQsIC4uLikKZGlmZiAtLWdp
dCBhL2xpYi92ZnNjb3JlL3Zub2RlLmMgYi9saWIvdmZzY29yZS92bm9kZS5jCmluZGV4IDg2ZTZk
OWM3Li5lOWUwNDBhYSAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvdm5vZGUuYworKysgYi9saWIv
dmZzY29yZS92bm9kZS5jCkBAIC02Niw3ICs2Niw3IEBAIGludCB2dHRvaWZfdGFiWzEwXSA9IHsK
ICAqIC0tLS0tLS0tLS0gLS0tLS0tLS0tIC0tLS0tLS0tLS0KICAqIHZuX2xvY2sgICAgICogICAg
ICAgIExvY2sKICAqIHZuX3VubG9jayAgICogICAgICAgIFVubG9jawotICogdmdldCAgICAgICAg
MSAgICAgICAgTG9jaworICogdmZzY29yZV92Z2V0ICAgICAgICAxICAgICAgICBMb2NrCiAgKiB2
cHV0ICAgICAgIC0xICAgICAgICBVbmxvY2sKICAqIHZyZWYgICAgICAgKzEgICAgICAgICoKICAq
IHZyZWxlICAgICAgLTEgICAgICAgICoKQEAgLTE3Miw3ICsxNzIsNyBAQCB2bl91bmxvY2soc3Ry
dWN0IHZub2RlICp2cCkKICAqIFJldHVybnMgMSBpZiB2bm9kZSB3YXMgZm91bmQgaW4gY2FjaGU7
IG90aGVyd2lzZSByZXR1cm5zIDAuCiAgKi8KIGludAotdmdldChzdHJ1Y3QgbW91bnQgKm1wLCB1
aW50NjRfdCBpbm8sIHN0cnVjdCB2bm9kZSAqKnZwcCkKK3Zmc2NvcmVfdmdldChzdHJ1Y3QgbW91
bnQgKm1wLCB1aW50NjRfdCBpbm8sIHN0cnVjdCB2bm9kZSAqKnZwcCkKIHsKIAlzdHJ1Y3Qgdm5v
ZGUgKnZwOwogCWludCBlcnJvcjsKQEAgLTQ3NiwyNSArNDc2LDI1IEBAIHZub2RlX2R1bXAodm9p
ZCkKICNlbmRpZgogCiBpbnQKLXZvcF9udWxsb3Aodm9pZCkKK3Zmc2NvcmVfdm9wX251bGxvcCh2
b2lkKQogewogCXJldHVybiAwOwogfQogCiBpbnQKLXZvcF9laW52YWwodm9pZCkKK3Zmc2NvcmVf
dm9wX2VpbnZhbCh2b2lkKQogewogCXJldHVybiBFSU5WQUw7CiB9CiAKIGludAotdm9wX2VwZXJt
KHZvaWQpCit2ZnNjb3JlX3ZvcF9lcGVybSh2b2lkKQogewogCXJldHVybiBFUEVSTTsKIH0KIAog
aW50Ci12b3BfZXJvZnModm9pZCkKK3Zmc2NvcmVfdm9wX2Vyb2ZzKHZvaWQpCiB7CiAJcmV0dXJu
IEVST0ZTOwogfQotLSAKMi4xOS4yCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlz
dHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xp
c3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Feb 04 14:38:52 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 04 Feb 2019 14:38:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gqfOe-0006Nv-CS; Mon, 04 Feb 2019 14:38:52 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Kl24=QL=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gqfOd-0006Nn-5q
 for minios-devel@lists.xen.org; Mon, 04 Feb 2019 14:38:51 +0000
X-Inumbo-ID: 9465f7b6-288a-11e9-9bbd-b38c1df97ef4
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 9465f7b6-288a-11e9-9bbd-b38c1df97ef4;
 Mon, 04 Feb 2019 14:38:47 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id F36CA104D65;
 Mon,  4 Feb 2019 15:38:46 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id U1O7lGWC1wbC; Mon,  4 Feb 2019 15:38:46 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id D2F2B104D64
 for <minios-devel@lists.xen.org>; Mon,  4 Feb 2019 15:38:44 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 4 Feb 2019 15:38:44 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>, <Simon.kuenzer@neclab.eu>,
 <sharan.santhanam@neclab.eu>
Date: Mon, 4 Feb 2019 15:37:06 +0100
Message-ID: <20190204143739.29249-15-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 14/23] lib/vfscore: keep vnode
 locked during drele call
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogbGliL3Zmc2NvcmUvbG9va3VwLmMgICB8IDIgKy0KIGxpYi92ZnNjb3JlL3N5c2NhbGxzLmMg
fCAyICstCiAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkK
CmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9sb29rdXAuYyBiL2xpYi92ZnNjb3JlL2xvb2t1cC5j
CmluZGV4IDFlMmM0MDA1Li5jYmMwMmI1MiAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvbG9va3Vw
LmMKKysrIGIvbGliL3Zmc2NvcmUvbG9va3VwLmMKQEAgLTE4MSw4ICsxODEsOCBAQCBuYW1laShj
b25zdCBjaGFyICpwYXRoLCBzdHJ1Y3QgZGVudHJ5ICoqZHBwKQogCQkJCS8qIEZpbmQgYSB2bm9k
ZSBpbiB0aGlzIGRpcmVjdG9yeS4gKi8KIAkJCQllcnJvciA9IFZPUF9MT09LVVAoZHZwLCBuYW1l
LCAmdnApOwogCQkJCWlmIChlcnJvcikgewotCQkJCQl2bl91bmxvY2soZHZwKTsKIAkJCQkJZHJl
bGUoZGRwKTsKKwkJCQkJdm5fdW5sb2NrKGR2cCk7CiAJCQkJCXJldHVybiBlcnJvcjsKIAkJCQl9
CiAKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3N5c2NhbGxzLmMgYi9saWIvdmZzY29yZS9zeXNj
YWxscy5jCmluZGV4IGZhMDQ5OGU3Li4zMzAwNDk2MCAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUv
c3lzY2FsbHMuYworKysgYi9saWIvdmZzY29yZS9zeXNjYWxscy5jCkBAIC0xMzIsOCArMTMyLDgg
QEAgc3lzX29wZW4oY2hhciAqcGF0aCwgaW50IGZsYWdzLCBtb2RlX3QgbW9kZSwgc3RydWN0IHZm
c2NvcmVfZmlsZSAqKmZwcCkKIAkJCW1vZGUgJj0gflNfSUZNVDsKIAkJCW1vZGUgfD0gU19JRlJF
RzsKIAkJCWVycm9yID0gVk9QX0NSRUFURShkZHAtPmRfdm5vZGUsIGZpbGVuYW1lLCBtb2RlKTsK
LQkJCXZuX3VubG9jayhkZHAtPmRfdm5vZGUpOwogCQkJZHJlbGUoZGRwKTsKKwkJCXZuX3VubG9j
ayhkZHAtPmRfdm5vZGUpOwogCiAJCQlpZiAoZXJyb3IpCiAJCQkJcmV0dXJuIGVycm9yOwotLSAK
Mi4xOS4yCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
TWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5v
cmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1k
ZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Feb 04 14:38:54 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 04 Feb 2019 14:38:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gqfOg-0006OO-E2; Mon, 04 Feb 2019 14:38:54 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Kl24=QL=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gqfOf-0006OF-Di
 for minios-devel@lists.xen.org; Mon, 04 Feb 2019 14:38:53 +0000
X-Inumbo-ID: 95f967fc-288a-11e9-9ccd-375e323b29df
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 95f967fc-288a-11e9-9ccd-375e323b29df;
 Mon, 04 Feb 2019 14:38:50 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 8961CF206F;
 Mon,  4 Feb 2019 15:38:49 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id j-G3aPQ98SkD; Mon,  4 Feb 2019 15:38:49 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 65212F2065
 for <minios-devel@lists.xen.org>; Mon,  4 Feb 2019 15:38:47 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 4 Feb 2019 15:38:47 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>, <Simon.kuenzer@neclab.eu>,
 <sharan.santhanam@neclab.eu>
Date: Mon, 4 Feb 2019 15:37:07 +0100
Message-ID: <20190204143739.29249-16-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 15/23] lib/vfscore: add necessary
 field in vfscore_file
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2ZpbGUuaCB8IDQgKysrKwogMSBmaWxlIGNo
YW5nZWQsIDQgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUv
dmZzY29yZS9maWxlLmggYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZmlsZS5oCmluZGV4
IDE2YWY1YmEzLi44N2Q1OTc1YyAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNj
b3JlL2ZpbGUuaAorKysgYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZmlsZS5oCkBAIC01
NCw3ICs1NCwxMSBAQCBzdHJ1Y3QgdmZzY29yZV9mb3BzIHsKIAogc3RydWN0IHZmc2NvcmVfZmls
ZSB7CiAJaW50IGZkOworCWludAkJZl9mbGFnczsJLyogb3BlbiBmbGFncyAqLwogCWludAkJZl9j
b3VudDsJLyogcmVmZXJlbmNlIGNvdW50ICovCisJb2ZmX3QJCWZfb2Zmc2V0OwkvKiBjdXJyZW50
IHBvc2l0aW9uIGluIGZpbGUgKi8KKwl2b2lkCQkqZl9kYXRhOyAgICAgICAgLyogZmlsZSBkZXNj
cmlwdG9yIHNwZWNpZmljIGRhdGEgKi8KKwlzdHJ1Y3QgZGVudHJ5ICAgKmZfZGVudHJ5OwogCWNv
bnN0IHN0cnVjdCB2ZnNjb3JlX2ZvcHMgKmZvcHM7CiB9OwogCi0tIAoyLjE5LjIKCgpfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFp
bGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3Rz
LnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Feb 04 14:39:01 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 04 Feb 2019 14:39:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gqfOn-0006PL-G3; Mon, 04 Feb 2019 14:39:01 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Kl24=QL=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gqfOm-0006PE-L1
 for minios-devel@lists.xen.org; Mon, 04 Feb 2019 14:39:00 +0000
X-Inumbo-ID: 9a8d725e-288a-11e9-b923-2b4c5bd1bd26
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 9a8d725e-288a-11e9-b923-2b4c5bd1bd26;
 Mon, 04 Feb 2019 14:38:58 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 49018104D65;
 Mon,  4 Feb 2019 15:38:57 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 4mtvLOTolTSx; Mon,  4 Feb 2019 15:38:57 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 29F4F104D63
 for <minios-devel@lists.xen.org>; Mon,  4 Feb 2019 15:38:55 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 4 Feb 2019 15:38:54 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>, <Simon.kuenzer@neclab.eu>,
 <sharan.santhanam@neclab.eu>
Date: Mon, 4 Feb 2019 15:37:10 +0100
Message-ID: <20190204143739.29249-19-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 18/23] lib/vfscore: add necessary
 internal prototypes
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogbGliL3Zmc2NvcmUvdmZzLmggfCA5ICsrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDkgaW5z
ZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3Zmcy5oIGIvbGliL3Zmc2NvcmUv
dmZzLmgKaW5kZXggOTRmZTg5YTUuLjRhMWNmYTlmIDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS92
ZnMuaAorKysgYi9saWIvdmZzY29yZS92ZnMuaApAQCAtMTQ2LDYgKzE0NiwxNSBAQCB2b2lkIGRy
ZWYoc3RydWN0IGRlbnRyeSAqZHApOwogdm9pZCBkcmVsZShzdHJ1Y3QgZGVudHJ5ICpkcCk7CiB2
b2lkIGRlbnRyeV9pbml0KHZvaWQpOwogCitpbnQgdmZzX2Nsb3NlKHN0cnVjdCB2ZnNjb3JlX2Zp
bGUgKmZwKTsKK2ludCB2ZnNfcmVhZChzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCwgc3RydWN0IHVp
byAqdWlvLCBpbnQgZmxhZ3MpOworaW50IHZmc193cml0ZShzdHJ1Y3QgdmZzY29yZV9maWxlICpm
cCwgc3RydWN0IHVpbyAqdWlvLCBpbnQgZmxhZ3MpOworaW50IHZmc19pb2N0bChzdHJ1Y3QgdmZz
Y29yZV9maWxlICpmcCwgdW5zaWduZWQgbG9uZyBjb20sIHZvaWQgKmRhdGEpOworaW50IHZmc19z
dGF0KHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwLCBzdHJ1Y3Qgc3RhdCAqc3QpOworCitpbnQgZmdl
dChpbnQgZmQsIHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKipvdXRfZnApOworaW50IGZkYWxsb2Moc3Ry
dWN0IHZmc2NvcmVfZmlsZSAqZnAsIGludCAqbmV3ZmQpOworCiAjaWZkZWYgREVCVUdfVkZTCiB2
b2lkCSB2bm9kZV9kdW1wKHZvaWQpOwogdm9pZAkgdmZzY29yZV9tb3VudF9kdW1wKHZvaWQpOwot
LSAKMi4xOS4yCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVj
dC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlv
cy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Feb 04 14:39:08 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 04 Feb 2019 14:39:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gqfOt-0006Q2-IY; Mon, 04 Feb 2019 14:39:07 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Kl24=QL=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gqfOs-0006Pw-R9
 for minios-devel@lists.xen.org; Mon, 04 Feb 2019 14:39:06 +0000
X-Inumbo-ID: 9d9e3ef6-288a-11e9-b0f0-0f2f1445f9bd
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 9d9e3ef6-288a-11e9-b0f0-0f2f1445f9bd;
 Mon, 04 Feb 2019 14:39:03 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 760DC104D65;
 Mon,  4 Feb 2019 15:39:02 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id ChKgrualh3sb; Mon,  4 Feb 2019 15:39:02 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 569FF104D63
 for <minios-devel@lists.xen.org>; Mon,  4 Feb 2019 15:39:00 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 4 Feb 2019 15:39:00 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>, <Simon.kuenzer@neclab.eu>,
 <sharan.santhanam@neclab.eu>
Date: Mon, 4 Feb 2019 15:37:12 +0100
Message-ID: <20190204143739.29249-21-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 20/23] lib/vfscore: add main
 constructor
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogbGliL3Zmc2NvcmUvbWFpbi5jIHwgMTEgKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAx
MSBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvbWFpbi5jIGIvbGliL3Zm
c2NvcmUvbWFpbi5jCmluZGV4IGQ3YWJhNzU2Li43YWNjZjkzMSAxMDA2NDQKLS0tIGEvbGliL3Zm
c2NvcmUvbWFpbi5jCisrKyBiL2xpYi92ZnNjb3JlL21haW4uYwpAQCAtMjA0NSwzICsyMDQ1LDE0
IEBAIGludCBjaHJvb3QoY29uc3QgY2hhciAqcGF0aCBfX3VudXNlZCkKIAllcnJubyA9IEVOT1NZ
UzsKIAlyZXR1cm4gLTE7CiB9CisKK3N0YXRpYyBzdHJ1Y3QgdGFzayBfbWFpbl90YXNrX2ltcGw7
CitfX2NvbnN0cnVjdG9yIHN0YXRpYyB2b2lkIHZmc2NvcmVfaW5pdCh2b2lkKQoreworCW1lbXNl
dCgmX21haW5fdGFza19pbXBsLCAwLCBzaXplb2YoX21haW5fdGFza19pbXBsKSk7CisJc3RyY3B5
KF9tYWluX3Rhc2tfaW1wbC50X2N3ZCwgIi8iKTsKKwltYWluX3Rhc2sgPSAmX21haW5fdGFza19p
bXBsOworCisJdm5vZGVfaW5pdCgpOworCWxvb2t1cF9pbml0KCk7Cit9Ci0tIAoyLjE5LjIKCgpf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2
ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczov
L2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Feb 04 14:39:11 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 04 Feb 2019 14:39:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gqfOx-0006Qm-Lv; Mon, 04 Feb 2019 14:39:11 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Kl24=QL=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gqfOw-0006QZ-3r
 for minios-devel@lists.xen.org; Mon, 04 Feb 2019 14:39:10 +0000
X-Inumbo-ID: 9f3abb40-288a-11e9-a577-b338d2a01805
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 9f3abb40-288a-11e9-a577-b338d2a01805;
 Mon, 04 Feb 2019 14:39:05 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 180FEF2071;
 Mon,  4 Feb 2019 15:39:05 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id peGUudUvfP9a; Mon,  4 Feb 2019 15:39:05 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id E369AF2065
 for <minios-devel@lists.xen.org>; Mon,  4 Feb 2019 15:39:02 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 4 Feb 2019 15:39:02 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>, <Simon.kuenzer@neclab.eu>,
 <sharan.santhanam@neclab.eu>
Date: Mon, 4 Feb 2019 15:37:13 +0100
Message-ID: <20190204143739.29249-22-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 21/23] lib/nolibc: add prototypes
 for functions from vfscore
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogbGliL25vbGliYy9pbmNsdWRlL3VuaXN0ZC5oIHwgNCArKysrCiAxIGZpbGUgY2hhbmdlZCwg
NCBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvbGliL25vbGliYy9pbmNsdWRlL3VuaXN0ZC5o
IGIvbGliL25vbGliYy9pbmNsdWRlL3VuaXN0ZC5oCmluZGV4IDA5ZTdkN2ExLi44MDEzYzE4MSAx
MDA2NDQKLS0tIGEvbGliL25vbGliYy9pbmNsdWRlL3VuaXN0ZC5oCisrKyBiL2xpYi9ub2xpYmMv
aW5jbHVkZS91bmlzdGQuaApAQCAtNTEsNiArNTEsMTAgQEAgZXh0ZXJuICJDIiB7CiBpbnQgY2xv
c2UoaW50IGZkKTsKIHNzaXplX3Qgd3JpdGUoaW50IGZkLCBjb25zdCB2b2lkICpidWYsIHNpemVf
dCBjb3VudCk7CiBzc2l6ZV90IHJlYWQoaW50IGZkLCB2b2lkICpidWYsIHNpemVfdCBjb3VudCk7
CitpbnQgZnN5bmMoaW50IGZkKTsKK2ludCBkdXAoaW50IG9sZGZkKTsKK2ludCBkdXAyKGludCBv
bGRmZCwgaW50IG5ld2ZkKTsKK2ludCBkdXAzKGludCBvbGRmZCwgaW50IG5ld2ZkLCBpbnQgZmxh
Z3MpOwogI2VuZGlmCiAKICNpZmRlZiBfX2NwbHVzcGx1cwotLSAKMi4xOS4yCgoKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxp
bmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54
ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Feb 04 14:39:14 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 04 Feb 2019 14:39:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gqfP0-0006RO-OW; Mon, 04 Feb 2019 14:39:14 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Kl24=QL=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gqfOz-0006R8-C1
 for minios-devel@lists.xen.org; Mon, 04 Feb 2019 14:39:13 +0000
X-Inumbo-ID: a25dfdd2-288a-11e9-abe6-2b0e5122c689
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id a25dfdd2-288a-11e9-abe6-2b0e5122c689;
 Mon, 04 Feb 2019 14:39:11 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 61450F2071;
 Mon,  4 Feb 2019 15:39:10 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id OYfGaS0b8C5h; Mon,  4 Feb 2019 15:39:10 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 378A4F2065
 for <minios-devel@lists.xen.org>; Mon,  4 Feb 2019 15:39:08 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 4 Feb 2019 15:39:07 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>, <Simon.kuenzer@neclab.eu>,
 <sharan.santhanam@neclab.eu>
Date: Mon, 4 Feb 2019 15:37:15 +0100
Message-ID: <20190204143739.29249-24-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 23/23] lib/vfscore: remove sys
 prefix from vfs api functions
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

RnVjbnRpb25zIHN5cyhtb3VudHx1bW91bnR8dW1vdW50MnxzeW5jKSBhcmUgY29tcGxldGUgZnVu
Y3Rpb24KY2FsbHMuIFVzZXIgYXBwbGljYXRpb25zIHNob3VsZCB1c2UgdGhlbSBkaXJlY3RseSBh
bnl3YXlzLiBMZXQncwpyZW5hbWUgdGhlbSBhY2NvcmRpbmdseS4KClNpZ25lZC1vZmYtYnk6IFl1
cmkgVm9sY2hrb3YgPHl1cmkudm9sY2hrb3ZAbmVjbGFiLmV1PgotLS0KIGxpYi9ub2xpYmMvaW5j
bHVkZS91bmlzdGQuaCB8ICAxICsKIGxpYi92ZnNjb3JlL2V4cG9ydHN5bXMudWsgICB8ICA4ICsr
KystLS0tCiBsaWIvdmZzY29yZS9tb3VudC5jICAgICAgICAgfCAxNCArKysrKystLS0tLS0tLQog
bGliL3Zmc2NvcmUvdmZzLmggICAgICAgICAgIHwgIDUgKy0tLS0KIDQgZmlsZXMgY2hhbmdlZCwg
MTIgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliL25vbGli
Yy9pbmNsdWRlL3VuaXN0ZC5oIGIvbGliL25vbGliYy9pbmNsdWRlL3VuaXN0ZC5oCmluZGV4IDgw
MTNjMTgxLi5hNWQ5OWZjNCAxMDA2NDQKLS0tIGEvbGliL25vbGliYy9pbmNsdWRlL3VuaXN0ZC5o
CisrKyBiL2xpYi9ub2xpYmMvaW5jbHVkZS91bmlzdGQuaApAQCAtNTEsNiArNTEsNyBAQCBleHRl
cm4gIkMiIHsKIGludCBjbG9zZShpbnQgZmQpOwogc3NpemVfdCB3cml0ZShpbnQgZmQsIGNvbnN0
IHZvaWQgKmJ1Ziwgc2l6ZV90IGNvdW50KTsKIHNzaXplX3QgcmVhZChpbnQgZmQsIHZvaWQgKmJ1
Ziwgc2l6ZV90IGNvdW50KTsKK3ZvaWQgc3luYyh2b2lkKTsKIGludCBmc3luYyhpbnQgZmQpOwog
aW50IGR1cChpbnQgb2xkZmQpOwogaW50IGR1cDIoaW50IG9sZGZkLCBpbnQgbmV3ZmQpOwpkaWZm
IC0tZ2l0IGEvbGliL3Zmc2NvcmUvZXhwb3J0c3ltcy51ayBiL2xpYi92ZnNjb3JlL2V4cG9ydHN5
bXMudWsKaW5kZXggNTBiNjIyMDQuLmFkYmMzOWE4IDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9l
eHBvcnRzeW1zLnVrCisrKyBiL2xpYi92ZnNjb3JlL2V4cG9ydHN5bXMudWsKQEAgLTUsNyArNSw3
IEBAIHZmc2NvcmVfZ2V0X2ZpbGUKIGNsb3NlCiB3cml0ZQogcmVhZAotc3lzX21vdW50Cittb3Vu
dAogdmZzY29yZV9udWxsb3AKIHZmc2NvcmVfcmVsZWFzZV9tcF9kZW50cmllcwogdmZzY29yZV92
Z2V0CkBAIC0yNyw3ICsyNyw3IEBAIGR1cAogZHVwMgogZHVwMwogdmZzY29yZV91aW9tb3ZlCi1z
eXNfc3luYworc3luYwogdmZzY29yZV9tb3VudF9kdW1wCi1zeXNfdW1vdW50Ci1zeXNfdW1vdW50
MgordW1vdW50Cit1bW91bnQyCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9tb3VudC5jIGIvbGli
L3Zmc2NvcmUvbW91bnQuYwppbmRleCA2OTQxNzVmMS4uMzlmMDA5YWMgMTAwNjQ0Ci0tLSBhL2xp
Yi92ZnNjb3JlL21vdW50LmMKKysrIGIvbGliL3Zmc2NvcmUvbW91bnQuYwpAQCAtMTA5LDcgKzEw
OSw3IEBAIGludCBkZXZpY2VfY2xvc2Uoc3RydWN0IGRldmljZSAqZGV2KQogfQogCiBpbnQKLXN5
c19tb3VudChjb25zdCBjaGFyICpkZXYsIGNvbnN0IGNoYXIgKmRpciwgY29uc3QgY2hhciAqZnNu
YW1lLCBpbnQgZmxhZ3MsIGNvbnN0IHZvaWQgKmRhdGEpCittb3VudChjb25zdCBjaGFyICpkZXYs
IGNvbnN0IGNoYXIgKmRpciwgY29uc3QgY2hhciAqZnNuYW1lLCBpbnQgZmxhZ3MsIGNvbnN0IHZv
aWQgKmRhdGEpCiB7CiAJY29uc3Qgc3RydWN0IHZmc2NvcmVfZnNfdHlwZSAqZnM7CiAJc3RydWN0
IG1vdW50ICptcDsKQEAgLTEzOCw3ICsxMzgsNyBAQCBzeXNfbW91bnQoY29uc3QgY2hhciAqZGV2
LCBjb25zdCBjaGFyICpkaXIsIGNvbnN0IGNoYXIgKmZzbmFtZSwgaW50IGZsYWdzLCBjb25zdAog
CS8vIFdlIG5lZWQgdG8gYXZvaWQgdGhlIHNpdHVhdGlvbiB3aGVyZSBhZnRlciB3ZSBhbHJlYWR5
IHZlcmlmaWVkIHRoYXQKIAkvLyB0aGUgbW91bnQgcG9pbnQgaXMgZnJlZSwgYnV0IGJlZm9yZSB3
ZSBhY3R1YWxseSBhZGQgaXQgdG8gbW91bnRfbGlzdCwKIAkvLyBhbm90aGVyIGNvbmN1cnJlbnQg
bW91bnQgYWRkcyBpdC4gU28gd2UgdXNlIGEgbmV3IG11dGV4IHRvIGVuc3VyZQotCS8vIHRoYXQg
b25seSBvbmUgc3lzX21vdW50KCkgcnVucyBhdCBhIHRpbWUuIFdlIGNhbm5vdCByZXVzZSB0aGUg
ZXhpc3RpbmcKKwkvLyB0aGF0IG9ubHkgb25lIG1vdW50KCkgcnVucyBhdCBhIHRpbWUuIFdlIGNh
bm5vdCByZXVzZSB0aGUgZXhpc3RpbmcKIAkvLyBtb3VudF9sb2NrIGZvciB0aGlzIHB1cnBvc2U6
IElmIHdlIHRha2UgbW91bnRfbG9jayBhbmQgdGhlbiBkbwogCS8vIGxvb2t1cHMsIHRoaXMgaXMg
bG9jayBvcmRlciBpbnZlcnNpb24gYW5kIGNhbiByZXN1bHQgaW4gZGVhZGxvY2suCiAKQEAgLTI1
NCw3ICsyNTQsNyBAQCB2ZnNjb3JlX3JlbGVhc2VfbXBfZGVudHJpZXMoc3RydWN0IG1vdW50ICpt
cCkKIH0KIAogaW50Ci1zeXNfdW1vdW50Mihjb25zdCBjaGFyICpwYXRoLCBpbnQgZmxhZ3MpCit1
bW91bnQyKGNvbnN0IGNoYXIgKnBhdGgsIGludCBmbGFncykKIHsKIAlzdHJ1Y3QgbW91bnQgKm1w
LCAqdG1wOwogCWludCBlcnJvciwgcGF0aGxlbjsKQEAgLTMwNyw5ICszMDcsOSBAQCBmb3VuZDoK
IH0KIAogaW50Ci1zeXNfdW1vdW50KGNvbnN0IGNoYXIgKnBhdGgpCit1bW91bnQoY29uc3QgY2hh
ciAqcGF0aCkKIHsKLQlyZXR1cm4gc3lzX3Vtb3VudDIocGF0aCwgMCk7CisJcmV0dXJuIHVtb3Vu
dDIocGF0aCwgMCk7CiB9CiAKICNpZiAwCkBAIC0zNjIsOCArMzYyLDcgQEAgc3lzX3Bpdm90X3Jv
b3QoY29uc3QgY2hhciAqbmV3X3Jvb3QsIGNvbnN0IGNoYXIgKnB1dF9vbGQpCiB9CiAjZW5kaWYK
IAotaW50Ci1zeXNfc3luYyh2b2lkKQordm9pZCBzeW5jKHZvaWQpCiB7CiAJc3RydWN0IG1vdW50
ICptcDsKIAl1a19tdXRleF9sb2NrKCZtb3VudF9sb2NrKTsKQEAgLTM3NSw3ICszNzQsNiBAQCBz
eXNfc3luYyh2b2lkKQogI2lmZGVmIEhBVkVfQlVGRkVSUwogCWJpb19zeW5jKCk7CiAjZW5kaWYK
LQlyZXR1cm4gMDsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3Zmcy5oIGIvbGli
L3Zmc2NvcmUvdmZzLmgKaW5kZXggNGExY2ZhOWYuLjgxYTYxZDc1IDEwMDY0NAotLS0gYS9saWIv
dmZzY29yZS92ZnMuaAorKysgYi9saWIvdmZzY29yZS92ZnMuaApAQCAtMTExLDExICsxMTEsOCBA
QCBpbnQgIHN5c191dGltZW5zYXQoaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwKIGlu
dCAgc3lzX2Z1dGltZW5zKGludCBmZCwgY29uc3Qgc3RydWN0IHRpbWVzcGVjIHRpbWVzWzJdKTsK
IGludCAgc3lzX2ZhbGxvY2F0ZShzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCwgaW50IG1vZGUsIGxv
ZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4pOwogCi1pbnQJIHN5c19tb3VudChjb25zdCBjaGFyICpk
ZXYsIGNvbnN0IGNoYXIgKmRpciwgY29uc3QgY2hhciAqZnNuYW1lLCBpbnQgZmxhZ3MsIGNvbnN0
IHZvaWQgKmRhdGEpOwotaW50CSBzeXNfdW1vdW50Mihjb25zdCBjaGFyICpwYXRoLCBpbnQgZmxh
Z3MpOwotaW50CSBzeXNfdW1vdW50KGNvbnN0IGNoYXIgKnBhdGgpOwogaW50CSBzeXNfcGl2b3Rf
cm9vdChjb25zdCBjaGFyICpuZXdfcm9vdCwgY29uc3QgY2hhciAqb2xkX3B1dCk7Ci1pbnQJIHN5
c19zeW5jKHZvaWQpOwordm9pZAkgc3luYyh2b2lkKTsKIGludAkgc3lzX2NobW9kKGNvbnN0IGNo
YXIgKnBhdGgsIG1vZGVfdCBtb2RlKTsKIGludAkgc3lzX2ZjaG1vZChpbnQgZmQsIG1vZGVfdCBt
b2RlKTsKIAotLSAKMi4xOS4yCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMu
eGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3Rp
bmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Feb 04 14:39:21 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 04 Feb 2019 14:39:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gqfP7-0006SV-QD; Mon, 04 Feb 2019 14:39:21 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Kl24=QL=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gqfP6-0006SJ-Ec
 for minios-devel@lists.xen.org; Mon, 04 Feb 2019 14:39:20 +0000
X-Inumbo-ID: a651ffce-288a-11e9-b4bc-a3ee099a07cb
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id a651ffce-288a-11e9-b4bc-a3ee099a07cb;
 Mon, 04 Feb 2019 14:39:17 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 7ACB6F2072;
 Mon,  4 Feb 2019 15:39:15 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id s3pUrg4e_Wty; Mon,  4 Feb 2019 15:39:15 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 54207F2071
 for <minios-devel@lists.xen.org>; Mon,  4 Feb 2019 15:39:13 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 4 Feb 2019 15:39:13 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>, <Simon.kuenzer@neclab.eu>,
 <sharan.santhanam@neclab.eu>
Date: Mon, 4 Feb 2019 15:37:17 +0100
Message-ID: <20190204143739.29249-26-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 01/23] include/uk: introduce
 __weak_alias macro
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogaW5jbHVkZS91ay9lc3NlbnRpYWxzLmggfCA0ICsrKysKIDEgZmlsZSBjaGFuZ2VkLCA0IGlu
c2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9pbmNsdWRlL3VrL2Vzc2VudGlhbHMuaCBiL2luY2x1
ZGUvdWsvZXNzZW50aWFscy5oCmluZGV4IDNjMTZlMzA4Li5kYzFkNjliMCAxMDA2NDQKLS0tIGEv
aW5jbHVkZS91ay9lc3NlbnRpYWxzLmgKKysrIGIvaW5jbHVkZS91ay9lc3NlbnRpYWxzLmgKQEAg
LTc2LDYgKzc2LDEwIEBAIGV4dGVybiAiQyIgewogI2lmbmRlZiBfX2FsaWduCiAjZGVmaW5lIF9f
YWxpZ24oYnl0ZXMpICAgICAgICAgX19hdHRyaWJ1dGVfXygoYWxpZ25lZChieXRlcykpKQogI2Vu
ZGlmCisjaWZuZGVmIF9fd2Vha19hbGlhcworI2RlZmluZSBfX3dlYWtfYWxpYXMob2xkLCBuZXcp
IFwKKwlleHRlcm4gX190eXBlb2Yob2xkKSBuZXcgX19hdHRyaWJ1dGVfXygod2VhaywgYWxpYXMo
I29sZCkpKQorI2VuZGlmCiAKIC8qKgogICAqIE1hcmsgYSBmdW5jdGlvbiBhcyBjb25zdHJ1Y3Rv
cgotLSAKMi4xOS4yCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJv
amVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21p
bmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Feb 04 14:39:24 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 04 Feb 2019 14:39:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gqfPA-0006T9-SL; Mon, 04 Feb 2019 14:39:24 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Kl24=QL=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gqfP9-0006Ss-G2
 for minios-devel@lists.xen.org; Mon, 04 Feb 2019 14:39:23 +0000
X-Inumbo-ID: a88a3189-288a-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id a88a3189-288a-11e9-bc90-bc764e045a96;
 Mon, 04 Feb 2019 14:39:21 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id B1DA6F2072;
 Mon,  4 Feb 2019 15:39:20 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id bmN1twNOZySH; Mon,  4 Feb 2019 15:39:20 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 848F9F2071
 for <minios-devel@lists.xen.org>; Mon,  4 Feb 2019 15:39:18 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 4 Feb 2019 15:39:18 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>, <Simon.kuenzer@neclab.eu>,
 <sharan.santhanam@neclab.eu>
Date: Mon, 4 Feb 2019 15:37:19 +0100
Message-ID: <20190204143739.29249-28-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 03/23] lib/nolibc: adapt mount.h
 to Unikraft
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U3R5bGUgcHJvYmxlbXMgYW5kIHByb3BlciBpbmNsdWRlcwoKU2lnbmVkLW9mZi1ieTogWXVyaSBW
b2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0tLQogbGliL25vbGliYy9pbmNsdWRl
L3N5cy9tb3VudC5oIHwgMzggKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQogMSBm
aWxlIGNoYW5nZWQsIDE5IGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp
dCBhL2xpYi9ub2xpYmMvaW5jbHVkZS9zeXMvbW91bnQuaCBiL2xpYi9ub2xpYmMvaW5jbHVkZS9z
eXMvbW91bnQuaAppbmRleCA1N2E4OWMwOS4uYWY4NTVkNjkgMTAwNjQ0Ci0tLSBhL2xpYi9ub2xp
YmMvaW5jbHVkZS9zeXMvbW91bnQuaAorKysgYi9saWIvbm9saWJjL2luY2x1ZGUvc3lzL21vdW50
LmgKQEAgLTUsMjMgKzUsMjIgQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKLSNpbmNsdWRlIDxz
eXMvaW9jdGwuaD4KIAotI2RlZmluZSBCTEtST1NFVCAgIF9JTygweDEyLCA5MykKLSNkZWZpbmUg
QkxLUk9HRVQgICBfSU8oMHgxMiwgOTQpCi0jZGVmaW5lIEJMS1JSUEFSVCAgX0lPKDB4MTIsIDk1
KQotI2RlZmluZSBCTEtHRVRTSVpFIF9JTygweDEyLCA5NikKLSNkZWZpbmUgQkxLRkxTQlVGICBf
SU8oMHgxMiwgOTcpCi0jZGVmaW5lIEJMS1JBU0VUICAgX0lPKDB4MTIsIDk4KQotI2RlZmluZSBC
TEtSQUdFVCAgIF9JTygweDEyLCA5OSkKLSNkZWZpbmUgQkxLRlJBU0VUICBfSU8oMHgxMiwxMDAp
Ci0jZGVmaW5lIEJMS0ZSQUdFVCAgX0lPKDB4MTIsMTAxKQotI2RlZmluZSBCTEtTRUNUU0VUIF9J
TygweDEyLDEwMikKLSNkZWZpbmUgQkxLU0VDVEdFVCBfSU8oMHgxMiwxMDMpCi0jZGVmaW5lIEJM
S1NTWkdFVCAgX0lPKDB4MTIsMTA0KQotI2RlZmluZSBCTEtCU1pHRVQgIF9JT1IoMHgxMiwxMTIs
c2l6ZV90KQotI2RlZmluZSBCTEtCU1pTRVQgIF9JT1coMHgxMiwxMTMsc2l6ZV90KQotI2RlZmlu
ZSBCTEtHRVRTSVpFNjQgX0lPUigweDEyLDExNCxzaXplX3QpCisjZGVmaW5lIEJMS1JPU0VUICAg
ICAgX0lPKDB4MTIsICA5MykKKyNkZWZpbmUgQkxLUk9HRVQgICAgICBfSU8oMHgxMiwgIDk0KQor
I2RlZmluZSBCTEtSUlBBUlQgICAgIF9JTygweDEyLCAgOTUpCisjZGVmaW5lIEJMS0dFVFNJWkUg
ICAgX0lPKDB4MTIsICA5NikKKyNkZWZpbmUgQkxLRkxTQlVGICAgICBfSU8oMHgxMiwgIDk3KQor
I2RlZmluZSBCTEtSQVNFVCAgICAgIF9JTygweDEyLCAgOTgpCisjZGVmaW5lIEJMS1JBR0VUICAg
ICAgX0lPKDB4MTIsICA5OSkKKyNkZWZpbmUgQkxLRlJBU0VUICAgICBfSU8oMHgxMiwgMTAwKQor
I2RlZmluZSBCTEtGUkFHRVQgICAgIF9JTygweDEyLCAxMDEpCisjZGVmaW5lIEJMS1NFQ1RTRVQg
ICAgX0lPKDB4MTIsIDEwMikKKyNkZWZpbmUgQkxLU0VDVEdFVCAgICBfSU8oMHgxMiwgMTAzKQor
I2RlZmluZSBCTEtTU1pHRVQgICAgIF9JTygweDEyLCAxMDQpCisjZGVmaW5lIEJMS0JTWkdFVCAg
ICBfSU9SKDB4MTIsIDExMiwgc2l6ZV90KQorI2RlZmluZSBCTEtCU1pTRVQgICAgX0lPVygweDEy
LCAxMTMsIHNpemVfdCkKKyNkZWZpbmUgQkxLR0VUU0laRTY0IF9JT1IoMHgxMiwgMTE0LCBzaXpl
X3QpCiAKICNkZWZpbmUgTVNfUkRPTkxZICAgICAgMQogI2RlZmluZSBNU19OT1NVSUQgICAgICAy
CkBAIC02Myw5ICs2MiwxMCBAQCBleHRlcm4gIkMiIHsKICNkZWZpbmUgTU5UX0VYUElSRSAgICAg
IDQKICNkZWZpbmUgVU1PVU5UX05PRk9MTE9XIDgKIAotaW50IG1vdW50KGNvbnN0IGNoYXIgKiwg
Y29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIHVuc2lnbmVkIGxvbmcsIGNvbnN0IHZvaWQgKik7
Ci1pbnQgdW1vdW50KGNvbnN0IGNoYXIgKik7Ci1pbnQgdW1vdW50Mihjb25zdCBjaGFyICosIGlu
dCk7CitpbnQgbW91bnQoY29uc3QgY2hhciAqZGV2LCBjb25zdCBjaGFyICpkaXIsIGNvbnN0IGNo
YXIgKmZzbmFtZSwKKwkgIHVuc2lnbmVkIGxvbmcgZmxhZ3MsIGNvbnN0IHZvaWQgKmRhdGEpOwor
aW50IHVtb3VudChjb25zdCBjaGFyICpwYXRoKTsKK2ludCB1bW91bnQyKGNvbnN0IGNoYXIgKnBh
dGgsIGludCBmbGFncyk7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQotLSAKMi4xOS4yCgoKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVs
IG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9s
aXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Feb 04 14:39:35 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 04 Feb 2019 14:39:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gqfPK-0006Uf-Uv; Mon, 04 Feb 2019 14:39:34 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Kl24=QL=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gqfPJ-0006UZ-Qj
 for minios-devel@lists.xen.org; Mon, 04 Feb 2019 14:39:33 +0000
X-Inumbo-ID: aa348bd1-288a-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id aa348bd1-288a-11e9-bc90-bc764e045a96;
 Mon, 04 Feb 2019 14:39:24 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 7BAF2104D68;
 Mon,  4 Feb 2019 15:39:23 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id wRWOjdhoD_ap; Mon,  4 Feb 2019 15:39:23 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 2FA5F104D63
 for <minios-devel@lists.xen.org>; Mon,  4 Feb 2019 15:39:21 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 4 Feb 2019 15:39:20 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>, <Simon.kuenzer@neclab.eu>,
 <sharan.santhanam@neclab.eu>
Date: Mon, 4 Feb 2019 15:37:20 +0100
Message-ID: <20190204143739.29249-29-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 04/23] lib/vfscore: Initial
 import of OSv vfs
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhlIGNvZGUgaXMgaW1wb3J0ZWQgYXMgaXMuCgpDb21taXQgZjFmNDI5MTVhMzNiZWJlMTIwZTcw
YWYxZjMyYzFhNGQ5MmJhYzc4MAoKU2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52
b2xjaGtvdkBuZWNsYWIuZXU+Ci0tLQogbGliL3Zmc2NvcmUvZGVudHJ5LmMgICAgICAgICAgICAg
ICAgIHwgIDIzNCArKysKIGxpYi92ZnNjb3JlL2ZvcHMuYyAgICAgICAgICAgICAgICAgICB8ICAx
ODkgKysKIGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9kZW50cnkuaCB8ICAgNDUgKwogbGli
L3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmggIHwgIDE3MSArKwogbGliL3Zmc2NvcmUv
aW5jbHVkZS92ZnNjb3JlL3ByZXguaCAgIHwgICAzNCArCiBsaWIvdmZzY29yZS9pbmNsdWRlL3Zm
c2NvcmUvdWlvLmggICAgfCAgIDg5ICsKIGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9k
ZS5oICB8ICAyNDYgKysrCiBsaWIvdmZzY29yZS9sb29rdXAuYyAgICAgICAgICAgICAgICAgfCAg
Mzc1ICsrKysKIGxpYi92ZnNjb3JlL21haW4uYyAgICAgICAgICAgICAgICAgICB8IDI0MTMgKysr
KysrKysrKysrKysrKysrKysrKysrKysKIGxpYi92ZnNjb3JlL21vdW50LmMgICAgICAgICAgICAg
ICAgICB8ICA0OTEgKysrKysrCiBsaWIvdmZzY29yZS9zdWJyX3Vpby5jICAgICAgICAgICAgICAg
fCAgIDczICsKIGxpYi92ZnNjb3JlL3N5c2NhbGxzLmMgICAgICAgICAgICAgICB8IDE0ODYgKysr
KysrKysrKysrKysrKwogbGliL3Zmc2NvcmUvdGFzay5jICAgICAgICAgICAgICAgICAgIHwgIDE2
NyArKwogbGliL3Zmc2NvcmUvdmZzLmggICAgICAgICAgICAgICAgICAgIHwgIDE4OSArKwogbGli
L3Zmc2NvcmUvdm5vZGUuYyAgICAgICAgICAgICAgICAgIHwgIDUyMiArKysrKysKIDE1IGZpbGVz
IGNoYW5nZWQsIDY3MjQgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi92ZnNj
b3JlL2RlbnRyeS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3Zmc2NvcmUvZm9wcy5jCiBjcmVh
dGUgbW9kZSAxMDA2NDQgbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2RlbnRyeS5oCiBjcmVh
dGUgbW9kZSAxMDA2NDQgbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmgKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvcHJleC5oCiBjcmVhdGUg
bW9kZSAxMDA2NDQgbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Vpby5oCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Zub2RlLmgKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBsaWIvdmZzY29yZS9sb29rdXAuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi92ZnNj
b3JlL21haW4uYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi92ZnNjb3JlL21vdW50LmMKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBsaWIvdmZzY29yZS9zdWJyX3Vpby5jCiBjcmVhdGUgbW9kZSAxMDA2NDQg
bGliL3Zmc2NvcmUvc3lzY2FsbHMuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi92ZnNjb3JlL3Rh
c2suYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi92ZnNjb3JlL3Zmcy5oCiBjcmVhdGUgbW9kZSAx
MDA2NDQgbGliL3Zmc2NvcmUvdm5vZGUuYwoKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2RlbnRy
eS5jIGIvbGliL3Zmc2NvcmUvZGVudHJ5LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAuLmZhY2Q5ZWFhCi0tLSAvZGV2L251bGwKKysrIGIvbGliL3Zmc2NvcmUvZGVudHJ5LmMK
QEAgLTAsMCArMSwyMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQ2xvdWRpdXMgU3lz
dGVtcywgTHRkLgorICoKKyAqIFRoaXMgd29yayBpcyBvcGVuIHNvdXJjZSBzb2Z0d2FyZSwgbGlj
ZW5zZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZQorICogQlNEIGxpY2Vuc2UgYXMgZGVzY3JpYmVk
IGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHRvcC1sZXZlbCBkaXJlY3RvcnkuCisgKi8KKwor
LyoKKyAqIENvcHlyaWdodCAoYykgMjAwNS0yMDA3LCBLb2hzdWtlIE9odGFuaQorICogQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGF1
dGhvciBub3IgdGhlIG5hbWVzIG9mIGFueSBjby1jb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0
d2FyZQorICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN5cy9wYXJhbS5o
PgorCisjaW5jbHVkZSA8b3N2L2RlbnRyeS5oPgorI2luY2x1ZGUgPG9zdi92bm9kZS5oPgorI2lu
Y2x1ZGUgInZmcy5oIgorCisjZGVmaW5lIERFTlRSWV9CVUNLRVRTIDMyCisKK3N0YXRpYyBMSVNU
X0hFQUQoZGVudHJ5X2hhc2hfaGVhZCwgZGVudHJ5KSBkZW50cnlfaGFzaF90YWJsZVtERU5UUllf
QlVDS0VUU107CitzdGF0aWMgTElTVF9IRUFEKGZha2UsIGRlbnRyeSkgZmFrZTsKK3N0YXRpYyBt
dXRleCBkZW50cnlfaGFzaF9sb2NrOworCisvKgorICogR2V0IHRoZSBoYXNoIHZhbHVlIGZyb20g
dGhlIG1vdW50IHBvaW50IGFuZCBwYXRoIG5hbWUuCisgKiBYWFg6IHJlcGxhY2Ugd2l0aCBhIGJl
dHRlciBoYXNoIGZvciA2NC1iaXQgcG9pbnRlcnMuCisgKi8KK3N0YXRpYyB1X2ludAorZGVudHJ5
X2hhc2goc3RydWN0IG1vdW50ICptcCwgY29uc3QgY2hhciAqcGF0aCkKK3sKKyAgICB1X2ludCB2
YWwgPSAwOworCisgICAgaWYgKHBhdGgpIHsKKyAgICAgICAgd2hpbGUgKCpwYXRoKSB7CisgICAg
ICAgICAgICB2YWwgPSAoKHZhbCA8PCA1KSArIHZhbCkgKyAqcGF0aCsrOworICAgICAgICB9Cisg
ICAgfQorICAgIHJldHVybiAodmFsIF4gKHVuc2lnbmVkIGxvbmcpIG1wKSAmIChERU5UUllfQlVD
S0VUUyAtIDEpOworfQorCisKK3N0cnVjdCBkZW50cnkgKgorZGVudHJ5X2FsbG9jKHN0cnVjdCBk
ZW50cnkgKnBhcmVudF9kcCwgc3RydWN0IHZub2RlICp2cCwgY29uc3QgY2hhciAqcGF0aCkKK3sK
KyAgICBzdHJ1Y3QgbW91bnQgKm1wID0gdnAtPnZfbW91bnQ7CisgICAgc3RydWN0IGRlbnRyeSAq
ZHAgPSAoZGVudHJ5KiljYWxsb2Moc2l6ZW9mKCpkcCksIDEpOworCisgICAgaWYgKCFkcCkgewor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICB2cmVmKHZwKTsKKworICAgIGRw
LT5kX3JlZmNudCA9IDE7CisgICAgZHAtPmRfdm5vZGUgPSB2cDsKKyAgICBkcC0+ZF9tb3VudCA9
IG1wOworICAgIGRwLT5kX3BhdGggPSBzdHJkdXAocGF0aCk7CisgICAgTElTVF9JTklUKCZkcC0+
ZF9jaGlsZHJlbik7CisKKyAgICBpZiAocGFyZW50X2RwKSB7CisgICAgICAgIGRyZWYocGFyZW50
X2RwKTsKKyAgICAgICAgV0lUSF9MT0NLKHBhcmVudF9kcC0+ZF9sb2NrKSB7CisgICAgICAgICAg
ICAvLyBJbnNlcnQgZHAgaW50byBpdHMgcGFyZW50J3MgY2hpbGRyZW4gbGlzdC4KKyAgICAgICAg
ICAgIExJU1RfSU5TRVJUX0hFQUQoJnBhcmVudF9kcC0+ZF9jaGlsZHJlbiwgZHAsIGRfY2hpbGRy
ZW5fbGluayk7CisgICAgICAgIH0KKyAgICB9CisgICAgZHAtPmRfcGFyZW50ID0gcGFyZW50X2Rw
OworCisgICAgdm5fYWRkX25hbWUodnAsIGRwKTsKKworICAgIG11dGV4X2xvY2soJmRlbnRyeV9o
YXNoX2xvY2spOworICAgIExJU1RfSU5TRVJUX0hFQUQoJmRlbnRyeV9oYXNoX3RhYmxlW2RlbnRy
eV9oYXNoKG1wLCBwYXRoKV0sIGRwLCBkX2xpbmspOworICAgIG11dGV4X3VubG9jaygmZGVudHJ5
X2hhc2hfbG9jayk7CisgICAgcmV0dXJuIGRwOworfTsKKworc3RydWN0IGRlbnRyeSAqCitkZW50
cnlfbG9va3VwKHN0cnVjdCBtb3VudCAqbXAsIGNoYXIgKnBhdGgpCit7CisgICAgc3RydWN0IGRl
bnRyeSAqZHA7CisKKyAgICBtdXRleF9sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKKyAgICBMSVNU
X0ZPUkVBQ0goZHAsICZkZW50cnlfaGFzaF90YWJsZVtkZW50cnlfaGFzaChtcCwgcGF0aCldLCBk
X2xpbmspIHsKKyAgICAgICAgaWYgKGRwLT5kX21vdW50ID09IG1wICYmICFzdHJuY21wKGRwLT5k
X3BhdGgsIHBhdGgsIFBBVEhfTUFYKSkgeworICAgICAgICAgICAgZHAtPmRfcmVmY250Kys7Cisg
ICAgICAgICAgICBtdXRleF91bmxvY2soJmRlbnRyeV9oYXNoX2xvY2spOworICAgICAgICAgICAg
cmV0dXJuIGRwOworICAgICAgICB9CisgICAgfQorICAgIG11dGV4X3VubG9jaygmZGVudHJ5X2hh
c2hfbG9jayk7CisgICAgcmV0dXJuIG51bGxwdHI7ICAgICAgICAgICAgICAgIC8qIG5vdCBmb3Vu
ZCAqLworfQorCitzdGF0aWMgdm9pZCBkZW50cnlfY2hpbGRyZW5fcmVtb3ZlKHN0cnVjdCBkZW50
cnkgKmRwKQoreworICAgIHN0cnVjdCBkZW50cnkgKmVudHJ5ID0gbnVsbHB0cjsKKworICAgIFdJ
VEhfTE9DSyhkcC0+ZF9sb2NrKSB7CisgICAgICAgIExJU1RfRk9SRUFDSChlbnRyeSwgJmRwLT5k
X2NoaWxkcmVuLCBkX2NoaWxkcmVuX2xpbmspIHsKKyAgICAgICAgICAgIEFTU0VSVChlbnRyeSk7
CisgICAgICAgICAgICBBU1NFUlQoZW50cnktPmRfcmVmY250ID4gMCk7CisgICAgICAgICAgICBM
SVNUX1JFTU9WRShlbnRyeSwgZF9saW5rKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZAor
ZGVudHJ5X21vdmUoc3RydWN0IGRlbnRyeSAqZHAsIHN0cnVjdCBkZW50cnkgKnBhcmVudF9kcCwg
Y2hhciAqcGF0aCkKK3sKKyAgICBzdHJ1Y3QgZGVudHJ5ICpvbGRfcGRwID0gZHAtPmRfcGFyZW50
OworICAgIGNoYXIgKm9sZF9wYXRoID0gZHAtPmRfcGF0aDsKKworICAgIGlmIChvbGRfcGRwKSB7
CisgICAgICAgIFdJVEhfTE9DSyhvbGRfcGRwLT5kX2xvY2spIHsKKyAgICAgICAgICAgIC8vIFJl
bW92ZSBkcCBmcm9tIGl0cyBvbGQgcGFyZW50J3MgY2hpbGRyZW4gbGlzdC4KKyAgICAgICAgICAg
IExJU1RfUkVNT1ZFKGRwLCBkX2NoaWxkcmVuX2xpbmspOworICAgICAgICB9CisgICAgfQorCisg
ICAgaWYgKHBhcmVudF9kcCkgeworICAgICAgICBkcmVmKHBhcmVudF9kcCk7CisgICAgICAgIFdJ
VEhfTE9DSyhwYXJlbnRfZHAtPmRfbG9jaykgeworICAgICAgICAgICAgLy8gSW5zZXJ0IGRwIGlu
dG8gaXRzIG5ldyBwYXJlbnQncyBjaGlsZHJlbiBsaXN0LgorICAgICAgICAgICAgTElTVF9JTlNF
UlRfSEVBRCgmcGFyZW50X2RwLT5kX2NoaWxkcmVuLCBkcCwgZF9jaGlsZHJlbl9saW5rKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIFdJVEhfTE9DSyhkZW50cnlfaGFzaF9sb2NrKSB7CisgICAg
ICAgIC8vIFJlbW92ZSBhbGwgZHAncyBjaGlsZCBkZW50cmllcyBmcm9tIHRoZSBoYXNodGFibGUu
CisgICAgICAgIGRlbnRyeV9jaGlsZHJlbl9yZW1vdmUoZHApOworICAgICAgICAvLyBSZW1vdmUg
ZHAgd2l0aCBvdXRkYXRlZCBoYXNoIGluZm8gZnJvbSB0aGUgaGFzaHRhYmxlLgorICAgICAgICBM
SVNUX1JFTU9WRShkcCwgZF9saW5rKTsKKyAgICAgICAgLy8gVXBkYXRlIGRwLgorICAgICAgICBk
cC0+ZF9wYXRoID0gc3RyZHVwKHBhdGgpOworICAgICAgICBkcC0+ZF9wYXJlbnQgPSBwYXJlbnRf
ZHA7CisgICAgICAgIC8vIEluc2VydCBkcCB1cGRhdGVkIGhhc2ggaW5mbyBpbnRvIHRoZSBoYXNo
dGFibGUuCisgICAgICAgIExJU1RfSU5TRVJUX0hFQUQoJmRlbnRyeV9oYXNoX3RhYmxlW2RlbnRy
eV9oYXNoKGRwLT5kX21vdW50LCBwYXRoKV0sCisgICAgICAgICAgICBkcCwgZF9saW5rKTsKKyAg
ICB9CisKKyAgICBpZiAob2xkX3BkcCkgeworICAgICAgICBkcmVsZShvbGRfcGRwKTsKKyAgICB9
CisKKyAgICBmcmVlKG9sZF9wYXRoKTsKK30KKwordm9pZAorZGVudHJ5X3JlbW92ZShzdHJ1Y3Qg
ZGVudHJ5ICpkcCkKK3sKKyAgICBtdXRleF9sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKKyAgICBM
SVNUX1JFTU9WRShkcCwgZF9saW5rKTsKKyAgICAvKiBwdXQgaXQgb24gYSBmYWtlIGxpc3QgZm9y
IGRyZWxlKCkgdG8gd29yayovCisgICAgTElTVF9JTlNFUlRfSEVBRCgmZmFrZSwgZHAsIGRfbGlu
ayk7CisgICAgbXV0ZXhfdW5sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKK30KKwordm9pZAorZHJl
ZihzdHJ1Y3QgZGVudHJ5ICpkcCkKK3sKKyAgICBBU1NFUlQoZHApOworICAgIEFTU0VSVChkcC0+
ZF9yZWZjbnQgPiAwKTsKKworICAgIG11dGV4X2xvY2soJmRlbnRyeV9oYXNoX2xvY2spOworICAg
IGRwLT5kX3JlZmNudCsrOworICAgIG11dGV4X3VubG9jaygmZGVudHJ5X2hhc2hfbG9jayk7Cit9
CisKK3ZvaWQKK2RyZWxlKHN0cnVjdCBkZW50cnkgKmRwKQoreworICAgIEFTU0VSVChkcCk7Cisg
ICAgQVNTRVJUKGRwLT5kX3JlZmNudCA+IDApOworCisgICAgbXV0ZXhfbG9jaygmZGVudHJ5X2hh
c2hfbG9jayk7CisgICAgaWYgKC0tZHAtPmRfcmVmY250KSB7CisgICAgICAgIG11dGV4X3VubG9j
aygmZGVudHJ5X2hhc2hfbG9jayk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgTElTVF9S
RU1PVkUoZHAsIGRfbGluayk7CisgICAgdm5fZGVsX25hbWUoZHAtPmRfdm5vZGUsIGRwKTsKKwor
ICAgIG11dGV4X3VubG9jaygmZGVudHJ5X2hhc2hfbG9jayk7CisKKyAgICBpZiAoZHAtPmRfcGFy
ZW50KSB7CisgICAgICAgIFdJVEhfTE9DSyhkcC0+ZF9wYXJlbnQtPmRfbG9jaykgeworICAgICAg
ICAgICAgLy8gUmVtb3ZlIGRwIGZyb20gaXRzIHBhcmVudCdzIGNoaWxkcmVuIGxpc3QuCisgICAg
ICAgICAgICBMSVNUX1JFTU9WRShkcCwgZF9jaGlsZHJlbl9saW5rKTsKKyAgICAgICAgfQorICAg
ICAgICBkcmVsZShkcC0+ZF9wYXJlbnQpOworICAgIH0KKworICAgIHZyZWxlKGRwLT5kX3Zub2Rl
KTsKKworICAgIGZyZWUoZHAtPmRfcGF0aCk7CisgICAgZnJlZShkcCk7Cit9CisKK3ZvaWQKK2Rl
bnRyeV9pbml0KHZvaWQpCit7CisgICAgaW50IGk7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgREVO
VFJZX0JVQ0tFVFM7IGkrKykgeworICAgICAgICBMSVNUX0lOSVQoJmRlbnRyeV9oYXNoX3RhYmxl
W2ldKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9mb3BzLmMgYi9saWIvdmZz
Y29yZS9mb3BzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjNhOGY5OGI0
Ci0tLSAvZGV2L251bGwKKysrIGIvbGliL3Zmc2NvcmUvZm9wcy5jCkBAIC0wLDAgKzEsMTg5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIENsb3VkaXVzIFN5c3RlbXMsIEx0ZC4KKyAqCisg
KiBUaGlzIHdvcmsgaXMgb3BlbiBzb3VyY2Ugc29mdHdhcmUsIGxpY2Vuc2VkIHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUKKyAqIEJTRCBsaWNlbnNlIGFzIGRlc2NyaWJlZCBpbiB0aGUgTElDRU5TRSBm
aWxlIGluIHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5LgorICovCisKKworI2luY2x1ZGUgPGZjbnRs
Lmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxvc3YvZmlsZS5oPgorI2luY2x1
ZGUgPG9zdi9wb2xsLmg+CisjaW5jbHVkZSA8ZnMvdmZzL3Zmcy5oPgorI2luY2x1ZGUgPG9zdi92
ZnNfZmlsZS5oaD4KKyNpbmNsdWRlIDxvc3YvbW11LmhoPgorI2luY2x1ZGUgPG9zdi9wYWdlY2Fj
aGUuaGg+CisKK3Zmc19maWxlOjp2ZnNfZmlsZSh1bnNpZ25lZCBmbGFncykKKwk6IGZpbGUoZmxh
Z3MsIERUWVBFX1ZOT0RFKQoreworfQorCitpbnQgdmZzX2ZpbGU6OmNsb3NlKCkKK3sKKwlhdXRv
IGZwID0gdGhpczsKKwlzdHJ1Y3Qgdm5vZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOwor
CWludCBlcnJvcjsKKworCXZuX2xvY2sodnApOworCWVycm9yID0gVk9QX0NMT1NFKHZwLCBmcCk7
CisJdm5fdW5sb2NrKHZwKTsKKworCWlmIChlcnJvcikKKwkJcmV0dXJuIGVycm9yOworCisJZnAt
PmZfZGVudHJ5LnJlc2V0KCk7CisJcmV0dXJuIDA7Cit9CisKK2ludCB2ZnNfZmlsZTo6cmVhZChz
dHJ1Y3QgdWlvICp1aW8sIGludCBmbGFncykKK3sKKwlhdXRvIGZwID0gdGhpczsKKwlzdHJ1Y3Qg
dm5vZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOworCWludCBlcnJvcjsKKwlzaXplX3Qg
Y291bnQ7CisJc3NpemVfdCBieXRlczsKKworCWJ5dGVzID0gdWlvLT51aW9fcmVzaWQ7CisKKwl2
bl9sb2NrKHZwKTsKKwlpZiAoKGZsYWdzICYgRk9GX09GRlNFVCkgPT0gMCkKKwkJdWlvLT51aW9f
b2Zmc2V0ID0gZnAtPmZfb2Zmc2V0OworCisJZXJyb3IgPSBWT1BfUkVBRCh2cCwgZnAsIHVpbywg
MCk7CisJaWYgKCFlcnJvcikgeworCQljb3VudCA9IGJ5dGVzIC0gdWlvLT51aW9fcmVzaWQ7CisJ
CWlmICgoZmxhZ3MgJiBGT0ZfT0ZGU0VUKSA9PSAwKQorCQkJZnAtPmZfb2Zmc2V0ICs9IGNvdW50
OworCX0KKwl2bl91bmxvY2sodnApOworCisJcmV0dXJuIGVycm9yOworfQorCisKK2ludCB2ZnNf
ZmlsZTo6d3JpdGUoc3RydWN0IHVpbyAqdWlvLCBpbnQgZmxhZ3MpCit7CisJYXV0byBmcCA9IHRo
aXM7CisJc3RydWN0IHZub2RlICp2cCA9IGZwLT5mX2RlbnRyeS0+ZF92bm9kZTsKKwlpbnQgaW9m
bGFncyA9IDA7CisJaW50IGVycm9yOworCXNpemVfdCBjb3VudDsKKwlzc2l6ZV90IGJ5dGVzOwor
CisJYnl0ZXMgPSB1aW8tPnVpb19yZXNpZDsKKworCXZuX2xvY2sodnApOworCisJaWYgKGZwLT5m
X2ZsYWdzICYgT19BUFBFTkQpCisJCWlvZmxhZ3MgfD0gSU9fQVBQRU5EOworCWlmIChmcC0+Zl9m
bGFncyAmIChPX0RTWU5DfE9fU1lOQykpCisJCWlvZmxhZ3MgfD0gSU9fU1lOQzsKKworCWlmICgo
ZmxhZ3MgJiBGT0ZfT0ZGU0VUKSA9PSAwKQorCSAgICAgICAgdWlvLT51aW9fb2Zmc2V0ID0gZnAt
PmZfb2Zmc2V0OworCisJZXJyb3IgPSBWT1BfV1JJVEUodnAsIHVpbywgaW9mbGFncyk7CisJaWYg
KCFlcnJvcikgeworCQljb3VudCA9IGJ5dGVzIC0gdWlvLT51aW9fcmVzaWQ7CisJCWlmICgoZmxh
Z3MgJiBGT0ZfT0ZGU0VUKSA9PSAwKQorCQkJZnAtPmZfb2Zmc2V0ICs9IGNvdW50OworCX0KKwor
CXZuX3VubG9jayh2cCk7CisJcmV0dXJuIGVycm9yOworfQorCitpbnQgdmZzX2ZpbGU6OmlvY3Rs
KHVfbG9uZyBjb20sIHZvaWQgKmRhdGEpCit7CisJYXV0byBmcCA9IHRoaXM7CisJc3RydWN0IHZu
b2RlICp2cCA9IGZwLT5mX2RlbnRyeS0+ZF92bm9kZTsKKwlpbnQgZXJyb3I7CisKKwl2bl9sb2Nr
KHZwKTsKKwllcnJvciA9IFZPUF9JT0NUTCh2cCwgZnAsIGNvbSwgZGF0YSk7CisJdm5fdW5sb2Nr
KHZwKTsKKworCXJldHVybiBlcnJvcjsKK30KKworaW50IHZmc19maWxlOjpzdGF0KHN0cnVjdCBz
dGF0ICpzdCkKK3sKKwlhdXRvIGZwID0gdGhpczsKKwlzdHJ1Y3Qgdm5vZGUgKnZwID0gZnAtPmZf
ZGVudHJ5LT5kX3Zub2RlOworCWludCBlcnJvcjsKKworCXZuX2xvY2sodnApOworCWVycm9yID0g
dm5fc3RhdCh2cCwgc3QpOworCXZuX3VubG9jayh2cCk7CisKKwlyZXR1cm4gZXJyb3I7Cit9CisK
K2ludCB2ZnNfZmlsZTo6cG9sbChpbnQgZXZlbnRzKQoreworCXJldHVybiBwb2xsX25vX3BvbGwo
ZXZlbnRzKTsKK30KKworaW50IHZmc19maWxlOjp0cnVuY2F0ZShvZmZfdCBsZW4pCit7CisJLy8g
c29tZWhvdyB0aGlzIGlzIGhhbmRsZWQgb3V0c2lkZSBmaWxlIG9wcworCWFib3J0KCk7Cit9CisK
K2ludCB2ZnNfZmlsZTo6Y2htb2QobW9kZV90IG1vZGUpCit7CisJLy8gc29tZWhvdyB0aGlzIGlz
IGhhbmRsZWQgb3V0c2lkZSBmaWxlIG9wcworCWFib3J0KCk7Cit9CisKK2Jvb2wgdmZzX2ZpbGU6
Om1hcF9wYWdlKHVpbnRwdHJfdCBvZmYsIG1tdTo6aHdfcHRlcDwwPiBwdGVwLCBtbXU6OnB0X2Vs
ZW1lbnQ8MD4gcHRlLCBib29sIHdyaXRlLCBib29sIHNoYXJlZCkKK3sKKyAgICByZXR1cm4gcGFn
ZWNhY2hlOjpnZXQodGhpcywgb2ZmLCBwdGVwLCBwdGUsIHdyaXRlLCBzaGFyZWQpOworfQorCiti
b29sIHZmc19maWxlOjpwdXRfcGFnZSh2b2lkICphZGRyLCB1aW50cHRyX3Qgb2ZmLCBtbXU6Omh3
X3B0ZXA8MD4gcHRlcCkKK3sKKyAgICByZXR1cm4gcGFnZWNhY2hlOjpyZWxlYXNlKHRoaXMsIGFk
ZHIsIG9mZiwgcHRlcCk7Cit9CisKK3ZvaWQgdmZzX2ZpbGU6OnN5bmMob2ZmX3Qgc3RhcnQsIG9m
Zl90IGVuZCkKK3sKKyAgICBwYWdlY2FjaGU6OnN5bmModGhpcywgc3RhcnQsIGVuZCk7Cit9CisK
Ky8vIExvY2tpbmc6IFZPUF9DQUNIRSB3aWxsIGNhbGwgaW50byB0aGUgZmlsZXN5c3RlbSwgYW5k
IHRoYXQgY2FuIHRyaWdnZXIgYW4KKy8vIGV2aWN0aW9uIHRoYXQgd2lsbCBob2xkIHRoZSBtbXUt
c2lkZSBsb2NrIHRoYXQgcHJvdGVjdHMgdGhlIG1hcHBpbmdzCisvLyBBbHdheXMgZm9sbG93IHRo
YXQgb3JkZXIuIFdlIGhvd2V2ZXIgY2FuJ3QganVzdCBnZXQgcmlkIG9mIHRoZSBtbXUtc2lkZSBs
b2NrLAorLy8gYmVjYXVzZSBub3QgYWxsIGludmFsaWRhdGlvbnMgd2lsbCBiZSBzeW5jaHJvbm91
cy4KK2ludCB2ZnNfZmlsZTo6Z2V0X2FyY2J1Zih2b2lkKiBrZXksIG9mZl90IG9mZnNldCkKK3sK
KyAgICBzdHJ1Y3Qgdm5vZGUgKnZwID0gZl9kZW50cnktPmRfdm5vZGU7CisKKyAgICBpb3ZlYyBp
b1sxXTsKKworICAgIGlvWzBdLmlvdl9iYXNlID0ga2V5OworICAgIHVpbyBkYXRhOworICAgIGRh
dGEudWlvX2lvdiA9IGlvOworICAgIGRhdGEudWlvX2lvdmNudCA9IDE7CisgICAgZGF0YS51aW9f
b2Zmc2V0ID0gb2Zmc2V0OworICAgIGRhdGEudWlvX3Jlc2lkID0gbW11OjpwYWdlX3NpemU7Cisg
ICAgZGF0YS51aW9fcncgPSBVSU9fUkVBRDsKKworICAgIHZuX2xvY2sodnApOworICAgIGFzc2Vy
dChWT1BfQ0FDSEUodnAsIHRoaXMsICZkYXRhKSA9PSAwKTsKKyAgICB2bl91bmxvY2sodnApOwor
CisgICAgcmV0dXJuIChkYXRhLnVpb19yZXNpZCAhPSAwKSA/IC0xIDogMDsKK30KKworc3RkOjp1
bmlxdWVfcHRyPG1tdTo6ZmlsZV92bWE+IHZmc19maWxlOjptbWFwKGFkZHJfcmFuZ2UgcmFuZ2Us
IHVuc2lnbmVkIGZsYWdzLCB1bnNpZ25lZCBwZXJtLCBvZmZfdCBvZmZzZXQpCit7CisJYXV0byBm
cCA9IHRoaXM7CisJc3RydWN0IHZub2RlICp2cCA9IGZwLT5mX2RlbnRyeS0+ZF92bm9kZTsKKwlp
ZiAoIXZwLT52X29wLT52b3BfY2FjaGUgfHwgKHZwLT52X3NpemUgPCAob2ZmX3QpbW11OjpwYWdl
X3NpemUpKSB7CisJCXJldHVybiBtbXU6OmRlZmF1bHRfZmlsZV9tbWFwKHRoaXMsIHJhbmdlLCBm
bGFncywgcGVybSwgb2Zmc2V0KTsKKwl9CisJcmV0dXJuIG1tdTo6bWFwX2ZpbGVfbW1hcCh0aGlz
LCByYW5nZSwgZmxhZ3MsIHBlcm0sIG9mZnNldCk7Cit9CmRpZmYgLS1naXQgYS9saWIvdmZzY29y
ZS9pbmNsdWRlL3Zmc2NvcmUvZGVudHJ5LmggYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUv
ZGVudHJ5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLmEyNTQ1YWY4Ci0t
LSAvZGV2L251bGwKKysrIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2RlbnRyeS5oCkBA
IC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQ2xvdWRpdXMgU3lzdGVt
cywgTHRkLgorICoKKyAqIFRoaXMgd29yayBpcyBvcGVuIHNvdXJjZSBzb2Z0d2FyZSwgbGljZW5z
ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZQorICogQlNEIGxpY2Vuc2UgYXMgZGVzY3JpYmVkIGlu
IHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHRvcC1sZXZlbCBkaXJlY3RvcnkuCisgKi8KKworI2lm
bmRlZiBfT1NWX0RFTlRSWV9ICisjZGVmaW5lIF9PU1ZfREVOVFJZX0ggMQorCisjaW5jbHVkZSA8
b3N2L211dGV4Lmg+CisjaW5jbHVkZSA8YnNkL3N5cy9zeXMvcXVldWUuaD4KKworc3RydWN0IHZu
b2RlOworCitzdHJ1Y3QgZGVudHJ5IHsKKwlMSVNUX0VOVFJZKGRlbnRyeSkgZF9saW5rOwkvKiBs
aW5rIGZvciBoYXNoIGxpc3QgKi8KKwlpbnQJCWRfcmVmY250OwkvKiByZWZlcmVuY2UgY291bnQg
Ki8KKwljaGFyCQkqZF9wYXRoOwkvKiBwb2ludGVyIHRvIHBhdGggaW4gZnMgKi8KKwlzdHJ1Y3Qg
dm5vZGUJKmRfdm5vZGU7CisJc3RydWN0IG1vdW50CSpkX21vdW50OworCXN0cnVjdCBkZW50cnkg
ICAqZF9wYXJlbnQ7IC8qIHBvaW50ZXIgdG8gcGFyZW50ICovCisJTElTVF9FTlRSWShkZW50cnkp
IGRfbmFtZXNfbGluazsgLyogbGluayBmbyB2bm9kZTo6ZF9uYW1lcyAqLworCW11dGV4X3QJCWRf
bG9jazsKKwlMSVNUX0hFQUQoLCBkZW50cnkpIGRfY2hpbGRyZW47CisJTElTVF9FTlRSWShkZW50
cnkpIGRfY2hpbGRyZW5fbGluazsKK307CisKKyNpZmRlZiBfX2NwbHVzcGx1cworCisjaW5jbHVk
ZSA8Ym9vc3QvaW50cnVzaXZlX3B0ci5ocHA+CisKK3VzaW5nIGRlbnRyeV9yZWYgPSBib29zdDo6
aW50cnVzaXZlX3B0cjxkZW50cnk+OworCitleHRlcm4gIkMiIHsKKyAgICB2b2lkIGRyZWYoc3Ry
dWN0IGRlbnRyeSogZHApOworICAgIHZvaWQgZHJlbGUoc3RydWN0IGRlbnRyeSogZHApOworfTsK
KworaW5saW5lIHZvaWQgaW50cnVzaXZlX3B0cl9hZGRfcmVmKGRlbnRyeSogZHApIHsgZHJlZihk
cCk7IH0KK2lubGluZSB2b2lkIGludHJ1c2l2ZV9wdHJfcmVsZWFzZShkZW50cnkqIGRwKSB7IGRy
ZWxlKGRwKTsgfQorCisjZW5kaWYKKworI2VuZGlmIC8qIF9PU1ZfREVOVFJZX0ggKi8KZGlmZiAt
LWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9tb3VudC5oIGIvbGliL3Zmc2NvcmUv
aW5jbHVkZS92ZnNjb3JlL21vdW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAuLjcyNjhkOGNlCi0tLSAvZGV2L251bGwKKysrIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNj
b3JlL21vdW50LmgKQEAgLTAsMCArMSwxNzEgQEAKKy8qLQorICogQ29weXJpZ2h0IChjKSAxOTg5
LCAxOTkxLCAxOTkzCisgKglUaGUgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9y
bmlhLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5h
bWUgb2YgdGhlIFVuaXZlcnNpdHkgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisg
KiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tIHRoaXMgc29mdHdhcmUKKyAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIFJFR0VO
VFMgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBSRUdFTlRTIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
CisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0Uu
CisgKgorICoJQCgjKW1vdW50LmgJOC4yMSAoQmVya2VsZXkpIDUvMjAvOTUKKyAqLworCisjaWZu
ZGVmIF9TWVNfTU9VTlRfSF8KKyNkZWZpbmUgX1NZU19NT1VOVF9IXworCisjaW5jbHVkZSA8c3lz
L2NkZWZzLmg+CisjaW5jbHVkZSA8c3lzL3N0YXRmcy5oPgorI2luY2x1ZGUgPG9zdi92bm9kZS5o
PgorI2luY2x1ZGUgPGJzZC9zeXMvc3lzL3F1ZXVlLmg+CisKK19fQkVHSU5fREVDTFMKKworI2lm
ZGVmIF9LRVJORUwKKworLyoKKyAqIE1vdW50IGRhdGEKKyAqLworc3RydWN0IG1vdW50IHsKKwlz
dHJ1Y3QgdmZzb3BzCSptX29wOwkJLyogcG9pbnRlciB0byB2ZnMgb3BlcmF0aW9uICovCisJaW50
CQltX2ZsYWdzOwkvKiBtb3VudCBmbGFnICovCisJaW50CQltX2NvdW50OwkvKiByZWZlcmVuY2Ug
Y291bnQgKi8KKwljaGFyICAgICAgICAgICAgbV9wYXRoW1BBVEhfTUFYXTsgLyogbW91bnRlZCBw
YXRoICovCisJY2hhciAgICAgICAgICAgIG1fc3BlY2lhbFtQQVRIX01BWF07IC8qIHJlc291cmNl
ICovCisJc3RydWN0IGRldmljZQkqbV9kZXY7CQkvKiBtb3VudGVkIGRldmljZSAqLworCXN0cnVj
dCBkZW50cnkJKm1fcm9vdDsJLyogcm9vdCB2bm9kZSAqLworCXN0cnVjdCBkZW50cnkJKm1fY292
ZXJlZDsJLyogdm5vZGUgY292ZXJlZCBvbiBwYXJlbnQgZnMgKi8KKwl2b2lkCQkqbV9kYXRhOwkv
KiBwcml2YXRlIGRhdGEgZm9yIGZzICovCisJZnNpZF90IAkJbV9mc2lkOyAJLyogaWQgdGhhdCB1
bmlxdWVseSBpZGVudGlmaWVzIHRoZSBmcyAqLworfTsKKworI2VuZGlmCisKKy8qCisgKiBNb3Vu
dCBmbGFncy4KKyAqLworI2RlZmluZQlNTlRfUkRPTkxZCTB4MDAwMDAwMDEJLyogcmVhZCBvbmx5
IGZpbGVzeXN0ZW0gKi8KKyNkZWZpbmUJTU5UX1NZTkNIUk9OT1VTCTB4MDAwMDAwMDIJLyogZmls
ZSBzeXN0ZW0gd3JpdHRlbiBzeW5jaHJvbm91c2x5ICovCisjZGVmaW5lCU1OVF9OT0VYRUMJMHgw
MDAwMDAwNAkvKiBjYW4ndCBleGVjIGZyb20gZmlsZXN5c3RlbSAqLworI2RlZmluZQlNTlRfTk9T
VUlECTB4MDAwMDAwMDgJLyogZG9uJ3QgaG9ub3Igc2V0dWlkIGJpdHMgb24gZnMgKi8KKyNkZWZp
bmUJTU5UX05PREVWCTB4MDAwMDAwMTAJLyogZG9uJ3QgaW50ZXJwcmV0IHNwZWNpYWwgZmlsZXMg
Ki8KKyNkZWZpbmUJTU5UX1VOSU9OCTB4MDAwMDAwMjAJLyogdW5pb24gd2l0aCB1bmRlcmx5aW5n
IGZpbGVzeXN0ZW0gKi8KKyNkZWZpbmUJTU5UX0FTWU5DCTB4MDAwMDAwNDAJLyogZmlsZSBzeXN0
ZW0gd3JpdHRlbiBhc3luY2hyb25vdXNseSAqLworCisvKgorICogVW5tb3VudCBmbGFncy4KKyAq
LworI2RlZmluZSBNTlRfRk9SQ0UJMHgwMDAwMDAwMQkvKiBmb3JjZWQgdW5tb3VudCAqLworCisv
KgorICogZXhwb3J0ZWQgbW91bnQgZmxhZ3MuCisgKi8KKyNkZWZpbmUJTU5UX0VYUkRPTkxZCTB4
MDAwMDAwODAJLyogZXhwb3J0ZWQgcmVhZCBvbmx5ICovCisjZGVmaW5lCU1OVF9FWFBPUlRFRAkw
eDAwMDAwMTAwCS8qIGZpbGUgc3lzdGVtIGlzIGV4cG9ydGVkICovCisjZGVmaW5lCU1OVF9ERUZF
WFBPUlRFRAkweDAwMDAwMjAwCS8qIGV4cG9ydGVkIHRvIHRoZSB3b3JsZCAqLworI2RlZmluZQlN
TlRfRVhQT1JUQU5PTgkweDAwMDAwNDAwCS8qIHVzZSBhbm9uIHVpZCBtYXBwaW5nIGZvciBldmVy
eW9uZSAqLworI2RlZmluZQlNTlRfRVhLRVJCCTB4MDAwMDA4MDAJLyogZXhwb3J0ZWQgd2l0aCBL
ZXJiZXJvcyB1aWQgbWFwcGluZyAqLworCisvKgorICogRmxhZ3Mgc2V0IGJ5IGludGVybmFsIG9w
ZXJhdGlvbnMuCisgKi8KKyNkZWZpbmUJTU5UX0xPQ0FMCTB4MDAwMDEwMDAJLyogZmlsZXN5c3Rl
bSBpcyBzdG9yZWQgbG9jYWxseSAqLworI2RlZmluZQlNTlRfUVVPVEEJMHgwMDAwMjAwMAkvKiBx
dW90YXMgYXJlIGVuYWJsZWQgb24gZmlsZXN5c3RlbSAqLworI2RlZmluZQlNTlRfUk9PVEZTCTB4
MDAwMDQwMDAJLyogaWRlbnRpZmllcyB0aGUgcm9vdCBmaWxlc3lzdGVtICovCisKKy8qCisgKiBN
YXNrIG9mIGZsYWdzIHRoYXQgYXJlIHZpc2libGUgdG8gc3RhdGZzKCkKKyAqLworI2RlZmluZQlN
TlRfVklTRkxBR01BU0sJMHgwMDAwZmZmZgorCisjaWZkZWYgX0tFUk5FTAorCisvKgorICogRmls
ZXN5c3RlbSB0eXBlIHN3aXRjaCB0YWJsZS4KKyAqLworc3RydWN0IHZmc3N3IHsKKwljb25zdCBj
aGFyICAgICAgKnZzX25hbWU7CS8qIG5hbWUgb2YgZmlsZSBzeXN0ZW0gKi8KKwlpbnQJCSgqdnNf
aW5pdCkodm9pZCk7IC8qIGluaXRpYWxpemUgcm91dGluZSAqLworCXN0cnVjdCB2ZnNvcHMJKnZz
X29wOwkJLyogcG9pbnRlciB0byB2ZnMgb3BlcmF0aW9uICovCit9OworCisvKgorICogT3BlcmF0
aW9ucyBzdXBwb3J0ZWQgb24gdmlydHVhbCBmaWxlIHN5c3RlbS4KKyAqLworc3RydWN0IHZmc29w
cyB7CisJaW50ICgqdmZzX21vdW50KQkoc3RydWN0IG1vdW50ICosIGNvbnN0IGNoYXIgKiwgaW50
LCBjb25zdCB2b2lkICopOworCWludCAoKnZmc191bm1vdW50KQkoc3RydWN0IG1vdW50ICosIGlu
dCBmbGFncyk7CisJaW50ICgqdmZzX3N5bmMpCQkoc3RydWN0IG1vdW50ICopOworCWludCAoKnZm
c192Z2V0KQkJKHN0cnVjdCBtb3VudCAqLCBzdHJ1Y3Qgdm5vZGUgKik7CisJaW50ICgqdmZzX3N0
YXRmcykJKHN0cnVjdCBtb3VudCAqLCBzdHJ1Y3Qgc3RhdGZzICopOworCXN0cnVjdCB2bm9wcwkq
dmZzX3Zub3BzOworfTsKKwordHlwZWRlZiBpbnQgKCp2ZnNvcF9tb3VudF90KShzdHJ1Y3QgbW91
bnQgKiwgY29uc3QgY2hhciAqLCBpbnQsIGNvbnN0IHZvaWQgKik7Cit0eXBlZGVmIGludCAoKnZm
c29wX3Vtb3VudF90KShzdHJ1Y3QgbW91bnQgKiwgaW50IGZsYWdzKTsKK3R5cGVkZWYgaW50ICgq
dmZzb3Bfc3luY190KShzdHJ1Y3QgbW91bnQgKik7Cit0eXBlZGVmIGludCAoKnZmc29wX3ZnZXRf
dCkoc3RydWN0IG1vdW50ICosIHN0cnVjdCB2bm9kZSAqKTsKK3R5cGVkZWYgaW50ICgqdmZzb3Bf
c3RhdGZzX3QpKHN0cnVjdCBtb3VudCAqLCBzdHJ1Y3Qgc3RhdGZzICopOworCisvKgorICogVkZT
IGludGVyZmFjZQorICovCisjZGVmaW5lIFZGU19NT1VOVChNUCwgREVWLCBGTCwgREFUKSAoKE1Q
KS0+bV9vcC0+dmZzX21vdW50KShNUCwgREVWLCBGTCwgREFUKQorI2RlZmluZSBWRlNfVU5NT1VO
VChNUCwgRkwpICAgICAgICAgKChNUCktPm1fb3AtPnZmc191bm1vdW50KShNUCwgRkwpCisjZGVm
aW5lIFZGU19TWU5DKE1QKSAgICAgICAgICAgICAgICAoKE1QKS0+bV9vcC0+dmZzX3N5bmMpKE1Q
KQorI2RlZmluZSBWRlNfVkdFVChNUCwgVlApICAgICAgICAgICAgKChNUCktPm1fb3AtPnZmc192
Z2V0KShNUCwgVlApCisjZGVmaW5lIFZGU19TVEFURlMoTVAsIFNGUCkgICAgICAgICAoKE1QKS0+
bV9vcC0+dmZzX3N0YXRmcykoTVAsIFNGUCkKKworI2RlZmluZSBWRlNfTlVMTAkJICAgICgodm9p
ZCAqKXZmc19udWxsKQorCitpbnQJdmZzX251bGxvcCh2b2lkKTsKK2ludAl2ZnNfZWludmFsKHZv
aWQpOworCit2b2lkCSB2ZnNfYnVzeShzdHJ1Y3QgbW91bnQgKm1wKTsKK3ZvaWQJIHZmc191bmJ1
c3koc3RydWN0IG1vdW50ICptcCk7CisKK3ZvaWQJIHJlbGVhc2VfbXBfZGVudHJpZXMoc3RydWN0
IG1vdW50ICptcCk7CisKKyNlbmRpZgorCitfX0VORF9ERUNMUworCisjaWZkZWYgX19jcGx1c3Bs
dXMKKworI2luY2x1ZGUgPHZlY3Rvcj4KKyNpbmNsdWRlIDxzdHJpbmc+CisKK25hbWVzcGFjZSBv
c3YgeworCitzdHJ1Y3QgbW91bnRfZGVzYyB7CisgICAgc3RkOjpzdHJpbmcgc3BlY2lhbDsKKyAg
ICBzdGQ6OnN0cmluZyBwYXRoOworICAgIHN0ZDo6c3RyaW5nIHR5cGU7CisgICAgc3RkOjpzdHJp
bmcgb3B0aW9uczsKK307CisKK3N0ZDo6dmVjdG9yPG1vdW50X2Rlc2M+IGN1cnJlbnRfbW91bnRz
KCk7CisKK30KKworI2VuZGlmCisKKyNlbmRpZgkvKiAhX1NZU19NT1VOVF9IXyAqLwpkaWZmIC0t
Z2l0IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3ByZXguaCBiL2xpYi92ZnNjb3JlL2lu
Y2x1ZGUvdmZzY29yZS9wcmV4LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAu
LjQzNjUwMzQwCi0tLSAvZGV2L251bGwKKysrIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3Jl
L3ByZXguaApAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIENsb3Vk
aXVzIFN5c3RlbXMsIEx0ZC4KKyAqCisgKiBUaGlzIHdvcmsgaXMgb3BlbiBzb3VyY2Ugc29mdHdh
cmUsIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUKKyAqIEJTRCBsaWNlbnNlIGFzIGRl
c2NyaWJlZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5Lgor
ICovCisKKyNpZm5kZWYgX09TVl9QUkVYX0gKKyNkZWZpbmUgX09TVl9QUkVYX0ggMQorCisKKyNp
bmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxvc3YvZmNudGwuaD4KKworX19CRUdJTl9ERUNM
UworCisjZGVmaW5lIF9fcGFja2VkICAgICAgICBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fKSkK
KworI2RlZmluZQlCU0laRQk1MTIJCS8qIHNpemUgb2Ygc2Vjb25kYXJ5IGJsb2NrIChieXRlcykg
Ki8KKworI2RlZmluZSBET19SRFdSCQkweDIKKworI2RlZmluZSBQQUdFX1NJWkUJNDA5NgorI2Rl
ZmluZSBQQUdFX01BU0sJKFBBR0VfU0laRS0xKQorI2RlZmluZSByb3VuZF9wYWdlKHgpCSgoKHgp
ICsgUEFHRV9NQVNLKSAmIH5QQUdFX01BU0spCisKK3NpemVfdCBzdHJsY2F0KGNoYXIgKmRzdCwg
Y29uc3QgY2hhciAqc3JjLCBzaXplX3Qgc2l6KTsKK3NpemVfdCBzdHJsY3B5KGNoYXIgKmRzdCwg
Y29uc3QgY2hhciAqc3JjLCBzaXplX3Qgc2l6KTsKKwordm9pZCBzeXNfcGFuaWMoY29uc3QgY2hh
ciAqKTsKKworX19FTkRfREVDTFMKKworI2VuZGlmIC8qIF9PU1ZfUFJFWF9IICovCmRpZmYgLS1n
aXQgYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdWlvLmggYi9saWIvdmZzY29yZS9pbmNs
dWRlL3Zmc2NvcmUvdWlvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjY5
NmIwMWNmCi0tLSAvZGV2L251bGwKKysrIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Vp
by5oCkBAIC0wLDAgKzEsODkgQEAKKy8qLQorICogQ29weXJpZ2h0IChjKSAxOTgyLCAxOTg2LCAx
OTkzLCAxOTk0CisgKglUaGUgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlh
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDQuIE5laXRoZXIgdGhlIG5hbWUg
b2YgdGhlIFVuaXZlcnNpdHkgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisgKiAg
ICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
IHRoaXMgc29mdHdhcmUKKyAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIFJFR0VOVFMg
QU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBS
RUdFTlRTIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisg
KiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAor
ICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisg
KgorICoJQCgjKXVpby5oCTguNSAoQmVya2VsZXkpIDIvMjIvOTQKKyAqICRGcmVlQlNEJAorICov
CisKKyNpZm5kZWYgX1VJT19IXworI2RlZmluZQlfVUlPX0hfCisKKyNpbmNsdWRlIDxzeXMvY2Rl
ZnMuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvdWlvLmg+CisjaW5j
bHVkZSA8bGltaXRzLmg+CisKK19fQkVHSU5fREVDTFMKKworZW51bQl1aW9fcncgeyBVSU9fUkVB
RCwgVUlPX1dSSVRFIH07CisKKy8qCisgKiBTYWZlIGRlZmF1bHQgdG8gcHJldmVudCBwb3NzaWJs
ZSBvdmVyZmxvd3MgaW4gdXNlciBjb2RlLCBvdGhlcndpc2UgY291bGQKKyAqIGJlIFNTSVpFX1Rf
TUFYLgorICovCisjZGVmaW5lIElPU0laRV9NQVggICAgICBJTlRfTUFYCisKKyNkZWZpbmUgVUlP
X01BWElPViAxMDI0CisKKyNkZWZpbmUgVUlPX1NZU1NQQUNFIDAKKworc3RydWN0IHVpbyB7CisJ
c3RydWN0IGlvdmVjICp1aW9faW92OwkJLyogc2NhdHRlci9nYXRoZXIgbGlzdCAqLworCWludAl1
aW9faW92Y250OwkJLyogbGVuZ3RoIG9mIHNjYXR0ZXIvZ2F0aGVyIGxpc3QgKi8KKwlvZmZfdAl1
aW9fb2Zmc2V0OwkJLyogb2Zmc2V0IGluIHRhcmdldCBvYmplY3QgKi8KKwlzc2l6ZV90CXVpb19y
ZXNpZDsJCS8qIHJlbWFpbmluZyBieXRlcyB0byBwcm9jZXNzICovCisJZW51bQl1aW9fcncgdWlv
X3J3OwkJLyogb3BlcmF0aW9uICovCit9OworCitpbnQJdWlvbW92ZSh2b2lkICpjcCwgaW50IG4s
IHN0cnVjdCB1aW8gKnVpbyk7CisKK19fRU5EX0RFQ0xTCisKKyNpZmRlZiBfX2NwbHVzcGx1cwor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgRj4KK3N0YXRpYyBpbmxpbmUgdm9pZCBsaW5lYXJpemVfdWlv
X3dyaXRlKHN0cnVjdCB1aW8gKnVpbywgaW50IGlvZmxhZywgRiBmKQoreworICAgIHdoaWxlICh1
aW8tPnVpb19yZXNpZCA+IDApIHsKKyAgICAgICAgc3RydWN0IGlvdmVjICppb3YgPSB1aW8tPnVp
b19pb3Y7CisKKyAgICAgICAgaWYgKGlvdi0+aW92X2xlbikgeworICAgICAgICAgICAgZihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGNoYXIgKj4oaW92LT5pb3ZfYmFzZSksCisgICAgICAgICAgICAg
ICAgaW92LT5pb3ZfbGVuKTsKKyAgICAgICAgfQorCisgICAgICAgIHVpby0+dWlvX2lvdisrOwor
ICAgICAgICB1aW8tPnVpb19pb3ZjbnQtLTsKKyAgICAgICAgdWlvLT51aW9fcmVzaWQgLT0gaW92
LT5pb3ZfbGVuOworICAgICAgICB1aW8tPnVpb19vZmZzZXQgKz0gaW92LT5pb3ZfbGVuOworICAg
IH0KK30KKworI2VuZGlmCisKKyNlbmRpZiAvKiAhX1VJT19IXyAqLwpkaWZmIC0tZ2l0IGEvbGli
L3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Zub2RlLmggYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zm
c2NvcmUvdm5vZGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uZTM1YWE4
MzAKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUu
aApAQCAtMCwwICsxLDI0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwNS0yMDA3LCBLb2hz
dWtlIE9odGFuaQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRo
ZXIgdGhlIG5hbWUgb2YgdGhlIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGFueSBjby1jb250cmli
dXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQorICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBfU1lTX1ZOT0RFX0hfCisjZGVmaW5lIF9TWVNfVk5PREVf
SF8KKworI2lmZGVmIF9LRVJORUwKKworI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgorI2luY2x1ZGUg
PHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8b3N2L3ByZXguaD4KKyNpbmNsdWRlIDxvc3YvdWlvLmg+
CisjaW5jbHVkZSA8b3N2L211dGV4Lmg+CisjaW5jbHVkZSAiZmlsZS5oIgorI2luY2x1ZGUgImRp
cmVudC5oIgorCitfX0JFR0lOX0RFQ0xTCisKK3N0cnVjdCB2ZnNvcHM7CitzdHJ1Y3Qgdm5vcHM7
CitzdHJ1Y3Qgdm5vZGU7CitzdHJ1Y3QgZmlsZTsKKworLyoKKyAqIFZub2RlIHR5cGVzLgorICov
CitlbnVtIHZ0eXBlIHsKKwlWTk9OLAkgICAgLyogbm8gdHlwZSAqLworCVZSRUcsCSAgICAvKiBy
ZWd1bGFyIGZpbGUgICovCisJVkRJUiwJICAgIC8qIGRpcmVjdG9yeSAqLworCVZCTEssCSAgICAv
KiBibG9jayBkZXZpY2UgKi8KKwlWQ0hSLAkgICAgLyogY2hhcmFjdGVyIGRldmljZSAqLworCVZM
TkssCSAgICAvKiBzeW1ib2xpYyBsaW5rICovCisJVlNPQ0ssCSAgICAvKiBzb2NrcyAqLworCVZG
SUZPLAkgICAgLyogRklGTyAqLworCVZCQUQKK307CisKKy8qCisgKiBSZWFkaW5nIG9yIHdyaXRp
bmcgYW55IG9mIHRoZXNlIGl0ZW1zIHJlcXVpcmVzIGhvbGRpbmcgdGhlCisgKiBhcHByb3ByaWF0
ZSBsb2NrLgorICovCitzdHJ1Y3Qgdm5vZGUgeworCXVpbnQ2NF90CXZfaW5vOwkJLyogaW5vZGUg
bnVtYmVyICovCisJTElTVF9FTlRSWSh2bm9kZSkgdl9saW5rOwkvKiBsaW5rIGZvciBoYXNoIGxp
c3QgKi8KKwlzdHJ1Y3QgbW91bnQJKnZfbW91bnQ7CS8qIG1vdW50ZWQgdmZzIHBvaW50ZXIgKi8K
KwlzdHJ1Y3Qgdm5vcHMJKnZfb3A7CQkvKiB2bm9kZSBvcGVyYXRpb25zICovCisJaW50CQl2X3Jl
ZmNudDsJLyogcmVmZXJlbmNlIGNvdW50ICovCisJaW50CQl2X3R5cGU7CQkvKiB2bm9kZSB0eXBl
ICovCisJaW50CQl2X2ZsYWdzOwkvKiB2bm9kZSBmbGFnICovCisJbW9kZV90CQl2X21vZGU7CQkv
KiBmaWxlIG1vZGUgKi8KKwlvZmZfdAkJdl9zaXplOwkJLyogZmlsZSBzaXplICovCisJbXV0ZXhf
dAkJdl9sb2NrOwkJLyogbG9jayBmb3IgdGhpcyB2bm9kZSAqLworCUxJU1RfSEVBRCgsIGRlbnRy
eSkgdl9uYW1lczsJLyogZGlyZWN0b3J5IGVudHJpZXMgcG9pbnRpbmcgYXQgdGhpcyAqLworCWlu
dAkJdl9ucmxvY2tzOwkvKiBsb2NrIGNvdW50IChmb3IgZGVidWcpICovCisJdm9pZAkJKnZfZGF0
YTsJLyogcHJpdmF0ZSBkYXRhIGZvciBmcyAqLworfTsKKworLyogZmxhZ3MgZm9yIHZub2RlICov
CisjZGVmaW5lIFZST09UCQkweDAwMDEJCS8qIHJvb3Qgb2YgaXRzIGZpbGUgc3lzdGVtICovCisj
ZGVmaW5lIFZJU1RUWQkJMHgwMDAyCQkvKiBkZXZpY2UgaXMgdHR5ICovCisjZGVmaW5lIFZQUk9U
REVWCTB4MDAwNAkJLyogcHJvdGVjdGVkIGRldmljZSAqLworCisvKgorICogVm5vZGUgYXR0cmli
dXRlCisgKi8KK3N0cnVjdCB2YXR0ciB7CisJdW5zaWduZWQgaW50CXZhX21hc2s7CisJZW51bSB2
dHlwZQl2YV90eXBlOwkvKiB2bm9kZSB0eXBlICovCisJbW9kZV90CQl2YV9tb2RlOwkvKiBmaWxl
IGFjY2VzcyBtb2RlICovCisJbmxpbmtfdAkJdmFfbmxpbms7CisJdWlkX3QJCXZhX3VpZDsKKwln
aWRfdAkJdmFfZ2lkOworCWRldl90ICAgICAgICAgICB2YV9mc2lkOyAgICAgICAgLyogaWQgb2Yg
dGhlIHVuZGVybHlpbmcgZmlsZXN5c3RlbSAqLworCWlub190CQl2YV9ub2RlaWQ7CisJc3RydWN0
IHRpbWVzcGVjCXZhX2F0aW1lOworCXN0cnVjdCB0aW1lc3BlYwl2YV9tdGltZTsKKwlzdHJ1Y3Qg
dGltZXNwZWMJdmFfY3RpbWU7CisJZGV2X3QJCXZhX3JkZXY7CisJdWludDY0X3QJdmFfbmJsb2Nr
czsKKwlvZmZfdAkJdmFfc2l6ZTsKK307CisKKy8qCisgKiAgTW9kZXMuCisgKi8KKyNkZWZpbmUg
VkFQUEVORCAwMDAxMAorI2RlZmluZQlWUkVBRAkwMDAwNAkJLyogcmVhZCwgd3JpdGUsIGV4ZWN1
dGUgcGVybWlzc2lvbnMgKi8KKyNkZWZpbmUJVldSSVRFCTAwMDAyCisjZGVmaW5lCVZFWEVDCTAw
MDAxCisKKyNkZWZpbmUgSU9fQVBQRU5ECTB4MDAwMQorI2RlZmluZSBJT19TWU5DCQkweDAwMDIK
KworLyoKKyAqIEFSQyBhY3Rpb25zCisgKi8KKyNkZWZpbmUgQVJDX0FDVElPTl9RVUVSWSAgICAw
CisjZGVmaW5lIEFSQ19BQ1RJT05fSE9MRCAgICAgMQorI2RlZmluZSBBUkNfQUNUSU9OX1JFTEVB
U0UgIDIKKwordHlwZWRlZglpbnQgKCp2bm9wX29wZW5fdCkJKHN0cnVjdCBmaWxlICopOwordHlw
ZWRlZglpbnQgKCp2bm9wX2Nsb3NlX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IGZpbGUgKik7
Cit0eXBlZGVmCWludCAoKnZub3BfcmVhZF90KQkoc3RydWN0IHZub2RlICosIHN0cnVjdCBmaWxl
ICosIHN0cnVjdCB1aW8gKiwgaW50KTsKK3R5cGVkZWYJaW50ICgqdm5vcF93cml0ZV90KQkoc3Ry
dWN0IHZub2RlICosIHN0cnVjdCB1aW8gKiwgaW50KTsKK3R5cGVkZWYJaW50ICgqdm5vcF9zZWVr
X3QpCShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IGZpbGUgKiwgb2ZmX3QsIG9mZl90KTsKK3R5cGVk
ZWYJaW50ICgqdm5vcF9pb2N0bF90KQkoc3RydWN0IHZub2RlICosIHN0cnVjdCBmaWxlICosIHVf
bG9uZywgdm9pZCAqKTsKK3R5cGVkZWYJaW50ICgqdm5vcF9mc3luY190KQkoc3RydWN0IHZub2Rl
ICosIHN0cnVjdCBmaWxlICopOwordHlwZWRlZglpbnQgKCp2bm9wX3JlYWRkaXJfdCkJKHN0cnVj
dCB2bm9kZSAqLCBzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgZGlyZW50ICopOwordHlwZWRlZglpbnQg
KCp2bm9wX2xvb2t1cF90KQkoc3RydWN0IHZub2RlICosIGNoYXIgKiwgc3RydWN0IHZub2RlICoq
KTsKK3R5cGVkZWYJaW50ICgqdm5vcF9jcmVhdGVfdCkJKHN0cnVjdCB2bm9kZSAqLCBjaGFyICos
IG1vZGVfdCk7Cit0eXBlZGVmCWludCAoKnZub3BfcmVtb3ZlX3QpCShzdHJ1Y3Qgdm5vZGUgKiwg
c3RydWN0IHZub2RlICosIGNoYXIgKik7Cit0eXBlZGVmCWludCAoKnZub3BfcmVuYW1lX3QpCShz
dHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHZub2RlICosIGNoYXIgKiwKKwkJCQkgc3RydWN0IHZub2Rl
ICosIHN0cnVjdCB2bm9kZSAqLCBjaGFyICopOwordHlwZWRlZglpbnQgKCp2bm9wX21rZGlyX3Qp
CShzdHJ1Y3Qgdm5vZGUgKiwgY2hhciAqLCBtb2RlX3QpOwordHlwZWRlZglpbnQgKCp2bm9wX3Jt
ZGlyX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHZub2RlICosIGNoYXIgKik7Cit0eXBlZGVm
CWludCAoKnZub3BfZ2V0YXR0cl90KQkoc3RydWN0IHZub2RlICosIHN0cnVjdCB2YXR0ciAqKTsK
K3R5cGVkZWYJaW50ICgqdm5vcF9zZXRhdHRyX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHZh
dHRyICopOwordHlwZWRlZglpbnQgKCp2bm9wX2luYWN0aXZlX3QpCShzdHJ1Y3Qgdm5vZGUgKik7
Cit0eXBlZGVmCWludCAoKnZub3BfdHJ1bmNhdGVfdCkJKHN0cnVjdCB2bm9kZSAqLCBvZmZfdCk7
Cit0eXBlZGVmCWludCAoKnZub3BfbGlua190KSAgICAgIChzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0
IHZub2RlICosIGNoYXIgKik7Cit0eXBlZGVmIGludCAoKnZub3BfY2FjaGVfdCkgKHN0cnVjdCB2
bm9kZSAqLCBzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgdWlvICopOwordHlwZWRlZiBpbnQgKCp2bm9w
X2ZhbGxvY2F0ZV90KSAoc3RydWN0IHZub2RlICosIGludCwgbG9mZl90LCBsb2ZmX3QpOwordHlw
ZWRlZiBpbnQgKCp2bm9wX3JlYWRsaW5rX3QpICAoc3RydWN0IHZub2RlICosIHN0cnVjdCB1aW8g
Kik7Cit0eXBlZGVmIGludCAoKnZub3Bfc3ltbGlua190KSAgIChzdHJ1Y3Qgdm5vZGUgKiwgY2hh
ciAqLCBjaGFyICopOworCisvKgorICogdm5vZGUgb3BlcmF0aW9ucworICovCitzdHJ1Y3Qgdm5v
cHMgeworCXZub3Bfb3Blbl90CQl2b3Bfb3BlbjsKKwl2bm9wX2Nsb3NlX3QJCXZvcF9jbG9zZTsK
Kwl2bm9wX3JlYWRfdAkJdm9wX3JlYWQ7CisJdm5vcF93cml0ZV90CQl2b3Bfd3JpdGU7CisJdm5v
cF9zZWVrX3QJCXZvcF9zZWVrOworCXZub3BfaW9jdGxfdAkJdm9wX2lvY3RsOworCXZub3BfZnN5
bmNfdAkJdm9wX2ZzeW5jOworCXZub3BfcmVhZGRpcl90CQl2b3BfcmVhZGRpcjsKKwl2bm9wX2xv
b2t1cF90CQl2b3BfbG9va3VwOworCXZub3BfY3JlYXRlX3QJCXZvcF9jcmVhdGU7CisJdm5vcF9y
ZW1vdmVfdAkJdm9wX3JlbW92ZTsKKwl2bm9wX3JlbmFtZV90CQl2b3BfcmVuYW1lOworCXZub3Bf
bWtkaXJfdAkJdm9wX21rZGlyOworCXZub3Bfcm1kaXJfdAkJdm9wX3JtZGlyOworCXZub3BfZ2V0
YXR0cl90CQl2b3BfZ2V0YXR0cjsKKwl2bm9wX3NldGF0dHJfdAkJdm9wX3NldGF0dHI7CisJdm5v
cF9pbmFjdGl2ZV90CQl2b3BfaW5hY3RpdmU7CisJdm5vcF90cnVuY2F0ZV90CQl2b3BfdHJ1bmNh
dGU7CisJdm5vcF9saW5rX3QJCXZvcF9saW5rOworCXZub3BfY2FjaGVfdAkJdm9wX2NhY2hlOwor
CXZub3BfZmFsbG9jYXRlX3QJdm9wX2ZhbGxvY2F0ZTsKKwl2bm9wX3JlYWRsaW5rX3QJCXZvcF9y
ZWFkbGluazsKKwl2bm9wX3N5bWxpbmtfdAkJdm9wX3N5bWxpbms7Cit9OworCisvKgorICogdm5v
ZGUgaW50ZXJmYWNlCisgKi8KKyNkZWZpbmUgVk9QX09QRU4oVlAsIEZQKQkgICAoKFZQKS0+dl9v
cC0+dm9wX29wZW4pKEZQKQorI2RlZmluZSBWT1BfQ0xPU0UoVlAsIEZQKQkgICAoKFZQKS0+dl9v
cC0+dm9wX2Nsb3NlKShWUCwgRlApCisjZGVmaW5lIFZPUF9SRUFEKFZQLCBGUCwgVSwgRikJICAg
KChWUCktPnZfb3AtPnZvcF9yZWFkKShWUCwgRlAsIFUsIEYpCisjZGVmaW5lIFZPUF9DQUNIRShW
UCwgRlAsIFUpCSAgICgoVlApLT52X29wLT52b3BfY2FjaGUpKFZQLCBGUCwgVSkKKyNkZWZpbmUg
Vk9QX1dSSVRFKFZQLCBVLCBGKQkgICAoKFZQKS0+dl9vcC0+dm9wX3dyaXRlKShWUCwgVSwgRikK
KyNkZWZpbmUgVk9QX1NFRUsoVlAsIEZQLCBPTEQsIE5FVykgKChWUCktPnZfb3AtPnZvcF9zZWVr
KShWUCwgRlAsIE9MRCwgTkVXKQorI2RlZmluZSBWT1BfSU9DVEwoVlAsIEZQLCBDLCBBKQkgICAo
KFZQKS0+dl9vcC0+dm9wX2lvY3RsKShWUCwgRlAsIEMsIEEpCisjZGVmaW5lIFZPUF9GU1lOQyhW
UCwgRlApCSAgICgoVlApLT52X29wLT52b3BfZnN5bmMpKFZQLCBGUCkKKyNkZWZpbmUgVk9QX1JF
QURESVIoVlAsIEZQLCBESVIpICAgKChWUCktPnZfb3AtPnZvcF9yZWFkZGlyKShWUCwgRlAsIERJ
UikKKyNkZWZpbmUgVk9QX0xPT0tVUChEVlAsIE4sIFZQKQkgICAoKERWUCktPnZfb3AtPnZvcF9s
b29rdXApKERWUCwgTiwgVlApCisjZGVmaW5lIFZPUF9DUkVBVEUoRFZQLCBOLCBNKQkgICAoKERW
UCktPnZfb3AtPnZvcF9jcmVhdGUpKERWUCwgTiwgTSkKKyNkZWZpbmUgVk9QX1JFTU9WRShEVlAs
IFZQLCBOKQkgICAoKERWUCktPnZfb3AtPnZvcF9yZW1vdmUpKERWUCwgVlAsIE4pCisjZGVmaW5l
IFZPUF9SRU5BTUUoRFZQMSwgVlAxLCBOMSwgRFZQMiwgVlAyLCBOMikgXAorCQkJICAgKChEVlAx
KS0+dl9vcC0+dm9wX3JlbmFtZSkoRFZQMSwgVlAxLCBOMSwgRFZQMiwgVlAyLCBOMikKKyNkZWZp
bmUgVk9QX01LRElSKERWUCwgTiwgTSkJICAgKChEVlApLT52X29wLT52b3BfbWtkaXIpKERWUCwg
TiwgTSkKKyNkZWZpbmUgVk9QX1JNRElSKERWUCwgVlAsIE4pCSAgICgoRFZQKS0+dl9vcC0+dm9w
X3JtZGlyKShEVlAsIFZQLCBOKQorI2RlZmluZSBWT1BfR0VUQVRUUihWUCwgVkFQKQkgICAoKFZQ
KS0+dl9vcC0+dm9wX2dldGF0dHIpKFZQLCBWQVApCisjZGVmaW5lIFZPUF9TRVRBVFRSKFZQLCBW
QVApCSAgICgoVlApLT52X29wLT52b3Bfc2V0YXR0cikoVlAsIFZBUCkKKyNkZWZpbmUgVk9QX0lO
QUNUSVZFKFZQKQkgICAoKFZQKS0+dl9vcC0+dm9wX2luYWN0aXZlKShWUCkKKyNkZWZpbmUgVk9Q
X1RSVU5DQVRFKFZQLCBOKQkgICAoKFZQKS0+dl9vcC0+dm9wX3RydW5jYXRlKShWUCwgTikKKyNk
ZWZpbmUgVk9QX0xJTksoRFZQLCBTVlAsIE4pIAkgICAoKERWUCktPnZfb3AtPnZvcF9saW5rKShE
VlAsIFNWUCwgTikKKyNkZWZpbmUgVk9QX0ZBTExPQ0FURShWUCwgTSwgT0ZGLCBMRU4pICgoVlAp
LT52X29wLT52b3BfZmFsbG9jYXRlKShWUCwgTSwgT0ZGLCBMRU4pCisjZGVmaW5lIFZPUF9SRUFE
TElOSyhWUCwgVSkgICAgICAgICgoVlApLT52X29wLT52b3BfcmVhZGxpbmspKFZQLCBVKQorI2Rl
ZmluZSBWT1BfU1lNTElOSyhEVlAsIE9QLCBOUCkgICAoKERWUCktPnZfb3AtPnZvcF9zeW1saW5r
KShEVlAsIE9QLCBOUCkKKworaW50CSB2b3BfbnVsbG9wKHZvaWQpOworaW50CSB2b3BfZWludmFs
KHZvaWQpOworaW50CSB2b3BfZXBlcm0odm9pZCk7CitpbnQJIHZvcF9lcm9mcyh2b2lkKTsKK3N0
cnVjdCB2bm9kZSAqdm5fbG9va3VwKHN0cnVjdCBtb3VudCAqLCB1aW50NjRfdCk7Cit2b2lkCSB2
bl9sb2NrKHN0cnVjdCB2bm9kZSAqKTsKK3ZvaWQJIHZuX3VubG9jayhzdHJ1Y3Qgdm5vZGUgKik7
CitpbnQJIHZuX3N0YXQoc3RydWN0IHZub2RlICosIHN0cnVjdCBzdGF0ICopOworaW50CSB2bl9z
ZXR0aW1lcyhzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHRpbWVzcGVjWzJdKTsKK2ludAkgdm5fc2V0
bW9kZShzdHJ1Y3Qgdm5vZGUgKiwgbW9kZV90IG1vZGUpOworaW50CSB2bl9hY2Nlc3Moc3RydWN0
IHZub2RlICosIGludCk7CitpbnQJIHZnZXQoc3RydWN0IG1vdW50ICosIHVpbnQ2NF90IGlubywg
c3RydWN0IHZub2RlICoqdnBwKTsKK3ZvaWQJIHZwdXQoc3RydWN0IHZub2RlICopOwordm9pZAkg
dnJlZihzdHJ1Y3Qgdm5vZGUgKik7Cit2b2lkCSB2cmVsZShzdHJ1Y3Qgdm5vZGUgKik7Cit2b2lk
CSB2Zmx1c2goc3RydWN0IG1vdW50ICopOwordm9pZCB2bl9hZGRfbmFtZShzdHJ1Y3Qgdm5vZGUg
Kiwgc3RydWN0IGRlbnRyeSAqKTsKK3ZvaWQgdm5fZGVsX25hbWUoc3RydWN0IHZub2RlICosIHN0
cnVjdCBkZW50cnkgKik7CisKK2V4dGVybiBlbnVtIHZ0eXBlIGlmdG92dF90YWJbXTsKK2V4dGVy
biBpbnQgdnR0b2lmX3RhYltdOworI2RlZmluZSBJRlRPVlQobW9kZSkgICAgKGlmdG92dF90YWJb
KChtb2RlKSAmIFNfSUZNVCkgPj4gMTJdKQorI2RlZmluZSBWVFRPSUYoaW5keCkJKHZ0dG9pZl90
YWJbKGludCkoaW5keCldKQorI2RlZmluZSBNQUtFSU1PREUoaW5keCwgbW9kZSkgICAoaW50KShW
VFRPSUYoaW5keCkgfCAobW9kZSkpCisKKyNkZWZpbmUgVkFUVFJfTlVMTCh2cCkgKCoodnApID0g
KHZhdHRyX3Qpe30pCisKK3N0YXRpYyBpbmxpbmUgdm9pZCB2bm9kZV9wYWdlcl9zZXRzaXplKHN0
cnVjdCB2bm9kZSAqdnAsIG9mZl90IHNpemUpCit7CisJdnAtPnZfc2l6ZSA9IHNpemU7Cit9CisK
K19fRU5EX0RFQ0xTCisKKyNlbmRpZgorCisjZW5kaWYgLyogIV9TWVNfVk5PREVfSF8gKi8KZGlm
ZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2xvb2t1cC5jIGIvbGliL3Zmc2NvcmUvbG9va3VwLmMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLmFkMDNmZTI1Ci0tLSAvZGV2L251bGwK
KysrIGIvbGliL3Zmc2NvcmUvbG9va3VwLmMKQEAgLTAsMCArMSwzNzUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKGMpIDIwMDUtMjAwNywgS29oc3VrZSBPaHRhbmkKKyAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBhdXRob3Igbm9yIHRo
ZSBuYW1lcyBvZiBhbnkgY28tY29udHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKKyAqICAg
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAq
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlIDx1bmlzdGQu
aD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPHN0
ZGxpYi5oPgorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorCisjaW5jbHVkZSA8b3N2L2RlbnRyeS5o
PgorI2luY2x1ZGUgPG9zdi92bm9kZS5oPgorI2luY2x1ZGUgInZmcy5oIgorCitzdGF0aWMgc3Np
emVfdAorcmVhZF9saW5rKHN0cnVjdCB2bm9kZSAqdnAsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6
LCBzc2l6ZV90ICpzeikKK3sKKyAgICBzdHJ1Y3QgaW92ZWMgaW92ID0ge2J1ZiwgYnVmc3p9Owor
ICAgIHN0cnVjdCB1aW8gICB1aW8gPSB7JmlvdiwgMSwgMCwgKHNzaXplX3QpIGJ1ZnN6LCBVSU9f
UkVBRH07CisgICAgaW50IHJjOworCisgICAgKnN6ID0gMDsKKyAgICB2bl9sb2NrKHZwKTsKKyAg
ICByYyAgPSBWT1BfUkVBRExJTksodnAsICZ1aW8pOworICAgIHZuX3VubG9jayh2cCk7CisKKyAg
ICBpZiAocmMgIT0gMCkgeworICAgICAgICByZXR1cm4gKHJjKTsKKyAgICB9CisKKyAgICAqc3og
PSBidWZzeiAtIHVpby51aW9fcmVzaWQ7CisgICAgcmV0dXJuICgwKTsKK30KKworaW50CituYW1l
aV9mb2xsb3dfbGluayhzdHJ1Y3QgZGVudHJ5ICpkcCwgY2hhciAqbm9kZSwgY2hhciAqbmFtZSwg
Y2hhciAqZnAsIHNpemVfdCBtb3VudHBvaW50X2xlbikKK3sKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
Y2hhciBbXT4gbGluayAobmV3IGNoYXJbUEFUSF9NQVhdKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
Y2hhciBbXT4gdCAobmV3IGNoYXJbUEFUSF9NQVhdKTsKKyAgICBjaGFyICAgICpscDsKKyAgICBp
bnQgICAgIGVycm9yOworICAgIHNzaXplX3Qgc3o7CisgICAgY2hhciAgICAqcDsKKyAgICBpbnQg
ICAgIGM7CisKKyAgICBscCAgICA9IGxpbmsuZ2V0KCk7CisgICAgZXJyb3IgPSByZWFkX2xpbmso
ZHAtPmRfdm5vZGUsIGxwLCBQQVRIX01BWCwgJnN6KTsKKyAgICBpZiAoZXJyb3IgIT0gMCkgewor
ICAgICAgICByZXR1cm4gKGVycm9yKTsKKyAgICB9CisgICAgbHBbc3pdID0gMDsKKworICAgIHAg
PSBmcCArIG1vdW50cG9pbnRfbGVuICsgc3RybGVuKG5vZGUpOworICAgIGMgPSBzdHJsZW4obm9k
ZSkgLSBzdHJsZW4obmFtZSkgLSAxOworICAgIG5vZGVbY10gPSAwOworCisgICAgaWYgKGxwWzBd
ID09ICcvJykgeworICAgICAgICBzdHJsY2F0KGxwLCBwLCBQQVRIX01BWCk7CisgICAgICAgIHN0
cmxjcHkoZnAsIGxwLCBQQVRIX01BWCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc3RybGNweSh0
LmdldCgpLCBwLCBQQVRIX01BWCk7CisgICAgICAgIHN0cmxjcHkobm9kZSwgZnAsIG1vdW50cG9p
bnRfbGVuICsgYyArIDEpOworICAgICAgICBwYXRoX2NvbnYobm9kZSwgbHAsIGZwKTsKKyAgICAg
ICAgc3RybGNhdChmcCwgdC5nZXQoKSwgUEFUSF9NQVgpOworICAgIH0KKyAgICBub2RlWzBdID0g
MDsKKyAgICBuYW1lWzBdID0gMDsKKyAgICByZXR1cm4gKDApOworfQorLyoKKyAqIENvbnZlcnQg
YSBwYXRobmFtZSBpbnRvIGEgcG9pbnRlciB0byBhIGRlbnRyeQorICoKKyAqIEBwYXRoOiBmdWxs
IHBhdGggbmFtZS4KKyAqIEBkcHA6ICBkZW50cnkgdG8gYmUgcmV0dXJuZWQuCisgKi8KK2ludAor
bmFtZWkoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IGRlbnRyeSAqKmRwcCkKK3sKKyAgICBjaGFy
ICpwOworICAgIGNoYXIgbm9kZVtQQVRIX01BWF07CisgICAgY2hhciBuYW1lW1BBVEhfTUFYXTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8Y2hhciBbXT4gZnAgKG5ldyBjaGFyIFtQQVRIX01BWF0pOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxjaGFyIFtdPiB0IChuZXcgY2hhciBbUEFUSF9NQVhdKTsKKyAg
ICBzdHJ1Y3QgbW91bnQgKm1wOworICAgIHN0cnVjdCBkZW50cnkgKmRwLCAqZGRwOworICAgIHN0
cnVjdCB2bm9kZSAqZHZwLCAqdnA7CisgICAgaW50IGVycm9yLCBpOworICAgIGludCBsaW5rc19m
b2xsb3dlZDsKKyAgICBib29sIG5lZWRfY29udGludWU7CisKKyAgICBEUFJJTlRGKFZGU0RCX1ZO
T0RFLCAoIm5hbWVpOiBwYXRoPSVzXG4iLCBwYXRoKSk7CisKKyAgICBsaW5rc19mb2xsb3dlZCA9
IDA7CisgICAgc3RybGNweShmcC5nZXQoKSwgcGF0aCwgUEFUSF9NQVgpOworCisgICAgZG8gewor
ICAgICAgICBuZWVkX2NvbnRpbnVlID0gZmFsc2U7CisgICAgICAgIC8qCisgICAgICAgICAqIENv
bnZlcnQgYSBmdWxsIHBhdGggbmFtZSB0byBpdHMgbW91bnQgcG9pbnQgYW5kCisgICAgICAgICAq
IHRoZSBsb2NhbCBub2RlIGluIHRoZSBmaWxlIHN5c3RlbS4KKyAgICAgICAgICovCisgICAgICAg
IGlmICh2ZnNfZmluZHJvb3QoZnAuZ2V0KCksICZtcCwgJnApKSB7CisgICAgICAgICAgICByZXR1
cm4gRU5PVERJUjsKKyAgICAgICAgfQorICAgICAgICBpbnQgbW91bnRwb2ludF9sZW4gPSBwIC0g
ZnAuZ2V0KCkgLSAxOworICAgICAgICBzdHJsY3B5KG5vZGUsICIvIiwgc2l6ZW9mKG5vZGUpKTsK
KyAgICAgICAgc3RybGNhdChub2RlLCBwLCBzaXplb2Yobm9kZSkpOworICAgICAgICBkcCA9IGRl
bnRyeV9sb29rdXAobXAsIG5vZGUpOworICAgICAgICBpZiAoZHApIHsKKyAgICAgICAgICAgIC8q
IHZub2RlIGlzIGFscmVhZHkgYWN0aXZlLiAqLworICAgICAgICAgICAgKmRwcCA9IGRwOworICAg
ICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgLyoKKyAgICAgICAgICogRmlu
ZCB0YXJnZXQgdm5vZGUsIHN0YXJ0ZWQgZnJvbSByb290IGRpcmVjdG9yeS4KKyAgICAgICAgICog
VGhpcyBpcyBkb25lIHRvIGF0dGFjaCB0aGUgZnMgc3BlY2lmaWMgZGF0YSB0bworICAgICAgICAg
KiB0aGUgdGFyZ2V0IHZub2RlLgorICAgICAgICAgKi8KKyAgICAgICAgZGRwID0gbXAtPm1fcm9v
dDsKKyAgICAgICAgaWYgKCFkZHApIHsKKyAgICAgICAgICAgIHN5c19wYW5pYygiVkZTOiBubyBy
b290Iik7CisgICAgICAgIH0KKyAgICAgICAgZHJlZihkZHApOworCisgICAgICAgIG5vZGVbMF0g
PSAnXDAnOworCisgICAgICAgIHdoaWxlICgqcCAhPSAnXDAnKSB7CisgICAgICAgICAgICAvKgor
ICAgICAgICAgICAgICogR2V0IGxvd2VyIGRpcmVjdG9yeS9maWxlIG5hbWUuCisgICAgICAgICAg
ICAgKi8KKyAgICAgICAgICAgIHdoaWxlICgqcCA9PSAnLycpIHsKKyAgICAgICAgICAgICAgICBw
Kys7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICgqcCA9PSAnXDAnKSB7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZvciAoaSA9
IDA7IGkgPCBQQVRIX01BWDsgaSsrKSB7CisgICAgICAgICAgICAgICAgaWYgKCpwID09ICdcMCcg
fHwgKnAgPT0gJy8nKSB7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBuYW1lW2ldID0gKnArKzsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIG5hbWVbaV0gPSAnXDAnOworCisgICAgICAgICAgICAvKgorICAgICAgICAgICAg
ICogR2V0IGEgdm5vZGUgZm9yIHRoZSB0YXJnZXQuCisgICAgICAgICAgICAgKi8KKyAgICAgICAg
ICAgIHN0cmxjYXQobm9kZSwgIi8iLCBzaXplb2Yobm9kZSkpOworICAgICAgICAgICAgc3RybGNh
dChub2RlLCBuYW1lLCBzaXplb2Yobm9kZSkpOworICAgICAgICAgICAgZHZwID0gZGRwLT5kX3Zu
b2RlOworICAgICAgICAgICAgdm5fbG9jayhkdnApOworICAgICAgICAgICAgZHAgPSBkZW50cnlf
bG9va3VwKG1wLCBub2RlKTsKKyAgICAgICAgICAgIGlmIChkcCA9PSBudWxscHRyKSB7CisgICAg
ICAgICAgICAgICAgLyogRmluZCBhIHZub2RlIGluIHRoaXMgZGlyZWN0b3J5LiAqLworICAgICAg
ICAgICAgICAgIGVycm9yID0gVk9QX0xPT0tVUChkdnAsIG5hbWUsICZ2cCk7CisgICAgICAgICAg
ICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICAgICAgICAgIHZuX3VubG9jayhkdnApOwor
ICAgICAgICAgICAgICAgICAgICBkcmVsZShkZHApOworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZHAgPSBkZW50
cnlfYWxsb2MoZGRwLCB2cCwgbm9kZSk7CisgICAgICAgICAgICAgICAgdnB1dCh2cCk7CisKKyAg
ICAgICAgICAgICAgICBpZiAoIWRwKSB7CisgICAgICAgICAgICAgICAgICAgIHZuX3VubG9jayhk
dnApOworICAgICAgICAgICAgICAgICAgICBkcmVsZShkZHApOworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gRU5PTUVNOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIHZuX3VubG9jayhkdnApOworICAgICAgICAgICAgZHJlbGUoZGRwKTsKKyAgICAgICAg
ICAgIGRkcCA9IGRwOworCisgICAgICAgICAgICBpZiAoZHAtPmRfdm5vZGUtPnZfdHlwZSA9PSBW
TE5LKSB7CisgICAgICAgICAgICAgICAgZXJyb3IgPSBuYW1laV9mb2xsb3dfbGluayhkcCwgbm9k
ZSwgbmFtZSwgZnAuZ2V0KCksIG1vdW50cG9pbnRfbGVuKTsKKyAgICAgICAgICAgICAgICBpZiAo
ZXJyb3IpIHsKKyAgICAgICAgICAgICAgICAgICAgZHJlbGUoZHApOworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gKGVycm9yKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICBkcmVsZShkcCk7CisKKyAgICAgICAgICAgICAgICBwICAgICAgID0gZnAuZ2V0KCk7CisgICAg
ICAgICAgICAgICAgZHAgICAgICA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAgZGRwICAgICA9
IG51bGxwdHI7CisgICAgICAgICAgICAgICAgdnAgICAgICA9IG51bGxwdHI7CisgICAgICAgICAg
ICAgICAgZHZwICAgICA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAgbmFtZVswXSA9IDA7Cisg
ICAgICAgICAgICAgICAgbm9kZVswXSA9IDA7CisKKyAgICAgICAgICAgICAgICBpZiAoKytsaW5r
c19mb2xsb3dlZCA+PSBNQVhTWU1MSU5LUykgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
KEVMT09QKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbmVlZF9jb250aW51
ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGlmICgqcCA9PSAnLycgJiYgZGRwLT5kX3Zub2RlLT52X3R5cGUgIT0gVkRJUikgewor
ICAgICAgICAgICAgICAgIGRyZWxlKGRkcCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEVOT1RE
SVI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9IHdoaWxlIChuZWVkX2NvbnRpbnVl
ID09IHRydWUpOworCisgICAgKmRwcCA9IGRwOworICAgIHJldHVybiAwOworfQorCisvKgorICog
Q29udmVydCBsYXN0IGNvbXBvbmVudCBpbiB0aGUgcGF0aCB0byBwb2ludGVyIHRvIGRlbnRyeQor
ICoKKyAqIEBwYXRoOiBmdWxsIHBhdGggbmFtZQorICogQGRkcCA6IHBvaW50ZXIgdG8gZGVudHJ5
IG9mIHBhcmVudAorICogQGRwcCA6IGRlbnRyeSB0byBiZSByZXR1cm5lZAorICovCitpbnQKK25h
bWVpX2xhc3Rfbm9mb2xsb3coY2hhciAqcGF0aCwgc3RydWN0IGRlbnRyeSAqZGRwLCBzdHJ1Y3Qg
ZGVudHJ5ICoqZHBwKQoreworICAgIGNoYXIgICAgICAgICAgKm5hbWU7CisgICAgaW50ICAgICAg
ICAgICBlcnJvcjsKKyAgICBzdHJ1Y3QgbW91bnQgICptcDsKKyAgICBjaGFyICAgICAgICAgICpw
OworICAgIHN0cnVjdCBkZW50cnkgKmRwOworICAgIHN0cnVjdCB2bm9kZSAgKmR2cDsKKyAgICBz
dHJ1Y3Qgdm5vZGUgICp2cDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Y2hhciBbXT4gbm9kZSAobmV3
IGNoYXJbUEFUSF9NQVhdKTsKKworICAgIGR2cCAgPSBudWxscHRyOworCisgICAgaWYgKHBhdGhb
MF0gIT0gJy8nKSB7CisgICAgICAgIHJldHVybiAoRU5PVERJUik7CisgICAgfQorCisgICAgbmFt
ZSA9IHN0cnJjaHIocGF0aCwgJy8nKTsKKyAgICBpZiAobmFtZSA9PSBudWxscHRyKSB7CisgICAg
ICAgIHJldHVybiAoRU5PRU5UKTsKKyAgICB9CisgICAgbmFtZSsrOworCisgICAgZXJyb3IgPSB2
ZnNfZmluZHJvb3QocGF0aCwgJm1wLCAmcCk7CisgICAgaWYgKGVycm9yICE9IDApIHsKKyAgICAg
ICAgcmV0dXJuIChFTk9URElSKTsKKyAgICB9CisKKyAgICBzdHJsY3B5KG5vZGUuZ2V0KCksICIv
IiwgUEFUSF9NQVgpOworICAgIHN0cmxjYXQobm9kZS5nZXQoKSwgcCwgUEFUSF9NQVgpOworCisg
ICAgLy8gV2Ugd2FudCB0byB0cmVhdCB0aGluZ3MgbGlrZSAvdG1wLyB0aGUgc2FtZSBhcyAvdG1w
LiBCZXN0IHdheSB0byBkbyB0aGF0CisgICAgLy8gaXMgdG8gaWdub3JlIHRoZSBsYXN0IGNoYXJh
Y3RlciwgZXhjZXB0IHdoZW4gd2UncmUgc3RhdGluZyB0aGUgcm9vdC4KKyAgICBhdXRvIGwgPSBz
dHJsZW4obm9kZS5nZXQoKSkgLSAxOworICAgIGlmIChsICYmIG5vZGUuZ2V0KClbbF0gPT0gJy8n
KSB7CisgICAgICAgIG5vZGUuZ2V0KClbbF0gPSAnXDAnOworICAgIH0KKworICAgIGR2cCA9IGRk
cC0+ZF92bm9kZTsKKyAgICB2bl9sb2NrKGR2cCk7CisgICAgZHAgPSBkZW50cnlfbG9va3VwKG1w
LCBub2RlLmdldCgpKTsKKyAgICBpZiAoZHAgPT0gbnVsbHB0cikgeworICAgICAgICBlcnJvciA9
IFZPUF9MT09LVVAoZHZwLCBuYW1lLCAmdnApOworICAgICAgICBpZiAoZXJyb3IgIT0gMCkgewor
ICAgICAgICAgICAgZ290byBvdXQ7CisgICAgICAgIH0KKworICAgICAgICBkcCA9IGRlbnRyeV9h
bGxvYyhkZHAsIHZwLCBub2RlLmdldCgpKTsKKyAgICAgICAgdnB1dCh2cCk7CisKKyAgICAgICAg
aWYgKGRwID09IG51bGxwdHIpIHsKKyAgICAgICAgICAgIGVycm9yID0gRU5PTUVNOworICAgICAg
ICAgICAgZ290byBvdXQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAqZHBwICA9IGRwOworICAg
IGVycm9yID0gMDsKK291dDoKKyAgICBpZiAoZHZwICE9IG51bGxwdHIpIHsKKyAgICAgICAgdm5f
dW5sb2NrKGR2cCk7CisgICAgfQorICAgIHJldHVybiAoZXJyb3IpOworfQorCisvKgorICogU2Vh
cmNoIGEgcGF0aG5hbWUuCisgKiBUaGlzIGlzIGEgdmVyeSBjZW50cmFsIGJ1dCBub3Qgc28gY29t
cGxpY2F0ZWQgcm91dGluZS4gOy1QCisgKgorICogQHBhdGg6IGZ1bGwgcGF0aC4KKyAqIEBkcHA6
ICBwb2ludGVyIHRvIGRlbnRyeSBmb3IgZGlyZWN0b3J5LgorICogQG5hbWU6IGlmIG5vbi1udWxs
LCBwb2ludGVyIHRvIGZpbGUgbmFtZSBpbiBwYXRoLgorICoKKyAqIFRoaXMgcm91dGluZSByZXR1
cm5zIGEgbG9ja2VkIGRpcmVjdG9yeSB2bm9kZSBhbmQgZmlsZSBuYW1lLgorICovCitpbnQKK2xv
b2t1cChjaGFyICpwYXRoLCBzdHJ1Y3QgZGVudHJ5ICoqZHBwLCBjaGFyICoqbmFtZSkKK3sKKyAg
ICBjaGFyIGJ1ZltQQVRIX01BWF07CisgICAgY2hhciByb290W10gPSAiLyI7CisgICAgY2hhciAq
ZmlsZSwgKmRpcjsKKyAgICBzdHJ1Y3QgZGVudHJ5ICpkcDsKKyAgICBpbnQgZXJyb3I7CisKKyAg
ICBEUFJJTlRGKFZGU0RCX1ZOT0RFLCAoImxvb2t1cDogcGF0aD0lc1xuIiwgcGF0aCkpOworCisg
ICAgLyoKKyAgICAgKiBHZXQgdGhlIHBhdGggZm9yIGRpcmVjdG9yeS4KKyAgICAgKi8KKyAgICBz
dHJsY3B5KGJ1ZiwgcGF0aCwgc2l6ZW9mKGJ1ZikpOworICAgIGZpbGUgPSBzdHJyY2hyKGJ1Ziwg
Jy8nKTsKKyAgICBpZiAoIWJ1ZlswXSkgeworICAgICAgICByZXR1cm4gRU5PVERJUjsKKyAgICB9
CisgICAgaWYgKGZpbGUgPT0gYnVmKSB7CisgICAgICAgIGRpciA9IHJvb3Q7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgKmZpbGUgPSAnXDAnOworICAgICAgICBkaXIgPSBidWY7CisgICAgfQorICAg
IC8qCisgICAgICogR2V0IHRoZSB2bm9kZSBmb3IgZGlyZWN0b3J5CisgICAgICovCisgICAgaWYg
KChlcnJvciA9IG5hbWVpKGRpciwgJmRwKSkgIT0gMCkgeworICAgICAgICByZXR1cm4gZXJyb3I7
CisgICAgfQorICAgIGlmIChkcC0+ZF92bm9kZS0+dl90eXBlICE9IFZESVIpIHsKKyAgICAgICAg
ZHJlbGUoZHApOworICAgICAgICByZXR1cm4gRU5PVERJUjsKKyAgICB9CisKKyAgICAqZHBwID0g
ZHA7CisKKyAgICBpZiAobmFtZSkgeworICAgICAgICAvKgorICAgICAgICAgKiBHZXQgdGhlIGZp
bGUgbmFtZQorICAgICAgICAgKi8KKyAgICAgICAgKm5hbWUgPSBzdHJyY2hyKHBhdGgsICcvJykg
KyAxOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworLyoKKyAqIHZub2RlX2luaXQoKSBpcyBj
YWxsZWQgb25jZSAoZnJvbSB2ZnNfaW5pdCkKKyAqIGluIGluaXRpYWxpemF0aW9uLgorICovCit2
b2lkCitsb29rdXBfaW5pdCh2b2lkKQoreworICAgIGRlbnRyeV9pbml0KCk7Cit9CmRpZmYgLS1n
aXQgYS9saWIvdmZzY29yZS9tYWluLmMgYi9saWIvdmZzY29yZS9tYWluLmMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLmNkMTQxMTE3Ci0tLSAvZGV2L251bGwKKysrIGIvbGli
L3Zmc2NvcmUvbWFpbi5jCkBAIC0wLDAgKzEsMjQxMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMyBDbG91ZGl1cyBTeXN0ZW1zLCBMdGQuCisgKgorICogVGhpcyB3b3JrIGlzIG9wZW4gc291
cmNlIHNvZnR3YXJlLCBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlCisgKiBCU0QgbGlj
ZW5zZSBhcyBkZXNjcmliZWQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgdG9wLWxldmVsIGRp
cmVjdG9yeS4KKyAqLworCisvKgorICogQ29weXJpZ2h0IChjKSAyMDA1LTIwMDcsIEtvaHN1a2Ug
T2h0YW5pCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0
aGUgbmFtZSBvZiB0aGUgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgYW55IGNvLWNvbnRyaWJ1dG9y
cworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCisgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBB
VVRIT1IgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjaW5jbHVkZSA8c3lzL3N0YXR2ZnMu
aD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPHN5cy90aW1lLmg+CisjaW5jbHVk
ZSA8c3lzL3NlbmRmaWxlLmg+CisKKyNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDx1bmlz
dGQuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUg
PHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5j
bHVkZSA8c2lnbmFsLmg+CisjZGVmaW5lIG9wZW4gX19vcGVuX3ZhcmlhZGljCisjZGVmaW5lIGZj
bnRsIF9fZmNudGxfdmFyaWFkaWMKKyNpbmNsdWRlIDxmY250bC5oPgorI3VuZGVmIG9wZW4KKyN1
bmRlZiBmY250bAorCisjaW5jbHVkZSA8b3N2L3ByZXguaD4KKyNpbmNsdWRlIDxvc3Yvdm5vZGUu
aD4KKyNpbmNsdWRlIDxvc3Yvc3R1YmJpbmcuaGg+CisjaW5jbHVkZSA8b3N2L2lvY3RsLmg+Cisj
aW5jbHVkZSA8b3N2L3RyYWNlLmhoPgorI2luY2x1ZGUgPG9zdi9ydW4uaGg+CisjaW5jbHVkZSA8
ZHJpdmVycy9jb25zb2xlLmhoPgorCisjaW5jbHVkZSAidmZzLmgiCisKKyNpbmNsdWRlICJsaWJj
L2ludGVybmFsL2xpYmMuaCIKKworI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDx1bm9y
ZGVyZWRfbWFwPgorCisjaW5jbHVkZSA8c3lzL2ZpbGUuaD4KKworI2luY2x1ZGUgImZzL2ZzLmho
IgorI2luY2x1ZGUgImxpYmMvbGliYy5oaCIKKworI2luY2x1ZGUgPG1udGVudC5oPgorI2luY2x1
ZGUgPHN5cy9tbWFuLmg+CisKKyNpbmNsdWRlIDxvc3YvY2xvY2suaGg+CisjaW5jbHVkZSA8YXBp
L3V0aW1lLmg+CisjaW5jbHVkZSA8Y2hyb25vPgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOworCisK
KyNpZmRlZiBERUJVR19WRlMKK2ludAl2ZnNfZGVidWcgPSBWRlNEQl9GTEFHUzsKKyNlbmRpZgor
CitzdGQ6OmF0b21pYzxtb2RlX3Q+IGdsb2JhbF91bWFza3tTX0lXR1JQIHwgU19JV09USH07CisK
K3N0YXRpYyBpbmxpbmUgbW9kZV90IGFwcGx5X3VtYXNrKG1vZGVfdCBtb2RlKQoreworICAgIHJl
dHVybiBtb2RlICYgfmdsb2JhbF91bWFzay5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQp
OworfQorCitUUkFDRVBPSU5UKHRyYWNlX3Zmc19vcGVuLCAiXCIlc1wiIDB4JXggMCUwbyIsIGNv
bnN0IGNoYXIqLCBpbnQsIG1vZGVfdCk7CitUUkFDRVBPSU5UKHRyYWNlX3Zmc19vcGVuX3JldCwg
IiVkIiwgaW50KTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX29wZW5fZXJyLCAiJWQiLCBpbnQpOwor
CitzdHJ1Y3QgdGFzayAqbWFpbl90YXNrOwkvKiB3ZSBvbmx5IGhhdmUgYSBzaW5nbGUgcHJvY2Vz
cyAqLworCitleHRlcm4gIkMiCitpbnQgb3Blbihjb25zdCBjaGFyICpwYXRobmFtZSwgaW50IGZs
YWdzLCAuLi4pCit7CisgICAgbW9kZV90IG1vZGUgPSAwOworICAgIGlmIChmbGFncyAmIE9fQ1JF
QVQpIHsKKyAgICAgICAgdmFfbGlzdCBhcDsKKyAgICAgICAgdmFfc3RhcnQoYXAsIGZsYWdzKTsK
KyAgICAgICAgbW9kZSA9IGFwcGx5X3VtYXNrKHZhX2FyZyhhcCwgbW9kZV90KSk7CisgICAgICAg
IHZhX2VuZChhcCk7CisgICAgfQorCisgICAgdHJhY2VfdmZzX29wZW4ocGF0aG5hbWUsIGZsYWdz
LCBtb2RlKTsKKworICAgIHN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOworICAgIGNoYXIgcGF0
aFtQQVRIX01BWF07CisgICAgc3RydWN0IGZpbGUgKmZwOworICAgIGludCBmZCwgZXJyb3I7Cisg
ICAgaW50IGFjYzsKKworICAgIGFjYyA9IDA7CisgICAgc3dpdGNoIChmbGFncyAmIE9fQUNDTU9E
RSkgeworICAgIGNhc2UgT19SRE9OTFk6CisgICAgICAgIGFjYyA9IFZSRUFEOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIE9fV1JPTkxZOgorICAgICAgICBhY2MgPSBWV1JJVEU7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgT19SRFdSOgorICAgICAgICBhY2MgPSBWUkVBRCB8IFZXUklURTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5h
bWUsIGFjYywgcGF0aCk7CisgICAgaWYgKGVycm9yKQorICAgICAgICBnb3RvIG91dF9lcnJubzsK
KworICAgIGVycm9yID0gc3lzX29wZW4ocGF0aCwgZmxhZ3MsIG1vZGUsICZmcCk7CisgICAgaWYg
KGVycm9yKQorICAgICAgICBnb3RvIG91dF9lcnJubzsKKworICAgIGVycm9yID0gZmRhbGxvYyhm
cCwgJmZkKTsKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIGdvdG8gb3V0X2ZwdXQ7CisgICAgZmRy
b3AoZnApOworICAgIHRyYWNlX3Zmc19vcGVuX3JldChmZCk7CisgICAgcmV0dXJuIGZkOworCisg
ICAgb3V0X2ZwdXQ6CisgICAgZmRyb3AoZnApOworICAgIG91dF9lcnJubzoKKyAgICBlcnJubyA9
IGVycm9yOworICAgIHRyYWNlX3Zmc19vcGVuX2VycihlcnJvcik7CisgICAgcmV0dXJuIC0xOwor
fQorCitMRlM2NChvcGVuKTsKKworaW50IG9wZW5hdChpbnQgZGlyZmQsIGNvbnN0IGNoYXIgKnBh
dGhuYW1lLCBpbnQgZmxhZ3MsIC4uLikKK3sKKyAgICBtb2RlX3QgbW9kZSA9IDA7CisgICAgaWYg
KGZsYWdzICYgT19DUkVBVCkgeworICAgICAgICB2YV9saXN0IGFwOworICAgICAgICB2YV9zdGFy
dChhcCwgZmxhZ3MpOworICAgICAgICBtb2RlID0gYXBwbHlfdW1hc2sodmFfYXJnKGFwLCBtb2Rl
X3QpKTsKKyAgICAgICAgdmFfZW5kKGFwKTsKKyAgICB9CisKKyAgICBpZiAocGF0aG5hbWVbMF0g
PT0gJy8nIHx8IGRpcmZkID09IEFUX0ZEQ1dEKSB7CisgICAgICAgIHJldHVybiBvcGVuKHBhdGhu
YW1lLCBmbGFncywgbW9kZSk7CisgICAgfQorCisgICAgc3RydWN0IGZpbGUgKmZwOworICAgIGlu
dCBlcnJvciA9IGZnZXQoZGlyZmQsICZmcCk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIGVy
cm5vID0gZXJyb3I7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBzdHJ1Y3Qgdm5v
ZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOworICAgIHZuX2xvY2sodnApOworCisgICAg
c3RkOjp1bmlxdWVfcHRyPGNoYXIgW10+IHVwIChuZXcgY2hhcltQQVRIX01BWF0pOworICAgIGNo
YXIgKnAgPSB1cC5nZXQoKTsKKworICAgIC8qIGJ1aWxkIGFic29sdXRlIHBhdGggKi8KKyAgICBz
dHJsY3B5KHAsIGZwLT5mX2RlbnRyeS0+ZF9tb3VudC0+bV9wYXRoLCBQQVRIX01BWCk7CisgICAg
c3RybGNhdChwLCBmcC0+Zl9kZW50cnktPmRfcGF0aCwgUEFUSF9NQVgpOworICAgIHN0cmxjYXQo
cCwgIi8iLCBQQVRIX01BWCk7CisgICAgc3RybGNhdChwLCBwYXRobmFtZSwgUEFUSF9NQVgpOwor
CisgICAgZXJyb3IgPSBvcGVuKHAsIGZsYWdzLCBtb2RlKTsKKworICAgIHZuX3VubG9jayh2cCk7
CisgICAgZmRyb3AoZnApOworCisgICAgcmV0dXJuIGVycm9yOworfQorTEZTNjQob3BlbmF0KTsK
KworLy8gb3BlbigpIGhhcyBhbiBvcHRpb25hbCB0aGlyZCBhcmd1bWVudCwgIm1vZGUiLCB3aGlj
aCBpcyBvbmx5IG5lZWRlZCBpbgorLy8gc29tZSBjYXNlcyAod2hlbiB0aGUgT19DUkVBVCBtb2Rl
IGlzIHVzZWQpLiBBcyBhIHNhZmV0eSBmZWF0dXJlLCByZWNlbnQKKy8vIHZlcnNpb25zIG9mIEds
aWJjIGFkZCBhIGZlYXR1cmUgd2hlcmUgb3BlbigpIHdpdGggdHdvIGFyZ3VtZW50cyBpcyByZXBs
YWNlZAorLy8gYnkgYSBjYWxsIHRvIF9fb3Blbl8yKCksIHdoaWNoIHZlcmlmaWVzIGl0IGlzbid0
IGNhbGxlZCB3aXRoIE9fQ1JFQVRFLgorZXh0ZXJuICJDIiBpbnQgX19vcGVuXzIoY29uc3QgY2hh
ciAqcGF0aG5hbWUsIGludCBmbGFncykKK3sKKyAgICBhc3NlcnQoIShmbGFncyAmIE9fQ1JFQVQp
KTsKKyAgICByZXR1cm4gb3BlbihwYXRobmFtZSwgZmxhZ3MsIDApOworfQorCitleHRlcm4gIkMi
IGludCBfX29wZW42NF8yKGNvbnN0IGNoYXIgKmZpbGUsIGludCBmbGFncykKK3sKKyAgICBpZiAo
ZmxhZ3MgJiBPX0NSRUFUKSB7CisgICAgICAgIGVycm5vID0gRUlOVkFMOworICAgICAgICByZXR1
cm4gLTE7CisgICAgfQorCisgICAgcmV0dXJuIG9wZW42NChmaWxlLCBmbGFncyk7Cit9CisKK2lu
dCBjcmVhdChjb25zdCBjaGFyICpwYXRobmFtZSwgbW9kZV90IG1vZGUpCit7CisgICAgcmV0dXJu
IG9wZW4ocGF0aG5hbWUsIE9fQ1JFQVR8T19XUk9OTFl8T19UUlVOQywgbW9kZSk7Cit9CitMRlM2
NChjcmVhdCk7CisKK1RSQUNFUE9JTlQodHJhY2VfdmZzX2Nsb3NlLCAiJWQiLCBpbnQpOworVFJB
Q0VQT0lOVCh0cmFjZV92ZnNfY2xvc2VfcmV0LCAiIik7CitUUkFDRVBPSU5UKHRyYWNlX3Zmc19j
bG9zZV9lcnIsICIlZCIsIGludCk7CisKK2ludCBjbG9zZShpbnQgZmQpCit7CisgICAgaW50IGVy
cm9yOworCisgICAgdHJhY2VfdmZzX2Nsb3NlKGZkKTsKKyAgICBlcnJvciA9IGZkY2xvc2UoZmQp
OworICAgIGlmIChlcnJvcikKKyAgICAgICAgZ290byBvdXRfZXJybm87CisKKyAgICB0cmFjZV92
ZnNfY2xvc2VfcmV0KCk7CisgICAgcmV0dXJuIDA7CisKKyAgICBvdXRfZXJybm86CisgICAgdHJh
Y2VfdmZzX2Nsb3NlX2VycihlcnJvcik7CisgICAgZXJybm8gPSBlcnJvcjsKKyAgICByZXR1cm4g
LTE7Cit9CisKK1RSQUNFUE9JTlQodHJhY2VfdmZzX21rbm9kLCAiXCIlc1wiIDAlMG8gMHgleCIs
IGNvbnN0IGNoYXIqLCBtb2RlX3QsIGRldl90KTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX21rbm9k
X3JldCwgIiIpOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbWtub2RfZXJyLCAiJWQiLCBpbnQpOwor
CisKK2V4dGVybiAiQyIKK2ludCBfX3hta25vZChpbnQgdmVyLCBjb25zdCBjaGFyICpwYXRobmFt
ZSwgbW9kZV90IG1vZGUsIGRldl90ICpkZXYpCit7CisgICAgYXNzZXJ0KHZlciA9PSAwKTsgLy8g
T24geDg2LTY0IExpbnV4LCBfTUtOT0RfVkVSX0xJTlVYIGlzIDAuCisgICAgc3RydWN0IHRhc2sg
KnQgPSBtYWluX3Rhc2s7CisgICAgY2hhciBwYXRoW1BBVEhfTUFYXTsKKyAgICBpbnQgZXJyb3I7
CisKKyAgICB0cmFjZV92ZnNfbWtub2QocGF0aG5hbWUsIG1vZGUsICpkZXYpOworICAgIGlmICgo
ZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5hbWUsIFZXUklURSwgcGF0aCkpICE9IDApCisgICAg
ICAgIGdvdG8gb3V0X2Vycm5vOworCisgICAgZXJyb3IgPSBzeXNfbWtub2QocGF0aCwgbW9kZSk7
CisgICAgaWYgKGVycm9yKQorICAgICAgICBnb3RvIG91dF9lcnJubzsKKworICAgIHRyYWNlX3Zm
c19ta25vZF9yZXQoKTsKKyAgICByZXR1cm4gMDsKKworICAgIG91dF9lcnJubzoKKyAgICB0cmFj
ZV92ZnNfbWtub2RfZXJyKGVycm9yKTsKKyAgICBlcnJubyA9IGVycm9yOworICAgIHJldHVybiAt
MTsKK30KKworaW50IG1rbm9kKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBtb2RlX3QgbW9kZSwgZGV2
X3QgZGV2KQoreworICAgIHJldHVybiBfX3hta25vZCgwLCBwYXRobmFtZSwgbW9kZSwgJmRldik7
Cit9CisKKworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbHNlZWssICIlZCAweCV4ICVkIiwgaW50LCBv
ZmZfdCwgaW50KTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX2xzZWVrX3JldCwgIjB4JXgiLCBvZmZf
dCk7CitUUkFDRVBPSU5UKHRyYWNlX3Zmc19sc2Vla19lcnIsICIlZCIsIGludCk7CisKK29mZl90
IGxzZWVrKGludCBmZCwgb2ZmX3Qgb2Zmc2V0LCBpbnQgd2hlbmNlKQoreworICAgIHN0cnVjdCBm
aWxlICpmcDsKKyAgICBvZmZfdCBvcmc7CisgICAgaW50IGVycm9yOworCisgICAgdHJhY2VfdmZz
X2xzZWVrKGZkLCBvZmZzZXQsIHdoZW5jZSk7CisgICAgZXJyb3IgPSBmZ2V0KGZkLCAmZnApOwor
ICAgIGlmIChlcnJvcikKKyAgICAgICAgZ290byBvdXRfZXJybm87CisKKyAgICBlcnJvciA9IHN5
c19sc2VlayhmcCwgb2Zmc2V0LCB3aGVuY2UsICZvcmcpOworICAgIGZkcm9wKGZwKTsKKworICAg
IGlmIChlcnJvcikKKyAgICAgICAgZ290byBvdXRfZXJybm87CisgICAgdHJhY2VfdmZzX2xzZWVr
X3JldChvcmcpOworICAgIHJldHVybiBvcmc7CisKKyAgICBvdXRfZXJybm86CisgICAgdHJhY2Vf
dmZzX2xzZWVrX2VycihlcnJvcik7CisgICAgZXJybm8gPSBlcnJvcjsKKyAgICByZXR1cm4gLTE7
Cit9CisKK0xGUzY0KGxzZWVrKTsKKworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfcHJlYWQsICIlZCAl
cCAweCV4IDB4JXgiLCBpbnQsIHZvaWQqLCBzaXplX3QsIG9mZl90KTsKK1RSQUNFUE9JTlQodHJh
Y2VfdmZzX3ByZWFkX3JldCwgIjB4JXgiLCBzc2l6ZV90KTsKK1RSQUNFUE9JTlQodHJhY2VfdmZz
X3ByZWFkX2VyciwgIiVkIiwgaW50KTsKKworLy8gSW4gQlNEJ3MgaW50ZXJuYWwgaW1wbGVtZW50
YXRpb24gb2YgcmVhZCgpIGFuZCB3cml0ZSgpIGNvZGUsIGZvciBleGFtcGxlCisvLyBzb3NlbmRf
Z2VuZXJpYygpLCBhIHBhcnRpYWwgcmVhZCBvciB3cml0ZSByZXR1cm5zIGJvdGggYW4gRVdPVUxE
QkxPQ0sgZXJyb3IKKy8vICphbmQqIGEgbm9uLXplcm8gbnVtYmVyIG9mIHdyaXR0ZW4gYnl0ZXMu
IEluIHRoYXQgY2FzZSwgd2UgbmVlZCB0byB6ZXJvIHRoZQorLy8gZXJyb3IsIHNvIHRoZSBzeXN0
ZW0gY2FsbCBhcHBlYXIgYSBzdWNjZXNzZnVsIHBhcnRpYWwgcmVhZC93cml0ZS4KKy8vIEluIEZy
ZWVCU0QsIGRvZmlsZXdyaXRlKCkgYW5kIGRvZmlsZXJlYWQoKSAoc3lzX2dlbmVyaWMuYykgZG8g
dGhpcyB0b28uCitzdGF0aWMgaW5saW5lIGJvb2wgaGFzX2Vycm9yKGludCBlcnJvciwgaW50IGJ5
dGVzKQoreworICAgIHJldHVybiBlcnJvciAmJiAoCisgICAgICAgICAgICAoYnl0ZXMgPT0gMCkg
fHwKKyAgICAgICAgICAgIChlcnJvciAhPSBFV09VTERCTE9DSyAmJiBlcnJvciAhPSBFSU5UUiAm
JiBlcnJvciAhPSBFUkVTVEFSVCkpOworfQorCisKK3NzaXplX3QgcHJlYWQoaW50IGZkLCB2b2lk
ICpidWYsIHNpemVfdCBjb3VudCwgb2ZmX3Qgb2Zmc2V0KQoreworICAgIHRyYWNlX3Zmc19wcmVh
ZChmZCwgYnVmLCBjb3VudCwgb2Zmc2V0KTsKKyAgICBzdHJ1Y3QgaW92ZWMgaW92ID0geworICAg
ICAgICAgICAgLmlvdl9iYXNlCT0gYnVmLAorICAgICAgICAgICAgLmlvdl9sZW4JPSBjb3VudCwK
KyAgICB9OworICAgIHN0cnVjdCBmaWxlICpmcDsKKyAgICBzaXplX3QgYnl0ZXM7CisgICAgaW50
IGVycm9yOworCisgICAgZXJyb3IgPSBmZ2V0KGZkLCAmZnApOworICAgIGlmIChlcnJvcikKKyAg
ICAgICAgZ290byBvdXRfZXJybm87CisKKyAgICBlcnJvciA9IHN5c19yZWFkKGZwLCAmaW92LCAx
LCBvZmZzZXQsICZieXRlcyk7CisgICAgZmRyb3AoZnApOworCisgICAgaWYgKGhhc19lcnJvcihl
cnJvciwgYnl0ZXMpKQorICAgICAgICBnb3RvIG91dF9lcnJubzsKKyAgICB0cmFjZV92ZnNfcHJl
YWRfcmV0KGJ5dGVzKTsKKyAgICByZXR1cm4gYnl0ZXM7CisKKyAgICBvdXRfZXJybm86CisgICAg
dHJhY2VfdmZzX3ByZWFkX2VycihlcnJvcik7CisgICAgZXJybm8gPSBlcnJvcjsKKyAgICByZXR1
cm4gLTE7Cit9CisKK0xGUzY0KHByZWFkKTsKKworc3NpemVfdCByZWFkKGludCBmZCwgdm9pZCAq
YnVmLCBzaXplX3QgY291bnQpCit7CisgICAgcmV0dXJuIHByZWFkKGZkLCBidWYsIGNvdW50LCAt
MSk7Cit9CisKK1RSQUNFUE9JTlQodHJhY2VfdmZzX3B3cml0ZSwgIiVkICVwIDB4JXggMHgleCIs
IGludCwgY29uc3Qgdm9pZCosIHNpemVfdCwgb2ZmX3QpOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNf
cHdyaXRlX3JldCwgIjB4JXgiLCBzc2l6ZV90KTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX3B3cml0
ZV9lcnIsICIlZCIsIGludCk7CisKK3NzaXplX3QgcHdyaXRlKGludCBmZCwgY29uc3Qgdm9pZCAq
YnVmLCBzaXplX3QgY291bnQsIG9mZl90IG9mZnNldCkKK3sKKyAgICB0cmFjZV92ZnNfcHdyaXRl
KGZkLCBidWYsIGNvdW50LCBvZmZzZXQpOworICAgIHN0cnVjdCBpb3ZlYyBpb3YgPSB7CisgICAg
ICAgICAgICAuaW92X2Jhc2UJPSAodm9pZCAqKWJ1ZiwKKyAgICAgICAgICAgIC5pb3ZfbGVuCT0g
Y291bnQsCisgICAgfTsKKyAgICBzdHJ1Y3QgZmlsZSAqZnA7CisgICAgc2l6ZV90IGJ5dGVzOwor
ICAgIGludCBlcnJvcjsKKworICAgIGVycm9yID0gZmdldChmZCwgJmZwKTsKKyAgICBpZiAoZXJy
b3IpCisgICAgICAgIGdvdG8gb3V0X2Vycm5vOworCisgICAgZXJyb3IgPSBzeXNfd3JpdGUoZnAs
ICZpb3YsIDEsIG9mZnNldCwgJmJ5dGVzKTsKKyAgICBmZHJvcChmcCk7CisKKyAgICBpZiAoaGFz
X2Vycm9yKGVycm9yLCBieXRlcykpCisgICAgICAgIGdvdG8gb3V0X2Vycm5vOworICAgIHRyYWNl
X3Zmc19wd3JpdGVfcmV0KGJ5dGVzKTsKKyAgICByZXR1cm4gYnl0ZXM7CisKKyAgICBvdXRfZXJy
bm86CisgICAgdHJhY2VfdmZzX3B3cml0ZV9lcnIoZXJyb3IpOworICAgIGVycm5vID0gZXJyb3I7
CisgICAgcmV0dXJuIC0xOworfQorCitMRlM2NChwd3JpdGUpOworCitzc2l6ZV90IHdyaXRlKGlu
dCBmZCwgY29uc3Qgdm9pZCAqYnVmLCBzaXplX3QgY291bnQpCit7CisgICAgcmV0dXJuIHB3cml0
ZShmZCwgYnVmLCBjb3VudCwgLTEpOworfQorCitzc2l6ZV90IHByZWFkdihpbnQgZmQsIGNvbnN0
IHN0cnVjdCBpb3ZlYyAqaW92LCBpbnQgaW92Y250LCBvZmZfdCBvZmZzZXQpCit7CisgICAgc3Ry
dWN0IGZpbGUgKmZwOworICAgIHNpemVfdCBieXRlczsKKyAgICBpbnQgZXJyb3I7CisKKyAgICBl
cnJvciA9IGZnZXQoZmQsICZmcCk7CisgICAgaWYgKGVycm9yKQorICAgICAgICBnb3RvIG91dF9l
cnJubzsKKworICAgIGVycm9yID0gc3lzX3JlYWQoZnAsIGlvdiwgaW92Y250LCBvZmZzZXQsICZi
eXRlcyk7CisgICAgZmRyb3AoZnApOworCisgICAgaWYgKGhhc19lcnJvcihlcnJvciwgYnl0ZXMp
KQorICAgICAgICBnb3RvIG91dF9lcnJubzsKKyAgICByZXR1cm4gYnl0ZXM7CisKKyAgICBvdXRf
ZXJybm86CisgICAgZXJybm8gPSBlcnJvcjsKKyAgICByZXR1cm4gLTE7Cit9CisKK0xGUzY0KHBy
ZWFkdik7CisKK3NzaXplX3QgcmVhZHYoaW50IGZkLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlvdiwg
aW50IGlvdmNudCkKK3sKKyAgICByZXR1cm4gcHJlYWR2KGZkLCBpb3YsIGlvdmNudCwgLTEpOwor
fQorCitUUkFDRVBPSU5UKHRyYWNlX3Zmc19wd3JpdGV2LCAiJWQgJXAgMHgleCAweCV4IiwgaW50
LCBjb25zdCBzdHJ1Y3QgaW92ZWMqLCBpbnQsIG9mZl90KTsKK1RSQUNFUE9JTlQodHJhY2VfdmZz
X3B3cml0ZXZfcmV0LCAiMHgleCIsIHNzaXplX3QpOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfcHdy
aXRldl9lcnIsICIlZCIsIGludCk7CisKK3NzaXplX3QgcHdyaXRldihpbnQgZmQsIGNvbnN0IHN0
cnVjdCBpb3ZlYyAqaW92LCBpbnQgaW92Y250LCBvZmZfdCBvZmZzZXQpCit7CisgICAgc3RydWN0
IGZpbGUgKmZwOworICAgIHNpemVfdCBieXRlczsKKyAgICBpbnQgZXJyb3I7CisKKyAgICB0cmFj
ZV92ZnNfcHdyaXRldihmZCwgaW92LCBpb3ZjbnQsIG9mZnNldCk7CisgICAgZXJyb3IgPSBmZ2V0
KGZkLCAmZnApOworICAgIGlmIChlcnJvcikKKyAgICAgICAgZ290byBvdXRfZXJybm87CisKKyAg
ICBlcnJvciA9IHN5c193cml0ZShmcCwgaW92LCBpb3ZjbnQsIG9mZnNldCwgJmJ5dGVzKTsKKyAg
ICBmZHJvcChmcCk7CisKKyAgICBpZiAoaGFzX2Vycm9yKGVycm9yLCBieXRlcykpCisgICAgICAg
IGdvdG8gb3V0X2Vycm5vOworICAgIHRyYWNlX3Zmc19wd3JpdGV2X3JldChieXRlcyk7CisgICAg
cmV0dXJuIGJ5dGVzOworCisgICAgb3V0X2Vycm5vOgorICAgIHRyYWNlX3Zmc19wd3JpdGV2X2Vy
cihlcnJvcik7CisgICAgZXJybm8gPSBlcnJvcjsKKyAgICByZXR1cm4gLTE7Cit9CitMRlM2NChw
d3JpdGV2KTsKKworc3NpemVfdCB3cml0ZXYoaW50IGZkLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlv
diwgaW50IGlvdmNudCkKK3sKKyAgICByZXR1cm4gcHdyaXRldihmZCwgaW92LCBpb3ZjbnQsIC0x
KTsKK30KKworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfaW9jdGwsICIlZCAweCV4IiwgaW50LCB1bnNp
Z25lZCBsb25nKTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX2lvY3RsX3JldCwgIiIpOworVFJBQ0VQ
T0lOVCh0cmFjZV92ZnNfaW9jdGxfZXJyLCAiJWQiLCBpbnQpOworCitpbnQgaW9jdGwoaW50IGZk
LCB1bnNpZ25lZCBsb25nIGludCByZXF1ZXN0LCAuLi4pCit7CisgICAgc3RydWN0IGZpbGUgKmZw
OworICAgIGludCBlcnJvcjsKKyAgICB2YV9saXN0IGFwOworICAgIHZvaWQqIGFyZzsKKworICAg
IHRyYWNlX3Zmc19pb2N0bChmZCwgcmVxdWVzdCk7CisgICAgLyogZ2xpYmMgQUJJIHByb3ZpZGVz
IGEgdmFyaWFkaWMgcHJvdG90eXBlIGZvciBpb2N0bCBzbyB3ZSBuZWVkIHRvIGFncmVlCisgICAg
ICogd2l0aCBpdCwgc2luY2Ugd2Ugbm93IGluY2x1ZGUgc3lzL2lvY3RsLmgKKyAgICAgKiByZWFk
IHRoZSBmaXJzdCBhcmd1bWVudCBhbmQgcGFzcyBpdCB0byBzeXNfaW9jdGwoKSAqLworICAgIHZh
X3N0YXJ0KGFwLCByZXF1ZXN0KTsKKyAgICBhcmcgPSB2YV9hcmcoYXAsIHZvaWQqKTsKKyAgICB2
YV9lbmQoYXApOworCisgICAgZXJyb3IgPSBmZ2V0KGZkLCAmZnApOworICAgIGlmIChlcnJvcikK
KyAgICAgICAgZ290byBvdXRfZXJybm87CisKKyAgICBlcnJvciA9IHN5c19pb2N0bChmcCwgcmVx
dWVzdCwgYXJnKTsKKyAgICBmZHJvcChmcCk7CisKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIGdv
dG8gb3V0X2Vycm5vOworICAgIHRyYWNlX3Zmc19pb2N0bF9yZXQoKTsKKyAgICByZXR1cm4gMDsK
KworICAgIG91dF9lcnJubzoKKyAgICB0cmFjZV92ZnNfaW9jdGxfZXJyKGVycm9yKTsKKyAgICBl
cnJubyA9IGVycm9yOworICAgIHJldHVybiAtMTsKK30KKworVFJBQ0VQT0lOVCh0cmFjZV92ZnNf
ZnN5bmMsICIlZCIsIGludCk7CitUUkFDRVBPSU5UKHRyYWNlX3Zmc19mc3luY19yZXQsICIiKTsK
K1RSQUNFUE9JTlQodHJhY2VfdmZzX2ZzeW5jX2VyciwgIiVkIiwgaW50KTsKKworaW50IGZzeW5j
KGludCBmZCkKK3sKKyAgICBzdHJ1Y3QgZmlsZSAqZnA7CisgICAgaW50IGVycm9yOworCisgICAg
dHJhY2VfdmZzX2ZzeW5jKGZkKTsKKyAgICBlcnJvciA9IGZnZXQoZmQsICZmcCk7CisgICAgaWYg
KGVycm9yKQorICAgICAgICBnb3RvIG91dF9lcnJubzsKKworICAgIGVycm9yID0gc3lzX2ZzeW5j
KGZwKTsKKyAgICBmZHJvcChmcCk7CisKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIGdvdG8gb3V0
X2Vycm5vOworICAgIHRyYWNlX3Zmc19mc3luY19yZXQoKTsKKyAgICByZXR1cm4gMDsKKworICAg
IG91dF9lcnJubzoKKyAgICB0cmFjZV92ZnNfZnN5bmNfZXJyKGVycm9yKTsKKyAgICBlcnJubyA9
IGVycm9yOworICAgIHJldHVybiAtMTsKK30KKworaW50IGZkYXRhc3luYyhpbnQgZmQpCit7Cisg
ICAgLy8gVE9ETzogU2VlIGlmIHdlIGNhbiBkbyBsZXNzIHRoYW4gZnN5bmMoKS4KKyAgICByZXR1
cm4gZnN5bmMoZmQpOworfQorCitUUkFDRVBPSU5UKHRyYWNlX3Zmc19mc3RhdCwgIiVkICVwIiwg
aW50LCBzdHJ1Y3Qgc3RhdCopOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZnN0YXRfcmV0LCAiIik7
CitUUkFDRVBPSU5UKHRyYWNlX3Zmc19mc3RhdF9lcnIsICIlZCIsIGludCk7CisKK2V4dGVybiAi
QyIKK2ludCBfX2Z4c3RhdChpbnQgdmVyLCBpbnQgZmQsIHN0cnVjdCBzdGF0ICpzdCkKK3sKKyAg
ICBzdHJ1Y3QgZmlsZSAqZnA7CisgICAgaW50IGVycm9yOworCisgICAgdHJhY2VfdmZzX2ZzdGF0
KGZkLCBzdCk7CisKKyAgICBlcnJvciA9IGZnZXQoZmQsICZmcCk7CisgICAgaWYgKGVycm9yKQor
ICAgICAgICBnb3RvIG91dF9lcnJubzsKKworICAgIGVycm9yID0gc3lzX2ZzdGF0KGZwLCBzdCk7
CisgICAgZmRyb3AoZnApOworCisgICAgaWYgKGVycm9yKQorICAgICAgICBnb3RvIG91dF9lcnJu
bzsKKyAgICB0cmFjZV92ZnNfZnN0YXRfcmV0KCk7CisgICAgcmV0dXJuIDA7CisKKyAgICBvdXRf
ZXJybm86CisgICAgdHJhY2VfdmZzX2ZzdGF0X2VycihlcnJvcik7CisgICAgZXJybm8gPSBlcnJv
cjsKKyAgICByZXR1cm4gLTE7Cit9CisKK0xGUzY0KF9fZnhzdGF0KTsKKworZXh0ZXJuICJDIgor
aW50IGZzdGF0KGludCBmZCwgc3RydWN0IHN0YXQgKnN0KQoreworICAgIHJldHVybiBfX2Z4c3Rh
dCgxLCBmZCwgc3QpOworfQorCitMRlM2NChmc3RhdCk7CisKK2V4dGVybiAiQyIKK2ludCBfX2Z4
c3RhdGF0KGludCB2ZXIsIGludCBkaXJmZCwgY29uc3QgY2hhciAqcGF0aG5hbWUsIHN0cnVjdCBz
dGF0ICpzdCwKKyAgICAgICAgaW50IGZsYWdzKQoreworICAgIGlmIChmbGFncyAmIEFUX1NZTUxJ
TktfTk9GT0xMT1cpIHsKKyAgICAgICAgVU5JTVBMRU1FTlRFRCgiZnN0YXRhdCgpIHdpdGggQVRf
U1lNTElOS19OT0ZPTExPVyIpOworICAgIH0KKworICAgIGlmIChwYXRobmFtZVswXSA9PSAnLycg
fHwgZGlyZmQgPT0gQVRfRkRDV0QpIHsKKyAgICAgICAgcmV0dXJuIHN0YXQocGF0aG5hbWUsIHN0
KTsKKyAgICB9CisgICAgLy8gSWYgQVRfRU1QVFlfUEFUSCBhbmQgcGF0aG5hbWUgaXMgYW4gZW1w
dHkgc3RyaW5nLCBmc3RhdGF0KCkgb3BlcmF0ZXMgb24KKyAgICAvLyBkaXJmZCBpdHNlbGYsIGFu
ZCBpbiB0aGF0IGNhc2UgaXQgZG9lc24ndCBoYXZlIHRvIGJlIGEgZGlyZWN0b3J5LgorICAgIGlm
ICgoZmxhZ3MgJiBBVF9FTVBUWV9QQVRIKSAmJiAhcGF0aG5hbWVbMF0pIHsKKyAgICAgICAgcmV0
dXJuIGZzdGF0KGRpcmZkLCBzdCk7CisgICAgfQorCisgICAgc3RydWN0IGZpbGUgKmZwOworICAg
IGludCBlcnJvciA9IGZnZXQoZGlyZmQsICZmcCk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAg
IGVycm5vID0gZXJyb3I7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBzdHJ1Y3Qg
dm5vZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOworICAgIHZuX2xvY2sodnApOworCisg
ICAgc3RkOjp1bmlxdWVfcHRyPGNoYXIgW10+IHVwIChuZXcgY2hhcltQQVRIX01BWF0pOworICAg
IGNoYXIgKnAgPSB1cC5nZXQoKTsKKyAgICAvKiBidWlsZCBhYnNvbHV0ZSBwYXRoICovCisgICAg
c3RybGNweShwLCBmcC0+Zl9kZW50cnktPmRfbW91bnQtPm1fcGF0aCwgUEFUSF9NQVgpOworICAg
IHN0cmxjYXQocCwgZnAtPmZfZGVudHJ5LT5kX3BhdGgsIFBBVEhfTUFYKTsKKyAgICBzdHJsY2F0
KHAsICIvIiwgUEFUSF9NQVgpOworICAgIHN0cmxjYXQocCwgcGF0aG5hbWUsIFBBVEhfTUFYKTsK
KworICAgIGVycm9yID0gc3RhdChwLCBzdCk7CisKKyAgICB2bl91bmxvY2sodnApOworICAgIGZk
cm9wKGZwKTsKKworICAgIHJldHVybiBlcnJvcjsKK30KKworTEZTNjQoX19meHN0YXRhdCk7CisK
K2V4dGVybiAiQyIKK2ludCBmc3RhdGF0KGludCBkaXJmZCwgY29uc3QgY2hhciAqcGF0aCwgc3Ry
dWN0IHN0YXQgKnN0LCBpbnQgZmxhZ3MpCit7CisgICAgcmV0dXJuIF9fZnhzdGF0YXQoMSwgZGly
ZmQsIHBhdGgsIHN0LCBmbGFncyk7Cit9CisKK0xGUzY0KGZzdGF0YXQpOworCitleHRlcm4gIkMi
IGludCBmbG9jayhpbnQgZmQsIGludCBvcGVyYXRpb24pCit7CisgICAgaWYgKCFmaWxlcmVmX2Zy
b21fZmQoZmQpKSB7CisgICAgICAgIHJldHVybiBsaWJjX2Vycm9yKEVCQURGKTsKKyAgICB9CisK
KyAgICBzd2l0Y2ggKG9wZXJhdGlvbikgeworICAgIGNhc2UgTE9DS19TSDoKKyAgICBjYXNlIExP
Q0tfU0ggfCBMT0NLX05COgorICAgIGNhc2UgTE9DS19FWDoKKyAgICBjYXNlIExPQ0tfRVggfCBM
T0NLX05COgorICAgIGNhc2UgTE9DS19VTjoKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgcmV0dXJuIGxpYmNfZXJyb3IoRUlOVkFMKTsKKyAgICB9CisKKyAgICByZXR1cm4g
MDsKK30KKworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfcmVhZGRpciwgIiVkICVwIiwgaW50LCBkaXJl
bnQqKTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX3JlYWRkaXJfcmV0LCAiIik7CitUUkFDRVBPSU5U
KHRyYWNlX3Zmc19yZWFkZGlyX2VyciwgIiVkIiwgaW50KTsKKworc3RydWN0IF9fZGlyc3RyZWFt
Cit7CisgICAgaW50IGZkOworfTsKKworRElSICpvcGVuZGlyKGNvbnN0IGNoYXIgKnBhdGgpCit7
CisgICAgRElSICpkaXIgPSBuZXcgRElSOworCisgICAgaWYgKCFkaXIpCisgICAgICAgIHJldHVy
biBsaWJjX2Vycm9yX3B0cjxESVI+KEVOT01FTSk7CisKKyAgICBkaXItPmZkID0gb3BlbihwYXRo
LCBPX1JET05MWSk7CisgICAgaWYgKGRpci0+ZmQgPCAwKSB7CisgICAgICAgIGRlbGV0ZSBkaXI7
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICByZXR1cm4gZGlyOworfQorCitE
SVIgKmZkb3BlbmRpcihpbnQgZmQpCit7CisgICAgRElSICpkaXI7CisgICAgc3RydWN0IHN0YXQg
c3Q7CisgICAgaWYgKGZzdGF0KGZkLCAmc3QpIDwgMCkgeworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICB9CisgICAgaWYgKCFTX0lTRElSKHN0LnN0X21vZGUpKSB7CisgICAgICAgIGVycm5v
ID0gRU5PVERJUjsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIGRpciA9IG5l
dyBESVI7CisgICAgZGlyLT5mZCA9IGZkOworICAgIHJldHVybiBkaXI7CisKK30KKworaW50IGRp
cmZkKERJUiAqZGlycCkKK3sKKyAgICBpZiAoIWRpcnApIHsKKyAgICAgICAgcmV0dXJuIGxpYmNf
ZXJyb3IoRUlOVkFMKTsKKyAgICB9CisKKyAgICByZXR1cm4gZGlycC0+ZmQ7Cit9CisKK2ludCBj
bG9zZWRpcihESVIgKmRpcikKK3sKKyAgICBjbG9zZShkaXItPmZkKTsKKyAgICBkZWxldGUgZGly
OworICAgIHJldHVybiAwOworfQorCitzdHJ1Y3QgZGlyZW50ICpyZWFkZGlyKERJUiAqZGlyKQor
eworICAgIHN0YXRpYyBfX3RocmVhZCBzdHJ1Y3QgZGlyZW50IGVudHJ5LCAqcmVzdWx0OworICAg
IGludCByZXQ7CisKKyAgICByZXQgPSByZWFkZGlyX3IoZGlyLCAmZW50cnksICZyZXN1bHQpOwor
ICAgIGlmIChyZXQpCisgICAgICAgIHJldHVybiBsaWJjX2Vycm9yX3B0cjxzdHJ1Y3QgZGlyZW50
PihyZXQpOworCisgICAgZXJybm8gPSAwOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2ludCBy
ZWFkZGlyX3IoRElSICpkaXIsIHN0cnVjdCBkaXJlbnQgKmVudHJ5LCBzdHJ1Y3QgZGlyZW50ICoq
cmVzdWx0KQoreworICAgIGludCBlcnJvcjsKKyAgICBzdHJ1Y3QgZmlsZSAqZnA7CisKKyAgICB0
cmFjZV92ZnNfcmVhZGRpcihkaXItPmZkLCBlbnRyeSk7CisgICAgZXJyb3IgPSBmZ2V0KGRpci0+
ZmQsICZmcCk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIHRyYWNlX3Zmc19yZWFkZGlyX2Vy
cihlcnJvcik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZXJyb3IgPSBzeXNfcmVhZGRpcihmcCwg
ZW50cnkpOworICAgICAgICBmZHJvcChmcCk7CisgICAgICAgIGlmIChlcnJvcikgeworICAgICAg
ICAgICAgdHJhY2VfdmZzX3JlYWRkaXJfZXJyKGVycm9yKTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIHRyYWNlX3Zmc19yZWFkZGlyX3JldCgpOworICAgICAgICB9CisgICAgfQorICAg
IC8vIE91ciBkaXJlbnQgaGFzIChsaWtlIExpbnV4KSBhIGRfcmVjbGVuIGZpZWxkLCBidXQgYSBj
b25zdGFudCBzaXplLgorICAgIGVudHJ5LT5kX3JlY2xlbiA9IHNpemVvZigqZW50cnkpOworCisg
ICAgaWYgKGVycm9yKSB7CisgICAgICAgICpyZXN1bHQgPSBudWxscHRyOworICAgIH0gZWxzZSB7
CisgICAgICAgICpyZXN1bHQgPSBlbnRyeTsKKyAgICB9CisgICAgcmV0dXJuIGVycm9yID09IEVO
T0VOVCA/IDAgOiBlcnJvcjsKK30KKworLy8gRklYTUU6IGluIDY0Yml0IGRpcmVudDY0IGFuZCBk
aXJlbnQgYXJlIGlkZW50aWNhbCwgc28gaXQncyBzYWZlIHRvIGFsaWFzCisjdW5kZWYgcmVhZGRp
cjY0X3IKK2V4dGVybiAiQyIgaW50IHJlYWRkaXI2NF9yKERJUiAqZGlyLCBzdHJ1Y3QgZGlyZW50
NjQgKmVudHJ5LAorICAgICAgICBzdHJ1Y3QgZGlyZW50NjQgKipyZXN1bHQpCisgICAgICAgIF9f
YXR0cmlidXRlX18oKGFsaWFzKCJyZWFkZGlyX3IiKSkpOworCisjdW5kZWYgcmVhZGRpcjY0Citl
eHRlcm4gIkMiIHN0cnVjdCBkaXJlbnQgKnJlYWRkaXI2NChESVIgKmRpcikgX19hdHRyaWJ1dGVf
XygoYWxpYXMoInJlYWRkaXIiKSkpOworCit2b2lkIHJld2luZGRpcihESVIgKmRpcnApCit7Cisg
ICAgc3RydWN0IGZpbGUgKmZwOworCisgICAgYXV0byBlcnJvciA9IGZnZXQoZGlycC0+ZmQsICZm
cCk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIC8vIFBPU0lYIHNwZWNpZmllcyB0aGF0IHdo
YXQgcmV3aW5kZGlyKCkgZG9lcyBpbiB0aGUgY2FzZSBvZiBlcnJvcgorICAgICAgICAvLyBpcyB1
bmRlZmluZWQuLi4KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN5c19yZXdpbmRkaXIo
ZnApOworICAgIC8vIEFnYWluLCBlcnJvciBjb2RlIGZyb20gc3lzX3Jld2luZGRpcigpIGlzIGln
bm9yZWQuCisgICAgZmRyb3AoZnApOworfQorCitsb25nIHRlbGxkaXIoRElSICpkaXJwKQorewor
ICAgIHN0cnVjdCBmaWxlICpmcDsKKyAgICBpbnQgZXJyb3IgPSBmZ2V0KGRpcnAtPmZkLCAmZnAp
OworICAgIGlmIChlcnJvcikgeworICAgICAgICByZXR1cm4gbGliY19lcnJvcihlcnJvcik7Cisg
ICAgfQorCisgICAgbG9uZyBsb2M7CisgICAgZXJyb3IgPSBzeXNfdGVsbGRpcihmcCwgJmxvYyk7
CisgICAgZmRyb3AoZnApOworICAgIGlmIChlcnJvcikgeworICAgICAgICByZXR1cm4gbGliY19l
cnJvcihlcnJvcik7CisgICAgfQorICAgIHJldHVybiBsb2M7Cit9CisKK3ZvaWQgc2Vla2RpcihE
SVIgKmRpcnAsIGxvbmcgbG9jKQoreworICAgIHN0cnVjdCBmaWxlICpmcDsKKyAgICBpbnQgZXJy
b3IgPSBmZ2V0KGRpcnAtPmZkLCAmZnApOworICAgIGlmIChlcnJvcikgeworICAgICAgICAvLyBQ
T1NJWCBzcGVjaWZpZXMgc2Vla2RpcigpIGNhbm5vdCByZXR1cm4gZXJyb3JzLgorICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIHN5c19zZWVrZGlyKGZwLCBsb2MpOworICAgIC8vIEFnYWluLCBl
cnJvciBjb2RlIGZyb20gc3lzX3NlZWtkaXIoKSBpcyBpZ25vcmVkLgorICAgIGZkcm9wKGZwKTsK
K30KKworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbWtkaXIsICJcIiVzXCIgMCUwbyIsIGNvbnN0IGNo
YXIqLCBtb2RlX3QpOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbWtkaXJfcmV0LCAiIik7CitUUkFD
RVBPSU5UKHRyYWNlX3Zmc19ta2Rpcl9lcnIsICIlZCIsIGludCk7CisKK2ludAorbWtkaXIoY29u
c3QgY2hhciAqcGF0aG5hbWUsIG1vZGVfdCBtb2RlKQoreworICAgIHN0cnVjdCB0YXNrICp0ID0g
bWFpbl90YXNrOworICAgIGNoYXIgcGF0aFtQQVRIX01BWF07CisgICAgaW50IGVycm9yOworCisg
ICAgbW9kZSA9IGFwcGx5X3VtYXNrKG1vZGUpOworCisgICAgdHJhY2VfdmZzX21rZGlyKHBhdGhu
YW1lLCBtb2RlKTsKKyAgICBpZiAoKGVycm9yID0gdGFza19jb252KHQsIHBhdGhuYW1lLCBWV1JJ
VEUsIHBhdGgpKSAhPSAwKQorICAgICAgICBnb3RvIG91dF9lcnJubzsKKworICAgIGVycm9yID0g
c3lzX21rZGlyKHBhdGgsIG1vZGUpOworICAgIGlmIChlcnJvcikKKyAgICAgICAgZ290byBvdXRf
ZXJybm87CisgICAgdHJhY2VfdmZzX21rZGlyX3JldCgpOworICAgIHJldHVybiAwOworICAgIG91
dF9lcnJubzoKKyAgICB0cmFjZV92ZnNfbWtkaXJfZXJyKGVycm9yKTsKKyAgICBlcnJubyA9IGVy
cm9yOworICAgIHJldHVybiAtMTsKK30KKworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfcm1kaXIsICJc
IiVzXCIiLCBjb25zdCBjaGFyKik7CitUUkFDRVBPSU5UKHRyYWNlX3Zmc19ybWRpcl9yZXQsICIi
KTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX3JtZGlyX2VyciwgIiVkIiwgaW50KTsKKworaW50IHJt
ZGlyKGNvbnN0IGNoYXIgKnBhdGhuYW1lKQoreworICAgIHN0cnVjdCB0YXNrICp0ID0gbWFpbl90
YXNrOworICAgIGNoYXIgcGF0aFtQQVRIX01BWF07CisgICAgaW50IGVycm9yOworCisgICAgdHJh
Y2VfdmZzX3JtZGlyKHBhdGhuYW1lKTsKKyAgICBlcnJvciA9IEVOT0VOVDsKKyAgICBpZiAocGF0
aG5hbWUgPT0gbnVsbHB0cikKKyAgICAgICAgZ290byBvdXRfZXJybm87CisgICAgaWYgKChlcnJv
ciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwgVldSSVRFLCBwYXRoKSkgIT0gMCkKKyAgICAgICAg
Z290byBvdXRfZXJybm87CisKKyAgICBlcnJvciA9IHN5c19ybWRpcihwYXRoKTsKKyAgICBpZiAo
ZXJyb3IpCisgICAgICAgIGdvdG8gb3V0X2Vycm5vOworICAgIHRyYWNlX3Zmc19ybWRpcl9yZXQo
KTsKKyAgICByZXR1cm4gMDsKKyAgICBvdXRfZXJybm86CisgICAgdHJhY2VfdmZzX3JtZGlyX2Vy
cihlcnJvcik7CisgICAgZXJybm8gPSBlcnJvcjsKKyAgICByZXR1cm4gLTE7Cit9CisKK3N0YXRp
YyB2b2lkCitnZXRfbGFzdF9jb21wb25lbnQoY29uc3QgY2hhciAqcGF0aCwgY2hhciAqZHN0KQor
eworICAgIGludCBwb3MgPSBzdHJsZW4ocGF0aCkgLSAxOworCisgICAgd2hpbGUgKHBvcyA+PSAw
ICYmIHBhdGhbcG9zXSA9PSAnLycpCisgICAgICAgIHBvcy0tOworCisgICAgaW50IGNvbXBvbmVu
dF9lbmQgPSBwb3M7CisKKyAgICB3aGlsZSAocG9zID49IDAgJiYgcGF0aFtwb3NdICE9ICcvJykK
KyAgICAgICAgcG9zLS07CisKKyAgICBpbnQgY29tcG9uZW50X3N0YXJ0ID0gcG9zICsgMTsKKwor
ICAgIGludCBsZW4gPSBjb21wb25lbnRfZW5kIC0gY29tcG9uZW50X3N0YXJ0ICsgMTsKKyAgICBt
ZW1jcHkoZHN0LCBwYXRoICsgY29tcG9uZW50X3N0YXJ0LCBsZW4pOworICAgIGRzdFtsZW5dID0g
MDsKK30KKworc3RhdGljIGJvb2wgbnVsbF9vcl9lbXB0eShjb25zdCBjaGFyICpzdHIpCit7Cisg
ICAgcmV0dXJuIHN0ciA9PSBudWxscHRyIHx8ICpzdHIgPT0gJ1wwJzsKK30KKworVFJBQ0VQT0lO
VCh0cmFjZV92ZnNfcmVuYW1lLCAiXCIlc1wiIFwiJXNcIiIsIGNvbnN0IGNoYXIqLCBjb25zdCBj
aGFyKik7CitUUkFDRVBPSU5UKHRyYWNlX3Zmc19yZW5hbWVfcmV0LCAiIik7CitUUkFDRVBPSU5U
KHRyYWNlX3Zmc19yZW5hbWVfZXJyLCAiJWQiLCBpbnQpOworCitpbnQgcmVuYW1lKGNvbnN0IGNo
YXIgKm9sZHBhdGgsIGNvbnN0IGNoYXIgKm5ld3BhdGgpCit7CisgICAgdHJhY2VfdmZzX3JlbmFt
ZShvbGRwYXRoLCBuZXdwYXRoKTsKKyAgICBzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKKyAg
ICBjaGFyIHNyY1tQQVRIX01BWF07CisgICAgY2hhciBkZXN0W1BBVEhfTUFYXTsKKyAgICBpbnQg
ZXJyb3I7CisKKyAgICBlcnJvciA9IEVOT0VOVDsKKyAgICBpZiAobnVsbF9vcl9lbXB0eShvbGRw
YXRoKSB8fCBudWxsX29yX2VtcHR5KG5ld3BhdGgpKQorICAgICAgICBnb3RvIG91dF9lcnJubzsK
KworICAgIGdldF9sYXN0X2NvbXBvbmVudChvbGRwYXRoLCBzcmMpOworICAgIGlmICghc3RyY21w
KHNyYywgIi4iKSB8fCAhc3RyY21wKHNyYywgIi4uIikpIHsKKyAgICAgICAgZXJyb3IgPSBFSU5W
QUw7CisgICAgICAgIGdvdG8gb3V0X2Vycm5vOworICAgIH0KKworICAgIGdldF9sYXN0X2NvbXBv
bmVudChuZXdwYXRoLCBkZXN0KTsKKyAgICBpZiAoIXN0cmNtcChkZXN0LCAiLiIpIHx8ICFzdHJj
bXAoZGVzdCwgIi4uIikpIHsKKyAgICAgICAgZXJyb3IgPSBFSU5WQUw7CisgICAgICAgIGdvdG8g
b3V0X2Vycm5vOworICAgIH0KKworICAgIGlmICgoZXJyb3IgPSB0YXNrX2NvbnYodCwgb2xkcGF0
aCwgVlJFQUQsIHNyYykpICE9IDApCisgICAgICAgIGdvdG8gb3V0X2Vycm5vOworCisgICAgaWYg
KChlcnJvciA9IHRhc2tfY29udih0LCBuZXdwYXRoLCBWV1JJVEUsIGRlc3QpKSAhPSAwKQorICAg
ICAgICBnb3RvIG91dF9lcnJubzsKKworICAgIGVycm9yID0gc3lzX3JlbmFtZShzcmMsIGRlc3Qp
OworICAgIGlmIChlcnJvcikKKyAgICAgICAgZ290byBvdXRfZXJybm87CisgICAgdHJhY2VfdmZz
X3JlbmFtZV9yZXQoKTsKKyAgICByZXR1cm4gMDsKKyAgICBvdXRfZXJybm86CisgICAgdHJhY2Vf
dmZzX3JlbmFtZV9lcnIoZXJyb3IpOworICAgIGVycm5vID0gZXJyb3I7CisgICAgcmV0dXJuIC0x
OworfQorCitUUkFDRVBPSU5UKHRyYWNlX3Zmc19jaGRpciwgIlwiJXNcIiIsIGNvbnN0IGNoYXIq
KTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX2NoZGlyX3JldCwgIiIpOworVFJBQ0VQT0lOVCh0cmFj
ZV92ZnNfY2hkaXJfZXJyLCAiJWQiLCBpbnQpOworCitzdGF0aWMgaW50IHJlcGxhY2VfY3dkKHN0
cnVjdCB0YXNrICp0LCBzdHJ1Y3QgZmlsZSAqbmV3X2N3ZGZwLAorICAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6OmZ1bmN0aW9uPGludCAodm9pZCk+IGNoZGlyX2Z1bmMpCit7CisgICAgc3RydWN0
IGZpbGUgKm9sZCA9IG51bGxwdHI7CisKKyAgICBpZiAoIXQpIHsKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgfQorCisgICAgaWYgKHQtPnRfY3dkZnApIHsKKyAgICAgICAgb2xkID0gdC0+dF9jd2Rm
cDsKKyAgICB9CisKKyAgICAvKiBEbyB0aGUgYWN0dWFsIGNoZGlyIG9wZXJhdGlvbiBoZXJlICov
CisgICAgaW50IGVycm9yID0gY2hkaXJfZnVuYygpOworCisgICAgdC0+dF9jd2RmcCA9IG5ld19j
d2RmcDsKKyAgICBpZiAob2xkKSB7CisgICAgICAgIGZkcm9wKG9sZCk7CisgICAgfQorCisgICAg
cmV0dXJuIGVycm9yOworfQorCitpbnQgY2hkaXIoY29uc3QgY2hhciAqcGF0aG5hbWUpCit7Cisg
ICAgdHJhY2VfdmZzX2NoZGlyKHBhdGhuYW1lKTsKKyAgICBzdHJ1Y3QgdGFzayAqdCA9IG1haW5f
dGFzazsKKyAgICBjaGFyIHBhdGhbUEFUSF9NQVhdOworICAgIHN0cnVjdCBmaWxlICpmcDsKKyAg
ICBpbnQgZXJyb3I7CisKKyAgICBlcnJvciA9IEVOT0VOVDsKKyAgICBpZiAocGF0aG5hbWUgPT0g
bnVsbHB0cikKKyAgICAgICAgZ290byBvdXRfZXJybm87CisKKyAgICBpZiAoKGVycm9yID0gdGFz
a19jb252KHQsIHBhdGhuYW1lLCBWUkVBRCwgcGF0aCkpICE9IDApCisgICAgICAgIGdvdG8gb3V0
X2Vycm5vOworCisgICAgLyogQ2hlY2sgaWYgZGlyZWN0b3J5IGV4aXRzICovCisgICAgZXJyb3Ig
PSBzeXNfb3BlbihwYXRoLCBPX0RJUkVDVE9SWSwgMCwgJmZwKTsKKyAgICBpZiAoZXJyb3IpIHsK
KyAgICAgICAgZ290byBvdXRfZXJybm87CisgICAgfQorCisgICAgcmVwbGFjZV9jd2QodCwgZnAs
IFsmXSgpIHsgc3RybGNweSh0LT50X2N3ZCwgcGF0aCwgc2l6ZW9mKHQtPnRfY3dkKSk7IHJldHVy
biAwOyB9KTsKKworICAgIHRyYWNlX3Zmc19jaGRpcl9yZXQoKTsKKyAgICByZXR1cm4gMDsKKyAg
ICBvdXRfZXJybm86CisgICAgZXJybm8gPSBlcnJvcjsKKyAgICB0cmFjZV92ZnNfY2hkaXJfZXJy
KGVycm5vKTsKKyAgICByZXR1cm4gLTE7Cit9CisKK1RSQUNFUE9JTlQodHJhY2VfdmZzX2ZjaGRp
ciwgIiVkIiwgaW50KTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX2ZjaGRpcl9yZXQsICIiKTsKK1RS
QUNFUE9JTlQodHJhY2VfdmZzX2ZjaGRpcl9lcnIsICIlZCIsIGludCk7CisKK2ludCBmY2hkaXIo
aW50IGZkKQoreworICAgIHRyYWNlX3Zmc19mY2hkaXIoZmQpOworICAgIHN0cnVjdCB0YXNrICp0
ID0gbWFpbl90YXNrOworICAgIHN0cnVjdCBmaWxlICpmcDsKKyAgICBpbnQgZXJyb3I7CisKKyAg
ICBlcnJvciA9IGZnZXQoZmQsICZmcCk7CisgICAgaWYgKGVycm9yKQorICAgICAgICBnb3RvIG91
dF9lcnJubzsKKworICAgIGVycm9yID0gcmVwbGFjZV9jd2QodCwgZnAsIFsmXSgpIHsgcmV0dXJu
IHN5c19mY2hkaXIoZnAsIHQtPnRfY3dkKTsgfSk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAg
IGZkcm9wKGZwKTsKKyAgICAgICAgZ290byBvdXRfZXJybm87CisgICAgfQorCisgICAgdHJhY2Vf
dmZzX2ZjaGRpcl9yZXQoKTsKKyAgICByZXR1cm4gMDsKKworICAgIG91dF9lcnJubzoKKyAgICB0
cmFjZV92ZnNfZmNoZGlyX2VycihlcnJvcik7CisgICAgZXJybm8gPSBlcnJvcjsKKyAgICByZXR1
cm4gLTE7Cit9CisKK1RSQUNFUE9JTlQodHJhY2VfdmZzX2xpbmssICJcIiVzXCIgXCIlc1wiIiwg
Y29uc3QgY2hhciosIGNvbnN0IGNoYXIqKTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX2xpbmtfcmV0
LCAiIik7CitUUkFDRVBPSU5UKHRyYWNlX3Zmc19saW5rX2VyciwgIiVkIiwgaW50KTsKKworaW50
IGxpbmsoY29uc3QgY2hhciAqb2xkcGF0aCwgY29uc3QgY2hhciAqbmV3cGF0aCkKK3sKKyAgICBz
dHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKKyAgICBjaGFyIHBhdGgxW1BBVEhfTUFYXTsKKyAg
ICBjaGFyIHBhdGgyW1BBVEhfTUFYXTsKKyAgICBpbnQgZXJyb3I7CisKKyAgICB0cmFjZV92ZnNf
bGluayhvbGRwYXRoLCBuZXdwYXRoKTsKKworICAgIGVycm9yID0gRU5PRU5UOworICAgIGlmIChv
bGRwYXRoID09IG51bGxwdHIgfHwgbmV3cGF0aCA9PSBudWxscHRyKQorICAgICAgICBnb3RvIG91
dF9lcnJubzsKKyAgICBpZiAoKGVycm9yID0gdGFza19jb252KHQsIG9sZHBhdGgsIFZXUklURSwg
cGF0aDEpKSAhPSAwKQorICAgICAgICBnb3RvIG91dF9lcnJubzsKKyAgICBpZiAoKGVycm9yID0g
dGFza19jb252KHQsIG5ld3BhdGgsIFZXUklURSwgcGF0aDIpKSAhPSAwKQorICAgICAgICBnb3Rv
IG91dF9lcnJubzsKKworICAgIGVycm9yID0gc3lzX2xpbmsocGF0aDEsIHBhdGgyKTsKKyAgICBp
ZiAoZXJyb3IpCisgICAgICAgIGdvdG8gb3V0X2Vycm5vOworICAgIHRyYWNlX3Zmc19saW5rX3Jl
dCgpOworICAgIHJldHVybiAwOworICAgIG91dF9lcnJubzoKKyAgICB0cmFjZV92ZnNfbGlua19l
cnIoZXJyb3IpOworICAgIGVycm5vID0gZXJyb3I7CisgICAgcmV0dXJuIC0xOworfQorCisKK1RS
QUNFUE9JTlQodHJhY2VfdmZzX3N5bWxpbmssICJvbGRwYXRoPSVzLCBuZXdwYXRoPSVzIiwgY29u
c3QgY2hhciosIGNvbnN0IGNoYXIqKTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX3N5bWxpbmtfcmV0
LCAiIik7CitUUkFDRVBPSU5UKHRyYWNlX3Zmc19zeW1saW5rX2VyciwgImVycm5vPSVkIiwgaW50
KTsKKworaW50IHN5bWxpbmsoY29uc3QgY2hhciAqb2xkcGF0aCwgY29uc3QgY2hhciAqbmV3cGF0
aCkKK3sKKyAgICBpbnQgZXJyb3I7CisKKyAgICB0cmFjZV92ZnNfc3ltbGluayhvbGRwYXRoLCBu
ZXdwYXRoKTsKKworICAgIGVycm9yID0gRU5PRU5UOworICAgIGlmIChvbGRwYXRoID09IG51bGxw
dHIgfHwgbmV3cGF0aCA9PSBudWxscHRyKSB7CisgICAgICAgIGVycm5vID0gRU5PRU5UOworICAg
ICAgICB0cmFjZV92ZnNfc3ltbGlua19lcnIoZXJyb3IpOworICAgICAgICByZXR1cm4gKC0xKTsK
KyAgICB9CisKKyAgICBlcnJvciA9IHN5c19zeW1saW5rKG9sZHBhdGgsIG5ld3BhdGgpOworICAg
IGlmIChlcnJvcikgeworICAgICAgICBlcnJubyA9IGVycm9yOworICAgICAgICB0cmFjZV92ZnNf
c3ltbGlua19lcnIoZXJyb3IpOworICAgICAgICByZXR1cm4gKC0xKTsKKyAgICB9CisKKyAgICB0
cmFjZV92ZnNfc3ltbGlua19yZXQoKTsKKyAgICByZXR1cm4gMDsKK30KKworVFJBQ0VQT0lOVCh0
cmFjZV92ZnNfdW5saW5rLCAiXCIlc1wiIiwgY29uc3QgY2hhciopOworVFJBQ0VQT0lOVCh0cmFj
ZV92ZnNfdW5saW5rX3JldCwgIiIpOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfdW5saW5rX2Vyciwg
IiVkIiwgaW50KTsKKworaW50IHVubGluayhjb25zdCBjaGFyICpwYXRobmFtZSkKK3sKKyAgICB0
cmFjZV92ZnNfdW5saW5rKHBhdGhuYW1lKTsKKyAgICBzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFz
azsKKyAgICBjaGFyIHBhdGhbUEFUSF9NQVhdOworICAgIGludCBlcnJvcjsKKworICAgIGVycm9y
ID0gRU5PRU5UOworICAgIGlmIChwYXRobmFtZSA9PSBudWxscHRyKQorICAgICAgICBnb3RvIG91
dF9lcnJubzsKKyAgICBpZiAoKGVycm9yID0gdGFza19jb252KHQsIHBhdGhuYW1lLCBWV1JJVEUs
IHBhdGgpKSAhPSAwKQorICAgICAgICBnb3RvIG91dF9lcnJubzsKKworICAgIGVycm9yID0gc3lz
X3VubGluayhwYXRoKTsKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIGdvdG8gb3V0X2Vycm5vOwor
ICAgIHRyYWNlX3Zmc191bmxpbmtfcmV0KCk7CisgICAgcmV0dXJuIDA7CisgICAgb3V0X2Vycm5v
OgorICAgIHRyYWNlX3Zmc191bmxpbmtfZXJyKGVycm9yKTsKKyAgICBlcnJubyA9IGVycm9yOwor
ICAgIHJldHVybiAtMTsKK30KKworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfc3RhdCwgIlwiJXNcIiAl
cCIsIGNvbnN0IGNoYXIqLCBzdHJ1Y3Qgc3RhdCopOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfc3Rh
dF9yZXQsICIiKTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX3N0YXRfZXJyLCAiJWQiLCBpbnQpOwor
CitleHRlcm4gIkMiCitpbnQgX194c3RhdChpbnQgdmVyLCBjb25zdCBjaGFyICpwYXRobmFtZSwg
c3RydWN0IHN0YXQgKnN0KQoreworICAgIHN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOworICAg
IGNoYXIgcGF0aFtQQVRIX01BWF07CisgICAgaW50IGVycm9yOworCisgICAgdHJhY2VfdmZzX3N0
YXQocGF0aG5hbWUsIHN0KTsKKworICAgIGVycm9yID0gdGFza19jb252KHQsIHBhdGhuYW1lLCAw
LCBwYXRoKTsKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIGdvdG8gb3V0X2Vycm5vOworCisgICAg
ZXJyb3IgPSBzeXNfc3RhdChwYXRoLCBzdCk7CisgICAgaWYgKGVycm9yKQorICAgICAgICBnb3Rv
IG91dF9lcnJubzsKKyAgICB0cmFjZV92ZnNfc3RhdF9yZXQoKTsKKyAgICByZXR1cm4gMDsKKwor
ICAgIG91dF9lcnJubzoKKyAgICB0cmFjZV92ZnNfc3RhdF9lcnIoZXJyb3IpOworICAgIGVycm5v
ID0gZXJyb3I7CisgICAgcmV0dXJuIC0xOworfQorCitMRlM2NChfX3hzdGF0KTsKKworaW50IHN0
YXQoY29uc3QgY2hhciAqcGF0aG5hbWUsIHN0cnVjdCBzdGF0ICpzdCkKK3sKKyAgICByZXR1cm4g
X194c3RhdCgxLCBwYXRobmFtZSwgc3QpOworfQorCitMRlM2NChzdGF0KTsKKworVFJBQ0VQT0lO
VCh0cmFjZV92ZnNfbHN0YXQsICJwYXRobmFtZT0lcywgc3RhdD0lcCIsIGNvbnN0IGNoYXIqLCBz
dHJ1Y3Qgc3RhdCopOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbHN0YXRfcmV0LCAiIik7CitUUkFD
RVBPSU5UKHRyYWNlX3Zmc19sc3RhdF9lcnIsICJlcnJubz0lZCIsIGludCk7CitleHRlcm4gIkMi
CitpbnQgX19seHN0YXQoaW50IHZlciwgY29uc3QgY2hhciAqcGF0aG5hbWUsIHN0cnVjdCBzdGF0
ICpzdCkKK3sKKyAgICBzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKKyAgICBjaGFyIHBhdGhb
UEFUSF9NQVhdOworICAgIGludCBlcnJvcjsKKworICAgIHRyYWNlX3Zmc19sc3RhdChwYXRobmFt
ZSwgc3QpOworCisgICAgZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5hbWUsIDAsIHBhdGgpOwor
ICAgIGlmIChlcnJvcikgeworICAgICAgICBlcnJubyA9IGVycm9yOworICAgICAgICB0cmFjZV92
ZnNfbHN0YXRfZXJyKGVycm9yKTsKKyAgICAgICAgcmV0dXJuICgtMSk7CisgICAgfQorCisgICAg
ZXJyb3IgPSBzeXNfbHN0YXQocGF0aCwgc3QpOworICAgIGlmIChlcnJvcikgeworICAgICAgICBl
cnJubyA9IGVycm9yOworICAgICAgICB0cmFjZV92ZnNfbHN0YXRfZXJyKGVycm9yKTsKKyAgICAg
ICAgcmV0dXJuICgtMSk7CisgICAgfQorCisgICAgdHJhY2VfdmZzX2xzdGF0X3JldCgpOworICAg
IHJldHVybiAwOworfQorCitMRlM2NChfX2x4c3RhdCk7CisKK2ludCBsc3RhdChjb25zdCBjaGFy
ICpwYXRobmFtZSwgc3RydWN0IHN0YXQgKnN0KQoreworICAgIHJldHVybiBfX2x4c3RhdCgxLCBw
YXRobmFtZSwgc3QpOworfQorCitMRlM2NChsc3RhdCk7CisKK1RSQUNFUE9JTlQodHJhY2VfdmZz
X3N0YXRmcywgIlwiJXNcIiAlcCIsIGNvbnN0IGNoYXIqLCBzdHJ1Y3Qgc3RhdGZzKik7CitUUkFD
RVBPSU5UKHRyYWNlX3Zmc19zdGF0ZnNfcmV0LCAiIik7CitUUkFDRVBPSU5UKHRyYWNlX3Zmc19z
dGF0ZnNfZXJyLCAiJWQiLCBpbnQpOworCitleHRlcm4gIkMiCitpbnQgX19zdGF0ZnMoY29uc3Qg
Y2hhciAqcGF0aG5hbWUsIHN0cnVjdCBzdGF0ZnMgKmJ1ZikKK3sKKyAgICB0cmFjZV92ZnNfc3Rh
dGZzKHBhdGhuYW1lLCBidWYpOworICAgIHN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOworICAg
IGNoYXIgcGF0aFtQQVRIX01BWF07CisgICAgaW50IGVycm9yOworCisgICAgZXJyb3IgPSB0YXNr
X2NvbnYodCwgcGF0aG5hbWUsIDAsIHBhdGgpOworICAgIGlmIChlcnJvcikKKyAgICAgICAgZ290
byBvdXRfZXJybm87CisKKyAgICBlcnJvciA9IHN5c19zdGF0ZnMocGF0aCwgYnVmKTsKKyAgICBp
ZiAoZXJyb3IpCisgICAgICAgIGdvdG8gb3V0X2Vycm5vOworICAgIHRyYWNlX3Zmc19zdGF0ZnNf
cmV0KCk7CisgICAgcmV0dXJuIDA7CisgICAgb3V0X2Vycm5vOgorICAgIHRyYWNlX3Zmc19zdGF0
ZnNfZXJyKGVycm9yKTsKKyAgICBlcnJubyA9IGVycm9yOworICAgIHJldHVybiAtMTsKK30KK3dl
YWtfYWxpYXMoX19zdGF0ZnMsIHN0YXRmcyk7CisKK0xGUzY0KHN0YXRmcyk7CisKK1RSQUNFUE9J
TlQodHJhY2VfdmZzX2ZzdGF0ZnMsICJcIiVzXCIgJXAiLCBpbnQsIHN0cnVjdCBzdGF0ZnMqKTsK
K1RSQUNFUE9JTlQodHJhY2VfdmZzX2ZzdGF0ZnNfcmV0LCAiIik7CitUUkFDRVBPSU5UKHRyYWNl
X3Zmc19mc3RhdGZzX2VyciwgIiVkIiwgaW50KTsKKworZXh0ZXJuICJDIgoraW50IF9fZnN0YXRm
cyhpbnQgZmQsIHN0cnVjdCBzdGF0ZnMgKmJ1ZikKK3sKKyAgICBzdHJ1Y3QgZmlsZSAqZnA7Cisg
ICAgaW50IGVycm9yOworCisgICAgdHJhY2VfdmZzX2ZzdGF0ZnMoZmQsIGJ1Zik7CisgICAgZXJy
b3IgPSBmZ2V0KGZkLCAmZnApOworICAgIGlmIChlcnJvcikKKyAgICAgICAgZ290byBvdXRfZXJy
bm87CisKKyAgICBlcnJvciA9IHN5c19mc3RhdGZzKGZwLCBidWYpOworICAgIGZkcm9wKGZwKTsK
KworICAgIGlmIChlcnJvcikKKyAgICAgICAgZ290byBvdXRfZXJybm87CisgICAgdHJhY2VfdmZz
X2ZzdGF0ZnNfcmV0KCk7CisgICAgcmV0dXJuIDA7CisKKyAgICBvdXRfZXJybm86CisgICAgdHJh
Y2VfdmZzX2ZzdGF0ZnNfZXJyKGVycm9yKTsKKyAgICBlcnJubyA9IGVycm9yOworICAgIHJldHVy
biAtMTsKK30KK3dlYWtfYWxpYXMoX19mc3RhdGZzLCBmc3RhdGZzKTsKKworTEZTNjQoZnN0YXRm
cyk7CisKK3N0YXRpYyBpbnQKK3N0YXRmc190b19zdGF0dmZzKHN0cnVjdCBzdGF0dmZzICpkc3Qs
IHN0cnVjdCBzdGF0ZnMgKnNyYykKK3sKKyAgICBkc3QtPmZfYnNpemUgPSBzcmMtPmZfYnNpemU7
CisgICAgZHN0LT5mX2Zyc2l6ZSA9IHNyYy0+Zl9ic2l6ZTsKKyAgICBkc3QtPmZfYmxvY2tzID0g
c3JjLT5mX2Jsb2NrczsKKyAgICBkc3QtPmZfYmZyZWUgPSBzcmMtPmZfYmZyZWU7CisgICAgZHN0
LT5mX2JhdmFpbCA9IHNyYy0+Zl9iYXZhaWw7CisgICAgZHN0LT5mX2ZpbGVzID0gc3JjLT5mX2Zp
bGVzOworICAgIGRzdC0+Zl9mZnJlZSA9IHNyYy0+Zl9mZnJlZTsKKyAgICBkc3QtPmZfZmF2YWls
ID0gMDsKKyAgICBkc3QtPmZfZnNpZCA9IHNyYy0+Zl9mc2lkLl9fdmFsWzBdOworICAgIGRzdC0+
Zl9mbGFnID0gc3JjLT5mX2ZsYWdzOworICAgIGRzdC0+Zl9uYW1lbWF4ID0gc3JjLT5mX25hbWVs
ZW47CisgICAgcmV0dXJuIDA7Cit9CisKK2ludAorc3RhdHZmcyhjb25zdCBjaGFyICpwYXRobmFt
ZSwgc3RydWN0IHN0YXR2ZnMgKmJ1ZikKK3sKKyAgICBzdHJ1Y3Qgc3RhdGZzIHN0OworCisgICAg
aWYgKF9fc3RhdGZzKHBhdGhuYW1lLCAmc3QpIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworICAg
IHJldHVybiBzdGF0ZnNfdG9fc3RhdHZmcyhidWYsICZzdCk7Cit9CisKK0xGUzY0KHN0YXR2ZnMp
OworCitpbnQKK2ZzdGF0dmZzKGludCBmZCwgc3RydWN0IHN0YXR2ZnMgKmJ1ZikKK3sKKyAgICBz
dHJ1Y3Qgc3RhdGZzIHN0OworCisgICAgaWYgKF9fZnN0YXRmcyhmZCwgJnN0KSA8IDApCisgICAg
ICAgIHJldHVybiAtMTsKKyAgICByZXR1cm4gc3RhdGZzX3RvX3N0YXR2ZnMoYnVmLCAmc3QpOwor
fQorCitMRlM2NChmc3RhdHZmcyk7CisKKworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZ2V0Y3dkLCAi
JXAgJWQiLCBjaGFyKiwgc2l6ZV90KTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX2dldGN3ZF9yZXQs
ICJcIiVzXCIiLCBjb25zdCBjaGFyKik7CitUUkFDRVBPSU5UKHRyYWNlX3Zmc19nZXRjd2RfZXJy
LCAiJWQiLCBpbnQpOworCitjaGFyICpnZXRjd2QoY2hhciAqcGF0aCwgc2l6ZV90IHNpemUpCit7
CisgICAgdHJhY2VfdmZzX2dldGN3ZChwYXRoLCBzaXplKTsKKyAgICBzdHJ1Y3QgdGFzayAqdCA9
IG1haW5fdGFzazsKKyAgICBpbnQgbGVuID0gc3RybGVuKHQtPnRfY3dkKSArIDE7CisgICAgaW50
IGVycm9yOworCisgICAgaWYgKCFwYXRoKSB7CisgICAgICAgIGlmICghc2l6ZSkKKyAgICAgICAg
ICAgIHNpemUgPSBsZW47CisgICAgICAgIHBhdGggPSAoY2hhciopbWFsbG9jKHNpemUpOworICAg
ICAgICBpZiAoIXBhdGgpIHsKKyAgICAgICAgICAgIGVycm9yID0gRU5PTUVNOworICAgICAgICAg
ICAgZ290byBvdXRfZXJybm87CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAo
IXNpemUpIHsKKyAgICAgICAgICAgIGVycm9yID0gRUlOVkFMOworICAgICAgICAgICAgZ290byBv
dXRfZXJybm87CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoc2l6ZSA8IGxlbikgeworICAg
ICAgICBlcnJvciA9IEVSQU5HRTsKKyAgICAgICAgZ290byBvdXRfZXJybm87CisgICAgfQorCisg
ICAgbWVtY3B5KHBhdGgsIHQtPnRfY3dkLCBsZW4pOworICAgIHRyYWNlX3Zmc19nZXRjd2RfcmV0
KHBhdGgpOworICAgIHJldHVybiBwYXRoOworCisgICAgb3V0X2Vycm5vOgorICAgIHRyYWNlX3Zm
c19nZXRjd2RfZXJyKGVycm9yKTsKKyAgICBlcnJubyA9IGVycm9yOworICAgIHJldHVybiBudWxs
cHRyOworfQorCitUUkFDRVBPSU5UKHRyYWNlX3Zmc19kdXAsICIlZCIsIGludCk7CitUUkFDRVBP
SU5UKHRyYWNlX3Zmc19kdXBfcmV0LCAiXCIlc1wiIiwgaW50KTsKK1RSQUNFUE9JTlQodHJhY2Vf
dmZzX2R1cF9lcnIsICIlZCIsIGludCk7CisvKgorICogRHVwbGljYXRlIGEgZmlsZSBkZXNjcmlw
dG9yCisgKi8KK2ludCBkdXAoaW50IG9sZGZkKQoreworICAgIHN0cnVjdCBmaWxlICpmcDsKKyAg
ICBpbnQgbmV3ZmQ7CisgICAgaW50IGVycm9yOworCisgICAgdHJhY2VfdmZzX2R1cChvbGRmZCk7
CisgICAgZXJyb3IgPSBmZ2V0KG9sZGZkLCAmZnApOworICAgIGlmIChlcnJvcikKKyAgICAgICAg
Z290byBvdXRfZXJybm87CisKKyAgICBlcnJvciA9IGZkYWxsb2MoZnAsICZuZXdmZCk7CisgICAg
aWYgKGVycm9yKQorICAgICAgICBnb3RvIG91dF9mZHJvcDsKKworICAgIGZkcm9wKGZwKTsKKyAg
ICB0cmFjZV92ZnNfZHVwX3JldChuZXdmZCk7CisgICAgcmV0dXJuIG5ld2ZkOworCisgICAgb3V0
X2Zkcm9wOgorICAgIGZkcm9wKGZwKTsKKyAgICBvdXRfZXJybm86CisgICAgdHJhY2VfdmZzX2R1
cF9lcnIoZXJyb3IpOworICAgIGVycm5vID0gZXJyb3I7CisgICAgcmV0dXJuIC0xOworfQorCitU
UkFDRVBPSU5UKHRyYWNlX3Zmc19kdXAzLCAiJWQgJWQgMHgleCIsIGludCwgaW50LCBpbnQpOwor
VFJBQ0VQT0lOVCh0cmFjZV92ZnNfZHVwM19yZXQsICIlZCIsIGludCk7CitUUkFDRVBPSU5UKHRy
YWNlX3Zmc19kdXAzX2VyciwgIiVkIiwgaW50KTsKKy8qCisgKiBEdXBsaWNhdGUgYSBmaWxlIGRl
c2NyaXB0b3IgdG8gYSBwYXJ0aWN1bGFyIHZhbHVlLgorICovCitpbnQgZHVwMyhpbnQgb2xkZmQs
IGludCBuZXdmZCwgaW50IGZsYWdzKQoreworICAgIHN0cnVjdCBmaWxlICpmcDsKKyAgICBpbnQg
ZXJyb3I7CisKKyAgICB0cmFjZV92ZnNfZHVwMyhvbGRmZCwgbmV3ZmQsIGZsYWdzKTsKKyAgICAv
KgorICAgICAqIERvbid0IGFsbG93IGFueSBhcmd1bWVudCBidXQgT19DTE9FWEVDLiAgQnV0IHdl
IGV2ZW4gaWdub3JlCisgICAgICogdGhhdCBhcyB3ZSBkb24ndCBzdXBwb3J0IGV4ZWMoKSBhbmQg
dGh1cyBkb24ndCBjYXJlLgorICAgICAqLworICAgIGlmICgoZmxhZ3MgJiB+T19DTE9FWEVDKSAh
PSAwKSB7CisgICAgICAgIGVycm9yID0gRUlOVkFMOworICAgICAgICBnb3RvIG91dF9lcnJubzsK
KyAgICB9CisKKyAgICBpZiAob2xkZmQgPT0gbmV3ZmQpIHsKKyAgICAgICAgZXJyb3IgPSBFSU5W
QUw7CisgICAgICAgIGdvdG8gb3V0X2Vycm5vOworICAgIH0KKworICAgIGVycm9yID0gZmdldChv
bGRmZCwgJmZwKTsKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIGdvdG8gb3V0X2Vycm5vOworCisg
ICAgZXJyb3IgPSBmZHNldChuZXdmZCwgZnApOworICAgIGlmIChlcnJvcikgeworICAgICAgICBm
ZHJvcChmcCk7CisgICAgICAgIGdvdG8gb3V0X2Vycm5vOworICAgIH0KKworICAgIGZkcm9wKGZw
KTsKKyAgICB0cmFjZV92ZnNfZHVwM19yZXQobmV3ZmQpOworICAgIHJldHVybiBuZXdmZDsKKwor
ICAgIG91dF9lcnJubzoKKyAgICB0cmFjZV92ZnNfZHVwM19lcnIoZXJyb3IpOworICAgIGVycm5v
ID0gZXJyb3I7CisgICAgcmV0dXJuIC0xOworfQorCitpbnQgZHVwMihpbnQgb2xkZmQsIGludCBu
ZXdmZCkKK3sKKyAgICBpZiAob2xkZmQgPT0gbmV3ZmQpCisgICAgICAgIHJldHVybiBuZXdmZDsK
KworICAgIHJldHVybiBkdXAzKG9sZGZkLCBuZXdmZCwgMCk7Cit9CisKKy8qCisgKiBUaGUgZmls
ZSBjb250cm9sIHN5c3RlbSBjYWxsLgorICovCisjZGVmaW5lIFNFVEZMIChPX0FQUEVORCB8IE9f
QVNZTkMgfCBPX0RJUkVDVCB8IE9fTk9BVElNRSB8IE9fTk9OQkxPQ0spCisKK1RSQUNFUE9JTlQo
dHJhY2VfdmZzX2ZjbnRsLCAiJWQgJWQgMHgleCIsIGludCwgaW50LCBpbnQpOworVFJBQ0VQT0lO
VCh0cmFjZV92ZnNfZmNudGxfcmV0LCAiXCIlc1wiIiwgaW50KTsKK1RSQUNFUE9JTlQodHJhY2Vf
dmZzX2ZjbnRsX2VyciwgIiVkIiwgaW50KTsKKworZXh0ZXJuICJDIgoraW50IGZjbnRsKGludCBm
ZCwgaW50IGNtZCwgaW50IGFyZykKK3sKKyAgICBzdHJ1Y3QgZmlsZSAqZnA7CisgICAgaW50IHJl
dCA9IDAsIGVycm9yOworICAgIGludCB0bXA7CisKKyAgICB0cmFjZV92ZnNfZmNudGwoZmQsIGNt
ZCwgYXJnKTsKKyAgICBlcnJvciA9IGZnZXQoZmQsICZmcCk7CisgICAgaWYgKGVycm9yKQorICAg
ICAgICBnb3RvIG91dF9lcnJubzsKKworICAgIC8vIEFuIGltcG9ydGFudCBub3RlIGFib3V0IG91
ciBoYW5kbGluZyBvZiBGRF9DTE9FWEVDIC8gT19DTE9FWEVDOgorICAgIC8vIGNsb3NlLW9uLWV4
ZWMgc2hvdWxkbid0IGhhdmUgYmVlbiBhIGZpbGUgZmxhZyAoZnAtPmZfZmxhZ3MpIC0gaXQgaXMg
YQorICAgIC8vIGZpbGUgZGVzY3JpcHRvciBmbGFnLCBtZWFuaW5nIHRoYXQgdGhhdCB0d28gZHVw
KCllZCBmaWxlIGRlc2NyaXB0b3JzCisgICAgLy8gY291bGQgaGF2ZSBkaWZmZXJlbnQgdmFsdWVz
IGZvciBGRF9DTE9FWEVDLiBPdXIgY3VycmVudCBpbXBsZW1lbnRhdGlvbgorICAgIC8vICp3cm9u
Z2x5KiBtYWtlcyBjbG9zZS1vbi1leGVjIGFuIGZfZmxhZyAodXNpbmcgdGhlIGJpdCBPX0NMT0VY
RUMpLgorICAgIC8vIFRoZXJlIGlzIGxpdHRsZSBwcmFjdGljYWwgZGlmZmVyZW5jZSwgdGhvdWdo
LCBiZWNhdXNlIHRoaXMgZmxhZyBpcworICAgIC8vIGlnbm9yZWQgaW4gT1N2IGFueXdheSwgYXMg
aXQgZG9lc24ndCBzdXBwb3J0IGV4ZWMoKS4KKyAgICBzd2l0Y2ggKGNtZCkgeworICAgIGNhc2Ug
Rl9EVVBGRDoKKyAgICAgICAgZXJyb3IgPSBfZmRhbGxvYyhmcCwgJnJldCwgYXJnKTsKKyAgICAg
ICAgaWYgKGVycm9yKQorICAgICAgICAgICAgZ290byBvdXRfZXJybm87CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgRl9HRVRGRDoKKyAgICAgICAgcmV0ID0gKGZwLT5mX2ZsYWdzICYgT19DTE9F
WEVDKSA/IEZEX0NMT0VYRUMgOiAwOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZfU0VURkQ6
CisgICAgICAgIEZEX0xPQ0soZnApOworICAgICAgICBmcC0+Zl9mbGFncyA9IChmcC0+Zl9mbGFn
cyAmIH5PX0NMT0VYRUMpIHwKKyAgICAgICAgICAgICAgICAoKGFyZyAmIEZEX0NMT0VYRUMpID8g
T19DTE9FWEVDIDogMCk7CisgICAgICAgIEZEX1VOTE9DSyhmcCk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgRl9HRVRGTDoKKyAgICAgICAgLy8gQXMgZXhwbGFpbmVkIGFib3ZlLCB0aGUgT19D
TE9FWEVDIHNob3VsZCBoYXZlIGJlZW4gaW4gZl9mbGFncywKKyAgICAgICAgLy8gYW5kIHNob3Vs
ZG4ndCBiZSByZXR1cm5lZC4gTGludXggYWx3YXlzIHJldHVybnMgMDEwMDAwMCAoInRoZQorICAg
ICAgICAvLyBmbGFnIGZvcm1lcmx5IGtub3duIGFzIE9fTEFSR0VGSUxFKSBzbyBsZXQncyBkbyBp
dCB0b28uCisgICAgICAgIHJldCA9IChvZmxhZ3MoZnAtPmZfZmxhZ3MpICYgfk9fQ0xPRVhFQykg
fCAwMTAwMDAwOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZfU0VURkw6CisgICAgICAgIEZE
X0xPQ0soZnApOworICAgICAgICBmcC0+Zl9mbGFncyA9IGZmbGFncygob2ZsYWdzKGZwLT5mX2Zs
YWdzKSAmIH5TRVRGTCkgfAorICAgICAgICAgICAgICAgIChhcmcgJiBTRVRGTCkpOworICAgICAg
ICBGRF9VTkxPQ0soZnApOworCisgICAgICAgIC8qIFN5bmMgbm9uYmxvY2tpbmcvYXN5bmMgc3Rh
dGUgd2l0aCBmaWxlIGZsYWdzICovCisgICAgICAgIHRtcCA9IGZwLT5mX2ZsYWdzICYgRk5PTkJM
T0NLOworICAgICAgICBmcC0+aW9jdGwoRklPTkJJTywgJnRtcCk7CisgICAgICAgIHRtcCA9IGZw
LT5mX2ZsYWdzICYgRkFTWU5DOworICAgICAgICBmcC0+aW9jdGwoRklPQVNZTkMsICZ0bXApOwor
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRl9TRVRMSzoKKyAgICAgICAgV0FSTl9PTkNFKCJm
Y250bChGX1NFVExLKSBzdHViYmVkXG4iKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGX0dF
VExLOgorICAgICAgICBXQVJOX09OQ0UoImZjbnRsKEZfR0VUTEspIHN0dWJiZWRcbiIpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEZfU0VUTEtXOgorICAgICAgICBXQVJOX09OQ0UoImZjbnRs
KEZfU0VUTEtXKSBzdHViYmVkXG4iKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGX1NFVE9X
TjoKKyAgICAgICAgV0FSTl9PTkNFKCJmY250bChGX1NFVE9XTikgc3R1YmJlZFxuIik7CisgICAg
ICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGtwcmludGYoInVuc3VwcG9ydGVkIGZj
bnRsIGNtZCAweCV4XG4iLCBjbWQpOworICAgICAgICBlcnJvciA9IEVJTlZBTDsKKyAgICB9CisK
KyAgICBmZHJvcChmcCk7CisgICAgaWYgKGVycm9yKQorICAgICAgICBnb3RvIG91dF9lcnJubzsK
KyAgICB0cmFjZV92ZnNfZmNudGxfcmV0KHJldCk7CisgICAgcmV0dXJuIHJldDsKKworICAgIG91
dF9lcnJubzoKKyAgICB0cmFjZV92ZnNfZmNudGxfZXJyKGVycm9yKTsKKyAgICBlcnJubyA9IGVy
cm9yOworICAgIHJldHVybiAtMTsKK30KKworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfYWNjZXNzLCAi
XCIlc1wiIDAlMG8iLCBjb25zdCBjaGFyKiwgaW50KTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX2Fj
Y2Vzc19yZXQsICIiKTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX2FjY2Vzc19lcnIsICIlZCIsIGlu
dCk7CisKKy8qCisgKiBDaGVjayBwZXJtaXNzaW9uIGZvciBmaWxlIGFjY2VzcworICovCitpbnQg
YWNjZXNzKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBpbnQgbW9kZSkKK3sKKyAgICB0cmFjZV92ZnNf
YWNjZXNzKHBhdGhuYW1lLCBtb2RlKTsKKyAgICBzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsK
KyAgICBjaGFyIHBhdGhbUEFUSF9NQVhdOworICAgIGludCBhY2MsIGVycm9yID0gMDsKKworICAg
IGFjYyA9IDA7CisgICAgaWYgKG1vZGUgJiBSX09LKQorICAgICAgICBhY2MgfD0gVlJFQUQ7Cisg
ICAgaWYgKG1vZGUgJiBXX09LKQorICAgICAgICBhY2MgfD0gVldSSVRFOworCisgICAgaWYgKChl
cnJvciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwgYWNjLCBwYXRoKSkgIT0gMCkKKyAgICAgICAg
Z290byBvdXRfZXJybm87CisKKyAgICBlcnJvciA9IHN5c19hY2Nlc3MocGF0aCwgbW9kZSk7Cisg
ICAgaWYgKGVycm9yKQorICAgICAgICBnb3RvIG91dF9lcnJubzsKKyAgICB0cmFjZV92ZnNfYWNj
ZXNzX3JldCgpOworICAgIHJldHVybiAwOworICAgIG91dF9lcnJubzoKKyAgICBlcnJubyA9IGVy
cm9yOworICAgIHRyYWNlX3Zmc19hY2Nlc3NfZXJyKGVycm9yKTsKKyAgICByZXR1cm4gLTE7Cit9
CisKK2ludCBmYWNjZXNzYXQoaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwgaW50IG1v
ZGUsIGludCBmbGFncykKK3sKKyAgICBpZiAoZmxhZ3MgJiBBVF9TWU1MSU5LX05PRk9MTE9XKSB7
CisgICAgICAgIFVOSU1QTEVNRU5URUQoImZhY2Nlc3NhdCgpIHdpdGggQVRfU1lNTElOS19OT0ZP
TExPVyIpOworICAgIH0KKworICAgIGlmIChwYXRobmFtZVswXSA9PSAnLycgfHwgZGlyZmQgPT0g
QVRfRkRDV0QpIHsKKyAgICAgICAgcmV0dXJuIGFjY2VzcyhwYXRobmFtZSwgbW9kZSk7CisgICAg
fQorCisgICAgc3RydWN0IGZpbGUgKmZwOworICAgIGludCBlcnJvciA9IGZnZXQoZGlyZmQsICZm
cCk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIGVycm5vID0gZXJyb3I7CisgICAgICAgIHJl
dHVybiAtMTsKKyAgICB9CisKKyAgICBzdHJ1Y3Qgdm5vZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5k
X3Zub2RlOworICAgIHZuX2xvY2sodnApOworCisgICAgc3RkOjp1bmlxdWVfcHRyPGNoYXIgW10+
IHVwIChuZXcgY2hhcltQQVRIX01BWF0pOworICAgIGNoYXIgKnAgPSB1cC5nZXQoKTsKKworICAg
IC8qIGJ1aWxkIGFic29sdXRlIHBhdGggKi8KKyAgICBzdHJsY3B5KHAsIGZwLT5mX2RlbnRyeS0+
ZF9tb3VudC0+bV9wYXRoLCBQQVRIX01BWCk7CisgICAgc3RybGNhdChwLCBmcC0+Zl9kZW50cnkt
PmRfcGF0aCwgUEFUSF9NQVgpOworICAgIHN0cmxjYXQocCwgIi8iLCBQQVRIX01BWCk7CisgICAg
c3RybGNhdChwLCBwYXRobmFtZSwgUEFUSF9NQVgpOworCisgICAgZXJyb3IgPSBhY2Nlc3MocCwg
bW9kZSk7CisKKyAgICB2bl91bmxvY2sodnApOworICAgIGZkcm9wKGZwKTsKKworICAgIHJldHVy
biBlcnJvcjsKK30KKworZXh0ZXJuICJDIiAKK2ludCBldWlkYWNjZXNzKGNvbnN0IGNoYXIgKnBh
dGhuYW1lLCBpbnQgbW9kZSkKK3sKKyAgICByZXR1cm4gYWNjZXNzKHBhdGhuYW1lLCBtb2RlKTsK
K30KKword2Vha19hbGlhcyhldWlkYWNjZXNzLGVhY2Nlc3MpOworCisjaWYgMAorc3RhdGljIGlu
dAorZnNfcGlwZShzdHJ1Y3QgdGFzayAqdCwgc3RydWN0IG1zZyAqbXNnKQoreworI2lmZGVmIENP
TkZJR19GSUZPRlMKKyAgICBjaGFyIHBhdGhbUEFUSF9NQVhdOworICAgIGZpbGVfdCByZnAsIHdm
cDsKKyAgICBpbnQgZXJyb3IsIHJmZCwgd2ZkOworCisgICAgRFBSSU5URihWRlNEQl9DT1JFLCAo
ImZzX3BpcGVcbiIpKTsKKworICAgIGlmICgocmZkID0gdGFza19uZXdmZCh0KSkgPT0gLTEpCisg
ICAgICAgIHJldHVybiBFTUZJTEU7CisgICAgdC0+dF9vZmlsZVtyZmRdID0gKGZpbGVfdCkxOyAv
KiB0ZW1wICovCisKKyAgICBpZiAoKHdmZCA9IHRhc2tfbmV3ZmQodCkpID09IC0xKSB7CisgICAg
ICAgIHQtPnRfb2ZpbGVbcmZkXSA9IG51bGxwdHI7CisgICAgICAgIHJldHVybiBFTUZJTEU7Cisg
ICAgfQorICAgIHNwcmludGYocGF0aCwgIi9tbnQvZmlmby9waXBlLSV4LSVkIiwgKHVfaW50KXQt
PnRfdGFza2lkLCByZmQpOworCisgICAgaWYgKChlcnJvciA9IHN5c19ta25vZChwYXRoLCBTX0lG
SUZPKSkgIT0gMCkKKyAgICAgICAgZ290byBvdXQ7CisgICAgaWYgKChlcnJvciA9IHN5c19vcGVu
KHBhdGgsIE9fUkRPTkxZIHwgT19OT05CTE9DSywgMCwgJnJmcCkpICE9IDApIHsKKyAgICAgICAg
Z290byBvdXQ7CisgICAgfQorICAgIGlmICgoZXJyb3IgPSBzeXNfb3BlbihwYXRoLCBPX1dST05M
WSB8IE9fTk9OQkxPQ0ssIDAsICZ3ZnApKSAhPSAwKSB7CisgICAgICAgIGdvdG8gb3V0OworICAg
IH0KKyAgICB0LT50X29maWxlW3JmZF0gPSByZnA7CisgICAgdC0+dF9vZmlsZVt3ZmRdID0gd2Zw
OworICAgIHQtPnRfbm9wZW5zICs9IDI7CisgICAgbXNnLT5kYXRhWzBdID0gcmZkOworICAgIG1z
Zy0+ZGF0YVsxXSA9IHdmZDsKKyAgICByZXR1cm4gMDsKKyAgICBvdXQ6CisgICAgdC0+dF9vZmls
ZVtyZmRdID0gbnVsbHB0cjsKKyAgICB0LT50X29maWxlW3dmZF0gPSBudWxscHRyOworICAgIHJl
dHVybiBlcnJvcjsKKyNlbHNlCisgICAgcmV0dXJuIEVOT1NZUzsKKyNlbmRpZgorfQorI2VuZGlm
CisKK1RSQUNFUE9JTlQodHJhY2VfdmZzX2lzYXR0eSwgIiVkIiwgaW50KTsKK1RSQUNFUE9JTlQo
dHJhY2VfdmZzX2lzYXR0eV9yZXQsICIlZCIsIGludCk7CitUUkFDRVBPSU5UKHRyYWNlX3Zmc19p
c2F0dHlfZXJyLCAiJWQiLCBpbnQpOworCisvKgorICogUmV0dXJuIGlmIHNwZWNpZmllZCBmaWxl
IGlzIGEgdHR5CisgKi8KK2ludCBpc2F0dHkoaW50IGZkKQoreworICAgIHN0cnVjdCBmaWxlICpm
cDsKKyAgICBpbnQgaXN0dHkgPSAwOworCisgICAgdHJhY2VfdmZzX2lzYXR0eShmZCk7CisgICAg
ZmlsZXJlZiBmKGZpbGVyZWZfZnJvbV9mZChmZCkpOworICAgIGlmICghZikgeworICAgICAgICBl
cnJubyA9IEVCQURGOworICAgICAgICB0cmFjZV92ZnNfaXNhdHR5X2VycihlcnJubyk7CisgICAg
ICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBmcCA9IGYuZ2V0KCk7CisgICAgaWYgKGR5bmFt
aWNfY2FzdDx0dHlfZmlsZSo+KGZwKSB8fAorICAgICAgICAoZnAtPmZfZGVudHJ5ICYmIGZwLT5m
X2RlbnRyeS0+ZF92bm9kZS0+dl9mbGFncyAmIFZJU1RUWSkpIHsKKyAgICAgICAgaXN0dHkgPSAx
OworICAgIH0KKworICAgIHRyYWNlX3Zmc19pc2F0dHlfcmV0KGlzdHR5KTsKKyAgICByZXR1cm4g
aXN0dHk7Cit9CisKK1RSQUNFUE9JTlQodHJhY2VfdmZzX3RydW5jYXRlLCAiXCIlc1wiIDB4JXgi
LCBjb25zdCBjaGFyKiwgb2ZmX3QpOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfdHJ1bmNhdGVfcmV0
LCAiIik7CitUUkFDRVBPSU5UKHRyYWNlX3Zmc190cnVuY2F0ZV9lcnIsICIlZCIsIGludCk7CisK
K2ludCB0cnVuY2F0ZShjb25zdCBjaGFyICpwYXRobmFtZSwgb2ZmX3QgbGVuZ3RoKQoreworICAg
IHRyYWNlX3Zmc190cnVuY2F0ZShwYXRobmFtZSwgbGVuZ3RoKTsKKyAgICBzdHJ1Y3QgdGFzayAq
dCA9IG1haW5fdGFzazsKKyAgICBjaGFyIHBhdGhbUEFUSF9NQVhdOworICAgIGludCBlcnJvcjsK
KworICAgIGVycm9yID0gRU5PRU5UOworICAgIGlmIChwYXRobmFtZSA9PSBudWxscHRyKQorICAg
ICAgICBnb3RvIG91dF9lcnJubzsKKyAgICBpZiAoKGVycm9yID0gdGFza19jb252KHQsIHBhdGhu
YW1lLCBWV1JJVEUsIHBhdGgpKSAhPSAwKQorICAgICAgICBnb3RvIG91dF9lcnJubzsKKworICAg
IGVycm9yID0gc3lzX3RydW5jYXRlKHBhdGgsIGxlbmd0aCk7CisgICAgaWYgKGVycm9yKQorICAg
ICAgICBnb3RvIG91dF9lcnJubzsKKyAgICB0cmFjZV92ZnNfdHJ1bmNhdGVfcmV0KCk7CisgICAg
cmV0dXJuIDA7CisgICAgb3V0X2Vycm5vOgorICAgIGVycm5vID0gZXJyb3I7CisgICAgdHJhY2Vf
dmZzX3RydW5jYXRlX2VycihlcnJvcik7CisgICAgcmV0dXJuIC0xOworfQorCitMRlM2NCh0cnVu
Y2F0ZSk7CisKK1RSQUNFUE9JTlQodHJhY2VfdmZzX2Z0cnVuY2F0ZSwgIiVkIDB4JXgiLCBpbnQs
IG9mZl90KTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX2Z0cnVuY2F0ZV9yZXQsICIiKTsKK1RSQUNF
UE9JTlQodHJhY2VfdmZzX2Z0cnVuY2F0ZV9lcnIsICIlZCIsIGludCk7CisKK2ludCBmdHJ1bmNh
dGUoaW50IGZkLCBvZmZfdCBsZW5ndGgpCit7CisgICAgdHJhY2VfdmZzX2Z0cnVuY2F0ZShmZCwg
bGVuZ3RoKTsKKyAgICBzdHJ1Y3QgZmlsZSAqZnA7CisgICAgaW50IGVycm9yOworCisgICAgZXJy
b3IgPSBmZ2V0KGZkLCAmZnApOworICAgIGlmIChlcnJvcikKKyAgICAgICAgZ290byBvdXRfZXJy
bm87CisKKyAgICBlcnJvciA9IHN5c19mdHJ1bmNhdGUoZnAsIGxlbmd0aCk7CisgICAgZmRyb3Ao
ZnApOworCisgICAgaWYgKGVycm9yKQorICAgICAgICBnb3RvIG91dF9lcnJubzsKKyAgICB0cmFj
ZV92ZnNfZnRydW5jYXRlX3JldCgpOworICAgIHJldHVybiAwOworCisgICAgb3V0X2Vycm5vOgor
ICAgIGVycm5vID0gZXJyb3I7CisgICAgdHJhY2VfdmZzX2Z0cnVuY2F0ZV9lcnIoZXJyb3IpOwor
ICAgIHJldHVybiAtMTsKK30KKworTEZTNjQoZnRydW5jYXRlKTsKKworc3NpemVfdCByZWFkbGlu
ayhjb25zdCBjaGFyICpwYXRobmFtZSwgY2hhciAqYnVmLCBzaXplX3QgYnVmc2l6ZSkKK3sKKyAg
ICBzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKKyAgICBjaGFyIHBhdGhbUEFUSF9NQVhdOwor
ICAgIGludCBlcnJvcjsKKyAgICBzc2l6ZV90IHNpemU7CisKKyAgICBlcnJvciA9IC1FSU5WQUw7
CisgICAgaWYgKGJ1ZnNpemUgPD0gMCkKKyAgICAgICAgZ290byBvdXRfZXJybm87CisKKyAgICBl
cnJvciA9IEVOT0VOVDsKKyAgICBpZiAocGF0aG5hbWUgPT0gbnVsbHB0cikKKyAgICAgICAgZ290
byBvdXRfZXJybm87CisgICAgZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5hbWUsIFZXUklURSwg
cGF0aCk7CisgICAgaWYgKGVycm9yKQorICAgICAgICBnb3RvIG91dF9lcnJubzsKKworICAgIHNp
emUgID0gMDsKKyAgICBlcnJvciA9IHN5c19yZWFkbGluayhwYXRoLCBidWYsIGJ1ZnNpemUsICZz
aXplKTsKKworICAgIGlmIChlcnJvciAhPSAwKQorICAgICAgICBnb3RvIG91dF9lcnJubzsKKwor
ICAgIHJldHVybiBzaXplOworICAgIG91dF9lcnJubzoKKyAgICBlcnJubyA9IGVycm9yOworICAg
IHJldHVybiAtMTsKK30KKworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZmFsbG9jYXRlLCAiJWQgJWQg
MHgleCAweCV4IiwgaW50LCBpbnQsIGxvZmZfdCwgbG9mZl90KTsKK1RSQUNFUE9JTlQodHJhY2Vf
dmZzX2ZhbGxvY2F0ZV9yZXQsICIiKTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX2ZhbGxvY2F0ZV9l
cnIsICIlZCIsIGludCk7CisKK2ludCBmYWxsb2NhdGUoaW50IGZkLCBpbnQgbW9kZSwgbG9mZl90
IG9mZnNldCwgbG9mZl90IGxlbikKK3sKKyAgICBzdHJ1Y3QgZmlsZSAqZnA7CisgICAgaW50IGVy
cm9yOworCisgICAgdHJhY2VfdmZzX2ZhbGxvY2F0ZShmZCwgbW9kZSwgb2Zmc2V0LCBsZW4pOwor
ICAgIGVycm9yID0gZmdldChmZCwgJmZwKTsKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIGdvdG8g
b3V0X2Vycm5vOworCisgICAgZXJyb3IgPSBzeXNfZmFsbG9jYXRlKGZwLCBtb2RlLCBvZmZzZXQs
IGxlbik7CisgICAgZmRyb3AoZnApOworCisgICAgaWYgKGVycm9yKQorICAgICAgICBnb3RvIG91
dF9lcnJubzsKKyAgICB0cmFjZV92ZnNfZmFsbG9jYXRlX3JldCgpOworICAgIHJldHVybiAwOwor
CisgICAgb3V0X2Vycm5vOgorICAgIHRyYWNlX3Zmc19mYWxsb2NhdGVfZXJyKGVycm9yKTsKKyAg
ICBlcnJubyA9IGVycm9yOworICAgIHJldHVybiAtMTsKK30KKworTEZTNjQoZmFsbG9jYXRlKTsK
KworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfdXRpbWVzLCAiXCIlc1wiIiwgY29uc3QgY2hhciopOwor
VFJBQ0VQT0lOVCh0cmFjZV92ZnNfdXRpbWVzX3JldCwgIiIpOworVFJBQ0VQT0lOVCh0cmFjZV92
ZnNfdXRpbWVzX2VyciwgIiVkIiwgaW50KTsKKworaW50IGZ1dGltZXMoaW50IGZkLCBjb25zdCBz
dHJ1Y3QgdGltZXZhbCB0aW1lc1syXSkKK3sKKyAgICByZXR1cm4gZnV0aW1lc2F0KGZkLCBudWxs
cHRyLCB0aW1lcyk7Cit9CisKK2ludCBmdXRpbWVzYXQoaW50IGRpcmZkLCBjb25zdCBjaGFyICpw
YXRobmFtZSwgY29uc3Qgc3RydWN0IHRpbWV2YWwgdGltZXNbMl0pCit7CisgICAgc3RydWN0IHN0
YXQgc3Q7CisgICAgc3RydWN0IGZpbGUgKmZwOworICAgIGludCBlcnJvcjsKKyAgICBjaGFyICph
YnNvbHV0ZV9wYXRoOworCisgICAgaWYgKChwYXRobmFtZSAmJiBwYXRobmFtZVswXSA9PSAnLycp
IHx8IGRpcmZkID09IEFUX0ZEQ1dEKQorICAgICAgICByZXR1cm4gdXRpbWVzKHBhdGhuYW1lLCB0
aW1lcyk7CisKKyAgICAvLyBOb3RlOiBpZiBwYXRobmFtZSA9PSBudWxscHRyLCBmdXRpbWVzYXQg
b3BlcmF0ZXMgb24gZGlyZmQgaXRzZWxmLCBhbmQgaW4KKyAgICAvLyB0aGF0IGNhc2UgaXQgZG9l
c24ndCBoYXZlIHRvIGJlIGEgZGlyZWN0b3J5LgorICAgIGlmIChwYXRobmFtZSkgeworICAgICAg
ICBlcnJvciA9IGZzdGF0KGRpcmZkLCAmc3QpOworICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAg
ICAgICAgIGVycm9yID0gZXJybm87CisgICAgICAgICAgICBnb3RvIG91dF9lcnJubzsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmICghU19JU0RJUihzdC5zdF9tb2RlKSl7CisgICAgICAgICAgICBl
cnJvciA9IEVOT1RESVI7CisgICAgICAgICAgICBnb3RvIG91dF9lcnJubzsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGVycm9yID0gZmdldChkaXJmZCwgJmZwKTsKKyAgICBpZiAoZXJyb3IpCisg
ICAgICAgIGdvdG8gb3V0X2Vycm5vOworCisgICAgLyogYnVpbGQgYWJzb2x1dGUgcGF0aCAqLwor
ICAgIGFic29sdXRlX3BhdGggPSAoY2hhciopbWFsbG9jKFBBVEhfTUFYKTsKKyAgICBzdHJsY3B5
KGFic29sdXRlX3BhdGgsIGZwLT5mX2RlbnRyeS0+ZF9tb3VudC0+bV9wYXRoLCBQQVRIX01BWCk7
CisgICAgc3RybGNhdChhYnNvbHV0ZV9wYXRoLCBmcC0+Zl9kZW50cnktPmRfcGF0aCwgUEFUSF9N
QVgpOworCisgICAgaWYgKHBhdGhuYW1lKSB7CisgICAgICAgIHN0cmxjYXQoYWJzb2x1dGVfcGF0
aCwgIi8iLCBQQVRIX01BWCk7CisgICAgICAgIHN0cmxjYXQoYWJzb2x1dGVfcGF0aCwgcGF0aG5h
bWUsIFBBVEhfTUFYKTsKKyAgICB9CisKKyAgICBlcnJvciA9IHV0aW1lcyhhYnNvbHV0ZV9wYXRo
LCB0aW1lcyk7CisgICAgZnJlZShhYnNvbHV0ZV9wYXRoKTsKKworICAgIGZkcm9wKGZwKTsKKwor
ICAgIGlmIChlcnJvcikKKyAgICAgICAgZ290byBvdXRfZXJybm87CisgICAgcmV0dXJuIDA7CisK
KyAgICBvdXRfZXJybm86CisgICAgZXJybm8gPSBlcnJvcjsKKyAgICByZXR1cm4gLTE7Cit9CisK
K1RSQUNFUE9JTlQodHJhY2VfdmZzX3V0aW1lbnNhdCwgIlwiJXNcIiIsIGNvbnN0IGNoYXIqKTsK
K1RSQUNFUE9JTlQodHJhY2VfdmZzX3V0aW1lbnNhdF9yZXQsICIiKTsKK1RSQUNFUE9JTlQodHJh
Y2VfdmZzX3V0aW1lbnNhdF9lcnIsICIlZCIsIGludCk7CisKK2V4dGVybiAiQyIKK2ludCB1dGlt
ZW5zYXQoaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwgY29uc3Qgc3RydWN0IHRpbWVz
cGVjIHRpbWVzWzJdLCBpbnQgZmxhZ3MpCit7CisgICAgdHJhY2VfdmZzX3V0aW1lbnNhdChwYXRo
bmFtZSk7CisKKyAgICBhdXRvIGVycm9yID0gc3lzX3V0aW1lbnNhdChkaXJmZCwgcGF0aG5hbWUs
IHRpbWVzLCBmbGFncyk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIHRyYWNlX3Zmc191dGlt
ZW5zYXRfZXJyKGVycm9yKTsKKyAgICAgICAgZXJybm8gPSBlcnJvcjsKKyAgICAgICAgcmV0dXJu
IC0xOworICAgIH0KKworICAgIHRyYWNlX3Zmc191dGltZW5zYXRfcmV0KCk7CisgICAgcmV0dXJu
IDA7Cit9CisKK1RSQUNFUE9JTlQodHJhY2VfdmZzX2Z1dGltZW5zLCAiJWQiLCBpbnQpOworVFJB
Q0VQT0lOVCh0cmFjZV92ZnNfZnV0aW1lbnNfcmV0LCAiIik7CitUUkFDRVBPSU5UKHRyYWNlX3Zm
c19mdXRpbWVuc19lcnIsICIlZCIsIGludCk7CisKK2V4dGVybiAiQyIKK2ludCBmdXRpbWVucyhp
bnQgZmQsIGNvbnN0IHN0cnVjdCB0aW1lc3BlYyB0aW1lc1syXSkKK3sKKyAgICB0cmFjZV92ZnNf
ZnV0aW1lbnMoZmQpOworCisgICAgYXV0byBlcnJvciA9IHN5c19mdXRpbWVucyhmZCwgdGltZXMp
OworICAgIGlmIChlcnJvcikgeworICAgICAgICB0cmFjZV92ZnNfZnV0aW1lbnNfZXJyKGVycm9y
KTsKKyAgICAgICAgZXJybm8gPSBlcnJvcjsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKwor
ICAgIHRyYWNlX3Zmc19mdXRpbWVuc19yZXQoKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGlj
IGludCBkb191dGltZXMoY29uc3QgY2hhciAqcGF0aG5hbWUsIGNvbnN0IHN0cnVjdCB0aW1ldmFs
IHRpbWVzWzJdLCBpbnQgZmxhZ3MpCit7CisgICAgc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7
CisgICAgY2hhciBwYXRoW1BBVEhfTUFYXTsKKyAgICBpbnQgZXJyb3I7CisKKyAgICB0cmFjZV92
ZnNfdXRpbWVzKHBhdGhuYW1lKTsKKworICAgIGVycm9yID0gdGFza19jb252KHQsIHBhdGhuYW1l
LCAwLCBwYXRoKTsKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgdHJhY2VfdmZzX3V0aW1lc19l
cnIoZXJyb3IpOworICAgICAgICByZXR1cm4gbGliY19lcnJvcihlcnJvcik7CisgICAgfQorCisg
ICAgZXJyb3IgPSBzeXNfdXRpbWVzKHBhdGgsIHRpbWVzLCBmbGFncyk7CisgICAgaWYgKGVycm9y
KSB7CisgICAgICAgIHRyYWNlX3Zmc191dGltZXNfZXJyKGVycm9yKTsKKyAgICAgICAgcmV0dXJu
IGxpYmNfZXJyb3IoZXJyb3IpOworICAgIH0KKworICAgIHRyYWNlX3Zmc191dGltZXNfcmV0KCk7
CisgICAgcmV0dXJuIDA7Cit9CisKK2V4dGVybiAiQyIKK2ludCB1dGltZXMoY29uc3QgY2hhciAq
cGF0aG5hbWUsIGNvbnN0IHN0cnVjdCB0aW1ldmFsIHRpbWVzWzJdKQoreworICAgIHJldHVybiBk
b191dGltZXMocGF0aG5hbWUsIHRpbWVzLCAwKTsKK30KKworZXh0ZXJuICJDIgoraW50IGx1dGlt
ZXMoY29uc3QgY2hhciAqcGF0aG5hbWUsIGNvbnN0IHN0cnVjdCB0aW1ldmFsIHRpbWVzWzJdKQor
eworICAgIHJldHVybiBkb191dGltZXMocGF0aG5hbWUsIHRpbWVzLCBBVF9TWU1MSU5LX05PRk9M
TE9XKTsKK30KKworZXh0ZXJuICJDIgoraW50IHV0aW1lKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBj
b25zdCBzdHJ1Y3QgdXRpbWJ1ZiAqdCkKK3sKKyAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOjpjaHJv
bm87CisKKyAgICBzdHJ1Y3QgdGltZXZhbCB0aW1lc1syXTsKKyAgICB0aW1lc1swXS50dl91c2Vj
ID0gMDsKKyAgICB0aW1lc1sxXS50dl91c2VjID0gMDsKKyAgICBpZiAoIXQpIHsKKyAgICAgICAg
bG9uZyBpbnQgdHNlYyA9IGR1cmF0aW9uX2Nhc3Q8c2Vjb25kcz4ob3N2OjpjbG9jazo6d2FsbDo6
bm93KCkudGltZV9zaW5jZV9lcG9jaCgpKS5jb3VudCgpOworICAgICAgICB0aW1lc1swXS50dl9z
ZWMgPSB0c2VjOworICAgICAgICB0aW1lc1sxXS50dl9zZWMgPSB0c2VjOworICAgIH0gZWxzZSB7
CisgICAgICAgIHRpbWVzWzBdLnR2X3NlYyA9IHQtPmFjdGltZTsKKyAgICAgICAgdGltZXNbMV0u
dHZfc2VjID0gdC0+bW9kdGltZTsKKyAgICB9CisKKyAgICByZXR1cm4gdXRpbWVzKHBhdGhuYW1l
LCB0aW1lcyk7Cit9CisKK1RSQUNFUE9JTlQodHJhY2VfdmZzX2NobW9kLCAiXCIlc1wiIDAlMG8i
LCBjb25zdCBjaGFyKiwgbW9kZV90KTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX2NobW9kX3JldCwg
IiIpOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfY2htb2RfZXJyLCAiJWQiLCBpbnQpOworCitpbnQg
Y2htb2QoY29uc3QgY2hhciAqcGF0aG5hbWUsIG1vZGVfdCBtb2RlKQoreworICAgIHRyYWNlX3Zm
c19jaG1vZChwYXRobmFtZSwgbW9kZSk7CisgICAgc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7
CisgICAgY2hhciBwYXRoW1BBVEhfTUFYXTsKKyAgICBpbnQgZXJyb3IgPSBFTk9FTlQ7CisgICAg
aWYgKHBhdGhuYW1lID09IG51bGxwdHIpCisgICAgICAgIGdvdG8gb3V0X2Vycm5vOworICAgIGlm
ICgoZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5hbWUsIFZXUklURSwgcGF0aCkpICE9IDApCisg
ICAgICAgIGdvdG8gb3V0X2Vycm5vOworICAgIGVycm9yID0gc3lzX2NobW9kKHBhdGgsIG1vZGUg
JiBBTExQRVJNUyk7CisgICAgaWYgKGVycm9yKQorICAgICAgICBnb3RvIG91dF9lcnJubzsKKyAg
ICB0cmFjZV92ZnNfY2htb2RfcmV0KCk7CisgICAgcmV0dXJuIDA7CitvdXRfZXJybm86CisgICAg
dHJhY2VfdmZzX2NobW9kX2VycihlcnJvcik7CisgICAgZXJybm8gPSBlcnJvcjsKKyAgICByZXR1
cm4gLTE7Cit9CisKK1RSQUNFUE9JTlQodHJhY2VfdmZzX2ZjaG1vZCwgIlwiJWRcIiAwJTBvIiwg
aW50LCBtb2RlX3QpOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZmNobW9kX3JldCwgIiIpOworCitp
bnQgZmNobW9kKGludCBmZCwgbW9kZV90IG1vZGUpCit7CisgICAgdHJhY2VfdmZzX2ZjaG1vZChm
ZCwgbW9kZSk7CisgICAgYXV0byBlcnJvciA9IHN5c19mY2htb2QoZmQsIG1vZGUgJiBBTExQRVJN
Uyk7CisgICAgdHJhY2VfdmZzX2ZjaG1vZF9yZXQoKTsKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAg
ICAgZXJybm8gPSBlcnJvcjsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0gZWxzZSB7CisgICAg
ICAgIHJldHVybiAwOworICAgIH0KK30KKworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZmNob3duLCAi
XCIlZFwiICVkICVkIiwgaW50LCB1aWRfdCwgZ2lkX3QpOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNf
ZmNob3duX3JldCwgIiIpOworCitpbnQgZmNob3duKGludCBmZCwgdWlkX3Qgb3duZXIsIGdpZF90
IGdyb3VwKQoreworICAgIHRyYWNlX3Zmc19mY2hvd24oZmQsIG93bmVyLCBncm91cCk7CisgICAg
V0FSTl9TVFVCQkVEKCk7CisgICAgdHJhY2VfdmZzX2ZjaG93bl9yZXQoKTsKKyAgICByZXR1cm4g
MDsKK30KKworaW50IGNob3duKGNvbnN0IGNoYXIgKnBhdGgsIHVpZF90IG93bmVyLCBnaWRfdCBn
cm91cCkKK3sKKyAgICBXQVJOX1NUVUJCRUQoKTsKKyAgICByZXR1cm4gMDsKK30KKworaW50IGxj
aG93bihjb25zdCBjaGFyICpwYXRoLCB1aWRfdCBvd25lciwgZ2lkX3QgZ3JvdXApCit7CisgICAg
V0FSTl9TVFVCQkVEKCk7CisgICAgcmV0dXJuIDA7Cit9CisKKworc3NpemVfdCBzZW5kZmlsZShp
bnQgb3V0X2ZkLCBpbnQgaW5fZmQsIG9mZl90ICpfb2Zmc2V0LCBzaXplX3QgY291bnQpCit7Cisg
ICAgc3RydWN0IGZpbGUgKmluX2ZwOworICAgIHN0cnVjdCBmaWxlICpvdXRfZnA7CisgICAgZmls
ZXJlZiBpbl9me2ZpbGVyZWZfZnJvbV9mZChpbl9mZCl9OworICAgIGZpbGVyZWYgb3V0X2Z7Zmls
ZXJlZl9mcm9tX2ZkKG91dF9mZCl9OworCisgICAgaWYgKCFpbl9mIHx8ICFvdXRfZikgeworICAg
ICAgICByZXR1cm4gbGliY19lcnJvcihFQkFERik7CisgICAgfQorCisgICAgaW5fZnAgPSBpbl9m
LmdldCgpOworICAgIG91dF9mcCA9IG91dF9mLmdldCgpOworCisgICAgaWYgKCFpbl9mcC0+Zl9k
ZW50cnkpIHsKKyAgICAgICAgcmV0dXJuIGxpYmNfZXJyb3IoRUJBREYpOworICAgIH0KKworICAg
IGlmICghKGluX2ZwLT5mX2ZsYWdzICYgRlJFQUQpKSB7CisgICAgICAgIHJldHVybiBsaWJjX2Vy
cm9yKEVCQURGKTsKKyAgICB9CisKKyAgICBpZiAob3V0X2ZwLT5mX3R5cGUgJiBEVFlQRV9WTk9E
RSkgeworICAgICAgICBpZiAoIW91dF9mcC0+Zl9kZW50cnkpIHsKKyAgICAgICAgICAgIHJldHVy
biBsaWJjX2Vycm9yKEVCQURGKTsKKwl9IGVsc2UgaWYgKCEob3V0X2ZwLT5mX2ZsYWdzICYgRldS
SVRFKSkgeworICAgICAgICAgICAgcmV0dXJuIGxpYmNfZXJyb3IoRUJBREYpOworCX0KKyAgICB9
CisKKyAgICBvZmZfdCBvZmZzZXQgOworCisgICAgaWYgKF9vZmZzZXQgIT0gbnVsbHB0cikgewor
ICAgICAgICBvZmZzZXQgPSAqX29mZnNldDsKKyAgICB9IGVsc2UgeworICAgICAgICAvKiBpZiBf
b2Zmc2V0IGlzIG51bGxwdHIsIHdlIG5lZWQgdG8gcmVhZCBmcm9tIHRoZSBwcmVzZW50IHBvc2l0
aW9uIG9mIGluX2ZkICovCisgICAgICAgIG9mZnNldCA9IGxzZWVrKGluX2ZkLCAwLCBTRUVLX0NV
Uik7CisgICAgfQorCisgICAgLy8gQ29uc3RyYWluIGNvdW50IHRvIHRoZSBleHRlbnQgb2YgdGhl
IGZpbGUuLi4KKyAgICBzdHJ1Y3Qgc3RhdCBzdDsKKyAgICBpZiAoZnN0YXQoaW5fZmQsICZzdCkg
PCAwKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAob2Zm
c2V0ID49IHN0LnN0X3NpemUpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9IGVs
c2UgaWYgKChvZmZzZXQgKyBjb3VudCkgPj0gc3Quc3Rfc2l6ZSkgeworICAgICAgICAgICAgY291
bnQgPSBzdC5zdF9zaXplIC0gb2Zmc2V0OworICAgICAgICAgICAgaWYgKGNvdW50ID09IDApIHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KKworICAgIHNpemVfdCBieXRlc190b19tbWFwID0gY291bnQgKyAob2Zmc2V0ICUgbW11Ojpw
YWdlX3NpemUpOworICAgIG9mZl90IG9mZnNldF9mb3JfbW1hcCA9ICBhbGlnbl9kb3duKG9mZnNl
dCwgKG9mZl90KW1tdTo6cGFnZV9zaXplKTsKKworICAgIGNoYXIgKnNyYyA9IHN0YXRpY19jYXN0
PGNoYXIgKj4obW1hcChudWxscHRyLCBieXRlc190b19tbWFwLCBQUk9UX1JFQUQsIE1BUF9TSEFS
RUQsIGluX2ZkLCBvZmZzZXRfZm9yX21tYXApKTsKKworICAgIGlmIChzcmMgPT0gTUFQX0ZBSUxF
RCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgYXV0byByZXQgPSB3cml0ZShv
dXRfZmQsIHNyYyArIChvZmZzZXQgJSBQQUdFU0laRSksIGNvdW50KTsKKworICAgIGlmIChyZXQg
PCAwKSB7CisgICAgICAgIHJldHVybiBsaWJjX2Vycm9yKGVycm5vKTsKKyAgICB9IGVsc2UgaWYo
X29mZnNldCA9PSBudWxscHRyKSB7CisgICAgICAgIGxzZWVrKGluX2ZkLCByZXQsIFNFRUtfQ1VS
KTsKKyAgICB9IGVsc2UgeworICAgICAgICAqX29mZnNldCArPSByZXQ7CisgICAgfQorCisgICAg
YXNzZXJ0KG11bm1hcChzcmMsIGNvdW50KSA9PSAwKTsKKworICAgIHJldHVybiByZXQ7Cit9CisK
KyN1bmRlZiBzZW5kZmlsZTY0CitMRlM2NChzZW5kZmlsZSk7CisKK05PX1NZUyhpbnQgZmNobW9k
YXQoaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwgbW9kZV90IG1vZGUsIGludCBmbGFn
cykpOworCittb2RlX3QgdW1hc2sobW9kZV90IG5ld21hc2spCit7CisgICAgcmV0dXJuIGdsb2Jh
bF91bWFzay5leGNoYW5nZShuZXdtYXNrLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKK30K
KworaW50Citmc19ub29wKHZvaWQpCit7CisgICAgcmV0dXJuIDA7Cit9CisKK2ludCBjaHJvb3Qo
Y29uc3QgY2hhciAqcGF0aCkKK3sKKyAgICBXQVJOX1NUVUJCRUQoKTsKKyAgICBlcnJubyA9IEVO
T1NZUzsKKyAgICByZXR1cm4gLTE7Cit9CisKKy8vIHVucGFja19ib290ZnMoKSB1bnBhY2tzIGEg
Y29sbGVjdGlvbiBvZiBmaWxlcyBzdG9yZWQgYXMgcGFydCBvZiB0aGUgT1N2CisvLyBleGVjdXRh
YmxlIChpbiBtZW1vcnkgbG9jYXRpb24gImJvb3Rmc19zdGFydCIpIGludG8gdGhlIGZpbGUgc3lz
dGVtLAorLy8gbm9ybWFsbHkgdGhlIGluLW1lbW9yeSBmaWxlc3lzdGVtIHJhbWZzLgorLy8gVGhl
IGZpbGVzIGFyZSBwYWNrZWQgaW4gdGhlIGV4ZWN1dGFibGUgaW4gYW4gYWQtaG9jIGZvcm1hdCBk
ZWZpbmVkIGhlcmUuCisvLyBDb2RlIGluIHNjcmlwdHMvbWtib290ZnMucHkgcGFja3MgZmlsZXMg
aW50byB0aGlzIGZvcm1hdC4KKyNkZWZpbmUgQk9PVEZTX1BBVEhfTUFYIDExMQorZW51bSBjbGFz
cyBib290ZnNfZmlsZV90eXBlIDogY2hhciB7IG90aGVyID0gMCwgc3ltbGluayA9IDEgfTsKK3N0
cnVjdCBib290ZnNfbWV0YWRhdGEgeworICAgIHVpbnQ2NF90IHNpemU7CisgICAgdWludDY0X3Qg
b2Zmc2V0OworICAgIC8vIFRoZSBmaWxlJ3MgdHlwZS4gQ2FuIGJlICJzeW1saW5rIiBvciAib3Ro
ZXIiLiBBIGRpcmVjdG9yeSBpcyBhbiAib3RoZXIiCisgICAgLy8gZmlsZSB3aXRoIGl0cyBuYW1l
IGVuZGluZyB3aXRoIGEgIi8iIChhbmQgbm8gY29udGVudCkuCisgICAgYm9vdGZzX2ZpbGVfdHlw
ZSB0eXBlOworICAgIC8vIG5hbWUgbXVzdCBlbmQgd2l0aCBhIG51bGwuIEZvciBzeW1saW5rIGZp
bGVzLCB0aGUgY29udGVudCBtdXN0IGVuZAorICAgIC8vIHdpdGggYSBudWxsIGFzIHdlbGwuCisg
ICAgY2hhciBuYW1lW0JPT1RGU19QQVRIX01BWF07Cit9OworCitleHRlcm4gY2hhciBib290ZnNf
c3RhcnQ7CisKK2ludCByYW1mc19zZXRfZmlsZV9kYXRhKHN0cnVjdCB2bm9kZSAqdnAsIGNvbnN0
IHZvaWQgKmRhdGEsIHNpemVfdCBzaXplKTsKK3ZvaWQgdW5wYWNrX2Jvb3Rmcyh2b2lkKQorewor
ICAgIHN0cnVjdCBib290ZnNfbWV0YWRhdGEgKm1kID0gKHN0cnVjdCBib290ZnNfbWV0YWRhdGEg
KikmYm9vdGZzX3N0YXJ0OworICAgIGludCBmZCwgaTsKKworICAgIGZvciAoaSA9IDA7IG1kW2ld
Lm5hbWVbMF07IGkrKykgeworICAgICAgICBpbnQgcmV0OworICAgICAgICBjaGFyICpwOworCisg
ICAgICAgIC8vIG1rZGlyKCkgZGlyZWN0b3JpZXMgbmVlZGVkIGZvciB0aGlzIHBhdGggbmFtZSwg
YXMgbmVjZXNzYXJ5CisgICAgICAgIGNoYXIgdG1wW0JPT1RGU19QQVRIX01BWF07CisgICAgICAg
IHN0cmxjcHkodG1wLCBtZFtpXS5uYW1lLCBCT09URlNfUEFUSF9NQVgpOworICAgICAgICBmb3Ig
KHAgPSB0bXA7ICpwOyArK3ApIHsKKyAgICAgICAgICAgIGlmICgqcCA9PSAnLycpIHsKKyAgICAg
ICAgICAgICAgICAqcCA9ICdcMCc7CisgICAgICAgICAgICAgICAgbWtkaXIodG1wLCAwNjY2KTsg
IC8vIHNpbGVudGx5IGlnbm9yZSBlcnJvcnMgYW5kIGV4aXN0aW5nIGRpcnMKKyAgICAgICAgICAg
ICAgICAqcCA9ICcvJzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmICht
ZFtpXS50eXBlID09IGJvb3Rmc19maWxlX3R5cGU6OnN5bWxpbmspIHsKKyAgICAgICAgICAgIC8v
IFRoaXMgaXMgYSBzeW1ib2xpYyBsaW5rIHJlY29yZC4gVGhlIGZpbGUncyBjb250ZW50IGlzIHRo
ZQorICAgICAgICAgICAgLy8gdGFyZ2V0IHBhdGgsIGFuZCB3ZSBhc3N1bWUgZW5kcyB3aXRoIGEg
bnVsbC4KKyAgICAgICAgICAgIGlmIChzeW1saW5rKCZib290ZnNfc3RhcnQgKyBtZFtpXS5vZmZz
ZXQsIG1kW2ldLm5hbWUpICE9IDApIHsKKyAgICAgICAgICAgICAgICBrcHJpbnRmKCJjb3VsZG4n
dCBzeW1saW5rICVzOiAlZFxuIiwgbWRbaV0ubmFtZSwgZXJybm8pOworICAgICAgICAgICAgICAg
IHN5c19wYW5pYygidW5wYWNrX2Jvb3RmcyBmYWlsZWQiKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmICgqKHAtMSkgPT0gJy8nICYm
IG1kW2ldLnNpemUgPT0gMCkgeworICAgICAgICAgICAgLy8gVGhpcyBpcyBkaXJlY3RvcnkgcmVj
b3JkLiBOb3RoaW5nIGVsc2UgdG8gZG8KKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9
CisKKyAgICAgICAgZmQgPSBjcmVhdChtZFtpXS5uYW1lLCAwNjY2KTsKKyAgICAgICAgaWYgKGZk
IDwgMCkgeworICAgICAgICAgICAga3ByaW50ZigiY291bGRuJ3QgY3JlYXRlICVzOiAlZFxuIiwK
KyAgICAgICAgICAgICAgICAgICAgbWRbaV0ubmFtZSwgZXJybm8pOworICAgICAgICAgICAgc3lz
X3BhbmljKCJ1bnBhY2tfYm9vdGZzIGZhaWxlZCIpOworICAgICAgICB9CisKKyAgICAgICAgc3Ry
dWN0IGZpbGUgKmZwOworICAgICAgICBpbnQgZXJyb3IgPSBmZ2V0KGZkLCAmZnApOworICAgICAg
ICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgIGtwcmludGYoImNvdWxkbid0IGZnZXQgJXM6ICVk
XG4iLAorICAgICAgICAgICAgICAgICAgICBtZFtpXS5uYW1lLCBlcnJvcik7CisgICAgICAgICAg
ICBzeXNfcGFuaWMoInVucGFja19ib290ZnMgZmFpbGVkIik7CisgICAgICAgIH0KKworICAgICAg
ICBzdHJ1Y3Qgdm5vZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOworICAgICAgICByZXQg
PSByYW1mc19zZXRfZmlsZV9kYXRhKHZwLCAmYm9vdGZzX3N0YXJ0ICsgbWRbaV0ub2Zmc2V0LCBt
ZFtpXS5zaXplKTsKKyAgICAgICAgaWYgKHJldCkgeworICAgICAgICAgICAga3ByaW50ZigicmFt
ZnNfc2V0X2ZpbGVfZGF0YSBmYWlsZWQsIHJldCA9ICVkXG4iLCByZXQpOworICAgICAgICAgICAg
c3lzX3BhbmljKCJ1bnBhY2tfYm9vdGZzIGZhaWxlZCIpOworICAgICAgICB9CisKKyAgICAgICAg
ZmRyb3AoZnApOworICAgICAgICBjbG9zZShmZCk7CisgICAgfQorfQorCit2b2lkIG1vdW50X3Jv
b3Rmcyh2b2lkKQoreworICAgIGludCByZXQ7CisKKyAgICByZXQgPSBzeXNfbW91bnQoIiIsICIv
IiwgInJhbWZzIiwgMCwgbnVsbHB0cik7CisgICAgaWYgKHJldCkKKyAgICAgICAga3ByaW50Zigi
ZmFpbGVkIHRvIG1vdW50IHJvb3RmcywgZXJyb3IgPSAlc1xuIiwgc3RyZXJyb3IocmV0KSk7CisK
KyAgICBpZiAobWtkaXIoIi9kZXYiLCAwNzU1KSA8IDApCisgICAgICAgIGtwcmludGYoImZhaWxl
ZCB0byBjcmVhdGUgL2RldiwgZXJyb3IgPSAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKKworICAg
IHJldCA9IHN5c19tb3VudCgiIiwgIi9kZXYiLCAiZGV2ZnMiLCAwLCBudWxscHRyKTsKKyAgICBp
ZiAocmV0KQorICAgICAgICBrcHJpbnRmKCJmYWlsZWQgdG8gbW91bnQgZGV2ZnMsIGVycm9yID0g
JXNcbiIsIHN0cmVycm9yKHJldCkpOworfQorCitleHRlcm4gIkMiCitpbnQgbm1vdW50KHN0cnVj
dCBpb3ZlYyAqaW92LCB1bnNpZ25lZCBuaW92LCBpbnQgZmxhZ3MpCit7CisgICAgc3RydWN0IGFy
Z3MgeworICAgICAgICBjaGFyKiBmc3R5cGUgPSBudWxscHRyOworICAgICAgICBjaGFyKiBmc3Bh
dGggPSBudWxscHRyOworICAgICAgICBjaGFyKiBmcm9tID0gbnVsbHB0cjsKKyAgICB9OworICAg
IHN0YXRpYyB1bm9yZGVyZWRfbWFwPHN0cmluZywgY2hhciogYXJnczo6Kj4gYXJnbWFwIHsKKyAg
ICAgICAgeyAiZnN0eXBlIiwgJmFyZ3M6OmZzdHlwZSB9LAorICAgICAgICB7ICJmc3BhdGgiLCAm
YXJnczo6ZnNwYXRoIH0sCisgICAgICAgIHsgImZyb20iLCAmYXJnczo6ZnJvbSB9LAorICAgIH07
CisgICAgYXJncyBhOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbmlvdjsgaSArPSAyKSB7
CisgICAgICAgIHN0ZDo6c3RyaW5nIHMoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGlvdltpXS5p
b3ZfYmFzZSkpOworICAgICAgICBpZiAoYXJnbWFwLmNvdW50KHMpKSB7CisgICAgICAgICAgICBh
LiooYXJnbWFwW3NdKSA9IHN0YXRpY19jYXN0PGNoYXIqPihpb3ZbaSsxXS5pb3ZfYmFzZSk7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHN5c19tb3VudChhLmZyb20sIGEuZnNwYXRoLCBh
LmZzdHlwZSwgZmxhZ3MsIG51bGxwdHIpOworfQorCitzdGF0aWMgdm9pZCBpbXBvcnRfZXh0cmFf
emZzX3Bvb2xzKHZvaWQpCit7CisgICAgc3RydWN0IHN0YXQgc3Q7CisgICAgaW50IHJldDsKKwor
ICAgIC8vIFRoZSBmaWxlICcvZXRjL21udHRhYicgaXMgYSBMaWJaRlMgcmVxdWlyZW1lbnQgYW5k
IHdpbGwgbm90CisgICAgLy8gZXhpc3QgZHVyaW5nIGNwaW9kIHBoYXNlLiBUaGUgZnVuY3Rpb25h
bGl0eSBwcm92aWRlZCBieSB0aGlzCisgICAgLy8gZnVuY3Rpb24gaXNuJ3QgbmVlZGVkIGR1cmlu
ZyB0aGF0IHBoYXNlLCBzbyBsZXQncyBza2lwIGl0LgorICAgIGlmIChzdGF0KCIvZXRjL21udHRh
YiIgLCAmc3QpICE9IDApIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEltcG9y
dCBleHRyYSBwb29scyBtb3VudGluZyBkYXRhc2V0cyB0aGVyZSBjb250YWluZWQuCisgICAgLy8g
RGF0YXNldHMgZnJvbSBvc3YgcG9vbCB3aWxsIG5vdCBiZSBtb3VudGVkIGhlcmUuCisgICAgaWYg
KGFjY2VzcygienBvb2wuc28iLCBYX09LKSAhPSAwKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgdmVjdG9yPHN0cmluZz4genBvb2xfYXJncyA9IHsienBvb2wiLCAiaW1wb3J0IiwgIi1m
IiwgIi1hIiB9OworICAgIGF1dG8gb2sgPSBvc3Y6OnJ1bigienBvb2wuc28iLCB6cG9vbF9hcmdz
LCAmcmV0KTsKKyAgICBhc3NlcnQob2spOworCisgICAgaWYgKCFyZXQpIHsKKyAgICAgICAgZGVi
dWcoInpmczogZXh0cmEgWkZTIHBvb2wocykgZm91bmQuXG4iKTsKKyAgICB9Cit9CisKK3ZvaWQg
cGl2b3Rfcm9vdGZzKGNvbnN0IGNoYXIqIHBhdGgpCit7CisgICAgaW50IHJldCA9IHN5c19waXZv
dF9yb290KHBhdGgsICIvIik7CisgICAgaWYgKHJldCkKKyAgICAgICAga3ByaW50ZigiZmFpbGVk
IHRvIHBpdm90IHJvb3QsIGVycm9yID0gJXNcbiIsIHN0cmVycm9yKHJldCkpOworCisgICAgYXV0
byBlbnQgPSBzZXRtbnRlbnQoIi9ldGMvZnN0YWIiLCAiciIpOworICAgIGlmICghZW50KSB7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzdHJ1Y3QgbW50ZW50ICptID0gbnVsbHB0cjsK
KyAgICB3aGlsZSAoKG0gPSBnZXRtbnRlbnQoZW50KSkgIT0gbnVsbHB0cikgeworICAgICAgICBp
ZiAoIXN0cmNtcChtLT5tbnRfZGlyLCAiLyIpKSB7CisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmICgobS0+bW50X29wdHMgIT0gbnVsbHB0cikgJiYgc3RyY21w
KG0tPm1udF9vcHRzLCBNTlRPUFRfREVGQVVMVFMpKSB7CisgICAgICAgICAgICBwcmludGYoIldh
cm5pbmc6IG9wdHMgJXMsIGlnbm9yZWQgZm9yIGZzICVzXG4iLCBtLT5tbnRfb3B0cywgbS0+bW50
X3R5cGUpOworICAgICAgICB9CisKKyAgICAgICAgLy8gRklYTUU6IFJpZ2h0IG5vdywgaWdub3Jp
bmcgbW50b3BzLiBJbiB0aGUgZnV0dXJlIHdlIG1heSBoYXZlIGFuIG9wdGlvbiBwYXJzZXIKKyAg
ICAgICAgcmV0ID0gc3lzX21vdW50KG0tPm1udF9mc25hbWUsIG0tPm1udF9kaXIsIG0tPm1udF90
eXBlLCAwLCBudWxscHRyKTsKKyAgICAgICAgaWYgKHJldCkgeworICAgICAgICAgICAgcHJpbnRm
KCJmYWlsZWQgdG8gbW91bnQgJXMsIGVycm9yID0gJXNcbiIsIG0tPm1udF90eXBlLCBzdHJlcnJv
cihyZXQpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbmRtbnRlbnQoZW50KTsKK30KKworZXh0
ZXJuICJDIiB2b2lkIHVubW91bnRfZGV2ZnMoKQoreworICAgIGludCByZXQgPSBzeXNfdW1vdW50
KCIvZGV2Iik7CisgICAgaWYgKHJldCkKKyAgICAgICAga3ByaW50ZigiZmFpbGVkIHRvIHVubW91
bnQgL2RldiwgZXJyb3IgPSAlc1xuIiwgc3RyZXJyb3IocmV0KSk7Cit9CisKK2V4dGVybiAiQyIg
aW50IG1vdW50X3JvZnNfcm9vdGZzKGJvb2wgcGl2b3Rfcm9vdCkKK3sKKyAgICBpbnQgcmV0Owor
CisgICAgaWYgKG1rZGlyKCIvcm9mcyIsIDA3NTUpIDwgMCkKKyAgICAgICAga3ByaW50ZigiZmFp
bGVkIHRvIGNyZWF0ZSAvcm9mcywgZXJyb3IgPSAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKKwor
ICAgIHJldCA9IHN5c19tb3VudCgiL2Rldi92YmxrMC4xIiwgIi9yb2ZzIiwgInJvZnMiLCBNTlRf
UkRPTkxZLCAwKTsKKworICAgIGlmIChyZXQpIHsKKyAgICAgICAga3ByaW50ZigiZmFpbGVkIHRv
IG1vdW50IC9yb2ZzLCBlcnJvciA9ICVzXG4iLCBzdHJlcnJvcihyZXQpKTsKKyAgICAgICAgcm1k
aXIoIi9yb2ZzIik7CisgICAgICAgIHJldHVybiByZXQ7CisgICAgfQorCisgICAgaWYgKHBpdm90
X3Jvb3QpIHsKKyAgICAgICAgcGl2b3Rfcm9vdGZzKCIvcm9mcyIpOworICAgIH0KKworICAgIHJl
dHVybiAwOworfQorCitleHRlcm4gIkMiIHZvaWQgbW91bnRfemZzX3Jvb3Rmcyhib29sIHBpdm90
X3Jvb3QpCit7CisgICAgaWYgKG1rZGlyKCIvemZzIiwgMDc1NSkgPCAwKQorICAgICAgICBrcHJp
bnRmKCJmYWlsZWQgdG8gY3JlYXRlIC96ZnMsIGVycm9yID0gJXNcbiIsIHN0cmVycm9yKGVycm5v
KSk7CisKKyAgICBpbnQgcmV0ID0gc3lzX21vdW50KCIvZGV2L3ZibGswLjEiLCAiL3pmcyIsICJ6
ZnMiLCAwLCAodm9pZCAqKSJvc3YvemZzIik7CisKKyAgICBpZiAocmV0KQorICAgICAgICBrcHJp
bnRmKCJmYWlsZWQgdG8gbW91bnQgL3pmcywgZXJyb3IgPSAlc1xuIiwgc3RyZXJyb3IocmV0KSk7
CisKKyAgICBpZiAoIXBpdm90X3Jvb3QpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IHBpdm90X3Jvb3RmcygiL3pmcyIpOworCisgICAgaW1wb3J0X2V4dHJhX3pmc19wb29scygpOwor
fQorCitleHRlcm4gIkMiIHZvaWQgdW5tb3VudF9yb290ZnModm9pZCkKK3sKKyAgICBpbnQgcmV0
OworCisgICAgc3lzX3Vtb3VudCgiL2RldiIpOworCisgICAgcmV0ID0gc3lzX3Vtb3VudCgiL3By
b2MiKTsKKyAgICBpZiAocmV0KSB7CisgICAgICAgIGtwcmludGYoIldhcm5pbmc6IHVubW91bnRf
cm9vdGZzOiBmYWlsZWQgdG8gdW5tb3VudCAvcHJvYywgIgorICAgICAgICAgICAgImVycm9yID0g
JXNcbiIsIHN0cmVycm9yKHJldCkpOworICAgIH0KKworICAgIHJldCA9IHN5c191bW91bnQyKCIv
IiwgTU5UX0ZPUkNFKTsKKyAgICBpZiAocmV0KSB7CisgICAgICAgIGtwcmludGYoIldhcm5pbmc6
IHVubW91bnRfcm9vdGZzOiBmYWlsZWQgdG8gdW5tb3VudCAvLCAiCisgICAgICAgICAgICAiZXJy
b3IgPSAlc1xuIiwgc3RyZXJyb3IocmV0KSk7CisgICAgfQorfQorCitleHRlcm4gIkMiIHZvaWQg
YmlvX2luaXQodm9pZCk7CitleHRlcm4gIkMiIHZvaWQgYmlvX3N5bmModm9pZCk7CisKK2ludCB2
ZnNfaW5pdGlhbGl6ZWQ7CisKK2V4dGVybiAiQyIKK3ZvaWQKK3Zmc19pbml0KHZvaWQpCit7Cisg
ICAgY29uc3Qgc3RydWN0IHZmc3N3ICpmczsKKworICAgIGJpb19pbml0KCk7CisgICAgbG9va3Vw
X2luaXQoKTsKKyAgICB2bm9kZV9pbml0KCk7CisgICAgdGFza19hbGxvYygmbWFpbl90YXNrKTsK
KworICAgIC8qCisgICAgICogSW5pdGlhbGl6ZSBlYWNoIGZpbGUgc3lzdGVtLgorICAgICAqLwor
ICAgIGZvciAoZnMgPSB2ZnNzdzsgZnMtPnZzX25hbWU7IGZzKyspIHsKKyAgICAgICAgaWYgKGZz
LT52c19pbml0KSB7CisgICAgICAgICAgICBEUFJJTlRGKFZGU0RCX0NPUkUsICgiVkZTOiBpbml0
aWFsaXppbmcgJXNcbiIsCisgICAgICAgICAgICAgICAgICAgIGZzLT52c19uYW1lKSk7CisgICAg
ICAgICAgICBmcy0+dnNfaW5pdCgpOworICAgICAgICB9CisgICAgfQorCisgICAgbW91bnRfcm9v
dGZzKCk7CisgICAgdW5wYWNrX2Jvb3RmcygpOworCisgICAgLy8JaWYgKG9wZW4oIi9kZXYvY29u
c29sZSIsIE9fUkRXUiwgMCkgIT0gMCkKKyAgICBpZiAoY29uc29sZTo6b3BlbigpICE9IDApCisg
ICAgICAgIGtwcmludGYoImZhaWxlZCB0byBvcGVuIGNvbnNvbGUsIGVycm9yID0gJWRcbiIsIGVy
cm5vKTsKKyAgICBpZiAoZHVwKDApICE9IDEpCisgICAgICAgIGtwcmludGYoImZhaWxlZCB0byBk
dXAgY29uc29sZSAoMSlcbiIpOworICAgIGlmIChkdXAoMCkgIT0gMikKKyAgICAgICAga3ByaW50
ZigiZmFpbGVkIHRvIGR1cCBjb25zb2xlICgyKVxuIik7CisgICAgdmZzX2luaXRpYWxpemVkID0g
MTsKK30KKwordm9pZCB2ZnNfZXhpdCh2b2lkKQoreworICAgIC8qIEZyZWUgdXAgbWFpbl90YXNr
IChzdG9yZXMgY3dkIGRhdGEpIHJlc291cmNlcyAqLworICAgIHJlcGxhY2VfY3dkKG1haW5fdGFz
aywgbnVsbHB0ciwgW10oKSB7IHJldHVybiAwOyB9KTsKKyAgICAvKiBVbm1vdW50IGFsbCBmaWxl
IHN5c3RlbXMgKi8KKyAgICB1bm1vdW50X3Jvb3RmcygpOworICAgIC8qIEZpbmlzaCB3aXRoIHRo
ZSBiaW8gbGF5ZXIgKi8KKyAgICBiaW9fc3luYygpOworfQorCit2b2lkIHN5c19wYW5pYyhjb25z
dCBjaGFyICpzdHIpCit7CisgICAgYWJvcnQoInBhbmljOiAlcyIsIHN0cik7Cit9CisKZGlmZiAt
LWdpdCBhL2xpYi92ZnNjb3JlL21vdW50LmMgYi9saWIvdmZzY29yZS9tb3VudC5jCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi5kYWM0ZDA5YwotLS0gL2Rldi9udWxsCisrKyBi
L2xpYi92ZnNjb3JlL21vdW50LmMKQEAgLTAsMCArMSw0OTEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KGMpIDIwMDUtMjAwNywgS29oc3VrZSBPaHRhbmkKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBhdXRob3Igbm9yIHRoZSBuYW1l
cyBvZiBhbnkgY28tY29udHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKKyAqICAgIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKy8qCisgKiB2ZnNfbW91bnQuYyAtIG1v
dW50IG9wZXJhdGlvbnMKKyAqLworCisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxz
eXMvcGFyYW0uaD4KKyNpbmNsdWRlIDxkaXJlbnQuaD4KKworI2luY2x1ZGUgPGxpbWl0cy5oPgor
I2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmlu
Zy5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxm
Y250bC5oPgorCisjaW5jbHVkZSA8b3N2L3ByZXguaD4KKyNpbmNsdWRlIDxvc3Yvdm5vZGUuaD4K
KyNpbmNsdWRlIDxvc3YvZGV2aWNlLmg+CisjaW5jbHVkZSA8b3N2L2RlYnVnLmg+CisjaW5jbHVk
ZSA8b3N2L211dGV4Lmg+CisjaW5jbHVkZSAidmZzLmgiCisKKyNpbmNsdWRlIDxtZW1vcnk+Cisj
aW5jbHVkZSA8bGlzdD4KKworLyoKKyAqIExpc3QgZm9yIFZGUyBtb3VudCBwb2ludHMuCisgKi8K
K3N0YXRpYyBzdGQ6Omxpc3Q8bW91bnQqPiBtb3VudF9saXN0OworCisvKgorICogR2xvYmFsIGxv
Y2sgdG8gYWNjZXNzIG1vdW50IHBvaW50LgorICovCitzdGF0aWMgbXV0ZXggbW91bnRfbG9jazsK
KworLyoKKyAqIExvb2t1cCBmaWxlIHN5c3RlbS4KKyAqLworc3RhdGljIGNvbnN0IHN0cnVjdCB2
ZnNzdyAqCitmc19nZXRmcyhjb25zdCBjaGFyICpuYW1lKQoreworICAgIGNvbnN0IHN0cnVjdCB2
ZnNzdyAqZnM7CisKKyAgICBmb3IgKGZzID0gdmZzc3c7IGZzLT52c19uYW1lOyBmcysrKSB7Cisg
ICAgICAgIGlmICghc3RybmNtcChuYW1lLCBmcy0+dnNfbmFtZSwgRlNNQVhOQU1FUykpCisgICAg
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgaWYgKCFmcy0+dnNfbmFtZSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGZzOworfQorCitjb25zdCBjaGFyKgorZnNfZ2V0ZnNu
YW1lKHZmc29wcyogb3BzKQoreworICAgIGZvciAoYXV0byBmcyA9IHZmc3N3OyBmcy0+dnNfbmFt
ZTsgZnMrKykgeworICAgICAgICBpZiAoZnMtPnZzX29wID09IG9wcykgeworICAgICAgICAgICAg
cmV0dXJuIGZzLT52c19uYW1lOworICAgICAgICB9CisgICAgfQorICAgIGFib3J0KCk7Cit9CisK
K2ludAorc3lzX21vdW50KGNvbnN0IGNoYXIgKmRldiwgY29uc3QgY2hhciAqZGlyLCBjb25zdCBj
aGFyICpmc25hbWUsIGludCBmbGFncywgY29uc3Qgdm9pZCAqZGF0YSkKK3sKKyAgICBjb25zdCBz
dHJ1Y3QgdmZzc3cgKmZzOworICAgIHN0cnVjdCBtb3VudCAqbXA7CisgICAgc3RydWN0IGRldmlj
ZSAqZGV2aWNlOworICAgIHN0cnVjdCBkZW50cnkgKmRwX2NvdmVyZWQ7CisgICAgc3RydWN0IHZu
b2RlICp2cDsKKyAgICBpbnQgZXJyb3I7CisKKyAgICBrcHJpbnRmKCJWRlM6IG1vdW50aW5nICVz
IGF0ICVzXG4iLCBmc25hbWUsIGRpcik7CisKKyAgICBpZiAoIWRpciB8fCAqZGlyID09ICdcMCcp
CisgICAgICAgIHJldHVybiBFTk9FTlQ7CisKKyAgICAvKiBGaW5kIGEgZmlsZSBzeXN0ZW0uICov
CisgICAgaWYgKCEoZnMgPSBmc19nZXRmcyhmc25hbWUpKSkKKyAgICAgICAgcmV0dXJuIEVOT0RF
VjsgIC8qIE5vIHN1Y2ggZmlsZSBzeXN0ZW0gKi8KKworICAgIC8qIE9wZW4gZGV2aWNlLiBudWxs
cHRyIGNhbiBiZSBzcGVjaWZpZWQgYXMgYSBkZXZpY2UuICovCisgICAgLy8gQWxsb3cgZGV2aWNl
X29wZW4oKSB0byBmYWlsLCBpbiB3aGljaCBjYXNlIGRldiBpcyBpbnRlcnByZXRlZAorICAgIC8v
IGJ5IHRoZSBmaWxlIHN5c3RlbSBtb3VudCByb3V0aW5lIChlLmcgemZzIHBvb2xzKQorICAgIGRl
dmljZSA9IDA7CisgICAgaWYgKGRldiAmJiBzdHJuY21wKGRldiwgIi9kZXYvIiwgNSkgPT0gMCkK
KyAgICAgICAgZGV2aWNlX29wZW4oZGV2ICsgNSwgRE9fUkRXUiwgJmRldmljZSk7CisKKyAgICAv
KiBDaGVjayBpZiBkZXZpY2Ugb3IgZGlyZWN0b3J5IGhhcyBhbHJlYWR5IGJlZW4gbW91bnRlZC4g
Ki8KKyAgICAvLyBXZSBuZWVkIHRvIGF2b2lkIHRoZSBzaXR1YXRpb24gd2hlcmUgYWZ0ZXIgd2Ug
YWxyZWFkeSB2ZXJpZmllZCB0aGF0CisgICAgLy8gdGhlIG1vdW50IHBvaW50IGlzIGZyZWUsIGJ1
dCBiZWZvcmUgd2UgYWN0dWFsbHkgYWRkIGl0IHRvIG1vdW50X2xpc3QsCisgICAgLy8gYW5vdGhl
ciBjb25jdXJyZW50IG1vdW50IGFkZHMgaXQuIFNvIHdlIHVzZSBhIG5ldyBtdXRleCB0byBlbnN1
cmUKKyAgICAvLyB0aGF0IG9ubHkgb25lIHN5c19tb3VudCgpIHJ1bnMgYXQgYSB0aW1lLiBXZSBj
YW5ub3QgcmV1c2UgdGhlIGV4aXN0aW5nCisgICAgLy8gbW91bnRfbG9jayBmb3IgdGhpcyBwdXJw
b3NlOiBJZiB3ZSB0YWtlIG1vdW50X2xvY2sgYW5kIHRoZW4gZG8KKyAgICAvLyBsb29rdXBzLCB0
aGlzIGlzIGxvY2sgb3JkZXIgaW52ZXJzaW9uIGFuZCBjYW4gcmVzdWx0IGluIGRlYWRsb2NrLgor
ICAgIHN0YXRpYyBtdXRleCBzeXNfbW91bnRfbG9jazsKKyAgICBTQ09QRV9MT0NLKHN5c19tb3Vu
dF9sb2NrKTsKKyAgICBXSVRIX0xPQ0sobW91bnRfbG9jaykgeworICAgICAgICBmb3IgKGF1dG8m
JiBtcCA6IG1vdW50X2xpc3QpIHsKKyAgICAgICAgICAgIGlmICghc3RyY21wKG1wLT5tX3BhdGgs
IGRpcikgfHwKKyAgICAgICAgICAgICAgICAoZGV2aWNlICYmIG1wLT5tX2RldiA9PSBkZXZpY2Up
KSB7CisgICAgICAgICAgICAgICAgZXJyb3IgPSBFQlVTWTsgIC8qIEFscmVhZHkgbW91bnRlZCAq
LworICAgICAgICAgICAgICAgIGdvdG8gZXJyMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0KKyAgICAvKgorICAgICAqIENyZWF0ZSBWRlMgbW91bnQgZW50cnkuCisgICAgICovCisg
ICAgaWYgKCEobXAgPSBuZXcgbW91bnQpKSB7CisgICAgICAgIGVycm9yID0gRU5PTUVNOworICAg
ICAgICBnb3RvIGVycjE7CisgICAgfQorICAgIG1wLT5tX2NvdW50ID0gMDsKKyAgICBtcC0+bV9v
cCA9IGZzLT52c19vcDsKKyAgICBtcC0+bV9mbGFncyA9IGZsYWdzOworICAgIG1wLT5tX2RldiA9
IGRldmljZTsKKyAgICBtcC0+bV9kYXRhID0gbnVsbHB0cjsKKyAgICBzdHJsY3B5KG1wLT5tX3Bh
dGgsIGRpciwgc2l6ZW9mKG1wLT5tX3BhdGgpKTsKKyAgICBzdHJsY3B5KG1wLT5tX3NwZWNpYWws
IGRldiwgc2l6ZW9mKG1wLT5tX3NwZWNpYWwpKTsKKworICAgIC8qCisgICAgICogR2V0IHZub2Rl
IHRvIGJlIGNvdmVyZWQgaW4gdGhlIHVwcGVyIGZpbGUgc3lzdGVtLgorICAgICAqLworICAgIGlm
ICgqZGlyID09ICcvJyAmJiAqKGRpciArIDEpID09ICdcMCcpIHsKKyAgICAgICAgLyogSWdub3Jl
IGlmIGl0IG1vdW50cyB0byBnbG9iYWwgcm9vdCBkaXJlY3RvcnkuICovCisgICAgICAgIGRwX2Nv
dmVyZWQgPSBudWxscHRyOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmICgoZXJyb3IgPSBuYW1l
aShkaXIsICZkcF9jb3ZlcmVkKSkgIT0gMCkgeworCisgICAgICAgICAgICBlcnJvciA9IEVOT0VO
VDsKKyAgICAgICAgICAgIGdvdG8gZXJyMjsKKyAgICAgICAgfQorICAgICAgICBpZiAoZHBfY292
ZXJlZC0+ZF92bm9kZS0+dl90eXBlICE9IFZESVIpIHsKKyAgICAgICAgICAgIGVycm9yID0gRU5P
VERJUjsKKyAgICAgICAgICAgIGdvdG8gZXJyMzsKKyAgICAgICAgfQorICAgIH0KKyAgICBtcC0+
bV9jb3ZlcmVkID0gZHBfY292ZXJlZDsKKworICAgIC8qCisgICAgICogQ3JlYXRlIGEgcm9vdCB2
bm9kZSBmb3IgdGhpcyBmaWxlIHN5c3RlbS4KKyAgICAgKi8KKyAgICB2Z2V0KG1wLCAwLCAmdnAp
OworICAgIGlmICh2cCA9PSBudWxscHRyKSB7CisgICAgICAgIGVycm9yID0gRU5PTUVNOworICAg
ICAgICBnb3RvIGVycjM7CisgICAgfQorICAgIHZwLT52X3R5cGUgPSBWRElSOworICAgIHZwLT52
X2ZsYWdzID0gVlJPT1Q7CisgICAgdnAtPnZfbW9kZSA9IFNfSUZESVIgfCBTX0lSVVNSIHwgU19J
V1VTUiB8IFNfSVhVU1I7CisKKyAgICBtcC0+bV9yb290ID0gZGVudHJ5X2FsbG9jKG51bGxwdHIs
IHZwLCAiLyIpOworICAgIGlmICghbXAtPm1fcm9vdCkgeworICAgICAgICB2cHV0KHZwKTsKKyAg
ICAgICAgZ290byBlcnIzOworICAgIH0KKyAgICB2cHV0KHZwKTsKKworICAgIC8qCisgICAgICog
Q2FsbCBhIGZpbGUgc3lzdGVtIHNwZWNpZmljIHJvdXRpbmUuCisgICAgICovCisgICAgaWYgKChl
cnJvciA9IFZGU19NT1VOVChtcCwgZGV2LCBmbGFncywgZGF0YSkpICE9IDApCisgICAgICAgIGdv
dG8gZXJyNDsKKworICAgIGlmIChtcC0+bV9mbGFncyAmIE1OVF9SRE9OTFkpCisgICAgICAgIHZw
LT52X21vZGUgJj1+U19JV1VTUjsKKworICAgIC8qCisgICAgICogSW5zZXJ0IHRvIG1vdW50IGxp
c3QKKyAgICAgKi8KKyAgICBXSVRIX0xPQ0sobW91bnRfbG9jaykgeworICAgICAgICBtb3VudF9s
aXN0LnB1c2hfYmFjayhtcCk7CisgICAgfQorCisgICAgcmV0dXJuIDA7ICAgLyogc3VjY2VzcyAq
LworIGVycjQ6CisgICAgZHJlbGUobXAtPm1fcm9vdCk7CisgZXJyMzoKKyAgICBpZiAoZHBfY292
ZXJlZCkKKyAgICAgICAgZHJlbGUoZHBfY292ZXJlZCk7CisgZXJyMjoKKyAgICBkZWxldGUgbXA7
CisgZXJyMToKKyAgICBpZiAoZGV2aWNlKQorICAgICAgICBkZXZpY2VfY2xvc2UoZGV2aWNlKTsK
KworICAgIHJldHVybiBlcnJvcjsKK30KKwordm9pZAorcmVsZWFzZV9tcF9kZW50cmllcyhzdHJ1
Y3QgbW91bnQgKm1wKQoreworICAgIC8qIERlY3JlbWVudCByZWZlcmVjZSBjb3VudCBvZiByb290
IHZub2RlICovCisgICAgaWYgKG1wLT5tX2NvdmVyZWQpIHsKKyAgICAgICAgZHJlbGUobXAtPm1f
Y292ZXJlZCk7CisgICAgfQorCisgICAgLyogUmVsZWFzZSByb290IGRlbnRyeSAqLworICAgIGRy
ZWxlKG1wLT5tX3Jvb3QpOworfQorCitpbnQKK3N5c191bW91bnQyKGNvbnN0IGNoYXIgKnBhdGgs
IGludCBmbGFncykKK3sKKyAgICBzdHJ1Y3QgbW91bnQgKm1wOworICAgIGludCBlcnJvciwgcGF0
aGxlbjsKKworICAgIGtwcmludGYoIlZGUzogdW5tb3VudGluZyAlc1xuIiwgcGF0aCk7CisKKyAg
ICBTQ09QRV9MT0NLKG1vdW50X2xvY2spOworCisgICAgcGF0aGxlbiA9IHN0cmxlbihwYXRoKTsK
KyAgICBpZiAocGF0aGxlbiA+PSBNQVhQQVRITEVOKSB7CisgICAgICAgIGVycm9yID0gRU5BTUVU
T09MT05HOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAgICAvKiBHZXQgbW91bnQgZW50
cnkgKi8KKyAgICBmb3IgKGF1dG8mJiB0bXAgOiBtb3VudF9saXN0KSB7CisgICAgICAgIGlmICgh
c3RyY21wKHBhdGgsIHRtcC0+bV9wYXRoKSkgeworICAgICAgICAgICAgbXAgPSB0bXA7CisgICAg
ICAgICAgICBnb3RvIGZvdW5kOworICAgICAgICB9CisgICAgfQorCisgICAgZXJyb3IgPSBFSU5W
QUw7CisgICAgZ290byBvdXQ7CisKK2ZvdW5kOgorICAgIC8qCisgICAgICogUm9vdCBmcyBjYW4g
bm90IGJlIHVubW91bnRlZC4KKyAgICAgKi8KKyAgICBpZiAobXAtPm1fY292ZXJlZCA9PSBudWxs
cHRyICYmICEoZmxhZ3MgJiBNTlRfRk9SQ0UpKSB7CisgICAgICAgIGVycm9yID0gRUlOVkFMOwor
ICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAgICBpZiAoKGVycm9yID0gVkZTX1VOTU9VTlQo
bXAsIGZsYWdzKSkgIT0gMCkKKyAgICAgICAgZ290byBvdXQ7CisgICAgbW91bnRfbGlzdC5yZW1v
dmUobXApOworCisjaWZkZWYgSEFWRV9CVUZGRVJTCisgICAgLyogRmx1c2ggYWxsIGJ1ZmZlcnMg
Ki8KKyAgICBiaW52YWwobXAtPm1fZGV2KTsKKyNlbmRpZgorCisgICAgaWYgKG1wLT5tX2RldikK
KyAgICAgICAgZGV2aWNlX2Nsb3NlKG1wLT5tX2Rldik7CisgICAgZGVsZXRlIG1wOworIG91dDoK
KyAgICByZXR1cm4gZXJyb3I7Cit9CisKK2ludAorc3lzX3Vtb3VudChjb25zdCBjaGFyICpwYXRo
KQoreworICAgIHJldHVybiBzeXNfdW1vdW50MihwYXRoLCAwKTsKK30KKworaW50CitzeXNfcGl2
b3Rfcm9vdChjb25zdCBjaGFyICpuZXdfcm9vdCwgY29uc3QgY2hhciAqcHV0X29sZCkKK3sKKyAg
ICBzdHJ1Y3QgbW91bnQgKm5ld21wID0gbnVsbHB0ciwgKm9sZG1wID0gbnVsbHB0cjsKKyAgICBp
bnQgZXJyb3I7CisKKyAgICBXSVRIX0xPQ0sobW91bnRfbG9jaykgeworICAgICAgICBmb3IgKGF1
dG8mJiBtcCA6IG1vdW50X2xpc3QpIHsKKyAgICAgICAgICAgIGlmICghc3RyY21wKG1wLT5tX3Bh
dGgsIG5ld19yb290KSkgeworICAgICAgICAgICAgICAgIG5ld21wID0gbXA7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBpZiAoIXN0cmNtcChtcC0+bV9wYXRoLCBwdXRfb2xkKSkgeworICAg
ICAgICAgICAgICAgIG9sZG1wID0gbXA7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKCFuZXdtcCB8fCAhb2xkbXAgfHwgbmV3bXAgPT0gb2xkbXApIHsKKyAgICAgICAgICAg
IHJldHVybiBFSU5WQUw7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChhdXRvJiYgbXAgOiBtb3Vu
dF9saXN0KSB7CisgICAgICAgICAgICBpZiAobXAgPT0gbmV3bXAgfHwgbXAgPT0gb2xkbXApIHsK
KyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlm
ICghc3RybmNtcChtcC0+bV9wYXRoLCBwdXRfb2xkLCBzdHJsZW4ocHV0X29sZCkpKSB7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIEVCVVNZOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIGlmICgoZXJyb3IgPSBWRlNfVU5NT1VOVChvbGRtcCwgMCkpICE9IDApIHsKKyAgICAgICAg
ICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBtb3VudF9saXN0LnJlbW92ZShv
bGRtcCk7CisKKyAgICAgICAgbmV3bXAtPm1fcm9vdC0+ZF92bm9kZS0+dl9tb3VudCA9IG5ld21w
OworCisgICAgICAgIGlmIChuZXdtcC0+bV9jb3ZlcmVkKSB7CisgICAgICAgICAgICBkcmVsZShu
ZXdtcC0+bV9jb3ZlcmVkKTsKKyAgICAgICAgfQorICAgICAgICBuZXdtcC0+bV9jb3ZlcmVkID0g
bnVsbHB0cjsKKworICAgICAgICBpZiAobmV3bXAtPm1fcm9vdC0+ZF9wYXJlbnQpIHsKKyAgICAg
ICAgICAgIGRyZWxlKG5ld21wLT5tX3Jvb3QtPmRfcGFyZW50KTsKKyAgICAgICAgfQorICAgICAg
ICBuZXdtcC0+bV9yb290LT5kX3BhcmVudCA9IG51bGxwdHI7CisKKyAgICAgICAgc3RybGNweShu
ZXdtcC0+bV9wYXRoLCAiLyIsIHNpemVvZihuZXdtcC0+bV9wYXRoKSk7CisgICAgfQorICAgIHJl
dHVybiAwOworfQorCitpbnQKK3N5c19zeW5jKHZvaWQpCit7CisgICAgLyogQ2FsbCBlYWNoIG1v
dW50ZWQgZmlsZSBzeXN0ZW0uICovCisgICAgV0lUSF9MT0NLKG1vdW50X2xvY2spIHsKKyAgICAg
ICAgZm9yIChhdXRvJiYgbXAgOiBtb3VudF9saXN0KSB7CisgICAgICAgICAgICBWRlNfU1lOQyht
cCk7CisgICAgICAgIH0KKyAgICB9CisjaWZkZWYgSEFWRV9CVUZGRVJTCisgICAgYmlvX3N5bmMo
KTsKKyNlbmRpZgorICAgIHJldHVybiAwOworfQorCisvKgorICogQ29tcGFyZSB0d28gcGF0aCBz
dHJpbmdzLiBSZXR1cm4gbWF0Y2hlZCBsZW5ndGguCisgKiBAcGF0aDogdGFyZ2V0IHBhdGguCisg
KiBAcm9vdDogdmZzIHJvb3QgcGF0aCBhcyBtb3VudCBwb2ludC4KKyAqLworc3RhdGljIHNpemVf
dAorY291bnRfbWF0Y2goY29uc3QgY2hhciAqcGF0aCwgY2hhciAqbW91bnRfcm9vdCkKK3sKKyAg
ICBzaXplX3QgbGVuID0gMDsKKworICAgIHdoaWxlICgqcGF0aCAmJiAqbW91bnRfcm9vdCkgewor
ICAgICAgICBpZiAoKnBhdGggIT0gKm1vdW50X3Jvb3QpCisgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICBwYXRoKys7CisgICAgICAgIG1vdW50X3Jvb3QrKzsKKyAgICAgICAgbGVuKys7Cisg
ICAgfQorICAgIGlmICgqbW91bnRfcm9vdCAhPSAnXDAnKQorICAgICAgICByZXR1cm4gMDsKKwor
ICAgIGlmIChsZW4gPT0gMSAmJiAqKHBhdGggLSAxKSA9PSAnLycpCisgICAgICAgIHJldHVybiAx
OworCisgICAgaWYgKCpwYXRoID09ICdcMCcgfHwgKnBhdGggPT0gJy8nKQorICAgICAgICByZXR1
cm4gbGVuOworICAgIHJldHVybiAwOworfQorCisvKgorICogR2V0IHRoZSByb290IGRpcmVjdG9y
eSBhbmQgbW91bnQgcG9pbnQgZm9yIHNwZWNpZmllZCBwYXRoLgorICogQHBhdGg6IGZ1bGwgcGF0
aC4KKyAqIEBtcDogbW91bnQgcG9pbnQgdG8gcmV0dXJuLgorICogQHJvb3Q6IHBvaW50ZXIgdG8g
cm9vdCBkaXJlY3RvcnkgaW4gcGF0aC4KKyAqLworaW50Cit2ZnNfZmluZHJvb3QoY29uc3QgY2hh
ciAqcGF0aCwgc3RydWN0IG1vdW50ICoqbXAsIGNoYXIgKipyb290KQoreworICAgIHN0cnVjdCBt
b3VudCAqbSA9IG51bGxwdHI7CisgICAgc2l6ZV90IGxlbiwgbWF4X2xlbiA9IDA7CisKKyAgICBp
ZiAoIXBhdGgpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIC8qIEZpbmQgbW91bnQgcG9pbnQg
ZnJvbSBuZWFyZXN0IHBhdGggKi8KKyAgICBTQ09QRV9MT0NLKG1vdW50X2xvY2spOworICAgIGZv
ciAoYXV0byYmIHRtcCA6IG1vdW50X2xpc3QpIHsKKyAgICAgICAgbGVuID0gY291bnRfbWF0Y2go
cGF0aCwgdG1wLT5tX3BhdGgpOworICAgICAgICBpZiAobGVuID4gbWF4X2xlbikgeworICAgICAg
ICAgICAgbWF4X2xlbiA9IGxlbjsKKyAgICAgICAgICAgIG0gPSB0bXA7CisgICAgICAgIH0KKyAg
ICB9CisgICAgaWYgKG0gPT0gbnVsbHB0cikKKyAgICAgICAgcmV0dXJuIC0xOworICAgICpyb290
ID0gKGNoYXIgKikocGF0aCArIG1heF9sZW4pOworICAgIGlmICgqKnJvb3QgPT0gJy8nKQorICAg
ICAgICAoKnJvb3QpKys7CisgICAgKm1wID0gbTsKKyAgICByZXR1cm4gMDsKK30KKworLyoKKyAq
IE1hcmsgYSBtb3VudCBwb2ludCBhcyBidXN5LgorICovCit2b2lkCit2ZnNfYnVzeShzdHJ1Y3Qg
bW91bnQgKm1wKQoreworICAgIFNDT1BFX0xPQ0sobW91bnRfbG9jayk7CisgICAgbXAtPm1fY291
bnQrKzsKK30KKworCisvKgorICogTWFyayBhIG1vdW50IHBvaW50IGFzIGJ1c3kuCisgKi8KK3Zv
aWQKK3Zmc191bmJ1c3koc3RydWN0IG1vdW50ICptcCkKK3sKKyAgICBTQ09QRV9MT0NLKG1vdW50
X2xvY2spOworICAgIG1wLT5tX2NvdW50LS07Cit9CisKK2ludAordmZzX251bGxvcCh2b2lkKQor
eworICAgIHJldHVybiAwOworfQorCitpbnQKK3Zmc19laW52YWwodm9pZCkKK3sKKyAgICByZXR1
cm4gRUlOVkFMOworfQorCituYW1lc3BhY2Ugb3N2IHsKKworbW91bnRfZGVzYyB0b19tb3VudF9k
ZXNjKG1vdW50KiBtKQoreworICAgIG1vdW50X2Rlc2MgcmV0OworICAgIHJldC5zcGVjaWFsID0g
bS0+bV9zcGVjaWFsOworICAgIHJldC5wYXRoID0gbS0+bV9wYXRoOworICAgIHJldC50eXBlID0g
ZnNfZ2V0ZnNuYW1lKG0tPm1fb3ApOworICAgIC8vIEZJWE1FOiByZWNvcmQgb3B0aW9ucworICAg
IHJldC5vcHRpb25zID0gIiI7CisgICAgcmV0dXJuIHJldDsKK30KKworc3RkOjp2ZWN0b3I8bW91
bnRfZGVzYz4KK2N1cnJlbnRfbW91bnRzKCkKK3sKKyAgICBXSVRIX0xPQ0sobW91bnRfbG9jaykg
eworICAgICAgICBzdGQ6OnZlY3Rvcjxtb3VudF9kZXNjPiByZXQ7CisgICAgICAgIGZvciAoYXV0
byYmIG1wIDogbW91bnRfbGlzdCkgeworICAgICAgICAgICAgcmV0LnB1c2hfYmFjayh0b19tb3Vu
dF9kZXNjKG1wKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJldDsKKyAgICB9Cit9CisK
K30KKworI2lmZGVmIERFQlVHX1ZGUwordm9pZAorbW91bnRfZHVtcCh2b2lkKQoreworICAgIFND
T1BFX0xPQ0sobW91bnRfbG9jayk7CisKKyAgICBrcHJpbnRmKCJtb3VudF9kdW1wXG4iKTsKKyAg
ICBrcHJpbnRmKCJkZXYgICAgICBjb3VudCByb290XG4iKTsKKyAgICBrcHJpbnRmKCItLS0tLS0t
LSAtLS0tLSAtLS0tLS0tLVxuIik7CisKKyAgICBmb3IgKGF1dG8mJiBtcCA6IG1vdW50X2xpc3Qp
IHsKKyAgICAgICAga3ByaW50ZigiJTh4ICU1ZCAlc1xuIiwgbXAtPm1fZGV2LCBtcC0+bV9jb3Vu
dCwgbXAtPm1fcGF0aCk7CisgICAgfQorfQorI2VuZGlmCmRpZmYgLS1naXQgYS9saWIvdmZzY29y
ZS9zdWJyX3Vpby5jIGIvbGliL3Zmc2NvcmUvc3Vicl91aW8uYwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMC4uYmYxMzhiOGUKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvdmZzY29y
ZS9zdWJyX3Vpby5jCkBAIC0wLDAgKzEsNzMgQEAKKy8qLQorICogQ29weXJpZ2h0IChjKSAxOTgy
LCAxOTg2LCAxOTkxLCAxOTkzCisgKglUaGUgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBD
YWxpZm9ybmlhLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIChjKSBVTklYIFN5c3RlbSBMYWJv
cmF0b3JpZXMsIEluYy4KKyAqIEFsbCBvciBzb21lIHBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUg
ZGVyaXZlZCBmcm9tIG1hdGVyaWFsIGxpY2Vuc2VkCisgKiB0byB0aGUgVW5pdmVyc2l0eSBvZiBD
YWxpZm9ybmlhIGJ5IEFtZXJpY2FuIFRlbGVwaG9uZSBhbmQgVGVsZWdyYXBoCisgKiBDby4gb3Ig
VW5peCBTeXN0ZW0gTGFib3JhdG9yaWVzLCBJbmMuIGFuZCBhcmUgcmVwcm9kdWNlZCBoZXJlaW4g
d2l0aAorICogdGhlIHBlcm1pc3Npb24gb2YgVU5JWCBTeXN0ZW0gTGFib3JhdG9yaWVzLCBJbmMu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKiA0LiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBVbml2ZXJzaXR5IG5vciB0
aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCisgKiAgICB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBSRUdFTlRTIEFORCBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgUkVHRU5UUyBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAq
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICoKKyAqCUAoIylrZXJuX3N1YnIuYwk4
LjMgKEJlcmtlbGV5KSAxLzIxLzk0CisgKi8KKworI2luY2x1ZGUgPGFzc2VydC5oPgorI2luY2x1
ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+Cisj
aW5jbHVkZSA8b3N2L3Vpby5oPgorCitpbnQKK3Vpb21vdmUodm9pZCAqY3AsIGludCBuLCBzdHJ1
Y3QgdWlvICp1aW8pCit7CisJYXNzZXJ0KHVpby0+dWlvX3J3ID09IFVJT19SRUFEIHx8IHVpby0+
dWlvX3J3ID09IFVJT19XUklURSk7CisKKwl3aGlsZSAobiA+IDAgJiYgdWlvLT51aW9fcmVzaWQp
IHsKKwkJc3RydWN0IGlvdmVjICppb3YgPSB1aW8tPnVpb19pb3Y7CisJCWludCBjbnQgPSBpb3Yt
Pmlvdl9sZW47CisJCWlmIChjbnQgPT0gMCkgeworCQkJdWlvLT51aW9faW92Kys7CisJCQl1aW8t
PnVpb19pb3ZjbnQtLTsKKwkJCWNvbnRpbnVlOworCQl9CisJCWlmIChjbnQgPiBuKQorCQkJY250
ID0gbjsKKworCQlpZiAodWlvLT51aW9fcncgPT0gVUlPX1JFQUQpCisJCQltZW1jcHkoaW92LT5p
b3ZfYmFzZSwgY3AsIGNudCk7CisJCWVsc2UKKwkJCW1lbWNweShjcCwgaW92LT5pb3ZfYmFzZSwg
Y250KTsKKworCQlpb3YtPmlvdl9iYXNlID0gKGNoYXIgKilpb3YtPmlvdl9iYXNlICsgY250Owor
CQlpb3YtPmlvdl9sZW4gLT0gY250OworCQl1aW8tPnVpb19yZXNpZCAtPSBjbnQ7CisJCXVpby0+
dWlvX29mZnNldCArPSBjbnQ7CisJCWNwID0gKGNoYXIgKiljcCArIGNudDsKKwkJbiAtPSBjbnQ7
CisJfQorCisJcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9zeXNjYWxscy5j
IGIvbGliL3Zmc2NvcmUvc3lzY2FsbHMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMC4uNDg3ZDU3MjkKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvdmZzY29yZS9zeXNjYWxscy5j
CkBAIC0wLDAgKzEsMTQ4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBDbG91ZGl1cyBT
eXN0ZW1zLCBMdGQuCisgKgorICogVGhpcyB3b3JrIGlzIG9wZW4gc291cmNlIHNvZnR3YXJlLCBs
aWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlCisgKiBCU0QgbGljZW5zZSBhcyBkZXNjcmli
ZWQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgdG9wLWxldmVsIGRpcmVjdG9yeS4KKyAqLwor
CisvKgorICogQ29weXJpZ2h0IChjKSAyMDA1LTIwMDcsIEtvaHN1a2UgT2h0YW5pCisgKiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUg
YXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgYW55IGNvLWNvbnRyaWJ1dG9ycworICogICAgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNv
ZnR3YXJlCisgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisvKgor
ICogdmZzX3N5c2NhbGxzLmMgLSBldmVyeXRoaW5nIGluIHRoaXMgZmlsZSBpcyBhIHJvdXRpbmUg
aW1wbGVtZW50aW5nCisgKiAgICAgICAgICAgICAgICAgIGEgVkZTIHN5c3RlbSBjYWxsLgorICov
CisKKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPGRpcmVudC5oPgorCisjaW5jbHVk
ZSA8bGltaXRzLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+Cisj
aW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxlcnJuby5o
PgorI2luY2x1ZGUgPGZjbnRsLmg+CisKKyNpbmNsdWRlIDxvc3YvcHJleC5oPgorI2luY2x1ZGUg
PG9zdi92bm9kZS5oPgorI2luY2x1ZGUgPG9zdi92ZnNfZmlsZS5oaD4KKyNpbmNsdWRlICJ2ZnMu
aCIKKyNpbmNsdWRlIDxmcy9mcy5oaD4KKworZXh0ZXJuIHN0cnVjdCB0YXNrICptYWluX3Rhc2s7
CisKK3N0YXRpYyBpbnQKK29wZW5fbm9fZm9sbG93X2NoayhjaGFyICpwYXRoKQoreworCWludCAg
ICAgICAgICAgZXJyb3I7CisJc3RydWN0IGRlbnRyeSAqZGRwOworCWNoYXIgICAgICAgICAgKm5h
bWU7CisJc3RydWN0IGRlbnRyeSAqZHA7CisJc3RydWN0IHZub2RlICAqdnA7CisKKwlkZHAgPSBu
dWxscHRyOworCWRwICA9IG51bGxwdHI7CisJdnAgID0gbnVsbHB0cjsKKworCWVycm9yID0gbG9v
a3VwKHBhdGgsICZkZHAsICZuYW1lKTsKKwlpZiAoZXJyb3IpIHsKKwkJcmV0dXJuIChlcnJvcik7
CisJfQorCisJZXJyb3IgPSBuYW1laV9sYXN0X25vZm9sbG93KHBhdGgsIGRkcCwgJmRwKTsKKwlp
ZiAoZXJyb3IpIHsKKwkJZ290byBvdXQ7CisJfQorCisJdnAgPSBkcC0+ZF92bm9kZTsKKwl2bl9s
b2NrKHZwKTsKKwlpZiAodnAtPnZfdHlwZSA9PSBWTE5LKSB7CisJCWVycm9yID0gRUxPT1A7CisJ
CWdvdG8gb3V0OworCX0KKworCWVycm9yID0gMDsKK291dDoKKwlpZiAodnAgIT0gbnVsbHB0cikg
eworCQl2bl91bmxvY2sodnApOworCX0KKworCWlmIChkcCAhPSBudWxscHRyKSB7CisJCWRyZWxl
KGRwKTsKKwl9CisKKwlpZiAoZGRwICE9IG51bGxwdHIpIHsKKwkJZHJlbGUoZGRwKTsKKwl9CisK
KwlyZXR1cm4gKGVycm9yKTsKK30KKworaW50CitzeXNfb3BlbihjaGFyICpwYXRoLCBpbnQgZmxh
Z3MsIG1vZGVfdCBtb2RlLCBzdHJ1Y3QgZmlsZSAqKmZwcCkKK3sKKwlmaWxlICpmcDsKKwlzdHJ1
Y3QgZGVudHJ5ICpkcCwgKmRkcDsKKwlzdHJ1Y3Qgdm5vZGUgKnZwOworCWNoYXIgKmZpbGVuYW1l
OworCWludCBlcnJvcjsKKworCURQUklOVEYoVkZTREJfU1lTQ0FMTCwgKCJzeXNfb3BlbjogcGF0
aD0lcyBmbGFncz0leCBtb2RlPSV4XG4iLAorCQkJCXBhdGgsIGZsYWdzLCBtb2RlKSk7CisKKwlm
bGFncyA9IGZmbGFncyhmbGFncyk7CisJaWYgKGZsYWdzICYgT19DUkVBVCkgeworCQllcnJvciA9
IG5hbWVpKHBhdGgsICZkcCk7CisJCWlmIChlcnJvciA9PSBFTk9FTlQpIHsKKwkJCS8qIENyZWF0
ZSBuZXcgZmlsZS4gKi8KKwkJCWlmICgoZXJyb3IgPSBsb29rdXAocGF0aCwgJmRkcCwgJmZpbGVu
YW1lKSkgIT0gMCkKKwkJCQlyZXR1cm4gZXJyb3I7CisKKwkJCXZuX2xvY2soZGRwLT5kX3Zub2Rl
KTsKKwkJCWlmICgoZXJyb3IgPSB2bl9hY2Nlc3MoZGRwLT5kX3Zub2RlLCBWV1JJVEUpKSAhPSAw
KSB7CisJCQkJdm5fdW5sb2NrKGRkcC0+ZF92bm9kZSk7CisJCQkJZHJlbGUoZGRwKTsKKwkJCQly
ZXR1cm4gZXJyb3I7CisJCQl9CisJCQltb2RlICY9IH5TX0lGTVQ7CisJCQltb2RlIHw9IFNfSUZS
RUc7CisJCQllcnJvciA9IFZPUF9DUkVBVEUoZGRwLT5kX3Zub2RlLCBmaWxlbmFtZSwgbW9kZSk7
CisJCQl2bl91bmxvY2soZGRwLT5kX3Zub2RlKTsKKwkJCWRyZWxlKGRkcCk7CisKKwkJCWlmIChl
cnJvcikKKwkJCQlyZXR1cm4gZXJyb3I7CisJCQlpZiAoKGVycm9yID0gbmFtZWkocGF0aCwgJmRw
KSkgIT0gMCkKKwkJCQlyZXR1cm4gZXJyb3I7CisKKwkJCXZwID0gZHAtPmRfdm5vZGU7CisJCQlm
bGFncyAmPSB+T19UUlVOQzsKKwkJfSBlbHNlIGlmIChlcnJvcikgeworCQkJcmV0dXJuIGVycm9y
OworCQl9IGVsc2UgeworCQkJLyogRmlsZSBhbHJlYWR5IGV4aXRzICovCisJCQlpZiAoZmxhZ3Mg
JiBPX0VYQ0wpIHsKKwkJCQllcnJvciA9IEVFWElTVDsKKwkJCQlnb3RvIG91dF9kcmVsZTsKKwkJ
CX0KKwkJfQorCisJCXZwID0gZHAtPmRfdm5vZGU7CisJCWZsYWdzICY9IH5PX0NSRUFUOworCX0g
ZWxzZSB7CisJCS8qIE9wZW4gKi8KKwkJaWYgKGZsYWdzICYgT19OT0ZPTExPVykgeworCQkJZXJy
b3IgPSBvcGVuX25vX2ZvbGxvd19jaGsocGF0aCk7CisJCQlpZiAoZXJyb3IgIT0gMCkgeworCQkJ
CXJldHVybiAoZXJyb3IpOworCQkJfQorCQl9CisJCWVycm9yID0gbmFtZWkocGF0aCwgJmRwKTsK
KwkJaWYgKGVycm9yKQorCQkJcmV0dXJuIGVycm9yOworCisJCXZwID0gZHAtPmRfdm5vZGU7CisK
KwkJaWYgKGZsYWdzICYgRldSSVRFIHx8IGZsYWdzICYgT19UUlVOQykgeworCQkJZXJyb3IgPSB2
bl9hY2Nlc3ModnAsIFZXUklURSk7CisJCQlpZiAoZXJyb3IpCisJCQkJZ290byBvdXRfZHJlbGU7
CisKKwkJCWVycm9yID0gRUlTRElSOworCQkJaWYgKHZwLT52X3R5cGUgPT0gVkRJUikKKwkJCQln
b3RvIG91dF9kcmVsZTsKKwkJfQorCQlpZiAoZmxhZ3MgJiBPX0RJUkVDVE9SWSkgeworCQkgICAg
aWYgKHZwLT52X3R5cGUgIT0gVkRJUikgeworCQkgICAgICAgIGVycm9yID0gRU5PVERJUjsKKwkJ
ICAgICAgICBnb3RvIG91dF9kcmVsZTsKKwkJICAgIH0KKwkJfQorCX0KKworCXZuX2xvY2sodnAp
OworCS8qIFByb2Nlc3MgdHJ1bmNhdGUgcmVxdWVzdCAqLworCWlmIChmbGFncyAmIE9fVFJVTkMp
IHsKKwkJZXJyb3IgPSBFSU5WQUw7CisJCWlmICghKGZsYWdzICYgRldSSVRFKSB8fCB2cC0+dl90
eXBlID09IFZESVIpCisJCQlnb3RvIG91dF92bl91bmxvY2s7CisKKwkJZXJyb3IgPSBWT1BfVFJV
TkNBVEUodnAsIDApOworCQlpZiAoZXJyb3IpCisJCQlnb3RvIG91dF92bl91bmxvY2s7CisJfQor
CisJdHJ5IHsKKwkgICAgZmlsZXJlZiBmID0gbWFrZV9maWxlPHZmc19maWxlPihmbGFncyk7CisJ
ICAgIGZwID0gZi5nZXQoKTsKKwkgICAgZmhvbGQoZnApOworCX0gY2F0Y2ggKGludCBlcnIpIHsK
KwkgICAgZXJyb3IgPSBlcnI7CisJICAgIGdvdG8gb3V0X3ZuX3VubG9jazsKKwl9CisJLy8gY2hh
bmdlIHRvIHN0ZDo6bW92ZSBvbmNlIGRwIGlzIGEgZGVudHJ5X3JlZgorCWZwLT5mX2RlbnRyeSA9
IGRlbnRyeV9yZWYoZHAsIGZhbHNlKTsKKwlkcCA9IG51bGxwdHI7CisKKwllcnJvciA9IFZPUF9P
UEVOKHZwLCBmcCk7CisJaWYgKGVycm9yKSB7CisJCXZuX3VubG9jayh2cCk7CisJCS8vIE5vdGUg
ZGlyZWN0IGRlbGV0ZSBvZiBmcCBpbnN0ZWFkIG9mIGZkcm9wKGZwKS4gZnAgd2FzIG5ldmVyCisJ
CS8vIHJldHVybmVkIHNvIGNhbm5vdCBiZSBpbiB1c2UsIGFuZCBiZWNhdXNlIGl0IHdhc24ndCBv
cGVuZWQKKwkJLy8gaXQgY2Fubm90IGJlIGNsb3NlKCllZC4KKwkJZGVsZXRlIGZwOworCQlyZXR1
cm4gZXJyb3I7CisJfQorCXZuX3VubG9jayh2cCk7CisKKwkqZnBwID0gZnA7CisJcmV0dXJuIDA7
CisKK291dF92bl91bmxvY2s6CisJdm5fdW5sb2NrKHZwKTsKK291dF9kcmVsZToKKwlpZiAoZHAp
IHsKKwkJZHJlbGUoZHApOworCX0KKwlyZXR1cm4gZXJyb3I7Cit9CisKK2ludAorc3lzX2Nsb3Nl
KHN0cnVjdCBmaWxlICpmcCkKK3sKKworCXJldHVybiAwOworfQorCitpbnQKK3N5c19yZWFkKHN0
cnVjdCBmaWxlICpmcCwgY29uc3Qgc3RydWN0IGlvdmVjICppb3YsIHNpemVfdCBuaW92LAorCQlv
ZmZfdCBvZmZzZXQsIHNpemVfdCAqY291bnQpCit7CisgICAgaWYgKChmcC0+Zl9mbGFncyAmIEZS
RUFEKSA9PSAwKQorICAgICAgICByZXR1cm4gRUJBREY7CisKKyAgICBzaXplX3QgYnl0ZXMgPSAw
OworICAgIGF1dG8gaW92cCA9IGlvdjsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbmlv
djsgaSsrKSB7CisgICAgICAgIGlmIChpb3ZwLT5pb3ZfbGVuID4gSU9TSVpFX01BWCAtIGJ5dGVz
KSB7CisgICAgICAgICAgICByZXR1cm4gRUlOVkFMOworICAgICAgICB9CisgICAgICAgIGJ5dGVz
ICs9IGlvdnAtPmlvdl9sZW47CisgICAgICAgIGlvdnArKzsKKyAgICB9CisKKyAgICBpZiAoYnl0
ZXMgPT0gMCkgeworICAgICAgICAqY291bnQgPSAwOworICAgICAgICByZXR1cm4gMDsKKyAgICB9
CisKKyAgICBzdHJ1Y3QgdWlvIHVpbzsKKyAgICAvLyBVbmZvcnR1bmF0ZWx5LCB0aGUgY3VycmVu
dCBpbXBsZW1lbnRhdGlvbiBvZiBmcC0+cmVhZCB6ZXJvcyB0aGUKKyAgICAvLyBpb3ZfbGVuIGZp
ZWxkcyB3aGVuIGl0IHJlYWRzIGZyb20gZGlzaywgc28gd2UgaGF2ZSB0byBjb3B5IGlvdi4KKyAg
ICBzdGQ6OnZlY3Rvcjxpb3ZlYz4gY29weV9pb3YoaW92LCBpb3YgKyBuaW92KTsKKyAgICB1aW8u
dWlvX2lvdiA9IGNvcHlfaW92LmRhdGEoKTsKKyAgICB1aW8udWlvX2lvdmNudCA9IG5pb3Y7Cisg
ICAgdWlvLnVpb19vZmZzZXQgPSBvZmZzZXQ7CisgICAgdWlvLnVpb19yZXNpZCA9IGJ5dGVzOwor
ICAgIHVpby51aW9fcncgPSBVSU9fUkVBRDsKKyAgICBhdXRvIGVycm9yID0gZnAtPnJlYWQoJnVp
bywgKG9mZnNldCA9PSAtMSkgPyAwIDogRk9GX09GRlNFVCk7CisgICAgKmNvdW50ID0gYnl0ZXMg
LSB1aW8udWlvX3Jlc2lkOworICAgIHJldHVybiBlcnJvcjsKK30KKworaW50CitzeXNfd3JpdGUo
c3RydWN0IGZpbGUgKmZwLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlvdiwgc2l6ZV90IG5pb3YsCisJ
CW9mZl90IG9mZnNldCwgc2l6ZV90ICpjb3VudCkKK3sKKyAgICBpZiAoKGZwLT5mX2ZsYWdzICYg
RldSSVRFKSA9PSAwKQorICAgICAgICByZXR1cm4gRUJBREY7CisKKyAgICBzaXplX3QgYnl0ZXMg
PSAwOworICAgIGF1dG8gaW92cCA9IGlvdjsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bmlvdjsgaSsrKSB7CisgICAgICAgIGlmIChpb3ZwLT5pb3ZfbGVuID4gSU9TSVpFX01BWCAtIGJ5
dGVzKSB7CisgICAgICAgICAgICByZXR1cm4gRUlOVkFMOworICAgICAgICB9CisgICAgICAgIGJ5
dGVzICs9IGlvdnAtPmlvdl9sZW47CisgICAgICAgIGlvdnArKzsKKyAgICB9CisKKyAgICBpZiAo
Ynl0ZXMgPT0gMCkgeworICAgICAgICAqY291bnQgPSAwOworICAgICAgICByZXR1cm4gMDsKKyAg
ICB9CisKKyAgICBzdHJ1Y3QgdWlvIHVpbzsKKyAgICAvLyBVbmZvcnR1bmF0ZWx5LCB0aGUgY3Vy
cmVudCBpbXBsZW1lbnRhdGlvbiBvZiBmcC0+d3JpdGUgemVyb3MgdGhlCisgICAgLy8gaW92X2xl
biBmaWVsZHMgd2hlbiBpdCB3cml0ZXMgdG8gZGlzaywgc28gd2UgaGF2ZSB0byBjb3B5IGlvdi4K
KyAgICBzdGQ6OnZlY3Rvcjxpb3ZlYz4gY29weV9pb3YoaW92LCBpb3YgKyBuaW92KTsKKyAgICB1
aW8udWlvX2lvdiA9IGNvcHlfaW92LmRhdGEoKTsKKyAgICB1aW8udWlvX2lvdmNudCA9IG5pb3Y7
CisgICAgdWlvLnVpb19vZmZzZXQgPSBvZmZzZXQ7CisgICAgdWlvLnVpb19yZXNpZCA9IGJ5dGVz
OworICAgIHVpby51aW9fcncgPSBVSU9fV1JJVEU7CisgICAgYXV0byBlcnJvciA9IGZwLT53cml0
ZSgmdWlvLCAob2Zmc2V0ID09IC0xKSA/IDAgOiBGT0ZfT0ZGU0VUKTsKKyAgICAqY291bnQgPSBi
eXRlcyAtIHVpby51aW9fcmVzaWQ7CisgICAgcmV0dXJuIGVycm9yOworfQorCitpbnQKK3N5c19s
c2VlayhzdHJ1Y3QgZmlsZSAqZnAsIG9mZl90IG9mZiwgaW50IHR5cGUsIG9mZl90ICpvcmlnaW4p
Cit7CisJc3RydWN0IHZub2RlICp2cDsKKworCURQUklOVEYoVkZTREJfU1lTQ0FMTCwgKCJzeXNf
c2VlazogZnA9JXggb2ZmPSVkIHR5cGU9JWRcbiIsCisJCQkJKHVfbG9uZylmcCwgKHVfaW50KW9m
ZiwgdHlwZSkpOworCisJaWYgKCFmcC0+Zl9kZW50cnkpIHsKKwkgICAgLy8gTGludXggZG9lc24n
dCBpbXBsZW1lbnQgbHNlZWsoKSBvbiBwaXBlcywgc29ja2V0cywgb3IgdHR5cy4KKwkgICAgLy8g
SW4gT1NWLCB3ZSBvbmx5IGltcGxlbWVudCBsc2VlaygpIG9uIHJlZ3VsYXIgZmlsZXMsIGJhY2tl
ZCBieSB2bm9kZQorCSAgICByZXR1cm4gRVNQSVBFOworCX0KKworCXZwID0gZnAtPmZfZGVudHJ5
LT5kX3Zub2RlOworCWludCBlcnJvciA9IEVJTlZBTDsKKwl2bl9sb2NrKHZwKTsKKwlzd2l0Y2gg
KHR5cGUpIHsKKwljYXNlIFNFRUtfQ1VSOgorCQlvZmYgPSBmcC0+Zl9vZmZzZXQgKyBvZmY7CisJ
CWJyZWFrOworCWNhc2UgU0VFS19FTkQ6CisJCW9mZiA9IHZwLT52X3NpemUgKyBvZmY7CisJCWJy
ZWFrOworCX0KKwlpZiAob2ZmID49IDApIHsKKwkJZXJyb3IgPSBWT1BfU0VFSyh2cCwgZnAsIGZw
LT5mX29mZnNldCwgb2ZmKTsKKwkJaWYgKCFlcnJvcikgeworCQkJKm9yaWdpbiAgICAgID0gb2Zm
OworCQkJZnAtPmZfb2Zmc2V0ID0gb2ZmOworCQl9CisJfQorCXZuX3VubG9jayh2cCk7CisJcmV0
dXJuIGVycm9yOworfQorCitpbnQKK3N5c19pb2N0bChzdHJ1Y3QgZmlsZSAqZnAsIHVfbG9uZyBy
ZXF1ZXN0LCB2b2lkICpidWYpCit7CisJaW50IGVycm9yOworCisJRFBSSU5URihWRlNEQl9TWVND
QUxMLCAoInN5c19pb2N0bDogZnA9JXggcmVxdWVzdD0leFxuIiwgZnAsIHJlcXVlc3QpKTsKKwor
CWlmICgoZnAtPmZfZmxhZ3MgJiAoRlJFQUQgfCBGV1JJVEUpKSA9PSAwKQorCQlyZXR1cm4gRUJB
REY7CisKKwllcnJvciA9IGZwLT5pb2N0bChyZXF1ZXN0LCBidWYpOworCisJRFBSSU5URihWRlNE
Ql9TWVNDQUxMLCAoInN5c19pb2N0bDogY29tcCBlcnJvcj0lZFxuIiwgZXJyb3IpKTsKKwlyZXR1
cm4gZXJyb3I7Cit9CisKK2ludAorc3lzX2ZzeW5jKHN0cnVjdCBmaWxlICpmcCkKK3sKKwlzdHJ1
Y3Qgdm5vZGUgKnZwOworCWludCBlcnJvcjsKKworCURQUklOVEYoVkZTREJfU1lTQ0FMTCwgKCJz
eXNfZnN5bmM6IGZwPSV4XG4iLCBmcCkpOworCisJaWYgKCFmcC0+Zl9kZW50cnkpCisJCXJldHVy
biBFSU5WQUw7CisKKwl2cCA9IGZwLT5mX2RlbnRyeS0+ZF92bm9kZTsKKwl2bl9sb2NrKHZwKTsK
KwllcnJvciA9IFZPUF9GU1lOQyh2cCwgZnApOworCXZuX3VubG9jayh2cCk7CisJcmV0dXJuIGVy
cm9yOworfQorCitpbnQKK3N5c19mc3RhdChzdHJ1Y3QgZmlsZSAqZnAsIHN0cnVjdCBzdGF0ICpz
dCkKK3sKKwlpbnQgZXJyb3IgPSAwOworCisJRFBSSU5URihWRlNEQl9TWVNDQUxMLCAoInN5c19m
c3RhdDogZnA9JXhcbiIsIGZwKSk7CisKKwllcnJvciA9IGZwLT5zdGF0KHN0KTsKKworCXJldHVy
biBlcnJvcjsKK30KKworLyoKKyAqIFJldHVybiAwIGlmIGRpcmVjdG9yeSBpcyBlbXB0eQorICov
CitzdGF0aWMgaW50CitjaGVja19kaXJfZW1wdHkoY2hhciAqcGF0aCkKK3sKKwlpbnQgZXJyb3I7
CisJc3RydWN0IGZpbGUgKmZwOworCXN0cnVjdCBkaXJlbnQgZGlyOworCisJRFBSSU5URihWRlNE
Ql9TWVNDQUxMLCAoImNoZWNrX2Rpcl9lbXB0eVxuIikpOworCisJZXJyb3IgPSBzeXNfb3Blbihw
YXRoLCBPX1JET05MWSwgMCwgJmZwKTsKKwlpZiAoZXJyb3IpCisJCWdvdG8gb3V0X2Vycm9yOwor
CisJZG8geworCQllcnJvciA9IHN5c19yZWFkZGlyKGZwLCAmZGlyKTsKKwkJaWYgKGVycm9yICE9
IDAgJiYgZXJyb3IgIT0gRUFDQ0VTKQorCQkJYnJlYWs7CisJfSB3aGlsZSAoIXN0cmNtcChkaXIu
ZF9uYW1lLCAiLiIpIHx8ICFzdHJjbXAoZGlyLmRfbmFtZSwgIi4uIikpOworCisJaWYgKGVycm9y
ID09IEVOT0VOVCkKKwkJZXJyb3IgPSAwOworCWVsc2UgaWYgKGVycm9yID09IDApIHsKKwkgICAg
Ly8gUG9zaXggc3BlY2lmaWVzIHRvIHJldHVybiBFRVhJU1QgaW4gdGhpcyBjYXNlIChybWRpciBv
ZiBub24tZW1wdHkKKwkgICAgLy8gZGlyZWN0b3J5LCBidXQgTGludXggYWN0dWFsbHkgcmV0dXJu
cyBFTk9URU1QVFkpLgorCQllcnJvciA9IEVOT1RFTVBUWTsKKwl9CisJZmRyb3AoZnApOworb3V0
X2Vycm9yOgorCXJldHVybiBlcnJvcjsKK30KKworaW50CitzeXNfcmVhZGRpcihzdHJ1Y3QgZmls
ZSAqZnAsIHN0cnVjdCBkaXJlbnQgKmRpcikKK3sKKwlzdHJ1Y3Qgdm5vZGUgKmR2cDsKKwlpbnQg
ZXJyb3I7CisKKwlEUFJJTlRGKFZGU0RCX1NZU0NBTEwsICgic3lzX3JlYWRkaXI6IGZwPSV4XG4i
LCBmcCkpOworCisJaWYgKCFmcC0+Zl9kZW50cnkpCisJCXJldHVybiBFTk9URElSOworCisJZHZw
ID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOworCXZuX2xvY2soZHZwKTsKKwlpZiAoZHZwLT52X3R5
cGUgIT0gVkRJUikgeworCQl2bl91bmxvY2soZHZwKTsKKwkJcmV0dXJuIEVOT1RESVI7CisJfQor
CWVycm9yID0gVk9QX1JFQURESVIoZHZwLCBmcCwgZGlyKTsKKwlEUFJJTlRGKFZGU0RCX1NZU0NB
TEwsICgic3lzX3JlYWRkaXI6IGVycm9yPSVkIHBhdGg9JXNcbiIsCisJCQkJZXJyb3IsIGRpci0+
ZF9uYW1lKSk7CisJdm5fdW5sb2NrKGR2cCk7CisJcmV0dXJuIGVycm9yOworfQorCitpbnQKK3N5
c19yZXdpbmRkaXIoc3RydWN0IGZpbGUgKmZwKQoreworCXN0cnVjdCB2bm9kZSAqZHZwOworCisJ
aWYgKCFmcC0+Zl9kZW50cnkpCisJCXJldHVybiBFTk9URElSOworCisJZHZwID0gZnAtPmZfZGVu
dHJ5LT5kX3Zub2RlOworCXZuX2xvY2soZHZwKTsKKwlpZiAoZHZwLT52X3R5cGUgIT0gVkRJUikg
eworCQl2bl91bmxvY2soZHZwKTsKKwkJcmV0dXJuIEVCQURGOworCX0KKwlmcC0+Zl9vZmZzZXQg
PSAwOworCXZuX3VubG9jayhkdnApOworCXJldHVybiAwOworfQorCitpbnQKK3N5c19zZWVrZGly
KHN0cnVjdCBmaWxlICpmcCwgbG9uZyBsb2MpCit7CisJc3RydWN0IHZub2RlICpkdnA7CisKKwlp
ZiAoIWZwLT5mX2RlbnRyeSkKKwkJcmV0dXJuIEVOT1RESVI7CisKKwlkdnAgPSBmcC0+Zl9kZW50
cnktPmRfdm5vZGU7CisJdm5fbG9jayhkdnApOworCWlmIChkdnAtPnZfdHlwZSAhPSBWRElSKSB7
CisJCXZuX3VubG9jayhkdnApOworCQlyZXR1cm4gRUJBREY7CisJfQorCWZwLT5mX29mZnNldCA9
IChvZmZfdClsb2M7CisJdm5fdW5sb2NrKGR2cCk7CisJcmV0dXJuIDA7Cit9CisKK2ludAorc3lz
X3RlbGxkaXIoc3RydWN0IGZpbGUgKmZwLCBsb25nICpsb2MpCit7CisJc3RydWN0IHZub2RlICpk
dnA7CisKKwlpZiAoIWZwLT5mX2RlbnRyeSkKKwkJcmV0dXJuIEVOT1RESVI7CisKKwlkdnAgPSBm
cC0+Zl9kZW50cnktPmRfdm5vZGU7CisJdm5fbG9jayhkdnApOworCWlmIChkdnAtPnZfdHlwZSAh
PSBWRElSKSB7CisJCXZuX3VubG9jayhkdnApOworCQlyZXR1cm4gRUJBREY7CisJfQorCSpsb2Mg
PSAobG9uZylmcC0+Zl9vZmZzZXQ7CisJdm5fdW5sb2NrKGR2cCk7CisJcmV0dXJuIDA7Cit9CisK
K2ludAorc3lzX21rZGlyKGNoYXIgKnBhdGgsIG1vZGVfdCBtb2RlKQoreworCWNoYXIgKm5hbWU7
CisJc3RydWN0IGRlbnRyeSAqZHAsICpkZHA7CisJaW50IGVycm9yOworCisJRFBSSU5URihWRlNE
Ql9TWVNDQUxMLCAoInN5c19ta2RpcjogcGF0aD0lcyBtb2RlPSVkXG4iLAlwYXRoLCBtb2RlKSk7
CisKKwllcnJvciA9IG5hbWVpKHBhdGgsICZkcCk7CisJaWYgKCFlcnJvcikgeworCQkvKiBGaWxl
IGFscmVhZHkgZXhpc3RzICovCisJCWRyZWxlKGRwKTsKKwkJcmV0dXJuIEVFWElTVDsKKwl9CisK
KwlpZiAoKGVycm9yID0gbG9va3VwKHBhdGgsICZkZHAsICZuYW1lKSkgIT0gMCkgeworCQkvKiBE
aXJlY3RvcnkgYWxyZWFkeSBleGlzdHMgKi8KKwkJcmV0dXJuIGVycm9yOworCX0KKworCXZuX2xv
Y2soZGRwLT5kX3Zub2RlKTsKKwlpZiAoKGVycm9yID0gdm5fYWNjZXNzKGRkcC0+ZF92bm9kZSwg
VldSSVRFKSkgIT0gMCkKKwkJZ290byBvdXQ7CisJbW9kZSAmPSB+U19JRk1UOworCW1vZGUgfD0g
U19JRkRJUjsKKworCWVycm9yID0gVk9QX01LRElSKGRkcC0+ZF92bm9kZSwgbmFtZSwgbW9kZSk7
Cisgb3V0OgorCXZuX3VubG9jayhkZHAtPmRfdm5vZGUpOworCWRyZWxlKGRkcCk7CisJcmV0dXJu
IGVycm9yOworfQorCitpbnQKK3N5c19ybWRpcihjaGFyICpwYXRoKQoreworCXN0cnVjdCBkZW50
cnkgKmRwLCAqZGRwOworCXN0cnVjdCB2bm9kZSAqdnA7CisJaW50IGVycm9yOworCWNoYXIgKm5h
bWU7CisKKwlEUFJJTlRGKFZGU0RCX1NZU0NBTEwsICgic3lzX3JtZGlyOiBwYXRoPSVzXG4iLCBw
YXRoKSk7CisKKwlpZiAoKGVycm9yID0gY2hlY2tfZGlyX2VtcHR5KHBhdGgpKSAhPSAwKQorCQly
ZXR1cm4gZXJyb3I7CisJZXJyb3IgPSBuYW1laShwYXRoLCAmZHApOworCWlmIChlcnJvcikKKwkJ
cmV0dXJuIGVycm9yOworCisJdnAgPSBkcC0+ZF92bm9kZTsKKwl2bl9sb2NrKHZwKTsKKwlpZiAo
KGVycm9yID0gdm5fYWNjZXNzKHZwLCBWV1JJVEUpKSAhPSAwKQorCQlnb3RvIG91dDsKKwlpZiAo
dnAtPnZfdHlwZSAhPSBWRElSKSB7CisJCWVycm9yID0gRU5PVERJUjsKKwkJZ290byBvdXQ7CisJ
fQorCWlmICh2cC0+dl9mbGFncyAmIFZST09UIHx8IHZwLT52X3JlZmNudCA+PSAyKSB7CisJCWVy
cm9yID0gRUJVU1k7CisJCWdvdG8gb3V0OworCX0KKwlpZiAoKGVycm9yID0gbG9va3VwKHBhdGgs
ICZkZHAsICZuYW1lKSkgIT0gMCkKKwkJZ290byBvdXQ7CisKKwl2bl9sb2NrKGRkcC0+ZF92bm9k
ZSk7CisJZXJyb3IgPSBWT1BfUk1ESVIoZGRwLT5kX3Zub2RlLCB2cCwgbmFtZSk7CisJdm5fdW5s
b2NrKGRkcC0+ZF92bm9kZSk7CisKKwl2bl91bmxvY2sodnApOworCWRlbnRyeV9yZW1vdmUoZHAp
OworCWRyZWxlKGRkcCk7CisJZHJlbGUoZHApOworCXJldHVybiBlcnJvcjsKKworIG91dDoKKwl2
bl91bmxvY2sodnApOworCWRyZWxlKGRwKTsKKwlyZXR1cm4gZXJyb3I7Cit9CisKK2ludAorc3lz
X21rbm9kKGNoYXIgKnBhdGgsIG1vZGVfdCBtb2RlKQoreworCWNoYXIgKm5hbWU7CisJc3RydWN0
IGRlbnRyeSAqZHAsICpkZHA7CisJaW50IGVycm9yOworCisJRFBSSU5URihWRlNEQl9TWVNDQUxM
LCAoInN5c19ta25vZDogcGF0aD0lcyBtb2RlPSVkXG4iLAlwYXRoLCBtb2RlKSk7CisKKwlzd2l0
Y2ggKG1vZGUgJiBTX0lGTVQpIHsKKwljYXNlIFNfSUZSRUc6CisJY2FzZSBTX0lGRElSOgorCWNh
c2UgU19JRklGTzoKKwljYXNlIFNfSUZTT0NLOgorCQkvKiBPSyAqLworCQlicmVhazsKKwlkZWZh
dWx0OgorCQlyZXR1cm4gRUlOVkFMOworCX0KKworCWVycm9yID0gbmFtZWkocGF0aCwgJmRwKTsK
KwlpZiAoIWVycm9yKSB7CisJCWRyZWxlKGRwKTsKKwkJcmV0dXJuIEVFWElTVDsKKwl9CisKKwlp
ZiAoKGVycm9yID0gbG9va3VwKHBhdGgsICZkZHAsICZuYW1lKSkgIT0gMCkKKwkJcmV0dXJuIGVy
cm9yOworCisJdm5fbG9jayhkZHAtPmRfdm5vZGUpOworCWlmICgoZXJyb3IgPSB2bl9hY2Nlc3Mo
ZGRwLT5kX3Zub2RlLCBWV1JJVEUpKSAhPSAwKQorCQlnb3RvIG91dDsKKwlpZiAoU19JU0RJUiht
b2RlKSkKKwkJZXJyb3IgPSBWT1BfTUtESVIoZGRwLT5kX3Zub2RlLCBuYW1lLCBtb2RlKTsKKwll
bHNlCisJCWVycm9yID0gVk9QX0NSRUFURShkZHAtPmRfdm5vZGUsIG5hbWUsIG1vZGUpOworIG91
dDoKKwl2bl91bmxvY2soZGRwLT5kX3Zub2RlKTsKKwlkcmVsZShkZHApOworCXJldHVybiBlcnJv
cjsKK30KKworLyoKKyAqIFJldHVybnMgdHJ1ZSB3aGVuIEBwYXJlbnQgcGF0aCBjb3VsZCByZXBy
ZXNlbnQgcGFyZW50IGRpcmVjdG9yeQorICogb2YgYSBmaWxlIG9yIGRpcmVjdG9yeSByZXByZXNl
bnRlZCBieSBAY2hpbGQgcGF0aC4KKyAqCisgKiBBc3N1bWVzIGJvdGggcGF0aHMgZG8gbm90IGhh
dmUgdHJhaWxpbmcgc2xhc2hlcy4KKyAqLworc3RhdGljIGJvb2wKK2lzX3BhcmVudChjb25zdCBj
aGFyICpwYXJlbnQsIGNvbnN0IGNoYXIgKmNoaWxkKQoreworCXNpemVfdCBwX2xlbiA9IHN0cmxl
bihwYXJlbnQpOworCXJldHVybiAhc3RybmNtcChwYXJlbnQsIGNoaWxkLCBwX2xlbikgJiYgKHBh
cmVudFtwX2xlbi0xXSA9PSAnLycgfHwgY2hpbGRbcF9sZW5dID09ICcvJyk7Cit9CisKK3N0YXRp
YyBib29sCitoYXNfdHJhaWxpbmcoY29uc3QgY2hhciAqcGF0aCwgY2hhciBjaCkKK3sKKwlzaXpl
X3QgbGVuID0gc3RybGVuKHBhdGgpOworCXJldHVybiBsZW4gJiYgcGF0aFtsZW4gLSAxXSA9PSBj
aDsKK30KKworc3RhdGljIHZvaWQKK3N0cmlwX3RyYWlsaW5nKGNoYXIgKnBhdGgsIGNoYXIgY2gp
Cit7CisJc2l6ZV90IGxlbiA9IHN0cmxlbihwYXRoKTsKKworCXdoaWxlIChsZW4gJiYgcGF0aFts
ZW4gLSAxXSA9PSBjaCkKKwkJbGVuLS07CisKKwlwYXRoW2xlbl0gPSAnXDAnOworfQorCitpbnQK
K3N5c19yZW5hbWUoY2hhciAqc3JjLCBjaGFyICpkZXN0KQoreworCXN0cnVjdCBkZW50cnkgKmRw
MSwgKmRwMiA9IDAsICpkZHAxLCAqZGRwMjsKKwlzdHJ1Y3Qgdm5vZGUgKnZwMSwgKnZwMiA9IDAs
ICpkdnAxLCAqZHZwMjsKKwljaGFyICpzbmFtZSwgKmRuYW1lOworCWludCBlcnJvcjsKKwljaGFy
IHJvb3RbXSA9ICIvIjsKKwlib29sIHRzOyAvKiB0cmFpbGluZyBzbGFzaCAqLworCisJRFBSSU5U
RihWRlNEQl9TWVNDQUxMLCAoInN5c19yZW5hbWU6IHNyYz0lcyBkZXN0PSVzXG4iLCBzcmMsIGRl
c3QpKTsKKworCXRzID0gZmFsc2U7CisJaWYgKGhhc190cmFpbGluZyhzcmMsICcvJykgPT0gdHJ1
ZSkgeworCQlpZiAoc3RybGVuKHNyYykgIT0gMSkgeworCQkJLyogcmVtb3ZlIHRyYWlsaW5nIHNs
YXNoIGlmZiBwYXRoIGlzIG5vbmUgcm9vdCAqLworCQkJc3RyaXBfdHJhaWxpbmcoc3JjLCAnLycp
OworCQkJdHMgPSB0cnVlOworCQl9CisJfQorCisJZXJyb3IgPSBsb29rdXAoc3JjLCAmZGRwMSwg
JnNuYW1lKTsKKwlpZiAoZXJyb3IgIT0gMCkgeworCQlyZXR1cm4gKGVycm9yKTsKKwl9CisKKwll
cnJvciA9IG5hbWVpX2xhc3Rfbm9mb2xsb3coc3JjLCBkZHAxLCAmZHAxKTsKKwlpZiAoZXJyb3Ig
IT0gMCkgeworCQlkcmVsZShkZHAxKTsKKwkJcmV0dXJuIChlcnJvcik7CisJfQorCisJdnAxID0g
ZHAxLT5kX3Zub2RlOworCXZuX2xvY2sodnAxKTsKKworCWlmICh2cDEtPnZfdHlwZSAhPSBWRElS
ICYmIHRzID09IHRydWUpIHsKKwkJZXJyb3IgPSBFTk9URElSOworCQlnb3RvIGVycjE7CisJfQor
CisJdHMgPSBmYWxzZTsKKwlpZiAoaGFzX3RyYWlsaW5nKGRlc3QsICcvJykgPT0gdHJ1ZSkgewor
CQlpZiAoc3RybGVuKGRlc3QpICE9IDEpIHsKKwkJCS8qIHJlbW92ZSB0cmFpbGluZyBzbGFzaCBp
ZmYgcGF0aCBpcyBub25lIHJvb3QgKi8KKwkJCXN0cmlwX3RyYWlsaW5nKGRlc3QsICcvJyk7CisJ
CQl0cyA9IHRydWU7CisJCX0KKwl9CisKKwllcnJvciA9IGxvb2t1cChkZXN0LCAmZGRwMiwgJmRu
YW1lKTsKKwlpZiAoZXJyb3IgIT0gMCkgeworCQlnb3RvIGVycjE7CisJfQorCisJZXJyb3IgPSBu
YW1laV9sYXN0X25vZm9sbG93KGRlc3QsIGRkcDIsICZkcDIpOworCWlmIChlcnJvciA9PSAwKSB7
CisJCS8qIHRhcmdldCBleGlzdHMgKi8KKworCQl2cDIgPSBkcDItPmRfdm5vZGU7CisJCXZuX2xv
Y2sodnAyKTsKKworCQlpZiAodnAyLT52X3R5cGUgIT0gVkRJUiAmJiB2cDItPnZfdHlwZSAhPSBW
TE5LKSB7CisJCQlpZiAodnAxLT52X3R5cGUgPT0gVkRJUiB8fCB0cyA9PSB0cnVlKSB7CisJCQkJ
ZXJyb3IgPSBFTk9URElSOworCQkJCWdvdG8gZXJyMjsKKwkJCX0KKwkJfSBlbHNlIGlmICh2cDEt
PnZfdHlwZSAhPSBWRElSICYmIHZwMi0+dl90eXBlID09IFZESVIpIHsKKwkJCWVycm9yID0gRUlT
RElSOworCQkJZ290byBlcnIyOworCQl9CisJCWlmICh2cDItPnZfdHlwZSA9PSBWRElSICYmIGNo
ZWNrX2Rpcl9lbXB0eShkZXN0KSkgeworCQkJZXJyb3IgPSBFRVhJU1Q7CisJCQlnb3RvIGVycjI7
CisJCX0KKwl9IGVsc2UgaWYgKGVycm9yID09IEVOT0VOVCkgeworCQlpZiAodnAxLT52X3R5cGUg
IT0gVkRJUiAmJiB0cyA9PSB0cnVlKSB7CisJCQllcnJvciA9IEVOT1RESVI7CisJCQlnb3RvIGVy
cjI7CisJCX0KKwl9IGVsc2UgeworCQlnb3RvIGVycjI7CisJfQorCisJaWYgKHN0cmNtcChkZXN0
LCAiLyIpKQorCQlzdHJpcF90cmFpbGluZyhkZXN0LCAnLycpOworCisJaWYgKHN0cmNtcChzcmMs
ICIvIikpCisJCXN0cmlwX3RyYWlsaW5nKHNyYywgJy8nKTsKKworCS8qIElmIHNvdXJjZSBhbmQg
ZGVzdCBhcmUgdGhlIHNhbWUsIGRvIG5vdGhpbmcgKi8KKwlpZiAoIXN0cm5jbXAoc3JjLCBkZXN0
LCBQQVRIX01BWCkpCisJCWdvdG8gZXJyMjsKKworCS8qIENoZWNrIGlmIHRhcmdldCBpcyBkaXJl
Y3Rvcnkgb2Ygc291cmNlICovCisJaWYgKGlzX3BhcmVudChzcmMsIGRlc3QpKSB7CisJCWVycm9y
ID0gRUlOVkFMOworCQlnb3RvIGVycjI7CisJfQorCisJZG5hbWUgPSBzdHJyY2hyKGRlc3QsICcv
Jyk7CisJaWYgKGRuYW1lID09IG51bGxwdHIpIHsKKwkJZXJyb3IgPSBFTk9URElSOworCQlnb3Rv
IGVycjI7CisJfQorCWlmIChkbmFtZSA9PSBkZXN0KQorCQlkZXN0ID0gcm9vdDsKKworCSpkbmFt
ZSA9IDA7CisJZG5hbWUrKzsKKworCWR2cDEgPSBkZHAxLT5kX3Zub2RlOworCXZuX2xvY2soZHZw
MSk7CisKKwlkdnAyID0gZGRwMi0+ZF92bm9kZTsKKwl2bl9sb2NrKGR2cDIpOworCisJLyogU291
cmNlIGFuZCBkZXN0aW5hdGlvbiBkaXJlY3Rpb25zIHNob3VsZCBiZSB3cml0YWJsZSkgKi8KKwlp
ZiAoKGVycm9yID0gdm5fYWNjZXNzKGR2cDEsIFZXUklURSkpICE9IDApCisJICAgIGdvdG8gZXJy
MzsKKwlpZiAoKGVycm9yID0gdm5fYWNjZXNzKGR2cDIsIFZXUklURSkpICE9IDApCisJICAgIGdv
dG8gZXJyMzsKKworCS8qIFRoZSBzb3VyY2UgYW5kIGRlc3QgbXVzdCBiZSBzYW1lIGZpbGUgc3lz
dGVtICovCisJaWYgKGR2cDEtPnZfbW91bnQgIT0gZHZwMi0+dl9tb3VudCkgeworCQllcnJvciA9
IEVYREVWOworCQlnb3RvIGVycjM7CisJfQorCisJZXJyb3IgPSBWT1BfUkVOQU1FKGR2cDEsIHZw
MSwgc25hbWUsIGR2cDIsIHZwMiwgZG5hbWUpOworCisJZGVudHJ5X21vdmUoZHAxLCBkZHAyLCBk
bmFtZSk7CisJaWYgKGRwMikKKwkJZGVudHJ5X3JlbW92ZShkcDIpOworCisgZXJyMzoKKwl2bl91
bmxvY2soZHZwMik7CisJdm5fdW5sb2NrKGR2cDEpOworIGVycjI6CisJaWYgKHZwMikgeworCQl2
bl91bmxvY2sodnAyKTsKKwkJZHJlbGUoZHAyKTsKKwl9CisJZHJlbGUoZGRwMik7CisgZXJyMToK
Kwl2bl91bmxvY2sodnAxKTsKKwlkcmVsZShkcDEpOworCWRyZWxlKGRkcDEpOworCXJldHVybiBl
cnJvcjsKK30KKworaW50CitzeXNfc3ltbGluayhjb25zdCBjaGFyICpvbGRwYXRoLCBjb25zdCBj
aGFyICpuZXdwYXRoKQoreworCXN0cnVjdCB0YXNrCSp0ID0gbWFpbl90YXNrOworCWludAkJZXJy
b3I7CisJc3RkOjp1bmlxdWVfcHRyPGNoYXIgW10+IHVwX29wIChuZXcgY2hhcltQQVRIX01BWF0p
OworCWNoYXIJCSpvcCA9IHVwX29wLmdldCgpOworCXN0ZDo6dW5pcXVlX3B0cjxjaGFyIFtdPiB1
cF9ucCAobmV3IGNoYXJbUEFUSF9NQVhdKTsKKwljaGFyCQkqbnAgPSB1cF9ucC5nZXQoKTsKKwlz
dHJ1Y3QgZGVudHJ5CSpuZXdkcDsKKwlzdHJ1Y3QgZGVudHJ5CSpuZXdkaXJkcDsKKwljaGFyCQkq
bmFtZTsKKworCWlmIChvbGRwYXRoID09IG51bGxwdHIgfHwgbmV3cGF0aCA9PSBudWxscHRyKSB7
CisJCXJldHVybiAoRUZBVUxUKTsKKwl9CisKKwlEUFJJTlRGKFZGU0RCX1NZU0NBTEwsICgic3lz
X2xpbms6IG9sZHBhdGg9JXMgbmV3cGF0aD0lc1xuIiwKKwkJCQlvbGRwYXRoLCBuZXdwYXRoKSk7
CisKKwluZXdkcAkJPSBudWxscHRyOworCW5ld2RpcmRwCT0gbnVsbHB0cjsKKworCWVycm9yID0g
dGFza19jb252KHQsIG5ld3BhdGgsIFZXUklURSwgbnApOworCWlmIChlcnJvciAhPSAwKSB7CisJ
CXJldHVybiAoZXJyb3IpOworCX0KKworCS8qIHBhcmVudCBkaXJlY3RvcnkgZm9yIG5ldyBwYXRo
IG11c3QgZXhpc3QgKi8KKwlpZiAoKGVycm9yID0gbG9va3VwKG5wLCAmbmV3ZGlyZHAsICZuYW1l
KSkgIT0gMCkgeworCQllcnJvciA9IEVOT0VOVDsKKwkJZ290byBvdXQ7CisJfQorCXZuX2xvY2so
bmV3ZGlyZHAtPmRfdm5vZGUpOworCisJLyogbmV3cGF0aCBzaG91bGQgbm90IGFscmVhZHkgZXhp
c3QgKi8KKwlpZiAobmFtZWlfbGFzdF9ub2ZvbGxvdyhucCwgbmV3ZGlyZHAsICZuZXdkcCkgPT0g
MCkgeworCQlkcmVsZShuZXdkcCk7CisJCWVycm9yID0gRUVYSVNUOworCQlnb3RvIG91dDsKKwl9
CisKKwkvKiBjaGVjayBmb3Igd3JpdGUgYWNjZXNzIGF0IG5ld3BhdGggKi8KKwlpZiAoKGVycm9y
ID0gdm5fYWNjZXNzKG5ld2RpcmRwLT5kX3Zub2RlLCBWV1JJVEUpKSAhPSAwKSB7CisJCWdvdG8g
b3V0OworCX0KKworCS8qIG9sZHBhdGggbWF5IG5vdCBiZSBjb25zdCBjaGFyICogdG8gVk9QX1NZ
TUxJTksgLSBuZWVkIHRvIGNvcHkgKi8KKwlzaXplX3QgdG9jb3B5OworCXRvY29weSA9IHN0cmxj
cHkob3AsIG9sZHBhdGgsIFBBVEhfTUFYKTsKKwlpZiAodG9jb3B5ID49IFBBVEhfTUFYIC0gMSkg
eworCQllcnJvciA9IEVOQU1FVE9PTE9ORzsKKwkJZ290byBvdXQ7CisJfQorCWVycm9yID0gVk9Q
X1NZTUxJTksobmV3ZGlyZHAtPmRfdm5vZGUsIG5hbWUsIG9wKTsKKworb3V0OgorCWlmIChuZXdk
aXJkcCAhPSBudWxscHRyKSB7CisJCXZuX3VubG9jayhuZXdkaXJkcC0+ZF92bm9kZSk7CisJCWRy
ZWxlKG5ld2RpcmRwKTsKKwl9CisKKwlyZXR1cm4gKGVycm9yKTsKK30KKworaW50CitzeXNfbGlu
ayhjaGFyICpvbGRwYXRoLCBjaGFyICpuZXdwYXRoKQoreworCXN0cnVjdCBkZW50cnkgKm9sZGRw
LCAqbmV3ZHAsICpuZXdkaXJkcDsKKwlzdHJ1Y3Qgdm5vZGUgKnZwOworCWNoYXIgKm5hbWU7CisJ
aW50IGVycm9yOworCisJRFBSSU5URihWRlNEQl9TWVNDQUxMLCAoInN5c19saW5rOiBvbGRwYXRo
PSVzIG5ld3BhdGg9JXNcbiIsCisJCQkJb2xkcGF0aCwgbmV3cGF0aCkpOworCisJLyogRmlsZSBm
cm9tIG9sZHBhdGggbXVzdCBleGlzdCAqLworCWlmICgoZXJyb3IgPSBuYW1laShvbGRwYXRoLCAm
b2xkZHApKSAhPSAwKQorCQlyZXR1cm4gZXJyb3I7CisKKwl2cCA9IG9sZGRwLT5kX3Zub2RlOwor
CXZuX2xvY2sodnApOworCisJaWYgKHZwLT52X3R5cGUgPT0gVkRJUikgeworCQllcnJvciA9IEVQ
RVJNOworCQlnb3RvIG91dDsKKwl9CisKKwkvKiBJZiBuZXdwYXRoIGV4aXN0cywgaXQgc2hvdWxk
bid0IGJlIG92ZXJ3cml0dGVuICovCisJaWYgKCFuYW1laShuZXdwYXRoLCAmbmV3ZHApKSB7CisJ
CWVycm9yID0gRUVYSVNUOworCQlnb3RvIG91dDsKKwl9CisKKwkvKiBHZXQgcG9pbnRlciB0byB0
aGUgcGFyZW50IGRlbnRyeSBvZiBuZXdwYXRoICovCisJaWYgKChlcnJvciA9IGxvb2t1cChuZXdw
YXRoLCAmbmV3ZGlyZHAsICZuYW1lKSkgIT0gMCkKKwkJZ290byBvdXQ7CisKKwl2bl9sb2NrKG5l
d2RpcmRwLT5kX3Zub2RlKTsKKworCS8qIEJvdGggZmlsZXMgbXVzdCByZXNpZGUgb24gdGhlIHNh
bWUgbW91bnRlZCBmaWxlIHN5c3RlbSAqLworCWlmIChvbGRkcC0+ZF9tb3VudCAhPSBuZXdkaXJk
cC0+ZF9tb3VudCkgeworCQllcnJvciA9IEVYREVWOworCQlnb3RvIG91dDE7CisJfQorCisJLyog
V3JpdGUgYWNjZXNzIHRvIHRoZSBkaXIgY29udGFpbmluZyBuZXdwYXRoIGlzIHJlcXVpcmVkICov
CisJaWYgKChlcnJvciA9IHZuX2FjY2VzcyhuZXdkaXJkcC0+ZF92bm9kZSwgVldSSVRFKSkgIT0g
MCkKKwkJZ290byBvdXQxOworCisJLyogTWFwIG5ld3BhdGggaW50byBkZW50cnkgaGFzaCB3aXRo
IHRoZSBzYW1lIHZub2RlIGFzIG9sZHBhdGggKi8KKwlpZiAoIShuZXdkcCA9IGRlbnRyeV9hbGxv
YyhuZXdkaXJkcCwgdnAsIG5ld3BhdGgpKSkgeworCQllcnJvciA9IEVOT01FTTsKKwkJZ290byBv
dXQxOworCX0KKworCWVycm9yID0gVk9QX0xJTksobmV3ZGlyZHAtPmRfdm5vZGUsIHZwLCBuYW1l
KTsKKyBvdXQxOgorCXZuX3VubG9jayhuZXdkaXJkcC0+ZF92bm9kZSk7CisJZHJlbGUobmV3ZGly
ZHApOworIG91dDoKKwl2bl91bmxvY2sodnApOworCWRyZWxlKG9sZGRwKTsKKwlkcmVsZShuZXdk
cCk7CisJcmV0dXJuIGVycm9yOworfQorCitpbnQKK3N5c191bmxpbmsoY2hhciAqcGF0aCkKK3sK
KwljaGFyICpuYW1lOworCXN0cnVjdCBkZW50cnkgKmRwLCAqZGRwOworCXN0cnVjdCB2bm9kZSAq
dnA7CisJaW50IGVycm9yOworCisJRFBSSU5URihWRlNEQl9TWVNDQUxMLCAoInN5c191bmxpbms6
IHBhdGg9JXNcbiIsIHBhdGgpKTsKKworCWRkcCAgID0gbnVsbHB0cjsKKwlkcCAgICA9IG51bGxw
dHI7CisJdnAgICAgPSBudWxscHRyOworCisJZXJyb3IgPSBsb29rdXAocGF0aCwgJmRkcCwgJm5h
bWUpOworCWlmIChlcnJvciAhPSAwKSB7CisJCXJldHVybiAoZXJyb3IpOworCX0KKworCWVycm9y
ID0gbmFtZWlfbGFzdF9ub2ZvbGxvdyhwYXRoLCBkZHAsICZkcCk7CisJaWYgKGVycm9yICE9IDAp
IHsKKwkJZ290byBvdXQ7CisJfQorCisJdnAgPSBkcC0+ZF92bm9kZTsKKwl2bl9sb2NrKHZwKTsK
KwlpZiAodnAtPnZfdHlwZSA9PSBWRElSKSB7CisJICAgIC8vIFBvc2l4IHNwZWNpZmllcyB0aGF0
IHdlIHNob3VsZCByZXR1cm4gRVBFUk0gaGVyZSwgYnV0IExpbnV4CisJICAgIC8vIGFjdHVhbGx5
IHJldHVybnMgRUlTRElSLgorCQllcnJvciA9IEVJU0RJUjsKKwkJZ290byBvdXQ7CisJfQorCWlm
ICh2cC0+dl9mbGFncyAmIFZST09UKSB7CisJCWVycm9yID0gRUJVU1k7CisJCWdvdG8gb3V0Owor
CX0KKworCXZuX2xvY2soZGRwLT5kX3Zub2RlKTsKKwlpZiAoKGVycm9yID0gdm5fYWNjZXNzKGRk
cC0+ZF92bm9kZSwgVldSSVRFKSkgIT0gMCkgeworCSAgICB2bl91bmxvY2soZGRwLT5kX3Zub2Rl
KTsKKwkgICAgZ290byBvdXQ7CisJfQorCWVycm9yID0gVk9QX1JFTU9WRShkZHAtPmRfdm5vZGUs
IHZwLCBuYW1lKTsKKwl2bl91bmxvY2soZGRwLT5kX3Zub2RlKTsKKworCXZuX3VubG9jayh2cCk7
CisJZGVudHJ5X3JlbW92ZShkcCk7CisJZHJlbGUoZGRwKTsKKwlkcmVsZShkcCk7CisJcmV0dXJu
IGVycm9yOworIG91dDoKKwlpZiAodnAgIT0gbnVsbHB0cikgeworCQl2bl91bmxvY2sodnApOwor
CX0KKworCWlmIChkcCAhPSBudWxscHRyKSB7CisJCWRyZWxlKGRwKTsKKwl9CisKKwlpZiAoZGRw
ICE9IG51bGxwdHIpIHsKKwkJZHJlbGUoZGRwKTsKKwl9CisJcmV0dXJuIGVycm9yOworfQorCitp
bnQKK3N5c19hY2Nlc3MoY2hhciAqcGF0aCwgaW50IG1vZGUpCit7CisJc3RydWN0IGRlbnRyeSAq
ZHA7CisJaW50IGVycm9yLCBmbGFnczsKKworCURQUklOVEYoVkZTREJfU1lTQ0FMTCwgKCJzeXNf
YWNjZXNzOiBwYXRoPSVzIG1vZGU9JXhcbiIsIHBhdGgsIG1vZGUpKTsKKworCS8qIElmIEZfT0sg
aXMgc2V0LCB3ZSByZXR1cm4gaGVyZSBpZiBmaWxlIGlzIG5vdCBmb3VuZC4gKi8KKwllcnJvciA9
IG5hbWVpKHBhdGgsICZkcCk7CisJaWYgKGVycm9yKQorCQlyZXR1cm4gZXJyb3I7CisKKwlmbGFn
cyA9IDA7CisJaWYgKG1vZGUgJiBSX09LKQorCQlmbGFncyB8PSBWUkVBRDsKKwlpZiAobW9kZSAm
IFdfT0spCisJCWZsYWdzIHw9IFZXUklURTsKKwlpZiAobW9kZSAmIFhfT0spCisJCWZsYWdzIHw9
IFZFWEVDOworCisJZXJyb3IgPSB2bl9hY2Nlc3MoZHAtPmRfdm5vZGUsIGZsYWdzKTsKKworCWRy
ZWxlKGRwKTsKKwlyZXR1cm4gZXJyb3I7Cit9CisKK2ludAorc3lzX3N0YXQoY2hhciAqcGF0aCwg
c3RydWN0IHN0YXQgKnN0KQoreworCURQUklOVEYoVkZTREJfU1lTQ0FMTCwgKCJzeXNfc3RhdDog
cGF0aD0lc1xuIiwgcGF0aCkpOworCisJdHJ5IHsKKwkJZGVudHJ5X3JlZiBkcCA9IG5hbWVpKHBh
dGgpOworCQlpZiAoIWRwKSB7CisJCQlyZXR1cm4gRU5PRU5UOworCQl9CisJCXJldHVybiB2bl9z
dGF0KGRwLT5kX3Zub2RlLCBzdCk7CisJfSBjYXRjaCAoZXJyb3IgZSkgeworCQlyZXR1cm4gZS5n
ZXQoKTsKKwl9Cit9CisKK2ludCBzeXNfbHN0YXQoY2hhciAqcGF0aCwgc3RydWN0IHN0YXQgKnN0
KQoreworCWludCAgICAgICAgICAgZXJyb3I7CisJc3RydWN0IGRlbnRyeSAqZGRwOworCWNoYXIg
ICAgICAgICAgKm5hbWU7CisJc3RydWN0IGRlbnRyeSAqZHA7CisKKwlEUFJJTlRGKFZGU0RCX1NZ
U0NBTEwsICgic3lzX2xzdGF0OiBwYXRoPSVzXG4iLCBwYXRoKSk7CisKKwllcnJvciA9IGxvb2t1
cChwYXRoLCAmZGRwLCAmbmFtZSk7CisJaWYgKGVycm9yKSB7CisJCXJldHVybiAoZXJyb3IpOwor
CX0KKworCWVycm9yID0gbmFtZWlfbGFzdF9ub2ZvbGxvdyhwYXRoLCBkZHAsICZkcCk7CisJaWYg
KGVycm9yKSB7CisJCWRyZWxlKGRkcCk7CisJCXJldHVybiBlcnJvcjsKKwl9CisKKwllcnJvciA9
IHZuX3N0YXQoZHAtPmRfdm5vZGUsIHN0KTsKKwlkcmVsZShkcCk7CisJZHJlbGUoZGRwKTsKKwly
ZXR1cm4gZXJyb3I7Cit9CisKK2ludAorc3lzX3N0YXRmcyhjaGFyICpwYXRoLCBzdHJ1Y3Qgc3Rh
dGZzICpidWYpCit7CisJbWVtc2V0KGJ1ZiwgMCwgc2l6ZW9mKCpidWYpKTsKKwl0cnkgeworCQlk
ZW50cnlfcmVmIGRwID0gbmFtZWkocGF0aCk7CisJCWlmICghZHApIHsKKwkJCXJldHVybiBFTk9F
TlQ7CisJCX0KKwkJcmV0dXJuIFZGU19TVEFURlMoZHAtPmRfbW91bnQsIGJ1Zik7CisJfSBjYXRj
aCAoZXJyb3IgZSkgeworCQlyZXR1cm4gZS5nZXQoKTsKKwl9Cit9CisKK2ludAorc3lzX2ZzdGF0
ZnMoc3RydWN0IGZpbGUgKmZwLCBzdHJ1Y3Qgc3RhdGZzICpidWYpCit7CisJc3RydWN0IHZub2Rl
ICp2cDsKKwlpbnQgZXJyb3IgPSAwOworCisJaWYgKCFmcC0+Zl9kZW50cnkpCisJCXJldHVybiBF
QkFERjsKKworCXZwID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOworCW1lbXNldChidWYsIDAsIHNp
emVvZigqYnVmKSk7CisKKwl2bl9sb2NrKHZwKTsKKwllcnJvciA9IFZGU19TVEFURlModnAtPnZf
bW91bnQsIGJ1Zik7CisJdm5fdW5sb2NrKHZwKTsKKworCXJldHVybiBlcnJvcjsKK30KKworaW50
CitzeXNfdHJ1bmNhdGUoY2hhciAqcGF0aCwgb2ZmX3QgbGVuZ3RoKQoreworCXN0cnVjdCBkZW50
cnkgKmRwOworCWludCBlcnJvcjsKKworCWVycm9yID0gbmFtZWkocGF0aCwgJmRwKTsKKwlpZiAo
ZXJyb3IpCisJCXJldHVybiBlcnJvcjsKKworCXZuX2xvY2soZHAtPmRfdm5vZGUpOworCWVycm9y
ID0gVk9QX1RSVU5DQVRFKGRwLT5kX3Zub2RlLCBsZW5ndGgpOworCXZuX3VubG9jayhkcC0+ZF92
bm9kZSk7CisKKwlkcmVsZShkcCk7CisJcmV0dXJuIGVycm9yOworfQorCitpbnQKK3N5c19mdHJ1
bmNhdGUoc3RydWN0IGZpbGUgKmZwLCBvZmZfdCBsZW5ndGgpCit7CisJc3RydWN0IHZub2RlICp2
cDsKKwlpbnQgZXJyb3I7CisKKwlpZiAoIWZwLT5mX2RlbnRyeSkKKwkJcmV0dXJuIEVCQURGOwor
CisJdnAgPSBmcC0+Zl9kZW50cnktPmRfdm5vZGU7CisJdm5fbG9jayh2cCk7CisJZXJyb3IgPSBW
T1BfVFJVTkNBVEUodnAsIGxlbmd0aCk7CisJdm5fdW5sb2NrKHZwKTsKKworCXJldHVybiBlcnJv
cjsKK30KKworaW50CitzeXNfZmNoZGlyKHN0cnVjdCBmaWxlICpmcCwgY2hhciAqY3dkKQorewor
CXN0cnVjdCB2bm9kZSAqZHZwOworCisJaWYgKCFmcC0+Zl9kZW50cnkpCisJCXJldHVybiBFQkFE
RjsKKworCWR2cCA9IGZwLT5mX2RlbnRyeS0+ZF92bm9kZTsKKwl2bl9sb2NrKGR2cCk7CisJaWYg
KGR2cC0+dl90eXBlICE9IFZESVIpIHsKKwkJdm5fdW5sb2NrKGR2cCk7CisJCXJldHVybiBFQkFE
RjsKKwl9CisJc3RybGNweShjd2QsIGZwLT5mX2RlbnRyeS0+ZF9wYXRoLCBQQVRIX01BWCk7CisJ
dm5fdW5sb2NrKGR2cCk7CisJcmV0dXJuIDA7Cit9CisKK2ludAorc3lzX3JlYWRsaW5rKGNoYXIg
KnBhdGgsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnNpemUsIHNzaXplX3QgKnNpemUpCit7CisJaW50
CQllcnJvcjsKKwlzdHJ1Y3QgZGVudHJ5CSpkZHA7CisJY2hhcgkJKm5hbWU7CisJc3RydWN0IGRl
bnRyeQkqZHA7CisJc3RydWN0IHZub2RlCSp2cDsKKwlzdHJ1Y3QgaW92ZWMJdmVjOworCXN0cnVj
dCB1aW8JdWlvOworCisJKnNpemUgPSAwOworCWVycm9yID0gbG9va3VwKHBhdGgsICZkZHAsICZu
YW1lKTsKKwlpZiAoZXJyb3IpIHsKKwkJcmV0dXJuIChlcnJvcik7CisJfQorCisJZXJyb3IgPSBu
YW1laV9sYXN0X25vZm9sbG93KHBhdGgsIGRkcCwgJmRwKTsKKwlpZiAoZXJyb3IpIHsKKwkJZHJl
bGUoZGRwKTsKKwkJcmV0dXJuIChlcnJvcik7CisJfQorCisJaWYgKGRwLT5kX3Zub2RlLT52X3R5
cGUgIT0gVkxOSykgeworCQlkcmVsZShkcCk7CisJCWRyZWxlKGRkcCk7CisJCXJldHVybiAoRUlO
VkFMKTsKKwl9CisJdmVjLmlvdl9iYXNlCT0gYnVmOworCXZlYy5pb3ZfbGVuCT0gYnVmc2l6ZTsK
KworCXVpby51aW9faW92CT0gJnZlYzsKKwl1aW8udWlvX2lvdmNudAk9IDE7CisJdWlvLnVpb19v
ZmZzZXQJPSAwOworCXVpby51aW9fcmVzaWQJPSBidWZzaXplOworCXVpby51aW9fcncJPSBVSU9f
UkVBRDsKKworCXZwID0gZHAtPmRfdm5vZGU7CisJdm5fbG9jayh2cCk7CisJZXJyb3IgPSBWT1Bf
UkVBRExJTksodnAsICZ1aW8pOworCXZuX3VubG9jayh2cCk7CisKKwlkcmVsZShkcCk7CisJZHJl
bGUoZGRwKTsKKworCWlmIChlcnJvcikgeworCQlyZXR1cm4gKGVycm9yKTsKKwl9CisKKwkqc2l6
ZSA9IGJ1ZnNpemUgLSB1aW8udWlvX3Jlc2lkOworCXJldHVybiAoMCk7Cit9CisKKy8qCisgKiBD
aGVjayB0aGUgdmFsaWRpdHkgb2YgdGhlIG1lbWJlcnMgb2YgYSBzdHJ1Y3QgdGltZXZhbC4KKyAq
Lworc3RhdGljIGJvb2wgaXNfdGltZXZhbF92YWxpZChjb25zdCBzdHJ1Y3QgdGltZXZhbCAqdGlt
ZSkKK3sKKyAgICByZXR1cm4gKHRpbWUtPnR2X3NlYyA+PSAwKSAmJgorICAgICAgICAgICAodGlt
ZS0+dHZfdXNlYyA+PSAwICYmIHRpbWUtPnR2X3VzZWMgPCAxMDAwMDAwKTsKK30KKworLyoKKyAq
IENvbnZlcnQgYSB0aW1ldmFsIHN0cnVjdCB0byBhIHRpbWVzcGVjIG9uZS4KKyAqLworc3RhdGlj
IHZvaWQgY29udmVydF90aW1ldmFsKHN0cnVjdCB0aW1lc3BlYyAmdG8sIGNvbnN0IHN0cnVjdCB0
aW1ldmFsICpmcm9tKQoreworICAgIGlmIChmcm9tKSB7CisgICAgICAgIHRvLnR2X3NlYyA9IGZy
b20tPnR2X3NlYzsKKyAgICAgICAgdG8udHZfbnNlYyA9IGZyb20tPnR2X3VzZWMgKiAxMDAwOyAv
LyBDb252ZXJ0IG1pY3Jvc2Vjb25kcyB0byBuYW5vc2Vjb25kcworICAgIH0gZWxzZSB7CisgICAg
ICAgIGNsb2NrX2dldHRpbWUoQ0xPQ0tfUkVBTFRJTUUsICZ0byk7CisgICAgfQorfQorCitpbnQK
K3N5c191dGltZXMoY2hhciAqcGF0aCwgY29uc3Qgc3RydWN0IHRpbWV2YWwgdGltZXNbMl0sIGlu
dCBmbGFncykKK3sKKyAgICBpbnQgZXJyb3I7CisgICAgc3RydWN0IGRlbnRyeSAqZHA7CisgICAg
c3RydWN0IHRpbWVzcGVjIHRpbWVzcGVjX3RpbWVzWzJdOworCisgICAgRFBSSU5URihWRlNEQl9T
WVNDQUxMLCAoInN5c191dGltZXM6IHBhdGg9JXNcbiIsIHBhdGgpKTsKKworICAgIGlmICh0aW1l
cyAmJiAoIWlzX3RpbWV2YWxfdmFsaWQoJnRpbWVzWzBdKSB8fCAhaXNfdGltZXZhbF92YWxpZCgm
dGltZXNbMV0pKSkKKyAgICAgICAgcmV0dXJuIEVJTlZBTDsKKworICAgIC8vIENvbnZlcnQgZWFj
aCBlbGVtZW50IG9mIHRpbWV2YWwgYXJyYXkgdG8gdGhlIHRpbWVzcGVjIHR5cGUKKyAgICBjb252
ZXJ0X3RpbWV2YWwodGltZXNwZWNfdGltZXNbMF0sIHRpbWVzID8gdGltZXMgKyAwIDogbnVsbHB0
cik7CisgICAgY29udmVydF90aW1ldmFsKHRpbWVzcGVjX3RpbWVzWzFdLCB0aW1lcyA/IHRpbWVz
ICsgMSA6IG51bGxwdHIpOworCisgICAgaWYgKGZsYWdzICYgQVRfU1lNTElOS19OT0ZPTExPVykg
eworICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpkZHA7CisgICAgICAgIGVycm9yID0gbG9va3VwKHBh
dGgsICZkZHAsIG51bGxwdHIpOworICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgIHJl
dHVybiBlcnJvcjsKKyAgICAgICAgfQorCisgICAgICAgIGVycm9yID0gbmFtZWlfbGFzdF9ub2Zv
bGxvdyhwYXRoLCBkZHAsICZkcCk7CisgICAgICAgIGlmIChkZHAgIT0gbnVsbHB0cikgeworICAg
ICAgICAgICAgZHJlbGUoZGRwKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZXJyb3IpIHsKKyAg
ICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAg
IGVycm9yID0gbmFtZWkocGF0aCwgJmRwKTsKKyAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAg
ICAgcmV0dXJuIGVycm9yOworICAgIH0KKworICAgIGlmIChkcC0+ZF9tb3VudC0+bV9mbGFncyAm
IE1OVF9SRE9OTFkpIHsKKyAgICAgICAgZXJyb3IgPSBFUk9GUzsKKyAgICB9IGVsc2UgeworICAg
ICAgICBlcnJvciA9IHZuX3NldHRpbWVzKGRwLT5kX3Zub2RlLCB0aW1lc3BlY190aW1lcyk7Cisg
ICAgfQorCisgICAgZHJlbGUoZHApOworICAgIHJldHVybiBlcnJvcjsKK30KKworLyoKKyAqIENo
ZWNrIHRoZSB2YWxpZGl0eSBvZiBtZW1iZXJzIG9mIGEgc3RydWN0IHRpbWVzcGVjCisgKi8KK3N0
YXRpYyBib29sIGlzX3RpbWVzcGVjX3ZhbGlkKGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAmdGltZSkK
K3sKKyAgICByZXR1cm4gKHRpbWUudHZfc2VjID49IDApICYmCisJICAgKCh0aW1lLnR2X25zZWMg
Pj0gMCAmJiB0aW1lLnR2X25zZWMgPD0gOTk5OTk5OTk5KSB8fAorCSAgICB0aW1lLnR2X25zZWMg
PT0gVVRJTUVfTk9XIHx8CisJICAgIHRpbWUudHZfbnNlYyA9PSBVVElNRV9PTUlUKTsKK30KKwor
dm9pZCBpbml0X3RpbWVzcGVjKHN0cnVjdCB0aW1lc3BlYyAmX3RpbWVzLCBjb25zdCBzdHJ1Y3Qg
dGltZXNwZWMgKnRpbWVzKQoreworICAgIGlmICh0aW1lcyA9PSBudWxscHRyIHx8IHRpbWVzLT50
dl9uc2VjID09IFVUSU1FX05PVykgeworICAgICAgICBjbG9ja19nZXR0aW1lKENMT0NLX1JFQUxU
SU1FLCAmX3RpbWVzKTsKKyAgICB9IGVsc2UgeworICAgICAgICBfdGltZXMudHZfc2VjID0gdGlt
ZXMtPnR2X3NlYzsKKyAgICAgICAgX3RpbWVzLnR2X25zZWMgPSB0aW1lcy0+dHZfbnNlYzsKKyAg
ICB9CisgICAgcmV0dXJuOworfQorCitpbnQKK3N5c191dGltZW5zYXQoaW50IGRpcmZkLCBjb25z
dCBjaGFyICpwYXRobmFtZSwgY29uc3Qgc3RydWN0IHRpbWVzcGVjIHRpbWVzWzJdLCBpbnQgZmxh
Z3MpCit7CisgICAgaW50IGVycm9yOworICAgIHN0ZDo6c3RyaW5nIGFwOworICAgIHN0cnVjdCB0
aW1lc3BlYyB0aW1lc3BlY190aW1lc1syXTsKKyAgICBleHRlcm4gc3RydWN0IHRhc2sgKm1haW5f
dGFzazsKKyAgICBzdHJ1Y3QgZGVudHJ5ICpkcDsKKworICAgIC8qIHV0aW1lbnNhdCBzaG91bGQg
cmV0dXJuIEVOT0VOVCB3aGVuIHBhdGhuYW1lIGlzIGVtcHR5ICovCisgICAgaWYocGF0aG5hbWUg
JiYgcGF0aG5hbWVbMF0gPT0gMCkKKyAgICAgICAgcmV0dXJuIEVOT0VOVDsKKworICAgIGlmIChm
bGFncyAmJiAhKGZsYWdzICYgQVRfU1lNTElOS19OT0ZPTExPVykpCisgICAgICAgIHJldHVybiBF
SU5WQUw7CisKKyAgICBpZiAodGltZXMgJiYgKCFpc190aW1lc3BlY192YWxpZCh0aW1lc1swXSkg
fHwgIWlzX3RpbWVzcGVjX3ZhbGlkKHRpbWVzWzFdKSkpCisgICAgICAgIHJldHVybiBFSU5WQUw7
CisKKyAgICBpbml0X3RpbWVzcGVjKHRpbWVzcGVjX3RpbWVzWzBdLCB0aW1lcyA/IHRpbWVzICsg
MCA6IG51bGxwdHIpOworICAgIGluaXRfdGltZXNwZWModGltZXNwZWNfdGltZXNbMV0sIHRpbWVz
ID8gdGltZXMgKyAxIDogbnVsbHB0cik7CisKKyAgICBpZiAocGF0aG5hbWUgJiYgcGF0aG5hbWVb
MF0gPT0gJy8nKSB7CisJYXAgPSBwYXRobmFtZTsKKyAgICB9IGVsc2UgaWYgKGRpcmZkID09IEFU
X0ZEQ1dEKSB7CisJaWYgKCFwYXRobmFtZSkKKwkgICAgcmV0dXJuIEVGQVVMVDsKKwlhcCA9IHN0
ZDo6c3RyaW5nKG1haW5fdGFzay0+dF9jd2QpICsgIi8iICsgcGF0aG5hbWU7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgc3RydWN0IGZpbGUgKmZwOworICAgICAgICBmaWxlcmVmIGYoZmlsZXJlZl9m
cm9tX2ZkKGRpcmZkKSk7CisKKyAgICAgICAgaWYgKCFmKQorCSAgICByZXR1cm4gRUJBREY7CisK
KwlmcCA9IGYuZ2V0KCk7CisKKwlpZighZnAtPmZfZGVudHJ5KQorCSAgICByZXR1cm4gRUJBREY7
CisKKwlpZiAoIShmcC0+Zl9kZW50cnktPmRfdm5vZGUtPnZfdHlwZSAmIFZESVIpKQorCSAgICBy
ZXR1cm4gRU5PVERJUjsKKworCWlmIChwYXRobmFtZSkKKwkgICAgYXAgPSBzdGQ6OnN0cmluZyhm
cC0+Zl9kZW50cnktPmRfcGF0aCkgKyAiLyIgKyBwYXRobmFtZTsKKwllbHNlCisJICAgIGFwID0g
ZnAtPmZfZGVudHJ5LT5kX3BhdGg7CisKKwlhcCA9IHN0ZDo6c3RyaW5nKGZwLT5mX2RlbnRyeS0+
ZF9tb3VudC0+bV9wYXRoKSArICIvIiArIGFwOworICAgIH0KKworICAgIC8qIEZJWE1FOiBBZGQg
c3VwcG9ydCBmb3IgQVRfU1lNTElOS19OT0ZPTExPVyAqLworCisgICAgZXJyb3IgPSBuYW1laShh
cC5jX3N0cigpLCAmZHApOworCisgICAgaWYgKGVycm9yKQorICAgICAgICByZXR1cm4gZXJyb3I7
CisKKyAgICBpZiAoZHAtPmRfbW91bnQtPm1fZmxhZ3MgJiBNTlRfUkRPTkxZKSB7CisgICAgICAg
IGVycm9yID0gRVJPRlM7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKHZuX2FjY2VzcyhkcC0+
ZF92bm9kZSwgVldSSVRFKSkgeworICAgICAgICAgICAgcmV0dXJuIEVBQ0NFUzsKKyAgICAgICAg
fQorCSAgICBpZiAodGltZXMgJiYKKyAgICAgICAgICAgICAgICh0aW1lc1swXS50dl9uc2VjICE9
IFVUSU1FX05PVyB8fCB0aW1lc1sxXS50dl9uc2VjICE9IFVUSU1FX05PVykgJiYKKyAgICAgICAg
ICAgICAgICh0aW1lc1swXS50dl9uc2VjICE9IFVUSU1FX09NSVQgfHwgdGltZXNbMV0udHZfbnNl
YyAhPSBVVElNRV9PTUlUKSAmJgorCSAgICAgICAoIShkcC0+ZF92bm9kZS0+dl9tb2RlICYgflZB
UFBFTkQpKSkKKwkgICAgICAgIHJldHVybiBFUEVSTTsKKyAgICAgICAgZXJyb3IgPSB2bl9zZXR0
aW1lcyhkcC0+ZF92bm9kZSwgdGltZXNwZWNfdGltZXMpOworICAgIH0KKworICAgIGRyZWxlKGRw
KTsKKyAgICByZXR1cm4gZXJyb3I7Cit9CisKK2ludAorc3lzX2Z1dGltZW5zKGludCBmZCwgY29u
c3Qgc3RydWN0IHRpbWVzcGVjIHRpbWVzWzJdKQoreworICAgIHN0cnVjdCBmaWxlICpmcDsKKwor
ICAgIGZpbGVyZWYgZihmaWxlcmVmX2Zyb21fZmQoZmQpKTsKKyAgICBpZiAoIWYpCisgICAgICAg
IHJldHVybiBFQkFERjsKKworICAgIGZwID0gZi5nZXQoKTsKKworICAgIGlmICghZnAtPmZfZGVu
dHJ5KQorICAgICAgICByZXR1cm4gRUJBREY7CisKKyAgICBzdGQ6OnN0cmluZyBwYXRobmFtZSA9
IGZwLT5mX2RlbnRyeS0+ZF9wYXRoOworICAgIGF1dG8gZXJyb3IgPSBzeXNfdXRpbWVuc2F0KEFU
X0ZEQ1dELCBwYXRobmFtZS5jX3N0cigpLCB0aW1lcywgMCk7CisgICAgcmV0dXJuIGVycm9yOwor
fQorCitpbnQKK3N5c19mYWxsb2NhdGUoc3RydWN0IGZpbGUgKmZwLCBpbnQgbW9kZSwgbG9mZl90
IG9mZnNldCwgbG9mZl90IGxlbikKK3sKKyAgICBpbnQgZXJyb3I7CisgICAgc3RydWN0IHZub2Rl
ICp2cDsKKworICAgIERQUklOVEYoVkZTREJfU1lTQ0FMTCwgKCJzeXNfZmFsbG9jYXRlOiBmcD0l
eCIsIGZwKSk7CisKKyAgICBpZiAoIWZwLT5mX2RlbnRyeSB8fCAhKGZwLT5mX2ZsYWdzICYgRldS
SVRFKSkgeworICAgICAgICByZXR1cm4gRUJBREY7CisgICAgfQorCisgICAgaWYgKG9mZnNldCA8
IDAgfHwgbGVuIDw9IDApIHsKKyAgICAgICAgcmV0dXJuIEVJTlZBTDsKKyAgICB9CisKKyAgICAv
LyBTdHJhbmdlLCBidXQgdGhhdCdzIHdoYXQgTGludXggcmV0dXJucy4KKyAgICBpZiAoKG1vZGUg
JiBGQUxMT0NfRkxfUFVOQ0hfSE9MRSkgJiYgIShtb2RlICYgRkFMTE9DX0ZMX0tFRVBfU0laRSkp
IHsKKyAgICAgICAgcmV0dXJuIEVOT1RTVVA7CisgICAgfQorCisgICAgdnAgPSBmcC0+Zl9kZW50
cnktPmRfdm5vZGU7CisgICAgdm5fbG9jayh2cCk7CisKKyAgICAvLyBOT1RFOiBJdCdzIG5vdCBk
ZXRlY3RlZCBoZXJlIHdoZXRoZXIgb3Igbm90IHRoZSBkZXZpY2UgdW5kZXJseWluZworICAgIC8v
IHRoZSBmcyBpcyBhIGJsb2NrIGRldmljZS4gSXQncyB1cCB0byB0aGUgZnMgaXRzZWxmIHRlbGwg
dXMgd2hldGhlcgorICAgIC8vIG9yIG5vdCBmYWxsb2NhdGUgaXMgc3VwcG9ydGVkLiBTZWUgYmVs
b3c6CisgICAgaWYgKHZwLT52X3R5cGUgIT0gVlJFRyAmJiB2cC0+dl90eXBlICE9IFZESVIpIHsK
KyAgICAgICAgZXJyb3IgPSBFTk9ERVY7CisgICAgICAgIGdvdG8gcmV0OworICAgIH0KKworICAg
IC8vIEVPUE5PVFNVUFAgaGVyZSBtZWFucyB0aGF0IHRoZSB1bmRlcmx5aW5nIGZpbGUgc3lzdGVt
CisgICAgLy8gcmVmZXJyZWQgYnkgdnAgZG9lc24ndCBzdXBwb3J0IGZhbGxvY2F0ZS4KKyAgICBp
ZiAoIXZwLT52X29wLT52b3BfZmFsbG9jYXRlKSB7CisgICAgICAgIGVycm9yID0gRU9QTk9UU1VQ
UDsKKyAgICAgICAgZ290byByZXQ7CisgICAgfQorCisgICAgZXJyb3IgPSBWT1BfRkFMTE9DQVRF
KHZwLCBtb2RlLCBvZmZzZXQsIGxlbik7CityZXQ6CisgICAgdm5fdW5sb2NrKHZwKTsKKyAgICBy
ZXR1cm4gZXJyb3I7Cit9CisKK2ludAorc3lzX2NobW9kKGNvbnN0IGNoYXIgKnBhdGgsIG1vZGVf
dCBtb2RlKQoreworICAgIGludCBlcnJvcjsKKyAgICBzdHJ1Y3QgZGVudHJ5ICpkcDsKKyAgICBE
UFJJTlRGKFZGU0RCX1NZU0NBTEwsICgic3lzX2NobW9kOiBwYXRoPSVzXG4iLCBwYXRoKSk7Cisg
ICAgZXJyb3IgPSBuYW1laShwYXRoLCAmZHApOworICAgIGlmIChlcnJvcikKKyAgICAgICAgcmV0
dXJuIGVycm9yOworICAgIGlmIChkcC0+ZF9tb3VudC0+bV9mbGFncyAmIE1OVF9SRE9OTFkpIHsK
KyAgICAgICAgZXJyb3IgPSBFUk9GUzsKKyAgICB9IGVsc2UgeworICAgICAgICBlcnJvciA9IHZu
X3NldG1vZGUoZHAtPmRfdm5vZGUsIG1vZGUpOworICAgIH0KKyAgICBkcmVsZShkcCk7CisgICAg
cmV0dXJuIGVycm9yOworfQorCitpbnQKK3N5c19mY2htb2QoaW50IGZkLCBtb2RlX3QgbW9kZSkK
K3sKKyAgICBmaWxlcmVmIGYoZmlsZXJlZl9mcm9tX2ZkKGZkKSk7CisgICAgaWYgKCFmKQorICAg
ICAgICByZXR1cm4gRUJBREY7CisgICAgLy8gUG9zaXggaXMgYW1iaXZhbGVudCBvbiB3aGF0IGZj
aG1vZCgpIHNob3VsZCBkbyBvbiBhbiBmZCB0aGF0IGRvZXMgbm90CisgICAgLy8gcmVmZXIgdG8g
YSByZWFsIGZpbGUuIEl0IHN1Z2dlc3RzIGFuIGltcGxlbWVudGF0aW9uIG1heSAoYnV0IG5vdCBt
dXN0KQorICAgIC8vIGZhaWwgRUlOVkFMIG9uIGEgcGlwZSwgY2FuIGJlaGF2ZSBpbiBhbiAidW5z
cGVjaWZpZWQiIG1hbm5lciBvbiBhCisgICAgLy8gc29ja2V0LCBhbmQgZm9yIGEgU1RSRUFNLCBp
dCBtdXN0IHN1Y2NlZWQgYW5kIGRvIG5vdGhpbmcuIExpbnV4IHNlZW1zCisgICAgLy8gdG8ganVz
dCBkbyB0aGUgbGFzdCB0aGluZyAoZG8gbm90aGluZyBhbmQgc3VjY2VlZCkuCisgICAgaWYgKCFm
LT5mX2RlbnRyeSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgaWYgKGYtPmZfZGVu
dHJ5LT5kX21vdW50LT5tX2ZsYWdzICYgTU5UX1JET05MWSkgeworICAgICAgICByZXR1cm4gRVJP
RlM7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIHZuX3NldG1vZGUoZi0+Zl9kZW50cnkt
PmRfdm5vZGUsIG1vZGUpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3Rhc2su
YyBiL2xpYi92ZnNjb3JlL3Rhc2suYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MC4uN2EzNTUwMzQKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvdmZzY29yZS90YXNrLmMKQEAgLTAs
MCArMSwxNjcgQEAKKy8qLQorICogQ29weXJpZ2h0IChjKSAyMDA3LCBLb2hzdWtlIE9odGFuaSBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0
aGUgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgYW55IGNvLWNvbnRyaWJ1dG9ycworICogICAgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlz
IHNvZnR3YXJlCisgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1Ig
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisv
KgorICogdmZzX3Rhc2suYyAtIFJvdXRpbmVzIHRvIG1hbmFnZSB0aGUgcGVyIHRhc2sgZGF0YS4K
KyAqLworCisKKyNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNs
dWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisK
KyNpbmNsdWRlIDxvc3YvcHJleC5oPgorI2luY2x1ZGUgInZmcy5oIgorCisvKgorICogQWxsb2Nh
dGUgbmV3IHRhc2suCisgKi8KK2ludAordGFza19hbGxvYyhzdHJ1Y3QgdGFzayAqKnB0KQorewor
CXN0cnVjdCB0YXNrICp0OworCisgICAgLy8gRklYTUU6IHdoZXJlIGRvIHdlIGZyZWUgdGFzayA/
CisJaWYgKCEodCA9IG5ldyB0YXNrKSkKKwkJcmV0dXJuIEVOT01FTTsKKwltZW1zZXQodCwgMCwg
c2l6ZW9mKHN0cnVjdCB0YXNrKSk7CisJc3RybGNweSh0LT50X2N3ZCwgIi8iLCBzaXplb2YodC0+
dF9jd2QpKTsKKworCSpwdCA9IHQ7CisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBDb252ZXJ0IHRv
IGZ1bGwgcGF0aCBmcm9tIHRoZSBjd2Qgb2YgdGFzayBhbmQgcGF0aC4KKyAqIEB3ZDogICB3b3Jr
aW5nIGRpcmVjdG9yeQorICogQHBhdGg6IHRhcmdldCBwYXRoCisgKiBAZnVsbDogZnVsbCBwYXRo
IHRvIGJlIHJldHVybmVkCisgKi8KK2ludAorcGF0aF9jb252KGNoYXIgKndkLCBjb25zdCBjaGFy
ICpjcGF0aCwgY2hhciAqZnVsbCkKK3sKKwljaGFyIHBhdGhbUEFUSF9NQVhdOworCWNoYXIgKnNy
YywgKnRndCwgKnAsICplbmQ7CisJc2l6ZV90IGxlbiA9IDA7CisKKwlzdHJsY3B5KHBhdGgsIGNw
YXRoLCBQQVRIX01BWCk7CisJcGF0aFtQQVRIX01BWCAtIDFdID0gJ1wwJzsKKworCWxlbiA9IHN0
cmxlbihwYXRoKTsKKwlpZiAobGVuID49IFBBVEhfTUFYKQorCQlyZXR1cm4gRU5BTUVUT09MT05H
OworCWlmIChzdHJsZW4od2QpICsgbGVuID49IFBBVEhfTUFYKQorCQlyZXR1cm4gRU5BTUVUT09M
T05HOworCXNyYyA9IHBhdGg7CisJdGd0ID0gZnVsbDsKKwllbmQgPSBzcmMgKyBsZW47CisJaWYg
KHBhdGhbMF0gPT0gJy8nKSB7CisJCSp0Z3QrKyA9ICpzcmMrKzsKKwkJbGVuID0gMTsKKwl9IGVs
c2UgeworCQlzdHJsY3B5KGZ1bGwsIHdkLCBQQVRIX01BWCk7CisJCWxlbiA9IHN0cmxlbih3ZCk7
CisJCXRndCArPSBsZW47CisJCWlmIChsZW4gPiAxICYmIHBhdGhbMF0gIT0gJy4nKSB7CisJCQkq
dGd0ID0gJy8nOworCQkJdGd0Kys7CisJCQlsZW4rKzsKKwkJfQorCX0KKwl3aGlsZSAoKnNyYykg
eworCQlwID0gc3JjOworCQl3aGlsZSAoKnAgIT0gJy8nICYmICpwICE9ICdcMCcpCisJCQlwKys7
CisJCSpwID0gJ1wwJzsKKwkJaWYgKCFzdHJjbXAoc3JjLCAiLi4iKSkgeworCQkJaWYgKGxlbiA+
PSAyKSB7CisJCQkJbGVuIC09IDI7CisJCQkJdGd0IC09IDI7CS8qIHNraXAgcHJldmlvdXMgJy8n
ICovCisJCQkJd2hpbGUgKCp0Z3QgIT0gJy8nKSB7CisJCQkJCXRndC0tOworCQkJCQlsZW4tLTsK
KwkJCQl9CisJCQkJaWYgKGxlbiA9PSAwKSB7CisJCQkJCXRndCsrOworCQkJCQlsZW4rKzsKKwkJ
CQl9CisJCQl9CisJCX0gZWxzZSBpZiAoIXN0cmNtcChzcmMsICIuIikpIHsKKwkJCS8qIElnbm9y
ZSAiLiIgKi8KKwkJfSBlbHNlIHsKKwkJCXdoaWxlICgqc3JjICE9ICdcMCcpIHsKKwkJCQkqdGd0
KysgPSAqc3JjKys7CisJCQkJbGVuKys7CisJCQl9CisJCX0KKwkJaWYgKHAgPT0gZW5kKQorCQkJ
YnJlYWs7CisJCWlmIChsZW4gPiAwICYmICoodGd0IC0gMSkgIT0gJy8nKSB7CisJCQkqdGd0Kysg
PSAnLyc7CisJCQlsZW4rKzsKKwkJfQorCQlzcmMgPSBwICsgMTsKKwl9CisJKnRndCA9ICdcMCc7
CisKKwlyZXR1cm4gKDApOworfQorCisvKgorICogQ29udmVydCB0byBmdWxsIHBhdGggZnJvbSB0
aGUgY3dkIG9mIHRhc2sgYW5kIHBhdGguCisgKiBAdDogICAgdGFzayBzdHJ1Y3R1cmUKKyAqIEBw
YXRoOiB0YXJnZXQgcGF0aAorICogQGZ1bGw6IGZ1bGwgcGF0aCB0byBiZSByZXR1cm5lZAorICog
QGFjYzogYWNjZXNzIG1vZGUKKyAqLworaW50Cit0YXNrX2NvbnYoc3RydWN0IHRhc2sgKnQsIGNv
bnN0IGNoYXIgKmNwYXRoLCBpbnQgYWNjLCBjaGFyICpmdWxsKQoreworCWludCByYzsKKworCXJj
ID0gcGF0aF9jb252KHQtPnRfY3dkLCBjcGF0aCwgZnVsbCk7CisJaWYgKHJjICE9IDApIHsKKwkJ
cmV0dXJuIChyYyk7CisJfQorCisJLyogQ2hlY2sgaWYgdGhlIGNsaWVudCB0YXNrIGhhcyByZXF1
aXJlZCBwZXJtaXNzaW9uICovCisJcmV0dXJuICgwKTsgLy9zZWNfZmlsZV9wZXJtaXNzaW9uKHQt
PnRfdGFza2lkLCBmdWxsLCBhY2MpOworfQorCisvKgorICogU2FmZSBjb3B5aW5nIGZ1bmN0aW9u
IHRoYXQgY2hlY2tzIGZvciBvdmVyZmxvdy4KKyAqLworaW50IHZmc19kbmFtZV9jb3B5KGNoYXIg
KmRlc3QsIGNvbnN0IGNoYXIgKnNyYywgc2l6ZV90IHNpemUpCit7CisgICAgaWYgKHN0cmxjcHko
ZGVzdCwgc3JjLCBzaXplKSA+PSBzaXplKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9Cisg
ICAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS92ZnMuaCBiL2xpYi92ZnNj
b3JlL3Zmcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi5kODZlZjk1Nwot
LS0gL2Rldi9udWxsCisrKyBiL2xpYi92ZnNjb3JlL3Zmcy5oCkBAIC0wLDAgKzEsMTg5IEBACisv
KgorICogQ29weXJpZ2h0IChjKSAyMDA1LTIwMDcsIEtvaHN1a2UgT2h0YW5pCisgKiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgYXV0
aG9yIG5vciB0aGUgbmFtZXMgb2YgYW55IGNvLWNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3
YXJlCisgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
CisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IF9WRlNfSAorI2RlZmluZSBfVkZTX0gKKworI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgorI2luY2x1
ZGUgPGFzc2VydC5oPgorI2luY2x1ZGUgPGRpcmVudC5oPgorI2luY2x1ZGUgPGxpbWl0cy5oPgor
CisjaW5jbHVkZSA8b3N2L3ByZXguaD4KKyNpbmNsdWRlIDxvc3YvZmlsZS5oPgorI2luY2x1ZGUg
PG9zdi9tb3VudC5oPgorI2luY2x1ZGUgPG9zdi92bm9kZS5oPgorI2luY2x1ZGUgPG9zdi9kZW50
cnkuaD4KKyNpbmNsdWRlIDxvc3YvZXJyb3IuaD4KKworLyoKKyAqIEltcG9ydCB2bm9kZSBhdHRy
aWJ1dGVzIGZsYWdzCisgKi8KKyNpbmNsdWRlIDxvc3Yvdm5vZGVfYXR0ci5oPgorCisvKiAjZGVm
aW5lIERFQlVHX1ZGUyAxICovCisKKy8qCisgKiBUdW5hYmxlIHBhcmFtZXRlcnMKKyAqLworI2Rl
ZmluZSBGU01BWE5BTUVTCTE2CQkvKiBtYXggbGVuZ3RoIG9mICdmaWxlIHN5c3RlbScgbmFtZSAq
LworCisjaWZkZWYgREVCVUdfVkZTCisjaW5jbHVkZSA8b3N2L2RlYnVnLmg+CisKK2V4dGVybiBp
bnQgdmZzX2RlYnVnOworCisjZGVmaW5lCVZGU0RCX0NPUkUJMHgwMDAwMDAwMQorI2RlZmluZQlW
RlNEQl9TWVNDQUxMCTB4MDAwMDAwMDIKKyNkZWZpbmUJVkZTREJfVk5PREUJMHgwMDAwMDAwNAor
I2RlZmluZQlWRlNEQl9CSU8JMHgwMDAwMDAwOAorI2RlZmluZQlWRlNEQl9DQVAJMHgwMDAwMDAx
MAorCisjZGVmaW5lIFZGU0RCX0ZMQUdTCTB4MDAwMDAwMTMKKworI2RlZmluZQlEUFJJTlRGKF9t
LFgpCWlmICh2ZnNfZGVidWcgJiAoX20pKSBrcHJpbnRmIFgKKyNlbHNlCisjZGVmaW5lCURQUklO
VEYoX20sIFgpCisjZW5kaWYKKworI2RlZmluZSBBU1NFUlQoZSkJYXNzZXJ0KGUpCisKKyNkZWZp
bmUgT1BFTl9NQVgJMjU2CisKKy8qCisgKiBwZXIgdGFzayBkYXRhCisgKi8KK3N0cnVjdCB0YXNr
IHsKKwljaGFyIAkgICAgdF9jd2RbUEFUSF9NQVhdOwkvKiBjdXJyZW50IHdvcmtpbmcgZGlyZWN0
b3J5ICovCisJc3RydWN0IGZpbGUgKnRfY3dkZnA7CQkvKiBkaXJlY3RvcnkgZm9yIGN3ZCAqLwor
fTsKKworZXh0ZXJuIGNvbnN0IHN0cnVjdCB2ZnNzdyB2ZnNzd1tdOworCitfX0JFR0lOX0RFQ0xT
CitpbnQJIHN5c19vcGVuKGNoYXIgKnBhdGgsIGludCBmbGFncywgbW9kZV90IG1vZGUsIHN0cnVj
dCBmaWxlICoqZnApOworaW50CSBzeXNfcmVhZChzdHJ1Y3QgZmlsZSAqZnAsIGNvbnN0IHN0cnVj
dCBpb3ZlYyAqaW92LCBzaXplX3QgbmlvdiwKKwkJb2ZmX3Qgb2Zmc2V0LCBzaXplX3QgKmNvdW50
KTsKK2ludAkgc3lzX3dyaXRlKHN0cnVjdCBmaWxlICpmcCwgY29uc3Qgc3RydWN0IGlvdmVjICpp
b3YsIHNpemVfdCBuaW92LAorCQlvZmZfdCBvZmZzZXQsIHNpemVfdCAqY291bnQpOworaW50CSBz
eXNfbHNlZWsoc3RydWN0IGZpbGUgKmZwLCBvZmZfdCBvZmYsIGludCB0eXBlLCBvZmZfdCAqIGN1
cl9vZmYpOworaW50CSBzeXNfaW9jdGwoc3RydWN0IGZpbGUgKmZwLCB1X2xvbmcgcmVxdWVzdCwg
dm9pZCAqYnVmKTsKK2ludAkgc3lzX2ZzdGF0KHN0cnVjdCBmaWxlICpmcCwgc3RydWN0IHN0YXQg
KnN0KTsKK2ludAkgc3lzX2ZzdGF0ZnMoc3RydWN0IGZpbGUgKmZwLCBzdHJ1Y3Qgc3RhdGZzICpi
dWYpOworaW50CSBzeXNfZnN5bmMoc3RydWN0IGZpbGUgKmZwKTsKK2ludAkgc3lzX2Z0cnVuY2F0
ZShzdHJ1Y3QgZmlsZSAqZnAsIG9mZl90IGxlbmd0aCk7CisKK2ludAkgc3lzX3JlYWRkaXIoc3Ry
dWN0IGZpbGUgKmZwLCBzdHJ1Y3QgZGlyZW50ICpkaXJlbnQpOworaW50CSBzeXNfcmV3aW5kZGly
KHN0cnVjdCBmaWxlICpmcCk7CitpbnQJIHN5c19zZWVrZGlyKHN0cnVjdCBmaWxlICpmcCwgbG9u
ZyBsb2MpOworaW50CSBzeXNfdGVsbGRpcihzdHJ1Y3QgZmlsZSAqZnAsIGxvbmcgKmxvYyk7Citp
bnQJIHN5c19mY2hkaXIoc3RydWN0IGZpbGUgKmZwLCBjaGFyICpwYXRoKTsKKworaW50CSBzeXNf
bWtkaXIoY2hhciAqcGF0aCwgbW9kZV90IG1vZGUpOworaW50CSBzeXNfcm1kaXIoY2hhciAqcGF0
aCk7CitpbnQJIHN5c19ta25vZChjaGFyICpwYXRoLCBtb2RlX3QgbW9kZSk7CitpbnQJIHN5c19y
ZW5hbWUoY2hhciAqc3JjLCBjaGFyICpkZXN0KTsKK2ludAkgc3lzX2xpbmsoY2hhciAqb2xkcGF0
aCwgY2hhciAqbmV3cGF0aCk7CitpbnQJIHN5c191bmxpbmsoY2hhciAqcGF0aCk7CitpbnQJIHN5
c19zeW1saW5rKGNvbnN0IGNoYXIgKm9sZHBhdGgsIGNvbnN0IGNoYXIgKm5ld3BhdGgpOworaW50
CSBzeXNfYWNjZXNzKGNoYXIgKnBhdGgsIGludCBtb2RlKTsKK2ludAkgc3lzX3N0YXQoY2hhciAq
cGF0aCwgc3RydWN0IHN0YXQgKnN0KTsKK2ludAkgc3lzX2xzdGF0KGNoYXIgKnBhdGgsIHN0cnVj
dCBzdGF0ICpzdCk7CitpbnQJIHN5c19zdGF0ZnMoY2hhciAqcGF0aCwgc3RydWN0IHN0YXRmcyAq
YnVmKTsKK2ludAkgc3lzX3RydW5jYXRlKGNoYXIgKnBhdGgsIG9mZl90IGxlbmd0aCk7CitpbnQJ
IHN5c19yZWFkbGluayhjaGFyICpwYXRoLCBjaGFyICpidWYsIHNpemVfdCBidWZzaXplLCBzc2l6
ZV90ICpzaXplKTsKK2ludCAgc3lzX3V0aW1lcyhjaGFyICpwYXRoLCBjb25zdCBzdHJ1Y3QgdGlt
ZXZhbCB0aW1lc1syXSwgaW50IGZsYWdzKTsKK2ludCAgc3lzX3V0aW1lbnNhdChpbnQgZGlyZmQs
IGNvbnN0IGNoYXIgKnBhdGhuYW1lLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB0
aW1lc3BlYyB0aW1lc1syXSwgaW50IGZsYWdzKTsKK2ludCAgc3lzX2Z1dGltZW5zKGludCBmZCwg
Y29uc3Qgc3RydWN0IHRpbWVzcGVjIHRpbWVzWzJdKTsKK2ludCAgc3lzX2ZhbGxvY2F0ZShzdHJ1
Y3QgZmlsZSAqZnAsIGludCBtb2RlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuKTsKKworaW50
CSBzeXNfbW91bnQoY29uc3QgY2hhciAqZGV2LCBjb25zdCBjaGFyICpkaXIsIGNvbnN0IGNoYXIg
KmZzbmFtZSwgaW50IGZsYWdzLCBjb25zdCB2b2lkICpkYXRhKTsKK2ludAkgc3lzX3Vtb3VudDIo
Y29uc3QgY2hhciAqcGF0aCwgaW50IGZsYWdzKTsKK2ludAkgc3lzX3Vtb3VudChjb25zdCBjaGFy
ICpwYXRoKTsKK2ludAkgc3lzX3Bpdm90X3Jvb3QoY29uc3QgY2hhciAqbmV3X3Jvb3QsIGNvbnN0
IGNoYXIgKm9sZF9wdXQpOworaW50CSBzeXNfc3luYyh2b2lkKTsKK2ludAkgc3lzX2NobW9kKGNv
bnN0IGNoYXIgKnBhdGgsIG1vZGVfdCBtb2RlKTsKK2ludAkgc3lzX2ZjaG1vZChpbnQgZmQsIG1v
ZGVfdCBtb2RlKTsKKworCitpbnQJIHRhc2tfYWxsb2Moc3RydWN0IHRhc2sgKipwdCk7CitpbnQJ
IHRhc2tfY29udihzdHJ1Y3QgdGFzayAqdCwgY29uc3QgY2hhciAqcGF0aCwgaW50IG1vZGUsIGNo
YXIgKmZ1bGwpOworaW50CSBwYXRoX2NvbnYoY2hhciAqd2QsIGNvbnN0IGNoYXIgKmNwYXRoLCBj
aGFyICpmdWxsKTsKKworLy9pbnQJIHNlY19maWxlX3Blcm1pc3Npb24odGFza190IHRhc2ssIGNo
YXIgKnBhdGgsIGludCBtb2RlKTsKK2ludAkgc2VjX3Zub2RlX3Blcm1pc3Npb24oY2hhciAqcGF0
aCk7CisKK2ludCAgICAgbmFtZWkoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IGRlbnRyeSAqKmRw
cCk7CitpbnQJIG5hbWVpX2xhc3Rfbm9mb2xsb3coY2hhciAqcGF0aCwgc3RydWN0IGRlbnRyeSAq
ZGRwLCBzdHJ1Y3QgZGVudHJ5ICoqZHApOworaW50CSBsb29rdXAoY2hhciAqcGF0aCwgc3RydWN0
IGRlbnRyeSAqKmRwcCwgY2hhciAqKm5hbWUpOwordm9pZAkgdm5vZGVfaW5pdCh2b2lkKTsKK3Zv
aWQJIGxvb2t1cF9pbml0KHZvaWQpOworCitpbnQgICAgIHZmc19maW5kcm9vdChjb25zdCBjaGFy
ICpwYXRoLCBzdHJ1Y3QgbW91bnQgKiptcCwgY2hhciAqKnJvb3QpOworaW50CSB2ZnNfZG5hbWVf
Y29weShjaGFyICpkZXN0LCBjb25zdCBjaGFyICpzcmMsIHNpemVfdCBzaXplKTsKKworaW50CSBm
c19ub29wKHZvaWQpOworCitzdHJ1Y3QgZGVudHJ5ICpkZW50cnlfYWxsb2Moc3RydWN0IGRlbnRy
eSAqcGFyZW50X2RwLCBzdHJ1Y3Qgdm5vZGUgKnZwLCBjb25zdCBjaGFyICpwYXRoKTsKK3N0cnVj
dCBkZW50cnkgKmRlbnRyeV9sb29rdXAoc3RydWN0IG1vdW50ICptcCwgY2hhciAqcGF0aCk7Cit2
b2lkIGRlbnRyeV9tb3ZlKHN0cnVjdCBkZW50cnkgKmRwLCBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnRf
ZHAsIGNoYXIgKnBhdGgpOwordm9pZCBkZW50cnlfcmVtb3ZlKHN0cnVjdCBkZW50cnkgKmRwKTsK
K3ZvaWQgZHJlZihzdHJ1Y3QgZGVudHJ5ICpkcCk7Cit2b2lkIGRyZWxlKHN0cnVjdCBkZW50cnkg
KmRwKTsKK3ZvaWQgZGVudHJ5X2luaXQodm9pZCk7CisKKyNpZmRlZiBERUJVR19WRlMKK3ZvaWQJ
IHZub2RlX2R1bXAodm9pZCk7Cit2b2lkCSBtb3VudF9kdW1wKHZvaWQpOworI2VuZGlmCisKK19f
RU5EX0RFQ0xTCisKKyNpZmRlZiBfX2NwbHVzcGx1cworCisvLyBDb252ZXJ0IGEgcGF0aCB0byBh
IGRlbnRyeV9yZWYuICBSZXR1cm5zIGFuIGVtcHR5CisvLyByZWZlcmVuY2UgaWYgbm90IGZvdW5k
IChFTk9FTlQpIGZvciBlZmZpY2llbmN5LCB0aHJvd3MKKy8vIGFuIGVycm9yIG9uIG90aGVyIGVy
cm9ycy4KK2lubGluZSBkZW50cnlfcmVmIG5hbWVpKGNoYXIqIHBhdGgpCit7CisJZGVudHJ5KiBk
cDsKKwlhdXRvIGVyciA9IG5hbWVpKHBhdGgsICZkcCk7CisJaWYgKGVyciA9PSBFTk9FTlQpIHsK
KwkJcmV0dXJuIGRlbnRyeV9yZWYoKTsKKwl9IGVsc2UgaWYgKGVycikgeworCQl0aHJvdyBtYWtl
X2Vycm9yKGVycik7CisJfSBlbHNlIHsKKwkJcmV0dXJuIGRlbnRyeV9yZWYoZHAsIGZhbHNlKTsK
Kwl9Cit9CisKKyNlbmRpZgorCisjZW5kaWYgLyogIV9WRlNfSCAqLwpkaWZmIC0tZ2l0IGEvbGli
L3Zmc2NvcmUvdm5vZGUuYyBiL2xpYi92ZnNjb3JlL3Zub2RlLmMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAuLmEyOTIzNDRmCi0tLSAvZGV2L251bGwKKysrIGIvbGliL3Zmc2Nv
cmUvdm5vZGUuYwpAQCAtMCwwICsxLDUyMiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwNS0y
MDA4LCBLb2hzdWtlIE9odGFuaQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
IDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGFueSBj
by1jb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQorICogICAgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgor
ICogU1VDSCBEQU1BR0UuCisgKi8KKworLyoKKyAqIHZmc192bm9kZS5jIC0gdm5vZGUgc2Vydmlj
ZQorICovCisKKyNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNs
dWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgor
I2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKworI2luY2x1ZGUgPG9z
di9wcmV4Lmg+CisjaW5jbHVkZSA8b3N2L3Zub2RlLmg+CisjaW5jbHVkZSAidmZzLmgiCisKK2Vu
dW0gdnR5cGUgaWZ0b3Z0X3RhYlsxNl0gPSB7CisJVk5PTiwgVkZJRk8sIFZDSFIsIFZOT04sIFZE
SVIsIFZOT04sIFZCTEssIFZOT04sCisJVlJFRywgVk5PTiwgVkxOSywgVk5PTiwgVlNPQ0ssIFZO
T04sIFZOT04sIFZCQUQsCit9OworaW50IHZ0dG9pZl90YWJbMTBdID0geworCTAsIFNfSUZSRUcs
IFNfSUZESVIsIFNfSUZCTEssIFNfSUZDSFIsIFNfSUZMTkssCisJU19JRlNPQ0ssIFNfSUZJRk8s
IFNfSUZNVCwgU19JRk1UCit9OworCisvKgorICogTWVtbzoKKyAqCisgKiBGdW5jdGlvbiAgIFJl
ZiBjb3VudCBMb2NrCisgKiAtLS0tLS0tLS0tIC0tLS0tLS0tLSAtLS0tLS0tLS0tCisgKiB2bl9s
b2NrICAgICAqICAgICAgICBMb2NrCisgKiB2bl91bmxvY2sgICAqICAgICAgICBVbmxvY2sKKyAq
IHZnZXQgICAgICAgIDEgICAgICAgIExvY2sKKyAqIHZwdXQgICAgICAgLTEgICAgICAgIFVubG9j
aworICogdnJlZiAgICAgICArMSAgICAgICAgKgorICogdnJlbGUgICAgICAtMSAgICAgICAgKgor
ICovCisKKyNkZWZpbmUgVk5PREVfQlVDS0VUUyAzMgkJLyogc2l6ZSBvZiB2bm9kZSBoYXNoIHRh
YmxlICovCisKKy8qCisgKiB2bm9kZSB0YWJsZS4KKyAqIEFsbCBhY3RpdmUgKG9wZW5lZCkgdm5v
ZGVzIGFyZSBzdG9yZWQgb24gdGhpcyBoYXNoIHRhYmxlLgorICogVGhleSBjYW4gYmUgYWNjZXNz
ZWQgYnkgaXRzIHBhdGggbmFtZS4KKyAqLworc3RhdGljIExJU1RfSEVBRCh2bm9kZV9oYXNoX2hl
YWQsIHZub2RlKSB2bm9kZV90YWJsZVtWTk9ERV9CVUNLRVRTXTsKKworLyoKKyAqIEdsb2JhbCBs
b2NrIHRvIGFjY2VzcyBhbGwgdm5vZGVzIGFuZCB2bm9kZSB0YWJsZS4KKyAqIElmIGEgdm5vZGUg
aXMgYWxyZWFkeSBsb2NrZWQsIHRoZXJlIGlzIG5vIG5lZWQgdG8KKyAqIGxvY2sgdGhpcyBnbG9i
YWwgbG9jayB0byBhY2Nlc3MgaW50ZXJuYWwgZGF0YS4KKyAqLworc3RhdGljIG11dGV4X3Qgdm5v
ZGVfbG9jayA9IE1VVEVYX0lOSVRJQUxJWkVSOworI2RlZmluZSBWTk9ERV9MT0NLKCkJbXV0ZXhf
bG9jaygmdm5vZGVfbG9jaykKKyNkZWZpbmUgVk5PREVfVU5MT0NLKCkJbXV0ZXhfdW5sb2NrKCZ2
bm9kZV9sb2NrKQorI2RlZmluZSBWTk9ERV9PV05FRCgpCW11dGV4X293bmVkKCZ2bm9kZV9sb2Nr
KQorCisvKgorICogR2V0IHRoZSBoYXNoIHZhbHVlIGZyb20gdGhlIG1vdW50IHBvaW50IGFuZCBw
YXRoIG5hbWUuCisgKiBYWFgoaGNoKTogcmVwbGFjZSB3aXRoIGEgYmV0dGVyIGhhc2ggZm9yIDY0
LWJpdCBwb2ludGVycy4KKyAqLworc3RhdGljIHVfaW50Cit2bl9oYXNoKHN0cnVjdCBtb3VudCAq
bXAsIHVpbnQ2NF90IGlubykKK3sKKwlyZXR1cm4gKGlubyBeICh1bnNpZ25lZCBsb25nKW1wKSAm
IChWTk9ERV9CVUNLRVRTIC0gMSk7Cit9CisKKy8qCisgKiBSZXR1cm5zIGxvY2tlZCB2bm9kZSBm
b3Igc3BlY2lmaWVkIG1vdW50IHBvaW50IGFuZCBwYXRoLgorICogdm5fbG9jaygpIHdpbGwgaW5j
cmVtZW50IHRoZSByZWZlcmVuY2UgY291bnQgb2Ygdm5vZGUuCisgKgorICogTG9ja2luZzogVk5P
REVfTE9DSyBtdXN0IGJlIGhlbGQuCisgKi8KK3N0cnVjdCB2bm9kZSAqCit2bl9sb29rdXAoc3Ry
dWN0IG1vdW50ICptcCwgdWludDY0X3QgaW5vKQoreworCXN0cnVjdCB2bm9kZSAqdnA7CisKKwlh
c3NlcnQoVk5PREVfT1dORUQoKSk7CisJTElTVF9GT1JFQUNIKHZwLCAmdm5vZGVfdGFibGVbdm5f
aGFzaChtcCwgaW5vKV0sIHZfbGluaykgeworCQlpZiAodnAtPnZfbW91bnQgPT0gbXAgJiYgdnAt
PnZfaW5vID09IGlubykgeworCQkJdnAtPnZfcmVmY250Kys7CisJCQltdXRleF9sb2NrKCZ2cC0+
dl9sb2NrKTsKKwkJCXZwLT52X25ybG9ja3MrKzsKKwkJCXJldHVybiB2cDsKKwkJfQorCX0KKwly
ZXR1cm4gbnVsbHB0cjsJCS8qIG5vdCBmb3VuZCAqLworfQorCisjaWZkZWYgREVCVUdfVkZTCitz
dGF0aWMgY29uc3QgY2hhciAqCit2bl9wYXRoKHN0cnVjdCB2bm9kZSAqdnApCit7CisJc3RydWN0
IGRlbnRyeSAqZHA7CisKKwlpZiAoTElTVF9FTVBUWSgmdnAtPnZfbmFtZXMpID09IDEpIHsKKwkJ
cmV0dXJuICgiICIpOworCX0KKwlkcCA9IExJU1RfRklSU1QoJnZwLT52X25hbWVzKTsKKwlyZXR1
cm4gKGRwLT5kX3BhdGgpOworfQorI2VuZGlmCisKKy8qCisgKiBMb2NrIHZub2RlCisgKi8KK3Zv
aWQKK3ZuX2xvY2soc3RydWN0IHZub2RlICp2cCkKK3sKKwlBU1NFUlQodnApOworCUFTU0VSVCh2
cC0+dl9yZWZjbnQgPiAwKTsKKworCW11dGV4X2xvY2soJnZwLT52X2xvY2spOworCXZwLT52X25y
bG9ja3MrKzsKKwlEUFJJTlRGKFZGU0RCX1ZOT0RFLCAoInZuX2xvY2s6ICAgJXNcbiIsIHZuX3Bh
dGgodnApKSk7Cit9CisKKy8qCisgKiBVbmxvY2sgdm5vZGUKKyAqLwordm9pZAordm5fdW5sb2Nr
KHN0cnVjdCB2bm9kZSAqdnApCit7CisJQVNTRVJUKHZwKTsKKwlBU1NFUlQodnAtPnZfcmVmY250
ID4gMCk7CisJQVNTRVJUKHZwLT52X25ybG9ja3MgPiAwKTsKKworCXZwLT52X25ybG9ja3MtLTsK
KwltdXRleF91bmxvY2soJnZwLT52X2xvY2spOworCURQUklOVEYoVkZTREJfVk5PREUsICgidm5f
bG9jazogICAlc1xuIiwgdm5fcGF0aCh2cCkpKTsKK30KKworLyoKKyAqIEFsbG9jYXRlIG5ldyB2
bm9kZSBmb3Igc3BlY2lmaWVkIHBhdGguCisgKiBJbmNyZW1lbnQgaXRzIHJlZmVyZW5jZSBjb3Vu
dCBhbmQgbG9jayBpdC4KKyAqIFJldHVybnMgMSBpZiB2bm9kZSB3YXMgZm91bmQgaW4gY2FjaGU7
IG90aGVyd2lzZSByZXR1cm5zIDAuCisgKi8KK2ludAordmdldChzdHJ1Y3QgbW91bnQgKm1wLCB1
aW50NjRfdCBpbm8sIHN0cnVjdCB2bm9kZSAqKnZwcCkKK3sKKwlzdHJ1Y3Qgdm5vZGUgKnZwOwor
CWludCBlcnJvcjsKKworCSp2cHAgPSBudWxscHRyOworCisJRFBSSU5URihWRlNEQl9WTk9ERSwg
KCJ2Z2V0ICVMTHVcbiIsIGlubykpOworCisJVk5PREVfTE9DSygpOworCisJdnAgPSB2bl9sb29r
dXAobXAsIGlubyk7CisJaWYgKHZwKSB7CisJCVZOT0RFX1VOTE9DSygpOworCQkqdnBwID0gdnA7
CisJCXJldHVybiAxOworCX0KKworCWlmICghKHZwID0gbmV3IHZub2RlKCkpKSB7CisJCVZOT0RF
X1VOTE9DSygpOworCQlyZXR1cm4gMDsKKwl9CisKKwlMSVNUX0lOSVQoJnZwLT52X25hbWVzKTsK
Kwl2cC0+dl9pbm8gPSBpbm87CisJdnAtPnZfbW91bnQgPSBtcDsKKwl2cC0+dl9yZWZjbnQgPSAx
OworCXZwLT52X29wID0gbXAtPm1fb3AtPnZmc192bm9wczsKKwl2cC0+dl9ucmxvY2tzID0gMDsK
KworCS8qCisJICogUmVxdWVzdCB0byBhbGxvY2F0ZSBmcyBzcGVjaWZpYyBkYXRhIGZvciB2bm9k
ZS4KKwkgKi8KKwlpZiAoKGVycm9yID0gVkZTX1ZHRVQobXAsIHZwKSkgIT0gMCkgeworCQlWTk9E
RV9VTkxPQ0soKTsKKwkJZGVsZXRlIHZwOworCQlyZXR1cm4gZXJyb3I7CisJfQorCXZmc19idXN5
KHZwLT52X21vdW50KTsKKwltdXRleF9sb2NrKCZ2cC0+dl9sb2NrKTsKKwl2cC0+dl9ucmxvY2tz
Kys7CisKKwlMSVNUX0lOU0VSVF9IRUFEKCZ2bm9kZV90YWJsZVt2bl9oYXNoKG1wLCBpbm8pXSwg
dnAsIHZfbGluayk7CisJVk5PREVfVU5MT0NLKCk7CisKKwkqdnBwID0gdnA7CisKKwlyZXR1cm4g
MDsKK30KKworLyoKKyAqIFVubG9jayB2bm9kZSBhbmQgZGVjcmVtZW50IGl0cyByZWZlcmVuY2Ug
Y291bnQuCisgKi8KK3ZvaWQKK3ZwdXQoc3RydWN0IHZub2RlICp2cCkKK3sKKwlBU1NFUlQodnAp
OworCUFTU0VSVCh2cC0+dl9ucmxvY2tzID4gMCk7CisJQVNTRVJUKHZwLT52X3JlZmNudCA+IDAp
OworCURQUklOVEYoVkZTREJfVk5PREUsICgidnB1dDogcmVmPSVkICVzXG4iLCB2cC0+dl9yZWZj
bnQsIHZuX3BhdGgodnApKSk7CisKKwlWTk9ERV9MT0NLKCk7CisJdnAtPnZfcmVmY250LS07CisJ
aWYgKHZwLT52X3JlZmNudCA+IDApIHsKKwkgICAgVk5PREVfVU5MT0NLKCk7CisJCXZuX3VubG9j
ayh2cCk7CisJCXJldHVybjsKKwl9CisJTElTVF9SRU1PVkUodnAsIHZfbGluayk7CisJVk5PREVf
VU5MT0NLKCk7CisKKwkvKgorCSAqIERlYWxsb2NhdGUgZnMgc3BlY2lmaWMgdm5vZGUgZGF0YQor
CSAqLworCWlmICh2cC0+dl9vcC0+dm9wX2luYWN0aXZlKQorCQlWT1BfSU5BQ1RJVkUodnApOwor
CXZmc191bmJ1c3kodnAtPnZfbW91bnQpOworCXZwLT52X25ybG9ja3MtLTsKKwlBU1NFUlQodnAt
PnZfbnJsb2NrcyA9PSAwKTsKKwltdXRleF91bmxvY2soJnZwLT52X2xvY2spOworCWRlbGV0ZSB2
cDsKK30KKworLyoKKyAqIEluY3JlbWVudCB0aGUgcmVmZXJlbmNlIGNvdW50IG9uIGFuIGFjdGl2
ZSB2bm9kZS4KKyAqLwordm9pZAordnJlZihzdHJ1Y3Qgdm5vZGUgKnZwKQoreworCUFTU0VSVCh2
cCk7CisJQVNTRVJUKHZwLT52X3JlZmNudCA+IDApOwkvKiBOZWVkIHZnZXQgKi8KKworCVZOT0RF
X0xPQ0soKTsKKwlEUFJJTlRGKFZGU0RCX1ZOT0RFLCAoInZyZWY6IHJlZj0lZFxuIiwgdnAtPnZf
cmVmY250KSk7CisJdnAtPnZfcmVmY250Kys7CisJVk5PREVfVU5MT0NLKCk7Cit9CisKKy8qCisg
KiBEZWNyZW1lbnQgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiB0aGUgdm5vZGUuCisgKiBBbnkgY29k
ZSBpbiB0aGUgc3lzdGVtIHdoaWNoIGlzIHVzaW5nIHZub2RlIHNob3VsZCBjYWxsIHZyZWxlKCkK
KyAqIHdoZW4gaXQgaXMgZmluaXNoZWQgd2l0aCB0aGUgdm5vZGUuCisgKiBJZiBjb3VudCBkcm9w
cyB0byB6ZXJvLCBjYWxsIGluYWN0aXZlIHJvdXRpbmUgYW5kIHJldHVybiB0byBmcmVlbGlzdC4K
KyAqLwordm9pZAordnJlbGUoc3RydWN0IHZub2RlICp2cCkKK3sKKwlBU1NFUlQodnApOworCUFT
U0VSVCh2cC0+dl9yZWZjbnQgPiAwKTsKKworCVZOT0RFX0xPQ0soKTsKKwlEUFJJTlRGKFZGU0RC
X1ZOT0RFLCAoInZyZWxlOiByZWY9JWRcbiIsIHZwLT52X3JlZmNudCkpOworCXZwLT52X3JlZmNu
dC0tOworCWlmICh2cC0+dl9yZWZjbnQgPiAwKSB7CisJCVZOT0RFX1VOTE9DSygpOworCQlyZXR1
cm47CisJfQorCUxJU1RfUkVNT1ZFKHZwLCB2X2xpbmspOworCVZOT0RFX1VOTE9DSygpOworCisJ
LyoKKwkgKiBEZWFsbG9jYXRlIGZzIHNwZWNpZmljIHZub2RlIGRhdGEKKwkgKi8KKwlWT1BfSU5B
Q1RJVkUodnApOworCXZmc191bmJ1c3kodnAtPnZfbW91bnQpOworCWRlbGV0ZSB2cDsKK30KKwor
LyoKKyAqIFJlbW92ZSBhbGwgdm5vZGUgaW4gdGhlIHZub2RlIHRhYmxlIGZvciB1bm1vdW50Lgor
ICovCit2b2lkCit2Zmx1c2goc3RydWN0IG1vdW50ICptcCkKK3sKK30KKworaW50Cit2bl9zdGF0
KHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCBzdGF0ICpzdCkKK3sKKwlzdHJ1Y3QgdmF0dHIgdmF0
dHI7CisJc3RydWN0IHZhdHRyICp2YXA7CisJbW9kZV90IG1vZGU7CisJaW50IGVycm9yOworCisJ
dmFwID0gJnZhdHRyOworCisJbWVtc2V0KHN0LCAwLCBzaXplb2Yoc3RydWN0IHN0YXQpKTsKKwor
CW1lbXNldCh2YXAsIDAsIHNpemVvZihzdHJ1Y3QgdmF0dHIpKTsKKworCWVycm9yID0gVk9QX0dF
VEFUVFIodnAsIHZhcCk7CisJaWYgKGVycm9yKQorCQlyZXR1cm4gZXJyb3I7CisKKwlzdC0+c3Rf
aW5vID0gKGlub190KXZhcC0+dmFfbm9kZWlkOworCXN0LT5zdF9zaXplID0gdmFwLT52YV9zaXpl
OworCW1vZGUgPSB2YXAtPnZhX21vZGU7CisJc3dpdGNoICh2cC0+dl90eXBlKSB7CisJY2FzZSBW
UkVHOgorCQltb2RlIHw9IFNfSUZSRUc7CisJCWJyZWFrOworCWNhc2UgVkRJUjoKKwkJbW9kZSB8
PSBTX0lGRElSOworCQlicmVhazsKKwljYXNlIFZCTEs6CisJCW1vZGUgfD0gU19JRkJMSzsKKwkJ
YnJlYWs7CisJY2FzZSBWQ0hSOgorCQltb2RlIHw9IFNfSUZDSFI7CisJCWJyZWFrOworCWNhc2Ug
VkxOSzoKKwkJbW9kZSB8PSBTX0lGTE5LOworCQlicmVhazsKKwljYXNlIFZTT0NLOgorCQltb2Rl
IHw9IFNfSUZTT0NLOworCQlicmVhazsKKwljYXNlIFZGSUZPOgorCQltb2RlIHw9IFNfSUZJRk87
CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXJldHVybiBFQkFERjsKKwl9OworCXN0LT5zdF9tb2Rl
ID0gbW9kZTsKKwlzdC0+c3RfbmxpbmsgPSB2YXAtPnZhX25saW5rOworCXN0LT5zdF9ibGtzaXpl
ID0gQlNJWkU7CisJc3QtPnN0X2Jsb2NrcyA9IHZhcC0+dmFfc2l6ZSAvIFNfQkxLU0laRTsKKwlz
dC0+c3RfdWlkID0gdmFwLT52YV91aWQ7CisJc3QtPnN0X2dpZCA9IHZhcC0+dmFfZ2lkOworCXN0
LT5zdF9kZXYgPSB2YXAtPnZhX2ZzaWQ7CisJaWYgKHZwLT52X3R5cGUgPT0gVkNIUiB8fCB2cC0+
dl90eXBlID09IFZCTEspCisJCXN0LT5zdF9yZGV2ID0gdmFwLT52YV9yZGV2OworCisJc3QtPnN0
X2F0aW0gPSB2YXAtPnZhX2F0aW1lOworCXN0LT5zdF9tdGltID0gdmFwLT52YV9tdGltZTsKKwlz
dC0+c3RfY3RpbSA9IHZhcC0+dmFfY3RpbWU7CisKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIFNl
dCBhY2Nlc3MgYW5kIG1vZGlmaWNhdGlvbiB0aW1lcyBvZiB0aGUgdm5vZGUKKyAqLworaW50Cit2
bl9zZXR0aW1lcyhzdHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3QgdGltZXNwZWMgdGltZXNbMl0pCit7
CisgICAgc3RydWN0IHZhdHRyIHZhdHRyOworICAgIHN0cnVjdCB2YXR0ciAqdmFwOworICAgIGlu
dCBlcnJvcjsKKworICAgIHZhcCA9ICZ2YXR0cjsKKyAgICBtZW1zZXQodmFwLCAwLCBzaXplb2Yo
c3RydWN0IHZhdHRyKSk7CisKKyAgICB2YXAtPnZhX2F0aW1lID0gdGltZXNbMF07CisgICAgdmFw
LT52YV9tdGltZSA9IHRpbWVzWzFdOworICAgIHZhcC0+dmFfbWFzayA9ICgodGltZXNbMF0udHZf
bnNlYyA9PSBVVElNRV9PTUlUKSA/IDAgOiBBVF9BVElNRSkKKyAgICAgICAgICAgICAgICAgICAg
fCAoKHRpbWVzWzFdLnR2X25zZWMgPT0gVVRJTUVfT01JVCkgPyAwIDogQVRfTVRJTUUpOworICAg
IHZuX2xvY2sodnApOworICAgIGVycm9yID0gVk9QX1NFVEFUVFIodnAsIHZhcCk7CisgICAgdm5f
dW5sb2NrKHZwKTsKKworICAgIHJldHVybiBlcnJvcjsKK30KKworLyoKKyAqIFNldCBjaG1vZCBw
ZXJtaXNzaW9ucyBvbiB0aGUgdm5vZGUuCisgKi8KK2ludAordm5fc2V0bW9kZShzdHJ1Y3Qgdm5v
ZGUgKnZwLCBtb2RlX3QgbmV3X21vZGUpCit7CisgICAgc3RydWN0IHZhdHRyIHZhdHRyOworICAg
IG1lbXNldCgmdmF0dHIsIDAsIHNpemVvZih2YXR0cikpOworICAgIHZhdHRyLnZhX21vZGUgPSBu
ZXdfbW9kZTsKKyAgICB2YXR0ci52YV9tYXNrID0gQVRfTU9ERTsKKyAgICB2bl9sb2NrKHZwKTsK
KyAgICB2cC0+dl9tb2RlID0gbmV3X21vZGU7CisgICAgaW50IGVycm9yID0gVk9QX1NFVEFUVFIo
dnAsICZ2YXR0cik7CisgICAgdm5fdW5sb2NrKHZwKTsKKyAgICByZXR1cm4gZXJyb3I7Cit9CisK
Ky8qCisgKiBDaGVjayBwZXJtaXNzaW9uIG9uIHZub2RlIHBvaW50ZXIuCisgKi8KK2ludAordm5f
YWNjZXNzKHN0cnVjdCB2bm9kZSAqdnAsIGludCBmbGFncykKK3sKKwlpbnQgZXJyb3IgPSAwOwor
CisJaWYgKChmbGFncyAmIFZFWEVDKSAmJiAodnAtPnZfbW9kZSAmIDAxMTEpID09IDApIHsKKwkJ
ZXJyb3IgPSBFQUNDRVM7CisJCWdvdG8gb3V0OworCX0KKwlpZiAoKGZsYWdzICYgVlJFQUQpICYm
ICh2cC0+dl9tb2RlICYgMDQ0NCkgPT0gMCkgeworCQllcnJvciA9IEVBQ0NFUzsKKwkJZ290byBv
dXQ7CisJfQorCWlmIChmbGFncyAmIFZXUklURSkgeworCQlpZiAodnAtPnZfbW91bnQtPm1fZmxh
Z3MgJiBNTlRfUkRPTkxZKSB7CisJCQllcnJvciA9IEVST0ZTOworCQkJZ290byBvdXQ7CisJCX0K
KwkJaWYgKCh2cC0+dl9tb2RlICYgMDIyMikgPT0gMCkgeworCQkJZXJyb3IgPSBFQUNDRVM7CisJ
CQlnb3RvIG91dDsKKwkJfQorCX0KKyBvdXQ6CisJcmV0dXJuIGVycm9yOworfQorCisjaWZkZWYg
REVCVUdfVkZTCisvKgorICogRHVtcCBhbGwgYWxsIHZub2RlLgorICovCit2b2lkCit2bm9kZV9k
dW1wKHZvaWQpCit7CisJaW50IGk7CisJc3RydWN0IHZub2RlICp2cDsKKwlzdHJ1Y3QgbW91bnQg
Km1wOworCWNoYXIgdHlwZVtdWzZdID0geyAiVk5PTiAiLCAiVlJFRyAiLCAiVkRJUiAiLCAiVkJM
SyAiLCAiVkNIUiAiLAorCQkJICAgIlZMTksgIiwgIlZTT0NLIiwgIlZGSUZPIiB9OworCisJVk5P
REVfTE9DSygpOworCWtwcmludGYoIkR1bXAgdm5vZGVcbiIpOworCWtwcmludGYoIiB2bm9kZSAg
ICBtb3VudCAgICB0eXBlICByZWZjbnQgYmxrbm8gICAgcGF0aFxuIik7CisJa3ByaW50ZigiIC0t
LS0tLS0tIC0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS1cbiIpOworCisJZm9yIChpID0gMDsgaSA8IFZOT0RFX0JVQ0tFVFM7IGkrKykg
eworCSAgICAgICAgTElTVF9GT1JFQUNIKHZwLCAmdm5vZGVfdGFibGVbaV0sIHZfbGluaykgewor
CQkJbXAgPSB2cC0+dl9tb3VudDsKKworCQkJa3ByaW50ZigiICUwOHggJTA4eCAlcyAlNmQgJThk
ICVzJXNcbiIsICh1X2xvbmcpdnAsCisJCQkJKHVfbG9uZyltcCwgdHlwZVt2cC0+dl90eXBlXSwg
dnAtPnZfcmVmY250LAorCQkJCShzdHJsZW4obXAtPm1fcGF0aCkgPT0gMSkgPyAiXDAiIDogbXAt
Pm1fcGF0aCwKKwkJCQl2bl9wYXRoKHZwKSk7CisJCX0KKwl9CisJa3ByaW50ZigiXG4iKTsKKwlW
Tk9ERV9VTkxPQ0soKTsKK30KKyNlbmRpZgorCitpbnQKK3ZvcF9udWxsb3Aodm9pZCkKK3sKKwly
ZXR1cm4gMDsKK30KKworaW50Cit2b3BfZWludmFsKHZvaWQpCit7CisJcmV0dXJuIEVJTlZBTDsK
K30KKworaW50Cit2b3BfZXBlcm0odm9pZCkKK3sKKwlyZXR1cm4gRVBFUk07Cit9CisKK2ludAor
dm9wX2Vyb2ZzKHZvaWQpCit7CisJcmV0dXJuIEVST0ZTOworfQorCisvKgorICogdm5vZGVfaW5p
dCgpIGlzIGNhbGxlZCBvbmNlIChmcm9tIHZmc19pbml0KQorICogaW4gaW5pdGlhbGl6YXRpb24u
CisgKi8KK3ZvaWQKK3Zub2RlX2luaXQodm9pZCkKK3sKKwlpbnQgaTsKKworCWZvciAoaSA9IDA7
IGkgPCBWTk9ERV9CVUNLRVRTOyBpKyspCisJCUxJU1RfSU5JVCgmdm5vZGVfdGFibGVbaV0pOwor
fQorCit2b2lkIHZuX2FkZF9uYW1lKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCBkZW50cnkgKmRw
KQoreworCXZuX2xvY2sodnApOworCUxJU1RfSU5TRVJUX0hFQUQoJnZwLT52X25hbWVzLCBkcCwg
ZF9uYW1lc19saW5rKTsKKwl2bl91bmxvY2sodnApOworfQorCit2b2lkIHZuX2RlbF9uYW1lKHN0
cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCBkZW50cnkgKmRwKQoreworCXZuX2xvY2sodnApOworCUxJ
U1RfUkVNT1ZFKGRwLCBkX25hbWVzX2xpbmspOworCXZuX3VubG9jayh2cCk7Cit9CisKLS0gCjIu
MTkuMgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1p
bmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3Jn
Cmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2
ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Feb 04 14:39:37 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 04 Feb 2019 14:39:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gqfPN-0006VH-4y; Mon, 04 Feb 2019 14:39:37 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Kl24=QL=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gqfPL-0006Ut-63
 for minios-devel@lists.xen.org; Mon, 04 Feb 2019 14:39:35 +0000
X-Inumbo-ID: abe74830-288a-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id abe74830-288a-11e9-bc90-bc764e045a96;
 Mon, 04 Feb 2019 14:39:27 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 45EF5F2071;
 Mon,  4 Feb 2019 15:39:26 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id qrHROcRucSPE; Mon,  4 Feb 2019 15:39:26 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id D8B5DF2065
 for <minios-devel@lists.xen.org>; Mon,  4 Feb 2019 15:39:23 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 4 Feb 2019 15:39:23 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>, <Simon.kuenzer@neclab.eu>,
 <sharan.santhanam@neclab.eu>
Date: Mon, 4 Feb 2019 15:37:21 +0100
Message-ID: <20190204143739.29249-30-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 05/23] lib/vfscore: tabify
 imported vfs code
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VG8gY29tcGx5IHdpdGggVW5pa3JhZnQgY29kaW5nIHN0eWxlLCBpbmRlbnRzIG11c3QgYmUgdGFi
cywgbm90CnNwYWNlcy4gSW1wb3J0ZWQgY29kZSB3YXMgYSBtaXh0dXJlIG9mIGJvdGguCgpTaWdu
ZWQtb2ZmLWJ5OiBZdXJpIFZvbGNoa292IDx5dXJpLnZvbGNoa292QG5lY2xhYi5ldT4KLS0tCiBs
aWIvdmZzY29yZS9kZW50cnkuYyAgICAgICAgICAgICAgICAgfCAgMjY4ICstLQogbGliL3Zmc2Nv
cmUvZm9wcy5jICAgICAgICAgICAgICAgICAgIHwgICAzMiArLQogbGliL3Zmc2NvcmUvaW5jbHVk
ZS92ZnNjb3JlL2RlbnRyeS5oIHwgICAgNCArLQogbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3Jl
L21vdW50LmggIHwgICAgOCArLQogbGliL3Zmc2NvcmUvbG9va3VwLmMgICAgICAgICAgICAgICAg
IHwgIDU1NCArKy0tLQogbGliL3Zmc2NvcmUvbWFpbi5jICAgICAgICAgICAgICAgICAgIHwgMjg0
NCArKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQogbGliL3Zmc2NvcmUvbW91bnQuYyAgICAgICAg
ICAgICAgICAgIHwgIDU4MCArKystLS0KIGxpYi92ZnNjb3JlL3N5c2NhbGxzLmMgICAgICAgICAg
ICAgICB8ICA0NjQgKystLS0KIGxpYi92ZnNjb3JlL3Rhc2suYyAgICAgICAgICAgICAgICAgICB8
ICAgMTAgKy0KIGxpYi92ZnNjb3JlL3Zmcy5oICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0K
IGxpYi92ZnNjb3JlL3Zub2RlLmMgICAgICAgICAgICAgICAgICB8ICAgNTAgKy0KIDExIGZpbGVz
IGNoYW5nZWQsIDI0MDggaW5zZXJ0aW9ucygrKSwgMjQwOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1n
aXQgYS9saWIvdmZzY29yZS9kZW50cnkuYyBiL2xpYi92ZnNjb3JlL2RlbnRyeS5jCmluZGV4IGZh
Y2Q5ZWFhLi5jMmYyMDliMiAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvZGVudHJ5LmMKKysrIGIv
bGliL3Zmc2NvcmUvZGVudHJ5LmMKQEAgLTU1LDE4MCArNTUsMTgwIEBAIHN0YXRpYyBtdXRleCBk
ZW50cnlfaGFzaF9sb2NrOwogc3RhdGljIHVfaW50CiBkZW50cnlfaGFzaChzdHJ1Y3QgbW91bnQg
Km1wLCBjb25zdCBjaGFyICpwYXRoKQogewotICAgIHVfaW50IHZhbCA9IDA7Ci0KLSAgICBpZiAo
cGF0aCkgewotICAgICAgICB3aGlsZSAoKnBhdGgpIHsKLSAgICAgICAgICAgIHZhbCA9ICgodmFs
IDw8IDUpICsgdmFsKSArICpwYXRoKys7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuICh2
YWwgXiAodW5zaWduZWQgbG9uZykgbXApICYgKERFTlRSWV9CVUNLRVRTIC0gMSk7CisJdV9pbnQg
dmFsID0gMDsKKworCWlmIChwYXRoKSB7CisJCXdoaWxlICgqcGF0aCkgeworCQkJdmFsID0gKCh2
YWwgPDwgNSkgKyB2YWwpICsgKnBhdGgrKzsKKwkJfQorCX0KKwlyZXR1cm4gKHZhbCBeICh1bnNp
Z25lZCBsb25nKSBtcCkgJiAoREVOVFJZX0JVQ0tFVFMgLSAxKTsKIH0KIAogCiBzdHJ1Y3QgZGVu
dHJ5ICoKIGRlbnRyeV9hbGxvYyhzdHJ1Y3QgZGVudHJ5ICpwYXJlbnRfZHAsIHN0cnVjdCB2bm9k
ZSAqdnAsIGNvbnN0IGNoYXIgKnBhdGgpCiB7Ci0gICAgc3RydWN0IG1vdW50ICptcCA9IHZwLT52
X21vdW50OwotICAgIHN0cnVjdCBkZW50cnkgKmRwID0gKGRlbnRyeSopY2FsbG9jKHNpemVvZigq
ZHApLCAxKTsKLQotICAgIGlmICghZHApIHsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
fQotCi0gICAgdnJlZih2cCk7Ci0KLSAgICBkcC0+ZF9yZWZjbnQgPSAxOwotICAgIGRwLT5kX3Zu
b2RlID0gdnA7Ci0gICAgZHAtPmRfbW91bnQgPSBtcDsKLSAgICBkcC0+ZF9wYXRoID0gc3RyZHVw
KHBhdGgpOwotICAgIExJU1RfSU5JVCgmZHAtPmRfY2hpbGRyZW4pOwotCi0gICAgaWYgKHBhcmVu
dF9kcCkgewotICAgICAgICBkcmVmKHBhcmVudF9kcCk7Ci0gICAgICAgIFdJVEhfTE9DSyhwYXJl
bnRfZHAtPmRfbG9jaykgewotICAgICAgICAgICAgLy8gSW5zZXJ0IGRwIGludG8gaXRzIHBhcmVu
dCdzIGNoaWxkcmVuIGxpc3QuCi0gICAgICAgICAgICBMSVNUX0lOU0VSVF9IRUFEKCZwYXJlbnRf
ZHAtPmRfY2hpbGRyZW4sIGRwLCBkX2NoaWxkcmVuX2xpbmspOwotICAgICAgICB9Ci0gICAgfQot
ICAgIGRwLT5kX3BhcmVudCA9IHBhcmVudF9kcDsKLQotICAgIHZuX2FkZF9uYW1lKHZwLCBkcCk7
Ci0KLSAgICBtdXRleF9sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKLSAgICBMSVNUX0lOU0VSVF9I
RUFEKCZkZW50cnlfaGFzaF90YWJsZVtkZW50cnlfaGFzaChtcCwgcGF0aCldLCBkcCwgZF9saW5r
KTsKLSAgICBtdXRleF91bmxvY2soJmRlbnRyeV9oYXNoX2xvY2spOwotICAgIHJldHVybiBkcDsK
KwlzdHJ1Y3QgbW91bnQgKm1wID0gdnAtPnZfbW91bnQ7CisJc3RydWN0IGRlbnRyeSAqZHAgPSAo
ZGVudHJ5KiljYWxsb2Moc2l6ZW9mKCpkcCksIDEpOworCisJaWYgKCFkcCkgeworCQlyZXR1cm4g
bnVsbHB0cjsKKwl9CisKKwl2cmVmKHZwKTsKKworCWRwLT5kX3JlZmNudCA9IDE7CisJZHAtPmRf
dm5vZGUgPSB2cDsKKwlkcC0+ZF9tb3VudCA9IG1wOworCWRwLT5kX3BhdGggPSBzdHJkdXAocGF0
aCk7CisJTElTVF9JTklUKCZkcC0+ZF9jaGlsZHJlbik7CisKKwlpZiAocGFyZW50X2RwKSB7CisJ
CWRyZWYocGFyZW50X2RwKTsKKwkJV0lUSF9MT0NLKHBhcmVudF9kcC0+ZF9sb2NrKSB7CisJCQkv
LyBJbnNlcnQgZHAgaW50byBpdHMgcGFyZW50J3MgY2hpbGRyZW4gbGlzdC4KKwkJCUxJU1RfSU5T
RVJUX0hFQUQoJnBhcmVudF9kcC0+ZF9jaGlsZHJlbiwgZHAsIGRfY2hpbGRyZW5fbGluayk7CisJ
CX0KKwl9CisJZHAtPmRfcGFyZW50ID0gcGFyZW50X2RwOworCisJdm5fYWRkX25hbWUodnAsIGRw
KTsKKworCW11dGV4X2xvY2soJmRlbnRyeV9oYXNoX2xvY2spOworCUxJU1RfSU5TRVJUX0hFQUQo
JmRlbnRyeV9oYXNoX3RhYmxlW2RlbnRyeV9oYXNoKG1wLCBwYXRoKV0sIGRwLCBkX2xpbmspOwor
CW11dGV4X3VubG9jaygmZGVudHJ5X2hhc2hfbG9jayk7CisJcmV0dXJuIGRwOwogfTsKIAogc3Ry
dWN0IGRlbnRyeSAqCiBkZW50cnlfbG9va3VwKHN0cnVjdCBtb3VudCAqbXAsIGNoYXIgKnBhdGgp
CiB7Ci0gICAgc3RydWN0IGRlbnRyeSAqZHA7Ci0KLSAgICBtdXRleF9sb2NrKCZkZW50cnlfaGFz
aF9sb2NrKTsKLSAgICBMSVNUX0ZPUkVBQ0goZHAsICZkZW50cnlfaGFzaF90YWJsZVtkZW50cnlf
aGFzaChtcCwgcGF0aCldLCBkX2xpbmspIHsKLSAgICAgICAgaWYgKGRwLT5kX21vdW50ID09IG1w
ICYmICFzdHJuY21wKGRwLT5kX3BhdGgsIHBhdGgsIFBBVEhfTUFYKSkgewotICAgICAgICAgICAg
ZHAtPmRfcmVmY250Kys7Ci0gICAgICAgICAgICBtdXRleF91bmxvY2soJmRlbnRyeV9oYXNoX2xv
Y2spOwotICAgICAgICAgICAgcmV0dXJuIGRwOwotICAgICAgICB9Ci0gICAgfQotICAgIG11dGV4
X3VubG9jaygmZGVudHJ5X2hhc2hfbG9jayk7Ci0gICAgcmV0dXJuIG51bGxwdHI7ICAgICAgICAg
ICAgICAgIC8qIG5vdCBmb3VuZCAqLworCXN0cnVjdCBkZW50cnkgKmRwOworCisJbXV0ZXhfbG9j
aygmZGVudHJ5X2hhc2hfbG9jayk7CisJTElTVF9GT1JFQUNIKGRwLCAmZGVudHJ5X2hhc2hfdGFi
bGVbZGVudHJ5X2hhc2gobXAsIHBhdGgpXSwgZF9saW5rKSB7CisJCWlmIChkcC0+ZF9tb3VudCA9
PSBtcCAmJiAhc3RybmNtcChkcC0+ZF9wYXRoLCBwYXRoLCBQQVRIX01BWCkpIHsKKwkJCWRwLT5k
X3JlZmNudCsrOworCQkJbXV0ZXhfdW5sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKKwkJCXJldHVy
biBkcDsKKwkJfQorCX0KKwltdXRleF91bmxvY2soJmRlbnRyeV9oYXNoX2xvY2spOworCXJldHVy
biBudWxscHRyOyAgICAgICAgICAgICAgICAvKiBub3QgZm91bmQgKi8KIH0KIAogc3RhdGljIHZv
aWQgZGVudHJ5X2NoaWxkcmVuX3JlbW92ZShzdHJ1Y3QgZGVudHJ5ICpkcCkKIHsKLSAgICBzdHJ1
Y3QgZGVudHJ5ICplbnRyeSA9IG51bGxwdHI7Ci0KLSAgICBXSVRIX0xPQ0soZHAtPmRfbG9jaykg
ewotICAgICAgICBMSVNUX0ZPUkVBQ0goZW50cnksICZkcC0+ZF9jaGlsZHJlbiwgZF9jaGlsZHJl
bl9saW5rKSB7Ci0gICAgICAgICAgICBBU1NFUlQoZW50cnkpOwotICAgICAgICAgICAgQVNTRVJU
KGVudHJ5LT5kX3JlZmNudCA+IDApOwotICAgICAgICAgICAgTElTVF9SRU1PVkUoZW50cnksIGRf
bGluayk7Ci0gICAgICAgIH0KLSAgICB9CisJc3RydWN0IGRlbnRyeSAqZW50cnkgPSBudWxscHRy
OworCisJV0lUSF9MT0NLKGRwLT5kX2xvY2spIHsKKwkJTElTVF9GT1JFQUNIKGVudHJ5LCAmZHAt
PmRfY2hpbGRyZW4sIGRfY2hpbGRyZW5fbGluaykgeworCQkJQVNTRVJUKGVudHJ5KTsKKwkJCUFT
U0VSVChlbnRyeS0+ZF9yZWZjbnQgPiAwKTsKKwkJCUxJU1RfUkVNT1ZFKGVudHJ5LCBkX2xpbmsp
OworCQl9CisJfQogfQogCiB2b2lkCiBkZW50cnlfbW92ZShzdHJ1Y3QgZGVudHJ5ICpkcCwgc3Ry
dWN0IGRlbnRyeSAqcGFyZW50X2RwLCBjaGFyICpwYXRoKQogewotICAgIHN0cnVjdCBkZW50cnkg
Km9sZF9wZHAgPSBkcC0+ZF9wYXJlbnQ7Ci0gICAgY2hhciAqb2xkX3BhdGggPSBkcC0+ZF9wYXRo
OwotCi0gICAgaWYgKG9sZF9wZHApIHsKLSAgICAgICAgV0lUSF9MT0NLKG9sZF9wZHAtPmRfbG9j
aykgewotICAgICAgICAgICAgLy8gUmVtb3ZlIGRwIGZyb20gaXRzIG9sZCBwYXJlbnQncyBjaGls
ZHJlbiBsaXN0LgotICAgICAgICAgICAgTElTVF9SRU1PVkUoZHAsIGRfY2hpbGRyZW5fbGluayk7
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAocGFyZW50X2RwKSB7Ci0gICAgICAgIGRyZWYo
cGFyZW50X2RwKTsKLSAgICAgICAgV0lUSF9MT0NLKHBhcmVudF9kcC0+ZF9sb2NrKSB7Ci0gICAg
ICAgICAgICAvLyBJbnNlcnQgZHAgaW50byBpdHMgbmV3IHBhcmVudCdzIGNoaWxkcmVuIGxpc3Qu
Ci0gICAgICAgICAgICBMSVNUX0lOU0VSVF9IRUFEKCZwYXJlbnRfZHAtPmRfY2hpbGRyZW4sIGRw
LCBkX2NoaWxkcmVuX2xpbmspOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgV0lUSF9MT0NLKGRl
bnRyeV9oYXNoX2xvY2spIHsKLSAgICAgICAgLy8gUmVtb3ZlIGFsbCBkcCdzIGNoaWxkIGRlbnRy
aWVzIGZyb20gdGhlIGhhc2h0YWJsZS4KLSAgICAgICAgZGVudHJ5X2NoaWxkcmVuX3JlbW92ZShk
cCk7Ci0gICAgICAgIC8vIFJlbW92ZSBkcCB3aXRoIG91dGRhdGVkIGhhc2ggaW5mbyBmcm9tIHRo
ZSBoYXNodGFibGUuCi0gICAgICAgIExJU1RfUkVNT1ZFKGRwLCBkX2xpbmspOwotICAgICAgICAv
LyBVcGRhdGUgZHAuCi0gICAgICAgIGRwLT5kX3BhdGggPSBzdHJkdXAocGF0aCk7Ci0gICAgICAg
IGRwLT5kX3BhcmVudCA9IHBhcmVudF9kcDsKLSAgICAgICAgLy8gSW5zZXJ0IGRwIHVwZGF0ZWQg
aGFzaCBpbmZvIGludG8gdGhlIGhhc2h0YWJsZS4KLSAgICAgICAgTElTVF9JTlNFUlRfSEVBRCgm
ZGVudHJ5X2hhc2hfdGFibGVbZGVudHJ5X2hhc2goZHAtPmRfbW91bnQsIHBhdGgpXSwKLSAgICAg
ICAgICAgIGRwLCBkX2xpbmspOwotICAgIH0KLQotICAgIGlmIChvbGRfcGRwKSB7Ci0gICAgICAg
IGRyZWxlKG9sZF9wZHApOwotICAgIH0KLQotICAgIGZyZWUob2xkX3BhdGgpOworCXN0cnVjdCBk
ZW50cnkgKm9sZF9wZHAgPSBkcC0+ZF9wYXJlbnQ7CisJY2hhciAqb2xkX3BhdGggPSBkcC0+ZF9w
YXRoOworCisJaWYgKG9sZF9wZHApIHsKKwkJV0lUSF9MT0NLKG9sZF9wZHAtPmRfbG9jaykgewor
CQkJLy8gUmVtb3ZlIGRwIGZyb20gaXRzIG9sZCBwYXJlbnQncyBjaGlsZHJlbiBsaXN0LgorCQkJ
TElTVF9SRU1PVkUoZHAsIGRfY2hpbGRyZW5fbGluayk7CisJCX0KKwl9CisKKwlpZiAocGFyZW50
X2RwKSB7CisJCWRyZWYocGFyZW50X2RwKTsKKwkJV0lUSF9MT0NLKHBhcmVudF9kcC0+ZF9sb2Nr
KSB7CisJCQkvLyBJbnNlcnQgZHAgaW50byBpdHMgbmV3IHBhcmVudCdzIGNoaWxkcmVuIGxpc3Qu
CisJCQlMSVNUX0lOU0VSVF9IRUFEKCZwYXJlbnRfZHAtPmRfY2hpbGRyZW4sIGRwLCBkX2NoaWxk
cmVuX2xpbmspOworCQl9CisJfQorCisJV0lUSF9MT0NLKGRlbnRyeV9oYXNoX2xvY2spIHsKKwkJ
Ly8gUmVtb3ZlIGFsbCBkcCdzIGNoaWxkIGRlbnRyaWVzIGZyb20gdGhlIGhhc2h0YWJsZS4KKwkJ
ZGVudHJ5X2NoaWxkcmVuX3JlbW92ZShkcCk7CisJCS8vIFJlbW92ZSBkcCB3aXRoIG91dGRhdGVk
IGhhc2ggaW5mbyBmcm9tIHRoZSBoYXNodGFibGUuCisJCUxJU1RfUkVNT1ZFKGRwLCBkX2xpbmsp
OworCQkvLyBVcGRhdGUgZHAuCisJCWRwLT5kX3BhdGggPSBzdHJkdXAocGF0aCk7CisJCWRwLT5k
X3BhcmVudCA9IHBhcmVudF9kcDsKKwkJLy8gSW5zZXJ0IGRwIHVwZGF0ZWQgaGFzaCBpbmZvIGlu
dG8gdGhlIGhhc2h0YWJsZS4KKwkJTElTVF9JTlNFUlRfSEVBRCgmZGVudHJ5X2hhc2hfdGFibGVb
ZGVudHJ5X2hhc2goZHAtPmRfbW91bnQsIHBhdGgpXSwKKwkJCWRwLCBkX2xpbmspOworCX0KKwor
CWlmIChvbGRfcGRwKSB7CisJCWRyZWxlKG9sZF9wZHApOworCX0KKworCWZyZWUob2xkX3BhdGgp
OwogfQogCiB2b2lkCiBkZW50cnlfcmVtb3ZlKHN0cnVjdCBkZW50cnkgKmRwKQogewotICAgIG11
dGV4X2xvY2soJmRlbnRyeV9oYXNoX2xvY2spOwotICAgIExJU1RfUkVNT1ZFKGRwLCBkX2xpbmsp
OwotICAgIC8qIHB1dCBpdCBvbiBhIGZha2UgbGlzdCBmb3IgZHJlbGUoKSB0byB3b3JrKi8KLSAg
ICBMSVNUX0lOU0VSVF9IRUFEKCZmYWtlLCBkcCwgZF9saW5rKTsKLSAgICBtdXRleF91bmxvY2so
JmRlbnRyeV9oYXNoX2xvY2spOworCW11dGV4X2xvY2soJmRlbnRyeV9oYXNoX2xvY2spOworCUxJ
U1RfUkVNT1ZFKGRwLCBkX2xpbmspOworCS8qIHB1dCBpdCBvbiBhIGZha2UgbGlzdCBmb3IgZHJl
bGUoKSB0byB3b3JrKi8KKwlMSVNUX0lOU0VSVF9IRUFEKCZmYWtlLCBkcCwgZF9saW5rKTsKKwlt
dXRleF91bmxvY2soJmRlbnRyeV9oYXNoX2xvY2spOwogfQogCiB2b2lkCiBkcmVmKHN0cnVjdCBk
ZW50cnkgKmRwKQogewotICAgIEFTU0VSVChkcCk7Ci0gICAgQVNTRVJUKGRwLT5kX3JlZmNudCA+
IDApOworCUFTU0VSVChkcCk7CisJQVNTRVJUKGRwLT5kX3JlZmNudCA+IDApOwogCi0gICAgbXV0
ZXhfbG9jaygmZGVudHJ5X2hhc2hfbG9jayk7Ci0gICAgZHAtPmRfcmVmY250Kys7Ci0gICAgbXV0
ZXhfdW5sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKKwltdXRleF9sb2NrKCZkZW50cnlfaGFzaF9s
b2NrKTsKKwlkcC0+ZF9yZWZjbnQrKzsKKwltdXRleF91bmxvY2soJmRlbnRyeV9oYXNoX2xvY2sp
OwogfQogCiB2b2lkCiBkcmVsZShzdHJ1Y3QgZGVudHJ5ICpkcCkKIHsKLSAgICBBU1NFUlQoZHAp
OwotICAgIEFTU0VSVChkcC0+ZF9yZWZjbnQgPiAwKTsKLQotICAgIG11dGV4X2xvY2soJmRlbnRy
eV9oYXNoX2xvY2spOwotICAgIGlmICgtLWRwLT5kX3JlZmNudCkgewotICAgICAgICBtdXRleF91
bmxvY2soJmRlbnRyeV9oYXNoX2xvY2spOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIExJ
U1RfUkVNT1ZFKGRwLCBkX2xpbmspOwotICAgIHZuX2RlbF9uYW1lKGRwLT5kX3Zub2RlLCBkcCk7
Ci0KLSAgICBtdXRleF91bmxvY2soJmRlbnRyeV9oYXNoX2xvY2spOwotCi0gICAgaWYgKGRwLT5k
X3BhcmVudCkgewotICAgICAgICBXSVRIX0xPQ0soZHAtPmRfcGFyZW50LT5kX2xvY2spIHsKLSAg
ICAgICAgICAgIC8vIFJlbW92ZSBkcCBmcm9tIGl0cyBwYXJlbnQncyBjaGlsZHJlbiBsaXN0Lgot
ICAgICAgICAgICAgTElTVF9SRU1PVkUoZHAsIGRfY2hpbGRyZW5fbGluayk7Ci0gICAgICAgIH0K
LSAgICAgICAgZHJlbGUoZHAtPmRfcGFyZW50KTsKLSAgICB9Ci0KLSAgICB2cmVsZShkcC0+ZF92
bm9kZSk7Ci0KLSAgICBmcmVlKGRwLT5kX3BhdGgpOwotICAgIGZyZWUoZHApOworCUFTU0VSVChk
cCk7CisJQVNTRVJUKGRwLT5kX3JlZmNudCA+IDApOworCisJbXV0ZXhfbG9jaygmZGVudHJ5X2hh
c2hfbG9jayk7CisJaWYgKC0tZHAtPmRfcmVmY250KSB7CisJCW11dGV4X3VubG9jaygmZGVudHJ5
X2hhc2hfbG9jayk7CisJCXJldHVybjsKKwl9CisJTElTVF9SRU1PVkUoZHAsIGRfbGluayk7CisJ
dm5fZGVsX25hbWUoZHAtPmRfdm5vZGUsIGRwKTsKKworCW11dGV4X3VubG9jaygmZGVudHJ5X2hh
c2hfbG9jayk7CisKKwlpZiAoZHAtPmRfcGFyZW50KSB7CisJCVdJVEhfTE9DSyhkcC0+ZF9wYXJl
bnQtPmRfbG9jaykgeworCQkJLy8gUmVtb3ZlIGRwIGZyb20gaXRzIHBhcmVudCdzIGNoaWxkcmVu
IGxpc3QuCisJCQlMSVNUX1JFTU9WRShkcCwgZF9jaGlsZHJlbl9saW5rKTsKKwkJfQorCQlkcmVs
ZShkcC0+ZF9wYXJlbnQpOworCX0KKworCXZyZWxlKGRwLT5kX3Zub2RlKTsKKworCWZyZWUoZHAt
PmRfcGF0aCk7CisJZnJlZShkcCk7CiB9CiAKIHZvaWQKIGRlbnRyeV9pbml0KHZvaWQpCiB7Ci0g
ICAgaW50IGk7CisJaW50IGk7CiAKLSAgICBmb3IgKGkgPSAwOyBpIDwgREVOVFJZX0JVQ0tFVFM7
IGkrKykgewotICAgICAgICBMSVNUX0lOSVQoJmRlbnRyeV9oYXNoX3RhYmxlW2ldKTsKLSAgICB9
CisJZm9yIChpID0gMDsgaSA8IERFTlRSWV9CVUNLRVRTOyBpKyspIHsKKwkJTElTVF9JTklUKCZk
ZW50cnlfaGFzaF90YWJsZVtpXSk7CisJfQogfQpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvZm9w
cy5jIGIvbGliL3Zmc2NvcmUvZm9wcy5jCmluZGV4IDNhOGY5OGI0Li5hYjFmOGNiYiAxMDA2NDQK
LS0tIGEvbGliL3Zmc2NvcmUvZm9wcy5jCisrKyBiL2xpYi92ZnNjb3JlL2ZvcHMuYwpAQCAtMTQw
LDE3ICsxNDAsMTcgQEAgaW50IHZmc19maWxlOjpjaG1vZChtb2RlX3QgbW9kZSkKIAogYm9vbCB2
ZnNfZmlsZTo6bWFwX3BhZ2UodWludHB0cl90IG9mZiwgbW11Ojpod19wdGVwPDA+IHB0ZXAsIG1t
dTo6cHRfZWxlbWVudDwwPiBwdGUsIGJvb2wgd3JpdGUsIGJvb2wgc2hhcmVkKQogewotICAgIHJl
dHVybiBwYWdlY2FjaGU6OmdldCh0aGlzLCBvZmYsIHB0ZXAsIHB0ZSwgd3JpdGUsIHNoYXJlZCk7
CisJcmV0dXJuIHBhZ2VjYWNoZTo6Z2V0KHRoaXMsIG9mZiwgcHRlcCwgcHRlLCB3cml0ZSwgc2hh
cmVkKTsKIH0KIAogYm9vbCB2ZnNfZmlsZTo6cHV0X3BhZ2Uodm9pZCAqYWRkciwgdWludHB0cl90
IG9mZiwgbW11Ojpod19wdGVwPDA+IHB0ZXApCiB7Ci0gICAgcmV0dXJuIHBhZ2VjYWNoZTo6cmVs
ZWFzZSh0aGlzLCBhZGRyLCBvZmYsIHB0ZXApOworCXJldHVybiBwYWdlY2FjaGU6OnJlbGVhc2Uo
dGhpcywgYWRkciwgb2ZmLCBwdGVwKTsKIH0KIAogdm9pZCB2ZnNfZmlsZTo6c3luYyhvZmZfdCBz
dGFydCwgb2ZmX3QgZW5kKQogewotICAgIHBhZ2VjYWNoZTo6c3luYyh0aGlzLCBzdGFydCwgZW5k
KTsKKwlwYWdlY2FjaGU6OnN5bmModGhpcywgc3RhcnQsIGVuZCk7CiB9CiAKIC8vIExvY2tpbmc6
IFZPUF9DQUNIRSB3aWxsIGNhbGwgaW50byB0aGUgZmlsZXN5c3RlbSwgYW5kIHRoYXQgY2FuIHRy
aWdnZXIgYW4KQEAgLTE1OSwyMyArMTU5LDIzIEBAIHZvaWQgdmZzX2ZpbGU6OnN5bmMob2ZmX3Qg
c3RhcnQsIG9mZl90IGVuZCkKIC8vIGJlY2F1c2Ugbm90IGFsbCBpbnZhbGlkYXRpb25zIHdpbGwg
YmUgc3luY2hyb25vdXMuCiBpbnQgdmZzX2ZpbGU6OmdldF9hcmNidWYodm9pZCoga2V5LCBvZmZf
dCBvZmZzZXQpCiB7Ci0gICAgc3RydWN0IHZub2RlICp2cCA9IGZfZGVudHJ5LT5kX3Zub2RlOwor
CXN0cnVjdCB2bm9kZSAqdnAgPSBmX2RlbnRyeS0+ZF92bm9kZTsKIAotICAgIGlvdmVjIGlvWzFd
OworCWlvdmVjIGlvWzFdOwogCi0gICAgaW9bMF0uaW92X2Jhc2UgPSBrZXk7Ci0gICAgdWlvIGRh
dGE7Ci0gICAgZGF0YS51aW9faW92ID0gaW87Ci0gICAgZGF0YS51aW9faW92Y250ID0gMTsKLSAg
ICBkYXRhLnVpb19vZmZzZXQgPSBvZmZzZXQ7Ci0gICAgZGF0YS51aW9fcmVzaWQgPSBtbXU6OnBh
Z2Vfc2l6ZTsKLSAgICBkYXRhLnVpb19ydyA9IFVJT19SRUFEOworCWlvWzBdLmlvdl9iYXNlID0g
a2V5OworCXVpbyBkYXRhOworCWRhdGEudWlvX2lvdiA9IGlvOworCWRhdGEudWlvX2lvdmNudCA9
IDE7CisJZGF0YS51aW9fb2Zmc2V0ID0gb2Zmc2V0OworCWRhdGEudWlvX3Jlc2lkID0gbW11Ojpw
YWdlX3NpemU7CisJZGF0YS51aW9fcncgPSBVSU9fUkVBRDsKIAotICAgIHZuX2xvY2sodnApOwot
ICAgIGFzc2VydChWT1BfQ0FDSEUodnAsIHRoaXMsICZkYXRhKSA9PSAwKTsKLSAgICB2bl91bmxv
Y2sodnApOworCXZuX2xvY2sodnApOworCWFzc2VydChWT1BfQ0FDSEUodnAsIHRoaXMsICZkYXRh
KSA9PSAwKTsKKwl2bl91bmxvY2sodnApOwogCi0gICAgcmV0dXJuIChkYXRhLnVpb19yZXNpZCAh
PSAwKSA/IC0xIDogMDsKKwlyZXR1cm4gKGRhdGEudWlvX3Jlc2lkICE9IDApID8gLTEgOiAwOwog
fQogCiBzdGQ6OnVuaXF1ZV9wdHI8bW11OjpmaWxlX3ZtYT4gdmZzX2ZpbGU6Om1tYXAoYWRkcl9y
YW5nZSByYW5nZSwgdW5zaWduZWQgZmxhZ3MsIHVuc2lnbmVkIHBlcm0sIG9mZl90IG9mZnNldCkK
ZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9kZW50cnkuaCBiL2xpYi92
ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9kZW50cnkuaAppbmRleCBhMjU0NWFmOC4uZjU4NTA3ODYg
MTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9kZW50cnkuaAorKysgYi9s
aWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZGVudHJ5LmgKQEAgLTMzLDggKzMzLDggQEAgc3Ry
dWN0IGRlbnRyeSB7CiB1c2luZyBkZW50cnlfcmVmID0gYm9vc3Q6OmludHJ1c2l2ZV9wdHI8ZGVu
dHJ5PjsKIAogZXh0ZXJuICJDIiB7Ci0gICAgdm9pZCBkcmVmKHN0cnVjdCBkZW50cnkqIGRwKTsK
LSAgICB2b2lkIGRyZWxlKHN0cnVjdCBkZW50cnkqIGRwKTsKKwl2b2lkIGRyZWYoc3RydWN0IGRl
bnRyeSogZHApOworCXZvaWQgZHJlbGUoc3RydWN0IGRlbnRyeSogZHApOwogfTsKIAogaW5saW5l
IHZvaWQgaW50cnVzaXZlX3B0cl9hZGRfcmVmKGRlbnRyeSogZHApIHsgZHJlZihkcCk7IH0KZGlm
ZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9tb3VudC5oIGIvbGliL3Zmc2Nv
cmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmgKaW5kZXggNzI2OGQ4Y2UuLjBlNzg5MjlmIDEwMDY0
NAotLS0gYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvbW91bnQuaAorKysgYi9saWIvdmZz
Y29yZS9pbmNsdWRlL3Zmc2NvcmUvbW91bnQuaApAQCAtMTU2LDEwICsxNTYsMTAgQEAgX19FTkRf
REVDTFMKIG5hbWVzcGFjZSBvc3YgewogCiBzdHJ1Y3QgbW91bnRfZGVzYyB7Ci0gICAgc3RkOjpz
dHJpbmcgc3BlY2lhbDsKLSAgICBzdGQ6OnN0cmluZyBwYXRoOwotICAgIHN0ZDo6c3RyaW5nIHR5
cGU7Ci0gICAgc3RkOjpzdHJpbmcgb3B0aW9uczsKKwlzdGQ6OnN0cmluZyBzcGVjaWFsOworCXN0
ZDo6c3RyaW5nIHBhdGg7CisJc3RkOjpzdHJpbmcgdHlwZTsKKwlzdGQ6OnN0cmluZyBvcHRpb25z
OwogfTsKIAogc3RkOjp2ZWN0b3I8bW91bnRfZGVzYz4gY3VycmVudF9tb3VudHMoKTsKZGlmZiAt
LWdpdCBhL2xpYi92ZnNjb3JlL2xvb2t1cC5jIGIvbGliL3Zmc2NvcmUvbG9va3VwLmMKaW5kZXgg
YWQwM2ZlMjUuLjMwMTM5YTg3IDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9sb29rdXAuYworKysg
Yi9saWIvdmZzY29yZS9sb29rdXAuYwpAQCAtNDAsNTcgKzQwLDU3IEBACiBzdGF0aWMgc3NpemVf
dAogcmVhZF9saW5rKHN0cnVjdCB2bm9kZSAqdnAsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6LCBz
c2l6ZV90ICpzeikKIHsKLSAgICBzdHJ1Y3QgaW92ZWMgaW92ID0ge2J1ZiwgYnVmc3p9OwotICAg
IHN0cnVjdCB1aW8gICB1aW8gPSB7JmlvdiwgMSwgMCwgKHNzaXplX3QpIGJ1ZnN6LCBVSU9fUkVB
RH07Ci0gICAgaW50IHJjOworCXN0cnVjdCBpb3ZlYyBpb3YgPSB7YnVmLCBidWZzen07CisJc3Ry
dWN0IHVpbyAgIHVpbyA9IHsmaW92LCAxLCAwLCAoc3NpemVfdCkgYnVmc3osIFVJT19SRUFEfTsK
KwlpbnQgcmM7CiAKLSAgICAqc3ogPSAwOwotICAgIHZuX2xvY2sodnApOwotICAgIHJjICA9IFZP
UF9SRUFETElOSyh2cCwgJnVpbyk7Ci0gICAgdm5fdW5sb2NrKHZwKTsKKwkqc3ogPSAwOworCXZu
X2xvY2sodnApOworCXJjICA9IFZPUF9SRUFETElOSyh2cCwgJnVpbyk7CisJdm5fdW5sb2NrKHZw
KTsKIAotICAgIGlmIChyYyAhPSAwKSB7Ci0gICAgICAgIHJldHVybiAocmMpOwotICAgIH0KKwlp
ZiAocmMgIT0gMCkgeworCQlyZXR1cm4gKHJjKTsKKwl9CiAKLSAgICAqc3ogPSBidWZzeiAtIHVp
by51aW9fcmVzaWQ7Ci0gICAgcmV0dXJuICgwKTsKKwkqc3ogPSBidWZzeiAtIHVpby51aW9fcmVz
aWQ7CisJcmV0dXJuICgwKTsKIH0KIAogaW50CiBuYW1laV9mb2xsb3dfbGluayhzdHJ1Y3QgZGVu
dHJ5ICpkcCwgY2hhciAqbm9kZSwgY2hhciAqbmFtZSwgY2hhciAqZnAsIHNpemVfdCBtb3VudHBv
aW50X2xlbikKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Y2hhciBbXT4gbGluayAobmV3IGNoYXJb
UEFUSF9NQVhdKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Y2hhciBbXT4gdCAobmV3IGNoYXJbUEFU
SF9NQVhdKTsKLSAgICBjaGFyICAgICpscDsKLSAgICBpbnQgICAgIGVycm9yOwotICAgIHNzaXpl
X3Qgc3o7Ci0gICAgY2hhciAgICAqcDsKLSAgICBpbnQgICAgIGM7Ci0KLSAgICBscCAgICA9IGxp
bmsuZ2V0KCk7Ci0gICAgZXJyb3IgPSByZWFkX2xpbmsoZHAtPmRfdm5vZGUsIGxwLCBQQVRIX01B
WCwgJnN6KTsKLSAgICBpZiAoZXJyb3IgIT0gMCkgewotICAgICAgICByZXR1cm4gKGVycm9yKTsK
LSAgICB9Ci0gICAgbHBbc3pdID0gMDsKLQotICAgIHAgPSBmcCArIG1vdW50cG9pbnRfbGVuICsg
c3RybGVuKG5vZGUpOwotICAgIGMgPSBzdHJsZW4obm9kZSkgLSBzdHJsZW4obmFtZSkgLSAxOwot
ICAgIG5vZGVbY10gPSAwOwotCi0gICAgaWYgKGxwWzBdID09ICcvJykgewotICAgICAgICBzdHJs
Y2F0KGxwLCBwLCBQQVRIX01BWCk7Ci0gICAgICAgIHN0cmxjcHkoZnAsIGxwLCBQQVRIX01BWCk7
Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgc3RybGNweSh0LmdldCgpLCBwLCBQQVRIX01BWCk7Ci0g
ICAgICAgIHN0cmxjcHkobm9kZSwgZnAsIG1vdW50cG9pbnRfbGVuICsgYyArIDEpOwotICAgICAg
ICBwYXRoX2NvbnYobm9kZSwgbHAsIGZwKTsKLSAgICAgICAgc3RybGNhdChmcCwgdC5nZXQoKSwg
UEFUSF9NQVgpOwotICAgIH0KLSAgICBub2RlWzBdID0gMDsKLSAgICBuYW1lWzBdID0gMDsKLSAg
ICByZXR1cm4gKDApOworCXN0ZDo6dW5pcXVlX3B0cjxjaGFyIFtdPiBsaW5rIChuZXcgY2hhcltQ
QVRIX01BWF0pOworCXN0ZDo6dW5pcXVlX3B0cjxjaGFyIFtdPiB0IChuZXcgY2hhcltQQVRIX01B
WF0pOworCWNoYXIgICAgKmxwOworCWludCAgICAgZXJyb3I7CisJc3NpemVfdCBzejsKKwljaGFy
ICAgICpwOworCWludCAgICAgYzsKKworCWxwICAgID0gbGluay5nZXQoKTsKKwllcnJvciA9IHJl
YWRfbGluayhkcC0+ZF92bm9kZSwgbHAsIFBBVEhfTUFYLCAmc3opOworCWlmIChlcnJvciAhPSAw
KSB7CisJCXJldHVybiAoZXJyb3IpOworCX0KKwlscFtzel0gPSAwOworCisJcCA9IGZwICsgbW91
bnRwb2ludF9sZW4gKyBzdHJsZW4obm9kZSk7CisJYyA9IHN0cmxlbihub2RlKSAtIHN0cmxlbihu
YW1lKSAtIDE7CisJbm9kZVtjXSA9IDA7CisKKwlpZiAobHBbMF0gPT0gJy8nKSB7CisJCXN0cmxj
YXQobHAsIHAsIFBBVEhfTUFYKTsKKwkJc3RybGNweShmcCwgbHAsIFBBVEhfTUFYKTsKKwl9IGVs
c2UgeworCQlzdHJsY3B5KHQuZ2V0KCksIHAsIFBBVEhfTUFYKTsKKwkJc3RybGNweShub2RlLCBm
cCwgbW91bnRwb2ludF9sZW4gKyBjICsgMSk7CisJCXBhdGhfY29udihub2RlLCBscCwgZnApOwor
CQlzdHJsY2F0KGZwLCB0LmdldCgpLCBQQVRIX01BWCk7CisJfQorCW5vZGVbMF0gPSAwOworCW5h
bWVbMF0gPSAwOworCXJldHVybiAoMCk7CiB9CiAvKgogICogQ29udmVydCBhIHBhdGhuYW1lIGlu
dG8gYSBwb2ludGVyIHRvIGEgZGVudHJ5CkBAIC0xMDEsMTM3ICsxMDEsMTM3IEBAIG5hbWVpX2Zv
bGxvd19saW5rKHN0cnVjdCBkZW50cnkgKmRwLCBjaGFyICpub2RlLCBjaGFyICpuYW1lLCBjaGFy
ICpmcCwgc2l6ZV90IG1vCiBpbnQKIG5hbWVpKGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBkZW50
cnkgKipkcHApCiB7Ci0gICAgY2hhciAqcDsKLSAgICBjaGFyIG5vZGVbUEFUSF9NQVhdOwotICAg
IGNoYXIgbmFtZVtQQVRIX01BWF07Ci0gICAgc3RkOjp1bmlxdWVfcHRyPGNoYXIgW10+IGZwIChu
ZXcgY2hhciBbUEFUSF9NQVhdKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Y2hhciBbXT4gdCAobmV3
IGNoYXIgW1BBVEhfTUFYXSk7Ci0gICAgc3RydWN0IG1vdW50ICptcDsKLSAgICBzdHJ1Y3QgZGVu
dHJ5ICpkcCwgKmRkcDsKLSAgICBzdHJ1Y3Qgdm5vZGUgKmR2cCwgKnZwOwotICAgIGludCBlcnJv
ciwgaTsKLSAgICBpbnQgbGlua3NfZm9sbG93ZWQ7Ci0gICAgYm9vbCBuZWVkX2NvbnRpbnVlOwot
Ci0gICAgRFBSSU5URihWRlNEQl9WTk9ERSwgKCJuYW1laTogcGF0aD0lc1xuIiwgcGF0aCkpOwot
Ci0gICAgbGlua3NfZm9sbG93ZWQgPSAwOwotICAgIHN0cmxjcHkoZnAuZ2V0KCksIHBhdGgsIFBB
VEhfTUFYKTsKLQotICAgIGRvIHsKLSAgICAgICAgbmVlZF9jb250aW51ZSA9IGZhbHNlOwotICAg
ICAgICAvKgotICAgICAgICAgKiBDb252ZXJ0IGEgZnVsbCBwYXRoIG5hbWUgdG8gaXRzIG1vdW50
IHBvaW50IGFuZAotICAgICAgICAgKiB0aGUgbG9jYWwgbm9kZSBpbiB0aGUgZmlsZSBzeXN0ZW0u
Ci0gICAgICAgICAqLwotICAgICAgICBpZiAodmZzX2ZpbmRyb290KGZwLmdldCgpLCAmbXAsICZw
KSkgewotICAgICAgICAgICAgcmV0dXJuIEVOT1RESVI7Ci0gICAgICAgIH0KLSAgICAgICAgaW50
IG1vdW50cG9pbnRfbGVuID0gcCAtIGZwLmdldCgpIC0gMTsKLSAgICAgICAgc3RybGNweShub2Rl
LCAiLyIsIHNpemVvZihub2RlKSk7Ci0gICAgICAgIHN0cmxjYXQobm9kZSwgcCwgc2l6ZW9mKG5v
ZGUpKTsKLSAgICAgICAgZHAgPSBkZW50cnlfbG9va3VwKG1wLCBub2RlKTsKLSAgICAgICAgaWYg
KGRwKSB7Ci0gICAgICAgICAgICAvKiB2bm9kZSBpcyBhbHJlYWR5IGFjdGl2ZS4gKi8KLSAgICAg
ICAgICAgICpkcHAgPSBkcDsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAg
ICAgIC8qCi0gICAgICAgICAqIEZpbmQgdGFyZ2V0IHZub2RlLCBzdGFydGVkIGZyb20gcm9vdCBk
aXJlY3RvcnkuCi0gICAgICAgICAqIFRoaXMgaXMgZG9uZSB0byBhdHRhY2ggdGhlIGZzIHNwZWNp
ZmljIGRhdGEgdG8KLSAgICAgICAgICogdGhlIHRhcmdldCB2bm9kZS4KLSAgICAgICAgICovCi0g
ICAgICAgIGRkcCA9IG1wLT5tX3Jvb3Q7Ci0gICAgICAgIGlmICghZGRwKSB7Ci0gICAgICAgICAg
ICBzeXNfcGFuaWMoIlZGUzogbm8gcm9vdCIpOwotICAgICAgICB9Ci0gICAgICAgIGRyZWYoZGRw
KTsKLQotICAgICAgICBub2RlWzBdID0gJ1wwJzsKLQotICAgICAgICB3aGlsZSAoKnAgIT0gJ1ww
JykgewotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqIEdldCBsb3dlciBkaXJlY3Rvcnkv
ZmlsZSBuYW1lLgotICAgICAgICAgICAgICovCi0gICAgICAgICAgICB3aGlsZSAoKnAgPT0gJy8n
KSB7Ci0gICAgICAgICAgICAgICAgcCsrOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBp
ZiAoKnAgPT0gJ1wwJykgewotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUEFUSF9NQVg7IGkrKykgewotICAgICAgICAg
ICAgICAgIGlmICgqcCA9PSAnXDAnIHx8ICpwID09ICcvJykgewotICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbmFtZVtpXSA9ICpw
Kys7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBuYW1lW2ldID0gJ1wwJzsKLQotICAgICAg
ICAgICAgLyoKLSAgICAgICAgICAgICAqIEdldCBhIHZub2RlIGZvciB0aGUgdGFyZ2V0LgotICAg
ICAgICAgICAgICovCi0gICAgICAgICAgICBzdHJsY2F0KG5vZGUsICIvIiwgc2l6ZW9mKG5vZGUp
KTsKLSAgICAgICAgICAgIHN0cmxjYXQobm9kZSwgbmFtZSwgc2l6ZW9mKG5vZGUpKTsKLSAgICAg
ICAgICAgIGR2cCA9IGRkcC0+ZF92bm9kZTsKLSAgICAgICAgICAgIHZuX2xvY2soZHZwKTsKLSAg
ICAgICAgICAgIGRwID0gZGVudHJ5X2xvb2t1cChtcCwgbm9kZSk7Ci0gICAgICAgICAgICBpZiAo
ZHAgPT0gbnVsbHB0cikgewotICAgICAgICAgICAgICAgIC8qIEZpbmQgYSB2bm9kZSBpbiB0aGlz
IGRpcmVjdG9yeS4gKi8KLSAgICAgICAgICAgICAgICBlcnJvciA9IFZPUF9MT09LVVAoZHZwLCBu
YW1lLCAmdnApOwotICAgICAgICAgICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgICAg
ICAgICB2bl91bmxvY2soZHZwKTsKLSAgICAgICAgICAgICAgICAgICAgZHJlbGUoZGRwKTsKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgICAgIGRwID0gZGVudHJ5X2FsbG9jKGRkcCwgdnAsIG5vZGUpOwotICAgICAgICAg
ICAgICAgIHZwdXQodnApOwotCi0gICAgICAgICAgICAgICAgaWYgKCFkcCkgewotICAgICAgICAg
ICAgICAgICAgICB2bl91bmxvY2soZHZwKTsKLSAgICAgICAgICAgICAgICAgICAgZHJlbGUoZGRw
KTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVOT01FTTsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2bl91bmxvY2soZHZwKTsKLSAgICAgICAgICAg
IGRyZWxlKGRkcCk7Ci0gICAgICAgICAgICBkZHAgPSBkcDsKLQotICAgICAgICAgICAgaWYgKGRw
LT5kX3Zub2RlLT52X3R5cGUgPT0gVkxOSykgewotICAgICAgICAgICAgICAgIGVycm9yID0gbmFt
ZWlfZm9sbG93X2xpbmsoZHAsIG5vZGUsIG5hbWUsIGZwLmdldCgpLCBtb3VudHBvaW50X2xlbik7
Ci0gICAgICAgICAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICAgICAgICAgIGRyZWxl
KGRwKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChlcnJvcik7Ci0gICAgICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICAgICAgZHJlbGUoZHApOwotCi0gICAgICAgICAgICAgICAgcCAg
ICAgICA9IGZwLmdldCgpOwotICAgICAgICAgICAgICAgIGRwICAgICAgPSBudWxscHRyOwotICAg
ICAgICAgICAgICAgIGRkcCAgICAgPSBudWxscHRyOwotICAgICAgICAgICAgICAgIHZwICAgICAg
PSBudWxscHRyOwotICAgICAgICAgICAgICAgIGR2cCAgICAgPSBudWxscHRyOwotICAgICAgICAg
ICAgICAgIG5hbWVbMF0gPSAwOwotICAgICAgICAgICAgICAgIG5vZGVbMF0gPSAwOwotCi0gICAg
ICAgICAgICAgICAgaWYgKCsrbGlua3NfZm9sbG93ZWQgPj0gTUFYU1lNTElOS1MpIHsKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIChFTE9PUCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIG5lZWRfY29udGludWUgPSB0cnVlOwotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoKnAgPT0gJy8nICYmIGRkcC0+ZF92bm9k
ZS0+dl90eXBlICE9IFZESVIpIHsKLSAgICAgICAgICAgICAgICBkcmVsZShkZHApOwotICAgICAg
ICAgICAgICAgIHJldHVybiBFTk9URElSOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAg
fSB3aGlsZSAobmVlZF9jb250aW51ZSA9PSB0cnVlKTsKLQotICAgICpkcHAgPSBkcDsKLSAgICBy
ZXR1cm4gMDsKKwljaGFyICpwOworCWNoYXIgbm9kZVtQQVRIX01BWF07CisJY2hhciBuYW1lW1BB
VEhfTUFYXTsKKwlzdGQ6OnVuaXF1ZV9wdHI8Y2hhciBbXT4gZnAgKG5ldyBjaGFyIFtQQVRIX01B
WF0pOworCXN0ZDo6dW5pcXVlX3B0cjxjaGFyIFtdPiB0IChuZXcgY2hhciBbUEFUSF9NQVhdKTsK
KwlzdHJ1Y3QgbW91bnQgKm1wOworCXN0cnVjdCBkZW50cnkgKmRwLCAqZGRwOworCXN0cnVjdCB2
bm9kZSAqZHZwLCAqdnA7CisJaW50IGVycm9yLCBpOworCWludCBsaW5rc19mb2xsb3dlZDsKKwli
b29sIG5lZWRfY29udGludWU7CisKKwlEUFJJTlRGKFZGU0RCX1ZOT0RFLCAoIm5hbWVpOiBwYXRo
PSVzXG4iLCBwYXRoKSk7CisKKwlsaW5rc19mb2xsb3dlZCA9IDA7CisJc3RybGNweShmcC5nZXQo
KSwgcGF0aCwgUEFUSF9NQVgpOworCisJZG8geworCQluZWVkX2NvbnRpbnVlID0gZmFsc2U7CisJ
CS8qCisJCSAqIENvbnZlcnQgYSBmdWxsIHBhdGggbmFtZSB0byBpdHMgbW91bnQgcG9pbnQgYW5k
CisJCSAqIHRoZSBsb2NhbCBub2RlIGluIHRoZSBmaWxlIHN5c3RlbS4KKwkJICovCisJCWlmICh2
ZnNfZmluZHJvb3QoZnAuZ2V0KCksICZtcCwgJnApKSB7CisJCQlyZXR1cm4gRU5PVERJUjsKKwkJ
fQorCQlpbnQgbW91bnRwb2ludF9sZW4gPSBwIC0gZnAuZ2V0KCkgLSAxOworCQlzdHJsY3B5KG5v
ZGUsICIvIiwgc2l6ZW9mKG5vZGUpKTsKKwkJc3RybGNhdChub2RlLCBwLCBzaXplb2Yobm9kZSkp
OworCQlkcCA9IGRlbnRyeV9sb29rdXAobXAsIG5vZGUpOworCQlpZiAoZHApIHsKKwkJCS8qIHZu
b2RlIGlzIGFscmVhZHkgYWN0aXZlLiAqLworCQkJKmRwcCA9IGRwOworCQkJcmV0dXJuIDA7CisJ
CX0KKwkJLyoKKwkJICogRmluZCB0YXJnZXQgdm5vZGUsIHN0YXJ0ZWQgZnJvbSByb290IGRpcmVj
dG9yeS4KKwkJICogVGhpcyBpcyBkb25lIHRvIGF0dGFjaCB0aGUgZnMgc3BlY2lmaWMgZGF0YSB0
bworCQkgKiB0aGUgdGFyZ2V0IHZub2RlLgorCQkgKi8KKwkJZGRwID0gbXAtPm1fcm9vdDsKKwkJ
aWYgKCFkZHApIHsKKwkJCXN5c19wYW5pYygiVkZTOiBubyByb290Iik7CisJCX0KKwkJZHJlZihk
ZHApOworCisJCW5vZGVbMF0gPSAnXDAnOworCisJCXdoaWxlICgqcCAhPSAnXDAnKSB7CisJCQkv
KgorCQkJICogR2V0IGxvd2VyIGRpcmVjdG9yeS9maWxlIG5hbWUuCisJCQkgKi8KKwkJCXdoaWxl
ICgqcCA9PSAnLycpIHsKKwkJCQlwKys7CisJCQl9CisKKwkJCWlmICgqcCA9PSAnXDAnKSB7CisJ
CQkJYnJlYWs7CisJCQl9CisKKwkJCWZvciAoaSA9IDA7IGkgPCBQQVRIX01BWDsgaSsrKSB7CisJ
CQkJaWYgKCpwID09ICdcMCcgfHwgKnAgPT0gJy8nKSB7CisJCQkJCWJyZWFrOworCQkJCX0KKwkJ
CQluYW1lW2ldID0gKnArKzsKKwkJCX0KKwkJCW5hbWVbaV0gPSAnXDAnOworCisJCQkvKgorCQkJ
ICogR2V0IGEgdm5vZGUgZm9yIHRoZSB0YXJnZXQuCisJCQkgKi8KKwkJCXN0cmxjYXQobm9kZSwg
Ii8iLCBzaXplb2Yobm9kZSkpOworCQkJc3RybGNhdChub2RlLCBuYW1lLCBzaXplb2Yobm9kZSkp
OworCQkJZHZwID0gZGRwLT5kX3Zub2RlOworCQkJdm5fbG9jayhkdnApOworCQkJZHAgPSBkZW50
cnlfbG9va3VwKG1wLCBub2RlKTsKKwkJCWlmIChkcCA9PSBudWxscHRyKSB7CisJCQkJLyogRmlu
ZCBhIHZub2RlIGluIHRoaXMgZGlyZWN0b3J5LiAqLworCQkJCWVycm9yID0gVk9QX0xPT0tVUChk
dnAsIG5hbWUsICZ2cCk7CisJCQkJaWYgKGVycm9yKSB7CisJCQkJCXZuX3VubG9jayhkdnApOwor
CQkJCQlkcmVsZShkZHApOworCQkJCQlyZXR1cm4gZXJyb3I7CisJCQkJfQorCisJCQkJZHAgPSBk
ZW50cnlfYWxsb2MoZGRwLCB2cCwgbm9kZSk7CisJCQkJdnB1dCh2cCk7CisKKwkJCQlpZiAoIWRw
KSB7CisJCQkJCXZuX3VubG9jayhkdnApOworCQkJCQlkcmVsZShkZHApOworCQkJCQlyZXR1cm4g
RU5PTUVNOworCQkJCX0KKwkJCX0KKwkJCXZuX3VubG9jayhkdnApOworCQkJZHJlbGUoZGRwKTsK
KwkJCWRkcCA9IGRwOworCisJCQlpZiAoZHAtPmRfdm5vZGUtPnZfdHlwZSA9PSBWTE5LKSB7CisJ
CQkJZXJyb3IgPSBuYW1laV9mb2xsb3dfbGluayhkcCwgbm9kZSwgbmFtZSwgZnAuZ2V0KCksIG1v
dW50cG9pbnRfbGVuKTsKKwkJCQlpZiAoZXJyb3IpIHsKKwkJCQkJZHJlbGUoZHApOworCQkJCQly
ZXR1cm4gKGVycm9yKTsKKwkJCQl9CisKKwkJCQlkcmVsZShkcCk7CisKKwkJCQlwICAgICAgID0g
ZnAuZ2V0KCk7CisJCQkJZHAgICAgICA9IG51bGxwdHI7CisJCQkJZGRwICAgICA9IG51bGxwdHI7
CisJCQkJdnAgICAgICA9IG51bGxwdHI7CisJCQkJZHZwICAgICA9IG51bGxwdHI7CisJCQkJbmFt
ZVswXSA9IDA7CisJCQkJbm9kZVswXSA9IDA7CisKKwkJCQlpZiAoKytsaW5rc19mb2xsb3dlZCA+
PSBNQVhTWU1MSU5LUykgeworCQkJCQlyZXR1cm4gKEVMT09QKTsKKwkJCQl9CisJCQkJbmVlZF9j
b250aW51ZSA9IHRydWU7CisJCQkJYnJlYWs7CisJCQl9CisKKwkJCWlmICgqcCA9PSAnLycgJiYg
ZGRwLT5kX3Zub2RlLT52X3R5cGUgIT0gVkRJUikgeworCQkJCWRyZWxlKGRkcCk7CisJCQkJcmV0
dXJuIEVOT1RESVI7CisJCQl9CisJCX0KKwl9IHdoaWxlIChuZWVkX2NvbnRpbnVlID09IHRydWUp
OworCisJKmRwcCA9IGRwOworCXJldHVybiAwOwogfQogCiAvKgpAQCAtMjQ0LDY3ICsyNDQsNjcg
QEAgbmFtZWkoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IGRlbnRyeSAqKmRwcCkKIGludAogbmFt
ZWlfbGFzdF9ub2ZvbGxvdyhjaGFyICpwYXRoLCBzdHJ1Y3QgZGVudHJ5ICpkZHAsIHN0cnVjdCBk
ZW50cnkgKipkcHApCiB7Ci0gICAgY2hhciAgICAgICAgICAqbmFtZTsKLSAgICBpbnQgICAgICAg
ICAgIGVycm9yOwotICAgIHN0cnVjdCBtb3VudCAgKm1wOwotICAgIGNoYXIgICAgICAgICAgKnA7
Ci0gICAgc3RydWN0IGRlbnRyeSAqZHA7Ci0gICAgc3RydWN0IHZub2RlICAqZHZwOwotICAgIHN0
cnVjdCB2bm9kZSAgKnZwOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxjaGFyIFtdPiBub2RlIChuZXcg
Y2hhcltQQVRIX01BWF0pOwotCi0gICAgZHZwICA9IG51bGxwdHI7Ci0KLSAgICBpZiAocGF0aFsw
XSAhPSAnLycpIHsKLSAgICAgICAgcmV0dXJuIChFTk9URElSKTsKLSAgICB9Ci0KLSAgICBuYW1l
ID0gc3RycmNocihwYXRoLCAnLycpOwotICAgIGlmIChuYW1lID09IG51bGxwdHIpIHsKLSAgICAg
ICAgcmV0dXJuIChFTk9FTlQpOwotICAgIH0KLSAgICBuYW1lKys7Ci0KLSAgICBlcnJvciA9IHZm
c19maW5kcm9vdChwYXRoLCAmbXAsICZwKTsKLSAgICBpZiAoZXJyb3IgIT0gMCkgewotICAgICAg
ICByZXR1cm4gKEVOT1RESVIpOwotICAgIH0KLQotICAgIHN0cmxjcHkobm9kZS5nZXQoKSwgIi8i
LCBQQVRIX01BWCk7Ci0gICAgc3RybGNhdChub2RlLmdldCgpLCBwLCBQQVRIX01BWCk7Ci0KLSAg
ICAvLyBXZSB3YW50IHRvIHRyZWF0IHRoaW5ncyBsaWtlIC90bXAvIHRoZSBzYW1lIGFzIC90bXAu
IEJlc3Qgd2F5IHRvIGRvIHRoYXQKLSAgICAvLyBpcyB0byBpZ25vcmUgdGhlIGxhc3QgY2hhcmFj
dGVyLCBleGNlcHQgd2hlbiB3ZSdyZSBzdGF0aW5nIHRoZSByb290LgotICAgIGF1dG8gbCA9IHN0
cmxlbihub2RlLmdldCgpKSAtIDE7Ci0gICAgaWYgKGwgJiYgbm9kZS5nZXQoKVtsXSA9PSAnLycp
IHsKLSAgICAgICAgbm9kZS5nZXQoKVtsXSA9ICdcMCc7Ci0gICAgfQotCi0gICAgZHZwID0gZGRw
LT5kX3Zub2RlOwotICAgIHZuX2xvY2soZHZwKTsKLSAgICBkcCA9IGRlbnRyeV9sb29rdXAobXAs
IG5vZGUuZ2V0KCkpOwotICAgIGlmIChkcCA9PSBudWxscHRyKSB7Ci0gICAgICAgIGVycm9yID0g
Vk9QX0xPT0tVUChkdnAsIG5hbWUsICZ2cCk7Ci0gICAgICAgIGlmIChlcnJvciAhPSAwKSB7Ci0g
ICAgICAgICAgICBnb3RvIG91dDsKLSAgICAgICAgfQotCi0gICAgICAgIGRwID0gZGVudHJ5X2Fs
bG9jKGRkcCwgdnAsIG5vZGUuZ2V0KCkpOwotICAgICAgICB2cHV0KHZwKTsKLQotICAgICAgICBp
ZiAoZHAgPT0gbnVsbHB0cikgewotICAgICAgICAgICAgZXJyb3IgPSBFTk9NRU07Ci0gICAgICAg
ICAgICBnb3RvIG91dDsKLSAgICAgICAgfQotICAgIH0KLQotICAgICpkcHAgID0gZHA7Ci0gICAg
ZXJyb3IgPSAwOworCWNoYXIgICAgICAgICAgKm5hbWU7CisJaW50ICAgICAgICAgICBlcnJvcjsK
KwlzdHJ1Y3QgbW91bnQgICptcDsKKwljaGFyICAgICAgICAgICpwOworCXN0cnVjdCBkZW50cnkg
KmRwOworCXN0cnVjdCB2bm9kZSAgKmR2cDsKKwlzdHJ1Y3Qgdm5vZGUgICp2cDsKKwlzdGQ6OnVu
aXF1ZV9wdHI8Y2hhciBbXT4gbm9kZSAobmV3IGNoYXJbUEFUSF9NQVhdKTsKKworCWR2cCAgPSBu
dWxscHRyOworCisJaWYgKHBhdGhbMF0gIT0gJy8nKSB7CisJCXJldHVybiAoRU5PVERJUik7CisJ
fQorCisJbmFtZSA9IHN0cnJjaHIocGF0aCwgJy8nKTsKKwlpZiAobmFtZSA9PSBudWxscHRyKSB7
CisJCXJldHVybiAoRU5PRU5UKTsKKwl9CisJbmFtZSsrOworCisJZXJyb3IgPSB2ZnNfZmluZHJv
b3QocGF0aCwgJm1wLCAmcCk7CisJaWYgKGVycm9yICE9IDApIHsKKwkJcmV0dXJuIChFTk9URElS
KTsKKwl9CisKKwlzdHJsY3B5KG5vZGUuZ2V0KCksICIvIiwgUEFUSF9NQVgpOworCXN0cmxjYXQo
bm9kZS5nZXQoKSwgcCwgUEFUSF9NQVgpOworCisJLy8gV2Ugd2FudCB0byB0cmVhdCB0aGluZ3Mg
bGlrZSAvdG1wLyB0aGUgc2FtZSBhcyAvdG1wLiBCZXN0IHdheSB0byBkbyB0aGF0CisJLy8gaXMg
dG8gaWdub3JlIHRoZSBsYXN0IGNoYXJhY3RlciwgZXhjZXB0IHdoZW4gd2UncmUgc3RhdGluZyB0
aGUgcm9vdC4KKwlhdXRvIGwgPSBzdHJsZW4obm9kZS5nZXQoKSkgLSAxOworCWlmIChsICYmIG5v
ZGUuZ2V0KClbbF0gPT0gJy8nKSB7CisJCW5vZGUuZ2V0KClbbF0gPSAnXDAnOworCX0KKworCWR2
cCA9IGRkcC0+ZF92bm9kZTsKKwl2bl9sb2NrKGR2cCk7CisJZHAgPSBkZW50cnlfbG9va3VwKG1w
LCBub2RlLmdldCgpKTsKKwlpZiAoZHAgPT0gbnVsbHB0cikgeworCQllcnJvciA9IFZPUF9MT09L
VVAoZHZwLCBuYW1lLCAmdnApOworCQlpZiAoZXJyb3IgIT0gMCkgeworCQkJZ290byBvdXQ7CisJ
CX0KKworCQlkcCA9IGRlbnRyeV9hbGxvYyhkZHAsIHZwLCBub2RlLmdldCgpKTsKKwkJdnB1dCh2
cCk7CisKKwkJaWYgKGRwID09IG51bGxwdHIpIHsKKwkJCWVycm9yID0gRU5PTUVNOworCQkJZ290
byBvdXQ7CisJCX0KKwl9CisKKwkqZHBwICA9IGRwOworCWVycm9yID0gMDsKIG91dDoKLSAgICBp
ZiAoZHZwICE9IG51bGxwdHIpIHsKLSAgICAgICAgdm5fdW5sb2NrKGR2cCk7Ci0gICAgfQotICAg
IHJldHVybiAoZXJyb3IpOworCWlmIChkdnAgIT0gbnVsbHB0cikgeworCQl2bl91bmxvY2soZHZw
KTsKKwl9CisJcmV0dXJuIChlcnJvcik7CiB9CiAKIC8qCkBAIC0zMjAsNDggKzMyMCw0OCBAQCBv
dXQ6CiBpbnQKIGxvb2t1cChjaGFyICpwYXRoLCBzdHJ1Y3QgZGVudHJ5ICoqZHBwLCBjaGFyICoq
bmFtZSkKIHsKLSAgICBjaGFyIGJ1ZltQQVRIX01BWF07Ci0gICAgY2hhciByb290W10gPSAiLyI7
Ci0gICAgY2hhciAqZmlsZSwgKmRpcjsKLSAgICBzdHJ1Y3QgZGVudHJ5ICpkcDsKLSAgICBpbnQg
ZXJyb3I7Ci0KLSAgICBEUFJJTlRGKFZGU0RCX1ZOT0RFLCAoImxvb2t1cDogcGF0aD0lc1xuIiwg
cGF0aCkpOwotCi0gICAgLyoKLSAgICAgKiBHZXQgdGhlIHBhdGggZm9yIGRpcmVjdG9yeS4KLSAg
ICAgKi8KLSAgICBzdHJsY3B5KGJ1ZiwgcGF0aCwgc2l6ZW9mKGJ1ZikpOwotICAgIGZpbGUgPSBz
dHJyY2hyKGJ1ZiwgJy8nKTsKLSAgICBpZiAoIWJ1ZlswXSkgewotICAgICAgICByZXR1cm4gRU5P
VERJUjsKLSAgICB9Ci0gICAgaWYgKGZpbGUgPT0gYnVmKSB7Ci0gICAgICAgIGRpciA9IHJvb3Q7
Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgKmZpbGUgPSAnXDAnOwotICAgICAgICBkaXIgPSBidWY7
Ci0gICAgfQotICAgIC8qCi0gICAgICogR2V0IHRoZSB2bm9kZSBmb3IgZGlyZWN0b3J5Ci0gICAg
ICovCi0gICAgaWYgKChlcnJvciA9IG5hbWVpKGRpciwgJmRwKSkgIT0gMCkgewotICAgICAgICBy
ZXR1cm4gZXJyb3I7Ci0gICAgfQotICAgIGlmIChkcC0+ZF92bm9kZS0+dl90eXBlICE9IFZESVIp
IHsKLSAgICAgICAgZHJlbGUoZHApOwotICAgICAgICByZXR1cm4gRU5PVERJUjsKLSAgICB9Ci0K
LSAgICAqZHBwID0gZHA7Ci0KLSAgICBpZiAobmFtZSkgewotICAgICAgICAvKgotICAgICAgICAg
KiBHZXQgdGhlIGZpbGUgbmFtZQotICAgICAgICAgKi8KLSAgICAgICAgKm5hbWUgPSBzdHJyY2hy
KHBhdGgsICcvJykgKyAxOwotICAgIH0KLSAgICByZXR1cm4gMDsKKwljaGFyIGJ1ZltQQVRIX01B
WF07CisJY2hhciByb290W10gPSAiLyI7CisJY2hhciAqZmlsZSwgKmRpcjsKKwlzdHJ1Y3QgZGVu
dHJ5ICpkcDsKKwlpbnQgZXJyb3I7CisKKwlEUFJJTlRGKFZGU0RCX1ZOT0RFLCAoImxvb2t1cDog
cGF0aD0lc1xuIiwgcGF0aCkpOworCisJLyoKKwkgKiBHZXQgdGhlIHBhdGggZm9yIGRpcmVjdG9y
eS4KKwkgKi8KKwlzdHJsY3B5KGJ1ZiwgcGF0aCwgc2l6ZW9mKGJ1ZikpOworCWZpbGUgPSBzdHJy
Y2hyKGJ1ZiwgJy8nKTsKKwlpZiAoIWJ1ZlswXSkgeworCQlyZXR1cm4gRU5PVERJUjsKKwl9CisJ
aWYgKGZpbGUgPT0gYnVmKSB7CisJCWRpciA9IHJvb3Q7CisJfSBlbHNlIHsKKwkJKmZpbGUgPSAn
XDAnOworCQlkaXIgPSBidWY7CisJfQorCS8qCisJICogR2V0IHRoZSB2bm9kZSBmb3IgZGlyZWN0
b3J5CisJICovCisJaWYgKChlcnJvciA9IG5hbWVpKGRpciwgJmRwKSkgIT0gMCkgeworCQlyZXR1
cm4gZXJyb3I7CisJfQorCWlmIChkcC0+ZF92bm9kZS0+dl90eXBlICE9IFZESVIpIHsKKwkJZHJl
bGUoZHApOworCQlyZXR1cm4gRU5PVERJUjsKKwl9CisKKwkqZHBwID0gZHA7CisKKwlpZiAobmFt
ZSkgeworCQkvKgorCQkgKiBHZXQgdGhlIGZpbGUgbmFtZQorCQkgKi8KKwkJKm5hbWUgPSBzdHJy
Y2hyKHBhdGgsICcvJykgKyAxOworCX0KKwlyZXR1cm4gMDsKIH0KIAogLyoKQEAgLTM3MSw1ICsz
NzEsNSBAQCBsb29rdXAoY2hhciAqcGF0aCwgc3RydWN0IGRlbnRyeSAqKmRwcCwgY2hhciAqKm5h
bWUpCiB2b2lkCiBsb29rdXBfaW5pdCh2b2lkKQogewotICAgIGRlbnRyeV9pbml0KCk7CisJZGVu
dHJ5X2luaXQoKTsKIH0KZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL21haW4uYyBiL2xpYi92ZnNj
b3JlL21haW4uYwppbmRleCBjZDE0MTExNy4uOGQ5ZGMzM2EgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNj
b3JlL21haW4uYworKysgYi9saWIvdmZzY29yZS9tYWluLmMKQEAgLTkyLDcgKzkyLDcgQEAgc3Rk
OjphdG9taWM8bW9kZV90PiBnbG9iYWxfdW1hc2t7U19JV0dSUCB8IFNfSVdPVEh9OwogCiBzdGF0
aWMgaW5saW5lIG1vZGVfdCBhcHBseV91bWFzayhtb2RlX3QgbW9kZSkKIHsKLSAgICByZXR1cm4g
bW9kZSAmIH5nbG9iYWxfdW1hc2subG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKKwly
ZXR1cm4gbW9kZSAmIH5nbG9iYWxfdW1hc2subG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVk
KTsKIH0KIAogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfb3BlbiwgIlwiJXNcIiAweCV4IDAlMG8iLCBj
b25zdCBjaGFyKiwgaW50LCBtb2RlX3QpOwpAQCAtMTA0LDk5ICsxMDQsOTkgQEAgc3RydWN0IHRh
c2sgKm1haW5fdGFzazsJLyogd2Ugb25seSBoYXZlIGEgc2luZ2xlIHByb2Nlc3MgKi8KIGV4dGVy
biAiQyIKIGludCBvcGVuKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBpbnQgZmxhZ3MsIC4uLikKIHsK
LSAgICBtb2RlX3QgbW9kZSA9IDA7Ci0gICAgaWYgKGZsYWdzICYgT19DUkVBVCkgewotICAgICAg
ICB2YV9saXN0IGFwOwotICAgICAgICB2YV9zdGFydChhcCwgZmxhZ3MpOwotICAgICAgICBtb2Rl
ID0gYXBwbHlfdW1hc2sodmFfYXJnKGFwLCBtb2RlX3QpKTsKLSAgICAgICAgdmFfZW5kKGFwKTsK
LSAgICB9Ci0KLSAgICB0cmFjZV92ZnNfb3BlbihwYXRobmFtZSwgZmxhZ3MsIG1vZGUpOwotCi0g
ICAgc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7Ci0gICAgY2hhciBwYXRoW1BBVEhfTUFYXTsK
LSAgICBzdHJ1Y3QgZmlsZSAqZnA7Ci0gICAgaW50IGZkLCBlcnJvcjsKLSAgICBpbnQgYWNjOwot
Ci0gICAgYWNjID0gMDsKLSAgICBzd2l0Y2ggKGZsYWdzICYgT19BQ0NNT0RFKSB7Ci0gICAgY2Fz
ZSBPX1JET05MWToKLSAgICAgICAgYWNjID0gVlJFQUQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgT19XUk9OTFk6Ci0gICAgICAgIGFjYyA9IFZXUklURTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBPX1JEV1I6Ci0gICAgICAgIGFjYyA9IFZSRUFEIHwgVldSSVRFOwotICAgICAgICBicmVh
azsKLSAgICB9Ci0KLSAgICBlcnJvciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwgYWNjLCBwYXRo
KTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwotCi0gICAgZXJyb3Ig
PSBzeXNfb3BlbihwYXRoLCBmbGFncywgbW9kZSwgJmZwKTsKLSAgICBpZiAoZXJyb3IpCi0gICAg
ICAgIGdvdG8gb3V0X2Vycm5vOwotCi0gICAgZXJyb3IgPSBmZGFsbG9jKGZwLCAmZmQpOwotICAg
IGlmIChlcnJvcikKLSAgICAgICAgZ290byBvdXRfZnB1dDsKLSAgICBmZHJvcChmcCk7Ci0gICAg
dHJhY2VfdmZzX29wZW5fcmV0KGZkKTsKLSAgICByZXR1cm4gZmQ7Ci0KLSAgICBvdXRfZnB1dDoK
LSAgICBmZHJvcChmcCk7Ci0gICAgb3V0X2Vycm5vOgotICAgIGVycm5vID0gZXJyb3I7Ci0gICAg
dHJhY2VfdmZzX29wZW5fZXJyKGVycm9yKTsKLSAgICByZXR1cm4gLTE7CisJbW9kZV90IG1vZGUg
PSAwOworCWlmIChmbGFncyAmIE9fQ1JFQVQpIHsKKwkJdmFfbGlzdCBhcDsKKwkJdmFfc3RhcnQo
YXAsIGZsYWdzKTsKKwkJbW9kZSA9IGFwcGx5X3VtYXNrKHZhX2FyZyhhcCwgbW9kZV90KSk7CisJ
CXZhX2VuZChhcCk7CisJfQorCisJdHJhY2VfdmZzX29wZW4ocGF0aG5hbWUsIGZsYWdzLCBtb2Rl
KTsKKworCXN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOworCWNoYXIgcGF0aFtQQVRIX01BWF07
CisJc3RydWN0IGZpbGUgKmZwOworCWludCBmZCwgZXJyb3I7CisJaW50IGFjYzsKKworCWFjYyA9
IDA7CisJc3dpdGNoIChmbGFncyAmIE9fQUNDTU9ERSkgeworCWNhc2UgT19SRE9OTFk6CisJCWFj
YyA9IFZSRUFEOworCQlicmVhazsKKwljYXNlIE9fV1JPTkxZOgorCQlhY2MgPSBWV1JJVEU7CisJ
CWJyZWFrOworCWNhc2UgT19SRFdSOgorCQlhY2MgPSBWUkVBRCB8IFZXUklURTsKKwkJYnJlYWs7
CisJfQorCisJZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5hbWUsIGFjYywgcGF0aCk7CisJaWYg
KGVycm9yKQorCQlnb3RvIG91dF9lcnJubzsKKworCWVycm9yID0gc3lzX29wZW4ocGF0aCwgZmxh
Z3MsIG1vZGUsICZmcCk7CisJaWYgKGVycm9yKQorCQlnb3RvIG91dF9lcnJubzsKKworCWVycm9y
ID0gZmRhbGxvYyhmcCwgJmZkKTsKKwlpZiAoZXJyb3IpCisJCWdvdG8gb3V0X2ZwdXQ7CisJZmRy
b3AoZnApOworCXRyYWNlX3Zmc19vcGVuX3JldChmZCk7CisJcmV0dXJuIGZkOworCisJb3V0X2Zw
dXQ6CisJZmRyb3AoZnApOworCW91dF9lcnJubzoKKwllcnJubyA9IGVycm9yOworCXRyYWNlX3Zm
c19vcGVuX2VycihlcnJvcik7CisJcmV0dXJuIC0xOwogfQogCiBMRlM2NChvcGVuKTsKIAogaW50
IG9wZW5hdChpbnQgZGlyZmQsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBpbnQgZmxhZ3MsIC4uLikK
IHsKLSAgICBtb2RlX3QgbW9kZSA9IDA7Ci0gICAgaWYgKGZsYWdzICYgT19DUkVBVCkgewotICAg
ICAgICB2YV9saXN0IGFwOwotICAgICAgICB2YV9zdGFydChhcCwgZmxhZ3MpOwotICAgICAgICBt
b2RlID0gYXBwbHlfdW1hc2sodmFfYXJnKGFwLCBtb2RlX3QpKTsKLSAgICAgICAgdmFfZW5kKGFw
KTsKLSAgICB9CisJbW9kZV90IG1vZGUgPSAwOworCWlmIChmbGFncyAmIE9fQ1JFQVQpIHsKKwkJ
dmFfbGlzdCBhcDsKKwkJdmFfc3RhcnQoYXAsIGZsYWdzKTsKKwkJbW9kZSA9IGFwcGx5X3VtYXNr
KHZhX2FyZyhhcCwgbW9kZV90KSk7CisJCXZhX2VuZChhcCk7CisJfQogCi0gICAgaWYgKHBhdGhu
YW1lWzBdID09ICcvJyB8fCBkaXJmZCA9PSBBVF9GRENXRCkgewotICAgICAgICByZXR1cm4gb3Bl
bihwYXRobmFtZSwgZmxhZ3MsIG1vZGUpOwotICAgIH0KKwlpZiAocGF0aG5hbWVbMF0gPT0gJy8n
IHx8IGRpcmZkID09IEFUX0ZEQ1dEKSB7CisJCXJldHVybiBvcGVuKHBhdGhuYW1lLCBmbGFncywg
bW9kZSk7CisJfQogCi0gICAgc3RydWN0IGZpbGUgKmZwOwotICAgIGludCBlcnJvciA9IGZnZXQo
ZGlyZmQsICZmcCk7Ci0gICAgaWYgKGVycm9yKSB7Ci0gICAgICAgIGVycm5vID0gZXJyb3I7Ci0g
ICAgICAgIHJldHVybiAtMTsKLSAgICB9CisJc3RydWN0IGZpbGUgKmZwOworCWludCBlcnJvciA9
IGZnZXQoZGlyZmQsICZmcCk7CisJaWYgKGVycm9yKSB7CisJCWVycm5vID0gZXJyb3I7CisJCXJl
dHVybiAtMTsKKwl9CiAKLSAgICBzdHJ1Y3Qgdm5vZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5kX3Zu
b2RlOwotICAgIHZuX2xvY2sodnApOworCXN0cnVjdCB2bm9kZSAqdnAgPSBmcC0+Zl9kZW50cnkt
PmRfdm5vZGU7CisJdm5fbG9jayh2cCk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Y2hhciBbXT4g
dXAgKG5ldyBjaGFyW1BBVEhfTUFYXSk7Ci0gICAgY2hhciAqcCA9IHVwLmdldCgpOworCXN0ZDo6
dW5pcXVlX3B0cjxjaGFyIFtdPiB1cCAobmV3IGNoYXJbUEFUSF9NQVhdKTsKKwljaGFyICpwID0g
dXAuZ2V0KCk7CiAKLSAgICAvKiBidWlsZCBhYnNvbHV0ZSBwYXRoICovCi0gICAgc3RybGNweShw
LCBmcC0+Zl9kZW50cnktPmRfbW91bnQtPm1fcGF0aCwgUEFUSF9NQVgpOwotICAgIHN0cmxjYXQo
cCwgZnAtPmZfZGVudHJ5LT5kX3BhdGgsIFBBVEhfTUFYKTsKLSAgICBzdHJsY2F0KHAsICIvIiwg
UEFUSF9NQVgpOwotICAgIHN0cmxjYXQocCwgcGF0aG5hbWUsIFBBVEhfTUFYKTsKKwkvKiBidWls
ZCBhYnNvbHV0ZSBwYXRoICovCisJc3RybGNweShwLCBmcC0+Zl9kZW50cnktPmRfbW91bnQtPm1f
cGF0aCwgUEFUSF9NQVgpOworCXN0cmxjYXQocCwgZnAtPmZfZGVudHJ5LT5kX3BhdGgsIFBBVEhf
TUFYKTsKKwlzdHJsY2F0KHAsICIvIiwgUEFUSF9NQVgpOworCXN0cmxjYXQocCwgcGF0aG5hbWUs
IFBBVEhfTUFYKTsKIAotICAgIGVycm9yID0gb3BlbihwLCBmbGFncywgbW9kZSk7CisJZXJyb3Ig
PSBvcGVuKHAsIGZsYWdzLCBtb2RlKTsKIAotICAgIHZuX3VubG9jayh2cCk7Ci0gICAgZmRyb3Ao
ZnApOworCXZuX3VubG9jayh2cCk7CisJZmRyb3AoZnApOwogCi0gICAgcmV0dXJuIGVycm9yOwor
CXJldHVybiBlcnJvcjsKIH0KIExGUzY0KG9wZW5hdCk7CiAKQEAgLTIwNiwyMyArMjA2LDIzIEBA
IExGUzY0KG9wZW5hdCk7CiAvLyBieSBhIGNhbGwgdG8gX19vcGVuXzIoKSwgd2hpY2ggdmVyaWZp
ZXMgaXQgaXNuJ3QgY2FsbGVkIHdpdGggT19DUkVBVEUuCiBleHRlcm4gIkMiIGludCBfX29wZW5f
Mihjb25zdCBjaGFyICpwYXRobmFtZSwgaW50IGZsYWdzKQogewotICAgIGFzc2VydCghKGZsYWdz
ICYgT19DUkVBVCkpOwotICAgIHJldHVybiBvcGVuKHBhdGhuYW1lLCBmbGFncywgMCk7CisJYXNz
ZXJ0KCEoZmxhZ3MgJiBPX0NSRUFUKSk7CisJcmV0dXJuIG9wZW4ocGF0aG5hbWUsIGZsYWdzLCAw
KTsKIH0KIAogZXh0ZXJuICJDIiBpbnQgX19vcGVuNjRfMihjb25zdCBjaGFyICpmaWxlLCBpbnQg
ZmxhZ3MpCiB7Ci0gICAgaWYgKGZsYWdzICYgT19DUkVBVCkgewotICAgICAgICBlcnJubyA9IEVJ
TlZBTDsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KKwlpZiAoZmxhZ3MgJiBPX0NSRUFUKSB7
CisJCWVycm5vID0gRUlOVkFMOworCQlyZXR1cm4gLTE7CisJfQogCi0gICAgcmV0dXJuIG9wZW42
NChmaWxlLCBmbGFncyk7CisJcmV0dXJuIG9wZW42NChmaWxlLCBmbGFncyk7CiB9CiAKIGludCBj
cmVhdChjb25zdCBjaGFyICpwYXRobmFtZSwgbW9kZV90IG1vZGUpCiB7Ci0gICAgcmV0dXJuIG9w
ZW4ocGF0aG5hbWUsIE9fQ1JFQVR8T19XUk9OTFl8T19UUlVOQywgbW9kZSk7CisJcmV0dXJuIG9w
ZW4ocGF0aG5hbWUsIE9fQ1JFQVR8T19XUk9OTFl8T19UUlVOQywgbW9kZSk7CiB9CiBMRlM2NChj
cmVhdCk7CiAKQEAgLTIzMiwyMCArMjMyLDIwIEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2Nsb3Nl
X2VyciwgIiVkIiwgaW50KTsKIAogaW50IGNsb3NlKGludCBmZCkKIHsKLSAgICBpbnQgZXJyb3I7
CisJaW50IGVycm9yOwogCi0gICAgdHJhY2VfdmZzX2Nsb3NlKGZkKTsKLSAgICBlcnJvciA9IGZk
Y2xvc2UoZmQpOwotICAgIGlmIChlcnJvcikKLSAgICAgICAgZ290byBvdXRfZXJybm87CisJdHJh
Y2VfdmZzX2Nsb3NlKGZkKTsKKwllcnJvciA9IGZkY2xvc2UoZmQpOworCWlmIChlcnJvcikKKwkJ
Z290byBvdXRfZXJybm87CiAKLSAgICB0cmFjZV92ZnNfY2xvc2VfcmV0KCk7Ci0gICAgcmV0dXJu
IDA7CisJdHJhY2VfdmZzX2Nsb3NlX3JldCgpOworCXJldHVybiAwOwogCi0gICAgb3V0X2Vycm5v
OgotICAgIHRyYWNlX3Zmc19jbG9zZV9lcnIoZXJyb3IpOwotICAgIGVycm5vID0gZXJyb3I7Ci0g
ICAgcmV0dXJuIC0xOworCW91dF9lcnJubzoKKwl0cmFjZV92ZnNfY2xvc2VfZXJyKGVycm9yKTsK
KwllcnJubyA9IGVycm9yOworCXJldHVybiAtMTsKIH0KIAogVFJBQ0VQT0lOVCh0cmFjZV92ZnNf
bWtub2QsICJcIiVzXCIgMCUwbyAweCV4IiwgY29uc3QgY2hhciosIG1vZGVfdCwgZGV2X3QpOwpA
QCAtMjU2LDMxICsyNTYsMzEgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbWtub2RfZXJyLCAiJWQi
LCBpbnQpOwogZXh0ZXJuICJDIgogaW50IF9feG1rbm9kKGludCB2ZXIsIGNvbnN0IGNoYXIgKnBh
dGhuYW1lLCBtb2RlX3QgbW9kZSwgZGV2X3QgKmRldikKIHsKLSAgICBhc3NlcnQodmVyID09IDAp
OyAvLyBPbiB4ODYtNjQgTGludXgsIF9NS05PRF9WRVJfTElOVVggaXMgMC4KLSAgICBzdHJ1Y3Qg
dGFzayAqdCA9IG1haW5fdGFzazsKLSAgICBjaGFyIHBhdGhbUEFUSF9NQVhdOwotICAgIGludCBl
cnJvcjsKKwlhc3NlcnQodmVyID09IDApOyAvLyBPbiB4ODYtNjQgTGludXgsIF9NS05PRF9WRVJf
TElOVVggaXMgMC4KKwlzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKKwljaGFyIHBhdGhbUEFU
SF9NQVhdOworCWludCBlcnJvcjsKIAotICAgIHRyYWNlX3Zmc19ta25vZChwYXRobmFtZSwgbW9k
ZSwgKmRldik7Ci0gICAgaWYgKChlcnJvciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwgVldSSVRF
LCBwYXRoKSkgIT0gMCkKLSAgICAgICAgZ290byBvdXRfZXJybm87CisJdHJhY2VfdmZzX21rbm9k
KHBhdGhuYW1lLCBtb2RlLCAqZGV2KTsKKwlpZiAoKGVycm9yID0gdGFza19jb252KHQsIHBhdGhu
YW1lLCBWV1JJVEUsIHBhdGgpKSAhPSAwKQorCQlnb3RvIG91dF9lcnJubzsKIAotICAgIGVycm9y
ID0gc3lzX21rbm9kKHBhdGgsIG1vZGUpOwotICAgIGlmIChlcnJvcikKLSAgICAgICAgZ290byBv
dXRfZXJybm87CisJZXJyb3IgPSBzeXNfbWtub2QocGF0aCwgbW9kZSk7CisJaWYgKGVycm9yKQor
CQlnb3RvIG91dF9lcnJubzsKIAotICAgIHRyYWNlX3Zmc19ta25vZF9yZXQoKTsKLSAgICByZXR1
cm4gMDsKKwl0cmFjZV92ZnNfbWtub2RfcmV0KCk7CisJcmV0dXJuIDA7CiAKLSAgICBvdXRfZXJy
bm86Ci0gICAgdHJhY2VfdmZzX21rbm9kX2VycihlcnJvcik7Ci0gICAgZXJybm8gPSBlcnJvcjsK
LSAgICByZXR1cm4gLTE7CisJb3V0X2Vycm5vOgorCXRyYWNlX3Zmc19ta25vZF9lcnIoZXJyb3Ip
OworCWVycm5vID0gZXJyb3I7CisJcmV0dXJuIC0xOwogfQogCiBpbnQgbWtub2QoY29uc3QgY2hh
ciAqcGF0aG5hbWUsIG1vZGVfdCBtb2RlLCBkZXZfdCBkZXYpCiB7Ci0gICAgcmV0dXJuIF9feG1r
bm9kKDAsIHBhdGhuYW1lLCBtb2RlLCAmZGV2KTsKKwlyZXR1cm4gX194bWtub2QoMCwgcGF0aG5h
bWUsIG1vZGUsICZkZXYpOwogfQogCiAKQEAgLTI5MCwyNyArMjkwLDI3IEBAIFRSQUNFUE9JTlQo
dHJhY2VfdmZzX2xzZWVrX2VyciwgIiVkIiwgaW50KTsKIAogb2ZmX3QgbHNlZWsoaW50IGZkLCBv
ZmZfdCBvZmZzZXQsIGludCB3aGVuY2UpCiB7Ci0gICAgc3RydWN0IGZpbGUgKmZwOwotICAgIG9m
Zl90IG9yZzsKLSAgICBpbnQgZXJyb3I7CisJc3RydWN0IGZpbGUgKmZwOworCW9mZl90IG9yZzsK
KwlpbnQgZXJyb3I7CiAKLSAgICB0cmFjZV92ZnNfbHNlZWsoZmQsIG9mZnNldCwgd2hlbmNlKTsK
LSAgICBlcnJvciA9IGZnZXQoZmQsICZmcCk7Ci0gICAgaWYgKGVycm9yKQotICAgICAgICBnb3Rv
IG91dF9lcnJubzsKKwl0cmFjZV92ZnNfbHNlZWsoZmQsIG9mZnNldCwgd2hlbmNlKTsKKwllcnJv
ciA9IGZnZXQoZmQsICZmcCk7CisJaWYgKGVycm9yKQorCQlnb3RvIG91dF9lcnJubzsKIAotICAg
IGVycm9yID0gc3lzX2xzZWVrKGZwLCBvZmZzZXQsIHdoZW5jZSwgJm9yZyk7Ci0gICAgZmRyb3Ao
ZnApOworCWVycm9yID0gc3lzX2xzZWVrKGZwLCBvZmZzZXQsIHdoZW5jZSwgJm9yZyk7CisJZmRy
b3AoZnApOwogCi0gICAgaWYgKGVycm9yKQotICAgICAgICBnb3RvIG91dF9lcnJubzsKLSAgICB0
cmFjZV92ZnNfbHNlZWtfcmV0KG9yZyk7Ci0gICAgcmV0dXJuIG9yZzsKKwlpZiAoZXJyb3IpCisJ
CWdvdG8gb3V0X2Vycm5vOworCXRyYWNlX3Zmc19sc2Vla19yZXQob3JnKTsKKwlyZXR1cm4gb3Jn
OwogCi0gICAgb3V0X2Vycm5vOgotICAgIHRyYWNlX3Zmc19sc2Vla19lcnIoZXJyb3IpOwotICAg
IGVycm5vID0gZXJyb3I7Ci0gICAgcmV0dXJuIC0xOworCW91dF9lcnJubzoKKwl0cmFjZV92ZnNf
bHNlZWtfZXJyKGVycm9yKTsKKwllcnJubyA9IGVycm9yOworCXJldHVybiAtMTsKIH0KIAogTEZT
NjQobHNlZWspOwpAQCAtMzI2LDQ2ICszMjYsNDYgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfcHJl
YWRfZXJyLCAiJWQiLCBpbnQpOwogLy8gSW4gRnJlZUJTRCwgZG9maWxld3JpdGUoKSBhbmQgZG9m
aWxlcmVhZCgpIChzeXNfZ2VuZXJpYy5jKSBkbyB0aGlzIHRvby4KIHN0YXRpYyBpbmxpbmUgYm9v
bCBoYXNfZXJyb3IoaW50IGVycm9yLCBpbnQgYnl0ZXMpCiB7Ci0gICAgcmV0dXJuIGVycm9yICYm
ICgKLSAgICAgICAgICAgIChieXRlcyA9PSAwKSB8fAotICAgICAgICAgICAgKGVycm9yICE9IEVX
T1VMREJMT0NLICYmIGVycm9yICE9IEVJTlRSICYmIGVycm9yICE9IEVSRVNUQVJUKSk7CisJcmV0
dXJuIGVycm9yICYmICgKKwkJCShieXRlcyA9PSAwKSB8fAorCQkJKGVycm9yICE9IEVXT1VMREJM
T0NLICYmIGVycm9yICE9IEVJTlRSICYmIGVycm9yICE9IEVSRVNUQVJUKSk7CiB9CiAKIAogc3Np
emVfdCBwcmVhZChpbnQgZmQsIHZvaWQgKmJ1Ziwgc2l6ZV90IGNvdW50LCBvZmZfdCBvZmZzZXQp
CiB7Ci0gICAgdHJhY2VfdmZzX3ByZWFkKGZkLCBidWYsIGNvdW50LCBvZmZzZXQpOwotICAgIHN0
cnVjdCBpb3ZlYyBpb3YgPSB7Ci0gICAgICAgICAgICAuaW92X2Jhc2UJPSBidWYsCi0gICAgICAg
ICAgICAuaW92X2xlbgk9IGNvdW50LAotICAgIH07Ci0gICAgc3RydWN0IGZpbGUgKmZwOwotICAg
IHNpemVfdCBieXRlczsKLSAgICBpbnQgZXJyb3I7CisJdHJhY2VfdmZzX3ByZWFkKGZkLCBidWYs
IGNvdW50LCBvZmZzZXQpOworCXN0cnVjdCBpb3ZlYyBpb3YgPSB7CisJCQkuaW92X2Jhc2UJPSBi
dWYsCisJCQkuaW92X2xlbgk9IGNvdW50LAorCX07CisJc3RydWN0IGZpbGUgKmZwOworCXNpemVf
dCBieXRlczsKKwlpbnQgZXJyb3I7CiAKLSAgICBlcnJvciA9IGZnZXQoZmQsICZmcCk7Ci0gICAg
aWYgKGVycm9yKQotICAgICAgICBnb3RvIG91dF9lcnJubzsKKwllcnJvciA9IGZnZXQoZmQsICZm
cCk7CisJaWYgKGVycm9yKQorCQlnb3RvIG91dF9lcnJubzsKIAotICAgIGVycm9yID0gc3lzX3Jl
YWQoZnAsICZpb3YsIDEsIG9mZnNldCwgJmJ5dGVzKTsKLSAgICBmZHJvcChmcCk7CisJZXJyb3Ig
PSBzeXNfcmVhZChmcCwgJmlvdiwgMSwgb2Zmc2V0LCAmYnl0ZXMpOworCWZkcm9wKGZwKTsKIAot
ICAgIGlmIChoYXNfZXJyb3IoZXJyb3IsIGJ5dGVzKSkKLSAgICAgICAgZ290byBvdXRfZXJybm87
Ci0gICAgdHJhY2VfdmZzX3ByZWFkX3JldChieXRlcyk7Ci0gICAgcmV0dXJuIGJ5dGVzOworCWlm
IChoYXNfZXJyb3IoZXJyb3IsIGJ5dGVzKSkKKwkJZ290byBvdXRfZXJybm87CisJdHJhY2VfdmZz
X3ByZWFkX3JldChieXRlcyk7CisJcmV0dXJuIGJ5dGVzOwogCi0gICAgb3V0X2Vycm5vOgotICAg
IHRyYWNlX3Zmc19wcmVhZF9lcnIoZXJyb3IpOwotICAgIGVycm5vID0gZXJyb3I7Ci0gICAgcmV0
dXJuIC0xOworCW91dF9lcnJubzoKKwl0cmFjZV92ZnNfcHJlYWRfZXJyKGVycm9yKTsKKwllcnJu
byA9IGVycm9yOworCXJldHVybiAtMTsKIH0KIAogTEZTNjQocHJlYWQpOwogCiBzc2l6ZV90IHJl
YWQoaW50IGZkLCB2b2lkICpidWYsIHNpemVfdCBjb3VudCkKIHsKLSAgICByZXR1cm4gcHJlYWQo
ZmQsIGJ1ZiwgY291bnQsIC0xKTsKKwlyZXR1cm4gcHJlYWQoZmQsIGJ1ZiwgY291bnQsIC0xKTsK
IH0KIAogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfcHdyaXRlLCAiJWQgJXAgMHgleCAweCV4IiwgaW50
LCBjb25zdCB2b2lkKiwgc2l6ZV90LCBvZmZfdCk7CkBAIC0zNzQsNjcgKzM3NCw2NyBAQCBUUkFD
RVBPSU5UKHRyYWNlX3Zmc19wd3JpdGVfZXJyLCAiJWQiLCBpbnQpOwogCiBzc2l6ZV90IHB3cml0
ZShpbnQgZmQsIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGNvdW50LCBvZmZfdCBvZmZzZXQpCiB7
Ci0gICAgdHJhY2VfdmZzX3B3cml0ZShmZCwgYnVmLCBjb3VudCwgb2Zmc2V0KTsKLSAgICBzdHJ1
Y3QgaW92ZWMgaW92ID0gewotICAgICAgICAgICAgLmlvdl9iYXNlCT0gKHZvaWQgKilidWYsCi0g
ICAgICAgICAgICAuaW92X2xlbgk9IGNvdW50LAotICAgIH07Ci0gICAgc3RydWN0IGZpbGUgKmZw
OwotICAgIHNpemVfdCBieXRlczsKLSAgICBpbnQgZXJyb3I7CisJdHJhY2VfdmZzX3B3cml0ZShm
ZCwgYnVmLCBjb3VudCwgb2Zmc2V0KTsKKwlzdHJ1Y3QgaW92ZWMgaW92ID0geworCQkJLmlvdl9i
YXNlCT0gKHZvaWQgKilidWYsCisJCQkuaW92X2xlbgk9IGNvdW50LAorCX07CisJc3RydWN0IGZp
bGUgKmZwOworCXNpemVfdCBieXRlczsKKwlpbnQgZXJyb3I7CiAKLSAgICBlcnJvciA9IGZnZXQo
ZmQsICZmcCk7Ci0gICAgaWYgKGVycm9yKQotICAgICAgICBnb3RvIG91dF9lcnJubzsKKwllcnJv
ciA9IGZnZXQoZmQsICZmcCk7CisJaWYgKGVycm9yKQorCQlnb3RvIG91dF9lcnJubzsKIAotICAg
IGVycm9yID0gc3lzX3dyaXRlKGZwLCAmaW92LCAxLCBvZmZzZXQsICZieXRlcyk7Ci0gICAgZmRy
b3AoZnApOworCWVycm9yID0gc3lzX3dyaXRlKGZwLCAmaW92LCAxLCBvZmZzZXQsICZieXRlcyk7
CisJZmRyb3AoZnApOwogCi0gICAgaWYgKGhhc19lcnJvcihlcnJvciwgYnl0ZXMpKQotICAgICAg
ICBnb3RvIG91dF9lcnJubzsKLSAgICB0cmFjZV92ZnNfcHdyaXRlX3JldChieXRlcyk7Ci0gICAg
cmV0dXJuIGJ5dGVzOworCWlmIChoYXNfZXJyb3IoZXJyb3IsIGJ5dGVzKSkKKwkJZ290byBvdXRf
ZXJybm87CisJdHJhY2VfdmZzX3B3cml0ZV9yZXQoYnl0ZXMpOworCXJldHVybiBieXRlczsKIAot
ICAgIG91dF9lcnJubzoKLSAgICB0cmFjZV92ZnNfcHdyaXRlX2VycihlcnJvcik7Ci0gICAgZXJy
bm8gPSBlcnJvcjsKLSAgICByZXR1cm4gLTE7CisJb3V0X2Vycm5vOgorCXRyYWNlX3Zmc19wd3Jp
dGVfZXJyKGVycm9yKTsKKwllcnJubyA9IGVycm9yOworCXJldHVybiAtMTsKIH0KIAogTEZTNjQo
cHdyaXRlKTsKIAogc3NpemVfdCB3cml0ZShpbnQgZmQsIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90
IGNvdW50KQogewotICAgIHJldHVybiBwd3JpdGUoZmQsIGJ1ZiwgY291bnQsIC0xKTsKKwlyZXR1
cm4gcHdyaXRlKGZkLCBidWYsIGNvdW50LCAtMSk7CiB9CiAKIHNzaXplX3QgcHJlYWR2KGludCBm
ZCwgY29uc3Qgc3RydWN0IGlvdmVjICppb3YsIGludCBpb3ZjbnQsIG9mZl90IG9mZnNldCkKIHsK
LSAgICBzdHJ1Y3QgZmlsZSAqZnA7Ci0gICAgc2l6ZV90IGJ5dGVzOwotICAgIGludCBlcnJvcjsK
KwlzdHJ1Y3QgZmlsZSAqZnA7CisJc2l6ZV90IGJ5dGVzOworCWludCBlcnJvcjsKIAotICAgIGVy
cm9yID0gZmdldChmZCwgJmZwKTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIGdvdG8gb3V0X2Vy
cm5vOworCWVycm9yID0gZmdldChmZCwgJmZwKTsKKwlpZiAoZXJyb3IpCisJCWdvdG8gb3V0X2Vy
cm5vOwogCi0gICAgZXJyb3IgPSBzeXNfcmVhZChmcCwgaW92LCBpb3ZjbnQsIG9mZnNldCwgJmJ5
dGVzKTsKLSAgICBmZHJvcChmcCk7CisJZXJyb3IgPSBzeXNfcmVhZChmcCwgaW92LCBpb3ZjbnQs
IG9mZnNldCwgJmJ5dGVzKTsKKwlmZHJvcChmcCk7CiAKLSAgICBpZiAoaGFzX2Vycm9yKGVycm9y
LCBieXRlcykpCi0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwotICAgIHJldHVybiBieXRlczsKKwlp
ZiAoaGFzX2Vycm9yKGVycm9yLCBieXRlcykpCisJCWdvdG8gb3V0X2Vycm5vOworCXJldHVybiBi
eXRlczsKIAotICAgIG91dF9lcnJubzoKLSAgICBlcnJubyA9IGVycm9yOwotICAgIHJldHVybiAt
MTsKKwlvdXRfZXJybm86CisJZXJybm8gPSBlcnJvcjsKKwlyZXR1cm4gLTE7CiB9CiAKIExGUzY0
KHByZWFkdik7CiAKIHNzaXplX3QgcmVhZHYoaW50IGZkLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlv
diwgaW50IGlvdmNudCkKIHsKLSAgICByZXR1cm4gcHJlYWR2KGZkLCBpb3YsIGlvdmNudCwgLTEp
OworCXJldHVybiBwcmVhZHYoZmQsIGlvdiwgaW92Y250LCAtMSk7CiB9CiAKIFRSQUNFUE9JTlQo
dHJhY2VfdmZzX3B3cml0ZXYsICIlZCAlcCAweCV4IDB4JXgiLCBpbnQsIGNvbnN0IHN0cnVjdCBp
b3ZlYyosIGludCwgb2ZmX3QpOwpAQCAtNDQzLDMzICs0NDMsMzMgQEAgVFJBQ0VQT0lOVCh0cmFj
ZV92ZnNfcHdyaXRldl9lcnIsICIlZCIsIGludCk7CiAKIHNzaXplX3QgcHdyaXRldihpbnQgZmQs
IGNvbnN0IHN0cnVjdCBpb3ZlYyAqaW92LCBpbnQgaW92Y250LCBvZmZfdCBvZmZzZXQpCiB7Ci0g
ICAgc3RydWN0IGZpbGUgKmZwOwotICAgIHNpemVfdCBieXRlczsKLSAgICBpbnQgZXJyb3I7CisJ
c3RydWN0IGZpbGUgKmZwOworCXNpemVfdCBieXRlczsKKwlpbnQgZXJyb3I7CiAKLSAgICB0cmFj
ZV92ZnNfcHdyaXRldihmZCwgaW92LCBpb3ZjbnQsIG9mZnNldCk7Ci0gICAgZXJyb3IgPSBmZ2V0
KGZkLCAmZnApOwotICAgIGlmIChlcnJvcikKLSAgICAgICAgZ290byBvdXRfZXJybm87CisJdHJh
Y2VfdmZzX3B3cml0ZXYoZmQsIGlvdiwgaW92Y250LCBvZmZzZXQpOworCWVycm9yID0gZmdldChm
ZCwgJmZwKTsKKwlpZiAoZXJyb3IpCisJCWdvdG8gb3V0X2Vycm5vOwogCi0gICAgZXJyb3IgPSBz
eXNfd3JpdGUoZnAsIGlvdiwgaW92Y250LCBvZmZzZXQsICZieXRlcyk7Ci0gICAgZmRyb3AoZnAp
OworCWVycm9yID0gc3lzX3dyaXRlKGZwLCBpb3YsIGlvdmNudCwgb2Zmc2V0LCAmYnl0ZXMpOwor
CWZkcm9wKGZwKTsKIAotICAgIGlmIChoYXNfZXJyb3IoZXJyb3IsIGJ5dGVzKSkKLSAgICAgICAg
Z290byBvdXRfZXJybm87Ci0gICAgdHJhY2VfdmZzX3B3cml0ZXZfcmV0KGJ5dGVzKTsKLSAgICBy
ZXR1cm4gYnl0ZXM7CisJaWYgKGhhc19lcnJvcihlcnJvciwgYnl0ZXMpKQorCQlnb3RvIG91dF9l
cnJubzsKKwl0cmFjZV92ZnNfcHdyaXRldl9yZXQoYnl0ZXMpOworCXJldHVybiBieXRlczsKIAot
ICAgIG91dF9lcnJubzoKLSAgICB0cmFjZV92ZnNfcHdyaXRldl9lcnIoZXJyb3IpOwotICAgIGVy
cm5vID0gZXJyb3I7Ci0gICAgcmV0dXJuIC0xOworCW91dF9lcnJubzoKKwl0cmFjZV92ZnNfcHdy
aXRldl9lcnIoZXJyb3IpOworCWVycm5vID0gZXJyb3I7CisJcmV0dXJuIC0xOwogfQogTEZTNjQo
cHdyaXRldik7CiAKIHNzaXplX3Qgd3JpdGV2KGludCBmZCwgY29uc3Qgc3RydWN0IGlvdmVjICpp
b3YsIGludCBpb3ZjbnQpCiB7Ci0gICAgcmV0dXJuIHB3cml0ZXYoZmQsIGlvdiwgaW92Y250LCAt
MSk7CisJcmV0dXJuIHB3cml0ZXYoZmQsIGlvdiwgaW92Y250LCAtMSk7CiB9CiAKIFRSQUNFUE9J
TlQodHJhY2VfdmZzX2lvY3RsLCAiJWQgMHgleCIsIGludCwgdW5zaWduZWQgbG9uZyk7CkBAIC00
NzgsMzUgKzQ3OCwzNSBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19pb2N0bF9lcnIsICIlZCIsIGlu
dCk7CiAKIGludCBpb2N0bChpbnQgZmQsIHVuc2lnbmVkIGxvbmcgaW50IHJlcXVlc3QsIC4uLikK
IHsKLSAgICBzdHJ1Y3QgZmlsZSAqZnA7Ci0gICAgaW50IGVycm9yOwotICAgIHZhX2xpc3QgYXA7
Ci0gICAgdm9pZCogYXJnOworCXN0cnVjdCBmaWxlICpmcDsKKwlpbnQgZXJyb3I7CisJdmFfbGlz
dCBhcDsKKwl2b2lkKiBhcmc7CiAKLSAgICB0cmFjZV92ZnNfaW9jdGwoZmQsIHJlcXVlc3QpOwot
ICAgIC8qIGdsaWJjIEFCSSBwcm92aWRlcyBhIHZhcmlhZGljIHByb3RvdHlwZSBmb3IgaW9jdGwg
c28gd2UgbmVlZCB0byBhZ3JlZQotICAgICAqIHdpdGggaXQsIHNpbmNlIHdlIG5vdyBpbmNsdWRl
IHN5cy9pb2N0bC5oCi0gICAgICogcmVhZCB0aGUgZmlyc3QgYXJndW1lbnQgYW5kIHBhc3MgaXQg
dG8gc3lzX2lvY3RsKCkgKi8KLSAgICB2YV9zdGFydChhcCwgcmVxdWVzdCk7Ci0gICAgYXJnID0g
dmFfYXJnKGFwLCB2b2lkKik7Ci0gICAgdmFfZW5kKGFwKTsKKwl0cmFjZV92ZnNfaW9jdGwoZmQs
IHJlcXVlc3QpOworCS8qIGdsaWJjIEFCSSBwcm92aWRlcyBhIHZhcmlhZGljIHByb3RvdHlwZSBm
b3IgaW9jdGwgc28gd2UgbmVlZCB0byBhZ3JlZQorCSAqIHdpdGggaXQsIHNpbmNlIHdlIG5vdyBp
bmNsdWRlIHN5cy9pb2N0bC5oCisJICogcmVhZCB0aGUgZmlyc3QgYXJndW1lbnQgYW5kIHBhc3Mg
aXQgdG8gc3lzX2lvY3RsKCkgKi8KKwl2YV9zdGFydChhcCwgcmVxdWVzdCk7CisJYXJnID0gdmFf
YXJnKGFwLCB2b2lkKik7CisJdmFfZW5kKGFwKTsKIAotICAgIGVycm9yID0gZmdldChmZCwgJmZw
KTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIGdvdG8gb3V0X2Vycm5vOworCWVycm9yID0gZmdl
dChmZCwgJmZwKTsKKwlpZiAoZXJyb3IpCisJCWdvdG8gb3V0X2Vycm5vOwogCi0gICAgZXJyb3Ig
PSBzeXNfaW9jdGwoZnAsIHJlcXVlc3QsIGFyZyk7Ci0gICAgZmRyb3AoZnApOworCWVycm9yID0g
c3lzX2lvY3RsKGZwLCByZXF1ZXN0LCBhcmcpOworCWZkcm9wKGZwKTsKIAotICAgIGlmIChlcnJv
cikKLSAgICAgICAgZ290byBvdXRfZXJybm87Ci0gICAgdHJhY2VfdmZzX2lvY3RsX3JldCgpOwot
ICAgIHJldHVybiAwOworCWlmIChlcnJvcikKKwkJZ290byBvdXRfZXJybm87CisJdHJhY2VfdmZz
X2lvY3RsX3JldCgpOworCXJldHVybiAwOwogCi0gICAgb3V0X2Vycm5vOgotICAgIHRyYWNlX3Zm
c19pb2N0bF9lcnIoZXJyb3IpOwotICAgIGVycm5vID0gZXJyb3I7Ci0gICAgcmV0dXJuIC0xOwor
CW91dF9lcnJubzoKKwl0cmFjZV92ZnNfaW9jdGxfZXJyKGVycm9yKTsKKwllcnJubyA9IGVycm9y
OworCXJldHVybiAtMTsKIH0KIAogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZnN5bmMsICIlZCIsIGlu
dCk7CkBAIC01MTUsMzIgKzUxNSwzMiBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19mc3luY19lcnIs
ICIlZCIsIGludCk7CiAKIGludCBmc3luYyhpbnQgZmQpCiB7Ci0gICAgc3RydWN0IGZpbGUgKmZw
OwotICAgIGludCBlcnJvcjsKKwlzdHJ1Y3QgZmlsZSAqZnA7CisJaW50IGVycm9yOwogCi0gICAg
dHJhY2VfdmZzX2ZzeW5jKGZkKTsKLSAgICBlcnJvciA9IGZnZXQoZmQsICZmcCk7Ci0gICAgaWYg
KGVycm9yKQotICAgICAgICBnb3RvIG91dF9lcnJubzsKKwl0cmFjZV92ZnNfZnN5bmMoZmQpOwor
CWVycm9yID0gZmdldChmZCwgJmZwKTsKKwlpZiAoZXJyb3IpCisJCWdvdG8gb3V0X2Vycm5vOwog
Ci0gICAgZXJyb3IgPSBzeXNfZnN5bmMoZnApOwotICAgIGZkcm9wKGZwKTsKKwllcnJvciA9IHN5
c19mc3luYyhmcCk7CisJZmRyb3AoZnApOwogCi0gICAgaWYgKGVycm9yKQotICAgICAgICBnb3Rv
IG91dF9lcnJubzsKLSAgICB0cmFjZV92ZnNfZnN5bmNfcmV0KCk7Ci0gICAgcmV0dXJuIDA7CisJ
aWYgKGVycm9yKQorCQlnb3RvIG91dF9lcnJubzsKKwl0cmFjZV92ZnNfZnN5bmNfcmV0KCk7CisJ
cmV0dXJuIDA7CiAKLSAgICBvdXRfZXJybm86Ci0gICAgdHJhY2VfdmZzX2ZzeW5jX2VycihlcnJv
cik7Ci0gICAgZXJybm8gPSBlcnJvcjsKLSAgICByZXR1cm4gLTE7CisJb3V0X2Vycm5vOgorCXRy
YWNlX3Zmc19mc3luY19lcnIoZXJyb3IpOworCWVycm5vID0gZXJyb3I7CisJcmV0dXJuIC0xOwog
fQogCiBpbnQgZmRhdGFzeW5jKGludCBmZCkKIHsKLSAgICAvLyBUT0RPOiBTZWUgaWYgd2UgY2Fu
IGRvIGxlc3MgdGhhbiBmc3luYygpLgotICAgIHJldHVybiBmc3luYyhmZCk7CisJLy8gVE9ETzog
U2VlIGlmIHdlIGNhbiBkbyBsZXNzIHRoYW4gZnN5bmMoKS4KKwlyZXR1cm4gZnN5bmMoZmQpOwog
fQogCiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19mc3RhdCwgIiVkICVwIiwgaW50LCBzdHJ1Y3Qgc3Rh
dCopOwpAQCAtNTUwLDI3ICs1NTAsMjcgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZnN0YXRfZXJy
LCAiJWQiLCBpbnQpOwogZXh0ZXJuICJDIgogaW50IF9fZnhzdGF0KGludCB2ZXIsIGludCBmZCwg
c3RydWN0IHN0YXQgKnN0KQogewotICAgIHN0cnVjdCBmaWxlICpmcDsKLSAgICBpbnQgZXJyb3I7
CisJc3RydWN0IGZpbGUgKmZwOworCWludCBlcnJvcjsKIAotICAgIHRyYWNlX3Zmc19mc3RhdChm
ZCwgc3QpOworCXRyYWNlX3Zmc19mc3RhdChmZCwgc3QpOwogCi0gICAgZXJyb3IgPSBmZ2V0KGZk
LCAmZnApOwotICAgIGlmIChlcnJvcikKLSAgICAgICAgZ290byBvdXRfZXJybm87CisJZXJyb3Ig
PSBmZ2V0KGZkLCAmZnApOworCWlmIChlcnJvcikKKwkJZ290byBvdXRfZXJybm87CiAKLSAgICBl
cnJvciA9IHN5c19mc3RhdChmcCwgc3QpOwotICAgIGZkcm9wKGZwKTsKKwllcnJvciA9IHN5c19m
c3RhdChmcCwgc3QpOworCWZkcm9wKGZwKTsKIAotICAgIGlmIChlcnJvcikKLSAgICAgICAgZ290
byBvdXRfZXJybm87Ci0gICAgdHJhY2VfdmZzX2ZzdGF0X3JldCgpOwotICAgIHJldHVybiAwOwor
CWlmIChlcnJvcikKKwkJZ290byBvdXRfZXJybm87CisJdHJhY2VfdmZzX2ZzdGF0X3JldCgpOwor
CXJldHVybiAwOwogCi0gICAgb3V0X2Vycm5vOgotICAgIHRyYWNlX3Zmc19mc3RhdF9lcnIoZXJy
b3IpOwotICAgIGVycm5vID0gZXJyb3I7Ci0gICAgcmV0dXJuIC0xOworCW91dF9lcnJubzoKKwl0
cmFjZV92ZnNfZnN0YXRfZXJyKGVycm9yKTsKKwllcnJubyA9IGVycm9yOworCXJldHVybiAtMTsK
IH0KIAogTEZTNjQoX19meHN0YXQpOwpAQCAtNTc4LDUyICs1NzgsNTIgQEAgTEZTNjQoX19meHN0
YXQpOwogZXh0ZXJuICJDIgogaW50IGZzdGF0KGludCBmZCwgc3RydWN0IHN0YXQgKnN0KQogewot
ICAgIHJldHVybiBfX2Z4c3RhdCgxLCBmZCwgc3QpOworCXJldHVybiBfX2Z4c3RhdCgxLCBmZCwg
c3QpOwogfQogCiBMRlM2NChmc3RhdCk7CiAKIGV4dGVybiAiQyIKIGludCBfX2Z4c3RhdGF0KGlu
dCB2ZXIsIGludCBkaXJmZCwgY29uc3QgY2hhciAqcGF0aG5hbWUsIHN0cnVjdCBzdGF0ICpzdCwK
LSAgICAgICAgaW50IGZsYWdzKQorCQlpbnQgZmxhZ3MpCiB7Ci0gICAgaWYgKGZsYWdzICYgQVRf
U1lNTElOS19OT0ZPTExPVykgewotICAgICAgICBVTklNUExFTUVOVEVEKCJmc3RhdGF0KCkgd2l0
aCBBVF9TWU1MSU5LX05PRk9MTE9XIik7Ci0gICAgfQorCWlmIChmbGFncyAmIEFUX1NZTUxJTktf
Tk9GT0xMT1cpIHsKKwkJVU5JTVBMRU1FTlRFRCgiZnN0YXRhdCgpIHdpdGggQVRfU1lNTElOS19O
T0ZPTExPVyIpOworCX0KIAotICAgIGlmIChwYXRobmFtZVswXSA9PSAnLycgfHwgZGlyZmQgPT0g
QVRfRkRDV0QpIHsKLSAgICAgICAgcmV0dXJuIHN0YXQocGF0aG5hbWUsIHN0KTsKLSAgICB9Ci0g
ICAgLy8gSWYgQVRfRU1QVFlfUEFUSCBhbmQgcGF0aG5hbWUgaXMgYW4gZW1wdHkgc3RyaW5nLCBm
c3RhdGF0KCkgb3BlcmF0ZXMgb24KLSAgICAvLyBkaXJmZCBpdHNlbGYsIGFuZCBpbiB0aGF0IGNh
c2UgaXQgZG9lc24ndCBoYXZlIHRvIGJlIGEgZGlyZWN0b3J5LgotICAgIGlmICgoZmxhZ3MgJiBB
VF9FTVBUWV9QQVRIKSAmJiAhcGF0aG5hbWVbMF0pIHsKLSAgICAgICAgcmV0dXJuIGZzdGF0KGRp
cmZkLCBzdCk7Ci0gICAgfQorCWlmIChwYXRobmFtZVswXSA9PSAnLycgfHwgZGlyZmQgPT0gQVRf
RkRDV0QpIHsKKwkJcmV0dXJuIHN0YXQocGF0aG5hbWUsIHN0KTsKKwl9CisJLy8gSWYgQVRfRU1Q
VFlfUEFUSCBhbmQgcGF0aG5hbWUgaXMgYW4gZW1wdHkgc3RyaW5nLCBmc3RhdGF0KCkgb3BlcmF0
ZXMgb24KKwkvLyBkaXJmZCBpdHNlbGYsIGFuZCBpbiB0aGF0IGNhc2UgaXQgZG9lc24ndCBoYXZl
IHRvIGJlIGEgZGlyZWN0b3J5LgorCWlmICgoZmxhZ3MgJiBBVF9FTVBUWV9QQVRIKSAmJiAhcGF0
aG5hbWVbMF0pIHsKKwkJcmV0dXJuIGZzdGF0KGRpcmZkLCBzdCk7CisJfQogCi0gICAgc3RydWN0
IGZpbGUgKmZwOwotICAgIGludCBlcnJvciA9IGZnZXQoZGlyZmQsICZmcCk7Ci0gICAgaWYgKGVy
cm9yKSB7Ci0gICAgICAgIGVycm5vID0gZXJyb3I7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9
CisJc3RydWN0IGZpbGUgKmZwOworCWludCBlcnJvciA9IGZnZXQoZGlyZmQsICZmcCk7CisJaWYg
KGVycm9yKSB7CisJCWVycm5vID0gZXJyb3I7CisJCXJldHVybiAtMTsKKwl9CiAKLSAgICBzdHJ1
Y3Qgdm5vZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOwotICAgIHZuX2xvY2sodnApOwor
CXN0cnVjdCB2bm9kZSAqdnAgPSBmcC0+Zl9kZW50cnktPmRfdm5vZGU7CisJdm5fbG9jayh2cCk7
CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Y2hhciBbXT4gdXAgKG5ldyBjaGFyW1BBVEhfTUFYXSk7
Ci0gICAgY2hhciAqcCA9IHVwLmdldCgpOwotICAgIC8qIGJ1aWxkIGFic29sdXRlIHBhdGggKi8K
LSAgICBzdHJsY3B5KHAsIGZwLT5mX2RlbnRyeS0+ZF9tb3VudC0+bV9wYXRoLCBQQVRIX01BWCk7
Ci0gICAgc3RybGNhdChwLCBmcC0+Zl9kZW50cnktPmRfcGF0aCwgUEFUSF9NQVgpOwotICAgIHN0
cmxjYXQocCwgIi8iLCBQQVRIX01BWCk7Ci0gICAgc3RybGNhdChwLCBwYXRobmFtZSwgUEFUSF9N
QVgpOworCXN0ZDo6dW5pcXVlX3B0cjxjaGFyIFtdPiB1cCAobmV3IGNoYXJbUEFUSF9NQVhdKTsK
KwljaGFyICpwID0gdXAuZ2V0KCk7CisJLyogYnVpbGQgYWJzb2x1dGUgcGF0aCAqLworCXN0cmxj
cHkocCwgZnAtPmZfZGVudHJ5LT5kX21vdW50LT5tX3BhdGgsIFBBVEhfTUFYKTsKKwlzdHJsY2F0
KHAsIGZwLT5mX2RlbnRyeS0+ZF9wYXRoLCBQQVRIX01BWCk7CisJc3RybGNhdChwLCAiLyIsIFBB
VEhfTUFYKTsKKwlzdHJsY2F0KHAsIHBhdGhuYW1lLCBQQVRIX01BWCk7CiAKLSAgICBlcnJvciA9
IHN0YXQocCwgc3QpOworCWVycm9yID0gc3RhdChwLCBzdCk7CiAKLSAgICB2bl91bmxvY2sodnAp
OwotICAgIGZkcm9wKGZwKTsKKwl2bl91bmxvY2sodnApOworCWZkcm9wKGZwKTsKIAotICAgIHJl
dHVybiBlcnJvcjsKKwlyZXR1cm4gZXJyb3I7CiB9CiAKIExGUzY0KF9fZnhzdGF0YXQpOwpAQCAt
NjMxLDI5ICs2MzEsMjkgQEAgTEZTNjQoX19meHN0YXRhdCk7CiBleHRlcm4gIkMiCiBpbnQgZnN0
YXRhdChpbnQgZGlyZmQsIGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBzdGF0ICpzdCwgaW50IGZs
YWdzKQogewotICAgIHJldHVybiBfX2Z4c3RhdGF0KDEsIGRpcmZkLCBwYXRoLCBzdCwgZmxhZ3Mp
OworCXJldHVybiBfX2Z4c3RhdGF0KDEsIGRpcmZkLCBwYXRoLCBzdCwgZmxhZ3MpOwogfQogCiBM
RlM2NChmc3RhdGF0KTsKIAogZXh0ZXJuICJDIiBpbnQgZmxvY2soaW50IGZkLCBpbnQgb3BlcmF0
aW9uKQogewotICAgIGlmICghZmlsZXJlZl9mcm9tX2ZkKGZkKSkgewotICAgICAgICByZXR1cm4g
bGliY19lcnJvcihFQkFERik7Ci0gICAgfQorCWlmICghZmlsZXJlZl9mcm9tX2ZkKGZkKSkgewor
CQlyZXR1cm4gbGliY19lcnJvcihFQkFERik7CisJfQogCi0gICAgc3dpdGNoIChvcGVyYXRpb24p
IHsKLSAgICBjYXNlIExPQ0tfU0g6Ci0gICAgY2FzZSBMT0NLX1NIIHwgTE9DS19OQjoKLSAgICBj
YXNlIExPQ0tfRVg6Ci0gICAgY2FzZSBMT0NLX0VYIHwgTE9DS19OQjoKLSAgICBjYXNlIExPQ0tf
VU46Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBsaWJjX2Vy
cm9yKEVJTlZBTCk7Ci0gICAgfQorCXN3aXRjaCAob3BlcmF0aW9uKSB7CisJY2FzZSBMT0NLX1NI
OgorCWNhc2UgTE9DS19TSCB8IExPQ0tfTkI6CisJY2FzZSBMT0NLX0VYOgorCWNhc2UgTE9DS19F
WCB8IExPQ0tfTkI6CisJY2FzZSBMT0NLX1VOOgorCQlicmVhazsKKwlkZWZhdWx0OgorCQlyZXR1
cm4gbGliY19lcnJvcihFSU5WQUwpOworCX0KIAotICAgIHJldHVybiAwOworCXJldHVybiAwOwog
fQogCiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19yZWFkZGlyLCAiJWQgJXAiLCBpbnQsIGRpcmVudCop
OwpAQCAtNjYyLDE1MiArNjYyLDE1MiBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19yZWFkZGlyX2Vy
ciwgIiVkIiwgaW50KTsKIAogc3RydWN0IF9fZGlyc3RyZWFtCiB7Ci0gICAgaW50IGZkOworCWlu
dCBmZDsKIH07CiAKIERJUiAqb3BlbmRpcihjb25zdCBjaGFyICpwYXRoKQogewotICAgIERJUiAq
ZGlyID0gbmV3IERJUjsKKwlESVIgKmRpciA9IG5ldyBESVI7CiAKLSAgICBpZiAoIWRpcikKLSAg
ICAgICAgcmV0dXJuIGxpYmNfZXJyb3JfcHRyPERJUj4oRU5PTUVNKTsKKwlpZiAoIWRpcikKKwkJ
cmV0dXJuIGxpYmNfZXJyb3JfcHRyPERJUj4oRU5PTUVNKTsKIAotICAgIGRpci0+ZmQgPSBvcGVu
KHBhdGgsIE9fUkRPTkxZKTsKLSAgICBpZiAoZGlyLT5mZCA8IDApIHsKLSAgICAgICAgZGVsZXRl
IGRpcjsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotICAgIHJldHVybiBkaXI7CisJ
ZGlyLT5mZCA9IG9wZW4ocGF0aCwgT19SRE9OTFkpOworCWlmIChkaXItPmZkIDwgMCkgeworCQlk
ZWxldGUgZGlyOworCQlyZXR1cm4gbnVsbHB0cjsKKwl9CisJcmV0dXJuIGRpcjsKIH0KIAogRElS
ICpmZG9wZW5kaXIoaW50IGZkKQogewotICAgIERJUiAqZGlyOwotICAgIHN0cnVjdCBzdGF0IHN0
OwotICAgIGlmIChmc3RhdChmZCwgJnN0KSA8IDApIHsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgfQotICAgIGlmICghU19JU0RJUihzdC5zdF9tb2RlKSkgewotICAgICAgICBlcnJubyA9
IEVOT1RESVI7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLSAgICBkaXIgPSBuZXcg
RElSOwotICAgIGRpci0+ZmQgPSBmZDsKLSAgICByZXR1cm4gZGlyOworCURJUiAqZGlyOworCXN0
cnVjdCBzdGF0IHN0OworCWlmIChmc3RhdChmZCwgJnN0KSA8IDApIHsKKwkJcmV0dXJuIG51bGxw
dHI7CisJfQorCWlmICghU19JU0RJUihzdC5zdF9tb2RlKSkgeworCQllcnJubyA9IEVOT1RESVI7
CisJCXJldHVybiBudWxscHRyOworCX0KKwlkaXIgPSBuZXcgRElSOworCWRpci0+ZmQgPSBmZDsK
KwlyZXR1cm4gZGlyOwogCiB9CiAKIGludCBkaXJmZChESVIgKmRpcnApCiB7Ci0gICAgaWYgKCFk
aXJwKSB7Ci0gICAgICAgIHJldHVybiBsaWJjX2Vycm9yKEVJTlZBTCk7Ci0gICAgfQorCWlmICgh
ZGlycCkgeworCQlyZXR1cm4gbGliY19lcnJvcihFSU5WQUwpOworCX0KIAotICAgIHJldHVybiBk
aXJwLT5mZDsKKwlyZXR1cm4gZGlycC0+ZmQ7CiB9CiAKIGludCBjbG9zZWRpcihESVIgKmRpcikK
IHsKLSAgICBjbG9zZShkaXItPmZkKTsKLSAgICBkZWxldGUgZGlyOwotICAgIHJldHVybiAwOwor
CWNsb3NlKGRpci0+ZmQpOworCWRlbGV0ZSBkaXI7CisJcmV0dXJuIDA7CiB9CiAKIHN0cnVjdCBk
aXJlbnQgKnJlYWRkaXIoRElSICpkaXIpCiB7Ci0gICAgc3RhdGljIF9fdGhyZWFkIHN0cnVjdCBk
aXJlbnQgZW50cnksICpyZXN1bHQ7Ci0gICAgaW50IHJldDsKKwlzdGF0aWMgX190aHJlYWQgc3Ry
dWN0IGRpcmVudCBlbnRyeSwgKnJlc3VsdDsKKwlpbnQgcmV0OwogCi0gICAgcmV0ID0gcmVhZGRp
cl9yKGRpciwgJmVudHJ5LCAmcmVzdWx0KTsKLSAgICBpZiAocmV0KQotICAgICAgICByZXR1cm4g
bGliY19lcnJvcl9wdHI8c3RydWN0IGRpcmVudD4ocmV0KTsKKwlyZXQgPSByZWFkZGlyX3IoZGly
LCAmZW50cnksICZyZXN1bHQpOworCWlmIChyZXQpCisJCXJldHVybiBsaWJjX2Vycm9yX3B0cjxz
dHJ1Y3QgZGlyZW50PihyZXQpOwogCi0gICAgZXJybm8gPSAwOwotICAgIHJldHVybiByZXN1bHQ7
CisJZXJybm8gPSAwOworCXJldHVybiByZXN1bHQ7CiB9CiAKIGludCByZWFkZGlyX3IoRElSICpk
aXIsIHN0cnVjdCBkaXJlbnQgKmVudHJ5LCBzdHJ1Y3QgZGlyZW50ICoqcmVzdWx0KQogewotICAg
IGludCBlcnJvcjsKLSAgICBzdHJ1Y3QgZmlsZSAqZnA7Ci0KLSAgICB0cmFjZV92ZnNfcmVhZGRp
cihkaXItPmZkLCBlbnRyeSk7Ci0gICAgZXJyb3IgPSBmZ2V0KGRpci0+ZmQsICZmcCk7Ci0gICAg
aWYgKGVycm9yKSB7Ci0gICAgICAgIHRyYWNlX3Zmc19yZWFkZGlyX2VycihlcnJvcik7Ci0gICAg
fSBlbHNlIHsKLSAgICAgICAgZXJyb3IgPSBzeXNfcmVhZGRpcihmcCwgZW50cnkpOwotICAgICAg
ICBmZHJvcChmcCk7Ci0gICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgdHJhY2VfdmZz
X3JlYWRkaXJfZXJyKGVycm9yKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHRyYWNl
X3Zmc19yZWFkZGlyX3JldCgpOwotICAgICAgICB9Ci0gICAgfQotICAgIC8vIE91ciBkaXJlbnQg
aGFzIChsaWtlIExpbnV4KSBhIGRfcmVjbGVuIGZpZWxkLCBidXQgYSBjb25zdGFudCBzaXplLgot
ICAgIGVudHJ5LT5kX3JlY2xlbiA9IHNpemVvZigqZW50cnkpOwotCi0gICAgaWYgKGVycm9yKSB7
Ci0gICAgICAgICpyZXN1bHQgPSBudWxscHRyOwotICAgIH0gZWxzZSB7Ci0gICAgICAgICpyZXN1
bHQgPSBlbnRyeTsKLSAgICB9Ci0gICAgcmV0dXJuIGVycm9yID09IEVOT0VOVCA/IDAgOiBlcnJv
cjsKKwlpbnQgZXJyb3I7CisJc3RydWN0IGZpbGUgKmZwOworCisJdHJhY2VfdmZzX3JlYWRkaXIo
ZGlyLT5mZCwgZW50cnkpOworCWVycm9yID0gZmdldChkaXItPmZkLCAmZnApOworCWlmIChlcnJv
cikgeworCQl0cmFjZV92ZnNfcmVhZGRpcl9lcnIoZXJyb3IpOworCX0gZWxzZSB7CisJCWVycm9y
ID0gc3lzX3JlYWRkaXIoZnAsIGVudHJ5KTsKKwkJZmRyb3AoZnApOworCQlpZiAoZXJyb3IpIHsK
KwkJCXRyYWNlX3Zmc19yZWFkZGlyX2VycihlcnJvcik7CisJCX0gZWxzZSB7CisJCQl0cmFjZV92
ZnNfcmVhZGRpcl9yZXQoKTsKKwkJfQorCX0KKwkvLyBPdXIgZGlyZW50IGhhcyAobGlrZSBMaW51
eCkgYSBkX3JlY2xlbiBmaWVsZCwgYnV0IGEgY29uc3RhbnQgc2l6ZS4KKwllbnRyeS0+ZF9yZWNs
ZW4gPSBzaXplb2YoKmVudHJ5KTsKKworCWlmIChlcnJvcikgeworCQkqcmVzdWx0ID0gbnVsbHB0
cjsKKwl9IGVsc2UgeworCQkqcmVzdWx0ID0gZW50cnk7CisJfQorCXJldHVybiBlcnJvciA9PSBF
Tk9FTlQgPyAwIDogZXJyb3I7CiB9CiAKIC8vIEZJWE1FOiBpbiA2NGJpdCBkaXJlbnQ2NCBhbmQg
ZGlyZW50IGFyZSBpZGVudGljYWwsIHNvIGl0J3Mgc2FmZSB0byBhbGlhcwogI3VuZGVmIHJlYWRk
aXI2NF9yCiBleHRlcm4gIkMiIGludCByZWFkZGlyNjRfcihESVIgKmRpciwgc3RydWN0IGRpcmVu
dDY0ICplbnRyeSwKLSAgICAgICAgc3RydWN0IGRpcmVudDY0ICoqcmVzdWx0KQotICAgICAgICBf
X2F0dHJpYnV0ZV9fKChhbGlhcygicmVhZGRpcl9yIikpKTsKKwkJc3RydWN0IGRpcmVudDY0ICoq
cmVzdWx0KQorCQlfX2F0dHJpYnV0ZV9fKChhbGlhcygicmVhZGRpcl9yIikpKTsKIAogI3VuZGVm
IHJlYWRkaXI2NAogZXh0ZXJuICJDIiBzdHJ1Y3QgZGlyZW50ICpyZWFkZGlyNjQoRElSICpkaXIp
IF9fYXR0cmlidXRlX18oKGFsaWFzKCJyZWFkZGlyIikpKTsKIAogdm9pZCByZXdpbmRkaXIoRElS
ICpkaXJwKQogewotICAgIHN0cnVjdCBmaWxlICpmcDsKKwlzdHJ1Y3QgZmlsZSAqZnA7CiAKLSAg
ICBhdXRvIGVycm9yID0gZmdldChkaXJwLT5mZCwgJmZwKTsKLSAgICBpZiAoZXJyb3IpIHsKLSAg
ICAgICAgLy8gUE9TSVggc3BlY2lmaWVzIHRoYXQgd2hhdCByZXdpbmRkaXIoKSBkb2VzIGluIHRo
ZSBjYXNlIG9mIGVycm9yCi0gICAgICAgIC8vIGlzIHVuZGVmaW5lZC4uLgotICAgICAgICByZXR1
cm47Ci0gICAgfQorCWF1dG8gZXJyb3IgPSBmZ2V0KGRpcnAtPmZkLCAmZnApOworCWlmIChlcnJv
cikgeworCQkvLyBQT1NJWCBzcGVjaWZpZXMgdGhhdCB3aGF0IHJld2luZGRpcigpIGRvZXMgaW4g
dGhlIGNhc2Ugb2YgZXJyb3IKKwkJLy8gaXMgdW5kZWZpbmVkLi4uCisJCXJldHVybjsKKwl9CiAK
LSAgICBzeXNfcmV3aW5kZGlyKGZwKTsKLSAgICAvLyBBZ2FpbiwgZXJyb3IgY29kZSBmcm9tIHN5
c19yZXdpbmRkaXIoKSBpcyBpZ25vcmVkLgotICAgIGZkcm9wKGZwKTsKKwlzeXNfcmV3aW5kZGly
KGZwKTsKKwkvLyBBZ2FpbiwgZXJyb3IgY29kZSBmcm9tIHN5c19yZXdpbmRkaXIoKSBpcyBpZ25v
cmVkLgorCWZkcm9wKGZwKTsKIH0KIAogbG9uZyB0ZWxsZGlyKERJUiAqZGlycCkKIHsKLSAgICBz
dHJ1Y3QgZmlsZSAqZnA7Ci0gICAgaW50IGVycm9yID0gZmdldChkaXJwLT5mZCwgJmZwKTsKLSAg
ICBpZiAoZXJyb3IpIHsKLSAgICAgICAgcmV0dXJuIGxpYmNfZXJyb3IoZXJyb3IpOwotICAgIH0K
KwlzdHJ1Y3QgZmlsZSAqZnA7CisJaW50IGVycm9yID0gZmdldChkaXJwLT5mZCwgJmZwKTsKKwlp
ZiAoZXJyb3IpIHsKKwkJcmV0dXJuIGxpYmNfZXJyb3IoZXJyb3IpOworCX0KIAotICAgIGxvbmcg
bG9jOwotICAgIGVycm9yID0gc3lzX3RlbGxkaXIoZnAsICZsb2MpOwotICAgIGZkcm9wKGZwKTsK
LSAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgcmV0dXJuIGxpYmNfZXJyb3IoZXJyb3IpOwotICAg
IH0KLSAgICByZXR1cm4gbG9jOworCWxvbmcgbG9jOworCWVycm9yID0gc3lzX3RlbGxkaXIoZnAs
ICZsb2MpOworCWZkcm9wKGZwKTsKKwlpZiAoZXJyb3IpIHsKKwkJcmV0dXJuIGxpYmNfZXJyb3Io
ZXJyb3IpOworCX0KKwlyZXR1cm4gbG9jOwogfQogCiB2b2lkIHNlZWtkaXIoRElSICpkaXJwLCBs
b25nIGxvYykKIHsKLSAgICBzdHJ1Y3QgZmlsZSAqZnA7Ci0gICAgaW50IGVycm9yID0gZmdldChk
aXJwLT5mZCwgJmZwKTsKLSAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgLy8gUE9TSVggc3BlY2lm
aWVzIHNlZWtkaXIoKSBjYW5ub3QgcmV0dXJuIGVycm9ycy4KLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBzeXNfc2Vla2RpcihmcCwgbG9jKTsKLSAgICAvLyBBZ2FpbiwgZXJyb3IgY29kZSBm
cm9tIHN5c19zZWVrZGlyKCkgaXMgaWdub3JlZC4KLSAgICBmZHJvcChmcCk7CisJc3RydWN0IGZp
bGUgKmZwOworCWludCBlcnJvciA9IGZnZXQoZGlycC0+ZmQsICZmcCk7CisJaWYgKGVycm9yKSB7
CisJCS8vIFBPU0lYIHNwZWNpZmllcyBzZWVrZGlyKCkgY2Fubm90IHJldHVybiBlcnJvcnMuCisJ
CXJldHVybjsKKwl9CisJc3lzX3NlZWtkaXIoZnAsIGxvYyk7CisJLy8gQWdhaW4sIGVycm9yIGNv
ZGUgZnJvbSBzeXNfc2Vla2RpcigpIGlzIGlnbm9yZWQuCisJZmRyb3AoZnApOwogfQogCiBUUkFD
RVBPSU5UKHRyYWNlX3Zmc19ta2RpciwgIlwiJXNcIiAwJTBvIiwgY29uc3QgY2hhciosIG1vZGVf
dCk7CkBAIC04MTcsMjUgKzgxNywyNSBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19ta2Rpcl9lcnIs
ICIlZCIsIGludCk7CiBpbnQKIG1rZGlyKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBtb2RlX3QgbW9k
ZSkKIHsKLSAgICBzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKLSAgICBjaGFyIHBhdGhbUEFU
SF9NQVhdOwotICAgIGludCBlcnJvcjsKKwlzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKKwlj
aGFyIHBhdGhbUEFUSF9NQVhdOworCWludCBlcnJvcjsKIAotICAgIG1vZGUgPSBhcHBseV91bWFz
ayhtb2RlKTsKKwltb2RlID0gYXBwbHlfdW1hc2sobW9kZSk7CiAKLSAgICB0cmFjZV92ZnNfbWtk
aXIocGF0aG5hbWUsIG1vZGUpOwotICAgIGlmICgoZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5h
bWUsIFZXUklURSwgcGF0aCkpICE9IDApCi0gICAgICAgIGdvdG8gb3V0X2Vycm5vOworCXRyYWNl
X3Zmc19ta2RpcihwYXRobmFtZSwgbW9kZSk7CisJaWYgKChlcnJvciA9IHRhc2tfY29udih0LCBw
YXRobmFtZSwgVldSSVRFLCBwYXRoKSkgIT0gMCkKKwkJZ290byBvdXRfZXJybm87CiAKLSAgICBl
cnJvciA9IHN5c19ta2RpcihwYXRoLCBtb2RlKTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIGdv
dG8gb3V0X2Vycm5vOwotICAgIHRyYWNlX3Zmc19ta2Rpcl9yZXQoKTsKLSAgICByZXR1cm4gMDsK
LSAgICBvdXRfZXJybm86Ci0gICAgdHJhY2VfdmZzX21rZGlyX2VycihlcnJvcik7Ci0gICAgZXJy
bm8gPSBlcnJvcjsKLSAgICByZXR1cm4gLTE7CisJZXJyb3IgPSBzeXNfbWtkaXIocGF0aCwgbW9k
ZSk7CisJaWYgKGVycm9yKQorCQlnb3RvIG91dF9lcnJubzsKKwl0cmFjZV92ZnNfbWtkaXJfcmV0
KCk7CisJcmV0dXJuIDA7CisJb3V0X2Vycm5vOgorCXRyYWNlX3Zmc19ta2Rpcl9lcnIoZXJyb3Ip
OworCWVycm5vID0gZXJyb3I7CisJcmV0dXJuIC0xOwogfQogCiBUUkFDRVBPSU5UKHRyYWNlX3Zm
c19ybWRpciwgIlwiJXNcIiIsIGNvbnN0IGNoYXIqKTsKQEAgLTg0NCw1MSArODQ0LDUxIEBAIFRS
QUNFUE9JTlQodHJhY2VfdmZzX3JtZGlyX2VyciwgIiVkIiwgaW50KTsKIAogaW50IHJtZGlyKGNv
bnN0IGNoYXIgKnBhdGhuYW1lKQogewotICAgIHN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOwot
ICAgIGNoYXIgcGF0aFtQQVRIX01BWF07Ci0gICAgaW50IGVycm9yOworCXN0cnVjdCB0YXNrICp0
ID0gbWFpbl90YXNrOworCWNoYXIgcGF0aFtQQVRIX01BWF07CisJaW50IGVycm9yOwogCi0gICAg
dHJhY2VfdmZzX3JtZGlyKHBhdGhuYW1lKTsKLSAgICBlcnJvciA9IEVOT0VOVDsKLSAgICBpZiAo
cGF0aG5hbWUgPT0gbnVsbHB0cikKLSAgICAgICAgZ290byBvdXRfZXJybm87Ci0gICAgaWYgKChl
cnJvciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwgVldSSVRFLCBwYXRoKSkgIT0gMCkKLSAgICAg
ICAgZ290byBvdXRfZXJybm87CisJdHJhY2VfdmZzX3JtZGlyKHBhdGhuYW1lKTsKKwllcnJvciA9
IEVOT0VOVDsKKwlpZiAocGF0aG5hbWUgPT0gbnVsbHB0cikKKwkJZ290byBvdXRfZXJybm87CisJ
aWYgKChlcnJvciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwgVldSSVRFLCBwYXRoKSkgIT0gMCkK
KwkJZ290byBvdXRfZXJybm87CiAKLSAgICBlcnJvciA9IHN5c19ybWRpcihwYXRoKTsKLSAgICBp
ZiAoZXJyb3IpCi0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwotICAgIHRyYWNlX3Zmc19ybWRpcl9y
ZXQoKTsKLSAgICByZXR1cm4gMDsKLSAgICBvdXRfZXJybm86Ci0gICAgdHJhY2VfdmZzX3JtZGly
X2VycihlcnJvcik7Ci0gICAgZXJybm8gPSBlcnJvcjsKLSAgICByZXR1cm4gLTE7CisJZXJyb3Ig
PSBzeXNfcm1kaXIocGF0aCk7CisJaWYgKGVycm9yKQorCQlnb3RvIG91dF9lcnJubzsKKwl0cmFj
ZV92ZnNfcm1kaXJfcmV0KCk7CisJcmV0dXJuIDA7CisJb3V0X2Vycm5vOgorCXRyYWNlX3Zmc19y
bWRpcl9lcnIoZXJyb3IpOworCWVycm5vID0gZXJyb3I7CisJcmV0dXJuIC0xOwogfQogCiBzdGF0
aWMgdm9pZAogZ2V0X2xhc3RfY29tcG9uZW50KGNvbnN0IGNoYXIgKnBhdGgsIGNoYXIgKmRzdCkK
IHsKLSAgICBpbnQgcG9zID0gc3RybGVuKHBhdGgpIC0gMTsKKwlpbnQgcG9zID0gc3RybGVuKHBh
dGgpIC0gMTsKIAotICAgIHdoaWxlIChwb3MgPj0gMCAmJiBwYXRoW3Bvc10gPT0gJy8nKQotICAg
ICAgICBwb3MtLTsKKwl3aGlsZSAocG9zID49IDAgJiYgcGF0aFtwb3NdID09ICcvJykKKwkJcG9z
LS07CiAKLSAgICBpbnQgY29tcG9uZW50X2VuZCA9IHBvczsKKwlpbnQgY29tcG9uZW50X2VuZCA9
IHBvczsKIAotICAgIHdoaWxlIChwb3MgPj0gMCAmJiBwYXRoW3Bvc10gIT0gJy8nKQotICAgICAg
ICBwb3MtLTsKKwl3aGlsZSAocG9zID49IDAgJiYgcGF0aFtwb3NdICE9ICcvJykKKwkJcG9zLS07
CiAKLSAgICBpbnQgY29tcG9uZW50X3N0YXJ0ID0gcG9zICsgMTsKKwlpbnQgY29tcG9uZW50X3N0
YXJ0ID0gcG9zICsgMTsKIAotICAgIGludCBsZW4gPSBjb21wb25lbnRfZW5kIC0gY29tcG9uZW50
X3N0YXJ0ICsgMTsKLSAgICBtZW1jcHkoZHN0LCBwYXRoICsgY29tcG9uZW50X3N0YXJ0LCBsZW4p
OwotICAgIGRzdFtsZW5dID0gMDsKKwlpbnQgbGVuID0gY29tcG9uZW50X2VuZCAtIGNvbXBvbmVu
dF9zdGFydCArIDE7CisJbWVtY3B5KGRzdCwgcGF0aCArIGNvbXBvbmVudF9zdGFydCwgbGVuKTsK
Kwlkc3RbbGVuXSA9IDA7CiB9CiAKIHN0YXRpYyBib29sIG51bGxfb3JfZW1wdHkoY29uc3QgY2hh
ciAqc3RyKQogewotICAgIHJldHVybiBzdHIgPT0gbnVsbHB0ciB8fCAqc3RyID09ICdcMCc7CisJ
cmV0dXJuIHN0ciA9PSBudWxscHRyIHx8ICpzdHIgPT0gJ1wwJzsKIH0KIAogVFJBQ0VQT0lOVCh0
cmFjZV92ZnNfcmVuYW1lLCAiXCIlc1wiIFwiJXNcIiIsIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFy
Kik7CkBAIC04OTcsNDMgKzg5Nyw0MyBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19yZW5hbWVfZXJy
LCAiJWQiLCBpbnQpOwogCiBpbnQgcmVuYW1lKGNvbnN0IGNoYXIgKm9sZHBhdGgsIGNvbnN0IGNo
YXIgKm5ld3BhdGgpCiB7Ci0gICAgdHJhY2VfdmZzX3JlbmFtZShvbGRwYXRoLCBuZXdwYXRoKTsK
LSAgICBzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKLSAgICBjaGFyIHNyY1tQQVRIX01BWF07
Ci0gICAgY2hhciBkZXN0W1BBVEhfTUFYXTsKLSAgICBpbnQgZXJyb3I7Ci0KLSAgICBlcnJvciA9
IEVOT0VOVDsKLSAgICBpZiAobnVsbF9vcl9lbXB0eShvbGRwYXRoKSB8fCBudWxsX29yX2VtcHR5
KG5ld3BhdGgpKQotICAgICAgICBnb3RvIG91dF9lcnJubzsKLQotICAgIGdldF9sYXN0X2NvbXBv
bmVudChvbGRwYXRoLCBzcmMpOwotICAgIGlmICghc3RyY21wKHNyYywgIi4iKSB8fCAhc3RyY21w
KHNyYywgIi4uIikpIHsKLSAgICAgICAgZXJyb3IgPSBFSU5WQUw7Ci0gICAgICAgIGdvdG8gb3V0
X2Vycm5vOwotICAgIH0KLQotICAgIGdldF9sYXN0X2NvbXBvbmVudChuZXdwYXRoLCBkZXN0KTsK
LSAgICBpZiAoIXN0cmNtcChkZXN0LCAiLiIpIHx8ICFzdHJjbXAoZGVzdCwgIi4uIikpIHsKLSAg
ICAgICAgZXJyb3IgPSBFSU5WQUw7Ci0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwotICAgIH0KLQot
ICAgIGlmICgoZXJyb3IgPSB0YXNrX2NvbnYodCwgb2xkcGF0aCwgVlJFQUQsIHNyYykpICE9IDAp
Ci0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwotCi0gICAgaWYgKChlcnJvciA9IHRhc2tfY29udih0
LCBuZXdwYXRoLCBWV1JJVEUsIGRlc3QpKSAhPSAwKQotICAgICAgICBnb3RvIG91dF9lcnJubzsK
LQotICAgIGVycm9yID0gc3lzX3JlbmFtZShzcmMsIGRlc3QpOwotICAgIGlmIChlcnJvcikKLSAg
ICAgICAgZ290byBvdXRfZXJybm87Ci0gICAgdHJhY2VfdmZzX3JlbmFtZV9yZXQoKTsKLSAgICBy
ZXR1cm4gMDsKLSAgICBvdXRfZXJybm86Ci0gICAgdHJhY2VfdmZzX3JlbmFtZV9lcnIoZXJyb3Ip
OwotICAgIGVycm5vID0gZXJyb3I7Ci0gICAgcmV0dXJuIC0xOworCXRyYWNlX3Zmc19yZW5hbWUo
b2xkcGF0aCwgbmV3cGF0aCk7CisJc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7CisJY2hhciBz
cmNbUEFUSF9NQVhdOworCWNoYXIgZGVzdFtQQVRIX01BWF07CisJaW50IGVycm9yOworCisJZXJy
b3IgPSBFTk9FTlQ7CisJaWYgKG51bGxfb3JfZW1wdHkob2xkcGF0aCkgfHwgbnVsbF9vcl9lbXB0
eShuZXdwYXRoKSkKKwkJZ290byBvdXRfZXJybm87CisKKwlnZXRfbGFzdF9jb21wb25lbnQob2xk
cGF0aCwgc3JjKTsKKwlpZiAoIXN0cmNtcChzcmMsICIuIikgfHwgIXN0cmNtcChzcmMsICIuLiIp
KSB7CisJCWVycm9yID0gRUlOVkFMOworCQlnb3RvIG91dF9lcnJubzsKKwl9CisKKwlnZXRfbGFz
dF9jb21wb25lbnQobmV3cGF0aCwgZGVzdCk7CisJaWYgKCFzdHJjbXAoZGVzdCwgIi4iKSB8fCAh
c3RyY21wKGRlc3QsICIuLiIpKSB7CisJCWVycm9yID0gRUlOVkFMOworCQlnb3RvIG91dF9lcnJu
bzsKKwl9CisKKwlpZiAoKGVycm9yID0gdGFza19jb252KHQsIG9sZHBhdGgsIFZSRUFELCBzcmMp
KSAhPSAwKQorCQlnb3RvIG91dF9lcnJubzsKKworCWlmICgoZXJyb3IgPSB0YXNrX2NvbnYodCwg
bmV3cGF0aCwgVldSSVRFLCBkZXN0KSkgIT0gMCkKKwkJZ290byBvdXRfZXJybm87CisKKwllcnJv
ciA9IHN5c19yZW5hbWUoc3JjLCBkZXN0KTsKKwlpZiAoZXJyb3IpCisJCWdvdG8gb3V0X2Vycm5v
OworCXRyYWNlX3Zmc19yZW5hbWVfcmV0KCk7CisJcmV0dXJuIDA7CisJb3V0X2Vycm5vOgorCXRy
YWNlX3Zmc19yZW5hbWVfZXJyKGVycm9yKTsKKwllcnJubyA9IGVycm9yOworCXJldHVybiAtMTsK
IH0KIAogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfY2hkaXIsICJcIiVzXCIiLCBjb25zdCBjaGFyKik7
CkBAIC05NDEsNTggKzk0MSw1OCBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19jaGRpcl9yZXQsICIi
KTsKIFRSQUNFUE9JTlQodHJhY2VfdmZzX2NoZGlyX2VyciwgIiVkIiwgaW50KTsKIAogc3RhdGlj
IGludCByZXBsYWNlX2N3ZChzdHJ1Y3QgdGFzayAqdCwgc3RydWN0IGZpbGUgKm5ld19jd2RmcCwK
LSAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpmdW5jdGlvbjxpbnQgKHZvaWQpPiBjaGRpcl9m
dW5jKQorCQkJCQkgICBzdGQ6OmZ1bmN0aW9uPGludCAodm9pZCk+IGNoZGlyX2Z1bmMpCiB7Ci0g
ICAgc3RydWN0IGZpbGUgKm9sZCA9IG51bGxwdHI7CisJc3RydWN0IGZpbGUgKm9sZCA9IG51bGxw
dHI7CiAKLSAgICBpZiAoIXQpIHsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQorCWlmICghdCkg
eworCQlyZXR1cm4gMDsKKwl9CiAKLSAgICBpZiAodC0+dF9jd2RmcCkgewotICAgICAgICBvbGQg
PSB0LT50X2N3ZGZwOwotICAgIH0KKwlpZiAodC0+dF9jd2RmcCkgeworCQlvbGQgPSB0LT50X2N3
ZGZwOworCX0KIAotICAgIC8qIERvIHRoZSBhY3R1YWwgY2hkaXIgb3BlcmF0aW9uIGhlcmUgKi8K
LSAgICBpbnQgZXJyb3IgPSBjaGRpcl9mdW5jKCk7CisJLyogRG8gdGhlIGFjdHVhbCBjaGRpciBv
cGVyYXRpb24gaGVyZSAqLworCWludCBlcnJvciA9IGNoZGlyX2Z1bmMoKTsKIAotICAgIHQtPnRf
Y3dkZnAgPSBuZXdfY3dkZnA7Ci0gICAgaWYgKG9sZCkgewotICAgICAgICBmZHJvcChvbGQpOwot
ICAgIH0KKwl0LT50X2N3ZGZwID0gbmV3X2N3ZGZwOworCWlmIChvbGQpIHsKKwkJZmRyb3Aob2xk
KTsKKwl9CiAKLSAgICByZXR1cm4gZXJyb3I7CisJcmV0dXJuIGVycm9yOwogfQogCiBpbnQgY2hk
aXIoY29uc3QgY2hhciAqcGF0aG5hbWUpCiB7Ci0gICAgdHJhY2VfdmZzX2NoZGlyKHBhdGhuYW1l
KTsKLSAgICBzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKLSAgICBjaGFyIHBhdGhbUEFUSF9N
QVhdOwotICAgIHN0cnVjdCBmaWxlICpmcDsKLSAgICBpbnQgZXJyb3I7CisJdHJhY2VfdmZzX2No
ZGlyKHBhdGhuYW1lKTsKKwlzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKKwljaGFyIHBhdGhb
UEFUSF9NQVhdOworCXN0cnVjdCBmaWxlICpmcDsKKwlpbnQgZXJyb3I7CiAKLSAgICBlcnJvciA9
IEVOT0VOVDsKLSAgICBpZiAocGF0aG5hbWUgPT0gbnVsbHB0cikKLSAgICAgICAgZ290byBvdXRf
ZXJybm87CisJZXJyb3IgPSBFTk9FTlQ7CisJaWYgKHBhdGhuYW1lID09IG51bGxwdHIpCisJCWdv
dG8gb3V0X2Vycm5vOwogCi0gICAgaWYgKChlcnJvciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwg
VlJFQUQsIHBhdGgpKSAhPSAwKQotICAgICAgICBnb3RvIG91dF9lcnJubzsKKwlpZiAoKGVycm9y
ID0gdGFza19jb252KHQsIHBhdGhuYW1lLCBWUkVBRCwgcGF0aCkpICE9IDApCisJCWdvdG8gb3V0
X2Vycm5vOwogCi0gICAgLyogQ2hlY2sgaWYgZGlyZWN0b3J5IGV4aXRzICovCi0gICAgZXJyb3Ig
PSBzeXNfb3BlbihwYXRoLCBPX0RJUkVDVE9SWSwgMCwgJmZwKTsKLSAgICBpZiAoZXJyb3IpIHsK
LSAgICAgICAgZ290byBvdXRfZXJybm87Ci0gICAgfQorCS8qIENoZWNrIGlmIGRpcmVjdG9yeSBl
eGl0cyAqLworCWVycm9yID0gc3lzX29wZW4ocGF0aCwgT19ESVJFQ1RPUlksIDAsICZmcCk7CisJ
aWYgKGVycm9yKSB7CisJCWdvdG8gb3V0X2Vycm5vOworCX0KIAotICAgIHJlcGxhY2VfY3dkKHQs
IGZwLCBbJl0oKSB7IHN0cmxjcHkodC0+dF9jd2QsIHBhdGgsIHNpemVvZih0LT50X2N3ZCkpOyBy
ZXR1cm4gMDsgfSk7CisJcmVwbGFjZV9jd2QodCwgZnAsIFsmXSgpIHsgc3RybGNweSh0LT50X2N3
ZCwgcGF0aCwgc2l6ZW9mKHQtPnRfY3dkKSk7IHJldHVybiAwOyB9KTsKIAotICAgIHRyYWNlX3Zm
c19jaGRpcl9yZXQoKTsKLSAgICByZXR1cm4gMDsKLSAgICBvdXRfZXJybm86Ci0gICAgZXJybm8g
PSBlcnJvcjsKLSAgICB0cmFjZV92ZnNfY2hkaXJfZXJyKGVycm5vKTsKLSAgICByZXR1cm4gLTE7
CisJdHJhY2VfdmZzX2NoZGlyX3JldCgpOworCXJldHVybiAwOworCW91dF9lcnJubzoKKwllcnJu
byA9IGVycm9yOworCXRyYWNlX3Zmc19jaGRpcl9lcnIoZXJybm8pOworCXJldHVybiAtMTsKIH0K
IAogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZmNoZGlyLCAiJWQiLCBpbnQpOwpAQCAtMTAwMSwyOCAr
MTAwMSwyOCBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19mY2hkaXJfZXJyLCAiJWQiLCBpbnQpOwog
CiBpbnQgZmNoZGlyKGludCBmZCkKIHsKLSAgICB0cmFjZV92ZnNfZmNoZGlyKGZkKTsKLSAgICBz
dHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKLSAgICBzdHJ1Y3QgZmlsZSAqZnA7Ci0gICAgaW50
IGVycm9yOworCXRyYWNlX3Zmc19mY2hkaXIoZmQpOworCXN0cnVjdCB0YXNrICp0ID0gbWFpbl90
YXNrOworCXN0cnVjdCBmaWxlICpmcDsKKwlpbnQgZXJyb3I7CiAKLSAgICBlcnJvciA9IGZnZXQo
ZmQsICZmcCk7Ci0gICAgaWYgKGVycm9yKQotICAgICAgICBnb3RvIG91dF9lcnJubzsKKwllcnJv
ciA9IGZnZXQoZmQsICZmcCk7CisJaWYgKGVycm9yKQorCQlnb3RvIG91dF9lcnJubzsKIAotICAg
IGVycm9yID0gcmVwbGFjZV9jd2QodCwgZnAsIFsmXSgpIHsgcmV0dXJuIHN5c19mY2hkaXIoZnAs
IHQtPnRfY3dkKTsgfSk7Ci0gICAgaWYgKGVycm9yKSB7Ci0gICAgICAgIGZkcm9wKGZwKTsKLSAg
ICAgICAgZ290byBvdXRfZXJybm87Ci0gICAgfQorCWVycm9yID0gcmVwbGFjZV9jd2QodCwgZnAs
IFsmXSgpIHsgcmV0dXJuIHN5c19mY2hkaXIoZnAsIHQtPnRfY3dkKTsgfSk7CisJaWYgKGVycm9y
KSB7CisJCWZkcm9wKGZwKTsKKwkJZ290byBvdXRfZXJybm87CisJfQogCi0gICAgdHJhY2VfdmZz
X2ZjaGRpcl9yZXQoKTsKLSAgICByZXR1cm4gMDsKKwl0cmFjZV92ZnNfZmNoZGlyX3JldCgpOwor
CXJldHVybiAwOwogCi0gICAgb3V0X2Vycm5vOgotICAgIHRyYWNlX3Zmc19mY2hkaXJfZXJyKGVy
cm9yKTsKLSAgICBlcnJubyA9IGVycm9yOwotICAgIHJldHVybiAtMTsKKwlvdXRfZXJybm86CisJ
dHJhY2VfdmZzX2ZjaGRpcl9lcnIoZXJyb3IpOworCWVycm5vID0gZXJyb3I7CisJcmV0dXJuIC0x
OwogfQogCiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19saW5rLCAiXCIlc1wiIFwiJXNcIiIsIGNvbnN0
IGNoYXIqLCBjb25zdCBjaGFyKik7CkBAIC0xMDMxLDMwICsxMDMxLDMwIEBAIFRSQUNFUE9JTlQo
dHJhY2VfdmZzX2xpbmtfZXJyLCAiJWQiLCBpbnQpOwogCiBpbnQgbGluayhjb25zdCBjaGFyICpv
bGRwYXRoLCBjb25zdCBjaGFyICpuZXdwYXRoKQogewotICAgIHN0cnVjdCB0YXNrICp0ID0gbWFp
bl90YXNrOwotICAgIGNoYXIgcGF0aDFbUEFUSF9NQVhdOwotICAgIGNoYXIgcGF0aDJbUEFUSF9N
QVhdOwotICAgIGludCBlcnJvcjsKKwlzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKKwljaGFy
IHBhdGgxW1BBVEhfTUFYXTsKKwljaGFyIHBhdGgyW1BBVEhfTUFYXTsKKwlpbnQgZXJyb3I7CiAK
LSAgICB0cmFjZV92ZnNfbGluayhvbGRwYXRoLCBuZXdwYXRoKTsKKwl0cmFjZV92ZnNfbGluayhv
bGRwYXRoLCBuZXdwYXRoKTsKIAotICAgIGVycm9yID0gRU5PRU5UOwotICAgIGlmIChvbGRwYXRo
ID09IG51bGxwdHIgfHwgbmV3cGF0aCA9PSBudWxscHRyKQotICAgICAgICBnb3RvIG91dF9lcnJu
bzsKLSAgICBpZiAoKGVycm9yID0gdGFza19jb252KHQsIG9sZHBhdGgsIFZXUklURSwgcGF0aDEp
KSAhPSAwKQotICAgICAgICBnb3RvIG91dF9lcnJubzsKLSAgICBpZiAoKGVycm9yID0gdGFza19j
b252KHQsIG5ld3BhdGgsIFZXUklURSwgcGF0aDIpKSAhPSAwKQotICAgICAgICBnb3RvIG91dF9l
cnJubzsKKwllcnJvciA9IEVOT0VOVDsKKwlpZiAob2xkcGF0aCA9PSBudWxscHRyIHx8IG5ld3Bh
dGggPT0gbnVsbHB0cikKKwkJZ290byBvdXRfZXJybm87CisJaWYgKChlcnJvciA9IHRhc2tfY29u
dih0LCBvbGRwYXRoLCBWV1JJVEUsIHBhdGgxKSkgIT0gMCkKKwkJZ290byBvdXRfZXJybm87CisJ
aWYgKChlcnJvciA9IHRhc2tfY29udih0LCBuZXdwYXRoLCBWV1JJVEUsIHBhdGgyKSkgIT0gMCkK
KwkJZ290byBvdXRfZXJybm87CiAKLSAgICBlcnJvciA9IHN5c19saW5rKHBhdGgxLCBwYXRoMik7
Ci0gICAgaWYgKGVycm9yKQotICAgICAgICBnb3RvIG91dF9lcnJubzsKLSAgICB0cmFjZV92ZnNf
bGlua19yZXQoKTsKLSAgICByZXR1cm4gMDsKLSAgICBvdXRfZXJybm86Ci0gICAgdHJhY2VfdmZz
X2xpbmtfZXJyKGVycm9yKTsKLSAgICBlcnJubyA9IGVycm9yOwotICAgIHJldHVybiAtMTsKKwll
cnJvciA9IHN5c19saW5rKHBhdGgxLCBwYXRoMik7CisJaWYgKGVycm9yKQorCQlnb3RvIG91dF9l
cnJubzsKKwl0cmFjZV92ZnNfbGlua19yZXQoKTsKKwlyZXR1cm4gMDsKKwlvdXRfZXJybm86CisJ
dHJhY2VfdmZzX2xpbmtfZXJyKGVycm9yKTsKKwllcnJubyA9IGVycm9yOworCXJldHVybiAtMTsK
IH0KIAogCkBAIC0xMDY0LDI2ICsxMDY0LDI2IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX3N5bWxp
bmtfZXJyLCAiZXJybm89JWQiLCBpbnQpOwogCiBpbnQgc3ltbGluayhjb25zdCBjaGFyICpvbGRw
YXRoLCBjb25zdCBjaGFyICpuZXdwYXRoKQogewotICAgIGludCBlcnJvcjsKKwlpbnQgZXJyb3I7
CiAKLSAgICB0cmFjZV92ZnNfc3ltbGluayhvbGRwYXRoLCBuZXdwYXRoKTsKKwl0cmFjZV92ZnNf
c3ltbGluayhvbGRwYXRoLCBuZXdwYXRoKTsKIAotICAgIGVycm9yID0gRU5PRU5UOwotICAgIGlm
IChvbGRwYXRoID09IG51bGxwdHIgfHwgbmV3cGF0aCA9PSBudWxscHRyKSB7Ci0gICAgICAgIGVy
cm5vID0gRU5PRU5UOwotICAgICAgICB0cmFjZV92ZnNfc3ltbGlua19lcnIoZXJyb3IpOwotICAg
ICAgICByZXR1cm4gKC0xKTsKLSAgICB9CisJZXJyb3IgPSBFTk9FTlQ7CisJaWYgKG9sZHBhdGgg
PT0gbnVsbHB0ciB8fCBuZXdwYXRoID09IG51bGxwdHIpIHsKKwkJZXJybm8gPSBFTk9FTlQ7CisJ
CXRyYWNlX3Zmc19zeW1saW5rX2VycihlcnJvcik7CisJCXJldHVybiAoLTEpOworCX0KIAotICAg
IGVycm9yID0gc3lzX3N5bWxpbmsob2xkcGF0aCwgbmV3cGF0aCk7Ci0gICAgaWYgKGVycm9yKSB7
Ci0gICAgICAgIGVycm5vID0gZXJyb3I7Ci0gICAgICAgIHRyYWNlX3Zmc19zeW1saW5rX2Vycihl
cnJvcik7Ci0gICAgICAgIHJldHVybiAoLTEpOwotICAgIH0KKwllcnJvciA9IHN5c19zeW1saW5r
KG9sZHBhdGgsIG5ld3BhdGgpOworCWlmIChlcnJvcikgeworCQllcnJubyA9IGVycm9yOworCQl0
cmFjZV92ZnNfc3ltbGlua19lcnIoZXJyb3IpOworCQlyZXR1cm4gKC0xKTsKKwl9CiAKLSAgICB0
cmFjZV92ZnNfc3ltbGlua19yZXQoKTsKLSAgICByZXR1cm4gMDsKKwl0cmFjZV92ZnNfc3ltbGlu
a19yZXQoKTsKKwlyZXR1cm4gMDsKIH0KIAogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfdW5saW5rLCAi
XCIlc1wiIiwgY29uc3QgY2hhciopOwpAQCAtMTA5MiwyNiArMTA5MiwyNiBAQCBUUkFDRVBPSU5U
KHRyYWNlX3Zmc191bmxpbmtfZXJyLCAiJWQiLCBpbnQpOwogCiBpbnQgdW5saW5rKGNvbnN0IGNo
YXIgKnBhdGhuYW1lKQogewotICAgIHRyYWNlX3Zmc191bmxpbmsocGF0aG5hbWUpOwotICAgIHN0
cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOwotICAgIGNoYXIgcGF0aFtQQVRIX01BWF07Ci0gICAg
aW50IGVycm9yOworCXRyYWNlX3Zmc191bmxpbmsocGF0aG5hbWUpOworCXN0cnVjdCB0YXNrICp0
ID0gbWFpbl90YXNrOworCWNoYXIgcGF0aFtQQVRIX01BWF07CisJaW50IGVycm9yOwogCi0gICAg
ZXJyb3IgPSBFTk9FTlQ7Ci0gICAgaWYgKHBhdGhuYW1lID09IG51bGxwdHIpCi0gICAgICAgIGdv
dG8gb3V0X2Vycm5vOwotICAgIGlmICgoZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5hbWUsIFZX
UklURSwgcGF0aCkpICE9IDApCi0gICAgICAgIGdvdG8gb3V0X2Vycm5vOworCWVycm9yID0gRU5P
RU5UOworCWlmIChwYXRobmFtZSA9PSBudWxscHRyKQorCQlnb3RvIG91dF9lcnJubzsKKwlpZiAo
KGVycm9yID0gdGFza19jb252KHQsIHBhdGhuYW1lLCBWV1JJVEUsIHBhdGgpKSAhPSAwKQorCQln
b3RvIG91dF9lcnJubzsKIAotICAgIGVycm9yID0gc3lzX3VubGluayhwYXRoKTsKLSAgICBpZiAo
ZXJyb3IpCi0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwotICAgIHRyYWNlX3Zmc191bmxpbmtfcmV0
KCk7Ci0gICAgcmV0dXJuIDA7Ci0gICAgb3V0X2Vycm5vOgotICAgIHRyYWNlX3Zmc191bmxpbmtf
ZXJyKGVycm9yKTsKLSAgICBlcnJubyA9IGVycm9yOwotICAgIHJldHVybiAtMTsKKwllcnJvciA9
IHN5c191bmxpbmsocGF0aCk7CisJaWYgKGVycm9yKQorCQlnb3RvIG91dF9lcnJubzsKKwl0cmFj
ZV92ZnNfdW5saW5rX3JldCgpOworCXJldHVybiAwOworCW91dF9lcnJubzoKKwl0cmFjZV92ZnNf
dW5saW5rX2VycihlcnJvcik7CisJZXJybm8gPSBlcnJvcjsKKwlyZXR1cm4gLTE7CiB9CiAKIFRS
QUNFUE9JTlQodHJhY2VfdmZzX3N0YXQsICJcIiVzXCIgJXAiLCBjb25zdCBjaGFyKiwgc3RydWN0
IHN0YXQqKTsKQEAgLTExMjEsMzMgKzExMjEsMzMgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfc3Rh
dF9lcnIsICIlZCIsIGludCk7CiBleHRlcm4gIkMiCiBpbnQgX194c3RhdChpbnQgdmVyLCBjb25z
dCBjaGFyICpwYXRobmFtZSwgc3RydWN0IHN0YXQgKnN0KQogewotICAgIHN0cnVjdCB0YXNrICp0
ID0gbWFpbl90YXNrOwotICAgIGNoYXIgcGF0aFtQQVRIX01BWF07Ci0gICAgaW50IGVycm9yOwor
CXN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOworCWNoYXIgcGF0aFtQQVRIX01BWF07CisJaW50
IGVycm9yOwogCi0gICAgdHJhY2VfdmZzX3N0YXQocGF0aG5hbWUsIHN0KTsKKwl0cmFjZV92ZnNf
c3RhdChwYXRobmFtZSwgc3QpOwogCi0gICAgZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5hbWUs
IDAsIHBhdGgpOwotICAgIGlmIChlcnJvcikKLSAgICAgICAgZ290byBvdXRfZXJybm87CisJZXJy
b3IgPSB0YXNrX2NvbnYodCwgcGF0aG5hbWUsIDAsIHBhdGgpOworCWlmIChlcnJvcikKKwkJZ290
byBvdXRfZXJybm87CiAKLSAgICBlcnJvciA9IHN5c19zdGF0KHBhdGgsIHN0KTsKLSAgICBpZiAo
ZXJyb3IpCi0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwotICAgIHRyYWNlX3Zmc19zdGF0X3JldCgp
OwotICAgIHJldHVybiAwOworCWVycm9yID0gc3lzX3N0YXQocGF0aCwgc3QpOworCWlmIChlcnJv
cikKKwkJZ290byBvdXRfZXJybm87CisJdHJhY2VfdmZzX3N0YXRfcmV0KCk7CisJcmV0dXJuIDA7
CiAKLSAgICBvdXRfZXJybm86Ci0gICAgdHJhY2VfdmZzX3N0YXRfZXJyKGVycm9yKTsKLSAgICBl
cnJubyA9IGVycm9yOwotICAgIHJldHVybiAtMTsKKwlvdXRfZXJybm86CisJdHJhY2VfdmZzX3N0
YXRfZXJyKGVycm9yKTsKKwllcnJubyA9IGVycm9yOworCXJldHVybiAtMTsKIH0KIAogTEZTNjQo
X194c3RhdCk7CiAKIGludCBzdGF0KGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBzdHJ1Y3Qgc3RhdCAq
c3QpCiB7Ci0gICAgcmV0dXJuIF9feHN0YXQoMSwgcGF0aG5hbWUsIHN0KTsKKwlyZXR1cm4gX194
c3RhdCgxLCBwYXRobmFtZSwgc3QpOwogfQogCiBMRlM2NChzdGF0KTsKQEAgLTExNTgsMzUgKzEx
NTgsMzUgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbHN0YXRfZXJyLCAiZXJybm89JWQiLCBpbnQp
OwogZXh0ZXJuICJDIgogaW50IF9fbHhzdGF0KGludCB2ZXIsIGNvbnN0IGNoYXIgKnBhdGhuYW1l
LCBzdHJ1Y3Qgc3RhdCAqc3QpCiB7Ci0gICAgc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7Ci0g
ICAgY2hhciBwYXRoW1BBVEhfTUFYXTsKLSAgICBpbnQgZXJyb3I7CisJc3RydWN0IHRhc2sgKnQg
PSBtYWluX3Rhc2s7CisJY2hhciBwYXRoW1BBVEhfTUFYXTsKKwlpbnQgZXJyb3I7CiAKLSAgICB0
cmFjZV92ZnNfbHN0YXQocGF0aG5hbWUsIHN0KTsKKwl0cmFjZV92ZnNfbHN0YXQocGF0aG5hbWUs
IHN0KTsKIAotICAgIGVycm9yID0gdGFza19jb252KHQsIHBhdGhuYW1lLCAwLCBwYXRoKTsKLSAg
ICBpZiAoZXJyb3IpIHsKLSAgICAgICAgZXJybm8gPSBlcnJvcjsKLSAgICAgICAgdHJhY2VfdmZz
X2xzdGF0X2VycihlcnJvcik7Ci0gICAgICAgIHJldHVybiAoLTEpOwotICAgIH0KKwllcnJvciA9
IHRhc2tfY29udih0LCBwYXRobmFtZSwgMCwgcGF0aCk7CisJaWYgKGVycm9yKSB7CisJCWVycm5v
ID0gZXJyb3I7CisJCXRyYWNlX3Zmc19sc3RhdF9lcnIoZXJyb3IpOworCQlyZXR1cm4gKC0xKTsK
Kwl9CiAKLSAgICBlcnJvciA9IHN5c19sc3RhdChwYXRoLCBzdCk7Ci0gICAgaWYgKGVycm9yKSB7
Ci0gICAgICAgIGVycm5vID0gZXJyb3I7Ci0gICAgICAgIHRyYWNlX3Zmc19sc3RhdF9lcnIoZXJy
b3IpOwotICAgICAgICByZXR1cm4gKC0xKTsKLSAgICB9CisJZXJyb3IgPSBzeXNfbHN0YXQocGF0
aCwgc3QpOworCWlmIChlcnJvcikgeworCQllcnJubyA9IGVycm9yOworCQl0cmFjZV92ZnNfbHN0
YXRfZXJyKGVycm9yKTsKKwkJcmV0dXJuICgtMSk7CisJfQogCi0gICAgdHJhY2VfdmZzX2xzdGF0
X3JldCgpOwotICAgIHJldHVybiAwOworCXRyYWNlX3Zmc19sc3RhdF9yZXQoKTsKKwlyZXR1cm4g
MDsKIH0KIAogTEZTNjQoX19seHN0YXQpOwogCiBpbnQgbHN0YXQoY29uc3QgY2hhciAqcGF0aG5h
bWUsIHN0cnVjdCBzdGF0ICpzdCkKIHsKLSAgICByZXR1cm4gX19seHN0YXQoMSwgcGF0aG5hbWUs
IHN0KTsKKwlyZXR1cm4gX19seHN0YXQoMSwgcGF0aG5hbWUsIHN0KTsKIH0KIAogTEZTNjQobHN0
YXQpOwpAQCAtMTE5OCwyNCArMTE5OCwyNCBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19zdGF0ZnNf
ZXJyLCAiJWQiLCBpbnQpOwogZXh0ZXJuICJDIgogaW50IF9fc3RhdGZzKGNvbnN0IGNoYXIgKnBh
dGhuYW1lLCBzdHJ1Y3Qgc3RhdGZzICpidWYpCiB7Ci0gICAgdHJhY2VfdmZzX3N0YXRmcyhwYXRo
bmFtZSwgYnVmKTsKLSAgICBzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKLSAgICBjaGFyIHBh
dGhbUEFUSF9NQVhdOwotICAgIGludCBlcnJvcjsKLQotICAgIGVycm9yID0gdGFza19jb252KHQs
IHBhdGhuYW1lLCAwLCBwYXRoKTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIGdvdG8gb3V0X2Vy
cm5vOwotCi0gICAgZXJyb3IgPSBzeXNfc3RhdGZzKHBhdGgsIGJ1Zik7Ci0gICAgaWYgKGVycm9y
KQotICAgICAgICBnb3RvIG91dF9lcnJubzsKLSAgICB0cmFjZV92ZnNfc3RhdGZzX3JldCgpOwot
ICAgIHJldHVybiAwOwotICAgIG91dF9lcnJubzoKLSAgICB0cmFjZV92ZnNfc3RhdGZzX2Vycihl
cnJvcik7Ci0gICAgZXJybm8gPSBlcnJvcjsKLSAgICByZXR1cm4gLTE7CisJdHJhY2VfdmZzX3N0
YXRmcyhwYXRobmFtZSwgYnVmKTsKKwlzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKKwljaGFy
IHBhdGhbUEFUSF9NQVhdOworCWludCBlcnJvcjsKKworCWVycm9yID0gdGFza19jb252KHQsIHBh
dGhuYW1lLCAwLCBwYXRoKTsKKwlpZiAoZXJyb3IpCisJCWdvdG8gb3V0X2Vycm5vOworCisJZXJy
b3IgPSBzeXNfc3RhdGZzKHBhdGgsIGJ1Zik7CisJaWYgKGVycm9yKQorCQlnb3RvIG91dF9lcnJu
bzsKKwl0cmFjZV92ZnNfc3RhdGZzX3JldCgpOworCXJldHVybiAwOworCW91dF9lcnJubzoKKwl0
cmFjZV92ZnNfc3RhdGZzX2VycihlcnJvcik7CisJZXJybm8gPSBlcnJvcjsKKwlyZXR1cm4gLTE7
CiB9CiB3ZWFrX2FsaWFzKF9fc3RhdGZzLCBzdGF0ZnMpOwogCkBAIC0xMjI4LDI2ICsxMjI4LDI2
IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2ZzdGF0ZnNfZXJyLCAiJWQiLCBpbnQpOwogZXh0ZXJu
ICJDIgogaW50IF9fZnN0YXRmcyhpbnQgZmQsIHN0cnVjdCBzdGF0ZnMgKmJ1ZikKIHsKLSAgICBz
dHJ1Y3QgZmlsZSAqZnA7Ci0gICAgaW50IGVycm9yOworCXN0cnVjdCBmaWxlICpmcDsKKwlpbnQg
ZXJyb3I7CiAKLSAgICB0cmFjZV92ZnNfZnN0YXRmcyhmZCwgYnVmKTsKLSAgICBlcnJvciA9IGZn
ZXQoZmQsICZmcCk7Ci0gICAgaWYgKGVycm9yKQotICAgICAgICBnb3RvIG91dF9lcnJubzsKKwl0
cmFjZV92ZnNfZnN0YXRmcyhmZCwgYnVmKTsKKwllcnJvciA9IGZnZXQoZmQsICZmcCk7CisJaWYg
KGVycm9yKQorCQlnb3RvIG91dF9lcnJubzsKIAotICAgIGVycm9yID0gc3lzX2ZzdGF0ZnMoZnAs
IGJ1Zik7Ci0gICAgZmRyb3AoZnApOworCWVycm9yID0gc3lzX2ZzdGF0ZnMoZnAsIGJ1Zik7CisJ
ZmRyb3AoZnApOwogCi0gICAgaWYgKGVycm9yKQotICAgICAgICBnb3RvIG91dF9lcnJubzsKLSAg
ICB0cmFjZV92ZnNfZnN0YXRmc19yZXQoKTsKLSAgICByZXR1cm4gMDsKKwlpZiAoZXJyb3IpCisJ
CWdvdG8gb3V0X2Vycm5vOworCXRyYWNlX3Zmc19mc3RhdGZzX3JldCgpOworCXJldHVybiAwOwog
Ci0gICAgb3V0X2Vycm5vOgotICAgIHRyYWNlX3Zmc19mc3RhdGZzX2VycihlcnJvcik7Ci0gICAg
ZXJybm8gPSBlcnJvcjsKLSAgICByZXR1cm4gLTE7CisJb3V0X2Vycm5vOgorCXRyYWNlX3Zmc19m
c3RhdGZzX2VycihlcnJvcik7CisJZXJybm8gPSBlcnJvcjsKKwlyZXR1cm4gLTE7CiB9CiB3ZWFr
X2FsaWFzKF9fZnN0YXRmcywgZnN0YXRmcyk7CiAKQEAgLTEyNTYsMjggKzEyNTYsMjggQEAgTEZT
NjQoZnN0YXRmcyk7CiBzdGF0aWMgaW50CiBzdGF0ZnNfdG9fc3RhdHZmcyhzdHJ1Y3Qgc3RhdHZm
cyAqZHN0LCBzdHJ1Y3Qgc3RhdGZzICpzcmMpCiB7Ci0gICAgZHN0LT5mX2JzaXplID0gc3JjLT5m
X2JzaXplOwotICAgIGRzdC0+Zl9mcnNpemUgPSBzcmMtPmZfYnNpemU7Ci0gICAgZHN0LT5mX2Js
b2NrcyA9IHNyYy0+Zl9ibG9ja3M7Ci0gICAgZHN0LT5mX2JmcmVlID0gc3JjLT5mX2JmcmVlOwot
ICAgIGRzdC0+Zl9iYXZhaWwgPSBzcmMtPmZfYmF2YWlsOwotICAgIGRzdC0+Zl9maWxlcyA9IHNy
Yy0+Zl9maWxlczsKLSAgICBkc3QtPmZfZmZyZWUgPSBzcmMtPmZfZmZyZWU7Ci0gICAgZHN0LT5m
X2ZhdmFpbCA9IDA7Ci0gICAgZHN0LT5mX2ZzaWQgPSBzcmMtPmZfZnNpZC5fX3ZhbFswXTsKLSAg
ICBkc3QtPmZfZmxhZyA9IHNyYy0+Zl9mbGFnczsKLSAgICBkc3QtPmZfbmFtZW1heCA9IHNyYy0+
Zl9uYW1lbGVuOwotICAgIHJldHVybiAwOworCWRzdC0+Zl9ic2l6ZSA9IHNyYy0+Zl9ic2l6ZTsK
Kwlkc3QtPmZfZnJzaXplID0gc3JjLT5mX2JzaXplOworCWRzdC0+Zl9ibG9ja3MgPSBzcmMtPmZf
YmxvY2tzOworCWRzdC0+Zl9iZnJlZSA9IHNyYy0+Zl9iZnJlZTsKKwlkc3QtPmZfYmF2YWlsID0g
c3JjLT5mX2JhdmFpbDsKKwlkc3QtPmZfZmlsZXMgPSBzcmMtPmZfZmlsZXM7CisJZHN0LT5mX2Zm
cmVlID0gc3JjLT5mX2ZmcmVlOworCWRzdC0+Zl9mYXZhaWwgPSAwOworCWRzdC0+Zl9mc2lkID0g
c3JjLT5mX2ZzaWQuX192YWxbMF07CisJZHN0LT5mX2ZsYWcgPSBzcmMtPmZfZmxhZ3M7CisJZHN0
LT5mX25hbWVtYXggPSBzcmMtPmZfbmFtZWxlbjsKKwlyZXR1cm4gMDsKIH0KIAogaW50CiBzdGF0
dmZzKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBzdHJ1Y3Qgc3RhdHZmcyAqYnVmKQogewotICAgIHN0
cnVjdCBzdGF0ZnMgc3Q7CisJc3RydWN0IHN0YXRmcyBzdDsKIAotICAgIGlmIChfX3N0YXRmcyhw
YXRobmFtZSwgJnN0KSA8IDApCi0gICAgICAgIHJldHVybiAtMTsKLSAgICByZXR1cm4gc3RhdGZz
X3RvX3N0YXR2ZnMoYnVmLCAmc3QpOworCWlmIChfX3N0YXRmcyhwYXRobmFtZSwgJnN0KSA8IDAp
CisJCXJldHVybiAtMTsKKwlyZXR1cm4gc3RhdGZzX3RvX3N0YXR2ZnMoYnVmLCAmc3QpOwogfQog
CiBMRlM2NChzdGF0dmZzKTsKQEAgLTEyODUsMTEgKzEyODUsMTEgQEAgTEZTNjQoc3RhdHZmcyk7
CiBpbnQKIGZzdGF0dmZzKGludCBmZCwgc3RydWN0IHN0YXR2ZnMgKmJ1ZikKIHsKLSAgICBzdHJ1
Y3Qgc3RhdGZzIHN0OworCXN0cnVjdCBzdGF0ZnMgc3Q7CiAKLSAgICBpZiAoX19mc3RhdGZzKGZk
LCAmc3QpIDwgMCkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIHJldHVybiBzdGF0ZnNfdG9fc3Rh
dHZmcyhidWYsICZzdCk7CisJaWYgKF9fZnN0YXRmcyhmZCwgJnN0KSA8IDApCisJCXJldHVybiAt
MTsKKwlyZXR1cm4gc3RhdGZzX3RvX3N0YXR2ZnMoYnVmLCAmc3QpOwogfQogCiBMRlM2NChmc3Rh
dHZmcyk7CkBAIC0xMzAxLDM5ICsxMzAxLDM5IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2dldGN3
ZF9lcnIsICIlZCIsIGludCk7CiAKIGNoYXIgKmdldGN3ZChjaGFyICpwYXRoLCBzaXplX3Qgc2l6
ZSkKIHsKLSAgICB0cmFjZV92ZnNfZ2V0Y3dkKHBhdGgsIHNpemUpOwotICAgIHN0cnVjdCB0YXNr
ICp0ID0gbWFpbl90YXNrOwotICAgIGludCBsZW4gPSBzdHJsZW4odC0+dF9jd2QpICsgMTsKLSAg
ICBpbnQgZXJyb3I7Ci0KLSAgICBpZiAoIXBhdGgpIHsKLSAgICAgICAgaWYgKCFzaXplKQotICAg
ICAgICAgICAgc2l6ZSA9IGxlbjsKLSAgICAgICAgcGF0aCA9IChjaGFyKiltYWxsb2Moc2l6ZSk7
Ci0gICAgICAgIGlmICghcGF0aCkgewotICAgICAgICAgICAgZXJyb3IgPSBFTk9NRU07Ci0gICAg
ICAgICAgICBnb3RvIG91dF9lcnJubzsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAg
IGlmICghc2l6ZSkgewotICAgICAgICAgICAgZXJyb3IgPSBFSU5WQUw7Ci0gICAgICAgICAgICBn
b3RvIG91dF9lcnJubzsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChzaXplIDwgbGVuKSB7
Ci0gICAgICAgIGVycm9yID0gRVJBTkdFOwotICAgICAgICBnb3RvIG91dF9lcnJubzsKLSAgICB9
Ci0KLSAgICBtZW1jcHkocGF0aCwgdC0+dF9jd2QsIGxlbik7Ci0gICAgdHJhY2VfdmZzX2dldGN3
ZF9yZXQocGF0aCk7Ci0gICAgcmV0dXJuIHBhdGg7Ci0KLSAgICBvdXRfZXJybm86Ci0gICAgdHJh
Y2VfdmZzX2dldGN3ZF9lcnIoZXJyb3IpOwotICAgIGVycm5vID0gZXJyb3I7Ci0gICAgcmV0dXJu
IG51bGxwdHI7CisJdHJhY2VfdmZzX2dldGN3ZChwYXRoLCBzaXplKTsKKwlzdHJ1Y3QgdGFzayAq
dCA9IG1haW5fdGFzazsKKwlpbnQgbGVuID0gc3RybGVuKHQtPnRfY3dkKSArIDE7CisJaW50IGVy
cm9yOworCisJaWYgKCFwYXRoKSB7CisJCWlmICghc2l6ZSkKKwkJCXNpemUgPSBsZW47CisJCXBh
dGggPSAoY2hhciopbWFsbG9jKHNpemUpOworCQlpZiAoIXBhdGgpIHsKKwkJCWVycm9yID0gRU5P
TUVNOworCQkJZ290byBvdXRfZXJybm87CisJCX0KKwl9IGVsc2UgeworCQlpZiAoIXNpemUpIHsK
KwkJCWVycm9yID0gRUlOVkFMOworCQkJZ290byBvdXRfZXJybm87CisJCX0KKwl9CisKKwlpZiAo
c2l6ZSA8IGxlbikgeworCQllcnJvciA9IEVSQU5HRTsKKwkJZ290byBvdXRfZXJybm87CisJfQor
CisJbWVtY3B5KHBhdGgsIHQtPnRfY3dkLCBsZW4pOworCXRyYWNlX3Zmc19nZXRjd2RfcmV0KHBh
dGgpOworCXJldHVybiBwYXRoOworCisJb3V0X2Vycm5vOgorCXRyYWNlX3Zmc19nZXRjd2RfZXJy
KGVycm9yKTsKKwllcnJubyA9IGVycm9yOworCXJldHVybiBudWxscHRyOwogfQogCiBUUkFDRVBP
SU5UKHRyYWNlX3Zmc19kdXAsICIlZCIsIGludCk7CkBAIC0xMzQ0LDI5ICsxMzQ0LDI5IEBAIFRS
QUNFUE9JTlQodHJhY2VfdmZzX2R1cF9lcnIsICIlZCIsIGludCk7CiAgKi8KIGludCBkdXAoaW50
IG9sZGZkKQogewotICAgIHN0cnVjdCBmaWxlICpmcDsKLSAgICBpbnQgbmV3ZmQ7Ci0gICAgaW50
IGVycm9yOworCXN0cnVjdCBmaWxlICpmcDsKKwlpbnQgbmV3ZmQ7CisJaW50IGVycm9yOwogCi0g
ICAgdHJhY2VfdmZzX2R1cChvbGRmZCk7Ci0gICAgZXJyb3IgPSBmZ2V0KG9sZGZkLCAmZnApOwot
ICAgIGlmIChlcnJvcikKLSAgICAgICAgZ290byBvdXRfZXJybm87CisJdHJhY2VfdmZzX2R1cChv
bGRmZCk7CisJZXJyb3IgPSBmZ2V0KG9sZGZkLCAmZnApOworCWlmIChlcnJvcikKKwkJZ290byBv
dXRfZXJybm87CiAKLSAgICBlcnJvciA9IGZkYWxsb2MoZnAsICZuZXdmZCk7Ci0gICAgaWYgKGVy
cm9yKQotICAgICAgICBnb3RvIG91dF9mZHJvcDsKKwllcnJvciA9IGZkYWxsb2MoZnAsICZuZXdm
ZCk7CisJaWYgKGVycm9yKQorCQlnb3RvIG91dF9mZHJvcDsKIAotICAgIGZkcm9wKGZwKTsKLSAg
ICB0cmFjZV92ZnNfZHVwX3JldChuZXdmZCk7Ci0gICAgcmV0dXJuIG5ld2ZkOworCWZkcm9wKGZw
KTsKKwl0cmFjZV92ZnNfZHVwX3JldChuZXdmZCk7CisJcmV0dXJuIG5ld2ZkOwogCi0gICAgb3V0
X2Zkcm9wOgotICAgIGZkcm9wKGZwKTsKLSAgICBvdXRfZXJybm86Ci0gICAgdHJhY2VfdmZzX2R1
cF9lcnIoZXJyb3IpOwotICAgIGVycm5vID0gZXJyb3I7Ci0gICAgcmV0dXJuIC0xOworCW91dF9m
ZHJvcDoKKwlmZHJvcChmcCk7CisJb3V0X2Vycm5vOgorCXRyYWNlX3Zmc19kdXBfZXJyKGVycm9y
KTsKKwllcnJubyA9IGVycm9yOworCXJldHVybiAtMTsKIH0KIAogVFJBQ0VQT0lOVCh0cmFjZV92
ZnNfZHVwMywgIiVkICVkIDB4JXgiLCBpbnQsIGludCwgaW50KTsKQEAgLTEzNzcsNTAgKzEzNzcs
NTAgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZHVwM19lcnIsICIlZCIsIGludCk7CiAgKi8KIGlu
dCBkdXAzKGludCBvbGRmZCwgaW50IG5ld2ZkLCBpbnQgZmxhZ3MpCiB7Ci0gICAgc3RydWN0IGZp
bGUgKmZwOwotICAgIGludCBlcnJvcjsKLQotICAgIHRyYWNlX3Zmc19kdXAzKG9sZGZkLCBuZXdm
ZCwgZmxhZ3MpOwotICAgIC8qCi0gICAgICogRG9uJ3QgYWxsb3cgYW55IGFyZ3VtZW50IGJ1dCBP
X0NMT0VYRUMuICBCdXQgd2UgZXZlbiBpZ25vcmUKLSAgICAgKiB0aGF0IGFzIHdlIGRvbid0IHN1
cHBvcnQgZXhlYygpIGFuZCB0aHVzIGRvbid0IGNhcmUuCi0gICAgICovCi0gICAgaWYgKChmbGFn
cyAmIH5PX0NMT0VYRUMpICE9IDApIHsKLSAgICAgICAgZXJyb3IgPSBFSU5WQUw7Ci0gICAgICAg
IGdvdG8gb3V0X2Vycm5vOwotICAgIH0KKwlzdHJ1Y3QgZmlsZSAqZnA7CisJaW50IGVycm9yOwor
CisJdHJhY2VfdmZzX2R1cDMob2xkZmQsIG5ld2ZkLCBmbGFncyk7CisJLyoKKwkgKiBEb24ndCBh
bGxvdyBhbnkgYXJndW1lbnQgYnV0IE9fQ0xPRVhFQy4gIEJ1dCB3ZSBldmVuIGlnbm9yZQorCSAq
IHRoYXQgYXMgd2UgZG9uJ3Qgc3VwcG9ydCBleGVjKCkgYW5kIHRodXMgZG9uJ3QgY2FyZS4KKwkg
Ki8KKwlpZiAoKGZsYWdzICYgfk9fQ0xPRVhFQykgIT0gMCkgeworCQllcnJvciA9IEVJTlZBTDsK
KwkJZ290byBvdXRfZXJybm87CisJfQogCi0gICAgaWYgKG9sZGZkID09IG5ld2ZkKSB7Ci0gICAg
ICAgIGVycm9yID0gRUlOVkFMOwotICAgICAgICBnb3RvIG91dF9lcnJubzsKLSAgICB9CisJaWYg
KG9sZGZkID09IG5ld2ZkKSB7CisJCWVycm9yID0gRUlOVkFMOworCQlnb3RvIG91dF9lcnJubzsK
Kwl9CiAKLSAgICBlcnJvciA9IGZnZXQob2xkZmQsICZmcCk7Ci0gICAgaWYgKGVycm9yKQotICAg
ICAgICBnb3RvIG91dF9lcnJubzsKKwllcnJvciA9IGZnZXQob2xkZmQsICZmcCk7CisJaWYgKGVy
cm9yKQorCQlnb3RvIG91dF9lcnJubzsKIAotICAgIGVycm9yID0gZmRzZXQobmV3ZmQsIGZwKTsK
LSAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgZmRyb3AoZnApOwotICAgICAgICBnb3RvIG91dF9l
cnJubzsKLSAgICB9CisJZXJyb3IgPSBmZHNldChuZXdmZCwgZnApOworCWlmIChlcnJvcikgewor
CQlmZHJvcChmcCk7CisJCWdvdG8gb3V0X2Vycm5vOworCX0KIAotICAgIGZkcm9wKGZwKTsKLSAg
ICB0cmFjZV92ZnNfZHVwM19yZXQobmV3ZmQpOwotICAgIHJldHVybiBuZXdmZDsKKwlmZHJvcChm
cCk7CisJdHJhY2VfdmZzX2R1cDNfcmV0KG5ld2ZkKTsKKwlyZXR1cm4gbmV3ZmQ7CiAKLSAgICBv
dXRfZXJybm86Ci0gICAgdHJhY2VfdmZzX2R1cDNfZXJyKGVycm9yKTsKLSAgICBlcnJubyA9IGVy
cm9yOwotICAgIHJldHVybiAtMTsKKwlvdXRfZXJybm86CisJdHJhY2VfdmZzX2R1cDNfZXJyKGVy
cm9yKTsKKwllcnJubyA9IGVycm9yOworCXJldHVybiAtMTsKIH0KIAogaW50IGR1cDIoaW50IG9s
ZGZkLCBpbnQgbmV3ZmQpCiB7Ci0gICAgaWYgKG9sZGZkID09IG5ld2ZkKQotICAgICAgICByZXR1
cm4gbmV3ZmQ7CisJaWYgKG9sZGZkID09IG5ld2ZkKQorCQlyZXR1cm4gbmV3ZmQ7CiAKLSAgICBy
ZXR1cm4gZHVwMyhvbGRmZCwgbmV3ZmQsIDApOworCXJldHVybiBkdXAzKG9sZGZkLCBuZXdmZCwg
MCk7CiB9CiAKIC8qCkBAIC0xNDM1LDgzICsxNDM1LDgzIEBAIFRSQUNFUE9JTlQodHJhY2VfdmZz
X2ZjbnRsX2VyciwgIiVkIiwgaW50KTsKIGV4dGVybiAiQyIKIGludCBmY250bChpbnQgZmQsIGlu
dCBjbWQsIGludCBhcmcpCiB7Ci0gICAgc3RydWN0IGZpbGUgKmZwOwotICAgIGludCByZXQgPSAw
LCBlcnJvcjsKLSAgICBpbnQgdG1wOwotCi0gICAgdHJhY2VfdmZzX2ZjbnRsKGZkLCBjbWQsIGFy
Zyk7Ci0gICAgZXJyb3IgPSBmZ2V0KGZkLCAmZnApOwotICAgIGlmIChlcnJvcikKLSAgICAgICAg
Z290byBvdXRfZXJybm87Ci0KLSAgICAvLyBBbiBpbXBvcnRhbnQgbm90ZSBhYm91dCBvdXIgaGFu
ZGxpbmcgb2YgRkRfQ0xPRVhFQyAvIE9fQ0xPRVhFQzoKLSAgICAvLyBjbG9zZS1vbi1leGVjIHNo
b3VsZG4ndCBoYXZlIGJlZW4gYSBmaWxlIGZsYWcgKGZwLT5mX2ZsYWdzKSAtIGl0IGlzIGEKLSAg
ICAvLyBmaWxlIGRlc2NyaXB0b3IgZmxhZywgbWVhbmluZyB0aGF0IHRoYXQgdHdvIGR1cCgpZWQg
ZmlsZSBkZXNjcmlwdG9ycwotICAgIC8vIGNvdWxkIGhhdmUgZGlmZmVyZW50IHZhbHVlcyBmb3Ig
RkRfQ0xPRVhFQy4gT3VyIGN1cnJlbnQgaW1wbGVtZW50YXRpb24KLSAgICAvLyAqd3JvbmdseSog
bWFrZXMgY2xvc2Utb24tZXhlYyBhbiBmX2ZsYWcgKHVzaW5nIHRoZSBiaXQgT19DTE9FWEVDKS4K
LSAgICAvLyBUaGVyZSBpcyBsaXR0bGUgcHJhY3RpY2FsIGRpZmZlcmVuY2UsIHRob3VnaCwgYmVj
YXVzZSB0aGlzIGZsYWcgaXMKLSAgICAvLyBpZ25vcmVkIGluIE9TdiBhbnl3YXksIGFzIGl0IGRv
ZXNuJ3Qgc3VwcG9ydCBleGVjKCkuCi0gICAgc3dpdGNoIChjbWQpIHsKLSAgICBjYXNlIEZfRFVQ
RkQ6Ci0gICAgICAgIGVycm9yID0gX2ZkYWxsb2MoZnAsICZyZXQsIGFyZyk7Ci0gICAgICAgIGlm
IChlcnJvcikKLSAgICAgICAgICAgIGdvdG8gb3V0X2Vycm5vOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEZfR0VURkQ6Ci0gICAgICAgIHJldCA9IChmcC0+Zl9mbGFncyAmIE9fQ0xPRVhFQykg
PyBGRF9DTE9FWEVDIDogMDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGX1NFVEZEOgotICAg
ICAgICBGRF9MT0NLKGZwKTsKLSAgICAgICAgZnAtPmZfZmxhZ3MgPSAoZnAtPmZfZmxhZ3MgJiB+
T19DTE9FWEVDKSB8Ci0gICAgICAgICAgICAgICAgKChhcmcgJiBGRF9DTE9FWEVDKSA/IE9fQ0xP
RVhFQyA6IDApOwotICAgICAgICBGRF9VTkxPQ0soZnApOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIEZfR0VURkw6Ci0gICAgICAgIC8vIEFzIGV4cGxhaW5lZCBhYm92ZSwgdGhlIE9fQ0xPRVhF
QyBzaG91bGQgaGF2ZSBiZWVuIGluIGZfZmxhZ3MsCi0gICAgICAgIC8vIGFuZCBzaG91bGRuJ3Qg
YmUgcmV0dXJuZWQuIExpbnV4IGFsd2F5cyByZXR1cm5zIDAxMDAwMDAgKCJ0aGUKLSAgICAgICAg
Ly8gZmxhZyBmb3JtZXJseSBrbm93biBhcyBPX0xBUkdFRklMRSkgc28gbGV0J3MgZG8gaXQgdG9v
LgotICAgICAgICByZXQgPSAob2ZsYWdzKGZwLT5mX2ZsYWdzKSAmIH5PX0NMT0VYRUMpIHwgMDEw
MDAwMDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGX1NFVEZMOgotICAgICAgICBGRF9MT0NL
KGZwKTsKLSAgICAgICAgZnAtPmZfZmxhZ3MgPSBmZmxhZ3MoKG9mbGFncyhmcC0+Zl9mbGFncykg
JiB+U0VURkwpIHwKLSAgICAgICAgICAgICAgICAoYXJnICYgU0VURkwpKTsKLSAgICAgICAgRkRf
VU5MT0NLKGZwKTsKLQotICAgICAgICAvKiBTeW5jIG5vbmJsb2NraW5nL2FzeW5jIHN0YXRlIHdp
dGggZmlsZSBmbGFncyAqLwotICAgICAgICB0bXAgPSBmcC0+Zl9mbGFncyAmIEZOT05CTE9DSzsK
LSAgICAgICAgZnAtPmlvY3RsKEZJT05CSU8sICZ0bXApOwotICAgICAgICB0bXAgPSBmcC0+Zl9m
bGFncyAmIEZBU1lOQzsKLSAgICAgICAgZnAtPmlvY3RsKEZJT0FTWU5DLCAmdG1wKTsKLQotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIEZfU0VUTEs6Ci0gICAgICAgIFdBUk5fT05DRSgiZmNudGwo
Rl9TRVRMSykgc3R1YmJlZFxuIik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRl9HRVRMSzoK
LSAgICAgICAgV0FSTl9PTkNFKCJmY250bChGX0dFVExLKSBzdHViYmVkXG4iKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBGX1NFVExLVzoKLSAgICAgICAgV0FSTl9PTkNFKCJmY250bChGX1NF
VExLVykgc3R1YmJlZFxuIik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRl9TRVRPV046Ci0g
ICAgICAgIFdBUk5fT05DRSgiZmNudGwoRl9TRVRPV04pIHN0dWJiZWRcbiIpOwotICAgICAgICBi
cmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBrcHJpbnRmKCJ1bnN1cHBvcnRlZCBmY250bCBj
bWQgMHgleFxuIiwgY21kKTsKLSAgICAgICAgZXJyb3IgPSBFSU5WQUw7Ci0gICAgfQotCi0gICAg
ZmRyb3AoZnApOwotICAgIGlmIChlcnJvcikKLSAgICAgICAgZ290byBvdXRfZXJybm87Ci0gICAg
dHJhY2VfdmZzX2ZjbnRsX3JldChyZXQpOwotICAgIHJldHVybiByZXQ7Ci0KLSAgICBvdXRfZXJy
bm86Ci0gICAgdHJhY2VfdmZzX2ZjbnRsX2VycihlcnJvcik7Ci0gICAgZXJybm8gPSBlcnJvcjsK
LSAgICByZXR1cm4gLTE7CisJc3RydWN0IGZpbGUgKmZwOworCWludCByZXQgPSAwLCBlcnJvcjsK
KwlpbnQgdG1wOworCisJdHJhY2VfdmZzX2ZjbnRsKGZkLCBjbWQsIGFyZyk7CisJZXJyb3IgPSBm
Z2V0KGZkLCAmZnApOworCWlmIChlcnJvcikKKwkJZ290byBvdXRfZXJybm87CisKKwkvLyBBbiBp
bXBvcnRhbnQgbm90ZSBhYm91dCBvdXIgaGFuZGxpbmcgb2YgRkRfQ0xPRVhFQyAvIE9fQ0xPRVhF
QzoKKwkvLyBjbG9zZS1vbi1leGVjIHNob3VsZG4ndCBoYXZlIGJlZW4gYSBmaWxlIGZsYWcgKGZw
LT5mX2ZsYWdzKSAtIGl0IGlzIGEKKwkvLyBmaWxlIGRlc2NyaXB0b3IgZmxhZywgbWVhbmluZyB0
aGF0IHRoYXQgdHdvIGR1cCgpZWQgZmlsZSBkZXNjcmlwdG9ycworCS8vIGNvdWxkIGhhdmUgZGlm
ZmVyZW50IHZhbHVlcyBmb3IgRkRfQ0xPRVhFQy4gT3VyIGN1cnJlbnQgaW1wbGVtZW50YXRpb24K
KwkvLyAqd3JvbmdseSogbWFrZXMgY2xvc2Utb24tZXhlYyBhbiBmX2ZsYWcgKHVzaW5nIHRoZSBi
aXQgT19DTE9FWEVDKS4KKwkvLyBUaGVyZSBpcyBsaXR0bGUgcHJhY3RpY2FsIGRpZmZlcmVuY2Us
IHRob3VnaCwgYmVjYXVzZSB0aGlzIGZsYWcgaXMKKwkvLyBpZ25vcmVkIGluIE9TdiBhbnl3YXks
IGFzIGl0IGRvZXNuJ3Qgc3VwcG9ydCBleGVjKCkuCisJc3dpdGNoIChjbWQpIHsKKwljYXNlIEZf
RFVQRkQ6CisJCWVycm9yID0gX2ZkYWxsb2MoZnAsICZyZXQsIGFyZyk7CisJCWlmIChlcnJvcikK
KwkJCWdvdG8gb3V0X2Vycm5vOworCQlicmVhazsKKwljYXNlIEZfR0VURkQ6CisJCXJldCA9IChm
cC0+Zl9mbGFncyAmIE9fQ0xPRVhFQykgPyBGRF9DTE9FWEVDIDogMDsKKwkJYnJlYWs7CisJY2Fz
ZSBGX1NFVEZEOgorCQlGRF9MT0NLKGZwKTsKKwkJZnAtPmZfZmxhZ3MgPSAoZnAtPmZfZmxhZ3Mg
JiB+T19DTE9FWEVDKSB8CisJCQkJKChhcmcgJiBGRF9DTE9FWEVDKSA/IE9fQ0xPRVhFQyA6IDAp
OworCQlGRF9VTkxPQ0soZnApOworCQlicmVhazsKKwljYXNlIEZfR0VURkw6CisJCS8vIEFzIGV4
cGxhaW5lZCBhYm92ZSwgdGhlIE9fQ0xPRVhFQyBzaG91bGQgaGF2ZSBiZWVuIGluIGZfZmxhZ3Ms
CisJCS8vIGFuZCBzaG91bGRuJ3QgYmUgcmV0dXJuZWQuIExpbnV4IGFsd2F5cyByZXR1cm5zIDAx
MDAwMDAgKCJ0aGUKKwkJLy8gZmxhZyBmb3JtZXJseSBrbm93biBhcyBPX0xBUkdFRklMRSkgc28g
bGV0J3MgZG8gaXQgdG9vLgorCQlyZXQgPSAob2ZsYWdzKGZwLT5mX2ZsYWdzKSAmIH5PX0NMT0VY
RUMpIHwgMDEwMDAwMDsKKwkJYnJlYWs7CisJY2FzZSBGX1NFVEZMOgorCQlGRF9MT0NLKGZwKTsK
KwkJZnAtPmZfZmxhZ3MgPSBmZmxhZ3MoKG9mbGFncyhmcC0+Zl9mbGFncykgJiB+U0VURkwpIHwK
KwkJCQkoYXJnICYgU0VURkwpKTsKKwkJRkRfVU5MT0NLKGZwKTsKKworCQkvKiBTeW5jIG5vbmJs
b2NraW5nL2FzeW5jIHN0YXRlIHdpdGggZmlsZSBmbGFncyAqLworCQl0bXAgPSBmcC0+Zl9mbGFn
cyAmIEZOT05CTE9DSzsKKwkJZnAtPmlvY3RsKEZJT05CSU8sICZ0bXApOworCQl0bXAgPSBmcC0+
Zl9mbGFncyAmIEZBU1lOQzsKKwkJZnAtPmlvY3RsKEZJT0FTWU5DLCAmdG1wKTsKKworCQlicmVh
azsKKwljYXNlIEZfU0VUTEs6CisJCVdBUk5fT05DRSgiZmNudGwoRl9TRVRMSykgc3R1YmJlZFxu
Iik7CisJCWJyZWFrOworCWNhc2UgRl9HRVRMSzoKKwkJV0FSTl9PTkNFKCJmY250bChGX0dFVExL
KSBzdHViYmVkXG4iKTsKKwkJYnJlYWs7CisJY2FzZSBGX1NFVExLVzoKKwkJV0FSTl9PTkNFKCJm
Y250bChGX1NFVExLVykgc3R1YmJlZFxuIik7CisJCWJyZWFrOworCWNhc2UgRl9TRVRPV046CisJ
CVdBUk5fT05DRSgiZmNudGwoRl9TRVRPV04pIHN0dWJiZWRcbiIpOworCQlicmVhazsKKwlkZWZh
dWx0OgorCQlrcHJpbnRmKCJ1bnN1cHBvcnRlZCBmY250bCBjbWQgMHgleFxuIiwgY21kKTsKKwkJ
ZXJyb3IgPSBFSU5WQUw7CisJfQorCisJZmRyb3AoZnApOworCWlmIChlcnJvcikKKwkJZ290byBv
dXRfZXJybm87CisJdHJhY2VfdmZzX2ZjbnRsX3JldChyZXQpOworCXJldHVybiByZXQ7CisKKwlv
dXRfZXJybm86CisJdHJhY2VfdmZzX2ZjbnRsX2VycihlcnJvcik7CisJZXJybm8gPSBlcnJvcjsK
KwlyZXR1cm4gLTE7CiB9CiAKIFRSQUNFUE9JTlQodHJhY2VfdmZzX2FjY2VzcywgIlwiJXNcIiAw
JTBvIiwgY29uc3QgY2hhciosIGludCk7CkBAIC0xNTIzLDcyICsxNTIzLDcyIEBAIFRSQUNFUE9J
TlQodHJhY2VfdmZzX2FjY2Vzc19lcnIsICIlZCIsIGludCk7CiAgKi8KIGludCBhY2Nlc3MoY29u
c3QgY2hhciAqcGF0aG5hbWUsIGludCBtb2RlKQogewotICAgIHRyYWNlX3Zmc19hY2Nlc3MocGF0
aG5hbWUsIG1vZGUpOwotICAgIHN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOwotICAgIGNoYXIg
cGF0aFtQQVRIX01BWF07Ci0gICAgaW50IGFjYywgZXJyb3IgPSAwOworCXRyYWNlX3Zmc19hY2Nl
c3MocGF0aG5hbWUsIG1vZGUpOworCXN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOworCWNoYXIg
cGF0aFtQQVRIX01BWF07CisJaW50IGFjYywgZXJyb3IgPSAwOwogCi0gICAgYWNjID0gMDsKLSAg
ICBpZiAobW9kZSAmIFJfT0spCi0gICAgICAgIGFjYyB8PSBWUkVBRDsKLSAgICBpZiAobW9kZSAm
IFdfT0spCi0gICAgICAgIGFjYyB8PSBWV1JJVEU7CisJYWNjID0gMDsKKwlpZiAobW9kZSAmIFJf
T0spCisJCWFjYyB8PSBWUkVBRDsKKwlpZiAobW9kZSAmIFdfT0spCisJCWFjYyB8PSBWV1JJVEU7
CiAKLSAgICBpZiAoKGVycm9yID0gdGFza19jb252KHQsIHBhdGhuYW1lLCBhY2MsIHBhdGgpKSAh
PSAwKQotICAgICAgICBnb3RvIG91dF9lcnJubzsKKwlpZiAoKGVycm9yID0gdGFza19jb252KHQs
IHBhdGhuYW1lLCBhY2MsIHBhdGgpKSAhPSAwKQorCQlnb3RvIG91dF9lcnJubzsKIAotICAgIGVy
cm9yID0gc3lzX2FjY2VzcyhwYXRoLCBtb2RlKTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIGdv
dG8gb3V0X2Vycm5vOwotICAgIHRyYWNlX3Zmc19hY2Nlc3NfcmV0KCk7Ci0gICAgcmV0dXJuIDA7
Ci0gICAgb3V0X2Vycm5vOgotICAgIGVycm5vID0gZXJyb3I7Ci0gICAgdHJhY2VfdmZzX2FjY2Vz
c19lcnIoZXJyb3IpOwotICAgIHJldHVybiAtMTsKKwllcnJvciA9IHN5c19hY2Nlc3MocGF0aCwg
bW9kZSk7CisJaWYgKGVycm9yKQorCQlnb3RvIG91dF9lcnJubzsKKwl0cmFjZV92ZnNfYWNjZXNz
X3JldCgpOworCXJldHVybiAwOworCW91dF9lcnJubzoKKwllcnJubyA9IGVycm9yOworCXRyYWNl
X3Zmc19hY2Nlc3NfZXJyKGVycm9yKTsKKwlyZXR1cm4gLTE7CiB9CiAKIGludCBmYWNjZXNzYXQo
aW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwgaW50IG1vZGUsIGludCBmbGFncykKIHsK
LSAgICBpZiAoZmxhZ3MgJiBBVF9TWU1MSU5LX05PRk9MTE9XKSB7Ci0gICAgICAgIFVOSU1QTEVN
RU5URUQoImZhY2Nlc3NhdCgpIHdpdGggQVRfU1lNTElOS19OT0ZPTExPVyIpOwotICAgIH0KKwlp
ZiAoZmxhZ3MgJiBBVF9TWU1MSU5LX05PRk9MTE9XKSB7CisJCVVOSU1QTEVNRU5URUQoImZhY2Nl
c3NhdCgpIHdpdGggQVRfU1lNTElOS19OT0ZPTExPVyIpOworCX0KIAotICAgIGlmIChwYXRobmFt
ZVswXSA9PSAnLycgfHwgZGlyZmQgPT0gQVRfRkRDV0QpIHsKLSAgICAgICAgcmV0dXJuIGFjY2Vz
cyhwYXRobmFtZSwgbW9kZSk7Ci0gICAgfQorCWlmIChwYXRobmFtZVswXSA9PSAnLycgfHwgZGly
ZmQgPT0gQVRfRkRDV0QpIHsKKwkJcmV0dXJuIGFjY2VzcyhwYXRobmFtZSwgbW9kZSk7CisJfQog
Ci0gICAgc3RydWN0IGZpbGUgKmZwOwotICAgIGludCBlcnJvciA9IGZnZXQoZGlyZmQsICZmcCk7
Ci0gICAgaWYgKGVycm9yKSB7Ci0gICAgICAgIGVycm5vID0gZXJyb3I7Ci0gICAgICAgIHJldHVy
biAtMTsKLSAgICB9CisJc3RydWN0IGZpbGUgKmZwOworCWludCBlcnJvciA9IGZnZXQoZGlyZmQs
ICZmcCk7CisJaWYgKGVycm9yKSB7CisJCWVycm5vID0gZXJyb3I7CisJCXJldHVybiAtMTsKKwl9
CiAKLSAgICBzdHJ1Y3Qgdm5vZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOwotICAgIHZu
X2xvY2sodnApOworCXN0cnVjdCB2bm9kZSAqdnAgPSBmcC0+Zl9kZW50cnktPmRfdm5vZGU7CisJ
dm5fbG9jayh2cCk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Y2hhciBbXT4gdXAgKG5ldyBjaGFy
W1BBVEhfTUFYXSk7Ci0gICAgY2hhciAqcCA9IHVwLmdldCgpOworCXN0ZDo6dW5pcXVlX3B0cjxj
aGFyIFtdPiB1cCAobmV3IGNoYXJbUEFUSF9NQVhdKTsKKwljaGFyICpwID0gdXAuZ2V0KCk7CiAK
LSAgICAvKiBidWlsZCBhYnNvbHV0ZSBwYXRoICovCi0gICAgc3RybGNweShwLCBmcC0+Zl9kZW50
cnktPmRfbW91bnQtPm1fcGF0aCwgUEFUSF9NQVgpOwotICAgIHN0cmxjYXQocCwgZnAtPmZfZGVu
dHJ5LT5kX3BhdGgsIFBBVEhfTUFYKTsKLSAgICBzdHJsY2F0KHAsICIvIiwgUEFUSF9NQVgpOwot
ICAgIHN0cmxjYXQocCwgcGF0aG5hbWUsIFBBVEhfTUFYKTsKKwkvKiBidWlsZCBhYnNvbHV0ZSBw
YXRoICovCisJc3RybGNweShwLCBmcC0+Zl9kZW50cnktPmRfbW91bnQtPm1fcGF0aCwgUEFUSF9N
QVgpOworCXN0cmxjYXQocCwgZnAtPmZfZGVudHJ5LT5kX3BhdGgsIFBBVEhfTUFYKTsKKwlzdHJs
Y2F0KHAsICIvIiwgUEFUSF9NQVgpOworCXN0cmxjYXQocCwgcGF0aG5hbWUsIFBBVEhfTUFYKTsK
IAotICAgIGVycm9yID0gYWNjZXNzKHAsIG1vZGUpOworCWVycm9yID0gYWNjZXNzKHAsIG1vZGUp
OwogCi0gICAgdm5fdW5sb2NrKHZwKTsKLSAgICBmZHJvcChmcCk7CisJdm5fdW5sb2NrKHZwKTsK
KwlmZHJvcChmcCk7CiAKLSAgICByZXR1cm4gZXJyb3I7CisJcmV0dXJuIGVycm9yOwogfQogCiBl
eHRlcm4gIkMiIAogaW50IGV1aWRhY2Nlc3MoY29uc3QgY2hhciAqcGF0aG5hbWUsIGludCBtb2Rl
KQogewotICAgIHJldHVybiBhY2Nlc3MocGF0aG5hbWUsIG1vZGUpOworCXJldHVybiBhY2Nlc3Mo
cGF0aG5hbWUsIG1vZGUpOwogfQogCiB3ZWFrX2FsaWFzKGV1aWRhY2Nlc3MsZWFjY2Vzcyk7CkBA
IC0xNTk4LDQyICsxNTk4LDQyIEBAIHN0YXRpYyBpbnQKIGZzX3BpcGUoc3RydWN0IHRhc2sgKnQs
IHN0cnVjdCBtc2cgKm1zZykKIHsKICNpZmRlZiBDT05GSUdfRklGT0ZTCi0gICAgY2hhciBwYXRo
W1BBVEhfTUFYXTsKLSAgICBmaWxlX3QgcmZwLCB3ZnA7Ci0gICAgaW50IGVycm9yLCByZmQsIHdm
ZDsKLQotICAgIERQUklOVEYoVkZTREJfQ09SRSwgKCJmc19waXBlXG4iKSk7Ci0KLSAgICBpZiAo
KHJmZCA9IHRhc2tfbmV3ZmQodCkpID09IC0xKQotICAgICAgICByZXR1cm4gRU1GSUxFOwotICAg
IHQtPnRfb2ZpbGVbcmZkXSA9IChmaWxlX3QpMTsgLyogdGVtcCAqLwotCi0gICAgaWYgKCh3ZmQg
PSB0YXNrX25ld2ZkKHQpKSA9PSAtMSkgewotICAgICAgICB0LT50X29maWxlW3JmZF0gPSBudWxs
cHRyOwotICAgICAgICByZXR1cm4gRU1GSUxFOwotICAgIH0KLSAgICBzcHJpbnRmKHBhdGgsICIv
bW50L2ZpZm8vcGlwZS0leC0lZCIsICh1X2ludCl0LT50X3Rhc2tpZCwgcmZkKTsKLQotICAgIGlm
ICgoZXJyb3IgPSBzeXNfbWtub2QocGF0aCwgU19JRklGTykpICE9IDApCi0gICAgICAgIGdvdG8g
b3V0OwotICAgIGlmICgoZXJyb3IgPSBzeXNfb3BlbihwYXRoLCBPX1JET05MWSB8IE9fTk9OQkxP
Q0ssIDAsICZyZnApKSAhPSAwKSB7Ci0gICAgICAgIGdvdG8gb3V0OwotICAgIH0KLSAgICBpZiAo
KGVycm9yID0gc3lzX29wZW4ocGF0aCwgT19XUk9OTFkgfCBPX05PTkJMT0NLLCAwLCAmd2ZwKSkg
IT0gMCkgewotICAgICAgICBnb3RvIG91dDsKLSAgICB9Ci0gICAgdC0+dF9vZmlsZVtyZmRdID0g
cmZwOwotICAgIHQtPnRfb2ZpbGVbd2ZkXSA9IHdmcDsKLSAgICB0LT50X25vcGVucyArPSAyOwot
ICAgIG1zZy0+ZGF0YVswXSA9IHJmZDsKLSAgICBtc2ctPmRhdGFbMV0gPSB3ZmQ7Ci0gICAgcmV0
dXJuIDA7Ci0gICAgb3V0OgotICAgIHQtPnRfb2ZpbGVbcmZkXSA9IG51bGxwdHI7Ci0gICAgdC0+
dF9vZmlsZVt3ZmRdID0gbnVsbHB0cjsKLSAgICByZXR1cm4gZXJyb3I7CisJY2hhciBwYXRoW1BB
VEhfTUFYXTsKKwlmaWxlX3QgcmZwLCB3ZnA7CisJaW50IGVycm9yLCByZmQsIHdmZDsKKworCURQ
UklOVEYoVkZTREJfQ09SRSwgKCJmc19waXBlXG4iKSk7CisKKwlpZiAoKHJmZCA9IHRhc2tfbmV3
ZmQodCkpID09IC0xKQorCQlyZXR1cm4gRU1GSUxFOworCXQtPnRfb2ZpbGVbcmZkXSA9IChmaWxl
X3QpMTsgLyogdGVtcCAqLworCisJaWYgKCh3ZmQgPSB0YXNrX25ld2ZkKHQpKSA9PSAtMSkgewor
CQl0LT50X29maWxlW3JmZF0gPSBudWxscHRyOworCQlyZXR1cm4gRU1GSUxFOworCX0KKwlzcHJp
bnRmKHBhdGgsICIvbW50L2ZpZm8vcGlwZS0leC0lZCIsICh1X2ludCl0LT50X3Rhc2tpZCwgcmZk
KTsKKworCWlmICgoZXJyb3IgPSBzeXNfbWtub2QocGF0aCwgU19JRklGTykpICE9IDApCisJCWdv
dG8gb3V0OworCWlmICgoZXJyb3IgPSBzeXNfb3BlbihwYXRoLCBPX1JET05MWSB8IE9fTk9OQkxP
Q0ssIDAsICZyZnApKSAhPSAwKSB7CisJCWdvdG8gb3V0OworCX0KKwlpZiAoKGVycm9yID0gc3lz
X29wZW4ocGF0aCwgT19XUk9OTFkgfCBPX05PTkJMT0NLLCAwLCAmd2ZwKSkgIT0gMCkgeworCQln
b3RvIG91dDsKKwl9CisJdC0+dF9vZmlsZVtyZmRdID0gcmZwOworCXQtPnRfb2ZpbGVbd2ZkXSA9
IHdmcDsKKwl0LT50X25vcGVucyArPSAyOworCW1zZy0+ZGF0YVswXSA9IHJmZDsKKwltc2ctPmRh
dGFbMV0gPSB3ZmQ7CisJcmV0dXJuIDA7CisJb3V0OgorCXQtPnRfb2ZpbGVbcmZkXSA9IG51bGxw
dHI7CisJdC0+dF9vZmlsZVt3ZmRdID0gbnVsbHB0cjsKKwlyZXR1cm4gZXJyb3I7CiAjZWxzZQot
ICAgIHJldHVybiBFTk9TWVM7CisJcmV0dXJuIEVOT1NZUzsKICNlbmRpZgogfQogI2VuZGlmCkBA
IC0xNjQ3LDI1ICsxNjQ3LDI1IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2lzYXR0eV9lcnIsICIl
ZCIsIGludCk7CiAgKi8KIGludCBpc2F0dHkoaW50IGZkKQogewotICAgIHN0cnVjdCBmaWxlICpm
cDsKLSAgICBpbnQgaXN0dHkgPSAwOworCXN0cnVjdCBmaWxlICpmcDsKKwlpbnQgaXN0dHkgPSAw
OwogCi0gICAgdHJhY2VfdmZzX2lzYXR0eShmZCk7Ci0gICAgZmlsZXJlZiBmKGZpbGVyZWZfZnJv
bV9mZChmZCkpOwotICAgIGlmICghZikgewotICAgICAgICBlcnJubyA9IEVCQURGOwotICAgICAg
ICB0cmFjZV92ZnNfaXNhdHR5X2VycihlcnJubyk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9
CisJdHJhY2VfdmZzX2lzYXR0eShmZCk7CisJZmlsZXJlZiBmKGZpbGVyZWZfZnJvbV9mZChmZCkp
OworCWlmICghZikgeworCQllcnJubyA9IEVCQURGOworCQl0cmFjZV92ZnNfaXNhdHR5X2Vycihl
cnJubyk7CisJCXJldHVybiAtMTsKKwl9CiAKLSAgICBmcCA9IGYuZ2V0KCk7Ci0gICAgaWYgKGR5
bmFtaWNfY2FzdDx0dHlfZmlsZSo+KGZwKSB8fAotICAgICAgICAoZnAtPmZfZGVudHJ5ICYmIGZw
LT5mX2RlbnRyeS0+ZF92bm9kZS0+dl9mbGFncyAmIFZJU1RUWSkpIHsKLSAgICAgICAgaXN0dHkg
PSAxOwotICAgIH0KKwlmcCA9IGYuZ2V0KCk7CisJaWYgKGR5bmFtaWNfY2FzdDx0dHlfZmlsZSo+
KGZwKSB8fAorCQkoZnAtPmZfZGVudHJ5ICYmIGZwLT5mX2RlbnRyeS0+ZF92bm9kZS0+dl9mbGFn
cyAmIFZJU1RUWSkpIHsKKwkJaXN0dHkgPSAxOworCX0KIAotICAgIHRyYWNlX3Zmc19pc2F0dHlf
cmV0KGlzdHR5KTsKLSAgICByZXR1cm4gaXN0dHk7CisJdHJhY2VfdmZzX2lzYXR0eV9yZXQoaXN0
dHkpOworCXJldHVybiBpc3R0eTsKIH0KIAogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfdHJ1bmNhdGUs
ICJcIiVzXCIgMHgleCIsIGNvbnN0IGNoYXIqLCBvZmZfdCk7CkBAIC0xNjc0LDI2ICsxNjc0LDI2
IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX3RydW5jYXRlX2VyciwgIiVkIiwgaW50KTsKIAogaW50
IHRydW5jYXRlKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBvZmZfdCBsZW5ndGgpCiB7Ci0gICAgdHJh
Y2VfdmZzX3RydW5jYXRlKHBhdGhuYW1lLCBsZW5ndGgpOwotICAgIHN0cnVjdCB0YXNrICp0ID0g
bWFpbl90YXNrOwotICAgIGNoYXIgcGF0aFtQQVRIX01BWF07Ci0gICAgaW50IGVycm9yOworCXRy
YWNlX3Zmc190cnVuY2F0ZShwYXRobmFtZSwgbGVuZ3RoKTsKKwlzdHJ1Y3QgdGFzayAqdCA9IG1h
aW5fdGFzazsKKwljaGFyIHBhdGhbUEFUSF9NQVhdOworCWludCBlcnJvcjsKIAotICAgIGVycm9y
ID0gRU5PRU5UOwotICAgIGlmIChwYXRobmFtZSA9PSBudWxscHRyKQotICAgICAgICBnb3RvIG91
dF9lcnJubzsKLSAgICBpZiAoKGVycm9yID0gdGFza19jb252KHQsIHBhdGhuYW1lLCBWV1JJVEUs
IHBhdGgpKSAhPSAwKQotICAgICAgICBnb3RvIG91dF9lcnJubzsKKwllcnJvciA9IEVOT0VOVDsK
KwlpZiAocGF0aG5hbWUgPT0gbnVsbHB0cikKKwkJZ290byBvdXRfZXJybm87CisJaWYgKChlcnJv
ciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwgVldSSVRFLCBwYXRoKSkgIT0gMCkKKwkJZ290byBv
dXRfZXJybm87CiAKLSAgICBlcnJvciA9IHN5c190cnVuY2F0ZShwYXRoLCBsZW5ndGgpOwotICAg
IGlmIChlcnJvcikKLSAgICAgICAgZ290byBvdXRfZXJybm87Ci0gICAgdHJhY2VfdmZzX3RydW5j
YXRlX3JldCgpOwotICAgIHJldHVybiAwOwotICAgIG91dF9lcnJubzoKLSAgICBlcnJubyA9IGVy
cm9yOwotICAgIHRyYWNlX3Zmc190cnVuY2F0ZV9lcnIoZXJyb3IpOwotICAgIHJldHVybiAtMTsK
KwllcnJvciA9IHN5c190cnVuY2F0ZShwYXRoLCBsZW5ndGgpOworCWlmIChlcnJvcikKKwkJZ290
byBvdXRfZXJybm87CisJdHJhY2VfdmZzX3RydW5jYXRlX3JldCgpOworCXJldHVybiAwOworCW91
dF9lcnJubzoKKwllcnJubyA9IGVycm9yOworCXRyYWNlX3Zmc190cnVuY2F0ZV9lcnIoZXJyb3Ip
OworCXJldHVybiAtMTsKIH0KIAogTEZTNjQodHJ1bmNhdGUpOwpAQCAtMTcwNCw1OCArMTcwNCw1
OCBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19mdHJ1bmNhdGVfZXJyLCAiJWQiLCBpbnQpOwogCiBp
bnQgZnRydW5jYXRlKGludCBmZCwgb2ZmX3QgbGVuZ3RoKQogewotICAgIHRyYWNlX3Zmc19mdHJ1
bmNhdGUoZmQsIGxlbmd0aCk7Ci0gICAgc3RydWN0IGZpbGUgKmZwOwotICAgIGludCBlcnJvcjsK
Kwl0cmFjZV92ZnNfZnRydW5jYXRlKGZkLCBsZW5ndGgpOworCXN0cnVjdCBmaWxlICpmcDsKKwlp
bnQgZXJyb3I7CiAKLSAgICBlcnJvciA9IGZnZXQoZmQsICZmcCk7Ci0gICAgaWYgKGVycm9yKQot
ICAgICAgICBnb3RvIG91dF9lcnJubzsKKwllcnJvciA9IGZnZXQoZmQsICZmcCk7CisJaWYgKGVy
cm9yKQorCQlnb3RvIG91dF9lcnJubzsKIAotICAgIGVycm9yID0gc3lzX2Z0cnVuY2F0ZShmcCwg
bGVuZ3RoKTsKLSAgICBmZHJvcChmcCk7CisJZXJyb3IgPSBzeXNfZnRydW5jYXRlKGZwLCBsZW5n
dGgpOworCWZkcm9wKGZwKTsKIAotICAgIGlmIChlcnJvcikKLSAgICAgICAgZ290byBvdXRfZXJy
bm87Ci0gICAgdHJhY2VfdmZzX2Z0cnVuY2F0ZV9yZXQoKTsKLSAgICByZXR1cm4gMDsKKwlpZiAo
ZXJyb3IpCisJCWdvdG8gb3V0X2Vycm5vOworCXRyYWNlX3Zmc19mdHJ1bmNhdGVfcmV0KCk7CisJ
cmV0dXJuIDA7CiAKLSAgICBvdXRfZXJybm86Ci0gICAgZXJybm8gPSBlcnJvcjsKLSAgICB0cmFj
ZV92ZnNfZnRydW5jYXRlX2VycihlcnJvcik7Ci0gICAgcmV0dXJuIC0xOworCW91dF9lcnJubzoK
KwllcnJubyA9IGVycm9yOworCXRyYWNlX3Zmc19mdHJ1bmNhdGVfZXJyKGVycm9yKTsKKwlyZXR1
cm4gLTE7CiB9CiAKIExGUzY0KGZ0cnVuY2F0ZSk7CiAKIHNzaXplX3QgcmVhZGxpbmsoY29uc3Qg
Y2hhciAqcGF0aG5hbWUsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnNpemUpCiB7Ci0gICAgc3RydWN0
IHRhc2sgKnQgPSBtYWluX3Rhc2s7Ci0gICAgY2hhciBwYXRoW1BBVEhfTUFYXTsKLSAgICBpbnQg
ZXJyb3I7Ci0gICAgc3NpemVfdCBzaXplOworCXN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOwor
CWNoYXIgcGF0aFtQQVRIX01BWF07CisJaW50IGVycm9yOworCXNzaXplX3Qgc2l6ZTsKIAotICAg
IGVycm9yID0gLUVJTlZBTDsKLSAgICBpZiAoYnVmc2l6ZSA8PSAwKQotICAgICAgICBnb3RvIG91
dF9lcnJubzsKKwllcnJvciA9IC1FSU5WQUw7CisJaWYgKGJ1ZnNpemUgPD0gMCkKKwkJZ290byBv
dXRfZXJybm87CiAKLSAgICBlcnJvciA9IEVOT0VOVDsKLSAgICBpZiAocGF0aG5hbWUgPT0gbnVs
bHB0cikKLSAgICAgICAgZ290byBvdXRfZXJybm87Ci0gICAgZXJyb3IgPSB0YXNrX2NvbnYodCwg
cGF0aG5hbWUsIFZXUklURSwgcGF0aCk7Ci0gICAgaWYgKGVycm9yKQotICAgICAgICBnb3RvIG91
dF9lcnJubzsKKwllcnJvciA9IEVOT0VOVDsKKwlpZiAocGF0aG5hbWUgPT0gbnVsbHB0cikKKwkJ
Z290byBvdXRfZXJybm87CisJZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5hbWUsIFZXUklURSwg
cGF0aCk7CisJaWYgKGVycm9yKQorCQlnb3RvIG91dF9lcnJubzsKIAotICAgIHNpemUgID0gMDsK
LSAgICBlcnJvciA9IHN5c19yZWFkbGluayhwYXRoLCBidWYsIGJ1ZnNpemUsICZzaXplKTsKKwlz
aXplICA9IDA7CisJZXJyb3IgPSBzeXNfcmVhZGxpbmsocGF0aCwgYnVmLCBidWZzaXplLCAmc2l6
ZSk7CiAKLSAgICBpZiAoZXJyb3IgIT0gMCkKLSAgICAgICAgZ290byBvdXRfZXJybm87CisJaWYg
KGVycm9yICE9IDApCisJCWdvdG8gb3V0X2Vycm5vOwogCi0gICAgcmV0dXJuIHNpemU7Ci0gICAg
b3V0X2Vycm5vOgotICAgIGVycm5vID0gZXJyb3I7Ci0gICAgcmV0dXJuIC0xOworCXJldHVybiBz
aXplOworCW91dF9lcnJubzoKKwllcnJubyA9IGVycm9yOworCXJldHVybiAtMTsKIH0KIAogVFJB
Q0VQT0lOVCh0cmFjZV92ZnNfZmFsbG9jYXRlLCAiJWQgJWQgMHgleCAweCV4IiwgaW50LCBpbnQs
IGxvZmZfdCwgbG9mZl90KTsKQEAgLTE3NjQsMjYgKzE3NjQsMjYgQEAgVFJBQ0VQT0lOVCh0cmFj
ZV92ZnNfZmFsbG9jYXRlX2VyciwgIiVkIiwgaW50KTsKIAogaW50IGZhbGxvY2F0ZShpbnQgZmQs
IGludCBtb2RlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuKQogewotICAgIHN0cnVjdCBmaWxl
ICpmcDsKLSAgICBpbnQgZXJyb3I7CisJc3RydWN0IGZpbGUgKmZwOworCWludCBlcnJvcjsKIAot
ICAgIHRyYWNlX3Zmc19mYWxsb2NhdGUoZmQsIG1vZGUsIG9mZnNldCwgbGVuKTsKLSAgICBlcnJv
ciA9IGZnZXQoZmQsICZmcCk7Ci0gICAgaWYgKGVycm9yKQotICAgICAgICBnb3RvIG91dF9lcnJu
bzsKKwl0cmFjZV92ZnNfZmFsbG9jYXRlKGZkLCBtb2RlLCBvZmZzZXQsIGxlbik7CisJZXJyb3Ig
PSBmZ2V0KGZkLCAmZnApOworCWlmIChlcnJvcikKKwkJZ290byBvdXRfZXJybm87CiAKLSAgICBl
cnJvciA9IHN5c19mYWxsb2NhdGUoZnAsIG1vZGUsIG9mZnNldCwgbGVuKTsKLSAgICBmZHJvcChm
cCk7CisJZXJyb3IgPSBzeXNfZmFsbG9jYXRlKGZwLCBtb2RlLCBvZmZzZXQsIGxlbik7CisJZmRy
b3AoZnApOwogCi0gICAgaWYgKGVycm9yKQotICAgICAgICBnb3RvIG91dF9lcnJubzsKLSAgICB0
cmFjZV92ZnNfZmFsbG9jYXRlX3JldCgpOwotICAgIHJldHVybiAwOworCWlmIChlcnJvcikKKwkJ
Z290byBvdXRfZXJybm87CisJdHJhY2VfdmZzX2ZhbGxvY2F0ZV9yZXQoKTsKKwlyZXR1cm4gMDsK
IAotICAgIG91dF9lcnJubzoKLSAgICB0cmFjZV92ZnNfZmFsbG9jYXRlX2VycihlcnJvcik7Ci0g
ICAgZXJybm8gPSBlcnJvcjsKLSAgICByZXR1cm4gLTE7CisJb3V0X2Vycm5vOgorCXRyYWNlX3Zm
c19mYWxsb2NhdGVfZXJyKGVycm9yKTsKKwllcnJubyA9IGVycm9yOworCXJldHVybiAtMTsKIH0K
IAogTEZTNjQoZmFsbG9jYXRlKTsKQEAgLTE3OTQsNjAgKzE3OTQsNjAgQEAgVFJBQ0VQT0lOVCh0
cmFjZV92ZnNfdXRpbWVzX2VyciwgIiVkIiwgaW50KTsKIAogaW50IGZ1dGltZXMoaW50IGZkLCBj
b25zdCBzdHJ1Y3QgdGltZXZhbCB0aW1lc1syXSkKIHsKLSAgICByZXR1cm4gZnV0aW1lc2F0KGZk
LCBudWxscHRyLCB0aW1lcyk7CisJcmV0dXJuIGZ1dGltZXNhdChmZCwgbnVsbHB0ciwgdGltZXMp
OwogfQogCiBpbnQgZnV0aW1lc2F0KGludCBkaXJmZCwgY29uc3QgY2hhciAqcGF0aG5hbWUsIGNv
bnN0IHN0cnVjdCB0aW1ldmFsIHRpbWVzWzJdKQogewotICAgIHN0cnVjdCBzdGF0IHN0OwotICAg
IHN0cnVjdCBmaWxlICpmcDsKLSAgICBpbnQgZXJyb3I7Ci0gICAgY2hhciAqYWJzb2x1dGVfcGF0
aDsKLQotICAgIGlmICgocGF0aG5hbWUgJiYgcGF0aG5hbWVbMF0gPT0gJy8nKSB8fCBkaXJmZCA9
PSBBVF9GRENXRCkKLSAgICAgICAgcmV0dXJuIHV0aW1lcyhwYXRobmFtZSwgdGltZXMpOwotCi0g
ICAgLy8gTm90ZTogaWYgcGF0aG5hbWUgPT0gbnVsbHB0ciwgZnV0aW1lc2F0IG9wZXJhdGVzIG9u
IGRpcmZkIGl0c2VsZiwgYW5kIGluCi0gICAgLy8gdGhhdCBjYXNlIGl0IGRvZXNuJ3QgaGF2ZSB0
byBiZSBhIGRpcmVjdG9yeS4KLSAgICBpZiAocGF0aG5hbWUpIHsKLSAgICAgICAgZXJyb3IgPSBm
c3RhdChkaXJmZCwgJnN0KTsKLSAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICBlcnJv
ciA9IGVycm5vOwotICAgICAgICAgICAgZ290byBvdXRfZXJybm87Ci0gICAgICAgIH0KLQotICAg
ICAgICBpZiAoIVNfSVNESVIoc3Quc3RfbW9kZSkpewotICAgICAgICAgICAgZXJyb3IgPSBFTk9U
RElSOwotICAgICAgICAgICAgZ290byBvdXRfZXJybm87Ci0gICAgICAgIH0KLSAgICB9CisJc3Ry
dWN0IHN0YXQgc3Q7CisJc3RydWN0IGZpbGUgKmZwOworCWludCBlcnJvcjsKKwljaGFyICphYnNv
bHV0ZV9wYXRoOworCisJaWYgKChwYXRobmFtZSAmJiBwYXRobmFtZVswXSA9PSAnLycpIHx8IGRp
cmZkID09IEFUX0ZEQ1dEKQorCQlyZXR1cm4gdXRpbWVzKHBhdGhuYW1lLCB0aW1lcyk7CisKKwkv
LyBOb3RlOiBpZiBwYXRobmFtZSA9PSBudWxscHRyLCBmdXRpbWVzYXQgb3BlcmF0ZXMgb24gZGly
ZmQgaXRzZWxmLCBhbmQgaW4KKwkvLyB0aGF0IGNhc2UgaXQgZG9lc24ndCBoYXZlIHRvIGJlIGEg
ZGlyZWN0b3J5LgorCWlmIChwYXRobmFtZSkgeworCQllcnJvciA9IGZzdGF0KGRpcmZkLCAmc3Qp
OworCQlpZiAoZXJyb3IpIHsKKwkJCWVycm9yID0gZXJybm87CisJCQlnb3RvIG91dF9lcnJubzsK
KwkJfQorCisJCWlmICghU19JU0RJUihzdC5zdF9tb2RlKSl7CisJCQllcnJvciA9IEVOT1RESVI7
CisJCQlnb3RvIG91dF9lcnJubzsKKwkJfQorCX0KIAotICAgIGVycm9yID0gZmdldChkaXJmZCwg
JmZwKTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIGdvdG8gb3V0X2Vycm5vOworCWVycm9yID0g
ZmdldChkaXJmZCwgJmZwKTsKKwlpZiAoZXJyb3IpCisJCWdvdG8gb3V0X2Vycm5vOwogCi0gICAg
LyogYnVpbGQgYWJzb2x1dGUgcGF0aCAqLwotICAgIGFic29sdXRlX3BhdGggPSAoY2hhciopbWFs
bG9jKFBBVEhfTUFYKTsKLSAgICBzdHJsY3B5KGFic29sdXRlX3BhdGgsIGZwLT5mX2RlbnRyeS0+
ZF9tb3VudC0+bV9wYXRoLCBQQVRIX01BWCk7Ci0gICAgc3RybGNhdChhYnNvbHV0ZV9wYXRoLCBm
cC0+Zl9kZW50cnktPmRfcGF0aCwgUEFUSF9NQVgpOworCS8qIGJ1aWxkIGFic29sdXRlIHBhdGgg
Ki8KKwlhYnNvbHV0ZV9wYXRoID0gKGNoYXIqKW1hbGxvYyhQQVRIX01BWCk7CisJc3RybGNweShh
YnNvbHV0ZV9wYXRoLCBmcC0+Zl9kZW50cnktPmRfbW91bnQtPm1fcGF0aCwgUEFUSF9NQVgpOwor
CXN0cmxjYXQoYWJzb2x1dGVfcGF0aCwgZnAtPmZfZGVudHJ5LT5kX3BhdGgsIFBBVEhfTUFYKTsK
IAotICAgIGlmIChwYXRobmFtZSkgewotICAgICAgICBzdHJsY2F0KGFic29sdXRlX3BhdGgsICIv
IiwgUEFUSF9NQVgpOwotICAgICAgICBzdHJsY2F0KGFic29sdXRlX3BhdGgsIHBhdGhuYW1lLCBQ
QVRIX01BWCk7Ci0gICAgfQorCWlmIChwYXRobmFtZSkgeworCQlzdHJsY2F0KGFic29sdXRlX3Bh
dGgsICIvIiwgUEFUSF9NQVgpOworCQlzdHJsY2F0KGFic29sdXRlX3BhdGgsIHBhdGhuYW1lLCBQ
QVRIX01BWCk7CisJfQogCi0gICAgZXJyb3IgPSB1dGltZXMoYWJzb2x1dGVfcGF0aCwgdGltZXMp
OwotICAgIGZyZWUoYWJzb2x1dGVfcGF0aCk7CisJZXJyb3IgPSB1dGltZXMoYWJzb2x1dGVfcGF0
aCwgdGltZXMpOworCWZyZWUoYWJzb2x1dGVfcGF0aCk7CiAKLSAgICBmZHJvcChmcCk7CisJZmRy
b3AoZnApOwogCi0gICAgaWYgKGVycm9yKQotICAgICAgICBnb3RvIG91dF9lcnJubzsKLSAgICBy
ZXR1cm4gMDsKKwlpZiAoZXJyb3IpCisJCWdvdG8gb3V0X2Vycm5vOworCXJldHVybiAwOwogCi0g
ICAgb3V0X2Vycm5vOgotICAgIGVycm5vID0gZXJyb3I7Ci0gICAgcmV0dXJuIC0xOworCW91dF9l
cnJubzoKKwllcnJubyA9IGVycm9yOworCXJldHVybiAtMTsKIH0KIAogVFJBQ0VQT0lOVCh0cmFj
ZV92ZnNfdXRpbWVuc2F0LCAiXCIlc1wiIiwgY29uc3QgY2hhciopOwpAQCAtMTg1NywxNyArMTg1
NywxNyBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc191dGltZW5zYXRfZXJyLCAiJWQiLCBpbnQpOwog
ZXh0ZXJuICJDIgogaW50IHV0aW1lbnNhdChpbnQgZGlyZmQsIGNvbnN0IGNoYXIgKnBhdGhuYW1l
LCBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgdGltZXNbMl0sIGludCBmbGFncykKIHsKLSAgICB0cmFj
ZV92ZnNfdXRpbWVuc2F0KHBhdGhuYW1lKTsKKwl0cmFjZV92ZnNfdXRpbWVuc2F0KHBhdGhuYW1l
KTsKIAotICAgIGF1dG8gZXJyb3IgPSBzeXNfdXRpbWVuc2F0KGRpcmZkLCBwYXRobmFtZSwgdGlt
ZXMsIGZsYWdzKTsKLSAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgdHJhY2VfdmZzX3V0aW1lbnNh
dF9lcnIoZXJyb3IpOwotICAgICAgICBlcnJubyA9IGVycm9yOwotICAgICAgICByZXR1cm4gLTE7
Ci0gICAgfQorCWF1dG8gZXJyb3IgPSBzeXNfdXRpbWVuc2F0KGRpcmZkLCBwYXRobmFtZSwgdGlt
ZXMsIGZsYWdzKTsKKwlpZiAoZXJyb3IpIHsKKwkJdHJhY2VfdmZzX3V0aW1lbnNhdF9lcnIoZXJy
b3IpOworCQllcnJubyA9IGVycm9yOworCQlyZXR1cm4gLTE7CisJfQogCi0gICAgdHJhY2VfdmZz
X3V0aW1lbnNhdF9yZXQoKTsKLSAgICByZXR1cm4gMDsKKwl0cmFjZV92ZnNfdXRpbWVuc2F0X3Jl
dCgpOworCXJldHVybiAwOwogfQogCiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19mdXRpbWVucywgIiVk
IiwgaW50KTsKQEAgLTE4NzcsNzMgKzE4NzcsNzMgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZnV0
aW1lbnNfZXJyLCAiJWQiLCBpbnQpOwogZXh0ZXJuICJDIgogaW50IGZ1dGltZW5zKGludCBmZCwg
Y29uc3Qgc3RydWN0IHRpbWVzcGVjIHRpbWVzWzJdKQogewotICAgIHRyYWNlX3Zmc19mdXRpbWVu
cyhmZCk7CisJdHJhY2VfdmZzX2Z1dGltZW5zKGZkKTsKIAotICAgIGF1dG8gZXJyb3IgPSBzeXNf
ZnV0aW1lbnMoZmQsIHRpbWVzKTsKLSAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgdHJhY2VfdmZz
X2Z1dGltZW5zX2VycihlcnJvcik7Ci0gICAgICAgIGVycm5vID0gZXJyb3I7Ci0gICAgICAgIHJl
dHVybiAtMTsKLSAgICB9CisJYXV0byBlcnJvciA9IHN5c19mdXRpbWVucyhmZCwgdGltZXMpOwor
CWlmIChlcnJvcikgeworCQl0cmFjZV92ZnNfZnV0aW1lbnNfZXJyKGVycm9yKTsKKwkJZXJybm8g
PSBlcnJvcjsKKwkJcmV0dXJuIC0xOworCX0KIAotICAgIHRyYWNlX3Zmc19mdXRpbWVuc19yZXQo
KTsKLSAgICByZXR1cm4gMDsKKwl0cmFjZV92ZnNfZnV0aW1lbnNfcmV0KCk7CisJcmV0dXJuIDA7
CiB9CiAKIHN0YXRpYyBpbnQgZG9fdXRpbWVzKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBjb25zdCBz
dHJ1Y3QgdGltZXZhbCB0aW1lc1syXSwgaW50IGZsYWdzKQogewotICAgIHN0cnVjdCB0YXNrICp0
ID0gbWFpbl90YXNrOwotICAgIGNoYXIgcGF0aFtQQVRIX01BWF07Ci0gICAgaW50IGVycm9yOwor
CXN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOworCWNoYXIgcGF0aFtQQVRIX01BWF07CisJaW50
IGVycm9yOwogCi0gICAgdHJhY2VfdmZzX3V0aW1lcyhwYXRobmFtZSk7CisJdHJhY2VfdmZzX3V0
aW1lcyhwYXRobmFtZSk7CiAKLSAgICBlcnJvciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwgMCwg
cGF0aCk7Ci0gICAgaWYgKGVycm9yKSB7Ci0gICAgICAgIHRyYWNlX3Zmc191dGltZXNfZXJyKGVy
cm9yKTsKLSAgICAgICAgcmV0dXJuIGxpYmNfZXJyb3IoZXJyb3IpOwotICAgIH0KKwllcnJvciA9
IHRhc2tfY29udih0LCBwYXRobmFtZSwgMCwgcGF0aCk7CisJaWYgKGVycm9yKSB7CisJCXRyYWNl
X3Zmc191dGltZXNfZXJyKGVycm9yKTsKKwkJcmV0dXJuIGxpYmNfZXJyb3IoZXJyb3IpOworCX0K
IAotICAgIGVycm9yID0gc3lzX3V0aW1lcyhwYXRoLCB0aW1lcywgZmxhZ3MpOwotICAgIGlmIChl
cnJvcikgewotICAgICAgICB0cmFjZV92ZnNfdXRpbWVzX2VycihlcnJvcik7Ci0gICAgICAgIHJl
dHVybiBsaWJjX2Vycm9yKGVycm9yKTsKLSAgICB9CisJZXJyb3IgPSBzeXNfdXRpbWVzKHBhdGgs
IHRpbWVzLCBmbGFncyk7CisJaWYgKGVycm9yKSB7CisJCXRyYWNlX3Zmc191dGltZXNfZXJyKGVy
cm9yKTsKKwkJcmV0dXJuIGxpYmNfZXJyb3IoZXJyb3IpOworCX0KIAotICAgIHRyYWNlX3Zmc191
dGltZXNfcmV0KCk7Ci0gICAgcmV0dXJuIDA7CisJdHJhY2VfdmZzX3V0aW1lc19yZXQoKTsKKwly
ZXR1cm4gMDsKIH0KIAogZXh0ZXJuICJDIgogaW50IHV0aW1lcyhjb25zdCBjaGFyICpwYXRobmFt
ZSwgY29uc3Qgc3RydWN0IHRpbWV2YWwgdGltZXNbMl0pCiB7Ci0gICAgcmV0dXJuIGRvX3V0aW1l
cyhwYXRobmFtZSwgdGltZXMsIDApOworCXJldHVybiBkb191dGltZXMocGF0aG5hbWUsIHRpbWVz
LCAwKTsKIH0KIAogZXh0ZXJuICJDIgogaW50IGx1dGltZXMoY29uc3QgY2hhciAqcGF0aG5hbWUs
IGNvbnN0IHN0cnVjdCB0aW1ldmFsIHRpbWVzWzJdKQogewotICAgIHJldHVybiBkb191dGltZXMo
cGF0aG5hbWUsIHRpbWVzLCBBVF9TWU1MSU5LX05PRk9MTE9XKTsKKwlyZXR1cm4gZG9fdXRpbWVz
KHBhdGhuYW1lLCB0aW1lcywgQVRfU1lNTElOS19OT0ZPTExPVyk7CiB9CiAKIGV4dGVybiAiQyIK
IGludCB1dGltZShjb25zdCBjaGFyICpwYXRobmFtZSwgY29uc3Qgc3RydWN0IHV0aW1idWYgKnQp
CiB7Ci0gICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDo6Y2hyb25vOwotCi0gICAgc3RydWN0IHRpbWV2
YWwgdGltZXNbMl07Ci0gICAgdGltZXNbMF0udHZfdXNlYyA9IDA7Ci0gICAgdGltZXNbMV0udHZf
dXNlYyA9IDA7Ci0gICAgaWYgKCF0KSB7Ci0gICAgICAgIGxvbmcgaW50IHRzZWMgPSBkdXJhdGlv
bl9jYXN0PHNlY29uZHM+KG9zdjo6Y2xvY2s6OndhbGw6Om5vdygpLnRpbWVfc2luY2VfZXBvY2go
KSkuY291bnQoKTsKLSAgICAgICAgdGltZXNbMF0udHZfc2VjID0gdHNlYzsKLSAgICAgICAgdGlt
ZXNbMV0udHZfc2VjID0gdHNlYzsKLSAgICB9IGVsc2UgewotICAgICAgICB0aW1lc1swXS50dl9z
ZWMgPSB0LT5hY3RpbWU7Ci0gICAgICAgIHRpbWVzWzFdLnR2X3NlYyA9IHQtPm1vZHRpbWU7Ci0g
ICAgfQorCXVzaW5nIG5hbWVzcGFjZSBzdGQ6OmNocm9ubzsKKworCXN0cnVjdCB0aW1ldmFsIHRp
bWVzWzJdOworCXRpbWVzWzBdLnR2X3VzZWMgPSAwOworCXRpbWVzWzFdLnR2X3VzZWMgPSAwOwor
CWlmICghdCkgeworCQlsb25nIGludCB0c2VjID0gZHVyYXRpb25fY2FzdDxzZWNvbmRzPihvc3Y6
OmNsb2NrOjp3YWxsOjpub3coKS50aW1lX3NpbmNlX2Vwb2NoKCkpLmNvdW50KCk7CisJCXRpbWVz
WzBdLnR2X3NlYyA9IHRzZWM7CisJCXRpbWVzWzFdLnR2X3NlYyA9IHRzZWM7CisJfSBlbHNlIHsK
KwkJdGltZXNbMF0udHZfc2VjID0gdC0+YWN0aW1lOworCQl0aW1lc1sxXS50dl9zZWMgPSB0LT5t
b2R0aW1lOworCX0KIAotICAgIHJldHVybiB1dGltZXMocGF0aG5hbWUsIHRpbWVzKTsKKwlyZXR1
cm4gdXRpbWVzKHBhdGhuYW1lLCB0aW1lcyk7CiB9CiAKIFRSQUNFUE9JTlQodHJhY2VfdmZzX2No
bW9kLCAiXCIlc1wiIDAlMG8iLCBjb25zdCBjaGFyKiwgbW9kZV90KTsKQEAgLTE5NTIsMjMgKzE5
NTIsMjMgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfY2htb2RfZXJyLCAiJWQiLCBpbnQpOwogCiBp
bnQgY2htb2QoY29uc3QgY2hhciAqcGF0aG5hbWUsIG1vZGVfdCBtb2RlKQogewotICAgIHRyYWNl
X3Zmc19jaG1vZChwYXRobmFtZSwgbW9kZSk7Ci0gICAgc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rh
c2s7Ci0gICAgY2hhciBwYXRoW1BBVEhfTUFYXTsKLSAgICBpbnQgZXJyb3IgPSBFTk9FTlQ7Ci0g
ICAgaWYgKHBhdGhuYW1lID09IG51bGxwdHIpCi0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwotICAg
IGlmICgoZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5hbWUsIFZXUklURSwgcGF0aCkpICE9IDAp
Ci0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwotICAgIGVycm9yID0gc3lzX2NobW9kKHBhdGgsIG1v
ZGUgJiBBTExQRVJNUyk7Ci0gICAgaWYgKGVycm9yKQotICAgICAgICBnb3RvIG91dF9lcnJubzsK
LSAgICB0cmFjZV92ZnNfY2htb2RfcmV0KCk7Ci0gICAgcmV0dXJuIDA7CisJdHJhY2VfdmZzX2No
bW9kKHBhdGhuYW1lLCBtb2RlKTsKKwlzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKKwljaGFy
IHBhdGhbUEFUSF9NQVhdOworCWludCBlcnJvciA9IEVOT0VOVDsKKwlpZiAocGF0aG5hbWUgPT0g
bnVsbHB0cikKKwkJZ290byBvdXRfZXJybm87CisJaWYgKChlcnJvciA9IHRhc2tfY29udih0LCBw
YXRobmFtZSwgVldSSVRFLCBwYXRoKSkgIT0gMCkKKwkJZ290byBvdXRfZXJybm87CisJZXJyb3Ig
PSBzeXNfY2htb2QocGF0aCwgbW9kZSAmIEFMTFBFUk1TKTsKKwlpZiAoZXJyb3IpCisJCWdvdG8g
b3V0X2Vycm5vOworCXRyYWNlX3Zmc19jaG1vZF9yZXQoKTsKKwlyZXR1cm4gMDsKIG91dF9lcnJu
bzoKLSAgICB0cmFjZV92ZnNfY2htb2RfZXJyKGVycm9yKTsKLSAgICBlcnJubyA9IGVycm9yOwot
ICAgIHJldHVybiAtMTsKKwl0cmFjZV92ZnNfY2htb2RfZXJyKGVycm9yKTsKKwllcnJubyA9IGVy
cm9yOworCXJldHVybiAtMTsKIH0KIAogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZmNobW9kLCAiXCIl
ZFwiIDAlMG8iLCBpbnQsIG1vZGVfdCk7CkBAIC0xOTc2LDE1ICsxOTc2LDE1IEBAIFRSQUNFUE9J
TlQodHJhY2VfdmZzX2ZjaG1vZF9yZXQsICIiKTsKIAogaW50IGZjaG1vZChpbnQgZmQsIG1vZGVf
dCBtb2RlKQogewotICAgIHRyYWNlX3Zmc19mY2htb2QoZmQsIG1vZGUpOwotICAgIGF1dG8gZXJy
b3IgPSBzeXNfZmNobW9kKGZkLCBtb2RlICYgQUxMUEVSTVMpOwotICAgIHRyYWNlX3Zmc19mY2ht
b2RfcmV0KCk7Ci0gICAgaWYgKGVycm9yKSB7Ci0gICAgICAgIGVycm5vID0gZXJyb3I7Ci0gICAg
ICAgIHJldHVybiAtMTsKLSAgICB9IGVsc2UgewotICAgICAgICByZXR1cm4gMDsKLSAgICB9CisJ
dHJhY2VfdmZzX2ZjaG1vZChmZCwgbW9kZSk7CisJYXV0byBlcnJvciA9IHN5c19mY2htb2QoZmQs
IG1vZGUgJiBBTExQRVJNUyk7CisJdHJhY2VfdmZzX2ZjaG1vZF9yZXQoKTsKKwlpZiAoZXJyb3Ip
IHsKKwkJZXJybm8gPSBlcnJvcjsKKwkJcmV0dXJuIC0xOworCX0gZWxzZSB7CisJCXJldHVybiAw
OworCX0KIH0KIAogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZmNob3duLCAiXCIlZFwiICVkICVkIiwg
aW50LCB1aWRfdCwgZ2lkX3QpOwpAQCAtMTk5MiwxMDEgKzE5OTIsMTAxIEBAIFRSQUNFUE9JTlQo
dHJhY2VfdmZzX2ZjaG93bl9yZXQsICIiKTsKIAogaW50IGZjaG93bihpbnQgZmQsIHVpZF90IG93
bmVyLCBnaWRfdCBncm91cCkKIHsKLSAgICB0cmFjZV92ZnNfZmNob3duKGZkLCBvd25lciwgZ3Jv
dXApOwotICAgIFdBUk5fU1RVQkJFRCgpOwotICAgIHRyYWNlX3Zmc19mY2hvd25fcmV0KCk7Ci0g
ICAgcmV0dXJuIDA7CisJdHJhY2VfdmZzX2ZjaG93bihmZCwgb3duZXIsIGdyb3VwKTsKKwlXQVJO
X1NUVUJCRUQoKTsKKwl0cmFjZV92ZnNfZmNob3duX3JldCgpOworCXJldHVybiAwOwogfQogCiBp
bnQgY2hvd24oY29uc3QgY2hhciAqcGF0aCwgdWlkX3Qgb3duZXIsIGdpZF90IGdyb3VwKQogewot
ICAgIFdBUk5fU1RVQkJFRCgpOwotICAgIHJldHVybiAwOworCVdBUk5fU1RVQkJFRCgpOworCXJl
dHVybiAwOwogfQogCiBpbnQgbGNob3duKGNvbnN0IGNoYXIgKnBhdGgsIHVpZF90IG93bmVyLCBn
aWRfdCBncm91cCkKIHsKLSAgICBXQVJOX1NUVUJCRUQoKTsKLSAgICByZXR1cm4gMDsKKwlXQVJO
X1NUVUJCRUQoKTsKKwlyZXR1cm4gMDsKIH0KIAogCiBzc2l6ZV90IHNlbmRmaWxlKGludCBvdXRf
ZmQsIGludCBpbl9mZCwgb2ZmX3QgKl9vZmZzZXQsIHNpemVfdCBjb3VudCkKIHsKLSAgICBzdHJ1
Y3QgZmlsZSAqaW5fZnA7Ci0gICAgc3RydWN0IGZpbGUgKm91dF9mcDsKLSAgICBmaWxlcmVmIGlu
X2Z7ZmlsZXJlZl9mcm9tX2ZkKGluX2ZkKX07Ci0gICAgZmlsZXJlZiBvdXRfZntmaWxlcmVmX2Zy
b21fZmQob3V0X2ZkKX07CisJc3RydWN0IGZpbGUgKmluX2ZwOworCXN0cnVjdCBmaWxlICpvdXRf
ZnA7CisJZmlsZXJlZiBpbl9me2ZpbGVyZWZfZnJvbV9mZChpbl9mZCl9OworCWZpbGVyZWYgb3V0
X2Z7ZmlsZXJlZl9mcm9tX2ZkKG91dF9mZCl9OwogCi0gICAgaWYgKCFpbl9mIHx8ICFvdXRfZikg
ewotICAgICAgICByZXR1cm4gbGliY19lcnJvcihFQkFERik7Ci0gICAgfQorCWlmICghaW5fZiB8
fCAhb3V0X2YpIHsKKwkJcmV0dXJuIGxpYmNfZXJyb3IoRUJBREYpOworCX0KIAotICAgIGluX2Zw
ID0gaW5fZi5nZXQoKTsKLSAgICBvdXRfZnAgPSBvdXRfZi5nZXQoKTsKKwlpbl9mcCA9IGluX2Yu
Z2V0KCk7CisJb3V0X2ZwID0gb3V0X2YuZ2V0KCk7CiAKLSAgICBpZiAoIWluX2ZwLT5mX2RlbnRy
eSkgewotICAgICAgICByZXR1cm4gbGliY19lcnJvcihFQkFERik7Ci0gICAgfQorCWlmICghaW5f
ZnAtPmZfZGVudHJ5KSB7CisJCXJldHVybiBsaWJjX2Vycm9yKEVCQURGKTsKKwl9CiAKLSAgICBp
ZiAoIShpbl9mcC0+Zl9mbGFncyAmIEZSRUFEKSkgewotICAgICAgICByZXR1cm4gbGliY19lcnJv
cihFQkFERik7Ci0gICAgfQorCWlmICghKGluX2ZwLT5mX2ZsYWdzICYgRlJFQUQpKSB7CisJCXJl
dHVybiBsaWJjX2Vycm9yKEVCQURGKTsKKwl9CiAKLSAgICBpZiAob3V0X2ZwLT5mX3R5cGUgJiBE
VFlQRV9WTk9ERSkgewotICAgICAgICBpZiAoIW91dF9mcC0+Zl9kZW50cnkpIHsKLSAgICAgICAg
ICAgIHJldHVybiBsaWJjX2Vycm9yKEVCQURGKTsKKwlpZiAob3V0X2ZwLT5mX3R5cGUgJiBEVFlQ
RV9WTk9ERSkgeworCQlpZiAoIW91dF9mcC0+Zl9kZW50cnkpIHsKKwkJCXJldHVybiBsaWJjX2Vy
cm9yKEVCQURGKTsKIAl9IGVsc2UgaWYgKCEob3V0X2ZwLT5mX2ZsYWdzICYgRldSSVRFKSkgewot
ICAgICAgICAgICAgcmV0dXJuIGxpYmNfZXJyb3IoRUJBREYpOworCQkJcmV0dXJuIGxpYmNfZXJy
b3IoRUJBREYpOworCX0KIAl9Ci0gICAgfQogCi0gICAgb2ZmX3Qgb2Zmc2V0IDsKKwlvZmZfdCBv
ZmZzZXQgOwogCi0gICAgaWYgKF9vZmZzZXQgIT0gbnVsbHB0cikgewotICAgICAgICBvZmZzZXQg
PSAqX29mZnNldDsKLSAgICB9IGVsc2UgewotICAgICAgICAvKiBpZiBfb2Zmc2V0IGlzIG51bGxw
dHIsIHdlIG5lZWQgdG8gcmVhZCBmcm9tIHRoZSBwcmVzZW50IHBvc2l0aW9uIG9mIGluX2ZkICov
Ci0gICAgICAgIG9mZnNldCA9IGxzZWVrKGluX2ZkLCAwLCBTRUVLX0NVUik7Ci0gICAgfQorCWlm
IChfb2Zmc2V0ICE9IG51bGxwdHIpIHsKKwkJb2Zmc2V0ID0gKl9vZmZzZXQ7CisJfSBlbHNlIHsK
KwkJLyogaWYgX29mZnNldCBpcyBudWxscHRyLCB3ZSBuZWVkIHRvIHJlYWQgZnJvbSB0aGUgcHJl
c2VudCBwb3NpdGlvbiBvZiBpbl9mZCAqLworCQlvZmZzZXQgPSBsc2Vlayhpbl9mZCwgMCwgU0VF
S19DVVIpOworCX0KIAotICAgIC8vIENvbnN0cmFpbiBjb3VudCB0byB0aGUgZXh0ZW50IG9mIHRo
ZSBmaWxlLi4uCi0gICAgc3RydWN0IHN0YXQgc3Q7Ci0gICAgaWYgKGZzdGF0KGluX2ZkLCAmc3Qp
IDwgMCkgewotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKG9m
ZnNldCA+PSBzdC5zdF9zaXplKSB7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfSBl
bHNlIGlmICgob2Zmc2V0ICsgY291bnQpID49IHN0LnN0X3NpemUpIHsKLSAgICAgICAgICAgIGNv
dW50ID0gc3Quc3Rfc2l6ZSAtIG9mZnNldDsKLSAgICAgICAgICAgIGlmIChjb3VudCA9PSAwKSB7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICB9CisJLy8gQ29uc3RyYWluIGNvdW50IHRvIHRoZSBleHRlbnQgb2YgdGhlIGZpbGUuLi4KKwlz
dHJ1Y3Qgc3RhdCBzdDsKKwlpZiAoZnN0YXQoaW5fZmQsICZzdCkgPCAwKSB7CisJCXJldHVybiAt
MTsKKwl9IGVsc2UgeworCQlpZiAob2Zmc2V0ID49IHN0LnN0X3NpemUpIHsKKwkJCXJldHVybiAw
OworCQl9IGVsc2UgaWYgKChvZmZzZXQgKyBjb3VudCkgPj0gc3Quc3Rfc2l6ZSkgeworCQkJY291
bnQgPSBzdC5zdF9zaXplIC0gb2Zmc2V0OworCQkJaWYgKGNvdW50ID09IDApIHsKKwkJCQlyZXR1
cm4gMDsKKwkJCX0KKwkJfQorCX0KIAotICAgIHNpemVfdCBieXRlc190b19tbWFwID0gY291bnQg
KyAob2Zmc2V0ICUgbW11OjpwYWdlX3NpemUpOwotICAgIG9mZl90IG9mZnNldF9mb3JfbW1hcCA9
ICBhbGlnbl9kb3duKG9mZnNldCwgKG9mZl90KW1tdTo6cGFnZV9zaXplKTsKKwlzaXplX3QgYnl0
ZXNfdG9fbW1hcCA9IGNvdW50ICsgKG9mZnNldCAlIG1tdTo6cGFnZV9zaXplKTsKKwlvZmZfdCBv
ZmZzZXRfZm9yX21tYXAgPSAgYWxpZ25fZG93bihvZmZzZXQsIChvZmZfdCltbXU6OnBhZ2Vfc2l6
ZSk7CiAKLSAgICBjaGFyICpzcmMgPSBzdGF0aWNfY2FzdDxjaGFyICo+KG1tYXAobnVsbHB0ciwg
Ynl0ZXNfdG9fbW1hcCwgUFJPVF9SRUFELCBNQVBfU0hBUkVELCBpbl9mZCwgb2Zmc2V0X2Zvcl9t
bWFwKSk7CisJY2hhciAqc3JjID0gc3RhdGljX2Nhc3Q8Y2hhciAqPihtbWFwKG51bGxwdHIsIGJ5
dGVzX3RvX21tYXAsIFBST1RfUkVBRCwgTUFQX1NIQVJFRCwgaW5fZmQsIG9mZnNldF9mb3JfbW1h
cCkpOwogCi0gICAgaWYgKHNyYyA9PSBNQVBfRkFJTEVEKSB7Ci0gICAgICAgIHJldHVybiAtMTsK
LSAgICB9CisJaWYgKHNyYyA9PSBNQVBfRkFJTEVEKSB7CisJCXJldHVybiAtMTsKKwl9CiAKLSAg
ICBhdXRvIHJldCA9IHdyaXRlKG91dF9mZCwgc3JjICsgKG9mZnNldCAlIFBBR0VTSVpFKSwgY291
bnQpOworCWF1dG8gcmV0ID0gd3JpdGUob3V0X2ZkLCBzcmMgKyAob2Zmc2V0ICUgUEFHRVNJWkUp
LCBjb3VudCk7CiAKLSAgICBpZiAocmV0IDwgMCkgewotICAgICAgICByZXR1cm4gbGliY19lcnJv
cihlcnJubyk7Ci0gICAgfSBlbHNlIGlmKF9vZmZzZXQgPT0gbnVsbHB0cikgewotICAgICAgICBs
c2Vlayhpbl9mZCwgcmV0LCBTRUVLX0NVUik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgKl9vZmZz
ZXQgKz0gcmV0OwotICAgIH0KKwlpZiAocmV0IDwgMCkgeworCQlyZXR1cm4gbGliY19lcnJvcihl
cnJubyk7CisJfSBlbHNlIGlmKF9vZmZzZXQgPT0gbnVsbHB0cikgeworCQlsc2Vlayhpbl9mZCwg
cmV0LCBTRUVLX0NVUik7CisJfSBlbHNlIHsKKwkJKl9vZmZzZXQgKz0gcmV0OworCX0KIAotICAg
IGFzc2VydChtdW5tYXAoc3JjLCBjb3VudCkgPT0gMCk7CisJYXNzZXJ0KG11bm1hcChzcmMsIGNv
dW50KSA9PSAwKTsKIAotICAgIHJldHVybiByZXQ7CisJcmV0dXJuIHJldDsKIH0KIAogI3VuZGVm
IHNlbmRmaWxlNjQKQEAgLTIwOTYsMjAgKzIwOTYsMjAgQEAgTk9fU1lTKGludCBmY2htb2RhdChp
bnQgZGlyZmQsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBtb2RlX3QgbW9kZSwgaW50IGZsYWdzKSk7
CiAKIG1vZGVfdCB1bWFzayhtb2RlX3QgbmV3bWFzaykKIHsKLSAgICByZXR1cm4gZ2xvYmFsX3Vt
YXNrLmV4Y2hhbmdlKG5ld21hc2ssIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOworCXJldHVy
biBnbG9iYWxfdW1hc2suZXhjaGFuZ2UobmV3bWFzaywgc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhl
ZCk7CiB9CiAKIGludAogZnNfbm9vcCh2b2lkKQogewotICAgIHJldHVybiAwOworCXJldHVybiAw
OwogfQogCiBpbnQgY2hyb290KGNvbnN0IGNoYXIgKnBhdGgpCiB7Ci0gICAgV0FSTl9TVFVCQkVE
KCk7Ci0gICAgZXJybm8gPSBFTk9TWVM7Ci0gICAgcmV0dXJuIC0xOworCVdBUk5fU1RVQkJFRCgp
OworCWVycm5vID0gRU5PU1lTOworCXJldHVybiAtMTsKIH0KIAogLy8gdW5wYWNrX2Jvb3Rmcygp
IHVucGFja3MgYSBjb2xsZWN0aW9uIG9mIGZpbGVzIHN0b3JlZCBhcyBwYXJ0IG9mIHRoZSBPU3YK
QEAgLTIxMjAsMTQgKzIxMjAsMTQgQEAgaW50IGNocm9vdChjb25zdCBjaGFyICpwYXRoKQogI2Rl
ZmluZSBCT09URlNfUEFUSF9NQVggMTExCiBlbnVtIGNsYXNzIGJvb3Rmc19maWxlX3R5cGUgOiBj
aGFyIHsgb3RoZXIgPSAwLCBzeW1saW5rID0gMSB9Owogc3RydWN0IGJvb3Rmc19tZXRhZGF0YSB7
Ci0gICAgdWludDY0X3Qgc2l6ZTsKLSAgICB1aW50NjRfdCBvZmZzZXQ7Ci0gICAgLy8gVGhlIGZp
bGUncyB0eXBlLiBDYW4gYmUgInN5bWxpbmsiIG9yICJvdGhlciIuIEEgZGlyZWN0b3J5IGlzIGFu
ICJvdGhlciIKLSAgICAvLyBmaWxlIHdpdGggaXRzIG5hbWUgZW5kaW5nIHdpdGggYSAiLyIgKGFu
ZCBubyBjb250ZW50KS4KLSAgICBib290ZnNfZmlsZV90eXBlIHR5cGU7Ci0gICAgLy8gbmFtZSBt
dXN0IGVuZCB3aXRoIGEgbnVsbC4gRm9yIHN5bWxpbmsgZmlsZXMsIHRoZSBjb250ZW50IG11c3Qg
ZW5kCi0gICAgLy8gd2l0aCBhIG51bGwgYXMgd2VsbC4KLSAgICBjaGFyIG5hbWVbQk9PVEZTX1BB
VEhfTUFYXTsKKwl1aW50NjRfdCBzaXplOworCXVpbnQ2NF90IG9mZnNldDsKKwkvLyBUaGUgZmls
ZSdzIHR5cGUuIENhbiBiZSAic3ltbGluayIgb3IgIm90aGVyIi4gQSBkaXJlY3RvcnkgaXMgYW4g
Im90aGVyIgorCS8vIGZpbGUgd2l0aCBpdHMgbmFtZSBlbmRpbmcgd2l0aCBhICIvIiAoYW5kIG5v
IGNvbnRlbnQpLgorCWJvb3Rmc19maWxlX3R5cGUgdHlwZTsKKwkvLyBuYW1lIG11c3QgZW5kIHdp
dGggYSBudWxsLiBGb3Igc3ltbGluayBmaWxlcywgdGhlIGNvbnRlbnQgbXVzdCBlbmQKKwkvLyB3
aXRoIGEgbnVsbCBhcyB3ZWxsLgorCWNoYXIgbmFtZVtCT09URlNfUEFUSF9NQVhdOwogfTsKIAog
ZXh0ZXJuIGNoYXIgYm9vdGZzX3N0YXJ0OwpAQCAtMjEzNSwyMjUgKzIxMzUsMjI1IEBAIGV4dGVy
biBjaGFyIGJvb3Rmc19zdGFydDsKIGludCByYW1mc19zZXRfZmlsZV9kYXRhKHN0cnVjdCB2bm9k
ZSAqdnAsIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBzaXplKTsKIHZvaWQgdW5wYWNrX2Jvb3Rm
cyh2b2lkKQogewotICAgIHN0cnVjdCBib290ZnNfbWV0YWRhdGEgKm1kID0gKHN0cnVjdCBib290
ZnNfbWV0YWRhdGEgKikmYm9vdGZzX3N0YXJ0OwotICAgIGludCBmZCwgaTsKLQotICAgIGZvciAo
aSA9IDA7IG1kW2ldLm5hbWVbMF07IGkrKykgewotICAgICAgICBpbnQgcmV0OwotICAgICAgICBj
aGFyICpwOwotCi0gICAgICAgIC8vIG1rZGlyKCkgZGlyZWN0b3JpZXMgbmVlZGVkIGZvciB0aGlz
IHBhdGggbmFtZSwgYXMgbmVjZXNzYXJ5Ci0gICAgICAgIGNoYXIgdG1wW0JPT1RGU19QQVRIX01B
WF07Ci0gICAgICAgIHN0cmxjcHkodG1wLCBtZFtpXS5uYW1lLCBCT09URlNfUEFUSF9NQVgpOwot
ICAgICAgICBmb3IgKHAgPSB0bXA7ICpwOyArK3ApIHsKLSAgICAgICAgICAgIGlmICgqcCA9PSAn
LycpIHsKLSAgICAgICAgICAgICAgICAqcCA9ICdcMCc7Ci0gICAgICAgICAgICAgICAgbWtkaXIo
dG1wLCAwNjY2KTsgIC8vIHNpbGVudGx5IGlnbm9yZSBlcnJvcnMgYW5kIGV4aXN0aW5nIGRpcnMK
LSAgICAgICAgICAgICAgICAqcCA9ICcvJzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0g
ICAgICAgIGlmIChtZFtpXS50eXBlID09IGJvb3Rmc19maWxlX3R5cGU6OnN5bWxpbmspIHsKLSAg
ICAgICAgICAgIC8vIFRoaXMgaXMgYSBzeW1ib2xpYyBsaW5rIHJlY29yZC4gVGhlIGZpbGUncyBj
b250ZW50IGlzIHRoZQotICAgICAgICAgICAgLy8gdGFyZ2V0IHBhdGgsIGFuZCB3ZSBhc3N1bWUg
ZW5kcyB3aXRoIGEgbnVsbC4KLSAgICAgICAgICAgIGlmIChzeW1saW5rKCZib290ZnNfc3RhcnQg
KyBtZFtpXS5vZmZzZXQsIG1kW2ldLm5hbWUpICE9IDApIHsKLSAgICAgICAgICAgICAgICBrcHJp
bnRmKCJjb3VsZG4ndCBzeW1saW5rICVzOiAlZFxuIiwgbWRbaV0ubmFtZSwgZXJybm8pOwotICAg
ICAgICAgICAgICAgIHN5c19wYW5pYygidW5wYWNrX2Jvb3RmcyBmYWlsZWQiKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIGlmICgqKHAt
MSkgPT0gJy8nICYmIG1kW2ldLnNpemUgPT0gMCkgewotICAgICAgICAgICAgLy8gVGhpcyBpcyBk
aXJlY3RvcnkgcmVjb3JkLiBOb3RoaW5nIGVsc2UgdG8gZG8KLSAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICB9Ci0KLSAgICAgICAgZmQgPSBjcmVhdChtZFtpXS5uYW1lLCAwNjY2KTsKLSAg
ICAgICAgaWYgKGZkIDwgMCkgewotICAgICAgICAgICAga3ByaW50ZigiY291bGRuJ3QgY3JlYXRl
ICVzOiAlZFxuIiwKLSAgICAgICAgICAgICAgICAgICAgbWRbaV0ubmFtZSwgZXJybm8pOwotICAg
ICAgICAgICAgc3lzX3BhbmljKCJ1bnBhY2tfYm9vdGZzIGZhaWxlZCIpOwotICAgICAgICB9Ci0K
LSAgICAgICAgc3RydWN0IGZpbGUgKmZwOwotICAgICAgICBpbnQgZXJyb3IgPSBmZ2V0KGZkLCAm
ZnApOwotICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAgIGtwcmludGYoImNvdWxkbid0
IGZnZXQgJXM6ICVkXG4iLAotICAgICAgICAgICAgICAgICAgICBtZFtpXS5uYW1lLCBlcnJvcik7
Ci0gICAgICAgICAgICBzeXNfcGFuaWMoInVucGFja19ib290ZnMgZmFpbGVkIik7Ci0gICAgICAg
IH0KLQotICAgICAgICBzdHJ1Y3Qgdm5vZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOwot
ICAgICAgICByZXQgPSByYW1mc19zZXRfZmlsZV9kYXRhKHZwLCAmYm9vdGZzX3N0YXJ0ICsgbWRb
aV0ub2Zmc2V0LCBtZFtpXS5zaXplKTsKLSAgICAgICAgaWYgKHJldCkgewotICAgICAgICAgICAg
a3ByaW50ZigicmFtZnNfc2V0X2ZpbGVfZGF0YSBmYWlsZWQsIHJldCA9ICVkXG4iLCByZXQpOwot
ICAgICAgICAgICAgc3lzX3BhbmljKCJ1bnBhY2tfYm9vdGZzIGZhaWxlZCIpOwotICAgICAgICB9
Ci0KLSAgICAgICAgZmRyb3AoZnApOwotICAgICAgICBjbG9zZShmZCk7Ci0gICAgfQorCXN0cnVj
dCBib290ZnNfbWV0YWRhdGEgKm1kID0gKHN0cnVjdCBib290ZnNfbWV0YWRhdGEgKikmYm9vdGZz
X3N0YXJ0OworCWludCBmZCwgaTsKKworCWZvciAoaSA9IDA7IG1kW2ldLm5hbWVbMF07IGkrKykg
eworCQlpbnQgcmV0OworCQljaGFyICpwOworCisJCS8vIG1rZGlyKCkgZGlyZWN0b3JpZXMgbmVl
ZGVkIGZvciB0aGlzIHBhdGggbmFtZSwgYXMgbmVjZXNzYXJ5CisJCWNoYXIgdG1wW0JPT1RGU19Q
QVRIX01BWF07CisJCXN0cmxjcHkodG1wLCBtZFtpXS5uYW1lLCBCT09URlNfUEFUSF9NQVgpOwor
CQlmb3IgKHAgPSB0bXA7ICpwOyArK3ApIHsKKwkJCWlmICgqcCA9PSAnLycpIHsKKwkJCQkqcCA9
ICdcMCc7CisJCQkJbWtkaXIodG1wLCAwNjY2KTsgIC8vIHNpbGVudGx5IGlnbm9yZSBlcnJvcnMg
YW5kIGV4aXN0aW5nIGRpcnMKKwkJCQkqcCA9ICcvJzsKKwkJCX0KKwkJfQorCisJCWlmIChtZFtp
XS50eXBlID09IGJvb3Rmc19maWxlX3R5cGU6OnN5bWxpbmspIHsKKwkJCS8vIFRoaXMgaXMgYSBz
eW1ib2xpYyBsaW5rIHJlY29yZC4gVGhlIGZpbGUncyBjb250ZW50IGlzIHRoZQorCQkJLy8gdGFy
Z2V0IHBhdGgsIGFuZCB3ZSBhc3N1bWUgZW5kcyB3aXRoIGEgbnVsbC4KKwkJCWlmIChzeW1saW5r
KCZib290ZnNfc3RhcnQgKyBtZFtpXS5vZmZzZXQsIG1kW2ldLm5hbWUpICE9IDApIHsKKwkJCQlr
cHJpbnRmKCJjb3VsZG4ndCBzeW1saW5rICVzOiAlZFxuIiwgbWRbaV0ubmFtZSwgZXJybm8pOwor
CQkJCXN5c19wYW5pYygidW5wYWNrX2Jvb3RmcyBmYWlsZWQiKTsKKwkJCX0KKwkJCWNvbnRpbnVl
OworCQl9CisJCWlmICgqKHAtMSkgPT0gJy8nICYmIG1kW2ldLnNpemUgPT0gMCkgeworCQkJLy8g
VGhpcyBpcyBkaXJlY3RvcnkgcmVjb3JkLiBOb3RoaW5nIGVsc2UgdG8gZG8KKwkJCWNvbnRpbnVl
OworCQl9CisKKwkJZmQgPSBjcmVhdChtZFtpXS5uYW1lLCAwNjY2KTsKKwkJaWYgKGZkIDwgMCkg
eworCQkJa3ByaW50ZigiY291bGRuJ3QgY3JlYXRlICVzOiAlZFxuIiwKKwkJCQkJbWRbaV0ubmFt
ZSwgZXJybm8pOworCQkJc3lzX3BhbmljKCJ1bnBhY2tfYm9vdGZzIGZhaWxlZCIpOworCQl9CisK
KwkJc3RydWN0IGZpbGUgKmZwOworCQlpbnQgZXJyb3IgPSBmZ2V0KGZkLCAmZnApOworCQlpZiAo
ZXJyb3IpIHsKKwkJCWtwcmludGYoImNvdWxkbid0IGZnZXQgJXM6ICVkXG4iLAorCQkJCQltZFtp
XS5uYW1lLCBlcnJvcik7CisJCQlzeXNfcGFuaWMoInVucGFja19ib290ZnMgZmFpbGVkIik7CisJ
CX0KKworCQlzdHJ1Y3Qgdm5vZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOworCQlyZXQg
PSByYW1mc19zZXRfZmlsZV9kYXRhKHZwLCAmYm9vdGZzX3N0YXJ0ICsgbWRbaV0ub2Zmc2V0LCBt
ZFtpXS5zaXplKTsKKwkJaWYgKHJldCkgeworCQkJa3ByaW50ZigicmFtZnNfc2V0X2ZpbGVfZGF0
YSBmYWlsZWQsIHJldCA9ICVkXG4iLCByZXQpOworCQkJc3lzX3BhbmljKCJ1bnBhY2tfYm9vdGZz
IGZhaWxlZCIpOworCQl9CisKKwkJZmRyb3AoZnApOworCQljbG9zZShmZCk7CisJfQogfQogCiB2
b2lkIG1vdW50X3Jvb3Rmcyh2b2lkKQogewotICAgIGludCByZXQ7CisJaW50IHJldDsKIAotICAg
IHJldCA9IHN5c19tb3VudCgiIiwgIi8iLCAicmFtZnMiLCAwLCBudWxscHRyKTsKLSAgICBpZiAo
cmV0KQotICAgICAgICBrcHJpbnRmKCJmYWlsZWQgdG8gbW91bnQgcm9vdGZzLCBlcnJvciA9ICVz
XG4iLCBzdHJlcnJvcihyZXQpKTsKKwlyZXQgPSBzeXNfbW91bnQoIiIsICIvIiwgInJhbWZzIiwg
MCwgbnVsbHB0cik7CisJaWYgKHJldCkKKwkJa3ByaW50ZigiZmFpbGVkIHRvIG1vdW50IHJvb3Rm
cywgZXJyb3IgPSAlc1xuIiwgc3RyZXJyb3IocmV0KSk7CiAKLSAgICBpZiAobWtkaXIoIi9kZXYi
LCAwNzU1KSA8IDApCi0gICAgICAgIGtwcmludGYoImZhaWxlZCB0byBjcmVhdGUgL2RldiwgZXJy
b3IgPSAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKKwlpZiAobWtkaXIoIi9kZXYiLCAwNzU1KSA8
IDApCisJCWtwcmludGYoImZhaWxlZCB0byBjcmVhdGUgL2RldiwgZXJyb3IgPSAlc1xuIiwgc3Ry
ZXJyb3IoZXJybm8pKTsKIAotICAgIHJldCA9IHN5c19tb3VudCgiIiwgIi9kZXYiLCAiZGV2ZnMi
LCAwLCBudWxscHRyKTsKLSAgICBpZiAocmV0KQotICAgICAgICBrcHJpbnRmKCJmYWlsZWQgdG8g
bW91bnQgZGV2ZnMsIGVycm9yID0gJXNcbiIsIHN0cmVycm9yKHJldCkpOworCXJldCA9IHN5c19t
b3VudCgiIiwgIi9kZXYiLCAiZGV2ZnMiLCAwLCBudWxscHRyKTsKKwlpZiAocmV0KQorCQlrcHJp
bnRmKCJmYWlsZWQgdG8gbW91bnQgZGV2ZnMsIGVycm9yID0gJXNcbiIsIHN0cmVycm9yKHJldCkp
OwogfQogCiBleHRlcm4gIkMiCiBpbnQgbm1vdW50KHN0cnVjdCBpb3ZlYyAqaW92LCB1bnNpZ25l
ZCBuaW92LCBpbnQgZmxhZ3MpCiB7Ci0gICAgc3RydWN0IGFyZ3MgewotICAgICAgICBjaGFyKiBm
c3R5cGUgPSBudWxscHRyOwotICAgICAgICBjaGFyKiBmc3BhdGggPSBudWxscHRyOwotICAgICAg
ICBjaGFyKiBmcm9tID0gbnVsbHB0cjsKLSAgICB9OwotICAgIHN0YXRpYyB1bm9yZGVyZWRfbWFw
PHN0cmluZywgY2hhciogYXJnczo6Kj4gYXJnbWFwIHsKLSAgICAgICAgeyAiZnN0eXBlIiwgJmFy
Z3M6OmZzdHlwZSB9LAotICAgICAgICB7ICJmc3BhdGgiLCAmYXJnczo6ZnNwYXRoIH0sCi0gICAg
ICAgIHsgImZyb20iLCAmYXJnczo6ZnJvbSB9LAotICAgIH07Ci0gICAgYXJncyBhOwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbmlvdjsgaSArPSAyKSB7Ci0gICAgICAgIHN0ZDo6c3RyaW5n
IHMoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGlvdltpXS5pb3ZfYmFzZSkpOwotICAgICAgICBp
ZiAoYXJnbWFwLmNvdW50KHMpKSB7Ci0gICAgICAgICAgICBhLiooYXJnbWFwW3NdKSA9IHN0YXRp
Y19jYXN0PGNoYXIqPihpb3ZbaSsxXS5pb3ZfYmFzZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAg
cmV0dXJuIHN5c19tb3VudChhLmZyb20sIGEuZnNwYXRoLCBhLmZzdHlwZSwgZmxhZ3MsIG51bGxw
dHIpOworCXN0cnVjdCBhcmdzIHsKKwkJY2hhciogZnN0eXBlID0gbnVsbHB0cjsKKwkJY2hhciog
ZnNwYXRoID0gbnVsbHB0cjsKKwkJY2hhciogZnJvbSA9IG51bGxwdHI7CisJfTsKKwlzdGF0aWMg
dW5vcmRlcmVkX21hcDxzdHJpbmcsIGNoYXIqIGFyZ3M6Oio+IGFyZ21hcCB7CisJCXsgImZzdHlw
ZSIsICZhcmdzOjpmc3R5cGUgfSwKKwkJeyAiZnNwYXRoIiwgJmFyZ3M6OmZzcGF0aCB9LAorCQl7
ICJmcm9tIiwgJmFyZ3M6OmZyb20gfSwKKwl9OworCWFyZ3MgYTsKKwlmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG5pb3Y7IGkgKz0gMikgeworCQlzdGQ6OnN0cmluZyBzKHN0YXRpY19jYXN0PGNvbnN0
IGNoYXIqPihpb3ZbaV0uaW92X2Jhc2UpKTsKKwkJaWYgKGFyZ21hcC5jb3VudChzKSkgeworCQkJ
YS4qKGFyZ21hcFtzXSkgPSBzdGF0aWNfY2FzdDxjaGFyKj4oaW92W2krMV0uaW92X2Jhc2UpOwor
CQl9CisJfQorCXJldHVybiBzeXNfbW91bnQoYS5mcm9tLCBhLmZzcGF0aCwgYS5mc3R5cGUsIGZs
YWdzLCBudWxscHRyKTsKIH0KIAogc3RhdGljIHZvaWQgaW1wb3J0X2V4dHJhX3pmc19wb29scyh2
b2lkKQogewotICAgIHN0cnVjdCBzdGF0IHN0OwotICAgIGludCByZXQ7CisJc3RydWN0IHN0YXQg
c3Q7CisJaW50IHJldDsKIAotICAgIC8vIFRoZSBmaWxlICcvZXRjL21udHRhYicgaXMgYSBMaWJa
RlMgcmVxdWlyZW1lbnQgYW5kIHdpbGwgbm90Ci0gICAgLy8gZXhpc3QgZHVyaW5nIGNwaW9kIHBo
YXNlLiBUaGUgZnVuY3Rpb25hbGl0eSBwcm92aWRlZCBieSB0aGlzCi0gICAgLy8gZnVuY3Rpb24g
aXNuJ3QgbmVlZGVkIGR1cmluZyB0aGF0IHBoYXNlLCBzbyBsZXQncyBza2lwIGl0LgotICAgIGlm
IChzdGF0KCIvZXRjL21udHRhYiIgLCAmc3QpICE9IDApIHsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KKwkvLyBUaGUgZmlsZSAnL2V0Yy9tbnR0YWInIGlzIGEgTGliWkZTIHJlcXVpcmVtZW50IGFu
ZCB3aWxsIG5vdAorCS8vIGV4aXN0IGR1cmluZyBjcGlvZCBwaGFzZS4gVGhlIGZ1bmN0aW9uYWxp
dHkgcHJvdmlkZWQgYnkgdGhpcworCS8vIGZ1bmN0aW9uIGlzbid0IG5lZWRlZCBkdXJpbmcgdGhh
dCBwaGFzZSwgc28gbGV0J3Mgc2tpcCBpdC4KKwlpZiAoc3RhdCgiL2V0Yy9tbnR0YWIiICwgJnN0
KSAhPSAwKSB7CisJCXJldHVybjsKKwl9CiAKLSAgICAvLyBJbXBvcnQgZXh0cmEgcG9vbHMgbW91
bnRpbmcgZGF0YXNldHMgdGhlcmUgY29udGFpbmVkLgotICAgIC8vIERhdGFzZXRzIGZyb20gb3N2
IHBvb2wgd2lsbCBub3QgYmUgbW91bnRlZCBoZXJlLgotICAgIGlmIChhY2Nlc3MoInpwb29sLnNv
IiwgWF9PSykgIT0gMCkgewotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIHZlY3RvcjxzdHJp
bmc+IHpwb29sX2FyZ3MgPSB7Inpwb29sIiwgImltcG9ydCIsICItZiIsICItYSIgfTsKLSAgICBh
dXRvIG9rID0gb3N2OjpydW4oInpwb29sLnNvIiwgenBvb2xfYXJncywgJnJldCk7Ci0gICAgYXNz
ZXJ0KG9rKTsKKwkvLyBJbXBvcnQgZXh0cmEgcG9vbHMgbW91bnRpbmcgZGF0YXNldHMgdGhlcmUg
Y29udGFpbmVkLgorCS8vIERhdGFzZXRzIGZyb20gb3N2IHBvb2wgd2lsbCBub3QgYmUgbW91bnRl
ZCBoZXJlLgorCWlmIChhY2Nlc3MoInpwb29sLnNvIiwgWF9PSykgIT0gMCkgeworCQlyZXR1cm47
CisJfQorCXZlY3RvcjxzdHJpbmc+IHpwb29sX2FyZ3MgPSB7Inpwb29sIiwgImltcG9ydCIsICIt
ZiIsICItYSIgfTsKKwlhdXRvIG9rID0gb3N2OjpydW4oInpwb29sLnNvIiwgenBvb2xfYXJncywg
JnJldCk7CisJYXNzZXJ0KG9rKTsKIAotICAgIGlmICghcmV0KSB7Ci0gICAgICAgIGRlYnVnKCJ6
ZnM6IGV4dHJhIFpGUyBwb29sKHMpIGZvdW5kLlxuIik7Ci0gICAgfQorCWlmICghcmV0KSB7CisJ
CWRlYnVnKCJ6ZnM6IGV4dHJhIFpGUyBwb29sKHMpIGZvdW5kLlxuIik7CisJfQogfQogCiB2b2lk
IHBpdm90X3Jvb3Rmcyhjb25zdCBjaGFyKiBwYXRoKQogewotICAgIGludCByZXQgPSBzeXNfcGl2
b3Rfcm9vdChwYXRoLCAiLyIpOwotICAgIGlmIChyZXQpCi0gICAgICAgIGtwcmludGYoImZhaWxl
ZCB0byBwaXZvdCByb290LCBlcnJvciA9ICVzXG4iLCBzdHJlcnJvcihyZXQpKTsKLQotICAgIGF1
dG8gZW50ID0gc2V0bW50ZW50KCIvZXRjL2ZzdGFiIiwgInIiKTsKLSAgICBpZiAoIWVudCkgewot
ICAgICAgICByZXR1cm47Ci0gICAgfQorCWludCByZXQgPSBzeXNfcGl2b3Rfcm9vdChwYXRoLCAi
LyIpOworCWlmIChyZXQpCisJCWtwcmludGYoImZhaWxlZCB0byBwaXZvdCByb290LCBlcnJvciA9
ICVzXG4iLCBzdHJlcnJvcihyZXQpKTsKIAotICAgIHN0cnVjdCBtbnRlbnQgKm0gPSBudWxscHRy
OwotICAgIHdoaWxlICgobSA9IGdldG1udGVudChlbnQpKSAhPSBudWxscHRyKSB7Ci0gICAgICAg
IGlmICghc3RyY21wKG0tPm1udF9kaXIsICIvIikpIHsKLSAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICB9Ci0KLSAgICAgICAgaWYgKChtLT5tbnRfb3B0cyAhPSBudWxscHRyKSAmJiBzdHJj
bXAobS0+bW50X29wdHMsIE1OVE9QVF9ERUZBVUxUUykpIHsKLSAgICAgICAgICAgIHByaW50Zigi
V2FybmluZzogb3B0cyAlcywgaWdub3JlZCBmb3IgZnMgJXNcbiIsIG0tPm1udF9vcHRzLCBtLT5t
bnRfdHlwZSk7Ci0gICAgICAgIH0KKwlhdXRvIGVudCA9IHNldG1udGVudCgiL2V0Yy9mc3RhYiIs
ICJyIik7CisJaWYgKCFlbnQpIHsKKwkJcmV0dXJuOworCX0KIAotICAgICAgICAvLyBGSVhNRTog
UmlnaHQgbm93LCBpZ25vcmluZyBtbnRvcHMuIEluIHRoZSBmdXR1cmUgd2UgbWF5IGhhdmUgYW4g
b3B0aW9uIHBhcnNlcgotICAgICAgICByZXQgPSBzeXNfbW91bnQobS0+bW50X2ZzbmFtZSwgbS0+
bW50X2RpciwgbS0+bW50X3R5cGUsIDAsIG51bGxwdHIpOwotICAgICAgICBpZiAocmV0KSB7Ci0g
ICAgICAgICAgICBwcmludGYoImZhaWxlZCB0byBtb3VudCAlcywgZXJyb3IgPSAlc1xuIiwgbS0+
bW50X3R5cGUsIHN0cmVycm9yKHJldCkpOwotICAgICAgICB9Ci0gICAgfQotICAgIGVuZG1udGVu
dChlbnQpOworCXN0cnVjdCBtbnRlbnQgKm0gPSBudWxscHRyOworCXdoaWxlICgobSA9IGdldG1u
dGVudChlbnQpKSAhPSBudWxscHRyKSB7CisJCWlmICghc3RyY21wKG0tPm1udF9kaXIsICIvIikp
IHsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJaWYgKChtLT5tbnRfb3B0cyAhPSBudWxscHRyKSAm
JiBzdHJjbXAobS0+bW50X29wdHMsIE1OVE9QVF9ERUZBVUxUUykpIHsKKwkJCXByaW50ZigiV2Fy
bmluZzogb3B0cyAlcywgaWdub3JlZCBmb3IgZnMgJXNcbiIsIG0tPm1udF9vcHRzLCBtLT5tbnRf
dHlwZSk7CisJCX0KKworCQkvLyBGSVhNRTogUmlnaHQgbm93LCBpZ25vcmluZyBtbnRvcHMuIElu
IHRoZSBmdXR1cmUgd2UgbWF5IGhhdmUgYW4gb3B0aW9uIHBhcnNlcgorCQlyZXQgPSBzeXNfbW91
bnQobS0+bW50X2ZzbmFtZSwgbS0+bW50X2RpciwgbS0+bW50X3R5cGUsIDAsIG51bGxwdHIpOwor
CQlpZiAocmV0KSB7CisJCQlwcmludGYoImZhaWxlZCB0byBtb3VudCAlcywgZXJyb3IgPSAlc1xu
IiwgbS0+bW50X3R5cGUsIHN0cmVycm9yKHJldCkpOworCQl9CisJfQorCWVuZG1udGVudChlbnQp
OwogfQogCiBleHRlcm4gIkMiIHZvaWQgdW5tb3VudF9kZXZmcygpCiB7Ci0gICAgaW50IHJldCA9
IHN5c191bW91bnQoIi9kZXYiKTsKLSAgICBpZiAocmV0KQotICAgICAgICBrcHJpbnRmKCJmYWls
ZWQgdG8gdW5tb3VudCAvZGV2LCBlcnJvciA9ICVzXG4iLCBzdHJlcnJvcihyZXQpKTsKKwlpbnQg
cmV0ID0gc3lzX3Vtb3VudCgiL2RldiIpOworCWlmIChyZXQpCisJCWtwcmludGYoImZhaWxlZCB0
byB1bm1vdW50IC9kZXYsIGVycm9yID0gJXNcbiIsIHN0cmVycm9yKHJldCkpOwogfQogCiBleHRl
cm4gIkMiIGludCBtb3VudF9yb2ZzX3Jvb3Rmcyhib29sIHBpdm90X3Jvb3QpCiB7Ci0gICAgaW50
IHJldDsKKwlpbnQgcmV0OwogCi0gICAgaWYgKG1rZGlyKCIvcm9mcyIsIDA3NTUpIDwgMCkKLSAg
ICAgICAga3ByaW50ZigiZmFpbGVkIHRvIGNyZWF0ZSAvcm9mcywgZXJyb3IgPSAlc1xuIiwgc3Ry
ZXJyb3IoZXJybm8pKTsKKwlpZiAobWtkaXIoIi9yb2ZzIiwgMDc1NSkgPCAwKQorCQlrcHJpbnRm
KCJmYWlsZWQgdG8gY3JlYXRlIC9yb2ZzLCBlcnJvciA9ICVzXG4iLCBzdHJlcnJvcihlcnJubykp
OwogCi0gICAgcmV0ID0gc3lzX21vdW50KCIvZGV2L3ZibGswLjEiLCAiL3JvZnMiLCAicm9mcyIs
IE1OVF9SRE9OTFksIDApOworCXJldCA9IHN5c19tb3VudCgiL2Rldi92YmxrMC4xIiwgIi9yb2Zz
IiwgInJvZnMiLCBNTlRfUkRPTkxZLCAwKTsKIAotICAgIGlmIChyZXQpIHsKLSAgICAgICAga3By
aW50ZigiZmFpbGVkIHRvIG1vdW50IC9yb2ZzLCBlcnJvciA9ICVzXG4iLCBzdHJlcnJvcihyZXQp
KTsKLSAgICAgICAgcm1kaXIoIi9yb2ZzIik7Ci0gICAgICAgIHJldHVybiByZXQ7Ci0gICAgfQor
CWlmIChyZXQpIHsKKwkJa3ByaW50ZigiZmFpbGVkIHRvIG1vdW50IC9yb2ZzLCBlcnJvciA9ICVz
XG4iLCBzdHJlcnJvcihyZXQpKTsKKwkJcm1kaXIoIi9yb2ZzIik7CisJCXJldHVybiByZXQ7CisJ
fQogCi0gICAgaWYgKHBpdm90X3Jvb3QpIHsKLSAgICAgICAgcGl2b3Rfcm9vdGZzKCIvcm9mcyIp
OwotICAgIH0KKwlpZiAocGl2b3Rfcm9vdCkgeworCQlwaXZvdF9yb290ZnMoIi9yb2ZzIik7CisJ
fQogCi0gICAgcmV0dXJuIDA7CisJcmV0dXJuIDA7CiB9CiAKIGV4dGVybiAiQyIgdm9pZCBtb3Vu
dF96ZnNfcm9vdGZzKGJvb2wgcGl2b3Rfcm9vdCkKIHsKLSAgICBpZiAobWtkaXIoIi96ZnMiLCAw
NzU1KSA8IDApCi0gICAgICAgIGtwcmludGYoImZhaWxlZCB0byBjcmVhdGUgL3pmcywgZXJyb3Ig
PSAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKKwlpZiAobWtkaXIoIi96ZnMiLCAwNzU1KSA8IDAp
CisJCWtwcmludGYoImZhaWxlZCB0byBjcmVhdGUgL3pmcywgZXJyb3IgPSAlc1xuIiwgc3RyZXJy
b3IoZXJybm8pKTsKIAotICAgIGludCByZXQgPSBzeXNfbW91bnQoIi9kZXYvdmJsazAuMSIsICIv
emZzIiwgInpmcyIsIDAsICh2b2lkICopIm9zdi96ZnMiKTsKKwlpbnQgcmV0ID0gc3lzX21vdW50
KCIvZGV2L3ZibGswLjEiLCAiL3pmcyIsICJ6ZnMiLCAwLCAodm9pZCAqKSJvc3YvemZzIik7CiAK
LSAgICBpZiAocmV0KQotICAgICAgICBrcHJpbnRmKCJmYWlsZWQgdG8gbW91bnQgL3pmcywgZXJy
b3IgPSAlc1xuIiwgc3RyZXJyb3IocmV0KSk7CisJaWYgKHJldCkKKwkJa3ByaW50ZigiZmFpbGVk
IHRvIG1vdW50IC96ZnMsIGVycm9yID0gJXNcbiIsIHN0cmVycm9yKHJldCkpOwogCi0gICAgaWYg
KCFwaXZvdF9yb290KSB7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisJaWYgKCFwaXZvdF9yb290
KSB7CisJCXJldHVybjsKKwl9CiAKLSAgICBwaXZvdF9yb290ZnMoIi96ZnMiKTsKKwlwaXZvdF9y
b290ZnMoIi96ZnMiKTsKIAotICAgIGltcG9ydF9leHRyYV96ZnNfcG9vbHMoKTsKKwlpbXBvcnRf
ZXh0cmFfemZzX3Bvb2xzKCk7CiB9CiAKIGV4dGVybiAiQyIgdm9pZCB1bm1vdW50X3Jvb3Rmcyh2
b2lkKQogewotICAgIGludCByZXQ7CisJaW50IHJldDsKIAotICAgIHN5c191bW91bnQoIi9kZXYi
KTsKKwlzeXNfdW1vdW50KCIvZGV2Iik7CiAKLSAgICByZXQgPSBzeXNfdW1vdW50KCIvcHJvYyIp
OwotICAgIGlmIChyZXQpIHsKLSAgICAgICAga3ByaW50ZigiV2FybmluZzogdW5tb3VudF9yb290
ZnM6IGZhaWxlZCB0byB1bm1vdW50IC9wcm9jLCAiCi0gICAgICAgICAgICAiZXJyb3IgPSAlc1xu
Iiwgc3RyZXJyb3IocmV0KSk7Ci0gICAgfQorCXJldCA9IHN5c191bW91bnQoIi9wcm9jIik7CisJ
aWYgKHJldCkgeworCQlrcHJpbnRmKCJXYXJuaW5nOiB1bm1vdW50X3Jvb3RmczogZmFpbGVkIHRv
IHVubW91bnQgL3Byb2MsICIKKwkJCSJlcnJvciA9ICVzXG4iLCBzdHJlcnJvcihyZXQpKTsKKwl9
CiAKLSAgICByZXQgPSBzeXNfdW1vdW50MigiLyIsIE1OVF9GT1JDRSk7Ci0gICAgaWYgKHJldCkg
ewotICAgICAgICBrcHJpbnRmKCJXYXJuaW5nOiB1bm1vdW50X3Jvb3RmczogZmFpbGVkIHRvIHVu
bW91bnQgLywgIgotICAgICAgICAgICAgImVycm9yID0gJXNcbiIsIHN0cmVycm9yKHJldCkpOwot
ICAgIH0KKwlyZXQgPSBzeXNfdW1vdW50MigiLyIsIE1OVF9GT1JDRSk7CisJaWYgKHJldCkgewor
CQlrcHJpbnRmKCJXYXJuaW5nOiB1bm1vdW50X3Jvb3RmczogZmFpbGVkIHRvIHVubW91bnQgLywg
IgorCQkJImVycm9yID0gJXNcbiIsIHN0cmVycm9yKHJldCkpOworCX0KIH0KIAogZXh0ZXJuICJD
IiB2b2lkIGJpb19pbml0KHZvaWQpOwpAQCAtMjM2NSw0OSArMjM2NSw0OSBAQCBleHRlcm4gIkMi
CiB2b2lkCiB2ZnNfaW5pdCh2b2lkKQogewotICAgIGNvbnN0IHN0cnVjdCB2ZnNzdyAqZnM7Ci0K
LSAgICBiaW9faW5pdCgpOwotICAgIGxvb2t1cF9pbml0KCk7Ci0gICAgdm5vZGVfaW5pdCgpOwot
ICAgIHRhc2tfYWxsb2MoJm1haW5fdGFzayk7Ci0KLSAgICAvKgotICAgICAqIEluaXRpYWxpemUg
ZWFjaCBmaWxlIHN5c3RlbS4KLSAgICAgKi8KLSAgICBmb3IgKGZzID0gdmZzc3c7IGZzLT52c19u
YW1lOyBmcysrKSB7Ci0gICAgICAgIGlmIChmcy0+dnNfaW5pdCkgewotICAgICAgICAgICAgRFBS
SU5URihWRlNEQl9DT1JFLCAoIlZGUzogaW5pdGlhbGl6aW5nICVzXG4iLAotICAgICAgICAgICAg
ICAgICAgICBmcy0+dnNfbmFtZSkpOwotICAgICAgICAgICAgZnMtPnZzX2luaXQoKTsKLSAgICAg
ICAgfQotICAgIH0KLQotICAgIG1vdW50X3Jvb3RmcygpOwotICAgIHVucGFja19ib290ZnMoKTsK
LQotICAgIC8vCWlmIChvcGVuKCIvZGV2L2NvbnNvbGUiLCBPX1JEV1IsIDApICE9IDApCi0gICAg
aWYgKGNvbnNvbGU6Om9wZW4oKSAhPSAwKQotICAgICAgICBrcHJpbnRmKCJmYWlsZWQgdG8gb3Bl
biBjb25zb2xlLCBlcnJvciA9ICVkXG4iLCBlcnJubyk7Ci0gICAgaWYgKGR1cCgwKSAhPSAxKQot
ICAgICAgICBrcHJpbnRmKCJmYWlsZWQgdG8gZHVwIGNvbnNvbGUgKDEpXG4iKTsKLSAgICBpZiAo
ZHVwKDApICE9IDIpCi0gICAgICAgIGtwcmludGYoImZhaWxlZCB0byBkdXAgY29uc29sZSAoMilc
biIpOwotICAgIHZmc19pbml0aWFsaXplZCA9IDE7CisJY29uc3Qgc3RydWN0IHZmc3N3ICpmczsK
KworCWJpb19pbml0KCk7CisJbG9va3VwX2luaXQoKTsKKwl2bm9kZV9pbml0KCk7CisJdGFza19h
bGxvYygmbWFpbl90YXNrKTsKKworCS8qCisJICogSW5pdGlhbGl6ZSBlYWNoIGZpbGUgc3lzdGVt
LgorCSAqLworCWZvciAoZnMgPSB2ZnNzdzsgZnMtPnZzX25hbWU7IGZzKyspIHsKKwkJaWYgKGZz
LT52c19pbml0KSB7CisJCQlEUFJJTlRGKFZGU0RCX0NPUkUsICgiVkZTOiBpbml0aWFsaXppbmcg
JXNcbiIsCisJCQkJCWZzLT52c19uYW1lKSk7CisJCQlmcy0+dnNfaW5pdCgpOworCQl9CisJfQor
CisJbW91bnRfcm9vdGZzKCk7CisJdW5wYWNrX2Jvb3RmcygpOworCisJLy8JaWYgKG9wZW4oIi9k
ZXYvY29uc29sZSIsIE9fUkRXUiwgMCkgIT0gMCkKKwlpZiAoY29uc29sZTo6b3BlbigpICE9IDAp
CisJCWtwcmludGYoImZhaWxlZCB0byBvcGVuIGNvbnNvbGUsIGVycm9yID0gJWRcbiIsIGVycm5v
KTsKKwlpZiAoZHVwKDApICE9IDEpCisJCWtwcmludGYoImZhaWxlZCB0byBkdXAgY29uc29sZSAo
MSlcbiIpOworCWlmIChkdXAoMCkgIT0gMikKKwkJa3ByaW50ZigiZmFpbGVkIHRvIGR1cCBjb25z
b2xlICgyKVxuIik7CisJdmZzX2luaXRpYWxpemVkID0gMTsKIH0KIAogdm9pZCB2ZnNfZXhpdCh2
b2lkKQogewotICAgIC8qIEZyZWUgdXAgbWFpbl90YXNrIChzdG9yZXMgY3dkIGRhdGEpIHJlc291
cmNlcyAqLwotICAgIHJlcGxhY2VfY3dkKG1haW5fdGFzaywgbnVsbHB0ciwgW10oKSB7IHJldHVy
biAwOyB9KTsKLSAgICAvKiBVbm1vdW50IGFsbCBmaWxlIHN5c3RlbXMgKi8KLSAgICB1bm1vdW50
X3Jvb3RmcygpOwotICAgIC8qIEZpbmlzaCB3aXRoIHRoZSBiaW8gbGF5ZXIgKi8KLSAgICBiaW9f
c3luYygpOworCS8qIEZyZWUgdXAgbWFpbl90YXNrIChzdG9yZXMgY3dkIGRhdGEpIHJlc291cmNl
cyAqLworCXJlcGxhY2VfY3dkKG1haW5fdGFzaywgbnVsbHB0ciwgW10oKSB7IHJldHVybiAwOyB9
KTsKKwkvKiBVbm1vdW50IGFsbCBmaWxlIHN5c3RlbXMgKi8KKwl1bm1vdW50X3Jvb3RmcygpOwor
CS8qIEZpbmlzaCB3aXRoIHRoZSBiaW8gbGF5ZXIgKi8KKwliaW9fc3luYygpOwogfQogCiB2b2lk
IHN5c19wYW5pYyhjb25zdCBjaGFyICpzdHIpCiB7Ci0gICAgYWJvcnQoInBhbmljOiAlcyIsIHN0
cik7CisJYWJvcnQoInBhbmljOiAlcyIsIHN0cik7CiB9CiAKZGlmZiAtLWdpdCBhL2xpYi92ZnNj
b3JlL21vdW50LmMgYi9saWIvdmZzY29yZS9tb3VudC5jCmluZGV4IGRhYzRkMDljLi5iNTFiMjdh
NCAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvbW91bnQuYworKysgYi9saWIvdmZzY29yZS9tb3Vu
dC5jCkBAIC02OSwyODcgKzY5LDI4NyBAQCBzdGF0aWMgbXV0ZXggbW91bnRfbG9jazsKIHN0YXRp
YyBjb25zdCBzdHJ1Y3QgdmZzc3cgKgogZnNfZ2V0ZnMoY29uc3QgY2hhciAqbmFtZSkKIHsKLSAg
ICBjb25zdCBzdHJ1Y3QgdmZzc3cgKmZzOwotCi0gICAgZm9yIChmcyA9IHZmc3N3OyBmcy0+dnNf
bmFtZTsgZnMrKykgewotICAgICAgICBpZiAoIXN0cm5jbXAobmFtZSwgZnMtPnZzX25hbWUsIEZT
TUFYTkFNRVMpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGlmICghZnMtPnZzX25h
bWUpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBmczsKKwljb25zdCBzdHJ1
Y3QgdmZzc3cgKmZzOworCisJZm9yIChmcyA9IHZmc3N3OyBmcy0+dnNfbmFtZTsgZnMrKykgewor
CQlpZiAoIXN0cm5jbXAobmFtZSwgZnMtPnZzX25hbWUsIEZTTUFYTkFNRVMpKQorCQkJYnJlYWs7
CisJfQorCWlmICghZnMtPnZzX25hbWUpCisJCXJldHVybiBudWxscHRyOworCXJldHVybiBmczsK
IH0KIAogY29uc3QgY2hhcioKIGZzX2dldGZzbmFtZSh2ZnNvcHMqIG9wcykKIHsKLSAgICBmb3Ig
KGF1dG8gZnMgPSB2ZnNzdzsgZnMtPnZzX25hbWU7IGZzKyspIHsKLSAgICAgICAgaWYgKGZzLT52
c19vcCA9PSBvcHMpIHsKLSAgICAgICAgICAgIHJldHVybiBmcy0+dnNfbmFtZTsKLSAgICAgICAg
fQotICAgIH0KLSAgICBhYm9ydCgpOworCWZvciAoYXV0byBmcyA9IHZmc3N3OyBmcy0+dnNfbmFt
ZTsgZnMrKykgeworCQlpZiAoZnMtPnZzX29wID09IG9wcykgeworCQkJcmV0dXJuIGZzLT52c19u
YW1lOworCQl9CisJfQorCWFib3J0KCk7CiB9CiAKIGludAogc3lzX21vdW50KGNvbnN0IGNoYXIg
KmRldiwgY29uc3QgY2hhciAqZGlyLCBjb25zdCBjaGFyICpmc25hbWUsIGludCBmbGFncywgY29u
c3Qgdm9pZCAqZGF0YSkKIHsKLSAgICBjb25zdCBzdHJ1Y3QgdmZzc3cgKmZzOwotICAgIHN0cnVj
dCBtb3VudCAqbXA7Ci0gICAgc3RydWN0IGRldmljZSAqZGV2aWNlOwotICAgIHN0cnVjdCBkZW50
cnkgKmRwX2NvdmVyZWQ7Ci0gICAgc3RydWN0IHZub2RlICp2cDsKLSAgICBpbnQgZXJyb3I7Ci0K
LSAgICBrcHJpbnRmKCJWRlM6IG1vdW50aW5nICVzIGF0ICVzXG4iLCBmc25hbWUsIGRpcik7Ci0K
LSAgICBpZiAoIWRpciB8fCAqZGlyID09ICdcMCcpCi0gICAgICAgIHJldHVybiBFTk9FTlQ7Ci0K
LSAgICAvKiBGaW5kIGEgZmlsZSBzeXN0ZW0uICovCi0gICAgaWYgKCEoZnMgPSBmc19nZXRmcyhm
c25hbWUpKSkKLSAgICAgICAgcmV0dXJuIEVOT0RFVjsgIC8qIE5vIHN1Y2ggZmlsZSBzeXN0ZW0g
Ki8KLQotICAgIC8qIE9wZW4gZGV2aWNlLiBudWxscHRyIGNhbiBiZSBzcGVjaWZpZWQgYXMgYSBk
ZXZpY2UuICovCi0gICAgLy8gQWxsb3cgZGV2aWNlX29wZW4oKSB0byBmYWlsLCBpbiB3aGljaCBj
YXNlIGRldiBpcyBpbnRlcnByZXRlZAotICAgIC8vIGJ5IHRoZSBmaWxlIHN5c3RlbSBtb3VudCBy
b3V0aW5lIChlLmcgemZzIHBvb2xzKQotICAgIGRldmljZSA9IDA7Ci0gICAgaWYgKGRldiAmJiBz
dHJuY21wKGRldiwgIi9kZXYvIiwgNSkgPT0gMCkKLSAgICAgICAgZGV2aWNlX29wZW4oZGV2ICsg
NSwgRE9fUkRXUiwgJmRldmljZSk7Ci0KLSAgICAvKiBDaGVjayBpZiBkZXZpY2Ugb3IgZGlyZWN0
b3J5IGhhcyBhbHJlYWR5IGJlZW4gbW91bnRlZC4gKi8KLSAgICAvLyBXZSBuZWVkIHRvIGF2b2lk
IHRoZSBzaXR1YXRpb24gd2hlcmUgYWZ0ZXIgd2UgYWxyZWFkeSB2ZXJpZmllZCB0aGF0Ci0gICAg
Ly8gdGhlIG1vdW50IHBvaW50IGlzIGZyZWUsIGJ1dCBiZWZvcmUgd2UgYWN0dWFsbHkgYWRkIGl0
IHRvIG1vdW50X2xpc3QsCi0gICAgLy8gYW5vdGhlciBjb25jdXJyZW50IG1vdW50IGFkZHMgaXQu
IFNvIHdlIHVzZSBhIG5ldyBtdXRleCB0byBlbnN1cmUKLSAgICAvLyB0aGF0IG9ubHkgb25lIHN5
c19tb3VudCgpIHJ1bnMgYXQgYSB0aW1lLiBXZSBjYW5ub3QgcmV1c2UgdGhlIGV4aXN0aW5nCi0g
ICAgLy8gbW91bnRfbG9jayBmb3IgdGhpcyBwdXJwb3NlOiBJZiB3ZSB0YWtlIG1vdW50X2xvY2sg
YW5kIHRoZW4gZG8KLSAgICAvLyBsb29rdXBzLCB0aGlzIGlzIGxvY2sgb3JkZXIgaW52ZXJzaW9u
IGFuZCBjYW4gcmVzdWx0IGluIGRlYWRsb2NrLgotICAgIHN0YXRpYyBtdXRleCBzeXNfbW91bnRf
bG9jazsKLSAgICBTQ09QRV9MT0NLKHN5c19tb3VudF9sb2NrKTsKLSAgICBXSVRIX0xPQ0sobW91
bnRfbG9jaykgewotICAgICAgICBmb3IgKGF1dG8mJiBtcCA6IG1vdW50X2xpc3QpIHsKLSAgICAg
ICAgICAgIGlmICghc3RyY21wKG1wLT5tX3BhdGgsIGRpcikgfHwKLSAgICAgICAgICAgICAgICAo
ZGV2aWNlICYmIG1wLT5tX2RldiA9PSBkZXZpY2UpKSB7Ci0gICAgICAgICAgICAgICAgZXJyb3Ig
PSBFQlVTWTsgIC8qIEFscmVhZHkgbW91bnRlZCAqLwotICAgICAgICAgICAgICAgIGdvdG8gZXJy
MTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICAvKgotICAgICAqIENyZWF0
ZSBWRlMgbW91bnQgZW50cnkuCi0gICAgICovCi0gICAgaWYgKCEobXAgPSBuZXcgbW91bnQpKSB7
Ci0gICAgICAgIGVycm9yID0gRU5PTUVNOwotICAgICAgICBnb3RvIGVycjE7Ci0gICAgfQotICAg
IG1wLT5tX2NvdW50ID0gMDsKLSAgICBtcC0+bV9vcCA9IGZzLT52c19vcDsKLSAgICBtcC0+bV9m
bGFncyA9IGZsYWdzOwotICAgIG1wLT5tX2RldiA9IGRldmljZTsKLSAgICBtcC0+bV9kYXRhID0g
bnVsbHB0cjsKLSAgICBzdHJsY3B5KG1wLT5tX3BhdGgsIGRpciwgc2l6ZW9mKG1wLT5tX3BhdGgp
KTsKLSAgICBzdHJsY3B5KG1wLT5tX3NwZWNpYWwsIGRldiwgc2l6ZW9mKG1wLT5tX3NwZWNpYWwp
KTsKLQotICAgIC8qCi0gICAgICogR2V0IHZub2RlIHRvIGJlIGNvdmVyZWQgaW4gdGhlIHVwcGVy
IGZpbGUgc3lzdGVtLgotICAgICAqLwotICAgIGlmICgqZGlyID09ICcvJyAmJiAqKGRpciArIDEp
ID09ICdcMCcpIHsKLSAgICAgICAgLyogSWdub3JlIGlmIGl0IG1vdW50cyB0byBnbG9iYWwgcm9v
dCBkaXJlY3RvcnkuICovCi0gICAgICAgIGRwX2NvdmVyZWQgPSBudWxscHRyOwotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIGlmICgoZXJyb3IgPSBuYW1laShkaXIsICZkcF9jb3ZlcmVkKSkgIT0gMCkg
ewotCi0gICAgICAgICAgICBlcnJvciA9IEVOT0VOVDsKLSAgICAgICAgICAgIGdvdG8gZXJyMjsK
LSAgICAgICAgfQotICAgICAgICBpZiAoZHBfY292ZXJlZC0+ZF92bm9kZS0+dl90eXBlICE9IFZE
SVIpIHsKLSAgICAgICAgICAgIGVycm9yID0gRU5PVERJUjsKLSAgICAgICAgICAgIGdvdG8gZXJy
MzsKLSAgICAgICAgfQotICAgIH0KLSAgICBtcC0+bV9jb3ZlcmVkID0gZHBfY292ZXJlZDsKLQot
ICAgIC8qCi0gICAgICogQ3JlYXRlIGEgcm9vdCB2bm9kZSBmb3IgdGhpcyBmaWxlIHN5c3RlbS4K
LSAgICAgKi8KLSAgICB2Z2V0KG1wLCAwLCAmdnApOwotICAgIGlmICh2cCA9PSBudWxscHRyKSB7
Ci0gICAgICAgIGVycm9yID0gRU5PTUVNOwotICAgICAgICBnb3RvIGVycjM7Ci0gICAgfQotICAg
IHZwLT52X3R5cGUgPSBWRElSOwotICAgIHZwLT52X2ZsYWdzID0gVlJPT1Q7Ci0gICAgdnAtPnZf
bW9kZSA9IFNfSUZESVIgfCBTX0lSVVNSIHwgU19JV1VTUiB8IFNfSVhVU1I7Ci0KLSAgICBtcC0+
bV9yb290ID0gZGVudHJ5X2FsbG9jKG51bGxwdHIsIHZwLCAiLyIpOwotICAgIGlmICghbXAtPm1f
cm9vdCkgewotICAgICAgICB2cHV0KHZwKTsKLSAgICAgICAgZ290byBlcnIzOwotICAgIH0KLSAg
ICB2cHV0KHZwKTsKLQotICAgIC8qCi0gICAgICogQ2FsbCBhIGZpbGUgc3lzdGVtIHNwZWNpZmlj
IHJvdXRpbmUuCi0gICAgICovCi0gICAgaWYgKChlcnJvciA9IFZGU19NT1VOVChtcCwgZGV2LCBm
bGFncywgZGF0YSkpICE9IDApCi0gICAgICAgIGdvdG8gZXJyNDsKLQotICAgIGlmIChtcC0+bV9m
bGFncyAmIE1OVF9SRE9OTFkpCi0gICAgICAgIHZwLT52X21vZGUgJj1+U19JV1VTUjsKLQotICAg
IC8qCi0gICAgICogSW5zZXJ0IHRvIG1vdW50IGxpc3QKLSAgICAgKi8KLSAgICBXSVRIX0xPQ0so
bW91bnRfbG9jaykgewotICAgICAgICBtb3VudF9saXN0LnB1c2hfYmFjayhtcCk7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIDA7ICAgLyogc3VjY2VzcyAqLworCWNvbnN0IHN0cnVjdCB2ZnNzdyAqZnM7
CisJc3RydWN0IG1vdW50ICptcDsKKwlzdHJ1Y3QgZGV2aWNlICpkZXZpY2U7CisJc3RydWN0IGRl
bnRyeSAqZHBfY292ZXJlZDsKKwlzdHJ1Y3Qgdm5vZGUgKnZwOworCWludCBlcnJvcjsKKworCWtw
cmludGYoIlZGUzogbW91bnRpbmcgJXMgYXQgJXNcbiIsIGZzbmFtZSwgZGlyKTsKKworCWlmICgh
ZGlyIHx8ICpkaXIgPT0gJ1wwJykKKwkJcmV0dXJuIEVOT0VOVDsKKworCS8qIEZpbmQgYSBmaWxl
IHN5c3RlbS4gKi8KKwlpZiAoIShmcyA9IGZzX2dldGZzKGZzbmFtZSkpKQorCQlyZXR1cm4gRU5P
REVWOyAgLyogTm8gc3VjaCBmaWxlIHN5c3RlbSAqLworCisJLyogT3BlbiBkZXZpY2UuIG51bGxw
dHIgY2FuIGJlIHNwZWNpZmllZCBhcyBhIGRldmljZS4gKi8KKwkvLyBBbGxvdyBkZXZpY2Vfb3Bl
bigpIHRvIGZhaWwsIGluIHdoaWNoIGNhc2UgZGV2IGlzIGludGVycHJldGVkCisJLy8gYnkgdGhl
IGZpbGUgc3lzdGVtIG1vdW50IHJvdXRpbmUgKGUuZyB6ZnMgcG9vbHMpCisJZGV2aWNlID0gMDsK
KwlpZiAoZGV2ICYmIHN0cm5jbXAoZGV2LCAiL2Rldi8iLCA1KSA9PSAwKQorCQlkZXZpY2Vfb3Bl
bihkZXYgKyA1LCBET19SRFdSLCAmZGV2aWNlKTsKKworCS8qIENoZWNrIGlmIGRldmljZSBvciBk
aXJlY3RvcnkgaGFzIGFscmVhZHkgYmVlbiBtb3VudGVkLiAqLworCS8vIFdlIG5lZWQgdG8gYXZv
aWQgdGhlIHNpdHVhdGlvbiB3aGVyZSBhZnRlciB3ZSBhbHJlYWR5IHZlcmlmaWVkIHRoYXQKKwkv
LyB0aGUgbW91bnQgcG9pbnQgaXMgZnJlZSwgYnV0IGJlZm9yZSB3ZSBhY3R1YWxseSBhZGQgaXQg
dG8gbW91bnRfbGlzdCwKKwkvLyBhbm90aGVyIGNvbmN1cnJlbnQgbW91bnQgYWRkcyBpdC4gU28g
d2UgdXNlIGEgbmV3IG11dGV4IHRvIGVuc3VyZQorCS8vIHRoYXQgb25seSBvbmUgc3lzX21vdW50
KCkgcnVucyBhdCBhIHRpbWUuIFdlIGNhbm5vdCByZXVzZSB0aGUgZXhpc3RpbmcKKwkvLyBtb3Vu
dF9sb2NrIGZvciB0aGlzIHB1cnBvc2U6IElmIHdlIHRha2UgbW91bnRfbG9jayBhbmQgdGhlbiBk
bworCS8vIGxvb2t1cHMsIHRoaXMgaXMgbG9jayBvcmRlciBpbnZlcnNpb24gYW5kIGNhbiByZXN1
bHQgaW4gZGVhZGxvY2suCisJc3RhdGljIG11dGV4IHN5c19tb3VudF9sb2NrOworCVNDT1BFX0xP
Q0soc3lzX21vdW50X2xvY2spOworCVdJVEhfTE9DSyhtb3VudF9sb2NrKSB7CisJCWZvciAoYXV0
byYmIG1wIDogbW91bnRfbGlzdCkgeworCQkJaWYgKCFzdHJjbXAobXAtPm1fcGF0aCwgZGlyKSB8
fAorCQkJCShkZXZpY2UgJiYgbXAtPm1fZGV2ID09IGRldmljZSkpIHsKKwkJCQllcnJvciA9IEVC
VVNZOyAgLyogQWxyZWFkeSBtb3VudGVkICovCisJCQkJZ290byBlcnIxOworCQkJfQorCQl9CisJ
fQorCS8qCisJICogQ3JlYXRlIFZGUyBtb3VudCBlbnRyeS4KKwkgKi8KKwlpZiAoIShtcCA9IG5l
dyBtb3VudCkpIHsKKwkJZXJyb3IgPSBFTk9NRU07CisJCWdvdG8gZXJyMTsKKwl9CisJbXAtPm1f
Y291bnQgPSAwOworCW1wLT5tX29wID0gZnMtPnZzX29wOworCW1wLT5tX2ZsYWdzID0gZmxhZ3M7
CisJbXAtPm1fZGV2ID0gZGV2aWNlOworCW1wLT5tX2RhdGEgPSBudWxscHRyOworCXN0cmxjcHko
bXAtPm1fcGF0aCwgZGlyLCBzaXplb2YobXAtPm1fcGF0aCkpOworCXN0cmxjcHkobXAtPm1fc3Bl
Y2lhbCwgZGV2LCBzaXplb2YobXAtPm1fc3BlY2lhbCkpOworCisJLyoKKwkgKiBHZXQgdm5vZGUg
dG8gYmUgY292ZXJlZCBpbiB0aGUgdXBwZXIgZmlsZSBzeXN0ZW0uCisJICovCisJaWYgKCpkaXIg
PT0gJy8nICYmICooZGlyICsgMSkgPT0gJ1wwJykgeworCQkvKiBJZ25vcmUgaWYgaXQgbW91bnRz
IHRvIGdsb2JhbCByb290IGRpcmVjdG9yeS4gKi8KKwkJZHBfY292ZXJlZCA9IG51bGxwdHI7CisJ
fSBlbHNlIHsKKwkJaWYgKChlcnJvciA9IG5hbWVpKGRpciwgJmRwX2NvdmVyZWQpKSAhPSAwKSB7
CisKKwkJCWVycm9yID0gRU5PRU5UOworCQkJZ290byBlcnIyOworCQl9CisJCWlmIChkcF9jb3Zl
cmVkLT5kX3Zub2RlLT52X3R5cGUgIT0gVkRJUikgeworCQkJZXJyb3IgPSBFTk9URElSOworCQkJ
Z290byBlcnIzOworCQl9CisJfQorCW1wLT5tX2NvdmVyZWQgPSBkcF9jb3ZlcmVkOworCisJLyoK
KwkgKiBDcmVhdGUgYSByb290IHZub2RlIGZvciB0aGlzIGZpbGUgc3lzdGVtLgorCSAqLworCXZn
ZXQobXAsIDAsICZ2cCk7CisJaWYgKHZwID09IG51bGxwdHIpIHsKKwkJZXJyb3IgPSBFTk9NRU07
CisJCWdvdG8gZXJyMzsKKwl9CisJdnAtPnZfdHlwZSA9IFZESVI7CisJdnAtPnZfZmxhZ3MgPSBW
Uk9PVDsKKwl2cC0+dl9tb2RlID0gU19JRkRJUiB8IFNfSVJVU1IgfCBTX0lXVVNSIHwgU19JWFVT
UjsKKworCW1wLT5tX3Jvb3QgPSBkZW50cnlfYWxsb2MobnVsbHB0ciwgdnAsICIvIik7CisJaWYg
KCFtcC0+bV9yb290KSB7CisJCXZwdXQodnApOworCQlnb3RvIGVycjM7CisJfQorCXZwdXQodnAp
OworCisJLyoKKwkgKiBDYWxsIGEgZmlsZSBzeXN0ZW0gc3BlY2lmaWMgcm91dGluZS4KKwkgKi8K
KwlpZiAoKGVycm9yID0gVkZTX01PVU5UKG1wLCBkZXYsIGZsYWdzLCBkYXRhKSkgIT0gMCkKKwkJ
Z290byBlcnI0OworCisJaWYgKG1wLT5tX2ZsYWdzICYgTU5UX1JET05MWSkKKwkJdnAtPnZfbW9k
ZSAmPX5TX0lXVVNSOworCisJLyoKKwkgKiBJbnNlcnQgdG8gbW91bnQgbGlzdAorCSAqLworCVdJ
VEhfTE9DSyhtb3VudF9sb2NrKSB7CisJCW1vdW50X2xpc3QucHVzaF9iYWNrKG1wKTsKKwl9CisK
KwlyZXR1cm4gMDsgICAvKiBzdWNjZXNzICovCiAgZXJyNDoKLSAgICBkcmVsZShtcC0+bV9yb290
KTsKKwlkcmVsZShtcC0+bV9yb290KTsKICBlcnIzOgotICAgIGlmIChkcF9jb3ZlcmVkKQotICAg
ICAgICBkcmVsZShkcF9jb3ZlcmVkKTsKKwlpZiAoZHBfY292ZXJlZCkKKwkJZHJlbGUoZHBfY292
ZXJlZCk7CiAgZXJyMjoKLSAgICBkZWxldGUgbXA7CisJZGVsZXRlIG1wOwogIGVycjE6Ci0gICAg
aWYgKGRldmljZSkKLSAgICAgICAgZGV2aWNlX2Nsb3NlKGRldmljZSk7CisJaWYgKGRldmljZSkK
KwkJZGV2aWNlX2Nsb3NlKGRldmljZSk7CiAKLSAgICByZXR1cm4gZXJyb3I7CisJcmV0dXJuIGVy
cm9yOwogfQogCiB2b2lkCiByZWxlYXNlX21wX2RlbnRyaWVzKHN0cnVjdCBtb3VudCAqbXApCiB7
Ci0gICAgLyogRGVjcmVtZW50IHJlZmVyZWNlIGNvdW50IG9mIHJvb3Qgdm5vZGUgKi8KLSAgICBp
ZiAobXAtPm1fY292ZXJlZCkgewotICAgICAgICBkcmVsZShtcC0+bV9jb3ZlcmVkKTsKLSAgICB9
CisJLyogRGVjcmVtZW50IHJlZmVyZWNlIGNvdW50IG9mIHJvb3Qgdm5vZGUgKi8KKwlpZiAobXAt
Pm1fY292ZXJlZCkgeworCQlkcmVsZShtcC0+bV9jb3ZlcmVkKTsKKwl9CiAKLSAgICAvKiBSZWxl
YXNlIHJvb3QgZGVudHJ5ICovCi0gICAgZHJlbGUobXAtPm1fcm9vdCk7CisJLyogUmVsZWFzZSBy
b290IGRlbnRyeSAqLworCWRyZWxlKG1wLT5tX3Jvb3QpOwogfQogCiBpbnQKIHN5c191bW91bnQy
KGNvbnN0IGNoYXIgKnBhdGgsIGludCBmbGFncykKIHsKLSAgICBzdHJ1Y3QgbW91bnQgKm1wOwot
ICAgIGludCBlcnJvciwgcGF0aGxlbjsKKwlzdHJ1Y3QgbW91bnQgKm1wOworCWludCBlcnJvciwg
cGF0aGxlbjsKIAotICAgIGtwcmludGYoIlZGUzogdW5tb3VudGluZyAlc1xuIiwgcGF0aCk7CisJ
a3ByaW50ZigiVkZTOiB1bm1vdW50aW5nICVzXG4iLCBwYXRoKTsKIAotICAgIFNDT1BFX0xPQ0so
bW91bnRfbG9jayk7CisJU0NPUEVfTE9DSyhtb3VudF9sb2NrKTsKIAotICAgIHBhdGhsZW4gPSBz
dHJsZW4ocGF0aCk7Ci0gICAgaWYgKHBhdGhsZW4gPj0gTUFYUEFUSExFTikgewotICAgICAgICBl
cnJvciA9IEVOQU1FVE9PTE9ORzsKLSAgICAgICAgZ290byBvdXQ7Ci0gICAgfQorCXBhdGhsZW4g
PSBzdHJsZW4ocGF0aCk7CisJaWYgKHBhdGhsZW4gPj0gTUFYUEFUSExFTikgeworCQllcnJvciA9
IEVOQU1FVE9PTE9ORzsKKwkJZ290byBvdXQ7CisJfQogCi0gICAgLyogR2V0IG1vdW50IGVudHJ5
ICovCi0gICAgZm9yIChhdXRvJiYgdG1wIDogbW91bnRfbGlzdCkgewotICAgICAgICBpZiAoIXN0
cmNtcChwYXRoLCB0bXAtPm1fcGF0aCkpIHsKLSAgICAgICAgICAgIG1wID0gdG1wOwotICAgICAg
ICAgICAgZ290byBmb3VuZDsKLSAgICAgICAgfQotICAgIH0KKwkvKiBHZXQgbW91bnQgZW50cnkg
Ki8KKwlmb3IgKGF1dG8mJiB0bXAgOiBtb3VudF9saXN0KSB7CisJCWlmICghc3RyY21wKHBhdGgs
IHRtcC0+bV9wYXRoKSkgeworCQkJbXAgPSB0bXA7CisJCQlnb3RvIGZvdW5kOworCQl9CisJfQog
Ci0gICAgZXJyb3IgPSBFSU5WQUw7Ci0gICAgZ290byBvdXQ7CisJZXJyb3IgPSBFSU5WQUw7CisJ
Z290byBvdXQ7CiAKIGZvdW5kOgotICAgIC8qCi0gICAgICogUm9vdCBmcyBjYW4gbm90IGJlIHVu
bW91bnRlZC4KLSAgICAgKi8KLSAgICBpZiAobXAtPm1fY292ZXJlZCA9PSBudWxscHRyICYmICEo
ZmxhZ3MgJiBNTlRfRk9SQ0UpKSB7Ci0gICAgICAgIGVycm9yID0gRUlOVkFMOwotICAgICAgICBn
b3RvIG91dDsKLSAgICB9Ci0KLSAgICBpZiAoKGVycm9yID0gVkZTX1VOTU9VTlQobXAsIGZsYWdz
KSkgIT0gMCkKLSAgICAgICAgZ290byBvdXQ7Ci0gICAgbW91bnRfbGlzdC5yZW1vdmUobXApOwor
CS8qCisJICogUm9vdCBmcyBjYW4gbm90IGJlIHVubW91bnRlZC4KKwkgKi8KKwlpZiAobXAtPm1f
Y292ZXJlZCA9PSBudWxscHRyICYmICEoZmxhZ3MgJiBNTlRfRk9SQ0UpKSB7CisJCWVycm9yID0g
RUlOVkFMOworCQlnb3RvIG91dDsKKwl9CisKKwlpZiAoKGVycm9yID0gVkZTX1VOTU9VTlQobXAs
IGZsYWdzKSkgIT0gMCkKKwkJZ290byBvdXQ7CisJbW91bnRfbGlzdC5yZW1vdmUobXApOwogCiAj
aWZkZWYgSEFWRV9CVUZGRVJTCi0gICAgLyogRmx1c2ggYWxsIGJ1ZmZlcnMgKi8KLSAgICBiaW52
YWwobXAtPm1fZGV2KTsKKwkvKiBGbHVzaCBhbGwgYnVmZmVycyAqLworCWJpbnZhbChtcC0+bV9k
ZXYpOwogI2VuZGlmCiAKLSAgICBpZiAobXAtPm1fZGV2KQotICAgICAgICBkZXZpY2VfY2xvc2Uo
bXAtPm1fZGV2KTsKLSAgICBkZWxldGUgbXA7CisJaWYgKG1wLT5tX2RldikKKwkJZGV2aWNlX2Ns
b3NlKG1wLT5tX2Rldik7CisJZGVsZXRlIG1wOwogIG91dDoKLSAgICByZXR1cm4gZXJyb3I7CisJ
cmV0dXJuIGVycm9yOwogfQogCiBpbnQKIHN5c191bW91bnQoY29uc3QgY2hhciAqcGF0aCkKIHsK
LSAgICByZXR1cm4gc3lzX3Vtb3VudDIocGF0aCwgMCk7CisJcmV0dXJuIHN5c191bW91bnQyKHBh
dGgsIDApOwogfQogCiBpbnQKIHN5c19waXZvdF9yb290KGNvbnN0IGNoYXIgKm5ld19yb290LCBj
b25zdCBjaGFyICpwdXRfb2xkKQogewotICAgIHN0cnVjdCBtb3VudCAqbmV3bXAgPSBudWxscHRy
LCAqb2xkbXAgPSBudWxscHRyOwotICAgIGludCBlcnJvcjsKLQotICAgIFdJVEhfTE9DSyhtb3Vu
dF9sb2NrKSB7Ci0gICAgICAgIGZvciAoYXV0byYmIG1wIDogbW91bnRfbGlzdCkgewotICAgICAg
ICAgICAgaWYgKCFzdHJjbXAobXAtPm1fcGF0aCwgbmV3X3Jvb3QpKSB7Ci0gICAgICAgICAgICAg
ICAgbmV3bXAgPSBtcDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICghc3RyY21wKG1w
LT5tX3BhdGgsIHB1dF9vbGQpKSB7Ci0gICAgICAgICAgICAgICAgb2xkbXAgPSBtcDsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoIW5ld21wIHx8ICFvbGRtcCB8fCBuZXdt
cCA9PSBvbGRtcCkgewotICAgICAgICAgICAgcmV0dXJuIEVJTlZBTDsKLSAgICAgICAgfQotICAg
ICAgICBmb3IgKGF1dG8mJiBtcCA6IG1vdW50X2xpc3QpIHsKLSAgICAgICAgICAgIGlmIChtcCA9
PSBuZXdtcCB8fCBtcCA9PSBvbGRtcCkgewotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCFzdHJuY21wKG1wLT5tX3BhdGgsIHB1dF9vbGQs
IHN0cmxlbihwdXRfb2xkKSkpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gRUJVU1k7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKChlcnJvciA9IFZGU19VTk1PVU5UKG9s
ZG1wLCAwKSkgIT0gMCkgewotICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICB9Ci0g
ICAgICAgIG1vdW50X2xpc3QucmVtb3ZlKG9sZG1wKTsKLQotICAgICAgICBuZXdtcC0+bV9yb290
LT5kX3Zub2RlLT52X21vdW50ID0gbmV3bXA7Ci0KLSAgICAgICAgaWYgKG5ld21wLT5tX2NvdmVy
ZWQpIHsKLSAgICAgICAgICAgIGRyZWxlKG5ld21wLT5tX2NvdmVyZWQpOwotICAgICAgICB9Ci0g
ICAgICAgIG5ld21wLT5tX2NvdmVyZWQgPSBudWxscHRyOwotCi0gICAgICAgIGlmIChuZXdtcC0+
bV9yb290LT5kX3BhcmVudCkgewotICAgICAgICAgICAgZHJlbGUobmV3bXAtPm1fcm9vdC0+ZF9w
YXJlbnQpOwotICAgICAgICB9Ci0gICAgICAgIG5ld21wLT5tX3Jvb3QtPmRfcGFyZW50ID0gbnVs
bHB0cjsKLQotICAgICAgICBzdHJsY3B5KG5ld21wLT5tX3BhdGgsICIvIiwgc2l6ZW9mKG5ld21w
LT5tX3BhdGgpKTsKLSAgICB9Ci0gICAgcmV0dXJuIDA7CisJc3RydWN0IG1vdW50ICpuZXdtcCA9
IG51bGxwdHIsICpvbGRtcCA9IG51bGxwdHI7CisJaW50IGVycm9yOworCisJV0lUSF9MT0NLKG1v
dW50X2xvY2spIHsKKwkJZm9yIChhdXRvJiYgbXAgOiBtb3VudF9saXN0KSB7CisJCQlpZiAoIXN0
cmNtcChtcC0+bV9wYXRoLCBuZXdfcm9vdCkpIHsKKwkJCQluZXdtcCA9IG1wOworCQkJfQorCQkJ
aWYgKCFzdHJjbXAobXAtPm1fcGF0aCwgcHV0X29sZCkpIHsKKwkJCQlvbGRtcCA9IG1wOworCQkJ
fQorCQl9CisJCWlmICghbmV3bXAgfHwgIW9sZG1wIHx8IG5ld21wID09IG9sZG1wKSB7CisJCQly
ZXR1cm4gRUlOVkFMOworCQl9CisJCWZvciAoYXV0byYmIG1wIDogbW91bnRfbGlzdCkgeworCQkJ
aWYgKG1wID09IG5ld21wIHx8IG1wID09IG9sZG1wKSB7CisJCQkJY29udGludWU7CisJCQl9CisJ
CQlpZiAoIXN0cm5jbXAobXAtPm1fcGF0aCwgcHV0X29sZCwgc3RybGVuKHB1dF9vbGQpKSkgewor
CQkJCXJldHVybiBFQlVTWTsKKwkJCX0KKwkJfQorCQlpZiAoKGVycm9yID0gVkZTX1VOTU9VTlQo
b2xkbXAsIDApKSAhPSAwKSB7CisJCQlyZXR1cm4gZXJyb3I7CisJCX0KKwkJbW91bnRfbGlzdC5y
ZW1vdmUob2xkbXApOworCisJCW5ld21wLT5tX3Jvb3QtPmRfdm5vZGUtPnZfbW91bnQgPSBuZXdt
cDsKKworCQlpZiAobmV3bXAtPm1fY292ZXJlZCkgeworCQkJZHJlbGUobmV3bXAtPm1fY292ZXJl
ZCk7CisJCX0KKwkJbmV3bXAtPm1fY292ZXJlZCA9IG51bGxwdHI7CisKKwkJaWYgKG5ld21wLT5t
X3Jvb3QtPmRfcGFyZW50KSB7CisJCQlkcmVsZShuZXdtcC0+bV9yb290LT5kX3BhcmVudCk7CisJ
CX0KKwkJbmV3bXAtPm1fcm9vdC0+ZF9wYXJlbnQgPSBudWxscHRyOworCisJCXN0cmxjcHkobmV3
bXAtPm1fcGF0aCwgIi8iLCBzaXplb2YobmV3bXAtPm1fcGF0aCkpOworCX0KKwlyZXR1cm4gMDsK
IH0KIAogaW50CiBzeXNfc3luYyh2b2lkKQogewotICAgIC8qIENhbGwgZWFjaCBtb3VudGVkIGZp
bGUgc3lzdGVtLiAqLwotICAgIFdJVEhfTE9DSyhtb3VudF9sb2NrKSB7Ci0gICAgICAgIGZvciAo
YXV0byYmIG1wIDogbW91bnRfbGlzdCkgewotICAgICAgICAgICAgVkZTX1NZTkMobXApOwotICAg
ICAgICB9Ci0gICAgfQorCS8qIENhbGwgZWFjaCBtb3VudGVkIGZpbGUgc3lzdGVtLiAqLworCVdJ
VEhfTE9DSyhtb3VudF9sb2NrKSB7CisJCWZvciAoYXV0byYmIG1wIDogbW91bnRfbGlzdCkgewor
CQkJVkZTX1NZTkMobXApOworCQl9CisJfQogI2lmZGVmIEhBVkVfQlVGRkVSUwotICAgIGJpb19z
eW5jKCk7CisJYmlvX3N5bmMoKTsKICNlbmRpZgotICAgIHJldHVybiAwOworCXJldHVybiAwOwog
fQogCiAvKgpAQCAtMzYwLDI1ICszNjAsMjUgQEAgc3lzX3N5bmModm9pZCkKIHN0YXRpYyBzaXpl
X3QKIGNvdW50X21hdGNoKGNvbnN0IGNoYXIgKnBhdGgsIGNoYXIgKm1vdW50X3Jvb3QpCiB7Ci0g
ICAgc2l6ZV90IGxlbiA9IDA7CisJc2l6ZV90IGxlbiA9IDA7CiAKLSAgICB3aGlsZSAoKnBhdGgg
JiYgKm1vdW50X3Jvb3QpIHsKLSAgICAgICAgaWYgKCpwYXRoICE9ICptb3VudF9yb290KQotICAg
ICAgICAgICAgYnJlYWs7CisJd2hpbGUgKCpwYXRoICYmICptb3VudF9yb290KSB7CisJCWlmICgq
cGF0aCAhPSAqbW91bnRfcm9vdCkKKwkJCWJyZWFrOwogCi0gICAgICAgIHBhdGgrKzsKLSAgICAg
ICAgbW91bnRfcm9vdCsrOwotICAgICAgICBsZW4rKzsKLSAgICB9Ci0gICAgaWYgKCptb3VudF9y
b290ICE9ICdcMCcpCi0gICAgICAgIHJldHVybiAwOworCQlwYXRoKys7CisJCW1vdW50X3Jvb3Qr
KzsKKwkJbGVuKys7CisJfQorCWlmICgqbW91bnRfcm9vdCAhPSAnXDAnKQorCQlyZXR1cm4gMDsK
IAotICAgIGlmIChsZW4gPT0gMSAmJiAqKHBhdGggLSAxKSA9PSAnLycpCi0gICAgICAgIHJldHVy
biAxOworCWlmIChsZW4gPT0gMSAmJiAqKHBhdGggLSAxKSA9PSAnLycpCisJCXJldHVybiAxOwog
Ci0gICAgaWYgKCpwYXRoID09ICdcMCcgfHwgKnBhdGggPT0gJy8nKQotICAgICAgICByZXR1cm4g
bGVuOwotICAgIHJldHVybiAwOworCWlmICgqcGF0aCA9PSAnXDAnIHx8ICpwYXRoID09ICcvJykK
KwkJcmV0dXJuIGxlbjsKKwlyZXR1cm4gMDsKIH0KIAogLyoKQEAgLTM5MCwyOCArMzkwLDI4IEBA
IGNvdW50X21hdGNoKGNvbnN0IGNoYXIgKnBhdGgsIGNoYXIgKm1vdW50X3Jvb3QpCiBpbnQKIHZm
c19maW5kcm9vdChjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3QgbW91bnQgKiptcCwgY2hhciAqKnJv
b3QpCiB7Ci0gICAgc3RydWN0IG1vdW50ICptID0gbnVsbHB0cjsKLSAgICBzaXplX3QgbGVuLCBt
YXhfbGVuID0gMDsKLQotICAgIGlmICghcGF0aCkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAg
LyogRmluZCBtb3VudCBwb2ludCBmcm9tIG5lYXJlc3QgcGF0aCAqLwotICAgIFNDT1BFX0xPQ0so
bW91bnRfbG9jayk7Ci0gICAgZm9yIChhdXRvJiYgdG1wIDogbW91bnRfbGlzdCkgewotICAgICAg
ICBsZW4gPSBjb3VudF9tYXRjaChwYXRoLCB0bXAtPm1fcGF0aCk7Ci0gICAgICAgIGlmIChsZW4g
PiBtYXhfbGVuKSB7Ci0gICAgICAgICAgICBtYXhfbGVuID0gbGVuOwotICAgICAgICAgICAgbSA9
IHRtcDsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAobSA9PSBudWxscHRyKQotICAgICAgICBy
ZXR1cm4gLTE7Ci0gICAgKnJvb3QgPSAoY2hhciAqKShwYXRoICsgbWF4X2xlbik7Ci0gICAgaWYg
KCoqcm9vdCA9PSAnLycpCi0gICAgICAgICgqcm9vdCkrKzsKLSAgICAqbXAgPSBtOwotICAgIHJl
dHVybiAwOworCXN0cnVjdCBtb3VudCAqbSA9IG51bGxwdHI7CisJc2l6ZV90IGxlbiwgbWF4X2xl
biA9IDA7CisKKwlpZiAoIXBhdGgpCisJCXJldHVybiAtMTsKKworCS8qIEZpbmQgbW91bnQgcG9p
bnQgZnJvbSBuZWFyZXN0IHBhdGggKi8KKwlTQ09QRV9MT0NLKG1vdW50X2xvY2spOworCWZvciAo
YXV0byYmIHRtcCA6IG1vdW50X2xpc3QpIHsKKwkJbGVuID0gY291bnRfbWF0Y2gocGF0aCwgdG1w
LT5tX3BhdGgpOworCQlpZiAobGVuID4gbWF4X2xlbikgeworCQkJbWF4X2xlbiA9IGxlbjsKKwkJ
CW0gPSB0bXA7CisJCX0KKwl9CisJaWYgKG0gPT0gbnVsbHB0cikKKwkJcmV0dXJuIC0xOworCSpy
b290ID0gKGNoYXIgKikocGF0aCArIG1heF9sZW4pOworCWlmICgqKnJvb3QgPT0gJy8nKQorCQko
KnJvb3QpKys7CisJKm1wID0gbTsKKwlyZXR1cm4gMDsKIH0KIAogLyoKQEAgLTQyMCw4ICs0MjAs
OCBAQCB2ZnNfZmluZHJvb3QoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IG1vdW50ICoqbXAsIGNo
YXIgKipyb290KQogdm9pZAogdmZzX2J1c3koc3RydWN0IG1vdW50ICptcCkKIHsKLSAgICBTQ09Q
RV9MT0NLKG1vdW50X2xvY2spOwotICAgIG1wLT5tX2NvdW50Kys7CisJU0NPUEVfTE9DSyhtb3Vu
dF9sb2NrKTsKKwltcC0+bV9jb3VudCsrOwogfQogCiAKQEAgLTQzMSw0NSArNDMxLDQ1IEBAIHZm
c19idXN5KHN0cnVjdCBtb3VudCAqbXApCiB2b2lkCiB2ZnNfdW5idXN5KHN0cnVjdCBtb3VudCAq
bXApCiB7Ci0gICAgU0NPUEVfTE9DSyhtb3VudF9sb2NrKTsKLSAgICBtcC0+bV9jb3VudC0tOwor
CVNDT1BFX0xPQ0sobW91bnRfbG9jayk7CisJbXAtPm1fY291bnQtLTsKIH0KIAogaW50CiB2ZnNf
bnVsbG9wKHZvaWQpCiB7Ci0gICAgcmV0dXJuIDA7CisJcmV0dXJuIDA7CiB9CiAKIGludAogdmZz
X2VpbnZhbCh2b2lkKQogewotICAgIHJldHVybiBFSU5WQUw7CisJcmV0dXJuIEVJTlZBTDsKIH0K
IAogbmFtZXNwYWNlIG9zdiB7CiAKIG1vdW50X2Rlc2MgdG9fbW91bnRfZGVzYyhtb3VudCogbSkK
IHsKLSAgICBtb3VudF9kZXNjIHJldDsKLSAgICByZXQuc3BlY2lhbCA9IG0tPm1fc3BlY2lhbDsK
LSAgICByZXQucGF0aCA9IG0tPm1fcGF0aDsKLSAgICByZXQudHlwZSA9IGZzX2dldGZzbmFtZSht
LT5tX29wKTsKLSAgICAvLyBGSVhNRTogcmVjb3JkIG9wdGlvbnMKLSAgICByZXQub3B0aW9ucyA9
ICIiOwotICAgIHJldHVybiByZXQ7CisJbW91bnRfZGVzYyByZXQ7CisJcmV0LnNwZWNpYWwgPSBt
LT5tX3NwZWNpYWw7CisJcmV0LnBhdGggPSBtLT5tX3BhdGg7CisJcmV0LnR5cGUgPSBmc19nZXRm
c25hbWUobS0+bV9vcCk7CisJLy8gRklYTUU6IHJlY29yZCBvcHRpb25zCisJcmV0Lm9wdGlvbnMg
PSAiIjsKKwlyZXR1cm4gcmV0OwogfQogCiBzdGQ6OnZlY3Rvcjxtb3VudF9kZXNjPgogY3VycmVu
dF9tb3VudHMoKQogewotICAgIFdJVEhfTE9DSyhtb3VudF9sb2NrKSB7Ci0gICAgICAgIHN0ZDo6
dmVjdG9yPG1vdW50X2Rlc2M+IHJldDsKLSAgICAgICAgZm9yIChhdXRvJiYgbXAgOiBtb3VudF9s
aXN0KSB7Ci0gICAgICAgICAgICByZXQucHVzaF9iYWNrKHRvX21vdW50X2Rlc2MobXApKTsKLSAg
ICAgICAgfQotICAgICAgICByZXR1cm4gcmV0OwotICAgIH0KKwlXSVRIX0xPQ0sobW91bnRfbG9j
aykgeworCQlzdGQ6OnZlY3Rvcjxtb3VudF9kZXNjPiByZXQ7CisJCWZvciAoYXV0byYmIG1wIDog
bW91bnRfbGlzdCkgeworCQkJcmV0LnB1c2hfYmFjayh0b19tb3VudF9kZXNjKG1wKSk7CisJCX0K
KwkJcmV0dXJuIHJldDsKKwl9CiB9CiAKIH0KQEAgLTQ3OCwxNCArNDc4LDE0IEBAIGN1cnJlbnRf
bW91bnRzKCkKIHZvaWQKIG1vdW50X2R1bXAodm9pZCkKIHsKLSAgICBTQ09QRV9MT0NLKG1vdW50
X2xvY2spOworCVNDT1BFX0xPQ0sobW91bnRfbG9jayk7CiAKLSAgICBrcHJpbnRmKCJtb3VudF9k
dW1wXG4iKTsKLSAgICBrcHJpbnRmKCJkZXYgICAgICBjb3VudCByb290XG4iKTsKLSAgICBrcHJp
bnRmKCItLS0tLS0tLSAtLS0tLSAtLS0tLS0tLVxuIik7CisJa3ByaW50ZigibW91bnRfZHVtcFxu
Iik7CisJa3ByaW50ZigiZGV2ICAgICAgY291bnQgcm9vdFxuIik7CisJa3ByaW50ZigiLS0tLS0t
LS0gLS0tLS0gLS0tLS0tLS1cbiIpOwogCi0gICAgZm9yIChhdXRvJiYgbXAgOiBtb3VudF9saXN0
KSB7Ci0gICAgICAgIGtwcmludGYoIiU4eCAlNWQgJXNcbiIsIG1wLT5tX2RldiwgbXAtPm1fY291
bnQsIG1wLT5tX3BhdGgpOwotICAgIH0KKwlmb3IgKGF1dG8mJiBtcCA6IG1vdW50X2xpc3QpIHsK
KwkJa3ByaW50ZigiJTh4ICU1ZCAlc1xuIiwgbXAtPm1fZGV2LCBtcC0+bV9jb3VudCwgbXAtPm1f
cGF0aCk7CisJfQogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9zeXNjYWxscy5j
IGIvbGliL3Zmc2NvcmUvc3lzY2FsbHMuYwppbmRleCA0ODdkNTcyOS4uYjU0MzNlY2UgMTAwNjQ0
Ci0tLSBhL2xpYi92ZnNjb3JlL3N5c2NhbGxzLmMKKysrIGIvbGliL3Zmc2NvcmUvc3lzY2FsbHMu
YwpAQCAtMjQ1LDcyICsyNDUsNzIgQEAgaW50CiBzeXNfcmVhZChzdHJ1Y3QgZmlsZSAqZnAsIGNv
bnN0IHN0cnVjdCBpb3ZlYyAqaW92LCBzaXplX3QgbmlvdiwKIAkJb2ZmX3Qgb2Zmc2V0LCBzaXpl
X3QgKmNvdW50KQogewotICAgIGlmICgoZnAtPmZfZmxhZ3MgJiBGUkVBRCkgPT0gMCkKLSAgICAg
ICAgcmV0dXJuIEVCQURGOwotCi0gICAgc2l6ZV90IGJ5dGVzID0gMDsKLSAgICBhdXRvIGlvdnAg
PSBpb3Y7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG5pb3Y7IGkrKykgewotICAgICAg
ICBpZiAoaW92cC0+aW92X2xlbiA+IElPU0laRV9NQVggLSBieXRlcykgewotICAgICAgICAgICAg
cmV0dXJuIEVJTlZBTDsKLSAgICAgICAgfQotICAgICAgICBieXRlcyArPSBpb3ZwLT5pb3ZfbGVu
OwotICAgICAgICBpb3ZwKys7Ci0gICAgfQotCi0gICAgaWYgKGJ5dGVzID09IDApIHsKLSAgICAg
ICAgKmNvdW50ID0gMDsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgc3RydWN0IHVp
byB1aW87Ci0gICAgLy8gVW5mb3J0dW5hdGVseSwgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24g
b2YgZnAtPnJlYWQgemVyb3MgdGhlCi0gICAgLy8gaW92X2xlbiBmaWVsZHMgd2hlbiBpdCByZWFk
cyBmcm9tIGRpc2ssIHNvIHdlIGhhdmUgdG8gY29weSBpb3YuCi0gICAgc3RkOjp2ZWN0b3I8aW92
ZWM+IGNvcHlfaW92KGlvdiwgaW92ICsgbmlvdik7Ci0gICAgdWlvLnVpb19pb3YgPSBjb3B5X2lv
di5kYXRhKCk7Ci0gICAgdWlvLnVpb19pb3ZjbnQgPSBuaW92OwotICAgIHVpby51aW9fb2Zmc2V0
ID0gb2Zmc2V0OwotICAgIHVpby51aW9fcmVzaWQgPSBieXRlczsKLSAgICB1aW8udWlvX3J3ID0g
VUlPX1JFQUQ7Ci0gICAgYXV0byBlcnJvciA9IGZwLT5yZWFkKCZ1aW8sIChvZmZzZXQgPT0gLTEp
ID8gMCA6IEZPRl9PRkZTRVQpOwotICAgICpjb3VudCA9IGJ5dGVzIC0gdWlvLnVpb19yZXNpZDsK
LSAgICByZXR1cm4gZXJyb3I7CisJaWYgKChmcC0+Zl9mbGFncyAmIEZSRUFEKSA9PSAwKQorCQly
ZXR1cm4gRUJBREY7CisKKwlzaXplX3QgYnl0ZXMgPSAwOworCWF1dG8gaW92cCA9IGlvdjsKKwlm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbmlvdjsgaSsrKSB7CisJCWlmIChpb3ZwLT5pb3ZfbGVu
ID4gSU9TSVpFX01BWCAtIGJ5dGVzKSB7CisJCQlyZXR1cm4gRUlOVkFMOworCQl9CisJCWJ5dGVz
ICs9IGlvdnAtPmlvdl9sZW47CisJCWlvdnArKzsKKwl9CisKKwlpZiAoYnl0ZXMgPT0gMCkgewor
CQkqY291bnQgPSAwOworCQlyZXR1cm4gMDsKKwl9CisKKwlzdHJ1Y3QgdWlvIHVpbzsKKwkvLyBV
bmZvcnR1bmF0ZWx5LCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvZiBmcC0+cmVhZCB6ZXJv
cyB0aGUKKwkvLyBpb3ZfbGVuIGZpZWxkcyB3aGVuIGl0IHJlYWRzIGZyb20gZGlzaywgc28gd2Ug
aGF2ZSB0byBjb3B5IGlvdi4KKwlzdGQ6OnZlY3Rvcjxpb3ZlYz4gY29weV9pb3YoaW92LCBpb3Yg
KyBuaW92KTsKKwl1aW8udWlvX2lvdiA9IGNvcHlfaW92LmRhdGEoKTsKKwl1aW8udWlvX2lvdmNu
dCA9IG5pb3Y7CisJdWlvLnVpb19vZmZzZXQgPSBvZmZzZXQ7CisJdWlvLnVpb19yZXNpZCA9IGJ5
dGVzOworCXVpby51aW9fcncgPSBVSU9fUkVBRDsKKwlhdXRvIGVycm9yID0gZnAtPnJlYWQoJnVp
bywgKG9mZnNldCA9PSAtMSkgPyAwIDogRk9GX09GRlNFVCk7CisJKmNvdW50ID0gYnl0ZXMgLSB1
aW8udWlvX3Jlc2lkOworCXJldHVybiBlcnJvcjsKIH0KIAogaW50CiBzeXNfd3JpdGUoc3RydWN0
IGZpbGUgKmZwLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlvdiwgc2l6ZV90IG5pb3YsCiAJCW9mZl90
IG9mZnNldCwgc2l6ZV90ICpjb3VudCkKIHsKLSAgICBpZiAoKGZwLT5mX2ZsYWdzICYgRldSSVRF
KSA9PSAwKQotICAgICAgICByZXR1cm4gRUJBREY7Ci0KLSAgICBzaXplX3QgYnl0ZXMgPSAwOwot
ICAgIGF1dG8gaW92cCA9IGlvdjsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbmlvdjsg
aSsrKSB7Ci0gICAgICAgIGlmIChpb3ZwLT5pb3ZfbGVuID4gSU9TSVpFX01BWCAtIGJ5dGVzKSB7
Ci0gICAgICAgICAgICByZXR1cm4gRUlOVkFMOwotICAgICAgICB9Ci0gICAgICAgIGJ5dGVzICs9
IGlvdnAtPmlvdl9sZW47Ci0gICAgICAgIGlvdnArKzsKLSAgICB9Ci0KLSAgICBpZiAoYnl0ZXMg
PT0gMCkgewotICAgICAgICAqY291bnQgPSAwOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0K
LSAgICBzdHJ1Y3QgdWlvIHVpbzsKLSAgICAvLyBVbmZvcnR1bmF0ZWx5LCB0aGUgY3VycmVudCBp
bXBsZW1lbnRhdGlvbiBvZiBmcC0+d3JpdGUgemVyb3MgdGhlCi0gICAgLy8gaW92X2xlbiBmaWVs
ZHMgd2hlbiBpdCB3cml0ZXMgdG8gZGlzaywgc28gd2UgaGF2ZSB0byBjb3B5IGlvdi4KLSAgICBz
dGQ6OnZlY3Rvcjxpb3ZlYz4gY29weV9pb3YoaW92LCBpb3YgKyBuaW92KTsKLSAgICB1aW8udWlv
X2lvdiA9IGNvcHlfaW92LmRhdGEoKTsKLSAgICB1aW8udWlvX2lvdmNudCA9IG5pb3Y7Ci0gICAg
dWlvLnVpb19vZmZzZXQgPSBvZmZzZXQ7Ci0gICAgdWlvLnVpb19yZXNpZCA9IGJ5dGVzOwotICAg
IHVpby51aW9fcncgPSBVSU9fV1JJVEU7Ci0gICAgYXV0byBlcnJvciA9IGZwLT53cml0ZSgmdWlv
LCAob2Zmc2V0ID09IC0xKSA/IDAgOiBGT0ZfT0ZGU0VUKTsKLSAgICAqY291bnQgPSBieXRlcyAt
IHVpby51aW9fcmVzaWQ7Ci0gICAgcmV0dXJuIGVycm9yOworCWlmICgoZnAtPmZfZmxhZ3MgJiBG
V1JJVEUpID09IDApCisJCXJldHVybiBFQkFERjsKKworCXNpemVfdCBieXRlcyA9IDA7CisJYXV0
byBpb3ZwID0gaW92OworCWZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBuaW92OyBpKyspIHsKKwkJ
aWYgKGlvdnAtPmlvdl9sZW4gPiBJT1NJWkVfTUFYIC0gYnl0ZXMpIHsKKwkJCXJldHVybiBFSU5W
QUw7CisJCX0KKwkJYnl0ZXMgKz0gaW92cC0+aW92X2xlbjsKKwkJaW92cCsrOworCX0KKworCWlm
IChieXRlcyA9PSAwKSB7CisJCSpjb3VudCA9IDA7CisJCXJldHVybiAwOworCX0KKworCXN0cnVj
dCB1aW8gdWlvOworCS8vIFVuZm9ydHVuYXRlbHksIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9u
IG9mIGZwLT53cml0ZSB6ZXJvcyB0aGUKKwkvLyBpb3ZfbGVuIGZpZWxkcyB3aGVuIGl0IHdyaXRl
cyB0byBkaXNrLCBzbyB3ZSBoYXZlIHRvIGNvcHkgaW92LgorCXN0ZDo6dmVjdG9yPGlvdmVjPiBj
b3B5X2lvdihpb3YsIGlvdiArIG5pb3YpOworCXVpby51aW9faW92ID0gY29weV9pb3YuZGF0YSgp
OworCXVpby51aW9faW92Y250ID0gbmlvdjsKKwl1aW8udWlvX29mZnNldCA9IG9mZnNldDsKKwl1
aW8udWlvX3Jlc2lkID0gYnl0ZXM7CisJdWlvLnVpb19ydyA9IFVJT19XUklURTsKKwlhdXRvIGVy
cm9yID0gZnAtPndyaXRlKCZ1aW8sIChvZmZzZXQgPT0gLTEpID8gMCA6IEZPRl9PRkZTRVQpOwor
CSpjb3VudCA9IGJ5dGVzIC0gdWlvLnVpb19yZXNpZDsKKwlyZXR1cm4gZXJyb3I7CiB9CiAKIGlu
dApAQCAtMTIyMSw4ICsxMjIxLDggQEAgc3lzX3JlYWRsaW5rKGNoYXIgKnBhdGgsIGNoYXIgKmJ1
Ziwgc2l6ZV90IGJ1ZnNpemUsIHNzaXplX3QgKnNpemUpCiAgKi8KIHN0YXRpYyBib29sIGlzX3Rp
bWV2YWxfdmFsaWQoY29uc3Qgc3RydWN0IHRpbWV2YWwgKnRpbWUpCiB7Ci0gICAgcmV0dXJuICh0
aW1lLT50dl9zZWMgPj0gMCkgJiYKLSAgICAgICAgICAgKHRpbWUtPnR2X3VzZWMgPj0gMCAmJiB0
aW1lLT50dl91c2VjIDwgMTAwMDAwMCk7CisJcmV0dXJuICh0aW1lLT50dl9zZWMgPj0gMCkgJiYK
KwkJICAgKHRpbWUtPnR2X3VzZWMgPj0gMCAmJiB0aW1lLT50dl91c2VjIDwgMTAwMDAwMCk7CiB9
CiAKIC8qCkBAIC0xMjMwLDU4ICsxMjMwLDU4IEBAIHN0YXRpYyBib29sIGlzX3RpbWV2YWxfdmFs
aWQoY29uc3Qgc3RydWN0IHRpbWV2YWwgKnRpbWUpCiAgKi8KIHN0YXRpYyB2b2lkIGNvbnZlcnRf
dGltZXZhbChzdHJ1Y3QgdGltZXNwZWMgJnRvLCBjb25zdCBzdHJ1Y3QgdGltZXZhbCAqZnJvbSkK
IHsKLSAgICBpZiAoZnJvbSkgewotICAgICAgICB0by50dl9zZWMgPSBmcm9tLT50dl9zZWM7Ci0g
ICAgICAgIHRvLnR2X25zZWMgPSBmcm9tLT50dl91c2VjICogMTAwMDsgLy8gQ29udmVydCBtaWNy
b3NlY29uZHMgdG8gbmFub3NlY29uZHMKLSAgICB9IGVsc2UgewotICAgICAgICBjbG9ja19nZXR0
aW1lKENMT0NLX1JFQUxUSU1FLCAmdG8pOwotICAgIH0KKwlpZiAoZnJvbSkgeworCQl0by50dl9z
ZWMgPSBmcm9tLT50dl9zZWM7CisJCXRvLnR2X25zZWMgPSBmcm9tLT50dl91c2VjICogMTAwMDsg
Ly8gQ29udmVydCBtaWNyb3NlY29uZHMgdG8gbmFub3NlY29uZHMKKwl9IGVsc2UgeworCQljbG9j
a19nZXR0aW1lKENMT0NLX1JFQUxUSU1FLCAmdG8pOworCX0KIH0KIAogaW50CiBzeXNfdXRpbWVz
KGNoYXIgKnBhdGgsIGNvbnN0IHN0cnVjdCB0aW1ldmFsIHRpbWVzWzJdLCBpbnQgZmxhZ3MpCiB7
Ci0gICAgaW50IGVycm9yOwotICAgIHN0cnVjdCBkZW50cnkgKmRwOwotICAgIHN0cnVjdCB0aW1l
c3BlYyB0aW1lc3BlY190aW1lc1syXTsKLQotICAgIERQUklOVEYoVkZTREJfU1lTQ0FMTCwgKCJz
eXNfdXRpbWVzOiBwYXRoPSVzXG4iLCBwYXRoKSk7Ci0KLSAgICBpZiAodGltZXMgJiYgKCFpc190
aW1ldmFsX3ZhbGlkKCZ0aW1lc1swXSkgfHwgIWlzX3RpbWV2YWxfdmFsaWQoJnRpbWVzWzFdKSkp
Ci0gICAgICAgIHJldHVybiBFSU5WQUw7Ci0KLSAgICAvLyBDb252ZXJ0IGVhY2ggZWxlbWVudCBv
ZiB0aW1ldmFsIGFycmF5IHRvIHRoZSB0aW1lc3BlYyB0eXBlCi0gICAgY29udmVydF90aW1ldmFs
KHRpbWVzcGVjX3RpbWVzWzBdLCB0aW1lcyA/IHRpbWVzICsgMCA6IG51bGxwdHIpOwotICAgIGNv
bnZlcnRfdGltZXZhbCh0aW1lc3BlY190aW1lc1sxXSwgdGltZXMgPyB0aW1lcyArIDEgOiBudWxs
cHRyKTsKLQotICAgIGlmIChmbGFncyAmIEFUX1NZTUxJTktfTk9GT0xMT1cpIHsKLSAgICAgICAg
c3RydWN0IGRlbnRyeSAqZGRwOwotICAgICAgICBlcnJvciA9IGxvb2t1cChwYXRoLCAmZGRwLCBu
dWxscHRyKTsKLSAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3I7
Ci0gICAgICAgIH0KLQotICAgICAgICBlcnJvciA9IG5hbWVpX2xhc3Rfbm9mb2xsb3cocGF0aCwg
ZGRwLCAmZHApOwotICAgICAgICBpZiAoZGRwICE9IG51bGxwdHIpIHsKLSAgICAgICAgICAgIGRy
ZWxlKGRkcCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICBy
ZXR1cm4gZXJyb3I7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBlcnJvciA9IG5h
bWVpKHBhdGgsICZkcCk7Ci0gICAgICAgIGlmIChlcnJvcikKLSAgICAgICAgICAgIHJldHVybiBl
cnJvcjsKLSAgICB9Ci0KLSAgICBpZiAoZHAtPmRfbW91bnQtPm1fZmxhZ3MgJiBNTlRfUkRPTkxZ
KSB7Ci0gICAgICAgIGVycm9yID0gRVJPRlM7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZXJyb3Ig
PSB2bl9zZXR0aW1lcyhkcC0+ZF92bm9kZSwgdGltZXNwZWNfdGltZXMpOwotICAgIH0KLQotICAg
IGRyZWxlKGRwKTsKLSAgICByZXR1cm4gZXJyb3I7CisJaW50IGVycm9yOworCXN0cnVjdCBkZW50
cnkgKmRwOworCXN0cnVjdCB0aW1lc3BlYyB0aW1lc3BlY190aW1lc1syXTsKKworCURQUklOVEYo
VkZTREJfU1lTQ0FMTCwgKCJzeXNfdXRpbWVzOiBwYXRoPSVzXG4iLCBwYXRoKSk7CisKKwlpZiAo
dGltZXMgJiYgKCFpc190aW1ldmFsX3ZhbGlkKCZ0aW1lc1swXSkgfHwgIWlzX3RpbWV2YWxfdmFs
aWQoJnRpbWVzWzFdKSkpCisJCXJldHVybiBFSU5WQUw7CisKKwkvLyBDb252ZXJ0IGVhY2ggZWxl
bWVudCBvZiB0aW1ldmFsIGFycmF5IHRvIHRoZSB0aW1lc3BlYyB0eXBlCisJY29udmVydF90aW1l
dmFsKHRpbWVzcGVjX3RpbWVzWzBdLCB0aW1lcyA/IHRpbWVzICsgMCA6IG51bGxwdHIpOworCWNv
bnZlcnRfdGltZXZhbCh0aW1lc3BlY190aW1lc1sxXSwgdGltZXMgPyB0aW1lcyArIDEgOiBudWxs
cHRyKTsKKworCWlmIChmbGFncyAmIEFUX1NZTUxJTktfTk9GT0xMT1cpIHsKKwkJc3RydWN0IGRl
bnRyeSAqZGRwOworCQllcnJvciA9IGxvb2t1cChwYXRoLCAmZGRwLCBudWxscHRyKTsKKwkJaWYg
KGVycm9yKSB7CisJCQlyZXR1cm4gZXJyb3I7CisJCX0KKworCQllcnJvciA9IG5hbWVpX2xhc3Rf
bm9mb2xsb3cocGF0aCwgZGRwLCAmZHApOworCQlpZiAoZGRwICE9IG51bGxwdHIpIHsKKwkJCWRy
ZWxlKGRkcCk7CisJCX0KKwkJaWYgKGVycm9yKSB7CisJCQlyZXR1cm4gZXJyb3I7CisJCX0KKwl9
IGVsc2UgeworCQllcnJvciA9IG5hbWVpKHBhdGgsICZkcCk7CisJCWlmIChlcnJvcikKKwkJCXJl
dHVybiBlcnJvcjsKKwl9CisKKwlpZiAoZHAtPmRfbW91bnQtPm1fZmxhZ3MgJiBNTlRfUkRPTkxZ
KSB7CisJCWVycm9yID0gRVJPRlM7CisJfSBlbHNlIHsKKwkJZXJyb3IgPSB2bl9zZXR0aW1lcyhk
cC0+ZF92bm9kZSwgdGltZXNwZWNfdGltZXMpOworCX0KKworCWRyZWxlKGRwKTsKKwlyZXR1cm4g
ZXJyb3I7CiB9CiAKIC8qCkBAIC0xMjg5LDcgKzEyODksNyBAQCBzeXNfdXRpbWVzKGNoYXIgKnBh
dGgsIGNvbnN0IHN0cnVjdCB0aW1ldmFsIHRpbWVzWzJdLCBpbnQgZmxhZ3MpCiAgKi8KIHN0YXRp
YyBib29sIGlzX3RpbWVzcGVjX3ZhbGlkKGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAmdGltZSkKIHsK
LSAgICByZXR1cm4gKHRpbWUudHZfc2VjID49IDApICYmCisJcmV0dXJuICh0aW1lLnR2X3NlYyA+
PSAwKSAmJgogCSAgICgodGltZS50dl9uc2VjID49IDAgJiYgdGltZS50dl9uc2VjIDw9IDk5OTk5
OTk5OSkgfHwKIAkgICAgdGltZS50dl9uc2VjID09IFVUSU1FX05PVyB8fAogCSAgICB0aW1lLnR2
X25zZWMgPT0gVVRJTUVfT01JVCk7CkBAIC0xMjk3LDQ4ICsxMjk3LDQ4IEBAIHN0YXRpYyBib29s
IGlzX3RpbWVzcGVjX3ZhbGlkKGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAmdGltZSkKIAogdm9pZCBp
bml0X3RpbWVzcGVjKHN0cnVjdCB0aW1lc3BlYyAmX3RpbWVzLCBjb25zdCBzdHJ1Y3QgdGltZXNw
ZWMgKnRpbWVzKQogewotICAgIGlmICh0aW1lcyA9PSBudWxscHRyIHx8IHRpbWVzLT50dl9uc2Vj
ID09IFVUSU1FX05PVykgewotICAgICAgICBjbG9ja19nZXR0aW1lKENMT0NLX1JFQUxUSU1FLCAm
X3RpbWVzKTsKLSAgICB9IGVsc2UgewotICAgICAgICBfdGltZXMudHZfc2VjID0gdGltZXMtPnR2
X3NlYzsKLSAgICAgICAgX3RpbWVzLnR2X25zZWMgPSB0aW1lcy0+dHZfbnNlYzsKLSAgICB9Ci0g
ICAgcmV0dXJuOworCWlmICh0aW1lcyA9PSBudWxscHRyIHx8IHRpbWVzLT50dl9uc2VjID09IFVU
SU1FX05PVykgeworCQljbG9ja19nZXR0aW1lKENMT0NLX1JFQUxUSU1FLCAmX3RpbWVzKTsKKwl9
IGVsc2UgeworCQlfdGltZXMudHZfc2VjID0gdGltZXMtPnR2X3NlYzsKKwkJX3RpbWVzLnR2X25z
ZWMgPSB0aW1lcy0+dHZfbnNlYzsKKwl9CisJcmV0dXJuOwogfQogCiBpbnQKIHN5c191dGltZW5z
YXQoaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwgY29uc3Qgc3RydWN0IHRpbWVzcGVj
IHRpbWVzWzJdLCBpbnQgZmxhZ3MpCiB7Ci0gICAgaW50IGVycm9yOwotICAgIHN0ZDo6c3RyaW5n
IGFwOwotICAgIHN0cnVjdCB0aW1lc3BlYyB0aW1lc3BlY190aW1lc1syXTsKLSAgICBleHRlcm4g
c3RydWN0IHRhc2sgKm1haW5fdGFzazsKLSAgICBzdHJ1Y3QgZGVudHJ5ICpkcDsKKwlpbnQgZXJy
b3I7CisJc3RkOjpzdHJpbmcgYXA7CisJc3RydWN0IHRpbWVzcGVjIHRpbWVzcGVjX3RpbWVzWzJd
OworCWV4dGVybiBzdHJ1Y3QgdGFzayAqbWFpbl90YXNrOworCXN0cnVjdCBkZW50cnkgKmRwOwog
Ci0gICAgLyogdXRpbWVuc2F0IHNob3VsZCByZXR1cm4gRU5PRU5UIHdoZW4gcGF0aG5hbWUgaXMg
ZW1wdHkgKi8KLSAgICBpZihwYXRobmFtZSAmJiBwYXRobmFtZVswXSA9PSAwKQotICAgICAgICBy
ZXR1cm4gRU5PRU5UOworCS8qIHV0aW1lbnNhdCBzaG91bGQgcmV0dXJuIEVOT0VOVCB3aGVuIHBh
dGhuYW1lIGlzIGVtcHR5ICovCisJaWYocGF0aG5hbWUgJiYgcGF0aG5hbWVbMF0gPT0gMCkKKwkJ
cmV0dXJuIEVOT0VOVDsKIAotICAgIGlmIChmbGFncyAmJiAhKGZsYWdzICYgQVRfU1lNTElOS19O
T0ZPTExPVykpCi0gICAgICAgIHJldHVybiBFSU5WQUw7CisJaWYgKGZsYWdzICYmICEoZmxhZ3Mg
JiBBVF9TWU1MSU5LX05PRk9MTE9XKSkKKwkJcmV0dXJuIEVJTlZBTDsKIAotICAgIGlmICh0aW1l
cyAmJiAoIWlzX3RpbWVzcGVjX3ZhbGlkKHRpbWVzWzBdKSB8fCAhaXNfdGltZXNwZWNfdmFsaWQo
dGltZXNbMV0pKSkKLSAgICAgICAgcmV0dXJuIEVJTlZBTDsKKwlpZiAodGltZXMgJiYgKCFpc190
aW1lc3BlY192YWxpZCh0aW1lc1swXSkgfHwgIWlzX3RpbWVzcGVjX3ZhbGlkKHRpbWVzWzFdKSkp
CisJCXJldHVybiBFSU5WQUw7CiAKLSAgICBpbml0X3RpbWVzcGVjKHRpbWVzcGVjX3RpbWVzWzBd
LCB0aW1lcyA/IHRpbWVzICsgMCA6IG51bGxwdHIpOwotICAgIGluaXRfdGltZXNwZWModGltZXNw
ZWNfdGltZXNbMV0sIHRpbWVzID8gdGltZXMgKyAxIDogbnVsbHB0cik7CisJaW5pdF90aW1lc3Bl
Yyh0aW1lc3BlY190aW1lc1swXSwgdGltZXMgPyB0aW1lcyArIDAgOiBudWxscHRyKTsKKwlpbml0
X3RpbWVzcGVjKHRpbWVzcGVjX3RpbWVzWzFdLCB0aW1lcyA/IHRpbWVzICsgMSA6IG51bGxwdHIp
OwogCi0gICAgaWYgKHBhdGhuYW1lICYmIHBhdGhuYW1lWzBdID09ICcvJykgeworCWlmIChwYXRo
bmFtZSAmJiBwYXRobmFtZVswXSA9PSAnLycpIHsKIAlhcCA9IHBhdGhuYW1lOwotICAgIH0gZWxz
ZSBpZiAoZGlyZmQgPT0gQVRfRkRDV0QpIHsKKwl9IGVsc2UgaWYgKGRpcmZkID09IEFUX0ZEQ1dE
KSB7CiAJaWYgKCFwYXRobmFtZSkKIAkgICAgcmV0dXJuIEVGQVVMVDsKIAlhcCA9IHN0ZDo6c3Ry
aW5nKG1haW5fdGFzay0+dF9jd2QpICsgIi8iICsgcGF0aG5hbWU7Ci0gICAgfSBlbHNlIHsKLSAg
ICAgICAgc3RydWN0IGZpbGUgKmZwOwotICAgICAgICBmaWxlcmVmIGYoZmlsZXJlZl9mcm9tX2Zk
KGRpcmZkKSk7CisJfSBlbHNlIHsKKwkJc3RydWN0IGZpbGUgKmZwOworCQlmaWxlcmVmIGYoZmls
ZXJlZl9mcm9tX2ZkKGRpcmZkKSk7CiAKLSAgICAgICAgaWYgKCFmKQorCQlpZiAoIWYpCiAJICAg
IHJldHVybiBFQkFERjsKIAogCWZwID0gZi5nZXQoKTsKQEAgLTEzNTUsMTMyICsxMzU1LDEzMiBA
QCBzeXNfdXRpbWVuc2F0KGludCBkaXJmZCwgY29uc3QgY2hhciAqcGF0aG5hbWUsIGNvbnN0IHN0
cnVjdCB0aW1lc3BlYyB0aW1lc1syXSwgaQogCSAgICBhcCA9IGZwLT5mX2RlbnRyeS0+ZF9wYXRo
OwogCiAJYXAgPSBzdGQ6OnN0cmluZyhmcC0+Zl9kZW50cnktPmRfbW91bnQtPm1fcGF0aCkgKyAi
LyIgKyBhcDsKLSAgICB9CisJfQogCi0gICAgLyogRklYTUU6IEFkZCBzdXBwb3J0IGZvciBBVF9T
WU1MSU5LX05PRk9MTE9XICovCisJLyogRklYTUU6IEFkZCBzdXBwb3J0IGZvciBBVF9TWU1MSU5L
X05PRk9MTE9XICovCiAKLSAgICBlcnJvciA9IG5hbWVpKGFwLmNfc3RyKCksICZkcCk7CisJZXJy
b3IgPSBuYW1laShhcC5jX3N0cigpLCAmZHApOwogCi0gICAgaWYgKGVycm9yKQotICAgICAgICBy
ZXR1cm4gZXJyb3I7CisJaWYgKGVycm9yKQorCQlyZXR1cm4gZXJyb3I7CiAKLSAgICBpZiAoZHAt
PmRfbW91bnQtPm1fZmxhZ3MgJiBNTlRfUkRPTkxZKSB7Ci0gICAgICAgIGVycm9yID0gRVJPRlM7
Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKHZuX2FjY2VzcyhkcC0+ZF92bm9kZSwgVldSSVRF
KSkgewotICAgICAgICAgICAgcmV0dXJuIEVBQ0NFUzsKLSAgICAgICAgfQorCWlmIChkcC0+ZF9t
b3VudC0+bV9mbGFncyAmIE1OVF9SRE9OTFkpIHsKKwkJZXJyb3IgPSBFUk9GUzsKKwl9IGVsc2Ug
eworCQlpZiAodm5fYWNjZXNzKGRwLT5kX3Zub2RlLCBWV1JJVEUpKSB7CisJCQlyZXR1cm4gRUFD
Q0VTOworCQl9CiAJICAgIGlmICh0aW1lcyAmJgotICAgICAgICAgICAgICAgKHRpbWVzWzBdLnR2
X25zZWMgIT0gVVRJTUVfTk9XIHx8IHRpbWVzWzFdLnR2X25zZWMgIT0gVVRJTUVfTk9XKSAmJgot
ICAgICAgICAgICAgICAgKHRpbWVzWzBdLnR2X25zZWMgIT0gVVRJTUVfT01JVCB8fCB0aW1lc1sx
XS50dl9uc2VjICE9IFVUSU1FX09NSVQpICYmCisJCQkgICAodGltZXNbMF0udHZfbnNlYyAhPSBV
VElNRV9OT1cgfHwgdGltZXNbMV0udHZfbnNlYyAhPSBVVElNRV9OT1cpICYmCisJCQkgICAodGlt
ZXNbMF0udHZfbnNlYyAhPSBVVElNRV9PTUlUIHx8IHRpbWVzWzFdLnR2X25zZWMgIT0gVVRJTUVf
T01JVCkgJiYKIAkgICAgICAgKCEoZHAtPmRfdm5vZGUtPnZfbW9kZSAmIH5WQVBQRU5EKSkpCiAJ
ICAgICAgICByZXR1cm4gRVBFUk07Ci0gICAgICAgIGVycm9yID0gdm5fc2V0dGltZXMoZHAtPmRf
dm5vZGUsIHRpbWVzcGVjX3RpbWVzKTsKLSAgICB9CisJCWVycm9yID0gdm5fc2V0dGltZXMoZHAt
PmRfdm5vZGUsIHRpbWVzcGVjX3RpbWVzKTsKKwl9CiAKLSAgICBkcmVsZShkcCk7Ci0gICAgcmV0
dXJuIGVycm9yOworCWRyZWxlKGRwKTsKKwlyZXR1cm4gZXJyb3I7CiB9CiAKIGludAogc3lzX2Z1
dGltZW5zKGludCBmZCwgY29uc3Qgc3RydWN0IHRpbWVzcGVjIHRpbWVzWzJdKQogewotICAgIHN0
cnVjdCBmaWxlICpmcDsKKwlzdHJ1Y3QgZmlsZSAqZnA7CiAKLSAgICBmaWxlcmVmIGYoZmlsZXJl
Zl9mcm9tX2ZkKGZkKSk7Ci0gICAgaWYgKCFmKQotICAgICAgICByZXR1cm4gRUJBREY7CisJZmls
ZXJlZiBmKGZpbGVyZWZfZnJvbV9mZChmZCkpOworCWlmICghZikKKwkJcmV0dXJuIEVCQURGOwog
Ci0gICAgZnAgPSBmLmdldCgpOworCWZwID0gZi5nZXQoKTsKIAotICAgIGlmICghZnAtPmZfZGVu
dHJ5KQotICAgICAgICByZXR1cm4gRUJBREY7CisJaWYgKCFmcC0+Zl9kZW50cnkpCisJCXJldHVy
biBFQkFERjsKIAotICAgIHN0ZDo6c3RyaW5nIHBhdGhuYW1lID0gZnAtPmZfZGVudHJ5LT5kX3Bh
dGg7Ci0gICAgYXV0byBlcnJvciA9IHN5c191dGltZW5zYXQoQVRfRkRDV0QsIHBhdGhuYW1lLmNf
c3RyKCksIHRpbWVzLCAwKTsKLSAgICByZXR1cm4gZXJyb3I7CisJc3RkOjpzdHJpbmcgcGF0aG5h
bWUgPSBmcC0+Zl9kZW50cnktPmRfcGF0aDsKKwlhdXRvIGVycm9yID0gc3lzX3V0aW1lbnNhdChB
VF9GRENXRCwgcGF0aG5hbWUuY19zdHIoKSwgdGltZXMsIDApOworCXJldHVybiBlcnJvcjsKIH0K
IAogaW50CiBzeXNfZmFsbG9jYXRlKHN0cnVjdCBmaWxlICpmcCwgaW50IG1vZGUsIGxvZmZfdCBv
ZmZzZXQsIGxvZmZfdCBsZW4pCiB7Ci0gICAgaW50IGVycm9yOwotICAgIHN0cnVjdCB2bm9kZSAq
dnA7Ci0KLSAgICBEUFJJTlRGKFZGU0RCX1NZU0NBTEwsICgic3lzX2ZhbGxvY2F0ZTogZnA9JXgi
LCBmcCkpOwotCi0gICAgaWYgKCFmcC0+Zl9kZW50cnkgfHwgIShmcC0+Zl9mbGFncyAmIEZXUklU
RSkpIHsKLSAgICAgICAgcmV0dXJuIEVCQURGOwotICAgIH0KLQotICAgIGlmIChvZmZzZXQgPCAw
IHx8IGxlbiA8PSAwKSB7Ci0gICAgICAgIHJldHVybiBFSU5WQUw7Ci0gICAgfQotCi0gICAgLy8g
U3RyYW5nZSwgYnV0IHRoYXQncyB3aGF0IExpbnV4IHJldHVybnMuCi0gICAgaWYgKChtb2RlICYg
RkFMTE9DX0ZMX1BVTkNIX0hPTEUpICYmICEobW9kZSAmIEZBTExPQ19GTF9LRUVQX1NJWkUpKSB7
Ci0gICAgICAgIHJldHVybiBFTk9UU1VQOwotICAgIH0KLQotICAgIHZwID0gZnAtPmZfZGVudHJ5
LT5kX3Zub2RlOwotICAgIHZuX2xvY2sodnApOwotCi0gICAgLy8gTk9URTogSXQncyBub3QgZGV0
ZWN0ZWQgaGVyZSB3aGV0aGVyIG9yIG5vdCB0aGUgZGV2aWNlIHVuZGVybHlpbmcKLSAgICAvLyB0
aGUgZnMgaXMgYSBibG9jayBkZXZpY2UuIEl0J3MgdXAgdG8gdGhlIGZzIGl0c2VsZiB0ZWxsIHVz
IHdoZXRoZXIKLSAgICAvLyBvciBub3QgZmFsbG9jYXRlIGlzIHN1cHBvcnRlZC4gU2VlIGJlbG93
OgotICAgIGlmICh2cC0+dl90eXBlICE9IFZSRUcgJiYgdnAtPnZfdHlwZSAhPSBWRElSKSB7Ci0g
ICAgICAgIGVycm9yID0gRU5PREVWOwotICAgICAgICBnb3RvIHJldDsKLSAgICB9Ci0KLSAgICAv
LyBFT1BOT1RTVVBQIGhlcmUgbWVhbnMgdGhhdCB0aGUgdW5kZXJseWluZyBmaWxlIHN5c3RlbQot
ICAgIC8vIHJlZmVycmVkIGJ5IHZwIGRvZXNuJ3Qgc3VwcG9ydCBmYWxsb2NhdGUuCi0gICAgaWYg
KCF2cC0+dl9vcC0+dm9wX2ZhbGxvY2F0ZSkgewotICAgICAgICBlcnJvciA9IEVPUE5PVFNVUFA7
Ci0gICAgICAgIGdvdG8gcmV0OwotICAgIH0KLQotICAgIGVycm9yID0gVk9QX0ZBTExPQ0FURSh2
cCwgbW9kZSwgb2Zmc2V0LCBsZW4pOworCWludCBlcnJvcjsKKwlzdHJ1Y3Qgdm5vZGUgKnZwOwor
CisJRFBSSU5URihWRlNEQl9TWVNDQUxMLCAoInN5c19mYWxsb2NhdGU6IGZwPSV4IiwgZnApKTsK
KworCWlmICghZnAtPmZfZGVudHJ5IHx8ICEoZnAtPmZfZmxhZ3MgJiBGV1JJVEUpKSB7CisJCXJl
dHVybiBFQkFERjsKKwl9CisKKwlpZiAob2Zmc2V0IDwgMCB8fCBsZW4gPD0gMCkgeworCQlyZXR1
cm4gRUlOVkFMOworCX0KKworCS8vIFN0cmFuZ2UsIGJ1dCB0aGF0J3Mgd2hhdCBMaW51eCByZXR1
cm5zLgorCWlmICgobW9kZSAmIEZBTExPQ19GTF9QVU5DSF9IT0xFKSAmJiAhKG1vZGUgJiBGQUxM
T0NfRkxfS0VFUF9TSVpFKSkgeworCQlyZXR1cm4gRU5PVFNVUDsKKwl9CisKKwl2cCA9IGZwLT5m
X2RlbnRyeS0+ZF92bm9kZTsKKwl2bl9sb2NrKHZwKTsKKworCS8vIE5PVEU6IEl0J3Mgbm90IGRl
dGVjdGVkIGhlcmUgd2hldGhlciBvciBub3QgdGhlIGRldmljZSB1bmRlcmx5aW5nCisJLy8gdGhl
IGZzIGlzIGEgYmxvY2sgZGV2aWNlLiBJdCdzIHVwIHRvIHRoZSBmcyBpdHNlbGYgdGVsbCB1cyB3
aGV0aGVyCisJLy8gb3Igbm90IGZhbGxvY2F0ZSBpcyBzdXBwb3J0ZWQuIFNlZSBiZWxvdzoKKwlp
ZiAodnAtPnZfdHlwZSAhPSBWUkVHICYmIHZwLT52X3R5cGUgIT0gVkRJUikgeworCQllcnJvciA9
IEVOT0RFVjsKKwkJZ290byByZXQ7CisJfQorCisJLy8gRU9QTk9UU1VQUCBoZXJlIG1lYW5zIHRo
YXQgdGhlIHVuZGVybHlpbmcgZmlsZSBzeXN0ZW0KKwkvLyByZWZlcnJlZCBieSB2cCBkb2Vzbid0
IHN1cHBvcnQgZmFsbG9jYXRlLgorCWlmICghdnAtPnZfb3AtPnZvcF9mYWxsb2NhdGUpIHsKKwkJ
ZXJyb3IgPSBFT1BOT1RTVVBQOworCQlnb3RvIHJldDsKKwl9CisKKwllcnJvciA9IFZPUF9GQUxM
T0NBVEUodnAsIG1vZGUsIG9mZnNldCwgbGVuKTsKIHJldDoKLSAgICB2bl91bmxvY2sodnApOwot
ICAgIHJldHVybiBlcnJvcjsKKwl2bl91bmxvY2sodnApOworCXJldHVybiBlcnJvcjsKIH0KIAog
aW50CiBzeXNfY2htb2QoY29uc3QgY2hhciAqcGF0aCwgbW9kZV90IG1vZGUpCiB7Ci0gICAgaW50
IGVycm9yOwotICAgIHN0cnVjdCBkZW50cnkgKmRwOwotICAgIERQUklOVEYoVkZTREJfU1lTQ0FM
TCwgKCJzeXNfY2htb2Q6IHBhdGg9JXNcbiIsIHBhdGgpKTsKLSAgICBlcnJvciA9IG5hbWVpKHBh
dGgsICZkcCk7Ci0gICAgaWYgKGVycm9yKQotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgaWYg
KGRwLT5kX21vdW50LT5tX2ZsYWdzICYgTU5UX1JET05MWSkgewotICAgICAgICBlcnJvciA9IEVS
T0ZTOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGVycm9yID0gdm5fc2V0bW9kZShkcC0+ZF92bm9k
ZSwgbW9kZSk7Ci0gICAgfQotICAgIGRyZWxlKGRwKTsKLSAgICByZXR1cm4gZXJyb3I7CisJaW50
IGVycm9yOworCXN0cnVjdCBkZW50cnkgKmRwOworCURQUklOVEYoVkZTREJfU1lTQ0FMTCwgKCJz
eXNfY2htb2Q6IHBhdGg9JXNcbiIsIHBhdGgpKTsKKwllcnJvciA9IG5hbWVpKHBhdGgsICZkcCk7
CisJaWYgKGVycm9yKQorCQlyZXR1cm4gZXJyb3I7CisJaWYgKGRwLT5kX21vdW50LT5tX2ZsYWdz
ICYgTU5UX1JET05MWSkgeworCQllcnJvciA9IEVST0ZTOworCX0gZWxzZSB7CisJCWVycm9yID0g
dm5fc2V0bW9kZShkcC0+ZF92bm9kZSwgbW9kZSk7CisJfQorCWRyZWxlKGRwKTsKKwlyZXR1cm4g
ZXJyb3I7CiB9CiAKIGludAogc3lzX2ZjaG1vZChpbnQgZmQsIG1vZGVfdCBtb2RlKQogewotICAg
IGZpbGVyZWYgZihmaWxlcmVmX2Zyb21fZmQoZmQpKTsKLSAgICBpZiAoIWYpCi0gICAgICAgIHJl
dHVybiBFQkFERjsKLSAgICAvLyBQb3NpeCBpcyBhbWJpdmFsZW50IG9uIHdoYXQgZmNobW9kKCkg
c2hvdWxkIGRvIG9uIGFuIGZkIHRoYXQgZG9lcyBub3QKLSAgICAvLyByZWZlciB0byBhIHJlYWwg
ZmlsZS4gSXQgc3VnZ2VzdHMgYW4gaW1wbGVtZW50YXRpb24gbWF5IChidXQgbm90IG11c3QpCi0g
ICAgLy8gZmFpbCBFSU5WQUwgb24gYSBwaXBlLCBjYW4gYmVoYXZlIGluIGFuICJ1bnNwZWNpZmll
ZCIgbWFubmVyIG9uIGEKLSAgICAvLyBzb2NrZXQsIGFuZCBmb3IgYSBTVFJFQU0sIGl0IG11c3Qg
c3VjY2VlZCBhbmQgZG8gbm90aGluZy4gTGludXggc2VlbXMKLSAgICAvLyB0byBqdXN0IGRvIHRo
ZSBsYXN0IHRoaW5nIChkbyBub3RoaW5nIGFuZCBzdWNjZWVkKS4KLSAgICBpZiAoIWYtPmZfZGVu
dHJ5KSB7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICBpZiAoZi0+Zl9kZW50cnktPmRf
bW91bnQtPm1fZmxhZ3MgJiBNTlRfUkRPTkxZKSB7Ci0gICAgICAgIHJldHVybiBFUk9GUzsKLSAg
ICB9IGVsc2UgewotICAgICAgICByZXR1cm4gdm5fc2V0bW9kZShmLT5mX2RlbnRyeS0+ZF92bm9k
ZSwgbW9kZSk7Ci0gICAgfQorCWZpbGVyZWYgZihmaWxlcmVmX2Zyb21fZmQoZmQpKTsKKwlpZiAo
IWYpCisJCXJldHVybiBFQkFERjsKKwkvLyBQb3NpeCBpcyBhbWJpdmFsZW50IG9uIHdoYXQgZmNo
bW9kKCkgc2hvdWxkIGRvIG9uIGFuIGZkIHRoYXQgZG9lcyBub3QKKwkvLyByZWZlciB0byBhIHJl
YWwgZmlsZS4gSXQgc3VnZ2VzdHMgYW4gaW1wbGVtZW50YXRpb24gbWF5IChidXQgbm90IG11c3Qp
CisJLy8gZmFpbCBFSU5WQUwgb24gYSBwaXBlLCBjYW4gYmVoYXZlIGluIGFuICJ1bnNwZWNpZmll
ZCIgbWFubmVyIG9uIGEKKwkvLyBzb2NrZXQsIGFuZCBmb3IgYSBTVFJFQU0sIGl0IG11c3Qgc3Vj
Y2VlZCBhbmQgZG8gbm90aGluZy4gTGludXggc2VlbXMKKwkvLyB0byBqdXN0IGRvIHRoZSBsYXN0
IHRoaW5nIChkbyBub3RoaW5nIGFuZCBzdWNjZWVkKS4KKwlpZiAoIWYtPmZfZGVudHJ5KSB7CisJ
CXJldHVybiAwOworCX0KKwlpZiAoZi0+Zl9kZW50cnktPmRfbW91bnQtPm1fZmxhZ3MgJiBNTlRf
UkRPTkxZKSB7CisJCXJldHVybiBFUk9GUzsKKwl9IGVsc2UgeworCQlyZXR1cm4gdm5fc2V0bW9k
ZShmLT5mX2RlbnRyeS0+ZF92bm9kZSwgbW9kZSk7CisJfQogfQpkaWZmIC0tZ2l0IGEvbGliL3Zm
c2NvcmUvdGFzay5jIGIvbGliL3Zmc2NvcmUvdGFzay5jCmluZGV4IDdhMzU1MDM0Li5iMmEwMjhj
NiAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvdGFzay5jCisrKyBiL2xpYi92ZnNjb3JlL3Rhc2su
YwpAQCAtNDgsNyArNDgsNyBAQCB0YXNrX2FsbG9jKHN0cnVjdCB0YXNrICoqcHQpCiB7CiAJc3Ry
dWN0IHRhc2sgKnQ7CiAKLSAgICAvLyBGSVhNRTogd2hlcmUgZG8gd2UgZnJlZSB0YXNrID8KKwkv
LyBGSVhNRTogd2hlcmUgZG8gd2UgZnJlZSB0YXNrID8KIAlpZiAoISh0ID0gbmV3IHRhc2spKQog
CQlyZXR1cm4gRU5PTUVNOwogCW1lbXNldCh0LCAwLCBzaXplb2Yoc3RydWN0IHRhc2spKTsKQEAg
LTE2MCw4ICsxNjAsOCBAQCB0YXNrX2NvbnYoc3RydWN0IHRhc2sgKnQsIGNvbnN0IGNoYXIgKmNw
YXRoLCBpbnQgYWNjLCBjaGFyICpmdWxsKQogICovCiBpbnQgdmZzX2RuYW1lX2NvcHkoY2hhciAq
ZGVzdCwgY29uc3QgY2hhciAqc3JjLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICBpZiAoc3RybGNweShk
ZXN0LCBzcmMsIHNpemUpID49IHNpemUpIHsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAg
ICByZXR1cm4gMDsKKwlpZiAoc3RybGNweShkZXN0LCBzcmMsIHNpemUpID49IHNpemUpIHsKKwkJ
cmV0dXJuIC0xOworCX0KKwlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3Zm
cy5oIGIvbGliL3Zmc2NvcmUvdmZzLmgKaW5kZXggZDg2ZWY5NTcuLjJiODI1NTIxIDEwMDY0NAot
LS0gYS9saWIvdmZzY29yZS92ZnMuaAorKysgYi9saWIvdmZzY29yZS92ZnMuaApAQCAtMTIwLDcg
KzEyMCw3IEBAIGludAkgc3lzX3RydW5jYXRlKGNoYXIgKnBhdGgsIG9mZl90IGxlbmd0aCk7CiBp
bnQJIHN5c19yZWFkbGluayhjaGFyICpwYXRoLCBjaGFyICpidWYsIHNpemVfdCBidWZzaXplLCBz
c2l6ZV90ICpzaXplKTsKIGludCAgc3lzX3V0aW1lcyhjaGFyICpwYXRoLCBjb25zdCBzdHJ1Y3Qg
dGltZXZhbCB0aW1lc1syXSwgaW50IGZsYWdzKTsKIGludCAgc3lzX3V0aW1lbnNhdChpbnQgZGly
ZmQsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLAotICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVj
dCB0aW1lc3BlYyB0aW1lc1syXSwgaW50IGZsYWdzKTsKKwkJCQkgICBjb25zdCBzdHJ1Y3QgdGlt
ZXNwZWMgdGltZXNbMl0sIGludCBmbGFncyk7CiBpbnQgIHN5c19mdXRpbWVucyhpbnQgZmQsIGNv
bnN0IHN0cnVjdCB0aW1lc3BlYyB0aW1lc1syXSk7CiBpbnQgIHN5c19mYWxsb2NhdGUoc3RydWN0
IGZpbGUgKmZwLCBpbnQgbW9kZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbik7CiAKZGlmZiAt
LWdpdCBhL2xpYi92ZnNjb3JlL3Zub2RlLmMgYi9saWIvdmZzY29yZS92bm9kZS5jCmluZGV4IGEy
OTIzNDRmLi4xMTllZDg3MCAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvdm5vZGUuYworKysgYi9s
aWIvdmZzY29yZS92bm9kZS5jCkBAIC0zNzEsMjIgKzM3MSwyMiBAQCB2bl9zdGF0KHN0cnVjdCB2
bm9kZSAqdnAsIHN0cnVjdCBzdGF0ICpzdCkKIGludAogdm5fc2V0dGltZXMoc3RydWN0IHZub2Rl
ICp2cCwgc3RydWN0IHRpbWVzcGVjIHRpbWVzWzJdKQogewotICAgIHN0cnVjdCB2YXR0ciB2YXR0
cjsKLSAgICBzdHJ1Y3QgdmF0dHIgKnZhcDsKLSAgICBpbnQgZXJyb3I7Ci0KLSAgICB2YXAgPSAm
dmF0dHI7Ci0gICAgbWVtc2V0KHZhcCwgMCwgc2l6ZW9mKHN0cnVjdCB2YXR0cikpOwotCi0gICAg
dmFwLT52YV9hdGltZSA9IHRpbWVzWzBdOwotICAgIHZhcC0+dmFfbXRpbWUgPSB0aW1lc1sxXTsK
LSAgICB2YXAtPnZhX21hc2sgPSAoKHRpbWVzWzBdLnR2X25zZWMgPT0gVVRJTUVfT01JVCkgPyAw
IDogQVRfQVRJTUUpCi0gICAgICAgICAgICAgICAgICAgIHwgKCh0aW1lc1sxXS50dl9uc2VjID09
IFVUSU1FX09NSVQpID8gMCA6IEFUX01USU1FKTsKLSAgICB2bl9sb2NrKHZwKTsKLSAgICBlcnJv
ciA9IFZPUF9TRVRBVFRSKHZwLCB2YXApOwotICAgIHZuX3VubG9jayh2cCk7Ci0KLSAgICByZXR1
cm4gZXJyb3I7CisJc3RydWN0IHZhdHRyIHZhdHRyOworCXN0cnVjdCB2YXR0ciAqdmFwOworCWlu
dCBlcnJvcjsKKworCXZhcCA9ICZ2YXR0cjsKKwltZW1zZXQodmFwLCAwLCBzaXplb2Yoc3RydWN0
IHZhdHRyKSk7CisKKwl2YXAtPnZhX2F0aW1lID0gdGltZXNbMF07CisJdmFwLT52YV9tdGltZSA9
IHRpbWVzWzFdOworCXZhcC0+dmFfbWFzayA9ICgodGltZXNbMF0udHZfbnNlYyA9PSBVVElNRV9P
TUlUKSA/IDAgOiBBVF9BVElNRSkKKwkJCQkJfCAoKHRpbWVzWzFdLnR2X25zZWMgPT0gVVRJTUVf
T01JVCkgPyAwIDogQVRfTVRJTUUpOworCXZuX2xvY2sodnApOworCWVycm9yID0gVk9QX1NFVEFU
VFIodnAsIHZhcCk7CisJdm5fdW5sb2NrKHZwKTsKKworCXJldHVybiBlcnJvcjsKIH0KIAogLyoK
QEAgLTM5NSwxNSArMzk1LDE1IEBAIHZuX3NldHRpbWVzKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVj
dCB0aW1lc3BlYyB0aW1lc1syXSkKIGludAogdm5fc2V0bW9kZShzdHJ1Y3Qgdm5vZGUgKnZwLCBt
b2RlX3QgbmV3X21vZGUpCiB7Ci0gICAgc3RydWN0IHZhdHRyIHZhdHRyOwotICAgIG1lbXNldCgm
dmF0dHIsIDAsIHNpemVvZih2YXR0cikpOwotICAgIHZhdHRyLnZhX21vZGUgPSBuZXdfbW9kZTsK
LSAgICB2YXR0ci52YV9tYXNrID0gQVRfTU9ERTsKLSAgICB2bl9sb2NrKHZwKTsKLSAgICB2cC0+
dl9tb2RlID0gbmV3X21vZGU7Ci0gICAgaW50IGVycm9yID0gVk9QX1NFVEFUVFIodnAsICZ2YXR0
cik7Ci0gICAgdm5fdW5sb2NrKHZwKTsKLSAgICByZXR1cm4gZXJyb3I7CisJc3RydWN0IHZhdHRy
IHZhdHRyOworCW1lbXNldCgmdmF0dHIsIDAsIHNpemVvZih2YXR0cikpOworCXZhdHRyLnZhX21v
ZGUgPSBuZXdfbW9kZTsKKwl2YXR0ci52YV9tYXNrID0gQVRfTU9ERTsKKwl2bl9sb2NrKHZwKTsK
Kwl2cC0+dl9tb2RlID0gbmV3X21vZGU7CisJaW50IGVycm9yID0gVk9QX1NFVEFUVFIodnAsICZ2
YXR0cik7CisJdm5fdW5sb2NrKHZwKTsKKwlyZXR1cm4gZXJyb3I7CiB9CiAKIC8qCi0tIAoyLjE5
LjIKCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWlu
aW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcK
aHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZl
bA==

From minios-devel-bounces@lists.xenproject.org Mon Feb 04 14:39:39 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 04 Feb 2019 14:39:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gqfPP-0006Vz-9y; Mon, 04 Feb 2019 14:39:39 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Kl24=QL=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gqfPN-0006VG-7H
 for minios-devel@lists.xen.org; Mon, 04 Feb 2019 14:39:37 +0000
X-Inumbo-ID: af0658fe-288a-11e9-a4fb-bb2ff16bb43d
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id af0658fe-288a-11e9-a4fb-bb2ff16bb43d;
 Mon, 04 Feb 2019 14:39:32 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 845E4F2072;
 Mon,  4 Feb 2019 15:39:31 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 3UIVJh89Cytl; Mon,  4 Feb 2019 15:39:31 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 3457FF2065
 for <minios-devel@lists.xen.org>; Mon,  4 Feb 2019 15:39:29 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 4 Feb 2019 15:39:28 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>, <Simon.kuenzer@neclab.eu>,
 <sharan.santhanam@neclab.eu>
Date: Mon, 4 Feb 2019 15:37:23 +0100
Message-ID: <20190204143739.29249-32-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 07/23] lib/vfscore: remove
 obvious c++isms and irrelevant code
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U29tZSBjKytpc21zIGFyZSBrZWVwIGJlY2F1c2UgYmlnZ2VyIHBpZWNlcyBuZWVkZWQgdG8gYmUg
cmVkb25lIGFyb3VuZAp0aGVtLgoKU29tZSBjb2RlIGlzIGp1c3QgZGlzYWJsZWQgd2l0aCAjaWYg
MCwgYXMgd2Ugd2lsbCBtYWtlIHVzZSBvZiBpdCBsYXRlcgoKU2lnbmVkLW9mZi1ieTogWXVyaSBW
b2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0tLQogbGliL3Zmc2NvcmUvZm9wcy5j
ICAgICAgICAgICAgICAgICAgIHwgIDkxICstLS0tLQogbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNj
b3JlL2RlbnRyeS5oIHwgIDE2IC0KIGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9tb3VudC5o
ICB8ICAyNiAtLQogbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3ByZXguaCAgIHwgICA2IC0K
IGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS91aW8uaCAgICB8ICAyNiAtLQogbGliL3Zmc2Nv
cmUvaW5jbHVkZS92ZnNjb3JlL3Zub2RlLmggIHwgICA0IC0KIGxpYi92ZnNjb3JlL2xvb2t1cC5j
ICAgICAgICAgICAgICAgICB8ICA1MSArKy0KIGxpYi92ZnNjb3JlL21haW4uYyAgICAgICAgICAg
ICAgICAgICB8IDQ2OSArKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGxpYi92ZnNjb3JlL21v
dW50LmMgICAgICAgICAgICAgICAgICB8ICA0NyArLS0KIGxpYi92ZnNjb3JlL3N5c2NhbGxzLmMg
ICAgICAgICAgICAgICB8IDExOCArKysrLS0tCiBsaWIvdmZzY29yZS90YXNrLmMgICAgICAgICAg
ICAgICAgICAgfCAgMTcgLQogbGliL3Zmc2NvcmUvdmZzLmggICAgICAgICAgICAgICAgICAgIHwg
IDIzIC0tCiBsaWIvdmZzY29yZS92bm9kZS5jICAgICAgICAgICAgICAgICAgfCAgIDMgKy0KIDEz
IGZpbGVzIGNoYW5nZWQsIDE1NSBpbnNlcnRpb25zKCspLCA3NDIgZGVsZXRpb25zKC0pCgpkaWZm
IC0tZ2l0IGEvbGliL3Zmc2NvcmUvZm9wcy5jIGIvbGliL3Zmc2NvcmUvZm9wcy5jCmluZGV4IGE5
NGNhNDUyLi5mMWMxNjFlNyAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvZm9wcy5jCisrKyBiL2xp
Yi92ZnNjb3JlL2ZvcHMuYwpAQCAtNDIsMTQgKzQyLDggQEAKICNpbmNsdWRlIDxvc3YvbW11Lmho
PgogI2luY2x1ZGUgPG9zdi9wYWdlY2FjaGUuaGg+CiAKLXZmc19maWxlOjp2ZnNfZmlsZSh1bnNp
Z25lZCBmbGFncykKLQk6IGZpbGUoZmxhZ3MsIERUWVBFX1ZOT0RFKQoraW50IHZmc19jbG9zZShz
dHJ1Y3QgdmZzY29yZV9maWxlICpmcCkKIHsKLX0KLQotaW50IHZmc19maWxlOjpjbG9zZSgpCi17
Ci0JYXV0byBmcCA9IHRoaXM7CiAJc3RydWN0IHZub2RlICp2cCA9IGZwLT5mX2RlbnRyeS0+ZF92
bm9kZTsKIAlpbnQgZXJyb3I7CiAKQEAgLTYwLDEzICs1NCwxNCBAQCBpbnQgdmZzX2ZpbGU6OmNs
b3NlKCkKIAlpZiAoZXJyb3IpCiAJCXJldHVybiBlcnJvcjsKIAotCWZwLT5mX2RlbnRyeS5yZXNl
dCgpOworCS8qIERlbnRyeSBzdGF5cyBmb3JldmVyIGluIHRoZSBkZW50cnkgY2FjaGUuIFVubGVz
cyB0aGUKKwkgKiBmaWxlL2RpcmVjdG9yeSBpdCByZWZlcnMgdG8gZ2V0cyBkZWxldGVkL3JlbmFt
ZWQgKi8KKwlmcC0+Zl9kZW50cnkgPSBOVUxMOwogCXJldHVybiAwOwogfQogCi1pbnQgdmZzX2Zp
bGU6OnJlYWQoc3RydWN0IHVpbyAqdWlvLCBpbnQgZmxhZ3MpCitpbnQgdmZzX3JlYWQoc3RydWN0
IHZmc2NvcmVfZmlsZSAqZnAsIHN0cnVjdCB1aW8gKnVpbywgaW50IGZsYWdzKQogewotCWF1dG8g
ZnAgPSB0aGlzOwogCXN0cnVjdCB2bm9kZSAqdnAgPSBmcC0+Zl9kZW50cnktPmRfdm5vZGU7CiAJ
aW50IGVycm9yOwogCXNpemVfdCBjb3VudDsKQEAgLTkwLDkgKzg1LDggQEAgaW50IHZmc19maWxl
OjpyZWFkKHN0cnVjdCB1aW8gKnVpbywgaW50IGZsYWdzKQogfQogCiAKLWludCB2ZnNfZmlsZTo6
d3JpdGUoc3RydWN0IHVpbyAqdWlvLCBpbnQgZmxhZ3MpCitpbnQgdmZzX3dyaXRlKHN0cnVjdCB2
ZnNjb3JlX2ZpbGUgKmZwLCBzdHJ1Y3QgdWlvICp1aW8sIGludCBmbGFncykKIHsKLQlhdXRvIGZw
ID0gdGhpczsKIAlzdHJ1Y3Qgdm5vZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOwogCWlu
dCBpb2ZsYWdzID0gMDsKIAlpbnQgZXJyb3I7CkBAIC0xMjIsOSArMTE2LDggQEAgaW50IHZmc19m
aWxlOjp3cml0ZShzdHJ1Y3QgdWlvICp1aW8sIGludCBmbGFncykKIAlyZXR1cm4gZXJyb3I7CiB9
CiAKLWludCB2ZnNfZmlsZTo6aW9jdGwodV9sb25nIGNvbSwgdm9pZCAqZGF0YSkKK2ludCB2ZnNf
aW9jdGwoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAsIHVfbG9uZyBjb20sIHZvaWQgKmRhdGEpCiB7
Ci0JYXV0byBmcCA9IHRoaXM7CiAJc3RydWN0IHZub2RlICp2cCA9IGZwLT5mX2RlbnRyeS0+ZF92
bm9kZTsKIAlpbnQgZXJyb3I7CiAKQEAgLTEzNSw5ICsxMjgsOCBAQCBpbnQgdmZzX2ZpbGU6Omlv
Y3RsKHVfbG9uZyBjb20sIHZvaWQgKmRhdGEpCiAJcmV0dXJuIGVycm9yOwogfQogCi1pbnQgdmZz
X2ZpbGU6OnN0YXQoc3RydWN0IHN0YXQgKnN0KQoraW50IHZmc19zdGF0KHN0cnVjdCB2ZnNjb3Jl
X2ZpbGUgKmZwLCBzdHJ1Y3Qgc3RhdCAqc3QpCiB7Ci0JYXV0byBmcCA9IHRoaXM7CiAJc3RydWN0
IHZub2RlICp2cCA9IGZwLT5mX2RlbnRyeS0+ZF92bm9kZTsKIAlpbnQgZXJyb3I7CiAKQEAgLTE0
Nyw3MCArMTM5LDMgQEAgaW50IHZmc19maWxlOjpzdGF0KHN0cnVjdCBzdGF0ICpzdCkKIAogCXJl
dHVybiBlcnJvcjsKIH0KLQotaW50IHZmc19maWxlOjpwb2xsKGludCBldmVudHMpCi17Ci0JcmV0
dXJuIHBvbGxfbm9fcG9sbChldmVudHMpOwotfQotCi1pbnQgdmZzX2ZpbGU6OnRydW5jYXRlKG9m
Zl90IGxlbikKLXsKLQkvLyBzb21laG93IHRoaXMgaXMgaGFuZGxlZCBvdXRzaWRlIGZpbGUgb3Bz
Ci0JYWJvcnQoKTsKLX0KLQotaW50IHZmc19maWxlOjpjaG1vZChtb2RlX3QgbW9kZSkKLXsKLQkv
LyBzb21laG93IHRoaXMgaXMgaGFuZGxlZCBvdXRzaWRlIGZpbGUgb3BzCi0JYWJvcnQoKTsKLX0K
LQotYm9vbCB2ZnNfZmlsZTo6bWFwX3BhZ2UodWludHB0cl90IG9mZiwgbW11Ojpod19wdGVwPDA+
IHB0ZXAsIG1tdTo6cHRfZWxlbWVudDwwPiBwdGUsIGJvb2wgd3JpdGUsIGJvb2wgc2hhcmVkKQot
ewotCXJldHVybiBwYWdlY2FjaGU6OmdldCh0aGlzLCBvZmYsIHB0ZXAsIHB0ZSwgd3JpdGUsIHNo
YXJlZCk7Ci19Ci0KLWJvb2wgdmZzX2ZpbGU6OnB1dF9wYWdlKHZvaWQgKmFkZHIsIHVpbnRwdHJf
dCBvZmYsIG1tdTo6aHdfcHRlcDwwPiBwdGVwKQotewotCXJldHVybiBwYWdlY2FjaGU6OnJlbGVh
c2UodGhpcywgYWRkciwgb2ZmLCBwdGVwKTsKLX0KLQotdm9pZCB2ZnNfZmlsZTo6c3luYyhvZmZf
dCBzdGFydCwgb2ZmX3QgZW5kKQotewotCXBhZ2VjYWNoZTo6c3luYyh0aGlzLCBzdGFydCwgZW5k
KTsKLX0KLQotLy8gTG9ja2luZzogVk9QX0NBQ0hFIHdpbGwgY2FsbCBpbnRvIHRoZSBmaWxlc3lz
dGVtLCBhbmQgdGhhdCBjYW4gdHJpZ2dlciBhbgotLy8gZXZpY3Rpb24gdGhhdCB3aWxsIGhvbGQg
dGhlIG1tdS1zaWRlIGxvY2sgdGhhdCBwcm90ZWN0cyB0aGUgbWFwcGluZ3MKLS8vIEFsd2F5cyBm
b2xsb3cgdGhhdCBvcmRlci4gV2UgaG93ZXZlciBjYW4ndCBqdXN0IGdldCByaWQgb2YgdGhlIG1t
dS1zaWRlIGxvY2ssCi0vLyBiZWNhdXNlIG5vdCBhbGwgaW52YWxpZGF0aW9ucyB3aWxsIGJlIHN5
bmNocm9ub3VzLgotaW50IHZmc19maWxlOjpnZXRfYXJjYnVmKHZvaWQqIGtleSwgb2ZmX3Qgb2Zm
c2V0KQotewotCXN0cnVjdCB2bm9kZSAqdnAgPSBmX2RlbnRyeS0+ZF92bm9kZTsKLQotCWlvdmVj
IGlvWzFdOwotCi0JaW9bMF0uaW92X2Jhc2UgPSBrZXk7Ci0JdWlvIGRhdGE7Ci0JZGF0YS51aW9f
aW92ID0gaW87Ci0JZGF0YS51aW9faW92Y250ID0gMTsKLQlkYXRhLnVpb19vZmZzZXQgPSBvZmZz
ZXQ7Ci0JZGF0YS51aW9fcmVzaWQgPSBtbXU6OnBhZ2Vfc2l6ZTsKLQlkYXRhLnVpb19ydyA9IFVJ
T19SRUFEOwotCi0Jdm5fbG9jayh2cCk7Ci0JYXNzZXJ0KFZPUF9DQUNIRSh2cCwgdGhpcywgJmRh
dGEpID09IDApOwotCXZuX3VubG9jayh2cCk7Ci0KLQlyZXR1cm4gKGRhdGEudWlvX3Jlc2lkICE9
IDApID8gLTEgOiAwOwotfQotCi1zdGQ6OnVuaXF1ZV9wdHI8bW11OjpmaWxlX3ZtYT4gdmZzX2Zp
bGU6Om1tYXAoYWRkcl9yYW5nZSByYW5nZSwgdW5zaWduZWQgZmxhZ3MsIHVuc2lnbmVkIHBlcm0s
IG9mZl90IG9mZnNldCkKLXsKLQlhdXRvIGZwID0gdGhpczsKLQlzdHJ1Y3Qgdm5vZGUgKnZwID0g
ZnAtPmZfZGVudHJ5LT5kX3Zub2RlOwotCWlmICghdnAtPnZfb3AtPnZvcF9jYWNoZSB8fCAodnAt
PnZfc2l6ZSA8IChvZmZfdCltbXU6OnBhZ2Vfc2l6ZSkpIHsKLQkJcmV0dXJuIG1tdTo6ZGVmYXVs
dF9maWxlX21tYXAodGhpcywgcmFuZ2UsIGZsYWdzLCBwZXJtLCBvZmZzZXQpOwotCX0KLQlyZXR1
cm4gbW11OjptYXBfZmlsZV9tbWFwKHRoaXMsIHJhbmdlLCBmbGFncywgcGVybSwgb2Zmc2V0KTsK
LX0KZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9kZW50cnkuaCBiL2xp
Yi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9kZW50cnkuaAppbmRleCAyZDJlYWExYi4uOWNmZThk
YWMgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9kZW50cnkuaAorKysg
Yi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZGVudHJ5LmgKQEAgLTU0LDIwICs1NCw0IEBA
IHN0cnVjdCBkZW50cnkgewogCUxJU1RfRU5UUlkoZGVudHJ5KSBkX2NoaWxkcmVuX2xpbms7CiB9
OwogCi0jaWZkZWYgX19jcGx1c3BsdXMKLQotI2luY2x1ZGUgPGJvb3N0L2ludHJ1c2l2ZV9wdHIu
aHBwPgotCi11c2luZyBkZW50cnlfcmVmID0gYm9vc3Q6OmludHJ1c2l2ZV9wdHI8ZGVudHJ5PjsK
LQotZXh0ZXJuICJDIiB7Ci0Jdm9pZCBkcmVmKHN0cnVjdCBkZW50cnkqIGRwKTsKLQl2b2lkIGRy
ZWxlKHN0cnVjdCBkZW50cnkqIGRwKTsKLX07Ci0KLWlubGluZSB2b2lkIGludHJ1c2l2ZV9wdHJf
YWRkX3JlZihkZW50cnkqIGRwKSB7IGRyZWYoZHApOyB9Ci1pbmxpbmUgdm9pZCBpbnRydXNpdmVf
cHRyX3JlbGVhc2UoZGVudHJ5KiBkcCkgeyBkcmVsZShkcCk7IH0KLQotI2VuZGlmCi0KICNlbmRp
ZiAvKiBfT1NWX0RFTlRSWV9IICovCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zm
c2NvcmUvbW91bnQuaCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9tb3VudC5oCmluZGV4
IDBlNzg5MjlmLi5iNjhkM2M5OCAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNj
b3JlL21vdW50LmgKKysrIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmgKQEAg
LTM3LDggKzM3LDYgQEAKICNpbmNsdWRlIDxvc3Yvdm5vZGUuaD4KICNpbmNsdWRlIDxic2Qvc3lz
L3N5cy9xdWV1ZS5oPgogCi1fX0JFR0lOX0RFQ0xTCi0KICNpZmRlZiBfS0VSTkVMCiAKIC8qCkBA
IC0xNDQsMjggKzE0Miw0IEBAIHZvaWQJIHZmc191bmJ1c3koc3RydWN0IG1vdW50ICptcCk7CiAK
IHZvaWQJIHJlbGVhc2VfbXBfZGVudHJpZXMoc3RydWN0IG1vdW50ICptcCk7CiAKLSNlbmRpZgot
Ci1fX0VORF9ERUNMUwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLQotI2luY2x1ZGUgPHZlY3Rvcj4K
LSNpbmNsdWRlIDxzdHJpbmc+Ci0KLW5hbWVzcGFjZSBvc3YgewotCi1zdHJ1Y3QgbW91bnRfZGVz
YyB7Ci0Jc3RkOjpzdHJpbmcgc3BlY2lhbDsKLQlzdGQ6OnN0cmluZyBwYXRoOwotCXN0ZDo6c3Ry
aW5nIHR5cGU7Ci0Jc3RkOjpzdHJpbmcgb3B0aW9uczsKLX07Ci0KLXN0ZDo6dmVjdG9yPG1vdW50
X2Rlc2M+IGN1cnJlbnRfbW91bnRzKCk7Ci0KLX0KLQotI2VuZGlmCi0KICNlbmRpZgkvKiAhX1NZ
U19NT1VOVF9IXyAqLwpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3By
ZXguaCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9wcmV4LmgKaW5kZXggN2IwNTMzMTku
LjZjYmUzMTMwIDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvcHJleC5o
CisrKyBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9wcmV4LmgKQEAgLTQwLDEwICs0MCw2
IEBACiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAjaW5jbHVkZSA8b3N2L2ZjbnRsLmg+CiAKLV9fQkVH
SU5fREVDTFMKLQotI2RlZmluZSBfX3BhY2tlZCAgICAgICAgX19hdHRyaWJ1dGVfXygoX19wYWNr
ZWRfXykpCi0KICNkZWZpbmUJQlNJWkUJNTEyCQkvKiBzaXplIG9mIHNlY29uZGFyeSBibG9jayAo
Ynl0ZXMpICovCiAKICNkZWZpbmUgRE9fUkRXUgkJMHgyCkBAIC01Nyw2ICs1Myw0IEBAIHNpemVf
dCBzdHJsY3B5KGNoYXIgKmRzdCwgY29uc3QgY2hhciAqc3JjLCBzaXplX3Qgc2l6KTsKIAogdm9p
ZCBzeXNfcGFuaWMoY29uc3QgY2hhciAqKTsKIAotX19FTkRfREVDTFMKLQogI2VuZGlmIC8qIF9P
U1ZfUFJFWF9IICovCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdWlv
LmggYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdWlvLmgKaW5kZXggNjk2YjAxY2YuLmQ3
ZjdmY2U5IDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdWlvLmgKKysr
IGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Vpby5oCkBAIC0zOCw4ICszOCw2IEBACiAj
aW5jbHVkZSA8c3lzL3Vpby5oPgogI2luY2x1ZGUgPGxpbWl0cy5oPgogCi1fX0JFR0lOX0RFQ0xT
Ci0KIGVudW0JdWlvX3J3IHsgVUlPX1JFQUQsIFVJT19XUklURSB9OwogCiAvKgpAQCAtNjIsMjgg
KzYwLDQgQEAgc3RydWN0IHVpbyB7CiAKIGludAl1aW9tb3ZlKHZvaWQgKmNwLCBpbnQgbiwgc3Ry
dWN0IHVpbyAqdWlvKTsKIAotX19FTkRfREVDTFMKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi0KLXRl
bXBsYXRlIDx0eXBlbmFtZSBGPgotc3RhdGljIGlubGluZSB2b2lkIGxpbmVhcml6ZV91aW9fd3Jp
dGUoc3RydWN0IHVpbyAqdWlvLCBpbnQgaW9mbGFnLCBGIGYpCi17Ci0gICAgd2hpbGUgKHVpby0+
dWlvX3Jlc2lkID4gMCkgewotICAgICAgICBzdHJ1Y3QgaW92ZWMgKmlvdiA9IHVpby0+dWlvX2lv
djsKLQotICAgICAgICBpZiAoaW92LT5pb3ZfbGVuKSB7Ci0gICAgICAgICAgICBmKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhciAqPihpb3YtPmlvdl9iYXNlKSwKLSAgICAgICAgICAgICAgICBp
b3YtPmlvdl9sZW4pOwotICAgICAgICB9Ci0KLSAgICAgICAgdWlvLT51aW9faW92Kys7Ci0gICAg
ICAgIHVpby0+dWlvX2lvdmNudC0tOwotICAgICAgICB1aW8tPnVpb19yZXNpZCAtPSBpb3YtPmlv
dl9sZW47Ci0gICAgICAgIHVpby0+dWlvX29mZnNldCArPSBpb3YtPmlvdl9sZW47Ci0gICAgfQot
fQotCi0jZW5kaWYKLQogI2VuZGlmIC8qICFfVUlPX0hfICovCmRpZmYgLS1naXQgYS9saWIvdmZz
Y29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUuaCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29y
ZS92bm9kZS5oCmluZGV4IDQ4NzRmMWI5Li5kMzBhOTQxMSAxMDA2NDQKLS0tIGEvbGliL3Zmc2Nv
cmUvaW5jbHVkZS92ZnNjb3JlL3Zub2RlLmgKKysrIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNj
b3JlL3Zub2RlLmgKQEAgLTQzLDggKzQzLDYgQEAKICNpbmNsdWRlICJmaWxlLmgiCiAjaW5jbHVk
ZSAiZGlyZW50LmgiCiAKLV9fQkVHSU5fREVDTFMKLQogc3RydWN0IHZmc29wczsKIHN0cnVjdCB2
bm9wczsKIHN0cnVjdCB2bm9kZTsKQEAgLTI0Miw4ICsyNDAsNiBAQCBzdGF0aWMgaW5saW5lIHZv
aWQgdm5vZGVfcGFnZXJfc2V0c2l6ZShzdHJ1Y3Qgdm5vZGUgKnZwLCBvZmZfdCBzaXplKQogCXZw
LT52X3NpemUgPSBzaXplOwogfQogCi1fX0VORF9ERUNMUwotCiAjZW5kaWYKIAogI2VuZGlmIC8q
ICFfU1lTX1ZOT0RFX0hfICovCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9sb29rdXAuYyBiL2xp
Yi92ZnNjb3JlL2xvb2t1cC5jCmluZGV4IDBhYTVjYTNiLi5mN2EzOGM0ZiAxMDA2NDQKLS0tIGEv
bGliL3Zmc2NvcmUvbG9va3VwLmMKKysrIGIvbGliL3Zmc2NvcmUvbG9va3VwLmMKQEAgLTYzLDMz
ICs2MywzMSBAQCByZWFkX2xpbmsoc3RydWN0IHZub2RlICp2cCwgY2hhciAqYnVmLCBzaXplX3Qg
YnVmc3osIHNzaXplX3QgKnN6KQogaW50CiBuYW1laV9mb2xsb3dfbGluayhzdHJ1Y3QgZGVudHJ5
ICpkcCwgY2hhciAqbm9kZSwgY2hhciAqbmFtZSwgY2hhciAqZnAsIHNpemVfdCBtb3VudHBvaW50
X2xlbikKIHsKLQlzdGQ6OnVuaXF1ZV9wdHI8Y2hhciBbXT4gbGluayAobmV3IGNoYXJbUEFUSF9N
QVhdKTsKLQlzdGQ6OnVuaXF1ZV9wdHI8Y2hhciBbXT4gdCAobmV3IGNoYXJbUEFUSF9NQVhdKTsK
LQljaGFyICAgICpscDsKKwljaGFyIGxpbmtbUEFUSF9NQVhdOworCWNoYXIgdFtQQVRIX01BWF07
CiAJaW50ICAgICBlcnJvcjsKIAlzc2l6ZV90IHN6OwogCWNoYXIgICAgKnA7CiAJaW50ICAgICBj
OwogCi0JbHAgICAgPSBsaW5rLmdldCgpOwotCWVycm9yID0gcmVhZF9saW5rKGRwLT5kX3Zub2Rl
LCBscCwgUEFUSF9NQVgsICZzeik7CisJZXJyb3IgPSByZWFkX2xpbmsoZHAtPmRfdm5vZGUsIGxp
bmssIFBBVEhfTUFYLCAmc3opOwogCWlmIChlcnJvciAhPSAwKSB7CiAJCXJldHVybiAoZXJyb3Ip
OwogCX0KLQlscFtzel0gPSAwOworCWxpbmtbc3pdID0gMDsKIAogCXAgPSBmcCArIG1vdW50cG9p
bnRfbGVuICsgc3RybGVuKG5vZGUpOwogCWMgPSBzdHJsZW4obm9kZSkgLSBzdHJsZW4obmFtZSkg
LSAxOwogCW5vZGVbY10gPSAwOwogCi0JaWYgKGxwWzBdID09ICcvJykgewotCQlzdHJsY2F0KGxw
LCBwLCBQQVRIX01BWCk7Ci0JCXN0cmxjcHkoZnAsIGxwLCBQQVRIX01BWCk7CisJaWYgKGxpbmtb
MF0gPT0gJy8nKSB7CisJCXN0cmxjYXQobGluaywgcCwgUEFUSF9NQVgpOworCQlzdHJsY3B5KGZw
LCBsaW5rLCBQQVRIX01BWCk7CiAJfSBlbHNlIHsKLQkJc3RybGNweSh0LmdldCgpLCBwLCBQQVRI
X01BWCk7CisJCXN0cmxjcHkodCwgcCwgUEFUSF9NQVgpOwogCQlzdHJsY3B5KG5vZGUsIGZwLCBt
b3VudHBvaW50X2xlbiArIGMgKyAxKTsKLQkJcGF0aF9jb252KG5vZGUsIGxwLCBmcCk7Ci0JCXN0
cmxjYXQoZnAsIHQuZ2V0KCksIFBBVEhfTUFYKTsKKwkJcGF0aF9jb252KG5vZGUsIGxpbmssIGZw
KTsKKwkJc3RybGNhdChmcCwgdCwgUEFUSF9NQVgpOwogCX0KIAlub2RlWzBdID0gMDsKIAluYW1l
WzBdID0gMDsKQEAgLTEwNyw4ICsxMDUsNyBAQCBuYW1laShjb25zdCBjaGFyICpwYXRoLCBzdHJ1
Y3QgZGVudHJ5ICoqZHBwKQogCWNoYXIgKnA7CiAJY2hhciBub2RlW1BBVEhfTUFYXTsKIAljaGFy
IG5hbWVbUEFUSF9NQVhdOwotCXN0ZDo6dW5pcXVlX3B0cjxjaGFyIFtdPiBmcCAobmV3IGNoYXIg
W1BBVEhfTUFYXSk7Ci0Jc3RkOjp1bmlxdWVfcHRyPGNoYXIgW10+IHQgKG5ldyBjaGFyIFtQQVRI
X01BWF0pOworCWNoYXIgZnBbUEFUSF9NQVhdOwogCXN0cnVjdCBtb3VudCAqbXA7CiAJc3RydWN0
IGRlbnRyeSAqZHAsICpkZHA7CiAJc3RydWN0IHZub2RlICpkdnAsICp2cDsKQEAgLTExOSw3ICsx
MTYsNyBAQCBuYW1laShjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3QgZGVudHJ5ICoqZHBwKQogCURQ
UklOVEYoVkZTREJfVk5PREUsICgibmFtZWk6IHBhdGg9JXNcbiIsIHBhdGgpKTsKIAogCWxpbmtz
X2ZvbGxvd2VkID0gMDsKLQlzdHJsY3B5KGZwLmdldCgpLCBwYXRoLCBQQVRIX01BWCk7CisJc3Ry
bGNweShmcCwgcGF0aCwgUEFUSF9NQVgpOwogCiAJZG8gewogCQluZWVkX2NvbnRpbnVlID0gZmFs
c2U7CkBAIC0xMjcsMTAgKzEyNCwxMCBAQCBuYW1laShjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3Qg
ZGVudHJ5ICoqZHBwKQogCQkgKiBDb252ZXJ0IGEgZnVsbCBwYXRoIG5hbWUgdG8gaXRzIG1vdW50
IHBvaW50IGFuZAogCQkgKiB0aGUgbG9jYWwgbm9kZSBpbiB0aGUgZmlsZSBzeXN0ZW0uCiAJCSAq
LwotCQlpZiAodmZzX2ZpbmRyb290KGZwLmdldCgpLCAmbXAsICZwKSkgeworCQlpZiAodmZzX2Zp
bmRyb290KGZwLCAmbXAsICZwKSkgewogCQkJcmV0dXJuIEVOT1RESVI7CiAJCX0KLQkJaW50IG1v
dW50cG9pbnRfbGVuID0gcCAtIGZwLmdldCgpIC0gMTsKKwkJaW50IG1vdW50cG9pbnRfbGVuID0g
cCAtIGZwIC0gMTsKIAkJc3RybGNweShub2RlLCAiLyIsIHNpemVvZihub2RlKSk7CiAJCXN0cmxj
YXQobm9kZSwgcCwgc2l6ZW9mKG5vZGUpKTsKIAkJZHAgPSBkZW50cnlfbG9va3VwKG1wLCBub2Rl
KTsKQEAgLTIwMyw3ICsyMDAsNyBAQCBuYW1laShjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3QgZGVu
dHJ5ICoqZHBwKQogCQkJZGRwID0gZHA7CiAKIAkJCWlmIChkcC0+ZF92bm9kZS0+dl90eXBlID09
IFZMTkspIHsKLQkJCQllcnJvciA9IG5hbWVpX2ZvbGxvd19saW5rKGRwLCBub2RlLCBuYW1lLCBm
cC5nZXQoKSwgbW91bnRwb2ludF9sZW4pOworCQkJCWVycm9yID0gbmFtZWlfZm9sbG93X2xpbmso
ZHAsIG5vZGUsIG5hbWUsIGZwLCBtb3VudHBvaW50X2xlbik7CiAJCQkJaWYgKGVycm9yKSB7CiAJ
CQkJCWRyZWxlKGRwKTsKIAkJCQkJcmV0dXJuIChlcnJvcik7CkBAIC0yMTEsNyArMjA4LDcgQEAg
bmFtZWkoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IGRlbnRyeSAqKmRwcCkKIAogCQkJCWRyZWxl
KGRwKTsKIAotCQkJCXAgICAgICAgPSBmcC5nZXQoKTsKKwkJCQlwICAgICAgID0gZnA7CiAJCQkJ
ZHAgICAgICA9IG51bGxwdHI7CiAJCQkJZGRwICAgICA9IG51bGxwdHI7CiAJCQkJdnAgICAgICA9
IG51bGxwdHI7CkBAIC0yNTQsNyArMjUxLDcgQEAgbmFtZWlfbGFzdF9ub2ZvbGxvdyhjaGFyICpw
YXRoLCBzdHJ1Y3QgZGVudHJ5ICpkZHAsIHN0cnVjdCBkZW50cnkgKipkcHApCiAJc3RydWN0IGRl
bnRyeSAqZHA7CiAJc3RydWN0IHZub2RlICAqZHZwOwogCXN0cnVjdCB2bm9kZSAgKnZwOwotCXN0
ZDo6dW5pcXVlX3B0cjxjaGFyIFtdPiBub2RlIChuZXcgY2hhcltQQVRIX01BWF0pOworCWNoYXIg
bm9kZVtQQVRIX01BWF07CiAKIAlkdnAgID0gbnVsbHB0cjsKIApAQCAtMjczLDI2ICsyNzAsMjYg
QEAgbmFtZWlfbGFzdF9ub2ZvbGxvdyhjaGFyICpwYXRoLCBzdHJ1Y3QgZGVudHJ5ICpkZHAsIHN0
cnVjdCBkZW50cnkgKipkcHApCiAJCXJldHVybiAoRU5PVERJUik7CiAJfQogCi0Jc3RybGNweShu
b2RlLmdldCgpLCAiLyIsIFBBVEhfTUFYKTsKLQlzdHJsY2F0KG5vZGUuZ2V0KCksIHAsIFBBVEhf
TUFYKTsKKwlzdHJsY3B5KG5vZGUsICIvIiwgUEFUSF9NQVgpOworCXN0cmxjYXQobm9kZSwgcCwg
UEFUSF9NQVgpOwogCiAJLy8gV2Ugd2FudCB0byB0cmVhdCB0aGluZ3MgbGlrZSAvdG1wLyB0aGUg
c2FtZSBhcyAvdG1wLiBCZXN0IHdheSB0byBkbyB0aGF0CiAJLy8gaXMgdG8gaWdub3JlIHRoZSBs
YXN0IGNoYXJhY3RlciwgZXhjZXB0IHdoZW4gd2UncmUgc3RhdGluZyB0aGUgcm9vdC4KLQlhdXRv
IGwgPSBzdHJsZW4obm9kZS5nZXQoKSkgLSAxOwotCWlmIChsICYmIG5vZGUuZ2V0KClbbF0gPT0g
Jy8nKSB7Ci0JCW5vZGUuZ2V0KClbbF0gPSAnXDAnOworCWludCBsID0gc3RybGVuKG5vZGUpIC0g
MTsKKwlpZiAobCAmJiBub2RlW2xdID09ICcvJykgeworCQlub2RlW2xdID0gJ1wwJzsKIAl9CiAK
IAlkdnAgPSBkZHAtPmRfdm5vZGU7CiAJdm5fbG9jayhkdnApOwotCWRwID0gZGVudHJ5X2xvb2t1
cChtcCwgbm9kZS5nZXQoKSk7CisJZHAgPSBkZW50cnlfbG9va3VwKG1wLCBub2RlKTsKIAlpZiAo
ZHAgPT0gbnVsbHB0cikgewogCQllcnJvciA9IFZPUF9MT09LVVAoZHZwLCBuYW1lLCAmdnApOwog
CQlpZiAoZXJyb3IgIT0gMCkgewogCQkJZ290byBvdXQ7CiAJCX0KIAotCQlkcCA9IGRlbnRyeV9h
bGxvYyhkZHAsIHZwLCBub2RlLmdldCgpKTsKKwkJZHAgPSBkZW50cnlfYWxsb2MoZGRwLCB2cCwg
bm9kZSk7CiAJCXZwdXQodnApOwogCiAJCWlmIChkcCA9PSBudWxscHRyKSB7CmRpZmYgLS1naXQg
YS9saWIvdmZzY29yZS9tYWluLmMgYi9saWIvdmZzY29yZS9tYWluLmMKaW5kZXggZTMwMDQ1OTcu
Ljc0ODc2ZGMxIDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9tYWluLmMKKysrIGIvbGliL3Zmc2Nv
cmUvbWFpbi5jCkBAIC03NywxOCArNzcsMTYgQEAKICNpbmNsdWRlIDxhcGkvdXRpbWUuaD4KICNp
bmNsdWRlIDxjaHJvbm8+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIAogI2lmZGVmIERFQlVH
X1ZGUwogaW50CXZmc19kZWJ1ZyA9IFZGU0RCX0ZMQUdTOwogI2VuZGlmCiAKLXN0ZDo6YXRvbWlj
PG1vZGVfdD4gZ2xvYmFsX3VtYXNre1NfSVdHUlAgfCBTX0lXT1RIfTsKK3N0YXRpYyBtb2RlX3Qg
Z2xvYmFsX3VtYXNrID0gU19JV0dSUCB8IFNfSVdPVEg7CiAKIHN0YXRpYyBpbmxpbmUgbW9kZV90
IGFwcGx5X3VtYXNrKG1vZGVfdCBtb2RlKQogewotCXJldHVybiBtb2RlICYgfmdsb2JhbF91bWFz
ay5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOworCXJldHVybiBtb2RlICYgfnVrYXJj
aF9sb2FkX24oJmdsb2JhbF91bWFzayk7CiB9CiAKIFRSQUNFUE9JTlQodHJhY2VfdmZzX29wZW4s
ICJcIiVzXCIgMHgleCAwJTBvIiwgY29uc3QgY2hhciosIGludCwgbW9kZV90KTsKQEAgLTk3LDcg
Kzk1LDYgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfb3Blbl9lcnIsICIlZCIsIGludCk7CiAKIHN0
cnVjdCB0YXNrICptYWluX3Rhc2s7CS8qIHdlIG9ubHkgaGF2ZSBhIHNpbmdsZSBwcm9jZXNzICov
CiAKLWV4dGVybiAiQyIKIGludCBvcGVuKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBpbnQgZmxhZ3Ms
IC4uLikKIHsKIAltb2RlX3QgbW9kZSA9IDA7CkBAIC0xNzgsOCArMTc1LDcgQEAgaW50IG9wZW5h
dChpbnQgZGlyZmQsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBpbnQgZmxhZ3MsIC4uLikKIAlzdHJ1
Y3Qgdm5vZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOwogCXZuX2xvY2sodnApOwogCi0J
c3RkOjp1bmlxdWVfcHRyPGNoYXIgW10+IHVwIChuZXcgY2hhcltQQVRIX01BWF0pOwotCWNoYXIg
KnAgPSB1cC5nZXQoKTsKKwljaGFyIHBbUEFUSF9NQVhdOwogCiAJLyogYnVpbGQgYWJzb2x1dGUg
cGF0aCAqLwogCXN0cmxjcHkocCwgZnAtPmZfZGVudHJ5LT5kX21vdW50LT5tX3BhdGgsIFBBVEhf
TUFYKTsKQEAgLTE5NiwyNiArMTkyLDYgQEAgaW50IG9wZW5hdChpbnQgZGlyZmQsIGNvbnN0IGNo
YXIgKnBhdGhuYW1lLCBpbnQgZmxhZ3MsIC4uLikKIH0KIExGUzY0KG9wZW5hdCk7CiAKLS8vIG9w
ZW4oKSBoYXMgYW4gb3B0aW9uYWwgdGhpcmQgYXJndW1lbnQsICJtb2RlIiwgd2hpY2ggaXMgb25s
eSBuZWVkZWQgaW4KLS8vIHNvbWUgY2FzZXMgKHdoZW4gdGhlIE9fQ1JFQVQgbW9kZSBpcyB1c2Vk
KS4gQXMgYSBzYWZldHkgZmVhdHVyZSwgcmVjZW50Ci0vLyB2ZXJzaW9ucyBvZiBHbGliYyBhZGQg
YSBmZWF0dXJlIHdoZXJlIG9wZW4oKSB3aXRoIHR3byBhcmd1bWVudHMgaXMgcmVwbGFjZWQKLS8v
IGJ5IGEgY2FsbCB0byBfX29wZW5fMigpLCB3aGljaCB2ZXJpZmllcyBpdCBpc24ndCBjYWxsZWQg
d2l0aCBPX0NSRUFURS4KLWV4dGVybiAiQyIgaW50IF9fb3Blbl8yKGNvbnN0IGNoYXIgKnBhdGhu
YW1lLCBpbnQgZmxhZ3MpCi17Ci0JYXNzZXJ0KCEoZmxhZ3MgJiBPX0NSRUFUKSk7Ci0JcmV0dXJu
IG9wZW4ocGF0aG5hbWUsIGZsYWdzLCAwKTsKLX0KLQotZXh0ZXJuICJDIiBpbnQgX19vcGVuNjRf
Mihjb25zdCBjaGFyICpmaWxlLCBpbnQgZmxhZ3MpCi17Ci0JaWYgKGZsYWdzICYgT19DUkVBVCkg
ewotCQllcnJubyA9IEVJTlZBTDsKLQkJcmV0dXJuIC0xOwotCX0KLQotCXJldHVybiBvcGVuNjQo
ZmlsZSwgZmxhZ3MpOwotfQotCiBpbnQgY3JlYXQoY29uc3QgY2hhciAqcGF0aG5hbWUsIG1vZGVf
dCBtb2RlKQogewogCXJldHVybiBvcGVuKHBhdGhuYW1lLCBPX0NSRUFUfE9fV1JPTkxZfE9fVFJV
TkMsIG1vZGUpOwpAQCAtMjQ5LDcgKzIyNSw2IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX21rbm9k
X3JldCwgIiIpOwogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbWtub2RfZXJyLCAiJWQiLCBpbnQpOwog
CiAKLWV4dGVybiAiQyIKIGludCBfX3hta25vZChpbnQgdmVyLCBjb25zdCBjaGFyICpwYXRobmFt
ZSwgbW9kZV90IG1vZGUsIGRldl90ICpkZXYpCiB7CiAJYXNzZXJ0KHZlciA9PSAwKTsgLy8gT24g
eDg2LTY0IExpbnV4LCBfTUtOT0RfVkVSX0xJTlVYIGlzIDAuCkBAIC01NDMsNyArNTE4LDYgQEAg
VFJBQ0VQT0lOVCh0cmFjZV92ZnNfZnN0YXQsICIlZCAlcCIsIGludCwgc3RydWN0IHN0YXQqKTsK
IFRSQUNFUE9JTlQodHJhY2VfdmZzX2ZzdGF0X3JldCwgIiIpOwogVFJBQ0VQT0lOVCh0cmFjZV92
ZnNfZnN0YXRfZXJyLCAiJWQiLCBpbnQpOwogCi1leHRlcm4gIkMiCiBpbnQgX19meHN0YXQoaW50
IHZlciwgaW50IGZkLCBzdHJ1Y3Qgc3RhdCAqc3QpCiB7CiAJc3RydWN0IGZpbGUgKmZwOwpAQCAt
NTcxLDcgKzU0NSw2IEBAIGludCBfX2Z4c3RhdChpbnQgdmVyLCBpbnQgZmQsIHN0cnVjdCBzdGF0
ICpzdCkKIAogTEZTNjQoX19meHN0YXQpOwogCi1leHRlcm4gIkMiCiBpbnQgZnN0YXQoaW50IGZk
LCBzdHJ1Y3Qgc3RhdCAqc3QpCiB7CiAJcmV0dXJuIF9fZnhzdGF0KDEsIGZkLCBzdCk7CkBAIC01
NzksNyArNTUyLDYgQEAgaW50IGZzdGF0KGludCBmZCwgc3RydWN0IHN0YXQgKnN0KQogCiBMRlM2
NChmc3RhdCk7CiAKLWV4dGVybiAiQyIKIGludCBfX2Z4c3RhdGF0KGludCB2ZXIsIGludCBkaXJm
ZCwgY29uc3QgY2hhciAqcGF0aG5hbWUsIHN0cnVjdCBzdGF0ICpzdCwKIAkJaW50IGZsYWdzKQog
ewpAQCAtNjA2LDggKzU3OCw3IEBAIGludCBfX2Z4c3RhdGF0KGludCB2ZXIsIGludCBkaXJmZCwg
Y29uc3QgY2hhciAqcGF0aG5hbWUsIHN0cnVjdCBzdGF0ICpzdCwKIAlzdHJ1Y3Qgdm5vZGUgKnZw
ID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOwogCXZuX2xvY2sodnApOwogCi0Jc3RkOjp1bmlxdWVf
cHRyPGNoYXIgW10+IHVwIChuZXcgY2hhcltQQVRIX01BWF0pOwotCWNoYXIgKnAgPSB1cC5nZXQo
KTsKKwljaGFyIHBbUEFUSF9NQVhdOwogCS8qIGJ1aWxkIGFic29sdXRlIHBhdGggKi8KIAlzdHJs
Y3B5KHAsIGZwLT5mX2RlbnRyeS0+ZF9tb3VudC0+bV9wYXRoLCBQQVRIX01BWCk7CiAJc3RybGNh
dChwLCBmcC0+Zl9kZW50cnktPmRfcGF0aCwgUEFUSF9NQVgpOwpAQCAtNjI0LDcgKzU5NSw2IEBA
IGludCBfX2Z4c3RhdGF0KGludCB2ZXIsIGludCBkaXJmZCwgY29uc3QgY2hhciAqcGF0aG5hbWUs
IHN0cnVjdCBzdGF0ICpzdCwKIAogTEZTNjQoX19meHN0YXRhdCk7CiAKLWV4dGVybiAiQyIKIGlu
dCBmc3RhdGF0KGludCBkaXJmZCwgY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IHN0YXQgKnN0LCBp
bnQgZmxhZ3MpCiB7CiAJcmV0dXJuIF9fZnhzdGF0YXQoMSwgZGlyZmQsIHBhdGgsIHN0LCBmbGFn
cyk7CkBAIC02MzIsNyArNjAyLDcgQEAgaW50IGZzdGF0YXQoaW50IGRpcmZkLCBjb25zdCBjaGFy
ICpwYXRoLCBzdHJ1Y3Qgc3RhdCAqc3QsIGludCBmbGFncykKIAogTEZTNjQoZnN0YXRhdCk7CiAK
LWV4dGVybiAiQyIgaW50IGZsb2NrKGludCBmZCwgaW50IG9wZXJhdGlvbikKK2ludCBmbG9jayhp
bnQgZmQsIGludCBvcGVyYXRpb24pCiB7CiAJaWYgKCFmaWxlcmVmX2Zyb21fZmQoZmQpKSB7CiAJ
CXJldHVybiBsaWJjX2Vycm9yKEVCQURGKTsKQEAgLTY2MywxNCArNjMzLDE0IEBAIHN0cnVjdCBf
X2RpcnN0cmVhbQogCiBESVIgKm9wZW5kaXIoY29uc3QgY2hhciAqcGF0aCkKIHsKLQlESVIgKmRp
ciA9IG5ldyBESVI7CisJRElSICpkaXIgPSBtYWxsb2Moc2l6ZW9mKCpkaXIpKTsKIAogCWlmICgh
ZGlyKQotCQlyZXR1cm4gbGliY19lcnJvcl9wdHI8RElSPihFTk9NRU0pOworCQlyZXR1cm4gRVJS
MlBUUigtRU5PTUVNKTsKIAogCWRpci0+ZmQgPSBvcGVuKHBhdGgsIE9fUkRPTkxZKTsKIAlpZiAo
ZGlyLT5mZCA8IDApIHsKLQkJZGVsZXRlIGRpcjsKKwkJZnJlZShkaXIpOwogCQlyZXR1cm4gbnVs
bHB0cjsKIAl9CiAJcmV0dXJuIGRpcjsKQEAgLTY4Nyw3ICs2NTcsMTEgQEAgRElSICpmZG9wZW5k
aXIoaW50IGZkKQogCQllcnJubyA9IEVOT1RESVI7CiAJCXJldHVybiBudWxscHRyOwogCX0KLQlk
aXIgPSBuZXcgRElSOworCWRpciA9IG1hbGxvYyhzaXplb2YoKmRpcikpOworCWlmICghZGlyKSB7
CisJCWVycm5vID0gRU5PTUVNOworCQlyZXR1cm4gTlVMTDsKKwl9CiAJZGlyLT5mZCA9IGZkOwog
CXJldHVybiBkaXI7CiAKQEAgLTcwNSw3ICs2NzksNyBAQCBpbnQgZGlyZmQoRElSICpkaXJwKQog
aW50IGNsb3NlZGlyKERJUiAqZGlyKQogewogCWNsb3NlKGRpci0+ZmQpOwotCWRlbGV0ZSBkaXI7
CisJZnJlZShkaXIpOwogCXJldHVybiAwOwogfQogCkBAIC03MTYsNyArNjkwLDcgQEAgc3RydWN0
IGRpcmVudCAqcmVhZGRpcihESVIgKmRpcikKIAogCXJldCA9IHJlYWRkaXJfcihkaXIsICZlbnRy
eSwgJnJlc3VsdCk7CiAJaWYgKHJldCkKLQkJcmV0dXJuIGxpYmNfZXJyb3JfcHRyPHN0cnVjdCBk
aXJlbnQ+KHJldCk7CisJCXJldHVybiBFUlIyUFRSKC1yZXQpOwogCiAJZXJybm8gPSAwOwogCXJl
dHVybiByZXN1bHQ7CkBAIC03NTMsMTggKzcyNywxOCBAQCBpbnQgcmVhZGRpcl9yKERJUiAqZGly
LCBzdHJ1Y3QgZGlyZW50ICplbnRyeSwgc3RydWN0IGRpcmVudCAqKnJlc3VsdCkKIAogLy8gRklY
TUU6IGluIDY0Yml0IGRpcmVudDY0IGFuZCBkaXJlbnQgYXJlIGlkZW50aWNhbCwgc28gaXQncyBz
YWZlIHRvIGFsaWFzCiAjdW5kZWYgcmVhZGRpcjY0X3IKLWV4dGVybiAiQyIgaW50IHJlYWRkaXI2
NF9yKERJUiAqZGlyLCBzdHJ1Y3QgZGlyZW50NjQgKmVudHJ5LAoraW50IHJlYWRkaXI2NF9yKERJ
UiAqZGlyLCBzdHJ1Y3QgZGlyZW50NjQgKmVudHJ5LAogCQlzdHJ1Y3QgZGlyZW50NjQgKipyZXN1
bHQpCiAJCV9fYXR0cmlidXRlX18oKGFsaWFzKCJyZWFkZGlyX3IiKSkpOwogCiAjdW5kZWYgcmVh
ZGRpcjY0Ci1leHRlcm4gIkMiIHN0cnVjdCBkaXJlbnQgKnJlYWRkaXI2NChESVIgKmRpcikgX19h
dHRyaWJ1dGVfXygoYWxpYXMoInJlYWRkaXIiKSkpOworc3RydWN0IGRpcmVudCAqcmVhZGRpcjY0
KERJUiAqZGlyKSBfX2F0dHJpYnV0ZV9fKChhbGlhcygicmVhZGRpciIpKSk7CiAKIHZvaWQgcmV3
aW5kZGlyKERJUiAqZGlycCkKIHsKIAlzdHJ1Y3QgZmlsZSAqZnA7CiAKLQlhdXRvIGVycm9yID0g
ZmdldChkaXJwLT5mZCwgJmZwKTsKKwlpbnQgZXJyb3IgPSBmZ2V0KGRpcnAtPmZkLCAmZnApOwog
CWlmIChlcnJvcikgewogCQkvLyBQT1NJWCBzcGVjaWZpZXMgdGhhdCB3aGF0IHJld2luZGRpcigp
IGRvZXMgaW4gdGhlIGNhc2Ugb2YgZXJyb3IKIAkJLy8gaXMgdW5kZWZpbmVkLi4uCkBAIC05MzYs
MjMgKzkxMCwyMSBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19jaGRpciwgIlwiJXNcIiIsIGNvbnN0
IGNoYXIqKTsKIFRSQUNFUE9JTlQodHJhY2VfdmZzX2NoZGlyX3JldCwgIiIpOwogVFJBQ0VQT0lO
VCh0cmFjZV92ZnNfY2hkaXJfZXJyLCAiJWQiLCBpbnQpOwogCi1zdGF0aWMgaW50IHJlcGxhY2Vf
Y3dkKHN0cnVjdCB0YXNrICp0LCBzdHJ1Y3QgZmlsZSAqbmV3X2N3ZGZwLAotCQkJCQkgICBzdGQ6
OmZ1bmN0aW9uPGludCAodm9pZCk+IGNoZGlyX2Z1bmMpCitzdGF0aWMgaW50CitfX2RvX2ZjaGRp
cihzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCwgc3RydWN0IHRhc2sgKnQpCiB7CiAJc3RydWN0IGZp
bGUgKm9sZCA9IG51bGxwdHI7CiAKLQlpZiAoIXQpIHsKLQkJcmV0dXJuIDA7Ci0JfQorCVVLX0FT
U0VSVCh0KTsKIAogCWlmICh0LT50X2N3ZGZwKSB7CiAJCW9sZCA9IHQtPnRfY3dkZnA7CiAJfQog
CiAJLyogRG8gdGhlIGFjdHVhbCBjaGRpciBvcGVyYXRpb24gaGVyZSAqLwotCWludCBlcnJvciA9
IGNoZGlyX2Z1bmMoKTsKKwlpbnQgZXJyb3IgPSBzeXNfZmNoZGlyKGZwLCB0LT50X2N3ZCk7CiAK
LQl0LT50X2N3ZGZwID0gbmV3X2N3ZGZwOworCXQtPnRfY3dkZnAgPSBmcDsKIAlpZiAob2xkKSB7
CiAJCWZkcm9wKG9sZCk7CiAJfQpAQCAtOTgxLDcgKzk1MywxMSBAQCBpbnQgY2hkaXIoY29uc3Qg
Y2hhciAqcGF0aG5hbWUpCiAJCWdvdG8gb3V0X2Vycm5vOwogCX0KIAotCXJlcGxhY2VfY3dkKHQs
IGZwLCBbJl0oKSB7IHN0cmxjcHkodC0+dF9jd2QsIHBhdGgsIHNpemVvZih0LT50X2N3ZCkpOyBy
ZXR1cm4gMDsgfSk7CisJZXJyb3IgPSBfX2RvX2ZjaGRpcihmcCwgdCk7CisJaWYgKGVycm9yKSB7
CisJCWZkcm9wKGZwKTsKKwkJZ290byBvdXRfZXJybm87CisJfQogCiAJdHJhY2VfdmZzX2NoZGly
X3JldCgpOwogCXJldHVybiAwOwpAQCAtMTAwNiw3ICs5ODIsNyBAQCBpbnQgZmNoZGlyKGludCBm
ZCkKIAlpZiAoZXJyb3IpCiAJCWdvdG8gb3V0X2Vycm5vOwogCi0JZXJyb3IgPSByZXBsYWNlX2N3
ZCh0LCBmcCwgWyZdKCkgeyByZXR1cm4gc3lzX2ZjaGRpcihmcCwgdC0+dF9jd2QpOyB9KTsKKwll
cnJvciA9IF9fZG9fZmNoZGlyKGZwLCB0KTsKIAlpZiAoZXJyb3IpIHsKIAkJZmRyb3AoZnApOwog
CQlnb3RvIG91dF9lcnJubzsKQEAgLTExMTQsNyArMTA5MCw2IEBAIFRSQUNFUE9JTlQodHJhY2Vf
dmZzX3N0YXQsICJcIiVzXCIgJXAiLCBjb25zdCBjaGFyKiwgc3RydWN0IHN0YXQqKTsKIFRSQUNF
UE9JTlQodHJhY2VfdmZzX3N0YXRfcmV0LCAiIik7CiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19zdGF0
X2VyciwgIiVkIiwgaW50KTsKIAotZXh0ZXJuICJDIgogaW50IF9feHN0YXQoaW50IHZlciwgY29u
c3QgY2hhciAqcGF0aG5hbWUsIHN0cnVjdCBzdGF0ICpzdCkKIHsKIAlzdHJ1Y3QgdGFzayAqdCA9
IG1haW5fdGFzazsKQEAgLTExNTEsNyArMTEyNiw2IEBAIExGUzY0KHN0YXQpOwogVFJBQ0VQT0lO
VCh0cmFjZV92ZnNfbHN0YXQsICJwYXRobmFtZT0lcywgc3RhdD0lcCIsIGNvbnN0IGNoYXIqLCBz
dHJ1Y3Qgc3RhdCopOwogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbHN0YXRfcmV0LCAiIik7CiBUUkFD
RVBPSU5UKHRyYWNlX3Zmc19sc3RhdF9lcnIsICJlcnJubz0lZCIsIGludCk7Ci1leHRlcm4gIkMi
CiBpbnQgX19seHN0YXQoaW50IHZlciwgY29uc3QgY2hhciAqcGF0aG5hbWUsIHN0cnVjdCBzdGF0
ICpzdCkKIHsKIAlzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKQEAgLTExOTEsNyArMTE2NSw2
IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX3N0YXRmcywgIlwiJXNcIiAlcCIsIGNvbnN0IGNoYXIq
LCBzdHJ1Y3Qgc3RhdGZzKik7CiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19zdGF0ZnNfcmV0LCAiIik7
CiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19zdGF0ZnNfZXJyLCAiJWQiLCBpbnQpOwogCi1leHRlcm4g
IkMiCiBpbnQgX19zdGF0ZnMoY29uc3QgY2hhciAqcGF0aG5hbWUsIHN0cnVjdCBzdGF0ZnMgKmJ1
ZikKIHsKIAl0cmFjZV92ZnNfc3RhdGZzKHBhdGhuYW1lLCBidWYpOwpAQCAtMTIyMSw3ICsxMTk0
LDYgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZnN0YXRmcywgIlwiJXNcIiAlcCIsIGludCwgc3Ry
dWN0IHN0YXRmcyopOwogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZnN0YXRmc19yZXQsICIiKTsKIFRS
QUNFUE9JTlQodHJhY2VfdmZzX2ZzdGF0ZnNfZXJyLCAiJWQiLCBpbnQpOwogCi1leHRlcm4gIkMi
CiBpbnQgX19mc3RhdGZzKGludCBmZCwgc3RydWN0IHN0YXRmcyAqYnVmKQogewogCXN0cnVjdCBm
aWxlICpmcDsKQEAgLTE0MjQsMTEgKzEzOTYsMTEgQEAgaW50IGR1cDIoaW50IG9sZGZkLCBpbnQg
bmV3ZmQpCiAgKi8KICNkZWZpbmUgU0VURkwgKE9fQVBQRU5EIHwgT19BU1lOQyB8IE9fRElSRUNU
IHwgT19OT0FUSU1FIHwgT19OT05CTE9DSykKIAorI2lmIDAKIFRSQUNFUE9JTlQodHJhY2VfdmZz
X2ZjbnRsLCAiJWQgJWQgMHgleCIsIGludCwgaW50LCBpbnQpOwogVFJBQ0VQT0lOVCh0cmFjZV92
ZnNfZmNudGxfcmV0LCAiXCIlc1wiIiwgaW50KTsKIFRSQUNFUE9JTlQodHJhY2VfdmZzX2ZjbnRs
X2VyciwgIiVkIiwgaW50KTsKIAotZXh0ZXJuICJDIgogaW50IGZjbnRsKGludCBmZCwgaW50IGNt
ZCwgaW50IGFyZykKIHsKIAlzdHJ1Y3QgZmlsZSAqZnA7CkBAIC0xNTA5LDYgKzE0ODEsNyBAQCBp
bnQgZmNudGwoaW50IGZkLCBpbnQgY21kLCBpbnQgYXJnKQogCWVycm5vID0gZXJyb3I7CiAJcmV0
dXJuIC0xOwogfQorI2VuZGlmCiAKIFRSQUNFUE9JTlQodHJhY2VfdmZzX2FjY2VzcywgIlwiJXNc
IiAwJTBvIiwgY29uc3QgY2hhciosIGludCk7CiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19hY2Nlc3Nf
cmV0LCAiIik7CkBAIC0xNTY0LDggKzE1MzcsNyBAQCBpbnQgZmFjY2Vzc2F0KGludCBkaXJmZCwg
Y29uc3QgY2hhciAqcGF0aG5hbWUsIGludCBtb2RlLCBpbnQgZmxhZ3MpCiAJc3RydWN0IHZub2Rl
ICp2cCA9IGZwLT5mX2RlbnRyeS0+ZF92bm9kZTsKIAl2bl9sb2NrKHZwKTsKIAotCXN0ZDo6dW5p
cXVlX3B0cjxjaGFyIFtdPiB1cCAobmV3IGNoYXJbUEFUSF9NQVhdKTsKLQljaGFyICpwID0gdXAu
Z2V0KCk7CisJY2hhciBwW1BBVEhfTUFYXTsKIAogCS8qIGJ1aWxkIGFic29sdXRlIHBhdGggKi8K
IAlzdHJsY3B5KHAsIGZwLT5mX2RlbnRyeS0+ZF9tb3VudC0+bV9wYXRoLCBQQVRIX01BWCk7CkBA
IC0xNTgxLDcgKzE1NTMsNiBAQCBpbnQgZmFjY2Vzc2F0KGludCBkaXJmZCwgY29uc3QgY2hhciAq
cGF0aG5hbWUsIGludCBtb2RlLCBpbnQgZmxhZ3MpCiAJcmV0dXJuIGVycm9yOwogfQogCi1leHRl
cm4gIkMiIAogaW50IGV1aWRhY2Nlc3MoY29uc3QgY2hhciAqcGF0aG5hbWUsIGludCBtb2RlKQog
ewogCXJldHVybiBhY2Nlc3MocGF0aG5hbWUsIG1vZGUpOwpAQCAtMTU5MCw1NCArMTU2MSw2IEBA
IGludCBldWlkYWNjZXNzKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBpbnQgbW9kZSkKIHdlYWtfYWxp
YXMoZXVpZGFjY2VzcyxlYWNjZXNzKTsKIAogI2lmIDAKLXN0YXRpYyBpbnQKLWZzX3BpcGUoc3Ry
dWN0IHRhc2sgKnQsIHN0cnVjdCBtc2cgKm1zZykKLXsKLSNpZmRlZiBDT05GSUdfRklGT0ZTCi0J
Y2hhciBwYXRoW1BBVEhfTUFYXTsKLQlmaWxlX3QgcmZwLCB3ZnA7Ci0JaW50IGVycm9yLCByZmQs
IHdmZDsKLQotCURQUklOVEYoVkZTREJfQ09SRSwgKCJmc19waXBlXG4iKSk7Ci0KLQlpZiAoKHJm
ZCA9IHRhc2tfbmV3ZmQodCkpID09IC0xKQotCQlyZXR1cm4gRU1GSUxFOwotCXQtPnRfb2ZpbGVb
cmZkXSA9IChmaWxlX3QpMTsgLyogdGVtcCAqLwotCi0JaWYgKCh3ZmQgPSB0YXNrX25ld2ZkKHQp
KSA9PSAtMSkgewotCQl0LT50X29maWxlW3JmZF0gPSBudWxscHRyOwotCQlyZXR1cm4gRU1GSUxF
OwotCX0KLQlzcHJpbnRmKHBhdGgsICIvbW50L2ZpZm8vcGlwZS0leC0lZCIsICh1X2ludCl0LT50
X3Rhc2tpZCwgcmZkKTsKLQotCWlmICgoZXJyb3IgPSBzeXNfbWtub2QocGF0aCwgU19JRklGTykp
ICE9IDApCi0JCWdvdG8gb3V0OwotCWlmICgoZXJyb3IgPSBzeXNfb3BlbihwYXRoLCBPX1JET05M
WSB8IE9fTk9OQkxPQ0ssIDAsICZyZnApKSAhPSAwKSB7Ci0JCWdvdG8gb3V0OwotCX0KLQlpZiAo
KGVycm9yID0gc3lzX29wZW4ocGF0aCwgT19XUk9OTFkgfCBPX05PTkJMT0NLLCAwLCAmd2ZwKSkg
IT0gMCkgewotCQlnb3RvIG91dDsKLQl9Ci0JdC0+dF9vZmlsZVtyZmRdID0gcmZwOwotCXQtPnRf
b2ZpbGVbd2ZkXSA9IHdmcDsKLQl0LT50X25vcGVucyArPSAyOwotCW1zZy0+ZGF0YVswXSA9IHJm
ZDsKLQltc2ctPmRhdGFbMV0gPSB3ZmQ7Ci0JcmV0dXJuIDA7Ci0Jb3V0OgotCXQtPnRfb2ZpbGVb
cmZkXSA9IG51bGxwdHI7Ci0JdC0+dF9vZmlsZVt3ZmRdID0gbnVsbHB0cjsKLQlyZXR1cm4gZXJy
b3I7Ci0jZWxzZQotCXJldHVybiBFTk9TWVM7Ci0jZW5kaWYKLX0KLSNlbmRpZgotCi1UUkFDRVBP
SU5UKHRyYWNlX3Zmc19pc2F0dHksICIlZCIsIGludCk7Ci1UUkFDRVBPSU5UKHRyYWNlX3Zmc19p
c2F0dHlfcmV0LCAiJWQiLCBpbnQpOwotVFJBQ0VQT0lOVCh0cmFjZV92ZnNfaXNhdHR5X2Vyciwg
IiVkIiwgaW50KTsKLQogLyoKICAqIFJldHVybiBpZiBzcGVjaWZpZWQgZmlsZSBpcyBhIHR0eQog
ICovCkBAIC0xNjYzLDYgKzE1ODYsNyBAQCBpbnQgaXNhdHR5KGludCBmZCkKIAl0cmFjZV92ZnNf
aXNhdHR5X3JldChpc3R0eSk7CiAJcmV0dXJuIGlzdHR5OwogfQorI2VuZGlmCiAKIFRSQUNFUE9J
TlQodHJhY2VfdmZzX3RydW5jYXRlLCAiXCIlc1wiIDB4JXgiLCBjb25zdCBjaGFyKiwgb2ZmX3Qp
OwogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfdHJ1bmNhdGVfcmV0LCAiIik7CkBAIC0xNzg0LDE1ICsx
NzA4LDcgQEAgaW50IGZhbGxvY2F0ZShpbnQgZmQsIGludCBtb2RlLCBsb2ZmX3Qgb2Zmc2V0LCBs
b2ZmX3QgbGVuKQogCiBMRlM2NChmYWxsb2NhdGUpOwogCi1UUkFDRVBPSU5UKHRyYWNlX3Zmc191
dGltZXMsICJcIiVzXCIiLCBjb25zdCBjaGFyKik7Ci1UUkFDRVBPSU5UKHRyYWNlX3Zmc191dGlt
ZXNfcmV0LCAiIik7Ci1UUkFDRVBPSU5UKHRyYWNlX3Zmc191dGltZXNfZXJyLCAiJWQiLCBpbnQp
OwotCi1pbnQgZnV0aW1lcyhpbnQgZmQsIGNvbnN0IHN0cnVjdCB0aW1ldmFsIHRpbWVzWzJdKQot
ewotCXJldHVybiBmdXRpbWVzYXQoZmQsIG51bGxwdHIsIHRpbWVzKTsKLX0KLQorI2lmIDAKIGlu
dCBmdXRpbWVzYXQoaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwgY29uc3Qgc3RydWN0
IHRpbWV2YWwgdGltZXNbMl0pCiB7CiAJc3RydWN0IHN0YXQgc3Q7CkBAIC0xODUwLDEyICsxNzY2
LDEyIEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX3V0aW1lbnNhdCwgIlwiJXNcIiIsIGNvbnN0IGNo
YXIqKTsKIFRSQUNFUE9JTlQodHJhY2VfdmZzX3V0aW1lbnNhdF9yZXQsICIiKTsKIFRSQUNFUE9J
TlQodHJhY2VfdmZzX3V0aW1lbnNhdF9lcnIsICIlZCIsIGludCk7CiAKLWV4dGVybiAiQyIKIGlu
dCB1dGltZW5zYXQoaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwgY29uc3Qgc3RydWN0
IHRpbWVzcGVjIHRpbWVzWzJdLCBpbnQgZmxhZ3MpCiB7CiAJdHJhY2VfdmZzX3V0aW1lbnNhdChw
YXRobmFtZSk7CiAKIAlhdXRvIGVycm9yID0gc3lzX3V0aW1lbnNhdChkaXJmZCwgcGF0aG5hbWUs
IHRpbWVzLCBmbGFncyk7CisKIAlpZiAoZXJyb3IpIHsKIAkJdHJhY2VfdmZzX3V0aW1lbnNhdF9l
cnIoZXJyb3IpOwogCQllcnJubyA9IGVycm9yOwpAQCAtMTg3MCwxMiArMTc4NiwxMSBAQCBUUkFD
RVBPSU5UKHRyYWNlX3Zmc19mdXRpbWVucywgIiVkIiwgaW50KTsKIFRSQUNFUE9JTlQodHJhY2Vf
dmZzX2Z1dGltZW5zX3JldCwgIiIpOwogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZnV0aW1lbnNfZXJy
LCAiJWQiLCBpbnQpOwogCi1leHRlcm4gIkMiCiBpbnQgZnV0aW1lbnMoaW50IGZkLCBjb25zdCBz
dHJ1Y3QgdGltZXNwZWMgdGltZXNbMl0pCiB7CiAJdHJhY2VfdmZzX2Z1dGltZW5zKGZkKTsKIAot
CWF1dG8gZXJyb3IgPSBzeXNfZnV0aW1lbnMoZmQsIHRpbWVzKTsKKwlpbnQgZXJyb3IgPSBzeXNf
ZnV0aW1lbnMoZmQsIHRpbWVzKTsKIAlpZiAoZXJyb3IpIHsKIAkJdHJhY2VfdmZzX2Z1dGltZW5z
X2VycihlcnJvcik7CiAJCWVycm5vID0gZXJyb3I7CkBAIC0xOTEwLDE5ICsxODI1LDE2IEBAIHN0
YXRpYyBpbnQgZG9fdXRpbWVzKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBjb25zdCBzdHJ1Y3QgdGlt
ZXZhbCB0aW1lc1syXSwgaW50IGZsCiAJcmV0dXJuIDA7CiB9CiAKLWV4dGVybiAiQyIKIGludCB1
dGltZXMoY29uc3QgY2hhciAqcGF0aG5hbWUsIGNvbnN0IHN0cnVjdCB0aW1ldmFsIHRpbWVzWzJd
KQogewogCXJldHVybiBkb191dGltZXMocGF0aG5hbWUsIHRpbWVzLCAwKTsKIH0KIAotZXh0ZXJu
ICJDIgogaW50IGx1dGltZXMoY29uc3QgY2hhciAqcGF0aG5hbWUsIGNvbnN0IHN0cnVjdCB0aW1l
dmFsIHRpbWVzWzJdKQogewogCXJldHVybiBkb191dGltZXMocGF0aG5hbWUsIHRpbWVzLCBBVF9T
WU1MSU5LX05PRk9MTE9XKTsKIH0KIAotZXh0ZXJuICJDIgogaW50IHV0aW1lKGNvbnN0IGNoYXIg
KnBhdGhuYW1lLCBjb25zdCBzdHJ1Y3QgdXRpbWJ1ZiAqdCkKIHsKIAl1c2luZyBuYW1lc3BhY2Ug
c3RkOjpjaHJvbm87CkBAIC0xOTQxLDYgKzE4NTMsNyBAQCBpbnQgdXRpbWUoY29uc3QgY2hhciAq
cGF0aG5hbWUsIGNvbnN0IHN0cnVjdCB1dGltYnVmICp0KQogCiAJcmV0dXJuIHV0aW1lcyhwYXRo
bmFtZSwgdGltZXMpOwogfQorI2VuZGlmCiAKIFRSQUNFUE9JTlQodHJhY2VfdmZzX2NobW9kLCAi
XCIlc1wiIDAlMG8iLCBjb25zdCBjaGFyKiwgbW9kZV90KTsKIFRSQUNFUE9JTlQodHJhY2VfdmZz
X2NobW9kX3JldCwgIiIpOwpAQCAtMTk3Myw3ICsxODg2LDcgQEAgVFJBQ0VQT0lOVCh0cmFjZV92
ZnNfZmNobW9kX3JldCwgIiIpOwogaW50IGZjaG1vZChpbnQgZmQsIG1vZGVfdCBtb2RlKQogewog
CXRyYWNlX3Zmc19mY2htb2QoZmQsIG1vZGUpOwotCWF1dG8gZXJyb3IgPSBzeXNfZmNobW9kKGZk
LCBtb2RlICYgQUxMUEVSTVMpOworCWludCBlcnJvciA9IHN5c19mY2htb2QoZmQsIG1vZGUgJiBB
TExQRVJNUyk7CiAJdHJhY2VfdmZzX2ZjaG1vZF9yZXQoKTsKIAlpZiAoZXJyb3IpIHsKIAkJZXJy
bm8gPSBlcnJvcjsKQEAgLTIwMDcsNiArMTkyMCw3IEBAIGludCBsY2hvd24oY29uc3QgY2hhciAq
cGF0aCwgdWlkX3Qgb3duZXIsIGdpZF90IGdyb3VwKQogfQogCiAKKyNpZiAwCiBzc2l6ZV90IHNl
bmRmaWxlKGludCBvdXRfZmQsIGludCBpbl9mZCwgb2ZmX3QgKl9vZmZzZXQsIHNpemVfdCBjb3Vu
dCkKIHsKIAlzdHJ1Y3QgZmlsZSAqaW5fZnA7CkBAIC0yMDcwLDcgKzE5ODQsNyBAQCBzc2l6ZV90
IHNlbmRmaWxlKGludCBvdXRfZmQsIGludCBpbl9mZCwgb2ZmX3QgKl9vZmZzZXQsIHNpemVfdCBj
b3VudCkKIAkJcmV0dXJuIC0xOwogCX0KIAotCWF1dG8gcmV0ID0gd3JpdGUob3V0X2ZkLCBzcmMg
KyAob2Zmc2V0ICUgUEFHRVNJWkUpLCBjb3VudCk7CisJaW50IHJldCA9IHdyaXRlKG91dF9mZCwg
c3JjICsgKG9mZnNldCAlIFBBR0VTSVpFKSwgY291bnQpOwogCiAJaWYgKHJldCA8IDApIHsKIAkJ
cmV0dXJuIGxpYmNfZXJyb3IoZXJybm8pOwpAQCAtMjA4NywxMiArMjAwMSwxMyBAQCBzc2l6ZV90
IHNlbmRmaWxlKGludCBvdXRfZmQsIGludCBpbl9mZCwgb2ZmX3QgKl9vZmZzZXQsIHNpemVfdCBj
b3VudCkKIAogI3VuZGVmIHNlbmRmaWxlNjQKIExGUzY0KHNlbmRmaWxlKTsKKyNlbmRpZgogCiBO
T19TWVMoaW50IGZjaG1vZGF0KGludCBkaXJmZCwgY29uc3QgY2hhciAqcGF0aG5hbWUsIG1vZGVf
dCBtb2RlLCBpbnQgZmxhZ3MpKTsKIAogbW9kZV90IHVtYXNrKG1vZGVfdCBuZXdtYXNrKQogewot
CXJldHVybiBnbG9iYWxfdW1hc2suZXhjaGFuZ2UobmV3bWFzaywgc3RkOjptZW1vcnlfb3JkZXJf
cmVsYXhlZCk7CisJcmV0dXJuIHVrYXJjaF9leGNoYW5nZV9uKCZnbG9iYWxfdW1hc2ssIG5ld21h
c2spOwogfQogCiBpbnQKQEAgLTIxMDcsMzAzICsyMDIyLDMgQEAgaW50IGNocm9vdChjb25zdCBj
aGFyICpwYXRoKQogCWVycm5vID0gRU5PU1lTOwogCXJldHVybiAtMTsKIH0KLQotLy8gdW5wYWNr
X2Jvb3RmcygpIHVucGFja3MgYSBjb2xsZWN0aW9uIG9mIGZpbGVzIHN0b3JlZCBhcyBwYXJ0IG9m
IHRoZSBPU3YKLS8vIGV4ZWN1dGFibGUgKGluIG1lbW9yeSBsb2NhdGlvbiAiYm9vdGZzX3N0YXJ0
IikgaW50byB0aGUgZmlsZSBzeXN0ZW0sCi0vLyBub3JtYWxseSB0aGUgaW4tbWVtb3J5IGZpbGVz
eXN0ZW0gcmFtZnMuCi0vLyBUaGUgZmlsZXMgYXJlIHBhY2tlZCBpbiB0aGUgZXhlY3V0YWJsZSBp
biBhbiBhZC1ob2MgZm9ybWF0IGRlZmluZWQgaGVyZS4KLS8vIENvZGUgaW4gc2NyaXB0cy9ta2Jv
b3Rmcy5weSBwYWNrcyBmaWxlcyBpbnRvIHRoaXMgZm9ybWF0LgotI2RlZmluZSBCT09URlNfUEFU
SF9NQVggMTExCi1lbnVtIGNsYXNzIGJvb3Rmc19maWxlX3R5cGUgOiBjaGFyIHsgb3RoZXIgPSAw
LCBzeW1saW5rID0gMSB9Owotc3RydWN0IGJvb3Rmc19tZXRhZGF0YSB7Ci0JdWludDY0X3Qgc2l6
ZTsKLQl1aW50NjRfdCBvZmZzZXQ7Ci0JLy8gVGhlIGZpbGUncyB0eXBlLiBDYW4gYmUgInN5bWxp
bmsiIG9yICJvdGhlciIuIEEgZGlyZWN0b3J5IGlzIGFuICJvdGhlciIKLQkvLyBmaWxlIHdpdGgg
aXRzIG5hbWUgZW5kaW5nIHdpdGggYSAiLyIgKGFuZCBubyBjb250ZW50KS4KLQlib290ZnNfZmls
ZV90eXBlIHR5cGU7Ci0JLy8gbmFtZSBtdXN0IGVuZCB3aXRoIGEgbnVsbC4gRm9yIHN5bWxpbmsg
ZmlsZXMsIHRoZSBjb250ZW50IG11c3QgZW5kCi0JLy8gd2l0aCBhIG51bGwgYXMgd2VsbC4KLQlj
aGFyIG5hbWVbQk9PVEZTX1BBVEhfTUFYXTsKLX07Ci0KLWV4dGVybiBjaGFyIGJvb3Rmc19zdGFy
dDsKLQotaW50IHJhbWZzX3NldF9maWxlX2RhdGEoc3RydWN0IHZub2RlICp2cCwgY29uc3Qgdm9p
ZCAqZGF0YSwgc2l6ZV90IHNpemUpOwotdm9pZCB1bnBhY2tfYm9vdGZzKHZvaWQpCi17Ci0Jc3Ry
dWN0IGJvb3Rmc19tZXRhZGF0YSAqbWQgPSAoc3RydWN0IGJvb3Rmc19tZXRhZGF0YSAqKSZib290
ZnNfc3RhcnQ7Ci0JaW50IGZkLCBpOwotCi0JZm9yIChpID0gMDsgbWRbaV0ubmFtZVswXTsgaSsr
KSB7Ci0JCWludCByZXQ7Ci0JCWNoYXIgKnA7Ci0KLQkJLy8gbWtkaXIoKSBkaXJlY3RvcmllcyBu
ZWVkZWQgZm9yIHRoaXMgcGF0aCBuYW1lLCBhcyBuZWNlc3NhcnkKLQkJY2hhciB0bXBbQk9PVEZT
X1BBVEhfTUFYXTsKLQkJc3RybGNweSh0bXAsIG1kW2ldLm5hbWUsIEJPT1RGU19QQVRIX01BWCk7
Ci0JCWZvciAocCA9IHRtcDsgKnA7ICsrcCkgewotCQkJaWYgKCpwID09ICcvJykgewotCQkJCSpw
ID0gJ1wwJzsKLQkJCQlta2Rpcih0bXAsIDA2NjYpOyAgLy8gc2lsZW50bHkgaWdub3JlIGVycm9y
cyBhbmQgZXhpc3RpbmcgZGlycwotCQkJCSpwID0gJy8nOwotCQkJfQotCQl9Ci0KLQkJaWYgKG1k
W2ldLnR5cGUgPT0gYm9vdGZzX2ZpbGVfdHlwZTo6c3ltbGluaykgewotCQkJLy8gVGhpcyBpcyBh
IHN5bWJvbGljIGxpbmsgcmVjb3JkLiBUaGUgZmlsZSdzIGNvbnRlbnQgaXMgdGhlCi0JCQkvLyB0
YXJnZXQgcGF0aCwgYW5kIHdlIGFzc3VtZSBlbmRzIHdpdGggYSBudWxsLgotCQkJaWYgKHN5bWxp
bmsoJmJvb3Rmc19zdGFydCArIG1kW2ldLm9mZnNldCwgbWRbaV0ubmFtZSkgIT0gMCkgewotCQkJ
CWtwcmludGYoImNvdWxkbid0IHN5bWxpbmsgJXM6ICVkXG4iLCBtZFtpXS5uYW1lLCBlcnJubyk7
Ci0JCQkJc3lzX3BhbmljKCJ1bnBhY2tfYm9vdGZzIGZhaWxlZCIpOwotCQkJfQotCQkJY29udGlu
dWU7Ci0JCX0KLQkJaWYgKCoocC0xKSA9PSAnLycgJiYgbWRbaV0uc2l6ZSA9PSAwKSB7Ci0JCQkv
LyBUaGlzIGlzIGRpcmVjdG9yeSByZWNvcmQuIE5vdGhpbmcgZWxzZSB0byBkbwotCQkJY29udGlu
dWU7Ci0JCX0KLQotCQlmZCA9IGNyZWF0KG1kW2ldLm5hbWUsIDA2NjYpOwotCQlpZiAoZmQgPCAw
KSB7Ci0JCQlrcHJpbnRmKCJjb3VsZG4ndCBjcmVhdGUgJXM6ICVkXG4iLAotCQkJCQltZFtpXS5u
YW1lLCBlcnJubyk7Ci0JCQlzeXNfcGFuaWMoInVucGFja19ib290ZnMgZmFpbGVkIik7Ci0JCX0K
LQotCQlzdHJ1Y3QgZmlsZSAqZnA7Ci0JCWludCBlcnJvciA9IGZnZXQoZmQsICZmcCk7Ci0JCWlm
IChlcnJvcikgewotCQkJa3ByaW50ZigiY291bGRuJ3QgZmdldCAlczogJWRcbiIsCi0JCQkJCW1k
W2ldLm5hbWUsIGVycm9yKTsKLQkJCXN5c19wYW5pYygidW5wYWNrX2Jvb3RmcyBmYWlsZWQiKTsK
LQkJfQotCi0JCXN0cnVjdCB2bm9kZSAqdnAgPSBmcC0+Zl9kZW50cnktPmRfdm5vZGU7Ci0JCXJl
dCA9IHJhbWZzX3NldF9maWxlX2RhdGEodnAsICZib290ZnNfc3RhcnQgKyBtZFtpXS5vZmZzZXQs
IG1kW2ldLnNpemUpOwotCQlpZiAocmV0KSB7Ci0JCQlrcHJpbnRmKCJyYW1mc19zZXRfZmlsZV9k
YXRhIGZhaWxlZCwgcmV0ID0gJWRcbiIsIHJldCk7Ci0JCQlzeXNfcGFuaWMoInVucGFja19ib290
ZnMgZmFpbGVkIik7Ci0JCX0KLQotCQlmZHJvcChmcCk7Ci0JCWNsb3NlKGZkKTsKLQl9Ci19Ci0K
LXZvaWQgbW91bnRfcm9vdGZzKHZvaWQpCi17Ci0JaW50IHJldDsKLQotCXJldCA9IHN5c19tb3Vu
dCgiIiwgIi8iLCAicmFtZnMiLCAwLCBudWxscHRyKTsKLQlpZiAocmV0KQotCQlrcHJpbnRmKCJm
YWlsZWQgdG8gbW91bnQgcm9vdGZzLCBlcnJvciA9ICVzXG4iLCBzdHJlcnJvcihyZXQpKTsKLQot
CWlmIChta2RpcigiL2RldiIsIDA3NTUpIDwgMCkKLQkJa3ByaW50ZigiZmFpbGVkIHRvIGNyZWF0
ZSAvZGV2LCBlcnJvciA9ICVzXG4iLCBzdHJlcnJvcihlcnJubykpOwotCi0JcmV0ID0gc3lzX21v
dW50KCIiLCAiL2RldiIsICJkZXZmcyIsIDAsIG51bGxwdHIpOwotCWlmIChyZXQpCi0JCWtwcmlu
dGYoImZhaWxlZCB0byBtb3VudCBkZXZmcywgZXJyb3IgPSAlc1xuIiwgc3RyZXJyb3IocmV0KSk7
Ci19Ci0KLWV4dGVybiAiQyIKLWludCBubW91bnQoc3RydWN0IGlvdmVjICppb3YsIHVuc2lnbmVk
IG5pb3YsIGludCBmbGFncykKLXsKLQlzdHJ1Y3QgYXJncyB7Ci0JCWNoYXIqIGZzdHlwZSA9IG51
bGxwdHI7Ci0JCWNoYXIqIGZzcGF0aCA9IG51bGxwdHI7Ci0JCWNoYXIqIGZyb20gPSBudWxscHRy
OwotCX07Ci0Jc3RhdGljIHVub3JkZXJlZF9tYXA8c3RyaW5nLCBjaGFyKiBhcmdzOjoqPiBhcmdt
YXAgewotCQl7ICJmc3R5cGUiLCAmYXJnczo6ZnN0eXBlIH0sCi0JCXsgImZzcGF0aCIsICZhcmdz
Ojpmc3BhdGggfSwKLQkJeyAiZnJvbSIsICZhcmdzOjpmcm9tIH0sCi0JfTsKLQlhcmdzIGE7Ci0J
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBuaW92OyBpICs9IDIpIHsKLQkJc3RkOjpzdHJpbmcgcyhz
dGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oaW92W2ldLmlvdl9iYXNlKSk7Ci0JCWlmIChhcmdtYXAu
Y291bnQocykpIHsKLQkJCWEuKihhcmdtYXBbc10pID0gc3RhdGljX2Nhc3Q8Y2hhcio+KGlvdltp
KzFdLmlvdl9iYXNlKTsKLQkJfQotCX0KLQlyZXR1cm4gc3lzX21vdW50KGEuZnJvbSwgYS5mc3Bh
dGgsIGEuZnN0eXBlLCBmbGFncywgbnVsbHB0cik7Ci19Ci0KLXN0YXRpYyB2b2lkIGltcG9ydF9l
eHRyYV96ZnNfcG9vbHModm9pZCkKLXsKLQlzdHJ1Y3Qgc3RhdCBzdDsKLQlpbnQgcmV0OwotCi0J
Ly8gVGhlIGZpbGUgJy9ldGMvbW50dGFiJyBpcyBhIExpYlpGUyByZXF1aXJlbWVudCBhbmQgd2ls
bCBub3QKLQkvLyBleGlzdCBkdXJpbmcgY3Bpb2QgcGhhc2UuIFRoZSBmdW5jdGlvbmFsaXR5IHBy
b3ZpZGVkIGJ5IHRoaXMKLQkvLyBmdW5jdGlvbiBpc24ndCBuZWVkZWQgZHVyaW5nIHRoYXQgcGhh
c2UsIHNvIGxldCdzIHNraXAgaXQuCi0JaWYgKHN0YXQoIi9ldGMvbW50dGFiIiAsICZzdCkgIT0g
MCkgewotCQlyZXR1cm47Ci0JfQotCi0JLy8gSW1wb3J0IGV4dHJhIHBvb2xzIG1vdW50aW5nIGRh
dGFzZXRzIHRoZXJlIGNvbnRhaW5lZC4KLQkvLyBEYXRhc2V0cyBmcm9tIG9zdiBwb29sIHdpbGwg
bm90IGJlIG1vdW50ZWQgaGVyZS4KLQlpZiAoYWNjZXNzKCJ6cG9vbC5zbyIsIFhfT0spICE9IDAp
IHsKLQkJcmV0dXJuOwotCX0KLQl2ZWN0b3I8c3RyaW5nPiB6cG9vbF9hcmdzID0geyJ6cG9vbCIs
ICJpbXBvcnQiLCAiLWYiLCAiLWEiIH07Ci0JYXV0byBvayA9IG9zdjo6cnVuKCJ6cG9vbC5zbyIs
IHpwb29sX2FyZ3MsICZyZXQpOwotCWFzc2VydChvayk7Ci0KLQlpZiAoIXJldCkgewotCQlkZWJ1
ZygiemZzOiBleHRyYSBaRlMgcG9vbChzKSBmb3VuZC5cbiIpOwotCX0KLX0KLQotdm9pZCBwaXZv
dF9yb290ZnMoY29uc3QgY2hhciogcGF0aCkKLXsKLQlpbnQgcmV0ID0gc3lzX3Bpdm90X3Jvb3Qo
cGF0aCwgIi8iKTsKLQlpZiAocmV0KQotCQlrcHJpbnRmKCJmYWlsZWQgdG8gcGl2b3Qgcm9vdCwg
ZXJyb3IgPSAlc1xuIiwgc3RyZXJyb3IocmV0KSk7Ci0KLQlhdXRvIGVudCA9IHNldG1udGVudCgi
L2V0Yy9mc3RhYiIsICJyIik7Ci0JaWYgKCFlbnQpIHsKLQkJcmV0dXJuOwotCX0KLQotCXN0cnVj
dCBtbnRlbnQgKm0gPSBudWxscHRyOwotCXdoaWxlICgobSA9IGdldG1udGVudChlbnQpKSAhPSBu
dWxscHRyKSB7Ci0JCWlmICghc3RyY21wKG0tPm1udF9kaXIsICIvIikpIHsKLQkJCWNvbnRpbnVl
OwotCQl9Ci0KLQkJaWYgKChtLT5tbnRfb3B0cyAhPSBudWxscHRyKSAmJiBzdHJjbXAobS0+bW50
X29wdHMsIE1OVE9QVF9ERUZBVUxUUykpIHsKLQkJCXByaW50ZigiV2FybmluZzogb3B0cyAlcywg
aWdub3JlZCBmb3IgZnMgJXNcbiIsIG0tPm1udF9vcHRzLCBtLT5tbnRfdHlwZSk7Ci0JCX0KLQot
CQkvLyBGSVhNRTogUmlnaHQgbm93LCBpZ25vcmluZyBtbnRvcHMuIEluIHRoZSBmdXR1cmUgd2Ug
bWF5IGhhdmUgYW4gb3B0aW9uIHBhcnNlcgotCQlyZXQgPSBzeXNfbW91bnQobS0+bW50X2ZzbmFt
ZSwgbS0+bW50X2RpciwgbS0+bW50X3R5cGUsIDAsIG51bGxwdHIpOwotCQlpZiAocmV0KSB7Ci0J
CQlwcmludGYoImZhaWxlZCB0byBtb3VudCAlcywgZXJyb3IgPSAlc1xuIiwgbS0+bW50X3R5cGUs
IHN0cmVycm9yKHJldCkpOwotCQl9Ci0JfQotCWVuZG1udGVudChlbnQpOwotfQotCi1leHRlcm4g
IkMiIHZvaWQgdW5tb3VudF9kZXZmcygpCi17Ci0JaW50IHJldCA9IHN5c191bW91bnQoIi9kZXYi
KTsKLQlpZiAocmV0KQotCQlrcHJpbnRmKCJmYWlsZWQgdG8gdW5tb3VudCAvZGV2LCBlcnJvciA9
ICVzXG4iLCBzdHJlcnJvcihyZXQpKTsKLX0KLQotZXh0ZXJuICJDIiBpbnQgbW91bnRfcm9mc19y
b290ZnMoYm9vbCBwaXZvdF9yb290KQotewotCWludCByZXQ7Ci0KLQlpZiAobWtkaXIoIi9yb2Zz
IiwgMDc1NSkgPCAwKQotCQlrcHJpbnRmKCJmYWlsZWQgdG8gY3JlYXRlIC9yb2ZzLCBlcnJvciA9
ICVzXG4iLCBzdHJlcnJvcihlcnJubykpOwotCi0JcmV0ID0gc3lzX21vdW50KCIvZGV2L3ZibGsw
LjEiLCAiL3JvZnMiLCAicm9mcyIsIE1OVF9SRE9OTFksIDApOwotCi0JaWYgKHJldCkgewotCQlr
cHJpbnRmKCJmYWlsZWQgdG8gbW91bnQgL3JvZnMsIGVycm9yID0gJXNcbiIsIHN0cmVycm9yKHJl
dCkpOwotCQlybWRpcigiL3JvZnMiKTsKLQkJcmV0dXJuIHJldDsKLQl9Ci0KLQlpZiAocGl2b3Rf
cm9vdCkgewotCQlwaXZvdF9yb290ZnMoIi9yb2ZzIik7Ci0JfQotCi0JcmV0dXJuIDA7Ci19Ci0K
LWV4dGVybiAiQyIgdm9pZCBtb3VudF96ZnNfcm9vdGZzKGJvb2wgcGl2b3Rfcm9vdCkKLXsKLQlp
ZiAobWtkaXIoIi96ZnMiLCAwNzU1KSA8IDApCi0JCWtwcmludGYoImZhaWxlZCB0byBjcmVhdGUg
L3pmcywgZXJyb3IgPSAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKLQotCWludCByZXQgPSBzeXNf
bW91bnQoIi9kZXYvdmJsazAuMSIsICIvemZzIiwgInpmcyIsIDAsICh2b2lkICopIm9zdi96ZnMi
KTsKLQotCWlmIChyZXQpCi0JCWtwcmludGYoImZhaWxlZCB0byBtb3VudCAvemZzLCBlcnJvciA9
ICVzXG4iLCBzdHJlcnJvcihyZXQpKTsKLQotCWlmICghcGl2b3Rfcm9vdCkgewotCQlyZXR1cm47
Ci0JfQotCi0JcGl2b3Rfcm9vdGZzKCIvemZzIik7Ci0KLQlpbXBvcnRfZXh0cmFfemZzX3Bvb2xz
KCk7Ci19Ci0KLWV4dGVybiAiQyIgdm9pZCB1bm1vdW50X3Jvb3Rmcyh2b2lkKQotewotCWludCBy
ZXQ7Ci0KLQlzeXNfdW1vdW50KCIvZGV2Iik7Ci0KLQlyZXQgPSBzeXNfdW1vdW50KCIvcHJvYyIp
OwotCWlmIChyZXQpIHsKLQkJa3ByaW50ZigiV2FybmluZzogdW5tb3VudF9yb290ZnM6IGZhaWxl
ZCB0byB1bm1vdW50IC9wcm9jLCAiCi0JCQkiZXJyb3IgPSAlc1xuIiwgc3RyZXJyb3IocmV0KSk7
Ci0JfQotCi0JcmV0ID0gc3lzX3Vtb3VudDIoIi8iLCBNTlRfRk9SQ0UpOwotCWlmIChyZXQpIHsK
LQkJa3ByaW50ZigiV2FybmluZzogdW5tb3VudF9yb290ZnM6IGZhaWxlZCB0byB1bm1vdW50IC8s
ICIKLQkJCSJlcnJvciA9ICVzXG4iLCBzdHJlcnJvcihyZXQpKTsKLQl9Ci19Ci0KLWV4dGVybiAi
QyIgdm9pZCBiaW9faW5pdCh2b2lkKTsKLWV4dGVybiAiQyIgdm9pZCBiaW9fc3luYyh2b2lkKTsK
LQotaW50IHZmc19pbml0aWFsaXplZDsKLQotZXh0ZXJuICJDIgotdm9pZAotdmZzX2luaXQodm9p
ZCkKLXsKLQljb25zdCBzdHJ1Y3QgdmZzc3cgKmZzOwotCi0JYmlvX2luaXQoKTsKLQlsb29rdXBf
aW5pdCgpOwotCXZub2RlX2luaXQoKTsKLQl0YXNrX2FsbG9jKCZtYWluX3Rhc2spOwotCi0JLyoK
LQkgKiBJbml0aWFsaXplIGVhY2ggZmlsZSBzeXN0ZW0uCi0JICovCi0JZm9yIChmcyA9IHZmc3N3
OyBmcy0+dnNfbmFtZTsgZnMrKykgewotCQlpZiAoZnMtPnZzX2luaXQpIHsKLQkJCURQUklOVEYo
VkZTREJfQ09SRSwgKCJWRlM6IGluaXRpYWxpemluZyAlc1xuIiwKLQkJCQkJZnMtPnZzX25hbWUp
KTsKLQkJCWZzLT52c19pbml0KCk7Ci0JCX0KLQl9Ci0KLQltb3VudF9yb290ZnMoKTsKLQl1bnBh
Y2tfYm9vdGZzKCk7Ci0KLQkvLwlpZiAob3BlbigiL2Rldi9jb25zb2xlIiwgT19SRFdSLCAwKSAh
PSAwKQotCWlmIChjb25zb2xlOjpvcGVuKCkgIT0gMCkKLQkJa3ByaW50ZigiZmFpbGVkIHRvIG9w
ZW4gY29uc29sZSwgZXJyb3IgPSAlZFxuIiwgZXJybm8pOwotCWlmIChkdXAoMCkgIT0gMSkKLQkJ
a3ByaW50ZigiZmFpbGVkIHRvIGR1cCBjb25zb2xlICgxKVxuIik7Ci0JaWYgKGR1cCgwKSAhPSAy
KQotCQlrcHJpbnRmKCJmYWlsZWQgdG8gZHVwIGNvbnNvbGUgKDIpXG4iKTsKLQl2ZnNfaW5pdGlh
bGl6ZWQgPSAxOwotfQotCi12b2lkIHZmc19leGl0KHZvaWQpCi17Ci0JLyogRnJlZSB1cCBtYWlu
X3Rhc2sgKHN0b3JlcyBjd2QgZGF0YSkgcmVzb3VyY2VzICovCi0JcmVwbGFjZV9jd2QobWFpbl90
YXNrLCBudWxscHRyLCBbXSgpIHsgcmV0dXJuIDA7IH0pOwotCS8qIFVubW91bnQgYWxsIGZpbGUg
c3lzdGVtcyAqLwotCXVubW91bnRfcm9vdGZzKCk7Ci0JLyogRmluaXNoIHdpdGggdGhlIGJpbyBs
YXllciAqLwotCWJpb19zeW5jKCk7Ci19Ci0KLXZvaWQgc3lzX3BhbmljKGNvbnN0IGNoYXIgKnN0
cikKLXsKLQlhYm9ydCgicGFuaWM6ICVzIiwgc3RyKTsKLX0KLQpkaWZmIC0tZ2l0IGEvbGliL3Zm
c2NvcmUvbW91bnQuYyBiL2xpYi92ZnNjb3JlL21vdW50LmMKaW5kZXggNzZlMmU3MGMuLjEwYzI3
ZmFkIDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9tb3VudC5jCisrKyBiL2xpYi92ZnNjb3JlL21v
dW50LmMKQEAgLTgzLDE3ICs4Myw2IEBAIGZzX2dldGZzKGNvbnN0IGNoYXIgKm5hbWUpCiAJcmV0
dXJuIGZzOwogfQogCi1jb25zdCBjaGFyKgotZnNfZ2V0ZnNuYW1lKHZmc29wcyogb3BzKQotewot
CWZvciAoYXV0byBmcyA9IHZmc3N3OyBmcy0+dnNfbmFtZTsgZnMrKykgewotCQlpZiAoZnMtPnZz
X29wID09IG9wcykgewotCQkJcmV0dXJuIGZzLT52c19uYW1lOwotCQl9Ci0JfQotCWFib3J0KCk7
Ci19Ci0KIGludAogc3lzX21vdW50KGNvbnN0IGNoYXIgKmRldiwgY29uc3QgY2hhciAqZGlyLCBj
b25zdCBjaGFyICpmc25hbWUsIGludCBmbGFncywgY29uc3Qgdm9pZCAqZGF0YSkKIHsKQEAgLTE0
MSw3ICsxMzAsOCBAQCBzeXNfbW91bnQoY29uc3QgY2hhciAqZGV2LCBjb25zdCBjaGFyICpkaXIs
IGNvbnN0IGNoYXIgKmZzbmFtZSwgaW50IGZsYWdzLCBjb25zdAogCS8qCiAJICogQ3JlYXRlIFZG
UyBtb3VudCBlbnRyeS4KIAkgKi8KLQlpZiAoIShtcCA9IG5ldyBtb3VudCkpIHsKKwltcCA9IG1h
bGxvYyhzaXplb2Yoc3RydWN0IG1vdW50KSk7CisJaWYgKCFtcCkgewogCQllcnJvciA9IEVOT01F
TTsKIAkJZ290byBlcnIxOwogCX0KQEAgLTIxNCw3ICsyMDQsNyBAQCBzeXNfbW91bnQoY29uc3Qg
Y2hhciAqZGV2LCBjb25zdCBjaGFyICpkaXIsIGNvbnN0IGNoYXIgKmZzbmFtZSwgaW50IGZsYWdz
LCBjb25zdAogCWlmIChkcF9jb3ZlcmVkKQogCQlkcmVsZShkcF9jb3ZlcmVkKTsKICBlcnIyOgot
CWRlbGV0ZSBtcDsKKwlmcmVlKG1wKTsKICBlcnIxOgogCWlmIChkZXZpY2UpCiAJCWRldmljZV9j
bG9zZShkZXZpY2UpOwpAQCAtMjgxLDcgKzI3MSw3IEBAIGZvdW5kOgogCiAJaWYgKG1wLT5tX2Rl
dikKIAkJZGV2aWNlX2Nsb3NlKG1wLT5tX2Rldik7Ci0JZGVsZXRlIG1wOworCWZyZWUobXApOwog
IG91dDoKIAlyZXR1cm4gZXJyb3I7CiB9CkBAIC0yOTIsNiArMjgyLDcgQEAgc3lzX3Vtb3VudChj
b25zdCBjaGFyICpwYXRoKQogCXJldHVybiBzeXNfdW1vdW50MihwYXRoLCAwKTsKIH0KIAorI2lm
IDAKIGludAogc3lzX3Bpdm90X3Jvb3QoY29uc3QgY2hhciAqbmV3X3Jvb3QsIGNvbnN0IGNoYXIg
KnB1dF9vbGQpCiB7CkBAIC0zMzksNiArMzMwLDcgQEAgc3lzX3Bpdm90X3Jvb3QoY29uc3QgY2hh
ciAqbmV3X3Jvb3QsIGNvbnN0IGNoYXIgKnB1dF9vbGQpCiAJfQogCXJldHVybiAwOwogfQorI2Vu
ZGlmCiAKIGludAogc3lzX3N5bmModm9pZCkKQEAgLTQ1MCwzMyArNDQyLDYgQEAgdmZzX2VpbnZh
bCh2b2lkKQogCXJldHVybiBFSU5WQUw7CiB9CiAKLW5hbWVzcGFjZSBvc3YgewotCi1tb3VudF9k
ZXNjIHRvX21vdW50X2Rlc2MobW91bnQqIG0pCi17Ci0JbW91bnRfZGVzYyByZXQ7Ci0JcmV0LnNw
ZWNpYWwgPSBtLT5tX3NwZWNpYWw7Ci0JcmV0LnBhdGggPSBtLT5tX3BhdGg7Ci0JcmV0LnR5cGUg
PSBmc19nZXRmc25hbWUobS0+bV9vcCk7Ci0JLy8gRklYTUU6IHJlY29yZCBvcHRpb25zCi0JcmV0
Lm9wdGlvbnMgPSAiIjsKLQlyZXR1cm4gcmV0OwotfQotCi1zdGQ6OnZlY3Rvcjxtb3VudF9kZXNj
PgotY3VycmVudF9tb3VudHMoKQotewotCVdJVEhfTE9DSyhtb3VudF9sb2NrKSB7Ci0JCXN0ZDo6
dmVjdG9yPG1vdW50X2Rlc2M+IHJldDsKLQkJZm9yIChhdXRvJiYgbXAgOiBtb3VudF9saXN0KSB7
Ci0JCQlyZXQucHVzaF9iYWNrKHRvX21vdW50X2Rlc2MobXApKTsKLQkJfQotCQlyZXR1cm4gcmV0
OwotCX0KLX0KLQotfQotCiAjaWZkZWYgREVCVUdfVkZTCiB2b2lkCiBtb3VudF9kdW1wKHZvaWQp
CmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9zeXNjYWxscy5jIGIvbGliL3Zmc2NvcmUvc3lzY2Fs
bHMuYwppbmRleCAyOWIxNDIyMC4uNGU1NTMzN2YgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL3N5
c2NhbGxzLmMKKysrIGIvbGliL3Zmc2NvcmUvc3lzY2FsbHMuYwpAQCAtMTk1LDE3ICsxOTUsMTcg
QEAgc3lzX29wZW4oY2hhciAqcGF0aCwgaW50IGZsYWdzLCBtb2RlX3QgbW9kZSwgc3RydWN0IGZp
bGUgKipmcHApCiAJCQlnb3RvIG91dF92bl91bmxvY2s7CiAJfQogCi0JdHJ5IHsKLQkgICAgZmls
ZXJlZiBmID0gbWFrZV9maWxlPHZmc19maWxlPihmbGFncyk7Ci0JICAgIGZwID0gZi5nZXQoKTsK
LQkgICAgZmhvbGQoZnApOwotCX0gY2F0Y2ggKGludCBlcnIpIHsKLQkgICAgZXJyb3IgPSBlcnI7
CisJZnAgPSBjYWxsb2Moc2l6ZW9mKHN0cnVjdCB2ZnNjb3JlX2ZpbGUpLCAxKTsKKwlmaG9sZChm
cCk7CisJaWYgKCFmcCkgeworCSAgICBlcnJvciA9IEVOT01FTTsKIAkgICAgZ290byBvdXRfdm5f
dW5sb2NrOwogCX0KKwlmcC0+Zl9mbGFncyA9IGZsYWdzOworCiAJLy8gY2hhbmdlIHRvIHN0ZDo6
bW92ZSBvbmNlIGRwIGlzIGEgZGVudHJ5X3JlZgotCWZwLT5mX2RlbnRyeSA9IGRlbnRyeV9yZWYo
ZHAsIGZhbHNlKTsKLQlkcCA9IG51bGxwdHI7CisJZnAtPmZfZGVudHJ5ID0gZHA7CisJZHAgPSBO
VUxMOwogCiAJZXJyb3IgPSBWT1BfT1BFTih2cCwgZnApOwogCWlmIChlcnJvcikgewpAQCAtMjEz
LDcgKzIxMyw3IEBAIHN5c19vcGVuKGNoYXIgKnBhdGgsIGludCBmbGFncywgbW9kZV90IG1vZGUs
IHN0cnVjdCBmaWxlICoqZnBwKQogCQkvLyBOb3RlIGRpcmVjdCBkZWxldGUgb2YgZnAgaW5zdGVh
ZCBvZiBmZHJvcChmcCkuIGZwIHdhcyBuZXZlcgogCQkvLyByZXR1cm5lZCBzbyBjYW5ub3QgYmUg
aW4gdXNlLCBhbmQgYmVjYXVzZSBpdCB3YXNuJ3Qgb3BlbmVkCiAJCS8vIGl0IGNhbm5vdCBiZSBj
bG9zZSgpZWQuCi0JCWRlbGV0ZSBmcDsKKwkJZnJlZShmcCk7CiAJCXJldHVybiBlcnJvcjsKIAl9
CiAJdm5fdW5sb2NrKHZwKTsKQEAgLTI0MSwxMSArMjQxLDE0IEBAIGludAogc3lzX3JlYWQoc3Ry
dWN0IGZpbGUgKmZwLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlvdiwgc2l6ZV90IG5pb3YsCiAJCW9m
Zl90IG9mZnNldCwgc2l6ZV90ICpjb3VudCkKIHsKKwlpbnQgZXJyb3IgPSAwOworCXN0cnVjdCBp
b3ZlYyAqY29weV9pb3Y7CiAJaWYgKChmcC0+Zl9mbGFncyAmIEZSRUFEKSA9PSAwKQogCQlyZXR1
cm4gRUJBREY7CiAKIAlzaXplX3QgYnl0ZXMgPSAwOwotCWF1dG8gaW92cCA9IGlvdjsKKwljb25z
dCBzdHJ1Y3QgaW92ZWMgKmlvdnAgPSBpb3Y7CisKIAlmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bmlvdjsgaSsrKSB7CiAJCWlmIChpb3ZwLT5pb3ZfbGVuID4gSU9TSVpFX01BWCAtIGJ5dGVzKSB7
CiAJCQlyZXR1cm4gRUlOVkFMOwpAQCAtMjYwLDE2ICsyNjMsMjcgQEAgc3lzX3JlYWQoc3RydWN0
IGZpbGUgKmZwLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlvdiwgc2l6ZV90IG5pb3YsCiAJfQogCiAJ
c3RydWN0IHVpbyB1aW87Ci0JLy8gVW5mb3J0dW5hdGVseSwgdGhlIGN1cnJlbnQgaW1wbGVtZW50
YXRpb24gb2YgZnAtPnJlYWQgemVyb3MgdGhlCi0JLy8gaW92X2xlbiBmaWVsZHMgd2hlbiBpdCBy
ZWFkcyBmcm9tIGRpc2ssIHNvIHdlIGhhdmUgdG8gY29weSBpb3YuCi0Jc3RkOjp2ZWN0b3I8aW92
ZWM+IGNvcHlfaW92KGlvdiwgaW92ICsgbmlvdik7Ci0JdWlvLnVpb19pb3YgPSBjb3B5X2lvdi5k
YXRhKCk7CisJLyogVE9ETzogaXMgaXQgbmVjZXNzYXJ5IHRvIGNvcHkgaW92IHdpdGhpbiBVbmlr
cmFmdD8KKwkgKiBPU3YgZGlkIHRoaXMsIG1lbnRpb25pbmcgdGhpcyByZWFzb246CisJICoKKwkg
KiAiVW5mb3J0dW5hdGVseSwgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb2YgZnAtPnJlYWQK
KwkgKiAgemVyb3MgdGhlIGlvdl9sZW4gZmllbGRzIHdoZW4gaXQgcmVhZHMgZnJvbSBkaXNrLCBz
byB3ZQorCSAqICBoYXZlIHRvIGNvcHkgaW92LiAiCisJICovCisJY29weV9pb3YgPSBjYWxsb2Mo
c2l6ZW9mKHN0cnVjdCBpb3ZlYyksIG5pb3YpOworCWlmICghY29weV9pb3YpCisJCXJldHVybiBF
Tk9NRU07CisJbWVtY3B5KGNvcHlfaW92LCBpb3YsIHNpemVvZihzdHJ1Y3QgaW92ZWMpKm5pb3Yp
OworCisJdWlvLnVpb19pb3YgPSBjb3B5X2lvdjsKIAl1aW8udWlvX2lvdmNudCA9IG5pb3Y7CiAJ
dWlvLnVpb19vZmZzZXQgPSBvZmZzZXQ7CiAJdWlvLnVpb19yZXNpZCA9IGJ5dGVzOwogCXVpby51
aW9fcncgPSBVSU9fUkVBRDsKLQlhdXRvIGVycm9yID0gZnAtPnJlYWQoJnVpbywgKG9mZnNldCA9
PSAtMSkgPyAwIDogRk9GX09GRlNFVCk7CisJZXJyb3IgPSB2ZnNfcmVhZChmcCwgJnVpbywgKG9m
ZnNldCA9PSAtMSkgPyAwIDogRk9GX09GRlNFVCk7CiAJKmNvdW50ID0gYnl0ZXMgLSB1aW8udWlv
X3Jlc2lkOworCisJZnJlZShjb3B5X2lvdik7CiAJcmV0dXJuIGVycm9yOwogfQogCkBAIC0yNzcs
MTEgKzI5MSwxMyBAQCBpbnQKIHN5c193cml0ZShzdHJ1Y3QgZmlsZSAqZnAsIGNvbnN0IHN0cnVj
dCBpb3ZlYyAqaW92LCBzaXplX3QgbmlvdiwKIAkJb2ZmX3Qgb2Zmc2V0LCBzaXplX3QgKmNvdW50
KQogeworCXN0cnVjdCBpb3ZlYyAqY29weV9pb3Y7CisJaW50IGVycm9yID0gMDsKIAlpZiAoKGZw
LT5mX2ZsYWdzICYgRldSSVRFKSA9PSAwKQogCQlyZXR1cm4gRUJBREY7CiAKIAlzaXplX3QgYnl0
ZXMgPSAwOwotCWF1dG8gaW92cCA9IGlvdjsKKwljb25zdCBzdHJ1Y3QgaW92ZWMgKmlvdnAgPSBp
b3Y7CiAJZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG5pb3Y7IGkrKykgewogCQlpZiAoaW92cC0+
aW92X2xlbiA+IElPU0laRV9NQVggLSBieXRlcykgewogCQkJcmV0dXJuIEVJTlZBTDsKQEAgLTI5
NiwxNSArMzEyLDI0IEBAIHN5c193cml0ZShzdHJ1Y3QgZmlsZSAqZnAsIGNvbnN0IHN0cnVjdCBp
b3ZlYyAqaW92LCBzaXplX3QgbmlvdiwKIAl9CiAKIAlzdHJ1Y3QgdWlvIHVpbzsKLQkvLyBVbmZv
cnR1bmF0ZWx5LCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvZiBmcC0+d3JpdGUgemVyb3Mg
dGhlCi0JLy8gaW92X2xlbiBmaWVsZHMgd2hlbiBpdCB3cml0ZXMgdG8gZGlzaywgc28gd2UgaGF2
ZSB0byBjb3B5IGlvdi4KLQlzdGQ6OnZlY3Rvcjxpb3ZlYz4gY29weV9pb3YoaW92LCBpb3YgKyBu
aW92KTsKLQl1aW8udWlvX2lvdiA9IGNvcHlfaW92LmRhdGEoKTsKKworCS8qIFRPRE86IHNhbWUg
bm90ZSBhcyBpbiBzeXNfcmVhZC4gT3JpZ2luYWwgY29tbWVudDoKKwkgKgorCSAqICJVbmZvcnR1
bmF0ZWx5LCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvZiBmcC0+d3JpdGUgemVyb3MgdGhl
CisJICogIGlvdl9sZW4gZmllbGRzIHdoZW4gaXQgd3JpdGVzIHRvIGRpc2ssIHNvIHdlIGhhdmUg
dG8gY29weSBpb3YuCisJICovCisJLyogc3RkOjp2ZWN0b3I8aW92ZWM+IGNvcHlfaW92KGlvdiwg
aW92ICsgbmlvdik7ICovCisJY29weV9pb3YgPSBjYWxsb2Moc2l6ZW9mKHN0cnVjdCBpb3ZlYyks
IG5pb3YpOworCWlmICghY29weV9pb3YpCisJCXJldHVybiBFTk9NRU07CisJbWVtY3B5KGNvcHlf
aW92LCBpb3YsIHNpemVvZihzdHJ1Y3QgaW92ZWMpKm5pb3YpOworCisJdWlvLnVpb19pb3YgPSBj
b3B5X2lvdjsKIAl1aW8udWlvX2lvdmNudCA9IG5pb3Y7CiAJdWlvLnVpb19vZmZzZXQgPSBvZmZz
ZXQ7CiAJdWlvLnVpb19yZXNpZCA9IGJ5dGVzOwogCXVpby51aW9fcncgPSBVSU9fV1JJVEU7Ci0J
YXV0byBlcnJvciA9IGZwLT53cml0ZSgmdWlvLCAob2Zmc2V0ID09IC0xKSA/IDAgOiBGT0ZfT0ZG
U0VUKTsKKwl2ZnNfd3JpdGUoZnAsICZ1aW8sIChvZmZzZXQgPT0gLTEpID8gMCA6IEZPRl9PRkZT
RVQpOwogCSpjb3VudCA9IGJ5dGVzIC0gdWlvLnVpb19yZXNpZDsKIAlyZXR1cm4gZXJyb3I7CiB9
CkBAIC0zNTUsNyArMzgwLDcgQEAgc3lzX2lvY3RsKHN0cnVjdCBmaWxlICpmcCwgdV9sb25nIHJl
cXVlc3QsIHZvaWQgKmJ1ZikKIAlpZiAoKGZwLT5mX2ZsYWdzICYgKEZSRUFEIHwgRldSSVRFKSkg
PT0gMCkKIAkJcmV0dXJuIEVCQURGOwogCi0JZXJyb3IgPSBmcC0+aW9jdGwocmVxdWVzdCwgYnVm
KTsKKwllcnJvciA9IHZmc19pb2N0bChmcCwgcmVxdWVzdCwgYnVmKTsKIAogCURQUklOVEYoVkZT
REJfU1lTQ0FMTCwgKCJzeXNfaW9jdGw6IGNvbXAgZXJyb3I9JWRcbiIsIGVycm9yKSk7CiAJcmV0
dXJuIGVycm9yOwpAQCAtMzg2LDcgKzQxMSw3IEBAIHN5c19mc3RhdChzdHJ1Y3QgZmlsZSAqZnAs
IHN0cnVjdCBzdGF0ICpzdCkKIAogCURQUklOVEYoVkZTREJfU1lTQ0FMTCwgKCJzeXNfZnN0YXQ6
IGZwPSV4XG4iLCBmcCkpOwogCi0JZXJyb3IgPSBmcC0+c3RhdChzdCk7CisJZXJyb3IgPSB2ZnNf
c3RhdChmcCwgc3QpOwogCiAJcmV0dXJuIGVycm9yOwogfQpAQCAtODE1LDEwICs4NDAsOCBAQCBz
eXNfc3ltbGluayhjb25zdCBjaGFyICpvbGRwYXRoLCBjb25zdCBjaGFyICpuZXdwYXRoKQogewog
CXN0cnVjdCB0YXNrCSp0ID0gbWFpbl90YXNrOwogCWludAkJZXJyb3I7Ci0Jc3RkOjp1bmlxdWVf
cHRyPGNoYXIgW10+IHVwX29wIChuZXcgY2hhcltQQVRIX01BWF0pOwotCWNoYXIJCSpvcCA9IHVw
X29wLmdldCgpOwotCXN0ZDo6dW5pcXVlX3B0cjxjaGFyIFtdPiB1cF9ucCAobmV3IGNoYXJbUEFU
SF9NQVhdKTsKLQljaGFyCQkqbnAgPSB1cF9ucC5nZXQoKTsKKwljaGFyCQlvcFtQQVRIX01BWF07
CisJY2hhcgkJbnBbUEFUSF9NQVhdOwogCXN0cnVjdCBkZW50cnkJKm5ld2RwOwogCXN0cnVjdCBk
ZW50cnkJKm5ld2RpcmRwOwogCWNoYXIJCSpuYW1lOwpAQCAtMTAzMiwxNyArMTA1NSwxNyBAQCBz
eXNfYWNjZXNzKGNoYXIgKnBhdGgsIGludCBtb2RlKQogaW50CiBzeXNfc3RhdChjaGFyICpwYXRo
LCBzdHJ1Y3Qgc3RhdCAqc3QpCiB7CisJc3RydWN0IGRlbnRyeSAqZHA7CisJaW50IGVycm9yOwor
CiAJRFBSSU5URihWRlNEQl9TWVNDQUxMLCAoInN5c19zdGF0OiBwYXRoPSVzXG4iLCBwYXRoKSk7
CiAKLQl0cnkgewotCQlkZW50cnlfcmVmIGRwID0gbmFtZWkocGF0aCk7Ci0JCWlmICghZHApIHsK
LQkJCXJldHVybiBFTk9FTlQ7Ci0JCX0KLQkJcmV0dXJuIHZuX3N0YXQoZHAtPmRfdm5vZGUsIHN0
KTsKLQl9IGNhdGNoIChlcnJvciBlKSB7Ci0JCXJldHVybiBlLmdldCgpOwotCX0KKwllcnJvciA9
IG5hbWVpKHBhdGgsICZkcCk7CisJaWYgKGVycm9yKQorCQlyZXR1cm4gZXJyb3I7CisJZXJyb3Ig
PSB2bl9zdGF0KGRwLT5kX3Zub2RlLCBzdCk7CisJZHJlbGUoZHApOworCXJldHVybiBlcnJvcjsK
IH0KIAogaW50IHN5c19sc3RhdChjaGFyICpwYXRoLCBzdHJ1Y3Qgc3RhdCAqc3QpCkBAIC0xMDc0
LDE2ICsxMDk3LDE5IEBAIGludCBzeXNfbHN0YXQoY2hhciAqcGF0aCwgc3RydWN0IHN0YXQgKnN0
KQogaW50CiBzeXNfc3RhdGZzKGNoYXIgKnBhdGgsIHN0cnVjdCBzdGF0ZnMgKmJ1ZikKIHsKKwlz
dHJ1Y3QgZGVudHJ5ICpkcDsKKwlpbnQgZXJyb3I7CisKIAltZW1zZXQoYnVmLCAwLCBzaXplb2Yo
KmJ1ZikpOwotCXRyeSB7Ci0JCWRlbnRyeV9yZWYgZHAgPSBuYW1laShwYXRoKTsKLQkJaWYgKCFk
cCkgewotCQkJcmV0dXJuIEVOT0VOVDsKLQkJfQotCQlyZXR1cm4gVkZTX1NUQVRGUyhkcC0+ZF9t
b3VudCwgYnVmKTsKLQl9IGNhdGNoIChlcnJvciBlKSB7Ci0JCXJldHVybiBlLmdldCgpOwotCX0K
KworCWVycm9yID0gbmFtZWkocGF0aCwgJmRwKTsKKwlpZiAoZXJyb3IpCisJCXJldHVybiBlcnJv
cjsKKworCWVycm9yID0gVkZTX1NUQVRGUyhkcC0+ZF9tb3VudCwgYnVmKTsKKwlkcmVsZShkcCk7
CisKKwlyZXR1cm4gZXJyb3I7CiB9CiAKIGludApAQCAtMTIxMiw2ICsxMjM4LDcgQEAgc3lzX3Jl
YWRsaW5rKGNoYXIgKnBhdGgsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnNpemUsIHNzaXplX3QgKnNp
emUpCiAJcmV0dXJuICgwKTsKIH0KIAorI2lmIDAKIC8qCiAgKiBDaGVjayB0aGUgdmFsaWRpdHkg
b2YgdGhlIG1lbWJlcnMgb2YgYSBzdHJ1Y3QgdGltZXZhbC4KICAqLwpAQCAtMTM5Niw2ICsxNDIz
LDcgQEAgc3lzX2Z1dGltZW5zKGludCBmZCwgY29uc3Qgc3RydWN0IHRpbWVzcGVjIHRpbWVzWzJd
KQogCWF1dG8gZXJyb3IgPSBzeXNfdXRpbWVuc2F0KEFUX0ZEQ1dELCBwYXRobmFtZS5jX3N0cigp
LCB0aW1lcywgMCk7CiAJcmV0dXJuIGVycm9yOwogfQorI2VuZGlmCiAKIGludAogc3lzX2ZhbGxv
Y2F0ZShzdHJ1Y3QgZmlsZSAqZnAsIGludCBtb2RlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVu
KQpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvdGFzay5jIGIvbGliL3Zmc2NvcmUvdGFzay5jCmlu
ZGV4IDJkMzRmMGRmLi40Y2ViMTIzYiAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvdGFzay5jCisr
KyBiL2xpYi92ZnNjb3JlL3Rhc2suYwpAQCAtNDQsMjMgKzQ0LDYgQEAKICNpbmNsdWRlIDxvc3Yv
cHJleC5oPgogI2luY2x1ZGUgInZmcy5oIgogCi0vKgotICogQWxsb2NhdGUgbmV3IHRhc2suCi0g
Ki8KLWludAotdGFza19hbGxvYyhzdHJ1Y3QgdGFzayAqKnB0KQotewotCXN0cnVjdCB0YXNrICp0
OwotCi0JLy8gRklYTUU6IHdoZXJlIGRvIHdlIGZyZWUgdGFzayA/Ci0JaWYgKCEodCA9IG5ldyB0
YXNrKSkKLQkJcmV0dXJuIEVOT01FTTsKLQltZW1zZXQodCwgMCwgc2l6ZW9mKHN0cnVjdCB0YXNr
KSk7Ci0Jc3RybGNweSh0LT50X2N3ZCwgIi8iLCBzaXplb2YodC0+dF9jd2QpKTsKLQotCSpwdCA9
IHQ7Ci0JcmV0dXJuIDA7Ci19CiAKIC8qCiAgKiBDb252ZXJ0IHRvIGZ1bGwgcGF0aCBmcm9tIHRo
ZSBjd2Qgb2YgdGFzayBhbmQgcGF0aC4KZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3Zmcy5oIGIv
bGliL3Zmc2NvcmUvdmZzLmgKaW5kZXggYzEzMDUxN2QuLmNkOTQwOTc5IDEwMDY0NAotLS0gYS9s
aWIvdmZzY29yZS92ZnMuaAorKysgYi9saWIvdmZzY29yZS92ZnMuaApAQCAtODksNyArODksNiBA
QCBzdHJ1Y3QgdGFzayB7CiAKIGV4dGVybiBjb25zdCBzdHJ1Y3QgdmZzc3cgdmZzc3dbXTsKIAot
X19CRUdJTl9ERUNMUwogaW50CSBzeXNfb3BlbihjaGFyICpwYXRoLCBpbnQgZmxhZ3MsIG1vZGVf
dCBtb2RlLCBzdHJ1Y3QgZmlsZSAqKmZwKTsKIGludAkgc3lzX3JlYWQoc3RydWN0IGZpbGUgKmZw
LCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlvdiwgc2l6ZV90IG5pb3YsCiAJCW9mZl90IG9mZnNldCwg
c2l6ZV90ICpjb3VudCk7CkBAIC0xNjcsMjYgKzE2Niw0IEBAIHZvaWQJIHZub2RlX2R1bXAodm9p
ZCk7CiB2b2lkCSBtb3VudF9kdW1wKHZvaWQpOwogI2VuZGlmCiAKLV9fRU5EX0RFQ0xTCi0KLSNp
ZmRlZiBfX2NwbHVzcGx1cwotCi0vLyBDb252ZXJ0IGEgcGF0aCB0byBhIGRlbnRyeV9yZWYuICBS
ZXR1cm5zIGFuIGVtcHR5Ci0vLyByZWZlcmVuY2UgaWYgbm90IGZvdW5kIChFTk9FTlQpIGZvciBl
ZmZpY2llbmN5LCB0aHJvd3MKLS8vIGFuIGVycm9yIG9uIG90aGVyIGVycm9ycy4KLWlubGluZSBk
ZW50cnlfcmVmIG5hbWVpKGNoYXIqIHBhdGgpCi17Ci0JZGVudHJ5KiBkcDsKLQlhdXRvIGVyciA9
IG5hbWVpKHBhdGgsICZkcCk7Ci0JaWYgKGVyciA9PSBFTk9FTlQpIHsKLQkJcmV0dXJuIGRlbnRy
eV9yZWYoKTsKLQl9IGVsc2UgaWYgKGVycikgewotCQl0aHJvdyBtYWtlX2Vycm9yKGVycik7Ci0J
fSBlbHNlIHsKLQkJcmV0dXJuIGRlbnRyeV9yZWYoZHAsIGZhbHNlKTsKLQl9Ci19Ci0KLSNlbmRp
ZgotCiAjZW5kaWYgLyogIV9WRlNfSCAqLwpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvdm5vZGUu
YyBiL2xpYi92ZnNjb3JlL3Zub2RlLmMKaW5kZXggMzQxMmM2ZmIuLmY1NjQ1NzdmIDEwMDY0NAot
LS0gYS9saWIvdmZzY29yZS92bm9kZS5jCisrKyBiL2xpYi92ZnNjb3JlL3Zub2RlLmMKQEAgLTE4
Nyw3ICsxODcsOCBAQCB2Z2V0KHN0cnVjdCBtb3VudCAqbXAsIHVpbnQ2NF90IGlubywgc3RydWN0
IHZub2RlICoqdnBwKQogCQlyZXR1cm4gMTsKIAl9CiAKLQlpZiAoISh2cCA9IG5ldyB2bm9kZSgp
KSkgeworCXZwID0gbWFsbG9jKHNpemVvZigqdnApKTsKKwlpZiAoIXZwKSB7CiAJCVZOT0RFX1VO
TE9DSygpOwogCQlyZXR1cm4gMDsKIAl9Ci0tIAoyLjE5LjIKCgoKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApN
aW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0
Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Feb 04 14:39:43 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 04 Feb 2019 14:39:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gqfPT-0006Wu-DD; Mon, 04 Feb 2019 14:39:43 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Kl24=QL=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gqfPR-0006WZ-Ol
 for minios-devel@lists.xen.org; Mon, 04 Feb 2019 14:39:41 +0000
X-Inumbo-ID: b390b62a-288a-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id b390b62a-288a-11e9-bc90-bc764e045a96;
 Mon, 04 Feb 2019 14:39:40 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 37B9D104D6A;
 Mon,  4 Feb 2019 15:39:39 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id eO6jguLXODxk; Mon,  4 Feb 2019 15:39:39 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 1769F104D63
 for <minios-devel@lists.xen.org>; Mon,  4 Feb 2019 15:39:37 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 4 Feb 2019 15:39:36 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>, <Simon.kuenzer@neclab.eu>,
 <sharan.santhanam@neclab.eu>
Date: Mon, 4 Feb 2019 15:37:26 +0100
Message-ID: <20190204143739.29249-35-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 10/23] lib/vfscore: add utility
 funcs&defs to support imported
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2ZpbGUuaCAgfCAgMiArKwogbGliL3Zmc2Nv
cmUvaW5jbHVkZS92ZnNjb3JlL2ZzLmggICAgfCAyOCArKysrKysrKysrKysrKysrKysrKysrKysK
IGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5oIHwgMjEgKysrKysrKysrKysrKysr
KysrCiBsaWIvdmZzY29yZS9tYWluLmMgICAgICAgICAgICAgICAgICB8IDMzICsrKysrKysrKysr
KysrKysrKysrKysrKysrKysrCiBsaWIvdmZzY29yZS9tb3VudC5jICAgICAgICAgICAgICAgICB8
IDE3ICsrKysrKysrKysrKysrKwogbGliL3Zmc2NvcmUvdmZzLmggICAgICAgICAgICAgICAgICAg
fCAgOSArKysrKysrKwogbGliL3Zmc2NvcmUvdm5vZGUuYyAgICAgICAgICAgICAgICAgfCAgMiAr
KwogNyBmaWxlcyBjaGFuZ2VkLCAxMTIgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0
IGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9mcy5oCgpkaWZmIC0tZ2l0IGEvbGliL3Zmc2Nv
cmUvaW5jbHVkZS92ZnNjb3JlL2ZpbGUuaCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9m
aWxlLmgKaW5kZXggNzM4NzI2NWQuLjY4YmJmOTJjIDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9p
bmNsdWRlL3Zmc2NvcmUvZmlsZS5oCisrKyBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9m
aWxlLmgKQEAgLTYyLDYgKzYyLDggQEAgdm9pZCB2ZnNjb3JlX3B1dF9mZChpbnQgZmQpOwogdm9p
ZCB2ZnNjb3JlX2luc3RhbGxfZmQoaW50IGZkLCBzdHJ1Y3QgdmZzY29yZV9maWxlICpmaWxlKTsK
IHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKnZmc2NvcmVfZ2V0X2ZpbGUoaW50IGZkKTsKIAorI2RlZmlu
ZSBGT0ZfT0ZGU0VUICAweDA4MDAgICAgLyogVXNlIHRoZSBvZmZzZXQgaW4gdWlvIGFyZ3VtZW50
ICovCisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9saWIvdmZz
Y29yZS9pbmNsdWRlL3Zmc2NvcmUvZnMuaCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9m
cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi4xYmI0ZTI0ZAotLS0gL2Rl
di9udWxsCisrKyBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9mcy5oCkBAIC0wLDAgKzEs
MjggQEAKKyNpZm5kZWYgX1ZGU0NPUkVfRlNfSF8KKyNkZWZpbmUgX1ZGU0NPUkVfRlNfSF8KKwor
I2luY2x1ZGUgPGZjbnRsLmg+CisvKgorICogS2VybmVsIGVuY29kaW5nIG9mIG9wZW4gbW9kZTsg
c2VwYXJhdGUgcmVhZCBhbmQgd3JpdGUgYml0cyB0aGF0IGFyZQorICogaW5kZXBlbmRlbnRseSB0
ZXN0YWJsZTogMSBncmVhdGVyIHRoYW4gdGhlIGFib3ZlLgorICovCisjZGVmaW5lIEZSRUFEICAg
ICAgICAgICAweDAwMDAwMDAxCisjZGVmaW5lIEZXUklURSAgICAgICAgICAweDAwMDAwMDAyCisK
KyNkZWZpbmUgQUxMUEVSTVMgKFNfSVNVSUR8U19JU0dJRHxTX0lTVlRYfFNfSVJXWFV8U19JUldY
R3xTX0lSV1hPKQorCitzdGF0aWMgaW5saW5lIGludCB2ZnNjb3JlX2ZmbGFncyhpbnQgb2ZsYWdz
KQoreworICAgIGludCBydyA9IG9mbGFncyAmIE9fQUNDTU9ERTsKKyAgICBvZmxhZ3MgJj0gfk9f
QUNDTU9ERTsKKyAgICByZXR1cm4gKHJ3ICsgMSkgfCBvZmxhZ3M7Cit9CisKK3N0YXRpYyBpbmxp
bmUgaW50IHZmc2NvcmVfb2ZsYWdzKGludCBmZmxhZ3MpCit7CisgICAgaW50IHJ3ID0gZmZsYWdz
ICYgKEZSRUFEfEZXUklURSk7CisgICAgZmZsYWdzICY9IH4oRlJFQUR8RldSSVRFKTsKKyAgICBy
ZXR1cm4gKHJ3IC0gMSkgfCBmZmxhZ3M7Cit9CisKKyNlbmRpZiAvKiBfVkZTQ09SRV9GU19IXyAq
LwpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Zub2RlLmggYi9saWIv
dmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUuaAppbmRleCBhNGRiOWMxMy4uNDE1NWE3ZGIg
MTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5oCisrKyBiL2xp
Yi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5oCkBAIC0xMDgsNiArMTA4LDI3IEBAIHN0
cnVjdCB2YXR0ciB7CiAJb2ZmX3QJCXZhX3NpemU7CiB9OwogCisvKiBzdHJ1Y3QgdmF0dHIgaXMg
dXNlZCB0byBjb25zb2xpZGF0ZSBtdWx0aXBsZSB0eXBlcyBvZiBmaWxlCisgKiBhdHRyaWJ1dGVz
IGZvciBwYXNzaW5nIHRoZW0gYXMgZnVuY3Rpb24gcGFyYW1ldGVycy4gTWFjcm9zIGJlbGxvdwor
ICogYXJlIHNlbGVjdG9ycywgb2Ygd2hhdCB0eXBlcyBvZiBhdHRyaWJ1dGVzIGFyZSB2YWxpZCBp
biBwYXJ0aWN1bGFyCisgKiBzdHJ1Y3QgdmF0dHIqLworI2RlZmluZQlBVF9UWVBFCQkweDAwMDAx
CisjZGVmaW5lCUFUX01PREUJCTB4MDAwMDIKKyNkZWZpbmUJQVRfVUlECQkweDAwMDA0CisjZGVm
aW5lCUFUX0dJRAkJMHgwMDAwOAorI2RlZmluZQlBVF9GU0lECQkweDAwMDEwCisjZGVmaW5lCUFU
X05PREVJRAkweDAwMDIwCisjZGVmaW5lCUFUX05MSU5LCTB4MDAwNDAKKyNkZWZpbmUJQVRfU0la
RQkJMHgwMDA4MAorI2RlZmluZQlBVF9BVElNRQkweDAwMTAwCisjZGVmaW5lCUFUX01USU1FCTB4
MDAyMDAKKyNkZWZpbmUJQVRfQ1RJTUUJMHgwMDQwMAorI2RlZmluZQlBVF9SREVWCQkweDAwODAw
CisjZGVmaW5lCUFUX0JMS1NJWkUJMHgwMTAwMAorI2RlZmluZQlBVF9OQkxPQ0tTCTB4MDIwMDAK
KyNkZWZpbmUJQVRfU0VRCQkweDA4MDAwCisjZGVmaW5lCUFUX1hWQVRUUgkweDEwMDAwCisKIC8q
CiAgKiAgTW9kZXMuCiAgKi8KZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL21haW4uYyBiL2xpYi92
ZnNjb3JlL21haW4uYwppbmRleCA4MmU0NTkxNy4uMTE2NGIzMGIgMTAwNjQ0Ci0tLSBhL2xpYi92
ZnNjb3JlL21haW4uYworKysgYi9saWIvdmZzY29yZS9tYWluLmMKQEAgLTUyLDggKzUyLDQxIEBA
CiBpbnQJdmZzX2RlYnVnID0gVkZTREJfRkxBR1M7CiAjZW5kaWYKIAorLyogVGhpcyBtYWNybyBp
cyBmb3IgZGVmaW5pbmcgYW4gYWxpYXMgb2YgdGhlIDY0Yml0IHZlcnNpb24gb2YgYQorICogc3lz
Y2FsbCB0byB0aGUgcmVndWxhciBvbmUuIEl0IHNlYW1zIHdlIGNhbiBtYWtlIHRoZSBsb2dpYyB3
aGljaCBpcworICogY2hvb3NpbmcgdGhlIHJpZ2h0IGNhbGwgc2ltcGxlciB0aGVuIGluIGNvbW1v
biBsaWJjLgorICoKKyAqIExldCdzIGtlZXAgTEZTNjQgY2FsbHMganVzdCBpbiBjYXNlIGluIGZ1
dHVyZSB3ZSB3aWxsIGZpbmQgb3V0IHRoYXQKKyAqIHRoZXNlIGFsaWFzZXMgYXJlIG5lZWQuCisg
Ki8KKyNkZWZpbmUgTEZTNjQoeCkKKwogc3RhdGljIG1vZGVfdCBnbG9iYWxfdW1hc2sgPSBTX0lX
R1JQIHwgU19JV09USDsKIAorLyogVE9ETzogdGhlc2UgbWFjcm8gZG9lcyBub3QgYmVsb25nIGhl
cmUKKyAqIE5PVEU6IGJvcnJvd2VkIGZyb20gT1N2CisgKi8KKyNkZWZpbmUgRE9fT05DRSh0aGlu
ZykgZG8gewkJCQlcCisJc3RhdGljIGludCBfeDsJCQkJCVwKKwlpZiAoIV94KSB7CQkJCQlcCisJ
ICAgIF94ID0gMTsJCQkJCVwKKwkgICAgdGhpbmcgOwkJCQkJXAorCX0JCQkJCQlcCit9IHdoaWxl
ICgwKQorI2RlZmluZSBXQVJOX1NUVUJCRUQoKSBET19PTkNFKHVrX3ByX3dhcm4oIiVzKCkgc3R1
YmJlZFxuIiwgX19mdW5jX18pKQorCisjZGVmaW5lIE5PX1NZUyhkZWNsKSBkZWNsIHsJCQkJXAor
ICAgIERPX09OQ0UodWtfcHJfd2FybigiJXMgbm90IGltcGxlbWVudGVkXG4iLCBfX2Z1bmNfXykp
OwlcCisgICAgZXJybm8gPSBFTk9TWVM7CQkJCQlcCisgICAgcmV0dXJuIC0xOwkJCQkJCVwKK30K
Kworc3RhdGljIGlubGluZSBpbnQgbGliY19lcnJvcihpbnQgZXJyKQoreworICAgIGVycm5vID0g
ZXJyOworICAgIHJldHVybiAtMTsKK30KKwogc3RhdGljIGlubGluZSBtb2RlX3QgYXBwbHlfdW1h
c2sobW9kZV90IG1vZGUpCiB7CiAJcmV0dXJuIG1vZGUgJiB+dWthcmNoX2xvYWRfbigmZ2xvYmFs
X3VtYXNrKTsKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL21vdW50LmMgYi9saWIvdmZzY29yZS9t
b3VudC5jCmluZGV4IDdkMDgzZDZmLi5lMTJjMDAzMyAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUv
bW91bnQuYworKysgYi9saWIvdmZzY29yZS9tb3VudC5jCkBAIC03OSw2ICs3OSwyMyBAQCBmc19n
ZXRmcyhjb25zdCBjaGFyICpuYW1lKQogCXJldHVybiBmczsKIH0KIAoraW50IGRldmljZV9vcGVu
KGNvbnN0IGNoYXIgKm5hbWUsIGludCBtb2RlLCBzdHJ1Y3QgZGV2aWNlICoqZGV2cCkKK3sKKwko
dm9pZCkgbmFtZTsKKwkodm9pZCkgbW9kZTsKKwkodm9pZCkgZGV2cDsKKworCXVrX3ByX2Vycigi
ZGV2aWNlIG9wZW4gaXMgbm90IGltcGxlbWVudGVkICglcylcbiIsIG5hbWUpOworCXJldHVybiAw
OworfQorCitpbnQgZGV2aWNlX2Nsb3NlKHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwkodm9pZCkg
ZGV2OworCVVLX0NSQVNIKCJub3QgaW1wbGVtZW50ZWQiKTsKKwlyZXR1cm4gMDsKK30KKwogaW50
CiBzeXNfbW91bnQoY29uc3QgY2hhciAqZGV2LCBjb25zdCBjaGFyICpkaXIsIGNvbnN0IGNoYXIg
KmZzbmFtZSwgaW50IGZsYWdzLCBjb25zdCB2b2lkICpkYXRhKQogewpkaWZmIC0tZ2l0IGEvbGli
L3Zmc2NvcmUvdmZzLmggYi9saWIvdmZzY29yZS92ZnMuaAppbmRleCAxOWY4YWM4Ny4uNjA5ZGMx
ZjUgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL3Zmcy5oCisrKyBiL2xpYi92ZnNjb3JlL3Zmcy5o
CkBAIC0xNTEsNCArMTUxLDEzIEBAIHZvaWQJIHZub2RlX2R1bXAodm9pZCk7CiB2b2lkCSBtb3Vu
dF9kdW1wKHZvaWQpOwogI2VuZGlmCiAKK3N0YXRpYyB2b2lkIF9fYXR0cmlidXRlX18oKHVudXNl
ZCkpIHVrX3Zmc2NvcmVfdHJhY2UoaW50IGZvbyBfX3VudXNlZCwgLi4uKQoreworfQorCisjZGVm
aW5lIFRSQUNFUE9JTlQodHJhY2VfbmFtZSwgZm10LCAuLi4pCQkJXAorCXN0YXRpYyB2b2lkIHRy
YWNlX25hbWUoX19WQV9BUkdTX18gKSBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQsIGFsaWFzKCJ1a192
ZnNjb3JlX3RyYWNlIikpKQorCisKKwogI2VuZGlmIC8qICFfVkZTX0ggKi8KZGlmZiAtLWdpdCBh
L2xpYi92ZnNjb3JlL3Zub2RlLmMgYi9saWIvdmZzY29yZS92bm9kZS5jCmluZGV4IGEyZjQ1NTk2
Li44NmU2ZDljNyAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvdm5vZGUuYworKysgYi9saWIvdmZz
Y29yZS92bm9kZS5jCkBAIC00OCw2ICs0OCw4IEBACiAjaW5jbHVkZSA8dmZzY29yZS92bm9kZS5o
PgogI2luY2x1ZGUgInZmcy5oIgogCisjZGVmaW5lIFNfQkxLU0laRSA1MTIKKwogZW51bSB2dHlw
ZSBpZnRvdnRfdGFiWzE2XSA9IHsKIAlWTk9OLCBWRklGTywgVkNIUiwgVk5PTiwgVkRJUiwgVk5P
TiwgVkJMSywgVk5PTiwKIAlWUkVHLCBWTk9OLCBWTE5LLCBWTk9OLCBWU09DSywgVk5PTiwgVk5P
TiwgVkJBRCwKLS0gCjIuMTkuMgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3Rz
LnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0
aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Feb 04 14:39:43 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 04 Feb 2019 14:39:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gqfPT-0006X0-FD; Mon, 04 Feb 2019 14:39:43 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Kl24=QL=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gqfPR-0006Wa-No
 for minios-devel@lists.xen.org; Mon, 04 Feb 2019 14:39:41 +0000
X-Inumbo-ID: b21c07dc-288a-11e9-9377-b71b22cd588a
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id b21c07dc-288a-11e9-9377-b71b22cd588a;
 Mon, 04 Feb 2019 14:39:37 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id C07D1F2072;
 Mon,  4 Feb 2019 15:39:36 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id vIUUBqi2_EAp; Mon,  4 Feb 2019 15:39:36 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 66913F2065
 for <minios-devel@lists.xen.org>; Mon,  4 Feb 2019 15:39:34 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 4 Feb 2019 15:39:34 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>, <Simon.kuenzer@neclab.eu>,
 <sharan.santhanam@neclab.eu>
Date: Mon, 4 Feb 2019 15:37:25 +0100
Message-ID: <20190204143739.29249-34-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 09/23] lib/vfscore: use Unikraft
 types and functions
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogbGliL3Zmc2NvcmUvZGVudHJ5LmMgICAgICAgICAgICAgICAgIHwgMTM3ICsrKysrKysrKysr
KysrLS0tLS0tLS0tLS0tLQogbGliL3Zmc2NvcmUvZm9wcy5jICAgICAgICAgICAgICAgICAgIHwg
ICAyICstCiBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZGVudHJ5LmggfCAgMTAgKy0KIGxp
Yi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9tb3VudC5oICB8ICAgMSArCiBsaWIvdmZzY29yZS9p
bmNsdWRlL3Zmc2NvcmUvdm5vZGUuaCAgfCAgMjkgKysrLS0tCiBsaWIvdmZzY29yZS9sb29rdXAu
YyAgICAgICAgICAgICAgICAgfCAgMzAgKysrLS0tCiBsaWIvdmZzY29yZS9tYWluLmMgICAgICAg
ICAgICAgICAgICAgfCAxMjEgKysrKysrKysrKystLS0tLS0tLS0tLS0KIGxpYi92ZnNjb3JlL21v
dW50LmMgICAgICAgICAgICAgICAgICB8IDExNCArKysrKysrKysrKystLS0tLS0tLS0tCiBsaWIv
dmZzY29yZS9zdWJyX3Vpby5jICAgICAgICAgICAgICAgfCAgIDIgKy0KIGxpYi92ZnNjb3JlL3N5
c2NhbGxzLmMgICAgICAgICAgICAgICB8IDEyOCArKysrKysrKysrKystLS0tLS0tLS0tLS0tCiBs
aWIvdmZzY29yZS92ZnMuaCAgICAgICAgICAgICAgICAgICAgfCAgMzggKysrKy0tLS0KIGxpYi92
ZnNjb3JlL3Zub2RlLmMgICAgICAgICAgICAgICAgICB8IDEyMiArKysrKysrKysrKystLS0tLS0t
LS0tLS0KIDEyIGZpbGVzIGNoYW5nZWQsIDM3NiBpbnNlcnRpb25zKCspLCAzNTggZGVsZXRpb25z
KC0pCgpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvZGVudHJ5LmMgYi9saWIvdmZzY29yZS9kZW50
cnkuYwppbmRleCBjY2NlMDdkMS4uZmUxODQxYmIgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2Rl
bnRyeS5jCisrKyBiL2xpYi92ZnNjb3JlL2RlbnRyeS5jCkBAIC00MSwxOCArNDEsMTggQEAKIAog
I2RlZmluZSBERU5UUllfQlVDS0VUUyAzMgogCi1zdGF0aWMgTElTVF9IRUFEKGRlbnRyeV9oYXNo
X2hlYWQsIGRlbnRyeSkgZGVudHJ5X2hhc2hfdGFibGVbREVOVFJZX0JVQ0tFVFNdOwotc3RhdGlj
IExJU1RfSEVBRChmYWtlLCBkZW50cnkpIGZha2U7Ci1zdGF0aWMgbXV0ZXggZGVudHJ5X2hhc2hf
bG9jazsKK3N0YXRpYyBzdHJ1Y3QgdWtfaGxpc3RfaGVhZCBkZW50cnlfaGFzaF90YWJsZVtERU5U
UllfQlVDS0VUU107CitzdGF0aWMgVUtfSExJU1RfSEVBRChmYWtlKTsKK3N0YXRpYyBzdHJ1Y3Qg
dWtfbXV0ZXggZGVudHJ5X2hhc2hfbG9jazsKIAogLyoKICAqIEdldCB0aGUgaGFzaCB2YWx1ZSBm
cm9tIHRoZSBtb3VudCBwb2ludCBhbmQgcGF0aCBuYW1lLgogICogWFhYOiByZXBsYWNlIHdpdGgg
YSBiZXR0ZXIgaGFzaCBmb3IgNjQtYml0IHBvaW50ZXJzLgogICovCi1zdGF0aWMgdV9pbnQKK3N0
YXRpYyB1bnNpZ25lZCBpbnQKIGRlbnRyeV9oYXNoKHN0cnVjdCBtb3VudCAqbXAsIGNvbnN0IGNo
YXIgKnBhdGgpCiB7Ci0JdV9pbnQgdmFsID0gMDsKKwl1bnNpZ25lZCBpbnQgdmFsID0gMDsKIAog
CWlmIChwYXRoKSB7CiAJCXdoaWxlICgqcGF0aCkgewpAQCAtNjcsMTAgKzY3LDEwIEBAIHN0cnVj
dCBkZW50cnkgKgogZGVudHJ5X2FsbG9jKHN0cnVjdCBkZW50cnkgKnBhcmVudF9kcCwgc3RydWN0
IHZub2RlICp2cCwgY29uc3QgY2hhciAqcGF0aCkKIHsKIAlzdHJ1Y3QgbW91bnQgKm1wID0gdnAt
PnZfbW91bnQ7Ci0Jc3RydWN0IGRlbnRyeSAqZHAgPSAoZGVudHJ5KiljYWxsb2Moc2l6ZW9mKCpk
cCksIDEpOworCXN0cnVjdCBkZW50cnkgKmRwID0gKHN0cnVjdCBkZW50cnkqKWNhbGxvYyhzaXpl
b2YoKmRwKSwgMSk7CiAKIAlpZiAoIWRwKSB7Ci0JCXJldHVybiBudWxscHRyOworCQlyZXR1cm4g
TlVMTDsKIAl9CiAKIAl2cmVmKHZwKTsKQEAgLTc5LDIyICs3OSwyNCBAQCBkZW50cnlfYWxsb2Mo
c3RydWN0IGRlbnRyeSAqcGFyZW50X2RwLCBzdHJ1Y3Qgdm5vZGUgKnZwLCBjb25zdCBjaGFyICpw
YXRoKQogCWRwLT5kX3Zub2RlID0gdnA7CiAJZHAtPmRfbW91bnQgPSBtcDsKIAlkcC0+ZF9wYXRo
ID0gc3RyZHVwKHBhdGgpOwotCUxJU1RfSU5JVCgmZHAtPmRfY2hpbGRyZW4pOworCVVLX0lOSVRf
TElTVF9IRUFEKCZkcC0+ZF9jaGlsZF9saXN0KTsKIAogCWlmIChwYXJlbnRfZHApIHsKIAkJZHJl
ZihwYXJlbnRfZHApOwotCQlXSVRIX0xPQ0socGFyZW50X2RwLT5kX2xvY2spIHsKLQkJCS8vIElu
c2VydCBkcCBpbnRvIGl0cyBwYXJlbnQncyBjaGlsZHJlbiBsaXN0LgotCQkJTElTVF9JTlNFUlRf
SEVBRCgmcGFyZW50X2RwLT5kX2NoaWxkcmVuLCBkcCwgZF9jaGlsZHJlbl9saW5rKTsKLQkJfQor
CisJCXVrX211dGV4X2xvY2soJnBhcmVudF9kcC0+ZF9sb2NrKTsKKwkJLy8gSW5zZXJ0IGRwIGlu
dG8gaXRzIHBhcmVudCdzIGNoaWxkcmVuIGxpc3QuCisJCXVrX2xpc3RfYWRkKCZkcC0+ZF9jaGls
ZF9saW5rLCAmcGFyZW50X2RwLT5kX2NoaWxkX2xpc3QpOworCQl1a19tdXRleF91bmxvY2soJnBh
cmVudF9kcC0+ZF9sb2NrKTsKIAl9CiAJZHAtPmRfcGFyZW50ID0gcGFyZW50X2RwOwogCiAJdm5f
YWRkX25hbWUodnAsIGRwKTsKIAotCW11dGV4X2xvY2soJmRlbnRyeV9oYXNoX2xvY2spOwotCUxJ
U1RfSU5TRVJUX0hFQUQoJmRlbnRyeV9oYXNoX3RhYmxlW2RlbnRyeV9oYXNoKG1wLCBwYXRoKV0s
IGRwLCBkX2xpbmspOwotCW11dGV4X3VubG9jaygmZGVudHJ5X2hhc2hfbG9jayk7CisJdWtfbXV0
ZXhfbG9jaygmZGVudHJ5X2hhc2hfbG9jayk7CisJdWtfaGxpc3RfYWRkX2hlYWQoJmRwLT5kX2xp
bmssCisJCQkgICZkZW50cnlfaGFzaF90YWJsZVtkZW50cnlfaGFzaChtcCwgcGF0aCldKTsKKwl1
a19tdXRleF91bmxvY2soJmRlbnRyeV9oYXNoX2xvY2spOwogCXJldHVybiBkcDsKIH07CiAKQEAg
LTEwMywyOSArMTA1LDMwIEBAIGRlbnRyeV9sb29rdXAoc3RydWN0IG1vdW50ICptcCwgY2hhciAq
cGF0aCkKIHsKIAlzdHJ1Y3QgZGVudHJ5ICpkcDsKIAotCW11dGV4X2xvY2soJmRlbnRyeV9oYXNo
X2xvY2spOwotCUxJU1RfRk9SRUFDSChkcCwgJmRlbnRyeV9oYXNoX3RhYmxlW2RlbnRyeV9oYXNo
KG1wLCBwYXRoKV0sIGRfbGluaykgeworCXVrX211dGV4X2xvY2soJmRlbnRyeV9oYXNoX2xvY2sp
OworCXVrX2hsaXN0X2Zvcl9lYWNoX2VudHJ5KGRwLCAmZGVudHJ5X2hhc2hfdGFibGVbZGVudHJ5
X2hhc2gobXAsIHBhdGgpXSwgZF9saW5rKSB7CiAJCWlmIChkcC0+ZF9tb3VudCA9PSBtcCAmJiAh
c3RybmNtcChkcC0+ZF9wYXRoLCBwYXRoLCBQQVRIX01BWCkpIHsKIAkJCWRwLT5kX3JlZmNudCsr
OwotCQkJbXV0ZXhfdW5sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKKwkJCXVrX211dGV4X3VubG9j
aygmZGVudHJ5X2hhc2hfbG9jayk7CiAJCQlyZXR1cm4gZHA7CiAJCX0KIAl9Ci0JbXV0ZXhfdW5s
b2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKLQlyZXR1cm4gbnVsbHB0cjsgICAgICAgICAgICAgICAg
Lyogbm90IGZvdW5kICovCisJdWtfbXV0ZXhfdW5sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKKwly
ZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgLyogbm90IGZvdW5kICovCiB9CiAKIHN0YXRpYyB2
b2lkIGRlbnRyeV9jaGlsZHJlbl9yZW1vdmUoc3RydWN0IGRlbnRyeSAqZHApCiB7Ci0Jc3RydWN0
IGRlbnRyeSAqZW50cnkgPSBudWxscHRyOworCXN0cnVjdCBkZW50cnkgKmVudHJ5ID0gTlVMTDsK
IAotCVdJVEhfTE9DSyhkcC0+ZF9sb2NrKSB7Ci0JCUxJU1RfRk9SRUFDSChlbnRyeSwgJmRwLT5k
X2NoaWxkcmVuLCBkX2NoaWxkcmVuX2xpbmspIHsKLQkJCUFTU0VSVChlbnRyeSk7Ci0JCQlBU1NF
UlQoZW50cnktPmRfcmVmY250ID4gMCk7Ci0JCQlMSVNUX1JFTU9WRShlbnRyeSwgZF9saW5rKTsK
LQkJfQorCXVrX211dGV4X2xvY2soJmRwLT5kX2xvY2spOworCXVrX2xpc3RfZm9yX2VhY2hfZW50
cnkoZW50cnksICZkcC0+ZF9jaGlsZF9saXN0LCBkX2NoaWxkX2xpbmspIHsKKwkJVUtfQVNTRVJU
KGVudHJ5KTsKKwkJVUtfQVNTRVJUKGVudHJ5LT5kX3JlZmNudCA+IDApOworCQl1a19obGlzdF9k
ZWwoJmVudHJ5LT5kX2xpbmspOwogCX0KKwl1a19tdXRleF91bmxvY2soJmRwLT5kX2xvY2spOwor
CiB9CiAKIHZvaWQKQEAgLTEzNSwzMyArMTM4LDM0IEBAIGRlbnRyeV9tb3ZlKHN0cnVjdCBkZW50
cnkgKmRwLCBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnRfZHAsIGNoYXIgKnBhdGgpCiAJY2hhciAqb2xk
X3BhdGggPSBkcC0+ZF9wYXRoOwogCiAJaWYgKG9sZF9wZHApIHsKLQkJV0lUSF9MT0NLKG9sZF9w
ZHAtPmRfbG9jaykgewotCQkJLy8gUmVtb3ZlIGRwIGZyb20gaXRzIG9sZCBwYXJlbnQncyBjaGls
ZHJlbiBsaXN0LgotCQkJTElTVF9SRU1PVkUoZHAsIGRfY2hpbGRyZW5fbGluayk7Ci0JCX0KKwkJ
dWtfbXV0ZXhfbG9jaygmb2xkX3BkcC0+ZF9sb2NrKTsKKwkJLy8gUmVtb3ZlIGRwIGZyb20gaXRz
IG9sZCBwYXJlbnQncyBjaGlsZHJlbiBsaXN0LgorCQl1a19saXN0X2RlbCgmZHAtPmRfY2hpbGRf
bGluayk7CisJCXVrX211dGV4X3VubG9jaygmb2xkX3BkcC0+ZF9sb2NrKTsKIAl9CiAKIAlpZiAo
cGFyZW50X2RwKSB7CiAJCWRyZWYocGFyZW50X2RwKTsKLQkJV0lUSF9MT0NLKHBhcmVudF9kcC0+
ZF9sb2NrKSB7Ci0JCQkvLyBJbnNlcnQgZHAgaW50byBpdHMgbmV3IHBhcmVudCdzIGNoaWxkcmVu
IGxpc3QuCi0JCQlMSVNUX0lOU0VSVF9IRUFEKCZwYXJlbnRfZHAtPmRfY2hpbGRyZW4sIGRwLCBk
X2NoaWxkcmVuX2xpbmspOwotCQl9Ci0JfQogCi0JV0lUSF9MT0NLKGRlbnRyeV9oYXNoX2xvY2sp
IHsKLQkJLy8gUmVtb3ZlIGFsbCBkcCdzIGNoaWxkIGRlbnRyaWVzIGZyb20gdGhlIGhhc2h0YWJs
ZS4KLQkJZGVudHJ5X2NoaWxkcmVuX3JlbW92ZShkcCk7Ci0JCS8vIFJlbW92ZSBkcCB3aXRoIG91
dGRhdGVkIGhhc2ggaW5mbyBmcm9tIHRoZSBoYXNodGFibGUuCi0JCUxJU1RfUkVNT1ZFKGRwLCBk
X2xpbmspOwotCQkvLyBVcGRhdGUgZHAuCi0JCWRwLT5kX3BhdGggPSBzdHJkdXAocGF0aCk7Ci0J
CWRwLT5kX3BhcmVudCA9IHBhcmVudF9kcDsKLQkJLy8gSW5zZXJ0IGRwIHVwZGF0ZWQgaGFzaCBp
bmZvIGludG8gdGhlIGhhc2h0YWJsZS4KLQkJTElTVF9JTlNFUlRfSEVBRCgmZGVudHJ5X2hhc2hf
dGFibGVbZGVudHJ5X2hhc2goZHAtPmRfbW91bnQsIHBhdGgpXSwKLQkJCWRwLCBkX2xpbmspOwor
CQl1a19tdXRleF9sb2NrKCZwYXJlbnRfZHAtPmRfbG9jayk7CisJCS8vIEluc2VydCBkcCBpbnRv
IGl0cyBuZXcgcGFyZW50J3MgY2hpbGRyZW4gbGlzdC4KKwkJdWtfbGlzdF9hZGQoJmRwLT5kX2No
aWxkX2xpbmssICZwYXJlbnRfZHAtPmRfY2hpbGRfbGlzdCk7CisJCXVrX211dGV4X3VubG9jaygm
cGFyZW50X2RwLT5kX2xvY2spOwogCX0KIAorCXVrX211dGV4X2xvY2soJmRlbnRyeV9oYXNoX2xv
Y2spOworCS8vIFJlbW92ZSBhbGwgZHAncyBjaGlsZCBkZW50cmllcyBmcm9tIHRoZSBoYXNodGFi
bGUuCisJZGVudHJ5X2NoaWxkcmVuX3JlbW92ZShkcCk7CisJLy8gUmVtb3ZlIGRwIHdpdGggb3V0
ZGF0ZWQgaGFzaCBpbmZvIGZyb20gdGhlIGhhc2h0YWJsZS4KKwl1a19obGlzdF9kZWwoJmRwLT5k
X2xpbmspOworCS8vIFVwZGF0ZSBkcC4KKwlkcC0+ZF9wYXRoID0gc3RyZHVwKHBhdGgpOworCWRw
LT5kX3BhcmVudCA9IHBhcmVudF9kcDsKKwkvLyBJbnNlcnQgZHAgdXBkYXRlZCBoYXNoIGluZm8g
aW50byB0aGUgaGFzaHRhYmxlLgorCXVrX2hsaXN0X2FkZF9oZWFkKCZkcC0+ZF9saW5rLAorCQkJ
ICAmZGVudHJ5X2hhc2hfdGFibGVbZGVudHJ5X2hhc2goZHAtPmRfbW91bnQsIHBhdGgpXSk7CisJ
dWtfbXV0ZXhfdW5sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKKwogCWlmIChvbGRfcGRwKSB7CiAJ
CWRyZWxlKG9sZF9wZHApOwogCX0KQEAgLTE3Miw0NSArMTc2LDQ2IEBAIGRlbnRyeV9tb3ZlKHN0
cnVjdCBkZW50cnkgKmRwLCBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnRfZHAsIGNoYXIgKnBhdGgpCiB2
b2lkCiBkZW50cnlfcmVtb3ZlKHN0cnVjdCBkZW50cnkgKmRwKQogewotCW11dGV4X2xvY2soJmRl
bnRyeV9oYXNoX2xvY2spOwotCUxJU1RfUkVNT1ZFKGRwLCBkX2xpbmspOworCXVrX211dGV4X2xv
Y2soJmRlbnRyeV9oYXNoX2xvY2spOworCXVrX2hsaXN0X2RlbCgmZHAtPmRfbGluayk7CiAJLyog
cHV0IGl0IG9uIGEgZmFrZSBsaXN0IGZvciBkcmVsZSgpIHRvIHdvcmsqLwotCUxJU1RfSU5TRVJU
X0hFQUQoJmZha2UsIGRwLCBkX2xpbmspOwotCW11dGV4X3VubG9jaygmZGVudHJ5X2hhc2hfbG9j
ayk7CisJdWtfaGxpc3RfYWRkX2hlYWQoJmRwLT5kX2xpbmssICZmYWtlKTsKKwl1a19tdXRleF91
bmxvY2soJmRlbnRyeV9oYXNoX2xvY2spOwogfQogCiB2b2lkCiBkcmVmKHN0cnVjdCBkZW50cnkg
KmRwKQogewotCUFTU0VSVChkcCk7Ci0JQVNTRVJUKGRwLT5kX3JlZmNudCA+IDApOworCVVLX0FT
U0VSVChkcCk7CisJVUtfQVNTRVJUKGRwLT5kX3JlZmNudCA+IDApOwogCi0JbXV0ZXhfbG9jaygm
ZGVudHJ5X2hhc2hfbG9jayk7CisJdWtfbXV0ZXhfbG9jaygmZGVudHJ5X2hhc2hfbG9jayk7CiAJ
ZHAtPmRfcmVmY250Kys7Ci0JbXV0ZXhfdW5sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKKwl1a19t
dXRleF91bmxvY2soJmRlbnRyeV9oYXNoX2xvY2spOwogfQogCiB2b2lkCiBkcmVsZShzdHJ1Y3Qg
ZGVudHJ5ICpkcCkKIHsKLQlBU1NFUlQoZHApOwotCUFTU0VSVChkcC0+ZF9yZWZjbnQgPiAwKTsK
KwlVS19BU1NFUlQoZHApOworCVVLX0FTU0VSVChkcC0+ZF9yZWZjbnQgPiAwKTsKIAotCW11dGV4
X2xvY2soJmRlbnRyeV9oYXNoX2xvY2spOworCXVrX211dGV4X2xvY2soJmRlbnRyeV9oYXNoX2xv
Y2spOwogCWlmICgtLWRwLT5kX3JlZmNudCkgewotCQltdXRleF91bmxvY2soJmRlbnRyeV9oYXNo
X2xvY2spOworCQl1a19tdXRleF91bmxvY2soJmRlbnRyeV9oYXNoX2xvY2spOwogCQlyZXR1cm47
CiAJfQotCUxJU1RfUkVNT1ZFKGRwLCBkX2xpbmspOworCXVrX2hsaXN0X2RlbCgmZHAtPmRfbGlu
ayk7CiAJdm5fZGVsX25hbWUoZHAtPmRfdm5vZGUsIGRwKTsKIAotCW11dGV4X3VubG9jaygmZGVu
dHJ5X2hhc2hfbG9jayk7CisJdWtfbXV0ZXhfdW5sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKIAog
CWlmIChkcC0+ZF9wYXJlbnQpIHsKLQkJV0lUSF9MT0NLKGRwLT5kX3BhcmVudC0+ZF9sb2NrKSB7
Ci0JCQkvLyBSZW1vdmUgZHAgZnJvbSBpdHMgcGFyZW50J3MgY2hpbGRyZW4gbGlzdC4KLQkJCUxJ
U1RfUkVNT1ZFKGRwLCBkX2NoaWxkcmVuX2xpbmspOwotCQl9CisJCXVrX211dGV4X2xvY2soJmRw
LT5kX3BhcmVudC0+ZF9sb2NrKTsKKwkJLy8gUmVtb3ZlIGRwIGZyb20gaXRzIHBhcmVudCdzIGNo
aWxkcmVuIGxpc3QuCisJCXVrX2xpc3RfZGVsKCZkcC0+ZF9jaGlsZF9saW5rKTsKKwkJdWtfbXV0
ZXhfdW5sb2NrKCZkcC0+ZF9wYXJlbnQtPmRfbG9jayk7CisKIAkJZHJlbGUoZHAtPmRfcGFyZW50
KTsKIAl9CiAKQEAgLTIyNiw2ICsyMzEsNiBAQCBkZW50cnlfaW5pdCh2b2lkKQogCWludCBpOwog
CiAJZm9yIChpID0gMDsgaSA8IERFTlRSWV9CVUNLRVRTOyBpKyspIHsKLQkJTElTVF9JTklUKCZk
ZW50cnlfaGFzaF90YWJsZVtpXSk7CisJCVVLX0lOSVRfSExJU1RfSEVBRCgmZGVudHJ5X2hhc2hf
dGFibGVbaV0pOwogCX0KIH0KZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2ZvcHMuYyBiL2xpYi92
ZnNjb3JlL2ZvcHMuYwppbmRleCBiNDU4M2QyMC4uNzkxMTRlMjEgMTAwNjQ0Ci0tLSBhL2xpYi92
ZnNjb3JlL2ZvcHMuYworKysgYi9saWIvdmZzY29yZS9mb3BzLmMKQEAgLTExNSw3ICsxMTUsNyBA
QCBpbnQgdmZzX3dyaXRlKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwLCBzdHJ1Y3QgdWlvICp1aW8s
IGludCBmbGFncykKIAlyZXR1cm4gZXJyb3I7CiB9CiAKLWludCB2ZnNfaW9jdGwoc3RydWN0IHZm
c2NvcmVfZmlsZSAqZnAsIHVfbG9uZyBjb20sIHZvaWQgKmRhdGEpCitpbnQgdmZzX2lvY3RsKHN0
cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwLCB1bnNpZ25lZCBsb25nIGNvbSwgdm9pZCAqZGF0YSkKIHsK
IAlzdHJ1Y3Qgdm5vZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOwogCWludCBlcnJvcjsK
ZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9kZW50cnkuaCBiL2xpYi92
ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9kZW50cnkuaAppbmRleCBiYTFjMzQ1Ny4uODVmMzdhYjcg
MTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9kZW50cnkuaAorKysgYi9s
aWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZGVudHJ5LmgKQEAgLTQyLDE2ICs0MiwxNiBAQAog
c3RydWN0IHZub2RlOwogCiBzdHJ1Y3QgZGVudHJ5IHsKLQlMSVNUX0VOVFJZKGRlbnRyeSkgZF9s
aW5rOwkvKiBsaW5rIGZvciBoYXNoIGxpc3QgKi8KKwlzdHJ1Y3QgdWtfaGxpc3Rfbm9kZSBkX2xp
bms7CS8qIGxpbmsgZm9yIGhhc2ggbGlzdCAqLwogCWludAkJZF9yZWZjbnQ7CS8qIHJlZmVyZW5j
ZSBjb3VudCAqLwogCWNoYXIJCSpkX3BhdGg7CS8qIHBvaW50ZXIgdG8gcGF0aCBpbiBmcyAqLwog
CXN0cnVjdCB2bm9kZQkqZF92bm9kZTsKIAlzdHJ1Y3QgbW91bnQJKmRfbW91bnQ7CiAJc3RydWN0
IGRlbnRyeSAgICpkX3BhcmVudDsgLyogcG9pbnRlciB0byBwYXJlbnQgKi8KLQlMSVNUX0VOVFJZ
KGRlbnRyeSkgZF9uYW1lc19saW5rOyAvKiBsaW5rIGZvIHZub2RlOjpkX25hbWVzICovCi0JbXV0
ZXhfdAkJZF9sb2NrOwotCUxJU1RfSEVBRCgsIGRlbnRyeSkgZF9jaGlsZHJlbjsKLQlMSVNUX0VO
VFJZKGRlbnRyeSkgZF9jaGlsZHJlbl9saW5rOworCXN0cnVjdCB1a19saXN0X2hlYWQgZF9uYW1l
c19saW5rOyAvKiBsaW5rIGZvIHZub2RlOjpkX25hbWVzICovCisJc3RydWN0IHVrX211dGV4CWRf
bG9jazsKKwlzdHJ1Y3QgdWtfbGlzdF9oZWFkIGRfY2hpbGRfbGlzdDsKKwlzdHJ1Y3QgdWtfbGlz
dF9oZWFkIGRfY2hpbGRfbGluazsKIH07CiAKICNlbmRpZiAvKiBfT1NWX0RFTlRSWV9IICovCmRp
ZmYgLS1naXQgYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvbW91bnQuaCBiL2xpYi92ZnNj
b3JlL2luY2x1ZGUvdmZzY29yZS9tb3VudC5oCmluZGV4IGUxMmExMDM5Li43YTYzOGRiZSAxMDA2
NDQKLS0tIGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmgKKysrIGIvbGliL3Zm
c2NvcmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmgKQEAgLTUyLDYgKzUyLDcgQEAgc3RydWN0IG1v
dW50IHsKIAlzdHJ1Y3QgZGVudHJ5CSptX3Jvb3Q7CS8qIHJvb3Qgdm5vZGUgKi8KIAlzdHJ1Y3Qg
ZGVudHJ5CSptX2NvdmVyZWQ7CS8qIHZub2RlIGNvdmVyZWQgb24gcGFyZW50IGZzICovCiAJdm9p
ZAkJKm1fZGF0YTsJLyogcHJpdmF0ZSBkYXRhIGZvciBmcyAqLworCXN0cnVjdCB1a19saXN0X2hl
YWQgbW50X2xpc3Q7CiAJZnNpZF90IAkJbV9mc2lkOyAJLyogaWQgdGhhdCB1bmlxdWVseSBpZGVu
dGlmaWVzIHRoZSBmcyAqLwogfTsKIApkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92
ZnNjb3JlL3Zub2RlLmggYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUuaAppbmRl
eCA0OWZkNGQzNi4uYTRkYjljMTMgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZz
Y29yZS92bm9kZS5oCisrKyBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5oCkBA
IC00Nyw3ICs0Nyw3IEBACiBzdHJ1Y3QgdmZzb3BzOwogc3RydWN0IHZub3BzOwogc3RydWN0IHZu
b2RlOwotc3RydWN0IGZpbGU7CitzdHJ1Y3QgdmZzY29yZV9maWxlOwogCiAvKgogICogVm5vZGUg
dHlwZXMuCkBAIC03MCw3ICs3MCw3IEBAIGVudW0gdnR5cGUgewogICovCiBzdHJ1Y3Qgdm5vZGUg
ewogCXVpbnQ2NF90CXZfaW5vOwkJLyogaW5vZGUgbnVtYmVyICovCi0JTElTVF9FTlRSWSh2bm9k
ZSkgdl9saW5rOwkvKiBsaW5rIGZvciBoYXNoIGxpc3QgKi8KKwlzdHJ1Y3QgdWtfbGlzdF9oZWFk
IHZfbGluazsJLyogbGluayBmb3IgaGFzaCBsaXN0ICovCiAJc3RydWN0IG1vdW50CSp2X21vdW50
OwkvKiBtb3VudGVkIHZmcyBwb2ludGVyICovCiAJc3RydWN0IHZub3BzCSp2X29wOwkJLyogdm5v
ZGUgb3BlcmF0aW9ucyAqLwogCWludAkJdl9yZWZjbnQ7CS8qIHJlZmVyZW5jZSBjb3VudCAqLwpA
QCAtNzgsOSArNzgsOCBAQCBzdHJ1Y3Qgdm5vZGUgewogCWludAkJdl9mbGFnczsJLyogdm5vZGUg
ZmxhZyAqLwogCW1vZGVfdAkJdl9tb2RlOwkJLyogZmlsZSBtb2RlICovCiAJb2ZmX3QJCXZfc2l6
ZTsJCS8qIGZpbGUgc2l6ZSAqLwotCW11dGV4X3QJCXZfbG9jazsJCS8qIGxvY2sgZm9yIHRoaXMg
dm5vZGUgKi8KLQlMSVNUX0hFQUQoLCBkZW50cnkpIHZfbmFtZXM7CS8qIGRpcmVjdG9yeSBlbnRy
aWVzIHBvaW50aW5nIGF0IHRoaXMgKi8KLQlpbnQJCXZfbnJsb2NrczsJLyogbG9jayBjb3VudCAo
Zm9yIGRlYnVnKSAqLworCXN0cnVjdCB1a19tdXRleAl2X2xvY2s7CQkvKiBsb2NrIGZvciB0aGlz
IHZub2RlICovCisJc3RydWN0IHVrX2xpc3RfaGVhZCB2X25hbWVzOwkvKiBkaXJlY3RvcnkgZW50
cmllcyBwb2ludGluZyBhdCB0aGlzICovCiAJdm9pZAkJKnZfZGF0YTsJLyogcHJpdmF0ZSBkYXRh
IGZvciBmcyAqLwogfTsKIApAQCAtMTI3LDE0ICsxMjYsMTQgQEAgc3RydWN0IHZhdHRyIHsKICNk
ZWZpbmUgQVJDX0FDVElPTl9IT0xEICAgICAxCiAjZGVmaW5lIEFSQ19BQ1RJT05fUkVMRUFTRSAg
MgogCi10eXBlZGVmCWludCAoKnZub3Bfb3Blbl90KQkoc3RydWN0IGZpbGUgKik7Ci10eXBlZGVm
CWludCAoKnZub3BfY2xvc2VfdCkJKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTsKLXR5
cGVkZWYJaW50ICgqdm5vcF9yZWFkX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IGZpbGUgKiwg
c3RydWN0IHVpbyAqLCBpbnQpOwotdHlwZWRlZglpbnQgKCp2bm9wX3dyaXRlX3QpCShzdHJ1Y3Qg
dm5vZGUgKiwgc3RydWN0IHVpbyAqLCBpbnQpOwotdHlwZWRlZglpbnQgKCp2bm9wX3NlZWtfdCkJ
KHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgZmlsZSAqLCBvZmZfdCwgb2ZmX3QpOwotdHlwZWRlZglp
bnQgKCp2bm9wX2lvY3RsX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IGZpbGUgKiwgdV9sb25n
LCB2b2lkICopOwotdHlwZWRlZglpbnQgKCp2bm9wX2ZzeW5jX3QpCShzdHJ1Y3Qgdm5vZGUgKiwg
c3RydWN0IGZpbGUgKik7Ci10eXBlZGVmCWludCAoKnZub3BfcmVhZGRpcl90KQkoc3RydWN0IHZu
b2RlICosIHN0cnVjdCBmaWxlICosIHN0cnVjdCBkaXJlbnQgKik7Cit0eXBlZGVmCWludCAoKnZu
b3Bfb3Blbl90KQkoc3RydWN0IHZmc2NvcmVfZmlsZSAqKTsKK3R5cGVkZWYJaW50ICgqdm5vcF9j
bG9zZV90KQkoc3RydWN0IHZub2RlICosIHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKik7Cit0eXBlZGVm
CXNzaXplX3QgKCp2bm9wX3JlYWRfdCkJKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgdmZzY29yZV9m
aWxlICosIHN0cnVjdCB1aW8gKiwgaW50KTsKK3R5cGVkZWYJc3NpemVfdCAoKnZub3Bfd3JpdGVf
dCkJKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgdWlvICosIGludCk7Cit0eXBlZGVmCW9mZl90ICgq
dm5vcF9zZWVrX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHZmc2NvcmVfZmlsZSAqLCBvZmZf
dCwgb2ZmX3QpOwordHlwZWRlZglpbnQgKCp2bm9wX2lvY3RsX3QpCShzdHJ1Y3Qgdm5vZGUgKiwg
c3RydWN0IHZmc2NvcmVfZmlsZSAqLCB1bnNpZ25lZCBsb25nLCB2b2lkICopOwordHlwZWRlZglp
bnQgKCp2bm9wX2ZzeW5jX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHZmc2NvcmVfZmlsZSAq
KTsKK3R5cGVkZWYJaW50ICgqdm5vcF9yZWFkZGlyX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0
IHZmc2NvcmVfZmlsZSAqLCBzdHJ1Y3QgZGlyZW50ICopOwogdHlwZWRlZglpbnQgKCp2bm9wX2xv
b2t1cF90KQkoc3RydWN0IHZub2RlICosIGNoYXIgKiwgc3RydWN0IHZub2RlICoqKTsKIHR5cGVk
ZWYJaW50ICgqdm5vcF9jcmVhdGVfdCkJKHN0cnVjdCB2bm9kZSAqLCBjaGFyICosIG1vZGVfdCk7
CiB0eXBlZGVmCWludCAoKnZub3BfcmVtb3ZlX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHZu
b2RlICosIGNoYXIgKik7CkBAIC0xNDcsOCArMTQ2LDggQEAgdHlwZWRlZglpbnQgKCp2bm9wX3Nl
dGF0dHJfdCkJKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgdmF0dHIgKik7CiB0eXBlZGVmCWludCAo
KnZub3BfaW5hY3RpdmVfdCkJKHN0cnVjdCB2bm9kZSAqKTsKIHR5cGVkZWYJaW50ICgqdm5vcF90
cnVuY2F0ZV90KQkoc3RydWN0IHZub2RlICosIG9mZl90KTsKIHR5cGVkZWYJaW50ICgqdm5vcF9s
aW5rX3QpICAgICAgKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3Qgdm5vZGUgKiwgY2hhciAqKTsKLXR5
cGVkZWYgaW50ICgqdm5vcF9jYWNoZV90KSAoc3RydWN0IHZub2RlICosIHN0cnVjdCBmaWxlICos
IHN0cnVjdCB1aW8gKik7Ci10eXBlZGVmIGludCAoKnZub3BfZmFsbG9jYXRlX3QpIChzdHJ1Y3Qg
dm5vZGUgKiwgaW50LCBsb2ZmX3QsIGxvZmZfdCk7Cit0eXBlZGVmIGludCAoKnZub3BfY2FjaGVf
dCkgKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgdmZzY29yZV9maWxlICosIHN0cnVjdCB1aW8gKik7
Cit0eXBlZGVmIGludCAoKnZub3BfZmFsbG9jYXRlX3QpIChzdHJ1Y3Qgdm5vZGUgKiwgaW50LCBv
ZmZfdCwgb2ZmX3QpOwogdHlwZWRlZiBpbnQgKCp2bm9wX3JlYWRsaW5rX3QpICAoc3RydWN0IHZu
b2RlICosIHN0cnVjdCB1aW8gKik7CiB0eXBlZGVmIGludCAoKnZub3Bfc3ltbGlua190KSAgIChz
dHJ1Y3Qgdm5vZGUgKiwgY2hhciAqLCBjaGFyICopOwogCmRpZmYgLS1naXQgYS9saWIvdmZzY29y
ZS9sb29rdXAuYyBiL2xpYi92ZnNjb3JlL2xvb2t1cC5jCmluZGV4IDk4MzdlODFmLi4xZTJjNDAw
NSAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvbG9va3VwLmMKKysrIGIvbGliL3Zmc2NvcmUvbG9v
a3VwLmMKQEAgLTExMSw3ICsxMTEsNyBAQCBuYW1laShjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3Qg
ZGVudHJ5ICoqZHBwKQogCXN0cnVjdCB2bm9kZSAqZHZwLCAqdnA7CiAJaW50IGVycm9yLCBpOwog
CWludCBsaW5rc19mb2xsb3dlZDsKLQlib29sIG5lZWRfY29udGludWU7CisJaW50IG5lZWRfY29u
dGludWU7CiAKIAlEUFJJTlRGKFZGU0RCX1ZOT0RFLCAoIm5hbWVpOiBwYXRoPSVzXG4iLCBwYXRo
KSk7CiAKQEAgLTExOSw3ICsxMTksNyBAQCBuYW1laShjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3Qg
ZGVudHJ5ICoqZHBwKQogCXN0cmxjcHkoZnAsIHBhdGgsIFBBVEhfTUFYKTsKIAogCWRvIHsKLQkJ
bmVlZF9jb250aW51ZSA9IGZhbHNlOworCQluZWVkX2NvbnRpbnVlID0gMDsKIAkJLyoKIAkJICog
Q29udmVydCBhIGZ1bGwgcGF0aCBuYW1lIHRvIGl0cyBtb3VudCBwb2ludCBhbmQKIAkJICogdGhl
IGxvY2FsIG5vZGUgaW4gdGhlIGZpbGUgc3lzdGVtLgpAQCAtMTQzLDcgKzE0Myw3IEBAIG5hbWVp
KGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBkZW50cnkgKipkcHApCiAJCSAqLwogCQlkZHAgPSBt
cC0+bV9yb290OwogCQlpZiAoIWRkcCkgewotCQkJc3lzX3BhbmljKCJWRlM6IG5vIHJvb3QiKTsK
KwkJCVVLX0NSQVNIKCJWRlM6IG5vIHJvb3QiKTsKIAkJfQogCQlkcmVmKGRkcCk7CiAKQEAgLTE3
Nyw3ICsxNzcsNyBAQCBuYW1laShjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3QgZGVudHJ5ICoqZHBw
KQogCQkJZHZwID0gZGRwLT5kX3Zub2RlOwogCQkJdm5fbG9jayhkdnApOwogCQkJZHAgPSBkZW50
cnlfbG9va3VwKG1wLCBub2RlKTsKLQkJCWlmIChkcCA9PSBudWxscHRyKSB7CisJCQlpZiAoZHAg
PT0gTlVMTCkgewogCQkJCS8qIEZpbmQgYSB2bm9kZSBpbiB0aGlzIGRpcmVjdG9yeS4gKi8KIAkJ
CQllcnJvciA9IFZPUF9MT09LVVAoZHZwLCBuYW1lLCAmdnApOwogCQkJCWlmIChlcnJvcikgewpA
QCAtMjA5LDE3ICsyMDksMTcgQEAgbmFtZWkoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IGRlbnRy
eSAqKmRwcCkKIAkJCQlkcmVsZShkcCk7CiAKIAkJCQlwICAgICAgID0gZnA7Ci0JCQkJZHAgICAg
ICA9IG51bGxwdHI7Ci0JCQkJZGRwICAgICA9IG51bGxwdHI7Ci0JCQkJdnAgICAgICA9IG51bGxw
dHI7Ci0JCQkJZHZwICAgICA9IG51bGxwdHI7CisJCQkJZHAgICAgICA9IE5VTEw7CisJCQkJZGRw
ICAgICA9IE5VTEw7CisJCQkJdnAgICAgICA9IE5VTEw7CisJCQkJZHZwICAgICA9IE5VTEw7CiAJ
CQkJbmFtZVswXSA9IDA7CiAJCQkJbm9kZVswXSA9IDA7CiAKIAkJCQlpZiAoKytsaW5rc19mb2xs
b3dlZCA+PSBNQVhTWU1MSU5LUykgewogCQkJCQlyZXR1cm4gKEVMT09QKTsKIAkJCQl9Ci0JCQkJ
bmVlZF9jb250aW51ZSA9IHRydWU7CisJCQkJbmVlZF9jb250aW51ZSA9IDE7CiAJCQkJYnJlYWs7
CiAJCQl9CiAKQEAgLTIyOCw3ICsyMjgsNyBAQCBuYW1laShjb25zdCBjaGFyICpwYXRoLCBzdHJ1
Y3QgZGVudHJ5ICoqZHBwKQogCQkJCXJldHVybiBFTk9URElSOwogCQkJfQogCQl9Ci0JfSB3aGls
ZSAobmVlZF9jb250aW51ZSA9PSB0cnVlKTsKKwl9IHdoaWxlIChuZWVkX2NvbnRpbnVlKTsKIAog
CSpkcHAgPSBkcDsKIAlyZXR1cm4gMDsKQEAgLTI1MywxNCArMjUzLDE0IEBAIG5hbWVpX2xhc3Rf
bm9mb2xsb3coY2hhciAqcGF0aCwgc3RydWN0IGRlbnRyeSAqZGRwLCBzdHJ1Y3QgZGVudHJ5ICoq
ZHBwKQogCXN0cnVjdCB2bm9kZSAgKnZwOwogCWNoYXIgbm9kZVtQQVRIX01BWF07CiAKLQlkdnAg
ID0gbnVsbHB0cjsKKwlkdnAgID0gTlVMTDsKIAogCWlmIChwYXRoWzBdICE9ICcvJykgewogCQly
ZXR1cm4gKEVOT1RESVIpOwogCX0KIAogCW5hbWUgPSBzdHJyY2hyKHBhdGgsICcvJyk7Ci0JaWYg
KG5hbWUgPT0gbnVsbHB0cikgeworCWlmIChuYW1lID09IE5VTEwpIHsKIAkJcmV0dXJuIChFTk9F
TlQpOwogCX0KIAluYW1lKys7CkBAIC0yODMsNyArMjgzLDcgQEAgbmFtZWlfbGFzdF9ub2ZvbGxv
dyhjaGFyICpwYXRoLCBzdHJ1Y3QgZGVudHJ5ICpkZHAsIHN0cnVjdCBkZW50cnkgKipkcHApCiAJ
ZHZwID0gZGRwLT5kX3Zub2RlOwogCXZuX2xvY2soZHZwKTsKIAlkcCA9IGRlbnRyeV9sb29rdXAo
bXAsIG5vZGUpOwotCWlmIChkcCA9PSBudWxscHRyKSB7CisJaWYgKGRwID09IE5VTEwpIHsKIAkJ
ZXJyb3IgPSBWT1BfTE9PS1VQKGR2cCwgbmFtZSwgJnZwKTsKIAkJaWYgKGVycm9yICE9IDApIHsK
IAkJCWdvdG8gb3V0OwpAQCAtMjkyLDcgKzI5Miw3IEBAIG5hbWVpX2xhc3Rfbm9mb2xsb3coY2hh
ciAqcGF0aCwgc3RydWN0IGRlbnRyeSAqZGRwLCBzdHJ1Y3QgZGVudHJ5ICoqZHBwKQogCQlkcCA9
IGRlbnRyeV9hbGxvYyhkZHAsIHZwLCBub2RlKTsKIAkJdnB1dCh2cCk7CiAKLQkJaWYgKGRwID09
IG51bGxwdHIpIHsKKwkJaWYgKGRwID09IE5VTEwpIHsKIAkJCWVycm9yID0gRU5PTUVNOwogCQkJ
Z290byBvdXQ7CiAJCX0KQEAgLTMwMSw3ICszMDEsNyBAQCBuYW1laV9sYXN0X25vZm9sbG93KGNo
YXIgKnBhdGgsIHN0cnVjdCBkZW50cnkgKmRkcCwgc3RydWN0IGRlbnRyeSAqKmRwcCkKIAkqZHBw
ICA9IGRwOwogCWVycm9yID0gMDsKIG91dDoKLQlpZiAoZHZwICE9IG51bGxwdHIpIHsKKwlpZiAo
ZHZwICE9IE5VTEwpIHsKIAkJdm5fdW5sb2NrKGR2cCk7CiAJfQogCXJldHVybiAoZXJyb3IpOwpk
aWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvbWFpbi5jIGIvbGliL3Zmc2NvcmUvbWFpbi5jCmluZGV4
IDkwZGYzZDcxLi44MmU0NTkxNyAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvbWFpbi5jCisrKyBi
L2xpYi92ZnNjb3JlL21haW4uYwpAQCAtNzksNyArNzksNyBAQCBpbnQgb3Blbihjb25zdCBjaGFy
ICpwYXRobmFtZSwgaW50IGZsYWdzLCAuLi4pCiAKIAlzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFz
azsKIAljaGFyIHBhdGhbUEFUSF9NQVhdOwotCXN0cnVjdCBmaWxlICpmcDsKKwlzdHJ1Y3QgdmZz
Y29yZV9maWxlICpmcDsKIAlpbnQgZmQsIGVycm9yOwogCWludCBhY2M7CiAKQEAgLTEzNSw3ICsx
MzUsNyBAQCBpbnQgb3BlbmF0KGludCBkaXJmZCwgY29uc3QgY2hhciAqcGF0aG5hbWUsIGludCBm
bGFncywgLi4uKQogCQlyZXR1cm4gb3BlbihwYXRobmFtZSwgZmxhZ3MsIG1vZGUpOwogCX0KIAot
CXN0cnVjdCBmaWxlICpmcDsKKwlzdHJ1Y3QgdmZzY29yZV9maWxlICpmcDsKIAlpbnQgZXJyb3Ig
PSBmZ2V0KGRpcmZkLCAmZnApOwogCWlmIChlcnJvcikgewogCQllcnJubyA9IGVycm9yOwpAQCAt
MTk3LDcgKzE5Nyw3IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX21rbm9kX2VyciwgIiVkIiwgaW50
KTsKIAogaW50IF9feG1rbm9kKGludCB2ZXIsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBtb2RlX3Qg
bW9kZSwgZGV2X3QgKmRldikKIHsKLQlhc3NlcnQodmVyID09IDApOyAvLyBPbiB4ODYtNjQgTGlu
dXgsIF9NS05PRF9WRVJfTElOVVggaXMgMC4KKwlVS19BU1NFUlQodmVyID09IDApOyAvLyBPbiB4
ODYtNjQgTGludXgsIF9NS05PRF9WRVJfTElOVVggaXMgMC4KIAlzdHJ1Y3QgdGFzayAqdCA9IG1h
aW5fdGFzazsKIAljaGFyIHBhdGhbUEFUSF9NQVhdOwogCWludCBlcnJvcjsKQEAgLTIzMSw3ICsy
MzEsNyBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19sc2Vla19lcnIsICIlZCIsIGludCk7CiAKIG9m
Zl90IGxzZWVrKGludCBmZCwgb2ZmX3Qgb2Zmc2V0LCBpbnQgd2hlbmNlKQogewotCXN0cnVjdCBm
aWxlICpmcDsKKwlzdHJ1Y3QgdmZzY29yZV9maWxlICpmcDsKIAlvZmZfdCBvcmc7CiAJaW50IGVy
cm9yOwogCkBAIC0yNjUsMTEgKzI2NSwxMiBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19wcmVhZF9l
cnIsICIlZCIsIGludCk7CiAvLyAqYW5kKiBhIG5vbi16ZXJvIG51bWJlciBvZiB3cml0dGVuIGJ5
dGVzLiBJbiB0aGF0IGNhc2UsIHdlIG5lZWQgdG8gemVybyB0aGUKIC8vIGVycm9yLCBzbyB0aGUg
c3lzdGVtIGNhbGwgYXBwZWFyIGEgc3VjY2Vzc2Z1bCBwYXJ0aWFsIHJlYWQvd3JpdGUuCiAvLyBJ
biBGcmVlQlNELCBkb2ZpbGV3cml0ZSgpIGFuZCBkb2ZpbGVyZWFkKCkgKHN5c19nZW5lcmljLmMp
IGRvIHRoaXMgdG9vLgotc3RhdGljIGlubGluZSBib29sIGhhc19lcnJvcihpbnQgZXJyb3IsIGlu
dCBieXRlcykKK3N0YXRpYyBpbmxpbmUgaW50IGhhc19lcnJvcihpbnQgZXJyb3IsIGludCBieXRl
cykKIHsKKwkvKiBUT0RPOiBPU3YgY2hlY2tzIGFsc28gZm9yIEVSRVNUQVJUICovCiAJcmV0dXJu
IGVycm9yICYmICgKIAkJCShieXRlcyA9PSAwKSB8fAotCQkJKGVycm9yICE9IEVXT1VMREJMT0NL
ICYmIGVycm9yICE9IEVJTlRSICYmIGVycm9yICE9IEVSRVNUQVJUKSk7CisJCQkoZXJyb3IgIT0g
RVdPVUxEQkxPQ0sgJiYgZXJyb3IgIT0gRUlOVFIpKTsKIH0KIAogCkBAIC0yODAsNyArMjgxLDcg
QEAgc3NpemVfdCBwcmVhZChpbnQgZmQsIHZvaWQgKmJ1Ziwgc2l6ZV90IGNvdW50LCBvZmZfdCBv
ZmZzZXQpCiAJCQkuaW92X2Jhc2UJPSBidWYsCiAJCQkuaW92X2xlbgk9IGNvdW50LAogCX07Ci0J
c3RydWN0IGZpbGUgKmZwOworCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwOwogCXNpemVfdCBieXRl
czsKIAlpbnQgZXJyb3I7CiAKQEAgLTMyMCw3ICszMjEsNyBAQCBzc2l6ZV90IHB3cml0ZShpbnQg
ZmQsIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGNvdW50LCBvZmZfdCBvZmZzZXQpCiAJCQkuaW92
X2Jhc2UJPSAodm9pZCAqKWJ1ZiwKIAkJCS5pb3ZfbGVuCT0gY291bnQsCiAJfTsKLQlzdHJ1Y3Qg
ZmlsZSAqZnA7CisJc3RydWN0IHZmc2NvcmVfZmlsZSAqZnA7CiAJc2l6ZV90IGJ5dGVzOwogCWlu
dCBlcnJvcjsKIApAQCAtMzUxLDcgKzM1Miw3IEBAIHNzaXplX3Qgd3JpdGUoaW50IGZkLCBjb25z
dCB2b2lkICpidWYsIHNpemVfdCBjb3VudCkKIAogc3NpemVfdCBwcmVhZHYoaW50IGZkLCBjb25z
dCBzdHJ1Y3QgaW92ZWMgKmlvdiwgaW50IGlvdmNudCwgb2ZmX3Qgb2Zmc2V0KQogewotCXN0cnVj
dCBmaWxlICpmcDsKKwlzdHJ1Y3QgdmZzY29yZV9maWxlICpmcDsKIAlzaXplX3QgYnl0ZXM7CiAJ
aW50IGVycm9yOwogCkBAIC0zODQsNyArMzg1LDcgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfcHdy
aXRldl9lcnIsICIlZCIsIGludCk7CiAKIHNzaXplX3QgcHdyaXRldihpbnQgZmQsIGNvbnN0IHN0
cnVjdCBpb3ZlYyAqaW92LCBpbnQgaW92Y250LCBvZmZfdCBvZmZzZXQpCiB7Ci0Jc3RydWN0IGZp
bGUgKmZwOworCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwOwogCXNpemVfdCBieXRlczsKIAlpbnQg
ZXJyb3I7CiAKQEAgLTQxOSw3ICs0MjAsNyBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19pb2N0bF9l
cnIsICIlZCIsIGludCk7CiAKIGludCBpb2N0bChpbnQgZmQsIHVuc2lnbmVkIGxvbmcgaW50IHJl
cXVlc3QsIC4uLikKIHsKLQlzdHJ1Y3QgZmlsZSAqZnA7CisJc3RydWN0IHZmc2NvcmVfZmlsZSAq
ZnA7CiAJaW50IGVycm9yOwogCXZhX2xpc3QgYXA7CiAJdm9pZCogYXJnOwpAQCAtNDU2LDcgKzQ1
Nyw3IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2ZzeW5jX2VyciwgIiVkIiwgaW50KTsKIAogaW50
IGZzeW5jKGludCBmZCkKIHsKLQlzdHJ1Y3QgZmlsZSAqZnA7CisJc3RydWN0IHZmc2NvcmVfZmls
ZSAqZnA7CiAJaW50IGVycm9yOwogCiAJdHJhY2VfdmZzX2ZzeW5jKGZkKTsKQEAgLTQ5MCw3ICs0
OTEsNyBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19mc3RhdF9lcnIsICIlZCIsIGludCk7CiAKIGlu
dCBfX2Z4c3RhdChpbnQgdmVyLCBpbnQgZmQsIHN0cnVjdCBzdGF0ICpzdCkKIHsKLQlzdHJ1Y3Qg
ZmlsZSAqZnA7CisJc3RydWN0IHZmc2NvcmVfZmlsZSAqZnA7CiAJaW50IGVycm9yOwogCiAJdHJh
Y2VfdmZzX2ZzdGF0KGZkLCBzdCk7CkBAIC01MjYsNyArNTI3LDcgQEAgaW50IF9fZnhzdGF0YXQo
aW50IHZlciwgaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwgc3RydWN0IHN0YXQgKnN0
LAogCQlpbnQgZmxhZ3MpCiB7CiAJaWYgKGZsYWdzICYgQVRfU1lNTElOS19OT0ZPTExPVykgewot
CQlVTklNUExFTUVOVEVEKCJmc3RhdGF0KCkgd2l0aCBBVF9TWU1MSU5LX05PRk9MTE9XIik7CisJ
CVVLX0NSQVNIKCJVTklNUExFTUVOVEVEOiBmc3RhdGF0KCkgd2l0aCBBVF9TWU1MSU5LX05PRk9M
TE9XIik7CiAJfQogCiAJaWYgKHBhdGhuYW1lWzBdID09ICcvJyB8fCBkaXJmZCA9PSBBVF9GRENX
RCkgewpAQCAtNTM4LDcgKzUzOSw3IEBAIGludCBfX2Z4c3RhdGF0KGludCB2ZXIsIGludCBkaXJm
ZCwgY29uc3QgY2hhciAqcGF0aG5hbWUsIHN0cnVjdCBzdGF0ICpzdCwKIAkJcmV0dXJuIGZzdGF0
KGRpcmZkLCBzdCk7CiAJfQogCi0Jc3RydWN0IGZpbGUgKmZwOworCXN0cnVjdCB2ZnNjb3JlX2Zp
bGUgKmZwOwogCWludCBlcnJvciA9IGZnZXQoZGlyZmQsICZmcCk7CiAJaWYgKGVycm9yKSB7CiAJ
CWVycm5vID0gZXJyb3I7CkBAIC01NzQsNyArNTc1LDkgQEAgTEZTNjQoZnN0YXRhdCk7CiAKIGlu
dCBmbG9jayhpbnQgZmQsIGludCBvcGVyYXRpb24pCiB7Ci0JaWYgKCFmaWxlcmVmX2Zyb21fZmQo
ZmQpKSB7CisJc3RydWN0IHZmc2NvcmVfZmlsZSAqZmlsZTsKKworCWlmICghZmdldChmZCwgJmZp
bGUpKSB7CiAJCXJldHVybiBsaWJjX2Vycm9yKEVCQURGKTsKIAl9CiAKQEAgLTU5Miw3ICs1OTUs
NyBAQCBpbnQgZmxvY2soaW50IGZkLCBpbnQgb3BlcmF0aW9uKQogCXJldHVybiAwOwogfQogCi1U
UkFDRVBPSU5UKHRyYWNlX3Zmc19yZWFkZGlyLCAiJWQgJXAiLCBpbnQsIGRpcmVudCopOworVFJB
Q0VQT0lOVCh0cmFjZV92ZnNfcmVhZGRpciwgIiVkICVwIiwgaW50LCBzdHJ1Y3QgZGlyZW50Kik7
CiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19yZWFkZGlyX3JldCwgIiIpOwogVFJBQ0VQT0lOVCh0cmFj
ZV92ZnNfcmVhZGRpcl9lcnIsICIlZCIsIGludCk7CiAKQEAgLTYxMSw3ICs2MTQsNyBAQCBESVIg
Km9wZW5kaXIoY29uc3QgY2hhciAqcGF0aCkKIAlkaXItPmZkID0gb3BlbihwYXRoLCBPX1JET05M
WSk7CiAJaWYgKGRpci0+ZmQgPCAwKSB7CiAJCWZyZWUoZGlyKTsKLQkJcmV0dXJuIG51bGxwdHI7
CisJCXJldHVybiBOVUxMOwogCX0KIAlyZXR1cm4gZGlyOwogfQpAQCAtNjIxLDExICs2MjQsMTEg
QEAgRElSICpmZG9wZW5kaXIoaW50IGZkKQogCURJUiAqZGlyOwogCXN0cnVjdCBzdGF0IHN0Owog
CWlmIChmc3RhdChmZCwgJnN0KSA8IDApIHsKLQkJcmV0dXJuIG51bGxwdHI7CisJCXJldHVybiBO
VUxMOwogCX0KIAlpZiAoIVNfSVNESVIoc3Quc3RfbW9kZSkpIHsKIAkJZXJybm8gPSBFTk9URElS
OwotCQlyZXR1cm4gbnVsbHB0cjsKKwkJcmV0dXJuIE5VTEw7CiAJfQogCWRpciA9IG1hbGxvYyhz
aXplb2YoKmRpcikpOwogCWlmICghZGlyKSB7CkBAIC02NjksMTMgKzY3MiwxMSBAQCBzdHJ1Y3Qg
ZGlyZW50ICpyZWFkZGlyKERJUiAqZGlyKQogaW50IHJlYWRkaXJfcihESVIgKmRpciwgc3RydWN0
IGRpcmVudCAqZW50cnksIHN0cnVjdCBkaXJlbnQgKipyZXN1bHQpCiB7CiAJaW50IGVycm9yOwot
CXN0cnVjdCBmaWxlICpmcDsKKwlzdHJ1Y3QgdmZzY29yZV9maWxlICpmcDsKIAogCXRyYWNlX3Zm
c19yZWFkZGlyKGRpci0+ZmQsIGVudHJ5KTsKIAllcnJvciA9IGZnZXQoZGlyLT5mZCwgJmZwKTsK
LQlpZiAoZXJyb3IpIHsKLQkJdHJhY2VfdmZzX3JlYWRkaXJfZXJyKGVycm9yKTsKLQl9IGVsc2Ug
eworCWlmICghZXJyb3IpIHsKIAkJZXJyb3IgPSBzeXNfcmVhZGRpcihmcCwgZW50cnkpOwogCQlm
ZHJvcChmcCk7CiAJCWlmIChlcnJvcikgewpAQCAtNjg4LDcgKzY4OSw3IEBAIGludCByZWFkZGly
X3IoRElSICpkaXIsIHN0cnVjdCBkaXJlbnQgKmVudHJ5LCBzdHJ1Y3QgZGlyZW50ICoqcmVzdWx0
KQogCWVudHJ5LT5kX3JlY2xlbiA9IHNpemVvZigqZW50cnkpOwogCiAJaWYgKGVycm9yKSB7Ci0J
CSpyZXN1bHQgPSBudWxscHRyOworCQkqcmVzdWx0ID0gTlVMTDsKIAl9IGVsc2UgewogCQkqcmVz
dWx0ID0gZW50cnk7CiAJfQpAQCAtNzA2LDcgKzcwNyw3IEBAIHN0cnVjdCBkaXJlbnQgKnJlYWRk
aXI2NChESVIgKmRpcikgX19hdHRyaWJ1dGVfXygoYWxpYXMoInJlYWRkaXIiKSkpOwogCiB2b2lk
IHJld2luZGRpcihESVIgKmRpcnApCiB7Ci0Jc3RydWN0IGZpbGUgKmZwOworCXN0cnVjdCB2ZnNj
b3JlX2ZpbGUgKmZwOwogCiAJaW50IGVycm9yID0gZmdldChkaXJwLT5mZCwgJmZwKTsKIAlpZiAo
ZXJyb3IpIHsKQEAgLTcyMiw3ICs3MjMsNyBAQCB2b2lkIHJld2luZGRpcihESVIgKmRpcnApCiAK
IGxvbmcgdGVsbGRpcihESVIgKmRpcnApCiB7Ci0Jc3RydWN0IGZpbGUgKmZwOworCXN0cnVjdCB2
ZnNjb3JlX2ZpbGUgKmZwOwogCWludCBlcnJvciA9IGZnZXQoZGlycC0+ZmQsICZmcCk7CiAJaWYg
KGVycm9yKSB7CiAJCXJldHVybiBsaWJjX2Vycm9yKGVycm9yKTsKQEAgLTczOSw3ICs3NDAsNyBA
QCBsb25nIHRlbGxkaXIoRElSICpkaXJwKQogCiB2b2lkIHNlZWtkaXIoRElSICpkaXJwLCBsb25n
IGxvYykKIHsKLQlzdHJ1Y3QgZmlsZSAqZnA7CisJc3RydWN0IHZmc2NvcmVfZmlsZSAqZnA7CiAJ
aW50IGVycm9yID0gZmdldChkaXJwLT5mZCwgJmZwKTsKIAlpZiAoZXJyb3IpIHsKIAkJLy8gUE9T
SVggc3BlY2lmaWVzIHNlZWtkaXIoKSBjYW5ub3QgcmV0dXJuIGVycm9ycy4KQEAgLTc5MCw3ICs3
OTEsNyBAQCBpbnQgcm1kaXIoY29uc3QgY2hhciAqcGF0aG5hbWUpCiAKIAl0cmFjZV92ZnNfcm1k
aXIocGF0aG5hbWUpOwogCWVycm9yID0gRU5PRU5UOwotCWlmIChwYXRobmFtZSA9PSBudWxscHRy
KQorCWlmIChwYXRobmFtZSA9PSBOVUxMKQogCQlnb3RvIG91dF9lcnJubzsKIAlpZiAoKGVycm9y
ID0gdGFza19jb252KHQsIHBhdGhuYW1lLCBWV1JJVEUsIHBhdGgpKSAhPSAwKQogCQlnb3RvIG91
dF9lcnJubzsKQEAgLTgyNiw5ICs4MjcsOSBAQCBnZXRfbGFzdF9jb21wb25lbnQoY29uc3QgY2hh
ciAqcGF0aCwgY2hhciAqZHN0KQogCWRzdFtsZW5dID0gMDsKIH0KIAotc3RhdGljIGJvb2wgbnVs
bF9vcl9lbXB0eShjb25zdCBjaGFyICpzdHIpCitzdGF0aWMgaW50IG51bGxfb3JfZW1wdHkoY29u
c3QgY2hhciAqc3RyKQogewotCXJldHVybiBzdHIgPT0gbnVsbHB0ciB8fCAqc3RyID09ICdcMCc7
CisJcmV0dXJuIHN0ciA9PSBOVUxMIHx8ICpzdHIgPT0gJ1wwJzsKIH0KIAogVFJBQ0VQT0lOVCh0
cmFjZV92ZnNfcmVuYW1lLCAiXCIlc1wiIFwiJXNcIiIsIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFy
Kik7CkBAIC04ODMsNyArODg0LDcgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfY2hkaXJfZXJyLCAi
JWQiLCBpbnQpOwogc3RhdGljIGludAogX19kb19mY2hkaXIoc3RydWN0IHZmc2NvcmVfZmlsZSAq
ZnAsIHN0cnVjdCB0YXNrICp0KQogewotCXN0cnVjdCBmaWxlICpvbGQgPSBudWxscHRyOworCXN0
cnVjdCB2ZnNjb3JlX2ZpbGUgKm9sZCA9IE5VTEw7CiAKIAlVS19BU1NFUlQodCk7CiAKQEAgLTkw
NywxMSArOTA4LDExIEBAIGludCBjaGRpcihjb25zdCBjaGFyICpwYXRobmFtZSkKIAl0cmFjZV92
ZnNfY2hkaXIocGF0aG5hbWUpOwogCXN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOwogCWNoYXIg
cGF0aFtQQVRIX01BWF07Ci0Jc3RydWN0IGZpbGUgKmZwOworCXN0cnVjdCB2ZnNjb3JlX2ZpbGUg
KmZwOwogCWludCBlcnJvcjsKIAogCWVycm9yID0gRU5PRU5UOwotCWlmIChwYXRobmFtZSA9PSBu
dWxscHRyKQorCWlmIChwYXRobmFtZSA9PSBOVUxMKQogCQlnb3RvIG91dF9lcnJubzsKIAogCWlm
ICgoZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5hbWUsIFZSRUFELCBwYXRoKSkgIT0gMCkKQEAg
LTk0NSw3ICs5NDYsNyBAQCBpbnQgZmNoZGlyKGludCBmZCkKIHsKIAl0cmFjZV92ZnNfZmNoZGly
KGZkKTsKIAlzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKLQlzdHJ1Y3QgZmlsZSAqZnA7CisJ
c3RydWN0IHZmc2NvcmVfZmlsZSAqZnA7CiAJaW50IGVycm9yOwogCiAJZXJyb3IgPSBmZ2V0KGZk
LCAmZnApOwpAQCAtOTgxLDcgKzk4Miw3IEBAIGludCBsaW5rKGNvbnN0IGNoYXIgKm9sZHBhdGgs
IGNvbnN0IGNoYXIgKm5ld3BhdGgpCiAJdHJhY2VfdmZzX2xpbmsob2xkcGF0aCwgbmV3cGF0aCk7
CiAKIAllcnJvciA9IEVOT0VOVDsKLQlpZiAob2xkcGF0aCA9PSBudWxscHRyIHx8IG5ld3BhdGgg
PT0gbnVsbHB0cikKKwlpZiAob2xkcGF0aCA9PSBOVUxMIHx8IG5ld3BhdGggPT0gTlVMTCkKIAkJ
Z290byBvdXRfZXJybm87CiAJaWYgKChlcnJvciA9IHRhc2tfY29udih0LCBvbGRwYXRoLCBWV1JJ
VEUsIHBhdGgxKSkgIT0gMCkKIAkJZ290byBvdXRfZXJybm87CkBAIC0xMDExLDcgKzEwMTIsNyBA
QCBpbnQgc3ltbGluayhjb25zdCBjaGFyICpvbGRwYXRoLCBjb25zdCBjaGFyICpuZXdwYXRoKQog
CXRyYWNlX3Zmc19zeW1saW5rKG9sZHBhdGgsIG5ld3BhdGgpOwogCiAJZXJyb3IgPSBFTk9FTlQ7
Ci0JaWYgKG9sZHBhdGggPT0gbnVsbHB0ciB8fCBuZXdwYXRoID09IG51bGxwdHIpIHsKKwlpZiAo
b2xkcGF0aCA9PSBOVUxMIHx8IG5ld3BhdGggPT0gTlVMTCkgewogCQllcnJubyA9IEVOT0VOVDsK
IAkJdHJhY2VfdmZzX3N5bWxpbmtfZXJyKGVycm9yKTsKIAkJcmV0dXJuICgtMSk7CkBAIC0xMDQw
LDcgKzEwNDEsNyBAQCBpbnQgdW5saW5rKGNvbnN0IGNoYXIgKnBhdGhuYW1lKQogCWludCBlcnJv
cjsKIAogCWVycm9yID0gRU5PRU5UOwotCWlmIChwYXRobmFtZSA9PSBudWxscHRyKQorCWlmIChw
YXRobmFtZSA9PSBOVUxMKQogCQlnb3RvIG91dF9lcnJubzsKIAlpZiAoKGVycm9yID0gdGFza19j
b252KHQsIHBhdGhuYW1lLCBWV1JJVEUsIHBhdGgpKSAhPSAwKQogCQlnb3RvIG91dF9lcnJubzsK
QEAgLTExNTYsNyArMTE1Nyw3IEBAIGludCBfX3N0YXRmcyhjb25zdCBjaGFyICpwYXRobmFtZSwg
c3RydWN0IHN0YXRmcyAqYnVmKQogCWVycm5vID0gZXJyb3I7CiAJcmV0dXJuIC0xOwogfQotd2Vh
a19hbGlhcyhfX3N0YXRmcywgc3RhdGZzKTsKK19fd2Vha19hbGlhcyhfX3N0YXRmcywgc3RhdGZz
KTsKIAogTEZTNjQoc3RhdGZzKTsKIApAQCAtMTE2Niw3ICsxMTY3LDcgQEAgVFJBQ0VQT0lOVCh0
cmFjZV92ZnNfZnN0YXRmc19lcnIsICIlZCIsIGludCk7CiAKIGludCBfX2ZzdGF0ZnMoaW50IGZk
LCBzdHJ1Y3Qgc3RhdGZzICpidWYpCiB7Ci0Jc3RydWN0IGZpbGUgKmZwOworCXN0cnVjdCB2ZnNj
b3JlX2ZpbGUgKmZwOwogCWludCBlcnJvcjsKIAogCXRyYWNlX3Zmc19mc3RhdGZzKGZkLCBidWYp
OwpAQCAtMTE4Nyw3ICsxMTg4LDcgQEAgaW50IF9fZnN0YXRmcyhpbnQgZmQsIHN0cnVjdCBzdGF0
ZnMgKmJ1ZikKIAllcnJubyA9IGVycm9yOwogCXJldHVybiAtMTsKIH0KLXdlYWtfYWxpYXMoX19m
c3RhdGZzLCBmc3RhdGZzKTsKK19fd2Vha19hbGlhcyhfX2ZzdGF0ZnMsIGZzdGF0ZnMpOwogCiBM
RlM2NChmc3RhdGZzKTsKIApAQCAtMTI0MSw3ICsxMjQyLDcgQEAgY2hhciAqZ2V0Y3dkKGNoYXIg
KnBhdGgsIHNpemVfdCBzaXplKQogewogCXRyYWNlX3Zmc19nZXRjd2QocGF0aCwgc2l6ZSk7CiAJ
c3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7Ci0JaW50IGxlbiA9IHN0cmxlbih0LT50X2N3ZCkg
KyAxOworCXNpemVfdCBsZW4gPSBzdHJsZW4odC0+dF9jd2QpICsgMTsKIAlpbnQgZXJyb3I7CiAK
IAlpZiAoIXBhdGgpIHsKQEAgLTEyNzEsNyArMTI3Miw3IEBAIGNoYXIgKmdldGN3ZChjaGFyICpw
YXRoLCBzaXplX3Qgc2l6ZSkKIAlvdXRfZXJybm86CiAJdHJhY2VfdmZzX2dldGN3ZF9lcnIoZXJy
b3IpOwogCWVycm5vID0gZXJyb3I7Ci0JcmV0dXJuIG51bGxwdHI7CisJcmV0dXJuIE5VTEw7CiB9
CiAKIFRSQUNFUE9JTlQodHJhY2VfdmZzX2R1cCwgIiVkIiwgaW50KTsKQEAgLTEyODIsNyArMTI4
Myw3IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2R1cF9lcnIsICIlZCIsIGludCk7CiAgKi8KIGlu
dCBkdXAoaW50IG9sZGZkKQogewotCXN0cnVjdCBmaWxlICpmcDsKKwlzdHJ1Y3QgdmZzY29yZV9m
aWxlICpmcDsKIAlpbnQgbmV3ZmQ7CiAJaW50IGVycm9yOwogCkBAIC0xMzE1LDcgKzEzMTYsNyBA
QCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19kdXAzX2VyciwgIiVkIiwgaW50KTsKICAqLwogaW50IGR1
cDMoaW50IG9sZGZkLCBpbnQgbmV3ZmQsIGludCBmbGFncykKIHsKLQlzdHJ1Y3QgZmlsZSAqZnA7
CisJc3RydWN0IHZmc2NvcmVfZmlsZSAqZnA7CiAJaW50IGVycm9yOwogCiAJdHJhY2VfdmZzX2R1
cDMob2xkZmQsIG5ld2ZkLCBmbGFncyk7CkBAIC0xMzM3LDcgKzEzMzgsNyBAQCBpbnQgZHVwMyhp
bnQgb2xkZmQsIGludCBuZXdmZCwgaW50IGZsYWdzKQogCWlmIChlcnJvcikKIAkJZ290byBvdXRf
ZXJybm87CiAKLQllcnJvciA9IGZkc2V0KG5ld2ZkLCBmcCk7CisJZXJyb3IgPSB2ZnNjb3JlX2lu
c3RhbGxfZmQobmV3ZmQsIGZwKTsKIAlpZiAoZXJyb3IpIHsKIAkJZmRyb3AoZnApOwogCQlnb3Rv
IG91dF9lcnJubzsKQEAgLTEzNzMsNyArMTM3NCw3IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2Zj
bnRsX2VyciwgIiVkIiwgaW50KTsKIAogaW50IGZjbnRsKGludCBmZCwgaW50IGNtZCwgaW50IGFy
ZykKIHsKLQlzdHJ1Y3QgZmlsZSAqZnA7CisJc3RydWN0IHZmc2NvcmVfZmlsZSAqZnA7CiAJaW50
IHJldCA9IDAsIGVycm9yOwogCWludCB0bXA7CiAKQEAgLTE0OTAsMTQgKzE0OTEsMTQgQEAgaW50
IGFjY2Vzcyhjb25zdCBjaGFyICpwYXRobmFtZSwgaW50IG1vZGUpCiBpbnQgZmFjY2Vzc2F0KGlu
dCBkaXJmZCwgY29uc3QgY2hhciAqcGF0aG5hbWUsIGludCBtb2RlLCBpbnQgZmxhZ3MpCiB7CiAJ
aWYgKGZsYWdzICYgQVRfU1lNTElOS19OT0ZPTExPVykgewotCQlVTklNUExFTUVOVEVEKCJmYWNj
ZXNzYXQoKSB3aXRoIEFUX1NZTUxJTktfTk9GT0xMT1ciKTsKKwkJVUtfQ1JBU0goIlVOSU1QTEVN
RU5URUQ6IGZhY2Nlc3NhdCgpIHdpdGggQVRfU1lNTElOS19OT0ZPTExPVyIpOwogCX0KIAogCWlm
IChwYXRobmFtZVswXSA9PSAnLycgfHwgZGlyZmQgPT0gQVRfRkRDV0QpIHsKIAkJcmV0dXJuIGFj
Y2VzcyhwYXRobmFtZSwgbW9kZSk7CiAJfQogCi0Jc3RydWN0IGZpbGUgKmZwOworCXN0cnVjdCB2
ZnNjb3JlX2ZpbGUgKmZwOwogCWludCBlcnJvciA9IGZnZXQoZGlyZmQsICZmcCk7CiAJaWYgKGVy
cm9yKSB7CiAJCWVycm5vID0gZXJyb3I7CkBAIC0xNTI4LDcgKzE1MjksNyBAQCBpbnQgZXVpZGFj
Y2Vzcyhjb25zdCBjaGFyICpwYXRobmFtZSwgaW50IG1vZGUpCiAJcmV0dXJuIGFjY2VzcyhwYXRo
bmFtZSwgbW9kZSk7CiB9CiAKLXdlYWtfYWxpYXMoZXVpZGFjY2VzcyxlYWNjZXNzKTsKK19fd2Vh
a19hbGlhcyhldWlkYWNjZXNzLGVhY2Nlc3MpOwogCiAjaWYgMAogLyoKQEAgLTE1MzYsNyArMTUz
Nyw3IEBAIHdlYWtfYWxpYXMoZXVpZGFjY2VzcyxlYWNjZXNzKTsKICAqLwogaW50IGlzYXR0eShp
bnQgZmQpCiB7Ci0Jc3RydWN0IGZpbGUgKmZwOworCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwOwog
CWludCBpc3R0eSA9IDA7CiAKIAl0cmFjZV92ZnNfaXNhdHR5KGZkKTsKQEAgLTE1NzAsNyArMTU3
MSw3IEBAIGludCB0cnVuY2F0ZShjb25zdCBjaGFyICpwYXRobmFtZSwgb2ZmX3QgbGVuZ3RoKQog
CWludCBlcnJvcjsKIAogCWVycm9yID0gRU5PRU5UOwotCWlmIChwYXRobmFtZSA9PSBudWxscHRy
KQorCWlmIChwYXRobmFtZSA9PSBOVUxMKQogCQlnb3RvIG91dF9lcnJubzsKIAlpZiAoKGVycm9y
ID0gdGFza19jb252KHQsIHBhdGhuYW1lLCBWV1JJVEUsIHBhdGgpKSAhPSAwKQogCQlnb3RvIG91
dF9lcnJubzsKQEAgLTE1OTUsNyArMTU5Niw3IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2Z0cnVu
Y2F0ZV9lcnIsICIlZCIsIGludCk7CiBpbnQgZnRydW5jYXRlKGludCBmZCwgb2ZmX3QgbGVuZ3Ro
KQogewogCXRyYWNlX3Zmc19mdHJ1bmNhdGUoZmQsIGxlbmd0aCk7Ci0Jc3RydWN0IGZpbGUgKmZw
OworCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwOwogCWludCBlcnJvcjsKIAogCWVycm9yID0gZmdl
dChmZCwgJmZwKTsKQEAgLTE2MzAsNyArMTYzMSw3IEBAIHNzaXplX3QgcmVhZGxpbmsoY29uc3Qg
Y2hhciAqcGF0aG5hbWUsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnNpemUpCiAJCWdvdG8gb3V0X2Vy
cm5vOwogCiAJZXJyb3IgPSBFTk9FTlQ7Ci0JaWYgKHBhdGhuYW1lID09IG51bGxwdHIpCisJaWYg
KHBhdGhuYW1lID09IE5VTEwpCiAJCWdvdG8gb3V0X2Vycm5vOwogCWVycm9yID0gdGFza19jb252
KHQsIHBhdGhuYW1lLCBWV1JJVEUsIHBhdGgpOwogCWlmIChlcnJvcikKQEAgLTE2NTQsNyArMTY1
NSw3IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2ZhbGxvY2F0ZV9lcnIsICIlZCIsIGludCk7CiAK
IGludCBmYWxsb2NhdGUoaW50IGZkLCBpbnQgbW9kZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxl
bikKIHsKLQlzdHJ1Y3QgZmlsZSAqZnA7CisJc3RydWN0IHZmc2NvcmVfZmlsZSAqZnA7CiAJaW50
IGVycm9yOwogCiAJdHJhY2VfdmZzX2ZhbGxvY2F0ZShmZCwgbW9kZSwgb2Zmc2V0LCBsZW4pOwpA
QCAtMTY4MiwxNCArMTY4MywxNCBAQCBMRlM2NChmYWxsb2NhdGUpOwogaW50IGZ1dGltZXNhdChp
bnQgZGlyZmQsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBjb25zdCBzdHJ1Y3QgdGltZXZhbCB0aW1l
c1syXSkKIHsKIAlzdHJ1Y3Qgc3RhdCBzdDsKLQlzdHJ1Y3QgZmlsZSAqZnA7CisJc3RydWN0IHZm
c2NvcmVfZmlsZSAqZnA7CiAJaW50IGVycm9yOwogCWNoYXIgKmFic29sdXRlX3BhdGg7CiAKIAlp
ZiAoKHBhdGhuYW1lICYmIHBhdGhuYW1lWzBdID09ICcvJykgfHwgZGlyZmQgPT0gQVRfRkRDV0Qp
CiAJCXJldHVybiB1dGltZXMocGF0aG5hbWUsIHRpbWVzKTsKIAotCS8vIE5vdGU6IGlmIHBhdGhu
YW1lID09IG51bGxwdHIsIGZ1dGltZXNhdCBvcGVyYXRlcyBvbiBkaXJmZCBpdHNlbGYsIGFuZCBp
bgorCS8vIE5vdGU6IGlmIHBhdGhuYW1lID09IE5VTEwsIGZ1dGltZXNhdCBvcGVyYXRlcyBvbiBk
aXJmZCBpdHNlbGYsIGFuZCBpbgogCS8vIHRoYXQgY2FzZSBpdCBkb2Vzbid0IGhhdmUgdG8gYmUg
YSBkaXJlY3RvcnkuCiAJaWYgKHBhdGhuYW1lKSB7CiAJCWVycm9yID0gZnN0YXQoZGlyZmQsICZz
dCk7CkBAIC0xODM1LDcgKzE4MzYsNyBAQCBpbnQgY2htb2QoY29uc3QgY2hhciAqcGF0aG5hbWUs
IG1vZGVfdCBtb2RlKQogCXN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOwogCWNoYXIgcGF0aFtQ
QVRIX01BWF07CiAJaW50IGVycm9yID0gRU5PRU5UOwotCWlmIChwYXRobmFtZSA9PSBudWxscHRy
KQorCWlmIChwYXRobmFtZSA9PSBOVUxMKQogCQlnb3RvIG91dF9lcnJubzsKIAlpZiAoKGVycm9y
ID0gdGFza19jb252KHQsIHBhdGhuYW1lLCBWV1JJVEUsIHBhdGgpKSAhPSAwKQogCQlnb3RvIG91
dF9lcnJubzsKQEAgLTE4OTMsOCArMTg5NCw4IEBAIGludCBsY2hvd24oY29uc3QgY2hhciAqcGF0
aCwgdWlkX3Qgb3duZXIsIGdpZF90IGdyb3VwKQogI2lmIDAKIHNzaXplX3Qgc2VuZGZpbGUoaW50
IG91dF9mZCwgaW50IGluX2ZkLCBvZmZfdCAqX29mZnNldCwgc2l6ZV90IGNvdW50KQogewotCXN0
cnVjdCBmaWxlICppbl9mcDsKLQlzdHJ1Y3QgZmlsZSAqb3V0X2ZwOworCXN0cnVjdCB2ZnNjb3Jl
X2ZpbGUgKmluX2ZwOworCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKm91dF9mcDsKIAlmaWxlcmVmIGlu
X2Z7ZmlsZXJlZl9mcm9tX2ZkKGluX2ZkKX07CiAJZmlsZXJlZiBvdXRfZntmaWxlcmVmX2Zyb21f
ZmQob3V0X2ZkKX07CiAKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL21vdW50LmMgYi9saWIvdmZz
Y29yZS9tb3VudC5jCmluZGV4IDA2OTIyZmZiLi43ZDA4M2Q2ZiAxMDA2NDQKLS0tIGEvbGliL3Zm
c2NvcmUvbW91bnQuYworKysgYi9saWIvdmZzY29yZS9tb3VudC5jCkBAIC01NCwxMiArNTQsMTMg
QEAKIC8qCiAgKiBMaXN0IGZvciBWRlMgbW91bnQgcG9pbnRzLgogICovCi1zdGF0aWMgc3RkOjps
aXN0PG1vdW50Kj4gbW91bnRfbGlzdDsKKworVUtfTElTVF9IRUFEKG1vdW50X2xpc3QpOwogCiAv
KgogICogR2xvYmFsIGxvY2sgdG8gYWNjZXNzIG1vdW50IHBvaW50LgogICovCi1zdGF0aWMgbXV0
ZXggbW91bnRfbG9jazsKK3N0YXRpYyBzdHJ1Y3QgdWtfbXV0ZXggbW91bnRfbG9jazsKIAogLyoK
ICAqIExvb2t1cCBmaWxlIHN5c3RlbS4KQEAgLTg0LDExICs4NSwxMSBAQCBzeXNfbW91bnQoY29u
c3QgY2hhciAqZGV2LCBjb25zdCBjaGFyICpkaXIsIGNvbnN0IGNoYXIgKmZzbmFtZSwgaW50IGZs
YWdzLCBjb25zdAogCWNvbnN0IHN0cnVjdCB2ZnNzdyAqZnM7CiAJc3RydWN0IG1vdW50ICptcDsK
IAlzdHJ1Y3QgZGV2aWNlICpkZXZpY2U7Ci0Jc3RydWN0IGRlbnRyeSAqZHBfY292ZXJlZDsKLQlz
dHJ1Y3Qgdm5vZGUgKnZwOworCXN0cnVjdCBkZW50cnkgKmRwX2NvdmVyZWQgPSBOVUxMOworCXN0
cnVjdCB2bm9kZSAqdnAgPSBOVUxMOwogCWludCBlcnJvcjsKIAotCWtwcmludGYoIlZGUzogbW91
bnRpbmcgJXMgYXQgJXNcbiIsIGZzbmFtZSwgZGlyKTsKKwl1a19wcl9pbmZvKCJWRlM6IG1vdW50
aW5nICVzIGF0ICVzXG4iLCBmc25hbWUsIGRpcik7CiAKIAlpZiAoIWRpciB8fCAqZGlyID09ICdc
MCcpCiAJCXJldHVybiBFTk9FTlQ7CkBAIC05Nyw3ICs5OCw3IEBAIHN5c19tb3VudChjb25zdCBj
aGFyICpkZXYsIGNvbnN0IGNoYXIgKmRpciwgY29uc3QgY2hhciAqZnNuYW1lLCBpbnQgZmxhZ3Ms
IGNvbnN0CiAJaWYgKCEoZnMgPSBmc19nZXRmcyhmc25hbWUpKSkKIAkJcmV0dXJuIEVOT0RFVjsg
IC8qIE5vIHN1Y2ggZmlsZSBzeXN0ZW0gKi8KIAotCS8qIE9wZW4gZGV2aWNlLiBudWxscHRyIGNh
biBiZSBzcGVjaWZpZWQgYXMgYSBkZXZpY2UuICovCisJLyogT3BlbiBkZXZpY2UuIE5VTEwgY2Fu
IGJlIHNwZWNpZmllZCBhcyBhIGRldmljZS4gKi8KIAkvLyBBbGxvdyBkZXZpY2Vfb3BlbigpIHRv
IGZhaWwsIGluIHdoaWNoIGNhc2UgZGV2IGlzIGludGVycHJldGVkCiAJLy8gYnkgdGhlIGZpbGUg
c3lzdGVtIG1vdW50IHJvdXRpbmUgKGUuZyB6ZnMgcG9vbHMpCiAJZGV2aWNlID0gMDsKQEAgLTEx
MSwxNyArMTEyLDIxIEBAIHN5c19tb3VudChjb25zdCBjaGFyICpkZXYsIGNvbnN0IGNoYXIgKmRp
ciwgY29uc3QgY2hhciAqZnNuYW1lLCBpbnQgZmxhZ3MsIGNvbnN0CiAJLy8gdGhhdCBvbmx5IG9u
ZSBzeXNfbW91bnQoKSBydW5zIGF0IGEgdGltZS4gV2UgY2Fubm90IHJldXNlIHRoZSBleGlzdGlu
ZwogCS8vIG1vdW50X2xvY2sgZm9yIHRoaXMgcHVycG9zZTogSWYgd2UgdGFrZSBtb3VudF9sb2Nr
IGFuZCB0aGVuIGRvCiAJLy8gbG9va3VwcywgdGhpcyBpcyBsb2NrIG9yZGVyIGludmVyc2lvbiBh
bmQgY2FuIHJlc3VsdCBpbiBkZWFkbG9jay4KLQlzdGF0aWMgbXV0ZXggc3lzX21vdW50X2xvY2s7
Ci0JU0NPUEVfTE9DSyhzeXNfbW91bnRfbG9jayk7Ci0JV0lUSF9MT0NLKG1vdW50X2xvY2spIHsK
LQkJZm9yIChhdXRvJiYgbXAgOiBtb3VudF9saXN0KSB7Ci0JCQlpZiAoIXN0cmNtcChtcC0+bV9w
YXRoLCBkaXIpIHx8Ci0JCQkJKGRldmljZSAmJiBtcC0+bV9kZXYgPT0gZGV2aWNlKSkgewotCQkJ
CWVycm9yID0gRUJVU1k7ICAvKiBBbHJlYWR5IG1vdW50ZWQgKi8KLQkJCQlnb3RvIGVycjE7Ci0J
CQl9CisKKwkvKiBUT0RPOiBwcm90ZWN0IHRoZSBmdW5jdGlvbiBmcm9tIHJlZW50cmFuY2UsIGFz
IGRlc2NyaWJlZCBpbgorCSAqIHRoZSBjb21tZW50IGFib3ZlICovCisJLyogc3RhdGljIG11dGV4
IHN5c19tb3VudF9sb2NrOyAqLworCS8qIFNDT1BFX0xPQ0soc3lzX21vdW50X2xvY2spOyAqLwor
CisJdWtfbXV0ZXhfbG9jaygmbW91bnRfbG9jayk7CisJdWtfbGlzdF9mb3JfZWFjaF9lbnRyeSht
cCwgJm1vdW50X2xpc3QsIG1udF9saXN0KSB7CisJCWlmICghc3RyY21wKG1wLT5tX3BhdGgsIGRp
cikgfHwKKwkJICAgIChkZXZpY2UgJiYgbXAtPm1fZGV2ID09IGRldmljZSkpIHsKKwkJCWVycm9y
ID0gRUJVU1k7ICAvKiBBbHJlYWR5IG1vdW50ZWQgKi8KKwkJCWdvdG8gZXJyMTsKIAkJfQogCX0K
Kwl1a19tdXRleF91bmxvY2soJm1vdW50X2xvY2spOwogCS8qCiAJICogQ3JlYXRlIFZGUyBtb3Vu
dCBlbnRyeS4KIAkgKi8KQEAgLTEzNCw3ICsxMzksNyBAQCBzeXNfbW91bnQoY29uc3QgY2hhciAq
ZGV2LCBjb25zdCBjaGFyICpkaXIsIGNvbnN0IGNoYXIgKmZzbmFtZSwgaW50IGZsYWdzLCBjb25z
dAogCW1wLT5tX29wID0gZnMtPnZzX29wOwogCW1wLT5tX2ZsYWdzID0gZmxhZ3M7CiAJbXAtPm1f
ZGV2ID0gZGV2aWNlOwotCW1wLT5tX2RhdGEgPSBudWxscHRyOworCW1wLT5tX2RhdGEgPSBOVUxM
OwogCXN0cmxjcHkobXAtPm1fcGF0aCwgZGlyLCBzaXplb2YobXAtPm1fcGF0aCkpOwogCXN0cmxj
cHkobXAtPm1fc3BlY2lhbCwgZGV2LCBzaXplb2YobXAtPm1fc3BlY2lhbCkpOwogCkBAIC0xNDMs
NyArMTQ4LDcgQEAgc3lzX21vdW50KGNvbnN0IGNoYXIgKmRldiwgY29uc3QgY2hhciAqZGlyLCBj
b25zdCBjaGFyICpmc25hbWUsIGludCBmbGFncywgY29uc3QKIAkgKi8KIAlpZiAoKmRpciA9PSAn
LycgJiYgKihkaXIgKyAxKSA9PSAnXDAnKSB7CiAJCS8qIElnbm9yZSBpZiBpdCBtb3VudHMgdG8g
Z2xvYmFsIHJvb3QgZGlyZWN0b3J5LiAqLwotCQlkcF9jb3ZlcmVkID0gbnVsbHB0cjsKKwkJZHBf
Y292ZXJlZCA9IE5VTEw7CiAJfSBlbHNlIHsKIAkJaWYgKChlcnJvciA9IG5hbWVpKGRpciwgJmRw
X2NvdmVyZWQpKSAhPSAwKSB7CiAKQEAgLTE2MCw4ICsxNjUsOCBAQCBzeXNfbW91bnQoY29uc3Qg
Y2hhciAqZGV2LCBjb25zdCBjaGFyICpkaXIsIGNvbnN0IGNoYXIgKmZzbmFtZSwgaW50IGZsYWdz
LCBjb25zdAogCS8qCiAJICogQ3JlYXRlIGEgcm9vdCB2bm9kZSBmb3IgdGhpcyBmaWxlIHN5c3Rl
bS4KIAkgKi8KLQl2Z2V0KG1wLCAwLCAmdnApOwotCWlmICh2cCA9PSBudWxscHRyKSB7CisJdmZz
Y29yZV92Z2V0KG1wLCAwLCAmdnApOworCWlmICh2cCA9PSBOVUxMKSB7CiAJCWVycm9yID0gRU5P
TUVNOwogCQlnb3RvIGVycjM7CiAJfQpAQCAtMTY5LDcgKzE3NCw3IEBAIHN5c19tb3VudChjb25z
dCBjaGFyICpkZXYsIGNvbnN0IGNoYXIgKmRpciwgY29uc3QgY2hhciAqZnNuYW1lLCBpbnQgZmxh
Z3MsIGNvbnN0CiAJdnAtPnZfZmxhZ3MgPSBWUk9PVDsKIAl2cC0+dl9tb2RlID0gU19JRkRJUiB8
IFNfSVJVU1IgfCBTX0lXVVNSIHwgU19JWFVTUjsKIAotCW1wLT5tX3Jvb3QgPSBkZW50cnlfYWxs
b2MobnVsbHB0ciwgdnAsICIvIik7CisJbXAtPm1fcm9vdCA9IGRlbnRyeV9hbGxvYyhOVUxMLCB2
cCwgIi8iKTsKIAlpZiAoIW1wLT5tX3Jvb3QpIHsKIAkJdnB1dCh2cCk7CiAJCWdvdG8gZXJyMzsK
QEAgLTE4OCw5ICsxOTMsOSBAQCBzeXNfbW91bnQoY29uc3QgY2hhciAqZGV2LCBjb25zdCBjaGFy
ICpkaXIsIGNvbnN0IGNoYXIgKmZzbmFtZSwgaW50IGZsYWdzLCBjb25zdAogCS8qCiAJICogSW5z
ZXJ0IHRvIG1vdW50IGxpc3QKIAkgKi8KLQlXSVRIX0xPQ0sobW91bnRfbG9jaykgewotCQltb3Vu
dF9saXN0LnB1c2hfYmFjayhtcCk7Ci0JfQorCXVrX211dGV4X2xvY2soJm1vdW50X2xvY2spOwor
CXVrX2xpc3RfYWRkX3RhaWwoJm1wLT5tbnRfbGlzdCwgJm1vdW50X2xpc3QpOworCXVrX211dGV4
X3VubG9jaygmbW91bnRfbG9jayk7CiAKIAlyZXR1cm4gMDsgICAvKiBzdWNjZXNzICovCiAgZXJy
NDoKQEAgLTIyMiwxMiArMjI3LDEyIEBAIHJlbGVhc2VfbXBfZGVudHJpZXMoc3RydWN0IG1vdW50
ICptcCkKIGludAogc3lzX3Vtb3VudDIoY29uc3QgY2hhciAqcGF0aCwgaW50IGZsYWdzKQogewot
CXN0cnVjdCBtb3VudCAqbXA7CisJc3RydWN0IG1vdW50ICptcCwgKnRtcDsKIAlpbnQgZXJyb3Is
IHBhdGhsZW47CiAKLQlrcHJpbnRmKCJWRlM6IHVubW91bnRpbmcgJXNcbiIsIHBhdGgpOworCXVr
X3ByX2luZm8oIlZGUzogdW5tb3VudGluZyAlc1xuIiwgcGF0aCk7CiAKLQlTQ09QRV9MT0NLKG1v
dW50X2xvY2spOworCXVrX211dGV4X2xvY2soJm1vdW50X2xvY2spOwogCiAJcGF0aGxlbiA9IHN0
cmxlbihwYXRoKTsKIAlpZiAocGF0aGxlbiA+PSBNQVhQQVRITEVOKSB7CkBAIC0yMzYsNyArMjQx
LDcgQEAgc3lzX3Vtb3VudDIoY29uc3QgY2hhciAqcGF0aCwgaW50IGZsYWdzKQogCX0KIAogCS8q
IEdldCBtb3VudCBlbnRyeSAqLwotCWZvciAoYXV0byYmIHRtcCA6IG1vdW50X2xpc3QpIHsKKwl1
a19saXN0X2Zvcl9lYWNoX2VudHJ5KHRtcCwgJm1vdW50X2xpc3QsIG1udF9saXN0KSB7CiAJCWlm
ICghc3RyY21wKHBhdGgsIHRtcC0+bV9wYXRoKSkgewogCQkJbXAgPSB0bXA7CiAJCQlnb3RvIGZv
dW5kOwpAQCAtMjUwLDE0ICsyNTUsMTQgQEAgZm91bmQ6CiAJLyoKIAkgKiBSb290IGZzIGNhbiBu
b3QgYmUgdW5tb3VudGVkLgogCSAqLwotCWlmIChtcC0+bV9jb3ZlcmVkID09IG51bGxwdHIgJiYg
IShmbGFncyAmIE1OVF9GT1JDRSkpIHsKKwlpZiAobXAtPm1fY292ZXJlZCA9PSBOVUxMICYmICEo
ZmxhZ3MgJiBNTlRfRk9SQ0UpKSB7CiAJCWVycm9yID0gRUlOVkFMOwogCQlnb3RvIG91dDsKIAl9
CiAKIAlpZiAoKGVycm9yID0gVkZTX1VOTU9VTlQobXAsIGZsYWdzKSkgIT0gMCkKIAkJZ290byBv
dXQ7Ci0JbW91bnRfbGlzdC5yZW1vdmUobXApOworCXVrX2xpc3RfZGVsX2luaXQoJm1wLT5tbnRf
bGlzdCk7CiAKICNpZmRlZiBIQVZFX0JVRkZFUlMKIAkvKiBGbHVzaCBhbGwgYnVmZmVycyAqLwpA
QCAtMjY4LDYgKzI3Myw3IEBAIGZvdW5kOgogCQlkZXZpY2VfY2xvc2UobXAtPm1fZGV2KTsKIAlm
cmVlKG1wKTsKICBvdXQ6CisJdWtfbXV0ZXhfdW5sb2NrKCZtb3VudF9sb2NrKTsKIAlyZXR1cm4g
ZXJyb3I7CiB9CiAKQEAgLTI4MSw3ICsyODcsNyBAQCBzeXNfdW1vdW50KGNvbnN0IGNoYXIgKnBh
dGgpCiBpbnQKIHN5c19waXZvdF9yb290KGNvbnN0IGNoYXIgKm5ld19yb290LCBjb25zdCBjaGFy
ICpwdXRfb2xkKQogewotCXN0cnVjdCBtb3VudCAqbmV3bXAgPSBudWxscHRyLCAqb2xkbXAgPSBu
dWxscHRyOworCXN0cnVjdCBtb3VudCAqbmV3bXAgPSBOVUxMLCAqb2xkbXAgPSBOVUxMOwogCWlu
dCBlcnJvcjsKIAogCVdJVEhfTE9DSyhtb3VudF9sb2NrKSB7CkBAIC0zMTQsMTIgKzMyMCwxMiBA
QCBzeXNfcGl2b3Rfcm9vdChjb25zdCBjaGFyICpuZXdfcm9vdCwgY29uc3QgY2hhciAqcHV0X29s
ZCkKIAkJaWYgKG5ld21wLT5tX2NvdmVyZWQpIHsKIAkJCWRyZWxlKG5ld21wLT5tX2NvdmVyZWQp
OwogCQl9Ci0JCW5ld21wLT5tX2NvdmVyZWQgPSBudWxscHRyOworCQluZXdtcC0+bV9jb3ZlcmVk
ID0gTlVMTDsKIAogCQlpZiAobmV3bXAtPm1fcm9vdC0+ZF9wYXJlbnQpIHsKIAkJCWRyZWxlKG5l
d21wLT5tX3Jvb3QtPmRfcGFyZW50KTsKIAkJfQotCQluZXdtcC0+bV9yb290LT5kX3BhcmVudCA9
IG51bGxwdHI7CisJCW5ld21wLT5tX3Jvb3QtPmRfcGFyZW50ID0gTlVMTDsKIAogCQlzdHJsY3B5
KG5ld21wLT5tX3BhdGgsICIvIiwgc2l6ZW9mKG5ld21wLT5tX3BhdGgpKTsKIAl9CkBAIC0zMzAs
MTEgKzMzNiwxMiBAQCBzeXNfcGl2b3Rfcm9vdChjb25zdCBjaGFyICpuZXdfcm9vdCwgY29uc3Qg
Y2hhciAqcHV0X29sZCkKIGludAogc3lzX3N5bmModm9pZCkKIHsKKwlzdHJ1Y3QgbW91bnQgKm1w
OworCXVrX211dGV4X2xvY2soJm1vdW50X2xvY2spOworCiAJLyogQ2FsbCBlYWNoIG1vdW50ZWQg
ZmlsZSBzeXN0ZW0uICovCi0JV0lUSF9MT0NLKG1vdW50X2xvY2spIHsKLQkJZm9yIChhdXRvJiYg
bXAgOiBtb3VudF9saXN0KSB7Ci0JCQlWRlNfU1lOQyhtcCk7Ci0JCX0KKwl1a19saXN0X2Zvcl9l
YWNoX2VudHJ5KG1wLCAmbW91bnRfbGlzdCwgbW50X2xpc3QpIHsKKwkJVkZTX1NZTkMobXApOwog
CX0KICNpZmRlZiBIQVZFX0JVRkZFUlMKIAliaW9fc3luYygpOwpAQCAtMzgwLDIyICszODcsMjMg
QEAgY291bnRfbWF0Y2goY29uc3QgY2hhciAqcGF0aCwgY2hhciAqbW91bnRfcm9vdCkKIGludAog
dmZzX2ZpbmRyb290KGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBtb3VudCAqKm1wLCBjaGFyICoq
cm9vdCkKIHsKLQlzdHJ1Y3QgbW91bnQgKm0gPSBudWxscHRyOworCXN0cnVjdCBtb3VudCAqbSA9
IE5VTEwsICp0bXA7CiAJc2l6ZV90IGxlbiwgbWF4X2xlbiA9IDA7CiAKIAlpZiAoIXBhdGgpCiAJ
CXJldHVybiAtMTsKIAogCS8qIEZpbmQgbW91bnQgcG9pbnQgZnJvbSBuZWFyZXN0IHBhdGggKi8K
LQlTQ09QRV9MT0NLKG1vdW50X2xvY2spOwotCWZvciAoYXV0byYmIHRtcCA6IG1vdW50X2xpc3Qp
IHsKKwl1a19tdXRleF9sb2NrKCZtb3VudF9sb2NrKTsKKwl1a19saXN0X2Zvcl9lYWNoX2VudHJ5
KHRtcCwgJm1vdW50X2xpc3QsIG1udF9saXN0KSB7CiAJCWxlbiA9IGNvdW50X21hdGNoKHBhdGgs
IHRtcC0+bV9wYXRoKTsKIAkJaWYgKGxlbiA+IG1heF9sZW4pIHsKIAkJCW1heF9sZW4gPSBsZW47
CiAJCQltID0gdG1wOwogCQl9CiAJfQotCWlmIChtID09IG51bGxwdHIpCisJdWtfbXV0ZXhfdW5s
b2NrKCZtb3VudF9sb2NrKTsKKwlpZiAobSA9PSBOVUxMKQogCQlyZXR1cm4gLTE7CiAJKnJvb3Qg
PSAoY2hhciAqKShwYXRoICsgbWF4X2xlbik7CiAJaWYgKCoqcm9vdCA9PSAnLycpCkBAIC00MTAs
OCArNDE4LDEwIEBAIHZmc19maW5kcm9vdChjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3QgbW91bnQg
KiptcCwgY2hhciAqKnJvb3QpCiB2b2lkCiB2ZnNfYnVzeShzdHJ1Y3QgbW91bnQgKm1wKQogewot
CVNDT1BFX0xPQ0sobW91bnRfbG9jayk7Ci0JbXAtPm1fY291bnQrKzsKKwkvKiBUaGUgbV9jb3Vu
dCBpcyBub3QgcmVhbGx5IGNoZWNrZWQgYW55d2hlcmUKKwkgKiBjdXJyZW50bHkuIEF0b21pYyBp
cyBlbm91Z2guIEJ1dCBpdCBjb3VsZCBiZSB0aGF0IG9idGFpbmluZworCSAqIG1vdW50X2xvY2sg
d2lsbCBiZSBuZWVkZWQgaW4gdGhlIGZ1dHVyZSAqLworCXVrYXJjaF9pbmMoJm1wLT5tX2NvdW50
KTsKIH0KIAogCkBAIC00MjEsOCArNDMxLDEwIEBAIHZmc19idXN5KHN0cnVjdCBtb3VudCAqbXAp
CiB2b2lkCiB2ZnNfdW5idXN5KHN0cnVjdCBtb3VudCAqbXApCiB7Ci0JU0NPUEVfTE9DSyhtb3Vu
dF9sb2NrKTsKLQltcC0+bV9jb3VudC0tOworCS8qIFRoZSBtX2NvdW50IGlzIG5vdCByZWFsbHkg
Y2hlY2tlZCBhbnl3aGVyZQorCSAqIGN1cnJlbnRseS4gQXRvbWljIGlzIGVub3VnaC4gQnV0IGl0
IGNvdWxkIGJlIHRoYXQgb2J0YWluaW5nCisJICogbW91bnRfbG9jayB3aWxsIGJlIG5lZWRlZCBp
biB0aGUgZnV0dXJlICovCisJdWthcmNoX2RlYygmbXAtPm1fY291bnQpOwogfQogCiBpbnQKQEAg
LTQ0MSwxNCArNDUzLDE2IEBAIHZmc19laW52YWwodm9pZCkKIHZvaWQKIG1vdW50X2R1bXAodm9p
ZCkKIHsKLQlTQ09QRV9MT0NLKG1vdW50X2xvY2spOworCXN0cnVjdCBtb3VudCAqbXA7CisJdWtf
bXV0ZXhfbG9jaygmbW91bnRfbG9jayk7CiAKLQlrcHJpbnRmKCJtb3VudF9kdW1wXG4iKTsKLQlr
cHJpbnRmKCJkZXYgICAgICBjb3VudCByb290XG4iKTsKLQlrcHJpbnRmKCItLS0tLS0tLSAtLS0t
LSAtLS0tLS0tLVxuIik7CisJdWtfcHJfZGVidWcoIm1vdW50X2R1bXBcbiIpOworCXVrX3ByX2Rl
YnVnKCJkZXYgICAgICBjb3VudCByb290XG4iKTsKKwl1a19wcl9kZWJ1ZygiLS0tLS0tLS0gLS0t
LS0gLS0tLS0tLS1cbiIpOwogCi0JZm9yIChhdXRvJiYgbXAgOiBtb3VudF9saXN0KSB7Ci0JCWtw
cmludGYoIiU4eCAlNWQgJXNcbiIsIG1wLT5tX2RldiwgbXAtPm1fY291bnQsIG1wLT5tX3BhdGgp
OworCXVrX2xpc3RfZm9yX2VhY2hfZW50cnkobXAsICZtb3VudF9saXN0LCBtbnRfbGlzdCkgewor
CQl1a19wcl9kZWJ1ZygiJThwICU1ZCAlc1xuIiwgbXAtPm1fZGV2LCBtcC0+bV9jb3VudCwgbXAt
Pm1fcGF0aCk7CiAJfQorCXVrX211dGV4X3VubG9jaygmbW91bnRfbG9jayk7CiB9CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3N1YnJfdWlvLmMgYi9saWIvdmZzY29yZS9zdWJyX3Vp
by5jCmluZGV4IGJiY2EzMzYyLi5kOGU5ZDFiZSAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvc3Vi
cl91aW8uYworKysgYi9saWIvdmZzY29yZS9zdWJyX3Vpby5jCkBAIC00OCw3ICs0OCw3IEBACiBp
bnQKIHVpb21vdmUodm9pZCAqY3AsIGludCBuLCBzdHJ1Y3QgdWlvICp1aW8pCiB7Ci0JYXNzZXJ0
KHVpby0+dWlvX3J3ID09IFVJT19SRUFEIHx8IHVpby0+dWlvX3J3ID09IFVJT19XUklURSk7CisJ
VUtfQVNTRVJUKHVpby0+dWlvX3J3ID09IFVJT19SRUFEIHx8IHVpby0+dWlvX3J3ID09IFVJT19X
UklURSk7CiAKIAl3aGlsZSAobiA+IDAgJiYgdWlvLT51aW9fcmVzaWQpIHsKIAkJc3RydWN0IGlv
dmVjICppb3YgPSB1aW8tPnVpb19pb3Y7CmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9zeXNjYWxs
cy5jIGIvbGliL3Zmc2NvcmUvc3lzY2FsbHMuYwppbmRleCBmNTBmYjM4Zi4uZmEwNDk4ZTcgMTAw
NjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL3N5c2NhbGxzLmMKKysrIGIvbGliL3Zmc2NvcmUvc3lzY2Fs
bHMuYwpAQCAtNjUsOSArNjUsOSBAQCBvcGVuX25vX2ZvbGxvd19jaGsoY2hhciAqcGF0aCkKIAlz
dHJ1Y3QgZGVudHJ5ICpkcDsKIAlzdHJ1Y3Qgdm5vZGUgICp2cDsKIAotCWRkcCA9IG51bGxwdHI7
Ci0JZHAgID0gbnVsbHB0cjsKLQl2cCAgPSBudWxscHRyOworCWRkcCA9IE5VTEw7CisJZHAgID0g
TlVMTDsKKwl2cCAgPSBOVUxMOwogCiAJZXJyb3IgPSBsb29rdXAocGF0aCwgJmRkcCwgJm5hbWUp
OwogCWlmIChlcnJvcikgewpAQCAtODgsMTUgKzg4LDE1IEBAIG9wZW5fbm9fZm9sbG93X2Noayhj
aGFyICpwYXRoKQogCiAJZXJyb3IgPSAwOwogb3V0OgotCWlmICh2cCAhPSBudWxscHRyKSB7CisJ
aWYgKHZwICE9IE5VTEwpIHsKIAkJdm5fdW5sb2NrKHZwKTsKIAl9CiAKLQlpZiAoZHAgIT0gbnVs
bHB0cikgeworCWlmIChkcCAhPSBOVUxMKSB7CiAJCWRyZWxlKGRwKTsKIAl9CiAKLQlpZiAoZGRw
ICE9IG51bGxwdHIpIHsKKwlpZiAoZGRwICE9IE5VTEwpIHsKIAkJZHJlbGUoZGRwKTsKIAl9CiAK
QEAgLTEwNCw5ICsxMDQsOSBAQCBvdXQ6CiB9CiAKIGludAotc3lzX29wZW4oY2hhciAqcGF0aCwg
aW50IGZsYWdzLCBtb2RlX3QgbW9kZSwgc3RydWN0IGZpbGUgKipmcHApCitzeXNfb3BlbihjaGFy
ICpwYXRoLCBpbnQgZmxhZ3MsIG1vZGVfdCBtb2RlLCBzdHJ1Y3QgdmZzY29yZV9maWxlICoqZnBw
KQogewotCWZpbGUgKmZwOworCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwOwogCXN0cnVjdCBkZW50
cnkgKmRwLCAqZGRwOwogCXN0cnVjdCB2bm9kZSAqdnA7CiAJY2hhciAqZmlsZW5hbWU7CkBAIC0x
MTUsMTEgKzExNSwxMSBAQCBzeXNfb3BlbihjaGFyICpwYXRoLCBpbnQgZmxhZ3MsIG1vZGVfdCBt
b2RlLCBzdHJ1Y3QgZmlsZSAqKmZwcCkKIAlEUFJJTlRGKFZGU0RCX1NZU0NBTEwsICgic3lzX29w
ZW46IHBhdGg9JXMgZmxhZ3M9JXggbW9kZT0leFxuIiwKIAkJCQlwYXRoLCBmbGFncywgbW9kZSkp
OwogCi0JZmxhZ3MgPSBmZmxhZ3MoZmxhZ3MpOworCWZsYWdzID0gdmZzY29yZV9mZmxhZ3MoZmxh
Z3MpOwogCWlmIChmbGFncyAmIE9fQ1JFQVQpIHsKIAkJZXJyb3IgPSBuYW1laShwYXRoLCAmZHAp
OwogCQlpZiAoZXJyb3IgPT0gRU5PRU5UKSB7Ci0JCQkvKiBDcmVhdGUgbmV3IGZpbGUuICovCisJ
CQkvKiBDcmVhdGUgbmV3IHN0cnVjdCB2ZnNjb3JlX2ZpbGUuICovCiAJCQlpZiAoKGVycm9yID0g
bG9va3VwKHBhdGgsICZkZHAsICZmaWxlbmFtZSkpICE9IDApCiAJCQkJcmV0dXJuIGVycm9yOwog
CkBAIC0yMzMsMTQgKzIzMywxNCBAQCBvdXRfZHJlbGU6CiB9CiAKIGludAotc3lzX2Nsb3NlKHN0
cnVjdCBmaWxlICpmcCkKK3N5c19jbG9zZShzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCBfX3VudXNl
ZCkKIHsKIAogCXJldHVybiAwOwogfQogCiBpbnQKLXN5c19yZWFkKHN0cnVjdCBmaWxlICpmcCwg
Y29uc3Qgc3RydWN0IGlvdmVjICppb3YsIHNpemVfdCBuaW92LAorc3lzX3JlYWQoc3RydWN0IHZm
c2NvcmVfZmlsZSAqZnAsIGNvbnN0IHN0cnVjdCBpb3ZlYyAqaW92LCBzaXplX3QgbmlvdiwKIAkJ
b2ZmX3Qgb2Zmc2V0LCBzaXplX3QgKmNvdW50KQogewogCWludCBlcnJvciA9IDA7CkBAIC0yOTAs
NyArMjkwLDcgQEAgc3lzX3JlYWQoc3RydWN0IGZpbGUgKmZwLCBjb25zdCBzdHJ1Y3QgaW92ZWMg
Kmlvdiwgc2l6ZV90IG5pb3YsCiB9CiAKIGludAotc3lzX3dyaXRlKHN0cnVjdCBmaWxlICpmcCwg
Y29uc3Qgc3RydWN0IGlvdmVjICppb3YsIHNpemVfdCBuaW92LAorc3lzX3dyaXRlKHN0cnVjdCB2
ZnNjb3JlX2ZpbGUgKmZwLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlvdiwgc2l6ZV90IG5pb3YsCiAJ
CW9mZl90IG9mZnNldCwgc2l6ZV90ICpjb3VudCkKIHsKIAlzdHJ1Y3QgaW92ZWMgKmNvcHlfaW92
OwpAQCAtMzM3LDEyICszMzcsMTIgQEAgc3lzX3dyaXRlKHN0cnVjdCBmaWxlICpmcCwgY29uc3Qg
c3RydWN0IGlvdmVjICppb3YsIHNpemVfdCBuaW92LAogfQogCiBpbnQKLXN5c19sc2VlayhzdHJ1
Y3QgZmlsZSAqZnAsIG9mZl90IG9mZiwgaW50IHR5cGUsIG9mZl90ICpvcmlnaW4pCitzeXNfbHNl
ZWsoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAsIG9mZl90IG9mZiwgaW50IHR5cGUsIG9mZl90ICpv
cmlnaW4pCiB7CiAJc3RydWN0IHZub2RlICp2cDsKIAotCURQUklOVEYoVkZTREJfU1lTQ0FMTCwg
KCJzeXNfc2VlazogZnA9JXggb2ZmPSVkIHR5cGU9JWRcbiIsCi0JCQkJKHVfbG9uZylmcCwgKHVf
aW50KW9mZiwgdHlwZSkpOworCURQUklOVEYoVkZTREJfU1lTQ0FMTCwgKCJzeXNfc2VlazogZnA9
JXAgb2ZmPSV1ZCB0eXBlPSVkXG4iLAorCQkJCWZwLCAodW5zaWduZWQgaW50KW9mZiwgdHlwZSkp
OwogCiAJaWYgKCFmcC0+Zl9kZW50cnkpIHsKIAkgICAgLy8gTGludXggZG9lc24ndCBpbXBsZW1l
bnQgbHNlZWsoKSBvbiBwaXBlcywgc29ja2V0cywgb3IgdHR5cy4KQEAgLTM3MywxMSArMzczLDEx
IEBAIHN5c19sc2VlayhzdHJ1Y3QgZmlsZSAqZnAsIG9mZl90IG9mZiwgaW50IHR5cGUsIG9mZl90
ICpvcmlnaW4pCiB9CiAKIGludAotc3lzX2lvY3RsKHN0cnVjdCBmaWxlICpmcCwgdV9sb25nIHJl
cXVlc3QsIHZvaWQgKmJ1ZikKK3N5c19pb2N0bChzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCwgdW5z
aWduZWQgbG9uZyByZXF1ZXN0LCB2b2lkICpidWYpCiB7CiAJaW50IGVycm9yOwogCi0JRFBSSU5U
RihWRlNEQl9TWVNDQUxMLCAoInN5c19pb2N0bDogZnA9JXggcmVxdWVzdD0leFxuIiwgZnAsIHJl
cXVlc3QpKTsKKwlEUFJJTlRGKFZGU0RCX1NZU0NBTEwsICgic3lzX2lvY3RsOiBmcD0lcCByZXF1
ZXN0PSVsdXhcbiIsIGZwLCByZXF1ZXN0KSk7CiAKIAlpZiAoKGZwLT5mX2ZsYWdzICYgKEZSRUFE
IHwgRldSSVRFKSkgPT0gMCkKIAkJcmV0dXJuIEVCQURGOwpAQCAtMzg5LDcgKzM4OSw3IEBAIHN5
c19pb2N0bChzdHJ1Y3QgZmlsZSAqZnAsIHVfbG9uZyByZXF1ZXN0LCB2b2lkICpidWYpCiB9CiAK
IGludAotc3lzX2ZzeW5jKHN0cnVjdCBmaWxlICpmcCkKK3N5c19mc3luYyhzdHJ1Y3QgdmZzY29y
ZV9maWxlICpmcCkKIHsKIAlzdHJ1Y3Qgdm5vZGUgKnZwOwogCWludCBlcnJvcjsKQEAgLTQwNyw3
ICs0MDcsNyBAQCBzeXNfZnN5bmMoc3RydWN0IGZpbGUgKmZwKQogfQogCiBpbnQKLXN5c19mc3Rh
dChzdHJ1Y3QgZmlsZSAqZnAsIHN0cnVjdCBzdGF0ICpzdCkKK3N5c19mc3RhdChzdHJ1Y3QgdmZz
Y29yZV9maWxlICpmcCwgc3RydWN0IHN0YXQgKnN0KQogewogCWludCBlcnJvciA9IDA7CiAKQEAg
LTQyNSw3ICs0MjUsNyBAQCBzdGF0aWMgaW50CiBjaGVja19kaXJfZW1wdHkoY2hhciAqcGF0aCkK
IHsKIAlpbnQgZXJyb3I7Ci0Jc3RydWN0IGZpbGUgKmZwOworCXN0cnVjdCB2ZnNjb3JlX2ZpbGUg
KmZwOwogCXN0cnVjdCBkaXJlbnQgZGlyOwogCiAJRFBSSU5URihWRlNEQl9TWVNDQUxMLCAoImNo
ZWNrX2Rpcl9lbXB0eVxuIikpOwpAQCAtNDUzLDcgKzQ1Myw3IEBAIG91dF9lcnJvcjoKIH0KIAog
aW50Ci1zeXNfcmVhZGRpcihzdHJ1Y3QgZmlsZSAqZnAsIHN0cnVjdCBkaXJlbnQgKmRpcikKK3N5
c19yZWFkZGlyKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwLCBzdHJ1Y3QgZGlyZW50ICpkaXIpCiB7
CiAJc3RydWN0IHZub2RlICpkdnA7CiAJaW50IGVycm9yOwpAQCAtNDc3LDcgKzQ3Nyw3IEBAIHN5
c19yZWFkZGlyKHN0cnVjdCBmaWxlICpmcCwgc3RydWN0IGRpcmVudCAqZGlyKQogfQogCiBpbnQK
LXN5c19yZXdpbmRkaXIoc3RydWN0IGZpbGUgKmZwKQorc3lzX3Jld2luZGRpcihzdHJ1Y3QgdmZz
Y29yZV9maWxlICpmcCkKIHsKIAlzdHJ1Y3Qgdm5vZGUgKmR2cDsKIApAQCAtNDk2LDcgKzQ5Niw3
IEBAIHN5c19yZXdpbmRkaXIoc3RydWN0IGZpbGUgKmZwKQogfQogCiBpbnQKLXN5c19zZWVrZGly
KHN0cnVjdCBmaWxlICpmcCwgbG9uZyBsb2MpCitzeXNfc2Vla2RpcihzdHJ1Y3QgdmZzY29yZV9m
aWxlICpmcCwgbG9uZyBsb2MpCiB7CiAJc3RydWN0IHZub2RlICpkdnA7CiAKQEAgLTUxNSw3ICs1
MTUsNyBAQCBzeXNfc2Vla2RpcihzdHJ1Y3QgZmlsZSAqZnAsIGxvbmcgbG9jKQogfQogCiBpbnQK
LXN5c190ZWxsZGlyKHN0cnVjdCBmaWxlICpmcCwgbG9uZyAqbG9jKQorc3lzX3RlbGxkaXIoc3Ry
dWN0IHZmc2NvcmVfZmlsZSAqZnAsIGxvbmcgKmxvYykKIHsKIAlzdHJ1Y3Qgdm5vZGUgKmR2cDsK
IApAQCAtNjYyLDE0ICs2NjIsMTQgQEAgc3lzX21rbm9kKGNoYXIgKnBhdGgsIG1vZGVfdCBtb2Rl
KQogICoKICAqIEFzc3VtZXMgYm90aCBwYXRocyBkbyBub3QgaGF2ZSB0cmFpbGluZyBzbGFzaGVz
LgogICovCi1zdGF0aWMgYm9vbAorc3RhdGljIGludAogaXNfcGFyZW50KGNvbnN0IGNoYXIgKnBh
cmVudCwgY29uc3QgY2hhciAqY2hpbGQpCiB7CiAJc2l6ZV90IHBfbGVuID0gc3RybGVuKHBhcmVu
dCk7CiAJcmV0dXJuICFzdHJuY21wKHBhcmVudCwgY2hpbGQsIHBfbGVuKSAmJiAocGFyZW50W3Bf
bGVuLTFdID09ICcvJyB8fCBjaGlsZFtwX2xlbl0gPT0gJy8nKTsKIH0KIAotc3RhdGljIGJvb2wK
K3N0YXRpYyBpbnQKIGhhc190cmFpbGluZyhjb25zdCBjaGFyICpwYXRoLCBjaGFyIGNoKQogewog
CXNpemVfdCBsZW4gPSBzdHJsZW4ocGF0aCk7CkBAIC02OTUsMTYgKzY5NSwxNiBAQCBzeXNfcmVu
YW1lKGNoYXIgKnNyYywgY2hhciAqZGVzdCkKIAljaGFyICpzbmFtZSwgKmRuYW1lOwogCWludCBl
cnJvcjsKIAljaGFyIHJvb3RbXSA9ICIvIjsKLQlib29sIHRzOyAvKiB0cmFpbGluZyBzbGFzaCAq
LworCWludCB0czsgLyogdHJhaWxpbmcgc2xhc2ggKi8KIAogCURQUklOVEYoVkZTREJfU1lTQ0FM
TCwgKCJzeXNfcmVuYW1lOiBzcmM9JXMgZGVzdD0lc1xuIiwgc3JjLCBkZXN0KSk7CiAKLQl0cyA9
IGZhbHNlOwotCWlmIChoYXNfdHJhaWxpbmcoc3JjLCAnLycpID09IHRydWUpIHsKKwl0cyA9IDA7
CisJaWYgKGhhc190cmFpbGluZyhzcmMsICcvJykpIHsKIAkJaWYgKHN0cmxlbihzcmMpICE9IDEp
IHsKIAkJCS8qIHJlbW92ZSB0cmFpbGluZyBzbGFzaCBpZmYgcGF0aCBpcyBub25lIHJvb3QgKi8K
IAkJCXN0cmlwX3RyYWlsaW5nKHNyYywgJy8nKTsKLQkJCXRzID0gdHJ1ZTsKKwkJCXRzID0gMTsK
IAkJfQogCX0KIApAQCAtNzIyLDE3ICs3MjIsMTcgQEAgc3lzX3JlbmFtZShjaGFyICpzcmMsIGNo
YXIgKmRlc3QpCiAJdnAxID0gZHAxLT5kX3Zub2RlOwogCXZuX2xvY2sodnAxKTsKIAotCWlmICh2
cDEtPnZfdHlwZSAhPSBWRElSICYmIHRzID09IHRydWUpIHsKKwlpZiAodnAxLT52X3R5cGUgIT0g
VkRJUiAmJiB0cykgewogCQllcnJvciA9IEVOT1RESVI7CiAJCWdvdG8gZXJyMTsKIAl9CiAKLQl0
cyA9IGZhbHNlOwotCWlmIChoYXNfdHJhaWxpbmcoZGVzdCwgJy8nKSA9PSB0cnVlKSB7CisJdHMg
PSAwOworCWlmIChoYXNfdHJhaWxpbmcoZGVzdCwgJy8nKSkgewogCQlpZiAoc3RybGVuKGRlc3Qp
ICE9IDEpIHsKIAkJCS8qIHJlbW92ZSB0cmFpbGluZyBzbGFzaCBpZmYgcGF0aCBpcyBub25lIHJv
b3QgKi8KIAkJCXN0cmlwX3RyYWlsaW5nKGRlc3QsICcvJyk7Ci0JCQl0cyA9IHRydWU7CisJCQl0
cyA9IDE7CiAJCX0KIAl9CiAKQEAgLTc0OSw3ICs3NDksNyBAQCBzeXNfcmVuYW1lKGNoYXIgKnNy
YywgY2hhciAqZGVzdCkKIAkJdm5fbG9jayh2cDIpOwogCiAJCWlmICh2cDItPnZfdHlwZSAhPSBW
RElSICYmIHZwMi0+dl90eXBlICE9IFZMTkspIHsKLQkJCWlmICh2cDEtPnZfdHlwZSA9PSBWRElS
IHx8IHRzID09IHRydWUpIHsKKwkJCWlmICh2cDEtPnZfdHlwZSA9PSBWRElSIHx8IHRzKSB7CiAJ
CQkJZXJyb3IgPSBFTk9URElSOwogCQkJCWdvdG8gZXJyMjsKIAkJCX0KQEAgLTc2Miw3ICs3NjIs
NyBAQCBzeXNfcmVuYW1lKGNoYXIgKnNyYywgY2hhciAqZGVzdCkKIAkJCWdvdG8gZXJyMjsKIAkJ
fQogCX0gZWxzZSBpZiAoZXJyb3IgPT0gRU5PRU5UKSB7Ci0JCWlmICh2cDEtPnZfdHlwZSAhPSBW
RElSICYmIHRzID09IHRydWUpIHsKKwkJaWYgKHZwMS0+dl90eXBlICE9IFZESVIgJiYgdHMpIHsK
IAkJCWVycm9yID0gRU5PVERJUjsKIAkJCWdvdG8gZXJyMjsKIAkJfQpAQCAtNzg3LDcgKzc4Nyw3
IEBAIHN5c19yZW5hbWUoY2hhciAqc3JjLCBjaGFyICpkZXN0KQogCX0KIAogCWRuYW1lID0gc3Ry
cmNocihkZXN0LCAnLycpOwotCWlmIChkbmFtZSA9PSBudWxscHRyKSB7CisJaWYgKGRuYW1lID09
IE5VTEwpIHsKIAkJZXJyb3IgPSBFTk9URElSOwogCQlnb3RvIGVycjI7CiAJfQpAQCAtODQ4LDE1
ICs4NDgsMTUgQEAgc3lzX3N5bWxpbmsoY29uc3QgY2hhciAqb2xkcGF0aCwgY29uc3QgY2hhciAq
bmV3cGF0aCkKIAlzdHJ1Y3QgZGVudHJ5CSpuZXdkaXJkcDsKIAljaGFyCQkqbmFtZTsKIAotCWlm
IChvbGRwYXRoID09IG51bGxwdHIgfHwgbmV3cGF0aCA9PSBudWxscHRyKSB7CisJaWYgKG9sZHBh
dGggPT0gTlVMTCB8fCBuZXdwYXRoID09IE5VTEwpIHsKIAkJcmV0dXJuIChFRkFVTFQpOwogCX0K
IAogCURQUklOVEYoVkZTREJfU1lTQ0FMTCwgKCJzeXNfbGluazogb2xkcGF0aD0lcyBuZXdwYXRo
PSVzXG4iLAogCQkJCW9sZHBhdGgsIG5ld3BhdGgpKTsKIAotCW5ld2RwCQk9IG51bGxwdHI7Ci0J
bmV3ZGlyZHAJPSBudWxscHRyOworCW5ld2RwCQk9IE5VTEw7CisJbmV3ZGlyZHAJPSBOVUxMOwog
CiAJZXJyb3IgPSB0YXNrX2NvbnYodCwgbmV3cGF0aCwgVldSSVRFLCBucCk7CiAJaWYgKGVycm9y
ICE9IDApIHsKQEAgLTg5Miw3ICs4OTIsNyBAQCBzeXNfc3ltbGluayhjb25zdCBjaGFyICpvbGRw
YXRoLCBjb25zdCBjaGFyICpuZXdwYXRoKQogCWVycm9yID0gVk9QX1NZTUxJTksobmV3ZGlyZHAt
PmRfdm5vZGUsIG5hbWUsIG9wKTsKIAogb3V0OgotCWlmIChuZXdkaXJkcCAhPSBudWxscHRyKSB7
CisJaWYgKG5ld2RpcmRwICE9IE5VTEwpIHsKIAkJdm5fdW5sb2NrKG5ld2RpcmRwLT5kX3Zub2Rl
KTsKIAkJZHJlbGUobmV3ZGlyZHApOwogCX0KQEAgLTk3Miw5ICs5NzIsOSBAQCBzeXNfdW5saW5r
KGNoYXIgKnBhdGgpCiAKIAlEUFJJTlRGKFZGU0RCX1NZU0NBTEwsICgic3lzX3VubGluazogcGF0
aD0lc1xuIiwgcGF0aCkpOwogCi0JZGRwICAgPSBudWxscHRyOwotCWRwICAgID0gbnVsbHB0cjsK
LQl2cCAgICA9IG51bGxwdHI7CisJZGRwICAgPSBOVUxMOworCWRwICAgID0gTlVMTDsKKwl2cCAg
ICA9IE5VTEw7CiAKIAllcnJvciA9IGxvb2t1cChwYXRoLCAmZGRwLCAmbmFtZSk7CiAJaWYgKGVy
cm9yICE9IDApIHsKQEAgLTEwMTMsMTUgKzEwMTMsMTUgQEAgc3lzX3VubGluayhjaGFyICpwYXRo
KQogCWRyZWxlKGRwKTsKIAlyZXR1cm4gZXJyb3I7CiAgb3V0OgotCWlmICh2cCAhPSBudWxscHRy
KSB7CisJaWYgKHZwICE9IE5VTEwpIHsKIAkJdm5fdW5sb2NrKHZwKTsKIAl9CiAKLQlpZiAoZHAg
IT0gbnVsbHB0cikgeworCWlmIChkcCAhPSBOVUxMKSB7CiAJCWRyZWxlKGRwKTsKIAl9CiAKLQlp
ZiAoZGRwICE9IG51bGxwdHIpIHsKKwlpZiAoZGRwICE9IE5VTEwpIHsKIAkJZHJlbGUoZGRwKTsK
IAl9CiAJcmV0dXJuIGVycm9yOwpAQCAtMTExNSw3ICsxMTE1LDcgQEAgc3lzX3N0YXRmcyhjaGFy
ICpwYXRoLCBzdHJ1Y3Qgc3RhdGZzICpidWYpCiB9CiAKIGludAotc3lzX2ZzdGF0ZnMoc3RydWN0
IGZpbGUgKmZwLCBzdHJ1Y3Qgc3RhdGZzICpidWYpCitzeXNfZnN0YXRmcyhzdHJ1Y3QgdmZzY29y
ZV9maWxlICpmcCwgc3RydWN0IHN0YXRmcyAqYnVmKQogewogCXN0cnVjdCB2bm9kZSAqdnA7CiAJ
aW50IGVycm9yID0gMDsKQEAgLTExNTIsNyArMTE1Miw3IEBAIHN5c190cnVuY2F0ZShjaGFyICpw
YXRoLCBvZmZfdCBsZW5ndGgpCiB9CiAKIGludAotc3lzX2Z0cnVuY2F0ZShzdHJ1Y3QgZmlsZSAq
ZnAsIG9mZl90IGxlbmd0aCkKK3N5c19mdHJ1bmNhdGUoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAs
IG9mZl90IGxlbmd0aCkKIHsKIAlzdHJ1Y3Qgdm5vZGUgKnZwOwogCWludCBlcnJvcjsKQEAgLTEx
NjksNyArMTE2OSw3IEBAIHN5c19mdHJ1bmNhdGUoc3RydWN0IGZpbGUgKmZwLCBvZmZfdCBsZW5n
dGgpCiB9CiAKIGludAotc3lzX2ZjaGRpcihzdHJ1Y3QgZmlsZSAqZnAsIGNoYXIgKmN3ZCkKK3N5
c19mY2hkaXIoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAsIGNoYXIgKmN3ZCkKIHsKIAlzdHJ1Y3Qg
dm5vZGUgKmR2cDsKIApAQCAtMTI0NCw3ICsxMjQ0LDcgQEAgc3lzX3JlYWRsaW5rKGNoYXIgKnBh
dGgsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnNpemUsIHNzaXplX3QgKnNpemUpCiAvKgogICogQ2hl
Y2sgdGhlIHZhbGlkaXR5IG9mIHRoZSBtZW1iZXJzIG9mIGEgc3RydWN0IHRpbWV2YWwuCiAgKi8K
LXN0YXRpYyBib29sIGlzX3RpbWV2YWxfdmFsaWQoY29uc3Qgc3RydWN0IHRpbWV2YWwgKnRpbWUp
CitzdGF0aWMgaW50IGlzX3RpbWV2YWxfdmFsaWQoY29uc3Qgc3RydWN0IHRpbWV2YWwgKnRpbWUp
CiB7CiAJcmV0dXJuICh0aW1lLT50dl9zZWMgPj0gMCkgJiYKIAkJICAgKHRpbWUtPnR2X3VzZWMg
Pj0gMCAmJiB0aW1lLT50dl91c2VjIDwgMTAwMDAwMCk7CkBAIC0xMjc2LDE4ICsxMjc2LDE4IEBA
IHN5c191dGltZXMoY2hhciAqcGF0aCwgY29uc3Qgc3RydWN0IHRpbWV2YWwgdGltZXNbMl0sIGlu
dCBmbGFncykKIAkJcmV0dXJuIEVJTlZBTDsKIAogCS8vIENvbnZlcnQgZWFjaCBlbGVtZW50IG9m
IHRpbWV2YWwgYXJyYXkgdG8gdGhlIHRpbWVzcGVjIHR5cGUKLQljb252ZXJ0X3RpbWV2YWwodGlt
ZXNwZWNfdGltZXNbMF0sIHRpbWVzID8gdGltZXMgKyAwIDogbnVsbHB0cik7Ci0JY29udmVydF90
aW1ldmFsKHRpbWVzcGVjX3RpbWVzWzFdLCB0aW1lcyA/IHRpbWVzICsgMSA6IG51bGxwdHIpOwor
CWNvbnZlcnRfdGltZXZhbCh0aW1lc3BlY190aW1lc1swXSwgdGltZXMgPyB0aW1lcyArIDAgOiBO
VUxMKTsKKwljb252ZXJ0X3RpbWV2YWwodGltZXNwZWNfdGltZXNbMV0sIHRpbWVzID8gdGltZXMg
KyAxIDogTlVMTCk7CiAKIAlpZiAoZmxhZ3MgJiBBVF9TWU1MSU5LX05PRk9MTE9XKSB7CiAJCXN0
cnVjdCBkZW50cnkgKmRkcDsKLQkJZXJyb3IgPSBsb29rdXAocGF0aCwgJmRkcCwgbnVsbHB0cik7
CisJCWVycm9yID0gbG9va3VwKHBhdGgsICZkZHAsIE5VTEwpOwogCQlpZiAoZXJyb3IpIHsKIAkJ
CXJldHVybiBlcnJvcjsKIAkJfQogCiAJCWVycm9yID0gbmFtZWlfbGFzdF9ub2ZvbGxvdyhwYXRo
LCBkZHAsICZkcCk7Ci0JCWlmIChkZHAgIT0gbnVsbHB0cikgeworCQlpZiAoZGRwICE9IE5VTEwp
IHsKIAkJCWRyZWxlKGRkcCk7CiAJCX0KIAkJaWYgKGVycm9yKSB7CkBAIC0xMzEyLDcgKzEzMTIs
NyBAQCBzeXNfdXRpbWVzKGNoYXIgKnBhdGgsIGNvbnN0IHN0cnVjdCB0aW1ldmFsIHRpbWVzWzJd
LCBpbnQgZmxhZ3MpCiAvKgogICogQ2hlY2sgdGhlIHZhbGlkaXR5IG9mIG1lbWJlcnMgb2YgYSBz
dHJ1Y3QgdGltZXNwZWMKICAqLwotc3RhdGljIGJvb2wgaXNfdGltZXNwZWNfdmFsaWQoY29uc3Qg
c3RydWN0IHRpbWVzcGVjICZ0aW1lKQorc3RhdGljIGludCBpc190aW1lc3BlY192YWxpZChjb25z
dCBzdHJ1Y3QgdGltZXNwZWMgJnRpbWUpCiB7CiAJcmV0dXJuICh0aW1lLnR2X3NlYyA+PSAwKSAm
JgogCSAgICgodGltZS50dl9uc2VjID49IDAgJiYgdGltZS50dl9uc2VjIDw9IDk5OTk5OTk5OSkg
fHwKQEAgLTEzMjIsNyArMTMyMiw3IEBAIHN0YXRpYyBib29sIGlzX3RpbWVzcGVjX3ZhbGlkKGNv
bnN0IHN0cnVjdCB0aW1lc3BlYyAmdGltZSkKIAogdm9pZCBpbml0X3RpbWVzcGVjKHN0cnVjdCB0
aW1lc3BlYyAmX3RpbWVzLCBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKnRpbWVzKQogewotCWlmICh0
aW1lcyA9PSBudWxscHRyIHx8IHRpbWVzLT50dl9uc2VjID09IFVUSU1FX05PVykgeworCWlmICh0
aW1lcyA9PSBOVUxMIHx8IHRpbWVzLT50dl9uc2VjID09IFVUSU1FX05PVykgewogCQljbG9ja19n
ZXR0aW1lKENMT0NLX1JFQUxUSU1FLCAmX3RpbWVzKTsKIAl9IGVsc2UgewogCQlfdGltZXMudHZf
c2VjID0gdGltZXMtPnR2X3NlYzsKQEAgLTEzNTAsOCArMTM1MCw4IEBAIHN5c191dGltZW5zYXQo
aW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwgY29uc3Qgc3RydWN0IHRpbWVzcGVjIHRp
bWVzWzJdLCBpCiAJaWYgKHRpbWVzICYmICghaXNfdGltZXNwZWNfdmFsaWQodGltZXNbMF0pIHx8
ICFpc190aW1lc3BlY192YWxpZCh0aW1lc1sxXSkpKQogCQlyZXR1cm4gRUlOVkFMOwogCi0JaW5p
dF90aW1lc3BlYyh0aW1lc3BlY190aW1lc1swXSwgdGltZXMgPyB0aW1lcyArIDAgOiBudWxscHRy
KTsKLQlpbml0X3RpbWVzcGVjKHRpbWVzcGVjX3RpbWVzWzFdLCB0aW1lcyA/IHRpbWVzICsgMSA6
IG51bGxwdHIpOworCWluaXRfdGltZXNwZWModGltZXNwZWNfdGltZXNbMF0sIHRpbWVzID8gdGlt
ZXMgKyAwIDogTlVMTCk7CisJaW5pdF90aW1lc3BlYyh0aW1lc3BlY190aW1lc1sxXSwgdGltZXMg
PyB0aW1lcyArIDEgOiBOVUxMKTsKIAogCWlmIChwYXRobmFtZSAmJiBwYXRobmFtZVswXSA9PSAn
LycpIHsKIAlhcCA9IHBhdGhuYW1lOwpAQCAtMTM2MCw3ICsxMzYwLDcgQEAgc3lzX3V0aW1lbnNh
dChpbnQgZGlyZmQsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBjb25zdCBzdHJ1Y3QgdGltZXNwZWMg
dGltZXNbMl0sIGkKIAkgICAgcmV0dXJuIEVGQVVMVDsKIAlhcCA9IHN0ZDo6c3RyaW5nKG1haW5f
dGFzay0+dF9jd2QpICsgIi8iICsgcGF0aG5hbWU7CiAJfSBlbHNlIHsKLQkJc3RydWN0IGZpbGUg
KmZwOworCQlzdHJ1Y3QgdmZzY29yZV9maWxlICpmcDsKIAkJZmlsZXJlZiBmKGZpbGVyZWZfZnJv
bV9mZChkaXJmZCkpOwogCiAJCWlmICghZikKQEAgLTE0MTAsNyArMTQxMCw3IEBAIHN5c191dGlt
ZW5zYXQoaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwgY29uc3Qgc3RydWN0IHRpbWVz
cGVjIHRpbWVzWzJdLCBpCiBpbnQKIHN5c19mdXRpbWVucyhpbnQgZmQsIGNvbnN0IHN0cnVjdCB0
aW1lc3BlYyB0aW1lc1syXSkKIHsKLQlzdHJ1Y3QgZmlsZSAqZnA7CisJc3RydWN0IHZmc2NvcmVf
ZmlsZSAqZnA7CiAKIAlmaWxlcmVmIGYoZmlsZXJlZl9mcm9tX2ZkKGZkKSk7CiAJaWYgKCFmKQpA
QCAtMTQyOCw3ICsxNDI4LDcgQEAgc3lzX2Z1dGltZW5zKGludCBmZCwgY29uc3Qgc3RydWN0IHRp
bWVzcGVjIHRpbWVzWzJdKQogI2VuZGlmCiAKIGludAotc3lzX2ZhbGxvY2F0ZShzdHJ1Y3QgZmls
ZSAqZnAsIGludCBtb2RlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuKQorc3lzX2ZhbGxvY2F0
ZShzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCwgaW50IG1vZGUsIG9mZl90IG9mZnNldCwgb2ZmX3Qg
bGVuKQogewogCWludCBlcnJvcjsKIAlzdHJ1Y3Qgdm5vZGUgKnZwOwpAQCAtMTQ5Myw3ICsxNDkz
LDcgQEAgc3lzX2NobW9kKGNvbnN0IGNoYXIgKnBhdGgsIG1vZGVfdCBtb2RlKQogaW50CiBzeXNf
ZmNobW9kKGludCBmZCwgbW9kZV90IG1vZGUpCiB7Ci0JZmlsZXJlZiBmKGZpbGVyZWZfZnJvbV9m
ZChmZCkpOworCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmYgPSB2ZnNjb3JlX2dldF9maWxlKGZkKTsK
IAlpZiAoIWYpCiAJCXJldHVybiBFQkFERjsKIAkvLyBQb3NpeCBpcyBhbWJpdmFsZW50IG9uIHdo
YXQgZmNobW9kKCkgc2hvdWxkIGRvIG9uIGFuIGZkIHRoYXQgZG9lcyBub3QKZGlmZiAtLWdpdCBh
L2xpYi92ZnNjb3JlL3Zmcy5oIGIvbGliL3Zmc2NvcmUvdmZzLmgKaW5kZXggMjUzMWY3MzAuLjE5
ZjhhYzg3IDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS92ZnMuaAorKysgYi9saWIvdmZzY29yZS92
ZnMuaApAQCAtNTcsNyArNTcsNyBAQCBleHRlcm4gaW50IHZmc19kZWJ1ZzsKIAogI2RlZmluZSBW
RlNEQl9GTEFHUwkweDAwMDAwMDEzCiAKLSNkZWZpbmUJRFBSSU5URihfbSxYKQlpZiAodmZzX2Rl
YnVnICYgKF9tKSkga3ByaW50ZiBYCisjZGVmaW5lCURQUklOVEYoX20sWCkJaWYgKHZmc19kZWJ1
ZyAmIChfbSkpIHVrX3ByX2RlYnVnIFgKICNlbHNlCiAjZGVmaW5lCURQUklOVEYoX20sIFgpCiAj
ZW5kaWYKQEAgLTcxLDI4ICs3MSwyNiBAQCBleHRlcm4gaW50IHZmc19kZWJ1ZzsKICAqLwogc3Ry
dWN0IHRhc2sgewogCWNoYXIgCSAgICB0X2N3ZFtQQVRIX01BWF07CS8qIGN1cnJlbnQgd29ya2lu
ZyBkaXJlY3RvcnkgKi8KLQlzdHJ1Y3QgZmlsZSAqdF9jd2RmcDsJCS8qIGRpcmVjdG9yeSBmb3Ig
Y3dkICovCisJc3RydWN0IHZmc2NvcmVfZmlsZSAqdF9jd2RmcDsJCS8qIGRpcmVjdG9yeSBmb3Ig
Y3dkICovCiB9OwogCi1leHRlcm4gY29uc3Qgc3RydWN0IHZmc3N3IHZmc3N3W107Ci0KLWludAkg
c3lzX29wZW4oY2hhciAqcGF0aCwgaW50IGZsYWdzLCBtb2RlX3QgbW9kZSwgc3RydWN0IGZpbGUg
KipmcCk7Ci1pbnQJIHN5c19yZWFkKHN0cnVjdCBmaWxlICpmcCwgY29uc3Qgc3RydWN0IGlvdmVj
ICppb3YsIHNpemVfdCBuaW92LAoraW50CSBzeXNfb3BlbihjaGFyICpwYXRoLCBpbnQgZmxhZ3Ms
IG1vZGVfdCBtb2RlLCBzdHJ1Y3QgdmZzY29yZV9maWxlICoqZnApOworaW50CSBzeXNfcmVhZChz
dHJ1Y3QgdmZzY29yZV9maWxlICpmcCwgY29uc3Qgc3RydWN0IGlvdmVjICppb3YsIHNpemVfdCBu
aW92LAogCQlvZmZfdCBvZmZzZXQsIHNpemVfdCAqY291bnQpOwotaW50CSBzeXNfd3JpdGUoc3Ry
dWN0IGZpbGUgKmZwLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlvdiwgc2l6ZV90IG5pb3YsCitpbnQJ
IHN5c193cml0ZShzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCwgY29uc3Qgc3RydWN0IGlvdmVjICpp
b3YsIHNpemVfdCBuaW92LAogCQlvZmZfdCBvZmZzZXQsIHNpemVfdCAqY291bnQpOwotaW50CSBz
eXNfbHNlZWsoc3RydWN0IGZpbGUgKmZwLCBvZmZfdCBvZmYsIGludCB0eXBlLCBvZmZfdCAqIGN1
cl9vZmYpOwotaW50CSBzeXNfaW9jdGwoc3RydWN0IGZpbGUgKmZwLCB1X2xvbmcgcmVxdWVzdCwg
dm9pZCAqYnVmKTsKLWludAkgc3lzX2ZzdGF0KHN0cnVjdCBmaWxlICpmcCwgc3RydWN0IHN0YXQg
KnN0KTsKLWludAkgc3lzX2ZzdGF0ZnMoc3RydWN0IGZpbGUgKmZwLCBzdHJ1Y3Qgc3RhdGZzICpi
dWYpOwotaW50CSBzeXNfZnN5bmMoc3RydWN0IGZpbGUgKmZwKTsKLWludAkgc3lzX2Z0cnVuY2F0
ZShzdHJ1Y3QgZmlsZSAqZnAsIG9mZl90IGxlbmd0aCk7Ci0KLWludAkgc3lzX3JlYWRkaXIoc3Ry
dWN0IGZpbGUgKmZwLCBzdHJ1Y3QgZGlyZW50ICpkaXJlbnQpOwotaW50CSBzeXNfcmV3aW5kZGly
KHN0cnVjdCBmaWxlICpmcCk7Ci1pbnQJIHN5c19zZWVrZGlyKHN0cnVjdCBmaWxlICpmcCwgbG9u
ZyBsb2MpOwotaW50CSBzeXNfdGVsbGRpcihzdHJ1Y3QgZmlsZSAqZnAsIGxvbmcgKmxvYyk7Ci1p
bnQJIHN5c19mY2hkaXIoc3RydWN0IGZpbGUgKmZwLCBjaGFyICpwYXRoKTsKK2ludAkgc3lzX2xz
ZWVrKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwLCBvZmZfdCBvZmYsIGludCB0eXBlLCBvZmZfdCAq
IGN1cl9vZmYpOworaW50CSBzeXNfaW9jdGwoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAsIHVuc2ln
bmVkIGxvbmcgcmVxdWVzdCwgdm9pZCAqYnVmKTsKK2ludAkgc3lzX2ZzdGF0KHN0cnVjdCB2ZnNj
b3JlX2ZpbGUgKmZwLCBzdHJ1Y3Qgc3RhdCAqc3QpOworaW50CSBzeXNfZnN0YXRmcyhzdHJ1Y3Qg
dmZzY29yZV9maWxlICpmcCwgc3RydWN0IHN0YXRmcyAqYnVmKTsKK2ludAkgc3lzX2ZzeW5jKHN0
cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwKTsKK2ludAkgc3lzX2Z0cnVuY2F0ZShzdHJ1Y3QgdmZzY29y
ZV9maWxlICpmcCwgb2ZmX3QgbGVuZ3RoKTsKKworaW50CSBzeXNfcmVhZGRpcihzdHJ1Y3QgdmZz
Y29yZV9maWxlICpmcCwgc3RydWN0IGRpcmVudCAqZGlyZW50KTsKK2ludAkgc3lzX3Jld2luZGRp
cihzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCk7CitpbnQJIHN5c19zZWVrZGlyKHN0cnVjdCB2ZnNj
b3JlX2ZpbGUgKmZwLCBsb25nIGxvYyk7CitpbnQJIHN5c190ZWxsZGlyKHN0cnVjdCB2ZnNjb3Jl
X2ZpbGUgKmZwLCBsb25nICpsb2MpOworaW50CSBzeXNfZmNoZGlyKHN0cnVjdCB2ZnNjb3JlX2Zp
bGUgKmZwLCBjaGFyICpwYXRoKTsKIAogaW50CSBzeXNfbWtkaXIoY2hhciAqcGF0aCwgbW9kZV90
IG1vZGUpOwogaW50CSBzeXNfcm1kaXIoY2hhciAqcGF0aCk7CkBAIC0xMTEsNyArMTA5LDcgQEAg
aW50ICBzeXNfdXRpbWVzKGNoYXIgKnBhdGgsIGNvbnN0IHN0cnVjdCB0aW1ldmFsIHRpbWVzWzJd
LCBpbnQgZmxhZ3MpOwogaW50ICBzeXNfdXRpbWVuc2F0KGludCBkaXJmZCwgY29uc3QgY2hhciAq
cGF0aG5hbWUsCiAJCQkJICAgY29uc3Qgc3RydWN0IHRpbWVzcGVjIHRpbWVzWzJdLCBpbnQgZmxh
Z3MpOwogaW50ICBzeXNfZnV0aW1lbnMoaW50IGZkLCBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgdGlt
ZXNbMl0pOwotaW50ICBzeXNfZmFsbG9jYXRlKHN0cnVjdCBmaWxlICpmcCwgaW50IG1vZGUsIGxv
ZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4pOworaW50ICBzeXNfZmFsbG9jYXRlKHN0cnVjdCB2ZnNj
b3JlX2ZpbGUgKmZwLCBpbnQgbW9kZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbik7CiAKIGlu
dAkgc3lzX21vdW50KGNvbnN0IGNoYXIgKmRldiwgY29uc3QgY2hhciAqZGlyLCBjb25zdCBjaGFy
ICpmc25hbWUsIGludCBmbGFncywgY29uc3Qgdm9pZCAqZGF0YSk7CiBpbnQJIHN5c191bW91bnQy
KGNvbnN0IGNoYXIgKnBhdGgsIGludCBmbGFncyk7CmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS92
bm9kZS5jIGIvbGliL3Zmc2NvcmUvdm5vZGUuYwppbmRleCA4MWY3OGJlOC4uYTJmNDU1OTYgMTAw
NjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL3Zub2RlLmMKKysrIGIvbGliL3Zmc2NvcmUvdm5vZGUuYwpA
QCAtNzcsMjQgKzc3LDI3IEBAIGludCB2dHRvaWZfdGFiWzEwXSA9IHsKICAqIEFsbCBhY3RpdmUg
KG9wZW5lZCkgdm5vZGVzIGFyZSBzdG9yZWQgb24gdGhpcyBoYXNoIHRhYmxlLgogICogVGhleSBj
YW4gYmUgYWNjZXNzZWQgYnkgaXRzIHBhdGggbmFtZS4KICAqLwotc3RhdGljIExJU1RfSEVBRCh2
bm9kZV9oYXNoX2hlYWQsIHZub2RlKSB2bm9kZV90YWJsZVtWTk9ERV9CVUNLRVRTXTsKK3N0YXRp
YyBzdHJ1Y3QgdWtfbGlzdF9oZWFkIHZub2RlX3RhYmxlW1ZOT0RFX0JVQ0tFVFNdOwogCiAvKgog
ICogR2xvYmFsIGxvY2sgdG8gYWNjZXNzIGFsbCB2bm9kZXMgYW5kIHZub2RlIHRhYmxlLgogICog
SWYgYSB2bm9kZSBpcyBhbHJlYWR5IGxvY2tlZCwgdGhlcmUgaXMgbm8gbmVlZCB0bwogICogbG9j
ayB0aGlzIGdsb2JhbCBsb2NrIHRvIGFjY2VzcyBpbnRlcm5hbCBkYXRhLgogICovCi1zdGF0aWMg
bXV0ZXhfdCB2bm9kZV9sb2NrID0gTVVURVhfSU5JVElBTElaRVI7Ci0jZGVmaW5lIFZOT0RFX0xP
Q0soKQltdXRleF9sb2NrKCZ2bm9kZV9sb2NrKQotI2RlZmluZSBWTk9ERV9VTkxPQ0soKQltdXRl
eF91bmxvY2soJnZub2RlX2xvY2spCi0jZGVmaW5lIFZOT0RFX09XTkVEKCkJbXV0ZXhfb3duZWQo
JnZub2RlX2xvY2spCitzdGF0aWMgc3RydWN0IHVrX211dGV4IHZub2RlX2xvY2sgPSBVS19NVVRF
WF9JTklUSUFMSVpFUih2bm9kZV9sb2NrKTsKKyNkZWZpbmUgVk5PREVfTE9DSygpCXVrX211dGV4
X2xvY2soJnZub2RlX2xvY2spCisjZGVmaW5lIFZOT0RFX1VOTE9DSygpCXVrX211dGV4X3VubG9j
aygmdm5vZGVfbG9jaykKKworLyogVE9ETzogaW1wbGVtZW50IG11dGV4X293bmVkICovCisjZGVm
aW5lIFZOT0RFX09XTkVEKCkJKDEpCisvKiAjZGVmaW5lIFZOT0RFX09XTkVEKCkJbXV0ZXhfb3du
ZWQoJnZub2RlX2xvY2spICovCisKIAogLyoKICAqIEdldCB0aGUgaGFzaCB2YWx1ZSBmcm9tIHRo
ZSBtb3VudCBwb2ludCBhbmQgcGF0aCBuYW1lLgogICogWFhYKGhjaCk6IHJlcGxhY2Ugd2l0aCBh
IGJldHRlciBoYXNoIGZvciA2NC1iaXQgcG9pbnRlcnMuCiAgKi8KLXN0YXRpYyB1X2ludAotdm5f
aGFzaChzdHJ1Y3QgbW91bnQgKm1wLCB1aW50NjRfdCBpbm8pCitzdGF0aWMgdW5zaWduZWQgaW50
IHZuX2hhc2goc3RydWN0IG1vdW50ICptcCwgdWludDY0X3QgaW5vKQogewogCXJldHVybiAoaW5v
IF4gKHVuc2lnbmVkIGxvbmcpbXApICYgKFZOT0RFX0JVQ0tFVFMgLSAxKTsKIH0KQEAgLTExMCwx
NiArMTEzLDE1IEBAIHZuX2xvb2t1cChzdHJ1Y3QgbW91bnQgKm1wLCB1aW50NjRfdCBpbm8pCiB7
CiAJc3RydWN0IHZub2RlICp2cDsKIAotCWFzc2VydChWTk9ERV9PV05FRCgpKTsKLQlMSVNUX0ZP
UkVBQ0godnAsICZ2bm9kZV90YWJsZVt2bl9oYXNoKG1wLCBpbm8pXSwgdl9saW5rKSB7CisJVUtf
QVNTRVJUKFZOT0RFX09XTkVEKCkpOworCXVrX2xpc3RfZm9yX2VhY2hfZW50cnkodnAsICZ2bm9k
ZV90YWJsZVt2bl9oYXNoKG1wLCBpbm8pXSwgdl9saW5rKSB7CiAJCWlmICh2cC0+dl9tb3VudCA9
PSBtcCAmJiB2cC0+dl9pbm8gPT0gaW5vKSB7CiAJCQl2cC0+dl9yZWZjbnQrKzsKLQkJCW11dGV4
X2xvY2soJnZwLT52X2xvY2spOwotCQkJdnAtPnZfbnJsb2NrcysrOworCQkJdWtfbXV0ZXhfbG9j
aygmdnAtPnZfbG9jayk7CiAJCQlyZXR1cm4gdnA7CiAJCX0KIAl9Ci0JcmV0dXJuIG51bGxwdHI7
CQkvKiBub3QgZm91bmQgKi8KKwlyZXR1cm4gTlVMTDsJCS8qIG5vdCBmb3VuZCAqLwogfQogCiAj
aWZkZWYgREVCVUdfVkZTCkBAIC0xMjgsMTAgKzEzMCwxMCBAQCB2bl9wYXRoKHN0cnVjdCB2bm9k
ZSAqdnApCiB7CiAJc3RydWN0IGRlbnRyeSAqZHA7CiAKLQlpZiAoTElTVF9FTVBUWSgmdnAtPnZf
bmFtZXMpID09IDEpIHsKKwlpZiAodWtfbGlzdF9lbXB0eSgmdnAtPnZfbmFtZXMpID09IDEpIHsK
IAkJcmV0dXJuICgiICIpOwogCX0KLQlkcCA9IExJU1RfRklSU1QoJnZwLT52X25hbWVzKTsKKwlk
cCA9IHVrX2xpc3RfZmlyc3RfZW50cnkoJnZwLT52X25hbWVzLCBzdHJ1Y3QgZGVudHJ5LCBkX25h
bWVzX2xpbmspOwogCXJldHVybiAoZHAtPmRfcGF0aCk7CiB9CiAjZW5kaWYKQEAgLTE0MiwxMSAr
MTQ0LDEwIEBAIHZuX3BhdGgoc3RydWN0IHZub2RlICp2cCkKIHZvaWQKIHZuX2xvY2soc3RydWN0
IHZub2RlICp2cCkKIHsKLQlBU1NFUlQodnApOwotCUFTU0VSVCh2cC0+dl9yZWZjbnQgPiAwKTsK
KwlVS19BU1NFUlQodnApOworCVVLX0FTU0VSVCh2cC0+dl9yZWZjbnQgPiAwKTsKIAotCW11dGV4
X2xvY2soJnZwLT52X2xvY2spOwotCXZwLT52X25ybG9ja3MrKzsKKwl1a19tdXRleF9sb2NrKCZ2
cC0+dl9sb2NrKTsKIAlEUFJJTlRGKFZGU0RCX1ZOT0RFLCAoInZuX2xvY2s6ICAgJXNcbiIsIHZu
X3BhdGgodnApKSk7CiB9CiAKQEAgLTE1NiwxMiArMTU3LDEwIEBAIHZuX2xvY2soc3RydWN0IHZu
b2RlICp2cCkKIHZvaWQKIHZuX3VubG9jayhzdHJ1Y3Qgdm5vZGUgKnZwKQogewotCUFTU0VSVCh2
cCk7Ci0JQVNTRVJUKHZwLT52X3JlZmNudCA+IDApOwotCUFTU0VSVCh2cC0+dl9ucmxvY2tzID4g
MCk7CisJVUtfQVNTRVJUKHZwKTsKKwlVS19BU1NFUlQodnAtPnZfcmVmY250ID49IDApOwogCi0J
dnAtPnZfbnJsb2Nrcy0tOwotCW11dGV4X3VubG9jaygmdnAtPnZfbG9jayk7CisJdWtfbXV0ZXhf
dW5sb2NrKCZ2cC0+dl9sb2NrKTsKIAlEUFJJTlRGKFZGU0RCX1ZOT0RFLCAoInZuX2xvY2s6ICAg
JXNcbiIsIHZuX3BhdGgodnApKSk7CiB9CiAKQEAgLTE3Niw3ICsxNzUsNyBAQCB2Z2V0KHN0cnVj
dCBtb3VudCAqbXAsIHVpbnQ2NF90IGlubywgc3RydWN0IHZub2RlICoqdnBwKQogCXN0cnVjdCB2
bm9kZSAqdnA7CiAJaW50IGVycm9yOwogCi0JKnZwcCA9IG51bGxwdHI7CisJKnZwcCA9IE5VTEw7
CiAKIAlEUFJJTlRGKFZGU0RCX1ZOT0RFLCAoInZnZXQgJUxMdVxuIiwgaW5vKSk7CiAKQEAgLTE5
NSwyNiArMTk0LDI0IEBAIHZnZXQoc3RydWN0IG1vdW50ICptcCwgdWludDY0X3QgaW5vLCBzdHJ1
Y3Qgdm5vZGUgKip2cHApCiAJCXJldHVybiAwOwogCX0KIAotCUxJU1RfSU5JVCgmdnAtPnZfbmFt
ZXMpOworCVVLX0lOSVRfTElTVF9IRUFEKCZ2cC0+dl9uYW1lcyk7CiAJdnAtPnZfaW5vID0gaW5v
OwogCXZwLT52X21vdW50ID0gbXA7CiAJdnAtPnZfcmVmY250ID0gMTsKIAl2cC0+dl9vcCA9IG1w
LT5tX29wLT52ZnNfdm5vcHM7Ci0JdnAtPnZfbnJsb2NrcyA9IDA7Ci0KKwl1a19tdXRleF9pbml0
KCZ2cC0+dl9sb2NrKTsKIAkvKgogCSAqIFJlcXVlc3QgdG8gYWxsb2NhdGUgZnMgc3BlY2lmaWMg
ZGF0YSBmb3Igdm5vZGUuCiAJICovCiAJaWYgKChlcnJvciA9IFZGU19WR0VUKG1wLCB2cCkpICE9
IDApIHsKIAkJVk5PREVfVU5MT0NLKCk7Ci0JCWRlbGV0ZSB2cDsKKwkJZnJlZSh2cCk7CiAJCXJl
dHVybiBlcnJvcjsKIAl9CiAJdmZzX2J1c3kodnAtPnZfbW91bnQpOwotCW11dGV4X2xvY2soJnZw
LT52X2xvY2spOwotCXZwLT52X25ybG9ja3MrKzsKKwl1a19tdXRleF9sb2NrKCZ2cC0+dl9sb2Nr
KTsKIAotCUxJU1RfSU5TRVJUX0hFQUQoJnZub2RlX3RhYmxlW3ZuX2hhc2gobXAsIGlubyldLCB2
cCwgdl9saW5rKTsKKwl1a19saXN0X2FkZCgmdnAtPnZfbGluaywgJnZub2RlX3RhYmxlW3ZuX2hh
c2gobXAsIGlubyldKTsKIAlWTk9ERV9VTkxPQ0soKTsKIAogCSp2cHAgPSB2cDsKQEAgLTIyOCw5
ICsyMjUsOCBAQCB2Z2V0KHN0cnVjdCBtb3VudCAqbXAsIHVpbnQ2NF90IGlubywgc3RydWN0IHZu
b2RlICoqdnBwKQogdm9pZAogdnB1dChzdHJ1Y3Qgdm5vZGUgKnZwKQogewotCUFTU0VSVCh2cCk7
Ci0JQVNTRVJUKHZwLT52X25ybG9ja3MgPiAwKTsKLQlBU1NFUlQodnAtPnZfcmVmY250ID4gMCk7
CisJVUtfQVNTRVJUKHZwKTsKKwlVS19BU1NFUlQodnAtPnZfcmVmY250ID4gMCk7CiAJRFBSSU5U
RihWRlNEQl9WTk9ERSwgKCJ2cHV0OiByZWY9JWQgJXNcbiIsIHZwLT52X3JlZmNudCwgdm5fcGF0
aCh2cCkpKTsKIAogCVZOT0RFX0xPQ0soKTsKQEAgLTI0MCw3ICsyMzYsNyBAQCB2cHV0KHN0cnVj
dCB2bm9kZSAqdnApCiAJCXZuX3VubG9jayh2cCk7CiAJCXJldHVybjsKIAl9Ci0JTElTVF9SRU1P
VkUodnAsIHZfbGluayk7CisJdWtfbGlzdF9kZWwoJnZwLT52X2xpbmspOwogCVZOT0RFX1VOTE9D
SygpOwogCiAJLyoKQEAgLTI0OSwxMCArMjQ1LDggQEAgdnB1dChzdHJ1Y3Qgdm5vZGUgKnZwKQog
CWlmICh2cC0+dl9vcC0+dm9wX2luYWN0aXZlKQogCQlWT1BfSU5BQ1RJVkUodnApOwogCXZmc191
bmJ1c3kodnAtPnZfbW91bnQpOwotCXZwLT52X25ybG9ja3MtLTsKLQlBU1NFUlQodnAtPnZfbnJs
b2NrcyA9PSAwKTsKLQltdXRleF91bmxvY2soJnZwLT52X2xvY2spOwotCWRlbGV0ZSB2cDsKKwl1
a19tdXRleF91bmxvY2soJnZwLT52X2xvY2spOworCWZyZWUodnApOwogfQogCiAvKgpAQCAtMjYx
LDggKzI1NSw4IEBAIHZwdXQoc3RydWN0IHZub2RlICp2cCkKIHZvaWQKIHZyZWYoc3RydWN0IHZu
b2RlICp2cCkKIHsKLQlBU1NFUlQodnApOwotCUFTU0VSVCh2cC0+dl9yZWZjbnQgPiAwKTsJLyog
TmVlZCB2Z2V0ICovCisJVUtfQVNTRVJUKHZwKTsKKwlVS19BU1NFUlQodnAtPnZfcmVmY250ID4g
MCk7CS8qIE5lZWQgdmZzY29yZV92Z2V0ICovCiAKIAlWTk9ERV9MT0NLKCk7CiAJRFBSSU5URihW
RlNEQl9WTk9ERSwgKCJ2cmVmOiByZWY9JWRcbiIsIHZwLT52X3JlZmNudCkpOwpAQCAtMjc5LDgg
KzI3Myw4IEBAIHZyZWYoc3RydWN0IHZub2RlICp2cCkKIHZvaWQKIHZyZWxlKHN0cnVjdCB2bm9k
ZSAqdnApCiB7Ci0JQVNTRVJUKHZwKTsKLQlBU1NFUlQodnAtPnZfcmVmY250ID4gMCk7CisJVUtf
QVNTRVJUKHZwKTsKKwlVS19BU1NFUlQodnAtPnZfcmVmY250ID4gMCk7CiAKIAlWTk9ERV9MT0NL
KCk7CiAJRFBSSU5URihWRlNEQl9WTk9ERSwgKCJ2cmVsZTogcmVmPSVkXG4iLCB2cC0+dl9yZWZj
bnQpKTsKQEAgLTI4OSw3ICsyODMsNyBAQCB2cmVsZShzdHJ1Y3Qgdm5vZGUgKnZwKQogCQlWTk9E
RV9VTkxPQ0soKTsKIAkJcmV0dXJuOwogCX0KLQlMSVNUX1JFTU9WRSh2cCwgdl9saW5rKTsKKwl1
a19saXN0X2RlbCgmdnAtPnZfbGluayk7CiAJVk5PREVfVU5MT0NLKCk7CiAKIAkvKgpAQCAtMjk3
LDcgKzI5MSw3IEBAIHZyZWxlKHN0cnVjdCB2bm9kZSAqdnApCiAJICovCiAJVk9QX0lOQUNUSVZF
KHZwKTsKIAl2ZnNfdW5idXN5KHZwLT52X21vdW50KTsKLQlkZWxldGUgdnA7CisJZnJlZSh2cCk7
CiB9CiAKIC8qCkBAIC00NTYsMjEgKzQ1MCwyNSBAQCB2bm9kZV9kdW1wKHZvaWQpCiAJCQkgICAi
VkxOSyAiLCAiVlNPQ0siLCAiVkZJRk8iIH07CiAKIAlWTk9ERV9MT0NLKCk7Ci0Ja3ByaW50Zigi
RHVtcCB2bm9kZVxuIik7Ci0Ja3ByaW50ZigiIHZub2RlICAgIG1vdW50ICAgIHR5cGUgIHJlZmNu
dCBibGtubyAgICBwYXRoXG4iKTsKLQlrcHJpbnRmKCIgLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0g
LS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7CisKKwl1
a19wcl9kZWJ1ZygiRHVtcCB2bm9kZVxuIik7CisJdWtfcHJfZGVidWcoIiB2bm9kZSAgICAgICAg
ICAgIG1vdW50ICAgICAgICAgICAgdHlwZSAgcmVmY250IHBhdGhcbiIpOworCXVrX3ByX2RlYnVn
KCIgLS0tLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOwogCiAJZm9yIChpID0gMDsgaSA8IFZOT0RFX0JV
Q0tFVFM7IGkrKykgewotCSAgICAgICAgTElTVF9GT1JFQUNIKHZwLCAmdm5vZGVfdGFibGVbaV0s
IHZfbGluaykgeworCQl1a19saXN0X2Zvcl9lYWNoX2VudHJ5KHZwLCAmdm5vZGVfdGFibGVbaV0s
IHZfbGluaykgewogCQkJbXAgPSB2cC0+dl9tb3VudDsKIAotCQkJa3ByaW50ZigiICUwOHggJTA4
eCAlcyAlNmQgJThkICVzJXNcbiIsICh1X2xvbmcpdnAsCi0JCQkJKHVfbG9uZyltcCwgdHlwZVt2
cC0+dl90eXBlXSwgdnAtPnZfcmVmY250LAotCQkJCShzdHJsZW4obXAtPm1fcGF0aCkgPT0gMSkg
PyAiXDAiIDogbXAtPm1fcGF0aCwKLQkJCQl2bl9wYXRoKHZwKSk7CisKKwkJCXVrX3ByX2RlYnVn
KCIgJTAxNmx4ICUwMTZseCAlcyAlNmQgJXMlc1xuIiwKKwkJCQkgICAgKHVuc2lnbmVkIGxvbmcp
IHZwLAorCQkJCSAgICAodW5zaWduZWQgbG9uZykgbXAsIHR5cGVbdnAtPnZfdHlwZV0sCisJCQkJ
ICAgIHZwLT52X3JlZmNudCwKKwkJCQkgICAgKHN0cmxlbihtcC0+bV9wYXRoKSA9PSAxKSA/ICJc
MCIgOiBtcC0+bV9wYXRoLAorCQkJCSAgICB2bl9wYXRoKHZwKSk7CiAJCX0KIAl9Ci0Ja3ByaW50
ZigiXG4iKTsKKwl1a19wcl9kZWJ1ZygiXG4iKTsKIAlWTk9ERV9VTkxPQ0soKTsKIH0KICNlbmRp
ZgpAQCAtNTA5LDIwICs1MDcsMjIgQEAgdm5vZGVfaW5pdCh2b2lkKQogCWludCBpOwogCiAJZm9y
IChpID0gMDsgaSA8IFZOT0RFX0JVQ0tFVFM7IGkrKykKLQkJTElTVF9JTklUKCZ2bm9kZV90YWJs
ZVtpXSk7CisJCVVLX0lOSVRfTElTVF9IRUFEKCZ2bm9kZV90YWJsZVtpXSk7CiB9CiAKIHZvaWQg
dm5fYWRkX25hbWUoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IGRlbnRyeSAqZHApCiB7Ci0Jdm5f
bG9jayh2cCk7Ci0JTElTVF9JTlNFUlRfSEVBRCgmdnAtPnZfbmFtZXMsIGRwLCBkX25hbWVzX2xp
bmspOwotCXZuX3VubG9jayh2cCk7CisJLyogVE9ETzogUmUtZW5hYmxlIHRoaXMgY2hlY2sgd2hl
biBwcmVlbXB0aW9uIGFuZC9vciBzbXAgaXMKKwkgKiBoZXJlICovCisJLyogVUtfQVNTRVJUKHVr
X211dGV4X2lzX2xvY2tlZCgmdnAtPnZfbG9jaykpOyAqLworCXVrX2xpc3RfYWRkKCZkcC0+ZF9u
YW1lc19saW5rLCAmdnAtPnZfbmFtZXMpOwogfQogCiB2b2lkIHZuX2RlbF9uYW1lKHN0cnVjdCB2
bm9kZSAqdnAsIHN0cnVjdCBkZW50cnkgKmRwKQogewotCXZuX2xvY2sodnApOwotCUxJU1RfUkVN
T1ZFKGRwLCBkX25hbWVzX2xpbmspOwotCXZuX3VubG9jayh2cCk7CisJLyogVE9ETzogUmUtZW5h
YmxlIHRoaXMgY2hlY2sgd2hlbiBwcmVlbXB0aW9uIGFuZC9vciBzbXAgaXMKKwkgKiBoZXJlICov
CisJLyogVUtfQVNTRVJUKHVrX211dGV4X2lzX2xvY2tlZCgmdnAtPnZfbG9jaykpOyAqLworCXVr
X2xpc3RfZGVsKCZkcC0+ZF9uYW1lc19saW5rKTsKIH0KIAotLSAKMi4xOS4yCgoKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxp
bmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54
ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Feb 04 14:39:45 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 04 Feb 2019 14:39:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gqfPV-0006Xz-Iy; Mon, 04 Feb 2019 14:39:45 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Kl24=QL=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gqfPV-0006Xm-0a
 for minios-devel@lists.xen.org; Mon, 04 Feb 2019 14:39:45 +0000
X-Inumbo-ID: b5155524-288a-11e9-a7a6-6f4a80ca050d
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id b5155524-288a-11e9-a7a6-6f4a80ca050d;
 Mon, 04 Feb 2019 14:39:42 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id CB5E2F2071;
 Mon,  4 Feb 2019 15:39:41 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 2NhZKpaIyFGs; Mon,  4 Feb 2019 15:39:41 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id A7015F2065
 for <minios-devel@lists.xen.org>; Mon,  4 Feb 2019 15:39:39 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 4 Feb 2019 15:39:39 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>, <Simon.kuenzer@neclab.eu>,
 <sharan.santhanam@neclab.eu>
Date: Mon, 4 Feb 2019 15:37:27 +0100
Message-ID: <20190204143739.29249-36-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 11/23] lib/vfscore: introduce
 UK_FS_REGISTER
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhlIG1hY3JvIHJlZ2lzdGVycyB0aGUgZmlsZXN5c3RlbSBpbiB0aGUgc3RhdGljIGFycmF5CgpT
aWduZWQtb2ZmLWJ5OiBZdXJpIFZvbGNoa292IDx5dXJpLnZvbGNoa292QG5lY2xhYi5ldT4KLS0t
CiBsaWIvdmZzY29yZS9NYWtlZmlsZS51ayAgICAgICAgICAgICB8ICAyICsrCiBsaWIvdmZzY29y
ZS9leHRyYS5sZCAgICAgICAgICAgICAgICB8ICA5ICsrKysrKysrKwogbGliL3Zmc2NvcmUvaW5j
bHVkZS92ZnNjb3JlL21vdW50LmggfCAgNiArKysrKy0KIGxpYi92ZnNjb3JlL21vdW50LmMgICAg
ICAgICAgICAgICAgIHwgMjQgKysrKysrKysrKysrKysrKysrLS0tLS0tCiA0IGZpbGVzIGNoYW5n
ZWQsIDM0IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQg
bGliL3Zmc2NvcmUvZXh0cmEubGQKCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9NYWtlZmlsZS51
ayBiL2xpYi92ZnNjb3JlL01ha2VmaWxlLnVrCmluZGV4IDEyNDZhZTUzLi4wNjkzM2Q5NiAxMDA2
NDQKLS0tIGEvbGliL3Zmc2NvcmUvTWFrZWZpbGUudWsKKysrIGIvbGliL3Zmc2NvcmUvTWFrZWZp
bGUudWsKQEAgLTUsMyArNSw1IEBAIENJTkNMVURFUy15ICs9IC1JJChMSUJWRlNDT1JFX0JBU0Up
L2luY2x1ZGUKIExJQlZGU0NPUkVfU1JDUy15ICs9ICQoTElCVkZTQ09SRV9CQVNFKS9mZC5jCiBM
SUJWRlNDT1JFX1NSQ1MteSArPSAkKExJQlZGU0NPUkVfQkFTRSkvZmlsZS5jCiBMSUJWRlNDT1JF
X1NSQ1MteSArPSAkKExJQlZGU0NPUkVfQkFTRSkvc3RkaW8uYworCitFWFRSQV9MRF9TQ1JJUFQt
JChDT05GSUdfTElCVkZTQ09SRSkgKz0gJChMSUJWRlNDT1JFX0JBU0UpL2V4dHJhLmxkClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvZXh0cmEubGQg
Yi9saWIvdmZzY29yZS9leHRyYS5sZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MC4uMTczYjIzNTAKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvdmZzY29yZS9leHRyYS5sZApAQCAt
MCwwICsxLDkgQEAKK1NFQ1RJT05TCit7CisJLnVrX2ZzX2xpc3QgOiB7CisJCVBST1ZJREUodWtf
ZnNsaXN0X3N0YXJ0ID0gLik7CisJCUtFRVAgKCooLnVrX2ZzX2xpc3QpKQorICAgICAgICAgICAg
ICAgIFBST1ZJREUodWtfZnNsaXN0X2VuZCA9IC4pOworCX0KK30KK0lOU0VSVCBBRlRFUiAudGV4
dDsKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9tb3VudC5oIGIvbGli
L3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmgKaW5kZXggN2E2MzhkYmUuLmI0YTA3MzIz
IDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvbW91bnQuaAorKysgYi9s
aWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvbW91bnQuaApAQCAtMTAwLDEyICsxMDAsMTYgQEAg
c3RydWN0IG1vdW50IHsKIC8qCiAgKiBGaWxlc3lzdGVtIHR5cGUgc3dpdGNoIHRhYmxlLgogICov
Ci1zdHJ1Y3QgdmZzc3cgeworc3RydWN0IHZmc2NvcmVfZnNfdHlwZSB7CiAJY29uc3QgY2hhciAg
ICAgICp2c19uYW1lOwkvKiBuYW1lIG9mIGZpbGUgc3lzdGVtICovCiAJaW50CQkoKnZzX2luaXQp
KHZvaWQpOyAvKiBpbml0aWFsaXplIHJvdXRpbmUgKi8KIAlzdHJ1Y3QgdmZzb3BzCSp2c19vcDsJ
CS8qIHBvaW50ZXIgdG8gdmZzIG9wZXJhdGlvbiAqLwogfTsKIAorI2RlZmluZSBVS19GU19SRUdJ
U1RFUihmc3N3KQkJCQkJXAorCXN0YXRpYyB2b2lkIF9fYXR0cmlidXRlKChfX3NlY3Rpb25fXygi
LnVrX2ZzX2xpc3QiKSkpCVwKKwkJKl9fcHRyXyMjZnNzdyBfX3VzZWQgPSAmZnNzdzsJCQkJXAor
CiAvKgogICogT3BlcmF0aW9ucyBzdXBwb3J0ZWQgb24gdmlydHVhbCBmaWxlIHN5c3RlbS4KICAq
LwpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvbW91bnQuYyBiL2xpYi92ZnNjb3JlL21vdW50LmMK
aW5kZXggZTEyYzAwMzMuLmRhZWQ4N2ZhIDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9tb3VudC5j
CisrKyBiL2xpYi92ZnNjb3JlL21vdW50LmMKQEAgLTYyLDIwICs2MiwzMiBAQCBVS19MSVNUX0hF
QUQobW91bnRfbGlzdCk7CiAgKi8KIHN0YXRpYyBzdHJ1Y3QgdWtfbXV0ZXggbW91bnRfbG9jazsK
IAorZXh0ZXJuIGNvbnN0IHN0cnVjdCB2ZnNjb3JlX2ZzX3R5cGUgKnVrX2ZzbGlzdF9zdGFydDsK
K2V4dGVybiBjb25zdCBzdHJ1Y3QgdmZzY29yZV9mc190eXBlICp1a19mc2xpc3RfZW5kOworCisj
ZGVmaW5lIGZvcl9lYWNoX2ZzKGl0ZXIpCQkJXAorCWZvciAoaXRlciA9ICZ1a19mc2xpc3Rfc3Rh
cnQ7CVwKKwkgICAgIGl0ZXIgPCAmdWtfZnNsaXN0X2VuZDsJCVwKKwkgICAgIGl0ZXIrKykKKwog
LyoKICAqIExvb2t1cCBmaWxlIHN5c3RlbS4KICAqLwotc3RhdGljIGNvbnN0IHN0cnVjdCB2ZnNz
dyAqCitzdGF0aWMgY29uc3Qgc3RydWN0IHZmc2NvcmVfZnNfdHlwZSAqCiBmc19nZXRmcyhjb25z
dCBjaGFyICpuYW1lKQogewotCWNvbnN0IHN0cnVjdCB2ZnNzdyAqZnM7CisJY29uc3Qgc3RydWN0
IHZmc2NvcmVfZnNfdHlwZSAqZnMgPSBOVUxMLCAqKl9fZnM7CisKKwlmb3JfZWFjaF9mcyhfX2Zz
KSB7CisJCWZzID0gKl9fZnM7CisJCWlmIChmcyA9PSBOVUxMKQorCQkJY29udGludWU7CiAKLQlm
b3IgKGZzID0gdmZzc3c7IGZzLT52c19uYW1lOyBmcysrKSB7CiAJCWlmICghc3RybmNtcChuYW1l
LCBmcy0+dnNfbmFtZSwgRlNNQVhOQU1FUykpCiAJCQlicmVhazsKIAl9Ci0JaWYgKCFmcy0+dnNf
bmFtZSkKLQkJcmV0dXJuIG51bGxwdHI7CisJaWYgKCFmcyB8fCAhZnMtPnZzX25hbWUpCisJCXJl
dHVybiBOVUxMOwogCXJldHVybiBmczsKIH0KIApAQCAtOTksNyArMTExLDcgQEAgaW50IGRldmlj
ZV9jbG9zZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiBpbnQKIHN5c19tb3VudChjb25zdCBjaGFyICpk
ZXYsIGNvbnN0IGNoYXIgKmRpciwgY29uc3QgY2hhciAqZnNuYW1lLCBpbnQgZmxhZ3MsIGNvbnN0
IHZvaWQgKmRhdGEpCiB7Ci0JY29uc3Qgc3RydWN0IHZmc3N3ICpmczsKKwljb25zdCBzdHJ1Y3Qg
dmZzY29yZV9mc190eXBlICpmczsKIAlzdHJ1Y3QgbW91bnQgKm1wOwogCXN0cnVjdCBkZXZpY2Ug
KmRldmljZTsKIAlzdHJ1Y3QgZGVudHJ5ICpkcF9jb3ZlcmVkID0gTlVMTDsKLS0gCjIuMTkuMgoK
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1k
ZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBz
Oi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Feb 04 14:39:51 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 04 Feb 2019 14:39:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gqfPb-0006ZU-Kj; Mon, 04 Feb 2019 14:39:51 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Kl24=QL=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gqfPb-0006ZK-7e
 for minios-devel@lists.xen.org; Mon, 04 Feb 2019 14:39:51 +0000
X-Inumbo-ID: b83b7346-288a-11e9-a415-8302b2f176e3
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id b83b7346-288a-11e9-a415-8302b2f176e3;
 Mon, 04 Feb 2019 14:39:47 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 1404BF2071;
 Mon,  4 Feb 2019 15:39:47 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 9ixaaw74A9nv; Mon,  4 Feb 2019 15:39:46 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id E94DCF2065
 for <minios-devel@lists.xen.org>; Mon,  4 Feb 2019 15:39:44 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 4 Feb 2019 15:39:44 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>, <Simon.kuenzer@neclab.eu>,
 <sharan.santhanam@neclab.eu>
Date: Mon, 4 Feb 2019 15:37:29 +0100
Message-ID: <20190204143739.29249-38-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 13/23] lib/vfscore: introduce
 fget, fdrop, fdalloc
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkIGluIHRoZSBpbXBvcnRlZCBjb2RlLCB3aGljaCBpcyBu
b3QgZW5hYmxlZAp5ZXQuIFRoaXMgcmVxdWlyZWQgdG8gZXhwYW5kIGZ1bmN0aW9uYWxpdHkgb2Yg
dmZzY29yZV9pbnN0YWxsX2ZkIGFuZApmcmllbmRzIHdpdGggbG9ja2luZyBhbmQgcmVmZXJlbmNl
IGNvdW50aW5nLgoKU2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBu
ZWNsYWIuZXU+Ci0tLQogbGliL3Zmc2NvcmUvZmQuYyAgICAgICAgICAgICAgICAgICB8IDY3ICsr
KysrKysrKysrKysrKysrKysrKysrKysrKystLQogbGliL3Zmc2NvcmUvZmlsZS5jICAgICAgICAg
ICAgICAgICB8IDIyICsrKysrKysrKy0KIGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9maWxl
LmggfCAgOSArKystCiAzIGZpbGVzIGNoYW5nZWQsIDkyIGluc2VydGlvbnMoKyksIDYgZGVsZXRp
b25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvZmQuYyBiL2xpYi92ZnNjb3JlL2ZkLmMK
aW5kZXggNmMyMjA0MjguLjlkMmFmZTVhIDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9mZC5jCisr
KyBiL2xpYi92ZnNjb3JlL2ZkLmMKQEAgLTc0LDIwICs3NCw0MSBAQCBleGl0OgogCiB2b2lkIHZm
c2NvcmVfcHV0X2ZkKGludCBmZCkKIHsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCiAJVUtfQVNT
RVJUKGZkIDwgKGludCkgRkRUQUJMRV9NQVhfRklMRVMpOwogCS8qIEN1cnJlbnRseSBpdCBpcyBu
b3QgYWxsb3dlZCB0byBmcmVlIHN0ZChpbnxvdXR8ZXJyKSAqLwogCVVLX0FTU0VSVChmZCA+IDIp
OwogCi0JX191a19jbGVhcl9iaXQoZmQsICZmZHRhYmxlLmJpdG1hcCk7CisJZmxhZ3MgPSB1a3Bs
YXRfbGNwdV9zYXZlX2lycWYoKTsKKwlfX3VrX2NsZWFyX2JpdChmZCwgJmZkdGFibGUuYml0bWFw
KTtcCisJZmR0YWJsZS5maWxlc1tmZF0gPSBOVUxMOworCXVrcGxhdF9sY3B1X3Jlc3RvcmVfaXJx
ZihmbGFncyk7CiB9CiAKLXZvaWQgdmZzY29yZV9pbnN0YWxsX2ZkKGludCBmZCwgc3RydWN0IHZm
c2NvcmVfZmlsZSAqZmlsZSkKK2ludCB2ZnNjb3JlX2luc3RhbGxfZmQoaW50IGZkLCBzdHJ1Y3Qg
dmZzY29yZV9maWxlICpmaWxlKQogewotCVVLX0FTU0VSVChmZCA8IChpbnQpIEZEVEFCTEVfTUFY
X0ZJTEVTKTsKLQlVS19BU1NFUlQoZmlsZSk7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwlzdHJ1
Y3QgdmZzY29yZV9maWxlICpvcmlnOworCisJaWYgKChmZCA+PSAoaW50KSBGRFRBQkxFX01BWF9G
SUxFUykgfHwgKCFmaWxlKSkKKwkJcmV0dXJuIC1FQkFERjsKKworCWZob2xkKGZpbGUpOwogCiAJ
ZmlsZS0+ZmQgPSBmZDsKKworCWZsYWdzID0gdWtwbGF0X2xjcHVfc2F2ZV9pcnFmKCk7CisJb3Jp
ZyA9IGZkdGFibGUuZmlsZXNbZmRdOwogCWZkdGFibGUuZmlsZXNbZmRdID0gZmlsZTsKKwl1a3Bs
YXRfbGNwdV9yZXN0b3JlX2lycWYoZmxhZ3MpOworCisJZmRyb3AoZmlsZSk7CisKKwlpZiAob3Jp
ZykKKwkJZmRyb3Aob3JpZyk7CisKKwlyZXR1cm4gMDsKIH0KIAogc3RydWN0IHZmc2NvcmVfZmls
ZSAqdmZzY29yZV9nZXRfZmlsZShpbnQgZmQpCkBAIC0xMDEsMTIgKzEyMiw1MCBAQCBzdHJ1Y3Qg
dmZzY29yZV9maWxlICp2ZnNjb3JlX2dldF9maWxlKGludCBmZCkKIAlpZiAoIShmZHRhYmxlLmJp
dG1hcCAmICgodWludDY0X3QpIDEgPDwgZmQpKSkKIAkJZ290byBleGl0OwogCXJldCA9IGZkdGFi
bGUuZmlsZXNbZmRdOworCWZob2xkKHJldCk7CiAKIGV4aXQ6CiAJdWtwbGF0X2xjcHVfcmVzdG9y
ZV9pcnFmKGZsYWdzKTsKIAlyZXR1cm4gcmV0OwogfQogCitpbnQgZmdldChpbnQgZmQsIHN0cnVj
dCB2ZnNjb3JlX2ZpbGUgKipvdXRfZnApCit7CisJaW50IHJldCA9IDA7CisJc3RydWN0IHZmc2Nv
cmVfZmlsZSAqZnAgPSB2ZnNjb3JlX2dldF9maWxlKGZkKTsKKworCWlmICghZnApCisJCXJldCA9
IEVCQURGOworCWVsc2UKKwkJKm91dF9mcCA9IGZwOworCisJcmV0dXJuIHJldDsKK30KKworaW50
IGZkYWxsb2Moc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAsIGludCAqbmV3ZmQpCit7CisJaW50IGZk
LCByZXQgPSAwOworCisJZmhvbGQoZnApOworCisJZmQgPSB2ZnNjb3JlX2FsbG9jX2ZkKCk7CisJ
aWYgKGZkIDwgMCkgeworCQlyZXQgPSBmZDsKKwkJZ290byBleGl0OworCX0KKworCXJldCA9IHZm
c2NvcmVfaW5zdGFsbF9mZChmZCwgZnApOworCWlmIChyZXQpCisJCWZkcm9wKGZwKTsKKwllbHNl
CisJCSpuZXdmZCA9IGZkOworCitleGl0OgorCXJldHVybiByZXQ7Cit9CisKKworLyogVE9ETzog
bW92ZSB0aGlzIGNvbnN0cnVjdG9yIHRvIG1haW4uYyAqLwogX19jb25zdHJ1Y3RvciBzdGF0aWMg
dm9pZCBmZHRhYmxlX2luaXQodm9pZCkKIHsKIAltZW1zZXQoJmZkdGFibGUsIDAsIHNpemVvZihm
ZHRhYmxlKSk7CmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9maWxlLmMgYi9saWIvdmZzY29yZS9m
aWxlLmMKaW5kZXggZTdhZGYxYTMuLjBmNmRmYTkzIDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9m
aWxlLmMKKysrIGIvbGliL3Zmc2NvcmUvZmlsZS5jCkBAIC0zOCw3ICszOCw3IEBACiAjaW5jbHVk
ZSA8dWsvcHJpbnQuaD4KICNpbmNsdWRlIDx2ZnNjb3JlL2ZpbGUuaD4KICNpbmNsdWRlIDx1ay9h
c3NlcnQuaD4KLQorI2luY2x1ZGUgPHVrL2FyY2gvYXRvbWljLmg+CiAKIGludCBjbG9zZShpbnQg
ZmQpCiB7CkBAIC05NSwzICs5NSwyMyBAQCBzc2l6ZV90IHJlYWQoaW50IGZkLCB2b2lkICpidWYs
IHNpemVfdCBjb3VudCkKIAogCXJldHVybiBmaWxlLT5mb3BzLT5yZWFkKGZpbGUsIGJ1ZiwgY291
bnQpOwogfQorCisvKiBUT0RPOiByZW1vdmUgc3R1YiAqLworI2RlZmluZSB2ZnNfY2xvc2UoZnAp
ICgwKQorCitpbnQgZmRyb3Aoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnApCit7CisJaW50IHJldCA9
IDA7CisJaW50IHByZXYgPSB1a2FyY2hfZGVjKCZmcC0+Zl9jb3VudCk7CisKKwlpZiAocHJldiA9
PSAwKQorCQlVS19DUkFTSCgiVW5iYWxhbmNlZCBmaG9sZC9mZHJvcCIpOworCisJaWYgKHByZXYg
PT0gMSkKKwkJcmV0ID0gdmZzX2Nsb3NlKGZwKTsKKwlyZXR1cm4gcmV0OworfQordm9pZCBmaG9s
ZChzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCkKK3sKKwl1a2FyY2hfaW5jKCZmcC0+Zl9jb3VudCk7
Cit9CmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZmlsZS5oIGIvbGli
L3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2ZpbGUuaAppbmRleCA2OGJiZjkyYy4uMTZhZjViYTMg
MTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9maWxlLmgKKysrIGIvbGli
L3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2ZpbGUuaApAQCAtNTQsMTQgKzU0LDIxIEBAIHN0cnVj
dCB2ZnNjb3JlX2ZvcHMgewogCiBzdHJ1Y3QgdmZzY29yZV9maWxlIHsKIAlpbnQgZmQ7CisJaW50
CQlmX2NvdW50OwkvKiByZWZlcmVuY2UgY291bnQgKi8KIAljb25zdCBzdHJ1Y3QgdmZzY29yZV9m
b3BzICpmb3BzOwogfTsKIAogaW50IHZmc2NvcmVfYWxsb2NfZmQodm9pZCk7CiB2b2lkIHZmc2Nv
cmVfcHV0X2ZkKGludCBmZCk7Ci12b2lkIHZmc2NvcmVfaW5zdGFsbF9mZChpbnQgZmQsIHN0cnVj
dCB2ZnNjb3JlX2ZpbGUgKmZpbGUpOworaW50IHZmc2NvcmVfaW5zdGFsbF9mZChpbnQgZmQsIHN0
cnVjdCB2ZnNjb3JlX2ZpbGUgKmZpbGUpOwogc3RydWN0IHZmc2NvcmVfZmlsZSAqdmZzY29yZV9n
ZXRfZmlsZShpbnQgZmQpOwogCisvKgorICogRmlsZSBkZXNjcmlwdG9ycyByZWZlcmVuY2UgY291
bnQKKyAqLwordm9pZCBmaG9sZChzdHJ1Y3QgdmZzY29yZV9maWxlKiBmcCk7CitpbnQgZmRyb3Ao
c3RydWN0IHZmc2NvcmVfZmlsZSogZnApOworCiAjZGVmaW5lIEZPRl9PRkZTRVQgIDB4MDgwMCAg
ICAvKiBVc2UgdGhlIG9mZnNldCBpbiB1aW8gYXJndW1lbnQgKi8KIAogI2lmZGVmIF9fY3BsdXNw
bHVzCi0tIAoyLjE5LjIKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5w
cm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8v
bWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Feb 04 14:39:54 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 04 Feb 2019 14:39:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gqfPe-0006aG-Mq; Mon, 04 Feb 2019 14:39:54 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Kl24=QL=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gqfPe-0006a1-21
 for minios-devel@lists.xen.org; Mon, 04 Feb 2019 14:39:54 +0000
X-Inumbo-ID: b9c2595a-288a-11e9-a6d9-3ba1d46ea972
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id b9c2595a-288a-11e9-a6d9-3ba1d46ea972;
 Mon, 04 Feb 2019 14:39:50 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 9924A104D6B;
 Mon,  4 Feb 2019 15:39:49 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 0HhyQgUjS2AJ; Mon,  4 Feb 2019 15:39:49 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 7D807104D63
 for <minios-devel@lists.xen.org>; Mon,  4 Feb 2019 15:39:47 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 4 Feb 2019 15:39:47 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>, <Simon.kuenzer@neclab.eu>,
 <sharan.santhanam@neclab.eu>
Date: Mon, 4 Feb 2019 15:37:30 +0100
Message-ID: <20190204143739.29249-39-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 14/23] lib/vfscore: keep vnode
 locked during drele call
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogbGliL3Zmc2NvcmUvbG9va3VwLmMgICB8IDIgKy0KIGxpYi92ZnNjb3JlL3N5c2NhbGxzLmMg
fCAyICstCiAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkK
CmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9sb29rdXAuYyBiL2xpYi92ZnNjb3JlL2xvb2t1cC5j
CmluZGV4IDFlMmM0MDA1Li5jYmMwMmI1MiAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvbG9va3Vw
LmMKKysrIGIvbGliL3Zmc2NvcmUvbG9va3VwLmMKQEAgLTE4MSw4ICsxODEsOCBAQCBuYW1laShj
b25zdCBjaGFyICpwYXRoLCBzdHJ1Y3QgZGVudHJ5ICoqZHBwKQogCQkJCS8qIEZpbmQgYSB2bm9k
ZSBpbiB0aGlzIGRpcmVjdG9yeS4gKi8KIAkJCQllcnJvciA9IFZPUF9MT09LVVAoZHZwLCBuYW1l
LCAmdnApOwogCQkJCWlmIChlcnJvcikgewotCQkJCQl2bl91bmxvY2soZHZwKTsKIAkJCQkJZHJl
bGUoZGRwKTsKKwkJCQkJdm5fdW5sb2NrKGR2cCk7CiAJCQkJCXJldHVybiBlcnJvcjsKIAkJCQl9
CiAKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3N5c2NhbGxzLmMgYi9saWIvdmZzY29yZS9zeXNj
YWxscy5jCmluZGV4IGZhMDQ5OGU3Li4zMzAwNDk2MCAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUv
c3lzY2FsbHMuYworKysgYi9saWIvdmZzY29yZS9zeXNjYWxscy5jCkBAIC0xMzIsOCArMTMyLDgg
QEAgc3lzX29wZW4oY2hhciAqcGF0aCwgaW50IGZsYWdzLCBtb2RlX3QgbW9kZSwgc3RydWN0IHZm
c2NvcmVfZmlsZSAqKmZwcCkKIAkJCW1vZGUgJj0gflNfSUZNVDsKIAkJCW1vZGUgfD0gU19JRlJF
RzsKIAkJCWVycm9yID0gVk9QX0NSRUFURShkZHAtPmRfdm5vZGUsIGZpbGVuYW1lLCBtb2RlKTsK
LQkJCXZuX3VubG9jayhkZHAtPmRfdm5vZGUpOwogCQkJZHJlbGUoZGRwKTsKKwkJCXZuX3VubG9j
ayhkZHAtPmRfdm5vZGUpOwogCiAJCQlpZiAoZXJyb3IpCiAJCQkJcmV0dXJuIGVycm9yOwotLSAK
Mi4xOS4yCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
TWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5v
cmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1k
ZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Feb 04 14:39:55 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 04 Feb 2019 14:39:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gqfPf-0006b9-Ql; Mon, 04 Feb 2019 14:39:55 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Kl24=QL=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gqfPf-0006ac-7C
 for minios-devel@lists.xen.org; Mon, 04 Feb 2019 14:39:55 +0000
X-Inumbo-ID: a77b0387-288a-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id a77b0387-288a-11e9-bc90-bc764e045a96;
 Mon, 04 Feb 2019 14:39:53 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id DE2AC104D65;
 Mon,  4 Feb 2019 15:39:12 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 7xbHiVU_9G3X; Mon,  4 Feb 2019 15:39:12 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id BA584104D63
 for <minios-devel@lists.xen.org>; Mon,  4 Feb 2019 15:39:10 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 4 Feb 2019 15:39:10 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>, <Simon.kuenzer@neclab.eu>,
 <sharan.santhanam@neclab.eu>
Date: Mon, 4 Feb 2019 15:37:16 +0100
Message-ID: <20190204143739.29249-25-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 00/23]  import vfs from OSv
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhpcyBzZXJpZXMgaXMgYW4gaW5pdGlhbCBpbXBvcnQuIEkgdHJ5aWVkIHRvIGtlZXAgYW1tb3Vu
dCBvZgptb2RpZmljYXRpb25zIHNtYWxsLiBBbmQgZmFpbGVkLgoKU2VyaWVzIGhhcyBhIGxvdCBv
ZiBzdHlsZSBwcm9ibGVtcy4gQnV0IGZpeGluZyBzdHlsZSB3b3VsZCBibG93IGl0CmV2ZW4gbW9y
ZS4gSSB3aWxsIHByb3ZpZGUgZm9sbG93LXVwcyBjbGVhbmluZyB1cCB0aGlzIG1lc3MuCgpBbmQg
c29ycnkgZm9yIHRoZSBwYXRjaCBzaXplcy4gQXQgbGVhc3QgdGhlc2UgaHVnZSBwYXRjaGVzIGNv
bnRhaW4gb25seQptZWNoYW5pY2FsIG1vZGlmaWNhdGlvbnMgKGUuZy4gbmV3IC0+IG1hbGxvYywg
ZGVsZXRlIC0+IGZyZWUsCnJlcGxhY2luZyBPU3YgZnVuY3Rpb25zIHdpdGggVW5pa3JhZnQgYW5h
bG9ndWVzKS4gSSBob3BlIHRoaXMgaGVscHMuCgpDaGFuZ2VzIHNpbmNlIHYxOgogLSByZWJhc2Ug
dG8gdGhlIGN1cnJlbnQgInN0YWdpbmciIGJyYW5jaAogLSB1cGRhdGUgbGljZW5zZSBoZWFkZXJz
CgpZdXJpIFZvbGNoa292ICgyMyk6CiAgaW5jbHVkZS91azogaW50cm9kdWNlIF9fd2Vha19hbGlh
cyBtYWNybwogIGxpYi9ub2xpYmM6IGltcG9ydCBtb3VudC5oCiAgbGliL25vbGliYzogYWRhcHQg
bW91bnQuaCB0byBVbmlrcmFmdAogIGxpYi92ZnNjb3JlOiBJbml0aWFsIGltcG9ydCBvZiBPU3Yg
dmZzCiAgbGliL3Zmc2NvcmU6IHRhYmlmeSBpbXBvcnRlZCB2ZnMgY29kZQogIGxpYi92ZnNjb3Jl
OiB1cGRhdGUgbGljZW5zZSBoZWFkZXIgZm9yIGltcG9ydGVkIGZpbGVzCiAgbGliL3Zmc2NvcmU6
IHJlbW92ZSBvYnZpb3VzIGMrK2lzbXMgYW5kIGlycmVsZXZhbnQgY29kZQogIGxpYi92ZnNjb3Jl
OiB1c2UgVW5pa3JhZnQgaW5jbHVkZXMKICBsaWIvdmZzY29yZTogdXNlIFVuaWtyYWZ0IHR5cGVz
IGFuZCBmdW5jdGlvbnMKICBsaWIvdmZzY29yZTogYWRkIHV0aWxpdHkgZnVuY3MmZGVmcyB0byBz
dXBwb3J0IGltcG9ydGVkCiAgbGliL3Zmc2NvcmU6IGludHJvZHVjZSBVS19GU19SRUdJU1RFUgog
IGxpYi92ZnNjb3JlOiBwcmVmaXggZXhwb3J0ZWQgZnVuY3Rpb25zCiAgbGliL3Zmc2NvcmU6IGlu
dHJvZHVjZSBmZ2V0LCBmZHJvcCwgZmRhbGxvYwogIGxpYi92ZnNjb3JlOiBrZWVwIHZub2RlIGxv
Y2tlZCBkdXJpbmcgZHJlbGUgY2FsbAogIGxpYi92ZnNjb3JlOiBhZGQgbmVjZXNzYXJ5IGZpZWxk
IGluIHZmc2NvcmVfZmlsZQogIGxpYi92ZnNjb3JlOiByZW1vdmUgX0tFUk5FTCBpZmRlZnMKICBs
aWIvdmZzY29yZTogaW50cm9kdWNlIGZkY2xvc2UKICBsaWIvdmZzY29yZTogYWRkIG5lY2Vzc2Fy
eSBpbnRlcm5hbCBwcm90b3R5cGVzCiAgbGliL3Zmc2NvcmU6IGZpeCBjb21waWxlciBjb21wbGFp
bnMKICBsaWIvdmZzY29yZTogYWRkIG1haW4gY29uc3RydWN0b3IKICBsaWIvbm9saWJjOiBhZGQg
cHJvdG90eXBlcyBmb3IgZnVuY3Rpb25zIGZyb20gdmZzY29yZQogIGxpYi92ZnNjb3JlOiByZS1p
bXBsZW1lbnQgc3RkaW8gYW5kIGVuYWJsZSBuZXcgY29kZQogIGxpYi92ZnNjb3JlOiByZW1vdmUg
c3lzIHByZWZpeCBmcm9tIHZmcyBhcGkgZnVuY3Rpb25zCgogaW5jbHVkZS91ay9lc3NlbnRpYWxz
LmggICAgICAgICAgICAgICAgICAgICAgIHwgICAgNCArCiBsaWIvbm9saWJjL2luY2x1ZGUvc3lz
L21vdW50LmggICAgICAgICAgICAgICAgfCAgMTA5ICsKIGxpYi9ub2xpYmMvaW5jbHVkZS9zeXMv
dWlvLmggICAgICAgICAgICAgICAgICB8ICAgMzUgKwogbGliL25vbGliYy9pbmNsdWRlL3VuaXN0
ZC5oICAgICAgICAgICAgICAgICAgIHwgICAgNSArCiBsaWIvdmZzY29yZS9Db25maWcudWsgICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKIGxpYi92ZnNjb3JlL01ha2VmaWxlLnVrICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgMTEgKwogbGliL3Zmc2NvcmUvZGVudHJ5LmMgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgIDIzNiArKwogbGliL3Zmc2NvcmUvZXhwb3J0c3ltcy51ayAg
ICAgICAgICAgICAgICAgICAgIHwgICAyNiArCiBsaWIvdmZzY29yZS9leHRyYS5sZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgICA5ICsKIGxpYi92ZnNjb3JlL2ZkLmMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgNjcgKy0KIGxpYi92ZnNjb3JlL2ZpbGUuYyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgNjEgKy0KIGxpYi92ZnNjb3JlL2ZvcHMuYyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAxNDAgKysKIC4uLi9pbmNsdWRlL3Zmc2NvcmUvZGVudHJ5Lmh9
ICAgICAgICAgICAgICAgICB8ICAgNDQgKy0KIGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9m
aWxlLmggICAgICAgICAgICB8ICAgMTcgKy0KIGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9m
cy5oICAgICAgICAgICAgICB8ICAgMjggKwogbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21v
dW50LmggICAgICAgICAgIHwgIDE0NSArKwogLi4uL2luY2x1ZGUvdmZzY29yZS9wcmV4Lmh9ICAg
ICAgICAgICAgICAgICAgIHwgICA0MCArLQogbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Vp
by5oICAgICAgICAgICAgIHwgICA2MiArCiBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5v
ZGUuaCAgICAgICAgICAgfCAgMjYzICsrKwogbGliL3Zmc2NvcmUvbG9va3VwLmMgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgIDM3NSArKysKIGxpYi92ZnNjb3JlL21haW4uYyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8IDIwNTggKysrKysrKysrKysrKysrKysKIGxpYi92ZnNjb3JlL21v
dW50LmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0OTQgKysrKwogbGliL3Zmc2NvcmUv
c3RkaW8uYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA3MyArLQogbGliL3Zmc2NvcmUv
c3Vicl91aW8uYyAgICAgICAgICAgICAgICAgICAgICAgIHwgICA3OCArCiBsaWIvdmZzY29yZS9z
eXNjYWxscy5jICAgICAgICAgICAgICAgICAgICAgICAgfCAxNTEyICsrKysrKysrKysrKwogbGli
L3Zmc2NvcmUvdGFzay5jICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE1NCArKwogbGli
L3Zmc2NvcmUvdmZzLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE2OSArKwogbGli
L3Zmc2NvcmUvdm5vZGUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDUzMCArKysrKwog
MjggZmlsZXMgY2hhbmdlZCwgNjYxOCBpbnNlcnRpb25zKCspLCAxMjggZGVsZXRpb25zKC0pCiBj
cmVhdGUgbW9kZSAxMDA2NDQgbGliL25vbGliYy9pbmNsdWRlL3N5cy9tb3VudC5oCiBjcmVhdGUg
bW9kZSAxMDA2NDQgbGliL3Zmc2NvcmUvZGVudHJ5LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIv
dmZzY29yZS9leHRyYS5sZAogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi92ZnNjb3JlL2ZvcHMuYwog
Y29weSBsaWIve25vbGliYy9pbmNsdWRlL3VuaXN0ZC5oID0+IHZmc2NvcmUvaW5jbHVkZS92ZnNj
b3JlL2RlbnRyeS5ofSAoNzAlKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi92ZnNjb3JlL2luY2x1
ZGUvdmZzY29yZS9mcy5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3Zmc2NvcmUvaW5jbHVkZS92
ZnNjb3JlL21vdW50LmgKIGNvcHkgbGliL3tub2xpYmMvaW5jbHVkZS91bmlzdGQuaCA9PiB2ZnNj
b3JlL2luY2x1ZGUvdmZzY29yZS9wcmV4Lmh9ICg3NSUpCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGli
L3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Vpby5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3Zm
c2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Zub2RlLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdmZz
Y29yZS9sb29rdXAuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi92ZnNjb3JlL21haW4uYwogY3Jl
YXRlIG1vZGUgMTAwNjQ0IGxpYi92ZnNjb3JlL21vdW50LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBs
aWIvdmZzY29yZS9zdWJyX3Vpby5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3Zmc2NvcmUvc3lz
Y2FsbHMuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi92ZnNjb3JlL3Rhc2suYwogY3JlYXRlIG1v
ZGUgMTAwNjQ0IGxpYi92ZnNjb3JlL3Zmcy5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3Zmc2Nv
cmUvdm5vZGUuYwoKLS0gCjIuMTkuMgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxp
c3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9s
aXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Feb 04 14:39:55 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 04 Feb 2019 14:39:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gqfPf-0006b3-Op; Mon, 04 Feb 2019 14:39:55 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Kl24=QL=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gqfPf-0006ab-5s
 for minios-devel@lists.xen.org; Mon, 04 Feb 2019 14:39:55 +0000
X-Inumbo-ID: a78b517d-288a-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id a78b517d-288a-11e9-bc90-bc764e045a96;
 Mon, 04 Feb 2019 14:39:54 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 0EEE3104D66;
 Mon,  4 Feb 2019 15:39:18 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 2jBwsXjfpcrv; Mon,  4 Feb 2019 15:39:17 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id E4330104D63
 for <minios-devel@lists.xen.org>; Mon,  4 Feb 2019 15:39:15 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 4 Feb 2019 15:39:15 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>, <Simon.kuenzer@neclab.eu>,
 <sharan.santhanam@neclab.eu>
Date: Mon, 4 Feb 2019 15:37:18 +0100
Message-ID: <20190204143739.29249-27-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 02/23] lib/nolibc: import mount.h
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

dGFnOiB2MS4xLjIwCmNvbW1pdDogMGZhMWU2MzhlODdjZjI1N2U5Zjk2YjQwMTliMjA3NmFmZDY3
NGExOQoKU2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIu
ZXU+Ci0tLQogbGliL25vbGliYy9pbmNsdWRlL3N5cy9tb3VudC5oIHwgNzQgKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDc0IGluc2VydGlvbnMoKykK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvbm9saWJjL2luY2x1ZGUvc3lzL21vdW50LmgKCmRpZmYg
LS1naXQgYS9saWIvbm9saWJjL2luY2x1ZGUvc3lzL21vdW50LmggYi9saWIvbm9saWJjL2luY2x1
ZGUvc3lzL21vdW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjU3YTg5
YzA5Ci0tLSAvZGV2L251bGwKKysrIGIvbGliL25vbGliYy9pbmNsdWRlL3N5cy9tb3VudC5oCkBA
IC0wLDAgKzEsNzQgQEAKKyNpZm5kZWYgX1NZU19NT1VOVF9ICisjZGVmaW5lIF9TWVNfTU9VTlRf
SAorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKyNpbmNsdWRl
IDxzeXMvaW9jdGwuaD4KKworI2RlZmluZSBCTEtST1NFVCAgIF9JTygweDEyLCA5MykKKyNkZWZp
bmUgQkxLUk9HRVQgICBfSU8oMHgxMiwgOTQpCisjZGVmaW5lIEJMS1JSUEFSVCAgX0lPKDB4MTIs
IDk1KQorI2RlZmluZSBCTEtHRVRTSVpFIF9JTygweDEyLCA5NikKKyNkZWZpbmUgQkxLRkxTQlVG
ICBfSU8oMHgxMiwgOTcpCisjZGVmaW5lIEJMS1JBU0VUICAgX0lPKDB4MTIsIDk4KQorI2RlZmlu
ZSBCTEtSQUdFVCAgIF9JTygweDEyLCA5OSkKKyNkZWZpbmUgQkxLRlJBU0VUICBfSU8oMHgxMiwx
MDApCisjZGVmaW5lIEJMS0ZSQUdFVCAgX0lPKDB4MTIsMTAxKQorI2RlZmluZSBCTEtTRUNUU0VU
IF9JTygweDEyLDEwMikKKyNkZWZpbmUgQkxLU0VDVEdFVCBfSU8oMHgxMiwxMDMpCisjZGVmaW5l
IEJMS1NTWkdFVCAgX0lPKDB4MTIsMTA0KQorI2RlZmluZSBCTEtCU1pHRVQgIF9JT1IoMHgxMiwx
MTIsc2l6ZV90KQorI2RlZmluZSBCTEtCU1pTRVQgIF9JT1coMHgxMiwxMTMsc2l6ZV90KQorI2Rl
ZmluZSBCTEtHRVRTSVpFNjQgX0lPUigweDEyLDExNCxzaXplX3QpCisKKyNkZWZpbmUgTVNfUkRP
TkxZICAgICAgMQorI2RlZmluZSBNU19OT1NVSUQgICAgICAyCisjZGVmaW5lIE1TX05PREVWICAg
ICAgIDQKKyNkZWZpbmUgTVNfTk9FWEVDICAgICAgOAorI2RlZmluZSBNU19TWU5DSFJPTk9VUyAx
NgorI2RlZmluZSBNU19SRU1PVU5UICAgICAzMgorI2RlZmluZSBNU19NQU5ETE9DSyAgICA2NAor
I2RlZmluZSBNU19ESVJTWU5DICAgICAxMjgKKyNkZWZpbmUgTVNfTk9BVElNRSAgICAgMTAyNAor
I2RlZmluZSBNU19OT0RJUkFUSU1FICAyMDQ4CisjZGVmaW5lIE1TX0JJTkQgICAgICAgIDQwOTYK
KyNkZWZpbmUgTVNfTU9WRSAgICAgICAgODE5MgorI2RlZmluZSBNU19SRUMgICAgICAgICAxNjM4
NAorI2RlZmluZSBNU19TSUxFTlQgICAgICAzMjc2OAorI2RlZmluZSBNU19QT1NJWEFDTCAgICAo
MTw8MTYpCisjZGVmaW5lIE1TX1VOQklOREFCTEUgICgxPDwxNykKKyNkZWZpbmUgTVNfUFJJVkFU
RSAgICAgKDE8PDE4KQorI2RlZmluZSBNU19TTEFWRSAgICAgICAoMTw8MTkpCisjZGVmaW5lIE1T
X1NIQVJFRCAgICAgICgxPDwyMCkKKyNkZWZpbmUgTVNfUkVMQVRJTUUgICAgKDE8PDIxKQorI2Rl
ZmluZSBNU19LRVJOTU9VTlQgICAoMTw8MjIpCisjZGVmaW5lIE1TX0lfVkVSU0lPTiAgICgxPDwy
MykKKyNkZWZpbmUgTVNfU1RSSUNUQVRJTUUgKDE8PDI0KQorI2RlZmluZSBNU19MQVpZVElNRSAg
ICAoMTw8MjUpCisjZGVmaW5lIE1TX05PUkVNT1RFTE9DSyAoMTw8MjcpCisjZGVmaW5lIE1TX05P
U0VDICAgICAgICgxPDwyOCkKKyNkZWZpbmUgTVNfQk9STiAgICAgICAgKDE8PDI5KQorI2RlZmlu
ZSBNU19BQ1RJVkUgICAgICAoMTw8MzApCisjZGVmaW5lIE1TX05PVVNFUiAgICAgICgxVTw8MzEp
CisKKyNkZWZpbmUgTVNfUk1UX01BU0sgKE1TX1JET05MWXxNU19TWU5DSFJPTk9VU3xNU19NQU5E
TE9DS3xNU19JX1ZFUlNJT058TVNfTEFaWVRJTUUpCisKKyNkZWZpbmUgTVNfTUdDX1ZBTCAweGMw
ZWQwMDAwCisjZGVmaW5lIE1TX01HQ19NU0sgMHhmZmZmMDAwMAorCisjZGVmaW5lIE1OVF9GT1JD
RSAgICAgICAxCisjZGVmaW5lIE1OVF9ERVRBQ0ggICAgICAyCisjZGVmaW5lIE1OVF9FWFBJUkUg
ICAgICA0CisjZGVmaW5lIFVNT1VOVF9OT0ZPTExPVyA4CisKK2ludCBtb3VudChjb25zdCBjaGFy
ICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCB1bnNpZ25lZCBsb25nLCBjb25zdCB2b2lk
ICopOworaW50IHVtb3VudChjb25zdCBjaGFyICopOworaW50IHVtb3VudDIoY29uc3QgY2hhciAq
LCBpbnQpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYKLS0gCjIu
MTkuMgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1p
bmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3Jn
Cmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2
ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Feb 04 14:39:56 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 04 Feb 2019 14:39:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gqfPf-0006bG-T3; Mon, 04 Feb 2019 14:39:55 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Kl24=QL=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gqfPf-0006ae-8a
 for minios-devel@lists.xen.org; Mon, 04 Feb 2019 14:39:55 +0000
X-Inumbo-ID: bb540c96-288a-11e9-894f-67940fc2e210
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id bb540c96-288a-11e9-894f-67940fc2e210;
 Mon, 04 Feb 2019 14:39:53 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 43819F2071;
 Mon,  4 Feb 2019 15:39:52 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 1l68fZrEwG8J; Mon,  4 Feb 2019 15:39:52 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 1C90CF2065
 for <minios-devel@lists.xen.org>; Mon,  4 Feb 2019 15:39:50 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 4 Feb 2019 15:39:49 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>, <Simon.kuenzer@neclab.eu>,
 <sharan.santhanam@neclab.eu>
Date: Mon, 4 Feb 2019 15:37:31 +0100
Message-ID: <20190204143739.29249-40-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 15/23] lib/vfscore: add necessary
 field in vfscore_file
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2ZpbGUuaCB8IDQgKysrKwogMSBmaWxlIGNo
YW5nZWQsIDQgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUv
dmZzY29yZS9maWxlLmggYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZmlsZS5oCmluZGV4
IDE2YWY1YmEzLi44N2Q1OTc1YyAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNj
b3JlL2ZpbGUuaAorKysgYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZmlsZS5oCkBAIC01
NCw3ICs1NCwxMSBAQCBzdHJ1Y3QgdmZzY29yZV9mb3BzIHsKIAogc3RydWN0IHZmc2NvcmVfZmls
ZSB7CiAJaW50IGZkOworCWludAkJZl9mbGFnczsJLyogb3BlbiBmbGFncyAqLwogCWludAkJZl9j
b3VudDsJLyogcmVmZXJlbmNlIGNvdW50ICovCisJb2ZmX3QJCWZfb2Zmc2V0OwkvKiBjdXJyZW50
IHBvc2l0aW9uIGluIGZpbGUgKi8KKwl2b2lkCQkqZl9kYXRhOyAgICAgICAgLyogZmlsZSBkZXNj
cmlwdG9yIHNwZWNpZmljIGRhdGEgKi8KKwlzdHJ1Y3QgZGVudHJ5ICAgKmZfZGVudHJ5OwogCWNv
bnN0IHN0cnVjdCB2ZnNjb3JlX2ZvcHMgKmZvcHM7CiB9OwogCi0tIAoyLjE5LjIKCgpfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFp
bGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3Rz
LnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Feb 04 14:39:57 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 04 Feb 2019 14:39:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gqfPg-0006cI-Vc; Mon, 04 Feb 2019 14:39:56 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Kl24=QL=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gqfPg-0006c5-Dt
 for minios-devel@lists.xen.org; Mon, 04 Feb 2019 14:39:56 +0000
X-Inumbo-ID: b070e637-288a-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id b070e637-288a-11e9-bc90-bc764e045a96;
 Mon, 04 Feb 2019 14:39:54 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id F3D53104D68;
 Mon,  4 Feb 2019 15:39:33 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id R4wUBG_6rAnp; Mon,  4 Feb 2019 15:39:33 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id D3391104D63
 for <minios-devel@lists.xen.org>; Mon,  4 Feb 2019 15:39:31 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 4 Feb 2019 15:39:31 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>, <Simon.kuenzer@neclab.eu>,
 <sharan.santhanam@neclab.eu>
Date: Mon, 4 Feb 2019 15:37:24 +0100
Message-ID: <20190204143739.29249-33-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 08/23] lib/vfscore: use Unikraft
 includes
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogbGliL3Zmc2NvcmUvZGVudHJ5LmMgICAgICAgICAgICAgICAgIHwgIDcgKystLQogbGliL3Zm
c2NvcmUvZm9wcy5jICAgICAgICAgICAgICAgICAgIHwgMTEgKysrLS0tLQogbGliL3Zmc2NvcmUv
aW5jbHVkZS92ZnNjb3JlL2RlbnRyeS5oIHwgIDQgKy0tCiBsaWIvdmZzY29yZS9pbmNsdWRlL3Zm
c2NvcmUvZmlsZS5oICAgfCAgMSArCiBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvbW91bnQu
aCAgfCAgNiArKy0tCiBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvcHJleC5oICAgfCAgMSAt
CiBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdWlvLmggICAgfCAgMSAtCiBsaWIvdmZzY29y
ZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUuaCAgfCAxMyArKysrLS0tLQogbGliL3Zmc2NvcmUvbG9v
a3VwLmMgICAgICAgICAgICAgICAgIHwgIDQgKy0tCiBsaWIvdmZzY29yZS9tYWluLmMgICAgICAg
ICAgICAgICAgICAgfCA0OCArKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBsaWIvdmZzY29y
ZS9tb3VudC5jICAgICAgICAgICAgICAgICAgfCAyMSArKysrKy0tLS0tLS0KIGxpYi92ZnNjb3Jl
L3N0ZGlvLmMgICAgICAgICAgICAgICAgICB8ICAzICsrCiBsaWIvdmZzY29yZS9zdWJyX3Vpby5j
ICAgICAgICAgICAgICAgfCAgNCArLS0KIGxpYi92ZnNjb3JlL3N5c2NhbGxzLmMgICAgICAgICAg
ICAgICB8IDEyICsrKystLS0KIGxpYi92ZnNjb3JlL3Rhc2suYyAgICAgICAgICAgICAgICAgICB8
ICAyICstCiBsaWIvdmZzY29yZS92ZnMuaCAgICAgICAgICAgICAgICAgICAgfCAyMyArKystLS0t
LS0tLS0tCiBsaWIvdmZzY29yZS92bm9kZS5jICAgICAgICAgICAgICAgICAgfCAgNiArKy0tCiAx
NyBmaWxlcyBjaGFuZ2VkLCA2MyBpbnNlcnRpb25zKCspLCAxMDQgZGVsZXRpb25zKC0pCgpkaWZm
IC0tZ2l0IGEvbGliL3Zmc2NvcmUvZGVudHJ5LmMgYi9saWIvdmZzY29yZS9kZW50cnkuYwppbmRl
eCBlZmMxMGJkNi4uY2NjZTA3ZDEgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2RlbnRyeS5jCisr
KyBiL2xpYi92ZnNjb3JlL2RlbnRyeS5jCkBAIC0zMiwxMCArMzIsMTEgQEAKIAogI2luY2x1ZGUg
PHN0cmluZy5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgog
Ci0jaW5jbHVkZSA8b3N2L2RlbnRyeS5oPgotI2luY2x1ZGUgPG9zdi92bm9kZS5oPgorI2luY2x1
ZGUgPHVrL2xpc3QuaD4KKyNpbmNsdWRlIDx2ZnNjb3JlL2RlbnRyeS5oPgorI2luY2x1ZGUgPHZm
c2NvcmUvdm5vZGUuaD4KKyNpbmNsdWRlIDx1ay9tdXRleC5oPgogI2luY2x1ZGUgInZmcy5oIgog
CiAjZGVmaW5lIERFTlRSWV9CVUNLRVRTIDMyCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9mb3Bz
LmMgYi9saWIvdmZzY29yZS9mb3BzLmMKaW5kZXggZjFjMTYxZTcuLmI0NTgzZDIwIDEwMDY0NAot
LS0gYS9saWIvdmZzY29yZS9mb3BzLmMKKysrIGIvbGliL3Zmc2NvcmUvZm9wcy5jCkBAIC0zMywx
NCArMzMsMTMgQEAKICAqIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElG
SUVEIElOIEFOWSBXQVkuCiAgKi8KIAorI2RlZmluZSBfR05VX1NPVVJDRQogI2luY2x1ZGUgPGZj
bnRsLmg+CiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSNpbmNsdWRlIDxvc3YvZmlsZS5oPgotI2lu
Y2x1ZGUgPG9zdi9wb2xsLmg+Ci0jaW5jbHVkZSA8ZnMvdmZzL3Zmcy5oPgotI2luY2x1ZGUgPG9z
di92ZnNfZmlsZS5oaD4KLSNpbmNsdWRlIDxvc3YvbW11LmhoPgotI2luY2x1ZGUgPG9zdi9wYWdl
Y2FjaGUuaGg+CisjaW5jbHVkZSA8dmZzY29yZS9maWxlLmg+CisjaW5jbHVkZSAidmZzLmgiCisK
KyNpbmNsdWRlIDx1ay9hc3NlcnQuaD4KIAogaW50IHZmc19jbG9zZShzdHJ1Y3QgdmZzY29yZV9m
aWxlICpmcCkKIHsKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9kZW50
cnkuaCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9kZW50cnkuaAppbmRleCA5Y2ZlOGRh
Yy4uYmExYzM0NTcgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9kZW50
cnkuaAorKysgYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZGVudHJ5LmgKQEAgLTM2LDgg
KzM2LDggQEAKICNpZm5kZWYgX09TVl9ERU5UUllfSAogI2RlZmluZSBfT1NWX0RFTlRSWV9IIDEK
IAotI2luY2x1ZGUgPG9zdi9tdXRleC5oPgotI2luY2x1ZGUgPGJzZC9zeXMvc3lzL3F1ZXVlLmg+
CisjaW5jbHVkZSA8dWsvbXV0ZXguaD4KKyNpbmNsdWRlIDx1ay9saXN0Lmg+CiAKIHN0cnVjdCB2
bm9kZTsKIApkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2ZpbGUuaCBi
L2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9maWxlLmgKaW5kZXggOTk4NTcwNmYuLjczODcy
NjVkIDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZmlsZS5oCisrKyBi
L2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9maWxlLmgKQEAgLTM4LDYgKzM4LDcgQEAKIAog
I2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHZm
c2NvcmUvZGVudHJ5Lmg+CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CmRpZmYg
LS1naXQgYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvbW91bnQuaCBiL2xpYi92ZnNjb3Jl
L2luY2x1ZGUvdmZzY29yZS9tb3VudC5oCmluZGV4IGI2OGQzYzk4Li5lMTJhMTAzOSAxMDA2NDQK
LS0tIGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmgKKysrIGIvbGliL3Zmc2Nv
cmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmgKQEAgLTMyLDEwICszMiwxMCBAQAogI2lmbmRlZiBf
U1lTX01PVU5UX0hfCiAjZGVmaW5lIF9TWVNfTU9VTlRfSF8KIAotI2luY2x1ZGUgPHN5cy9jZGVm
cy5oPgogI2luY2x1ZGUgPHN5cy9zdGF0ZnMuaD4KLSNpbmNsdWRlIDxvc3Yvdm5vZGUuaD4KLSNp
bmNsdWRlIDxic2Qvc3lzL3N5cy9xdWV1ZS5oPgorI2luY2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1
ZGUgPHVrL2xpc3QuaD4KKyNpbmNsdWRlIDx2ZnNjb3JlL3Zub2RlLmg+CiAKICNpZmRlZiBfS0VS
TkVMCiAKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9wcmV4LmggYi9s
aWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvcHJleC5oCmluZGV4IDZjYmUzMTMwLi44YTMwNmQ1
NCAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3ByZXguaAorKysgYi9s
aWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvcHJleC5oCkBAIC0zOCw3ICszOCw2IEBACiAKIAog
I2luY2x1ZGUgPHVuaXN0ZC5oPgotI2luY2x1ZGUgPG9zdi9mY250bC5oPgogCiAjZGVmaW5lCUJT
SVpFCTUxMgkJLyogc2l6ZSBvZiBzZWNvbmRhcnkgYmxvY2sgKGJ5dGVzKSAqLwogCmRpZmYgLS1n
aXQgYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdWlvLmggYi9saWIvdmZzY29yZS9pbmNs
dWRlL3Zmc2NvcmUvdWlvLmgKaW5kZXggZDdmN2ZjZTkuLjhhZDFlM2ZiIDEwMDY0NAotLS0gYS9s
aWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdWlvLmgKKysrIGIvbGliL3Zmc2NvcmUvaW5jbHVk
ZS92ZnNjb3JlL3Vpby5oCkBAIC0zMyw3ICszMyw2IEBACiAjaWZuZGVmIF9VSU9fSF8KICNkZWZp
bmUJX1VJT19IXwogCi0jaW5jbHVkZSA8c3lzL2NkZWZzLmg+CiAjaW5jbHVkZSA8c3lzL3R5cGVz
Lmg+CiAjaW5jbHVkZSA8c3lzL3Vpby5oPgogI2luY2x1ZGUgPGxpbWl0cy5oPgpkaWZmIC0tZ2l0
IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Zub2RlLmggYi9saWIvdmZzY29yZS9pbmNs
dWRlL3Zmc2NvcmUvdm5vZGUuaAppbmRleCBkMzBhOTQxMS4uNDlmZDRkMzYgMTAwNjQ0Ci0tLSBh
L2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5oCisrKyBiL2xpYi92ZnNjb3JlL2lu
Y2x1ZGUvdmZzY29yZS92bm9kZS5oCkBAIC0zNSwxMyArMzUsMTQgQEAKIAogI2lmZGVmIF9LRVJO
RUwKIAotI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0jaW5j
bHVkZSA8b3N2L3ByZXguaD4KLSNpbmNsdWRlIDxvc3YvdWlvLmg+Ci0jaW5jbHVkZSA8b3N2L211
dGV4Lmg+Ci0jaW5jbHVkZSAiZmlsZS5oIgotI2luY2x1ZGUgImRpcmVudC5oIgorI2luY2x1ZGUg
PGRpcmVudC5oPgorCisjaW5jbHVkZSA8dWsvbXV0ZXguaD4KKyNpbmNsdWRlIDx1ay9saXN0Lmg+
CisjaW5jbHVkZSA8dGltZS5oPgorI2luY2x1ZGUgPHZmc2NvcmUvdWlvLmg+CisjaW5jbHVkZSA8
dmZzY29yZS9kZW50cnkuaD4KIAogc3RydWN0IHZmc29wczsKIHN0cnVjdCB2bm9wczsKZGlmZiAt
LWdpdCBhL2xpYi92ZnNjb3JlL2xvb2t1cC5jIGIvbGliL3Zmc2NvcmUvbG9va3VwLmMKaW5kZXgg
ZjdhMzhjNGYuLjk4MzdlODFmIDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9sb29rdXAuYworKysg
Yi9saWIvdmZzY29yZS9sb29rdXAuYwpAQCAtMzYsOCArMzYsOCBAQAogI2luY2x1ZGUgPHN0ZGxp
Yi5oPgogI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgogCi0jaW5jbHVkZSA8b3N2L2RlbnRyeS5oPgot
I2luY2x1ZGUgPG9zdi92bm9kZS5oPgorI2luY2x1ZGUgPHZmc2NvcmUvZGVudHJ5Lmg+CisjaW5j
bHVkZSA8dmZzY29yZS92bm9kZS5oPgogI2luY2x1ZGUgInZmcy5oIgogCiBzdGF0aWMgc3NpemVf
dApkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvbWFpbi5jIGIvbGliL3Zmc2NvcmUvbWFpbi5jCmlu
ZGV4IDc0ODc2ZGMxLi45MGRmM2Q3MSAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvbWFpbi5jCisr
KyBiL2xpYi92ZnNjb3JlL21haW4uYwpAQCAtMzAsNTMgKzMwLDIzIEBACiAgKiBTVUNIIERBTUFH
RS4KICAqLwogCi0jaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjZGVmaW5lIF9HTlVfU09VUkNFCisK
ICNpbmNsdWRlIDxzeXMvc3RhdHZmcy5oPgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0jaW5jbHVk
ZSA8c3lzL3RpbWUuaD4KLSNpbmNsdWRlIDxzeXMvc2VuZGZpbGUuaD4KLQogI2luY2x1ZGUgPGxp
bWl0cy5oPgotI2luY2x1ZGUgPHVuaXN0ZC5oPgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVk
ZSA8c3RkaW50Lmg+Ci0jaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAj
aW5jbHVkZSA8ZXJybm8uaD4KLSNpbmNsdWRlIDxzaWduYWwuaD4KLSNkZWZpbmUgb3BlbiBfX29w
ZW5fdmFyaWFkaWMKLSNkZWZpbmUgZmNudGwgX19mY250bF92YXJpYWRpYwogI2luY2x1ZGUgPGZj
bnRsLmg+Ci0jdW5kZWYgb3BlbgotI3VuZGVmIGZjbnRsCi0KLSNpbmNsdWRlIDxvc3YvcHJleC5o
PgotI2luY2x1ZGUgPG9zdi92bm9kZS5oPgotI2luY2x1ZGUgPG9zdi9zdHViYmluZy5oaD4KLSNp
bmNsdWRlIDxvc3YvaW9jdGwuaD4KLSNpbmNsdWRlIDxvc3YvdHJhY2UuaGg+Ci0jaW5jbHVkZSA8
b3N2L3J1bi5oaD4KLSNpbmNsdWRlIDxkcml2ZXJzL2NvbnNvbGUuaGg+Ci0KKyNpbmNsdWRlIDx2
ZnNjb3JlL3ByZXguaD4KKyNpbmNsdWRlIDx2ZnNjb3JlL3Zub2RlLmg+CiAjaW5jbHVkZSAidmZz
LmgiCi0KLSNpbmNsdWRlICJsaWJjL2ludGVybmFsL2xpYmMuaCIKLQotI2luY2x1ZGUgPGFsZ29y
aXRobT4KLSNpbmNsdWRlIDx1bm9yZGVyZWRfbWFwPgotCiAjaW5jbHVkZSA8c3lzL2ZpbGUuaD4K
LQotI2luY2x1ZGUgImZzL2ZzLmhoIgotI2luY2x1ZGUgImxpYmMvbGliYy5oaCIKLQotI2luY2x1
ZGUgPG1udGVudC5oPgotI2luY2x1ZGUgPHN5cy9tbWFuLmg+Ci0KLSNpbmNsdWRlIDxvc3YvY2xv
Y2suaGg+Ci0jaW5jbHVkZSA8YXBpL3V0aW1lLmg+Ci0jaW5jbHVkZSA8Y2hyb25vPgotCisjaW5j
bHVkZSA8c3RkYXJnLmg+CisjaW5jbHVkZSA8dmZzY29yZS9maWxlLmg+CisjaW5jbHVkZSA8dmZz
Y29yZS9tb3VudC5oPgorI2luY2x1ZGUgPHZmc2NvcmUvZnMuaD4KKyNpbmNsdWRlIDx1ay9lcnJw
dHIuaD4KIAogI2lmZGVmIERFQlVHX1ZGUwogaW50CXZmc19kZWJ1ZyA9IFZGU0RCX0ZMQUdTOwpk
aWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvbW91bnQuYyBiL2xpYi92ZnNjb3JlL21vdW50LmMKaW5k
ZXggMTBjMjdmYWQuLjA2OTIyZmZiIDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9tb3VudC5jCisr
KyBiL2xpYi92ZnNjb3JlL21vdW50LmMKQEAgLTM0LDI3ICszNCwyMiBAQAogICogdmZzX21vdW50
LmMgLSBtb3VudCBvcGVyYXRpb25zCiAgKi8KIAotI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAjaW5j
bHVkZSA8c3lzL3BhcmFtLmg+Ci0jaW5jbHVkZSA8ZGlyZW50Lmg+Ci0KICNpbmNsdWRlIDxsaW1p
dHMuaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRl
IDxzdHJpbmcuaD4KICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPGVycm5vLmg+Ci0jaW5j
bHVkZSA8ZmNudGwuaD4KLQotI2luY2x1ZGUgPG9zdi9wcmV4Lmg+Ci0jaW5jbHVkZSA8b3N2L3Zu
b2RlLmg+Ci0jaW5jbHVkZSA8b3N2L2RldmljZS5oPgotI2luY2x1ZGUgPG9zdi9kZWJ1Zy5oPgot
I2luY2x1ZGUgPG9zdi9tdXRleC5oPgogI2luY2x1ZGUgInZmcy5oIgotCi0jaW5jbHVkZSA8bWVt
b3J5PgotI2luY2x1ZGUgPGxpc3Q+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8
c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDx0aW1lLmg+CisjaW5jbHVkZSA8dWsvbGlzdC5oPgorI2lu
Y2x1ZGUgPHVrL211dGV4Lmg+CisjaW5jbHVkZSA8dmZzY29yZS9wcmV4Lmg+CisjaW5jbHVkZSA8
dmZzY29yZS9kZW50cnkuaD4KKyNpbmNsdWRlIDx2ZnNjb3JlL3Zub2RlLmg+CiAKIC8qCiAgKiBM
aXN0IGZvciBWRlMgbW91bnQgcG9pbnRzLgpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvc3RkaW8u
YyBiL2xpYi92ZnNjb3JlL3N0ZGlvLmMKaW5kZXggYTliZGZkNjEuLjdkNzQ5NDQyIDEwMDY0NAot
LS0gYS9saWIvdmZzY29yZS9zdGRpby5jCisrKyBiL2xpYi92ZnNjb3JlL3N0ZGlvLmMKQEAgLTM0
LDkgKzM0LDEyIEBACiAgKi8KIAogI2luY2x1ZGUgPHZmc2NvcmUvZmlsZS5oPgorI2luY2x1ZGUg
PHZmc2NvcmUvZnMuaD4KICNpbmNsdWRlIDx1ay9wbGF0L2NvbnNvbGUuaD4KICNpbmNsdWRlIDx1
ay9lc3NlbnRpYWxzLmg+CiAjaW5jbHVkZSA8dGVybWlvcy5oPgorI2luY2x1ZGUgPHZmc2NvcmUv
dm5vZGUuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KIAogLyogT25lIGZ1bmN0aW9uIGZvciBzdGRl
cnIgYW5kIHN0ZG91dCAqLwogc3RhdGljIHNzaXplX3Qgc3Rkb3V0X3dyaXRlKHN0cnVjdCB2ZnNj
b3JlX2ZpbGUgKnZmc2NvcmVfZmlsZSBfX3VudXNlZCwKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3Jl
L3N1YnJfdWlvLmMgYi9saWIvdmZzY29yZS9zdWJyX3Vpby5jCmluZGV4IDgyNzZkNmQ0Li5iYmNh
MzM2MiAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvc3Vicl91aW8uYworKysgYi9saWIvdmZzY29y
ZS9zdWJyX3Vpby5jCkBAIC0zOSwxMSArMzksMTEgQEAKICAqCUAoIylrZXJuX3N1YnIuYwk4LjMg
KEJlcmtlbGV5KSAxLzIxLzk0CiAgKi8KIAotI2luY2x1ZGUgPGFzc2VydC5oPgorI2luY2x1ZGUg
PHVrL2Fzc2VydC5oPgogI2luY2x1ZGUgPGVycm5vLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAj
aW5jbHVkZSA8c3RyaW5nLmg+Ci0jaW5jbHVkZSA8b3N2L3Vpby5oPgorI2luY2x1ZGUgPHZmc2Nv
cmUvdWlvLmg+CiAKIGludAogdWlvbW92ZSh2b2lkICpjcCwgaW50IG4sIHN0cnVjdCB1aW8gKnVp
bykKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3N5c2NhbGxzLmMgYi9saWIvdmZzY29yZS9zeXNj
YWxscy5jCmluZGV4IDRlNTUzMzdmLi5mNTBmYjM4ZiAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUv
c3lzY2FsbHMuYworKysgYi9saWIvdmZzY29yZS9zeXNjYWxscy5jCkBAIC0zNSw3ICszNSw4IEBA
CiAgKiAgICAgICAgICAgICAgICAgIGEgVkZTIHN5c3RlbSBjYWxsLgogICovCiAKLSNpbmNsdWRl
IDxzeXMvc3RhdC5oPgorI2RlZmluZSBfQlNEX1NPVVJDRQorI2RlZmluZSBfR05VX1NPVVJDRQog
I2luY2x1ZGUgPGRpcmVudC5oPgogCiAjaW5jbHVkZSA8bGltaXRzLmg+CkBAIC00NiwxMSArNDcs
MTIgQEAKICNpbmNsdWRlIDxlcnJuby5oPgogI2luY2x1ZGUgPGZjbnRsLmg+CiAKLSNpbmNsdWRl
IDxvc3YvcHJleC5oPgotI2luY2x1ZGUgPG9zdi92bm9kZS5oPgotI2luY2x1ZGUgPG9zdi92ZnNf
ZmlsZS5oaD4KKyNpbmNsdWRlIDx2ZnNjb3JlL3ByZXguaD4KKyNpbmNsdWRlIDx2ZnNjb3JlL3Zu
b2RlLmg+CisjaW5jbHVkZSA8dmZzY29yZS9maWxlLmg+CisKICNpbmNsdWRlICJ2ZnMuaCIKLSNp
bmNsdWRlIDxmcy9mcy5oaD4KKyNpbmNsdWRlIDx2ZnNjb3JlL2ZzLmg+CiAKIGV4dGVybiBzdHJ1
Y3QgdGFzayAqbWFpbl90YXNrOwogCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS90YXNrLmMgYi9s
aWIvdmZzY29yZS90YXNrLmMKaW5kZXggNGNlYjEyM2IuLjc2MzViZDdhIDEwMDY0NAotLS0gYS9s
aWIvdmZzY29yZS90YXNrLmMKKysrIGIvbGliL3Zmc2NvcmUvdGFzay5jCkBAIC00MSw3ICs0MSw3
IEBACiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxlcnJuby5oPgogCi0jaW5jbHVkZSA8
b3N2L3ByZXguaD4KKyNpbmNsdWRlIDx2ZnNjb3JlL3ByZXguaD4KICNpbmNsdWRlICJ2ZnMuaCIK
IAogCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS92ZnMuaCBiL2xpYi92ZnNjb3JlL3Zmcy5oCmlu
ZGV4IGNkOTQwOTc5Li4yNTMxZjczMCAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvdmZzLmgKKysr
IGIvbGliL3Zmc2NvcmUvdmZzLmgKQEAgLTMzLDI0ICszMywxMiBAQAogI2lmbmRlZiBfVkZTX0gK
ICNkZWZpbmUgX1ZGU19ICiAKLSNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KLSNpbmNsdWRlIDxhc3Nl
cnQuaD4KLSNpbmNsdWRlIDxkaXJlbnQuaD4KLSNpbmNsdWRlIDxsaW1pdHMuaD4KLQotI2luY2x1
ZGUgPG9zdi9wcmV4Lmg+Ci0jaW5jbHVkZSA8b3N2L2ZpbGUuaD4KLSNpbmNsdWRlIDxvc3YvbW91
bnQuaD4KLSNpbmNsdWRlIDxvc3Yvdm5vZGUuaD4KLSNpbmNsdWRlIDxvc3YvZGVudHJ5Lmg+Ci0j
aW5jbHVkZSA8b3N2L2Vycm9yLmg+Ci0KLS8qCi0gKiBJbXBvcnQgdm5vZGUgYXR0cmlidXRlcyBm
bGFncwotICovCi0jaW5jbHVkZSA8b3N2L3Zub2RlX2F0dHIuaD4KKyNkZWZpbmUgX0dOVV9TT1VS
Q0UKKyNpbmNsdWRlIDx2ZnNjb3JlL21vdW50Lmg+CiAKLS8qICNkZWZpbmUgREVCVUdfVkZTIDEg
Ki8KKyNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHN5
cy9zdGF0ZnMuaD4KIAogLyoKICAqIFR1bmFibGUgcGFyYW1ldGVycwpAQCAtNTgsNyArNDYsNiBA
QAogI2RlZmluZSBGU01BWE5BTUVTCTE2CQkvKiBtYXggbGVuZ3RoIG9mICdmaWxlIHN5c3RlbScg
bmFtZSAqLwogCiAjaWZkZWYgREVCVUdfVkZTCi0jaW5jbHVkZSA8b3N2L2RlYnVnLmg+CiAKIGV4
dGVybiBpbnQgdmZzX2RlYnVnOwogCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS92bm9kZS5jIGIv
bGliL3Zmc2NvcmUvdm5vZGUuYwppbmRleCBmNTY0NTc3Zi4uODFmNzhiZTggMTAwNjQ0Ci0tLSBh
L2xpYi92ZnNjb3JlL3Zub2RlLmMKKysrIGIvbGliL3Zmc2NvcmUvdm5vZGUuYwpAQCAtMzYsMTQg
KzM2LDE2IEBACiAKICNpbmNsdWRlIDxsaW1pdHMuaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KKyNp
bmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDxzdGRsaWIu
aD4KICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPGVycm5vLmg+CiAjaW5jbHVkZSA8c3lz
L3N0YXQuaD4KIAotI2luY2x1ZGUgPG9zdi9wcmV4Lmg+Ci0jaW5jbHVkZSA8b3N2L3Zub2RlLmg+
CisjaW5jbHVkZSA8dmZzY29yZS9wcmV4Lmg+CisjaW5jbHVkZSA8dmZzY29yZS9kZW50cnkuaD4K
KyNpbmNsdWRlIDx2ZnNjb3JlL3Zub2RlLmg+CiAjaW5jbHVkZSAidmZzLmgiCiAKIGVudW0gdnR5
cGUgaWZ0b3Z0X3RhYlsxNl0gPSB7Ci0tIAoyLjE5LjIKCgpfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlv
cy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3Jn
L21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Feb 04 14:40:01 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 04 Feb 2019 14:40:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gqfPl-0006dt-1P; Mon, 04 Feb 2019 14:40:01 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Kl24=QL=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gqfPj-0006dO-Le
 for minios-devel@lists.xen.org; Mon, 04 Feb 2019 14:39:59 +0000
X-Inumbo-ID: be683bf2-288a-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id be683bf2-288a-11e9-bc90-bc764e045a96;
 Mon, 04 Feb 2019 14:39:58 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 66970F2071;
 Mon,  4 Feb 2019 15:39:57 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id uWHLUr8d0_WT; Mon,  4 Feb 2019 15:39:57 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 422AFF2065
 for <minios-devel@lists.xen.org>; Mon,  4 Feb 2019 15:39:55 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 4 Feb 2019 15:39:55 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>, <Simon.kuenzer@neclab.eu>,
 <sharan.santhanam@neclab.eu>
Date: Mon, 4 Feb 2019 15:37:33 +0100
Message-ID: <20190204143739.29249-42-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 17/23] lib/vfscore: introduce
 fdclose
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogbGliL3Zmc2NvcmUvbWFpbi5jIHwgMTkgKysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNo
YW5nZWQsIDE5IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9tYWluLmMg
Yi9saWIvdmZzY29yZS9tYWluLmMKaW5kZXggMTE2NGIzMGIuLjBmZjhkMzkwIDEwMDY0NAotLS0g
YS9saWIvdmZzY29yZS9tYWluLmMKKysrIGIvbGliL3Zmc2NvcmUvbWFpbi5jCkBAIC0yMDUsNiAr
MjA1LDI1IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2Nsb3NlLCAiJWQiLCBpbnQpOwogVFJBQ0VQ
T0lOVCh0cmFjZV92ZnNfY2xvc2VfcmV0LCAiIik7CiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19jbG9z
ZV9lcnIsICIlZCIsIGludCk7CiAKK2ludCBmZGNsb3NlKGludCBmZCkKK3sKKwlzdHJ1Y3QgdmZz
Y29yZV9maWxlICpmcDsKKworCWZwID0gdmZzY29yZV9nZXRfZmlsZShmZCk7CisJaWYgKCFmcCkK
KwkJcmV0dXJuIEVCQURGOworCisJdmZzY29yZV9wdXRfZmQoZmQpOworCS8qIHZmc2NvcmVfZ2V0
X2ZpbGUgaW5jcmVhc2VzIHRoZSBmX2NvdW50LiBUaGUgZmlyc3QgZmRyb3AgaXMKKwkgKiB0byBk
ZWNyZW1lbnQgaXQgYmFjay4gVGhlIHNlY29uZCBpcyBhbiBhY3R1YWwgcmVkdWNpbmcgd2UKKwkg
KiBhcmUgc3VwcG9zZWQgdG8gZG8gd2hpbGUgcGVyZm9ybWluZyBmZGNsb3NlKCkKKwkgKi8KKwlm
ZHJvcChmcCk7CisJZmRyb3AoZnApOworCisJcmV0dXJuIDA7Cit9CisKIGludCBjbG9zZShpbnQg
ZmQpCiB7CiAJaW50IGVycm9yOwotLSAKMi4xOS4yCgoKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3Mt
ZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9t
YWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Feb 04 14:40:04 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 04 Feb 2019 14:40:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gqfPo-0006ku-3i; Mon, 04 Feb 2019 14:40:04 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Kl24=QL=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gqfPn-0006kh-99
 for minios-devel@lists.xen.org; Mon, 04 Feb 2019 14:40:03 +0000
X-Inumbo-ID: bfefbe76-288a-11e9-b832-5b6f13f1458a
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id bfefbe76-288a-11e9-b832-5b6f13f1458a;
 Mon, 04 Feb 2019 14:40:00 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 0C81E104D66;
 Mon,  4 Feb 2019 15:40:00 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id yJ686-_s7pdV; Mon,  4 Feb 2019 15:39:59 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id E5367104D63
 for <minios-devel@lists.xen.org>; Mon,  4 Feb 2019 15:39:57 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 4 Feb 2019 15:39:57 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>, <Simon.kuenzer@neclab.eu>,
 <sharan.santhanam@neclab.eu>
Date: Mon, 4 Feb 2019 15:37:34 +0100
Message-ID: <20190204143739.29249-43-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 18/23] lib/vfscore: add necessary
 internal prototypes
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogbGliL3Zmc2NvcmUvdmZzLmggfCA5ICsrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDkgaW5z
ZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3Zmcy5oIGIvbGliL3Zmc2NvcmUv
dmZzLmgKaW5kZXggOTRmZTg5YTUuLjRhMWNmYTlmIDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS92
ZnMuaAorKysgYi9saWIvdmZzY29yZS92ZnMuaApAQCAtMTQ2LDYgKzE0NiwxNSBAQCB2b2lkIGRy
ZWYoc3RydWN0IGRlbnRyeSAqZHApOwogdm9pZCBkcmVsZShzdHJ1Y3QgZGVudHJ5ICpkcCk7CiB2
b2lkIGRlbnRyeV9pbml0KHZvaWQpOwogCitpbnQgdmZzX2Nsb3NlKHN0cnVjdCB2ZnNjb3JlX2Zp
bGUgKmZwKTsKK2ludCB2ZnNfcmVhZChzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCwgc3RydWN0IHVp
byAqdWlvLCBpbnQgZmxhZ3MpOworaW50IHZmc193cml0ZShzdHJ1Y3QgdmZzY29yZV9maWxlICpm
cCwgc3RydWN0IHVpbyAqdWlvLCBpbnQgZmxhZ3MpOworaW50IHZmc19pb2N0bChzdHJ1Y3QgdmZz
Y29yZV9maWxlICpmcCwgdW5zaWduZWQgbG9uZyBjb20sIHZvaWQgKmRhdGEpOworaW50IHZmc19z
dGF0KHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwLCBzdHJ1Y3Qgc3RhdCAqc3QpOworCitpbnQgZmdl
dChpbnQgZmQsIHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKipvdXRfZnApOworaW50IGZkYWxsb2Moc3Ry
dWN0IHZmc2NvcmVfZmlsZSAqZnAsIGludCAqbmV3ZmQpOworCiAjaWZkZWYgREVCVUdfVkZTCiB2
b2lkCSB2bm9kZV9kdW1wKHZvaWQpOwogdm9pZAkgdmZzY29yZV9tb3VudF9kdW1wKHZvaWQpOwot
LSAKMi4xOS4yCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVj
dC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlv
cy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Feb 04 14:40:08 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 04 Feb 2019 14:40:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gqfPs-0007DZ-5U; Mon, 04 Feb 2019 14:40:08 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Kl24=QL=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gqfPq-00077H-UD
 for minios-devel@lists.xen.org; Mon, 04 Feb 2019 14:40:06 +0000
X-Inumbo-ID: c1894626-288a-11e9-a2fb-0be3de70f4d3
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id c1894626-288a-11e9-a2fb-0be3de70f4d3;
 Mon, 04 Feb 2019 14:40:03 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id A2ADDF2071;
 Mon,  4 Feb 2019 15:40:02 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id Ew7eS_B0YYWv; Mon,  4 Feb 2019 15:40:02 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 7B469F2065
 for <minios-devel@lists.xen.org>; Mon,  4 Feb 2019 15:40:00 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 4 Feb 2019 15:40:00 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>, <Simon.kuenzer@neclab.eu>,
 <sharan.santhanam@neclab.eu>
Date: Mon, 4 Feb 2019 15:37:35 +0100
Message-ID: <20190204143739.29249-44-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 19/23] lib/vfscore: fix compiler
 complains
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Zub2RlLmggfCAgMiArLQogbGliL3Zmc2Nv
cmUvbWFpbi5jICAgICAgICAgICAgICAgICAgfCAyNCArKysrKysrKysrKystLS0tLS0tLS0tLS0K
IGxpYi92ZnNjb3JlL3N5c2NhbGxzLmMgICAgICAgICAgICAgIHwgIDggKysrKy0tLS0KIGxpYi92
ZnNjb3JlL3Rhc2suYyAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGxpYi92ZnNjb3JlL3Zub2Rl
LmMgICAgICAgICAgICAgICAgIHwgIDggKysrKy0tLS0KIDUgZmlsZXMgY2hhbmdlZCwgMjIgaW5z
ZXJ0aW9ucygrKSwgMjIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvaW5j
bHVkZS92ZnNjb3JlL3Zub2RlLmggYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUu
aAppbmRleCBmZTE0YmM4Mi4uMTM0OGY1NzkgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2luY2x1
ZGUvdmZzY29yZS92bm9kZS5oCisrKyBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9k
ZS5oCkBAIC0xNjcsNyArMTY3LDcgQEAgdHlwZWRlZglpbnQgKCp2bm9wX3RydW5jYXRlX3QpCShz
dHJ1Y3Qgdm5vZGUgKiwgb2ZmX3QpOwogdHlwZWRlZglpbnQgKCp2bm9wX2xpbmtfdCkgICAgICAo
c3RydWN0IHZub2RlICosIHN0cnVjdCB2bm9kZSAqLCBjaGFyICopOwogdHlwZWRlZiBpbnQgKCp2
bm9wX2NhY2hlX3QpIChzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHZmc2NvcmVfZmlsZSAqLCBzdHJ1
Y3QgdWlvICopOwogdHlwZWRlZiBpbnQgKCp2bm9wX2ZhbGxvY2F0ZV90KSAoc3RydWN0IHZub2Rl
ICosIGludCwgb2ZmX3QsIG9mZl90KTsKLXR5cGVkZWYgaW50ICgqdm5vcF9yZWFkbGlua190KSAg
KHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgdWlvICopOwordHlwZWRlZiBzc2l6ZV90ICgqdm5vcF9y
ZWFkbGlua190KSAgKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgdWlvICopOwogdHlwZWRlZiBpbnQg
KCp2bm9wX3N5bWxpbmtfdCkgICAoc3RydWN0IHZub2RlICosIGNoYXIgKiwgY2hhciAqKTsKIAog
LyoKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL21haW4uYyBiL2xpYi92ZnNjb3JlL21haW4uYwpp
bmRleCAwZmY4ZDM5MC4uZDdhYmE3NTYgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL21haW4uYwor
KysgYi9saWIvdmZzY29yZS9tYWluLmMKQEAgLTI0Niw4ICsyNDYsNyBAQCBUUkFDRVBPSU5UKHRy
YWNlX3Zmc19ta25vZCwgIlwiJXNcIiAwJTBvIDB4JXgiLCBjb25zdCBjaGFyKiwgbW9kZV90LCBk
ZXZfdCk7CiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19ta25vZF9yZXQsICIiKTsKIFRSQUNFUE9JTlQo
dHJhY2VfdmZzX21rbm9kX2VyciwgIiVkIiwgaW50KTsKIAotCi1pbnQgX194bWtub2QoaW50IHZl
ciwgY29uc3QgY2hhciAqcGF0aG5hbWUsIG1vZGVfdCBtb2RlLCBkZXZfdCAqZGV2KQoraW50IF9f
eG1rbm9kKGludCB2ZXIsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBtb2RlX3QgbW9kZSwgZGV2X3Qg
KmRldiBfX3VudXNlZCkKIHsKIAlVS19BU1NFUlQodmVyID09IDApOyAvLyBPbiB4ODYtNjQgTGlu
dXgsIF9NS05PRF9WRVJfTElOVVggaXMgMC4KIAlzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsK
QEAgLTU0MSw3ICs1NDAsNyBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19mc3RhdCwgIiVkICVwIiwg
aW50LCBzdHJ1Y3Qgc3RhdCopOwogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZnN0YXRfcmV0LCAiIik7
CiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19mc3RhdF9lcnIsICIlZCIsIGludCk7CiAKLWludCBfX2Z4
c3RhdChpbnQgdmVyLCBpbnQgZmQsIHN0cnVjdCBzdGF0ICpzdCkKK2ludCBfX2Z4c3RhdChpbnQg
dmVyIF9fdW51c2VkLCBpbnQgZmQsIHN0cnVjdCBzdGF0ICpzdCkKIHsKIAlzdHJ1Y3QgdmZzY29y
ZV9maWxlICpmcDsKIAlpbnQgZXJyb3I7CkBAIC01NjgsMTQgKzU2NywxNCBAQCBpbnQgX19meHN0
YXQoaW50IHZlciwgaW50IGZkLCBzdHJ1Y3Qgc3RhdCAqc3QpCiAKIExGUzY0KF9fZnhzdGF0KTsK
IAotaW50IGZzdGF0KGludCBmZCwgc3RydWN0IHN0YXQgKnN0KQoraW50IGZzdGF0KGludCBmZCBf
X3VudXNlZCwgc3RydWN0IHN0YXQgKnN0KQogewogCXJldHVybiBfX2Z4c3RhdCgxLCBmZCwgc3Qp
OwogfQogCiBMRlM2NChmc3RhdCk7CiAKLWludCBfX2Z4c3RhdGF0KGludCB2ZXIsIGludCBkaXJm
ZCwgY29uc3QgY2hhciAqcGF0aG5hbWUsIHN0cnVjdCBzdGF0ICpzdCwKK2ludCBfX2Z4c3RhdGF0
KGludCB2ZXIgX191bnVzZWQsIGludCBkaXJmZCwgY29uc3QgY2hhciAqcGF0aG5hbWUsIHN0cnVj
dCBzdGF0ICpzdCwKIAkJaW50IGZsYWdzKQogewogCWlmIChmbGFncyAmIEFUX1NZTUxJTktfTk9G
T0xMT1cpIHsKQEAgLTExMTMsNyArMTExMiw3IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX3N0YXQs
ICJcIiVzXCIgJXAiLCBjb25zdCBjaGFyKiwgc3RydWN0IHN0YXQqKTsKIFRSQUNFUE9JTlQodHJh
Y2VfdmZzX3N0YXRfcmV0LCAiIik7CiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19zdGF0X2VyciwgIiVk
IiwgaW50KTsKIAotaW50IF9feHN0YXQoaW50IHZlciwgY29uc3QgY2hhciAqcGF0aG5hbWUsIHN0
cnVjdCBzdGF0ICpzdCkKK2ludCBfX3hzdGF0KGludCB2ZXIgX191bnVzZWQsIGNvbnN0IGNoYXIg
KnBhdGhuYW1lLCBzdHJ1Y3Qgc3RhdCAqc3QpCiB7CiAJc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rh
c2s7CiAJY2hhciBwYXRoW1BBVEhfTUFYXTsKQEAgLTExNDksNyArMTE0OCw4IEBAIExGUzY0KHN0
YXQpOwogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbHN0YXQsICJwYXRobmFtZT0lcywgc3RhdD0lcCIs
IGNvbnN0IGNoYXIqLCBzdHJ1Y3Qgc3RhdCopOwogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbHN0YXRf
cmV0LCAiIik7CiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19sc3RhdF9lcnIsICJlcnJubz0lZCIsIGlu
dCk7Ci1pbnQgX19seHN0YXQoaW50IHZlciwgY29uc3QgY2hhciAqcGF0aG5hbWUsIHN0cnVjdCBz
dGF0ICpzdCkKKworaW50IF9fbHhzdGF0KGludCB2ZXIgX191bnVzZWQsIGNvbnN0IGNoYXIgKnBh
dGhuYW1lLCBzdHJ1Y3Qgc3RhdCAqc3QpCiB7CiAJc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7
CiAJY2hhciBwYXRoW1BBVEhfTUFYXTsKQEAgLTE5MjIsNyArMTkyMiw3IEBAIGludCBmY2htb2Qo
aW50IGZkLCBtb2RlX3QgbW9kZSkKIFRSQUNFUE9JTlQodHJhY2VfdmZzX2ZjaG93biwgIlwiJWRc
IiAlZCAlZCIsIGludCwgdWlkX3QsIGdpZF90KTsKIFRSQUNFUE9JTlQodHJhY2VfdmZzX2ZjaG93
bl9yZXQsICIiKTsKIAotaW50IGZjaG93bihpbnQgZmQsIHVpZF90IG93bmVyLCBnaWRfdCBncm91
cCkKK2ludCBmY2hvd24oaW50IGZkIF9fdW51c2VkLCB1aWRfdCBvd25lciBfX3VudXNlZCwgZ2lk
X3QgZ3JvdXAgX191bnVzZWQpCiB7CiAJdHJhY2VfdmZzX2ZjaG93bihmZCwgb3duZXIsIGdyb3Vw
KTsKIAlXQVJOX1NUVUJCRUQoKTsKQEAgLTE5MzAsMTMgKzE5MzAsMTMgQEAgaW50IGZjaG93bihp
bnQgZmQsIHVpZF90IG93bmVyLCBnaWRfdCBncm91cCkKIAlyZXR1cm4gMDsKIH0KIAotaW50IGNo
b3duKGNvbnN0IGNoYXIgKnBhdGgsIHVpZF90IG93bmVyLCBnaWRfdCBncm91cCkKK2ludCBjaG93
bihjb25zdCBjaGFyICpwYXRoIF9fdW51c2VkLCB1aWRfdCBvd25lciBfX3VudXNlZCwgZ2lkX3Qg
Z3JvdXAgX191bnVzZWQpCiB7CiAJV0FSTl9TVFVCQkVEKCk7CiAJcmV0dXJuIDA7CiB9CiAKLWlu
dCBsY2hvd24oY29uc3QgY2hhciAqcGF0aCwgdWlkX3Qgb3duZXIsIGdpZF90IGdyb3VwKQoraW50
IGxjaG93bihjb25zdCBjaGFyICpwYXRoIF9fdW51c2VkLCB1aWRfdCBvd25lciBfX3VudXNlZCwg
Z2lkX3QgZ3JvdXAgX191bnVzZWQpCiB7CiAJV0FSTl9TVFVCQkVEKCk7CiAJcmV0dXJuIDA7CkBA
IC0yMDI2LDcgKzIwMjYsNyBAQCBzc2l6ZV90IHNlbmRmaWxlKGludCBvdXRfZmQsIGludCBpbl9m
ZCwgb2ZmX3QgKl9vZmZzZXQsIHNpemVfdCBjb3VudCkKIExGUzY0KHNlbmRmaWxlKTsKICNlbmRp
ZgogCi1OT19TWVMoaW50IGZjaG1vZGF0KGludCBkaXJmZCwgY29uc3QgY2hhciAqcGF0aG5hbWUs
IG1vZGVfdCBtb2RlLCBpbnQgZmxhZ3MpKTsKK05PX1NZUyhpbnQgZmNobW9kYXQoaW50IGRpcmZk
IF9fdW51c2VkLCBjb25zdCBjaGFyICpwYXRobmFtZSBfX3VudXNlZCwgbW9kZV90IG1vZGUgX191
bnVzZWQsIGludCBmbGFncyBfX3VudXNlZCkpOwogCiBtb2RlX3QgdW1hc2sobW9kZV90IG5ld21h
c2spCiB7CkBAIC0yMDM5LDcgKzIwMzksNyBAQCBmc19ub29wKHZvaWQpCiAJcmV0dXJuIDA7CiB9
CiAKLWludCBjaHJvb3QoY29uc3QgY2hhciAqcGF0aCkKK2ludCBjaHJvb3QoY29uc3QgY2hhciAq
cGF0aCBfX3VudXNlZCkKIHsKIAlXQVJOX1NUVUJCRUQoKTsKIAllcnJubyA9IEVOT1NZUzsKZGlm
ZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3N5c2NhbGxzLmMgYi9saWIvdmZzY29yZS9zeXNjYWxscy5j
CmluZGV4IDMzMDA0OTYwLi5iZmVkMmMyMSAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvc3lzY2Fs
bHMuYworKysgYi9saWIvdmZzY29yZS9zeXNjYWxscy5jCkBAIC0zOTQsNyArMzk0LDcgQEAgc3lz
X2ZzeW5jKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwKQogCXN0cnVjdCB2bm9kZSAqdnA7CiAJaW50
IGVycm9yOwogCi0JRFBSSU5URihWRlNEQl9TWVNDQUxMLCAoInN5c19mc3luYzogZnA9JXhcbiIs
IGZwKSk7CisJRFBSSU5URihWRlNEQl9TWVNDQUxMLCAoInN5c19mc3luYzogZnA9JXBcbiIsIGZw
KSk7CiAKIAlpZiAoIWZwLT5mX2RlbnRyeSkKIAkJcmV0dXJuIEVJTlZBTDsKQEAgLTQxMSw3ICs0
MTEsNyBAQCBzeXNfZnN0YXQoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAsIHN0cnVjdCBzdGF0ICpz
dCkKIHsKIAlpbnQgZXJyb3IgPSAwOwogCi0JRFBSSU5URihWRlNEQl9TWVNDQUxMLCAoInN5c19m
c3RhdDogZnA9JXhcbiIsIGZwKSk7CisJRFBSSU5URihWRlNEQl9TWVNDQUxMLCAoInN5c19mc3Rh
dDogZnA9JXBcbiIsIGZwKSk7CiAKIAllcnJvciA9IHZmc19zdGF0KGZwLCBzdCk7CiAKQEAgLTQ1
OCw3ICs0NTgsNyBAQCBzeXNfcmVhZGRpcihzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCwgc3RydWN0
IGRpcmVudCAqZGlyKQogCXN0cnVjdCB2bm9kZSAqZHZwOwogCWludCBlcnJvcjsKIAotCURQUklO
VEYoVkZTREJfU1lTQ0FMTCwgKCJzeXNfcmVhZGRpcjogZnA9JXhcbiIsIGZwKSk7CisJRFBSSU5U
RihWRlNEQl9TWVNDQUxMLCAoInN5c19yZWFkZGlyOiBmcD0lcFxuIiwgZnApKTsKIAogCWlmICgh
ZnAtPmZfZGVudHJ5KQogCQlyZXR1cm4gRU5PVERJUjsKQEAgLTE0MzMsNyArMTQzMyw3IEBAIHN5
c19mYWxsb2NhdGUoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAsIGludCBtb2RlLCBvZmZfdCBvZmZz
ZXQsIG9mZl90IGxlbikKIAlpbnQgZXJyb3I7CiAJc3RydWN0IHZub2RlICp2cDsKIAotCURQUklO
VEYoVkZTREJfU1lTQ0FMTCwgKCJzeXNfZmFsbG9jYXRlOiBmcD0leCIsIGZwKSk7CisJRFBSSU5U
RihWRlNEQl9TWVNDQUxMLCAoInN5c19mYWxsb2NhdGU6IGZwPSVwIiwgZnApKTsKIAogCWlmICgh
ZnAtPmZfZGVudHJ5IHx8ICEoZnAtPmZfZmxhZ3MgJiBGV1JJVEUpKSB7CiAJCXJldHVybiBFQkFE
RjsKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3Rhc2suYyBiL2xpYi92ZnNjb3JlL3Rhc2suYwpp
bmRleCA3NjM1YmQ3YS4uZTY1OGJkYWEgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL3Rhc2suYwor
KysgYi9saWIvdmZzY29yZS90YXNrLmMKQEAgLTEyOSw3ICsxMjksNyBAQCBwYXRoX2NvbnYoY2hh
ciAqd2QsIGNvbnN0IGNoYXIgKmNwYXRoLCBjaGFyICpmdWxsKQogICogQGFjYzogYWNjZXNzIG1v
ZGUKICAqLwogaW50Ci10YXNrX2NvbnYoc3RydWN0IHRhc2sgKnQsIGNvbnN0IGNoYXIgKmNwYXRo
LCBpbnQgYWNjLCBjaGFyICpmdWxsKQordGFza19jb252KHN0cnVjdCB0YXNrICp0LCBjb25zdCBj
aGFyICpjcGF0aCwgaW50IGFjYyBfX3VudXNlZCwgY2hhciAqZnVsbCkKIHsKIAlpbnQgcmM7CiAK
ZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3Zub2RlLmMgYi9saWIvdmZzY29yZS92bm9kZS5jCmlu
ZGV4IGU5ZTA0MGFhLi5kNzA3NDZjOSAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvdm5vZGUuYwor
KysgYi9saWIvdmZzY29yZS92bm9kZS5jCkBAIC0xNzksNyArMTc5LDcgQEAgdmZzY29yZV92Z2V0
KHN0cnVjdCBtb3VudCAqbXAsIHVpbnQ2NF90IGlubywgc3RydWN0IHZub2RlICoqdnBwKQogCiAJ
KnZwcCA9IE5VTEw7CiAKLQlEUFJJTlRGKFZGU0RCX1ZOT0RFLCAoInZnZXQgJUxMdVxuIiwgaW5v
KSk7CisJRFBSSU5URihWRlNEQl9WTk9ERSwgKCJ2ZnNjb3JlX3ZnZXQgJWxsdVxuIiwgKHVuc2ln
bmVkIGxvbmcgbG9uZykgaW5vKSk7CiAKIAlWTk9ERV9MT0NLKCk7CiAKQEAgLTMwMCw3ICszMDAs
NyBAQCB2cmVsZShzdHJ1Y3Qgdm5vZGUgKnZwKQogICogUmVtb3ZlIGFsbCB2bm9kZSBpbiB0aGUg
dm5vZGUgdGFibGUgZm9yIHVubW91bnQuCiAgKi8KIHZvaWQKLXZmbHVzaChzdHJ1Y3QgbW91bnQg
Km1wKQordmZsdXNoKHN0cnVjdCBtb3VudCAqbXAgX191bnVzZWQpCiB7CiB9CiAKQEAgLTUxMiw3
ICs1MTIsNyBAQCB2bm9kZV9pbml0KHZvaWQpCiAJCVVLX0lOSVRfTElTVF9IRUFEKCZ2bm9kZV90
YWJsZVtpXSk7CiB9CiAKLXZvaWQgdm5fYWRkX25hbWUoc3RydWN0IHZub2RlICp2cCwgc3RydWN0
IGRlbnRyeSAqZHApCit2b2lkIHZuX2FkZF9uYW1lKHN0cnVjdCB2bm9kZSAqdnAgX191bnVzZWQs
IHN0cnVjdCBkZW50cnkgKmRwKQogewogCS8qIFRPRE86IFJlLWVuYWJsZSB0aGlzIGNoZWNrIHdo
ZW4gcHJlZW1wdGlvbiBhbmQvb3Igc21wIGlzCiAJICogaGVyZSAqLwpAQCAtNTIwLDcgKzUyMCw3
IEBAIHZvaWQgdm5fYWRkX25hbWUoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IGRlbnRyeSAqZHAp
CiAJdWtfbGlzdF9hZGQoJmRwLT5kX25hbWVzX2xpbmssICZ2cC0+dl9uYW1lcyk7CiB9CiAKLXZv
aWQgdm5fZGVsX25hbWUoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IGRlbnRyeSAqZHApCit2b2lk
IHZuX2RlbF9uYW1lKHN0cnVjdCB2bm9kZSAqdnAgX191bnVzZWQsIHN0cnVjdCBkZW50cnkgKmRw
KQogewogCS8qIFRPRE86IFJlLWVuYWJsZSB0aGlzIGNoZWNrIHdoZW4gcHJlZW1wdGlvbiBhbmQv
b3Igc21wIGlzCiAJICogaGVyZSAqLwotLSAKMi4xOS4yCgoKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5p
b3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9y
Zy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Feb 04 14:40:09 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 04 Feb 2019 14:40:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gqfPt-0007E2-6y; Mon, 04 Feb 2019 14:40:09 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Kl24=QL=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gqfPs-0007DX-5y
 for minios-devel@lists.xen.org; Mon, 04 Feb 2019 14:40:08 +0000
X-Inumbo-ID: c31bcd74-288a-11e9-abe6-c7efbd7ec895
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id c31bcd74-288a-11e9-abe6-c7efbd7ec895;
 Mon, 04 Feb 2019 14:40:06 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 5AA06104D66;
 Mon,  4 Feb 2019 15:40:05 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id o5inxqvb6FZk; Mon,  4 Feb 2019 15:40:05 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 3E7E4104D63
 for <minios-devel@lists.xen.org>; Mon,  4 Feb 2019 15:40:03 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 4 Feb 2019 15:40:02 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>, <Simon.kuenzer@neclab.eu>,
 <sharan.santhanam@neclab.eu>
Date: Mon, 4 Feb 2019 15:37:36 +0100
Message-ID: <20190204143739.29249-45-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 20/23] lib/vfscore: add main
 constructor
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogbGliL3Zmc2NvcmUvbWFpbi5jIHwgMTEgKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAx
MSBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvbWFpbi5jIGIvbGliL3Zm
c2NvcmUvbWFpbi5jCmluZGV4IGQ3YWJhNzU2Li43YWNjZjkzMSAxMDA2NDQKLS0tIGEvbGliL3Zm
c2NvcmUvbWFpbi5jCisrKyBiL2xpYi92ZnNjb3JlL21haW4uYwpAQCAtMjA0NSwzICsyMDQ1LDE0
IEBAIGludCBjaHJvb3QoY29uc3QgY2hhciAqcGF0aCBfX3VudXNlZCkKIAllcnJubyA9IEVOT1NZ
UzsKIAlyZXR1cm4gLTE7CiB9CisKK3N0YXRpYyBzdHJ1Y3QgdGFzayBfbWFpbl90YXNrX2ltcGw7
CitfX2NvbnN0cnVjdG9yIHN0YXRpYyB2b2lkIHZmc2NvcmVfaW5pdCh2b2lkKQoreworCW1lbXNl
dCgmX21haW5fdGFza19pbXBsLCAwLCBzaXplb2YoX21haW5fdGFza19pbXBsKSk7CisJc3RyY3B5
KF9tYWluX3Rhc2tfaW1wbC50X2N3ZCwgIi8iKTsKKwltYWluX3Rhc2sgPSAmX21haW5fdGFza19p
bXBsOworCisJdm5vZGVfaW5pdCgpOworCWxvb2t1cF9pbml0KCk7Cit9Ci0tIAoyLjE5LjIKCgpf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2
ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczov
L2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Feb 04 14:40:15 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 04 Feb 2019 14:40:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gqfPz-0007FI-9i; Mon, 04 Feb 2019 14:40:15 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Kl24=QL=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gqfPx-0007F1-Mg
 for minios-devel@lists.xen.org; Mon, 04 Feb 2019 14:40:13 +0000
X-Inumbo-ID: c63789d0-288a-11e9-8d5f-4b90c0b767a9
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id c63789d0-288a-11e9-8d5f-4b90c0b767a9;
 Mon, 04 Feb 2019 14:40:11 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 90AEB104D66;
 Mon,  4 Feb 2019 15:40:10 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 0vxQDmxfGxQT; Mon,  4 Feb 2019 15:40:10 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 71C02104D63
 for <minios-devel@lists.xen.org>; Mon,  4 Feb 2019 15:40:08 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 4 Feb 2019 15:40:08 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>, <Simon.kuenzer@neclab.eu>,
 <sharan.santhanam@neclab.eu>
Date: Mon, 4 Feb 2019 15:37:38 +0100
Message-ID: <20190204143739.29249-47-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 22/23] lib/vfscore: re-implement
 stdio and enable new code
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogbGliL3Zmc2NvcmUvQ29uZmlnLnVrICAgICAgICAgICAgICB8ICAxICsKIGxpYi92ZnNjb3Jl
L01ha2VmaWxlLnVrICAgICAgICAgICAgfCAgOSArKysrCiBsaWIvdmZzY29yZS9leHBvcnRzeW1z
LnVrICAgICAgICAgIHwgMjYgKysrKysrKysrKysKIGxpYi92ZnNjb3JlL2ZpbGUuYyAgICAgICAg
ICAgICAgICAgfCA2MSArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogbGliL3Zmc2NvcmUvaW5j
bHVkZS92ZnNjb3JlL2ZpbGUuaCB8ICAxIC0KIGxpYi92ZnNjb3JlL3N0ZGlvLmMgICAgICAgICAg
ICAgICAgfCA3MCArKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0KIDYgZmlsZXMgY2hhbmdl
ZCwgODAgaW5zZXJ0aW9ucygrKSwgODggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliL3Zm
c2NvcmUvQ29uZmlnLnVrIGIvbGliL3Zmc2NvcmUvQ29uZmlnLnVrCmluZGV4IDQ5ZDZkYWExLi42
Y2Y2YzYzYSAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvQ29uZmlnLnVrCisrKyBiL2xpYi92ZnNj
b3JlL0NvbmZpZy51awpAQCAtMywzICszLDQgQEAgY29uZmlnIExJQlZGU0NPUkUKIAlkZWZhdWx0
IG4KIAlzZWxlY3QgTElCTk9MSUJDIGlmICFIQVZFX0xJQkMKIAlzZWxlY3QgTElCVUtERUJVRwor
CXNlbGVjdCBMSUJVS0xPQ0sKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL01ha2VmaWxlLnVrIGIv
bGliL3Zmc2NvcmUvTWFrZWZpbGUudWsKaW5kZXggMDY5MzNkOTYuLjFmZDM1ODU4IDEwMDY0NAot
LS0gYS9saWIvdmZzY29yZS9NYWtlZmlsZS51aworKysgYi9saWIvdmZzY29yZS9NYWtlZmlsZS51
awpAQCAtNSw1ICs1LDE0IEBAIENJTkNMVURFUy15ICs9IC1JJChMSUJWRlNDT1JFX0JBU0UpL2lu
Y2x1ZGUKIExJQlZGU0NPUkVfU1JDUy15ICs9ICQoTElCVkZTQ09SRV9CQVNFKS9mZC5jCiBMSUJW
RlNDT1JFX1NSQ1MteSArPSAkKExJQlZGU0NPUkVfQkFTRSkvZmlsZS5jCiBMSUJWRlNDT1JFX1NS
Q1MteSArPSAkKExJQlZGU0NPUkVfQkFTRSkvc3RkaW8uYworTElCVkZTQ09SRV9TUkNTLXkgKz0g
JChMSUJWRlNDT1JFX0JBU0UpL21vdW50LmMKK0xJQlZGU0NPUkVfU1JDUy15ICs9ICQoTElCVkZT
Q09SRV9CQVNFKS92bm9kZS5jCitMSUJWRlNDT1JFX1NSQ1MteSArPSAkKExJQlZGU0NPUkVfQkFT
RSkvZGVudHJ5LmMKK0xJQlZGU0NPUkVfU1JDUy15ICs9ICQoTElCVkZTQ09SRV9CQVNFKS9zeXNj
YWxscy5jCitMSUJWRlNDT1JFX1NSQ1MteSArPSAkKExJQlZGU0NPUkVfQkFTRSkvbWFpbi5jCitM
SUJWRlNDT1JFX1NSQ1MteSArPSAkKExJQlZGU0NPUkVfQkFTRSkvdGFzay5jCitMSUJWRlNDT1JF
X1NSQ1MteSArPSAkKExJQlZGU0NPUkVfQkFTRSkvbG9va3VwLmMKK0xJQlZGU0NPUkVfU1JDUy15
ICs9ICQoTElCVkZTQ09SRV9CQVNFKS9mb3BzLmMKK0xJQlZGU0NPUkVfU1JDUy15ICs9ICQoTElC
VkZTQ09SRV9CQVNFKS9zdWJyX3Vpby5jCiAKIEVYVFJBX0xEX1NDUklQVC0kKENPTkZJR19MSUJW
RlNDT1JFKSArPSAkKExJQlZGU0NPUkVfQkFTRSkvZXh0cmEubGQKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9leHBvcnRzeW1zLnVrIGIvbGliL3Zm
c2NvcmUvZXhwb3J0c3ltcy51awppbmRleCA5ZTIyOWExMS4uNTBiNjIyMDQgMTAwNjQ0Ci0tLSBh
L2xpYi92ZnNjb3JlL2V4cG9ydHN5bXMudWsKKysrIGIvbGliL3Zmc2NvcmUvZXhwb3J0c3ltcy51
awpAQCAtNSwzICs1LDI5IEBAIHZmc2NvcmVfZ2V0X2ZpbGUKIGNsb3NlCiB3cml0ZQogcmVhZAor
c3lzX21vdW50Cit2ZnNjb3JlX251bGxvcAordmZzY29yZV9yZWxlYXNlX21wX2RlbnRyaWVzCit2
ZnNjb3JlX3ZnZXQKK3Zmc2NvcmVfdWlvbW92ZQordmZzY29yZV92b3BfbnVsbG9wCit2ZnNjb3Jl
X3ZvcF9laW52YWwKK3Zmc2NvcmVfdm9wX2VwZXJtCit2ZnNjb3JlX3ZvcF9lcm9mcworb3Blbgor
d3JpdGUKK2Nsb3NlCityZWFkCitta2RpcgorZnN5bmMKK2ZzdGF0CitzdGF0CitjaG1vZAorZHVw
CitkdXAyCitkdXAzCit2ZnNjb3JlX3Vpb21vdmUKK3N5c19zeW5jCit2ZnNjb3JlX21vdW50X2R1
bXAKK3N5c191bW91bnQKK3N5c191bW91bnQyCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9maWxl
LmMgYi9saWIvdmZzY29yZS9maWxlLmMKaW5kZXggMGY2ZGZhOTMuLmU1NmYxNmRjIDEwMDY0NAot
LS0gYS9saWIvdmZzY29yZS9maWxlLmMKKysrIGIvbGliL3Zmc2NvcmUvZmlsZS5jCkBAIC0zOCw2
NiArMzgsNyBAQAogI2luY2x1ZGUgPHVrL3ByaW50Lmg+CiAjaW5jbHVkZSA8dmZzY29yZS9maWxl
Lmg+CiAjaW5jbHVkZSA8dWsvYXNzZXJ0Lmg+Ci0jaW5jbHVkZSA8dWsvYXJjaC9hdG9taWMuaD4K
LQotaW50IGNsb3NlKGludCBmZCkKLXsKLQlzdHJ1Y3QgdmZzY29yZV9maWxlICpmaWxlID0gdmZz
Y29yZV9nZXRfZmlsZShmZCk7Ci0KLQlpZiAoIWZpbGUpIHsKLQkJdWtfcHJfd2Fybigibm8gc3Vj
aCBmaWxlIGRlc2NyaXB0b3I6ICVkXG4iLCBmZCk7Ci0JCWVycm5vID0gRUJBREY7Ci0JCXJldHVy
biAtMTsKLQl9Ci0KLQlpZiAoIWZpbGUtPmZvcHMtPmNsb3NlKSB7Ci0JCWVycm5vID0gRUlPOwot
CQlyZXR1cm4gLTE7Ci0JfQotCi0JcmV0dXJuIGZpbGUtPmZvcHMtPmNsb3NlKGZpbGUpOwotfQot
Ci1zc2l6ZV90IHdyaXRlKGludCBmZCwgY29uc3Qgdm9pZCAqYnVmLCBzaXplX3QgY291bnQpCi17
Ci0Jc3RydWN0IHZmc2NvcmVfZmlsZSAqZmlsZSA9IHZmc2NvcmVfZ2V0X2ZpbGUoZmQpOwotCi0J
aWYgKCFmaWxlKSB7Ci0JCXVrX3ByX3dhcm4oIm5vIHN1Y2ggZmlsZSBkZXNjcmlwdG9yOiAlZFxu
IiwgZmQpOwotCQllcnJubyA9IEVCQURGOwotCQlyZXR1cm4gLTE7Ci0JfQotCi0JaWYgKCFmaWxl
LT5mb3BzLT53cml0ZSkgewotCQl1a19wcl93YXJuKCJmaWxlIGRvZXMgbm90IGhhdmUgd3JpdGUg
b3A6ICVkXG4iLCBmZCk7Ci0JCWVycm5vID0gRUlOVkFMOwotCQlyZXR1cm4gLTE7Ci0JfQotCi0J
cmV0dXJuIGZpbGUtPmZvcHMtPndyaXRlKGZpbGUsIGJ1ZiwgY291bnQpOwotfQotCi1zc2l6ZV90
IHJlYWQoaW50IGZkLCB2b2lkICpidWYsIHNpemVfdCBjb3VudCkKLXsKLQlzdHJ1Y3QgdmZzY29y
ZV9maWxlICpmaWxlID0gdmZzY29yZV9nZXRfZmlsZShmZCk7Ci0KLQlpZiAoIWZpbGUpIHsKLQkJ
dWtfcHJfd2Fybigibm8gc3VjaCBmaWxlIGRlc2NyaXB0b3I6ICVkXG4iLCBmZCk7Ci0JCWVycm5v
ID0gRUJBREY7Ci0JCXJldHVybiAtMTsKLQl9Ci0KLQlpZiAoIWZpbGUtPmZvcHMtPnJlYWQpIHsK
LQkJdWtfcHJfd2FybigiZmlsZSBkb2VzIG5vdCBoYXZlIHJlYWQgb3A6ICVkXG4iLCBmZCk7Ci0J
CWVycm5vID0gRUlOVkFMOwotCQlyZXR1cm4gLTE7Ci0JfQotCi0JcmV0dXJuIGZpbGUtPmZvcHMt
PnJlYWQoZmlsZSwgYnVmLCBjb3VudCk7Ci19Ci0KLS8qIFRPRE86IHJlbW92ZSBzdHViICovCi0j
ZGVmaW5lIHZmc19jbG9zZShmcCkgKDApCisjaW5jbHVkZSAidmZzLmgiCiAKIGludCBmZHJvcChz
dHJ1Y3QgdmZzY29yZV9maWxlICpmcCkKIHsKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1
ZGUvdmZzY29yZS9maWxlLmggYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZmlsZS5oCmlu
ZGV4IDg3ZDU5NzVjLi43ZjQ1Y2E3OCAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92
ZnNjb3JlL2ZpbGUuaAorKysgYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZmlsZS5oCkBA
IC01OSw3ICs1OSw2IEBAIHN0cnVjdCB2ZnNjb3JlX2ZpbGUgewogCW9mZl90CQlmX29mZnNldDsJ
LyogY3VycmVudCBwb3NpdGlvbiBpbiBmaWxlICovCiAJdm9pZAkJKmZfZGF0YTsgICAgICAgIC8q
IGZpbGUgZGVzY3JpcHRvciBzcGVjaWZpYyBkYXRhICovCiAJc3RydWN0IGRlbnRyeSAgICpmX2Rl
bnRyeTsKLQljb25zdCBzdHJ1Y3QgdmZzY29yZV9mb3BzICpmb3BzOwogfTsKIAogaW50IHZmc2Nv
cmVfYWxsb2NfZmQodm9pZCk7CmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9zdGRpby5jIGIvbGli
L3Zmc2NvcmUvc3RkaW8uYwppbmRleCA3ZDc0OTQ0Mi4uNWYxNWVmMmEgMTAwNjQ0Ci0tLSBhL2xp
Yi92ZnNjb3JlL3N0ZGlvLmMKKysrIGIvbGliL3Zmc2NvcmUvc3RkaW8uYwpAQCAtNDIsMTggKzQy
LDI5IEBACiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAKIC8qIE9uZSBmdW5jdGlvbiBmb3Igc3RkZXJy
IGFuZCBzdGRvdXQgKi8KLXN0YXRpYyBzc2l6ZV90IHN0ZG91dF93cml0ZShzdHJ1Y3QgdmZzY29y
ZV9maWxlICp2ZnNjb3JlX2ZpbGUgX191bnVzZWQsCi0JCQkgICAgY29uc3Qgdm9pZCAqYnVmLCBz
aXplX3QgY291bnQpCitzdGF0aWMgc3NpemVfdCBzdGRpb193cml0ZShzdHJ1Y3Qgdm5vZGUgKnZw
IF9fdW51c2VkLAorCQkJICAgc3RydWN0IHVpbyAqdWlvLAorCQkJICAgaW50IGlvZmxhZyBfX3Vu
dXNlZCkKIHsKLQlyZXR1cm4gdWtwbGF0X2NvdXRrKGJ1ZiwgY291bnQpOworCVVLX0FTU0VSVCgh
dWlvLT51aW9fb2Zmc2V0KTsKKwlVS19BU1NFUlQodWlvLT51aW9faW92Y250ID09IDEpOworCXJl
dHVybiB1a3BsYXRfY291dGsodWlvLT51aW9faW92LT5pb3ZfYmFzZSwgdWlvLT51aW9faW92LT5p
b3ZfbGVuKTsKIH0KIAotc3RhdGljIHNzaXplX3Qgc3RkaW5fcmVhZChzdHJ1Y3QgdmZzY29yZV9m
aWxlICp2ZnNjb3JlX2ZpbGUgX191bnVzZWQsCi0JCQkgIHZvaWQgKl9idWYsIHNpemVfdCBjb3Vu
dCkKK3N0YXRpYyBzc2l6ZV90IHN0ZGlvX3JlYWQoc3RydWN0IHZub2RlICp2cCBfX3VudXNlZCwK
KwkJICAgICAgc3RydWN0IHZmc2NvcmVfZmlsZSAqZmlsZSBfX3VudXNlZCwKKwkJICAgICAgc3Ry
dWN0IHVpbyAqdWlvLAorCQkgICAgICBpbnQgaW9mbGFnIF9fdW51c2VkKQogewogCWludCBieXRl
c19yZWFkOwotCXNpemVfdCBieXRlc190b3RhbCA9IDA7Ci0JY2hhciAqYnVmID0gKGNoYXIgKilf
YnVmOworCXNpemVfdCBieXRlc190b3RhbCA9IDAsIGNvdW50OworCWNoYXIgKmJ1ZjsKKworCVVL
X0FTU0VSVCghdWlvLT51aW9fb2Zmc2V0KTsKKwlVS19BU1NFUlQodWlvLT51aW9faW92Y250ID09
IDEpOworCisJYnVmID0gdWlvLT51aW9faW92LT5pb3ZfYmFzZTsKKwljb3VudCA9IHVpby0+dWlv
X2lvdi0+aW92X2xlbjsKIAogCWRvIHsKIAkJd2hpbGUgKChieXRlc19yZWFkID0gdWtwbGF0X2Np
bmsoYnVmLApAQCAtNjQsOCArNzUsOCBAQCBzdGF0aWMgc3NpemVfdCBzdGRpbl9yZWFkKHN0cnVj
dCB2ZnNjb3JlX2ZpbGUgKnZmc2NvcmVfZmlsZSBfX3VudXNlZCwKIAkJKihidWYgLSAxKSA9ICoo
YnVmIC0gMSkgPT0gJ1xyJyA/CiAJCQkJCSdcbicgOiAqKGJ1ZiAtIDEpOwogCi0JCXN0ZG91dF93
cml0ZSh2ZnNjb3JlX2ZpbGUsIChidWYgLSBieXRlc19yZWFkKSwKLQkJCQlieXRlc19yZWFkKTsK
KwkJLyogRWNobyB0aGUgaW5wdXQgKi8KKwkJdWtwbGF0X2NvdXRrKGJ1ZiAtIGJ5dGVzX3JlYWQs
IGJ5dGVzX3JlYWQpOwogCQlieXRlc190b3RhbCArPSBieXRlc19yZWFkOwogCiAJfSB3aGlsZSAo
Ynl0ZXNfdG90YWwgPCBjb3VudCAmJiAqKGJ1ZiAtIDEpICE9ICdcbicKQEAgLTc0LDMzICs4NSwz
OCBAQCBzdGF0aWMgc3NpemVfdCBzdGRpbl9yZWFkKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKnZmc2Nv
cmVfZmlsZSBfX3VudXNlZCwKIAlyZXR1cm4gYnl0ZXNfdG90YWw7CiB9CiAKLXN0YXRpYyBzdHJ1
Y3QgdmZzY29yZV9mb3BzIHN0ZGluX2ZvcHMgPSB7Ci0JLnJlYWQgPSBzdGRpbl9yZWFkLAotfTsK
IAotc3RhdGljIHN0cnVjdCB2ZnNjb3JlX2ZvcHMgc3Rkb3V0X2ZvcHMgPSB7Ci0JLndyaXRlID0g
c3Rkb3V0X3dyaXRlLAorc3RhdGljIHN0cnVjdCB2bm9wcyBzdGRpb192bm9wcyA9IHsKKwkudm9w
X3dyaXRlID0gc3RkaW9fd3JpdGUsCisJLnZvcF9yZWFkID0gc3RkaW9fcmVhZCwKIH07CiAKLXN0
YXRpYyBzdHJ1Y3QgdmZzY29yZV9maWxlICBzdGRpbl9maWxlID0gewotCS5mZCA9IDAsCi0JLmZv
cHMgPSAmc3RkaW5fZm9wcywKK3N0YXRpYyBzdHJ1Y3Qgdm5vZGUgc3RkaW9fdm5vZGUgPSB7CisJ
LnZfaW5vID0gMSwKKwkudl9vcCA9ICZzdGRpb192bm9wcywKKwkudl9sb2NrID0gVUtfTVVURVhf
SU5JVElBTElaRVIoc3RkaW9fdm5vZGUudl9sb2NrKSwKKwkudl9yZWZjbnQgPSAxLAogfTsKIAot
c3RhdGljIHN0cnVjdCB2ZnNjb3JlX2ZpbGUgIHN0ZG91dF9maWxlID0gewotCS5mZCA9IDEsCi0J
LmZvcHMgPSAmc3Rkb3V0X2ZvcHMsCitzdGF0aWMgc3RydWN0IGRlbnRyeSBzdGRpb19kZW50cnkg
PSB7CisJLmRfdm5vZGUgPSAmc3RkaW9fdm5vZGUsCiB9OwogCi1zdGF0aWMgc3RydWN0IHZmc2Nv
cmVfZmlsZSAgc3RkZXJyX2ZpbGUgPSB7Ci0JLmZkID0gMiwKLQkuZm9wcyA9ICZzdGRvdXRfZm9w
cywKK3N0YXRpYyBzdHJ1Y3QgdmZzY29yZV9maWxlICBzdGRpb19maWxlID0geworCS5mZCA9IDEs
CisJLmZfZmxhZ3MgPSBGV1JJVEUgfCBGUkVBRCwKKwkuZl9kZW50cnkgPSAmc3RkaW9fZGVudHJ5
LAorCS8qIHJlZmVyZW5jZSBjb3VudCBpcyAyIGJlY2F1c2UgY2xvc2UoMCkgaXMgYSB2YWxpZAor
CSAqIG9wZXJhdGlvbi4gSG93ZXZlciBpdCBpcyBub3QgcHJvcGVybHkgaGFuZGxlZCBpbiB0aGUK
KwkgKiBjdXJyZW50IGltcGxlbWVudGF0aW9uLiAqLworCS5mX2NvdW50ID0gMiwKIH07CiAKLQog
dm9pZCBpbml0X3N0ZGlvKHZvaWQpCiB7Ci0JdmZzY29yZV9pbnN0YWxsX2ZkKDAsICZzdGRpbl9m
aWxlKTsKLQl2ZnNjb3JlX2luc3RhbGxfZmQoMSwgJnN0ZG91dF9maWxlKTsKLQl2ZnNjb3JlX2lu
c3RhbGxfZmQoMiwgJnN0ZGVycl9maWxlKTsKKwl2ZnNjb3JlX2luc3RhbGxfZmQoMCwgJnN0ZGlv
X2ZpbGUpOworCWlmIChkdXAyKDAsIDEpICE9IDEpCisJCXVrX3ByX2VycigiZmFpbGVkIHRvIGR1
cCB0byBzdGRpblxuIik7CisJaWYgKGR1cDIoMCwgMikgIT0gMikKKwkJdWtfcHJfZXJyKCJmYWls
ZWQgdG8gZHVwIHRvIHN0ZGVyclxuIik7CiB9Ci0tIAoyLjE5LjIKCgpfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0
Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2pl
Y3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Feb 04 14:40:18 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 04 Feb 2019 14:40:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gqfQ2-0007Fw-BT; Mon, 04 Feb 2019 14:40:18 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Kl24=QL=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gqfQ0-0007Fg-TR
 for minios-devel@lists.xen.org; Mon, 04 Feb 2019 14:40:16 +0000
X-Inumbo-ID: c7c6dd96-288a-11e9-9233-a7b6fd2603c8
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id c7c6dd96-288a-11e9-9233-a7b6fd2603c8;
 Mon, 04 Feb 2019 14:40:13 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 2D528F2072;
 Mon,  4 Feb 2019 15:40:13 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id xq032yCn_kGR; Mon,  4 Feb 2019 15:40:13 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 08F2EF2065
 for <minios-devel@lists.xen.org>; Mon,  4 Feb 2019 15:40:11 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 4 Feb 2019 15:40:10 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>, <Simon.kuenzer@neclab.eu>,
 <sharan.santhanam@neclab.eu>
Date: Mon, 4 Feb 2019 15:37:39 +0100
Message-ID: <20190204143739.29249-48-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 23/23] lib/vfscore: remove sys
 prefix from vfs api functions
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

RnVjbnRpb25zIHN5cyhtb3VudHx1bW91bnR8dW1vdW50MnxzeW5jKSBhcmUgY29tcGxldGUgZnVu
Y3Rpb24KY2FsbHMuIFVzZXIgYXBwbGljYXRpb25zIHNob3VsZCB1c2UgdGhlbSBkaXJlY3RseSBh
bnl3YXlzLiBMZXQncwpyZW5hbWUgdGhlbSBhY2NvcmRpbmdseS4KClNpZ25lZC1vZmYtYnk6IFl1
cmkgVm9sY2hrb3YgPHl1cmkudm9sY2hrb3ZAbmVjbGFiLmV1PgotLS0KIGxpYi9ub2xpYmMvaW5j
bHVkZS91bmlzdGQuaCB8ICAxICsKIGxpYi92ZnNjb3JlL2V4cG9ydHN5bXMudWsgICB8ICA4ICsr
KystLS0tCiBsaWIvdmZzY29yZS9tb3VudC5jICAgICAgICAgfCAxNCArKysrKystLS0tLS0tLQog
bGliL3Zmc2NvcmUvdmZzLmggICAgICAgICAgIHwgIDUgKy0tLS0KIDQgZmlsZXMgY2hhbmdlZCwg
MTIgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliL25vbGli
Yy9pbmNsdWRlL3VuaXN0ZC5oIGIvbGliL25vbGliYy9pbmNsdWRlL3VuaXN0ZC5oCmluZGV4IDgw
MTNjMTgxLi5hNWQ5OWZjNCAxMDA2NDQKLS0tIGEvbGliL25vbGliYy9pbmNsdWRlL3VuaXN0ZC5o
CisrKyBiL2xpYi9ub2xpYmMvaW5jbHVkZS91bmlzdGQuaApAQCAtNTEsNiArNTEsNyBAQCBleHRl
cm4gIkMiIHsKIGludCBjbG9zZShpbnQgZmQpOwogc3NpemVfdCB3cml0ZShpbnQgZmQsIGNvbnN0
IHZvaWQgKmJ1Ziwgc2l6ZV90IGNvdW50KTsKIHNzaXplX3QgcmVhZChpbnQgZmQsIHZvaWQgKmJ1
Ziwgc2l6ZV90IGNvdW50KTsKK3ZvaWQgc3luYyh2b2lkKTsKIGludCBmc3luYyhpbnQgZmQpOwog
aW50IGR1cChpbnQgb2xkZmQpOwogaW50IGR1cDIoaW50IG9sZGZkLCBpbnQgbmV3ZmQpOwpkaWZm
IC0tZ2l0IGEvbGliL3Zmc2NvcmUvZXhwb3J0c3ltcy51ayBiL2xpYi92ZnNjb3JlL2V4cG9ydHN5
bXMudWsKaW5kZXggNTBiNjIyMDQuLmFkYmMzOWE4IDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9l
eHBvcnRzeW1zLnVrCisrKyBiL2xpYi92ZnNjb3JlL2V4cG9ydHN5bXMudWsKQEAgLTUsNyArNSw3
IEBAIHZmc2NvcmVfZ2V0X2ZpbGUKIGNsb3NlCiB3cml0ZQogcmVhZAotc3lzX21vdW50Cittb3Vu
dAogdmZzY29yZV9udWxsb3AKIHZmc2NvcmVfcmVsZWFzZV9tcF9kZW50cmllcwogdmZzY29yZV92
Z2V0CkBAIC0yNyw3ICsyNyw3IEBAIGR1cAogZHVwMgogZHVwMwogdmZzY29yZV91aW9tb3ZlCi1z
eXNfc3luYworc3luYwogdmZzY29yZV9tb3VudF9kdW1wCi1zeXNfdW1vdW50Ci1zeXNfdW1vdW50
MgordW1vdW50Cit1bW91bnQyCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9tb3VudC5jIGIvbGli
L3Zmc2NvcmUvbW91bnQuYwppbmRleCA2OTQxNzVmMS4uMzlmMDA5YWMgMTAwNjQ0Ci0tLSBhL2xp
Yi92ZnNjb3JlL21vdW50LmMKKysrIGIvbGliL3Zmc2NvcmUvbW91bnQuYwpAQCAtMTA5LDcgKzEw
OSw3IEBAIGludCBkZXZpY2VfY2xvc2Uoc3RydWN0IGRldmljZSAqZGV2KQogfQogCiBpbnQKLXN5
c19tb3VudChjb25zdCBjaGFyICpkZXYsIGNvbnN0IGNoYXIgKmRpciwgY29uc3QgY2hhciAqZnNu
YW1lLCBpbnQgZmxhZ3MsIGNvbnN0IHZvaWQgKmRhdGEpCittb3VudChjb25zdCBjaGFyICpkZXYs
IGNvbnN0IGNoYXIgKmRpciwgY29uc3QgY2hhciAqZnNuYW1lLCBpbnQgZmxhZ3MsIGNvbnN0IHZv
aWQgKmRhdGEpCiB7CiAJY29uc3Qgc3RydWN0IHZmc2NvcmVfZnNfdHlwZSAqZnM7CiAJc3RydWN0
IG1vdW50ICptcDsKQEAgLTEzOCw3ICsxMzgsNyBAQCBzeXNfbW91bnQoY29uc3QgY2hhciAqZGV2
LCBjb25zdCBjaGFyICpkaXIsIGNvbnN0IGNoYXIgKmZzbmFtZSwgaW50IGZsYWdzLCBjb25zdAog
CS8vIFdlIG5lZWQgdG8gYXZvaWQgdGhlIHNpdHVhdGlvbiB3aGVyZSBhZnRlciB3ZSBhbHJlYWR5
IHZlcmlmaWVkIHRoYXQKIAkvLyB0aGUgbW91bnQgcG9pbnQgaXMgZnJlZSwgYnV0IGJlZm9yZSB3
ZSBhY3R1YWxseSBhZGQgaXQgdG8gbW91bnRfbGlzdCwKIAkvLyBhbm90aGVyIGNvbmN1cnJlbnQg
bW91bnQgYWRkcyBpdC4gU28gd2UgdXNlIGEgbmV3IG11dGV4IHRvIGVuc3VyZQotCS8vIHRoYXQg
b25seSBvbmUgc3lzX21vdW50KCkgcnVucyBhdCBhIHRpbWUuIFdlIGNhbm5vdCByZXVzZSB0aGUg
ZXhpc3RpbmcKKwkvLyB0aGF0IG9ubHkgb25lIG1vdW50KCkgcnVucyBhdCBhIHRpbWUuIFdlIGNh
bm5vdCByZXVzZSB0aGUgZXhpc3RpbmcKIAkvLyBtb3VudF9sb2NrIGZvciB0aGlzIHB1cnBvc2U6
IElmIHdlIHRha2UgbW91bnRfbG9jayBhbmQgdGhlbiBkbwogCS8vIGxvb2t1cHMsIHRoaXMgaXMg
bG9jayBvcmRlciBpbnZlcnNpb24gYW5kIGNhbiByZXN1bHQgaW4gZGVhZGxvY2suCiAKQEAgLTI1
NCw3ICsyNTQsNyBAQCB2ZnNjb3JlX3JlbGVhc2VfbXBfZGVudHJpZXMoc3RydWN0IG1vdW50ICpt
cCkKIH0KIAogaW50Ci1zeXNfdW1vdW50Mihjb25zdCBjaGFyICpwYXRoLCBpbnQgZmxhZ3MpCit1
bW91bnQyKGNvbnN0IGNoYXIgKnBhdGgsIGludCBmbGFncykKIHsKIAlzdHJ1Y3QgbW91bnQgKm1w
LCAqdG1wOwogCWludCBlcnJvciwgcGF0aGxlbjsKQEAgLTMwNyw5ICszMDcsOSBAQCBmb3VuZDoK
IH0KIAogaW50Ci1zeXNfdW1vdW50KGNvbnN0IGNoYXIgKnBhdGgpCit1bW91bnQoY29uc3QgY2hh
ciAqcGF0aCkKIHsKLQlyZXR1cm4gc3lzX3Vtb3VudDIocGF0aCwgMCk7CisJcmV0dXJuIHVtb3Vu
dDIocGF0aCwgMCk7CiB9CiAKICNpZiAwCkBAIC0zNjIsOCArMzYyLDcgQEAgc3lzX3Bpdm90X3Jv
b3QoY29uc3QgY2hhciAqbmV3X3Jvb3QsIGNvbnN0IGNoYXIgKnB1dF9vbGQpCiB9CiAjZW5kaWYK
IAotaW50Ci1zeXNfc3luYyh2b2lkKQordm9pZCBzeW5jKHZvaWQpCiB7CiAJc3RydWN0IG1vdW50
ICptcDsKIAl1a19tdXRleF9sb2NrKCZtb3VudF9sb2NrKTsKQEAgLTM3NSw3ICszNzQsNiBAQCBz
eXNfc3luYyh2b2lkKQogI2lmZGVmIEhBVkVfQlVGRkVSUwogCWJpb19zeW5jKCk7CiAjZW5kaWYK
LQlyZXR1cm4gMDsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3Zmcy5oIGIvbGli
L3Zmc2NvcmUvdmZzLmgKaW5kZXggNGExY2ZhOWYuLjgxYTYxZDc1IDEwMDY0NAotLS0gYS9saWIv
dmZzY29yZS92ZnMuaAorKysgYi9saWIvdmZzY29yZS92ZnMuaApAQCAtMTExLDExICsxMTEsOCBA
QCBpbnQgIHN5c191dGltZW5zYXQoaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwKIGlu
dCAgc3lzX2Z1dGltZW5zKGludCBmZCwgY29uc3Qgc3RydWN0IHRpbWVzcGVjIHRpbWVzWzJdKTsK
IGludCAgc3lzX2ZhbGxvY2F0ZShzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCwgaW50IG1vZGUsIGxv
ZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4pOwogCi1pbnQJIHN5c19tb3VudChjb25zdCBjaGFyICpk
ZXYsIGNvbnN0IGNoYXIgKmRpciwgY29uc3QgY2hhciAqZnNuYW1lLCBpbnQgZmxhZ3MsIGNvbnN0
IHZvaWQgKmRhdGEpOwotaW50CSBzeXNfdW1vdW50Mihjb25zdCBjaGFyICpwYXRoLCBpbnQgZmxh
Z3MpOwotaW50CSBzeXNfdW1vdW50KGNvbnN0IGNoYXIgKnBhdGgpOwogaW50CSBzeXNfcGl2b3Rf
cm9vdChjb25zdCBjaGFyICpuZXdfcm9vdCwgY29uc3QgY2hhciAqb2xkX3B1dCk7Ci1pbnQJIHN5
c19zeW5jKHZvaWQpOwordm9pZAkgc3luYyh2b2lkKTsKIGludAkgc3lzX2NobW9kKGNvbnN0IGNo
YXIgKnBhdGgsIG1vZGVfdCBtb2RlKTsKIGludAkgc3lzX2ZjaG1vZChpbnQgZmQsIG1vZGVfdCBt
b2RlKTsKIAotLSAKMi4xOS4yCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMu
eGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3Rp
bmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Feb 04 14:40:25 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 04 Feb 2019 14:40:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gqfQ9-0007H5-Di; Mon, 04 Feb 2019 14:40:25 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Kl24=QL=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gqfQ7-0007Gr-R2
 for minios-devel@lists.xen.org; Mon, 04 Feb 2019 14:40:23 +0000
X-Inumbo-ID: c67d0e6d-288a-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id c67d0e6d-288a-11e9-bc90-bc764e045a96;
 Mon, 04 Feb 2019 14:40:22 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id EA570F2071;
 Mon,  4 Feb 2019 15:40:07 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id Bet_-E-EumPk; Mon,  4 Feb 2019 15:40:07 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id C1B91F2065
 for <minios-devel@lists.xen.org>; Mon,  4 Feb 2019 15:40:05 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 4 Feb 2019 15:40:05 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>, <Simon.kuenzer@neclab.eu>,
 <sharan.santhanam@neclab.eu>
Date: Mon, 4 Feb 2019 15:37:37 +0100
Message-ID: <20190204143739.29249-46-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 21/23] lib/nolibc: add prototypes
 for functions from vfscore
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogbGliL25vbGliYy9pbmNsdWRlL3VuaXN0ZC5oIHwgNCArKysrCiAxIGZpbGUgY2hhbmdlZCwg
NCBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvbGliL25vbGliYy9pbmNsdWRlL3VuaXN0ZC5o
IGIvbGliL25vbGliYy9pbmNsdWRlL3VuaXN0ZC5oCmluZGV4IDA5ZTdkN2ExLi44MDEzYzE4MSAx
MDA2NDQKLS0tIGEvbGliL25vbGliYy9pbmNsdWRlL3VuaXN0ZC5oCisrKyBiL2xpYi9ub2xpYmMv
aW5jbHVkZS91bmlzdGQuaApAQCAtNTEsNiArNTEsMTAgQEAgZXh0ZXJuICJDIiB7CiBpbnQgY2xv
c2UoaW50IGZkKTsKIHNzaXplX3Qgd3JpdGUoaW50IGZkLCBjb25zdCB2b2lkICpidWYsIHNpemVf
dCBjb3VudCk7CiBzc2l6ZV90IHJlYWQoaW50IGZkLCB2b2lkICpidWYsIHNpemVfdCBjb3VudCk7
CitpbnQgZnN5bmMoaW50IGZkKTsKK2ludCBkdXAoaW50IG9sZGZkKTsKK2ludCBkdXAyKGludCBv
bGRmZCwgaW50IG5ld2ZkKTsKK2ludCBkdXAzKGludCBvbGRmZCwgaW50IG5ld2ZkLCBpbnQgZmxh
Z3MpOwogI2VuZGlmCiAKICNpZmRlZiBfX2NwbHVzcGx1cwotLSAKMi4xOS4yCgoKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxp
bmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54
ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Feb 04 14:43:16 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 04 Feb 2019 14:43:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gqfSt-0007Qq-3l; Mon, 04 Feb 2019 14:43:15 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Kl24=QL=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gqfSq-0007Ql-UP
 for minios-devel@lists.xen.org; Mon, 04 Feb 2019 14:43:12 +0000
X-Inumbo-ID: 317b6e78-288b-11e9-b984-671bcc92d8af
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 317b6e78-288b-11e9-b984-671bcc92d8af;
 Mon, 04 Feb 2019 14:43:11 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 6C57AF2066;
 Mon,  4 Feb 2019 15:38:05 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id ifyVVjrr5Tmz; Mon,  4 Feb 2019 15:38:05 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 490C0F2065
 for <minios-devel@lists.xen.org>; Mon,  4 Feb 2019 15:38:03 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 4 Feb 2019 15:38:02 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>, <Simon.kuenzer@neclab.eu>,
 <sharan.santhanam@neclab.eu>
Date: Mon, 4 Feb 2019 15:36:54 +0100
Message-ID: <20190204143739.29249-3-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 02/23] lib/nolibc: import mount.h
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

dGFnOiB2MS4xLjIwCmNvbW1pdDogMGZhMWU2MzhlODdjZjI1N2U5Zjk2YjQwMTliMjA3NmFmZDY3
NGExOQoKU2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIu
ZXU+Ci0tLQogbGliL25vbGliYy9pbmNsdWRlL3N5cy9tb3VudC5oIHwgNzQgKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDc0IGluc2VydGlvbnMoKykK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvbm9saWJjL2luY2x1ZGUvc3lzL21vdW50LmgKCmRpZmYg
LS1naXQgYS9saWIvbm9saWJjL2luY2x1ZGUvc3lzL21vdW50LmggYi9saWIvbm9saWJjL2luY2x1
ZGUvc3lzL21vdW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjU3YTg5
YzA5Ci0tLSAvZGV2L251bGwKKysrIGIvbGliL25vbGliYy9pbmNsdWRlL3N5cy9tb3VudC5oCkBA
IC0wLDAgKzEsNzQgQEAKKyNpZm5kZWYgX1NZU19NT1VOVF9ICisjZGVmaW5lIF9TWVNfTU9VTlRf
SAorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKyNpbmNsdWRl
IDxzeXMvaW9jdGwuaD4KKworI2RlZmluZSBCTEtST1NFVCAgIF9JTygweDEyLCA5MykKKyNkZWZp
bmUgQkxLUk9HRVQgICBfSU8oMHgxMiwgOTQpCisjZGVmaW5lIEJMS1JSUEFSVCAgX0lPKDB4MTIs
IDk1KQorI2RlZmluZSBCTEtHRVRTSVpFIF9JTygweDEyLCA5NikKKyNkZWZpbmUgQkxLRkxTQlVG
ICBfSU8oMHgxMiwgOTcpCisjZGVmaW5lIEJMS1JBU0VUICAgX0lPKDB4MTIsIDk4KQorI2RlZmlu
ZSBCTEtSQUdFVCAgIF9JTygweDEyLCA5OSkKKyNkZWZpbmUgQkxLRlJBU0VUICBfSU8oMHgxMiwx
MDApCisjZGVmaW5lIEJMS0ZSQUdFVCAgX0lPKDB4MTIsMTAxKQorI2RlZmluZSBCTEtTRUNUU0VU
IF9JTygweDEyLDEwMikKKyNkZWZpbmUgQkxLU0VDVEdFVCBfSU8oMHgxMiwxMDMpCisjZGVmaW5l
IEJMS1NTWkdFVCAgX0lPKDB4MTIsMTA0KQorI2RlZmluZSBCTEtCU1pHRVQgIF9JT1IoMHgxMiwx
MTIsc2l6ZV90KQorI2RlZmluZSBCTEtCU1pTRVQgIF9JT1coMHgxMiwxMTMsc2l6ZV90KQorI2Rl
ZmluZSBCTEtHRVRTSVpFNjQgX0lPUigweDEyLDExNCxzaXplX3QpCisKKyNkZWZpbmUgTVNfUkRP
TkxZICAgICAgMQorI2RlZmluZSBNU19OT1NVSUQgICAgICAyCisjZGVmaW5lIE1TX05PREVWICAg
ICAgIDQKKyNkZWZpbmUgTVNfTk9FWEVDICAgICAgOAorI2RlZmluZSBNU19TWU5DSFJPTk9VUyAx
NgorI2RlZmluZSBNU19SRU1PVU5UICAgICAzMgorI2RlZmluZSBNU19NQU5ETE9DSyAgICA2NAor
I2RlZmluZSBNU19ESVJTWU5DICAgICAxMjgKKyNkZWZpbmUgTVNfTk9BVElNRSAgICAgMTAyNAor
I2RlZmluZSBNU19OT0RJUkFUSU1FICAyMDQ4CisjZGVmaW5lIE1TX0JJTkQgICAgICAgIDQwOTYK
KyNkZWZpbmUgTVNfTU9WRSAgICAgICAgODE5MgorI2RlZmluZSBNU19SRUMgICAgICAgICAxNjM4
NAorI2RlZmluZSBNU19TSUxFTlQgICAgICAzMjc2OAorI2RlZmluZSBNU19QT1NJWEFDTCAgICAo
MTw8MTYpCisjZGVmaW5lIE1TX1VOQklOREFCTEUgICgxPDwxNykKKyNkZWZpbmUgTVNfUFJJVkFU
RSAgICAgKDE8PDE4KQorI2RlZmluZSBNU19TTEFWRSAgICAgICAoMTw8MTkpCisjZGVmaW5lIE1T
X1NIQVJFRCAgICAgICgxPDwyMCkKKyNkZWZpbmUgTVNfUkVMQVRJTUUgICAgKDE8PDIxKQorI2Rl
ZmluZSBNU19LRVJOTU9VTlQgICAoMTw8MjIpCisjZGVmaW5lIE1TX0lfVkVSU0lPTiAgICgxPDwy
MykKKyNkZWZpbmUgTVNfU1RSSUNUQVRJTUUgKDE8PDI0KQorI2RlZmluZSBNU19MQVpZVElNRSAg
ICAoMTw8MjUpCisjZGVmaW5lIE1TX05PUkVNT1RFTE9DSyAoMTw8MjcpCisjZGVmaW5lIE1TX05P
U0VDICAgICAgICgxPDwyOCkKKyNkZWZpbmUgTVNfQk9STiAgICAgICAgKDE8PDI5KQorI2RlZmlu
ZSBNU19BQ1RJVkUgICAgICAoMTw8MzApCisjZGVmaW5lIE1TX05PVVNFUiAgICAgICgxVTw8MzEp
CisKKyNkZWZpbmUgTVNfUk1UX01BU0sgKE1TX1JET05MWXxNU19TWU5DSFJPTk9VU3xNU19NQU5E
TE9DS3xNU19JX1ZFUlNJT058TVNfTEFaWVRJTUUpCisKKyNkZWZpbmUgTVNfTUdDX1ZBTCAweGMw
ZWQwMDAwCisjZGVmaW5lIE1TX01HQ19NU0sgMHhmZmZmMDAwMAorCisjZGVmaW5lIE1OVF9GT1JD
RSAgICAgICAxCisjZGVmaW5lIE1OVF9ERVRBQ0ggICAgICAyCisjZGVmaW5lIE1OVF9FWFBJUkUg
ICAgICA0CisjZGVmaW5lIFVNT1VOVF9OT0ZPTExPVyA4CisKK2ludCBtb3VudChjb25zdCBjaGFy
ICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCB1bnNpZ25lZCBsb25nLCBjb25zdCB2b2lk
ICopOworaW50IHVtb3VudChjb25zdCBjaGFyICopOworaW50IHVtb3VudDIoY29uc3QgY2hhciAq
LCBpbnQpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYKLS0gCjIu
MTkuMgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1p
bmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3Jn
Cmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2
ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Feb 04 14:43:27 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 04 Feb 2019 14:43:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gqfT5-0007Rs-6K; Mon, 04 Feb 2019 14:43:27 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Kl24=QL=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gqfT3-0007Rh-LV
 for minios-devel@lists.xen.org; Mon, 04 Feb 2019 14:43:25 +0000
X-Inumbo-ID: 377be064-288b-11e9-b3b3-bb88d7806650
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 377be064-288b-11e9-b3b3-bb88d7806650;
 Mon, 04 Feb 2019 14:43:21 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 11A13104D60;
 Mon,  4 Feb 2019 15:38:19 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id aee94ZPIoWQE; Mon,  4 Feb 2019 15:38:18 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id D38E0104BDB
 for <minios-devel@lists.xen.org>; Mon,  4 Feb 2019 15:38:16 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 4 Feb 2019 15:38:16 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>, <Simon.kuenzer@neclab.eu>,
 <sharan.santhanam@neclab.eu>
Date: Mon, 4 Feb 2019 15:36:59 +0100
Message-ID: <20190204143739.29249-8-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 07/23] lib/vfscore: remove
 obvious c++isms and irrelevant code
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U29tZSBjKytpc21zIGFyZSBrZWVwIGJlY2F1c2UgYmlnZ2VyIHBpZWNlcyBuZWVkZWQgdG8gYmUg
cmVkb25lIGFyb3VuZAp0aGVtLgoKU29tZSBjb2RlIGlzIGp1c3QgZGlzYWJsZWQgd2l0aCAjaWYg
MCwgYXMgd2Ugd2lsbCBtYWtlIHVzZSBvZiBpdCBsYXRlcgoKU2lnbmVkLW9mZi1ieTogWXVyaSBW
b2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0tLQogbGliL3Zmc2NvcmUvZm9wcy5j
ICAgICAgICAgICAgICAgICAgIHwgIDkxICstLS0tLQogbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNj
b3JlL2RlbnRyeS5oIHwgIDE2IC0KIGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9tb3VudC5o
ICB8ICAyNiAtLQogbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3ByZXguaCAgIHwgICA2IC0K
IGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS91aW8uaCAgICB8ICAyNiAtLQogbGliL3Zmc2Nv
cmUvaW5jbHVkZS92ZnNjb3JlL3Zub2RlLmggIHwgICA0IC0KIGxpYi92ZnNjb3JlL2xvb2t1cC5j
ICAgICAgICAgICAgICAgICB8ICA1MSArKy0KIGxpYi92ZnNjb3JlL21haW4uYyAgICAgICAgICAg
ICAgICAgICB8IDQ2OSArKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGxpYi92ZnNjb3JlL21v
dW50LmMgICAgICAgICAgICAgICAgICB8ICA0NyArLS0KIGxpYi92ZnNjb3JlL3N5c2NhbGxzLmMg
ICAgICAgICAgICAgICB8IDExOCArKysrLS0tCiBsaWIvdmZzY29yZS90YXNrLmMgICAgICAgICAg
ICAgICAgICAgfCAgMTcgLQogbGliL3Zmc2NvcmUvdmZzLmggICAgICAgICAgICAgICAgICAgIHwg
IDIzIC0tCiBsaWIvdmZzY29yZS92bm9kZS5jICAgICAgICAgICAgICAgICAgfCAgIDMgKy0KIDEz
IGZpbGVzIGNoYW5nZWQsIDE1NSBpbnNlcnRpb25zKCspLCA3NDIgZGVsZXRpb25zKC0pCgpkaWZm
IC0tZ2l0IGEvbGliL3Zmc2NvcmUvZm9wcy5jIGIvbGliL3Zmc2NvcmUvZm9wcy5jCmluZGV4IGE5
NGNhNDUyLi5mMWMxNjFlNyAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvZm9wcy5jCisrKyBiL2xp
Yi92ZnNjb3JlL2ZvcHMuYwpAQCAtNDIsMTQgKzQyLDggQEAKICNpbmNsdWRlIDxvc3YvbW11Lmho
PgogI2luY2x1ZGUgPG9zdi9wYWdlY2FjaGUuaGg+CiAKLXZmc19maWxlOjp2ZnNfZmlsZSh1bnNp
Z25lZCBmbGFncykKLQk6IGZpbGUoZmxhZ3MsIERUWVBFX1ZOT0RFKQoraW50IHZmc19jbG9zZShz
dHJ1Y3QgdmZzY29yZV9maWxlICpmcCkKIHsKLX0KLQotaW50IHZmc19maWxlOjpjbG9zZSgpCi17
Ci0JYXV0byBmcCA9IHRoaXM7CiAJc3RydWN0IHZub2RlICp2cCA9IGZwLT5mX2RlbnRyeS0+ZF92
bm9kZTsKIAlpbnQgZXJyb3I7CiAKQEAgLTYwLDEzICs1NCwxNCBAQCBpbnQgdmZzX2ZpbGU6OmNs
b3NlKCkKIAlpZiAoZXJyb3IpCiAJCXJldHVybiBlcnJvcjsKIAotCWZwLT5mX2RlbnRyeS5yZXNl
dCgpOworCS8qIERlbnRyeSBzdGF5cyBmb3JldmVyIGluIHRoZSBkZW50cnkgY2FjaGUuIFVubGVz
cyB0aGUKKwkgKiBmaWxlL2RpcmVjdG9yeSBpdCByZWZlcnMgdG8gZ2V0cyBkZWxldGVkL3JlbmFt
ZWQgKi8KKwlmcC0+Zl9kZW50cnkgPSBOVUxMOwogCXJldHVybiAwOwogfQogCi1pbnQgdmZzX2Zp
bGU6OnJlYWQoc3RydWN0IHVpbyAqdWlvLCBpbnQgZmxhZ3MpCitpbnQgdmZzX3JlYWQoc3RydWN0
IHZmc2NvcmVfZmlsZSAqZnAsIHN0cnVjdCB1aW8gKnVpbywgaW50IGZsYWdzKQogewotCWF1dG8g
ZnAgPSB0aGlzOwogCXN0cnVjdCB2bm9kZSAqdnAgPSBmcC0+Zl9kZW50cnktPmRfdm5vZGU7CiAJ
aW50IGVycm9yOwogCXNpemVfdCBjb3VudDsKQEAgLTkwLDkgKzg1LDggQEAgaW50IHZmc19maWxl
OjpyZWFkKHN0cnVjdCB1aW8gKnVpbywgaW50IGZsYWdzKQogfQogCiAKLWludCB2ZnNfZmlsZTo6
d3JpdGUoc3RydWN0IHVpbyAqdWlvLCBpbnQgZmxhZ3MpCitpbnQgdmZzX3dyaXRlKHN0cnVjdCB2
ZnNjb3JlX2ZpbGUgKmZwLCBzdHJ1Y3QgdWlvICp1aW8sIGludCBmbGFncykKIHsKLQlhdXRvIGZw
ID0gdGhpczsKIAlzdHJ1Y3Qgdm5vZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOwogCWlu
dCBpb2ZsYWdzID0gMDsKIAlpbnQgZXJyb3I7CkBAIC0xMjIsOSArMTE2LDggQEAgaW50IHZmc19m
aWxlOjp3cml0ZShzdHJ1Y3QgdWlvICp1aW8sIGludCBmbGFncykKIAlyZXR1cm4gZXJyb3I7CiB9
CiAKLWludCB2ZnNfZmlsZTo6aW9jdGwodV9sb25nIGNvbSwgdm9pZCAqZGF0YSkKK2ludCB2ZnNf
aW9jdGwoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAsIHVfbG9uZyBjb20sIHZvaWQgKmRhdGEpCiB7
Ci0JYXV0byBmcCA9IHRoaXM7CiAJc3RydWN0IHZub2RlICp2cCA9IGZwLT5mX2RlbnRyeS0+ZF92
bm9kZTsKIAlpbnQgZXJyb3I7CiAKQEAgLTEzNSw5ICsxMjgsOCBAQCBpbnQgdmZzX2ZpbGU6Omlv
Y3RsKHVfbG9uZyBjb20sIHZvaWQgKmRhdGEpCiAJcmV0dXJuIGVycm9yOwogfQogCi1pbnQgdmZz
X2ZpbGU6OnN0YXQoc3RydWN0IHN0YXQgKnN0KQoraW50IHZmc19zdGF0KHN0cnVjdCB2ZnNjb3Jl
X2ZpbGUgKmZwLCBzdHJ1Y3Qgc3RhdCAqc3QpCiB7Ci0JYXV0byBmcCA9IHRoaXM7CiAJc3RydWN0
IHZub2RlICp2cCA9IGZwLT5mX2RlbnRyeS0+ZF92bm9kZTsKIAlpbnQgZXJyb3I7CiAKQEAgLTE0
Nyw3MCArMTM5LDMgQEAgaW50IHZmc19maWxlOjpzdGF0KHN0cnVjdCBzdGF0ICpzdCkKIAogCXJl
dHVybiBlcnJvcjsKIH0KLQotaW50IHZmc19maWxlOjpwb2xsKGludCBldmVudHMpCi17Ci0JcmV0
dXJuIHBvbGxfbm9fcG9sbChldmVudHMpOwotfQotCi1pbnQgdmZzX2ZpbGU6OnRydW5jYXRlKG9m
Zl90IGxlbikKLXsKLQkvLyBzb21laG93IHRoaXMgaXMgaGFuZGxlZCBvdXRzaWRlIGZpbGUgb3Bz
Ci0JYWJvcnQoKTsKLX0KLQotaW50IHZmc19maWxlOjpjaG1vZChtb2RlX3QgbW9kZSkKLXsKLQkv
LyBzb21laG93IHRoaXMgaXMgaGFuZGxlZCBvdXRzaWRlIGZpbGUgb3BzCi0JYWJvcnQoKTsKLX0K
LQotYm9vbCB2ZnNfZmlsZTo6bWFwX3BhZ2UodWludHB0cl90IG9mZiwgbW11Ojpod19wdGVwPDA+
IHB0ZXAsIG1tdTo6cHRfZWxlbWVudDwwPiBwdGUsIGJvb2wgd3JpdGUsIGJvb2wgc2hhcmVkKQot
ewotCXJldHVybiBwYWdlY2FjaGU6OmdldCh0aGlzLCBvZmYsIHB0ZXAsIHB0ZSwgd3JpdGUsIHNo
YXJlZCk7Ci19Ci0KLWJvb2wgdmZzX2ZpbGU6OnB1dF9wYWdlKHZvaWQgKmFkZHIsIHVpbnRwdHJf
dCBvZmYsIG1tdTo6aHdfcHRlcDwwPiBwdGVwKQotewotCXJldHVybiBwYWdlY2FjaGU6OnJlbGVh
c2UodGhpcywgYWRkciwgb2ZmLCBwdGVwKTsKLX0KLQotdm9pZCB2ZnNfZmlsZTo6c3luYyhvZmZf
dCBzdGFydCwgb2ZmX3QgZW5kKQotewotCXBhZ2VjYWNoZTo6c3luYyh0aGlzLCBzdGFydCwgZW5k
KTsKLX0KLQotLy8gTG9ja2luZzogVk9QX0NBQ0hFIHdpbGwgY2FsbCBpbnRvIHRoZSBmaWxlc3lz
dGVtLCBhbmQgdGhhdCBjYW4gdHJpZ2dlciBhbgotLy8gZXZpY3Rpb24gdGhhdCB3aWxsIGhvbGQg
dGhlIG1tdS1zaWRlIGxvY2sgdGhhdCBwcm90ZWN0cyB0aGUgbWFwcGluZ3MKLS8vIEFsd2F5cyBm
b2xsb3cgdGhhdCBvcmRlci4gV2UgaG93ZXZlciBjYW4ndCBqdXN0IGdldCByaWQgb2YgdGhlIG1t
dS1zaWRlIGxvY2ssCi0vLyBiZWNhdXNlIG5vdCBhbGwgaW52YWxpZGF0aW9ucyB3aWxsIGJlIHN5
bmNocm9ub3VzLgotaW50IHZmc19maWxlOjpnZXRfYXJjYnVmKHZvaWQqIGtleSwgb2ZmX3Qgb2Zm
c2V0KQotewotCXN0cnVjdCB2bm9kZSAqdnAgPSBmX2RlbnRyeS0+ZF92bm9kZTsKLQotCWlvdmVj
IGlvWzFdOwotCi0JaW9bMF0uaW92X2Jhc2UgPSBrZXk7Ci0JdWlvIGRhdGE7Ci0JZGF0YS51aW9f
aW92ID0gaW87Ci0JZGF0YS51aW9faW92Y250ID0gMTsKLQlkYXRhLnVpb19vZmZzZXQgPSBvZmZz
ZXQ7Ci0JZGF0YS51aW9fcmVzaWQgPSBtbXU6OnBhZ2Vfc2l6ZTsKLQlkYXRhLnVpb19ydyA9IFVJ
T19SRUFEOwotCi0Jdm5fbG9jayh2cCk7Ci0JYXNzZXJ0KFZPUF9DQUNIRSh2cCwgdGhpcywgJmRh
dGEpID09IDApOwotCXZuX3VubG9jayh2cCk7Ci0KLQlyZXR1cm4gKGRhdGEudWlvX3Jlc2lkICE9
IDApID8gLTEgOiAwOwotfQotCi1zdGQ6OnVuaXF1ZV9wdHI8bW11OjpmaWxlX3ZtYT4gdmZzX2Zp
bGU6Om1tYXAoYWRkcl9yYW5nZSByYW5nZSwgdW5zaWduZWQgZmxhZ3MsIHVuc2lnbmVkIHBlcm0s
IG9mZl90IG9mZnNldCkKLXsKLQlhdXRvIGZwID0gdGhpczsKLQlzdHJ1Y3Qgdm5vZGUgKnZwID0g
ZnAtPmZfZGVudHJ5LT5kX3Zub2RlOwotCWlmICghdnAtPnZfb3AtPnZvcF9jYWNoZSB8fCAodnAt
PnZfc2l6ZSA8IChvZmZfdCltbXU6OnBhZ2Vfc2l6ZSkpIHsKLQkJcmV0dXJuIG1tdTo6ZGVmYXVs
dF9maWxlX21tYXAodGhpcywgcmFuZ2UsIGZsYWdzLCBwZXJtLCBvZmZzZXQpOwotCX0KLQlyZXR1
cm4gbW11OjptYXBfZmlsZV9tbWFwKHRoaXMsIHJhbmdlLCBmbGFncywgcGVybSwgb2Zmc2V0KTsK
LX0KZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9kZW50cnkuaCBiL2xp
Yi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9kZW50cnkuaAppbmRleCAyZDJlYWExYi4uOWNmZThk
YWMgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9kZW50cnkuaAorKysg
Yi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZGVudHJ5LmgKQEAgLTU0LDIwICs1NCw0IEBA
IHN0cnVjdCBkZW50cnkgewogCUxJU1RfRU5UUlkoZGVudHJ5KSBkX2NoaWxkcmVuX2xpbms7CiB9
OwogCi0jaWZkZWYgX19jcGx1c3BsdXMKLQotI2luY2x1ZGUgPGJvb3N0L2ludHJ1c2l2ZV9wdHIu
aHBwPgotCi11c2luZyBkZW50cnlfcmVmID0gYm9vc3Q6OmludHJ1c2l2ZV9wdHI8ZGVudHJ5PjsK
LQotZXh0ZXJuICJDIiB7Ci0Jdm9pZCBkcmVmKHN0cnVjdCBkZW50cnkqIGRwKTsKLQl2b2lkIGRy
ZWxlKHN0cnVjdCBkZW50cnkqIGRwKTsKLX07Ci0KLWlubGluZSB2b2lkIGludHJ1c2l2ZV9wdHJf
YWRkX3JlZihkZW50cnkqIGRwKSB7IGRyZWYoZHApOyB9Ci1pbmxpbmUgdm9pZCBpbnRydXNpdmVf
cHRyX3JlbGVhc2UoZGVudHJ5KiBkcCkgeyBkcmVsZShkcCk7IH0KLQotI2VuZGlmCi0KICNlbmRp
ZiAvKiBfT1NWX0RFTlRSWV9IICovCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zm
c2NvcmUvbW91bnQuaCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9tb3VudC5oCmluZGV4
IDBlNzg5MjlmLi5iNjhkM2M5OCAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNj
b3JlL21vdW50LmgKKysrIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmgKQEAg
LTM3LDggKzM3LDYgQEAKICNpbmNsdWRlIDxvc3Yvdm5vZGUuaD4KICNpbmNsdWRlIDxic2Qvc3lz
L3N5cy9xdWV1ZS5oPgogCi1fX0JFR0lOX0RFQ0xTCi0KICNpZmRlZiBfS0VSTkVMCiAKIC8qCkBA
IC0xNDQsMjggKzE0Miw0IEBAIHZvaWQJIHZmc191bmJ1c3koc3RydWN0IG1vdW50ICptcCk7CiAK
IHZvaWQJIHJlbGVhc2VfbXBfZGVudHJpZXMoc3RydWN0IG1vdW50ICptcCk7CiAKLSNlbmRpZgot
Ci1fX0VORF9ERUNMUwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLQotI2luY2x1ZGUgPHZlY3Rvcj4K
LSNpbmNsdWRlIDxzdHJpbmc+Ci0KLW5hbWVzcGFjZSBvc3YgewotCi1zdHJ1Y3QgbW91bnRfZGVz
YyB7Ci0Jc3RkOjpzdHJpbmcgc3BlY2lhbDsKLQlzdGQ6OnN0cmluZyBwYXRoOwotCXN0ZDo6c3Ry
aW5nIHR5cGU7Ci0Jc3RkOjpzdHJpbmcgb3B0aW9uczsKLX07Ci0KLXN0ZDo6dmVjdG9yPG1vdW50
X2Rlc2M+IGN1cnJlbnRfbW91bnRzKCk7Ci0KLX0KLQotI2VuZGlmCi0KICNlbmRpZgkvKiAhX1NZ
U19NT1VOVF9IXyAqLwpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3By
ZXguaCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9wcmV4LmgKaW5kZXggN2IwNTMzMTku
LjZjYmUzMTMwIDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvcHJleC5o
CisrKyBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9wcmV4LmgKQEAgLTQwLDEwICs0MCw2
IEBACiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAjaW5jbHVkZSA8b3N2L2ZjbnRsLmg+CiAKLV9fQkVH
SU5fREVDTFMKLQotI2RlZmluZSBfX3BhY2tlZCAgICAgICAgX19hdHRyaWJ1dGVfXygoX19wYWNr
ZWRfXykpCi0KICNkZWZpbmUJQlNJWkUJNTEyCQkvKiBzaXplIG9mIHNlY29uZGFyeSBibG9jayAo
Ynl0ZXMpICovCiAKICNkZWZpbmUgRE9fUkRXUgkJMHgyCkBAIC01Nyw2ICs1Myw0IEBAIHNpemVf
dCBzdHJsY3B5KGNoYXIgKmRzdCwgY29uc3QgY2hhciAqc3JjLCBzaXplX3Qgc2l6KTsKIAogdm9p
ZCBzeXNfcGFuaWMoY29uc3QgY2hhciAqKTsKIAotX19FTkRfREVDTFMKLQogI2VuZGlmIC8qIF9P
U1ZfUFJFWF9IICovCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdWlv
LmggYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdWlvLmgKaW5kZXggNjk2YjAxY2YuLmQ3
ZjdmY2U5IDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdWlvLmgKKysr
IGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Vpby5oCkBAIC0zOCw4ICszOCw2IEBACiAj
aW5jbHVkZSA8c3lzL3Vpby5oPgogI2luY2x1ZGUgPGxpbWl0cy5oPgogCi1fX0JFR0lOX0RFQ0xT
Ci0KIGVudW0JdWlvX3J3IHsgVUlPX1JFQUQsIFVJT19XUklURSB9OwogCiAvKgpAQCAtNjIsMjgg
KzYwLDQgQEAgc3RydWN0IHVpbyB7CiAKIGludAl1aW9tb3ZlKHZvaWQgKmNwLCBpbnQgbiwgc3Ry
dWN0IHVpbyAqdWlvKTsKIAotX19FTkRfREVDTFMKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi0KLXRl
bXBsYXRlIDx0eXBlbmFtZSBGPgotc3RhdGljIGlubGluZSB2b2lkIGxpbmVhcml6ZV91aW9fd3Jp
dGUoc3RydWN0IHVpbyAqdWlvLCBpbnQgaW9mbGFnLCBGIGYpCi17Ci0gICAgd2hpbGUgKHVpby0+
dWlvX3Jlc2lkID4gMCkgewotICAgICAgICBzdHJ1Y3QgaW92ZWMgKmlvdiA9IHVpby0+dWlvX2lv
djsKLQotICAgICAgICBpZiAoaW92LT5pb3ZfbGVuKSB7Ci0gICAgICAgICAgICBmKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhciAqPihpb3YtPmlvdl9iYXNlKSwKLSAgICAgICAgICAgICAgICBp
b3YtPmlvdl9sZW4pOwotICAgICAgICB9Ci0KLSAgICAgICAgdWlvLT51aW9faW92Kys7Ci0gICAg
ICAgIHVpby0+dWlvX2lvdmNudC0tOwotICAgICAgICB1aW8tPnVpb19yZXNpZCAtPSBpb3YtPmlv
dl9sZW47Ci0gICAgICAgIHVpby0+dWlvX29mZnNldCArPSBpb3YtPmlvdl9sZW47Ci0gICAgfQot
fQotCi0jZW5kaWYKLQogI2VuZGlmIC8qICFfVUlPX0hfICovCmRpZmYgLS1naXQgYS9saWIvdmZz
Y29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUuaCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29y
ZS92bm9kZS5oCmluZGV4IDQ4NzRmMWI5Li5kMzBhOTQxMSAxMDA2NDQKLS0tIGEvbGliL3Zmc2Nv
cmUvaW5jbHVkZS92ZnNjb3JlL3Zub2RlLmgKKysrIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNj
b3JlL3Zub2RlLmgKQEAgLTQzLDggKzQzLDYgQEAKICNpbmNsdWRlICJmaWxlLmgiCiAjaW5jbHVk
ZSAiZGlyZW50LmgiCiAKLV9fQkVHSU5fREVDTFMKLQogc3RydWN0IHZmc29wczsKIHN0cnVjdCB2
bm9wczsKIHN0cnVjdCB2bm9kZTsKQEAgLTI0Miw4ICsyNDAsNiBAQCBzdGF0aWMgaW5saW5lIHZv
aWQgdm5vZGVfcGFnZXJfc2V0c2l6ZShzdHJ1Y3Qgdm5vZGUgKnZwLCBvZmZfdCBzaXplKQogCXZw
LT52X3NpemUgPSBzaXplOwogfQogCi1fX0VORF9ERUNMUwotCiAjZW5kaWYKIAogI2VuZGlmIC8q
ICFfU1lTX1ZOT0RFX0hfICovCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9sb29rdXAuYyBiL2xp
Yi92ZnNjb3JlL2xvb2t1cC5jCmluZGV4IDBhYTVjYTNiLi5mN2EzOGM0ZiAxMDA2NDQKLS0tIGEv
bGliL3Zmc2NvcmUvbG9va3VwLmMKKysrIGIvbGliL3Zmc2NvcmUvbG9va3VwLmMKQEAgLTYzLDMz
ICs2MywzMSBAQCByZWFkX2xpbmsoc3RydWN0IHZub2RlICp2cCwgY2hhciAqYnVmLCBzaXplX3Qg
YnVmc3osIHNzaXplX3QgKnN6KQogaW50CiBuYW1laV9mb2xsb3dfbGluayhzdHJ1Y3QgZGVudHJ5
ICpkcCwgY2hhciAqbm9kZSwgY2hhciAqbmFtZSwgY2hhciAqZnAsIHNpemVfdCBtb3VudHBvaW50
X2xlbikKIHsKLQlzdGQ6OnVuaXF1ZV9wdHI8Y2hhciBbXT4gbGluayAobmV3IGNoYXJbUEFUSF9N
QVhdKTsKLQlzdGQ6OnVuaXF1ZV9wdHI8Y2hhciBbXT4gdCAobmV3IGNoYXJbUEFUSF9NQVhdKTsK
LQljaGFyICAgICpscDsKKwljaGFyIGxpbmtbUEFUSF9NQVhdOworCWNoYXIgdFtQQVRIX01BWF07
CiAJaW50ICAgICBlcnJvcjsKIAlzc2l6ZV90IHN6OwogCWNoYXIgICAgKnA7CiAJaW50ICAgICBj
OwogCi0JbHAgICAgPSBsaW5rLmdldCgpOwotCWVycm9yID0gcmVhZF9saW5rKGRwLT5kX3Zub2Rl
LCBscCwgUEFUSF9NQVgsICZzeik7CisJZXJyb3IgPSByZWFkX2xpbmsoZHAtPmRfdm5vZGUsIGxp
bmssIFBBVEhfTUFYLCAmc3opOwogCWlmIChlcnJvciAhPSAwKSB7CiAJCXJldHVybiAoZXJyb3Ip
OwogCX0KLQlscFtzel0gPSAwOworCWxpbmtbc3pdID0gMDsKIAogCXAgPSBmcCArIG1vdW50cG9p
bnRfbGVuICsgc3RybGVuKG5vZGUpOwogCWMgPSBzdHJsZW4obm9kZSkgLSBzdHJsZW4obmFtZSkg
LSAxOwogCW5vZGVbY10gPSAwOwogCi0JaWYgKGxwWzBdID09ICcvJykgewotCQlzdHJsY2F0KGxw
LCBwLCBQQVRIX01BWCk7Ci0JCXN0cmxjcHkoZnAsIGxwLCBQQVRIX01BWCk7CisJaWYgKGxpbmtb
MF0gPT0gJy8nKSB7CisJCXN0cmxjYXQobGluaywgcCwgUEFUSF9NQVgpOworCQlzdHJsY3B5KGZw
LCBsaW5rLCBQQVRIX01BWCk7CiAJfSBlbHNlIHsKLQkJc3RybGNweSh0LmdldCgpLCBwLCBQQVRI
X01BWCk7CisJCXN0cmxjcHkodCwgcCwgUEFUSF9NQVgpOwogCQlzdHJsY3B5KG5vZGUsIGZwLCBt
b3VudHBvaW50X2xlbiArIGMgKyAxKTsKLQkJcGF0aF9jb252KG5vZGUsIGxwLCBmcCk7Ci0JCXN0
cmxjYXQoZnAsIHQuZ2V0KCksIFBBVEhfTUFYKTsKKwkJcGF0aF9jb252KG5vZGUsIGxpbmssIGZw
KTsKKwkJc3RybGNhdChmcCwgdCwgUEFUSF9NQVgpOwogCX0KIAlub2RlWzBdID0gMDsKIAluYW1l
WzBdID0gMDsKQEAgLTEwNyw4ICsxMDUsNyBAQCBuYW1laShjb25zdCBjaGFyICpwYXRoLCBzdHJ1
Y3QgZGVudHJ5ICoqZHBwKQogCWNoYXIgKnA7CiAJY2hhciBub2RlW1BBVEhfTUFYXTsKIAljaGFy
IG5hbWVbUEFUSF9NQVhdOwotCXN0ZDo6dW5pcXVlX3B0cjxjaGFyIFtdPiBmcCAobmV3IGNoYXIg
W1BBVEhfTUFYXSk7Ci0Jc3RkOjp1bmlxdWVfcHRyPGNoYXIgW10+IHQgKG5ldyBjaGFyIFtQQVRI
X01BWF0pOworCWNoYXIgZnBbUEFUSF9NQVhdOwogCXN0cnVjdCBtb3VudCAqbXA7CiAJc3RydWN0
IGRlbnRyeSAqZHAsICpkZHA7CiAJc3RydWN0IHZub2RlICpkdnAsICp2cDsKQEAgLTExOSw3ICsx
MTYsNyBAQCBuYW1laShjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3QgZGVudHJ5ICoqZHBwKQogCURQ
UklOVEYoVkZTREJfVk5PREUsICgibmFtZWk6IHBhdGg9JXNcbiIsIHBhdGgpKTsKIAogCWxpbmtz
X2ZvbGxvd2VkID0gMDsKLQlzdHJsY3B5KGZwLmdldCgpLCBwYXRoLCBQQVRIX01BWCk7CisJc3Ry
bGNweShmcCwgcGF0aCwgUEFUSF9NQVgpOwogCiAJZG8gewogCQluZWVkX2NvbnRpbnVlID0gZmFs
c2U7CkBAIC0xMjcsMTAgKzEyNCwxMCBAQCBuYW1laShjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3Qg
ZGVudHJ5ICoqZHBwKQogCQkgKiBDb252ZXJ0IGEgZnVsbCBwYXRoIG5hbWUgdG8gaXRzIG1vdW50
IHBvaW50IGFuZAogCQkgKiB0aGUgbG9jYWwgbm9kZSBpbiB0aGUgZmlsZSBzeXN0ZW0uCiAJCSAq
LwotCQlpZiAodmZzX2ZpbmRyb290KGZwLmdldCgpLCAmbXAsICZwKSkgeworCQlpZiAodmZzX2Zp
bmRyb290KGZwLCAmbXAsICZwKSkgewogCQkJcmV0dXJuIEVOT1RESVI7CiAJCX0KLQkJaW50IG1v
dW50cG9pbnRfbGVuID0gcCAtIGZwLmdldCgpIC0gMTsKKwkJaW50IG1vdW50cG9pbnRfbGVuID0g
cCAtIGZwIC0gMTsKIAkJc3RybGNweShub2RlLCAiLyIsIHNpemVvZihub2RlKSk7CiAJCXN0cmxj
YXQobm9kZSwgcCwgc2l6ZW9mKG5vZGUpKTsKIAkJZHAgPSBkZW50cnlfbG9va3VwKG1wLCBub2Rl
KTsKQEAgLTIwMyw3ICsyMDAsNyBAQCBuYW1laShjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3QgZGVu
dHJ5ICoqZHBwKQogCQkJZGRwID0gZHA7CiAKIAkJCWlmIChkcC0+ZF92bm9kZS0+dl90eXBlID09
IFZMTkspIHsKLQkJCQllcnJvciA9IG5hbWVpX2ZvbGxvd19saW5rKGRwLCBub2RlLCBuYW1lLCBm
cC5nZXQoKSwgbW91bnRwb2ludF9sZW4pOworCQkJCWVycm9yID0gbmFtZWlfZm9sbG93X2xpbmso
ZHAsIG5vZGUsIG5hbWUsIGZwLCBtb3VudHBvaW50X2xlbik7CiAJCQkJaWYgKGVycm9yKSB7CiAJ
CQkJCWRyZWxlKGRwKTsKIAkJCQkJcmV0dXJuIChlcnJvcik7CkBAIC0yMTEsNyArMjA4LDcgQEAg
bmFtZWkoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IGRlbnRyeSAqKmRwcCkKIAogCQkJCWRyZWxl
KGRwKTsKIAotCQkJCXAgICAgICAgPSBmcC5nZXQoKTsKKwkJCQlwICAgICAgID0gZnA7CiAJCQkJ
ZHAgICAgICA9IG51bGxwdHI7CiAJCQkJZGRwICAgICA9IG51bGxwdHI7CiAJCQkJdnAgICAgICA9
IG51bGxwdHI7CkBAIC0yNTQsNyArMjUxLDcgQEAgbmFtZWlfbGFzdF9ub2ZvbGxvdyhjaGFyICpw
YXRoLCBzdHJ1Y3QgZGVudHJ5ICpkZHAsIHN0cnVjdCBkZW50cnkgKipkcHApCiAJc3RydWN0IGRl
bnRyeSAqZHA7CiAJc3RydWN0IHZub2RlICAqZHZwOwogCXN0cnVjdCB2bm9kZSAgKnZwOwotCXN0
ZDo6dW5pcXVlX3B0cjxjaGFyIFtdPiBub2RlIChuZXcgY2hhcltQQVRIX01BWF0pOworCWNoYXIg
bm9kZVtQQVRIX01BWF07CiAKIAlkdnAgID0gbnVsbHB0cjsKIApAQCAtMjczLDI2ICsyNzAsMjYg
QEAgbmFtZWlfbGFzdF9ub2ZvbGxvdyhjaGFyICpwYXRoLCBzdHJ1Y3QgZGVudHJ5ICpkZHAsIHN0
cnVjdCBkZW50cnkgKipkcHApCiAJCXJldHVybiAoRU5PVERJUik7CiAJfQogCi0Jc3RybGNweShu
b2RlLmdldCgpLCAiLyIsIFBBVEhfTUFYKTsKLQlzdHJsY2F0KG5vZGUuZ2V0KCksIHAsIFBBVEhf
TUFYKTsKKwlzdHJsY3B5KG5vZGUsICIvIiwgUEFUSF9NQVgpOworCXN0cmxjYXQobm9kZSwgcCwg
UEFUSF9NQVgpOwogCiAJLy8gV2Ugd2FudCB0byB0cmVhdCB0aGluZ3MgbGlrZSAvdG1wLyB0aGUg
c2FtZSBhcyAvdG1wLiBCZXN0IHdheSB0byBkbyB0aGF0CiAJLy8gaXMgdG8gaWdub3JlIHRoZSBs
YXN0IGNoYXJhY3RlciwgZXhjZXB0IHdoZW4gd2UncmUgc3RhdGluZyB0aGUgcm9vdC4KLQlhdXRv
IGwgPSBzdHJsZW4obm9kZS5nZXQoKSkgLSAxOwotCWlmIChsICYmIG5vZGUuZ2V0KClbbF0gPT0g
Jy8nKSB7Ci0JCW5vZGUuZ2V0KClbbF0gPSAnXDAnOworCWludCBsID0gc3RybGVuKG5vZGUpIC0g
MTsKKwlpZiAobCAmJiBub2RlW2xdID09ICcvJykgeworCQlub2RlW2xdID0gJ1wwJzsKIAl9CiAK
IAlkdnAgPSBkZHAtPmRfdm5vZGU7CiAJdm5fbG9jayhkdnApOwotCWRwID0gZGVudHJ5X2xvb2t1
cChtcCwgbm9kZS5nZXQoKSk7CisJZHAgPSBkZW50cnlfbG9va3VwKG1wLCBub2RlKTsKIAlpZiAo
ZHAgPT0gbnVsbHB0cikgewogCQllcnJvciA9IFZPUF9MT09LVVAoZHZwLCBuYW1lLCAmdnApOwog
CQlpZiAoZXJyb3IgIT0gMCkgewogCQkJZ290byBvdXQ7CiAJCX0KIAotCQlkcCA9IGRlbnRyeV9h
bGxvYyhkZHAsIHZwLCBub2RlLmdldCgpKTsKKwkJZHAgPSBkZW50cnlfYWxsb2MoZGRwLCB2cCwg
bm9kZSk7CiAJCXZwdXQodnApOwogCiAJCWlmIChkcCA9PSBudWxscHRyKSB7CmRpZmYgLS1naXQg
YS9saWIvdmZzY29yZS9tYWluLmMgYi9saWIvdmZzY29yZS9tYWluLmMKaW5kZXggZTMwMDQ1OTcu
Ljc0ODc2ZGMxIDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9tYWluLmMKKysrIGIvbGliL3Zmc2Nv
cmUvbWFpbi5jCkBAIC03NywxOCArNzcsMTYgQEAKICNpbmNsdWRlIDxhcGkvdXRpbWUuaD4KICNp
bmNsdWRlIDxjaHJvbm8+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIAogI2lmZGVmIERFQlVH
X1ZGUwogaW50CXZmc19kZWJ1ZyA9IFZGU0RCX0ZMQUdTOwogI2VuZGlmCiAKLXN0ZDo6YXRvbWlj
PG1vZGVfdD4gZ2xvYmFsX3VtYXNre1NfSVdHUlAgfCBTX0lXT1RIfTsKK3N0YXRpYyBtb2RlX3Qg
Z2xvYmFsX3VtYXNrID0gU19JV0dSUCB8IFNfSVdPVEg7CiAKIHN0YXRpYyBpbmxpbmUgbW9kZV90
IGFwcGx5X3VtYXNrKG1vZGVfdCBtb2RlKQogewotCXJldHVybiBtb2RlICYgfmdsb2JhbF91bWFz
ay5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOworCXJldHVybiBtb2RlICYgfnVrYXJj
aF9sb2FkX24oJmdsb2JhbF91bWFzayk7CiB9CiAKIFRSQUNFUE9JTlQodHJhY2VfdmZzX29wZW4s
ICJcIiVzXCIgMHgleCAwJTBvIiwgY29uc3QgY2hhciosIGludCwgbW9kZV90KTsKQEAgLTk3LDcg
Kzk1LDYgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfb3Blbl9lcnIsICIlZCIsIGludCk7CiAKIHN0
cnVjdCB0YXNrICptYWluX3Rhc2s7CS8qIHdlIG9ubHkgaGF2ZSBhIHNpbmdsZSBwcm9jZXNzICov
CiAKLWV4dGVybiAiQyIKIGludCBvcGVuKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBpbnQgZmxhZ3Ms
IC4uLikKIHsKIAltb2RlX3QgbW9kZSA9IDA7CkBAIC0xNzgsOCArMTc1LDcgQEAgaW50IG9wZW5h
dChpbnQgZGlyZmQsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBpbnQgZmxhZ3MsIC4uLikKIAlzdHJ1
Y3Qgdm5vZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOwogCXZuX2xvY2sodnApOwogCi0J
c3RkOjp1bmlxdWVfcHRyPGNoYXIgW10+IHVwIChuZXcgY2hhcltQQVRIX01BWF0pOwotCWNoYXIg
KnAgPSB1cC5nZXQoKTsKKwljaGFyIHBbUEFUSF9NQVhdOwogCiAJLyogYnVpbGQgYWJzb2x1dGUg
cGF0aCAqLwogCXN0cmxjcHkocCwgZnAtPmZfZGVudHJ5LT5kX21vdW50LT5tX3BhdGgsIFBBVEhf
TUFYKTsKQEAgLTE5NiwyNiArMTkyLDYgQEAgaW50IG9wZW5hdChpbnQgZGlyZmQsIGNvbnN0IGNo
YXIgKnBhdGhuYW1lLCBpbnQgZmxhZ3MsIC4uLikKIH0KIExGUzY0KG9wZW5hdCk7CiAKLS8vIG9w
ZW4oKSBoYXMgYW4gb3B0aW9uYWwgdGhpcmQgYXJndW1lbnQsICJtb2RlIiwgd2hpY2ggaXMgb25s
eSBuZWVkZWQgaW4KLS8vIHNvbWUgY2FzZXMgKHdoZW4gdGhlIE9fQ1JFQVQgbW9kZSBpcyB1c2Vk
KS4gQXMgYSBzYWZldHkgZmVhdHVyZSwgcmVjZW50Ci0vLyB2ZXJzaW9ucyBvZiBHbGliYyBhZGQg
YSBmZWF0dXJlIHdoZXJlIG9wZW4oKSB3aXRoIHR3byBhcmd1bWVudHMgaXMgcmVwbGFjZWQKLS8v
IGJ5IGEgY2FsbCB0byBfX29wZW5fMigpLCB3aGljaCB2ZXJpZmllcyBpdCBpc24ndCBjYWxsZWQg
d2l0aCBPX0NSRUFURS4KLWV4dGVybiAiQyIgaW50IF9fb3Blbl8yKGNvbnN0IGNoYXIgKnBhdGhu
YW1lLCBpbnQgZmxhZ3MpCi17Ci0JYXNzZXJ0KCEoZmxhZ3MgJiBPX0NSRUFUKSk7Ci0JcmV0dXJu
IG9wZW4ocGF0aG5hbWUsIGZsYWdzLCAwKTsKLX0KLQotZXh0ZXJuICJDIiBpbnQgX19vcGVuNjRf
Mihjb25zdCBjaGFyICpmaWxlLCBpbnQgZmxhZ3MpCi17Ci0JaWYgKGZsYWdzICYgT19DUkVBVCkg
ewotCQllcnJubyA9IEVJTlZBTDsKLQkJcmV0dXJuIC0xOwotCX0KLQotCXJldHVybiBvcGVuNjQo
ZmlsZSwgZmxhZ3MpOwotfQotCiBpbnQgY3JlYXQoY29uc3QgY2hhciAqcGF0aG5hbWUsIG1vZGVf
dCBtb2RlKQogewogCXJldHVybiBvcGVuKHBhdGhuYW1lLCBPX0NSRUFUfE9fV1JPTkxZfE9fVFJV
TkMsIG1vZGUpOwpAQCAtMjQ5LDcgKzIyNSw2IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX21rbm9k
X3JldCwgIiIpOwogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbWtub2RfZXJyLCAiJWQiLCBpbnQpOwog
CiAKLWV4dGVybiAiQyIKIGludCBfX3hta25vZChpbnQgdmVyLCBjb25zdCBjaGFyICpwYXRobmFt
ZSwgbW9kZV90IG1vZGUsIGRldl90ICpkZXYpCiB7CiAJYXNzZXJ0KHZlciA9PSAwKTsgLy8gT24g
eDg2LTY0IExpbnV4LCBfTUtOT0RfVkVSX0xJTlVYIGlzIDAuCkBAIC01NDMsNyArNTE4LDYgQEAg
VFJBQ0VQT0lOVCh0cmFjZV92ZnNfZnN0YXQsICIlZCAlcCIsIGludCwgc3RydWN0IHN0YXQqKTsK
IFRSQUNFUE9JTlQodHJhY2VfdmZzX2ZzdGF0X3JldCwgIiIpOwogVFJBQ0VQT0lOVCh0cmFjZV92
ZnNfZnN0YXRfZXJyLCAiJWQiLCBpbnQpOwogCi1leHRlcm4gIkMiCiBpbnQgX19meHN0YXQoaW50
IHZlciwgaW50IGZkLCBzdHJ1Y3Qgc3RhdCAqc3QpCiB7CiAJc3RydWN0IGZpbGUgKmZwOwpAQCAt
NTcxLDcgKzU0NSw2IEBAIGludCBfX2Z4c3RhdChpbnQgdmVyLCBpbnQgZmQsIHN0cnVjdCBzdGF0
ICpzdCkKIAogTEZTNjQoX19meHN0YXQpOwogCi1leHRlcm4gIkMiCiBpbnQgZnN0YXQoaW50IGZk
LCBzdHJ1Y3Qgc3RhdCAqc3QpCiB7CiAJcmV0dXJuIF9fZnhzdGF0KDEsIGZkLCBzdCk7CkBAIC01
NzksNyArNTUyLDYgQEAgaW50IGZzdGF0KGludCBmZCwgc3RydWN0IHN0YXQgKnN0KQogCiBMRlM2
NChmc3RhdCk7CiAKLWV4dGVybiAiQyIKIGludCBfX2Z4c3RhdGF0KGludCB2ZXIsIGludCBkaXJm
ZCwgY29uc3QgY2hhciAqcGF0aG5hbWUsIHN0cnVjdCBzdGF0ICpzdCwKIAkJaW50IGZsYWdzKQog
ewpAQCAtNjA2LDggKzU3OCw3IEBAIGludCBfX2Z4c3RhdGF0KGludCB2ZXIsIGludCBkaXJmZCwg
Y29uc3QgY2hhciAqcGF0aG5hbWUsIHN0cnVjdCBzdGF0ICpzdCwKIAlzdHJ1Y3Qgdm5vZGUgKnZw
ID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOwogCXZuX2xvY2sodnApOwogCi0Jc3RkOjp1bmlxdWVf
cHRyPGNoYXIgW10+IHVwIChuZXcgY2hhcltQQVRIX01BWF0pOwotCWNoYXIgKnAgPSB1cC5nZXQo
KTsKKwljaGFyIHBbUEFUSF9NQVhdOwogCS8qIGJ1aWxkIGFic29sdXRlIHBhdGggKi8KIAlzdHJs
Y3B5KHAsIGZwLT5mX2RlbnRyeS0+ZF9tb3VudC0+bV9wYXRoLCBQQVRIX01BWCk7CiAJc3RybGNh
dChwLCBmcC0+Zl9kZW50cnktPmRfcGF0aCwgUEFUSF9NQVgpOwpAQCAtNjI0LDcgKzU5NSw2IEBA
IGludCBfX2Z4c3RhdGF0KGludCB2ZXIsIGludCBkaXJmZCwgY29uc3QgY2hhciAqcGF0aG5hbWUs
IHN0cnVjdCBzdGF0ICpzdCwKIAogTEZTNjQoX19meHN0YXRhdCk7CiAKLWV4dGVybiAiQyIKIGlu
dCBmc3RhdGF0KGludCBkaXJmZCwgY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IHN0YXQgKnN0LCBp
bnQgZmxhZ3MpCiB7CiAJcmV0dXJuIF9fZnhzdGF0YXQoMSwgZGlyZmQsIHBhdGgsIHN0LCBmbGFn
cyk7CkBAIC02MzIsNyArNjAyLDcgQEAgaW50IGZzdGF0YXQoaW50IGRpcmZkLCBjb25zdCBjaGFy
ICpwYXRoLCBzdHJ1Y3Qgc3RhdCAqc3QsIGludCBmbGFncykKIAogTEZTNjQoZnN0YXRhdCk7CiAK
LWV4dGVybiAiQyIgaW50IGZsb2NrKGludCBmZCwgaW50IG9wZXJhdGlvbikKK2ludCBmbG9jayhp
bnQgZmQsIGludCBvcGVyYXRpb24pCiB7CiAJaWYgKCFmaWxlcmVmX2Zyb21fZmQoZmQpKSB7CiAJ
CXJldHVybiBsaWJjX2Vycm9yKEVCQURGKTsKQEAgLTY2MywxNCArNjMzLDE0IEBAIHN0cnVjdCBf
X2RpcnN0cmVhbQogCiBESVIgKm9wZW5kaXIoY29uc3QgY2hhciAqcGF0aCkKIHsKLQlESVIgKmRp
ciA9IG5ldyBESVI7CisJRElSICpkaXIgPSBtYWxsb2Moc2l6ZW9mKCpkaXIpKTsKIAogCWlmICgh
ZGlyKQotCQlyZXR1cm4gbGliY19lcnJvcl9wdHI8RElSPihFTk9NRU0pOworCQlyZXR1cm4gRVJS
MlBUUigtRU5PTUVNKTsKIAogCWRpci0+ZmQgPSBvcGVuKHBhdGgsIE9fUkRPTkxZKTsKIAlpZiAo
ZGlyLT5mZCA8IDApIHsKLQkJZGVsZXRlIGRpcjsKKwkJZnJlZShkaXIpOwogCQlyZXR1cm4gbnVs
bHB0cjsKIAl9CiAJcmV0dXJuIGRpcjsKQEAgLTY4Nyw3ICs2NTcsMTEgQEAgRElSICpmZG9wZW5k
aXIoaW50IGZkKQogCQllcnJubyA9IEVOT1RESVI7CiAJCXJldHVybiBudWxscHRyOwogCX0KLQlk
aXIgPSBuZXcgRElSOworCWRpciA9IG1hbGxvYyhzaXplb2YoKmRpcikpOworCWlmICghZGlyKSB7
CisJCWVycm5vID0gRU5PTUVNOworCQlyZXR1cm4gTlVMTDsKKwl9CiAJZGlyLT5mZCA9IGZkOwog
CXJldHVybiBkaXI7CiAKQEAgLTcwNSw3ICs2NzksNyBAQCBpbnQgZGlyZmQoRElSICpkaXJwKQog
aW50IGNsb3NlZGlyKERJUiAqZGlyKQogewogCWNsb3NlKGRpci0+ZmQpOwotCWRlbGV0ZSBkaXI7
CisJZnJlZShkaXIpOwogCXJldHVybiAwOwogfQogCkBAIC03MTYsNyArNjkwLDcgQEAgc3RydWN0
IGRpcmVudCAqcmVhZGRpcihESVIgKmRpcikKIAogCXJldCA9IHJlYWRkaXJfcihkaXIsICZlbnRy
eSwgJnJlc3VsdCk7CiAJaWYgKHJldCkKLQkJcmV0dXJuIGxpYmNfZXJyb3JfcHRyPHN0cnVjdCBk
aXJlbnQ+KHJldCk7CisJCXJldHVybiBFUlIyUFRSKC1yZXQpOwogCiAJZXJybm8gPSAwOwogCXJl
dHVybiByZXN1bHQ7CkBAIC03NTMsMTggKzcyNywxOCBAQCBpbnQgcmVhZGRpcl9yKERJUiAqZGly
LCBzdHJ1Y3QgZGlyZW50ICplbnRyeSwgc3RydWN0IGRpcmVudCAqKnJlc3VsdCkKIAogLy8gRklY
TUU6IGluIDY0Yml0IGRpcmVudDY0IGFuZCBkaXJlbnQgYXJlIGlkZW50aWNhbCwgc28gaXQncyBz
YWZlIHRvIGFsaWFzCiAjdW5kZWYgcmVhZGRpcjY0X3IKLWV4dGVybiAiQyIgaW50IHJlYWRkaXI2
NF9yKERJUiAqZGlyLCBzdHJ1Y3QgZGlyZW50NjQgKmVudHJ5LAoraW50IHJlYWRkaXI2NF9yKERJ
UiAqZGlyLCBzdHJ1Y3QgZGlyZW50NjQgKmVudHJ5LAogCQlzdHJ1Y3QgZGlyZW50NjQgKipyZXN1
bHQpCiAJCV9fYXR0cmlidXRlX18oKGFsaWFzKCJyZWFkZGlyX3IiKSkpOwogCiAjdW5kZWYgcmVh
ZGRpcjY0Ci1leHRlcm4gIkMiIHN0cnVjdCBkaXJlbnQgKnJlYWRkaXI2NChESVIgKmRpcikgX19h
dHRyaWJ1dGVfXygoYWxpYXMoInJlYWRkaXIiKSkpOworc3RydWN0IGRpcmVudCAqcmVhZGRpcjY0
KERJUiAqZGlyKSBfX2F0dHJpYnV0ZV9fKChhbGlhcygicmVhZGRpciIpKSk7CiAKIHZvaWQgcmV3
aW5kZGlyKERJUiAqZGlycCkKIHsKIAlzdHJ1Y3QgZmlsZSAqZnA7CiAKLQlhdXRvIGVycm9yID0g
ZmdldChkaXJwLT5mZCwgJmZwKTsKKwlpbnQgZXJyb3IgPSBmZ2V0KGRpcnAtPmZkLCAmZnApOwog
CWlmIChlcnJvcikgewogCQkvLyBQT1NJWCBzcGVjaWZpZXMgdGhhdCB3aGF0IHJld2luZGRpcigp
IGRvZXMgaW4gdGhlIGNhc2Ugb2YgZXJyb3IKIAkJLy8gaXMgdW5kZWZpbmVkLi4uCkBAIC05MzYs
MjMgKzkxMCwyMSBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19jaGRpciwgIlwiJXNcIiIsIGNvbnN0
IGNoYXIqKTsKIFRSQUNFUE9JTlQodHJhY2VfdmZzX2NoZGlyX3JldCwgIiIpOwogVFJBQ0VQT0lO
VCh0cmFjZV92ZnNfY2hkaXJfZXJyLCAiJWQiLCBpbnQpOwogCi1zdGF0aWMgaW50IHJlcGxhY2Vf
Y3dkKHN0cnVjdCB0YXNrICp0LCBzdHJ1Y3QgZmlsZSAqbmV3X2N3ZGZwLAotCQkJCQkgICBzdGQ6
OmZ1bmN0aW9uPGludCAodm9pZCk+IGNoZGlyX2Z1bmMpCitzdGF0aWMgaW50CitfX2RvX2ZjaGRp
cihzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCwgc3RydWN0IHRhc2sgKnQpCiB7CiAJc3RydWN0IGZp
bGUgKm9sZCA9IG51bGxwdHI7CiAKLQlpZiAoIXQpIHsKLQkJcmV0dXJuIDA7Ci0JfQorCVVLX0FT
U0VSVCh0KTsKIAogCWlmICh0LT50X2N3ZGZwKSB7CiAJCW9sZCA9IHQtPnRfY3dkZnA7CiAJfQog
CiAJLyogRG8gdGhlIGFjdHVhbCBjaGRpciBvcGVyYXRpb24gaGVyZSAqLwotCWludCBlcnJvciA9
IGNoZGlyX2Z1bmMoKTsKKwlpbnQgZXJyb3IgPSBzeXNfZmNoZGlyKGZwLCB0LT50X2N3ZCk7CiAK
LQl0LT50X2N3ZGZwID0gbmV3X2N3ZGZwOworCXQtPnRfY3dkZnAgPSBmcDsKIAlpZiAob2xkKSB7
CiAJCWZkcm9wKG9sZCk7CiAJfQpAQCAtOTgxLDcgKzk1MywxMSBAQCBpbnQgY2hkaXIoY29uc3Qg
Y2hhciAqcGF0aG5hbWUpCiAJCWdvdG8gb3V0X2Vycm5vOwogCX0KIAotCXJlcGxhY2VfY3dkKHQs
IGZwLCBbJl0oKSB7IHN0cmxjcHkodC0+dF9jd2QsIHBhdGgsIHNpemVvZih0LT50X2N3ZCkpOyBy
ZXR1cm4gMDsgfSk7CisJZXJyb3IgPSBfX2RvX2ZjaGRpcihmcCwgdCk7CisJaWYgKGVycm9yKSB7
CisJCWZkcm9wKGZwKTsKKwkJZ290byBvdXRfZXJybm87CisJfQogCiAJdHJhY2VfdmZzX2NoZGly
X3JldCgpOwogCXJldHVybiAwOwpAQCAtMTAwNiw3ICs5ODIsNyBAQCBpbnQgZmNoZGlyKGludCBm
ZCkKIAlpZiAoZXJyb3IpCiAJCWdvdG8gb3V0X2Vycm5vOwogCi0JZXJyb3IgPSByZXBsYWNlX2N3
ZCh0LCBmcCwgWyZdKCkgeyByZXR1cm4gc3lzX2ZjaGRpcihmcCwgdC0+dF9jd2QpOyB9KTsKKwll
cnJvciA9IF9fZG9fZmNoZGlyKGZwLCB0KTsKIAlpZiAoZXJyb3IpIHsKIAkJZmRyb3AoZnApOwog
CQlnb3RvIG91dF9lcnJubzsKQEAgLTExMTQsNyArMTA5MCw2IEBAIFRSQUNFUE9JTlQodHJhY2Vf
dmZzX3N0YXQsICJcIiVzXCIgJXAiLCBjb25zdCBjaGFyKiwgc3RydWN0IHN0YXQqKTsKIFRSQUNF
UE9JTlQodHJhY2VfdmZzX3N0YXRfcmV0LCAiIik7CiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19zdGF0
X2VyciwgIiVkIiwgaW50KTsKIAotZXh0ZXJuICJDIgogaW50IF9feHN0YXQoaW50IHZlciwgY29u
c3QgY2hhciAqcGF0aG5hbWUsIHN0cnVjdCBzdGF0ICpzdCkKIHsKIAlzdHJ1Y3QgdGFzayAqdCA9
IG1haW5fdGFzazsKQEAgLTExNTEsNyArMTEyNiw2IEBAIExGUzY0KHN0YXQpOwogVFJBQ0VQT0lO
VCh0cmFjZV92ZnNfbHN0YXQsICJwYXRobmFtZT0lcywgc3RhdD0lcCIsIGNvbnN0IGNoYXIqLCBz
dHJ1Y3Qgc3RhdCopOwogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbHN0YXRfcmV0LCAiIik7CiBUUkFD
RVBPSU5UKHRyYWNlX3Zmc19sc3RhdF9lcnIsICJlcnJubz0lZCIsIGludCk7Ci1leHRlcm4gIkMi
CiBpbnQgX19seHN0YXQoaW50IHZlciwgY29uc3QgY2hhciAqcGF0aG5hbWUsIHN0cnVjdCBzdGF0
ICpzdCkKIHsKIAlzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKQEAgLTExOTEsNyArMTE2NSw2
IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX3N0YXRmcywgIlwiJXNcIiAlcCIsIGNvbnN0IGNoYXIq
LCBzdHJ1Y3Qgc3RhdGZzKik7CiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19zdGF0ZnNfcmV0LCAiIik7
CiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19zdGF0ZnNfZXJyLCAiJWQiLCBpbnQpOwogCi1leHRlcm4g
IkMiCiBpbnQgX19zdGF0ZnMoY29uc3QgY2hhciAqcGF0aG5hbWUsIHN0cnVjdCBzdGF0ZnMgKmJ1
ZikKIHsKIAl0cmFjZV92ZnNfc3RhdGZzKHBhdGhuYW1lLCBidWYpOwpAQCAtMTIyMSw3ICsxMTk0
LDYgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZnN0YXRmcywgIlwiJXNcIiAlcCIsIGludCwgc3Ry
dWN0IHN0YXRmcyopOwogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZnN0YXRmc19yZXQsICIiKTsKIFRS
QUNFUE9JTlQodHJhY2VfdmZzX2ZzdGF0ZnNfZXJyLCAiJWQiLCBpbnQpOwogCi1leHRlcm4gIkMi
CiBpbnQgX19mc3RhdGZzKGludCBmZCwgc3RydWN0IHN0YXRmcyAqYnVmKQogewogCXN0cnVjdCBm
aWxlICpmcDsKQEAgLTE0MjQsMTEgKzEzOTYsMTEgQEAgaW50IGR1cDIoaW50IG9sZGZkLCBpbnQg
bmV3ZmQpCiAgKi8KICNkZWZpbmUgU0VURkwgKE9fQVBQRU5EIHwgT19BU1lOQyB8IE9fRElSRUNU
IHwgT19OT0FUSU1FIHwgT19OT05CTE9DSykKIAorI2lmIDAKIFRSQUNFUE9JTlQodHJhY2VfdmZz
X2ZjbnRsLCAiJWQgJWQgMHgleCIsIGludCwgaW50LCBpbnQpOwogVFJBQ0VQT0lOVCh0cmFjZV92
ZnNfZmNudGxfcmV0LCAiXCIlc1wiIiwgaW50KTsKIFRSQUNFUE9JTlQodHJhY2VfdmZzX2ZjbnRs
X2VyciwgIiVkIiwgaW50KTsKIAotZXh0ZXJuICJDIgogaW50IGZjbnRsKGludCBmZCwgaW50IGNt
ZCwgaW50IGFyZykKIHsKIAlzdHJ1Y3QgZmlsZSAqZnA7CkBAIC0xNTA5LDYgKzE0ODEsNyBAQCBp
bnQgZmNudGwoaW50IGZkLCBpbnQgY21kLCBpbnQgYXJnKQogCWVycm5vID0gZXJyb3I7CiAJcmV0
dXJuIC0xOwogfQorI2VuZGlmCiAKIFRSQUNFUE9JTlQodHJhY2VfdmZzX2FjY2VzcywgIlwiJXNc
IiAwJTBvIiwgY29uc3QgY2hhciosIGludCk7CiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19hY2Nlc3Nf
cmV0LCAiIik7CkBAIC0xNTY0LDggKzE1MzcsNyBAQCBpbnQgZmFjY2Vzc2F0KGludCBkaXJmZCwg
Y29uc3QgY2hhciAqcGF0aG5hbWUsIGludCBtb2RlLCBpbnQgZmxhZ3MpCiAJc3RydWN0IHZub2Rl
ICp2cCA9IGZwLT5mX2RlbnRyeS0+ZF92bm9kZTsKIAl2bl9sb2NrKHZwKTsKIAotCXN0ZDo6dW5p
cXVlX3B0cjxjaGFyIFtdPiB1cCAobmV3IGNoYXJbUEFUSF9NQVhdKTsKLQljaGFyICpwID0gdXAu
Z2V0KCk7CisJY2hhciBwW1BBVEhfTUFYXTsKIAogCS8qIGJ1aWxkIGFic29sdXRlIHBhdGggKi8K
IAlzdHJsY3B5KHAsIGZwLT5mX2RlbnRyeS0+ZF9tb3VudC0+bV9wYXRoLCBQQVRIX01BWCk7CkBA
IC0xNTgxLDcgKzE1NTMsNiBAQCBpbnQgZmFjY2Vzc2F0KGludCBkaXJmZCwgY29uc3QgY2hhciAq
cGF0aG5hbWUsIGludCBtb2RlLCBpbnQgZmxhZ3MpCiAJcmV0dXJuIGVycm9yOwogfQogCi1leHRl
cm4gIkMiIAogaW50IGV1aWRhY2Nlc3MoY29uc3QgY2hhciAqcGF0aG5hbWUsIGludCBtb2RlKQog
ewogCXJldHVybiBhY2Nlc3MocGF0aG5hbWUsIG1vZGUpOwpAQCAtMTU5MCw1NCArMTU2MSw2IEBA
IGludCBldWlkYWNjZXNzKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBpbnQgbW9kZSkKIHdlYWtfYWxp
YXMoZXVpZGFjY2VzcyxlYWNjZXNzKTsKIAogI2lmIDAKLXN0YXRpYyBpbnQKLWZzX3BpcGUoc3Ry
dWN0IHRhc2sgKnQsIHN0cnVjdCBtc2cgKm1zZykKLXsKLSNpZmRlZiBDT05GSUdfRklGT0ZTCi0J
Y2hhciBwYXRoW1BBVEhfTUFYXTsKLQlmaWxlX3QgcmZwLCB3ZnA7Ci0JaW50IGVycm9yLCByZmQs
IHdmZDsKLQotCURQUklOVEYoVkZTREJfQ09SRSwgKCJmc19waXBlXG4iKSk7Ci0KLQlpZiAoKHJm
ZCA9IHRhc2tfbmV3ZmQodCkpID09IC0xKQotCQlyZXR1cm4gRU1GSUxFOwotCXQtPnRfb2ZpbGVb
cmZkXSA9IChmaWxlX3QpMTsgLyogdGVtcCAqLwotCi0JaWYgKCh3ZmQgPSB0YXNrX25ld2ZkKHQp
KSA9PSAtMSkgewotCQl0LT50X29maWxlW3JmZF0gPSBudWxscHRyOwotCQlyZXR1cm4gRU1GSUxF
OwotCX0KLQlzcHJpbnRmKHBhdGgsICIvbW50L2ZpZm8vcGlwZS0leC0lZCIsICh1X2ludCl0LT50
X3Rhc2tpZCwgcmZkKTsKLQotCWlmICgoZXJyb3IgPSBzeXNfbWtub2QocGF0aCwgU19JRklGTykp
ICE9IDApCi0JCWdvdG8gb3V0OwotCWlmICgoZXJyb3IgPSBzeXNfb3BlbihwYXRoLCBPX1JET05M
WSB8IE9fTk9OQkxPQ0ssIDAsICZyZnApKSAhPSAwKSB7Ci0JCWdvdG8gb3V0OwotCX0KLQlpZiAo
KGVycm9yID0gc3lzX29wZW4ocGF0aCwgT19XUk9OTFkgfCBPX05PTkJMT0NLLCAwLCAmd2ZwKSkg
IT0gMCkgewotCQlnb3RvIG91dDsKLQl9Ci0JdC0+dF9vZmlsZVtyZmRdID0gcmZwOwotCXQtPnRf
b2ZpbGVbd2ZkXSA9IHdmcDsKLQl0LT50X25vcGVucyArPSAyOwotCW1zZy0+ZGF0YVswXSA9IHJm
ZDsKLQltc2ctPmRhdGFbMV0gPSB3ZmQ7Ci0JcmV0dXJuIDA7Ci0Jb3V0OgotCXQtPnRfb2ZpbGVb
cmZkXSA9IG51bGxwdHI7Ci0JdC0+dF9vZmlsZVt3ZmRdID0gbnVsbHB0cjsKLQlyZXR1cm4gZXJy
b3I7Ci0jZWxzZQotCXJldHVybiBFTk9TWVM7Ci0jZW5kaWYKLX0KLSNlbmRpZgotCi1UUkFDRVBP
SU5UKHRyYWNlX3Zmc19pc2F0dHksICIlZCIsIGludCk7Ci1UUkFDRVBPSU5UKHRyYWNlX3Zmc19p
c2F0dHlfcmV0LCAiJWQiLCBpbnQpOwotVFJBQ0VQT0lOVCh0cmFjZV92ZnNfaXNhdHR5X2Vyciwg
IiVkIiwgaW50KTsKLQogLyoKICAqIFJldHVybiBpZiBzcGVjaWZpZWQgZmlsZSBpcyBhIHR0eQog
ICovCkBAIC0xNjYzLDYgKzE1ODYsNyBAQCBpbnQgaXNhdHR5KGludCBmZCkKIAl0cmFjZV92ZnNf
aXNhdHR5X3JldChpc3R0eSk7CiAJcmV0dXJuIGlzdHR5OwogfQorI2VuZGlmCiAKIFRSQUNFUE9J
TlQodHJhY2VfdmZzX3RydW5jYXRlLCAiXCIlc1wiIDB4JXgiLCBjb25zdCBjaGFyKiwgb2ZmX3Qp
OwogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfdHJ1bmNhdGVfcmV0LCAiIik7CkBAIC0xNzg0LDE1ICsx
NzA4LDcgQEAgaW50IGZhbGxvY2F0ZShpbnQgZmQsIGludCBtb2RlLCBsb2ZmX3Qgb2Zmc2V0LCBs
b2ZmX3QgbGVuKQogCiBMRlM2NChmYWxsb2NhdGUpOwogCi1UUkFDRVBPSU5UKHRyYWNlX3Zmc191
dGltZXMsICJcIiVzXCIiLCBjb25zdCBjaGFyKik7Ci1UUkFDRVBPSU5UKHRyYWNlX3Zmc191dGlt
ZXNfcmV0LCAiIik7Ci1UUkFDRVBPSU5UKHRyYWNlX3Zmc191dGltZXNfZXJyLCAiJWQiLCBpbnQp
OwotCi1pbnQgZnV0aW1lcyhpbnQgZmQsIGNvbnN0IHN0cnVjdCB0aW1ldmFsIHRpbWVzWzJdKQot
ewotCXJldHVybiBmdXRpbWVzYXQoZmQsIG51bGxwdHIsIHRpbWVzKTsKLX0KLQorI2lmIDAKIGlu
dCBmdXRpbWVzYXQoaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwgY29uc3Qgc3RydWN0
IHRpbWV2YWwgdGltZXNbMl0pCiB7CiAJc3RydWN0IHN0YXQgc3Q7CkBAIC0xODUwLDEyICsxNzY2
LDEyIEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX3V0aW1lbnNhdCwgIlwiJXNcIiIsIGNvbnN0IGNo
YXIqKTsKIFRSQUNFUE9JTlQodHJhY2VfdmZzX3V0aW1lbnNhdF9yZXQsICIiKTsKIFRSQUNFUE9J
TlQodHJhY2VfdmZzX3V0aW1lbnNhdF9lcnIsICIlZCIsIGludCk7CiAKLWV4dGVybiAiQyIKIGlu
dCB1dGltZW5zYXQoaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwgY29uc3Qgc3RydWN0
IHRpbWVzcGVjIHRpbWVzWzJdLCBpbnQgZmxhZ3MpCiB7CiAJdHJhY2VfdmZzX3V0aW1lbnNhdChw
YXRobmFtZSk7CiAKIAlhdXRvIGVycm9yID0gc3lzX3V0aW1lbnNhdChkaXJmZCwgcGF0aG5hbWUs
IHRpbWVzLCBmbGFncyk7CisKIAlpZiAoZXJyb3IpIHsKIAkJdHJhY2VfdmZzX3V0aW1lbnNhdF9l
cnIoZXJyb3IpOwogCQllcnJubyA9IGVycm9yOwpAQCAtMTg3MCwxMiArMTc4NiwxMSBAQCBUUkFD
RVBPSU5UKHRyYWNlX3Zmc19mdXRpbWVucywgIiVkIiwgaW50KTsKIFRSQUNFUE9JTlQodHJhY2Vf
dmZzX2Z1dGltZW5zX3JldCwgIiIpOwogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZnV0aW1lbnNfZXJy
LCAiJWQiLCBpbnQpOwogCi1leHRlcm4gIkMiCiBpbnQgZnV0aW1lbnMoaW50IGZkLCBjb25zdCBz
dHJ1Y3QgdGltZXNwZWMgdGltZXNbMl0pCiB7CiAJdHJhY2VfdmZzX2Z1dGltZW5zKGZkKTsKIAot
CWF1dG8gZXJyb3IgPSBzeXNfZnV0aW1lbnMoZmQsIHRpbWVzKTsKKwlpbnQgZXJyb3IgPSBzeXNf
ZnV0aW1lbnMoZmQsIHRpbWVzKTsKIAlpZiAoZXJyb3IpIHsKIAkJdHJhY2VfdmZzX2Z1dGltZW5z
X2VycihlcnJvcik7CiAJCWVycm5vID0gZXJyb3I7CkBAIC0xOTEwLDE5ICsxODI1LDE2IEBAIHN0
YXRpYyBpbnQgZG9fdXRpbWVzKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBjb25zdCBzdHJ1Y3QgdGlt
ZXZhbCB0aW1lc1syXSwgaW50IGZsCiAJcmV0dXJuIDA7CiB9CiAKLWV4dGVybiAiQyIKIGludCB1
dGltZXMoY29uc3QgY2hhciAqcGF0aG5hbWUsIGNvbnN0IHN0cnVjdCB0aW1ldmFsIHRpbWVzWzJd
KQogewogCXJldHVybiBkb191dGltZXMocGF0aG5hbWUsIHRpbWVzLCAwKTsKIH0KIAotZXh0ZXJu
ICJDIgogaW50IGx1dGltZXMoY29uc3QgY2hhciAqcGF0aG5hbWUsIGNvbnN0IHN0cnVjdCB0aW1l
dmFsIHRpbWVzWzJdKQogewogCXJldHVybiBkb191dGltZXMocGF0aG5hbWUsIHRpbWVzLCBBVF9T
WU1MSU5LX05PRk9MTE9XKTsKIH0KIAotZXh0ZXJuICJDIgogaW50IHV0aW1lKGNvbnN0IGNoYXIg
KnBhdGhuYW1lLCBjb25zdCBzdHJ1Y3QgdXRpbWJ1ZiAqdCkKIHsKIAl1c2luZyBuYW1lc3BhY2Ug
c3RkOjpjaHJvbm87CkBAIC0xOTQxLDYgKzE4NTMsNyBAQCBpbnQgdXRpbWUoY29uc3QgY2hhciAq
cGF0aG5hbWUsIGNvbnN0IHN0cnVjdCB1dGltYnVmICp0KQogCiAJcmV0dXJuIHV0aW1lcyhwYXRo
bmFtZSwgdGltZXMpOwogfQorI2VuZGlmCiAKIFRSQUNFUE9JTlQodHJhY2VfdmZzX2NobW9kLCAi
XCIlc1wiIDAlMG8iLCBjb25zdCBjaGFyKiwgbW9kZV90KTsKIFRSQUNFUE9JTlQodHJhY2VfdmZz
X2NobW9kX3JldCwgIiIpOwpAQCAtMTk3Myw3ICsxODg2LDcgQEAgVFJBQ0VQT0lOVCh0cmFjZV92
ZnNfZmNobW9kX3JldCwgIiIpOwogaW50IGZjaG1vZChpbnQgZmQsIG1vZGVfdCBtb2RlKQogewog
CXRyYWNlX3Zmc19mY2htb2QoZmQsIG1vZGUpOwotCWF1dG8gZXJyb3IgPSBzeXNfZmNobW9kKGZk
LCBtb2RlICYgQUxMUEVSTVMpOworCWludCBlcnJvciA9IHN5c19mY2htb2QoZmQsIG1vZGUgJiBB
TExQRVJNUyk7CiAJdHJhY2VfdmZzX2ZjaG1vZF9yZXQoKTsKIAlpZiAoZXJyb3IpIHsKIAkJZXJy
bm8gPSBlcnJvcjsKQEAgLTIwMDcsNiArMTkyMCw3IEBAIGludCBsY2hvd24oY29uc3QgY2hhciAq
cGF0aCwgdWlkX3Qgb3duZXIsIGdpZF90IGdyb3VwKQogfQogCiAKKyNpZiAwCiBzc2l6ZV90IHNl
bmRmaWxlKGludCBvdXRfZmQsIGludCBpbl9mZCwgb2ZmX3QgKl9vZmZzZXQsIHNpemVfdCBjb3Vu
dCkKIHsKIAlzdHJ1Y3QgZmlsZSAqaW5fZnA7CkBAIC0yMDcwLDcgKzE5ODQsNyBAQCBzc2l6ZV90
IHNlbmRmaWxlKGludCBvdXRfZmQsIGludCBpbl9mZCwgb2ZmX3QgKl9vZmZzZXQsIHNpemVfdCBj
b3VudCkKIAkJcmV0dXJuIC0xOwogCX0KIAotCWF1dG8gcmV0ID0gd3JpdGUob3V0X2ZkLCBzcmMg
KyAob2Zmc2V0ICUgUEFHRVNJWkUpLCBjb3VudCk7CisJaW50IHJldCA9IHdyaXRlKG91dF9mZCwg
c3JjICsgKG9mZnNldCAlIFBBR0VTSVpFKSwgY291bnQpOwogCiAJaWYgKHJldCA8IDApIHsKIAkJ
cmV0dXJuIGxpYmNfZXJyb3IoZXJybm8pOwpAQCAtMjA4NywxMiArMjAwMSwxMyBAQCBzc2l6ZV90
IHNlbmRmaWxlKGludCBvdXRfZmQsIGludCBpbl9mZCwgb2ZmX3QgKl9vZmZzZXQsIHNpemVfdCBj
b3VudCkKIAogI3VuZGVmIHNlbmRmaWxlNjQKIExGUzY0KHNlbmRmaWxlKTsKKyNlbmRpZgogCiBO
T19TWVMoaW50IGZjaG1vZGF0KGludCBkaXJmZCwgY29uc3QgY2hhciAqcGF0aG5hbWUsIG1vZGVf
dCBtb2RlLCBpbnQgZmxhZ3MpKTsKIAogbW9kZV90IHVtYXNrKG1vZGVfdCBuZXdtYXNrKQogewot
CXJldHVybiBnbG9iYWxfdW1hc2suZXhjaGFuZ2UobmV3bWFzaywgc3RkOjptZW1vcnlfb3JkZXJf
cmVsYXhlZCk7CisJcmV0dXJuIHVrYXJjaF9leGNoYW5nZV9uKCZnbG9iYWxfdW1hc2ssIG5ld21h
c2spOwogfQogCiBpbnQKQEAgLTIxMDcsMzAzICsyMDIyLDMgQEAgaW50IGNocm9vdChjb25zdCBj
aGFyICpwYXRoKQogCWVycm5vID0gRU5PU1lTOwogCXJldHVybiAtMTsKIH0KLQotLy8gdW5wYWNr
X2Jvb3RmcygpIHVucGFja3MgYSBjb2xsZWN0aW9uIG9mIGZpbGVzIHN0b3JlZCBhcyBwYXJ0IG9m
IHRoZSBPU3YKLS8vIGV4ZWN1dGFibGUgKGluIG1lbW9yeSBsb2NhdGlvbiAiYm9vdGZzX3N0YXJ0
IikgaW50byB0aGUgZmlsZSBzeXN0ZW0sCi0vLyBub3JtYWxseSB0aGUgaW4tbWVtb3J5IGZpbGVz
eXN0ZW0gcmFtZnMuCi0vLyBUaGUgZmlsZXMgYXJlIHBhY2tlZCBpbiB0aGUgZXhlY3V0YWJsZSBp
biBhbiBhZC1ob2MgZm9ybWF0IGRlZmluZWQgaGVyZS4KLS8vIENvZGUgaW4gc2NyaXB0cy9ta2Jv
b3Rmcy5weSBwYWNrcyBmaWxlcyBpbnRvIHRoaXMgZm9ybWF0LgotI2RlZmluZSBCT09URlNfUEFU
SF9NQVggMTExCi1lbnVtIGNsYXNzIGJvb3Rmc19maWxlX3R5cGUgOiBjaGFyIHsgb3RoZXIgPSAw
LCBzeW1saW5rID0gMSB9Owotc3RydWN0IGJvb3Rmc19tZXRhZGF0YSB7Ci0JdWludDY0X3Qgc2l6
ZTsKLQl1aW50NjRfdCBvZmZzZXQ7Ci0JLy8gVGhlIGZpbGUncyB0eXBlLiBDYW4gYmUgInN5bWxp
bmsiIG9yICJvdGhlciIuIEEgZGlyZWN0b3J5IGlzIGFuICJvdGhlciIKLQkvLyBmaWxlIHdpdGgg
aXRzIG5hbWUgZW5kaW5nIHdpdGggYSAiLyIgKGFuZCBubyBjb250ZW50KS4KLQlib290ZnNfZmls
ZV90eXBlIHR5cGU7Ci0JLy8gbmFtZSBtdXN0IGVuZCB3aXRoIGEgbnVsbC4gRm9yIHN5bWxpbmsg
ZmlsZXMsIHRoZSBjb250ZW50IG11c3QgZW5kCi0JLy8gd2l0aCBhIG51bGwgYXMgd2VsbC4KLQlj
aGFyIG5hbWVbQk9PVEZTX1BBVEhfTUFYXTsKLX07Ci0KLWV4dGVybiBjaGFyIGJvb3Rmc19zdGFy
dDsKLQotaW50IHJhbWZzX3NldF9maWxlX2RhdGEoc3RydWN0IHZub2RlICp2cCwgY29uc3Qgdm9p
ZCAqZGF0YSwgc2l6ZV90IHNpemUpOwotdm9pZCB1bnBhY2tfYm9vdGZzKHZvaWQpCi17Ci0Jc3Ry
dWN0IGJvb3Rmc19tZXRhZGF0YSAqbWQgPSAoc3RydWN0IGJvb3Rmc19tZXRhZGF0YSAqKSZib290
ZnNfc3RhcnQ7Ci0JaW50IGZkLCBpOwotCi0JZm9yIChpID0gMDsgbWRbaV0ubmFtZVswXTsgaSsr
KSB7Ci0JCWludCByZXQ7Ci0JCWNoYXIgKnA7Ci0KLQkJLy8gbWtkaXIoKSBkaXJlY3RvcmllcyBu
ZWVkZWQgZm9yIHRoaXMgcGF0aCBuYW1lLCBhcyBuZWNlc3NhcnkKLQkJY2hhciB0bXBbQk9PVEZT
X1BBVEhfTUFYXTsKLQkJc3RybGNweSh0bXAsIG1kW2ldLm5hbWUsIEJPT1RGU19QQVRIX01BWCk7
Ci0JCWZvciAocCA9IHRtcDsgKnA7ICsrcCkgewotCQkJaWYgKCpwID09ICcvJykgewotCQkJCSpw
ID0gJ1wwJzsKLQkJCQlta2Rpcih0bXAsIDA2NjYpOyAgLy8gc2lsZW50bHkgaWdub3JlIGVycm9y
cyBhbmQgZXhpc3RpbmcgZGlycwotCQkJCSpwID0gJy8nOwotCQkJfQotCQl9Ci0KLQkJaWYgKG1k
W2ldLnR5cGUgPT0gYm9vdGZzX2ZpbGVfdHlwZTo6c3ltbGluaykgewotCQkJLy8gVGhpcyBpcyBh
IHN5bWJvbGljIGxpbmsgcmVjb3JkLiBUaGUgZmlsZSdzIGNvbnRlbnQgaXMgdGhlCi0JCQkvLyB0
YXJnZXQgcGF0aCwgYW5kIHdlIGFzc3VtZSBlbmRzIHdpdGggYSBudWxsLgotCQkJaWYgKHN5bWxp
bmsoJmJvb3Rmc19zdGFydCArIG1kW2ldLm9mZnNldCwgbWRbaV0ubmFtZSkgIT0gMCkgewotCQkJ
CWtwcmludGYoImNvdWxkbid0IHN5bWxpbmsgJXM6ICVkXG4iLCBtZFtpXS5uYW1lLCBlcnJubyk7
Ci0JCQkJc3lzX3BhbmljKCJ1bnBhY2tfYm9vdGZzIGZhaWxlZCIpOwotCQkJfQotCQkJY29udGlu
dWU7Ci0JCX0KLQkJaWYgKCoocC0xKSA9PSAnLycgJiYgbWRbaV0uc2l6ZSA9PSAwKSB7Ci0JCQkv
LyBUaGlzIGlzIGRpcmVjdG9yeSByZWNvcmQuIE5vdGhpbmcgZWxzZSB0byBkbwotCQkJY29udGlu
dWU7Ci0JCX0KLQotCQlmZCA9IGNyZWF0KG1kW2ldLm5hbWUsIDA2NjYpOwotCQlpZiAoZmQgPCAw
KSB7Ci0JCQlrcHJpbnRmKCJjb3VsZG4ndCBjcmVhdGUgJXM6ICVkXG4iLAotCQkJCQltZFtpXS5u
YW1lLCBlcnJubyk7Ci0JCQlzeXNfcGFuaWMoInVucGFja19ib290ZnMgZmFpbGVkIik7Ci0JCX0K
LQotCQlzdHJ1Y3QgZmlsZSAqZnA7Ci0JCWludCBlcnJvciA9IGZnZXQoZmQsICZmcCk7Ci0JCWlm
IChlcnJvcikgewotCQkJa3ByaW50ZigiY291bGRuJ3QgZmdldCAlczogJWRcbiIsCi0JCQkJCW1k
W2ldLm5hbWUsIGVycm9yKTsKLQkJCXN5c19wYW5pYygidW5wYWNrX2Jvb3RmcyBmYWlsZWQiKTsK
LQkJfQotCi0JCXN0cnVjdCB2bm9kZSAqdnAgPSBmcC0+Zl9kZW50cnktPmRfdm5vZGU7Ci0JCXJl
dCA9IHJhbWZzX3NldF9maWxlX2RhdGEodnAsICZib290ZnNfc3RhcnQgKyBtZFtpXS5vZmZzZXQs
IG1kW2ldLnNpemUpOwotCQlpZiAocmV0KSB7Ci0JCQlrcHJpbnRmKCJyYW1mc19zZXRfZmlsZV9k
YXRhIGZhaWxlZCwgcmV0ID0gJWRcbiIsIHJldCk7Ci0JCQlzeXNfcGFuaWMoInVucGFja19ib290
ZnMgZmFpbGVkIik7Ci0JCX0KLQotCQlmZHJvcChmcCk7Ci0JCWNsb3NlKGZkKTsKLQl9Ci19Ci0K
LXZvaWQgbW91bnRfcm9vdGZzKHZvaWQpCi17Ci0JaW50IHJldDsKLQotCXJldCA9IHN5c19tb3Vu
dCgiIiwgIi8iLCAicmFtZnMiLCAwLCBudWxscHRyKTsKLQlpZiAocmV0KQotCQlrcHJpbnRmKCJm
YWlsZWQgdG8gbW91bnQgcm9vdGZzLCBlcnJvciA9ICVzXG4iLCBzdHJlcnJvcihyZXQpKTsKLQot
CWlmIChta2RpcigiL2RldiIsIDA3NTUpIDwgMCkKLQkJa3ByaW50ZigiZmFpbGVkIHRvIGNyZWF0
ZSAvZGV2LCBlcnJvciA9ICVzXG4iLCBzdHJlcnJvcihlcnJubykpOwotCi0JcmV0ID0gc3lzX21v
dW50KCIiLCAiL2RldiIsICJkZXZmcyIsIDAsIG51bGxwdHIpOwotCWlmIChyZXQpCi0JCWtwcmlu
dGYoImZhaWxlZCB0byBtb3VudCBkZXZmcywgZXJyb3IgPSAlc1xuIiwgc3RyZXJyb3IocmV0KSk7
Ci19Ci0KLWV4dGVybiAiQyIKLWludCBubW91bnQoc3RydWN0IGlvdmVjICppb3YsIHVuc2lnbmVk
IG5pb3YsIGludCBmbGFncykKLXsKLQlzdHJ1Y3QgYXJncyB7Ci0JCWNoYXIqIGZzdHlwZSA9IG51
bGxwdHI7Ci0JCWNoYXIqIGZzcGF0aCA9IG51bGxwdHI7Ci0JCWNoYXIqIGZyb20gPSBudWxscHRy
OwotCX07Ci0Jc3RhdGljIHVub3JkZXJlZF9tYXA8c3RyaW5nLCBjaGFyKiBhcmdzOjoqPiBhcmdt
YXAgewotCQl7ICJmc3R5cGUiLCAmYXJnczo6ZnN0eXBlIH0sCi0JCXsgImZzcGF0aCIsICZhcmdz
Ojpmc3BhdGggfSwKLQkJeyAiZnJvbSIsICZhcmdzOjpmcm9tIH0sCi0JfTsKLQlhcmdzIGE7Ci0J
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBuaW92OyBpICs9IDIpIHsKLQkJc3RkOjpzdHJpbmcgcyhz
dGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oaW92W2ldLmlvdl9iYXNlKSk7Ci0JCWlmIChhcmdtYXAu
Y291bnQocykpIHsKLQkJCWEuKihhcmdtYXBbc10pID0gc3RhdGljX2Nhc3Q8Y2hhcio+KGlvdltp
KzFdLmlvdl9iYXNlKTsKLQkJfQotCX0KLQlyZXR1cm4gc3lzX21vdW50KGEuZnJvbSwgYS5mc3Bh
dGgsIGEuZnN0eXBlLCBmbGFncywgbnVsbHB0cik7Ci19Ci0KLXN0YXRpYyB2b2lkIGltcG9ydF9l
eHRyYV96ZnNfcG9vbHModm9pZCkKLXsKLQlzdHJ1Y3Qgc3RhdCBzdDsKLQlpbnQgcmV0OwotCi0J
Ly8gVGhlIGZpbGUgJy9ldGMvbW50dGFiJyBpcyBhIExpYlpGUyByZXF1aXJlbWVudCBhbmQgd2ls
bCBub3QKLQkvLyBleGlzdCBkdXJpbmcgY3Bpb2QgcGhhc2UuIFRoZSBmdW5jdGlvbmFsaXR5IHBy
b3ZpZGVkIGJ5IHRoaXMKLQkvLyBmdW5jdGlvbiBpc24ndCBuZWVkZWQgZHVyaW5nIHRoYXQgcGhh
c2UsIHNvIGxldCdzIHNraXAgaXQuCi0JaWYgKHN0YXQoIi9ldGMvbW50dGFiIiAsICZzdCkgIT0g
MCkgewotCQlyZXR1cm47Ci0JfQotCi0JLy8gSW1wb3J0IGV4dHJhIHBvb2xzIG1vdW50aW5nIGRh
dGFzZXRzIHRoZXJlIGNvbnRhaW5lZC4KLQkvLyBEYXRhc2V0cyBmcm9tIG9zdiBwb29sIHdpbGwg
bm90IGJlIG1vdW50ZWQgaGVyZS4KLQlpZiAoYWNjZXNzKCJ6cG9vbC5zbyIsIFhfT0spICE9IDAp
IHsKLQkJcmV0dXJuOwotCX0KLQl2ZWN0b3I8c3RyaW5nPiB6cG9vbF9hcmdzID0geyJ6cG9vbCIs
ICJpbXBvcnQiLCAiLWYiLCAiLWEiIH07Ci0JYXV0byBvayA9IG9zdjo6cnVuKCJ6cG9vbC5zbyIs
IHpwb29sX2FyZ3MsICZyZXQpOwotCWFzc2VydChvayk7Ci0KLQlpZiAoIXJldCkgewotCQlkZWJ1
ZygiemZzOiBleHRyYSBaRlMgcG9vbChzKSBmb3VuZC5cbiIpOwotCX0KLX0KLQotdm9pZCBwaXZv
dF9yb290ZnMoY29uc3QgY2hhciogcGF0aCkKLXsKLQlpbnQgcmV0ID0gc3lzX3Bpdm90X3Jvb3Qo
cGF0aCwgIi8iKTsKLQlpZiAocmV0KQotCQlrcHJpbnRmKCJmYWlsZWQgdG8gcGl2b3Qgcm9vdCwg
ZXJyb3IgPSAlc1xuIiwgc3RyZXJyb3IocmV0KSk7Ci0KLQlhdXRvIGVudCA9IHNldG1udGVudCgi
L2V0Yy9mc3RhYiIsICJyIik7Ci0JaWYgKCFlbnQpIHsKLQkJcmV0dXJuOwotCX0KLQotCXN0cnVj
dCBtbnRlbnQgKm0gPSBudWxscHRyOwotCXdoaWxlICgobSA9IGdldG1udGVudChlbnQpKSAhPSBu
dWxscHRyKSB7Ci0JCWlmICghc3RyY21wKG0tPm1udF9kaXIsICIvIikpIHsKLQkJCWNvbnRpbnVl
OwotCQl9Ci0KLQkJaWYgKChtLT5tbnRfb3B0cyAhPSBudWxscHRyKSAmJiBzdHJjbXAobS0+bW50
X29wdHMsIE1OVE9QVF9ERUZBVUxUUykpIHsKLQkJCXByaW50ZigiV2FybmluZzogb3B0cyAlcywg
aWdub3JlZCBmb3IgZnMgJXNcbiIsIG0tPm1udF9vcHRzLCBtLT5tbnRfdHlwZSk7Ci0JCX0KLQot
CQkvLyBGSVhNRTogUmlnaHQgbm93LCBpZ25vcmluZyBtbnRvcHMuIEluIHRoZSBmdXR1cmUgd2Ug
bWF5IGhhdmUgYW4gb3B0aW9uIHBhcnNlcgotCQlyZXQgPSBzeXNfbW91bnQobS0+bW50X2ZzbmFt
ZSwgbS0+bW50X2RpciwgbS0+bW50X3R5cGUsIDAsIG51bGxwdHIpOwotCQlpZiAocmV0KSB7Ci0J
CQlwcmludGYoImZhaWxlZCB0byBtb3VudCAlcywgZXJyb3IgPSAlc1xuIiwgbS0+bW50X3R5cGUs
IHN0cmVycm9yKHJldCkpOwotCQl9Ci0JfQotCWVuZG1udGVudChlbnQpOwotfQotCi1leHRlcm4g
IkMiIHZvaWQgdW5tb3VudF9kZXZmcygpCi17Ci0JaW50IHJldCA9IHN5c191bW91bnQoIi9kZXYi
KTsKLQlpZiAocmV0KQotCQlrcHJpbnRmKCJmYWlsZWQgdG8gdW5tb3VudCAvZGV2LCBlcnJvciA9
ICVzXG4iLCBzdHJlcnJvcihyZXQpKTsKLX0KLQotZXh0ZXJuICJDIiBpbnQgbW91bnRfcm9mc19y
b290ZnMoYm9vbCBwaXZvdF9yb290KQotewotCWludCByZXQ7Ci0KLQlpZiAobWtkaXIoIi9yb2Zz
IiwgMDc1NSkgPCAwKQotCQlrcHJpbnRmKCJmYWlsZWQgdG8gY3JlYXRlIC9yb2ZzLCBlcnJvciA9
ICVzXG4iLCBzdHJlcnJvcihlcnJubykpOwotCi0JcmV0ID0gc3lzX21vdW50KCIvZGV2L3ZibGsw
LjEiLCAiL3JvZnMiLCAicm9mcyIsIE1OVF9SRE9OTFksIDApOwotCi0JaWYgKHJldCkgewotCQlr
cHJpbnRmKCJmYWlsZWQgdG8gbW91bnQgL3JvZnMsIGVycm9yID0gJXNcbiIsIHN0cmVycm9yKHJl
dCkpOwotCQlybWRpcigiL3JvZnMiKTsKLQkJcmV0dXJuIHJldDsKLQl9Ci0KLQlpZiAocGl2b3Rf
cm9vdCkgewotCQlwaXZvdF9yb290ZnMoIi9yb2ZzIik7Ci0JfQotCi0JcmV0dXJuIDA7Ci19Ci0K
LWV4dGVybiAiQyIgdm9pZCBtb3VudF96ZnNfcm9vdGZzKGJvb2wgcGl2b3Rfcm9vdCkKLXsKLQlp
ZiAobWtkaXIoIi96ZnMiLCAwNzU1KSA8IDApCi0JCWtwcmludGYoImZhaWxlZCB0byBjcmVhdGUg
L3pmcywgZXJyb3IgPSAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKLQotCWludCByZXQgPSBzeXNf
bW91bnQoIi9kZXYvdmJsazAuMSIsICIvemZzIiwgInpmcyIsIDAsICh2b2lkICopIm9zdi96ZnMi
KTsKLQotCWlmIChyZXQpCi0JCWtwcmludGYoImZhaWxlZCB0byBtb3VudCAvemZzLCBlcnJvciA9
ICVzXG4iLCBzdHJlcnJvcihyZXQpKTsKLQotCWlmICghcGl2b3Rfcm9vdCkgewotCQlyZXR1cm47
Ci0JfQotCi0JcGl2b3Rfcm9vdGZzKCIvemZzIik7Ci0KLQlpbXBvcnRfZXh0cmFfemZzX3Bvb2xz
KCk7Ci19Ci0KLWV4dGVybiAiQyIgdm9pZCB1bm1vdW50X3Jvb3Rmcyh2b2lkKQotewotCWludCBy
ZXQ7Ci0KLQlzeXNfdW1vdW50KCIvZGV2Iik7Ci0KLQlyZXQgPSBzeXNfdW1vdW50KCIvcHJvYyIp
OwotCWlmIChyZXQpIHsKLQkJa3ByaW50ZigiV2FybmluZzogdW5tb3VudF9yb290ZnM6IGZhaWxl
ZCB0byB1bm1vdW50IC9wcm9jLCAiCi0JCQkiZXJyb3IgPSAlc1xuIiwgc3RyZXJyb3IocmV0KSk7
Ci0JfQotCi0JcmV0ID0gc3lzX3Vtb3VudDIoIi8iLCBNTlRfRk9SQ0UpOwotCWlmIChyZXQpIHsK
LQkJa3ByaW50ZigiV2FybmluZzogdW5tb3VudF9yb290ZnM6IGZhaWxlZCB0byB1bm1vdW50IC8s
ICIKLQkJCSJlcnJvciA9ICVzXG4iLCBzdHJlcnJvcihyZXQpKTsKLQl9Ci19Ci0KLWV4dGVybiAi
QyIgdm9pZCBiaW9faW5pdCh2b2lkKTsKLWV4dGVybiAiQyIgdm9pZCBiaW9fc3luYyh2b2lkKTsK
LQotaW50IHZmc19pbml0aWFsaXplZDsKLQotZXh0ZXJuICJDIgotdm9pZAotdmZzX2luaXQodm9p
ZCkKLXsKLQljb25zdCBzdHJ1Y3QgdmZzc3cgKmZzOwotCi0JYmlvX2luaXQoKTsKLQlsb29rdXBf
aW5pdCgpOwotCXZub2RlX2luaXQoKTsKLQl0YXNrX2FsbG9jKCZtYWluX3Rhc2spOwotCi0JLyoK
LQkgKiBJbml0aWFsaXplIGVhY2ggZmlsZSBzeXN0ZW0uCi0JICovCi0JZm9yIChmcyA9IHZmc3N3
OyBmcy0+dnNfbmFtZTsgZnMrKykgewotCQlpZiAoZnMtPnZzX2luaXQpIHsKLQkJCURQUklOVEYo
VkZTREJfQ09SRSwgKCJWRlM6IGluaXRpYWxpemluZyAlc1xuIiwKLQkJCQkJZnMtPnZzX25hbWUp
KTsKLQkJCWZzLT52c19pbml0KCk7Ci0JCX0KLQl9Ci0KLQltb3VudF9yb290ZnMoKTsKLQl1bnBh
Y2tfYm9vdGZzKCk7Ci0KLQkvLwlpZiAob3BlbigiL2Rldi9jb25zb2xlIiwgT19SRFdSLCAwKSAh
PSAwKQotCWlmIChjb25zb2xlOjpvcGVuKCkgIT0gMCkKLQkJa3ByaW50ZigiZmFpbGVkIHRvIG9w
ZW4gY29uc29sZSwgZXJyb3IgPSAlZFxuIiwgZXJybm8pOwotCWlmIChkdXAoMCkgIT0gMSkKLQkJ
a3ByaW50ZigiZmFpbGVkIHRvIGR1cCBjb25zb2xlICgxKVxuIik7Ci0JaWYgKGR1cCgwKSAhPSAy
KQotCQlrcHJpbnRmKCJmYWlsZWQgdG8gZHVwIGNvbnNvbGUgKDIpXG4iKTsKLQl2ZnNfaW5pdGlh
bGl6ZWQgPSAxOwotfQotCi12b2lkIHZmc19leGl0KHZvaWQpCi17Ci0JLyogRnJlZSB1cCBtYWlu
X3Rhc2sgKHN0b3JlcyBjd2QgZGF0YSkgcmVzb3VyY2VzICovCi0JcmVwbGFjZV9jd2QobWFpbl90
YXNrLCBudWxscHRyLCBbXSgpIHsgcmV0dXJuIDA7IH0pOwotCS8qIFVubW91bnQgYWxsIGZpbGUg
c3lzdGVtcyAqLwotCXVubW91bnRfcm9vdGZzKCk7Ci0JLyogRmluaXNoIHdpdGggdGhlIGJpbyBs
YXllciAqLwotCWJpb19zeW5jKCk7Ci19Ci0KLXZvaWQgc3lzX3BhbmljKGNvbnN0IGNoYXIgKnN0
cikKLXsKLQlhYm9ydCgicGFuaWM6ICVzIiwgc3RyKTsKLX0KLQpkaWZmIC0tZ2l0IGEvbGliL3Zm
c2NvcmUvbW91bnQuYyBiL2xpYi92ZnNjb3JlL21vdW50LmMKaW5kZXggNzZlMmU3MGMuLjEwYzI3
ZmFkIDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9tb3VudC5jCisrKyBiL2xpYi92ZnNjb3JlL21v
dW50LmMKQEAgLTgzLDE3ICs4Myw2IEBAIGZzX2dldGZzKGNvbnN0IGNoYXIgKm5hbWUpCiAJcmV0
dXJuIGZzOwogfQogCi1jb25zdCBjaGFyKgotZnNfZ2V0ZnNuYW1lKHZmc29wcyogb3BzKQotewot
CWZvciAoYXV0byBmcyA9IHZmc3N3OyBmcy0+dnNfbmFtZTsgZnMrKykgewotCQlpZiAoZnMtPnZz
X29wID09IG9wcykgewotCQkJcmV0dXJuIGZzLT52c19uYW1lOwotCQl9Ci0JfQotCWFib3J0KCk7
Ci19Ci0KIGludAogc3lzX21vdW50KGNvbnN0IGNoYXIgKmRldiwgY29uc3QgY2hhciAqZGlyLCBj
b25zdCBjaGFyICpmc25hbWUsIGludCBmbGFncywgY29uc3Qgdm9pZCAqZGF0YSkKIHsKQEAgLTE0
MSw3ICsxMzAsOCBAQCBzeXNfbW91bnQoY29uc3QgY2hhciAqZGV2LCBjb25zdCBjaGFyICpkaXIs
IGNvbnN0IGNoYXIgKmZzbmFtZSwgaW50IGZsYWdzLCBjb25zdAogCS8qCiAJICogQ3JlYXRlIFZG
UyBtb3VudCBlbnRyeS4KIAkgKi8KLQlpZiAoIShtcCA9IG5ldyBtb3VudCkpIHsKKwltcCA9IG1h
bGxvYyhzaXplb2Yoc3RydWN0IG1vdW50KSk7CisJaWYgKCFtcCkgewogCQllcnJvciA9IEVOT01F
TTsKIAkJZ290byBlcnIxOwogCX0KQEAgLTIxNCw3ICsyMDQsNyBAQCBzeXNfbW91bnQoY29uc3Qg
Y2hhciAqZGV2LCBjb25zdCBjaGFyICpkaXIsIGNvbnN0IGNoYXIgKmZzbmFtZSwgaW50IGZsYWdz
LCBjb25zdAogCWlmIChkcF9jb3ZlcmVkKQogCQlkcmVsZShkcF9jb3ZlcmVkKTsKICBlcnIyOgot
CWRlbGV0ZSBtcDsKKwlmcmVlKG1wKTsKICBlcnIxOgogCWlmIChkZXZpY2UpCiAJCWRldmljZV9j
bG9zZShkZXZpY2UpOwpAQCAtMjgxLDcgKzI3MSw3IEBAIGZvdW5kOgogCiAJaWYgKG1wLT5tX2Rl
dikKIAkJZGV2aWNlX2Nsb3NlKG1wLT5tX2Rldik7Ci0JZGVsZXRlIG1wOworCWZyZWUobXApOwog
IG91dDoKIAlyZXR1cm4gZXJyb3I7CiB9CkBAIC0yOTIsNiArMjgyLDcgQEAgc3lzX3Vtb3VudChj
b25zdCBjaGFyICpwYXRoKQogCXJldHVybiBzeXNfdW1vdW50MihwYXRoLCAwKTsKIH0KIAorI2lm
IDAKIGludAogc3lzX3Bpdm90X3Jvb3QoY29uc3QgY2hhciAqbmV3X3Jvb3QsIGNvbnN0IGNoYXIg
KnB1dF9vbGQpCiB7CkBAIC0zMzksNiArMzMwLDcgQEAgc3lzX3Bpdm90X3Jvb3QoY29uc3QgY2hh
ciAqbmV3X3Jvb3QsIGNvbnN0IGNoYXIgKnB1dF9vbGQpCiAJfQogCXJldHVybiAwOwogfQorI2Vu
ZGlmCiAKIGludAogc3lzX3N5bmModm9pZCkKQEAgLTQ1MCwzMyArNDQyLDYgQEAgdmZzX2VpbnZh
bCh2b2lkKQogCXJldHVybiBFSU5WQUw7CiB9CiAKLW5hbWVzcGFjZSBvc3YgewotCi1tb3VudF9k
ZXNjIHRvX21vdW50X2Rlc2MobW91bnQqIG0pCi17Ci0JbW91bnRfZGVzYyByZXQ7Ci0JcmV0LnNw
ZWNpYWwgPSBtLT5tX3NwZWNpYWw7Ci0JcmV0LnBhdGggPSBtLT5tX3BhdGg7Ci0JcmV0LnR5cGUg
PSBmc19nZXRmc25hbWUobS0+bV9vcCk7Ci0JLy8gRklYTUU6IHJlY29yZCBvcHRpb25zCi0JcmV0
Lm9wdGlvbnMgPSAiIjsKLQlyZXR1cm4gcmV0OwotfQotCi1zdGQ6OnZlY3Rvcjxtb3VudF9kZXNj
PgotY3VycmVudF9tb3VudHMoKQotewotCVdJVEhfTE9DSyhtb3VudF9sb2NrKSB7Ci0JCXN0ZDo6
dmVjdG9yPG1vdW50X2Rlc2M+IHJldDsKLQkJZm9yIChhdXRvJiYgbXAgOiBtb3VudF9saXN0KSB7
Ci0JCQlyZXQucHVzaF9iYWNrKHRvX21vdW50X2Rlc2MobXApKTsKLQkJfQotCQlyZXR1cm4gcmV0
OwotCX0KLX0KLQotfQotCiAjaWZkZWYgREVCVUdfVkZTCiB2b2lkCiBtb3VudF9kdW1wKHZvaWQp
CmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9zeXNjYWxscy5jIGIvbGliL3Zmc2NvcmUvc3lzY2Fs
bHMuYwppbmRleCAyOWIxNDIyMC4uNGU1NTMzN2YgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL3N5
c2NhbGxzLmMKKysrIGIvbGliL3Zmc2NvcmUvc3lzY2FsbHMuYwpAQCAtMTk1LDE3ICsxOTUsMTcg
QEAgc3lzX29wZW4oY2hhciAqcGF0aCwgaW50IGZsYWdzLCBtb2RlX3QgbW9kZSwgc3RydWN0IGZp
bGUgKipmcHApCiAJCQlnb3RvIG91dF92bl91bmxvY2s7CiAJfQogCi0JdHJ5IHsKLQkgICAgZmls
ZXJlZiBmID0gbWFrZV9maWxlPHZmc19maWxlPihmbGFncyk7Ci0JICAgIGZwID0gZi5nZXQoKTsK
LQkgICAgZmhvbGQoZnApOwotCX0gY2F0Y2ggKGludCBlcnIpIHsKLQkgICAgZXJyb3IgPSBlcnI7
CisJZnAgPSBjYWxsb2Moc2l6ZW9mKHN0cnVjdCB2ZnNjb3JlX2ZpbGUpLCAxKTsKKwlmaG9sZChm
cCk7CisJaWYgKCFmcCkgeworCSAgICBlcnJvciA9IEVOT01FTTsKIAkgICAgZ290byBvdXRfdm5f
dW5sb2NrOwogCX0KKwlmcC0+Zl9mbGFncyA9IGZsYWdzOworCiAJLy8gY2hhbmdlIHRvIHN0ZDo6
bW92ZSBvbmNlIGRwIGlzIGEgZGVudHJ5X3JlZgotCWZwLT5mX2RlbnRyeSA9IGRlbnRyeV9yZWYo
ZHAsIGZhbHNlKTsKLQlkcCA9IG51bGxwdHI7CisJZnAtPmZfZGVudHJ5ID0gZHA7CisJZHAgPSBO
VUxMOwogCiAJZXJyb3IgPSBWT1BfT1BFTih2cCwgZnApOwogCWlmIChlcnJvcikgewpAQCAtMjEz
LDcgKzIxMyw3IEBAIHN5c19vcGVuKGNoYXIgKnBhdGgsIGludCBmbGFncywgbW9kZV90IG1vZGUs
IHN0cnVjdCBmaWxlICoqZnBwKQogCQkvLyBOb3RlIGRpcmVjdCBkZWxldGUgb2YgZnAgaW5zdGVh
ZCBvZiBmZHJvcChmcCkuIGZwIHdhcyBuZXZlcgogCQkvLyByZXR1cm5lZCBzbyBjYW5ub3QgYmUg
aW4gdXNlLCBhbmQgYmVjYXVzZSBpdCB3YXNuJ3Qgb3BlbmVkCiAJCS8vIGl0IGNhbm5vdCBiZSBj
bG9zZSgpZWQuCi0JCWRlbGV0ZSBmcDsKKwkJZnJlZShmcCk7CiAJCXJldHVybiBlcnJvcjsKIAl9
CiAJdm5fdW5sb2NrKHZwKTsKQEAgLTI0MSwxMSArMjQxLDE0IEBAIGludAogc3lzX3JlYWQoc3Ry
dWN0IGZpbGUgKmZwLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlvdiwgc2l6ZV90IG5pb3YsCiAJCW9m
Zl90IG9mZnNldCwgc2l6ZV90ICpjb3VudCkKIHsKKwlpbnQgZXJyb3IgPSAwOworCXN0cnVjdCBp
b3ZlYyAqY29weV9pb3Y7CiAJaWYgKChmcC0+Zl9mbGFncyAmIEZSRUFEKSA9PSAwKQogCQlyZXR1
cm4gRUJBREY7CiAKIAlzaXplX3QgYnl0ZXMgPSAwOwotCWF1dG8gaW92cCA9IGlvdjsKKwljb25z
dCBzdHJ1Y3QgaW92ZWMgKmlvdnAgPSBpb3Y7CisKIAlmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bmlvdjsgaSsrKSB7CiAJCWlmIChpb3ZwLT5pb3ZfbGVuID4gSU9TSVpFX01BWCAtIGJ5dGVzKSB7
CiAJCQlyZXR1cm4gRUlOVkFMOwpAQCAtMjYwLDE2ICsyNjMsMjcgQEAgc3lzX3JlYWQoc3RydWN0
IGZpbGUgKmZwLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlvdiwgc2l6ZV90IG5pb3YsCiAJfQogCiAJ
c3RydWN0IHVpbyB1aW87Ci0JLy8gVW5mb3J0dW5hdGVseSwgdGhlIGN1cnJlbnQgaW1wbGVtZW50
YXRpb24gb2YgZnAtPnJlYWQgemVyb3MgdGhlCi0JLy8gaW92X2xlbiBmaWVsZHMgd2hlbiBpdCBy
ZWFkcyBmcm9tIGRpc2ssIHNvIHdlIGhhdmUgdG8gY29weSBpb3YuCi0Jc3RkOjp2ZWN0b3I8aW92
ZWM+IGNvcHlfaW92KGlvdiwgaW92ICsgbmlvdik7Ci0JdWlvLnVpb19pb3YgPSBjb3B5X2lvdi5k
YXRhKCk7CisJLyogVE9ETzogaXMgaXQgbmVjZXNzYXJ5IHRvIGNvcHkgaW92IHdpdGhpbiBVbmlr
cmFmdD8KKwkgKiBPU3YgZGlkIHRoaXMsIG1lbnRpb25pbmcgdGhpcyByZWFzb246CisJICoKKwkg
KiAiVW5mb3J0dW5hdGVseSwgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb2YgZnAtPnJlYWQK
KwkgKiAgemVyb3MgdGhlIGlvdl9sZW4gZmllbGRzIHdoZW4gaXQgcmVhZHMgZnJvbSBkaXNrLCBz
byB3ZQorCSAqICBoYXZlIHRvIGNvcHkgaW92LiAiCisJICovCisJY29weV9pb3YgPSBjYWxsb2Mo
c2l6ZW9mKHN0cnVjdCBpb3ZlYyksIG5pb3YpOworCWlmICghY29weV9pb3YpCisJCXJldHVybiBF
Tk9NRU07CisJbWVtY3B5KGNvcHlfaW92LCBpb3YsIHNpemVvZihzdHJ1Y3QgaW92ZWMpKm5pb3Yp
OworCisJdWlvLnVpb19pb3YgPSBjb3B5X2lvdjsKIAl1aW8udWlvX2lvdmNudCA9IG5pb3Y7CiAJ
dWlvLnVpb19vZmZzZXQgPSBvZmZzZXQ7CiAJdWlvLnVpb19yZXNpZCA9IGJ5dGVzOwogCXVpby51
aW9fcncgPSBVSU9fUkVBRDsKLQlhdXRvIGVycm9yID0gZnAtPnJlYWQoJnVpbywgKG9mZnNldCA9
PSAtMSkgPyAwIDogRk9GX09GRlNFVCk7CisJZXJyb3IgPSB2ZnNfcmVhZChmcCwgJnVpbywgKG9m
ZnNldCA9PSAtMSkgPyAwIDogRk9GX09GRlNFVCk7CiAJKmNvdW50ID0gYnl0ZXMgLSB1aW8udWlv
X3Jlc2lkOworCisJZnJlZShjb3B5X2lvdik7CiAJcmV0dXJuIGVycm9yOwogfQogCkBAIC0yNzcs
MTEgKzI5MSwxMyBAQCBpbnQKIHN5c193cml0ZShzdHJ1Y3QgZmlsZSAqZnAsIGNvbnN0IHN0cnVj
dCBpb3ZlYyAqaW92LCBzaXplX3QgbmlvdiwKIAkJb2ZmX3Qgb2Zmc2V0LCBzaXplX3QgKmNvdW50
KQogeworCXN0cnVjdCBpb3ZlYyAqY29weV9pb3Y7CisJaW50IGVycm9yID0gMDsKIAlpZiAoKGZw
LT5mX2ZsYWdzICYgRldSSVRFKSA9PSAwKQogCQlyZXR1cm4gRUJBREY7CiAKIAlzaXplX3QgYnl0
ZXMgPSAwOwotCWF1dG8gaW92cCA9IGlvdjsKKwljb25zdCBzdHJ1Y3QgaW92ZWMgKmlvdnAgPSBp
b3Y7CiAJZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG5pb3Y7IGkrKykgewogCQlpZiAoaW92cC0+
aW92X2xlbiA+IElPU0laRV9NQVggLSBieXRlcykgewogCQkJcmV0dXJuIEVJTlZBTDsKQEAgLTI5
NiwxNSArMzEyLDI0IEBAIHN5c193cml0ZShzdHJ1Y3QgZmlsZSAqZnAsIGNvbnN0IHN0cnVjdCBp
b3ZlYyAqaW92LCBzaXplX3QgbmlvdiwKIAl9CiAKIAlzdHJ1Y3QgdWlvIHVpbzsKLQkvLyBVbmZv
cnR1bmF0ZWx5LCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvZiBmcC0+d3JpdGUgemVyb3Mg
dGhlCi0JLy8gaW92X2xlbiBmaWVsZHMgd2hlbiBpdCB3cml0ZXMgdG8gZGlzaywgc28gd2UgaGF2
ZSB0byBjb3B5IGlvdi4KLQlzdGQ6OnZlY3Rvcjxpb3ZlYz4gY29weV9pb3YoaW92LCBpb3YgKyBu
aW92KTsKLQl1aW8udWlvX2lvdiA9IGNvcHlfaW92LmRhdGEoKTsKKworCS8qIFRPRE86IHNhbWUg
bm90ZSBhcyBpbiBzeXNfcmVhZC4gT3JpZ2luYWwgY29tbWVudDoKKwkgKgorCSAqICJVbmZvcnR1
bmF0ZWx5LCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvZiBmcC0+d3JpdGUgemVyb3MgdGhl
CisJICogIGlvdl9sZW4gZmllbGRzIHdoZW4gaXQgd3JpdGVzIHRvIGRpc2ssIHNvIHdlIGhhdmUg
dG8gY29weSBpb3YuCisJICovCisJLyogc3RkOjp2ZWN0b3I8aW92ZWM+IGNvcHlfaW92KGlvdiwg
aW92ICsgbmlvdik7ICovCisJY29weV9pb3YgPSBjYWxsb2Moc2l6ZW9mKHN0cnVjdCBpb3ZlYyks
IG5pb3YpOworCWlmICghY29weV9pb3YpCisJCXJldHVybiBFTk9NRU07CisJbWVtY3B5KGNvcHlf
aW92LCBpb3YsIHNpemVvZihzdHJ1Y3QgaW92ZWMpKm5pb3YpOworCisJdWlvLnVpb19pb3YgPSBj
b3B5X2lvdjsKIAl1aW8udWlvX2lvdmNudCA9IG5pb3Y7CiAJdWlvLnVpb19vZmZzZXQgPSBvZmZz
ZXQ7CiAJdWlvLnVpb19yZXNpZCA9IGJ5dGVzOwogCXVpby51aW9fcncgPSBVSU9fV1JJVEU7Ci0J
YXV0byBlcnJvciA9IGZwLT53cml0ZSgmdWlvLCAob2Zmc2V0ID09IC0xKSA/IDAgOiBGT0ZfT0ZG
U0VUKTsKKwl2ZnNfd3JpdGUoZnAsICZ1aW8sIChvZmZzZXQgPT0gLTEpID8gMCA6IEZPRl9PRkZT
RVQpOwogCSpjb3VudCA9IGJ5dGVzIC0gdWlvLnVpb19yZXNpZDsKIAlyZXR1cm4gZXJyb3I7CiB9
CkBAIC0zNTUsNyArMzgwLDcgQEAgc3lzX2lvY3RsKHN0cnVjdCBmaWxlICpmcCwgdV9sb25nIHJl
cXVlc3QsIHZvaWQgKmJ1ZikKIAlpZiAoKGZwLT5mX2ZsYWdzICYgKEZSRUFEIHwgRldSSVRFKSkg
PT0gMCkKIAkJcmV0dXJuIEVCQURGOwogCi0JZXJyb3IgPSBmcC0+aW9jdGwocmVxdWVzdCwgYnVm
KTsKKwllcnJvciA9IHZmc19pb2N0bChmcCwgcmVxdWVzdCwgYnVmKTsKIAogCURQUklOVEYoVkZT
REJfU1lTQ0FMTCwgKCJzeXNfaW9jdGw6IGNvbXAgZXJyb3I9JWRcbiIsIGVycm9yKSk7CiAJcmV0
dXJuIGVycm9yOwpAQCAtMzg2LDcgKzQxMSw3IEBAIHN5c19mc3RhdChzdHJ1Y3QgZmlsZSAqZnAs
IHN0cnVjdCBzdGF0ICpzdCkKIAogCURQUklOVEYoVkZTREJfU1lTQ0FMTCwgKCJzeXNfZnN0YXQ6
IGZwPSV4XG4iLCBmcCkpOwogCi0JZXJyb3IgPSBmcC0+c3RhdChzdCk7CisJZXJyb3IgPSB2ZnNf
c3RhdChmcCwgc3QpOwogCiAJcmV0dXJuIGVycm9yOwogfQpAQCAtODE1LDEwICs4NDAsOCBAQCBz
eXNfc3ltbGluayhjb25zdCBjaGFyICpvbGRwYXRoLCBjb25zdCBjaGFyICpuZXdwYXRoKQogewog
CXN0cnVjdCB0YXNrCSp0ID0gbWFpbl90YXNrOwogCWludAkJZXJyb3I7Ci0Jc3RkOjp1bmlxdWVf
cHRyPGNoYXIgW10+IHVwX29wIChuZXcgY2hhcltQQVRIX01BWF0pOwotCWNoYXIJCSpvcCA9IHVw
X29wLmdldCgpOwotCXN0ZDo6dW5pcXVlX3B0cjxjaGFyIFtdPiB1cF9ucCAobmV3IGNoYXJbUEFU
SF9NQVhdKTsKLQljaGFyCQkqbnAgPSB1cF9ucC5nZXQoKTsKKwljaGFyCQlvcFtQQVRIX01BWF07
CisJY2hhcgkJbnBbUEFUSF9NQVhdOwogCXN0cnVjdCBkZW50cnkJKm5ld2RwOwogCXN0cnVjdCBk
ZW50cnkJKm5ld2RpcmRwOwogCWNoYXIJCSpuYW1lOwpAQCAtMTAzMiwxNyArMTA1NSwxNyBAQCBz
eXNfYWNjZXNzKGNoYXIgKnBhdGgsIGludCBtb2RlKQogaW50CiBzeXNfc3RhdChjaGFyICpwYXRo
LCBzdHJ1Y3Qgc3RhdCAqc3QpCiB7CisJc3RydWN0IGRlbnRyeSAqZHA7CisJaW50IGVycm9yOwor
CiAJRFBSSU5URihWRlNEQl9TWVNDQUxMLCAoInN5c19zdGF0OiBwYXRoPSVzXG4iLCBwYXRoKSk7
CiAKLQl0cnkgewotCQlkZW50cnlfcmVmIGRwID0gbmFtZWkocGF0aCk7Ci0JCWlmICghZHApIHsK
LQkJCXJldHVybiBFTk9FTlQ7Ci0JCX0KLQkJcmV0dXJuIHZuX3N0YXQoZHAtPmRfdm5vZGUsIHN0
KTsKLQl9IGNhdGNoIChlcnJvciBlKSB7Ci0JCXJldHVybiBlLmdldCgpOwotCX0KKwllcnJvciA9
IG5hbWVpKHBhdGgsICZkcCk7CisJaWYgKGVycm9yKQorCQlyZXR1cm4gZXJyb3I7CisJZXJyb3Ig
PSB2bl9zdGF0KGRwLT5kX3Zub2RlLCBzdCk7CisJZHJlbGUoZHApOworCXJldHVybiBlcnJvcjsK
IH0KIAogaW50IHN5c19sc3RhdChjaGFyICpwYXRoLCBzdHJ1Y3Qgc3RhdCAqc3QpCkBAIC0xMDc0
LDE2ICsxMDk3LDE5IEBAIGludCBzeXNfbHN0YXQoY2hhciAqcGF0aCwgc3RydWN0IHN0YXQgKnN0
KQogaW50CiBzeXNfc3RhdGZzKGNoYXIgKnBhdGgsIHN0cnVjdCBzdGF0ZnMgKmJ1ZikKIHsKKwlz
dHJ1Y3QgZGVudHJ5ICpkcDsKKwlpbnQgZXJyb3I7CisKIAltZW1zZXQoYnVmLCAwLCBzaXplb2Yo
KmJ1ZikpOwotCXRyeSB7Ci0JCWRlbnRyeV9yZWYgZHAgPSBuYW1laShwYXRoKTsKLQkJaWYgKCFk
cCkgewotCQkJcmV0dXJuIEVOT0VOVDsKLQkJfQotCQlyZXR1cm4gVkZTX1NUQVRGUyhkcC0+ZF9t
b3VudCwgYnVmKTsKLQl9IGNhdGNoIChlcnJvciBlKSB7Ci0JCXJldHVybiBlLmdldCgpOwotCX0K
KworCWVycm9yID0gbmFtZWkocGF0aCwgJmRwKTsKKwlpZiAoZXJyb3IpCisJCXJldHVybiBlcnJv
cjsKKworCWVycm9yID0gVkZTX1NUQVRGUyhkcC0+ZF9tb3VudCwgYnVmKTsKKwlkcmVsZShkcCk7
CisKKwlyZXR1cm4gZXJyb3I7CiB9CiAKIGludApAQCAtMTIxMiw2ICsxMjM4LDcgQEAgc3lzX3Jl
YWRsaW5rKGNoYXIgKnBhdGgsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnNpemUsIHNzaXplX3QgKnNp
emUpCiAJcmV0dXJuICgwKTsKIH0KIAorI2lmIDAKIC8qCiAgKiBDaGVjayB0aGUgdmFsaWRpdHkg
b2YgdGhlIG1lbWJlcnMgb2YgYSBzdHJ1Y3QgdGltZXZhbC4KICAqLwpAQCAtMTM5Niw2ICsxNDIz
LDcgQEAgc3lzX2Z1dGltZW5zKGludCBmZCwgY29uc3Qgc3RydWN0IHRpbWVzcGVjIHRpbWVzWzJd
KQogCWF1dG8gZXJyb3IgPSBzeXNfdXRpbWVuc2F0KEFUX0ZEQ1dELCBwYXRobmFtZS5jX3N0cigp
LCB0aW1lcywgMCk7CiAJcmV0dXJuIGVycm9yOwogfQorI2VuZGlmCiAKIGludAogc3lzX2ZhbGxv
Y2F0ZShzdHJ1Y3QgZmlsZSAqZnAsIGludCBtb2RlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVu
KQpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvdGFzay5jIGIvbGliL3Zmc2NvcmUvdGFzay5jCmlu
ZGV4IDJkMzRmMGRmLi40Y2ViMTIzYiAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvdGFzay5jCisr
KyBiL2xpYi92ZnNjb3JlL3Rhc2suYwpAQCAtNDQsMjMgKzQ0LDYgQEAKICNpbmNsdWRlIDxvc3Yv
cHJleC5oPgogI2luY2x1ZGUgInZmcy5oIgogCi0vKgotICogQWxsb2NhdGUgbmV3IHRhc2suCi0g
Ki8KLWludAotdGFza19hbGxvYyhzdHJ1Y3QgdGFzayAqKnB0KQotewotCXN0cnVjdCB0YXNrICp0
OwotCi0JLy8gRklYTUU6IHdoZXJlIGRvIHdlIGZyZWUgdGFzayA/Ci0JaWYgKCEodCA9IG5ldyB0
YXNrKSkKLQkJcmV0dXJuIEVOT01FTTsKLQltZW1zZXQodCwgMCwgc2l6ZW9mKHN0cnVjdCB0YXNr
KSk7Ci0Jc3RybGNweSh0LT50X2N3ZCwgIi8iLCBzaXplb2YodC0+dF9jd2QpKTsKLQotCSpwdCA9
IHQ7Ci0JcmV0dXJuIDA7Ci19CiAKIC8qCiAgKiBDb252ZXJ0IHRvIGZ1bGwgcGF0aCBmcm9tIHRo
ZSBjd2Qgb2YgdGFzayBhbmQgcGF0aC4KZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3Zmcy5oIGIv
bGliL3Zmc2NvcmUvdmZzLmgKaW5kZXggYzEzMDUxN2QuLmNkOTQwOTc5IDEwMDY0NAotLS0gYS9s
aWIvdmZzY29yZS92ZnMuaAorKysgYi9saWIvdmZzY29yZS92ZnMuaApAQCAtODksNyArODksNiBA
QCBzdHJ1Y3QgdGFzayB7CiAKIGV4dGVybiBjb25zdCBzdHJ1Y3QgdmZzc3cgdmZzc3dbXTsKIAot
X19CRUdJTl9ERUNMUwogaW50CSBzeXNfb3BlbihjaGFyICpwYXRoLCBpbnQgZmxhZ3MsIG1vZGVf
dCBtb2RlLCBzdHJ1Y3QgZmlsZSAqKmZwKTsKIGludAkgc3lzX3JlYWQoc3RydWN0IGZpbGUgKmZw
LCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlvdiwgc2l6ZV90IG5pb3YsCiAJCW9mZl90IG9mZnNldCwg
c2l6ZV90ICpjb3VudCk7CkBAIC0xNjcsMjYgKzE2Niw0IEBAIHZvaWQJIHZub2RlX2R1bXAodm9p
ZCk7CiB2b2lkCSBtb3VudF9kdW1wKHZvaWQpOwogI2VuZGlmCiAKLV9fRU5EX0RFQ0xTCi0KLSNp
ZmRlZiBfX2NwbHVzcGx1cwotCi0vLyBDb252ZXJ0IGEgcGF0aCB0byBhIGRlbnRyeV9yZWYuICBS
ZXR1cm5zIGFuIGVtcHR5Ci0vLyByZWZlcmVuY2UgaWYgbm90IGZvdW5kIChFTk9FTlQpIGZvciBl
ZmZpY2llbmN5LCB0aHJvd3MKLS8vIGFuIGVycm9yIG9uIG90aGVyIGVycm9ycy4KLWlubGluZSBk
ZW50cnlfcmVmIG5hbWVpKGNoYXIqIHBhdGgpCi17Ci0JZGVudHJ5KiBkcDsKLQlhdXRvIGVyciA9
IG5hbWVpKHBhdGgsICZkcCk7Ci0JaWYgKGVyciA9PSBFTk9FTlQpIHsKLQkJcmV0dXJuIGRlbnRy
eV9yZWYoKTsKLQl9IGVsc2UgaWYgKGVycikgewotCQl0aHJvdyBtYWtlX2Vycm9yKGVycik7Ci0J
fSBlbHNlIHsKLQkJcmV0dXJuIGRlbnRyeV9yZWYoZHAsIGZhbHNlKTsKLQl9Ci19Ci0KLSNlbmRp
ZgotCiAjZW5kaWYgLyogIV9WRlNfSCAqLwpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvdm5vZGUu
YyBiL2xpYi92ZnNjb3JlL3Zub2RlLmMKaW5kZXggMzQxMmM2ZmIuLmY1NjQ1NzdmIDEwMDY0NAot
LS0gYS9saWIvdmZzY29yZS92bm9kZS5jCisrKyBiL2xpYi92ZnNjb3JlL3Zub2RlLmMKQEAgLTE4
Nyw3ICsxODcsOCBAQCB2Z2V0KHN0cnVjdCBtb3VudCAqbXAsIHVpbnQ2NF90IGlubywgc3RydWN0
IHZub2RlICoqdnBwKQogCQlyZXR1cm4gMTsKIAl9CiAKLQlpZiAoISh2cCA9IG5ldyB2bm9kZSgp
KSkgeworCXZwID0gbWFsbG9jKHNpemVvZigqdnApKTsKKwlpZiAoIXZwKSB7CiAJCVZOT0RFX1VO
TE9DSygpOwogCQlyZXR1cm4gMDsKIAl9Ci0tIAoyLjE5LjIKCgoKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApN
aW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0
Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Feb 04 14:43:30 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 04 Feb 2019 14:43:30 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gqfT8-0007Sf-BO; Mon, 04 Feb 2019 14:43:30 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Kl24=QL=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gqfT6-0007SP-UT
 for minios-devel@lists.xen.org; Mon, 04 Feb 2019 14:43:29 +0000
X-Inumbo-ID: 3756d04e-288b-11e9-9704-2bb68527d209
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 3756d04e-288b-11e9-9704-2bb68527d209;
 Mon, 04 Feb 2019 14:43:21 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id DBC33104D62;
 Mon,  4 Feb 2019 15:38:13 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 5IzqRZv2hIJU; Mon,  4 Feb 2019 15:38:13 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 794D3104BDB
 for <minios-devel@lists.xen.org>; Mon,  4 Feb 2019 15:38:11 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 4 Feb 2019 15:38:11 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>, <Simon.kuenzer@neclab.eu>,
 <sharan.santhanam@neclab.eu>
Date: Mon, 4 Feb 2019 15:36:57 +0100
Message-ID: <20190204143739.29249-6-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 05/23] lib/vfscore: tabify
 imported vfs code
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VG8gY29tcGx5IHdpdGggVW5pa3JhZnQgY29kaW5nIHN0eWxlLCBpbmRlbnRzIG11c3QgYmUgdGFi
cywgbm90CnNwYWNlcy4gSW1wb3J0ZWQgY29kZSB3YXMgYSBtaXh0dXJlIG9mIGJvdGguCgpTaWdu
ZWQtb2ZmLWJ5OiBZdXJpIFZvbGNoa292IDx5dXJpLnZvbGNoa292QG5lY2xhYi5ldT4KLS0tCiBs
aWIvdmZzY29yZS9kZW50cnkuYyAgICAgICAgICAgICAgICAgfCAgMjY4ICstLQogbGliL3Zmc2Nv
cmUvZm9wcy5jICAgICAgICAgICAgICAgICAgIHwgICAzMiArLQogbGliL3Zmc2NvcmUvaW5jbHVk
ZS92ZnNjb3JlL2RlbnRyeS5oIHwgICAgNCArLQogbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3Jl
L21vdW50LmggIHwgICAgOCArLQogbGliL3Zmc2NvcmUvbG9va3VwLmMgICAgICAgICAgICAgICAg
IHwgIDU1NCArKy0tLQogbGliL3Zmc2NvcmUvbWFpbi5jICAgICAgICAgICAgICAgICAgIHwgMjg0
NCArKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQogbGliL3Zmc2NvcmUvbW91bnQuYyAgICAgICAg
ICAgICAgICAgIHwgIDU4MCArKystLS0KIGxpYi92ZnNjb3JlL3N5c2NhbGxzLmMgICAgICAgICAg
ICAgICB8ICA0NjQgKystLS0KIGxpYi92ZnNjb3JlL3Rhc2suYyAgICAgICAgICAgICAgICAgICB8
ICAgMTAgKy0KIGxpYi92ZnNjb3JlL3Zmcy5oICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0K
IGxpYi92ZnNjb3JlL3Zub2RlLmMgICAgICAgICAgICAgICAgICB8ICAgNTAgKy0KIDExIGZpbGVz
IGNoYW5nZWQsIDI0MDggaW5zZXJ0aW9ucygrKSwgMjQwOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1n
aXQgYS9saWIvdmZzY29yZS9kZW50cnkuYyBiL2xpYi92ZnNjb3JlL2RlbnRyeS5jCmluZGV4IGZh
Y2Q5ZWFhLi5jMmYyMDliMiAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvZGVudHJ5LmMKKysrIGIv
bGliL3Zmc2NvcmUvZGVudHJ5LmMKQEAgLTU1LDE4MCArNTUsMTgwIEBAIHN0YXRpYyBtdXRleCBk
ZW50cnlfaGFzaF9sb2NrOwogc3RhdGljIHVfaW50CiBkZW50cnlfaGFzaChzdHJ1Y3QgbW91bnQg
Km1wLCBjb25zdCBjaGFyICpwYXRoKQogewotICAgIHVfaW50IHZhbCA9IDA7Ci0KLSAgICBpZiAo
cGF0aCkgewotICAgICAgICB3aGlsZSAoKnBhdGgpIHsKLSAgICAgICAgICAgIHZhbCA9ICgodmFs
IDw8IDUpICsgdmFsKSArICpwYXRoKys7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuICh2
YWwgXiAodW5zaWduZWQgbG9uZykgbXApICYgKERFTlRSWV9CVUNLRVRTIC0gMSk7CisJdV9pbnQg
dmFsID0gMDsKKworCWlmIChwYXRoKSB7CisJCXdoaWxlICgqcGF0aCkgeworCQkJdmFsID0gKCh2
YWwgPDwgNSkgKyB2YWwpICsgKnBhdGgrKzsKKwkJfQorCX0KKwlyZXR1cm4gKHZhbCBeICh1bnNp
Z25lZCBsb25nKSBtcCkgJiAoREVOVFJZX0JVQ0tFVFMgLSAxKTsKIH0KIAogCiBzdHJ1Y3QgZGVu
dHJ5ICoKIGRlbnRyeV9hbGxvYyhzdHJ1Y3QgZGVudHJ5ICpwYXJlbnRfZHAsIHN0cnVjdCB2bm9k
ZSAqdnAsIGNvbnN0IGNoYXIgKnBhdGgpCiB7Ci0gICAgc3RydWN0IG1vdW50ICptcCA9IHZwLT52
X21vdW50OwotICAgIHN0cnVjdCBkZW50cnkgKmRwID0gKGRlbnRyeSopY2FsbG9jKHNpemVvZigq
ZHApLCAxKTsKLQotICAgIGlmICghZHApIHsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
fQotCi0gICAgdnJlZih2cCk7Ci0KLSAgICBkcC0+ZF9yZWZjbnQgPSAxOwotICAgIGRwLT5kX3Zu
b2RlID0gdnA7Ci0gICAgZHAtPmRfbW91bnQgPSBtcDsKLSAgICBkcC0+ZF9wYXRoID0gc3RyZHVw
KHBhdGgpOwotICAgIExJU1RfSU5JVCgmZHAtPmRfY2hpbGRyZW4pOwotCi0gICAgaWYgKHBhcmVu
dF9kcCkgewotICAgICAgICBkcmVmKHBhcmVudF9kcCk7Ci0gICAgICAgIFdJVEhfTE9DSyhwYXJl
bnRfZHAtPmRfbG9jaykgewotICAgICAgICAgICAgLy8gSW5zZXJ0IGRwIGludG8gaXRzIHBhcmVu
dCdzIGNoaWxkcmVuIGxpc3QuCi0gICAgICAgICAgICBMSVNUX0lOU0VSVF9IRUFEKCZwYXJlbnRf
ZHAtPmRfY2hpbGRyZW4sIGRwLCBkX2NoaWxkcmVuX2xpbmspOwotICAgICAgICB9Ci0gICAgfQot
ICAgIGRwLT5kX3BhcmVudCA9IHBhcmVudF9kcDsKLQotICAgIHZuX2FkZF9uYW1lKHZwLCBkcCk7
Ci0KLSAgICBtdXRleF9sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKLSAgICBMSVNUX0lOU0VSVF9I
RUFEKCZkZW50cnlfaGFzaF90YWJsZVtkZW50cnlfaGFzaChtcCwgcGF0aCldLCBkcCwgZF9saW5r
KTsKLSAgICBtdXRleF91bmxvY2soJmRlbnRyeV9oYXNoX2xvY2spOwotICAgIHJldHVybiBkcDsK
KwlzdHJ1Y3QgbW91bnQgKm1wID0gdnAtPnZfbW91bnQ7CisJc3RydWN0IGRlbnRyeSAqZHAgPSAo
ZGVudHJ5KiljYWxsb2Moc2l6ZW9mKCpkcCksIDEpOworCisJaWYgKCFkcCkgeworCQlyZXR1cm4g
bnVsbHB0cjsKKwl9CisKKwl2cmVmKHZwKTsKKworCWRwLT5kX3JlZmNudCA9IDE7CisJZHAtPmRf
dm5vZGUgPSB2cDsKKwlkcC0+ZF9tb3VudCA9IG1wOworCWRwLT5kX3BhdGggPSBzdHJkdXAocGF0
aCk7CisJTElTVF9JTklUKCZkcC0+ZF9jaGlsZHJlbik7CisKKwlpZiAocGFyZW50X2RwKSB7CisJ
CWRyZWYocGFyZW50X2RwKTsKKwkJV0lUSF9MT0NLKHBhcmVudF9kcC0+ZF9sb2NrKSB7CisJCQkv
LyBJbnNlcnQgZHAgaW50byBpdHMgcGFyZW50J3MgY2hpbGRyZW4gbGlzdC4KKwkJCUxJU1RfSU5T
RVJUX0hFQUQoJnBhcmVudF9kcC0+ZF9jaGlsZHJlbiwgZHAsIGRfY2hpbGRyZW5fbGluayk7CisJ
CX0KKwl9CisJZHAtPmRfcGFyZW50ID0gcGFyZW50X2RwOworCisJdm5fYWRkX25hbWUodnAsIGRw
KTsKKworCW11dGV4X2xvY2soJmRlbnRyeV9oYXNoX2xvY2spOworCUxJU1RfSU5TRVJUX0hFQUQo
JmRlbnRyeV9oYXNoX3RhYmxlW2RlbnRyeV9oYXNoKG1wLCBwYXRoKV0sIGRwLCBkX2xpbmspOwor
CW11dGV4X3VubG9jaygmZGVudHJ5X2hhc2hfbG9jayk7CisJcmV0dXJuIGRwOwogfTsKIAogc3Ry
dWN0IGRlbnRyeSAqCiBkZW50cnlfbG9va3VwKHN0cnVjdCBtb3VudCAqbXAsIGNoYXIgKnBhdGgp
CiB7Ci0gICAgc3RydWN0IGRlbnRyeSAqZHA7Ci0KLSAgICBtdXRleF9sb2NrKCZkZW50cnlfaGFz
aF9sb2NrKTsKLSAgICBMSVNUX0ZPUkVBQ0goZHAsICZkZW50cnlfaGFzaF90YWJsZVtkZW50cnlf
aGFzaChtcCwgcGF0aCldLCBkX2xpbmspIHsKLSAgICAgICAgaWYgKGRwLT5kX21vdW50ID09IG1w
ICYmICFzdHJuY21wKGRwLT5kX3BhdGgsIHBhdGgsIFBBVEhfTUFYKSkgewotICAgICAgICAgICAg
ZHAtPmRfcmVmY250Kys7Ci0gICAgICAgICAgICBtdXRleF91bmxvY2soJmRlbnRyeV9oYXNoX2xv
Y2spOwotICAgICAgICAgICAgcmV0dXJuIGRwOwotICAgICAgICB9Ci0gICAgfQotICAgIG11dGV4
X3VubG9jaygmZGVudHJ5X2hhc2hfbG9jayk7Ci0gICAgcmV0dXJuIG51bGxwdHI7ICAgICAgICAg
ICAgICAgIC8qIG5vdCBmb3VuZCAqLworCXN0cnVjdCBkZW50cnkgKmRwOworCisJbXV0ZXhfbG9j
aygmZGVudHJ5X2hhc2hfbG9jayk7CisJTElTVF9GT1JFQUNIKGRwLCAmZGVudHJ5X2hhc2hfdGFi
bGVbZGVudHJ5X2hhc2gobXAsIHBhdGgpXSwgZF9saW5rKSB7CisJCWlmIChkcC0+ZF9tb3VudCA9
PSBtcCAmJiAhc3RybmNtcChkcC0+ZF9wYXRoLCBwYXRoLCBQQVRIX01BWCkpIHsKKwkJCWRwLT5k
X3JlZmNudCsrOworCQkJbXV0ZXhfdW5sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKKwkJCXJldHVy
biBkcDsKKwkJfQorCX0KKwltdXRleF91bmxvY2soJmRlbnRyeV9oYXNoX2xvY2spOworCXJldHVy
biBudWxscHRyOyAgICAgICAgICAgICAgICAvKiBub3QgZm91bmQgKi8KIH0KIAogc3RhdGljIHZv
aWQgZGVudHJ5X2NoaWxkcmVuX3JlbW92ZShzdHJ1Y3QgZGVudHJ5ICpkcCkKIHsKLSAgICBzdHJ1
Y3QgZGVudHJ5ICplbnRyeSA9IG51bGxwdHI7Ci0KLSAgICBXSVRIX0xPQ0soZHAtPmRfbG9jaykg
ewotICAgICAgICBMSVNUX0ZPUkVBQ0goZW50cnksICZkcC0+ZF9jaGlsZHJlbiwgZF9jaGlsZHJl
bl9saW5rKSB7Ci0gICAgICAgICAgICBBU1NFUlQoZW50cnkpOwotICAgICAgICAgICAgQVNTRVJU
KGVudHJ5LT5kX3JlZmNudCA+IDApOwotICAgICAgICAgICAgTElTVF9SRU1PVkUoZW50cnksIGRf
bGluayk7Ci0gICAgICAgIH0KLSAgICB9CisJc3RydWN0IGRlbnRyeSAqZW50cnkgPSBudWxscHRy
OworCisJV0lUSF9MT0NLKGRwLT5kX2xvY2spIHsKKwkJTElTVF9GT1JFQUNIKGVudHJ5LCAmZHAt
PmRfY2hpbGRyZW4sIGRfY2hpbGRyZW5fbGluaykgeworCQkJQVNTRVJUKGVudHJ5KTsKKwkJCUFT
U0VSVChlbnRyeS0+ZF9yZWZjbnQgPiAwKTsKKwkJCUxJU1RfUkVNT1ZFKGVudHJ5LCBkX2xpbmsp
OworCQl9CisJfQogfQogCiB2b2lkCiBkZW50cnlfbW92ZShzdHJ1Y3QgZGVudHJ5ICpkcCwgc3Ry
dWN0IGRlbnRyeSAqcGFyZW50X2RwLCBjaGFyICpwYXRoKQogewotICAgIHN0cnVjdCBkZW50cnkg
Km9sZF9wZHAgPSBkcC0+ZF9wYXJlbnQ7Ci0gICAgY2hhciAqb2xkX3BhdGggPSBkcC0+ZF9wYXRo
OwotCi0gICAgaWYgKG9sZF9wZHApIHsKLSAgICAgICAgV0lUSF9MT0NLKG9sZF9wZHAtPmRfbG9j
aykgewotICAgICAgICAgICAgLy8gUmVtb3ZlIGRwIGZyb20gaXRzIG9sZCBwYXJlbnQncyBjaGls
ZHJlbiBsaXN0LgotICAgICAgICAgICAgTElTVF9SRU1PVkUoZHAsIGRfY2hpbGRyZW5fbGluayk7
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAocGFyZW50X2RwKSB7Ci0gICAgICAgIGRyZWYo
cGFyZW50X2RwKTsKLSAgICAgICAgV0lUSF9MT0NLKHBhcmVudF9kcC0+ZF9sb2NrKSB7Ci0gICAg
ICAgICAgICAvLyBJbnNlcnQgZHAgaW50byBpdHMgbmV3IHBhcmVudCdzIGNoaWxkcmVuIGxpc3Qu
Ci0gICAgICAgICAgICBMSVNUX0lOU0VSVF9IRUFEKCZwYXJlbnRfZHAtPmRfY2hpbGRyZW4sIGRw
LCBkX2NoaWxkcmVuX2xpbmspOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgV0lUSF9MT0NLKGRl
bnRyeV9oYXNoX2xvY2spIHsKLSAgICAgICAgLy8gUmVtb3ZlIGFsbCBkcCdzIGNoaWxkIGRlbnRy
aWVzIGZyb20gdGhlIGhhc2h0YWJsZS4KLSAgICAgICAgZGVudHJ5X2NoaWxkcmVuX3JlbW92ZShk
cCk7Ci0gICAgICAgIC8vIFJlbW92ZSBkcCB3aXRoIG91dGRhdGVkIGhhc2ggaW5mbyBmcm9tIHRo
ZSBoYXNodGFibGUuCi0gICAgICAgIExJU1RfUkVNT1ZFKGRwLCBkX2xpbmspOwotICAgICAgICAv
LyBVcGRhdGUgZHAuCi0gICAgICAgIGRwLT5kX3BhdGggPSBzdHJkdXAocGF0aCk7Ci0gICAgICAg
IGRwLT5kX3BhcmVudCA9IHBhcmVudF9kcDsKLSAgICAgICAgLy8gSW5zZXJ0IGRwIHVwZGF0ZWQg
aGFzaCBpbmZvIGludG8gdGhlIGhhc2h0YWJsZS4KLSAgICAgICAgTElTVF9JTlNFUlRfSEVBRCgm
ZGVudHJ5X2hhc2hfdGFibGVbZGVudHJ5X2hhc2goZHAtPmRfbW91bnQsIHBhdGgpXSwKLSAgICAg
ICAgICAgIGRwLCBkX2xpbmspOwotICAgIH0KLQotICAgIGlmIChvbGRfcGRwKSB7Ci0gICAgICAg
IGRyZWxlKG9sZF9wZHApOwotICAgIH0KLQotICAgIGZyZWUob2xkX3BhdGgpOworCXN0cnVjdCBk
ZW50cnkgKm9sZF9wZHAgPSBkcC0+ZF9wYXJlbnQ7CisJY2hhciAqb2xkX3BhdGggPSBkcC0+ZF9w
YXRoOworCisJaWYgKG9sZF9wZHApIHsKKwkJV0lUSF9MT0NLKG9sZF9wZHAtPmRfbG9jaykgewor
CQkJLy8gUmVtb3ZlIGRwIGZyb20gaXRzIG9sZCBwYXJlbnQncyBjaGlsZHJlbiBsaXN0LgorCQkJ
TElTVF9SRU1PVkUoZHAsIGRfY2hpbGRyZW5fbGluayk7CisJCX0KKwl9CisKKwlpZiAocGFyZW50
X2RwKSB7CisJCWRyZWYocGFyZW50X2RwKTsKKwkJV0lUSF9MT0NLKHBhcmVudF9kcC0+ZF9sb2Nr
KSB7CisJCQkvLyBJbnNlcnQgZHAgaW50byBpdHMgbmV3IHBhcmVudCdzIGNoaWxkcmVuIGxpc3Qu
CisJCQlMSVNUX0lOU0VSVF9IRUFEKCZwYXJlbnRfZHAtPmRfY2hpbGRyZW4sIGRwLCBkX2NoaWxk
cmVuX2xpbmspOworCQl9CisJfQorCisJV0lUSF9MT0NLKGRlbnRyeV9oYXNoX2xvY2spIHsKKwkJ
Ly8gUmVtb3ZlIGFsbCBkcCdzIGNoaWxkIGRlbnRyaWVzIGZyb20gdGhlIGhhc2h0YWJsZS4KKwkJ
ZGVudHJ5X2NoaWxkcmVuX3JlbW92ZShkcCk7CisJCS8vIFJlbW92ZSBkcCB3aXRoIG91dGRhdGVk
IGhhc2ggaW5mbyBmcm9tIHRoZSBoYXNodGFibGUuCisJCUxJU1RfUkVNT1ZFKGRwLCBkX2xpbmsp
OworCQkvLyBVcGRhdGUgZHAuCisJCWRwLT5kX3BhdGggPSBzdHJkdXAocGF0aCk7CisJCWRwLT5k
X3BhcmVudCA9IHBhcmVudF9kcDsKKwkJLy8gSW5zZXJ0IGRwIHVwZGF0ZWQgaGFzaCBpbmZvIGlu
dG8gdGhlIGhhc2h0YWJsZS4KKwkJTElTVF9JTlNFUlRfSEVBRCgmZGVudHJ5X2hhc2hfdGFibGVb
ZGVudHJ5X2hhc2goZHAtPmRfbW91bnQsIHBhdGgpXSwKKwkJCWRwLCBkX2xpbmspOworCX0KKwor
CWlmIChvbGRfcGRwKSB7CisJCWRyZWxlKG9sZF9wZHApOworCX0KKworCWZyZWUob2xkX3BhdGgp
OwogfQogCiB2b2lkCiBkZW50cnlfcmVtb3ZlKHN0cnVjdCBkZW50cnkgKmRwKQogewotICAgIG11
dGV4X2xvY2soJmRlbnRyeV9oYXNoX2xvY2spOwotICAgIExJU1RfUkVNT1ZFKGRwLCBkX2xpbmsp
OwotICAgIC8qIHB1dCBpdCBvbiBhIGZha2UgbGlzdCBmb3IgZHJlbGUoKSB0byB3b3JrKi8KLSAg
ICBMSVNUX0lOU0VSVF9IRUFEKCZmYWtlLCBkcCwgZF9saW5rKTsKLSAgICBtdXRleF91bmxvY2so
JmRlbnRyeV9oYXNoX2xvY2spOworCW11dGV4X2xvY2soJmRlbnRyeV9oYXNoX2xvY2spOworCUxJ
U1RfUkVNT1ZFKGRwLCBkX2xpbmspOworCS8qIHB1dCBpdCBvbiBhIGZha2UgbGlzdCBmb3IgZHJl
bGUoKSB0byB3b3JrKi8KKwlMSVNUX0lOU0VSVF9IRUFEKCZmYWtlLCBkcCwgZF9saW5rKTsKKwlt
dXRleF91bmxvY2soJmRlbnRyeV9oYXNoX2xvY2spOwogfQogCiB2b2lkCiBkcmVmKHN0cnVjdCBk
ZW50cnkgKmRwKQogewotICAgIEFTU0VSVChkcCk7Ci0gICAgQVNTRVJUKGRwLT5kX3JlZmNudCA+
IDApOworCUFTU0VSVChkcCk7CisJQVNTRVJUKGRwLT5kX3JlZmNudCA+IDApOwogCi0gICAgbXV0
ZXhfbG9jaygmZGVudHJ5X2hhc2hfbG9jayk7Ci0gICAgZHAtPmRfcmVmY250Kys7Ci0gICAgbXV0
ZXhfdW5sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKKwltdXRleF9sb2NrKCZkZW50cnlfaGFzaF9s
b2NrKTsKKwlkcC0+ZF9yZWZjbnQrKzsKKwltdXRleF91bmxvY2soJmRlbnRyeV9oYXNoX2xvY2sp
OwogfQogCiB2b2lkCiBkcmVsZShzdHJ1Y3QgZGVudHJ5ICpkcCkKIHsKLSAgICBBU1NFUlQoZHAp
OwotICAgIEFTU0VSVChkcC0+ZF9yZWZjbnQgPiAwKTsKLQotICAgIG11dGV4X2xvY2soJmRlbnRy
eV9oYXNoX2xvY2spOwotICAgIGlmICgtLWRwLT5kX3JlZmNudCkgewotICAgICAgICBtdXRleF91
bmxvY2soJmRlbnRyeV9oYXNoX2xvY2spOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIExJ
U1RfUkVNT1ZFKGRwLCBkX2xpbmspOwotICAgIHZuX2RlbF9uYW1lKGRwLT5kX3Zub2RlLCBkcCk7
Ci0KLSAgICBtdXRleF91bmxvY2soJmRlbnRyeV9oYXNoX2xvY2spOwotCi0gICAgaWYgKGRwLT5k
X3BhcmVudCkgewotICAgICAgICBXSVRIX0xPQ0soZHAtPmRfcGFyZW50LT5kX2xvY2spIHsKLSAg
ICAgICAgICAgIC8vIFJlbW92ZSBkcCBmcm9tIGl0cyBwYXJlbnQncyBjaGlsZHJlbiBsaXN0Lgot
ICAgICAgICAgICAgTElTVF9SRU1PVkUoZHAsIGRfY2hpbGRyZW5fbGluayk7Ci0gICAgICAgIH0K
LSAgICAgICAgZHJlbGUoZHAtPmRfcGFyZW50KTsKLSAgICB9Ci0KLSAgICB2cmVsZShkcC0+ZF92
bm9kZSk7Ci0KLSAgICBmcmVlKGRwLT5kX3BhdGgpOwotICAgIGZyZWUoZHApOworCUFTU0VSVChk
cCk7CisJQVNTRVJUKGRwLT5kX3JlZmNudCA+IDApOworCisJbXV0ZXhfbG9jaygmZGVudHJ5X2hh
c2hfbG9jayk7CisJaWYgKC0tZHAtPmRfcmVmY250KSB7CisJCW11dGV4X3VubG9jaygmZGVudHJ5
X2hhc2hfbG9jayk7CisJCXJldHVybjsKKwl9CisJTElTVF9SRU1PVkUoZHAsIGRfbGluayk7CisJ
dm5fZGVsX25hbWUoZHAtPmRfdm5vZGUsIGRwKTsKKworCW11dGV4X3VubG9jaygmZGVudHJ5X2hh
c2hfbG9jayk7CisKKwlpZiAoZHAtPmRfcGFyZW50KSB7CisJCVdJVEhfTE9DSyhkcC0+ZF9wYXJl
bnQtPmRfbG9jaykgeworCQkJLy8gUmVtb3ZlIGRwIGZyb20gaXRzIHBhcmVudCdzIGNoaWxkcmVu
IGxpc3QuCisJCQlMSVNUX1JFTU9WRShkcCwgZF9jaGlsZHJlbl9saW5rKTsKKwkJfQorCQlkcmVs
ZShkcC0+ZF9wYXJlbnQpOworCX0KKworCXZyZWxlKGRwLT5kX3Zub2RlKTsKKworCWZyZWUoZHAt
PmRfcGF0aCk7CisJZnJlZShkcCk7CiB9CiAKIHZvaWQKIGRlbnRyeV9pbml0KHZvaWQpCiB7Ci0g
ICAgaW50IGk7CisJaW50IGk7CiAKLSAgICBmb3IgKGkgPSAwOyBpIDwgREVOVFJZX0JVQ0tFVFM7
IGkrKykgewotICAgICAgICBMSVNUX0lOSVQoJmRlbnRyeV9oYXNoX3RhYmxlW2ldKTsKLSAgICB9
CisJZm9yIChpID0gMDsgaSA8IERFTlRSWV9CVUNLRVRTOyBpKyspIHsKKwkJTElTVF9JTklUKCZk
ZW50cnlfaGFzaF90YWJsZVtpXSk7CisJfQogfQpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvZm9w
cy5jIGIvbGliL3Zmc2NvcmUvZm9wcy5jCmluZGV4IDNhOGY5OGI0Li5hYjFmOGNiYiAxMDA2NDQK
LS0tIGEvbGliL3Zmc2NvcmUvZm9wcy5jCisrKyBiL2xpYi92ZnNjb3JlL2ZvcHMuYwpAQCAtMTQw
LDE3ICsxNDAsMTcgQEAgaW50IHZmc19maWxlOjpjaG1vZChtb2RlX3QgbW9kZSkKIAogYm9vbCB2
ZnNfZmlsZTo6bWFwX3BhZ2UodWludHB0cl90IG9mZiwgbW11Ojpod19wdGVwPDA+IHB0ZXAsIG1t
dTo6cHRfZWxlbWVudDwwPiBwdGUsIGJvb2wgd3JpdGUsIGJvb2wgc2hhcmVkKQogewotICAgIHJl
dHVybiBwYWdlY2FjaGU6OmdldCh0aGlzLCBvZmYsIHB0ZXAsIHB0ZSwgd3JpdGUsIHNoYXJlZCk7
CisJcmV0dXJuIHBhZ2VjYWNoZTo6Z2V0KHRoaXMsIG9mZiwgcHRlcCwgcHRlLCB3cml0ZSwgc2hh
cmVkKTsKIH0KIAogYm9vbCB2ZnNfZmlsZTo6cHV0X3BhZ2Uodm9pZCAqYWRkciwgdWludHB0cl90
IG9mZiwgbW11Ojpod19wdGVwPDA+IHB0ZXApCiB7Ci0gICAgcmV0dXJuIHBhZ2VjYWNoZTo6cmVs
ZWFzZSh0aGlzLCBhZGRyLCBvZmYsIHB0ZXApOworCXJldHVybiBwYWdlY2FjaGU6OnJlbGVhc2Uo
dGhpcywgYWRkciwgb2ZmLCBwdGVwKTsKIH0KIAogdm9pZCB2ZnNfZmlsZTo6c3luYyhvZmZfdCBz
dGFydCwgb2ZmX3QgZW5kKQogewotICAgIHBhZ2VjYWNoZTo6c3luYyh0aGlzLCBzdGFydCwgZW5k
KTsKKwlwYWdlY2FjaGU6OnN5bmModGhpcywgc3RhcnQsIGVuZCk7CiB9CiAKIC8vIExvY2tpbmc6
IFZPUF9DQUNIRSB3aWxsIGNhbGwgaW50byB0aGUgZmlsZXN5c3RlbSwgYW5kIHRoYXQgY2FuIHRy
aWdnZXIgYW4KQEAgLTE1OSwyMyArMTU5LDIzIEBAIHZvaWQgdmZzX2ZpbGU6OnN5bmMob2ZmX3Qg
c3RhcnQsIG9mZl90IGVuZCkKIC8vIGJlY2F1c2Ugbm90IGFsbCBpbnZhbGlkYXRpb25zIHdpbGwg
YmUgc3luY2hyb25vdXMuCiBpbnQgdmZzX2ZpbGU6OmdldF9hcmNidWYodm9pZCoga2V5LCBvZmZf
dCBvZmZzZXQpCiB7Ci0gICAgc3RydWN0IHZub2RlICp2cCA9IGZfZGVudHJ5LT5kX3Zub2RlOwor
CXN0cnVjdCB2bm9kZSAqdnAgPSBmX2RlbnRyeS0+ZF92bm9kZTsKIAotICAgIGlvdmVjIGlvWzFd
OworCWlvdmVjIGlvWzFdOwogCi0gICAgaW9bMF0uaW92X2Jhc2UgPSBrZXk7Ci0gICAgdWlvIGRh
dGE7Ci0gICAgZGF0YS51aW9faW92ID0gaW87Ci0gICAgZGF0YS51aW9faW92Y250ID0gMTsKLSAg
ICBkYXRhLnVpb19vZmZzZXQgPSBvZmZzZXQ7Ci0gICAgZGF0YS51aW9fcmVzaWQgPSBtbXU6OnBh
Z2Vfc2l6ZTsKLSAgICBkYXRhLnVpb19ydyA9IFVJT19SRUFEOworCWlvWzBdLmlvdl9iYXNlID0g
a2V5OworCXVpbyBkYXRhOworCWRhdGEudWlvX2lvdiA9IGlvOworCWRhdGEudWlvX2lvdmNudCA9
IDE7CisJZGF0YS51aW9fb2Zmc2V0ID0gb2Zmc2V0OworCWRhdGEudWlvX3Jlc2lkID0gbW11Ojpw
YWdlX3NpemU7CisJZGF0YS51aW9fcncgPSBVSU9fUkVBRDsKIAotICAgIHZuX2xvY2sodnApOwot
ICAgIGFzc2VydChWT1BfQ0FDSEUodnAsIHRoaXMsICZkYXRhKSA9PSAwKTsKLSAgICB2bl91bmxv
Y2sodnApOworCXZuX2xvY2sodnApOworCWFzc2VydChWT1BfQ0FDSEUodnAsIHRoaXMsICZkYXRh
KSA9PSAwKTsKKwl2bl91bmxvY2sodnApOwogCi0gICAgcmV0dXJuIChkYXRhLnVpb19yZXNpZCAh
PSAwKSA/IC0xIDogMDsKKwlyZXR1cm4gKGRhdGEudWlvX3Jlc2lkICE9IDApID8gLTEgOiAwOwog
fQogCiBzdGQ6OnVuaXF1ZV9wdHI8bW11OjpmaWxlX3ZtYT4gdmZzX2ZpbGU6Om1tYXAoYWRkcl9y
YW5nZSByYW5nZSwgdW5zaWduZWQgZmxhZ3MsIHVuc2lnbmVkIHBlcm0sIG9mZl90IG9mZnNldCkK
ZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9kZW50cnkuaCBiL2xpYi92
ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9kZW50cnkuaAppbmRleCBhMjU0NWFmOC4uZjU4NTA3ODYg
MTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9kZW50cnkuaAorKysgYi9s
aWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZGVudHJ5LmgKQEAgLTMzLDggKzMzLDggQEAgc3Ry
dWN0IGRlbnRyeSB7CiB1c2luZyBkZW50cnlfcmVmID0gYm9vc3Q6OmludHJ1c2l2ZV9wdHI8ZGVu
dHJ5PjsKIAogZXh0ZXJuICJDIiB7Ci0gICAgdm9pZCBkcmVmKHN0cnVjdCBkZW50cnkqIGRwKTsK
LSAgICB2b2lkIGRyZWxlKHN0cnVjdCBkZW50cnkqIGRwKTsKKwl2b2lkIGRyZWYoc3RydWN0IGRl
bnRyeSogZHApOworCXZvaWQgZHJlbGUoc3RydWN0IGRlbnRyeSogZHApOwogfTsKIAogaW5saW5l
IHZvaWQgaW50cnVzaXZlX3B0cl9hZGRfcmVmKGRlbnRyeSogZHApIHsgZHJlZihkcCk7IH0KZGlm
ZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9tb3VudC5oIGIvbGliL3Zmc2Nv
cmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmgKaW5kZXggNzI2OGQ4Y2UuLjBlNzg5MjlmIDEwMDY0
NAotLS0gYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvbW91bnQuaAorKysgYi9saWIvdmZz
Y29yZS9pbmNsdWRlL3Zmc2NvcmUvbW91bnQuaApAQCAtMTU2LDEwICsxNTYsMTAgQEAgX19FTkRf
REVDTFMKIG5hbWVzcGFjZSBvc3YgewogCiBzdHJ1Y3QgbW91bnRfZGVzYyB7Ci0gICAgc3RkOjpz
dHJpbmcgc3BlY2lhbDsKLSAgICBzdGQ6OnN0cmluZyBwYXRoOwotICAgIHN0ZDo6c3RyaW5nIHR5
cGU7Ci0gICAgc3RkOjpzdHJpbmcgb3B0aW9uczsKKwlzdGQ6OnN0cmluZyBzcGVjaWFsOworCXN0
ZDo6c3RyaW5nIHBhdGg7CisJc3RkOjpzdHJpbmcgdHlwZTsKKwlzdGQ6OnN0cmluZyBvcHRpb25z
OwogfTsKIAogc3RkOjp2ZWN0b3I8bW91bnRfZGVzYz4gY3VycmVudF9tb3VudHMoKTsKZGlmZiAt
LWdpdCBhL2xpYi92ZnNjb3JlL2xvb2t1cC5jIGIvbGliL3Zmc2NvcmUvbG9va3VwLmMKaW5kZXgg
YWQwM2ZlMjUuLjMwMTM5YTg3IDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9sb29rdXAuYworKysg
Yi9saWIvdmZzY29yZS9sb29rdXAuYwpAQCAtNDAsNTcgKzQwLDU3IEBACiBzdGF0aWMgc3NpemVf
dAogcmVhZF9saW5rKHN0cnVjdCB2bm9kZSAqdnAsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6LCBz
c2l6ZV90ICpzeikKIHsKLSAgICBzdHJ1Y3QgaW92ZWMgaW92ID0ge2J1ZiwgYnVmc3p9OwotICAg
IHN0cnVjdCB1aW8gICB1aW8gPSB7JmlvdiwgMSwgMCwgKHNzaXplX3QpIGJ1ZnN6LCBVSU9fUkVB
RH07Ci0gICAgaW50IHJjOworCXN0cnVjdCBpb3ZlYyBpb3YgPSB7YnVmLCBidWZzen07CisJc3Ry
dWN0IHVpbyAgIHVpbyA9IHsmaW92LCAxLCAwLCAoc3NpemVfdCkgYnVmc3osIFVJT19SRUFEfTsK
KwlpbnQgcmM7CiAKLSAgICAqc3ogPSAwOwotICAgIHZuX2xvY2sodnApOwotICAgIHJjICA9IFZP
UF9SRUFETElOSyh2cCwgJnVpbyk7Ci0gICAgdm5fdW5sb2NrKHZwKTsKKwkqc3ogPSAwOworCXZu
X2xvY2sodnApOworCXJjICA9IFZPUF9SRUFETElOSyh2cCwgJnVpbyk7CisJdm5fdW5sb2NrKHZw
KTsKIAotICAgIGlmIChyYyAhPSAwKSB7Ci0gICAgICAgIHJldHVybiAocmMpOwotICAgIH0KKwlp
ZiAocmMgIT0gMCkgeworCQlyZXR1cm4gKHJjKTsKKwl9CiAKLSAgICAqc3ogPSBidWZzeiAtIHVp
by51aW9fcmVzaWQ7Ci0gICAgcmV0dXJuICgwKTsKKwkqc3ogPSBidWZzeiAtIHVpby51aW9fcmVz
aWQ7CisJcmV0dXJuICgwKTsKIH0KIAogaW50CiBuYW1laV9mb2xsb3dfbGluayhzdHJ1Y3QgZGVu
dHJ5ICpkcCwgY2hhciAqbm9kZSwgY2hhciAqbmFtZSwgY2hhciAqZnAsIHNpemVfdCBtb3VudHBv
aW50X2xlbikKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Y2hhciBbXT4gbGluayAobmV3IGNoYXJb
UEFUSF9NQVhdKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Y2hhciBbXT4gdCAobmV3IGNoYXJbUEFU
SF9NQVhdKTsKLSAgICBjaGFyICAgICpscDsKLSAgICBpbnQgICAgIGVycm9yOwotICAgIHNzaXpl
X3Qgc3o7Ci0gICAgY2hhciAgICAqcDsKLSAgICBpbnQgICAgIGM7Ci0KLSAgICBscCAgICA9IGxp
bmsuZ2V0KCk7Ci0gICAgZXJyb3IgPSByZWFkX2xpbmsoZHAtPmRfdm5vZGUsIGxwLCBQQVRIX01B
WCwgJnN6KTsKLSAgICBpZiAoZXJyb3IgIT0gMCkgewotICAgICAgICByZXR1cm4gKGVycm9yKTsK
LSAgICB9Ci0gICAgbHBbc3pdID0gMDsKLQotICAgIHAgPSBmcCArIG1vdW50cG9pbnRfbGVuICsg
c3RybGVuKG5vZGUpOwotICAgIGMgPSBzdHJsZW4obm9kZSkgLSBzdHJsZW4obmFtZSkgLSAxOwot
ICAgIG5vZGVbY10gPSAwOwotCi0gICAgaWYgKGxwWzBdID09ICcvJykgewotICAgICAgICBzdHJs
Y2F0KGxwLCBwLCBQQVRIX01BWCk7Ci0gICAgICAgIHN0cmxjcHkoZnAsIGxwLCBQQVRIX01BWCk7
Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgc3RybGNweSh0LmdldCgpLCBwLCBQQVRIX01BWCk7Ci0g
ICAgICAgIHN0cmxjcHkobm9kZSwgZnAsIG1vdW50cG9pbnRfbGVuICsgYyArIDEpOwotICAgICAg
ICBwYXRoX2NvbnYobm9kZSwgbHAsIGZwKTsKLSAgICAgICAgc3RybGNhdChmcCwgdC5nZXQoKSwg
UEFUSF9NQVgpOwotICAgIH0KLSAgICBub2RlWzBdID0gMDsKLSAgICBuYW1lWzBdID0gMDsKLSAg
ICByZXR1cm4gKDApOworCXN0ZDo6dW5pcXVlX3B0cjxjaGFyIFtdPiBsaW5rIChuZXcgY2hhcltQ
QVRIX01BWF0pOworCXN0ZDo6dW5pcXVlX3B0cjxjaGFyIFtdPiB0IChuZXcgY2hhcltQQVRIX01B
WF0pOworCWNoYXIgICAgKmxwOworCWludCAgICAgZXJyb3I7CisJc3NpemVfdCBzejsKKwljaGFy
ICAgICpwOworCWludCAgICAgYzsKKworCWxwICAgID0gbGluay5nZXQoKTsKKwllcnJvciA9IHJl
YWRfbGluayhkcC0+ZF92bm9kZSwgbHAsIFBBVEhfTUFYLCAmc3opOworCWlmIChlcnJvciAhPSAw
KSB7CisJCXJldHVybiAoZXJyb3IpOworCX0KKwlscFtzel0gPSAwOworCisJcCA9IGZwICsgbW91
bnRwb2ludF9sZW4gKyBzdHJsZW4obm9kZSk7CisJYyA9IHN0cmxlbihub2RlKSAtIHN0cmxlbihu
YW1lKSAtIDE7CisJbm9kZVtjXSA9IDA7CisKKwlpZiAobHBbMF0gPT0gJy8nKSB7CisJCXN0cmxj
YXQobHAsIHAsIFBBVEhfTUFYKTsKKwkJc3RybGNweShmcCwgbHAsIFBBVEhfTUFYKTsKKwl9IGVs
c2UgeworCQlzdHJsY3B5KHQuZ2V0KCksIHAsIFBBVEhfTUFYKTsKKwkJc3RybGNweShub2RlLCBm
cCwgbW91bnRwb2ludF9sZW4gKyBjICsgMSk7CisJCXBhdGhfY29udihub2RlLCBscCwgZnApOwor
CQlzdHJsY2F0KGZwLCB0LmdldCgpLCBQQVRIX01BWCk7CisJfQorCW5vZGVbMF0gPSAwOworCW5h
bWVbMF0gPSAwOworCXJldHVybiAoMCk7CiB9CiAvKgogICogQ29udmVydCBhIHBhdGhuYW1lIGlu
dG8gYSBwb2ludGVyIHRvIGEgZGVudHJ5CkBAIC0xMDEsMTM3ICsxMDEsMTM3IEBAIG5hbWVpX2Zv
bGxvd19saW5rKHN0cnVjdCBkZW50cnkgKmRwLCBjaGFyICpub2RlLCBjaGFyICpuYW1lLCBjaGFy
ICpmcCwgc2l6ZV90IG1vCiBpbnQKIG5hbWVpKGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBkZW50
cnkgKipkcHApCiB7Ci0gICAgY2hhciAqcDsKLSAgICBjaGFyIG5vZGVbUEFUSF9NQVhdOwotICAg
IGNoYXIgbmFtZVtQQVRIX01BWF07Ci0gICAgc3RkOjp1bmlxdWVfcHRyPGNoYXIgW10+IGZwIChu
ZXcgY2hhciBbUEFUSF9NQVhdKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Y2hhciBbXT4gdCAobmV3
IGNoYXIgW1BBVEhfTUFYXSk7Ci0gICAgc3RydWN0IG1vdW50ICptcDsKLSAgICBzdHJ1Y3QgZGVu
dHJ5ICpkcCwgKmRkcDsKLSAgICBzdHJ1Y3Qgdm5vZGUgKmR2cCwgKnZwOwotICAgIGludCBlcnJv
ciwgaTsKLSAgICBpbnQgbGlua3NfZm9sbG93ZWQ7Ci0gICAgYm9vbCBuZWVkX2NvbnRpbnVlOwot
Ci0gICAgRFBSSU5URihWRlNEQl9WTk9ERSwgKCJuYW1laTogcGF0aD0lc1xuIiwgcGF0aCkpOwot
Ci0gICAgbGlua3NfZm9sbG93ZWQgPSAwOwotICAgIHN0cmxjcHkoZnAuZ2V0KCksIHBhdGgsIFBB
VEhfTUFYKTsKLQotICAgIGRvIHsKLSAgICAgICAgbmVlZF9jb250aW51ZSA9IGZhbHNlOwotICAg
ICAgICAvKgotICAgICAgICAgKiBDb252ZXJ0IGEgZnVsbCBwYXRoIG5hbWUgdG8gaXRzIG1vdW50
IHBvaW50IGFuZAotICAgICAgICAgKiB0aGUgbG9jYWwgbm9kZSBpbiB0aGUgZmlsZSBzeXN0ZW0u
Ci0gICAgICAgICAqLwotICAgICAgICBpZiAodmZzX2ZpbmRyb290KGZwLmdldCgpLCAmbXAsICZw
KSkgewotICAgICAgICAgICAgcmV0dXJuIEVOT1RESVI7Ci0gICAgICAgIH0KLSAgICAgICAgaW50
IG1vdW50cG9pbnRfbGVuID0gcCAtIGZwLmdldCgpIC0gMTsKLSAgICAgICAgc3RybGNweShub2Rl
LCAiLyIsIHNpemVvZihub2RlKSk7Ci0gICAgICAgIHN0cmxjYXQobm9kZSwgcCwgc2l6ZW9mKG5v
ZGUpKTsKLSAgICAgICAgZHAgPSBkZW50cnlfbG9va3VwKG1wLCBub2RlKTsKLSAgICAgICAgaWYg
KGRwKSB7Ci0gICAgICAgICAgICAvKiB2bm9kZSBpcyBhbHJlYWR5IGFjdGl2ZS4gKi8KLSAgICAg
ICAgICAgICpkcHAgPSBkcDsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAg
ICAgIC8qCi0gICAgICAgICAqIEZpbmQgdGFyZ2V0IHZub2RlLCBzdGFydGVkIGZyb20gcm9vdCBk
aXJlY3RvcnkuCi0gICAgICAgICAqIFRoaXMgaXMgZG9uZSB0byBhdHRhY2ggdGhlIGZzIHNwZWNp
ZmljIGRhdGEgdG8KLSAgICAgICAgICogdGhlIHRhcmdldCB2bm9kZS4KLSAgICAgICAgICovCi0g
ICAgICAgIGRkcCA9IG1wLT5tX3Jvb3Q7Ci0gICAgICAgIGlmICghZGRwKSB7Ci0gICAgICAgICAg
ICBzeXNfcGFuaWMoIlZGUzogbm8gcm9vdCIpOwotICAgICAgICB9Ci0gICAgICAgIGRyZWYoZGRw
KTsKLQotICAgICAgICBub2RlWzBdID0gJ1wwJzsKLQotICAgICAgICB3aGlsZSAoKnAgIT0gJ1ww
JykgewotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqIEdldCBsb3dlciBkaXJlY3Rvcnkv
ZmlsZSBuYW1lLgotICAgICAgICAgICAgICovCi0gICAgICAgICAgICB3aGlsZSAoKnAgPT0gJy8n
KSB7Ci0gICAgICAgICAgICAgICAgcCsrOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBp
ZiAoKnAgPT0gJ1wwJykgewotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUEFUSF9NQVg7IGkrKykgewotICAgICAgICAg
ICAgICAgIGlmICgqcCA9PSAnXDAnIHx8ICpwID09ICcvJykgewotICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbmFtZVtpXSA9ICpw
Kys7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBuYW1lW2ldID0gJ1wwJzsKLQotICAgICAg
ICAgICAgLyoKLSAgICAgICAgICAgICAqIEdldCBhIHZub2RlIGZvciB0aGUgdGFyZ2V0LgotICAg
ICAgICAgICAgICovCi0gICAgICAgICAgICBzdHJsY2F0KG5vZGUsICIvIiwgc2l6ZW9mKG5vZGUp
KTsKLSAgICAgICAgICAgIHN0cmxjYXQobm9kZSwgbmFtZSwgc2l6ZW9mKG5vZGUpKTsKLSAgICAg
ICAgICAgIGR2cCA9IGRkcC0+ZF92bm9kZTsKLSAgICAgICAgICAgIHZuX2xvY2soZHZwKTsKLSAg
ICAgICAgICAgIGRwID0gZGVudHJ5X2xvb2t1cChtcCwgbm9kZSk7Ci0gICAgICAgICAgICBpZiAo
ZHAgPT0gbnVsbHB0cikgewotICAgICAgICAgICAgICAgIC8qIEZpbmQgYSB2bm9kZSBpbiB0aGlz
IGRpcmVjdG9yeS4gKi8KLSAgICAgICAgICAgICAgICBlcnJvciA9IFZPUF9MT09LVVAoZHZwLCBu
YW1lLCAmdnApOwotICAgICAgICAgICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgICAg
ICAgICB2bl91bmxvY2soZHZwKTsKLSAgICAgICAgICAgICAgICAgICAgZHJlbGUoZGRwKTsKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgICAgIGRwID0gZGVudHJ5X2FsbG9jKGRkcCwgdnAsIG5vZGUpOwotICAgICAgICAg
ICAgICAgIHZwdXQodnApOwotCi0gICAgICAgICAgICAgICAgaWYgKCFkcCkgewotICAgICAgICAg
ICAgICAgICAgICB2bl91bmxvY2soZHZwKTsKLSAgICAgICAgICAgICAgICAgICAgZHJlbGUoZGRw
KTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVOT01FTTsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2bl91bmxvY2soZHZwKTsKLSAgICAgICAgICAg
IGRyZWxlKGRkcCk7Ci0gICAgICAgICAgICBkZHAgPSBkcDsKLQotICAgICAgICAgICAgaWYgKGRw
LT5kX3Zub2RlLT52X3R5cGUgPT0gVkxOSykgewotICAgICAgICAgICAgICAgIGVycm9yID0gbmFt
ZWlfZm9sbG93X2xpbmsoZHAsIG5vZGUsIG5hbWUsIGZwLmdldCgpLCBtb3VudHBvaW50X2xlbik7
Ci0gICAgICAgICAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICAgICAgICAgIGRyZWxl
KGRwKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChlcnJvcik7Ci0gICAgICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICAgICAgZHJlbGUoZHApOwotCi0gICAgICAgICAgICAgICAgcCAg
ICAgICA9IGZwLmdldCgpOwotICAgICAgICAgICAgICAgIGRwICAgICAgPSBudWxscHRyOwotICAg
ICAgICAgICAgICAgIGRkcCAgICAgPSBudWxscHRyOwotICAgICAgICAgICAgICAgIHZwICAgICAg
PSBudWxscHRyOwotICAgICAgICAgICAgICAgIGR2cCAgICAgPSBudWxscHRyOwotICAgICAgICAg
ICAgICAgIG5hbWVbMF0gPSAwOwotICAgICAgICAgICAgICAgIG5vZGVbMF0gPSAwOwotCi0gICAg
ICAgICAgICAgICAgaWYgKCsrbGlua3NfZm9sbG93ZWQgPj0gTUFYU1lNTElOS1MpIHsKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIChFTE9PUCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIG5lZWRfY29udGludWUgPSB0cnVlOwotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoKnAgPT0gJy8nICYmIGRkcC0+ZF92bm9k
ZS0+dl90eXBlICE9IFZESVIpIHsKLSAgICAgICAgICAgICAgICBkcmVsZShkZHApOwotICAgICAg
ICAgICAgICAgIHJldHVybiBFTk9URElSOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAg
fSB3aGlsZSAobmVlZF9jb250aW51ZSA9PSB0cnVlKTsKLQotICAgICpkcHAgPSBkcDsKLSAgICBy
ZXR1cm4gMDsKKwljaGFyICpwOworCWNoYXIgbm9kZVtQQVRIX01BWF07CisJY2hhciBuYW1lW1BB
VEhfTUFYXTsKKwlzdGQ6OnVuaXF1ZV9wdHI8Y2hhciBbXT4gZnAgKG5ldyBjaGFyIFtQQVRIX01B
WF0pOworCXN0ZDo6dW5pcXVlX3B0cjxjaGFyIFtdPiB0IChuZXcgY2hhciBbUEFUSF9NQVhdKTsK
KwlzdHJ1Y3QgbW91bnQgKm1wOworCXN0cnVjdCBkZW50cnkgKmRwLCAqZGRwOworCXN0cnVjdCB2
bm9kZSAqZHZwLCAqdnA7CisJaW50IGVycm9yLCBpOworCWludCBsaW5rc19mb2xsb3dlZDsKKwli
b29sIG5lZWRfY29udGludWU7CisKKwlEUFJJTlRGKFZGU0RCX1ZOT0RFLCAoIm5hbWVpOiBwYXRo
PSVzXG4iLCBwYXRoKSk7CisKKwlsaW5rc19mb2xsb3dlZCA9IDA7CisJc3RybGNweShmcC5nZXQo
KSwgcGF0aCwgUEFUSF9NQVgpOworCisJZG8geworCQluZWVkX2NvbnRpbnVlID0gZmFsc2U7CisJ
CS8qCisJCSAqIENvbnZlcnQgYSBmdWxsIHBhdGggbmFtZSB0byBpdHMgbW91bnQgcG9pbnQgYW5k
CisJCSAqIHRoZSBsb2NhbCBub2RlIGluIHRoZSBmaWxlIHN5c3RlbS4KKwkJICovCisJCWlmICh2
ZnNfZmluZHJvb3QoZnAuZ2V0KCksICZtcCwgJnApKSB7CisJCQlyZXR1cm4gRU5PVERJUjsKKwkJ
fQorCQlpbnQgbW91bnRwb2ludF9sZW4gPSBwIC0gZnAuZ2V0KCkgLSAxOworCQlzdHJsY3B5KG5v
ZGUsICIvIiwgc2l6ZW9mKG5vZGUpKTsKKwkJc3RybGNhdChub2RlLCBwLCBzaXplb2Yobm9kZSkp
OworCQlkcCA9IGRlbnRyeV9sb29rdXAobXAsIG5vZGUpOworCQlpZiAoZHApIHsKKwkJCS8qIHZu
b2RlIGlzIGFscmVhZHkgYWN0aXZlLiAqLworCQkJKmRwcCA9IGRwOworCQkJcmV0dXJuIDA7CisJ
CX0KKwkJLyoKKwkJICogRmluZCB0YXJnZXQgdm5vZGUsIHN0YXJ0ZWQgZnJvbSByb290IGRpcmVj
dG9yeS4KKwkJICogVGhpcyBpcyBkb25lIHRvIGF0dGFjaCB0aGUgZnMgc3BlY2lmaWMgZGF0YSB0
bworCQkgKiB0aGUgdGFyZ2V0IHZub2RlLgorCQkgKi8KKwkJZGRwID0gbXAtPm1fcm9vdDsKKwkJ
aWYgKCFkZHApIHsKKwkJCXN5c19wYW5pYygiVkZTOiBubyByb290Iik7CisJCX0KKwkJZHJlZihk
ZHApOworCisJCW5vZGVbMF0gPSAnXDAnOworCisJCXdoaWxlICgqcCAhPSAnXDAnKSB7CisJCQkv
KgorCQkJICogR2V0IGxvd2VyIGRpcmVjdG9yeS9maWxlIG5hbWUuCisJCQkgKi8KKwkJCXdoaWxl
ICgqcCA9PSAnLycpIHsKKwkJCQlwKys7CisJCQl9CisKKwkJCWlmICgqcCA9PSAnXDAnKSB7CisJ
CQkJYnJlYWs7CisJCQl9CisKKwkJCWZvciAoaSA9IDA7IGkgPCBQQVRIX01BWDsgaSsrKSB7CisJ
CQkJaWYgKCpwID09ICdcMCcgfHwgKnAgPT0gJy8nKSB7CisJCQkJCWJyZWFrOworCQkJCX0KKwkJ
CQluYW1lW2ldID0gKnArKzsKKwkJCX0KKwkJCW5hbWVbaV0gPSAnXDAnOworCisJCQkvKgorCQkJ
ICogR2V0IGEgdm5vZGUgZm9yIHRoZSB0YXJnZXQuCisJCQkgKi8KKwkJCXN0cmxjYXQobm9kZSwg
Ii8iLCBzaXplb2Yobm9kZSkpOworCQkJc3RybGNhdChub2RlLCBuYW1lLCBzaXplb2Yobm9kZSkp
OworCQkJZHZwID0gZGRwLT5kX3Zub2RlOworCQkJdm5fbG9jayhkdnApOworCQkJZHAgPSBkZW50
cnlfbG9va3VwKG1wLCBub2RlKTsKKwkJCWlmIChkcCA9PSBudWxscHRyKSB7CisJCQkJLyogRmlu
ZCBhIHZub2RlIGluIHRoaXMgZGlyZWN0b3J5LiAqLworCQkJCWVycm9yID0gVk9QX0xPT0tVUChk
dnAsIG5hbWUsICZ2cCk7CisJCQkJaWYgKGVycm9yKSB7CisJCQkJCXZuX3VubG9jayhkdnApOwor
CQkJCQlkcmVsZShkZHApOworCQkJCQlyZXR1cm4gZXJyb3I7CisJCQkJfQorCisJCQkJZHAgPSBk
ZW50cnlfYWxsb2MoZGRwLCB2cCwgbm9kZSk7CisJCQkJdnB1dCh2cCk7CisKKwkJCQlpZiAoIWRw
KSB7CisJCQkJCXZuX3VubG9jayhkdnApOworCQkJCQlkcmVsZShkZHApOworCQkJCQlyZXR1cm4g
RU5PTUVNOworCQkJCX0KKwkJCX0KKwkJCXZuX3VubG9jayhkdnApOworCQkJZHJlbGUoZGRwKTsK
KwkJCWRkcCA9IGRwOworCisJCQlpZiAoZHAtPmRfdm5vZGUtPnZfdHlwZSA9PSBWTE5LKSB7CisJ
CQkJZXJyb3IgPSBuYW1laV9mb2xsb3dfbGluayhkcCwgbm9kZSwgbmFtZSwgZnAuZ2V0KCksIG1v
dW50cG9pbnRfbGVuKTsKKwkJCQlpZiAoZXJyb3IpIHsKKwkJCQkJZHJlbGUoZHApOworCQkJCQly
ZXR1cm4gKGVycm9yKTsKKwkJCQl9CisKKwkJCQlkcmVsZShkcCk7CisKKwkJCQlwICAgICAgID0g
ZnAuZ2V0KCk7CisJCQkJZHAgICAgICA9IG51bGxwdHI7CisJCQkJZGRwICAgICA9IG51bGxwdHI7
CisJCQkJdnAgICAgICA9IG51bGxwdHI7CisJCQkJZHZwICAgICA9IG51bGxwdHI7CisJCQkJbmFt
ZVswXSA9IDA7CisJCQkJbm9kZVswXSA9IDA7CisKKwkJCQlpZiAoKytsaW5rc19mb2xsb3dlZCA+
PSBNQVhTWU1MSU5LUykgeworCQkJCQlyZXR1cm4gKEVMT09QKTsKKwkJCQl9CisJCQkJbmVlZF9j
b250aW51ZSA9IHRydWU7CisJCQkJYnJlYWs7CisJCQl9CisKKwkJCWlmICgqcCA9PSAnLycgJiYg
ZGRwLT5kX3Zub2RlLT52X3R5cGUgIT0gVkRJUikgeworCQkJCWRyZWxlKGRkcCk7CisJCQkJcmV0
dXJuIEVOT1RESVI7CisJCQl9CisJCX0KKwl9IHdoaWxlIChuZWVkX2NvbnRpbnVlID09IHRydWUp
OworCisJKmRwcCA9IGRwOworCXJldHVybiAwOwogfQogCiAvKgpAQCAtMjQ0LDY3ICsyNDQsNjcg
QEAgbmFtZWkoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IGRlbnRyeSAqKmRwcCkKIGludAogbmFt
ZWlfbGFzdF9ub2ZvbGxvdyhjaGFyICpwYXRoLCBzdHJ1Y3QgZGVudHJ5ICpkZHAsIHN0cnVjdCBk
ZW50cnkgKipkcHApCiB7Ci0gICAgY2hhciAgICAgICAgICAqbmFtZTsKLSAgICBpbnQgICAgICAg
ICAgIGVycm9yOwotICAgIHN0cnVjdCBtb3VudCAgKm1wOwotICAgIGNoYXIgICAgICAgICAgKnA7
Ci0gICAgc3RydWN0IGRlbnRyeSAqZHA7Ci0gICAgc3RydWN0IHZub2RlICAqZHZwOwotICAgIHN0
cnVjdCB2bm9kZSAgKnZwOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxjaGFyIFtdPiBub2RlIChuZXcg
Y2hhcltQQVRIX01BWF0pOwotCi0gICAgZHZwICA9IG51bGxwdHI7Ci0KLSAgICBpZiAocGF0aFsw
XSAhPSAnLycpIHsKLSAgICAgICAgcmV0dXJuIChFTk9URElSKTsKLSAgICB9Ci0KLSAgICBuYW1l
ID0gc3RycmNocihwYXRoLCAnLycpOwotICAgIGlmIChuYW1lID09IG51bGxwdHIpIHsKLSAgICAg
ICAgcmV0dXJuIChFTk9FTlQpOwotICAgIH0KLSAgICBuYW1lKys7Ci0KLSAgICBlcnJvciA9IHZm
c19maW5kcm9vdChwYXRoLCAmbXAsICZwKTsKLSAgICBpZiAoZXJyb3IgIT0gMCkgewotICAgICAg
ICByZXR1cm4gKEVOT1RESVIpOwotICAgIH0KLQotICAgIHN0cmxjcHkobm9kZS5nZXQoKSwgIi8i
LCBQQVRIX01BWCk7Ci0gICAgc3RybGNhdChub2RlLmdldCgpLCBwLCBQQVRIX01BWCk7Ci0KLSAg
ICAvLyBXZSB3YW50IHRvIHRyZWF0IHRoaW5ncyBsaWtlIC90bXAvIHRoZSBzYW1lIGFzIC90bXAu
IEJlc3Qgd2F5IHRvIGRvIHRoYXQKLSAgICAvLyBpcyB0byBpZ25vcmUgdGhlIGxhc3QgY2hhcmFj
dGVyLCBleGNlcHQgd2hlbiB3ZSdyZSBzdGF0aW5nIHRoZSByb290LgotICAgIGF1dG8gbCA9IHN0
cmxlbihub2RlLmdldCgpKSAtIDE7Ci0gICAgaWYgKGwgJiYgbm9kZS5nZXQoKVtsXSA9PSAnLycp
IHsKLSAgICAgICAgbm9kZS5nZXQoKVtsXSA9ICdcMCc7Ci0gICAgfQotCi0gICAgZHZwID0gZGRw
LT5kX3Zub2RlOwotICAgIHZuX2xvY2soZHZwKTsKLSAgICBkcCA9IGRlbnRyeV9sb29rdXAobXAs
IG5vZGUuZ2V0KCkpOwotICAgIGlmIChkcCA9PSBudWxscHRyKSB7Ci0gICAgICAgIGVycm9yID0g
Vk9QX0xPT0tVUChkdnAsIG5hbWUsICZ2cCk7Ci0gICAgICAgIGlmIChlcnJvciAhPSAwKSB7Ci0g
ICAgICAgICAgICBnb3RvIG91dDsKLSAgICAgICAgfQotCi0gICAgICAgIGRwID0gZGVudHJ5X2Fs
bG9jKGRkcCwgdnAsIG5vZGUuZ2V0KCkpOwotICAgICAgICB2cHV0KHZwKTsKLQotICAgICAgICBp
ZiAoZHAgPT0gbnVsbHB0cikgewotICAgICAgICAgICAgZXJyb3IgPSBFTk9NRU07Ci0gICAgICAg
ICAgICBnb3RvIG91dDsKLSAgICAgICAgfQotICAgIH0KLQotICAgICpkcHAgID0gZHA7Ci0gICAg
ZXJyb3IgPSAwOworCWNoYXIgICAgICAgICAgKm5hbWU7CisJaW50ICAgICAgICAgICBlcnJvcjsK
KwlzdHJ1Y3QgbW91bnQgICptcDsKKwljaGFyICAgICAgICAgICpwOworCXN0cnVjdCBkZW50cnkg
KmRwOworCXN0cnVjdCB2bm9kZSAgKmR2cDsKKwlzdHJ1Y3Qgdm5vZGUgICp2cDsKKwlzdGQ6OnVu
aXF1ZV9wdHI8Y2hhciBbXT4gbm9kZSAobmV3IGNoYXJbUEFUSF9NQVhdKTsKKworCWR2cCAgPSBu
dWxscHRyOworCisJaWYgKHBhdGhbMF0gIT0gJy8nKSB7CisJCXJldHVybiAoRU5PVERJUik7CisJ
fQorCisJbmFtZSA9IHN0cnJjaHIocGF0aCwgJy8nKTsKKwlpZiAobmFtZSA9PSBudWxscHRyKSB7
CisJCXJldHVybiAoRU5PRU5UKTsKKwl9CisJbmFtZSsrOworCisJZXJyb3IgPSB2ZnNfZmluZHJv
b3QocGF0aCwgJm1wLCAmcCk7CisJaWYgKGVycm9yICE9IDApIHsKKwkJcmV0dXJuIChFTk9URElS
KTsKKwl9CisKKwlzdHJsY3B5KG5vZGUuZ2V0KCksICIvIiwgUEFUSF9NQVgpOworCXN0cmxjYXQo
bm9kZS5nZXQoKSwgcCwgUEFUSF9NQVgpOworCisJLy8gV2Ugd2FudCB0byB0cmVhdCB0aGluZ3Mg
bGlrZSAvdG1wLyB0aGUgc2FtZSBhcyAvdG1wLiBCZXN0IHdheSB0byBkbyB0aGF0CisJLy8gaXMg
dG8gaWdub3JlIHRoZSBsYXN0IGNoYXJhY3RlciwgZXhjZXB0IHdoZW4gd2UncmUgc3RhdGluZyB0
aGUgcm9vdC4KKwlhdXRvIGwgPSBzdHJsZW4obm9kZS5nZXQoKSkgLSAxOworCWlmIChsICYmIG5v
ZGUuZ2V0KClbbF0gPT0gJy8nKSB7CisJCW5vZGUuZ2V0KClbbF0gPSAnXDAnOworCX0KKworCWR2
cCA9IGRkcC0+ZF92bm9kZTsKKwl2bl9sb2NrKGR2cCk7CisJZHAgPSBkZW50cnlfbG9va3VwKG1w
LCBub2RlLmdldCgpKTsKKwlpZiAoZHAgPT0gbnVsbHB0cikgeworCQllcnJvciA9IFZPUF9MT09L
VVAoZHZwLCBuYW1lLCAmdnApOworCQlpZiAoZXJyb3IgIT0gMCkgeworCQkJZ290byBvdXQ7CisJ
CX0KKworCQlkcCA9IGRlbnRyeV9hbGxvYyhkZHAsIHZwLCBub2RlLmdldCgpKTsKKwkJdnB1dCh2
cCk7CisKKwkJaWYgKGRwID09IG51bGxwdHIpIHsKKwkJCWVycm9yID0gRU5PTUVNOworCQkJZ290
byBvdXQ7CisJCX0KKwl9CisKKwkqZHBwICA9IGRwOworCWVycm9yID0gMDsKIG91dDoKLSAgICBp
ZiAoZHZwICE9IG51bGxwdHIpIHsKLSAgICAgICAgdm5fdW5sb2NrKGR2cCk7Ci0gICAgfQotICAg
IHJldHVybiAoZXJyb3IpOworCWlmIChkdnAgIT0gbnVsbHB0cikgeworCQl2bl91bmxvY2soZHZw
KTsKKwl9CisJcmV0dXJuIChlcnJvcik7CiB9CiAKIC8qCkBAIC0zMjAsNDggKzMyMCw0OCBAQCBv
dXQ6CiBpbnQKIGxvb2t1cChjaGFyICpwYXRoLCBzdHJ1Y3QgZGVudHJ5ICoqZHBwLCBjaGFyICoq
bmFtZSkKIHsKLSAgICBjaGFyIGJ1ZltQQVRIX01BWF07Ci0gICAgY2hhciByb290W10gPSAiLyI7
Ci0gICAgY2hhciAqZmlsZSwgKmRpcjsKLSAgICBzdHJ1Y3QgZGVudHJ5ICpkcDsKLSAgICBpbnQg
ZXJyb3I7Ci0KLSAgICBEUFJJTlRGKFZGU0RCX1ZOT0RFLCAoImxvb2t1cDogcGF0aD0lc1xuIiwg
cGF0aCkpOwotCi0gICAgLyoKLSAgICAgKiBHZXQgdGhlIHBhdGggZm9yIGRpcmVjdG9yeS4KLSAg
ICAgKi8KLSAgICBzdHJsY3B5KGJ1ZiwgcGF0aCwgc2l6ZW9mKGJ1ZikpOwotICAgIGZpbGUgPSBz
dHJyY2hyKGJ1ZiwgJy8nKTsKLSAgICBpZiAoIWJ1ZlswXSkgewotICAgICAgICByZXR1cm4gRU5P
VERJUjsKLSAgICB9Ci0gICAgaWYgKGZpbGUgPT0gYnVmKSB7Ci0gICAgICAgIGRpciA9IHJvb3Q7
Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgKmZpbGUgPSAnXDAnOwotICAgICAgICBkaXIgPSBidWY7
Ci0gICAgfQotICAgIC8qCi0gICAgICogR2V0IHRoZSB2bm9kZSBmb3IgZGlyZWN0b3J5Ci0gICAg
ICovCi0gICAgaWYgKChlcnJvciA9IG5hbWVpKGRpciwgJmRwKSkgIT0gMCkgewotICAgICAgICBy
ZXR1cm4gZXJyb3I7Ci0gICAgfQotICAgIGlmIChkcC0+ZF92bm9kZS0+dl90eXBlICE9IFZESVIp
IHsKLSAgICAgICAgZHJlbGUoZHApOwotICAgICAgICByZXR1cm4gRU5PVERJUjsKLSAgICB9Ci0K
LSAgICAqZHBwID0gZHA7Ci0KLSAgICBpZiAobmFtZSkgewotICAgICAgICAvKgotICAgICAgICAg
KiBHZXQgdGhlIGZpbGUgbmFtZQotICAgICAgICAgKi8KLSAgICAgICAgKm5hbWUgPSBzdHJyY2hy
KHBhdGgsICcvJykgKyAxOwotICAgIH0KLSAgICByZXR1cm4gMDsKKwljaGFyIGJ1ZltQQVRIX01B
WF07CisJY2hhciByb290W10gPSAiLyI7CisJY2hhciAqZmlsZSwgKmRpcjsKKwlzdHJ1Y3QgZGVu
dHJ5ICpkcDsKKwlpbnQgZXJyb3I7CisKKwlEUFJJTlRGKFZGU0RCX1ZOT0RFLCAoImxvb2t1cDog
cGF0aD0lc1xuIiwgcGF0aCkpOworCisJLyoKKwkgKiBHZXQgdGhlIHBhdGggZm9yIGRpcmVjdG9y
eS4KKwkgKi8KKwlzdHJsY3B5KGJ1ZiwgcGF0aCwgc2l6ZW9mKGJ1ZikpOworCWZpbGUgPSBzdHJy
Y2hyKGJ1ZiwgJy8nKTsKKwlpZiAoIWJ1ZlswXSkgeworCQlyZXR1cm4gRU5PVERJUjsKKwl9CisJ
aWYgKGZpbGUgPT0gYnVmKSB7CisJCWRpciA9IHJvb3Q7CisJfSBlbHNlIHsKKwkJKmZpbGUgPSAn
XDAnOworCQlkaXIgPSBidWY7CisJfQorCS8qCisJICogR2V0IHRoZSB2bm9kZSBmb3IgZGlyZWN0
b3J5CisJICovCisJaWYgKChlcnJvciA9IG5hbWVpKGRpciwgJmRwKSkgIT0gMCkgeworCQlyZXR1
cm4gZXJyb3I7CisJfQorCWlmIChkcC0+ZF92bm9kZS0+dl90eXBlICE9IFZESVIpIHsKKwkJZHJl
bGUoZHApOworCQlyZXR1cm4gRU5PVERJUjsKKwl9CisKKwkqZHBwID0gZHA7CisKKwlpZiAobmFt
ZSkgeworCQkvKgorCQkgKiBHZXQgdGhlIGZpbGUgbmFtZQorCQkgKi8KKwkJKm5hbWUgPSBzdHJy
Y2hyKHBhdGgsICcvJykgKyAxOworCX0KKwlyZXR1cm4gMDsKIH0KIAogLyoKQEAgLTM3MSw1ICsz
NzEsNSBAQCBsb29rdXAoY2hhciAqcGF0aCwgc3RydWN0IGRlbnRyeSAqKmRwcCwgY2hhciAqKm5h
bWUpCiB2b2lkCiBsb29rdXBfaW5pdCh2b2lkKQogewotICAgIGRlbnRyeV9pbml0KCk7CisJZGVu
dHJ5X2luaXQoKTsKIH0KZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL21haW4uYyBiL2xpYi92ZnNj
b3JlL21haW4uYwppbmRleCBjZDE0MTExNy4uOGQ5ZGMzM2EgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNj
b3JlL21haW4uYworKysgYi9saWIvdmZzY29yZS9tYWluLmMKQEAgLTkyLDcgKzkyLDcgQEAgc3Rk
OjphdG9taWM8bW9kZV90PiBnbG9iYWxfdW1hc2t7U19JV0dSUCB8IFNfSVdPVEh9OwogCiBzdGF0
aWMgaW5saW5lIG1vZGVfdCBhcHBseV91bWFzayhtb2RlX3QgbW9kZSkKIHsKLSAgICByZXR1cm4g
bW9kZSAmIH5nbG9iYWxfdW1hc2subG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKKwly
ZXR1cm4gbW9kZSAmIH5nbG9iYWxfdW1hc2subG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVk
KTsKIH0KIAogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfb3BlbiwgIlwiJXNcIiAweCV4IDAlMG8iLCBj
b25zdCBjaGFyKiwgaW50LCBtb2RlX3QpOwpAQCAtMTA0LDk5ICsxMDQsOTkgQEAgc3RydWN0IHRh
c2sgKm1haW5fdGFzazsJLyogd2Ugb25seSBoYXZlIGEgc2luZ2xlIHByb2Nlc3MgKi8KIGV4dGVy
biAiQyIKIGludCBvcGVuKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBpbnQgZmxhZ3MsIC4uLikKIHsK
LSAgICBtb2RlX3QgbW9kZSA9IDA7Ci0gICAgaWYgKGZsYWdzICYgT19DUkVBVCkgewotICAgICAg
ICB2YV9saXN0IGFwOwotICAgICAgICB2YV9zdGFydChhcCwgZmxhZ3MpOwotICAgICAgICBtb2Rl
ID0gYXBwbHlfdW1hc2sodmFfYXJnKGFwLCBtb2RlX3QpKTsKLSAgICAgICAgdmFfZW5kKGFwKTsK
LSAgICB9Ci0KLSAgICB0cmFjZV92ZnNfb3BlbihwYXRobmFtZSwgZmxhZ3MsIG1vZGUpOwotCi0g
ICAgc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7Ci0gICAgY2hhciBwYXRoW1BBVEhfTUFYXTsK
LSAgICBzdHJ1Y3QgZmlsZSAqZnA7Ci0gICAgaW50IGZkLCBlcnJvcjsKLSAgICBpbnQgYWNjOwot
Ci0gICAgYWNjID0gMDsKLSAgICBzd2l0Y2ggKGZsYWdzICYgT19BQ0NNT0RFKSB7Ci0gICAgY2Fz
ZSBPX1JET05MWToKLSAgICAgICAgYWNjID0gVlJFQUQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgT19XUk9OTFk6Ci0gICAgICAgIGFjYyA9IFZXUklURTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBPX1JEV1I6Ci0gICAgICAgIGFjYyA9IFZSRUFEIHwgVldSSVRFOwotICAgICAgICBicmVh
azsKLSAgICB9Ci0KLSAgICBlcnJvciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwgYWNjLCBwYXRo
KTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwotCi0gICAgZXJyb3Ig
PSBzeXNfb3BlbihwYXRoLCBmbGFncywgbW9kZSwgJmZwKTsKLSAgICBpZiAoZXJyb3IpCi0gICAg
ICAgIGdvdG8gb3V0X2Vycm5vOwotCi0gICAgZXJyb3IgPSBmZGFsbG9jKGZwLCAmZmQpOwotICAg
IGlmIChlcnJvcikKLSAgICAgICAgZ290byBvdXRfZnB1dDsKLSAgICBmZHJvcChmcCk7Ci0gICAg
dHJhY2VfdmZzX29wZW5fcmV0KGZkKTsKLSAgICByZXR1cm4gZmQ7Ci0KLSAgICBvdXRfZnB1dDoK
LSAgICBmZHJvcChmcCk7Ci0gICAgb3V0X2Vycm5vOgotICAgIGVycm5vID0gZXJyb3I7Ci0gICAg
dHJhY2VfdmZzX29wZW5fZXJyKGVycm9yKTsKLSAgICByZXR1cm4gLTE7CisJbW9kZV90IG1vZGUg
PSAwOworCWlmIChmbGFncyAmIE9fQ1JFQVQpIHsKKwkJdmFfbGlzdCBhcDsKKwkJdmFfc3RhcnQo
YXAsIGZsYWdzKTsKKwkJbW9kZSA9IGFwcGx5X3VtYXNrKHZhX2FyZyhhcCwgbW9kZV90KSk7CisJ
CXZhX2VuZChhcCk7CisJfQorCisJdHJhY2VfdmZzX29wZW4ocGF0aG5hbWUsIGZsYWdzLCBtb2Rl
KTsKKworCXN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOworCWNoYXIgcGF0aFtQQVRIX01BWF07
CisJc3RydWN0IGZpbGUgKmZwOworCWludCBmZCwgZXJyb3I7CisJaW50IGFjYzsKKworCWFjYyA9
IDA7CisJc3dpdGNoIChmbGFncyAmIE9fQUNDTU9ERSkgeworCWNhc2UgT19SRE9OTFk6CisJCWFj
YyA9IFZSRUFEOworCQlicmVhazsKKwljYXNlIE9fV1JPTkxZOgorCQlhY2MgPSBWV1JJVEU7CisJ
CWJyZWFrOworCWNhc2UgT19SRFdSOgorCQlhY2MgPSBWUkVBRCB8IFZXUklURTsKKwkJYnJlYWs7
CisJfQorCisJZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5hbWUsIGFjYywgcGF0aCk7CisJaWYg
KGVycm9yKQorCQlnb3RvIG91dF9lcnJubzsKKworCWVycm9yID0gc3lzX29wZW4ocGF0aCwgZmxh
Z3MsIG1vZGUsICZmcCk7CisJaWYgKGVycm9yKQorCQlnb3RvIG91dF9lcnJubzsKKworCWVycm9y
ID0gZmRhbGxvYyhmcCwgJmZkKTsKKwlpZiAoZXJyb3IpCisJCWdvdG8gb3V0X2ZwdXQ7CisJZmRy
b3AoZnApOworCXRyYWNlX3Zmc19vcGVuX3JldChmZCk7CisJcmV0dXJuIGZkOworCisJb3V0X2Zw
dXQ6CisJZmRyb3AoZnApOworCW91dF9lcnJubzoKKwllcnJubyA9IGVycm9yOworCXRyYWNlX3Zm
c19vcGVuX2VycihlcnJvcik7CisJcmV0dXJuIC0xOwogfQogCiBMRlM2NChvcGVuKTsKIAogaW50
IG9wZW5hdChpbnQgZGlyZmQsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBpbnQgZmxhZ3MsIC4uLikK
IHsKLSAgICBtb2RlX3QgbW9kZSA9IDA7Ci0gICAgaWYgKGZsYWdzICYgT19DUkVBVCkgewotICAg
ICAgICB2YV9saXN0IGFwOwotICAgICAgICB2YV9zdGFydChhcCwgZmxhZ3MpOwotICAgICAgICBt
b2RlID0gYXBwbHlfdW1hc2sodmFfYXJnKGFwLCBtb2RlX3QpKTsKLSAgICAgICAgdmFfZW5kKGFw
KTsKLSAgICB9CisJbW9kZV90IG1vZGUgPSAwOworCWlmIChmbGFncyAmIE9fQ1JFQVQpIHsKKwkJ
dmFfbGlzdCBhcDsKKwkJdmFfc3RhcnQoYXAsIGZsYWdzKTsKKwkJbW9kZSA9IGFwcGx5X3VtYXNr
KHZhX2FyZyhhcCwgbW9kZV90KSk7CisJCXZhX2VuZChhcCk7CisJfQogCi0gICAgaWYgKHBhdGhu
YW1lWzBdID09ICcvJyB8fCBkaXJmZCA9PSBBVF9GRENXRCkgewotICAgICAgICByZXR1cm4gb3Bl
bihwYXRobmFtZSwgZmxhZ3MsIG1vZGUpOwotICAgIH0KKwlpZiAocGF0aG5hbWVbMF0gPT0gJy8n
IHx8IGRpcmZkID09IEFUX0ZEQ1dEKSB7CisJCXJldHVybiBvcGVuKHBhdGhuYW1lLCBmbGFncywg
bW9kZSk7CisJfQogCi0gICAgc3RydWN0IGZpbGUgKmZwOwotICAgIGludCBlcnJvciA9IGZnZXQo
ZGlyZmQsICZmcCk7Ci0gICAgaWYgKGVycm9yKSB7Ci0gICAgICAgIGVycm5vID0gZXJyb3I7Ci0g
ICAgICAgIHJldHVybiAtMTsKLSAgICB9CisJc3RydWN0IGZpbGUgKmZwOworCWludCBlcnJvciA9
IGZnZXQoZGlyZmQsICZmcCk7CisJaWYgKGVycm9yKSB7CisJCWVycm5vID0gZXJyb3I7CisJCXJl
dHVybiAtMTsKKwl9CiAKLSAgICBzdHJ1Y3Qgdm5vZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5kX3Zu
b2RlOwotICAgIHZuX2xvY2sodnApOworCXN0cnVjdCB2bm9kZSAqdnAgPSBmcC0+Zl9kZW50cnkt
PmRfdm5vZGU7CisJdm5fbG9jayh2cCk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Y2hhciBbXT4g
dXAgKG5ldyBjaGFyW1BBVEhfTUFYXSk7Ci0gICAgY2hhciAqcCA9IHVwLmdldCgpOworCXN0ZDo6
dW5pcXVlX3B0cjxjaGFyIFtdPiB1cCAobmV3IGNoYXJbUEFUSF9NQVhdKTsKKwljaGFyICpwID0g
dXAuZ2V0KCk7CiAKLSAgICAvKiBidWlsZCBhYnNvbHV0ZSBwYXRoICovCi0gICAgc3RybGNweShw
LCBmcC0+Zl9kZW50cnktPmRfbW91bnQtPm1fcGF0aCwgUEFUSF9NQVgpOwotICAgIHN0cmxjYXQo
cCwgZnAtPmZfZGVudHJ5LT5kX3BhdGgsIFBBVEhfTUFYKTsKLSAgICBzdHJsY2F0KHAsICIvIiwg
UEFUSF9NQVgpOwotICAgIHN0cmxjYXQocCwgcGF0aG5hbWUsIFBBVEhfTUFYKTsKKwkvKiBidWls
ZCBhYnNvbHV0ZSBwYXRoICovCisJc3RybGNweShwLCBmcC0+Zl9kZW50cnktPmRfbW91bnQtPm1f
cGF0aCwgUEFUSF9NQVgpOworCXN0cmxjYXQocCwgZnAtPmZfZGVudHJ5LT5kX3BhdGgsIFBBVEhf
TUFYKTsKKwlzdHJsY2F0KHAsICIvIiwgUEFUSF9NQVgpOworCXN0cmxjYXQocCwgcGF0aG5hbWUs
IFBBVEhfTUFYKTsKIAotICAgIGVycm9yID0gb3BlbihwLCBmbGFncywgbW9kZSk7CisJZXJyb3Ig
PSBvcGVuKHAsIGZsYWdzLCBtb2RlKTsKIAotICAgIHZuX3VubG9jayh2cCk7Ci0gICAgZmRyb3Ao
ZnApOworCXZuX3VubG9jayh2cCk7CisJZmRyb3AoZnApOwogCi0gICAgcmV0dXJuIGVycm9yOwor
CXJldHVybiBlcnJvcjsKIH0KIExGUzY0KG9wZW5hdCk7CiAKQEAgLTIwNiwyMyArMjA2LDIzIEBA
IExGUzY0KG9wZW5hdCk7CiAvLyBieSBhIGNhbGwgdG8gX19vcGVuXzIoKSwgd2hpY2ggdmVyaWZp
ZXMgaXQgaXNuJ3QgY2FsbGVkIHdpdGggT19DUkVBVEUuCiBleHRlcm4gIkMiIGludCBfX29wZW5f
Mihjb25zdCBjaGFyICpwYXRobmFtZSwgaW50IGZsYWdzKQogewotICAgIGFzc2VydCghKGZsYWdz
ICYgT19DUkVBVCkpOwotICAgIHJldHVybiBvcGVuKHBhdGhuYW1lLCBmbGFncywgMCk7CisJYXNz
ZXJ0KCEoZmxhZ3MgJiBPX0NSRUFUKSk7CisJcmV0dXJuIG9wZW4ocGF0aG5hbWUsIGZsYWdzLCAw
KTsKIH0KIAogZXh0ZXJuICJDIiBpbnQgX19vcGVuNjRfMihjb25zdCBjaGFyICpmaWxlLCBpbnQg
ZmxhZ3MpCiB7Ci0gICAgaWYgKGZsYWdzICYgT19DUkVBVCkgewotICAgICAgICBlcnJubyA9IEVJ
TlZBTDsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KKwlpZiAoZmxhZ3MgJiBPX0NSRUFUKSB7
CisJCWVycm5vID0gRUlOVkFMOworCQlyZXR1cm4gLTE7CisJfQogCi0gICAgcmV0dXJuIG9wZW42
NChmaWxlLCBmbGFncyk7CisJcmV0dXJuIG9wZW42NChmaWxlLCBmbGFncyk7CiB9CiAKIGludCBj
cmVhdChjb25zdCBjaGFyICpwYXRobmFtZSwgbW9kZV90IG1vZGUpCiB7Ci0gICAgcmV0dXJuIG9w
ZW4ocGF0aG5hbWUsIE9fQ1JFQVR8T19XUk9OTFl8T19UUlVOQywgbW9kZSk7CisJcmV0dXJuIG9w
ZW4ocGF0aG5hbWUsIE9fQ1JFQVR8T19XUk9OTFl8T19UUlVOQywgbW9kZSk7CiB9CiBMRlM2NChj
cmVhdCk7CiAKQEAgLTIzMiwyMCArMjMyLDIwIEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2Nsb3Nl
X2VyciwgIiVkIiwgaW50KTsKIAogaW50IGNsb3NlKGludCBmZCkKIHsKLSAgICBpbnQgZXJyb3I7
CisJaW50IGVycm9yOwogCi0gICAgdHJhY2VfdmZzX2Nsb3NlKGZkKTsKLSAgICBlcnJvciA9IGZk
Y2xvc2UoZmQpOwotICAgIGlmIChlcnJvcikKLSAgICAgICAgZ290byBvdXRfZXJybm87CisJdHJh
Y2VfdmZzX2Nsb3NlKGZkKTsKKwllcnJvciA9IGZkY2xvc2UoZmQpOworCWlmIChlcnJvcikKKwkJ
Z290byBvdXRfZXJybm87CiAKLSAgICB0cmFjZV92ZnNfY2xvc2VfcmV0KCk7Ci0gICAgcmV0dXJu
IDA7CisJdHJhY2VfdmZzX2Nsb3NlX3JldCgpOworCXJldHVybiAwOwogCi0gICAgb3V0X2Vycm5v
OgotICAgIHRyYWNlX3Zmc19jbG9zZV9lcnIoZXJyb3IpOwotICAgIGVycm5vID0gZXJyb3I7Ci0g
ICAgcmV0dXJuIC0xOworCW91dF9lcnJubzoKKwl0cmFjZV92ZnNfY2xvc2VfZXJyKGVycm9yKTsK
KwllcnJubyA9IGVycm9yOworCXJldHVybiAtMTsKIH0KIAogVFJBQ0VQT0lOVCh0cmFjZV92ZnNf
bWtub2QsICJcIiVzXCIgMCUwbyAweCV4IiwgY29uc3QgY2hhciosIG1vZGVfdCwgZGV2X3QpOwpA
QCAtMjU2LDMxICsyNTYsMzEgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbWtub2RfZXJyLCAiJWQi
LCBpbnQpOwogZXh0ZXJuICJDIgogaW50IF9feG1rbm9kKGludCB2ZXIsIGNvbnN0IGNoYXIgKnBh
dGhuYW1lLCBtb2RlX3QgbW9kZSwgZGV2X3QgKmRldikKIHsKLSAgICBhc3NlcnQodmVyID09IDAp
OyAvLyBPbiB4ODYtNjQgTGludXgsIF9NS05PRF9WRVJfTElOVVggaXMgMC4KLSAgICBzdHJ1Y3Qg
dGFzayAqdCA9IG1haW5fdGFzazsKLSAgICBjaGFyIHBhdGhbUEFUSF9NQVhdOwotICAgIGludCBl
cnJvcjsKKwlhc3NlcnQodmVyID09IDApOyAvLyBPbiB4ODYtNjQgTGludXgsIF9NS05PRF9WRVJf
TElOVVggaXMgMC4KKwlzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKKwljaGFyIHBhdGhbUEFU
SF9NQVhdOworCWludCBlcnJvcjsKIAotICAgIHRyYWNlX3Zmc19ta25vZChwYXRobmFtZSwgbW9k
ZSwgKmRldik7Ci0gICAgaWYgKChlcnJvciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwgVldSSVRF
LCBwYXRoKSkgIT0gMCkKLSAgICAgICAgZ290byBvdXRfZXJybm87CisJdHJhY2VfdmZzX21rbm9k
KHBhdGhuYW1lLCBtb2RlLCAqZGV2KTsKKwlpZiAoKGVycm9yID0gdGFza19jb252KHQsIHBhdGhu
YW1lLCBWV1JJVEUsIHBhdGgpKSAhPSAwKQorCQlnb3RvIG91dF9lcnJubzsKIAotICAgIGVycm9y
ID0gc3lzX21rbm9kKHBhdGgsIG1vZGUpOwotICAgIGlmIChlcnJvcikKLSAgICAgICAgZ290byBv
dXRfZXJybm87CisJZXJyb3IgPSBzeXNfbWtub2QocGF0aCwgbW9kZSk7CisJaWYgKGVycm9yKQor
CQlnb3RvIG91dF9lcnJubzsKIAotICAgIHRyYWNlX3Zmc19ta25vZF9yZXQoKTsKLSAgICByZXR1
cm4gMDsKKwl0cmFjZV92ZnNfbWtub2RfcmV0KCk7CisJcmV0dXJuIDA7CiAKLSAgICBvdXRfZXJy
bm86Ci0gICAgdHJhY2VfdmZzX21rbm9kX2VycihlcnJvcik7Ci0gICAgZXJybm8gPSBlcnJvcjsK
LSAgICByZXR1cm4gLTE7CisJb3V0X2Vycm5vOgorCXRyYWNlX3Zmc19ta25vZF9lcnIoZXJyb3Ip
OworCWVycm5vID0gZXJyb3I7CisJcmV0dXJuIC0xOwogfQogCiBpbnQgbWtub2QoY29uc3QgY2hh
ciAqcGF0aG5hbWUsIG1vZGVfdCBtb2RlLCBkZXZfdCBkZXYpCiB7Ci0gICAgcmV0dXJuIF9feG1r
bm9kKDAsIHBhdGhuYW1lLCBtb2RlLCAmZGV2KTsKKwlyZXR1cm4gX194bWtub2QoMCwgcGF0aG5h
bWUsIG1vZGUsICZkZXYpOwogfQogCiAKQEAgLTI5MCwyNyArMjkwLDI3IEBAIFRSQUNFUE9JTlQo
dHJhY2VfdmZzX2xzZWVrX2VyciwgIiVkIiwgaW50KTsKIAogb2ZmX3QgbHNlZWsoaW50IGZkLCBv
ZmZfdCBvZmZzZXQsIGludCB3aGVuY2UpCiB7Ci0gICAgc3RydWN0IGZpbGUgKmZwOwotICAgIG9m
Zl90IG9yZzsKLSAgICBpbnQgZXJyb3I7CisJc3RydWN0IGZpbGUgKmZwOworCW9mZl90IG9yZzsK
KwlpbnQgZXJyb3I7CiAKLSAgICB0cmFjZV92ZnNfbHNlZWsoZmQsIG9mZnNldCwgd2hlbmNlKTsK
LSAgICBlcnJvciA9IGZnZXQoZmQsICZmcCk7Ci0gICAgaWYgKGVycm9yKQotICAgICAgICBnb3Rv
IG91dF9lcnJubzsKKwl0cmFjZV92ZnNfbHNlZWsoZmQsIG9mZnNldCwgd2hlbmNlKTsKKwllcnJv
ciA9IGZnZXQoZmQsICZmcCk7CisJaWYgKGVycm9yKQorCQlnb3RvIG91dF9lcnJubzsKIAotICAg
IGVycm9yID0gc3lzX2xzZWVrKGZwLCBvZmZzZXQsIHdoZW5jZSwgJm9yZyk7Ci0gICAgZmRyb3Ao
ZnApOworCWVycm9yID0gc3lzX2xzZWVrKGZwLCBvZmZzZXQsIHdoZW5jZSwgJm9yZyk7CisJZmRy
b3AoZnApOwogCi0gICAgaWYgKGVycm9yKQotICAgICAgICBnb3RvIG91dF9lcnJubzsKLSAgICB0
cmFjZV92ZnNfbHNlZWtfcmV0KG9yZyk7Ci0gICAgcmV0dXJuIG9yZzsKKwlpZiAoZXJyb3IpCisJ
CWdvdG8gb3V0X2Vycm5vOworCXRyYWNlX3Zmc19sc2Vla19yZXQob3JnKTsKKwlyZXR1cm4gb3Jn
OwogCi0gICAgb3V0X2Vycm5vOgotICAgIHRyYWNlX3Zmc19sc2Vla19lcnIoZXJyb3IpOwotICAg
IGVycm5vID0gZXJyb3I7Ci0gICAgcmV0dXJuIC0xOworCW91dF9lcnJubzoKKwl0cmFjZV92ZnNf
bHNlZWtfZXJyKGVycm9yKTsKKwllcnJubyA9IGVycm9yOworCXJldHVybiAtMTsKIH0KIAogTEZT
NjQobHNlZWspOwpAQCAtMzI2LDQ2ICszMjYsNDYgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfcHJl
YWRfZXJyLCAiJWQiLCBpbnQpOwogLy8gSW4gRnJlZUJTRCwgZG9maWxld3JpdGUoKSBhbmQgZG9m
aWxlcmVhZCgpIChzeXNfZ2VuZXJpYy5jKSBkbyB0aGlzIHRvby4KIHN0YXRpYyBpbmxpbmUgYm9v
bCBoYXNfZXJyb3IoaW50IGVycm9yLCBpbnQgYnl0ZXMpCiB7Ci0gICAgcmV0dXJuIGVycm9yICYm
ICgKLSAgICAgICAgICAgIChieXRlcyA9PSAwKSB8fAotICAgICAgICAgICAgKGVycm9yICE9IEVX
T1VMREJMT0NLICYmIGVycm9yICE9IEVJTlRSICYmIGVycm9yICE9IEVSRVNUQVJUKSk7CisJcmV0
dXJuIGVycm9yICYmICgKKwkJCShieXRlcyA9PSAwKSB8fAorCQkJKGVycm9yICE9IEVXT1VMREJM
T0NLICYmIGVycm9yICE9IEVJTlRSICYmIGVycm9yICE9IEVSRVNUQVJUKSk7CiB9CiAKIAogc3Np
emVfdCBwcmVhZChpbnQgZmQsIHZvaWQgKmJ1Ziwgc2l6ZV90IGNvdW50LCBvZmZfdCBvZmZzZXQp
CiB7Ci0gICAgdHJhY2VfdmZzX3ByZWFkKGZkLCBidWYsIGNvdW50LCBvZmZzZXQpOwotICAgIHN0
cnVjdCBpb3ZlYyBpb3YgPSB7Ci0gICAgICAgICAgICAuaW92X2Jhc2UJPSBidWYsCi0gICAgICAg
ICAgICAuaW92X2xlbgk9IGNvdW50LAotICAgIH07Ci0gICAgc3RydWN0IGZpbGUgKmZwOwotICAg
IHNpemVfdCBieXRlczsKLSAgICBpbnQgZXJyb3I7CisJdHJhY2VfdmZzX3ByZWFkKGZkLCBidWYs
IGNvdW50LCBvZmZzZXQpOworCXN0cnVjdCBpb3ZlYyBpb3YgPSB7CisJCQkuaW92X2Jhc2UJPSBi
dWYsCisJCQkuaW92X2xlbgk9IGNvdW50LAorCX07CisJc3RydWN0IGZpbGUgKmZwOworCXNpemVf
dCBieXRlczsKKwlpbnQgZXJyb3I7CiAKLSAgICBlcnJvciA9IGZnZXQoZmQsICZmcCk7Ci0gICAg
aWYgKGVycm9yKQotICAgICAgICBnb3RvIG91dF9lcnJubzsKKwllcnJvciA9IGZnZXQoZmQsICZm
cCk7CisJaWYgKGVycm9yKQorCQlnb3RvIG91dF9lcnJubzsKIAotICAgIGVycm9yID0gc3lzX3Jl
YWQoZnAsICZpb3YsIDEsIG9mZnNldCwgJmJ5dGVzKTsKLSAgICBmZHJvcChmcCk7CisJZXJyb3Ig
PSBzeXNfcmVhZChmcCwgJmlvdiwgMSwgb2Zmc2V0LCAmYnl0ZXMpOworCWZkcm9wKGZwKTsKIAot
ICAgIGlmIChoYXNfZXJyb3IoZXJyb3IsIGJ5dGVzKSkKLSAgICAgICAgZ290byBvdXRfZXJybm87
Ci0gICAgdHJhY2VfdmZzX3ByZWFkX3JldChieXRlcyk7Ci0gICAgcmV0dXJuIGJ5dGVzOworCWlm
IChoYXNfZXJyb3IoZXJyb3IsIGJ5dGVzKSkKKwkJZ290byBvdXRfZXJybm87CisJdHJhY2VfdmZz
X3ByZWFkX3JldChieXRlcyk7CisJcmV0dXJuIGJ5dGVzOwogCi0gICAgb3V0X2Vycm5vOgotICAg
IHRyYWNlX3Zmc19wcmVhZF9lcnIoZXJyb3IpOwotICAgIGVycm5vID0gZXJyb3I7Ci0gICAgcmV0
dXJuIC0xOworCW91dF9lcnJubzoKKwl0cmFjZV92ZnNfcHJlYWRfZXJyKGVycm9yKTsKKwllcnJu
byA9IGVycm9yOworCXJldHVybiAtMTsKIH0KIAogTEZTNjQocHJlYWQpOwogCiBzc2l6ZV90IHJl
YWQoaW50IGZkLCB2b2lkICpidWYsIHNpemVfdCBjb3VudCkKIHsKLSAgICByZXR1cm4gcHJlYWQo
ZmQsIGJ1ZiwgY291bnQsIC0xKTsKKwlyZXR1cm4gcHJlYWQoZmQsIGJ1ZiwgY291bnQsIC0xKTsK
IH0KIAogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfcHdyaXRlLCAiJWQgJXAgMHgleCAweCV4IiwgaW50
LCBjb25zdCB2b2lkKiwgc2l6ZV90LCBvZmZfdCk7CkBAIC0zNzQsNjcgKzM3NCw2NyBAQCBUUkFD
RVBPSU5UKHRyYWNlX3Zmc19wd3JpdGVfZXJyLCAiJWQiLCBpbnQpOwogCiBzc2l6ZV90IHB3cml0
ZShpbnQgZmQsIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGNvdW50LCBvZmZfdCBvZmZzZXQpCiB7
Ci0gICAgdHJhY2VfdmZzX3B3cml0ZShmZCwgYnVmLCBjb3VudCwgb2Zmc2V0KTsKLSAgICBzdHJ1
Y3QgaW92ZWMgaW92ID0gewotICAgICAgICAgICAgLmlvdl9iYXNlCT0gKHZvaWQgKilidWYsCi0g
ICAgICAgICAgICAuaW92X2xlbgk9IGNvdW50LAotICAgIH07Ci0gICAgc3RydWN0IGZpbGUgKmZw
OwotICAgIHNpemVfdCBieXRlczsKLSAgICBpbnQgZXJyb3I7CisJdHJhY2VfdmZzX3B3cml0ZShm
ZCwgYnVmLCBjb3VudCwgb2Zmc2V0KTsKKwlzdHJ1Y3QgaW92ZWMgaW92ID0geworCQkJLmlvdl9i
YXNlCT0gKHZvaWQgKilidWYsCisJCQkuaW92X2xlbgk9IGNvdW50LAorCX07CisJc3RydWN0IGZp
bGUgKmZwOworCXNpemVfdCBieXRlczsKKwlpbnQgZXJyb3I7CiAKLSAgICBlcnJvciA9IGZnZXQo
ZmQsICZmcCk7Ci0gICAgaWYgKGVycm9yKQotICAgICAgICBnb3RvIG91dF9lcnJubzsKKwllcnJv
ciA9IGZnZXQoZmQsICZmcCk7CisJaWYgKGVycm9yKQorCQlnb3RvIG91dF9lcnJubzsKIAotICAg
IGVycm9yID0gc3lzX3dyaXRlKGZwLCAmaW92LCAxLCBvZmZzZXQsICZieXRlcyk7Ci0gICAgZmRy
b3AoZnApOworCWVycm9yID0gc3lzX3dyaXRlKGZwLCAmaW92LCAxLCBvZmZzZXQsICZieXRlcyk7
CisJZmRyb3AoZnApOwogCi0gICAgaWYgKGhhc19lcnJvcihlcnJvciwgYnl0ZXMpKQotICAgICAg
ICBnb3RvIG91dF9lcnJubzsKLSAgICB0cmFjZV92ZnNfcHdyaXRlX3JldChieXRlcyk7Ci0gICAg
cmV0dXJuIGJ5dGVzOworCWlmIChoYXNfZXJyb3IoZXJyb3IsIGJ5dGVzKSkKKwkJZ290byBvdXRf
ZXJybm87CisJdHJhY2VfdmZzX3B3cml0ZV9yZXQoYnl0ZXMpOworCXJldHVybiBieXRlczsKIAot
ICAgIG91dF9lcnJubzoKLSAgICB0cmFjZV92ZnNfcHdyaXRlX2VycihlcnJvcik7Ci0gICAgZXJy
bm8gPSBlcnJvcjsKLSAgICByZXR1cm4gLTE7CisJb3V0X2Vycm5vOgorCXRyYWNlX3Zmc19wd3Jp
dGVfZXJyKGVycm9yKTsKKwllcnJubyA9IGVycm9yOworCXJldHVybiAtMTsKIH0KIAogTEZTNjQo
cHdyaXRlKTsKIAogc3NpemVfdCB3cml0ZShpbnQgZmQsIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90
IGNvdW50KQogewotICAgIHJldHVybiBwd3JpdGUoZmQsIGJ1ZiwgY291bnQsIC0xKTsKKwlyZXR1
cm4gcHdyaXRlKGZkLCBidWYsIGNvdW50LCAtMSk7CiB9CiAKIHNzaXplX3QgcHJlYWR2KGludCBm
ZCwgY29uc3Qgc3RydWN0IGlvdmVjICppb3YsIGludCBpb3ZjbnQsIG9mZl90IG9mZnNldCkKIHsK
LSAgICBzdHJ1Y3QgZmlsZSAqZnA7Ci0gICAgc2l6ZV90IGJ5dGVzOwotICAgIGludCBlcnJvcjsK
KwlzdHJ1Y3QgZmlsZSAqZnA7CisJc2l6ZV90IGJ5dGVzOworCWludCBlcnJvcjsKIAotICAgIGVy
cm9yID0gZmdldChmZCwgJmZwKTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIGdvdG8gb3V0X2Vy
cm5vOworCWVycm9yID0gZmdldChmZCwgJmZwKTsKKwlpZiAoZXJyb3IpCisJCWdvdG8gb3V0X2Vy
cm5vOwogCi0gICAgZXJyb3IgPSBzeXNfcmVhZChmcCwgaW92LCBpb3ZjbnQsIG9mZnNldCwgJmJ5
dGVzKTsKLSAgICBmZHJvcChmcCk7CisJZXJyb3IgPSBzeXNfcmVhZChmcCwgaW92LCBpb3ZjbnQs
IG9mZnNldCwgJmJ5dGVzKTsKKwlmZHJvcChmcCk7CiAKLSAgICBpZiAoaGFzX2Vycm9yKGVycm9y
LCBieXRlcykpCi0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwotICAgIHJldHVybiBieXRlczsKKwlp
ZiAoaGFzX2Vycm9yKGVycm9yLCBieXRlcykpCisJCWdvdG8gb3V0X2Vycm5vOworCXJldHVybiBi
eXRlczsKIAotICAgIG91dF9lcnJubzoKLSAgICBlcnJubyA9IGVycm9yOwotICAgIHJldHVybiAt
MTsKKwlvdXRfZXJybm86CisJZXJybm8gPSBlcnJvcjsKKwlyZXR1cm4gLTE7CiB9CiAKIExGUzY0
KHByZWFkdik7CiAKIHNzaXplX3QgcmVhZHYoaW50IGZkLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlv
diwgaW50IGlvdmNudCkKIHsKLSAgICByZXR1cm4gcHJlYWR2KGZkLCBpb3YsIGlvdmNudCwgLTEp
OworCXJldHVybiBwcmVhZHYoZmQsIGlvdiwgaW92Y250LCAtMSk7CiB9CiAKIFRSQUNFUE9JTlQo
dHJhY2VfdmZzX3B3cml0ZXYsICIlZCAlcCAweCV4IDB4JXgiLCBpbnQsIGNvbnN0IHN0cnVjdCBp
b3ZlYyosIGludCwgb2ZmX3QpOwpAQCAtNDQzLDMzICs0NDMsMzMgQEAgVFJBQ0VQT0lOVCh0cmFj
ZV92ZnNfcHdyaXRldl9lcnIsICIlZCIsIGludCk7CiAKIHNzaXplX3QgcHdyaXRldihpbnQgZmQs
IGNvbnN0IHN0cnVjdCBpb3ZlYyAqaW92LCBpbnQgaW92Y250LCBvZmZfdCBvZmZzZXQpCiB7Ci0g
ICAgc3RydWN0IGZpbGUgKmZwOwotICAgIHNpemVfdCBieXRlczsKLSAgICBpbnQgZXJyb3I7CisJ
c3RydWN0IGZpbGUgKmZwOworCXNpemVfdCBieXRlczsKKwlpbnQgZXJyb3I7CiAKLSAgICB0cmFj
ZV92ZnNfcHdyaXRldihmZCwgaW92LCBpb3ZjbnQsIG9mZnNldCk7Ci0gICAgZXJyb3IgPSBmZ2V0
KGZkLCAmZnApOwotICAgIGlmIChlcnJvcikKLSAgICAgICAgZ290byBvdXRfZXJybm87CisJdHJh
Y2VfdmZzX3B3cml0ZXYoZmQsIGlvdiwgaW92Y250LCBvZmZzZXQpOworCWVycm9yID0gZmdldChm
ZCwgJmZwKTsKKwlpZiAoZXJyb3IpCisJCWdvdG8gb3V0X2Vycm5vOwogCi0gICAgZXJyb3IgPSBz
eXNfd3JpdGUoZnAsIGlvdiwgaW92Y250LCBvZmZzZXQsICZieXRlcyk7Ci0gICAgZmRyb3AoZnAp
OworCWVycm9yID0gc3lzX3dyaXRlKGZwLCBpb3YsIGlvdmNudCwgb2Zmc2V0LCAmYnl0ZXMpOwor
CWZkcm9wKGZwKTsKIAotICAgIGlmIChoYXNfZXJyb3IoZXJyb3IsIGJ5dGVzKSkKLSAgICAgICAg
Z290byBvdXRfZXJybm87Ci0gICAgdHJhY2VfdmZzX3B3cml0ZXZfcmV0KGJ5dGVzKTsKLSAgICBy
ZXR1cm4gYnl0ZXM7CisJaWYgKGhhc19lcnJvcihlcnJvciwgYnl0ZXMpKQorCQlnb3RvIG91dF9l
cnJubzsKKwl0cmFjZV92ZnNfcHdyaXRldl9yZXQoYnl0ZXMpOworCXJldHVybiBieXRlczsKIAot
ICAgIG91dF9lcnJubzoKLSAgICB0cmFjZV92ZnNfcHdyaXRldl9lcnIoZXJyb3IpOwotICAgIGVy
cm5vID0gZXJyb3I7Ci0gICAgcmV0dXJuIC0xOworCW91dF9lcnJubzoKKwl0cmFjZV92ZnNfcHdy
aXRldl9lcnIoZXJyb3IpOworCWVycm5vID0gZXJyb3I7CisJcmV0dXJuIC0xOwogfQogTEZTNjQo
cHdyaXRldik7CiAKIHNzaXplX3Qgd3JpdGV2KGludCBmZCwgY29uc3Qgc3RydWN0IGlvdmVjICpp
b3YsIGludCBpb3ZjbnQpCiB7Ci0gICAgcmV0dXJuIHB3cml0ZXYoZmQsIGlvdiwgaW92Y250LCAt
MSk7CisJcmV0dXJuIHB3cml0ZXYoZmQsIGlvdiwgaW92Y250LCAtMSk7CiB9CiAKIFRSQUNFUE9J
TlQodHJhY2VfdmZzX2lvY3RsLCAiJWQgMHgleCIsIGludCwgdW5zaWduZWQgbG9uZyk7CkBAIC00
NzgsMzUgKzQ3OCwzNSBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19pb2N0bF9lcnIsICIlZCIsIGlu
dCk7CiAKIGludCBpb2N0bChpbnQgZmQsIHVuc2lnbmVkIGxvbmcgaW50IHJlcXVlc3QsIC4uLikK
IHsKLSAgICBzdHJ1Y3QgZmlsZSAqZnA7Ci0gICAgaW50IGVycm9yOwotICAgIHZhX2xpc3QgYXA7
Ci0gICAgdm9pZCogYXJnOworCXN0cnVjdCBmaWxlICpmcDsKKwlpbnQgZXJyb3I7CisJdmFfbGlz
dCBhcDsKKwl2b2lkKiBhcmc7CiAKLSAgICB0cmFjZV92ZnNfaW9jdGwoZmQsIHJlcXVlc3QpOwot
ICAgIC8qIGdsaWJjIEFCSSBwcm92aWRlcyBhIHZhcmlhZGljIHByb3RvdHlwZSBmb3IgaW9jdGwg
c28gd2UgbmVlZCB0byBhZ3JlZQotICAgICAqIHdpdGggaXQsIHNpbmNlIHdlIG5vdyBpbmNsdWRl
IHN5cy9pb2N0bC5oCi0gICAgICogcmVhZCB0aGUgZmlyc3QgYXJndW1lbnQgYW5kIHBhc3MgaXQg
dG8gc3lzX2lvY3RsKCkgKi8KLSAgICB2YV9zdGFydChhcCwgcmVxdWVzdCk7Ci0gICAgYXJnID0g
dmFfYXJnKGFwLCB2b2lkKik7Ci0gICAgdmFfZW5kKGFwKTsKKwl0cmFjZV92ZnNfaW9jdGwoZmQs
IHJlcXVlc3QpOworCS8qIGdsaWJjIEFCSSBwcm92aWRlcyBhIHZhcmlhZGljIHByb3RvdHlwZSBm
b3IgaW9jdGwgc28gd2UgbmVlZCB0byBhZ3JlZQorCSAqIHdpdGggaXQsIHNpbmNlIHdlIG5vdyBp
bmNsdWRlIHN5cy9pb2N0bC5oCisJICogcmVhZCB0aGUgZmlyc3QgYXJndW1lbnQgYW5kIHBhc3Mg
aXQgdG8gc3lzX2lvY3RsKCkgKi8KKwl2YV9zdGFydChhcCwgcmVxdWVzdCk7CisJYXJnID0gdmFf
YXJnKGFwLCB2b2lkKik7CisJdmFfZW5kKGFwKTsKIAotICAgIGVycm9yID0gZmdldChmZCwgJmZw
KTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIGdvdG8gb3V0X2Vycm5vOworCWVycm9yID0gZmdl
dChmZCwgJmZwKTsKKwlpZiAoZXJyb3IpCisJCWdvdG8gb3V0X2Vycm5vOwogCi0gICAgZXJyb3Ig
PSBzeXNfaW9jdGwoZnAsIHJlcXVlc3QsIGFyZyk7Ci0gICAgZmRyb3AoZnApOworCWVycm9yID0g
c3lzX2lvY3RsKGZwLCByZXF1ZXN0LCBhcmcpOworCWZkcm9wKGZwKTsKIAotICAgIGlmIChlcnJv
cikKLSAgICAgICAgZ290byBvdXRfZXJybm87Ci0gICAgdHJhY2VfdmZzX2lvY3RsX3JldCgpOwot
ICAgIHJldHVybiAwOworCWlmIChlcnJvcikKKwkJZ290byBvdXRfZXJybm87CisJdHJhY2VfdmZz
X2lvY3RsX3JldCgpOworCXJldHVybiAwOwogCi0gICAgb3V0X2Vycm5vOgotICAgIHRyYWNlX3Zm
c19pb2N0bF9lcnIoZXJyb3IpOwotICAgIGVycm5vID0gZXJyb3I7Ci0gICAgcmV0dXJuIC0xOwor
CW91dF9lcnJubzoKKwl0cmFjZV92ZnNfaW9jdGxfZXJyKGVycm9yKTsKKwllcnJubyA9IGVycm9y
OworCXJldHVybiAtMTsKIH0KIAogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZnN5bmMsICIlZCIsIGlu
dCk7CkBAIC01MTUsMzIgKzUxNSwzMiBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19mc3luY19lcnIs
ICIlZCIsIGludCk7CiAKIGludCBmc3luYyhpbnQgZmQpCiB7Ci0gICAgc3RydWN0IGZpbGUgKmZw
OwotICAgIGludCBlcnJvcjsKKwlzdHJ1Y3QgZmlsZSAqZnA7CisJaW50IGVycm9yOwogCi0gICAg
dHJhY2VfdmZzX2ZzeW5jKGZkKTsKLSAgICBlcnJvciA9IGZnZXQoZmQsICZmcCk7Ci0gICAgaWYg
KGVycm9yKQotICAgICAgICBnb3RvIG91dF9lcnJubzsKKwl0cmFjZV92ZnNfZnN5bmMoZmQpOwor
CWVycm9yID0gZmdldChmZCwgJmZwKTsKKwlpZiAoZXJyb3IpCisJCWdvdG8gb3V0X2Vycm5vOwog
Ci0gICAgZXJyb3IgPSBzeXNfZnN5bmMoZnApOwotICAgIGZkcm9wKGZwKTsKKwllcnJvciA9IHN5
c19mc3luYyhmcCk7CisJZmRyb3AoZnApOwogCi0gICAgaWYgKGVycm9yKQotICAgICAgICBnb3Rv
IG91dF9lcnJubzsKLSAgICB0cmFjZV92ZnNfZnN5bmNfcmV0KCk7Ci0gICAgcmV0dXJuIDA7CisJ
aWYgKGVycm9yKQorCQlnb3RvIG91dF9lcnJubzsKKwl0cmFjZV92ZnNfZnN5bmNfcmV0KCk7CisJ
cmV0dXJuIDA7CiAKLSAgICBvdXRfZXJybm86Ci0gICAgdHJhY2VfdmZzX2ZzeW5jX2VycihlcnJv
cik7Ci0gICAgZXJybm8gPSBlcnJvcjsKLSAgICByZXR1cm4gLTE7CisJb3V0X2Vycm5vOgorCXRy
YWNlX3Zmc19mc3luY19lcnIoZXJyb3IpOworCWVycm5vID0gZXJyb3I7CisJcmV0dXJuIC0xOwog
fQogCiBpbnQgZmRhdGFzeW5jKGludCBmZCkKIHsKLSAgICAvLyBUT0RPOiBTZWUgaWYgd2UgY2Fu
IGRvIGxlc3MgdGhhbiBmc3luYygpLgotICAgIHJldHVybiBmc3luYyhmZCk7CisJLy8gVE9ETzog
U2VlIGlmIHdlIGNhbiBkbyBsZXNzIHRoYW4gZnN5bmMoKS4KKwlyZXR1cm4gZnN5bmMoZmQpOwog
fQogCiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19mc3RhdCwgIiVkICVwIiwgaW50LCBzdHJ1Y3Qgc3Rh
dCopOwpAQCAtNTUwLDI3ICs1NTAsMjcgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZnN0YXRfZXJy
LCAiJWQiLCBpbnQpOwogZXh0ZXJuICJDIgogaW50IF9fZnhzdGF0KGludCB2ZXIsIGludCBmZCwg
c3RydWN0IHN0YXQgKnN0KQogewotICAgIHN0cnVjdCBmaWxlICpmcDsKLSAgICBpbnQgZXJyb3I7
CisJc3RydWN0IGZpbGUgKmZwOworCWludCBlcnJvcjsKIAotICAgIHRyYWNlX3Zmc19mc3RhdChm
ZCwgc3QpOworCXRyYWNlX3Zmc19mc3RhdChmZCwgc3QpOwogCi0gICAgZXJyb3IgPSBmZ2V0KGZk
LCAmZnApOwotICAgIGlmIChlcnJvcikKLSAgICAgICAgZ290byBvdXRfZXJybm87CisJZXJyb3Ig
PSBmZ2V0KGZkLCAmZnApOworCWlmIChlcnJvcikKKwkJZ290byBvdXRfZXJybm87CiAKLSAgICBl
cnJvciA9IHN5c19mc3RhdChmcCwgc3QpOwotICAgIGZkcm9wKGZwKTsKKwllcnJvciA9IHN5c19m
c3RhdChmcCwgc3QpOworCWZkcm9wKGZwKTsKIAotICAgIGlmIChlcnJvcikKLSAgICAgICAgZ290
byBvdXRfZXJybm87Ci0gICAgdHJhY2VfdmZzX2ZzdGF0X3JldCgpOwotICAgIHJldHVybiAwOwor
CWlmIChlcnJvcikKKwkJZ290byBvdXRfZXJybm87CisJdHJhY2VfdmZzX2ZzdGF0X3JldCgpOwor
CXJldHVybiAwOwogCi0gICAgb3V0X2Vycm5vOgotICAgIHRyYWNlX3Zmc19mc3RhdF9lcnIoZXJy
b3IpOwotICAgIGVycm5vID0gZXJyb3I7Ci0gICAgcmV0dXJuIC0xOworCW91dF9lcnJubzoKKwl0
cmFjZV92ZnNfZnN0YXRfZXJyKGVycm9yKTsKKwllcnJubyA9IGVycm9yOworCXJldHVybiAtMTsK
IH0KIAogTEZTNjQoX19meHN0YXQpOwpAQCAtNTc4LDUyICs1NzgsNTIgQEAgTEZTNjQoX19meHN0
YXQpOwogZXh0ZXJuICJDIgogaW50IGZzdGF0KGludCBmZCwgc3RydWN0IHN0YXQgKnN0KQogewot
ICAgIHJldHVybiBfX2Z4c3RhdCgxLCBmZCwgc3QpOworCXJldHVybiBfX2Z4c3RhdCgxLCBmZCwg
c3QpOwogfQogCiBMRlM2NChmc3RhdCk7CiAKIGV4dGVybiAiQyIKIGludCBfX2Z4c3RhdGF0KGlu
dCB2ZXIsIGludCBkaXJmZCwgY29uc3QgY2hhciAqcGF0aG5hbWUsIHN0cnVjdCBzdGF0ICpzdCwK
LSAgICAgICAgaW50IGZsYWdzKQorCQlpbnQgZmxhZ3MpCiB7Ci0gICAgaWYgKGZsYWdzICYgQVRf
U1lNTElOS19OT0ZPTExPVykgewotICAgICAgICBVTklNUExFTUVOVEVEKCJmc3RhdGF0KCkgd2l0
aCBBVF9TWU1MSU5LX05PRk9MTE9XIik7Ci0gICAgfQorCWlmIChmbGFncyAmIEFUX1NZTUxJTktf
Tk9GT0xMT1cpIHsKKwkJVU5JTVBMRU1FTlRFRCgiZnN0YXRhdCgpIHdpdGggQVRfU1lNTElOS19O
T0ZPTExPVyIpOworCX0KIAotICAgIGlmIChwYXRobmFtZVswXSA9PSAnLycgfHwgZGlyZmQgPT0g
QVRfRkRDV0QpIHsKLSAgICAgICAgcmV0dXJuIHN0YXQocGF0aG5hbWUsIHN0KTsKLSAgICB9Ci0g
ICAgLy8gSWYgQVRfRU1QVFlfUEFUSCBhbmQgcGF0aG5hbWUgaXMgYW4gZW1wdHkgc3RyaW5nLCBm
c3RhdGF0KCkgb3BlcmF0ZXMgb24KLSAgICAvLyBkaXJmZCBpdHNlbGYsIGFuZCBpbiB0aGF0IGNh
c2UgaXQgZG9lc24ndCBoYXZlIHRvIGJlIGEgZGlyZWN0b3J5LgotICAgIGlmICgoZmxhZ3MgJiBB
VF9FTVBUWV9QQVRIKSAmJiAhcGF0aG5hbWVbMF0pIHsKLSAgICAgICAgcmV0dXJuIGZzdGF0KGRp
cmZkLCBzdCk7Ci0gICAgfQorCWlmIChwYXRobmFtZVswXSA9PSAnLycgfHwgZGlyZmQgPT0gQVRf
RkRDV0QpIHsKKwkJcmV0dXJuIHN0YXQocGF0aG5hbWUsIHN0KTsKKwl9CisJLy8gSWYgQVRfRU1Q
VFlfUEFUSCBhbmQgcGF0aG5hbWUgaXMgYW4gZW1wdHkgc3RyaW5nLCBmc3RhdGF0KCkgb3BlcmF0
ZXMgb24KKwkvLyBkaXJmZCBpdHNlbGYsIGFuZCBpbiB0aGF0IGNhc2UgaXQgZG9lc24ndCBoYXZl
IHRvIGJlIGEgZGlyZWN0b3J5LgorCWlmICgoZmxhZ3MgJiBBVF9FTVBUWV9QQVRIKSAmJiAhcGF0
aG5hbWVbMF0pIHsKKwkJcmV0dXJuIGZzdGF0KGRpcmZkLCBzdCk7CisJfQogCi0gICAgc3RydWN0
IGZpbGUgKmZwOwotICAgIGludCBlcnJvciA9IGZnZXQoZGlyZmQsICZmcCk7Ci0gICAgaWYgKGVy
cm9yKSB7Ci0gICAgICAgIGVycm5vID0gZXJyb3I7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9
CisJc3RydWN0IGZpbGUgKmZwOworCWludCBlcnJvciA9IGZnZXQoZGlyZmQsICZmcCk7CisJaWYg
KGVycm9yKSB7CisJCWVycm5vID0gZXJyb3I7CisJCXJldHVybiAtMTsKKwl9CiAKLSAgICBzdHJ1
Y3Qgdm5vZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOwotICAgIHZuX2xvY2sodnApOwor
CXN0cnVjdCB2bm9kZSAqdnAgPSBmcC0+Zl9kZW50cnktPmRfdm5vZGU7CisJdm5fbG9jayh2cCk7
CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Y2hhciBbXT4gdXAgKG5ldyBjaGFyW1BBVEhfTUFYXSk7
Ci0gICAgY2hhciAqcCA9IHVwLmdldCgpOwotICAgIC8qIGJ1aWxkIGFic29sdXRlIHBhdGggKi8K
LSAgICBzdHJsY3B5KHAsIGZwLT5mX2RlbnRyeS0+ZF9tb3VudC0+bV9wYXRoLCBQQVRIX01BWCk7
Ci0gICAgc3RybGNhdChwLCBmcC0+Zl9kZW50cnktPmRfcGF0aCwgUEFUSF9NQVgpOwotICAgIHN0
cmxjYXQocCwgIi8iLCBQQVRIX01BWCk7Ci0gICAgc3RybGNhdChwLCBwYXRobmFtZSwgUEFUSF9N
QVgpOworCXN0ZDo6dW5pcXVlX3B0cjxjaGFyIFtdPiB1cCAobmV3IGNoYXJbUEFUSF9NQVhdKTsK
KwljaGFyICpwID0gdXAuZ2V0KCk7CisJLyogYnVpbGQgYWJzb2x1dGUgcGF0aCAqLworCXN0cmxj
cHkocCwgZnAtPmZfZGVudHJ5LT5kX21vdW50LT5tX3BhdGgsIFBBVEhfTUFYKTsKKwlzdHJsY2F0
KHAsIGZwLT5mX2RlbnRyeS0+ZF9wYXRoLCBQQVRIX01BWCk7CisJc3RybGNhdChwLCAiLyIsIFBB
VEhfTUFYKTsKKwlzdHJsY2F0KHAsIHBhdGhuYW1lLCBQQVRIX01BWCk7CiAKLSAgICBlcnJvciA9
IHN0YXQocCwgc3QpOworCWVycm9yID0gc3RhdChwLCBzdCk7CiAKLSAgICB2bl91bmxvY2sodnAp
OwotICAgIGZkcm9wKGZwKTsKKwl2bl91bmxvY2sodnApOworCWZkcm9wKGZwKTsKIAotICAgIHJl
dHVybiBlcnJvcjsKKwlyZXR1cm4gZXJyb3I7CiB9CiAKIExGUzY0KF9fZnhzdGF0YXQpOwpAQCAt
NjMxLDI5ICs2MzEsMjkgQEAgTEZTNjQoX19meHN0YXRhdCk7CiBleHRlcm4gIkMiCiBpbnQgZnN0
YXRhdChpbnQgZGlyZmQsIGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBzdGF0ICpzdCwgaW50IGZs
YWdzKQogewotICAgIHJldHVybiBfX2Z4c3RhdGF0KDEsIGRpcmZkLCBwYXRoLCBzdCwgZmxhZ3Mp
OworCXJldHVybiBfX2Z4c3RhdGF0KDEsIGRpcmZkLCBwYXRoLCBzdCwgZmxhZ3MpOwogfQogCiBM
RlM2NChmc3RhdGF0KTsKIAogZXh0ZXJuICJDIiBpbnQgZmxvY2soaW50IGZkLCBpbnQgb3BlcmF0
aW9uKQogewotICAgIGlmICghZmlsZXJlZl9mcm9tX2ZkKGZkKSkgewotICAgICAgICByZXR1cm4g
bGliY19lcnJvcihFQkFERik7Ci0gICAgfQorCWlmICghZmlsZXJlZl9mcm9tX2ZkKGZkKSkgewor
CQlyZXR1cm4gbGliY19lcnJvcihFQkFERik7CisJfQogCi0gICAgc3dpdGNoIChvcGVyYXRpb24p
IHsKLSAgICBjYXNlIExPQ0tfU0g6Ci0gICAgY2FzZSBMT0NLX1NIIHwgTE9DS19OQjoKLSAgICBj
YXNlIExPQ0tfRVg6Ci0gICAgY2FzZSBMT0NLX0VYIHwgTE9DS19OQjoKLSAgICBjYXNlIExPQ0tf
VU46Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBsaWJjX2Vy
cm9yKEVJTlZBTCk7Ci0gICAgfQorCXN3aXRjaCAob3BlcmF0aW9uKSB7CisJY2FzZSBMT0NLX1NI
OgorCWNhc2UgTE9DS19TSCB8IExPQ0tfTkI6CisJY2FzZSBMT0NLX0VYOgorCWNhc2UgTE9DS19F
WCB8IExPQ0tfTkI6CisJY2FzZSBMT0NLX1VOOgorCQlicmVhazsKKwlkZWZhdWx0OgorCQlyZXR1
cm4gbGliY19lcnJvcihFSU5WQUwpOworCX0KIAotICAgIHJldHVybiAwOworCXJldHVybiAwOwog
fQogCiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19yZWFkZGlyLCAiJWQgJXAiLCBpbnQsIGRpcmVudCop
OwpAQCAtNjYyLDE1MiArNjYyLDE1MiBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19yZWFkZGlyX2Vy
ciwgIiVkIiwgaW50KTsKIAogc3RydWN0IF9fZGlyc3RyZWFtCiB7Ci0gICAgaW50IGZkOworCWlu
dCBmZDsKIH07CiAKIERJUiAqb3BlbmRpcihjb25zdCBjaGFyICpwYXRoKQogewotICAgIERJUiAq
ZGlyID0gbmV3IERJUjsKKwlESVIgKmRpciA9IG5ldyBESVI7CiAKLSAgICBpZiAoIWRpcikKLSAg
ICAgICAgcmV0dXJuIGxpYmNfZXJyb3JfcHRyPERJUj4oRU5PTUVNKTsKKwlpZiAoIWRpcikKKwkJ
cmV0dXJuIGxpYmNfZXJyb3JfcHRyPERJUj4oRU5PTUVNKTsKIAotICAgIGRpci0+ZmQgPSBvcGVu
KHBhdGgsIE9fUkRPTkxZKTsKLSAgICBpZiAoZGlyLT5mZCA8IDApIHsKLSAgICAgICAgZGVsZXRl
IGRpcjsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotICAgIHJldHVybiBkaXI7CisJ
ZGlyLT5mZCA9IG9wZW4ocGF0aCwgT19SRE9OTFkpOworCWlmIChkaXItPmZkIDwgMCkgeworCQlk
ZWxldGUgZGlyOworCQlyZXR1cm4gbnVsbHB0cjsKKwl9CisJcmV0dXJuIGRpcjsKIH0KIAogRElS
ICpmZG9wZW5kaXIoaW50IGZkKQogewotICAgIERJUiAqZGlyOwotICAgIHN0cnVjdCBzdGF0IHN0
OwotICAgIGlmIChmc3RhdChmZCwgJnN0KSA8IDApIHsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgfQotICAgIGlmICghU19JU0RJUihzdC5zdF9tb2RlKSkgewotICAgICAgICBlcnJubyA9
IEVOT1RESVI7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLSAgICBkaXIgPSBuZXcg
RElSOwotICAgIGRpci0+ZmQgPSBmZDsKLSAgICByZXR1cm4gZGlyOworCURJUiAqZGlyOworCXN0
cnVjdCBzdGF0IHN0OworCWlmIChmc3RhdChmZCwgJnN0KSA8IDApIHsKKwkJcmV0dXJuIG51bGxw
dHI7CisJfQorCWlmICghU19JU0RJUihzdC5zdF9tb2RlKSkgeworCQllcnJubyA9IEVOT1RESVI7
CisJCXJldHVybiBudWxscHRyOworCX0KKwlkaXIgPSBuZXcgRElSOworCWRpci0+ZmQgPSBmZDsK
KwlyZXR1cm4gZGlyOwogCiB9CiAKIGludCBkaXJmZChESVIgKmRpcnApCiB7Ci0gICAgaWYgKCFk
aXJwKSB7Ci0gICAgICAgIHJldHVybiBsaWJjX2Vycm9yKEVJTlZBTCk7Ci0gICAgfQorCWlmICgh
ZGlycCkgeworCQlyZXR1cm4gbGliY19lcnJvcihFSU5WQUwpOworCX0KIAotICAgIHJldHVybiBk
aXJwLT5mZDsKKwlyZXR1cm4gZGlycC0+ZmQ7CiB9CiAKIGludCBjbG9zZWRpcihESVIgKmRpcikK
IHsKLSAgICBjbG9zZShkaXItPmZkKTsKLSAgICBkZWxldGUgZGlyOwotICAgIHJldHVybiAwOwor
CWNsb3NlKGRpci0+ZmQpOworCWRlbGV0ZSBkaXI7CisJcmV0dXJuIDA7CiB9CiAKIHN0cnVjdCBk
aXJlbnQgKnJlYWRkaXIoRElSICpkaXIpCiB7Ci0gICAgc3RhdGljIF9fdGhyZWFkIHN0cnVjdCBk
aXJlbnQgZW50cnksICpyZXN1bHQ7Ci0gICAgaW50IHJldDsKKwlzdGF0aWMgX190aHJlYWQgc3Ry
dWN0IGRpcmVudCBlbnRyeSwgKnJlc3VsdDsKKwlpbnQgcmV0OwogCi0gICAgcmV0ID0gcmVhZGRp
cl9yKGRpciwgJmVudHJ5LCAmcmVzdWx0KTsKLSAgICBpZiAocmV0KQotICAgICAgICByZXR1cm4g
bGliY19lcnJvcl9wdHI8c3RydWN0IGRpcmVudD4ocmV0KTsKKwlyZXQgPSByZWFkZGlyX3IoZGly
LCAmZW50cnksICZyZXN1bHQpOworCWlmIChyZXQpCisJCXJldHVybiBsaWJjX2Vycm9yX3B0cjxz
dHJ1Y3QgZGlyZW50PihyZXQpOwogCi0gICAgZXJybm8gPSAwOwotICAgIHJldHVybiByZXN1bHQ7
CisJZXJybm8gPSAwOworCXJldHVybiByZXN1bHQ7CiB9CiAKIGludCByZWFkZGlyX3IoRElSICpk
aXIsIHN0cnVjdCBkaXJlbnQgKmVudHJ5LCBzdHJ1Y3QgZGlyZW50ICoqcmVzdWx0KQogewotICAg
IGludCBlcnJvcjsKLSAgICBzdHJ1Y3QgZmlsZSAqZnA7Ci0KLSAgICB0cmFjZV92ZnNfcmVhZGRp
cihkaXItPmZkLCBlbnRyeSk7Ci0gICAgZXJyb3IgPSBmZ2V0KGRpci0+ZmQsICZmcCk7Ci0gICAg
aWYgKGVycm9yKSB7Ci0gICAgICAgIHRyYWNlX3Zmc19yZWFkZGlyX2VycihlcnJvcik7Ci0gICAg
fSBlbHNlIHsKLSAgICAgICAgZXJyb3IgPSBzeXNfcmVhZGRpcihmcCwgZW50cnkpOwotICAgICAg
ICBmZHJvcChmcCk7Ci0gICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgdHJhY2VfdmZz
X3JlYWRkaXJfZXJyKGVycm9yKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHRyYWNl
X3Zmc19yZWFkZGlyX3JldCgpOwotICAgICAgICB9Ci0gICAgfQotICAgIC8vIE91ciBkaXJlbnQg
aGFzIChsaWtlIExpbnV4KSBhIGRfcmVjbGVuIGZpZWxkLCBidXQgYSBjb25zdGFudCBzaXplLgot
ICAgIGVudHJ5LT5kX3JlY2xlbiA9IHNpemVvZigqZW50cnkpOwotCi0gICAgaWYgKGVycm9yKSB7
Ci0gICAgICAgICpyZXN1bHQgPSBudWxscHRyOwotICAgIH0gZWxzZSB7Ci0gICAgICAgICpyZXN1
bHQgPSBlbnRyeTsKLSAgICB9Ci0gICAgcmV0dXJuIGVycm9yID09IEVOT0VOVCA/IDAgOiBlcnJv
cjsKKwlpbnQgZXJyb3I7CisJc3RydWN0IGZpbGUgKmZwOworCisJdHJhY2VfdmZzX3JlYWRkaXIo
ZGlyLT5mZCwgZW50cnkpOworCWVycm9yID0gZmdldChkaXItPmZkLCAmZnApOworCWlmIChlcnJv
cikgeworCQl0cmFjZV92ZnNfcmVhZGRpcl9lcnIoZXJyb3IpOworCX0gZWxzZSB7CisJCWVycm9y
ID0gc3lzX3JlYWRkaXIoZnAsIGVudHJ5KTsKKwkJZmRyb3AoZnApOworCQlpZiAoZXJyb3IpIHsK
KwkJCXRyYWNlX3Zmc19yZWFkZGlyX2VycihlcnJvcik7CisJCX0gZWxzZSB7CisJCQl0cmFjZV92
ZnNfcmVhZGRpcl9yZXQoKTsKKwkJfQorCX0KKwkvLyBPdXIgZGlyZW50IGhhcyAobGlrZSBMaW51
eCkgYSBkX3JlY2xlbiBmaWVsZCwgYnV0IGEgY29uc3RhbnQgc2l6ZS4KKwllbnRyeS0+ZF9yZWNs
ZW4gPSBzaXplb2YoKmVudHJ5KTsKKworCWlmIChlcnJvcikgeworCQkqcmVzdWx0ID0gbnVsbHB0
cjsKKwl9IGVsc2UgeworCQkqcmVzdWx0ID0gZW50cnk7CisJfQorCXJldHVybiBlcnJvciA9PSBF
Tk9FTlQgPyAwIDogZXJyb3I7CiB9CiAKIC8vIEZJWE1FOiBpbiA2NGJpdCBkaXJlbnQ2NCBhbmQg
ZGlyZW50IGFyZSBpZGVudGljYWwsIHNvIGl0J3Mgc2FmZSB0byBhbGlhcwogI3VuZGVmIHJlYWRk
aXI2NF9yCiBleHRlcm4gIkMiIGludCByZWFkZGlyNjRfcihESVIgKmRpciwgc3RydWN0IGRpcmVu
dDY0ICplbnRyeSwKLSAgICAgICAgc3RydWN0IGRpcmVudDY0ICoqcmVzdWx0KQotICAgICAgICBf
X2F0dHJpYnV0ZV9fKChhbGlhcygicmVhZGRpcl9yIikpKTsKKwkJc3RydWN0IGRpcmVudDY0ICoq
cmVzdWx0KQorCQlfX2F0dHJpYnV0ZV9fKChhbGlhcygicmVhZGRpcl9yIikpKTsKIAogI3VuZGVm
IHJlYWRkaXI2NAogZXh0ZXJuICJDIiBzdHJ1Y3QgZGlyZW50ICpyZWFkZGlyNjQoRElSICpkaXIp
IF9fYXR0cmlidXRlX18oKGFsaWFzKCJyZWFkZGlyIikpKTsKIAogdm9pZCByZXdpbmRkaXIoRElS
ICpkaXJwKQogewotICAgIHN0cnVjdCBmaWxlICpmcDsKKwlzdHJ1Y3QgZmlsZSAqZnA7CiAKLSAg
ICBhdXRvIGVycm9yID0gZmdldChkaXJwLT5mZCwgJmZwKTsKLSAgICBpZiAoZXJyb3IpIHsKLSAg
ICAgICAgLy8gUE9TSVggc3BlY2lmaWVzIHRoYXQgd2hhdCByZXdpbmRkaXIoKSBkb2VzIGluIHRo
ZSBjYXNlIG9mIGVycm9yCi0gICAgICAgIC8vIGlzIHVuZGVmaW5lZC4uLgotICAgICAgICByZXR1
cm47Ci0gICAgfQorCWF1dG8gZXJyb3IgPSBmZ2V0KGRpcnAtPmZkLCAmZnApOworCWlmIChlcnJv
cikgeworCQkvLyBQT1NJWCBzcGVjaWZpZXMgdGhhdCB3aGF0IHJld2luZGRpcigpIGRvZXMgaW4g
dGhlIGNhc2Ugb2YgZXJyb3IKKwkJLy8gaXMgdW5kZWZpbmVkLi4uCisJCXJldHVybjsKKwl9CiAK
LSAgICBzeXNfcmV3aW5kZGlyKGZwKTsKLSAgICAvLyBBZ2FpbiwgZXJyb3IgY29kZSBmcm9tIHN5
c19yZXdpbmRkaXIoKSBpcyBpZ25vcmVkLgotICAgIGZkcm9wKGZwKTsKKwlzeXNfcmV3aW5kZGly
KGZwKTsKKwkvLyBBZ2FpbiwgZXJyb3IgY29kZSBmcm9tIHN5c19yZXdpbmRkaXIoKSBpcyBpZ25v
cmVkLgorCWZkcm9wKGZwKTsKIH0KIAogbG9uZyB0ZWxsZGlyKERJUiAqZGlycCkKIHsKLSAgICBz
dHJ1Y3QgZmlsZSAqZnA7Ci0gICAgaW50IGVycm9yID0gZmdldChkaXJwLT5mZCwgJmZwKTsKLSAg
ICBpZiAoZXJyb3IpIHsKLSAgICAgICAgcmV0dXJuIGxpYmNfZXJyb3IoZXJyb3IpOwotICAgIH0K
KwlzdHJ1Y3QgZmlsZSAqZnA7CisJaW50IGVycm9yID0gZmdldChkaXJwLT5mZCwgJmZwKTsKKwlp
ZiAoZXJyb3IpIHsKKwkJcmV0dXJuIGxpYmNfZXJyb3IoZXJyb3IpOworCX0KIAotICAgIGxvbmcg
bG9jOwotICAgIGVycm9yID0gc3lzX3RlbGxkaXIoZnAsICZsb2MpOwotICAgIGZkcm9wKGZwKTsK
LSAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgcmV0dXJuIGxpYmNfZXJyb3IoZXJyb3IpOwotICAg
IH0KLSAgICByZXR1cm4gbG9jOworCWxvbmcgbG9jOworCWVycm9yID0gc3lzX3RlbGxkaXIoZnAs
ICZsb2MpOworCWZkcm9wKGZwKTsKKwlpZiAoZXJyb3IpIHsKKwkJcmV0dXJuIGxpYmNfZXJyb3Io
ZXJyb3IpOworCX0KKwlyZXR1cm4gbG9jOwogfQogCiB2b2lkIHNlZWtkaXIoRElSICpkaXJwLCBs
b25nIGxvYykKIHsKLSAgICBzdHJ1Y3QgZmlsZSAqZnA7Ci0gICAgaW50IGVycm9yID0gZmdldChk
aXJwLT5mZCwgJmZwKTsKLSAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgLy8gUE9TSVggc3BlY2lm
aWVzIHNlZWtkaXIoKSBjYW5ub3QgcmV0dXJuIGVycm9ycy4KLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBzeXNfc2Vla2RpcihmcCwgbG9jKTsKLSAgICAvLyBBZ2FpbiwgZXJyb3IgY29kZSBm
cm9tIHN5c19zZWVrZGlyKCkgaXMgaWdub3JlZC4KLSAgICBmZHJvcChmcCk7CisJc3RydWN0IGZp
bGUgKmZwOworCWludCBlcnJvciA9IGZnZXQoZGlycC0+ZmQsICZmcCk7CisJaWYgKGVycm9yKSB7
CisJCS8vIFBPU0lYIHNwZWNpZmllcyBzZWVrZGlyKCkgY2Fubm90IHJldHVybiBlcnJvcnMuCisJ
CXJldHVybjsKKwl9CisJc3lzX3NlZWtkaXIoZnAsIGxvYyk7CisJLy8gQWdhaW4sIGVycm9yIGNv
ZGUgZnJvbSBzeXNfc2Vla2RpcigpIGlzIGlnbm9yZWQuCisJZmRyb3AoZnApOwogfQogCiBUUkFD
RVBPSU5UKHRyYWNlX3Zmc19ta2RpciwgIlwiJXNcIiAwJTBvIiwgY29uc3QgY2hhciosIG1vZGVf
dCk7CkBAIC04MTcsMjUgKzgxNywyNSBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19ta2Rpcl9lcnIs
ICIlZCIsIGludCk7CiBpbnQKIG1rZGlyKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBtb2RlX3QgbW9k
ZSkKIHsKLSAgICBzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKLSAgICBjaGFyIHBhdGhbUEFU
SF9NQVhdOwotICAgIGludCBlcnJvcjsKKwlzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKKwlj
aGFyIHBhdGhbUEFUSF9NQVhdOworCWludCBlcnJvcjsKIAotICAgIG1vZGUgPSBhcHBseV91bWFz
ayhtb2RlKTsKKwltb2RlID0gYXBwbHlfdW1hc2sobW9kZSk7CiAKLSAgICB0cmFjZV92ZnNfbWtk
aXIocGF0aG5hbWUsIG1vZGUpOwotICAgIGlmICgoZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5h
bWUsIFZXUklURSwgcGF0aCkpICE9IDApCi0gICAgICAgIGdvdG8gb3V0X2Vycm5vOworCXRyYWNl
X3Zmc19ta2RpcihwYXRobmFtZSwgbW9kZSk7CisJaWYgKChlcnJvciA9IHRhc2tfY29udih0LCBw
YXRobmFtZSwgVldSSVRFLCBwYXRoKSkgIT0gMCkKKwkJZ290byBvdXRfZXJybm87CiAKLSAgICBl
cnJvciA9IHN5c19ta2RpcihwYXRoLCBtb2RlKTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIGdv
dG8gb3V0X2Vycm5vOwotICAgIHRyYWNlX3Zmc19ta2Rpcl9yZXQoKTsKLSAgICByZXR1cm4gMDsK
LSAgICBvdXRfZXJybm86Ci0gICAgdHJhY2VfdmZzX21rZGlyX2VycihlcnJvcik7Ci0gICAgZXJy
bm8gPSBlcnJvcjsKLSAgICByZXR1cm4gLTE7CisJZXJyb3IgPSBzeXNfbWtkaXIocGF0aCwgbW9k
ZSk7CisJaWYgKGVycm9yKQorCQlnb3RvIG91dF9lcnJubzsKKwl0cmFjZV92ZnNfbWtkaXJfcmV0
KCk7CisJcmV0dXJuIDA7CisJb3V0X2Vycm5vOgorCXRyYWNlX3Zmc19ta2Rpcl9lcnIoZXJyb3Ip
OworCWVycm5vID0gZXJyb3I7CisJcmV0dXJuIC0xOwogfQogCiBUUkFDRVBPSU5UKHRyYWNlX3Zm
c19ybWRpciwgIlwiJXNcIiIsIGNvbnN0IGNoYXIqKTsKQEAgLTg0NCw1MSArODQ0LDUxIEBAIFRS
QUNFUE9JTlQodHJhY2VfdmZzX3JtZGlyX2VyciwgIiVkIiwgaW50KTsKIAogaW50IHJtZGlyKGNv
bnN0IGNoYXIgKnBhdGhuYW1lKQogewotICAgIHN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOwot
ICAgIGNoYXIgcGF0aFtQQVRIX01BWF07Ci0gICAgaW50IGVycm9yOworCXN0cnVjdCB0YXNrICp0
ID0gbWFpbl90YXNrOworCWNoYXIgcGF0aFtQQVRIX01BWF07CisJaW50IGVycm9yOwogCi0gICAg
dHJhY2VfdmZzX3JtZGlyKHBhdGhuYW1lKTsKLSAgICBlcnJvciA9IEVOT0VOVDsKLSAgICBpZiAo
cGF0aG5hbWUgPT0gbnVsbHB0cikKLSAgICAgICAgZ290byBvdXRfZXJybm87Ci0gICAgaWYgKChl
cnJvciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwgVldSSVRFLCBwYXRoKSkgIT0gMCkKLSAgICAg
ICAgZ290byBvdXRfZXJybm87CisJdHJhY2VfdmZzX3JtZGlyKHBhdGhuYW1lKTsKKwllcnJvciA9
IEVOT0VOVDsKKwlpZiAocGF0aG5hbWUgPT0gbnVsbHB0cikKKwkJZ290byBvdXRfZXJybm87CisJ
aWYgKChlcnJvciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwgVldSSVRFLCBwYXRoKSkgIT0gMCkK
KwkJZ290byBvdXRfZXJybm87CiAKLSAgICBlcnJvciA9IHN5c19ybWRpcihwYXRoKTsKLSAgICBp
ZiAoZXJyb3IpCi0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwotICAgIHRyYWNlX3Zmc19ybWRpcl9y
ZXQoKTsKLSAgICByZXR1cm4gMDsKLSAgICBvdXRfZXJybm86Ci0gICAgdHJhY2VfdmZzX3JtZGly
X2VycihlcnJvcik7Ci0gICAgZXJybm8gPSBlcnJvcjsKLSAgICByZXR1cm4gLTE7CisJZXJyb3Ig
PSBzeXNfcm1kaXIocGF0aCk7CisJaWYgKGVycm9yKQorCQlnb3RvIG91dF9lcnJubzsKKwl0cmFj
ZV92ZnNfcm1kaXJfcmV0KCk7CisJcmV0dXJuIDA7CisJb3V0X2Vycm5vOgorCXRyYWNlX3Zmc19y
bWRpcl9lcnIoZXJyb3IpOworCWVycm5vID0gZXJyb3I7CisJcmV0dXJuIC0xOwogfQogCiBzdGF0
aWMgdm9pZAogZ2V0X2xhc3RfY29tcG9uZW50KGNvbnN0IGNoYXIgKnBhdGgsIGNoYXIgKmRzdCkK
IHsKLSAgICBpbnQgcG9zID0gc3RybGVuKHBhdGgpIC0gMTsKKwlpbnQgcG9zID0gc3RybGVuKHBh
dGgpIC0gMTsKIAotICAgIHdoaWxlIChwb3MgPj0gMCAmJiBwYXRoW3Bvc10gPT0gJy8nKQotICAg
ICAgICBwb3MtLTsKKwl3aGlsZSAocG9zID49IDAgJiYgcGF0aFtwb3NdID09ICcvJykKKwkJcG9z
LS07CiAKLSAgICBpbnQgY29tcG9uZW50X2VuZCA9IHBvczsKKwlpbnQgY29tcG9uZW50X2VuZCA9
IHBvczsKIAotICAgIHdoaWxlIChwb3MgPj0gMCAmJiBwYXRoW3Bvc10gIT0gJy8nKQotICAgICAg
ICBwb3MtLTsKKwl3aGlsZSAocG9zID49IDAgJiYgcGF0aFtwb3NdICE9ICcvJykKKwkJcG9zLS07
CiAKLSAgICBpbnQgY29tcG9uZW50X3N0YXJ0ID0gcG9zICsgMTsKKwlpbnQgY29tcG9uZW50X3N0
YXJ0ID0gcG9zICsgMTsKIAotICAgIGludCBsZW4gPSBjb21wb25lbnRfZW5kIC0gY29tcG9uZW50
X3N0YXJ0ICsgMTsKLSAgICBtZW1jcHkoZHN0LCBwYXRoICsgY29tcG9uZW50X3N0YXJ0LCBsZW4p
OwotICAgIGRzdFtsZW5dID0gMDsKKwlpbnQgbGVuID0gY29tcG9uZW50X2VuZCAtIGNvbXBvbmVu
dF9zdGFydCArIDE7CisJbWVtY3B5KGRzdCwgcGF0aCArIGNvbXBvbmVudF9zdGFydCwgbGVuKTsK
Kwlkc3RbbGVuXSA9IDA7CiB9CiAKIHN0YXRpYyBib29sIG51bGxfb3JfZW1wdHkoY29uc3QgY2hh
ciAqc3RyKQogewotICAgIHJldHVybiBzdHIgPT0gbnVsbHB0ciB8fCAqc3RyID09ICdcMCc7CisJ
cmV0dXJuIHN0ciA9PSBudWxscHRyIHx8ICpzdHIgPT0gJ1wwJzsKIH0KIAogVFJBQ0VQT0lOVCh0
cmFjZV92ZnNfcmVuYW1lLCAiXCIlc1wiIFwiJXNcIiIsIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFy
Kik7CkBAIC04OTcsNDMgKzg5Nyw0MyBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19yZW5hbWVfZXJy
LCAiJWQiLCBpbnQpOwogCiBpbnQgcmVuYW1lKGNvbnN0IGNoYXIgKm9sZHBhdGgsIGNvbnN0IGNo
YXIgKm5ld3BhdGgpCiB7Ci0gICAgdHJhY2VfdmZzX3JlbmFtZShvbGRwYXRoLCBuZXdwYXRoKTsK
LSAgICBzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKLSAgICBjaGFyIHNyY1tQQVRIX01BWF07
Ci0gICAgY2hhciBkZXN0W1BBVEhfTUFYXTsKLSAgICBpbnQgZXJyb3I7Ci0KLSAgICBlcnJvciA9
IEVOT0VOVDsKLSAgICBpZiAobnVsbF9vcl9lbXB0eShvbGRwYXRoKSB8fCBudWxsX29yX2VtcHR5
KG5ld3BhdGgpKQotICAgICAgICBnb3RvIG91dF9lcnJubzsKLQotICAgIGdldF9sYXN0X2NvbXBv
bmVudChvbGRwYXRoLCBzcmMpOwotICAgIGlmICghc3RyY21wKHNyYywgIi4iKSB8fCAhc3RyY21w
KHNyYywgIi4uIikpIHsKLSAgICAgICAgZXJyb3IgPSBFSU5WQUw7Ci0gICAgICAgIGdvdG8gb3V0
X2Vycm5vOwotICAgIH0KLQotICAgIGdldF9sYXN0X2NvbXBvbmVudChuZXdwYXRoLCBkZXN0KTsK
LSAgICBpZiAoIXN0cmNtcChkZXN0LCAiLiIpIHx8ICFzdHJjbXAoZGVzdCwgIi4uIikpIHsKLSAg
ICAgICAgZXJyb3IgPSBFSU5WQUw7Ci0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwotICAgIH0KLQot
ICAgIGlmICgoZXJyb3IgPSB0YXNrX2NvbnYodCwgb2xkcGF0aCwgVlJFQUQsIHNyYykpICE9IDAp
Ci0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwotCi0gICAgaWYgKChlcnJvciA9IHRhc2tfY29udih0
LCBuZXdwYXRoLCBWV1JJVEUsIGRlc3QpKSAhPSAwKQotICAgICAgICBnb3RvIG91dF9lcnJubzsK
LQotICAgIGVycm9yID0gc3lzX3JlbmFtZShzcmMsIGRlc3QpOwotICAgIGlmIChlcnJvcikKLSAg
ICAgICAgZ290byBvdXRfZXJybm87Ci0gICAgdHJhY2VfdmZzX3JlbmFtZV9yZXQoKTsKLSAgICBy
ZXR1cm4gMDsKLSAgICBvdXRfZXJybm86Ci0gICAgdHJhY2VfdmZzX3JlbmFtZV9lcnIoZXJyb3Ip
OwotICAgIGVycm5vID0gZXJyb3I7Ci0gICAgcmV0dXJuIC0xOworCXRyYWNlX3Zmc19yZW5hbWUo
b2xkcGF0aCwgbmV3cGF0aCk7CisJc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7CisJY2hhciBz
cmNbUEFUSF9NQVhdOworCWNoYXIgZGVzdFtQQVRIX01BWF07CisJaW50IGVycm9yOworCisJZXJy
b3IgPSBFTk9FTlQ7CisJaWYgKG51bGxfb3JfZW1wdHkob2xkcGF0aCkgfHwgbnVsbF9vcl9lbXB0
eShuZXdwYXRoKSkKKwkJZ290byBvdXRfZXJybm87CisKKwlnZXRfbGFzdF9jb21wb25lbnQob2xk
cGF0aCwgc3JjKTsKKwlpZiAoIXN0cmNtcChzcmMsICIuIikgfHwgIXN0cmNtcChzcmMsICIuLiIp
KSB7CisJCWVycm9yID0gRUlOVkFMOworCQlnb3RvIG91dF9lcnJubzsKKwl9CisKKwlnZXRfbGFz
dF9jb21wb25lbnQobmV3cGF0aCwgZGVzdCk7CisJaWYgKCFzdHJjbXAoZGVzdCwgIi4iKSB8fCAh
c3RyY21wKGRlc3QsICIuLiIpKSB7CisJCWVycm9yID0gRUlOVkFMOworCQlnb3RvIG91dF9lcnJu
bzsKKwl9CisKKwlpZiAoKGVycm9yID0gdGFza19jb252KHQsIG9sZHBhdGgsIFZSRUFELCBzcmMp
KSAhPSAwKQorCQlnb3RvIG91dF9lcnJubzsKKworCWlmICgoZXJyb3IgPSB0YXNrX2NvbnYodCwg
bmV3cGF0aCwgVldSSVRFLCBkZXN0KSkgIT0gMCkKKwkJZ290byBvdXRfZXJybm87CisKKwllcnJv
ciA9IHN5c19yZW5hbWUoc3JjLCBkZXN0KTsKKwlpZiAoZXJyb3IpCisJCWdvdG8gb3V0X2Vycm5v
OworCXRyYWNlX3Zmc19yZW5hbWVfcmV0KCk7CisJcmV0dXJuIDA7CisJb3V0X2Vycm5vOgorCXRy
YWNlX3Zmc19yZW5hbWVfZXJyKGVycm9yKTsKKwllcnJubyA9IGVycm9yOworCXJldHVybiAtMTsK
IH0KIAogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfY2hkaXIsICJcIiVzXCIiLCBjb25zdCBjaGFyKik7
CkBAIC05NDEsNTggKzk0MSw1OCBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19jaGRpcl9yZXQsICIi
KTsKIFRSQUNFUE9JTlQodHJhY2VfdmZzX2NoZGlyX2VyciwgIiVkIiwgaW50KTsKIAogc3RhdGlj
IGludCByZXBsYWNlX2N3ZChzdHJ1Y3QgdGFzayAqdCwgc3RydWN0IGZpbGUgKm5ld19jd2RmcCwK
LSAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpmdW5jdGlvbjxpbnQgKHZvaWQpPiBjaGRpcl9m
dW5jKQorCQkJCQkgICBzdGQ6OmZ1bmN0aW9uPGludCAodm9pZCk+IGNoZGlyX2Z1bmMpCiB7Ci0g
ICAgc3RydWN0IGZpbGUgKm9sZCA9IG51bGxwdHI7CisJc3RydWN0IGZpbGUgKm9sZCA9IG51bGxw
dHI7CiAKLSAgICBpZiAoIXQpIHsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQorCWlmICghdCkg
eworCQlyZXR1cm4gMDsKKwl9CiAKLSAgICBpZiAodC0+dF9jd2RmcCkgewotICAgICAgICBvbGQg
PSB0LT50X2N3ZGZwOwotICAgIH0KKwlpZiAodC0+dF9jd2RmcCkgeworCQlvbGQgPSB0LT50X2N3
ZGZwOworCX0KIAotICAgIC8qIERvIHRoZSBhY3R1YWwgY2hkaXIgb3BlcmF0aW9uIGhlcmUgKi8K
LSAgICBpbnQgZXJyb3IgPSBjaGRpcl9mdW5jKCk7CisJLyogRG8gdGhlIGFjdHVhbCBjaGRpciBv
cGVyYXRpb24gaGVyZSAqLworCWludCBlcnJvciA9IGNoZGlyX2Z1bmMoKTsKIAotICAgIHQtPnRf
Y3dkZnAgPSBuZXdfY3dkZnA7Ci0gICAgaWYgKG9sZCkgewotICAgICAgICBmZHJvcChvbGQpOwot
ICAgIH0KKwl0LT50X2N3ZGZwID0gbmV3X2N3ZGZwOworCWlmIChvbGQpIHsKKwkJZmRyb3Aob2xk
KTsKKwl9CiAKLSAgICByZXR1cm4gZXJyb3I7CisJcmV0dXJuIGVycm9yOwogfQogCiBpbnQgY2hk
aXIoY29uc3QgY2hhciAqcGF0aG5hbWUpCiB7Ci0gICAgdHJhY2VfdmZzX2NoZGlyKHBhdGhuYW1l
KTsKLSAgICBzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKLSAgICBjaGFyIHBhdGhbUEFUSF9N
QVhdOwotICAgIHN0cnVjdCBmaWxlICpmcDsKLSAgICBpbnQgZXJyb3I7CisJdHJhY2VfdmZzX2No
ZGlyKHBhdGhuYW1lKTsKKwlzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKKwljaGFyIHBhdGhb
UEFUSF9NQVhdOworCXN0cnVjdCBmaWxlICpmcDsKKwlpbnQgZXJyb3I7CiAKLSAgICBlcnJvciA9
IEVOT0VOVDsKLSAgICBpZiAocGF0aG5hbWUgPT0gbnVsbHB0cikKLSAgICAgICAgZ290byBvdXRf
ZXJybm87CisJZXJyb3IgPSBFTk9FTlQ7CisJaWYgKHBhdGhuYW1lID09IG51bGxwdHIpCisJCWdv
dG8gb3V0X2Vycm5vOwogCi0gICAgaWYgKChlcnJvciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwg
VlJFQUQsIHBhdGgpKSAhPSAwKQotICAgICAgICBnb3RvIG91dF9lcnJubzsKKwlpZiAoKGVycm9y
ID0gdGFza19jb252KHQsIHBhdGhuYW1lLCBWUkVBRCwgcGF0aCkpICE9IDApCisJCWdvdG8gb3V0
X2Vycm5vOwogCi0gICAgLyogQ2hlY2sgaWYgZGlyZWN0b3J5IGV4aXRzICovCi0gICAgZXJyb3Ig
PSBzeXNfb3BlbihwYXRoLCBPX0RJUkVDVE9SWSwgMCwgJmZwKTsKLSAgICBpZiAoZXJyb3IpIHsK
LSAgICAgICAgZ290byBvdXRfZXJybm87Ci0gICAgfQorCS8qIENoZWNrIGlmIGRpcmVjdG9yeSBl
eGl0cyAqLworCWVycm9yID0gc3lzX29wZW4ocGF0aCwgT19ESVJFQ1RPUlksIDAsICZmcCk7CisJ
aWYgKGVycm9yKSB7CisJCWdvdG8gb3V0X2Vycm5vOworCX0KIAotICAgIHJlcGxhY2VfY3dkKHQs
IGZwLCBbJl0oKSB7IHN0cmxjcHkodC0+dF9jd2QsIHBhdGgsIHNpemVvZih0LT50X2N3ZCkpOyBy
ZXR1cm4gMDsgfSk7CisJcmVwbGFjZV9jd2QodCwgZnAsIFsmXSgpIHsgc3RybGNweSh0LT50X2N3
ZCwgcGF0aCwgc2l6ZW9mKHQtPnRfY3dkKSk7IHJldHVybiAwOyB9KTsKIAotICAgIHRyYWNlX3Zm
c19jaGRpcl9yZXQoKTsKLSAgICByZXR1cm4gMDsKLSAgICBvdXRfZXJybm86Ci0gICAgZXJybm8g
PSBlcnJvcjsKLSAgICB0cmFjZV92ZnNfY2hkaXJfZXJyKGVycm5vKTsKLSAgICByZXR1cm4gLTE7
CisJdHJhY2VfdmZzX2NoZGlyX3JldCgpOworCXJldHVybiAwOworCW91dF9lcnJubzoKKwllcnJu
byA9IGVycm9yOworCXRyYWNlX3Zmc19jaGRpcl9lcnIoZXJybm8pOworCXJldHVybiAtMTsKIH0K
IAogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZmNoZGlyLCAiJWQiLCBpbnQpOwpAQCAtMTAwMSwyOCAr
MTAwMSwyOCBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19mY2hkaXJfZXJyLCAiJWQiLCBpbnQpOwog
CiBpbnQgZmNoZGlyKGludCBmZCkKIHsKLSAgICB0cmFjZV92ZnNfZmNoZGlyKGZkKTsKLSAgICBz
dHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKLSAgICBzdHJ1Y3QgZmlsZSAqZnA7Ci0gICAgaW50
IGVycm9yOworCXRyYWNlX3Zmc19mY2hkaXIoZmQpOworCXN0cnVjdCB0YXNrICp0ID0gbWFpbl90
YXNrOworCXN0cnVjdCBmaWxlICpmcDsKKwlpbnQgZXJyb3I7CiAKLSAgICBlcnJvciA9IGZnZXQo
ZmQsICZmcCk7Ci0gICAgaWYgKGVycm9yKQotICAgICAgICBnb3RvIG91dF9lcnJubzsKKwllcnJv
ciA9IGZnZXQoZmQsICZmcCk7CisJaWYgKGVycm9yKQorCQlnb3RvIG91dF9lcnJubzsKIAotICAg
IGVycm9yID0gcmVwbGFjZV9jd2QodCwgZnAsIFsmXSgpIHsgcmV0dXJuIHN5c19mY2hkaXIoZnAs
IHQtPnRfY3dkKTsgfSk7Ci0gICAgaWYgKGVycm9yKSB7Ci0gICAgICAgIGZkcm9wKGZwKTsKLSAg
ICAgICAgZ290byBvdXRfZXJybm87Ci0gICAgfQorCWVycm9yID0gcmVwbGFjZV9jd2QodCwgZnAs
IFsmXSgpIHsgcmV0dXJuIHN5c19mY2hkaXIoZnAsIHQtPnRfY3dkKTsgfSk7CisJaWYgKGVycm9y
KSB7CisJCWZkcm9wKGZwKTsKKwkJZ290byBvdXRfZXJybm87CisJfQogCi0gICAgdHJhY2VfdmZz
X2ZjaGRpcl9yZXQoKTsKLSAgICByZXR1cm4gMDsKKwl0cmFjZV92ZnNfZmNoZGlyX3JldCgpOwor
CXJldHVybiAwOwogCi0gICAgb3V0X2Vycm5vOgotICAgIHRyYWNlX3Zmc19mY2hkaXJfZXJyKGVy
cm9yKTsKLSAgICBlcnJubyA9IGVycm9yOwotICAgIHJldHVybiAtMTsKKwlvdXRfZXJybm86CisJ
dHJhY2VfdmZzX2ZjaGRpcl9lcnIoZXJyb3IpOworCWVycm5vID0gZXJyb3I7CisJcmV0dXJuIC0x
OwogfQogCiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19saW5rLCAiXCIlc1wiIFwiJXNcIiIsIGNvbnN0
IGNoYXIqLCBjb25zdCBjaGFyKik7CkBAIC0xMDMxLDMwICsxMDMxLDMwIEBAIFRSQUNFUE9JTlQo
dHJhY2VfdmZzX2xpbmtfZXJyLCAiJWQiLCBpbnQpOwogCiBpbnQgbGluayhjb25zdCBjaGFyICpv
bGRwYXRoLCBjb25zdCBjaGFyICpuZXdwYXRoKQogewotICAgIHN0cnVjdCB0YXNrICp0ID0gbWFp
bl90YXNrOwotICAgIGNoYXIgcGF0aDFbUEFUSF9NQVhdOwotICAgIGNoYXIgcGF0aDJbUEFUSF9N
QVhdOwotICAgIGludCBlcnJvcjsKKwlzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKKwljaGFy
IHBhdGgxW1BBVEhfTUFYXTsKKwljaGFyIHBhdGgyW1BBVEhfTUFYXTsKKwlpbnQgZXJyb3I7CiAK
LSAgICB0cmFjZV92ZnNfbGluayhvbGRwYXRoLCBuZXdwYXRoKTsKKwl0cmFjZV92ZnNfbGluayhv
bGRwYXRoLCBuZXdwYXRoKTsKIAotICAgIGVycm9yID0gRU5PRU5UOwotICAgIGlmIChvbGRwYXRo
ID09IG51bGxwdHIgfHwgbmV3cGF0aCA9PSBudWxscHRyKQotICAgICAgICBnb3RvIG91dF9lcnJu
bzsKLSAgICBpZiAoKGVycm9yID0gdGFza19jb252KHQsIG9sZHBhdGgsIFZXUklURSwgcGF0aDEp
KSAhPSAwKQotICAgICAgICBnb3RvIG91dF9lcnJubzsKLSAgICBpZiAoKGVycm9yID0gdGFza19j
b252KHQsIG5ld3BhdGgsIFZXUklURSwgcGF0aDIpKSAhPSAwKQotICAgICAgICBnb3RvIG91dF9l
cnJubzsKKwllcnJvciA9IEVOT0VOVDsKKwlpZiAob2xkcGF0aCA9PSBudWxscHRyIHx8IG5ld3Bh
dGggPT0gbnVsbHB0cikKKwkJZ290byBvdXRfZXJybm87CisJaWYgKChlcnJvciA9IHRhc2tfY29u
dih0LCBvbGRwYXRoLCBWV1JJVEUsIHBhdGgxKSkgIT0gMCkKKwkJZ290byBvdXRfZXJybm87CisJ
aWYgKChlcnJvciA9IHRhc2tfY29udih0LCBuZXdwYXRoLCBWV1JJVEUsIHBhdGgyKSkgIT0gMCkK
KwkJZ290byBvdXRfZXJybm87CiAKLSAgICBlcnJvciA9IHN5c19saW5rKHBhdGgxLCBwYXRoMik7
Ci0gICAgaWYgKGVycm9yKQotICAgICAgICBnb3RvIG91dF9lcnJubzsKLSAgICB0cmFjZV92ZnNf
bGlua19yZXQoKTsKLSAgICByZXR1cm4gMDsKLSAgICBvdXRfZXJybm86Ci0gICAgdHJhY2VfdmZz
X2xpbmtfZXJyKGVycm9yKTsKLSAgICBlcnJubyA9IGVycm9yOwotICAgIHJldHVybiAtMTsKKwll
cnJvciA9IHN5c19saW5rKHBhdGgxLCBwYXRoMik7CisJaWYgKGVycm9yKQorCQlnb3RvIG91dF9l
cnJubzsKKwl0cmFjZV92ZnNfbGlua19yZXQoKTsKKwlyZXR1cm4gMDsKKwlvdXRfZXJybm86CisJ
dHJhY2VfdmZzX2xpbmtfZXJyKGVycm9yKTsKKwllcnJubyA9IGVycm9yOworCXJldHVybiAtMTsK
IH0KIAogCkBAIC0xMDY0LDI2ICsxMDY0LDI2IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX3N5bWxp
bmtfZXJyLCAiZXJybm89JWQiLCBpbnQpOwogCiBpbnQgc3ltbGluayhjb25zdCBjaGFyICpvbGRw
YXRoLCBjb25zdCBjaGFyICpuZXdwYXRoKQogewotICAgIGludCBlcnJvcjsKKwlpbnQgZXJyb3I7
CiAKLSAgICB0cmFjZV92ZnNfc3ltbGluayhvbGRwYXRoLCBuZXdwYXRoKTsKKwl0cmFjZV92ZnNf
c3ltbGluayhvbGRwYXRoLCBuZXdwYXRoKTsKIAotICAgIGVycm9yID0gRU5PRU5UOwotICAgIGlm
IChvbGRwYXRoID09IG51bGxwdHIgfHwgbmV3cGF0aCA9PSBudWxscHRyKSB7Ci0gICAgICAgIGVy
cm5vID0gRU5PRU5UOwotICAgICAgICB0cmFjZV92ZnNfc3ltbGlua19lcnIoZXJyb3IpOwotICAg
ICAgICByZXR1cm4gKC0xKTsKLSAgICB9CisJZXJyb3IgPSBFTk9FTlQ7CisJaWYgKG9sZHBhdGgg
PT0gbnVsbHB0ciB8fCBuZXdwYXRoID09IG51bGxwdHIpIHsKKwkJZXJybm8gPSBFTk9FTlQ7CisJ
CXRyYWNlX3Zmc19zeW1saW5rX2VycihlcnJvcik7CisJCXJldHVybiAoLTEpOworCX0KIAotICAg
IGVycm9yID0gc3lzX3N5bWxpbmsob2xkcGF0aCwgbmV3cGF0aCk7Ci0gICAgaWYgKGVycm9yKSB7
Ci0gICAgICAgIGVycm5vID0gZXJyb3I7Ci0gICAgICAgIHRyYWNlX3Zmc19zeW1saW5rX2Vycihl
cnJvcik7Ci0gICAgICAgIHJldHVybiAoLTEpOwotICAgIH0KKwllcnJvciA9IHN5c19zeW1saW5r
KG9sZHBhdGgsIG5ld3BhdGgpOworCWlmIChlcnJvcikgeworCQllcnJubyA9IGVycm9yOworCQl0
cmFjZV92ZnNfc3ltbGlua19lcnIoZXJyb3IpOworCQlyZXR1cm4gKC0xKTsKKwl9CiAKLSAgICB0
cmFjZV92ZnNfc3ltbGlua19yZXQoKTsKLSAgICByZXR1cm4gMDsKKwl0cmFjZV92ZnNfc3ltbGlu
a19yZXQoKTsKKwlyZXR1cm4gMDsKIH0KIAogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfdW5saW5rLCAi
XCIlc1wiIiwgY29uc3QgY2hhciopOwpAQCAtMTA5MiwyNiArMTA5MiwyNiBAQCBUUkFDRVBPSU5U
KHRyYWNlX3Zmc191bmxpbmtfZXJyLCAiJWQiLCBpbnQpOwogCiBpbnQgdW5saW5rKGNvbnN0IGNo
YXIgKnBhdGhuYW1lKQogewotICAgIHRyYWNlX3Zmc191bmxpbmsocGF0aG5hbWUpOwotICAgIHN0
cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOwotICAgIGNoYXIgcGF0aFtQQVRIX01BWF07Ci0gICAg
aW50IGVycm9yOworCXRyYWNlX3Zmc191bmxpbmsocGF0aG5hbWUpOworCXN0cnVjdCB0YXNrICp0
ID0gbWFpbl90YXNrOworCWNoYXIgcGF0aFtQQVRIX01BWF07CisJaW50IGVycm9yOwogCi0gICAg
ZXJyb3IgPSBFTk9FTlQ7Ci0gICAgaWYgKHBhdGhuYW1lID09IG51bGxwdHIpCi0gICAgICAgIGdv
dG8gb3V0X2Vycm5vOwotICAgIGlmICgoZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5hbWUsIFZX
UklURSwgcGF0aCkpICE9IDApCi0gICAgICAgIGdvdG8gb3V0X2Vycm5vOworCWVycm9yID0gRU5P
RU5UOworCWlmIChwYXRobmFtZSA9PSBudWxscHRyKQorCQlnb3RvIG91dF9lcnJubzsKKwlpZiAo
KGVycm9yID0gdGFza19jb252KHQsIHBhdGhuYW1lLCBWV1JJVEUsIHBhdGgpKSAhPSAwKQorCQln
b3RvIG91dF9lcnJubzsKIAotICAgIGVycm9yID0gc3lzX3VubGluayhwYXRoKTsKLSAgICBpZiAo
ZXJyb3IpCi0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwotICAgIHRyYWNlX3Zmc191bmxpbmtfcmV0
KCk7Ci0gICAgcmV0dXJuIDA7Ci0gICAgb3V0X2Vycm5vOgotICAgIHRyYWNlX3Zmc191bmxpbmtf
ZXJyKGVycm9yKTsKLSAgICBlcnJubyA9IGVycm9yOwotICAgIHJldHVybiAtMTsKKwllcnJvciA9
IHN5c191bmxpbmsocGF0aCk7CisJaWYgKGVycm9yKQorCQlnb3RvIG91dF9lcnJubzsKKwl0cmFj
ZV92ZnNfdW5saW5rX3JldCgpOworCXJldHVybiAwOworCW91dF9lcnJubzoKKwl0cmFjZV92ZnNf
dW5saW5rX2VycihlcnJvcik7CisJZXJybm8gPSBlcnJvcjsKKwlyZXR1cm4gLTE7CiB9CiAKIFRS
QUNFUE9JTlQodHJhY2VfdmZzX3N0YXQsICJcIiVzXCIgJXAiLCBjb25zdCBjaGFyKiwgc3RydWN0
IHN0YXQqKTsKQEAgLTExMjEsMzMgKzExMjEsMzMgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfc3Rh
dF9lcnIsICIlZCIsIGludCk7CiBleHRlcm4gIkMiCiBpbnQgX194c3RhdChpbnQgdmVyLCBjb25z
dCBjaGFyICpwYXRobmFtZSwgc3RydWN0IHN0YXQgKnN0KQogewotICAgIHN0cnVjdCB0YXNrICp0
ID0gbWFpbl90YXNrOwotICAgIGNoYXIgcGF0aFtQQVRIX01BWF07Ci0gICAgaW50IGVycm9yOwor
CXN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOworCWNoYXIgcGF0aFtQQVRIX01BWF07CisJaW50
IGVycm9yOwogCi0gICAgdHJhY2VfdmZzX3N0YXQocGF0aG5hbWUsIHN0KTsKKwl0cmFjZV92ZnNf
c3RhdChwYXRobmFtZSwgc3QpOwogCi0gICAgZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5hbWUs
IDAsIHBhdGgpOwotICAgIGlmIChlcnJvcikKLSAgICAgICAgZ290byBvdXRfZXJybm87CisJZXJy
b3IgPSB0YXNrX2NvbnYodCwgcGF0aG5hbWUsIDAsIHBhdGgpOworCWlmIChlcnJvcikKKwkJZ290
byBvdXRfZXJybm87CiAKLSAgICBlcnJvciA9IHN5c19zdGF0KHBhdGgsIHN0KTsKLSAgICBpZiAo
ZXJyb3IpCi0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwotICAgIHRyYWNlX3Zmc19zdGF0X3JldCgp
OwotICAgIHJldHVybiAwOworCWVycm9yID0gc3lzX3N0YXQocGF0aCwgc3QpOworCWlmIChlcnJv
cikKKwkJZ290byBvdXRfZXJybm87CisJdHJhY2VfdmZzX3N0YXRfcmV0KCk7CisJcmV0dXJuIDA7
CiAKLSAgICBvdXRfZXJybm86Ci0gICAgdHJhY2VfdmZzX3N0YXRfZXJyKGVycm9yKTsKLSAgICBl
cnJubyA9IGVycm9yOwotICAgIHJldHVybiAtMTsKKwlvdXRfZXJybm86CisJdHJhY2VfdmZzX3N0
YXRfZXJyKGVycm9yKTsKKwllcnJubyA9IGVycm9yOworCXJldHVybiAtMTsKIH0KIAogTEZTNjQo
X194c3RhdCk7CiAKIGludCBzdGF0KGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBzdHJ1Y3Qgc3RhdCAq
c3QpCiB7Ci0gICAgcmV0dXJuIF9feHN0YXQoMSwgcGF0aG5hbWUsIHN0KTsKKwlyZXR1cm4gX194
c3RhdCgxLCBwYXRobmFtZSwgc3QpOwogfQogCiBMRlM2NChzdGF0KTsKQEAgLTExNTgsMzUgKzEx
NTgsMzUgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbHN0YXRfZXJyLCAiZXJybm89JWQiLCBpbnQp
OwogZXh0ZXJuICJDIgogaW50IF9fbHhzdGF0KGludCB2ZXIsIGNvbnN0IGNoYXIgKnBhdGhuYW1l
LCBzdHJ1Y3Qgc3RhdCAqc3QpCiB7Ci0gICAgc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7Ci0g
ICAgY2hhciBwYXRoW1BBVEhfTUFYXTsKLSAgICBpbnQgZXJyb3I7CisJc3RydWN0IHRhc2sgKnQg
PSBtYWluX3Rhc2s7CisJY2hhciBwYXRoW1BBVEhfTUFYXTsKKwlpbnQgZXJyb3I7CiAKLSAgICB0
cmFjZV92ZnNfbHN0YXQocGF0aG5hbWUsIHN0KTsKKwl0cmFjZV92ZnNfbHN0YXQocGF0aG5hbWUs
IHN0KTsKIAotICAgIGVycm9yID0gdGFza19jb252KHQsIHBhdGhuYW1lLCAwLCBwYXRoKTsKLSAg
ICBpZiAoZXJyb3IpIHsKLSAgICAgICAgZXJybm8gPSBlcnJvcjsKLSAgICAgICAgdHJhY2VfdmZz
X2xzdGF0X2VycihlcnJvcik7Ci0gICAgICAgIHJldHVybiAoLTEpOwotICAgIH0KKwllcnJvciA9
IHRhc2tfY29udih0LCBwYXRobmFtZSwgMCwgcGF0aCk7CisJaWYgKGVycm9yKSB7CisJCWVycm5v
ID0gZXJyb3I7CisJCXRyYWNlX3Zmc19sc3RhdF9lcnIoZXJyb3IpOworCQlyZXR1cm4gKC0xKTsK
Kwl9CiAKLSAgICBlcnJvciA9IHN5c19sc3RhdChwYXRoLCBzdCk7Ci0gICAgaWYgKGVycm9yKSB7
Ci0gICAgICAgIGVycm5vID0gZXJyb3I7Ci0gICAgICAgIHRyYWNlX3Zmc19sc3RhdF9lcnIoZXJy
b3IpOwotICAgICAgICByZXR1cm4gKC0xKTsKLSAgICB9CisJZXJyb3IgPSBzeXNfbHN0YXQocGF0
aCwgc3QpOworCWlmIChlcnJvcikgeworCQllcnJubyA9IGVycm9yOworCQl0cmFjZV92ZnNfbHN0
YXRfZXJyKGVycm9yKTsKKwkJcmV0dXJuICgtMSk7CisJfQogCi0gICAgdHJhY2VfdmZzX2xzdGF0
X3JldCgpOwotICAgIHJldHVybiAwOworCXRyYWNlX3Zmc19sc3RhdF9yZXQoKTsKKwlyZXR1cm4g
MDsKIH0KIAogTEZTNjQoX19seHN0YXQpOwogCiBpbnQgbHN0YXQoY29uc3QgY2hhciAqcGF0aG5h
bWUsIHN0cnVjdCBzdGF0ICpzdCkKIHsKLSAgICByZXR1cm4gX19seHN0YXQoMSwgcGF0aG5hbWUs
IHN0KTsKKwlyZXR1cm4gX19seHN0YXQoMSwgcGF0aG5hbWUsIHN0KTsKIH0KIAogTEZTNjQobHN0
YXQpOwpAQCAtMTE5OCwyNCArMTE5OCwyNCBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19zdGF0ZnNf
ZXJyLCAiJWQiLCBpbnQpOwogZXh0ZXJuICJDIgogaW50IF9fc3RhdGZzKGNvbnN0IGNoYXIgKnBh
dGhuYW1lLCBzdHJ1Y3Qgc3RhdGZzICpidWYpCiB7Ci0gICAgdHJhY2VfdmZzX3N0YXRmcyhwYXRo
bmFtZSwgYnVmKTsKLSAgICBzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKLSAgICBjaGFyIHBh
dGhbUEFUSF9NQVhdOwotICAgIGludCBlcnJvcjsKLQotICAgIGVycm9yID0gdGFza19jb252KHQs
IHBhdGhuYW1lLCAwLCBwYXRoKTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIGdvdG8gb3V0X2Vy
cm5vOwotCi0gICAgZXJyb3IgPSBzeXNfc3RhdGZzKHBhdGgsIGJ1Zik7Ci0gICAgaWYgKGVycm9y
KQotICAgICAgICBnb3RvIG91dF9lcnJubzsKLSAgICB0cmFjZV92ZnNfc3RhdGZzX3JldCgpOwot
ICAgIHJldHVybiAwOwotICAgIG91dF9lcnJubzoKLSAgICB0cmFjZV92ZnNfc3RhdGZzX2Vycihl
cnJvcik7Ci0gICAgZXJybm8gPSBlcnJvcjsKLSAgICByZXR1cm4gLTE7CisJdHJhY2VfdmZzX3N0
YXRmcyhwYXRobmFtZSwgYnVmKTsKKwlzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKKwljaGFy
IHBhdGhbUEFUSF9NQVhdOworCWludCBlcnJvcjsKKworCWVycm9yID0gdGFza19jb252KHQsIHBh
dGhuYW1lLCAwLCBwYXRoKTsKKwlpZiAoZXJyb3IpCisJCWdvdG8gb3V0X2Vycm5vOworCisJZXJy
b3IgPSBzeXNfc3RhdGZzKHBhdGgsIGJ1Zik7CisJaWYgKGVycm9yKQorCQlnb3RvIG91dF9lcnJu
bzsKKwl0cmFjZV92ZnNfc3RhdGZzX3JldCgpOworCXJldHVybiAwOworCW91dF9lcnJubzoKKwl0
cmFjZV92ZnNfc3RhdGZzX2VycihlcnJvcik7CisJZXJybm8gPSBlcnJvcjsKKwlyZXR1cm4gLTE7
CiB9CiB3ZWFrX2FsaWFzKF9fc3RhdGZzLCBzdGF0ZnMpOwogCkBAIC0xMjI4LDI2ICsxMjI4LDI2
IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2ZzdGF0ZnNfZXJyLCAiJWQiLCBpbnQpOwogZXh0ZXJu
ICJDIgogaW50IF9fZnN0YXRmcyhpbnQgZmQsIHN0cnVjdCBzdGF0ZnMgKmJ1ZikKIHsKLSAgICBz
dHJ1Y3QgZmlsZSAqZnA7Ci0gICAgaW50IGVycm9yOworCXN0cnVjdCBmaWxlICpmcDsKKwlpbnQg
ZXJyb3I7CiAKLSAgICB0cmFjZV92ZnNfZnN0YXRmcyhmZCwgYnVmKTsKLSAgICBlcnJvciA9IGZn
ZXQoZmQsICZmcCk7Ci0gICAgaWYgKGVycm9yKQotICAgICAgICBnb3RvIG91dF9lcnJubzsKKwl0
cmFjZV92ZnNfZnN0YXRmcyhmZCwgYnVmKTsKKwllcnJvciA9IGZnZXQoZmQsICZmcCk7CisJaWYg
KGVycm9yKQorCQlnb3RvIG91dF9lcnJubzsKIAotICAgIGVycm9yID0gc3lzX2ZzdGF0ZnMoZnAs
IGJ1Zik7Ci0gICAgZmRyb3AoZnApOworCWVycm9yID0gc3lzX2ZzdGF0ZnMoZnAsIGJ1Zik7CisJ
ZmRyb3AoZnApOwogCi0gICAgaWYgKGVycm9yKQotICAgICAgICBnb3RvIG91dF9lcnJubzsKLSAg
ICB0cmFjZV92ZnNfZnN0YXRmc19yZXQoKTsKLSAgICByZXR1cm4gMDsKKwlpZiAoZXJyb3IpCisJ
CWdvdG8gb3V0X2Vycm5vOworCXRyYWNlX3Zmc19mc3RhdGZzX3JldCgpOworCXJldHVybiAwOwog
Ci0gICAgb3V0X2Vycm5vOgotICAgIHRyYWNlX3Zmc19mc3RhdGZzX2VycihlcnJvcik7Ci0gICAg
ZXJybm8gPSBlcnJvcjsKLSAgICByZXR1cm4gLTE7CisJb3V0X2Vycm5vOgorCXRyYWNlX3Zmc19m
c3RhdGZzX2VycihlcnJvcik7CisJZXJybm8gPSBlcnJvcjsKKwlyZXR1cm4gLTE7CiB9CiB3ZWFr
X2FsaWFzKF9fZnN0YXRmcywgZnN0YXRmcyk7CiAKQEAgLTEyNTYsMjggKzEyNTYsMjggQEAgTEZT
NjQoZnN0YXRmcyk7CiBzdGF0aWMgaW50CiBzdGF0ZnNfdG9fc3RhdHZmcyhzdHJ1Y3Qgc3RhdHZm
cyAqZHN0LCBzdHJ1Y3Qgc3RhdGZzICpzcmMpCiB7Ci0gICAgZHN0LT5mX2JzaXplID0gc3JjLT5m
X2JzaXplOwotICAgIGRzdC0+Zl9mcnNpemUgPSBzcmMtPmZfYnNpemU7Ci0gICAgZHN0LT5mX2Js
b2NrcyA9IHNyYy0+Zl9ibG9ja3M7Ci0gICAgZHN0LT5mX2JmcmVlID0gc3JjLT5mX2JmcmVlOwot
ICAgIGRzdC0+Zl9iYXZhaWwgPSBzcmMtPmZfYmF2YWlsOwotICAgIGRzdC0+Zl9maWxlcyA9IHNy
Yy0+Zl9maWxlczsKLSAgICBkc3QtPmZfZmZyZWUgPSBzcmMtPmZfZmZyZWU7Ci0gICAgZHN0LT5m
X2ZhdmFpbCA9IDA7Ci0gICAgZHN0LT5mX2ZzaWQgPSBzcmMtPmZfZnNpZC5fX3ZhbFswXTsKLSAg
ICBkc3QtPmZfZmxhZyA9IHNyYy0+Zl9mbGFnczsKLSAgICBkc3QtPmZfbmFtZW1heCA9IHNyYy0+
Zl9uYW1lbGVuOwotICAgIHJldHVybiAwOworCWRzdC0+Zl9ic2l6ZSA9IHNyYy0+Zl9ic2l6ZTsK
Kwlkc3QtPmZfZnJzaXplID0gc3JjLT5mX2JzaXplOworCWRzdC0+Zl9ibG9ja3MgPSBzcmMtPmZf
YmxvY2tzOworCWRzdC0+Zl9iZnJlZSA9IHNyYy0+Zl9iZnJlZTsKKwlkc3QtPmZfYmF2YWlsID0g
c3JjLT5mX2JhdmFpbDsKKwlkc3QtPmZfZmlsZXMgPSBzcmMtPmZfZmlsZXM7CisJZHN0LT5mX2Zm
cmVlID0gc3JjLT5mX2ZmcmVlOworCWRzdC0+Zl9mYXZhaWwgPSAwOworCWRzdC0+Zl9mc2lkID0g
c3JjLT5mX2ZzaWQuX192YWxbMF07CisJZHN0LT5mX2ZsYWcgPSBzcmMtPmZfZmxhZ3M7CisJZHN0
LT5mX25hbWVtYXggPSBzcmMtPmZfbmFtZWxlbjsKKwlyZXR1cm4gMDsKIH0KIAogaW50CiBzdGF0
dmZzKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBzdHJ1Y3Qgc3RhdHZmcyAqYnVmKQogewotICAgIHN0
cnVjdCBzdGF0ZnMgc3Q7CisJc3RydWN0IHN0YXRmcyBzdDsKIAotICAgIGlmIChfX3N0YXRmcyhw
YXRobmFtZSwgJnN0KSA8IDApCi0gICAgICAgIHJldHVybiAtMTsKLSAgICByZXR1cm4gc3RhdGZz
X3RvX3N0YXR2ZnMoYnVmLCAmc3QpOworCWlmIChfX3N0YXRmcyhwYXRobmFtZSwgJnN0KSA8IDAp
CisJCXJldHVybiAtMTsKKwlyZXR1cm4gc3RhdGZzX3RvX3N0YXR2ZnMoYnVmLCAmc3QpOwogfQog
CiBMRlM2NChzdGF0dmZzKTsKQEAgLTEyODUsMTEgKzEyODUsMTEgQEAgTEZTNjQoc3RhdHZmcyk7
CiBpbnQKIGZzdGF0dmZzKGludCBmZCwgc3RydWN0IHN0YXR2ZnMgKmJ1ZikKIHsKLSAgICBzdHJ1
Y3Qgc3RhdGZzIHN0OworCXN0cnVjdCBzdGF0ZnMgc3Q7CiAKLSAgICBpZiAoX19mc3RhdGZzKGZk
LCAmc3QpIDwgMCkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIHJldHVybiBzdGF0ZnNfdG9fc3Rh
dHZmcyhidWYsICZzdCk7CisJaWYgKF9fZnN0YXRmcyhmZCwgJnN0KSA8IDApCisJCXJldHVybiAt
MTsKKwlyZXR1cm4gc3RhdGZzX3RvX3N0YXR2ZnMoYnVmLCAmc3QpOwogfQogCiBMRlM2NChmc3Rh
dHZmcyk7CkBAIC0xMzAxLDM5ICsxMzAxLDM5IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2dldGN3
ZF9lcnIsICIlZCIsIGludCk7CiAKIGNoYXIgKmdldGN3ZChjaGFyICpwYXRoLCBzaXplX3Qgc2l6
ZSkKIHsKLSAgICB0cmFjZV92ZnNfZ2V0Y3dkKHBhdGgsIHNpemUpOwotICAgIHN0cnVjdCB0YXNr
ICp0ID0gbWFpbl90YXNrOwotICAgIGludCBsZW4gPSBzdHJsZW4odC0+dF9jd2QpICsgMTsKLSAg
ICBpbnQgZXJyb3I7Ci0KLSAgICBpZiAoIXBhdGgpIHsKLSAgICAgICAgaWYgKCFzaXplKQotICAg
ICAgICAgICAgc2l6ZSA9IGxlbjsKLSAgICAgICAgcGF0aCA9IChjaGFyKiltYWxsb2Moc2l6ZSk7
Ci0gICAgICAgIGlmICghcGF0aCkgewotICAgICAgICAgICAgZXJyb3IgPSBFTk9NRU07Ci0gICAg
ICAgICAgICBnb3RvIG91dF9lcnJubzsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAg
IGlmICghc2l6ZSkgewotICAgICAgICAgICAgZXJyb3IgPSBFSU5WQUw7Ci0gICAgICAgICAgICBn
b3RvIG91dF9lcnJubzsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChzaXplIDwgbGVuKSB7
Ci0gICAgICAgIGVycm9yID0gRVJBTkdFOwotICAgICAgICBnb3RvIG91dF9lcnJubzsKLSAgICB9
Ci0KLSAgICBtZW1jcHkocGF0aCwgdC0+dF9jd2QsIGxlbik7Ci0gICAgdHJhY2VfdmZzX2dldGN3
ZF9yZXQocGF0aCk7Ci0gICAgcmV0dXJuIHBhdGg7Ci0KLSAgICBvdXRfZXJybm86Ci0gICAgdHJh
Y2VfdmZzX2dldGN3ZF9lcnIoZXJyb3IpOwotICAgIGVycm5vID0gZXJyb3I7Ci0gICAgcmV0dXJu
IG51bGxwdHI7CisJdHJhY2VfdmZzX2dldGN3ZChwYXRoLCBzaXplKTsKKwlzdHJ1Y3QgdGFzayAq
dCA9IG1haW5fdGFzazsKKwlpbnQgbGVuID0gc3RybGVuKHQtPnRfY3dkKSArIDE7CisJaW50IGVy
cm9yOworCisJaWYgKCFwYXRoKSB7CisJCWlmICghc2l6ZSkKKwkJCXNpemUgPSBsZW47CisJCXBh
dGggPSAoY2hhciopbWFsbG9jKHNpemUpOworCQlpZiAoIXBhdGgpIHsKKwkJCWVycm9yID0gRU5P
TUVNOworCQkJZ290byBvdXRfZXJybm87CisJCX0KKwl9IGVsc2UgeworCQlpZiAoIXNpemUpIHsK
KwkJCWVycm9yID0gRUlOVkFMOworCQkJZ290byBvdXRfZXJybm87CisJCX0KKwl9CisKKwlpZiAo
c2l6ZSA8IGxlbikgeworCQllcnJvciA9IEVSQU5HRTsKKwkJZ290byBvdXRfZXJybm87CisJfQor
CisJbWVtY3B5KHBhdGgsIHQtPnRfY3dkLCBsZW4pOworCXRyYWNlX3Zmc19nZXRjd2RfcmV0KHBh
dGgpOworCXJldHVybiBwYXRoOworCisJb3V0X2Vycm5vOgorCXRyYWNlX3Zmc19nZXRjd2RfZXJy
KGVycm9yKTsKKwllcnJubyA9IGVycm9yOworCXJldHVybiBudWxscHRyOwogfQogCiBUUkFDRVBP
SU5UKHRyYWNlX3Zmc19kdXAsICIlZCIsIGludCk7CkBAIC0xMzQ0LDI5ICsxMzQ0LDI5IEBAIFRS
QUNFUE9JTlQodHJhY2VfdmZzX2R1cF9lcnIsICIlZCIsIGludCk7CiAgKi8KIGludCBkdXAoaW50
IG9sZGZkKQogewotICAgIHN0cnVjdCBmaWxlICpmcDsKLSAgICBpbnQgbmV3ZmQ7Ci0gICAgaW50
IGVycm9yOworCXN0cnVjdCBmaWxlICpmcDsKKwlpbnQgbmV3ZmQ7CisJaW50IGVycm9yOwogCi0g
ICAgdHJhY2VfdmZzX2R1cChvbGRmZCk7Ci0gICAgZXJyb3IgPSBmZ2V0KG9sZGZkLCAmZnApOwot
ICAgIGlmIChlcnJvcikKLSAgICAgICAgZ290byBvdXRfZXJybm87CisJdHJhY2VfdmZzX2R1cChv
bGRmZCk7CisJZXJyb3IgPSBmZ2V0KG9sZGZkLCAmZnApOworCWlmIChlcnJvcikKKwkJZ290byBv
dXRfZXJybm87CiAKLSAgICBlcnJvciA9IGZkYWxsb2MoZnAsICZuZXdmZCk7Ci0gICAgaWYgKGVy
cm9yKQotICAgICAgICBnb3RvIG91dF9mZHJvcDsKKwllcnJvciA9IGZkYWxsb2MoZnAsICZuZXdm
ZCk7CisJaWYgKGVycm9yKQorCQlnb3RvIG91dF9mZHJvcDsKIAotICAgIGZkcm9wKGZwKTsKLSAg
ICB0cmFjZV92ZnNfZHVwX3JldChuZXdmZCk7Ci0gICAgcmV0dXJuIG5ld2ZkOworCWZkcm9wKGZw
KTsKKwl0cmFjZV92ZnNfZHVwX3JldChuZXdmZCk7CisJcmV0dXJuIG5ld2ZkOwogCi0gICAgb3V0
X2Zkcm9wOgotICAgIGZkcm9wKGZwKTsKLSAgICBvdXRfZXJybm86Ci0gICAgdHJhY2VfdmZzX2R1
cF9lcnIoZXJyb3IpOwotICAgIGVycm5vID0gZXJyb3I7Ci0gICAgcmV0dXJuIC0xOworCW91dF9m
ZHJvcDoKKwlmZHJvcChmcCk7CisJb3V0X2Vycm5vOgorCXRyYWNlX3Zmc19kdXBfZXJyKGVycm9y
KTsKKwllcnJubyA9IGVycm9yOworCXJldHVybiAtMTsKIH0KIAogVFJBQ0VQT0lOVCh0cmFjZV92
ZnNfZHVwMywgIiVkICVkIDB4JXgiLCBpbnQsIGludCwgaW50KTsKQEAgLTEzNzcsNTAgKzEzNzcs
NTAgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZHVwM19lcnIsICIlZCIsIGludCk7CiAgKi8KIGlu
dCBkdXAzKGludCBvbGRmZCwgaW50IG5ld2ZkLCBpbnQgZmxhZ3MpCiB7Ci0gICAgc3RydWN0IGZp
bGUgKmZwOwotICAgIGludCBlcnJvcjsKLQotICAgIHRyYWNlX3Zmc19kdXAzKG9sZGZkLCBuZXdm
ZCwgZmxhZ3MpOwotICAgIC8qCi0gICAgICogRG9uJ3QgYWxsb3cgYW55IGFyZ3VtZW50IGJ1dCBP
X0NMT0VYRUMuICBCdXQgd2UgZXZlbiBpZ25vcmUKLSAgICAgKiB0aGF0IGFzIHdlIGRvbid0IHN1
cHBvcnQgZXhlYygpIGFuZCB0aHVzIGRvbid0IGNhcmUuCi0gICAgICovCi0gICAgaWYgKChmbGFn
cyAmIH5PX0NMT0VYRUMpICE9IDApIHsKLSAgICAgICAgZXJyb3IgPSBFSU5WQUw7Ci0gICAgICAg
IGdvdG8gb3V0X2Vycm5vOwotICAgIH0KKwlzdHJ1Y3QgZmlsZSAqZnA7CisJaW50IGVycm9yOwor
CisJdHJhY2VfdmZzX2R1cDMob2xkZmQsIG5ld2ZkLCBmbGFncyk7CisJLyoKKwkgKiBEb24ndCBh
bGxvdyBhbnkgYXJndW1lbnQgYnV0IE9fQ0xPRVhFQy4gIEJ1dCB3ZSBldmVuIGlnbm9yZQorCSAq
IHRoYXQgYXMgd2UgZG9uJ3Qgc3VwcG9ydCBleGVjKCkgYW5kIHRodXMgZG9uJ3QgY2FyZS4KKwkg
Ki8KKwlpZiAoKGZsYWdzICYgfk9fQ0xPRVhFQykgIT0gMCkgeworCQllcnJvciA9IEVJTlZBTDsK
KwkJZ290byBvdXRfZXJybm87CisJfQogCi0gICAgaWYgKG9sZGZkID09IG5ld2ZkKSB7Ci0gICAg
ICAgIGVycm9yID0gRUlOVkFMOwotICAgICAgICBnb3RvIG91dF9lcnJubzsKLSAgICB9CisJaWYg
KG9sZGZkID09IG5ld2ZkKSB7CisJCWVycm9yID0gRUlOVkFMOworCQlnb3RvIG91dF9lcnJubzsK
Kwl9CiAKLSAgICBlcnJvciA9IGZnZXQob2xkZmQsICZmcCk7Ci0gICAgaWYgKGVycm9yKQotICAg
ICAgICBnb3RvIG91dF9lcnJubzsKKwllcnJvciA9IGZnZXQob2xkZmQsICZmcCk7CisJaWYgKGVy
cm9yKQorCQlnb3RvIG91dF9lcnJubzsKIAotICAgIGVycm9yID0gZmRzZXQobmV3ZmQsIGZwKTsK
LSAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgZmRyb3AoZnApOwotICAgICAgICBnb3RvIG91dF9l
cnJubzsKLSAgICB9CisJZXJyb3IgPSBmZHNldChuZXdmZCwgZnApOworCWlmIChlcnJvcikgewor
CQlmZHJvcChmcCk7CisJCWdvdG8gb3V0X2Vycm5vOworCX0KIAotICAgIGZkcm9wKGZwKTsKLSAg
ICB0cmFjZV92ZnNfZHVwM19yZXQobmV3ZmQpOwotICAgIHJldHVybiBuZXdmZDsKKwlmZHJvcChm
cCk7CisJdHJhY2VfdmZzX2R1cDNfcmV0KG5ld2ZkKTsKKwlyZXR1cm4gbmV3ZmQ7CiAKLSAgICBv
dXRfZXJybm86Ci0gICAgdHJhY2VfdmZzX2R1cDNfZXJyKGVycm9yKTsKLSAgICBlcnJubyA9IGVy
cm9yOwotICAgIHJldHVybiAtMTsKKwlvdXRfZXJybm86CisJdHJhY2VfdmZzX2R1cDNfZXJyKGVy
cm9yKTsKKwllcnJubyA9IGVycm9yOworCXJldHVybiAtMTsKIH0KIAogaW50IGR1cDIoaW50IG9s
ZGZkLCBpbnQgbmV3ZmQpCiB7Ci0gICAgaWYgKG9sZGZkID09IG5ld2ZkKQotICAgICAgICByZXR1
cm4gbmV3ZmQ7CisJaWYgKG9sZGZkID09IG5ld2ZkKQorCQlyZXR1cm4gbmV3ZmQ7CiAKLSAgICBy
ZXR1cm4gZHVwMyhvbGRmZCwgbmV3ZmQsIDApOworCXJldHVybiBkdXAzKG9sZGZkLCBuZXdmZCwg
MCk7CiB9CiAKIC8qCkBAIC0xNDM1LDgzICsxNDM1LDgzIEBAIFRSQUNFUE9JTlQodHJhY2VfdmZz
X2ZjbnRsX2VyciwgIiVkIiwgaW50KTsKIGV4dGVybiAiQyIKIGludCBmY250bChpbnQgZmQsIGlu
dCBjbWQsIGludCBhcmcpCiB7Ci0gICAgc3RydWN0IGZpbGUgKmZwOwotICAgIGludCByZXQgPSAw
LCBlcnJvcjsKLSAgICBpbnQgdG1wOwotCi0gICAgdHJhY2VfdmZzX2ZjbnRsKGZkLCBjbWQsIGFy
Zyk7Ci0gICAgZXJyb3IgPSBmZ2V0KGZkLCAmZnApOwotICAgIGlmIChlcnJvcikKLSAgICAgICAg
Z290byBvdXRfZXJybm87Ci0KLSAgICAvLyBBbiBpbXBvcnRhbnQgbm90ZSBhYm91dCBvdXIgaGFu
ZGxpbmcgb2YgRkRfQ0xPRVhFQyAvIE9fQ0xPRVhFQzoKLSAgICAvLyBjbG9zZS1vbi1leGVjIHNo
b3VsZG4ndCBoYXZlIGJlZW4gYSBmaWxlIGZsYWcgKGZwLT5mX2ZsYWdzKSAtIGl0IGlzIGEKLSAg
ICAvLyBmaWxlIGRlc2NyaXB0b3IgZmxhZywgbWVhbmluZyB0aGF0IHRoYXQgdHdvIGR1cCgpZWQg
ZmlsZSBkZXNjcmlwdG9ycwotICAgIC8vIGNvdWxkIGhhdmUgZGlmZmVyZW50IHZhbHVlcyBmb3Ig
RkRfQ0xPRVhFQy4gT3VyIGN1cnJlbnQgaW1wbGVtZW50YXRpb24KLSAgICAvLyAqd3JvbmdseSog
bWFrZXMgY2xvc2Utb24tZXhlYyBhbiBmX2ZsYWcgKHVzaW5nIHRoZSBiaXQgT19DTE9FWEVDKS4K
LSAgICAvLyBUaGVyZSBpcyBsaXR0bGUgcHJhY3RpY2FsIGRpZmZlcmVuY2UsIHRob3VnaCwgYmVj
YXVzZSB0aGlzIGZsYWcgaXMKLSAgICAvLyBpZ25vcmVkIGluIE9TdiBhbnl3YXksIGFzIGl0IGRv
ZXNuJ3Qgc3VwcG9ydCBleGVjKCkuCi0gICAgc3dpdGNoIChjbWQpIHsKLSAgICBjYXNlIEZfRFVQ
RkQ6Ci0gICAgICAgIGVycm9yID0gX2ZkYWxsb2MoZnAsICZyZXQsIGFyZyk7Ci0gICAgICAgIGlm
IChlcnJvcikKLSAgICAgICAgICAgIGdvdG8gb3V0X2Vycm5vOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEZfR0VURkQ6Ci0gICAgICAgIHJldCA9IChmcC0+Zl9mbGFncyAmIE9fQ0xPRVhFQykg
PyBGRF9DTE9FWEVDIDogMDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGX1NFVEZEOgotICAg
ICAgICBGRF9MT0NLKGZwKTsKLSAgICAgICAgZnAtPmZfZmxhZ3MgPSAoZnAtPmZfZmxhZ3MgJiB+
T19DTE9FWEVDKSB8Ci0gICAgICAgICAgICAgICAgKChhcmcgJiBGRF9DTE9FWEVDKSA/IE9fQ0xP
RVhFQyA6IDApOwotICAgICAgICBGRF9VTkxPQ0soZnApOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIEZfR0VURkw6Ci0gICAgICAgIC8vIEFzIGV4cGxhaW5lZCBhYm92ZSwgdGhlIE9fQ0xPRVhF
QyBzaG91bGQgaGF2ZSBiZWVuIGluIGZfZmxhZ3MsCi0gICAgICAgIC8vIGFuZCBzaG91bGRuJ3Qg
YmUgcmV0dXJuZWQuIExpbnV4IGFsd2F5cyByZXR1cm5zIDAxMDAwMDAgKCJ0aGUKLSAgICAgICAg
Ly8gZmxhZyBmb3JtZXJseSBrbm93biBhcyBPX0xBUkdFRklMRSkgc28gbGV0J3MgZG8gaXQgdG9v
LgotICAgICAgICByZXQgPSAob2ZsYWdzKGZwLT5mX2ZsYWdzKSAmIH5PX0NMT0VYRUMpIHwgMDEw
MDAwMDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGX1NFVEZMOgotICAgICAgICBGRF9MT0NL
KGZwKTsKLSAgICAgICAgZnAtPmZfZmxhZ3MgPSBmZmxhZ3MoKG9mbGFncyhmcC0+Zl9mbGFncykg
JiB+U0VURkwpIHwKLSAgICAgICAgICAgICAgICAoYXJnICYgU0VURkwpKTsKLSAgICAgICAgRkRf
VU5MT0NLKGZwKTsKLQotICAgICAgICAvKiBTeW5jIG5vbmJsb2NraW5nL2FzeW5jIHN0YXRlIHdp
dGggZmlsZSBmbGFncyAqLwotICAgICAgICB0bXAgPSBmcC0+Zl9mbGFncyAmIEZOT05CTE9DSzsK
LSAgICAgICAgZnAtPmlvY3RsKEZJT05CSU8sICZ0bXApOwotICAgICAgICB0bXAgPSBmcC0+Zl9m
bGFncyAmIEZBU1lOQzsKLSAgICAgICAgZnAtPmlvY3RsKEZJT0FTWU5DLCAmdG1wKTsKLQotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIEZfU0VUTEs6Ci0gICAgICAgIFdBUk5fT05DRSgiZmNudGwo
Rl9TRVRMSykgc3R1YmJlZFxuIik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRl9HRVRMSzoK
LSAgICAgICAgV0FSTl9PTkNFKCJmY250bChGX0dFVExLKSBzdHViYmVkXG4iKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBGX1NFVExLVzoKLSAgICAgICAgV0FSTl9PTkNFKCJmY250bChGX1NF
VExLVykgc3R1YmJlZFxuIik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRl9TRVRPV046Ci0g
ICAgICAgIFdBUk5fT05DRSgiZmNudGwoRl9TRVRPV04pIHN0dWJiZWRcbiIpOwotICAgICAgICBi
cmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBrcHJpbnRmKCJ1bnN1cHBvcnRlZCBmY250bCBj
bWQgMHgleFxuIiwgY21kKTsKLSAgICAgICAgZXJyb3IgPSBFSU5WQUw7Ci0gICAgfQotCi0gICAg
ZmRyb3AoZnApOwotICAgIGlmIChlcnJvcikKLSAgICAgICAgZ290byBvdXRfZXJybm87Ci0gICAg
dHJhY2VfdmZzX2ZjbnRsX3JldChyZXQpOwotICAgIHJldHVybiByZXQ7Ci0KLSAgICBvdXRfZXJy
bm86Ci0gICAgdHJhY2VfdmZzX2ZjbnRsX2VycihlcnJvcik7Ci0gICAgZXJybm8gPSBlcnJvcjsK
LSAgICByZXR1cm4gLTE7CisJc3RydWN0IGZpbGUgKmZwOworCWludCByZXQgPSAwLCBlcnJvcjsK
KwlpbnQgdG1wOworCisJdHJhY2VfdmZzX2ZjbnRsKGZkLCBjbWQsIGFyZyk7CisJZXJyb3IgPSBm
Z2V0KGZkLCAmZnApOworCWlmIChlcnJvcikKKwkJZ290byBvdXRfZXJybm87CisKKwkvLyBBbiBp
bXBvcnRhbnQgbm90ZSBhYm91dCBvdXIgaGFuZGxpbmcgb2YgRkRfQ0xPRVhFQyAvIE9fQ0xPRVhF
QzoKKwkvLyBjbG9zZS1vbi1leGVjIHNob3VsZG4ndCBoYXZlIGJlZW4gYSBmaWxlIGZsYWcgKGZw
LT5mX2ZsYWdzKSAtIGl0IGlzIGEKKwkvLyBmaWxlIGRlc2NyaXB0b3IgZmxhZywgbWVhbmluZyB0
aGF0IHRoYXQgdHdvIGR1cCgpZWQgZmlsZSBkZXNjcmlwdG9ycworCS8vIGNvdWxkIGhhdmUgZGlm
ZmVyZW50IHZhbHVlcyBmb3IgRkRfQ0xPRVhFQy4gT3VyIGN1cnJlbnQgaW1wbGVtZW50YXRpb24K
KwkvLyAqd3JvbmdseSogbWFrZXMgY2xvc2Utb24tZXhlYyBhbiBmX2ZsYWcgKHVzaW5nIHRoZSBi
aXQgT19DTE9FWEVDKS4KKwkvLyBUaGVyZSBpcyBsaXR0bGUgcHJhY3RpY2FsIGRpZmZlcmVuY2Us
IHRob3VnaCwgYmVjYXVzZSB0aGlzIGZsYWcgaXMKKwkvLyBpZ25vcmVkIGluIE9TdiBhbnl3YXks
IGFzIGl0IGRvZXNuJ3Qgc3VwcG9ydCBleGVjKCkuCisJc3dpdGNoIChjbWQpIHsKKwljYXNlIEZf
RFVQRkQ6CisJCWVycm9yID0gX2ZkYWxsb2MoZnAsICZyZXQsIGFyZyk7CisJCWlmIChlcnJvcikK
KwkJCWdvdG8gb3V0X2Vycm5vOworCQlicmVhazsKKwljYXNlIEZfR0VURkQ6CisJCXJldCA9IChm
cC0+Zl9mbGFncyAmIE9fQ0xPRVhFQykgPyBGRF9DTE9FWEVDIDogMDsKKwkJYnJlYWs7CisJY2Fz
ZSBGX1NFVEZEOgorCQlGRF9MT0NLKGZwKTsKKwkJZnAtPmZfZmxhZ3MgPSAoZnAtPmZfZmxhZ3Mg
JiB+T19DTE9FWEVDKSB8CisJCQkJKChhcmcgJiBGRF9DTE9FWEVDKSA/IE9fQ0xPRVhFQyA6IDAp
OworCQlGRF9VTkxPQ0soZnApOworCQlicmVhazsKKwljYXNlIEZfR0VURkw6CisJCS8vIEFzIGV4
cGxhaW5lZCBhYm92ZSwgdGhlIE9fQ0xPRVhFQyBzaG91bGQgaGF2ZSBiZWVuIGluIGZfZmxhZ3Ms
CisJCS8vIGFuZCBzaG91bGRuJ3QgYmUgcmV0dXJuZWQuIExpbnV4IGFsd2F5cyByZXR1cm5zIDAx
MDAwMDAgKCJ0aGUKKwkJLy8gZmxhZyBmb3JtZXJseSBrbm93biBhcyBPX0xBUkdFRklMRSkgc28g
bGV0J3MgZG8gaXQgdG9vLgorCQlyZXQgPSAob2ZsYWdzKGZwLT5mX2ZsYWdzKSAmIH5PX0NMT0VY
RUMpIHwgMDEwMDAwMDsKKwkJYnJlYWs7CisJY2FzZSBGX1NFVEZMOgorCQlGRF9MT0NLKGZwKTsK
KwkJZnAtPmZfZmxhZ3MgPSBmZmxhZ3MoKG9mbGFncyhmcC0+Zl9mbGFncykgJiB+U0VURkwpIHwK
KwkJCQkoYXJnICYgU0VURkwpKTsKKwkJRkRfVU5MT0NLKGZwKTsKKworCQkvKiBTeW5jIG5vbmJs
b2NraW5nL2FzeW5jIHN0YXRlIHdpdGggZmlsZSBmbGFncyAqLworCQl0bXAgPSBmcC0+Zl9mbGFn
cyAmIEZOT05CTE9DSzsKKwkJZnAtPmlvY3RsKEZJT05CSU8sICZ0bXApOworCQl0bXAgPSBmcC0+
Zl9mbGFncyAmIEZBU1lOQzsKKwkJZnAtPmlvY3RsKEZJT0FTWU5DLCAmdG1wKTsKKworCQlicmVh
azsKKwljYXNlIEZfU0VUTEs6CisJCVdBUk5fT05DRSgiZmNudGwoRl9TRVRMSykgc3R1YmJlZFxu
Iik7CisJCWJyZWFrOworCWNhc2UgRl9HRVRMSzoKKwkJV0FSTl9PTkNFKCJmY250bChGX0dFVExL
KSBzdHViYmVkXG4iKTsKKwkJYnJlYWs7CisJY2FzZSBGX1NFVExLVzoKKwkJV0FSTl9PTkNFKCJm
Y250bChGX1NFVExLVykgc3R1YmJlZFxuIik7CisJCWJyZWFrOworCWNhc2UgRl9TRVRPV046CisJ
CVdBUk5fT05DRSgiZmNudGwoRl9TRVRPV04pIHN0dWJiZWRcbiIpOworCQlicmVhazsKKwlkZWZh
dWx0OgorCQlrcHJpbnRmKCJ1bnN1cHBvcnRlZCBmY250bCBjbWQgMHgleFxuIiwgY21kKTsKKwkJ
ZXJyb3IgPSBFSU5WQUw7CisJfQorCisJZmRyb3AoZnApOworCWlmIChlcnJvcikKKwkJZ290byBv
dXRfZXJybm87CisJdHJhY2VfdmZzX2ZjbnRsX3JldChyZXQpOworCXJldHVybiByZXQ7CisKKwlv
dXRfZXJybm86CisJdHJhY2VfdmZzX2ZjbnRsX2VycihlcnJvcik7CisJZXJybm8gPSBlcnJvcjsK
KwlyZXR1cm4gLTE7CiB9CiAKIFRSQUNFUE9JTlQodHJhY2VfdmZzX2FjY2VzcywgIlwiJXNcIiAw
JTBvIiwgY29uc3QgY2hhciosIGludCk7CkBAIC0xNTIzLDcyICsxNTIzLDcyIEBAIFRSQUNFUE9J
TlQodHJhY2VfdmZzX2FjY2Vzc19lcnIsICIlZCIsIGludCk7CiAgKi8KIGludCBhY2Nlc3MoY29u
c3QgY2hhciAqcGF0aG5hbWUsIGludCBtb2RlKQogewotICAgIHRyYWNlX3Zmc19hY2Nlc3MocGF0
aG5hbWUsIG1vZGUpOwotICAgIHN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOwotICAgIGNoYXIg
cGF0aFtQQVRIX01BWF07Ci0gICAgaW50IGFjYywgZXJyb3IgPSAwOworCXRyYWNlX3Zmc19hY2Nl
c3MocGF0aG5hbWUsIG1vZGUpOworCXN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOworCWNoYXIg
cGF0aFtQQVRIX01BWF07CisJaW50IGFjYywgZXJyb3IgPSAwOwogCi0gICAgYWNjID0gMDsKLSAg
ICBpZiAobW9kZSAmIFJfT0spCi0gICAgICAgIGFjYyB8PSBWUkVBRDsKLSAgICBpZiAobW9kZSAm
IFdfT0spCi0gICAgICAgIGFjYyB8PSBWV1JJVEU7CisJYWNjID0gMDsKKwlpZiAobW9kZSAmIFJf
T0spCisJCWFjYyB8PSBWUkVBRDsKKwlpZiAobW9kZSAmIFdfT0spCisJCWFjYyB8PSBWV1JJVEU7
CiAKLSAgICBpZiAoKGVycm9yID0gdGFza19jb252KHQsIHBhdGhuYW1lLCBhY2MsIHBhdGgpKSAh
PSAwKQotICAgICAgICBnb3RvIG91dF9lcnJubzsKKwlpZiAoKGVycm9yID0gdGFza19jb252KHQs
IHBhdGhuYW1lLCBhY2MsIHBhdGgpKSAhPSAwKQorCQlnb3RvIG91dF9lcnJubzsKIAotICAgIGVy
cm9yID0gc3lzX2FjY2VzcyhwYXRoLCBtb2RlKTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIGdv
dG8gb3V0X2Vycm5vOwotICAgIHRyYWNlX3Zmc19hY2Nlc3NfcmV0KCk7Ci0gICAgcmV0dXJuIDA7
Ci0gICAgb3V0X2Vycm5vOgotICAgIGVycm5vID0gZXJyb3I7Ci0gICAgdHJhY2VfdmZzX2FjY2Vz
c19lcnIoZXJyb3IpOwotICAgIHJldHVybiAtMTsKKwllcnJvciA9IHN5c19hY2Nlc3MocGF0aCwg
bW9kZSk7CisJaWYgKGVycm9yKQorCQlnb3RvIG91dF9lcnJubzsKKwl0cmFjZV92ZnNfYWNjZXNz
X3JldCgpOworCXJldHVybiAwOworCW91dF9lcnJubzoKKwllcnJubyA9IGVycm9yOworCXRyYWNl
X3Zmc19hY2Nlc3NfZXJyKGVycm9yKTsKKwlyZXR1cm4gLTE7CiB9CiAKIGludCBmYWNjZXNzYXQo
aW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwgaW50IG1vZGUsIGludCBmbGFncykKIHsK
LSAgICBpZiAoZmxhZ3MgJiBBVF9TWU1MSU5LX05PRk9MTE9XKSB7Ci0gICAgICAgIFVOSU1QTEVN
RU5URUQoImZhY2Nlc3NhdCgpIHdpdGggQVRfU1lNTElOS19OT0ZPTExPVyIpOwotICAgIH0KKwlp
ZiAoZmxhZ3MgJiBBVF9TWU1MSU5LX05PRk9MTE9XKSB7CisJCVVOSU1QTEVNRU5URUQoImZhY2Nl
c3NhdCgpIHdpdGggQVRfU1lNTElOS19OT0ZPTExPVyIpOworCX0KIAotICAgIGlmIChwYXRobmFt
ZVswXSA9PSAnLycgfHwgZGlyZmQgPT0gQVRfRkRDV0QpIHsKLSAgICAgICAgcmV0dXJuIGFjY2Vz
cyhwYXRobmFtZSwgbW9kZSk7Ci0gICAgfQorCWlmIChwYXRobmFtZVswXSA9PSAnLycgfHwgZGly
ZmQgPT0gQVRfRkRDV0QpIHsKKwkJcmV0dXJuIGFjY2VzcyhwYXRobmFtZSwgbW9kZSk7CisJfQog
Ci0gICAgc3RydWN0IGZpbGUgKmZwOwotICAgIGludCBlcnJvciA9IGZnZXQoZGlyZmQsICZmcCk7
Ci0gICAgaWYgKGVycm9yKSB7Ci0gICAgICAgIGVycm5vID0gZXJyb3I7Ci0gICAgICAgIHJldHVy
biAtMTsKLSAgICB9CisJc3RydWN0IGZpbGUgKmZwOworCWludCBlcnJvciA9IGZnZXQoZGlyZmQs
ICZmcCk7CisJaWYgKGVycm9yKSB7CisJCWVycm5vID0gZXJyb3I7CisJCXJldHVybiAtMTsKKwl9
CiAKLSAgICBzdHJ1Y3Qgdm5vZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOwotICAgIHZu
X2xvY2sodnApOworCXN0cnVjdCB2bm9kZSAqdnAgPSBmcC0+Zl9kZW50cnktPmRfdm5vZGU7CisJ
dm5fbG9jayh2cCk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Y2hhciBbXT4gdXAgKG5ldyBjaGFy
W1BBVEhfTUFYXSk7Ci0gICAgY2hhciAqcCA9IHVwLmdldCgpOworCXN0ZDo6dW5pcXVlX3B0cjxj
aGFyIFtdPiB1cCAobmV3IGNoYXJbUEFUSF9NQVhdKTsKKwljaGFyICpwID0gdXAuZ2V0KCk7CiAK
LSAgICAvKiBidWlsZCBhYnNvbHV0ZSBwYXRoICovCi0gICAgc3RybGNweShwLCBmcC0+Zl9kZW50
cnktPmRfbW91bnQtPm1fcGF0aCwgUEFUSF9NQVgpOwotICAgIHN0cmxjYXQocCwgZnAtPmZfZGVu
dHJ5LT5kX3BhdGgsIFBBVEhfTUFYKTsKLSAgICBzdHJsY2F0KHAsICIvIiwgUEFUSF9NQVgpOwot
ICAgIHN0cmxjYXQocCwgcGF0aG5hbWUsIFBBVEhfTUFYKTsKKwkvKiBidWlsZCBhYnNvbHV0ZSBw
YXRoICovCisJc3RybGNweShwLCBmcC0+Zl9kZW50cnktPmRfbW91bnQtPm1fcGF0aCwgUEFUSF9N
QVgpOworCXN0cmxjYXQocCwgZnAtPmZfZGVudHJ5LT5kX3BhdGgsIFBBVEhfTUFYKTsKKwlzdHJs
Y2F0KHAsICIvIiwgUEFUSF9NQVgpOworCXN0cmxjYXQocCwgcGF0aG5hbWUsIFBBVEhfTUFYKTsK
IAotICAgIGVycm9yID0gYWNjZXNzKHAsIG1vZGUpOworCWVycm9yID0gYWNjZXNzKHAsIG1vZGUp
OwogCi0gICAgdm5fdW5sb2NrKHZwKTsKLSAgICBmZHJvcChmcCk7CisJdm5fdW5sb2NrKHZwKTsK
KwlmZHJvcChmcCk7CiAKLSAgICByZXR1cm4gZXJyb3I7CisJcmV0dXJuIGVycm9yOwogfQogCiBl
eHRlcm4gIkMiIAogaW50IGV1aWRhY2Nlc3MoY29uc3QgY2hhciAqcGF0aG5hbWUsIGludCBtb2Rl
KQogewotICAgIHJldHVybiBhY2Nlc3MocGF0aG5hbWUsIG1vZGUpOworCXJldHVybiBhY2Nlc3Mo
cGF0aG5hbWUsIG1vZGUpOwogfQogCiB3ZWFrX2FsaWFzKGV1aWRhY2Nlc3MsZWFjY2Vzcyk7CkBA
IC0xNTk4LDQyICsxNTk4LDQyIEBAIHN0YXRpYyBpbnQKIGZzX3BpcGUoc3RydWN0IHRhc2sgKnQs
IHN0cnVjdCBtc2cgKm1zZykKIHsKICNpZmRlZiBDT05GSUdfRklGT0ZTCi0gICAgY2hhciBwYXRo
W1BBVEhfTUFYXTsKLSAgICBmaWxlX3QgcmZwLCB3ZnA7Ci0gICAgaW50IGVycm9yLCByZmQsIHdm
ZDsKLQotICAgIERQUklOVEYoVkZTREJfQ09SRSwgKCJmc19waXBlXG4iKSk7Ci0KLSAgICBpZiAo
KHJmZCA9IHRhc2tfbmV3ZmQodCkpID09IC0xKQotICAgICAgICByZXR1cm4gRU1GSUxFOwotICAg
IHQtPnRfb2ZpbGVbcmZkXSA9IChmaWxlX3QpMTsgLyogdGVtcCAqLwotCi0gICAgaWYgKCh3ZmQg
PSB0YXNrX25ld2ZkKHQpKSA9PSAtMSkgewotICAgICAgICB0LT50X29maWxlW3JmZF0gPSBudWxs
cHRyOwotICAgICAgICByZXR1cm4gRU1GSUxFOwotICAgIH0KLSAgICBzcHJpbnRmKHBhdGgsICIv
bW50L2ZpZm8vcGlwZS0leC0lZCIsICh1X2ludCl0LT50X3Rhc2tpZCwgcmZkKTsKLQotICAgIGlm
ICgoZXJyb3IgPSBzeXNfbWtub2QocGF0aCwgU19JRklGTykpICE9IDApCi0gICAgICAgIGdvdG8g
b3V0OwotICAgIGlmICgoZXJyb3IgPSBzeXNfb3BlbihwYXRoLCBPX1JET05MWSB8IE9fTk9OQkxP
Q0ssIDAsICZyZnApKSAhPSAwKSB7Ci0gICAgICAgIGdvdG8gb3V0OwotICAgIH0KLSAgICBpZiAo
KGVycm9yID0gc3lzX29wZW4ocGF0aCwgT19XUk9OTFkgfCBPX05PTkJMT0NLLCAwLCAmd2ZwKSkg
IT0gMCkgewotICAgICAgICBnb3RvIG91dDsKLSAgICB9Ci0gICAgdC0+dF9vZmlsZVtyZmRdID0g
cmZwOwotICAgIHQtPnRfb2ZpbGVbd2ZkXSA9IHdmcDsKLSAgICB0LT50X25vcGVucyArPSAyOwot
ICAgIG1zZy0+ZGF0YVswXSA9IHJmZDsKLSAgICBtc2ctPmRhdGFbMV0gPSB3ZmQ7Ci0gICAgcmV0
dXJuIDA7Ci0gICAgb3V0OgotICAgIHQtPnRfb2ZpbGVbcmZkXSA9IG51bGxwdHI7Ci0gICAgdC0+
dF9vZmlsZVt3ZmRdID0gbnVsbHB0cjsKLSAgICByZXR1cm4gZXJyb3I7CisJY2hhciBwYXRoW1BB
VEhfTUFYXTsKKwlmaWxlX3QgcmZwLCB3ZnA7CisJaW50IGVycm9yLCByZmQsIHdmZDsKKworCURQ
UklOVEYoVkZTREJfQ09SRSwgKCJmc19waXBlXG4iKSk7CisKKwlpZiAoKHJmZCA9IHRhc2tfbmV3
ZmQodCkpID09IC0xKQorCQlyZXR1cm4gRU1GSUxFOworCXQtPnRfb2ZpbGVbcmZkXSA9IChmaWxl
X3QpMTsgLyogdGVtcCAqLworCisJaWYgKCh3ZmQgPSB0YXNrX25ld2ZkKHQpKSA9PSAtMSkgewor
CQl0LT50X29maWxlW3JmZF0gPSBudWxscHRyOworCQlyZXR1cm4gRU1GSUxFOworCX0KKwlzcHJp
bnRmKHBhdGgsICIvbW50L2ZpZm8vcGlwZS0leC0lZCIsICh1X2ludCl0LT50X3Rhc2tpZCwgcmZk
KTsKKworCWlmICgoZXJyb3IgPSBzeXNfbWtub2QocGF0aCwgU19JRklGTykpICE9IDApCisJCWdv
dG8gb3V0OworCWlmICgoZXJyb3IgPSBzeXNfb3BlbihwYXRoLCBPX1JET05MWSB8IE9fTk9OQkxP
Q0ssIDAsICZyZnApKSAhPSAwKSB7CisJCWdvdG8gb3V0OworCX0KKwlpZiAoKGVycm9yID0gc3lz
X29wZW4ocGF0aCwgT19XUk9OTFkgfCBPX05PTkJMT0NLLCAwLCAmd2ZwKSkgIT0gMCkgeworCQln
b3RvIG91dDsKKwl9CisJdC0+dF9vZmlsZVtyZmRdID0gcmZwOworCXQtPnRfb2ZpbGVbd2ZkXSA9
IHdmcDsKKwl0LT50X25vcGVucyArPSAyOworCW1zZy0+ZGF0YVswXSA9IHJmZDsKKwltc2ctPmRh
dGFbMV0gPSB3ZmQ7CisJcmV0dXJuIDA7CisJb3V0OgorCXQtPnRfb2ZpbGVbcmZkXSA9IG51bGxw
dHI7CisJdC0+dF9vZmlsZVt3ZmRdID0gbnVsbHB0cjsKKwlyZXR1cm4gZXJyb3I7CiAjZWxzZQot
ICAgIHJldHVybiBFTk9TWVM7CisJcmV0dXJuIEVOT1NZUzsKICNlbmRpZgogfQogI2VuZGlmCkBA
IC0xNjQ3LDI1ICsxNjQ3LDI1IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2lzYXR0eV9lcnIsICIl
ZCIsIGludCk7CiAgKi8KIGludCBpc2F0dHkoaW50IGZkKQogewotICAgIHN0cnVjdCBmaWxlICpm
cDsKLSAgICBpbnQgaXN0dHkgPSAwOworCXN0cnVjdCBmaWxlICpmcDsKKwlpbnQgaXN0dHkgPSAw
OwogCi0gICAgdHJhY2VfdmZzX2lzYXR0eShmZCk7Ci0gICAgZmlsZXJlZiBmKGZpbGVyZWZfZnJv
bV9mZChmZCkpOwotICAgIGlmICghZikgewotICAgICAgICBlcnJubyA9IEVCQURGOwotICAgICAg
ICB0cmFjZV92ZnNfaXNhdHR5X2VycihlcnJubyk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9
CisJdHJhY2VfdmZzX2lzYXR0eShmZCk7CisJZmlsZXJlZiBmKGZpbGVyZWZfZnJvbV9mZChmZCkp
OworCWlmICghZikgeworCQllcnJubyA9IEVCQURGOworCQl0cmFjZV92ZnNfaXNhdHR5X2Vycihl
cnJubyk7CisJCXJldHVybiAtMTsKKwl9CiAKLSAgICBmcCA9IGYuZ2V0KCk7Ci0gICAgaWYgKGR5
bmFtaWNfY2FzdDx0dHlfZmlsZSo+KGZwKSB8fAotICAgICAgICAoZnAtPmZfZGVudHJ5ICYmIGZw
LT5mX2RlbnRyeS0+ZF92bm9kZS0+dl9mbGFncyAmIFZJU1RUWSkpIHsKLSAgICAgICAgaXN0dHkg
PSAxOwotICAgIH0KKwlmcCA9IGYuZ2V0KCk7CisJaWYgKGR5bmFtaWNfY2FzdDx0dHlfZmlsZSo+
KGZwKSB8fAorCQkoZnAtPmZfZGVudHJ5ICYmIGZwLT5mX2RlbnRyeS0+ZF92bm9kZS0+dl9mbGFn
cyAmIFZJU1RUWSkpIHsKKwkJaXN0dHkgPSAxOworCX0KIAotICAgIHRyYWNlX3Zmc19pc2F0dHlf
cmV0KGlzdHR5KTsKLSAgICByZXR1cm4gaXN0dHk7CisJdHJhY2VfdmZzX2lzYXR0eV9yZXQoaXN0
dHkpOworCXJldHVybiBpc3R0eTsKIH0KIAogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfdHJ1bmNhdGUs
ICJcIiVzXCIgMHgleCIsIGNvbnN0IGNoYXIqLCBvZmZfdCk7CkBAIC0xNjc0LDI2ICsxNjc0LDI2
IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX3RydW5jYXRlX2VyciwgIiVkIiwgaW50KTsKIAogaW50
IHRydW5jYXRlKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBvZmZfdCBsZW5ndGgpCiB7Ci0gICAgdHJh
Y2VfdmZzX3RydW5jYXRlKHBhdGhuYW1lLCBsZW5ndGgpOwotICAgIHN0cnVjdCB0YXNrICp0ID0g
bWFpbl90YXNrOwotICAgIGNoYXIgcGF0aFtQQVRIX01BWF07Ci0gICAgaW50IGVycm9yOworCXRy
YWNlX3Zmc190cnVuY2F0ZShwYXRobmFtZSwgbGVuZ3RoKTsKKwlzdHJ1Y3QgdGFzayAqdCA9IG1h
aW5fdGFzazsKKwljaGFyIHBhdGhbUEFUSF9NQVhdOworCWludCBlcnJvcjsKIAotICAgIGVycm9y
ID0gRU5PRU5UOwotICAgIGlmIChwYXRobmFtZSA9PSBudWxscHRyKQotICAgICAgICBnb3RvIG91
dF9lcnJubzsKLSAgICBpZiAoKGVycm9yID0gdGFza19jb252KHQsIHBhdGhuYW1lLCBWV1JJVEUs
IHBhdGgpKSAhPSAwKQotICAgICAgICBnb3RvIG91dF9lcnJubzsKKwllcnJvciA9IEVOT0VOVDsK
KwlpZiAocGF0aG5hbWUgPT0gbnVsbHB0cikKKwkJZ290byBvdXRfZXJybm87CisJaWYgKChlcnJv
ciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwgVldSSVRFLCBwYXRoKSkgIT0gMCkKKwkJZ290byBv
dXRfZXJybm87CiAKLSAgICBlcnJvciA9IHN5c190cnVuY2F0ZShwYXRoLCBsZW5ndGgpOwotICAg
IGlmIChlcnJvcikKLSAgICAgICAgZ290byBvdXRfZXJybm87Ci0gICAgdHJhY2VfdmZzX3RydW5j
YXRlX3JldCgpOwotICAgIHJldHVybiAwOwotICAgIG91dF9lcnJubzoKLSAgICBlcnJubyA9IGVy
cm9yOwotICAgIHRyYWNlX3Zmc190cnVuY2F0ZV9lcnIoZXJyb3IpOwotICAgIHJldHVybiAtMTsK
KwllcnJvciA9IHN5c190cnVuY2F0ZShwYXRoLCBsZW5ndGgpOworCWlmIChlcnJvcikKKwkJZ290
byBvdXRfZXJybm87CisJdHJhY2VfdmZzX3RydW5jYXRlX3JldCgpOworCXJldHVybiAwOworCW91
dF9lcnJubzoKKwllcnJubyA9IGVycm9yOworCXRyYWNlX3Zmc190cnVuY2F0ZV9lcnIoZXJyb3Ip
OworCXJldHVybiAtMTsKIH0KIAogTEZTNjQodHJ1bmNhdGUpOwpAQCAtMTcwNCw1OCArMTcwNCw1
OCBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19mdHJ1bmNhdGVfZXJyLCAiJWQiLCBpbnQpOwogCiBp
bnQgZnRydW5jYXRlKGludCBmZCwgb2ZmX3QgbGVuZ3RoKQogewotICAgIHRyYWNlX3Zmc19mdHJ1
bmNhdGUoZmQsIGxlbmd0aCk7Ci0gICAgc3RydWN0IGZpbGUgKmZwOwotICAgIGludCBlcnJvcjsK
Kwl0cmFjZV92ZnNfZnRydW5jYXRlKGZkLCBsZW5ndGgpOworCXN0cnVjdCBmaWxlICpmcDsKKwlp
bnQgZXJyb3I7CiAKLSAgICBlcnJvciA9IGZnZXQoZmQsICZmcCk7Ci0gICAgaWYgKGVycm9yKQot
ICAgICAgICBnb3RvIG91dF9lcnJubzsKKwllcnJvciA9IGZnZXQoZmQsICZmcCk7CisJaWYgKGVy
cm9yKQorCQlnb3RvIG91dF9lcnJubzsKIAotICAgIGVycm9yID0gc3lzX2Z0cnVuY2F0ZShmcCwg
bGVuZ3RoKTsKLSAgICBmZHJvcChmcCk7CisJZXJyb3IgPSBzeXNfZnRydW5jYXRlKGZwLCBsZW5n
dGgpOworCWZkcm9wKGZwKTsKIAotICAgIGlmIChlcnJvcikKLSAgICAgICAgZ290byBvdXRfZXJy
bm87Ci0gICAgdHJhY2VfdmZzX2Z0cnVuY2F0ZV9yZXQoKTsKLSAgICByZXR1cm4gMDsKKwlpZiAo
ZXJyb3IpCisJCWdvdG8gb3V0X2Vycm5vOworCXRyYWNlX3Zmc19mdHJ1bmNhdGVfcmV0KCk7CisJ
cmV0dXJuIDA7CiAKLSAgICBvdXRfZXJybm86Ci0gICAgZXJybm8gPSBlcnJvcjsKLSAgICB0cmFj
ZV92ZnNfZnRydW5jYXRlX2VycihlcnJvcik7Ci0gICAgcmV0dXJuIC0xOworCW91dF9lcnJubzoK
KwllcnJubyA9IGVycm9yOworCXRyYWNlX3Zmc19mdHJ1bmNhdGVfZXJyKGVycm9yKTsKKwlyZXR1
cm4gLTE7CiB9CiAKIExGUzY0KGZ0cnVuY2F0ZSk7CiAKIHNzaXplX3QgcmVhZGxpbmsoY29uc3Qg
Y2hhciAqcGF0aG5hbWUsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnNpemUpCiB7Ci0gICAgc3RydWN0
IHRhc2sgKnQgPSBtYWluX3Rhc2s7Ci0gICAgY2hhciBwYXRoW1BBVEhfTUFYXTsKLSAgICBpbnQg
ZXJyb3I7Ci0gICAgc3NpemVfdCBzaXplOworCXN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOwor
CWNoYXIgcGF0aFtQQVRIX01BWF07CisJaW50IGVycm9yOworCXNzaXplX3Qgc2l6ZTsKIAotICAg
IGVycm9yID0gLUVJTlZBTDsKLSAgICBpZiAoYnVmc2l6ZSA8PSAwKQotICAgICAgICBnb3RvIG91
dF9lcnJubzsKKwllcnJvciA9IC1FSU5WQUw7CisJaWYgKGJ1ZnNpemUgPD0gMCkKKwkJZ290byBv
dXRfZXJybm87CiAKLSAgICBlcnJvciA9IEVOT0VOVDsKLSAgICBpZiAocGF0aG5hbWUgPT0gbnVs
bHB0cikKLSAgICAgICAgZ290byBvdXRfZXJybm87Ci0gICAgZXJyb3IgPSB0YXNrX2NvbnYodCwg
cGF0aG5hbWUsIFZXUklURSwgcGF0aCk7Ci0gICAgaWYgKGVycm9yKQotICAgICAgICBnb3RvIG91
dF9lcnJubzsKKwllcnJvciA9IEVOT0VOVDsKKwlpZiAocGF0aG5hbWUgPT0gbnVsbHB0cikKKwkJ
Z290byBvdXRfZXJybm87CisJZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5hbWUsIFZXUklURSwg
cGF0aCk7CisJaWYgKGVycm9yKQorCQlnb3RvIG91dF9lcnJubzsKIAotICAgIHNpemUgID0gMDsK
LSAgICBlcnJvciA9IHN5c19yZWFkbGluayhwYXRoLCBidWYsIGJ1ZnNpemUsICZzaXplKTsKKwlz
aXplICA9IDA7CisJZXJyb3IgPSBzeXNfcmVhZGxpbmsocGF0aCwgYnVmLCBidWZzaXplLCAmc2l6
ZSk7CiAKLSAgICBpZiAoZXJyb3IgIT0gMCkKLSAgICAgICAgZ290byBvdXRfZXJybm87CisJaWYg
KGVycm9yICE9IDApCisJCWdvdG8gb3V0X2Vycm5vOwogCi0gICAgcmV0dXJuIHNpemU7Ci0gICAg
b3V0X2Vycm5vOgotICAgIGVycm5vID0gZXJyb3I7Ci0gICAgcmV0dXJuIC0xOworCXJldHVybiBz
aXplOworCW91dF9lcnJubzoKKwllcnJubyA9IGVycm9yOworCXJldHVybiAtMTsKIH0KIAogVFJB
Q0VQT0lOVCh0cmFjZV92ZnNfZmFsbG9jYXRlLCAiJWQgJWQgMHgleCAweCV4IiwgaW50LCBpbnQs
IGxvZmZfdCwgbG9mZl90KTsKQEAgLTE3NjQsMjYgKzE3NjQsMjYgQEAgVFJBQ0VQT0lOVCh0cmFj
ZV92ZnNfZmFsbG9jYXRlX2VyciwgIiVkIiwgaW50KTsKIAogaW50IGZhbGxvY2F0ZShpbnQgZmQs
IGludCBtb2RlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuKQogewotICAgIHN0cnVjdCBmaWxl
ICpmcDsKLSAgICBpbnQgZXJyb3I7CisJc3RydWN0IGZpbGUgKmZwOworCWludCBlcnJvcjsKIAot
ICAgIHRyYWNlX3Zmc19mYWxsb2NhdGUoZmQsIG1vZGUsIG9mZnNldCwgbGVuKTsKLSAgICBlcnJv
ciA9IGZnZXQoZmQsICZmcCk7Ci0gICAgaWYgKGVycm9yKQotICAgICAgICBnb3RvIG91dF9lcnJu
bzsKKwl0cmFjZV92ZnNfZmFsbG9jYXRlKGZkLCBtb2RlLCBvZmZzZXQsIGxlbik7CisJZXJyb3Ig
PSBmZ2V0KGZkLCAmZnApOworCWlmIChlcnJvcikKKwkJZ290byBvdXRfZXJybm87CiAKLSAgICBl
cnJvciA9IHN5c19mYWxsb2NhdGUoZnAsIG1vZGUsIG9mZnNldCwgbGVuKTsKLSAgICBmZHJvcChm
cCk7CisJZXJyb3IgPSBzeXNfZmFsbG9jYXRlKGZwLCBtb2RlLCBvZmZzZXQsIGxlbik7CisJZmRy
b3AoZnApOwogCi0gICAgaWYgKGVycm9yKQotICAgICAgICBnb3RvIG91dF9lcnJubzsKLSAgICB0
cmFjZV92ZnNfZmFsbG9jYXRlX3JldCgpOwotICAgIHJldHVybiAwOworCWlmIChlcnJvcikKKwkJ
Z290byBvdXRfZXJybm87CisJdHJhY2VfdmZzX2ZhbGxvY2F0ZV9yZXQoKTsKKwlyZXR1cm4gMDsK
IAotICAgIG91dF9lcnJubzoKLSAgICB0cmFjZV92ZnNfZmFsbG9jYXRlX2VycihlcnJvcik7Ci0g
ICAgZXJybm8gPSBlcnJvcjsKLSAgICByZXR1cm4gLTE7CisJb3V0X2Vycm5vOgorCXRyYWNlX3Zm
c19mYWxsb2NhdGVfZXJyKGVycm9yKTsKKwllcnJubyA9IGVycm9yOworCXJldHVybiAtMTsKIH0K
IAogTEZTNjQoZmFsbG9jYXRlKTsKQEAgLTE3OTQsNjAgKzE3OTQsNjAgQEAgVFJBQ0VQT0lOVCh0
cmFjZV92ZnNfdXRpbWVzX2VyciwgIiVkIiwgaW50KTsKIAogaW50IGZ1dGltZXMoaW50IGZkLCBj
b25zdCBzdHJ1Y3QgdGltZXZhbCB0aW1lc1syXSkKIHsKLSAgICByZXR1cm4gZnV0aW1lc2F0KGZk
LCBudWxscHRyLCB0aW1lcyk7CisJcmV0dXJuIGZ1dGltZXNhdChmZCwgbnVsbHB0ciwgdGltZXMp
OwogfQogCiBpbnQgZnV0aW1lc2F0KGludCBkaXJmZCwgY29uc3QgY2hhciAqcGF0aG5hbWUsIGNv
bnN0IHN0cnVjdCB0aW1ldmFsIHRpbWVzWzJdKQogewotICAgIHN0cnVjdCBzdGF0IHN0OwotICAg
IHN0cnVjdCBmaWxlICpmcDsKLSAgICBpbnQgZXJyb3I7Ci0gICAgY2hhciAqYWJzb2x1dGVfcGF0
aDsKLQotICAgIGlmICgocGF0aG5hbWUgJiYgcGF0aG5hbWVbMF0gPT0gJy8nKSB8fCBkaXJmZCA9
PSBBVF9GRENXRCkKLSAgICAgICAgcmV0dXJuIHV0aW1lcyhwYXRobmFtZSwgdGltZXMpOwotCi0g
ICAgLy8gTm90ZTogaWYgcGF0aG5hbWUgPT0gbnVsbHB0ciwgZnV0aW1lc2F0IG9wZXJhdGVzIG9u
IGRpcmZkIGl0c2VsZiwgYW5kIGluCi0gICAgLy8gdGhhdCBjYXNlIGl0IGRvZXNuJ3QgaGF2ZSB0
byBiZSBhIGRpcmVjdG9yeS4KLSAgICBpZiAocGF0aG5hbWUpIHsKLSAgICAgICAgZXJyb3IgPSBm
c3RhdChkaXJmZCwgJnN0KTsKLSAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICBlcnJv
ciA9IGVycm5vOwotICAgICAgICAgICAgZ290byBvdXRfZXJybm87Ci0gICAgICAgIH0KLQotICAg
ICAgICBpZiAoIVNfSVNESVIoc3Quc3RfbW9kZSkpewotICAgICAgICAgICAgZXJyb3IgPSBFTk9U
RElSOwotICAgICAgICAgICAgZ290byBvdXRfZXJybm87Ci0gICAgICAgIH0KLSAgICB9CisJc3Ry
dWN0IHN0YXQgc3Q7CisJc3RydWN0IGZpbGUgKmZwOworCWludCBlcnJvcjsKKwljaGFyICphYnNv
bHV0ZV9wYXRoOworCisJaWYgKChwYXRobmFtZSAmJiBwYXRobmFtZVswXSA9PSAnLycpIHx8IGRp
cmZkID09IEFUX0ZEQ1dEKQorCQlyZXR1cm4gdXRpbWVzKHBhdGhuYW1lLCB0aW1lcyk7CisKKwkv
LyBOb3RlOiBpZiBwYXRobmFtZSA9PSBudWxscHRyLCBmdXRpbWVzYXQgb3BlcmF0ZXMgb24gZGly
ZmQgaXRzZWxmLCBhbmQgaW4KKwkvLyB0aGF0IGNhc2UgaXQgZG9lc24ndCBoYXZlIHRvIGJlIGEg
ZGlyZWN0b3J5LgorCWlmIChwYXRobmFtZSkgeworCQllcnJvciA9IGZzdGF0KGRpcmZkLCAmc3Qp
OworCQlpZiAoZXJyb3IpIHsKKwkJCWVycm9yID0gZXJybm87CisJCQlnb3RvIG91dF9lcnJubzsK
KwkJfQorCisJCWlmICghU19JU0RJUihzdC5zdF9tb2RlKSl7CisJCQllcnJvciA9IEVOT1RESVI7
CisJCQlnb3RvIG91dF9lcnJubzsKKwkJfQorCX0KIAotICAgIGVycm9yID0gZmdldChkaXJmZCwg
JmZwKTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIGdvdG8gb3V0X2Vycm5vOworCWVycm9yID0g
ZmdldChkaXJmZCwgJmZwKTsKKwlpZiAoZXJyb3IpCisJCWdvdG8gb3V0X2Vycm5vOwogCi0gICAg
LyogYnVpbGQgYWJzb2x1dGUgcGF0aCAqLwotICAgIGFic29sdXRlX3BhdGggPSAoY2hhciopbWFs
bG9jKFBBVEhfTUFYKTsKLSAgICBzdHJsY3B5KGFic29sdXRlX3BhdGgsIGZwLT5mX2RlbnRyeS0+
ZF9tb3VudC0+bV9wYXRoLCBQQVRIX01BWCk7Ci0gICAgc3RybGNhdChhYnNvbHV0ZV9wYXRoLCBm
cC0+Zl9kZW50cnktPmRfcGF0aCwgUEFUSF9NQVgpOworCS8qIGJ1aWxkIGFic29sdXRlIHBhdGgg
Ki8KKwlhYnNvbHV0ZV9wYXRoID0gKGNoYXIqKW1hbGxvYyhQQVRIX01BWCk7CisJc3RybGNweShh
YnNvbHV0ZV9wYXRoLCBmcC0+Zl9kZW50cnktPmRfbW91bnQtPm1fcGF0aCwgUEFUSF9NQVgpOwor
CXN0cmxjYXQoYWJzb2x1dGVfcGF0aCwgZnAtPmZfZGVudHJ5LT5kX3BhdGgsIFBBVEhfTUFYKTsK
IAotICAgIGlmIChwYXRobmFtZSkgewotICAgICAgICBzdHJsY2F0KGFic29sdXRlX3BhdGgsICIv
IiwgUEFUSF9NQVgpOwotICAgICAgICBzdHJsY2F0KGFic29sdXRlX3BhdGgsIHBhdGhuYW1lLCBQ
QVRIX01BWCk7Ci0gICAgfQorCWlmIChwYXRobmFtZSkgeworCQlzdHJsY2F0KGFic29sdXRlX3Bh
dGgsICIvIiwgUEFUSF9NQVgpOworCQlzdHJsY2F0KGFic29sdXRlX3BhdGgsIHBhdGhuYW1lLCBQ
QVRIX01BWCk7CisJfQogCi0gICAgZXJyb3IgPSB1dGltZXMoYWJzb2x1dGVfcGF0aCwgdGltZXMp
OwotICAgIGZyZWUoYWJzb2x1dGVfcGF0aCk7CisJZXJyb3IgPSB1dGltZXMoYWJzb2x1dGVfcGF0
aCwgdGltZXMpOworCWZyZWUoYWJzb2x1dGVfcGF0aCk7CiAKLSAgICBmZHJvcChmcCk7CisJZmRy
b3AoZnApOwogCi0gICAgaWYgKGVycm9yKQotICAgICAgICBnb3RvIG91dF9lcnJubzsKLSAgICBy
ZXR1cm4gMDsKKwlpZiAoZXJyb3IpCisJCWdvdG8gb3V0X2Vycm5vOworCXJldHVybiAwOwogCi0g
ICAgb3V0X2Vycm5vOgotICAgIGVycm5vID0gZXJyb3I7Ci0gICAgcmV0dXJuIC0xOworCW91dF9l
cnJubzoKKwllcnJubyA9IGVycm9yOworCXJldHVybiAtMTsKIH0KIAogVFJBQ0VQT0lOVCh0cmFj
ZV92ZnNfdXRpbWVuc2F0LCAiXCIlc1wiIiwgY29uc3QgY2hhciopOwpAQCAtMTg1NywxNyArMTg1
NywxNyBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc191dGltZW5zYXRfZXJyLCAiJWQiLCBpbnQpOwog
ZXh0ZXJuICJDIgogaW50IHV0aW1lbnNhdChpbnQgZGlyZmQsIGNvbnN0IGNoYXIgKnBhdGhuYW1l
LCBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgdGltZXNbMl0sIGludCBmbGFncykKIHsKLSAgICB0cmFj
ZV92ZnNfdXRpbWVuc2F0KHBhdGhuYW1lKTsKKwl0cmFjZV92ZnNfdXRpbWVuc2F0KHBhdGhuYW1l
KTsKIAotICAgIGF1dG8gZXJyb3IgPSBzeXNfdXRpbWVuc2F0KGRpcmZkLCBwYXRobmFtZSwgdGlt
ZXMsIGZsYWdzKTsKLSAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgdHJhY2VfdmZzX3V0aW1lbnNh
dF9lcnIoZXJyb3IpOwotICAgICAgICBlcnJubyA9IGVycm9yOwotICAgICAgICByZXR1cm4gLTE7
Ci0gICAgfQorCWF1dG8gZXJyb3IgPSBzeXNfdXRpbWVuc2F0KGRpcmZkLCBwYXRobmFtZSwgdGlt
ZXMsIGZsYWdzKTsKKwlpZiAoZXJyb3IpIHsKKwkJdHJhY2VfdmZzX3V0aW1lbnNhdF9lcnIoZXJy
b3IpOworCQllcnJubyA9IGVycm9yOworCQlyZXR1cm4gLTE7CisJfQogCi0gICAgdHJhY2VfdmZz
X3V0aW1lbnNhdF9yZXQoKTsKLSAgICByZXR1cm4gMDsKKwl0cmFjZV92ZnNfdXRpbWVuc2F0X3Jl
dCgpOworCXJldHVybiAwOwogfQogCiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19mdXRpbWVucywgIiVk
IiwgaW50KTsKQEAgLTE4NzcsNzMgKzE4NzcsNzMgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZnV0
aW1lbnNfZXJyLCAiJWQiLCBpbnQpOwogZXh0ZXJuICJDIgogaW50IGZ1dGltZW5zKGludCBmZCwg
Y29uc3Qgc3RydWN0IHRpbWVzcGVjIHRpbWVzWzJdKQogewotICAgIHRyYWNlX3Zmc19mdXRpbWVu
cyhmZCk7CisJdHJhY2VfdmZzX2Z1dGltZW5zKGZkKTsKIAotICAgIGF1dG8gZXJyb3IgPSBzeXNf
ZnV0aW1lbnMoZmQsIHRpbWVzKTsKLSAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgdHJhY2VfdmZz
X2Z1dGltZW5zX2VycihlcnJvcik7Ci0gICAgICAgIGVycm5vID0gZXJyb3I7Ci0gICAgICAgIHJl
dHVybiAtMTsKLSAgICB9CisJYXV0byBlcnJvciA9IHN5c19mdXRpbWVucyhmZCwgdGltZXMpOwor
CWlmIChlcnJvcikgeworCQl0cmFjZV92ZnNfZnV0aW1lbnNfZXJyKGVycm9yKTsKKwkJZXJybm8g
PSBlcnJvcjsKKwkJcmV0dXJuIC0xOworCX0KIAotICAgIHRyYWNlX3Zmc19mdXRpbWVuc19yZXQo
KTsKLSAgICByZXR1cm4gMDsKKwl0cmFjZV92ZnNfZnV0aW1lbnNfcmV0KCk7CisJcmV0dXJuIDA7
CiB9CiAKIHN0YXRpYyBpbnQgZG9fdXRpbWVzKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBjb25zdCBz
dHJ1Y3QgdGltZXZhbCB0aW1lc1syXSwgaW50IGZsYWdzKQogewotICAgIHN0cnVjdCB0YXNrICp0
ID0gbWFpbl90YXNrOwotICAgIGNoYXIgcGF0aFtQQVRIX01BWF07Ci0gICAgaW50IGVycm9yOwor
CXN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOworCWNoYXIgcGF0aFtQQVRIX01BWF07CisJaW50
IGVycm9yOwogCi0gICAgdHJhY2VfdmZzX3V0aW1lcyhwYXRobmFtZSk7CisJdHJhY2VfdmZzX3V0
aW1lcyhwYXRobmFtZSk7CiAKLSAgICBlcnJvciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwgMCwg
cGF0aCk7Ci0gICAgaWYgKGVycm9yKSB7Ci0gICAgICAgIHRyYWNlX3Zmc191dGltZXNfZXJyKGVy
cm9yKTsKLSAgICAgICAgcmV0dXJuIGxpYmNfZXJyb3IoZXJyb3IpOwotICAgIH0KKwllcnJvciA9
IHRhc2tfY29udih0LCBwYXRobmFtZSwgMCwgcGF0aCk7CisJaWYgKGVycm9yKSB7CisJCXRyYWNl
X3Zmc191dGltZXNfZXJyKGVycm9yKTsKKwkJcmV0dXJuIGxpYmNfZXJyb3IoZXJyb3IpOworCX0K
IAotICAgIGVycm9yID0gc3lzX3V0aW1lcyhwYXRoLCB0aW1lcywgZmxhZ3MpOwotICAgIGlmIChl
cnJvcikgewotICAgICAgICB0cmFjZV92ZnNfdXRpbWVzX2VycihlcnJvcik7Ci0gICAgICAgIHJl
dHVybiBsaWJjX2Vycm9yKGVycm9yKTsKLSAgICB9CisJZXJyb3IgPSBzeXNfdXRpbWVzKHBhdGgs
IHRpbWVzLCBmbGFncyk7CisJaWYgKGVycm9yKSB7CisJCXRyYWNlX3Zmc191dGltZXNfZXJyKGVy
cm9yKTsKKwkJcmV0dXJuIGxpYmNfZXJyb3IoZXJyb3IpOworCX0KIAotICAgIHRyYWNlX3Zmc191
dGltZXNfcmV0KCk7Ci0gICAgcmV0dXJuIDA7CisJdHJhY2VfdmZzX3V0aW1lc19yZXQoKTsKKwly
ZXR1cm4gMDsKIH0KIAogZXh0ZXJuICJDIgogaW50IHV0aW1lcyhjb25zdCBjaGFyICpwYXRobmFt
ZSwgY29uc3Qgc3RydWN0IHRpbWV2YWwgdGltZXNbMl0pCiB7Ci0gICAgcmV0dXJuIGRvX3V0aW1l
cyhwYXRobmFtZSwgdGltZXMsIDApOworCXJldHVybiBkb191dGltZXMocGF0aG5hbWUsIHRpbWVz
LCAwKTsKIH0KIAogZXh0ZXJuICJDIgogaW50IGx1dGltZXMoY29uc3QgY2hhciAqcGF0aG5hbWUs
IGNvbnN0IHN0cnVjdCB0aW1ldmFsIHRpbWVzWzJdKQogewotICAgIHJldHVybiBkb191dGltZXMo
cGF0aG5hbWUsIHRpbWVzLCBBVF9TWU1MSU5LX05PRk9MTE9XKTsKKwlyZXR1cm4gZG9fdXRpbWVz
KHBhdGhuYW1lLCB0aW1lcywgQVRfU1lNTElOS19OT0ZPTExPVyk7CiB9CiAKIGV4dGVybiAiQyIK
IGludCB1dGltZShjb25zdCBjaGFyICpwYXRobmFtZSwgY29uc3Qgc3RydWN0IHV0aW1idWYgKnQp
CiB7Ci0gICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDo6Y2hyb25vOwotCi0gICAgc3RydWN0IHRpbWV2
YWwgdGltZXNbMl07Ci0gICAgdGltZXNbMF0udHZfdXNlYyA9IDA7Ci0gICAgdGltZXNbMV0udHZf
dXNlYyA9IDA7Ci0gICAgaWYgKCF0KSB7Ci0gICAgICAgIGxvbmcgaW50IHRzZWMgPSBkdXJhdGlv
bl9jYXN0PHNlY29uZHM+KG9zdjo6Y2xvY2s6OndhbGw6Om5vdygpLnRpbWVfc2luY2VfZXBvY2go
KSkuY291bnQoKTsKLSAgICAgICAgdGltZXNbMF0udHZfc2VjID0gdHNlYzsKLSAgICAgICAgdGlt
ZXNbMV0udHZfc2VjID0gdHNlYzsKLSAgICB9IGVsc2UgewotICAgICAgICB0aW1lc1swXS50dl9z
ZWMgPSB0LT5hY3RpbWU7Ci0gICAgICAgIHRpbWVzWzFdLnR2X3NlYyA9IHQtPm1vZHRpbWU7Ci0g
ICAgfQorCXVzaW5nIG5hbWVzcGFjZSBzdGQ6OmNocm9ubzsKKworCXN0cnVjdCB0aW1ldmFsIHRp
bWVzWzJdOworCXRpbWVzWzBdLnR2X3VzZWMgPSAwOworCXRpbWVzWzFdLnR2X3VzZWMgPSAwOwor
CWlmICghdCkgeworCQlsb25nIGludCB0c2VjID0gZHVyYXRpb25fY2FzdDxzZWNvbmRzPihvc3Y6
OmNsb2NrOjp3YWxsOjpub3coKS50aW1lX3NpbmNlX2Vwb2NoKCkpLmNvdW50KCk7CisJCXRpbWVz
WzBdLnR2X3NlYyA9IHRzZWM7CisJCXRpbWVzWzFdLnR2X3NlYyA9IHRzZWM7CisJfSBlbHNlIHsK
KwkJdGltZXNbMF0udHZfc2VjID0gdC0+YWN0aW1lOworCQl0aW1lc1sxXS50dl9zZWMgPSB0LT5t
b2R0aW1lOworCX0KIAotICAgIHJldHVybiB1dGltZXMocGF0aG5hbWUsIHRpbWVzKTsKKwlyZXR1
cm4gdXRpbWVzKHBhdGhuYW1lLCB0aW1lcyk7CiB9CiAKIFRSQUNFUE9JTlQodHJhY2VfdmZzX2No
bW9kLCAiXCIlc1wiIDAlMG8iLCBjb25zdCBjaGFyKiwgbW9kZV90KTsKQEAgLTE5NTIsMjMgKzE5
NTIsMjMgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfY2htb2RfZXJyLCAiJWQiLCBpbnQpOwogCiBp
bnQgY2htb2QoY29uc3QgY2hhciAqcGF0aG5hbWUsIG1vZGVfdCBtb2RlKQogewotICAgIHRyYWNl
X3Zmc19jaG1vZChwYXRobmFtZSwgbW9kZSk7Ci0gICAgc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rh
c2s7Ci0gICAgY2hhciBwYXRoW1BBVEhfTUFYXTsKLSAgICBpbnQgZXJyb3IgPSBFTk9FTlQ7Ci0g
ICAgaWYgKHBhdGhuYW1lID09IG51bGxwdHIpCi0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwotICAg
IGlmICgoZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5hbWUsIFZXUklURSwgcGF0aCkpICE9IDAp
Ci0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwotICAgIGVycm9yID0gc3lzX2NobW9kKHBhdGgsIG1v
ZGUgJiBBTExQRVJNUyk7Ci0gICAgaWYgKGVycm9yKQotICAgICAgICBnb3RvIG91dF9lcnJubzsK
LSAgICB0cmFjZV92ZnNfY2htb2RfcmV0KCk7Ci0gICAgcmV0dXJuIDA7CisJdHJhY2VfdmZzX2No
bW9kKHBhdGhuYW1lLCBtb2RlKTsKKwlzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKKwljaGFy
IHBhdGhbUEFUSF9NQVhdOworCWludCBlcnJvciA9IEVOT0VOVDsKKwlpZiAocGF0aG5hbWUgPT0g
bnVsbHB0cikKKwkJZ290byBvdXRfZXJybm87CisJaWYgKChlcnJvciA9IHRhc2tfY29udih0LCBw
YXRobmFtZSwgVldSSVRFLCBwYXRoKSkgIT0gMCkKKwkJZ290byBvdXRfZXJybm87CisJZXJyb3Ig
PSBzeXNfY2htb2QocGF0aCwgbW9kZSAmIEFMTFBFUk1TKTsKKwlpZiAoZXJyb3IpCisJCWdvdG8g
b3V0X2Vycm5vOworCXRyYWNlX3Zmc19jaG1vZF9yZXQoKTsKKwlyZXR1cm4gMDsKIG91dF9lcnJu
bzoKLSAgICB0cmFjZV92ZnNfY2htb2RfZXJyKGVycm9yKTsKLSAgICBlcnJubyA9IGVycm9yOwot
ICAgIHJldHVybiAtMTsKKwl0cmFjZV92ZnNfY2htb2RfZXJyKGVycm9yKTsKKwllcnJubyA9IGVy
cm9yOworCXJldHVybiAtMTsKIH0KIAogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZmNobW9kLCAiXCIl
ZFwiIDAlMG8iLCBpbnQsIG1vZGVfdCk7CkBAIC0xOTc2LDE1ICsxOTc2LDE1IEBAIFRSQUNFUE9J
TlQodHJhY2VfdmZzX2ZjaG1vZF9yZXQsICIiKTsKIAogaW50IGZjaG1vZChpbnQgZmQsIG1vZGVf
dCBtb2RlKQogewotICAgIHRyYWNlX3Zmc19mY2htb2QoZmQsIG1vZGUpOwotICAgIGF1dG8gZXJy
b3IgPSBzeXNfZmNobW9kKGZkLCBtb2RlICYgQUxMUEVSTVMpOwotICAgIHRyYWNlX3Zmc19mY2ht
b2RfcmV0KCk7Ci0gICAgaWYgKGVycm9yKSB7Ci0gICAgICAgIGVycm5vID0gZXJyb3I7Ci0gICAg
ICAgIHJldHVybiAtMTsKLSAgICB9IGVsc2UgewotICAgICAgICByZXR1cm4gMDsKLSAgICB9CisJ
dHJhY2VfdmZzX2ZjaG1vZChmZCwgbW9kZSk7CisJYXV0byBlcnJvciA9IHN5c19mY2htb2QoZmQs
IG1vZGUgJiBBTExQRVJNUyk7CisJdHJhY2VfdmZzX2ZjaG1vZF9yZXQoKTsKKwlpZiAoZXJyb3Ip
IHsKKwkJZXJybm8gPSBlcnJvcjsKKwkJcmV0dXJuIC0xOworCX0gZWxzZSB7CisJCXJldHVybiAw
OworCX0KIH0KIAogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZmNob3duLCAiXCIlZFwiICVkICVkIiwg
aW50LCB1aWRfdCwgZ2lkX3QpOwpAQCAtMTk5MiwxMDEgKzE5OTIsMTAxIEBAIFRSQUNFUE9JTlQo
dHJhY2VfdmZzX2ZjaG93bl9yZXQsICIiKTsKIAogaW50IGZjaG93bihpbnQgZmQsIHVpZF90IG93
bmVyLCBnaWRfdCBncm91cCkKIHsKLSAgICB0cmFjZV92ZnNfZmNob3duKGZkLCBvd25lciwgZ3Jv
dXApOwotICAgIFdBUk5fU1RVQkJFRCgpOwotICAgIHRyYWNlX3Zmc19mY2hvd25fcmV0KCk7Ci0g
ICAgcmV0dXJuIDA7CisJdHJhY2VfdmZzX2ZjaG93bihmZCwgb3duZXIsIGdyb3VwKTsKKwlXQVJO
X1NUVUJCRUQoKTsKKwl0cmFjZV92ZnNfZmNob3duX3JldCgpOworCXJldHVybiAwOwogfQogCiBp
bnQgY2hvd24oY29uc3QgY2hhciAqcGF0aCwgdWlkX3Qgb3duZXIsIGdpZF90IGdyb3VwKQogewot
ICAgIFdBUk5fU1RVQkJFRCgpOwotICAgIHJldHVybiAwOworCVdBUk5fU1RVQkJFRCgpOworCXJl
dHVybiAwOwogfQogCiBpbnQgbGNob3duKGNvbnN0IGNoYXIgKnBhdGgsIHVpZF90IG93bmVyLCBn
aWRfdCBncm91cCkKIHsKLSAgICBXQVJOX1NUVUJCRUQoKTsKLSAgICByZXR1cm4gMDsKKwlXQVJO
X1NUVUJCRUQoKTsKKwlyZXR1cm4gMDsKIH0KIAogCiBzc2l6ZV90IHNlbmRmaWxlKGludCBvdXRf
ZmQsIGludCBpbl9mZCwgb2ZmX3QgKl9vZmZzZXQsIHNpemVfdCBjb3VudCkKIHsKLSAgICBzdHJ1
Y3QgZmlsZSAqaW5fZnA7Ci0gICAgc3RydWN0IGZpbGUgKm91dF9mcDsKLSAgICBmaWxlcmVmIGlu
X2Z7ZmlsZXJlZl9mcm9tX2ZkKGluX2ZkKX07Ci0gICAgZmlsZXJlZiBvdXRfZntmaWxlcmVmX2Zy
b21fZmQob3V0X2ZkKX07CisJc3RydWN0IGZpbGUgKmluX2ZwOworCXN0cnVjdCBmaWxlICpvdXRf
ZnA7CisJZmlsZXJlZiBpbl9me2ZpbGVyZWZfZnJvbV9mZChpbl9mZCl9OworCWZpbGVyZWYgb3V0
X2Z7ZmlsZXJlZl9mcm9tX2ZkKG91dF9mZCl9OwogCi0gICAgaWYgKCFpbl9mIHx8ICFvdXRfZikg
ewotICAgICAgICByZXR1cm4gbGliY19lcnJvcihFQkFERik7Ci0gICAgfQorCWlmICghaW5fZiB8
fCAhb3V0X2YpIHsKKwkJcmV0dXJuIGxpYmNfZXJyb3IoRUJBREYpOworCX0KIAotICAgIGluX2Zw
ID0gaW5fZi5nZXQoKTsKLSAgICBvdXRfZnAgPSBvdXRfZi5nZXQoKTsKKwlpbl9mcCA9IGluX2Yu
Z2V0KCk7CisJb3V0X2ZwID0gb3V0X2YuZ2V0KCk7CiAKLSAgICBpZiAoIWluX2ZwLT5mX2RlbnRy
eSkgewotICAgICAgICByZXR1cm4gbGliY19lcnJvcihFQkFERik7Ci0gICAgfQorCWlmICghaW5f
ZnAtPmZfZGVudHJ5KSB7CisJCXJldHVybiBsaWJjX2Vycm9yKEVCQURGKTsKKwl9CiAKLSAgICBp
ZiAoIShpbl9mcC0+Zl9mbGFncyAmIEZSRUFEKSkgewotICAgICAgICByZXR1cm4gbGliY19lcnJv
cihFQkFERik7Ci0gICAgfQorCWlmICghKGluX2ZwLT5mX2ZsYWdzICYgRlJFQUQpKSB7CisJCXJl
dHVybiBsaWJjX2Vycm9yKEVCQURGKTsKKwl9CiAKLSAgICBpZiAob3V0X2ZwLT5mX3R5cGUgJiBE
VFlQRV9WTk9ERSkgewotICAgICAgICBpZiAoIW91dF9mcC0+Zl9kZW50cnkpIHsKLSAgICAgICAg
ICAgIHJldHVybiBsaWJjX2Vycm9yKEVCQURGKTsKKwlpZiAob3V0X2ZwLT5mX3R5cGUgJiBEVFlQ
RV9WTk9ERSkgeworCQlpZiAoIW91dF9mcC0+Zl9kZW50cnkpIHsKKwkJCXJldHVybiBsaWJjX2Vy
cm9yKEVCQURGKTsKIAl9IGVsc2UgaWYgKCEob3V0X2ZwLT5mX2ZsYWdzICYgRldSSVRFKSkgewot
ICAgICAgICAgICAgcmV0dXJuIGxpYmNfZXJyb3IoRUJBREYpOworCQkJcmV0dXJuIGxpYmNfZXJy
b3IoRUJBREYpOworCX0KIAl9Ci0gICAgfQogCi0gICAgb2ZmX3Qgb2Zmc2V0IDsKKwlvZmZfdCBv
ZmZzZXQgOwogCi0gICAgaWYgKF9vZmZzZXQgIT0gbnVsbHB0cikgewotICAgICAgICBvZmZzZXQg
PSAqX29mZnNldDsKLSAgICB9IGVsc2UgewotICAgICAgICAvKiBpZiBfb2Zmc2V0IGlzIG51bGxw
dHIsIHdlIG5lZWQgdG8gcmVhZCBmcm9tIHRoZSBwcmVzZW50IHBvc2l0aW9uIG9mIGluX2ZkICov
Ci0gICAgICAgIG9mZnNldCA9IGxzZWVrKGluX2ZkLCAwLCBTRUVLX0NVUik7Ci0gICAgfQorCWlm
IChfb2Zmc2V0ICE9IG51bGxwdHIpIHsKKwkJb2Zmc2V0ID0gKl9vZmZzZXQ7CisJfSBlbHNlIHsK
KwkJLyogaWYgX29mZnNldCBpcyBudWxscHRyLCB3ZSBuZWVkIHRvIHJlYWQgZnJvbSB0aGUgcHJl
c2VudCBwb3NpdGlvbiBvZiBpbl9mZCAqLworCQlvZmZzZXQgPSBsc2Vlayhpbl9mZCwgMCwgU0VF
S19DVVIpOworCX0KIAotICAgIC8vIENvbnN0cmFpbiBjb3VudCB0byB0aGUgZXh0ZW50IG9mIHRo
ZSBmaWxlLi4uCi0gICAgc3RydWN0IHN0YXQgc3Q7Ci0gICAgaWYgKGZzdGF0KGluX2ZkLCAmc3Qp
IDwgMCkgewotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKG9m
ZnNldCA+PSBzdC5zdF9zaXplKSB7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfSBl
bHNlIGlmICgob2Zmc2V0ICsgY291bnQpID49IHN0LnN0X3NpemUpIHsKLSAgICAgICAgICAgIGNv
dW50ID0gc3Quc3Rfc2l6ZSAtIG9mZnNldDsKLSAgICAgICAgICAgIGlmIChjb3VudCA9PSAwKSB7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICB9CisJLy8gQ29uc3RyYWluIGNvdW50IHRvIHRoZSBleHRlbnQgb2YgdGhlIGZpbGUuLi4KKwlz
dHJ1Y3Qgc3RhdCBzdDsKKwlpZiAoZnN0YXQoaW5fZmQsICZzdCkgPCAwKSB7CisJCXJldHVybiAt
MTsKKwl9IGVsc2UgeworCQlpZiAob2Zmc2V0ID49IHN0LnN0X3NpemUpIHsKKwkJCXJldHVybiAw
OworCQl9IGVsc2UgaWYgKChvZmZzZXQgKyBjb3VudCkgPj0gc3Quc3Rfc2l6ZSkgeworCQkJY291
bnQgPSBzdC5zdF9zaXplIC0gb2Zmc2V0OworCQkJaWYgKGNvdW50ID09IDApIHsKKwkJCQlyZXR1
cm4gMDsKKwkJCX0KKwkJfQorCX0KIAotICAgIHNpemVfdCBieXRlc190b19tbWFwID0gY291bnQg
KyAob2Zmc2V0ICUgbW11OjpwYWdlX3NpemUpOwotICAgIG9mZl90IG9mZnNldF9mb3JfbW1hcCA9
ICBhbGlnbl9kb3duKG9mZnNldCwgKG9mZl90KW1tdTo6cGFnZV9zaXplKTsKKwlzaXplX3QgYnl0
ZXNfdG9fbW1hcCA9IGNvdW50ICsgKG9mZnNldCAlIG1tdTo6cGFnZV9zaXplKTsKKwlvZmZfdCBv
ZmZzZXRfZm9yX21tYXAgPSAgYWxpZ25fZG93bihvZmZzZXQsIChvZmZfdCltbXU6OnBhZ2Vfc2l6
ZSk7CiAKLSAgICBjaGFyICpzcmMgPSBzdGF0aWNfY2FzdDxjaGFyICo+KG1tYXAobnVsbHB0ciwg
Ynl0ZXNfdG9fbW1hcCwgUFJPVF9SRUFELCBNQVBfU0hBUkVELCBpbl9mZCwgb2Zmc2V0X2Zvcl9t
bWFwKSk7CisJY2hhciAqc3JjID0gc3RhdGljX2Nhc3Q8Y2hhciAqPihtbWFwKG51bGxwdHIsIGJ5
dGVzX3RvX21tYXAsIFBST1RfUkVBRCwgTUFQX1NIQVJFRCwgaW5fZmQsIG9mZnNldF9mb3JfbW1h
cCkpOwogCi0gICAgaWYgKHNyYyA9PSBNQVBfRkFJTEVEKSB7Ci0gICAgICAgIHJldHVybiAtMTsK
LSAgICB9CisJaWYgKHNyYyA9PSBNQVBfRkFJTEVEKSB7CisJCXJldHVybiAtMTsKKwl9CiAKLSAg
ICBhdXRvIHJldCA9IHdyaXRlKG91dF9mZCwgc3JjICsgKG9mZnNldCAlIFBBR0VTSVpFKSwgY291
bnQpOworCWF1dG8gcmV0ID0gd3JpdGUob3V0X2ZkLCBzcmMgKyAob2Zmc2V0ICUgUEFHRVNJWkUp
LCBjb3VudCk7CiAKLSAgICBpZiAocmV0IDwgMCkgewotICAgICAgICByZXR1cm4gbGliY19lcnJv
cihlcnJubyk7Ci0gICAgfSBlbHNlIGlmKF9vZmZzZXQgPT0gbnVsbHB0cikgewotICAgICAgICBs
c2Vlayhpbl9mZCwgcmV0LCBTRUVLX0NVUik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgKl9vZmZz
ZXQgKz0gcmV0OwotICAgIH0KKwlpZiAocmV0IDwgMCkgeworCQlyZXR1cm4gbGliY19lcnJvcihl
cnJubyk7CisJfSBlbHNlIGlmKF9vZmZzZXQgPT0gbnVsbHB0cikgeworCQlsc2Vlayhpbl9mZCwg
cmV0LCBTRUVLX0NVUik7CisJfSBlbHNlIHsKKwkJKl9vZmZzZXQgKz0gcmV0OworCX0KIAotICAg
IGFzc2VydChtdW5tYXAoc3JjLCBjb3VudCkgPT0gMCk7CisJYXNzZXJ0KG11bm1hcChzcmMsIGNv
dW50KSA9PSAwKTsKIAotICAgIHJldHVybiByZXQ7CisJcmV0dXJuIHJldDsKIH0KIAogI3VuZGVm
IHNlbmRmaWxlNjQKQEAgLTIwOTYsMjAgKzIwOTYsMjAgQEAgTk9fU1lTKGludCBmY2htb2RhdChp
bnQgZGlyZmQsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBtb2RlX3QgbW9kZSwgaW50IGZsYWdzKSk7
CiAKIG1vZGVfdCB1bWFzayhtb2RlX3QgbmV3bWFzaykKIHsKLSAgICByZXR1cm4gZ2xvYmFsX3Vt
YXNrLmV4Y2hhbmdlKG5ld21hc2ssIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOworCXJldHVy
biBnbG9iYWxfdW1hc2suZXhjaGFuZ2UobmV3bWFzaywgc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhl
ZCk7CiB9CiAKIGludAogZnNfbm9vcCh2b2lkKQogewotICAgIHJldHVybiAwOworCXJldHVybiAw
OwogfQogCiBpbnQgY2hyb290KGNvbnN0IGNoYXIgKnBhdGgpCiB7Ci0gICAgV0FSTl9TVFVCQkVE
KCk7Ci0gICAgZXJybm8gPSBFTk9TWVM7Ci0gICAgcmV0dXJuIC0xOworCVdBUk5fU1RVQkJFRCgp
OworCWVycm5vID0gRU5PU1lTOworCXJldHVybiAtMTsKIH0KIAogLy8gdW5wYWNrX2Jvb3Rmcygp
IHVucGFja3MgYSBjb2xsZWN0aW9uIG9mIGZpbGVzIHN0b3JlZCBhcyBwYXJ0IG9mIHRoZSBPU3YK
QEAgLTIxMjAsMTQgKzIxMjAsMTQgQEAgaW50IGNocm9vdChjb25zdCBjaGFyICpwYXRoKQogI2Rl
ZmluZSBCT09URlNfUEFUSF9NQVggMTExCiBlbnVtIGNsYXNzIGJvb3Rmc19maWxlX3R5cGUgOiBj
aGFyIHsgb3RoZXIgPSAwLCBzeW1saW5rID0gMSB9Owogc3RydWN0IGJvb3Rmc19tZXRhZGF0YSB7
Ci0gICAgdWludDY0X3Qgc2l6ZTsKLSAgICB1aW50NjRfdCBvZmZzZXQ7Ci0gICAgLy8gVGhlIGZp
bGUncyB0eXBlLiBDYW4gYmUgInN5bWxpbmsiIG9yICJvdGhlciIuIEEgZGlyZWN0b3J5IGlzIGFu
ICJvdGhlciIKLSAgICAvLyBmaWxlIHdpdGggaXRzIG5hbWUgZW5kaW5nIHdpdGggYSAiLyIgKGFu
ZCBubyBjb250ZW50KS4KLSAgICBib290ZnNfZmlsZV90eXBlIHR5cGU7Ci0gICAgLy8gbmFtZSBt
dXN0IGVuZCB3aXRoIGEgbnVsbC4gRm9yIHN5bWxpbmsgZmlsZXMsIHRoZSBjb250ZW50IG11c3Qg
ZW5kCi0gICAgLy8gd2l0aCBhIG51bGwgYXMgd2VsbC4KLSAgICBjaGFyIG5hbWVbQk9PVEZTX1BB
VEhfTUFYXTsKKwl1aW50NjRfdCBzaXplOworCXVpbnQ2NF90IG9mZnNldDsKKwkvLyBUaGUgZmls
ZSdzIHR5cGUuIENhbiBiZSAic3ltbGluayIgb3IgIm90aGVyIi4gQSBkaXJlY3RvcnkgaXMgYW4g
Im90aGVyIgorCS8vIGZpbGUgd2l0aCBpdHMgbmFtZSBlbmRpbmcgd2l0aCBhICIvIiAoYW5kIG5v
IGNvbnRlbnQpLgorCWJvb3Rmc19maWxlX3R5cGUgdHlwZTsKKwkvLyBuYW1lIG11c3QgZW5kIHdp
dGggYSBudWxsLiBGb3Igc3ltbGluayBmaWxlcywgdGhlIGNvbnRlbnQgbXVzdCBlbmQKKwkvLyB3
aXRoIGEgbnVsbCBhcyB3ZWxsLgorCWNoYXIgbmFtZVtCT09URlNfUEFUSF9NQVhdOwogfTsKIAog
ZXh0ZXJuIGNoYXIgYm9vdGZzX3N0YXJ0OwpAQCAtMjEzNSwyMjUgKzIxMzUsMjI1IEBAIGV4dGVy
biBjaGFyIGJvb3Rmc19zdGFydDsKIGludCByYW1mc19zZXRfZmlsZV9kYXRhKHN0cnVjdCB2bm9k
ZSAqdnAsIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBzaXplKTsKIHZvaWQgdW5wYWNrX2Jvb3Rm
cyh2b2lkKQogewotICAgIHN0cnVjdCBib290ZnNfbWV0YWRhdGEgKm1kID0gKHN0cnVjdCBib290
ZnNfbWV0YWRhdGEgKikmYm9vdGZzX3N0YXJ0OwotICAgIGludCBmZCwgaTsKLQotICAgIGZvciAo
aSA9IDA7IG1kW2ldLm5hbWVbMF07IGkrKykgewotICAgICAgICBpbnQgcmV0OwotICAgICAgICBj
aGFyICpwOwotCi0gICAgICAgIC8vIG1rZGlyKCkgZGlyZWN0b3JpZXMgbmVlZGVkIGZvciB0aGlz
IHBhdGggbmFtZSwgYXMgbmVjZXNzYXJ5Ci0gICAgICAgIGNoYXIgdG1wW0JPT1RGU19QQVRIX01B
WF07Ci0gICAgICAgIHN0cmxjcHkodG1wLCBtZFtpXS5uYW1lLCBCT09URlNfUEFUSF9NQVgpOwot
ICAgICAgICBmb3IgKHAgPSB0bXA7ICpwOyArK3ApIHsKLSAgICAgICAgICAgIGlmICgqcCA9PSAn
LycpIHsKLSAgICAgICAgICAgICAgICAqcCA9ICdcMCc7Ci0gICAgICAgICAgICAgICAgbWtkaXIo
dG1wLCAwNjY2KTsgIC8vIHNpbGVudGx5IGlnbm9yZSBlcnJvcnMgYW5kIGV4aXN0aW5nIGRpcnMK
LSAgICAgICAgICAgICAgICAqcCA9ICcvJzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0g
ICAgICAgIGlmIChtZFtpXS50eXBlID09IGJvb3Rmc19maWxlX3R5cGU6OnN5bWxpbmspIHsKLSAg
ICAgICAgICAgIC8vIFRoaXMgaXMgYSBzeW1ib2xpYyBsaW5rIHJlY29yZC4gVGhlIGZpbGUncyBj
b250ZW50IGlzIHRoZQotICAgICAgICAgICAgLy8gdGFyZ2V0IHBhdGgsIGFuZCB3ZSBhc3N1bWUg
ZW5kcyB3aXRoIGEgbnVsbC4KLSAgICAgICAgICAgIGlmIChzeW1saW5rKCZib290ZnNfc3RhcnQg
KyBtZFtpXS5vZmZzZXQsIG1kW2ldLm5hbWUpICE9IDApIHsKLSAgICAgICAgICAgICAgICBrcHJp
bnRmKCJjb3VsZG4ndCBzeW1saW5rICVzOiAlZFxuIiwgbWRbaV0ubmFtZSwgZXJybm8pOwotICAg
ICAgICAgICAgICAgIHN5c19wYW5pYygidW5wYWNrX2Jvb3RmcyBmYWlsZWQiKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIGlmICgqKHAt
MSkgPT0gJy8nICYmIG1kW2ldLnNpemUgPT0gMCkgewotICAgICAgICAgICAgLy8gVGhpcyBpcyBk
aXJlY3RvcnkgcmVjb3JkLiBOb3RoaW5nIGVsc2UgdG8gZG8KLSAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICB9Ci0KLSAgICAgICAgZmQgPSBjcmVhdChtZFtpXS5uYW1lLCAwNjY2KTsKLSAg
ICAgICAgaWYgKGZkIDwgMCkgewotICAgICAgICAgICAga3ByaW50ZigiY291bGRuJ3QgY3JlYXRl
ICVzOiAlZFxuIiwKLSAgICAgICAgICAgICAgICAgICAgbWRbaV0ubmFtZSwgZXJybm8pOwotICAg
ICAgICAgICAgc3lzX3BhbmljKCJ1bnBhY2tfYm9vdGZzIGZhaWxlZCIpOwotICAgICAgICB9Ci0K
LSAgICAgICAgc3RydWN0IGZpbGUgKmZwOwotICAgICAgICBpbnQgZXJyb3IgPSBmZ2V0KGZkLCAm
ZnApOwotICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAgIGtwcmludGYoImNvdWxkbid0
IGZnZXQgJXM6ICVkXG4iLAotICAgICAgICAgICAgICAgICAgICBtZFtpXS5uYW1lLCBlcnJvcik7
Ci0gICAgICAgICAgICBzeXNfcGFuaWMoInVucGFja19ib290ZnMgZmFpbGVkIik7Ci0gICAgICAg
IH0KLQotICAgICAgICBzdHJ1Y3Qgdm5vZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOwot
ICAgICAgICByZXQgPSByYW1mc19zZXRfZmlsZV9kYXRhKHZwLCAmYm9vdGZzX3N0YXJ0ICsgbWRb
aV0ub2Zmc2V0LCBtZFtpXS5zaXplKTsKLSAgICAgICAgaWYgKHJldCkgewotICAgICAgICAgICAg
a3ByaW50ZigicmFtZnNfc2V0X2ZpbGVfZGF0YSBmYWlsZWQsIHJldCA9ICVkXG4iLCByZXQpOwot
ICAgICAgICAgICAgc3lzX3BhbmljKCJ1bnBhY2tfYm9vdGZzIGZhaWxlZCIpOwotICAgICAgICB9
Ci0KLSAgICAgICAgZmRyb3AoZnApOwotICAgICAgICBjbG9zZShmZCk7Ci0gICAgfQorCXN0cnVj
dCBib290ZnNfbWV0YWRhdGEgKm1kID0gKHN0cnVjdCBib290ZnNfbWV0YWRhdGEgKikmYm9vdGZz
X3N0YXJ0OworCWludCBmZCwgaTsKKworCWZvciAoaSA9IDA7IG1kW2ldLm5hbWVbMF07IGkrKykg
eworCQlpbnQgcmV0OworCQljaGFyICpwOworCisJCS8vIG1rZGlyKCkgZGlyZWN0b3JpZXMgbmVl
ZGVkIGZvciB0aGlzIHBhdGggbmFtZSwgYXMgbmVjZXNzYXJ5CisJCWNoYXIgdG1wW0JPT1RGU19Q
QVRIX01BWF07CisJCXN0cmxjcHkodG1wLCBtZFtpXS5uYW1lLCBCT09URlNfUEFUSF9NQVgpOwor
CQlmb3IgKHAgPSB0bXA7ICpwOyArK3ApIHsKKwkJCWlmICgqcCA9PSAnLycpIHsKKwkJCQkqcCA9
ICdcMCc7CisJCQkJbWtkaXIodG1wLCAwNjY2KTsgIC8vIHNpbGVudGx5IGlnbm9yZSBlcnJvcnMg
YW5kIGV4aXN0aW5nIGRpcnMKKwkJCQkqcCA9ICcvJzsKKwkJCX0KKwkJfQorCisJCWlmIChtZFtp
XS50eXBlID09IGJvb3Rmc19maWxlX3R5cGU6OnN5bWxpbmspIHsKKwkJCS8vIFRoaXMgaXMgYSBz
eW1ib2xpYyBsaW5rIHJlY29yZC4gVGhlIGZpbGUncyBjb250ZW50IGlzIHRoZQorCQkJLy8gdGFy
Z2V0IHBhdGgsIGFuZCB3ZSBhc3N1bWUgZW5kcyB3aXRoIGEgbnVsbC4KKwkJCWlmIChzeW1saW5r
KCZib290ZnNfc3RhcnQgKyBtZFtpXS5vZmZzZXQsIG1kW2ldLm5hbWUpICE9IDApIHsKKwkJCQlr
cHJpbnRmKCJjb3VsZG4ndCBzeW1saW5rICVzOiAlZFxuIiwgbWRbaV0ubmFtZSwgZXJybm8pOwor
CQkJCXN5c19wYW5pYygidW5wYWNrX2Jvb3RmcyBmYWlsZWQiKTsKKwkJCX0KKwkJCWNvbnRpbnVl
OworCQl9CisJCWlmICgqKHAtMSkgPT0gJy8nICYmIG1kW2ldLnNpemUgPT0gMCkgeworCQkJLy8g
VGhpcyBpcyBkaXJlY3RvcnkgcmVjb3JkLiBOb3RoaW5nIGVsc2UgdG8gZG8KKwkJCWNvbnRpbnVl
OworCQl9CisKKwkJZmQgPSBjcmVhdChtZFtpXS5uYW1lLCAwNjY2KTsKKwkJaWYgKGZkIDwgMCkg
eworCQkJa3ByaW50ZigiY291bGRuJ3QgY3JlYXRlICVzOiAlZFxuIiwKKwkJCQkJbWRbaV0ubmFt
ZSwgZXJybm8pOworCQkJc3lzX3BhbmljKCJ1bnBhY2tfYm9vdGZzIGZhaWxlZCIpOworCQl9CisK
KwkJc3RydWN0IGZpbGUgKmZwOworCQlpbnQgZXJyb3IgPSBmZ2V0KGZkLCAmZnApOworCQlpZiAo
ZXJyb3IpIHsKKwkJCWtwcmludGYoImNvdWxkbid0IGZnZXQgJXM6ICVkXG4iLAorCQkJCQltZFtp
XS5uYW1lLCBlcnJvcik7CisJCQlzeXNfcGFuaWMoInVucGFja19ib290ZnMgZmFpbGVkIik7CisJ
CX0KKworCQlzdHJ1Y3Qgdm5vZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOworCQlyZXQg
PSByYW1mc19zZXRfZmlsZV9kYXRhKHZwLCAmYm9vdGZzX3N0YXJ0ICsgbWRbaV0ub2Zmc2V0LCBt
ZFtpXS5zaXplKTsKKwkJaWYgKHJldCkgeworCQkJa3ByaW50ZigicmFtZnNfc2V0X2ZpbGVfZGF0
YSBmYWlsZWQsIHJldCA9ICVkXG4iLCByZXQpOworCQkJc3lzX3BhbmljKCJ1bnBhY2tfYm9vdGZz
IGZhaWxlZCIpOworCQl9CisKKwkJZmRyb3AoZnApOworCQljbG9zZShmZCk7CisJfQogfQogCiB2
b2lkIG1vdW50X3Jvb3Rmcyh2b2lkKQogewotICAgIGludCByZXQ7CisJaW50IHJldDsKIAotICAg
IHJldCA9IHN5c19tb3VudCgiIiwgIi8iLCAicmFtZnMiLCAwLCBudWxscHRyKTsKLSAgICBpZiAo
cmV0KQotICAgICAgICBrcHJpbnRmKCJmYWlsZWQgdG8gbW91bnQgcm9vdGZzLCBlcnJvciA9ICVz
XG4iLCBzdHJlcnJvcihyZXQpKTsKKwlyZXQgPSBzeXNfbW91bnQoIiIsICIvIiwgInJhbWZzIiwg
MCwgbnVsbHB0cik7CisJaWYgKHJldCkKKwkJa3ByaW50ZigiZmFpbGVkIHRvIG1vdW50IHJvb3Rm
cywgZXJyb3IgPSAlc1xuIiwgc3RyZXJyb3IocmV0KSk7CiAKLSAgICBpZiAobWtkaXIoIi9kZXYi
LCAwNzU1KSA8IDApCi0gICAgICAgIGtwcmludGYoImZhaWxlZCB0byBjcmVhdGUgL2RldiwgZXJy
b3IgPSAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKKwlpZiAobWtkaXIoIi9kZXYiLCAwNzU1KSA8
IDApCisJCWtwcmludGYoImZhaWxlZCB0byBjcmVhdGUgL2RldiwgZXJyb3IgPSAlc1xuIiwgc3Ry
ZXJyb3IoZXJybm8pKTsKIAotICAgIHJldCA9IHN5c19tb3VudCgiIiwgIi9kZXYiLCAiZGV2ZnMi
LCAwLCBudWxscHRyKTsKLSAgICBpZiAocmV0KQotICAgICAgICBrcHJpbnRmKCJmYWlsZWQgdG8g
bW91bnQgZGV2ZnMsIGVycm9yID0gJXNcbiIsIHN0cmVycm9yKHJldCkpOworCXJldCA9IHN5c19t
b3VudCgiIiwgIi9kZXYiLCAiZGV2ZnMiLCAwLCBudWxscHRyKTsKKwlpZiAocmV0KQorCQlrcHJp
bnRmKCJmYWlsZWQgdG8gbW91bnQgZGV2ZnMsIGVycm9yID0gJXNcbiIsIHN0cmVycm9yKHJldCkp
OwogfQogCiBleHRlcm4gIkMiCiBpbnQgbm1vdW50KHN0cnVjdCBpb3ZlYyAqaW92LCB1bnNpZ25l
ZCBuaW92LCBpbnQgZmxhZ3MpCiB7Ci0gICAgc3RydWN0IGFyZ3MgewotICAgICAgICBjaGFyKiBm
c3R5cGUgPSBudWxscHRyOwotICAgICAgICBjaGFyKiBmc3BhdGggPSBudWxscHRyOwotICAgICAg
ICBjaGFyKiBmcm9tID0gbnVsbHB0cjsKLSAgICB9OwotICAgIHN0YXRpYyB1bm9yZGVyZWRfbWFw
PHN0cmluZywgY2hhciogYXJnczo6Kj4gYXJnbWFwIHsKLSAgICAgICAgeyAiZnN0eXBlIiwgJmFy
Z3M6OmZzdHlwZSB9LAotICAgICAgICB7ICJmc3BhdGgiLCAmYXJnczo6ZnNwYXRoIH0sCi0gICAg
ICAgIHsgImZyb20iLCAmYXJnczo6ZnJvbSB9LAotICAgIH07Ci0gICAgYXJncyBhOwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbmlvdjsgaSArPSAyKSB7Ci0gICAgICAgIHN0ZDo6c3RyaW5n
IHMoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGlvdltpXS5pb3ZfYmFzZSkpOwotICAgICAgICBp
ZiAoYXJnbWFwLmNvdW50KHMpKSB7Ci0gICAgICAgICAgICBhLiooYXJnbWFwW3NdKSA9IHN0YXRp
Y19jYXN0PGNoYXIqPihpb3ZbaSsxXS5pb3ZfYmFzZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAg
cmV0dXJuIHN5c19tb3VudChhLmZyb20sIGEuZnNwYXRoLCBhLmZzdHlwZSwgZmxhZ3MsIG51bGxw
dHIpOworCXN0cnVjdCBhcmdzIHsKKwkJY2hhciogZnN0eXBlID0gbnVsbHB0cjsKKwkJY2hhciog
ZnNwYXRoID0gbnVsbHB0cjsKKwkJY2hhciogZnJvbSA9IG51bGxwdHI7CisJfTsKKwlzdGF0aWMg
dW5vcmRlcmVkX21hcDxzdHJpbmcsIGNoYXIqIGFyZ3M6Oio+IGFyZ21hcCB7CisJCXsgImZzdHlw
ZSIsICZhcmdzOjpmc3R5cGUgfSwKKwkJeyAiZnNwYXRoIiwgJmFyZ3M6OmZzcGF0aCB9LAorCQl7
ICJmcm9tIiwgJmFyZ3M6OmZyb20gfSwKKwl9OworCWFyZ3MgYTsKKwlmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG5pb3Y7IGkgKz0gMikgeworCQlzdGQ6OnN0cmluZyBzKHN0YXRpY19jYXN0PGNvbnN0
IGNoYXIqPihpb3ZbaV0uaW92X2Jhc2UpKTsKKwkJaWYgKGFyZ21hcC5jb3VudChzKSkgeworCQkJ
YS4qKGFyZ21hcFtzXSkgPSBzdGF0aWNfY2FzdDxjaGFyKj4oaW92W2krMV0uaW92X2Jhc2UpOwor
CQl9CisJfQorCXJldHVybiBzeXNfbW91bnQoYS5mcm9tLCBhLmZzcGF0aCwgYS5mc3R5cGUsIGZs
YWdzLCBudWxscHRyKTsKIH0KIAogc3RhdGljIHZvaWQgaW1wb3J0X2V4dHJhX3pmc19wb29scyh2
b2lkKQogewotICAgIHN0cnVjdCBzdGF0IHN0OwotICAgIGludCByZXQ7CisJc3RydWN0IHN0YXQg
c3Q7CisJaW50IHJldDsKIAotICAgIC8vIFRoZSBmaWxlICcvZXRjL21udHRhYicgaXMgYSBMaWJa
RlMgcmVxdWlyZW1lbnQgYW5kIHdpbGwgbm90Ci0gICAgLy8gZXhpc3QgZHVyaW5nIGNwaW9kIHBo
YXNlLiBUaGUgZnVuY3Rpb25hbGl0eSBwcm92aWRlZCBieSB0aGlzCi0gICAgLy8gZnVuY3Rpb24g
aXNuJ3QgbmVlZGVkIGR1cmluZyB0aGF0IHBoYXNlLCBzbyBsZXQncyBza2lwIGl0LgotICAgIGlm
IChzdGF0KCIvZXRjL21udHRhYiIgLCAmc3QpICE9IDApIHsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KKwkvLyBUaGUgZmlsZSAnL2V0Yy9tbnR0YWInIGlzIGEgTGliWkZTIHJlcXVpcmVtZW50IGFu
ZCB3aWxsIG5vdAorCS8vIGV4aXN0IGR1cmluZyBjcGlvZCBwaGFzZS4gVGhlIGZ1bmN0aW9uYWxp
dHkgcHJvdmlkZWQgYnkgdGhpcworCS8vIGZ1bmN0aW9uIGlzbid0IG5lZWRlZCBkdXJpbmcgdGhh
dCBwaGFzZSwgc28gbGV0J3Mgc2tpcCBpdC4KKwlpZiAoc3RhdCgiL2V0Yy9tbnR0YWIiICwgJnN0
KSAhPSAwKSB7CisJCXJldHVybjsKKwl9CiAKLSAgICAvLyBJbXBvcnQgZXh0cmEgcG9vbHMgbW91
bnRpbmcgZGF0YXNldHMgdGhlcmUgY29udGFpbmVkLgotICAgIC8vIERhdGFzZXRzIGZyb20gb3N2
IHBvb2wgd2lsbCBub3QgYmUgbW91bnRlZCBoZXJlLgotICAgIGlmIChhY2Nlc3MoInpwb29sLnNv
IiwgWF9PSykgIT0gMCkgewotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIHZlY3RvcjxzdHJp
bmc+IHpwb29sX2FyZ3MgPSB7Inpwb29sIiwgImltcG9ydCIsICItZiIsICItYSIgfTsKLSAgICBh
dXRvIG9rID0gb3N2OjpydW4oInpwb29sLnNvIiwgenBvb2xfYXJncywgJnJldCk7Ci0gICAgYXNz
ZXJ0KG9rKTsKKwkvLyBJbXBvcnQgZXh0cmEgcG9vbHMgbW91bnRpbmcgZGF0YXNldHMgdGhlcmUg
Y29udGFpbmVkLgorCS8vIERhdGFzZXRzIGZyb20gb3N2IHBvb2wgd2lsbCBub3QgYmUgbW91bnRl
ZCBoZXJlLgorCWlmIChhY2Nlc3MoInpwb29sLnNvIiwgWF9PSykgIT0gMCkgeworCQlyZXR1cm47
CisJfQorCXZlY3RvcjxzdHJpbmc+IHpwb29sX2FyZ3MgPSB7Inpwb29sIiwgImltcG9ydCIsICIt
ZiIsICItYSIgfTsKKwlhdXRvIG9rID0gb3N2OjpydW4oInpwb29sLnNvIiwgenBvb2xfYXJncywg
JnJldCk7CisJYXNzZXJ0KG9rKTsKIAotICAgIGlmICghcmV0KSB7Ci0gICAgICAgIGRlYnVnKCJ6
ZnM6IGV4dHJhIFpGUyBwb29sKHMpIGZvdW5kLlxuIik7Ci0gICAgfQorCWlmICghcmV0KSB7CisJ
CWRlYnVnKCJ6ZnM6IGV4dHJhIFpGUyBwb29sKHMpIGZvdW5kLlxuIik7CisJfQogfQogCiB2b2lk
IHBpdm90X3Jvb3Rmcyhjb25zdCBjaGFyKiBwYXRoKQogewotICAgIGludCByZXQgPSBzeXNfcGl2
b3Rfcm9vdChwYXRoLCAiLyIpOwotICAgIGlmIChyZXQpCi0gICAgICAgIGtwcmludGYoImZhaWxl
ZCB0byBwaXZvdCByb290LCBlcnJvciA9ICVzXG4iLCBzdHJlcnJvcihyZXQpKTsKLQotICAgIGF1
dG8gZW50ID0gc2V0bW50ZW50KCIvZXRjL2ZzdGFiIiwgInIiKTsKLSAgICBpZiAoIWVudCkgewot
ICAgICAgICByZXR1cm47Ci0gICAgfQorCWludCByZXQgPSBzeXNfcGl2b3Rfcm9vdChwYXRoLCAi
LyIpOworCWlmIChyZXQpCisJCWtwcmludGYoImZhaWxlZCB0byBwaXZvdCByb290LCBlcnJvciA9
ICVzXG4iLCBzdHJlcnJvcihyZXQpKTsKIAotICAgIHN0cnVjdCBtbnRlbnQgKm0gPSBudWxscHRy
OwotICAgIHdoaWxlICgobSA9IGdldG1udGVudChlbnQpKSAhPSBudWxscHRyKSB7Ci0gICAgICAg
IGlmICghc3RyY21wKG0tPm1udF9kaXIsICIvIikpIHsKLSAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICB9Ci0KLSAgICAgICAgaWYgKChtLT5tbnRfb3B0cyAhPSBudWxscHRyKSAmJiBzdHJj
bXAobS0+bW50X29wdHMsIE1OVE9QVF9ERUZBVUxUUykpIHsKLSAgICAgICAgICAgIHByaW50Zigi
V2FybmluZzogb3B0cyAlcywgaWdub3JlZCBmb3IgZnMgJXNcbiIsIG0tPm1udF9vcHRzLCBtLT5t
bnRfdHlwZSk7Ci0gICAgICAgIH0KKwlhdXRvIGVudCA9IHNldG1udGVudCgiL2V0Yy9mc3RhYiIs
ICJyIik7CisJaWYgKCFlbnQpIHsKKwkJcmV0dXJuOworCX0KIAotICAgICAgICAvLyBGSVhNRTog
UmlnaHQgbm93LCBpZ25vcmluZyBtbnRvcHMuIEluIHRoZSBmdXR1cmUgd2UgbWF5IGhhdmUgYW4g
b3B0aW9uIHBhcnNlcgotICAgICAgICByZXQgPSBzeXNfbW91bnQobS0+bW50X2ZzbmFtZSwgbS0+
bW50X2RpciwgbS0+bW50X3R5cGUsIDAsIG51bGxwdHIpOwotICAgICAgICBpZiAocmV0KSB7Ci0g
ICAgICAgICAgICBwcmludGYoImZhaWxlZCB0byBtb3VudCAlcywgZXJyb3IgPSAlc1xuIiwgbS0+
bW50X3R5cGUsIHN0cmVycm9yKHJldCkpOwotICAgICAgICB9Ci0gICAgfQotICAgIGVuZG1udGVu
dChlbnQpOworCXN0cnVjdCBtbnRlbnQgKm0gPSBudWxscHRyOworCXdoaWxlICgobSA9IGdldG1u
dGVudChlbnQpKSAhPSBudWxscHRyKSB7CisJCWlmICghc3RyY21wKG0tPm1udF9kaXIsICIvIikp
IHsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJaWYgKChtLT5tbnRfb3B0cyAhPSBudWxscHRyKSAm
JiBzdHJjbXAobS0+bW50X29wdHMsIE1OVE9QVF9ERUZBVUxUUykpIHsKKwkJCXByaW50ZigiV2Fy
bmluZzogb3B0cyAlcywgaWdub3JlZCBmb3IgZnMgJXNcbiIsIG0tPm1udF9vcHRzLCBtLT5tbnRf
dHlwZSk7CisJCX0KKworCQkvLyBGSVhNRTogUmlnaHQgbm93LCBpZ25vcmluZyBtbnRvcHMuIElu
IHRoZSBmdXR1cmUgd2UgbWF5IGhhdmUgYW4gb3B0aW9uIHBhcnNlcgorCQlyZXQgPSBzeXNfbW91
bnQobS0+bW50X2ZzbmFtZSwgbS0+bW50X2RpciwgbS0+bW50X3R5cGUsIDAsIG51bGxwdHIpOwor
CQlpZiAocmV0KSB7CisJCQlwcmludGYoImZhaWxlZCB0byBtb3VudCAlcywgZXJyb3IgPSAlc1xu
IiwgbS0+bW50X3R5cGUsIHN0cmVycm9yKHJldCkpOworCQl9CisJfQorCWVuZG1udGVudChlbnQp
OwogfQogCiBleHRlcm4gIkMiIHZvaWQgdW5tb3VudF9kZXZmcygpCiB7Ci0gICAgaW50IHJldCA9
IHN5c191bW91bnQoIi9kZXYiKTsKLSAgICBpZiAocmV0KQotICAgICAgICBrcHJpbnRmKCJmYWls
ZWQgdG8gdW5tb3VudCAvZGV2LCBlcnJvciA9ICVzXG4iLCBzdHJlcnJvcihyZXQpKTsKKwlpbnQg
cmV0ID0gc3lzX3Vtb3VudCgiL2RldiIpOworCWlmIChyZXQpCisJCWtwcmludGYoImZhaWxlZCB0
byB1bm1vdW50IC9kZXYsIGVycm9yID0gJXNcbiIsIHN0cmVycm9yKHJldCkpOwogfQogCiBleHRl
cm4gIkMiIGludCBtb3VudF9yb2ZzX3Jvb3Rmcyhib29sIHBpdm90X3Jvb3QpCiB7Ci0gICAgaW50
IHJldDsKKwlpbnQgcmV0OwogCi0gICAgaWYgKG1rZGlyKCIvcm9mcyIsIDA3NTUpIDwgMCkKLSAg
ICAgICAga3ByaW50ZigiZmFpbGVkIHRvIGNyZWF0ZSAvcm9mcywgZXJyb3IgPSAlc1xuIiwgc3Ry
ZXJyb3IoZXJybm8pKTsKKwlpZiAobWtkaXIoIi9yb2ZzIiwgMDc1NSkgPCAwKQorCQlrcHJpbnRm
KCJmYWlsZWQgdG8gY3JlYXRlIC9yb2ZzLCBlcnJvciA9ICVzXG4iLCBzdHJlcnJvcihlcnJubykp
OwogCi0gICAgcmV0ID0gc3lzX21vdW50KCIvZGV2L3ZibGswLjEiLCAiL3JvZnMiLCAicm9mcyIs
IE1OVF9SRE9OTFksIDApOworCXJldCA9IHN5c19tb3VudCgiL2Rldi92YmxrMC4xIiwgIi9yb2Zz
IiwgInJvZnMiLCBNTlRfUkRPTkxZLCAwKTsKIAotICAgIGlmIChyZXQpIHsKLSAgICAgICAga3By
aW50ZigiZmFpbGVkIHRvIG1vdW50IC9yb2ZzLCBlcnJvciA9ICVzXG4iLCBzdHJlcnJvcihyZXQp
KTsKLSAgICAgICAgcm1kaXIoIi9yb2ZzIik7Ci0gICAgICAgIHJldHVybiByZXQ7Ci0gICAgfQor
CWlmIChyZXQpIHsKKwkJa3ByaW50ZigiZmFpbGVkIHRvIG1vdW50IC9yb2ZzLCBlcnJvciA9ICVz
XG4iLCBzdHJlcnJvcihyZXQpKTsKKwkJcm1kaXIoIi9yb2ZzIik7CisJCXJldHVybiByZXQ7CisJ
fQogCi0gICAgaWYgKHBpdm90X3Jvb3QpIHsKLSAgICAgICAgcGl2b3Rfcm9vdGZzKCIvcm9mcyIp
OwotICAgIH0KKwlpZiAocGl2b3Rfcm9vdCkgeworCQlwaXZvdF9yb290ZnMoIi9yb2ZzIik7CisJ
fQogCi0gICAgcmV0dXJuIDA7CisJcmV0dXJuIDA7CiB9CiAKIGV4dGVybiAiQyIgdm9pZCBtb3Vu
dF96ZnNfcm9vdGZzKGJvb2wgcGl2b3Rfcm9vdCkKIHsKLSAgICBpZiAobWtkaXIoIi96ZnMiLCAw
NzU1KSA8IDApCi0gICAgICAgIGtwcmludGYoImZhaWxlZCB0byBjcmVhdGUgL3pmcywgZXJyb3Ig
PSAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKKwlpZiAobWtkaXIoIi96ZnMiLCAwNzU1KSA8IDAp
CisJCWtwcmludGYoImZhaWxlZCB0byBjcmVhdGUgL3pmcywgZXJyb3IgPSAlc1xuIiwgc3RyZXJy
b3IoZXJybm8pKTsKIAotICAgIGludCByZXQgPSBzeXNfbW91bnQoIi9kZXYvdmJsazAuMSIsICIv
emZzIiwgInpmcyIsIDAsICh2b2lkICopIm9zdi96ZnMiKTsKKwlpbnQgcmV0ID0gc3lzX21vdW50
KCIvZGV2L3ZibGswLjEiLCAiL3pmcyIsICJ6ZnMiLCAwLCAodm9pZCAqKSJvc3YvemZzIik7CiAK
LSAgICBpZiAocmV0KQotICAgICAgICBrcHJpbnRmKCJmYWlsZWQgdG8gbW91bnQgL3pmcywgZXJy
b3IgPSAlc1xuIiwgc3RyZXJyb3IocmV0KSk7CisJaWYgKHJldCkKKwkJa3ByaW50ZigiZmFpbGVk
IHRvIG1vdW50IC96ZnMsIGVycm9yID0gJXNcbiIsIHN0cmVycm9yKHJldCkpOwogCi0gICAgaWYg
KCFwaXZvdF9yb290KSB7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisJaWYgKCFwaXZvdF9yb290
KSB7CisJCXJldHVybjsKKwl9CiAKLSAgICBwaXZvdF9yb290ZnMoIi96ZnMiKTsKKwlwaXZvdF9y
b290ZnMoIi96ZnMiKTsKIAotICAgIGltcG9ydF9leHRyYV96ZnNfcG9vbHMoKTsKKwlpbXBvcnRf
ZXh0cmFfemZzX3Bvb2xzKCk7CiB9CiAKIGV4dGVybiAiQyIgdm9pZCB1bm1vdW50X3Jvb3Rmcyh2
b2lkKQogewotICAgIGludCByZXQ7CisJaW50IHJldDsKIAotICAgIHN5c191bW91bnQoIi9kZXYi
KTsKKwlzeXNfdW1vdW50KCIvZGV2Iik7CiAKLSAgICByZXQgPSBzeXNfdW1vdW50KCIvcHJvYyIp
OwotICAgIGlmIChyZXQpIHsKLSAgICAgICAga3ByaW50ZigiV2FybmluZzogdW5tb3VudF9yb290
ZnM6IGZhaWxlZCB0byB1bm1vdW50IC9wcm9jLCAiCi0gICAgICAgICAgICAiZXJyb3IgPSAlc1xu
Iiwgc3RyZXJyb3IocmV0KSk7Ci0gICAgfQorCXJldCA9IHN5c191bW91bnQoIi9wcm9jIik7CisJ
aWYgKHJldCkgeworCQlrcHJpbnRmKCJXYXJuaW5nOiB1bm1vdW50X3Jvb3RmczogZmFpbGVkIHRv
IHVubW91bnQgL3Byb2MsICIKKwkJCSJlcnJvciA9ICVzXG4iLCBzdHJlcnJvcihyZXQpKTsKKwl9
CiAKLSAgICByZXQgPSBzeXNfdW1vdW50MigiLyIsIE1OVF9GT1JDRSk7Ci0gICAgaWYgKHJldCkg
ewotICAgICAgICBrcHJpbnRmKCJXYXJuaW5nOiB1bm1vdW50X3Jvb3RmczogZmFpbGVkIHRvIHVu
bW91bnQgLywgIgotICAgICAgICAgICAgImVycm9yID0gJXNcbiIsIHN0cmVycm9yKHJldCkpOwot
ICAgIH0KKwlyZXQgPSBzeXNfdW1vdW50MigiLyIsIE1OVF9GT1JDRSk7CisJaWYgKHJldCkgewor
CQlrcHJpbnRmKCJXYXJuaW5nOiB1bm1vdW50X3Jvb3RmczogZmFpbGVkIHRvIHVubW91bnQgLywg
IgorCQkJImVycm9yID0gJXNcbiIsIHN0cmVycm9yKHJldCkpOworCX0KIH0KIAogZXh0ZXJuICJD
IiB2b2lkIGJpb19pbml0KHZvaWQpOwpAQCAtMjM2NSw0OSArMjM2NSw0OSBAQCBleHRlcm4gIkMi
CiB2b2lkCiB2ZnNfaW5pdCh2b2lkKQogewotICAgIGNvbnN0IHN0cnVjdCB2ZnNzdyAqZnM7Ci0K
LSAgICBiaW9faW5pdCgpOwotICAgIGxvb2t1cF9pbml0KCk7Ci0gICAgdm5vZGVfaW5pdCgpOwot
ICAgIHRhc2tfYWxsb2MoJm1haW5fdGFzayk7Ci0KLSAgICAvKgotICAgICAqIEluaXRpYWxpemUg
ZWFjaCBmaWxlIHN5c3RlbS4KLSAgICAgKi8KLSAgICBmb3IgKGZzID0gdmZzc3c7IGZzLT52c19u
YW1lOyBmcysrKSB7Ci0gICAgICAgIGlmIChmcy0+dnNfaW5pdCkgewotICAgICAgICAgICAgRFBS
SU5URihWRlNEQl9DT1JFLCAoIlZGUzogaW5pdGlhbGl6aW5nICVzXG4iLAotICAgICAgICAgICAg
ICAgICAgICBmcy0+dnNfbmFtZSkpOwotICAgICAgICAgICAgZnMtPnZzX2luaXQoKTsKLSAgICAg
ICAgfQotICAgIH0KLQotICAgIG1vdW50X3Jvb3RmcygpOwotICAgIHVucGFja19ib290ZnMoKTsK
LQotICAgIC8vCWlmIChvcGVuKCIvZGV2L2NvbnNvbGUiLCBPX1JEV1IsIDApICE9IDApCi0gICAg
aWYgKGNvbnNvbGU6Om9wZW4oKSAhPSAwKQotICAgICAgICBrcHJpbnRmKCJmYWlsZWQgdG8gb3Bl
biBjb25zb2xlLCBlcnJvciA9ICVkXG4iLCBlcnJubyk7Ci0gICAgaWYgKGR1cCgwKSAhPSAxKQot
ICAgICAgICBrcHJpbnRmKCJmYWlsZWQgdG8gZHVwIGNvbnNvbGUgKDEpXG4iKTsKLSAgICBpZiAo
ZHVwKDApICE9IDIpCi0gICAgICAgIGtwcmludGYoImZhaWxlZCB0byBkdXAgY29uc29sZSAoMilc
biIpOwotICAgIHZmc19pbml0aWFsaXplZCA9IDE7CisJY29uc3Qgc3RydWN0IHZmc3N3ICpmczsK
KworCWJpb19pbml0KCk7CisJbG9va3VwX2luaXQoKTsKKwl2bm9kZV9pbml0KCk7CisJdGFza19h
bGxvYygmbWFpbl90YXNrKTsKKworCS8qCisJICogSW5pdGlhbGl6ZSBlYWNoIGZpbGUgc3lzdGVt
LgorCSAqLworCWZvciAoZnMgPSB2ZnNzdzsgZnMtPnZzX25hbWU7IGZzKyspIHsKKwkJaWYgKGZz
LT52c19pbml0KSB7CisJCQlEUFJJTlRGKFZGU0RCX0NPUkUsICgiVkZTOiBpbml0aWFsaXppbmcg
JXNcbiIsCisJCQkJCWZzLT52c19uYW1lKSk7CisJCQlmcy0+dnNfaW5pdCgpOworCQl9CisJfQor
CisJbW91bnRfcm9vdGZzKCk7CisJdW5wYWNrX2Jvb3RmcygpOworCisJLy8JaWYgKG9wZW4oIi9k
ZXYvY29uc29sZSIsIE9fUkRXUiwgMCkgIT0gMCkKKwlpZiAoY29uc29sZTo6b3BlbigpICE9IDAp
CisJCWtwcmludGYoImZhaWxlZCB0byBvcGVuIGNvbnNvbGUsIGVycm9yID0gJWRcbiIsIGVycm5v
KTsKKwlpZiAoZHVwKDApICE9IDEpCisJCWtwcmludGYoImZhaWxlZCB0byBkdXAgY29uc29sZSAo
MSlcbiIpOworCWlmIChkdXAoMCkgIT0gMikKKwkJa3ByaW50ZigiZmFpbGVkIHRvIGR1cCBjb25z
b2xlICgyKVxuIik7CisJdmZzX2luaXRpYWxpemVkID0gMTsKIH0KIAogdm9pZCB2ZnNfZXhpdCh2
b2lkKQogewotICAgIC8qIEZyZWUgdXAgbWFpbl90YXNrIChzdG9yZXMgY3dkIGRhdGEpIHJlc291
cmNlcyAqLwotICAgIHJlcGxhY2VfY3dkKG1haW5fdGFzaywgbnVsbHB0ciwgW10oKSB7IHJldHVy
biAwOyB9KTsKLSAgICAvKiBVbm1vdW50IGFsbCBmaWxlIHN5c3RlbXMgKi8KLSAgICB1bm1vdW50
X3Jvb3RmcygpOwotICAgIC8qIEZpbmlzaCB3aXRoIHRoZSBiaW8gbGF5ZXIgKi8KLSAgICBiaW9f
c3luYygpOworCS8qIEZyZWUgdXAgbWFpbl90YXNrIChzdG9yZXMgY3dkIGRhdGEpIHJlc291cmNl
cyAqLworCXJlcGxhY2VfY3dkKG1haW5fdGFzaywgbnVsbHB0ciwgW10oKSB7IHJldHVybiAwOyB9
KTsKKwkvKiBVbm1vdW50IGFsbCBmaWxlIHN5c3RlbXMgKi8KKwl1bm1vdW50X3Jvb3RmcygpOwor
CS8qIEZpbmlzaCB3aXRoIHRoZSBiaW8gbGF5ZXIgKi8KKwliaW9fc3luYygpOwogfQogCiB2b2lk
IHN5c19wYW5pYyhjb25zdCBjaGFyICpzdHIpCiB7Ci0gICAgYWJvcnQoInBhbmljOiAlcyIsIHN0
cik7CisJYWJvcnQoInBhbmljOiAlcyIsIHN0cik7CiB9CiAKZGlmZiAtLWdpdCBhL2xpYi92ZnNj
b3JlL21vdW50LmMgYi9saWIvdmZzY29yZS9tb3VudC5jCmluZGV4IGRhYzRkMDljLi5iNTFiMjdh
NCAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvbW91bnQuYworKysgYi9saWIvdmZzY29yZS9tb3Vu
dC5jCkBAIC02OSwyODcgKzY5LDI4NyBAQCBzdGF0aWMgbXV0ZXggbW91bnRfbG9jazsKIHN0YXRp
YyBjb25zdCBzdHJ1Y3QgdmZzc3cgKgogZnNfZ2V0ZnMoY29uc3QgY2hhciAqbmFtZSkKIHsKLSAg
ICBjb25zdCBzdHJ1Y3QgdmZzc3cgKmZzOwotCi0gICAgZm9yIChmcyA9IHZmc3N3OyBmcy0+dnNf
bmFtZTsgZnMrKykgewotICAgICAgICBpZiAoIXN0cm5jbXAobmFtZSwgZnMtPnZzX25hbWUsIEZT
TUFYTkFNRVMpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGlmICghZnMtPnZzX25h
bWUpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBmczsKKwljb25zdCBzdHJ1
Y3QgdmZzc3cgKmZzOworCisJZm9yIChmcyA9IHZmc3N3OyBmcy0+dnNfbmFtZTsgZnMrKykgewor
CQlpZiAoIXN0cm5jbXAobmFtZSwgZnMtPnZzX25hbWUsIEZTTUFYTkFNRVMpKQorCQkJYnJlYWs7
CisJfQorCWlmICghZnMtPnZzX25hbWUpCisJCXJldHVybiBudWxscHRyOworCXJldHVybiBmczsK
IH0KIAogY29uc3QgY2hhcioKIGZzX2dldGZzbmFtZSh2ZnNvcHMqIG9wcykKIHsKLSAgICBmb3Ig
KGF1dG8gZnMgPSB2ZnNzdzsgZnMtPnZzX25hbWU7IGZzKyspIHsKLSAgICAgICAgaWYgKGZzLT52
c19vcCA9PSBvcHMpIHsKLSAgICAgICAgICAgIHJldHVybiBmcy0+dnNfbmFtZTsKLSAgICAgICAg
fQotICAgIH0KLSAgICBhYm9ydCgpOworCWZvciAoYXV0byBmcyA9IHZmc3N3OyBmcy0+dnNfbmFt
ZTsgZnMrKykgeworCQlpZiAoZnMtPnZzX29wID09IG9wcykgeworCQkJcmV0dXJuIGZzLT52c19u
YW1lOworCQl9CisJfQorCWFib3J0KCk7CiB9CiAKIGludAogc3lzX21vdW50KGNvbnN0IGNoYXIg
KmRldiwgY29uc3QgY2hhciAqZGlyLCBjb25zdCBjaGFyICpmc25hbWUsIGludCBmbGFncywgY29u
c3Qgdm9pZCAqZGF0YSkKIHsKLSAgICBjb25zdCBzdHJ1Y3QgdmZzc3cgKmZzOwotICAgIHN0cnVj
dCBtb3VudCAqbXA7Ci0gICAgc3RydWN0IGRldmljZSAqZGV2aWNlOwotICAgIHN0cnVjdCBkZW50
cnkgKmRwX2NvdmVyZWQ7Ci0gICAgc3RydWN0IHZub2RlICp2cDsKLSAgICBpbnQgZXJyb3I7Ci0K
LSAgICBrcHJpbnRmKCJWRlM6IG1vdW50aW5nICVzIGF0ICVzXG4iLCBmc25hbWUsIGRpcik7Ci0K
LSAgICBpZiAoIWRpciB8fCAqZGlyID09ICdcMCcpCi0gICAgICAgIHJldHVybiBFTk9FTlQ7Ci0K
LSAgICAvKiBGaW5kIGEgZmlsZSBzeXN0ZW0uICovCi0gICAgaWYgKCEoZnMgPSBmc19nZXRmcyhm
c25hbWUpKSkKLSAgICAgICAgcmV0dXJuIEVOT0RFVjsgIC8qIE5vIHN1Y2ggZmlsZSBzeXN0ZW0g
Ki8KLQotICAgIC8qIE9wZW4gZGV2aWNlLiBudWxscHRyIGNhbiBiZSBzcGVjaWZpZWQgYXMgYSBk
ZXZpY2UuICovCi0gICAgLy8gQWxsb3cgZGV2aWNlX29wZW4oKSB0byBmYWlsLCBpbiB3aGljaCBj
YXNlIGRldiBpcyBpbnRlcnByZXRlZAotICAgIC8vIGJ5IHRoZSBmaWxlIHN5c3RlbSBtb3VudCBy
b3V0aW5lIChlLmcgemZzIHBvb2xzKQotICAgIGRldmljZSA9IDA7Ci0gICAgaWYgKGRldiAmJiBz
dHJuY21wKGRldiwgIi9kZXYvIiwgNSkgPT0gMCkKLSAgICAgICAgZGV2aWNlX29wZW4oZGV2ICsg
NSwgRE9fUkRXUiwgJmRldmljZSk7Ci0KLSAgICAvKiBDaGVjayBpZiBkZXZpY2Ugb3IgZGlyZWN0
b3J5IGhhcyBhbHJlYWR5IGJlZW4gbW91bnRlZC4gKi8KLSAgICAvLyBXZSBuZWVkIHRvIGF2b2lk
IHRoZSBzaXR1YXRpb24gd2hlcmUgYWZ0ZXIgd2UgYWxyZWFkeSB2ZXJpZmllZCB0aGF0Ci0gICAg
Ly8gdGhlIG1vdW50IHBvaW50IGlzIGZyZWUsIGJ1dCBiZWZvcmUgd2UgYWN0dWFsbHkgYWRkIGl0
IHRvIG1vdW50X2xpc3QsCi0gICAgLy8gYW5vdGhlciBjb25jdXJyZW50IG1vdW50IGFkZHMgaXQu
IFNvIHdlIHVzZSBhIG5ldyBtdXRleCB0byBlbnN1cmUKLSAgICAvLyB0aGF0IG9ubHkgb25lIHN5
c19tb3VudCgpIHJ1bnMgYXQgYSB0aW1lLiBXZSBjYW5ub3QgcmV1c2UgdGhlIGV4aXN0aW5nCi0g
ICAgLy8gbW91bnRfbG9jayBmb3IgdGhpcyBwdXJwb3NlOiBJZiB3ZSB0YWtlIG1vdW50X2xvY2sg
YW5kIHRoZW4gZG8KLSAgICAvLyBsb29rdXBzLCB0aGlzIGlzIGxvY2sgb3JkZXIgaW52ZXJzaW9u
IGFuZCBjYW4gcmVzdWx0IGluIGRlYWRsb2NrLgotICAgIHN0YXRpYyBtdXRleCBzeXNfbW91bnRf
bG9jazsKLSAgICBTQ09QRV9MT0NLKHN5c19tb3VudF9sb2NrKTsKLSAgICBXSVRIX0xPQ0sobW91
bnRfbG9jaykgewotICAgICAgICBmb3IgKGF1dG8mJiBtcCA6IG1vdW50X2xpc3QpIHsKLSAgICAg
ICAgICAgIGlmICghc3RyY21wKG1wLT5tX3BhdGgsIGRpcikgfHwKLSAgICAgICAgICAgICAgICAo
ZGV2aWNlICYmIG1wLT5tX2RldiA9PSBkZXZpY2UpKSB7Ci0gICAgICAgICAgICAgICAgZXJyb3Ig
PSBFQlVTWTsgIC8qIEFscmVhZHkgbW91bnRlZCAqLwotICAgICAgICAgICAgICAgIGdvdG8gZXJy
MTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICAvKgotICAgICAqIENyZWF0
ZSBWRlMgbW91bnQgZW50cnkuCi0gICAgICovCi0gICAgaWYgKCEobXAgPSBuZXcgbW91bnQpKSB7
Ci0gICAgICAgIGVycm9yID0gRU5PTUVNOwotICAgICAgICBnb3RvIGVycjE7Ci0gICAgfQotICAg
IG1wLT5tX2NvdW50ID0gMDsKLSAgICBtcC0+bV9vcCA9IGZzLT52c19vcDsKLSAgICBtcC0+bV9m
bGFncyA9IGZsYWdzOwotICAgIG1wLT5tX2RldiA9IGRldmljZTsKLSAgICBtcC0+bV9kYXRhID0g
bnVsbHB0cjsKLSAgICBzdHJsY3B5KG1wLT5tX3BhdGgsIGRpciwgc2l6ZW9mKG1wLT5tX3BhdGgp
KTsKLSAgICBzdHJsY3B5KG1wLT5tX3NwZWNpYWwsIGRldiwgc2l6ZW9mKG1wLT5tX3NwZWNpYWwp
KTsKLQotICAgIC8qCi0gICAgICogR2V0IHZub2RlIHRvIGJlIGNvdmVyZWQgaW4gdGhlIHVwcGVy
IGZpbGUgc3lzdGVtLgotICAgICAqLwotICAgIGlmICgqZGlyID09ICcvJyAmJiAqKGRpciArIDEp
ID09ICdcMCcpIHsKLSAgICAgICAgLyogSWdub3JlIGlmIGl0IG1vdW50cyB0byBnbG9iYWwgcm9v
dCBkaXJlY3RvcnkuICovCi0gICAgICAgIGRwX2NvdmVyZWQgPSBudWxscHRyOwotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIGlmICgoZXJyb3IgPSBuYW1laShkaXIsICZkcF9jb3ZlcmVkKSkgIT0gMCkg
ewotCi0gICAgICAgICAgICBlcnJvciA9IEVOT0VOVDsKLSAgICAgICAgICAgIGdvdG8gZXJyMjsK
LSAgICAgICAgfQotICAgICAgICBpZiAoZHBfY292ZXJlZC0+ZF92bm9kZS0+dl90eXBlICE9IFZE
SVIpIHsKLSAgICAgICAgICAgIGVycm9yID0gRU5PVERJUjsKLSAgICAgICAgICAgIGdvdG8gZXJy
MzsKLSAgICAgICAgfQotICAgIH0KLSAgICBtcC0+bV9jb3ZlcmVkID0gZHBfY292ZXJlZDsKLQot
ICAgIC8qCi0gICAgICogQ3JlYXRlIGEgcm9vdCB2bm9kZSBmb3IgdGhpcyBmaWxlIHN5c3RlbS4K
LSAgICAgKi8KLSAgICB2Z2V0KG1wLCAwLCAmdnApOwotICAgIGlmICh2cCA9PSBudWxscHRyKSB7
Ci0gICAgICAgIGVycm9yID0gRU5PTUVNOwotICAgICAgICBnb3RvIGVycjM7Ci0gICAgfQotICAg
IHZwLT52X3R5cGUgPSBWRElSOwotICAgIHZwLT52X2ZsYWdzID0gVlJPT1Q7Ci0gICAgdnAtPnZf
bW9kZSA9IFNfSUZESVIgfCBTX0lSVVNSIHwgU19JV1VTUiB8IFNfSVhVU1I7Ci0KLSAgICBtcC0+
bV9yb290ID0gZGVudHJ5X2FsbG9jKG51bGxwdHIsIHZwLCAiLyIpOwotICAgIGlmICghbXAtPm1f
cm9vdCkgewotICAgICAgICB2cHV0KHZwKTsKLSAgICAgICAgZ290byBlcnIzOwotICAgIH0KLSAg
ICB2cHV0KHZwKTsKLQotICAgIC8qCi0gICAgICogQ2FsbCBhIGZpbGUgc3lzdGVtIHNwZWNpZmlj
IHJvdXRpbmUuCi0gICAgICovCi0gICAgaWYgKChlcnJvciA9IFZGU19NT1VOVChtcCwgZGV2LCBm
bGFncywgZGF0YSkpICE9IDApCi0gICAgICAgIGdvdG8gZXJyNDsKLQotICAgIGlmIChtcC0+bV9m
bGFncyAmIE1OVF9SRE9OTFkpCi0gICAgICAgIHZwLT52X21vZGUgJj1+U19JV1VTUjsKLQotICAg
IC8qCi0gICAgICogSW5zZXJ0IHRvIG1vdW50IGxpc3QKLSAgICAgKi8KLSAgICBXSVRIX0xPQ0so
bW91bnRfbG9jaykgewotICAgICAgICBtb3VudF9saXN0LnB1c2hfYmFjayhtcCk7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIDA7ICAgLyogc3VjY2VzcyAqLworCWNvbnN0IHN0cnVjdCB2ZnNzdyAqZnM7
CisJc3RydWN0IG1vdW50ICptcDsKKwlzdHJ1Y3QgZGV2aWNlICpkZXZpY2U7CisJc3RydWN0IGRl
bnRyeSAqZHBfY292ZXJlZDsKKwlzdHJ1Y3Qgdm5vZGUgKnZwOworCWludCBlcnJvcjsKKworCWtw
cmludGYoIlZGUzogbW91bnRpbmcgJXMgYXQgJXNcbiIsIGZzbmFtZSwgZGlyKTsKKworCWlmICgh
ZGlyIHx8ICpkaXIgPT0gJ1wwJykKKwkJcmV0dXJuIEVOT0VOVDsKKworCS8qIEZpbmQgYSBmaWxl
IHN5c3RlbS4gKi8KKwlpZiAoIShmcyA9IGZzX2dldGZzKGZzbmFtZSkpKQorCQlyZXR1cm4gRU5P
REVWOyAgLyogTm8gc3VjaCBmaWxlIHN5c3RlbSAqLworCisJLyogT3BlbiBkZXZpY2UuIG51bGxw
dHIgY2FuIGJlIHNwZWNpZmllZCBhcyBhIGRldmljZS4gKi8KKwkvLyBBbGxvdyBkZXZpY2Vfb3Bl
bigpIHRvIGZhaWwsIGluIHdoaWNoIGNhc2UgZGV2IGlzIGludGVycHJldGVkCisJLy8gYnkgdGhl
IGZpbGUgc3lzdGVtIG1vdW50IHJvdXRpbmUgKGUuZyB6ZnMgcG9vbHMpCisJZGV2aWNlID0gMDsK
KwlpZiAoZGV2ICYmIHN0cm5jbXAoZGV2LCAiL2Rldi8iLCA1KSA9PSAwKQorCQlkZXZpY2Vfb3Bl
bihkZXYgKyA1LCBET19SRFdSLCAmZGV2aWNlKTsKKworCS8qIENoZWNrIGlmIGRldmljZSBvciBk
aXJlY3RvcnkgaGFzIGFscmVhZHkgYmVlbiBtb3VudGVkLiAqLworCS8vIFdlIG5lZWQgdG8gYXZv
aWQgdGhlIHNpdHVhdGlvbiB3aGVyZSBhZnRlciB3ZSBhbHJlYWR5IHZlcmlmaWVkIHRoYXQKKwkv
LyB0aGUgbW91bnQgcG9pbnQgaXMgZnJlZSwgYnV0IGJlZm9yZSB3ZSBhY3R1YWxseSBhZGQgaXQg
dG8gbW91bnRfbGlzdCwKKwkvLyBhbm90aGVyIGNvbmN1cnJlbnQgbW91bnQgYWRkcyBpdC4gU28g
d2UgdXNlIGEgbmV3IG11dGV4IHRvIGVuc3VyZQorCS8vIHRoYXQgb25seSBvbmUgc3lzX21vdW50
KCkgcnVucyBhdCBhIHRpbWUuIFdlIGNhbm5vdCByZXVzZSB0aGUgZXhpc3RpbmcKKwkvLyBtb3Vu
dF9sb2NrIGZvciB0aGlzIHB1cnBvc2U6IElmIHdlIHRha2UgbW91bnRfbG9jayBhbmQgdGhlbiBk
bworCS8vIGxvb2t1cHMsIHRoaXMgaXMgbG9jayBvcmRlciBpbnZlcnNpb24gYW5kIGNhbiByZXN1
bHQgaW4gZGVhZGxvY2suCisJc3RhdGljIG11dGV4IHN5c19tb3VudF9sb2NrOworCVNDT1BFX0xP
Q0soc3lzX21vdW50X2xvY2spOworCVdJVEhfTE9DSyhtb3VudF9sb2NrKSB7CisJCWZvciAoYXV0
byYmIG1wIDogbW91bnRfbGlzdCkgeworCQkJaWYgKCFzdHJjbXAobXAtPm1fcGF0aCwgZGlyKSB8
fAorCQkJCShkZXZpY2UgJiYgbXAtPm1fZGV2ID09IGRldmljZSkpIHsKKwkJCQllcnJvciA9IEVC
VVNZOyAgLyogQWxyZWFkeSBtb3VudGVkICovCisJCQkJZ290byBlcnIxOworCQkJfQorCQl9CisJ
fQorCS8qCisJICogQ3JlYXRlIFZGUyBtb3VudCBlbnRyeS4KKwkgKi8KKwlpZiAoIShtcCA9IG5l
dyBtb3VudCkpIHsKKwkJZXJyb3IgPSBFTk9NRU07CisJCWdvdG8gZXJyMTsKKwl9CisJbXAtPm1f
Y291bnQgPSAwOworCW1wLT5tX29wID0gZnMtPnZzX29wOworCW1wLT5tX2ZsYWdzID0gZmxhZ3M7
CisJbXAtPm1fZGV2ID0gZGV2aWNlOworCW1wLT5tX2RhdGEgPSBudWxscHRyOworCXN0cmxjcHko
bXAtPm1fcGF0aCwgZGlyLCBzaXplb2YobXAtPm1fcGF0aCkpOworCXN0cmxjcHkobXAtPm1fc3Bl
Y2lhbCwgZGV2LCBzaXplb2YobXAtPm1fc3BlY2lhbCkpOworCisJLyoKKwkgKiBHZXQgdm5vZGUg
dG8gYmUgY292ZXJlZCBpbiB0aGUgdXBwZXIgZmlsZSBzeXN0ZW0uCisJICovCisJaWYgKCpkaXIg
PT0gJy8nICYmICooZGlyICsgMSkgPT0gJ1wwJykgeworCQkvKiBJZ25vcmUgaWYgaXQgbW91bnRz
IHRvIGdsb2JhbCByb290IGRpcmVjdG9yeS4gKi8KKwkJZHBfY292ZXJlZCA9IG51bGxwdHI7CisJ
fSBlbHNlIHsKKwkJaWYgKChlcnJvciA9IG5hbWVpKGRpciwgJmRwX2NvdmVyZWQpKSAhPSAwKSB7
CisKKwkJCWVycm9yID0gRU5PRU5UOworCQkJZ290byBlcnIyOworCQl9CisJCWlmIChkcF9jb3Zl
cmVkLT5kX3Zub2RlLT52X3R5cGUgIT0gVkRJUikgeworCQkJZXJyb3IgPSBFTk9URElSOworCQkJ
Z290byBlcnIzOworCQl9CisJfQorCW1wLT5tX2NvdmVyZWQgPSBkcF9jb3ZlcmVkOworCisJLyoK
KwkgKiBDcmVhdGUgYSByb290IHZub2RlIGZvciB0aGlzIGZpbGUgc3lzdGVtLgorCSAqLworCXZn
ZXQobXAsIDAsICZ2cCk7CisJaWYgKHZwID09IG51bGxwdHIpIHsKKwkJZXJyb3IgPSBFTk9NRU07
CisJCWdvdG8gZXJyMzsKKwl9CisJdnAtPnZfdHlwZSA9IFZESVI7CisJdnAtPnZfZmxhZ3MgPSBW
Uk9PVDsKKwl2cC0+dl9tb2RlID0gU19JRkRJUiB8IFNfSVJVU1IgfCBTX0lXVVNSIHwgU19JWFVT
UjsKKworCW1wLT5tX3Jvb3QgPSBkZW50cnlfYWxsb2MobnVsbHB0ciwgdnAsICIvIik7CisJaWYg
KCFtcC0+bV9yb290KSB7CisJCXZwdXQodnApOworCQlnb3RvIGVycjM7CisJfQorCXZwdXQodnAp
OworCisJLyoKKwkgKiBDYWxsIGEgZmlsZSBzeXN0ZW0gc3BlY2lmaWMgcm91dGluZS4KKwkgKi8K
KwlpZiAoKGVycm9yID0gVkZTX01PVU5UKG1wLCBkZXYsIGZsYWdzLCBkYXRhKSkgIT0gMCkKKwkJ
Z290byBlcnI0OworCisJaWYgKG1wLT5tX2ZsYWdzICYgTU5UX1JET05MWSkKKwkJdnAtPnZfbW9k
ZSAmPX5TX0lXVVNSOworCisJLyoKKwkgKiBJbnNlcnQgdG8gbW91bnQgbGlzdAorCSAqLworCVdJ
VEhfTE9DSyhtb3VudF9sb2NrKSB7CisJCW1vdW50X2xpc3QucHVzaF9iYWNrKG1wKTsKKwl9CisK
KwlyZXR1cm4gMDsgICAvKiBzdWNjZXNzICovCiAgZXJyNDoKLSAgICBkcmVsZShtcC0+bV9yb290
KTsKKwlkcmVsZShtcC0+bV9yb290KTsKICBlcnIzOgotICAgIGlmIChkcF9jb3ZlcmVkKQotICAg
ICAgICBkcmVsZShkcF9jb3ZlcmVkKTsKKwlpZiAoZHBfY292ZXJlZCkKKwkJZHJlbGUoZHBfY292
ZXJlZCk7CiAgZXJyMjoKLSAgICBkZWxldGUgbXA7CisJZGVsZXRlIG1wOwogIGVycjE6Ci0gICAg
aWYgKGRldmljZSkKLSAgICAgICAgZGV2aWNlX2Nsb3NlKGRldmljZSk7CisJaWYgKGRldmljZSkK
KwkJZGV2aWNlX2Nsb3NlKGRldmljZSk7CiAKLSAgICByZXR1cm4gZXJyb3I7CisJcmV0dXJuIGVy
cm9yOwogfQogCiB2b2lkCiByZWxlYXNlX21wX2RlbnRyaWVzKHN0cnVjdCBtb3VudCAqbXApCiB7
Ci0gICAgLyogRGVjcmVtZW50IHJlZmVyZWNlIGNvdW50IG9mIHJvb3Qgdm5vZGUgKi8KLSAgICBp
ZiAobXAtPm1fY292ZXJlZCkgewotICAgICAgICBkcmVsZShtcC0+bV9jb3ZlcmVkKTsKLSAgICB9
CisJLyogRGVjcmVtZW50IHJlZmVyZWNlIGNvdW50IG9mIHJvb3Qgdm5vZGUgKi8KKwlpZiAobXAt
Pm1fY292ZXJlZCkgeworCQlkcmVsZShtcC0+bV9jb3ZlcmVkKTsKKwl9CiAKLSAgICAvKiBSZWxl
YXNlIHJvb3QgZGVudHJ5ICovCi0gICAgZHJlbGUobXAtPm1fcm9vdCk7CisJLyogUmVsZWFzZSBy
b290IGRlbnRyeSAqLworCWRyZWxlKG1wLT5tX3Jvb3QpOwogfQogCiBpbnQKIHN5c191bW91bnQy
KGNvbnN0IGNoYXIgKnBhdGgsIGludCBmbGFncykKIHsKLSAgICBzdHJ1Y3QgbW91bnQgKm1wOwot
ICAgIGludCBlcnJvciwgcGF0aGxlbjsKKwlzdHJ1Y3QgbW91bnQgKm1wOworCWludCBlcnJvciwg
cGF0aGxlbjsKIAotICAgIGtwcmludGYoIlZGUzogdW5tb3VudGluZyAlc1xuIiwgcGF0aCk7CisJ
a3ByaW50ZigiVkZTOiB1bm1vdW50aW5nICVzXG4iLCBwYXRoKTsKIAotICAgIFNDT1BFX0xPQ0so
bW91bnRfbG9jayk7CisJU0NPUEVfTE9DSyhtb3VudF9sb2NrKTsKIAotICAgIHBhdGhsZW4gPSBz
dHJsZW4ocGF0aCk7Ci0gICAgaWYgKHBhdGhsZW4gPj0gTUFYUEFUSExFTikgewotICAgICAgICBl
cnJvciA9IEVOQU1FVE9PTE9ORzsKLSAgICAgICAgZ290byBvdXQ7Ci0gICAgfQorCXBhdGhsZW4g
PSBzdHJsZW4ocGF0aCk7CisJaWYgKHBhdGhsZW4gPj0gTUFYUEFUSExFTikgeworCQllcnJvciA9
IEVOQU1FVE9PTE9ORzsKKwkJZ290byBvdXQ7CisJfQogCi0gICAgLyogR2V0IG1vdW50IGVudHJ5
ICovCi0gICAgZm9yIChhdXRvJiYgdG1wIDogbW91bnRfbGlzdCkgewotICAgICAgICBpZiAoIXN0
cmNtcChwYXRoLCB0bXAtPm1fcGF0aCkpIHsKLSAgICAgICAgICAgIG1wID0gdG1wOwotICAgICAg
ICAgICAgZ290byBmb3VuZDsKLSAgICAgICAgfQotICAgIH0KKwkvKiBHZXQgbW91bnQgZW50cnkg
Ki8KKwlmb3IgKGF1dG8mJiB0bXAgOiBtb3VudF9saXN0KSB7CisJCWlmICghc3RyY21wKHBhdGgs
IHRtcC0+bV9wYXRoKSkgeworCQkJbXAgPSB0bXA7CisJCQlnb3RvIGZvdW5kOworCQl9CisJfQog
Ci0gICAgZXJyb3IgPSBFSU5WQUw7Ci0gICAgZ290byBvdXQ7CisJZXJyb3IgPSBFSU5WQUw7CisJ
Z290byBvdXQ7CiAKIGZvdW5kOgotICAgIC8qCi0gICAgICogUm9vdCBmcyBjYW4gbm90IGJlIHVu
bW91bnRlZC4KLSAgICAgKi8KLSAgICBpZiAobXAtPm1fY292ZXJlZCA9PSBudWxscHRyICYmICEo
ZmxhZ3MgJiBNTlRfRk9SQ0UpKSB7Ci0gICAgICAgIGVycm9yID0gRUlOVkFMOwotICAgICAgICBn
b3RvIG91dDsKLSAgICB9Ci0KLSAgICBpZiAoKGVycm9yID0gVkZTX1VOTU9VTlQobXAsIGZsYWdz
KSkgIT0gMCkKLSAgICAgICAgZ290byBvdXQ7Ci0gICAgbW91bnRfbGlzdC5yZW1vdmUobXApOwor
CS8qCisJICogUm9vdCBmcyBjYW4gbm90IGJlIHVubW91bnRlZC4KKwkgKi8KKwlpZiAobXAtPm1f
Y292ZXJlZCA9PSBudWxscHRyICYmICEoZmxhZ3MgJiBNTlRfRk9SQ0UpKSB7CisJCWVycm9yID0g
RUlOVkFMOworCQlnb3RvIG91dDsKKwl9CisKKwlpZiAoKGVycm9yID0gVkZTX1VOTU9VTlQobXAs
IGZsYWdzKSkgIT0gMCkKKwkJZ290byBvdXQ7CisJbW91bnRfbGlzdC5yZW1vdmUobXApOwogCiAj
aWZkZWYgSEFWRV9CVUZGRVJTCi0gICAgLyogRmx1c2ggYWxsIGJ1ZmZlcnMgKi8KLSAgICBiaW52
YWwobXAtPm1fZGV2KTsKKwkvKiBGbHVzaCBhbGwgYnVmZmVycyAqLworCWJpbnZhbChtcC0+bV9k
ZXYpOwogI2VuZGlmCiAKLSAgICBpZiAobXAtPm1fZGV2KQotICAgICAgICBkZXZpY2VfY2xvc2Uo
bXAtPm1fZGV2KTsKLSAgICBkZWxldGUgbXA7CisJaWYgKG1wLT5tX2RldikKKwkJZGV2aWNlX2Ns
b3NlKG1wLT5tX2Rldik7CisJZGVsZXRlIG1wOwogIG91dDoKLSAgICByZXR1cm4gZXJyb3I7CisJ
cmV0dXJuIGVycm9yOwogfQogCiBpbnQKIHN5c191bW91bnQoY29uc3QgY2hhciAqcGF0aCkKIHsK
LSAgICByZXR1cm4gc3lzX3Vtb3VudDIocGF0aCwgMCk7CisJcmV0dXJuIHN5c191bW91bnQyKHBh
dGgsIDApOwogfQogCiBpbnQKIHN5c19waXZvdF9yb290KGNvbnN0IGNoYXIgKm5ld19yb290LCBj
b25zdCBjaGFyICpwdXRfb2xkKQogewotICAgIHN0cnVjdCBtb3VudCAqbmV3bXAgPSBudWxscHRy
LCAqb2xkbXAgPSBudWxscHRyOwotICAgIGludCBlcnJvcjsKLQotICAgIFdJVEhfTE9DSyhtb3Vu
dF9sb2NrKSB7Ci0gICAgICAgIGZvciAoYXV0byYmIG1wIDogbW91bnRfbGlzdCkgewotICAgICAg
ICAgICAgaWYgKCFzdHJjbXAobXAtPm1fcGF0aCwgbmV3X3Jvb3QpKSB7Ci0gICAgICAgICAgICAg
ICAgbmV3bXAgPSBtcDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICghc3RyY21wKG1w
LT5tX3BhdGgsIHB1dF9vbGQpKSB7Ci0gICAgICAgICAgICAgICAgb2xkbXAgPSBtcDsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoIW5ld21wIHx8ICFvbGRtcCB8fCBuZXdt
cCA9PSBvbGRtcCkgewotICAgICAgICAgICAgcmV0dXJuIEVJTlZBTDsKLSAgICAgICAgfQotICAg
ICAgICBmb3IgKGF1dG8mJiBtcCA6IG1vdW50X2xpc3QpIHsKLSAgICAgICAgICAgIGlmIChtcCA9
PSBuZXdtcCB8fCBtcCA9PSBvbGRtcCkgewotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCFzdHJuY21wKG1wLT5tX3BhdGgsIHB1dF9vbGQs
IHN0cmxlbihwdXRfb2xkKSkpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gRUJVU1k7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKChlcnJvciA9IFZGU19VTk1PVU5UKG9s
ZG1wLCAwKSkgIT0gMCkgewotICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICB9Ci0g
ICAgICAgIG1vdW50X2xpc3QucmVtb3ZlKG9sZG1wKTsKLQotICAgICAgICBuZXdtcC0+bV9yb290
LT5kX3Zub2RlLT52X21vdW50ID0gbmV3bXA7Ci0KLSAgICAgICAgaWYgKG5ld21wLT5tX2NvdmVy
ZWQpIHsKLSAgICAgICAgICAgIGRyZWxlKG5ld21wLT5tX2NvdmVyZWQpOwotICAgICAgICB9Ci0g
ICAgICAgIG5ld21wLT5tX2NvdmVyZWQgPSBudWxscHRyOwotCi0gICAgICAgIGlmIChuZXdtcC0+
bV9yb290LT5kX3BhcmVudCkgewotICAgICAgICAgICAgZHJlbGUobmV3bXAtPm1fcm9vdC0+ZF9w
YXJlbnQpOwotICAgICAgICB9Ci0gICAgICAgIG5ld21wLT5tX3Jvb3QtPmRfcGFyZW50ID0gbnVs
bHB0cjsKLQotICAgICAgICBzdHJsY3B5KG5ld21wLT5tX3BhdGgsICIvIiwgc2l6ZW9mKG5ld21w
LT5tX3BhdGgpKTsKLSAgICB9Ci0gICAgcmV0dXJuIDA7CisJc3RydWN0IG1vdW50ICpuZXdtcCA9
IG51bGxwdHIsICpvbGRtcCA9IG51bGxwdHI7CisJaW50IGVycm9yOworCisJV0lUSF9MT0NLKG1v
dW50X2xvY2spIHsKKwkJZm9yIChhdXRvJiYgbXAgOiBtb3VudF9saXN0KSB7CisJCQlpZiAoIXN0
cmNtcChtcC0+bV9wYXRoLCBuZXdfcm9vdCkpIHsKKwkJCQluZXdtcCA9IG1wOworCQkJfQorCQkJ
aWYgKCFzdHJjbXAobXAtPm1fcGF0aCwgcHV0X29sZCkpIHsKKwkJCQlvbGRtcCA9IG1wOworCQkJ
fQorCQl9CisJCWlmICghbmV3bXAgfHwgIW9sZG1wIHx8IG5ld21wID09IG9sZG1wKSB7CisJCQly
ZXR1cm4gRUlOVkFMOworCQl9CisJCWZvciAoYXV0byYmIG1wIDogbW91bnRfbGlzdCkgeworCQkJ
aWYgKG1wID09IG5ld21wIHx8IG1wID09IG9sZG1wKSB7CisJCQkJY29udGludWU7CisJCQl9CisJ
CQlpZiAoIXN0cm5jbXAobXAtPm1fcGF0aCwgcHV0X29sZCwgc3RybGVuKHB1dF9vbGQpKSkgewor
CQkJCXJldHVybiBFQlVTWTsKKwkJCX0KKwkJfQorCQlpZiAoKGVycm9yID0gVkZTX1VOTU9VTlQo
b2xkbXAsIDApKSAhPSAwKSB7CisJCQlyZXR1cm4gZXJyb3I7CisJCX0KKwkJbW91bnRfbGlzdC5y
ZW1vdmUob2xkbXApOworCisJCW5ld21wLT5tX3Jvb3QtPmRfdm5vZGUtPnZfbW91bnQgPSBuZXdt
cDsKKworCQlpZiAobmV3bXAtPm1fY292ZXJlZCkgeworCQkJZHJlbGUobmV3bXAtPm1fY292ZXJl
ZCk7CisJCX0KKwkJbmV3bXAtPm1fY292ZXJlZCA9IG51bGxwdHI7CisKKwkJaWYgKG5ld21wLT5t
X3Jvb3QtPmRfcGFyZW50KSB7CisJCQlkcmVsZShuZXdtcC0+bV9yb290LT5kX3BhcmVudCk7CisJ
CX0KKwkJbmV3bXAtPm1fcm9vdC0+ZF9wYXJlbnQgPSBudWxscHRyOworCisJCXN0cmxjcHkobmV3
bXAtPm1fcGF0aCwgIi8iLCBzaXplb2YobmV3bXAtPm1fcGF0aCkpOworCX0KKwlyZXR1cm4gMDsK
IH0KIAogaW50CiBzeXNfc3luYyh2b2lkKQogewotICAgIC8qIENhbGwgZWFjaCBtb3VudGVkIGZp
bGUgc3lzdGVtLiAqLwotICAgIFdJVEhfTE9DSyhtb3VudF9sb2NrKSB7Ci0gICAgICAgIGZvciAo
YXV0byYmIG1wIDogbW91bnRfbGlzdCkgewotICAgICAgICAgICAgVkZTX1NZTkMobXApOwotICAg
ICAgICB9Ci0gICAgfQorCS8qIENhbGwgZWFjaCBtb3VudGVkIGZpbGUgc3lzdGVtLiAqLworCVdJ
VEhfTE9DSyhtb3VudF9sb2NrKSB7CisJCWZvciAoYXV0byYmIG1wIDogbW91bnRfbGlzdCkgewor
CQkJVkZTX1NZTkMobXApOworCQl9CisJfQogI2lmZGVmIEhBVkVfQlVGRkVSUwotICAgIGJpb19z
eW5jKCk7CisJYmlvX3N5bmMoKTsKICNlbmRpZgotICAgIHJldHVybiAwOworCXJldHVybiAwOwog
fQogCiAvKgpAQCAtMzYwLDI1ICszNjAsMjUgQEAgc3lzX3N5bmModm9pZCkKIHN0YXRpYyBzaXpl
X3QKIGNvdW50X21hdGNoKGNvbnN0IGNoYXIgKnBhdGgsIGNoYXIgKm1vdW50X3Jvb3QpCiB7Ci0g
ICAgc2l6ZV90IGxlbiA9IDA7CisJc2l6ZV90IGxlbiA9IDA7CiAKLSAgICB3aGlsZSAoKnBhdGgg
JiYgKm1vdW50X3Jvb3QpIHsKLSAgICAgICAgaWYgKCpwYXRoICE9ICptb3VudF9yb290KQotICAg
ICAgICAgICAgYnJlYWs7CisJd2hpbGUgKCpwYXRoICYmICptb3VudF9yb290KSB7CisJCWlmICgq
cGF0aCAhPSAqbW91bnRfcm9vdCkKKwkJCWJyZWFrOwogCi0gICAgICAgIHBhdGgrKzsKLSAgICAg
ICAgbW91bnRfcm9vdCsrOwotICAgICAgICBsZW4rKzsKLSAgICB9Ci0gICAgaWYgKCptb3VudF9y
b290ICE9ICdcMCcpCi0gICAgICAgIHJldHVybiAwOworCQlwYXRoKys7CisJCW1vdW50X3Jvb3Qr
KzsKKwkJbGVuKys7CisJfQorCWlmICgqbW91bnRfcm9vdCAhPSAnXDAnKQorCQlyZXR1cm4gMDsK
IAotICAgIGlmIChsZW4gPT0gMSAmJiAqKHBhdGggLSAxKSA9PSAnLycpCi0gICAgICAgIHJldHVy
biAxOworCWlmIChsZW4gPT0gMSAmJiAqKHBhdGggLSAxKSA9PSAnLycpCisJCXJldHVybiAxOwog
Ci0gICAgaWYgKCpwYXRoID09ICdcMCcgfHwgKnBhdGggPT0gJy8nKQotICAgICAgICByZXR1cm4g
bGVuOwotICAgIHJldHVybiAwOworCWlmICgqcGF0aCA9PSAnXDAnIHx8ICpwYXRoID09ICcvJykK
KwkJcmV0dXJuIGxlbjsKKwlyZXR1cm4gMDsKIH0KIAogLyoKQEAgLTM5MCwyOCArMzkwLDI4IEBA
IGNvdW50X21hdGNoKGNvbnN0IGNoYXIgKnBhdGgsIGNoYXIgKm1vdW50X3Jvb3QpCiBpbnQKIHZm
c19maW5kcm9vdChjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3QgbW91bnQgKiptcCwgY2hhciAqKnJv
b3QpCiB7Ci0gICAgc3RydWN0IG1vdW50ICptID0gbnVsbHB0cjsKLSAgICBzaXplX3QgbGVuLCBt
YXhfbGVuID0gMDsKLQotICAgIGlmICghcGF0aCkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAg
LyogRmluZCBtb3VudCBwb2ludCBmcm9tIG5lYXJlc3QgcGF0aCAqLwotICAgIFNDT1BFX0xPQ0so
bW91bnRfbG9jayk7Ci0gICAgZm9yIChhdXRvJiYgdG1wIDogbW91bnRfbGlzdCkgewotICAgICAg
ICBsZW4gPSBjb3VudF9tYXRjaChwYXRoLCB0bXAtPm1fcGF0aCk7Ci0gICAgICAgIGlmIChsZW4g
PiBtYXhfbGVuKSB7Ci0gICAgICAgICAgICBtYXhfbGVuID0gbGVuOwotICAgICAgICAgICAgbSA9
IHRtcDsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAobSA9PSBudWxscHRyKQotICAgICAgICBy
ZXR1cm4gLTE7Ci0gICAgKnJvb3QgPSAoY2hhciAqKShwYXRoICsgbWF4X2xlbik7Ci0gICAgaWYg
KCoqcm9vdCA9PSAnLycpCi0gICAgICAgICgqcm9vdCkrKzsKLSAgICAqbXAgPSBtOwotICAgIHJl
dHVybiAwOworCXN0cnVjdCBtb3VudCAqbSA9IG51bGxwdHI7CisJc2l6ZV90IGxlbiwgbWF4X2xl
biA9IDA7CisKKwlpZiAoIXBhdGgpCisJCXJldHVybiAtMTsKKworCS8qIEZpbmQgbW91bnQgcG9p
bnQgZnJvbSBuZWFyZXN0IHBhdGggKi8KKwlTQ09QRV9MT0NLKG1vdW50X2xvY2spOworCWZvciAo
YXV0byYmIHRtcCA6IG1vdW50X2xpc3QpIHsKKwkJbGVuID0gY291bnRfbWF0Y2gocGF0aCwgdG1w
LT5tX3BhdGgpOworCQlpZiAobGVuID4gbWF4X2xlbikgeworCQkJbWF4X2xlbiA9IGxlbjsKKwkJ
CW0gPSB0bXA7CisJCX0KKwl9CisJaWYgKG0gPT0gbnVsbHB0cikKKwkJcmV0dXJuIC0xOworCSpy
b290ID0gKGNoYXIgKikocGF0aCArIG1heF9sZW4pOworCWlmICgqKnJvb3QgPT0gJy8nKQorCQko
KnJvb3QpKys7CisJKm1wID0gbTsKKwlyZXR1cm4gMDsKIH0KIAogLyoKQEAgLTQyMCw4ICs0MjAs
OCBAQCB2ZnNfZmluZHJvb3QoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IG1vdW50ICoqbXAsIGNo
YXIgKipyb290KQogdm9pZAogdmZzX2J1c3koc3RydWN0IG1vdW50ICptcCkKIHsKLSAgICBTQ09Q
RV9MT0NLKG1vdW50X2xvY2spOwotICAgIG1wLT5tX2NvdW50Kys7CisJU0NPUEVfTE9DSyhtb3Vu
dF9sb2NrKTsKKwltcC0+bV9jb3VudCsrOwogfQogCiAKQEAgLTQzMSw0NSArNDMxLDQ1IEBAIHZm
c19idXN5KHN0cnVjdCBtb3VudCAqbXApCiB2b2lkCiB2ZnNfdW5idXN5KHN0cnVjdCBtb3VudCAq
bXApCiB7Ci0gICAgU0NPUEVfTE9DSyhtb3VudF9sb2NrKTsKLSAgICBtcC0+bV9jb3VudC0tOwor
CVNDT1BFX0xPQ0sobW91bnRfbG9jayk7CisJbXAtPm1fY291bnQtLTsKIH0KIAogaW50CiB2ZnNf
bnVsbG9wKHZvaWQpCiB7Ci0gICAgcmV0dXJuIDA7CisJcmV0dXJuIDA7CiB9CiAKIGludAogdmZz
X2VpbnZhbCh2b2lkKQogewotICAgIHJldHVybiBFSU5WQUw7CisJcmV0dXJuIEVJTlZBTDsKIH0K
IAogbmFtZXNwYWNlIG9zdiB7CiAKIG1vdW50X2Rlc2MgdG9fbW91bnRfZGVzYyhtb3VudCogbSkK
IHsKLSAgICBtb3VudF9kZXNjIHJldDsKLSAgICByZXQuc3BlY2lhbCA9IG0tPm1fc3BlY2lhbDsK
LSAgICByZXQucGF0aCA9IG0tPm1fcGF0aDsKLSAgICByZXQudHlwZSA9IGZzX2dldGZzbmFtZSht
LT5tX29wKTsKLSAgICAvLyBGSVhNRTogcmVjb3JkIG9wdGlvbnMKLSAgICByZXQub3B0aW9ucyA9
ICIiOwotICAgIHJldHVybiByZXQ7CisJbW91bnRfZGVzYyByZXQ7CisJcmV0LnNwZWNpYWwgPSBt
LT5tX3NwZWNpYWw7CisJcmV0LnBhdGggPSBtLT5tX3BhdGg7CisJcmV0LnR5cGUgPSBmc19nZXRm
c25hbWUobS0+bV9vcCk7CisJLy8gRklYTUU6IHJlY29yZCBvcHRpb25zCisJcmV0Lm9wdGlvbnMg
PSAiIjsKKwlyZXR1cm4gcmV0OwogfQogCiBzdGQ6OnZlY3Rvcjxtb3VudF9kZXNjPgogY3VycmVu
dF9tb3VudHMoKQogewotICAgIFdJVEhfTE9DSyhtb3VudF9sb2NrKSB7Ci0gICAgICAgIHN0ZDo6
dmVjdG9yPG1vdW50X2Rlc2M+IHJldDsKLSAgICAgICAgZm9yIChhdXRvJiYgbXAgOiBtb3VudF9s
aXN0KSB7Ci0gICAgICAgICAgICByZXQucHVzaF9iYWNrKHRvX21vdW50X2Rlc2MobXApKTsKLSAg
ICAgICAgfQotICAgICAgICByZXR1cm4gcmV0OwotICAgIH0KKwlXSVRIX0xPQ0sobW91bnRfbG9j
aykgeworCQlzdGQ6OnZlY3Rvcjxtb3VudF9kZXNjPiByZXQ7CisJCWZvciAoYXV0byYmIG1wIDog
bW91bnRfbGlzdCkgeworCQkJcmV0LnB1c2hfYmFjayh0b19tb3VudF9kZXNjKG1wKSk7CisJCX0K
KwkJcmV0dXJuIHJldDsKKwl9CiB9CiAKIH0KQEAgLTQ3OCwxNCArNDc4LDE0IEBAIGN1cnJlbnRf
bW91bnRzKCkKIHZvaWQKIG1vdW50X2R1bXAodm9pZCkKIHsKLSAgICBTQ09QRV9MT0NLKG1vdW50
X2xvY2spOworCVNDT1BFX0xPQ0sobW91bnRfbG9jayk7CiAKLSAgICBrcHJpbnRmKCJtb3VudF9k
dW1wXG4iKTsKLSAgICBrcHJpbnRmKCJkZXYgICAgICBjb3VudCByb290XG4iKTsKLSAgICBrcHJp
bnRmKCItLS0tLS0tLSAtLS0tLSAtLS0tLS0tLVxuIik7CisJa3ByaW50ZigibW91bnRfZHVtcFxu
Iik7CisJa3ByaW50ZigiZGV2ICAgICAgY291bnQgcm9vdFxuIik7CisJa3ByaW50ZigiLS0tLS0t
LS0gLS0tLS0gLS0tLS0tLS1cbiIpOwogCi0gICAgZm9yIChhdXRvJiYgbXAgOiBtb3VudF9saXN0
KSB7Ci0gICAgICAgIGtwcmludGYoIiU4eCAlNWQgJXNcbiIsIG1wLT5tX2RldiwgbXAtPm1fY291
bnQsIG1wLT5tX3BhdGgpOwotICAgIH0KKwlmb3IgKGF1dG8mJiBtcCA6IG1vdW50X2xpc3QpIHsK
KwkJa3ByaW50ZigiJTh4ICU1ZCAlc1xuIiwgbXAtPm1fZGV2LCBtcC0+bV9jb3VudCwgbXAtPm1f
cGF0aCk7CisJfQogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9zeXNjYWxscy5j
IGIvbGliL3Zmc2NvcmUvc3lzY2FsbHMuYwppbmRleCA0ODdkNTcyOS4uYjU0MzNlY2UgMTAwNjQ0
Ci0tLSBhL2xpYi92ZnNjb3JlL3N5c2NhbGxzLmMKKysrIGIvbGliL3Zmc2NvcmUvc3lzY2FsbHMu
YwpAQCAtMjQ1LDcyICsyNDUsNzIgQEAgaW50CiBzeXNfcmVhZChzdHJ1Y3QgZmlsZSAqZnAsIGNv
bnN0IHN0cnVjdCBpb3ZlYyAqaW92LCBzaXplX3QgbmlvdiwKIAkJb2ZmX3Qgb2Zmc2V0LCBzaXpl
X3QgKmNvdW50KQogewotICAgIGlmICgoZnAtPmZfZmxhZ3MgJiBGUkVBRCkgPT0gMCkKLSAgICAg
ICAgcmV0dXJuIEVCQURGOwotCi0gICAgc2l6ZV90IGJ5dGVzID0gMDsKLSAgICBhdXRvIGlvdnAg
PSBpb3Y7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG5pb3Y7IGkrKykgewotICAgICAg
ICBpZiAoaW92cC0+aW92X2xlbiA+IElPU0laRV9NQVggLSBieXRlcykgewotICAgICAgICAgICAg
cmV0dXJuIEVJTlZBTDsKLSAgICAgICAgfQotICAgICAgICBieXRlcyArPSBpb3ZwLT5pb3ZfbGVu
OwotICAgICAgICBpb3ZwKys7Ci0gICAgfQotCi0gICAgaWYgKGJ5dGVzID09IDApIHsKLSAgICAg
ICAgKmNvdW50ID0gMDsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgc3RydWN0IHVp
byB1aW87Ci0gICAgLy8gVW5mb3J0dW5hdGVseSwgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24g
b2YgZnAtPnJlYWQgemVyb3MgdGhlCi0gICAgLy8gaW92X2xlbiBmaWVsZHMgd2hlbiBpdCByZWFk
cyBmcm9tIGRpc2ssIHNvIHdlIGhhdmUgdG8gY29weSBpb3YuCi0gICAgc3RkOjp2ZWN0b3I8aW92
ZWM+IGNvcHlfaW92KGlvdiwgaW92ICsgbmlvdik7Ci0gICAgdWlvLnVpb19pb3YgPSBjb3B5X2lv
di5kYXRhKCk7Ci0gICAgdWlvLnVpb19pb3ZjbnQgPSBuaW92OwotICAgIHVpby51aW9fb2Zmc2V0
ID0gb2Zmc2V0OwotICAgIHVpby51aW9fcmVzaWQgPSBieXRlczsKLSAgICB1aW8udWlvX3J3ID0g
VUlPX1JFQUQ7Ci0gICAgYXV0byBlcnJvciA9IGZwLT5yZWFkKCZ1aW8sIChvZmZzZXQgPT0gLTEp
ID8gMCA6IEZPRl9PRkZTRVQpOwotICAgICpjb3VudCA9IGJ5dGVzIC0gdWlvLnVpb19yZXNpZDsK
LSAgICByZXR1cm4gZXJyb3I7CisJaWYgKChmcC0+Zl9mbGFncyAmIEZSRUFEKSA9PSAwKQorCQly
ZXR1cm4gRUJBREY7CisKKwlzaXplX3QgYnl0ZXMgPSAwOworCWF1dG8gaW92cCA9IGlvdjsKKwlm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbmlvdjsgaSsrKSB7CisJCWlmIChpb3ZwLT5pb3ZfbGVu
ID4gSU9TSVpFX01BWCAtIGJ5dGVzKSB7CisJCQlyZXR1cm4gRUlOVkFMOworCQl9CisJCWJ5dGVz
ICs9IGlvdnAtPmlvdl9sZW47CisJCWlvdnArKzsKKwl9CisKKwlpZiAoYnl0ZXMgPT0gMCkgewor
CQkqY291bnQgPSAwOworCQlyZXR1cm4gMDsKKwl9CisKKwlzdHJ1Y3QgdWlvIHVpbzsKKwkvLyBV
bmZvcnR1bmF0ZWx5LCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvZiBmcC0+cmVhZCB6ZXJv
cyB0aGUKKwkvLyBpb3ZfbGVuIGZpZWxkcyB3aGVuIGl0IHJlYWRzIGZyb20gZGlzaywgc28gd2Ug
aGF2ZSB0byBjb3B5IGlvdi4KKwlzdGQ6OnZlY3Rvcjxpb3ZlYz4gY29weV9pb3YoaW92LCBpb3Yg
KyBuaW92KTsKKwl1aW8udWlvX2lvdiA9IGNvcHlfaW92LmRhdGEoKTsKKwl1aW8udWlvX2lvdmNu
dCA9IG5pb3Y7CisJdWlvLnVpb19vZmZzZXQgPSBvZmZzZXQ7CisJdWlvLnVpb19yZXNpZCA9IGJ5
dGVzOworCXVpby51aW9fcncgPSBVSU9fUkVBRDsKKwlhdXRvIGVycm9yID0gZnAtPnJlYWQoJnVp
bywgKG9mZnNldCA9PSAtMSkgPyAwIDogRk9GX09GRlNFVCk7CisJKmNvdW50ID0gYnl0ZXMgLSB1
aW8udWlvX3Jlc2lkOworCXJldHVybiBlcnJvcjsKIH0KIAogaW50CiBzeXNfd3JpdGUoc3RydWN0
IGZpbGUgKmZwLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlvdiwgc2l6ZV90IG5pb3YsCiAJCW9mZl90
IG9mZnNldCwgc2l6ZV90ICpjb3VudCkKIHsKLSAgICBpZiAoKGZwLT5mX2ZsYWdzICYgRldSSVRF
KSA9PSAwKQotICAgICAgICByZXR1cm4gRUJBREY7Ci0KLSAgICBzaXplX3QgYnl0ZXMgPSAwOwot
ICAgIGF1dG8gaW92cCA9IGlvdjsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbmlvdjsg
aSsrKSB7Ci0gICAgICAgIGlmIChpb3ZwLT5pb3ZfbGVuID4gSU9TSVpFX01BWCAtIGJ5dGVzKSB7
Ci0gICAgICAgICAgICByZXR1cm4gRUlOVkFMOwotICAgICAgICB9Ci0gICAgICAgIGJ5dGVzICs9
IGlvdnAtPmlvdl9sZW47Ci0gICAgICAgIGlvdnArKzsKLSAgICB9Ci0KLSAgICBpZiAoYnl0ZXMg
PT0gMCkgewotICAgICAgICAqY291bnQgPSAwOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0K
LSAgICBzdHJ1Y3QgdWlvIHVpbzsKLSAgICAvLyBVbmZvcnR1bmF0ZWx5LCB0aGUgY3VycmVudCBp
bXBsZW1lbnRhdGlvbiBvZiBmcC0+d3JpdGUgemVyb3MgdGhlCi0gICAgLy8gaW92X2xlbiBmaWVs
ZHMgd2hlbiBpdCB3cml0ZXMgdG8gZGlzaywgc28gd2UgaGF2ZSB0byBjb3B5IGlvdi4KLSAgICBz
dGQ6OnZlY3Rvcjxpb3ZlYz4gY29weV9pb3YoaW92LCBpb3YgKyBuaW92KTsKLSAgICB1aW8udWlv
X2lvdiA9IGNvcHlfaW92LmRhdGEoKTsKLSAgICB1aW8udWlvX2lvdmNudCA9IG5pb3Y7Ci0gICAg
dWlvLnVpb19vZmZzZXQgPSBvZmZzZXQ7Ci0gICAgdWlvLnVpb19yZXNpZCA9IGJ5dGVzOwotICAg
IHVpby51aW9fcncgPSBVSU9fV1JJVEU7Ci0gICAgYXV0byBlcnJvciA9IGZwLT53cml0ZSgmdWlv
LCAob2Zmc2V0ID09IC0xKSA/IDAgOiBGT0ZfT0ZGU0VUKTsKLSAgICAqY291bnQgPSBieXRlcyAt
IHVpby51aW9fcmVzaWQ7Ci0gICAgcmV0dXJuIGVycm9yOworCWlmICgoZnAtPmZfZmxhZ3MgJiBG
V1JJVEUpID09IDApCisJCXJldHVybiBFQkFERjsKKworCXNpemVfdCBieXRlcyA9IDA7CisJYXV0
byBpb3ZwID0gaW92OworCWZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBuaW92OyBpKyspIHsKKwkJ
aWYgKGlvdnAtPmlvdl9sZW4gPiBJT1NJWkVfTUFYIC0gYnl0ZXMpIHsKKwkJCXJldHVybiBFSU5W
QUw7CisJCX0KKwkJYnl0ZXMgKz0gaW92cC0+aW92X2xlbjsKKwkJaW92cCsrOworCX0KKworCWlm
IChieXRlcyA9PSAwKSB7CisJCSpjb3VudCA9IDA7CisJCXJldHVybiAwOworCX0KKworCXN0cnVj
dCB1aW8gdWlvOworCS8vIFVuZm9ydHVuYXRlbHksIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9u
IG9mIGZwLT53cml0ZSB6ZXJvcyB0aGUKKwkvLyBpb3ZfbGVuIGZpZWxkcyB3aGVuIGl0IHdyaXRl
cyB0byBkaXNrLCBzbyB3ZSBoYXZlIHRvIGNvcHkgaW92LgorCXN0ZDo6dmVjdG9yPGlvdmVjPiBj
b3B5X2lvdihpb3YsIGlvdiArIG5pb3YpOworCXVpby51aW9faW92ID0gY29weV9pb3YuZGF0YSgp
OworCXVpby51aW9faW92Y250ID0gbmlvdjsKKwl1aW8udWlvX29mZnNldCA9IG9mZnNldDsKKwl1
aW8udWlvX3Jlc2lkID0gYnl0ZXM7CisJdWlvLnVpb19ydyA9IFVJT19XUklURTsKKwlhdXRvIGVy
cm9yID0gZnAtPndyaXRlKCZ1aW8sIChvZmZzZXQgPT0gLTEpID8gMCA6IEZPRl9PRkZTRVQpOwor
CSpjb3VudCA9IGJ5dGVzIC0gdWlvLnVpb19yZXNpZDsKKwlyZXR1cm4gZXJyb3I7CiB9CiAKIGlu
dApAQCAtMTIyMSw4ICsxMjIxLDggQEAgc3lzX3JlYWRsaW5rKGNoYXIgKnBhdGgsIGNoYXIgKmJ1
Ziwgc2l6ZV90IGJ1ZnNpemUsIHNzaXplX3QgKnNpemUpCiAgKi8KIHN0YXRpYyBib29sIGlzX3Rp
bWV2YWxfdmFsaWQoY29uc3Qgc3RydWN0IHRpbWV2YWwgKnRpbWUpCiB7Ci0gICAgcmV0dXJuICh0
aW1lLT50dl9zZWMgPj0gMCkgJiYKLSAgICAgICAgICAgKHRpbWUtPnR2X3VzZWMgPj0gMCAmJiB0
aW1lLT50dl91c2VjIDwgMTAwMDAwMCk7CisJcmV0dXJuICh0aW1lLT50dl9zZWMgPj0gMCkgJiYK
KwkJICAgKHRpbWUtPnR2X3VzZWMgPj0gMCAmJiB0aW1lLT50dl91c2VjIDwgMTAwMDAwMCk7CiB9
CiAKIC8qCkBAIC0xMjMwLDU4ICsxMjMwLDU4IEBAIHN0YXRpYyBib29sIGlzX3RpbWV2YWxfdmFs
aWQoY29uc3Qgc3RydWN0IHRpbWV2YWwgKnRpbWUpCiAgKi8KIHN0YXRpYyB2b2lkIGNvbnZlcnRf
dGltZXZhbChzdHJ1Y3QgdGltZXNwZWMgJnRvLCBjb25zdCBzdHJ1Y3QgdGltZXZhbCAqZnJvbSkK
IHsKLSAgICBpZiAoZnJvbSkgewotICAgICAgICB0by50dl9zZWMgPSBmcm9tLT50dl9zZWM7Ci0g
ICAgICAgIHRvLnR2X25zZWMgPSBmcm9tLT50dl91c2VjICogMTAwMDsgLy8gQ29udmVydCBtaWNy
b3NlY29uZHMgdG8gbmFub3NlY29uZHMKLSAgICB9IGVsc2UgewotICAgICAgICBjbG9ja19nZXR0
aW1lKENMT0NLX1JFQUxUSU1FLCAmdG8pOwotICAgIH0KKwlpZiAoZnJvbSkgeworCQl0by50dl9z
ZWMgPSBmcm9tLT50dl9zZWM7CisJCXRvLnR2X25zZWMgPSBmcm9tLT50dl91c2VjICogMTAwMDsg
Ly8gQ29udmVydCBtaWNyb3NlY29uZHMgdG8gbmFub3NlY29uZHMKKwl9IGVsc2UgeworCQljbG9j
a19nZXR0aW1lKENMT0NLX1JFQUxUSU1FLCAmdG8pOworCX0KIH0KIAogaW50CiBzeXNfdXRpbWVz
KGNoYXIgKnBhdGgsIGNvbnN0IHN0cnVjdCB0aW1ldmFsIHRpbWVzWzJdLCBpbnQgZmxhZ3MpCiB7
Ci0gICAgaW50IGVycm9yOwotICAgIHN0cnVjdCBkZW50cnkgKmRwOwotICAgIHN0cnVjdCB0aW1l
c3BlYyB0aW1lc3BlY190aW1lc1syXTsKLQotICAgIERQUklOVEYoVkZTREJfU1lTQ0FMTCwgKCJz
eXNfdXRpbWVzOiBwYXRoPSVzXG4iLCBwYXRoKSk7Ci0KLSAgICBpZiAodGltZXMgJiYgKCFpc190
aW1ldmFsX3ZhbGlkKCZ0aW1lc1swXSkgfHwgIWlzX3RpbWV2YWxfdmFsaWQoJnRpbWVzWzFdKSkp
Ci0gICAgICAgIHJldHVybiBFSU5WQUw7Ci0KLSAgICAvLyBDb252ZXJ0IGVhY2ggZWxlbWVudCBv
ZiB0aW1ldmFsIGFycmF5IHRvIHRoZSB0aW1lc3BlYyB0eXBlCi0gICAgY29udmVydF90aW1ldmFs
KHRpbWVzcGVjX3RpbWVzWzBdLCB0aW1lcyA/IHRpbWVzICsgMCA6IG51bGxwdHIpOwotICAgIGNv
bnZlcnRfdGltZXZhbCh0aW1lc3BlY190aW1lc1sxXSwgdGltZXMgPyB0aW1lcyArIDEgOiBudWxs
cHRyKTsKLQotICAgIGlmIChmbGFncyAmIEFUX1NZTUxJTktfTk9GT0xMT1cpIHsKLSAgICAgICAg
c3RydWN0IGRlbnRyeSAqZGRwOwotICAgICAgICBlcnJvciA9IGxvb2t1cChwYXRoLCAmZGRwLCBu
dWxscHRyKTsKLSAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3I7
Ci0gICAgICAgIH0KLQotICAgICAgICBlcnJvciA9IG5hbWVpX2xhc3Rfbm9mb2xsb3cocGF0aCwg
ZGRwLCAmZHApOwotICAgICAgICBpZiAoZGRwICE9IG51bGxwdHIpIHsKLSAgICAgICAgICAgIGRy
ZWxlKGRkcCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICBy
ZXR1cm4gZXJyb3I7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBlcnJvciA9IG5h
bWVpKHBhdGgsICZkcCk7Ci0gICAgICAgIGlmIChlcnJvcikKLSAgICAgICAgICAgIHJldHVybiBl
cnJvcjsKLSAgICB9Ci0KLSAgICBpZiAoZHAtPmRfbW91bnQtPm1fZmxhZ3MgJiBNTlRfUkRPTkxZ
KSB7Ci0gICAgICAgIGVycm9yID0gRVJPRlM7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZXJyb3Ig
PSB2bl9zZXR0aW1lcyhkcC0+ZF92bm9kZSwgdGltZXNwZWNfdGltZXMpOwotICAgIH0KLQotICAg
IGRyZWxlKGRwKTsKLSAgICByZXR1cm4gZXJyb3I7CisJaW50IGVycm9yOworCXN0cnVjdCBkZW50
cnkgKmRwOworCXN0cnVjdCB0aW1lc3BlYyB0aW1lc3BlY190aW1lc1syXTsKKworCURQUklOVEYo
VkZTREJfU1lTQ0FMTCwgKCJzeXNfdXRpbWVzOiBwYXRoPSVzXG4iLCBwYXRoKSk7CisKKwlpZiAo
dGltZXMgJiYgKCFpc190aW1ldmFsX3ZhbGlkKCZ0aW1lc1swXSkgfHwgIWlzX3RpbWV2YWxfdmFs
aWQoJnRpbWVzWzFdKSkpCisJCXJldHVybiBFSU5WQUw7CisKKwkvLyBDb252ZXJ0IGVhY2ggZWxl
bWVudCBvZiB0aW1ldmFsIGFycmF5IHRvIHRoZSB0aW1lc3BlYyB0eXBlCisJY29udmVydF90aW1l
dmFsKHRpbWVzcGVjX3RpbWVzWzBdLCB0aW1lcyA/IHRpbWVzICsgMCA6IG51bGxwdHIpOworCWNv
bnZlcnRfdGltZXZhbCh0aW1lc3BlY190aW1lc1sxXSwgdGltZXMgPyB0aW1lcyArIDEgOiBudWxs
cHRyKTsKKworCWlmIChmbGFncyAmIEFUX1NZTUxJTktfTk9GT0xMT1cpIHsKKwkJc3RydWN0IGRl
bnRyeSAqZGRwOworCQllcnJvciA9IGxvb2t1cChwYXRoLCAmZGRwLCBudWxscHRyKTsKKwkJaWYg
KGVycm9yKSB7CisJCQlyZXR1cm4gZXJyb3I7CisJCX0KKworCQllcnJvciA9IG5hbWVpX2xhc3Rf
bm9mb2xsb3cocGF0aCwgZGRwLCAmZHApOworCQlpZiAoZGRwICE9IG51bGxwdHIpIHsKKwkJCWRy
ZWxlKGRkcCk7CisJCX0KKwkJaWYgKGVycm9yKSB7CisJCQlyZXR1cm4gZXJyb3I7CisJCX0KKwl9
IGVsc2UgeworCQllcnJvciA9IG5hbWVpKHBhdGgsICZkcCk7CisJCWlmIChlcnJvcikKKwkJCXJl
dHVybiBlcnJvcjsKKwl9CisKKwlpZiAoZHAtPmRfbW91bnQtPm1fZmxhZ3MgJiBNTlRfUkRPTkxZ
KSB7CisJCWVycm9yID0gRVJPRlM7CisJfSBlbHNlIHsKKwkJZXJyb3IgPSB2bl9zZXR0aW1lcyhk
cC0+ZF92bm9kZSwgdGltZXNwZWNfdGltZXMpOworCX0KKworCWRyZWxlKGRwKTsKKwlyZXR1cm4g
ZXJyb3I7CiB9CiAKIC8qCkBAIC0xMjg5LDcgKzEyODksNyBAQCBzeXNfdXRpbWVzKGNoYXIgKnBh
dGgsIGNvbnN0IHN0cnVjdCB0aW1ldmFsIHRpbWVzWzJdLCBpbnQgZmxhZ3MpCiAgKi8KIHN0YXRp
YyBib29sIGlzX3RpbWVzcGVjX3ZhbGlkKGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAmdGltZSkKIHsK
LSAgICByZXR1cm4gKHRpbWUudHZfc2VjID49IDApICYmCisJcmV0dXJuICh0aW1lLnR2X3NlYyA+
PSAwKSAmJgogCSAgICgodGltZS50dl9uc2VjID49IDAgJiYgdGltZS50dl9uc2VjIDw9IDk5OTk5
OTk5OSkgfHwKIAkgICAgdGltZS50dl9uc2VjID09IFVUSU1FX05PVyB8fAogCSAgICB0aW1lLnR2
X25zZWMgPT0gVVRJTUVfT01JVCk7CkBAIC0xMjk3LDQ4ICsxMjk3LDQ4IEBAIHN0YXRpYyBib29s
IGlzX3RpbWVzcGVjX3ZhbGlkKGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAmdGltZSkKIAogdm9pZCBp
bml0X3RpbWVzcGVjKHN0cnVjdCB0aW1lc3BlYyAmX3RpbWVzLCBjb25zdCBzdHJ1Y3QgdGltZXNw
ZWMgKnRpbWVzKQogewotICAgIGlmICh0aW1lcyA9PSBudWxscHRyIHx8IHRpbWVzLT50dl9uc2Vj
ID09IFVUSU1FX05PVykgewotICAgICAgICBjbG9ja19nZXR0aW1lKENMT0NLX1JFQUxUSU1FLCAm
X3RpbWVzKTsKLSAgICB9IGVsc2UgewotICAgICAgICBfdGltZXMudHZfc2VjID0gdGltZXMtPnR2
X3NlYzsKLSAgICAgICAgX3RpbWVzLnR2X25zZWMgPSB0aW1lcy0+dHZfbnNlYzsKLSAgICB9Ci0g
ICAgcmV0dXJuOworCWlmICh0aW1lcyA9PSBudWxscHRyIHx8IHRpbWVzLT50dl9uc2VjID09IFVU
SU1FX05PVykgeworCQljbG9ja19nZXR0aW1lKENMT0NLX1JFQUxUSU1FLCAmX3RpbWVzKTsKKwl9
IGVsc2UgeworCQlfdGltZXMudHZfc2VjID0gdGltZXMtPnR2X3NlYzsKKwkJX3RpbWVzLnR2X25z
ZWMgPSB0aW1lcy0+dHZfbnNlYzsKKwl9CisJcmV0dXJuOwogfQogCiBpbnQKIHN5c191dGltZW5z
YXQoaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwgY29uc3Qgc3RydWN0IHRpbWVzcGVj
IHRpbWVzWzJdLCBpbnQgZmxhZ3MpCiB7Ci0gICAgaW50IGVycm9yOwotICAgIHN0ZDo6c3RyaW5n
IGFwOwotICAgIHN0cnVjdCB0aW1lc3BlYyB0aW1lc3BlY190aW1lc1syXTsKLSAgICBleHRlcm4g
c3RydWN0IHRhc2sgKm1haW5fdGFzazsKLSAgICBzdHJ1Y3QgZGVudHJ5ICpkcDsKKwlpbnQgZXJy
b3I7CisJc3RkOjpzdHJpbmcgYXA7CisJc3RydWN0IHRpbWVzcGVjIHRpbWVzcGVjX3RpbWVzWzJd
OworCWV4dGVybiBzdHJ1Y3QgdGFzayAqbWFpbl90YXNrOworCXN0cnVjdCBkZW50cnkgKmRwOwog
Ci0gICAgLyogdXRpbWVuc2F0IHNob3VsZCByZXR1cm4gRU5PRU5UIHdoZW4gcGF0aG5hbWUgaXMg
ZW1wdHkgKi8KLSAgICBpZihwYXRobmFtZSAmJiBwYXRobmFtZVswXSA9PSAwKQotICAgICAgICBy
ZXR1cm4gRU5PRU5UOworCS8qIHV0aW1lbnNhdCBzaG91bGQgcmV0dXJuIEVOT0VOVCB3aGVuIHBh
dGhuYW1lIGlzIGVtcHR5ICovCisJaWYocGF0aG5hbWUgJiYgcGF0aG5hbWVbMF0gPT0gMCkKKwkJ
cmV0dXJuIEVOT0VOVDsKIAotICAgIGlmIChmbGFncyAmJiAhKGZsYWdzICYgQVRfU1lNTElOS19O
T0ZPTExPVykpCi0gICAgICAgIHJldHVybiBFSU5WQUw7CisJaWYgKGZsYWdzICYmICEoZmxhZ3Mg
JiBBVF9TWU1MSU5LX05PRk9MTE9XKSkKKwkJcmV0dXJuIEVJTlZBTDsKIAotICAgIGlmICh0aW1l
cyAmJiAoIWlzX3RpbWVzcGVjX3ZhbGlkKHRpbWVzWzBdKSB8fCAhaXNfdGltZXNwZWNfdmFsaWQo
dGltZXNbMV0pKSkKLSAgICAgICAgcmV0dXJuIEVJTlZBTDsKKwlpZiAodGltZXMgJiYgKCFpc190
aW1lc3BlY192YWxpZCh0aW1lc1swXSkgfHwgIWlzX3RpbWVzcGVjX3ZhbGlkKHRpbWVzWzFdKSkp
CisJCXJldHVybiBFSU5WQUw7CiAKLSAgICBpbml0X3RpbWVzcGVjKHRpbWVzcGVjX3RpbWVzWzBd
LCB0aW1lcyA/IHRpbWVzICsgMCA6IG51bGxwdHIpOwotICAgIGluaXRfdGltZXNwZWModGltZXNw
ZWNfdGltZXNbMV0sIHRpbWVzID8gdGltZXMgKyAxIDogbnVsbHB0cik7CisJaW5pdF90aW1lc3Bl
Yyh0aW1lc3BlY190aW1lc1swXSwgdGltZXMgPyB0aW1lcyArIDAgOiBudWxscHRyKTsKKwlpbml0
X3RpbWVzcGVjKHRpbWVzcGVjX3RpbWVzWzFdLCB0aW1lcyA/IHRpbWVzICsgMSA6IG51bGxwdHIp
OwogCi0gICAgaWYgKHBhdGhuYW1lICYmIHBhdGhuYW1lWzBdID09ICcvJykgeworCWlmIChwYXRo
bmFtZSAmJiBwYXRobmFtZVswXSA9PSAnLycpIHsKIAlhcCA9IHBhdGhuYW1lOwotICAgIH0gZWxz
ZSBpZiAoZGlyZmQgPT0gQVRfRkRDV0QpIHsKKwl9IGVsc2UgaWYgKGRpcmZkID09IEFUX0ZEQ1dE
KSB7CiAJaWYgKCFwYXRobmFtZSkKIAkgICAgcmV0dXJuIEVGQVVMVDsKIAlhcCA9IHN0ZDo6c3Ry
aW5nKG1haW5fdGFzay0+dF9jd2QpICsgIi8iICsgcGF0aG5hbWU7Ci0gICAgfSBlbHNlIHsKLSAg
ICAgICAgc3RydWN0IGZpbGUgKmZwOwotICAgICAgICBmaWxlcmVmIGYoZmlsZXJlZl9mcm9tX2Zk
KGRpcmZkKSk7CisJfSBlbHNlIHsKKwkJc3RydWN0IGZpbGUgKmZwOworCQlmaWxlcmVmIGYoZmls
ZXJlZl9mcm9tX2ZkKGRpcmZkKSk7CiAKLSAgICAgICAgaWYgKCFmKQorCQlpZiAoIWYpCiAJICAg
IHJldHVybiBFQkFERjsKIAogCWZwID0gZi5nZXQoKTsKQEAgLTEzNTUsMTMyICsxMzU1LDEzMiBA
QCBzeXNfdXRpbWVuc2F0KGludCBkaXJmZCwgY29uc3QgY2hhciAqcGF0aG5hbWUsIGNvbnN0IHN0
cnVjdCB0aW1lc3BlYyB0aW1lc1syXSwgaQogCSAgICBhcCA9IGZwLT5mX2RlbnRyeS0+ZF9wYXRo
OwogCiAJYXAgPSBzdGQ6OnN0cmluZyhmcC0+Zl9kZW50cnktPmRfbW91bnQtPm1fcGF0aCkgKyAi
LyIgKyBhcDsKLSAgICB9CisJfQogCi0gICAgLyogRklYTUU6IEFkZCBzdXBwb3J0IGZvciBBVF9T
WU1MSU5LX05PRk9MTE9XICovCisJLyogRklYTUU6IEFkZCBzdXBwb3J0IGZvciBBVF9TWU1MSU5L
X05PRk9MTE9XICovCiAKLSAgICBlcnJvciA9IG5hbWVpKGFwLmNfc3RyKCksICZkcCk7CisJZXJy
b3IgPSBuYW1laShhcC5jX3N0cigpLCAmZHApOwogCi0gICAgaWYgKGVycm9yKQotICAgICAgICBy
ZXR1cm4gZXJyb3I7CisJaWYgKGVycm9yKQorCQlyZXR1cm4gZXJyb3I7CiAKLSAgICBpZiAoZHAt
PmRfbW91bnQtPm1fZmxhZ3MgJiBNTlRfUkRPTkxZKSB7Ci0gICAgICAgIGVycm9yID0gRVJPRlM7
Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKHZuX2FjY2VzcyhkcC0+ZF92bm9kZSwgVldSSVRF
KSkgewotICAgICAgICAgICAgcmV0dXJuIEVBQ0NFUzsKLSAgICAgICAgfQorCWlmIChkcC0+ZF9t
b3VudC0+bV9mbGFncyAmIE1OVF9SRE9OTFkpIHsKKwkJZXJyb3IgPSBFUk9GUzsKKwl9IGVsc2Ug
eworCQlpZiAodm5fYWNjZXNzKGRwLT5kX3Zub2RlLCBWV1JJVEUpKSB7CisJCQlyZXR1cm4gRUFD
Q0VTOworCQl9CiAJICAgIGlmICh0aW1lcyAmJgotICAgICAgICAgICAgICAgKHRpbWVzWzBdLnR2
X25zZWMgIT0gVVRJTUVfTk9XIHx8IHRpbWVzWzFdLnR2X25zZWMgIT0gVVRJTUVfTk9XKSAmJgot
ICAgICAgICAgICAgICAgKHRpbWVzWzBdLnR2X25zZWMgIT0gVVRJTUVfT01JVCB8fCB0aW1lc1sx
XS50dl9uc2VjICE9IFVUSU1FX09NSVQpICYmCisJCQkgICAodGltZXNbMF0udHZfbnNlYyAhPSBV
VElNRV9OT1cgfHwgdGltZXNbMV0udHZfbnNlYyAhPSBVVElNRV9OT1cpICYmCisJCQkgICAodGlt
ZXNbMF0udHZfbnNlYyAhPSBVVElNRV9PTUlUIHx8IHRpbWVzWzFdLnR2X25zZWMgIT0gVVRJTUVf
T01JVCkgJiYKIAkgICAgICAgKCEoZHAtPmRfdm5vZGUtPnZfbW9kZSAmIH5WQVBQRU5EKSkpCiAJ
ICAgICAgICByZXR1cm4gRVBFUk07Ci0gICAgICAgIGVycm9yID0gdm5fc2V0dGltZXMoZHAtPmRf
dm5vZGUsIHRpbWVzcGVjX3RpbWVzKTsKLSAgICB9CisJCWVycm9yID0gdm5fc2V0dGltZXMoZHAt
PmRfdm5vZGUsIHRpbWVzcGVjX3RpbWVzKTsKKwl9CiAKLSAgICBkcmVsZShkcCk7Ci0gICAgcmV0
dXJuIGVycm9yOworCWRyZWxlKGRwKTsKKwlyZXR1cm4gZXJyb3I7CiB9CiAKIGludAogc3lzX2Z1
dGltZW5zKGludCBmZCwgY29uc3Qgc3RydWN0IHRpbWVzcGVjIHRpbWVzWzJdKQogewotICAgIHN0
cnVjdCBmaWxlICpmcDsKKwlzdHJ1Y3QgZmlsZSAqZnA7CiAKLSAgICBmaWxlcmVmIGYoZmlsZXJl
Zl9mcm9tX2ZkKGZkKSk7Ci0gICAgaWYgKCFmKQotICAgICAgICByZXR1cm4gRUJBREY7CisJZmls
ZXJlZiBmKGZpbGVyZWZfZnJvbV9mZChmZCkpOworCWlmICghZikKKwkJcmV0dXJuIEVCQURGOwog
Ci0gICAgZnAgPSBmLmdldCgpOworCWZwID0gZi5nZXQoKTsKIAotICAgIGlmICghZnAtPmZfZGVu
dHJ5KQotICAgICAgICByZXR1cm4gRUJBREY7CisJaWYgKCFmcC0+Zl9kZW50cnkpCisJCXJldHVy
biBFQkFERjsKIAotICAgIHN0ZDo6c3RyaW5nIHBhdGhuYW1lID0gZnAtPmZfZGVudHJ5LT5kX3Bh
dGg7Ci0gICAgYXV0byBlcnJvciA9IHN5c191dGltZW5zYXQoQVRfRkRDV0QsIHBhdGhuYW1lLmNf
c3RyKCksIHRpbWVzLCAwKTsKLSAgICByZXR1cm4gZXJyb3I7CisJc3RkOjpzdHJpbmcgcGF0aG5h
bWUgPSBmcC0+Zl9kZW50cnktPmRfcGF0aDsKKwlhdXRvIGVycm9yID0gc3lzX3V0aW1lbnNhdChB
VF9GRENXRCwgcGF0aG5hbWUuY19zdHIoKSwgdGltZXMsIDApOworCXJldHVybiBlcnJvcjsKIH0K
IAogaW50CiBzeXNfZmFsbG9jYXRlKHN0cnVjdCBmaWxlICpmcCwgaW50IG1vZGUsIGxvZmZfdCBv
ZmZzZXQsIGxvZmZfdCBsZW4pCiB7Ci0gICAgaW50IGVycm9yOwotICAgIHN0cnVjdCB2bm9kZSAq
dnA7Ci0KLSAgICBEUFJJTlRGKFZGU0RCX1NZU0NBTEwsICgic3lzX2ZhbGxvY2F0ZTogZnA9JXgi
LCBmcCkpOwotCi0gICAgaWYgKCFmcC0+Zl9kZW50cnkgfHwgIShmcC0+Zl9mbGFncyAmIEZXUklU
RSkpIHsKLSAgICAgICAgcmV0dXJuIEVCQURGOwotICAgIH0KLQotICAgIGlmIChvZmZzZXQgPCAw
IHx8IGxlbiA8PSAwKSB7Ci0gICAgICAgIHJldHVybiBFSU5WQUw7Ci0gICAgfQotCi0gICAgLy8g
U3RyYW5nZSwgYnV0IHRoYXQncyB3aGF0IExpbnV4IHJldHVybnMuCi0gICAgaWYgKChtb2RlICYg
RkFMTE9DX0ZMX1BVTkNIX0hPTEUpICYmICEobW9kZSAmIEZBTExPQ19GTF9LRUVQX1NJWkUpKSB7
Ci0gICAgICAgIHJldHVybiBFTk9UU1VQOwotICAgIH0KLQotICAgIHZwID0gZnAtPmZfZGVudHJ5
LT5kX3Zub2RlOwotICAgIHZuX2xvY2sodnApOwotCi0gICAgLy8gTk9URTogSXQncyBub3QgZGV0
ZWN0ZWQgaGVyZSB3aGV0aGVyIG9yIG5vdCB0aGUgZGV2aWNlIHVuZGVybHlpbmcKLSAgICAvLyB0
aGUgZnMgaXMgYSBibG9jayBkZXZpY2UuIEl0J3MgdXAgdG8gdGhlIGZzIGl0c2VsZiB0ZWxsIHVz
IHdoZXRoZXIKLSAgICAvLyBvciBub3QgZmFsbG9jYXRlIGlzIHN1cHBvcnRlZC4gU2VlIGJlbG93
OgotICAgIGlmICh2cC0+dl90eXBlICE9IFZSRUcgJiYgdnAtPnZfdHlwZSAhPSBWRElSKSB7Ci0g
ICAgICAgIGVycm9yID0gRU5PREVWOwotICAgICAgICBnb3RvIHJldDsKLSAgICB9Ci0KLSAgICAv
LyBFT1BOT1RTVVBQIGhlcmUgbWVhbnMgdGhhdCB0aGUgdW5kZXJseWluZyBmaWxlIHN5c3RlbQot
ICAgIC8vIHJlZmVycmVkIGJ5IHZwIGRvZXNuJ3Qgc3VwcG9ydCBmYWxsb2NhdGUuCi0gICAgaWYg
KCF2cC0+dl9vcC0+dm9wX2ZhbGxvY2F0ZSkgewotICAgICAgICBlcnJvciA9IEVPUE5PVFNVUFA7
Ci0gICAgICAgIGdvdG8gcmV0OwotICAgIH0KLQotICAgIGVycm9yID0gVk9QX0ZBTExPQ0FURSh2
cCwgbW9kZSwgb2Zmc2V0LCBsZW4pOworCWludCBlcnJvcjsKKwlzdHJ1Y3Qgdm5vZGUgKnZwOwor
CisJRFBSSU5URihWRlNEQl9TWVNDQUxMLCAoInN5c19mYWxsb2NhdGU6IGZwPSV4IiwgZnApKTsK
KworCWlmICghZnAtPmZfZGVudHJ5IHx8ICEoZnAtPmZfZmxhZ3MgJiBGV1JJVEUpKSB7CisJCXJl
dHVybiBFQkFERjsKKwl9CisKKwlpZiAob2Zmc2V0IDwgMCB8fCBsZW4gPD0gMCkgeworCQlyZXR1
cm4gRUlOVkFMOworCX0KKworCS8vIFN0cmFuZ2UsIGJ1dCB0aGF0J3Mgd2hhdCBMaW51eCByZXR1
cm5zLgorCWlmICgobW9kZSAmIEZBTExPQ19GTF9QVU5DSF9IT0xFKSAmJiAhKG1vZGUgJiBGQUxM
T0NfRkxfS0VFUF9TSVpFKSkgeworCQlyZXR1cm4gRU5PVFNVUDsKKwl9CisKKwl2cCA9IGZwLT5m
X2RlbnRyeS0+ZF92bm9kZTsKKwl2bl9sb2NrKHZwKTsKKworCS8vIE5PVEU6IEl0J3Mgbm90IGRl
dGVjdGVkIGhlcmUgd2hldGhlciBvciBub3QgdGhlIGRldmljZSB1bmRlcmx5aW5nCisJLy8gdGhl
IGZzIGlzIGEgYmxvY2sgZGV2aWNlLiBJdCdzIHVwIHRvIHRoZSBmcyBpdHNlbGYgdGVsbCB1cyB3
aGV0aGVyCisJLy8gb3Igbm90IGZhbGxvY2F0ZSBpcyBzdXBwb3J0ZWQuIFNlZSBiZWxvdzoKKwlp
ZiAodnAtPnZfdHlwZSAhPSBWUkVHICYmIHZwLT52X3R5cGUgIT0gVkRJUikgeworCQllcnJvciA9
IEVOT0RFVjsKKwkJZ290byByZXQ7CisJfQorCisJLy8gRU9QTk9UU1VQUCBoZXJlIG1lYW5zIHRo
YXQgdGhlIHVuZGVybHlpbmcgZmlsZSBzeXN0ZW0KKwkvLyByZWZlcnJlZCBieSB2cCBkb2Vzbid0
IHN1cHBvcnQgZmFsbG9jYXRlLgorCWlmICghdnAtPnZfb3AtPnZvcF9mYWxsb2NhdGUpIHsKKwkJ
ZXJyb3IgPSBFT1BOT1RTVVBQOworCQlnb3RvIHJldDsKKwl9CisKKwllcnJvciA9IFZPUF9GQUxM
T0NBVEUodnAsIG1vZGUsIG9mZnNldCwgbGVuKTsKIHJldDoKLSAgICB2bl91bmxvY2sodnApOwot
ICAgIHJldHVybiBlcnJvcjsKKwl2bl91bmxvY2sodnApOworCXJldHVybiBlcnJvcjsKIH0KIAog
aW50CiBzeXNfY2htb2QoY29uc3QgY2hhciAqcGF0aCwgbW9kZV90IG1vZGUpCiB7Ci0gICAgaW50
IGVycm9yOwotICAgIHN0cnVjdCBkZW50cnkgKmRwOwotICAgIERQUklOVEYoVkZTREJfU1lTQ0FM
TCwgKCJzeXNfY2htb2Q6IHBhdGg9JXNcbiIsIHBhdGgpKTsKLSAgICBlcnJvciA9IG5hbWVpKHBh
dGgsICZkcCk7Ci0gICAgaWYgKGVycm9yKQotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgaWYg
KGRwLT5kX21vdW50LT5tX2ZsYWdzICYgTU5UX1JET05MWSkgewotICAgICAgICBlcnJvciA9IEVS
T0ZTOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGVycm9yID0gdm5fc2V0bW9kZShkcC0+ZF92bm9k
ZSwgbW9kZSk7Ci0gICAgfQotICAgIGRyZWxlKGRwKTsKLSAgICByZXR1cm4gZXJyb3I7CisJaW50
IGVycm9yOworCXN0cnVjdCBkZW50cnkgKmRwOworCURQUklOVEYoVkZTREJfU1lTQ0FMTCwgKCJz
eXNfY2htb2Q6IHBhdGg9JXNcbiIsIHBhdGgpKTsKKwllcnJvciA9IG5hbWVpKHBhdGgsICZkcCk7
CisJaWYgKGVycm9yKQorCQlyZXR1cm4gZXJyb3I7CisJaWYgKGRwLT5kX21vdW50LT5tX2ZsYWdz
ICYgTU5UX1JET05MWSkgeworCQllcnJvciA9IEVST0ZTOworCX0gZWxzZSB7CisJCWVycm9yID0g
dm5fc2V0bW9kZShkcC0+ZF92bm9kZSwgbW9kZSk7CisJfQorCWRyZWxlKGRwKTsKKwlyZXR1cm4g
ZXJyb3I7CiB9CiAKIGludAogc3lzX2ZjaG1vZChpbnQgZmQsIG1vZGVfdCBtb2RlKQogewotICAg
IGZpbGVyZWYgZihmaWxlcmVmX2Zyb21fZmQoZmQpKTsKLSAgICBpZiAoIWYpCi0gICAgICAgIHJl
dHVybiBFQkFERjsKLSAgICAvLyBQb3NpeCBpcyBhbWJpdmFsZW50IG9uIHdoYXQgZmNobW9kKCkg
c2hvdWxkIGRvIG9uIGFuIGZkIHRoYXQgZG9lcyBub3QKLSAgICAvLyByZWZlciB0byBhIHJlYWwg
ZmlsZS4gSXQgc3VnZ2VzdHMgYW4gaW1wbGVtZW50YXRpb24gbWF5IChidXQgbm90IG11c3QpCi0g
ICAgLy8gZmFpbCBFSU5WQUwgb24gYSBwaXBlLCBjYW4gYmVoYXZlIGluIGFuICJ1bnNwZWNpZmll
ZCIgbWFubmVyIG9uIGEKLSAgICAvLyBzb2NrZXQsIGFuZCBmb3IgYSBTVFJFQU0sIGl0IG11c3Qg
c3VjY2VlZCBhbmQgZG8gbm90aGluZy4gTGludXggc2VlbXMKLSAgICAvLyB0byBqdXN0IGRvIHRo
ZSBsYXN0IHRoaW5nIChkbyBub3RoaW5nIGFuZCBzdWNjZWVkKS4KLSAgICBpZiAoIWYtPmZfZGVu
dHJ5KSB7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICBpZiAoZi0+Zl9kZW50cnktPmRf
bW91bnQtPm1fZmxhZ3MgJiBNTlRfUkRPTkxZKSB7Ci0gICAgICAgIHJldHVybiBFUk9GUzsKLSAg
ICB9IGVsc2UgewotICAgICAgICByZXR1cm4gdm5fc2V0bW9kZShmLT5mX2RlbnRyeS0+ZF92bm9k
ZSwgbW9kZSk7Ci0gICAgfQorCWZpbGVyZWYgZihmaWxlcmVmX2Zyb21fZmQoZmQpKTsKKwlpZiAo
IWYpCisJCXJldHVybiBFQkFERjsKKwkvLyBQb3NpeCBpcyBhbWJpdmFsZW50IG9uIHdoYXQgZmNo
bW9kKCkgc2hvdWxkIGRvIG9uIGFuIGZkIHRoYXQgZG9lcyBub3QKKwkvLyByZWZlciB0byBhIHJl
YWwgZmlsZS4gSXQgc3VnZ2VzdHMgYW4gaW1wbGVtZW50YXRpb24gbWF5IChidXQgbm90IG11c3Qp
CisJLy8gZmFpbCBFSU5WQUwgb24gYSBwaXBlLCBjYW4gYmVoYXZlIGluIGFuICJ1bnNwZWNpZmll
ZCIgbWFubmVyIG9uIGEKKwkvLyBzb2NrZXQsIGFuZCBmb3IgYSBTVFJFQU0sIGl0IG11c3Qgc3Vj
Y2VlZCBhbmQgZG8gbm90aGluZy4gTGludXggc2VlbXMKKwkvLyB0byBqdXN0IGRvIHRoZSBsYXN0
IHRoaW5nIChkbyBub3RoaW5nIGFuZCBzdWNjZWVkKS4KKwlpZiAoIWYtPmZfZGVudHJ5KSB7CisJ
CXJldHVybiAwOworCX0KKwlpZiAoZi0+Zl9kZW50cnktPmRfbW91bnQtPm1fZmxhZ3MgJiBNTlRf
UkRPTkxZKSB7CisJCXJldHVybiBFUk9GUzsKKwl9IGVsc2UgeworCQlyZXR1cm4gdm5fc2V0bW9k
ZShmLT5mX2RlbnRyeS0+ZF92bm9kZSwgbW9kZSk7CisJfQogfQpkaWZmIC0tZ2l0IGEvbGliL3Zm
c2NvcmUvdGFzay5jIGIvbGliL3Zmc2NvcmUvdGFzay5jCmluZGV4IDdhMzU1MDM0Li5iMmEwMjhj
NiAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvdGFzay5jCisrKyBiL2xpYi92ZnNjb3JlL3Rhc2su
YwpAQCAtNDgsNyArNDgsNyBAQCB0YXNrX2FsbG9jKHN0cnVjdCB0YXNrICoqcHQpCiB7CiAJc3Ry
dWN0IHRhc2sgKnQ7CiAKLSAgICAvLyBGSVhNRTogd2hlcmUgZG8gd2UgZnJlZSB0YXNrID8KKwkv
LyBGSVhNRTogd2hlcmUgZG8gd2UgZnJlZSB0YXNrID8KIAlpZiAoISh0ID0gbmV3IHRhc2spKQog
CQlyZXR1cm4gRU5PTUVNOwogCW1lbXNldCh0LCAwLCBzaXplb2Yoc3RydWN0IHRhc2spKTsKQEAg
LTE2MCw4ICsxNjAsOCBAQCB0YXNrX2NvbnYoc3RydWN0IHRhc2sgKnQsIGNvbnN0IGNoYXIgKmNw
YXRoLCBpbnQgYWNjLCBjaGFyICpmdWxsKQogICovCiBpbnQgdmZzX2RuYW1lX2NvcHkoY2hhciAq
ZGVzdCwgY29uc3QgY2hhciAqc3JjLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICBpZiAoc3RybGNweShk
ZXN0LCBzcmMsIHNpemUpID49IHNpemUpIHsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAg
ICByZXR1cm4gMDsKKwlpZiAoc3RybGNweShkZXN0LCBzcmMsIHNpemUpID49IHNpemUpIHsKKwkJ
cmV0dXJuIC0xOworCX0KKwlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3Zm
cy5oIGIvbGliL3Zmc2NvcmUvdmZzLmgKaW5kZXggZDg2ZWY5NTcuLjJiODI1NTIxIDEwMDY0NAot
LS0gYS9saWIvdmZzY29yZS92ZnMuaAorKysgYi9saWIvdmZzY29yZS92ZnMuaApAQCAtMTIwLDcg
KzEyMCw3IEBAIGludAkgc3lzX3RydW5jYXRlKGNoYXIgKnBhdGgsIG9mZl90IGxlbmd0aCk7CiBp
bnQJIHN5c19yZWFkbGluayhjaGFyICpwYXRoLCBjaGFyICpidWYsIHNpemVfdCBidWZzaXplLCBz
c2l6ZV90ICpzaXplKTsKIGludCAgc3lzX3V0aW1lcyhjaGFyICpwYXRoLCBjb25zdCBzdHJ1Y3Qg
dGltZXZhbCB0aW1lc1syXSwgaW50IGZsYWdzKTsKIGludCAgc3lzX3V0aW1lbnNhdChpbnQgZGly
ZmQsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLAotICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVj
dCB0aW1lc3BlYyB0aW1lc1syXSwgaW50IGZsYWdzKTsKKwkJCQkgICBjb25zdCBzdHJ1Y3QgdGlt
ZXNwZWMgdGltZXNbMl0sIGludCBmbGFncyk7CiBpbnQgIHN5c19mdXRpbWVucyhpbnQgZmQsIGNv
bnN0IHN0cnVjdCB0aW1lc3BlYyB0aW1lc1syXSk7CiBpbnQgIHN5c19mYWxsb2NhdGUoc3RydWN0
IGZpbGUgKmZwLCBpbnQgbW9kZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbik7CiAKZGlmZiAt
LWdpdCBhL2xpYi92ZnNjb3JlL3Zub2RlLmMgYi9saWIvdmZzY29yZS92bm9kZS5jCmluZGV4IGEy
OTIzNDRmLi4xMTllZDg3MCAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvdm5vZGUuYworKysgYi9s
aWIvdmZzY29yZS92bm9kZS5jCkBAIC0zNzEsMjIgKzM3MSwyMiBAQCB2bl9zdGF0KHN0cnVjdCB2
bm9kZSAqdnAsIHN0cnVjdCBzdGF0ICpzdCkKIGludAogdm5fc2V0dGltZXMoc3RydWN0IHZub2Rl
ICp2cCwgc3RydWN0IHRpbWVzcGVjIHRpbWVzWzJdKQogewotICAgIHN0cnVjdCB2YXR0ciB2YXR0
cjsKLSAgICBzdHJ1Y3QgdmF0dHIgKnZhcDsKLSAgICBpbnQgZXJyb3I7Ci0KLSAgICB2YXAgPSAm
dmF0dHI7Ci0gICAgbWVtc2V0KHZhcCwgMCwgc2l6ZW9mKHN0cnVjdCB2YXR0cikpOwotCi0gICAg
dmFwLT52YV9hdGltZSA9IHRpbWVzWzBdOwotICAgIHZhcC0+dmFfbXRpbWUgPSB0aW1lc1sxXTsK
LSAgICB2YXAtPnZhX21hc2sgPSAoKHRpbWVzWzBdLnR2X25zZWMgPT0gVVRJTUVfT01JVCkgPyAw
IDogQVRfQVRJTUUpCi0gICAgICAgICAgICAgICAgICAgIHwgKCh0aW1lc1sxXS50dl9uc2VjID09
IFVUSU1FX09NSVQpID8gMCA6IEFUX01USU1FKTsKLSAgICB2bl9sb2NrKHZwKTsKLSAgICBlcnJv
ciA9IFZPUF9TRVRBVFRSKHZwLCB2YXApOwotICAgIHZuX3VubG9jayh2cCk7Ci0KLSAgICByZXR1
cm4gZXJyb3I7CisJc3RydWN0IHZhdHRyIHZhdHRyOworCXN0cnVjdCB2YXR0ciAqdmFwOworCWlu
dCBlcnJvcjsKKworCXZhcCA9ICZ2YXR0cjsKKwltZW1zZXQodmFwLCAwLCBzaXplb2Yoc3RydWN0
IHZhdHRyKSk7CisKKwl2YXAtPnZhX2F0aW1lID0gdGltZXNbMF07CisJdmFwLT52YV9tdGltZSA9
IHRpbWVzWzFdOworCXZhcC0+dmFfbWFzayA9ICgodGltZXNbMF0udHZfbnNlYyA9PSBVVElNRV9P
TUlUKSA/IDAgOiBBVF9BVElNRSkKKwkJCQkJfCAoKHRpbWVzWzFdLnR2X25zZWMgPT0gVVRJTUVf
T01JVCkgPyAwIDogQVRfTVRJTUUpOworCXZuX2xvY2sodnApOworCWVycm9yID0gVk9QX1NFVEFU
VFIodnAsIHZhcCk7CisJdm5fdW5sb2NrKHZwKTsKKworCXJldHVybiBlcnJvcjsKIH0KIAogLyoK
QEAgLTM5NSwxNSArMzk1LDE1IEBAIHZuX3NldHRpbWVzKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVj
dCB0aW1lc3BlYyB0aW1lc1syXSkKIGludAogdm5fc2V0bW9kZShzdHJ1Y3Qgdm5vZGUgKnZwLCBt
b2RlX3QgbmV3X21vZGUpCiB7Ci0gICAgc3RydWN0IHZhdHRyIHZhdHRyOwotICAgIG1lbXNldCgm
dmF0dHIsIDAsIHNpemVvZih2YXR0cikpOwotICAgIHZhdHRyLnZhX21vZGUgPSBuZXdfbW9kZTsK
LSAgICB2YXR0ci52YV9tYXNrID0gQVRfTU9ERTsKLSAgICB2bl9sb2NrKHZwKTsKLSAgICB2cC0+
dl9tb2RlID0gbmV3X21vZGU7Ci0gICAgaW50IGVycm9yID0gVk9QX1NFVEFUVFIodnAsICZ2YXR0
cik7Ci0gICAgdm5fdW5sb2NrKHZwKTsKLSAgICByZXR1cm4gZXJyb3I7CisJc3RydWN0IHZhdHRy
IHZhdHRyOworCW1lbXNldCgmdmF0dHIsIDAsIHNpemVvZih2YXR0cikpOworCXZhdHRyLnZhX21v
ZGUgPSBuZXdfbW9kZTsKKwl2YXR0ci52YV9tYXNrID0gQVRfTU9ERTsKKwl2bl9sb2NrKHZwKTsK
Kwl2cC0+dl9tb2RlID0gbmV3X21vZGU7CisJaW50IGVycm9yID0gVk9QX1NFVEFUVFIodnAsICZ2
YXR0cik7CisJdm5fdW5sb2NrKHZwKTsKKwlyZXR1cm4gZXJyb3I7CiB9CiAKIC8qCi0tIAoyLjE5
LjIKCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWlu
aW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcK
aHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZl
bA==

From minios-devel-bounces@lists.xenproject.org Mon Feb 04 14:43:45 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 04 Feb 2019 14:43:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gqfTN-0007Uy-Fe; Mon, 04 Feb 2019 14:43:45 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Kl24=QL=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gqfTM-0007Us-NJ
 for minios-devel@lists.xen.org; Mon, 04 Feb 2019 14:43:44 +0000
X-Inumbo-ID: 42e9d79e-288b-11e9-88ad-bbcd04204ba5
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 42e9d79e-288b-11e9-88ad-bbcd04204ba5;
 Mon, 04 Feb 2019 14:43:40 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 36179F2067;
 Mon,  4 Feb 2019 15:38:39 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id OPrOR_C8CxlE; Mon,  4 Feb 2019 15:38:39 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 0B354F203D
 for <minios-devel@lists.xen.org>; Mon,  4 Feb 2019 15:38:37 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 4 Feb 2019 15:38:27 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>, <Simon.kuenzer@neclab.eu>,
 <sharan.santhanam@neclab.eu>
Date: Mon, 4 Feb 2019 15:37:03 +0100
Message-ID: <20190204143739.29249-12-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 11/23] lib/vfscore: introduce
 UK_FS_REGISTER
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhlIG1hY3JvIHJlZ2lzdGVycyB0aGUgZmlsZXN5c3RlbSBpbiB0aGUgc3RhdGljIGFycmF5CgpT
aWduZWQtb2ZmLWJ5OiBZdXJpIFZvbGNoa292IDx5dXJpLnZvbGNoa292QG5lY2xhYi5ldT4KLS0t
CiBsaWIvdmZzY29yZS9NYWtlZmlsZS51ayAgICAgICAgICAgICB8ICAyICsrCiBsaWIvdmZzY29y
ZS9leHRyYS5sZCAgICAgICAgICAgICAgICB8ICA5ICsrKysrKysrKwogbGliL3Zmc2NvcmUvaW5j
bHVkZS92ZnNjb3JlL21vdW50LmggfCAgNiArKysrKy0KIGxpYi92ZnNjb3JlL21vdW50LmMgICAg
ICAgICAgICAgICAgIHwgMjQgKysrKysrKysrKysrKysrKysrLS0tLS0tCiA0IGZpbGVzIGNoYW5n
ZWQsIDM0IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQg
bGliL3Zmc2NvcmUvZXh0cmEubGQKCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9NYWtlZmlsZS51
ayBiL2xpYi92ZnNjb3JlL01ha2VmaWxlLnVrCmluZGV4IDEyNDZhZTUzLi4wNjkzM2Q5NiAxMDA2
NDQKLS0tIGEvbGliL3Zmc2NvcmUvTWFrZWZpbGUudWsKKysrIGIvbGliL3Zmc2NvcmUvTWFrZWZp
bGUudWsKQEAgLTUsMyArNSw1IEBAIENJTkNMVURFUy15ICs9IC1JJChMSUJWRlNDT1JFX0JBU0Up
L2luY2x1ZGUKIExJQlZGU0NPUkVfU1JDUy15ICs9ICQoTElCVkZTQ09SRV9CQVNFKS9mZC5jCiBM
SUJWRlNDT1JFX1NSQ1MteSArPSAkKExJQlZGU0NPUkVfQkFTRSkvZmlsZS5jCiBMSUJWRlNDT1JF
X1NSQ1MteSArPSAkKExJQlZGU0NPUkVfQkFTRSkvc3RkaW8uYworCitFWFRSQV9MRF9TQ1JJUFQt
JChDT05GSUdfTElCVkZTQ09SRSkgKz0gJChMSUJWRlNDT1JFX0JBU0UpL2V4dHJhLmxkClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvZXh0cmEubGQg
Yi9saWIvdmZzY29yZS9leHRyYS5sZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MC4uMTczYjIzNTAKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvdmZzY29yZS9leHRyYS5sZApAQCAt
MCwwICsxLDkgQEAKK1NFQ1RJT05TCit7CisJLnVrX2ZzX2xpc3QgOiB7CisJCVBST1ZJREUodWtf
ZnNsaXN0X3N0YXJ0ID0gLik7CisJCUtFRVAgKCooLnVrX2ZzX2xpc3QpKQorICAgICAgICAgICAg
ICAgIFBST1ZJREUodWtfZnNsaXN0X2VuZCA9IC4pOworCX0KK30KK0lOU0VSVCBBRlRFUiAudGV4
dDsKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9tb3VudC5oIGIvbGli
L3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmgKaW5kZXggN2E2MzhkYmUuLmI0YTA3MzIz
IDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvbW91bnQuaAorKysgYi9s
aWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvbW91bnQuaApAQCAtMTAwLDEyICsxMDAsMTYgQEAg
c3RydWN0IG1vdW50IHsKIC8qCiAgKiBGaWxlc3lzdGVtIHR5cGUgc3dpdGNoIHRhYmxlLgogICov
Ci1zdHJ1Y3QgdmZzc3cgeworc3RydWN0IHZmc2NvcmVfZnNfdHlwZSB7CiAJY29uc3QgY2hhciAg
ICAgICp2c19uYW1lOwkvKiBuYW1lIG9mIGZpbGUgc3lzdGVtICovCiAJaW50CQkoKnZzX2luaXQp
KHZvaWQpOyAvKiBpbml0aWFsaXplIHJvdXRpbmUgKi8KIAlzdHJ1Y3QgdmZzb3BzCSp2c19vcDsJ
CS8qIHBvaW50ZXIgdG8gdmZzIG9wZXJhdGlvbiAqLwogfTsKIAorI2RlZmluZSBVS19GU19SRUdJ
U1RFUihmc3N3KQkJCQkJXAorCXN0YXRpYyB2b2lkIF9fYXR0cmlidXRlKChfX3NlY3Rpb25fXygi
LnVrX2ZzX2xpc3QiKSkpCVwKKwkJKl9fcHRyXyMjZnNzdyBfX3VzZWQgPSAmZnNzdzsJCQkJXAor
CiAvKgogICogT3BlcmF0aW9ucyBzdXBwb3J0ZWQgb24gdmlydHVhbCBmaWxlIHN5c3RlbS4KICAq
LwpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvbW91bnQuYyBiL2xpYi92ZnNjb3JlL21vdW50LmMK
aW5kZXggZTEyYzAwMzMuLmRhZWQ4N2ZhIDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9tb3VudC5j
CisrKyBiL2xpYi92ZnNjb3JlL21vdW50LmMKQEAgLTYyLDIwICs2MiwzMiBAQCBVS19MSVNUX0hF
QUQobW91bnRfbGlzdCk7CiAgKi8KIHN0YXRpYyBzdHJ1Y3QgdWtfbXV0ZXggbW91bnRfbG9jazsK
IAorZXh0ZXJuIGNvbnN0IHN0cnVjdCB2ZnNjb3JlX2ZzX3R5cGUgKnVrX2ZzbGlzdF9zdGFydDsK
K2V4dGVybiBjb25zdCBzdHJ1Y3QgdmZzY29yZV9mc190eXBlICp1a19mc2xpc3RfZW5kOworCisj
ZGVmaW5lIGZvcl9lYWNoX2ZzKGl0ZXIpCQkJXAorCWZvciAoaXRlciA9ICZ1a19mc2xpc3Rfc3Rh
cnQ7CVwKKwkgICAgIGl0ZXIgPCAmdWtfZnNsaXN0X2VuZDsJCVwKKwkgICAgIGl0ZXIrKykKKwog
LyoKICAqIExvb2t1cCBmaWxlIHN5c3RlbS4KICAqLwotc3RhdGljIGNvbnN0IHN0cnVjdCB2ZnNz
dyAqCitzdGF0aWMgY29uc3Qgc3RydWN0IHZmc2NvcmVfZnNfdHlwZSAqCiBmc19nZXRmcyhjb25z
dCBjaGFyICpuYW1lKQogewotCWNvbnN0IHN0cnVjdCB2ZnNzdyAqZnM7CisJY29uc3Qgc3RydWN0
IHZmc2NvcmVfZnNfdHlwZSAqZnMgPSBOVUxMLCAqKl9fZnM7CisKKwlmb3JfZWFjaF9mcyhfX2Zz
KSB7CisJCWZzID0gKl9fZnM7CisJCWlmIChmcyA9PSBOVUxMKQorCQkJY29udGludWU7CiAKLQlm
b3IgKGZzID0gdmZzc3c7IGZzLT52c19uYW1lOyBmcysrKSB7CiAJCWlmICghc3RybmNtcChuYW1l
LCBmcy0+dnNfbmFtZSwgRlNNQVhOQU1FUykpCiAJCQlicmVhazsKIAl9Ci0JaWYgKCFmcy0+dnNf
bmFtZSkKLQkJcmV0dXJuIG51bGxwdHI7CisJaWYgKCFmcyB8fCAhZnMtPnZzX25hbWUpCisJCXJl
dHVybiBOVUxMOwogCXJldHVybiBmczsKIH0KIApAQCAtOTksNyArMTExLDcgQEAgaW50IGRldmlj
ZV9jbG9zZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiBpbnQKIHN5c19tb3VudChjb25zdCBjaGFyICpk
ZXYsIGNvbnN0IGNoYXIgKmRpciwgY29uc3QgY2hhciAqZnNuYW1lLCBpbnQgZmxhZ3MsIGNvbnN0
IHZvaWQgKmRhdGEpCiB7Ci0JY29uc3Qgc3RydWN0IHZmc3N3ICpmczsKKwljb25zdCBzdHJ1Y3Qg
dmZzY29yZV9mc190eXBlICpmczsKIAlzdHJ1Y3QgbW91bnQgKm1wOwogCXN0cnVjdCBkZXZpY2Ug
KmRldmljZTsKIAlzdHJ1Y3QgZGVudHJ5ICpkcF9jb3ZlcmVkID0gTlVMTDsKLS0gCjIuMTkuMgoK
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1k
ZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBz
Oi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Feb 04 14:43:49 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 04 Feb 2019 14:43:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gqfTR-0007Vf-Ha; Mon, 04 Feb 2019 14:43:49 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Kl24=QL=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gqfTQ-0007VX-To
 for minios-devel@lists.xen.org; Mon, 04 Feb 2019 14:43:48 +0000
X-Inumbo-ID: 46472c02-288b-11e9-9adb-6f2d665219eb
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 46472c02-288b-11e9-9adb-6f2d665219eb;
 Mon, 04 Feb 2019 14:43:46 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 7148EF203D;
 Mon,  4 Feb 2019 15:38:44 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id xRDanugolmUu; Mon,  4 Feb 2019 15:38:44 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 44048F2065
 for <minios-devel@lists.xen.org>; Mon,  4 Feb 2019 15:38:42 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 4 Feb 2019 15:38:42 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>, <Simon.kuenzer@neclab.eu>,
 <sharan.santhanam@neclab.eu>
Date: Mon, 4 Feb 2019 15:37:05 +0100
Message-ID: <20190204143739.29249-14-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 13/23] lib/vfscore: introduce
 fget, fdrop, fdalloc
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkIGluIHRoZSBpbXBvcnRlZCBjb2RlLCB3aGljaCBpcyBu
b3QgZW5hYmxlZAp5ZXQuIFRoaXMgcmVxdWlyZWQgdG8gZXhwYW5kIGZ1bmN0aW9uYWxpdHkgb2Yg
dmZzY29yZV9pbnN0YWxsX2ZkIGFuZApmcmllbmRzIHdpdGggbG9ja2luZyBhbmQgcmVmZXJlbmNl
IGNvdW50aW5nLgoKU2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBu
ZWNsYWIuZXU+Ci0tLQogbGliL3Zmc2NvcmUvZmQuYyAgICAgICAgICAgICAgICAgICB8IDY3ICsr
KysrKysrKysrKysrKysrKysrKysrKysrKystLQogbGliL3Zmc2NvcmUvZmlsZS5jICAgICAgICAg
ICAgICAgICB8IDIyICsrKysrKysrKy0KIGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9maWxl
LmggfCAgOSArKystCiAzIGZpbGVzIGNoYW5nZWQsIDkyIGluc2VydGlvbnMoKyksIDYgZGVsZXRp
b25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvZmQuYyBiL2xpYi92ZnNjb3JlL2ZkLmMK
aW5kZXggNmMyMjA0MjguLjlkMmFmZTVhIDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9mZC5jCisr
KyBiL2xpYi92ZnNjb3JlL2ZkLmMKQEAgLTc0LDIwICs3NCw0MSBAQCBleGl0OgogCiB2b2lkIHZm
c2NvcmVfcHV0X2ZkKGludCBmZCkKIHsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCiAJVUtfQVNT
RVJUKGZkIDwgKGludCkgRkRUQUJMRV9NQVhfRklMRVMpOwogCS8qIEN1cnJlbnRseSBpdCBpcyBu
b3QgYWxsb3dlZCB0byBmcmVlIHN0ZChpbnxvdXR8ZXJyKSAqLwogCVVLX0FTU0VSVChmZCA+IDIp
OwogCi0JX191a19jbGVhcl9iaXQoZmQsICZmZHRhYmxlLmJpdG1hcCk7CisJZmxhZ3MgPSB1a3Bs
YXRfbGNwdV9zYXZlX2lycWYoKTsKKwlfX3VrX2NsZWFyX2JpdChmZCwgJmZkdGFibGUuYml0bWFw
KTtcCisJZmR0YWJsZS5maWxlc1tmZF0gPSBOVUxMOworCXVrcGxhdF9sY3B1X3Jlc3RvcmVfaXJx
ZihmbGFncyk7CiB9CiAKLXZvaWQgdmZzY29yZV9pbnN0YWxsX2ZkKGludCBmZCwgc3RydWN0IHZm
c2NvcmVfZmlsZSAqZmlsZSkKK2ludCB2ZnNjb3JlX2luc3RhbGxfZmQoaW50IGZkLCBzdHJ1Y3Qg
dmZzY29yZV9maWxlICpmaWxlKQogewotCVVLX0FTU0VSVChmZCA8IChpbnQpIEZEVEFCTEVfTUFY
X0ZJTEVTKTsKLQlVS19BU1NFUlQoZmlsZSk7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwlzdHJ1
Y3QgdmZzY29yZV9maWxlICpvcmlnOworCisJaWYgKChmZCA+PSAoaW50KSBGRFRBQkxFX01BWF9G
SUxFUykgfHwgKCFmaWxlKSkKKwkJcmV0dXJuIC1FQkFERjsKKworCWZob2xkKGZpbGUpOwogCiAJ
ZmlsZS0+ZmQgPSBmZDsKKworCWZsYWdzID0gdWtwbGF0X2xjcHVfc2F2ZV9pcnFmKCk7CisJb3Jp
ZyA9IGZkdGFibGUuZmlsZXNbZmRdOwogCWZkdGFibGUuZmlsZXNbZmRdID0gZmlsZTsKKwl1a3Bs
YXRfbGNwdV9yZXN0b3JlX2lycWYoZmxhZ3MpOworCisJZmRyb3AoZmlsZSk7CisKKwlpZiAob3Jp
ZykKKwkJZmRyb3Aob3JpZyk7CisKKwlyZXR1cm4gMDsKIH0KIAogc3RydWN0IHZmc2NvcmVfZmls
ZSAqdmZzY29yZV9nZXRfZmlsZShpbnQgZmQpCkBAIC0xMDEsMTIgKzEyMiw1MCBAQCBzdHJ1Y3Qg
dmZzY29yZV9maWxlICp2ZnNjb3JlX2dldF9maWxlKGludCBmZCkKIAlpZiAoIShmZHRhYmxlLmJp
dG1hcCAmICgodWludDY0X3QpIDEgPDwgZmQpKSkKIAkJZ290byBleGl0OwogCXJldCA9IGZkdGFi
bGUuZmlsZXNbZmRdOworCWZob2xkKHJldCk7CiAKIGV4aXQ6CiAJdWtwbGF0X2xjcHVfcmVzdG9y
ZV9pcnFmKGZsYWdzKTsKIAlyZXR1cm4gcmV0OwogfQogCitpbnQgZmdldChpbnQgZmQsIHN0cnVj
dCB2ZnNjb3JlX2ZpbGUgKipvdXRfZnApCit7CisJaW50IHJldCA9IDA7CisJc3RydWN0IHZmc2Nv
cmVfZmlsZSAqZnAgPSB2ZnNjb3JlX2dldF9maWxlKGZkKTsKKworCWlmICghZnApCisJCXJldCA9
IEVCQURGOworCWVsc2UKKwkJKm91dF9mcCA9IGZwOworCisJcmV0dXJuIHJldDsKK30KKworaW50
IGZkYWxsb2Moc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAsIGludCAqbmV3ZmQpCit7CisJaW50IGZk
LCByZXQgPSAwOworCisJZmhvbGQoZnApOworCisJZmQgPSB2ZnNjb3JlX2FsbG9jX2ZkKCk7CisJ
aWYgKGZkIDwgMCkgeworCQlyZXQgPSBmZDsKKwkJZ290byBleGl0OworCX0KKworCXJldCA9IHZm
c2NvcmVfaW5zdGFsbF9mZChmZCwgZnApOworCWlmIChyZXQpCisJCWZkcm9wKGZwKTsKKwllbHNl
CisJCSpuZXdmZCA9IGZkOworCitleGl0OgorCXJldHVybiByZXQ7Cit9CisKKworLyogVE9ETzog
bW92ZSB0aGlzIGNvbnN0cnVjdG9yIHRvIG1haW4uYyAqLwogX19jb25zdHJ1Y3RvciBzdGF0aWMg
dm9pZCBmZHRhYmxlX2luaXQodm9pZCkKIHsKIAltZW1zZXQoJmZkdGFibGUsIDAsIHNpemVvZihm
ZHRhYmxlKSk7CmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9maWxlLmMgYi9saWIvdmZzY29yZS9m
aWxlLmMKaW5kZXggZTdhZGYxYTMuLjBmNmRmYTkzIDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9m
aWxlLmMKKysrIGIvbGliL3Zmc2NvcmUvZmlsZS5jCkBAIC0zOCw3ICszOCw3IEBACiAjaW5jbHVk
ZSA8dWsvcHJpbnQuaD4KICNpbmNsdWRlIDx2ZnNjb3JlL2ZpbGUuaD4KICNpbmNsdWRlIDx1ay9h
c3NlcnQuaD4KLQorI2luY2x1ZGUgPHVrL2FyY2gvYXRvbWljLmg+CiAKIGludCBjbG9zZShpbnQg
ZmQpCiB7CkBAIC05NSwzICs5NSwyMyBAQCBzc2l6ZV90IHJlYWQoaW50IGZkLCB2b2lkICpidWYs
IHNpemVfdCBjb3VudCkKIAogCXJldHVybiBmaWxlLT5mb3BzLT5yZWFkKGZpbGUsIGJ1ZiwgY291
bnQpOwogfQorCisvKiBUT0RPOiByZW1vdmUgc3R1YiAqLworI2RlZmluZSB2ZnNfY2xvc2UoZnAp
ICgwKQorCitpbnQgZmRyb3Aoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnApCit7CisJaW50IHJldCA9
IDA7CisJaW50IHByZXYgPSB1a2FyY2hfZGVjKCZmcC0+Zl9jb3VudCk7CisKKwlpZiAocHJldiA9
PSAwKQorCQlVS19DUkFTSCgiVW5iYWxhbmNlZCBmaG9sZC9mZHJvcCIpOworCisJaWYgKHByZXYg
PT0gMSkKKwkJcmV0ID0gdmZzX2Nsb3NlKGZwKTsKKwlyZXR1cm4gcmV0OworfQordm9pZCBmaG9s
ZChzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCkKK3sKKwl1a2FyY2hfaW5jKCZmcC0+Zl9jb3VudCk7
Cit9CmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZmlsZS5oIGIvbGli
L3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2ZpbGUuaAppbmRleCA2OGJiZjkyYy4uMTZhZjViYTMg
MTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9maWxlLmgKKysrIGIvbGli
L3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2ZpbGUuaApAQCAtNTQsMTQgKzU0LDIxIEBAIHN0cnVj
dCB2ZnNjb3JlX2ZvcHMgewogCiBzdHJ1Y3QgdmZzY29yZV9maWxlIHsKIAlpbnQgZmQ7CisJaW50
CQlmX2NvdW50OwkvKiByZWZlcmVuY2UgY291bnQgKi8KIAljb25zdCBzdHJ1Y3QgdmZzY29yZV9m
b3BzICpmb3BzOwogfTsKIAogaW50IHZmc2NvcmVfYWxsb2NfZmQodm9pZCk7CiB2b2lkIHZmc2Nv
cmVfcHV0X2ZkKGludCBmZCk7Ci12b2lkIHZmc2NvcmVfaW5zdGFsbF9mZChpbnQgZmQsIHN0cnVj
dCB2ZnNjb3JlX2ZpbGUgKmZpbGUpOworaW50IHZmc2NvcmVfaW5zdGFsbF9mZChpbnQgZmQsIHN0
cnVjdCB2ZnNjb3JlX2ZpbGUgKmZpbGUpOwogc3RydWN0IHZmc2NvcmVfZmlsZSAqdmZzY29yZV9n
ZXRfZmlsZShpbnQgZmQpOwogCisvKgorICogRmlsZSBkZXNjcmlwdG9ycyByZWZlcmVuY2UgY291
bnQKKyAqLwordm9pZCBmaG9sZChzdHJ1Y3QgdmZzY29yZV9maWxlKiBmcCk7CitpbnQgZmRyb3Ao
c3RydWN0IHZmc2NvcmVfZmlsZSogZnApOworCiAjZGVmaW5lIEZPRl9PRkZTRVQgIDB4MDgwMCAg
ICAvKiBVc2UgdGhlIG9mZnNldCBpbiB1aW8gYXJndW1lbnQgKi8KIAogI2lmZGVmIF9fY3BsdXNw
bHVzCi0tIAoyLjE5LjIKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5w
cm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8v
bWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Feb 04 14:44:05 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 04 Feb 2019 14:44:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gqfTh-0007X8-Jx; Mon, 04 Feb 2019 14:44:05 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Kl24=QL=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gqfTg-0007X0-6d
 for minios-devel@lists.xen.org; Mon, 04 Feb 2019 14:44:04 +0000
X-Inumbo-ID: 4f173f0c-288b-11e9-88ba-f3acc5e83556
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 4f173f0c-288b-11e9-88ba-f3acc5e83556;
 Mon, 04 Feb 2019 14:44:01 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 186B7104D64;
 Mon,  4 Feb 2019 15:38:52 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id DWhe_ffrq04Z; Mon,  4 Feb 2019 15:38:52 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id EE4FF104D63
 for <minios-devel@lists.xen.org>; Mon,  4 Feb 2019 15:38:49 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 4 Feb 2019 15:38:49 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>, <Simon.kuenzer@neclab.eu>,
 <sharan.santhanam@neclab.eu>
Date: Mon, 4 Feb 2019 15:37:08 +0100
Message-ID: <20190204143739.29249-17-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 16/23] lib/vfscore: remove
 _KERNEL ifdefs
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

QWxsIHRoaXMgY29kZSBpcyBydW5uaW5nIGluIGtlcm5lbAoKU2lnbmVkLW9mZi1ieTogWXVyaSBW
b2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0tLQogbGliL3Zmc2NvcmUvaW5jbHVk
ZS92ZnNjb3JlL21vdW50LmggfCA1IC0tLS0tCiBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUv
dm5vZGUuaCB8IDMgLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDggZGVsZXRpb25zKC0pCgpkaWZmIC0t
Z2l0IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmggYi9saWIvdmZzY29yZS9p
bmNsdWRlL3Zmc2NvcmUvbW91bnQuaAppbmRleCBhMTIyN2NiZS4uZmFjN2Q5NTQgMTAwNjQ0Ci0t
LSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9tb3VudC5oCisrKyBiL2xpYi92ZnNjb3Jl
L2luY2x1ZGUvdmZzY29yZS9tb3VudC5oCkBAIC0zNyw4ICszNyw2IEBACiAjaW5jbHVkZSA8dWsv
bGlzdC5oPgogI2luY2x1ZGUgPHZmc2NvcmUvdm5vZGUuaD4KIAotI2lmZGVmIF9LRVJORUwKLQog
LyoKICAqIE1vdW50IGRhdGEKICAqLwpAQCAtNTYsNyArNTQsNiBAQCBzdHJ1Y3QgbW91bnQgewog
CWZzaWRfdCAJCW1fZnNpZDsgCS8qIGlkIHRoYXQgdW5pcXVlbHkgaWRlbnRpZmllcyB0aGUgZnMg
Ki8KIH07CiAKLSNlbmRpZgogCiAvKgogICogTW91bnQgZmxhZ3MuCkBAIC05NSw4ICs5Miw2IEBA
IHN0cnVjdCBtb3VudCB7CiAgKi8KICNkZWZpbmUJTU5UX1ZJU0ZMQUdNQVNLCTB4MDAwMGZmZmYK
IAotI2lmZGVmIF9LRVJORUwKLQogLyoKICAqIEZpbGVzeXN0ZW0gdHlwZSBzd2l0Y2ggdGFibGUu
CiAgKi8KZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5oIGIv
bGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Zub2RlLmgKaW5kZXggMDhiOGU1NjIuLmZlMTRi
YzgyIDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUuaAorKysg
Yi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUuaApAQCAtMzMsOCArMzMsNiBAQAog
I2lmbmRlZiBfU1lTX1ZOT0RFX0hfCiAjZGVmaW5lIF9TWVNfVk5PREVfSF8KIAotI2lmZGVmIF9L
RVJORUwKLQogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAjaW5jbHVkZSA8ZGlyZW50Lmg+CiAKQEAg
LTI2MSw2ICsyNTksNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgdm5vZGVfcGFnZXJfc2V0c2l6ZShz
dHJ1Y3Qgdm5vZGUgKnZwLCBvZmZfdCBzaXplKQogCXZwLT52X3NpemUgPSBzaXplOwogfQogCi0j
ZW5kaWYKIAogI2VuZGlmIC8qICFfU1lTX1ZOT0RFX0hfICovCi0tIAoyLjE5LjIKCgpfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFp
bGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3Rz
LnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Feb 04 14:44:07 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 04 Feb 2019 14:44:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gqfTj-0007Xf-Lh; Mon, 04 Feb 2019 14:44:07 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Kl24=QL=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gqfTi-0007XR-D6
 for minios-devel@lists.xen.org; Mon, 04 Feb 2019 14:44:06 +0000
X-Inumbo-ID: 5070e916-288b-11e9-89f0-036eca30ffdc
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 5070e916-288b-11e9-89f0-036eca30ffdc;
 Mon, 04 Feb 2019 14:44:04 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id B0645F206F;
 Mon,  4 Feb 2019 15:38:54 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id CbOX5XoylXpN; Mon,  4 Feb 2019 15:38:54 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 8CFD4F2065
 for <minios-devel@lists.xen.org>; Mon,  4 Feb 2019 15:38:52 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 4 Feb 2019 15:38:52 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>, <Simon.kuenzer@neclab.eu>,
 <sharan.santhanam@neclab.eu>
Date: Mon, 4 Feb 2019 15:37:09 +0100
Message-ID: <20190204143739.29249-18-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 17/23] lib/vfscore: introduce
 fdclose
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogbGliL3Zmc2NvcmUvbWFpbi5jIHwgMTkgKysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNo
YW5nZWQsIDE5IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9tYWluLmMg
Yi9saWIvdmZzY29yZS9tYWluLmMKaW5kZXggMTE2NGIzMGIuLjBmZjhkMzkwIDEwMDY0NAotLS0g
YS9saWIvdmZzY29yZS9tYWluLmMKKysrIGIvbGliL3Zmc2NvcmUvbWFpbi5jCkBAIC0yMDUsNiAr
MjA1LDI1IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2Nsb3NlLCAiJWQiLCBpbnQpOwogVFJBQ0VQ
T0lOVCh0cmFjZV92ZnNfY2xvc2VfcmV0LCAiIik7CiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19jbG9z
ZV9lcnIsICIlZCIsIGludCk7CiAKK2ludCBmZGNsb3NlKGludCBmZCkKK3sKKwlzdHJ1Y3QgdmZz
Y29yZV9maWxlICpmcDsKKworCWZwID0gdmZzY29yZV9nZXRfZmlsZShmZCk7CisJaWYgKCFmcCkK
KwkJcmV0dXJuIEVCQURGOworCisJdmZzY29yZV9wdXRfZmQoZmQpOworCS8qIHZmc2NvcmVfZ2V0
X2ZpbGUgaW5jcmVhc2VzIHRoZSBmX2NvdW50LiBUaGUgZmlyc3QgZmRyb3AgaXMKKwkgKiB0byBk
ZWNyZW1lbnQgaXQgYmFjay4gVGhlIHNlY29uZCBpcyBhbiBhY3R1YWwgcmVkdWNpbmcgd2UKKwkg
KiBhcmUgc3VwcG9zZWQgdG8gZG8gd2hpbGUgcGVyZm9ybWluZyBmZGNsb3NlKCkKKwkgKi8KKwlm
ZHJvcChmcCk7CisJZmRyb3AoZnApOworCisJcmV0dXJuIDA7Cit9CisKIGludCBjbG9zZShpbnQg
ZmQpCiB7CiAJaW50IGVycm9yOwotLSAKMi4xOS4yCgoKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3Mt
ZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9t
YWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Feb 04 14:44:07 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 04 Feb 2019 14:44:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gqfTj-0007Xk-O2; Mon, 04 Feb 2019 14:44:07 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Kl24=QL=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gqfTi-0007XX-Jx
 for minios-devel@lists.xen.org; Mon, 04 Feb 2019 14:44:06 +0000
X-Inumbo-ID: 50013760-288b-11e9-a3ac-2bb3be1d56b3
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 50013760-288b-11e9-a3ac-2bb3be1d56b3;
 Mon, 04 Feb 2019 14:44:04 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id D3090F2070;
 Mon,  4 Feb 2019 15:38:59 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 0hmxp3HkQI6W; Mon,  4 Feb 2019 15:38:59 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id A9A25F2065
 for <minios-devel@lists.xen.org>; Mon,  4 Feb 2019 15:38:57 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 4 Feb 2019 15:38:57 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>, <Simon.kuenzer@neclab.eu>,
 <sharan.santhanam@neclab.eu>
Date: Mon, 4 Feb 2019 15:37:11 +0100
Message-ID: <20190204143739.29249-20-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 19/23] lib/vfscore: fix compiler
 complains
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Zub2RlLmggfCAgMiArLQogbGliL3Zmc2Nv
cmUvbWFpbi5jICAgICAgICAgICAgICAgICAgfCAyNCArKysrKysrKysrKystLS0tLS0tLS0tLS0K
IGxpYi92ZnNjb3JlL3N5c2NhbGxzLmMgICAgICAgICAgICAgIHwgIDggKysrKy0tLS0KIGxpYi92
ZnNjb3JlL3Rhc2suYyAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGxpYi92ZnNjb3JlL3Zub2Rl
LmMgICAgICAgICAgICAgICAgIHwgIDggKysrKy0tLS0KIDUgZmlsZXMgY2hhbmdlZCwgMjIgaW5z
ZXJ0aW9ucygrKSwgMjIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvaW5j
bHVkZS92ZnNjb3JlL3Zub2RlLmggYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUu
aAppbmRleCBmZTE0YmM4Mi4uMTM0OGY1NzkgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2luY2x1
ZGUvdmZzY29yZS92bm9kZS5oCisrKyBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9k
ZS5oCkBAIC0xNjcsNyArMTY3LDcgQEAgdHlwZWRlZglpbnQgKCp2bm9wX3RydW5jYXRlX3QpCShz
dHJ1Y3Qgdm5vZGUgKiwgb2ZmX3QpOwogdHlwZWRlZglpbnQgKCp2bm9wX2xpbmtfdCkgICAgICAo
c3RydWN0IHZub2RlICosIHN0cnVjdCB2bm9kZSAqLCBjaGFyICopOwogdHlwZWRlZiBpbnQgKCp2
bm9wX2NhY2hlX3QpIChzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHZmc2NvcmVfZmlsZSAqLCBzdHJ1
Y3QgdWlvICopOwogdHlwZWRlZiBpbnQgKCp2bm9wX2ZhbGxvY2F0ZV90KSAoc3RydWN0IHZub2Rl
ICosIGludCwgb2ZmX3QsIG9mZl90KTsKLXR5cGVkZWYgaW50ICgqdm5vcF9yZWFkbGlua190KSAg
KHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgdWlvICopOwordHlwZWRlZiBzc2l6ZV90ICgqdm5vcF9y
ZWFkbGlua190KSAgKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgdWlvICopOwogdHlwZWRlZiBpbnQg
KCp2bm9wX3N5bWxpbmtfdCkgICAoc3RydWN0IHZub2RlICosIGNoYXIgKiwgY2hhciAqKTsKIAog
LyoKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL21haW4uYyBiL2xpYi92ZnNjb3JlL21haW4uYwpp
bmRleCAwZmY4ZDM5MC4uZDdhYmE3NTYgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL21haW4uYwor
KysgYi9saWIvdmZzY29yZS9tYWluLmMKQEAgLTI0Niw4ICsyNDYsNyBAQCBUUkFDRVBPSU5UKHRy
YWNlX3Zmc19ta25vZCwgIlwiJXNcIiAwJTBvIDB4JXgiLCBjb25zdCBjaGFyKiwgbW9kZV90LCBk
ZXZfdCk7CiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19ta25vZF9yZXQsICIiKTsKIFRSQUNFUE9JTlQo
dHJhY2VfdmZzX21rbm9kX2VyciwgIiVkIiwgaW50KTsKIAotCi1pbnQgX194bWtub2QoaW50IHZl
ciwgY29uc3QgY2hhciAqcGF0aG5hbWUsIG1vZGVfdCBtb2RlLCBkZXZfdCAqZGV2KQoraW50IF9f
eG1rbm9kKGludCB2ZXIsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBtb2RlX3QgbW9kZSwgZGV2X3Qg
KmRldiBfX3VudXNlZCkKIHsKIAlVS19BU1NFUlQodmVyID09IDApOyAvLyBPbiB4ODYtNjQgTGlu
dXgsIF9NS05PRF9WRVJfTElOVVggaXMgMC4KIAlzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsK
QEAgLTU0MSw3ICs1NDAsNyBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19mc3RhdCwgIiVkICVwIiwg
aW50LCBzdHJ1Y3Qgc3RhdCopOwogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZnN0YXRfcmV0LCAiIik7
CiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19mc3RhdF9lcnIsICIlZCIsIGludCk7CiAKLWludCBfX2Z4
c3RhdChpbnQgdmVyLCBpbnQgZmQsIHN0cnVjdCBzdGF0ICpzdCkKK2ludCBfX2Z4c3RhdChpbnQg
dmVyIF9fdW51c2VkLCBpbnQgZmQsIHN0cnVjdCBzdGF0ICpzdCkKIHsKIAlzdHJ1Y3QgdmZzY29y
ZV9maWxlICpmcDsKIAlpbnQgZXJyb3I7CkBAIC01NjgsMTQgKzU2NywxNCBAQCBpbnQgX19meHN0
YXQoaW50IHZlciwgaW50IGZkLCBzdHJ1Y3Qgc3RhdCAqc3QpCiAKIExGUzY0KF9fZnhzdGF0KTsK
IAotaW50IGZzdGF0KGludCBmZCwgc3RydWN0IHN0YXQgKnN0KQoraW50IGZzdGF0KGludCBmZCBf
X3VudXNlZCwgc3RydWN0IHN0YXQgKnN0KQogewogCXJldHVybiBfX2Z4c3RhdCgxLCBmZCwgc3Qp
OwogfQogCiBMRlM2NChmc3RhdCk7CiAKLWludCBfX2Z4c3RhdGF0KGludCB2ZXIsIGludCBkaXJm
ZCwgY29uc3QgY2hhciAqcGF0aG5hbWUsIHN0cnVjdCBzdGF0ICpzdCwKK2ludCBfX2Z4c3RhdGF0
KGludCB2ZXIgX191bnVzZWQsIGludCBkaXJmZCwgY29uc3QgY2hhciAqcGF0aG5hbWUsIHN0cnVj
dCBzdGF0ICpzdCwKIAkJaW50IGZsYWdzKQogewogCWlmIChmbGFncyAmIEFUX1NZTUxJTktfTk9G
T0xMT1cpIHsKQEAgLTExMTMsNyArMTExMiw3IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX3N0YXQs
ICJcIiVzXCIgJXAiLCBjb25zdCBjaGFyKiwgc3RydWN0IHN0YXQqKTsKIFRSQUNFUE9JTlQodHJh
Y2VfdmZzX3N0YXRfcmV0LCAiIik7CiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19zdGF0X2VyciwgIiVk
IiwgaW50KTsKIAotaW50IF9feHN0YXQoaW50IHZlciwgY29uc3QgY2hhciAqcGF0aG5hbWUsIHN0
cnVjdCBzdGF0ICpzdCkKK2ludCBfX3hzdGF0KGludCB2ZXIgX191bnVzZWQsIGNvbnN0IGNoYXIg
KnBhdGhuYW1lLCBzdHJ1Y3Qgc3RhdCAqc3QpCiB7CiAJc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rh
c2s7CiAJY2hhciBwYXRoW1BBVEhfTUFYXTsKQEAgLTExNDksNyArMTE0OCw4IEBAIExGUzY0KHN0
YXQpOwogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbHN0YXQsICJwYXRobmFtZT0lcywgc3RhdD0lcCIs
IGNvbnN0IGNoYXIqLCBzdHJ1Y3Qgc3RhdCopOwogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbHN0YXRf
cmV0LCAiIik7CiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19sc3RhdF9lcnIsICJlcnJubz0lZCIsIGlu
dCk7Ci1pbnQgX19seHN0YXQoaW50IHZlciwgY29uc3QgY2hhciAqcGF0aG5hbWUsIHN0cnVjdCBz
dGF0ICpzdCkKKworaW50IF9fbHhzdGF0KGludCB2ZXIgX191bnVzZWQsIGNvbnN0IGNoYXIgKnBh
dGhuYW1lLCBzdHJ1Y3Qgc3RhdCAqc3QpCiB7CiAJc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7
CiAJY2hhciBwYXRoW1BBVEhfTUFYXTsKQEAgLTE5MjIsNyArMTkyMiw3IEBAIGludCBmY2htb2Qo
aW50IGZkLCBtb2RlX3QgbW9kZSkKIFRSQUNFUE9JTlQodHJhY2VfdmZzX2ZjaG93biwgIlwiJWRc
IiAlZCAlZCIsIGludCwgdWlkX3QsIGdpZF90KTsKIFRSQUNFUE9JTlQodHJhY2VfdmZzX2ZjaG93
bl9yZXQsICIiKTsKIAotaW50IGZjaG93bihpbnQgZmQsIHVpZF90IG93bmVyLCBnaWRfdCBncm91
cCkKK2ludCBmY2hvd24oaW50IGZkIF9fdW51c2VkLCB1aWRfdCBvd25lciBfX3VudXNlZCwgZ2lk
X3QgZ3JvdXAgX191bnVzZWQpCiB7CiAJdHJhY2VfdmZzX2ZjaG93bihmZCwgb3duZXIsIGdyb3Vw
KTsKIAlXQVJOX1NUVUJCRUQoKTsKQEAgLTE5MzAsMTMgKzE5MzAsMTMgQEAgaW50IGZjaG93bihp
bnQgZmQsIHVpZF90IG93bmVyLCBnaWRfdCBncm91cCkKIAlyZXR1cm4gMDsKIH0KIAotaW50IGNo
b3duKGNvbnN0IGNoYXIgKnBhdGgsIHVpZF90IG93bmVyLCBnaWRfdCBncm91cCkKK2ludCBjaG93
bihjb25zdCBjaGFyICpwYXRoIF9fdW51c2VkLCB1aWRfdCBvd25lciBfX3VudXNlZCwgZ2lkX3Qg
Z3JvdXAgX191bnVzZWQpCiB7CiAJV0FSTl9TVFVCQkVEKCk7CiAJcmV0dXJuIDA7CiB9CiAKLWlu
dCBsY2hvd24oY29uc3QgY2hhciAqcGF0aCwgdWlkX3Qgb3duZXIsIGdpZF90IGdyb3VwKQoraW50
IGxjaG93bihjb25zdCBjaGFyICpwYXRoIF9fdW51c2VkLCB1aWRfdCBvd25lciBfX3VudXNlZCwg
Z2lkX3QgZ3JvdXAgX191bnVzZWQpCiB7CiAJV0FSTl9TVFVCQkVEKCk7CiAJcmV0dXJuIDA7CkBA
IC0yMDI2LDcgKzIwMjYsNyBAQCBzc2l6ZV90IHNlbmRmaWxlKGludCBvdXRfZmQsIGludCBpbl9m
ZCwgb2ZmX3QgKl9vZmZzZXQsIHNpemVfdCBjb3VudCkKIExGUzY0KHNlbmRmaWxlKTsKICNlbmRp
ZgogCi1OT19TWVMoaW50IGZjaG1vZGF0KGludCBkaXJmZCwgY29uc3QgY2hhciAqcGF0aG5hbWUs
IG1vZGVfdCBtb2RlLCBpbnQgZmxhZ3MpKTsKK05PX1NZUyhpbnQgZmNobW9kYXQoaW50IGRpcmZk
IF9fdW51c2VkLCBjb25zdCBjaGFyICpwYXRobmFtZSBfX3VudXNlZCwgbW9kZV90IG1vZGUgX191
bnVzZWQsIGludCBmbGFncyBfX3VudXNlZCkpOwogCiBtb2RlX3QgdW1hc2sobW9kZV90IG5ld21h
c2spCiB7CkBAIC0yMDM5LDcgKzIwMzksNyBAQCBmc19ub29wKHZvaWQpCiAJcmV0dXJuIDA7CiB9
CiAKLWludCBjaHJvb3QoY29uc3QgY2hhciAqcGF0aCkKK2ludCBjaHJvb3QoY29uc3QgY2hhciAq
cGF0aCBfX3VudXNlZCkKIHsKIAlXQVJOX1NUVUJCRUQoKTsKIAllcnJubyA9IEVOT1NZUzsKZGlm
ZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3N5c2NhbGxzLmMgYi9saWIvdmZzY29yZS9zeXNjYWxscy5j
CmluZGV4IDMzMDA0OTYwLi5iZmVkMmMyMSAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvc3lzY2Fs
bHMuYworKysgYi9saWIvdmZzY29yZS9zeXNjYWxscy5jCkBAIC0zOTQsNyArMzk0LDcgQEAgc3lz
X2ZzeW5jKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwKQogCXN0cnVjdCB2bm9kZSAqdnA7CiAJaW50
IGVycm9yOwogCi0JRFBSSU5URihWRlNEQl9TWVNDQUxMLCAoInN5c19mc3luYzogZnA9JXhcbiIs
IGZwKSk7CisJRFBSSU5URihWRlNEQl9TWVNDQUxMLCAoInN5c19mc3luYzogZnA9JXBcbiIsIGZw
KSk7CiAKIAlpZiAoIWZwLT5mX2RlbnRyeSkKIAkJcmV0dXJuIEVJTlZBTDsKQEAgLTQxMSw3ICs0
MTEsNyBAQCBzeXNfZnN0YXQoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAsIHN0cnVjdCBzdGF0ICpz
dCkKIHsKIAlpbnQgZXJyb3IgPSAwOwogCi0JRFBSSU5URihWRlNEQl9TWVNDQUxMLCAoInN5c19m
c3RhdDogZnA9JXhcbiIsIGZwKSk7CisJRFBSSU5URihWRlNEQl9TWVNDQUxMLCAoInN5c19mc3Rh
dDogZnA9JXBcbiIsIGZwKSk7CiAKIAllcnJvciA9IHZmc19zdGF0KGZwLCBzdCk7CiAKQEAgLTQ1
OCw3ICs0NTgsNyBAQCBzeXNfcmVhZGRpcihzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCwgc3RydWN0
IGRpcmVudCAqZGlyKQogCXN0cnVjdCB2bm9kZSAqZHZwOwogCWludCBlcnJvcjsKIAotCURQUklO
VEYoVkZTREJfU1lTQ0FMTCwgKCJzeXNfcmVhZGRpcjogZnA9JXhcbiIsIGZwKSk7CisJRFBSSU5U
RihWRlNEQl9TWVNDQUxMLCAoInN5c19yZWFkZGlyOiBmcD0lcFxuIiwgZnApKTsKIAogCWlmICgh
ZnAtPmZfZGVudHJ5KQogCQlyZXR1cm4gRU5PVERJUjsKQEAgLTE0MzMsNyArMTQzMyw3IEBAIHN5
c19mYWxsb2NhdGUoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAsIGludCBtb2RlLCBvZmZfdCBvZmZz
ZXQsIG9mZl90IGxlbikKIAlpbnQgZXJyb3I7CiAJc3RydWN0IHZub2RlICp2cDsKIAotCURQUklO
VEYoVkZTREJfU1lTQ0FMTCwgKCJzeXNfZmFsbG9jYXRlOiBmcD0leCIsIGZwKSk7CisJRFBSSU5U
RihWRlNEQl9TWVNDQUxMLCAoInN5c19mYWxsb2NhdGU6IGZwPSVwIiwgZnApKTsKIAogCWlmICgh
ZnAtPmZfZGVudHJ5IHx8ICEoZnAtPmZfZmxhZ3MgJiBGV1JJVEUpKSB7CiAJCXJldHVybiBFQkFE
RjsKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3Rhc2suYyBiL2xpYi92ZnNjb3JlL3Rhc2suYwpp
bmRleCA3NjM1YmQ3YS4uZTY1OGJkYWEgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL3Rhc2suYwor
KysgYi9saWIvdmZzY29yZS90YXNrLmMKQEAgLTEyOSw3ICsxMjksNyBAQCBwYXRoX2NvbnYoY2hh
ciAqd2QsIGNvbnN0IGNoYXIgKmNwYXRoLCBjaGFyICpmdWxsKQogICogQGFjYzogYWNjZXNzIG1v
ZGUKICAqLwogaW50Ci10YXNrX2NvbnYoc3RydWN0IHRhc2sgKnQsIGNvbnN0IGNoYXIgKmNwYXRo
LCBpbnQgYWNjLCBjaGFyICpmdWxsKQordGFza19jb252KHN0cnVjdCB0YXNrICp0LCBjb25zdCBj
aGFyICpjcGF0aCwgaW50IGFjYyBfX3VudXNlZCwgY2hhciAqZnVsbCkKIHsKIAlpbnQgcmM7CiAK
ZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3Zub2RlLmMgYi9saWIvdmZzY29yZS92bm9kZS5jCmlu
ZGV4IGU5ZTA0MGFhLi5kNzA3NDZjOSAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvdm5vZGUuYwor
KysgYi9saWIvdmZzY29yZS92bm9kZS5jCkBAIC0xNzksNyArMTc5LDcgQEAgdmZzY29yZV92Z2V0
KHN0cnVjdCBtb3VudCAqbXAsIHVpbnQ2NF90IGlubywgc3RydWN0IHZub2RlICoqdnBwKQogCiAJ
KnZwcCA9IE5VTEw7CiAKLQlEUFJJTlRGKFZGU0RCX1ZOT0RFLCAoInZnZXQgJUxMdVxuIiwgaW5v
KSk7CisJRFBSSU5URihWRlNEQl9WTk9ERSwgKCJ2ZnNjb3JlX3ZnZXQgJWxsdVxuIiwgKHVuc2ln
bmVkIGxvbmcgbG9uZykgaW5vKSk7CiAKIAlWTk9ERV9MT0NLKCk7CiAKQEAgLTMwMCw3ICszMDAs
NyBAQCB2cmVsZShzdHJ1Y3Qgdm5vZGUgKnZwKQogICogUmVtb3ZlIGFsbCB2bm9kZSBpbiB0aGUg
dm5vZGUgdGFibGUgZm9yIHVubW91bnQuCiAgKi8KIHZvaWQKLXZmbHVzaChzdHJ1Y3QgbW91bnQg
Km1wKQordmZsdXNoKHN0cnVjdCBtb3VudCAqbXAgX191bnVzZWQpCiB7CiB9CiAKQEAgLTUxMiw3
ICs1MTIsNyBAQCB2bm9kZV9pbml0KHZvaWQpCiAJCVVLX0lOSVRfTElTVF9IRUFEKCZ2bm9kZV90
YWJsZVtpXSk7CiB9CiAKLXZvaWQgdm5fYWRkX25hbWUoc3RydWN0IHZub2RlICp2cCwgc3RydWN0
IGRlbnRyeSAqZHApCit2b2lkIHZuX2FkZF9uYW1lKHN0cnVjdCB2bm9kZSAqdnAgX191bnVzZWQs
IHN0cnVjdCBkZW50cnkgKmRwKQogewogCS8qIFRPRE86IFJlLWVuYWJsZSB0aGlzIGNoZWNrIHdo
ZW4gcHJlZW1wdGlvbiBhbmQvb3Igc21wIGlzCiAJICogaGVyZSAqLwpAQCAtNTIwLDcgKzUyMCw3
IEBAIHZvaWQgdm5fYWRkX25hbWUoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IGRlbnRyeSAqZHAp
CiAJdWtfbGlzdF9hZGQoJmRwLT5kX25hbWVzX2xpbmssICZ2cC0+dl9uYW1lcyk7CiB9CiAKLXZv
aWQgdm5fZGVsX25hbWUoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IGRlbnRyeSAqZHApCit2b2lk
IHZuX2RlbF9uYW1lKHN0cnVjdCB2bm9kZSAqdnAgX191bnVzZWQsIHN0cnVjdCBkZW50cnkgKmRw
KQogewogCS8qIFRPRE86IFJlLWVuYWJsZSB0aGlzIGNoZWNrIHdoZW4gcHJlZW1wdGlvbiBhbmQv
b3Igc21wIGlzCiAJICogaGVyZSAqLwotLSAKMi4xOS4yCgoKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5p
b3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9y
Zy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Feb 04 14:44:15 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 04 Feb 2019 14:44:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gqfTr-0007ZO-QE; Mon, 04 Feb 2019 14:44:15 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Kl24=QL=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gqfTq-0007ZG-RK
 for minios-devel@lists.xen.org; Mon, 04 Feb 2019 14:44:14 +0000
X-Inumbo-ID: 54349ac0-288b-11e9-be16-03684a71ea96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 54349ac0-288b-11e9-be16-03684a71ea96;
 Mon, 04 Feb 2019 14:44:09 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id C3454104D67;
 Mon,  4 Feb 2019 15:39:07 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id Xq5UrTj54gfa; Mon,  4 Feb 2019 15:39:07 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 99001104D66
 for <minios-devel@lists.xen.org>; Mon,  4 Feb 2019 15:39:05 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 4 Feb 2019 15:39:05 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>, <Simon.kuenzer@neclab.eu>,
 <sharan.santhanam@neclab.eu>
Date: Mon, 4 Feb 2019 15:37:14 +0100
Message-ID: <20190204143739.29249-23-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 22/23] lib/vfscore: re-implement
 stdio and enable new code
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogbGliL3Zmc2NvcmUvQ29uZmlnLnVrICAgICAgICAgICAgICB8ICAxICsKIGxpYi92ZnNjb3Jl
L01ha2VmaWxlLnVrICAgICAgICAgICAgfCAgOSArKysrCiBsaWIvdmZzY29yZS9leHBvcnRzeW1z
LnVrICAgICAgICAgIHwgMjYgKysrKysrKysrKysKIGxpYi92ZnNjb3JlL2ZpbGUuYyAgICAgICAg
ICAgICAgICAgfCA2MSArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogbGliL3Zmc2NvcmUvaW5j
bHVkZS92ZnNjb3JlL2ZpbGUuaCB8ICAxIC0KIGxpYi92ZnNjb3JlL3N0ZGlvLmMgICAgICAgICAg
ICAgICAgfCA3MCArKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0KIDYgZmlsZXMgY2hhbmdl
ZCwgODAgaW5zZXJ0aW9ucygrKSwgODggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliL3Zm
c2NvcmUvQ29uZmlnLnVrIGIvbGliL3Zmc2NvcmUvQ29uZmlnLnVrCmluZGV4IDQ5ZDZkYWExLi42
Y2Y2YzYzYSAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvQ29uZmlnLnVrCisrKyBiL2xpYi92ZnNj
b3JlL0NvbmZpZy51awpAQCAtMywzICszLDQgQEAgY29uZmlnIExJQlZGU0NPUkUKIAlkZWZhdWx0
IG4KIAlzZWxlY3QgTElCTk9MSUJDIGlmICFIQVZFX0xJQkMKIAlzZWxlY3QgTElCVUtERUJVRwor
CXNlbGVjdCBMSUJVS0xPQ0sKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL01ha2VmaWxlLnVrIGIv
bGliL3Zmc2NvcmUvTWFrZWZpbGUudWsKaW5kZXggMDY5MzNkOTYuLjFmZDM1ODU4IDEwMDY0NAot
LS0gYS9saWIvdmZzY29yZS9NYWtlZmlsZS51aworKysgYi9saWIvdmZzY29yZS9NYWtlZmlsZS51
awpAQCAtNSw1ICs1LDE0IEBAIENJTkNMVURFUy15ICs9IC1JJChMSUJWRlNDT1JFX0JBU0UpL2lu
Y2x1ZGUKIExJQlZGU0NPUkVfU1JDUy15ICs9ICQoTElCVkZTQ09SRV9CQVNFKS9mZC5jCiBMSUJW
RlNDT1JFX1NSQ1MteSArPSAkKExJQlZGU0NPUkVfQkFTRSkvZmlsZS5jCiBMSUJWRlNDT1JFX1NS
Q1MteSArPSAkKExJQlZGU0NPUkVfQkFTRSkvc3RkaW8uYworTElCVkZTQ09SRV9TUkNTLXkgKz0g
JChMSUJWRlNDT1JFX0JBU0UpL21vdW50LmMKK0xJQlZGU0NPUkVfU1JDUy15ICs9ICQoTElCVkZT
Q09SRV9CQVNFKS92bm9kZS5jCitMSUJWRlNDT1JFX1NSQ1MteSArPSAkKExJQlZGU0NPUkVfQkFT
RSkvZGVudHJ5LmMKK0xJQlZGU0NPUkVfU1JDUy15ICs9ICQoTElCVkZTQ09SRV9CQVNFKS9zeXNj
YWxscy5jCitMSUJWRlNDT1JFX1NSQ1MteSArPSAkKExJQlZGU0NPUkVfQkFTRSkvbWFpbi5jCitM
SUJWRlNDT1JFX1NSQ1MteSArPSAkKExJQlZGU0NPUkVfQkFTRSkvdGFzay5jCitMSUJWRlNDT1JF
X1NSQ1MteSArPSAkKExJQlZGU0NPUkVfQkFTRSkvbG9va3VwLmMKK0xJQlZGU0NPUkVfU1JDUy15
ICs9ICQoTElCVkZTQ09SRV9CQVNFKS9mb3BzLmMKK0xJQlZGU0NPUkVfU1JDUy15ICs9ICQoTElC
VkZTQ09SRV9CQVNFKS9zdWJyX3Vpby5jCiAKIEVYVFJBX0xEX1NDUklQVC0kKENPTkZJR19MSUJW
RlNDT1JFKSArPSAkKExJQlZGU0NPUkVfQkFTRSkvZXh0cmEubGQKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9leHBvcnRzeW1zLnVrIGIvbGliL3Zm
c2NvcmUvZXhwb3J0c3ltcy51awppbmRleCA5ZTIyOWExMS4uNTBiNjIyMDQgMTAwNjQ0Ci0tLSBh
L2xpYi92ZnNjb3JlL2V4cG9ydHN5bXMudWsKKysrIGIvbGliL3Zmc2NvcmUvZXhwb3J0c3ltcy51
awpAQCAtNSwzICs1LDI5IEBAIHZmc2NvcmVfZ2V0X2ZpbGUKIGNsb3NlCiB3cml0ZQogcmVhZAor
c3lzX21vdW50Cit2ZnNjb3JlX251bGxvcAordmZzY29yZV9yZWxlYXNlX21wX2RlbnRyaWVzCit2
ZnNjb3JlX3ZnZXQKK3Zmc2NvcmVfdWlvbW92ZQordmZzY29yZV92b3BfbnVsbG9wCit2ZnNjb3Jl
X3ZvcF9laW52YWwKK3Zmc2NvcmVfdm9wX2VwZXJtCit2ZnNjb3JlX3ZvcF9lcm9mcworb3Blbgor
d3JpdGUKK2Nsb3NlCityZWFkCitta2RpcgorZnN5bmMKK2ZzdGF0CitzdGF0CitjaG1vZAorZHVw
CitkdXAyCitkdXAzCit2ZnNjb3JlX3Vpb21vdmUKK3N5c19zeW5jCit2ZnNjb3JlX21vdW50X2R1
bXAKK3N5c191bW91bnQKK3N5c191bW91bnQyCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9maWxl
LmMgYi9saWIvdmZzY29yZS9maWxlLmMKaW5kZXggMGY2ZGZhOTMuLmU1NmYxNmRjIDEwMDY0NAot
LS0gYS9saWIvdmZzY29yZS9maWxlLmMKKysrIGIvbGliL3Zmc2NvcmUvZmlsZS5jCkBAIC0zOCw2
NiArMzgsNyBAQAogI2luY2x1ZGUgPHVrL3ByaW50Lmg+CiAjaW5jbHVkZSA8dmZzY29yZS9maWxl
Lmg+CiAjaW5jbHVkZSA8dWsvYXNzZXJ0Lmg+Ci0jaW5jbHVkZSA8dWsvYXJjaC9hdG9taWMuaD4K
LQotaW50IGNsb3NlKGludCBmZCkKLXsKLQlzdHJ1Y3QgdmZzY29yZV9maWxlICpmaWxlID0gdmZz
Y29yZV9nZXRfZmlsZShmZCk7Ci0KLQlpZiAoIWZpbGUpIHsKLQkJdWtfcHJfd2Fybigibm8gc3Vj
aCBmaWxlIGRlc2NyaXB0b3I6ICVkXG4iLCBmZCk7Ci0JCWVycm5vID0gRUJBREY7Ci0JCXJldHVy
biAtMTsKLQl9Ci0KLQlpZiAoIWZpbGUtPmZvcHMtPmNsb3NlKSB7Ci0JCWVycm5vID0gRUlPOwot
CQlyZXR1cm4gLTE7Ci0JfQotCi0JcmV0dXJuIGZpbGUtPmZvcHMtPmNsb3NlKGZpbGUpOwotfQot
Ci1zc2l6ZV90IHdyaXRlKGludCBmZCwgY29uc3Qgdm9pZCAqYnVmLCBzaXplX3QgY291bnQpCi17
Ci0Jc3RydWN0IHZmc2NvcmVfZmlsZSAqZmlsZSA9IHZmc2NvcmVfZ2V0X2ZpbGUoZmQpOwotCi0J
aWYgKCFmaWxlKSB7Ci0JCXVrX3ByX3dhcm4oIm5vIHN1Y2ggZmlsZSBkZXNjcmlwdG9yOiAlZFxu
IiwgZmQpOwotCQllcnJubyA9IEVCQURGOwotCQlyZXR1cm4gLTE7Ci0JfQotCi0JaWYgKCFmaWxl
LT5mb3BzLT53cml0ZSkgewotCQl1a19wcl93YXJuKCJmaWxlIGRvZXMgbm90IGhhdmUgd3JpdGUg
b3A6ICVkXG4iLCBmZCk7Ci0JCWVycm5vID0gRUlOVkFMOwotCQlyZXR1cm4gLTE7Ci0JfQotCi0J
cmV0dXJuIGZpbGUtPmZvcHMtPndyaXRlKGZpbGUsIGJ1ZiwgY291bnQpOwotfQotCi1zc2l6ZV90
IHJlYWQoaW50IGZkLCB2b2lkICpidWYsIHNpemVfdCBjb3VudCkKLXsKLQlzdHJ1Y3QgdmZzY29y
ZV9maWxlICpmaWxlID0gdmZzY29yZV9nZXRfZmlsZShmZCk7Ci0KLQlpZiAoIWZpbGUpIHsKLQkJ
dWtfcHJfd2Fybigibm8gc3VjaCBmaWxlIGRlc2NyaXB0b3I6ICVkXG4iLCBmZCk7Ci0JCWVycm5v
ID0gRUJBREY7Ci0JCXJldHVybiAtMTsKLQl9Ci0KLQlpZiAoIWZpbGUtPmZvcHMtPnJlYWQpIHsK
LQkJdWtfcHJfd2FybigiZmlsZSBkb2VzIG5vdCBoYXZlIHJlYWQgb3A6ICVkXG4iLCBmZCk7Ci0J
CWVycm5vID0gRUlOVkFMOwotCQlyZXR1cm4gLTE7Ci0JfQotCi0JcmV0dXJuIGZpbGUtPmZvcHMt
PnJlYWQoZmlsZSwgYnVmLCBjb3VudCk7Ci19Ci0KLS8qIFRPRE86IHJlbW92ZSBzdHViICovCi0j
ZGVmaW5lIHZmc19jbG9zZShmcCkgKDApCisjaW5jbHVkZSAidmZzLmgiCiAKIGludCBmZHJvcChz
dHJ1Y3QgdmZzY29yZV9maWxlICpmcCkKIHsKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1
ZGUvdmZzY29yZS9maWxlLmggYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZmlsZS5oCmlu
ZGV4IDg3ZDU5NzVjLi43ZjQ1Y2E3OCAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92
ZnNjb3JlL2ZpbGUuaAorKysgYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZmlsZS5oCkBA
IC01OSw3ICs1OSw2IEBAIHN0cnVjdCB2ZnNjb3JlX2ZpbGUgewogCW9mZl90CQlmX29mZnNldDsJ
LyogY3VycmVudCBwb3NpdGlvbiBpbiBmaWxlICovCiAJdm9pZAkJKmZfZGF0YTsgICAgICAgIC8q
IGZpbGUgZGVzY3JpcHRvciBzcGVjaWZpYyBkYXRhICovCiAJc3RydWN0IGRlbnRyeSAgICpmX2Rl
bnRyeTsKLQljb25zdCBzdHJ1Y3QgdmZzY29yZV9mb3BzICpmb3BzOwogfTsKIAogaW50IHZmc2Nv
cmVfYWxsb2NfZmQodm9pZCk7CmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9zdGRpby5jIGIvbGli
L3Zmc2NvcmUvc3RkaW8uYwppbmRleCA3ZDc0OTQ0Mi4uNWYxNWVmMmEgMTAwNjQ0Ci0tLSBhL2xp
Yi92ZnNjb3JlL3N0ZGlvLmMKKysrIGIvbGliL3Zmc2NvcmUvc3RkaW8uYwpAQCAtNDIsMTggKzQy
LDI5IEBACiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAKIC8qIE9uZSBmdW5jdGlvbiBmb3Igc3RkZXJy
IGFuZCBzdGRvdXQgKi8KLXN0YXRpYyBzc2l6ZV90IHN0ZG91dF93cml0ZShzdHJ1Y3QgdmZzY29y
ZV9maWxlICp2ZnNjb3JlX2ZpbGUgX191bnVzZWQsCi0JCQkgICAgY29uc3Qgdm9pZCAqYnVmLCBz
aXplX3QgY291bnQpCitzdGF0aWMgc3NpemVfdCBzdGRpb193cml0ZShzdHJ1Y3Qgdm5vZGUgKnZw
IF9fdW51c2VkLAorCQkJICAgc3RydWN0IHVpbyAqdWlvLAorCQkJICAgaW50IGlvZmxhZyBfX3Vu
dXNlZCkKIHsKLQlyZXR1cm4gdWtwbGF0X2NvdXRrKGJ1ZiwgY291bnQpOworCVVLX0FTU0VSVCgh
dWlvLT51aW9fb2Zmc2V0KTsKKwlVS19BU1NFUlQodWlvLT51aW9faW92Y250ID09IDEpOworCXJl
dHVybiB1a3BsYXRfY291dGsodWlvLT51aW9faW92LT5pb3ZfYmFzZSwgdWlvLT51aW9faW92LT5p
b3ZfbGVuKTsKIH0KIAotc3RhdGljIHNzaXplX3Qgc3RkaW5fcmVhZChzdHJ1Y3QgdmZzY29yZV9m
aWxlICp2ZnNjb3JlX2ZpbGUgX191bnVzZWQsCi0JCQkgIHZvaWQgKl9idWYsIHNpemVfdCBjb3Vu
dCkKK3N0YXRpYyBzc2l6ZV90IHN0ZGlvX3JlYWQoc3RydWN0IHZub2RlICp2cCBfX3VudXNlZCwK
KwkJICAgICAgc3RydWN0IHZmc2NvcmVfZmlsZSAqZmlsZSBfX3VudXNlZCwKKwkJICAgICAgc3Ry
dWN0IHVpbyAqdWlvLAorCQkgICAgICBpbnQgaW9mbGFnIF9fdW51c2VkKQogewogCWludCBieXRl
c19yZWFkOwotCXNpemVfdCBieXRlc190b3RhbCA9IDA7Ci0JY2hhciAqYnVmID0gKGNoYXIgKilf
YnVmOworCXNpemVfdCBieXRlc190b3RhbCA9IDAsIGNvdW50OworCWNoYXIgKmJ1ZjsKKworCVVL
X0FTU0VSVCghdWlvLT51aW9fb2Zmc2V0KTsKKwlVS19BU1NFUlQodWlvLT51aW9faW92Y250ID09
IDEpOworCisJYnVmID0gdWlvLT51aW9faW92LT5pb3ZfYmFzZTsKKwljb3VudCA9IHVpby0+dWlv
X2lvdi0+aW92X2xlbjsKIAogCWRvIHsKIAkJd2hpbGUgKChieXRlc19yZWFkID0gdWtwbGF0X2Np
bmsoYnVmLApAQCAtNjQsOCArNzUsOCBAQCBzdGF0aWMgc3NpemVfdCBzdGRpbl9yZWFkKHN0cnVj
dCB2ZnNjb3JlX2ZpbGUgKnZmc2NvcmVfZmlsZSBfX3VudXNlZCwKIAkJKihidWYgLSAxKSA9ICoo
YnVmIC0gMSkgPT0gJ1xyJyA/CiAJCQkJCSdcbicgOiAqKGJ1ZiAtIDEpOwogCi0JCXN0ZG91dF93
cml0ZSh2ZnNjb3JlX2ZpbGUsIChidWYgLSBieXRlc19yZWFkKSwKLQkJCQlieXRlc19yZWFkKTsK
KwkJLyogRWNobyB0aGUgaW5wdXQgKi8KKwkJdWtwbGF0X2NvdXRrKGJ1ZiAtIGJ5dGVzX3JlYWQs
IGJ5dGVzX3JlYWQpOwogCQlieXRlc190b3RhbCArPSBieXRlc19yZWFkOwogCiAJfSB3aGlsZSAo
Ynl0ZXNfdG90YWwgPCBjb3VudCAmJiAqKGJ1ZiAtIDEpICE9ICdcbicKQEAgLTc0LDMzICs4NSwz
OCBAQCBzdGF0aWMgc3NpemVfdCBzdGRpbl9yZWFkKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKnZmc2Nv
cmVfZmlsZSBfX3VudXNlZCwKIAlyZXR1cm4gYnl0ZXNfdG90YWw7CiB9CiAKLXN0YXRpYyBzdHJ1
Y3QgdmZzY29yZV9mb3BzIHN0ZGluX2ZvcHMgPSB7Ci0JLnJlYWQgPSBzdGRpbl9yZWFkLAotfTsK
IAotc3RhdGljIHN0cnVjdCB2ZnNjb3JlX2ZvcHMgc3Rkb3V0X2ZvcHMgPSB7Ci0JLndyaXRlID0g
c3Rkb3V0X3dyaXRlLAorc3RhdGljIHN0cnVjdCB2bm9wcyBzdGRpb192bm9wcyA9IHsKKwkudm9w
X3dyaXRlID0gc3RkaW9fd3JpdGUsCisJLnZvcF9yZWFkID0gc3RkaW9fcmVhZCwKIH07CiAKLXN0
YXRpYyBzdHJ1Y3QgdmZzY29yZV9maWxlICBzdGRpbl9maWxlID0gewotCS5mZCA9IDAsCi0JLmZv
cHMgPSAmc3RkaW5fZm9wcywKK3N0YXRpYyBzdHJ1Y3Qgdm5vZGUgc3RkaW9fdm5vZGUgPSB7CisJ
LnZfaW5vID0gMSwKKwkudl9vcCA9ICZzdGRpb192bm9wcywKKwkudl9sb2NrID0gVUtfTVVURVhf
SU5JVElBTElaRVIoc3RkaW9fdm5vZGUudl9sb2NrKSwKKwkudl9yZWZjbnQgPSAxLAogfTsKIAot
c3RhdGljIHN0cnVjdCB2ZnNjb3JlX2ZpbGUgIHN0ZG91dF9maWxlID0gewotCS5mZCA9IDEsCi0J
LmZvcHMgPSAmc3Rkb3V0X2ZvcHMsCitzdGF0aWMgc3RydWN0IGRlbnRyeSBzdGRpb19kZW50cnkg
PSB7CisJLmRfdm5vZGUgPSAmc3RkaW9fdm5vZGUsCiB9OwogCi1zdGF0aWMgc3RydWN0IHZmc2Nv
cmVfZmlsZSAgc3RkZXJyX2ZpbGUgPSB7Ci0JLmZkID0gMiwKLQkuZm9wcyA9ICZzdGRvdXRfZm9w
cywKK3N0YXRpYyBzdHJ1Y3QgdmZzY29yZV9maWxlICBzdGRpb19maWxlID0geworCS5mZCA9IDEs
CisJLmZfZmxhZ3MgPSBGV1JJVEUgfCBGUkVBRCwKKwkuZl9kZW50cnkgPSAmc3RkaW9fZGVudHJ5
LAorCS8qIHJlZmVyZW5jZSBjb3VudCBpcyAyIGJlY2F1c2UgY2xvc2UoMCkgaXMgYSB2YWxpZAor
CSAqIG9wZXJhdGlvbi4gSG93ZXZlciBpdCBpcyBub3QgcHJvcGVybHkgaGFuZGxlZCBpbiB0aGUK
KwkgKiBjdXJyZW50IGltcGxlbWVudGF0aW9uLiAqLworCS5mX2NvdW50ID0gMiwKIH07CiAKLQog
dm9pZCBpbml0X3N0ZGlvKHZvaWQpCiB7Ci0JdmZzY29yZV9pbnN0YWxsX2ZkKDAsICZzdGRpbl9m
aWxlKTsKLQl2ZnNjb3JlX2luc3RhbGxfZmQoMSwgJnN0ZG91dF9maWxlKTsKLQl2ZnNjb3JlX2lu
c3RhbGxfZmQoMiwgJnN0ZGVycl9maWxlKTsKKwl2ZnNjb3JlX2luc3RhbGxfZmQoMCwgJnN0ZGlv
X2ZpbGUpOworCWlmIChkdXAyKDAsIDEpICE9IDEpCisJCXVrX3ByX2VycigiZmFpbGVkIHRvIGR1
cCB0byBzdGRpblxuIik7CisJaWYgKGR1cDIoMCwgMikgIT0gMikKKwkJdWtfcHJfZXJyKCJmYWls
ZWQgdG8gZHVwIHRvIHN0ZGVyclxuIik7CiB9Ci0tIAoyLjE5LjIKCgpfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0
Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2pl
Y3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Feb 04 14:44:42 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 04 Feb 2019 14:44:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gqfUH-0007bT-U9; Mon, 04 Feb 2019 14:44:41 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Kl24=QL=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gqfUG-0007bO-Ot
 for minios-devel@lists.xen.org; Mon, 04 Feb 2019 14:44:40 +0000
X-Inumbo-ID: 64adcd0e-288b-11e9-8317-b791c8420aed
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 64adcd0e-288b-11e9-8317-b791c8420aed;
 Mon, 04 Feb 2019 14:44:37 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id A0E13104D69;
 Mon,  4 Feb 2019 15:39:28 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id MzUVCl_Y5xQQ; Mon,  4 Feb 2019 15:39:28 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 7F9C1104D63
 for <minios-devel@lists.xen.org>; Mon,  4 Feb 2019 15:39:26 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 4 Feb 2019 15:39:26 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>, <Simon.kuenzer@neclab.eu>,
 <sharan.santhanam@neclab.eu>
Date: Mon, 4 Feb 2019 15:37:22 +0100
Message-ID: <20190204143739.29249-31-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 06/23] lib/vfscore: update
 license header for imported files
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogbGliL25vbGliYy9pbmNsdWRlL3N5cy9tb3VudC5oICAgICAgIHwgMzUgKysrKysrKysrKysr
KysrKysrKysrKysrKysrKwogbGliL25vbGliYy9pbmNsdWRlL3N5cy91aW8uaCAgICAgICAgIHwg
MzUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogbGliL3Zmc2NvcmUvZGVudHJ5LmMgICAg
ICAgICAgICAgICAgIHwgMTAgKysrLS0tLS0KIGxpYi92ZnNjb3JlL2ZvcHMuYyAgICAgICAgICAg
ICAgICAgICB8IDMzICsrKysrKysrKysrKysrKysrKysrKysrLS0tCiBsaWIvdmZzY29yZS9pbmNs
dWRlL3Zmc2NvcmUvZGVudHJ5LmggfCAzMiArKysrKysrKysrKysrKysrKysrKysrKy0tCiBsaWIv
dmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvcHJleC5oICAgfCAzMiArKysrKysrKysrKysrKysrKysr
KysrKy0tCiBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUuaCAgfCAgMyArKysKIGxp
Yi92ZnNjb3JlL2xvb2t1cC5jICAgICAgICAgICAgICAgICB8ICAzICsrKwogbGliL3Zmc2NvcmUv
bWFpbi5jICAgICAgICAgICAgICAgICAgIHwgMTAgKysrLS0tLS0KIGxpYi92ZnNjb3JlL21vdW50
LmMgICAgICAgICAgICAgICAgICB8ICAzICsrKwogbGliL3Zmc2NvcmUvc3Vicl91aW8uYyAgICAg
ICAgICAgICAgIHwgIDkgKysrKystLQogbGliL3Zmc2NvcmUvc3lzY2FsbHMuYyAgICAgICAgICAg
ICAgIHwgMTAgKysrLS0tLS0KIGxpYi92ZnNjb3JlL3Rhc2suYyAgICAgICAgICAgICAgICAgICB8
ICA4ICsrKysrLS0KIGxpYi92ZnNjb3JlL3Zmcy5oICAgICAgICAgICAgICAgICAgICB8ICAzICsr
KwogbGliL3Zmc2NvcmUvdm5vZGUuYyAgICAgICAgICAgICAgICAgIHwgIDMgKysrCiAxNSBmaWxl
cyBjaGFuZ2VkLCAxOTcgaW5zZXJ0aW9ucygrKSwgMzIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0
IGEvbGliL25vbGliYy9pbmNsdWRlL3N5cy9tb3VudC5oIGIvbGliL25vbGliYy9pbmNsdWRlL3N5
cy9tb3VudC5oCmluZGV4IGFmODU1ZDY5Li5kN2E5NWIzOCAxMDA2NDQKLS0tIGEvbGliL25vbGli
Yy9pbmNsdWRlL3N5cy9tb3VudC5oCisrKyBiL2xpYi9ub2xpYmMvaW5jbHVkZS9zeXMvbW91bnQu
aApAQCAtMSwzICsxLDM4IEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xh
dXNlICovCisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIENsb3VkaXVzIFN5c3RlbXMsIEx0ZC4K
KyAqIENvcHlyaWdodCAoYykgMjAxOSwgTkVDIEV1cm9wZSBMdGQuLCBORUMgQ29ycG9yYXRpb24u
CisgKgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVy
IHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJF
CisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisg
KiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKiBUSElTIEhFQURFUiBNQVkgTk9U
IEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgorICovCisKICNpZm5kZWYgX1NZ
U19NT1VOVF9ICiAjZGVmaW5lIF9TWVNfTU9VTlRfSAogCmRpZmYgLS1naXQgYS9saWIvbm9saWJj
L2luY2x1ZGUvc3lzL3Vpby5oIGIvbGliL25vbGliYy9pbmNsdWRlL3N5cy91aW8uaAppbmRleCAx
ODI2NjAzOC4uY2RmYmVjOWIgMTAwNjQ0Ci0tLSBhL2xpYi9ub2xpYmMvaW5jbHVkZS9zeXMvdWlv
LmgKKysrIGIvbGliL25vbGliYy9pbmNsdWRlL3N5cy91aW8uaApAQCAtMSwzICsxLDM4IEBACisv
KiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEzIENsb3VkaXVzIFN5c3RlbXMsIEx0ZC4KKyAqIENvcHlyaWdodCAoYykgMjAx
OSwgTkVDIEV1cm9wZSBMdGQuLCBORUMgQ29ycG9yYXRpb24uCisgKgorICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5
cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiAgICBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
ICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqCisgKiBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJ
RklFRCBJTiBBTlkgV0FZLgorICovCisKICNpZm5kZWYgX1NZU19VSU9fSAogI2RlZmluZSBfU1lT
X1VJT19ICiAKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2RlbnRyeS5jIGIvbGliL3Zmc2NvcmUv
ZGVudHJ5LmMKaW5kZXggYzJmMjA5YjIuLmVmYzEwYmQ2IDEwMDY0NAotLS0gYS9saWIvdmZzY29y
ZS9kZW50cnkuYworKysgYi9saWIvdmZzY29yZS9kZW50cnkuYwpAQCAtMSwxMiArMSw4IEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE0IENsb3VkaXVzIFN5c3RlbXMsIEx0ZC4KLSAqCi0gKiBU
aGlzIHdvcmsgaXMgb3BlbiBzb3VyY2Ugc29mdHdhcmUsIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUKLSAqIEJTRCBsaWNlbnNlIGFzIGRlc2NyaWJlZCBpbiB0aGUgTElDRU5TRSBmaWxl
IGluIHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5LgotICovCi0KKy8qIFNQRFgtTGljZW5zZS1JZGVu
dGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8KIC8qCiAgKiBDb3B5cmlnaHQgKGMpIDIwMDUtMjAwNywg
S29oc3VrZSBPaHRhbmkKKyAqIENvcHlyaWdodCAoQykgMjAxNCBDbG91ZGl1cyBTeXN0ZW1zLCBM
dGQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTksIE5FQyBFdXJvcGUgTHRkLiwgTkVDIENvcnBvcmF0
aW9uLgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKZGlmZiAtLWdp
dCBhL2xpYi92ZnNjb3JlL2ZvcHMuYyBiL2xpYi92ZnNjb3JlL2ZvcHMuYwppbmRleCBhYjFmOGNi
Yi4uYTk0Y2E0NTIgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2ZvcHMuYworKysgYi9saWIvdmZz
Y29yZS9mb3BzLmMKQEAgLTEsMTEgKzEsMzggQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy
OiBCU0QtMy1DbGF1c2UgKi8KIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQ2xvdWRpdXMgU3lz
dGVtcywgTHRkLgorICogQ29weXJpZ2h0IChjKSAyMDE5LCBORUMgRXVyb3BlIEx0ZC4sIE5FQyBD
b3Jwb3JhdGlvbi4KICAqCi0gKiBUaGlzIHdvcmsgaXMgb3BlbiBzb3VyY2Ugc29mdHdhcmUsIGxp
Y2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUKLSAqIEJTRCBsaWNlbnNlIGFzIGRlc2NyaWJl
ZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5LgorICogQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9m
IHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiAgICBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKiBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RF
RCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgogICovCiAKLQogI2luY2x1ZGUgPGZjbnRsLmg+CiAj
aW5jbHVkZSA8c3lzL3N0YXQuaD4KICNpbmNsdWRlIDxvc3YvZmlsZS5oPgpkaWZmIC0tZ2l0IGEv
bGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2RlbnRyeS5oIGIvbGliL3Zmc2NvcmUvaW5jbHVk
ZS92ZnNjb3JlL2RlbnRyeS5oCmluZGV4IGY1ODUwNzg2Li4yZDJlYWExYiAxMDA2NDQKLS0tIGEv
bGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2RlbnRyeS5oCisrKyBiL2xpYi92ZnNjb3JlL2lu
Y2x1ZGUvdmZzY29yZS9kZW50cnkuaApAQCAtMSw4ICsxLDM2IEBACisvKiBTUERYLUxpY2Vuc2Ut
SWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE0IENs
b3VkaXVzIFN5c3RlbXMsIEx0ZC4KKyAqIENvcHlyaWdodCAoYykgMjAxOSwgTkVDIEV1cm9wZSBM
dGQuLCBORUMgQ29ycG9yYXRpb24uCiAgKgotICogVGhpcyB3b3JrIGlzIG9wZW4gc291cmNlIHNv
ZnR3YXJlLCBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlCi0gKiBCU0QgbGljZW5zZSBh
cyBkZXNjcmliZWQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgdG9wLWxldmVsIGRpcmVjdG9y
eS4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0
aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
ICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqICAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRQor
ICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICog
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICogVEhJUyBIRUFERVIgTUFZIE5PVCBC
RSBFWFRSQUNURUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4KICAqLwogCiAjaWZuZGVmIF9PU1Zf
REVOVFJZX0gKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9wcmV4Lmgg
Yi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvcHJleC5oCmluZGV4IDQzNjUwMzQwLi43YjA1
MzMxOSAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3ByZXguaAorKysg
Yi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvcHJleC5oCkBAIC0xLDggKzEsMzYgQEAKKy8q
IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8KIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTMgQ2xvdWRpdXMgU3lzdGVtcywgTHRkLgorICogQ29weXJpZ2h0IChjKSAyMDE5
LCBORUMgRXVyb3BlIEx0ZC4sIE5FQyBDb3Jwb3JhdGlvbi4KICAqCi0gKiBUaGlzIHdvcmsgaXMg
b3BlbiBzb3VyY2Ugc29mdHdhcmUsIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUKLSAq
IEJTRCBsaWNlbnNlIGFzIGRlc2NyaWJlZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSB0b3At
bGV2ZWwgZGlyZWN0b3J5LgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJB
UyBJUyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09O
VFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKiBUSElTIEhF
QURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgogICovCiAK
ICNpZm5kZWYgX09TVl9QUkVYX0gKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZz
Y29yZS92bm9kZS5oIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Zub2RlLmgKaW5kZXgg
ZTM1YWE4MzAuLjQ4NzRmMWI5IDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2Nv
cmUvdm5vZGUuaAorKysgYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUuaApAQCAt
MSw1ICsxLDggQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8K
IC8qCiAgKiBDb3B5cmlnaHQgKGMpIDIwMDUtMjAwNywgS29oc3VrZSBPaHRhbmkKKyAqIENvcHly
aWdodCAoQykgMjAxNCBDbG91ZGl1cyBTeXN0ZW1zLCBMdGQuCisgKiBDb3B5cmlnaHQgKGMpIDIw
MTksIE5FQyBFdXJvcGUgTHRkLiwgTkVDIENvcnBvcmF0aW9uLgogICogQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2xvb2t1cC5j
IGIvbGliL3Zmc2NvcmUvbG9va3VwLmMKaW5kZXggMzAxMzlhODcuLjBhYTVjYTNiIDEwMDY0NAot
LS0gYS9saWIvdmZzY29yZS9sb29rdXAuYworKysgYi9saWIvdmZzY29yZS9sb29rdXAuYwpAQCAt
MSw1ICsxLDggQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8K
IC8qCiAgKiBDb3B5cmlnaHQgKGMpIDIwMDUtMjAwNywgS29oc3VrZSBPaHRhbmkKKyAqIENvcHly
aWdodCAoQykgMjAxNCBDbG91ZGl1cyBTeXN0ZW1zLCBMdGQuCisgKiBDb3B5cmlnaHQgKGMpIDIw
MTksIE5FQyBFdXJvcGUgTHRkLiwgTkVDIENvcnBvcmF0aW9uLgogICogQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL21haW4uYyBi
L2xpYi92ZnNjb3JlL21haW4uYwppbmRleCA4ZDlkYzMzYS4uZTMwMDQ1OTcgMTAwNjQ0Ci0tLSBh
L2xpYi92ZnNjb3JlL21haW4uYworKysgYi9saWIvdmZzY29yZS9tYWluLmMKQEAgLTEsMTIgKzEs
OCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBDbG91ZGl1cyBTeXN0ZW1zLCBMdGQuCi0g
KgotICogVGhpcyB3b3JrIGlzIG9wZW4gc291cmNlIHNvZnR3YXJlLCBsaWNlbnNlZCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlCi0gKiBCU0QgbGljZW5zZSBhcyBkZXNjcmliZWQgaW4gdGhlIExJQ0VO
U0UgZmlsZSBpbiB0aGUgdG9wLWxldmVsIGRpcmVjdG9yeS4KLSAqLwotCisvKiBTUERYLUxpY2Vu
c2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCiAvKgogICogQ29weXJpZ2h0IChjKSAyMDA1
LTIwMDcsIEtvaHN1a2UgT2h0YW5pCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQ2xvdWRpdXMgU3lz
dGVtcywgTHRkLgorICogQ29weXJpZ2h0IChjKSAyMDE5LCBORUMgRXVyb3BlIEx0ZC4sIE5FQyBD
b3Jwb3JhdGlvbi4KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CmRp
ZmYgLS1naXQgYS9saWIvdmZzY29yZS9tb3VudC5jIGIvbGliL3Zmc2NvcmUvbW91bnQuYwppbmRl
eCBiNTFiMjdhNC4uNzZlMmU3MGMgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL21vdW50LmMKKysr
IGIvbGliL3Zmc2NvcmUvbW91bnQuYwpAQCAtMSw1ICsxLDggQEAKKy8qIFNQRFgtTGljZW5zZS1J
ZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8KIC8qCiAgKiBDb3B5cmlnaHQgKGMpIDIwMDUtMjAw
NywgS29oc3VrZSBPaHRhbmkKKyAqIENvcHlyaWdodCAoQykgMjAxNCBDbG91ZGl1cyBTeXN0ZW1z
LCBMdGQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTksIE5FQyBFdXJvcGUgTHRkLiwgTkVDIENvcnBv
cmF0aW9uLgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKZGlmZiAt
LWdpdCBhL2xpYi92ZnNjb3JlL3N1YnJfdWlvLmMgYi9saWIvdmZzY29yZS9zdWJyX3Vpby5jCmlu
ZGV4IGJmMTM4YjhlLi44Mjc2ZDZkNCAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvc3Vicl91aW8u
YworKysgYi9saWIvdmZzY29yZS9zdWJyX3Vpby5jCkBAIC0xLDcgKzEsMTIgQEAKLS8qLQorLyog
U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLworLyoKICAqIENvcHlyaWdo
dCAoYykgMTk4MiwgMTk4NiwgMTk5MSwgMTk5MwotICoJVGhlIFJlZ2VudHMgb2YgdGhlIFVuaXZl
cnNpdHkgb2YgQ2FsaWZvcm5pYS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgICAgVGhlIFJl
Z2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KICAqIChjKSBVTklYIFN5c3Rl
bSBMYWJvcmF0b3JpZXMsIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAxNCBDbG91ZGl1cyBTeXN0
ZW1zLCBMdGQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTksIE5FQyBFdXJvcGUgTHRkLiwgTkVDIENv
cnBvcmF0aW9uLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCiAgKiBBbGwgb3Igc29tZSBw
b3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIGRlcml2ZWQgZnJvbSBtYXRlcmlhbCBsaWNlbnNlZAog
ICogdG8gdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYSBieSBBbWVyaWNhbiBUZWxlcGhvbmUg
YW5kIFRlbGVncmFwaAogICogQ28uIG9yIFVuaXggU3lzdGVtIExhYm9yYXRvcmllcywgSW5jLiBh
bmQgYXJlIHJlcHJvZHVjZWQgaGVyZWluIHdpdGgKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3N5
c2NhbGxzLmMgYi9saWIvdmZzY29yZS9zeXNjYWxscy5jCmluZGV4IGI1NDMzZWNlLi4yOWIxNDIy
MCAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvc3lzY2FsbHMuYworKysgYi9saWIvdmZzY29yZS9z
eXNjYWxscy5jCkBAIC0xLDEyICsxLDggQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQ2xv
dWRpdXMgU3lzdGVtcywgTHRkLgotICoKLSAqIFRoaXMgd29yayBpcyBvcGVuIHNvdXJjZSBzb2Z0
d2FyZSwgbGljZW5zZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZQotICogQlNEIGxpY2Vuc2UgYXMg
ZGVzY3JpYmVkIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHRvcC1sZXZlbCBkaXJlY3Rvcnku
Ci0gKi8KLQorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLwogLyoK
ICAqIENvcHlyaWdodCAoYykgMjAwNS0yMDA3LCBLb2hzdWtlIE9odGFuaQorICogQ29weXJpZ2h0
IChDKSAyMDE0IENsb3VkaXVzIFN5c3RlbXMsIEx0ZC4KKyAqIENvcHlyaWdodCAoYykgMjAxOSwg
TkVDIEV1cm9wZSBMdGQuLCBORUMgQ29ycG9yYXRpb24uCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dApkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvdGFzay5jIGIvbGli
L3Zmc2NvcmUvdGFzay5jCmluZGV4IGIyYTAyOGM2Li4yZDM0ZjBkZiAxMDA2NDQKLS0tIGEvbGli
L3Zmc2NvcmUvdGFzay5jCisrKyBiL2xpYi92ZnNjb3JlL3Rhc2suYwpAQCAtMSw1ICsxLDkgQEAK
LS8qLQotICogQ29weXJpZ2h0IChjKSAyMDA3LCBLb2hzdWtlIE9odGFuaSBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLworLyoK
KyAqIENvcHlyaWdodCAoYykgMjAwNywgS29oc3VrZSBPaHRhbmkKKyAqIENvcHlyaWdodCAoQykg
MjAxNCBDbG91ZGl1cyBTeXN0ZW1zLCBMdGQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTksIE5FQyBF
dXJvcGUgTHRkLiwgTkVDIENvcnBvcmF0aW9uLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvdmZz
LmggYi9saWIvdmZzY29yZS92ZnMuaAppbmRleCAyYjgyNTUyMS4uYzEzMDUxN2QgMTAwNjQ0Ci0t
LSBhL2xpYi92ZnNjb3JlL3Zmcy5oCisrKyBiL2xpYi92ZnNjb3JlL3Zmcy5oCkBAIC0xLDUgKzEs
OCBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLwogLyoKICAq
IENvcHlyaWdodCAoYykgMjAwNS0yMDA3LCBLb2hzdWtlIE9odGFuaQorICogQ29weXJpZ2h0IChD
KSAyMDE0IENsb3VkaXVzIFN5c3RlbXMsIEx0ZC4KKyAqIENvcHlyaWdodCAoYykgMjAxOSwgTkVD
IEV1cm9wZSBMdGQuLCBORUMgQ29ycG9yYXRpb24uCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dApkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvdm5vZGUuYyBiL2xpYi92
ZnNjb3JlL3Zub2RlLmMKaW5kZXggMTE5ZWQ4NzAuLjM0MTJjNmZiIDEwMDY0NAotLS0gYS9saWIv
dmZzY29yZS92bm9kZS5jCisrKyBiL2xpYi92ZnNjb3JlL3Zub2RlLmMKQEAgLTEsNSArMSw4IEBA
CisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCiAvKgogICogQ29w
eXJpZ2h0IChjKSAyMDA1LTIwMDgsIEtvaHN1a2UgT2h0YW5pCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQgQ2xvdWRpdXMgU3lzdGVtcywgTHRkLgorICogQ29weXJpZ2h0IChjKSAyMDE5LCBORUMgRXVy
b3BlIEx0ZC4sIE5FQyBDb3Jwb3JhdGlvbi4KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0tIAoyLjE5LjIKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBs
aXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4v
bGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Feb 04 14:44:58 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 04 Feb 2019 14:44:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gqfUY-0007dg-9a; Mon, 04 Feb 2019 14:44:58 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Kl24=QL=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gqfUX-0007dO-BW
 for minios-devel@lists.xen.org; Mon, 04 Feb 2019 14:44:57 +0000
X-Inumbo-ID: 6e20a050-288b-11e9-92b1-f31307844cb6
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 6e20a050-288b-11e9-92b1-f31307844cb6;
 Mon, 04 Feb 2019 14:44:53 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 737B5104D6A;
 Mon,  4 Feb 2019 15:39:44 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id C_viJmXyFqzZ; Mon,  4 Feb 2019 15:39:44 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 5605B104D63
 for <minios-devel@lists.xen.org>; Mon,  4 Feb 2019 15:39:42 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 4 Feb 2019 15:39:42 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>, <Simon.kuenzer@neclab.eu>,
 <sharan.santhanam@neclab.eu>
Date: Mon, 4 Feb 2019 15:37:28 +0100
Message-ID: <20190204143739.29249-37-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 12/23] lib/vfscore: prefix
 exported functions
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmggfCAgNCArKy0tCiBsaWIvdmZz
Y29yZS9pbmNsdWRlL3Zmc2NvcmUvcHJleC5oICB8ICA2ICsrKy0tLQogbGliL3Zmc2NvcmUvaW5j
bHVkZS92ZnNjb3JlL3Vpby5oICAgfCAgMiArLQogbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3Jl
L3Zub2RlLmggfCAxMCArKysrKy0tLS0tCiBsaWIvdmZzY29yZS9tb3VudC5jICAgICAgICAgICAg
ICAgICB8ICA5ICsrKystLS0tLQogbGliL3Zmc2NvcmUvc3Vicl91aW8uYyAgICAgICAgICAgICAg
fCAgMiArLQogbGliL3Zmc2NvcmUvdmZzLmggICAgICAgICAgICAgICAgICAgfCAgMiArLQogbGli
L3Zmc2NvcmUvdm5vZGUuYyAgICAgICAgICAgICAgICAgfCAxMiArKysrKystLS0tLS0KIDggZmls
ZXMgY2hhbmdlZCwgMjMgaW5zZXJ0aW9ucygrKSwgMjQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0
IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmggYi9saWIvdmZzY29yZS9pbmNs
dWRlL3Zmc2NvcmUvbW91bnQuaAppbmRleCBiNGEwNzMyMy4uYTEyMjdjYmUgMTAwNjQ0Ci0tLSBh
L2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9tb3VudC5oCisrKyBiL2xpYi92ZnNjb3JlL2lu
Y2x1ZGUvdmZzY29yZS9tb3VudC5oCkBAIC0xMzksMTIgKzEzOSwxMiBAQCB0eXBlZGVmIGludCAo
KnZmc29wX3N0YXRmc190KShzdHJ1Y3QgbW91bnQgKiwgc3RydWN0IHN0YXRmcyAqKTsKIAogI2Rl
ZmluZSBWRlNfTlVMTAkJICAgICgodm9pZCAqKXZmc19udWxsKQogCi1pbnQJdmZzX251bGxvcCh2
b2lkKTsKK2ludAl2ZnNjb3JlX251bGxvcCh2b2lkKTsKIGludAl2ZnNfZWludmFsKHZvaWQpOwog
CiB2b2lkCSB2ZnNfYnVzeShzdHJ1Y3QgbW91bnQgKm1wKTsKIHZvaWQJIHZmc191bmJ1c3koc3Ry
dWN0IG1vdW50ICptcCk7CiAKLXZvaWQJIHJlbGVhc2VfbXBfZGVudHJpZXMoc3RydWN0IG1vdW50
ICptcCk7Cit2b2lkCSB2ZnNjb3JlX3JlbGVhc2VfbXBfZGVudHJpZXMoc3RydWN0IG1vdW50ICpt
cCk7CiAKICNlbmRpZgkvKiAhX1NZU19NT1VOVF9IXyAqLwpkaWZmIC0tZ2l0IGEvbGliL3Zmc2Nv
cmUvaW5jbHVkZS92ZnNjb3JlL3ByZXguaCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9w
cmV4LmgKaW5kZXggOGEzMDZkNTQuLjIyNjFiMjE2IDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9p
bmNsdWRlL3Zmc2NvcmUvcHJleC5oCisrKyBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9w
cmV4LmgKQEAgLTMzLDggKzMzLDggQEAKICAqIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFD
VEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCiAgKi8KIAotI2lmbmRlZiBfT1NWX1BSRVhfSAot
I2RlZmluZSBfT1NWX1BSRVhfSCAxCisjaWZuZGVmIF9VS19QUkVYX0gKKyNkZWZpbmUgX1VLX1BS
RVhfSCAxCiAKIAogI2luY2x1ZGUgPHVuaXN0ZC5oPgpAQCAtNTIsNCArNTIsNCBAQCBzaXplX3Qg
c3RybGNweShjaGFyICpkc3QsIGNvbnN0IGNoYXIgKnNyYywgc2l6ZV90IHNpeik7CiAKIHZvaWQg
c3lzX3BhbmljKGNvbnN0IGNoYXIgKik7CiAKLSNlbmRpZiAvKiBfT1NWX1BSRVhfSCAqLworI2Vu
ZGlmIC8qIF9VS19QUkVYX0ggKi8KZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZz
Y29yZS91aW8uaCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS91aW8uaAppbmRleCA4YWQx
ZTNmYi4uYzczNGZhMTkgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS91
aW8uaAorKysgYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdWlvLmgKQEAgLTU3LDYgKzU3
LDYgQEAgc3RydWN0IHVpbyB7CiAJZW51bQl1aW9fcncgdWlvX3J3OwkJLyogb3BlcmF0aW9uICov
CiB9OwogCi1pbnQJdWlvbW92ZSh2b2lkICpjcCwgaW50IG4sIHN0cnVjdCB1aW8gKnVpbyk7Citp
bnQJdmZzY29yZV91aW9tb3ZlKHZvaWQgKmNwLCBpbnQgbiwgc3RydWN0IHVpbyAqdWlvKTsKIAog
I2VuZGlmIC8qICFfVUlPX0hfICovCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zm
c2NvcmUvdm5vZGUuaCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5oCmluZGV4
IDQxNTVhN2RiLi4wOGI4ZTU2MiAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNj
b3JlL3Zub2RlLmgKKysrIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Zub2RlLmgKQEAg
LTIyOSwxMCArMjI5LDEwIEBAIHN0cnVjdCB2bm9wcyB7CiAjZGVmaW5lIFZPUF9SRUFETElOSyhW
UCwgVSkgICAgICAgICgoVlApLT52X29wLT52b3BfcmVhZGxpbmspKFZQLCBVKQogI2RlZmluZSBW
T1BfU1lNTElOSyhEVlAsIE9QLCBOUCkgICAoKERWUCktPnZfb3AtPnZvcF9zeW1saW5rKShEVlAs
IE9QLCBOUCkKIAotaW50CSB2b3BfbnVsbG9wKHZvaWQpOwotaW50CSB2b3BfZWludmFsKHZvaWQp
OwotaW50CSB2b3BfZXBlcm0odm9pZCk7Ci1pbnQJIHZvcF9lcm9mcyh2b2lkKTsKK2ludAkgdmZz
Y29yZV92b3BfbnVsbG9wKHZvaWQpOworaW50CSB2ZnNjb3JlX3ZvcF9laW52YWwodm9pZCk7Citp
bnQJIHZmc2NvcmVfdm9wX2VwZXJtKHZvaWQpOworaW50CSB2ZnNjb3JlX3ZvcF9lcm9mcyh2b2lk
KTsKIHN0cnVjdCB2bm9kZSAqdm5fbG9va3VwKHN0cnVjdCBtb3VudCAqLCB1aW50NjRfdCk7CiB2
b2lkCSB2bl9sb2NrKHN0cnVjdCB2bm9kZSAqKTsKIHZvaWQJIHZuX3VubG9jayhzdHJ1Y3Qgdm5v
ZGUgKik7CkBAIC0yNDAsNyArMjQwLDcgQEAgaW50CSB2bl9zdGF0KHN0cnVjdCB2bm9kZSAqLCBz
dHJ1Y3Qgc3RhdCAqKTsKIGludAkgdm5fc2V0dGltZXMoc3RydWN0IHZub2RlICosIHN0cnVjdCB0
aW1lc3BlY1syXSk7CiBpbnQJIHZuX3NldG1vZGUoc3RydWN0IHZub2RlICosIG1vZGVfdCBtb2Rl
KTsKIGludAkgdm5fYWNjZXNzKHN0cnVjdCB2bm9kZSAqLCBpbnQpOwotaW50CSB2Z2V0KHN0cnVj
dCBtb3VudCAqLCB1aW50NjRfdCBpbm8sIHN0cnVjdCB2bm9kZSAqKnZwcCk7CitpbnQJIHZmc2Nv
cmVfdmdldChzdHJ1Y3QgbW91bnQgKiwgdWludDY0X3QgaW5vLCBzdHJ1Y3Qgdm5vZGUgKip2cHAp
Owogdm9pZAkgdnB1dChzdHJ1Y3Qgdm5vZGUgKik7CiB2b2lkCSB2cmVmKHN0cnVjdCB2bm9kZSAq
KTsKIHZvaWQJIHZyZWxlKHN0cnVjdCB2bm9kZSAqKTsKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3Jl
L21vdW50LmMgYi9saWIvdmZzY29yZS9tb3VudC5jCmluZGV4IGRhZWQ4N2ZhLi42OTQxNzVmMSAx
MDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvbW91bnQuYworKysgYi9saWIvdmZzY29yZS9tb3VudC5j
CkBAIC0yNDIsNyArMjQyLDcgQEAgc3lzX21vdW50KGNvbnN0IGNoYXIgKmRldiwgY29uc3QgY2hh
ciAqZGlyLCBjb25zdCBjaGFyICpmc25hbWUsIGludCBmbGFncywgY29uc3QKIH0KIAogdm9pZAot
cmVsZWFzZV9tcF9kZW50cmllcyhzdHJ1Y3QgbW91bnQgKm1wKQordmZzY29yZV9yZWxlYXNlX21w
X2RlbnRyaWVzKHN0cnVjdCBtb3VudCAqbXApCiB7CiAJLyogRGVjcmVtZW50IHJlZmVyZWNlIGNv
dW50IG9mIHJvb3Qgdm5vZGUgKi8KIAlpZiAobXAtPm1fY292ZXJlZCkgewpAQCAtNDY2LDggKzQ2
Niw3IEBAIHZmc191bmJ1c3koc3RydWN0IG1vdW50ICptcCkKIAl1a2FyY2hfZGVjKCZtcC0+bV9j
b3VudCk7CiB9CiAKLWludAotdmZzX251bGxvcCh2b2lkKQoraW50IHZmc2NvcmVfbnVsbG9wKHZv
aWQpCiB7CiAJcmV0dXJuIDA7CiB9CkBAIC00ODAsMTIgKzQ3OSwxMiBAQCB2ZnNfZWludmFsKHZv
aWQpCiAKICNpZmRlZiBERUJVR19WRlMKIHZvaWQKLW1vdW50X2R1bXAodm9pZCkKK3Zmc2NvcmVf
bW91bnRfZHVtcCh2b2lkKQogewogCXN0cnVjdCBtb3VudCAqbXA7CiAJdWtfbXV0ZXhfbG9jaygm
bW91bnRfbG9jayk7CiAKLQl1a19wcl9kZWJ1ZygibW91bnRfZHVtcFxuIik7CisJdWtfcHJfZGVi
dWcoInZmc2NvcmVfbW91bnRfZHVtcFxuIik7CiAJdWtfcHJfZGVidWcoImRldiAgICAgIGNvdW50
IHJvb3RcbiIpOwogCXVrX3ByX2RlYnVnKCItLS0tLS0tLSAtLS0tLSAtLS0tLS0tLVxuIik7CiAK
ZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3N1YnJfdWlvLmMgYi9saWIvdmZzY29yZS9zdWJyX3Vp
by5jCmluZGV4IGQ4ZTlkMWJlLi5hYTE3NjA3NCAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvc3Vi
cl91aW8uYworKysgYi9saWIvdmZzY29yZS9zdWJyX3Vpby5jCkBAIC00Niw3ICs0Niw3IEBACiAj
aW5jbHVkZSA8dmZzY29yZS91aW8uaD4KIAogaW50Ci11aW9tb3ZlKHZvaWQgKmNwLCBpbnQgbiwg
c3RydWN0IHVpbyAqdWlvKQordmZzY29yZV91aW9tb3ZlKHZvaWQgKmNwLCBpbnQgbiwgc3RydWN0
IHVpbyAqdWlvKQogewogCVVLX0FTU0VSVCh1aW8tPnVpb19ydyA9PSBVSU9fUkVBRCB8fCB1aW8t
PnVpb19ydyA9PSBVSU9fV1JJVEUpOwogCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS92ZnMuaCBi
L2xpYi92ZnNjb3JlL3Zmcy5oCmluZGV4IDYwOWRjMWY1Li45NGZlODlhNSAxMDA2NDQKLS0tIGEv
bGliL3Zmc2NvcmUvdmZzLmgKKysrIGIvbGliL3Zmc2NvcmUvdmZzLmgKQEAgLTE0OCw3ICsxNDgs
NyBAQCB2b2lkIGRlbnRyeV9pbml0KHZvaWQpOwogCiAjaWZkZWYgREVCVUdfVkZTCiB2b2lkCSB2
bm9kZV9kdW1wKHZvaWQpOwotdm9pZAkgbW91bnRfZHVtcCh2b2lkKTsKK3ZvaWQJIHZmc2NvcmVf
bW91bnRfZHVtcCh2b2lkKTsKICNlbmRpZgogCiBzdGF0aWMgdm9pZCBfX2F0dHJpYnV0ZV9fKCh1
bnVzZWQpKSB1a192ZnNjb3JlX3RyYWNlKGludCBmb28gX191bnVzZWQsIC4uLikKZGlmZiAtLWdp
dCBhL2xpYi92ZnNjb3JlL3Zub2RlLmMgYi9saWIvdmZzY29yZS92bm9kZS5jCmluZGV4IDg2ZTZk
OWM3Li5lOWUwNDBhYSAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvdm5vZGUuYworKysgYi9saWIv
dmZzY29yZS92bm9kZS5jCkBAIC02Niw3ICs2Niw3IEBAIGludCB2dHRvaWZfdGFiWzEwXSA9IHsK
ICAqIC0tLS0tLS0tLS0gLS0tLS0tLS0tIC0tLS0tLS0tLS0KICAqIHZuX2xvY2sgICAgICogICAg
ICAgIExvY2sKICAqIHZuX3VubG9jayAgICogICAgICAgIFVubG9jawotICogdmdldCAgICAgICAg
MSAgICAgICAgTG9jaworICogdmZzY29yZV92Z2V0ICAgICAgICAxICAgICAgICBMb2NrCiAgKiB2
cHV0ICAgICAgIC0xICAgICAgICBVbmxvY2sKICAqIHZyZWYgICAgICAgKzEgICAgICAgICoKICAq
IHZyZWxlICAgICAgLTEgICAgICAgICoKQEAgLTE3Miw3ICsxNzIsNyBAQCB2bl91bmxvY2soc3Ry
dWN0IHZub2RlICp2cCkKICAqIFJldHVybnMgMSBpZiB2bm9kZSB3YXMgZm91bmQgaW4gY2FjaGU7
IG90aGVyd2lzZSByZXR1cm5zIDAuCiAgKi8KIGludAotdmdldChzdHJ1Y3QgbW91bnQgKm1wLCB1
aW50NjRfdCBpbm8sIHN0cnVjdCB2bm9kZSAqKnZwcCkKK3Zmc2NvcmVfdmdldChzdHJ1Y3QgbW91
bnQgKm1wLCB1aW50NjRfdCBpbm8sIHN0cnVjdCB2bm9kZSAqKnZwcCkKIHsKIAlzdHJ1Y3Qgdm5v
ZGUgKnZwOwogCWludCBlcnJvcjsKQEAgLTQ3NiwyNSArNDc2LDI1IEBAIHZub2RlX2R1bXAodm9p
ZCkKICNlbmRpZgogCiBpbnQKLXZvcF9udWxsb3Aodm9pZCkKK3Zmc2NvcmVfdm9wX251bGxvcCh2
b2lkKQogewogCXJldHVybiAwOwogfQogCiBpbnQKLXZvcF9laW52YWwodm9pZCkKK3Zmc2NvcmVf
dm9wX2VpbnZhbCh2b2lkKQogewogCXJldHVybiBFSU5WQUw7CiB9CiAKIGludAotdm9wX2VwZXJt
KHZvaWQpCit2ZnNjb3JlX3ZvcF9lcGVybSh2b2lkKQogewogCXJldHVybiBFUEVSTTsKIH0KIAog
aW50Ci12b3BfZXJvZnModm9pZCkKK3Zmc2NvcmVfdm9wX2Vyb2ZzKHZvaWQpCiB7CiAJcmV0dXJu
IEVST0ZTOwogfQotLSAKMi4xOS4yCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlz
dHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xp
c3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Feb 04 14:45:01 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 04 Feb 2019 14:45:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gqfUb-0007ea-BI; Mon, 04 Feb 2019 14:45:01 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Kl24=QL=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gqfUZ-0007e9-Ji
 for minios-devel@lists.xen.org; Mon, 04 Feb 2019 14:44:59 +0000
X-Inumbo-ID: 703e0ff8-288b-11e9-b60e-2345e06f15fc
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 703e0ff8-288b-11e9-b60e-2345e06f15fc;
 Mon, 04 Feb 2019 14:44:56 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id C71F7104D65;
 Mon,  4 Feb 2019 15:39:54 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 4JV-t1218HZk; Mon,  4 Feb 2019 15:39:54 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id AA87C104D63
 for <minios-devel@lists.xen.org>; Mon,  4 Feb 2019 15:39:52 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 4 Feb 2019 15:39:52 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>, <Simon.kuenzer@neclab.eu>,
 <sharan.santhanam@neclab.eu>
Date: Mon, 4 Feb 2019 15:37:32 +0100
Message-ID: <20190204143739.29249-41-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 16/23] lib/vfscore: remove
 _KERNEL ifdefs
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

QWxsIHRoaXMgY29kZSBpcyBydW5uaW5nIGluIGtlcm5lbAoKU2lnbmVkLW9mZi1ieTogWXVyaSBW
b2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0tLQogbGliL3Zmc2NvcmUvaW5jbHVk
ZS92ZnNjb3JlL21vdW50LmggfCA1IC0tLS0tCiBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUv
dm5vZGUuaCB8IDMgLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDggZGVsZXRpb25zKC0pCgpkaWZmIC0t
Z2l0IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmggYi9saWIvdmZzY29yZS9p
bmNsdWRlL3Zmc2NvcmUvbW91bnQuaAppbmRleCBhMTIyN2NiZS4uZmFjN2Q5NTQgMTAwNjQ0Ci0t
LSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9tb3VudC5oCisrKyBiL2xpYi92ZnNjb3Jl
L2luY2x1ZGUvdmZzY29yZS9tb3VudC5oCkBAIC0zNyw4ICszNyw2IEBACiAjaW5jbHVkZSA8dWsv
bGlzdC5oPgogI2luY2x1ZGUgPHZmc2NvcmUvdm5vZGUuaD4KIAotI2lmZGVmIF9LRVJORUwKLQog
LyoKICAqIE1vdW50IGRhdGEKICAqLwpAQCAtNTYsNyArNTQsNiBAQCBzdHJ1Y3QgbW91bnQgewog
CWZzaWRfdCAJCW1fZnNpZDsgCS8qIGlkIHRoYXQgdW5pcXVlbHkgaWRlbnRpZmllcyB0aGUgZnMg
Ki8KIH07CiAKLSNlbmRpZgogCiAvKgogICogTW91bnQgZmxhZ3MuCkBAIC05NSw4ICs5Miw2IEBA
IHN0cnVjdCBtb3VudCB7CiAgKi8KICNkZWZpbmUJTU5UX1ZJU0ZMQUdNQVNLCTB4MDAwMGZmZmYK
IAotI2lmZGVmIF9LRVJORUwKLQogLyoKICAqIEZpbGVzeXN0ZW0gdHlwZSBzd2l0Y2ggdGFibGUu
CiAgKi8KZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5oIGIv
bGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Zub2RlLmgKaW5kZXggMDhiOGU1NjIuLmZlMTRi
YzgyIDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUuaAorKysg
Yi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUuaApAQCAtMzMsOCArMzMsNiBAQAog
I2lmbmRlZiBfU1lTX1ZOT0RFX0hfCiAjZGVmaW5lIF9TWVNfVk5PREVfSF8KIAotI2lmZGVmIF9L
RVJORUwKLQogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAjaW5jbHVkZSA8ZGlyZW50Lmg+CiAKQEAg
LTI2MSw2ICsyNTksNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgdm5vZGVfcGFnZXJfc2V0c2l6ZShz
dHJ1Y3Qgdm5vZGUgKnZwLCBvZmZfdCBzaXplKQogCXZwLT52X3NpemUgPSBzaXplOwogfQogCi0j
ZW5kaWYKIAogI2VuZGlmIC8qICFfU1lTX1ZOT0RFX0hfICovCi0tIAoyLjE5LjIKCgpfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFp
bGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3Rz
LnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Feb 05 10:12:40 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 05 Feb 2019 10:12:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gqxiZ-0006Vy-Nu; Tue, 05 Feb 2019 10:12:39 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=oGn3=QM=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1gqxiX-0006Vp-RD
 for minios-devel@lists.xen.org; Tue, 05 Feb 2019 10:12:37 +0000
X-Inumbo-ID: 8e7aad0c-292e-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 8e7aad0c-292e-11e9-bc90-bc764e045a96;
 Tue, 05 Feb 2019 10:12:35 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 58D6DF2068;
 Tue,  5 Feb 2019 11:12:34 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id SLXw0Z6tIBSk; Tue,  5 Feb 2019 11:12:34 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 2A2E2F2013
 for <minios-devel@lists.xen.org>; Tue,  5 Feb 2019 11:12:32 +0100 (CET)
Received: from PALLENE.office.hd ([169.254.1.223]) by METHONE.office.hd
 ([192.168.24.54]) with mapi id 14.03.0319.002; Tue, 5 Feb 2019 11:12:30 +0100
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: Florian Schmidt <Florian.Schmidt@neclab.eu>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [Minios-devel] [UNIKRAFT/NEWLIB PATCH] Add missing include to
 time.c
Thread-Index: AQHUk7f7QzGmTjr63EObZs+YH0MysaXRTymA
Date: Tue, 5 Feb 2019 10:12:29 +0000
Message-ID: <41411EAB-0D1D-4084-BC90-5722B221AC45@neclab.eu>
References: <20181214141823.11512-1-florian.schmidt@neclab.eu>
In-Reply-To: <20181214141823.11512-1-florian.schmidt@neclab.eu>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.6.190114
x-originating-ip: [10.7.0.200]
Content-ID: <98276631DFDFB441868DFFB351FBD776@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/NEWLIB PATCH] Add missing include to
 time.c
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGkgRmxvcmlhbiwgDQoNClBhdGNoIGxvb2tzIGdvb2QsIHRoYW5rcy4NCg0KLS0gRmVsaXBlDQoN
ClJldmlld2VkLWJ5OiBGZWxpcGUgSHVpY2kgPGZlbGlwZS5odWljaUBuZWNsYWIuZXU+DQoNCu+7
v09uIDE0LjEyLjE4LCAxNToxOSwgIk1pbmlvcy1kZXZlbCBvbiBiZWhhbGYgb2YgRmxvcmlhbiBT
Y2htaWR0IiA8bWluaW9zLWRldmVsLWJvdW5jZXNAbGlzdHMueGVucHJvamVjdC5vcmcgb24gYmVo
YWxmIG9mIGZsb3JpYW4uc2NobWlkdEBuZWNsYWIuZXU+IHdyb3RlOg0KDQogICAgdGltZS5jIHVz
ZXMgZXJybm8sIGJ1dCBkb2Vzbid0IGluY2x1ZGUgdGhlIGNvcnJlY3QgaGVhZGVyLg0KICAgIA0K
ICAgIFNpZ25lZC1vZmYtYnk6IEZsb3JpYW4gU2NobWlkdCA8Zmxvcmlhbi5zY2htaWR0QG5lY2xh
Yi5ldT4NCiAgICAtLS0NCiAgICAgdGltZS5jIHwgMSArDQogICAgIDEgZmlsZSBjaGFuZ2VkLCAx
IGluc2VydGlvbigrKQ0KICAgIA0KICAgIGRpZmYgLS1naXQgYS90aW1lLmMgYi90aW1lLmMNCiAg
ICBpbmRleCAxNjc0N2ViLi44NGVjY2JhIDEwMDY0NA0KICAgIC0tLSBhL3RpbWUuYw0KICAgICsr
KyBiL3RpbWUuYw0KICAgIEBAIC0zNSw2ICszNSw3IEBADQogICAgICAqIFRISVMgSEVBREVSIE1B
WSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuDQogICAgICAqLw0KICAg
ICANCiAgICArI2luY2x1ZGUgPGVycm5vLmg+DQogICAgICNpbmNsdWRlIDxzeXMvdGltZS5oPg0K
ICAgICAjaW5jbHVkZSA8dXRpbWUuaD4NCiAgICAgI2luY2x1ZGUgPHVrL3BsYXQvdGltZS5oPg0K
ICAgIC0tIA0KICAgIDIuMTkuMg0KICAgIA0KICAgIA0KICAgIF9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fDQogICAgTWluaW9zLWRldmVsIG1haWxpbmcgbGlz
dA0KICAgIE1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KICAgIGh0dHBzOi8vbGlz
dHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWwNCg0KX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1h
aWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0
cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Tue Feb 05 12:57:09 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 05 Feb 2019 12:57:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gr0Hk-0005L3-R8; Tue, 05 Feb 2019 12:57:08 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=GOrT=QM=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1gr0Hj-0005Ky-TF
 for minios-devel@lists.xen.org; Tue, 05 Feb 2019 12:57:07 +0000
X-Inumbo-ID: 884770a2-2945-11e9-8225-bb8cdb3e916a
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 884770a2-2945-11e9-8225-bb8cdb3e916a;
 Tue, 05 Feb 2019 12:57:03 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 12451F201C;
 Tue,  5 Feb 2019 13:57:02 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id qpRE0EruMWyi; Tue,  5 Feb 2019 13:57:01 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id D99E3F2018
 for <minios-devel@lists.xen.org>; Tue,  5 Feb 2019 13:56:59 +0100 (CET)
Received: from [10.1.2.30] (10.1.2.30) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 5 Feb 2019 13:56:59
 +0100
To: <minios-devel@lists.xen.org>
References: <20190110152212.14518-1-costin.lupu@cs.pub.ro>
 <20190110152212.14518-7-costin.lupu@cs.pub.ro>
From: Florian Schmidt <Florian.Schmidt@neclab.eu>
Message-ID: <87916df1-ef3a-4a3a-23c3-528b8cf8de25@neclab.eu>
Date: Tue, 5 Feb 2019 13:56:59 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190110152212.14518-7-costin.lupu@cs.pub.ro>
Content-Language: en-US
X-Originating-IP: [10.1.2.30]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 6/8] lib/uksched: Revisit
 thread exiting logic
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

QXBvbG9naWVzLCB0aGlzIG1haWwgZ290IG9ubHkgc2VudCB0byBDb3N0aW4gZGlyZWN0bHkgaW5z
dGVhZCBvZiB0byB0aGUgCmxpc3QuIE15IGNvbW1lbnQgd2FzOgoKClRoaXMgcGF0Y2ggbG9va3Mg
ZmluZS4gTXkgcmVtYXJrIGFib3V0IHRoZSBBU1NFUlQgaW4gdjEgZG9lc24ndCBhcHBseSBpZiAK
eW91IGludmVydCB0aGUgb3JkZXIsIHNvOgoKUmV2aWV3ZWQtYnk6IEZsb3JpYW4gU2NobWlkdCA8
Zmxvcmlhbi5zY2htaWR0QG5lY2xhYi5ldT4KCk9uIDEvMTAvMTkgNDoyMiBQTSwgQ29zdGluIEx1
cHUgd3JvdGU6Cj4gV2UgdXNlIGEgbGlzdCBmb3IgdGVybWluYXRlZCB0aHJlYWRzIG9uIGFsbCBz
Y2hlZHVsZXJzIGJlY2F1c2UgaXQKPiBrZWVwcyByZWZlcmVuY2VzIHRvIHRob3NlIHRocmVhZHMg
dW50aWwgd2FpdCBpcyBjYWxsZWQgZm9yIHRoZW0uCj4gCj4gU2lnbmVkLW9mZi1ieTogQ29zdGlu
IEx1cHUgPGNvc3Rpbi5sdXB1QGNzLnB1Yi5ybz4KPiAtLS0KPiAgIGxpYi91a3NjaGVkL2luY2x1
ZGUvdWsvc2NoZWQuaCB8ICAxICsKPiAgIGxpYi91a3NjaGVkL3NjaGVkLmMgICAgICAgICAgICB8
ICA3ICsrKystLS0KPiAgIGxpYi91a3NjaGVkY29vcC9zY2hlZGNvb3AuYyAgICB8IDExICsrKy0t
LS0tLS0tCj4gICAzIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25z
KC0pCj4gCj4gZGlmZiAtLWdpdCBhL2xpYi91a3NjaGVkL2luY2x1ZGUvdWsvc2NoZWQuaCBiL2xp
Yi91a3NjaGVkL2luY2x1ZGUvdWsvc2NoZWQuaAo+IGluZGV4IDQ0M2RiZjMuLmMzZTI4NjYgMTAw
NjQ0Cj4gLS0tIGEvbGliL3Vrc2NoZWQvaW5jbHVkZS91ay9zY2hlZC5oCj4gKysrIGIvbGliL3Vr
c2NoZWQvaW5jbHVkZS91ay9zY2hlZC5oCj4gQEAgLTg3LDYgKzg3LDcgQEAgc3RydWN0IHVrX3Nj
aGVkIHsKPiAgIAo+ICAgCS8qIGludGVybmFsICovCj4gICAJc3RydWN0IHVrX3RocmVhZCBpZGxl
Owo+ICsJc3RydWN0IHVrX3RocmVhZF9saXN0IGV4aXRlZF90aHJlYWRzOwo+ICAgCXN0cnVjdCB1
a3BsYXRfY3R4X2NhbGxiYWNrcyBwbGF0X2N0eF9jYnM7Cj4gICAJc3RydWN0IHVrX2FsbG9jICph
bGxvY2F0b3I7Cj4gICAJc3RydWN0IHVrX3NjaGVkICpuZXh0Owo+IGRpZmYgLS1naXQgYS9saWIv
dWtzY2hlZC9zY2hlZC5jIGIvbGliL3Vrc2NoZWQvc2NoZWQuYwo+IGluZGV4IDZlMWQ4ZWUuLmVk
NTVhNjQgMTAwNjQ0Cj4gLS0tIGEvbGliL3Vrc2NoZWQvc2NoZWQuYwo+ICsrKyBiL2xpYi91a3Nj
aGVkL3NjaGVkLmMKPiBAQCAtMTIyLDYgKzEyMiw3IEBAIHN0cnVjdCB1a19zY2hlZCAqdWtfc2No
ZWRfY3JlYXRlKHN0cnVjdCB1a19hbGxvYyAqYSwgc2l6ZV90IHBydl9zaXplKQo+ICAgCX0KPiAg
IAo+ICAgCXNjaGVkLT5hbGxvY2F0b3IgPSBhOwo+ICsJVUtfVEFJTFFfSU5JVCgmc2NoZWQtPmV4
aXRlZF90aHJlYWRzKTsKPiAgIAlzY2hlZC0+cHJ2ID0gKHZvaWQgKikgc2NoZWQgKyBzaXplb2Yo
c3RydWN0IHVrX3NjaGVkKTsKPiAgIAo+ICAgCXJldHVybiBzY2hlZDsKPiBAQCAtMjE3LDYgKzIx
OCw5IEBAIHZvaWQgdWtfc2NoZWRfdGhyZWFkX2Rlc3Ryb3koc3RydWN0IHVrX3NjaGVkICpzY2hl
ZCwgc3RydWN0IHVrX3RocmVhZCAqdGhyZWFkKQo+ICAgewo+ICAgCVVLX0FTU0VSVChzY2hlZCAh
PSBOVUxMKTsKPiAgIAlVS19BU1NFUlQodGhyZWFkICE9IE5VTEwpOwo+ICsJVUtfQVNTRVJUKGlz
X2V4aXRlZCh0aHJlYWQpKTsKPiArCj4gKwlVS19UQUlMUV9SRU1PVkUoJnNjaGVkLT5leGl0ZWRf
dGhyZWFkcywgdGhyZWFkLCB0aHJlYWRfbGlzdCk7Cj4gICAKPiAgIAl1a19mcmVlKHNjaGVkLT5h
bGxvY2F0b3IsIHRocmVhZC0+c2NoZWRfaW5mbyk7Cj4gICAJdWtfdGhyZWFkX2ZpbmkodGhyZWFk
LCBzY2hlZC0+YWxsb2NhdG9yKTsKPiBAQCAtMjM4LDkgKzI0Miw2IEBAIHZvaWQgdWtfc2NoZWRf
dGhyZWFkX2V4aXQodm9pZCkKPiAgIAlzdHJ1Y3QgdWtfdGhyZWFkICp0aHJlYWQ7Cj4gICAKPiAg
IAl0aHJlYWQgPSB1a190aHJlYWRfY3VycmVudCgpOwo+IC0KPiAtCXVrX3ByX2luZm8oIlRocmVh
ZCBcIiVzXCIgZXhpdGVkLlxuIiwgdGhyZWFkLT5uYW1lKTsKPiAtCj4gICAJVUtfQVNTRVJUKHRo
cmVhZC0+c2NoZWQpOwo+ICAgCXVrX3NjaGVkX3RocmVhZF9yZW1vdmUodGhyZWFkLT5zY2hlZCwg
dGhyZWFkKTsKPiAgIAlVS19DUkFTSCgiRXJyb3Igc3RvcHBpbmcgdGhyZWFkLiIpOwo+IGRpZmYg
LS1naXQgYS9saWIvdWtzY2hlZGNvb3Avc2NoZWRjb29wLmMgYi9saWIvdWtzY2hlZGNvb3Avc2No
ZWRjb29wLmMKPiBpbmRleCBmN2FiOTJkLi41NjE2ZWUxIDEwMDY0NAo+IC0tLSBhL2xpYi91a3Nj
aGVkY29vcC9zY2hlZGNvb3AuYwo+ICsrKyBiL2xpYi91a3NjaGVkY29vcC9zY2hlZGNvb3AuYwo+
IEBAIC0zNyw3ICszNyw2IEBACj4gICAKPiAgIHN0cnVjdCBzY2hlZGNvb3BfcHJpdmF0ZSB7Cj4g
ICAJc3RydWN0IHVrX3RocmVhZF9saXN0IHRocmVhZF9saXN0Owo+IC0Jc3RydWN0IHVrX3RocmVh
ZF9saXN0IGV4aXRlZF90aHJlYWRzOwo+ICAgCWludCB0aHJlYWRzX3N0YXJ0ZWQ7Cj4gICB9Owo+
ICAgCj4gQEAgLTEyNCwxOCArMTIzLDE1IEBAIHN0YXRpYyB2b2lkIHNjaGVkY29vcF9zY2hlZHVs
ZShzdHJ1Y3QgdWtfc2NoZWQgKnMpCj4gICAJaWYgKHByZXYgIT0gbmV4dCkKPiAgIAkJdWtfc2No
ZWRfdGhyZWFkX3N3aXRjaChzLCBwcmV2LCBuZXh0KTsKPiAgIAo+IC0JVUtfVEFJTFFfRk9SRUFD
SF9TQUZFKHRocmVhZCwgJnBydi0+ZXhpdGVkX3RocmVhZHMsIHRocmVhZF9saXN0LCB0bXApIHsK
PiArCVVLX1RBSUxRX0ZPUkVBQ0hfU0FGRSh0aHJlYWQsICZzLT5leGl0ZWRfdGhyZWFkcywgdGhy
ZWFkX2xpc3QsIHRtcCkgewo+ICAgCQlzdHJ1Y3QgdGhyZWFkX2luZm9fYmFzZSAqdGliID0gdGhy
ZWFkLT5zY2hlZF9pbmZvOwo+ICAgCj4gICAJCWlmICghdGliLT5pc19kZXRhY2hlZCkKPiAgIAkJ
CS8qIHNvbWVvbmUgd2lsbCBldmVudHVhbGx5IHdhaXQgZm9yIGl0ICovCj4gICAJCQljb250aW51
ZTsKPiAgIAo+IC0JCWlmICh0aHJlYWQgIT0gcHJldikgewo+IC0JCQlVS19UQUlMUV9SRU1PVkUo
JnBydi0+ZXhpdGVkX3RocmVhZHMsCj4gLQkJCQkJdGhyZWFkLCB0aHJlYWRfbGlzdCk7Cj4gKwkJ
aWYgKHRocmVhZCAhPSBwcmV2KQo+ICAgCQkJdWtfdGhyZWFkX2Rlc3Ryb3kodGhyZWFkKTsKPiAt
CQl9Cj4gICAJfQo+ICAgfQo+ICAgCj4gQEAgLTE3Miw3ICsxNjgsNyBAQCBzdGF0aWMgdm9pZCBz
Y2hlZGNvb3BfdGhyZWFkX3JlbW92ZShzdHJ1Y3QgdWtfc2NoZWQgKnMsIHN0cnVjdCB1a190aHJl
YWQgKnQpCj4gICAJY2xlYXJfcnVubmFibGUodCk7Cj4gICAKPiAgIAkvKiBQdXQgb250byBleGl0
ZWQgbGlzdCAqLwo+IC0JVUtfVEFJTFFfSU5TRVJUX0hFQUQoJnBydi0+ZXhpdGVkX3RocmVhZHMs
IHQsIHRocmVhZF9saXN0KTsKPiArCVVLX1RBSUxRX0lOU0VSVF9IRUFEKCZzLT5leGl0ZWRfdGhy
ZWFkcywgdCwgdGhyZWFkX2xpc3QpOwo+ICAgCXVrX3RocmVhZF9leGl0KHQpOwo+ICAgCj4gICAJ
dWtwbGF0X2xjcHVfcmVzdG9yZV9pcnFmKGZsYWdzKTsKPiBAQCAtMjE4LDcgKzIxNCw2IEBAIHN0
cnVjdCB1a19zY2hlZCAqdWtfc2NoZWRjb29wX2luaXQoc3RydWN0IHVrX2FsbG9jICphKQo+ICAg
CXVrcGxhdF9jdHhfY2FsbGJhY2tzX2luaXQoJnNjaGVkLT5wbGF0X2N0eF9jYnMsIHVrcGxhdF9j
dHhfc3cpOwo+ICAgCj4gICAJcHJ2ID0gc2NoZWQtPnBydjsKPiAtCVVLX1RBSUxRX0lOSVQoJnBy
di0+ZXhpdGVkX3RocmVhZHMpOwo+ICAgCVVLX1RBSUxRX0lOSVQoJnBydi0+dGhyZWFkX2xpc3Qp
Owo+ICAgCXBydi0+dGhyZWFkc19zdGFydGVkID0gMDsKPiAgIAo+IAoKLS0gCkRyLiBGbG9yaWFu
IFNjaG1pZHQK44OV44Ot44O844Oq44Ki44Oz44O744K344Ol44Of44OD44OIClJlc2VhcmNoIFNj
aWVudGlzdCwKU3lzdGVtcyBhbmQgTWFjaGluZSBMZWFybmluZyBHcm91cApORUMgTGFib3JhdG9y
aWVzIEV1cm9wZQpLdXJmw7xyc3Rlbi1BbmxhZ2UgMzYsIEQtNjkxMTUgSGVpZGVsYmVyZwpUZWwu
ICAgICArNDkgKDApNjIyMSA0MzQyLTI2NQpGYXg6ICAgICArNDkgKDApNjIyMSA0MzQyLTE1NQpl
LW1haWw6ICBmbG9yaWFuLnNjaG1pZHRAbmVjbGFiLmV1Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZWdpc3RlcmVkIGF0IEFtdHNn
ZXJpY2h0IE1hbm5oZWltLCBHZXJtYW55LCBIUkI3Mjg1NTgKCl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWlu
aW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5v
cmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Feb 05 13:51:27 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 05 Feb 2019 13:51:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gr18H-0002Jn-KM; Tue, 05 Feb 2019 13:51:25 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=N6rC=QM=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1gr18G-0002Ji-1E
 for minios-devel@lists.xen.org; Tue, 05 Feb 2019 13:51:24 +0000
X-Inumbo-ID: 1dd0fdee-294d-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 1dd0fdee-294d-11e9-bc90-bc764e045a96;
 Tue, 05 Feb 2019 13:51:20 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id B28A2F201C;
 Tue,  5 Feb 2019 14:51:19 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id OEOMv7AopMPz; Tue,  5 Feb 2019 14:51:19 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 8068FF2018
 for <minios-devel@lists.xen.org>; Tue,  5 Feb 2019 14:51:17 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 5 Feb 2019 14:51:17
 +0100
To: Simon Kuenzer <simon.kuenzer@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190131111252.99374-1-simon.kuenzer@neclab.eu>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <e96907de-2dfb-0a6b-8212-7c4f0f40d969@neclab.eu>
Date: Tue, 5 Feb 2019 14:51:17 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190131111252.99374-1-simon.kuenzer@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 1/3] build: `distclean`,
 `properclean` independent of `.config`
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: yuri.volchkov@neclab.eu
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gU2ltb24sCgpUaGlzIHBhdGNoIHNlZW1zIGZpbmUuCgpSZXZpZXdlZC1ieTogU2hhcmFu
IFNhbnRoYW5hbSA8c2hhcmFuLnNhbnRoYW5hbUBuZWNsYWIuZXU+CgpUaGFua3MgJiBSZWdhcmRz
ClNoYXJhbgoKT24gMS8zMS8xOSAxMjoxMiBQTSwgU2ltb24gS3VlbnplciB3cm90ZToKPiBVbnRp
bCBub3csIHRoZSB0YXJnZXRzIGBkaXN0Y2xlYW5gIGFuZCBgcHJvcGVyY2xlYW5gIHdlcmUgbm90
Cj4gYXZhaWxhYmxlIGlmIGAuY29uZmlnYCBmaWxlIGlzIG5vdCBwcmVzZW50LiBUaGlzIGRvZXMg
bm90IG1ha2Ugc2Vuc2UsCj4gYmVjYXVzZSB0aGVzZSB0YXJnZXRzIGhhdmUgbm90aGluZyB0byBk
byB3aXRoIHRoZSBjb25maWd1cmF0aW9uLiBUaGV5Cj4ganVzdCBjbGVhbiBldmVyeXRoaW5nIChl
eGNlcHQgLmNvbmZpZyBpbiBjYXNlIG9mIHByb3BlcmNsZWFuKS4KPiBTaW5jZSB0aGVzZSB0YXJn
ZXRzIHVzZSBzb21lIGZ1bmN0aW9ucyBkZWNsYXJlZCBpbgo+IGBzdXBwb3J0L2J1aWxkL01ha2Vm
aWxlLnJ1bGVzYCwgd2UgaW5jbHVkZSB0aGlzIGZpbGUgYXQgYW4gZWFybGllcgo+IHBvaW50Lgo+
IAo+IFNpZ25lZC1vZmYtYnk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1
Pgo+IC0tLQo+ICAgTWFrZWZpbGUgfCA0NSArKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0t
LS0tLS0tLS0tLS0tLS0KPiAgIDEgZmlsZSBjaGFuZ2VkLCAyNiBpbnNlcnRpb25zKCspLCAxOSBk
ZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQo+IGluZGV4
IGVmYzk0YTE2Li4wOGVlMjE1MiAxMDA2NDQKPiAtLS0gYS9NYWtlZmlsZQo+ICsrKyBiL01ha2Vm
aWxlCj4gQEAgLTE0Miw3ICsxNDIsNyBAQCBleHBvcnQgREFURSA6PSAkKHNoZWxsIGRhdGUgKyVZ
JW0lZCkKPiAgIG51bGxfdGFyZ2V0cwkJOj0gcHJpbnQtdmVyc2lvbiBoZWxwCj4gICBub2NvbmZp
Z190YXJnZXRzCTo9IG1lbnVjb25maWcgbmNvbmZpZyBnY29uZmlnIHhjb25maWcgY29uZmlnIG9s
ZGNvbmZpZyByYW5kY29uZmlnIFwKPiAgIAkJCSAgIGRlZmNvbmZpZyAlX2RlZmNvbmZpZyBhbGx5
ZXNjb25maWcgYWxsbm9jb25maWcgc2lsZW50b2xkY29uZmlnIHJlbGVhc2UgXAo+IC0JCQkgICBv
bGRkZWZjb25maWcgJChudWxsX3RhcmdldHMpCj4gKwkJCSAgIG9sZGRlZmNvbmZpZyBwcm9wZXJj
bGVhbiBkaXN0Y2xlYW4gJChudWxsX3RhcmdldHMpCj4gICAKPiAgICMgVG8gcHV0IG1vcmUgZm9j
dXMgb24gd2FybmluZ3MsIGJlIGxlc3MgdmVyYm9zZSBhcyBkZWZhdWx0Cj4gICAjIFVzZSAnbWFr
ZSBWPTEnIHRvIHNlZSB0aGUgZnVsbCBjb21tYW5kcwo+IEBAIC0xNjgsMTAgKzE2OCwyMCBAQCBT
SEVMTCA6PSAkKHNoZWxsIGlmIFsgLXggIiQkQkFTSCIgXTsgdGhlbiBlY2hvICQkQkFTSDsgXAo+
ICAgCSBlbHNlIGlmIFsgLXggL2Jpbi9iYXNoIF07IHRoZW4gZWNobyAvYmluL2Jhc2g7IFwKPiAg
IAkgZWxzZSBlY2hvIHNoOyBmaTsgZmkpCj4gICAKPiArIyBiYXNpYyB0b29scwo+ICtSTSAgICA6
PSBybSAtZgo+ICtNViAgICA6PSBtdiAtZgo+ICtDUCAgICA6PSBjcCAtZgo+ICtNS0RJUiA6PSBt
a2Rpcgo+ICtUT1VDSCA6PSB0b3VjaAo+ICsKPiAgICMga2NvbmZpZyB1c2VzIENPTkZJR19TSEVM
TAo+ICAgQ09ORklHX1NIRUxMIDo9ICQoU0hFTEwpCj4gICBleHBvcnQgU0hFTEwgQ09ORklHX1NI
RUxMIFEgS0JVSUxEX1ZFUkJPU0UKPiAgIAo+ICsjIEluY2x1ZGUgY29tbW9uIE1ha2VmaWxlIGhl
bHBlcnMgZWFybHkKPiAraW5jbHVkZSAkKENPTkZJR19VS19CQVNFKS9zdXBwb3J0L2J1aWxkL01h
a2VmaWxlLnJ1bGVzCj4gKwo+ICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKPiAgICMgLmNvbmZp
Zwo+ICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKPiBAQCAtMjk2LDYgKzMwNiwyMCBAQCBleHBv
cnQgSE9TVEFSQ0ggOj0gJChzaGVsbCBMQ19BTEw9QyAkKEhPU1RDQ19OT0NDQUNIRSkgLXYgMj4m
MSB8IFwKPiAgIGV4cG9ydCBIT1NUQVIgSE9TVEFTIEhPU1RDQyBIT1NUQ0NfVkVSU0lPTiBIT1NU
Q1hYIEhPU1RMRCBIT1NUQVJDSAo+ICAgZXhwb3J0IEhPU1RDQ19OT0NDQUNIRSBIT1NUQ1hYX05P
Q0NBQ0hFCj4gICAKPiArIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKPiArIyBDbGVhbiB0YXJnZXRz
IHRoYXQgZG8gbm90IGhhdmUgYW55IGRlcGVuZGVuY3kgb24gYSBjb25maWd1cmF0aW9uCj4gKyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjCj4gKyMgRGVjbGFyZSB0aGVtIGJlZm9yZSB3ZSBkZXBlbmQg
b24gaGF2aW5nIC5jb25maWcKPiArcHJvcGVyY2xlYW46Cj4gKwkkKGNhbGwgdmVyYm9zZV9jbWQs
Uk0sYnVpbGQvLCQoUk0pIC1yIFwKPiArCQkkKEJVSUxEX0RJUikpCj4gKwo+ICtkaXN0Y2xlYW46
IHByb3BlcmNsZWFuCj4gKwkkKGNhbGwgdmVyYm9zZV9jbWQsUk0sY29uZmlnLCQoUk0pIFwKPiAr
CQkkKFVLX0NPTkZJRykgJChVS19DT05GSUcpLm9sZCAkKENPTkZJR19ESVIpLy4uY29uZmlnLnRt
cCBcCj4gKwkJJChDT05GSUdfRElSKS8uYXV0by5kZXBzKQo+ICsKPiArLlBIT05ZOiBkaXN0Y2xl
YW4gcHJvcGVyY2xlYW4KPiAgIAo+ICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKPiAgICMgVW5p
a3JhZnQgQXJjaGl0ZWN0dXJlCj4gQEAgLTQxMCwxMCArNDM0LDYgQEAgU1RSSVAJCTo9ICQoQ09O
RklHX0NST1NTX0NPTVBJTEUpc3RyaXAKPiAgIE9CSkNPUFkJCTo9ICQoQ09ORklHX0NST1NTX0NP
TVBJTEUpb2JqY29weQo+ICAgT0JKRFVNUAkJOj0gJChDT05GSUdfQ1JPU1NfQ09NUElMRSlvYmpk
dW1wCj4gICBBUgkJOj0gYXIKPiAtTVYJCTo9IG12IC1mCj4gLVJNCQk6PSBybSAtZgo+IC1DUAkJ
Oj0gY3AgLWYKPiAtTUtESVIJCTo9IG1rZGlyCj4gICBDQVQJCTo9IGNhdAo+ICAgU0VECQk6PSBz
ZWQKPiAgIEFXSwkJOj0gYXdrCj4gQEAgLTQyMiw3ICs0NDIsNiBAQCBHWklQCQk6PSBnemlwCj4g
ICBUQVIJCTo9IHRhcgo+ICAgVU5aSVAJCTo9IHVuemlwIC1xcSAtdQo+ICAgV0dFVAkJOj0gd2dl
dAo+IC1UT1VDSAkJOj0gdG91Y2gKPiAgICMgVGltZSByZXF1aXJlcyB0aGUgZnVsbCBwYXRoIHNv
IHRoYXQgc3ViYXJndW1lbnRzIGFyZSBoYW5kbGVkIGNvcnJlY3RseQo+ICAgVElNRQkJOj0gJChz
aGVsbCB3aGljaCB0aW1lKQo+ICAgTElGVE9GRgkJOj0gbGlmdG9mZiAtZSAtcwo+IEBAIC00Mzgs
OSArNDU3LDYgQEAgQVNGTEFHUwkJKz0gLURDQ19WRVJTSU9OPSQoQ0NfVkVSU0lPTikKPiAgIENG
TEFHUwkJKz0gLURDQ19WRVJTSU9OPSQoQ0NfVkVSU0lPTikKPiAgIENYWEZMQUdTCSs9IC1EQ0Nf
VkVSU0lPTj0kKENDX1ZFUlNJT04pCj4gICAKPiAtIyBDb21tb24gTWFrZWZpbGUgZGVmaW5pdGlv
bnMgd2UgbmVlZCBmb3IgYnVpbGRpbmcgVW5pa3JhZnQKPiAtaW5jbHVkZSAkKENPTkZJR19VS19C
QVNFKS9zdXBwb3J0L2J1aWxkL01ha2VmaWxlLnJ1bGVzCj4gLQo+ICAgIyBlbnN1cmUgJChCVUlM
RF9ESVIpL2luY2x1ZGUgYW5kICQoQlVJTERfRElSKS9pbmNsdWRlL3VrIGV4aXN0cwo+ICAgJChj
YWxsIG1rX3N1Yl9idWlsZF9kaXIsaW5jbHVkZSkKPiAgICQoY2FsbCBta19zdWJfYnVpbGRfZGly
LGluY2x1ZGUvdWspCj4gQEAgLTUzNiwxOSArNTUyLDEwIEBAIGxpYnM6IG1lbnVjb25maWcKPiAg
IGltYWdlczogbWVudWNvbmZpZwo+ICAgCj4gICBjbGVhbjoKPiArCSQoZXJyb3IgRG8gbm90IGtu
b3cgd2hpY2ggZmlsZXMgdG8gY2xlYW4gd2l0aG91dCBoYXZpbmcgYSBjb25maWd1cmF0aW9uLiBE
aWQgeW91IG1lYW4gJ3Byb3BlcmNsZWFuJyBvciAnZGlzdGNsZWFuJz8pCj4gICAKPiAgIGVuZGlm
Cj4gICAKPiAtLlBIT05ZOiBkaXN0Y2xlYW4gcHJvcGVyY2xlYW4KPiAtcHJvcGVyY2xlYW46Cj4g
LQkkKGNhbGwgdmVyYm9zZV9jbWQsUk0sYnVpbGQvLCQoUk0pIC1yIFwKPiAtCQkkKEJVSUxEX0RJ
UikpCj4gLQo+IC1kaXN0Y2xlYW46IHByb3BlcmNsZWFuCj4gLQkkKGNhbGwgdmVyYm9zZV9jbWQs
Uk0sY29uZmlnLCQoUk0pIFwKPiAtCQkkKFVLX0NPTkZJRykgJChVS19DT05GSUcpLm9sZCAkKENP
TkZJR19ESVIpLy4uY29uZmlnLnRtcCBcCj4gLQkJJChDT05GSUdfRElSKS8uYXV0by5kZXBzKQo+
IC0KPiAgIC5QSE9OWTogcHJpbnQtdmFycyBwcmludC1saWJzIGhlbHAgb3V0cHV0bWFrZWZpbGUg
bGlzdC1kZWZjb25maWdzCj4gICAKPiAgICMgQ29uZmlndXJhdGlvbgo+IAoKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcg
bGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5w
cm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Tue Feb 05 14:11:47 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 05 Feb 2019 14:11:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gr1Ry-0004GT-Qw; Tue, 05 Feb 2019 14:11:46 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=N6rC=QM=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1gr1Rx-0004GO-Pt
 for minios-devel@lists.xen.org; Tue, 05 Feb 2019 14:11:45 +0000
X-Inumbo-ID: f6be102a-294f-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id f6be102a-294f-11e9-bc90-bc764e045a96;
 Tue, 05 Feb 2019 14:11:43 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id A7143F201C;
 Tue,  5 Feb 2019 15:11:42 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 9tLxkXjEJNAw; Tue,  5 Feb 2019 15:11:42 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 7AF35F2018
 for <minios-devel@lists.xen.org>; Tue,  5 Feb 2019 15:11:40 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 5 Feb 2019 15:11:40
 +0100
To: Simon Kuenzer <simon.kuenzer@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190131111252.99374-1-simon.kuenzer@neclab.eu>
 <20190131111252.99374-2-simon.kuenzer@neclab.eu>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <e28609ec-8620-1edd-cd45-be417be404b5@neclab.eu>
Date: Tue, 5 Feb 2019 15:11:40 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190131111252.99374-2-simon.kuenzer@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 2/3] build: `print-vars`
 target is a `null_targets`
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: yuri.volchkov@neclab.eu
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gU2ltb24sCgpUaGlzIHBhdGNoIHNlZW1zIGZpbmUgYnV0IHRoZSBwcmludC12YXJzIHJ1
bGUgcmVwb3J0IHRoZSBmb2xsb3dpbmcgZXJyb3IuCgpidWlsZF9jbWRfZml4ZGVwPSAgICAgICBA
cHJpbnRmICcgICUtN3MgJXNcbicgJycgICcnICYmCiAgICAgICAgIEAgVW5pa3JhZnRfUmV2aWV3
L3Rlc3QvYnVpbGQva2NvbmZpZy9maXhkZXAgLi5kICAnJyAKVW5pa3JhZnRfUmV2aWV3L3Rlc3Qv
YnVpbGQgICAgPiAgJiYgcm0gLWYgLi5kICggICAgICAgJChjYWxsIApidWlsZF9jbWQsJDEsJDIs
JDMsJDQpCiAgICAgICAgICRRICQoVUtfRklYREVQKSAkKGNhbGwgdG1wX2RlcGZpbGUsJDMpICQz
ICckKGNhbGwgc3RyaXAsJDQpJyAKJChCVUlMRF9ESVIpICAgICAgID4gJChjYWxsIG91dDJkZXAs
JDMpICYmICQoUk0pICQoY2FsbCB0bXBfZGVwZmlsZSwkMykpCk1ha2VmaWxlOjY5NTogKioqIDog
bWlzc2luZyBidWlsZCBydWxlIGZvciBzb3VyY2UgdHlwZSAuICBTdG9wLgoKClNpbmNlIHRoaXMg
YnVnIGlzIG5vdCByZWxhdGVkIHRvIHRoaXMgZml4LCB3ZSBzaG91bGQgZml4IGl0IGluIGEgCmRp
ZmZlcmVudCBwYXRjaC4KCgpSZXZpZXdlZC1ieTogU2hhcmFuIFNhbnRoYW5hbSA8c2hhcmFuLnNh
bnRoYW5hbUBuZWNsYWIuZXU+CgpUaGFua3MgJiBSZWdhcmRzClNoYXJhbgoKCk9uIDEvMzEvMTkg
MTI6MTIgUE0sIFNpbW9uIEt1ZW56ZXIgd3JvdGU6Cj4gSW5jbHVkZSB0aGUgYHByaW50LXZhcnNg
IHRhcmdldCB0byB0aGUgYG51bGxfdGFyZ2V0c2AgdmFyaWFibGUuIFRoaXMKPiBpcyBkb25lIGZv
ciBjb25zaXN0ZW5jeS4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBTaW1vbiBLdWVuemVyIDxzaW1vbi5r
dWVuemVyQG5lY2xhYi5ldT4KPiAtLS0KPiAgIE1ha2VmaWxlIHwgNCArKy0tCj4gICAxIGZpbGUg
Y2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQg
YS9NYWtlZmlsZSBiL01ha2VmaWxlCj4gaW5kZXggMDhlZTIxNTIuLjU3NTY3YzFhIDEwMDY0NAo+
IC0tLSBhL01ha2VmaWxlCj4gKysrIGIvTWFrZWZpbGUKPiBAQCAtMTM5LDcgKzEzOSw3IEBAIGV4
cG9ydCBDT05GSUdfVUtfTkFNRSA/PSAkKG5vdGRpciAkKEFQUF9ESVIpKQo+ICAgZXhwb3J0IERB
VEUgOj0gJChzaGVsbCBkYXRlICslWSVtJWQpCj4gICAKPiAgICMgTWFrZWZpbGUgdGFyZ2V0cwo+
IC1udWxsX3RhcmdldHMJCTo9IHByaW50LXZlcnNpb24gaGVscAo+ICtudWxsX3RhcmdldHMJCTo9
IHByaW50LXZlcnNpb24gcHJpbnQtdmFycyBoZWxwCj4gICBub2NvbmZpZ190YXJnZXRzCTo9IG1l
bnVjb25maWcgbmNvbmZpZyBnY29uZmlnIHhjb25maWcgY29uZmlnIG9sZGNvbmZpZyByYW5kY29u
ZmlnIFwKPiAgIAkJCSAgIGRlZmNvbmZpZyAlX2RlZmNvbmZpZyBhbGx5ZXNjb25maWcgYWxsbm9j
b25maWcgc2lsZW50b2xkY29uZmlnIHJlbGVhc2UgXAo+ICAgCQkJICAgb2xkZGVmY29uZmlnIHBy
b3BlcmNsZWFuIGRpc3RjbGVhbiAkKG51bGxfdGFyZ2V0cykKPiBAQCAtMzcxLDcgKzM3MSw3IEBA
IGV4cG9ydCBVS19GQU1JTFkgPz0gJChzaGVsbCBlY2hvICIkKENPTkZJR19VS19BUkNIKSIgfCBc
Cj4gICAKPiAgIAo+ICAgIyBRdWljay1jaGVjayBpZiBhcmNoaXRlY3R1cmUgZXhpc3RzCj4gLWlm
ZXEgKCQoZmlsdGVyICQobnVsbF90YXJnZXRzKSBwcmludC12YXJzLCQoTUFLRUNNREdPQUxTKSks
KQo+ICtpZmVxICgkKGZpbHRlciAkKG51bGxfdGFyZ2V0cyksJChNQUtFQ01ER09BTFMpKSwpCj4g
ICBpZmVxICgkKHdpbGRjYXJkICQoQ09ORklHX1VLX0JBU0UpL2FyY2gvJChVS19GQU1JTFkpLyQo
QVJDSCkvTWFrZWZpbGUudWspLCkKPiAgICQoZXJyb3IgVGFyZ2V0IGFyY2hpdGVjdHVyZSAoJChB
UkNIKSkgaXMgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQgKGNvdWxkIG5vdCBmaW5kICQoQ09ORklH
X1VLX0JBU0UpL2FyY2gvJChVS19GQU1JTFkpLyQoQVJDSCkvTWFrZWZpbGUudWspLikKPiAgIGVu
ZGlmCj4gCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpN
aW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9y
ZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRl
dmVs

From minios-devel-bounces@lists.xenproject.org Tue Feb 05 14:32:03 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 05 Feb 2019 14:32:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gr1lZ-0006A2-UQ; Tue, 05 Feb 2019 14:32:01 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=N6rC=QM=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1gr1lY-00069x-KH
 for minios-devel@lists.xen.org; Tue, 05 Feb 2019 14:32:00 +0000
X-Inumbo-ID: cb1df32e-2952-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id cb1df32e-2952-11e9-bc90-bc764e045a96;
 Tue, 05 Feb 2019 14:31:59 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 05DF7104D6C;
 Tue,  5 Feb 2019 15:31:58 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 38oDvkfrQCtX; Tue,  5 Feb 2019 15:31:57 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id D8657104D6A
 for <minios-devel@lists.xen.org>; Tue,  5 Feb 2019 15:31:55 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 5 Feb 2019 15:31:55
 +0100
To: Simon Kuenzer <simon.kuenzer@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190131111252.99374-1-simon.kuenzer@neclab.eu>
 <20190131111252.99374-3-simon.kuenzer@neclab.eu>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <6626a7ba-6870-2d3c-d275-7f186c43184c@neclab.eu>
Date: Tue, 5 Feb 2019 15:31:55 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190131111252.99374-3-simon.kuenzer@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 3/3] build: `print-libs`,
 `print-objs`, `print-srcs` depend on `.config`
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: yuri.volchkov@neclab.eu
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gU2ltb24sCgpUaGlzIHBhdGNoIHNlZW1zIGZpbmUuCgpSZXZpZXdlZC1ieTogU2hhcmFu
IFNhbnRoYW5hbSA8c2hhcmFuLnNhbnRoYW5hbUBuZWNsYWIuZXU+CgpUaGFua3MgJiBSZWdhcmRz
ClNoYXJhbgoKT24gMS8zMS8xOSAxMjoxMiBQTSwgU2ltb24gS3VlbnplciB3cm90ZToKPiBBcyBz
b29uIGFzIG5vIGNvbmZpZ3VyYXRpb24gYC5jb25maWdgIGlzIGF2YWlsYWJsZSwgdGhlIE1ha2Ug
dGFyZ2V0cwo+IGBwcmludC1saWJzYCwgYHByaW50LW9ianNgLCBhbmQgYHByaW50LXNyY3NgIHdp
bGwgcmV0dXJuIGFuIGVycm9yCj4gbWVzc2FnZS4gV2l0aG91dCBhIGNvbmZpZ3VyYXRpb24gZmls
ZSB0aGVzZSB0YXJnZXRzIGFyZSBub3QgYWJsZQo+IHRvIGRvIGFueSBsaXN0aW5nIG9mIHdoaWNo
IHVuaXRzIGFyZSB1c2VkIG9yIGNyZWF0ZWQgYnkgYSBidWlsZC4KPiAKPiBTaWduZWQtb2ZmLWJ5
OiBTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4KPiAtLS0KPiAgIE1ha2Vm
aWxlIHwgMTMgKysrKysrKysrKysrLQo+ICAgMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMo
KyksIDEgZGVsZXRpb24oLSkKPiAKPiBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQo+
IGluZGV4IDU3NTY3YzFhLi5iOTA0MWY1YiAxMDA2NDQKPiAtLS0gYS9NYWtlZmlsZQo+ICsrKyBi
L01ha2VmaWxlCj4gQEAgLTU1Niw3ICs1NTYsNyBAQCBjbGVhbjoKPiAgIAo+ICAgZW5kaWYKPiAg
IAo+IC0uUEhPTlk6IHByaW50LXZhcnMgcHJpbnQtbGlicyBoZWxwIG91dHB1dG1ha2VmaWxlIGxp
c3QtZGVmY29uZmlncwo+ICsuUEhPTlk6IHByaW50LXZhcnMgcHJpbnQtbGlicyBwcmludC1vYmpz
IHByaW50LXNyY3MgaGVscCBvdXRwdXRtYWtlZmlsZSBsaXN0LWRlZmNvbmZpZ3MKPiAgIAo+ICAg
IyBDb25maWd1cmF0aW9uCj4gICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+IEBAIC03MDEsNiArNzAx
LDcgQEAgcHJpbnQtdmFyczoKPiAgIHByaW50LXZlcnNpb246Cj4gICAJQGVjaG8gJChVS19GVUxM
VkVSU0lPTikKPiAgIAo+ICtpZmVxICgkKFVLX0hBVkVfRE9UX0NPTkZJRykseSkKPiAgIHByaW50
LWxpYnM6Cj4gICAJQGVjaG8gCSQoZm9yZWFjaCBQLCQoVUtfUExBVFMpICQoVUtfUExBVFMteSks
XAo+ICAgCQkkKGlmICQoY2FsbCBxc3RyaXAsJCgkKGNhbGwgdWMsJChQKSlfTElCUykgJCgkKGNh
bGwgdWMsJChQKSlfTElCUy15KSksXAo+IEBAIC03MzUsNiArNzM2LDE2IEBAIHByaW50LXNyY3M6
Cj4gICAJCSQoaWYgJChjYWxsIHFzdHJpcCwkKCQoY2FsbCB2cHJlZml4X2xpYiwkKEwpLFNSQ1Mp
KSAkKCQoY2FsbCB2cHJlZml4X2xpYiwkKEwpLFNSQ1MteSkpKSxcCj4gICAJCSckKEwpOlxuICAg
JCgkKGNhbGwgdnByZWZpeF9saWIsJChMKSxTUkNTKSkgJCgkKGNhbGwgdnByZWZpeF9saWIsJChM
KSxTUkNTLXkpKVxuJ1wKPiAgIAkJKSkKPiArZWxzZQo+ICtwcmludC1saWJzOgo+ICsJJChlcnJv
ciBEbyBub3QgaGF2ZSBhIGNvbmZpZ3VyYXRpb24uIFBsZWFzZSBydW4gb25lIG9mIHRoZSBjb25m
aWd1cmF0aW9uIHRhcmdldHMgZmlyc3QpCj4gKwo+ICtwcmludC1vYmpzOgo+ICsJJChlcnJvciBE
byBub3QgaGF2ZSBhIGNvbmZpZ3VyYXRpb24uIFBsZWFzZSBydW4gb25lIG9mIHRoZSBjb25maWd1
cmF0aW9uIHRhcmdldHMgZmlyc3QpCj4gKwo+ICtwcmludC1zcmNzOgo+ICsJJChlcnJvciBEbyBu
b3QgaGF2ZSBhIGNvbmZpZ3VyYXRpb24uIFBsZWFzZSBydW4gb25lIG9mIHRoZSBjb25maWd1cmF0
aW9uIHRhcmdldHMgZmlyc3QpCj4gK2VuZGlmCj4gICAKPiAgIGhlbHA6Cj4gICAJQGVjaG8gJ0Ns
ZWFuaW5nOicKPiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2pl
Y3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5p
b3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Feb 05 17:35:14 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 05 Feb 2019 17:35:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gr4cq-0006B8-PF; Tue, 05 Feb 2019 17:35:12 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=N6rC=QM=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1gr4cp-0006B3-4F
 for minios-devel@lists.xen.org; Tue, 05 Feb 2019 17:35:11 +0000
X-Inumbo-ID: 60499806-296c-11e9-a13c-8fd8f3e826ee
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 60499806-296c-11e9-a13c-8fd8f3e826ee;
 Tue, 05 Feb 2019 17:35:06 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id AEEC7104D6F;
 Tue,  5 Feb 2019 18:35:05 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id KkbfuFkXNPNU; Tue,  5 Feb 2019 18:35:05 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 8AB3A104D6E
 for <minios-devel@lists.xen.org>; Tue,  5 Feb 2019 18:35:03 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 5 Feb 2019 18:35:03
 +0100
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190104161800.22622-1-yuri.volchkov@neclab.eu>
 <20190104161800.22622-2-yuri.volchkov@neclab.eu>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <1c5788d6-9c47-a52e-17f6-825a17f9c494@neclab.eu>
Date: Tue, 5 Feb 2019 18:35:03 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190104161800.22622-2-yuri.volchkov@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 1/2] build: limit gcc version to
 6.1 if LTO is enabled
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: florian.schmidt@neclab.eu, Simon.kuenzer@neclab.eu
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gWXVyaSwKClRoaXMgcGF0Y2ggc2VlbXMgZmluZS4KClJldmlld2VkLWJ5OiBTaGFyYW4g
U2FudGhhbmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xhYi5ldT4KClRoYW5rcyAmIFJlZ2FyZHMK
U2hhcmFuCgpPbiAxLzQvMTkgNToxNyBQTSwgWXVyaSBWb2xjaGtvdiB3cm90ZToKPiBVbmlrcmFm
dCBpcyB1c2luZyBpbmNyZW1lbnRhbCBsaW5raW5nLCB3aGljaCBpcyBub3Qgc3VwcG9ydGVkIGJ5
IGx0bwo+IGluIGdjYyBlYXJsaWVyIHRoZW4gNi4xLgo+IAo+IFNpZ25lZC1vZmYtYnk6IFl1cmkg
Vm9sY2hrb3YgPHl1cmkudm9sY2hrb3ZAbmVjbGFiLmV1Pgo+IC0tLQo+ICAgTWFrZWZpbGUgfCA2
ICsrKysrKwo+ICAgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKQo+IAo+IGRpZmYgLS1n
aXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCj4gaW5kZXggZWZjOTRhMS4uYWJiNGUwMyAxMDA2NDQK
PiAtLS0gYS9NYWtlZmlsZQo+ICsrKyBiL01ha2VmaWxlCj4gQEAgLTQ3NCw2ICs0NzQsMTIgQEAg
aWZuZXEgKCQoQ09ORklHX0hBVkVfQk9PVEVOVFJZKSx5KQo+ICAgJChlcnJvciBZb3UgZGlkIG5v
dCBzZWxlY3QgYSBsaWJyYXJ5IHRoYXQgaGFuZGxlcyBib290c3RyYXBwaW5nISAoZS5nLiwgdWti
b290KSkKPiAgIGVuZGlmCj4gICAKPiAraWZlcSAoJChDT05GSUdfT1BUSU1JWkVfTFRPKSwgeSkK
PiAraWZuZXEgKCQoY2FsbCBnY2NfdmVyc2lvbl9nZSw2LDEpLHkpCj4gKyQoZXJyb3IgWW91ciBn
Y2MgdmVyc2lvbiBkb2VzIG5vdCBzdXBwb3J0IGluY3JlbWVudGFsIGxpbmsgdGltZSBvcHRpbWlz
YXRpb24pCj4gK2VuZGlmCj4gK2VuZGlmCj4gKwo+ICAgIyBHZW5lcmF0ZSBidWlsZCBydWxlcwo+
ICAgaW5jbHVkZSAkKENPTkZJR19VS19CQVNFKS9zdXBwb3J0L2J1aWxkL01ha2VmaWxlLmJ1aWxk
Cj4gICAKPiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
Ck1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qu
b3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3Mt
ZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Feb 06 10:13:55 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 06 Feb 2019 10:13:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grKDJ-0000Ax-VA; Wed, 06 Feb 2019 10:13:53 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=tAI7=QN=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1grKDI-0000As-GM
 for minios-devel@lists.xen.org; Wed, 06 Feb 2019 10:13:52 +0000
X-Inumbo-ID: e29fe39c-29f7-11e9-b300-f7d39226deb8
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id e29fe39c-29f7-11e9-b300-f7d39226deb8;
 Wed, 06 Feb 2019 10:13:45 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 7AAF9104D85;
 Wed,  6 Feb 2019 11:13:44 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id gCKreUHiGrxg; Wed,  6 Feb 2019 11:13:44 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 4965E104D88
 for <minios-devel@lists.xen.org>; Wed,  6 Feb 2019 11:13:42 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 6 Feb 2019 11:13:42
 +0100
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190104161800.22622-1-yuri.volchkov@neclab.eu>
 <20190104161800.22622-3-yuri.volchkov@neclab.eu>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <1315d350-86cc-9833-a047-087a2e0dd09f@neclab.eu>
Date: Wed, 6 Feb 2019 11:13:41 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190104161800.22622-3-yuri.volchkov@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 2/2] lib/ukboot: move weak main
 in separate sub-lib
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: florian.schmidt@neclab.eu, Simon.kuenzer@neclab.eu
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gWXVyaSwKCkkgYWdyZWUgd2l0aCB0aGUgc29sdXRpb24uCgpNYXliZSBpdCBpcyB3aXNl
IHRvIGFkZCBhbiAiRVhQRVJJTUVOVEFMIiB0YWcgYXJvdW5kIHRoZSBMVE8gQ29uZmlnLnVrIApv
cHRpb24uCgpUaGFua3MgJiBSZWdhcmRzClNoYXJhbgoKT24gMS80LzE5IDU6MTggUE0sIFl1cmkg
Vm9sY2hrb3Ygd3JvdGU6Cj4gTGluayBUaW1lIE9wdGltaXphdGlvbiBkb2VzIG5vdCB3b3JrIHdl
bGwgd2l0aCBpbmNyZW1lbnRhbCBsaW5raW5nIChsZAo+IC1yKSwgd2hpY2ggaXMgaGVhdmlseSB1
c2VkIGJ5IFVuaWtyYWZ0Lgo+IAo+IFRoZSB1a2Jvb3QgaGFzIGEgd2VhayBtYWluKCkgZnVuY3Rp
b24sIHdoaWNoIGlzIHN1cHBvc2VkIHRvIGJlIGNhbGxlZAo+IGlmIG5vIG90aGVyIGxpYnJhcnkv
YXBwbGljYXRpb24gcHJvdmlkZWQgYSBwcm9wZXIgbWFpbi4gSG93ZXZlciBnY2MKPiByZXNvbHZl
cyBtYWluKCkgdG8gd2hhdGV2ZXIgaXMgYXZhaWxhYmxlIHdoaWxlIGxpbmtpbmcgdGhlCj4gbGli
dWtib290LmxkLm8uIFdoaWNoIGlzIHRoZSB3ZWFrIG9uZS4KPiAKPiBJbiB0aGUgdXBjb21pbmcg
Z2NjIHY5IHJlbGVhc2UgYSBiZXR0ZXIgc3VwcG9ydCBvZiBpbmNyZW1lbnRhbCBsaW5rCj4gb3B0
aW1pemF0aW9uIGlzIGFubm91bmNlZC4gV2hpY2ggaG9wZWZ1bGx5IHdpbGwgZml4IHRoaXMgaXNz
dWUuIEJ1dAo+IGZvciBub3csIGxldCdzIGZpeCBpdCB3aXRoIGEgd29ya2Fyb3VuZC4KPiAKPiBM
ZXQncyBjcmVhdGUgYSBzdWJsaWIgdW5kZXIgdGhlIHVrYm9vdCwgY29udGFpbmluZyBvbmx5IHRo
ZSB3ZWFrCj4gbWFpbi4gVGhpcyB3YXkgd2Ugd2lsbCBsZWF2ZSBubyBjaGFuY2UgZm9yIHRoZSBm
aXJzdCAibGQgLXIiIHRvIGxpbmsKPiB3aXRoIHRoZSB3cm9uZyBtYWluLiBUaGUgbmV4dCAibGQg
LXIiIHdpbGwgaGF2ZSBhbGwgdGhlIG9iamVjdHMsIHNvIGl0Cj4gd2lsbCBiZSBhYmxlIHRvIG1h
a2UgY29ycmVjdCBkZWNpc2lvbi4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBZdXJpIFZvbGNoa292IDx5
dXJpLnZvbGNoa292QG5lY2xhYi5ldT4KPiAtLS0KPiAgIGxpYi91a2Jvb3QvTWFrZWZpbGUudWsg
fCAxMiArKysrKysrKysrKysKPiAgIGxpYi91a2Jvb3QvYm9vdC5jICAgICAgfCAgNyAtLS0tLS0t
Cj4gICBsaWIvdWtib290L3dlYWtfbWFpbi5jIHwgIDkgKysrKysrKysrCj4gICAzIGZpbGVzIGNo
YW5nZWQsIDIxIGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCj4gICBjcmVhdGUgbW9kZSAx
MDA2NDQgbGliL3VrYm9vdC93ZWFrX21haW4uYwo+IAo+IGRpZmYgLS1naXQgYS9saWIvdWtib290
L01ha2VmaWxlLnVrIGIvbGliL3VrYm9vdC9NYWtlZmlsZS51awo+IGluZGV4IDJiN2Y2OWYuLjU1
ZjIwNWQgMTAwNjQ0Cj4gLS0tIGEvbGliL3VrYm9vdC9NYWtlZmlsZS51awo+ICsrKyBiL2xpYi91
a2Jvb3QvTWFrZWZpbGUudWsKPiBAQCAtNCwzICs0LDE1IEBAIENJTkNMVURFUy0kKENPTkZJR19M
SUJVS0JPT1QpCQkrPSAtSSQoTElCVUtCT09UX0JBU0UpL2luY2x1ZGUKPiAgIENYWElOQ0xVREVT
LSQoQ09ORklHX0xJQlVLQk9PVCkJKz0gLUkkKExJQlVLQk9PVF9CQVNFKS9pbmNsdWRlCj4gICAK
PiAgIExJQlVLQk9PVF9TUkNTLXkgKz0gJChMSUJVS0JPT1RfQkFTRSkvYm9vdC5jCj4gKwo+ICsj
IFRoZSBtYWluKCkgaXMgaW4gdGhlIHNlcGFyYXRlIGxpYnJhcnkgdG8gZm9vbCB0aGUgTFRPLiBX
aGljaCBpcwo+ICsjIHRyeWluZyB0byByZXNvbHZlIHRoZSBtYWluKCkgZnVuY3Rpb24gY2FsbCB0
byB3aGF0ZXZlciBpcyBhdmFpbGFibGUKPiArIyBkdXJpbmcgbGlraW5nIHRoZSBsaWJyYXJ5IG9i
amVjdCBmaWxlLiBBbmQgdGhpcyB3aWxsIGJlIHRoZSB3ZWFrCj4gKyMgbWFpbi4gU28gZXZlbiBp
ZiB0aGUgcHJvcGVyIG1haW4oKSBpcyBwcm92aWRlZCBsYXRlciwgdGhlIHdlYWsgb25lCj4gKyMg
d2lsbCBiZSBjYWxsZWQsIGJlY2F1c2UgdGhlIGRlY2lzaW9uIGlzIGFscmVhZHkgbWFkZS4KPiAr
Iwo+ICsjIFRoaXMgZG9lcyBub3Qgc291bmQgcmlnaHQsIGJ1dCBMVE8gZG9lcyBub3Qgd29yayB3
ZWxsIHdpdGgKPiArIyBpbmNyZW1lbnRhbCBsaW5raW5nIChsZCAtcikuIFRoaXMgcG9zc2libHkg
d2lsbCBiZSBmaXhlZCBpbiBnY2MKPiArIyB2OS4gQnV0IHdlIGhhdmUgdG8gZGVhbCB3aXRoIGl0
IG5vdy4KPiArJChldmFsICQoY2FsbCBhZGRsaWJfcyxsaWJ1a2Jvb3RfbWFpbiwkKENPTkZJR19M
SUJVS0JPT1QpKSkKPiArTElCVUtCT09UX01BSU5fU1JDUy15ICs9ICQoTElCVUtCT09UX0JBU0Up
L3dlYWtfbWFpbi5jCj4gZGlmZiAtLWdpdCBhL2xpYi91a2Jvb3QvYm9vdC5jIGIvbGliL3VrYm9v
dC9ib290LmMKPiBpbmRleCAxNzRkZDViLi40ODQ2NzgyIDEwMDY0NAo+IC0tLSBhL2xpYi91a2Jv
b3QvYm9vdC5jCj4gKysrIGIvbGliL3VrYm9vdC9ib290LmMKPiBAQCAtMjY2LDEwICsyNjYsMyBA
QCB2b2lkIHVrcGxhdF9lbnRyeShpbnQgYXJnYywgY2hhciAqYXJndltdKQo+ICAgCW1haW5fdGhy
ZWFkX2Z1bmMoJnRtYSk7Cj4gICAjZW5kaWYKPiAgIH0KPiAtCj4gLS8qIEludGVybmFsIG1haW4g
Ki8KPiAtaW50IG1haW4oaW50IGFyZ2MgX191bnVzZWQsIGNoYXIgKmFyZ3ZbXSBfX3VudXNlZCkK
PiAtewo+IC0JcHJpbnRmKCJ3ZWFrIG1haW4oKSBjYWxsZWQuIFN5bWJvbCB3YXMgbm90IHJlcGxh
Y2VkIVxuIik7Cj4gLQlyZXR1cm4gLUVJTlZBTDsKPiAtfQo+IGRpZmYgLS1naXQgYS9saWIvdWti
b290L3dlYWtfbWFpbi5jIGIvbGliL3VrYm9vdC93ZWFrX21haW4uYwo+IG5ldyBmaWxlIG1vZGUg
MTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uNjk3NzIwYwo+IC0tLSAvZGV2L251bGwKPiArKysgYi9s
aWIvdWtib290L3dlYWtfbWFpbi5jCj4gQEAgLTAsMCArMSw5IEBACj4gKyNpbmNsdWRlIDxzdGRp
by5oPgo+ICsjaW5jbHVkZSA8ZXJybm8uaD4KPiArCj4gKy8qIEludGVybmFsIG1haW4gKi8KPiAr
aW50IF9fd2VhayBtYWluKGludCBhcmdjIF9fdW51c2VkLCBjaGFyICphcmd2W10gX191bnVzZWQp
Cj4gK3sKPiArCXByaW50Zigid2VhayBtYWluKCkgY2FsbGVkLiBTeW1ib2wgd2FzIG5vdCByZXBs
YWNlZCFcbiIpOwo+ICsJcmV0dXJuIC1FSU5WQUw7Cj4gK30KPiAKCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QK
TWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVj
dC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Feb 06 10:42:26 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 06 Feb 2019 10:42:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grKew-0003Ad-0Z; Wed, 06 Feb 2019 10:42:26 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Hs2p=QN=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1grKev-0003AW-4P
 for minios-devel@lists.xen.org; Wed, 06 Feb 2019 10:42:25 +0000
X-Inumbo-ID: e118251c-29fb-11e9-adb4-4bec93fc9537
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id e118251c-29fb-11e9-adb4-4bec93fc9537;
 Wed, 06 Feb 2019 10:42:20 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id C5B71F2048;
 Wed,  6 Feb 2019 11:42:19 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id SfN4Q62axxDe; Wed,  6 Feb 2019 11:42:19 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id A0C5AF2023
 for <minios-devel@lists.xen.org>; Wed,  6 Feb 2019 11:42:17 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Wed, 6 Feb 2019 11:42:17 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 6 Feb 2019 11:42:01 +0100
Message-ID: <20190206104214.23847-1-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH 0/6] Import ramfs from OSv
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Simon.kuenzer@neclab.eu, sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2FtZSBhcyB3aXRoIHZmc2NvcmUgLSB0aGUgbWluaW1hbCBudW1iZXIgb2YgbW9kaWZpY2F0aW9u
cyB0byBtYWtlIGl0CndvcmtpbmcgaW4gVW5pa3JhZnQuIEZvcnR1bmF0ZWxseSByYW1mcyBpcyB2
ZXJ5IHNtYWxsLCBhbmQgYWxtb3N0IGRpZApub3QgaGF2ZSBjKysgcGllY2VzIG9mIGNvZGUuIFNv
IHRoaXMgdGltZSBJIGV2ZW4gaGFkIGEgcm9vbSB0byBmaXgKc3R5bGUgcHJvYmxlbXMsIGV4Y2Vw
dCBmZXcgb2YgdGhlbS4KCll1cmkgVm9sY2hrb3YgKDYpOgogIGxpYi9yYW1mczogaW5pdGlhbCBp
bXBvcnQgZnJvbSBPU3YKICBsaWIvcmFtZnM6IHRhYmlmeSBpbXBvcnRlZCByYW1mcyBjb2RlCiAg
bGliL3JhbWZzOiB1cGRhdGUgbGljZW5zZSBoZWFkZXIgZm9yIGltcG9ydGVkIGZpbGVzCiAgbGli
L3JhbWZzOiBhZGFwdCBpbXBvcnRlZCByYW1mcyB0byBVbmlrcmFmdAogIGxpYi9yYW1mczogZml4
IGRlYnVnIHByaW50b3V0cwogIGxpYi9yYW1mczogZml4IHN0eWxlIGlzc3VlcwoKIGxpYi9Db25m
aWcudWsgICAgICAgICAgICB8ICAgMSArCiBsaWIvTWFrZWZpbGUudWsgICAgICAgICAgfCAgIDEg
KwogbGliL3JhbWZzL2V4cG9ydHN5bXMudWsgIHwgICAxICsKIGxpYi9yYW1mcy9yYW1mcy5oICAg
ICAgICB8ICA3MyArKysrKwogbGliL3JhbWZzL3JhbWZzX3Zmc29wcy5jIHwgMTA0ICsrKysrKwog
bGliL3JhbWZzL3JhbWZzX3Zub3BzLmMgIHwgNjc1ICsrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKwogNiBmaWxlcyBjaGFuZ2VkLCA4NTUgaW5zZXJ0aW9ucygrKQogY3JlYXRl
IG1vZGUgMTAwNjQ0IGxpYi9yYW1mcy9leHBvcnRzeW1zLnVrCiBjcmVhdGUgbW9kZSAxMDA2NDQg
bGliL3JhbWZzL3JhbWZzLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvcmFtZnMvcmFtZnNfdmZz
b3BzLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvcmFtZnMvcmFtZnNfdm5vcHMuYwoKLS0gCjIu
MTkuMgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1p
bmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3Jn
Cmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2
ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Feb 06 10:42:29 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 06 Feb 2019 10:42:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grKez-0003BF-2L; Wed, 06 Feb 2019 10:42:29 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Hs2p=QN=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1grKex-0003Az-OY
 for minios-devel@lists.xen.org; Wed, 06 Feb 2019 10:42:27 +0000
X-Inumbo-ID: e2a0c846-29fb-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id e2a0c846-29fb-11e9-bc90-bc764e045a96;
 Wed, 06 Feb 2019 10:42:23 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 73196104D88;
 Wed,  6 Feb 2019 11:42:22 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id LhJ3rBrIkk2c; Wed,  6 Feb 2019 11:42:22 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 4ED9D104D87
 for <minios-devel@lists.xen.org>; Wed,  6 Feb 2019 11:42:20 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Wed, 6 Feb 2019 11:42:20 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 6 Feb 2019 11:42:02 +0100
Message-ID: <20190206104214.23847-2-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190206104214.23847-1-yuri.volchkov@neclab.eu>
References: <20190206104214.23847-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH 1/6] lib/ramfs: initial import from
 OSv
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Simon.kuenzer@neclab.eu, sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Z2l0IHRhZzogdjAuNTIuMApjb21taXQ6IDAwMjk5MTkwNDE0ZTRjN2M1YjBmMmQ3NGNkMTE3NjNk
YWMzNGU1YjkKClNpZ25lZC1vZmYtYnk6IFl1cmkgVm9sY2hrb3YgPHl1cmkudm9sY2hrb3ZAbmVj
bGFiLmV1PgotLS0KIGxpYi9yYW1mcy9yYW1mcy5oICAgICAgICB8ICA2OCArKysrCiBsaWIvcmFt
ZnMvcmFtZnNfdmZzb3BzLmMgfCAgOTAgKysrKysrCiBsaWIvcmFtZnMvcmFtZnNfdm5vcHMuYyAg
fCA2NjkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNo
YW5nZWQsIDgyNyBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3JhbWZzL3Jh
bWZzLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvcmFtZnMvcmFtZnNfdmZzb3BzLmMKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBsaWIvcmFtZnMvcmFtZnNfdm5vcHMuYwoKZGlmZiAtLWdpdCBhL2xpYi9y
YW1mcy9yYW1mcy5oIGIvbGliL3JhbWZzL3JhbWZzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAuLjg4Y2NiZTcyCi0tLSAvZGV2L251bGwKKysrIGIvbGliL3JhbWZzL3JhbWZz
LmgKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwNi0yMDA3LCBLb2hz
dWtlIE9odGFuaQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRo
ZXIgdGhlIG5hbWUgb2YgdGhlIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGFueSBjby1jb250cmli
dXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQorICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBfUkFNRlNfSAorI2RlZmluZSBfUkFNRlNfSAorCisjaW5j
bHVkZSA8b3N2L3ByZXguaD4KKworLyogI2RlZmluZSBERUJVR19SQU1GUyAxICovCisKKyNpZmRl
ZiBERUJVR19SQU1GUworI2RlZmluZSBEUFJJTlRGKGEpCWRwcmludGYgYQorI2Vsc2UKKyNkZWZp
bmUgRFBSSU5URihhKSAgICBkbyB7fSB3aGlsZSAoMCkKKyNlbmRpZgorCisjZGVmaW5lIEFTU0VS
VChlKSAgICBhc3NlcnQoZSkKKworLyoKKyAqIEZpbGUvZGlyZWN0b3J5IG5vZGUgZm9yIFJBTUZT
CisgKi8KK3N0cnVjdCByYW1mc19ub2RlIHsKKyAgICBzdHJ1Y3QgcmFtZnNfbm9kZSAqcm5fbmV4
dDsgICAvKiBuZXh0IG5vZGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5ICovCisgICAgc3RydWN0IHJh
bWZzX25vZGUgKnJuX2NoaWxkOyAgLyogZmlyc3QgY2hpbGQgbm9kZSAqLworICAgIGludCBybl90
eXBlOyAgICAvKiBmaWxlIG9yIGRpcmVjdG9yeSAqLworICAgIGNoYXIgKnJuX25hbWU7ICAgIC8q
IG5hbWUgKG51bGwtdGVybWluYXRlZCkgKi8KKyAgICBzaXplX3Qgcm5fbmFtZWxlbjsgICAgLyog
bGVuZ3RoIG9mIG5hbWUgbm90IGluY2x1ZGluZyB0ZXJtaW5hdG9yICovCisgICAgc2l6ZV90IHJu
X3NpemU7ICAgIC8qIGZpbGUgc2l6ZSAqLworICAgIGNoYXIgKnJuX2J1ZjsgICAgLyogYnVmZmVy
IHRvIHRoZSBmaWxlIGRhdGEgKi8KKyAgICBzaXplX3Qgcm5fYnVmc2l6ZTsgICAgLyogYWxsb2Nh
dGVkIGJ1ZmZlciBzaXplICovCisgICAgc3RydWN0IHRpbWVzcGVjIHJuX2N0aW1lOworICAgIHN0
cnVjdCB0aW1lc3BlYyBybl9hdGltZTsKKyAgICBzdHJ1Y3QgdGltZXNwZWMgcm5fbXRpbWU7Cisg
ICAgaW50IHJuX21vZGU7CisgICAgYm9vbCBybl9vd25zX2J1ZjsKK307CisKK3N0cnVjdCByYW1m
c19ub2RlICpyYW1mc19hbGxvY2F0ZV9ub2RlKGNvbnN0IGNoYXIgKm5hbWUsIGludCB0eXBlKTsK
Kwordm9pZCByYW1mc19mcmVlX25vZGUoc3RydWN0IHJhbWZzX25vZGUgKm5vZGUpOworCisjZW5k
aWYgLyogIV9SQU1GU19IICovCmRpZmYgLS1naXQgYS9saWIvcmFtZnMvcmFtZnNfdmZzb3BzLmMg
Yi9saWIvcmFtZnMvcmFtZnNfdmZzb3BzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAuLjcyZmU3ZWRiCi0tLSAvZGV2L251bGwKKysrIGIvbGliL3JhbWZzL3JhbWZzX3Zmc29w
cy5jCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDYtMjAwNywgS29o
c3VrZSBPaHRhbmkKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0
aGVyIHRoZSBuYW1lIG9mIHRoZSBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBhbnkgY28tY29udHJp
YnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKKyAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlIDxlcnJuby5oPgorCisjaW5jbHVkZSA8b3N2L3Zub2Rl
Lmg+CisjaW5jbHVkZSA8b3N2L21vdW50Lmg+CisjaW5jbHVkZSA8b3N2L2RlbnRyeS5oPgorCisj
aW5jbHVkZSAicmFtZnMuaCIKKworZXh0ZXJuIHN0cnVjdCB2bm9wcyByYW1mc192bm9wczsKKwor
c3RhdGljIGludCByYW1mc19tb3VudChzdHJ1Y3QgbW91bnQgKm1wLCBjb25zdCBjaGFyICpkZXYs
IGludCBmbGFncywgY29uc3Qgdm9pZCAqZGF0YSk7CisKK3N0YXRpYyBpbnQgcmFtZnNfdW5tb3Vu
dChzdHJ1Y3QgbW91bnQgKm1wLCBpbnQgZmxhZ3MpOworCisjZGVmaW5lIHJhbWZzX3N5bmMgICAg
KCh2ZnNvcF9zeW5jX3QpdmZzX251bGxvcCkKKyNkZWZpbmUgcmFtZnNfdmdldCAgICAoKHZmc29w
X3ZnZXRfdCl2ZnNfbnVsbG9wKQorI2RlZmluZSByYW1mc19zdGF0ZnMgICAgKCh2ZnNvcF9zdGF0
ZnNfdCl2ZnNfbnVsbG9wKQorCisvKgorICogRmlsZSBzeXN0ZW0gb3BlcmF0aW9ucworICovCitz
dHJ1Y3QgdmZzb3BzIHJhbWZzX3Zmc29wcyA9IHsKKyAgICAgICAgcmFtZnNfbW91bnQsICAgICAg
IC8qIG1vdW50ICovCisgICAgICAgIHJhbWZzX3VubW91bnQsICAgICAvKiB1bm1vdW50ICovCisg
ICAgICAgIHJhbWZzX3N5bmMsICAgICAgICAvKiBzeW5jICovCisgICAgICAgIHJhbWZzX3ZnZXQs
ICAgICAgICAvKiB2Z2V0ICovCisgICAgICAgIHJhbWZzX3N0YXRmcywgICAgICAvKiBzdGF0ZnMg
Ki8KKyAgICAgICAgJnJhbWZzX3Zub3BzLCAgICAgIC8qIHZub3BzICovCit9OworCisvKgorICog
TW91bnQgYSBmaWxlIHN5c3RlbS4KKyAqLworc3RhdGljIGludAorcmFtZnNfbW91bnQoc3RydWN0
IG1vdW50ICptcCwgY29uc3QgY2hhciAqZGV2LCBpbnQgZmxhZ3MsIGNvbnN0IHZvaWQgKmRhdGEp
Cit7CisgICAgc3RydWN0IHJhbWZzX25vZGUgKm5wOworCisgICAgRFBSSU5URigoInJhbWZzX21v
dW50OiBkZXY9JXNcbiIsIGRldikpOworCisgICAgLyogQ3JlYXRlIGEgcm9vdCBub2RlICovCisg
ICAgbnAgPSByYW1mc19hbGxvY2F0ZV9ub2RlKCIvIiwgVkRJUik7CisgICAgaWYgKG5wID09IE5V
TEwpCisgICAgICAgIHJldHVybiBFTk9NRU07CisgICAgbXAtPm1fcm9vdC0+ZF92bm9kZS0+dl9k
YXRhID0gbnA7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qCisgKiBVbm1vdW50IGEgZmlsZSBzeXN0
ZW0uCisgKgorICogTk9URTogQ3VycmVudGx5LCB3ZSBkb24ndCBzdXBwb3J0IHVubW91bnRpbmcg
b2YgdGhlIFJBTUZTLiBUaGlzIGlzCisgKiAgICAgICBiZWNhdXNlIHdlIGhhdmUgdG8gZGVhbGxv
Y2F0ZSBhbGwgbm9kZXMgaW5jbHVkZWQgaW4gYWxsIHN1YgorICogICAgICAgZGlyZWN0b3JpZXMs
IGFuZCBpdCByZXF1aXJlcyBtb3JlIHdvcmsuLi4KKyAqLworc3RhdGljIGludAorcmFtZnNfdW5t
b3VudChzdHJ1Y3QgbW91bnQgKm1wLCBpbnQgZmxhZ3MpCit7CisgICAgcmVsZWFzZV9tcF9kZW50
cmllcyhtcCk7CisgICAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9saWIvcmFtZnMvcmFtZnNf
dm5vcHMuYyBiL2xpYi9yYW1mcy9yYW1mc192bm9wcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwLi45MjkxYTRlYwotLS0gL2Rldi9udWxsCisrKyBiL2xpYi9yYW1mcy9yYW1m
c192bm9wcy5jCkBAIC0wLDAgKzEsNjY5IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA2LTIw
MDcsIEtvaHN1a2UgT2h0YW5pCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICog
My4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgYW55IGNv
LWNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCisgKiAgICB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisg
KiBTVUNIIERBTUFHRS4KKyAqLworCisvKgorICogcm1hZnNfdm5vcHMuYyAtIHZub2RlIG9wZXJh
dGlvbnMgZm9yIFJBTSBmaWxlIHN5c3RlbS4KKyAqLworCisjaW5jbHVkZSA8c3lzL3N0YXQuaD4K
KyNpbmNsdWRlIDxkaXJlbnQuaD4KKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKworI2luY2x1ZGUg
PGVycm5vLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5j
bHVkZSA8ZmNudGwuaD4KKworI2luY2x1ZGUgPG9zdi9wcmV4Lmg+CisjaW5jbHVkZSA8b3N2L3Zu
b2RlLmg+CisjaW5jbHVkZSA8b3N2L2ZpbGUuaD4KKyNpbmNsdWRlIDxvc3YvbW91bnQuaD4KKyNp
bmNsdWRlIDxvc3Yvdm5vZGVfYXR0ci5oPgorCisjaW5jbHVkZSAicmFtZnMuaCIKKworc3RhdGlj
IG11dGV4X3QgcmFtZnNfbG9jayA9IE1VVEVYX0lOSVRJQUxJWkVSOworc3RhdGljIHVpbnQ2NF90
IGlub2RlX2NvdW50ID0gMTsgLyogaW5vZGUgMCBpcyByZXNlcnZlZCB0byByb290ICovCisKK3N0
YXRpYyB2b2lkCitzZXRfdGltZXNfdG9fbm93KHN0cnVjdCB0aW1lc3BlYyAqdGltZTEsIHN0cnVj
dCB0aW1lc3BlYyAqdGltZTIgPSBudWxscHRyLCBzdHJ1Y3QgdGltZXNwZWMgKnRpbWUzID0gbnVs
bHB0cikKK3sKKyAgICBzdHJ1Y3QgdGltZXNwZWMgbm93OworICAgIGNsb2NrX2dldHRpbWUoQ0xP
Q0tfUkVBTFRJTUUsICZub3cpOworICAgIGlmICh0aW1lMSkgeworICAgICAgICBtZW1jcHkodGlt
ZTEsICZub3csIHNpemVvZihzdHJ1Y3QgdGltZXNwZWMpKTsKKyAgICB9CisgICAgaWYgKHRpbWUy
KSB7CisgICAgICAgIG1lbWNweSh0aW1lMiwgJm5vdywgc2l6ZW9mKHN0cnVjdCB0aW1lc3BlYykp
OworICAgIH0KKyAgICBpZiAodGltZTMpIHsKKyAgICAgICAgbWVtY3B5KHRpbWUzLCAmbm93LCBz
aXplb2Yoc3RydWN0IHRpbWVzcGVjKSk7CisgICAgfQorfQorCitzdHJ1Y3QgcmFtZnNfbm9kZSAq
CityYW1mc19hbGxvY2F0ZV9ub2RlKGNvbnN0IGNoYXIgKm5hbWUsIGludCB0eXBlKQoreworICAg
IHN0cnVjdCByYW1mc19ub2RlICpucDsKKworICAgIG5wID0gKHJhbWZzX25vZGUgKikgbWFsbG9j
KHNpemVvZihzdHJ1Y3QgcmFtZnNfbm9kZSkpOworICAgIGlmIChucCA9PSBOVUxMKQorICAgICAg
ICByZXR1cm4gTlVMTDsKKyAgICBtZW1zZXQobnAsIDAsIHNpemVvZihzdHJ1Y3QgcmFtZnNfbm9k
ZSkpOworCisgICAgbnAtPnJuX25hbWVsZW4gPSBzdHJsZW4obmFtZSk7CisgICAgbnAtPnJuX25h
bWUgPSAoY2hhciAqKSBtYWxsb2MobnAtPnJuX25hbWVsZW4gKyAxKTsKKyAgICBpZiAobnAtPnJu
X25hbWUgPT0gTlVMTCkgeworICAgICAgICBmcmVlKG5wKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7
CisgICAgfQorICAgIHN0cmxjcHkobnAtPnJuX25hbWUsIG5hbWUsIG5wLT5ybl9uYW1lbGVuICsg
MSk7CisgICAgbnAtPnJuX3R5cGUgPSB0eXBlOworCisgICAgaWYgKHR5cGUgPT0gVkRJUikKKyAg
ICAgICAgbnAtPnJuX21vZGUgPSBTX0lGRElSfDA3Nzc7CisgICAgZWxzZSBpZiAodHlwZSA9PSBW
TE5LKQorICAgICAgICBucC0+cm5fbW9kZSA9IFNfSUZMTkt8MDc3NzsKKyAgICBlbHNlCisgICAg
ICAgIG5wLT5ybl9tb2RlID0gU19JRlJFR3wwNzc3OworCisgICAgc2V0X3RpbWVzX3RvX25vdygm
KG5wLT5ybl9jdGltZSksICYobnAtPnJuX2F0aW1lKSwgJihucC0+cm5fbXRpbWUpKTsKKyAgICBu
cC0+cm5fb3duc19idWYgPSB0cnVlOworCisgICAgcmV0dXJuIG5wOworfQorCit2b2lkCityYW1m
c19mcmVlX25vZGUoc3RydWN0IHJhbWZzX25vZGUgKm5wKQoreworICAgIGlmIChucC0+cm5fYnVm
ICE9IE5VTEwgJiYgbnAtPnJuX293bnNfYnVmKQorICAgICAgICBmcmVlKG5wLT5ybl9idWYpOwor
CisgICAgZnJlZShucC0+cm5fbmFtZSk7CisgICAgZnJlZShucCk7Cit9CisKK3N0YXRpYyBzdHJ1
Y3QgcmFtZnNfbm9kZSAqCityYW1mc19hZGRfbm9kZShzdHJ1Y3QgcmFtZnNfbm9kZSAqZG5wLCBj
aGFyICpuYW1lLCBpbnQgdHlwZSkKK3sKKyAgICBzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAsICpwcmV2
OworCisgICAgbnAgPSByYW1mc19hbGxvY2F0ZV9ub2RlKG5hbWUsIHR5cGUpOworICAgIGlmIChu
cCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIG11dGV4X2xvY2soJnJhbWZz
X2xvY2spOworCisgICAgLyogTGluayB0byB0aGUgZGlyZWN0b3J5IGxpc3QgKi8KKyAgICBpZiAo
ZG5wLT5ybl9jaGlsZCA9PSBOVUxMKSB7CisgICAgICAgIGRucC0+cm5fY2hpbGQgPSBucDsKKyAg
ICB9IGVsc2UgeworICAgICAgICBwcmV2ID0gZG5wLT5ybl9jaGlsZDsKKyAgICAgICAgd2hpbGUg
KHByZXYtPnJuX25leHQgIT0gTlVMTCkKKyAgICAgICAgICAgIHByZXYgPSBwcmV2LT5ybl9uZXh0
OworICAgICAgICBwcmV2LT5ybl9uZXh0ID0gbnA7CisgICAgfQorCisgICAgc2V0X3RpbWVzX3Rv
X25vdygmKGRucC0+cm5fbXRpbWUpLCAmKGRucC0+cm5fY3RpbWUpKTsKKworICAgIG11dGV4X3Vu
bG9jaygmcmFtZnNfbG9jayk7CisgICAgcmV0dXJuIG5wOworfQorCitzdGF0aWMgaW50CityYW1m
c19yZW1vdmVfbm9kZShzdHJ1Y3QgcmFtZnNfbm9kZSAqZG5wLCBzdHJ1Y3QgcmFtZnNfbm9kZSAq
bnApCit7CisgICAgc3RydWN0IHJhbWZzX25vZGUgKnByZXY7CisKKyAgICBpZiAoZG5wLT5ybl9j
aGlsZCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gRUJVU1k7CisKKyAgICBtdXRleF9sb2NrKCZy
YW1mc19sb2NrKTsKKworICAgIC8qIFVubGluayBmcm9tIHRoZSBkaXJlY3RvcnkgbGlzdCAqLwor
ICAgIGlmIChkbnAtPnJuX2NoaWxkID09IG5wKSB7CisgICAgICAgIGRucC0+cm5fY2hpbGQgPSBu
cC0+cm5fbmV4dDsKKyAgICB9IGVsc2UgeworICAgICAgICBmb3IgKHByZXYgPSBkbnAtPnJuX2No
aWxkOyBwcmV2LT5ybl9uZXh0ICE9IG5wOworICAgICAgICAgICAgIHByZXYgPSBwcmV2LT5ybl9u
ZXh0KSB7CisgICAgICAgICAgICBpZiAocHJldi0+cm5fbmV4dCA9PSBOVUxMKSB7CisgICAgICAg
ICAgICAgICAgbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gRU5PRU5UOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHByZXYtPnJuX25l
eHQgPSBucC0+cm5fbmV4dDsKKyAgICB9CisgICAgcmFtZnNfZnJlZV9ub2RlKG5wKTsKKworICAg
IHNldF90aW1lc190b19ub3coJihkbnAtPnJuX210aW1lKSwgJihkbnAtPnJuX2N0aW1lKSk7CisK
KyAgICBtdXRleF91bmxvY2soJnJhbWZzX2xvY2spOworICAgIHJldHVybiAwOworfQorCitzdGF0
aWMgaW50CityYW1mc19yZW5hbWVfbm9kZShzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAsIGNoYXIgKm5h
bWUpCit7CisgICAgc2l6ZV90IGxlbjsKKyAgICBjaGFyICp0bXA7CisKKyAgICBsZW4gPSBzdHJs
ZW4obmFtZSk7CisgICAgaWYgKGxlbiA+IE5BTUVfTUFYKSB7CisgICAgICAgIHJldHVybiBFTkFN
RVRPT0xPTkc7CisgICAgfQorICAgIGlmIChsZW4gPD0gbnAtPnJuX25hbWVsZW4pIHsKKyAgICAg
ICAgLyogUmV1c2UgY3VycmVudCBuYW1lIGJ1ZmZlciAqLworICAgICAgICBzdHJsY3B5KG5wLT5y
bl9uYW1lLCBuYW1lLCBucC0+cm5fbmFtZWxlbiArIDEpOworICAgIH0gZWxzZSB7CisgICAgICAg
IC8qIEV4cGFuZCBuYW1lIGJ1ZmZlciAqLworICAgICAgICB0bXAgPSAoY2hhciAqKSBtYWxsb2Mo
bGVuICsgMSk7CisgICAgICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBF
Tk9NRU07CisgICAgICAgIHN0cmxjcHkodG1wLCBuYW1lLCBsZW4gKyAxKTsKKyAgICAgICAgZnJl
ZShucC0+cm5fbmFtZSk7CisgICAgICAgIG5wLT5ybl9uYW1lID0gdG1wOworICAgIH0KKyAgICBu
cC0+cm5fbmFtZWxlbiA9IGxlbjsKKyAgICBzZXRfdGltZXNfdG9fbm93KCYobnAtPnJuX2N0aW1l
KSk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK3JhbWZzX2xvb2t1cChzdHJ1Y3Qg
dm5vZGUgKmR2cCwgY2hhciAqbmFtZSwgc3RydWN0IHZub2RlICoqdnBwKQoreworICAgIHN0cnVj
dCByYW1mc19ub2RlICpucCwgKmRucDsKKyAgICBzdHJ1Y3Qgdm5vZGUgKnZwOworICAgIHNpemVf
dCBsZW47CisgICAgaW50IGZvdW5kOworCisgICAgKnZwcCA9IE5VTEw7CisKKyAgICBpZiAoKm5h
bWUgPT0gJ1wwJykKKyAgICAgICAgcmV0dXJuIEVOT0VOVDsKKworICAgIG11dGV4X2xvY2soJnJh
bWZzX2xvY2spOworCisgICAgbGVuID0gc3RybGVuKG5hbWUpOworICAgIGRucCA9IChyYW1mc19u
b2RlICopIGR2cC0+dl9kYXRhOworICAgIGZvdW5kID0gMDsKKyAgICBmb3IgKG5wID0gZG5wLT5y
bl9jaGlsZDsgbnAgIT0gTlVMTDsgbnAgPSBucC0+cm5fbmV4dCkgeworICAgICAgICBpZiAobnAt
PnJuX25hbWVsZW4gPT0gbGVuICYmCisgICAgICAgICAgICBtZW1jbXAobmFtZSwgbnAtPnJuX25h
bWUsIGxlbikgPT0gMCkgeworICAgICAgICAgICAgZm91bmQgPSAxOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKGZvdW5kID09IDApIHsKKyAgICAgICAgbXV0
ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKKyAgICAgICAgcmV0dXJuIEVOT0VOVDsKKyAgICB9Cisg
ICAgaWYgKHZnZXQoZHZwLT52X21vdW50LCBpbm9kZV9jb3VudCsrLCAmdnApKSB7CisgICAgICAg
IC8qIGZvdW5kIGluIGNhY2hlICovCisgICAgICAgICp2cHAgPSB2cDsKKyAgICAgICAgbXV0ZXhf
dW5sb2NrKCZyYW1mc19sb2NrKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGlmICgh
dnApIHsKKyAgICAgICAgbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKKyAgICAgICAgcmV0dXJu
IEVOT01FTTsKKyAgICB9CisgICAgdnAtPnZfZGF0YSA9IG5wOworICAgIHZwLT52X21vZGUgPSBB
TExQRVJNUzsKKyAgICB2cC0+dl90eXBlID0gbnAtPnJuX3R5cGU7CisgICAgdnAtPnZfc2l6ZSA9
IG5wLT5ybl9zaXplOworCisgICAgbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKKworICAgICp2
cHAgPSB2cDsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CityYW1mc19ta2Rpcihz
dHJ1Y3Qgdm5vZGUgKmR2cCwgY2hhciAqbmFtZSwgbW9kZV90IG1vZGUpCit7CisgICAgc3RydWN0
IHJhbWZzX25vZGUgKm5wOworCisgICAgRFBSSU5URigoIm1rZGlyICVzXG4iLCBuYW1lKSk7Cisg
ICAgaWYgKHN0cmxlbihuYW1lKSA+IE5BTUVfTUFYKSB7CisgICAgICAgIHJldHVybiBFTkFNRVRP
T0xPTkc7CisgICAgfQorCisgICAgaWYgKCFTX0lTRElSKG1vZGUpKQorICAgICAgICByZXR1cm4g
RUlOVkFMOworCisgICAgbnAgPSAocmFtZnNfbm9kZSAqKSByYW1mc19hZGRfbm9kZSgocmFtZnNf
bm9kZSAqKSBkdnAtPnZfZGF0YSwgbmFtZSwgVkRJUik7CisgICAgaWYgKG5wID09IE5VTEwpCisg
ICAgICAgIHJldHVybiBFTk9NRU07CisgICAgbnAtPnJuX3NpemUgPSAwOworCisgICAgcmV0dXJu
IDA7Cit9CisKK3N0YXRpYyBpbnQKK3JhbWZzX3N5bWxpbmsoc3RydWN0IHZub2RlICpkdnAsIGNo
YXIgKm5hbWUsIGNoYXIgKmxpbmspCit7CisgICAgaWYgKHN0cmxlbihuYW1lKSA+IE5BTUVfTUFY
KSB7CisgICAgICAgIHJldHVybiBFTkFNRVRPT0xPTkc7CisgICAgfQorICAgIGF1dG8gbnAgPSBy
YW1mc19hZGRfbm9kZSgocmFtZnNfbm9kZSAqKSBkdnAtPnZfZGF0YSwgbmFtZSwgVkxOSyk7Cisg
ICAgaWYgKG5wID09IE5VTEwpCisgICAgICAgIHJldHVybiBFTk9NRU07CisgICAgLy8gU2F2ZSB0
aGUgbGluayB0YXJnZXQgd2l0aG91dCB0aGUgZmluYWwgbnVsbCwgYXMgcmVhZGxpbmsoKSB3YW50
cyBpdC4KKyAgICBzaXplX3QgbGVuID0gc3RybGVuKGxpbmspOworICAgIG5wLT5ybl9idWYgPSBz
dHJuZHVwKGxpbmssIGxlbik7CisgICAgbnAtPnJuX2J1ZnNpemUgPSBucC0+cm5fc2l6ZSA9IGxl
bjsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CityYW1mc19yZWFkbGluayhzdHJ1
Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3QgdWlvICp1aW8pCit7CisgICAgc3RydWN0IHJhbWZzX25vZGUg
Km5wID0gKHJhbWZzX25vZGUgKikgdnAtPnZfZGF0YTsKKyAgICBzaXplX3QgbGVuOworCisgICAg
aWYgKHZwLT52X3R5cGUgIT0gVkxOSykgeworICAgICAgICByZXR1cm4gRUlOVkFMOworICAgIH0K
KyAgICBpZiAodWlvLT51aW9fb2Zmc2V0IDwgMCkgeworICAgICAgICByZXR1cm4gRUlOVkFMOwor
ICAgIH0KKyAgICBpZiAodWlvLT51aW9fcmVzaWQgPT0gMCkgeworICAgICAgICByZXR1cm4gMDsK
KyAgICB9CisgICAgaWYgKHVpby0+dWlvX29mZnNldCA+PSAob2ZmX3QpIHZwLT52X3NpemUpCisg
ICAgICAgIHJldHVybiAwOworICAgIGlmICh2cC0+dl9zaXplIC0gdWlvLT51aW9fb2Zmc2V0IDwg
dWlvLT51aW9fcmVzaWQpCisgICAgICAgIGxlbiA9IHZwLT52X3NpemUgLSB1aW8tPnVpb19vZmZz
ZXQ7CisgICAgZWxzZQorICAgICAgICBsZW4gPSB1aW8tPnVpb19yZXNpZDsKKworICAgIHNldF90
aW1lc190b19ub3coICYobnAtPnJuX2F0aW1lKSk7CisgICAgcmV0dXJuIHVpb21vdmUobnAtPnJu
X2J1ZiArIHVpby0+dWlvX29mZnNldCwgbGVuLCB1aW8pOworfQorCisvKiBSZW1vdmUgYSBkaXJl
Y3RvcnkgKi8KK3N0YXRpYyBpbnQKK3JhbWZzX3JtZGlyKHN0cnVjdCB2bm9kZSAqZHZwLCBzdHJ1
Y3Qgdm5vZGUgKnZwLCBjaGFyICpuYW1lKQoreworICAgIHJldHVybiByYW1mc19yZW1vdmVfbm9k
ZSgocmFtZnNfbm9kZSAqKSBkdnAtPnZfZGF0YSwgKHJhbWZzX25vZGUgKikgdnAtPnZfZGF0YSk7
Cit9CisKKy8qIFJlbW92ZSBhIGZpbGUgKi8KK3N0YXRpYyBpbnQKK3JhbWZzX3JlbW92ZShzdHJ1
Y3Qgdm5vZGUgKmR2cCwgc3RydWN0IHZub2RlICp2cCwgY2hhciAqbmFtZSkKK3sKKyAgICBEUFJJ
TlRGKCgicmVtb3ZlICVzIGluICVzXG4iLCBuYW1lLCBkdnAtPnZfcGF0aCkpOworICAgIHJldHVy
biByYW1mc19yZW1vdmVfbm9kZSgocmFtZnNfbm9kZSAqKSBkdnAtPnZfZGF0YSwgKHJhbWZzX25v
ZGUgKikgdnAtPnZfZGF0YSk7Cit9CisKKy8qIFRydW5jYXRlIGZpbGUgKi8KK3N0YXRpYyBpbnQK
K3JhbWZzX3RydW5jYXRlKHN0cnVjdCB2bm9kZSAqdnAsIG9mZl90IGxlbmd0aCkKK3sKKyAgICBz
dHJ1Y3QgcmFtZnNfbm9kZSAqbnA7CisgICAgdm9pZCAqbmV3X2J1ZjsKKyAgICBzaXplX3QgbmV3
X3NpemU7CisKKyAgICBEUFJJTlRGKCgidHJ1bmNhdGUgJXMgbGVuZ3RoPSVkXG4iLCB2cC0+dl9w
YXRoLCBsZW5ndGgpKTsKKyAgICBucCA9IChyYW1mc19ub2RlICopIHZwLT52X2RhdGE7CisKKyAg
ICBpZiAobGVuZ3RoID09IDApIHsKKyAgICAgICAgaWYgKG5wLT5ybl9idWYgIT0gTlVMTCkgewor
ICAgICAgICAgICAgaWYobnAtPnJuX293bnNfYnVmKQorICAgICAgICAgICAgICAgIGZyZWUobnAt
PnJuX2J1Zik7CisgICAgICAgICAgICBucC0+cm5fYnVmID0gTlVMTDsKKyAgICAgICAgICAgIG5w
LT5ybl9idWZzaXplID0gMDsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoc2l6ZV90KGxlbmd0
aCkgPiBucC0+cm5fYnVmc2l6ZSkgeworICAgICAgICAvLyBYWFg6IHRoaXMgY291bGQgdXNlIGEg
cGFnZSBsZXZlbCBhbGxvY2F0b3IKKyAgICAgICAgbmV3X3NpemUgPSByb3VuZF9wYWdlKGxlbmd0
aCk7CisgICAgICAgIG5ld19idWYgPSBtYWxsb2MobmV3X3NpemUpOworICAgICAgICBpZiAoIW5l
d19idWYpCisgICAgICAgICAgICByZXR1cm4gRUlPOworICAgICAgICBpZiAobnAtPnJuX3NpemUg
IT0gMCkgeworICAgICAgICAgICAgbWVtY3B5KG5ld19idWYsIG5wLT5ybl9idWYsIHZwLT52X3Np
emUpOworICAgICAgICAgICAgaWYobnAtPnJuX293bnNfYnVmKQorICAgICAgICAgICAgICAgIGZy
ZWUobnAtPnJuX2J1Zik7CisgICAgICAgIH0KKyAgICAgICAgbnAtPnJuX2J1ZiA9IChjaGFyICop
IG5ld19idWY7CisgICAgICAgIG5wLT5ybl9idWZzaXplID0gbmV3X3NpemU7CisgICAgICAgIG5w
LT5ybl9vd25zX2J1ZiA9IHRydWU7CisgICAgfQorICAgIG5wLT5ybl9zaXplID0gbGVuZ3RoOwor
ICAgIHZwLT52X3NpemUgPSBsZW5ndGg7CisgICAgc2V0X3RpbWVzX3RvX25vdygmKG5wLT5ybl9t
dGltZSksICYobnAtPnJuX2N0aW1lKSk7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qCisgKiBDcmVh
dGUgZW1wdHkgZmlsZS4KKyAqLworc3RhdGljIGludAorcmFtZnNfY3JlYXRlKHN0cnVjdCB2bm9k
ZSAqZHZwLCBjaGFyICpuYW1lLCBtb2RlX3QgbW9kZSkKK3sKKyAgICBzdHJ1Y3QgcmFtZnNfbm9k
ZSAqbnA7CisKKyAgICBpZiAoc3RybGVuKG5hbWUpID4gTkFNRV9NQVgpIHsKKyAgICAgICAgcmV0
dXJuIEVOQU1FVE9PTE9ORzsKKyAgICB9CisKKyAgICBEUFJJTlRGKCgiY3JlYXRlICVzIGluICVz
XG4iLCBuYW1lLCBkdnAtPnZfcGF0aCkpOworICAgIGlmICghU19JU1JFRyhtb2RlKSkKKyAgICAg
ICAgcmV0dXJuIEVJTlZBTDsKKworICAgIG5wID0gcmFtZnNfYWRkX25vZGUoKHJhbWZzX25vZGUg
KikgZHZwLT52X2RhdGEsIG5hbWUsIFZSRUcpOworICAgIGlmIChucCA9PSBOVUxMKQorICAgICAg
ICByZXR1cm4gRU5PTUVNOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CityYW1mc19y
ZWFkKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCBmaWxlICpmcCwgc3RydWN0IHVpbyAqdWlvLCBp
bnQgaW9mbGFnKQoreworICAgIHN0cnVjdCByYW1mc19ub2RlICpucCA9IChyYW1mc19ub2RlICop
IHZwLT52X2RhdGE7CisgICAgc2l6ZV90IGxlbjsKKworICAgIGlmICh2cC0+dl90eXBlID09IFZE
SVIpIHsKKyAgICAgICAgcmV0dXJuIEVJU0RJUjsKKyAgICB9CisgICAgaWYgKHZwLT52X3R5cGUg
IT0gVlJFRykgeworICAgICAgICByZXR1cm4gRUlOVkFMOworICAgIH0KKyAgICBpZiAodWlvLT51
aW9fb2Zmc2V0IDwgMCkgeworICAgICAgICByZXR1cm4gRUlOVkFMOworICAgIH0KKyAgICBpZiAo
dWlvLT51aW9fcmVzaWQgPT0gMCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBp
ZiAodWlvLT51aW9fb2Zmc2V0ID49IChvZmZfdCkgdnAtPnZfc2l6ZSkKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICBpZiAodnAtPnZfc2l6ZSAtIHVpby0+dWlvX29mZnNldCA8IHVpby0+dWlvX3Jl
c2lkKQorICAgICAgICBsZW4gPSB2cC0+dl9zaXplIC0gdWlvLT51aW9fb2Zmc2V0OworICAgIGVs
c2UKKyAgICAgICAgbGVuID0gdWlvLT51aW9fcmVzaWQ7CisKKyAgICBzZXRfdGltZXNfdG9fbm93
KCYobnAtPnJuX2F0aW1lKSk7CisKKyAgICByZXR1cm4gdWlvbW92ZShucC0+cm5fYnVmICsgdWlv
LT51aW9fb2Zmc2V0LCBsZW4sIHVpbyk7Cit9CisKK2ludAorcmFtZnNfc2V0X2ZpbGVfZGF0YShz
dHJ1Y3Qgdm5vZGUgKnZwLCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSkKK3sKKyAgICBz
dHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSAocmFtZnNfbm9kZSAqKSB2cC0+dl9kYXRhOworCisgICAg
aWYgKHZwLT52X3R5cGUgPT0gVkRJUikgeworICAgICAgICByZXR1cm4gRUlTRElSOworICAgIH0K
KyAgICBpZiAodnAtPnZfdHlwZSAhPSBWUkVHKSB7CisgICAgICAgIHJldHVybiBFSU5WQUw7Cisg
ICAgfQorICAgIGlmIChucC0+cm5fYnVmKSB7CisgICAgICAgIHJldHVybiBFSU5WQUw7CisgICAg
fQorCisgICAgbnAtPnJuX2J1ZiA9IChjaGFyICopIGRhdGE7CisgICAgbnAtPnJuX2J1ZnNpemUg
PSBzaXplOworICAgIG5wLT5ybl9zaXplID0gc2l6ZTsKKyAgICB2cC0+dl9zaXplID0gc2l6ZTsK
KyAgICBucC0+cm5fb3duc19idWYgPSBmYWxzZTsKKworICAgIHJldHVybiAwOworfQorCitzdGF0
aWMgaW50CityYW1mc193cml0ZShzdHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3QgdWlvICp1aW8sIGlu
dCBpb2ZsYWcpCit7CisgICAgc3RydWN0IHJhbWZzX25vZGUgKm5wID0gKHJhbWZzX25vZGUgKikg
dnAtPnZfZGF0YTsKKworICAgIGlmICh2cC0+dl90eXBlID09IFZESVIpIHsKKyAgICAgICAgcmV0
dXJuIEVJU0RJUjsKKyAgICB9CisgICAgaWYgKHZwLT52X3R5cGUgIT0gVlJFRykgeworICAgICAg
ICByZXR1cm4gRUlOVkFMOworICAgIH0KKyAgICBpZiAodWlvLT51aW9fb2Zmc2V0IDwgMCkgewor
ICAgICAgICByZXR1cm4gRUlOVkFMOworICAgIH0KKyAgICBpZiAodWlvLT51aW9fb2Zmc2V0ID49
IExPTkdfTUFYKSB7CisgICAgICAgIHJldHVybiBFRkJJRzsKKyAgICB9CisgICAgaWYgKHVpby0+
dWlvX3Jlc2lkID09IDApIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYgKGlv
ZmxhZyAmIElPX0FQUEVORCkKKyAgICAgICAgdWlvLT51aW9fb2Zmc2V0ID0gbnAtPnJuX3NpemU7
CisKKyAgICBpZiAoc2l6ZV90KHVpby0+dWlvX29mZnNldCArIHVpby0+dWlvX3Jlc2lkKSA+IChz
aXplX3QpIHZwLT52X3NpemUpIHsKKyAgICAgICAgLyogRXhwYW5kIHRoZSBmaWxlIHNpemUgYmVm
b3JlIHdyaXRpbmcgdG8gaXQgKi8KKyAgICAgICAgb2ZmX3QgZW5kX3BvcyA9IHVpby0+dWlvX29m
ZnNldCArIHVpby0+dWlvX3Jlc2lkOworICAgICAgICBpZiAoZW5kX3BvcyA+IChvZmZfdCkgbnAt
PnJuX2J1ZnNpemUpIHsKKyAgICAgICAgICAgIC8vIFhYWDogdGhpcyBjb3VsZCB1c2UgYSBwYWdl
IGxldmVsIGFsbG9jYXRvcgorICAgICAgICAgICAgc2l6ZV90IG5ld19zaXplID0gcm91bmRfcGFn
ZShlbmRfcG9zKTsKKyAgICAgICAgICAgIHZvaWQgKm5ld19idWYgPSBtYWxsb2MobmV3X3NpemUp
OworICAgICAgICAgICAgaWYgKCFuZXdfYnVmKQorICAgICAgICAgICAgICAgIHJldHVybiBFSU87
CisgICAgICAgICAgICBpZiAobnAtPnJuX3NpemUgIT0gMCkgeworICAgICAgICAgICAgICAgIG1l
bWNweShuZXdfYnVmLCBucC0+cm5fYnVmLCB2cC0+dl9zaXplKTsKKyAgICAgICAgICAgICAgICBp
ZihucC0+cm5fb3duc19idWYpCisgICAgICAgICAgICAgICAgICAgIGZyZWUobnAtPnJuX2J1Zik7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBucC0+cm5fYnVmID0gKGNoYXIgKikgbmV3X2J1
ZjsKKyAgICAgICAgICAgIG5wLT5ybl9idWZzaXplID0gbmV3X3NpemU7CisgICAgICAgIH0KKyAg
ICAgICAgbnAtPnJuX3NpemUgPSBlbmRfcG9zOworICAgICAgICB2cC0+dl9zaXplID0gZW5kX3Bv
czsKKyAgICAgICAgbnAtPnJuX293bnNfYnVmID0gdHJ1ZTsKKyAgICB9CisKKyAgICBzZXRfdGlt
ZXNfdG9fbm93KCYobnAtPnJuX210aW1lKSwgJihucC0+cm5fY3RpbWUpKTsKKyAgICByZXR1cm4g
dWlvbW92ZShucC0+cm5fYnVmICsgdWlvLT51aW9fb2Zmc2V0LCB1aW8tPnVpb19yZXNpZCwgdWlv
KTsKK30KKworc3RhdGljIGludAorcmFtZnNfcmVuYW1lKHN0cnVjdCB2bm9kZSAqZHZwMSwgc3Ry
dWN0IHZub2RlICp2cDEsIGNoYXIgKm5hbWUxLAorICAgICAgICAgICAgIHN0cnVjdCB2bm9kZSAq
ZHZwMiwgc3RydWN0IHZub2RlICp2cDIsIGNoYXIgKm5hbWUyKQoreworICAgIHN0cnVjdCByYW1m
c19ub2RlICpucCwgKm9sZF9ucDsKKyAgICBpbnQgZXJyb3I7CisKKyAgICBpZiAodnAyKSB7Cisg
ICAgICAgIC8qIFJlbW92ZSBkZXN0aW5hdGlvbiBmaWxlLCBmaXJzdCAqLworICAgICAgICBlcnJv
ciA9IHJhbWZzX3JlbW92ZV9ub2RlKChyYW1mc19ub2RlICopIGR2cDItPnZfZGF0YSwgKHJhbWZz
X25vZGUgKikgdnAyLT52X2RhdGEpOworICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICBy
ZXR1cm4gZXJyb3I7CisgICAgfQorICAgIC8qIFNhbWUgZGlyZWN0b3J5ID8gKi8KKyAgICBpZiAo
ZHZwMSA9PSBkdnAyKSB7CisgICAgICAgIC8qIENoYW5nZSB0aGUgbmFtZSBvZiBleGlzdGluZyBm
aWxlICovCisgICAgICAgIGVycm9yID0gcmFtZnNfcmVuYW1lX25vZGUoKHJhbWZzX25vZGUgKikg
dnAxLT52X2RhdGEsIG5hbWUyKTsKKyAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgcmV0
dXJuIGVycm9yOworICAgIH0gZWxzZSB7CisgICAgICAgIC8qIENyZWF0ZSBuZXcgZmlsZSBvciBk
aXJlY3RvcnkgKi8KKyAgICAgICAgb2xkX25wID0gKHJhbWZzX25vZGUgKikgdnAxLT52X2RhdGE7
CisgICAgICAgIG5wID0gcmFtZnNfYWRkX25vZGUoKHJhbWZzX25vZGUgKikgZHZwMi0+dl9kYXRh
LCBuYW1lMiwgb2xkX25wLT5ybl90eXBlKTsKKyAgICAgICAgaWYgKG5wID09IE5VTEwpCisgICAg
ICAgICAgICByZXR1cm4gRU5PTUVNOworCisgICAgICAgIGlmIChvbGRfbnAtPnJuX2J1Zikgewor
ICAgICAgICAgICAgLyogQ29weSBmaWxlIGRhdGEgKi8KKyAgICAgICAgICAgIG5wLT5ybl9idWYg
PSBvbGRfbnAtPnJuX2J1ZjsKKyAgICAgICAgICAgIG5wLT5ybl9zaXplID0gb2xkX25wLT5ybl9z
aXplOworICAgICAgICAgICAgbnAtPnJuX2J1ZnNpemUgPSBvbGRfbnAtPnJuX2J1ZnNpemU7Cisg
ICAgICAgICAgICBvbGRfbnAtPnJuX2J1ZiA9IE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgLyog
UmVtb3ZlIHNvdXJjZSBmaWxlICovCisgICAgICAgIHJhbWZzX3JlbW92ZV9ub2RlKChyYW1mc19u
b2RlICopIGR2cDEtPnZfZGF0YSwgKHJhbWZzX25vZGUgKikgdnAxLT52X2RhdGEpOworICAgIH0K
KyAgICByZXR1cm4gMDsKK30KKworLyoKKyAqIEB2cDogdm5vZGUgb2YgdGhlIGRpcmVjdG9yeS4K
KyAqLworc3RhdGljIGludAorcmFtZnNfcmVhZGRpcihzdHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3Qg
ZmlsZSAqZnAsIHN0cnVjdCBkaXJlbnQgKmRpcikKK3sKKyAgICBzdHJ1Y3QgcmFtZnNfbm9kZSAq
bnAsICpkbnA7CisgICAgaW50IGk7CisKKyAgICBtdXRleF9sb2NrKCZyYW1mc19sb2NrKTsKKwor
ICAgIHNldF90aW1lc190b19ub3coJigoKHJhbWZzX25vZGUgKikgdnAtPnZfZGF0YSktPnJuX2F0
aW1lKSk7CisKKyAgICBpZiAoZnAtPmZfb2Zmc2V0ID09IDApIHsKKyAgICAgICAgZGlyLT5kX3R5
cGUgPSBEVF9ESVI7CisgICAgICAgIHN0cmxjcHkoKGNoYXIgKikgJmRpci0+ZF9uYW1lLCAiLiIs
IHNpemVvZihkaXItPmRfbmFtZSkpOworICAgIH0gZWxzZSBpZiAoZnAtPmZfb2Zmc2V0ID09IDEp
IHsKKyAgICAgICAgZGlyLT5kX3R5cGUgPSBEVF9ESVI7CisgICAgICAgIHN0cmxjcHkoKGNoYXIg
KikgJmRpci0+ZF9uYW1lLCAiLi4iLCBzaXplb2YoZGlyLT5kX25hbWUpKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBkbnAgPSAocmFtZnNfbm9kZSAqKSB2cC0+dl9kYXRhOworICAgICAgICBucCA9
IGRucC0+cm5fY2hpbGQ7CisgICAgICAgIGlmIChucCA9PSBOVUxMKSB7CisgICAgICAgICAgICBt
dXRleF91bmxvY2soJnJhbWZzX2xvY2spOworICAgICAgICAgICAgcmV0dXJuIEVOT0VOVDsKKyAg
ICAgICAgfQorCisgICAgICAgIGZvciAoaSA9IDA7IGkgIT0gKGZwLT5mX29mZnNldCAtIDIpOyBp
KyspIHsKKyAgICAgICAgICAgIG5wID0gbnAtPnJuX25leHQ7CisgICAgICAgICAgICBpZiAobnAg
PT0gTlVMTCkgeworICAgICAgICAgICAgICAgIG11dGV4X3VubG9jaygmcmFtZnNfbG9jayk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIEVOT0VOVDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICBpZiAobnAtPnJuX3R5cGUgPT0gVkRJUikKKyAgICAgICAgICAgIGRpci0+ZF90eXBl
ID0gRFRfRElSOworICAgICAgICBlbHNlIGlmIChucC0+cm5fdHlwZSA9PSBWTE5LKQorICAgICAg
ICAgICAgZGlyLT5kX3R5cGUgPSBEVF9MTks7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRp
ci0+ZF90eXBlID0gRFRfUkVHOworICAgICAgICBzdHJsY3B5KChjaGFyICopICZkaXItPmRfbmFt
ZSwgbnAtPnJuX25hbWUsCisgICAgICAgICAgICAgICAgc2l6ZW9mKGRpci0+ZF9uYW1lKSk7Cisg
ICAgfQorICAgIGRpci0+ZF9maWxlbm8gPSBmcC0+Zl9vZmZzZXQ7CisvLwlkaXItPmRfbmFtZWxl
biA9IHN0cmxlbihkaXItPmRfbmFtZSk7CisKKyAgICBmcC0+Zl9vZmZzZXQrKzsKKworICAgIG11
dGV4X3VubG9jaygmcmFtZnNfbG9jayk7CisgICAgcmV0dXJuIDA7Cit9CisKK2ludAorcmFtZnNf
aW5pdCh2b2lkKQoreworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CityYW1mc19nZXRh
dHRyKHN0cnVjdCB2bm9kZSAqdm5vZGUsIHN0cnVjdCB2YXR0ciAqYXR0cikKK3sKKyAgICBhdHRy
LT52YV9ub2RlaWQgPSB2bm9kZS0+dl9pbm87CisgICAgYXR0ci0+dmFfc2l6ZSA9IHZub2RlLT52
X3NpemU7CisKKyAgICBzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSAocmFtZnNfbm9kZSAqKSB2bm9k
ZS0+dl9kYXRhOworICAgIGF0dHItPnZhX3R5cGUgPSAodnR5cGUpIG5wLT5ybl90eXBlOworCisg
ICAgbWVtY3B5KCYoYXR0ci0+dmFfYXRpbWUpLCAmKG5wLT5ybl9hdGltZSksIHNpemVvZihzdHJ1
Y3QgdGltZXNwZWMpKTsKKyAgICBtZW1jcHkoJihhdHRyLT52YV9jdGltZSksICYobnAtPnJuX2N0
aW1lKSwgc2l6ZW9mKHN0cnVjdCB0aW1lc3BlYykpOworICAgIG1lbWNweSgmKGF0dHItPnZhX210
aW1lKSwgJihucC0+cm5fbXRpbWUpLCBzaXplb2Yoc3RydWN0IHRpbWVzcGVjKSk7CisKKyAgICBh
dHRyLT52YV9tb2RlID0gbnAtPnJuX21vZGU7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGlj
IGludAorcmFtZnNfc2V0YXR0cihzdHJ1Y3Qgdm5vZGUgKnZub2RlLCBzdHJ1Y3QgdmF0dHIgKmF0
dHIpIHsKKyAgICBzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSAocmFtZnNfbm9kZSAqKSB2bm9kZS0+
dl9kYXRhOworCisgICAgaWYgKGF0dHItPnZhX21hc2sgJiBBVF9BVElNRSkgeworICAgICAgICBt
ZW1jcHkoJihucC0+cm5fYXRpbWUpLCAmKGF0dHItPnZhX2F0aW1lKSwgc2l6ZW9mKHN0cnVjdCB0
aW1lc3BlYykpOworICAgIH0KKworICAgIGlmIChhdHRyLT52YV9tYXNrICYgQVRfQ1RJTUUpIHsK
KyAgICAgICAgbWVtY3B5KCYobnAtPnJuX2N0aW1lKSwgJihhdHRyLT52YV9jdGltZSksIHNpemVv
ZihzdHJ1Y3QgdGltZXNwZWMpKTsKKyAgICB9CisKKyAgICBpZiAoYXR0ci0+dmFfbWFzayAmIEFU
X01USU1FKSB7CisgICAgICAgIG1lbWNweSgmKG5wLT5ybl9tdGltZSksICYoYXR0ci0+dmFfbXRp
bWUpLCBzaXplb2Yoc3RydWN0IHRpbWVzcGVjKSk7CisgICAgfQorCisgICAgaWYgKGF0dHItPnZh
X21hc2sgJiBBVF9NT0RFKSB7CisgICAgICAgIG5wLT5ybl9tb2RlID0gYXR0ci0+dmFfbW9kZTsK
KyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworI2RlZmluZSByYW1mc19vcGVuICAgICAgKCh2
bm9wX29wZW5fdCl2b3BfbnVsbG9wKQorI2RlZmluZSByYW1mc19jbG9zZSAgICAgKCh2bm9wX2Ns
b3NlX3Qpdm9wX251bGxvcCkKKyNkZWZpbmUgcmFtZnNfc2VlayAgICAgICgodm5vcF9zZWVrX3Qp
dm9wX251bGxvcCkKKyNkZWZpbmUgcmFtZnNfaW9jdGwgICAgICgodm5vcF9pb2N0bF90KXZvcF9l
aW52YWwpCisjZGVmaW5lIHJhbWZzX2ZzeW5jICAgICAoKHZub3BfZnN5bmNfdCl2b3BfbnVsbG9w
KQorI2RlZmluZSByYW1mc19pbmFjdGl2ZSAgKCh2bm9wX2luYWN0aXZlX3Qpdm9wX251bGxvcCkK
KyNkZWZpbmUgcmFtZnNfbGluayAgICAgICgodm5vcF9saW5rX3Qpdm9wX2VwZXJtKQorI2RlZmlu
ZSByYW1mc19mYWxsb2NhdGUgKCh2bm9wX2ZhbGxvY2F0ZV90KXZvcF9udWxsb3ApCisKKy8qCisg
KiB2bm9kZSBvcGVyYXRpb25zCisgKi8KK3N0cnVjdCB2bm9wcyByYW1mc192bm9wcyA9IHsKKyAg
ICAgICAgcmFtZnNfb3BlbiwgICAgICAgICAgICAgLyogb3BlbiAqLworICAgICAgICByYW1mc19j
bG9zZSwgICAgICAgICAgICAvKiBjbG9zZSAqLworICAgICAgICByYW1mc19yZWFkLCAgICAgICAg
ICAgICAvKiByZWFkICovCisgICAgICAgIHJhbWZzX3dyaXRlLCAgICAgICAgICAgIC8qIHdyaXRl
ICovCisgICAgICAgIHJhbWZzX3NlZWssICAgICAgICAgICAgIC8qIHNlZWsgKi8KKyAgICAgICAg
cmFtZnNfaW9jdGwsICAgICAgICAgICAgLyogaW9jdGwgKi8KKyAgICAgICAgcmFtZnNfZnN5bmMs
ICAgICAgICAgICAgLyogZnN5bmMgKi8KKyAgICAgICAgcmFtZnNfcmVhZGRpciwgICAgICAgICAg
LyogcmVhZGRpciAqLworICAgICAgICByYW1mc19sb29rdXAsICAgICAgICAgICAvKiBsb29rdXAg
Ki8KKyAgICAgICAgcmFtZnNfY3JlYXRlLCAgICAgICAgICAgLyogY3JlYXRlICovCisgICAgICAg
IHJhbWZzX3JlbW92ZSwgICAgICAgICAgIC8qIHJlbW92ZSAqLworICAgICAgICByYW1mc19yZW5h
bWUsICAgICAgICAgICAvKiByZW1hbWUgKi8KKyAgICAgICAgcmFtZnNfbWtkaXIsICAgICAgICAg
ICAgLyogbWtkaXIgKi8KKyAgICAgICAgcmFtZnNfcm1kaXIsICAgICAgICAgICAgLyogcm1kaXIg
Ki8KKyAgICAgICAgcmFtZnNfZ2V0YXR0ciwgICAgICAgICAgLyogZ2V0YXR0ciAqLworICAgICAg
ICByYW1mc19zZXRhdHRyLCAgICAgICAgICAvKiBzZXRhdHRyICovCisgICAgICAgIHJhbWZzX2lu
YWN0aXZlLCAgICAgICAgIC8qIGluYWN0aXZlICovCisgICAgICAgIHJhbWZzX3RydW5jYXRlLCAg
ICAgICAgIC8qIHRydW5jYXRlICovCisgICAgICAgIHJhbWZzX2xpbmssICAgICAgICAgICAgIC8q
IGxpbmsgKi8KKyAgICAgICAgKHZub3BfY2FjaGVfdCkgbnVsbHB0ciwgLyogYXJjICovCisgICAg
ICAgIHJhbWZzX2ZhbGxvY2F0ZSwgICAgICAgIC8qIGZhbGxvY2F0ZSAqLworICAgICAgICByYW1m
c19yZWFkbGluaywgICAgICAgICAvKiByZWFkIGxpbmsgKi8KKyAgICAgICAgcmFtZnNfc3ltbGlu
aywgICAgICAgICAgLyogc3ltYm9saWMgbGluayAqLworfTsKKwotLSAKMi4xOS4yCgoKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1h
aWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0
cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Feb 06 10:42:30 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 06 Feb 2019 10:42:30 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grKf0-0003Bg-4q; Wed, 06 Feb 2019 10:42:30 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Hs2p=QN=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1grKey-0003B9-Cr
 for minios-devel@lists.xen.org; Wed, 06 Feb 2019 10:42:28 +0000
X-Inumbo-ID: e42b847e-29fb-11e9-b8cd-3f1734a6c794
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id e42b847e-29fb-11e9-b8cd-3f1734a6c794;
 Wed, 06 Feb 2019 10:42:25 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 16468F2048;
 Wed,  6 Feb 2019 11:42:25 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 67HkrMKf8wvz; Wed,  6 Feb 2019 11:42:24 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id D824AF2023
 for <minios-devel@lists.xen.org>; Wed,  6 Feb 2019 11:42:22 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Wed, 6 Feb 2019 11:42:22 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 6 Feb 2019 11:42:03 +0100
Message-ID: <20190206104214.23847-3-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190206104214.23847-1-yuri.volchkov@neclab.eu>
References: <20190206104214.23847-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH 2/6] lib/ramfs: tabify imported
 ramfs code
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Simon.kuenzer@neclab.eu, sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VG8gY29tcGx5IHdpdGggVW5pa3JhZnQgY29kaW5nIHN0eWxlLCBpbmRlbnRzIG11c3QgYmUgdGFi
cywgbm90CnNwYWNlcy4gSW1wb3J0ZWQgY29kZSB3YXMgYSBtaXh0dXJlIG9mIGJvdGguCgpTaWdu
ZWQtb2ZmLWJ5OiBZdXJpIFZvbGNoa292IDx5dXJpLnZvbGNoa292QG5lY2xhYi5ldT4KLS0tCiBs
aWIvcmFtZnMvcmFtZnMuaCAgICAgICAgfCAgMjYgKy0KIGxpYi9yYW1mcy9yYW1mc192ZnNvcHMu
YyB8ICAzMiArLQogbGliL3JhbWZzL3JhbWZzX3Zub3BzLmMgIHwgOTE2ICsrKysrKysrKysrKysr
KysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCA0ODcgaW5zZXJ0aW9u
cygrKSwgNDg3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpYi9yYW1mcy9yYW1mcy5oIGIv
bGliL3JhbWZzL3JhbWZzLmgKaW5kZXggODhjY2JlNzIuLmU0ZWViNjVmIDEwMDY0NAotLS0gYS9s
aWIvcmFtZnMvcmFtZnMuaAorKysgYi9saWIvcmFtZnMvcmFtZnMuaApAQCAtNDYsMTkgKzQ2LDE5
IEBACiAgKiBGaWxlL2RpcmVjdG9yeSBub2RlIGZvciBSQU1GUwogICovCiBzdHJ1Y3QgcmFtZnNf
bm9kZSB7Ci0gICAgc3RydWN0IHJhbWZzX25vZGUgKnJuX25leHQ7ICAgLyogbmV4dCBub2RlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeSAqLwotICAgIHN0cnVjdCByYW1mc19ub2RlICpybl9jaGlsZDsg
IC8qIGZpcnN0IGNoaWxkIG5vZGUgKi8KLSAgICBpbnQgcm5fdHlwZTsgICAgLyogZmlsZSBvciBk
aXJlY3RvcnkgKi8KLSAgICBjaGFyICpybl9uYW1lOyAgICAvKiBuYW1lIChudWxsLXRlcm1pbmF0
ZWQpICovCi0gICAgc2l6ZV90IHJuX25hbWVsZW47ICAgIC8qIGxlbmd0aCBvZiBuYW1lIG5vdCBp
bmNsdWRpbmcgdGVybWluYXRvciAqLwotICAgIHNpemVfdCBybl9zaXplOyAgICAvKiBmaWxlIHNp
emUgKi8KLSAgICBjaGFyICpybl9idWY7ICAgIC8qIGJ1ZmZlciB0byB0aGUgZmlsZSBkYXRhICov
Ci0gICAgc2l6ZV90IHJuX2J1ZnNpemU7ICAgIC8qIGFsbG9jYXRlZCBidWZmZXIgc2l6ZSAqLwot
ICAgIHN0cnVjdCB0aW1lc3BlYyBybl9jdGltZTsKLSAgICBzdHJ1Y3QgdGltZXNwZWMgcm5fYXRp
bWU7Ci0gICAgc3RydWN0IHRpbWVzcGVjIHJuX210aW1lOwotICAgIGludCBybl9tb2RlOwotICAg
IGJvb2wgcm5fb3duc19idWY7CisJc3RydWN0IHJhbWZzX25vZGUgKnJuX25leHQ7ICAgLyogbmV4
dCBub2RlIGluIHRoZSBzYW1lIGRpcmVjdG9yeSAqLworCXN0cnVjdCByYW1mc19ub2RlICpybl9j
aGlsZDsgIC8qIGZpcnN0IGNoaWxkIG5vZGUgKi8KKwlpbnQgcm5fdHlwZTsgICAgLyogZmlsZSBv
ciBkaXJlY3RvcnkgKi8KKwljaGFyICpybl9uYW1lOyAgICAvKiBuYW1lIChudWxsLXRlcm1pbmF0
ZWQpICovCisJc2l6ZV90IHJuX25hbWVsZW47ICAgIC8qIGxlbmd0aCBvZiBuYW1lIG5vdCBpbmNs
dWRpbmcgdGVybWluYXRvciAqLworCXNpemVfdCBybl9zaXplOyAgICAvKiBmaWxlIHNpemUgKi8K
KwljaGFyICpybl9idWY7ICAgIC8qIGJ1ZmZlciB0byB0aGUgZmlsZSBkYXRhICovCisJc2l6ZV90
IHJuX2J1ZnNpemU7ICAgIC8qIGFsbG9jYXRlZCBidWZmZXIgc2l6ZSAqLworCXN0cnVjdCB0aW1l
c3BlYyBybl9jdGltZTsKKwlzdHJ1Y3QgdGltZXNwZWMgcm5fYXRpbWU7CisJc3RydWN0IHRpbWVz
cGVjIHJuX210aW1lOworCWludCBybl9tb2RlOworCWJvb2wgcm5fb3duc19idWY7CiB9OwogCiBz
dHJ1Y3QgcmFtZnNfbm9kZSAqcmFtZnNfYWxsb2NhdGVfbm9kZShjb25zdCBjaGFyICpuYW1lLCBp
bnQgdHlwZSk7CmRpZmYgLS1naXQgYS9saWIvcmFtZnMvcmFtZnNfdmZzb3BzLmMgYi9saWIvcmFt
ZnMvcmFtZnNfdmZzb3BzLmMKaW5kZXggNzJmZTdlZGIuLjUzYWU3NThhIDEwMDY0NAotLS0gYS9s
aWIvcmFtZnMvcmFtZnNfdmZzb3BzLmMKKysrIGIvbGliL3JhbWZzL3JhbWZzX3Zmc29wcy5jCkBA
IC00OSwxMiArNDksMTIgQEAgc3RhdGljIGludCByYW1mc191bm1vdW50KHN0cnVjdCBtb3VudCAq
bXAsIGludCBmbGFncyk7CiAgKiBGaWxlIHN5c3RlbSBvcGVyYXRpb25zCiAgKi8KIHN0cnVjdCB2
ZnNvcHMgcmFtZnNfdmZzb3BzID0gewotICAgICAgICByYW1mc19tb3VudCwgICAgICAgLyogbW91
bnQgKi8KLSAgICAgICAgcmFtZnNfdW5tb3VudCwgICAgIC8qIHVubW91bnQgKi8KLSAgICAgICAg
cmFtZnNfc3luYywgICAgICAgIC8qIHN5bmMgKi8KLSAgICAgICAgcmFtZnNfdmdldCwgICAgICAg
IC8qIHZnZXQgKi8KLSAgICAgICAgcmFtZnNfc3RhdGZzLCAgICAgIC8qIHN0YXRmcyAqLwotICAg
ICAgICAmcmFtZnNfdm5vcHMsICAgICAgLyogdm5vcHMgKi8KKwkJcmFtZnNfbW91bnQsICAgICAg
IC8qIG1vdW50ICovCisJCXJhbWZzX3VubW91bnQsICAgICAvKiB1bm1vdW50ICovCisJCXJhbWZz
X3N5bmMsICAgICAgICAvKiBzeW5jICovCisJCXJhbWZzX3ZnZXQsICAgICAgICAvKiB2Z2V0ICov
CisJCXJhbWZzX3N0YXRmcywgICAgICAvKiBzdGF0ZnMgKi8KKwkJJnJhbWZzX3Zub3BzLCAgICAg
IC8qIHZub3BzICovCiB9OwogCiAvKgpAQCAtNjMsMTYgKzYzLDE2IEBAIHN0cnVjdCB2ZnNvcHMg
cmFtZnNfdmZzb3BzID0gewogc3RhdGljIGludAogcmFtZnNfbW91bnQoc3RydWN0IG1vdW50ICpt
cCwgY29uc3QgY2hhciAqZGV2LCBpbnQgZmxhZ3MsIGNvbnN0IHZvaWQgKmRhdGEpCiB7Ci0gICAg
c3RydWN0IHJhbWZzX25vZGUgKm5wOworCXN0cnVjdCByYW1mc19ub2RlICpucDsKIAotICAgIERQ
UklOVEYoKCJyYW1mc19tb3VudDogZGV2PSVzXG4iLCBkZXYpKTsKKwlEUFJJTlRGKCgicmFtZnNf
bW91bnQ6IGRldj0lc1xuIiwgZGV2KSk7CiAKLSAgICAvKiBDcmVhdGUgYSByb290IG5vZGUgKi8K
LSAgICBucCA9IHJhbWZzX2FsbG9jYXRlX25vZGUoIi8iLCBWRElSKTsKLSAgICBpZiAobnAgPT0g
TlVMTCkKLSAgICAgICAgcmV0dXJuIEVOT01FTTsKLSAgICBtcC0+bV9yb290LT5kX3Zub2RlLT52
X2RhdGEgPSBucDsKLSAgICByZXR1cm4gMDsKKwkvKiBDcmVhdGUgYSByb290IG5vZGUgKi8KKwlu
cCA9IHJhbWZzX2FsbG9jYXRlX25vZGUoIi8iLCBWRElSKTsKKwlpZiAobnAgPT0gTlVMTCkKKwkJ
cmV0dXJuIEVOT01FTTsKKwltcC0+bV9yb290LT5kX3Zub2RlLT52X2RhdGEgPSBucDsKKwlyZXR1
cm4gMDsKIH0KIAogLyoKQEAgLTg1LDYgKzg1LDYgQEAgcmFtZnNfbW91bnQoc3RydWN0IG1vdW50
ICptcCwgY29uc3QgY2hhciAqZGV2LCBpbnQgZmxhZ3MsIGNvbnN0IHZvaWQgKmRhdGEpCiBzdGF0
aWMgaW50CiByYW1mc191bm1vdW50KHN0cnVjdCBtb3VudCAqbXAsIGludCBmbGFncykKIHsKLSAg
ICByZWxlYXNlX21wX2RlbnRyaWVzKG1wKTsKLSAgICByZXR1cm4gMDsKKwlyZWxlYXNlX21wX2Rl
bnRyaWVzKG1wKTsKKwlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2xpYi9yYW1mcy9yYW1mc192
bm9wcy5jIGIvbGliL3JhbWZzL3JhbWZzX3Zub3BzLmMKaW5kZXggOTI5MWE0ZWMuLjhiNTg2Zjg4
IDEwMDY0NAotLS0gYS9saWIvcmFtZnMvcmFtZnNfdm5vcHMuYworKysgYi9saWIvcmFtZnMvcmFt
ZnNfdm5vcHMuYwpAQCAtNTQsMzEzICs1NCwzMTMgQEAgc3RhdGljIHVpbnQ2NF90IGlub2RlX2Nv
dW50ID0gMTsgLyogaW5vZGUgMCBpcyByZXNlcnZlZCB0byByb290ICovCiBzdGF0aWMgdm9pZAog
c2V0X3RpbWVzX3RvX25vdyhzdHJ1Y3QgdGltZXNwZWMgKnRpbWUxLCBzdHJ1Y3QgdGltZXNwZWMg
KnRpbWUyID0gbnVsbHB0ciwgc3RydWN0IHRpbWVzcGVjICp0aW1lMyA9IG51bGxwdHIpCiB7Ci0g
ICAgc3RydWN0IHRpbWVzcGVjIG5vdzsKLSAgICBjbG9ja19nZXR0aW1lKENMT0NLX1JFQUxUSU1F
LCAmbm93KTsKLSAgICBpZiAodGltZTEpIHsKLSAgICAgICAgbWVtY3B5KHRpbWUxLCAmbm93LCBz
aXplb2Yoc3RydWN0IHRpbWVzcGVjKSk7Ci0gICAgfQotICAgIGlmICh0aW1lMikgewotICAgICAg
ICBtZW1jcHkodGltZTIsICZub3csIHNpemVvZihzdHJ1Y3QgdGltZXNwZWMpKTsKLSAgICB9Ci0g
ICAgaWYgKHRpbWUzKSB7Ci0gICAgICAgIG1lbWNweSh0aW1lMywgJm5vdywgc2l6ZW9mKHN0cnVj
dCB0aW1lc3BlYykpOwotICAgIH0KKwlzdHJ1Y3QgdGltZXNwZWMgbm93OworCWNsb2NrX2dldHRp
bWUoQ0xPQ0tfUkVBTFRJTUUsICZub3cpOworCWlmICh0aW1lMSkgeworCQltZW1jcHkodGltZTEs
ICZub3csIHNpemVvZihzdHJ1Y3QgdGltZXNwZWMpKTsKKwl9CisJaWYgKHRpbWUyKSB7CisJCW1l
bWNweSh0aW1lMiwgJm5vdywgc2l6ZW9mKHN0cnVjdCB0aW1lc3BlYykpOworCX0KKwlpZiAodGlt
ZTMpIHsKKwkJbWVtY3B5KHRpbWUzLCAmbm93LCBzaXplb2Yoc3RydWN0IHRpbWVzcGVjKSk7CisJ
fQogfQogCiBzdHJ1Y3QgcmFtZnNfbm9kZSAqCiByYW1mc19hbGxvY2F0ZV9ub2RlKGNvbnN0IGNo
YXIgKm5hbWUsIGludCB0eXBlKQogewotICAgIHN0cnVjdCByYW1mc19ub2RlICpucDsKLQotICAg
IG5wID0gKHJhbWZzX25vZGUgKikgbWFsbG9jKHNpemVvZihzdHJ1Y3QgcmFtZnNfbm9kZSkpOwot
ICAgIGlmIChucCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBtZW1zZXQobnAs
IDAsIHNpemVvZihzdHJ1Y3QgcmFtZnNfbm9kZSkpOwotCi0gICAgbnAtPnJuX25hbWVsZW4gPSBz
dHJsZW4obmFtZSk7Ci0gICAgbnAtPnJuX25hbWUgPSAoY2hhciAqKSBtYWxsb2MobnAtPnJuX25h
bWVsZW4gKyAxKTsKLSAgICBpZiAobnAtPnJuX25hbWUgPT0gTlVMTCkgewotICAgICAgICBmcmVl
KG5wKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHN0cmxjcHkobnAtPnJuX25h
bWUsIG5hbWUsIG5wLT5ybl9uYW1lbGVuICsgMSk7Ci0gICAgbnAtPnJuX3R5cGUgPSB0eXBlOwot
Ci0gICAgaWYgKHR5cGUgPT0gVkRJUikKLSAgICAgICAgbnAtPnJuX21vZGUgPSBTX0lGRElSfDA3
Nzc7Ci0gICAgZWxzZSBpZiAodHlwZSA9PSBWTE5LKQotICAgICAgICBucC0+cm5fbW9kZSA9IFNf
SUZMTkt8MDc3NzsKLSAgICBlbHNlCi0gICAgICAgIG5wLT5ybl9tb2RlID0gU19JRlJFR3wwNzc3
OwotCi0gICAgc2V0X3RpbWVzX3RvX25vdygmKG5wLT5ybl9jdGltZSksICYobnAtPnJuX2F0aW1l
KSwgJihucC0+cm5fbXRpbWUpKTsKLSAgICBucC0+cm5fb3duc19idWYgPSB0cnVlOwotCi0gICAg
cmV0dXJuIG5wOworCXN0cnVjdCByYW1mc19ub2RlICpucDsKKworCW5wID0gKHJhbWZzX25vZGUg
KikgbWFsbG9jKHNpemVvZihzdHJ1Y3QgcmFtZnNfbm9kZSkpOworCWlmIChucCA9PSBOVUxMKQor
CQlyZXR1cm4gTlVMTDsKKwltZW1zZXQobnAsIDAsIHNpemVvZihzdHJ1Y3QgcmFtZnNfbm9kZSkp
OworCisJbnAtPnJuX25hbWVsZW4gPSBzdHJsZW4obmFtZSk7CisJbnAtPnJuX25hbWUgPSAoY2hh
ciAqKSBtYWxsb2MobnAtPnJuX25hbWVsZW4gKyAxKTsKKwlpZiAobnAtPnJuX25hbWUgPT0gTlVM
TCkgeworCQlmcmVlKG5wKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCXN0cmxjcHkobnAtPnJuX25h
bWUsIG5hbWUsIG5wLT5ybl9uYW1lbGVuICsgMSk7CisJbnAtPnJuX3R5cGUgPSB0eXBlOworCisJ
aWYgKHR5cGUgPT0gVkRJUikKKwkJbnAtPnJuX21vZGUgPSBTX0lGRElSfDA3Nzc7CisJZWxzZSBp
ZiAodHlwZSA9PSBWTE5LKQorCQlucC0+cm5fbW9kZSA9IFNfSUZMTkt8MDc3NzsKKwllbHNlCisJ
CW5wLT5ybl9tb2RlID0gU19JRlJFR3wwNzc3OworCisJc2V0X3RpbWVzX3RvX25vdygmKG5wLT5y
bl9jdGltZSksICYobnAtPnJuX2F0aW1lKSwgJihucC0+cm5fbXRpbWUpKTsKKwlucC0+cm5fb3du
c19idWYgPSB0cnVlOworCisJcmV0dXJuIG5wOwogfQogCiB2b2lkCiByYW1mc19mcmVlX25vZGUo
c3RydWN0IHJhbWZzX25vZGUgKm5wKQogewotICAgIGlmIChucC0+cm5fYnVmICE9IE5VTEwgJiYg
bnAtPnJuX293bnNfYnVmKQotICAgICAgICBmcmVlKG5wLT5ybl9idWYpOworCWlmIChucC0+cm5f
YnVmICE9IE5VTEwgJiYgbnAtPnJuX293bnNfYnVmKQorCQlmcmVlKG5wLT5ybl9idWYpOwogCi0g
ICAgZnJlZShucC0+cm5fbmFtZSk7Ci0gICAgZnJlZShucCk7CisJZnJlZShucC0+cm5fbmFtZSk7
CisJZnJlZShucCk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgcmFtZnNfbm9kZSAqCiByYW1mc19hZGRf
bm9kZShzdHJ1Y3QgcmFtZnNfbm9kZSAqZG5wLCBjaGFyICpuYW1lLCBpbnQgdHlwZSkKIHsKLSAg
ICBzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAsICpwcmV2OworCXN0cnVjdCByYW1mc19ub2RlICpucCwg
KnByZXY7CiAKLSAgICBucCA9IHJhbWZzX2FsbG9jYXRlX25vZGUobmFtZSwgdHlwZSk7Ci0gICAg
aWYgKG5wID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOworCW5wID0gcmFtZnNfYWxsb2Nh
dGVfbm9kZShuYW1lLCB0eXBlKTsKKwlpZiAobnAgPT0gTlVMTCkKKwkJcmV0dXJuIE5VTEw7CiAK
LSAgICBtdXRleF9sb2NrKCZyYW1mc19sb2NrKTsKKwltdXRleF9sb2NrKCZyYW1mc19sb2NrKTsK
IAotICAgIC8qIExpbmsgdG8gdGhlIGRpcmVjdG9yeSBsaXN0ICovCi0gICAgaWYgKGRucC0+cm5f
Y2hpbGQgPT0gTlVMTCkgewotICAgICAgICBkbnAtPnJuX2NoaWxkID0gbnA7Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgcHJldiA9IGRucC0+cm5fY2hpbGQ7Ci0gICAgICAgIHdoaWxlIChwcmV2LT5y
bl9uZXh0ICE9IE5VTEwpCi0gICAgICAgICAgICBwcmV2ID0gcHJldi0+cm5fbmV4dDsKLSAgICAg
ICAgcHJldi0+cm5fbmV4dCA9IG5wOwotICAgIH0KKwkvKiBMaW5rIHRvIHRoZSBkaXJlY3Rvcnkg
bGlzdCAqLworCWlmIChkbnAtPnJuX2NoaWxkID09IE5VTEwpIHsKKwkJZG5wLT5ybl9jaGlsZCA9
IG5wOworCX0gZWxzZSB7CisJCXByZXYgPSBkbnAtPnJuX2NoaWxkOworCQl3aGlsZSAocHJldi0+
cm5fbmV4dCAhPSBOVUxMKQorCQkJcHJldiA9IHByZXYtPnJuX25leHQ7CisJCXByZXYtPnJuX25l
eHQgPSBucDsKKwl9CiAKLSAgICBzZXRfdGltZXNfdG9fbm93KCYoZG5wLT5ybl9tdGltZSksICYo
ZG5wLT5ybl9jdGltZSkpOworCXNldF90aW1lc190b19ub3coJihkbnAtPnJuX210aW1lKSwgJihk
bnAtPnJuX2N0aW1lKSk7CiAKLSAgICBtdXRleF91bmxvY2soJnJhbWZzX2xvY2spOwotICAgIHJl
dHVybiBucDsKKwltdXRleF91bmxvY2soJnJhbWZzX2xvY2spOworCXJldHVybiBucDsKIH0KIAog
c3RhdGljIGludAogcmFtZnNfcmVtb3ZlX25vZGUoc3RydWN0IHJhbWZzX25vZGUgKmRucCwgc3Ry
dWN0IHJhbWZzX25vZGUgKm5wKQogewotICAgIHN0cnVjdCByYW1mc19ub2RlICpwcmV2OwotCi0g
ICAgaWYgKGRucC0+cm5fY2hpbGQgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIEVCVVNZOwotCi0g
ICAgbXV0ZXhfbG9jaygmcmFtZnNfbG9jayk7Ci0KLSAgICAvKiBVbmxpbmsgZnJvbSB0aGUgZGly
ZWN0b3J5IGxpc3QgKi8KLSAgICBpZiAoZG5wLT5ybl9jaGlsZCA9PSBucCkgewotICAgICAgICBk
bnAtPnJuX2NoaWxkID0gbnAtPnJuX25leHQ7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZm9yIChw
cmV2ID0gZG5wLT5ybl9jaGlsZDsgcHJldi0+cm5fbmV4dCAhPSBucDsKLSAgICAgICAgICAgICBw
cmV2ID0gcHJldi0+cm5fbmV4dCkgewotICAgICAgICAgICAgaWYgKHByZXYtPnJuX25leHQgPT0g
TlVMTCkgewotICAgICAgICAgICAgICAgIG11dGV4X3VubG9jaygmcmFtZnNfbG9jayk7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIEVOT0VOVDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
ICAgICBwcmV2LT5ybl9uZXh0ID0gbnAtPnJuX25leHQ7Ci0gICAgfQotICAgIHJhbWZzX2ZyZWVf
bm9kZShucCk7Ci0KLSAgICBzZXRfdGltZXNfdG9fbm93KCYoZG5wLT5ybl9tdGltZSksICYoZG5w
LT5ybl9jdGltZSkpOwotCi0gICAgbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKLSAgICByZXR1
cm4gMDsKKwlzdHJ1Y3QgcmFtZnNfbm9kZSAqcHJldjsKKworCWlmIChkbnAtPnJuX2NoaWxkID09
IE5VTEwpCisJCXJldHVybiBFQlVTWTsKKworCW11dGV4X2xvY2soJnJhbWZzX2xvY2spOworCisJ
LyogVW5saW5rIGZyb20gdGhlIGRpcmVjdG9yeSBsaXN0ICovCisJaWYgKGRucC0+cm5fY2hpbGQg
PT0gbnApIHsKKwkJZG5wLT5ybl9jaGlsZCA9IG5wLT5ybl9uZXh0OworCX0gZWxzZSB7CisJCWZv
ciAocHJldiA9IGRucC0+cm5fY2hpbGQ7IHByZXYtPnJuX25leHQgIT0gbnA7CisJCQkgcHJldiA9
IHByZXYtPnJuX25leHQpIHsKKwkJCWlmIChwcmV2LT5ybl9uZXh0ID09IE5VTEwpIHsKKwkJCQlt
dXRleF91bmxvY2soJnJhbWZzX2xvY2spOworCQkJCXJldHVybiBFTk9FTlQ7CisJCQl9CisJCX0K
KwkJcHJldi0+cm5fbmV4dCA9IG5wLT5ybl9uZXh0OworCX0KKwlyYW1mc19mcmVlX25vZGUobnAp
OworCisJc2V0X3RpbWVzX3RvX25vdygmKGRucC0+cm5fbXRpbWUpLCAmKGRucC0+cm5fY3RpbWUp
KTsKKworCW11dGV4X3VubG9jaygmcmFtZnNfbG9jayk7CisJcmV0dXJuIDA7CiB9CiAKIHN0YXRp
YyBpbnQKIHJhbWZzX3JlbmFtZV9ub2RlKHN0cnVjdCByYW1mc19ub2RlICpucCwgY2hhciAqbmFt
ZSkKIHsKLSAgICBzaXplX3QgbGVuOwotICAgIGNoYXIgKnRtcDsKLQotICAgIGxlbiA9IHN0cmxl
bihuYW1lKTsKLSAgICBpZiAobGVuID4gTkFNRV9NQVgpIHsKLSAgICAgICAgcmV0dXJuIEVOQU1F
VE9PTE9ORzsKLSAgICB9Ci0gICAgaWYgKGxlbiA8PSBucC0+cm5fbmFtZWxlbikgewotICAgICAg
ICAvKiBSZXVzZSBjdXJyZW50IG5hbWUgYnVmZmVyICovCi0gICAgICAgIHN0cmxjcHkobnAtPnJu
X25hbWUsIG5hbWUsIG5wLT5ybl9uYW1lbGVuICsgMSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAg
LyogRXhwYW5kIG5hbWUgYnVmZmVyICovCi0gICAgICAgIHRtcCA9IChjaGFyICopIG1hbGxvYyhs
ZW4gKyAxKTsKLSAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIEVO
T01FTTsKLSAgICAgICAgc3RybGNweSh0bXAsIG5hbWUsIGxlbiArIDEpOwotICAgICAgICBmcmVl
KG5wLT5ybl9uYW1lKTsKLSAgICAgICAgbnAtPnJuX25hbWUgPSB0bXA7Ci0gICAgfQotICAgIG5w
LT5ybl9uYW1lbGVuID0gbGVuOwotICAgIHNldF90aW1lc190b19ub3coJihucC0+cm5fY3RpbWUp
KTsKLSAgICByZXR1cm4gMDsKKwlzaXplX3QgbGVuOworCWNoYXIgKnRtcDsKKworCWxlbiA9IHN0
cmxlbihuYW1lKTsKKwlpZiAobGVuID4gTkFNRV9NQVgpIHsKKwkJcmV0dXJuIEVOQU1FVE9PTE9O
RzsKKwl9CisJaWYgKGxlbiA8PSBucC0+cm5fbmFtZWxlbikgeworCQkvKiBSZXVzZSBjdXJyZW50
IG5hbWUgYnVmZmVyICovCisJCXN0cmxjcHkobnAtPnJuX25hbWUsIG5hbWUsIG5wLT5ybl9uYW1l
bGVuICsgMSk7CisJfSBlbHNlIHsKKwkJLyogRXhwYW5kIG5hbWUgYnVmZmVyICovCisJCXRtcCA9
IChjaGFyICopIG1hbGxvYyhsZW4gKyAxKTsKKwkJaWYgKHRtcCA9PSBOVUxMKQorCQkJcmV0dXJu
IEVOT01FTTsKKwkJc3RybGNweSh0bXAsIG5hbWUsIGxlbiArIDEpOworCQlmcmVlKG5wLT5ybl9u
YW1lKTsKKwkJbnAtPnJuX25hbWUgPSB0bXA7CisJfQorCW5wLT5ybl9uYW1lbGVuID0gbGVuOwor
CXNldF90aW1lc190b19ub3coJihucC0+cm5fY3RpbWUpKTsKKwlyZXR1cm4gMDsKIH0KIAogc3Rh
dGljIGludAogcmFtZnNfbG9va3VwKHN0cnVjdCB2bm9kZSAqZHZwLCBjaGFyICpuYW1lLCBzdHJ1
Y3Qgdm5vZGUgKip2cHApCiB7Ci0gICAgc3RydWN0IHJhbWZzX25vZGUgKm5wLCAqZG5wOwotICAg
IHN0cnVjdCB2bm9kZSAqdnA7Ci0gICAgc2l6ZV90IGxlbjsKLSAgICBpbnQgZm91bmQ7Ci0KLSAg
ICAqdnBwID0gTlVMTDsKLQotICAgIGlmICgqbmFtZSA9PSAnXDAnKQotICAgICAgICByZXR1cm4g
RU5PRU5UOwotCi0gICAgbXV0ZXhfbG9jaygmcmFtZnNfbG9jayk7Ci0KLSAgICBsZW4gPSBzdHJs
ZW4obmFtZSk7Ci0gICAgZG5wID0gKHJhbWZzX25vZGUgKikgZHZwLT52X2RhdGE7Ci0gICAgZm91
bmQgPSAwOwotICAgIGZvciAobnAgPSBkbnAtPnJuX2NoaWxkOyBucCAhPSBOVUxMOyBucCA9IG5w
LT5ybl9uZXh0KSB7Ci0gICAgICAgIGlmIChucC0+cm5fbmFtZWxlbiA9PSBsZW4gJiYKLSAgICAg
ICAgICAgIG1lbWNtcChuYW1lLCBucC0+cm5fbmFtZSwgbGVuKSA9PSAwKSB7Ci0gICAgICAgICAg
ICBmb3VuZCA9IDE7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICBp
ZiAoZm91bmQgPT0gMCkgewotICAgICAgICBtdXRleF91bmxvY2soJnJhbWZzX2xvY2spOwotICAg
ICAgICByZXR1cm4gRU5PRU5UOwotICAgIH0KLSAgICBpZiAodmdldChkdnAtPnZfbW91bnQsIGlu
b2RlX2NvdW50KyssICZ2cCkpIHsKLSAgICAgICAgLyogZm91bmQgaW4gY2FjaGUgKi8KLSAgICAg
ICAgKnZwcCA9IHZwOwotICAgICAgICBtdXRleF91bmxvY2soJnJhbWZzX2xvY2spOwotICAgICAg
ICByZXR1cm4gMDsKLSAgICB9Ci0gICAgaWYgKCF2cCkgewotICAgICAgICBtdXRleF91bmxvY2so
JnJhbWZzX2xvY2spOwotICAgICAgICByZXR1cm4gRU5PTUVNOwotICAgIH0KLSAgICB2cC0+dl9k
YXRhID0gbnA7Ci0gICAgdnAtPnZfbW9kZSA9IEFMTFBFUk1TOwotICAgIHZwLT52X3R5cGUgPSBu
cC0+cm5fdHlwZTsKLSAgICB2cC0+dl9zaXplID0gbnAtPnJuX3NpemU7Ci0KLSAgICBtdXRleF91
bmxvY2soJnJhbWZzX2xvY2spOwotCi0gICAgKnZwcCA9IHZwOwotCi0gICAgcmV0dXJuIDA7CisJ
c3RydWN0IHJhbWZzX25vZGUgKm5wLCAqZG5wOworCXN0cnVjdCB2bm9kZSAqdnA7CisJc2l6ZV90
IGxlbjsKKwlpbnQgZm91bmQ7CisKKwkqdnBwID0gTlVMTDsKKworCWlmICgqbmFtZSA9PSAnXDAn
KQorCQlyZXR1cm4gRU5PRU5UOworCisJbXV0ZXhfbG9jaygmcmFtZnNfbG9jayk7CisKKwlsZW4g
PSBzdHJsZW4obmFtZSk7CisJZG5wID0gKHJhbWZzX25vZGUgKikgZHZwLT52X2RhdGE7CisJZm91
bmQgPSAwOworCWZvciAobnAgPSBkbnAtPnJuX2NoaWxkOyBucCAhPSBOVUxMOyBucCA9IG5wLT5y
bl9uZXh0KSB7CisJCWlmIChucC0+cm5fbmFtZWxlbiA9PSBsZW4gJiYKKwkJCW1lbWNtcChuYW1l
LCBucC0+cm5fbmFtZSwgbGVuKSA9PSAwKSB7CisJCQlmb3VuZCA9IDE7CisJCQlicmVhazsKKwkJ
fQorCX0KKwlpZiAoZm91bmQgPT0gMCkgeworCQltdXRleF91bmxvY2soJnJhbWZzX2xvY2spOwor
CQlyZXR1cm4gRU5PRU5UOworCX0KKwlpZiAodmdldChkdnAtPnZfbW91bnQsIGlub2RlX2NvdW50
KyssICZ2cCkpIHsKKwkJLyogZm91bmQgaW4gY2FjaGUgKi8KKwkJKnZwcCA9IHZwOworCQltdXRl
eF91bmxvY2soJnJhbWZzX2xvY2spOworCQlyZXR1cm4gMDsKKwl9CisJaWYgKCF2cCkgeworCQlt
dXRleF91bmxvY2soJnJhbWZzX2xvY2spOworCQlyZXR1cm4gRU5PTUVNOworCX0KKwl2cC0+dl9k
YXRhID0gbnA7CisJdnAtPnZfbW9kZSA9IEFMTFBFUk1TOworCXZwLT52X3R5cGUgPSBucC0+cm5f
dHlwZTsKKwl2cC0+dl9zaXplID0gbnAtPnJuX3NpemU7CisKKwltdXRleF91bmxvY2soJnJhbWZz
X2xvY2spOworCisJKnZwcCA9IHZwOworCisJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQKIHJh
bWZzX21rZGlyKHN0cnVjdCB2bm9kZSAqZHZwLCBjaGFyICpuYW1lLCBtb2RlX3QgbW9kZSkKIHsK
LSAgICBzdHJ1Y3QgcmFtZnNfbm9kZSAqbnA7CisJc3RydWN0IHJhbWZzX25vZGUgKm5wOwogCi0g
ICAgRFBSSU5URigoIm1rZGlyICVzXG4iLCBuYW1lKSk7Ci0gICAgaWYgKHN0cmxlbihuYW1lKSA+
IE5BTUVfTUFYKSB7Ci0gICAgICAgIHJldHVybiBFTkFNRVRPT0xPTkc7Ci0gICAgfQorCURQUklO
VEYoKCJta2RpciAlc1xuIiwgbmFtZSkpOworCWlmIChzdHJsZW4obmFtZSkgPiBOQU1FX01BWCkg
eworCQlyZXR1cm4gRU5BTUVUT09MT05HOworCX0KIAotICAgIGlmICghU19JU0RJUihtb2RlKSkK
LSAgICAgICAgcmV0dXJuIEVJTlZBTDsKKwlpZiAoIVNfSVNESVIobW9kZSkpCisJCXJldHVybiBF
SU5WQUw7CiAKLSAgICBucCA9IChyYW1mc19ub2RlICopIHJhbWZzX2FkZF9ub2RlKChyYW1mc19u
b2RlICopIGR2cC0+dl9kYXRhLCBuYW1lLCBWRElSKTsKLSAgICBpZiAobnAgPT0gTlVMTCkKLSAg
ICAgICAgcmV0dXJuIEVOT01FTTsKLSAgICBucC0+cm5fc2l6ZSA9IDA7CisJbnAgPSAocmFtZnNf
bm9kZSAqKSByYW1mc19hZGRfbm9kZSgocmFtZnNfbm9kZSAqKSBkdnAtPnZfZGF0YSwgbmFtZSwg
VkRJUik7CisJaWYgKG5wID09IE5VTEwpCisJCXJldHVybiBFTk9NRU07CisJbnAtPnJuX3NpemUg
PSAwOwogCi0gICAgcmV0dXJuIDA7CisJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQKIHJhbWZz
X3N5bWxpbmsoc3RydWN0IHZub2RlICpkdnAsIGNoYXIgKm5hbWUsIGNoYXIgKmxpbmspCiB7Ci0g
ICAgaWYgKHN0cmxlbihuYW1lKSA+IE5BTUVfTUFYKSB7Ci0gICAgICAgIHJldHVybiBFTkFNRVRP
T0xPTkc7Ci0gICAgfQotICAgIGF1dG8gbnAgPSByYW1mc19hZGRfbm9kZSgocmFtZnNfbm9kZSAq
KSBkdnAtPnZfZGF0YSwgbmFtZSwgVkxOSyk7Ci0gICAgaWYgKG5wID09IE5VTEwpCi0gICAgICAg
IHJldHVybiBFTk9NRU07Ci0gICAgLy8gU2F2ZSB0aGUgbGluayB0YXJnZXQgd2l0aG91dCB0aGUg
ZmluYWwgbnVsbCwgYXMgcmVhZGxpbmsoKSB3YW50cyBpdC4KLSAgICBzaXplX3QgbGVuID0gc3Ry
bGVuKGxpbmspOwotICAgIG5wLT5ybl9idWYgPSBzdHJuZHVwKGxpbmssIGxlbik7Ci0gICAgbnAt
PnJuX2J1ZnNpemUgPSBucC0+cm5fc2l6ZSA9IGxlbjsKLQotICAgIHJldHVybiAwOworCWlmIChz
dHJsZW4obmFtZSkgPiBOQU1FX01BWCkgeworCQlyZXR1cm4gRU5BTUVUT09MT05HOworCX0KKwlh
dXRvIG5wID0gcmFtZnNfYWRkX25vZGUoKHJhbWZzX25vZGUgKikgZHZwLT52X2RhdGEsIG5hbWUs
IFZMTkspOworCWlmIChucCA9PSBOVUxMKQorCQlyZXR1cm4gRU5PTUVNOworCS8vIFNhdmUgdGhl
IGxpbmsgdGFyZ2V0IHdpdGhvdXQgdGhlIGZpbmFsIG51bGwsIGFzIHJlYWRsaW5rKCkgd2FudHMg
aXQuCisJc2l6ZV90IGxlbiA9IHN0cmxlbihsaW5rKTsKKwlucC0+cm5fYnVmID0gc3RybmR1cChs
aW5rLCBsZW4pOworCW5wLT5ybl9idWZzaXplID0gbnAtPnJuX3NpemUgPSBsZW47CisKKwlyZXR1
cm4gMDsKIH0KIAogc3RhdGljIGludAogcmFtZnNfcmVhZGxpbmsoc3RydWN0IHZub2RlICp2cCwg
c3RydWN0IHVpbyAqdWlvKQogewotICAgIHN0cnVjdCByYW1mc19ub2RlICpucCA9IChyYW1mc19u
b2RlICopIHZwLT52X2RhdGE7Ci0gICAgc2l6ZV90IGxlbjsKLQotICAgIGlmICh2cC0+dl90eXBl
ICE9IFZMTkspIHsKLSAgICAgICAgcmV0dXJuIEVJTlZBTDsKLSAgICB9Ci0gICAgaWYgKHVpby0+
dWlvX29mZnNldCA8IDApIHsKLSAgICAgICAgcmV0dXJuIEVJTlZBTDsKLSAgICB9Ci0gICAgaWYg
KHVpby0+dWlvX3Jlc2lkID09IDApIHsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIGlm
ICh1aW8tPnVpb19vZmZzZXQgPj0gKG9mZl90KSB2cC0+dl9zaXplKQotICAgICAgICByZXR1cm4g
MDsKLSAgICBpZiAodnAtPnZfc2l6ZSAtIHVpby0+dWlvX29mZnNldCA8IHVpby0+dWlvX3Jlc2lk
KQotICAgICAgICBsZW4gPSB2cC0+dl9zaXplIC0gdWlvLT51aW9fb2Zmc2V0OwotICAgIGVsc2UK
LSAgICAgICAgbGVuID0gdWlvLT51aW9fcmVzaWQ7Ci0KLSAgICBzZXRfdGltZXNfdG9fbm93KCAm
KG5wLT5ybl9hdGltZSkpOwotICAgIHJldHVybiB1aW9tb3ZlKG5wLT5ybl9idWYgKyB1aW8tPnVp
b19vZmZzZXQsIGxlbiwgdWlvKTsKKwlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSAocmFtZnNfbm9k
ZSAqKSB2cC0+dl9kYXRhOworCXNpemVfdCBsZW47CisKKwlpZiAodnAtPnZfdHlwZSAhPSBWTE5L
KSB7CisJCXJldHVybiBFSU5WQUw7CisJfQorCWlmICh1aW8tPnVpb19vZmZzZXQgPCAwKSB7CisJ
CXJldHVybiBFSU5WQUw7CisJfQorCWlmICh1aW8tPnVpb19yZXNpZCA9PSAwKSB7CisJCXJldHVy
biAwOworCX0KKwlpZiAodWlvLT51aW9fb2Zmc2V0ID49IChvZmZfdCkgdnAtPnZfc2l6ZSkKKwkJ
cmV0dXJuIDA7CisJaWYgKHZwLT52X3NpemUgLSB1aW8tPnVpb19vZmZzZXQgPCB1aW8tPnVpb19y
ZXNpZCkKKwkJbGVuID0gdnAtPnZfc2l6ZSAtIHVpby0+dWlvX29mZnNldDsKKwllbHNlCisJCWxl
biA9IHVpby0+dWlvX3Jlc2lkOworCisJc2V0X3RpbWVzX3RvX25vdyggJihucC0+cm5fYXRpbWUp
KTsKKwlyZXR1cm4gdWlvbW92ZShucC0+cm5fYnVmICsgdWlvLT51aW9fb2Zmc2V0LCBsZW4sIHVp
byk7CiB9CiAKIC8qIFJlbW92ZSBhIGRpcmVjdG9yeSAqLwogc3RhdGljIGludAogcmFtZnNfcm1k
aXIoc3RydWN0IHZub2RlICpkdnAsIHN0cnVjdCB2bm9kZSAqdnAsIGNoYXIgKm5hbWUpCiB7Ci0g
ICAgcmV0dXJuIHJhbWZzX3JlbW92ZV9ub2RlKChyYW1mc19ub2RlICopIGR2cC0+dl9kYXRhLCAo
cmFtZnNfbm9kZSAqKSB2cC0+dl9kYXRhKTsKKwlyZXR1cm4gcmFtZnNfcmVtb3ZlX25vZGUoKHJh
bWZzX25vZGUgKikgZHZwLT52X2RhdGEsIChyYW1mc19ub2RlICopIHZwLT52X2RhdGEpOwogfQog
CiAvKiBSZW1vdmUgYSBmaWxlICovCiBzdGF0aWMgaW50CiByYW1mc19yZW1vdmUoc3RydWN0IHZu
b2RlICpkdnAsIHN0cnVjdCB2bm9kZSAqdnAsIGNoYXIgKm5hbWUpCiB7Ci0gICAgRFBSSU5URigo
InJlbW92ZSAlcyBpbiAlc1xuIiwgbmFtZSwgZHZwLT52X3BhdGgpKTsKLSAgICByZXR1cm4gcmFt
ZnNfcmVtb3ZlX25vZGUoKHJhbWZzX25vZGUgKikgZHZwLT52X2RhdGEsIChyYW1mc19ub2RlICop
IHZwLT52X2RhdGEpOworCURQUklOVEYoKCJyZW1vdmUgJXMgaW4gJXNcbiIsIG5hbWUsIGR2cC0+
dl9wYXRoKSk7CisJcmV0dXJuIHJhbWZzX3JlbW92ZV9ub2RlKChyYW1mc19ub2RlICopIGR2cC0+
dl9kYXRhLCAocmFtZnNfbm9kZSAqKSB2cC0+dl9kYXRhKTsKIH0KIAogLyogVHJ1bmNhdGUgZmls
ZSAqLwogc3RhdGljIGludAogcmFtZnNfdHJ1bmNhdGUoc3RydWN0IHZub2RlICp2cCwgb2ZmX3Qg
bGVuZ3RoKQogewotICAgIHN0cnVjdCByYW1mc19ub2RlICpucDsKLSAgICB2b2lkICpuZXdfYnVm
OwotICAgIHNpemVfdCBuZXdfc2l6ZTsKLQotICAgIERQUklOVEYoKCJ0cnVuY2F0ZSAlcyBsZW5n
dGg9JWRcbiIsIHZwLT52X3BhdGgsIGxlbmd0aCkpOwotICAgIG5wID0gKHJhbWZzX25vZGUgKikg
dnAtPnZfZGF0YTsKLQotICAgIGlmIChsZW5ndGggPT0gMCkgewotICAgICAgICBpZiAobnAtPnJu
X2J1ZiAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBpZihucC0+cm5fb3duc19idWYpCi0gICAgICAg
ICAgICAgICAgZnJlZShucC0+cm5fYnVmKTsKLSAgICAgICAgICAgIG5wLT5ybl9idWYgPSBOVUxM
OwotICAgICAgICAgICAgbnAtPnJuX2J1ZnNpemUgPSAwOwotICAgICAgICB9Ci0gICAgfSBlbHNl
IGlmIChzaXplX3QobGVuZ3RoKSA+IG5wLT5ybl9idWZzaXplKSB7Ci0gICAgICAgIC8vIFhYWDog
dGhpcyBjb3VsZCB1c2UgYSBwYWdlIGxldmVsIGFsbG9jYXRvcgotICAgICAgICBuZXdfc2l6ZSA9
IHJvdW5kX3BhZ2UobGVuZ3RoKTsKLSAgICAgICAgbmV3X2J1ZiA9IG1hbGxvYyhuZXdfc2l6ZSk7
Ci0gICAgICAgIGlmICghbmV3X2J1ZikKLSAgICAgICAgICAgIHJldHVybiBFSU87Ci0gICAgICAg
IGlmIChucC0+cm5fc2l6ZSAhPSAwKSB7Ci0gICAgICAgICAgICBtZW1jcHkobmV3X2J1ZiwgbnAt
PnJuX2J1ZiwgdnAtPnZfc2l6ZSk7Ci0gICAgICAgICAgICBpZihucC0+cm5fb3duc19idWYpCi0g
ICAgICAgICAgICAgICAgZnJlZShucC0+cm5fYnVmKTsKLSAgICAgICAgfQotICAgICAgICBucC0+
cm5fYnVmID0gKGNoYXIgKikgbmV3X2J1ZjsKLSAgICAgICAgbnAtPnJuX2J1ZnNpemUgPSBuZXdf
c2l6ZTsKLSAgICAgICAgbnAtPnJuX293bnNfYnVmID0gdHJ1ZTsKLSAgICB9Ci0gICAgbnAtPnJu
X3NpemUgPSBsZW5ndGg7Ci0gICAgdnAtPnZfc2l6ZSA9IGxlbmd0aDsKLSAgICBzZXRfdGltZXNf
dG9fbm93KCYobnAtPnJuX210aW1lKSwgJihucC0+cm5fY3RpbWUpKTsKLSAgICByZXR1cm4gMDsK
KwlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnA7CisJdm9pZCAqbmV3X2J1ZjsKKwlzaXplX3QgbmV3X3Np
emU7CisKKwlEUFJJTlRGKCgidHJ1bmNhdGUgJXMgbGVuZ3RoPSVkXG4iLCB2cC0+dl9wYXRoLCBs
ZW5ndGgpKTsKKwlucCA9IChyYW1mc19ub2RlICopIHZwLT52X2RhdGE7CisKKwlpZiAobGVuZ3Ro
ID09IDApIHsKKwkJaWYgKG5wLT5ybl9idWYgIT0gTlVMTCkgeworCQkJaWYobnAtPnJuX293bnNf
YnVmKQorCQkJCWZyZWUobnAtPnJuX2J1Zik7CisJCQlucC0+cm5fYnVmID0gTlVMTDsKKwkJCW5w
LT5ybl9idWZzaXplID0gMDsKKwkJfQorCX0gZWxzZSBpZiAoc2l6ZV90KGxlbmd0aCkgPiBucC0+
cm5fYnVmc2l6ZSkgeworCQkvLyBYWFg6IHRoaXMgY291bGQgdXNlIGEgcGFnZSBsZXZlbCBhbGxv
Y2F0b3IKKwkJbmV3X3NpemUgPSByb3VuZF9wYWdlKGxlbmd0aCk7CisJCW5ld19idWYgPSBtYWxs
b2MobmV3X3NpemUpOworCQlpZiAoIW5ld19idWYpCisJCQlyZXR1cm4gRUlPOworCQlpZiAobnAt
PnJuX3NpemUgIT0gMCkgeworCQkJbWVtY3B5KG5ld19idWYsIG5wLT5ybl9idWYsIHZwLT52X3Np
emUpOworCQkJaWYobnAtPnJuX293bnNfYnVmKQorCQkJCWZyZWUobnAtPnJuX2J1Zik7CisJCX0K
KwkJbnAtPnJuX2J1ZiA9IChjaGFyICopIG5ld19idWY7CisJCW5wLT5ybl9idWZzaXplID0gbmV3
X3NpemU7CisJCW5wLT5ybl9vd25zX2J1ZiA9IHRydWU7CisJfQorCW5wLT5ybl9zaXplID0gbGVu
Z3RoOworCXZwLT52X3NpemUgPSBsZW5ndGg7CisJc2V0X3RpbWVzX3RvX25vdygmKG5wLT5ybl9t
dGltZSksICYobnAtPnJuX2N0aW1lKSk7CisJcmV0dXJuIDA7CiB9CiAKIC8qCkBAIC0zNjksMTY1
ICszNjksMTY1IEBAIHJhbWZzX3RydW5jYXRlKHN0cnVjdCB2bm9kZSAqdnAsIG9mZl90IGxlbmd0
aCkKIHN0YXRpYyBpbnQKIHJhbWZzX2NyZWF0ZShzdHJ1Y3Qgdm5vZGUgKmR2cCwgY2hhciAqbmFt
ZSwgbW9kZV90IG1vZGUpCiB7Ci0gICAgc3RydWN0IHJhbWZzX25vZGUgKm5wOworCXN0cnVjdCBy
YW1mc19ub2RlICpucDsKIAotICAgIGlmIChzdHJsZW4obmFtZSkgPiBOQU1FX01BWCkgewotICAg
ICAgICByZXR1cm4gRU5BTUVUT09MT05HOwotICAgIH0KKwlpZiAoc3RybGVuKG5hbWUpID4gTkFN
RV9NQVgpIHsKKwkJcmV0dXJuIEVOQU1FVE9PTE9ORzsKKwl9CiAKLSAgICBEUFJJTlRGKCgiY3Jl
YXRlICVzIGluICVzXG4iLCBuYW1lLCBkdnAtPnZfcGF0aCkpOwotICAgIGlmICghU19JU1JFRyht
b2RlKSkKLSAgICAgICAgcmV0dXJuIEVJTlZBTDsKKwlEUFJJTlRGKCgiY3JlYXRlICVzIGluICVz
XG4iLCBuYW1lLCBkdnAtPnZfcGF0aCkpOworCWlmICghU19JU1JFRyhtb2RlKSkKKwkJcmV0dXJu
IEVJTlZBTDsKIAotICAgIG5wID0gcmFtZnNfYWRkX25vZGUoKHJhbWZzX25vZGUgKikgZHZwLT52
X2RhdGEsIG5hbWUsIFZSRUcpOwotICAgIGlmIChucCA9PSBOVUxMKQotICAgICAgICByZXR1cm4g
RU5PTUVNOwotICAgIHJldHVybiAwOworCW5wID0gcmFtZnNfYWRkX25vZGUoKHJhbWZzX25vZGUg
KikgZHZwLT52X2RhdGEsIG5hbWUsIFZSRUcpOworCWlmIChucCA9PSBOVUxMKQorCQlyZXR1cm4g
RU5PTUVNOworCXJldHVybiAwOwogfQogCiBzdGF0aWMgaW50CiByYW1mc19yZWFkKHN0cnVjdCB2
bm9kZSAqdnAsIHN0cnVjdCBmaWxlICpmcCwgc3RydWN0IHVpbyAqdWlvLCBpbnQgaW9mbGFnKQog
ewotICAgIHN0cnVjdCByYW1mc19ub2RlICpucCA9IChyYW1mc19ub2RlICopIHZwLT52X2RhdGE7
Ci0gICAgc2l6ZV90IGxlbjsKLQotICAgIGlmICh2cC0+dl90eXBlID09IFZESVIpIHsKLSAgICAg
ICAgcmV0dXJuIEVJU0RJUjsKLSAgICB9Ci0gICAgaWYgKHZwLT52X3R5cGUgIT0gVlJFRykgewot
ICAgICAgICByZXR1cm4gRUlOVkFMOwotICAgIH0KLSAgICBpZiAodWlvLT51aW9fb2Zmc2V0IDwg
MCkgewotICAgICAgICByZXR1cm4gRUlOVkFMOwotICAgIH0KLSAgICBpZiAodWlvLT51aW9fcmVz
aWQgPT0gMCkgewotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBpZiAodWlvLT51aW9f
b2Zmc2V0ID49IChvZmZfdCkgdnAtPnZfc2l6ZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBp
ZiAodnAtPnZfc2l6ZSAtIHVpby0+dWlvX29mZnNldCA8IHVpby0+dWlvX3Jlc2lkKQotICAgICAg
ICBsZW4gPSB2cC0+dl9zaXplIC0gdWlvLT51aW9fb2Zmc2V0OwotICAgIGVsc2UKLSAgICAgICAg
bGVuID0gdWlvLT51aW9fcmVzaWQ7Ci0KLSAgICBzZXRfdGltZXNfdG9fbm93KCYobnAtPnJuX2F0
aW1lKSk7Ci0KLSAgICByZXR1cm4gdWlvbW92ZShucC0+cm5fYnVmICsgdWlvLT51aW9fb2Zmc2V0
LCBsZW4sIHVpbyk7CisJc3RydWN0IHJhbWZzX25vZGUgKm5wID0gKHJhbWZzX25vZGUgKikgdnAt
PnZfZGF0YTsKKwlzaXplX3QgbGVuOworCisJaWYgKHZwLT52X3R5cGUgPT0gVkRJUikgeworCQly
ZXR1cm4gRUlTRElSOworCX0KKwlpZiAodnAtPnZfdHlwZSAhPSBWUkVHKSB7CisJCXJldHVybiBF
SU5WQUw7CisJfQorCWlmICh1aW8tPnVpb19vZmZzZXQgPCAwKSB7CisJCXJldHVybiBFSU5WQUw7
CisJfQorCWlmICh1aW8tPnVpb19yZXNpZCA9PSAwKSB7CisJCXJldHVybiAwOworCX0KKworCWlm
ICh1aW8tPnVpb19vZmZzZXQgPj0gKG9mZl90KSB2cC0+dl9zaXplKQorCQlyZXR1cm4gMDsKKwor
CWlmICh2cC0+dl9zaXplIC0gdWlvLT51aW9fb2Zmc2V0IDwgdWlvLT51aW9fcmVzaWQpCisJCWxl
biA9IHZwLT52X3NpemUgLSB1aW8tPnVpb19vZmZzZXQ7CisJZWxzZQorCQlsZW4gPSB1aW8tPnVp
b19yZXNpZDsKKworCXNldF90aW1lc190b19ub3coJihucC0+cm5fYXRpbWUpKTsKKworCXJldHVy
biB1aW9tb3ZlKG5wLT5ybl9idWYgKyB1aW8tPnVpb19vZmZzZXQsIGxlbiwgdWlvKTsKIH0KIAog
aW50CiByYW1mc19zZXRfZmlsZV9kYXRhKHN0cnVjdCB2bm9kZSAqdnAsIGNvbnN0IHZvaWQgKmRh
dGEsIHNpemVfdCBzaXplKQogewotICAgIHN0cnVjdCByYW1mc19ub2RlICpucCA9IChyYW1mc19u
b2RlICopIHZwLT52X2RhdGE7Ci0KLSAgICBpZiAodnAtPnZfdHlwZSA9PSBWRElSKSB7Ci0gICAg
ICAgIHJldHVybiBFSVNESVI7Ci0gICAgfQotICAgIGlmICh2cC0+dl90eXBlICE9IFZSRUcpIHsK
LSAgICAgICAgcmV0dXJuIEVJTlZBTDsKLSAgICB9Ci0gICAgaWYgKG5wLT5ybl9idWYpIHsKLSAg
ICAgICAgcmV0dXJuIEVJTlZBTDsKLSAgICB9Ci0KLSAgICBucC0+cm5fYnVmID0gKGNoYXIgKikg
ZGF0YTsKLSAgICBucC0+cm5fYnVmc2l6ZSA9IHNpemU7Ci0gICAgbnAtPnJuX3NpemUgPSBzaXpl
OwotICAgIHZwLT52X3NpemUgPSBzaXplOwotICAgIG5wLT5ybl9vd25zX2J1ZiA9IGZhbHNlOwot
Ci0gICAgcmV0dXJuIDA7CisJc3RydWN0IHJhbWZzX25vZGUgKm5wID0gKHJhbWZzX25vZGUgKikg
dnAtPnZfZGF0YTsKKworCWlmICh2cC0+dl90eXBlID09IFZESVIpIHsKKwkJcmV0dXJuIEVJU0RJ
UjsKKwl9CisJaWYgKHZwLT52X3R5cGUgIT0gVlJFRykgeworCQlyZXR1cm4gRUlOVkFMOworCX0K
KwlpZiAobnAtPnJuX2J1ZikgeworCQlyZXR1cm4gRUlOVkFMOworCX0KKworCW5wLT5ybl9idWYg
PSAoY2hhciAqKSBkYXRhOworCW5wLT5ybl9idWZzaXplID0gc2l6ZTsKKwlucC0+cm5fc2l6ZSA9
IHNpemU7CisJdnAtPnZfc2l6ZSA9IHNpemU7CisJbnAtPnJuX293bnNfYnVmID0gZmFsc2U7CisK
KwlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGludAogcmFtZnNfd3JpdGUoc3RydWN0IHZub2RlICp2
cCwgc3RydWN0IHVpbyAqdWlvLCBpbnQgaW9mbGFnKQogewotICAgIHN0cnVjdCByYW1mc19ub2Rl
ICpucCA9IChyYW1mc19ub2RlICopIHZwLT52X2RhdGE7Ci0KLSAgICBpZiAodnAtPnZfdHlwZSA9
PSBWRElSKSB7Ci0gICAgICAgIHJldHVybiBFSVNESVI7Ci0gICAgfQotICAgIGlmICh2cC0+dl90
eXBlICE9IFZSRUcpIHsKLSAgICAgICAgcmV0dXJuIEVJTlZBTDsKLSAgICB9Ci0gICAgaWYgKHVp
by0+dWlvX29mZnNldCA8IDApIHsKLSAgICAgICAgcmV0dXJuIEVJTlZBTDsKLSAgICB9Ci0gICAg
aWYgKHVpby0+dWlvX29mZnNldCA+PSBMT05HX01BWCkgewotICAgICAgICByZXR1cm4gRUZCSUc7
Ci0gICAgfQotICAgIGlmICh1aW8tPnVpb19yZXNpZCA9PSAwKSB7Ci0gICAgICAgIHJldHVybiAw
OwotICAgIH0KLQotICAgIGlmIChpb2ZsYWcgJiBJT19BUFBFTkQpCi0gICAgICAgIHVpby0+dWlv
X29mZnNldCA9IG5wLT5ybl9zaXplOwotCi0gICAgaWYgKHNpemVfdCh1aW8tPnVpb19vZmZzZXQg
KyB1aW8tPnVpb19yZXNpZCkgPiAoc2l6ZV90KSB2cC0+dl9zaXplKSB7Ci0gICAgICAgIC8qIEV4
cGFuZCB0aGUgZmlsZSBzaXplIGJlZm9yZSB3cml0aW5nIHRvIGl0ICovCi0gICAgICAgIG9mZl90
IGVuZF9wb3MgPSB1aW8tPnVpb19vZmZzZXQgKyB1aW8tPnVpb19yZXNpZDsKLSAgICAgICAgaWYg
KGVuZF9wb3MgPiAob2ZmX3QpIG5wLT5ybl9idWZzaXplKSB7Ci0gICAgICAgICAgICAvLyBYWFg6
IHRoaXMgY291bGQgdXNlIGEgcGFnZSBsZXZlbCBhbGxvY2F0b3IKLSAgICAgICAgICAgIHNpemVf
dCBuZXdfc2l6ZSA9IHJvdW5kX3BhZ2UoZW5kX3Bvcyk7Ci0gICAgICAgICAgICB2b2lkICpuZXdf
YnVmID0gbWFsbG9jKG5ld19zaXplKTsKLSAgICAgICAgICAgIGlmICghbmV3X2J1ZikKLSAgICAg
ICAgICAgICAgICByZXR1cm4gRUlPOwotICAgICAgICAgICAgaWYgKG5wLT5ybl9zaXplICE9IDAp
IHsKLSAgICAgICAgICAgICAgICBtZW1jcHkobmV3X2J1ZiwgbnAtPnJuX2J1ZiwgdnAtPnZfc2l6
ZSk7Ci0gICAgICAgICAgICAgICAgaWYobnAtPnJuX293bnNfYnVmKQotICAgICAgICAgICAgICAg
ICAgICBmcmVlKG5wLT5ybl9idWYpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbnAtPnJu
X2J1ZiA9IChjaGFyICopIG5ld19idWY7Ci0gICAgICAgICAgICBucC0+cm5fYnVmc2l6ZSA9IG5l
d19zaXplOwotICAgICAgICB9Ci0gICAgICAgIG5wLT5ybl9zaXplID0gZW5kX3BvczsKLSAgICAg
ICAgdnAtPnZfc2l6ZSA9IGVuZF9wb3M7Ci0gICAgICAgIG5wLT5ybl9vd25zX2J1ZiA9IHRydWU7
Ci0gICAgfQotCi0gICAgc2V0X3RpbWVzX3RvX25vdygmKG5wLT5ybl9tdGltZSksICYobnAtPnJu
X2N0aW1lKSk7Ci0gICAgcmV0dXJuIHVpb21vdmUobnAtPnJuX2J1ZiArIHVpby0+dWlvX29mZnNl
dCwgdWlvLT51aW9fcmVzaWQsIHVpbyk7CisJc3RydWN0IHJhbWZzX25vZGUgKm5wID0gKHJhbWZz
X25vZGUgKikgdnAtPnZfZGF0YTsKKworCWlmICh2cC0+dl90eXBlID09IFZESVIpIHsKKwkJcmV0
dXJuIEVJU0RJUjsKKwl9CisJaWYgKHZwLT52X3R5cGUgIT0gVlJFRykgeworCQlyZXR1cm4gRUlO
VkFMOworCX0KKwlpZiAodWlvLT51aW9fb2Zmc2V0IDwgMCkgeworCQlyZXR1cm4gRUlOVkFMOwor
CX0KKwlpZiAodWlvLT51aW9fb2Zmc2V0ID49IExPTkdfTUFYKSB7CisJCXJldHVybiBFRkJJRzsK
Kwl9CisJaWYgKHVpby0+dWlvX3Jlc2lkID09IDApIHsKKwkJcmV0dXJuIDA7CisJfQorCisJaWYg
KGlvZmxhZyAmIElPX0FQUEVORCkKKwkJdWlvLT51aW9fb2Zmc2V0ID0gbnAtPnJuX3NpemU7CisK
KwlpZiAoc2l6ZV90KHVpby0+dWlvX29mZnNldCArIHVpby0+dWlvX3Jlc2lkKSA+IChzaXplX3Qp
IHZwLT52X3NpemUpIHsKKwkJLyogRXhwYW5kIHRoZSBmaWxlIHNpemUgYmVmb3JlIHdyaXRpbmcg
dG8gaXQgKi8KKwkJb2ZmX3QgZW5kX3BvcyA9IHVpby0+dWlvX29mZnNldCArIHVpby0+dWlvX3Jl
c2lkOworCQlpZiAoZW5kX3BvcyA+IChvZmZfdCkgbnAtPnJuX2J1ZnNpemUpIHsKKwkJCS8vIFhY
WDogdGhpcyBjb3VsZCB1c2UgYSBwYWdlIGxldmVsIGFsbG9jYXRvcgorCQkJc2l6ZV90IG5ld19z
aXplID0gcm91bmRfcGFnZShlbmRfcG9zKTsKKwkJCXZvaWQgKm5ld19idWYgPSBtYWxsb2MobmV3
X3NpemUpOworCQkJaWYgKCFuZXdfYnVmKQorCQkJCXJldHVybiBFSU87CisJCQlpZiAobnAtPnJu
X3NpemUgIT0gMCkgeworCQkJCW1lbWNweShuZXdfYnVmLCBucC0+cm5fYnVmLCB2cC0+dl9zaXpl
KTsKKwkJCQlpZihucC0+cm5fb3duc19idWYpCisJCQkJCWZyZWUobnAtPnJuX2J1Zik7CisJCQl9
CisJCQlucC0+cm5fYnVmID0gKGNoYXIgKikgbmV3X2J1ZjsKKwkJCW5wLT5ybl9idWZzaXplID0g
bmV3X3NpemU7CisJCX0KKwkJbnAtPnJuX3NpemUgPSBlbmRfcG9zOworCQl2cC0+dl9zaXplID0g
ZW5kX3BvczsKKwkJbnAtPnJuX293bnNfYnVmID0gdHJ1ZTsKKwl9CisKKwlzZXRfdGltZXNfdG9f
bm93KCYobnAtPnJuX210aW1lKSwgJihucC0+cm5fY3RpbWUpKTsKKwlyZXR1cm4gdWlvbW92ZShu
cC0+cm5fYnVmICsgdWlvLT51aW9fb2Zmc2V0LCB1aW8tPnVpb19yZXNpZCwgdWlvKTsKIH0KIAog
c3RhdGljIGludAogcmFtZnNfcmVuYW1lKHN0cnVjdCB2bm9kZSAqZHZwMSwgc3RydWN0IHZub2Rl
ICp2cDEsIGNoYXIgKm5hbWUxLAotICAgICAgICAgICAgIHN0cnVjdCB2bm9kZSAqZHZwMiwgc3Ry
dWN0IHZub2RlICp2cDIsIGNoYXIgKm5hbWUyKQorCQkJIHN0cnVjdCB2bm9kZSAqZHZwMiwgc3Ry
dWN0IHZub2RlICp2cDIsIGNoYXIgKm5hbWUyKQogewotICAgIHN0cnVjdCByYW1mc19ub2RlICpu
cCwgKm9sZF9ucDsKLSAgICBpbnQgZXJyb3I7Ci0KLSAgICBpZiAodnAyKSB7Ci0gICAgICAgIC8q
IFJlbW92ZSBkZXN0aW5hdGlvbiBmaWxlLCBmaXJzdCAqLwotICAgICAgICBlcnJvciA9IHJhbWZz
X3JlbW92ZV9ub2RlKChyYW1mc19ub2RlICopIGR2cDItPnZfZGF0YSwgKHJhbWZzX25vZGUgKikg
dnAyLT52X2RhdGEpOwotICAgICAgICBpZiAoZXJyb3IpCi0gICAgICAgICAgICByZXR1cm4gZXJy
b3I7Ci0gICAgfQotICAgIC8qIFNhbWUgZGlyZWN0b3J5ID8gKi8KLSAgICBpZiAoZHZwMSA9PSBk
dnAyKSB7Ci0gICAgICAgIC8qIENoYW5nZSB0aGUgbmFtZSBvZiBleGlzdGluZyBmaWxlICovCi0g
ICAgICAgIGVycm9yID0gcmFtZnNfcmVuYW1lX25vZGUoKHJhbWZzX25vZGUgKikgdnAxLT52X2Rh
dGEsIG5hbWUyKTsKLSAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAgICAgcmV0dXJuIGVycm9y
OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8qIENyZWF0ZSBuZXcgZmlsZSBvciBkaXJlY3Rvcnkg
Ki8KLSAgICAgICAgb2xkX25wID0gKHJhbWZzX25vZGUgKikgdnAxLT52X2RhdGE7Ci0gICAgICAg
IG5wID0gcmFtZnNfYWRkX25vZGUoKHJhbWZzX25vZGUgKikgZHZwMi0+dl9kYXRhLCBuYW1lMiwg
b2xkX25wLT5ybl90eXBlKTsKLSAgICAgICAgaWYgKG5wID09IE5VTEwpCi0gICAgICAgICAgICBy
ZXR1cm4gRU5PTUVNOwotCi0gICAgICAgIGlmIChvbGRfbnAtPnJuX2J1ZikgewotICAgICAgICAg
ICAgLyogQ29weSBmaWxlIGRhdGEgKi8KLSAgICAgICAgICAgIG5wLT5ybl9idWYgPSBvbGRfbnAt
PnJuX2J1ZjsKLSAgICAgICAgICAgIG5wLT5ybl9zaXplID0gb2xkX25wLT5ybl9zaXplOwotICAg
ICAgICAgICAgbnAtPnJuX2J1ZnNpemUgPSBvbGRfbnAtPnJuX2J1ZnNpemU7Ci0gICAgICAgICAg
ICBvbGRfbnAtPnJuX2J1ZiA9IE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgLyogUmVtb3ZlIHNv
dXJjZSBmaWxlICovCi0gICAgICAgIHJhbWZzX3JlbW92ZV9ub2RlKChyYW1mc19ub2RlICopIGR2
cDEtPnZfZGF0YSwgKHJhbWZzX25vZGUgKikgdnAxLT52X2RhdGEpOwotICAgIH0KLSAgICByZXR1
cm4gMDsKKwlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAsICpvbGRfbnA7CisJaW50IGVycm9yOworCisJ
aWYgKHZwMikgeworCQkvKiBSZW1vdmUgZGVzdGluYXRpb24gZmlsZSwgZmlyc3QgKi8KKwkJZXJy
b3IgPSByYW1mc19yZW1vdmVfbm9kZSgocmFtZnNfbm9kZSAqKSBkdnAyLT52X2RhdGEsIChyYW1m
c19ub2RlICopIHZwMi0+dl9kYXRhKTsKKwkJaWYgKGVycm9yKQorCQkJcmV0dXJuIGVycm9yOwor
CX0KKwkvKiBTYW1lIGRpcmVjdG9yeSA/ICovCisJaWYgKGR2cDEgPT0gZHZwMikgeworCQkvKiBD
aGFuZ2UgdGhlIG5hbWUgb2YgZXhpc3RpbmcgZmlsZSAqLworCQllcnJvciA9IHJhbWZzX3JlbmFt
ZV9ub2RlKChyYW1mc19ub2RlICopIHZwMS0+dl9kYXRhLCBuYW1lMik7CisJCWlmIChlcnJvcikK
KwkJCXJldHVybiBlcnJvcjsKKwl9IGVsc2UgeworCQkvKiBDcmVhdGUgbmV3IGZpbGUgb3IgZGly
ZWN0b3J5ICovCisJCW9sZF9ucCA9IChyYW1mc19ub2RlICopIHZwMS0+dl9kYXRhOworCQlucCA9
IHJhbWZzX2FkZF9ub2RlKChyYW1mc19ub2RlICopIGR2cDItPnZfZGF0YSwgbmFtZTIsIG9sZF9u
cC0+cm5fdHlwZSk7CisJCWlmIChucCA9PSBOVUxMKQorCQkJcmV0dXJuIEVOT01FTTsKKworCQlp
ZiAob2xkX25wLT5ybl9idWYpIHsKKwkJCS8qIENvcHkgZmlsZSBkYXRhICovCisJCQlucC0+cm5f
YnVmID0gb2xkX25wLT5ybl9idWY7CisJCQlucC0+cm5fc2l6ZSA9IG9sZF9ucC0+cm5fc2l6ZTsK
KwkJCW5wLT5ybl9idWZzaXplID0gb2xkX25wLT5ybl9idWZzaXplOworCQkJb2xkX25wLT5ybl9i
dWYgPSBOVUxMOworCQl9CisJCS8qIFJlbW92ZSBzb3VyY2UgZmlsZSAqLworCQlyYW1mc19yZW1v
dmVfbm9kZSgocmFtZnNfbm9kZSAqKSBkdnAxLT52X2RhdGEsIChyYW1mc19ub2RlICopIHZwMS0+
dl9kYXRhKTsKKwl9CisJcmV0dXJuIDA7CiB9CiAKIC8qCkBAIC01MzYsOTcgKzUzNiw5NyBAQCBy
YW1mc19yZW5hbWUoc3RydWN0IHZub2RlICpkdnAxLCBzdHJ1Y3Qgdm5vZGUgKnZwMSwgY2hhciAq
bmFtZTEsCiBzdGF0aWMgaW50CiByYW1mc19yZWFkZGlyKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVj
dCBmaWxlICpmcCwgc3RydWN0IGRpcmVudCAqZGlyKQogewotICAgIHN0cnVjdCByYW1mc19ub2Rl
ICpucCwgKmRucDsKLSAgICBpbnQgaTsKLQotICAgIG11dGV4X2xvY2soJnJhbWZzX2xvY2spOwot
Ci0gICAgc2V0X3RpbWVzX3RvX25vdygmKCgocmFtZnNfbm9kZSAqKSB2cC0+dl9kYXRhKS0+cm5f
YXRpbWUpKTsKLQotICAgIGlmIChmcC0+Zl9vZmZzZXQgPT0gMCkgewotICAgICAgICBkaXItPmRf
dHlwZSA9IERUX0RJUjsKLSAgICAgICAgc3RybGNweSgoY2hhciAqKSAmZGlyLT5kX25hbWUsICIu
Iiwgc2l6ZW9mKGRpci0+ZF9uYW1lKSk7Ci0gICAgfSBlbHNlIGlmIChmcC0+Zl9vZmZzZXQgPT0g
MSkgewotICAgICAgICBkaXItPmRfdHlwZSA9IERUX0RJUjsKLSAgICAgICAgc3RybGNweSgoY2hh
ciAqKSAmZGlyLT5kX25hbWUsICIuLiIsIHNpemVvZihkaXItPmRfbmFtZSkpOwotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIGRucCA9IChyYW1mc19ub2RlICopIHZwLT52X2RhdGE7Ci0gICAgICAgIG5w
ID0gZG5wLT5ybl9jaGlsZDsKLSAgICAgICAgaWYgKG5wID09IE5VTEwpIHsKLSAgICAgICAgICAg
IG11dGV4X3VubG9jaygmcmFtZnNfbG9jayk7Ci0gICAgICAgICAgICByZXR1cm4gRU5PRU5UOwot
ICAgICAgICB9Ci0KLSAgICAgICAgZm9yIChpID0gMDsgaSAhPSAoZnAtPmZfb2Zmc2V0IC0gMik7
IGkrKykgewotICAgICAgICAgICAgbnAgPSBucC0+cm5fbmV4dDsKLSAgICAgICAgICAgIGlmIChu
cCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsK
LSAgICAgICAgICAgICAgICByZXR1cm4gRU5PRU5UOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgICAgIGlmIChucC0+cm5fdHlwZSA9PSBWRElSKQotICAgICAgICAgICAgZGlyLT5kX3R5
cGUgPSBEVF9ESVI7Ci0gICAgICAgIGVsc2UgaWYgKG5wLT5ybl90eXBlID09IFZMTkspCi0gICAg
ICAgICAgICBkaXItPmRfdHlwZSA9IERUX0xOSzsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
ZGlyLT5kX3R5cGUgPSBEVF9SRUc7Ci0gICAgICAgIHN0cmxjcHkoKGNoYXIgKikgJmRpci0+ZF9u
YW1lLCBucC0+cm5fbmFtZSwKLSAgICAgICAgICAgICAgICBzaXplb2YoZGlyLT5kX25hbWUpKTsK
LSAgICB9Ci0gICAgZGlyLT5kX2ZpbGVubyA9IGZwLT5mX29mZnNldDsKKwlzdHJ1Y3QgcmFtZnNf
bm9kZSAqbnAsICpkbnA7CisJaW50IGk7CisKKwltdXRleF9sb2NrKCZyYW1mc19sb2NrKTsKKwor
CXNldF90aW1lc190b19ub3coJigoKHJhbWZzX25vZGUgKikgdnAtPnZfZGF0YSktPnJuX2F0aW1l
KSk7CisKKwlpZiAoZnAtPmZfb2Zmc2V0ID09IDApIHsKKwkJZGlyLT5kX3R5cGUgPSBEVF9ESVI7
CisJCXN0cmxjcHkoKGNoYXIgKikgJmRpci0+ZF9uYW1lLCAiLiIsIHNpemVvZihkaXItPmRfbmFt
ZSkpOworCX0gZWxzZSBpZiAoZnAtPmZfb2Zmc2V0ID09IDEpIHsKKwkJZGlyLT5kX3R5cGUgPSBE
VF9ESVI7CisJCXN0cmxjcHkoKGNoYXIgKikgJmRpci0+ZF9uYW1lLCAiLi4iLCBzaXplb2YoZGly
LT5kX25hbWUpKTsKKwl9IGVsc2UgeworCQlkbnAgPSAocmFtZnNfbm9kZSAqKSB2cC0+dl9kYXRh
OworCQlucCA9IGRucC0+cm5fY2hpbGQ7CisJCWlmIChucCA9PSBOVUxMKSB7CisJCQltdXRleF91
bmxvY2soJnJhbWZzX2xvY2spOworCQkJcmV0dXJuIEVOT0VOVDsKKwkJfQorCisJCWZvciAoaSA9
IDA7IGkgIT0gKGZwLT5mX29mZnNldCAtIDIpOyBpKyspIHsKKwkJCW5wID0gbnAtPnJuX25leHQ7
CisJCQlpZiAobnAgPT0gTlVMTCkgeworCQkJCW11dGV4X3VubG9jaygmcmFtZnNfbG9jayk7CisJ
CQkJcmV0dXJuIEVOT0VOVDsKKwkJCX0KKwkJfQorCQlpZiAobnAtPnJuX3R5cGUgPT0gVkRJUikK
KwkJCWRpci0+ZF90eXBlID0gRFRfRElSOworCQllbHNlIGlmIChucC0+cm5fdHlwZSA9PSBWTE5L
KQorCQkJZGlyLT5kX3R5cGUgPSBEVF9MTks7CisJCWVsc2UKKwkJCWRpci0+ZF90eXBlID0gRFRf
UkVHOworCQlzdHJsY3B5KChjaGFyICopICZkaXItPmRfbmFtZSwgbnAtPnJuX25hbWUsCisJCQkJ
c2l6ZW9mKGRpci0+ZF9uYW1lKSk7CisJfQorCWRpci0+ZF9maWxlbm8gPSBmcC0+Zl9vZmZzZXQ7
CiAvLwlkaXItPmRfbmFtZWxlbiA9IHN0cmxlbihkaXItPmRfbmFtZSk7CiAKLSAgICBmcC0+Zl9v
ZmZzZXQrKzsKKwlmcC0+Zl9vZmZzZXQrKzsKIAotICAgIG11dGV4X3VubG9jaygmcmFtZnNfbG9j
ayk7Ci0gICAgcmV0dXJuIDA7CisJbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKKwlyZXR1cm4g
MDsKIH0KIAogaW50CiByYW1mc19pbml0KHZvaWQpCiB7Ci0gICAgcmV0dXJuIDA7CisJcmV0dXJu
IDA7CiB9CiAKIHN0YXRpYyBpbnQKIHJhbWZzX2dldGF0dHIoc3RydWN0IHZub2RlICp2bm9kZSwg
c3RydWN0IHZhdHRyICphdHRyKQogewotICAgIGF0dHItPnZhX25vZGVpZCA9IHZub2RlLT52X2lu
bzsKLSAgICBhdHRyLT52YV9zaXplID0gdm5vZGUtPnZfc2l6ZTsKKwlhdHRyLT52YV9ub2RlaWQg
PSB2bm9kZS0+dl9pbm87CisJYXR0ci0+dmFfc2l6ZSA9IHZub2RlLT52X3NpemU7CiAKLSAgICBz
dHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSAocmFtZnNfbm9kZSAqKSB2bm9kZS0+dl9kYXRhOwotICAg
IGF0dHItPnZhX3R5cGUgPSAodnR5cGUpIG5wLT5ybl90eXBlOworCXN0cnVjdCByYW1mc19ub2Rl
ICpucCA9IChyYW1mc19ub2RlICopIHZub2RlLT52X2RhdGE7CisJYXR0ci0+dmFfdHlwZSA9ICh2
dHlwZSkgbnAtPnJuX3R5cGU7CiAKLSAgICBtZW1jcHkoJihhdHRyLT52YV9hdGltZSksICYobnAt
PnJuX2F0aW1lKSwgc2l6ZW9mKHN0cnVjdCB0aW1lc3BlYykpOwotICAgIG1lbWNweSgmKGF0dHIt
PnZhX2N0aW1lKSwgJihucC0+cm5fY3RpbWUpLCBzaXplb2Yoc3RydWN0IHRpbWVzcGVjKSk7Ci0g
ICAgbWVtY3B5KCYoYXR0ci0+dmFfbXRpbWUpLCAmKG5wLT5ybl9tdGltZSksIHNpemVvZihzdHJ1
Y3QgdGltZXNwZWMpKTsKKwltZW1jcHkoJihhdHRyLT52YV9hdGltZSksICYobnAtPnJuX2F0aW1l
KSwgc2l6ZW9mKHN0cnVjdCB0aW1lc3BlYykpOworCW1lbWNweSgmKGF0dHItPnZhX2N0aW1lKSwg
JihucC0+cm5fY3RpbWUpLCBzaXplb2Yoc3RydWN0IHRpbWVzcGVjKSk7CisJbWVtY3B5KCYoYXR0
ci0+dmFfbXRpbWUpLCAmKG5wLT5ybl9tdGltZSksIHNpemVvZihzdHJ1Y3QgdGltZXNwZWMpKTsK
IAotICAgIGF0dHItPnZhX21vZGUgPSBucC0+cm5fbW9kZTsKKwlhdHRyLT52YV9tb2RlID0gbnAt
PnJuX21vZGU7CiAKLSAgICByZXR1cm4gMDsKKwlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGludAog
cmFtZnNfc2V0YXR0cihzdHJ1Y3Qgdm5vZGUgKnZub2RlLCBzdHJ1Y3QgdmF0dHIgKmF0dHIpIHsK
LSAgICBzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSAocmFtZnNfbm9kZSAqKSB2bm9kZS0+dl9kYXRh
OworCXN0cnVjdCByYW1mc19ub2RlICpucCA9IChyYW1mc19ub2RlICopIHZub2RlLT52X2RhdGE7
CiAKLSAgICBpZiAoYXR0ci0+dmFfbWFzayAmIEFUX0FUSU1FKSB7Ci0gICAgICAgIG1lbWNweSgm
KG5wLT5ybl9hdGltZSksICYoYXR0ci0+dmFfYXRpbWUpLCBzaXplb2Yoc3RydWN0IHRpbWVzcGVj
KSk7Ci0gICAgfQorCWlmIChhdHRyLT52YV9tYXNrICYgQVRfQVRJTUUpIHsKKwkJbWVtY3B5KCYo
bnAtPnJuX2F0aW1lKSwgJihhdHRyLT52YV9hdGltZSksIHNpemVvZihzdHJ1Y3QgdGltZXNwZWMp
KTsKKwl9CiAKLSAgICBpZiAoYXR0ci0+dmFfbWFzayAmIEFUX0NUSU1FKSB7Ci0gICAgICAgIG1l
bWNweSgmKG5wLT5ybl9jdGltZSksICYoYXR0ci0+dmFfY3RpbWUpLCBzaXplb2Yoc3RydWN0IHRp
bWVzcGVjKSk7Ci0gICAgfQorCWlmIChhdHRyLT52YV9tYXNrICYgQVRfQ1RJTUUpIHsKKwkJbWVt
Y3B5KCYobnAtPnJuX2N0aW1lKSwgJihhdHRyLT52YV9jdGltZSksIHNpemVvZihzdHJ1Y3QgdGlt
ZXNwZWMpKTsKKwl9CiAKLSAgICBpZiAoYXR0ci0+dmFfbWFzayAmIEFUX01USU1FKSB7Ci0gICAg
ICAgIG1lbWNweSgmKG5wLT5ybl9tdGltZSksICYoYXR0ci0+dmFfbXRpbWUpLCBzaXplb2Yoc3Ry
dWN0IHRpbWVzcGVjKSk7Ci0gICAgfQorCWlmIChhdHRyLT52YV9tYXNrICYgQVRfTVRJTUUpIHsK
KwkJbWVtY3B5KCYobnAtPnJuX210aW1lKSwgJihhdHRyLT52YV9tdGltZSksIHNpemVvZihzdHJ1
Y3QgdGltZXNwZWMpKTsKKwl9CiAKLSAgICBpZiAoYXR0ci0+dmFfbWFzayAmIEFUX01PREUpIHsK
LSAgICAgICAgbnAtPnJuX21vZGUgPSBhdHRyLT52YV9tb2RlOwotICAgIH0KKwlpZiAoYXR0ci0+
dmFfbWFzayAmIEFUX01PREUpIHsKKwkJbnAtPnJuX21vZGUgPSBhdHRyLT52YV9tb2RlOworCX0K
IAotICAgIHJldHVybiAwOworCXJldHVybiAwOwogfQogCiAjZGVmaW5lIHJhbWZzX29wZW4gICAg
ICAoKHZub3Bfb3Blbl90KXZvcF9udWxsb3ApCkBAIC02NDIsMjggKzY0MiwyOCBAQCByYW1mc19z
ZXRhdHRyKHN0cnVjdCB2bm9kZSAqdm5vZGUsIHN0cnVjdCB2YXR0ciAqYXR0cikgewogICogdm5v
ZGUgb3BlcmF0aW9ucwogICovCiBzdHJ1Y3Qgdm5vcHMgcmFtZnNfdm5vcHMgPSB7Ci0gICAgICAg
IHJhbWZzX29wZW4sICAgICAgICAgICAgIC8qIG9wZW4gKi8KLSAgICAgICAgcmFtZnNfY2xvc2Us
ICAgICAgICAgICAgLyogY2xvc2UgKi8KLSAgICAgICAgcmFtZnNfcmVhZCwgICAgICAgICAgICAg
LyogcmVhZCAqLwotICAgICAgICByYW1mc193cml0ZSwgICAgICAgICAgICAvKiB3cml0ZSAqLwot
ICAgICAgICByYW1mc19zZWVrLCAgICAgICAgICAgICAvKiBzZWVrICovCi0gICAgICAgIHJhbWZz
X2lvY3RsLCAgICAgICAgICAgIC8qIGlvY3RsICovCi0gICAgICAgIHJhbWZzX2ZzeW5jLCAgICAg
ICAgICAgIC8qIGZzeW5jICovCi0gICAgICAgIHJhbWZzX3JlYWRkaXIsICAgICAgICAgIC8qIHJl
YWRkaXIgKi8KLSAgICAgICAgcmFtZnNfbG9va3VwLCAgICAgICAgICAgLyogbG9va3VwICovCi0g
ICAgICAgIHJhbWZzX2NyZWF0ZSwgICAgICAgICAgIC8qIGNyZWF0ZSAqLwotICAgICAgICByYW1m
c19yZW1vdmUsICAgICAgICAgICAvKiByZW1vdmUgKi8KLSAgICAgICAgcmFtZnNfcmVuYW1lLCAg
ICAgICAgICAgLyogcmVtYW1lICovCi0gICAgICAgIHJhbWZzX21rZGlyLCAgICAgICAgICAgIC8q
IG1rZGlyICovCi0gICAgICAgIHJhbWZzX3JtZGlyLCAgICAgICAgICAgIC8qIHJtZGlyICovCi0g
ICAgICAgIHJhbWZzX2dldGF0dHIsICAgICAgICAgIC8qIGdldGF0dHIgKi8KLSAgICAgICAgcmFt
ZnNfc2V0YXR0ciwgICAgICAgICAgLyogc2V0YXR0ciAqLwotICAgICAgICByYW1mc19pbmFjdGl2
ZSwgICAgICAgICAvKiBpbmFjdGl2ZSAqLwotICAgICAgICByYW1mc190cnVuY2F0ZSwgICAgICAg
ICAvKiB0cnVuY2F0ZSAqLwotICAgICAgICByYW1mc19saW5rLCAgICAgICAgICAgICAvKiBsaW5r
ICovCi0gICAgICAgICh2bm9wX2NhY2hlX3QpIG51bGxwdHIsIC8qIGFyYyAqLwotICAgICAgICBy
YW1mc19mYWxsb2NhdGUsICAgICAgICAvKiBmYWxsb2NhdGUgKi8KLSAgICAgICAgcmFtZnNfcmVh
ZGxpbmssICAgICAgICAgLyogcmVhZCBsaW5rICovCi0gICAgICAgIHJhbWZzX3N5bWxpbmssICAg
ICAgICAgIC8qIHN5bWJvbGljIGxpbmsgKi8KKwkJcmFtZnNfb3BlbiwgICAgICAgICAgICAgLyog
b3BlbiAqLworCQlyYW1mc19jbG9zZSwgICAgICAgICAgICAvKiBjbG9zZSAqLworCQlyYW1mc19y
ZWFkLCAgICAgICAgICAgICAvKiByZWFkICovCisJCXJhbWZzX3dyaXRlLCAgICAgICAgICAgIC8q
IHdyaXRlICovCisJCXJhbWZzX3NlZWssICAgICAgICAgICAgIC8qIHNlZWsgKi8KKwkJcmFtZnNf
aW9jdGwsICAgICAgICAgICAgLyogaW9jdGwgKi8KKwkJcmFtZnNfZnN5bmMsICAgICAgICAgICAg
LyogZnN5bmMgKi8KKwkJcmFtZnNfcmVhZGRpciwgICAgICAgICAgLyogcmVhZGRpciAqLworCQly
YW1mc19sb29rdXAsICAgICAgICAgICAvKiBsb29rdXAgKi8KKwkJcmFtZnNfY3JlYXRlLCAgICAg
ICAgICAgLyogY3JlYXRlICovCisJCXJhbWZzX3JlbW92ZSwgICAgICAgICAgIC8qIHJlbW92ZSAq
LworCQlyYW1mc19yZW5hbWUsICAgICAgICAgICAvKiByZW1hbWUgKi8KKwkJcmFtZnNfbWtkaXIs
ICAgICAgICAgICAgLyogbWtkaXIgKi8KKwkJcmFtZnNfcm1kaXIsICAgICAgICAgICAgLyogcm1k
aXIgKi8KKwkJcmFtZnNfZ2V0YXR0ciwgICAgICAgICAgLyogZ2V0YXR0ciAqLworCQlyYW1mc19z
ZXRhdHRyLCAgICAgICAgICAvKiBzZXRhdHRyICovCisJCXJhbWZzX2luYWN0aXZlLCAgICAgICAg
IC8qIGluYWN0aXZlICovCisJCXJhbWZzX3RydW5jYXRlLCAgICAgICAgIC8qIHRydW5jYXRlICov
CisJCXJhbWZzX2xpbmssICAgICAgICAgICAgIC8qIGxpbmsgKi8KKwkJKHZub3BfY2FjaGVfdCkg
bnVsbHB0ciwgLyogYXJjICovCisJCXJhbWZzX2ZhbGxvY2F0ZSwgICAgICAgIC8qIGZhbGxvY2F0
ZSAqLworCQlyYW1mc19yZWFkbGluaywgICAgICAgICAvKiByZWFkIGxpbmsgKi8KKwkJcmFtZnNf
c3ltbGluaywgICAgICAgICAgLyogc3ltYm9saWMgbGluayAqLwogfTsKIAotLSAKMi4xOS4yCgoK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRl
dmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Feb 06 10:42:34 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 06 Feb 2019 10:42:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grKf4-0003Co-7M; Wed, 06 Feb 2019 10:42:34 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Hs2p=QN=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1grKf3-0003CU-0o
 for minios-devel@lists.xen.org; Wed, 06 Feb 2019 10:42:33 +0000
X-Inumbo-ID: e7499d75-29fb-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id e7499d75-29fb-11e9-bc90-bc764e045a96;
 Wed, 06 Feb 2019 10:42:31 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 47D66F2048;
 Wed,  6 Feb 2019 11:42:30 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id IkBYdUNRSPGZ; Wed,  6 Feb 2019 11:42:30 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 18EB2F2023
 for <minios-devel@lists.xen.org>; Wed,  6 Feb 2019 11:42:28 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Wed, 6 Feb 2019 11:42:27 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 6 Feb 2019 11:42:05 +0100
Message-ID: <20190206104214.23847-5-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190206104214.23847-1-yuri.volchkov@neclab.eu>
References: <20190206104214.23847-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH 4/6] lib/ramfs: adapt imported ramfs
 to Unikraft
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Simon.kuenzer@neclab.eu, sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogbGliL0NvbmZpZy51ayAgICAgICAgICAgIHwgICAxICsKIGxpYi9NYWtlZmlsZS51ayAgICAg
ICAgICB8ICAgMSArCiBsaWIvcmFtZnMvZXhwb3J0c3ltcy51ayAgfCAgIDEgKwogbGliL3JhbWZz
L3JhbWZzLmggICAgICAgIHwgICA0ICstCiBsaWIvcmFtZnMvcmFtZnNfdmZzb3BzLmMgfCAgMjgg
KysrKy0tLQogbGliL3JhbWZzL3JhbWZzX3Zub3BzLmMgIHwgMTcxICsrKysrKysrKysrKysrKysr
KysrKy0tLS0tLS0tLS0tLS0tLS0tLQogNiBmaWxlcyBjaGFuZ2VkLCAxMTUgaW5zZXJ0aW9ucygr
KSwgOTEgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3JhbWZzL2V4cG9ydHN5
bXMudWsKCmRpZmYgLS1naXQgYS9saWIvQ29uZmlnLnVrIGIvbGliL0NvbmZpZy51awppbmRleCA1
Y2Q3NTg1OC4uZDAzMjM1YTcgMTAwNjQ0Ci0tLSBhL2xpYi9Db25maWcudWsKKysrIGIvbGliL0Nv
bmZpZy51awpAQCAtMzQsNiArMzQsNyBAQCBzb3VyY2UgImxpYi91a3NjaGVkL0NvbmZpZy51ayIK
IHNvdXJjZSAibGliL3Vrc2NoZWRjb29wL0NvbmZpZy51ayIKIHNvdXJjZSAibGliL2ZkdC9Db25m
aWcudWsiCiBzb3VyY2UgImxpYi92ZnNjb3JlL0NvbmZpZy51ayIKK3NvdXJjZSAibGliL3JhbWZz
L0NvbmZpZy51ayIKIHNvdXJjZSAibGliL3VrbG9jay9Db25maWcudWsiCiBzb3VyY2UgImxpYi91
a21waS9Db25maWcudWsiCiBzb3VyY2UgImxpYi91a3N3cmFuZC9Db25maWcudWsiCmRpZmYgLS1n
aXQgYS9saWIvTWFrZWZpbGUudWsgYi9saWIvTWFrZWZpbGUudWsKaW5kZXggNGMyY2M4N2QuLmQ2
NmM3ZWU5IDEwMDY0NAotLS0gYS9saWIvTWFrZWZpbGUudWsKKysrIGIvbGliL01ha2VmaWxlLnVr
CkBAIC0xNiw2ICsxNiw3IEBAICQoZXZhbCAkKGNhbGwgX2ltcG9ydF9saWIsJChDT05GSUdfVUtf
QkFTRSkvbGliL3Vrc2NoZWQpKQogJChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENPTkZJR19V
S19CQVNFKS9saWIvdWtzY2hlZGNvb3ApKQogJChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENP
TkZJR19VS19CQVNFKS9saWIvZmR0KSkKICQoZXZhbCAkKGNhbGwgX2ltcG9ydF9saWIsJChDT05G
SUdfVUtfQkFTRSkvbGliL3Zmc2NvcmUpKQorJChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENP
TkZJR19VS19CQVNFKS9saWIvcmFtZnMpKQogJChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENP
TkZJR19VS19CQVNFKS9saWIvdWtsb2NrKSkKICQoZXZhbCAkKGNhbGwgX2ltcG9ydF9saWIsJChD
T05GSUdfVUtfQkFTRSkvbGliL3VrbXBpKSkKICQoZXZhbCAkKGNhbGwgX2ltcG9ydF9saWIsJChD
T05GSUdfVUtfQkFTRSkvbGliL3VrYnVzKSkKZGlmZiAtLWdpdCBhL2xpYi9yYW1mcy9leHBvcnRz
eW1zLnVrIGIvbGliL3JhbWZzL2V4cG9ydHN5bXMudWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAuLmM4NmMzZjM1Ci0tLSAvZGV2L251bGwKKysrIGIvbGliL3JhbWZzL2V4cG9y
dHN5bXMudWsKQEAgLTAsMCArMSBAQAorbm9uZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL2xpYi9yYW1mcy9yYW1mcy5oIGIvbGliL3JhbWZzL3JhbWZzLmgKaW5kZXgg
MDFlNGRhMDkuLjkxZmI1NzljIDEwMDY0NAotLS0gYS9saWIvcmFtZnMvcmFtZnMuaAorKysgYi9s
aWIvcmFtZnMvcmFtZnMuaApAQCAtMzMsNyArMzMsNyBAQAogI2lmbmRlZiBfUkFNRlNfSAogI2Rl
ZmluZSBfUkFNRlNfSAogCi0jaW5jbHVkZSA8b3N2L3ByZXguaD4KKyNpbmNsdWRlIDx2ZnNjb3Jl
L3ByZXguaD4KIAogLyogI2RlZmluZSBERUJVR19SQU1GUyAxICovCiAKQEAgLTYxLDcgKzYxLDcg
QEAgc3RydWN0IHJhbWZzX25vZGUgewogCXN0cnVjdCB0aW1lc3BlYyBybl9hdGltZTsKIAlzdHJ1
Y3QgdGltZXNwZWMgcm5fbXRpbWU7CiAJaW50IHJuX21vZGU7Ci0JYm9vbCBybl9vd25zX2J1ZjsK
KwlpbnQgcm5fb3duc19idWY7CiB9OwogCiBzdHJ1Y3QgcmFtZnNfbm9kZSAqcmFtZnNfYWxsb2Nh
dGVfbm9kZShjb25zdCBjaGFyICpuYW1lLCBpbnQgdHlwZSk7CmRpZmYgLS1naXQgYS9saWIvcmFt
ZnMvcmFtZnNfdmZzb3BzLmMgYi9saWIvcmFtZnMvcmFtZnNfdmZzb3BzLmMKaW5kZXggNGRmNTRj
NWYuLjNiNWMwNzVjIDEwMDY0NAotLS0gYS9saWIvcmFtZnMvcmFtZnNfdmZzb3BzLmMKKysrIGIv
bGliL3JhbWZzL3JhbWZzX3Zmc29wcy5jCkBAIC0zMiw5ICszMiwxMCBAQAogCiAjaW5jbHVkZSA8
ZXJybm8uaD4KIAotI2luY2x1ZGUgPG9zdi92bm9kZS5oPgotI2luY2x1ZGUgPG9zdi9tb3VudC5o
PgotI2luY2x1ZGUgPG9zdi9kZW50cnkuaD4KKyNkZWZpbmUgX0JTRF9TT1VSQ0UKKyNpbmNsdWRl
IDx2ZnNjb3JlL3Zub2RlLmg+CisjaW5jbHVkZSA8dmZzY29yZS9tb3VudC5oPgorI2luY2x1ZGUg
PHZmc2NvcmUvZGVudHJ5Lmg+CiAKICNpbmNsdWRlICJyYW1mcy5oIgogCkBAIC00NCw5ICs0NSw5
IEBAIHN0YXRpYyBpbnQgcmFtZnNfbW91bnQoc3RydWN0IG1vdW50ICptcCwgY29uc3QgY2hhciAq
ZGV2LCBpbnQgZmxhZ3MsIGNvbnN0IHZvaWQKIAogc3RhdGljIGludCByYW1mc191bm1vdW50KHN0
cnVjdCBtb3VudCAqbXAsIGludCBmbGFncyk7CiAKLSNkZWZpbmUgcmFtZnNfc3luYyAgICAoKHZm
c29wX3N5bmNfdCl2ZnNfbnVsbG9wKQotI2RlZmluZSByYW1mc192Z2V0ICAgICgodmZzb3Bfdmdl
dF90KXZmc19udWxsb3ApCi0jZGVmaW5lIHJhbWZzX3N0YXRmcyAgICAoKHZmc29wX3N0YXRmc190
KXZmc19udWxsb3ApCisjZGVmaW5lIHJhbWZzX3N5bmMgICAgKCh2ZnNvcF9zeW5jX3QpdmZzY29y
ZV9udWxsb3ApCisjZGVmaW5lIHJhbWZzX3ZnZXQgICAgKCh2ZnNvcF92Z2V0X3QpdmZzY29yZV9u
dWxsb3ApCisjZGVmaW5lIHJhbWZzX3N0YXRmcyAgICAoKHZmc29wX3N0YXRmc190KXZmc2NvcmVf
bnVsbG9wKQogCiAvKgogICogRmlsZSBzeXN0ZW0gb3BlcmF0aW9ucwpAQCAtNjAsMTEgKzYxLDIw
IEBAIHN0cnVjdCB2ZnNvcHMgcmFtZnNfdmZzb3BzID0gewogCQkmcmFtZnNfdm5vcHMsICAgICAg
Lyogdm5vcHMgKi8KIH07CiAKK3N0YXRpYyBzdHJ1Y3QgdmZzY29yZV9mc190eXBlIGZzX3JhbWZz
ID0geworCS52c19uYW1lID0gInJhbWZzIiwKKwkudnNfaW5pdCA9IE5VTEwsCisJLnZzX29wID0g
JnJhbWZzX3Zmc29wcywKK307CisKK1VLX0ZTX1JFR0lTVEVSKGZzX3JhbWZzKTsKKwogLyoKICAq
IE1vdW50IGEgZmlsZSBzeXN0ZW0uCiAgKi8KIHN0YXRpYyBpbnQKLXJhbWZzX21vdW50KHN0cnVj
dCBtb3VudCAqbXAsIGNvbnN0IGNoYXIgKmRldiwgaW50IGZsYWdzLCBjb25zdCB2b2lkICpkYXRh
KQorcmFtZnNfbW91bnQoc3RydWN0IG1vdW50ICptcCwgY29uc3QgY2hhciAqZGV2IF9fdW51c2Vk
LAorCSAgICBpbnQgZmxhZ3MgX191bnVzZWQsIGNvbnN0IHZvaWQgKmRhdGEgX191bnVzZWQpCiB7
CiAJc3RydWN0IHJhbWZzX25vZGUgKm5wOwogCkBAIC04Niw4ICs5Niw4IEBAIHJhbWZzX21vdW50
KHN0cnVjdCBtb3VudCAqbXAsIGNvbnN0IGNoYXIgKmRldiwgaW50IGZsYWdzLCBjb25zdCB2b2lk
ICpkYXRhKQogICogICAgICAgZGlyZWN0b3JpZXMsIGFuZCBpdCByZXF1aXJlcyBtb3JlIHdvcmsu
Li4KICAqLwogc3RhdGljIGludAotcmFtZnNfdW5tb3VudChzdHJ1Y3QgbW91bnQgKm1wLCBpbnQg
ZmxhZ3MpCityYW1mc191bm1vdW50KHN0cnVjdCBtb3VudCAqbXAsIGludCBmbGFncyBfX3VudXNl
ZCkKIHsKLQlyZWxlYXNlX21wX2RlbnRyaWVzKG1wKTsKKwl2ZnNjb3JlX3JlbGVhc2VfbXBfZGVu
dHJpZXMobXApOwogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvbGliL3JhbWZzL3JhbWZzX3Zu
b3BzLmMgYi9saWIvcmFtZnMvcmFtZnNfdm5vcHMuYwppbmRleCA0NTM4ZTljYi4uNjZhYjhhNjQg
MTAwNjQ0Ci0tLSBhL2xpYi9yYW1mcy9yYW1mc192bm9wcy5jCisrKyBiL2xpYi9yYW1mcy9yYW1m
c192bm9wcy5jCkBAIC0zMyw3ICszMyw5IEBACiAvKgogICogcm1hZnNfdm5vcHMuYyAtIHZub2Rl
IG9wZXJhdGlvbnMgZm9yIFJBTSBmaWxlIHN5c3RlbS4KICAqLworI2RlZmluZSBfR05VX1NPVVJD
RQogCisjaW5jbHVkZSA8dWsvZXNzZW50aWFscy5oPgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAj
aW5jbHVkZSA8ZGlyZW50Lmg+CiAjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CkBAIC00MSwyNCArNDMs
MjkgQEAKICNpbmNsdWRlIDxlcnJuby5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUg
PHN0ZGxpYi5oPgotI2luY2x1ZGUgPGZjbnRsLmg+CiAKLSNpbmNsdWRlIDxvc3YvcHJleC5oPgot
I2luY2x1ZGUgPG9zdi92bm9kZS5oPgotI2luY2x1ZGUgPG9zdi9maWxlLmg+Ci0jaW5jbHVkZSA8
b3N2L21vdW50Lmg+Ci0jaW5jbHVkZSA8b3N2L3Zub2RlX2F0dHIuaD4KKyNpbmNsdWRlIDx2ZnNj
b3JlL3ByZXguaD4KKyNpbmNsdWRlIDx2ZnNjb3JlL3Zub2RlLmg+CisjaW5jbHVkZSA8dmZzY29y
ZS9tb3VudC5oPgorI2luY2x1ZGUgPHZmc2NvcmUvdWlvLmg+CisjaW5jbHVkZSA8dmZzY29yZS9m
aWxlLmg+CiAKICNpbmNsdWRlICJyYW1mcy5oIgorI2luY2x1ZGUgPGRpcmVudC5oPgorI2luY2x1
ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8dmZzY29yZS9mcy5oPgogCi1zdGF0aWMgbXV0ZXhfdCBy
YW1mc19sb2NrID0gTVVURVhfSU5JVElBTElaRVI7CitzdGF0aWMgc3RydWN0IHVrX211dGV4IHJh
bWZzX2xvY2sgPSBVS19NVVRFWF9JTklUSUFMSVpFUihyYW1mc19sb2NrKTsKIHN0YXRpYyB1aW50
NjRfdCBpbm9kZV9jb3VudCA9IDE7IC8qIGlub2RlIDAgaXMgcmVzZXJ2ZWQgdG8gcm9vdCAqLwog
CiBzdGF0aWMgdm9pZAotc2V0X3RpbWVzX3RvX25vdyhzdHJ1Y3QgdGltZXNwZWMgKnRpbWUxLCBz
dHJ1Y3QgdGltZXNwZWMgKnRpbWUyID0gbnVsbHB0ciwgc3RydWN0IHRpbWVzcGVjICp0aW1lMyA9
IG51bGxwdHIpCitzZXRfdGltZXNfdG9fbm93KHN0cnVjdCB0aW1lc3BlYyAqdGltZTEsIHN0cnVj
dCB0aW1lc3BlYyAqdGltZTIsCisJCSBzdHJ1Y3QgdGltZXNwZWMgKnRpbWUzKQogewotCXN0cnVj
dCB0aW1lc3BlYyBub3c7Ci0JY2xvY2tfZ2V0dGltZShDTE9DS19SRUFMVElNRSwgJm5vdyk7CisJ
c3RydWN0IHRpbWVzcGVjIG5vdyA9IHswLCAwfTsKKworCS8qIFRPRE86IGltcGxlbWVudCB0aGUg
cmVhbCBjbG9ja19nZXR0aW1lICovCisJLyogY2xvY2tfZ2V0dGltZShDTE9DS19SRUFMVElNRSwg
Jm5vdyk7ICovCiAJaWYgKHRpbWUxKSB7CiAJCW1lbWNweSh0aW1lMSwgJm5vdywgc2l6ZW9mKHN0
cnVjdCB0aW1lc3BlYykpOwogCX0KQEAgLTc1LDcgKzgyLDcgQEAgcmFtZnNfYWxsb2NhdGVfbm9k
ZShjb25zdCBjaGFyICpuYW1lLCBpbnQgdHlwZSkKIHsKIAlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnA7
CiAKLQlucCA9IChyYW1mc19ub2RlICopIG1hbGxvYyhzaXplb2Yoc3RydWN0IHJhbWZzX25vZGUp
KTsKKwlucCA9IG1hbGxvYyhzaXplb2Yoc3RydWN0IHJhbWZzX25vZGUpKTsKIAlpZiAobnAgPT0g
TlVMTCkKIAkJcmV0dXJuIE5VTEw7CiAJbWVtc2V0KG5wLCAwLCBzaXplb2Yoc3RydWN0IHJhbWZz
X25vZGUpKTsKQEAgLTk3LDcgKzEwNCw3IEBAIHJhbWZzX2FsbG9jYXRlX25vZGUoY29uc3QgY2hh
ciAqbmFtZSwgaW50IHR5cGUpCiAJCW5wLT5ybl9tb2RlID0gU19JRlJFR3wwNzc3OwogCiAJc2V0
X3RpbWVzX3RvX25vdygmKG5wLT5ybl9jdGltZSksICYobnAtPnJuX2F0aW1lKSwgJihucC0+cm5f
bXRpbWUpKTsKLQlucC0+cm5fb3duc19idWYgPSB0cnVlOworCW5wLT5ybl9vd25zX2J1ZiA9IDE7
CiAKIAlyZXR1cm4gbnA7CiB9CkBAIC0xMjEsNyArMTI4LDcgQEAgcmFtZnNfYWRkX25vZGUoc3Ry
dWN0IHJhbWZzX25vZGUgKmRucCwgY2hhciAqbmFtZSwgaW50IHR5cGUpCiAJaWYgKG5wID09IE5V
TEwpCiAJCXJldHVybiBOVUxMOwogCi0JbXV0ZXhfbG9jaygmcmFtZnNfbG9jayk7CisJdWtfbXV0
ZXhfbG9jaygmcmFtZnNfbG9jayk7CiAKIAkvKiBMaW5rIHRvIHRoZSBkaXJlY3RvcnkgbGlzdCAq
LwogCWlmIChkbnAtPnJuX2NoaWxkID09IE5VTEwpIHsKQEAgLTEzMyw5ICsxNDAsOSBAQCByYW1m
c19hZGRfbm9kZShzdHJ1Y3QgcmFtZnNfbm9kZSAqZG5wLCBjaGFyICpuYW1lLCBpbnQgdHlwZSkK
IAkJcHJldi0+cm5fbmV4dCA9IG5wOwogCX0KIAotCXNldF90aW1lc190b19ub3coJihkbnAtPnJu
X210aW1lKSwgJihkbnAtPnJuX2N0aW1lKSk7CisJc2V0X3RpbWVzX3RvX25vdygmKGRucC0+cm5f
bXRpbWUpLCAmKGRucC0+cm5fY3RpbWUpLCBOVUxMKTsKIAotCW11dGV4X3VubG9jaygmcmFtZnNf
bG9jayk7CisJdWtfbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKIAlyZXR1cm4gbnA7CiB9CiAK
QEAgLTE0Nyw3ICsxNTQsNyBAQCByYW1mc19yZW1vdmVfbm9kZShzdHJ1Y3QgcmFtZnNfbm9kZSAq
ZG5wLCBzdHJ1Y3QgcmFtZnNfbm9kZSAqbnApCiAJaWYgKGRucC0+cm5fY2hpbGQgPT0gTlVMTCkK
IAkJcmV0dXJuIEVCVVNZOwogCi0JbXV0ZXhfbG9jaygmcmFtZnNfbG9jayk7CisJdWtfbXV0ZXhf
bG9jaygmcmFtZnNfbG9jayk7CiAKIAkvKiBVbmxpbmsgZnJvbSB0aGUgZGlyZWN0b3J5IGxpc3Qg
Ki8KIAlpZiAoZG5wLT5ybl9jaGlsZCA9PSBucCkgewpAQCAtMTU2LDcgKzE2Myw3IEBAIHJhbWZz
X3JlbW92ZV9ub2RlKHN0cnVjdCByYW1mc19ub2RlICpkbnAsIHN0cnVjdCByYW1mc19ub2RlICpu
cCkKIAkJZm9yIChwcmV2ID0gZG5wLT5ybl9jaGlsZDsgcHJldi0+cm5fbmV4dCAhPSBucDsKIAkJ
CSBwcmV2ID0gcHJldi0+cm5fbmV4dCkgewogCQkJaWYgKHByZXYtPnJuX25leHQgPT0gTlVMTCkg
ewotCQkJCW11dGV4X3VubG9jaygmcmFtZnNfbG9jayk7CisJCQkJdWtfbXV0ZXhfdW5sb2NrKCZy
YW1mc19sb2NrKTsKIAkJCQlyZXR1cm4gRU5PRU5UOwogCQkJfQogCQl9CkBAIC0xNjQsOSArMTcx
LDkgQEAgcmFtZnNfcmVtb3ZlX25vZGUoc3RydWN0IHJhbWZzX25vZGUgKmRucCwgc3RydWN0IHJh
bWZzX25vZGUgKm5wKQogCX0KIAlyYW1mc19mcmVlX25vZGUobnApOwogCi0Jc2V0X3RpbWVzX3Rv
X25vdygmKGRucC0+cm5fbXRpbWUpLCAmKGRucC0+cm5fY3RpbWUpKTsKKwlzZXRfdGltZXNfdG9f
bm93KCYoZG5wLT5ybl9tdGltZSksICYoZG5wLT5ybl9jdGltZSksIE5VTEwpOwogCi0JbXV0ZXhf
dW5sb2NrKCZyYW1mc19sb2NrKTsKKwl1a19tdXRleF91bmxvY2soJnJhbWZzX2xvY2spOwogCXJl
dHVybiAwOwogfQogCkBAIC0xOTMsNyArMjAwLDcgQEAgcmFtZnNfcmVuYW1lX25vZGUoc3RydWN0
IHJhbWZzX25vZGUgKm5wLCBjaGFyICpuYW1lKQogCQlucC0+cm5fbmFtZSA9IHRtcDsKIAl9CiAJ
bnAtPnJuX25hbWVsZW4gPSBsZW47Ci0Jc2V0X3RpbWVzX3RvX25vdygmKG5wLT5ybl9jdGltZSkp
OworCXNldF90aW1lc190b19ub3coJihucC0+cm5fY3RpbWUpLCBOVUxMLCBOVUxMKTsKIAlyZXR1
cm4gMDsKIH0KIApAQCAtMjEwLDEwICsyMTcsMTAgQEAgcmFtZnNfbG9va3VwKHN0cnVjdCB2bm9k
ZSAqZHZwLCBjaGFyICpuYW1lLCBzdHJ1Y3Qgdm5vZGUgKip2cHApCiAJaWYgKCpuYW1lID09ICdc
MCcpCiAJCXJldHVybiBFTk9FTlQ7CiAKLQltdXRleF9sb2NrKCZyYW1mc19sb2NrKTsKKwl1a19t
dXRleF9sb2NrKCZyYW1mc19sb2NrKTsKIAogCWxlbiA9IHN0cmxlbihuYW1lKTsKLQlkbnAgPSAo
cmFtZnNfbm9kZSAqKSBkdnAtPnZfZGF0YTsKKwlkbnAgPSBkdnAtPnZfZGF0YTsKIAlmb3VuZCA9
IDA7CiAJZm9yIChucCA9IGRucC0+cm5fY2hpbGQ7IG5wICE9IE5VTEw7IG5wID0gbnAtPnJuX25l
eHQpIHsKIAkJaWYgKG5wLT5ybl9uYW1lbGVuID09IGxlbiAmJgpAQCAtMjIzLDE3ICsyMzAsMTcg
QEAgcmFtZnNfbG9va3VwKHN0cnVjdCB2bm9kZSAqZHZwLCBjaGFyICpuYW1lLCBzdHJ1Y3Qgdm5v
ZGUgKip2cHApCiAJCX0KIAl9CiAJaWYgKGZvdW5kID09IDApIHsKLQkJbXV0ZXhfdW5sb2NrKCZy
YW1mc19sb2NrKTsKKwkJdWtfbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKIAkJcmV0dXJuIEVO
T0VOVDsKIAl9Ci0JaWYgKHZnZXQoZHZwLT52X21vdW50LCBpbm9kZV9jb3VudCsrLCAmdnApKSB7
CisJaWYgKHZmc2NvcmVfdmdldChkdnAtPnZfbW91bnQsIGlub2RlX2NvdW50KyssICZ2cCkpIHsK
IAkJLyogZm91bmQgaW4gY2FjaGUgKi8KIAkJKnZwcCA9IHZwOwotCQltdXRleF91bmxvY2soJnJh
bWZzX2xvY2spOworCQl1a19tdXRleF91bmxvY2soJnJhbWZzX2xvY2spOwogCQlyZXR1cm4gMDsK
IAl9CiAJaWYgKCF2cCkgewotCQltdXRleF91bmxvY2soJnJhbWZzX2xvY2spOworCQl1a19tdXRl
eF91bmxvY2soJnJhbWZzX2xvY2spOwogCQlyZXR1cm4gRU5PTUVNOwogCX0KIAl2cC0+dl9kYXRh
ID0gbnA7CkBAIC0yNDEsNyArMjQ4LDcgQEAgcmFtZnNfbG9va3VwKHN0cnVjdCB2bm9kZSAqZHZw
LCBjaGFyICpuYW1lLCBzdHJ1Y3Qgdm5vZGUgKip2cHApCiAJdnAtPnZfdHlwZSA9IG5wLT5ybl90
eXBlOwogCXZwLT52X3NpemUgPSBucC0+cm5fc2l6ZTsKIAotCW11dGV4X3VubG9jaygmcmFtZnNf
bG9jayk7CisJdWtfbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKIAogCSp2cHAgPSB2cDsKIApA
QCAtMjYxLDcgKzI2OCw3IEBAIHJhbWZzX21rZGlyKHN0cnVjdCB2bm9kZSAqZHZwLCBjaGFyICpu
YW1lLCBtb2RlX3QgbW9kZSkKIAlpZiAoIVNfSVNESVIobW9kZSkpCiAJCXJldHVybiBFSU5WQUw7
CiAKLQlucCA9IChyYW1mc19ub2RlICopIHJhbWZzX2FkZF9ub2RlKChyYW1mc19ub2RlICopIGR2
cC0+dl9kYXRhLCBuYW1lLCBWRElSKTsKKwlucCA9IHJhbWZzX2FkZF9ub2RlKGR2cC0+dl9kYXRh
LCBuYW1lLCBWRElSKTsKIAlpZiAobnAgPT0gTlVMTCkKIAkJcmV0dXJuIEVOT01FTTsKIAlucC0+
cm5fc2l6ZSA9IDA7CkBAIC0yNzUsNyArMjgyLDcgQEAgcmFtZnNfc3ltbGluayhzdHJ1Y3Qgdm5v
ZGUgKmR2cCwgY2hhciAqbmFtZSwgY2hhciAqbGluaykKIAlpZiAoc3RybGVuKG5hbWUpID4gTkFN
RV9NQVgpIHsKIAkJcmV0dXJuIEVOQU1FVE9PTE9ORzsKIAl9Ci0JYXV0byBucCA9IHJhbWZzX2Fk
ZF9ub2RlKChyYW1mc19ub2RlICopIGR2cC0+dl9kYXRhLCBuYW1lLCBWTE5LKTsKKwlzdHJ1Y3Qg
cmFtZnNfbm9kZSAqbnAgPSByYW1mc19hZGRfbm9kZShkdnAtPnZfZGF0YSwgbmFtZSwgVkxOSyk7
CiAJaWYgKG5wID09IE5VTEwpCiAJCXJldHVybiBFTk9NRU07CiAJLy8gU2F2ZSB0aGUgbGluayB0
YXJnZXQgd2l0aG91dCB0aGUgZmluYWwgbnVsbCwgYXMgcmVhZGxpbmsoKSB3YW50cyBpdC4KQEAg
LTI4NiwxMCArMjkzLDEwIEBAIHJhbWZzX3N5bWxpbmsoc3RydWN0IHZub2RlICpkdnAsIGNoYXIg
Km5hbWUsIGNoYXIgKmxpbmspCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQKK3N0YXRpYyBz
c2l6ZV90CiByYW1mc19yZWFkbGluayhzdHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3QgdWlvICp1aW8p
CiB7Ci0Jc3RydWN0IHJhbWZzX25vZGUgKm5wID0gKHJhbWZzX25vZGUgKikgdnAtPnZfZGF0YTsK
KwlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSB2cC0+dl9kYXRhOwogCXNpemVfdCBsZW47CiAKIAlp
ZiAodnAtPnZfdHlwZSAhPSBWTE5LKSB7CkBAIC0zMDgsMjMgKzMxNSwyMyBAQCByYW1mc19yZWFk
bGluayhzdHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3QgdWlvICp1aW8pCiAJZWxzZQogCQlsZW4gPSB1
aW8tPnVpb19yZXNpZDsKIAotCXNldF90aW1lc190b19ub3coICYobnAtPnJuX2F0aW1lKSk7Ci0J
cmV0dXJuIHVpb21vdmUobnAtPnJuX2J1ZiArIHVpby0+dWlvX29mZnNldCwgbGVuLCB1aW8pOwor
CXNldF90aW1lc190b19ub3coJihucC0+cm5fYXRpbWUpLCBOVUxMLCBOVUxMKTsKKwlyZXR1cm4g
dmZzY29yZV91aW9tb3ZlKG5wLT5ybl9idWYgKyB1aW8tPnVpb19vZmZzZXQsIGxlbiwgdWlvKTsK
IH0KIAogLyogUmVtb3ZlIGEgZGlyZWN0b3J5ICovCiBzdGF0aWMgaW50Ci1yYW1mc19ybWRpcihz
dHJ1Y3Qgdm5vZGUgKmR2cCwgc3RydWN0IHZub2RlICp2cCwgY2hhciAqbmFtZSkKK3JhbWZzX3Jt
ZGlyKHN0cnVjdCB2bm9kZSAqZHZwLCBzdHJ1Y3Qgdm5vZGUgKnZwLCBjaGFyICpuYW1lIF9fdW51
c2VkKQogewotCXJldHVybiByYW1mc19yZW1vdmVfbm9kZSgocmFtZnNfbm9kZSAqKSBkdnAtPnZf
ZGF0YSwgKHJhbWZzX25vZGUgKikgdnAtPnZfZGF0YSk7CisJcmV0dXJuIHJhbWZzX3JlbW92ZV9u
b2RlKGR2cC0+dl9kYXRhLCB2cC0+dl9kYXRhKTsKIH0KIAogLyogUmVtb3ZlIGEgZmlsZSAqLwog
c3RhdGljIGludAotcmFtZnNfcmVtb3ZlKHN0cnVjdCB2bm9kZSAqZHZwLCBzdHJ1Y3Qgdm5vZGUg
KnZwLCBjaGFyICpuYW1lKQorcmFtZnNfcmVtb3ZlKHN0cnVjdCB2bm9kZSAqZHZwLCBzdHJ1Y3Qg
dm5vZGUgKnZwLCBjaGFyICpuYW1lIF9fdW51c2VkKQogewogCURQUklOVEYoKCJyZW1vdmUgJXMg
aW4gJXNcbiIsIG5hbWUsIGR2cC0+dl9wYXRoKSk7Ci0JcmV0dXJuIHJhbWZzX3JlbW92ZV9ub2Rl
KChyYW1mc19ub2RlICopIGR2cC0+dl9kYXRhLCAocmFtZnNfbm9kZSAqKSB2cC0+dl9kYXRhKTsK
KwlyZXR1cm4gcmFtZnNfcmVtb3ZlX25vZGUoZHZwLT52X2RhdGEsIHZwLT52X2RhdGEpOwogfQog
CiAvKiBUcnVuY2F0ZSBmaWxlICovCkBAIC0zMzYsNyArMzQzLDcgQEAgcmFtZnNfdHJ1bmNhdGUo
c3RydWN0IHZub2RlICp2cCwgb2ZmX3QgbGVuZ3RoKQogCXNpemVfdCBuZXdfc2l6ZTsKIAogCURQ
UklOVEYoKCJ0cnVuY2F0ZSAlcyBsZW5ndGg9JWRcbiIsIHZwLT52X3BhdGgsIGxlbmd0aCkpOwot
CW5wID0gKHJhbWZzX25vZGUgKikgdnAtPnZfZGF0YTsKKwlucCA9IHZwLT52X2RhdGE7CiAKIAlp
ZiAobGVuZ3RoID09IDApIHsKIAkJaWYgKG5wLT5ybl9idWYgIT0gTlVMTCkgewpAQCAtMzQ1LDcg
KzM1Miw3IEBAIHJhbWZzX3RydW5jYXRlKHN0cnVjdCB2bm9kZSAqdnAsIG9mZl90IGxlbmd0aCkK
IAkJCW5wLT5ybl9idWYgPSBOVUxMOwogCQkJbnAtPnJuX2J1ZnNpemUgPSAwOwogCQl9Ci0JfSBl
bHNlIGlmIChzaXplX3QobGVuZ3RoKSA+IG5wLT5ybl9idWZzaXplKSB7CisJfSBlbHNlIGlmICgo
c2l6ZV90KSBsZW5ndGggPiBucC0+cm5fYnVmc2l6ZSkgewogCQkvLyBYWFg6IHRoaXMgY291bGQg
dXNlIGEgcGFnZSBsZXZlbCBhbGxvY2F0b3IKIAkJbmV3X3NpemUgPSByb3VuZF9wYWdlKGxlbmd0
aCk7CiAJCW5ld19idWYgPSBtYWxsb2MobmV3X3NpemUpOwpAQCAtMzU4LDExICszNjUsMTEgQEAg
cmFtZnNfdHJ1bmNhdGUoc3RydWN0IHZub2RlICp2cCwgb2ZmX3QgbGVuZ3RoKQogCQl9CiAJCW5w
LT5ybl9idWYgPSAoY2hhciAqKSBuZXdfYnVmOwogCQlucC0+cm5fYnVmc2l6ZSA9IG5ld19zaXpl
OwotCQlucC0+cm5fb3duc19idWYgPSB0cnVlOworCQlucC0+cm5fb3duc19idWYgPSAxOwogCX0K
IAlucC0+cm5fc2l6ZSA9IGxlbmd0aDsKIAl2cC0+dl9zaXplID0gbGVuZ3RoOwotCXNldF90aW1l
c190b19ub3coJihucC0+cm5fbXRpbWUpLCAmKG5wLT5ybl9jdGltZSkpOworCXNldF90aW1lc190
b19ub3coJihucC0+cm5fbXRpbWUpLCAmKG5wLT5ybl9jdGltZSksIE5VTEwpOwogCXJldHVybiAw
OwogfQogCkBAIC0zODIsMTYgKzM4OSwxNyBAQCByYW1mc19jcmVhdGUoc3RydWN0IHZub2RlICpk
dnAsIGNoYXIgKm5hbWUsIG1vZGVfdCBtb2RlKQogCWlmICghU19JU1JFRyhtb2RlKSkKIAkJcmV0
dXJuIEVJTlZBTDsKIAotCW5wID0gcmFtZnNfYWRkX25vZGUoKHJhbWZzX25vZGUgKikgZHZwLT52
X2RhdGEsIG5hbWUsIFZSRUcpOworCW5wID0gcmFtZnNfYWRkX25vZGUoZHZwLT52X2RhdGEsIG5h
bWUsIFZSRUcpOwogCWlmIChucCA9PSBOVUxMKQogCQlyZXR1cm4gRU5PTUVNOwogCXJldHVybiAw
OwogfQogCi1zdGF0aWMgaW50Ci1yYW1mc19yZWFkKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCBm
aWxlICpmcCwgc3RydWN0IHVpbyAqdWlvLCBpbnQgaW9mbGFnKQorc3RhdGljIHNzaXplX3QKK3Jh
bWZzX3JlYWQoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAgX191bnVz
ZWQsCisJICAgc3RydWN0IHVpbyAqdWlvLCBpbnQgaW9mbGFnIF9fdW51c2VkKQogewotCXN0cnVj
dCByYW1mc19ub2RlICpucCA9IChyYW1mc19ub2RlICopIHZwLT52X2RhdGE7CisJc3RydWN0IHJh
bWZzX25vZGUgKm5wID0gIHZwLT52X2RhdGE7CiAJc2l6ZV90IGxlbjsKIAogCWlmICh2cC0+dl90
eXBlID09IFZESVIpIHsKQEAgLTQxNSwxNSArNDIzLDE1IEBAIHJhbWZzX3JlYWQoc3RydWN0IHZu
b2RlICp2cCwgc3RydWN0IGZpbGUgKmZwLCBzdHJ1Y3QgdWlvICp1aW8sIGludCBpb2ZsYWcpCiAJ
ZWxzZQogCQlsZW4gPSB1aW8tPnVpb19yZXNpZDsKIAotCXNldF90aW1lc190b19ub3coJihucC0+
cm5fYXRpbWUpKTsKKwlzZXRfdGltZXNfdG9fbm93KCYobnAtPnJuX2F0aW1lKSwgTlVMTCwgTlVM
TCk7CiAKLQlyZXR1cm4gdWlvbW92ZShucC0+cm5fYnVmICsgdWlvLT51aW9fb2Zmc2V0LCBsZW4s
IHVpbyk7CisJcmV0dXJuIHZmc2NvcmVfdWlvbW92ZShucC0+cm5fYnVmICsgdWlvLT51aW9fb2Zm
c2V0LCBsZW4sIHVpbyk7CiB9CiAKIGludAogcmFtZnNfc2V0X2ZpbGVfZGF0YShzdHJ1Y3Qgdm5v
ZGUgKnZwLCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKLQlzdHJ1Y3QgcmFtZnNf
bm9kZSAqbnAgPSAocmFtZnNfbm9kZSAqKSB2cC0+dl9kYXRhOworCXN0cnVjdCByYW1mc19ub2Rl
ICpucCA9ICB2cC0+dl9kYXRhOwogCiAJaWYgKHZwLT52X3R5cGUgPT0gVkRJUikgewogCQlyZXR1
cm4gRUlTRElSOwpAQCAtNDM5LDE1ICs0NDcsMTUgQEAgcmFtZnNfc2V0X2ZpbGVfZGF0YShzdHJ1
Y3Qgdm5vZGUgKnZwLCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSkKIAlucC0+cm5fYnVm
c2l6ZSA9IHNpemU7CiAJbnAtPnJuX3NpemUgPSBzaXplOwogCXZwLT52X3NpemUgPSBzaXplOwot
CW5wLT5ybl9vd25zX2J1ZiA9IGZhbHNlOworCW5wLT5ybl9vd25zX2J1ZiA9IDA7CiAKIAlyZXR1
cm4gMDsKIH0KIAotc3RhdGljIGludAorc3RhdGljIHNzaXplX3QKIHJhbWZzX3dyaXRlKHN0cnVj
dCB2bm9kZSAqdnAsIHN0cnVjdCB1aW8gKnVpbywgaW50IGlvZmxhZykKIHsKLQlzdHJ1Y3QgcmFt
ZnNfbm9kZSAqbnAgPSAocmFtZnNfbm9kZSAqKSB2cC0+dl9kYXRhOworCXN0cnVjdCByYW1mc19u
b2RlICpucCA9ICB2cC0+dl9kYXRhOwogCiAJaWYgKHZwLT52X3R5cGUgPT0gVkRJUikgewogCQly
ZXR1cm4gRUlTRElSOwpAQCAtNDY4LDcgKzQ3Niw3IEBAIHJhbWZzX3dyaXRlKHN0cnVjdCB2bm9k
ZSAqdnAsIHN0cnVjdCB1aW8gKnVpbywgaW50IGlvZmxhZykKIAlpZiAoaW9mbGFnICYgSU9fQVBQ
RU5EKQogCQl1aW8tPnVpb19vZmZzZXQgPSBucC0+cm5fc2l6ZTsKIAotCWlmIChzaXplX3QodWlv
LT51aW9fb2Zmc2V0ICsgdWlvLT51aW9fcmVzaWQpID4gKHNpemVfdCkgdnAtPnZfc2l6ZSkgewor
CWlmICgoc2l6ZV90KSB1aW8tPnVpb19vZmZzZXQgKyB1aW8tPnVpb19yZXNpZCA+IChzaXplX3Qp
IHZwLT52X3NpemUpIHsKIAkJLyogRXhwYW5kIHRoZSBmaWxlIHNpemUgYmVmb3JlIHdyaXRpbmcg
dG8gaXQgKi8KIAkJb2ZmX3QgZW5kX3BvcyA9IHVpby0+dWlvX29mZnNldCArIHVpby0+dWlvX3Jl
c2lkOwogCQlpZiAoZW5kX3BvcyA+IChvZmZfdCkgbnAtPnJuX2J1ZnNpemUpIHsKQEAgLTQ4Nywx
NSArNDk1LDE2IEBAIHJhbWZzX3dyaXRlKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCB1aW8gKnVp
bywgaW50IGlvZmxhZykKIAkJfQogCQlucC0+cm5fc2l6ZSA9IGVuZF9wb3M7CiAJCXZwLT52X3Np
emUgPSBlbmRfcG9zOwotCQlucC0+cm5fb3duc19idWYgPSB0cnVlOworCQlucC0+cm5fb3duc19i
dWYgPSAxOwogCX0KIAotCXNldF90aW1lc190b19ub3coJihucC0+cm5fbXRpbWUpLCAmKG5wLT5y
bl9jdGltZSkpOwotCXJldHVybiB1aW9tb3ZlKG5wLT5ybl9idWYgKyB1aW8tPnVpb19vZmZzZXQs
IHVpby0+dWlvX3Jlc2lkLCB1aW8pOworCXNldF90aW1lc190b19ub3coJihucC0+cm5fbXRpbWUp
LCAmKG5wLT5ybl9jdGltZSksIE5VTEwpOworCXJldHVybiB2ZnNjb3JlX3Vpb21vdmUobnAtPnJu
X2J1ZiArIHVpby0+dWlvX29mZnNldCwgdWlvLT51aW9fcmVzaWQsCisJCQkgICAgICAgdWlvKTsK
IH0KIAogc3RhdGljIGludAotcmFtZnNfcmVuYW1lKHN0cnVjdCB2bm9kZSAqZHZwMSwgc3RydWN0
IHZub2RlICp2cDEsIGNoYXIgKm5hbWUxLAorcmFtZnNfcmVuYW1lKHN0cnVjdCB2bm9kZSAqZHZw
MSwgc3RydWN0IHZub2RlICp2cDEsIGNoYXIgKm5hbWUxIF9fdW51c2VkLAogCQkJIHN0cnVjdCB2
bm9kZSAqZHZwMiwgc3RydWN0IHZub2RlICp2cDIsIGNoYXIgKm5hbWUyKQogewogCXN0cnVjdCBy
YW1mc19ub2RlICpucCwgKm9sZF9ucDsKQEAgLTUwMywyMCArNTEyLDIwIEBAIHJhbWZzX3JlbmFt
ZShzdHJ1Y3Qgdm5vZGUgKmR2cDEsIHN0cnVjdCB2bm9kZSAqdnAxLCBjaGFyICpuYW1lMSwKIAog
CWlmICh2cDIpIHsKIAkJLyogUmVtb3ZlIGRlc3RpbmF0aW9uIGZpbGUsIGZpcnN0ICovCi0JCWVy
cm9yID0gcmFtZnNfcmVtb3ZlX25vZGUoKHJhbWZzX25vZGUgKikgZHZwMi0+dl9kYXRhLCAocmFt
ZnNfbm9kZSAqKSB2cDItPnZfZGF0YSk7CisJCWVycm9yID0gcmFtZnNfcmVtb3ZlX25vZGUoZHZw
Mi0+dl9kYXRhLCB2cDItPnZfZGF0YSk7CiAJCWlmIChlcnJvcikKIAkJCXJldHVybiBlcnJvcjsK
IAl9CiAJLyogU2FtZSBkaXJlY3RvcnkgPyAqLwogCWlmIChkdnAxID09IGR2cDIpIHsKIAkJLyog
Q2hhbmdlIHRoZSBuYW1lIG9mIGV4aXN0aW5nIGZpbGUgKi8KLQkJZXJyb3IgPSByYW1mc19yZW5h
bWVfbm9kZSgocmFtZnNfbm9kZSAqKSB2cDEtPnZfZGF0YSwgbmFtZTIpOworCQllcnJvciA9IHJh
bWZzX3JlbmFtZV9ub2RlKHZwMS0+dl9kYXRhLCBuYW1lMik7CiAJCWlmIChlcnJvcikKIAkJCXJl
dHVybiBlcnJvcjsKIAl9IGVsc2UgewogCQkvKiBDcmVhdGUgbmV3IGZpbGUgb3IgZGlyZWN0b3J5
ICovCi0JCW9sZF9ucCA9IChyYW1mc19ub2RlICopIHZwMS0+dl9kYXRhOwotCQlucCA9IHJhbWZz
X2FkZF9ub2RlKChyYW1mc19ub2RlICopIGR2cDItPnZfZGF0YSwgbmFtZTIsIG9sZF9ucC0+cm5f
dHlwZSk7CisJCW9sZF9ucCA9IHZwMS0+dl9kYXRhOworCQlucCA9IHJhbWZzX2FkZF9ub2RlKGR2
cDItPnZfZGF0YSwgbmFtZTIsIG9sZF9ucC0+cm5fdHlwZSk7CiAJCWlmIChucCA9PSBOVUxMKQog
CQkJcmV0dXJuIEVOT01FTTsKIApAQCAtNTI4LDcgKzUzNyw3IEBAIHJhbWZzX3JlbmFtZShzdHJ1
Y3Qgdm5vZGUgKmR2cDEsIHN0cnVjdCB2bm9kZSAqdnAxLCBjaGFyICpuYW1lMSwKIAkJCW9sZF9u
cC0+cm5fYnVmID0gTlVMTDsKIAkJfQogCQkvKiBSZW1vdmUgc291cmNlIGZpbGUgKi8KLQkJcmFt
ZnNfcmVtb3ZlX25vZGUoKHJhbWZzX25vZGUgKikgZHZwMS0+dl9kYXRhLCAocmFtZnNfbm9kZSAq
KSB2cDEtPnZfZGF0YSk7CisJCXJhbWZzX3JlbW92ZV9ub2RlKGR2cDEtPnZfZGF0YSwgdnAxLT52
X2RhdGEpOwogCX0KIAlyZXR1cm4gMDsKIH0KQEAgLTUzNywxNCArNTQ2LDE1IEBAIHJhbWZzX3Jl
bmFtZShzdHJ1Y3Qgdm5vZGUgKmR2cDEsIHN0cnVjdCB2bm9kZSAqdnAxLCBjaGFyICpuYW1lMSwK
ICAqIEB2cDogdm5vZGUgb2YgdGhlIGRpcmVjdG9yeS4KICAqLwogc3RhdGljIGludAotcmFtZnNf
cmVhZGRpcihzdHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3QgZmlsZSAqZnAsIHN0cnVjdCBkaXJlbnQg
KmRpcikKK3JhbWZzX3JlYWRkaXIoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IHZmc2NvcmVfZmls
ZSAqZnAsIHN0cnVjdCBkaXJlbnQgKmRpcikKIHsKIAlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAsICpk
bnA7CiAJaW50IGk7CiAKLQltdXRleF9sb2NrKCZyYW1mc19sb2NrKTsKKwl1a19tdXRleF9sb2Nr
KCZyYW1mc19sb2NrKTsKIAotCXNldF90aW1lc190b19ub3coJigoKHJhbWZzX25vZGUgKikgdnAt
PnZfZGF0YSktPnJuX2F0aW1lKSk7CisJc2V0X3RpbWVzX3RvX25vdygmKCgoc3RydWN0IHJhbWZz
X25vZGUgKikgdnAtPnZfZGF0YSktPnJuX2F0aW1lKSwKKwkJCSBOVUxMLCBOVUxMKTsKIAogCWlm
IChmcC0+Zl9vZmZzZXQgPT0gMCkgewogCQlkaXItPmRfdHlwZSA9IERUX0RJUjsKQEAgLTU1Mywx
NyArNTYzLDE3IEBAIHJhbWZzX3JlYWRkaXIoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IGZpbGUg
KmZwLCBzdHJ1Y3QgZGlyZW50ICpkaXIpCiAJCWRpci0+ZF90eXBlID0gRFRfRElSOwogCQlzdHJs
Y3B5KChjaGFyICopICZkaXItPmRfbmFtZSwgIi4uIiwgc2l6ZW9mKGRpci0+ZF9uYW1lKSk7CiAJ
fSBlbHNlIHsKLQkJZG5wID0gKHJhbWZzX25vZGUgKikgdnAtPnZfZGF0YTsKKwkJZG5wID0gdnAt
PnZfZGF0YTsKIAkJbnAgPSBkbnAtPnJuX2NoaWxkOwogCQlpZiAobnAgPT0gTlVMTCkgewotCQkJ
bXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKKwkJCXVrX211dGV4X3VubG9jaygmcmFtZnNfbG9j
ayk7CiAJCQlyZXR1cm4gRU5PRU5UOwogCQl9CiAKIAkJZm9yIChpID0gMDsgaSAhPSAoZnAtPmZf
b2Zmc2V0IC0gMik7IGkrKykgewogCQkJbnAgPSBucC0+cm5fbmV4dDsKIAkJCWlmIChucCA9PSBO
VUxMKSB7Ci0JCQkJbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKKwkJCQl1a19tdXRleF91bmxv
Y2soJnJhbWZzX2xvY2spOwogCQkJCXJldHVybiBFTk9FTlQ7CiAJCQl9CiAJCX0KQEAgLTU4MSw3
ICs1OTEsNyBAQCByYW1mc19yZWFkZGlyKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCBmaWxlICpm
cCwgc3RydWN0IGRpcmVudCAqZGlyKQogCiAJZnAtPmZfb2Zmc2V0Kys7CiAKLQltdXRleF91bmxv
Y2soJnJhbWZzX2xvY2spOworCXVrX211dGV4X3VubG9jaygmcmFtZnNfbG9jayk7CiAJcmV0dXJu
IDA7CiB9CiAKQEAgLTU5NCwxMSArNjA0LDEyIEBAIHJhbWZzX2luaXQodm9pZCkKIHN0YXRpYyBp
bnQKIHJhbWZzX2dldGF0dHIoc3RydWN0IHZub2RlICp2bm9kZSwgc3RydWN0IHZhdHRyICphdHRy
KQogeworCXN0cnVjdCByYW1mc19ub2RlICpucCA9IHZub2RlLT52X2RhdGE7CisKIAlhdHRyLT52
YV9ub2RlaWQgPSB2bm9kZS0+dl9pbm87CiAJYXR0ci0+dmFfc2l6ZSA9IHZub2RlLT52X3NpemU7
CiAKLQlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSAocmFtZnNfbm9kZSAqKSB2bm9kZS0+dl9kYXRh
OwotCWF0dHItPnZhX3R5cGUgPSAodnR5cGUpIG5wLT5ybl90eXBlOworCWF0dHItPnZhX3R5cGUg
PSBucC0+cm5fdHlwZTsKIAogCW1lbWNweSgmKGF0dHItPnZhX2F0aW1lKSwgJihucC0+cm5fYXRp
bWUpLCBzaXplb2Yoc3RydWN0IHRpbWVzcGVjKSk7CiAJbWVtY3B5KCYoYXR0ci0+dmFfY3RpbWUp
LCAmKG5wLT5ybl9jdGltZSksIHNpemVvZihzdHJ1Y3QgdGltZXNwZWMpKTsKQEAgLTYxMSw3ICs2
MjIsNyBAQCByYW1mc19nZXRhdHRyKHN0cnVjdCB2bm9kZSAqdm5vZGUsIHN0cnVjdCB2YXR0ciAq
YXR0cikKIAogc3RhdGljIGludAogcmFtZnNfc2V0YXR0cihzdHJ1Y3Qgdm5vZGUgKnZub2RlLCBz
dHJ1Y3QgdmF0dHIgKmF0dHIpIHsKLQlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSAocmFtZnNfbm9k
ZSAqKSB2bm9kZS0+dl9kYXRhOworCXN0cnVjdCByYW1mc19ub2RlICpucCA9IHZub2RlLT52X2Rh
dGE7CiAKIAlpZiAoYXR0ci0+dmFfbWFzayAmIEFUX0FUSU1FKSB7CiAJCW1lbWNweSgmKG5wLT5y
bl9hdGltZSksICYoYXR0ci0+dmFfYXRpbWUpLCBzaXplb2Yoc3RydWN0IHRpbWVzcGVjKSk7CkBA
IC02MzIsMTQgKzY0MywxNCBAQCByYW1mc19zZXRhdHRyKHN0cnVjdCB2bm9kZSAqdm5vZGUsIHN0
cnVjdCB2YXR0ciAqYXR0cikgewogCXJldHVybiAwOwogfQogCi0jZGVmaW5lIHJhbWZzX29wZW4g
ICAgICAoKHZub3Bfb3Blbl90KXZvcF9udWxsb3ApCi0jZGVmaW5lIHJhbWZzX2Nsb3NlICAgICAo
KHZub3BfY2xvc2VfdCl2b3BfbnVsbG9wKQotI2RlZmluZSByYW1mc19zZWVrICAgICAgKCh2bm9w
X3NlZWtfdCl2b3BfbnVsbG9wKQotI2RlZmluZSByYW1mc19pb2N0bCAgICAgKCh2bm9wX2lvY3Rs
X3Qpdm9wX2VpbnZhbCkKLSNkZWZpbmUgcmFtZnNfZnN5bmMgICAgICgodm5vcF9mc3luY190KXZv
cF9udWxsb3ApCi0jZGVmaW5lIHJhbWZzX2luYWN0aXZlICAoKHZub3BfaW5hY3RpdmVfdCl2b3Bf
bnVsbG9wKQotI2RlZmluZSByYW1mc19saW5rICAgICAgKCh2bm9wX2xpbmtfdCl2b3BfZXBlcm0p
Ci0jZGVmaW5lIHJhbWZzX2ZhbGxvY2F0ZSAoKHZub3BfZmFsbG9jYXRlX3Qpdm9wX251bGxvcCkK
KyNkZWZpbmUgcmFtZnNfb3BlbiAgICAgICgodm5vcF9vcGVuX3QpdmZzY29yZV92b3BfbnVsbG9w
KQorI2RlZmluZSByYW1mc19jbG9zZSAgICAgKCh2bm9wX2Nsb3NlX3QpdmZzY29yZV92b3BfbnVs
bG9wKQorI2RlZmluZSByYW1mc19zZWVrICAgICAgKCh2bm9wX3NlZWtfdCl2ZnNjb3JlX3ZvcF9u
dWxsb3ApCisjZGVmaW5lIHJhbWZzX2lvY3RsICAgICAoKHZub3BfaW9jdGxfdCl2ZnNjb3JlX3Zv
cF9laW52YWwpCisjZGVmaW5lIHJhbWZzX2ZzeW5jICAgICAoKHZub3BfZnN5bmNfdCl2ZnNjb3Jl
X3ZvcF9udWxsb3ApCisjZGVmaW5lIHJhbWZzX2luYWN0aXZlICAoKHZub3BfaW5hY3RpdmVfdCl2
ZnNjb3JlX3ZvcF9udWxsb3ApCisjZGVmaW5lIHJhbWZzX2xpbmsgICAgICAoKHZub3BfbGlua190
KXZmc2NvcmVfdm9wX2VwZXJtKQorI2RlZmluZSByYW1mc19mYWxsb2NhdGUgKCh2bm9wX2ZhbGxv
Y2F0ZV90KXZmc2NvcmVfdm9wX251bGxvcCkKIAogLyoKICAqIHZub2RlIG9wZXJhdGlvbnMKQEAg
LTY2NCw3ICs2NzUsNyBAQCBzdHJ1Y3Qgdm5vcHMgcmFtZnNfdm5vcHMgPSB7CiAJCXJhbWZzX2lu
YWN0aXZlLCAgICAgICAgIC8qIGluYWN0aXZlICovCiAJCXJhbWZzX3RydW5jYXRlLCAgICAgICAg
IC8qIHRydW5jYXRlICovCiAJCXJhbWZzX2xpbmssICAgICAgICAgICAgIC8qIGxpbmsgKi8KLQkJ
KHZub3BfY2FjaGVfdCkgbnVsbHB0ciwgLyogYXJjICovCisJCSh2bm9wX2NhY2hlX3QpIE5VTEws
ICAgIC8qIGFyYyAqLwogCQlyYW1mc19mYWxsb2NhdGUsICAgICAgICAvKiBmYWxsb2NhdGUgKi8K
IAkJcmFtZnNfcmVhZGxpbmssICAgICAgICAgLyogcmVhZCBsaW5rICovCiAJCXJhbWZzX3N5bWxp
bmssICAgICAgICAgIC8qIHN5bWJvbGljIGxpbmsgKi8KLS0gCjIuMTkuMgoKCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5n
IGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVu
cHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Feb 06 10:42:35 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 06 Feb 2019 10:42:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grKf5-0003DG-9k; Wed, 06 Feb 2019 10:42:35 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Hs2p=QN=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1grKf3-0003Cf-La
 for minios-devel@lists.xen.org; Wed, 06 Feb 2019 10:42:33 +0000
X-Inumbo-ID: e5b26088-29fb-11e9-a707-1fc1500079d9
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id e5b26088-29fb-11e9-a707-1fc1500079d9;
 Wed, 06 Feb 2019 10:42:28 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id A5297104D88;
 Wed,  6 Feb 2019 11:42:27 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id jHrau8Ht1LfM; Wed,  6 Feb 2019 11:42:27 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 84288104D87
 for <minios-devel@lists.xen.org>; Wed,  6 Feb 2019 11:42:25 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Wed, 6 Feb 2019 11:42:25 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 6 Feb 2019 11:42:04 +0100
Message-ID: <20190206104214.23847-4-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190206104214.23847-1-yuri.volchkov@neclab.eu>
References: <20190206104214.23847-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH 3/6] lib/ramfs: update license
 header for imported files
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Simon.kuenzer@neclab.eu, sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogbGliL3JhbWZzL3JhbWZzLmggICAgICAgIHwgMyArKysKIGxpYi9yYW1mcy9yYW1mc192ZnNv
cHMuYyB8IDMgKysrCiBsaWIvcmFtZnMvcmFtZnNfdm5vcHMuYyAgfCAzICsrKwogMyBmaWxlcyBj
aGFuZ2VkLCA5IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9saWIvcmFtZnMvcmFtZnMuaCBi
L2xpYi9yYW1mcy9yYW1mcy5oCmluZGV4IGU0ZWViNjVmLi4wMWU0ZGEwOSAxMDA2NDQKLS0tIGEv
bGliL3JhbWZzL3JhbWZzLmgKKysrIGIvbGliL3JhbWZzL3JhbWZzLmgKQEAgLTEsNSArMSw4IEBA
CisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCiAvKgogICogQ29w
eXJpZ2h0IChjKSAyMDA2LTIwMDcsIEtvaHN1a2UgT2h0YW5pCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQ2xvdWRpdXMgU3lzdGVtcywgTHRkLgorICogQ29weXJpZ2h0IChjKSAyMDE5LCBORUMgRXVy
b3BlIEx0ZC4sIE5FQyBDb3Jwb3JhdGlvbi4KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CmRpZmYgLS1naXQgYS9saWIvcmFtZnMvcmFtZnNfdmZzb3BzLmMgYi9saWIv
cmFtZnMvcmFtZnNfdmZzb3BzLmMKaW5kZXggNTNhZTc1OGEuLjRkZjU0YzVmIDEwMDY0NAotLS0g
YS9saWIvcmFtZnMvcmFtZnNfdmZzb3BzLmMKKysrIGIvbGliL3JhbWZzL3JhbWZzX3Zmc29wcy5j
CkBAIC0xLDUgKzEsOCBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVz
ZSAqLwogLyoKICAqIENvcHlyaWdodCAoYykgMjAwNi0yMDA3LCBLb2hzdWtlIE9odGFuaQorICog
Q29weXJpZ2h0IChDKSAyMDE0IENsb3VkaXVzIFN5c3RlbXMsIEx0ZC4KKyAqIENvcHlyaWdodCAo
YykgMjAxOSwgTkVDIEV1cm9wZSBMdGQuLCBORUMgQ29ycG9yYXRpb24uCiAgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApkaWZmIC0tZ2l0IGEvbGliL3JhbWZzL3JhbWZz
X3Zub3BzLmMgYi9saWIvcmFtZnMvcmFtZnNfdm5vcHMuYwppbmRleCA4YjU4NmY4OC4uNDUzOGU5
Y2IgMTAwNjQ0Ci0tLSBhL2xpYi9yYW1mcy9yYW1mc192bm9wcy5jCisrKyBiL2xpYi9yYW1mcy9y
YW1mc192bm9wcy5jCkBAIC0xLDUgKzEsOCBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6
IEJTRC0zLUNsYXVzZSAqLwogLyoKICAqIENvcHlyaWdodCAoYykgMjAwNi0yMDA3LCBLb2hzdWtl
IE9odGFuaQorICogQ29weXJpZ2h0IChDKSAyMDE0IENsb3VkaXVzIFN5c3RlbXMsIEx0ZC4KKyAq
IENvcHlyaWdodCAoYykgMjAxOSwgTkVDIEV1cm9wZSBMdGQuLCBORUMgQ29ycG9yYXRpb24uCiAg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLSAKMi4xOS4yCgoKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVs
IG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9s
aXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Feb 06 10:42:36 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 06 Feb 2019 10:42:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grKf6-0003Dl-BA; Wed, 06 Feb 2019 10:42:36 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Hs2p=QN=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1grKf5-0003DC-7S
 for minios-devel@lists.xen.org; Wed, 06 Feb 2019 10:42:35 +0000
X-Inumbo-ID: e8c79a43-29fb-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id e8c79a43-29fb-11e9-bc90-bc764e045a96;
 Wed, 06 Feb 2019 10:42:33 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id C283E104D89;
 Wed,  6 Feb 2019 11:42:32 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id nOJ14DOWORaC; Wed,  6 Feb 2019 11:42:32 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id A35A3104D87
 for <minios-devel@lists.xen.org>; Wed,  6 Feb 2019 11:42:30 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Wed, 6 Feb 2019 11:42:30 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 6 Feb 2019 11:42:06 +0100
Message-ID: <20190206104214.23847-6-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190206104214.23847-1-yuri.volchkov@neclab.eu>
References: <20190206104214.23847-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH 5/6] lib/ramfs: fix debug printouts
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Simon.kuenzer@neclab.eu, sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogbGliL3JhbWZzL3JhbWZzLmggICAgICAgfCAgNCArKystCiBsaWIvcmFtZnMvcmFtZnNfdm5v
cHMuYyB8IDEwICsrKysrKy0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCA1
IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpYi9yYW1mcy9yYW1mcy5oIGIvbGliL3JhbWZz
L3JhbWZzLmgKaW5kZXggOTFmYjU3OWMuLjQzZjJmMzZiIDEwMDY0NAotLS0gYS9saWIvcmFtZnMv
cmFtZnMuaAorKysgYi9saWIvcmFtZnMvcmFtZnMuaApAQCAtMzgsNyArMzgsNyBAQAogLyogI2Rl
ZmluZSBERUJVR19SQU1GUyAxICovCiAKICNpZmRlZiBERUJVR19SQU1GUwotI2RlZmluZSBEUFJJ
TlRGKGEpCWRwcmludGYgYQorI2RlZmluZSBEUFJJTlRGKGEpCXVrX3ByX2RlYnVnIGEKICNlbHNl
CiAjZGVmaW5lIERQUklOVEYoYSkgICAgZG8ge30gd2hpbGUgKDApCiAjZW5kaWYKQEAgLTY4LDQg
KzY4LDYgQEAgc3RydWN0IHJhbWZzX25vZGUgKnJhbWZzX2FsbG9jYXRlX25vZGUoY29uc3QgY2hh
ciAqbmFtZSwgaW50IHR5cGUpOwogCiB2b2lkIHJhbWZzX2ZyZWVfbm9kZShzdHJ1Y3QgcmFtZnNf
bm9kZSAqbm9kZSk7CiAKKyNkZWZpbmUgUkFNRlNfTk9ERSh2bm9kZSkgKChzdHJ1Y3QgcmFtZnNf
bm9kZSAqKSB2bm9kZS0+dl9kYXRhKQorCiAjZW5kaWYgLyogIV9SQU1GU19IICovCmRpZmYgLS1n
aXQgYS9saWIvcmFtZnMvcmFtZnNfdm5vcHMuYyBiL2xpYi9yYW1mcy9yYW1mc192bm9wcy5jCmlu
ZGV4IDY2YWI4YTY0Li4xZmFkZWQwNSAxMDA2NDQKLS0tIGEvbGliL3JhbWZzL3JhbWZzX3Zub3Bz
LmMKKysrIGIvbGliL3JhbWZzL3JhbWZzX3Zub3BzLmMKQEAgLTMyOCw5ICszMjgsMTAgQEAgcmFt
ZnNfcm1kaXIoc3RydWN0IHZub2RlICpkdnAsIHN0cnVjdCB2bm9kZSAqdnAsIGNoYXIgKm5hbWUg
X191bnVzZWQpCiAKIC8qIFJlbW92ZSBhIGZpbGUgKi8KIHN0YXRpYyBpbnQKLXJhbWZzX3JlbW92
ZShzdHJ1Y3Qgdm5vZGUgKmR2cCwgc3RydWN0IHZub2RlICp2cCwgY2hhciAqbmFtZSBfX3VudXNl
ZCkKK3JhbWZzX3JlbW92ZShzdHJ1Y3Qgdm5vZGUgKmR2cCwgc3RydWN0IHZub2RlICp2cCwgY2hh
ciAqbmFtZSBfX21heWJlX3VudXNlZCkKIHsKLQlEUFJJTlRGKCgicmVtb3ZlICVzIGluICVzXG4i
LCBuYW1lLCBkdnAtPnZfcGF0aCkpOworCURQUklOVEYoKCJyZW1vdmUgJXMgaW4gJXNcbiIsIG5h
bWUsCisJCSBSQU1GU19OT0RFKGR2cCktPnJuX25hbWUpKTsKIAlyZXR1cm4gcmFtZnNfcmVtb3Zl
X25vZGUoZHZwLT52X2RhdGEsIHZwLT52X2RhdGEpOwogfQogCkBAIC0zNDIsNyArMzQzLDggQEAg
cmFtZnNfdHJ1bmNhdGUoc3RydWN0IHZub2RlICp2cCwgb2ZmX3QgbGVuZ3RoKQogCXZvaWQgKm5l
d19idWY7CiAJc2l6ZV90IG5ld19zaXplOwogCi0JRFBSSU5URigoInRydW5jYXRlICVzIGxlbmd0
aD0lZFxuIiwgdnAtPnZfcGF0aCwgbGVuZ3RoKSk7CisJRFBSSU5URigoInRydW5jYXRlICVzIGxl
bmd0aD0lbGxkXG4iLCBSQU1GU19OT0RFKHZwKS0+cm5fbmFtZSwKKwkJIChsb25nIGxvbmcpIGxl
bmd0aCkpOwogCW5wID0gdnAtPnZfZGF0YTsKIAogCWlmIChsZW5ndGggPT0gMCkgewpAQCAtMzg1
LDcgKzM4Nyw3IEBAIHJhbWZzX2NyZWF0ZShzdHJ1Y3Qgdm5vZGUgKmR2cCwgY2hhciAqbmFtZSwg
bW9kZV90IG1vZGUpCiAJCXJldHVybiBFTkFNRVRPT0xPTkc7CiAJfQogCi0JRFBSSU5URigoImNy
ZWF0ZSAlcyBpbiAlc1xuIiwgbmFtZSwgZHZwLT52X3BhdGgpKTsKKwlEUFJJTlRGKCgiY3JlYXRl
ICVzIGluICVzXG4iLCBuYW1lLCBSQU1GU19OT0RFKGR2cCktPnJuX25hbWUpKTsKIAlpZiAoIVNf
SVNSRUcobW9kZSkpCiAJCXJldHVybiBFSU5WQUw7CiAKLS0gCjIuMTkuMgoKCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5n
IGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVu
cHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Feb 06 10:42:41 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 06 Feb 2019 10:42:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grKfB-0003Fc-DM; Wed, 06 Feb 2019 10:42:41 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Hs2p=QN=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1grKfA-0003FF-C0
 for minios-devel@lists.xen.org; Wed, 06 Feb 2019 10:42:40 +0000
X-Inumbo-ID: ea59b3c0-29fb-11e9-9ae9-07a76a3b901e
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id ea59b3c0-29fb-11e9-9ae9-07a76a3b901e;
 Wed, 06 Feb 2019 10:42:36 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 661FEF2048;
 Wed,  6 Feb 2019 11:42:35 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id xkxLC7Gu9txy; Wed,  6 Feb 2019 11:42:35 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 39C43F2023
 for <minios-devel@lists.xen.org>; Wed,  6 Feb 2019 11:42:33 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Wed, 6 Feb 2019 11:42:32 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 6 Feb 2019 11:42:07 +0100
Message-ID: <20190206104214.23847-7-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190206104214.23847-1-yuri.volchkov@neclab.eu>
References: <20190206104214.23847-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH 6/6] lib/ramfs: fix style issues
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Simon.kuenzer@neclab.eu, sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhlIG5vbi1uZWdhdGl2ZSByZXR1cm4gY29kZXMgdHlwZXMgb2YgY2hlY2stcGF0Y2ggY29tcGxh
aW5zIGFyZQppZ25vcmVkIGZvciBub3csIGJlY2F1c2UgdGhpcyB3aWxsIGJyYWtlIGNvbXBhdGli
aWxpdHkgd2l0aCBjdXJyZW50CnZmc2NvcmUuCgpTaWduZWQtb2ZmLWJ5OiBZdXJpIFZvbGNoa292
IDx5dXJpLnZvbGNoa292QG5lY2xhYi5ldT4KLS0tCiBsaWIvcmFtZnMvcmFtZnNfdmZzb3BzLmMg
fCAgIDUgKy0KIGxpYi9yYW1mcy9yYW1mc192bm9wcy5jICB8IDEwMCArKysrKysrKysrKysrKysr
KystLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgNDggaW5zZXJ0aW9ucygr
KSwgNTcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliL3JhbWZzL3JhbWZzX3Zmc29wcy5j
IGIvbGliL3JhbWZzL3JhbWZzX3Zmc29wcy5jCmluZGV4IDNiNWMwNzVjLi5jNDUyNDVmZCAxMDA2
NDQKLS0tIGEvbGliL3JhbWZzL3JhbWZzX3Zmc29wcy5jCisrKyBiL2xpYi9yYW1mcy9yYW1mc192
ZnNvcHMuYwpAQCAtNDEsNyArNDEsOCBAQAogCiBleHRlcm4gc3RydWN0IHZub3BzIHJhbWZzX3Zu
b3BzOwogCi1zdGF0aWMgaW50IHJhbWZzX21vdW50KHN0cnVjdCBtb3VudCAqbXAsIGNvbnN0IGNo
YXIgKmRldiwgaW50IGZsYWdzLCBjb25zdCB2b2lkICpkYXRhKTsKK3N0YXRpYyBpbnQgcmFtZnNf
bW91bnQoc3RydWN0IG1vdW50ICptcCwgY29uc3QgY2hhciAqZGV2LCBpbnQgZmxhZ3MsCisJCSAg
ICAgICBjb25zdCB2b2lkICpkYXRhKTsKIAogc3RhdGljIGludCByYW1mc191bm1vdW50KHN0cnVj
dCBtb3VudCAqbXAsIGludCBmbGFncyk7CiAKQEAgLTc4LDcgKzc5LDcgQEAgcmFtZnNfbW91bnQo
c3RydWN0IG1vdW50ICptcCwgY29uc3QgY2hhciAqZGV2IF9fdW51c2VkLAogewogCXN0cnVjdCBy
YW1mc19ub2RlICpucDsKIAotCURQUklOVEYoKCJyYW1mc19tb3VudDogZGV2PSVzXG4iLCBkZXYp
KTsKKwlEUFJJTlRGKCgiJXM6IGRldj0lc1xuIiwgX19mdW5jX18sIGRldikpOwogCiAJLyogQ3Jl
YXRlIGEgcm9vdCBub2RlICovCiAJbnAgPSByYW1mc19hbGxvY2F0ZV9ub2RlKCIvIiwgVkRJUik7
CmRpZmYgLS1naXQgYS9saWIvcmFtZnMvcmFtZnNfdm5vcHMuYyBiL2xpYi9yYW1mcy9yYW1mc192
bm9wcy5jCmluZGV4IDFmYWRlZDA1Li43NGNlN2ZiZSAxMDA2NDQKLS0tIGEvbGliL3JhbWZzL3Jh
bWZzX3Zub3BzLmMKKysrIGIvbGliL3JhbWZzL3JhbWZzX3Zub3BzLmMKQEAgLTY2LDE1ICs2Niwx
MiBAQCBzZXRfdGltZXNfdG9fbm93KHN0cnVjdCB0aW1lc3BlYyAqdGltZTEsIHN0cnVjdCB0aW1l
c3BlYyAqdGltZTIsCiAKIAkvKiBUT0RPOiBpbXBsZW1lbnQgdGhlIHJlYWwgY2xvY2tfZ2V0dGlt
ZSAqLwogCS8qIGNsb2NrX2dldHRpbWUoQ0xPQ0tfUkVBTFRJTUUsICZub3cpOyAqLwotCWlmICh0
aW1lMSkgeworCWlmICh0aW1lMSkKIAkJbWVtY3B5KHRpbWUxLCAmbm93LCBzaXplb2Yoc3RydWN0
IHRpbWVzcGVjKSk7Ci0JfQotCWlmICh0aW1lMikgeworCWlmICh0aW1lMikKIAkJbWVtY3B5KHRp
bWUyLCAmbm93LCBzaXplb2Yoc3RydWN0IHRpbWVzcGVjKSk7Ci0JfQotCWlmICh0aW1lMykgewor
CWlmICh0aW1lMykKIAkJbWVtY3B5KHRpbWUzLCAmbm93LCBzaXplb2Yoc3RydWN0IHRpbWVzcGVj
KSk7Ci0JfQogfQogCiBzdHJ1Y3QgcmFtZnNfbm9kZSAqCkBAIC0xODQsOSArMTgxLDkgQEAgcmFt
ZnNfcmVuYW1lX25vZGUoc3RydWN0IHJhbWZzX25vZGUgKm5wLCBjaGFyICpuYW1lKQogCWNoYXIg
KnRtcDsKIAogCWxlbiA9IHN0cmxlbihuYW1lKTsKLQlpZiAobGVuID4gTkFNRV9NQVgpIHsKKwlp
ZiAobGVuID4gTkFNRV9NQVgpCiAJCXJldHVybiBFTkFNRVRPT0xPTkc7Ci0JfQorCiAJaWYgKGxl
biA8PSBucC0+cm5fbmFtZWxlbikgewogCQkvKiBSZXVzZSBjdXJyZW50IG5hbWUgYnVmZmVyICov
CiAJCXN0cmxjcHkobnAtPnJuX25hbWUsIG5hbWUsIG5wLT5ybl9uYW1lbGVuICsgMSk7CkBAIC0y
NjEsOSArMjU4LDggQEAgcmFtZnNfbWtkaXIoc3RydWN0IHZub2RlICpkdnAsIGNoYXIgKm5hbWUs
IG1vZGVfdCBtb2RlKQogCXN0cnVjdCByYW1mc19ub2RlICpucDsKIAogCURQUklOVEYoKCJta2Rp
ciAlc1xuIiwgbmFtZSkpOwotCWlmIChzdHJsZW4obmFtZSkgPiBOQU1FX01BWCkgeworCWlmIChz
dHJsZW4obmFtZSkgPiBOQU1FX01BWCkKIAkJcmV0dXJuIEVOQU1FVE9PTE9ORzsKLQl9CiAKIAlp
ZiAoIVNfSVNESVIobW9kZSkpCiAJCXJldHVybiBFSU5WQUw7CkBAIC0yNzksMTQgKzI3NSwxOSBA
QCByYW1mc19ta2RpcihzdHJ1Y3Qgdm5vZGUgKmR2cCwgY2hhciAqbmFtZSwgbW9kZV90IG1vZGUp
CiBzdGF0aWMgaW50CiByYW1mc19zeW1saW5rKHN0cnVjdCB2bm9kZSAqZHZwLCBjaGFyICpuYW1l
LCBjaGFyICpsaW5rKQogewotCWlmIChzdHJsZW4obmFtZSkgPiBOQU1FX01BWCkgeworCXN0cnVj
dCByYW1mc19ub2RlICpucDsKKwlzaXplX3QgbGVuOworCisJaWYgKHN0cmxlbihuYW1lKSA+IE5B
TUVfTUFYKQogCQlyZXR1cm4gRU5BTUVUT09MT05HOwotCX0KLQlzdHJ1Y3QgcmFtZnNfbm9kZSAq
bnAgPSByYW1mc19hZGRfbm9kZShkdnAtPnZfZGF0YSwgbmFtZSwgVkxOSyk7CisKKwlucCA9IHJh
bWZzX2FkZF9ub2RlKGR2cC0+dl9kYXRhLCBuYW1lLCBWTE5LKTsKKwogCWlmIChucCA9PSBOVUxM
KQogCQlyZXR1cm4gRU5PTUVNOwogCS8vIFNhdmUgdGhlIGxpbmsgdGFyZ2V0IHdpdGhvdXQgdGhl
IGZpbmFsIG51bGwsIGFzIHJlYWRsaW5rKCkgd2FudHMgaXQuCi0Jc2l6ZV90IGxlbiA9IHN0cmxl
bihsaW5rKTsKKwlsZW4gPSBzdHJsZW4obGluayk7CisKIAlucC0+cm5fYnVmID0gc3RybmR1cChs
aW5rLCBsZW4pOwogCW5wLT5ybl9idWZzaXplID0gbnAtPnJuX3NpemUgPSBsZW47CiAKQEAgLTI5
OSwxNSArMzAwLDEyIEBAIHJhbWZzX3JlYWRsaW5rKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCB1
aW8gKnVpbykKIAlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSB2cC0+dl9kYXRhOwogCXNpemVfdCBs
ZW47CiAKLQlpZiAodnAtPnZfdHlwZSAhPSBWTE5LKSB7CisJaWYgKHZwLT52X3R5cGUgIT0gVkxO
SykKIAkJcmV0dXJuIEVJTlZBTDsKLQl9Ci0JaWYgKHVpby0+dWlvX29mZnNldCA8IDApIHsKKwlp
ZiAodWlvLT51aW9fb2Zmc2V0IDwgMCkKIAkJcmV0dXJuIEVJTlZBTDsKLQl9Ci0JaWYgKHVpby0+
dWlvX3Jlc2lkID09IDApIHsKKwlpZiAodWlvLT51aW9fcmVzaWQgPT0gMCkKIAkJcmV0dXJuIDA7
Ci0JfQogCWlmICh1aW8tPnVpb19vZmZzZXQgPj0gKG9mZl90KSB2cC0+dl9zaXplKQogCQlyZXR1
cm4gMDsKIAlpZiAodnAtPnZfc2l6ZSAtIHVpby0+dWlvX29mZnNldCA8IHVpby0+dWlvX3Jlc2lk
KQpAQCAtMzQ5LDcgKzM0Nyw3IEBAIHJhbWZzX3RydW5jYXRlKHN0cnVjdCB2bm9kZSAqdnAsIG9m
Zl90IGxlbmd0aCkKIAogCWlmIChsZW5ndGggPT0gMCkgewogCQlpZiAobnAtPnJuX2J1ZiAhPSBO
VUxMKSB7Ci0JCQlpZihucC0+cm5fb3duc19idWYpCisJCQlpZiAobnAtPnJuX293bnNfYnVmKQog
CQkJCWZyZWUobnAtPnJuX2J1Zik7CiAJCQlucC0+cm5fYnVmID0gTlVMTDsKIAkJCW5wLT5ybl9i
dWZzaXplID0gMDsKQEAgLTM2Miw3ICszNjAsNyBAQCByYW1mc190cnVuY2F0ZShzdHJ1Y3Qgdm5v
ZGUgKnZwLCBvZmZfdCBsZW5ndGgpCiAJCQlyZXR1cm4gRUlPOwogCQlpZiAobnAtPnJuX3NpemUg
IT0gMCkgewogCQkJbWVtY3B5KG5ld19idWYsIG5wLT5ybl9idWYsIHZwLT52X3NpemUpOwotCQkJ
aWYobnAtPnJuX293bnNfYnVmKQorCQkJaWYgKG5wLT5ybl9vd25zX2J1ZikKIAkJCQlmcmVlKG5w
LT5ybl9idWYpOwogCQl9CiAJCW5wLT5ybl9idWYgPSAoY2hhciAqKSBuZXdfYnVmOwpAQCAtMzgz
LDkgKzM4MSw4IEBAIHJhbWZzX2NyZWF0ZShzdHJ1Y3Qgdm5vZGUgKmR2cCwgY2hhciAqbmFtZSwg
bW9kZV90IG1vZGUpCiB7CiAJc3RydWN0IHJhbWZzX25vZGUgKm5wOwogCi0JaWYgKHN0cmxlbihu
YW1lKSA+IE5BTUVfTUFYKSB7CisJaWYgKHN0cmxlbihuYW1lKSA+IE5BTUVfTUFYKQogCQlyZXR1
cm4gRU5BTUVUT09MT05HOwotCX0KIAogCURQUklOVEYoKCJjcmVhdGUgJXMgaW4gJXNcbiIsIG5h
bWUsIFJBTUZTX05PREUoZHZwKS0+cm5fbmFtZSkpOwogCWlmICghU19JU1JFRyhtb2RlKSkKQEAg
LTQwNCwxOCArNDAxLDE0IEBAIHJhbWZzX3JlYWQoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IHZm
c2NvcmVfZmlsZSAqZnAgX191bnVzZWQsCiAJc3RydWN0IHJhbWZzX25vZGUgKm5wID0gIHZwLT52
X2RhdGE7CiAJc2l6ZV90IGxlbjsKIAotCWlmICh2cC0+dl90eXBlID09IFZESVIpIHsKKwlpZiAo
dnAtPnZfdHlwZSA9PSBWRElSKQogCQlyZXR1cm4gRUlTRElSOwotCX0KLQlpZiAodnAtPnZfdHlw
ZSAhPSBWUkVHKSB7CisJaWYgKHZwLT52X3R5cGUgIT0gVlJFRykKIAkJcmV0dXJuIEVJTlZBTDsK
LQl9Ci0JaWYgKHVpby0+dWlvX29mZnNldCA8IDApIHsKKwlpZiAodWlvLT51aW9fb2Zmc2V0IDwg
MCkKIAkJcmV0dXJuIEVJTlZBTDsKLQl9Ci0JaWYgKHVpby0+dWlvX3Jlc2lkID09IDApIHsKKwlp
ZiAodWlvLT51aW9fcmVzaWQgPT0gMCkKIAkJcmV0dXJuIDA7Ci0JfQogCiAJaWYgKHVpby0+dWlv
X29mZnNldCA+PSAob2ZmX3QpIHZwLT52X3NpemUpCiAJCXJldHVybiAwOwpAQCAtNDM1LDE1ICs0
MjgsMTIgQEAgcmFtZnNfc2V0X2ZpbGVfZGF0YShzdHJ1Y3Qgdm5vZGUgKnZwLCBjb25zdCB2b2lk
ICpkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKIAlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSAgdnAtPnZf
ZGF0YTsKIAotCWlmICh2cC0+dl90eXBlID09IFZESVIpIHsKKwlpZiAodnAtPnZfdHlwZSA9PSBW
RElSKQogCQlyZXR1cm4gRUlTRElSOwotCX0KLQlpZiAodnAtPnZfdHlwZSAhPSBWUkVHKSB7CisJ
aWYgKHZwLT52X3R5cGUgIT0gVlJFRykKIAkJcmV0dXJuIEVJTlZBTDsKLQl9Ci0JaWYgKG5wLT5y
bl9idWYpIHsKKwlpZiAobnAtPnJuX2J1ZikKIAkJcmV0dXJuIEVJTlZBTDsKLQl9CiAKIAlucC0+
cm5fYnVmID0gKGNoYXIgKikgZGF0YTsKIAlucC0+cm5fYnVmc2l6ZSA9IHNpemU7CkBAIC00NTks
MjEgKzQ0OSwxNiBAQCByYW1mc193cml0ZShzdHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3QgdWlvICp1
aW8sIGludCBpb2ZsYWcpCiB7CiAJc3RydWN0IHJhbWZzX25vZGUgKm5wID0gIHZwLT52X2RhdGE7
CiAKLQlpZiAodnAtPnZfdHlwZSA9PSBWRElSKSB7CisJaWYgKHZwLT52X3R5cGUgPT0gVkRJUikK
IAkJcmV0dXJuIEVJU0RJUjsKLQl9Ci0JaWYgKHZwLT52X3R5cGUgIT0gVlJFRykgeworCWlmICh2
cC0+dl90eXBlICE9IFZSRUcpCiAJCXJldHVybiBFSU5WQUw7Ci0JfQotCWlmICh1aW8tPnVpb19v
ZmZzZXQgPCAwKSB7CisJaWYgKHVpby0+dWlvX29mZnNldCA8IDApCiAJCXJldHVybiBFSU5WQUw7
Ci0JfQotCWlmICh1aW8tPnVpb19vZmZzZXQgPj0gTE9OR19NQVgpIHsKKwlpZiAodWlvLT51aW9f
b2Zmc2V0ID49IExPTkdfTUFYKQogCQlyZXR1cm4gRUZCSUc7Ci0JfQotCWlmICh1aW8tPnVpb19y
ZXNpZCA9PSAwKSB7CisJaWYgKHVpby0+dWlvX3Jlc2lkID09IDApCiAJCXJldHVybiAwOwotCX0K
IAogCWlmIChpb2ZsYWcgJiBJT19BUFBFTkQpCiAJCXVpby0+dWlvX29mZnNldCA9IG5wLT5ybl9z
aXplOwpAQCAtNDgxLDE1ICs0NjYsMTcgQEAgcmFtZnNfd3JpdGUoc3RydWN0IHZub2RlICp2cCwg
c3RydWN0IHVpbyAqdWlvLCBpbnQgaW9mbGFnKQogCWlmICgoc2l6ZV90KSB1aW8tPnVpb19vZmZz
ZXQgKyB1aW8tPnVpb19yZXNpZCA+IChzaXplX3QpIHZwLT52X3NpemUpIHsKIAkJLyogRXhwYW5k
IHRoZSBmaWxlIHNpemUgYmVmb3JlIHdyaXRpbmcgdG8gaXQgKi8KIAkJb2ZmX3QgZW5kX3BvcyA9
IHVpby0+dWlvX29mZnNldCArIHVpby0+dWlvX3Jlc2lkOworCiAJCWlmIChlbmRfcG9zID4gKG9m
Zl90KSBucC0+cm5fYnVmc2l6ZSkgewogCQkJLy8gWFhYOiB0aGlzIGNvdWxkIHVzZSBhIHBhZ2Ug
bGV2ZWwgYWxsb2NhdG9yCiAJCQlzaXplX3QgbmV3X3NpemUgPSByb3VuZF9wYWdlKGVuZF9wb3Mp
OwogCQkJdm9pZCAqbmV3X2J1ZiA9IG1hbGxvYyhuZXdfc2l6ZSk7CisKIAkJCWlmICghbmV3X2J1
ZikKIAkJCQlyZXR1cm4gRUlPOwogCQkJaWYgKG5wLT5ybl9zaXplICE9IDApIHsKIAkJCQltZW1j
cHkobmV3X2J1ZiwgbnAtPnJuX2J1ZiwgdnAtPnZfc2l6ZSk7Ci0JCQkJaWYobnAtPnJuX293bnNf
YnVmKQorCQkJCWlmIChucC0+cm5fb3duc19idWYpCiAJCQkJCWZyZWUobnAtPnJuX2J1Zik7CiAJ
CQl9CiAJCQlucC0+cm5fYnVmID0gKGNoYXIgKikgbmV3X2J1ZjsKQEAgLTYyMywyNCArNjEwLDI3
IEBAIHJhbWZzX2dldGF0dHIoc3RydWN0IHZub2RlICp2bm9kZSwgc3RydWN0IHZhdHRyICphdHRy
KQogfQogCiBzdGF0aWMgaW50Ci1yYW1mc19zZXRhdHRyKHN0cnVjdCB2bm9kZSAqdm5vZGUsIHN0
cnVjdCB2YXR0ciAqYXR0cikgeworcmFtZnNfc2V0YXR0cihzdHJ1Y3Qgdm5vZGUgKnZub2RlLCBz
dHJ1Y3QgdmF0dHIgKmF0dHIpCit7CiAJc3RydWN0IHJhbWZzX25vZGUgKm5wID0gdm5vZGUtPnZf
ZGF0YTsKIAogCWlmIChhdHRyLT52YV9tYXNrICYgQVRfQVRJTUUpIHsKLQkJbWVtY3B5KCYobnAt
PnJuX2F0aW1lKSwgJihhdHRyLT52YV9hdGltZSksIHNpemVvZihzdHJ1Y3QgdGltZXNwZWMpKTsK
KwkJbWVtY3B5KCYobnAtPnJuX2F0aW1lKSwgJihhdHRyLT52YV9hdGltZSksCisJCSAgICAgICBz
aXplb2Yoc3RydWN0IHRpbWVzcGVjKSk7CiAJfQogCiAJaWYgKGF0dHItPnZhX21hc2sgJiBBVF9D
VElNRSkgewotCQltZW1jcHkoJihucC0+cm5fY3RpbWUpLCAmKGF0dHItPnZhX2N0aW1lKSwgc2l6
ZW9mKHN0cnVjdCB0aW1lc3BlYykpOworCQltZW1jcHkoJihucC0+cm5fY3RpbWUpLCAmKGF0dHIt
PnZhX2N0aW1lKSwKKwkJICAgICAgIHNpemVvZihzdHJ1Y3QgdGltZXNwZWMpKTsKIAl9CiAKIAlp
ZiAoYXR0ci0+dmFfbWFzayAmIEFUX01USU1FKSB7Ci0JCW1lbWNweSgmKG5wLT5ybl9tdGltZSks
ICYoYXR0ci0+dmFfbXRpbWUpLCBzaXplb2Yoc3RydWN0IHRpbWVzcGVjKSk7CisJCW1lbWNweSgm
KG5wLT5ybl9tdGltZSksICYoYXR0ci0+dmFfbXRpbWUpLAorCQkgICAgICAgc2l6ZW9mKHN0cnVj
dCB0aW1lc3BlYykpOwogCX0KIAotCWlmIChhdHRyLT52YV9tYXNrICYgQVRfTU9ERSkgeworCWlm
IChhdHRyLT52YV9tYXNrICYgQVRfTU9ERSkKIAkJbnAtPnJuX21vZGUgPSBhdHRyLT52YV9tb2Rl
OwotCX0KIAogCXJldHVybiAwOwogfQotLSAKMi4xOS4yCgoKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5p
b3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9y
Zy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Feb 06 10:42:42 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 06 Feb 2019 10:42:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grKfC-0003GI-Es; Wed, 06 Feb 2019 10:42:42 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Hs2p=QN=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1grKfA-0003FJ-Fz
 for minios-devel@lists.xen.org; Wed, 06 Feb 2019 10:42:40 +0000
X-Inumbo-ID: ebee1f77-29fb-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id ebee1f77-29fb-11e9-bc90-bc764e045a96;
 Wed, 06 Feb 2019 10:42:39 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 1A2F8104D8A;
 Wed,  6 Feb 2019 11:42:38 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id vJTEHdb-j_9C; Wed,  6 Feb 2019 11:42:37 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id DFC9E104D88
 for <minios-devel@lists.xen.org>; Wed,  6 Feb 2019 11:42:35 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Wed, 6 Feb 2019 11:42:35 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 6 Feb 2019 11:42:08 +0100
Message-ID: <20190206104214.23847-8-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190206104214.23847-1-yuri.volchkov@neclab.eu>
References: <20190206104214.23847-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH 0/6] Import ramfs from OSv
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Simon.kuenzer@neclab.eu, sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2FtZSBhcyB3aXRoIHZmc2NvcmUgLSB0aGUgbWluaW1hbCBudW1iZXIgb2YgbW9kaWZpY2F0aW9u
cyB0byBtYWtlIGl0CndvcmtpbmcgaW4gVW5pa3JhZnQuIEZvcnR1bmF0ZWxseSByYW1mcyBpcyB2
ZXJ5IHNtYWxsLCBhbmQgYWxtb3N0IGRpZApub3QgaGF2ZSBjKysgcGllY2VzIG9mIGNvZGUuIFNv
IHRoaXMgdGltZSBJIGV2ZW4gaGFkIGEgcm9vbSB0byBmaXgKc3R5bGUgcHJvYmxlbXMsIGV4Y2Vw
dCBmZXcgb2YgdGhlbS4KCll1cmkgVm9sY2hrb3YgKDYpOgogIGxpYi9yYW1mczogaW5pdGlhbCBp
bXBvcnQgZnJvbSBPU3YKICBsaWIvcmFtZnM6IHRhYmlmeSBpbXBvcnRlZCByYW1mcyBjb2RlCiAg
bGliL3JhbWZzOiB1cGRhdGUgbGljZW5zZSBoZWFkZXIgZm9yIGltcG9ydGVkIGZpbGVzCiAgbGli
L3JhbWZzOiBhZGFwdCBpbXBvcnRlZCByYW1mcyB0byBVbmlrcmFmdAogIGxpYi9yYW1mczogZml4
IGRlYnVnIHByaW50b3V0cwogIGxpYi9yYW1mczogZml4IHN0eWxlIGlzc3VlcwoKIGxpYi9Db25m
aWcudWsgICAgICAgICAgICB8ICAgMSArCiBsaWIvTWFrZWZpbGUudWsgICAgICAgICAgfCAgIDEg
KwogbGliL3JhbWZzL2V4cG9ydHN5bXMudWsgIHwgICAxICsKIGxpYi9yYW1mcy9yYW1mcy5oICAg
ICAgICB8ICA3MyArKysrKwogbGliL3JhbWZzL3JhbWZzX3Zmc29wcy5jIHwgMTA0ICsrKysrKwog
bGliL3JhbWZzL3JhbWZzX3Zub3BzLmMgIHwgNjc1ICsrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKwogNiBmaWxlcyBjaGFuZ2VkLCA4NTUgaW5zZXJ0aW9ucygrKQogY3JlYXRl
IG1vZGUgMTAwNjQ0IGxpYi9yYW1mcy9leHBvcnRzeW1zLnVrCiBjcmVhdGUgbW9kZSAxMDA2NDQg
bGliL3JhbWZzL3JhbWZzLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvcmFtZnMvcmFtZnNfdmZz
b3BzLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvcmFtZnMvcmFtZnNfdm5vcHMuYwoKLS0gCjIu
MTkuMgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1p
bmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3Jn
Cmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2
ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Feb 06 10:42:45 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 06 Feb 2019 10:42:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grKfF-0003HU-GX; Wed, 06 Feb 2019 10:42:45 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Hs2p=QN=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1grKfD-0003Gr-N6
 for minios-devel@lists.xen.org; Wed, 06 Feb 2019 10:42:43 +0000
X-Inumbo-ID: ed74db68-29fb-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id ed74db68-29fb-11e9-bc90-bc764e045a96;
 Wed, 06 Feb 2019 10:42:41 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id A0991F2048;
 Wed,  6 Feb 2019 11:42:40 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 74BQZfGeaFAT; Wed,  6 Feb 2019 11:42:40 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 6F636F2023
 for <minios-devel@lists.xen.org>; Wed,  6 Feb 2019 11:42:38 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Wed, 6 Feb 2019 11:42:38 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 6 Feb 2019 11:42:09 +0100
Message-ID: <20190206104214.23847-9-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190206104214.23847-1-yuri.volchkov@neclab.eu>
References: <20190206104214.23847-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH 1/6] lib/ramfs: initial import from
 OSv
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Simon.kuenzer@neclab.eu, sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Z2l0IHRhZzogdjAuNTIuMApjb21taXQ6IDAwMjk5MTkwNDE0ZTRjN2M1YjBmMmQ3NGNkMTE3NjNk
YWMzNGU1YjkKClNpZ25lZC1vZmYtYnk6IFl1cmkgVm9sY2hrb3YgPHl1cmkudm9sY2hrb3ZAbmVj
bGFiLmV1PgotLS0KIGxpYi9yYW1mcy9yYW1mcy5oICAgICAgICB8ICA2OCArKysrCiBsaWIvcmFt
ZnMvcmFtZnNfdmZzb3BzLmMgfCAgOTAgKysrKysrCiBsaWIvcmFtZnMvcmFtZnNfdm5vcHMuYyAg
fCA2NjkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNo
YW5nZWQsIDgyNyBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3JhbWZzL3Jh
bWZzLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvcmFtZnMvcmFtZnNfdmZzb3BzLmMKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBsaWIvcmFtZnMvcmFtZnNfdm5vcHMuYwoKZGlmZiAtLWdpdCBhL2xpYi9y
YW1mcy9yYW1mcy5oIGIvbGliL3JhbWZzL3JhbWZzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAuLjg4Y2NiZTcyCi0tLSAvZGV2L251bGwKKysrIGIvbGliL3JhbWZzL3JhbWZz
LmgKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwNi0yMDA3LCBLb2hz
dWtlIE9odGFuaQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRo
ZXIgdGhlIG5hbWUgb2YgdGhlIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGFueSBjby1jb250cmli
dXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQorICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBfUkFNRlNfSAorI2RlZmluZSBfUkFNRlNfSAorCisjaW5j
bHVkZSA8b3N2L3ByZXguaD4KKworLyogI2RlZmluZSBERUJVR19SQU1GUyAxICovCisKKyNpZmRl
ZiBERUJVR19SQU1GUworI2RlZmluZSBEUFJJTlRGKGEpCWRwcmludGYgYQorI2Vsc2UKKyNkZWZp
bmUgRFBSSU5URihhKSAgICBkbyB7fSB3aGlsZSAoMCkKKyNlbmRpZgorCisjZGVmaW5lIEFTU0VS
VChlKSAgICBhc3NlcnQoZSkKKworLyoKKyAqIEZpbGUvZGlyZWN0b3J5IG5vZGUgZm9yIFJBTUZT
CisgKi8KK3N0cnVjdCByYW1mc19ub2RlIHsKKyAgICBzdHJ1Y3QgcmFtZnNfbm9kZSAqcm5fbmV4
dDsgICAvKiBuZXh0IG5vZGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5ICovCisgICAgc3RydWN0IHJh
bWZzX25vZGUgKnJuX2NoaWxkOyAgLyogZmlyc3QgY2hpbGQgbm9kZSAqLworICAgIGludCBybl90
eXBlOyAgICAvKiBmaWxlIG9yIGRpcmVjdG9yeSAqLworICAgIGNoYXIgKnJuX25hbWU7ICAgIC8q
IG5hbWUgKG51bGwtdGVybWluYXRlZCkgKi8KKyAgICBzaXplX3Qgcm5fbmFtZWxlbjsgICAgLyog
bGVuZ3RoIG9mIG5hbWUgbm90IGluY2x1ZGluZyB0ZXJtaW5hdG9yICovCisgICAgc2l6ZV90IHJu
X3NpemU7ICAgIC8qIGZpbGUgc2l6ZSAqLworICAgIGNoYXIgKnJuX2J1ZjsgICAgLyogYnVmZmVy
IHRvIHRoZSBmaWxlIGRhdGEgKi8KKyAgICBzaXplX3Qgcm5fYnVmc2l6ZTsgICAgLyogYWxsb2Nh
dGVkIGJ1ZmZlciBzaXplICovCisgICAgc3RydWN0IHRpbWVzcGVjIHJuX2N0aW1lOworICAgIHN0
cnVjdCB0aW1lc3BlYyBybl9hdGltZTsKKyAgICBzdHJ1Y3QgdGltZXNwZWMgcm5fbXRpbWU7Cisg
ICAgaW50IHJuX21vZGU7CisgICAgYm9vbCBybl9vd25zX2J1ZjsKK307CisKK3N0cnVjdCByYW1m
c19ub2RlICpyYW1mc19hbGxvY2F0ZV9ub2RlKGNvbnN0IGNoYXIgKm5hbWUsIGludCB0eXBlKTsK
Kwordm9pZCByYW1mc19mcmVlX25vZGUoc3RydWN0IHJhbWZzX25vZGUgKm5vZGUpOworCisjZW5k
aWYgLyogIV9SQU1GU19IICovCmRpZmYgLS1naXQgYS9saWIvcmFtZnMvcmFtZnNfdmZzb3BzLmMg
Yi9saWIvcmFtZnMvcmFtZnNfdmZzb3BzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAuLjcyZmU3ZWRiCi0tLSAvZGV2L251bGwKKysrIGIvbGliL3JhbWZzL3JhbWZzX3Zmc29w
cy5jCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDYtMjAwNywgS29o
c3VrZSBPaHRhbmkKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0
aGVyIHRoZSBuYW1lIG9mIHRoZSBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBhbnkgY28tY29udHJp
YnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKKyAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlIDxlcnJuby5oPgorCisjaW5jbHVkZSA8b3N2L3Zub2Rl
Lmg+CisjaW5jbHVkZSA8b3N2L21vdW50Lmg+CisjaW5jbHVkZSA8b3N2L2RlbnRyeS5oPgorCisj
aW5jbHVkZSAicmFtZnMuaCIKKworZXh0ZXJuIHN0cnVjdCB2bm9wcyByYW1mc192bm9wczsKKwor
c3RhdGljIGludCByYW1mc19tb3VudChzdHJ1Y3QgbW91bnQgKm1wLCBjb25zdCBjaGFyICpkZXYs
IGludCBmbGFncywgY29uc3Qgdm9pZCAqZGF0YSk7CisKK3N0YXRpYyBpbnQgcmFtZnNfdW5tb3Vu
dChzdHJ1Y3QgbW91bnQgKm1wLCBpbnQgZmxhZ3MpOworCisjZGVmaW5lIHJhbWZzX3N5bmMgICAg
KCh2ZnNvcF9zeW5jX3QpdmZzX251bGxvcCkKKyNkZWZpbmUgcmFtZnNfdmdldCAgICAoKHZmc29w
X3ZnZXRfdCl2ZnNfbnVsbG9wKQorI2RlZmluZSByYW1mc19zdGF0ZnMgICAgKCh2ZnNvcF9zdGF0
ZnNfdCl2ZnNfbnVsbG9wKQorCisvKgorICogRmlsZSBzeXN0ZW0gb3BlcmF0aW9ucworICovCitz
dHJ1Y3QgdmZzb3BzIHJhbWZzX3Zmc29wcyA9IHsKKyAgICAgICAgcmFtZnNfbW91bnQsICAgICAg
IC8qIG1vdW50ICovCisgICAgICAgIHJhbWZzX3VubW91bnQsICAgICAvKiB1bm1vdW50ICovCisg
ICAgICAgIHJhbWZzX3N5bmMsICAgICAgICAvKiBzeW5jICovCisgICAgICAgIHJhbWZzX3ZnZXQs
ICAgICAgICAvKiB2Z2V0ICovCisgICAgICAgIHJhbWZzX3N0YXRmcywgICAgICAvKiBzdGF0ZnMg
Ki8KKyAgICAgICAgJnJhbWZzX3Zub3BzLCAgICAgIC8qIHZub3BzICovCit9OworCisvKgorICog
TW91bnQgYSBmaWxlIHN5c3RlbS4KKyAqLworc3RhdGljIGludAorcmFtZnNfbW91bnQoc3RydWN0
IG1vdW50ICptcCwgY29uc3QgY2hhciAqZGV2LCBpbnQgZmxhZ3MsIGNvbnN0IHZvaWQgKmRhdGEp
Cit7CisgICAgc3RydWN0IHJhbWZzX25vZGUgKm5wOworCisgICAgRFBSSU5URigoInJhbWZzX21v
dW50OiBkZXY9JXNcbiIsIGRldikpOworCisgICAgLyogQ3JlYXRlIGEgcm9vdCBub2RlICovCisg
ICAgbnAgPSByYW1mc19hbGxvY2F0ZV9ub2RlKCIvIiwgVkRJUik7CisgICAgaWYgKG5wID09IE5V
TEwpCisgICAgICAgIHJldHVybiBFTk9NRU07CisgICAgbXAtPm1fcm9vdC0+ZF92bm9kZS0+dl9k
YXRhID0gbnA7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qCisgKiBVbm1vdW50IGEgZmlsZSBzeXN0
ZW0uCisgKgorICogTk9URTogQ3VycmVudGx5LCB3ZSBkb24ndCBzdXBwb3J0IHVubW91bnRpbmcg
b2YgdGhlIFJBTUZTLiBUaGlzIGlzCisgKiAgICAgICBiZWNhdXNlIHdlIGhhdmUgdG8gZGVhbGxv
Y2F0ZSBhbGwgbm9kZXMgaW5jbHVkZWQgaW4gYWxsIHN1YgorICogICAgICAgZGlyZWN0b3JpZXMs
IGFuZCBpdCByZXF1aXJlcyBtb3JlIHdvcmsuLi4KKyAqLworc3RhdGljIGludAorcmFtZnNfdW5t
b3VudChzdHJ1Y3QgbW91bnQgKm1wLCBpbnQgZmxhZ3MpCit7CisgICAgcmVsZWFzZV9tcF9kZW50
cmllcyhtcCk7CisgICAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9saWIvcmFtZnMvcmFtZnNf
dm5vcHMuYyBiL2xpYi9yYW1mcy9yYW1mc192bm9wcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwLi45MjkxYTRlYwotLS0gL2Rldi9udWxsCisrKyBiL2xpYi9yYW1mcy9yYW1m
c192bm9wcy5jCkBAIC0wLDAgKzEsNjY5IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA2LTIw
MDcsIEtvaHN1a2UgT2h0YW5pCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICog
My4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgYW55IGNv
LWNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCisgKiAgICB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisg
KiBTVUNIIERBTUFHRS4KKyAqLworCisvKgorICogcm1hZnNfdm5vcHMuYyAtIHZub2RlIG9wZXJh
dGlvbnMgZm9yIFJBTSBmaWxlIHN5c3RlbS4KKyAqLworCisjaW5jbHVkZSA8c3lzL3N0YXQuaD4K
KyNpbmNsdWRlIDxkaXJlbnQuaD4KKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKworI2luY2x1ZGUg
PGVycm5vLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5j
bHVkZSA8ZmNudGwuaD4KKworI2luY2x1ZGUgPG9zdi9wcmV4Lmg+CisjaW5jbHVkZSA8b3N2L3Zu
b2RlLmg+CisjaW5jbHVkZSA8b3N2L2ZpbGUuaD4KKyNpbmNsdWRlIDxvc3YvbW91bnQuaD4KKyNp
bmNsdWRlIDxvc3Yvdm5vZGVfYXR0ci5oPgorCisjaW5jbHVkZSAicmFtZnMuaCIKKworc3RhdGlj
IG11dGV4X3QgcmFtZnNfbG9jayA9IE1VVEVYX0lOSVRJQUxJWkVSOworc3RhdGljIHVpbnQ2NF90
IGlub2RlX2NvdW50ID0gMTsgLyogaW5vZGUgMCBpcyByZXNlcnZlZCB0byByb290ICovCisKK3N0
YXRpYyB2b2lkCitzZXRfdGltZXNfdG9fbm93KHN0cnVjdCB0aW1lc3BlYyAqdGltZTEsIHN0cnVj
dCB0aW1lc3BlYyAqdGltZTIgPSBudWxscHRyLCBzdHJ1Y3QgdGltZXNwZWMgKnRpbWUzID0gbnVs
bHB0cikKK3sKKyAgICBzdHJ1Y3QgdGltZXNwZWMgbm93OworICAgIGNsb2NrX2dldHRpbWUoQ0xP
Q0tfUkVBTFRJTUUsICZub3cpOworICAgIGlmICh0aW1lMSkgeworICAgICAgICBtZW1jcHkodGlt
ZTEsICZub3csIHNpemVvZihzdHJ1Y3QgdGltZXNwZWMpKTsKKyAgICB9CisgICAgaWYgKHRpbWUy
KSB7CisgICAgICAgIG1lbWNweSh0aW1lMiwgJm5vdywgc2l6ZW9mKHN0cnVjdCB0aW1lc3BlYykp
OworICAgIH0KKyAgICBpZiAodGltZTMpIHsKKyAgICAgICAgbWVtY3B5KHRpbWUzLCAmbm93LCBz
aXplb2Yoc3RydWN0IHRpbWVzcGVjKSk7CisgICAgfQorfQorCitzdHJ1Y3QgcmFtZnNfbm9kZSAq
CityYW1mc19hbGxvY2F0ZV9ub2RlKGNvbnN0IGNoYXIgKm5hbWUsIGludCB0eXBlKQoreworICAg
IHN0cnVjdCByYW1mc19ub2RlICpucDsKKworICAgIG5wID0gKHJhbWZzX25vZGUgKikgbWFsbG9j
KHNpemVvZihzdHJ1Y3QgcmFtZnNfbm9kZSkpOworICAgIGlmIChucCA9PSBOVUxMKQorICAgICAg
ICByZXR1cm4gTlVMTDsKKyAgICBtZW1zZXQobnAsIDAsIHNpemVvZihzdHJ1Y3QgcmFtZnNfbm9k
ZSkpOworCisgICAgbnAtPnJuX25hbWVsZW4gPSBzdHJsZW4obmFtZSk7CisgICAgbnAtPnJuX25h
bWUgPSAoY2hhciAqKSBtYWxsb2MobnAtPnJuX25hbWVsZW4gKyAxKTsKKyAgICBpZiAobnAtPnJu
X25hbWUgPT0gTlVMTCkgeworICAgICAgICBmcmVlKG5wKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7
CisgICAgfQorICAgIHN0cmxjcHkobnAtPnJuX25hbWUsIG5hbWUsIG5wLT5ybl9uYW1lbGVuICsg
MSk7CisgICAgbnAtPnJuX3R5cGUgPSB0eXBlOworCisgICAgaWYgKHR5cGUgPT0gVkRJUikKKyAg
ICAgICAgbnAtPnJuX21vZGUgPSBTX0lGRElSfDA3Nzc7CisgICAgZWxzZSBpZiAodHlwZSA9PSBW
TE5LKQorICAgICAgICBucC0+cm5fbW9kZSA9IFNfSUZMTkt8MDc3NzsKKyAgICBlbHNlCisgICAg
ICAgIG5wLT5ybl9tb2RlID0gU19JRlJFR3wwNzc3OworCisgICAgc2V0X3RpbWVzX3RvX25vdygm
KG5wLT5ybl9jdGltZSksICYobnAtPnJuX2F0aW1lKSwgJihucC0+cm5fbXRpbWUpKTsKKyAgICBu
cC0+cm5fb3duc19idWYgPSB0cnVlOworCisgICAgcmV0dXJuIG5wOworfQorCit2b2lkCityYW1m
c19mcmVlX25vZGUoc3RydWN0IHJhbWZzX25vZGUgKm5wKQoreworICAgIGlmIChucC0+cm5fYnVm
ICE9IE5VTEwgJiYgbnAtPnJuX293bnNfYnVmKQorICAgICAgICBmcmVlKG5wLT5ybl9idWYpOwor
CisgICAgZnJlZShucC0+cm5fbmFtZSk7CisgICAgZnJlZShucCk7Cit9CisKK3N0YXRpYyBzdHJ1
Y3QgcmFtZnNfbm9kZSAqCityYW1mc19hZGRfbm9kZShzdHJ1Y3QgcmFtZnNfbm9kZSAqZG5wLCBj
aGFyICpuYW1lLCBpbnQgdHlwZSkKK3sKKyAgICBzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAsICpwcmV2
OworCisgICAgbnAgPSByYW1mc19hbGxvY2F0ZV9ub2RlKG5hbWUsIHR5cGUpOworICAgIGlmIChu
cCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIG11dGV4X2xvY2soJnJhbWZz
X2xvY2spOworCisgICAgLyogTGluayB0byB0aGUgZGlyZWN0b3J5IGxpc3QgKi8KKyAgICBpZiAo
ZG5wLT5ybl9jaGlsZCA9PSBOVUxMKSB7CisgICAgICAgIGRucC0+cm5fY2hpbGQgPSBucDsKKyAg
ICB9IGVsc2UgeworICAgICAgICBwcmV2ID0gZG5wLT5ybl9jaGlsZDsKKyAgICAgICAgd2hpbGUg
KHByZXYtPnJuX25leHQgIT0gTlVMTCkKKyAgICAgICAgICAgIHByZXYgPSBwcmV2LT5ybl9uZXh0
OworICAgICAgICBwcmV2LT5ybl9uZXh0ID0gbnA7CisgICAgfQorCisgICAgc2V0X3RpbWVzX3Rv
X25vdygmKGRucC0+cm5fbXRpbWUpLCAmKGRucC0+cm5fY3RpbWUpKTsKKworICAgIG11dGV4X3Vu
bG9jaygmcmFtZnNfbG9jayk7CisgICAgcmV0dXJuIG5wOworfQorCitzdGF0aWMgaW50CityYW1m
c19yZW1vdmVfbm9kZShzdHJ1Y3QgcmFtZnNfbm9kZSAqZG5wLCBzdHJ1Y3QgcmFtZnNfbm9kZSAq
bnApCit7CisgICAgc3RydWN0IHJhbWZzX25vZGUgKnByZXY7CisKKyAgICBpZiAoZG5wLT5ybl9j
aGlsZCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gRUJVU1k7CisKKyAgICBtdXRleF9sb2NrKCZy
YW1mc19sb2NrKTsKKworICAgIC8qIFVubGluayBmcm9tIHRoZSBkaXJlY3RvcnkgbGlzdCAqLwor
ICAgIGlmIChkbnAtPnJuX2NoaWxkID09IG5wKSB7CisgICAgICAgIGRucC0+cm5fY2hpbGQgPSBu
cC0+cm5fbmV4dDsKKyAgICB9IGVsc2UgeworICAgICAgICBmb3IgKHByZXYgPSBkbnAtPnJuX2No
aWxkOyBwcmV2LT5ybl9uZXh0ICE9IG5wOworICAgICAgICAgICAgIHByZXYgPSBwcmV2LT5ybl9u
ZXh0KSB7CisgICAgICAgICAgICBpZiAocHJldi0+cm5fbmV4dCA9PSBOVUxMKSB7CisgICAgICAg
ICAgICAgICAgbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gRU5PRU5UOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHByZXYtPnJuX25l
eHQgPSBucC0+cm5fbmV4dDsKKyAgICB9CisgICAgcmFtZnNfZnJlZV9ub2RlKG5wKTsKKworICAg
IHNldF90aW1lc190b19ub3coJihkbnAtPnJuX210aW1lKSwgJihkbnAtPnJuX2N0aW1lKSk7CisK
KyAgICBtdXRleF91bmxvY2soJnJhbWZzX2xvY2spOworICAgIHJldHVybiAwOworfQorCitzdGF0
aWMgaW50CityYW1mc19yZW5hbWVfbm9kZShzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAsIGNoYXIgKm5h
bWUpCit7CisgICAgc2l6ZV90IGxlbjsKKyAgICBjaGFyICp0bXA7CisKKyAgICBsZW4gPSBzdHJs
ZW4obmFtZSk7CisgICAgaWYgKGxlbiA+IE5BTUVfTUFYKSB7CisgICAgICAgIHJldHVybiBFTkFN
RVRPT0xPTkc7CisgICAgfQorICAgIGlmIChsZW4gPD0gbnAtPnJuX25hbWVsZW4pIHsKKyAgICAg
ICAgLyogUmV1c2UgY3VycmVudCBuYW1lIGJ1ZmZlciAqLworICAgICAgICBzdHJsY3B5KG5wLT5y
bl9uYW1lLCBuYW1lLCBucC0+cm5fbmFtZWxlbiArIDEpOworICAgIH0gZWxzZSB7CisgICAgICAg
IC8qIEV4cGFuZCBuYW1lIGJ1ZmZlciAqLworICAgICAgICB0bXAgPSAoY2hhciAqKSBtYWxsb2Mo
bGVuICsgMSk7CisgICAgICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBF
Tk9NRU07CisgICAgICAgIHN0cmxjcHkodG1wLCBuYW1lLCBsZW4gKyAxKTsKKyAgICAgICAgZnJl
ZShucC0+cm5fbmFtZSk7CisgICAgICAgIG5wLT5ybl9uYW1lID0gdG1wOworICAgIH0KKyAgICBu
cC0+cm5fbmFtZWxlbiA9IGxlbjsKKyAgICBzZXRfdGltZXNfdG9fbm93KCYobnAtPnJuX2N0aW1l
KSk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK3JhbWZzX2xvb2t1cChzdHJ1Y3Qg
dm5vZGUgKmR2cCwgY2hhciAqbmFtZSwgc3RydWN0IHZub2RlICoqdnBwKQoreworICAgIHN0cnVj
dCByYW1mc19ub2RlICpucCwgKmRucDsKKyAgICBzdHJ1Y3Qgdm5vZGUgKnZwOworICAgIHNpemVf
dCBsZW47CisgICAgaW50IGZvdW5kOworCisgICAgKnZwcCA9IE5VTEw7CisKKyAgICBpZiAoKm5h
bWUgPT0gJ1wwJykKKyAgICAgICAgcmV0dXJuIEVOT0VOVDsKKworICAgIG11dGV4X2xvY2soJnJh
bWZzX2xvY2spOworCisgICAgbGVuID0gc3RybGVuKG5hbWUpOworICAgIGRucCA9IChyYW1mc19u
b2RlICopIGR2cC0+dl9kYXRhOworICAgIGZvdW5kID0gMDsKKyAgICBmb3IgKG5wID0gZG5wLT5y
bl9jaGlsZDsgbnAgIT0gTlVMTDsgbnAgPSBucC0+cm5fbmV4dCkgeworICAgICAgICBpZiAobnAt
PnJuX25hbWVsZW4gPT0gbGVuICYmCisgICAgICAgICAgICBtZW1jbXAobmFtZSwgbnAtPnJuX25h
bWUsIGxlbikgPT0gMCkgeworICAgICAgICAgICAgZm91bmQgPSAxOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKGZvdW5kID09IDApIHsKKyAgICAgICAgbXV0
ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKKyAgICAgICAgcmV0dXJuIEVOT0VOVDsKKyAgICB9Cisg
ICAgaWYgKHZnZXQoZHZwLT52X21vdW50LCBpbm9kZV9jb3VudCsrLCAmdnApKSB7CisgICAgICAg
IC8qIGZvdW5kIGluIGNhY2hlICovCisgICAgICAgICp2cHAgPSB2cDsKKyAgICAgICAgbXV0ZXhf
dW5sb2NrKCZyYW1mc19sb2NrKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGlmICgh
dnApIHsKKyAgICAgICAgbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKKyAgICAgICAgcmV0dXJu
IEVOT01FTTsKKyAgICB9CisgICAgdnAtPnZfZGF0YSA9IG5wOworICAgIHZwLT52X21vZGUgPSBB
TExQRVJNUzsKKyAgICB2cC0+dl90eXBlID0gbnAtPnJuX3R5cGU7CisgICAgdnAtPnZfc2l6ZSA9
IG5wLT5ybl9zaXplOworCisgICAgbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKKworICAgICp2
cHAgPSB2cDsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CityYW1mc19ta2Rpcihz
dHJ1Y3Qgdm5vZGUgKmR2cCwgY2hhciAqbmFtZSwgbW9kZV90IG1vZGUpCit7CisgICAgc3RydWN0
IHJhbWZzX25vZGUgKm5wOworCisgICAgRFBSSU5URigoIm1rZGlyICVzXG4iLCBuYW1lKSk7Cisg
ICAgaWYgKHN0cmxlbihuYW1lKSA+IE5BTUVfTUFYKSB7CisgICAgICAgIHJldHVybiBFTkFNRVRP
T0xPTkc7CisgICAgfQorCisgICAgaWYgKCFTX0lTRElSKG1vZGUpKQorICAgICAgICByZXR1cm4g
RUlOVkFMOworCisgICAgbnAgPSAocmFtZnNfbm9kZSAqKSByYW1mc19hZGRfbm9kZSgocmFtZnNf
bm9kZSAqKSBkdnAtPnZfZGF0YSwgbmFtZSwgVkRJUik7CisgICAgaWYgKG5wID09IE5VTEwpCisg
ICAgICAgIHJldHVybiBFTk9NRU07CisgICAgbnAtPnJuX3NpemUgPSAwOworCisgICAgcmV0dXJu
IDA7Cit9CisKK3N0YXRpYyBpbnQKK3JhbWZzX3N5bWxpbmsoc3RydWN0IHZub2RlICpkdnAsIGNo
YXIgKm5hbWUsIGNoYXIgKmxpbmspCit7CisgICAgaWYgKHN0cmxlbihuYW1lKSA+IE5BTUVfTUFY
KSB7CisgICAgICAgIHJldHVybiBFTkFNRVRPT0xPTkc7CisgICAgfQorICAgIGF1dG8gbnAgPSBy
YW1mc19hZGRfbm9kZSgocmFtZnNfbm9kZSAqKSBkdnAtPnZfZGF0YSwgbmFtZSwgVkxOSyk7Cisg
ICAgaWYgKG5wID09IE5VTEwpCisgICAgICAgIHJldHVybiBFTk9NRU07CisgICAgLy8gU2F2ZSB0
aGUgbGluayB0YXJnZXQgd2l0aG91dCB0aGUgZmluYWwgbnVsbCwgYXMgcmVhZGxpbmsoKSB3YW50
cyBpdC4KKyAgICBzaXplX3QgbGVuID0gc3RybGVuKGxpbmspOworICAgIG5wLT5ybl9idWYgPSBz
dHJuZHVwKGxpbmssIGxlbik7CisgICAgbnAtPnJuX2J1ZnNpemUgPSBucC0+cm5fc2l6ZSA9IGxl
bjsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CityYW1mc19yZWFkbGluayhzdHJ1
Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3QgdWlvICp1aW8pCit7CisgICAgc3RydWN0IHJhbWZzX25vZGUg
Km5wID0gKHJhbWZzX25vZGUgKikgdnAtPnZfZGF0YTsKKyAgICBzaXplX3QgbGVuOworCisgICAg
aWYgKHZwLT52X3R5cGUgIT0gVkxOSykgeworICAgICAgICByZXR1cm4gRUlOVkFMOworICAgIH0K
KyAgICBpZiAodWlvLT51aW9fb2Zmc2V0IDwgMCkgeworICAgICAgICByZXR1cm4gRUlOVkFMOwor
ICAgIH0KKyAgICBpZiAodWlvLT51aW9fcmVzaWQgPT0gMCkgeworICAgICAgICByZXR1cm4gMDsK
KyAgICB9CisgICAgaWYgKHVpby0+dWlvX29mZnNldCA+PSAob2ZmX3QpIHZwLT52X3NpemUpCisg
ICAgICAgIHJldHVybiAwOworICAgIGlmICh2cC0+dl9zaXplIC0gdWlvLT51aW9fb2Zmc2V0IDwg
dWlvLT51aW9fcmVzaWQpCisgICAgICAgIGxlbiA9IHZwLT52X3NpemUgLSB1aW8tPnVpb19vZmZz
ZXQ7CisgICAgZWxzZQorICAgICAgICBsZW4gPSB1aW8tPnVpb19yZXNpZDsKKworICAgIHNldF90
aW1lc190b19ub3coICYobnAtPnJuX2F0aW1lKSk7CisgICAgcmV0dXJuIHVpb21vdmUobnAtPnJu
X2J1ZiArIHVpby0+dWlvX29mZnNldCwgbGVuLCB1aW8pOworfQorCisvKiBSZW1vdmUgYSBkaXJl
Y3RvcnkgKi8KK3N0YXRpYyBpbnQKK3JhbWZzX3JtZGlyKHN0cnVjdCB2bm9kZSAqZHZwLCBzdHJ1
Y3Qgdm5vZGUgKnZwLCBjaGFyICpuYW1lKQoreworICAgIHJldHVybiByYW1mc19yZW1vdmVfbm9k
ZSgocmFtZnNfbm9kZSAqKSBkdnAtPnZfZGF0YSwgKHJhbWZzX25vZGUgKikgdnAtPnZfZGF0YSk7
Cit9CisKKy8qIFJlbW92ZSBhIGZpbGUgKi8KK3N0YXRpYyBpbnQKK3JhbWZzX3JlbW92ZShzdHJ1
Y3Qgdm5vZGUgKmR2cCwgc3RydWN0IHZub2RlICp2cCwgY2hhciAqbmFtZSkKK3sKKyAgICBEUFJJ
TlRGKCgicmVtb3ZlICVzIGluICVzXG4iLCBuYW1lLCBkdnAtPnZfcGF0aCkpOworICAgIHJldHVy
biByYW1mc19yZW1vdmVfbm9kZSgocmFtZnNfbm9kZSAqKSBkdnAtPnZfZGF0YSwgKHJhbWZzX25v
ZGUgKikgdnAtPnZfZGF0YSk7Cit9CisKKy8qIFRydW5jYXRlIGZpbGUgKi8KK3N0YXRpYyBpbnQK
K3JhbWZzX3RydW5jYXRlKHN0cnVjdCB2bm9kZSAqdnAsIG9mZl90IGxlbmd0aCkKK3sKKyAgICBz
dHJ1Y3QgcmFtZnNfbm9kZSAqbnA7CisgICAgdm9pZCAqbmV3X2J1ZjsKKyAgICBzaXplX3QgbmV3
X3NpemU7CisKKyAgICBEUFJJTlRGKCgidHJ1bmNhdGUgJXMgbGVuZ3RoPSVkXG4iLCB2cC0+dl9w
YXRoLCBsZW5ndGgpKTsKKyAgICBucCA9IChyYW1mc19ub2RlICopIHZwLT52X2RhdGE7CisKKyAg
ICBpZiAobGVuZ3RoID09IDApIHsKKyAgICAgICAgaWYgKG5wLT5ybl9idWYgIT0gTlVMTCkgewor
ICAgICAgICAgICAgaWYobnAtPnJuX293bnNfYnVmKQorICAgICAgICAgICAgICAgIGZyZWUobnAt
PnJuX2J1Zik7CisgICAgICAgICAgICBucC0+cm5fYnVmID0gTlVMTDsKKyAgICAgICAgICAgIG5w
LT5ybl9idWZzaXplID0gMDsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoc2l6ZV90KGxlbmd0
aCkgPiBucC0+cm5fYnVmc2l6ZSkgeworICAgICAgICAvLyBYWFg6IHRoaXMgY291bGQgdXNlIGEg
cGFnZSBsZXZlbCBhbGxvY2F0b3IKKyAgICAgICAgbmV3X3NpemUgPSByb3VuZF9wYWdlKGxlbmd0
aCk7CisgICAgICAgIG5ld19idWYgPSBtYWxsb2MobmV3X3NpemUpOworICAgICAgICBpZiAoIW5l
d19idWYpCisgICAgICAgICAgICByZXR1cm4gRUlPOworICAgICAgICBpZiAobnAtPnJuX3NpemUg
IT0gMCkgeworICAgICAgICAgICAgbWVtY3B5KG5ld19idWYsIG5wLT5ybl9idWYsIHZwLT52X3Np
emUpOworICAgICAgICAgICAgaWYobnAtPnJuX293bnNfYnVmKQorICAgICAgICAgICAgICAgIGZy
ZWUobnAtPnJuX2J1Zik7CisgICAgICAgIH0KKyAgICAgICAgbnAtPnJuX2J1ZiA9IChjaGFyICop
IG5ld19idWY7CisgICAgICAgIG5wLT5ybl9idWZzaXplID0gbmV3X3NpemU7CisgICAgICAgIG5w
LT5ybl9vd25zX2J1ZiA9IHRydWU7CisgICAgfQorICAgIG5wLT5ybl9zaXplID0gbGVuZ3RoOwor
ICAgIHZwLT52X3NpemUgPSBsZW5ndGg7CisgICAgc2V0X3RpbWVzX3RvX25vdygmKG5wLT5ybl9t
dGltZSksICYobnAtPnJuX2N0aW1lKSk7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qCisgKiBDcmVh
dGUgZW1wdHkgZmlsZS4KKyAqLworc3RhdGljIGludAorcmFtZnNfY3JlYXRlKHN0cnVjdCB2bm9k
ZSAqZHZwLCBjaGFyICpuYW1lLCBtb2RlX3QgbW9kZSkKK3sKKyAgICBzdHJ1Y3QgcmFtZnNfbm9k
ZSAqbnA7CisKKyAgICBpZiAoc3RybGVuKG5hbWUpID4gTkFNRV9NQVgpIHsKKyAgICAgICAgcmV0
dXJuIEVOQU1FVE9PTE9ORzsKKyAgICB9CisKKyAgICBEUFJJTlRGKCgiY3JlYXRlICVzIGluICVz
XG4iLCBuYW1lLCBkdnAtPnZfcGF0aCkpOworICAgIGlmICghU19JU1JFRyhtb2RlKSkKKyAgICAg
ICAgcmV0dXJuIEVJTlZBTDsKKworICAgIG5wID0gcmFtZnNfYWRkX25vZGUoKHJhbWZzX25vZGUg
KikgZHZwLT52X2RhdGEsIG5hbWUsIFZSRUcpOworICAgIGlmIChucCA9PSBOVUxMKQorICAgICAg
ICByZXR1cm4gRU5PTUVNOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CityYW1mc19y
ZWFkKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCBmaWxlICpmcCwgc3RydWN0IHVpbyAqdWlvLCBp
bnQgaW9mbGFnKQoreworICAgIHN0cnVjdCByYW1mc19ub2RlICpucCA9IChyYW1mc19ub2RlICop
IHZwLT52X2RhdGE7CisgICAgc2l6ZV90IGxlbjsKKworICAgIGlmICh2cC0+dl90eXBlID09IFZE
SVIpIHsKKyAgICAgICAgcmV0dXJuIEVJU0RJUjsKKyAgICB9CisgICAgaWYgKHZwLT52X3R5cGUg
IT0gVlJFRykgeworICAgICAgICByZXR1cm4gRUlOVkFMOworICAgIH0KKyAgICBpZiAodWlvLT51
aW9fb2Zmc2V0IDwgMCkgeworICAgICAgICByZXR1cm4gRUlOVkFMOworICAgIH0KKyAgICBpZiAo
dWlvLT51aW9fcmVzaWQgPT0gMCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBp
ZiAodWlvLT51aW9fb2Zmc2V0ID49IChvZmZfdCkgdnAtPnZfc2l6ZSkKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICBpZiAodnAtPnZfc2l6ZSAtIHVpby0+dWlvX29mZnNldCA8IHVpby0+dWlvX3Jl
c2lkKQorICAgICAgICBsZW4gPSB2cC0+dl9zaXplIC0gdWlvLT51aW9fb2Zmc2V0OworICAgIGVs
c2UKKyAgICAgICAgbGVuID0gdWlvLT51aW9fcmVzaWQ7CisKKyAgICBzZXRfdGltZXNfdG9fbm93
KCYobnAtPnJuX2F0aW1lKSk7CisKKyAgICByZXR1cm4gdWlvbW92ZShucC0+cm5fYnVmICsgdWlv
LT51aW9fb2Zmc2V0LCBsZW4sIHVpbyk7Cit9CisKK2ludAorcmFtZnNfc2V0X2ZpbGVfZGF0YShz
dHJ1Y3Qgdm5vZGUgKnZwLCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSkKK3sKKyAgICBz
dHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSAocmFtZnNfbm9kZSAqKSB2cC0+dl9kYXRhOworCisgICAg
aWYgKHZwLT52X3R5cGUgPT0gVkRJUikgeworICAgICAgICByZXR1cm4gRUlTRElSOworICAgIH0K
KyAgICBpZiAodnAtPnZfdHlwZSAhPSBWUkVHKSB7CisgICAgICAgIHJldHVybiBFSU5WQUw7Cisg
ICAgfQorICAgIGlmIChucC0+cm5fYnVmKSB7CisgICAgICAgIHJldHVybiBFSU5WQUw7CisgICAg
fQorCisgICAgbnAtPnJuX2J1ZiA9IChjaGFyICopIGRhdGE7CisgICAgbnAtPnJuX2J1ZnNpemUg
PSBzaXplOworICAgIG5wLT5ybl9zaXplID0gc2l6ZTsKKyAgICB2cC0+dl9zaXplID0gc2l6ZTsK
KyAgICBucC0+cm5fb3duc19idWYgPSBmYWxzZTsKKworICAgIHJldHVybiAwOworfQorCitzdGF0
aWMgaW50CityYW1mc193cml0ZShzdHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3QgdWlvICp1aW8sIGlu
dCBpb2ZsYWcpCit7CisgICAgc3RydWN0IHJhbWZzX25vZGUgKm5wID0gKHJhbWZzX25vZGUgKikg
dnAtPnZfZGF0YTsKKworICAgIGlmICh2cC0+dl90eXBlID09IFZESVIpIHsKKyAgICAgICAgcmV0
dXJuIEVJU0RJUjsKKyAgICB9CisgICAgaWYgKHZwLT52X3R5cGUgIT0gVlJFRykgeworICAgICAg
ICByZXR1cm4gRUlOVkFMOworICAgIH0KKyAgICBpZiAodWlvLT51aW9fb2Zmc2V0IDwgMCkgewor
ICAgICAgICByZXR1cm4gRUlOVkFMOworICAgIH0KKyAgICBpZiAodWlvLT51aW9fb2Zmc2V0ID49
IExPTkdfTUFYKSB7CisgICAgICAgIHJldHVybiBFRkJJRzsKKyAgICB9CisgICAgaWYgKHVpby0+
dWlvX3Jlc2lkID09IDApIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYgKGlv
ZmxhZyAmIElPX0FQUEVORCkKKyAgICAgICAgdWlvLT51aW9fb2Zmc2V0ID0gbnAtPnJuX3NpemU7
CisKKyAgICBpZiAoc2l6ZV90KHVpby0+dWlvX29mZnNldCArIHVpby0+dWlvX3Jlc2lkKSA+IChz
aXplX3QpIHZwLT52X3NpemUpIHsKKyAgICAgICAgLyogRXhwYW5kIHRoZSBmaWxlIHNpemUgYmVm
b3JlIHdyaXRpbmcgdG8gaXQgKi8KKyAgICAgICAgb2ZmX3QgZW5kX3BvcyA9IHVpby0+dWlvX29m
ZnNldCArIHVpby0+dWlvX3Jlc2lkOworICAgICAgICBpZiAoZW5kX3BvcyA+IChvZmZfdCkgbnAt
PnJuX2J1ZnNpemUpIHsKKyAgICAgICAgICAgIC8vIFhYWDogdGhpcyBjb3VsZCB1c2UgYSBwYWdl
IGxldmVsIGFsbG9jYXRvcgorICAgICAgICAgICAgc2l6ZV90IG5ld19zaXplID0gcm91bmRfcGFn
ZShlbmRfcG9zKTsKKyAgICAgICAgICAgIHZvaWQgKm5ld19idWYgPSBtYWxsb2MobmV3X3NpemUp
OworICAgICAgICAgICAgaWYgKCFuZXdfYnVmKQorICAgICAgICAgICAgICAgIHJldHVybiBFSU87
CisgICAgICAgICAgICBpZiAobnAtPnJuX3NpemUgIT0gMCkgeworICAgICAgICAgICAgICAgIG1l
bWNweShuZXdfYnVmLCBucC0+cm5fYnVmLCB2cC0+dl9zaXplKTsKKyAgICAgICAgICAgICAgICBp
ZihucC0+cm5fb3duc19idWYpCisgICAgICAgICAgICAgICAgICAgIGZyZWUobnAtPnJuX2J1Zik7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBucC0+cm5fYnVmID0gKGNoYXIgKikgbmV3X2J1
ZjsKKyAgICAgICAgICAgIG5wLT5ybl9idWZzaXplID0gbmV3X3NpemU7CisgICAgICAgIH0KKyAg
ICAgICAgbnAtPnJuX3NpemUgPSBlbmRfcG9zOworICAgICAgICB2cC0+dl9zaXplID0gZW5kX3Bv
czsKKyAgICAgICAgbnAtPnJuX293bnNfYnVmID0gdHJ1ZTsKKyAgICB9CisKKyAgICBzZXRfdGlt
ZXNfdG9fbm93KCYobnAtPnJuX210aW1lKSwgJihucC0+cm5fY3RpbWUpKTsKKyAgICByZXR1cm4g
dWlvbW92ZShucC0+cm5fYnVmICsgdWlvLT51aW9fb2Zmc2V0LCB1aW8tPnVpb19yZXNpZCwgdWlv
KTsKK30KKworc3RhdGljIGludAorcmFtZnNfcmVuYW1lKHN0cnVjdCB2bm9kZSAqZHZwMSwgc3Ry
dWN0IHZub2RlICp2cDEsIGNoYXIgKm5hbWUxLAorICAgICAgICAgICAgIHN0cnVjdCB2bm9kZSAq
ZHZwMiwgc3RydWN0IHZub2RlICp2cDIsIGNoYXIgKm5hbWUyKQoreworICAgIHN0cnVjdCByYW1m
c19ub2RlICpucCwgKm9sZF9ucDsKKyAgICBpbnQgZXJyb3I7CisKKyAgICBpZiAodnAyKSB7Cisg
ICAgICAgIC8qIFJlbW92ZSBkZXN0aW5hdGlvbiBmaWxlLCBmaXJzdCAqLworICAgICAgICBlcnJv
ciA9IHJhbWZzX3JlbW92ZV9ub2RlKChyYW1mc19ub2RlICopIGR2cDItPnZfZGF0YSwgKHJhbWZz
X25vZGUgKikgdnAyLT52X2RhdGEpOworICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICBy
ZXR1cm4gZXJyb3I7CisgICAgfQorICAgIC8qIFNhbWUgZGlyZWN0b3J5ID8gKi8KKyAgICBpZiAo
ZHZwMSA9PSBkdnAyKSB7CisgICAgICAgIC8qIENoYW5nZSB0aGUgbmFtZSBvZiBleGlzdGluZyBm
aWxlICovCisgICAgICAgIGVycm9yID0gcmFtZnNfcmVuYW1lX25vZGUoKHJhbWZzX25vZGUgKikg
dnAxLT52X2RhdGEsIG5hbWUyKTsKKyAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgcmV0
dXJuIGVycm9yOworICAgIH0gZWxzZSB7CisgICAgICAgIC8qIENyZWF0ZSBuZXcgZmlsZSBvciBk
aXJlY3RvcnkgKi8KKyAgICAgICAgb2xkX25wID0gKHJhbWZzX25vZGUgKikgdnAxLT52X2RhdGE7
CisgICAgICAgIG5wID0gcmFtZnNfYWRkX25vZGUoKHJhbWZzX25vZGUgKikgZHZwMi0+dl9kYXRh
LCBuYW1lMiwgb2xkX25wLT5ybl90eXBlKTsKKyAgICAgICAgaWYgKG5wID09IE5VTEwpCisgICAg
ICAgICAgICByZXR1cm4gRU5PTUVNOworCisgICAgICAgIGlmIChvbGRfbnAtPnJuX2J1Zikgewor
ICAgICAgICAgICAgLyogQ29weSBmaWxlIGRhdGEgKi8KKyAgICAgICAgICAgIG5wLT5ybl9idWYg
PSBvbGRfbnAtPnJuX2J1ZjsKKyAgICAgICAgICAgIG5wLT5ybl9zaXplID0gb2xkX25wLT5ybl9z
aXplOworICAgICAgICAgICAgbnAtPnJuX2J1ZnNpemUgPSBvbGRfbnAtPnJuX2J1ZnNpemU7Cisg
ICAgICAgICAgICBvbGRfbnAtPnJuX2J1ZiA9IE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgLyog
UmVtb3ZlIHNvdXJjZSBmaWxlICovCisgICAgICAgIHJhbWZzX3JlbW92ZV9ub2RlKChyYW1mc19u
b2RlICopIGR2cDEtPnZfZGF0YSwgKHJhbWZzX25vZGUgKikgdnAxLT52X2RhdGEpOworICAgIH0K
KyAgICByZXR1cm4gMDsKK30KKworLyoKKyAqIEB2cDogdm5vZGUgb2YgdGhlIGRpcmVjdG9yeS4K
KyAqLworc3RhdGljIGludAorcmFtZnNfcmVhZGRpcihzdHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3Qg
ZmlsZSAqZnAsIHN0cnVjdCBkaXJlbnQgKmRpcikKK3sKKyAgICBzdHJ1Y3QgcmFtZnNfbm9kZSAq
bnAsICpkbnA7CisgICAgaW50IGk7CisKKyAgICBtdXRleF9sb2NrKCZyYW1mc19sb2NrKTsKKwor
ICAgIHNldF90aW1lc190b19ub3coJigoKHJhbWZzX25vZGUgKikgdnAtPnZfZGF0YSktPnJuX2F0
aW1lKSk7CisKKyAgICBpZiAoZnAtPmZfb2Zmc2V0ID09IDApIHsKKyAgICAgICAgZGlyLT5kX3R5
cGUgPSBEVF9ESVI7CisgICAgICAgIHN0cmxjcHkoKGNoYXIgKikgJmRpci0+ZF9uYW1lLCAiLiIs
IHNpemVvZihkaXItPmRfbmFtZSkpOworICAgIH0gZWxzZSBpZiAoZnAtPmZfb2Zmc2V0ID09IDEp
IHsKKyAgICAgICAgZGlyLT5kX3R5cGUgPSBEVF9ESVI7CisgICAgICAgIHN0cmxjcHkoKGNoYXIg
KikgJmRpci0+ZF9uYW1lLCAiLi4iLCBzaXplb2YoZGlyLT5kX25hbWUpKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBkbnAgPSAocmFtZnNfbm9kZSAqKSB2cC0+dl9kYXRhOworICAgICAgICBucCA9
IGRucC0+cm5fY2hpbGQ7CisgICAgICAgIGlmIChucCA9PSBOVUxMKSB7CisgICAgICAgICAgICBt
dXRleF91bmxvY2soJnJhbWZzX2xvY2spOworICAgICAgICAgICAgcmV0dXJuIEVOT0VOVDsKKyAg
ICAgICAgfQorCisgICAgICAgIGZvciAoaSA9IDA7IGkgIT0gKGZwLT5mX29mZnNldCAtIDIpOyBp
KyspIHsKKyAgICAgICAgICAgIG5wID0gbnAtPnJuX25leHQ7CisgICAgICAgICAgICBpZiAobnAg
PT0gTlVMTCkgeworICAgICAgICAgICAgICAgIG11dGV4X3VubG9jaygmcmFtZnNfbG9jayk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIEVOT0VOVDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICBpZiAobnAtPnJuX3R5cGUgPT0gVkRJUikKKyAgICAgICAgICAgIGRpci0+ZF90eXBl
ID0gRFRfRElSOworICAgICAgICBlbHNlIGlmIChucC0+cm5fdHlwZSA9PSBWTE5LKQorICAgICAg
ICAgICAgZGlyLT5kX3R5cGUgPSBEVF9MTks7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRp
ci0+ZF90eXBlID0gRFRfUkVHOworICAgICAgICBzdHJsY3B5KChjaGFyICopICZkaXItPmRfbmFt
ZSwgbnAtPnJuX25hbWUsCisgICAgICAgICAgICAgICAgc2l6ZW9mKGRpci0+ZF9uYW1lKSk7Cisg
ICAgfQorICAgIGRpci0+ZF9maWxlbm8gPSBmcC0+Zl9vZmZzZXQ7CisvLwlkaXItPmRfbmFtZWxl
biA9IHN0cmxlbihkaXItPmRfbmFtZSk7CisKKyAgICBmcC0+Zl9vZmZzZXQrKzsKKworICAgIG11
dGV4X3VubG9jaygmcmFtZnNfbG9jayk7CisgICAgcmV0dXJuIDA7Cit9CisKK2ludAorcmFtZnNf
aW5pdCh2b2lkKQoreworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CityYW1mc19nZXRh
dHRyKHN0cnVjdCB2bm9kZSAqdm5vZGUsIHN0cnVjdCB2YXR0ciAqYXR0cikKK3sKKyAgICBhdHRy
LT52YV9ub2RlaWQgPSB2bm9kZS0+dl9pbm87CisgICAgYXR0ci0+dmFfc2l6ZSA9IHZub2RlLT52
X3NpemU7CisKKyAgICBzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSAocmFtZnNfbm9kZSAqKSB2bm9k
ZS0+dl9kYXRhOworICAgIGF0dHItPnZhX3R5cGUgPSAodnR5cGUpIG5wLT5ybl90eXBlOworCisg
ICAgbWVtY3B5KCYoYXR0ci0+dmFfYXRpbWUpLCAmKG5wLT5ybl9hdGltZSksIHNpemVvZihzdHJ1
Y3QgdGltZXNwZWMpKTsKKyAgICBtZW1jcHkoJihhdHRyLT52YV9jdGltZSksICYobnAtPnJuX2N0
aW1lKSwgc2l6ZW9mKHN0cnVjdCB0aW1lc3BlYykpOworICAgIG1lbWNweSgmKGF0dHItPnZhX210
aW1lKSwgJihucC0+cm5fbXRpbWUpLCBzaXplb2Yoc3RydWN0IHRpbWVzcGVjKSk7CisKKyAgICBh
dHRyLT52YV9tb2RlID0gbnAtPnJuX21vZGU7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGlj
IGludAorcmFtZnNfc2V0YXR0cihzdHJ1Y3Qgdm5vZGUgKnZub2RlLCBzdHJ1Y3QgdmF0dHIgKmF0
dHIpIHsKKyAgICBzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSAocmFtZnNfbm9kZSAqKSB2bm9kZS0+
dl9kYXRhOworCisgICAgaWYgKGF0dHItPnZhX21hc2sgJiBBVF9BVElNRSkgeworICAgICAgICBt
ZW1jcHkoJihucC0+cm5fYXRpbWUpLCAmKGF0dHItPnZhX2F0aW1lKSwgc2l6ZW9mKHN0cnVjdCB0
aW1lc3BlYykpOworICAgIH0KKworICAgIGlmIChhdHRyLT52YV9tYXNrICYgQVRfQ1RJTUUpIHsK
KyAgICAgICAgbWVtY3B5KCYobnAtPnJuX2N0aW1lKSwgJihhdHRyLT52YV9jdGltZSksIHNpemVv
ZihzdHJ1Y3QgdGltZXNwZWMpKTsKKyAgICB9CisKKyAgICBpZiAoYXR0ci0+dmFfbWFzayAmIEFU
X01USU1FKSB7CisgICAgICAgIG1lbWNweSgmKG5wLT5ybl9tdGltZSksICYoYXR0ci0+dmFfbXRp
bWUpLCBzaXplb2Yoc3RydWN0IHRpbWVzcGVjKSk7CisgICAgfQorCisgICAgaWYgKGF0dHItPnZh
X21hc2sgJiBBVF9NT0RFKSB7CisgICAgICAgIG5wLT5ybl9tb2RlID0gYXR0ci0+dmFfbW9kZTsK
KyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworI2RlZmluZSByYW1mc19vcGVuICAgICAgKCh2
bm9wX29wZW5fdCl2b3BfbnVsbG9wKQorI2RlZmluZSByYW1mc19jbG9zZSAgICAgKCh2bm9wX2Ns
b3NlX3Qpdm9wX251bGxvcCkKKyNkZWZpbmUgcmFtZnNfc2VlayAgICAgICgodm5vcF9zZWVrX3Qp
dm9wX251bGxvcCkKKyNkZWZpbmUgcmFtZnNfaW9jdGwgICAgICgodm5vcF9pb2N0bF90KXZvcF9l
aW52YWwpCisjZGVmaW5lIHJhbWZzX2ZzeW5jICAgICAoKHZub3BfZnN5bmNfdCl2b3BfbnVsbG9w
KQorI2RlZmluZSByYW1mc19pbmFjdGl2ZSAgKCh2bm9wX2luYWN0aXZlX3Qpdm9wX251bGxvcCkK
KyNkZWZpbmUgcmFtZnNfbGluayAgICAgICgodm5vcF9saW5rX3Qpdm9wX2VwZXJtKQorI2RlZmlu
ZSByYW1mc19mYWxsb2NhdGUgKCh2bm9wX2ZhbGxvY2F0ZV90KXZvcF9udWxsb3ApCisKKy8qCisg
KiB2bm9kZSBvcGVyYXRpb25zCisgKi8KK3N0cnVjdCB2bm9wcyByYW1mc192bm9wcyA9IHsKKyAg
ICAgICAgcmFtZnNfb3BlbiwgICAgICAgICAgICAgLyogb3BlbiAqLworICAgICAgICByYW1mc19j
bG9zZSwgICAgICAgICAgICAvKiBjbG9zZSAqLworICAgICAgICByYW1mc19yZWFkLCAgICAgICAg
ICAgICAvKiByZWFkICovCisgICAgICAgIHJhbWZzX3dyaXRlLCAgICAgICAgICAgIC8qIHdyaXRl
ICovCisgICAgICAgIHJhbWZzX3NlZWssICAgICAgICAgICAgIC8qIHNlZWsgKi8KKyAgICAgICAg
cmFtZnNfaW9jdGwsICAgICAgICAgICAgLyogaW9jdGwgKi8KKyAgICAgICAgcmFtZnNfZnN5bmMs
ICAgICAgICAgICAgLyogZnN5bmMgKi8KKyAgICAgICAgcmFtZnNfcmVhZGRpciwgICAgICAgICAg
LyogcmVhZGRpciAqLworICAgICAgICByYW1mc19sb29rdXAsICAgICAgICAgICAvKiBsb29rdXAg
Ki8KKyAgICAgICAgcmFtZnNfY3JlYXRlLCAgICAgICAgICAgLyogY3JlYXRlICovCisgICAgICAg
IHJhbWZzX3JlbW92ZSwgICAgICAgICAgIC8qIHJlbW92ZSAqLworICAgICAgICByYW1mc19yZW5h
bWUsICAgICAgICAgICAvKiByZW1hbWUgKi8KKyAgICAgICAgcmFtZnNfbWtkaXIsICAgICAgICAg
ICAgLyogbWtkaXIgKi8KKyAgICAgICAgcmFtZnNfcm1kaXIsICAgICAgICAgICAgLyogcm1kaXIg
Ki8KKyAgICAgICAgcmFtZnNfZ2V0YXR0ciwgICAgICAgICAgLyogZ2V0YXR0ciAqLworICAgICAg
ICByYW1mc19zZXRhdHRyLCAgICAgICAgICAvKiBzZXRhdHRyICovCisgICAgICAgIHJhbWZzX2lu
YWN0aXZlLCAgICAgICAgIC8qIGluYWN0aXZlICovCisgICAgICAgIHJhbWZzX3RydW5jYXRlLCAg
ICAgICAgIC8qIHRydW5jYXRlICovCisgICAgICAgIHJhbWZzX2xpbmssICAgICAgICAgICAgIC8q
IGxpbmsgKi8KKyAgICAgICAgKHZub3BfY2FjaGVfdCkgbnVsbHB0ciwgLyogYXJjICovCisgICAg
ICAgIHJhbWZzX2ZhbGxvY2F0ZSwgICAgICAgIC8qIGZhbGxvY2F0ZSAqLworICAgICAgICByYW1m
c19yZWFkbGluaywgICAgICAgICAvKiByZWFkIGxpbmsgKi8KKyAgICAgICAgcmFtZnNfc3ltbGlu
aywgICAgICAgICAgLyogc3ltYm9saWMgbGluayAqLworfTsKKwotLSAKMi4xOS4yCgoKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1h
aWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0
cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Feb 06 10:42:48 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 06 Feb 2019 10:42:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grKfI-0003Io-Jj; Wed, 06 Feb 2019 10:42:48 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Hs2p=QN=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1grKfG-0003IA-UD
 for minios-devel@lists.xen.org; Wed, 06 Feb 2019 10:42:46 +0000
X-Inumbo-ID: ef01f315-29fb-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id ef01f315-29fb-11e9-bc90-bc764e045a96;
 Wed, 06 Feb 2019 10:42:44 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 46D92104D89;
 Wed,  6 Feb 2019 11:42:43 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id qkuZDOhOnHvf; Wed,  6 Feb 2019 11:42:43 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 20F27104D88
 for <minios-devel@lists.xen.org>; Wed,  6 Feb 2019 11:42:41 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Wed, 6 Feb 2019 11:42:40 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 6 Feb 2019 11:42:10 +0100
Message-ID: <20190206104214.23847-10-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190206104214.23847-1-yuri.volchkov@neclab.eu>
References: <20190206104214.23847-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH 2/6] lib/ramfs: tabify imported
 ramfs code
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Simon.kuenzer@neclab.eu, sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VG8gY29tcGx5IHdpdGggVW5pa3JhZnQgY29kaW5nIHN0eWxlLCBpbmRlbnRzIG11c3QgYmUgdGFi
cywgbm90CnNwYWNlcy4gSW1wb3J0ZWQgY29kZSB3YXMgYSBtaXh0dXJlIG9mIGJvdGguCgpTaWdu
ZWQtb2ZmLWJ5OiBZdXJpIFZvbGNoa292IDx5dXJpLnZvbGNoa292QG5lY2xhYi5ldT4KLS0tCiBs
aWIvcmFtZnMvcmFtZnMuaCAgICAgICAgfCAgMjYgKy0KIGxpYi9yYW1mcy9yYW1mc192ZnNvcHMu
YyB8ICAzMiArLQogbGliL3JhbWZzL3JhbWZzX3Zub3BzLmMgIHwgOTE2ICsrKysrKysrKysrKysr
KysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCA0ODcgaW5zZXJ0aW9u
cygrKSwgNDg3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpYi9yYW1mcy9yYW1mcy5oIGIv
bGliL3JhbWZzL3JhbWZzLmgKaW5kZXggODhjY2JlNzIuLmU0ZWViNjVmIDEwMDY0NAotLS0gYS9s
aWIvcmFtZnMvcmFtZnMuaAorKysgYi9saWIvcmFtZnMvcmFtZnMuaApAQCAtNDYsMTkgKzQ2LDE5
IEBACiAgKiBGaWxlL2RpcmVjdG9yeSBub2RlIGZvciBSQU1GUwogICovCiBzdHJ1Y3QgcmFtZnNf
bm9kZSB7Ci0gICAgc3RydWN0IHJhbWZzX25vZGUgKnJuX25leHQ7ICAgLyogbmV4dCBub2RlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeSAqLwotICAgIHN0cnVjdCByYW1mc19ub2RlICpybl9jaGlsZDsg
IC8qIGZpcnN0IGNoaWxkIG5vZGUgKi8KLSAgICBpbnQgcm5fdHlwZTsgICAgLyogZmlsZSBvciBk
aXJlY3RvcnkgKi8KLSAgICBjaGFyICpybl9uYW1lOyAgICAvKiBuYW1lIChudWxsLXRlcm1pbmF0
ZWQpICovCi0gICAgc2l6ZV90IHJuX25hbWVsZW47ICAgIC8qIGxlbmd0aCBvZiBuYW1lIG5vdCBp
bmNsdWRpbmcgdGVybWluYXRvciAqLwotICAgIHNpemVfdCBybl9zaXplOyAgICAvKiBmaWxlIHNp
emUgKi8KLSAgICBjaGFyICpybl9idWY7ICAgIC8qIGJ1ZmZlciB0byB0aGUgZmlsZSBkYXRhICov
Ci0gICAgc2l6ZV90IHJuX2J1ZnNpemU7ICAgIC8qIGFsbG9jYXRlZCBidWZmZXIgc2l6ZSAqLwot
ICAgIHN0cnVjdCB0aW1lc3BlYyBybl9jdGltZTsKLSAgICBzdHJ1Y3QgdGltZXNwZWMgcm5fYXRp
bWU7Ci0gICAgc3RydWN0IHRpbWVzcGVjIHJuX210aW1lOwotICAgIGludCBybl9tb2RlOwotICAg
IGJvb2wgcm5fb3duc19idWY7CisJc3RydWN0IHJhbWZzX25vZGUgKnJuX25leHQ7ICAgLyogbmV4
dCBub2RlIGluIHRoZSBzYW1lIGRpcmVjdG9yeSAqLworCXN0cnVjdCByYW1mc19ub2RlICpybl9j
aGlsZDsgIC8qIGZpcnN0IGNoaWxkIG5vZGUgKi8KKwlpbnQgcm5fdHlwZTsgICAgLyogZmlsZSBv
ciBkaXJlY3RvcnkgKi8KKwljaGFyICpybl9uYW1lOyAgICAvKiBuYW1lIChudWxsLXRlcm1pbmF0
ZWQpICovCisJc2l6ZV90IHJuX25hbWVsZW47ICAgIC8qIGxlbmd0aCBvZiBuYW1lIG5vdCBpbmNs
dWRpbmcgdGVybWluYXRvciAqLworCXNpemVfdCBybl9zaXplOyAgICAvKiBmaWxlIHNpemUgKi8K
KwljaGFyICpybl9idWY7ICAgIC8qIGJ1ZmZlciB0byB0aGUgZmlsZSBkYXRhICovCisJc2l6ZV90
IHJuX2J1ZnNpemU7ICAgIC8qIGFsbG9jYXRlZCBidWZmZXIgc2l6ZSAqLworCXN0cnVjdCB0aW1l
c3BlYyBybl9jdGltZTsKKwlzdHJ1Y3QgdGltZXNwZWMgcm5fYXRpbWU7CisJc3RydWN0IHRpbWVz
cGVjIHJuX210aW1lOworCWludCBybl9tb2RlOworCWJvb2wgcm5fb3duc19idWY7CiB9OwogCiBz
dHJ1Y3QgcmFtZnNfbm9kZSAqcmFtZnNfYWxsb2NhdGVfbm9kZShjb25zdCBjaGFyICpuYW1lLCBp
bnQgdHlwZSk7CmRpZmYgLS1naXQgYS9saWIvcmFtZnMvcmFtZnNfdmZzb3BzLmMgYi9saWIvcmFt
ZnMvcmFtZnNfdmZzb3BzLmMKaW5kZXggNzJmZTdlZGIuLjUzYWU3NThhIDEwMDY0NAotLS0gYS9s
aWIvcmFtZnMvcmFtZnNfdmZzb3BzLmMKKysrIGIvbGliL3JhbWZzL3JhbWZzX3Zmc29wcy5jCkBA
IC00OSwxMiArNDksMTIgQEAgc3RhdGljIGludCByYW1mc191bm1vdW50KHN0cnVjdCBtb3VudCAq
bXAsIGludCBmbGFncyk7CiAgKiBGaWxlIHN5c3RlbSBvcGVyYXRpb25zCiAgKi8KIHN0cnVjdCB2
ZnNvcHMgcmFtZnNfdmZzb3BzID0gewotICAgICAgICByYW1mc19tb3VudCwgICAgICAgLyogbW91
bnQgKi8KLSAgICAgICAgcmFtZnNfdW5tb3VudCwgICAgIC8qIHVubW91bnQgKi8KLSAgICAgICAg
cmFtZnNfc3luYywgICAgICAgIC8qIHN5bmMgKi8KLSAgICAgICAgcmFtZnNfdmdldCwgICAgICAg
IC8qIHZnZXQgKi8KLSAgICAgICAgcmFtZnNfc3RhdGZzLCAgICAgIC8qIHN0YXRmcyAqLwotICAg
ICAgICAmcmFtZnNfdm5vcHMsICAgICAgLyogdm5vcHMgKi8KKwkJcmFtZnNfbW91bnQsICAgICAg
IC8qIG1vdW50ICovCisJCXJhbWZzX3VubW91bnQsICAgICAvKiB1bm1vdW50ICovCisJCXJhbWZz
X3N5bmMsICAgICAgICAvKiBzeW5jICovCisJCXJhbWZzX3ZnZXQsICAgICAgICAvKiB2Z2V0ICov
CisJCXJhbWZzX3N0YXRmcywgICAgICAvKiBzdGF0ZnMgKi8KKwkJJnJhbWZzX3Zub3BzLCAgICAg
IC8qIHZub3BzICovCiB9OwogCiAvKgpAQCAtNjMsMTYgKzYzLDE2IEBAIHN0cnVjdCB2ZnNvcHMg
cmFtZnNfdmZzb3BzID0gewogc3RhdGljIGludAogcmFtZnNfbW91bnQoc3RydWN0IG1vdW50ICpt
cCwgY29uc3QgY2hhciAqZGV2LCBpbnQgZmxhZ3MsIGNvbnN0IHZvaWQgKmRhdGEpCiB7Ci0gICAg
c3RydWN0IHJhbWZzX25vZGUgKm5wOworCXN0cnVjdCByYW1mc19ub2RlICpucDsKIAotICAgIERQ
UklOVEYoKCJyYW1mc19tb3VudDogZGV2PSVzXG4iLCBkZXYpKTsKKwlEUFJJTlRGKCgicmFtZnNf
bW91bnQ6IGRldj0lc1xuIiwgZGV2KSk7CiAKLSAgICAvKiBDcmVhdGUgYSByb290IG5vZGUgKi8K
LSAgICBucCA9IHJhbWZzX2FsbG9jYXRlX25vZGUoIi8iLCBWRElSKTsKLSAgICBpZiAobnAgPT0g
TlVMTCkKLSAgICAgICAgcmV0dXJuIEVOT01FTTsKLSAgICBtcC0+bV9yb290LT5kX3Zub2RlLT52
X2RhdGEgPSBucDsKLSAgICByZXR1cm4gMDsKKwkvKiBDcmVhdGUgYSByb290IG5vZGUgKi8KKwlu
cCA9IHJhbWZzX2FsbG9jYXRlX25vZGUoIi8iLCBWRElSKTsKKwlpZiAobnAgPT0gTlVMTCkKKwkJ
cmV0dXJuIEVOT01FTTsKKwltcC0+bV9yb290LT5kX3Zub2RlLT52X2RhdGEgPSBucDsKKwlyZXR1
cm4gMDsKIH0KIAogLyoKQEAgLTg1LDYgKzg1LDYgQEAgcmFtZnNfbW91bnQoc3RydWN0IG1vdW50
ICptcCwgY29uc3QgY2hhciAqZGV2LCBpbnQgZmxhZ3MsIGNvbnN0IHZvaWQgKmRhdGEpCiBzdGF0
aWMgaW50CiByYW1mc191bm1vdW50KHN0cnVjdCBtb3VudCAqbXAsIGludCBmbGFncykKIHsKLSAg
ICByZWxlYXNlX21wX2RlbnRyaWVzKG1wKTsKLSAgICByZXR1cm4gMDsKKwlyZWxlYXNlX21wX2Rl
bnRyaWVzKG1wKTsKKwlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2xpYi9yYW1mcy9yYW1mc192
bm9wcy5jIGIvbGliL3JhbWZzL3JhbWZzX3Zub3BzLmMKaW5kZXggOTI5MWE0ZWMuLjhiNTg2Zjg4
IDEwMDY0NAotLS0gYS9saWIvcmFtZnMvcmFtZnNfdm5vcHMuYworKysgYi9saWIvcmFtZnMvcmFt
ZnNfdm5vcHMuYwpAQCAtNTQsMzEzICs1NCwzMTMgQEAgc3RhdGljIHVpbnQ2NF90IGlub2RlX2Nv
dW50ID0gMTsgLyogaW5vZGUgMCBpcyByZXNlcnZlZCB0byByb290ICovCiBzdGF0aWMgdm9pZAog
c2V0X3RpbWVzX3RvX25vdyhzdHJ1Y3QgdGltZXNwZWMgKnRpbWUxLCBzdHJ1Y3QgdGltZXNwZWMg
KnRpbWUyID0gbnVsbHB0ciwgc3RydWN0IHRpbWVzcGVjICp0aW1lMyA9IG51bGxwdHIpCiB7Ci0g
ICAgc3RydWN0IHRpbWVzcGVjIG5vdzsKLSAgICBjbG9ja19nZXR0aW1lKENMT0NLX1JFQUxUSU1F
LCAmbm93KTsKLSAgICBpZiAodGltZTEpIHsKLSAgICAgICAgbWVtY3B5KHRpbWUxLCAmbm93LCBz
aXplb2Yoc3RydWN0IHRpbWVzcGVjKSk7Ci0gICAgfQotICAgIGlmICh0aW1lMikgewotICAgICAg
ICBtZW1jcHkodGltZTIsICZub3csIHNpemVvZihzdHJ1Y3QgdGltZXNwZWMpKTsKLSAgICB9Ci0g
ICAgaWYgKHRpbWUzKSB7Ci0gICAgICAgIG1lbWNweSh0aW1lMywgJm5vdywgc2l6ZW9mKHN0cnVj
dCB0aW1lc3BlYykpOwotICAgIH0KKwlzdHJ1Y3QgdGltZXNwZWMgbm93OworCWNsb2NrX2dldHRp
bWUoQ0xPQ0tfUkVBTFRJTUUsICZub3cpOworCWlmICh0aW1lMSkgeworCQltZW1jcHkodGltZTEs
ICZub3csIHNpemVvZihzdHJ1Y3QgdGltZXNwZWMpKTsKKwl9CisJaWYgKHRpbWUyKSB7CisJCW1l
bWNweSh0aW1lMiwgJm5vdywgc2l6ZW9mKHN0cnVjdCB0aW1lc3BlYykpOworCX0KKwlpZiAodGlt
ZTMpIHsKKwkJbWVtY3B5KHRpbWUzLCAmbm93LCBzaXplb2Yoc3RydWN0IHRpbWVzcGVjKSk7CisJ
fQogfQogCiBzdHJ1Y3QgcmFtZnNfbm9kZSAqCiByYW1mc19hbGxvY2F0ZV9ub2RlKGNvbnN0IGNo
YXIgKm5hbWUsIGludCB0eXBlKQogewotICAgIHN0cnVjdCByYW1mc19ub2RlICpucDsKLQotICAg
IG5wID0gKHJhbWZzX25vZGUgKikgbWFsbG9jKHNpemVvZihzdHJ1Y3QgcmFtZnNfbm9kZSkpOwot
ICAgIGlmIChucCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBtZW1zZXQobnAs
IDAsIHNpemVvZihzdHJ1Y3QgcmFtZnNfbm9kZSkpOwotCi0gICAgbnAtPnJuX25hbWVsZW4gPSBz
dHJsZW4obmFtZSk7Ci0gICAgbnAtPnJuX25hbWUgPSAoY2hhciAqKSBtYWxsb2MobnAtPnJuX25h
bWVsZW4gKyAxKTsKLSAgICBpZiAobnAtPnJuX25hbWUgPT0gTlVMTCkgewotICAgICAgICBmcmVl
KG5wKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHN0cmxjcHkobnAtPnJuX25h
bWUsIG5hbWUsIG5wLT5ybl9uYW1lbGVuICsgMSk7Ci0gICAgbnAtPnJuX3R5cGUgPSB0eXBlOwot
Ci0gICAgaWYgKHR5cGUgPT0gVkRJUikKLSAgICAgICAgbnAtPnJuX21vZGUgPSBTX0lGRElSfDA3
Nzc7Ci0gICAgZWxzZSBpZiAodHlwZSA9PSBWTE5LKQotICAgICAgICBucC0+cm5fbW9kZSA9IFNf
SUZMTkt8MDc3NzsKLSAgICBlbHNlCi0gICAgICAgIG5wLT5ybl9tb2RlID0gU19JRlJFR3wwNzc3
OwotCi0gICAgc2V0X3RpbWVzX3RvX25vdygmKG5wLT5ybl9jdGltZSksICYobnAtPnJuX2F0aW1l
KSwgJihucC0+cm5fbXRpbWUpKTsKLSAgICBucC0+cm5fb3duc19idWYgPSB0cnVlOwotCi0gICAg
cmV0dXJuIG5wOworCXN0cnVjdCByYW1mc19ub2RlICpucDsKKworCW5wID0gKHJhbWZzX25vZGUg
KikgbWFsbG9jKHNpemVvZihzdHJ1Y3QgcmFtZnNfbm9kZSkpOworCWlmIChucCA9PSBOVUxMKQor
CQlyZXR1cm4gTlVMTDsKKwltZW1zZXQobnAsIDAsIHNpemVvZihzdHJ1Y3QgcmFtZnNfbm9kZSkp
OworCisJbnAtPnJuX25hbWVsZW4gPSBzdHJsZW4obmFtZSk7CisJbnAtPnJuX25hbWUgPSAoY2hh
ciAqKSBtYWxsb2MobnAtPnJuX25hbWVsZW4gKyAxKTsKKwlpZiAobnAtPnJuX25hbWUgPT0gTlVM
TCkgeworCQlmcmVlKG5wKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCXN0cmxjcHkobnAtPnJuX25h
bWUsIG5hbWUsIG5wLT5ybl9uYW1lbGVuICsgMSk7CisJbnAtPnJuX3R5cGUgPSB0eXBlOworCisJ
aWYgKHR5cGUgPT0gVkRJUikKKwkJbnAtPnJuX21vZGUgPSBTX0lGRElSfDA3Nzc7CisJZWxzZSBp
ZiAodHlwZSA9PSBWTE5LKQorCQlucC0+cm5fbW9kZSA9IFNfSUZMTkt8MDc3NzsKKwllbHNlCisJ
CW5wLT5ybl9tb2RlID0gU19JRlJFR3wwNzc3OworCisJc2V0X3RpbWVzX3RvX25vdygmKG5wLT5y
bl9jdGltZSksICYobnAtPnJuX2F0aW1lKSwgJihucC0+cm5fbXRpbWUpKTsKKwlucC0+cm5fb3du
c19idWYgPSB0cnVlOworCisJcmV0dXJuIG5wOwogfQogCiB2b2lkCiByYW1mc19mcmVlX25vZGUo
c3RydWN0IHJhbWZzX25vZGUgKm5wKQogewotICAgIGlmIChucC0+cm5fYnVmICE9IE5VTEwgJiYg
bnAtPnJuX293bnNfYnVmKQotICAgICAgICBmcmVlKG5wLT5ybl9idWYpOworCWlmIChucC0+cm5f
YnVmICE9IE5VTEwgJiYgbnAtPnJuX293bnNfYnVmKQorCQlmcmVlKG5wLT5ybl9idWYpOwogCi0g
ICAgZnJlZShucC0+cm5fbmFtZSk7Ci0gICAgZnJlZShucCk7CisJZnJlZShucC0+cm5fbmFtZSk7
CisJZnJlZShucCk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgcmFtZnNfbm9kZSAqCiByYW1mc19hZGRf
bm9kZShzdHJ1Y3QgcmFtZnNfbm9kZSAqZG5wLCBjaGFyICpuYW1lLCBpbnQgdHlwZSkKIHsKLSAg
ICBzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAsICpwcmV2OworCXN0cnVjdCByYW1mc19ub2RlICpucCwg
KnByZXY7CiAKLSAgICBucCA9IHJhbWZzX2FsbG9jYXRlX25vZGUobmFtZSwgdHlwZSk7Ci0gICAg
aWYgKG5wID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOworCW5wID0gcmFtZnNfYWxsb2Nh
dGVfbm9kZShuYW1lLCB0eXBlKTsKKwlpZiAobnAgPT0gTlVMTCkKKwkJcmV0dXJuIE5VTEw7CiAK
LSAgICBtdXRleF9sb2NrKCZyYW1mc19sb2NrKTsKKwltdXRleF9sb2NrKCZyYW1mc19sb2NrKTsK
IAotICAgIC8qIExpbmsgdG8gdGhlIGRpcmVjdG9yeSBsaXN0ICovCi0gICAgaWYgKGRucC0+cm5f
Y2hpbGQgPT0gTlVMTCkgewotICAgICAgICBkbnAtPnJuX2NoaWxkID0gbnA7Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgcHJldiA9IGRucC0+cm5fY2hpbGQ7Ci0gICAgICAgIHdoaWxlIChwcmV2LT5y
bl9uZXh0ICE9IE5VTEwpCi0gICAgICAgICAgICBwcmV2ID0gcHJldi0+cm5fbmV4dDsKLSAgICAg
ICAgcHJldi0+cm5fbmV4dCA9IG5wOwotICAgIH0KKwkvKiBMaW5rIHRvIHRoZSBkaXJlY3Rvcnkg
bGlzdCAqLworCWlmIChkbnAtPnJuX2NoaWxkID09IE5VTEwpIHsKKwkJZG5wLT5ybl9jaGlsZCA9
IG5wOworCX0gZWxzZSB7CisJCXByZXYgPSBkbnAtPnJuX2NoaWxkOworCQl3aGlsZSAocHJldi0+
cm5fbmV4dCAhPSBOVUxMKQorCQkJcHJldiA9IHByZXYtPnJuX25leHQ7CisJCXByZXYtPnJuX25l
eHQgPSBucDsKKwl9CiAKLSAgICBzZXRfdGltZXNfdG9fbm93KCYoZG5wLT5ybl9tdGltZSksICYo
ZG5wLT5ybl9jdGltZSkpOworCXNldF90aW1lc190b19ub3coJihkbnAtPnJuX210aW1lKSwgJihk
bnAtPnJuX2N0aW1lKSk7CiAKLSAgICBtdXRleF91bmxvY2soJnJhbWZzX2xvY2spOwotICAgIHJl
dHVybiBucDsKKwltdXRleF91bmxvY2soJnJhbWZzX2xvY2spOworCXJldHVybiBucDsKIH0KIAog
c3RhdGljIGludAogcmFtZnNfcmVtb3ZlX25vZGUoc3RydWN0IHJhbWZzX25vZGUgKmRucCwgc3Ry
dWN0IHJhbWZzX25vZGUgKm5wKQogewotICAgIHN0cnVjdCByYW1mc19ub2RlICpwcmV2OwotCi0g
ICAgaWYgKGRucC0+cm5fY2hpbGQgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIEVCVVNZOwotCi0g
ICAgbXV0ZXhfbG9jaygmcmFtZnNfbG9jayk7Ci0KLSAgICAvKiBVbmxpbmsgZnJvbSB0aGUgZGly
ZWN0b3J5IGxpc3QgKi8KLSAgICBpZiAoZG5wLT5ybl9jaGlsZCA9PSBucCkgewotICAgICAgICBk
bnAtPnJuX2NoaWxkID0gbnAtPnJuX25leHQ7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZm9yIChw
cmV2ID0gZG5wLT5ybl9jaGlsZDsgcHJldi0+cm5fbmV4dCAhPSBucDsKLSAgICAgICAgICAgICBw
cmV2ID0gcHJldi0+cm5fbmV4dCkgewotICAgICAgICAgICAgaWYgKHByZXYtPnJuX25leHQgPT0g
TlVMTCkgewotICAgICAgICAgICAgICAgIG11dGV4X3VubG9jaygmcmFtZnNfbG9jayk7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIEVOT0VOVDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
ICAgICBwcmV2LT5ybl9uZXh0ID0gbnAtPnJuX25leHQ7Ci0gICAgfQotICAgIHJhbWZzX2ZyZWVf
bm9kZShucCk7Ci0KLSAgICBzZXRfdGltZXNfdG9fbm93KCYoZG5wLT5ybl9tdGltZSksICYoZG5w
LT5ybl9jdGltZSkpOwotCi0gICAgbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKLSAgICByZXR1
cm4gMDsKKwlzdHJ1Y3QgcmFtZnNfbm9kZSAqcHJldjsKKworCWlmIChkbnAtPnJuX2NoaWxkID09
IE5VTEwpCisJCXJldHVybiBFQlVTWTsKKworCW11dGV4X2xvY2soJnJhbWZzX2xvY2spOworCisJ
LyogVW5saW5rIGZyb20gdGhlIGRpcmVjdG9yeSBsaXN0ICovCisJaWYgKGRucC0+cm5fY2hpbGQg
PT0gbnApIHsKKwkJZG5wLT5ybl9jaGlsZCA9IG5wLT5ybl9uZXh0OworCX0gZWxzZSB7CisJCWZv
ciAocHJldiA9IGRucC0+cm5fY2hpbGQ7IHByZXYtPnJuX25leHQgIT0gbnA7CisJCQkgcHJldiA9
IHByZXYtPnJuX25leHQpIHsKKwkJCWlmIChwcmV2LT5ybl9uZXh0ID09IE5VTEwpIHsKKwkJCQlt
dXRleF91bmxvY2soJnJhbWZzX2xvY2spOworCQkJCXJldHVybiBFTk9FTlQ7CisJCQl9CisJCX0K
KwkJcHJldi0+cm5fbmV4dCA9IG5wLT5ybl9uZXh0OworCX0KKwlyYW1mc19mcmVlX25vZGUobnAp
OworCisJc2V0X3RpbWVzX3RvX25vdygmKGRucC0+cm5fbXRpbWUpLCAmKGRucC0+cm5fY3RpbWUp
KTsKKworCW11dGV4X3VubG9jaygmcmFtZnNfbG9jayk7CisJcmV0dXJuIDA7CiB9CiAKIHN0YXRp
YyBpbnQKIHJhbWZzX3JlbmFtZV9ub2RlKHN0cnVjdCByYW1mc19ub2RlICpucCwgY2hhciAqbmFt
ZSkKIHsKLSAgICBzaXplX3QgbGVuOwotICAgIGNoYXIgKnRtcDsKLQotICAgIGxlbiA9IHN0cmxl
bihuYW1lKTsKLSAgICBpZiAobGVuID4gTkFNRV9NQVgpIHsKLSAgICAgICAgcmV0dXJuIEVOQU1F
VE9PTE9ORzsKLSAgICB9Ci0gICAgaWYgKGxlbiA8PSBucC0+cm5fbmFtZWxlbikgewotICAgICAg
ICAvKiBSZXVzZSBjdXJyZW50IG5hbWUgYnVmZmVyICovCi0gICAgICAgIHN0cmxjcHkobnAtPnJu
X25hbWUsIG5hbWUsIG5wLT5ybl9uYW1lbGVuICsgMSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAg
LyogRXhwYW5kIG5hbWUgYnVmZmVyICovCi0gICAgICAgIHRtcCA9IChjaGFyICopIG1hbGxvYyhs
ZW4gKyAxKTsKLSAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIEVO
T01FTTsKLSAgICAgICAgc3RybGNweSh0bXAsIG5hbWUsIGxlbiArIDEpOwotICAgICAgICBmcmVl
KG5wLT5ybl9uYW1lKTsKLSAgICAgICAgbnAtPnJuX25hbWUgPSB0bXA7Ci0gICAgfQotICAgIG5w
LT5ybl9uYW1lbGVuID0gbGVuOwotICAgIHNldF90aW1lc190b19ub3coJihucC0+cm5fY3RpbWUp
KTsKLSAgICByZXR1cm4gMDsKKwlzaXplX3QgbGVuOworCWNoYXIgKnRtcDsKKworCWxlbiA9IHN0
cmxlbihuYW1lKTsKKwlpZiAobGVuID4gTkFNRV9NQVgpIHsKKwkJcmV0dXJuIEVOQU1FVE9PTE9O
RzsKKwl9CisJaWYgKGxlbiA8PSBucC0+cm5fbmFtZWxlbikgeworCQkvKiBSZXVzZSBjdXJyZW50
IG5hbWUgYnVmZmVyICovCisJCXN0cmxjcHkobnAtPnJuX25hbWUsIG5hbWUsIG5wLT5ybl9uYW1l
bGVuICsgMSk7CisJfSBlbHNlIHsKKwkJLyogRXhwYW5kIG5hbWUgYnVmZmVyICovCisJCXRtcCA9
IChjaGFyICopIG1hbGxvYyhsZW4gKyAxKTsKKwkJaWYgKHRtcCA9PSBOVUxMKQorCQkJcmV0dXJu
IEVOT01FTTsKKwkJc3RybGNweSh0bXAsIG5hbWUsIGxlbiArIDEpOworCQlmcmVlKG5wLT5ybl9u
YW1lKTsKKwkJbnAtPnJuX25hbWUgPSB0bXA7CisJfQorCW5wLT5ybl9uYW1lbGVuID0gbGVuOwor
CXNldF90aW1lc190b19ub3coJihucC0+cm5fY3RpbWUpKTsKKwlyZXR1cm4gMDsKIH0KIAogc3Rh
dGljIGludAogcmFtZnNfbG9va3VwKHN0cnVjdCB2bm9kZSAqZHZwLCBjaGFyICpuYW1lLCBzdHJ1
Y3Qgdm5vZGUgKip2cHApCiB7Ci0gICAgc3RydWN0IHJhbWZzX25vZGUgKm5wLCAqZG5wOwotICAg
IHN0cnVjdCB2bm9kZSAqdnA7Ci0gICAgc2l6ZV90IGxlbjsKLSAgICBpbnQgZm91bmQ7Ci0KLSAg
ICAqdnBwID0gTlVMTDsKLQotICAgIGlmICgqbmFtZSA9PSAnXDAnKQotICAgICAgICByZXR1cm4g
RU5PRU5UOwotCi0gICAgbXV0ZXhfbG9jaygmcmFtZnNfbG9jayk7Ci0KLSAgICBsZW4gPSBzdHJs
ZW4obmFtZSk7Ci0gICAgZG5wID0gKHJhbWZzX25vZGUgKikgZHZwLT52X2RhdGE7Ci0gICAgZm91
bmQgPSAwOwotICAgIGZvciAobnAgPSBkbnAtPnJuX2NoaWxkOyBucCAhPSBOVUxMOyBucCA9IG5w
LT5ybl9uZXh0KSB7Ci0gICAgICAgIGlmIChucC0+cm5fbmFtZWxlbiA9PSBsZW4gJiYKLSAgICAg
ICAgICAgIG1lbWNtcChuYW1lLCBucC0+cm5fbmFtZSwgbGVuKSA9PSAwKSB7Ci0gICAgICAgICAg
ICBmb3VuZCA9IDE7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICBp
ZiAoZm91bmQgPT0gMCkgewotICAgICAgICBtdXRleF91bmxvY2soJnJhbWZzX2xvY2spOwotICAg
ICAgICByZXR1cm4gRU5PRU5UOwotICAgIH0KLSAgICBpZiAodmdldChkdnAtPnZfbW91bnQsIGlu
b2RlX2NvdW50KyssICZ2cCkpIHsKLSAgICAgICAgLyogZm91bmQgaW4gY2FjaGUgKi8KLSAgICAg
ICAgKnZwcCA9IHZwOwotICAgICAgICBtdXRleF91bmxvY2soJnJhbWZzX2xvY2spOwotICAgICAg
ICByZXR1cm4gMDsKLSAgICB9Ci0gICAgaWYgKCF2cCkgewotICAgICAgICBtdXRleF91bmxvY2so
JnJhbWZzX2xvY2spOwotICAgICAgICByZXR1cm4gRU5PTUVNOwotICAgIH0KLSAgICB2cC0+dl9k
YXRhID0gbnA7Ci0gICAgdnAtPnZfbW9kZSA9IEFMTFBFUk1TOwotICAgIHZwLT52X3R5cGUgPSBu
cC0+cm5fdHlwZTsKLSAgICB2cC0+dl9zaXplID0gbnAtPnJuX3NpemU7Ci0KLSAgICBtdXRleF91
bmxvY2soJnJhbWZzX2xvY2spOwotCi0gICAgKnZwcCA9IHZwOwotCi0gICAgcmV0dXJuIDA7CisJ
c3RydWN0IHJhbWZzX25vZGUgKm5wLCAqZG5wOworCXN0cnVjdCB2bm9kZSAqdnA7CisJc2l6ZV90
IGxlbjsKKwlpbnQgZm91bmQ7CisKKwkqdnBwID0gTlVMTDsKKworCWlmICgqbmFtZSA9PSAnXDAn
KQorCQlyZXR1cm4gRU5PRU5UOworCisJbXV0ZXhfbG9jaygmcmFtZnNfbG9jayk7CisKKwlsZW4g
PSBzdHJsZW4obmFtZSk7CisJZG5wID0gKHJhbWZzX25vZGUgKikgZHZwLT52X2RhdGE7CisJZm91
bmQgPSAwOworCWZvciAobnAgPSBkbnAtPnJuX2NoaWxkOyBucCAhPSBOVUxMOyBucCA9IG5wLT5y
bl9uZXh0KSB7CisJCWlmIChucC0+cm5fbmFtZWxlbiA9PSBsZW4gJiYKKwkJCW1lbWNtcChuYW1l
LCBucC0+cm5fbmFtZSwgbGVuKSA9PSAwKSB7CisJCQlmb3VuZCA9IDE7CisJCQlicmVhazsKKwkJ
fQorCX0KKwlpZiAoZm91bmQgPT0gMCkgeworCQltdXRleF91bmxvY2soJnJhbWZzX2xvY2spOwor
CQlyZXR1cm4gRU5PRU5UOworCX0KKwlpZiAodmdldChkdnAtPnZfbW91bnQsIGlub2RlX2NvdW50
KyssICZ2cCkpIHsKKwkJLyogZm91bmQgaW4gY2FjaGUgKi8KKwkJKnZwcCA9IHZwOworCQltdXRl
eF91bmxvY2soJnJhbWZzX2xvY2spOworCQlyZXR1cm4gMDsKKwl9CisJaWYgKCF2cCkgeworCQlt
dXRleF91bmxvY2soJnJhbWZzX2xvY2spOworCQlyZXR1cm4gRU5PTUVNOworCX0KKwl2cC0+dl9k
YXRhID0gbnA7CisJdnAtPnZfbW9kZSA9IEFMTFBFUk1TOworCXZwLT52X3R5cGUgPSBucC0+cm5f
dHlwZTsKKwl2cC0+dl9zaXplID0gbnAtPnJuX3NpemU7CisKKwltdXRleF91bmxvY2soJnJhbWZz
X2xvY2spOworCisJKnZwcCA9IHZwOworCisJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQKIHJh
bWZzX21rZGlyKHN0cnVjdCB2bm9kZSAqZHZwLCBjaGFyICpuYW1lLCBtb2RlX3QgbW9kZSkKIHsK
LSAgICBzdHJ1Y3QgcmFtZnNfbm9kZSAqbnA7CisJc3RydWN0IHJhbWZzX25vZGUgKm5wOwogCi0g
ICAgRFBSSU5URigoIm1rZGlyICVzXG4iLCBuYW1lKSk7Ci0gICAgaWYgKHN0cmxlbihuYW1lKSA+
IE5BTUVfTUFYKSB7Ci0gICAgICAgIHJldHVybiBFTkFNRVRPT0xPTkc7Ci0gICAgfQorCURQUklO
VEYoKCJta2RpciAlc1xuIiwgbmFtZSkpOworCWlmIChzdHJsZW4obmFtZSkgPiBOQU1FX01BWCkg
eworCQlyZXR1cm4gRU5BTUVUT09MT05HOworCX0KIAotICAgIGlmICghU19JU0RJUihtb2RlKSkK
LSAgICAgICAgcmV0dXJuIEVJTlZBTDsKKwlpZiAoIVNfSVNESVIobW9kZSkpCisJCXJldHVybiBF
SU5WQUw7CiAKLSAgICBucCA9IChyYW1mc19ub2RlICopIHJhbWZzX2FkZF9ub2RlKChyYW1mc19u
b2RlICopIGR2cC0+dl9kYXRhLCBuYW1lLCBWRElSKTsKLSAgICBpZiAobnAgPT0gTlVMTCkKLSAg
ICAgICAgcmV0dXJuIEVOT01FTTsKLSAgICBucC0+cm5fc2l6ZSA9IDA7CisJbnAgPSAocmFtZnNf
bm9kZSAqKSByYW1mc19hZGRfbm9kZSgocmFtZnNfbm9kZSAqKSBkdnAtPnZfZGF0YSwgbmFtZSwg
VkRJUik7CisJaWYgKG5wID09IE5VTEwpCisJCXJldHVybiBFTk9NRU07CisJbnAtPnJuX3NpemUg
PSAwOwogCi0gICAgcmV0dXJuIDA7CisJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQKIHJhbWZz
X3N5bWxpbmsoc3RydWN0IHZub2RlICpkdnAsIGNoYXIgKm5hbWUsIGNoYXIgKmxpbmspCiB7Ci0g
ICAgaWYgKHN0cmxlbihuYW1lKSA+IE5BTUVfTUFYKSB7Ci0gICAgICAgIHJldHVybiBFTkFNRVRP
T0xPTkc7Ci0gICAgfQotICAgIGF1dG8gbnAgPSByYW1mc19hZGRfbm9kZSgocmFtZnNfbm9kZSAq
KSBkdnAtPnZfZGF0YSwgbmFtZSwgVkxOSyk7Ci0gICAgaWYgKG5wID09IE5VTEwpCi0gICAgICAg
IHJldHVybiBFTk9NRU07Ci0gICAgLy8gU2F2ZSB0aGUgbGluayB0YXJnZXQgd2l0aG91dCB0aGUg
ZmluYWwgbnVsbCwgYXMgcmVhZGxpbmsoKSB3YW50cyBpdC4KLSAgICBzaXplX3QgbGVuID0gc3Ry
bGVuKGxpbmspOwotICAgIG5wLT5ybl9idWYgPSBzdHJuZHVwKGxpbmssIGxlbik7Ci0gICAgbnAt
PnJuX2J1ZnNpemUgPSBucC0+cm5fc2l6ZSA9IGxlbjsKLQotICAgIHJldHVybiAwOworCWlmIChz
dHJsZW4obmFtZSkgPiBOQU1FX01BWCkgeworCQlyZXR1cm4gRU5BTUVUT09MT05HOworCX0KKwlh
dXRvIG5wID0gcmFtZnNfYWRkX25vZGUoKHJhbWZzX25vZGUgKikgZHZwLT52X2RhdGEsIG5hbWUs
IFZMTkspOworCWlmIChucCA9PSBOVUxMKQorCQlyZXR1cm4gRU5PTUVNOworCS8vIFNhdmUgdGhl
IGxpbmsgdGFyZ2V0IHdpdGhvdXQgdGhlIGZpbmFsIG51bGwsIGFzIHJlYWRsaW5rKCkgd2FudHMg
aXQuCisJc2l6ZV90IGxlbiA9IHN0cmxlbihsaW5rKTsKKwlucC0+cm5fYnVmID0gc3RybmR1cChs
aW5rLCBsZW4pOworCW5wLT5ybl9idWZzaXplID0gbnAtPnJuX3NpemUgPSBsZW47CisKKwlyZXR1
cm4gMDsKIH0KIAogc3RhdGljIGludAogcmFtZnNfcmVhZGxpbmsoc3RydWN0IHZub2RlICp2cCwg
c3RydWN0IHVpbyAqdWlvKQogewotICAgIHN0cnVjdCByYW1mc19ub2RlICpucCA9IChyYW1mc19u
b2RlICopIHZwLT52X2RhdGE7Ci0gICAgc2l6ZV90IGxlbjsKLQotICAgIGlmICh2cC0+dl90eXBl
ICE9IFZMTkspIHsKLSAgICAgICAgcmV0dXJuIEVJTlZBTDsKLSAgICB9Ci0gICAgaWYgKHVpby0+
dWlvX29mZnNldCA8IDApIHsKLSAgICAgICAgcmV0dXJuIEVJTlZBTDsKLSAgICB9Ci0gICAgaWYg
KHVpby0+dWlvX3Jlc2lkID09IDApIHsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIGlm
ICh1aW8tPnVpb19vZmZzZXQgPj0gKG9mZl90KSB2cC0+dl9zaXplKQotICAgICAgICByZXR1cm4g
MDsKLSAgICBpZiAodnAtPnZfc2l6ZSAtIHVpby0+dWlvX29mZnNldCA8IHVpby0+dWlvX3Jlc2lk
KQotICAgICAgICBsZW4gPSB2cC0+dl9zaXplIC0gdWlvLT51aW9fb2Zmc2V0OwotICAgIGVsc2UK
LSAgICAgICAgbGVuID0gdWlvLT51aW9fcmVzaWQ7Ci0KLSAgICBzZXRfdGltZXNfdG9fbm93KCAm
KG5wLT5ybl9hdGltZSkpOwotICAgIHJldHVybiB1aW9tb3ZlKG5wLT5ybl9idWYgKyB1aW8tPnVp
b19vZmZzZXQsIGxlbiwgdWlvKTsKKwlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSAocmFtZnNfbm9k
ZSAqKSB2cC0+dl9kYXRhOworCXNpemVfdCBsZW47CisKKwlpZiAodnAtPnZfdHlwZSAhPSBWTE5L
KSB7CisJCXJldHVybiBFSU5WQUw7CisJfQorCWlmICh1aW8tPnVpb19vZmZzZXQgPCAwKSB7CisJ
CXJldHVybiBFSU5WQUw7CisJfQorCWlmICh1aW8tPnVpb19yZXNpZCA9PSAwKSB7CisJCXJldHVy
biAwOworCX0KKwlpZiAodWlvLT51aW9fb2Zmc2V0ID49IChvZmZfdCkgdnAtPnZfc2l6ZSkKKwkJ
cmV0dXJuIDA7CisJaWYgKHZwLT52X3NpemUgLSB1aW8tPnVpb19vZmZzZXQgPCB1aW8tPnVpb19y
ZXNpZCkKKwkJbGVuID0gdnAtPnZfc2l6ZSAtIHVpby0+dWlvX29mZnNldDsKKwllbHNlCisJCWxl
biA9IHVpby0+dWlvX3Jlc2lkOworCisJc2V0X3RpbWVzX3RvX25vdyggJihucC0+cm5fYXRpbWUp
KTsKKwlyZXR1cm4gdWlvbW92ZShucC0+cm5fYnVmICsgdWlvLT51aW9fb2Zmc2V0LCBsZW4sIHVp
byk7CiB9CiAKIC8qIFJlbW92ZSBhIGRpcmVjdG9yeSAqLwogc3RhdGljIGludAogcmFtZnNfcm1k
aXIoc3RydWN0IHZub2RlICpkdnAsIHN0cnVjdCB2bm9kZSAqdnAsIGNoYXIgKm5hbWUpCiB7Ci0g
ICAgcmV0dXJuIHJhbWZzX3JlbW92ZV9ub2RlKChyYW1mc19ub2RlICopIGR2cC0+dl9kYXRhLCAo
cmFtZnNfbm9kZSAqKSB2cC0+dl9kYXRhKTsKKwlyZXR1cm4gcmFtZnNfcmVtb3ZlX25vZGUoKHJh
bWZzX25vZGUgKikgZHZwLT52X2RhdGEsIChyYW1mc19ub2RlICopIHZwLT52X2RhdGEpOwogfQog
CiAvKiBSZW1vdmUgYSBmaWxlICovCiBzdGF0aWMgaW50CiByYW1mc19yZW1vdmUoc3RydWN0IHZu
b2RlICpkdnAsIHN0cnVjdCB2bm9kZSAqdnAsIGNoYXIgKm5hbWUpCiB7Ci0gICAgRFBSSU5URigo
InJlbW92ZSAlcyBpbiAlc1xuIiwgbmFtZSwgZHZwLT52X3BhdGgpKTsKLSAgICByZXR1cm4gcmFt
ZnNfcmVtb3ZlX25vZGUoKHJhbWZzX25vZGUgKikgZHZwLT52X2RhdGEsIChyYW1mc19ub2RlICop
IHZwLT52X2RhdGEpOworCURQUklOVEYoKCJyZW1vdmUgJXMgaW4gJXNcbiIsIG5hbWUsIGR2cC0+
dl9wYXRoKSk7CisJcmV0dXJuIHJhbWZzX3JlbW92ZV9ub2RlKChyYW1mc19ub2RlICopIGR2cC0+
dl9kYXRhLCAocmFtZnNfbm9kZSAqKSB2cC0+dl9kYXRhKTsKIH0KIAogLyogVHJ1bmNhdGUgZmls
ZSAqLwogc3RhdGljIGludAogcmFtZnNfdHJ1bmNhdGUoc3RydWN0IHZub2RlICp2cCwgb2ZmX3Qg
bGVuZ3RoKQogewotICAgIHN0cnVjdCByYW1mc19ub2RlICpucDsKLSAgICB2b2lkICpuZXdfYnVm
OwotICAgIHNpemVfdCBuZXdfc2l6ZTsKLQotICAgIERQUklOVEYoKCJ0cnVuY2F0ZSAlcyBsZW5n
dGg9JWRcbiIsIHZwLT52X3BhdGgsIGxlbmd0aCkpOwotICAgIG5wID0gKHJhbWZzX25vZGUgKikg
dnAtPnZfZGF0YTsKLQotICAgIGlmIChsZW5ndGggPT0gMCkgewotICAgICAgICBpZiAobnAtPnJu
X2J1ZiAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBpZihucC0+cm5fb3duc19idWYpCi0gICAgICAg
ICAgICAgICAgZnJlZShucC0+cm5fYnVmKTsKLSAgICAgICAgICAgIG5wLT5ybl9idWYgPSBOVUxM
OwotICAgICAgICAgICAgbnAtPnJuX2J1ZnNpemUgPSAwOwotICAgICAgICB9Ci0gICAgfSBlbHNl
IGlmIChzaXplX3QobGVuZ3RoKSA+IG5wLT5ybl9idWZzaXplKSB7Ci0gICAgICAgIC8vIFhYWDog
dGhpcyBjb3VsZCB1c2UgYSBwYWdlIGxldmVsIGFsbG9jYXRvcgotICAgICAgICBuZXdfc2l6ZSA9
IHJvdW5kX3BhZ2UobGVuZ3RoKTsKLSAgICAgICAgbmV3X2J1ZiA9IG1hbGxvYyhuZXdfc2l6ZSk7
Ci0gICAgICAgIGlmICghbmV3X2J1ZikKLSAgICAgICAgICAgIHJldHVybiBFSU87Ci0gICAgICAg
IGlmIChucC0+cm5fc2l6ZSAhPSAwKSB7Ci0gICAgICAgICAgICBtZW1jcHkobmV3X2J1ZiwgbnAt
PnJuX2J1ZiwgdnAtPnZfc2l6ZSk7Ci0gICAgICAgICAgICBpZihucC0+cm5fb3duc19idWYpCi0g
ICAgICAgICAgICAgICAgZnJlZShucC0+cm5fYnVmKTsKLSAgICAgICAgfQotICAgICAgICBucC0+
cm5fYnVmID0gKGNoYXIgKikgbmV3X2J1ZjsKLSAgICAgICAgbnAtPnJuX2J1ZnNpemUgPSBuZXdf
c2l6ZTsKLSAgICAgICAgbnAtPnJuX293bnNfYnVmID0gdHJ1ZTsKLSAgICB9Ci0gICAgbnAtPnJu
X3NpemUgPSBsZW5ndGg7Ci0gICAgdnAtPnZfc2l6ZSA9IGxlbmd0aDsKLSAgICBzZXRfdGltZXNf
dG9fbm93KCYobnAtPnJuX210aW1lKSwgJihucC0+cm5fY3RpbWUpKTsKLSAgICByZXR1cm4gMDsK
KwlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnA7CisJdm9pZCAqbmV3X2J1ZjsKKwlzaXplX3QgbmV3X3Np
emU7CisKKwlEUFJJTlRGKCgidHJ1bmNhdGUgJXMgbGVuZ3RoPSVkXG4iLCB2cC0+dl9wYXRoLCBs
ZW5ndGgpKTsKKwlucCA9IChyYW1mc19ub2RlICopIHZwLT52X2RhdGE7CisKKwlpZiAobGVuZ3Ro
ID09IDApIHsKKwkJaWYgKG5wLT5ybl9idWYgIT0gTlVMTCkgeworCQkJaWYobnAtPnJuX293bnNf
YnVmKQorCQkJCWZyZWUobnAtPnJuX2J1Zik7CisJCQlucC0+cm5fYnVmID0gTlVMTDsKKwkJCW5w
LT5ybl9idWZzaXplID0gMDsKKwkJfQorCX0gZWxzZSBpZiAoc2l6ZV90KGxlbmd0aCkgPiBucC0+
cm5fYnVmc2l6ZSkgeworCQkvLyBYWFg6IHRoaXMgY291bGQgdXNlIGEgcGFnZSBsZXZlbCBhbGxv
Y2F0b3IKKwkJbmV3X3NpemUgPSByb3VuZF9wYWdlKGxlbmd0aCk7CisJCW5ld19idWYgPSBtYWxs
b2MobmV3X3NpemUpOworCQlpZiAoIW5ld19idWYpCisJCQlyZXR1cm4gRUlPOworCQlpZiAobnAt
PnJuX3NpemUgIT0gMCkgeworCQkJbWVtY3B5KG5ld19idWYsIG5wLT5ybl9idWYsIHZwLT52X3Np
emUpOworCQkJaWYobnAtPnJuX293bnNfYnVmKQorCQkJCWZyZWUobnAtPnJuX2J1Zik7CisJCX0K
KwkJbnAtPnJuX2J1ZiA9IChjaGFyICopIG5ld19idWY7CisJCW5wLT5ybl9idWZzaXplID0gbmV3
X3NpemU7CisJCW5wLT5ybl9vd25zX2J1ZiA9IHRydWU7CisJfQorCW5wLT5ybl9zaXplID0gbGVu
Z3RoOworCXZwLT52X3NpemUgPSBsZW5ndGg7CisJc2V0X3RpbWVzX3RvX25vdygmKG5wLT5ybl9t
dGltZSksICYobnAtPnJuX2N0aW1lKSk7CisJcmV0dXJuIDA7CiB9CiAKIC8qCkBAIC0zNjksMTY1
ICszNjksMTY1IEBAIHJhbWZzX3RydW5jYXRlKHN0cnVjdCB2bm9kZSAqdnAsIG9mZl90IGxlbmd0
aCkKIHN0YXRpYyBpbnQKIHJhbWZzX2NyZWF0ZShzdHJ1Y3Qgdm5vZGUgKmR2cCwgY2hhciAqbmFt
ZSwgbW9kZV90IG1vZGUpCiB7Ci0gICAgc3RydWN0IHJhbWZzX25vZGUgKm5wOworCXN0cnVjdCBy
YW1mc19ub2RlICpucDsKIAotICAgIGlmIChzdHJsZW4obmFtZSkgPiBOQU1FX01BWCkgewotICAg
ICAgICByZXR1cm4gRU5BTUVUT09MT05HOwotICAgIH0KKwlpZiAoc3RybGVuKG5hbWUpID4gTkFN
RV9NQVgpIHsKKwkJcmV0dXJuIEVOQU1FVE9PTE9ORzsKKwl9CiAKLSAgICBEUFJJTlRGKCgiY3Jl
YXRlICVzIGluICVzXG4iLCBuYW1lLCBkdnAtPnZfcGF0aCkpOwotICAgIGlmICghU19JU1JFRyht
b2RlKSkKLSAgICAgICAgcmV0dXJuIEVJTlZBTDsKKwlEUFJJTlRGKCgiY3JlYXRlICVzIGluICVz
XG4iLCBuYW1lLCBkdnAtPnZfcGF0aCkpOworCWlmICghU19JU1JFRyhtb2RlKSkKKwkJcmV0dXJu
IEVJTlZBTDsKIAotICAgIG5wID0gcmFtZnNfYWRkX25vZGUoKHJhbWZzX25vZGUgKikgZHZwLT52
X2RhdGEsIG5hbWUsIFZSRUcpOwotICAgIGlmIChucCA9PSBOVUxMKQotICAgICAgICByZXR1cm4g
RU5PTUVNOwotICAgIHJldHVybiAwOworCW5wID0gcmFtZnNfYWRkX25vZGUoKHJhbWZzX25vZGUg
KikgZHZwLT52X2RhdGEsIG5hbWUsIFZSRUcpOworCWlmIChucCA9PSBOVUxMKQorCQlyZXR1cm4g
RU5PTUVNOworCXJldHVybiAwOwogfQogCiBzdGF0aWMgaW50CiByYW1mc19yZWFkKHN0cnVjdCB2
bm9kZSAqdnAsIHN0cnVjdCBmaWxlICpmcCwgc3RydWN0IHVpbyAqdWlvLCBpbnQgaW9mbGFnKQog
ewotICAgIHN0cnVjdCByYW1mc19ub2RlICpucCA9IChyYW1mc19ub2RlICopIHZwLT52X2RhdGE7
Ci0gICAgc2l6ZV90IGxlbjsKLQotICAgIGlmICh2cC0+dl90eXBlID09IFZESVIpIHsKLSAgICAg
ICAgcmV0dXJuIEVJU0RJUjsKLSAgICB9Ci0gICAgaWYgKHZwLT52X3R5cGUgIT0gVlJFRykgewot
ICAgICAgICByZXR1cm4gRUlOVkFMOwotICAgIH0KLSAgICBpZiAodWlvLT51aW9fb2Zmc2V0IDwg
MCkgewotICAgICAgICByZXR1cm4gRUlOVkFMOwotICAgIH0KLSAgICBpZiAodWlvLT51aW9fcmVz
aWQgPT0gMCkgewotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBpZiAodWlvLT51aW9f
b2Zmc2V0ID49IChvZmZfdCkgdnAtPnZfc2l6ZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBp
ZiAodnAtPnZfc2l6ZSAtIHVpby0+dWlvX29mZnNldCA8IHVpby0+dWlvX3Jlc2lkKQotICAgICAg
ICBsZW4gPSB2cC0+dl9zaXplIC0gdWlvLT51aW9fb2Zmc2V0OwotICAgIGVsc2UKLSAgICAgICAg
bGVuID0gdWlvLT51aW9fcmVzaWQ7Ci0KLSAgICBzZXRfdGltZXNfdG9fbm93KCYobnAtPnJuX2F0
aW1lKSk7Ci0KLSAgICByZXR1cm4gdWlvbW92ZShucC0+cm5fYnVmICsgdWlvLT51aW9fb2Zmc2V0
LCBsZW4sIHVpbyk7CisJc3RydWN0IHJhbWZzX25vZGUgKm5wID0gKHJhbWZzX25vZGUgKikgdnAt
PnZfZGF0YTsKKwlzaXplX3QgbGVuOworCisJaWYgKHZwLT52X3R5cGUgPT0gVkRJUikgeworCQly
ZXR1cm4gRUlTRElSOworCX0KKwlpZiAodnAtPnZfdHlwZSAhPSBWUkVHKSB7CisJCXJldHVybiBF
SU5WQUw7CisJfQorCWlmICh1aW8tPnVpb19vZmZzZXQgPCAwKSB7CisJCXJldHVybiBFSU5WQUw7
CisJfQorCWlmICh1aW8tPnVpb19yZXNpZCA9PSAwKSB7CisJCXJldHVybiAwOworCX0KKworCWlm
ICh1aW8tPnVpb19vZmZzZXQgPj0gKG9mZl90KSB2cC0+dl9zaXplKQorCQlyZXR1cm4gMDsKKwor
CWlmICh2cC0+dl9zaXplIC0gdWlvLT51aW9fb2Zmc2V0IDwgdWlvLT51aW9fcmVzaWQpCisJCWxl
biA9IHZwLT52X3NpemUgLSB1aW8tPnVpb19vZmZzZXQ7CisJZWxzZQorCQlsZW4gPSB1aW8tPnVp
b19yZXNpZDsKKworCXNldF90aW1lc190b19ub3coJihucC0+cm5fYXRpbWUpKTsKKworCXJldHVy
biB1aW9tb3ZlKG5wLT5ybl9idWYgKyB1aW8tPnVpb19vZmZzZXQsIGxlbiwgdWlvKTsKIH0KIAog
aW50CiByYW1mc19zZXRfZmlsZV9kYXRhKHN0cnVjdCB2bm9kZSAqdnAsIGNvbnN0IHZvaWQgKmRh
dGEsIHNpemVfdCBzaXplKQogewotICAgIHN0cnVjdCByYW1mc19ub2RlICpucCA9IChyYW1mc19u
b2RlICopIHZwLT52X2RhdGE7Ci0KLSAgICBpZiAodnAtPnZfdHlwZSA9PSBWRElSKSB7Ci0gICAg
ICAgIHJldHVybiBFSVNESVI7Ci0gICAgfQotICAgIGlmICh2cC0+dl90eXBlICE9IFZSRUcpIHsK
LSAgICAgICAgcmV0dXJuIEVJTlZBTDsKLSAgICB9Ci0gICAgaWYgKG5wLT5ybl9idWYpIHsKLSAg
ICAgICAgcmV0dXJuIEVJTlZBTDsKLSAgICB9Ci0KLSAgICBucC0+cm5fYnVmID0gKGNoYXIgKikg
ZGF0YTsKLSAgICBucC0+cm5fYnVmc2l6ZSA9IHNpemU7Ci0gICAgbnAtPnJuX3NpemUgPSBzaXpl
OwotICAgIHZwLT52X3NpemUgPSBzaXplOwotICAgIG5wLT5ybl9vd25zX2J1ZiA9IGZhbHNlOwot
Ci0gICAgcmV0dXJuIDA7CisJc3RydWN0IHJhbWZzX25vZGUgKm5wID0gKHJhbWZzX25vZGUgKikg
dnAtPnZfZGF0YTsKKworCWlmICh2cC0+dl90eXBlID09IFZESVIpIHsKKwkJcmV0dXJuIEVJU0RJ
UjsKKwl9CisJaWYgKHZwLT52X3R5cGUgIT0gVlJFRykgeworCQlyZXR1cm4gRUlOVkFMOworCX0K
KwlpZiAobnAtPnJuX2J1ZikgeworCQlyZXR1cm4gRUlOVkFMOworCX0KKworCW5wLT5ybl9idWYg
PSAoY2hhciAqKSBkYXRhOworCW5wLT5ybl9idWZzaXplID0gc2l6ZTsKKwlucC0+cm5fc2l6ZSA9
IHNpemU7CisJdnAtPnZfc2l6ZSA9IHNpemU7CisJbnAtPnJuX293bnNfYnVmID0gZmFsc2U7CisK
KwlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGludAogcmFtZnNfd3JpdGUoc3RydWN0IHZub2RlICp2
cCwgc3RydWN0IHVpbyAqdWlvLCBpbnQgaW9mbGFnKQogewotICAgIHN0cnVjdCByYW1mc19ub2Rl
ICpucCA9IChyYW1mc19ub2RlICopIHZwLT52X2RhdGE7Ci0KLSAgICBpZiAodnAtPnZfdHlwZSA9
PSBWRElSKSB7Ci0gICAgICAgIHJldHVybiBFSVNESVI7Ci0gICAgfQotICAgIGlmICh2cC0+dl90
eXBlICE9IFZSRUcpIHsKLSAgICAgICAgcmV0dXJuIEVJTlZBTDsKLSAgICB9Ci0gICAgaWYgKHVp
by0+dWlvX29mZnNldCA8IDApIHsKLSAgICAgICAgcmV0dXJuIEVJTlZBTDsKLSAgICB9Ci0gICAg
aWYgKHVpby0+dWlvX29mZnNldCA+PSBMT05HX01BWCkgewotICAgICAgICByZXR1cm4gRUZCSUc7
Ci0gICAgfQotICAgIGlmICh1aW8tPnVpb19yZXNpZCA9PSAwKSB7Ci0gICAgICAgIHJldHVybiAw
OwotICAgIH0KLQotICAgIGlmIChpb2ZsYWcgJiBJT19BUFBFTkQpCi0gICAgICAgIHVpby0+dWlv
X29mZnNldCA9IG5wLT5ybl9zaXplOwotCi0gICAgaWYgKHNpemVfdCh1aW8tPnVpb19vZmZzZXQg
KyB1aW8tPnVpb19yZXNpZCkgPiAoc2l6ZV90KSB2cC0+dl9zaXplKSB7Ci0gICAgICAgIC8qIEV4
cGFuZCB0aGUgZmlsZSBzaXplIGJlZm9yZSB3cml0aW5nIHRvIGl0ICovCi0gICAgICAgIG9mZl90
IGVuZF9wb3MgPSB1aW8tPnVpb19vZmZzZXQgKyB1aW8tPnVpb19yZXNpZDsKLSAgICAgICAgaWYg
KGVuZF9wb3MgPiAob2ZmX3QpIG5wLT5ybl9idWZzaXplKSB7Ci0gICAgICAgICAgICAvLyBYWFg6
IHRoaXMgY291bGQgdXNlIGEgcGFnZSBsZXZlbCBhbGxvY2F0b3IKLSAgICAgICAgICAgIHNpemVf
dCBuZXdfc2l6ZSA9IHJvdW5kX3BhZ2UoZW5kX3Bvcyk7Ci0gICAgICAgICAgICB2b2lkICpuZXdf
YnVmID0gbWFsbG9jKG5ld19zaXplKTsKLSAgICAgICAgICAgIGlmICghbmV3X2J1ZikKLSAgICAg
ICAgICAgICAgICByZXR1cm4gRUlPOwotICAgICAgICAgICAgaWYgKG5wLT5ybl9zaXplICE9IDAp
IHsKLSAgICAgICAgICAgICAgICBtZW1jcHkobmV3X2J1ZiwgbnAtPnJuX2J1ZiwgdnAtPnZfc2l6
ZSk7Ci0gICAgICAgICAgICAgICAgaWYobnAtPnJuX293bnNfYnVmKQotICAgICAgICAgICAgICAg
ICAgICBmcmVlKG5wLT5ybl9idWYpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbnAtPnJu
X2J1ZiA9IChjaGFyICopIG5ld19idWY7Ci0gICAgICAgICAgICBucC0+cm5fYnVmc2l6ZSA9IG5l
d19zaXplOwotICAgICAgICB9Ci0gICAgICAgIG5wLT5ybl9zaXplID0gZW5kX3BvczsKLSAgICAg
ICAgdnAtPnZfc2l6ZSA9IGVuZF9wb3M7Ci0gICAgICAgIG5wLT5ybl9vd25zX2J1ZiA9IHRydWU7
Ci0gICAgfQotCi0gICAgc2V0X3RpbWVzX3RvX25vdygmKG5wLT5ybl9tdGltZSksICYobnAtPnJu
X2N0aW1lKSk7Ci0gICAgcmV0dXJuIHVpb21vdmUobnAtPnJuX2J1ZiArIHVpby0+dWlvX29mZnNl
dCwgdWlvLT51aW9fcmVzaWQsIHVpbyk7CisJc3RydWN0IHJhbWZzX25vZGUgKm5wID0gKHJhbWZz
X25vZGUgKikgdnAtPnZfZGF0YTsKKworCWlmICh2cC0+dl90eXBlID09IFZESVIpIHsKKwkJcmV0
dXJuIEVJU0RJUjsKKwl9CisJaWYgKHZwLT52X3R5cGUgIT0gVlJFRykgeworCQlyZXR1cm4gRUlO
VkFMOworCX0KKwlpZiAodWlvLT51aW9fb2Zmc2V0IDwgMCkgeworCQlyZXR1cm4gRUlOVkFMOwor
CX0KKwlpZiAodWlvLT51aW9fb2Zmc2V0ID49IExPTkdfTUFYKSB7CisJCXJldHVybiBFRkJJRzsK
Kwl9CisJaWYgKHVpby0+dWlvX3Jlc2lkID09IDApIHsKKwkJcmV0dXJuIDA7CisJfQorCisJaWYg
KGlvZmxhZyAmIElPX0FQUEVORCkKKwkJdWlvLT51aW9fb2Zmc2V0ID0gbnAtPnJuX3NpemU7CisK
KwlpZiAoc2l6ZV90KHVpby0+dWlvX29mZnNldCArIHVpby0+dWlvX3Jlc2lkKSA+IChzaXplX3Qp
IHZwLT52X3NpemUpIHsKKwkJLyogRXhwYW5kIHRoZSBmaWxlIHNpemUgYmVmb3JlIHdyaXRpbmcg
dG8gaXQgKi8KKwkJb2ZmX3QgZW5kX3BvcyA9IHVpby0+dWlvX29mZnNldCArIHVpby0+dWlvX3Jl
c2lkOworCQlpZiAoZW5kX3BvcyA+IChvZmZfdCkgbnAtPnJuX2J1ZnNpemUpIHsKKwkJCS8vIFhY
WDogdGhpcyBjb3VsZCB1c2UgYSBwYWdlIGxldmVsIGFsbG9jYXRvcgorCQkJc2l6ZV90IG5ld19z
aXplID0gcm91bmRfcGFnZShlbmRfcG9zKTsKKwkJCXZvaWQgKm5ld19idWYgPSBtYWxsb2MobmV3
X3NpemUpOworCQkJaWYgKCFuZXdfYnVmKQorCQkJCXJldHVybiBFSU87CisJCQlpZiAobnAtPnJu
X3NpemUgIT0gMCkgeworCQkJCW1lbWNweShuZXdfYnVmLCBucC0+cm5fYnVmLCB2cC0+dl9zaXpl
KTsKKwkJCQlpZihucC0+cm5fb3duc19idWYpCisJCQkJCWZyZWUobnAtPnJuX2J1Zik7CisJCQl9
CisJCQlucC0+cm5fYnVmID0gKGNoYXIgKikgbmV3X2J1ZjsKKwkJCW5wLT5ybl9idWZzaXplID0g
bmV3X3NpemU7CisJCX0KKwkJbnAtPnJuX3NpemUgPSBlbmRfcG9zOworCQl2cC0+dl9zaXplID0g
ZW5kX3BvczsKKwkJbnAtPnJuX293bnNfYnVmID0gdHJ1ZTsKKwl9CisKKwlzZXRfdGltZXNfdG9f
bm93KCYobnAtPnJuX210aW1lKSwgJihucC0+cm5fY3RpbWUpKTsKKwlyZXR1cm4gdWlvbW92ZShu
cC0+cm5fYnVmICsgdWlvLT51aW9fb2Zmc2V0LCB1aW8tPnVpb19yZXNpZCwgdWlvKTsKIH0KIAog
c3RhdGljIGludAogcmFtZnNfcmVuYW1lKHN0cnVjdCB2bm9kZSAqZHZwMSwgc3RydWN0IHZub2Rl
ICp2cDEsIGNoYXIgKm5hbWUxLAotICAgICAgICAgICAgIHN0cnVjdCB2bm9kZSAqZHZwMiwgc3Ry
dWN0IHZub2RlICp2cDIsIGNoYXIgKm5hbWUyKQorCQkJIHN0cnVjdCB2bm9kZSAqZHZwMiwgc3Ry
dWN0IHZub2RlICp2cDIsIGNoYXIgKm5hbWUyKQogewotICAgIHN0cnVjdCByYW1mc19ub2RlICpu
cCwgKm9sZF9ucDsKLSAgICBpbnQgZXJyb3I7Ci0KLSAgICBpZiAodnAyKSB7Ci0gICAgICAgIC8q
IFJlbW92ZSBkZXN0aW5hdGlvbiBmaWxlLCBmaXJzdCAqLwotICAgICAgICBlcnJvciA9IHJhbWZz
X3JlbW92ZV9ub2RlKChyYW1mc19ub2RlICopIGR2cDItPnZfZGF0YSwgKHJhbWZzX25vZGUgKikg
dnAyLT52X2RhdGEpOwotICAgICAgICBpZiAoZXJyb3IpCi0gICAgICAgICAgICByZXR1cm4gZXJy
b3I7Ci0gICAgfQotICAgIC8qIFNhbWUgZGlyZWN0b3J5ID8gKi8KLSAgICBpZiAoZHZwMSA9PSBk
dnAyKSB7Ci0gICAgICAgIC8qIENoYW5nZSB0aGUgbmFtZSBvZiBleGlzdGluZyBmaWxlICovCi0g
ICAgICAgIGVycm9yID0gcmFtZnNfcmVuYW1lX25vZGUoKHJhbWZzX25vZGUgKikgdnAxLT52X2Rh
dGEsIG5hbWUyKTsKLSAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAgICAgcmV0dXJuIGVycm9y
OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8qIENyZWF0ZSBuZXcgZmlsZSBvciBkaXJlY3Rvcnkg
Ki8KLSAgICAgICAgb2xkX25wID0gKHJhbWZzX25vZGUgKikgdnAxLT52X2RhdGE7Ci0gICAgICAg
IG5wID0gcmFtZnNfYWRkX25vZGUoKHJhbWZzX25vZGUgKikgZHZwMi0+dl9kYXRhLCBuYW1lMiwg
b2xkX25wLT5ybl90eXBlKTsKLSAgICAgICAgaWYgKG5wID09IE5VTEwpCi0gICAgICAgICAgICBy
ZXR1cm4gRU5PTUVNOwotCi0gICAgICAgIGlmIChvbGRfbnAtPnJuX2J1ZikgewotICAgICAgICAg
ICAgLyogQ29weSBmaWxlIGRhdGEgKi8KLSAgICAgICAgICAgIG5wLT5ybl9idWYgPSBvbGRfbnAt
PnJuX2J1ZjsKLSAgICAgICAgICAgIG5wLT5ybl9zaXplID0gb2xkX25wLT5ybl9zaXplOwotICAg
ICAgICAgICAgbnAtPnJuX2J1ZnNpemUgPSBvbGRfbnAtPnJuX2J1ZnNpemU7Ci0gICAgICAgICAg
ICBvbGRfbnAtPnJuX2J1ZiA9IE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgLyogUmVtb3ZlIHNv
dXJjZSBmaWxlICovCi0gICAgICAgIHJhbWZzX3JlbW92ZV9ub2RlKChyYW1mc19ub2RlICopIGR2
cDEtPnZfZGF0YSwgKHJhbWZzX25vZGUgKikgdnAxLT52X2RhdGEpOwotICAgIH0KLSAgICByZXR1
cm4gMDsKKwlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAsICpvbGRfbnA7CisJaW50IGVycm9yOworCisJ
aWYgKHZwMikgeworCQkvKiBSZW1vdmUgZGVzdGluYXRpb24gZmlsZSwgZmlyc3QgKi8KKwkJZXJy
b3IgPSByYW1mc19yZW1vdmVfbm9kZSgocmFtZnNfbm9kZSAqKSBkdnAyLT52X2RhdGEsIChyYW1m
c19ub2RlICopIHZwMi0+dl9kYXRhKTsKKwkJaWYgKGVycm9yKQorCQkJcmV0dXJuIGVycm9yOwor
CX0KKwkvKiBTYW1lIGRpcmVjdG9yeSA/ICovCisJaWYgKGR2cDEgPT0gZHZwMikgeworCQkvKiBD
aGFuZ2UgdGhlIG5hbWUgb2YgZXhpc3RpbmcgZmlsZSAqLworCQllcnJvciA9IHJhbWZzX3JlbmFt
ZV9ub2RlKChyYW1mc19ub2RlICopIHZwMS0+dl9kYXRhLCBuYW1lMik7CisJCWlmIChlcnJvcikK
KwkJCXJldHVybiBlcnJvcjsKKwl9IGVsc2UgeworCQkvKiBDcmVhdGUgbmV3IGZpbGUgb3IgZGly
ZWN0b3J5ICovCisJCW9sZF9ucCA9IChyYW1mc19ub2RlICopIHZwMS0+dl9kYXRhOworCQlucCA9
IHJhbWZzX2FkZF9ub2RlKChyYW1mc19ub2RlICopIGR2cDItPnZfZGF0YSwgbmFtZTIsIG9sZF9u
cC0+cm5fdHlwZSk7CisJCWlmIChucCA9PSBOVUxMKQorCQkJcmV0dXJuIEVOT01FTTsKKworCQlp
ZiAob2xkX25wLT5ybl9idWYpIHsKKwkJCS8qIENvcHkgZmlsZSBkYXRhICovCisJCQlucC0+cm5f
YnVmID0gb2xkX25wLT5ybl9idWY7CisJCQlucC0+cm5fc2l6ZSA9IG9sZF9ucC0+cm5fc2l6ZTsK
KwkJCW5wLT5ybl9idWZzaXplID0gb2xkX25wLT5ybl9idWZzaXplOworCQkJb2xkX25wLT5ybl9i
dWYgPSBOVUxMOworCQl9CisJCS8qIFJlbW92ZSBzb3VyY2UgZmlsZSAqLworCQlyYW1mc19yZW1v
dmVfbm9kZSgocmFtZnNfbm9kZSAqKSBkdnAxLT52X2RhdGEsIChyYW1mc19ub2RlICopIHZwMS0+
dl9kYXRhKTsKKwl9CisJcmV0dXJuIDA7CiB9CiAKIC8qCkBAIC01MzYsOTcgKzUzNiw5NyBAQCBy
YW1mc19yZW5hbWUoc3RydWN0IHZub2RlICpkdnAxLCBzdHJ1Y3Qgdm5vZGUgKnZwMSwgY2hhciAq
bmFtZTEsCiBzdGF0aWMgaW50CiByYW1mc19yZWFkZGlyKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVj
dCBmaWxlICpmcCwgc3RydWN0IGRpcmVudCAqZGlyKQogewotICAgIHN0cnVjdCByYW1mc19ub2Rl
ICpucCwgKmRucDsKLSAgICBpbnQgaTsKLQotICAgIG11dGV4X2xvY2soJnJhbWZzX2xvY2spOwot
Ci0gICAgc2V0X3RpbWVzX3RvX25vdygmKCgocmFtZnNfbm9kZSAqKSB2cC0+dl9kYXRhKS0+cm5f
YXRpbWUpKTsKLQotICAgIGlmIChmcC0+Zl9vZmZzZXQgPT0gMCkgewotICAgICAgICBkaXItPmRf
dHlwZSA9IERUX0RJUjsKLSAgICAgICAgc3RybGNweSgoY2hhciAqKSAmZGlyLT5kX25hbWUsICIu
Iiwgc2l6ZW9mKGRpci0+ZF9uYW1lKSk7Ci0gICAgfSBlbHNlIGlmIChmcC0+Zl9vZmZzZXQgPT0g
MSkgewotICAgICAgICBkaXItPmRfdHlwZSA9IERUX0RJUjsKLSAgICAgICAgc3RybGNweSgoY2hh
ciAqKSAmZGlyLT5kX25hbWUsICIuLiIsIHNpemVvZihkaXItPmRfbmFtZSkpOwotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIGRucCA9IChyYW1mc19ub2RlICopIHZwLT52X2RhdGE7Ci0gICAgICAgIG5w
ID0gZG5wLT5ybl9jaGlsZDsKLSAgICAgICAgaWYgKG5wID09IE5VTEwpIHsKLSAgICAgICAgICAg
IG11dGV4X3VubG9jaygmcmFtZnNfbG9jayk7Ci0gICAgICAgICAgICByZXR1cm4gRU5PRU5UOwot
ICAgICAgICB9Ci0KLSAgICAgICAgZm9yIChpID0gMDsgaSAhPSAoZnAtPmZfb2Zmc2V0IC0gMik7
IGkrKykgewotICAgICAgICAgICAgbnAgPSBucC0+cm5fbmV4dDsKLSAgICAgICAgICAgIGlmIChu
cCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsK
LSAgICAgICAgICAgICAgICByZXR1cm4gRU5PRU5UOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgICAgIGlmIChucC0+cm5fdHlwZSA9PSBWRElSKQotICAgICAgICAgICAgZGlyLT5kX3R5
cGUgPSBEVF9ESVI7Ci0gICAgICAgIGVsc2UgaWYgKG5wLT5ybl90eXBlID09IFZMTkspCi0gICAg
ICAgICAgICBkaXItPmRfdHlwZSA9IERUX0xOSzsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
ZGlyLT5kX3R5cGUgPSBEVF9SRUc7Ci0gICAgICAgIHN0cmxjcHkoKGNoYXIgKikgJmRpci0+ZF9u
YW1lLCBucC0+cm5fbmFtZSwKLSAgICAgICAgICAgICAgICBzaXplb2YoZGlyLT5kX25hbWUpKTsK
LSAgICB9Ci0gICAgZGlyLT5kX2ZpbGVubyA9IGZwLT5mX29mZnNldDsKKwlzdHJ1Y3QgcmFtZnNf
bm9kZSAqbnAsICpkbnA7CisJaW50IGk7CisKKwltdXRleF9sb2NrKCZyYW1mc19sb2NrKTsKKwor
CXNldF90aW1lc190b19ub3coJigoKHJhbWZzX25vZGUgKikgdnAtPnZfZGF0YSktPnJuX2F0aW1l
KSk7CisKKwlpZiAoZnAtPmZfb2Zmc2V0ID09IDApIHsKKwkJZGlyLT5kX3R5cGUgPSBEVF9ESVI7
CisJCXN0cmxjcHkoKGNoYXIgKikgJmRpci0+ZF9uYW1lLCAiLiIsIHNpemVvZihkaXItPmRfbmFt
ZSkpOworCX0gZWxzZSBpZiAoZnAtPmZfb2Zmc2V0ID09IDEpIHsKKwkJZGlyLT5kX3R5cGUgPSBE
VF9ESVI7CisJCXN0cmxjcHkoKGNoYXIgKikgJmRpci0+ZF9uYW1lLCAiLi4iLCBzaXplb2YoZGly
LT5kX25hbWUpKTsKKwl9IGVsc2UgeworCQlkbnAgPSAocmFtZnNfbm9kZSAqKSB2cC0+dl9kYXRh
OworCQlucCA9IGRucC0+cm5fY2hpbGQ7CisJCWlmIChucCA9PSBOVUxMKSB7CisJCQltdXRleF91
bmxvY2soJnJhbWZzX2xvY2spOworCQkJcmV0dXJuIEVOT0VOVDsKKwkJfQorCisJCWZvciAoaSA9
IDA7IGkgIT0gKGZwLT5mX29mZnNldCAtIDIpOyBpKyspIHsKKwkJCW5wID0gbnAtPnJuX25leHQ7
CisJCQlpZiAobnAgPT0gTlVMTCkgeworCQkJCW11dGV4X3VubG9jaygmcmFtZnNfbG9jayk7CisJ
CQkJcmV0dXJuIEVOT0VOVDsKKwkJCX0KKwkJfQorCQlpZiAobnAtPnJuX3R5cGUgPT0gVkRJUikK
KwkJCWRpci0+ZF90eXBlID0gRFRfRElSOworCQllbHNlIGlmIChucC0+cm5fdHlwZSA9PSBWTE5L
KQorCQkJZGlyLT5kX3R5cGUgPSBEVF9MTks7CisJCWVsc2UKKwkJCWRpci0+ZF90eXBlID0gRFRf
UkVHOworCQlzdHJsY3B5KChjaGFyICopICZkaXItPmRfbmFtZSwgbnAtPnJuX25hbWUsCisJCQkJ
c2l6ZW9mKGRpci0+ZF9uYW1lKSk7CisJfQorCWRpci0+ZF9maWxlbm8gPSBmcC0+Zl9vZmZzZXQ7
CiAvLwlkaXItPmRfbmFtZWxlbiA9IHN0cmxlbihkaXItPmRfbmFtZSk7CiAKLSAgICBmcC0+Zl9v
ZmZzZXQrKzsKKwlmcC0+Zl9vZmZzZXQrKzsKIAotICAgIG11dGV4X3VubG9jaygmcmFtZnNfbG9j
ayk7Ci0gICAgcmV0dXJuIDA7CisJbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKKwlyZXR1cm4g
MDsKIH0KIAogaW50CiByYW1mc19pbml0KHZvaWQpCiB7Ci0gICAgcmV0dXJuIDA7CisJcmV0dXJu
IDA7CiB9CiAKIHN0YXRpYyBpbnQKIHJhbWZzX2dldGF0dHIoc3RydWN0IHZub2RlICp2bm9kZSwg
c3RydWN0IHZhdHRyICphdHRyKQogewotICAgIGF0dHItPnZhX25vZGVpZCA9IHZub2RlLT52X2lu
bzsKLSAgICBhdHRyLT52YV9zaXplID0gdm5vZGUtPnZfc2l6ZTsKKwlhdHRyLT52YV9ub2RlaWQg
PSB2bm9kZS0+dl9pbm87CisJYXR0ci0+dmFfc2l6ZSA9IHZub2RlLT52X3NpemU7CiAKLSAgICBz
dHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSAocmFtZnNfbm9kZSAqKSB2bm9kZS0+dl9kYXRhOwotICAg
IGF0dHItPnZhX3R5cGUgPSAodnR5cGUpIG5wLT5ybl90eXBlOworCXN0cnVjdCByYW1mc19ub2Rl
ICpucCA9IChyYW1mc19ub2RlICopIHZub2RlLT52X2RhdGE7CisJYXR0ci0+dmFfdHlwZSA9ICh2
dHlwZSkgbnAtPnJuX3R5cGU7CiAKLSAgICBtZW1jcHkoJihhdHRyLT52YV9hdGltZSksICYobnAt
PnJuX2F0aW1lKSwgc2l6ZW9mKHN0cnVjdCB0aW1lc3BlYykpOwotICAgIG1lbWNweSgmKGF0dHIt
PnZhX2N0aW1lKSwgJihucC0+cm5fY3RpbWUpLCBzaXplb2Yoc3RydWN0IHRpbWVzcGVjKSk7Ci0g
ICAgbWVtY3B5KCYoYXR0ci0+dmFfbXRpbWUpLCAmKG5wLT5ybl9tdGltZSksIHNpemVvZihzdHJ1
Y3QgdGltZXNwZWMpKTsKKwltZW1jcHkoJihhdHRyLT52YV9hdGltZSksICYobnAtPnJuX2F0aW1l
KSwgc2l6ZW9mKHN0cnVjdCB0aW1lc3BlYykpOworCW1lbWNweSgmKGF0dHItPnZhX2N0aW1lKSwg
JihucC0+cm5fY3RpbWUpLCBzaXplb2Yoc3RydWN0IHRpbWVzcGVjKSk7CisJbWVtY3B5KCYoYXR0
ci0+dmFfbXRpbWUpLCAmKG5wLT5ybl9tdGltZSksIHNpemVvZihzdHJ1Y3QgdGltZXNwZWMpKTsK
IAotICAgIGF0dHItPnZhX21vZGUgPSBucC0+cm5fbW9kZTsKKwlhdHRyLT52YV9tb2RlID0gbnAt
PnJuX21vZGU7CiAKLSAgICByZXR1cm4gMDsKKwlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGludAog
cmFtZnNfc2V0YXR0cihzdHJ1Y3Qgdm5vZGUgKnZub2RlLCBzdHJ1Y3QgdmF0dHIgKmF0dHIpIHsK
LSAgICBzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSAocmFtZnNfbm9kZSAqKSB2bm9kZS0+dl9kYXRh
OworCXN0cnVjdCByYW1mc19ub2RlICpucCA9IChyYW1mc19ub2RlICopIHZub2RlLT52X2RhdGE7
CiAKLSAgICBpZiAoYXR0ci0+dmFfbWFzayAmIEFUX0FUSU1FKSB7Ci0gICAgICAgIG1lbWNweSgm
KG5wLT5ybl9hdGltZSksICYoYXR0ci0+dmFfYXRpbWUpLCBzaXplb2Yoc3RydWN0IHRpbWVzcGVj
KSk7Ci0gICAgfQorCWlmIChhdHRyLT52YV9tYXNrICYgQVRfQVRJTUUpIHsKKwkJbWVtY3B5KCYo
bnAtPnJuX2F0aW1lKSwgJihhdHRyLT52YV9hdGltZSksIHNpemVvZihzdHJ1Y3QgdGltZXNwZWMp
KTsKKwl9CiAKLSAgICBpZiAoYXR0ci0+dmFfbWFzayAmIEFUX0NUSU1FKSB7Ci0gICAgICAgIG1l
bWNweSgmKG5wLT5ybl9jdGltZSksICYoYXR0ci0+dmFfY3RpbWUpLCBzaXplb2Yoc3RydWN0IHRp
bWVzcGVjKSk7Ci0gICAgfQorCWlmIChhdHRyLT52YV9tYXNrICYgQVRfQ1RJTUUpIHsKKwkJbWVt
Y3B5KCYobnAtPnJuX2N0aW1lKSwgJihhdHRyLT52YV9jdGltZSksIHNpemVvZihzdHJ1Y3QgdGlt
ZXNwZWMpKTsKKwl9CiAKLSAgICBpZiAoYXR0ci0+dmFfbWFzayAmIEFUX01USU1FKSB7Ci0gICAg
ICAgIG1lbWNweSgmKG5wLT5ybl9tdGltZSksICYoYXR0ci0+dmFfbXRpbWUpLCBzaXplb2Yoc3Ry
dWN0IHRpbWVzcGVjKSk7Ci0gICAgfQorCWlmIChhdHRyLT52YV9tYXNrICYgQVRfTVRJTUUpIHsK
KwkJbWVtY3B5KCYobnAtPnJuX210aW1lKSwgJihhdHRyLT52YV9tdGltZSksIHNpemVvZihzdHJ1
Y3QgdGltZXNwZWMpKTsKKwl9CiAKLSAgICBpZiAoYXR0ci0+dmFfbWFzayAmIEFUX01PREUpIHsK
LSAgICAgICAgbnAtPnJuX21vZGUgPSBhdHRyLT52YV9tb2RlOwotICAgIH0KKwlpZiAoYXR0ci0+
dmFfbWFzayAmIEFUX01PREUpIHsKKwkJbnAtPnJuX21vZGUgPSBhdHRyLT52YV9tb2RlOworCX0K
IAotICAgIHJldHVybiAwOworCXJldHVybiAwOwogfQogCiAjZGVmaW5lIHJhbWZzX29wZW4gICAg
ICAoKHZub3Bfb3Blbl90KXZvcF9udWxsb3ApCkBAIC02NDIsMjggKzY0MiwyOCBAQCByYW1mc19z
ZXRhdHRyKHN0cnVjdCB2bm9kZSAqdm5vZGUsIHN0cnVjdCB2YXR0ciAqYXR0cikgewogICogdm5v
ZGUgb3BlcmF0aW9ucwogICovCiBzdHJ1Y3Qgdm5vcHMgcmFtZnNfdm5vcHMgPSB7Ci0gICAgICAg
IHJhbWZzX29wZW4sICAgICAgICAgICAgIC8qIG9wZW4gKi8KLSAgICAgICAgcmFtZnNfY2xvc2Us
ICAgICAgICAgICAgLyogY2xvc2UgKi8KLSAgICAgICAgcmFtZnNfcmVhZCwgICAgICAgICAgICAg
LyogcmVhZCAqLwotICAgICAgICByYW1mc193cml0ZSwgICAgICAgICAgICAvKiB3cml0ZSAqLwot
ICAgICAgICByYW1mc19zZWVrLCAgICAgICAgICAgICAvKiBzZWVrICovCi0gICAgICAgIHJhbWZz
X2lvY3RsLCAgICAgICAgICAgIC8qIGlvY3RsICovCi0gICAgICAgIHJhbWZzX2ZzeW5jLCAgICAg
ICAgICAgIC8qIGZzeW5jICovCi0gICAgICAgIHJhbWZzX3JlYWRkaXIsICAgICAgICAgIC8qIHJl
YWRkaXIgKi8KLSAgICAgICAgcmFtZnNfbG9va3VwLCAgICAgICAgICAgLyogbG9va3VwICovCi0g
ICAgICAgIHJhbWZzX2NyZWF0ZSwgICAgICAgICAgIC8qIGNyZWF0ZSAqLwotICAgICAgICByYW1m
c19yZW1vdmUsICAgICAgICAgICAvKiByZW1vdmUgKi8KLSAgICAgICAgcmFtZnNfcmVuYW1lLCAg
ICAgICAgICAgLyogcmVtYW1lICovCi0gICAgICAgIHJhbWZzX21rZGlyLCAgICAgICAgICAgIC8q
IG1rZGlyICovCi0gICAgICAgIHJhbWZzX3JtZGlyLCAgICAgICAgICAgIC8qIHJtZGlyICovCi0g
ICAgICAgIHJhbWZzX2dldGF0dHIsICAgICAgICAgIC8qIGdldGF0dHIgKi8KLSAgICAgICAgcmFt
ZnNfc2V0YXR0ciwgICAgICAgICAgLyogc2V0YXR0ciAqLwotICAgICAgICByYW1mc19pbmFjdGl2
ZSwgICAgICAgICAvKiBpbmFjdGl2ZSAqLwotICAgICAgICByYW1mc190cnVuY2F0ZSwgICAgICAg
ICAvKiB0cnVuY2F0ZSAqLwotICAgICAgICByYW1mc19saW5rLCAgICAgICAgICAgICAvKiBsaW5r
ICovCi0gICAgICAgICh2bm9wX2NhY2hlX3QpIG51bGxwdHIsIC8qIGFyYyAqLwotICAgICAgICBy
YW1mc19mYWxsb2NhdGUsICAgICAgICAvKiBmYWxsb2NhdGUgKi8KLSAgICAgICAgcmFtZnNfcmVh
ZGxpbmssICAgICAgICAgLyogcmVhZCBsaW5rICovCi0gICAgICAgIHJhbWZzX3N5bWxpbmssICAg
ICAgICAgIC8qIHN5bWJvbGljIGxpbmsgKi8KKwkJcmFtZnNfb3BlbiwgICAgICAgICAgICAgLyog
b3BlbiAqLworCQlyYW1mc19jbG9zZSwgICAgICAgICAgICAvKiBjbG9zZSAqLworCQlyYW1mc19y
ZWFkLCAgICAgICAgICAgICAvKiByZWFkICovCisJCXJhbWZzX3dyaXRlLCAgICAgICAgICAgIC8q
IHdyaXRlICovCisJCXJhbWZzX3NlZWssICAgICAgICAgICAgIC8qIHNlZWsgKi8KKwkJcmFtZnNf
aW9jdGwsICAgICAgICAgICAgLyogaW9jdGwgKi8KKwkJcmFtZnNfZnN5bmMsICAgICAgICAgICAg
LyogZnN5bmMgKi8KKwkJcmFtZnNfcmVhZGRpciwgICAgICAgICAgLyogcmVhZGRpciAqLworCQly
YW1mc19sb29rdXAsICAgICAgICAgICAvKiBsb29rdXAgKi8KKwkJcmFtZnNfY3JlYXRlLCAgICAg
ICAgICAgLyogY3JlYXRlICovCisJCXJhbWZzX3JlbW92ZSwgICAgICAgICAgIC8qIHJlbW92ZSAq
LworCQlyYW1mc19yZW5hbWUsICAgICAgICAgICAvKiByZW1hbWUgKi8KKwkJcmFtZnNfbWtkaXIs
ICAgICAgICAgICAgLyogbWtkaXIgKi8KKwkJcmFtZnNfcm1kaXIsICAgICAgICAgICAgLyogcm1k
aXIgKi8KKwkJcmFtZnNfZ2V0YXR0ciwgICAgICAgICAgLyogZ2V0YXR0ciAqLworCQlyYW1mc19z
ZXRhdHRyLCAgICAgICAgICAvKiBzZXRhdHRyICovCisJCXJhbWZzX2luYWN0aXZlLCAgICAgICAg
IC8qIGluYWN0aXZlICovCisJCXJhbWZzX3RydW5jYXRlLCAgICAgICAgIC8qIHRydW5jYXRlICov
CisJCXJhbWZzX2xpbmssICAgICAgICAgICAgIC8qIGxpbmsgKi8KKwkJKHZub3BfY2FjaGVfdCkg
bnVsbHB0ciwgLyogYXJjICovCisJCXJhbWZzX2ZhbGxvY2F0ZSwgICAgICAgIC8qIGZhbGxvY2F0
ZSAqLworCQlyYW1mc19yZWFkbGluaywgICAgICAgICAvKiByZWFkIGxpbmsgKi8KKwkJcmFtZnNf
c3ltbGluaywgICAgICAgICAgLyogc3ltYm9saWMgbGluayAqLwogfTsKIAotLSAKMi4xOS4yCgoK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRl
dmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Feb 06 10:42:52 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 06 Feb 2019 10:42:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grKfM-0003Ju-Mp; Wed, 06 Feb 2019 10:42:52 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Hs2p=QN=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1grKfK-0003JW-JJ
 for minios-devel@lists.xen.org; Wed, 06 Feb 2019 10:42:50 +0000
X-Inumbo-ID: f08937b6-29fb-11e9-929b-4f7774db886f
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id f08937b6-29fb-11e9-929b-4f7774db886f;
 Wed, 06 Feb 2019 10:42:46 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id CC182F2048;
 Wed,  6 Feb 2019 11:42:45 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id ZtpDp9JEMH6f; Wed,  6 Feb 2019 11:42:45 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id A351DF2023
 for <minios-devel@lists.xen.org>; Wed,  6 Feb 2019 11:42:43 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Wed, 6 Feb 2019 11:42:43 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 6 Feb 2019 11:42:11 +0100
Message-ID: <20190206104214.23847-11-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190206104214.23847-1-yuri.volchkov@neclab.eu>
References: <20190206104214.23847-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH 3/6] lib/ramfs: update license
 header for imported files
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Simon.kuenzer@neclab.eu, sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogbGliL3JhbWZzL3JhbWZzLmggICAgICAgIHwgMyArKysKIGxpYi9yYW1mcy9yYW1mc192ZnNv
cHMuYyB8IDMgKysrCiBsaWIvcmFtZnMvcmFtZnNfdm5vcHMuYyAgfCAzICsrKwogMyBmaWxlcyBj
aGFuZ2VkLCA5IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9saWIvcmFtZnMvcmFtZnMuaCBi
L2xpYi9yYW1mcy9yYW1mcy5oCmluZGV4IGU0ZWViNjVmLi4wMWU0ZGEwOSAxMDA2NDQKLS0tIGEv
bGliL3JhbWZzL3JhbWZzLmgKKysrIGIvbGliL3JhbWZzL3JhbWZzLmgKQEAgLTEsNSArMSw4IEBA
CisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCiAvKgogICogQ29w
eXJpZ2h0IChjKSAyMDA2LTIwMDcsIEtvaHN1a2UgT2h0YW5pCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQ2xvdWRpdXMgU3lzdGVtcywgTHRkLgorICogQ29weXJpZ2h0IChjKSAyMDE5LCBORUMgRXVy
b3BlIEx0ZC4sIE5FQyBDb3Jwb3JhdGlvbi4KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CmRpZmYgLS1naXQgYS9saWIvcmFtZnMvcmFtZnNfdmZzb3BzLmMgYi9saWIv
cmFtZnMvcmFtZnNfdmZzb3BzLmMKaW5kZXggNTNhZTc1OGEuLjRkZjU0YzVmIDEwMDY0NAotLS0g
YS9saWIvcmFtZnMvcmFtZnNfdmZzb3BzLmMKKysrIGIvbGliL3JhbWZzL3JhbWZzX3Zmc29wcy5j
CkBAIC0xLDUgKzEsOCBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVz
ZSAqLwogLyoKICAqIENvcHlyaWdodCAoYykgMjAwNi0yMDA3LCBLb2hzdWtlIE9odGFuaQorICog
Q29weXJpZ2h0IChDKSAyMDE0IENsb3VkaXVzIFN5c3RlbXMsIEx0ZC4KKyAqIENvcHlyaWdodCAo
YykgMjAxOSwgTkVDIEV1cm9wZSBMdGQuLCBORUMgQ29ycG9yYXRpb24uCiAgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApkaWZmIC0tZ2l0IGEvbGliL3JhbWZzL3JhbWZz
X3Zub3BzLmMgYi9saWIvcmFtZnMvcmFtZnNfdm5vcHMuYwppbmRleCA4YjU4NmY4OC4uNDUzOGU5
Y2IgMTAwNjQ0Ci0tLSBhL2xpYi9yYW1mcy9yYW1mc192bm9wcy5jCisrKyBiL2xpYi9yYW1mcy9y
YW1mc192bm9wcy5jCkBAIC0xLDUgKzEsOCBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6
IEJTRC0zLUNsYXVzZSAqLwogLyoKICAqIENvcHlyaWdodCAoYykgMjAwNi0yMDA3LCBLb2hzdWtl
IE9odGFuaQorICogQ29weXJpZ2h0IChDKSAyMDE0IENsb3VkaXVzIFN5c3RlbXMsIEx0ZC4KKyAq
IENvcHlyaWdodCAoYykgMjAxOSwgTkVDIEV1cm9wZSBMdGQuLCBORUMgQ29ycG9yYXRpb24uCiAg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLSAKMi4xOS4yCgoKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVs
IG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9s
aXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Feb 06 10:42:55 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 06 Feb 2019 10:42:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grKfP-0003Km-OT; Wed, 06 Feb 2019 10:42:55 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Hs2p=QN=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1grKfN-0003KN-QM
 for minios-devel@lists.xen.org; Wed, 06 Feb 2019 10:42:53 +0000
X-Inumbo-ID: f209763c-29fb-11e9-b400-9b18bc573a10
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id f209763c-29fb-11e9-b400-9b18bc573a10;
 Wed, 06 Feb 2019 10:42:49 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 59510104D8A;
 Wed,  6 Feb 2019 11:42:48 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id n7h2Spw_D8RN; Wed,  6 Feb 2019 11:42:48 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 35B71104D89
 for <minios-devel@lists.xen.org>; Wed,  6 Feb 2019 11:42:46 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Wed, 6 Feb 2019 11:42:46 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 6 Feb 2019 11:42:12 +0100
Message-ID: <20190206104214.23847-12-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190206104214.23847-1-yuri.volchkov@neclab.eu>
References: <20190206104214.23847-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH 4/6] lib/ramfs: adapt imported ramfs
 to Unikraft
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Simon.kuenzer@neclab.eu, sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogbGliL0NvbmZpZy51ayAgICAgICAgICAgIHwgICAxICsKIGxpYi9NYWtlZmlsZS51ayAgICAg
ICAgICB8ICAgMSArCiBsaWIvcmFtZnMvZXhwb3J0c3ltcy51ayAgfCAgIDEgKwogbGliL3JhbWZz
L3JhbWZzLmggICAgICAgIHwgICA0ICstCiBsaWIvcmFtZnMvcmFtZnNfdmZzb3BzLmMgfCAgMjgg
KysrKy0tLQogbGliL3JhbWZzL3JhbWZzX3Zub3BzLmMgIHwgMTcxICsrKysrKysrKysrKysrKysr
KysrKy0tLS0tLS0tLS0tLS0tLS0tLQogNiBmaWxlcyBjaGFuZ2VkLCAxMTUgaW5zZXJ0aW9ucygr
KSwgOTEgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3JhbWZzL2V4cG9ydHN5
bXMudWsKCmRpZmYgLS1naXQgYS9saWIvQ29uZmlnLnVrIGIvbGliL0NvbmZpZy51awppbmRleCA1
Y2Q3NTg1OC4uZDAzMjM1YTcgMTAwNjQ0Ci0tLSBhL2xpYi9Db25maWcudWsKKysrIGIvbGliL0Nv
bmZpZy51awpAQCAtMzQsNiArMzQsNyBAQCBzb3VyY2UgImxpYi91a3NjaGVkL0NvbmZpZy51ayIK
IHNvdXJjZSAibGliL3Vrc2NoZWRjb29wL0NvbmZpZy51ayIKIHNvdXJjZSAibGliL2ZkdC9Db25m
aWcudWsiCiBzb3VyY2UgImxpYi92ZnNjb3JlL0NvbmZpZy51ayIKK3NvdXJjZSAibGliL3JhbWZz
L0NvbmZpZy51ayIKIHNvdXJjZSAibGliL3VrbG9jay9Db25maWcudWsiCiBzb3VyY2UgImxpYi91
a21waS9Db25maWcudWsiCiBzb3VyY2UgImxpYi91a3N3cmFuZC9Db25maWcudWsiCmRpZmYgLS1n
aXQgYS9saWIvTWFrZWZpbGUudWsgYi9saWIvTWFrZWZpbGUudWsKaW5kZXggNGMyY2M4N2QuLmQ2
NmM3ZWU5IDEwMDY0NAotLS0gYS9saWIvTWFrZWZpbGUudWsKKysrIGIvbGliL01ha2VmaWxlLnVr
CkBAIC0xNiw2ICsxNiw3IEBAICQoZXZhbCAkKGNhbGwgX2ltcG9ydF9saWIsJChDT05GSUdfVUtf
QkFTRSkvbGliL3Vrc2NoZWQpKQogJChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENPTkZJR19V
S19CQVNFKS9saWIvdWtzY2hlZGNvb3ApKQogJChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENP
TkZJR19VS19CQVNFKS9saWIvZmR0KSkKICQoZXZhbCAkKGNhbGwgX2ltcG9ydF9saWIsJChDT05G
SUdfVUtfQkFTRSkvbGliL3Zmc2NvcmUpKQorJChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENP
TkZJR19VS19CQVNFKS9saWIvcmFtZnMpKQogJChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENP
TkZJR19VS19CQVNFKS9saWIvdWtsb2NrKSkKICQoZXZhbCAkKGNhbGwgX2ltcG9ydF9saWIsJChD
T05GSUdfVUtfQkFTRSkvbGliL3VrbXBpKSkKICQoZXZhbCAkKGNhbGwgX2ltcG9ydF9saWIsJChD
T05GSUdfVUtfQkFTRSkvbGliL3VrYnVzKSkKZGlmZiAtLWdpdCBhL2xpYi9yYW1mcy9leHBvcnRz
eW1zLnVrIGIvbGliL3JhbWZzL2V4cG9ydHN5bXMudWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAuLmM4NmMzZjM1Ci0tLSAvZGV2L251bGwKKysrIGIvbGliL3JhbWZzL2V4cG9y
dHN5bXMudWsKQEAgLTAsMCArMSBAQAorbm9uZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL2xpYi9yYW1mcy9yYW1mcy5oIGIvbGliL3JhbWZzL3JhbWZzLmgKaW5kZXgg
MDFlNGRhMDkuLjkxZmI1NzljIDEwMDY0NAotLS0gYS9saWIvcmFtZnMvcmFtZnMuaAorKysgYi9s
aWIvcmFtZnMvcmFtZnMuaApAQCAtMzMsNyArMzMsNyBAQAogI2lmbmRlZiBfUkFNRlNfSAogI2Rl
ZmluZSBfUkFNRlNfSAogCi0jaW5jbHVkZSA8b3N2L3ByZXguaD4KKyNpbmNsdWRlIDx2ZnNjb3Jl
L3ByZXguaD4KIAogLyogI2RlZmluZSBERUJVR19SQU1GUyAxICovCiAKQEAgLTYxLDcgKzYxLDcg
QEAgc3RydWN0IHJhbWZzX25vZGUgewogCXN0cnVjdCB0aW1lc3BlYyBybl9hdGltZTsKIAlzdHJ1
Y3QgdGltZXNwZWMgcm5fbXRpbWU7CiAJaW50IHJuX21vZGU7Ci0JYm9vbCBybl9vd25zX2J1ZjsK
KwlpbnQgcm5fb3duc19idWY7CiB9OwogCiBzdHJ1Y3QgcmFtZnNfbm9kZSAqcmFtZnNfYWxsb2Nh
dGVfbm9kZShjb25zdCBjaGFyICpuYW1lLCBpbnQgdHlwZSk7CmRpZmYgLS1naXQgYS9saWIvcmFt
ZnMvcmFtZnNfdmZzb3BzLmMgYi9saWIvcmFtZnMvcmFtZnNfdmZzb3BzLmMKaW5kZXggNGRmNTRj
NWYuLjNiNWMwNzVjIDEwMDY0NAotLS0gYS9saWIvcmFtZnMvcmFtZnNfdmZzb3BzLmMKKysrIGIv
bGliL3JhbWZzL3JhbWZzX3Zmc29wcy5jCkBAIC0zMiw5ICszMiwxMCBAQAogCiAjaW5jbHVkZSA8
ZXJybm8uaD4KIAotI2luY2x1ZGUgPG9zdi92bm9kZS5oPgotI2luY2x1ZGUgPG9zdi9tb3VudC5o
PgotI2luY2x1ZGUgPG9zdi9kZW50cnkuaD4KKyNkZWZpbmUgX0JTRF9TT1VSQ0UKKyNpbmNsdWRl
IDx2ZnNjb3JlL3Zub2RlLmg+CisjaW5jbHVkZSA8dmZzY29yZS9tb3VudC5oPgorI2luY2x1ZGUg
PHZmc2NvcmUvZGVudHJ5Lmg+CiAKICNpbmNsdWRlICJyYW1mcy5oIgogCkBAIC00NCw5ICs0NSw5
IEBAIHN0YXRpYyBpbnQgcmFtZnNfbW91bnQoc3RydWN0IG1vdW50ICptcCwgY29uc3QgY2hhciAq
ZGV2LCBpbnQgZmxhZ3MsIGNvbnN0IHZvaWQKIAogc3RhdGljIGludCByYW1mc191bm1vdW50KHN0
cnVjdCBtb3VudCAqbXAsIGludCBmbGFncyk7CiAKLSNkZWZpbmUgcmFtZnNfc3luYyAgICAoKHZm
c29wX3N5bmNfdCl2ZnNfbnVsbG9wKQotI2RlZmluZSByYW1mc192Z2V0ICAgICgodmZzb3Bfdmdl
dF90KXZmc19udWxsb3ApCi0jZGVmaW5lIHJhbWZzX3N0YXRmcyAgICAoKHZmc29wX3N0YXRmc190
KXZmc19udWxsb3ApCisjZGVmaW5lIHJhbWZzX3N5bmMgICAgKCh2ZnNvcF9zeW5jX3QpdmZzY29y
ZV9udWxsb3ApCisjZGVmaW5lIHJhbWZzX3ZnZXQgICAgKCh2ZnNvcF92Z2V0X3QpdmZzY29yZV9u
dWxsb3ApCisjZGVmaW5lIHJhbWZzX3N0YXRmcyAgICAoKHZmc29wX3N0YXRmc190KXZmc2NvcmVf
bnVsbG9wKQogCiAvKgogICogRmlsZSBzeXN0ZW0gb3BlcmF0aW9ucwpAQCAtNjAsMTEgKzYxLDIw
IEBAIHN0cnVjdCB2ZnNvcHMgcmFtZnNfdmZzb3BzID0gewogCQkmcmFtZnNfdm5vcHMsICAgICAg
Lyogdm5vcHMgKi8KIH07CiAKK3N0YXRpYyBzdHJ1Y3QgdmZzY29yZV9mc190eXBlIGZzX3JhbWZz
ID0geworCS52c19uYW1lID0gInJhbWZzIiwKKwkudnNfaW5pdCA9IE5VTEwsCisJLnZzX29wID0g
JnJhbWZzX3Zmc29wcywKK307CisKK1VLX0ZTX1JFR0lTVEVSKGZzX3JhbWZzKTsKKwogLyoKICAq
IE1vdW50IGEgZmlsZSBzeXN0ZW0uCiAgKi8KIHN0YXRpYyBpbnQKLXJhbWZzX21vdW50KHN0cnVj
dCBtb3VudCAqbXAsIGNvbnN0IGNoYXIgKmRldiwgaW50IGZsYWdzLCBjb25zdCB2b2lkICpkYXRh
KQorcmFtZnNfbW91bnQoc3RydWN0IG1vdW50ICptcCwgY29uc3QgY2hhciAqZGV2IF9fdW51c2Vk
LAorCSAgICBpbnQgZmxhZ3MgX191bnVzZWQsIGNvbnN0IHZvaWQgKmRhdGEgX191bnVzZWQpCiB7
CiAJc3RydWN0IHJhbWZzX25vZGUgKm5wOwogCkBAIC04Niw4ICs5Niw4IEBAIHJhbWZzX21vdW50
KHN0cnVjdCBtb3VudCAqbXAsIGNvbnN0IGNoYXIgKmRldiwgaW50IGZsYWdzLCBjb25zdCB2b2lk
ICpkYXRhKQogICogICAgICAgZGlyZWN0b3JpZXMsIGFuZCBpdCByZXF1aXJlcyBtb3JlIHdvcmsu
Li4KICAqLwogc3RhdGljIGludAotcmFtZnNfdW5tb3VudChzdHJ1Y3QgbW91bnQgKm1wLCBpbnQg
ZmxhZ3MpCityYW1mc191bm1vdW50KHN0cnVjdCBtb3VudCAqbXAsIGludCBmbGFncyBfX3VudXNl
ZCkKIHsKLQlyZWxlYXNlX21wX2RlbnRyaWVzKG1wKTsKKwl2ZnNjb3JlX3JlbGVhc2VfbXBfZGVu
dHJpZXMobXApOwogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvbGliL3JhbWZzL3JhbWZzX3Zu
b3BzLmMgYi9saWIvcmFtZnMvcmFtZnNfdm5vcHMuYwppbmRleCA0NTM4ZTljYi4uNjZhYjhhNjQg
MTAwNjQ0Ci0tLSBhL2xpYi9yYW1mcy9yYW1mc192bm9wcy5jCisrKyBiL2xpYi9yYW1mcy9yYW1m
c192bm9wcy5jCkBAIC0zMyw3ICszMyw5IEBACiAvKgogICogcm1hZnNfdm5vcHMuYyAtIHZub2Rl
IG9wZXJhdGlvbnMgZm9yIFJBTSBmaWxlIHN5c3RlbS4KICAqLworI2RlZmluZSBfR05VX1NPVVJD
RQogCisjaW5jbHVkZSA8dWsvZXNzZW50aWFscy5oPgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAj
aW5jbHVkZSA8ZGlyZW50Lmg+CiAjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CkBAIC00MSwyNCArNDMs
MjkgQEAKICNpbmNsdWRlIDxlcnJuby5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUg
PHN0ZGxpYi5oPgotI2luY2x1ZGUgPGZjbnRsLmg+CiAKLSNpbmNsdWRlIDxvc3YvcHJleC5oPgot
I2luY2x1ZGUgPG9zdi92bm9kZS5oPgotI2luY2x1ZGUgPG9zdi9maWxlLmg+Ci0jaW5jbHVkZSA8
b3N2L21vdW50Lmg+Ci0jaW5jbHVkZSA8b3N2L3Zub2RlX2F0dHIuaD4KKyNpbmNsdWRlIDx2ZnNj
b3JlL3ByZXguaD4KKyNpbmNsdWRlIDx2ZnNjb3JlL3Zub2RlLmg+CisjaW5jbHVkZSA8dmZzY29y
ZS9tb3VudC5oPgorI2luY2x1ZGUgPHZmc2NvcmUvdWlvLmg+CisjaW5jbHVkZSA8dmZzY29yZS9m
aWxlLmg+CiAKICNpbmNsdWRlICJyYW1mcy5oIgorI2luY2x1ZGUgPGRpcmVudC5oPgorI2luY2x1
ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8dmZzY29yZS9mcy5oPgogCi1zdGF0aWMgbXV0ZXhfdCBy
YW1mc19sb2NrID0gTVVURVhfSU5JVElBTElaRVI7CitzdGF0aWMgc3RydWN0IHVrX211dGV4IHJh
bWZzX2xvY2sgPSBVS19NVVRFWF9JTklUSUFMSVpFUihyYW1mc19sb2NrKTsKIHN0YXRpYyB1aW50
NjRfdCBpbm9kZV9jb3VudCA9IDE7IC8qIGlub2RlIDAgaXMgcmVzZXJ2ZWQgdG8gcm9vdCAqLwog
CiBzdGF0aWMgdm9pZAotc2V0X3RpbWVzX3RvX25vdyhzdHJ1Y3QgdGltZXNwZWMgKnRpbWUxLCBz
dHJ1Y3QgdGltZXNwZWMgKnRpbWUyID0gbnVsbHB0ciwgc3RydWN0IHRpbWVzcGVjICp0aW1lMyA9
IG51bGxwdHIpCitzZXRfdGltZXNfdG9fbm93KHN0cnVjdCB0aW1lc3BlYyAqdGltZTEsIHN0cnVj
dCB0aW1lc3BlYyAqdGltZTIsCisJCSBzdHJ1Y3QgdGltZXNwZWMgKnRpbWUzKQogewotCXN0cnVj
dCB0aW1lc3BlYyBub3c7Ci0JY2xvY2tfZ2V0dGltZShDTE9DS19SRUFMVElNRSwgJm5vdyk7CisJ
c3RydWN0IHRpbWVzcGVjIG5vdyA9IHswLCAwfTsKKworCS8qIFRPRE86IGltcGxlbWVudCB0aGUg
cmVhbCBjbG9ja19nZXR0aW1lICovCisJLyogY2xvY2tfZ2V0dGltZShDTE9DS19SRUFMVElNRSwg
Jm5vdyk7ICovCiAJaWYgKHRpbWUxKSB7CiAJCW1lbWNweSh0aW1lMSwgJm5vdywgc2l6ZW9mKHN0
cnVjdCB0aW1lc3BlYykpOwogCX0KQEAgLTc1LDcgKzgyLDcgQEAgcmFtZnNfYWxsb2NhdGVfbm9k
ZShjb25zdCBjaGFyICpuYW1lLCBpbnQgdHlwZSkKIHsKIAlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnA7
CiAKLQlucCA9IChyYW1mc19ub2RlICopIG1hbGxvYyhzaXplb2Yoc3RydWN0IHJhbWZzX25vZGUp
KTsKKwlucCA9IG1hbGxvYyhzaXplb2Yoc3RydWN0IHJhbWZzX25vZGUpKTsKIAlpZiAobnAgPT0g
TlVMTCkKIAkJcmV0dXJuIE5VTEw7CiAJbWVtc2V0KG5wLCAwLCBzaXplb2Yoc3RydWN0IHJhbWZz
X25vZGUpKTsKQEAgLTk3LDcgKzEwNCw3IEBAIHJhbWZzX2FsbG9jYXRlX25vZGUoY29uc3QgY2hh
ciAqbmFtZSwgaW50IHR5cGUpCiAJCW5wLT5ybl9tb2RlID0gU19JRlJFR3wwNzc3OwogCiAJc2V0
X3RpbWVzX3RvX25vdygmKG5wLT5ybl9jdGltZSksICYobnAtPnJuX2F0aW1lKSwgJihucC0+cm5f
bXRpbWUpKTsKLQlucC0+cm5fb3duc19idWYgPSB0cnVlOworCW5wLT5ybl9vd25zX2J1ZiA9IDE7
CiAKIAlyZXR1cm4gbnA7CiB9CkBAIC0xMjEsNyArMTI4LDcgQEAgcmFtZnNfYWRkX25vZGUoc3Ry
dWN0IHJhbWZzX25vZGUgKmRucCwgY2hhciAqbmFtZSwgaW50IHR5cGUpCiAJaWYgKG5wID09IE5V
TEwpCiAJCXJldHVybiBOVUxMOwogCi0JbXV0ZXhfbG9jaygmcmFtZnNfbG9jayk7CisJdWtfbXV0
ZXhfbG9jaygmcmFtZnNfbG9jayk7CiAKIAkvKiBMaW5rIHRvIHRoZSBkaXJlY3RvcnkgbGlzdCAq
LwogCWlmIChkbnAtPnJuX2NoaWxkID09IE5VTEwpIHsKQEAgLTEzMyw5ICsxNDAsOSBAQCByYW1m
c19hZGRfbm9kZShzdHJ1Y3QgcmFtZnNfbm9kZSAqZG5wLCBjaGFyICpuYW1lLCBpbnQgdHlwZSkK
IAkJcHJldi0+cm5fbmV4dCA9IG5wOwogCX0KIAotCXNldF90aW1lc190b19ub3coJihkbnAtPnJu
X210aW1lKSwgJihkbnAtPnJuX2N0aW1lKSk7CisJc2V0X3RpbWVzX3RvX25vdygmKGRucC0+cm5f
bXRpbWUpLCAmKGRucC0+cm5fY3RpbWUpLCBOVUxMKTsKIAotCW11dGV4X3VubG9jaygmcmFtZnNf
bG9jayk7CisJdWtfbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKIAlyZXR1cm4gbnA7CiB9CiAK
QEAgLTE0Nyw3ICsxNTQsNyBAQCByYW1mc19yZW1vdmVfbm9kZShzdHJ1Y3QgcmFtZnNfbm9kZSAq
ZG5wLCBzdHJ1Y3QgcmFtZnNfbm9kZSAqbnApCiAJaWYgKGRucC0+cm5fY2hpbGQgPT0gTlVMTCkK
IAkJcmV0dXJuIEVCVVNZOwogCi0JbXV0ZXhfbG9jaygmcmFtZnNfbG9jayk7CisJdWtfbXV0ZXhf
bG9jaygmcmFtZnNfbG9jayk7CiAKIAkvKiBVbmxpbmsgZnJvbSB0aGUgZGlyZWN0b3J5IGxpc3Qg
Ki8KIAlpZiAoZG5wLT5ybl9jaGlsZCA9PSBucCkgewpAQCAtMTU2LDcgKzE2Myw3IEBAIHJhbWZz
X3JlbW92ZV9ub2RlKHN0cnVjdCByYW1mc19ub2RlICpkbnAsIHN0cnVjdCByYW1mc19ub2RlICpu
cCkKIAkJZm9yIChwcmV2ID0gZG5wLT5ybl9jaGlsZDsgcHJldi0+cm5fbmV4dCAhPSBucDsKIAkJ
CSBwcmV2ID0gcHJldi0+cm5fbmV4dCkgewogCQkJaWYgKHByZXYtPnJuX25leHQgPT0gTlVMTCkg
ewotCQkJCW11dGV4X3VubG9jaygmcmFtZnNfbG9jayk7CisJCQkJdWtfbXV0ZXhfdW5sb2NrKCZy
YW1mc19sb2NrKTsKIAkJCQlyZXR1cm4gRU5PRU5UOwogCQkJfQogCQl9CkBAIC0xNjQsOSArMTcx
LDkgQEAgcmFtZnNfcmVtb3ZlX25vZGUoc3RydWN0IHJhbWZzX25vZGUgKmRucCwgc3RydWN0IHJh
bWZzX25vZGUgKm5wKQogCX0KIAlyYW1mc19mcmVlX25vZGUobnApOwogCi0Jc2V0X3RpbWVzX3Rv
X25vdygmKGRucC0+cm5fbXRpbWUpLCAmKGRucC0+cm5fY3RpbWUpKTsKKwlzZXRfdGltZXNfdG9f
bm93KCYoZG5wLT5ybl9tdGltZSksICYoZG5wLT5ybl9jdGltZSksIE5VTEwpOwogCi0JbXV0ZXhf
dW5sb2NrKCZyYW1mc19sb2NrKTsKKwl1a19tdXRleF91bmxvY2soJnJhbWZzX2xvY2spOwogCXJl
dHVybiAwOwogfQogCkBAIC0xOTMsNyArMjAwLDcgQEAgcmFtZnNfcmVuYW1lX25vZGUoc3RydWN0
IHJhbWZzX25vZGUgKm5wLCBjaGFyICpuYW1lKQogCQlucC0+cm5fbmFtZSA9IHRtcDsKIAl9CiAJ
bnAtPnJuX25hbWVsZW4gPSBsZW47Ci0Jc2V0X3RpbWVzX3RvX25vdygmKG5wLT5ybl9jdGltZSkp
OworCXNldF90aW1lc190b19ub3coJihucC0+cm5fY3RpbWUpLCBOVUxMLCBOVUxMKTsKIAlyZXR1
cm4gMDsKIH0KIApAQCAtMjEwLDEwICsyMTcsMTAgQEAgcmFtZnNfbG9va3VwKHN0cnVjdCB2bm9k
ZSAqZHZwLCBjaGFyICpuYW1lLCBzdHJ1Y3Qgdm5vZGUgKip2cHApCiAJaWYgKCpuYW1lID09ICdc
MCcpCiAJCXJldHVybiBFTk9FTlQ7CiAKLQltdXRleF9sb2NrKCZyYW1mc19sb2NrKTsKKwl1a19t
dXRleF9sb2NrKCZyYW1mc19sb2NrKTsKIAogCWxlbiA9IHN0cmxlbihuYW1lKTsKLQlkbnAgPSAo
cmFtZnNfbm9kZSAqKSBkdnAtPnZfZGF0YTsKKwlkbnAgPSBkdnAtPnZfZGF0YTsKIAlmb3VuZCA9
IDA7CiAJZm9yIChucCA9IGRucC0+cm5fY2hpbGQ7IG5wICE9IE5VTEw7IG5wID0gbnAtPnJuX25l
eHQpIHsKIAkJaWYgKG5wLT5ybl9uYW1lbGVuID09IGxlbiAmJgpAQCAtMjIzLDE3ICsyMzAsMTcg
QEAgcmFtZnNfbG9va3VwKHN0cnVjdCB2bm9kZSAqZHZwLCBjaGFyICpuYW1lLCBzdHJ1Y3Qgdm5v
ZGUgKip2cHApCiAJCX0KIAl9CiAJaWYgKGZvdW5kID09IDApIHsKLQkJbXV0ZXhfdW5sb2NrKCZy
YW1mc19sb2NrKTsKKwkJdWtfbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKIAkJcmV0dXJuIEVO
T0VOVDsKIAl9Ci0JaWYgKHZnZXQoZHZwLT52X21vdW50LCBpbm9kZV9jb3VudCsrLCAmdnApKSB7
CisJaWYgKHZmc2NvcmVfdmdldChkdnAtPnZfbW91bnQsIGlub2RlX2NvdW50KyssICZ2cCkpIHsK
IAkJLyogZm91bmQgaW4gY2FjaGUgKi8KIAkJKnZwcCA9IHZwOwotCQltdXRleF91bmxvY2soJnJh
bWZzX2xvY2spOworCQl1a19tdXRleF91bmxvY2soJnJhbWZzX2xvY2spOwogCQlyZXR1cm4gMDsK
IAl9CiAJaWYgKCF2cCkgewotCQltdXRleF91bmxvY2soJnJhbWZzX2xvY2spOworCQl1a19tdXRl
eF91bmxvY2soJnJhbWZzX2xvY2spOwogCQlyZXR1cm4gRU5PTUVNOwogCX0KIAl2cC0+dl9kYXRh
ID0gbnA7CkBAIC0yNDEsNyArMjQ4LDcgQEAgcmFtZnNfbG9va3VwKHN0cnVjdCB2bm9kZSAqZHZw
LCBjaGFyICpuYW1lLCBzdHJ1Y3Qgdm5vZGUgKip2cHApCiAJdnAtPnZfdHlwZSA9IG5wLT5ybl90
eXBlOwogCXZwLT52X3NpemUgPSBucC0+cm5fc2l6ZTsKIAotCW11dGV4X3VubG9jaygmcmFtZnNf
bG9jayk7CisJdWtfbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKIAogCSp2cHAgPSB2cDsKIApA
QCAtMjYxLDcgKzI2OCw3IEBAIHJhbWZzX21rZGlyKHN0cnVjdCB2bm9kZSAqZHZwLCBjaGFyICpu
YW1lLCBtb2RlX3QgbW9kZSkKIAlpZiAoIVNfSVNESVIobW9kZSkpCiAJCXJldHVybiBFSU5WQUw7
CiAKLQlucCA9IChyYW1mc19ub2RlICopIHJhbWZzX2FkZF9ub2RlKChyYW1mc19ub2RlICopIGR2
cC0+dl9kYXRhLCBuYW1lLCBWRElSKTsKKwlucCA9IHJhbWZzX2FkZF9ub2RlKGR2cC0+dl9kYXRh
LCBuYW1lLCBWRElSKTsKIAlpZiAobnAgPT0gTlVMTCkKIAkJcmV0dXJuIEVOT01FTTsKIAlucC0+
cm5fc2l6ZSA9IDA7CkBAIC0yNzUsNyArMjgyLDcgQEAgcmFtZnNfc3ltbGluayhzdHJ1Y3Qgdm5v
ZGUgKmR2cCwgY2hhciAqbmFtZSwgY2hhciAqbGluaykKIAlpZiAoc3RybGVuKG5hbWUpID4gTkFN
RV9NQVgpIHsKIAkJcmV0dXJuIEVOQU1FVE9PTE9ORzsKIAl9Ci0JYXV0byBucCA9IHJhbWZzX2Fk
ZF9ub2RlKChyYW1mc19ub2RlICopIGR2cC0+dl9kYXRhLCBuYW1lLCBWTE5LKTsKKwlzdHJ1Y3Qg
cmFtZnNfbm9kZSAqbnAgPSByYW1mc19hZGRfbm9kZShkdnAtPnZfZGF0YSwgbmFtZSwgVkxOSyk7
CiAJaWYgKG5wID09IE5VTEwpCiAJCXJldHVybiBFTk9NRU07CiAJLy8gU2F2ZSB0aGUgbGluayB0
YXJnZXQgd2l0aG91dCB0aGUgZmluYWwgbnVsbCwgYXMgcmVhZGxpbmsoKSB3YW50cyBpdC4KQEAg
LTI4NiwxMCArMjkzLDEwIEBAIHJhbWZzX3N5bWxpbmsoc3RydWN0IHZub2RlICpkdnAsIGNoYXIg
Km5hbWUsIGNoYXIgKmxpbmspCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQKK3N0YXRpYyBz
c2l6ZV90CiByYW1mc19yZWFkbGluayhzdHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3QgdWlvICp1aW8p
CiB7Ci0Jc3RydWN0IHJhbWZzX25vZGUgKm5wID0gKHJhbWZzX25vZGUgKikgdnAtPnZfZGF0YTsK
KwlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSB2cC0+dl9kYXRhOwogCXNpemVfdCBsZW47CiAKIAlp
ZiAodnAtPnZfdHlwZSAhPSBWTE5LKSB7CkBAIC0zMDgsMjMgKzMxNSwyMyBAQCByYW1mc19yZWFk
bGluayhzdHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3QgdWlvICp1aW8pCiAJZWxzZQogCQlsZW4gPSB1
aW8tPnVpb19yZXNpZDsKIAotCXNldF90aW1lc190b19ub3coICYobnAtPnJuX2F0aW1lKSk7Ci0J
cmV0dXJuIHVpb21vdmUobnAtPnJuX2J1ZiArIHVpby0+dWlvX29mZnNldCwgbGVuLCB1aW8pOwor
CXNldF90aW1lc190b19ub3coJihucC0+cm5fYXRpbWUpLCBOVUxMLCBOVUxMKTsKKwlyZXR1cm4g
dmZzY29yZV91aW9tb3ZlKG5wLT5ybl9idWYgKyB1aW8tPnVpb19vZmZzZXQsIGxlbiwgdWlvKTsK
IH0KIAogLyogUmVtb3ZlIGEgZGlyZWN0b3J5ICovCiBzdGF0aWMgaW50Ci1yYW1mc19ybWRpcihz
dHJ1Y3Qgdm5vZGUgKmR2cCwgc3RydWN0IHZub2RlICp2cCwgY2hhciAqbmFtZSkKK3JhbWZzX3Jt
ZGlyKHN0cnVjdCB2bm9kZSAqZHZwLCBzdHJ1Y3Qgdm5vZGUgKnZwLCBjaGFyICpuYW1lIF9fdW51
c2VkKQogewotCXJldHVybiByYW1mc19yZW1vdmVfbm9kZSgocmFtZnNfbm9kZSAqKSBkdnAtPnZf
ZGF0YSwgKHJhbWZzX25vZGUgKikgdnAtPnZfZGF0YSk7CisJcmV0dXJuIHJhbWZzX3JlbW92ZV9u
b2RlKGR2cC0+dl9kYXRhLCB2cC0+dl9kYXRhKTsKIH0KIAogLyogUmVtb3ZlIGEgZmlsZSAqLwog
c3RhdGljIGludAotcmFtZnNfcmVtb3ZlKHN0cnVjdCB2bm9kZSAqZHZwLCBzdHJ1Y3Qgdm5vZGUg
KnZwLCBjaGFyICpuYW1lKQorcmFtZnNfcmVtb3ZlKHN0cnVjdCB2bm9kZSAqZHZwLCBzdHJ1Y3Qg
dm5vZGUgKnZwLCBjaGFyICpuYW1lIF9fdW51c2VkKQogewogCURQUklOVEYoKCJyZW1vdmUgJXMg
aW4gJXNcbiIsIG5hbWUsIGR2cC0+dl9wYXRoKSk7Ci0JcmV0dXJuIHJhbWZzX3JlbW92ZV9ub2Rl
KChyYW1mc19ub2RlICopIGR2cC0+dl9kYXRhLCAocmFtZnNfbm9kZSAqKSB2cC0+dl9kYXRhKTsK
KwlyZXR1cm4gcmFtZnNfcmVtb3ZlX25vZGUoZHZwLT52X2RhdGEsIHZwLT52X2RhdGEpOwogfQog
CiAvKiBUcnVuY2F0ZSBmaWxlICovCkBAIC0zMzYsNyArMzQzLDcgQEAgcmFtZnNfdHJ1bmNhdGUo
c3RydWN0IHZub2RlICp2cCwgb2ZmX3QgbGVuZ3RoKQogCXNpemVfdCBuZXdfc2l6ZTsKIAogCURQ
UklOVEYoKCJ0cnVuY2F0ZSAlcyBsZW5ndGg9JWRcbiIsIHZwLT52X3BhdGgsIGxlbmd0aCkpOwot
CW5wID0gKHJhbWZzX25vZGUgKikgdnAtPnZfZGF0YTsKKwlucCA9IHZwLT52X2RhdGE7CiAKIAlp
ZiAobGVuZ3RoID09IDApIHsKIAkJaWYgKG5wLT5ybl9idWYgIT0gTlVMTCkgewpAQCAtMzQ1LDcg
KzM1Miw3IEBAIHJhbWZzX3RydW5jYXRlKHN0cnVjdCB2bm9kZSAqdnAsIG9mZl90IGxlbmd0aCkK
IAkJCW5wLT5ybl9idWYgPSBOVUxMOwogCQkJbnAtPnJuX2J1ZnNpemUgPSAwOwogCQl9Ci0JfSBl
bHNlIGlmIChzaXplX3QobGVuZ3RoKSA+IG5wLT5ybl9idWZzaXplKSB7CisJfSBlbHNlIGlmICgo
c2l6ZV90KSBsZW5ndGggPiBucC0+cm5fYnVmc2l6ZSkgewogCQkvLyBYWFg6IHRoaXMgY291bGQg
dXNlIGEgcGFnZSBsZXZlbCBhbGxvY2F0b3IKIAkJbmV3X3NpemUgPSByb3VuZF9wYWdlKGxlbmd0
aCk7CiAJCW5ld19idWYgPSBtYWxsb2MobmV3X3NpemUpOwpAQCAtMzU4LDExICszNjUsMTEgQEAg
cmFtZnNfdHJ1bmNhdGUoc3RydWN0IHZub2RlICp2cCwgb2ZmX3QgbGVuZ3RoKQogCQl9CiAJCW5w
LT5ybl9idWYgPSAoY2hhciAqKSBuZXdfYnVmOwogCQlucC0+cm5fYnVmc2l6ZSA9IG5ld19zaXpl
OwotCQlucC0+cm5fb3duc19idWYgPSB0cnVlOworCQlucC0+cm5fb3duc19idWYgPSAxOwogCX0K
IAlucC0+cm5fc2l6ZSA9IGxlbmd0aDsKIAl2cC0+dl9zaXplID0gbGVuZ3RoOwotCXNldF90aW1l
c190b19ub3coJihucC0+cm5fbXRpbWUpLCAmKG5wLT5ybl9jdGltZSkpOworCXNldF90aW1lc190
b19ub3coJihucC0+cm5fbXRpbWUpLCAmKG5wLT5ybl9jdGltZSksIE5VTEwpOwogCXJldHVybiAw
OwogfQogCkBAIC0zODIsMTYgKzM4OSwxNyBAQCByYW1mc19jcmVhdGUoc3RydWN0IHZub2RlICpk
dnAsIGNoYXIgKm5hbWUsIG1vZGVfdCBtb2RlKQogCWlmICghU19JU1JFRyhtb2RlKSkKIAkJcmV0
dXJuIEVJTlZBTDsKIAotCW5wID0gcmFtZnNfYWRkX25vZGUoKHJhbWZzX25vZGUgKikgZHZwLT52
X2RhdGEsIG5hbWUsIFZSRUcpOworCW5wID0gcmFtZnNfYWRkX25vZGUoZHZwLT52X2RhdGEsIG5h
bWUsIFZSRUcpOwogCWlmIChucCA9PSBOVUxMKQogCQlyZXR1cm4gRU5PTUVNOwogCXJldHVybiAw
OwogfQogCi1zdGF0aWMgaW50Ci1yYW1mc19yZWFkKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCBm
aWxlICpmcCwgc3RydWN0IHVpbyAqdWlvLCBpbnQgaW9mbGFnKQorc3RhdGljIHNzaXplX3QKK3Jh
bWZzX3JlYWQoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAgX191bnVz
ZWQsCisJICAgc3RydWN0IHVpbyAqdWlvLCBpbnQgaW9mbGFnIF9fdW51c2VkKQogewotCXN0cnVj
dCByYW1mc19ub2RlICpucCA9IChyYW1mc19ub2RlICopIHZwLT52X2RhdGE7CisJc3RydWN0IHJh
bWZzX25vZGUgKm5wID0gIHZwLT52X2RhdGE7CiAJc2l6ZV90IGxlbjsKIAogCWlmICh2cC0+dl90
eXBlID09IFZESVIpIHsKQEAgLTQxNSwxNSArNDIzLDE1IEBAIHJhbWZzX3JlYWQoc3RydWN0IHZu
b2RlICp2cCwgc3RydWN0IGZpbGUgKmZwLCBzdHJ1Y3QgdWlvICp1aW8sIGludCBpb2ZsYWcpCiAJ
ZWxzZQogCQlsZW4gPSB1aW8tPnVpb19yZXNpZDsKIAotCXNldF90aW1lc190b19ub3coJihucC0+
cm5fYXRpbWUpKTsKKwlzZXRfdGltZXNfdG9fbm93KCYobnAtPnJuX2F0aW1lKSwgTlVMTCwgTlVM
TCk7CiAKLQlyZXR1cm4gdWlvbW92ZShucC0+cm5fYnVmICsgdWlvLT51aW9fb2Zmc2V0LCBsZW4s
IHVpbyk7CisJcmV0dXJuIHZmc2NvcmVfdWlvbW92ZShucC0+cm5fYnVmICsgdWlvLT51aW9fb2Zm
c2V0LCBsZW4sIHVpbyk7CiB9CiAKIGludAogcmFtZnNfc2V0X2ZpbGVfZGF0YShzdHJ1Y3Qgdm5v
ZGUgKnZwLCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKLQlzdHJ1Y3QgcmFtZnNf
bm9kZSAqbnAgPSAocmFtZnNfbm9kZSAqKSB2cC0+dl9kYXRhOworCXN0cnVjdCByYW1mc19ub2Rl
ICpucCA9ICB2cC0+dl9kYXRhOwogCiAJaWYgKHZwLT52X3R5cGUgPT0gVkRJUikgewogCQlyZXR1
cm4gRUlTRElSOwpAQCAtNDM5LDE1ICs0NDcsMTUgQEAgcmFtZnNfc2V0X2ZpbGVfZGF0YShzdHJ1
Y3Qgdm5vZGUgKnZwLCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSkKIAlucC0+cm5fYnVm
c2l6ZSA9IHNpemU7CiAJbnAtPnJuX3NpemUgPSBzaXplOwogCXZwLT52X3NpemUgPSBzaXplOwot
CW5wLT5ybl9vd25zX2J1ZiA9IGZhbHNlOworCW5wLT5ybl9vd25zX2J1ZiA9IDA7CiAKIAlyZXR1
cm4gMDsKIH0KIAotc3RhdGljIGludAorc3RhdGljIHNzaXplX3QKIHJhbWZzX3dyaXRlKHN0cnVj
dCB2bm9kZSAqdnAsIHN0cnVjdCB1aW8gKnVpbywgaW50IGlvZmxhZykKIHsKLQlzdHJ1Y3QgcmFt
ZnNfbm9kZSAqbnAgPSAocmFtZnNfbm9kZSAqKSB2cC0+dl9kYXRhOworCXN0cnVjdCByYW1mc19u
b2RlICpucCA9ICB2cC0+dl9kYXRhOwogCiAJaWYgKHZwLT52X3R5cGUgPT0gVkRJUikgewogCQly
ZXR1cm4gRUlTRElSOwpAQCAtNDY4LDcgKzQ3Niw3IEBAIHJhbWZzX3dyaXRlKHN0cnVjdCB2bm9k
ZSAqdnAsIHN0cnVjdCB1aW8gKnVpbywgaW50IGlvZmxhZykKIAlpZiAoaW9mbGFnICYgSU9fQVBQ
RU5EKQogCQl1aW8tPnVpb19vZmZzZXQgPSBucC0+cm5fc2l6ZTsKIAotCWlmIChzaXplX3QodWlv
LT51aW9fb2Zmc2V0ICsgdWlvLT51aW9fcmVzaWQpID4gKHNpemVfdCkgdnAtPnZfc2l6ZSkgewor
CWlmICgoc2l6ZV90KSB1aW8tPnVpb19vZmZzZXQgKyB1aW8tPnVpb19yZXNpZCA+IChzaXplX3Qp
IHZwLT52X3NpemUpIHsKIAkJLyogRXhwYW5kIHRoZSBmaWxlIHNpemUgYmVmb3JlIHdyaXRpbmcg
dG8gaXQgKi8KIAkJb2ZmX3QgZW5kX3BvcyA9IHVpby0+dWlvX29mZnNldCArIHVpby0+dWlvX3Jl
c2lkOwogCQlpZiAoZW5kX3BvcyA+IChvZmZfdCkgbnAtPnJuX2J1ZnNpemUpIHsKQEAgLTQ4Nywx
NSArNDk1LDE2IEBAIHJhbWZzX3dyaXRlKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCB1aW8gKnVp
bywgaW50IGlvZmxhZykKIAkJfQogCQlucC0+cm5fc2l6ZSA9IGVuZF9wb3M7CiAJCXZwLT52X3Np
emUgPSBlbmRfcG9zOwotCQlucC0+cm5fb3duc19idWYgPSB0cnVlOworCQlucC0+cm5fb3duc19i
dWYgPSAxOwogCX0KIAotCXNldF90aW1lc190b19ub3coJihucC0+cm5fbXRpbWUpLCAmKG5wLT5y
bl9jdGltZSkpOwotCXJldHVybiB1aW9tb3ZlKG5wLT5ybl9idWYgKyB1aW8tPnVpb19vZmZzZXQs
IHVpby0+dWlvX3Jlc2lkLCB1aW8pOworCXNldF90aW1lc190b19ub3coJihucC0+cm5fbXRpbWUp
LCAmKG5wLT5ybl9jdGltZSksIE5VTEwpOworCXJldHVybiB2ZnNjb3JlX3Vpb21vdmUobnAtPnJu
X2J1ZiArIHVpby0+dWlvX29mZnNldCwgdWlvLT51aW9fcmVzaWQsCisJCQkgICAgICAgdWlvKTsK
IH0KIAogc3RhdGljIGludAotcmFtZnNfcmVuYW1lKHN0cnVjdCB2bm9kZSAqZHZwMSwgc3RydWN0
IHZub2RlICp2cDEsIGNoYXIgKm5hbWUxLAorcmFtZnNfcmVuYW1lKHN0cnVjdCB2bm9kZSAqZHZw
MSwgc3RydWN0IHZub2RlICp2cDEsIGNoYXIgKm5hbWUxIF9fdW51c2VkLAogCQkJIHN0cnVjdCB2
bm9kZSAqZHZwMiwgc3RydWN0IHZub2RlICp2cDIsIGNoYXIgKm5hbWUyKQogewogCXN0cnVjdCBy
YW1mc19ub2RlICpucCwgKm9sZF9ucDsKQEAgLTUwMywyMCArNTEyLDIwIEBAIHJhbWZzX3JlbmFt
ZShzdHJ1Y3Qgdm5vZGUgKmR2cDEsIHN0cnVjdCB2bm9kZSAqdnAxLCBjaGFyICpuYW1lMSwKIAog
CWlmICh2cDIpIHsKIAkJLyogUmVtb3ZlIGRlc3RpbmF0aW9uIGZpbGUsIGZpcnN0ICovCi0JCWVy
cm9yID0gcmFtZnNfcmVtb3ZlX25vZGUoKHJhbWZzX25vZGUgKikgZHZwMi0+dl9kYXRhLCAocmFt
ZnNfbm9kZSAqKSB2cDItPnZfZGF0YSk7CisJCWVycm9yID0gcmFtZnNfcmVtb3ZlX25vZGUoZHZw
Mi0+dl9kYXRhLCB2cDItPnZfZGF0YSk7CiAJCWlmIChlcnJvcikKIAkJCXJldHVybiBlcnJvcjsK
IAl9CiAJLyogU2FtZSBkaXJlY3RvcnkgPyAqLwogCWlmIChkdnAxID09IGR2cDIpIHsKIAkJLyog
Q2hhbmdlIHRoZSBuYW1lIG9mIGV4aXN0aW5nIGZpbGUgKi8KLQkJZXJyb3IgPSByYW1mc19yZW5h
bWVfbm9kZSgocmFtZnNfbm9kZSAqKSB2cDEtPnZfZGF0YSwgbmFtZTIpOworCQllcnJvciA9IHJh
bWZzX3JlbmFtZV9ub2RlKHZwMS0+dl9kYXRhLCBuYW1lMik7CiAJCWlmIChlcnJvcikKIAkJCXJl
dHVybiBlcnJvcjsKIAl9IGVsc2UgewogCQkvKiBDcmVhdGUgbmV3IGZpbGUgb3IgZGlyZWN0b3J5
ICovCi0JCW9sZF9ucCA9IChyYW1mc19ub2RlICopIHZwMS0+dl9kYXRhOwotCQlucCA9IHJhbWZz
X2FkZF9ub2RlKChyYW1mc19ub2RlICopIGR2cDItPnZfZGF0YSwgbmFtZTIsIG9sZF9ucC0+cm5f
dHlwZSk7CisJCW9sZF9ucCA9IHZwMS0+dl9kYXRhOworCQlucCA9IHJhbWZzX2FkZF9ub2RlKGR2
cDItPnZfZGF0YSwgbmFtZTIsIG9sZF9ucC0+cm5fdHlwZSk7CiAJCWlmIChucCA9PSBOVUxMKQog
CQkJcmV0dXJuIEVOT01FTTsKIApAQCAtNTI4LDcgKzUzNyw3IEBAIHJhbWZzX3JlbmFtZShzdHJ1
Y3Qgdm5vZGUgKmR2cDEsIHN0cnVjdCB2bm9kZSAqdnAxLCBjaGFyICpuYW1lMSwKIAkJCW9sZF9u
cC0+cm5fYnVmID0gTlVMTDsKIAkJfQogCQkvKiBSZW1vdmUgc291cmNlIGZpbGUgKi8KLQkJcmFt
ZnNfcmVtb3ZlX25vZGUoKHJhbWZzX25vZGUgKikgZHZwMS0+dl9kYXRhLCAocmFtZnNfbm9kZSAq
KSB2cDEtPnZfZGF0YSk7CisJCXJhbWZzX3JlbW92ZV9ub2RlKGR2cDEtPnZfZGF0YSwgdnAxLT52
X2RhdGEpOwogCX0KIAlyZXR1cm4gMDsKIH0KQEAgLTUzNywxNCArNTQ2LDE1IEBAIHJhbWZzX3Jl
bmFtZShzdHJ1Y3Qgdm5vZGUgKmR2cDEsIHN0cnVjdCB2bm9kZSAqdnAxLCBjaGFyICpuYW1lMSwK
ICAqIEB2cDogdm5vZGUgb2YgdGhlIGRpcmVjdG9yeS4KICAqLwogc3RhdGljIGludAotcmFtZnNf
cmVhZGRpcihzdHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3QgZmlsZSAqZnAsIHN0cnVjdCBkaXJlbnQg
KmRpcikKK3JhbWZzX3JlYWRkaXIoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IHZmc2NvcmVfZmls
ZSAqZnAsIHN0cnVjdCBkaXJlbnQgKmRpcikKIHsKIAlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAsICpk
bnA7CiAJaW50IGk7CiAKLQltdXRleF9sb2NrKCZyYW1mc19sb2NrKTsKKwl1a19tdXRleF9sb2Nr
KCZyYW1mc19sb2NrKTsKIAotCXNldF90aW1lc190b19ub3coJigoKHJhbWZzX25vZGUgKikgdnAt
PnZfZGF0YSktPnJuX2F0aW1lKSk7CisJc2V0X3RpbWVzX3RvX25vdygmKCgoc3RydWN0IHJhbWZz
X25vZGUgKikgdnAtPnZfZGF0YSktPnJuX2F0aW1lKSwKKwkJCSBOVUxMLCBOVUxMKTsKIAogCWlm
IChmcC0+Zl9vZmZzZXQgPT0gMCkgewogCQlkaXItPmRfdHlwZSA9IERUX0RJUjsKQEAgLTU1Mywx
NyArNTYzLDE3IEBAIHJhbWZzX3JlYWRkaXIoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IGZpbGUg
KmZwLCBzdHJ1Y3QgZGlyZW50ICpkaXIpCiAJCWRpci0+ZF90eXBlID0gRFRfRElSOwogCQlzdHJs
Y3B5KChjaGFyICopICZkaXItPmRfbmFtZSwgIi4uIiwgc2l6ZW9mKGRpci0+ZF9uYW1lKSk7CiAJ
fSBlbHNlIHsKLQkJZG5wID0gKHJhbWZzX25vZGUgKikgdnAtPnZfZGF0YTsKKwkJZG5wID0gdnAt
PnZfZGF0YTsKIAkJbnAgPSBkbnAtPnJuX2NoaWxkOwogCQlpZiAobnAgPT0gTlVMTCkgewotCQkJ
bXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKKwkJCXVrX211dGV4X3VubG9jaygmcmFtZnNfbG9j
ayk7CiAJCQlyZXR1cm4gRU5PRU5UOwogCQl9CiAKIAkJZm9yIChpID0gMDsgaSAhPSAoZnAtPmZf
b2Zmc2V0IC0gMik7IGkrKykgewogCQkJbnAgPSBucC0+cm5fbmV4dDsKIAkJCWlmIChucCA9PSBO
VUxMKSB7Ci0JCQkJbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKKwkJCQl1a19tdXRleF91bmxv
Y2soJnJhbWZzX2xvY2spOwogCQkJCXJldHVybiBFTk9FTlQ7CiAJCQl9CiAJCX0KQEAgLTU4MSw3
ICs1OTEsNyBAQCByYW1mc19yZWFkZGlyKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCBmaWxlICpm
cCwgc3RydWN0IGRpcmVudCAqZGlyKQogCiAJZnAtPmZfb2Zmc2V0Kys7CiAKLQltdXRleF91bmxv
Y2soJnJhbWZzX2xvY2spOworCXVrX211dGV4X3VubG9jaygmcmFtZnNfbG9jayk7CiAJcmV0dXJu
IDA7CiB9CiAKQEAgLTU5NCwxMSArNjA0LDEyIEBAIHJhbWZzX2luaXQodm9pZCkKIHN0YXRpYyBp
bnQKIHJhbWZzX2dldGF0dHIoc3RydWN0IHZub2RlICp2bm9kZSwgc3RydWN0IHZhdHRyICphdHRy
KQogeworCXN0cnVjdCByYW1mc19ub2RlICpucCA9IHZub2RlLT52X2RhdGE7CisKIAlhdHRyLT52
YV9ub2RlaWQgPSB2bm9kZS0+dl9pbm87CiAJYXR0ci0+dmFfc2l6ZSA9IHZub2RlLT52X3NpemU7
CiAKLQlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSAocmFtZnNfbm9kZSAqKSB2bm9kZS0+dl9kYXRh
OwotCWF0dHItPnZhX3R5cGUgPSAodnR5cGUpIG5wLT5ybl90eXBlOworCWF0dHItPnZhX3R5cGUg
PSBucC0+cm5fdHlwZTsKIAogCW1lbWNweSgmKGF0dHItPnZhX2F0aW1lKSwgJihucC0+cm5fYXRp
bWUpLCBzaXplb2Yoc3RydWN0IHRpbWVzcGVjKSk7CiAJbWVtY3B5KCYoYXR0ci0+dmFfY3RpbWUp
LCAmKG5wLT5ybl9jdGltZSksIHNpemVvZihzdHJ1Y3QgdGltZXNwZWMpKTsKQEAgLTYxMSw3ICs2
MjIsNyBAQCByYW1mc19nZXRhdHRyKHN0cnVjdCB2bm9kZSAqdm5vZGUsIHN0cnVjdCB2YXR0ciAq
YXR0cikKIAogc3RhdGljIGludAogcmFtZnNfc2V0YXR0cihzdHJ1Y3Qgdm5vZGUgKnZub2RlLCBz
dHJ1Y3QgdmF0dHIgKmF0dHIpIHsKLQlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSAocmFtZnNfbm9k
ZSAqKSB2bm9kZS0+dl9kYXRhOworCXN0cnVjdCByYW1mc19ub2RlICpucCA9IHZub2RlLT52X2Rh
dGE7CiAKIAlpZiAoYXR0ci0+dmFfbWFzayAmIEFUX0FUSU1FKSB7CiAJCW1lbWNweSgmKG5wLT5y
bl9hdGltZSksICYoYXR0ci0+dmFfYXRpbWUpLCBzaXplb2Yoc3RydWN0IHRpbWVzcGVjKSk7CkBA
IC02MzIsMTQgKzY0MywxNCBAQCByYW1mc19zZXRhdHRyKHN0cnVjdCB2bm9kZSAqdm5vZGUsIHN0
cnVjdCB2YXR0ciAqYXR0cikgewogCXJldHVybiAwOwogfQogCi0jZGVmaW5lIHJhbWZzX29wZW4g
ICAgICAoKHZub3Bfb3Blbl90KXZvcF9udWxsb3ApCi0jZGVmaW5lIHJhbWZzX2Nsb3NlICAgICAo
KHZub3BfY2xvc2VfdCl2b3BfbnVsbG9wKQotI2RlZmluZSByYW1mc19zZWVrICAgICAgKCh2bm9w
X3NlZWtfdCl2b3BfbnVsbG9wKQotI2RlZmluZSByYW1mc19pb2N0bCAgICAgKCh2bm9wX2lvY3Rs
X3Qpdm9wX2VpbnZhbCkKLSNkZWZpbmUgcmFtZnNfZnN5bmMgICAgICgodm5vcF9mc3luY190KXZv
cF9udWxsb3ApCi0jZGVmaW5lIHJhbWZzX2luYWN0aXZlICAoKHZub3BfaW5hY3RpdmVfdCl2b3Bf
bnVsbG9wKQotI2RlZmluZSByYW1mc19saW5rICAgICAgKCh2bm9wX2xpbmtfdCl2b3BfZXBlcm0p
Ci0jZGVmaW5lIHJhbWZzX2ZhbGxvY2F0ZSAoKHZub3BfZmFsbG9jYXRlX3Qpdm9wX251bGxvcCkK
KyNkZWZpbmUgcmFtZnNfb3BlbiAgICAgICgodm5vcF9vcGVuX3QpdmZzY29yZV92b3BfbnVsbG9w
KQorI2RlZmluZSByYW1mc19jbG9zZSAgICAgKCh2bm9wX2Nsb3NlX3QpdmZzY29yZV92b3BfbnVs
bG9wKQorI2RlZmluZSByYW1mc19zZWVrICAgICAgKCh2bm9wX3NlZWtfdCl2ZnNjb3JlX3ZvcF9u
dWxsb3ApCisjZGVmaW5lIHJhbWZzX2lvY3RsICAgICAoKHZub3BfaW9jdGxfdCl2ZnNjb3JlX3Zv
cF9laW52YWwpCisjZGVmaW5lIHJhbWZzX2ZzeW5jICAgICAoKHZub3BfZnN5bmNfdCl2ZnNjb3Jl
X3ZvcF9udWxsb3ApCisjZGVmaW5lIHJhbWZzX2luYWN0aXZlICAoKHZub3BfaW5hY3RpdmVfdCl2
ZnNjb3JlX3ZvcF9udWxsb3ApCisjZGVmaW5lIHJhbWZzX2xpbmsgICAgICAoKHZub3BfbGlua190
KXZmc2NvcmVfdm9wX2VwZXJtKQorI2RlZmluZSByYW1mc19mYWxsb2NhdGUgKCh2bm9wX2ZhbGxv
Y2F0ZV90KXZmc2NvcmVfdm9wX251bGxvcCkKIAogLyoKICAqIHZub2RlIG9wZXJhdGlvbnMKQEAg
LTY2NCw3ICs2NzUsNyBAQCBzdHJ1Y3Qgdm5vcHMgcmFtZnNfdm5vcHMgPSB7CiAJCXJhbWZzX2lu
YWN0aXZlLCAgICAgICAgIC8qIGluYWN0aXZlICovCiAJCXJhbWZzX3RydW5jYXRlLCAgICAgICAg
IC8qIHRydW5jYXRlICovCiAJCXJhbWZzX2xpbmssICAgICAgICAgICAgIC8qIGxpbmsgKi8KLQkJ
KHZub3BfY2FjaGVfdCkgbnVsbHB0ciwgLyogYXJjICovCisJCSh2bm9wX2NhY2hlX3QpIE5VTEws
ICAgIC8qIGFyYyAqLwogCQlyYW1mc19mYWxsb2NhdGUsICAgICAgICAvKiBmYWxsb2NhdGUgKi8K
IAkJcmFtZnNfcmVhZGxpbmssICAgICAgICAgLyogcmVhZCBsaW5rICovCiAJCXJhbWZzX3N5bWxp
bmssICAgICAgICAgIC8qIHN5bWJvbGljIGxpbmsgKi8KLS0gCjIuMTkuMgoKCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5n
IGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVu
cHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Feb 06 10:42:56 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 06 Feb 2019 10:42:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grKfQ-0003M3-Q9; Wed, 06 Feb 2019 10:42:56 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Hs2p=QN=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1grKfQ-0003Lv-HI
 for minios-devel@lists.xen.org; Wed, 06 Feb 2019 10:42:56 +0000
X-Inumbo-ID: f5442ff8-29fb-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id f5442ff8-29fb-11e9-bc90-bc764e045a96;
 Wed, 06 Feb 2019 10:42:54 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id BD7BB104D8E;
 Wed,  6 Feb 2019 11:42:53 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id KJnttYvI30oM; Wed,  6 Feb 2019 11:42:53 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 86F2A104D8A
 for <minios-devel@lists.xen.org>; Wed,  6 Feb 2019 11:42:51 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Wed, 6 Feb 2019 11:42:51 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 6 Feb 2019 11:42:14 +0100
Message-ID: <20190206104214.23847-14-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190206104214.23847-1-yuri.volchkov@neclab.eu>
References: <20190206104214.23847-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH 6/6] lib/ramfs: fix style issues
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Simon.kuenzer@neclab.eu, sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhlIG5vbi1uZWdhdGl2ZSByZXR1cm4gY29kZXMgdHlwZXMgb2YgY2hlY2stcGF0Y2ggY29tcGxh
aW5zIGFyZQppZ25vcmVkIGZvciBub3csIGJlY2F1c2UgdGhpcyB3aWxsIGJyYWtlIGNvbXBhdGli
aWxpdHkgd2l0aCBjdXJyZW50CnZmc2NvcmUuCgpTaWduZWQtb2ZmLWJ5OiBZdXJpIFZvbGNoa292
IDx5dXJpLnZvbGNoa292QG5lY2xhYi5ldT4KLS0tCiBsaWIvcmFtZnMvcmFtZnNfdmZzb3BzLmMg
fCAgIDUgKy0KIGxpYi9yYW1mcy9yYW1mc192bm9wcy5jICB8IDEwMCArKysrKysrKysrKysrKysr
KystLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgNDggaW5zZXJ0aW9ucygr
KSwgNTcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliL3JhbWZzL3JhbWZzX3Zmc29wcy5j
IGIvbGliL3JhbWZzL3JhbWZzX3Zmc29wcy5jCmluZGV4IDNiNWMwNzVjLi5jNDUyNDVmZCAxMDA2
NDQKLS0tIGEvbGliL3JhbWZzL3JhbWZzX3Zmc29wcy5jCisrKyBiL2xpYi9yYW1mcy9yYW1mc192
ZnNvcHMuYwpAQCAtNDEsNyArNDEsOCBAQAogCiBleHRlcm4gc3RydWN0IHZub3BzIHJhbWZzX3Zu
b3BzOwogCi1zdGF0aWMgaW50IHJhbWZzX21vdW50KHN0cnVjdCBtb3VudCAqbXAsIGNvbnN0IGNo
YXIgKmRldiwgaW50IGZsYWdzLCBjb25zdCB2b2lkICpkYXRhKTsKK3N0YXRpYyBpbnQgcmFtZnNf
bW91bnQoc3RydWN0IG1vdW50ICptcCwgY29uc3QgY2hhciAqZGV2LCBpbnQgZmxhZ3MsCisJCSAg
ICAgICBjb25zdCB2b2lkICpkYXRhKTsKIAogc3RhdGljIGludCByYW1mc191bm1vdW50KHN0cnVj
dCBtb3VudCAqbXAsIGludCBmbGFncyk7CiAKQEAgLTc4LDcgKzc5LDcgQEAgcmFtZnNfbW91bnQo
c3RydWN0IG1vdW50ICptcCwgY29uc3QgY2hhciAqZGV2IF9fdW51c2VkLAogewogCXN0cnVjdCBy
YW1mc19ub2RlICpucDsKIAotCURQUklOVEYoKCJyYW1mc19tb3VudDogZGV2PSVzXG4iLCBkZXYp
KTsKKwlEUFJJTlRGKCgiJXM6IGRldj0lc1xuIiwgX19mdW5jX18sIGRldikpOwogCiAJLyogQ3Jl
YXRlIGEgcm9vdCBub2RlICovCiAJbnAgPSByYW1mc19hbGxvY2F0ZV9ub2RlKCIvIiwgVkRJUik7
CmRpZmYgLS1naXQgYS9saWIvcmFtZnMvcmFtZnNfdm5vcHMuYyBiL2xpYi9yYW1mcy9yYW1mc192
bm9wcy5jCmluZGV4IDFmYWRlZDA1Li43NGNlN2ZiZSAxMDA2NDQKLS0tIGEvbGliL3JhbWZzL3Jh
bWZzX3Zub3BzLmMKKysrIGIvbGliL3JhbWZzL3JhbWZzX3Zub3BzLmMKQEAgLTY2LDE1ICs2Niwx
MiBAQCBzZXRfdGltZXNfdG9fbm93KHN0cnVjdCB0aW1lc3BlYyAqdGltZTEsIHN0cnVjdCB0aW1l
c3BlYyAqdGltZTIsCiAKIAkvKiBUT0RPOiBpbXBsZW1lbnQgdGhlIHJlYWwgY2xvY2tfZ2V0dGlt
ZSAqLwogCS8qIGNsb2NrX2dldHRpbWUoQ0xPQ0tfUkVBTFRJTUUsICZub3cpOyAqLwotCWlmICh0
aW1lMSkgeworCWlmICh0aW1lMSkKIAkJbWVtY3B5KHRpbWUxLCAmbm93LCBzaXplb2Yoc3RydWN0
IHRpbWVzcGVjKSk7Ci0JfQotCWlmICh0aW1lMikgeworCWlmICh0aW1lMikKIAkJbWVtY3B5KHRp
bWUyLCAmbm93LCBzaXplb2Yoc3RydWN0IHRpbWVzcGVjKSk7Ci0JfQotCWlmICh0aW1lMykgewor
CWlmICh0aW1lMykKIAkJbWVtY3B5KHRpbWUzLCAmbm93LCBzaXplb2Yoc3RydWN0IHRpbWVzcGVj
KSk7Ci0JfQogfQogCiBzdHJ1Y3QgcmFtZnNfbm9kZSAqCkBAIC0xODQsOSArMTgxLDkgQEAgcmFt
ZnNfcmVuYW1lX25vZGUoc3RydWN0IHJhbWZzX25vZGUgKm5wLCBjaGFyICpuYW1lKQogCWNoYXIg
KnRtcDsKIAogCWxlbiA9IHN0cmxlbihuYW1lKTsKLQlpZiAobGVuID4gTkFNRV9NQVgpIHsKKwlp
ZiAobGVuID4gTkFNRV9NQVgpCiAJCXJldHVybiBFTkFNRVRPT0xPTkc7Ci0JfQorCiAJaWYgKGxl
biA8PSBucC0+cm5fbmFtZWxlbikgewogCQkvKiBSZXVzZSBjdXJyZW50IG5hbWUgYnVmZmVyICov
CiAJCXN0cmxjcHkobnAtPnJuX25hbWUsIG5hbWUsIG5wLT5ybl9uYW1lbGVuICsgMSk7CkBAIC0y
NjEsOSArMjU4LDggQEAgcmFtZnNfbWtkaXIoc3RydWN0IHZub2RlICpkdnAsIGNoYXIgKm5hbWUs
IG1vZGVfdCBtb2RlKQogCXN0cnVjdCByYW1mc19ub2RlICpucDsKIAogCURQUklOVEYoKCJta2Rp
ciAlc1xuIiwgbmFtZSkpOwotCWlmIChzdHJsZW4obmFtZSkgPiBOQU1FX01BWCkgeworCWlmIChz
dHJsZW4obmFtZSkgPiBOQU1FX01BWCkKIAkJcmV0dXJuIEVOQU1FVE9PTE9ORzsKLQl9CiAKIAlp
ZiAoIVNfSVNESVIobW9kZSkpCiAJCXJldHVybiBFSU5WQUw7CkBAIC0yNzksMTQgKzI3NSwxOSBA
QCByYW1mc19ta2RpcihzdHJ1Y3Qgdm5vZGUgKmR2cCwgY2hhciAqbmFtZSwgbW9kZV90IG1vZGUp
CiBzdGF0aWMgaW50CiByYW1mc19zeW1saW5rKHN0cnVjdCB2bm9kZSAqZHZwLCBjaGFyICpuYW1l
LCBjaGFyICpsaW5rKQogewotCWlmIChzdHJsZW4obmFtZSkgPiBOQU1FX01BWCkgeworCXN0cnVj
dCByYW1mc19ub2RlICpucDsKKwlzaXplX3QgbGVuOworCisJaWYgKHN0cmxlbihuYW1lKSA+IE5B
TUVfTUFYKQogCQlyZXR1cm4gRU5BTUVUT09MT05HOwotCX0KLQlzdHJ1Y3QgcmFtZnNfbm9kZSAq
bnAgPSByYW1mc19hZGRfbm9kZShkdnAtPnZfZGF0YSwgbmFtZSwgVkxOSyk7CisKKwlucCA9IHJh
bWZzX2FkZF9ub2RlKGR2cC0+dl9kYXRhLCBuYW1lLCBWTE5LKTsKKwogCWlmIChucCA9PSBOVUxM
KQogCQlyZXR1cm4gRU5PTUVNOwogCS8vIFNhdmUgdGhlIGxpbmsgdGFyZ2V0IHdpdGhvdXQgdGhl
IGZpbmFsIG51bGwsIGFzIHJlYWRsaW5rKCkgd2FudHMgaXQuCi0Jc2l6ZV90IGxlbiA9IHN0cmxl
bihsaW5rKTsKKwlsZW4gPSBzdHJsZW4obGluayk7CisKIAlucC0+cm5fYnVmID0gc3RybmR1cChs
aW5rLCBsZW4pOwogCW5wLT5ybl9idWZzaXplID0gbnAtPnJuX3NpemUgPSBsZW47CiAKQEAgLTI5
OSwxNSArMzAwLDEyIEBAIHJhbWZzX3JlYWRsaW5rKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCB1
aW8gKnVpbykKIAlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSB2cC0+dl9kYXRhOwogCXNpemVfdCBs
ZW47CiAKLQlpZiAodnAtPnZfdHlwZSAhPSBWTE5LKSB7CisJaWYgKHZwLT52X3R5cGUgIT0gVkxO
SykKIAkJcmV0dXJuIEVJTlZBTDsKLQl9Ci0JaWYgKHVpby0+dWlvX29mZnNldCA8IDApIHsKKwlp
ZiAodWlvLT51aW9fb2Zmc2V0IDwgMCkKIAkJcmV0dXJuIEVJTlZBTDsKLQl9Ci0JaWYgKHVpby0+
dWlvX3Jlc2lkID09IDApIHsKKwlpZiAodWlvLT51aW9fcmVzaWQgPT0gMCkKIAkJcmV0dXJuIDA7
Ci0JfQogCWlmICh1aW8tPnVpb19vZmZzZXQgPj0gKG9mZl90KSB2cC0+dl9zaXplKQogCQlyZXR1
cm4gMDsKIAlpZiAodnAtPnZfc2l6ZSAtIHVpby0+dWlvX29mZnNldCA8IHVpby0+dWlvX3Jlc2lk
KQpAQCAtMzQ5LDcgKzM0Nyw3IEBAIHJhbWZzX3RydW5jYXRlKHN0cnVjdCB2bm9kZSAqdnAsIG9m
Zl90IGxlbmd0aCkKIAogCWlmIChsZW5ndGggPT0gMCkgewogCQlpZiAobnAtPnJuX2J1ZiAhPSBO
VUxMKSB7Ci0JCQlpZihucC0+cm5fb3duc19idWYpCisJCQlpZiAobnAtPnJuX293bnNfYnVmKQog
CQkJCWZyZWUobnAtPnJuX2J1Zik7CiAJCQlucC0+cm5fYnVmID0gTlVMTDsKIAkJCW5wLT5ybl9i
dWZzaXplID0gMDsKQEAgLTM2Miw3ICszNjAsNyBAQCByYW1mc190cnVuY2F0ZShzdHJ1Y3Qgdm5v
ZGUgKnZwLCBvZmZfdCBsZW5ndGgpCiAJCQlyZXR1cm4gRUlPOwogCQlpZiAobnAtPnJuX3NpemUg
IT0gMCkgewogCQkJbWVtY3B5KG5ld19idWYsIG5wLT5ybl9idWYsIHZwLT52X3NpemUpOwotCQkJ
aWYobnAtPnJuX293bnNfYnVmKQorCQkJaWYgKG5wLT5ybl9vd25zX2J1ZikKIAkJCQlmcmVlKG5w
LT5ybl9idWYpOwogCQl9CiAJCW5wLT5ybl9idWYgPSAoY2hhciAqKSBuZXdfYnVmOwpAQCAtMzgz
LDkgKzM4MSw4IEBAIHJhbWZzX2NyZWF0ZShzdHJ1Y3Qgdm5vZGUgKmR2cCwgY2hhciAqbmFtZSwg
bW9kZV90IG1vZGUpCiB7CiAJc3RydWN0IHJhbWZzX25vZGUgKm5wOwogCi0JaWYgKHN0cmxlbihu
YW1lKSA+IE5BTUVfTUFYKSB7CisJaWYgKHN0cmxlbihuYW1lKSA+IE5BTUVfTUFYKQogCQlyZXR1
cm4gRU5BTUVUT09MT05HOwotCX0KIAogCURQUklOVEYoKCJjcmVhdGUgJXMgaW4gJXNcbiIsIG5h
bWUsIFJBTUZTX05PREUoZHZwKS0+cm5fbmFtZSkpOwogCWlmICghU19JU1JFRyhtb2RlKSkKQEAg
LTQwNCwxOCArNDAxLDE0IEBAIHJhbWZzX3JlYWQoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IHZm
c2NvcmVfZmlsZSAqZnAgX191bnVzZWQsCiAJc3RydWN0IHJhbWZzX25vZGUgKm5wID0gIHZwLT52
X2RhdGE7CiAJc2l6ZV90IGxlbjsKIAotCWlmICh2cC0+dl90eXBlID09IFZESVIpIHsKKwlpZiAo
dnAtPnZfdHlwZSA9PSBWRElSKQogCQlyZXR1cm4gRUlTRElSOwotCX0KLQlpZiAodnAtPnZfdHlw
ZSAhPSBWUkVHKSB7CisJaWYgKHZwLT52X3R5cGUgIT0gVlJFRykKIAkJcmV0dXJuIEVJTlZBTDsK
LQl9Ci0JaWYgKHVpby0+dWlvX29mZnNldCA8IDApIHsKKwlpZiAodWlvLT51aW9fb2Zmc2V0IDwg
MCkKIAkJcmV0dXJuIEVJTlZBTDsKLQl9Ci0JaWYgKHVpby0+dWlvX3Jlc2lkID09IDApIHsKKwlp
ZiAodWlvLT51aW9fcmVzaWQgPT0gMCkKIAkJcmV0dXJuIDA7Ci0JfQogCiAJaWYgKHVpby0+dWlv
X29mZnNldCA+PSAob2ZmX3QpIHZwLT52X3NpemUpCiAJCXJldHVybiAwOwpAQCAtNDM1LDE1ICs0
MjgsMTIgQEAgcmFtZnNfc2V0X2ZpbGVfZGF0YShzdHJ1Y3Qgdm5vZGUgKnZwLCBjb25zdCB2b2lk
ICpkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKIAlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSAgdnAtPnZf
ZGF0YTsKIAotCWlmICh2cC0+dl90eXBlID09IFZESVIpIHsKKwlpZiAodnAtPnZfdHlwZSA9PSBW
RElSKQogCQlyZXR1cm4gRUlTRElSOwotCX0KLQlpZiAodnAtPnZfdHlwZSAhPSBWUkVHKSB7CisJ
aWYgKHZwLT52X3R5cGUgIT0gVlJFRykKIAkJcmV0dXJuIEVJTlZBTDsKLQl9Ci0JaWYgKG5wLT5y
bl9idWYpIHsKKwlpZiAobnAtPnJuX2J1ZikKIAkJcmV0dXJuIEVJTlZBTDsKLQl9CiAKIAlucC0+
cm5fYnVmID0gKGNoYXIgKikgZGF0YTsKIAlucC0+cm5fYnVmc2l6ZSA9IHNpemU7CkBAIC00NTks
MjEgKzQ0OSwxNiBAQCByYW1mc193cml0ZShzdHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3QgdWlvICp1
aW8sIGludCBpb2ZsYWcpCiB7CiAJc3RydWN0IHJhbWZzX25vZGUgKm5wID0gIHZwLT52X2RhdGE7
CiAKLQlpZiAodnAtPnZfdHlwZSA9PSBWRElSKSB7CisJaWYgKHZwLT52X3R5cGUgPT0gVkRJUikK
IAkJcmV0dXJuIEVJU0RJUjsKLQl9Ci0JaWYgKHZwLT52X3R5cGUgIT0gVlJFRykgeworCWlmICh2
cC0+dl90eXBlICE9IFZSRUcpCiAJCXJldHVybiBFSU5WQUw7Ci0JfQotCWlmICh1aW8tPnVpb19v
ZmZzZXQgPCAwKSB7CisJaWYgKHVpby0+dWlvX29mZnNldCA8IDApCiAJCXJldHVybiBFSU5WQUw7
Ci0JfQotCWlmICh1aW8tPnVpb19vZmZzZXQgPj0gTE9OR19NQVgpIHsKKwlpZiAodWlvLT51aW9f
b2Zmc2V0ID49IExPTkdfTUFYKQogCQlyZXR1cm4gRUZCSUc7Ci0JfQotCWlmICh1aW8tPnVpb19y
ZXNpZCA9PSAwKSB7CisJaWYgKHVpby0+dWlvX3Jlc2lkID09IDApCiAJCXJldHVybiAwOwotCX0K
IAogCWlmIChpb2ZsYWcgJiBJT19BUFBFTkQpCiAJCXVpby0+dWlvX29mZnNldCA9IG5wLT5ybl9z
aXplOwpAQCAtNDgxLDE1ICs0NjYsMTcgQEAgcmFtZnNfd3JpdGUoc3RydWN0IHZub2RlICp2cCwg
c3RydWN0IHVpbyAqdWlvLCBpbnQgaW9mbGFnKQogCWlmICgoc2l6ZV90KSB1aW8tPnVpb19vZmZz
ZXQgKyB1aW8tPnVpb19yZXNpZCA+IChzaXplX3QpIHZwLT52X3NpemUpIHsKIAkJLyogRXhwYW5k
IHRoZSBmaWxlIHNpemUgYmVmb3JlIHdyaXRpbmcgdG8gaXQgKi8KIAkJb2ZmX3QgZW5kX3BvcyA9
IHVpby0+dWlvX29mZnNldCArIHVpby0+dWlvX3Jlc2lkOworCiAJCWlmIChlbmRfcG9zID4gKG9m
Zl90KSBucC0+cm5fYnVmc2l6ZSkgewogCQkJLy8gWFhYOiB0aGlzIGNvdWxkIHVzZSBhIHBhZ2Ug
bGV2ZWwgYWxsb2NhdG9yCiAJCQlzaXplX3QgbmV3X3NpemUgPSByb3VuZF9wYWdlKGVuZF9wb3Mp
OwogCQkJdm9pZCAqbmV3X2J1ZiA9IG1hbGxvYyhuZXdfc2l6ZSk7CisKIAkJCWlmICghbmV3X2J1
ZikKIAkJCQlyZXR1cm4gRUlPOwogCQkJaWYgKG5wLT5ybl9zaXplICE9IDApIHsKIAkJCQltZW1j
cHkobmV3X2J1ZiwgbnAtPnJuX2J1ZiwgdnAtPnZfc2l6ZSk7Ci0JCQkJaWYobnAtPnJuX293bnNf
YnVmKQorCQkJCWlmIChucC0+cm5fb3duc19idWYpCiAJCQkJCWZyZWUobnAtPnJuX2J1Zik7CiAJ
CQl9CiAJCQlucC0+cm5fYnVmID0gKGNoYXIgKikgbmV3X2J1ZjsKQEAgLTYyMywyNCArNjEwLDI3
IEBAIHJhbWZzX2dldGF0dHIoc3RydWN0IHZub2RlICp2bm9kZSwgc3RydWN0IHZhdHRyICphdHRy
KQogfQogCiBzdGF0aWMgaW50Ci1yYW1mc19zZXRhdHRyKHN0cnVjdCB2bm9kZSAqdm5vZGUsIHN0
cnVjdCB2YXR0ciAqYXR0cikgeworcmFtZnNfc2V0YXR0cihzdHJ1Y3Qgdm5vZGUgKnZub2RlLCBz
dHJ1Y3QgdmF0dHIgKmF0dHIpCit7CiAJc3RydWN0IHJhbWZzX25vZGUgKm5wID0gdm5vZGUtPnZf
ZGF0YTsKIAogCWlmIChhdHRyLT52YV9tYXNrICYgQVRfQVRJTUUpIHsKLQkJbWVtY3B5KCYobnAt
PnJuX2F0aW1lKSwgJihhdHRyLT52YV9hdGltZSksIHNpemVvZihzdHJ1Y3QgdGltZXNwZWMpKTsK
KwkJbWVtY3B5KCYobnAtPnJuX2F0aW1lKSwgJihhdHRyLT52YV9hdGltZSksCisJCSAgICAgICBz
aXplb2Yoc3RydWN0IHRpbWVzcGVjKSk7CiAJfQogCiAJaWYgKGF0dHItPnZhX21hc2sgJiBBVF9D
VElNRSkgewotCQltZW1jcHkoJihucC0+cm5fY3RpbWUpLCAmKGF0dHItPnZhX2N0aW1lKSwgc2l6
ZW9mKHN0cnVjdCB0aW1lc3BlYykpOworCQltZW1jcHkoJihucC0+cm5fY3RpbWUpLCAmKGF0dHIt
PnZhX2N0aW1lKSwKKwkJICAgICAgIHNpemVvZihzdHJ1Y3QgdGltZXNwZWMpKTsKIAl9CiAKIAlp
ZiAoYXR0ci0+dmFfbWFzayAmIEFUX01USU1FKSB7Ci0JCW1lbWNweSgmKG5wLT5ybl9tdGltZSks
ICYoYXR0ci0+dmFfbXRpbWUpLCBzaXplb2Yoc3RydWN0IHRpbWVzcGVjKSk7CisJCW1lbWNweSgm
KG5wLT5ybl9tdGltZSksICYoYXR0ci0+dmFfbXRpbWUpLAorCQkgICAgICAgc2l6ZW9mKHN0cnVj
dCB0aW1lc3BlYykpOwogCX0KIAotCWlmIChhdHRyLT52YV9tYXNrICYgQVRfTU9ERSkgeworCWlm
IChhdHRyLT52YV9tYXNrICYgQVRfTU9ERSkKIAkJbnAtPnJuX21vZGUgPSBhdHRyLT52YV9tb2Rl
OwotCX0KIAogCXJldHVybiAwOwogfQotLSAKMi4xOS4yCgoKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5p
b3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9y
Zy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Feb 06 10:42:58 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 06 Feb 2019 10:42:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grKfS-0003Ms-SW; Wed, 06 Feb 2019 10:42:58 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Hs2p=QN=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1grKfS-0003Md-1f
 for minios-devel@lists.xen.org; Wed, 06 Feb 2019 10:42:58 +0000
X-Inumbo-ID: f3ab1612-29fb-11e9-a03e-0372f7c0b8ec
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id f3ab1612-29fb-11e9-a03e-0372f7c0b8ec;
 Wed, 06 Feb 2019 10:42:51 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 1113AF2048;
 Wed,  6 Feb 2019 11:42:51 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id ULd3Ds5VclZu; Wed,  6 Feb 2019 11:42:50 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id D7106F2023
 for <minios-devel@lists.xen.org>; Wed,  6 Feb 2019 11:42:48 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Wed, 6 Feb 2019 11:42:48 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 6 Feb 2019 11:42:13 +0100
Message-ID: <20190206104214.23847-13-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190206104214.23847-1-yuri.volchkov@neclab.eu>
References: <20190206104214.23847-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH 5/6] lib/ramfs: fix debug printouts
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Simon.kuenzer@neclab.eu, sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogbGliL3JhbWZzL3JhbWZzLmggICAgICAgfCAgNCArKystCiBsaWIvcmFtZnMvcmFtZnNfdm5v
cHMuYyB8IDEwICsrKysrKy0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCA1
IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpYi9yYW1mcy9yYW1mcy5oIGIvbGliL3JhbWZz
L3JhbWZzLmgKaW5kZXggOTFmYjU3OWMuLjQzZjJmMzZiIDEwMDY0NAotLS0gYS9saWIvcmFtZnMv
cmFtZnMuaAorKysgYi9saWIvcmFtZnMvcmFtZnMuaApAQCAtMzgsNyArMzgsNyBAQAogLyogI2Rl
ZmluZSBERUJVR19SQU1GUyAxICovCiAKICNpZmRlZiBERUJVR19SQU1GUwotI2RlZmluZSBEUFJJ
TlRGKGEpCWRwcmludGYgYQorI2RlZmluZSBEUFJJTlRGKGEpCXVrX3ByX2RlYnVnIGEKICNlbHNl
CiAjZGVmaW5lIERQUklOVEYoYSkgICAgZG8ge30gd2hpbGUgKDApCiAjZW5kaWYKQEAgLTY4LDQg
KzY4LDYgQEAgc3RydWN0IHJhbWZzX25vZGUgKnJhbWZzX2FsbG9jYXRlX25vZGUoY29uc3QgY2hh
ciAqbmFtZSwgaW50IHR5cGUpOwogCiB2b2lkIHJhbWZzX2ZyZWVfbm9kZShzdHJ1Y3QgcmFtZnNf
bm9kZSAqbm9kZSk7CiAKKyNkZWZpbmUgUkFNRlNfTk9ERSh2bm9kZSkgKChzdHJ1Y3QgcmFtZnNf
bm9kZSAqKSB2bm9kZS0+dl9kYXRhKQorCiAjZW5kaWYgLyogIV9SQU1GU19IICovCmRpZmYgLS1n
aXQgYS9saWIvcmFtZnMvcmFtZnNfdm5vcHMuYyBiL2xpYi9yYW1mcy9yYW1mc192bm9wcy5jCmlu
ZGV4IDY2YWI4YTY0Li4xZmFkZWQwNSAxMDA2NDQKLS0tIGEvbGliL3JhbWZzL3JhbWZzX3Zub3Bz
LmMKKysrIGIvbGliL3JhbWZzL3JhbWZzX3Zub3BzLmMKQEAgLTMyOCw5ICszMjgsMTAgQEAgcmFt
ZnNfcm1kaXIoc3RydWN0IHZub2RlICpkdnAsIHN0cnVjdCB2bm9kZSAqdnAsIGNoYXIgKm5hbWUg
X191bnVzZWQpCiAKIC8qIFJlbW92ZSBhIGZpbGUgKi8KIHN0YXRpYyBpbnQKLXJhbWZzX3JlbW92
ZShzdHJ1Y3Qgdm5vZGUgKmR2cCwgc3RydWN0IHZub2RlICp2cCwgY2hhciAqbmFtZSBfX3VudXNl
ZCkKK3JhbWZzX3JlbW92ZShzdHJ1Y3Qgdm5vZGUgKmR2cCwgc3RydWN0IHZub2RlICp2cCwgY2hh
ciAqbmFtZSBfX21heWJlX3VudXNlZCkKIHsKLQlEUFJJTlRGKCgicmVtb3ZlICVzIGluICVzXG4i
LCBuYW1lLCBkdnAtPnZfcGF0aCkpOworCURQUklOVEYoKCJyZW1vdmUgJXMgaW4gJXNcbiIsIG5h
bWUsCisJCSBSQU1GU19OT0RFKGR2cCktPnJuX25hbWUpKTsKIAlyZXR1cm4gcmFtZnNfcmVtb3Zl
X25vZGUoZHZwLT52X2RhdGEsIHZwLT52X2RhdGEpOwogfQogCkBAIC0zNDIsNyArMzQzLDggQEAg
cmFtZnNfdHJ1bmNhdGUoc3RydWN0IHZub2RlICp2cCwgb2ZmX3QgbGVuZ3RoKQogCXZvaWQgKm5l
d19idWY7CiAJc2l6ZV90IG5ld19zaXplOwogCi0JRFBSSU5URigoInRydW5jYXRlICVzIGxlbmd0
aD0lZFxuIiwgdnAtPnZfcGF0aCwgbGVuZ3RoKSk7CisJRFBSSU5URigoInRydW5jYXRlICVzIGxl
bmd0aD0lbGxkXG4iLCBSQU1GU19OT0RFKHZwKS0+cm5fbmFtZSwKKwkJIChsb25nIGxvbmcpIGxl
bmd0aCkpOwogCW5wID0gdnAtPnZfZGF0YTsKIAogCWlmIChsZW5ndGggPT0gMCkgewpAQCAtMzg1
LDcgKzM4Nyw3IEBAIHJhbWZzX2NyZWF0ZShzdHJ1Y3Qgdm5vZGUgKmR2cCwgY2hhciAqbmFtZSwg
bW9kZV90IG1vZGUpCiAJCXJldHVybiBFTkFNRVRPT0xPTkc7CiAJfQogCi0JRFBSSU5URigoImNy
ZWF0ZSAlcyBpbiAlc1xuIiwgbmFtZSwgZHZwLT52X3BhdGgpKTsKKwlEUFJJTlRGKCgiY3JlYXRl
ICVzIGluICVzXG4iLCBuYW1lLCBSQU1GU19OT0RFKGR2cCktPnJuX25hbWUpKTsKIAlpZiAoIVNf
SVNSRUcobW9kZSkpCiAJCXJldHVybiBFSU5WQUw7CiAKLS0gCjIuMTkuMgoKCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5n
IGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVu
cHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Feb 06 12:04:25 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 06 Feb 2019 12:04:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grLwG-0002KY-Kv; Wed, 06 Feb 2019 12:04:24 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Hs2p=QN=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1grLwF-0002KT-9h
 for minios-devel@lists.xen.org; Wed, 06 Feb 2019 12:04:23 +0000
X-Inumbo-ID: 53bc9dc0-2a07-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 53bc9dc0-2a07-11e9-bc90-bc764e045a96;
 Wed, 06 Feb 2019 12:04:17 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id A06FF104D86;
 Wed,  6 Feb 2019 13:04:16 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id gMVRAIcKg753; Wed,  6 Feb 2019 13:04:16 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 7DDFC104D81
 for <minios-devel@lists.xen.org>; Wed,  6 Feb 2019 13:04:14 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Wed, 6 Feb 2019 13:04:14 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
In-Reply-To: <20190206104214.23847-1-yuri.volchkov@neclab.eu>
References: <20190206104214.23847-1-yuri.volchkov@neclab.eu>
Date: Wed, 6 Feb 2019 13:04:11 +0100
Message-ID: <tza4s2mun9w2bo.fsf@N-1128.office.hd>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 0/6] Import ramfs from OSv
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Simon.kuenzer@neclab.eu, sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U29ycnksIGd1eXMgZm9yIGRvdWJsZSBlbWFpbHMuLgoKWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xj
aGtvdkBuZWNsYWIuZXU+IHdyaXRlczoKCj4gU2FtZSBhcyB3aXRoIHZmc2NvcmUgLSB0aGUgbWlu
aW1hbCBudW1iZXIgb2YgbW9kaWZpY2F0aW9ucyB0byBtYWtlIGl0Cj4gd29ya2luZyBpbiBVbmlr
cmFmdC4gRm9ydHVuYXRlbGx5IHJhbWZzIGlzIHZlcnkgc21hbGwsIGFuZCBhbG1vc3QgZGlkCj4g
bm90IGhhdmUgYysrIHBpZWNlcyBvZiBjb2RlLiBTbyB0aGlzIHRpbWUgSSBldmVuIGhhZCBhIHJv
b20gdG8gZml4Cj4gc3R5bGUgcHJvYmxlbXMsIGV4Y2VwdCBmZXcgb2YgdGhlbS4KPgo+IFl1cmkg
Vm9sY2hrb3YgKDYpOgo+ICAgbGliL3JhbWZzOiBpbml0aWFsIGltcG9ydCBmcm9tIE9Tdgo+ICAg
bGliL3JhbWZzOiB0YWJpZnkgaW1wb3J0ZWQgcmFtZnMgY29kZQo+ICAgbGliL3JhbWZzOiB1cGRh
dGUgbGljZW5zZSBoZWFkZXIgZm9yIGltcG9ydGVkIGZpbGVzCj4gICBsaWIvcmFtZnM6IGFkYXB0
IGltcG9ydGVkIHJhbWZzIHRvIFVuaWtyYWZ0Cj4gICBsaWIvcmFtZnM6IGZpeCBkZWJ1ZyBwcmlu
dG91dHMKPiAgIGxpYi9yYW1mczogZml4IHN0eWxlIGlzc3Vlcwo+Cj4gIGxpYi9Db25maWcudWsg
ICAgICAgICAgICB8ICAgMSArCj4gIGxpYi9NYWtlZmlsZS51ayAgICAgICAgICB8ICAgMSArCj4g
IGxpYi9yYW1mcy9leHBvcnRzeW1zLnVrICB8ICAgMSArCj4gIGxpYi9yYW1mcy9yYW1mcy5oICAg
ICAgICB8ICA3MyArKysrKwo+ICBsaWIvcmFtZnMvcmFtZnNfdmZzb3BzLmMgfCAxMDQgKysrKysr
Cj4gIGxpYi9yYW1mcy9yYW1mc192bm9wcy5jICB8IDY3NSArKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysKPiAgNiBmaWxlcyBjaGFuZ2VkLCA4NTUgaW5zZXJ0aW9ucygrKQo+
ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3JhbWZzL2V4cG9ydHN5bXMudWsKPiAgY3JlYXRlIG1v
ZGUgMTAwNjQ0IGxpYi9yYW1mcy9yYW1mcy5oCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvcmFt
ZnMvcmFtZnNfdmZzb3BzLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9yYW1mcy9yYW1mc192
bm9wcy5jCj4KPiAtLSAKPiAyLjE5LjIKPgo+Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KPiBNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Cj4gTWluaW9z
LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCj4gaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9y
Zy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbAoKLS0gCll1cmkgVm9sY2hrb3YKU29mdHdh
cmUgU3BlY2lhbGlzdAoKTkVDIEV1cm9wZSBMdGQKS3VyZsO8cnN0ZW4tQW5sYWdlIDM2CkQtNjkx
MTUgSGVpZGVsYmVyZwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJv
amVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21p
bmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Feb 06 13:18:28 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 06 Feb 2019 13:18:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grN5v-0000aK-7l; Wed, 06 Feb 2019 13:18:27 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=tAI7=QN=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1grN5u-0000aF-CQ
 for minios-devel@lists.xen.org; Wed, 06 Feb 2019 13:18:26 +0000
X-Inumbo-ID: a99dccb6-2a11-11e9-8ed6-4febc8740a3c
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id a99dccb6-2a11-11e9-8ed6-4febc8740a3c;
 Wed, 06 Feb 2019 13:18:16 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 707BE104D8D;
 Wed,  6 Feb 2019 14:18:15 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id Aa6cE8hDfliM; Wed,  6 Feb 2019 14:18:15 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 4F4ED104D8B
 for <minios-devel@lists.xen.org>; Wed,  6 Feb 2019 14:18:13 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 6 Feb 2019 14:18:13
 +0100
To: <minios-devel@lists.xen.org>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
 <20190204143739.29249-2-yuri.volchkov@neclab.eu>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <540c8472-d0a7-f8a4-8cc3-8b4290df3f34@neclab.eu>
Date: Wed, 6 Feb 2019 14:18:12 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190204143739.29249-2-yuri.volchkov@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 01/23] include/uk: introduce
 __weak_alias macro
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Simon.kuenzer@neclab.eu, Yuri Volchkov <yuri.volchkov@neclab.eu>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gWXVyaSwKClRoaXMgcGF0Y2ggZnVuY3Rpb25hbGx5IHNlZW1zIGZpbmUuCgpJIGhhdmUg
YSBxdWVzdGlvbiB3aXRoIHJlZ2FyZCB0byBpdHMgdXNhZ2UgZXNwZWNpYWxseSB3aXRoIExUTyBl
bmFibGVkLiAKVGhlIGxpYnJhcnkgd2hpY2ggdXNlcyB0aGlzIG1hY3JvIHNob3VsZCBub3QgdXNl
IHRoZSBmdW5jdGlvbiBpbnRlcm5hbGx5IAphcyBMVE8gd291bGQgaW50ZXJuYWxseSByZXNvbHZl
IGl0IHdpdGggdGhlIHdlYWsgc3ltYm9sLiBJIHRoaW5rIGl0IAp3b3VsZCBiZSB3aXNlIHRvIGFk
ZCBhIGNvbW1lbnQgdG8gd2FybiB0aGUgdXNlcnMgb2YgdGhlIG1hY3JvIGFib3V0IGl0LgoKVGhh
bmtzICYgUmVnYXJkcwpTaGFyYW4KCk9uIDIvNC8xOSAzOjM2IFBNLCBZdXJpIFZvbGNoa292IHdy
b3RlOgo+IFNpZ25lZC1vZmYtYnk6IFl1cmkgVm9sY2hrb3YgPHl1cmkudm9sY2hrb3ZAbmVjbGFi
LmV1Pgo+IC0tLQo+ICAgaW5jbHVkZS91ay9lc3NlbnRpYWxzLmggfCA0ICsrKysKPiAgIDEgZmls
ZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKPiAKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS91ay9l
c3NlbnRpYWxzLmggYi9pbmNsdWRlL3VrL2Vzc2VudGlhbHMuaAo+IGluZGV4IDNjMTZlMzA4Li5k
YzFkNjliMCAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL3VrL2Vzc2VudGlhbHMuaAo+ICsrKyBiL2lu
Y2x1ZGUvdWsvZXNzZW50aWFscy5oCj4gQEAgLTc2LDYgKzc2LDEwIEBAIGV4dGVybiAiQyIgewo+
ICAgI2lmbmRlZiBfX2FsaWduCj4gICAjZGVmaW5lIF9fYWxpZ24oYnl0ZXMpICAgICAgICAgX19h
dHRyaWJ1dGVfXygoYWxpZ25lZChieXRlcykpKQo+ICAgI2VuZGlmCj4gKyNpZm5kZWYgX193ZWFr
X2FsaWFzCj4gKyNkZWZpbmUgX193ZWFrX2FsaWFzKG9sZCwgbmV3KSBcCj4gKwlleHRlcm4gX190
eXBlb2Yob2xkKSBuZXcgX19hdHRyaWJ1dGVfXygod2VhaywgYWxpYXMoI29sZCkpKQo+ICsjZW5k
aWYKPiAgIAo+ICAgLyoqCj4gICAgICogTWFyayBhIGZ1bmN0aW9uIGFzIGNvbnN0cnVjdG9yCj4g
CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3Mt
ZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRw
czovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Feb 06 14:00:56 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 06 Feb 2019 14:00:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grNl1-0004zI-6J; Wed, 06 Feb 2019 14:00:55 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=tAI7=QN=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1grNl0-0004zD-1L
 for minios-devel@lists.xen.org; Wed, 06 Feb 2019 14:00:54 +0000
X-Inumbo-ID: 9b94719a-2a17-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 9b94719a-2a17-11e9-bc90-bc764e045a96;
 Wed, 06 Feb 2019 14:00:50 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id BB2A0F205B;
 Wed,  6 Feb 2019 15:00:48 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id aLrc2A5YSgaO; Wed,  6 Feb 2019 15:00:48 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 8492BF2023
 for <minios-devel@lists.xen.org>; Wed,  6 Feb 2019 15:00:46 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 6 Feb 2019 15:00:46
 +0100
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, <minios-devel@lists.xen.org>,
 <Simon.kuenzer@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
 <20190204143739.29249-3-yuri.volchkov@neclab.eu>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <d876829e-89e9-1188-67ee-2c54c2def838@neclab.eu>
Date: Wed, 6 Feb 2019 15:00:45 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190204143739.29249-3-yuri.volchkov@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 02/23] lib/nolibc: import
 mount.h
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gWXVyaSwKClRoaXMgcGF0Y2ggc2VlbXMgZmluZS4KClJldmlld2VkLWJ5OiBTaGFyYW4g
U2FudGhhbmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xhYi5ldT4KClRoYW5rcyAmIFJlZ2FyZHMK
U2hhcmFuCgpPbiAyLzQvMTkgMzozNiBQTSwgWXVyaSBWb2xjaGtvdiB3cm90ZToKPiB0YWc6IHYx
LjEuMjAKPiBjb21taXQ6IDBmYTFlNjM4ZTg3Y2YyNTdlOWY5NmI0MDE5YjIwNzZhZmQ2NzRhMTkK
PiAKPiBTaWduZWQtb2ZmLWJ5OiBZdXJpIFZvbGNoa292IDx5dXJpLnZvbGNoa292QG5lY2xhYi5l
dT4KPiAtLS0KPiAgIGxpYi9ub2xpYmMvaW5jbHVkZS9zeXMvbW91bnQuaCB8IDc0ICsrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgIDEgZmlsZSBjaGFuZ2VkLCA3NCBpbnNlcnRp
b25zKCspCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL25vbGliYy9pbmNsdWRlL3N5cy9tb3Vu
dC5oCj4gCj4gZGlmZiAtLWdpdCBhL2xpYi9ub2xpYmMvaW5jbHVkZS9zeXMvbW91bnQuaCBiL2xp
Yi9ub2xpYmMvaW5jbHVkZS9zeXMvbW91bnQuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5k
ZXggMDAwMDAwMDAuLjU3YTg5YzA5Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2xpYi9ub2xpYmMv
aW5jbHVkZS9zeXMvbW91bnQuaAo+IEBAIC0wLDAgKzEsNzQgQEAKPiArI2lmbmRlZiBfU1lTX01P
VU5UX0gKPiArI2RlZmluZSBfU1lTX01PVU5UX0gKPiArCj4gKyNpZmRlZiBfX2NwbHVzcGx1cwo+
ICtleHRlcm4gIkMiIHsKPiArI2VuZGlmCj4gKwo+ICsjaW5jbHVkZSA8c3lzL2lvY3RsLmg+Cj4g
Kwo+ICsjZGVmaW5lIEJMS1JPU0VUICAgX0lPKDB4MTIsIDkzKQo+ICsjZGVmaW5lIEJMS1JPR0VU
ICAgX0lPKDB4MTIsIDk0KQo+ICsjZGVmaW5lIEJMS1JSUEFSVCAgX0lPKDB4MTIsIDk1KQo+ICsj
ZGVmaW5lIEJMS0dFVFNJWkUgX0lPKDB4MTIsIDk2KQo+ICsjZGVmaW5lIEJMS0ZMU0JVRiAgX0lP
KDB4MTIsIDk3KQo+ICsjZGVmaW5lIEJMS1JBU0VUICAgX0lPKDB4MTIsIDk4KQo+ICsjZGVmaW5l
IEJMS1JBR0VUICAgX0lPKDB4MTIsIDk5KQo+ICsjZGVmaW5lIEJMS0ZSQVNFVCAgX0lPKDB4MTIs
MTAwKQo+ICsjZGVmaW5lIEJMS0ZSQUdFVCAgX0lPKDB4MTIsMTAxKQo+ICsjZGVmaW5lIEJMS1NF
Q1RTRVQgX0lPKDB4MTIsMTAyKQo+ICsjZGVmaW5lIEJMS1NFQ1RHRVQgX0lPKDB4MTIsMTAzKQo+
ICsjZGVmaW5lIEJMS1NTWkdFVCAgX0lPKDB4MTIsMTA0KQo+ICsjZGVmaW5lIEJMS0JTWkdFVCAg
X0lPUigweDEyLDExMixzaXplX3QpCj4gKyNkZWZpbmUgQkxLQlNaU0VUICBfSU9XKDB4MTIsMTEz
LHNpemVfdCkKPiArI2RlZmluZSBCTEtHRVRTSVpFNjQgX0lPUigweDEyLDExNCxzaXplX3QpCj4g
Kwo+ICsjZGVmaW5lIE1TX1JET05MWSAgICAgIDEKPiArI2RlZmluZSBNU19OT1NVSUQgICAgICAy
Cj4gKyNkZWZpbmUgTVNfTk9ERVYgICAgICAgNAo+ICsjZGVmaW5lIE1TX05PRVhFQyAgICAgIDgK
PiArI2RlZmluZSBNU19TWU5DSFJPTk9VUyAxNgo+ICsjZGVmaW5lIE1TX1JFTU9VTlQgICAgIDMy
Cj4gKyNkZWZpbmUgTVNfTUFORExPQ0sgICAgNjQKPiArI2RlZmluZSBNU19ESVJTWU5DICAgICAx
MjgKPiArI2RlZmluZSBNU19OT0FUSU1FICAgICAxMDI0Cj4gKyNkZWZpbmUgTVNfTk9ESVJBVElN
RSAgMjA0OAo+ICsjZGVmaW5lIE1TX0JJTkQgICAgICAgIDQwOTYKPiArI2RlZmluZSBNU19NT1ZF
ICAgICAgICA4MTkyCj4gKyNkZWZpbmUgTVNfUkVDICAgICAgICAgMTYzODQKPiArI2RlZmluZSBN
U19TSUxFTlQgICAgICAzMjc2OAo+ICsjZGVmaW5lIE1TX1BPU0lYQUNMICAgICgxPDwxNikKPiAr
I2RlZmluZSBNU19VTkJJTkRBQkxFICAoMTw8MTcpCj4gKyNkZWZpbmUgTVNfUFJJVkFURSAgICAg
KDE8PDE4KQo+ICsjZGVmaW5lIE1TX1NMQVZFICAgICAgICgxPDwxOSkKPiArI2RlZmluZSBNU19T
SEFSRUQgICAgICAoMTw8MjApCj4gKyNkZWZpbmUgTVNfUkVMQVRJTUUgICAgKDE8PDIxKQo+ICsj
ZGVmaW5lIE1TX0tFUk5NT1VOVCAgICgxPDwyMikKPiArI2RlZmluZSBNU19JX1ZFUlNJT04gICAo
MTw8MjMpCj4gKyNkZWZpbmUgTVNfU1RSSUNUQVRJTUUgKDE8PDI0KQo+ICsjZGVmaW5lIE1TX0xB
WllUSU1FICAgICgxPDwyNSkKPiArI2RlZmluZSBNU19OT1JFTU9URUxPQ0sgKDE8PDI3KQo+ICsj
ZGVmaW5lIE1TX05PU0VDICAgICAgICgxPDwyOCkKPiArI2RlZmluZSBNU19CT1JOICAgICAgICAo
MTw8MjkpCj4gKyNkZWZpbmUgTVNfQUNUSVZFICAgICAgKDE8PDMwKQo+ICsjZGVmaW5lIE1TX05P
VVNFUiAgICAgICgxVTw8MzEpCj4gKwo+ICsjZGVmaW5lIE1TX1JNVF9NQVNLIChNU19SRE9OTFl8
TVNfU1lOQ0hST05PVVN8TVNfTUFORExPQ0t8TVNfSV9WRVJTSU9OfE1TX0xBWllUSU1FKQo+ICsK
PiArI2RlZmluZSBNU19NR0NfVkFMIDB4YzBlZDAwMDAKPiArI2RlZmluZSBNU19NR0NfTVNLIDB4
ZmZmZjAwMDAKPiArCj4gKyNkZWZpbmUgTU5UX0ZPUkNFICAgICAgIDEKPiArI2RlZmluZSBNTlRf
REVUQUNIICAgICAgMgo+ICsjZGVmaW5lIE1OVF9FWFBJUkUgICAgICA0Cj4gKyNkZWZpbmUgVU1P
VU5UX05PRk9MTE9XIDgKPiArCj4gK2ludCBtb3VudChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIg
KiwgY29uc3QgY2hhciAqLCB1bnNpZ25lZCBsb25nLCBjb25zdCB2b2lkICopOwo+ICtpbnQgdW1v
dW50KGNvbnN0IGNoYXIgKik7Cj4gK2ludCB1bW91bnQyKGNvbnN0IGNoYXIgKiwgaW50KTsKPiAr
Cj4gKyNpZmRlZiBfX2NwbHVzcGx1cwo+ICt9Cj4gKyNlbmRpZgo+ICsKPiArI2VuZGlmCj4gCgpf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2
ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczov
L2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Feb 06 14:35:57 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 06 Feb 2019 14:35:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grOIt-0007xw-P8; Wed, 06 Feb 2019 14:35:55 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=tAI7=QN=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1grOIs-0007xr-O3
 for minios-devel@lists.xen.org; Wed, 06 Feb 2019 14:35:54 +0000
X-Inumbo-ID: 7f9d8a7c-2a1c-11e9-b981-bbe59dfdbaac
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 7f9d8a7c-2a1c-11e9-b981-bbe59dfdbaac;
 Wed, 06 Feb 2019 14:35:50 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id B11B6104D8E;
 Wed,  6 Feb 2019 15:35:49 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id IB-saG0smtpY; Wed,  6 Feb 2019 15:35:49 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 8D967104D86
 for <minios-devel@lists.xen.org>; Wed,  6 Feb 2019 15:35:47 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 6 Feb 2019 15:35:47
 +0100
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, <minios-devel@lists.xen.org>,
 <Simon.kuenzer@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
 <20190204143739.29249-4-yuri.volchkov@neclab.eu>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <4ceb35af-420e-1ff5-3aa2-c0459fee6db7@neclab.eu>
Date: Wed, 6 Feb 2019 15:35:47 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190204143739.29249-4-yuri.volchkov@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 03/23] lib/nolibc: adapt
 mount.h to Unikraft
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8geXVyaSwKClRoaXMgcGF0Y2ggc2VlbXMgZmluZS4gVGhlcmUgaXMgY2hlY2twYXRjaCB3
YXJuaW5nCgoKT24gbGluZSA1NSwKV0FSTklORzogbGluZSBvdmVyIDgwIGNoYXJhY3RlcnMKIzU1
OiBGSUxFOiBsaWIvbm9saWJjL2luY2x1ZGUvc3lzL21vdW50Lmg6NTU6CisjZGVmaW5lIE1TX1JN
VF9NQVNLIAooTVNfUkRPTkxZfE1TX1NZTkNIUk9OT1VTfE1TX01BTkRMT0NLfE1TX0lfVkVSU0lP
TnxNU19MQVpZVElNRSkKCgpXZSBjYW4gZml4IGl0IHdoaWxlIHVwc3RyZWFtaW5nLgoKCgpSZXZp
ZXdlZC1ieTogU2hhcmFuIFNhbnRoYW5hbSA8c2hhcmFuLnNhbnRoYW5hbUBuZWNsYWIuZXU+CgpU
aGFua3MgJiBSZWdhcmRzClNoYXJhbgoKCk9uIDIvNC8xOSAzOjM2IFBNLCBZdXJpIFZvbGNoa292
IHdyb3RlOgo+IFN0eWxlIHByb2JsZW1zIGFuZCBwcm9wZXIgaW5jbHVkZXMKPiAKPiBTaWduZWQt
b2ZmLWJ5OiBZdXJpIFZvbGNoa292IDx5dXJpLnZvbGNoa292QG5lY2xhYi5ldT4KPiAtLS0KPiAg
IGxpYi9ub2xpYmMvaW5jbHVkZS9zeXMvbW91bnQuaCB8IDM4ICsrKysrKysrKysrKysrKysrLS0t
LS0tLS0tLS0tLS0tLS0KPiAgIDEgZmlsZSBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCspLCAxOSBk
ZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvbGliL25vbGliYy9pbmNsdWRlL3N5cy9tb3Vu
dC5oIGIvbGliL25vbGliYy9pbmNsdWRlL3N5cy9tb3VudC5oCj4gaW5kZXggNTdhODljMDkuLmFm
ODU1ZDY5IDEwMDY0NAo+IC0tLSBhL2xpYi9ub2xpYmMvaW5jbHVkZS9zeXMvbW91bnQuaAo+ICsr
KyBiL2xpYi9ub2xpYmMvaW5jbHVkZS9zeXMvbW91bnQuaAo+IEBAIC01LDIzICs1LDIyIEBACj4g
ICBleHRlcm4gIkMiIHsKPiAgICNlbmRpZgo+ICAgCj4gLSNpbmNsdWRlIDxzeXMvaW9jdGwuaD4K
PiAgIAo+IC0jZGVmaW5lIEJMS1JPU0VUICAgX0lPKDB4MTIsIDkzKQo+IC0jZGVmaW5lIEJMS1JP
R0VUICAgX0lPKDB4MTIsIDk0KQo+IC0jZGVmaW5lIEJMS1JSUEFSVCAgX0lPKDB4MTIsIDk1KQo+
IC0jZGVmaW5lIEJMS0dFVFNJWkUgX0lPKDB4MTIsIDk2KQo+IC0jZGVmaW5lIEJMS0ZMU0JVRiAg
X0lPKDB4MTIsIDk3KQo+IC0jZGVmaW5lIEJMS1JBU0VUICAgX0lPKDB4MTIsIDk4KQo+IC0jZGVm
aW5lIEJMS1JBR0VUICAgX0lPKDB4MTIsIDk5KQo+IC0jZGVmaW5lIEJMS0ZSQVNFVCAgX0lPKDB4
MTIsMTAwKQo+IC0jZGVmaW5lIEJMS0ZSQUdFVCAgX0lPKDB4MTIsMTAxKQo+IC0jZGVmaW5lIEJM
S1NFQ1RTRVQgX0lPKDB4MTIsMTAyKQo+IC0jZGVmaW5lIEJMS1NFQ1RHRVQgX0lPKDB4MTIsMTAz
KQo+IC0jZGVmaW5lIEJMS1NTWkdFVCAgX0lPKDB4MTIsMTA0KQo+IC0jZGVmaW5lIEJMS0JTWkdF
VCAgX0lPUigweDEyLDExMixzaXplX3QpCj4gLSNkZWZpbmUgQkxLQlNaU0VUICBfSU9XKDB4MTIs
MTEzLHNpemVfdCkKPiAtI2RlZmluZSBCTEtHRVRTSVpFNjQgX0lPUigweDEyLDExNCxzaXplX3Qp
Cj4gKyNkZWZpbmUgQkxLUk9TRVQgICAgICBfSU8oMHgxMiwgIDkzKQo+ICsjZGVmaW5lIEJMS1JP
R0VUICAgICAgX0lPKDB4MTIsICA5NCkKPiArI2RlZmluZSBCTEtSUlBBUlQgICAgIF9JTygweDEy
LCAgOTUpCj4gKyNkZWZpbmUgQkxLR0VUU0laRSAgICBfSU8oMHgxMiwgIDk2KQo+ICsjZGVmaW5l
IEJMS0ZMU0JVRiAgICAgX0lPKDB4MTIsICA5NykKPiArI2RlZmluZSBCTEtSQVNFVCAgICAgIF9J
TygweDEyLCAgOTgpCj4gKyNkZWZpbmUgQkxLUkFHRVQgICAgICBfSU8oMHgxMiwgIDk5KQo+ICsj
ZGVmaW5lIEJMS0ZSQVNFVCAgICAgX0lPKDB4MTIsIDEwMCkKPiArI2RlZmluZSBCTEtGUkFHRVQg
ICAgIF9JTygweDEyLCAxMDEpCj4gKyNkZWZpbmUgQkxLU0VDVFNFVCAgICBfSU8oMHgxMiwgMTAy
KQo+ICsjZGVmaW5lIEJMS1NFQ1RHRVQgICAgX0lPKDB4MTIsIDEwMykKPiArI2RlZmluZSBCTEtT
U1pHRVQgICAgIF9JTygweDEyLCAxMDQpCj4gKyNkZWZpbmUgQkxLQlNaR0VUICAgIF9JT1IoMHgx
MiwgMTEyLCBzaXplX3QpCj4gKyNkZWZpbmUgQkxLQlNaU0VUICAgIF9JT1coMHgxMiwgMTEzLCBz
aXplX3QpCj4gKyNkZWZpbmUgQkxLR0VUU0laRTY0IF9JT1IoMHgxMiwgMTE0LCBzaXplX3QpCj4g
ICAKPiAgICNkZWZpbmUgTVNfUkRPTkxZICAgICAgMQo+ICAgI2RlZmluZSBNU19OT1NVSUQgICAg
ICAyCj4gQEAgLTYzLDkgKzYyLDEwIEBAIGV4dGVybiAiQyIgewo+ICAgI2RlZmluZSBNTlRfRVhQ
SVJFICAgICAgNAo+ICAgI2RlZmluZSBVTU9VTlRfTk9GT0xMT1cgOAo+ICAgCj4gLWludCBtb3Vu
dChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCB1bnNpZ25lZCBsb25n
LCBjb25zdCB2b2lkICopOwo+IC1pbnQgdW1vdW50KGNvbnN0IGNoYXIgKik7Cj4gLWludCB1bW91
bnQyKGNvbnN0IGNoYXIgKiwgaW50KTsKPiAraW50IG1vdW50KGNvbnN0IGNoYXIgKmRldiwgY29u
c3QgY2hhciAqZGlyLCBjb25zdCBjaGFyICpmc25hbWUsCj4gKwkgIHVuc2lnbmVkIGxvbmcgZmxh
Z3MsIGNvbnN0IHZvaWQgKmRhdGEpOwo+ICtpbnQgdW1vdW50KGNvbnN0IGNoYXIgKnBhdGgpOwo+
ICtpbnQgdW1vdW50Mihjb25zdCBjaGFyICpwYXRoLCBpbnQgZmxhZ3MpOwo+ICAgCj4gICAjaWZk
ZWYgX19jcGx1c3BsdXMKPiAgIH0KPiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxp
c3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9s
aXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Feb 06 14:41:33 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 06 Feb 2019 14:41:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grOOK-0000Ho-74; Wed, 06 Feb 2019 14:41:32 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Hs2p=QN=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1grOOJ-0000Hj-0N
 for minios-devel@lists.xen.org; Wed, 06 Feb 2019 14:41:31 +0000
X-Inumbo-ID: 48b09bde-2a1d-11e9-84b0-63d1f7356d4d
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 48b09bde-2a1d-11e9-84b0-63d1f7356d4d;
 Wed, 06 Feb 2019 14:41:27 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 14A74104D8E;
 Wed,  6 Feb 2019 15:41:27 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id Mtc50MuWmY4h; Wed,  6 Feb 2019 15:41:26 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id E6E6B104D74
 for <minios-devel@lists.xen.org>; Wed,  6 Feb 2019 15:41:24 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Wed, 6 Feb 2019 15:41:24 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: Sharan Santhanam <sharan.santhanam@neclab.eu>,
 <minios-devel@lists.xen.org>, <Simon.kuenzer@neclab.eu>
In-Reply-To: <4ceb35af-420e-1ff5-3aa2-c0459fee6db7@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
 <20190204143739.29249-4-yuri.volchkov@neclab.eu>
 <4ceb35af-420e-1ff5-3aa2-c0459fee6db7@neclab.eu>
Date: Wed, 6 Feb 2019 15:41:24 +0100
Message-ID: <tza4s2h8dhvv1n.fsf@N-1128.office.hd>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 03/23] lib/nolibc: adapt
 mount.h to Unikraft
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGksCgp0aGF0IGNoZWNrcGF0Y2ggd2FybmluZyB3YXMgbGVmdCBpbiBwbGFjZSBpbnRlbnRpb25h
bGx5LiBUaGUgODAKY2hhcmFjdGVycyBhcmUgc3Ryb25nbHkgc3VnZ2VzdGVkLCBidXQgbm90IHNh
Y3JlZC4gSSB0aGluayBoZXJlCnNwbGl0dGluZyB0aGUgbGluZSB3b3VsZCBodXJ0IG1vcmUgdGhl
biBoZWxwLgoKQ2hlZXJzLAotWXVyaS4KClNoYXJhbiBTYW50aGFuYW0gPHNoYXJhbi5zYW50aGFu
YW1AbmVjbGFiLmV1PiB3cml0ZXM6Cgo+IEhlbGxvIHl1cmksCj4KPiBUaGlzIHBhdGNoIHNlZW1z
IGZpbmUuIFRoZXJlIGlzIGNoZWNrcGF0Y2ggd2FybmluZwo+Cj4KPiBPbiBsaW5lIDU1LAo+IFdB
Uk5JTkc6IGxpbmUgb3ZlciA4MCBjaGFyYWN0ZXJzCj4gIzU1OiBGSUxFOiBsaWIvbm9saWJjL2lu
Y2x1ZGUvc3lzL21vdW50Lmg6NTU6Cj4gKyNkZWZpbmUgTVNfUk1UX01BU0sgCj4gKE1TX1JET05M
WXxNU19TWU5DSFJPTk9VU3xNU19NQU5ETE9DS3xNU19JX1ZFUlNJT058TVNfTEFaWVRJTUUpCj4K
Pgo+IFdlIGNhbiBmaXggaXQgd2hpbGUgdXBzdHJlYW1pbmcuCj4KPgo+Cj4gUmV2aWV3ZWQtYnk6
IFNoYXJhbiBTYW50aGFuYW0gPHNoYXJhbi5zYW50aGFuYW1AbmVjbGFiLmV1Pgo+Cj4gVGhhbmtz
ICYgUmVnYXJkcwo+IFNoYXJhbgo+Cj4KPiBPbiAyLzQvMTkgMzozNiBQTSwgWXVyaSBWb2xjaGtv
diB3cm90ZToKPj4gU3R5bGUgcHJvYmxlbXMgYW5kIHByb3BlciBpbmNsdWRlcwo+PiAKPj4gU2ln
bmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Cj4+IC0t
LQo+PiAgIGxpYi9ub2xpYmMvaW5jbHVkZS9zeXMvbW91bnQuaCB8IDM4ICsrKysrKysrKysrKysr
KysrLS0tLS0tLS0tLS0tLS0tLS0KPj4gICAxIGZpbGUgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygr
KSwgMTkgZGVsZXRpb25zKC0pCj4+IAo+PiBkaWZmIC0tZ2l0IGEvbGliL25vbGliYy9pbmNsdWRl
L3N5cy9tb3VudC5oIGIvbGliL25vbGliYy9pbmNsdWRlL3N5cy9tb3VudC5oCj4+IGluZGV4IDU3
YTg5YzA5Li5hZjg1NWQ2OSAxMDA2NDQKPj4gLS0tIGEvbGliL25vbGliYy9pbmNsdWRlL3N5cy9t
b3VudC5oCj4+ICsrKyBiL2xpYi9ub2xpYmMvaW5jbHVkZS9zeXMvbW91bnQuaAo+PiBAQCAtNSwy
MyArNSwyMiBAQAo+PiAgIGV4dGVybiAiQyIgewo+PiAgICNlbmRpZgo+PiAgIAo+PiAtI2luY2x1
ZGUgPHN5cy9pb2N0bC5oPgo+PiAgIAo+PiAtI2RlZmluZSBCTEtST1NFVCAgIF9JTygweDEyLCA5
MykKPj4gLSNkZWZpbmUgQkxLUk9HRVQgICBfSU8oMHgxMiwgOTQpCj4+IC0jZGVmaW5lIEJMS1JS
UEFSVCAgX0lPKDB4MTIsIDk1KQo+PiAtI2RlZmluZSBCTEtHRVRTSVpFIF9JTygweDEyLCA5NikK
Pj4gLSNkZWZpbmUgQkxLRkxTQlVGICBfSU8oMHgxMiwgOTcpCj4+IC0jZGVmaW5lIEJMS1JBU0VU
ICAgX0lPKDB4MTIsIDk4KQo+PiAtI2RlZmluZSBCTEtSQUdFVCAgIF9JTygweDEyLCA5OSkKPj4g
LSNkZWZpbmUgQkxLRlJBU0VUICBfSU8oMHgxMiwxMDApCj4+IC0jZGVmaW5lIEJMS0ZSQUdFVCAg
X0lPKDB4MTIsMTAxKQo+PiAtI2RlZmluZSBCTEtTRUNUU0VUIF9JTygweDEyLDEwMikKPj4gLSNk
ZWZpbmUgQkxLU0VDVEdFVCBfSU8oMHgxMiwxMDMpCj4+IC0jZGVmaW5lIEJMS1NTWkdFVCAgX0lP
KDB4MTIsMTA0KQo+PiAtI2RlZmluZSBCTEtCU1pHRVQgIF9JT1IoMHgxMiwxMTIsc2l6ZV90KQo+
PiAtI2RlZmluZSBCTEtCU1pTRVQgIF9JT1coMHgxMiwxMTMsc2l6ZV90KQo+PiAtI2RlZmluZSBC
TEtHRVRTSVpFNjQgX0lPUigweDEyLDExNCxzaXplX3QpCj4+ICsjZGVmaW5lIEJMS1JPU0VUICAg
ICAgX0lPKDB4MTIsICA5MykKPj4gKyNkZWZpbmUgQkxLUk9HRVQgICAgICBfSU8oMHgxMiwgIDk0
KQo+PiArI2RlZmluZSBCTEtSUlBBUlQgICAgIF9JTygweDEyLCAgOTUpCj4+ICsjZGVmaW5lIEJM
S0dFVFNJWkUgICAgX0lPKDB4MTIsICA5NikKPj4gKyNkZWZpbmUgQkxLRkxTQlVGICAgICBfSU8o
MHgxMiwgIDk3KQo+PiArI2RlZmluZSBCTEtSQVNFVCAgICAgIF9JTygweDEyLCAgOTgpCj4+ICsj
ZGVmaW5lIEJMS1JBR0VUICAgICAgX0lPKDB4MTIsICA5OSkKPj4gKyNkZWZpbmUgQkxLRlJBU0VU
ICAgICBfSU8oMHgxMiwgMTAwKQo+PiArI2RlZmluZSBCTEtGUkFHRVQgICAgIF9JTygweDEyLCAx
MDEpCj4+ICsjZGVmaW5lIEJMS1NFQ1RTRVQgICAgX0lPKDB4MTIsIDEwMikKPj4gKyNkZWZpbmUg
QkxLU0VDVEdFVCAgICBfSU8oMHgxMiwgMTAzKQo+PiArI2RlZmluZSBCTEtTU1pHRVQgICAgIF9J
TygweDEyLCAxMDQpCj4+ICsjZGVmaW5lIEJMS0JTWkdFVCAgICBfSU9SKDB4MTIsIDExMiwgc2l6
ZV90KQo+PiArI2RlZmluZSBCTEtCU1pTRVQgICAgX0lPVygweDEyLCAxMTMsIHNpemVfdCkKPj4g
KyNkZWZpbmUgQkxLR0VUU0laRTY0IF9JT1IoMHgxMiwgMTE0LCBzaXplX3QpCj4+ICAgCj4+ICAg
I2RlZmluZSBNU19SRE9OTFkgICAgICAxCj4+ICAgI2RlZmluZSBNU19OT1NVSUQgICAgICAyCj4+
IEBAIC02Myw5ICs2MiwxMCBAQCBleHRlcm4gIkMiIHsKPj4gICAjZGVmaW5lIE1OVF9FWFBJUkUg
ICAgICA0Cj4+ICAgI2RlZmluZSBVTU9VTlRfTk9GT0xMT1cgOAo+PiAgIAo+PiAtaW50IG1vdW50
KGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIHVuc2lnbmVkIGxvbmcs
IGNvbnN0IHZvaWQgKik7Cj4+IC1pbnQgdW1vdW50KGNvbnN0IGNoYXIgKik7Cj4+IC1pbnQgdW1v
dW50Mihjb25zdCBjaGFyICosIGludCk7Cj4+ICtpbnQgbW91bnQoY29uc3QgY2hhciAqZGV2LCBj
b25zdCBjaGFyICpkaXIsIGNvbnN0IGNoYXIgKmZzbmFtZSwKPj4gKwkgIHVuc2lnbmVkIGxvbmcg
ZmxhZ3MsIGNvbnN0IHZvaWQgKmRhdGEpOwo+PiAraW50IHVtb3VudChjb25zdCBjaGFyICpwYXRo
KTsKPj4gK2ludCB1bW91bnQyKGNvbnN0IGNoYXIgKnBhdGgsIGludCBmbGFncyk7Cj4+ICAgCj4+
ICAgI2lmZGVmIF9fY3BsdXNwbHVzCj4+ICAgfQo+PiAKCi0tIApZdXJpIFZvbGNoa292ClNvZnR3
YXJlIFNwZWNpYWxpc3QKCk5FQyBFdXJvcGUgTHRkCkt1cmbDvHJzdGVuLUFubGFnZSAzNgpELTY5
MTE1IEhlaWRlbGJlcmcKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnBy
b2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9t
aW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Feb 06 16:14:16 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 06 Feb 2019 16:14:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grPq3-0001S2-SN; Wed, 06 Feb 2019 16:14:15 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Hs2p=QN=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1grPq3-0001Ru-7G
 for minios-devel@lists.xen.org; Wed, 06 Feb 2019 16:14:15 +0000
X-Inumbo-ID: 3e03941c-2a2a-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 3e03941c-2a2a-11e9-bc90-bc764e045a96;
 Wed, 06 Feb 2019 16:14:13 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 7789AF205A;
 Wed,  6 Feb 2019 17:14:12 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id dqxVRu5YjwXV; Wed,  6 Feb 2019 17:14:12 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 495A7F2023
 for <minios-devel@lists.xen.org>; Wed,  6 Feb 2019 17:14:10 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Wed, 6 Feb 2019 17:14:09 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 6 Feb 2019 17:14:04 +0100
Message-ID: <20190206161404.11861-1-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH] build: mark LTO as experimental
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Q3VycmVudGx5IExUTyBkdXJpbmcgaW5jcmVtZW50YWwgbGlua2luZyBpcyBub3Qgc3VwcG9ydGVk
IHdlbGwgZW5vdWdoCmJ5IGdjYy4KClNpZ25lZC1vZmYtYnk6IFl1cmkgVm9sY2hrb3YgPHl1cmku
dm9sY2hrb3ZAbmVjbGFiLmV1PgotLS0KIENvbmZpZy51ayB8IDIgKy0KIDEgZmlsZSBjaGFuZ2Vk
LCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL0NvbmZpZy51ayBi
L0NvbmZpZy51awppbmRleCAxNThmMDk2ZS4uZDBiZmE4MjMgMTAwNjQ0Ci0tLSBhL0NvbmZpZy51
aworKysgYi9Db25maWcudWsKQEAgLTc5LDcgKzc5LDcgQEAgY29tbWVudCAiSGludDogRW5hYmxl
IGRyb3BwaW5nIG9mIHVudXNlZCBjb2RlIHRvIGZ1cnRoZXIgcmVkdWNlIHRhcmdldCBpbWFnZSBz
aXoKIAlkZXBlbmRzIG9uIE9QVElNSVpFX1NJWkUgJiYgIU9QVElNSVpFX0RFQURFTElNCiAKIGNv
bmZpZyBPUFRJTUlaRV9MVE8KLQlib29sICJMaW5rIHRpbWUgb3B0aW1pemF0aW9ucyAoTFRPKSIK
Kwlib29sICJMVE8gLSBMaW5rIHRpbWUgb3B0aW1pemF0aW9ucyAoRVhQRVJJTUVOVEFMKSIKIAlk
ZWZhdWx0IG4KIAloZWxwCiAJCUVuYWJsZXMgR0NDIHRvIGRvIGNvZGUgb3B0aW1pemF0aW9ucyBk
dXJpbmcgbGlua2luZy4gVGhpcyBvcHRpb24KLS0gCjIuMTkuMgoKCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QK
TWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVj
dC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Feb 06 16:16:14 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 06 Feb 2019 16:16:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grPry-0001YZ-1s; Wed, 06 Feb 2019 16:16:14 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Hs2p=QN=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1grPrx-0001YU-Ll
 for minios-devel@lists.xen.org; Wed, 06 Feb 2019 16:16:13 +0000
X-Inumbo-ID: 82395e38-2a2a-11e9-9d23-db34c96c7536
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 82395e38-2a2a-11e9-9d23-db34c96c7536;
 Wed, 06 Feb 2019 16:16:08 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 1C9C9104D91;
 Wed,  6 Feb 2019 17:16:07 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id frK_CbgMNhlR; Wed,  6 Feb 2019 17:16:07 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id F0685104D90
 for <minios-devel@lists.xen.org>; Wed,  6 Feb 2019 17:16:04 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Wed, 6 Feb 2019 17:16:04 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: Sharan Santhanam <sharan.santhanam@neclab.eu>, <minios-devel@lists.xen.org>
In-Reply-To: <1315d350-86cc-9833-a047-087a2e0dd09f@neclab.eu>
References: <20190104161800.22622-1-yuri.volchkov@neclab.eu>
 <20190104161800.22622-3-yuri.volchkov@neclab.eu>
 <1315d350-86cc-9833-a047-087a2e0dd09f@neclab.eu>
Date: Wed, 6 Feb 2019 17:16:04 +0100
Message-ID: <tza4s2ef8kx58b.fsf@N-1128.office.hd>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 2/2] lib/ukboot: move weak main
 in separate sub-lib
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: florian.schmidt@neclab.eu, Simon.kuenzer@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGksCgpnb29kIHBvaW50LiBJIGhhdmUgc2VudCBhIHNlcGFyYXRlIHBhdGNoIGZvciB0aGF0LgoK
Q2hlZXJzLCBZdXJpLgoKU2hhcmFuIFNhbnRoYW5hbSA8c2hhcmFuLnNhbnRoYW5hbUBuZWNsYWIu
ZXU+IHdyaXRlczoKCj4gSGVsbG8gWXVyaSwKPgo+IEkgYWdyZWUgd2l0aCB0aGUgc29sdXRpb24u
Cj4KPiBNYXliZSBpdCBpcyB3aXNlIHRvIGFkZCBhbiAiRVhQRVJJTUVOVEFMIiB0YWcgYXJvdW5k
IHRoZSBMVE8gQ29uZmlnLnVrIAo+IG9wdGlvbi4KPgo+IFRoYW5rcyAmIFJlZ2FyZHMKPiBTaGFy
YW4KPgoKCi0tIApZdXJpIFZvbGNoa292ClNvZnR3YXJlIFNwZWNpYWxpc3QKCk5FQyBFdXJvcGUg
THRkCkt1cmbDvHJzdGVuLUFubGFnZSAzNgpELTY5MTE1IEhlaWRlbGJlcmcKCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5n
IGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVu
cHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Feb 06 16:28:08 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 06 Feb 2019 16:28:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grQ3T-0002bN-JW; Wed, 06 Feb 2019 16:28:07 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Hs2p=QN=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1grQ3S-0002aq-2b
 for minios-devel@lists.xen.org; Wed, 06 Feb 2019 16:28:06 +0000
X-Inumbo-ID: 2ba0a908-2a2c-11e9-8b16-7334103ed8bb
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 2ba0a908-2a2c-11e9-8b16-7334103ed8bb;
 Wed, 06 Feb 2019 16:28:01 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id BA57A104D91;
 Wed,  6 Feb 2019 17:28:00 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id JmJ0UFdofE6A; Wed,  6 Feb 2019 17:28:00 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 92B04104D90
 for <minios-devel@lists.xen.org>; Wed,  6 Feb 2019 17:27:58 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Wed, 6 Feb 2019 17:27:58 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: Sharan Santhanam <sharan.santhanam@neclab.eu>, <minios-devel@lists.xen.org>
In-Reply-To: <540c8472-d0a7-f8a4-8cc3-8b4290df3f34@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
 <20190204143739.29249-2-yuri.volchkov@neclab.eu>
 <540c8472-d0a7-f8a4-8cc3-8b4290df3f34@neclab.eu>
Date: Wed, 6 Feb 2019 17:27:55 +0100
Message-ID: <tza4s2bm3ox4ok.fsf@N-1128.office.hd>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 01/23] include/uk: introduce
 __weak_alias macro
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Simon.kuenzer@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGksCgp3ZWxsLCB0aGlzIGlzIG5vdCBhIGNvcnJlY3QgYmVoYXZpb3Igb2YgZ2NjLiBJIGRvbid0
IGxpa2UgdGhlIGlkZWEgb2YKcG9sbHV0aW5nIGJ1aWxkIGxvZyB3aXRoIHdhcm5pbmdzIGFib3V0
IG5vdCB5b3VyIHByb2JsZW0gYW5kIHdoaWNoIHlvdQpjYW4gbm90IGZpeC4gQW5kIEkgZG9uJ3Qg
bGlrZSB0aGUgaWRlYSBvZiBkaXRjaGluZyBzb21ldGhpbmcgYXMKZXNzZW50aWFsIGFzIHdlYWsg
YWxpYXNpbmcuCgpBbm90aGVyIHRoaW5nLCBMVE8gcmVzb2x2ZXMgYSB3ZWFrIHN5bWJvbCBvbmx5
IGlmIGl0IGlzIHJlZmVyZW5jZWQKaW5zaWRlIGEgbGlicmFyeS4gVGhpcyBpcyBleGFjdGx5IHRo
ZSBpZGVhIGJlaGluZCB0aGUgd29ya2Fyb3VuZCBmb3IKdGhpcyAibXVsdGlwbGUgZGVmaW5pdGlv
biBvZiBgbWFpbiciIHBhdGNoIHlvdSByZXZpZXdlZCBlYXJsaWVyCnRvZGF5LiBZZXMgeW91IGNv
dWxkIHBlcmhhcHMgY2hlY2sgaWYgdGhpcyBpcyB0aGUgY2FzZSwgYW5kIHByb2R1Y2UgdGhlCndh
cm5pbmcgb25seSBpZiAxKSBMVE8gaXMgZW5hYmxlZCAyKSB0aGUgd2VhayBzeW1ib2wgaXMgcmVm
ZXJlbmNlZAppbnNpZGUgdGhlIGxpYnJhcnkgaXQgd2FzIGRlZmluZWQuIEkgdGhpbmsgdGhpcyBp
cyB3YXkgdG9vIGNvbXBsZXggZm9yCnRoZSBvdXRjb21lLgoKLSBCUiwgWXVyaS4KClNoYXJhbiBT
YW50aGFuYW0gPHNoYXJhbi5zYW50aGFuYW1AbmVjbGFiLmV1PiB3cml0ZXM6Cgo+IEhlbGxvIFl1
cmksCj4KPiBUaGlzIHBhdGNoIGZ1bmN0aW9uYWxseSBzZWVtcyBmaW5lLgo+Cj4gSSBoYXZlIGEg
cXVlc3Rpb24gd2l0aCByZWdhcmQgdG8gaXRzIHVzYWdlIGVzcGVjaWFsbHkgd2l0aCBMVE8gZW5h
YmxlZC4gCj4gVGhlIGxpYnJhcnkgd2hpY2ggdXNlcyB0aGlzIG1hY3JvIHNob3VsZCBub3QgdXNl
IHRoZSBmdW5jdGlvbiBpbnRlcm5hbGx5IAo+IGFzIExUTyB3b3VsZCBpbnRlcm5hbGx5IHJlc29s
dmUgaXQgd2l0aCB0aGUgd2VhayBzeW1ib2wuIEkgdGhpbmsgaXQgCj4gd291bGQgYmUgd2lzZSB0
byBhZGQgYSBjb21tZW50IHRvIHdhcm4gdGhlIHVzZXJzIG9mIHRoZSBtYWNybyBhYm91dCBpdC4K
Pgo+IFRoYW5rcyAmIFJlZ2FyZHMKPiBTaGFyYW4KPgo+IE9uIDIvNC8xOSAzOjM2IFBNLCBZdXJp
IFZvbGNoa292IHdyb3RlOgo+PiBTaWduZWQtb2ZmLWJ5OiBZdXJpIFZvbGNoa292IDx5dXJpLnZv
bGNoa292QG5lY2xhYi5ldT4KPj4gLS0tCj4+ICAgaW5jbHVkZS91ay9lc3NlbnRpYWxzLmggfCA0
ICsrKysKPj4gICAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCj4+IAo+PiBkaWZmIC0t
Z2l0IGEvaW5jbHVkZS91ay9lc3NlbnRpYWxzLmggYi9pbmNsdWRlL3VrL2Vzc2VudGlhbHMuaAo+
PiBpbmRleCAzYzE2ZTMwOC4uZGMxZDY5YjAgMTAwNjQ0Cj4+IC0tLSBhL2luY2x1ZGUvdWsvZXNz
ZW50aWFscy5oCj4+ICsrKyBiL2luY2x1ZGUvdWsvZXNzZW50aWFscy5oCj4+IEBAIC03Niw2ICs3
NiwxMCBAQCBleHRlcm4gIkMiIHsKPj4gICAjaWZuZGVmIF9fYWxpZ24KPj4gICAjZGVmaW5lIF9f
YWxpZ24oYnl0ZXMpICAgICAgICAgX19hdHRyaWJ1dGVfXygoYWxpZ25lZChieXRlcykpKQo+PiAg
ICNlbmRpZgo+PiArI2lmbmRlZiBfX3dlYWtfYWxpYXMKPj4gKyNkZWZpbmUgX193ZWFrX2FsaWFz
KG9sZCwgbmV3KSBcCj4+ICsJZXh0ZXJuIF9fdHlwZW9mKG9sZCkgbmV3IF9fYXR0cmlidXRlX18o
KHdlYWssIGFsaWFzKCNvbGQpKSkKPj4gKyNlbmRpZgo+PiAgIAo+PiAgIC8qKgo+PiAgICAgKiBN
YXJrIGEgZnVuY3Rpb24gYXMgY29uc3RydWN0b3IKPj4gCgotLSAKWXVyaSBWb2xjaGtvdgpTb2Z0
d2FyZSBTcGVjaWFsaXN0CgpORUMgRXVyb3BlIEx0ZApLdXJmw7xyc3Rlbi1BbmxhZ2UgMzYKRC02
OTExNSBIZWlkZWxiZXJnCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5w
cm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8v
bWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Feb 06 16:34:08 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 06 Feb 2019 16:34:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grQ9H-0003Mz-5w; Wed, 06 Feb 2019 16:34:07 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=tAI7=QN=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1grQ9F-0003MS-L8
 for minios-devel@lists.xen.org; Wed, 06 Feb 2019 16:34:05 +0000
X-Inumbo-ID: 00c5abe2-2a2d-11e9-a362-57dccf1faf35
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 00c5abe2-2a2d-11e9-a362-57dccf1faf35;
 Wed, 06 Feb 2019 16:33:59 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 3FF07F205A;
 Wed,  6 Feb 2019 17:33:58 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id kRXuE3lG0Bzk; Wed,  6 Feb 2019 17:33:57 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id C1C74F2023
 for <minios-devel@lists.xen.org>; Wed,  6 Feb 2019 17:33:55 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 6 Feb 2019 17:33:55
 +0100
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
 <20190204143739.29249-5-yuri.volchkov@neclab.eu>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <db7bf32a-6237-304d-47f3-b7e50bc4bbf9@neclab.eu>
Date: Wed, 6 Feb 2019 17:33:55 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190204143739.29249-5-yuri.volchkov@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 04/23] lib/vfscore: Initial
 import of OSv vfs
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Simon.kuenzer@neclab.eu
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8geXVyaSwKClRoaXMgcGF0Y2ggc2VlbXMgZmluZS4KClJldmlld2VkLWJ5OiBTaGFyYW4g
U2FudGhhbmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xhYi5ldT4KClRoYW5rcyAmIFJlZ2FyZHMK
U2hhcmFuCgpPbiAyLzQvMTkgMzozNiBQTSwgWXVyaSBWb2xjaGtvdiB3cm90ZToKPiBUaGUgY29k
ZSBpcyBpbXBvcnRlZCBhcyBpcy4KPiAKPiBDb21taXQgZjFmNDI5MTVhMzNiZWJlMTIwZTcwYWYx
ZjMyYzFhNGQ5MmJhYzc4MAo+IAo+IFNpZ25lZC1vZmYtYnk6IFl1cmkgVm9sY2hrb3YgPHl1cmku
dm9sY2hrb3ZAbmVjbGFiLmV1Pgo+IC0tLQo+ICAgbGliL3Zmc2NvcmUvZGVudHJ5LmMgICAgICAg
ICAgICAgICAgIHwgIDIzNCArKysKPiAgIGxpYi92ZnNjb3JlL2ZvcHMuYyAgICAgICAgICAgICAg
ICAgICB8ICAxODkgKysKPiAgIGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9kZW50cnkuaCB8
ICAgNDUgKwo+ICAgbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmggIHwgIDE3MSAr
Kwo+ICAgbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3ByZXguaCAgIHwgICAzNCArCj4gICBs
aWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdWlvLmggICAgfCAgIDg5ICsKPiAgIGxpYi92ZnNj
b3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5oICB8ICAyNDYgKysrCj4gICBsaWIvdmZzY29yZS9s
b29rdXAuYyAgICAgICAgICAgICAgICAgfCAgMzc1ICsrKysKPiAgIGxpYi92ZnNjb3JlL21haW4u
YyAgICAgICAgICAgICAgICAgICB8IDI0MTMgKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAg
IGxpYi92ZnNjb3JlL21vdW50LmMgICAgICAgICAgICAgICAgICB8ICA0OTEgKysrKysrCj4gICBs
aWIvdmZzY29yZS9zdWJyX3Vpby5jICAgICAgICAgICAgICAgfCAgIDczICsKPiAgIGxpYi92ZnNj
b3JlL3N5c2NhbGxzLmMgICAgICAgICAgICAgICB8IDE0ODYgKysrKysrKysrKysrKysrKwo+ICAg
bGliL3Zmc2NvcmUvdGFzay5jICAgICAgICAgICAgICAgICAgIHwgIDE2NyArKwo+ICAgbGliL3Zm
c2NvcmUvdmZzLmggICAgICAgICAgICAgICAgICAgIHwgIDE4OSArKwo+ICAgbGliL3Zmc2NvcmUv
dm5vZGUuYyAgICAgICAgICAgICAgICAgIHwgIDUyMiArKysrKysKPiAgIDE1IGZpbGVzIGNoYW5n
ZWQsIDY3MjQgaW5zZXJ0aW9ucygrKQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi92ZnNjb3Jl
L2RlbnRyeS5jCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3Zmc2NvcmUvZm9wcy5jCj4gICBj
cmVhdGUgbW9kZSAxMDA2NDQgbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2RlbnRyeS5oCj4g
ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmgK
PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvcHJleC5o
Cj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Vpby5o
Cj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Zub2Rl
LmgKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdmZzY29yZS9sb29rdXAuYwo+ICAgY3JlYXRl
IG1vZGUgMTAwNjQ0IGxpYi92ZnNjb3JlL21haW4uYwo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxp
Yi92ZnNjb3JlL21vdW50LmMKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdmZzY29yZS9zdWJy
X3Vpby5jCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3Zmc2NvcmUvc3lzY2FsbHMuYwo+ICAg
Y3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi92ZnNjb3JlL3Rhc2suYwo+ICAgY3JlYXRlIG1vZGUgMTAw
NjQ0IGxpYi92ZnNjb3JlL3Zmcy5oCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3Zmc2NvcmUv
dm5vZGUuYwo+IAo+IGRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9kZW50cnkuYyBiL2xpYi92ZnNj
b3JlL2RlbnRyeS5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMC4uZmFj
ZDllYWEKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvbGliL3Zmc2NvcmUvZGVudHJ5LmMKPiBAQCAt
MCwwICsxLDIzNCBAQAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQ2xvdWRpdXMgU3lz
dGVtcywgTHRkLgo+ICsgKgo+ICsgKiBUaGlzIHdvcmsgaXMgb3BlbiBzb3VyY2Ugc29mdHdhcmUs
IGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUKPiArICogQlNEIGxpY2Vuc2UgYXMgZGVz
Y3JpYmVkIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHRvcC1sZXZlbCBkaXJlY3RvcnkuCj4g
KyAqLwo+ICsKPiArLyoKPiArICogQ29weXJpZ2h0IChjKSAyMDA1LTIwMDcsIEtvaHN1a2UgT2h0
YW5pCj4gKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4gKyAqCj4gKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAo+ICsg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKPiArICogYXJlIG1ldDoKPiArICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgo+
ICsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCj4gKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Cj4gKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGF1dGhvciBub3IgdGhlIG5hbWVzIG9m
IGFueSBjby1jb250cmlidXRvcnMKPiArICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCj4gKyAqICAgIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgo+ICsgKgo+ICsgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5ECj4gKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQo+ICsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQo+ICsgKiBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRQo+ICsgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAo+ICsgKiBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
Uwo+ICsgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikKPiArICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKPiArICogTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWQo+ICsgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCj4gKyAqIFNVQ0ggREFNQUdFLgo+ICsgKi8K
PiArCj4gKyNpbmNsdWRlIDxzdHJpbmcuaD4KPiArI2luY2x1ZGUgPHN0ZGxpYi5oPgo+ICsjaW5j
bHVkZSA8c3lzL3BhcmFtLmg+Cj4gKwo+ICsjaW5jbHVkZSA8b3N2L2RlbnRyeS5oPgo+ICsjaW5j
bHVkZSA8b3N2L3Zub2RlLmg+Cj4gKyNpbmNsdWRlICJ2ZnMuaCIKPiArCj4gKyNkZWZpbmUgREVO
VFJZX0JVQ0tFVFMgMzIKPiArCj4gK3N0YXRpYyBMSVNUX0hFQUQoZGVudHJ5X2hhc2hfaGVhZCwg
ZGVudHJ5KSBkZW50cnlfaGFzaF90YWJsZVtERU5UUllfQlVDS0VUU107Cj4gK3N0YXRpYyBMSVNU
X0hFQUQoZmFrZSwgZGVudHJ5KSBmYWtlOwo+ICtzdGF0aWMgbXV0ZXggZGVudHJ5X2hhc2hfbG9j
azsKPiArCj4gKy8qCj4gKyAqIEdldCB0aGUgaGFzaCB2YWx1ZSBmcm9tIHRoZSBtb3VudCBwb2lu
dCBhbmQgcGF0aCBuYW1lLgo+ICsgKiBYWFg6IHJlcGxhY2Ugd2l0aCBhIGJldHRlciBoYXNoIGZv
ciA2NC1iaXQgcG9pbnRlcnMuCj4gKyAqLwo+ICtzdGF0aWMgdV9pbnQKPiArZGVudHJ5X2hhc2go
c3RydWN0IG1vdW50ICptcCwgY29uc3QgY2hhciAqcGF0aCkKPiArewo+ICsgICAgdV9pbnQgdmFs
ID0gMDsKPiArCj4gKyAgICBpZiAocGF0aCkgewo+ICsgICAgICAgIHdoaWxlICgqcGF0aCkgewo+
ICsgICAgICAgICAgICB2YWwgPSAoKHZhbCA8PCA1KSArIHZhbCkgKyAqcGF0aCsrOwo+ICsgICAg
ICAgIH0KPiArICAgIH0KPiArICAgIHJldHVybiAodmFsIF4gKHVuc2lnbmVkIGxvbmcpIG1wKSAm
IChERU5UUllfQlVDS0VUUyAtIDEpOwo+ICt9Cj4gKwo+ICsKPiArc3RydWN0IGRlbnRyeSAqCj4g
K2RlbnRyeV9hbGxvYyhzdHJ1Y3QgZGVudHJ5ICpwYXJlbnRfZHAsIHN0cnVjdCB2bm9kZSAqdnAs
IGNvbnN0IGNoYXIgKnBhdGgpCj4gK3sKPiArICAgIHN0cnVjdCBtb3VudCAqbXAgPSB2cC0+dl9t
b3VudDsKPiArICAgIHN0cnVjdCBkZW50cnkgKmRwID0gKGRlbnRyeSopY2FsbG9jKHNpemVvZigq
ZHApLCAxKTsKPiArCj4gKyAgICBpZiAoIWRwKSB7Cj4gKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
Cj4gKyAgICB9Cj4gKwo+ICsgICAgdnJlZih2cCk7Cj4gKwo+ICsgICAgZHAtPmRfcmVmY250ID0g
MTsKPiArICAgIGRwLT5kX3Zub2RlID0gdnA7Cj4gKyAgICBkcC0+ZF9tb3VudCA9IG1wOwo+ICsg
ICAgZHAtPmRfcGF0aCA9IHN0cmR1cChwYXRoKTsKPiArICAgIExJU1RfSU5JVCgmZHAtPmRfY2hp
bGRyZW4pOwo+ICsKPiArICAgIGlmIChwYXJlbnRfZHApIHsKPiArICAgICAgICBkcmVmKHBhcmVu
dF9kcCk7Cj4gKyAgICAgICAgV0lUSF9MT0NLKHBhcmVudF9kcC0+ZF9sb2NrKSB7Cj4gKyAgICAg
ICAgICAgIC8vIEluc2VydCBkcCBpbnRvIGl0cyBwYXJlbnQncyBjaGlsZHJlbiBsaXN0Lgo+ICsg
ICAgICAgICAgICBMSVNUX0lOU0VSVF9IRUFEKCZwYXJlbnRfZHAtPmRfY2hpbGRyZW4sIGRwLCBk
X2NoaWxkcmVuX2xpbmspOwo+ICsgICAgICAgIH0KPiArICAgIH0KPiArICAgIGRwLT5kX3BhcmVu
dCA9IHBhcmVudF9kcDsKPiArCj4gKyAgICB2bl9hZGRfbmFtZSh2cCwgZHApOwo+ICsKPiArICAg
IG11dGV4X2xvY2soJmRlbnRyeV9oYXNoX2xvY2spOwo+ICsgICAgTElTVF9JTlNFUlRfSEVBRCgm
ZGVudHJ5X2hhc2hfdGFibGVbZGVudHJ5X2hhc2gobXAsIHBhdGgpXSwgZHAsIGRfbGluayk7Cj4g
KyAgICBtdXRleF91bmxvY2soJmRlbnRyeV9oYXNoX2xvY2spOwo+ICsgICAgcmV0dXJuIGRwOwo+
ICt9Owo+ICsKPiArc3RydWN0IGRlbnRyeSAqCj4gK2RlbnRyeV9sb29rdXAoc3RydWN0IG1vdW50
ICptcCwgY2hhciAqcGF0aCkKPiArewo+ICsgICAgc3RydWN0IGRlbnRyeSAqZHA7Cj4gKwo+ICsg
ICAgbXV0ZXhfbG9jaygmZGVudHJ5X2hhc2hfbG9jayk7Cj4gKyAgICBMSVNUX0ZPUkVBQ0goZHAs
ICZkZW50cnlfaGFzaF90YWJsZVtkZW50cnlfaGFzaChtcCwgcGF0aCldLCBkX2xpbmspIHsKPiAr
ICAgICAgICBpZiAoZHAtPmRfbW91bnQgPT0gbXAgJiYgIXN0cm5jbXAoZHAtPmRfcGF0aCwgcGF0
aCwgUEFUSF9NQVgpKSB7Cj4gKyAgICAgICAgICAgIGRwLT5kX3JlZmNudCsrOwo+ICsgICAgICAg
ICAgICBtdXRleF91bmxvY2soJmRlbnRyeV9oYXNoX2xvY2spOwo+ICsgICAgICAgICAgICByZXR1
cm4gZHA7Cj4gKyAgICAgICAgfQo+ICsgICAgfQo+ICsgICAgbXV0ZXhfdW5sb2NrKCZkZW50cnlf
aGFzaF9sb2NrKTsKPiArICAgIHJldHVybiBudWxscHRyOyAgICAgICAgICAgICAgICAvKiBub3Qg
Zm91bmQgKi8KPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZGVudHJ5X2NoaWxkcmVuX3JlbW92ZShz
dHJ1Y3QgZGVudHJ5ICpkcCkKPiArewo+ICsgICAgc3RydWN0IGRlbnRyeSAqZW50cnkgPSBudWxs
cHRyOwo+ICsKPiArICAgIFdJVEhfTE9DSyhkcC0+ZF9sb2NrKSB7Cj4gKyAgICAgICAgTElTVF9G
T1JFQUNIKGVudHJ5LCAmZHAtPmRfY2hpbGRyZW4sIGRfY2hpbGRyZW5fbGluaykgewo+ICsgICAg
ICAgICAgICBBU1NFUlQoZW50cnkpOwo+ICsgICAgICAgICAgICBBU1NFUlQoZW50cnktPmRfcmVm
Y250ID4gMCk7Cj4gKyAgICAgICAgICAgIExJU1RfUkVNT1ZFKGVudHJ5LCBkX2xpbmspOwo+ICsg
ICAgICAgIH0KPiArICAgIH0KPiArfQo+ICsKPiArdm9pZAo+ICtkZW50cnlfbW92ZShzdHJ1Y3Qg
ZGVudHJ5ICpkcCwgc3RydWN0IGRlbnRyeSAqcGFyZW50X2RwLCBjaGFyICpwYXRoKQo+ICt7Cj4g
KyAgICBzdHJ1Y3QgZGVudHJ5ICpvbGRfcGRwID0gZHAtPmRfcGFyZW50Owo+ICsgICAgY2hhciAq
b2xkX3BhdGggPSBkcC0+ZF9wYXRoOwo+ICsKPiArICAgIGlmIChvbGRfcGRwKSB7Cj4gKyAgICAg
ICAgV0lUSF9MT0NLKG9sZF9wZHAtPmRfbG9jaykgewo+ICsgICAgICAgICAgICAvLyBSZW1vdmUg
ZHAgZnJvbSBpdHMgb2xkIHBhcmVudCdzIGNoaWxkcmVuIGxpc3QuCj4gKyAgICAgICAgICAgIExJ
U1RfUkVNT1ZFKGRwLCBkX2NoaWxkcmVuX2xpbmspOwo+ICsgICAgICAgIH0KPiArICAgIH0KPiAr
Cj4gKyAgICBpZiAocGFyZW50X2RwKSB7Cj4gKyAgICAgICAgZHJlZihwYXJlbnRfZHApOwo+ICsg
ICAgICAgIFdJVEhfTE9DSyhwYXJlbnRfZHAtPmRfbG9jaykgewo+ICsgICAgICAgICAgICAvLyBJ
bnNlcnQgZHAgaW50byBpdHMgbmV3IHBhcmVudCdzIGNoaWxkcmVuIGxpc3QuCj4gKyAgICAgICAg
ICAgIExJU1RfSU5TRVJUX0hFQUQoJnBhcmVudF9kcC0+ZF9jaGlsZHJlbiwgZHAsIGRfY2hpbGRy
ZW5fbGluayk7Cj4gKyAgICAgICAgfQo+ICsgICAgfQo+ICsKPiArICAgIFdJVEhfTE9DSyhkZW50
cnlfaGFzaF9sb2NrKSB7Cj4gKyAgICAgICAgLy8gUmVtb3ZlIGFsbCBkcCdzIGNoaWxkIGRlbnRy
aWVzIGZyb20gdGhlIGhhc2h0YWJsZS4KPiArICAgICAgICBkZW50cnlfY2hpbGRyZW5fcmVtb3Zl
KGRwKTsKPiArICAgICAgICAvLyBSZW1vdmUgZHAgd2l0aCBvdXRkYXRlZCBoYXNoIGluZm8gZnJv
bSB0aGUgaGFzaHRhYmxlLgo+ICsgICAgICAgIExJU1RfUkVNT1ZFKGRwLCBkX2xpbmspOwo+ICsg
ICAgICAgIC8vIFVwZGF0ZSBkcC4KPiArICAgICAgICBkcC0+ZF9wYXRoID0gc3RyZHVwKHBhdGgp
Owo+ICsgICAgICAgIGRwLT5kX3BhcmVudCA9IHBhcmVudF9kcDsKPiArICAgICAgICAvLyBJbnNl
cnQgZHAgdXBkYXRlZCBoYXNoIGluZm8gaW50byB0aGUgaGFzaHRhYmxlLgo+ICsgICAgICAgIExJ
U1RfSU5TRVJUX0hFQUQoJmRlbnRyeV9oYXNoX3RhYmxlW2RlbnRyeV9oYXNoKGRwLT5kX21vdW50
LCBwYXRoKV0sCj4gKyAgICAgICAgICAgIGRwLCBkX2xpbmspOwo+ICsgICAgfQo+ICsKPiArICAg
IGlmIChvbGRfcGRwKSB7Cj4gKyAgICAgICAgZHJlbGUob2xkX3BkcCk7Cj4gKyAgICB9Cj4gKwo+
ICsgICAgZnJlZShvbGRfcGF0aCk7Cj4gK30KPiArCj4gK3ZvaWQKPiArZGVudHJ5X3JlbW92ZShz
dHJ1Y3QgZGVudHJ5ICpkcCkKPiArewo+ICsgICAgbXV0ZXhfbG9jaygmZGVudHJ5X2hhc2hfbG9j
ayk7Cj4gKyAgICBMSVNUX1JFTU9WRShkcCwgZF9saW5rKTsKPiArICAgIC8qIHB1dCBpdCBvbiBh
IGZha2UgbGlzdCBmb3IgZHJlbGUoKSB0byB3b3JrKi8KPiArICAgIExJU1RfSU5TRVJUX0hFQUQo
JmZha2UsIGRwLCBkX2xpbmspOwo+ICsgICAgbXV0ZXhfdW5sb2NrKCZkZW50cnlfaGFzaF9sb2Nr
KTsKPiArfQo+ICsKPiArdm9pZAo+ICtkcmVmKHN0cnVjdCBkZW50cnkgKmRwKQo+ICt7Cj4gKyAg
ICBBU1NFUlQoZHApOwo+ICsgICAgQVNTRVJUKGRwLT5kX3JlZmNudCA+IDApOwo+ICsKPiArICAg
IG11dGV4X2xvY2soJmRlbnRyeV9oYXNoX2xvY2spOwo+ICsgICAgZHAtPmRfcmVmY250Kys7Cj4g
KyAgICBtdXRleF91bmxvY2soJmRlbnRyeV9oYXNoX2xvY2spOwo+ICt9Cj4gKwo+ICt2b2lkCj4g
K2RyZWxlKHN0cnVjdCBkZW50cnkgKmRwKQo+ICt7Cj4gKyAgICBBU1NFUlQoZHApOwo+ICsgICAg
QVNTRVJUKGRwLT5kX3JlZmNudCA+IDApOwo+ICsKPiArICAgIG11dGV4X2xvY2soJmRlbnRyeV9o
YXNoX2xvY2spOwo+ICsgICAgaWYgKC0tZHAtPmRfcmVmY250KSB7Cj4gKyAgICAgICAgbXV0ZXhf
dW5sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKPiArICAgICAgICByZXR1cm47Cj4gKyAgICB9Cj4g
KyAgICBMSVNUX1JFTU9WRShkcCwgZF9saW5rKTsKPiArICAgIHZuX2RlbF9uYW1lKGRwLT5kX3Zu
b2RlLCBkcCk7Cj4gKwo+ICsgICAgbXV0ZXhfdW5sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKPiAr
Cj4gKyAgICBpZiAoZHAtPmRfcGFyZW50KSB7Cj4gKyAgICAgICAgV0lUSF9MT0NLKGRwLT5kX3Bh
cmVudC0+ZF9sb2NrKSB7Cj4gKyAgICAgICAgICAgIC8vIFJlbW92ZSBkcCBmcm9tIGl0cyBwYXJl
bnQncyBjaGlsZHJlbiBsaXN0Lgo+ICsgICAgICAgICAgICBMSVNUX1JFTU9WRShkcCwgZF9jaGls
ZHJlbl9saW5rKTsKPiArICAgICAgICB9Cj4gKyAgICAgICAgZHJlbGUoZHAtPmRfcGFyZW50KTsK
PiArICAgIH0KPiArCj4gKyAgICB2cmVsZShkcC0+ZF92bm9kZSk7Cj4gKwo+ICsgICAgZnJlZShk
cC0+ZF9wYXRoKTsKPiArICAgIGZyZWUoZHApOwo+ICt9Cj4gKwo+ICt2b2lkCj4gK2RlbnRyeV9p
bml0KHZvaWQpCj4gK3sKPiArICAgIGludCBpOwo+ICsKPiArICAgIGZvciAoaSA9IDA7IGkgPCBE
RU5UUllfQlVDS0VUUzsgaSsrKSB7Cj4gKyAgICAgICAgTElTVF9JTklUKCZkZW50cnlfaGFzaF90
YWJsZVtpXSk7Cj4gKyAgICB9Cj4gK30KPiBkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvZm9wcy5j
IGIvbGliL3Zmc2NvcmUvZm9wcy5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAw
MDAwMC4uM2E4Zjk4YjQKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvbGliL3Zmc2NvcmUvZm9wcy5j
Cj4gQEAgLTAsMCArMSwxODkgQEAKPiArLyoKPiArICogQ29weXJpZ2h0IChDKSAyMDEzIENsb3Vk
aXVzIFN5c3RlbXMsIEx0ZC4KPiArICoKPiArICogVGhpcyB3b3JrIGlzIG9wZW4gc291cmNlIHNv
ZnR3YXJlLCBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlCj4gKyAqIEJTRCBsaWNlbnNl
IGFzIGRlc2NyaWJlZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSB0b3AtbGV2ZWwgZGlyZWN0
b3J5Lgo+ICsgKi8KPiArCj4gKwo+ICsjaW5jbHVkZSA8ZmNudGwuaD4KPiArI2luY2x1ZGUgPHN5
cy9zdGF0Lmg+Cj4gKyNpbmNsdWRlIDxvc3YvZmlsZS5oPgo+ICsjaW5jbHVkZSA8b3N2L3BvbGwu
aD4KPiArI2luY2x1ZGUgPGZzL3Zmcy92ZnMuaD4KPiArI2luY2x1ZGUgPG9zdi92ZnNfZmlsZS5o
aD4KPiArI2luY2x1ZGUgPG9zdi9tbXUuaGg+Cj4gKyNpbmNsdWRlIDxvc3YvcGFnZWNhY2hlLmho
Pgo+ICsKPiArdmZzX2ZpbGU6OnZmc19maWxlKHVuc2lnbmVkIGZsYWdzKQo+ICsJOiBmaWxlKGZs
YWdzLCBEVFlQRV9WTk9ERSkKPiArewo+ICt9Cj4gKwo+ICtpbnQgdmZzX2ZpbGU6OmNsb3NlKCkK
PiArewo+ICsJYXV0byBmcCA9IHRoaXM7Cj4gKwlzdHJ1Y3Qgdm5vZGUgKnZwID0gZnAtPmZfZGVu
dHJ5LT5kX3Zub2RlOwo+ICsJaW50IGVycm9yOwo+ICsKPiArCXZuX2xvY2sodnApOwo+ICsJZXJy
b3IgPSBWT1BfQ0xPU0UodnAsIGZwKTsKPiArCXZuX3VubG9jayh2cCk7Cj4gKwo+ICsJaWYgKGVy
cm9yKQo+ICsJCXJldHVybiBlcnJvcjsKPiArCj4gKwlmcC0+Zl9kZW50cnkucmVzZXQoKTsKPiAr
CXJldHVybiAwOwo+ICt9Cj4gKwo+ICtpbnQgdmZzX2ZpbGU6OnJlYWQoc3RydWN0IHVpbyAqdWlv
LCBpbnQgZmxhZ3MpCj4gK3sKPiArCWF1dG8gZnAgPSB0aGlzOwo+ICsJc3RydWN0IHZub2RlICp2
cCA9IGZwLT5mX2RlbnRyeS0+ZF92bm9kZTsKPiArCWludCBlcnJvcjsKPiArCXNpemVfdCBjb3Vu
dDsKPiArCXNzaXplX3QgYnl0ZXM7Cj4gKwo+ICsJYnl0ZXMgPSB1aW8tPnVpb19yZXNpZDsKPiAr
Cj4gKwl2bl9sb2NrKHZwKTsKPiArCWlmICgoZmxhZ3MgJiBGT0ZfT0ZGU0VUKSA9PSAwKQo+ICsJ
CXVpby0+dWlvX29mZnNldCA9IGZwLT5mX29mZnNldDsKPiArCj4gKwllcnJvciA9IFZPUF9SRUFE
KHZwLCBmcCwgdWlvLCAwKTsKPiArCWlmICghZXJyb3IpIHsKPiArCQljb3VudCA9IGJ5dGVzIC0g
dWlvLT51aW9fcmVzaWQ7Cj4gKwkJaWYgKChmbGFncyAmIEZPRl9PRkZTRVQpID09IDApCj4gKwkJ
CWZwLT5mX29mZnNldCArPSBjb3VudDsKPiArCX0KPiArCXZuX3VubG9jayh2cCk7Cj4gKwo+ICsJ
cmV0dXJuIGVycm9yOwo+ICt9Cj4gKwo+ICsKPiAraW50IHZmc19maWxlOjp3cml0ZShzdHJ1Y3Qg
dWlvICp1aW8sIGludCBmbGFncykKPiArewo+ICsJYXV0byBmcCA9IHRoaXM7Cj4gKwlzdHJ1Y3Qg
dm5vZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOwo+ICsJaW50IGlvZmxhZ3MgPSAwOwo+
ICsJaW50IGVycm9yOwo+ICsJc2l6ZV90IGNvdW50Owo+ICsJc3NpemVfdCBieXRlczsKPiArCj4g
KwlieXRlcyA9IHVpby0+dWlvX3Jlc2lkOwo+ICsKPiArCXZuX2xvY2sodnApOwo+ICsKPiArCWlm
IChmcC0+Zl9mbGFncyAmIE9fQVBQRU5EKQo+ICsJCWlvZmxhZ3MgfD0gSU9fQVBQRU5EOwo+ICsJ
aWYgKGZwLT5mX2ZsYWdzICYgKE9fRFNZTkN8T19TWU5DKSkKPiArCQlpb2ZsYWdzIHw9IElPX1NZ
TkM7Cj4gKwo+ICsJaWYgKChmbGFncyAmIEZPRl9PRkZTRVQpID09IDApCj4gKwkgICAgICAgIHVp
by0+dWlvX29mZnNldCA9IGZwLT5mX29mZnNldDsKPiArCj4gKwllcnJvciA9IFZPUF9XUklURSh2
cCwgdWlvLCBpb2ZsYWdzKTsKPiArCWlmICghZXJyb3IpIHsKPiArCQljb3VudCA9IGJ5dGVzIC0g
dWlvLT51aW9fcmVzaWQ7Cj4gKwkJaWYgKChmbGFncyAmIEZPRl9PRkZTRVQpID09IDApCj4gKwkJ
CWZwLT5mX29mZnNldCArPSBjb3VudDsKPiArCX0KPiArCj4gKwl2bl91bmxvY2sodnApOwo+ICsJ
cmV0dXJuIGVycm9yOwo+ICt9Cj4gKwo+ICtpbnQgdmZzX2ZpbGU6OmlvY3RsKHVfbG9uZyBjb20s
IHZvaWQgKmRhdGEpCj4gK3sKPiArCWF1dG8gZnAgPSB0aGlzOwo+ICsJc3RydWN0IHZub2RlICp2
cCA9IGZwLT5mX2RlbnRyeS0+ZF92bm9kZTsKPiArCWludCBlcnJvcjsKPiArCj4gKwl2bl9sb2Nr
KHZwKTsKPiArCWVycm9yID0gVk9QX0lPQ1RMKHZwLCBmcCwgY29tLCBkYXRhKTsKPiArCXZuX3Vu
bG9jayh2cCk7Cj4gKwo+ICsJcmV0dXJuIGVycm9yOwo+ICt9Cj4gKwo+ICtpbnQgdmZzX2ZpbGU6
OnN0YXQoc3RydWN0IHN0YXQgKnN0KQo+ICt7Cj4gKwlhdXRvIGZwID0gdGhpczsKPiArCXN0cnVj
dCB2bm9kZSAqdnAgPSBmcC0+Zl9kZW50cnktPmRfdm5vZGU7Cj4gKwlpbnQgZXJyb3I7Cj4gKwo+
ICsJdm5fbG9jayh2cCk7Cj4gKwllcnJvciA9IHZuX3N0YXQodnAsIHN0KTsKPiArCXZuX3VubG9j
ayh2cCk7Cj4gKwo+ICsJcmV0dXJuIGVycm9yOwo+ICt9Cj4gKwo+ICtpbnQgdmZzX2ZpbGU6OnBv
bGwoaW50IGV2ZW50cykKPiArewo+ICsJcmV0dXJuIHBvbGxfbm9fcG9sbChldmVudHMpOwo+ICt9
Cj4gKwo+ICtpbnQgdmZzX2ZpbGU6OnRydW5jYXRlKG9mZl90IGxlbikKPiArewo+ICsJLy8gc29t
ZWhvdyB0aGlzIGlzIGhhbmRsZWQgb3V0c2lkZSBmaWxlIG9wcwo+ICsJYWJvcnQoKTsKPiArfQo+
ICsKPiAraW50IHZmc19maWxlOjpjaG1vZChtb2RlX3QgbW9kZSkKPiArewo+ICsJLy8gc29tZWhv
dyB0aGlzIGlzIGhhbmRsZWQgb3V0c2lkZSBmaWxlIG9wcwo+ICsJYWJvcnQoKTsKPiArfQo+ICsK
PiArYm9vbCB2ZnNfZmlsZTo6bWFwX3BhZ2UodWludHB0cl90IG9mZiwgbW11Ojpod19wdGVwPDA+
IHB0ZXAsIG1tdTo6cHRfZWxlbWVudDwwPiBwdGUsIGJvb2wgd3JpdGUsIGJvb2wgc2hhcmVkKQo+
ICt7Cj4gKyAgICByZXR1cm4gcGFnZWNhY2hlOjpnZXQodGhpcywgb2ZmLCBwdGVwLCBwdGUsIHdy
aXRlLCBzaGFyZWQpOwo+ICt9Cj4gKwo+ICtib29sIHZmc19maWxlOjpwdXRfcGFnZSh2b2lkICph
ZGRyLCB1aW50cHRyX3Qgb2ZmLCBtbXU6Omh3X3B0ZXA8MD4gcHRlcCkKPiArewo+ICsgICAgcmV0
dXJuIHBhZ2VjYWNoZTo6cmVsZWFzZSh0aGlzLCBhZGRyLCBvZmYsIHB0ZXApOwo+ICt9Cj4gKwo+
ICt2b2lkIHZmc19maWxlOjpzeW5jKG9mZl90IHN0YXJ0LCBvZmZfdCBlbmQpCj4gK3sKPiArICAg
IHBhZ2VjYWNoZTo6c3luYyh0aGlzLCBzdGFydCwgZW5kKTsKPiArfQo+ICsKPiArLy8gTG9ja2lu
ZzogVk9QX0NBQ0hFIHdpbGwgY2FsbCBpbnRvIHRoZSBmaWxlc3lzdGVtLCBhbmQgdGhhdCBjYW4g
dHJpZ2dlciBhbgo+ICsvLyBldmljdGlvbiB0aGF0IHdpbGwgaG9sZCB0aGUgbW11LXNpZGUgbG9j
ayB0aGF0IHByb3RlY3RzIHRoZSBtYXBwaW5ncwo+ICsvLyBBbHdheXMgZm9sbG93IHRoYXQgb3Jk
ZXIuIFdlIGhvd2V2ZXIgY2FuJ3QganVzdCBnZXQgcmlkIG9mIHRoZSBtbXUtc2lkZSBsb2NrLAo+
ICsvLyBiZWNhdXNlIG5vdCBhbGwgaW52YWxpZGF0aW9ucyB3aWxsIGJlIHN5bmNocm9ub3VzLgo+
ICtpbnQgdmZzX2ZpbGU6OmdldF9hcmNidWYodm9pZCoga2V5LCBvZmZfdCBvZmZzZXQpCj4gK3sK
PiArICAgIHN0cnVjdCB2bm9kZSAqdnAgPSBmX2RlbnRyeS0+ZF92bm9kZTsKPiArCj4gKyAgICBp
b3ZlYyBpb1sxXTsKPiArCj4gKyAgICBpb1swXS5pb3ZfYmFzZSA9IGtleTsKPiArICAgIHVpbyBk
YXRhOwo+ICsgICAgZGF0YS51aW9faW92ID0gaW87Cj4gKyAgICBkYXRhLnVpb19pb3ZjbnQgPSAx
Owo+ICsgICAgZGF0YS51aW9fb2Zmc2V0ID0gb2Zmc2V0Owo+ICsgICAgZGF0YS51aW9fcmVzaWQg
PSBtbXU6OnBhZ2Vfc2l6ZTsKPiArICAgIGRhdGEudWlvX3J3ID0gVUlPX1JFQUQ7Cj4gKwo+ICsg
ICAgdm5fbG9jayh2cCk7Cj4gKyAgICBhc3NlcnQoVk9QX0NBQ0hFKHZwLCB0aGlzLCAmZGF0YSkg
PT0gMCk7Cj4gKyAgICB2bl91bmxvY2sodnApOwo+ICsKPiArICAgIHJldHVybiAoZGF0YS51aW9f
cmVzaWQgIT0gMCkgPyAtMSA6IDA7Cj4gK30KPiArCj4gK3N0ZDo6dW5pcXVlX3B0cjxtbXU6OmZp
bGVfdm1hPiB2ZnNfZmlsZTo6bW1hcChhZGRyX3JhbmdlIHJhbmdlLCB1bnNpZ25lZCBmbGFncywg
dW5zaWduZWQgcGVybSwgb2ZmX3Qgb2Zmc2V0KQo+ICt7Cj4gKwlhdXRvIGZwID0gdGhpczsKPiAr
CXN0cnVjdCB2bm9kZSAqdnAgPSBmcC0+Zl9kZW50cnktPmRfdm5vZGU7Cj4gKwlpZiAoIXZwLT52
X29wLT52b3BfY2FjaGUgfHwgKHZwLT52X3NpemUgPCAob2ZmX3QpbW11OjpwYWdlX3NpemUpKSB7
Cj4gKwkJcmV0dXJuIG1tdTo6ZGVmYXVsdF9maWxlX21tYXAodGhpcywgcmFuZ2UsIGZsYWdzLCBw
ZXJtLCBvZmZzZXQpOwo+ICsJfQo+ICsJcmV0dXJuIG1tdTo6bWFwX2ZpbGVfbW1hcCh0aGlzLCBy
YW5nZSwgZmxhZ3MsIHBlcm0sIG9mZnNldCk7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvbGliL3Zmc2Nv
cmUvaW5jbHVkZS92ZnNjb3JlL2RlbnRyeS5oIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3Jl
L2RlbnRyeS5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMC4uYTI1NDVh
ZjgKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2Rl
bnRyeS5oCj4gQEAgLTAsMCArMSw0NSBAQAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTQg
Q2xvdWRpdXMgU3lzdGVtcywgTHRkLgo+ICsgKgo+ICsgKiBUaGlzIHdvcmsgaXMgb3BlbiBzb3Vy
Y2Ugc29mdHdhcmUsIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUKPiArICogQlNEIGxp
Y2Vuc2UgYXMgZGVzY3JpYmVkIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHRvcC1sZXZlbCBk
aXJlY3RvcnkuCj4gKyAqLwo+ICsKPiArI2lmbmRlZiBfT1NWX0RFTlRSWV9ICj4gKyNkZWZpbmUg
X09TVl9ERU5UUllfSCAxCj4gKwo+ICsjaW5jbHVkZSA8b3N2L211dGV4Lmg+Cj4gKyNpbmNsdWRl
IDxic2Qvc3lzL3N5cy9xdWV1ZS5oPgo+ICsKPiArc3RydWN0IHZub2RlOwo+ICsKPiArc3RydWN0
IGRlbnRyeSB7Cj4gKwlMSVNUX0VOVFJZKGRlbnRyeSkgZF9saW5rOwkvKiBsaW5rIGZvciBoYXNo
IGxpc3QgKi8KPiArCWludAkJZF9yZWZjbnQ7CS8qIHJlZmVyZW5jZSBjb3VudCAqLwo+ICsJY2hh
cgkJKmRfcGF0aDsJLyogcG9pbnRlciB0byBwYXRoIGluIGZzICovCj4gKwlzdHJ1Y3Qgdm5vZGUJ
KmRfdm5vZGU7Cj4gKwlzdHJ1Y3QgbW91bnQJKmRfbW91bnQ7Cj4gKwlzdHJ1Y3QgZGVudHJ5ICAg
KmRfcGFyZW50OyAvKiBwb2ludGVyIHRvIHBhcmVudCAqLwo+ICsJTElTVF9FTlRSWShkZW50cnkp
IGRfbmFtZXNfbGluazsgLyogbGluayBmbyB2bm9kZTo6ZF9uYW1lcyAqLwo+ICsJbXV0ZXhfdAkJ
ZF9sb2NrOwo+ICsJTElTVF9IRUFEKCwgZGVudHJ5KSBkX2NoaWxkcmVuOwo+ICsJTElTVF9FTlRS
WShkZW50cnkpIGRfY2hpbGRyZW5fbGluazsKPiArfTsKPiArCj4gKyNpZmRlZiBfX2NwbHVzcGx1
cwo+ICsKPiArI2luY2x1ZGUgPGJvb3N0L2ludHJ1c2l2ZV9wdHIuaHBwPgo+ICsKPiArdXNpbmcg
ZGVudHJ5X3JlZiA9IGJvb3N0OjppbnRydXNpdmVfcHRyPGRlbnRyeT47Cj4gKwo+ICtleHRlcm4g
IkMiIHsKPiArICAgIHZvaWQgZHJlZihzdHJ1Y3QgZGVudHJ5KiBkcCk7Cj4gKyAgICB2b2lkIGRy
ZWxlKHN0cnVjdCBkZW50cnkqIGRwKTsKPiArfTsKPiArCj4gK2lubGluZSB2b2lkIGludHJ1c2l2
ZV9wdHJfYWRkX3JlZihkZW50cnkqIGRwKSB7IGRyZWYoZHApOyB9Cj4gK2lubGluZSB2b2lkIGlu
dHJ1c2l2ZV9wdHJfcmVsZWFzZShkZW50cnkqIGRwKSB7IGRyZWxlKGRwKTsgfQo+ICsKPiArI2Vu
ZGlmCj4gKwo+ICsjZW5kaWYgLyogX09TVl9ERU5UUllfSCAqLwo+IGRpZmYgLS1naXQgYS9saWIv
dmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvbW91bnQuaCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZz
Y29yZS9tb3VudC5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMC4uNzI2
OGQ4Y2UKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3Jl
L21vdW50LmgKPiBAQCAtMCwwICsxLDE3MSBAQAo+ICsvKi0KPiArICogQ29weXJpZ2h0IChjKSAx
OTg5LCAxOTkxLCAxOTkzCj4gKyAqCVRoZSBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENh
bGlmb3JuaWEuICBBbGwgcmlnaHRzIHJlc2VydmVkLgo+ICsgKgo+ICsgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKPiAr
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCj4gKyAqIGFyZSBtZXQ6Cj4gKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
PiArICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQo+ICsgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
Lgo+ICsgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBVbml2ZXJzaXR5IG5vciB0aGUgbmFt
ZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycwo+ICsgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKPiArICogICAgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCj4gKyAqCj4gKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIFJFR0VOVFMgQU5EIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5ECj4gKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQo+ICsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQo+ICsg
KiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBSRUdFTlRTIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUKPiArICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKPiArICogREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMKPiArICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCj4gKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCj4gKyAqIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkKPiArICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgo+ICsgKiBTVUNIIERBTUFHRS4KPiAr
ICoKPiArICoJQCgjKW1vdW50LmgJOC4yMSAoQmVya2VsZXkpIDUvMjAvOTUKPiArICovCj4gKwo+
ICsjaWZuZGVmIF9TWVNfTU9VTlRfSF8KPiArI2RlZmluZSBfU1lTX01PVU5UX0hfCj4gKwo+ICsj
aW5jbHVkZSA8c3lzL2NkZWZzLmg+Cj4gKyNpbmNsdWRlIDxzeXMvc3RhdGZzLmg+Cj4gKyNpbmNs
dWRlIDxvc3Yvdm5vZGUuaD4KPiArI2luY2x1ZGUgPGJzZC9zeXMvc3lzL3F1ZXVlLmg+Cj4gKwo+
ICtfX0JFR0lOX0RFQ0xTCj4gKwo+ICsjaWZkZWYgX0tFUk5FTAo+ICsKPiArLyoKPiArICogTW91
bnQgZGF0YQo+ICsgKi8KPiArc3RydWN0IG1vdW50IHsKPiArCXN0cnVjdCB2ZnNvcHMJKm1fb3A7
CQkvKiBwb2ludGVyIHRvIHZmcyBvcGVyYXRpb24gKi8KPiArCWludAkJbV9mbGFnczsJLyogbW91
bnQgZmxhZyAqLwo+ICsJaW50CQltX2NvdW50OwkvKiByZWZlcmVuY2UgY291bnQgKi8KPiArCWNo
YXIgICAgICAgICAgICBtX3BhdGhbUEFUSF9NQVhdOyAvKiBtb3VudGVkIHBhdGggKi8KPiArCWNo
YXIgICAgICAgICAgICBtX3NwZWNpYWxbUEFUSF9NQVhdOyAvKiByZXNvdXJjZSAqLwo+ICsJc3Ry
dWN0IGRldmljZQkqbV9kZXY7CQkvKiBtb3VudGVkIGRldmljZSAqLwo+ICsJc3RydWN0IGRlbnRy
eQkqbV9yb290OwkvKiByb290IHZub2RlICovCj4gKwlzdHJ1Y3QgZGVudHJ5CSptX2NvdmVyZWQ7
CS8qIHZub2RlIGNvdmVyZWQgb24gcGFyZW50IGZzICovCj4gKwl2b2lkCQkqbV9kYXRhOwkvKiBw
cml2YXRlIGRhdGEgZm9yIGZzICovCj4gKwlmc2lkX3QgCQltX2ZzaWQ7IAkvKiBpZCB0aGF0IHVu
aXF1ZWx5IGlkZW50aWZpZXMgdGhlIGZzICovCj4gK307Cj4gKwo+ICsjZW5kaWYKPiArCj4gKy8q
Cj4gKyAqIE1vdW50IGZsYWdzLgo+ICsgKi8KPiArI2RlZmluZQlNTlRfUkRPTkxZCTB4MDAwMDAw
MDEJLyogcmVhZCBvbmx5IGZpbGVzeXN0ZW0gKi8KPiArI2RlZmluZQlNTlRfU1lOQ0hST05PVVMJ
MHgwMDAwMDAwMgkvKiBmaWxlIHN5c3RlbSB3cml0dGVuIHN5bmNocm9ub3VzbHkgKi8KPiArI2Rl
ZmluZQlNTlRfTk9FWEVDCTB4MDAwMDAwMDQJLyogY2FuJ3QgZXhlYyBmcm9tIGZpbGVzeXN0ZW0g
Ki8KPiArI2RlZmluZQlNTlRfTk9TVUlECTB4MDAwMDAwMDgJLyogZG9uJ3QgaG9ub3Igc2V0dWlk
IGJpdHMgb24gZnMgKi8KPiArI2RlZmluZQlNTlRfTk9ERVYJMHgwMDAwMDAxMAkvKiBkb24ndCBp
bnRlcnByZXQgc3BlY2lhbCBmaWxlcyAqLwo+ICsjZGVmaW5lCU1OVF9VTklPTgkweDAwMDAwMDIw
CS8qIHVuaW9uIHdpdGggdW5kZXJseWluZyBmaWxlc3lzdGVtICovCj4gKyNkZWZpbmUJTU5UX0FT
WU5DCTB4MDAwMDAwNDAJLyogZmlsZSBzeXN0ZW0gd3JpdHRlbiBhc3luY2hyb25vdXNseSAqLwo+
ICsKPiArLyoKPiArICogVW5tb3VudCBmbGFncy4KPiArICovCj4gKyNkZWZpbmUgTU5UX0ZPUkNF
CTB4MDAwMDAwMDEJLyogZm9yY2VkIHVubW91bnQgKi8KPiArCj4gKy8qCj4gKyAqIGV4cG9ydGVk
IG1vdW50IGZsYWdzLgo+ICsgKi8KPiArI2RlZmluZQlNTlRfRVhSRE9OTFkJMHgwMDAwMDA4MAkv
KiBleHBvcnRlZCByZWFkIG9ubHkgKi8KPiArI2RlZmluZQlNTlRfRVhQT1JURUQJMHgwMDAwMDEw
MAkvKiBmaWxlIHN5c3RlbSBpcyBleHBvcnRlZCAqLwo+ICsjZGVmaW5lCU1OVF9ERUZFWFBPUlRF
RAkweDAwMDAwMjAwCS8qIGV4cG9ydGVkIHRvIHRoZSB3b3JsZCAqLwo+ICsjZGVmaW5lCU1OVF9F
WFBPUlRBTk9OCTB4MDAwMDA0MDAJLyogdXNlIGFub24gdWlkIG1hcHBpbmcgZm9yIGV2ZXJ5b25l
ICovCj4gKyNkZWZpbmUJTU5UX0VYS0VSQgkweDAwMDAwODAwCS8qIGV4cG9ydGVkIHdpdGggS2Vy
YmVyb3MgdWlkIG1hcHBpbmcgKi8KPiArCj4gKy8qCj4gKyAqIEZsYWdzIHNldCBieSBpbnRlcm5h
bCBvcGVyYXRpb25zLgo+ICsgKi8KPiArI2RlZmluZQlNTlRfTE9DQUwJMHgwMDAwMTAwMAkvKiBm
aWxlc3lzdGVtIGlzIHN0b3JlZCBsb2NhbGx5ICovCj4gKyNkZWZpbmUJTU5UX1FVT1RBCTB4MDAw
MDIwMDAJLyogcXVvdGFzIGFyZSBlbmFibGVkIG9uIGZpbGVzeXN0ZW0gKi8KPiArI2RlZmluZQlN
TlRfUk9PVEZTCTB4MDAwMDQwMDAJLyogaWRlbnRpZmllcyB0aGUgcm9vdCBmaWxlc3lzdGVtICov
Cj4gKwo+ICsvKgo+ICsgKiBNYXNrIG9mIGZsYWdzIHRoYXQgYXJlIHZpc2libGUgdG8gc3RhdGZz
KCkKPiArICovCj4gKyNkZWZpbmUJTU5UX1ZJU0ZMQUdNQVNLCTB4MDAwMGZmZmYKPiArCj4gKyNp
ZmRlZiBfS0VSTkVMCj4gKwo+ICsvKgo+ICsgKiBGaWxlc3lzdGVtIHR5cGUgc3dpdGNoIHRhYmxl
Lgo+ICsgKi8KPiArc3RydWN0IHZmc3N3IHsKPiArCWNvbnN0IGNoYXIgICAgICAqdnNfbmFtZTsJ
LyogbmFtZSBvZiBmaWxlIHN5c3RlbSAqLwo+ICsJaW50CQkoKnZzX2luaXQpKHZvaWQpOyAvKiBp
bml0aWFsaXplIHJvdXRpbmUgKi8KPiArCXN0cnVjdCB2ZnNvcHMJKnZzX29wOwkJLyogcG9pbnRl
ciB0byB2ZnMgb3BlcmF0aW9uICovCj4gK307Cj4gKwo+ICsvKgo+ICsgKiBPcGVyYXRpb25zIHN1
cHBvcnRlZCBvbiB2aXJ0dWFsIGZpbGUgc3lzdGVtLgo+ICsgKi8KPiArc3RydWN0IHZmc29wcyB7
Cj4gKwlpbnQgKCp2ZnNfbW91bnQpCShzdHJ1Y3QgbW91bnQgKiwgY29uc3QgY2hhciAqLCBpbnQs
IGNvbnN0IHZvaWQgKik7Cj4gKwlpbnQgKCp2ZnNfdW5tb3VudCkJKHN0cnVjdCBtb3VudCAqLCBp
bnQgZmxhZ3MpOwo+ICsJaW50ICgqdmZzX3N5bmMpCQkoc3RydWN0IG1vdW50ICopOwo+ICsJaW50
ICgqdmZzX3ZnZXQpCQkoc3RydWN0IG1vdW50ICosIHN0cnVjdCB2bm9kZSAqKTsKPiArCWludCAo
KnZmc19zdGF0ZnMpCShzdHJ1Y3QgbW91bnQgKiwgc3RydWN0IHN0YXRmcyAqKTsKPiArCXN0cnVj
dCB2bm9wcwkqdmZzX3Zub3BzOwo+ICt9Owo+ICsKPiArdHlwZWRlZiBpbnQgKCp2ZnNvcF9tb3Vu
dF90KShzdHJ1Y3QgbW91bnQgKiwgY29uc3QgY2hhciAqLCBpbnQsIGNvbnN0IHZvaWQgKik7Cj4g
K3R5cGVkZWYgaW50ICgqdmZzb3BfdW1vdW50X3QpKHN0cnVjdCBtb3VudCAqLCBpbnQgZmxhZ3Mp
Owo+ICt0eXBlZGVmIGludCAoKnZmc29wX3N5bmNfdCkoc3RydWN0IG1vdW50ICopOwo+ICt0eXBl
ZGVmIGludCAoKnZmc29wX3ZnZXRfdCkoc3RydWN0IG1vdW50ICosIHN0cnVjdCB2bm9kZSAqKTsK
PiArdHlwZWRlZiBpbnQgKCp2ZnNvcF9zdGF0ZnNfdCkoc3RydWN0IG1vdW50ICosIHN0cnVjdCBz
dGF0ZnMgKik7Cj4gKwo+ICsvKgo+ICsgKiBWRlMgaW50ZXJmYWNlCj4gKyAqLwo+ICsjZGVmaW5l
IFZGU19NT1VOVChNUCwgREVWLCBGTCwgREFUKSAoKE1QKS0+bV9vcC0+dmZzX21vdW50KShNUCwg
REVWLCBGTCwgREFUKQo+ICsjZGVmaW5lIFZGU19VTk1PVU5UKE1QLCBGTCkgICAgICAgICAoKE1Q
KS0+bV9vcC0+dmZzX3VubW91bnQpKE1QLCBGTCkKPiArI2RlZmluZSBWRlNfU1lOQyhNUCkgICAg
ICAgICAgICAgICAgKChNUCktPm1fb3AtPnZmc19zeW5jKShNUCkKPiArI2RlZmluZSBWRlNfVkdF
VChNUCwgVlApICAgICAgICAgICAgKChNUCktPm1fb3AtPnZmc192Z2V0KShNUCwgVlApCj4gKyNk
ZWZpbmUgVkZTX1NUQVRGUyhNUCwgU0ZQKSAgICAgICAgICgoTVApLT5tX29wLT52ZnNfc3RhdGZz
KShNUCwgU0ZQKQo+ICsKPiArI2RlZmluZSBWRlNfTlVMTAkJICAgICgodm9pZCAqKXZmc19udWxs
KQo+ICsKPiAraW50CXZmc19udWxsb3Aodm9pZCk7Cj4gK2ludAl2ZnNfZWludmFsKHZvaWQpOwo+
ICsKPiArdm9pZAkgdmZzX2J1c3koc3RydWN0IG1vdW50ICptcCk7Cj4gK3ZvaWQJIHZmc191bmJ1
c3koc3RydWN0IG1vdW50ICptcCk7Cj4gKwo+ICt2b2lkCSByZWxlYXNlX21wX2RlbnRyaWVzKHN0
cnVjdCBtb3VudCAqbXApOwo+ICsKPiArI2VuZGlmCj4gKwo+ICtfX0VORF9ERUNMUwo+ICsKPiAr
I2lmZGVmIF9fY3BsdXNwbHVzCj4gKwo+ICsjaW5jbHVkZSA8dmVjdG9yPgo+ICsjaW5jbHVkZSA8
c3RyaW5nPgo+ICsKPiArbmFtZXNwYWNlIG9zdiB7Cj4gKwo+ICtzdHJ1Y3QgbW91bnRfZGVzYyB7
Cj4gKyAgICBzdGQ6OnN0cmluZyBzcGVjaWFsOwo+ICsgICAgc3RkOjpzdHJpbmcgcGF0aDsKPiAr
ICAgIHN0ZDo6c3RyaW5nIHR5cGU7Cj4gKyAgICBzdGQ6OnN0cmluZyBvcHRpb25zOwo+ICt9Owo+
ICsKPiArc3RkOjp2ZWN0b3I8bW91bnRfZGVzYz4gY3VycmVudF9tb3VudHMoKTsKPiArCj4gK30K
PiArCj4gKyNlbmRpZgo+ICsKPiArI2VuZGlmCS8qICFfU1lTX01PVU5UX0hfICovCj4gZGlmZiAt
LWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9wcmV4LmggYi9saWIvdmZzY29yZS9p
bmNsdWRlL3Zmc2NvcmUvcHJleC5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAw
MDAwMC4uNDM2NTAzNDAKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvbGliL3Zmc2NvcmUvaW5jbHVk
ZS92ZnNjb3JlL3ByZXguaAo+IEBAIC0wLDAgKzEsMzQgQEAKPiArLyoKPiArICogQ29weXJpZ2h0
IChDKSAyMDEzIENsb3VkaXVzIFN5c3RlbXMsIEx0ZC4KPiArICoKPiArICogVGhpcyB3b3JrIGlz
IG9wZW4gc291cmNlIHNvZnR3YXJlLCBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlCj4g
KyAqIEJTRCBsaWNlbnNlIGFzIGRlc2NyaWJlZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSB0
b3AtbGV2ZWwgZGlyZWN0b3J5Lgo+ICsgKi8KPiArCj4gKyNpZm5kZWYgX09TVl9QUkVYX0gKPiAr
I2RlZmluZSBfT1NWX1BSRVhfSCAxCj4gKwo+ICsKPiArI2luY2x1ZGUgPHVuaXN0ZC5oPgo+ICsj
aW5jbHVkZSA8b3N2L2ZjbnRsLmg+Cj4gKwo+ICtfX0JFR0lOX0RFQ0xTCj4gKwo+ICsjZGVmaW5l
IF9fcGFja2VkICAgICAgICBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fKSkKPiArCj4gKyNkZWZp
bmUJQlNJWkUJNTEyCQkvKiBzaXplIG9mIHNlY29uZGFyeSBibG9jayAoYnl0ZXMpICovCj4gKwo+
ICsjZGVmaW5lIERPX1JEV1IJCTB4Mgo+ICsKPiArI2RlZmluZSBQQUdFX1NJWkUJNDA5Ngo+ICsj
ZGVmaW5lIFBBR0VfTUFTSwkoUEFHRV9TSVpFLTEpCj4gKyNkZWZpbmUgcm91bmRfcGFnZSh4KQko
KCh4KSArIFBBR0VfTUFTSykgJiB+UEFHRV9NQVNLKQo+ICsKPiArc2l6ZV90IHN0cmxjYXQoY2hh
ciAqZHN0LCBjb25zdCBjaGFyICpzcmMsIHNpemVfdCBzaXopOwo+ICtzaXplX3Qgc3RybGNweShj
aGFyICpkc3QsIGNvbnN0IGNoYXIgKnNyYywgc2l6ZV90IHNpeik7Cj4gKwo+ICt2b2lkIHN5c19w
YW5pYyhjb25zdCBjaGFyICopOwo+ICsKPiArX19FTkRfREVDTFMKPiArCj4gKyNlbmRpZiAvKiBf
T1NWX1BSRVhfSCAqLwo+IGRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUv
dWlvLmggYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdWlvLmgKPiBuZXcgZmlsZSBtb2Rl
IDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwLi42OTZiMDFjZgo+IC0tLSAvZGV2L251bGwKPiArKysg
Yi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdWlvLmgKPiBAQCAtMCwwICsxLDg5IEBACj4g
Ky8qLQo+ICsgKiBDb3B5cmlnaHQgKGMpIDE5ODIsIDE5ODYsIDE5OTMsIDE5OTQKPiArICoJVGhl
IFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCj4gKyAqCj4gKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAo+ICsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKPiArICogYXJlIG1l
dDoKPiArICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgo+ICsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCj4gKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCj4gKyAqIDQuIE5laXRoZXIgdGhlIG5h
bWUgb2YgdGhlIFVuaXZlcnNpdHkgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCj4g
KyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20gdGhpcyBzb2Z0d2FyZQo+ICsgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KPiArICoKPiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgUkVHRU5UUyBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKPiArICogQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCj4gKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCj4gKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIFJFR0VOVFMgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQo+ICsgKiBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTAo+ICsgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwo+ICsgKiBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikK
PiArICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QKPiArICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQo+ICsgKiBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GCj4gKyAqIFNVQ0ggREFNQUdFLgo+ICsgKgo+ICsgKglAKCMpdWlvLmgJOC41IChC
ZXJrZWxleSkgMi8yMi85NAo+ICsgKiAkRnJlZUJTRCQKPiArICovCj4gKwo+ICsjaWZuZGVmIF9V
SU9fSF8KPiArI2RlZmluZQlfVUlPX0hfCj4gKwo+ICsjaW5jbHVkZSA8c3lzL2NkZWZzLmg+Cj4g
KyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KPiArI2luY2x1ZGUgPHN5cy91aW8uaD4KPiArI2luY2x1
ZGUgPGxpbWl0cy5oPgo+ICsKPiArX19CRUdJTl9ERUNMUwo+ICsKPiArZW51bQl1aW9fcncgeyBV
SU9fUkVBRCwgVUlPX1dSSVRFIH07Cj4gKwo+ICsvKgo+ICsgKiBTYWZlIGRlZmF1bHQgdG8gcHJl
dmVudCBwb3NzaWJsZSBvdmVyZmxvd3MgaW4gdXNlciBjb2RlLCBvdGhlcndpc2UgY291bGQKPiAr
ICogYmUgU1NJWkVfVF9NQVguCj4gKyAqLwo+ICsjZGVmaW5lIElPU0laRV9NQVggICAgICBJTlRf
TUFYCj4gKwo+ICsjZGVmaW5lIFVJT19NQVhJT1YgMTAyNAo+ICsKPiArI2RlZmluZSBVSU9fU1lT
U1BBQ0UgMAo+ICsKPiArc3RydWN0IHVpbyB7Cj4gKwlzdHJ1Y3QgaW92ZWMgKnVpb19pb3Y7CQkv
KiBzY2F0dGVyL2dhdGhlciBsaXN0ICovCj4gKwlpbnQJdWlvX2lvdmNudDsJCS8qIGxlbmd0aCBv
ZiBzY2F0dGVyL2dhdGhlciBsaXN0ICovCj4gKwlvZmZfdAl1aW9fb2Zmc2V0OwkJLyogb2Zmc2V0
IGluIHRhcmdldCBvYmplY3QgKi8KPiArCXNzaXplX3QJdWlvX3Jlc2lkOwkJLyogcmVtYWluaW5n
IGJ5dGVzIHRvIHByb2Nlc3MgKi8KPiArCWVudW0JdWlvX3J3IHVpb19ydzsJCS8qIG9wZXJhdGlv
biAqLwo+ICt9Owo+ICsKPiAraW50CXVpb21vdmUodm9pZCAqY3AsIGludCBuLCBzdHJ1Y3QgdWlv
ICp1aW8pOwo+ICsKPiArX19FTkRfREVDTFMKPiArCj4gKyNpZmRlZiBfX2NwbHVzcGx1cwo+ICsK
PiArdGVtcGxhdGUgPHR5cGVuYW1lIEY+Cj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBsaW5lYXJpemVf
dWlvX3dyaXRlKHN0cnVjdCB1aW8gKnVpbywgaW50IGlvZmxhZywgRiBmKQo+ICt7Cj4gKyAgICB3
aGlsZSAodWlvLT51aW9fcmVzaWQgPiAwKSB7Cj4gKyAgICAgICAgc3RydWN0IGlvdmVjICppb3Yg
PSB1aW8tPnVpb19pb3Y7Cj4gKwo+ICsgICAgICAgIGlmIChpb3YtPmlvdl9sZW4pIHsKPiArICAg
ICAgICAgICAgZihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIgKj4oaW92LT5pb3ZfYmFzZSks
Cj4gKyAgICAgICAgICAgICAgICBpb3YtPmlvdl9sZW4pOwo+ICsgICAgICAgIH0KPiArCj4gKyAg
ICAgICAgdWlvLT51aW9faW92Kys7Cj4gKyAgICAgICAgdWlvLT51aW9faW92Y250LS07Cj4gKyAg
ICAgICAgdWlvLT51aW9fcmVzaWQgLT0gaW92LT5pb3ZfbGVuOwo+ICsgICAgICAgIHVpby0+dWlv
X29mZnNldCArPSBpb3YtPmlvdl9sZW47Cj4gKyAgICB9Cj4gK30KPiArCj4gKyNlbmRpZgo+ICsK
PiArI2VuZGlmIC8qICFfVUlPX0hfICovCj4gZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1
ZGUvdmZzY29yZS92bm9kZS5oIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Zub2RlLmgK
PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwLi5lMzVhYTgzMAo+IC0tLSAv
ZGV2L251bGwKPiArKysgYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUuaAo+IEBA
IC0wLDAgKzEsMjQ2IEBACj4gKy8qCj4gKyAqIENvcHlyaWdodCAoYykgMjAwNS0yMDA3LCBLb2hz
dWtlIE9odGFuaQo+ICsgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgo+ICsgKgo+ICsgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKPiArICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCj4gKyAqIGFyZSBtZXQ6Cj4gKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KPiArICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQo+ICsgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgo+ICsgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBhdXRob3Igbm9yIHRoZSBu
YW1lcyBvZiBhbnkgY28tY29udHJpYnV0b3JzCj4gKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQo+ICsgKiAg
ICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KPiArICoKPiArICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORAo+ICsgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKPiArICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UK
PiArICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUKPiArICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKPiArICogREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMKPiArICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCj4gKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCj4gKyAq
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkKPiArICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgo+ICsgKiBTVUNIIERBTUFHRS4K
PiArICovCj4gKwo+ICsjaWZuZGVmIF9TWVNfVk5PREVfSF8KPiArI2RlZmluZSBfU1lTX1ZOT0RF
X0hfCj4gKwo+ICsjaWZkZWYgX0tFUk5FTAo+ICsKPiArI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgo+
ICsjaW5jbHVkZSA8c3lzL3N0YXQuaD4KPiArI2luY2x1ZGUgPG9zdi9wcmV4Lmg+Cj4gKyNpbmNs
dWRlIDxvc3YvdWlvLmg+Cj4gKyNpbmNsdWRlIDxvc3YvbXV0ZXguaD4KPiArI2luY2x1ZGUgImZp
bGUuaCIKPiArI2luY2x1ZGUgImRpcmVudC5oIgo+ICsKPiArX19CRUdJTl9ERUNMUwo+ICsKPiAr
c3RydWN0IHZmc29wczsKPiArc3RydWN0IHZub3BzOwo+ICtzdHJ1Y3Qgdm5vZGU7Cj4gK3N0cnVj
dCBmaWxlOwo+ICsKPiArLyoKPiArICogVm5vZGUgdHlwZXMuCj4gKyAqLwo+ICtlbnVtIHZ0eXBl
IHsKPiArCVZOT04sCSAgICAvKiBubyB0eXBlICovCj4gKwlWUkVHLAkgICAgLyogcmVndWxhciBm
aWxlICAqLwo+ICsJVkRJUiwJICAgIC8qIGRpcmVjdG9yeSAqLwo+ICsJVkJMSywJICAgIC8qIGJs
b2NrIGRldmljZSAqLwo+ICsJVkNIUiwJICAgIC8qIGNoYXJhY3RlciBkZXZpY2UgKi8KPiArCVZM
TkssCSAgICAvKiBzeW1ib2xpYyBsaW5rICovCj4gKwlWU09DSywJICAgIC8qIHNvY2tzICovCj4g
KwlWRklGTywJICAgIC8qIEZJRk8gKi8KPiArCVZCQUQKPiArfTsKPiArCj4gKy8qCj4gKyAqIFJl
YWRpbmcgb3Igd3JpdGluZyBhbnkgb2YgdGhlc2UgaXRlbXMgcmVxdWlyZXMgaG9sZGluZyB0aGUK
PiArICogYXBwcm9wcmlhdGUgbG9jay4KPiArICovCj4gK3N0cnVjdCB2bm9kZSB7Cj4gKwl1aW50
NjRfdAl2X2lubzsJCS8qIGlub2RlIG51bWJlciAqLwo+ICsJTElTVF9FTlRSWSh2bm9kZSkgdl9s
aW5rOwkvKiBsaW5rIGZvciBoYXNoIGxpc3QgKi8KPiArCXN0cnVjdCBtb3VudAkqdl9tb3VudDsJ
LyogbW91bnRlZCB2ZnMgcG9pbnRlciAqLwo+ICsJc3RydWN0IHZub3BzCSp2X29wOwkJLyogdm5v
ZGUgb3BlcmF0aW9ucyAqLwo+ICsJaW50CQl2X3JlZmNudDsJLyogcmVmZXJlbmNlIGNvdW50ICov
Cj4gKwlpbnQJCXZfdHlwZTsJCS8qIHZub2RlIHR5cGUgKi8KPiArCWludAkJdl9mbGFnczsJLyog
dm5vZGUgZmxhZyAqLwo+ICsJbW9kZV90CQl2X21vZGU7CQkvKiBmaWxlIG1vZGUgKi8KPiArCW9m
Zl90CQl2X3NpemU7CQkvKiBmaWxlIHNpemUgKi8KPiArCW11dGV4X3QJCXZfbG9jazsJCS8qIGxv
Y2sgZm9yIHRoaXMgdm5vZGUgKi8KPiArCUxJU1RfSEVBRCgsIGRlbnRyeSkgdl9uYW1lczsJLyog
ZGlyZWN0b3J5IGVudHJpZXMgcG9pbnRpbmcgYXQgdGhpcyAqLwo+ICsJaW50CQl2X25ybG9ja3M7
CS8qIGxvY2sgY291bnQgKGZvciBkZWJ1ZykgKi8KPiArCXZvaWQJCSp2X2RhdGE7CS8qIHByaXZh
dGUgZGF0YSBmb3IgZnMgKi8KPiArfTsKPiArCj4gKy8qIGZsYWdzIGZvciB2bm9kZSAqLwo+ICsj
ZGVmaW5lIFZST09UCQkweDAwMDEJCS8qIHJvb3Qgb2YgaXRzIGZpbGUgc3lzdGVtICovCj4gKyNk
ZWZpbmUgVklTVFRZCQkweDAwMDIJCS8qIGRldmljZSBpcyB0dHkgKi8KPiArI2RlZmluZSBWUFJP
VERFVgkweDAwMDQJCS8qIHByb3RlY3RlZCBkZXZpY2UgKi8KPiArCj4gKy8qCj4gKyAqIFZub2Rl
IGF0dHJpYnV0ZQo+ICsgKi8KPiArc3RydWN0IHZhdHRyIHsKPiArCXVuc2lnbmVkIGludAl2YV9t
YXNrOwo+ICsJZW51bSB2dHlwZQl2YV90eXBlOwkvKiB2bm9kZSB0eXBlICovCj4gKwltb2RlX3QJ
CXZhX21vZGU7CS8qIGZpbGUgYWNjZXNzIG1vZGUgKi8KPiArCW5saW5rX3QJCXZhX25saW5rOwo+
ICsJdWlkX3QJCXZhX3VpZDsKPiArCWdpZF90CQl2YV9naWQ7Cj4gKwlkZXZfdCAgICAgICAgICAg
dmFfZnNpZDsgICAgICAgIC8qIGlkIG9mIHRoZSB1bmRlcmx5aW5nIGZpbGVzeXN0ZW0gKi8KPiAr
CWlub190CQl2YV9ub2RlaWQ7Cj4gKwlzdHJ1Y3QgdGltZXNwZWMJdmFfYXRpbWU7Cj4gKwlzdHJ1
Y3QgdGltZXNwZWMJdmFfbXRpbWU7Cj4gKwlzdHJ1Y3QgdGltZXNwZWMJdmFfY3RpbWU7Cj4gKwlk
ZXZfdAkJdmFfcmRldjsKPiArCXVpbnQ2NF90CXZhX25ibG9ja3M7Cj4gKwlvZmZfdAkJdmFfc2l6
ZTsKPiArfTsKPiArCj4gKy8qCj4gKyAqICBNb2Rlcy4KPiArICovCj4gKyNkZWZpbmUgVkFQUEVO
RCAwMDAxMAo+ICsjZGVmaW5lCVZSRUFECTAwMDA0CQkvKiByZWFkLCB3cml0ZSwgZXhlY3V0ZSBw
ZXJtaXNzaW9ucyAqLwo+ICsjZGVmaW5lCVZXUklURQkwMDAwMgo+ICsjZGVmaW5lCVZFWEVDCTAw
MDAxCj4gKwo+ICsjZGVmaW5lIElPX0FQUEVORAkweDAwMDEKPiArI2RlZmluZSBJT19TWU5DCQkw
eDAwMDIKPiArCj4gKy8qCj4gKyAqIEFSQyBhY3Rpb25zCj4gKyAqLwo+ICsjZGVmaW5lIEFSQ19B
Q1RJT05fUVVFUlkgICAgMAo+ICsjZGVmaW5lIEFSQ19BQ1RJT05fSE9MRCAgICAgMQo+ICsjZGVm
aW5lIEFSQ19BQ1RJT05fUkVMRUFTRSAgMgo+ICsKPiArdHlwZWRlZglpbnQgKCp2bm9wX29wZW5f
dCkJKHN0cnVjdCBmaWxlICopOwo+ICt0eXBlZGVmCWludCAoKnZub3BfY2xvc2VfdCkJKHN0cnVj
dCB2bm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTsKPiArdHlwZWRlZglpbnQgKCp2bm9wX3JlYWRfdCkJ
KHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgdWlvICosIGludCk7Cj4gK3R5
cGVkZWYJaW50ICgqdm5vcF93cml0ZV90KQkoc3RydWN0IHZub2RlICosIHN0cnVjdCB1aW8gKiwg
aW50KTsKPiArdHlwZWRlZglpbnQgKCp2bm9wX3NlZWtfdCkJKHN0cnVjdCB2bm9kZSAqLCBzdHJ1
Y3QgZmlsZSAqLCBvZmZfdCwgb2ZmX3QpOwo+ICt0eXBlZGVmCWludCAoKnZub3BfaW9jdGxfdCkJ
KHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgZmlsZSAqLCB1X2xvbmcsIHZvaWQgKik7Cj4gK3R5cGVk
ZWYJaW50ICgqdm5vcF9mc3luY190KQkoc3RydWN0IHZub2RlICosIHN0cnVjdCBmaWxlICopOwo+
ICt0eXBlZGVmCWludCAoKnZub3BfcmVhZGRpcl90KQkoc3RydWN0IHZub2RlICosIHN0cnVjdCBm
aWxlICosIHN0cnVjdCBkaXJlbnQgKik7Cj4gK3R5cGVkZWYJaW50ICgqdm5vcF9sb29rdXBfdCkJ
KHN0cnVjdCB2bm9kZSAqLCBjaGFyICosIHN0cnVjdCB2bm9kZSAqKik7Cj4gK3R5cGVkZWYJaW50
ICgqdm5vcF9jcmVhdGVfdCkJKHN0cnVjdCB2bm9kZSAqLCBjaGFyICosIG1vZGVfdCk7Cj4gK3R5
cGVkZWYJaW50ICgqdm5vcF9yZW1vdmVfdCkJKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3Qgdm5vZGUg
KiwgY2hhciAqKTsKPiArdHlwZWRlZglpbnQgKCp2bm9wX3JlbmFtZV90KQkoc3RydWN0IHZub2Rl
ICosIHN0cnVjdCB2bm9kZSAqLCBjaGFyICosCj4gKwkJCQkgc3RydWN0IHZub2RlICosIHN0cnVj
dCB2bm9kZSAqLCBjaGFyICopOwo+ICt0eXBlZGVmCWludCAoKnZub3BfbWtkaXJfdCkJKHN0cnVj
dCB2bm9kZSAqLCBjaGFyICosIG1vZGVfdCk7Cj4gK3R5cGVkZWYJaW50ICgqdm5vcF9ybWRpcl90
KQkoc3RydWN0IHZub2RlICosIHN0cnVjdCB2bm9kZSAqLCBjaGFyICopOwo+ICt0eXBlZGVmCWlu
dCAoKnZub3BfZ2V0YXR0cl90KQkoc3RydWN0IHZub2RlICosIHN0cnVjdCB2YXR0ciAqKTsKPiAr
dHlwZWRlZglpbnQgKCp2bm9wX3NldGF0dHJfdCkJKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgdmF0
dHIgKik7Cj4gK3R5cGVkZWYJaW50ICgqdm5vcF9pbmFjdGl2ZV90KQkoc3RydWN0IHZub2RlICop
Owo+ICt0eXBlZGVmCWludCAoKnZub3BfdHJ1bmNhdGVfdCkJKHN0cnVjdCB2bm9kZSAqLCBvZmZf
dCk7Cj4gK3R5cGVkZWYJaW50ICgqdm5vcF9saW5rX3QpICAgICAgKHN0cnVjdCB2bm9kZSAqLCBz
dHJ1Y3Qgdm5vZGUgKiwgY2hhciAqKTsKPiArdHlwZWRlZiBpbnQgKCp2bm9wX2NhY2hlX3QpIChz
dHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IGZpbGUgKiwgc3RydWN0IHVpbyAqKTsKPiArdHlwZWRlZiBp
bnQgKCp2bm9wX2ZhbGxvY2F0ZV90KSAoc3RydWN0IHZub2RlICosIGludCwgbG9mZl90LCBsb2Zm
X3QpOwo+ICt0eXBlZGVmIGludCAoKnZub3BfcmVhZGxpbmtfdCkgIChzdHJ1Y3Qgdm5vZGUgKiwg
c3RydWN0IHVpbyAqKTsKPiArdHlwZWRlZiBpbnQgKCp2bm9wX3N5bWxpbmtfdCkgICAoc3RydWN0
IHZub2RlICosIGNoYXIgKiwgY2hhciAqKTsKPiArCj4gKy8qCj4gKyAqIHZub2RlIG9wZXJhdGlv
bnMKPiArICovCj4gK3N0cnVjdCB2bm9wcyB7Cj4gKwl2bm9wX29wZW5fdAkJdm9wX29wZW47Cj4g
Kwl2bm9wX2Nsb3NlX3QJCXZvcF9jbG9zZTsKPiArCXZub3BfcmVhZF90CQl2b3BfcmVhZDsKPiAr
CXZub3Bfd3JpdGVfdAkJdm9wX3dyaXRlOwo+ICsJdm5vcF9zZWVrX3QJCXZvcF9zZWVrOwo+ICsJ
dm5vcF9pb2N0bF90CQl2b3BfaW9jdGw7Cj4gKwl2bm9wX2ZzeW5jX3QJCXZvcF9mc3luYzsKPiAr
CXZub3BfcmVhZGRpcl90CQl2b3BfcmVhZGRpcjsKPiArCXZub3BfbG9va3VwX3QJCXZvcF9sb29r
dXA7Cj4gKwl2bm9wX2NyZWF0ZV90CQl2b3BfY3JlYXRlOwo+ICsJdm5vcF9yZW1vdmVfdAkJdm9w
X3JlbW92ZTsKPiArCXZub3BfcmVuYW1lX3QJCXZvcF9yZW5hbWU7Cj4gKwl2bm9wX21rZGlyX3QJ
CXZvcF9ta2RpcjsKPiArCXZub3Bfcm1kaXJfdAkJdm9wX3JtZGlyOwo+ICsJdm5vcF9nZXRhdHRy
X3QJCXZvcF9nZXRhdHRyOwo+ICsJdm5vcF9zZXRhdHRyX3QJCXZvcF9zZXRhdHRyOwo+ICsJdm5v
cF9pbmFjdGl2ZV90CQl2b3BfaW5hY3RpdmU7Cj4gKwl2bm9wX3RydW5jYXRlX3QJCXZvcF90cnVu
Y2F0ZTsKPiArCXZub3BfbGlua190CQl2b3BfbGluazsKPiArCXZub3BfY2FjaGVfdAkJdm9wX2Nh
Y2hlOwo+ICsJdm5vcF9mYWxsb2NhdGVfdAl2b3BfZmFsbG9jYXRlOwo+ICsJdm5vcF9yZWFkbGlu
a190CQl2b3BfcmVhZGxpbms7Cj4gKwl2bm9wX3N5bWxpbmtfdAkJdm9wX3N5bWxpbms7Cj4gK307
Cj4gKwo+ICsvKgo+ICsgKiB2bm9kZSBpbnRlcmZhY2UKPiArICovCj4gKyNkZWZpbmUgVk9QX09Q
RU4oVlAsIEZQKQkgICAoKFZQKS0+dl9vcC0+dm9wX29wZW4pKEZQKQo+ICsjZGVmaW5lIFZPUF9D
TE9TRShWUCwgRlApCSAgICgoVlApLT52X29wLT52b3BfY2xvc2UpKFZQLCBGUCkKPiArI2RlZmlu
ZSBWT1BfUkVBRChWUCwgRlAsIFUsIEYpCSAgICgoVlApLT52X29wLT52b3BfcmVhZCkoVlAsIEZQ
LCBVLCBGKQo+ICsjZGVmaW5lIFZPUF9DQUNIRShWUCwgRlAsIFUpCSAgICgoVlApLT52X29wLT52
b3BfY2FjaGUpKFZQLCBGUCwgVSkKPiArI2RlZmluZSBWT1BfV1JJVEUoVlAsIFUsIEYpCSAgICgo
VlApLT52X29wLT52b3Bfd3JpdGUpKFZQLCBVLCBGKQo+ICsjZGVmaW5lIFZPUF9TRUVLKFZQLCBG
UCwgT0xELCBORVcpICgoVlApLT52X29wLT52b3Bfc2VlaykoVlAsIEZQLCBPTEQsIE5FVykKPiAr
I2RlZmluZSBWT1BfSU9DVEwoVlAsIEZQLCBDLCBBKQkgICAoKFZQKS0+dl9vcC0+dm9wX2lvY3Rs
KShWUCwgRlAsIEMsIEEpCj4gKyNkZWZpbmUgVk9QX0ZTWU5DKFZQLCBGUCkJICAgKChWUCktPnZf
b3AtPnZvcF9mc3luYykoVlAsIEZQKQo+ICsjZGVmaW5lIFZPUF9SRUFERElSKFZQLCBGUCwgRElS
KSAgICgoVlApLT52X29wLT52b3BfcmVhZGRpcikoVlAsIEZQLCBESVIpCj4gKyNkZWZpbmUgVk9Q
X0xPT0tVUChEVlAsIE4sIFZQKQkgICAoKERWUCktPnZfb3AtPnZvcF9sb29rdXApKERWUCwgTiwg
VlApCj4gKyNkZWZpbmUgVk9QX0NSRUFURShEVlAsIE4sIE0pCSAgICgoRFZQKS0+dl9vcC0+dm9w
X2NyZWF0ZSkoRFZQLCBOLCBNKQo+ICsjZGVmaW5lIFZPUF9SRU1PVkUoRFZQLCBWUCwgTikJICAg
KChEVlApLT52X29wLT52b3BfcmVtb3ZlKShEVlAsIFZQLCBOKQo+ICsjZGVmaW5lIFZPUF9SRU5B
TUUoRFZQMSwgVlAxLCBOMSwgRFZQMiwgVlAyLCBOMikgXAo+ICsJCQkgICAoKERWUDEpLT52X29w
LT52b3BfcmVuYW1lKShEVlAxLCBWUDEsIE4xLCBEVlAyLCBWUDIsIE4yKQo+ICsjZGVmaW5lIFZP
UF9NS0RJUihEVlAsIE4sIE0pCSAgICgoRFZQKS0+dl9vcC0+dm9wX21rZGlyKShEVlAsIE4sIE0p
Cj4gKyNkZWZpbmUgVk9QX1JNRElSKERWUCwgVlAsIE4pCSAgICgoRFZQKS0+dl9vcC0+dm9wX3Jt
ZGlyKShEVlAsIFZQLCBOKQo+ICsjZGVmaW5lIFZPUF9HRVRBVFRSKFZQLCBWQVApCSAgICgoVlAp
LT52X29wLT52b3BfZ2V0YXR0cikoVlAsIFZBUCkKPiArI2RlZmluZSBWT1BfU0VUQVRUUihWUCwg
VkFQKQkgICAoKFZQKS0+dl9vcC0+dm9wX3NldGF0dHIpKFZQLCBWQVApCj4gKyNkZWZpbmUgVk9Q
X0lOQUNUSVZFKFZQKQkgICAoKFZQKS0+dl9vcC0+dm9wX2luYWN0aXZlKShWUCkKPiArI2RlZmlu
ZSBWT1BfVFJVTkNBVEUoVlAsIE4pCSAgICgoVlApLT52X29wLT52b3BfdHJ1bmNhdGUpKFZQLCBO
KQo+ICsjZGVmaW5lIFZPUF9MSU5LKERWUCwgU1ZQLCBOKSAJICAgKChEVlApLT52X29wLT52b3Bf
bGluaykoRFZQLCBTVlAsIE4pCj4gKyNkZWZpbmUgVk9QX0ZBTExPQ0FURShWUCwgTSwgT0ZGLCBM
RU4pICgoVlApLT52X29wLT52b3BfZmFsbG9jYXRlKShWUCwgTSwgT0ZGLCBMRU4pCj4gKyNkZWZp
bmUgVk9QX1JFQURMSU5LKFZQLCBVKSAgICAgICAgKChWUCktPnZfb3AtPnZvcF9yZWFkbGluayko
VlAsIFUpCj4gKyNkZWZpbmUgVk9QX1NZTUxJTksoRFZQLCBPUCwgTlApICAgKChEVlApLT52X29w
LT52b3Bfc3ltbGluaykoRFZQLCBPUCwgTlApCj4gKwo+ICtpbnQJIHZvcF9udWxsb3Aodm9pZCk7
Cj4gK2ludAkgdm9wX2VpbnZhbCh2b2lkKTsKPiAraW50CSB2b3BfZXBlcm0odm9pZCk7Cj4gK2lu
dAkgdm9wX2Vyb2ZzKHZvaWQpOwo+ICtzdHJ1Y3Qgdm5vZGUgKnZuX2xvb2t1cChzdHJ1Y3QgbW91
bnQgKiwgdWludDY0X3QpOwo+ICt2b2lkCSB2bl9sb2NrKHN0cnVjdCB2bm9kZSAqKTsKPiArdm9p
ZAkgdm5fdW5sb2NrKHN0cnVjdCB2bm9kZSAqKTsKPiAraW50CSB2bl9zdGF0KHN0cnVjdCB2bm9k
ZSAqLCBzdHJ1Y3Qgc3RhdCAqKTsKPiAraW50CSB2bl9zZXR0aW1lcyhzdHJ1Y3Qgdm5vZGUgKiwg
c3RydWN0IHRpbWVzcGVjWzJdKTsKPiAraW50CSB2bl9zZXRtb2RlKHN0cnVjdCB2bm9kZSAqLCBt
b2RlX3QgbW9kZSk7Cj4gK2ludAkgdm5fYWNjZXNzKHN0cnVjdCB2bm9kZSAqLCBpbnQpOwo+ICtp
bnQJIHZnZXQoc3RydWN0IG1vdW50ICosIHVpbnQ2NF90IGlubywgc3RydWN0IHZub2RlICoqdnBw
KTsKPiArdm9pZAkgdnB1dChzdHJ1Y3Qgdm5vZGUgKik7Cj4gK3ZvaWQJIHZyZWYoc3RydWN0IHZu
b2RlICopOwo+ICt2b2lkCSB2cmVsZShzdHJ1Y3Qgdm5vZGUgKik7Cj4gK3ZvaWQJIHZmbHVzaChz
dHJ1Y3QgbW91bnQgKik7Cj4gK3ZvaWQgdm5fYWRkX25hbWUoc3RydWN0IHZub2RlICosIHN0cnVj
dCBkZW50cnkgKik7Cj4gK3ZvaWQgdm5fZGVsX25hbWUoc3RydWN0IHZub2RlICosIHN0cnVjdCBk
ZW50cnkgKik7Cj4gKwo+ICtleHRlcm4gZW51bSB2dHlwZSBpZnRvdnRfdGFiW107Cj4gK2V4dGVy
biBpbnQgdnR0b2lmX3RhYltdOwo+ICsjZGVmaW5lIElGVE9WVChtb2RlKSAgICAoaWZ0b3Z0X3Rh
YlsoKG1vZGUpICYgU19JRk1UKSA+PiAxMl0pCj4gKyNkZWZpbmUgVlRUT0lGKGluZHgpCSh2dHRv
aWZfdGFiWyhpbnQpKGluZHgpXSkKPiArI2RlZmluZSBNQUtFSU1PREUoaW5keCwgbW9kZSkgICAo
aW50KShWVFRPSUYoaW5keCkgfCAobW9kZSkpCj4gKwo+ICsjZGVmaW5lIFZBVFRSX05VTEwodnAp
ICgqKHZwKSA9ICh2YXR0cl90KXt9KQo+ICsKPiArc3RhdGljIGlubGluZSB2b2lkIHZub2RlX3Bh
Z2VyX3NldHNpemUoc3RydWN0IHZub2RlICp2cCwgb2ZmX3Qgc2l6ZSkKPiArewo+ICsJdnAtPnZf
c2l6ZSA9IHNpemU7Cj4gK30KPiArCj4gK19fRU5EX0RFQ0xTCj4gKwo+ICsjZW5kaWYKPiArCj4g
KyNlbmRpZiAvKiAhX1NZU19WTk9ERV9IXyAqLwo+IGRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9s
b29rdXAuYyBiL2xpYi92ZnNjb3JlL2xvb2t1cC5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBp
bmRleCAwMDAwMDAwMC4uYWQwM2ZlMjUKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvbGliL3Zmc2Nv
cmUvbG9va3VwLmMKPiBAQCAtMCwwICsxLDM3NSBAQAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgKGMp
IDIwMDUtMjAwNywgS29oc3VrZSBPaHRhbmkKPiArICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiAr
ICoKPiArICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Cj4gKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwo+ICsgKiBhcmUgbWV0Ogo+ICsgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCj4gKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKPiArICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KPiArICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUg
YXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgYW55IGNvLWNvbnRyaWJ1dG9ycwo+ICsgKiAgICBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMg
c29mdHdhcmUKPiArICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCj4gKyAqCj4gKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBB
TkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKPiArICogQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCj4gKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFCj4gKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCj4gKyAqIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMCj4gKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCj4gKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQo+ICsgKiBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVAo+ICsgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCj4gKyAqIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKPiAr
ICogU1VDSCBEQU1BR0UuCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPHVuaXN0ZC5oPgo+ICsjaW5j
bHVkZSA8c3RyaW5nLmg+Cj4gKyNpbmNsdWRlIDxlcnJuby5oPgo+ICsjaW5jbHVkZSA8c3RkbGli
Lmg+Cj4gKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KPiArCj4gKyNpbmNsdWRlIDxvc3YvZGVudHJ5
Lmg+Cj4gKyNpbmNsdWRlIDxvc3Yvdm5vZGUuaD4KPiArI2luY2x1ZGUgInZmcy5oIgo+ICsKPiAr
c3RhdGljIHNzaXplX3QKPiArcmVhZF9saW5rKHN0cnVjdCB2bm9kZSAqdnAsIGNoYXIgKmJ1Ziwg
c2l6ZV90IGJ1ZnN6LCBzc2l6ZV90ICpzeikKPiArewo+ICsgICAgc3RydWN0IGlvdmVjIGlvdiA9
IHtidWYsIGJ1ZnN6fTsKPiArICAgIHN0cnVjdCB1aW8gICB1aW8gPSB7JmlvdiwgMSwgMCwgKHNz
aXplX3QpIGJ1ZnN6LCBVSU9fUkVBRH07Cj4gKyAgICBpbnQgcmM7Cj4gKwo+ICsgICAgKnN6ID0g
MDsKPiArICAgIHZuX2xvY2sodnApOwo+ICsgICAgcmMgID0gVk9QX1JFQURMSU5LKHZwLCAmdWlv
KTsKPiArICAgIHZuX3VubG9jayh2cCk7Cj4gKwo+ICsgICAgaWYgKHJjICE9IDApIHsKPiArICAg
ICAgICByZXR1cm4gKHJjKTsKPiArICAgIH0KPiArCj4gKyAgICAqc3ogPSBidWZzeiAtIHVpby51
aW9fcmVzaWQ7Cj4gKyAgICByZXR1cm4gKDApOwo+ICt9Cj4gKwo+ICtpbnQKPiArbmFtZWlfZm9s
bG93X2xpbmsoc3RydWN0IGRlbnRyeSAqZHAsIGNoYXIgKm5vZGUsIGNoYXIgKm5hbWUsIGNoYXIg
KmZwLCBzaXplX3QgbW91bnRwb2ludF9sZW4pCj4gK3sKPiArICAgIHN0ZDo6dW5pcXVlX3B0cjxj
aGFyIFtdPiBsaW5rIChuZXcgY2hhcltQQVRIX01BWF0pOwo+ICsgICAgc3RkOjp1bmlxdWVfcHRy
PGNoYXIgW10+IHQgKG5ldyBjaGFyW1BBVEhfTUFYXSk7Cj4gKyAgICBjaGFyICAgICpscDsKPiAr
ICAgIGludCAgICAgZXJyb3I7Cj4gKyAgICBzc2l6ZV90IHN6Owo+ICsgICAgY2hhciAgICAqcDsK
PiArICAgIGludCAgICAgYzsKPiArCj4gKyAgICBscCAgICA9IGxpbmsuZ2V0KCk7Cj4gKyAgICBl
cnJvciA9IHJlYWRfbGluayhkcC0+ZF92bm9kZSwgbHAsIFBBVEhfTUFYLCAmc3opOwo+ICsgICAg
aWYgKGVycm9yICE9IDApIHsKPiArICAgICAgICByZXR1cm4gKGVycm9yKTsKPiArICAgIH0KPiAr
ICAgIGxwW3N6XSA9IDA7Cj4gKwo+ICsgICAgcCA9IGZwICsgbW91bnRwb2ludF9sZW4gKyBzdHJs
ZW4obm9kZSk7Cj4gKyAgICBjID0gc3RybGVuKG5vZGUpIC0gc3RybGVuKG5hbWUpIC0gMTsKPiAr
ICAgIG5vZGVbY10gPSAwOwo+ICsKPiArICAgIGlmIChscFswXSA9PSAnLycpIHsKPiArICAgICAg
ICBzdHJsY2F0KGxwLCBwLCBQQVRIX01BWCk7Cj4gKyAgICAgICAgc3RybGNweShmcCwgbHAsIFBB
VEhfTUFYKTsKPiArICAgIH0gZWxzZSB7Cj4gKyAgICAgICAgc3RybGNweSh0LmdldCgpLCBwLCBQ
QVRIX01BWCk7Cj4gKyAgICAgICAgc3RybGNweShub2RlLCBmcCwgbW91bnRwb2ludF9sZW4gKyBj
ICsgMSk7Cj4gKyAgICAgICAgcGF0aF9jb252KG5vZGUsIGxwLCBmcCk7Cj4gKyAgICAgICAgc3Ry
bGNhdChmcCwgdC5nZXQoKSwgUEFUSF9NQVgpOwo+ICsgICAgfQo+ICsgICAgbm9kZVswXSA9IDA7
Cj4gKyAgICBuYW1lWzBdID0gMDsKPiArICAgIHJldHVybiAoMCk7Cj4gK30KPiArLyoKPiArICog
Q29udmVydCBhIHBhdGhuYW1lIGludG8gYSBwb2ludGVyIHRvIGEgZGVudHJ5Cj4gKyAqCj4gKyAq
IEBwYXRoOiBmdWxsIHBhdGggbmFtZS4KPiArICogQGRwcDogIGRlbnRyeSB0byBiZSByZXR1cm5l
ZC4KPiArICovCj4gK2ludAo+ICtuYW1laShjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3QgZGVudHJ5
ICoqZHBwKQo+ICt7Cj4gKyAgICBjaGFyICpwOwo+ICsgICAgY2hhciBub2RlW1BBVEhfTUFYXTsK
PiArICAgIGNoYXIgbmFtZVtQQVRIX01BWF07Cj4gKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Y2hhciBb
XT4gZnAgKG5ldyBjaGFyIFtQQVRIX01BWF0pOwo+ICsgICAgc3RkOjp1bmlxdWVfcHRyPGNoYXIg
W10+IHQgKG5ldyBjaGFyIFtQQVRIX01BWF0pOwo+ICsgICAgc3RydWN0IG1vdW50ICptcDsKPiAr
ICAgIHN0cnVjdCBkZW50cnkgKmRwLCAqZGRwOwo+ICsgICAgc3RydWN0IHZub2RlICpkdnAsICp2
cDsKPiArICAgIGludCBlcnJvciwgaTsKPiArICAgIGludCBsaW5rc19mb2xsb3dlZDsKPiArICAg
IGJvb2wgbmVlZF9jb250aW51ZTsKPiArCj4gKyAgICBEUFJJTlRGKFZGU0RCX1ZOT0RFLCAoIm5h
bWVpOiBwYXRoPSVzXG4iLCBwYXRoKSk7Cj4gKwo+ICsgICAgbGlua3NfZm9sbG93ZWQgPSAwOwo+
ICsgICAgc3RybGNweShmcC5nZXQoKSwgcGF0aCwgUEFUSF9NQVgpOwo+ICsKPiArICAgIGRvIHsK
PiArICAgICAgICBuZWVkX2NvbnRpbnVlID0gZmFsc2U7Cj4gKyAgICAgICAgLyoKPiArICAgICAg
ICAgKiBDb252ZXJ0IGEgZnVsbCBwYXRoIG5hbWUgdG8gaXRzIG1vdW50IHBvaW50IGFuZAo+ICsg
ICAgICAgICAqIHRoZSBsb2NhbCBub2RlIGluIHRoZSBmaWxlIHN5c3RlbS4KPiArICAgICAgICAg
Ki8KPiArICAgICAgICBpZiAodmZzX2ZpbmRyb290KGZwLmdldCgpLCAmbXAsICZwKSkgewo+ICsg
ICAgICAgICAgICByZXR1cm4gRU5PVERJUjsKPiArICAgICAgICB9Cj4gKyAgICAgICAgaW50IG1v
dW50cG9pbnRfbGVuID0gcCAtIGZwLmdldCgpIC0gMTsKPiArICAgICAgICBzdHJsY3B5KG5vZGUs
ICIvIiwgc2l6ZW9mKG5vZGUpKTsKPiArICAgICAgICBzdHJsY2F0KG5vZGUsIHAsIHNpemVvZihu
b2RlKSk7Cj4gKyAgICAgICAgZHAgPSBkZW50cnlfbG9va3VwKG1wLCBub2RlKTsKPiArICAgICAg
ICBpZiAoZHApIHsKPiArICAgICAgICAgICAgLyogdm5vZGUgaXMgYWxyZWFkeSBhY3RpdmUuICov
Cj4gKyAgICAgICAgICAgICpkcHAgPSBkcDsKPiArICAgICAgICAgICAgcmV0dXJuIDA7Cj4gKyAg
ICAgICAgfQo+ICsgICAgICAgIC8qCj4gKyAgICAgICAgICogRmluZCB0YXJnZXQgdm5vZGUsIHN0
YXJ0ZWQgZnJvbSByb290IGRpcmVjdG9yeS4KPiArICAgICAgICAgKiBUaGlzIGlzIGRvbmUgdG8g
YXR0YWNoIHRoZSBmcyBzcGVjaWZpYyBkYXRhIHRvCj4gKyAgICAgICAgICogdGhlIHRhcmdldCB2
bm9kZS4KPiArICAgICAgICAgKi8KPiArICAgICAgICBkZHAgPSBtcC0+bV9yb290Owo+ICsgICAg
ICAgIGlmICghZGRwKSB7Cj4gKyAgICAgICAgICAgIHN5c19wYW5pYygiVkZTOiBubyByb290Iik7
Cj4gKyAgICAgICAgfQo+ICsgICAgICAgIGRyZWYoZGRwKTsKPiArCj4gKyAgICAgICAgbm9kZVsw
XSA9ICdcMCc7Cj4gKwo+ICsgICAgICAgIHdoaWxlICgqcCAhPSAnXDAnKSB7Cj4gKyAgICAgICAg
ICAgIC8qCj4gKyAgICAgICAgICAgICAqIEdldCBsb3dlciBkaXJlY3RvcnkvZmlsZSBuYW1lLgo+
ICsgICAgICAgICAgICAgKi8KPiArICAgICAgICAgICAgd2hpbGUgKCpwID09ICcvJykgewo+ICsg
ICAgICAgICAgICAgICAgcCsrOwo+ICsgICAgICAgICAgICB9Cj4gKwo+ICsgICAgICAgICAgICBp
ZiAoKnAgPT0gJ1wwJykgewo+ICsgICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICAgICAg
IH0KPiArCj4gKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBQQVRIX01BWDsgaSsrKSB7Cj4g
KyAgICAgICAgICAgICAgICBpZiAoKnAgPT0gJ1wwJyB8fCAqcCA9PSAnLycpIHsKPiArICAgICAg
ICAgICAgICAgICAgICBicmVhazsKPiArICAgICAgICAgICAgICAgIH0KPiArICAgICAgICAgICAg
ICAgIG5hbWVbaV0gPSAqcCsrOwo+ICsgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgIG5hbWVb
aV0gPSAnXDAnOwo+ICsKPiArICAgICAgICAgICAgLyoKPiArICAgICAgICAgICAgICogR2V0IGEg
dm5vZGUgZm9yIHRoZSB0YXJnZXQuCj4gKyAgICAgICAgICAgICAqLwo+ICsgICAgICAgICAgICBz
dHJsY2F0KG5vZGUsICIvIiwgc2l6ZW9mKG5vZGUpKTsKPiArICAgICAgICAgICAgc3RybGNhdChu
b2RlLCBuYW1lLCBzaXplb2Yobm9kZSkpOwo+ICsgICAgICAgICAgICBkdnAgPSBkZHAtPmRfdm5v
ZGU7Cj4gKyAgICAgICAgICAgIHZuX2xvY2soZHZwKTsKPiArICAgICAgICAgICAgZHAgPSBkZW50
cnlfbG9va3VwKG1wLCBub2RlKTsKPiArICAgICAgICAgICAgaWYgKGRwID09IG51bGxwdHIpIHsK
PiArICAgICAgICAgICAgICAgIC8qIEZpbmQgYSB2bm9kZSBpbiB0aGlzIGRpcmVjdG9yeS4gKi8K
PiArICAgICAgICAgICAgICAgIGVycm9yID0gVk9QX0xPT0tVUChkdnAsIG5hbWUsICZ2cCk7Cj4g
KyAgICAgICAgICAgICAgICBpZiAoZXJyb3IpIHsKPiArICAgICAgICAgICAgICAgICAgICB2bl91
bmxvY2soZHZwKTsKPiArICAgICAgICAgICAgICAgICAgICBkcmVsZShkZHApOwo+ICsgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKPiArICAgICAgICAgICAgICAgIH0KPiArCj4gKyAg
ICAgICAgICAgICAgICBkcCA9IGRlbnRyeV9hbGxvYyhkZHAsIHZwLCBub2RlKTsKPiArICAgICAg
ICAgICAgICAgIHZwdXQodnApOwo+ICsKPiArICAgICAgICAgICAgICAgIGlmICghZHApIHsKPiAr
ICAgICAgICAgICAgICAgICAgICB2bl91bmxvY2soZHZwKTsKPiArICAgICAgICAgICAgICAgICAg
ICBkcmVsZShkZHApOwo+ICsgICAgICAgICAgICAgICAgICAgIHJldHVybiBFTk9NRU07Cj4gKyAg
ICAgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgdm5fdW5sb2Nr
KGR2cCk7Cj4gKyAgICAgICAgICAgIGRyZWxlKGRkcCk7Cj4gKyAgICAgICAgICAgIGRkcCA9IGRw
Owo+ICsKPiArICAgICAgICAgICAgaWYgKGRwLT5kX3Zub2RlLT52X3R5cGUgPT0gVkxOSykgewo+
ICsgICAgICAgICAgICAgICAgZXJyb3IgPSBuYW1laV9mb2xsb3dfbGluayhkcCwgbm9kZSwgbmFt
ZSwgZnAuZ2V0KCksIG1vdW50cG9pbnRfbGVuKTsKPiArICAgICAgICAgICAgICAgIGlmIChlcnJv
cikgewo+ICsgICAgICAgICAgICAgICAgICAgIGRyZWxlKGRwKTsKPiArICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gKGVycm9yKTsKPiArICAgICAgICAgICAgICAgIH0KPiArCj4gKyAgICAgICAg
ICAgICAgICBkcmVsZShkcCk7Cj4gKwo+ICsgICAgICAgICAgICAgICAgcCAgICAgICA9IGZwLmdl
dCgpOwo+ICsgICAgICAgICAgICAgICAgZHAgICAgICA9IG51bGxwdHI7Cj4gKyAgICAgICAgICAg
ICAgICBkZHAgICAgID0gbnVsbHB0cjsKPiArICAgICAgICAgICAgICAgIHZwICAgICAgPSBudWxs
cHRyOwo+ICsgICAgICAgICAgICAgICAgZHZwICAgICA9IG51bGxwdHI7Cj4gKyAgICAgICAgICAg
ICAgICBuYW1lWzBdID0gMDsKPiArICAgICAgICAgICAgICAgIG5vZGVbMF0gPSAwOwo+ICsKPiAr
ICAgICAgICAgICAgICAgIGlmICgrK2xpbmtzX2ZvbGxvd2VkID49IE1BWFNZTUxJTktTKSB7Cj4g
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChFTE9PUCk7Cj4gKyAgICAgICAgICAgICAgICB9
Cj4gKyAgICAgICAgICAgICAgICBuZWVkX2NvbnRpbnVlID0gdHJ1ZTsKPiArICAgICAgICAgICAg
ICAgIGJyZWFrOwo+ICsgICAgICAgICAgICB9Cj4gKwo+ICsgICAgICAgICAgICBpZiAoKnAgPT0g
Jy8nICYmIGRkcC0+ZF92bm9kZS0+dl90eXBlICE9IFZESVIpIHsKPiArICAgICAgICAgICAgICAg
IGRyZWxlKGRkcCk7Cj4gKyAgICAgICAgICAgICAgICByZXR1cm4gRU5PVERJUjsKPiArICAgICAg
ICAgICAgfQo+ICsgICAgICAgIH0KPiArICAgIH0gd2hpbGUgKG5lZWRfY29udGludWUgPT0gdHJ1
ZSk7Cj4gKwo+ICsgICAgKmRwcCA9IGRwOwo+ICsgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gKy8q
Cj4gKyAqIENvbnZlcnQgbGFzdCBjb21wb25lbnQgaW4gdGhlIHBhdGggdG8gcG9pbnRlciB0byBk
ZW50cnkKPiArICoKPiArICogQHBhdGg6IGZ1bGwgcGF0aCBuYW1lCj4gKyAqIEBkZHAgOiBwb2lu
dGVyIHRvIGRlbnRyeSBvZiBwYXJlbnQKPiArICogQGRwcCA6IGRlbnRyeSB0byBiZSByZXR1cm5l
ZAo+ICsgKi8KPiAraW50Cj4gK25hbWVpX2xhc3Rfbm9mb2xsb3coY2hhciAqcGF0aCwgc3RydWN0
IGRlbnRyeSAqZGRwLCBzdHJ1Y3QgZGVudHJ5ICoqZHBwKQo+ICt7Cj4gKyAgICBjaGFyICAgICAg
ICAgICpuYW1lOwo+ICsgICAgaW50ICAgICAgICAgICBlcnJvcjsKPiArICAgIHN0cnVjdCBtb3Vu
dCAgKm1wOwo+ICsgICAgY2hhciAgICAgICAgICAqcDsKPiArICAgIHN0cnVjdCBkZW50cnkgKmRw
Owo+ICsgICAgc3RydWN0IHZub2RlICAqZHZwOwo+ICsgICAgc3RydWN0IHZub2RlICAqdnA7Cj4g
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8Y2hhciBbXT4gbm9kZSAobmV3IGNoYXJbUEFUSF9NQVhdKTsK
PiArCj4gKyAgICBkdnAgID0gbnVsbHB0cjsKPiArCj4gKyAgICBpZiAocGF0aFswXSAhPSAnLycp
IHsKPiArICAgICAgICByZXR1cm4gKEVOT1RESVIpOwo+ICsgICAgfQo+ICsKPiArICAgIG5hbWUg
PSBzdHJyY2hyKHBhdGgsICcvJyk7Cj4gKyAgICBpZiAobmFtZSA9PSBudWxscHRyKSB7Cj4gKyAg
ICAgICAgcmV0dXJuIChFTk9FTlQpOwo+ICsgICAgfQo+ICsgICAgbmFtZSsrOwo+ICsKPiArICAg
IGVycm9yID0gdmZzX2ZpbmRyb290KHBhdGgsICZtcCwgJnApOwo+ICsgICAgaWYgKGVycm9yICE9
IDApIHsKPiArICAgICAgICByZXR1cm4gKEVOT1RESVIpOwo+ICsgICAgfQo+ICsKPiArICAgIHN0
cmxjcHkobm9kZS5nZXQoKSwgIi8iLCBQQVRIX01BWCk7Cj4gKyAgICBzdHJsY2F0KG5vZGUuZ2V0
KCksIHAsIFBBVEhfTUFYKTsKPiArCj4gKyAgICAvLyBXZSB3YW50IHRvIHRyZWF0IHRoaW5ncyBs
aWtlIC90bXAvIHRoZSBzYW1lIGFzIC90bXAuIEJlc3Qgd2F5IHRvIGRvIHRoYXQKPiArICAgIC8v
IGlzIHRvIGlnbm9yZSB0aGUgbGFzdCBjaGFyYWN0ZXIsIGV4Y2VwdCB3aGVuIHdlJ3JlIHN0YXRp
bmcgdGhlIHJvb3QuCj4gKyAgICBhdXRvIGwgPSBzdHJsZW4obm9kZS5nZXQoKSkgLSAxOwo+ICsg
ICAgaWYgKGwgJiYgbm9kZS5nZXQoKVtsXSA9PSAnLycpIHsKPiArICAgICAgICBub2RlLmdldCgp
W2xdID0gJ1wwJzsKPiArICAgIH0KPiArCj4gKyAgICBkdnAgPSBkZHAtPmRfdm5vZGU7Cj4gKyAg
ICB2bl9sb2NrKGR2cCk7Cj4gKyAgICBkcCA9IGRlbnRyeV9sb29rdXAobXAsIG5vZGUuZ2V0KCkp
Owo+ICsgICAgaWYgKGRwID09IG51bGxwdHIpIHsKPiArICAgICAgICBlcnJvciA9IFZPUF9MT09L
VVAoZHZwLCBuYW1lLCAmdnApOwo+ICsgICAgICAgIGlmIChlcnJvciAhPSAwKSB7Cj4gKyAgICAg
ICAgICAgIGdvdG8gb3V0Owo+ICsgICAgICAgIH0KPiArCj4gKyAgICAgICAgZHAgPSBkZW50cnlf
YWxsb2MoZGRwLCB2cCwgbm9kZS5nZXQoKSk7Cj4gKyAgICAgICAgdnB1dCh2cCk7Cj4gKwo+ICsg
ICAgICAgIGlmIChkcCA9PSBudWxscHRyKSB7Cj4gKyAgICAgICAgICAgIGVycm9yID0gRU5PTUVN
Owo+ICsgICAgICAgICAgICBnb3RvIG91dDsKPiArICAgICAgICB9Cj4gKyAgICB9Cj4gKwo+ICsg
ICAgKmRwcCAgPSBkcDsKPiArICAgIGVycm9yID0gMDsKPiArb3V0Ogo+ICsgICAgaWYgKGR2cCAh
PSBudWxscHRyKSB7Cj4gKyAgICAgICAgdm5fdW5sb2NrKGR2cCk7Cj4gKyAgICB9Cj4gKyAgICBy
ZXR1cm4gKGVycm9yKTsKPiArfQo+ICsKPiArLyoKPiArICogU2VhcmNoIGEgcGF0aG5hbWUuCj4g
KyAqIFRoaXMgaXMgYSB2ZXJ5IGNlbnRyYWwgYnV0IG5vdCBzbyBjb21wbGljYXRlZCByb3V0aW5l
LiA7LVAKPiArICoKPiArICogQHBhdGg6IGZ1bGwgcGF0aC4KPiArICogQGRwcDogIHBvaW50ZXIg
dG8gZGVudHJ5IGZvciBkaXJlY3RvcnkuCj4gKyAqIEBuYW1lOiBpZiBub24tbnVsbCwgcG9pbnRl
ciB0byBmaWxlIG5hbWUgaW4gcGF0aC4KPiArICoKPiArICogVGhpcyByb3V0aW5lIHJldHVybnMg
YSBsb2NrZWQgZGlyZWN0b3J5IHZub2RlIGFuZCBmaWxlIG5hbWUuCj4gKyAqLwo+ICtpbnQKPiAr
bG9va3VwKGNoYXIgKnBhdGgsIHN0cnVjdCBkZW50cnkgKipkcHAsIGNoYXIgKipuYW1lKQo+ICt7
Cj4gKyAgICBjaGFyIGJ1ZltQQVRIX01BWF07Cj4gKyAgICBjaGFyIHJvb3RbXSA9ICIvIjsKPiAr
ICAgIGNoYXIgKmZpbGUsICpkaXI7Cj4gKyAgICBzdHJ1Y3QgZGVudHJ5ICpkcDsKPiArICAgIGlu
dCBlcnJvcjsKPiArCj4gKyAgICBEUFJJTlRGKFZGU0RCX1ZOT0RFLCAoImxvb2t1cDogcGF0aD0l
c1xuIiwgcGF0aCkpOwo+ICsKPiArICAgIC8qCj4gKyAgICAgKiBHZXQgdGhlIHBhdGggZm9yIGRp
cmVjdG9yeS4KPiArICAgICAqLwo+ICsgICAgc3RybGNweShidWYsIHBhdGgsIHNpemVvZihidWYp
KTsKPiArICAgIGZpbGUgPSBzdHJyY2hyKGJ1ZiwgJy8nKTsKPiArICAgIGlmICghYnVmWzBdKSB7
Cj4gKyAgICAgICAgcmV0dXJuIEVOT1RESVI7Cj4gKyAgICB9Cj4gKyAgICBpZiAoZmlsZSA9PSBi
dWYpIHsKPiArICAgICAgICBkaXIgPSByb290Owo+ICsgICAgfSBlbHNlIHsKPiArICAgICAgICAq
ZmlsZSA9ICdcMCc7Cj4gKyAgICAgICAgZGlyID0gYnVmOwo+ICsgICAgfQo+ICsgICAgLyoKPiAr
ICAgICAqIEdldCB0aGUgdm5vZGUgZm9yIGRpcmVjdG9yeQo+ICsgICAgICovCj4gKyAgICBpZiAo
KGVycm9yID0gbmFtZWkoZGlyLCAmZHApKSAhPSAwKSB7Cj4gKyAgICAgICAgcmV0dXJuIGVycm9y
Owo+ICsgICAgfQo+ICsgICAgaWYgKGRwLT5kX3Zub2RlLT52X3R5cGUgIT0gVkRJUikgewo+ICsg
ICAgICAgIGRyZWxlKGRwKTsKPiArICAgICAgICByZXR1cm4gRU5PVERJUjsKPiArICAgIH0KPiAr
Cj4gKyAgICAqZHBwID0gZHA7Cj4gKwo+ICsgICAgaWYgKG5hbWUpIHsKPiArICAgICAgICAvKgo+
ICsgICAgICAgICAqIEdldCB0aGUgZmlsZSBuYW1lCj4gKyAgICAgICAgICovCj4gKyAgICAgICAg
Km5hbWUgPSBzdHJyY2hyKHBhdGgsICcvJykgKyAxOwo+ICsgICAgfQo+ICsgICAgcmV0dXJuIDA7
Cj4gK30KPiArCj4gKy8qCj4gKyAqIHZub2RlX2luaXQoKSBpcyBjYWxsZWQgb25jZSAoZnJvbSB2
ZnNfaW5pdCkKPiArICogaW4gaW5pdGlhbGl6YXRpb24uCj4gKyAqLwo+ICt2b2lkCj4gK2xvb2t1
cF9pbml0KHZvaWQpCj4gK3sKPiArICAgIGRlbnRyeV9pbml0KCk7Cj4gK30KPiBkaWZmIC0tZ2l0
IGEvbGliL3Zmc2NvcmUvbWFpbi5jIGIvbGliL3Zmc2NvcmUvbWFpbi5jCj4gbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMC4uY2QxNDExMTcKPiAtLS0gL2Rldi9udWxsCj4gKysr
IGIvbGliL3Zmc2NvcmUvbWFpbi5jCj4gQEAgLTAsMCArMSwyNDEzIEBACj4gKy8qCj4gKyAqIENv
cHlyaWdodCAoQykgMjAxMyBDbG91ZGl1cyBTeXN0ZW1zLCBMdGQuCj4gKyAqCj4gKyAqIFRoaXMg
d29yayBpcyBvcGVuIHNvdXJjZSBzb2Z0d2FyZSwgbGljZW5zZWQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZQo+ICsgKiBCU0QgbGljZW5zZSBhcyBkZXNjcmliZWQgaW4gdGhlIExJQ0VOU0UgZmlsZSBp
biB0aGUgdG9wLWxldmVsIGRpcmVjdG9yeS4KPiArICovCj4gKwo+ICsvKgo+ICsgKiBDb3B5cmln
aHQgKGMpIDIwMDUtMjAwNywgS29oc3VrZSBPaHRhbmkKPiArICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KPiArICoKPiArICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cj4gKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwo+ICsgKiBhcmUgbWV0Ogo+
ICsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCj4gKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKPiArICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KPiArICogMy4gTmVpdGhlciB0aGUgbmFtZSBv
ZiB0aGUgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgYW55IGNvLWNvbnRyaWJ1dG9ycwo+ICsgKiAg
ICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
IHRoaXMgc29mdHdhcmUKPiArICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCj4gKyAqCj4gKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFV
VEhPUiBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKPiArICogQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCj4g
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFCj4gKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCj4gKyAqIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMCj4gKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCj4gKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQo+ICsgKiBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVAo+ICsgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCj4gKyAqIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YKPiArICogU1VDSCBEQU1BR0UuCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPHN5cy9wYXJhbS5o
Pgo+ICsjaW5jbHVkZSA8c3lzL3N0YXR2ZnMuaD4KPiArI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Cj4g
KyNpbmNsdWRlIDxzeXMvdGltZS5oPgo+ICsjaW5jbHVkZSA8c3lzL3NlbmRmaWxlLmg+Cj4gKwo+
ICsjaW5jbHVkZSA8bGltaXRzLmg+Cj4gKyNpbmNsdWRlIDx1bmlzdGQuaD4KPiArI2luY2x1ZGUg
PHN0ZGlvLmg+Cj4gKyNpbmNsdWRlIDxzdGRpbnQuaD4KPiArI2luY2x1ZGUgPHN0ZGxpYi5oPgo+
ICsjaW5jbHVkZSA8c3RyaW5nLmg+Cj4gKyNpbmNsdWRlIDxlcnJuby5oPgo+ICsjaW5jbHVkZSA8
c2lnbmFsLmg+Cj4gKyNkZWZpbmUgb3BlbiBfX29wZW5fdmFyaWFkaWMKPiArI2RlZmluZSBmY250
bCBfX2ZjbnRsX3ZhcmlhZGljCj4gKyNpbmNsdWRlIDxmY250bC5oPgo+ICsjdW5kZWYgb3Blbgo+
ICsjdW5kZWYgZmNudGwKPiArCj4gKyNpbmNsdWRlIDxvc3YvcHJleC5oPgo+ICsjaW5jbHVkZSA8
b3N2L3Zub2RlLmg+Cj4gKyNpbmNsdWRlIDxvc3Yvc3R1YmJpbmcuaGg+Cj4gKyNpbmNsdWRlIDxv
c3YvaW9jdGwuaD4KPiArI2luY2x1ZGUgPG9zdi90cmFjZS5oaD4KPiArI2luY2x1ZGUgPG9zdi9y
dW4uaGg+Cj4gKyNpbmNsdWRlIDxkcml2ZXJzL2NvbnNvbGUuaGg+Cj4gKwo+ICsjaW5jbHVkZSAi
dmZzLmgiCj4gKwo+ICsjaW5jbHVkZSAibGliYy9pbnRlcm5hbC9saWJjLmgiCj4gKwo+ICsjaW5j
bHVkZSA8YWxnb3JpdGhtPgo+ICsjaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KPiArCj4gKyNpbmNs
dWRlIDxzeXMvZmlsZS5oPgo+ICsKPiArI2luY2x1ZGUgImZzL2ZzLmhoIgo+ICsjaW5jbHVkZSAi
bGliYy9saWJjLmhoIgo+ICsKPiArI2luY2x1ZGUgPG1udGVudC5oPgo+ICsjaW5jbHVkZSA8c3lz
L21tYW4uaD4KPiArCj4gKyNpbmNsdWRlIDxvc3YvY2xvY2suaGg+Cj4gKyNpbmNsdWRlIDxhcGkv
dXRpbWUuaD4KPiArI2luY2x1ZGUgPGNocm9ubz4KPiArCj4gK3VzaW5nIG5hbWVzcGFjZSBzdGQ7
Cj4gKwo+ICsKPiArI2lmZGVmIERFQlVHX1ZGUwo+ICtpbnQJdmZzX2RlYnVnID0gVkZTREJfRkxB
R1M7Cj4gKyNlbmRpZgo+ICsKPiArc3RkOjphdG9taWM8bW9kZV90PiBnbG9iYWxfdW1hc2t7U19J
V0dSUCB8IFNfSVdPVEh9Owo+ICsKPiArc3RhdGljIGlubGluZSBtb2RlX3QgYXBwbHlfdW1hc2so
bW9kZV90IG1vZGUpCj4gK3sKPiArICAgIHJldHVybiBtb2RlICYgfmdsb2JhbF91bWFzay5sb2Fk
KHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOwo+ICt9Cj4gKwo+ICtUUkFDRVBPSU5UKHRyYWNl
X3Zmc19vcGVuLCAiXCIlc1wiIDB4JXggMCUwbyIsIGNvbnN0IGNoYXIqLCBpbnQsIG1vZGVfdCk7
Cj4gK1RSQUNFUE9JTlQodHJhY2VfdmZzX29wZW5fcmV0LCAiJWQiLCBpbnQpOwo+ICtUUkFDRVBP
SU5UKHRyYWNlX3Zmc19vcGVuX2VyciwgIiVkIiwgaW50KTsKPiArCj4gK3N0cnVjdCB0YXNrICpt
YWluX3Rhc2s7CS8qIHdlIG9ubHkgaGF2ZSBhIHNpbmdsZSBwcm9jZXNzICovCj4gKwo+ICtleHRl
cm4gIkMiCj4gK2ludCBvcGVuKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBpbnQgZmxhZ3MsIC4uLikK
PiArewo+ICsgICAgbW9kZV90IG1vZGUgPSAwOwo+ICsgICAgaWYgKGZsYWdzICYgT19DUkVBVCkg
ewo+ICsgICAgICAgIHZhX2xpc3QgYXA7Cj4gKyAgICAgICAgdmFfc3RhcnQoYXAsIGZsYWdzKTsK
PiArICAgICAgICBtb2RlID0gYXBwbHlfdW1hc2sodmFfYXJnKGFwLCBtb2RlX3QpKTsKPiArICAg
ICAgICB2YV9lbmQoYXApOwo+ICsgICAgfQo+ICsKPiArICAgIHRyYWNlX3Zmc19vcGVuKHBhdGhu
YW1lLCBmbGFncywgbW9kZSk7Cj4gKwo+ICsgICAgc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7
Cj4gKyAgICBjaGFyIHBhdGhbUEFUSF9NQVhdOwo+ICsgICAgc3RydWN0IGZpbGUgKmZwOwo+ICsg
ICAgaW50IGZkLCBlcnJvcjsKPiArICAgIGludCBhY2M7Cj4gKwo+ICsgICAgYWNjID0gMDsKPiAr
ICAgIHN3aXRjaCAoZmxhZ3MgJiBPX0FDQ01PREUpIHsKPiArICAgIGNhc2UgT19SRE9OTFk6Cj4g
KyAgICAgICAgYWNjID0gVlJFQUQ7Cj4gKyAgICAgICAgYnJlYWs7Cj4gKyAgICBjYXNlIE9fV1JP
TkxZOgo+ICsgICAgICAgIGFjYyA9IFZXUklURTsKPiArICAgICAgICBicmVhazsKPiArICAgIGNh
c2UgT19SRFdSOgo+ICsgICAgICAgIGFjYyA9IFZSRUFEIHwgVldSSVRFOwo+ICsgICAgICAgIGJy
ZWFrOwo+ICsgICAgfQo+ICsKPiArICAgIGVycm9yID0gdGFza19jb252KHQsIHBhdGhuYW1lLCBh
Y2MsIHBhdGgpOwo+ICsgICAgaWYgKGVycm9yKQo+ICsgICAgICAgIGdvdG8gb3V0X2Vycm5vOwo+
ICsKPiArICAgIGVycm9yID0gc3lzX29wZW4ocGF0aCwgZmxhZ3MsIG1vZGUsICZmcCk7Cj4gKyAg
ICBpZiAoZXJyb3IpCj4gKyAgICAgICAgZ290byBvdXRfZXJybm87Cj4gKwo+ICsgICAgZXJyb3Ig
PSBmZGFsbG9jKGZwLCAmZmQpOwo+ICsgICAgaWYgKGVycm9yKQo+ICsgICAgICAgIGdvdG8gb3V0
X2ZwdXQ7Cj4gKyAgICBmZHJvcChmcCk7Cj4gKyAgICB0cmFjZV92ZnNfb3Blbl9yZXQoZmQpOwo+
ICsgICAgcmV0dXJuIGZkOwo+ICsKPiArICAgIG91dF9mcHV0Ogo+ICsgICAgZmRyb3AoZnApOwo+
ICsgICAgb3V0X2Vycm5vOgo+ICsgICAgZXJybm8gPSBlcnJvcjsKPiArICAgIHRyYWNlX3Zmc19v
cGVuX2VycihlcnJvcik7Cj4gKyAgICByZXR1cm4gLTE7Cj4gK30KPiArCj4gK0xGUzY0KG9wZW4p
Owo+ICsKPiAraW50IG9wZW5hdChpbnQgZGlyZmQsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBpbnQg
ZmxhZ3MsIC4uLikKPiArewo+ICsgICAgbW9kZV90IG1vZGUgPSAwOwo+ICsgICAgaWYgKGZsYWdz
ICYgT19DUkVBVCkgewo+ICsgICAgICAgIHZhX2xpc3QgYXA7Cj4gKyAgICAgICAgdmFfc3RhcnQo
YXAsIGZsYWdzKTsKPiArICAgICAgICBtb2RlID0gYXBwbHlfdW1hc2sodmFfYXJnKGFwLCBtb2Rl
X3QpKTsKPiArICAgICAgICB2YV9lbmQoYXApOwo+ICsgICAgfQo+ICsKPiArICAgIGlmIChwYXRo
bmFtZVswXSA9PSAnLycgfHwgZGlyZmQgPT0gQVRfRkRDV0QpIHsKPiArICAgICAgICByZXR1cm4g
b3BlbihwYXRobmFtZSwgZmxhZ3MsIG1vZGUpOwo+ICsgICAgfQo+ICsKPiArICAgIHN0cnVjdCBm
aWxlICpmcDsKPiArICAgIGludCBlcnJvciA9IGZnZXQoZGlyZmQsICZmcCk7Cj4gKyAgICBpZiAo
ZXJyb3IpIHsKPiArICAgICAgICBlcnJubyA9IGVycm9yOwo+ICsgICAgICAgIHJldHVybiAtMTsK
PiArICAgIH0KPiArCj4gKyAgICBzdHJ1Y3Qgdm5vZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5kX3Zu
b2RlOwo+ICsgICAgdm5fbG9jayh2cCk7Cj4gKwo+ICsgICAgc3RkOjp1bmlxdWVfcHRyPGNoYXIg
W10+IHVwIChuZXcgY2hhcltQQVRIX01BWF0pOwo+ICsgICAgY2hhciAqcCA9IHVwLmdldCgpOwo+
ICsKPiArICAgIC8qIGJ1aWxkIGFic29sdXRlIHBhdGggKi8KPiArICAgIHN0cmxjcHkocCwgZnAt
PmZfZGVudHJ5LT5kX21vdW50LT5tX3BhdGgsIFBBVEhfTUFYKTsKPiArICAgIHN0cmxjYXQocCwg
ZnAtPmZfZGVudHJ5LT5kX3BhdGgsIFBBVEhfTUFYKTsKPiArICAgIHN0cmxjYXQocCwgIi8iLCBQ
QVRIX01BWCk7Cj4gKyAgICBzdHJsY2F0KHAsIHBhdGhuYW1lLCBQQVRIX01BWCk7Cj4gKwo+ICsg
ICAgZXJyb3IgPSBvcGVuKHAsIGZsYWdzLCBtb2RlKTsKPiArCj4gKyAgICB2bl91bmxvY2sodnAp
Owo+ICsgICAgZmRyb3AoZnApOwo+ICsKPiArICAgIHJldHVybiBlcnJvcjsKPiArfQo+ICtMRlM2
NChvcGVuYXQpOwo+ICsKPiArLy8gb3BlbigpIGhhcyBhbiBvcHRpb25hbCB0aGlyZCBhcmd1bWVu
dCwgIm1vZGUiLCB3aGljaCBpcyBvbmx5IG5lZWRlZCBpbgo+ICsvLyBzb21lIGNhc2VzICh3aGVu
IHRoZSBPX0NSRUFUIG1vZGUgaXMgdXNlZCkuIEFzIGEgc2FmZXR5IGZlYXR1cmUsIHJlY2VudAo+
ICsvLyB2ZXJzaW9ucyBvZiBHbGliYyBhZGQgYSBmZWF0dXJlIHdoZXJlIG9wZW4oKSB3aXRoIHR3
byBhcmd1bWVudHMgaXMgcmVwbGFjZWQKPiArLy8gYnkgYSBjYWxsIHRvIF9fb3Blbl8yKCksIHdo
aWNoIHZlcmlmaWVzIGl0IGlzbid0IGNhbGxlZCB3aXRoIE9fQ1JFQVRFLgo+ICtleHRlcm4gIkMi
IGludCBfX29wZW5fMihjb25zdCBjaGFyICpwYXRobmFtZSwgaW50IGZsYWdzKQo+ICt7Cj4gKyAg
ICBhc3NlcnQoIShmbGFncyAmIE9fQ1JFQVQpKTsKPiArICAgIHJldHVybiBvcGVuKHBhdGhuYW1l
LCBmbGFncywgMCk7Cj4gK30KPiArCj4gK2V4dGVybiAiQyIgaW50IF9fb3BlbjY0XzIoY29uc3Qg
Y2hhciAqZmlsZSwgaW50IGZsYWdzKQo+ICt7Cj4gKyAgICBpZiAoZmxhZ3MgJiBPX0NSRUFUKSB7
Cj4gKyAgICAgICAgZXJybm8gPSBFSU5WQUw7Cj4gKyAgICAgICAgcmV0dXJuIC0xOwo+ICsgICAg
fQo+ICsKPiArICAgIHJldHVybiBvcGVuNjQoZmlsZSwgZmxhZ3MpOwo+ICt9Cj4gKwo+ICtpbnQg
Y3JlYXQoY29uc3QgY2hhciAqcGF0aG5hbWUsIG1vZGVfdCBtb2RlKQo+ICt7Cj4gKyAgICByZXR1
cm4gb3BlbihwYXRobmFtZSwgT19DUkVBVHxPX1dST05MWXxPX1RSVU5DLCBtb2RlKTsKPiArfQo+
ICtMRlM2NChjcmVhdCk7Cj4gKwo+ICtUUkFDRVBPSU5UKHRyYWNlX3Zmc19jbG9zZSwgIiVkIiwg
aW50KTsKPiArVFJBQ0VQT0lOVCh0cmFjZV92ZnNfY2xvc2VfcmV0LCAiIik7Cj4gK1RSQUNFUE9J
TlQodHJhY2VfdmZzX2Nsb3NlX2VyciwgIiVkIiwgaW50KTsKPiArCj4gK2ludCBjbG9zZShpbnQg
ZmQpCj4gK3sKPiArICAgIGludCBlcnJvcjsKPiArCj4gKyAgICB0cmFjZV92ZnNfY2xvc2UoZmQp
Owo+ICsgICAgZXJyb3IgPSBmZGNsb3NlKGZkKTsKPiArICAgIGlmIChlcnJvcikKPiArICAgICAg
ICBnb3RvIG91dF9lcnJubzsKPiArCj4gKyAgICB0cmFjZV92ZnNfY2xvc2VfcmV0KCk7Cj4gKyAg
ICByZXR1cm4gMDsKPiArCj4gKyAgICBvdXRfZXJybm86Cj4gKyAgICB0cmFjZV92ZnNfY2xvc2Vf
ZXJyKGVycm9yKTsKPiArICAgIGVycm5vID0gZXJyb3I7Cj4gKyAgICByZXR1cm4gLTE7Cj4gK30K
PiArCj4gK1RSQUNFUE9JTlQodHJhY2VfdmZzX21rbm9kLCAiXCIlc1wiIDAlMG8gMHgleCIsIGNv
bnN0IGNoYXIqLCBtb2RlX3QsIGRldl90KTsKPiArVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbWtub2Rf
cmV0LCAiIik7Cj4gK1RSQUNFUE9JTlQodHJhY2VfdmZzX21rbm9kX2VyciwgIiVkIiwgaW50KTsK
PiArCj4gKwo+ICtleHRlcm4gIkMiCj4gK2ludCBfX3hta25vZChpbnQgdmVyLCBjb25zdCBjaGFy
ICpwYXRobmFtZSwgbW9kZV90IG1vZGUsIGRldl90ICpkZXYpCj4gK3sKPiArICAgIGFzc2VydCh2
ZXIgPT0gMCk7IC8vIE9uIHg4Ni02NCBMaW51eCwgX01LTk9EX1ZFUl9MSU5VWCBpcyAwLgo+ICsg
ICAgc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7Cj4gKyAgICBjaGFyIHBhdGhbUEFUSF9NQVhd
Owo+ICsgICAgaW50IGVycm9yOwo+ICsKPiArICAgIHRyYWNlX3Zmc19ta25vZChwYXRobmFtZSwg
bW9kZSwgKmRldik7Cj4gKyAgICBpZiAoKGVycm9yID0gdGFza19jb252KHQsIHBhdGhuYW1lLCBW
V1JJVEUsIHBhdGgpKSAhPSAwKQo+ICsgICAgICAgIGdvdG8gb3V0X2Vycm5vOwo+ICsKPiArICAg
IGVycm9yID0gc3lzX21rbm9kKHBhdGgsIG1vZGUpOwo+ICsgICAgaWYgKGVycm9yKQo+ICsgICAg
ICAgIGdvdG8gb3V0X2Vycm5vOwo+ICsKPiArICAgIHRyYWNlX3Zmc19ta25vZF9yZXQoKTsKPiAr
ICAgIHJldHVybiAwOwo+ICsKPiArICAgIG91dF9lcnJubzoKPiArICAgIHRyYWNlX3Zmc19ta25v
ZF9lcnIoZXJyb3IpOwo+ICsgICAgZXJybm8gPSBlcnJvcjsKPiArICAgIHJldHVybiAtMTsKPiAr
fQo+ICsKPiAraW50IG1rbm9kKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBtb2RlX3QgbW9kZSwgZGV2
X3QgZGV2KQo+ICt7Cj4gKyAgICByZXR1cm4gX194bWtub2QoMCwgcGF0aG5hbWUsIG1vZGUsICZk
ZXYpOwo+ICt9Cj4gKwo+ICsKPiArVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbHNlZWssICIlZCAweCV4
ICVkIiwgaW50LCBvZmZfdCwgaW50KTsKPiArVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbHNlZWtfcmV0
LCAiMHgleCIsIG9mZl90KTsKPiArVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbHNlZWtfZXJyLCAiJWQi
LCBpbnQpOwo+ICsKPiArb2ZmX3QgbHNlZWsoaW50IGZkLCBvZmZfdCBvZmZzZXQsIGludCB3aGVu
Y2UpCj4gK3sKPiArICAgIHN0cnVjdCBmaWxlICpmcDsKPiArICAgIG9mZl90IG9yZzsKPiArICAg
IGludCBlcnJvcjsKPiArCj4gKyAgICB0cmFjZV92ZnNfbHNlZWsoZmQsIG9mZnNldCwgd2hlbmNl
KTsKPiArICAgIGVycm9yID0gZmdldChmZCwgJmZwKTsKPiArICAgIGlmIChlcnJvcikKPiArICAg
ICAgICBnb3RvIG91dF9lcnJubzsKPiArCj4gKyAgICBlcnJvciA9IHN5c19sc2VlayhmcCwgb2Zm
c2V0LCB3aGVuY2UsICZvcmcpOwo+ICsgICAgZmRyb3AoZnApOwo+ICsKPiArICAgIGlmIChlcnJv
cikKPiArICAgICAgICBnb3RvIG91dF9lcnJubzsKPiArICAgIHRyYWNlX3Zmc19sc2Vla19yZXQo
b3JnKTsKPiArICAgIHJldHVybiBvcmc7Cj4gKwo+ICsgICAgb3V0X2Vycm5vOgo+ICsgICAgdHJh
Y2VfdmZzX2xzZWVrX2VycihlcnJvcik7Cj4gKyAgICBlcnJubyA9IGVycm9yOwo+ICsgICAgcmV0
dXJuIC0xOwo+ICt9Cj4gKwo+ICtMRlM2NChsc2Vlayk7Cj4gKwo+ICtUUkFDRVBPSU5UKHRyYWNl
X3Zmc19wcmVhZCwgIiVkICVwIDB4JXggMHgleCIsIGludCwgdm9pZCosIHNpemVfdCwgb2ZmX3Qp
Owo+ICtUUkFDRVBPSU5UKHRyYWNlX3Zmc19wcmVhZF9yZXQsICIweCV4Iiwgc3NpemVfdCk7Cj4g
K1RSQUNFUE9JTlQodHJhY2VfdmZzX3ByZWFkX2VyciwgIiVkIiwgaW50KTsKPiArCj4gKy8vIElu
IEJTRCdzIGludGVybmFsIGltcGxlbWVudGF0aW9uIG9mIHJlYWQoKSBhbmQgd3JpdGUoKSBjb2Rl
LCBmb3IgZXhhbXBsZQo+ICsvLyBzb3NlbmRfZ2VuZXJpYygpLCBhIHBhcnRpYWwgcmVhZCBvciB3
cml0ZSByZXR1cm5zIGJvdGggYW4gRVdPVUxEQkxPQ0sgZXJyb3IKPiArLy8gKmFuZCogYSBub24t
emVybyBudW1iZXIgb2Ygd3JpdHRlbiBieXRlcy4gSW4gdGhhdCBjYXNlLCB3ZSBuZWVkIHRvIHpl
cm8gdGhlCj4gKy8vIGVycm9yLCBzbyB0aGUgc3lzdGVtIGNhbGwgYXBwZWFyIGEgc3VjY2Vzc2Z1
bCBwYXJ0aWFsIHJlYWQvd3JpdGUuCj4gKy8vIEluIEZyZWVCU0QsIGRvZmlsZXdyaXRlKCkgYW5k
IGRvZmlsZXJlYWQoKSAoc3lzX2dlbmVyaWMuYykgZG8gdGhpcyB0b28uCj4gK3N0YXRpYyBpbmxp
bmUgYm9vbCBoYXNfZXJyb3IoaW50IGVycm9yLCBpbnQgYnl0ZXMpCj4gK3sKPiArICAgIHJldHVy
biBlcnJvciAmJiAoCj4gKyAgICAgICAgICAgIChieXRlcyA9PSAwKSB8fAo+ICsgICAgICAgICAg
ICAoZXJyb3IgIT0gRVdPVUxEQkxPQ0sgJiYgZXJyb3IgIT0gRUlOVFIgJiYgZXJyb3IgIT0gRVJF
U1RBUlQpKTsKPiArfQo+ICsKPiArCj4gK3NzaXplX3QgcHJlYWQoaW50IGZkLCB2b2lkICpidWYs
IHNpemVfdCBjb3VudCwgb2ZmX3Qgb2Zmc2V0KQo+ICt7Cj4gKyAgICB0cmFjZV92ZnNfcHJlYWQo
ZmQsIGJ1ZiwgY291bnQsIG9mZnNldCk7Cj4gKyAgICBzdHJ1Y3QgaW92ZWMgaW92ID0gewo+ICsg
ICAgICAgICAgICAuaW92X2Jhc2UJPSBidWYsCj4gKyAgICAgICAgICAgIC5pb3ZfbGVuCT0gY291
bnQsCj4gKyAgICB9Owo+ICsgICAgc3RydWN0IGZpbGUgKmZwOwo+ICsgICAgc2l6ZV90IGJ5dGVz
Owo+ICsgICAgaW50IGVycm9yOwo+ICsKPiArICAgIGVycm9yID0gZmdldChmZCwgJmZwKTsKPiAr
ICAgIGlmIChlcnJvcikKPiArICAgICAgICBnb3RvIG91dF9lcnJubzsKPiArCj4gKyAgICBlcnJv
ciA9IHN5c19yZWFkKGZwLCAmaW92LCAxLCBvZmZzZXQsICZieXRlcyk7Cj4gKyAgICBmZHJvcChm
cCk7Cj4gKwo+ICsgICAgaWYgKGhhc19lcnJvcihlcnJvciwgYnl0ZXMpKQo+ICsgICAgICAgIGdv
dG8gb3V0X2Vycm5vOwo+ICsgICAgdHJhY2VfdmZzX3ByZWFkX3JldChieXRlcyk7Cj4gKyAgICBy
ZXR1cm4gYnl0ZXM7Cj4gKwo+ICsgICAgb3V0X2Vycm5vOgo+ICsgICAgdHJhY2VfdmZzX3ByZWFk
X2VycihlcnJvcik7Cj4gKyAgICBlcnJubyA9IGVycm9yOwo+ICsgICAgcmV0dXJuIC0xOwo+ICt9
Cj4gKwo+ICtMRlM2NChwcmVhZCk7Cj4gKwo+ICtzc2l6ZV90IHJlYWQoaW50IGZkLCB2b2lkICpi
dWYsIHNpemVfdCBjb3VudCkKPiArewo+ICsgICAgcmV0dXJuIHByZWFkKGZkLCBidWYsIGNvdW50
LCAtMSk7Cj4gK30KPiArCj4gK1RSQUNFUE9JTlQodHJhY2VfdmZzX3B3cml0ZSwgIiVkICVwIDB4
JXggMHgleCIsIGludCwgY29uc3Qgdm9pZCosIHNpemVfdCwgb2ZmX3QpOwo+ICtUUkFDRVBPSU5U
KHRyYWNlX3Zmc19wd3JpdGVfcmV0LCAiMHgleCIsIHNzaXplX3QpOwo+ICtUUkFDRVBPSU5UKHRy
YWNlX3Zmc19wd3JpdGVfZXJyLCAiJWQiLCBpbnQpOwo+ICsKPiArc3NpemVfdCBwd3JpdGUoaW50
IGZkLCBjb25zdCB2b2lkICpidWYsIHNpemVfdCBjb3VudCwgb2ZmX3Qgb2Zmc2V0KQo+ICt7Cj4g
KyAgICB0cmFjZV92ZnNfcHdyaXRlKGZkLCBidWYsIGNvdW50LCBvZmZzZXQpOwo+ICsgICAgc3Ry
dWN0IGlvdmVjIGlvdiA9IHsKPiArICAgICAgICAgICAgLmlvdl9iYXNlCT0gKHZvaWQgKilidWYs
Cj4gKyAgICAgICAgICAgIC5pb3ZfbGVuCT0gY291bnQsCj4gKyAgICB9Owo+ICsgICAgc3RydWN0
IGZpbGUgKmZwOwo+ICsgICAgc2l6ZV90IGJ5dGVzOwo+ICsgICAgaW50IGVycm9yOwo+ICsKPiAr
ICAgIGVycm9yID0gZmdldChmZCwgJmZwKTsKPiArICAgIGlmIChlcnJvcikKPiArICAgICAgICBn
b3RvIG91dF9lcnJubzsKPiArCj4gKyAgICBlcnJvciA9IHN5c193cml0ZShmcCwgJmlvdiwgMSwg
b2Zmc2V0LCAmYnl0ZXMpOwo+ICsgICAgZmRyb3AoZnApOwo+ICsKPiArICAgIGlmIChoYXNfZXJy
b3IoZXJyb3IsIGJ5dGVzKSkKPiArICAgICAgICBnb3RvIG91dF9lcnJubzsKPiArICAgIHRyYWNl
X3Zmc19wd3JpdGVfcmV0KGJ5dGVzKTsKPiArICAgIHJldHVybiBieXRlczsKPiArCj4gKyAgICBv
dXRfZXJybm86Cj4gKyAgICB0cmFjZV92ZnNfcHdyaXRlX2VycihlcnJvcik7Cj4gKyAgICBlcnJu
byA9IGVycm9yOwo+ICsgICAgcmV0dXJuIC0xOwo+ICt9Cj4gKwo+ICtMRlM2NChwd3JpdGUpOwo+
ICsKPiArc3NpemVfdCB3cml0ZShpbnQgZmQsIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGNvdW50
KQo+ICt7Cj4gKyAgICByZXR1cm4gcHdyaXRlKGZkLCBidWYsIGNvdW50LCAtMSk7Cj4gK30KPiAr
Cj4gK3NzaXplX3QgcHJlYWR2KGludCBmZCwgY29uc3Qgc3RydWN0IGlvdmVjICppb3YsIGludCBp
b3ZjbnQsIG9mZl90IG9mZnNldCkKPiArewo+ICsgICAgc3RydWN0IGZpbGUgKmZwOwo+ICsgICAg
c2l6ZV90IGJ5dGVzOwo+ICsgICAgaW50IGVycm9yOwo+ICsKPiArICAgIGVycm9yID0gZmdldChm
ZCwgJmZwKTsKPiArICAgIGlmIChlcnJvcikKPiArICAgICAgICBnb3RvIG91dF9lcnJubzsKPiAr
Cj4gKyAgICBlcnJvciA9IHN5c19yZWFkKGZwLCBpb3YsIGlvdmNudCwgb2Zmc2V0LCAmYnl0ZXMp
Owo+ICsgICAgZmRyb3AoZnApOwo+ICsKPiArICAgIGlmIChoYXNfZXJyb3IoZXJyb3IsIGJ5dGVz
KSkKPiArICAgICAgICBnb3RvIG91dF9lcnJubzsKPiArICAgIHJldHVybiBieXRlczsKPiArCj4g
KyAgICBvdXRfZXJybm86Cj4gKyAgICBlcnJubyA9IGVycm9yOwo+ICsgICAgcmV0dXJuIC0xOwo+
ICt9Cj4gKwo+ICtMRlM2NChwcmVhZHYpOwo+ICsKPiArc3NpemVfdCByZWFkdihpbnQgZmQsIGNv
bnN0IHN0cnVjdCBpb3ZlYyAqaW92LCBpbnQgaW92Y250KQo+ICt7Cj4gKyAgICByZXR1cm4gcHJl
YWR2KGZkLCBpb3YsIGlvdmNudCwgLTEpOwo+ICt9Cj4gKwo+ICtUUkFDRVBPSU5UKHRyYWNlX3Zm
c19wd3JpdGV2LCAiJWQgJXAgMHgleCAweCV4IiwgaW50LCBjb25zdCBzdHJ1Y3QgaW92ZWMqLCBp
bnQsIG9mZl90KTsKPiArVFJBQ0VQT0lOVCh0cmFjZV92ZnNfcHdyaXRldl9yZXQsICIweCV4Iiwg
c3NpemVfdCk7Cj4gK1RSQUNFUE9JTlQodHJhY2VfdmZzX3B3cml0ZXZfZXJyLCAiJWQiLCBpbnQp
Owo+ICsKPiArc3NpemVfdCBwd3JpdGV2KGludCBmZCwgY29uc3Qgc3RydWN0IGlvdmVjICppb3Ys
IGludCBpb3ZjbnQsIG9mZl90IG9mZnNldCkKPiArewo+ICsgICAgc3RydWN0IGZpbGUgKmZwOwo+
ICsgICAgc2l6ZV90IGJ5dGVzOwo+ICsgICAgaW50IGVycm9yOwo+ICsKPiArICAgIHRyYWNlX3Zm
c19wd3JpdGV2KGZkLCBpb3YsIGlvdmNudCwgb2Zmc2V0KTsKPiArICAgIGVycm9yID0gZmdldChm
ZCwgJmZwKTsKPiArICAgIGlmIChlcnJvcikKPiArICAgICAgICBnb3RvIG91dF9lcnJubzsKPiAr
Cj4gKyAgICBlcnJvciA9IHN5c193cml0ZShmcCwgaW92LCBpb3ZjbnQsIG9mZnNldCwgJmJ5dGVz
KTsKPiArICAgIGZkcm9wKGZwKTsKPiArCj4gKyAgICBpZiAoaGFzX2Vycm9yKGVycm9yLCBieXRl
cykpCj4gKyAgICAgICAgZ290byBvdXRfZXJybm87Cj4gKyAgICB0cmFjZV92ZnNfcHdyaXRldl9y
ZXQoYnl0ZXMpOwo+ICsgICAgcmV0dXJuIGJ5dGVzOwo+ICsKPiArICAgIG91dF9lcnJubzoKPiAr
ICAgIHRyYWNlX3Zmc19wd3JpdGV2X2VycihlcnJvcik7Cj4gKyAgICBlcnJubyA9IGVycm9yOwo+
ICsgICAgcmV0dXJuIC0xOwo+ICt9Cj4gK0xGUzY0KHB3cml0ZXYpOwo+ICsKPiArc3NpemVfdCB3
cml0ZXYoaW50IGZkLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlvdiwgaW50IGlvdmNudCkKPiArewo+
ICsgICAgcmV0dXJuIHB3cml0ZXYoZmQsIGlvdiwgaW92Y250LCAtMSk7Cj4gK30KPiArCj4gK1RS
QUNFUE9JTlQodHJhY2VfdmZzX2lvY3RsLCAiJWQgMHgleCIsIGludCwgdW5zaWduZWQgbG9uZyk7
Cj4gK1RSQUNFUE9JTlQodHJhY2VfdmZzX2lvY3RsX3JldCwgIiIpOwo+ICtUUkFDRVBPSU5UKHRy
YWNlX3Zmc19pb2N0bF9lcnIsICIlZCIsIGludCk7Cj4gKwo+ICtpbnQgaW9jdGwoaW50IGZkLCB1
bnNpZ25lZCBsb25nIGludCByZXF1ZXN0LCAuLi4pCj4gK3sKPiArICAgIHN0cnVjdCBmaWxlICpm
cDsKPiArICAgIGludCBlcnJvcjsKPiArICAgIHZhX2xpc3QgYXA7Cj4gKyAgICB2b2lkKiBhcmc7
Cj4gKwo+ICsgICAgdHJhY2VfdmZzX2lvY3RsKGZkLCByZXF1ZXN0KTsKPiArICAgIC8qIGdsaWJj
IEFCSSBwcm92aWRlcyBhIHZhcmlhZGljIHByb3RvdHlwZSBmb3IgaW9jdGwgc28gd2UgbmVlZCB0
byBhZ3JlZQo+ICsgICAgICogd2l0aCBpdCwgc2luY2Ugd2Ugbm93IGluY2x1ZGUgc3lzL2lvY3Rs
LmgKPiArICAgICAqIHJlYWQgdGhlIGZpcnN0IGFyZ3VtZW50IGFuZCBwYXNzIGl0IHRvIHN5c19p
b2N0bCgpICovCj4gKyAgICB2YV9zdGFydChhcCwgcmVxdWVzdCk7Cj4gKyAgICBhcmcgPSB2YV9h
cmcoYXAsIHZvaWQqKTsKPiArICAgIHZhX2VuZChhcCk7Cj4gKwo+ICsgICAgZXJyb3IgPSBmZ2V0
KGZkLCAmZnApOwo+ICsgICAgaWYgKGVycm9yKQo+ICsgICAgICAgIGdvdG8gb3V0X2Vycm5vOwo+
ICsKPiArICAgIGVycm9yID0gc3lzX2lvY3RsKGZwLCByZXF1ZXN0LCBhcmcpOwo+ICsgICAgZmRy
b3AoZnApOwo+ICsKPiArICAgIGlmIChlcnJvcikKPiArICAgICAgICBnb3RvIG91dF9lcnJubzsK
PiArICAgIHRyYWNlX3Zmc19pb2N0bF9yZXQoKTsKPiArICAgIHJldHVybiAwOwo+ICsKPiArICAg
IG91dF9lcnJubzoKPiArICAgIHRyYWNlX3Zmc19pb2N0bF9lcnIoZXJyb3IpOwo+ICsgICAgZXJy
bm8gPSBlcnJvcjsKPiArICAgIHJldHVybiAtMTsKPiArfQo+ICsKPiArVFJBQ0VQT0lOVCh0cmFj
ZV92ZnNfZnN5bmMsICIlZCIsIGludCk7Cj4gK1RSQUNFUE9JTlQodHJhY2VfdmZzX2ZzeW5jX3Jl
dCwgIiIpOwo+ICtUUkFDRVBPSU5UKHRyYWNlX3Zmc19mc3luY19lcnIsICIlZCIsIGludCk7Cj4g
Kwo+ICtpbnQgZnN5bmMoaW50IGZkKQo+ICt7Cj4gKyAgICBzdHJ1Y3QgZmlsZSAqZnA7Cj4gKyAg
ICBpbnQgZXJyb3I7Cj4gKwo+ICsgICAgdHJhY2VfdmZzX2ZzeW5jKGZkKTsKPiArICAgIGVycm9y
ID0gZmdldChmZCwgJmZwKTsKPiArICAgIGlmIChlcnJvcikKPiArICAgICAgICBnb3RvIG91dF9l
cnJubzsKPiArCj4gKyAgICBlcnJvciA9IHN5c19mc3luYyhmcCk7Cj4gKyAgICBmZHJvcChmcCk7
Cj4gKwo+ICsgICAgaWYgKGVycm9yKQo+ICsgICAgICAgIGdvdG8gb3V0X2Vycm5vOwo+ICsgICAg
dHJhY2VfdmZzX2ZzeW5jX3JldCgpOwo+ICsgICAgcmV0dXJuIDA7Cj4gKwo+ICsgICAgb3V0X2Vy
cm5vOgo+ICsgICAgdHJhY2VfdmZzX2ZzeW5jX2VycihlcnJvcik7Cj4gKyAgICBlcnJubyA9IGVy
cm9yOwo+ICsgICAgcmV0dXJuIC0xOwo+ICt9Cj4gKwo+ICtpbnQgZmRhdGFzeW5jKGludCBmZCkK
PiArewo+ICsgICAgLy8gVE9ETzogU2VlIGlmIHdlIGNhbiBkbyBsZXNzIHRoYW4gZnN5bmMoKS4K
PiArICAgIHJldHVybiBmc3luYyhmZCk7Cj4gK30KPiArCj4gK1RSQUNFUE9JTlQodHJhY2VfdmZz
X2ZzdGF0LCAiJWQgJXAiLCBpbnQsIHN0cnVjdCBzdGF0Kik7Cj4gK1RSQUNFUE9JTlQodHJhY2Vf
dmZzX2ZzdGF0X3JldCwgIiIpOwo+ICtUUkFDRVBPSU5UKHRyYWNlX3Zmc19mc3RhdF9lcnIsICIl
ZCIsIGludCk7Cj4gKwo+ICtleHRlcm4gIkMiCj4gK2ludCBfX2Z4c3RhdChpbnQgdmVyLCBpbnQg
ZmQsIHN0cnVjdCBzdGF0ICpzdCkKPiArewo+ICsgICAgc3RydWN0IGZpbGUgKmZwOwo+ICsgICAg
aW50IGVycm9yOwo+ICsKPiArICAgIHRyYWNlX3Zmc19mc3RhdChmZCwgc3QpOwo+ICsKPiArICAg
IGVycm9yID0gZmdldChmZCwgJmZwKTsKPiArICAgIGlmIChlcnJvcikKPiArICAgICAgICBnb3Rv
IG91dF9lcnJubzsKPiArCj4gKyAgICBlcnJvciA9IHN5c19mc3RhdChmcCwgc3QpOwo+ICsgICAg
ZmRyb3AoZnApOwo+ICsKPiArICAgIGlmIChlcnJvcikKPiArICAgICAgICBnb3RvIG91dF9lcnJu
bzsKPiArICAgIHRyYWNlX3Zmc19mc3RhdF9yZXQoKTsKPiArICAgIHJldHVybiAwOwo+ICsKPiAr
ICAgIG91dF9lcnJubzoKPiArICAgIHRyYWNlX3Zmc19mc3RhdF9lcnIoZXJyb3IpOwo+ICsgICAg
ZXJybm8gPSBlcnJvcjsKPiArICAgIHJldHVybiAtMTsKPiArfQo+ICsKPiArTEZTNjQoX19meHN0
YXQpOwo+ICsKPiArZXh0ZXJuICJDIgo+ICtpbnQgZnN0YXQoaW50IGZkLCBzdHJ1Y3Qgc3RhdCAq
c3QpCj4gK3sKPiArICAgIHJldHVybiBfX2Z4c3RhdCgxLCBmZCwgc3QpOwo+ICt9Cj4gKwo+ICtM
RlM2NChmc3RhdCk7Cj4gKwo+ICtleHRlcm4gIkMiCj4gK2ludCBfX2Z4c3RhdGF0KGludCB2ZXIs
IGludCBkaXJmZCwgY29uc3QgY2hhciAqcGF0aG5hbWUsIHN0cnVjdCBzdGF0ICpzdCwKPiArICAg
ICAgICBpbnQgZmxhZ3MpCj4gK3sKPiArICAgIGlmIChmbGFncyAmIEFUX1NZTUxJTktfTk9GT0xM
T1cpIHsKPiArICAgICAgICBVTklNUExFTUVOVEVEKCJmc3RhdGF0KCkgd2l0aCBBVF9TWU1MSU5L
X05PRk9MTE9XIik7Cj4gKyAgICB9Cj4gKwo+ICsgICAgaWYgKHBhdGhuYW1lWzBdID09ICcvJyB8
fCBkaXJmZCA9PSBBVF9GRENXRCkgewo+ICsgICAgICAgIHJldHVybiBzdGF0KHBhdGhuYW1lLCBz
dCk7Cj4gKyAgICB9Cj4gKyAgICAvLyBJZiBBVF9FTVBUWV9QQVRIIGFuZCBwYXRobmFtZSBpcyBh
biBlbXB0eSBzdHJpbmcsIGZzdGF0YXQoKSBvcGVyYXRlcyBvbgo+ICsgICAgLy8gZGlyZmQgaXRz
ZWxmLCBhbmQgaW4gdGhhdCBjYXNlIGl0IGRvZXNuJ3QgaGF2ZSB0byBiZSBhIGRpcmVjdG9yeS4K
PiArICAgIGlmICgoZmxhZ3MgJiBBVF9FTVBUWV9QQVRIKSAmJiAhcGF0aG5hbWVbMF0pIHsKPiAr
ICAgICAgICByZXR1cm4gZnN0YXQoZGlyZmQsIHN0KTsKPiArICAgIH0KPiArCj4gKyAgICBzdHJ1
Y3QgZmlsZSAqZnA7Cj4gKyAgICBpbnQgZXJyb3IgPSBmZ2V0KGRpcmZkLCAmZnApOwo+ICsgICAg
aWYgKGVycm9yKSB7Cj4gKyAgICAgICAgZXJybm8gPSBlcnJvcjsKPiArICAgICAgICByZXR1cm4g
LTE7Cj4gKyAgICB9Cj4gKwo+ICsgICAgc3RydWN0IHZub2RlICp2cCA9IGZwLT5mX2RlbnRyeS0+
ZF92bm9kZTsKPiArICAgIHZuX2xvY2sodnApOwo+ICsKPiArICAgIHN0ZDo6dW5pcXVlX3B0cjxj
aGFyIFtdPiB1cCAobmV3IGNoYXJbUEFUSF9NQVhdKTsKPiArICAgIGNoYXIgKnAgPSB1cC5nZXQo
KTsKPiArICAgIC8qIGJ1aWxkIGFic29sdXRlIHBhdGggKi8KPiArICAgIHN0cmxjcHkocCwgZnAt
PmZfZGVudHJ5LT5kX21vdW50LT5tX3BhdGgsIFBBVEhfTUFYKTsKPiArICAgIHN0cmxjYXQocCwg
ZnAtPmZfZGVudHJ5LT5kX3BhdGgsIFBBVEhfTUFYKTsKPiArICAgIHN0cmxjYXQocCwgIi8iLCBQ
QVRIX01BWCk7Cj4gKyAgICBzdHJsY2F0KHAsIHBhdGhuYW1lLCBQQVRIX01BWCk7Cj4gKwo+ICsg
ICAgZXJyb3IgPSBzdGF0KHAsIHN0KTsKPiArCj4gKyAgICB2bl91bmxvY2sodnApOwo+ICsgICAg
ZmRyb3AoZnApOwo+ICsKPiArICAgIHJldHVybiBlcnJvcjsKPiArfQo+ICsKPiArTEZTNjQoX19m
eHN0YXRhdCk7Cj4gKwo+ICtleHRlcm4gIkMiCj4gK2ludCBmc3RhdGF0KGludCBkaXJmZCwgY29u
c3QgY2hhciAqcGF0aCwgc3RydWN0IHN0YXQgKnN0LCBpbnQgZmxhZ3MpCj4gK3sKPiArICAgIHJl
dHVybiBfX2Z4c3RhdGF0KDEsIGRpcmZkLCBwYXRoLCBzdCwgZmxhZ3MpOwo+ICt9Cj4gKwo+ICtM
RlM2NChmc3RhdGF0KTsKPiArCj4gK2V4dGVybiAiQyIgaW50IGZsb2NrKGludCBmZCwgaW50IG9w
ZXJhdGlvbikKPiArewo+ICsgICAgaWYgKCFmaWxlcmVmX2Zyb21fZmQoZmQpKSB7Cj4gKyAgICAg
ICAgcmV0dXJuIGxpYmNfZXJyb3IoRUJBREYpOwo+ICsgICAgfQo+ICsKPiArICAgIHN3aXRjaCAo
b3BlcmF0aW9uKSB7Cj4gKyAgICBjYXNlIExPQ0tfU0g6Cj4gKyAgICBjYXNlIExPQ0tfU0ggfCBM
T0NLX05COgo+ICsgICAgY2FzZSBMT0NLX0VYOgo+ICsgICAgY2FzZSBMT0NLX0VYIHwgTE9DS19O
QjoKPiArICAgIGNhc2UgTE9DS19VTjoKPiArICAgICAgICBicmVhazsKPiArICAgIGRlZmF1bHQ6
Cj4gKyAgICAgICAgcmV0dXJuIGxpYmNfZXJyb3IoRUlOVkFMKTsKPiArICAgIH0KPiArCj4gKyAg
ICByZXR1cm4gMDsKPiArfQo+ICsKPiArVFJBQ0VQT0lOVCh0cmFjZV92ZnNfcmVhZGRpciwgIiVk
ICVwIiwgaW50LCBkaXJlbnQqKTsKPiArVFJBQ0VQT0lOVCh0cmFjZV92ZnNfcmVhZGRpcl9yZXQs
ICIiKTsKPiArVFJBQ0VQT0lOVCh0cmFjZV92ZnNfcmVhZGRpcl9lcnIsICIlZCIsIGludCk7Cj4g
Kwo+ICtzdHJ1Y3QgX19kaXJzdHJlYW0KPiArewo+ICsgICAgaW50IGZkOwo+ICt9Owo+ICsKPiAr
RElSICpvcGVuZGlyKGNvbnN0IGNoYXIgKnBhdGgpCj4gK3sKPiArICAgIERJUiAqZGlyID0gbmV3
IERJUjsKPiArCj4gKyAgICBpZiAoIWRpcikKPiArICAgICAgICByZXR1cm4gbGliY19lcnJvcl9w
dHI8RElSPihFTk9NRU0pOwo+ICsKPiArICAgIGRpci0+ZmQgPSBvcGVuKHBhdGgsIE9fUkRPTkxZ
KTsKPiArICAgIGlmIChkaXItPmZkIDwgMCkgewo+ICsgICAgICAgIGRlbGV0ZSBkaXI7Cj4gKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Cj4gKyAgICB9Cj4gKyAgICByZXR1cm4gZGlyOwo+ICt9Cj4g
Kwo+ICtESVIgKmZkb3BlbmRpcihpbnQgZmQpCj4gK3sKPiArICAgIERJUiAqZGlyOwo+ICsgICAg
c3RydWN0IHN0YXQgc3Q7Cj4gKyAgICBpZiAoZnN0YXQoZmQsICZzdCkgPCAwKSB7Cj4gKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Cj4gKyAgICB9Cj4gKyAgICBpZiAoIVNfSVNESVIoc3Quc3RfbW9k
ZSkpIHsKPiArICAgICAgICBlcnJubyA9IEVOT1RESVI7Cj4gKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7Cj4gKyAgICB9Cj4gKyAgICBkaXIgPSBuZXcgRElSOwo+ICsgICAgZGlyLT5mZCA9IGZkOwo+
ICsgICAgcmV0dXJuIGRpcjsKPiArCj4gK30KPiArCj4gK2ludCBkaXJmZChESVIgKmRpcnApCj4g
K3sKPiArICAgIGlmICghZGlycCkgewo+ICsgICAgICAgIHJldHVybiBsaWJjX2Vycm9yKEVJTlZB
TCk7Cj4gKyAgICB9Cj4gKwo+ICsgICAgcmV0dXJuIGRpcnAtPmZkOwo+ICt9Cj4gKwo+ICtpbnQg
Y2xvc2VkaXIoRElSICpkaXIpCj4gK3sKPiArICAgIGNsb3NlKGRpci0+ZmQpOwo+ICsgICAgZGVs
ZXRlIGRpcjsKPiArICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdHJ1Y3QgZGlyZW50ICpyZWFk
ZGlyKERJUiAqZGlyKQo+ICt7Cj4gKyAgICBzdGF0aWMgX190aHJlYWQgc3RydWN0IGRpcmVudCBl
bnRyeSwgKnJlc3VsdDsKPiArICAgIGludCByZXQ7Cj4gKwo+ICsgICAgcmV0ID0gcmVhZGRpcl9y
KGRpciwgJmVudHJ5LCAmcmVzdWx0KTsKPiArICAgIGlmIChyZXQpCj4gKyAgICAgICAgcmV0dXJu
IGxpYmNfZXJyb3JfcHRyPHN0cnVjdCBkaXJlbnQ+KHJldCk7Cj4gKwo+ICsgICAgZXJybm8gPSAw
Owo+ICsgICAgcmV0dXJuIHJlc3VsdDsKPiArfQo+ICsKPiAraW50IHJlYWRkaXJfcihESVIgKmRp
ciwgc3RydWN0IGRpcmVudCAqZW50cnksIHN0cnVjdCBkaXJlbnQgKipyZXN1bHQpCj4gK3sKPiAr
ICAgIGludCBlcnJvcjsKPiArICAgIHN0cnVjdCBmaWxlICpmcDsKPiArCj4gKyAgICB0cmFjZV92
ZnNfcmVhZGRpcihkaXItPmZkLCBlbnRyeSk7Cj4gKyAgICBlcnJvciA9IGZnZXQoZGlyLT5mZCwg
JmZwKTsKPiArICAgIGlmIChlcnJvcikgewo+ICsgICAgICAgIHRyYWNlX3Zmc19yZWFkZGlyX2Vy
cihlcnJvcik7Cj4gKyAgICB9IGVsc2Ugewo+ICsgICAgICAgIGVycm9yID0gc3lzX3JlYWRkaXIo
ZnAsIGVudHJ5KTsKPiArICAgICAgICBmZHJvcChmcCk7Cj4gKyAgICAgICAgaWYgKGVycm9yKSB7
Cj4gKyAgICAgICAgICAgIHRyYWNlX3Zmc19yZWFkZGlyX2VycihlcnJvcik7Cj4gKyAgICAgICAg
fSBlbHNlIHsKPiArICAgICAgICAgICAgdHJhY2VfdmZzX3JlYWRkaXJfcmV0KCk7Cj4gKyAgICAg
ICAgfQo+ICsgICAgfQo+ICsgICAgLy8gT3VyIGRpcmVudCBoYXMgKGxpa2UgTGludXgpIGEgZF9y
ZWNsZW4gZmllbGQsIGJ1dCBhIGNvbnN0YW50IHNpemUuCj4gKyAgICBlbnRyeS0+ZF9yZWNsZW4g
PSBzaXplb2YoKmVudHJ5KTsKPiArCj4gKyAgICBpZiAoZXJyb3IpIHsKPiArICAgICAgICAqcmVz
dWx0ID0gbnVsbHB0cjsKPiArICAgIH0gZWxzZSB7Cj4gKyAgICAgICAgKnJlc3VsdCA9IGVudHJ5
Owo+ICsgICAgfQo+ICsgICAgcmV0dXJuIGVycm9yID09IEVOT0VOVCA/IDAgOiBlcnJvcjsKPiAr
fQo+ICsKPiArLy8gRklYTUU6IGluIDY0Yml0IGRpcmVudDY0IGFuZCBkaXJlbnQgYXJlIGlkZW50
aWNhbCwgc28gaXQncyBzYWZlIHRvIGFsaWFzCj4gKyN1bmRlZiByZWFkZGlyNjRfcgo+ICtleHRl
cm4gIkMiIGludCByZWFkZGlyNjRfcihESVIgKmRpciwgc3RydWN0IGRpcmVudDY0ICplbnRyeSwK
PiArICAgICAgICBzdHJ1Y3QgZGlyZW50NjQgKipyZXN1bHQpCj4gKyAgICAgICAgX19hdHRyaWJ1
dGVfXygoYWxpYXMoInJlYWRkaXJfciIpKSk7Cj4gKwo+ICsjdW5kZWYgcmVhZGRpcjY0Cj4gK2V4
dGVybiAiQyIgc3RydWN0IGRpcmVudCAqcmVhZGRpcjY0KERJUiAqZGlyKSBfX2F0dHJpYnV0ZV9f
KChhbGlhcygicmVhZGRpciIpKSk7Cj4gKwo+ICt2b2lkIHJld2luZGRpcihESVIgKmRpcnApCj4g
K3sKPiArICAgIHN0cnVjdCBmaWxlICpmcDsKPiArCj4gKyAgICBhdXRvIGVycm9yID0gZmdldChk
aXJwLT5mZCwgJmZwKTsKPiArICAgIGlmIChlcnJvcikgewo+ICsgICAgICAgIC8vIFBPU0lYIHNw
ZWNpZmllcyB0aGF0IHdoYXQgcmV3aW5kZGlyKCkgZG9lcyBpbiB0aGUgY2FzZSBvZiBlcnJvcgo+
ICsgICAgICAgIC8vIGlzIHVuZGVmaW5lZC4uLgo+ICsgICAgICAgIHJldHVybjsKPiArICAgIH0K
PiArCj4gKyAgICBzeXNfcmV3aW5kZGlyKGZwKTsKPiArICAgIC8vIEFnYWluLCBlcnJvciBjb2Rl
IGZyb20gc3lzX3Jld2luZGRpcigpIGlzIGlnbm9yZWQuCj4gKyAgICBmZHJvcChmcCk7Cj4gK30K
PiArCj4gK2xvbmcgdGVsbGRpcihESVIgKmRpcnApCj4gK3sKPiArICAgIHN0cnVjdCBmaWxlICpm
cDsKPiArICAgIGludCBlcnJvciA9IGZnZXQoZGlycC0+ZmQsICZmcCk7Cj4gKyAgICBpZiAoZXJy
b3IpIHsKPiArICAgICAgICByZXR1cm4gbGliY19lcnJvcihlcnJvcik7Cj4gKyAgICB9Cj4gKwo+
ICsgICAgbG9uZyBsb2M7Cj4gKyAgICBlcnJvciA9IHN5c190ZWxsZGlyKGZwLCAmbG9jKTsKPiAr
ICAgIGZkcm9wKGZwKTsKPiArICAgIGlmIChlcnJvcikgewo+ICsgICAgICAgIHJldHVybiBsaWJj
X2Vycm9yKGVycm9yKTsKPiArICAgIH0KPiArICAgIHJldHVybiBsb2M7Cj4gK30KPiArCj4gK3Zv
aWQgc2Vla2RpcihESVIgKmRpcnAsIGxvbmcgbG9jKQo+ICt7Cj4gKyAgICBzdHJ1Y3QgZmlsZSAq
ZnA7Cj4gKyAgICBpbnQgZXJyb3IgPSBmZ2V0KGRpcnAtPmZkLCAmZnApOwo+ICsgICAgaWYgKGVy
cm9yKSB7Cj4gKyAgICAgICAgLy8gUE9TSVggc3BlY2lmaWVzIHNlZWtkaXIoKSBjYW5ub3QgcmV0
dXJuIGVycm9ycy4KPiArICAgICAgICByZXR1cm47Cj4gKyAgICB9Cj4gKyAgICBzeXNfc2Vla2Rp
cihmcCwgbG9jKTsKPiArICAgIC8vIEFnYWluLCBlcnJvciBjb2RlIGZyb20gc3lzX3NlZWtkaXIo
KSBpcyBpZ25vcmVkLgo+ICsgICAgZmRyb3AoZnApOwo+ICt9Cj4gKwo+ICtUUkFDRVBPSU5UKHRy
YWNlX3Zmc19ta2RpciwgIlwiJXNcIiAwJTBvIiwgY29uc3QgY2hhciosIG1vZGVfdCk7Cj4gK1RS
QUNFUE9JTlQodHJhY2VfdmZzX21rZGlyX3JldCwgIiIpOwo+ICtUUkFDRVBPSU5UKHRyYWNlX3Zm
c19ta2Rpcl9lcnIsICIlZCIsIGludCk7Cj4gKwo+ICtpbnQKPiArbWtkaXIoY29uc3QgY2hhciAq
cGF0aG5hbWUsIG1vZGVfdCBtb2RlKQo+ICt7Cj4gKyAgICBzdHJ1Y3QgdGFzayAqdCA9IG1haW5f
dGFzazsKPiArICAgIGNoYXIgcGF0aFtQQVRIX01BWF07Cj4gKyAgICBpbnQgZXJyb3I7Cj4gKwo+
ICsgICAgbW9kZSA9IGFwcGx5X3VtYXNrKG1vZGUpOwo+ICsKPiArICAgIHRyYWNlX3Zmc19ta2Rp
cihwYXRobmFtZSwgbW9kZSk7Cj4gKyAgICBpZiAoKGVycm9yID0gdGFza19jb252KHQsIHBhdGhu
YW1lLCBWV1JJVEUsIHBhdGgpKSAhPSAwKQo+ICsgICAgICAgIGdvdG8gb3V0X2Vycm5vOwo+ICsK
PiArICAgIGVycm9yID0gc3lzX21rZGlyKHBhdGgsIG1vZGUpOwo+ICsgICAgaWYgKGVycm9yKQo+
ICsgICAgICAgIGdvdG8gb3V0X2Vycm5vOwo+ICsgICAgdHJhY2VfdmZzX21rZGlyX3JldCgpOwo+
ICsgICAgcmV0dXJuIDA7Cj4gKyAgICBvdXRfZXJybm86Cj4gKyAgICB0cmFjZV92ZnNfbWtkaXJf
ZXJyKGVycm9yKTsKPiArICAgIGVycm5vID0gZXJyb3I7Cj4gKyAgICByZXR1cm4gLTE7Cj4gK30K
PiArCj4gK1RSQUNFUE9JTlQodHJhY2VfdmZzX3JtZGlyLCAiXCIlc1wiIiwgY29uc3QgY2hhciop
Owo+ICtUUkFDRVBPSU5UKHRyYWNlX3Zmc19ybWRpcl9yZXQsICIiKTsKPiArVFJBQ0VQT0lOVCh0
cmFjZV92ZnNfcm1kaXJfZXJyLCAiJWQiLCBpbnQpOwo+ICsKPiAraW50IHJtZGlyKGNvbnN0IGNo
YXIgKnBhdGhuYW1lKQo+ICt7Cj4gKyAgICBzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKPiAr
ICAgIGNoYXIgcGF0aFtQQVRIX01BWF07Cj4gKyAgICBpbnQgZXJyb3I7Cj4gKwo+ICsgICAgdHJh
Y2VfdmZzX3JtZGlyKHBhdGhuYW1lKTsKPiArICAgIGVycm9yID0gRU5PRU5UOwo+ICsgICAgaWYg
KHBhdGhuYW1lID09IG51bGxwdHIpCj4gKyAgICAgICAgZ290byBvdXRfZXJybm87Cj4gKyAgICBp
ZiAoKGVycm9yID0gdGFza19jb252KHQsIHBhdGhuYW1lLCBWV1JJVEUsIHBhdGgpKSAhPSAwKQo+
ICsgICAgICAgIGdvdG8gb3V0X2Vycm5vOwo+ICsKPiArICAgIGVycm9yID0gc3lzX3JtZGlyKHBh
dGgpOwo+ICsgICAgaWYgKGVycm9yKQo+ICsgICAgICAgIGdvdG8gb3V0X2Vycm5vOwo+ICsgICAg
dHJhY2VfdmZzX3JtZGlyX3JldCgpOwo+ICsgICAgcmV0dXJuIDA7Cj4gKyAgICBvdXRfZXJybm86
Cj4gKyAgICB0cmFjZV92ZnNfcm1kaXJfZXJyKGVycm9yKTsKPiArICAgIGVycm5vID0gZXJyb3I7
Cj4gKyAgICByZXR1cm4gLTE7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkCj4gK2dldF9sYXN0X2Nv
bXBvbmVudChjb25zdCBjaGFyICpwYXRoLCBjaGFyICpkc3QpCj4gK3sKPiArICAgIGludCBwb3Mg
PSBzdHJsZW4ocGF0aCkgLSAxOwo+ICsKPiArICAgIHdoaWxlIChwb3MgPj0gMCAmJiBwYXRoW3Bv
c10gPT0gJy8nKQo+ICsgICAgICAgIHBvcy0tOwo+ICsKPiArICAgIGludCBjb21wb25lbnRfZW5k
ID0gcG9zOwo+ICsKPiArICAgIHdoaWxlIChwb3MgPj0gMCAmJiBwYXRoW3Bvc10gIT0gJy8nKQo+
ICsgICAgICAgIHBvcy0tOwo+ICsKPiArICAgIGludCBjb21wb25lbnRfc3RhcnQgPSBwb3MgKyAx
Owo+ICsKPiArICAgIGludCBsZW4gPSBjb21wb25lbnRfZW5kIC0gY29tcG9uZW50X3N0YXJ0ICsg
MTsKPiArICAgIG1lbWNweShkc3QsIHBhdGggKyBjb21wb25lbnRfc3RhcnQsIGxlbik7Cj4gKyAg
ICBkc3RbbGVuXSA9IDA7Cj4gK30KPiArCj4gK3N0YXRpYyBib29sIG51bGxfb3JfZW1wdHkoY29u
c3QgY2hhciAqc3RyKQo+ICt7Cj4gKyAgICByZXR1cm4gc3RyID09IG51bGxwdHIgfHwgKnN0ciA9
PSAnXDAnOwo+ICt9Cj4gKwo+ICtUUkFDRVBPSU5UKHRyYWNlX3Zmc19yZW5hbWUsICJcIiVzXCIg
XCIlc1wiIiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKTsKPiArVFJBQ0VQT0lOVCh0cmFjZV92
ZnNfcmVuYW1lX3JldCwgIiIpOwo+ICtUUkFDRVBPSU5UKHRyYWNlX3Zmc19yZW5hbWVfZXJyLCAi
JWQiLCBpbnQpOwo+ICsKPiAraW50IHJlbmFtZShjb25zdCBjaGFyICpvbGRwYXRoLCBjb25zdCBj
aGFyICpuZXdwYXRoKQo+ICt7Cj4gKyAgICB0cmFjZV92ZnNfcmVuYW1lKG9sZHBhdGgsIG5ld3Bh
dGgpOwo+ICsgICAgc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7Cj4gKyAgICBjaGFyIHNyY1tQ
QVRIX01BWF07Cj4gKyAgICBjaGFyIGRlc3RbUEFUSF9NQVhdOwo+ICsgICAgaW50IGVycm9yOwo+
ICsKPiArICAgIGVycm9yID0gRU5PRU5UOwo+ICsgICAgaWYgKG51bGxfb3JfZW1wdHkob2xkcGF0
aCkgfHwgbnVsbF9vcl9lbXB0eShuZXdwYXRoKSkKPiArICAgICAgICBnb3RvIG91dF9lcnJubzsK
PiArCj4gKyAgICBnZXRfbGFzdF9jb21wb25lbnQob2xkcGF0aCwgc3JjKTsKPiArICAgIGlmICgh
c3RyY21wKHNyYywgIi4iKSB8fCAhc3RyY21wKHNyYywgIi4uIikpIHsKPiArICAgICAgICBlcnJv
ciA9IEVJTlZBTDsKPiArICAgICAgICBnb3RvIG91dF9lcnJubzsKPiArICAgIH0KPiArCj4gKyAg
ICBnZXRfbGFzdF9jb21wb25lbnQobmV3cGF0aCwgZGVzdCk7Cj4gKyAgICBpZiAoIXN0cmNtcChk
ZXN0LCAiLiIpIHx8ICFzdHJjbXAoZGVzdCwgIi4uIikpIHsKPiArICAgICAgICBlcnJvciA9IEVJ
TlZBTDsKPiArICAgICAgICBnb3RvIG91dF9lcnJubzsKPiArICAgIH0KPiArCj4gKyAgICBpZiAo
KGVycm9yID0gdGFza19jb252KHQsIG9sZHBhdGgsIFZSRUFELCBzcmMpKSAhPSAwKQo+ICsgICAg
ICAgIGdvdG8gb3V0X2Vycm5vOwo+ICsKPiArICAgIGlmICgoZXJyb3IgPSB0YXNrX2NvbnYodCwg
bmV3cGF0aCwgVldSSVRFLCBkZXN0KSkgIT0gMCkKPiArICAgICAgICBnb3RvIG91dF9lcnJubzsK
PiArCj4gKyAgICBlcnJvciA9IHN5c19yZW5hbWUoc3JjLCBkZXN0KTsKPiArICAgIGlmIChlcnJv
cikKPiArICAgICAgICBnb3RvIG91dF9lcnJubzsKPiArICAgIHRyYWNlX3Zmc19yZW5hbWVfcmV0
KCk7Cj4gKyAgICByZXR1cm4gMDsKPiArICAgIG91dF9lcnJubzoKPiArICAgIHRyYWNlX3Zmc19y
ZW5hbWVfZXJyKGVycm9yKTsKPiArICAgIGVycm5vID0gZXJyb3I7Cj4gKyAgICByZXR1cm4gLTE7
Cj4gK30KPiArCj4gK1RSQUNFUE9JTlQodHJhY2VfdmZzX2NoZGlyLCAiXCIlc1wiIiwgY29uc3Qg
Y2hhciopOwo+ICtUUkFDRVBPSU5UKHRyYWNlX3Zmc19jaGRpcl9yZXQsICIiKTsKPiArVFJBQ0VQ
T0lOVCh0cmFjZV92ZnNfY2hkaXJfZXJyLCAiJWQiLCBpbnQpOwo+ICsKPiArc3RhdGljIGludCBy
ZXBsYWNlX2N3ZChzdHJ1Y3QgdGFzayAqdCwgc3RydWN0IGZpbGUgKm5ld19jd2RmcCwKPiArICAg
ICAgICAgICAgICAgICAgICAgICBzdGQ6OmZ1bmN0aW9uPGludCAodm9pZCk+IGNoZGlyX2Z1bmMp
Cj4gK3sKPiArICAgIHN0cnVjdCBmaWxlICpvbGQgPSBudWxscHRyOwo+ICsKPiArICAgIGlmICgh
dCkgewo+ICsgICAgICAgIHJldHVybiAwOwo+ICsgICAgfQo+ICsKPiArICAgIGlmICh0LT50X2N3
ZGZwKSB7Cj4gKyAgICAgICAgb2xkID0gdC0+dF9jd2RmcDsKPiArICAgIH0KPiArCj4gKyAgICAv
KiBEbyB0aGUgYWN0dWFsIGNoZGlyIG9wZXJhdGlvbiBoZXJlICovCj4gKyAgICBpbnQgZXJyb3Ig
PSBjaGRpcl9mdW5jKCk7Cj4gKwo+ICsgICAgdC0+dF9jd2RmcCA9IG5ld19jd2RmcDsKPiArICAg
IGlmIChvbGQpIHsKPiArICAgICAgICBmZHJvcChvbGQpOwo+ICsgICAgfQo+ICsKPiArICAgIHJl
dHVybiBlcnJvcjsKPiArfQo+ICsKPiAraW50IGNoZGlyKGNvbnN0IGNoYXIgKnBhdGhuYW1lKQo+
ICt7Cj4gKyAgICB0cmFjZV92ZnNfY2hkaXIocGF0aG5hbWUpOwo+ICsgICAgc3RydWN0IHRhc2sg
KnQgPSBtYWluX3Rhc2s7Cj4gKyAgICBjaGFyIHBhdGhbUEFUSF9NQVhdOwo+ICsgICAgc3RydWN0
IGZpbGUgKmZwOwo+ICsgICAgaW50IGVycm9yOwo+ICsKPiArICAgIGVycm9yID0gRU5PRU5UOwo+
ICsgICAgaWYgKHBhdGhuYW1lID09IG51bGxwdHIpCj4gKyAgICAgICAgZ290byBvdXRfZXJybm87
Cj4gKwo+ICsgICAgaWYgKChlcnJvciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwgVlJFQUQsIHBh
dGgpKSAhPSAwKQo+ICsgICAgICAgIGdvdG8gb3V0X2Vycm5vOwo+ICsKPiArICAgIC8qIENoZWNr
IGlmIGRpcmVjdG9yeSBleGl0cyAqLwo+ICsgICAgZXJyb3IgPSBzeXNfb3BlbihwYXRoLCBPX0RJ
UkVDVE9SWSwgMCwgJmZwKTsKPiArICAgIGlmIChlcnJvcikgewo+ICsgICAgICAgIGdvdG8gb3V0
X2Vycm5vOwo+ICsgICAgfQo+ICsKPiArICAgIHJlcGxhY2VfY3dkKHQsIGZwLCBbJl0oKSB7IHN0
cmxjcHkodC0+dF9jd2QsIHBhdGgsIHNpemVvZih0LT50X2N3ZCkpOyByZXR1cm4gMDsgfSk7Cj4g
Kwo+ICsgICAgdHJhY2VfdmZzX2NoZGlyX3JldCgpOwo+ICsgICAgcmV0dXJuIDA7Cj4gKyAgICBv
dXRfZXJybm86Cj4gKyAgICBlcnJubyA9IGVycm9yOwo+ICsgICAgdHJhY2VfdmZzX2NoZGlyX2Vy
cihlcnJubyk7Cj4gKyAgICByZXR1cm4gLTE7Cj4gK30KPiArCj4gK1RSQUNFUE9JTlQodHJhY2Vf
dmZzX2ZjaGRpciwgIiVkIiwgaW50KTsKPiArVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZmNoZGlyX3Jl
dCwgIiIpOwo+ICtUUkFDRVBPSU5UKHRyYWNlX3Zmc19mY2hkaXJfZXJyLCAiJWQiLCBpbnQpOwo+
ICsKPiAraW50IGZjaGRpcihpbnQgZmQpCj4gK3sKPiArICAgIHRyYWNlX3Zmc19mY2hkaXIoZmQp
Owo+ICsgICAgc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7Cj4gKyAgICBzdHJ1Y3QgZmlsZSAq
ZnA7Cj4gKyAgICBpbnQgZXJyb3I7Cj4gKwo+ICsgICAgZXJyb3IgPSBmZ2V0KGZkLCAmZnApOwo+
ICsgICAgaWYgKGVycm9yKQo+ICsgICAgICAgIGdvdG8gb3V0X2Vycm5vOwo+ICsKPiArICAgIGVy
cm9yID0gcmVwbGFjZV9jd2QodCwgZnAsIFsmXSgpIHsgcmV0dXJuIHN5c19mY2hkaXIoZnAsIHQt
PnRfY3dkKTsgfSk7Cj4gKyAgICBpZiAoZXJyb3IpIHsKPiArICAgICAgICBmZHJvcChmcCk7Cj4g
KyAgICAgICAgZ290byBvdXRfZXJybm87Cj4gKyAgICB9Cj4gKwo+ICsgICAgdHJhY2VfdmZzX2Zj
aGRpcl9yZXQoKTsKPiArICAgIHJldHVybiAwOwo+ICsKPiArICAgIG91dF9lcnJubzoKPiArICAg
IHRyYWNlX3Zmc19mY2hkaXJfZXJyKGVycm9yKTsKPiArICAgIGVycm5vID0gZXJyb3I7Cj4gKyAg
ICByZXR1cm4gLTE7Cj4gK30KPiArCj4gK1RSQUNFUE9JTlQodHJhY2VfdmZzX2xpbmssICJcIiVz
XCIgXCIlc1wiIiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKTsKPiArVFJBQ0VQT0lOVCh0cmFj
ZV92ZnNfbGlua19yZXQsICIiKTsKPiArVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbGlua19lcnIsICIl
ZCIsIGludCk7Cj4gKwo+ICtpbnQgbGluayhjb25zdCBjaGFyICpvbGRwYXRoLCBjb25zdCBjaGFy
ICpuZXdwYXRoKQo+ICt7Cj4gKyAgICBzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKPiArICAg
IGNoYXIgcGF0aDFbUEFUSF9NQVhdOwo+ICsgICAgY2hhciBwYXRoMltQQVRIX01BWF07Cj4gKyAg
ICBpbnQgZXJyb3I7Cj4gKwo+ICsgICAgdHJhY2VfdmZzX2xpbmsob2xkcGF0aCwgbmV3cGF0aCk7
Cj4gKwo+ICsgICAgZXJyb3IgPSBFTk9FTlQ7Cj4gKyAgICBpZiAob2xkcGF0aCA9PSBudWxscHRy
IHx8IG5ld3BhdGggPT0gbnVsbHB0cikKPiArICAgICAgICBnb3RvIG91dF9lcnJubzsKPiArICAg
IGlmICgoZXJyb3IgPSB0YXNrX2NvbnYodCwgb2xkcGF0aCwgVldSSVRFLCBwYXRoMSkpICE9IDAp
Cj4gKyAgICAgICAgZ290byBvdXRfZXJybm87Cj4gKyAgICBpZiAoKGVycm9yID0gdGFza19jb252
KHQsIG5ld3BhdGgsIFZXUklURSwgcGF0aDIpKSAhPSAwKQo+ICsgICAgICAgIGdvdG8gb3V0X2Vy
cm5vOwo+ICsKPiArICAgIGVycm9yID0gc3lzX2xpbmsocGF0aDEsIHBhdGgyKTsKPiArICAgIGlm
IChlcnJvcikKPiArICAgICAgICBnb3RvIG91dF9lcnJubzsKPiArICAgIHRyYWNlX3Zmc19saW5r
X3JldCgpOwo+ICsgICAgcmV0dXJuIDA7Cj4gKyAgICBvdXRfZXJybm86Cj4gKyAgICB0cmFjZV92
ZnNfbGlua19lcnIoZXJyb3IpOwo+ICsgICAgZXJybm8gPSBlcnJvcjsKPiArICAgIHJldHVybiAt
MTsKPiArfQo+ICsKPiArCj4gK1RSQUNFUE9JTlQodHJhY2VfdmZzX3N5bWxpbmssICJvbGRwYXRo
PSVzLCBuZXdwYXRoPSVzIiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKTsKPiArVFJBQ0VQT0lO
VCh0cmFjZV92ZnNfc3ltbGlua19yZXQsICIiKTsKPiArVFJBQ0VQT0lOVCh0cmFjZV92ZnNfc3lt
bGlua19lcnIsICJlcnJubz0lZCIsIGludCk7Cj4gKwo+ICtpbnQgc3ltbGluayhjb25zdCBjaGFy
ICpvbGRwYXRoLCBjb25zdCBjaGFyICpuZXdwYXRoKQo+ICt7Cj4gKyAgICBpbnQgZXJyb3I7Cj4g
Kwo+ICsgICAgdHJhY2VfdmZzX3N5bWxpbmsob2xkcGF0aCwgbmV3cGF0aCk7Cj4gKwo+ICsgICAg
ZXJyb3IgPSBFTk9FTlQ7Cj4gKyAgICBpZiAob2xkcGF0aCA9PSBudWxscHRyIHx8IG5ld3BhdGgg
PT0gbnVsbHB0cikgewo+ICsgICAgICAgIGVycm5vID0gRU5PRU5UOwo+ICsgICAgICAgIHRyYWNl
X3Zmc19zeW1saW5rX2VycihlcnJvcik7Cj4gKyAgICAgICAgcmV0dXJuICgtMSk7Cj4gKyAgICB9
Cj4gKwo+ICsgICAgZXJyb3IgPSBzeXNfc3ltbGluayhvbGRwYXRoLCBuZXdwYXRoKTsKPiArICAg
IGlmIChlcnJvcikgewo+ICsgICAgICAgIGVycm5vID0gZXJyb3I7Cj4gKyAgICAgICAgdHJhY2Vf
dmZzX3N5bWxpbmtfZXJyKGVycm9yKTsKPiArICAgICAgICByZXR1cm4gKC0xKTsKPiArICAgIH0K
PiArCj4gKyAgICB0cmFjZV92ZnNfc3ltbGlua19yZXQoKTsKPiArICAgIHJldHVybiAwOwo+ICt9
Cj4gKwo+ICtUUkFDRVBPSU5UKHRyYWNlX3Zmc191bmxpbmssICJcIiVzXCIiLCBjb25zdCBjaGFy
Kik7Cj4gK1RSQUNFUE9JTlQodHJhY2VfdmZzX3VubGlua19yZXQsICIiKTsKPiArVFJBQ0VQT0lO
VCh0cmFjZV92ZnNfdW5saW5rX2VyciwgIiVkIiwgaW50KTsKPiArCj4gK2ludCB1bmxpbmsoY29u
c3QgY2hhciAqcGF0aG5hbWUpCj4gK3sKPiArICAgIHRyYWNlX3Zmc191bmxpbmsocGF0aG5hbWUp
Owo+ICsgICAgc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7Cj4gKyAgICBjaGFyIHBhdGhbUEFU
SF9NQVhdOwo+ICsgICAgaW50IGVycm9yOwo+ICsKPiArICAgIGVycm9yID0gRU5PRU5UOwo+ICsg
ICAgaWYgKHBhdGhuYW1lID09IG51bGxwdHIpCj4gKyAgICAgICAgZ290byBvdXRfZXJybm87Cj4g
KyAgICBpZiAoKGVycm9yID0gdGFza19jb252KHQsIHBhdGhuYW1lLCBWV1JJVEUsIHBhdGgpKSAh
PSAwKQo+ICsgICAgICAgIGdvdG8gb3V0X2Vycm5vOwo+ICsKPiArICAgIGVycm9yID0gc3lzX3Vu
bGluayhwYXRoKTsKPiArICAgIGlmIChlcnJvcikKPiArICAgICAgICBnb3RvIG91dF9lcnJubzsK
PiArICAgIHRyYWNlX3Zmc191bmxpbmtfcmV0KCk7Cj4gKyAgICByZXR1cm4gMDsKPiArICAgIG91
dF9lcnJubzoKPiArICAgIHRyYWNlX3Zmc191bmxpbmtfZXJyKGVycm9yKTsKPiArICAgIGVycm5v
ID0gZXJyb3I7Cj4gKyAgICByZXR1cm4gLTE7Cj4gK30KPiArCj4gK1RSQUNFUE9JTlQodHJhY2Vf
dmZzX3N0YXQsICJcIiVzXCIgJXAiLCBjb25zdCBjaGFyKiwgc3RydWN0IHN0YXQqKTsKPiArVFJB
Q0VQT0lOVCh0cmFjZV92ZnNfc3RhdF9yZXQsICIiKTsKPiArVFJBQ0VQT0lOVCh0cmFjZV92ZnNf
c3RhdF9lcnIsICIlZCIsIGludCk7Cj4gKwo+ICtleHRlcm4gIkMiCj4gK2ludCBfX3hzdGF0KGlu
dCB2ZXIsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBzdHJ1Y3Qgc3RhdCAqc3QpCj4gK3sKPiArICAg
IHN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOwo+ICsgICAgY2hhciBwYXRoW1BBVEhfTUFYXTsK
PiArICAgIGludCBlcnJvcjsKPiArCj4gKyAgICB0cmFjZV92ZnNfc3RhdChwYXRobmFtZSwgc3Qp
Owo+ICsKPiArICAgIGVycm9yID0gdGFza19jb252KHQsIHBhdGhuYW1lLCAwLCBwYXRoKTsKPiAr
ICAgIGlmIChlcnJvcikKPiArICAgICAgICBnb3RvIG91dF9lcnJubzsKPiArCj4gKyAgICBlcnJv
ciA9IHN5c19zdGF0KHBhdGgsIHN0KTsKPiArICAgIGlmIChlcnJvcikKPiArICAgICAgICBnb3Rv
IG91dF9lcnJubzsKPiArICAgIHRyYWNlX3Zmc19zdGF0X3JldCgpOwo+ICsgICAgcmV0dXJuIDA7
Cj4gKwo+ICsgICAgb3V0X2Vycm5vOgo+ICsgICAgdHJhY2VfdmZzX3N0YXRfZXJyKGVycm9yKTsK
PiArICAgIGVycm5vID0gZXJyb3I7Cj4gKyAgICByZXR1cm4gLTE7Cj4gK30KPiArCj4gK0xGUzY0
KF9feHN0YXQpOwo+ICsKPiAraW50IHN0YXQoY29uc3QgY2hhciAqcGF0aG5hbWUsIHN0cnVjdCBz
dGF0ICpzdCkKPiArewo+ICsgICAgcmV0dXJuIF9feHN0YXQoMSwgcGF0aG5hbWUsIHN0KTsKPiAr
fQo+ICsKPiArTEZTNjQoc3RhdCk7Cj4gKwo+ICtUUkFDRVBPSU5UKHRyYWNlX3Zmc19sc3RhdCwg
InBhdGhuYW1lPSVzLCBzdGF0PSVwIiwgY29uc3QgY2hhciosIHN0cnVjdCBzdGF0Kik7Cj4gK1RS
QUNFUE9JTlQodHJhY2VfdmZzX2xzdGF0X3JldCwgIiIpOwo+ICtUUkFDRVBPSU5UKHRyYWNlX3Zm
c19sc3RhdF9lcnIsICJlcnJubz0lZCIsIGludCk7Cj4gK2V4dGVybiAiQyIKPiAraW50IF9fbHhz
dGF0KGludCB2ZXIsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBzdHJ1Y3Qgc3RhdCAqc3QpCj4gK3sK
PiArICAgIHN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOwo+ICsgICAgY2hhciBwYXRoW1BBVEhf
TUFYXTsKPiArICAgIGludCBlcnJvcjsKPiArCj4gKyAgICB0cmFjZV92ZnNfbHN0YXQocGF0aG5h
bWUsIHN0KTsKPiArCj4gKyAgICBlcnJvciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwgMCwgcGF0
aCk7Cj4gKyAgICBpZiAoZXJyb3IpIHsKPiArICAgICAgICBlcnJubyA9IGVycm9yOwo+ICsgICAg
ICAgIHRyYWNlX3Zmc19sc3RhdF9lcnIoZXJyb3IpOwo+ICsgICAgICAgIHJldHVybiAoLTEpOwo+
ICsgICAgfQo+ICsKPiArICAgIGVycm9yID0gc3lzX2xzdGF0KHBhdGgsIHN0KTsKPiArICAgIGlm
IChlcnJvcikgewo+ICsgICAgICAgIGVycm5vID0gZXJyb3I7Cj4gKyAgICAgICAgdHJhY2VfdmZz
X2xzdGF0X2VycihlcnJvcik7Cj4gKyAgICAgICAgcmV0dXJuICgtMSk7Cj4gKyAgICB9Cj4gKwo+
ICsgICAgdHJhY2VfdmZzX2xzdGF0X3JldCgpOwo+ICsgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4g
K0xGUzY0KF9fbHhzdGF0KTsKPiArCj4gK2ludCBsc3RhdChjb25zdCBjaGFyICpwYXRobmFtZSwg
c3RydWN0IHN0YXQgKnN0KQo+ICt7Cj4gKyAgICByZXR1cm4gX19seHN0YXQoMSwgcGF0aG5hbWUs
IHN0KTsKPiArfQo+ICsKPiArTEZTNjQobHN0YXQpOwo+ICsKPiArVFJBQ0VQT0lOVCh0cmFjZV92
ZnNfc3RhdGZzLCAiXCIlc1wiICVwIiwgY29uc3QgY2hhciosIHN0cnVjdCBzdGF0ZnMqKTsKPiAr
VFJBQ0VQT0lOVCh0cmFjZV92ZnNfc3RhdGZzX3JldCwgIiIpOwo+ICtUUkFDRVBPSU5UKHRyYWNl
X3Zmc19zdGF0ZnNfZXJyLCAiJWQiLCBpbnQpOwo+ICsKPiArZXh0ZXJuICJDIgo+ICtpbnQgX19z
dGF0ZnMoY29uc3QgY2hhciAqcGF0aG5hbWUsIHN0cnVjdCBzdGF0ZnMgKmJ1ZikKPiArewo+ICsg
ICAgdHJhY2VfdmZzX3N0YXRmcyhwYXRobmFtZSwgYnVmKTsKPiArICAgIHN0cnVjdCB0YXNrICp0
ID0gbWFpbl90YXNrOwo+ICsgICAgY2hhciBwYXRoW1BBVEhfTUFYXTsKPiArICAgIGludCBlcnJv
cjsKPiArCj4gKyAgICBlcnJvciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwgMCwgcGF0aCk7Cj4g
KyAgICBpZiAoZXJyb3IpCj4gKyAgICAgICAgZ290byBvdXRfZXJybm87Cj4gKwo+ICsgICAgZXJy
b3IgPSBzeXNfc3RhdGZzKHBhdGgsIGJ1Zik7Cj4gKyAgICBpZiAoZXJyb3IpCj4gKyAgICAgICAg
Z290byBvdXRfZXJybm87Cj4gKyAgICB0cmFjZV92ZnNfc3RhdGZzX3JldCgpOwo+ICsgICAgcmV0
dXJuIDA7Cj4gKyAgICBvdXRfZXJybm86Cj4gKyAgICB0cmFjZV92ZnNfc3RhdGZzX2VycihlcnJv
cik7Cj4gKyAgICBlcnJubyA9IGVycm9yOwo+ICsgICAgcmV0dXJuIC0xOwo+ICt9Cj4gK3dlYWtf
YWxpYXMoX19zdGF0ZnMsIHN0YXRmcyk7Cj4gKwo+ICtMRlM2NChzdGF0ZnMpOwo+ICsKPiArVFJB
Q0VQT0lOVCh0cmFjZV92ZnNfZnN0YXRmcywgIlwiJXNcIiAlcCIsIGludCwgc3RydWN0IHN0YXRm
cyopOwo+ICtUUkFDRVBPSU5UKHRyYWNlX3Zmc19mc3RhdGZzX3JldCwgIiIpOwo+ICtUUkFDRVBP
SU5UKHRyYWNlX3Zmc19mc3RhdGZzX2VyciwgIiVkIiwgaW50KTsKPiArCj4gK2V4dGVybiAiQyIK
PiAraW50IF9fZnN0YXRmcyhpbnQgZmQsIHN0cnVjdCBzdGF0ZnMgKmJ1ZikKPiArewo+ICsgICAg
c3RydWN0IGZpbGUgKmZwOwo+ICsgICAgaW50IGVycm9yOwo+ICsKPiArICAgIHRyYWNlX3Zmc19m
c3RhdGZzKGZkLCBidWYpOwo+ICsgICAgZXJyb3IgPSBmZ2V0KGZkLCAmZnApOwo+ICsgICAgaWYg
KGVycm9yKQo+ICsgICAgICAgIGdvdG8gb3V0X2Vycm5vOwo+ICsKPiArICAgIGVycm9yID0gc3lz
X2ZzdGF0ZnMoZnAsIGJ1Zik7Cj4gKyAgICBmZHJvcChmcCk7Cj4gKwo+ICsgICAgaWYgKGVycm9y
KQo+ICsgICAgICAgIGdvdG8gb3V0X2Vycm5vOwo+ICsgICAgdHJhY2VfdmZzX2ZzdGF0ZnNfcmV0
KCk7Cj4gKyAgICByZXR1cm4gMDsKPiArCj4gKyAgICBvdXRfZXJybm86Cj4gKyAgICB0cmFjZV92
ZnNfZnN0YXRmc19lcnIoZXJyb3IpOwo+ICsgICAgZXJybm8gPSBlcnJvcjsKPiArICAgIHJldHVy
biAtMTsKPiArfQo+ICt3ZWFrX2FsaWFzKF9fZnN0YXRmcywgZnN0YXRmcyk7Cj4gKwo+ICtMRlM2
NChmc3RhdGZzKTsKPiArCj4gK3N0YXRpYyBpbnQKPiArc3RhdGZzX3RvX3N0YXR2ZnMoc3RydWN0
IHN0YXR2ZnMgKmRzdCwgc3RydWN0IHN0YXRmcyAqc3JjKQo+ICt7Cj4gKyAgICBkc3QtPmZfYnNp
emUgPSBzcmMtPmZfYnNpemU7Cj4gKyAgICBkc3QtPmZfZnJzaXplID0gc3JjLT5mX2JzaXplOwo+
ICsgICAgZHN0LT5mX2Jsb2NrcyA9IHNyYy0+Zl9ibG9ja3M7Cj4gKyAgICBkc3QtPmZfYmZyZWUg
PSBzcmMtPmZfYmZyZWU7Cj4gKyAgICBkc3QtPmZfYmF2YWlsID0gc3JjLT5mX2JhdmFpbDsKPiAr
ICAgIGRzdC0+Zl9maWxlcyA9IHNyYy0+Zl9maWxlczsKPiArICAgIGRzdC0+Zl9mZnJlZSA9IHNy
Yy0+Zl9mZnJlZTsKPiArICAgIGRzdC0+Zl9mYXZhaWwgPSAwOwo+ICsgICAgZHN0LT5mX2ZzaWQg
PSBzcmMtPmZfZnNpZC5fX3ZhbFswXTsKPiArICAgIGRzdC0+Zl9mbGFnID0gc3JjLT5mX2ZsYWdz
Owo+ICsgICAgZHN0LT5mX25hbWVtYXggPSBzcmMtPmZfbmFtZWxlbjsKPiArICAgIHJldHVybiAw
Owo+ICt9Cj4gKwo+ICtpbnQKPiArc3RhdHZmcyhjb25zdCBjaGFyICpwYXRobmFtZSwgc3RydWN0
IHN0YXR2ZnMgKmJ1ZikKPiArewo+ICsgICAgc3RydWN0IHN0YXRmcyBzdDsKPiArCj4gKyAgICBp
ZiAoX19zdGF0ZnMocGF0aG5hbWUsICZzdCkgPCAwKQo+ICsgICAgICAgIHJldHVybiAtMTsKPiAr
ICAgIHJldHVybiBzdGF0ZnNfdG9fc3RhdHZmcyhidWYsICZzdCk7Cj4gK30KPiArCj4gK0xGUzY0
KHN0YXR2ZnMpOwo+ICsKPiAraW50Cj4gK2ZzdGF0dmZzKGludCBmZCwgc3RydWN0IHN0YXR2ZnMg
KmJ1ZikKPiArewo+ICsgICAgc3RydWN0IHN0YXRmcyBzdDsKPiArCj4gKyAgICBpZiAoX19mc3Rh
dGZzKGZkLCAmc3QpIDwgMCkKPiArICAgICAgICByZXR1cm4gLTE7Cj4gKyAgICByZXR1cm4gc3Rh
dGZzX3RvX3N0YXR2ZnMoYnVmLCAmc3QpOwo+ICt9Cj4gKwo+ICtMRlM2NChmc3RhdHZmcyk7Cj4g
Kwo+ICsKPiArVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZ2V0Y3dkLCAiJXAgJWQiLCBjaGFyKiwgc2l6
ZV90KTsKPiArVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZ2V0Y3dkX3JldCwgIlwiJXNcIiIsIGNvbnN0
IGNoYXIqKTsKPiArVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZ2V0Y3dkX2VyciwgIiVkIiwgaW50KTsK
PiArCj4gK2NoYXIgKmdldGN3ZChjaGFyICpwYXRoLCBzaXplX3Qgc2l6ZSkKPiArewo+ICsgICAg
dHJhY2VfdmZzX2dldGN3ZChwYXRoLCBzaXplKTsKPiArICAgIHN0cnVjdCB0YXNrICp0ID0gbWFp
bl90YXNrOwo+ICsgICAgaW50IGxlbiA9IHN0cmxlbih0LT50X2N3ZCkgKyAxOwo+ICsgICAgaW50
IGVycm9yOwo+ICsKPiArICAgIGlmICghcGF0aCkgewo+ICsgICAgICAgIGlmICghc2l6ZSkKPiAr
ICAgICAgICAgICAgc2l6ZSA9IGxlbjsKPiArICAgICAgICBwYXRoID0gKGNoYXIqKW1hbGxvYyhz
aXplKTsKPiArICAgICAgICBpZiAoIXBhdGgpIHsKPiArICAgICAgICAgICAgZXJyb3IgPSBFTk9N
RU07Cj4gKyAgICAgICAgICAgIGdvdG8gb3V0X2Vycm5vOwo+ICsgICAgICAgIH0KPiArICAgIH0g
ZWxzZSB7Cj4gKyAgICAgICAgaWYgKCFzaXplKSB7Cj4gKyAgICAgICAgICAgIGVycm9yID0gRUlO
VkFMOwo+ICsgICAgICAgICAgICBnb3RvIG91dF9lcnJubzsKPiArICAgICAgICB9Cj4gKyAgICB9
Cj4gKwo+ICsgICAgaWYgKHNpemUgPCBsZW4pIHsKPiArICAgICAgICBlcnJvciA9IEVSQU5HRTsK
PiArICAgICAgICBnb3RvIG91dF9lcnJubzsKPiArICAgIH0KPiArCj4gKyAgICBtZW1jcHkocGF0
aCwgdC0+dF9jd2QsIGxlbik7Cj4gKyAgICB0cmFjZV92ZnNfZ2V0Y3dkX3JldChwYXRoKTsKPiAr
ICAgIHJldHVybiBwYXRoOwo+ICsKPiArICAgIG91dF9lcnJubzoKPiArICAgIHRyYWNlX3Zmc19n
ZXRjd2RfZXJyKGVycm9yKTsKPiArICAgIGVycm5vID0gZXJyb3I7Cj4gKyAgICByZXR1cm4gbnVs
bHB0cjsKPiArfQo+ICsKPiArVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZHVwLCAiJWQiLCBpbnQpOwo+
ICtUUkFDRVBPSU5UKHRyYWNlX3Zmc19kdXBfcmV0LCAiXCIlc1wiIiwgaW50KTsKPiArVFJBQ0VQ
T0lOVCh0cmFjZV92ZnNfZHVwX2VyciwgIiVkIiwgaW50KTsKPiArLyoKPiArICogRHVwbGljYXRl
IGEgZmlsZSBkZXNjcmlwdG9yCj4gKyAqLwo+ICtpbnQgZHVwKGludCBvbGRmZCkKPiArewo+ICsg
ICAgc3RydWN0IGZpbGUgKmZwOwo+ICsgICAgaW50IG5ld2ZkOwo+ICsgICAgaW50IGVycm9yOwo+
ICsKPiArICAgIHRyYWNlX3Zmc19kdXAob2xkZmQpOwo+ICsgICAgZXJyb3IgPSBmZ2V0KG9sZGZk
LCAmZnApOwo+ICsgICAgaWYgKGVycm9yKQo+ICsgICAgICAgIGdvdG8gb3V0X2Vycm5vOwo+ICsK
PiArICAgIGVycm9yID0gZmRhbGxvYyhmcCwgJm5ld2ZkKTsKPiArICAgIGlmIChlcnJvcikKPiAr
ICAgICAgICBnb3RvIG91dF9mZHJvcDsKPiArCj4gKyAgICBmZHJvcChmcCk7Cj4gKyAgICB0cmFj
ZV92ZnNfZHVwX3JldChuZXdmZCk7Cj4gKyAgICByZXR1cm4gbmV3ZmQ7Cj4gKwo+ICsgICAgb3V0
X2Zkcm9wOgo+ICsgICAgZmRyb3AoZnApOwo+ICsgICAgb3V0X2Vycm5vOgo+ICsgICAgdHJhY2Vf
dmZzX2R1cF9lcnIoZXJyb3IpOwo+ICsgICAgZXJybm8gPSBlcnJvcjsKPiArICAgIHJldHVybiAt
MTsKPiArfQo+ICsKPiArVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZHVwMywgIiVkICVkIDB4JXgiLCBp
bnQsIGludCwgaW50KTsKPiArVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZHVwM19yZXQsICIlZCIsIGlu
dCk7Cj4gK1RSQUNFUE9JTlQodHJhY2VfdmZzX2R1cDNfZXJyLCAiJWQiLCBpbnQpOwo+ICsvKgo+
ICsgKiBEdXBsaWNhdGUgYSBmaWxlIGRlc2NyaXB0b3IgdG8gYSBwYXJ0aWN1bGFyIHZhbHVlLgo+
ICsgKi8KPiAraW50IGR1cDMoaW50IG9sZGZkLCBpbnQgbmV3ZmQsIGludCBmbGFncykKPiArewo+
ICsgICAgc3RydWN0IGZpbGUgKmZwOwo+ICsgICAgaW50IGVycm9yOwo+ICsKPiArICAgIHRyYWNl
X3Zmc19kdXAzKG9sZGZkLCBuZXdmZCwgZmxhZ3MpOwo+ICsgICAgLyoKPiArICAgICAqIERvbid0
IGFsbG93IGFueSBhcmd1bWVudCBidXQgT19DTE9FWEVDLiAgQnV0IHdlIGV2ZW4gaWdub3JlCj4g
KyAgICAgKiB0aGF0IGFzIHdlIGRvbid0IHN1cHBvcnQgZXhlYygpIGFuZCB0aHVzIGRvbid0IGNh
cmUuCj4gKyAgICAgKi8KPiArICAgIGlmICgoZmxhZ3MgJiB+T19DTE9FWEVDKSAhPSAwKSB7Cj4g
KyAgICAgICAgZXJyb3IgPSBFSU5WQUw7Cj4gKyAgICAgICAgZ290byBvdXRfZXJybm87Cj4gKyAg
ICB9Cj4gKwo+ICsgICAgaWYgKG9sZGZkID09IG5ld2ZkKSB7Cj4gKyAgICAgICAgZXJyb3IgPSBF
SU5WQUw7Cj4gKyAgICAgICAgZ290byBvdXRfZXJybm87Cj4gKyAgICB9Cj4gKwo+ICsgICAgZXJy
b3IgPSBmZ2V0KG9sZGZkLCAmZnApOwo+ICsgICAgaWYgKGVycm9yKQo+ICsgICAgICAgIGdvdG8g
b3V0X2Vycm5vOwo+ICsKPiArICAgIGVycm9yID0gZmRzZXQobmV3ZmQsIGZwKTsKPiArICAgIGlm
IChlcnJvcikgewo+ICsgICAgICAgIGZkcm9wKGZwKTsKPiArICAgICAgICBnb3RvIG91dF9lcnJu
bzsKPiArICAgIH0KPiArCj4gKyAgICBmZHJvcChmcCk7Cj4gKyAgICB0cmFjZV92ZnNfZHVwM19y
ZXQobmV3ZmQpOwo+ICsgICAgcmV0dXJuIG5ld2ZkOwo+ICsKPiArICAgIG91dF9lcnJubzoKPiAr
ICAgIHRyYWNlX3Zmc19kdXAzX2VycihlcnJvcik7Cj4gKyAgICBlcnJubyA9IGVycm9yOwo+ICsg
ICAgcmV0dXJuIC0xOwo+ICt9Cj4gKwo+ICtpbnQgZHVwMihpbnQgb2xkZmQsIGludCBuZXdmZCkK
PiArewo+ICsgICAgaWYgKG9sZGZkID09IG5ld2ZkKQo+ICsgICAgICAgIHJldHVybiBuZXdmZDsK
PiArCj4gKyAgICByZXR1cm4gZHVwMyhvbGRmZCwgbmV3ZmQsIDApOwo+ICt9Cj4gKwo+ICsvKgo+
ICsgKiBUaGUgZmlsZSBjb250cm9sIHN5c3RlbSBjYWxsLgo+ICsgKi8KPiArI2RlZmluZSBTRVRG
TCAoT19BUFBFTkQgfCBPX0FTWU5DIHwgT19ESVJFQ1QgfCBPX05PQVRJTUUgfCBPX05PTkJMT0NL
KQo+ICsKPiArVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZmNudGwsICIlZCAlZCAweCV4IiwgaW50LCBp
bnQsIGludCk7Cj4gK1RSQUNFUE9JTlQodHJhY2VfdmZzX2ZjbnRsX3JldCwgIlwiJXNcIiIsIGlu
dCk7Cj4gK1RSQUNFUE9JTlQodHJhY2VfdmZzX2ZjbnRsX2VyciwgIiVkIiwgaW50KTsKPiArCj4g
K2V4dGVybiAiQyIKPiAraW50IGZjbnRsKGludCBmZCwgaW50IGNtZCwgaW50IGFyZykKPiArewo+
ICsgICAgc3RydWN0IGZpbGUgKmZwOwo+ICsgICAgaW50IHJldCA9IDAsIGVycm9yOwo+ICsgICAg
aW50IHRtcDsKPiArCj4gKyAgICB0cmFjZV92ZnNfZmNudGwoZmQsIGNtZCwgYXJnKTsKPiArICAg
IGVycm9yID0gZmdldChmZCwgJmZwKTsKPiArICAgIGlmIChlcnJvcikKPiArICAgICAgICBnb3Rv
IG91dF9lcnJubzsKPiArCj4gKyAgICAvLyBBbiBpbXBvcnRhbnQgbm90ZSBhYm91dCBvdXIgaGFu
ZGxpbmcgb2YgRkRfQ0xPRVhFQyAvIE9fQ0xPRVhFQzoKPiArICAgIC8vIGNsb3NlLW9uLWV4ZWMg
c2hvdWxkbid0IGhhdmUgYmVlbiBhIGZpbGUgZmxhZyAoZnAtPmZfZmxhZ3MpIC0gaXQgaXMgYQo+
ICsgICAgLy8gZmlsZSBkZXNjcmlwdG9yIGZsYWcsIG1lYW5pbmcgdGhhdCB0aGF0IHR3byBkdXAo
KWVkIGZpbGUgZGVzY3JpcHRvcnMKPiArICAgIC8vIGNvdWxkIGhhdmUgZGlmZmVyZW50IHZhbHVl
cyBmb3IgRkRfQ0xPRVhFQy4gT3VyIGN1cnJlbnQgaW1wbGVtZW50YXRpb24KPiArICAgIC8vICp3
cm9uZ2x5KiBtYWtlcyBjbG9zZS1vbi1leGVjIGFuIGZfZmxhZyAodXNpbmcgdGhlIGJpdCBPX0NM
T0VYRUMpLgo+ICsgICAgLy8gVGhlcmUgaXMgbGl0dGxlIHByYWN0aWNhbCBkaWZmZXJlbmNlLCB0
aG91Z2gsIGJlY2F1c2UgdGhpcyBmbGFnIGlzCj4gKyAgICAvLyBpZ25vcmVkIGluIE9TdiBhbnl3
YXksIGFzIGl0IGRvZXNuJ3Qgc3VwcG9ydCBleGVjKCkuCj4gKyAgICBzd2l0Y2ggKGNtZCkgewo+
ICsgICAgY2FzZSBGX0RVUEZEOgo+ICsgICAgICAgIGVycm9yID0gX2ZkYWxsb2MoZnAsICZyZXQs
IGFyZyk7Cj4gKyAgICAgICAgaWYgKGVycm9yKQo+ICsgICAgICAgICAgICBnb3RvIG91dF9lcnJu
bzsKPiArICAgICAgICBicmVhazsKPiArICAgIGNhc2UgRl9HRVRGRDoKPiArICAgICAgICByZXQg
PSAoZnAtPmZfZmxhZ3MgJiBPX0NMT0VYRUMpID8gRkRfQ0xPRVhFQyA6IDA7Cj4gKyAgICAgICAg
YnJlYWs7Cj4gKyAgICBjYXNlIEZfU0VURkQ6Cj4gKyAgICAgICAgRkRfTE9DSyhmcCk7Cj4gKyAg
ICAgICAgZnAtPmZfZmxhZ3MgPSAoZnAtPmZfZmxhZ3MgJiB+T19DTE9FWEVDKSB8Cj4gKyAgICAg
ICAgICAgICAgICAoKGFyZyAmIEZEX0NMT0VYRUMpID8gT19DTE9FWEVDIDogMCk7Cj4gKyAgICAg
ICAgRkRfVU5MT0NLKGZwKTsKPiArICAgICAgICBicmVhazsKPiArICAgIGNhc2UgRl9HRVRGTDoK
PiArICAgICAgICAvLyBBcyBleHBsYWluZWQgYWJvdmUsIHRoZSBPX0NMT0VYRUMgc2hvdWxkIGhh
dmUgYmVlbiBpbiBmX2ZsYWdzLAo+ICsgICAgICAgIC8vIGFuZCBzaG91bGRuJ3QgYmUgcmV0dXJu
ZWQuIExpbnV4IGFsd2F5cyByZXR1cm5zIDAxMDAwMDAgKCJ0aGUKPiArICAgICAgICAvLyBmbGFn
IGZvcm1lcmx5IGtub3duIGFzIE9fTEFSR0VGSUxFKSBzbyBsZXQncyBkbyBpdCB0b28uCj4gKyAg
ICAgICAgcmV0ID0gKG9mbGFncyhmcC0+Zl9mbGFncykgJiB+T19DTE9FWEVDKSB8IDAxMDAwMDA7
Cj4gKyAgICAgICAgYnJlYWs7Cj4gKyAgICBjYXNlIEZfU0VURkw6Cj4gKyAgICAgICAgRkRfTE9D
SyhmcCk7Cj4gKyAgICAgICAgZnAtPmZfZmxhZ3MgPSBmZmxhZ3MoKG9mbGFncyhmcC0+Zl9mbGFn
cykgJiB+U0VURkwpIHwKPiArICAgICAgICAgICAgICAgIChhcmcgJiBTRVRGTCkpOwo+ICsgICAg
ICAgIEZEX1VOTE9DSyhmcCk7Cj4gKwo+ICsgICAgICAgIC8qIFN5bmMgbm9uYmxvY2tpbmcvYXN5
bmMgc3RhdGUgd2l0aCBmaWxlIGZsYWdzICovCj4gKyAgICAgICAgdG1wID0gZnAtPmZfZmxhZ3Mg
JiBGTk9OQkxPQ0s7Cj4gKyAgICAgICAgZnAtPmlvY3RsKEZJT05CSU8sICZ0bXApOwo+ICsgICAg
ICAgIHRtcCA9IGZwLT5mX2ZsYWdzICYgRkFTWU5DOwo+ICsgICAgICAgIGZwLT5pb2N0bChGSU9B
U1lOQywgJnRtcCk7Cj4gKwo+ICsgICAgICAgIGJyZWFrOwo+ICsgICAgY2FzZSBGX1NFVExLOgo+
ICsgICAgICAgIFdBUk5fT05DRSgiZmNudGwoRl9TRVRMSykgc3R1YmJlZFxuIik7Cj4gKyAgICAg
ICAgYnJlYWs7Cj4gKyAgICBjYXNlIEZfR0VUTEs6Cj4gKyAgICAgICAgV0FSTl9PTkNFKCJmY250
bChGX0dFVExLKSBzdHViYmVkXG4iKTsKPiArICAgICAgICBicmVhazsKPiArICAgIGNhc2UgRl9T
RVRMS1c6Cj4gKyAgICAgICAgV0FSTl9PTkNFKCJmY250bChGX1NFVExLVykgc3R1YmJlZFxuIik7
Cj4gKyAgICAgICAgYnJlYWs7Cj4gKyAgICBjYXNlIEZfU0VUT1dOOgo+ICsgICAgICAgIFdBUk5f
T05DRSgiZmNudGwoRl9TRVRPV04pIHN0dWJiZWRcbiIpOwo+ICsgICAgICAgIGJyZWFrOwo+ICsg
ICAgZGVmYXVsdDoKPiArICAgICAgICBrcHJpbnRmKCJ1bnN1cHBvcnRlZCBmY250bCBjbWQgMHgl
eFxuIiwgY21kKTsKPiArICAgICAgICBlcnJvciA9IEVJTlZBTDsKPiArICAgIH0KPiArCj4gKyAg
ICBmZHJvcChmcCk7Cj4gKyAgICBpZiAoZXJyb3IpCj4gKyAgICAgICAgZ290byBvdXRfZXJybm87
Cj4gKyAgICB0cmFjZV92ZnNfZmNudGxfcmV0KHJldCk7Cj4gKyAgICByZXR1cm4gcmV0Owo+ICsK
PiArICAgIG91dF9lcnJubzoKPiArICAgIHRyYWNlX3Zmc19mY250bF9lcnIoZXJyb3IpOwo+ICsg
ICAgZXJybm8gPSBlcnJvcjsKPiArICAgIHJldHVybiAtMTsKPiArfQo+ICsKPiArVFJBQ0VQT0lO
VCh0cmFjZV92ZnNfYWNjZXNzLCAiXCIlc1wiIDAlMG8iLCBjb25zdCBjaGFyKiwgaW50KTsKPiAr
VFJBQ0VQT0lOVCh0cmFjZV92ZnNfYWNjZXNzX3JldCwgIiIpOwo+ICtUUkFDRVBPSU5UKHRyYWNl
X3Zmc19hY2Nlc3NfZXJyLCAiJWQiLCBpbnQpOwo+ICsKPiArLyoKPiArICogQ2hlY2sgcGVybWlz
c2lvbiBmb3IgZmlsZSBhY2Nlc3MKPiArICovCj4gK2ludCBhY2Nlc3MoY29uc3QgY2hhciAqcGF0
aG5hbWUsIGludCBtb2RlKQo+ICt7Cj4gKyAgICB0cmFjZV92ZnNfYWNjZXNzKHBhdGhuYW1lLCBt
b2RlKTsKPiArICAgIHN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOwo+ICsgICAgY2hhciBwYXRo
W1BBVEhfTUFYXTsKPiArICAgIGludCBhY2MsIGVycm9yID0gMDsKPiArCj4gKyAgICBhY2MgPSAw
Owo+ICsgICAgaWYgKG1vZGUgJiBSX09LKQo+ICsgICAgICAgIGFjYyB8PSBWUkVBRDsKPiArICAg
IGlmIChtb2RlICYgV19PSykKPiArICAgICAgICBhY2MgfD0gVldSSVRFOwo+ICsKPiArICAgIGlm
ICgoZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5hbWUsIGFjYywgcGF0aCkpICE9IDApCj4gKyAg
ICAgICAgZ290byBvdXRfZXJybm87Cj4gKwo+ICsgICAgZXJyb3IgPSBzeXNfYWNjZXNzKHBhdGgs
IG1vZGUpOwo+ICsgICAgaWYgKGVycm9yKQo+ICsgICAgICAgIGdvdG8gb3V0X2Vycm5vOwo+ICsg
ICAgdHJhY2VfdmZzX2FjY2Vzc19yZXQoKTsKPiArICAgIHJldHVybiAwOwo+ICsgICAgb3V0X2Vy
cm5vOgo+ICsgICAgZXJybm8gPSBlcnJvcjsKPiArICAgIHRyYWNlX3Zmc19hY2Nlc3NfZXJyKGVy
cm9yKTsKPiArICAgIHJldHVybiAtMTsKPiArfQo+ICsKPiAraW50IGZhY2Nlc3NhdChpbnQgZGly
ZmQsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBpbnQgbW9kZSwgaW50IGZsYWdzKQo+ICt7Cj4gKyAg
ICBpZiAoZmxhZ3MgJiBBVF9TWU1MSU5LX05PRk9MTE9XKSB7Cj4gKyAgICAgICAgVU5JTVBMRU1F
TlRFRCgiZmFjY2Vzc2F0KCkgd2l0aCBBVF9TWU1MSU5LX05PRk9MTE9XIik7Cj4gKyAgICB9Cj4g
Kwo+ICsgICAgaWYgKHBhdGhuYW1lWzBdID09ICcvJyB8fCBkaXJmZCA9PSBBVF9GRENXRCkgewo+
ICsgICAgICAgIHJldHVybiBhY2Nlc3MocGF0aG5hbWUsIG1vZGUpOwo+ICsgICAgfQo+ICsKPiAr
ICAgIHN0cnVjdCBmaWxlICpmcDsKPiArICAgIGludCBlcnJvciA9IGZnZXQoZGlyZmQsICZmcCk7
Cj4gKyAgICBpZiAoZXJyb3IpIHsKPiArICAgICAgICBlcnJubyA9IGVycm9yOwo+ICsgICAgICAg
IHJldHVybiAtMTsKPiArICAgIH0KPiArCj4gKyAgICBzdHJ1Y3Qgdm5vZGUgKnZwID0gZnAtPmZf
ZGVudHJ5LT5kX3Zub2RlOwo+ICsgICAgdm5fbG9jayh2cCk7Cj4gKwo+ICsgICAgc3RkOjp1bmlx
dWVfcHRyPGNoYXIgW10+IHVwIChuZXcgY2hhcltQQVRIX01BWF0pOwo+ICsgICAgY2hhciAqcCA9
IHVwLmdldCgpOwo+ICsKPiArICAgIC8qIGJ1aWxkIGFic29sdXRlIHBhdGggKi8KPiArICAgIHN0
cmxjcHkocCwgZnAtPmZfZGVudHJ5LT5kX21vdW50LT5tX3BhdGgsIFBBVEhfTUFYKTsKPiArICAg
IHN0cmxjYXQocCwgZnAtPmZfZGVudHJ5LT5kX3BhdGgsIFBBVEhfTUFYKTsKPiArICAgIHN0cmxj
YXQocCwgIi8iLCBQQVRIX01BWCk7Cj4gKyAgICBzdHJsY2F0KHAsIHBhdGhuYW1lLCBQQVRIX01B
WCk7Cj4gKwo+ICsgICAgZXJyb3IgPSBhY2Nlc3MocCwgbW9kZSk7Cj4gKwo+ICsgICAgdm5fdW5s
b2NrKHZwKTsKPiArICAgIGZkcm9wKGZwKTsKPiArCj4gKyAgICByZXR1cm4gZXJyb3I7Cj4gK30K
PiArCj4gK2V4dGVybiAiQyIKPiAraW50IGV1aWRhY2Nlc3MoY29uc3QgY2hhciAqcGF0aG5hbWUs
IGludCBtb2RlKQo+ICt7Cj4gKyAgICByZXR1cm4gYWNjZXNzKHBhdGhuYW1lLCBtb2RlKTsKPiAr
fQo+ICsKPiArd2Vha19hbGlhcyhldWlkYWNjZXNzLGVhY2Nlc3MpOwo+ICsKPiArI2lmIDAKPiAr
c3RhdGljIGludAo+ICtmc19waXBlKHN0cnVjdCB0YXNrICp0LCBzdHJ1Y3QgbXNnICptc2cpCj4g
K3sKPiArI2lmZGVmIENPTkZJR19GSUZPRlMKPiArICAgIGNoYXIgcGF0aFtQQVRIX01BWF07Cj4g
KyAgICBmaWxlX3QgcmZwLCB3ZnA7Cj4gKyAgICBpbnQgZXJyb3IsIHJmZCwgd2ZkOwo+ICsKPiAr
ICAgIERQUklOVEYoVkZTREJfQ09SRSwgKCJmc19waXBlXG4iKSk7Cj4gKwo+ICsgICAgaWYgKChy
ZmQgPSB0YXNrX25ld2ZkKHQpKSA9PSAtMSkKPiArICAgICAgICByZXR1cm4gRU1GSUxFOwo+ICsg
ICAgdC0+dF9vZmlsZVtyZmRdID0gKGZpbGVfdCkxOyAvKiB0ZW1wICovCj4gKwo+ICsgICAgaWYg
KCh3ZmQgPSB0YXNrX25ld2ZkKHQpKSA9PSAtMSkgewo+ICsgICAgICAgIHQtPnRfb2ZpbGVbcmZk
XSA9IG51bGxwdHI7Cj4gKyAgICAgICAgcmV0dXJuIEVNRklMRTsKPiArICAgIH0KPiArICAgIHNw
cmludGYocGF0aCwgIi9tbnQvZmlmby9waXBlLSV4LSVkIiwgKHVfaW50KXQtPnRfdGFza2lkLCBy
ZmQpOwo+ICsKPiArICAgIGlmICgoZXJyb3IgPSBzeXNfbWtub2QocGF0aCwgU19JRklGTykpICE9
IDApCj4gKyAgICAgICAgZ290byBvdXQ7Cj4gKyAgICBpZiAoKGVycm9yID0gc3lzX29wZW4ocGF0
aCwgT19SRE9OTFkgfCBPX05PTkJMT0NLLCAwLCAmcmZwKSkgIT0gMCkgewo+ICsgICAgICAgIGdv
dG8gb3V0Owo+ICsgICAgfQo+ICsgICAgaWYgKChlcnJvciA9IHN5c19vcGVuKHBhdGgsIE9fV1JP
TkxZIHwgT19OT05CTE9DSywgMCwgJndmcCkpICE9IDApIHsKPiArICAgICAgICBnb3RvIG91dDsK
PiArICAgIH0KPiArICAgIHQtPnRfb2ZpbGVbcmZkXSA9IHJmcDsKPiArICAgIHQtPnRfb2ZpbGVb
d2ZkXSA9IHdmcDsKPiArICAgIHQtPnRfbm9wZW5zICs9IDI7Cj4gKyAgICBtc2ctPmRhdGFbMF0g
PSByZmQ7Cj4gKyAgICBtc2ctPmRhdGFbMV0gPSB3ZmQ7Cj4gKyAgICByZXR1cm4gMDsKPiArICAg
IG91dDoKPiArICAgIHQtPnRfb2ZpbGVbcmZkXSA9IG51bGxwdHI7Cj4gKyAgICB0LT50X29maWxl
W3dmZF0gPSBudWxscHRyOwo+ICsgICAgcmV0dXJuIGVycm9yOwo+ICsjZWxzZQo+ICsgICAgcmV0
dXJuIEVOT1NZUzsKPiArI2VuZGlmCj4gK30KPiArI2VuZGlmCj4gKwo+ICtUUkFDRVBPSU5UKHRy
YWNlX3Zmc19pc2F0dHksICIlZCIsIGludCk7Cj4gK1RSQUNFUE9JTlQodHJhY2VfdmZzX2lzYXR0
eV9yZXQsICIlZCIsIGludCk7Cj4gK1RSQUNFUE9JTlQodHJhY2VfdmZzX2lzYXR0eV9lcnIsICIl
ZCIsIGludCk7Cj4gKwo+ICsvKgo+ICsgKiBSZXR1cm4gaWYgc3BlY2lmaWVkIGZpbGUgaXMgYSB0
dHkKPiArICovCj4gK2ludCBpc2F0dHkoaW50IGZkKQo+ICt7Cj4gKyAgICBzdHJ1Y3QgZmlsZSAq
ZnA7Cj4gKyAgICBpbnQgaXN0dHkgPSAwOwo+ICsKPiArICAgIHRyYWNlX3Zmc19pc2F0dHkoZmQp
Owo+ICsgICAgZmlsZXJlZiBmKGZpbGVyZWZfZnJvbV9mZChmZCkpOwo+ICsgICAgaWYgKCFmKSB7
Cj4gKyAgICAgICAgZXJybm8gPSBFQkFERjsKPiArICAgICAgICB0cmFjZV92ZnNfaXNhdHR5X2Vy
cihlcnJubyk7Cj4gKyAgICAgICAgcmV0dXJuIC0xOwo+ICsgICAgfQo+ICsKPiArICAgIGZwID0g
Zi5nZXQoKTsKPiArICAgIGlmIChkeW5hbWljX2Nhc3Q8dHR5X2ZpbGUqPihmcCkgfHwKPiArICAg
ICAgICAoZnAtPmZfZGVudHJ5ICYmIGZwLT5mX2RlbnRyeS0+ZF92bm9kZS0+dl9mbGFncyAmIFZJ
U1RUWSkpIHsKPiArICAgICAgICBpc3R0eSA9IDE7Cj4gKyAgICB9Cj4gKwo+ICsgICAgdHJhY2Vf
dmZzX2lzYXR0eV9yZXQoaXN0dHkpOwo+ICsgICAgcmV0dXJuIGlzdHR5Owo+ICt9Cj4gKwo+ICtU
UkFDRVBPSU5UKHRyYWNlX3Zmc190cnVuY2F0ZSwgIlwiJXNcIiAweCV4IiwgY29uc3QgY2hhcios
IG9mZl90KTsKPiArVFJBQ0VQT0lOVCh0cmFjZV92ZnNfdHJ1bmNhdGVfcmV0LCAiIik7Cj4gK1RS
QUNFUE9JTlQodHJhY2VfdmZzX3RydW5jYXRlX2VyciwgIiVkIiwgaW50KTsKPiArCj4gK2ludCB0
cnVuY2F0ZShjb25zdCBjaGFyICpwYXRobmFtZSwgb2ZmX3QgbGVuZ3RoKQo+ICt7Cj4gKyAgICB0
cmFjZV92ZnNfdHJ1bmNhdGUocGF0aG5hbWUsIGxlbmd0aCk7Cj4gKyAgICBzdHJ1Y3QgdGFzayAq
dCA9IG1haW5fdGFzazsKPiArICAgIGNoYXIgcGF0aFtQQVRIX01BWF07Cj4gKyAgICBpbnQgZXJy
b3I7Cj4gKwo+ICsgICAgZXJyb3IgPSBFTk9FTlQ7Cj4gKyAgICBpZiAocGF0aG5hbWUgPT0gbnVs
bHB0cikKPiArICAgICAgICBnb3RvIG91dF9lcnJubzsKPiArICAgIGlmICgoZXJyb3IgPSB0YXNr
X2NvbnYodCwgcGF0aG5hbWUsIFZXUklURSwgcGF0aCkpICE9IDApCj4gKyAgICAgICAgZ290byBv
dXRfZXJybm87Cj4gKwo+ICsgICAgZXJyb3IgPSBzeXNfdHJ1bmNhdGUocGF0aCwgbGVuZ3RoKTsK
PiArICAgIGlmIChlcnJvcikKPiArICAgICAgICBnb3RvIG91dF9lcnJubzsKPiArICAgIHRyYWNl
X3Zmc190cnVuY2F0ZV9yZXQoKTsKPiArICAgIHJldHVybiAwOwo+ICsgICAgb3V0X2Vycm5vOgo+
ICsgICAgZXJybm8gPSBlcnJvcjsKPiArICAgIHRyYWNlX3Zmc190cnVuY2F0ZV9lcnIoZXJyb3Ip
Owo+ICsgICAgcmV0dXJuIC0xOwo+ICt9Cj4gKwo+ICtMRlM2NCh0cnVuY2F0ZSk7Cj4gKwo+ICtU
UkFDRVBPSU5UKHRyYWNlX3Zmc19mdHJ1bmNhdGUsICIlZCAweCV4IiwgaW50LCBvZmZfdCk7Cj4g
K1RSQUNFUE9JTlQodHJhY2VfdmZzX2Z0cnVuY2F0ZV9yZXQsICIiKTsKPiArVFJBQ0VQT0lOVCh0
cmFjZV92ZnNfZnRydW5jYXRlX2VyciwgIiVkIiwgaW50KTsKPiArCj4gK2ludCBmdHJ1bmNhdGUo
aW50IGZkLCBvZmZfdCBsZW5ndGgpCj4gK3sKPiArICAgIHRyYWNlX3Zmc19mdHJ1bmNhdGUoZmQs
IGxlbmd0aCk7Cj4gKyAgICBzdHJ1Y3QgZmlsZSAqZnA7Cj4gKyAgICBpbnQgZXJyb3I7Cj4gKwo+
ICsgICAgZXJyb3IgPSBmZ2V0KGZkLCAmZnApOwo+ICsgICAgaWYgKGVycm9yKQo+ICsgICAgICAg
IGdvdG8gb3V0X2Vycm5vOwo+ICsKPiArICAgIGVycm9yID0gc3lzX2Z0cnVuY2F0ZShmcCwgbGVu
Z3RoKTsKPiArICAgIGZkcm9wKGZwKTsKPiArCj4gKyAgICBpZiAoZXJyb3IpCj4gKyAgICAgICAg
Z290byBvdXRfZXJybm87Cj4gKyAgICB0cmFjZV92ZnNfZnRydW5jYXRlX3JldCgpOwo+ICsgICAg
cmV0dXJuIDA7Cj4gKwo+ICsgICAgb3V0X2Vycm5vOgo+ICsgICAgZXJybm8gPSBlcnJvcjsKPiAr
ICAgIHRyYWNlX3Zmc19mdHJ1bmNhdGVfZXJyKGVycm9yKTsKPiArICAgIHJldHVybiAtMTsKPiAr
fQo+ICsKPiArTEZTNjQoZnRydW5jYXRlKTsKPiArCj4gK3NzaXplX3QgcmVhZGxpbmsoY29uc3Qg
Y2hhciAqcGF0aG5hbWUsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnNpemUpCj4gK3sKPiArICAgIHN0
cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOwo+ICsgICAgY2hhciBwYXRoW1BBVEhfTUFYXTsKPiAr
ICAgIGludCBlcnJvcjsKPiArICAgIHNzaXplX3Qgc2l6ZTsKPiArCj4gKyAgICBlcnJvciA9IC1F
SU5WQUw7Cj4gKyAgICBpZiAoYnVmc2l6ZSA8PSAwKQo+ICsgICAgICAgIGdvdG8gb3V0X2Vycm5v
Owo+ICsKPiArICAgIGVycm9yID0gRU5PRU5UOwo+ICsgICAgaWYgKHBhdGhuYW1lID09IG51bGxw
dHIpCj4gKyAgICAgICAgZ290byBvdXRfZXJybm87Cj4gKyAgICBlcnJvciA9IHRhc2tfY29udih0
LCBwYXRobmFtZSwgVldSSVRFLCBwYXRoKTsKPiArICAgIGlmIChlcnJvcikKPiArICAgICAgICBn
b3RvIG91dF9lcnJubzsKPiArCj4gKyAgICBzaXplICA9IDA7Cj4gKyAgICBlcnJvciA9IHN5c19y
ZWFkbGluayhwYXRoLCBidWYsIGJ1ZnNpemUsICZzaXplKTsKPiArCj4gKyAgICBpZiAoZXJyb3Ig
IT0gMCkKPiArICAgICAgICBnb3RvIG91dF9lcnJubzsKPiArCj4gKyAgICByZXR1cm4gc2l6ZTsK
PiArICAgIG91dF9lcnJubzoKPiArICAgIGVycm5vID0gZXJyb3I7Cj4gKyAgICByZXR1cm4gLTE7
Cj4gK30KPiArCj4gK1RSQUNFUE9JTlQodHJhY2VfdmZzX2ZhbGxvY2F0ZSwgIiVkICVkIDB4JXgg
MHgleCIsIGludCwgaW50LCBsb2ZmX3QsIGxvZmZfdCk7Cj4gK1RSQUNFUE9JTlQodHJhY2VfdmZz
X2ZhbGxvY2F0ZV9yZXQsICIiKTsKPiArVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZmFsbG9jYXRlX2Vy
ciwgIiVkIiwgaW50KTsKPiArCj4gK2ludCBmYWxsb2NhdGUoaW50IGZkLCBpbnQgbW9kZSwgbG9m
Zl90IG9mZnNldCwgbG9mZl90IGxlbikKPiArewo+ICsgICAgc3RydWN0IGZpbGUgKmZwOwo+ICsg
ICAgaW50IGVycm9yOwo+ICsKPiArICAgIHRyYWNlX3Zmc19mYWxsb2NhdGUoZmQsIG1vZGUsIG9m
ZnNldCwgbGVuKTsKPiArICAgIGVycm9yID0gZmdldChmZCwgJmZwKTsKPiArICAgIGlmIChlcnJv
cikKPiArICAgICAgICBnb3RvIG91dF9lcnJubzsKPiArCj4gKyAgICBlcnJvciA9IHN5c19mYWxs
b2NhdGUoZnAsIG1vZGUsIG9mZnNldCwgbGVuKTsKPiArICAgIGZkcm9wKGZwKTsKPiArCj4gKyAg
ICBpZiAoZXJyb3IpCj4gKyAgICAgICAgZ290byBvdXRfZXJybm87Cj4gKyAgICB0cmFjZV92ZnNf
ZmFsbG9jYXRlX3JldCgpOwo+ICsgICAgcmV0dXJuIDA7Cj4gKwo+ICsgICAgb3V0X2Vycm5vOgo+
ICsgICAgdHJhY2VfdmZzX2ZhbGxvY2F0ZV9lcnIoZXJyb3IpOwo+ICsgICAgZXJybm8gPSBlcnJv
cjsKPiArICAgIHJldHVybiAtMTsKPiArfQo+ICsKPiArTEZTNjQoZmFsbG9jYXRlKTsKPiArCj4g
K1RSQUNFUE9JTlQodHJhY2VfdmZzX3V0aW1lcywgIlwiJXNcIiIsIGNvbnN0IGNoYXIqKTsKPiAr
VFJBQ0VQT0lOVCh0cmFjZV92ZnNfdXRpbWVzX3JldCwgIiIpOwo+ICtUUkFDRVBPSU5UKHRyYWNl
X3Zmc191dGltZXNfZXJyLCAiJWQiLCBpbnQpOwo+ICsKPiAraW50IGZ1dGltZXMoaW50IGZkLCBj
b25zdCBzdHJ1Y3QgdGltZXZhbCB0aW1lc1syXSkKPiArewo+ICsgICAgcmV0dXJuIGZ1dGltZXNh
dChmZCwgbnVsbHB0ciwgdGltZXMpOwo+ICt9Cj4gKwo+ICtpbnQgZnV0aW1lc2F0KGludCBkaXJm
ZCwgY29uc3QgY2hhciAqcGF0aG5hbWUsIGNvbnN0IHN0cnVjdCB0aW1ldmFsIHRpbWVzWzJdKQo+
ICt7Cj4gKyAgICBzdHJ1Y3Qgc3RhdCBzdDsKPiArICAgIHN0cnVjdCBmaWxlICpmcDsKPiArICAg
IGludCBlcnJvcjsKPiArICAgIGNoYXIgKmFic29sdXRlX3BhdGg7Cj4gKwo+ICsgICAgaWYgKChw
YXRobmFtZSAmJiBwYXRobmFtZVswXSA9PSAnLycpIHx8IGRpcmZkID09IEFUX0ZEQ1dEKQo+ICsg
ICAgICAgIHJldHVybiB1dGltZXMocGF0aG5hbWUsIHRpbWVzKTsKPiArCj4gKyAgICAvLyBOb3Rl
OiBpZiBwYXRobmFtZSA9PSBudWxscHRyLCBmdXRpbWVzYXQgb3BlcmF0ZXMgb24gZGlyZmQgaXRz
ZWxmLCBhbmQgaW4KPiArICAgIC8vIHRoYXQgY2FzZSBpdCBkb2Vzbid0IGhhdmUgdG8gYmUgYSBk
aXJlY3RvcnkuCj4gKyAgICBpZiAocGF0aG5hbWUpIHsKPiArICAgICAgICBlcnJvciA9IGZzdGF0
KGRpcmZkLCAmc3QpOwo+ICsgICAgICAgIGlmIChlcnJvcikgewo+ICsgICAgICAgICAgICBlcnJv
ciA9IGVycm5vOwo+ICsgICAgICAgICAgICBnb3RvIG91dF9lcnJubzsKPiArICAgICAgICB9Cj4g
Kwo+ICsgICAgICAgIGlmICghU19JU0RJUihzdC5zdF9tb2RlKSl7Cj4gKyAgICAgICAgICAgIGVy
cm9yID0gRU5PVERJUjsKPiArICAgICAgICAgICAgZ290byBvdXRfZXJybm87Cj4gKyAgICAgICAg
fQo+ICsgICAgfQo+ICsKPiArICAgIGVycm9yID0gZmdldChkaXJmZCwgJmZwKTsKPiArICAgIGlm
IChlcnJvcikKPiArICAgICAgICBnb3RvIG91dF9lcnJubzsKPiArCj4gKyAgICAvKiBidWlsZCBh
YnNvbHV0ZSBwYXRoICovCj4gKyAgICBhYnNvbHV0ZV9wYXRoID0gKGNoYXIqKW1hbGxvYyhQQVRI
X01BWCk7Cj4gKyAgICBzdHJsY3B5KGFic29sdXRlX3BhdGgsIGZwLT5mX2RlbnRyeS0+ZF9tb3Vu
dC0+bV9wYXRoLCBQQVRIX01BWCk7Cj4gKyAgICBzdHJsY2F0KGFic29sdXRlX3BhdGgsIGZwLT5m
X2RlbnRyeS0+ZF9wYXRoLCBQQVRIX01BWCk7Cj4gKwo+ICsgICAgaWYgKHBhdGhuYW1lKSB7Cj4g
KyAgICAgICAgc3RybGNhdChhYnNvbHV0ZV9wYXRoLCAiLyIsIFBBVEhfTUFYKTsKPiArICAgICAg
ICBzdHJsY2F0KGFic29sdXRlX3BhdGgsIHBhdGhuYW1lLCBQQVRIX01BWCk7Cj4gKyAgICB9Cj4g
Kwo+ICsgICAgZXJyb3IgPSB1dGltZXMoYWJzb2x1dGVfcGF0aCwgdGltZXMpOwo+ICsgICAgZnJl
ZShhYnNvbHV0ZV9wYXRoKTsKPiArCj4gKyAgICBmZHJvcChmcCk7Cj4gKwo+ICsgICAgaWYgKGVy
cm9yKQo+ICsgICAgICAgIGdvdG8gb3V0X2Vycm5vOwo+ICsgICAgcmV0dXJuIDA7Cj4gKwo+ICsg
ICAgb3V0X2Vycm5vOgo+ICsgICAgZXJybm8gPSBlcnJvcjsKPiArICAgIHJldHVybiAtMTsKPiAr
fQo+ICsKPiArVFJBQ0VQT0lOVCh0cmFjZV92ZnNfdXRpbWVuc2F0LCAiXCIlc1wiIiwgY29uc3Qg
Y2hhciopOwo+ICtUUkFDRVBPSU5UKHRyYWNlX3Zmc191dGltZW5zYXRfcmV0LCAiIik7Cj4gK1RS
QUNFUE9JTlQodHJhY2VfdmZzX3V0aW1lbnNhdF9lcnIsICIlZCIsIGludCk7Cj4gKwo+ICtleHRl
cm4gIkMiCj4gK2ludCB1dGltZW5zYXQoaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwg
Y29uc3Qgc3RydWN0IHRpbWVzcGVjIHRpbWVzWzJdLCBpbnQgZmxhZ3MpCj4gK3sKPiArICAgIHRy
YWNlX3Zmc191dGltZW5zYXQocGF0aG5hbWUpOwo+ICsKPiArICAgIGF1dG8gZXJyb3IgPSBzeXNf
dXRpbWVuc2F0KGRpcmZkLCBwYXRobmFtZSwgdGltZXMsIGZsYWdzKTsKPiArICAgIGlmIChlcnJv
cikgewo+ICsgICAgICAgIHRyYWNlX3Zmc191dGltZW5zYXRfZXJyKGVycm9yKTsKPiArICAgICAg
ICBlcnJubyA9IGVycm9yOwo+ICsgICAgICAgIHJldHVybiAtMTsKPiArICAgIH0KPiArCj4gKyAg
ICB0cmFjZV92ZnNfdXRpbWVuc2F0X3JldCgpOwo+ICsgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4g
K1RSQUNFUE9JTlQodHJhY2VfdmZzX2Z1dGltZW5zLCAiJWQiLCBpbnQpOwo+ICtUUkFDRVBPSU5U
KHRyYWNlX3Zmc19mdXRpbWVuc19yZXQsICIiKTsKPiArVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZnV0
aW1lbnNfZXJyLCAiJWQiLCBpbnQpOwo+ICsKPiArZXh0ZXJuICJDIgo+ICtpbnQgZnV0aW1lbnMo
aW50IGZkLCBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgdGltZXNbMl0pCj4gK3sKPiArICAgIHRyYWNl
X3Zmc19mdXRpbWVucyhmZCk7Cj4gKwo+ICsgICAgYXV0byBlcnJvciA9IHN5c19mdXRpbWVucyhm
ZCwgdGltZXMpOwo+ICsgICAgaWYgKGVycm9yKSB7Cj4gKyAgICAgICAgdHJhY2VfdmZzX2Z1dGlt
ZW5zX2VycihlcnJvcik7Cj4gKyAgICAgICAgZXJybm8gPSBlcnJvcjsKPiArICAgICAgICByZXR1
cm4gLTE7Cj4gKyAgICB9Cj4gKwo+ICsgICAgdHJhY2VfdmZzX2Z1dGltZW5zX3JldCgpOwo+ICsg
ICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgZG9fdXRpbWVzKGNvbnN0IGNoYXIg
KnBhdGhuYW1lLCBjb25zdCBzdHJ1Y3QgdGltZXZhbCB0aW1lc1syXSwgaW50IGZsYWdzKQo+ICt7
Cj4gKyAgICBzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKPiArICAgIGNoYXIgcGF0aFtQQVRI
X01BWF07Cj4gKyAgICBpbnQgZXJyb3I7Cj4gKwo+ICsgICAgdHJhY2VfdmZzX3V0aW1lcyhwYXRo
bmFtZSk7Cj4gKwo+ICsgICAgZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5hbWUsIDAsIHBhdGgp
Owo+ICsgICAgaWYgKGVycm9yKSB7Cj4gKyAgICAgICAgdHJhY2VfdmZzX3V0aW1lc19lcnIoZXJy
b3IpOwo+ICsgICAgICAgIHJldHVybiBsaWJjX2Vycm9yKGVycm9yKTsKPiArICAgIH0KPiArCj4g
KyAgICBlcnJvciA9IHN5c191dGltZXMocGF0aCwgdGltZXMsIGZsYWdzKTsKPiArICAgIGlmIChl
cnJvcikgewo+ICsgICAgICAgIHRyYWNlX3Zmc191dGltZXNfZXJyKGVycm9yKTsKPiArICAgICAg
ICByZXR1cm4gbGliY19lcnJvcihlcnJvcik7Cj4gKyAgICB9Cj4gKwo+ICsgICAgdHJhY2VfdmZz
X3V0aW1lc19yZXQoKTsKPiArICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICtleHRlcm4gIkMiCj4g
K2ludCB1dGltZXMoY29uc3QgY2hhciAqcGF0aG5hbWUsIGNvbnN0IHN0cnVjdCB0aW1ldmFsIHRp
bWVzWzJdKQo+ICt7Cj4gKyAgICByZXR1cm4gZG9fdXRpbWVzKHBhdGhuYW1lLCB0aW1lcywgMCk7
Cj4gK30KPiArCj4gK2V4dGVybiAiQyIKPiAraW50IGx1dGltZXMoY29uc3QgY2hhciAqcGF0aG5h
bWUsIGNvbnN0IHN0cnVjdCB0aW1ldmFsIHRpbWVzWzJdKQo+ICt7Cj4gKyAgICByZXR1cm4gZG9f
dXRpbWVzKHBhdGhuYW1lLCB0aW1lcywgQVRfU1lNTElOS19OT0ZPTExPVyk7Cj4gK30KPiArCj4g
K2V4dGVybiAiQyIKPiAraW50IHV0aW1lKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBjb25zdCBzdHJ1
Y3QgdXRpbWJ1ZiAqdCkKPiArewo+ICsgICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDo6Y2hyb25vOwo+
ICsKPiArICAgIHN0cnVjdCB0aW1ldmFsIHRpbWVzWzJdOwo+ICsgICAgdGltZXNbMF0udHZfdXNl
YyA9IDA7Cj4gKyAgICB0aW1lc1sxXS50dl91c2VjID0gMDsKPiArICAgIGlmICghdCkgewo+ICsg
ICAgICAgIGxvbmcgaW50IHRzZWMgPSBkdXJhdGlvbl9jYXN0PHNlY29uZHM+KG9zdjo6Y2xvY2s6
OndhbGw6Om5vdygpLnRpbWVfc2luY2VfZXBvY2goKSkuY291bnQoKTsKPiArICAgICAgICB0aW1l
c1swXS50dl9zZWMgPSB0c2VjOwo+ICsgICAgICAgIHRpbWVzWzFdLnR2X3NlYyA9IHRzZWM7Cj4g
KyAgICB9IGVsc2Ugewo+ICsgICAgICAgIHRpbWVzWzBdLnR2X3NlYyA9IHQtPmFjdGltZTsKPiAr
ICAgICAgICB0aW1lc1sxXS50dl9zZWMgPSB0LT5tb2R0aW1lOwo+ICsgICAgfQo+ICsKPiArICAg
IHJldHVybiB1dGltZXMocGF0aG5hbWUsIHRpbWVzKTsKPiArfQo+ICsKPiArVFJBQ0VQT0lOVCh0
cmFjZV92ZnNfY2htb2QsICJcIiVzXCIgMCUwbyIsIGNvbnN0IGNoYXIqLCBtb2RlX3QpOwo+ICtU
UkFDRVBPSU5UKHRyYWNlX3Zmc19jaG1vZF9yZXQsICIiKTsKPiArVFJBQ0VQT0lOVCh0cmFjZV92
ZnNfY2htb2RfZXJyLCAiJWQiLCBpbnQpOwo+ICsKPiAraW50IGNobW9kKGNvbnN0IGNoYXIgKnBh
dGhuYW1lLCBtb2RlX3QgbW9kZSkKPiArewo+ICsgICAgdHJhY2VfdmZzX2NobW9kKHBhdGhuYW1l
LCBtb2RlKTsKPiArICAgIHN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOwo+ICsgICAgY2hhciBw
YXRoW1BBVEhfTUFYXTsKPiArICAgIGludCBlcnJvciA9IEVOT0VOVDsKPiArICAgIGlmIChwYXRo
bmFtZSA9PSBudWxscHRyKQo+ICsgICAgICAgIGdvdG8gb3V0X2Vycm5vOwo+ICsgICAgaWYgKChl
cnJvciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwgVldSSVRFLCBwYXRoKSkgIT0gMCkKPiArICAg
ICAgICBnb3RvIG91dF9lcnJubzsKPiArICAgIGVycm9yID0gc3lzX2NobW9kKHBhdGgsIG1vZGUg
JiBBTExQRVJNUyk7Cj4gKyAgICBpZiAoZXJyb3IpCj4gKyAgICAgICAgZ290byBvdXRfZXJybm87
Cj4gKyAgICB0cmFjZV92ZnNfY2htb2RfcmV0KCk7Cj4gKyAgICByZXR1cm4gMDsKPiArb3V0X2Vy
cm5vOgo+ICsgICAgdHJhY2VfdmZzX2NobW9kX2VycihlcnJvcik7Cj4gKyAgICBlcnJubyA9IGVy
cm9yOwo+ICsgICAgcmV0dXJuIC0xOwo+ICt9Cj4gKwo+ICtUUkFDRVBPSU5UKHRyYWNlX3Zmc19m
Y2htb2QsICJcIiVkXCIgMCUwbyIsIGludCwgbW9kZV90KTsKPiArVFJBQ0VQT0lOVCh0cmFjZV92
ZnNfZmNobW9kX3JldCwgIiIpOwo+ICsKPiAraW50IGZjaG1vZChpbnQgZmQsIG1vZGVfdCBtb2Rl
KQo+ICt7Cj4gKyAgICB0cmFjZV92ZnNfZmNobW9kKGZkLCBtb2RlKTsKPiArICAgIGF1dG8gZXJy
b3IgPSBzeXNfZmNobW9kKGZkLCBtb2RlICYgQUxMUEVSTVMpOwo+ICsgICAgdHJhY2VfdmZzX2Zj
aG1vZF9yZXQoKTsKPiArICAgIGlmIChlcnJvcikgewo+ICsgICAgICAgIGVycm5vID0gZXJyb3I7
Cj4gKyAgICAgICAgcmV0dXJuIC0xOwo+ICsgICAgfSBlbHNlIHsKPiArICAgICAgICByZXR1cm4g
MDsKPiArICAgIH0KPiArfQo+ICsKPiArVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZmNob3duLCAiXCIl
ZFwiICVkICVkIiwgaW50LCB1aWRfdCwgZ2lkX3QpOwo+ICtUUkFDRVBPSU5UKHRyYWNlX3Zmc19m
Y2hvd25fcmV0LCAiIik7Cj4gKwo+ICtpbnQgZmNob3duKGludCBmZCwgdWlkX3Qgb3duZXIsIGdp
ZF90IGdyb3VwKQo+ICt7Cj4gKyAgICB0cmFjZV92ZnNfZmNob3duKGZkLCBvd25lciwgZ3JvdXAp
Owo+ICsgICAgV0FSTl9TVFVCQkVEKCk7Cj4gKyAgICB0cmFjZV92ZnNfZmNob3duX3JldCgpOwo+
ICsgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gK2ludCBjaG93bihjb25zdCBjaGFyICpwYXRoLCB1
aWRfdCBvd25lciwgZ2lkX3QgZ3JvdXApCj4gK3sKPiArICAgIFdBUk5fU1RVQkJFRCgpOwo+ICsg
ICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gK2ludCBsY2hvd24oY29uc3QgY2hhciAqcGF0aCwgdWlk
X3Qgb3duZXIsIGdpZF90IGdyb3VwKQo+ICt7Cj4gKyAgICBXQVJOX1NUVUJCRUQoKTsKPiArICAg
IHJldHVybiAwOwo+ICt9Cj4gKwo+ICsKPiArc3NpemVfdCBzZW5kZmlsZShpbnQgb3V0X2ZkLCBp
bnQgaW5fZmQsIG9mZl90ICpfb2Zmc2V0LCBzaXplX3QgY291bnQpCj4gK3sKPiArICAgIHN0cnVj
dCBmaWxlICppbl9mcDsKPiArICAgIHN0cnVjdCBmaWxlICpvdXRfZnA7Cj4gKyAgICBmaWxlcmVm
IGluX2Z7ZmlsZXJlZl9mcm9tX2ZkKGluX2ZkKX07Cj4gKyAgICBmaWxlcmVmIG91dF9me2ZpbGVy
ZWZfZnJvbV9mZChvdXRfZmQpfTsKPiArCj4gKyAgICBpZiAoIWluX2YgfHwgIW91dF9mKSB7Cj4g
KyAgICAgICAgcmV0dXJuIGxpYmNfZXJyb3IoRUJBREYpOwo+ICsgICAgfQo+ICsKPiArICAgIGlu
X2ZwID0gaW5fZi5nZXQoKTsKPiArICAgIG91dF9mcCA9IG91dF9mLmdldCgpOwo+ICsKPiArICAg
IGlmICghaW5fZnAtPmZfZGVudHJ5KSB7Cj4gKyAgICAgICAgcmV0dXJuIGxpYmNfZXJyb3IoRUJB
REYpOwo+ICsgICAgfQo+ICsKPiArICAgIGlmICghKGluX2ZwLT5mX2ZsYWdzICYgRlJFQUQpKSB7
Cj4gKyAgICAgICAgcmV0dXJuIGxpYmNfZXJyb3IoRUJBREYpOwo+ICsgICAgfQo+ICsKPiArICAg
IGlmIChvdXRfZnAtPmZfdHlwZSAmIERUWVBFX1ZOT0RFKSB7Cj4gKyAgICAgICAgaWYgKCFvdXRf
ZnAtPmZfZGVudHJ5KSB7Cj4gKyAgICAgICAgICAgIHJldHVybiBsaWJjX2Vycm9yKEVCQURGKTsK
PiArCX0gZWxzZSBpZiAoIShvdXRfZnAtPmZfZmxhZ3MgJiBGV1JJVEUpKSB7Cj4gKyAgICAgICAg
ICAgIHJldHVybiBsaWJjX2Vycm9yKEVCQURGKTsKPiArCX0KPiArICAgIH0KPiArCj4gKyAgICBv
ZmZfdCBvZmZzZXQgOwo+ICsKPiArICAgIGlmIChfb2Zmc2V0ICE9IG51bGxwdHIpIHsKPiArICAg
ICAgICBvZmZzZXQgPSAqX29mZnNldDsKPiArICAgIH0gZWxzZSB7Cj4gKyAgICAgICAgLyogaWYg
X29mZnNldCBpcyBudWxscHRyLCB3ZSBuZWVkIHRvIHJlYWQgZnJvbSB0aGUgcHJlc2VudCBwb3Np
dGlvbiBvZiBpbl9mZCAqLwo+ICsgICAgICAgIG9mZnNldCA9IGxzZWVrKGluX2ZkLCAwLCBTRUVL
X0NVUik7Cj4gKyAgICB9Cj4gKwo+ICsgICAgLy8gQ29uc3RyYWluIGNvdW50IHRvIHRoZSBleHRl
bnQgb2YgdGhlIGZpbGUuLi4KPiArICAgIHN0cnVjdCBzdGF0IHN0Owo+ICsgICAgaWYgKGZzdGF0
KGluX2ZkLCAmc3QpIDwgMCkgewo+ICsgICAgICAgIHJldHVybiAtMTsKPiArICAgIH0gZWxzZSB7
Cj4gKyAgICAgICAgaWYgKG9mZnNldCA+PSBzdC5zdF9zaXplKSB7Cj4gKyAgICAgICAgICAgIHJl
dHVybiAwOwo+ICsgICAgICAgIH0gZWxzZSBpZiAoKG9mZnNldCArIGNvdW50KSA+PSBzdC5zdF9z
aXplKSB7Cj4gKyAgICAgICAgICAgIGNvdW50ID0gc3Quc3Rfc2l6ZSAtIG9mZnNldDsKPiArICAg
ICAgICAgICAgaWYgKGNvdW50ID09IDApIHsKPiArICAgICAgICAgICAgICAgIHJldHVybiAwOwo+
ICsgICAgICAgICAgICB9Cj4gKyAgICAgICAgfQo+ICsgICAgfQo+ICsKPiArICAgIHNpemVfdCBi
eXRlc190b19tbWFwID0gY291bnQgKyAob2Zmc2V0ICUgbW11OjpwYWdlX3NpemUpOwo+ICsgICAg
b2ZmX3Qgb2Zmc2V0X2Zvcl9tbWFwID0gIGFsaWduX2Rvd24ob2Zmc2V0LCAob2ZmX3QpbW11Ojpw
YWdlX3NpemUpOwo+ICsKPiArICAgIGNoYXIgKnNyYyA9IHN0YXRpY19jYXN0PGNoYXIgKj4obW1h
cChudWxscHRyLCBieXRlc190b19tbWFwLCBQUk9UX1JFQUQsIE1BUF9TSEFSRUQsIGluX2ZkLCBv
ZmZzZXRfZm9yX21tYXApKTsKPiArCj4gKyAgICBpZiAoc3JjID09IE1BUF9GQUlMRUQpIHsKPiAr
ICAgICAgICByZXR1cm4gLTE7Cj4gKyAgICB9Cj4gKwo+ICsgICAgYXV0byByZXQgPSB3cml0ZShv
dXRfZmQsIHNyYyArIChvZmZzZXQgJSBQQUdFU0laRSksIGNvdW50KTsKPiArCj4gKyAgICBpZiAo
cmV0IDwgMCkgewo+ICsgICAgICAgIHJldHVybiBsaWJjX2Vycm9yKGVycm5vKTsKPiArICAgIH0g
ZWxzZSBpZihfb2Zmc2V0ID09IG51bGxwdHIpIHsKPiArICAgICAgICBsc2Vlayhpbl9mZCwgcmV0
LCBTRUVLX0NVUik7Cj4gKyAgICB9IGVsc2Ugewo+ICsgICAgICAgICpfb2Zmc2V0ICs9IHJldDsK
PiArICAgIH0KPiArCj4gKyAgICBhc3NlcnQobXVubWFwKHNyYywgY291bnQpID09IDApOwo+ICsK
PiArICAgIHJldHVybiByZXQ7Cj4gK30KPiArCj4gKyN1bmRlZiBzZW5kZmlsZTY0Cj4gK0xGUzY0
KHNlbmRmaWxlKTsKPiArCj4gK05PX1NZUyhpbnQgZmNobW9kYXQoaW50IGRpcmZkLCBjb25zdCBj
aGFyICpwYXRobmFtZSwgbW9kZV90IG1vZGUsIGludCBmbGFncykpOwo+ICsKPiArbW9kZV90IHVt
YXNrKG1vZGVfdCBuZXdtYXNrKQo+ICt7Cj4gKyAgICByZXR1cm4gZ2xvYmFsX3VtYXNrLmV4Y2hh
bmdlKG5ld21hc2ssIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOwo+ICt9Cj4gKwo+ICtpbnQK
PiArZnNfbm9vcCh2b2lkKQo+ICt7Cj4gKyAgICByZXR1cm4gMDsKPiArfQo+ICsKPiAraW50IGNo
cm9vdChjb25zdCBjaGFyICpwYXRoKQo+ICt7Cj4gKyAgICBXQVJOX1NUVUJCRUQoKTsKPiArICAg
IGVycm5vID0gRU5PU1lTOwo+ICsgICAgcmV0dXJuIC0xOwo+ICt9Cj4gKwo+ICsvLyB1bnBhY2tf
Ym9vdGZzKCkgdW5wYWNrcyBhIGNvbGxlY3Rpb24gb2YgZmlsZXMgc3RvcmVkIGFzIHBhcnQgb2Yg
dGhlIE9Tdgo+ICsvLyBleGVjdXRhYmxlIChpbiBtZW1vcnkgbG9jYXRpb24gImJvb3Rmc19zdGFy
dCIpIGludG8gdGhlIGZpbGUgc3lzdGVtLAo+ICsvLyBub3JtYWxseSB0aGUgaW4tbWVtb3J5IGZp
bGVzeXN0ZW0gcmFtZnMuCj4gKy8vIFRoZSBmaWxlcyBhcmUgcGFja2VkIGluIHRoZSBleGVjdXRh
YmxlIGluIGFuIGFkLWhvYyBmb3JtYXQgZGVmaW5lZCBoZXJlLgo+ICsvLyBDb2RlIGluIHNjcmlw
dHMvbWtib290ZnMucHkgcGFja3MgZmlsZXMgaW50byB0aGlzIGZvcm1hdC4KPiArI2RlZmluZSBC
T09URlNfUEFUSF9NQVggMTExCj4gK2VudW0gY2xhc3MgYm9vdGZzX2ZpbGVfdHlwZSA6IGNoYXIg
eyBvdGhlciA9IDAsIHN5bWxpbmsgPSAxIH07Cj4gK3N0cnVjdCBib290ZnNfbWV0YWRhdGEgewo+
ICsgICAgdWludDY0X3Qgc2l6ZTsKPiArICAgIHVpbnQ2NF90IG9mZnNldDsKPiArICAgIC8vIFRo
ZSBmaWxlJ3MgdHlwZS4gQ2FuIGJlICJzeW1saW5rIiBvciAib3RoZXIiLiBBIGRpcmVjdG9yeSBp
cyBhbiAib3RoZXIiCj4gKyAgICAvLyBmaWxlIHdpdGggaXRzIG5hbWUgZW5kaW5nIHdpdGggYSAi
LyIgKGFuZCBubyBjb250ZW50KS4KPiArICAgIGJvb3Rmc19maWxlX3R5cGUgdHlwZTsKPiArICAg
IC8vIG5hbWUgbXVzdCBlbmQgd2l0aCBhIG51bGwuIEZvciBzeW1saW5rIGZpbGVzLCB0aGUgY29u
dGVudCBtdXN0IGVuZAo+ICsgICAgLy8gd2l0aCBhIG51bGwgYXMgd2VsbC4KPiArICAgIGNoYXIg
bmFtZVtCT09URlNfUEFUSF9NQVhdOwo+ICt9Owo+ICsKPiArZXh0ZXJuIGNoYXIgYm9vdGZzX3N0
YXJ0Owo+ICsKPiAraW50IHJhbWZzX3NldF9maWxlX2RhdGEoc3RydWN0IHZub2RlICp2cCwgY29u
c3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUpOwo+ICt2b2lkIHVucGFja19ib290ZnModm9pZCkK
PiArewo+ICsgICAgc3RydWN0IGJvb3Rmc19tZXRhZGF0YSAqbWQgPSAoc3RydWN0IGJvb3Rmc19t
ZXRhZGF0YSAqKSZib290ZnNfc3RhcnQ7Cj4gKyAgICBpbnQgZmQsIGk7Cj4gKwo+ICsgICAgZm9y
IChpID0gMDsgbWRbaV0ubmFtZVswXTsgaSsrKSB7Cj4gKyAgICAgICAgaW50IHJldDsKPiArICAg
ICAgICBjaGFyICpwOwo+ICsKPiArICAgICAgICAvLyBta2RpcigpIGRpcmVjdG9yaWVzIG5lZWRl
ZCBmb3IgdGhpcyBwYXRoIG5hbWUsIGFzIG5lY2Vzc2FyeQo+ICsgICAgICAgIGNoYXIgdG1wW0JP
T1RGU19QQVRIX01BWF07Cj4gKyAgICAgICAgc3RybGNweSh0bXAsIG1kW2ldLm5hbWUsIEJPT1RG
U19QQVRIX01BWCk7Cj4gKyAgICAgICAgZm9yIChwID0gdG1wOyAqcDsgKytwKSB7Cj4gKyAgICAg
ICAgICAgIGlmICgqcCA9PSAnLycpIHsKPiArICAgICAgICAgICAgICAgICpwID0gJ1wwJzsKPiAr
ICAgICAgICAgICAgICAgIG1rZGlyKHRtcCwgMDY2Nik7ICAvLyBzaWxlbnRseSBpZ25vcmUgZXJy
b3JzIGFuZCBleGlzdGluZyBkaXJzCj4gKyAgICAgICAgICAgICAgICAqcCA9ICcvJzsKPiArICAg
ICAgICAgICAgfQo+ICsgICAgICAgIH0KPiArCj4gKyAgICAgICAgaWYgKG1kW2ldLnR5cGUgPT0g
Ym9vdGZzX2ZpbGVfdHlwZTo6c3ltbGluaykgewo+ICsgICAgICAgICAgICAvLyBUaGlzIGlzIGEg
c3ltYm9saWMgbGluayByZWNvcmQuIFRoZSBmaWxlJ3MgY29udGVudCBpcyB0aGUKPiArICAgICAg
ICAgICAgLy8gdGFyZ2V0IHBhdGgsIGFuZCB3ZSBhc3N1bWUgZW5kcyB3aXRoIGEgbnVsbC4KPiAr
ICAgICAgICAgICAgaWYgKHN5bWxpbmsoJmJvb3Rmc19zdGFydCArIG1kW2ldLm9mZnNldCwgbWRb
aV0ubmFtZSkgIT0gMCkgewo+ICsgICAgICAgICAgICAgICAga3ByaW50ZigiY291bGRuJ3Qgc3lt
bGluayAlczogJWRcbiIsIG1kW2ldLm5hbWUsIGVycm5vKTsKPiArICAgICAgICAgICAgICAgIHN5
c19wYW5pYygidW5wYWNrX2Jvb3RmcyBmYWlsZWQiKTsKPiArICAgICAgICAgICAgfQo+ICsgICAg
ICAgICAgICBjb250aW51ZTsKPiArICAgICAgICB9Cj4gKyAgICAgICAgaWYgKCoocC0xKSA9PSAn
LycgJiYgbWRbaV0uc2l6ZSA9PSAwKSB7Cj4gKyAgICAgICAgICAgIC8vIFRoaXMgaXMgZGlyZWN0
b3J5IHJlY29yZC4gTm90aGluZyBlbHNlIHRvIGRvCj4gKyAgICAgICAgICAgIGNvbnRpbnVlOwo+
ICsgICAgICAgIH0KPiArCj4gKyAgICAgICAgZmQgPSBjcmVhdChtZFtpXS5uYW1lLCAwNjY2KTsK
PiArICAgICAgICBpZiAoZmQgPCAwKSB7Cj4gKyAgICAgICAgICAgIGtwcmludGYoImNvdWxkbid0
IGNyZWF0ZSAlczogJWRcbiIsCj4gKyAgICAgICAgICAgICAgICAgICAgbWRbaV0ubmFtZSwgZXJy
bm8pOwo+ICsgICAgICAgICAgICBzeXNfcGFuaWMoInVucGFja19ib290ZnMgZmFpbGVkIik7Cj4g
KyAgICAgICAgfQo+ICsKPiArICAgICAgICBzdHJ1Y3QgZmlsZSAqZnA7Cj4gKyAgICAgICAgaW50
IGVycm9yID0gZmdldChmZCwgJmZwKTsKPiArICAgICAgICBpZiAoZXJyb3IpIHsKPiArICAgICAg
ICAgICAga3ByaW50ZigiY291bGRuJ3QgZmdldCAlczogJWRcbiIsCj4gKyAgICAgICAgICAgICAg
ICAgICAgbWRbaV0ubmFtZSwgZXJyb3IpOwo+ICsgICAgICAgICAgICBzeXNfcGFuaWMoInVucGFj
a19ib290ZnMgZmFpbGVkIik7Cj4gKyAgICAgICAgfQo+ICsKPiArICAgICAgICBzdHJ1Y3Qgdm5v
ZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOwo+ICsgICAgICAgIHJldCA9IHJhbWZzX3Nl
dF9maWxlX2RhdGEodnAsICZib290ZnNfc3RhcnQgKyBtZFtpXS5vZmZzZXQsIG1kW2ldLnNpemUp
Owo+ICsgICAgICAgIGlmIChyZXQpIHsKPiArICAgICAgICAgICAga3ByaW50ZigicmFtZnNfc2V0
X2ZpbGVfZGF0YSBmYWlsZWQsIHJldCA9ICVkXG4iLCByZXQpOwo+ICsgICAgICAgICAgICBzeXNf
cGFuaWMoInVucGFja19ib290ZnMgZmFpbGVkIik7Cj4gKyAgICAgICAgfQo+ICsKPiArICAgICAg
ICBmZHJvcChmcCk7Cj4gKyAgICAgICAgY2xvc2UoZmQpOwo+ICsgICAgfQo+ICt9Cj4gKwo+ICt2
b2lkIG1vdW50X3Jvb3Rmcyh2b2lkKQo+ICt7Cj4gKyAgICBpbnQgcmV0Owo+ICsKPiArICAgIHJl
dCA9IHN5c19tb3VudCgiIiwgIi8iLCAicmFtZnMiLCAwLCBudWxscHRyKTsKPiArICAgIGlmIChy
ZXQpCj4gKyAgICAgICAga3ByaW50ZigiZmFpbGVkIHRvIG1vdW50IHJvb3RmcywgZXJyb3IgPSAl
c1xuIiwgc3RyZXJyb3IocmV0KSk7Cj4gKwo+ICsgICAgaWYgKG1rZGlyKCIvZGV2IiwgMDc1NSkg
PCAwKQo+ICsgICAgICAgIGtwcmludGYoImZhaWxlZCB0byBjcmVhdGUgL2RldiwgZXJyb3IgPSAl
c1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKPiArCj4gKyAgICByZXQgPSBzeXNfbW91bnQoIiIsICIv
ZGV2IiwgImRldmZzIiwgMCwgbnVsbHB0cik7Cj4gKyAgICBpZiAocmV0KQo+ICsgICAgICAgIGtw
cmludGYoImZhaWxlZCB0byBtb3VudCBkZXZmcywgZXJyb3IgPSAlc1xuIiwgc3RyZXJyb3IocmV0
KSk7Cj4gK30KPiArCj4gK2V4dGVybiAiQyIKPiAraW50IG5tb3VudChzdHJ1Y3QgaW92ZWMgKmlv
diwgdW5zaWduZWQgbmlvdiwgaW50IGZsYWdzKQo+ICt7Cj4gKyAgICBzdHJ1Y3QgYXJncyB7Cj4g
KyAgICAgICAgY2hhciogZnN0eXBlID0gbnVsbHB0cjsKPiArICAgICAgICBjaGFyKiBmc3BhdGgg
PSBudWxscHRyOwo+ICsgICAgICAgIGNoYXIqIGZyb20gPSBudWxscHRyOwo+ICsgICAgfTsKPiAr
ICAgIHN0YXRpYyB1bm9yZGVyZWRfbWFwPHN0cmluZywgY2hhciogYXJnczo6Kj4gYXJnbWFwIHsK
PiArICAgICAgICB7ICJmc3R5cGUiLCAmYXJnczo6ZnN0eXBlIH0sCj4gKyAgICAgICAgeyAiZnNw
YXRoIiwgJmFyZ3M6OmZzcGF0aCB9LAo+ICsgICAgICAgIHsgImZyb20iLCAmYXJnczo6ZnJvbSB9
LAo+ICsgICAgfTsKPiArICAgIGFyZ3MgYTsKPiArICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bmlvdjsgaSArPSAyKSB7Cj4gKyAgICAgICAgc3RkOjpzdHJpbmcgcyhzdGF0aWNfY2FzdDxjb25z
dCBjaGFyKj4oaW92W2ldLmlvdl9iYXNlKSk7Cj4gKyAgICAgICAgaWYgKGFyZ21hcC5jb3VudChz
KSkgewo+ICsgICAgICAgICAgICBhLiooYXJnbWFwW3NdKSA9IHN0YXRpY19jYXN0PGNoYXIqPihp
b3ZbaSsxXS5pb3ZfYmFzZSk7Cj4gKyAgICAgICAgfQo+ICsgICAgfQo+ICsgICAgcmV0dXJuIHN5
c19tb3VudChhLmZyb20sIGEuZnNwYXRoLCBhLmZzdHlwZSwgZmxhZ3MsIG51bGxwdHIpOwo+ICt9
Cj4gKwo+ICtzdGF0aWMgdm9pZCBpbXBvcnRfZXh0cmFfemZzX3Bvb2xzKHZvaWQpCj4gK3sKPiAr
ICAgIHN0cnVjdCBzdGF0IHN0Owo+ICsgICAgaW50IHJldDsKPiArCj4gKyAgICAvLyBUaGUgZmls
ZSAnL2V0Yy9tbnR0YWInIGlzIGEgTGliWkZTIHJlcXVpcmVtZW50IGFuZCB3aWxsIG5vdAo+ICsg
ICAgLy8gZXhpc3QgZHVyaW5nIGNwaW9kIHBoYXNlLiBUaGUgZnVuY3Rpb25hbGl0eSBwcm92aWRl
ZCBieSB0aGlzCj4gKyAgICAvLyBmdW5jdGlvbiBpc24ndCBuZWVkZWQgZHVyaW5nIHRoYXQgcGhh
c2UsIHNvIGxldCdzIHNraXAgaXQuCj4gKyAgICBpZiAoc3RhdCgiL2V0Yy9tbnR0YWIiICwgJnN0
KSAhPSAwKSB7Cj4gKyAgICAgICAgcmV0dXJuOwo+ICsgICAgfQo+ICsKPiArICAgIC8vIEltcG9y
dCBleHRyYSBwb29scyBtb3VudGluZyBkYXRhc2V0cyB0aGVyZSBjb250YWluZWQuCj4gKyAgICAv
LyBEYXRhc2V0cyBmcm9tIG9zdiBwb29sIHdpbGwgbm90IGJlIG1vdW50ZWQgaGVyZS4KPiArICAg
IGlmIChhY2Nlc3MoInpwb29sLnNvIiwgWF9PSykgIT0gMCkgewo+ICsgICAgICAgIHJldHVybjsK
PiArICAgIH0KPiArICAgIHZlY3RvcjxzdHJpbmc+IHpwb29sX2FyZ3MgPSB7Inpwb29sIiwgImlt
cG9ydCIsICItZiIsICItYSIgfTsKPiArICAgIGF1dG8gb2sgPSBvc3Y6OnJ1bigienBvb2wuc28i
LCB6cG9vbF9hcmdzLCAmcmV0KTsKPiArICAgIGFzc2VydChvayk7Cj4gKwo+ICsgICAgaWYgKCFy
ZXQpIHsKPiArICAgICAgICBkZWJ1ZygiemZzOiBleHRyYSBaRlMgcG9vbChzKSBmb3VuZC5cbiIp
Owo+ICsgICAgfQo+ICt9Cj4gKwo+ICt2b2lkIHBpdm90X3Jvb3Rmcyhjb25zdCBjaGFyKiBwYXRo
KQo+ICt7Cj4gKyAgICBpbnQgcmV0ID0gc3lzX3Bpdm90X3Jvb3QocGF0aCwgIi8iKTsKPiArICAg
IGlmIChyZXQpCj4gKyAgICAgICAga3ByaW50ZigiZmFpbGVkIHRvIHBpdm90IHJvb3QsIGVycm9y
ID0gJXNcbiIsIHN0cmVycm9yKHJldCkpOwo+ICsKPiArICAgIGF1dG8gZW50ID0gc2V0bW50ZW50
KCIvZXRjL2ZzdGFiIiwgInIiKTsKPiArICAgIGlmICghZW50KSB7Cj4gKyAgICAgICAgcmV0dXJu
Owo+ICsgICAgfQo+ICsKPiArICAgIHN0cnVjdCBtbnRlbnQgKm0gPSBudWxscHRyOwo+ICsgICAg
d2hpbGUgKChtID0gZ2V0bW50ZW50KGVudCkpICE9IG51bGxwdHIpIHsKPiArICAgICAgICBpZiAo
IXN0cmNtcChtLT5tbnRfZGlyLCAiLyIpKSB7Cj4gKyAgICAgICAgICAgIGNvbnRpbnVlOwo+ICsg
ICAgICAgIH0KPiArCj4gKyAgICAgICAgaWYgKChtLT5tbnRfb3B0cyAhPSBudWxscHRyKSAmJiBz
dHJjbXAobS0+bW50X29wdHMsIE1OVE9QVF9ERUZBVUxUUykpIHsKPiArICAgICAgICAgICAgcHJp
bnRmKCJXYXJuaW5nOiBvcHRzICVzLCBpZ25vcmVkIGZvciBmcyAlc1xuIiwgbS0+bW50X29wdHMs
IG0tPm1udF90eXBlKTsKPiArICAgICAgICB9Cj4gKwo+ICsgICAgICAgIC8vIEZJWE1FOiBSaWdo
dCBub3csIGlnbm9yaW5nIG1udG9wcy4gSW4gdGhlIGZ1dHVyZSB3ZSBtYXkgaGF2ZSBhbiBvcHRp
b24gcGFyc2VyCj4gKyAgICAgICAgcmV0ID0gc3lzX21vdW50KG0tPm1udF9mc25hbWUsIG0tPm1u
dF9kaXIsIG0tPm1udF90eXBlLCAwLCBudWxscHRyKTsKPiArICAgICAgICBpZiAocmV0KSB7Cj4g
KyAgICAgICAgICAgIHByaW50ZigiZmFpbGVkIHRvIG1vdW50ICVzLCBlcnJvciA9ICVzXG4iLCBt
LT5tbnRfdHlwZSwgc3RyZXJyb3IocmV0KSk7Cj4gKyAgICAgICAgfQo+ICsgICAgfQo+ICsgICAg
ZW5kbW50ZW50KGVudCk7Cj4gK30KPiArCj4gK2V4dGVybiAiQyIgdm9pZCB1bm1vdW50X2RldmZz
KCkKPiArewo+ICsgICAgaW50IHJldCA9IHN5c191bW91bnQoIi9kZXYiKTsKPiArICAgIGlmIChy
ZXQpCj4gKyAgICAgICAga3ByaW50ZigiZmFpbGVkIHRvIHVubW91bnQgL2RldiwgZXJyb3IgPSAl
c1xuIiwgc3RyZXJyb3IocmV0KSk7Cj4gK30KPiArCj4gK2V4dGVybiAiQyIgaW50IG1vdW50X3Jv
ZnNfcm9vdGZzKGJvb2wgcGl2b3Rfcm9vdCkKPiArewo+ICsgICAgaW50IHJldDsKPiArCj4gKyAg
ICBpZiAobWtkaXIoIi9yb2ZzIiwgMDc1NSkgPCAwKQo+ICsgICAgICAgIGtwcmludGYoImZhaWxl
ZCB0byBjcmVhdGUgL3JvZnMsIGVycm9yID0gJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7Cj4gKwo+
ICsgICAgcmV0ID0gc3lzX21vdW50KCIvZGV2L3ZibGswLjEiLCAiL3JvZnMiLCAicm9mcyIsIE1O
VF9SRE9OTFksIDApOwo+ICsKPiArICAgIGlmIChyZXQpIHsKPiArICAgICAgICBrcHJpbnRmKCJm
YWlsZWQgdG8gbW91bnQgL3JvZnMsIGVycm9yID0gJXNcbiIsIHN0cmVycm9yKHJldCkpOwo+ICsg
ICAgICAgIHJtZGlyKCIvcm9mcyIpOwo+ICsgICAgICAgIHJldHVybiByZXQ7Cj4gKyAgICB9Cj4g
Kwo+ICsgICAgaWYgKHBpdm90X3Jvb3QpIHsKPiArICAgICAgICBwaXZvdF9yb290ZnMoIi9yb2Zz
Iik7Cj4gKyAgICB9Cj4gKwo+ICsgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gK2V4dGVybiAiQyIg
dm9pZCBtb3VudF96ZnNfcm9vdGZzKGJvb2wgcGl2b3Rfcm9vdCkKPiArewo+ICsgICAgaWYgKG1r
ZGlyKCIvemZzIiwgMDc1NSkgPCAwKQo+ICsgICAgICAgIGtwcmludGYoImZhaWxlZCB0byBjcmVh
dGUgL3pmcywgZXJyb3IgPSAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKPiArCj4gKyAgICBpbnQg
cmV0ID0gc3lzX21vdW50KCIvZGV2L3ZibGswLjEiLCAiL3pmcyIsICJ6ZnMiLCAwLCAodm9pZCAq
KSJvc3YvemZzIik7Cj4gKwo+ICsgICAgaWYgKHJldCkKPiArICAgICAgICBrcHJpbnRmKCJmYWls
ZWQgdG8gbW91bnQgL3pmcywgZXJyb3IgPSAlc1xuIiwgc3RyZXJyb3IocmV0KSk7Cj4gKwo+ICsg
ICAgaWYgKCFwaXZvdF9yb290KSB7Cj4gKyAgICAgICAgcmV0dXJuOwo+ICsgICAgfQo+ICsKPiAr
ICAgIHBpdm90X3Jvb3RmcygiL3pmcyIpOwo+ICsKPiArICAgIGltcG9ydF9leHRyYV96ZnNfcG9v
bHMoKTsKPiArfQo+ICsKPiArZXh0ZXJuICJDIiB2b2lkIHVubW91bnRfcm9vdGZzKHZvaWQpCj4g
K3sKPiArICAgIGludCByZXQ7Cj4gKwo+ICsgICAgc3lzX3Vtb3VudCgiL2RldiIpOwo+ICsKPiAr
ICAgIHJldCA9IHN5c191bW91bnQoIi9wcm9jIik7Cj4gKyAgICBpZiAocmV0KSB7Cj4gKyAgICAg
ICAga3ByaW50ZigiV2FybmluZzogdW5tb3VudF9yb290ZnM6IGZhaWxlZCB0byB1bm1vdW50IC9w
cm9jLCAiCj4gKyAgICAgICAgICAgICJlcnJvciA9ICVzXG4iLCBzdHJlcnJvcihyZXQpKTsKPiAr
ICAgIH0KPiArCj4gKyAgICByZXQgPSBzeXNfdW1vdW50MigiLyIsIE1OVF9GT1JDRSk7Cj4gKyAg
ICBpZiAocmV0KSB7Cj4gKyAgICAgICAga3ByaW50ZigiV2FybmluZzogdW5tb3VudF9yb290ZnM6
IGZhaWxlZCB0byB1bm1vdW50IC8sICIKPiArICAgICAgICAgICAgImVycm9yID0gJXNcbiIsIHN0
cmVycm9yKHJldCkpOwo+ICsgICAgfQo+ICt9Cj4gKwo+ICtleHRlcm4gIkMiIHZvaWQgYmlvX2lu
aXQodm9pZCk7Cj4gK2V4dGVybiAiQyIgdm9pZCBiaW9fc3luYyh2b2lkKTsKPiArCj4gK2ludCB2
ZnNfaW5pdGlhbGl6ZWQ7Cj4gKwo+ICtleHRlcm4gIkMiCj4gK3ZvaWQKPiArdmZzX2luaXQodm9p
ZCkKPiArewo+ICsgICAgY29uc3Qgc3RydWN0IHZmc3N3ICpmczsKPiArCj4gKyAgICBiaW9faW5p
dCgpOwo+ICsgICAgbG9va3VwX2luaXQoKTsKPiArICAgIHZub2RlX2luaXQoKTsKPiArICAgIHRh
c2tfYWxsb2MoJm1haW5fdGFzayk7Cj4gKwo+ICsgICAgLyoKPiArICAgICAqIEluaXRpYWxpemUg
ZWFjaCBmaWxlIHN5c3RlbS4KPiArICAgICAqLwo+ICsgICAgZm9yIChmcyA9IHZmc3N3OyBmcy0+
dnNfbmFtZTsgZnMrKykgewo+ICsgICAgICAgIGlmIChmcy0+dnNfaW5pdCkgewo+ICsgICAgICAg
ICAgICBEUFJJTlRGKFZGU0RCX0NPUkUsICgiVkZTOiBpbml0aWFsaXppbmcgJXNcbiIsCj4gKyAg
ICAgICAgICAgICAgICAgICAgZnMtPnZzX25hbWUpKTsKPiArICAgICAgICAgICAgZnMtPnZzX2lu
aXQoKTsKPiArICAgICAgICB9Cj4gKyAgICB9Cj4gKwo+ICsgICAgbW91bnRfcm9vdGZzKCk7Cj4g
KyAgICB1bnBhY2tfYm9vdGZzKCk7Cj4gKwo+ICsgICAgLy8JaWYgKG9wZW4oIi9kZXYvY29uc29s
ZSIsIE9fUkRXUiwgMCkgIT0gMCkKPiArICAgIGlmIChjb25zb2xlOjpvcGVuKCkgIT0gMCkKPiAr
ICAgICAgICBrcHJpbnRmKCJmYWlsZWQgdG8gb3BlbiBjb25zb2xlLCBlcnJvciA9ICVkXG4iLCBl
cnJubyk7Cj4gKyAgICBpZiAoZHVwKDApICE9IDEpCj4gKyAgICAgICAga3ByaW50ZigiZmFpbGVk
IHRvIGR1cCBjb25zb2xlICgxKVxuIik7Cj4gKyAgICBpZiAoZHVwKDApICE9IDIpCj4gKyAgICAg
ICAga3ByaW50ZigiZmFpbGVkIHRvIGR1cCBjb25zb2xlICgyKVxuIik7Cj4gKyAgICB2ZnNfaW5p
dGlhbGl6ZWQgPSAxOwo+ICt9Cj4gKwo+ICt2b2lkIHZmc19leGl0KHZvaWQpCj4gK3sKPiArICAg
IC8qIEZyZWUgdXAgbWFpbl90YXNrIChzdG9yZXMgY3dkIGRhdGEpIHJlc291cmNlcyAqLwo+ICsg
ICAgcmVwbGFjZV9jd2QobWFpbl90YXNrLCBudWxscHRyLCBbXSgpIHsgcmV0dXJuIDA7IH0pOwo+
ICsgICAgLyogVW5tb3VudCBhbGwgZmlsZSBzeXN0ZW1zICovCj4gKyAgICB1bm1vdW50X3Jvb3Rm
cygpOwo+ICsgICAgLyogRmluaXNoIHdpdGggdGhlIGJpbyBsYXllciAqLwo+ICsgICAgYmlvX3N5
bmMoKTsKPiArfQo+ICsKPiArdm9pZCBzeXNfcGFuaWMoY29uc3QgY2hhciAqc3RyKQo+ICt7Cj4g
KyAgICBhYm9ydCgicGFuaWM6ICVzIiwgc3RyKTsKPiArfQo+ICsKPiBkaWZmIC0tZ2l0IGEvbGli
L3Zmc2NvcmUvbW91bnQuYyBiL2xpYi92ZnNjb3JlL21vdW50LmMKPiBuZXcgZmlsZSBtb2RlIDEw
MDY0NAo+IGluZGV4IDAwMDAwMDAwLi5kYWM0ZDA5Ywo+IC0tLSAvZGV2L251bGwKPiArKysgYi9s
aWIvdmZzY29yZS9tb3VudC5jCj4gQEAgLTAsMCArMSw0OTEgQEAKPiArLyoKPiArICogQ29weXJp
Z2h0IChjKSAyMDA1LTIwMDcsIEtvaHN1a2UgT2h0YW5pCj4gKyAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCj4gKyAqCj4gKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAo+ICsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKPiArICogYXJlIG1ldDoK
PiArICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgo+ICsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCj4gKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCj4gKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUg
b2YgdGhlIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGFueSBjby1jb250cmlidXRvcnMKPiArICog
ICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bSB0aGlzIHNvZnR3YXJlCj4gKyAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgo+ICsgKgo+ICsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBB
VVRIT1IgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECj4gKyAqIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQo+
ICsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQo+ICsgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQo+ICsgKiBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTAo+ICsgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwo+ICsgKiBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKPiArICog
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QKPiArICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQo+ICsgKiBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GCj4gKyAqIFNVQ0ggREFNQUdFLgo+ICsgKi8KPiArCj4gKy8qCj4gKyAqIHZmc19tb3VudC5j
IC0gbW91bnQgb3BlcmF0aW9ucwo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgo+
ICsjaW5jbHVkZSA8c3lzL3BhcmFtLmg+Cj4gKyNpbmNsdWRlIDxkaXJlbnQuaD4KPiArCj4gKyNp
bmNsdWRlIDxsaW1pdHMuaD4KPiArI2luY2x1ZGUgPHVuaXN0ZC5oPgo+ICsjaW5jbHVkZSA8c3Rk
bGliLmg+Cj4gKyNpbmNsdWRlIDxzdHJpbmcuaD4KPiArI2luY2x1ZGUgPHN0ZGlvLmg+Cj4gKyNp
bmNsdWRlIDxlcnJuby5oPgo+ICsjaW5jbHVkZSA8ZmNudGwuaD4KPiArCj4gKyNpbmNsdWRlIDxv
c3YvcHJleC5oPgo+ICsjaW5jbHVkZSA8b3N2L3Zub2RlLmg+Cj4gKyNpbmNsdWRlIDxvc3YvZGV2
aWNlLmg+Cj4gKyNpbmNsdWRlIDxvc3YvZGVidWcuaD4KPiArI2luY2x1ZGUgPG9zdi9tdXRleC5o
Pgo+ICsjaW5jbHVkZSAidmZzLmgiCj4gKwo+ICsjaW5jbHVkZSA8bWVtb3J5Pgo+ICsjaW5jbHVk
ZSA8bGlzdD4KPiArCj4gKy8qCj4gKyAqIExpc3QgZm9yIFZGUyBtb3VudCBwb2ludHMuCj4gKyAq
Lwo+ICtzdGF0aWMgc3RkOjpsaXN0PG1vdW50Kj4gbW91bnRfbGlzdDsKPiArCj4gKy8qCj4gKyAq
IEdsb2JhbCBsb2NrIHRvIGFjY2VzcyBtb3VudCBwb2ludC4KPiArICovCj4gK3N0YXRpYyBtdXRl
eCBtb3VudF9sb2NrOwo+ICsKPiArLyoKPiArICogTG9va3VwIGZpbGUgc3lzdGVtLgo+ICsgKi8K
PiArc3RhdGljIGNvbnN0IHN0cnVjdCB2ZnNzdyAqCj4gK2ZzX2dldGZzKGNvbnN0IGNoYXIgKm5h
bWUpCj4gK3sKPiArICAgIGNvbnN0IHN0cnVjdCB2ZnNzdyAqZnM7Cj4gKwo+ICsgICAgZm9yIChm
cyA9IHZmc3N3OyBmcy0+dnNfbmFtZTsgZnMrKykgewo+ICsgICAgICAgIGlmICghc3RybmNtcChu
YW1lLCBmcy0+dnNfbmFtZSwgRlNNQVhOQU1FUykpCj4gKyAgICAgICAgICAgIGJyZWFrOwo+ICsg
ICAgfQo+ICsgICAgaWYgKCFmcy0+dnNfbmFtZSkKPiArICAgICAgICByZXR1cm4gbnVsbHB0cjsK
PiArICAgIHJldHVybiBmczsKPiArfQo+ICsKPiArY29uc3QgY2hhcioKPiArZnNfZ2V0ZnNuYW1l
KHZmc29wcyogb3BzKQo+ICt7Cj4gKyAgICBmb3IgKGF1dG8gZnMgPSB2ZnNzdzsgZnMtPnZzX25h
bWU7IGZzKyspIHsKPiArICAgICAgICBpZiAoZnMtPnZzX29wID09IG9wcykgewo+ICsgICAgICAg
ICAgICByZXR1cm4gZnMtPnZzX25hbWU7Cj4gKyAgICAgICAgfQo+ICsgICAgfQo+ICsgICAgYWJv
cnQoKTsKPiArfQo+ICsKPiAraW50Cj4gK3N5c19tb3VudChjb25zdCBjaGFyICpkZXYsIGNvbnN0
IGNoYXIgKmRpciwgY29uc3QgY2hhciAqZnNuYW1lLCBpbnQgZmxhZ3MsIGNvbnN0IHZvaWQgKmRh
dGEpCj4gK3sKPiArICAgIGNvbnN0IHN0cnVjdCB2ZnNzdyAqZnM7Cj4gKyAgICBzdHJ1Y3QgbW91
bnQgKm1wOwo+ICsgICAgc3RydWN0IGRldmljZSAqZGV2aWNlOwo+ICsgICAgc3RydWN0IGRlbnRy
eSAqZHBfY292ZXJlZDsKPiArICAgIHN0cnVjdCB2bm9kZSAqdnA7Cj4gKyAgICBpbnQgZXJyb3I7
Cj4gKwo+ICsgICAga3ByaW50ZigiVkZTOiBtb3VudGluZyAlcyBhdCAlc1xuIiwgZnNuYW1lLCBk
aXIpOwo+ICsKPiArICAgIGlmICghZGlyIHx8ICpkaXIgPT0gJ1wwJykKPiArICAgICAgICByZXR1
cm4gRU5PRU5UOwo+ICsKPiArICAgIC8qIEZpbmQgYSBmaWxlIHN5c3RlbS4gKi8KPiArICAgIGlm
ICghKGZzID0gZnNfZ2V0ZnMoZnNuYW1lKSkpCj4gKyAgICAgICAgcmV0dXJuIEVOT0RFVjsgIC8q
IE5vIHN1Y2ggZmlsZSBzeXN0ZW0gKi8KPiArCj4gKyAgICAvKiBPcGVuIGRldmljZS4gbnVsbHB0
ciBjYW4gYmUgc3BlY2lmaWVkIGFzIGEgZGV2aWNlLiAqLwo+ICsgICAgLy8gQWxsb3cgZGV2aWNl
X29wZW4oKSB0byBmYWlsLCBpbiB3aGljaCBjYXNlIGRldiBpcyBpbnRlcnByZXRlZAo+ICsgICAg
Ly8gYnkgdGhlIGZpbGUgc3lzdGVtIG1vdW50IHJvdXRpbmUgKGUuZyB6ZnMgcG9vbHMpCj4gKyAg
ICBkZXZpY2UgPSAwOwo+ICsgICAgaWYgKGRldiAmJiBzdHJuY21wKGRldiwgIi9kZXYvIiwgNSkg
PT0gMCkKPiArICAgICAgICBkZXZpY2Vfb3BlbihkZXYgKyA1LCBET19SRFdSLCAmZGV2aWNlKTsK
PiArCj4gKyAgICAvKiBDaGVjayBpZiBkZXZpY2Ugb3IgZGlyZWN0b3J5IGhhcyBhbHJlYWR5IGJl
ZW4gbW91bnRlZC4gKi8KPiArICAgIC8vIFdlIG5lZWQgdG8gYXZvaWQgdGhlIHNpdHVhdGlvbiB3
aGVyZSBhZnRlciB3ZSBhbHJlYWR5IHZlcmlmaWVkIHRoYXQKPiArICAgIC8vIHRoZSBtb3VudCBw
b2ludCBpcyBmcmVlLCBidXQgYmVmb3JlIHdlIGFjdHVhbGx5IGFkZCBpdCB0byBtb3VudF9saXN0
LAo+ICsgICAgLy8gYW5vdGhlciBjb25jdXJyZW50IG1vdW50IGFkZHMgaXQuIFNvIHdlIHVzZSBh
IG5ldyBtdXRleCB0byBlbnN1cmUKPiArICAgIC8vIHRoYXQgb25seSBvbmUgc3lzX21vdW50KCkg
cnVucyBhdCBhIHRpbWUuIFdlIGNhbm5vdCByZXVzZSB0aGUgZXhpc3RpbmcKPiArICAgIC8vIG1v
dW50X2xvY2sgZm9yIHRoaXMgcHVycG9zZTogSWYgd2UgdGFrZSBtb3VudF9sb2NrIGFuZCB0aGVu
IGRvCj4gKyAgICAvLyBsb29rdXBzLCB0aGlzIGlzIGxvY2sgb3JkZXIgaW52ZXJzaW9uIGFuZCBj
YW4gcmVzdWx0IGluIGRlYWRsb2NrLgo+ICsgICAgc3RhdGljIG11dGV4IHN5c19tb3VudF9sb2Nr
Owo+ICsgICAgU0NPUEVfTE9DSyhzeXNfbW91bnRfbG9jayk7Cj4gKyAgICBXSVRIX0xPQ0sobW91
bnRfbG9jaykgewo+ICsgICAgICAgIGZvciAoYXV0byYmIG1wIDogbW91bnRfbGlzdCkgewo+ICsg
ICAgICAgICAgICBpZiAoIXN0cmNtcChtcC0+bV9wYXRoLCBkaXIpIHx8Cj4gKyAgICAgICAgICAg
ICAgICAoZGV2aWNlICYmIG1wLT5tX2RldiA9PSBkZXZpY2UpKSB7Cj4gKyAgICAgICAgICAgICAg
ICBlcnJvciA9IEVCVVNZOyAgLyogQWxyZWFkeSBtb3VudGVkICovCj4gKyAgICAgICAgICAgICAg
ICBnb3RvIGVycjE7Cj4gKyAgICAgICAgICAgIH0KPiArICAgICAgICB9Cj4gKyAgICB9Cj4gKyAg
ICAvKgo+ICsgICAgICogQ3JlYXRlIFZGUyBtb3VudCBlbnRyeS4KPiArICAgICAqLwo+ICsgICAg
aWYgKCEobXAgPSBuZXcgbW91bnQpKSB7Cj4gKyAgICAgICAgZXJyb3IgPSBFTk9NRU07Cj4gKyAg
ICAgICAgZ290byBlcnIxOwo+ICsgICAgfQo+ICsgICAgbXAtPm1fY291bnQgPSAwOwo+ICsgICAg
bXAtPm1fb3AgPSBmcy0+dnNfb3A7Cj4gKyAgICBtcC0+bV9mbGFncyA9IGZsYWdzOwo+ICsgICAg
bXAtPm1fZGV2ID0gZGV2aWNlOwo+ICsgICAgbXAtPm1fZGF0YSA9IG51bGxwdHI7Cj4gKyAgICBz
dHJsY3B5KG1wLT5tX3BhdGgsIGRpciwgc2l6ZW9mKG1wLT5tX3BhdGgpKTsKPiArICAgIHN0cmxj
cHkobXAtPm1fc3BlY2lhbCwgZGV2LCBzaXplb2YobXAtPm1fc3BlY2lhbCkpOwo+ICsKPiArICAg
IC8qCj4gKyAgICAgKiBHZXQgdm5vZGUgdG8gYmUgY292ZXJlZCBpbiB0aGUgdXBwZXIgZmlsZSBz
eXN0ZW0uCj4gKyAgICAgKi8KPiArICAgIGlmICgqZGlyID09ICcvJyAmJiAqKGRpciArIDEpID09
ICdcMCcpIHsKPiArICAgICAgICAvKiBJZ25vcmUgaWYgaXQgbW91bnRzIHRvIGdsb2JhbCByb290
IGRpcmVjdG9yeS4gKi8KPiArICAgICAgICBkcF9jb3ZlcmVkID0gbnVsbHB0cjsKPiArICAgIH0g
ZWxzZSB7Cj4gKyAgICAgICAgaWYgKChlcnJvciA9IG5hbWVpKGRpciwgJmRwX2NvdmVyZWQpKSAh
PSAwKSB7Cj4gKwo+ICsgICAgICAgICAgICBlcnJvciA9IEVOT0VOVDsKPiArICAgICAgICAgICAg
Z290byBlcnIyOwo+ICsgICAgICAgIH0KPiArICAgICAgICBpZiAoZHBfY292ZXJlZC0+ZF92bm9k
ZS0+dl90eXBlICE9IFZESVIpIHsKPiArICAgICAgICAgICAgZXJyb3IgPSBFTk9URElSOwo+ICsg
ICAgICAgICAgICBnb3RvIGVycjM7Cj4gKyAgICAgICAgfQo+ICsgICAgfQo+ICsgICAgbXAtPm1f
Y292ZXJlZCA9IGRwX2NvdmVyZWQ7Cj4gKwo+ICsgICAgLyoKPiArICAgICAqIENyZWF0ZSBhIHJv
b3Qgdm5vZGUgZm9yIHRoaXMgZmlsZSBzeXN0ZW0uCj4gKyAgICAgKi8KPiArICAgIHZnZXQobXAs
IDAsICZ2cCk7Cj4gKyAgICBpZiAodnAgPT0gbnVsbHB0cikgewo+ICsgICAgICAgIGVycm9yID0g
RU5PTUVNOwo+ICsgICAgICAgIGdvdG8gZXJyMzsKPiArICAgIH0KPiArICAgIHZwLT52X3R5cGUg
PSBWRElSOwo+ICsgICAgdnAtPnZfZmxhZ3MgPSBWUk9PVDsKPiArICAgIHZwLT52X21vZGUgPSBT
X0lGRElSIHwgU19JUlVTUiB8IFNfSVdVU1IgfCBTX0lYVVNSOwo+ICsKPiArICAgIG1wLT5tX3Jv
b3QgPSBkZW50cnlfYWxsb2MobnVsbHB0ciwgdnAsICIvIik7Cj4gKyAgICBpZiAoIW1wLT5tX3Jv
b3QpIHsKPiArICAgICAgICB2cHV0KHZwKTsKPiArICAgICAgICBnb3RvIGVycjM7Cj4gKyAgICB9
Cj4gKyAgICB2cHV0KHZwKTsKPiArCj4gKyAgICAvKgo+ICsgICAgICogQ2FsbCBhIGZpbGUgc3lz
dGVtIHNwZWNpZmljIHJvdXRpbmUuCj4gKyAgICAgKi8KPiArICAgIGlmICgoZXJyb3IgPSBWRlNf
TU9VTlQobXAsIGRldiwgZmxhZ3MsIGRhdGEpKSAhPSAwKQo+ICsgICAgICAgIGdvdG8gZXJyNDsK
PiArCj4gKyAgICBpZiAobXAtPm1fZmxhZ3MgJiBNTlRfUkRPTkxZKQo+ICsgICAgICAgIHZwLT52
X21vZGUgJj1+U19JV1VTUjsKPiArCj4gKyAgICAvKgo+ICsgICAgICogSW5zZXJ0IHRvIG1vdW50
IGxpc3QKPiArICAgICAqLwo+ICsgICAgV0lUSF9MT0NLKG1vdW50X2xvY2spIHsKPiArICAgICAg
ICBtb3VudF9saXN0LnB1c2hfYmFjayhtcCk7Cj4gKyAgICB9Cj4gKwo+ICsgICAgcmV0dXJuIDA7
ICAgLyogc3VjY2VzcyAqLwo+ICsgZXJyNDoKPiArICAgIGRyZWxlKG1wLT5tX3Jvb3QpOwo+ICsg
ZXJyMzoKPiArICAgIGlmIChkcF9jb3ZlcmVkKQo+ICsgICAgICAgIGRyZWxlKGRwX2NvdmVyZWQp
Owo+ICsgZXJyMjoKPiArICAgIGRlbGV0ZSBtcDsKPiArIGVycjE6Cj4gKyAgICBpZiAoZGV2aWNl
KQo+ICsgICAgICAgIGRldmljZV9jbG9zZShkZXZpY2UpOwo+ICsKPiArICAgIHJldHVybiBlcnJv
cjsKPiArfQo+ICsKPiArdm9pZAo+ICtyZWxlYXNlX21wX2RlbnRyaWVzKHN0cnVjdCBtb3VudCAq
bXApCj4gK3sKPiArICAgIC8qIERlY3JlbWVudCByZWZlcmVjZSBjb3VudCBvZiByb290IHZub2Rl
ICovCj4gKyAgICBpZiAobXAtPm1fY292ZXJlZCkgewo+ICsgICAgICAgIGRyZWxlKG1wLT5tX2Nv
dmVyZWQpOwo+ICsgICAgfQo+ICsKPiArICAgIC8qIFJlbGVhc2Ugcm9vdCBkZW50cnkgKi8KPiAr
ICAgIGRyZWxlKG1wLT5tX3Jvb3QpOwo+ICt9Cj4gKwo+ICtpbnQKPiArc3lzX3Vtb3VudDIoY29u
c3QgY2hhciAqcGF0aCwgaW50IGZsYWdzKQo+ICt7Cj4gKyAgICBzdHJ1Y3QgbW91bnQgKm1wOwo+
ICsgICAgaW50IGVycm9yLCBwYXRobGVuOwo+ICsKPiArICAgIGtwcmludGYoIlZGUzogdW5tb3Vu
dGluZyAlc1xuIiwgcGF0aCk7Cj4gKwo+ICsgICAgU0NPUEVfTE9DSyhtb3VudF9sb2NrKTsKPiAr
Cj4gKyAgICBwYXRobGVuID0gc3RybGVuKHBhdGgpOwo+ICsgICAgaWYgKHBhdGhsZW4gPj0gTUFY
UEFUSExFTikgewo+ICsgICAgICAgIGVycm9yID0gRU5BTUVUT09MT05HOwo+ICsgICAgICAgIGdv
dG8gb3V0Owo+ICsgICAgfQo+ICsKPiArICAgIC8qIEdldCBtb3VudCBlbnRyeSAqLwo+ICsgICAg
Zm9yIChhdXRvJiYgdG1wIDogbW91bnRfbGlzdCkgewo+ICsgICAgICAgIGlmICghc3RyY21wKHBh
dGgsIHRtcC0+bV9wYXRoKSkgewo+ICsgICAgICAgICAgICBtcCA9IHRtcDsKPiArICAgICAgICAg
ICAgZ290byBmb3VuZDsKPiArICAgICAgICB9Cj4gKyAgICB9Cj4gKwo+ICsgICAgZXJyb3IgPSBF
SU5WQUw7Cj4gKyAgICBnb3RvIG91dDsKPiArCj4gK2ZvdW5kOgo+ICsgICAgLyoKPiArICAgICAq
IFJvb3QgZnMgY2FuIG5vdCBiZSB1bm1vdW50ZWQuCj4gKyAgICAgKi8KPiArICAgIGlmIChtcC0+
bV9jb3ZlcmVkID09IG51bGxwdHIgJiYgIShmbGFncyAmIE1OVF9GT1JDRSkpIHsKPiArICAgICAg
ICBlcnJvciA9IEVJTlZBTDsKPiArICAgICAgICBnb3RvIG91dDsKPiArICAgIH0KPiArCj4gKyAg
ICBpZiAoKGVycm9yID0gVkZTX1VOTU9VTlQobXAsIGZsYWdzKSkgIT0gMCkKPiArICAgICAgICBn
b3RvIG91dDsKPiArICAgIG1vdW50X2xpc3QucmVtb3ZlKG1wKTsKPiArCj4gKyNpZmRlZiBIQVZF
X0JVRkZFUlMKPiArICAgIC8qIEZsdXNoIGFsbCBidWZmZXJzICovCj4gKyAgICBiaW52YWwobXAt
Pm1fZGV2KTsKPiArI2VuZGlmCj4gKwo+ICsgICAgaWYgKG1wLT5tX2RldikKPiArICAgICAgICBk
ZXZpY2VfY2xvc2UobXAtPm1fZGV2KTsKPiArICAgIGRlbGV0ZSBtcDsKPiArIG91dDoKPiArICAg
IHJldHVybiBlcnJvcjsKPiArfQo+ICsKPiAraW50Cj4gK3N5c191bW91bnQoY29uc3QgY2hhciAq
cGF0aCkKPiArewo+ICsgICAgcmV0dXJuIHN5c191bW91bnQyKHBhdGgsIDApOwo+ICt9Cj4gKwo+
ICtpbnQKPiArc3lzX3Bpdm90X3Jvb3QoY29uc3QgY2hhciAqbmV3X3Jvb3QsIGNvbnN0IGNoYXIg
KnB1dF9vbGQpCj4gK3sKPiArICAgIHN0cnVjdCBtb3VudCAqbmV3bXAgPSBudWxscHRyLCAqb2xk
bXAgPSBudWxscHRyOwo+ICsgICAgaW50IGVycm9yOwo+ICsKPiArICAgIFdJVEhfTE9DSyhtb3Vu
dF9sb2NrKSB7Cj4gKyAgICAgICAgZm9yIChhdXRvJiYgbXAgOiBtb3VudF9saXN0KSB7Cj4gKyAg
ICAgICAgICAgIGlmICghc3RyY21wKG1wLT5tX3BhdGgsIG5ld19yb290KSkgewo+ICsgICAgICAg
ICAgICAgICAgbmV3bXAgPSBtcDsKPiArICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICBpZiAo
IXN0cmNtcChtcC0+bV9wYXRoLCBwdXRfb2xkKSkgewo+ICsgICAgICAgICAgICAgICAgb2xkbXAg
PSBtcDsKPiArICAgICAgICAgICAgfQo+ICsgICAgICAgIH0KPiArICAgICAgICBpZiAoIW5ld21w
IHx8ICFvbGRtcCB8fCBuZXdtcCA9PSBvbGRtcCkgewo+ICsgICAgICAgICAgICByZXR1cm4gRUlO
VkFMOwo+ICsgICAgICAgIH0KPiArICAgICAgICBmb3IgKGF1dG8mJiBtcCA6IG1vdW50X2xpc3Qp
IHsKPiArICAgICAgICAgICAgaWYgKG1wID09IG5ld21wIHx8IG1wID09IG9sZG1wKSB7Cj4gKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKPiArICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICBp
ZiAoIXN0cm5jbXAobXAtPm1fcGF0aCwgcHV0X29sZCwgc3RybGVuKHB1dF9vbGQpKSkgewo+ICsg
ICAgICAgICAgICAgICAgcmV0dXJuIEVCVVNZOwo+ICsgICAgICAgICAgICB9Cj4gKyAgICAgICAg
fQo+ICsgICAgICAgIGlmICgoZXJyb3IgPSBWRlNfVU5NT1VOVChvbGRtcCwgMCkpICE9IDApIHsK
PiArICAgICAgICAgICAgcmV0dXJuIGVycm9yOwo+ICsgICAgICAgIH0KPiArICAgICAgICBtb3Vu
dF9saXN0LnJlbW92ZShvbGRtcCk7Cj4gKwo+ICsgICAgICAgIG5ld21wLT5tX3Jvb3QtPmRfdm5v
ZGUtPnZfbW91bnQgPSBuZXdtcDsKPiArCj4gKyAgICAgICAgaWYgKG5ld21wLT5tX2NvdmVyZWQp
IHsKPiArICAgICAgICAgICAgZHJlbGUobmV3bXAtPm1fY292ZXJlZCk7Cj4gKyAgICAgICAgfQo+
ICsgICAgICAgIG5ld21wLT5tX2NvdmVyZWQgPSBudWxscHRyOwo+ICsKPiArICAgICAgICBpZiAo
bmV3bXAtPm1fcm9vdC0+ZF9wYXJlbnQpIHsKPiArICAgICAgICAgICAgZHJlbGUobmV3bXAtPm1f
cm9vdC0+ZF9wYXJlbnQpOwo+ICsgICAgICAgIH0KPiArICAgICAgICBuZXdtcC0+bV9yb290LT5k
X3BhcmVudCA9IG51bGxwdHI7Cj4gKwo+ICsgICAgICAgIHN0cmxjcHkobmV3bXAtPm1fcGF0aCwg
Ii8iLCBzaXplb2YobmV3bXAtPm1fcGF0aCkpOwo+ICsgICAgfQo+ICsgICAgcmV0dXJuIDA7Cj4g
K30KPiArCj4gK2ludAo+ICtzeXNfc3luYyh2b2lkKQo+ICt7Cj4gKyAgICAvKiBDYWxsIGVhY2gg
bW91bnRlZCBmaWxlIHN5c3RlbS4gKi8KPiArICAgIFdJVEhfTE9DSyhtb3VudF9sb2NrKSB7Cj4g
KyAgICAgICAgZm9yIChhdXRvJiYgbXAgOiBtb3VudF9saXN0KSB7Cj4gKyAgICAgICAgICAgIFZG
U19TWU5DKG1wKTsKPiArICAgICAgICB9Cj4gKyAgICB9Cj4gKyNpZmRlZiBIQVZFX0JVRkZFUlMK
PiArICAgIGJpb19zeW5jKCk7Cj4gKyNlbmRpZgo+ICsgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4g
Ky8qCj4gKyAqIENvbXBhcmUgdHdvIHBhdGggc3RyaW5ncy4gUmV0dXJuIG1hdGNoZWQgbGVuZ3Ro
Lgo+ICsgKiBAcGF0aDogdGFyZ2V0IHBhdGguCj4gKyAqIEByb290OiB2ZnMgcm9vdCBwYXRoIGFz
IG1vdW50IHBvaW50Lgo+ICsgKi8KPiArc3RhdGljIHNpemVfdAo+ICtjb3VudF9tYXRjaChjb25z
dCBjaGFyICpwYXRoLCBjaGFyICptb3VudF9yb290KQo+ICt7Cj4gKyAgICBzaXplX3QgbGVuID0g
MDsKPiArCj4gKyAgICB3aGlsZSAoKnBhdGggJiYgKm1vdW50X3Jvb3QpIHsKPiArICAgICAgICBp
ZiAoKnBhdGggIT0gKm1vdW50X3Jvb3QpCj4gKyAgICAgICAgICAgIGJyZWFrOwo+ICsKPiArICAg
ICAgICBwYXRoKys7Cj4gKyAgICAgICAgbW91bnRfcm9vdCsrOwo+ICsgICAgICAgIGxlbisrOwo+
ICsgICAgfQo+ICsgICAgaWYgKCptb3VudF9yb290ICE9ICdcMCcpCj4gKyAgICAgICAgcmV0dXJu
IDA7Cj4gKwo+ICsgICAgaWYgKGxlbiA9PSAxICYmICoocGF0aCAtIDEpID09ICcvJykKPiArICAg
ICAgICByZXR1cm4gMTsKPiArCj4gKyAgICBpZiAoKnBhdGggPT0gJ1wwJyB8fCAqcGF0aCA9PSAn
LycpCj4gKyAgICAgICAgcmV0dXJuIGxlbjsKPiArICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICsv
Kgo+ICsgKiBHZXQgdGhlIHJvb3QgZGlyZWN0b3J5IGFuZCBtb3VudCBwb2ludCBmb3Igc3BlY2lm
aWVkIHBhdGguCj4gKyAqIEBwYXRoOiBmdWxsIHBhdGguCj4gKyAqIEBtcDogbW91bnQgcG9pbnQg
dG8gcmV0dXJuLgo+ICsgKiBAcm9vdDogcG9pbnRlciB0byByb290IGRpcmVjdG9yeSBpbiBwYXRo
Lgo+ICsgKi8KPiAraW50Cj4gK3Zmc19maW5kcm9vdChjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3Qg
bW91bnQgKiptcCwgY2hhciAqKnJvb3QpCj4gK3sKPiArICAgIHN0cnVjdCBtb3VudCAqbSA9IG51
bGxwdHI7Cj4gKyAgICBzaXplX3QgbGVuLCBtYXhfbGVuID0gMDsKPiArCj4gKyAgICBpZiAoIXBh
dGgpCj4gKyAgICAgICAgcmV0dXJuIC0xOwo+ICsKPiArICAgIC8qIEZpbmQgbW91bnQgcG9pbnQg
ZnJvbSBuZWFyZXN0IHBhdGggKi8KPiArICAgIFNDT1BFX0xPQ0sobW91bnRfbG9jayk7Cj4gKyAg
ICBmb3IgKGF1dG8mJiB0bXAgOiBtb3VudF9saXN0KSB7Cj4gKyAgICAgICAgbGVuID0gY291bnRf
bWF0Y2gocGF0aCwgdG1wLT5tX3BhdGgpOwo+ICsgICAgICAgIGlmIChsZW4gPiBtYXhfbGVuKSB7
Cj4gKyAgICAgICAgICAgIG1heF9sZW4gPSBsZW47Cj4gKyAgICAgICAgICAgIG0gPSB0bXA7Cj4g
KyAgICAgICAgfQo+ICsgICAgfQo+ICsgICAgaWYgKG0gPT0gbnVsbHB0cikKPiArICAgICAgICBy
ZXR1cm4gLTE7Cj4gKyAgICAqcm9vdCA9IChjaGFyICopKHBhdGggKyBtYXhfbGVuKTsKPiArICAg
IGlmICgqKnJvb3QgPT0gJy8nKQo+ICsgICAgICAgICgqcm9vdCkrKzsKPiArICAgICptcCA9IG07
Cj4gKyAgICByZXR1cm4gMDsKPiArfQo+ICsKPiArLyoKPiArICogTWFyayBhIG1vdW50IHBvaW50
IGFzIGJ1c3kuCj4gKyAqLwo+ICt2b2lkCj4gK3Zmc19idXN5KHN0cnVjdCBtb3VudCAqbXApCj4g
K3sKPiArICAgIFNDT1BFX0xPQ0sobW91bnRfbG9jayk7Cj4gKyAgICBtcC0+bV9jb3VudCsrOwo+
ICt9Cj4gKwo+ICsKPiArLyoKPiArICogTWFyayBhIG1vdW50IHBvaW50IGFzIGJ1c3kuCj4gKyAq
Lwo+ICt2b2lkCj4gK3Zmc191bmJ1c3koc3RydWN0IG1vdW50ICptcCkKPiArewo+ICsgICAgU0NP
UEVfTE9DSyhtb3VudF9sb2NrKTsKPiArICAgIG1wLT5tX2NvdW50LS07Cj4gK30KPiArCj4gK2lu
dAo+ICt2ZnNfbnVsbG9wKHZvaWQpCj4gK3sKPiArICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICtp
bnQKPiArdmZzX2VpbnZhbCh2b2lkKQo+ICt7Cj4gKyAgICByZXR1cm4gRUlOVkFMOwo+ICt9Cj4g
Kwo+ICtuYW1lc3BhY2Ugb3N2IHsKPiArCj4gK21vdW50X2Rlc2MgdG9fbW91bnRfZGVzYyhtb3Vu
dCogbSkKPiArewo+ICsgICAgbW91bnRfZGVzYyByZXQ7Cj4gKyAgICByZXQuc3BlY2lhbCA9IG0t
Pm1fc3BlY2lhbDsKPiArICAgIHJldC5wYXRoID0gbS0+bV9wYXRoOwo+ICsgICAgcmV0LnR5cGUg
PSBmc19nZXRmc25hbWUobS0+bV9vcCk7Cj4gKyAgICAvLyBGSVhNRTogcmVjb3JkIG9wdGlvbnMK
PiArICAgIHJldC5vcHRpb25zID0gIiI7Cj4gKyAgICByZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtz
dGQ6OnZlY3Rvcjxtb3VudF9kZXNjPgo+ICtjdXJyZW50X21vdW50cygpCj4gK3sKPiArICAgIFdJ
VEhfTE9DSyhtb3VudF9sb2NrKSB7Cj4gKyAgICAgICAgc3RkOjp2ZWN0b3I8bW91bnRfZGVzYz4g
cmV0Owo+ICsgICAgICAgIGZvciAoYXV0byYmIG1wIDogbW91bnRfbGlzdCkgewo+ICsgICAgICAg
ICAgICByZXQucHVzaF9iYWNrKHRvX21vdW50X2Rlc2MobXApKTsKPiArICAgICAgICB9Cj4gKyAg
ICAgICAgcmV0dXJuIHJldDsKPiArICAgIH0KPiArfQo+ICsKPiArfQo+ICsKPiArI2lmZGVmIERF
QlVHX1ZGUwo+ICt2b2lkCj4gK21vdW50X2R1bXAodm9pZCkKPiArewo+ICsgICAgU0NPUEVfTE9D
Syhtb3VudF9sb2NrKTsKPiArCj4gKyAgICBrcHJpbnRmKCJtb3VudF9kdW1wXG4iKTsKPiArICAg
IGtwcmludGYoImRldiAgICAgIGNvdW50IHJvb3RcbiIpOwo+ICsgICAga3ByaW50ZigiLS0tLS0t
LS0gLS0tLS0gLS0tLS0tLS1cbiIpOwo+ICsKPiArICAgIGZvciAoYXV0byYmIG1wIDogbW91bnRf
bGlzdCkgewo+ICsgICAgICAgIGtwcmludGYoIiU4eCAlNWQgJXNcbiIsIG1wLT5tX2RldiwgbXAt
Pm1fY291bnQsIG1wLT5tX3BhdGgpOwo+ICsgICAgfQo+ICt9Cj4gKyNlbmRpZgo+IGRpZmYgLS1n
aXQgYS9saWIvdmZzY29yZS9zdWJyX3Vpby5jIGIvbGliL3Zmc2NvcmUvc3Vicl91aW8uYwo+IG5l
dyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAuLmJmMTM4YjhlCj4gLS0tIC9kZXYv
bnVsbAo+ICsrKyBiL2xpYi92ZnNjb3JlL3N1YnJfdWlvLmMKPiBAQCAtMCwwICsxLDczIEBACj4g
Ky8qLQo+ICsgKiBDb3B5cmlnaHQgKGMpIDE5ODIsIDE5ODYsIDE5OTEsIDE5OTMKPiArICoJVGhl
IFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCj4gKyAqIChjKSBVTklYIFN5c3RlbSBMYWJvcmF0b3JpZXMsIEluYy4KPiArICogQWxs
IG9yIHNvbWUgcG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBkZXJpdmVkIGZyb20gbWF0ZXJpYWwg
bGljZW5zZWQKPiArICogdG8gdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYSBieSBBbWVyaWNh
biBUZWxlcGhvbmUgYW5kIFRlbGVncmFwaAo+ICsgKiBDby4gb3IgVW5peCBTeXN0ZW0gTGFib3Jh
dG9yaWVzLCBJbmMuIGFuZCBhcmUgcmVwcm9kdWNlZCBoZXJlaW4gd2l0aAo+ICsgKiB0aGUgcGVy
bWlzc2lvbiBvZiBVTklYIFN5c3RlbSBMYWJvcmF0b3JpZXMsIEluYy4KPiArICoKPiArICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Cj4gKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwo+ICsgKiBhcmUgbWV0Ogo+ICsgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCj4gKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKPiArICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KPiArICogNC4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgVW5pdmVyc2l0eSBu
b3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKPiArICogICAgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCj4g
KyAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgo+ICsgKgo+
ICsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBSRUdFTlRTIEFORCBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORAo+ICsgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKPiArICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UKPiArICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgUkVHRU5U
UyBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCj4gKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCj4gKyAq
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTCj4gKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQo+ICsgKiBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VAo+ICsgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCj4gKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKPiArICogU1VDSCBE
QU1BR0UuCj4gKyAqCj4gKyAqCUAoIylrZXJuX3N1YnIuYwk4LjMgKEJlcmtlbGV5KSAxLzIxLzk0
Cj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPGFzc2VydC5oPgo+ICsjaW5jbHVkZSA8ZXJybm8uaD4K
PiArI2luY2x1ZGUgPHN0ZGxpYi5oPgo+ICsjaW5jbHVkZSA8c3RyaW5nLmg+Cj4gKyNpbmNsdWRl
IDxvc3YvdWlvLmg+Cj4gKwo+ICtpbnQKPiArdWlvbW92ZSh2b2lkICpjcCwgaW50IG4sIHN0cnVj
dCB1aW8gKnVpbykKPiArewo+ICsJYXNzZXJ0KHVpby0+dWlvX3J3ID09IFVJT19SRUFEIHx8IHVp
by0+dWlvX3J3ID09IFVJT19XUklURSk7Cj4gKwo+ICsJd2hpbGUgKG4gPiAwICYmIHVpby0+dWlv
X3Jlc2lkKSB7Cj4gKwkJc3RydWN0IGlvdmVjICppb3YgPSB1aW8tPnVpb19pb3Y7Cj4gKwkJaW50
IGNudCA9IGlvdi0+aW92X2xlbjsKPiArCQlpZiAoY250ID09IDApIHsKPiArCQkJdWlvLT51aW9f
aW92Kys7Cj4gKwkJCXVpby0+dWlvX2lvdmNudC0tOwo+ICsJCQljb250aW51ZTsKPiArCQl9Cj4g
KwkJaWYgKGNudCA+IG4pCj4gKwkJCWNudCA9IG47Cj4gKwo+ICsJCWlmICh1aW8tPnVpb19ydyA9
PSBVSU9fUkVBRCkKPiArCQkJbWVtY3B5KGlvdi0+aW92X2Jhc2UsIGNwLCBjbnQpOwo+ICsJCWVs
c2UKPiArCQkJbWVtY3B5KGNwLCBpb3YtPmlvdl9iYXNlLCBjbnQpOwo+ICsKPiArCQlpb3YtPmlv
dl9iYXNlID0gKGNoYXIgKilpb3YtPmlvdl9iYXNlICsgY250Owo+ICsJCWlvdi0+aW92X2xlbiAt
PSBjbnQ7Cj4gKwkJdWlvLT51aW9fcmVzaWQgLT0gY250Owo+ICsJCXVpby0+dWlvX29mZnNldCAr
PSBjbnQ7Cj4gKwkJY3AgPSAoY2hhciAqKWNwICsgY250Owo+ICsJCW4gLT0gY250Owo+ICsJfQo+
ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3N5c2NhbGxz
LmMgYi9saWIvdmZzY29yZS9zeXNjYWxscy5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRl
eCAwMDAwMDAwMC4uNDg3ZDU3MjkKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvbGliL3Zmc2NvcmUv
c3lzY2FsbHMuYwo+IEBAIC0wLDAgKzEsMTQ4NiBAQAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQ2xvdWRpdXMgU3lzdGVtcywgTHRkLgo+ICsgKgo+ICsgKiBUaGlzIHdvcmsgaXMgb3Bl
biBzb3VyY2Ugc29mdHdhcmUsIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUKPiArICog
QlNEIGxpY2Vuc2UgYXMgZGVzY3JpYmVkIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHRvcC1s
ZXZlbCBkaXJlY3RvcnkuCj4gKyAqLwo+ICsKPiArLyoKPiArICogQ29weXJpZ2h0IChjKSAyMDA1
LTIwMDcsIEtvaHN1a2UgT2h0YW5pCj4gKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4gKyAqCj4g
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAo+ICsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKPiArICogYXJlIG1ldDoKPiArICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgo+ICsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCj4g
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCj4gKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGF1dGhv
ciBub3IgdGhlIG5hbWVzIG9mIGFueSBjby1jb250cmlidXRvcnMKPiArICogICAgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3
YXJlCj4gKyAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgo+
ICsgKgo+ICsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECj4gKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQo+ICsgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRQo+ICsgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBB
VVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQo+ICsgKiBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAo+
ICsgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUwo+ICsgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKPiArICogSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QKPiArICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQo+ICsgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCj4gKyAqIFNV
Q0ggREFNQUdFLgo+ICsgKi8KPiArCj4gKy8qCj4gKyAqIHZmc19zeXNjYWxscy5jIC0gZXZlcnl0
aGluZyBpbiB0aGlzIGZpbGUgaXMgYSByb3V0aW5lIGltcGxlbWVudGluZwo+ICsgKiAgICAgICAg
ICAgICAgICAgIGEgVkZTIHN5c3RlbSBjYWxsLgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxzeXMv
c3RhdC5oPgo+ICsjaW5jbHVkZSA8ZGlyZW50Lmg+Cj4gKwo+ICsjaW5jbHVkZSA8bGltaXRzLmg+
Cj4gKyNpbmNsdWRlIDx1bmlzdGQuaD4KPiArI2luY2x1ZGUgPHN0ZGxpYi5oPgo+ICsjaW5jbHVk
ZSA8c3RyaW5nLmg+Cj4gKyNpbmNsdWRlIDxzdGRpby5oPgo+ICsjaW5jbHVkZSA8ZXJybm8uaD4K
PiArI2luY2x1ZGUgPGZjbnRsLmg+Cj4gKwo+ICsjaW5jbHVkZSA8b3N2L3ByZXguaD4KPiArI2lu
Y2x1ZGUgPG9zdi92bm9kZS5oPgo+ICsjaW5jbHVkZSA8b3N2L3Zmc19maWxlLmhoPgo+ICsjaW5j
bHVkZSAidmZzLmgiCj4gKyNpbmNsdWRlIDxmcy9mcy5oaD4KPiArCj4gK2V4dGVybiBzdHJ1Y3Qg
dGFzayAqbWFpbl90YXNrOwo+ICsKPiArc3RhdGljIGludAo+ICtvcGVuX25vX2ZvbGxvd19jaGso
Y2hhciAqcGF0aCkKPiArewo+ICsJaW50ICAgICAgICAgICBlcnJvcjsKPiArCXN0cnVjdCBkZW50
cnkgKmRkcDsKPiArCWNoYXIgICAgICAgICAgKm5hbWU7Cj4gKwlzdHJ1Y3QgZGVudHJ5ICpkcDsK
PiArCXN0cnVjdCB2bm9kZSAgKnZwOwo+ICsKPiArCWRkcCA9IG51bGxwdHI7Cj4gKwlkcCAgPSBu
dWxscHRyOwo+ICsJdnAgID0gbnVsbHB0cjsKPiArCj4gKwllcnJvciA9IGxvb2t1cChwYXRoLCAm
ZGRwLCAmbmFtZSk7Cj4gKwlpZiAoZXJyb3IpIHsKPiArCQlyZXR1cm4gKGVycm9yKTsKPiArCX0K
PiArCj4gKwllcnJvciA9IG5hbWVpX2xhc3Rfbm9mb2xsb3cocGF0aCwgZGRwLCAmZHApOwo+ICsJ
aWYgKGVycm9yKSB7Cj4gKwkJZ290byBvdXQ7Cj4gKwl9Cj4gKwo+ICsJdnAgPSBkcC0+ZF92bm9k
ZTsKPiArCXZuX2xvY2sodnApOwo+ICsJaWYgKHZwLT52X3R5cGUgPT0gVkxOSykgewo+ICsJCWVy
cm9yID0gRUxPT1A7Cj4gKwkJZ290byBvdXQ7Cj4gKwl9Cj4gKwo+ICsJZXJyb3IgPSAwOwo+ICtv
dXQ6Cj4gKwlpZiAodnAgIT0gbnVsbHB0cikgewo+ICsJCXZuX3VubG9jayh2cCk7Cj4gKwl9Cj4g
Kwo+ICsJaWYgKGRwICE9IG51bGxwdHIpIHsKPiArCQlkcmVsZShkcCk7Cj4gKwl9Cj4gKwo+ICsJ
aWYgKGRkcCAhPSBudWxscHRyKSB7Cj4gKwkJZHJlbGUoZGRwKTsKPiArCX0KPiArCj4gKwlyZXR1
cm4gKGVycm9yKTsKPiArfQo+ICsKPiAraW50Cj4gK3N5c19vcGVuKGNoYXIgKnBhdGgsIGludCBm
bGFncywgbW9kZV90IG1vZGUsIHN0cnVjdCBmaWxlICoqZnBwKQo+ICt7Cj4gKwlmaWxlICpmcDsK
PiArCXN0cnVjdCBkZW50cnkgKmRwLCAqZGRwOwo+ICsJc3RydWN0IHZub2RlICp2cDsKPiArCWNo
YXIgKmZpbGVuYW1lOwo+ICsJaW50IGVycm9yOwo+ICsKPiArCURQUklOVEYoVkZTREJfU1lTQ0FM
TCwgKCJzeXNfb3BlbjogcGF0aD0lcyBmbGFncz0leCBtb2RlPSV4XG4iLAo+ICsJCQkJcGF0aCwg
ZmxhZ3MsIG1vZGUpKTsKPiArCj4gKwlmbGFncyA9IGZmbGFncyhmbGFncyk7Cj4gKwlpZiAoZmxh
Z3MgJiBPX0NSRUFUKSB7Cj4gKwkJZXJyb3IgPSBuYW1laShwYXRoLCAmZHApOwo+ICsJCWlmIChl
cnJvciA9PSBFTk9FTlQpIHsKPiArCQkJLyogQ3JlYXRlIG5ldyBmaWxlLiAqLwo+ICsJCQlpZiAo
KGVycm9yID0gbG9va3VwKHBhdGgsICZkZHAsICZmaWxlbmFtZSkpICE9IDApCj4gKwkJCQlyZXR1
cm4gZXJyb3I7Cj4gKwo+ICsJCQl2bl9sb2NrKGRkcC0+ZF92bm9kZSk7Cj4gKwkJCWlmICgoZXJy
b3IgPSB2bl9hY2Nlc3MoZGRwLT5kX3Zub2RlLCBWV1JJVEUpKSAhPSAwKSB7Cj4gKwkJCQl2bl91
bmxvY2soZGRwLT5kX3Zub2RlKTsKPiArCQkJCWRyZWxlKGRkcCk7Cj4gKwkJCQlyZXR1cm4gZXJy
b3I7Cj4gKwkJCX0KPiArCQkJbW9kZSAmPSB+U19JRk1UOwo+ICsJCQltb2RlIHw9IFNfSUZSRUc7
Cj4gKwkJCWVycm9yID0gVk9QX0NSRUFURShkZHAtPmRfdm5vZGUsIGZpbGVuYW1lLCBtb2RlKTsK
PiArCQkJdm5fdW5sb2NrKGRkcC0+ZF92bm9kZSk7Cj4gKwkJCWRyZWxlKGRkcCk7Cj4gKwo+ICsJ
CQlpZiAoZXJyb3IpCj4gKwkJCQlyZXR1cm4gZXJyb3I7Cj4gKwkJCWlmICgoZXJyb3IgPSBuYW1l
aShwYXRoLCAmZHApKSAhPSAwKQo+ICsJCQkJcmV0dXJuIGVycm9yOwo+ICsKPiArCQkJdnAgPSBk
cC0+ZF92bm9kZTsKPiArCQkJZmxhZ3MgJj0gfk9fVFJVTkM7Cj4gKwkJfSBlbHNlIGlmIChlcnJv
cikgewo+ICsJCQlyZXR1cm4gZXJyb3I7Cj4gKwkJfSBlbHNlIHsKPiArCQkJLyogRmlsZSBhbHJl
YWR5IGV4aXRzICovCj4gKwkJCWlmIChmbGFncyAmIE9fRVhDTCkgewo+ICsJCQkJZXJyb3IgPSBF
RVhJU1Q7Cj4gKwkJCQlnb3RvIG91dF9kcmVsZTsKPiArCQkJfQo+ICsJCX0KPiArCj4gKwkJdnAg
PSBkcC0+ZF92bm9kZTsKPiArCQlmbGFncyAmPSB+T19DUkVBVDsKPiArCX0gZWxzZSB7Cj4gKwkJ
LyogT3BlbiAqLwo+ICsJCWlmIChmbGFncyAmIE9fTk9GT0xMT1cpIHsKPiArCQkJZXJyb3IgPSBv
cGVuX25vX2ZvbGxvd19jaGsocGF0aCk7Cj4gKwkJCWlmIChlcnJvciAhPSAwKSB7Cj4gKwkJCQly
ZXR1cm4gKGVycm9yKTsKPiArCQkJfQo+ICsJCX0KPiArCQllcnJvciA9IG5hbWVpKHBhdGgsICZk
cCk7Cj4gKwkJaWYgKGVycm9yKQo+ICsJCQlyZXR1cm4gZXJyb3I7Cj4gKwo+ICsJCXZwID0gZHAt
PmRfdm5vZGU7Cj4gKwo+ICsJCWlmIChmbGFncyAmIEZXUklURSB8fCBmbGFncyAmIE9fVFJVTkMp
IHsKPiArCQkJZXJyb3IgPSB2bl9hY2Nlc3ModnAsIFZXUklURSk7Cj4gKwkJCWlmIChlcnJvcikK
PiArCQkJCWdvdG8gb3V0X2RyZWxlOwo+ICsKPiArCQkJZXJyb3IgPSBFSVNESVI7Cj4gKwkJCWlm
ICh2cC0+dl90eXBlID09IFZESVIpCj4gKwkJCQlnb3RvIG91dF9kcmVsZTsKPiArCQl9Cj4gKwkJ
aWYgKGZsYWdzICYgT19ESVJFQ1RPUlkpIHsKPiArCQkgICAgaWYgKHZwLT52X3R5cGUgIT0gVkRJ
Uikgewo+ICsJCSAgICAgICAgZXJyb3IgPSBFTk9URElSOwo+ICsJCSAgICAgICAgZ290byBvdXRf
ZHJlbGU7Cj4gKwkJICAgIH0KPiArCQl9Cj4gKwl9Cj4gKwo+ICsJdm5fbG9jayh2cCk7Cj4gKwkv
KiBQcm9jZXNzIHRydW5jYXRlIHJlcXVlc3QgKi8KPiArCWlmIChmbGFncyAmIE9fVFJVTkMpIHsK
PiArCQllcnJvciA9IEVJTlZBTDsKPiArCQlpZiAoIShmbGFncyAmIEZXUklURSkgfHwgdnAtPnZf
dHlwZSA9PSBWRElSKQo+ICsJCQlnb3RvIG91dF92bl91bmxvY2s7Cj4gKwo+ICsJCWVycm9yID0g
Vk9QX1RSVU5DQVRFKHZwLCAwKTsKPiArCQlpZiAoZXJyb3IpCj4gKwkJCWdvdG8gb3V0X3ZuX3Vu
bG9jazsKPiArCX0KPiArCj4gKwl0cnkgewo+ICsJICAgIGZpbGVyZWYgZiA9IG1ha2VfZmlsZTx2
ZnNfZmlsZT4oZmxhZ3MpOwo+ICsJICAgIGZwID0gZi5nZXQoKTsKPiArCSAgICBmaG9sZChmcCk7
Cj4gKwl9IGNhdGNoIChpbnQgZXJyKSB7Cj4gKwkgICAgZXJyb3IgPSBlcnI7Cj4gKwkgICAgZ290
byBvdXRfdm5fdW5sb2NrOwo+ICsJfQo+ICsJLy8gY2hhbmdlIHRvIHN0ZDo6bW92ZSBvbmNlIGRw
IGlzIGEgZGVudHJ5X3JlZgo+ICsJZnAtPmZfZGVudHJ5ID0gZGVudHJ5X3JlZihkcCwgZmFsc2Up
Owo+ICsJZHAgPSBudWxscHRyOwo+ICsKPiArCWVycm9yID0gVk9QX09QRU4odnAsIGZwKTsKPiAr
CWlmIChlcnJvcikgewo+ICsJCXZuX3VubG9jayh2cCk7Cj4gKwkJLy8gTm90ZSBkaXJlY3QgZGVs
ZXRlIG9mIGZwIGluc3RlYWQgb2YgZmRyb3AoZnApLiBmcCB3YXMgbmV2ZXIKPiArCQkvLyByZXR1
cm5lZCBzbyBjYW5ub3QgYmUgaW4gdXNlLCBhbmQgYmVjYXVzZSBpdCB3YXNuJ3Qgb3BlbmVkCj4g
KwkJLy8gaXQgY2Fubm90IGJlIGNsb3NlKCllZC4KPiArCQlkZWxldGUgZnA7Cj4gKwkJcmV0dXJu
IGVycm9yOwo+ICsJfQo+ICsJdm5fdW5sb2NrKHZwKTsKPiArCj4gKwkqZnBwID0gZnA7Cj4gKwly
ZXR1cm4gMDsKPiArCj4gK291dF92bl91bmxvY2s6Cj4gKwl2bl91bmxvY2sodnApOwo+ICtvdXRf
ZHJlbGU6Cj4gKwlpZiAoZHApIHsKPiArCQlkcmVsZShkcCk7Cj4gKwl9Cj4gKwlyZXR1cm4gZXJy
b3I7Cj4gK30KPiArCj4gK2ludAo+ICtzeXNfY2xvc2Uoc3RydWN0IGZpbGUgKmZwKQo+ICt7Cj4g
Kwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK2ludAo+ICtzeXNfcmVhZChzdHJ1Y3QgZmlsZSAq
ZnAsIGNvbnN0IHN0cnVjdCBpb3ZlYyAqaW92LCBzaXplX3QgbmlvdiwKPiArCQlvZmZfdCBvZmZz
ZXQsIHNpemVfdCAqY291bnQpCj4gK3sKPiArICAgIGlmICgoZnAtPmZfZmxhZ3MgJiBGUkVBRCkg
PT0gMCkKPiArICAgICAgICByZXR1cm4gRUJBREY7Cj4gKwo+ICsgICAgc2l6ZV90IGJ5dGVzID0g
MDsKPiArICAgIGF1dG8gaW92cCA9IGlvdjsKPiArICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBuaW92OyBpKyspIHsKPiArICAgICAgICBpZiAoaW92cC0+aW92X2xlbiA+IElPU0laRV9NQVgg
LSBieXRlcykgewo+ICsgICAgICAgICAgICByZXR1cm4gRUlOVkFMOwo+ICsgICAgICAgIH0KPiAr
ICAgICAgICBieXRlcyArPSBpb3ZwLT5pb3ZfbGVuOwo+ICsgICAgICAgIGlvdnArKzsKPiArICAg
IH0KPiArCj4gKyAgICBpZiAoYnl0ZXMgPT0gMCkgewo+ICsgICAgICAgICpjb3VudCA9IDA7Cj4g
KyAgICAgICAgcmV0dXJuIDA7Cj4gKyAgICB9Cj4gKwo+ICsgICAgc3RydWN0IHVpbyB1aW87Cj4g
KyAgICAvLyBVbmZvcnR1bmF0ZWx5LCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvZiBmcC0+
cmVhZCB6ZXJvcyB0aGUKPiArICAgIC8vIGlvdl9sZW4gZmllbGRzIHdoZW4gaXQgcmVhZHMgZnJv
bSBkaXNrLCBzbyB3ZSBoYXZlIHRvIGNvcHkgaW92Lgo+ICsgICAgc3RkOjp2ZWN0b3I8aW92ZWM+
IGNvcHlfaW92KGlvdiwgaW92ICsgbmlvdik7Cj4gKyAgICB1aW8udWlvX2lvdiA9IGNvcHlfaW92
LmRhdGEoKTsKPiArICAgIHVpby51aW9faW92Y250ID0gbmlvdjsKPiArICAgIHVpby51aW9fb2Zm
c2V0ID0gb2Zmc2V0Owo+ICsgICAgdWlvLnVpb19yZXNpZCA9IGJ5dGVzOwo+ICsgICAgdWlvLnVp
b19ydyA9IFVJT19SRUFEOwo+ICsgICAgYXV0byBlcnJvciA9IGZwLT5yZWFkKCZ1aW8sIChvZmZz
ZXQgPT0gLTEpID8gMCA6IEZPRl9PRkZTRVQpOwo+ICsgICAgKmNvdW50ID0gYnl0ZXMgLSB1aW8u
dWlvX3Jlc2lkOwo+ICsgICAgcmV0dXJuIGVycm9yOwo+ICt9Cj4gKwo+ICtpbnQKPiArc3lzX3dy
aXRlKHN0cnVjdCBmaWxlICpmcCwgY29uc3Qgc3RydWN0IGlvdmVjICppb3YsIHNpemVfdCBuaW92
LAo+ICsJCW9mZl90IG9mZnNldCwgc2l6ZV90ICpjb3VudCkKPiArewo+ICsgICAgaWYgKChmcC0+
Zl9mbGFncyAmIEZXUklURSkgPT0gMCkKPiArICAgICAgICByZXR1cm4gRUJBREY7Cj4gKwo+ICsg
ICAgc2l6ZV90IGJ5dGVzID0gMDsKPiArICAgIGF1dG8gaW92cCA9IGlvdjsKPiArICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBuaW92OyBpKyspIHsKPiArICAgICAgICBpZiAoaW92cC0+aW92
X2xlbiA+IElPU0laRV9NQVggLSBieXRlcykgewo+ICsgICAgICAgICAgICByZXR1cm4gRUlOVkFM
Owo+ICsgICAgICAgIH0KPiArICAgICAgICBieXRlcyArPSBpb3ZwLT5pb3ZfbGVuOwo+ICsgICAg
ICAgIGlvdnArKzsKPiArICAgIH0KPiArCj4gKyAgICBpZiAoYnl0ZXMgPT0gMCkgewo+ICsgICAg
ICAgICpjb3VudCA9IDA7Cj4gKyAgICAgICAgcmV0dXJuIDA7Cj4gKyAgICB9Cj4gKwo+ICsgICAg
c3RydWN0IHVpbyB1aW87Cj4gKyAgICAvLyBVbmZvcnR1bmF0ZWx5LCB0aGUgY3VycmVudCBpbXBs
ZW1lbnRhdGlvbiBvZiBmcC0+d3JpdGUgemVyb3MgdGhlCj4gKyAgICAvLyBpb3ZfbGVuIGZpZWxk
cyB3aGVuIGl0IHdyaXRlcyB0byBkaXNrLCBzbyB3ZSBoYXZlIHRvIGNvcHkgaW92Lgo+ICsgICAg
c3RkOjp2ZWN0b3I8aW92ZWM+IGNvcHlfaW92KGlvdiwgaW92ICsgbmlvdik7Cj4gKyAgICB1aW8u
dWlvX2lvdiA9IGNvcHlfaW92LmRhdGEoKTsKPiArICAgIHVpby51aW9faW92Y250ID0gbmlvdjsK
PiArICAgIHVpby51aW9fb2Zmc2V0ID0gb2Zmc2V0Owo+ICsgICAgdWlvLnVpb19yZXNpZCA9IGJ5
dGVzOwo+ICsgICAgdWlvLnVpb19ydyA9IFVJT19XUklURTsKPiArICAgIGF1dG8gZXJyb3IgPSBm
cC0+d3JpdGUoJnVpbywgKG9mZnNldCA9PSAtMSkgPyAwIDogRk9GX09GRlNFVCk7Cj4gKyAgICAq
Y291bnQgPSBieXRlcyAtIHVpby51aW9fcmVzaWQ7Cj4gKyAgICByZXR1cm4gZXJyb3I7Cj4gK30K
PiArCj4gK2ludAo+ICtzeXNfbHNlZWsoc3RydWN0IGZpbGUgKmZwLCBvZmZfdCBvZmYsIGludCB0
eXBlLCBvZmZfdCAqb3JpZ2luKQo+ICt7Cj4gKwlzdHJ1Y3Qgdm5vZGUgKnZwOwo+ICsKPiArCURQ
UklOVEYoVkZTREJfU1lTQ0FMTCwgKCJzeXNfc2VlazogZnA9JXggb2ZmPSVkIHR5cGU9JWRcbiIs
Cj4gKwkJCQkodV9sb25nKWZwLCAodV9pbnQpb2ZmLCB0eXBlKSk7Cj4gKwo+ICsJaWYgKCFmcC0+
Zl9kZW50cnkpIHsKPiArCSAgICAvLyBMaW51eCBkb2Vzbid0IGltcGxlbWVudCBsc2VlaygpIG9u
IHBpcGVzLCBzb2NrZXRzLCBvciB0dHlzLgo+ICsJICAgIC8vIEluIE9TViwgd2Ugb25seSBpbXBs
ZW1lbnQgbHNlZWsoKSBvbiByZWd1bGFyIGZpbGVzLCBiYWNrZWQgYnkgdm5vZGUKPiArCSAgICBy
ZXR1cm4gRVNQSVBFOwo+ICsJfQo+ICsKPiArCXZwID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOwo+
ICsJaW50IGVycm9yID0gRUlOVkFMOwo+ICsJdm5fbG9jayh2cCk7Cj4gKwlzd2l0Y2ggKHR5cGUp
IHsKPiArCWNhc2UgU0VFS19DVVI6Cj4gKwkJb2ZmID0gZnAtPmZfb2Zmc2V0ICsgb2ZmOwo+ICsJ
CWJyZWFrOwo+ICsJY2FzZSBTRUVLX0VORDoKPiArCQlvZmYgPSB2cC0+dl9zaXplICsgb2ZmOwo+
ICsJCWJyZWFrOwo+ICsJfQo+ICsJaWYgKG9mZiA+PSAwKSB7Cj4gKwkJZXJyb3IgPSBWT1BfU0VF
Syh2cCwgZnAsIGZwLT5mX29mZnNldCwgb2ZmKTsKPiArCQlpZiAoIWVycm9yKSB7Cj4gKwkJCSpv
cmlnaW4gICAgICA9IG9mZjsKPiArCQkJZnAtPmZfb2Zmc2V0ID0gb2ZmOwo+ICsJCX0KPiArCX0K
PiArCXZuX3VubG9jayh2cCk7Cj4gKwlyZXR1cm4gZXJyb3I7Cj4gK30KPiArCj4gK2ludAo+ICtz
eXNfaW9jdGwoc3RydWN0IGZpbGUgKmZwLCB1X2xvbmcgcmVxdWVzdCwgdm9pZCAqYnVmKQo+ICt7
Cj4gKwlpbnQgZXJyb3I7Cj4gKwo+ICsJRFBSSU5URihWRlNEQl9TWVNDQUxMLCAoInN5c19pb2N0
bDogZnA9JXggcmVxdWVzdD0leFxuIiwgZnAsIHJlcXVlc3QpKTsKPiArCj4gKwlpZiAoKGZwLT5m
X2ZsYWdzICYgKEZSRUFEIHwgRldSSVRFKSkgPT0gMCkKPiArCQlyZXR1cm4gRUJBREY7Cj4gKwo+
ICsJZXJyb3IgPSBmcC0+aW9jdGwocmVxdWVzdCwgYnVmKTsKPiArCj4gKwlEUFJJTlRGKFZGU0RC
X1NZU0NBTEwsICgic3lzX2lvY3RsOiBjb21wIGVycm9yPSVkXG4iLCBlcnJvcikpOwo+ICsJcmV0
dXJuIGVycm9yOwo+ICt9Cj4gKwo+ICtpbnQKPiArc3lzX2ZzeW5jKHN0cnVjdCBmaWxlICpmcCkK
PiArewo+ICsJc3RydWN0IHZub2RlICp2cDsKPiArCWludCBlcnJvcjsKPiArCj4gKwlEUFJJTlRG
KFZGU0RCX1NZU0NBTEwsICgic3lzX2ZzeW5jOiBmcD0leFxuIiwgZnApKTsKPiArCj4gKwlpZiAo
IWZwLT5mX2RlbnRyeSkKPiArCQlyZXR1cm4gRUlOVkFMOwo+ICsKPiArCXZwID0gZnAtPmZfZGVu
dHJ5LT5kX3Zub2RlOwo+ICsJdm5fbG9jayh2cCk7Cj4gKwllcnJvciA9IFZPUF9GU1lOQyh2cCwg
ZnApOwo+ICsJdm5fdW5sb2NrKHZwKTsKPiArCXJldHVybiBlcnJvcjsKPiArfQo+ICsKPiAraW50
Cj4gK3N5c19mc3RhdChzdHJ1Y3QgZmlsZSAqZnAsIHN0cnVjdCBzdGF0ICpzdCkKPiArewo+ICsJ
aW50IGVycm9yID0gMDsKPiArCj4gKwlEUFJJTlRGKFZGU0RCX1NZU0NBTEwsICgic3lzX2ZzdGF0
OiBmcD0leFxuIiwgZnApKTsKPiArCj4gKwllcnJvciA9IGZwLT5zdGF0KHN0KTsKPiArCj4gKwly
ZXR1cm4gZXJyb3I7Cj4gK30KPiArCj4gKy8qCj4gKyAqIFJldHVybiAwIGlmIGRpcmVjdG9yeSBp
cyBlbXB0eQo+ICsgKi8KPiArc3RhdGljIGludAo+ICtjaGVja19kaXJfZW1wdHkoY2hhciAqcGF0
aCkKPiArewo+ICsJaW50IGVycm9yOwo+ICsJc3RydWN0IGZpbGUgKmZwOwo+ICsJc3RydWN0IGRp
cmVudCBkaXI7Cj4gKwo+ICsJRFBSSU5URihWRlNEQl9TWVNDQUxMLCAoImNoZWNrX2Rpcl9lbXB0
eVxuIikpOwo+ICsKPiArCWVycm9yID0gc3lzX29wZW4ocGF0aCwgT19SRE9OTFksIDAsICZmcCk7
Cj4gKwlpZiAoZXJyb3IpCj4gKwkJZ290byBvdXRfZXJyb3I7Cj4gKwo+ICsJZG8gewo+ICsJCWVy
cm9yID0gc3lzX3JlYWRkaXIoZnAsICZkaXIpOwo+ICsJCWlmIChlcnJvciAhPSAwICYmIGVycm9y
ICE9IEVBQ0NFUykKPiArCQkJYnJlYWs7Cj4gKwl9IHdoaWxlICghc3RyY21wKGRpci5kX25hbWUs
ICIuIikgfHwgIXN0cmNtcChkaXIuZF9uYW1lLCAiLi4iKSk7Cj4gKwo+ICsJaWYgKGVycm9yID09
IEVOT0VOVCkKPiArCQllcnJvciA9IDA7Cj4gKwllbHNlIGlmIChlcnJvciA9PSAwKSB7Cj4gKwkg
ICAgLy8gUG9zaXggc3BlY2lmaWVzIHRvIHJldHVybiBFRVhJU1QgaW4gdGhpcyBjYXNlIChybWRp
ciBvZiBub24tZW1wdHkKPiArCSAgICAvLyBkaXJlY3RvcnksIGJ1dCBMaW51eCBhY3R1YWxseSBy
ZXR1cm5zIEVOT1RFTVBUWSkuCj4gKwkJZXJyb3IgPSBFTk9URU1QVFk7Cj4gKwl9Cj4gKwlmZHJv
cChmcCk7Cj4gK291dF9lcnJvcjoKPiArCXJldHVybiBlcnJvcjsKPiArfQo+ICsKPiAraW50Cj4g
K3N5c19yZWFkZGlyKHN0cnVjdCBmaWxlICpmcCwgc3RydWN0IGRpcmVudCAqZGlyKQo+ICt7Cj4g
KwlzdHJ1Y3Qgdm5vZGUgKmR2cDsKPiArCWludCBlcnJvcjsKPiArCj4gKwlEUFJJTlRGKFZGU0RC
X1NZU0NBTEwsICgic3lzX3JlYWRkaXI6IGZwPSV4XG4iLCBmcCkpOwo+ICsKPiArCWlmICghZnAt
PmZfZGVudHJ5KQo+ICsJCXJldHVybiBFTk9URElSOwo+ICsKPiArCWR2cCA9IGZwLT5mX2RlbnRy
eS0+ZF92bm9kZTsKPiArCXZuX2xvY2soZHZwKTsKPiArCWlmIChkdnAtPnZfdHlwZSAhPSBWRElS
KSB7Cj4gKwkJdm5fdW5sb2NrKGR2cCk7Cj4gKwkJcmV0dXJuIEVOT1RESVI7Cj4gKwl9Cj4gKwll
cnJvciA9IFZPUF9SRUFERElSKGR2cCwgZnAsIGRpcik7Cj4gKwlEUFJJTlRGKFZGU0RCX1NZU0NB
TEwsICgic3lzX3JlYWRkaXI6IGVycm9yPSVkIHBhdGg9JXNcbiIsCj4gKwkJCQllcnJvciwgZGly
LT5kX25hbWUpKTsKPiArCXZuX3VubG9jayhkdnApOwo+ICsJcmV0dXJuIGVycm9yOwo+ICt9Cj4g
Kwo+ICtpbnQKPiArc3lzX3Jld2luZGRpcihzdHJ1Y3QgZmlsZSAqZnApCj4gK3sKPiArCXN0cnVj
dCB2bm9kZSAqZHZwOwo+ICsKPiArCWlmICghZnAtPmZfZGVudHJ5KQo+ICsJCXJldHVybiBFTk9U
RElSOwo+ICsKPiArCWR2cCA9IGZwLT5mX2RlbnRyeS0+ZF92bm9kZTsKPiArCXZuX2xvY2soZHZw
KTsKPiArCWlmIChkdnAtPnZfdHlwZSAhPSBWRElSKSB7Cj4gKwkJdm5fdW5sb2NrKGR2cCk7Cj4g
KwkJcmV0dXJuIEVCQURGOwo+ICsJfQo+ICsJZnAtPmZfb2Zmc2V0ID0gMDsKPiArCXZuX3VubG9j
ayhkdnApOwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK2ludAo+ICtzeXNfc2Vla2RpcihzdHJ1
Y3QgZmlsZSAqZnAsIGxvbmcgbG9jKQo+ICt7Cj4gKwlzdHJ1Y3Qgdm5vZGUgKmR2cDsKPiArCj4g
KwlpZiAoIWZwLT5mX2RlbnRyeSkKPiArCQlyZXR1cm4gRU5PVERJUjsKPiArCj4gKwlkdnAgPSBm
cC0+Zl9kZW50cnktPmRfdm5vZGU7Cj4gKwl2bl9sb2NrKGR2cCk7Cj4gKwlpZiAoZHZwLT52X3R5
cGUgIT0gVkRJUikgewo+ICsJCXZuX3VubG9jayhkdnApOwo+ICsJCXJldHVybiBFQkFERjsKPiAr
CX0KPiArCWZwLT5mX29mZnNldCA9IChvZmZfdClsb2M7Cj4gKwl2bl91bmxvY2soZHZwKTsKPiAr
CXJldHVybiAwOwo+ICt9Cj4gKwo+ICtpbnQKPiArc3lzX3RlbGxkaXIoc3RydWN0IGZpbGUgKmZw
LCBsb25nICpsb2MpCj4gK3sKPiArCXN0cnVjdCB2bm9kZSAqZHZwOwo+ICsKPiArCWlmICghZnAt
PmZfZGVudHJ5KQo+ICsJCXJldHVybiBFTk9URElSOwo+ICsKPiArCWR2cCA9IGZwLT5mX2RlbnRy
eS0+ZF92bm9kZTsKPiArCXZuX2xvY2soZHZwKTsKPiArCWlmIChkdnAtPnZfdHlwZSAhPSBWRElS
KSB7Cj4gKwkJdm5fdW5sb2NrKGR2cCk7Cj4gKwkJcmV0dXJuIEVCQURGOwo+ICsJfQo+ICsJKmxv
YyA9IChsb25nKWZwLT5mX29mZnNldDsKPiArCXZuX3VubG9jayhkdnApOwo+ICsJcmV0dXJuIDA7
Cj4gK30KPiArCj4gK2ludAo+ICtzeXNfbWtkaXIoY2hhciAqcGF0aCwgbW9kZV90IG1vZGUpCj4g
K3sKPiArCWNoYXIgKm5hbWU7Cj4gKwlzdHJ1Y3QgZGVudHJ5ICpkcCwgKmRkcDsKPiArCWludCBl
cnJvcjsKPiArCj4gKwlEUFJJTlRGKFZGU0RCX1NZU0NBTEwsICgic3lzX21rZGlyOiBwYXRoPSVz
IG1vZGU9JWRcbiIsCXBhdGgsIG1vZGUpKTsKPiArCj4gKwllcnJvciA9IG5hbWVpKHBhdGgsICZk
cCk7Cj4gKwlpZiAoIWVycm9yKSB7Cj4gKwkJLyogRmlsZSBhbHJlYWR5IGV4aXN0cyAqLwo+ICsJ
CWRyZWxlKGRwKTsKPiArCQlyZXR1cm4gRUVYSVNUOwo+ICsJfQo+ICsKPiArCWlmICgoZXJyb3Ig
PSBsb29rdXAocGF0aCwgJmRkcCwgJm5hbWUpKSAhPSAwKSB7Cj4gKwkJLyogRGlyZWN0b3J5IGFs
cmVhZHkgZXhpc3RzICovCj4gKwkJcmV0dXJuIGVycm9yOwo+ICsJfQo+ICsKPiArCXZuX2xvY2so
ZGRwLT5kX3Zub2RlKTsKPiArCWlmICgoZXJyb3IgPSB2bl9hY2Nlc3MoZGRwLT5kX3Zub2RlLCBW
V1JJVEUpKSAhPSAwKQo+ICsJCWdvdG8gb3V0Owo+ICsJbW9kZSAmPSB+U19JRk1UOwo+ICsJbW9k
ZSB8PSBTX0lGRElSOwo+ICsKPiArCWVycm9yID0gVk9QX01LRElSKGRkcC0+ZF92bm9kZSwgbmFt
ZSwgbW9kZSk7Cj4gKyBvdXQ6Cj4gKwl2bl91bmxvY2soZGRwLT5kX3Zub2RlKTsKPiArCWRyZWxl
KGRkcCk7Cj4gKwlyZXR1cm4gZXJyb3I7Cj4gK30KPiArCj4gK2ludAo+ICtzeXNfcm1kaXIoY2hh
ciAqcGF0aCkKPiArewo+ICsJc3RydWN0IGRlbnRyeSAqZHAsICpkZHA7Cj4gKwlzdHJ1Y3Qgdm5v
ZGUgKnZwOwo+ICsJaW50IGVycm9yOwo+ICsJY2hhciAqbmFtZTsKPiArCj4gKwlEUFJJTlRGKFZG
U0RCX1NZU0NBTEwsICgic3lzX3JtZGlyOiBwYXRoPSVzXG4iLCBwYXRoKSk7Cj4gKwo+ICsJaWYg
KChlcnJvciA9IGNoZWNrX2Rpcl9lbXB0eShwYXRoKSkgIT0gMCkKPiArCQlyZXR1cm4gZXJyb3I7
Cj4gKwllcnJvciA9IG5hbWVpKHBhdGgsICZkcCk7Cj4gKwlpZiAoZXJyb3IpCj4gKwkJcmV0dXJu
IGVycm9yOwo+ICsKPiArCXZwID0gZHAtPmRfdm5vZGU7Cj4gKwl2bl9sb2NrKHZwKTsKPiArCWlm
ICgoZXJyb3IgPSB2bl9hY2Nlc3ModnAsIFZXUklURSkpICE9IDApCj4gKwkJZ290byBvdXQ7Cj4g
KwlpZiAodnAtPnZfdHlwZSAhPSBWRElSKSB7Cj4gKwkJZXJyb3IgPSBFTk9URElSOwo+ICsJCWdv
dG8gb3V0Owo+ICsJfQo+ICsJaWYgKHZwLT52X2ZsYWdzICYgVlJPT1QgfHwgdnAtPnZfcmVmY250
ID49IDIpIHsKPiArCQllcnJvciA9IEVCVVNZOwo+ICsJCWdvdG8gb3V0Owo+ICsJfQo+ICsJaWYg
KChlcnJvciA9IGxvb2t1cChwYXRoLCAmZGRwLCAmbmFtZSkpICE9IDApCj4gKwkJZ290byBvdXQ7
Cj4gKwo+ICsJdm5fbG9jayhkZHAtPmRfdm5vZGUpOwo+ICsJZXJyb3IgPSBWT1BfUk1ESVIoZGRw
LT5kX3Zub2RlLCB2cCwgbmFtZSk7Cj4gKwl2bl91bmxvY2soZGRwLT5kX3Zub2RlKTsKPiArCj4g
Kwl2bl91bmxvY2sodnApOwo+ICsJZGVudHJ5X3JlbW92ZShkcCk7Cj4gKwlkcmVsZShkZHApOwo+
ICsJZHJlbGUoZHApOwo+ICsJcmV0dXJuIGVycm9yOwo+ICsKPiArIG91dDoKPiArCXZuX3VubG9j
ayh2cCk7Cj4gKwlkcmVsZShkcCk7Cj4gKwlyZXR1cm4gZXJyb3I7Cj4gK30KPiArCj4gK2ludAo+
ICtzeXNfbWtub2QoY2hhciAqcGF0aCwgbW9kZV90IG1vZGUpCj4gK3sKPiArCWNoYXIgKm5hbWU7
Cj4gKwlzdHJ1Y3QgZGVudHJ5ICpkcCwgKmRkcDsKPiArCWludCBlcnJvcjsKPiArCj4gKwlEUFJJ
TlRGKFZGU0RCX1NZU0NBTEwsICgic3lzX21rbm9kOiBwYXRoPSVzIG1vZGU9JWRcbiIsCXBhdGgs
IG1vZGUpKTsKPiArCj4gKwlzd2l0Y2ggKG1vZGUgJiBTX0lGTVQpIHsKPiArCWNhc2UgU19JRlJF
RzoKPiArCWNhc2UgU19JRkRJUjoKPiArCWNhc2UgU19JRklGTzoKPiArCWNhc2UgU19JRlNPQ0s6
Cj4gKwkJLyogT0sgKi8KPiArCQlicmVhazsKPiArCWRlZmF1bHQ6Cj4gKwkJcmV0dXJuIEVJTlZB
TDsKPiArCX0KPiArCj4gKwllcnJvciA9IG5hbWVpKHBhdGgsICZkcCk7Cj4gKwlpZiAoIWVycm9y
KSB7Cj4gKwkJZHJlbGUoZHApOwo+ICsJCXJldHVybiBFRVhJU1Q7Cj4gKwl9Cj4gKwo+ICsJaWYg
KChlcnJvciA9IGxvb2t1cChwYXRoLCAmZGRwLCAmbmFtZSkpICE9IDApCj4gKwkJcmV0dXJuIGVy
cm9yOwo+ICsKPiArCXZuX2xvY2soZGRwLT5kX3Zub2RlKTsKPiArCWlmICgoZXJyb3IgPSB2bl9h
Y2Nlc3MoZGRwLT5kX3Zub2RlLCBWV1JJVEUpKSAhPSAwKQo+ICsJCWdvdG8gb3V0Owo+ICsJaWYg
KFNfSVNESVIobW9kZSkpCj4gKwkJZXJyb3IgPSBWT1BfTUtESVIoZGRwLT5kX3Zub2RlLCBuYW1l
LCBtb2RlKTsKPiArCWVsc2UKPiArCQllcnJvciA9IFZPUF9DUkVBVEUoZGRwLT5kX3Zub2RlLCBu
YW1lLCBtb2RlKTsKPiArIG91dDoKPiArCXZuX3VubG9jayhkZHAtPmRfdm5vZGUpOwo+ICsJZHJl
bGUoZGRwKTsKPiArCXJldHVybiBlcnJvcjsKPiArfQo+ICsKPiArLyoKPiArICogUmV0dXJucyB0
cnVlIHdoZW4gQHBhcmVudCBwYXRoIGNvdWxkIHJlcHJlc2VudCBwYXJlbnQgZGlyZWN0b3J5Cj4g
KyAqIG9mIGEgZmlsZSBvciBkaXJlY3RvcnkgcmVwcmVzZW50ZWQgYnkgQGNoaWxkIHBhdGguCj4g
KyAqCj4gKyAqIEFzc3VtZXMgYm90aCBwYXRocyBkbyBub3QgaGF2ZSB0cmFpbGluZyBzbGFzaGVz
Lgo+ICsgKi8KPiArc3RhdGljIGJvb2wKPiAraXNfcGFyZW50KGNvbnN0IGNoYXIgKnBhcmVudCwg
Y29uc3QgY2hhciAqY2hpbGQpCj4gK3sKPiArCXNpemVfdCBwX2xlbiA9IHN0cmxlbihwYXJlbnQp
Owo+ICsJcmV0dXJuICFzdHJuY21wKHBhcmVudCwgY2hpbGQsIHBfbGVuKSAmJiAocGFyZW50W3Bf
bGVuLTFdID09ICcvJyB8fCBjaGlsZFtwX2xlbl0gPT0gJy8nKTsKPiArfQo+ICsKPiArc3RhdGlj
IGJvb2wKPiAraGFzX3RyYWlsaW5nKGNvbnN0IGNoYXIgKnBhdGgsIGNoYXIgY2gpCj4gK3sKPiAr
CXNpemVfdCBsZW4gPSBzdHJsZW4ocGF0aCk7Cj4gKwlyZXR1cm4gbGVuICYmIHBhdGhbbGVuIC0g
MV0gPT0gY2g7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkCj4gK3N0cmlwX3RyYWlsaW5nKGNoYXIg
KnBhdGgsIGNoYXIgY2gpCj4gK3sKPiArCXNpemVfdCBsZW4gPSBzdHJsZW4ocGF0aCk7Cj4gKwo+
ICsJd2hpbGUgKGxlbiAmJiBwYXRoW2xlbiAtIDFdID09IGNoKQo+ICsJCWxlbi0tOwo+ICsKPiAr
CXBhdGhbbGVuXSA9ICdcMCc7Cj4gK30KPiArCj4gK2ludAo+ICtzeXNfcmVuYW1lKGNoYXIgKnNy
YywgY2hhciAqZGVzdCkKPiArewo+ICsJc3RydWN0IGRlbnRyeSAqZHAxLCAqZHAyID0gMCwgKmRk
cDEsICpkZHAyOwo+ICsJc3RydWN0IHZub2RlICp2cDEsICp2cDIgPSAwLCAqZHZwMSwgKmR2cDI7
Cj4gKwljaGFyICpzbmFtZSwgKmRuYW1lOwo+ICsJaW50IGVycm9yOwo+ICsJY2hhciByb290W10g
PSAiLyI7Cj4gKwlib29sIHRzOyAvKiB0cmFpbGluZyBzbGFzaCAqLwo+ICsKPiArCURQUklOVEYo
VkZTREJfU1lTQ0FMTCwgKCJzeXNfcmVuYW1lOiBzcmM9JXMgZGVzdD0lc1xuIiwgc3JjLCBkZXN0
KSk7Cj4gKwo+ICsJdHMgPSBmYWxzZTsKPiArCWlmIChoYXNfdHJhaWxpbmcoc3JjLCAnLycpID09
IHRydWUpIHsKPiArCQlpZiAoc3RybGVuKHNyYykgIT0gMSkgewo+ICsJCQkvKiByZW1vdmUgdHJh
aWxpbmcgc2xhc2ggaWZmIHBhdGggaXMgbm9uZSByb290ICovCj4gKwkJCXN0cmlwX3RyYWlsaW5n
KHNyYywgJy8nKTsKPiArCQkJdHMgPSB0cnVlOwo+ICsJCX0KPiArCX0KPiArCj4gKwllcnJvciA9
IGxvb2t1cChzcmMsICZkZHAxLCAmc25hbWUpOwo+ICsJaWYgKGVycm9yICE9IDApIHsKPiArCQly
ZXR1cm4gKGVycm9yKTsKPiArCX0KPiArCj4gKwllcnJvciA9IG5hbWVpX2xhc3Rfbm9mb2xsb3co
c3JjLCBkZHAxLCAmZHAxKTsKPiArCWlmIChlcnJvciAhPSAwKSB7Cj4gKwkJZHJlbGUoZGRwMSk7
Cj4gKwkJcmV0dXJuIChlcnJvcik7Cj4gKwl9Cj4gKwo+ICsJdnAxID0gZHAxLT5kX3Zub2RlOwo+
ICsJdm5fbG9jayh2cDEpOwo+ICsKPiArCWlmICh2cDEtPnZfdHlwZSAhPSBWRElSICYmIHRzID09
IHRydWUpIHsKPiArCQllcnJvciA9IEVOT1RESVI7Cj4gKwkJZ290byBlcnIxOwo+ICsJfQo+ICsK
PiArCXRzID0gZmFsc2U7Cj4gKwlpZiAoaGFzX3RyYWlsaW5nKGRlc3QsICcvJykgPT0gdHJ1ZSkg
ewo+ICsJCWlmIChzdHJsZW4oZGVzdCkgIT0gMSkgewo+ICsJCQkvKiByZW1vdmUgdHJhaWxpbmcg
c2xhc2ggaWZmIHBhdGggaXMgbm9uZSByb290ICovCj4gKwkJCXN0cmlwX3RyYWlsaW5nKGRlc3Qs
ICcvJyk7Cj4gKwkJCXRzID0gdHJ1ZTsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJZXJyb3IgPSBsb29r
dXAoZGVzdCwgJmRkcDIsICZkbmFtZSk7Cj4gKwlpZiAoZXJyb3IgIT0gMCkgewo+ICsJCWdvdG8g
ZXJyMTsKPiArCX0KPiArCj4gKwllcnJvciA9IG5hbWVpX2xhc3Rfbm9mb2xsb3coZGVzdCwgZGRw
MiwgJmRwMik7Cj4gKwlpZiAoZXJyb3IgPT0gMCkgewo+ICsJCS8qIHRhcmdldCBleGlzdHMgKi8K
PiArCj4gKwkJdnAyID0gZHAyLT5kX3Zub2RlOwo+ICsJCXZuX2xvY2sodnAyKTsKPiArCj4gKwkJ
aWYgKHZwMi0+dl90eXBlICE9IFZESVIgJiYgdnAyLT52X3R5cGUgIT0gVkxOSykgewo+ICsJCQlp
ZiAodnAxLT52X3R5cGUgPT0gVkRJUiB8fCB0cyA9PSB0cnVlKSB7Cj4gKwkJCQllcnJvciA9IEVO
T1RESVI7Cj4gKwkJCQlnb3RvIGVycjI7Cj4gKwkJCX0KPiArCQl9IGVsc2UgaWYgKHZwMS0+dl90
eXBlICE9IFZESVIgJiYgdnAyLT52X3R5cGUgPT0gVkRJUikgewo+ICsJCQllcnJvciA9IEVJU0RJ
UjsKPiArCQkJZ290byBlcnIyOwo+ICsJCX0KPiArCQlpZiAodnAyLT52X3R5cGUgPT0gVkRJUiAm
JiBjaGVja19kaXJfZW1wdHkoZGVzdCkpIHsKPiArCQkJZXJyb3IgPSBFRVhJU1Q7Cj4gKwkJCWdv
dG8gZXJyMjsKPiArCQl9Cj4gKwl9IGVsc2UgaWYgKGVycm9yID09IEVOT0VOVCkgewo+ICsJCWlm
ICh2cDEtPnZfdHlwZSAhPSBWRElSICYmIHRzID09IHRydWUpIHsKPiArCQkJZXJyb3IgPSBFTk9U
RElSOwo+ICsJCQlnb3RvIGVycjI7Cj4gKwkJfQo+ICsJfSBlbHNlIHsKPiArCQlnb3RvIGVycjI7
Cj4gKwl9Cj4gKwo+ICsJaWYgKHN0cmNtcChkZXN0LCAiLyIpKQo+ICsJCXN0cmlwX3RyYWlsaW5n
KGRlc3QsICcvJyk7Cj4gKwo+ICsJaWYgKHN0cmNtcChzcmMsICIvIikpCj4gKwkJc3RyaXBfdHJh
aWxpbmcoc3JjLCAnLycpOwo+ICsKPiArCS8qIElmIHNvdXJjZSBhbmQgZGVzdCBhcmUgdGhlIHNh
bWUsIGRvIG5vdGhpbmcgKi8KPiArCWlmICghc3RybmNtcChzcmMsIGRlc3QsIFBBVEhfTUFYKSkK
PiArCQlnb3RvIGVycjI7Cj4gKwo+ICsJLyogQ2hlY2sgaWYgdGFyZ2V0IGlzIGRpcmVjdG9yeSBv
ZiBzb3VyY2UgKi8KPiArCWlmIChpc19wYXJlbnQoc3JjLCBkZXN0KSkgewo+ICsJCWVycm9yID0g
RUlOVkFMOwo+ICsJCWdvdG8gZXJyMjsKPiArCX0KPiArCj4gKwlkbmFtZSA9IHN0cnJjaHIoZGVz
dCwgJy8nKTsKPiArCWlmIChkbmFtZSA9PSBudWxscHRyKSB7Cj4gKwkJZXJyb3IgPSBFTk9URElS
Owo+ICsJCWdvdG8gZXJyMjsKPiArCX0KPiArCWlmIChkbmFtZSA9PSBkZXN0KQo+ICsJCWRlc3Qg
PSByb290Owo+ICsKPiArCSpkbmFtZSA9IDA7Cj4gKwlkbmFtZSsrOwo+ICsKPiArCWR2cDEgPSBk
ZHAxLT5kX3Zub2RlOwo+ICsJdm5fbG9jayhkdnAxKTsKPiArCj4gKwlkdnAyID0gZGRwMi0+ZF92
bm9kZTsKPiArCXZuX2xvY2soZHZwMik7Cj4gKwo+ICsJLyogU291cmNlIGFuZCBkZXN0aW5hdGlv
biBkaXJlY3Rpb25zIHNob3VsZCBiZSB3cml0YWJsZSkgKi8KPiArCWlmICgoZXJyb3IgPSB2bl9h
Y2Nlc3MoZHZwMSwgVldSSVRFKSkgIT0gMCkKPiArCSAgICBnb3RvIGVycjM7Cj4gKwlpZiAoKGVy
cm9yID0gdm5fYWNjZXNzKGR2cDIsIFZXUklURSkpICE9IDApCj4gKwkgICAgZ290byBlcnIzOwo+
ICsKPiArCS8qIFRoZSBzb3VyY2UgYW5kIGRlc3QgbXVzdCBiZSBzYW1lIGZpbGUgc3lzdGVtICov
Cj4gKwlpZiAoZHZwMS0+dl9tb3VudCAhPSBkdnAyLT52X21vdW50KSB7Cj4gKwkJZXJyb3IgPSBF
WERFVjsKPiArCQlnb3RvIGVycjM7Cj4gKwl9Cj4gKwo+ICsJZXJyb3IgPSBWT1BfUkVOQU1FKGR2
cDEsIHZwMSwgc25hbWUsIGR2cDIsIHZwMiwgZG5hbWUpOwo+ICsKPiArCWRlbnRyeV9tb3ZlKGRw
MSwgZGRwMiwgZG5hbWUpOwo+ICsJaWYgKGRwMikKPiArCQlkZW50cnlfcmVtb3ZlKGRwMik7Cj4g
Kwo+ICsgZXJyMzoKPiArCXZuX3VubG9jayhkdnAyKTsKPiArCXZuX3VubG9jayhkdnAxKTsKPiAr
IGVycjI6Cj4gKwlpZiAodnAyKSB7Cj4gKwkJdm5fdW5sb2NrKHZwMik7Cj4gKwkJZHJlbGUoZHAy
KTsKPiArCX0KPiArCWRyZWxlKGRkcDIpOwo+ICsgZXJyMToKPiArCXZuX3VubG9jayh2cDEpOwo+
ICsJZHJlbGUoZHAxKTsKPiArCWRyZWxlKGRkcDEpOwo+ICsJcmV0dXJuIGVycm9yOwo+ICt9Cj4g
Kwo+ICtpbnQKPiArc3lzX3N5bWxpbmsoY29uc3QgY2hhciAqb2xkcGF0aCwgY29uc3QgY2hhciAq
bmV3cGF0aCkKPiArewo+ICsJc3RydWN0IHRhc2sJKnQgPSBtYWluX3Rhc2s7Cj4gKwlpbnQJCWVy
cm9yOwo+ICsJc3RkOjp1bmlxdWVfcHRyPGNoYXIgW10+IHVwX29wIChuZXcgY2hhcltQQVRIX01B
WF0pOwo+ICsJY2hhcgkJKm9wID0gdXBfb3AuZ2V0KCk7Cj4gKwlzdGQ6OnVuaXF1ZV9wdHI8Y2hh
ciBbXT4gdXBfbnAgKG5ldyBjaGFyW1BBVEhfTUFYXSk7Cj4gKwljaGFyCQkqbnAgPSB1cF9ucC5n
ZXQoKTsKPiArCXN0cnVjdCBkZW50cnkJKm5ld2RwOwo+ICsJc3RydWN0IGRlbnRyeQkqbmV3ZGly
ZHA7Cj4gKwljaGFyCQkqbmFtZTsKPiArCj4gKwlpZiAob2xkcGF0aCA9PSBudWxscHRyIHx8IG5l
d3BhdGggPT0gbnVsbHB0cikgewo+ICsJCXJldHVybiAoRUZBVUxUKTsKPiArCX0KPiArCj4gKwlE
UFJJTlRGKFZGU0RCX1NZU0NBTEwsICgic3lzX2xpbms6IG9sZHBhdGg9JXMgbmV3cGF0aD0lc1xu
IiwKPiArCQkJCW9sZHBhdGgsIG5ld3BhdGgpKTsKPiArCj4gKwluZXdkcAkJPSBudWxscHRyOwo+
ICsJbmV3ZGlyZHAJPSBudWxscHRyOwo+ICsKPiArCWVycm9yID0gdGFza19jb252KHQsIG5ld3Bh
dGgsIFZXUklURSwgbnApOwo+ICsJaWYgKGVycm9yICE9IDApIHsKPiArCQlyZXR1cm4gKGVycm9y
KTsKPiArCX0KPiArCj4gKwkvKiBwYXJlbnQgZGlyZWN0b3J5IGZvciBuZXcgcGF0aCBtdXN0IGV4
aXN0ICovCj4gKwlpZiAoKGVycm9yID0gbG9va3VwKG5wLCAmbmV3ZGlyZHAsICZuYW1lKSkgIT0g
MCkgewo+ICsJCWVycm9yID0gRU5PRU5UOwo+ICsJCWdvdG8gb3V0Owo+ICsJfQo+ICsJdm5fbG9j
ayhuZXdkaXJkcC0+ZF92bm9kZSk7Cj4gKwo+ICsJLyogbmV3cGF0aCBzaG91bGQgbm90IGFscmVh
ZHkgZXhpc3QgKi8KPiArCWlmIChuYW1laV9sYXN0X25vZm9sbG93KG5wLCBuZXdkaXJkcCwgJm5l
d2RwKSA9PSAwKSB7Cj4gKwkJZHJlbGUobmV3ZHApOwo+ICsJCWVycm9yID0gRUVYSVNUOwo+ICsJ
CWdvdG8gb3V0Owo+ICsJfQo+ICsKPiArCS8qIGNoZWNrIGZvciB3cml0ZSBhY2Nlc3MgYXQgbmV3
cGF0aCAqLwo+ICsJaWYgKChlcnJvciA9IHZuX2FjY2VzcyhuZXdkaXJkcC0+ZF92bm9kZSwgVldS
SVRFKSkgIT0gMCkgewo+ICsJCWdvdG8gb3V0Owo+ICsJfQo+ICsKPiArCS8qIG9sZHBhdGggbWF5
IG5vdCBiZSBjb25zdCBjaGFyICogdG8gVk9QX1NZTUxJTksgLSBuZWVkIHRvIGNvcHkgKi8KPiAr
CXNpemVfdCB0b2NvcHk7Cj4gKwl0b2NvcHkgPSBzdHJsY3B5KG9wLCBvbGRwYXRoLCBQQVRIX01B
WCk7Cj4gKwlpZiAodG9jb3B5ID49IFBBVEhfTUFYIC0gMSkgewo+ICsJCWVycm9yID0gRU5BTUVU
T09MT05HOwo+ICsJCWdvdG8gb3V0Owo+ICsJfQo+ICsJZXJyb3IgPSBWT1BfU1lNTElOSyhuZXdk
aXJkcC0+ZF92bm9kZSwgbmFtZSwgb3ApOwo+ICsKPiArb3V0Ogo+ICsJaWYgKG5ld2RpcmRwICE9
IG51bGxwdHIpIHsKPiArCQl2bl91bmxvY2sobmV3ZGlyZHAtPmRfdm5vZGUpOwo+ICsJCWRyZWxl
KG5ld2RpcmRwKTsKPiArCX0KPiArCj4gKwlyZXR1cm4gKGVycm9yKTsKPiArfQo+ICsKPiAraW50
Cj4gK3N5c19saW5rKGNoYXIgKm9sZHBhdGgsIGNoYXIgKm5ld3BhdGgpCj4gK3sKPiArCXN0cnVj
dCBkZW50cnkgKm9sZGRwLCAqbmV3ZHAsICpuZXdkaXJkcDsKPiArCXN0cnVjdCB2bm9kZSAqdnA7
Cj4gKwljaGFyICpuYW1lOwo+ICsJaW50IGVycm9yOwo+ICsKPiArCURQUklOVEYoVkZTREJfU1lT
Q0FMTCwgKCJzeXNfbGluazogb2xkcGF0aD0lcyBuZXdwYXRoPSVzXG4iLAo+ICsJCQkJb2xkcGF0
aCwgbmV3cGF0aCkpOwo+ICsKPiArCS8qIEZpbGUgZnJvbSBvbGRwYXRoIG11c3QgZXhpc3QgKi8K
PiArCWlmICgoZXJyb3IgPSBuYW1laShvbGRwYXRoLCAmb2xkZHApKSAhPSAwKQo+ICsJCXJldHVy
biBlcnJvcjsKPiArCj4gKwl2cCA9IG9sZGRwLT5kX3Zub2RlOwo+ICsJdm5fbG9jayh2cCk7Cj4g
Kwo+ICsJaWYgKHZwLT52X3R5cGUgPT0gVkRJUikgewo+ICsJCWVycm9yID0gRVBFUk07Cj4gKwkJ
Z290byBvdXQ7Cj4gKwl9Cj4gKwo+ICsJLyogSWYgbmV3cGF0aCBleGlzdHMsIGl0IHNob3VsZG4n
dCBiZSBvdmVyd3JpdHRlbiAqLwo+ICsJaWYgKCFuYW1laShuZXdwYXRoLCAmbmV3ZHApKSB7Cj4g
KwkJZXJyb3IgPSBFRVhJU1Q7Cj4gKwkJZ290byBvdXQ7Cj4gKwl9Cj4gKwo+ICsJLyogR2V0IHBv
aW50ZXIgdG8gdGhlIHBhcmVudCBkZW50cnkgb2YgbmV3cGF0aCAqLwo+ICsJaWYgKChlcnJvciA9
IGxvb2t1cChuZXdwYXRoLCAmbmV3ZGlyZHAsICZuYW1lKSkgIT0gMCkKPiArCQlnb3RvIG91dDsK
PiArCj4gKwl2bl9sb2NrKG5ld2RpcmRwLT5kX3Zub2RlKTsKPiArCj4gKwkvKiBCb3RoIGZpbGVz
IG11c3QgcmVzaWRlIG9uIHRoZSBzYW1lIG1vdW50ZWQgZmlsZSBzeXN0ZW0gKi8KPiArCWlmIChv
bGRkcC0+ZF9tb3VudCAhPSBuZXdkaXJkcC0+ZF9tb3VudCkgewo+ICsJCWVycm9yID0gRVhERVY7
Cj4gKwkJZ290byBvdXQxOwo+ICsJfQo+ICsKPiArCS8qIFdyaXRlIGFjY2VzcyB0byB0aGUgZGly
IGNvbnRhaW5pbmcgbmV3cGF0aCBpcyByZXF1aXJlZCAqLwo+ICsJaWYgKChlcnJvciA9IHZuX2Fj
Y2VzcyhuZXdkaXJkcC0+ZF92bm9kZSwgVldSSVRFKSkgIT0gMCkKPiArCQlnb3RvIG91dDE7Cj4g
Kwo+ICsJLyogTWFwIG5ld3BhdGggaW50byBkZW50cnkgaGFzaCB3aXRoIHRoZSBzYW1lIHZub2Rl
IGFzIG9sZHBhdGggKi8KPiArCWlmICghKG5ld2RwID0gZGVudHJ5X2FsbG9jKG5ld2RpcmRwLCB2
cCwgbmV3cGF0aCkpKSB7Cj4gKwkJZXJyb3IgPSBFTk9NRU07Cj4gKwkJZ290byBvdXQxOwo+ICsJ
fQo+ICsKPiArCWVycm9yID0gVk9QX0xJTksobmV3ZGlyZHAtPmRfdm5vZGUsIHZwLCBuYW1lKTsK
PiArIG91dDE6Cj4gKwl2bl91bmxvY2sobmV3ZGlyZHAtPmRfdm5vZGUpOwo+ICsJZHJlbGUobmV3
ZGlyZHApOwo+ICsgb3V0Ogo+ICsJdm5fdW5sb2NrKHZwKTsKPiArCWRyZWxlKG9sZGRwKTsKPiAr
CWRyZWxlKG5ld2RwKTsKPiArCXJldHVybiBlcnJvcjsKPiArfQo+ICsKPiAraW50Cj4gK3N5c191
bmxpbmsoY2hhciAqcGF0aCkKPiArewo+ICsJY2hhciAqbmFtZTsKPiArCXN0cnVjdCBkZW50cnkg
KmRwLCAqZGRwOwo+ICsJc3RydWN0IHZub2RlICp2cDsKPiArCWludCBlcnJvcjsKPiArCj4gKwlE
UFJJTlRGKFZGU0RCX1NZU0NBTEwsICgic3lzX3VubGluazogcGF0aD0lc1xuIiwgcGF0aCkpOwo+
ICsKPiArCWRkcCAgID0gbnVsbHB0cjsKPiArCWRwICAgID0gbnVsbHB0cjsKPiArCXZwICAgID0g
bnVsbHB0cjsKPiArCj4gKwllcnJvciA9IGxvb2t1cChwYXRoLCAmZGRwLCAmbmFtZSk7Cj4gKwlp
ZiAoZXJyb3IgIT0gMCkgewo+ICsJCXJldHVybiAoZXJyb3IpOwo+ICsJfQo+ICsKPiArCWVycm9y
ID0gbmFtZWlfbGFzdF9ub2ZvbGxvdyhwYXRoLCBkZHAsICZkcCk7Cj4gKwlpZiAoZXJyb3IgIT0g
MCkgewo+ICsJCWdvdG8gb3V0Owo+ICsJfQo+ICsKPiArCXZwID0gZHAtPmRfdm5vZGU7Cj4gKwl2
bl9sb2NrKHZwKTsKPiArCWlmICh2cC0+dl90eXBlID09IFZESVIpIHsKPiArCSAgICAvLyBQb3Np
eCBzcGVjaWZpZXMgdGhhdCB3ZSBzaG91bGQgcmV0dXJuIEVQRVJNIGhlcmUsIGJ1dCBMaW51eAo+
ICsJICAgIC8vIGFjdHVhbGx5IHJldHVybnMgRUlTRElSLgo+ICsJCWVycm9yID0gRUlTRElSOwo+
ICsJCWdvdG8gb3V0Owo+ICsJfQo+ICsJaWYgKHZwLT52X2ZsYWdzICYgVlJPT1QpIHsKPiArCQll
cnJvciA9IEVCVVNZOwo+ICsJCWdvdG8gb3V0Owo+ICsJfQo+ICsKPiArCXZuX2xvY2soZGRwLT5k
X3Zub2RlKTsKPiArCWlmICgoZXJyb3IgPSB2bl9hY2Nlc3MoZGRwLT5kX3Zub2RlLCBWV1JJVEUp
KSAhPSAwKSB7Cj4gKwkgICAgdm5fdW5sb2NrKGRkcC0+ZF92bm9kZSk7Cj4gKwkgICAgZ290byBv
dXQ7Cj4gKwl9Cj4gKwllcnJvciA9IFZPUF9SRU1PVkUoZGRwLT5kX3Zub2RlLCB2cCwgbmFtZSk7
Cj4gKwl2bl91bmxvY2soZGRwLT5kX3Zub2RlKTsKPiArCj4gKwl2bl91bmxvY2sodnApOwo+ICsJ
ZGVudHJ5X3JlbW92ZShkcCk7Cj4gKwlkcmVsZShkZHApOwo+ICsJZHJlbGUoZHApOwo+ICsJcmV0
dXJuIGVycm9yOwo+ICsgb3V0Ogo+ICsJaWYgKHZwICE9IG51bGxwdHIpIHsKPiArCQl2bl91bmxv
Y2sodnApOwo+ICsJfQo+ICsKPiArCWlmIChkcCAhPSBudWxscHRyKSB7Cj4gKwkJZHJlbGUoZHAp
Owo+ICsJfQo+ICsKPiArCWlmIChkZHAgIT0gbnVsbHB0cikgewo+ICsJCWRyZWxlKGRkcCk7Cj4g
Kwl9Cj4gKwlyZXR1cm4gZXJyb3I7Cj4gK30KPiArCj4gK2ludAo+ICtzeXNfYWNjZXNzKGNoYXIg
KnBhdGgsIGludCBtb2RlKQo+ICt7Cj4gKwlzdHJ1Y3QgZGVudHJ5ICpkcDsKPiArCWludCBlcnJv
ciwgZmxhZ3M7Cj4gKwo+ICsJRFBSSU5URihWRlNEQl9TWVNDQUxMLCAoInN5c19hY2Nlc3M6IHBh
dGg9JXMgbW9kZT0leFxuIiwgcGF0aCwgbW9kZSkpOwo+ICsKPiArCS8qIElmIEZfT0sgaXMgc2V0
LCB3ZSByZXR1cm4gaGVyZSBpZiBmaWxlIGlzIG5vdCBmb3VuZC4gKi8KPiArCWVycm9yID0gbmFt
ZWkocGF0aCwgJmRwKTsKPiArCWlmIChlcnJvcikKPiArCQlyZXR1cm4gZXJyb3I7Cj4gKwo+ICsJ
ZmxhZ3MgPSAwOwo+ICsJaWYgKG1vZGUgJiBSX09LKQo+ICsJCWZsYWdzIHw9IFZSRUFEOwo+ICsJ
aWYgKG1vZGUgJiBXX09LKQo+ICsJCWZsYWdzIHw9IFZXUklURTsKPiArCWlmIChtb2RlICYgWF9P
SykKPiArCQlmbGFncyB8PSBWRVhFQzsKPiArCj4gKwllcnJvciA9IHZuX2FjY2VzcyhkcC0+ZF92
bm9kZSwgZmxhZ3MpOwo+ICsKPiArCWRyZWxlKGRwKTsKPiArCXJldHVybiBlcnJvcjsKPiArfQo+
ICsKPiAraW50Cj4gK3N5c19zdGF0KGNoYXIgKnBhdGgsIHN0cnVjdCBzdGF0ICpzdCkKPiArewo+
ICsJRFBSSU5URihWRlNEQl9TWVNDQUxMLCAoInN5c19zdGF0OiBwYXRoPSVzXG4iLCBwYXRoKSk7
Cj4gKwo+ICsJdHJ5IHsKPiArCQlkZW50cnlfcmVmIGRwID0gbmFtZWkocGF0aCk7Cj4gKwkJaWYg
KCFkcCkgewo+ICsJCQlyZXR1cm4gRU5PRU5UOwo+ICsJCX0KPiArCQlyZXR1cm4gdm5fc3RhdChk
cC0+ZF92bm9kZSwgc3QpOwo+ICsJfSBjYXRjaCAoZXJyb3IgZSkgewo+ICsJCXJldHVybiBlLmdl
dCgpOwo+ICsJfQo+ICt9Cj4gKwo+ICtpbnQgc3lzX2xzdGF0KGNoYXIgKnBhdGgsIHN0cnVjdCBz
dGF0ICpzdCkKPiArewo+ICsJaW50ICAgICAgICAgICBlcnJvcjsKPiArCXN0cnVjdCBkZW50cnkg
KmRkcDsKPiArCWNoYXIgICAgICAgICAgKm5hbWU7Cj4gKwlzdHJ1Y3QgZGVudHJ5ICpkcDsKPiAr
Cj4gKwlEUFJJTlRGKFZGU0RCX1NZU0NBTEwsICgic3lzX2xzdGF0OiBwYXRoPSVzXG4iLCBwYXRo
KSk7Cj4gKwo+ICsJZXJyb3IgPSBsb29rdXAocGF0aCwgJmRkcCwgJm5hbWUpOwo+ICsJaWYgKGVy
cm9yKSB7Cj4gKwkJcmV0dXJuIChlcnJvcik7Cj4gKwl9Cj4gKwo+ICsJZXJyb3IgPSBuYW1laV9s
YXN0X25vZm9sbG93KHBhdGgsIGRkcCwgJmRwKTsKPiArCWlmIChlcnJvcikgewo+ICsJCWRyZWxl
KGRkcCk7Cj4gKwkJcmV0dXJuIGVycm9yOwo+ICsJfQo+ICsKPiArCWVycm9yID0gdm5fc3RhdChk
cC0+ZF92bm9kZSwgc3QpOwo+ICsJZHJlbGUoZHApOwo+ICsJZHJlbGUoZGRwKTsKPiArCXJldHVy
biBlcnJvcjsKPiArfQo+ICsKPiAraW50Cj4gK3N5c19zdGF0ZnMoY2hhciAqcGF0aCwgc3RydWN0
IHN0YXRmcyAqYnVmKQo+ICt7Cj4gKwltZW1zZXQoYnVmLCAwLCBzaXplb2YoKmJ1ZikpOwo+ICsJ
dHJ5IHsKPiArCQlkZW50cnlfcmVmIGRwID0gbmFtZWkocGF0aCk7Cj4gKwkJaWYgKCFkcCkgewo+
ICsJCQlyZXR1cm4gRU5PRU5UOwo+ICsJCX0KPiArCQlyZXR1cm4gVkZTX1NUQVRGUyhkcC0+ZF9t
b3VudCwgYnVmKTsKPiArCX0gY2F0Y2ggKGVycm9yIGUpIHsKPiArCQlyZXR1cm4gZS5nZXQoKTsK
PiArCX0KPiArfQo+ICsKPiAraW50Cj4gK3N5c19mc3RhdGZzKHN0cnVjdCBmaWxlICpmcCwgc3Ry
dWN0IHN0YXRmcyAqYnVmKQo+ICt7Cj4gKwlzdHJ1Y3Qgdm5vZGUgKnZwOwo+ICsJaW50IGVycm9y
ID0gMDsKPiArCj4gKwlpZiAoIWZwLT5mX2RlbnRyeSkKPiArCQlyZXR1cm4gRUJBREY7Cj4gKwo+
ICsJdnAgPSBmcC0+Zl9kZW50cnktPmRfdm5vZGU7Cj4gKwltZW1zZXQoYnVmLCAwLCBzaXplb2Yo
KmJ1ZikpOwo+ICsKPiArCXZuX2xvY2sodnApOwo+ICsJZXJyb3IgPSBWRlNfU1RBVEZTKHZwLT52
X21vdW50LCBidWYpOwo+ICsJdm5fdW5sb2NrKHZwKTsKPiArCj4gKwlyZXR1cm4gZXJyb3I7Cj4g
K30KPiArCj4gK2ludAo+ICtzeXNfdHJ1bmNhdGUoY2hhciAqcGF0aCwgb2ZmX3QgbGVuZ3RoKQo+
ICt7Cj4gKwlzdHJ1Y3QgZGVudHJ5ICpkcDsKPiArCWludCBlcnJvcjsKPiArCj4gKwllcnJvciA9
IG5hbWVpKHBhdGgsICZkcCk7Cj4gKwlpZiAoZXJyb3IpCj4gKwkJcmV0dXJuIGVycm9yOwo+ICsK
PiArCXZuX2xvY2soZHAtPmRfdm5vZGUpOwo+ICsJZXJyb3IgPSBWT1BfVFJVTkNBVEUoZHAtPmRf
dm5vZGUsIGxlbmd0aCk7Cj4gKwl2bl91bmxvY2soZHAtPmRfdm5vZGUpOwo+ICsKPiArCWRyZWxl
KGRwKTsKPiArCXJldHVybiBlcnJvcjsKPiArfQo+ICsKPiAraW50Cj4gK3N5c19mdHJ1bmNhdGUo
c3RydWN0IGZpbGUgKmZwLCBvZmZfdCBsZW5ndGgpCj4gK3sKPiArCXN0cnVjdCB2bm9kZSAqdnA7
Cj4gKwlpbnQgZXJyb3I7Cj4gKwo+ICsJaWYgKCFmcC0+Zl9kZW50cnkpCj4gKwkJcmV0dXJuIEVC
QURGOwo+ICsKPiArCXZwID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOwo+ICsJdm5fbG9jayh2cCk7
Cj4gKwllcnJvciA9IFZPUF9UUlVOQ0FURSh2cCwgbGVuZ3RoKTsKPiArCXZuX3VubG9jayh2cCk7
Cj4gKwo+ICsJcmV0dXJuIGVycm9yOwo+ICt9Cj4gKwo+ICtpbnQKPiArc3lzX2ZjaGRpcihzdHJ1
Y3QgZmlsZSAqZnAsIGNoYXIgKmN3ZCkKPiArewo+ICsJc3RydWN0IHZub2RlICpkdnA7Cj4gKwo+
ICsJaWYgKCFmcC0+Zl9kZW50cnkpCj4gKwkJcmV0dXJuIEVCQURGOwo+ICsKPiArCWR2cCA9IGZw
LT5mX2RlbnRyeS0+ZF92bm9kZTsKPiArCXZuX2xvY2soZHZwKTsKPiArCWlmIChkdnAtPnZfdHlw
ZSAhPSBWRElSKSB7Cj4gKwkJdm5fdW5sb2NrKGR2cCk7Cj4gKwkJcmV0dXJuIEVCQURGOwo+ICsJ
fQo+ICsJc3RybGNweShjd2QsIGZwLT5mX2RlbnRyeS0+ZF9wYXRoLCBQQVRIX01BWCk7Cj4gKwl2
bl91bmxvY2soZHZwKTsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtpbnQKPiArc3lzX3JlYWRs
aW5rKGNoYXIgKnBhdGgsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnNpemUsIHNzaXplX3QgKnNpemUp
Cj4gK3sKPiArCWludAkJZXJyb3I7Cj4gKwlzdHJ1Y3QgZGVudHJ5CSpkZHA7Cj4gKwljaGFyCQkq
bmFtZTsKPiArCXN0cnVjdCBkZW50cnkJKmRwOwo+ICsJc3RydWN0IHZub2RlCSp2cDsKPiArCXN0
cnVjdCBpb3ZlYwl2ZWM7Cj4gKwlzdHJ1Y3QgdWlvCXVpbzsKPiArCj4gKwkqc2l6ZSA9IDA7Cj4g
KwllcnJvciA9IGxvb2t1cChwYXRoLCAmZGRwLCAmbmFtZSk7Cj4gKwlpZiAoZXJyb3IpIHsKPiAr
CQlyZXR1cm4gKGVycm9yKTsKPiArCX0KPiArCj4gKwllcnJvciA9IG5hbWVpX2xhc3Rfbm9mb2xs
b3cocGF0aCwgZGRwLCAmZHApOwo+ICsJaWYgKGVycm9yKSB7Cj4gKwkJZHJlbGUoZGRwKTsKPiAr
CQlyZXR1cm4gKGVycm9yKTsKPiArCX0KPiArCj4gKwlpZiAoZHAtPmRfdm5vZGUtPnZfdHlwZSAh
PSBWTE5LKSB7Cj4gKwkJZHJlbGUoZHApOwo+ICsJCWRyZWxlKGRkcCk7Cj4gKwkJcmV0dXJuIChF
SU5WQUwpOwo+ICsJfQo+ICsJdmVjLmlvdl9iYXNlCT0gYnVmOwo+ICsJdmVjLmlvdl9sZW4JPSBi
dWZzaXplOwo+ICsKPiArCXVpby51aW9faW92CT0gJnZlYzsKPiArCXVpby51aW9faW92Y250CT0g
MTsKPiArCXVpby51aW9fb2Zmc2V0CT0gMDsKPiArCXVpby51aW9fcmVzaWQJPSBidWZzaXplOwo+
ICsJdWlvLnVpb19ydwk9IFVJT19SRUFEOwo+ICsKPiArCXZwID0gZHAtPmRfdm5vZGU7Cj4gKwl2
bl9sb2NrKHZwKTsKPiArCWVycm9yID0gVk9QX1JFQURMSU5LKHZwLCAmdWlvKTsKPiArCXZuX3Vu
bG9jayh2cCk7Cj4gKwo+ICsJZHJlbGUoZHApOwo+ICsJZHJlbGUoZGRwKTsKPiArCj4gKwlpZiAo
ZXJyb3IpIHsKPiArCQlyZXR1cm4gKGVycm9yKTsKPiArCX0KPiArCj4gKwkqc2l6ZSA9IGJ1ZnNp
emUgLSB1aW8udWlvX3Jlc2lkOwo+ICsJcmV0dXJuICgwKTsKPiArfQo+ICsKPiArLyoKPiArICog
Q2hlY2sgdGhlIHZhbGlkaXR5IG9mIHRoZSBtZW1iZXJzIG9mIGEgc3RydWN0IHRpbWV2YWwuCj4g
KyAqLwo+ICtzdGF0aWMgYm9vbCBpc190aW1ldmFsX3ZhbGlkKGNvbnN0IHN0cnVjdCB0aW1ldmFs
ICp0aW1lKQo+ICt7Cj4gKyAgICByZXR1cm4gKHRpbWUtPnR2X3NlYyA+PSAwKSAmJgo+ICsgICAg
ICAgICAgICh0aW1lLT50dl91c2VjID49IDAgJiYgdGltZS0+dHZfdXNlYyA8IDEwMDAwMDApOwo+
ICt9Cj4gKwo+ICsvKgo+ICsgKiBDb252ZXJ0IGEgdGltZXZhbCBzdHJ1Y3QgdG8gYSB0aW1lc3Bl
YyBvbmUuCj4gKyAqLwo+ICtzdGF0aWMgdm9pZCBjb252ZXJ0X3RpbWV2YWwoc3RydWN0IHRpbWVz
cGVjICZ0bywgY29uc3Qgc3RydWN0IHRpbWV2YWwgKmZyb20pCj4gK3sKPiArICAgIGlmIChmcm9t
KSB7Cj4gKyAgICAgICAgdG8udHZfc2VjID0gZnJvbS0+dHZfc2VjOwo+ICsgICAgICAgIHRvLnR2
X25zZWMgPSBmcm9tLT50dl91c2VjICogMTAwMDsgLy8gQ29udmVydCBtaWNyb3NlY29uZHMgdG8g
bmFub3NlY29uZHMKPiArICAgIH0gZWxzZSB7Cj4gKyAgICAgICAgY2xvY2tfZ2V0dGltZShDTE9D
S19SRUFMVElNRSwgJnRvKTsKPiArICAgIH0KPiArfQo+ICsKPiAraW50Cj4gK3N5c191dGltZXMo
Y2hhciAqcGF0aCwgY29uc3Qgc3RydWN0IHRpbWV2YWwgdGltZXNbMl0sIGludCBmbGFncykKPiAr
ewo+ICsgICAgaW50IGVycm9yOwo+ICsgICAgc3RydWN0IGRlbnRyeSAqZHA7Cj4gKyAgICBzdHJ1
Y3QgdGltZXNwZWMgdGltZXNwZWNfdGltZXNbMl07Cj4gKwo+ICsgICAgRFBSSU5URihWRlNEQl9T
WVNDQUxMLCAoInN5c191dGltZXM6IHBhdGg9JXNcbiIsIHBhdGgpKTsKPiArCj4gKyAgICBpZiAo
dGltZXMgJiYgKCFpc190aW1ldmFsX3ZhbGlkKCZ0aW1lc1swXSkgfHwgIWlzX3RpbWV2YWxfdmFs
aWQoJnRpbWVzWzFdKSkpCj4gKyAgICAgICAgcmV0dXJuIEVJTlZBTDsKPiArCj4gKyAgICAvLyBD
b252ZXJ0IGVhY2ggZWxlbWVudCBvZiB0aW1ldmFsIGFycmF5IHRvIHRoZSB0aW1lc3BlYyB0eXBl
Cj4gKyAgICBjb252ZXJ0X3RpbWV2YWwodGltZXNwZWNfdGltZXNbMF0sIHRpbWVzID8gdGltZXMg
KyAwIDogbnVsbHB0cik7Cj4gKyAgICBjb252ZXJ0X3RpbWV2YWwodGltZXNwZWNfdGltZXNbMV0s
IHRpbWVzID8gdGltZXMgKyAxIDogbnVsbHB0cik7Cj4gKwo+ICsgICAgaWYgKGZsYWdzICYgQVRf
U1lNTElOS19OT0ZPTExPVykgewo+ICsgICAgICAgIHN0cnVjdCBkZW50cnkgKmRkcDsKPiArICAg
ICAgICBlcnJvciA9IGxvb2t1cChwYXRoLCAmZGRwLCBudWxscHRyKTsKPiArICAgICAgICBpZiAo
ZXJyb3IpIHsKPiArICAgICAgICAgICAgcmV0dXJuIGVycm9yOwo+ICsgICAgICAgIH0KPiArCj4g
KyAgICAgICAgZXJyb3IgPSBuYW1laV9sYXN0X25vZm9sbG93KHBhdGgsIGRkcCwgJmRwKTsKPiAr
ICAgICAgICBpZiAoZGRwICE9IG51bGxwdHIpIHsKPiArICAgICAgICAgICAgZHJlbGUoZGRwKTsK
PiArICAgICAgICB9Cj4gKyAgICAgICAgaWYgKGVycm9yKSB7Cj4gKyAgICAgICAgICAgIHJldHVy
biBlcnJvcjsKPiArICAgICAgICB9Cj4gKyAgICB9IGVsc2Ugewo+ICsgICAgICAgIGVycm9yID0g
bmFtZWkocGF0aCwgJmRwKTsKPiArICAgICAgICBpZiAoZXJyb3IpCj4gKyAgICAgICAgICAgIHJl
dHVybiBlcnJvcjsKPiArICAgIH0KPiArCj4gKyAgICBpZiAoZHAtPmRfbW91bnQtPm1fZmxhZ3Mg
JiBNTlRfUkRPTkxZKSB7Cj4gKyAgICAgICAgZXJyb3IgPSBFUk9GUzsKPiArICAgIH0gZWxzZSB7
Cj4gKyAgICAgICAgZXJyb3IgPSB2bl9zZXR0aW1lcyhkcC0+ZF92bm9kZSwgdGltZXNwZWNfdGlt
ZXMpOwo+ICsgICAgfQo+ICsKPiArICAgIGRyZWxlKGRwKTsKPiArICAgIHJldHVybiBlcnJvcjsK
PiArfQo+ICsKPiArLyoKPiArICogQ2hlY2sgdGhlIHZhbGlkaXR5IG9mIG1lbWJlcnMgb2YgYSBz
dHJ1Y3QgdGltZXNwZWMKPiArICovCj4gK3N0YXRpYyBib29sIGlzX3RpbWVzcGVjX3ZhbGlkKGNv
bnN0IHN0cnVjdCB0aW1lc3BlYyAmdGltZSkKPiArewo+ICsgICAgcmV0dXJuICh0aW1lLnR2X3Nl
YyA+PSAwKSAmJgo+ICsJICAgKCh0aW1lLnR2X25zZWMgPj0gMCAmJiB0aW1lLnR2X25zZWMgPD0g
OTk5OTk5OTk5KSB8fAo+ICsJICAgIHRpbWUudHZfbnNlYyA9PSBVVElNRV9OT1cgfHwKPiArCSAg
ICB0aW1lLnR2X25zZWMgPT0gVVRJTUVfT01JVCk7Cj4gK30KPiArCj4gK3ZvaWQgaW5pdF90aW1l
c3BlYyhzdHJ1Y3QgdGltZXNwZWMgJl90aW1lcywgY29uc3Qgc3RydWN0IHRpbWVzcGVjICp0aW1l
cykKPiArewo+ICsgICAgaWYgKHRpbWVzID09IG51bGxwdHIgfHwgdGltZXMtPnR2X25zZWMgPT0g
VVRJTUVfTk9XKSB7Cj4gKyAgICAgICAgY2xvY2tfZ2V0dGltZShDTE9DS19SRUFMVElNRSwgJl90
aW1lcyk7Cj4gKyAgICB9IGVsc2Ugewo+ICsgICAgICAgIF90aW1lcy50dl9zZWMgPSB0aW1lcy0+
dHZfc2VjOwo+ICsgICAgICAgIF90aW1lcy50dl9uc2VjID0gdGltZXMtPnR2X25zZWM7Cj4gKyAg
ICB9Cj4gKyAgICByZXR1cm47Cj4gK30KPiArCj4gK2ludAo+ICtzeXNfdXRpbWVuc2F0KGludCBk
aXJmZCwgY29uc3QgY2hhciAqcGF0aG5hbWUsIGNvbnN0IHN0cnVjdCB0aW1lc3BlYyB0aW1lc1sy
XSwgaW50IGZsYWdzKQo+ICt7Cj4gKyAgICBpbnQgZXJyb3I7Cj4gKyAgICBzdGQ6OnN0cmluZyBh
cDsKPiArICAgIHN0cnVjdCB0aW1lc3BlYyB0aW1lc3BlY190aW1lc1syXTsKPiArICAgIGV4dGVy
biBzdHJ1Y3QgdGFzayAqbWFpbl90YXNrOwo+ICsgICAgc3RydWN0IGRlbnRyeSAqZHA7Cj4gKwo+
ICsgICAgLyogdXRpbWVuc2F0IHNob3VsZCByZXR1cm4gRU5PRU5UIHdoZW4gcGF0aG5hbWUgaXMg
ZW1wdHkgKi8KPiArICAgIGlmKHBhdGhuYW1lICYmIHBhdGhuYW1lWzBdID09IDApCj4gKyAgICAg
ICAgcmV0dXJuIEVOT0VOVDsKPiArCj4gKyAgICBpZiAoZmxhZ3MgJiYgIShmbGFncyAmIEFUX1NZ
TUxJTktfTk9GT0xMT1cpKQo+ICsgICAgICAgIHJldHVybiBFSU5WQUw7Cj4gKwo+ICsgICAgaWYg
KHRpbWVzICYmICghaXNfdGltZXNwZWNfdmFsaWQodGltZXNbMF0pIHx8ICFpc190aW1lc3BlY192
YWxpZCh0aW1lc1sxXSkpKQo+ICsgICAgICAgIHJldHVybiBFSU5WQUw7Cj4gKwo+ICsgICAgaW5p
dF90aW1lc3BlYyh0aW1lc3BlY190aW1lc1swXSwgdGltZXMgPyB0aW1lcyArIDAgOiBudWxscHRy
KTsKPiArICAgIGluaXRfdGltZXNwZWModGltZXNwZWNfdGltZXNbMV0sIHRpbWVzID8gdGltZXMg
KyAxIDogbnVsbHB0cik7Cj4gKwo+ICsgICAgaWYgKHBhdGhuYW1lICYmIHBhdGhuYW1lWzBdID09
ICcvJykgewo+ICsJYXAgPSBwYXRobmFtZTsKPiArICAgIH0gZWxzZSBpZiAoZGlyZmQgPT0gQVRf
RkRDV0QpIHsKPiArCWlmICghcGF0aG5hbWUpCj4gKwkgICAgcmV0dXJuIEVGQVVMVDsKPiArCWFw
ID0gc3RkOjpzdHJpbmcobWFpbl90YXNrLT50X2N3ZCkgKyAiLyIgKyBwYXRobmFtZTsKPiArICAg
IH0gZWxzZSB7Cj4gKyAgICAgICAgc3RydWN0IGZpbGUgKmZwOwo+ICsgICAgICAgIGZpbGVyZWYg
ZihmaWxlcmVmX2Zyb21fZmQoZGlyZmQpKTsKPiArCj4gKyAgICAgICAgaWYgKCFmKQo+ICsJICAg
IHJldHVybiBFQkFERjsKPiArCj4gKwlmcCA9IGYuZ2V0KCk7Cj4gKwo+ICsJaWYoIWZwLT5mX2Rl
bnRyeSkKPiArCSAgICByZXR1cm4gRUJBREY7Cj4gKwo+ICsJaWYgKCEoZnAtPmZfZGVudHJ5LT5k
X3Zub2RlLT52X3R5cGUgJiBWRElSKSkKPiArCSAgICByZXR1cm4gRU5PVERJUjsKPiArCj4gKwlp
ZiAocGF0aG5hbWUpCj4gKwkgICAgYXAgPSBzdGQ6OnN0cmluZyhmcC0+Zl9kZW50cnktPmRfcGF0
aCkgKyAiLyIgKyBwYXRobmFtZTsKPiArCWVsc2UKPiArCSAgICBhcCA9IGZwLT5mX2RlbnRyeS0+
ZF9wYXRoOwo+ICsKPiArCWFwID0gc3RkOjpzdHJpbmcoZnAtPmZfZGVudHJ5LT5kX21vdW50LT5t
X3BhdGgpICsgIi8iICsgYXA7Cj4gKyAgICB9Cj4gKwo+ICsgICAgLyogRklYTUU6IEFkZCBzdXBw
b3J0IGZvciBBVF9TWU1MSU5LX05PRk9MTE9XICovCj4gKwo+ICsgICAgZXJyb3IgPSBuYW1laShh
cC5jX3N0cigpLCAmZHApOwo+ICsKPiArICAgIGlmIChlcnJvcikKPiArICAgICAgICByZXR1cm4g
ZXJyb3I7Cj4gKwo+ICsgICAgaWYgKGRwLT5kX21vdW50LT5tX2ZsYWdzICYgTU5UX1JET05MWSkg
ewo+ICsgICAgICAgIGVycm9yID0gRVJPRlM7Cj4gKyAgICB9IGVsc2Ugewo+ICsgICAgICAgIGlm
ICh2bl9hY2Nlc3MoZHAtPmRfdm5vZGUsIFZXUklURSkpIHsKPiArICAgICAgICAgICAgcmV0dXJu
IEVBQ0NFUzsKPiArICAgICAgICB9Cj4gKwkgICAgaWYgKHRpbWVzICYmCj4gKyAgICAgICAgICAg
ICAgICh0aW1lc1swXS50dl9uc2VjICE9IFVUSU1FX05PVyB8fCB0aW1lc1sxXS50dl9uc2VjICE9
IFVUSU1FX05PVykgJiYKPiArICAgICAgICAgICAgICAgKHRpbWVzWzBdLnR2X25zZWMgIT0gVVRJ
TUVfT01JVCB8fCB0aW1lc1sxXS50dl9uc2VjICE9IFVUSU1FX09NSVQpICYmCj4gKwkgICAgICAg
KCEoZHAtPmRfdm5vZGUtPnZfbW9kZSAmIH5WQVBQRU5EKSkpCj4gKwkgICAgICAgIHJldHVybiBF
UEVSTTsKPiArICAgICAgICBlcnJvciA9IHZuX3NldHRpbWVzKGRwLT5kX3Zub2RlLCB0aW1lc3Bl
Y190aW1lcyk7Cj4gKyAgICB9Cj4gKwo+ICsgICAgZHJlbGUoZHApOwo+ICsgICAgcmV0dXJuIGVy
cm9yOwo+ICt9Cj4gKwo+ICtpbnQKPiArc3lzX2Z1dGltZW5zKGludCBmZCwgY29uc3Qgc3RydWN0
IHRpbWVzcGVjIHRpbWVzWzJdKQo+ICt7Cj4gKyAgICBzdHJ1Y3QgZmlsZSAqZnA7Cj4gKwo+ICsg
ICAgZmlsZXJlZiBmKGZpbGVyZWZfZnJvbV9mZChmZCkpOwo+ICsgICAgaWYgKCFmKQo+ICsgICAg
ICAgIHJldHVybiBFQkFERjsKPiArCj4gKyAgICBmcCA9IGYuZ2V0KCk7Cj4gKwo+ICsgICAgaWYg
KCFmcC0+Zl9kZW50cnkpCj4gKyAgICAgICAgcmV0dXJuIEVCQURGOwo+ICsKPiArICAgIHN0ZDo6
c3RyaW5nIHBhdGhuYW1lID0gZnAtPmZfZGVudHJ5LT5kX3BhdGg7Cj4gKyAgICBhdXRvIGVycm9y
ID0gc3lzX3V0aW1lbnNhdChBVF9GRENXRCwgcGF0aG5hbWUuY19zdHIoKSwgdGltZXMsIDApOwo+
ICsgICAgcmV0dXJuIGVycm9yOwo+ICt9Cj4gKwo+ICtpbnQKPiArc3lzX2ZhbGxvY2F0ZShzdHJ1
Y3QgZmlsZSAqZnAsIGludCBtb2RlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuKQo+ICt7Cj4g
KyAgICBpbnQgZXJyb3I7Cj4gKyAgICBzdHJ1Y3Qgdm5vZGUgKnZwOwo+ICsKPiArICAgIERQUklO
VEYoVkZTREJfU1lTQ0FMTCwgKCJzeXNfZmFsbG9jYXRlOiBmcD0leCIsIGZwKSk7Cj4gKwo+ICsg
ICAgaWYgKCFmcC0+Zl9kZW50cnkgfHwgIShmcC0+Zl9mbGFncyAmIEZXUklURSkpIHsKPiArICAg
ICAgICByZXR1cm4gRUJBREY7Cj4gKyAgICB9Cj4gKwo+ICsgICAgaWYgKG9mZnNldCA8IDAgfHwg
bGVuIDw9IDApIHsKPiArICAgICAgICByZXR1cm4gRUlOVkFMOwo+ICsgICAgfQo+ICsKPiArICAg
IC8vIFN0cmFuZ2UsIGJ1dCB0aGF0J3Mgd2hhdCBMaW51eCByZXR1cm5zLgo+ICsgICAgaWYgKCht
b2RlICYgRkFMTE9DX0ZMX1BVTkNIX0hPTEUpICYmICEobW9kZSAmIEZBTExPQ19GTF9LRUVQX1NJ
WkUpKSB7Cj4gKyAgICAgICAgcmV0dXJuIEVOT1RTVVA7Cj4gKyAgICB9Cj4gKwo+ICsgICAgdnAg
PSBmcC0+Zl9kZW50cnktPmRfdm5vZGU7Cj4gKyAgICB2bl9sb2NrKHZwKTsKPiArCj4gKyAgICAv
LyBOT1RFOiBJdCdzIG5vdCBkZXRlY3RlZCBoZXJlIHdoZXRoZXIgb3Igbm90IHRoZSBkZXZpY2Ug
dW5kZXJseWluZwo+ICsgICAgLy8gdGhlIGZzIGlzIGEgYmxvY2sgZGV2aWNlLiBJdCdzIHVwIHRv
IHRoZSBmcyBpdHNlbGYgdGVsbCB1cyB3aGV0aGVyCj4gKyAgICAvLyBvciBub3QgZmFsbG9jYXRl
IGlzIHN1cHBvcnRlZC4gU2VlIGJlbG93Ogo+ICsgICAgaWYgKHZwLT52X3R5cGUgIT0gVlJFRyAm
JiB2cC0+dl90eXBlICE9IFZESVIpIHsKPiArICAgICAgICBlcnJvciA9IEVOT0RFVjsKPiArICAg
ICAgICBnb3RvIHJldDsKPiArICAgIH0KPiArCj4gKyAgICAvLyBFT1BOT1RTVVBQIGhlcmUgbWVh
bnMgdGhhdCB0aGUgdW5kZXJseWluZyBmaWxlIHN5c3RlbQo+ICsgICAgLy8gcmVmZXJyZWQgYnkg
dnAgZG9lc24ndCBzdXBwb3J0IGZhbGxvY2F0ZS4KPiArICAgIGlmICghdnAtPnZfb3AtPnZvcF9m
YWxsb2NhdGUpIHsKPiArICAgICAgICBlcnJvciA9IEVPUE5PVFNVUFA7Cj4gKyAgICAgICAgZ290
byByZXQ7Cj4gKyAgICB9Cj4gKwo+ICsgICAgZXJyb3IgPSBWT1BfRkFMTE9DQVRFKHZwLCBtb2Rl
LCBvZmZzZXQsIGxlbik7Cj4gK3JldDoKPiArICAgIHZuX3VubG9jayh2cCk7Cj4gKyAgICByZXR1
cm4gZXJyb3I7Cj4gK30KPiArCj4gK2ludAo+ICtzeXNfY2htb2QoY29uc3QgY2hhciAqcGF0aCwg
bW9kZV90IG1vZGUpCj4gK3sKPiArICAgIGludCBlcnJvcjsKPiArICAgIHN0cnVjdCBkZW50cnkg
KmRwOwo+ICsgICAgRFBSSU5URihWRlNEQl9TWVNDQUxMLCAoInN5c19jaG1vZDogcGF0aD0lc1xu
IiwgcGF0aCkpOwo+ICsgICAgZXJyb3IgPSBuYW1laShwYXRoLCAmZHApOwo+ICsgICAgaWYgKGVy
cm9yKQo+ICsgICAgICAgIHJldHVybiBlcnJvcjsKPiArICAgIGlmIChkcC0+ZF9tb3VudC0+bV9m
bGFncyAmIE1OVF9SRE9OTFkpIHsKPiArICAgICAgICBlcnJvciA9IEVST0ZTOwo+ICsgICAgfSBl
bHNlIHsKPiArICAgICAgICBlcnJvciA9IHZuX3NldG1vZGUoZHAtPmRfdm5vZGUsIG1vZGUpOwo+
ICsgICAgfQo+ICsgICAgZHJlbGUoZHApOwo+ICsgICAgcmV0dXJuIGVycm9yOwo+ICt9Cj4gKwo+
ICtpbnQKPiArc3lzX2ZjaG1vZChpbnQgZmQsIG1vZGVfdCBtb2RlKQo+ICt7Cj4gKyAgICBmaWxl
cmVmIGYoZmlsZXJlZl9mcm9tX2ZkKGZkKSk7Cj4gKyAgICBpZiAoIWYpCj4gKyAgICAgICAgcmV0
dXJuIEVCQURGOwo+ICsgICAgLy8gUG9zaXggaXMgYW1iaXZhbGVudCBvbiB3aGF0IGZjaG1vZCgp
IHNob3VsZCBkbyBvbiBhbiBmZCB0aGF0IGRvZXMgbm90Cj4gKyAgICAvLyByZWZlciB0byBhIHJl
YWwgZmlsZS4gSXQgc3VnZ2VzdHMgYW4gaW1wbGVtZW50YXRpb24gbWF5IChidXQgbm90IG11c3Qp
Cj4gKyAgICAvLyBmYWlsIEVJTlZBTCBvbiBhIHBpcGUsIGNhbiBiZWhhdmUgaW4gYW4gInVuc3Bl
Y2lmaWVkIiBtYW5uZXIgb24gYQo+ICsgICAgLy8gc29ja2V0LCBhbmQgZm9yIGEgU1RSRUFNLCBp
dCBtdXN0IHN1Y2NlZWQgYW5kIGRvIG5vdGhpbmcuIExpbnV4IHNlZW1zCj4gKyAgICAvLyB0byBq
dXN0IGRvIHRoZSBsYXN0IHRoaW5nIChkbyBub3RoaW5nIGFuZCBzdWNjZWVkKS4KPiArICAgIGlm
ICghZi0+Zl9kZW50cnkpIHsKPiArICAgICAgICByZXR1cm4gMDsKPiArICAgIH0KPiArICAgIGlm
IChmLT5mX2RlbnRyeS0+ZF9tb3VudC0+bV9mbGFncyAmIE1OVF9SRE9OTFkpIHsKPiArICAgICAg
ICByZXR1cm4gRVJPRlM7Cj4gKyAgICB9IGVsc2Ugewo+ICsgICAgICAgIHJldHVybiB2bl9zZXRt
b2RlKGYtPmZfZGVudHJ5LT5kX3Zub2RlLCBtb2RlKTsKPiArICAgIH0KPiArfQo+IGRpZmYgLS1n
aXQgYS9saWIvdmZzY29yZS90YXNrLmMgYi9saWIvdmZzY29yZS90YXNrLmMKPiBuZXcgZmlsZSBt
b2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwLi43YTM1NTAzNAo+IC0tLSAvZGV2L251bGwKPiAr
KysgYi9saWIvdmZzY29yZS90YXNrLmMKPiBAQCAtMCwwICsxLDE2NyBAQAo+ICsvKi0KPiArICog
Q29weXJpZ2h0IChjKSAyMDA3LCBLb2hzdWtlIE9odGFuaSBBbGwgcmlnaHRzIHJlc2VydmVkLgo+
ICsgKgo+ICsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKPiArICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCj4gKyAqIGFyZSBtZXQ6Cj4gKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KPiArICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQo+ICsgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgo+ICsgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRo
ZSBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBhbnkgY28tY29udHJpYnV0b3JzCj4gKyAqICAgIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhp
cyBzb2Z0d2FyZQo+ICsgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KPiArICoKPiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9S
IEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAo+ICsgKiBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKPiArICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UKPiArICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKPiArICogRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwKPiArICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKPiArICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCj4gKyAqIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUCj4gKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKPiArICogT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgo+
ICsgKiBTVUNIIERBTUFHRS4KPiArICovCj4gKwo+ICsvKgo+ICsgKiB2ZnNfdGFzay5jIC0gUm91
dGluZXMgdG8gbWFuYWdlIHRoZSBwZXIgdGFzayBkYXRhLgo+ICsgKi8KPiArCj4gKwo+ICsjaW5j
bHVkZSA8bGltaXRzLmg+Cj4gKyNpbmNsdWRlIDxzdGRsaWIuaD4KPiArI2luY2x1ZGUgPHN0cmlu
Zy5oPgo+ICsjaW5jbHVkZSA8c3RkaW8uaD4KPiArI2luY2x1ZGUgPGVycm5vLmg+Cj4gKwo+ICsj
aW5jbHVkZSA8b3N2L3ByZXguaD4KPiArI2luY2x1ZGUgInZmcy5oIgo+ICsKPiArLyoKPiArICog
QWxsb2NhdGUgbmV3IHRhc2suCj4gKyAqLwo+ICtpbnQKPiArdGFza19hbGxvYyhzdHJ1Y3QgdGFz
ayAqKnB0KQo+ICt7Cj4gKwlzdHJ1Y3QgdGFzayAqdDsKPiArCj4gKyAgICAvLyBGSVhNRTogd2hl
cmUgZG8gd2UgZnJlZSB0YXNrID8KPiArCWlmICghKHQgPSBuZXcgdGFzaykpCj4gKwkJcmV0dXJu
IEVOT01FTTsKPiArCW1lbXNldCh0LCAwLCBzaXplb2Yoc3RydWN0IHRhc2spKTsKPiArCXN0cmxj
cHkodC0+dF9jd2QsICIvIiwgc2l6ZW9mKHQtPnRfY3dkKSk7Cj4gKwo+ICsJKnB0ID0gdDsKPiAr
CXJldHVybiAwOwo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBDb252ZXJ0IHRvIGZ1bGwgcGF0aCBmcm9t
IHRoZSBjd2Qgb2YgdGFzayBhbmQgcGF0aC4KPiArICogQHdkOiAgIHdvcmtpbmcgZGlyZWN0b3J5
Cj4gKyAqIEBwYXRoOiB0YXJnZXQgcGF0aAo+ICsgKiBAZnVsbDogZnVsbCBwYXRoIHRvIGJlIHJl
dHVybmVkCj4gKyAqLwo+ICtpbnQKPiArcGF0aF9jb252KGNoYXIgKndkLCBjb25zdCBjaGFyICpj
cGF0aCwgY2hhciAqZnVsbCkKPiArewo+ICsJY2hhciBwYXRoW1BBVEhfTUFYXTsKPiArCWNoYXIg
KnNyYywgKnRndCwgKnAsICplbmQ7Cj4gKwlzaXplX3QgbGVuID0gMDsKPiArCj4gKwlzdHJsY3B5
KHBhdGgsIGNwYXRoLCBQQVRIX01BWCk7Cj4gKwlwYXRoW1BBVEhfTUFYIC0gMV0gPSAnXDAnOwo+
ICsKPiArCWxlbiA9IHN0cmxlbihwYXRoKTsKPiArCWlmIChsZW4gPj0gUEFUSF9NQVgpCj4gKwkJ
cmV0dXJuIEVOQU1FVE9PTE9ORzsKPiArCWlmIChzdHJsZW4od2QpICsgbGVuID49IFBBVEhfTUFY
KQo+ICsJCXJldHVybiBFTkFNRVRPT0xPTkc7Cj4gKwlzcmMgPSBwYXRoOwo+ICsJdGd0ID0gZnVs
bDsKPiArCWVuZCA9IHNyYyArIGxlbjsKPiArCWlmIChwYXRoWzBdID09ICcvJykgewo+ICsJCSp0
Z3QrKyA9ICpzcmMrKzsKPiArCQlsZW4gPSAxOwo+ICsJfSBlbHNlIHsKPiArCQlzdHJsY3B5KGZ1
bGwsIHdkLCBQQVRIX01BWCk7Cj4gKwkJbGVuID0gc3RybGVuKHdkKTsKPiArCQl0Z3QgKz0gbGVu
Owo+ICsJCWlmIChsZW4gPiAxICYmIHBhdGhbMF0gIT0gJy4nKSB7Cj4gKwkJCSp0Z3QgPSAnLyc7
Cj4gKwkJCXRndCsrOwo+ICsJCQlsZW4rKzsKPiArCQl9Cj4gKwl9Cj4gKwl3aGlsZSAoKnNyYykg
ewo+ICsJCXAgPSBzcmM7Cj4gKwkJd2hpbGUgKCpwICE9ICcvJyAmJiAqcCAhPSAnXDAnKQo+ICsJ
CQlwKys7Cj4gKwkJKnAgPSAnXDAnOwo+ICsJCWlmICghc3RyY21wKHNyYywgIi4uIikpIHsKPiAr
CQkJaWYgKGxlbiA+PSAyKSB7Cj4gKwkJCQlsZW4gLT0gMjsKPiArCQkJCXRndCAtPSAyOwkvKiBz
a2lwIHByZXZpb3VzICcvJyAqLwo+ICsJCQkJd2hpbGUgKCp0Z3QgIT0gJy8nKSB7Cj4gKwkJCQkJ
dGd0LS07Cj4gKwkJCQkJbGVuLS07Cj4gKwkJCQl9Cj4gKwkJCQlpZiAobGVuID09IDApIHsKPiAr
CQkJCQl0Z3QrKzsKPiArCQkJCQlsZW4rKzsKPiArCQkJCX0KPiArCQkJfQo+ICsJCX0gZWxzZSBp
ZiAoIXN0cmNtcChzcmMsICIuIikpIHsKPiArCQkJLyogSWdub3JlICIuIiAqLwo+ICsJCX0gZWxz
ZSB7Cj4gKwkJCXdoaWxlICgqc3JjICE9ICdcMCcpIHsKPiArCQkJCSp0Z3QrKyA9ICpzcmMrKzsK
PiArCQkJCWxlbisrOwo+ICsJCQl9Cj4gKwkJfQo+ICsJCWlmIChwID09IGVuZCkKPiArCQkJYnJl
YWs7Cj4gKwkJaWYgKGxlbiA+IDAgJiYgKih0Z3QgLSAxKSAhPSAnLycpIHsKPiArCQkJKnRndCsr
ID0gJy8nOwo+ICsJCQlsZW4rKzsKPiArCQl9Cj4gKwkJc3JjID0gcCArIDE7Cj4gKwl9Cj4gKwkq
dGd0ID0gJ1wwJzsKPiArCj4gKwlyZXR1cm4gKDApOwo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBDb252
ZXJ0IHRvIGZ1bGwgcGF0aCBmcm9tIHRoZSBjd2Qgb2YgdGFzayBhbmQgcGF0aC4KPiArICogQHQ6
ICAgIHRhc2sgc3RydWN0dXJlCj4gKyAqIEBwYXRoOiB0YXJnZXQgcGF0aAo+ICsgKiBAZnVsbDog
ZnVsbCBwYXRoIHRvIGJlIHJldHVybmVkCj4gKyAqIEBhY2M6IGFjY2VzcyBtb2RlCj4gKyAqLwo+
ICtpbnQKPiArdGFza19jb252KHN0cnVjdCB0YXNrICp0LCBjb25zdCBjaGFyICpjcGF0aCwgaW50
IGFjYywgY2hhciAqZnVsbCkKPiArewo+ICsJaW50IHJjOwo+ICsKPiArCXJjID0gcGF0aF9jb252
KHQtPnRfY3dkLCBjcGF0aCwgZnVsbCk7Cj4gKwlpZiAocmMgIT0gMCkgewo+ICsJCXJldHVybiAo
cmMpOwo+ICsJfQo+ICsKPiArCS8qIENoZWNrIGlmIHRoZSBjbGllbnQgdGFzayBoYXMgcmVxdWly
ZWQgcGVybWlzc2lvbiAqLwo+ICsJcmV0dXJuICgwKTsgLy9zZWNfZmlsZV9wZXJtaXNzaW9uKHQt
PnRfdGFza2lkLCBmdWxsLCBhY2MpOwo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBTYWZlIGNvcHlpbmcg
ZnVuY3Rpb24gdGhhdCBjaGVja3MgZm9yIG92ZXJmbG93Lgo+ICsgKi8KPiAraW50IHZmc19kbmFt
ZV9jb3B5KGNoYXIgKmRlc3QsIGNvbnN0IGNoYXIgKnNyYywgc2l6ZV90IHNpemUpCj4gK3sKPiAr
ICAgIGlmIChzdHJsY3B5KGRlc3QsIHNyYywgc2l6ZSkgPj0gc2l6ZSkgewo+ICsgICAgICAgIHJl
dHVybiAtMTsKPiArICAgIH0KPiArICAgIHJldHVybiAwOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL2xp
Yi92ZnNjb3JlL3Zmcy5oIGIvbGliL3Zmc2NvcmUvdmZzLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0
NAo+IGluZGV4IDAwMDAwMDAwLi5kODZlZjk1Nwo+IC0tLSAvZGV2L251bGwKPiArKysgYi9saWIv
dmZzY29yZS92ZnMuaAo+IEBAIC0wLDAgKzEsMTg5IEBACj4gKy8qCj4gKyAqIENvcHlyaWdodCAo
YykgMjAwNS0yMDA3LCBLb2hzdWtlIE9odGFuaQo+ICsgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgo+
ICsgKgo+ICsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKPiArICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCj4gKyAqIGFyZSBtZXQ6Cj4gKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KPiArICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQo+ICsgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgo+ICsgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRo
ZSBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBhbnkgY28tY29udHJpYnV0b3JzCj4gKyAqICAgIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhp
cyBzb2Z0d2FyZQo+ICsgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KPiArICoKPiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9S
IEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAo+ICsgKiBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKPiArICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UKPiArICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKPiArICogRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwKPiArICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKPiArICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCj4gKyAqIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUCj4gKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKPiArICogT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgo+
ICsgKiBTVUNIIERBTUFHRS4KPiArICovCj4gKwo+ICsjaWZuZGVmIF9WRlNfSAo+ICsjZGVmaW5l
IF9WRlNfSAo+ICsKPiArI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgo+ICsjaW5jbHVkZSA8YXNzZXJ0
Lmg+Cj4gKyNpbmNsdWRlIDxkaXJlbnQuaD4KPiArI2luY2x1ZGUgPGxpbWl0cy5oPgo+ICsKPiAr
I2luY2x1ZGUgPG9zdi9wcmV4Lmg+Cj4gKyNpbmNsdWRlIDxvc3YvZmlsZS5oPgo+ICsjaW5jbHVk
ZSA8b3N2L21vdW50Lmg+Cj4gKyNpbmNsdWRlIDxvc3Yvdm5vZGUuaD4KPiArI2luY2x1ZGUgPG9z
di9kZW50cnkuaD4KPiArI2luY2x1ZGUgPG9zdi9lcnJvci5oPgo+ICsKPiArLyoKPiArICogSW1w
b3J0IHZub2RlIGF0dHJpYnV0ZXMgZmxhZ3MKPiArICovCj4gKyNpbmNsdWRlIDxvc3Yvdm5vZGVf
YXR0ci5oPgo+ICsKPiArLyogI2RlZmluZSBERUJVR19WRlMgMSAqLwo+ICsKPiArLyoKPiArICog
VHVuYWJsZSBwYXJhbWV0ZXJzCj4gKyAqLwo+ICsjZGVmaW5lIEZTTUFYTkFNRVMJMTYJCS8qIG1h
eCBsZW5ndGggb2YgJ2ZpbGUgc3lzdGVtJyBuYW1lICovCj4gKwo+ICsjaWZkZWYgREVCVUdfVkZT
Cj4gKyNpbmNsdWRlIDxvc3YvZGVidWcuaD4KPiArCj4gK2V4dGVybiBpbnQgdmZzX2RlYnVnOwo+
ICsKPiArI2RlZmluZQlWRlNEQl9DT1JFCTB4MDAwMDAwMDEKPiArI2RlZmluZQlWRlNEQl9TWVND
QUxMCTB4MDAwMDAwMDIKPiArI2RlZmluZQlWRlNEQl9WTk9ERQkweDAwMDAwMDA0Cj4gKyNkZWZp
bmUJVkZTREJfQklPCTB4MDAwMDAwMDgKPiArI2RlZmluZQlWRlNEQl9DQVAJMHgwMDAwMDAxMAo+
ICsKPiArI2RlZmluZSBWRlNEQl9GTEFHUwkweDAwMDAwMDEzCj4gKwo+ICsjZGVmaW5lCURQUklO
VEYoX20sWCkJaWYgKHZmc19kZWJ1ZyAmIChfbSkpIGtwcmludGYgWAo+ICsjZWxzZQo+ICsjZGVm
aW5lCURQUklOVEYoX20sIFgpCj4gKyNlbmRpZgo+ICsKPiArI2RlZmluZSBBU1NFUlQoZSkJYXNz
ZXJ0KGUpCj4gKwo+ICsjZGVmaW5lIE9QRU5fTUFYCTI1Ngo+ICsKPiArLyoKPiArICogcGVyIHRh
c2sgZGF0YQo+ICsgKi8KPiArc3RydWN0IHRhc2sgewo+ICsJY2hhciAJICAgIHRfY3dkW1BBVEhf
TUFYXTsJLyogY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSAqLwo+ICsJc3RydWN0IGZpbGUgKnRf
Y3dkZnA7CQkvKiBkaXJlY3RvcnkgZm9yIGN3ZCAqLwo+ICt9Owo+ICsKPiArZXh0ZXJuIGNvbnN0
IHN0cnVjdCB2ZnNzdyB2ZnNzd1tdOwo+ICsKPiArX19CRUdJTl9ERUNMUwo+ICtpbnQJIHN5c19v
cGVuKGNoYXIgKnBhdGgsIGludCBmbGFncywgbW9kZV90IG1vZGUsIHN0cnVjdCBmaWxlICoqZnAp
Owo+ICtpbnQJIHN5c19yZWFkKHN0cnVjdCBmaWxlICpmcCwgY29uc3Qgc3RydWN0IGlvdmVjICpp
b3YsIHNpemVfdCBuaW92LAo+ICsJCW9mZl90IG9mZnNldCwgc2l6ZV90ICpjb3VudCk7Cj4gK2lu
dAkgc3lzX3dyaXRlKHN0cnVjdCBmaWxlICpmcCwgY29uc3Qgc3RydWN0IGlvdmVjICppb3YsIHNp
emVfdCBuaW92LAo+ICsJCW9mZl90IG9mZnNldCwgc2l6ZV90ICpjb3VudCk7Cj4gK2ludAkgc3lz
X2xzZWVrKHN0cnVjdCBmaWxlICpmcCwgb2ZmX3Qgb2ZmLCBpbnQgdHlwZSwgb2ZmX3QgKiBjdXJf
b2ZmKTsKPiAraW50CSBzeXNfaW9jdGwoc3RydWN0IGZpbGUgKmZwLCB1X2xvbmcgcmVxdWVzdCwg
dm9pZCAqYnVmKTsKPiAraW50CSBzeXNfZnN0YXQoc3RydWN0IGZpbGUgKmZwLCBzdHJ1Y3Qgc3Rh
dCAqc3QpOwo+ICtpbnQJIHN5c19mc3RhdGZzKHN0cnVjdCBmaWxlICpmcCwgc3RydWN0IHN0YXRm
cyAqYnVmKTsKPiAraW50CSBzeXNfZnN5bmMoc3RydWN0IGZpbGUgKmZwKTsKPiAraW50CSBzeXNf
ZnRydW5jYXRlKHN0cnVjdCBmaWxlICpmcCwgb2ZmX3QgbGVuZ3RoKTsKPiArCj4gK2ludAkgc3lz
X3JlYWRkaXIoc3RydWN0IGZpbGUgKmZwLCBzdHJ1Y3QgZGlyZW50ICpkaXJlbnQpOwo+ICtpbnQJ
IHN5c19yZXdpbmRkaXIoc3RydWN0IGZpbGUgKmZwKTsKPiAraW50CSBzeXNfc2Vla2RpcihzdHJ1
Y3QgZmlsZSAqZnAsIGxvbmcgbG9jKTsKPiAraW50CSBzeXNfdGVsbGRpcihzdHJ1Y3QgZmlsZSAq
ZnAsIGxvbmcgKmxvYyk7Cj4gK2ludAkgc3lzX2ZjaGRpcihzdHJ1Y3QgZmlsZSAqZnAsIGNoYXIg
KnBhdGgpOwo+ICsKPiAraW50CSBzeXNfbWtkaXIoY2hhciAqcGF0aCwgbW9kZV90IG1vZGUpOwo+
ICtpbnQJIHN5c19ybWRpcihjaGFyICpwYXRoKTsKPiAraW50CSBzeXNfbWtub2QoY2hhciAqcGF0
aCwgbW9kZV90IG1vZGUpOwo+ICtpbnQJIHN5c19yZW5hbWUoY2hhciAqc3JjLCBjaGFyICpkZXN0
KTsKPiAraW50CSBzeXNfbGluayhjaGFyICpvbGRwYXRoLCBjaGFyICpuZXdwYXRoKTsKPiAraW50
CSBzeXNfdW5saW5rKGNoYXIgKnBhdGgpOwo+ICtpbnQJIHN5c19zeW1saW5rKGNvbnN0IGNoYXIg
Km9sZHBhdGgsIGNvbnN0IGNoYXIgKm5ld3BhdGgpOwo+ICtpbnQJIHN5c19hY2Nlc3MoY2hhciAq
cGF0aCwgaW50IG1vZGUpOwo+ICtpbnQJIHN5c19zdGF0KGNoYXIgKnBhdGgsIHN0cnVjdCBzdGF0
ICpzdCk7Cj4gK2ludAkgc3lzX2xzdGF0KGNoYXIgKnBhdGgsIHN0cnVjdCBzdGF0ICpzdCk7Cj4g
K2ludAkgc3lzX3N0YXRmcyhjaGFyICpwYXRoLCBzdHJ1Y3Qgc3RhdGZzICpidWYpOwo+ICtpbnQJ
IHN5c190cnVuY2F0ZShjaGFyICpwYXRoLCBvZmZfdCBsZW5ndGgpOwo+ICtpbnQJIHN5c19yZWFk
bGluayhjaGFyICpwYXRoLCBjaGFyICpidWYsIHNpemVfdCBidWZzaXplLCBzc2l6ZV90ICpzaXpl
KTsKPiAraW50ICBzeXNfdXRpbWVzKGNoYXIgKnBhdGgsIGNvbnN0IHN0cnVjdCB0aW1ldmFsIHRp
bWVzWzJdLCBpbnQgZmxhZ3MpOwo+ICtpbnQgIHN5c191dGltZW5zYXQoaW50IGRpcmZkLCBjb25z
dCBjaGFyICpwYXRobmFtZSwKPiArICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB0aW1l
c3BlYyB0aW1lc1syXSwgaW50IGZsYWdzKTsKPiAraW50ICBzeXNfZnV0aW1lbnMoaW50IGZkLCBj
b25zdCBzdHJ1Y3QgdGltZXNwZWMgdGltZXNbMl0pOwo+ICtpbnQgIHN5c19mYWxsb2NhdGUoc3Ry
dWN0IGZpbGUgKmZwLCBpbnQgbW9kZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbik7Cj4gKwo+
ICtpbnQJIHN5c19tb3VudChjb25zdCBjaGFyICpkZXYsIGNvbnN0IGNoYXIgKmRpciwgY29uc3Qg
Y2hhciAqZnNuYW1lLCBpbnQgZmxhZ3MsIGNvbnN0IHZvaWQgKmRhdGEpOwo+ICtpbnQJIHN5c191
bW91bnQyKGNvbnN0IGNoYXIgKnBhdGgsIGludCBmbGFncyk7Cj4gK2ludAkgc3lzX3Vtb3VudChj
b25zdCBjaGFyICpwYXRoKTsKPiAraW50CSBzeXNfcGl2b3Rfcm9vdChjb25zdCBjaGFyICpuZXdf
cm9vdCwgY29uc3QgY2hhciAqb2xkX3B1dCk7Cj4gK2ludAkgc3lzX3N5bmModm9pZCk7Cj4gK2lu
dAkgc3lzX2NobW9kKGNvbnN0IGNoYXIgKnBhdGgsIG1vZGVfdCBtb2RlKTsKPiAraW50CSBzeXNf
ZmNobW9kKGludCBmZCwgbW9kZV90IG1vZGUpOwo+ICsKPiArCj4gK2ludAkgdGFza19hbGxvYyhz
dHJ1Y3QgdGFzayAqKnB0KTsKPiAraW50CSB0YXNrX2NvbnYoc3RydWN0IHRhc2sgKnQsIGNvbnN0
IGNoYXIgKnBhdGgsIGludCBtb2RlLCBjaGFyICpmdWxsKTsKPiAraW50CSBwYXRoX2NvbnYoY2hh
ciAqd2QsIGNvbnN0IGNoYXIgKmNwYXRoLCBjaGFyICpmdWxsKTsKPiArCj4gKy8vaW50CSBzZWNf
ZmlsZV9wZXJtaXNzaW9uKHRhc2tfdCB0YXNrLCBjaGFyICpwYXRoLCBpbnQgbW9kZSk7Cj4gK2lu
dAkgc2VjX3Zub2RlX3Blcm1pc3Npb24oY2hhciAqcGF0aCk7Cj4gKwo+ICtpbnQgICAgIG5hbWVp
KGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBkZW50cnkgKipkcHApOwo+ICtpbnQJIG5hbWVpX2xh
c3Rfbm9mb2xsb3coY2hhciAqcGF0aCwgc3RydWN0IGRlbnRyeSAqZGRwLCBzdHJ1Y3QgZGVudHJ5
ICoqZHApOwo+ICtpbnQJIGxvb2t1cChjaGFyICpwYXRoLCBzdHJ1Y3QgZGVudHJ5ICoqZHBwLCBj
aGFyICoqbmFtZSk7Cj4gK3ZvaWQJIHZub2RlX2luaXQodm9pZCk7Cj4gK3ZvaWQJIGxvb2t1cF9p
bml0KHZvaWQpOwo+ICsKPiAraW50ICAgICB2ZnNfZmluZHJvb3QoY29uc3QgY2hhciAqcGF0aCwg
c3RydWN0IG1vdW50ICoqbXAsIGNoYXIgKipyb290KTsKPiAraW50CSB2ZnNfZG5hbWVfY29weShj
aGFyICpkZXN0LCBjb25zdCBjaGFyICpzcmMsIHNpemVfdCBzaXplKTsKPiArCj4gK2ludAkgZnNf
bm9vcCh2b2lkKTsKPiArCj4gK3N0cnVjdCBkZW50cnkgKmRlbnRyeV9hbGxvYyhzdHJ1Y3QgZGVu
dHJ5ICpwYXJlbnRfZHAsIHN0cnVjdCB2bm9kZSAqdnAsIGNvbnN0IGNoYXIgKnBhdGgpOwo+ICtz
dHJ1Y3QgZGVudHJ5ICpkZW50cnlfbG9va3VwKHN0cnVjdCBtb3VudCAqbXAsIGNoYXIgKnBhdGgp
Owo+ICt2b2lkIGRlbnRyeV9tb3ZlKHN0cnVjdCBkZW50cnkgKmRwLCBzdHJ1Y3QgZGVudHJ5ICpw
YXJlbnRfZHAsIGNoYXIgKnBhdGgpOwo+ICt2b2lkIGRlbnRyeV9yZW1vdmUoc3RydWN0IGRlbnRy
eSAqZHApOwo+ICt2b2lkIGRyZWYoc3RydWN0IGRlbnRyeSAqZHApOwo+ICt2b2lkIGRyZWxlKHN0
cnVjdCBkZW50cnkgKmRwKTsKPiArdm9pZCBkZW50cnlfaW5pdCh2b2lkKTsKPiArCj4gKyNpZmRl
ZiBERUJVR19WRlMKPiArdm9pZAkgdm5vZGVfZHVtcCh2b2lkKTsKPiArdm9pZAkgbW91bnRfZHVt
cCh2b2lkKTsKPiArI2VuZGlmCj4gKwo+ICtfX0VORF9ERUNMUwo+ICsKPiArI2lmZGVmIF9fY3Bs
dXNwbHVzCj4gKwo+ICsvLyBDb252ZXJ0IGEgcGF0aCB0byBhIGRlbnRyeV9yZWYuICBSZXR1cm5z
IGFuIGVtcHR5Cj4gKy8vIHJlZmVyZW5jZSBpZiBub3QgZm91bmQgKEVOT0VOVCkgZm9yIGVmZmlj
aWVuY3ksIHRocm93cwo+ICsvLyBhbiBlcnJvciBvbiBvdGhlciBlcnJvcnMuCj4gK2lubGluZSBk
ZW50cnlfcmVmIG5hbWVpKGNoYXIqIHBhdGgpCj4gK3sKPiArCWRlbnRyeSogZHA7Cj4gKwlhdXRv
IGVyciA9IG5hbWVpKHBhdGgsICZkcCk7Cj4gKwlpZiAoZXJyID09IEVOT0VOVCkgewo+ICsJCXJl
dHVybiBkZW50cnlfcmVmKCk7Cj4gKwl9IGVsc2UgaWYgKGVycikgewo+ICsJCXRocm93IG1ha2Vf
ZXJyb3IoZXJyKTsKPiArCX0gZWxzZSB7Cj4gKwkJcmV0dXJuIGRlbnRyeV9yZWYoZHAsIGZhbHNl
KTsKPiArCX0KPiArfQo+ICsKPiArI2VuZGlmCj4gKwo+ICsjZW5kaWYgLyogIV9WRlNfSCAqLwo+
IGRpZmYgLS1naXQgYS9saWIvdmZzY29yZS92bm9kZS5jIGIvbGliL3Zmc2NvcmUvdm5vZGUuYwo+
IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAuLmEyOTIzNDRmCj4gLS0tIC9k
ZXYvbnVsbAo+ICsrKyBiL2xpYi92ZnNjb3JlL3Zub2RlLmMKPiBAQCAtMCwwICsxLDUyMiBAQAo+
ICsvKgo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMDUtMjAwOCwgS29oc3VrZSBPaHRhbmkKPiArICog
QWxsIHJpZ2h0cyByZXNlcnZlZC4KPiArICoKPiArICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cj4gKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwo+ICsgKiBhcmUgbWV0Ogo+ICsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCj4gKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKPiArICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KPiArICogMy4g
TmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgYW55IGNvLWNv
bnRyaWJ1dG9ycwo+ICsgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKPiArICogICAgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCj4gKyAqCj4gKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKPiAr
ICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCj4gKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCj4gKyAqIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFCj4gKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCj4gKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCj4gKyAqIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKQo+ICsgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAo+ICsgKiBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
Cj4gKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YKPiArICogU1VDSCBEQU1BR0UuCj4gKyAqLwo+ICsKPiArLyoK
PiArICogdmZzX3Zub2RlLmMgLSB2bm9kZSBzZXJ2aWNlCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUg
PGxpbWl0cy5oPgo+ICsjaW5jbHVkZSA8dW5pc3RkLmg+Cj4gKyNpbmNsdWRlIDxzdHJpbmcuaD4K
PiArI2luY2x1ZGUgPHN0ZGxpYi5oPgo+ICsjaW5jbHVkZSA8c3RkaW8uaD4KPiArI2luY2x1ZGUg
PGVycm5vLmg+Cj4gKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgo+ICsKPiArI2luY2x1ZGUgPG9zdi9w
cmV4Lmg+Cj4gKyNpbmNsdWRlIDxvc3Yvdm5vZGUuaD4KPiArI2luY2x1ZGUgInZmcy5oIgo+ICsK
PiArZW51bSB2dHlwZSBpZnRvdnRfdGFiWzE2XSA9IHsKPiArCVZOT04sIFZGSUZPLCBWQ0hSLCBW
Tk9OLCBWRElSLCBWTk9OLCBWQkxLLCBWTk9OLAo+ICsJVlJFRywgVk5PTiwgVkxOSywgVk5PTiwg
VlNPQ0ssIFZOT04sIFZOT04sIFZCQUQsCj4gK307Cj4gK2ludCB2dHRvaWZfdGFiWzEwXSA9IHsK
PiArCTAsIFNfSUZSRUcsIFNfSUZESVIsIFNfSUZCTEssIFNfSUZDSFIsIFNfSUZMTkssCj4gKwlT
X0lGU09DSywgU19JRklGTywgU19JRk1ULCBTX0lGTVQKPiArfTsKPiArCj4gKy8qCj4gKyAqIE1l
bW86Cj4gKyAqCj4gKyAqIEZ1bmN0aW9uICAgUmVmIGNvdW50IExvY2sKPiArICogLS0tLS0tLS0t
LSAtLS0tLS0tLS0gLS0tLS0tLS0tLQo+ICsgKiB2bl9sb2NrICAgICAqICAgICAgICBMb2NrCj4g
KyAqIHZuX3VubG9jayAgICogICAgICAgIFVubG9jawo+ICsgKiB2Z2V0ICAgICAgICAxICAgICAg
ICBMb2NrCj4gKyAqIHZwdXQgICAgICAgLTEgICAgICAgIFVubG9jawo+ICsgKiB2cmVmICAgICAg
ICsxICAgICAgICAqCj4gKyAqIHZyZWxlICAgICAgLTEgICAgICAgICoKPiArICovCj4gKwo+ICsj
ZGVmaW5lIFZOT0RFX0JVQ0tFVFMgMzIJCS8qIHNpemUgb2Ygdm5vZGUgaGFzaCB0YWJsZSAqLwo+
ICsKPiArLyoKPiArICogdm5vZGUgdGFibGUuCj4gKyAqIEFsbCBhY3RpdmUgKG9wZW5lZCkgdm5v
ZGVzIGFyZSBzdG9yZWQgb24gdGhpcyBoYXNoIHRhYmxlLgo+ICsgKiBUaGV5IGNhbiBiZSBhY2Nl
c3NlZCBieSBpdHMgcGF0aCBuYW1lLgo+ICsgKi8KPiArc3RhdGljIExJU1RfSEVBRCh2bm9kZV9o
YXNoX2hlYWQsIHZub2RlKSB2bm9kZV90YWJsZVtWTk9ERV9CVUNLRVRTXTsKPiArCj4gKy8qCj4g
KyAqIEdsb2JhbCBsb2NrIHRvIGFjY2VzcyBhbGwgdm5vZGVzIGFuZCB2bm9kZSB0YWJsZS4KPiAr
ICogSWYgYSB2bm9kZSBpcyBhbHJlYWR5IGxvY2tlZCwgdGhlcmUgaXMgbm8gbmVlZCB0bwo+ICsg
KiBsb2NrIHRoaXMgZ2xvYmFsIGxvY2sgdG8gYWNjZXNzIGludGVybmFsIGRhdGEuCj4gKyAqLwo+
ICtzdGF0aWMgbXV0ZXhfdCB2bm9kZV9sb2NrID0gTVVURVhfSU5JVElBTElaRVI7Cj4gKyNkZWZp
bmUgVk5PREVfTE9DSygpCW11dGV4X2xvY2soJnZub2RlX2xvY2spCj4gKyNkZWZpbmUgVk5PREVf
VU5MT0NLKCkJbXV0ZXhfdW5sb2NrKCZ2bm9kZV9sb2NrKQo+ICsjZGVmaW5lIFZOT0RFX09XTkVE
KCkJbXV0ZXhfb3duZWQoJnZub2RlX2xvY2spCj4gKwo+ICsvKgo+ICsgKiBHZXQgdGhlIGhhc2gg
dmFsdWUgZnJvbSB0aGUgbW91bnQgcG9pbnQgYW5kIHBhdGggbmFtZS4KPiArICogWFhYKGhjaCk6
IHJlcGxhY2Ugd2l0aCBhIGJldHRlciBoYXNoIGZvciA2NC1iaXQgcG9pbnRlcnMuCj4gKyAqLwo+
ICtzdGF0aWMgdV9pbnQKPiArdm5faGFzaChzdHJ1Y3QgbW91bnQgKm1wLCB1aW50NjRfdCBpbm8p
Cj4gK3sKPiArCXJldHVybiAoaW5vIF4gKHVuc2lnbmVkIGxvbmcpbXApICYgKFZOT0RFX0JVQ0tF
VFMgLSAxKTsKPiArfQo+ICsKPiArLyoKPiArICogUmV0dXJucyBsb2NrZWQgdm5vZGUgZm9yIHNw
ZWNpZmllZCBtb3VudCBwb2ludCBhbmQgcGF0aC4KPiArICogdm5fbG9jaygpIHdpbGwgaW5jcmVt
ZW50IHRoZSByZWZlcmVuY2UgY291bnQgb2Ygdm5vZGUuCj4gKyAqCj4gKyAqIExvY2tpbmc6IFZO
T0RFX0xPQ0sgbXVzdCBiZSBoZWxkLgo+ICsgKi8KPiArc3RydWN0IHZub2RlICoKPiArdm5fbG9v
a3VwKHN0cnVjdCBtb3VudCAqbXAsIHVpbnQ2NF90IGlubykKPiArewo+ICsJc3RydWN0IHZub2Rl
ICp2cDsKPiArCj4gKwlhc3NlcnQoVk5PREVfT1dORUQoKSk7Cj4gKwlMSVNUX0ZPUkVBQ0godnAs
ICZ2bm9kZV90YWJsZVt2bl9oYXNoKG1wLCBpbm8pXSwgdl9saW5rKSB7Cj4gKwkJaWYgKHZwLT52
X21vdW50ID09IG1wICYmIHZwLT52X2lubyA9PSBpbm8pIHsKPiArCQkJdnAtPnZfcmVmY250Kys7
Cj4gKwkJCW11dGV4X2xvY2soJnZwLT52X2xvY2spOwo+ICsJCQl2cC0+dl9ucmxvY2tzKys7Cj4g
KwkJCXJldHVybiB2cDsKPiArCQl9Cj4gKwl9Cj4gKwlyZXR1cm4gbnVsbHB0cjsJCS8qIG5vdCBm
b3VuZCAqLwo+ICt9Cj4gKwo+ICsjaWZkZWYgREVCVUdfVkZTCj4gK3N0YXRpYyBjb25zdCBjaGFy
ICoKPiArdm5fcGF0aChzdHJ1Y3Qgdm5vZGUgKnZwKQo+ICt7Cj4gKwlzdHJ1Y3QgZGVudHJ5ICpk
cDsKPiArCj4gKwlpZiAoTElTVF9FTVBUWSgmdnAtPnZfbmFtZXMpID09IDEpIHsKPiArCQlyZXR1
cm4gKCIgIik7Cj4gKwl9Cj4gKwlkcCA9IExJU1RfRklSU1QoJnZwLT52X25hbWVzKTsKPiArCXJl
dHVybiAoZHAtPmRfcGF0aCk7Cj4gK30KPiArI2VuZGlmCj4gKwo+ICsvKgo+ICsgKiBMb2NrIHZu
b2RlCj4gKyAqLwo+ICt2b2lkCj4gK3ZuX2xvY2soc3RydWN0IHZub2RlICp2cCkKPiArewo+ICsJ
QVNTRVJUKHZwKTsKPiArCUFTU0VSVCh2cC0+dl9yZWZjbnQgPiAwKTsKPiArCj4gKwltdXRleF9s
b2NrKCZ2cC0+dl9sb2NrKTsKPiArCXZwLT52X25ybG9ja3MrKzsKPiArCURQUklOVEYoVkZTREJf
Vk5PREUsICgidm5fbG9jazogICAlc1xuIiwgdm5fcGF0aCh2cCkpKTsKPiArfQo+ICsKPiArLyoK
PiArICogVW5sb2NrIHZub2RlCj4gKyAqLwo+ICt2b2lkCj4gK3ZuX3VubG9jayhzdHJ1Y3Qgdm5v
ZGUgKnZwKQo+ICt7Cj4gKwlBU1NFUlQodnApOwo+ICsJQVNTRVJUKHZwLT52X3JlZmNudCA+IDAp
Owo+ICsJQVNTRVJUKHZwLT52X25ybG9ja3MgPiAwKTsKPiArCj4gKwl2cC0+dl9ucmxvY2tzLS07
Cj4gKwltdXRleF91bmxvY2soJnZwLT52X2xvY2spOwo+ICsJRFBSSU5URihWRlNEQl9WTk9ERSwg
KCJ2bl9sb2NrOiAgICVzXG4iLCB2bl9wYXRoKHZwKSkpOwo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBB
bGxvY2F0ZSBuZXcgdm5vZGUgZm9yIHNwZWNpZmllZCBwYXRoLgo+ICsgKiBJbmNyZW1lbnQgaXRz
IHJlZmVyZW5jZSBjb3VudCBhbmQgbG9jayBpdC4KPiArICogUmV0dXJucyAxIGlmIHZub2RlIHdh
cyBmb3VuZCBpbiBjYWNoZTsgb3RoZXJ3aXNlIHJldHVybnMgMC4KPiArICovCj4gK2ludAo+ICt2
Z2V0KHN0cnVjdCBtb3VudCAqbXAsIHVpbnQ2NF90IGlubywgc3RydWN0IHZub2RlICoqdnBwKQo+
ICt7Cj4gKwlzdHJ1Y3Qgdm5vZGUgKnZwOwo+ICsJaW50IGVycm9yOwo+ICsKPiArCSp2cHAgPSBu
dWxscHRyOwo+ICsKPiArCURQUklOVEYoVkZTREJfVk5PREUsICgidmdldCAlTEx1XG4iLCBpbm8p
KTsKPiArCj4gKwlWTk9ERV9MT0NLKCk7Cj4gKwo+ICsJdnAgPSB2bl9sb29rdXAobXAsIGlubyk7
Cj4gKwlpZiAodnApIHsKPiArCQlWTk9ERV9VTkxPQ0soKTsKPiArCQkqdnBwID0gdnA7Cj4gKwkJ
cmV0dXJuIDE7Cj4gKwl9Cj4gKwo+ICsJaWYgKCEodnAgPSBuZXcgdm5vZGUoKSkpIHsKPiArCQlW
Tk9ERV9VTkxPQ0soKTsKPiArCQlyZXR1cm4gMDsKPiArCX0KPiArCj4gKwlMSVNUX0lOSVQoJnZw
LT52X25hbWVzKTsKPiArCXZwLT52X2lubyA9IGlubzsKPiArCXZwLT52X21vdW50ID0gbXA7Cj4g
Kwl2cC0+dl9yZWZjbnQgPSAxOwo+ICsJdnAtPnZfb3AgPSBtcC0+bV9vcC0+dmZzX3Zub3BzOwo+
ICsJdnAtPnZfbnJsb2NrcyA9IDA7Cj4gKwo+ICsJLyoKPiArCSAqIFJlcXVlc3QgdG8gYWxsb2Nh
dGUgZnMgc3BlY2lmaWMgZGF0YSBmb3Igdm5vZGUuCj4gKwkgKi8KPiArCWlmICgoZXJyb3IgPSBW
RlNfVkdFVChtcCwgdnApKSAhPSAwKSB7Cj4gKwkJVk5PREVfVU5MT0NLKCk7Cj4gKwkJZGVsZXRl
IHZwOwo+ICsJCXJldHVybiBlcnJvcjsKPiArCX0KPiArCXZmc19idXN5KHZwLT52X21vdW50KTsK
PiArCW11dGV4X2xvY2soJnZwLT52X2xvY2spOwo+ICsJdnAtPnZfbnJsb2NrcysrOwo+ICsKPiAr
CUxJU1RfSU5TRVJUX0hFQUQoJnZub2RlX3RhYmxlW3ZuX2hhc2gobXAsIGlubyldLCB2cCwgdl9s
aW5rKTsKPiArCVZOT0RFX1VOTE9DSygpOwo+ICsKPiArCSp2cHAgPSB2cDsKPiArCj4gKwlyZXR1
cm4gMDsKPiArfQo+ICsKPiArLyoKPiArICogVW5sb2NrIHZub2RlIGFuZCBkZWNyZW1lbnQgaXRz
IHJlZmVyZW5jZSBjb3VudC4KPiArICovCj4gK3ZvaWQKPiArdnB1dChzdHJ1Y3Qgdm5vZGUgKnZw
KQo+ICt7Cj4gKwlBU1NFUlQodnApOwo+ICsJQVNTRVJUKHZwLT52X25ybG9ja3MgPiAwKTsKPiAr
CUFTU0VSVCh2cC0+dl9yZWZjbnQgPiAwKTsKPiArCURQUklOVEYoVkZTREJfVk5PREUsICgidnB1
dDogcmVmPSVkICVzXG4iLCB2cC0+dl9yZWZjbnQsIHZuX3BhdGgodnApKSk7Cj4gKwo+ICsJVk5P
REVfTE9DSygpOwo+ICsJdnAtPnZfcmVmY250LS07Cj4gKwlpZiAodnAtPnZfcmVmY250ID4gMCkg
ewo+ICsJICAgIFZOT0RFX1VOTE9DSygpOwo+ICsJCXZuX3VubG9jayh2cCk7Cj4gKwkJcmV0dXJu
Owo+ICsJfQo+ICsJTElTVF9SRU1PVkUodnAsIHZfbGluayk7Cj4gKwlWTk9ERV9VTkxPQ0soKTsK
PiArCj4gKwkvKgo+ICsJICogRGVhbGxvY2F0ZSBmcyBzcGVjaWZpYyB2bm9kZSBkYXRhCj4gKwkg
Ki8KPiArCWlmICh2cC0+dl9vcC0+dm9wX2luYWN0aXZlKQo+ICsJCVZPUF9JTkFDVElWRSh2cCk7
Cj4gKwl2ZnNfdW5idXN5KHZwLT52X21vdW50KTsKPiArCXZwLT52X25ybG9ja3MtLTsKPiArCUFT
U0VSVCh2cC0+dl9ucmxvY2tzID09IDApOwo+ICsJbXV0ZXhfdW5sb2NrKCZ2cC0+dl9sb2NrKTsK
PiArCWRlbGV0ZSB2cDsKPiArfQo+ICsKPiArLyoKPiArICogSW5jcmVtZW50IHRoZSByZWZlcmVu
Y2UgY291bnQgb24gYW4gYWN0aXZlIHZub2RlLgo+ICsgKi8KPiArdm9pZAo+ICt2cmVmKHN0cnVj
dCB2bm9kZSAqdnApCj4gK3sKPiArCUFTU0VSVCh2cCk7Cj4gKwlBU1NFUlQodnAtPnZfcmVmY250
ID4gMCk7CS8qIE5lZWQgdmdldCAqLwo+ICsKPiArCVZOT0RFX0xPQ0soKTsKPiArCURQUklOVEYo
VkZTREJfVk5PREUsICgidnJlZjogcmVmPSVkXG4iLCB2cC0+dl9yZWZjbnQpKTsKPiArCXZwLT52
X3JlZmNudCsrOwo+ICsJVk5PREVfVU5MT0NLKCk7Cj4gK30KPiArCj4gKy8qCj4gKyAqIERlY3Jl
bWVudCB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIHRoZSB2bm9kZS4KPiArICogQW55IGNvZGUgaW4g
dGhlIHN5c3RlbSB3aGljaCBpcyB1c2luZyB2bm9kZSBzaG91bGQgY2FsbCB2cmVsZSgpCj4gKyAq
IHdoZW4gaXQgaXMgZmluaXNoZWQgd2l0aCB0aGUgdm5vZGUuCj4gKyAqIElmIGNvdW50IGRyb3Bz
IHRvIHplcm8sIGNhbGwgaW5hY3RpdmUgcm91dGluZSBhbmQgcmV0dXJuIHRvIGZyZWVsaXN0Lgo+
ICsgKi8KPiArdm9pZAo+ICt2cmVsZShzdHJ1Y3Qgdm5vZGUgKnZwKQo+ICt7Cj4gKwlBU1NFUlQo
dnApOwo+ICsJQVNTRVJUKHZwLT52X3JlZmNudCA+IDApOwo+ICsKPiArCVZOT0RFX0xPQ0soKTsK
PiArCURQUklOVEYoVkZTREJfVk5PREUsICgidnJlbGU6IHJlZj0lZFxuIiwgdnAtPnZfcmVmY250
KSk7Cj4gKwl2cC0+dl9yZWZjbnQtLTsKPiArCWlmICh2cC0+dl9yZWZjbnQgPiAwKSB7Cj4gKwkJ
Vk5PREVfVU5MT0NLKCk7Cj4gKwkJcmV0dXJuOwo+ICsJfQo+ICsJTElTVF9SRU1PVkUodnAsIHZf
bGluayk7Cj4gKwlWTk9ERV9VTkxPQ0soKTsKPiArCj4gKwkvKgo+ICsJICogRGVhbGxvY2F0ZSBm
cyBzcGVjaWZpYyB2bm9kZSBkYXRhCj4gKwkgKi8KPiArCVZPUF9JTkFDVElWRSh2cCk7Cj4gKwl2
ZnNfdW5idXN5KHZwLT52X21vdW50KTsKPiArCWRlbGV0ZSB2cDsKPiArfQo+ICsKPiArLyoKPiAr
ICogUmVtb3ZlIGFsbCB2bm9kZSBpbiB0aGUgdm5vZGUgdGFibGUgZm9yIHVubW91bnQuCj4gKyAq
Lwo+ICt2b2lkCj4gK3ZmbHVzaChzdHJ1Y3QgbW91bnQgKm1wKQo+ICt7Cj4gK30KPiArCj4gK2lu
dAo+ICt2bl9zdGF0KHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCBzdGF0ICpzdCkKPiArewo+ICsJ
c3RydWN0IHZhdHRyIHZhdHRyOwo+ICsJc3RydWN0IHZhdHRyICp2YXA7Cj4gKwltb2RlX3QgbW9k
ZTsKPiArCWludCBlcnJvcjsKPiArCj4gKwl2YXAgPSAmdmF0dHI7Cj4gKwo+ICsJbWVtc2V0KHN0
LCAwLCBzaXplb2Yoc3RydWN0IHN0YXQpKTsKPiArCj4gKwltZW1zZXQodmFwLCAwLCBzaXplb2Yo
c3RydWN0IHZhdHRyKSk7Cj4gKwo+ICsJZXJyb3IgPSBWT1BfR0VUQVRUUih2cCwgdmFwKTsKPiAr
CWlmIChlcnJvcikKPiArCQlyZXR1cm4gZXJyb3I7Cj4gKwo+ICsJc3QtPnN0X2lubyA9IChpbm9f
dCl2YXAtPnZhX25vZGVpZDsKPiArCXN0LT5zdF9zaXplID0gdmFwLT52YV9zaXplOwo+ICsJbW9k
ZSA9IHZhcC0+dmFfbW9kZTsKPiArCXN3aXRjaCAodnAtPnZfdHlwZSkgewo+ICsJY2FzZSBWUkVH
Ogo+ICsJCW1vZGUgfD0gU19JRlJFRzsKPiArCQlicmVhazsKPiArCWNhc2UgVkRJUjoKPiArCQlt
b2RlIHw9IFNfSUZESVI7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIFZCTEs6Cj4gKwkJbW9kZSB8PSBT
X0lGQkxLOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSBWQ0hSOgo+ICsJCW1vZGUgfD0gU19JRkNIUjsK
PiArCQlicmVhazsKPiArCWNhc2UgVkxOSzoKPiArCQltb2RlIHw9IFNfSUZMTks7Cj4gKwkJYnJl
YWs7Cj4gKwljYXNlIFZTT0NLOgo+ICsJCW1vZGUgfD0gU19JRlNPQ0s7Cj4gKwkJYnJlYWs7Cj4g
KwljYXNlIFZGSUZPOgo+ICsJCW1vZGUgfD0gU19JRklGTzsKPiArCQlicmVhazsKPiArCWRlZmF1
bHQ6Cj4gKwkJcmV0dXJuIEVCQURGOwo+ICsJfTsKPiArCXN0LT5zdF9tb2RlID0gbW9kZTsKPiAr
CXN0LT5zdF9ubGluayA9IHZhcC0+dmFfbmxpbms7Cj4gKwlzdC0+c3RfYmxrc2l6ZSA9IEJTSVpF
Owo+ICsJc3QtPnN0X2Jsb2NrcyA9IHZhcC0+dmFfc2l6ZSAvIFNfQkxLU0laRTsKPiArCXN0LT5z
dF91aWQgPSB2YXAtPnZhX3VpZDsKPiArCXN0LT5zdF9naWQgPSB2YXAtPnZhX2dpZDsKPiArCXN0
LT5zdF9kZXYgPSB2YXAtPnZhX2ZzaWQ7Cj4gKwlpZiAodnAtPnZfdHlwZSA9PSBWQ0hSIHx8IHZw
LT52X3R5cGUgPT0gVkJMSykKPiArCQlzdC0+c3RfcmRldiA9IHZhcC0+dmFfcmRldjsKPiArCj4g
KwlzdC0+c3RfYXRpbSA9IHZhcC0+dmFfYXRpbWU7Cj4gKwlzdC0+c3RfbXRpbSA9IHZhcC0+dmFf
bXRpbWU7Cj4gKwlzdC0+c3RfY3RpbSA9IHZhcC0+dmFfY3RpbWU7Cj4gKwo+ICsJcmV0dXJuIDA7
Cj4gK30KPiArCj4gKy8qCj4gKyAqIFNldCBhY2Nlc3MgYW5kIG1vZGlmaWNhdGlvbiB0aW1lcyBv
ZiB0aGUgdm5vZGUKPiArICovCj4gK2ludAo+ICt2bl9zZXR0aW1lcyhzdHJ1Y3Qgdm5vZGUgKnZw
LCBzdHJ1Y3QgdGltZXNwZWMgdGltZXNbMl0pCj4gK3sKPiArICAgIHN0cnVjdCB2YXR0ciB2YXR0
cjsKPiArICAgIHN0cnVjdCB2YXR0ciAqdmFwOwo+ICsgICAgaW50IGVycm9yOwo+ICsKPiArICAg
IHZhcCA9ICZ2YXR0cjsKPiArICAgIG1lbXNldCh2YXAsIDAsIHNpemVvZihzdHJ1Y3QgdmF0dHIp
KTsKPiArCj4gKyAgICB2YXAtPnZhX2F0aW1lID0gdGltZXNbMF07Cj4gKyAgICB2YXAtPnZhX210
aW1lID0gdGltZXNbMV07Cj4gKyAgICB2YXAtPnZhX21hc2sgPSAoKHRpbWVzWzBdLnR2X25zZWMg
PT0gVVRJTUVfT01JVCkgPyAwIDogQVRfQVRJTUUpCj4gKyAgICAgICAgICAgICAgICAgICAgfCAo
KHRpbWVzWzFdLnR2X25zZWMgPT0gVVRJTUVfT01JVCkgPyAwIDogQVRfTVRJTUUpOwo+ICsgICAg
dm5fbG9jayh2cCk7Cj4gKyAgICBlcnJvciA9IFZPUF9TRVRBVFRSKHZwLCB2YXApOwo+ICsgICAg
dm5fdW5sb2NrKHZwKTsKPiArCj4gKyAgICByZXR1cm4gZXJyb3I7Cj4gK30KPiArCj4gKy8qCj4g
KyAqIFNldCBjaG1vZCBwZXJtaXNzaW9ucyBvbiB0aGUgdm5vZGUuCj4gKyAqLwo+ICtpbnQKPiAr
dm5fc2V0bW9kZShzdHJ1Y3Qgdm5vZGUgKnZwLCBtb2RlX3QgbmV3X21vZGUpCj4gK3sKPiArICAg
IHN0cnVjdCB2YXR0ciB2YXR0cjsKPiArICAgIG1lbXNldCgmdmF0dHIsIDAsIHNpemVvZih2YXR0
cikpOwo+ICsgICAgdmF0dHIudmFfbW9kZSA9IG5ld19tb2RlOwo+ICsgICAgdmF0dHIudmFfbWFz
ayA9IEFUX01PREU7Cj4gKyAgICB2bl9sb2NrKHZwKTsKPiArICAgIHZwLT52X21vZGUgPSBuZXdf
bW9kZTsKPiArICAgIGludCBlcnJvciA9IFZPUF9TRVRBVFRSKHZwLCAmdmF0dHIpOwo+ICsgICAg
dm5fdW5sb2NrKHZwKTsKPiArICAgIHJldHVybiBlcnJvcjsKPiArfQo+ICsKPiArLyoKPiArICog
Q2hlY2sgcGVybWlzc2lvbiBvbiB2bm9kZSBwb2ludGVyLgo+ICsgKi8KPiAraW50Cj4gK3ZuX2Fj
Y2VzcyhzdHJ1Y3Qgdm5vZGUgKnZwLCBpbnQgZmxhZ3MpCj4gK3sKPiArCWludCBlcnJvciA9IDA7
Cj4gKwo+ICsJaWYgKChmbGFncyAmIFZFWEVDKSAmJiAodnAtPnZfbW9kZSAmIDAxMTEpID09IDAp
IHsKPiArCQllcnJvciA9IEVBQ0NFUzsKPiArCQlnb3RvIG91dDsKPiArCX0KPiArCWlmICgoZmxh
Z3MgJiBWUkVBRCkgJiYgKHZwLT52X21vZGUgJiAwNDQ0KSA9PSAwKSB7Cj4gKwkJZXJyb3IgPSBF
QUNDRVM7Cj4gKwkJZ290byBvdXQ7Cj4gKwl9Cj4gKwlpZiAoZmxhZ3MgJiBWV1JJVEUpIHsKPiAr
CQlpZiAodnAtPnZfbW91bnQtPm1fZmxhZ3MgJiBNTlRfUkRPTkxZKSB7Cj4gKwkJCWVycm9yID0g
RVJPRlM7Cj4gKwkJCWdvdG8gb3V0Owo+ICsJCX0KPiArCQlpZiAoKHZwLT52X21vZGUgJiAwMjIy
KSA9PSAwKSB7Cj4gKwkJCWVycm9yID0gRUFDQ0VTOwo+ICsJCQlnb3RvIG91dDsKPiArCQl9Cj4g
Kwl9Cj4gKyBvdXQ6Cj4gKwlyZXR1cm4gZXJyb3I7Cj4gK30KPiArCj4gKyNpZmRlZiBERUJVR19W
RlMKPiArLyoKPiArICogRHVtcCBhbGwgYWxsIHZub2RlLgo+ICsgKi8KPiArdm9pZAo+ICt2bm9k
ZV9kdW1wKHZvaWQpCj4gK3sKPiArCWludCBpOwo+ICsJc3RydWN0IHZub2RlICp2cDsKPiArCXN0
cnVjdCBtb3VudCAqbXA7Cj4gKwljaGFyIHR5cGVbXVs2XSA9IHsgIlZOT04gIiwgIlZSRUcgIiwg
IlZESVIgIiwgIlZCTEsgIiwgIlZDSFIgIiwKPiArCQkJICAgIlZMTksgIiwgIlZTT0NLIiwgIlZG
SUZPIiB9Owo+ICsKPiArCVZOT0RFX0xPQ0soKTsKPiArCWtwcmludGYoIkR1bXAgdm5vZGVcbiIp
Owo+ICsJa3ByaW50ZigiIHZub2RlICAgIG1vdW50ICAgIHR5cGUgIHJlZmNudCBibGtubyAgICBw
YXRoXG4iKTsKPiArCWtwcmludGYoIiAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0t
LS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKPiArCj4gKwlmb3IgKGkg
PSAwOyBpIDwgVk5PREVfQlVDS0VUUzsgaSsrKSB7Cj4gKwkgICAgICAgIExJU1RfRk9SRUFDSCh2
cCwgJnZub2RlX3RhYmxlW2ldLCB2X2xpbmspIHsKPiArCQkJbXAgPSB2cC0+dl9tb3VudDsKPiAr
Cj4gKwkJCWtwcmludGYoIiAlMDh4ICUwOHggJXMgJTZkICU4ZCAlcyVzXG4iLCAodV9sb25nKXZw
LAo+ICsJCQkJKHVfbG9uZyltcCwgdHlwZVt2cC0+dl90eXBlXSwgdnAtPnZfcmVmY250LAo+ICsJ
CQkJKHN0cmxlbihtcC0+bV9wYXRoKSA9PSAxKSA/ICJcMCIgOiBtcC0+bV9wYXRoLAo+ICsJCQkJ
dm5fcGF0aCh2cCkpOwo+ICsJCX0KPiArCX0KPiArCWtwcmludGYoIlxuIik7Cj4gKwlWTk9ERV9V
TkxPQ0soKTsKPiArfQo+ICsjZW5kaWYKPiArCj4gK2ludAo+ICt2b3BfbnVsbG9wKHZvaWQpCj4g
K3sKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtpbnQKPiArdm9wX2VpbnZhbCh2b2lkKQo+ICt7
Cj4gKwlyZXR1cm4gRUlOVkFMOwo+ICt9Cj4gKwo+ICtpbnQKPiArdm9wX2VwZXJtKHZvaWQpCj4g
K3sKPiArCXJldHVybiBFUEVSTTsKPiArfQo+ICsKPiAraW50Cj4gK3ZvcF9lcm9mcyh2b2lkKQo+
ICt7Cj4gKwlyZXR1cm4gRVJPRlM7Cj4gK30KPiArCj4gKy8qCj4gKyAqIHZub2RlX2luaXQoKSBp
cyBjYWxsZWQgb25jZSAoZnJvbSB2ZnNfaW5pdCkKPiArICogaW4gaW5pdGlhbGl6YXRpb24uCj4g
KyAqLwo+ICt2b2lkCj4gK3Zub2RlX2luaXQodm9pZCkKPiArewo+ICsJaW50IGk7Cj4gKwo+ICsJ
Zm9yIChpID0gMDsgaSA8IFZOT0RFX0JVQ0tFVFM7IGkrKykKPiArCQlMSVNUX0lOSVQoJnZub2Rl
X3RhYmxlW2ldKTsKPiArfQo+ICsKPiArdm9pZCB2bl9hZGRfbmFtZShzdHJ1Y3Qgdm5vZGUgKnZw
LCBzdHJ1Y3QgZGVudHJ5ICpkcCkKPiArewo+ICsJdm5fbG9jayh2cCk7Cj4gKwlMSVNUX0lOU0VS
VF9IRUFEKCZ2cC0+dl9uYW1lcywgZHAsIGRfbmFtZXNfbGluayk7Cj4gKwl2bl91bmxvY2sodnAp
Owo+ICt9Cj4gKwo+ICt2b2lkIHZuX2RlbF9uYW1lKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCBk
ZW50cnkgKmRwKQo+ICt7Cj4gKwl2bl9sb2NrKHZwKTsKPiArCUxJU1RfUkVNT1ZFKGRwLCBkX25h
bWVzX2xpbmspOwo+ICsJdm5fdW5sb2NrKHZwKTsKPiArfQo+ICsKPiAKCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxp
c3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJv
amVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Feb 06 16:50:13 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 06 Feb 2019 16:50:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grQOr-0005Nd-14; Wed, 06 Feb 2019 16:50:13 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=tAI7=QN=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1grQOq-0005NX-MI
 for minios-devel@lists.xen.org; Wed, 06 Feb 2019 16:50:12 +0000
X-Inumbo-ID: 41bd2f7e-2a2f-11e9-b9ee-db15743d1fa7
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 41bd2f7e-2a2f-11e9-b9ee-db15743d1fa7;
 Wed, 06 Feb 2019 16:50:07 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 49E7AF205A;
 Wed,  6 Feb 2019 17:50:06 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 6nHEG5MkABex; Wed,  6 Feb 2019 17:50:06 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 17A48F2023
 for <minios-devel@lists.xen.org>; Wed,  6 Feb 2019 17:50:04 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 6 Feb 2019 17:50:03
 +0100
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
 <20190204143739.29249-2-yuri.volchkov@neclab.eu>
 <540c8472-d0a7-f8a4-8cc3-8b4290df3f34@neclab.eu>
 <tza4s2bm3ox4ok.fsf@N-1128.office.hd>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <425973a2-5d4a-bbb0-98c4-7158b543d3e3@neclab.eu>
Date: Wed, 6 Feb 2019 17:50:03 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <tza4s2bm3ox4ok.fsf@N-1128.office.hd>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 01/23] include/uk: introduce
 __weak_alias macro
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Simon.kuenzer@neclab.eu
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gWXVyaSwKClBsZWFzZSBmaW5kIHRoZSBjb21tZW50IGlubGluZS4KClRoYW5rcyAmIFJl
Z2FyZHMKU2hhcmFuCgoKT24gMi82LzE5IDU6MjcgUE0sIFl1cmkgVm9sY2hrb3Ygd3JvdGU6Cj4g
SGksCj4gCj4gd2VsbCwgdGhpcyBpcyBub3QgYSBjb3JyZWN0IGJlaGF2aW9yIG9mIGdjYy4gSSBk
b24ndCBsaWtlIHRoZSBpZGVhIG9mCj4gcG9sbHV0aW5nIGJ1aWxkIGxvZyB3aXRoIHdhcm5pbmdz
IGFib3V0IG5vdCB5b3VyIHByb2JsZW0gYW5kIHdoaWNoIHlvdQo+IGNhbiBub3QgZml4LiBBbmQg
SSBkb24ndCBsaWtlIHRoZSBpZGVhIG9mIGRpdGNoaW5nIHNvbWV0aGluZyBhcwo+IGVzc2VudGlh
bCBhcyB3ZWFrIGFsaWFzaW5nLgpJIGFncmVlLgoKPiAKPiBBbm90aGVyIHRoaW5nLCBMVE8gcmVz
b2x2ZXMgYSB3ZWFrIHN5bWJvbCBvbmx5IGlmIGl0IGlzIHJlZmVyZW5jZWQKPiBpbnNpZGUgYSBs
aWJyYXJ5LiBUaGlzIGlzIGV4YWN0bHkgdGhlIGlkZWEgYmVoaW5kIHRoZSB3b3JrYXJvdW5kIGZv
cgo+IHRoaXMgIm11bHRpcGxlIGRlZmluaXRpb24gb2YgYG1haW4nIiBwYXRjaCB5b3UgcmV2aWV3
ZWQgZWFybGllcgo+IHRvZGF5LiBZZXMgeW91IGNvdWxkIHBlcmhhcHMgY2hlY2sgaWYgdGhpcyBp
cyB0aGUgY2FzZSwgYW5kIHByb2R1Y2UgdGhlCj4gd2FybmluZyBvbmx5IGlmIDEpIExUTyBpcyBl
bmFibGVkIDIpIHRoZSB3ZWFrIHN5bWJvbCBpcyByZWZlcmVuY2VkCj4gaW5zaWRlIHRoZSBsaWJy
YXJ5IGl0IHdhcyBkZWZpbmVkLiBJIHRoaW5rIHRoaXMgaXMgd2F5IHRvbyBjb21wbGV4IGZvcgo+
IHRoZSBvdXRjb21lLgpJIHdhcyByZWZlcnJpbmcgdG8gdGhlIHVzZSBjYXNlIHdoZXJlIHRoZSBm
dW5jdGlvbiBpcyB1c2VkIHdpdGhpbiB0aGUgCmxpYnJhcnkuIEkgd2FzIG1vcmUgaW4gZmF2b3Ig
b2YgYWRkaW5nIGEgY29kZS1jb21tZW50IHdpdGggYSAiTk9URToiCm1lbnRpb25pbmcgYWJvdXQg
dGhlIGJ1Zy4gSnVzdCB0byByZW1pbmQgdXMgb2YgdGhpcyBidWcgaW4gTFRPLgoKPiAKPiAtIEJS
LCBZdXJpLgo+IAo+IFNoYXJhbiBTYW50aGFuYW0gPHNoYXJhbi5zYW50aGFuYW1AbmVjbGFiLmV1
PiB3cml0ZXM6Cj4gCj4+IEhlbGxvIFl1cmksCj4+Cj4+IFRoaXMgcGF0Y2ggZnVuY3Rpb25hbGx5
IHNlZW1zIGZpbmUuCj4+Cj4+IEkgaGF2ZSBhIHF1ZXN0aW9uIHdpdGggcmVnYXJkIHRvIGl0cyB1
c2FnZSBlc3BlY2lhbGx5IHdpdGggTFRPIGVuYWJsZWQuCj4+IFRoZSBsaWJyYXJ5IHdoaWNoIHVz
ZXMgdGhpcyBtYWNybyBzaG91bGQgbm90IHVzZSB0aGUgZnVuY3Rpb24gaW50ZXJuYWxseQo+PiBh
cyBMVE8gd291bGQgaW50ZXJuYWxseSByZXNvbHZlIGl0IHdpdGggdGhlIHdlYWsgc3ltYm9sLiBJ
IHRoaW5rIGl0Cj4+IHdvdWxkIGJlIHdpc2UgdG8gYWRkIGEgY29tbWVudCB0byB3YXJuIHRoZSB1
c2VycyBvZiB0aGUgbWFjcm8gYWJvdXQgaXQuCj4+Cj4+IFRoYW5rcyAmIFJlZ2FyZHMKPj4gU2hh
cmFuCj4+Cj4+IE9uIDIvNC8xOSAzOjM2IFBNLCBZdXJpIFZvbGNoa292IHdyb3RlOgo+Pj4gU2ln
bmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Cj4+PiAt
LS0KPj4+ICAgIGluY2x1ZGUvdWsvZXNzZW50aWFscy5oIHwgNCArKysrCj4+PiAgICAxIGZpbGUg
Y2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCj4+Pgo+Pj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWsv
ZXNzZW50aWFscy5oIGIvaW5jbHVkZS91ay9lc3NlbnRpYWxzLmgKPj4+IGluZGV4IDNjMTZlMzA4
Li5kYzFkNjliMCAxMDA2NDQKPj4+IC0tLSBhL2luY2x1ZGUvdWsvZXNzZW50aWFscy5oCj4+PiAr
KysgYi9pbmNsdWRlL3VrL2Vzc2VudGlhbHMuaAo+Pj4gQEAgLTc2LDYgKzc2LDEwIEBAIGV4dGVy
biAiQyIgewo+Pj4gICAgI2lmbmRlZiBfX2FsaWduCj4+PiAgICAjZGVmaW5lIF9fYWxpZ24oYnl0
ZXMpICAgICAgICAgX19hdHRyaWJ1dGVfXygoYWxpZ25lZChieXRlcykpKQo+Pj4gICAgI2VuZGlm
Cj4+PiArI2lmbmRlZiBfX3dlYWtfYWxpYXMKPj4+ICsjZGVmaW5lIF9fd2Vha19hbGlhcyhvbGQs
IG5ldykgXAo+Pj4gKwlleHRlcm4gX190eXBlb2Yob2xkKSBuZXcgX19hdHRyaWJ1dGVfXygod2Vh
aywgYWxpYXMoI29sZCkpKQo+Pj4gKyNlbmRpZgo+Pj4gICAgCj4+PiAgICAvKioKPj4+ICAgICAg
KiBNYXJrIGEgZnVuY3Rpb24gYXMgY29uc3RydWN0b3IKPj4+Cj4gCgpfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0
Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2pl
Y3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Feb 06 17:25:48 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 06 Feb 2019 17:25:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grQxH-0008Jp-FM; Wed, 06 Feb 2019 17:25:47 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=tAI7=QN=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1grQxF-0008Ij-Sn
 for minios-devel@lists.xen.org; Wed, 06 Feb 2019 17:25:45 +0000
X-Inumbo-ID: 37d18c9e-2a34-11e9-b30d-abdafc425640
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 37d18c9e-2a34-11e9-b30d-abdafc425640;
 Wed, 06 Feb 2019 17:25:38 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id D4B96F205A;
 Wed,  6 Feb 2019 18:25:36 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id Oxe1-Zh0-LGv; Wed,  6 Feb 2019 18:25:36 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 66396F2023
 for <minios-devel@lists.xen.org>; Wed,  6 Feb 2019 18:25:34 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 6 Feb 2019 18:25:34
 +0100
To: <minios-devel@lists.xen.org>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
 <20190204143739.29249-6-yuri.volchkov@neclab.eu>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <6870555a-a5f1-027a-3480-8ca07e36dea5@neclab.eu>
Date: Wed, 6 Feb 2019 18:25:33 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190204143739.29249-6-yuri.volchkov@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 05/23] lib/vfscore: tabify
 imported vfs code
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Simon.kuenzer@neclab.eu, Yuri Volchkov <yuri.volchkov@neclab.eu>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gWXVyaSwKClRoZXJlIGFyZSBzb21lIHBsYWNlIHdoZXJlIHRhYnMgYW5kIHNwYWNlIGFy
ZSBjYXVzaW5nIGNoZWNrcGF0Y2ggZXJyb3IgCmFuZCB3YXJuaW5nLiBQbGVhc2UgZmluZCB0aGVt
IGlubGluZS4KClRoYW5rcyAmIFJlZ2FyZHMKU2hhcmFuCgpPbiAyLzQvMTkgMzozNiBQTSwgWXVy
aSBWb2xjaGtvdiB3cm90ZToKPiBUbyBjb21wbHkgd2l0aCBVbmlrcmFmdCBjb2Rpbmcgc3R5bGUs
IGluZGVudHMgbXVzdCBiZSB0YWJzLCBub3QKPiBzcGFjZXMuIEltcG9ydGVkIGNvZGUgd2FzIGEg
bWl4dHVyZSBvZiBib3RoLgo+IAo+IFNpZ25lZC1vZmYtYnk6IFl1cmkgVm9sY2hrb3YgPHl1cmku
dm9sY2hrb3ZAbmVjbGFiLmV1Pgo+IC0tLQo+ICAgbGliL3Zmc2NvcmUvZGVudHJ5LmMgICAgICAg
ICAgICAgICAgIHwgIDI2OCArLS0KPiAgIGxpYi92ZnNjb3JlL2ZvcHMuYyAgICAgICAgICAgICAg
ICAgICB8ICAgMzIgKy0KPiAgIGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9kZW50cnkuaCB8
ICAgIDQgKy0KPiAgIGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9tb3VudC5oICB8ICAgIDgg
Ky0KPiAgIGxpYi92ZnNjb3JlL2xvb2t1cC5jICAgICAgICAgICAgICAgICB8ICA1NTQgKystLS0K
PiAgIGxpYi92ZnNjb3JlL21haW4uYyAgICAgICAgICAgICAgICAgICB8IDI4NDQgKysrKysrKysr
KysrKy0tLS0tLS0tLS0tLS0KPiAgIGxpYi92ZnNjb3JlL21vdW50LmMgICAgICAgICAgICAgICAg
ICB8ICA1ODAgKysrLS0tCj4gICBsaWIvdmZzY29yZS9zeXNjYWxscy5jICAgICAgICAgICAgICAg
fCAgNDY0ICsrLS0tCj4gICBsaWIvdmZzY29yZS90YXNrLmMgICAgICAgICAgICAgICAgICAgfCAg
IDEwICstCj4gICBsaWIvdmZzY29yZS92ZnMuaCAgICAgICAgICAgICAgICAgICAgfCAgICAyICst
Cj4gICBsaWIvdmZzY29yZS92bm9kZS5jICAgICAgICAgICAgICAgICAgfCAgIDUwICstCj4gICAx
MSBmaWxlcyBjaGFuZ2VkLCAyNDA4IGluc2VydGlvbnMoKyksIDI0MDggZGVsZXRpb25zKC0pCj4g
Cj4gZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2RlbnRyeS5jIGIvbGliL3Zmc2NvcmUvZGVudHJ5
LmMKPiBpbmRleCBmYWNkOWVhYS4uYzJmMjA5YjIgMTAwNjQ0Cj4gLS0tIGEvbGliL3Zmc2NvcmUv
ZGVudHJ5LmMKPiArKysgYi9saWIvdmZzY29yZS9kZW50cnkuYwo+IEBAIC01NSwxODAgKzU1LDE4
MCBAQCBzdGF0aWMgbXV0ZXggZGVudHJ5X2hhc2hfbG9jazsKPiAgIHN0YXRpYyB1X2ludAo+ICAg
ZGVudHJ5X2hhc2goc3RydWN0IG1vdW50ICptcCwgY29uc3QgY2hhciAqcGF0aCkKPiAgIHsKPiAt
ICAgIHVfaW50IHZhbCA9IDA7Cj4gLQo+IC0gICAgaWYgKHBhdGgpIHsKPiAtICAgICAgICB3aGls
ZSAoKnBhdGgpIHsKPiAtICAgICAgICAgICAgdmFsID0gKCh2YWwgPDwgNSkgKyB2YWwpICsgKnBh
dGgrKzsKPiAtICAgICAgICB9Cj4gLSAgICB9Cj4gLSAgICByZXR1cm4gKHZhbCBeICh1bnNpZ25l
ZCBsb25nKSBtcCkgJiAoREVOVFJZX0JVQ0tFVFMgLSAxKTsKPiArCXVfaW50IHZhbCA9IDA7Cj4g
Kwo+ICsJaWYgKHBhdGgpIHsKPiArCQl3aGlsZSAoKnBhdGgpIHsKPiArCQkJdmFsID0gKCh2YWwg
PDwgNSkgKyB2YWwpICsgKnBhdGgrKzsKPiArCQl9Cj4gKwl9Cj4gKwlyZXR1cm4gKHZhbCBeICh1
bnNpZ25lZCBsb25nKSBtcCkgJiAoREVOVFJZX0JVQ0tFVFMgLSAxKTsKPiAgIH0KPiAgIAo+ICAg
Cj4gICBzdHJ1Y3QgZGVudHJ5ICoKPiAgIGRlbnRyeV9hbGxvYyhzdHJ1Y3QgZGVudHJ5ICpwYXJl
bnRfZHAsIHN0cnVjdCB2bm9kZSAqdnAsIGNvbnN0IGNoYXIgKnBhdGgpCj4gICB7Cj4gLSAgICBz
dHJ1Y3QgbW91bnQgKm1wID0gdnAtPnZfbW91bnQ7Cj4gLSAgICBzdHJ1Y3QgZGVudHJ5ICpkcCA9
IChkZW50cnkqKWNhbGxvYyhzaXplb2YoKmRwKSwgMSk7Cj4gLQo+IC0gICAgaWYgKCFkcCkgewo+
IC0gICAgICAgIHJldHVybiBudWxscHRyOwo+IC0gICAgfQo+IC0KPiAtICAgIHZyZWYodnApOwo+
IC0KPiAtICAgIGRwLT5kX3JlZmNudCA9IDE7Cj4gLSAgICBkcC0+ZF92bm9kZSA9IHZwOwo+IC0g
ICAgZHAtPmRfbW91bnQgPSBtcDsKPiAtICAgIGRwLT5kX3BhdGggPSBzdHJkdXAocGF0aCk7Cj4g
LSAgICBMSVNUX0lOSVQoJmRwLT5kX2NoaWxkcmVuKTsKPiAtCj4gLSAgICBpZiAocGFyZW50X2Rw
KSB7Cj4gLSAgICAgICAgZHJlZihwYXJlbnRfZHApOwo+IC0gICAgICAgIFdJVEhfTE9DSyhwYXJl
bnRfZHAtPmRfbG9jaykgewo+IC0gICAgICAgICAgICAvLyBJbnNlcnQgZHAgaW50byBpdHMgcGFy
ZW50J3MgY2hpbGRyZW4gbGlzdC4KPiAtICAgICAgICAgICAgTElTVF9JTlNFUlRfSEVBRCgmcGFy
ZW50X2RwLT5kX2NoaWxkcmVuLCBkcCwgZF9jaGlsZHJlbl9saW5rKTsKPiAtICAgICAgICB9Cj4g
LSAgICB9Cj4gLSAgICBkcC0+ZF9wYXJlbnQgPSBwYXJlbnRfZHA7Cj4gLQo+IC0gICAgdm5fYWRk
X25hbWUodnAsIGRwKTsKPiAtCj4gLSAgICBtdXRleF9sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsK
PiAtICAgIExJU1RfSU5TRVJUX0hFQUQoJmRlbnRyeV9oYXNoX3RhYmxlW2RlbnRyeV9oYXNoKG1w
LCBwYXRoKV0sIGRwLCBkX2xpbmspOwo+IC0gICAgbXV0ZXhfdW5sb2NrKCZkZW50cnlfaGFzaF9s
b2NrKTsKPiAtICAgIHJldHVybiBkcDsKPiArCXN0cnVjdCBtb3VudCAqbXAgPSB2cC0+dl9tb3Vu
dDsKPiArCXN0cnVjdCBkZW50cnkgKmRwID0gKGRlbnRyeSopY2FsbG9jKHNpemVvZigqZHApLCAx
KTsKPiArCj4gKwlpZiAoIWRwKSB7Cj4gKwkJcmV0dXJuIG51bGxwdHI7Cj4gKwl9Cj4gKwo+ICsJ
dnJlZih2cCk7Cj4gKwo+ICsJZHAtPmRfcmVmY250ID0gMTsKPiArCWRwLT5kX3Zub2RlID0gdnA7
Cj4gKwlkcC0+ZF9tb3VudCA9IG1wOwo+ICsJZHAtPmRfcGF0aCA9IHN0cmR1cChwYXRoKTsKPiAr
CUxJU1RfSU5JVCgmZHAtPmRfY2hpbGRyZW4pOwo+ICsKPiArCWlmIChwYXJlbnRfZHApIHsKPiAr
CQlkcmVmKHBhcmVudF9kcCk7Cj4gKwkJV0lUSF9MT0NLKHBhcmVudF9kcC0+ZF9sb2NrKSB7Cj4g
KwkJCS8vIEluc2VydCBkcCBpbnRvIGl0cyBwYXJlbnQncyBjaGlsZHJlbiBsaXN0Lgo+ICsJCQlM
SVNUX0lOU0VSVF9IRUFEKCZwYXJlbnRfZHAtPmRfY2hpbGRyZW4sIGRwLCBkX2NoaWxkcmVuX2xp
bmspOwo+ICsJCX0KPiArCX0KPiArCWRwLT5kX3BhcmVudCA9IHBhcmVudF9kcDsKPiArCj4gKwl2
bl9hZGRfbmFtZSh2cCwgZHApOwo+ICsKPiArCW11dGV4X2xvY2soJmRlbnRyeV9oYXNoX2xvY2sp
Owo+ICsJTElTVF9JTlNFUlRfSEVBRCgmZGVudHJ5X2hhc2hfdGFibGVbZGVudHJ5X2hhc2gobXAs
IHBhdGgpXSwgZHAsIGRfbGluayk7Cj4gKwltdXRleF91bmxvY2soJmRlbnRyeV9oYXNoX2xvY2sp
Owo+ICsJcmV0dXJuIGRwOwo+ICAgfTsKPiAgIAo+ICAgc3RydWN0IGRlbnRyeSAqCj4gICBkZW50
cnlfbG9va3VwKHN0cnVjdCBtb3VudCAqbXAsIGNoYXIgKnBhdGgpCj4gICB7Cj4gLSAgICBzdHJ1
Y3QgZGVudHJ5ICpkcDsKPiAtCj4gLSAgICBtdXRleF9sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsK
PiAtICAgIExJU1RfRk9SRUFDSChkcCwgJmRlbnRyeV9oYXNoX3RhYmxlW2RlbnRyeV9oYXNoKG1w
LCBwYXRoKV0sIGRfbGluaykgewo+IC0gICAgICAgIGlmIChkcC0+ZF9tb3VudCA9PSBtcCAmJiAh
c3RybmNtcChkcC0+ZF9wYXRoLCBwYXRoLCBQQVRIX01BWCkpIHsKPiAtICAgICAgICAgICAgZHAt
PmRfcmVmY250Kys7Cj4gLSAgICAgICAgICAgIG11dGV4X3VubG9jaygmZGVudHJ5X2hhc2hfbG9j
ayk7Cj4gLSAgICAgICAgICAgIHJldHVybiBkcDsKPiAtICAgICAgICB9Cj4gLSAgICB9Cj4gLSAg
ICBtdXRleF91bmxvY2soJmRlbnRyeV9oYXNoX2xvY2spOwo+IC0gICAgcmV0dXJuIG51bGxwdHI7
ICAgICAgICAgICAgICAgIC8qIG5vdCBmb3VuZCAqLwo+ICsJc3RydWN0IGRlbnRyeSAqZHA7Cj4g
Kwo+ICsJbXV0ZXhfbG9jaygmZGVudHJ5X2hhc2hfbG9jayk7Cj4gKwlMSVNUX0ZPUkVBQ0goZHAs
ICZkZW50cnlfaGFzaF90YWJsZVtkZW50cnlfaGFzaChtcCwgcGF0aCldLCBkX2xpbmspIHsKPiAr
CQlpZiAoZHAtPmRfbW91bnQgPT0gbXAgJiYgIXN0cm5jbXAoZHAtPmRfcGF0aCwgcGF0aCwgUEFU
SF9NQVgpKSB7Cj4gKwkJCWRwLT5kX3JlZmNudCsrOwo+ICsJCQltdXRleF91bmxvY2soJmRlbnRy
eV9oYXNoX2xvY2spOwo+ICsJCQlyZXR1cm4gZHA7Cj4gKwkJfQo+ICsJfQo+ICsJbXV0ZXhfdW5s
b2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKPiArCXJldHVybiBudWxscHRyOyAgICAgICAgICAgICAg
ICAvKiBub3QgZm91bmQgKi8KPiAgIH0KPiAgIAo+ICAgc3RhdGljIHZvaWQgZGVudHJ5X2NoaWxk
cmVuX3JlbW92ZShzdHJ1Y3QgZGVudHJ5ICpkcCkKPiAgIHsKPiAtICAgIHN0cnVjdCBkZW50cnkg
KmVudHJ5ID0gbnVsbHB0cjsKPiAtCj4gLSAgICBXSVRIX0xPQ0soZHAtPmRfbG9jaykgewo+IC0g
ICAgICAgIExJU1RfRk9SRUFDSChlbnRyeSwgJmRwLT5kX2NoaWxkcmVuLCBkX2NoaWxkcmVuX2xp
bmspIHsKPiAtICAgICAgICAgICAgQVNTRVJUKGVudHJ5KTsKPiAtICAgICAgICAgICAgQVNTRVJU
KGVudHJ5LT5kX3JlZmNudCA+IDApOwo+IC0gICAgICAgICAgICBMSVNUX1JFTU9WRShlbnRyeSwg
ZF9saW5rKTsKPiAtICAgICAgICB9Cj4gLSAgICB9Cj4gKwlzdHJ1Y3QgZGVudHJ5ICplbnRyeSA9
IG51bGxwdHI7Cj4gKwo+ICsJV0lUSF9MT0NLKGRwLT5kX2xvY2spIHsKPiArCQlMSVNUX0ZPUkVB
Q0goZW50cnksICZkcC0+ZF9jaGlsZHJlbiwgZF9jaGlsZHJlbl9saW5rKSB7Cj4gKwkJCUFTU0VS
VChlbnRyeSk7Cj4gKwkJCUFTU0VSVChlbnRyeS0+ZF9yZWZjbnQgPiAwKTsKPiArCQkJTElTVF9S
RU1PVkUoZW50cnksIGRfbGluayk7Cj4gKwkJfQo+ICsJfQo+ICAgfQo+ICAgCj4gICB2b2lkCj4g
ICBkZW50cnlfbW92ZShzdHJ1Y3QgZGVudHJ5ICpkcCwgc3RydWN0IGRlbnRyeSAqcGFyZW50X2Rw
LCBjaGFyICpwYXRoKQo+ICAgewo+IC0gICAgc3RydWN0IGRlbnRyeSAqb2xkX3BkcCA9IGRwLT5k
X3BhcmVudDsKPiAtICAgIGNoYXIgKm9sZF9wYXRoID0gZHAtPmRfcGF0aDsKPiAtCj4gLSAgICBp
ZiAob2xkX3BkcCkgewo+IC0gICAgICAgIFdJVEhfTE9DSyhvbGRfcGRwLT5kX2xvY2spIHsKPiAt
ICAgICAgICAgICAgLy8gUmVtb3ZlIGRwIGZyb20gaXRzIG9sZCBwYXJlbnQncyBjaGlsZHJlbiBs
aXN0Lgo+IC0gICAgICAgICAgICBMSVNUX1JFTU9WRShkcCwgZF9jaGlsZHJlbl9saW5rKTsKPiAt
ICAgICAgICB9Cj4gLSAgICB9Cj4gLQo+IC0gICAgaWYgKHBhcmVudF9kcCkgewo+IC0gICAgICAg
IGRyZWYocGFyZW50X2RwKTsKPiAtICAgICAgICBXSVRIX0xPQ0socGFyZW50X2RwLT5kX2xvY2sp
IHsKPiAtICAgICAgICAgICAgLy8gSW5zZXJ0IGRwIGludG8gaXRzIG5ldyBwYXJlbnQncyBjaGls
ZHJlbiBsaXN0Lgo+IC0gICAgICAgICAgICBMSVNUX0lOU0VSVF9IRUFEKCZwYXJlbnRfZHAtPmRf
Y2hpbGRyZW4sIGRwLCBkX2NoaWxkcmVuX2xpbmspOwo+IC0gICAgICAgIH0KPiAtICAgIH0KPiAt
Cj4gLSAgICBXSVRIX0xPQ0soZGVudHJ5X2hhc2hfbG9jaykgewo+IC0gICAgICAgIC8vIFJlbW92
ZSBhbGwgZHAncyBjaGlsZCBkZW50cmllcyBmcm9tIHRoZSBoYXNodGFibGUuCj4gLSAgICAgICAg
ZGVudHJ5X2NoaWxkcmVuX3JlbW92ZShkcCk7Cj4gLSAgICAgICAgLy8gUmVtb3ZlIGRwIHdpdGgg
b3V0ZGF0ZWQgaGFzaCBpbmZvIGZyb20gdGhlIGhhc2h0YWJsZS4KPiAtICAgICAgICBMSVNUX1JF
TU9WRShkcCwgZF9saW5rKTsKPiAtICAgICAgICAvLyBVcGRhdGUgZHAuCj4gLSAgICAgICAgZHAt
PmRfcGF0aCA9IHN0cmR1cChwYXRoKTsKPiAtICAgICAgICBkcC0+ZF9wYXJlbnQgPSBwYXJlbnRf
ZHA7Cj4gLSAgICAgICAgLy8gSW5zZXJ0IGRwIHVwZGF0ZWQgaGFzaCBpbmZvIGludG8gdGhlIGhh
c2h0YWJsZS4KPiAtICAgICAgICBMSVNUX0lOU0VSVF9IRUFEKCZkZW50cnlfaGFzaF90YWJsZVtk
ZW50cnlfaGFzaChkcC0+ZF9tb3VudCwgcGF0aCldLAo+IC0gICAgICAgICAgICBkcCwgZF9saW5r
KTsKPiAtICAgIH0KPiAtCj4gLSAgICBpZiAob2xkX3BkcCkgewo+IC0gICAgICAgIGRyZWxlKG9s
ZF9wZHApOwo+IC0gICAgfQo+IC0KPiAtICAgIGZyZWUob2xkX3BhdGgpOwo+ICsJc3RydWN0IGRl
bnRyeSAqb2xkX3BkcCA9IGRwLT5kX3BhcmVudDsKPiArCWNoYXIgKm9sZF9wYXRoID0gZHAtPmRf
cGF0aDsKPiArCj4gKwlpZiAob2xkX3BkcCkgewo+ICsJCVdJVEhfTE9DSyhvbGRfcGRwLT5kX2xv
Y2spIHsKPiArCQkJLy8gUmVtb3ZlIGRwIGZyb20gaXRzIG9sZCBwYXJlbnQncyBjaGlsZHJlbiBs
aXN0Lgo+ICsJCQlMSVNUX1JFTU9WRShkcCwgZF9jaGlsZHJlbl9saW5rKTsKPiArCQl9Cj4gKwl9
Cj4gKwo+ICsJaWYgKHBhcmVudF9kcCkgewo+ICsJCWRyZWYocGFyZW50X2RwKTsKPiArCQlXSVRI
X0xPQ0socGFyZW50X2RwLT5kX2xvY2spIHsKPiArCQkJLy8gSW5zZXJ0IGRwIGludG8gaXRzIG5l
dyBwYXJlbnQncyBjaGlsZHJlbiBsaXN0Lgo+ICsJCQlMSVNUX0lOU0VSVF9IRUFEKCZwYXJlbnRf
ZHAtPmRfY2hpbGRyZW4sIGRwLCBkX2NoaWxkcmVuX2xpbmspOwo+ICsJCX0KPiArCX0KPiArCj4g
KwlXSVRIX0xPQ0soZGVudHJ5X2hhc2hfbG9jaykgewo+ICsJCS8vIFJlbW92ZSBhbGwgZHAncyBj
aGlsZCBkZW50cmllcyBmcm9tIHRoZSBoYXNodGFibGUuCj4gKwkJZGVudHJ5X2NoaWxkcmVuX3Jl
bW92ZShkcCk7Cj4gKwkJLy8gUmVtb3ZlIGRwIHdpdGggb3V0ZGF0ZWQgaGFzaCBpbmZvIGZyb20g
dGhlIGhhc2h0YWJsZS4KPiArCQlMSVNUX1JFTU9WRShkcCwgZF9saW5rKTsKPiArCQkvLyBVcGRh
dGUgZHAuCj4gKwkJZHAtPmRfcGF0aCA9IHN0cmR1cChwYXRoKTsKPiArCQlkcC0+ZF9wYXJlbnQg
PSBwYXJlbnRfZHA7Cj4gKwkJLy8gSW5zZXJ0IGRwIHVwZGF0ZWQgaGFzaCBpbmZvIGludG8gdGhl
IGhhc2h0YWJsZS4KPiArCQlMSVNUX0lOU0VSVF9IRUFEKCZkZW50cnlfaGFzaF90YWJsZVtkZW50
cnlfaGFzaChkcC0+ZF9tb3VudCwgcGF0aCldLAo+ICsJCQlkcCwgZF9saW5rKTsKPiArCX0KPiAr
Cj4gKwlpZiAob2xkX3BkcCkgewo+ICsJCWRyZWxlKG9sZF9wZHApOwo+ICsJfQo+ICsKPiArCWZy
ZWUob2xkX3BhdGgpOwo+ICAgfQo+ICAgCj4gICB2b2lkCj4gICBkZW50cnlfcmVtb3ZlKHN0cnVj
dCBkZW50cnkgKmRwKQo+ICAgewo+IC0gICAgbXV0ZXhfbG9jaygmZGVudHJ5X2hhc2hfbG9jayk7
Cj4gLSAgICBMSVNUX1JFTU9WRShkcCwgZF9saW5rKTsKPiAtICAgIC8qIHB1dCBpdCBvbiBhIGZh
a2UgbGlzdCBmb3IgZHJlbGUoKSB0byB3b3JrKi8KPiAtICAgIExJU1RfSU5TRVJUX0hFQUQoJmZh
a2UsIGRwLCBkX2xpbmspOwo+IC0gICAgbXV0ZXhfdW5sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsK
PiArCW11dGV4X2xvY2soJmRlbnRyeV9oYXNoX2xvY2spOwo+ICsJTElTVF9SRU1PVkUoZHAsIGRf
bGluayk7Cj4gKwkvKiBwdXQgaXQgb24gYSBmYWtlIGxpc3QgZm9yIGRyZWxlKCkgdG8gd29yayov
Cj4gKwlMSVNUX0lOU0VSVF9IRUFEKCZmYWtlLCBkcCwgZF9saW5rKTsKPiArCW11dGV4X3VubG9j
aygmZGVudHJ5X2hhc2hfbG9jayk7Cj4gICB9Cj4gICAKPiAgIHZvaWQKPiAgIGRyZWYoc3RydWN0
IGRlbnRyeSAqZHApCj4gICB7Cj4gLSAgICBBU1NFUlQoZHApOwo+IC0gICAgQVNTRVJUKGRwLT5k
X3JlZmNudCA+IDApOwo+ICsJQVNTRVJUKGRwKTsKPiArCUFTU0VSVChkcC0+ZF9yZWZjbnQgPiAw
KTsKPiAgIAo+IC0gICAgbXV0ZXhfbG9jaygmZGVudHJ5X2hhc2hfbG9jayk7Cj4gLSAgICBkcC0+
ZF9yZWZjbnQrKzsKPiAtICAgIG11dGV4X3VubG9jaygmZGVudHJ5X2hhc2hfbG9jayk7Cj4gKwlt
dXRleF9sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKPiArCWRwLT5kX3JlZmNudCsrOwo+ICsJbXV0
ZXhfdW5sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKPiAgIH0KPiAgIAo+ICAgdm9pZAo+ICAgZHJl
bGUoc3RydWN0IGRlbnRyeSAqZHApCj4gICB7Cj4gLSAgICBBU1NFUlQoZHApOwo+IC0gICAgQVNT
RVJUKGRwLT5kX3JlZmNudCA+IDApOwo+IC0KPiAtICAgIG11dGV4X2xvY2soJmRlbnRyeV9oYXNo
X2xvY2spOwo+IC0gICAgaWYgKC0tZHAtPmRfcmVmY250KSB7Cj4gLSAgICAgICAgbXV0ZXhfdW5s
b2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKPiAtICAgICAgICByZXR1cm47Cj4gLSAgICB9Cj4gLSAg
ICBMSVNUX1JFTU9WRShkcCwgZF9saW5rKTsKPiAtICAgIHZuX2RlbF9uYW1lKGRwLT5kX3Zub2Rl
LCBkcCk7Cj4gLQo+IC0gICAgbXV0ZXhfdW5sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKPiAtCj4g
LSAgICBpZiAoZHAtPmRfcGFyZW50KSB7Cj4gLSAgICAgICAgV0lUSF9MT0NLKGRwLT5kX3BhcmVu
dC0+ZF9sb2NrKSB7Cj4gLSAgICAgICAgICAgIC8vIFJlbW92ZSBkcCBmcm9tIGl0cyBwYXJlbnQn
cyBjaGlsZHJlbiBsaXN0Lgo+IC0gICAgICAgICAgICBMSVNUX1JFTU9WRShkcCwgZF9jaGlsZHJl
bl9saW5rKTsKPiAtICAgICAgICB9Cj4gLSAgICAgICAgZHJlbGUoZHAtPmRfcGFyZW50KTsKPiAt
ICAgIH0KPiAtCj4gLSAgICB2cmVsZShkcC0+ZF92bm9kZSk7Cj4gLQo+IC0gICAgZnJlZShkcC0+
ZF9wYXRoKTsKPiAtICAgIGZyZWUoZHApOwo+ICsJQVNTRVJUKGRwKTsKPiArCUFTU0VSVChkcC0+
ZF9yZWZjbnQgPiAwKTsKPiArCj4gKwltdXRleF9sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKPiAr
CWlmICgtLWRwLT5kX3JlZmNudCkgewo+ICsJCW11dGV4X3VubG9jaygmZGVudHJ5X2hhc2hfbG9j
ayk7Cj4gKwkJcmV0dXJuOwo+ICsJfQo+ICsJTElTVF9SRU1PVkUoZHAsIGRfbGluayk7Cj4gKwl2
bl9kZWxfbmFtZShkcC0+ZF92bm9kZSwgZHApOwo+ICsKPiArCW11dGV4X3VubG9jaygmZGVudHJ5
X2hhc2hfbG9jayk7Cj4gKwo+ICsJaWYgKGRwLT5kX3BhcmVudCkgewo+ICsJCVdJVEhfTE9DSyhk
cC0+ZF9wYXJlbnQtPmRfbG9jaykgewo+ICsJCQkvLyBSZW1vdmUgZHAgZnJvbSBpdHMgcGFyZW50
J3MgY2hpbGRyZW4gbGlzdC4KPiArCQkJTElTVF9SRU1PVkUoZHAsIGRfY2hpbGRyZW5fbGluayk7
Cj4gKwkJfQo+ICsJCWRyZWxlKGRwLT5kX3BhcmVudCk7Cj4gKwl9Cj4gKwo+ICsJdnJlbGUoZHAt
PmRfdm5vZGUpOwo+ICsKPiArCWZyZWUoZHAtPmRfcGF0aCk7Cj4gKwlmcmVlKGRwKTsKPiAgIH0K
PiAgIAo+ICAgdm9pZAo+ICAgZGVudHJ5X2luaXQodm9pZCkKPiAgIHsKPiAtICAgIGludCBpOwo+
ICsJaW50IGk7Cj4gICAKPiAtICAgIGZvciAoaSA9IDA7IGkgPCBERU5UUllfQlVDS0VUUzsgaSsr
KSB7Cj4gLSAgICAgICAgTElTVF9JTklUKCZkZW50cnlfaGFzaF90YWJsZVtpXSk7Cj4gLSAgICB9
Cj4gKwlmb3IgKGkgPSAwOyBpIDwgREVOVFJZX0JVQ0tFVFM7IGkrKykgewo+ICsJCUxJU1RfSU5J
VCgmZGVudHJ5X2hhc2hfdGFibGVbaV0pOwo+ICsJfQo+ICAgfQo+IGRpZmYgLS1naXQgYS9saWIv
dmZzY29yZS9mb3BzLmMgYi9saWIvdmZzY29yZS9mb3BzLmMKPiBpbmRleCAzYThmOThiNC4uYWIx
ZjhjYmIgMTAwNjQ0Cj4gLS0tIGEvbGliL3Zmc2NvcmUvZm9wcy5jCj4gKysrIGIvbGliL3Zmc2Nv
cmUvZm9wcy5jCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgdXNlIHRhYnMgd2hlcmUgcG9zc2li
bGUgCiAKCiM4NTogRklMRTogbGliL3Zmc2NvcmUvZm9wcy5jOjg1OiAKIAoKK15JICAgICAgICB1
aW8tPnVpb19vZmZzZXQgPSBmcC0+Zl9vZmZzZXQ7JAoKCgo+IEBAIC0xNDAsMTcgKzE0MCwxNyBA
QCBpbnQgdmZzX2ZpbGU6OmNobW9kKG1vZGVfdCBtb2RlKQo+ICAgCj4gICBib29sIHZmc19maWxl
OjptYXBfcGFnZSh1aW50cHRyX3Qgb2ZmLCBtbXU6Omh3X3B0ZXA8MD4gcHRlcCwgbW11OjpwdF9l
bGVtZW50PDA+IHB0ZSwgYm9vbCB3cml0ZSwgYm9vbCBzaGFyZWQpCj4gICB7Cj4gLSAgICByZXR1
cm4gcGFnZWNhY2hlOjpnZXQodGhpcywgb2ZmLCBwdGVwLCBwdGUsIHdyaXRlLCBzaGFyZWQpOwo+
ICsJcmV0dXJuIHBhZ2VjYWNoZTo6Z2V0KHRoaXMsIG9mZiwgcHRlcCwgcHRlLCB3cml0ZSwgc2hh
cmVkKTsKPiAgIH0KPiAgIAo+ICAgYm9vbCB2ZnNfZmlsZTo6cHV0X3BhZ2Uodm9pZCAqYWRkciwg
dWludHB0cl90IG9mZiwgbW11Ojpod19wdGVwPDA+IHB0ZXApCj4gICB7Cj4gLSAgICByZXR1cm4g
cGFnZWNhY2hlOjpyZWxlYXNlKHRoaXMsIGFkZHIsIG9mZiwgcHRlcCk7Cj4gKwlyZXR1cm4gcGFn
ZWNhY2hlOjpyZWxlYXNlKHRoaXMsIGFkZHIsIG9mZiwgcHRlcCk7Cj4gICB9Cj4gICAKPiAgIHZv
aWQgdmZzX2ZpbGU6OnN5bmMob2ZmX3Qgc3RhcnQsIG9mZl90IGVuZCkKPiAgIHsKPiAtICAgIHBh
Z2VjYWNoZTo6c3luYyh0aGlzLCBzdGFydCwgZW5kKTsKPiArCXBhZ2VjYWNoZTo6c3luYyh0aGlz
LCBzdGFydCwgZW5kKTsKPiAgIH0KPiAgIAo+ICAgLy8gTG9ja2luZzogVk9QX0NBQ0hFIHdpbGwg
Y2FsbCBpbnRvIHRoZSBmaWxlc3lzdGVtLCBhbmQgdGhhdCBjYW4gdHJpZ2dlciBhbgo+IEBAIC0x
NTksMjMgKzE1OSwyMyBAQCB2b2lkIHZmc19maWxlOjpzeW5jKG9mZl90IHN0YXJ0LCBvZmZfdCBl
bmQpCj4gICAvLyBiZWNhdXNlIG5vdCBhbGwgaW52YWxpZGF0aW9ucyB3aWxsIGJlIHN5bmNocm9u
b3VzLgo+ICAgaW50IHZmc19maWxlOjpnZXRfYXJjYnVmKHZvaWQqIGtleSwgb2ZmX3Qgb2Zmc2V0
KQo+ICAgewo+IC0gICAgc3RydWN0IHZub2RlICp2cCA9IGZfZGVudHJ5LT5kX3Zub2RlOwo+ICsJ
c3RydWN0IHZub2RlICp2cCA9IGZfZGVudHJ5LT5kX3Zub2RlOwo+ICAgCj4gLSAgICBpb3ZlYyBp
b1sxXTsKPiArCWlvdmVjIGlvWzFdOwo+ICAgCj4gLSAgICBpb1swXS5pb3ZfYmFzZSA9IGtleTsK
PiAtICAgIHVpbyBkYXRhOwo+IC0gICAgZGF0YS51aW9faW92ID0gaW87Cj4gLSAgICBkYXRhLnVp
b19pb3ZjbnQgPSAxOwo+IC0gICAgZGF0YS51aW9fb2Zmc2V0ID0gb2Zmc2V0Owo+IC0gICAgZGF0
YS51aW9fcmVzaWQgPSBtbXU6OnBhZ2Vfc2l6ZTsKPiAtICAgIGRhdGEudWlvX3J3ID0gVUlPX1JF
QUQ7Cj4gKwlpb1swXS5pb3ZfYmFzZSA9IGtleTsKPiArCXVpbyBkYXRhOwo+ICsJZGF0YS51aW9f
aW92ID0gaW87Cj4gKwlkYXRhLnVpb19pb3ZjbnQgPSAxOwo+ICsJZGF0YS51aW9fb2Zmc2V0ID0g
b2Zmc2V0Owo+ICsJZGF0YS51aW9fcmVzaWQgPSBtbXU6OnBhZ2Vfc2l6ZTsKPiArCWRhdGEudWlv
X3J3ID0gVUlPX1JFQUQ7Cj4gICAKPiAtICAgIHZuX2xvY2sodnApOwo+IC0gICAgYXNzZXJ0KFZP
UF9DQUNIRSh2cCwgdGhpcywgJmRhdGEpID09IDApOwo+IC0gICAgdm5fdW5sb2NrKHZwKTsKPiAr
CXZuX2xvY2sodnApOwo+ICsJYXNzZXJ0KFZPUF9DQUNIRSh2cCwgdGhpcywgJmRhdGEpID09IDAp
Owo+ICsJdm5fdW5sb2NrKHZwKTsKPiAgIAo+IC0gICAgcmV0dXJuIChkYXRhLnVpb19yZXNpZCAh
PSAwKSA/IC0xIDogMDsKPiArCXJldHVybiAoZGF0YS51aW9fcmVzaWQgIT0gMCkgPyAtMSA6IDA7
Cj4gICB9Cj4gICAKPiAgIHN0ZDo6dW5pcXVlX3B0cjxtbXU6OmZpbGVfdm1hPiB2ZnNfZmlsZTo6
bW1hcChhZGRyX3JhbmdlIHJhbmdlLCB1bnNpZ25lZCBmbGFncywgdW5zaWduZWQgcGVybSwgb2Zm
X3Qgb2Zmc2V0KQo+IGRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZGVu
dHJ5LmggYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZGVudHJ5LmgKPiBpbmRleCBhMjU0
NWFmOC4uZjU4NTA3ODYgMTAwNjQ0Cj4gLS0tIGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3Jl
L2RlbnRyeS5oCj4gKysrIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2RlbnRyeS5oCj4g
QEAgLTMzLDggKzMzLDggQEAgc3RydWN0IGRlbnRyeSB7Cj4gICB1c2luZyBkZW50cnlfcmVmID0g
Ym9vc3Q6OmludHJ1c2l2ZV9wdHI8ZGVudHJ5PjsKPiAgIAo+ICAgZXh0ZXJuICJDIiB7Cj4gLSAg
ICB2b2lkIGRyZWYoc3RydWN0IGRlbnRyeSogZHApOwo+IC0gICAgdm9pZCBkcmVsZShzdHJ1Y3Qg
ZGVudHJ5KiBkcCk7Cj4gKwl2b2lkIGRyZWYoc3RydWN0IGRlbnRyeSogZHApOwo+ICsJdm9pZCBk
cmVsZShzdHJ1Y3QgZGVudHJ5KiBkcCk7Cj4gICB9Owo+ICAgCj4gICBpbmxpbmUgdm9pZCBpbnRy
dXNpdmVfcHRyX2FkZF9yZWYoZGVudHJ5KiBkcCkgeyBkcmVmKGRwKTsgfQo+IGRpZmYgLS1naXQg
YS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvbW91bnQuaCBiL2xpYi92ZnNjb3JlL2luY2x1
ZGUvdmZzY29yZS9tb3VudC5oCj4gaW5kZXggNzI2OGQ4Y2UuLjBlNzg5MjlmIDEwMDY0NAo+IC0t
LSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9tb3VudC5oCj4gKysrIGIvbGliL3Zmc2Nv
cmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmgKV0FSTklORzogcGxlYXNlLCBubyBzcGFjZSBiZWZv
cmUgdGFicyAKIAoKIzU3OiBGSUxFOiBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvbW91bnQu
aDo1NzogCiAKCiteSWZzaWRfdCBeSV5JbV9mc2lkOyBeSS8qIGlkIHRoYXQgdW5pcXVlbHkgaWRl
bnRpZmllcyB0aGUgZnMgKi8kCgoKPiBAQCAtMTU2LDEwICsxNTYsMTAgQEAgX19FTkRfREVDTFMK
PiAgIG5hbWVzcGFjZSBvc3Ygewo+ICAgCj4gICBzdHJ1Y3QgbW91bnRfZGVzYyB7Cj4gLSAgICBz
dGQ6OnN0cmluZyBzcGVjaWFsOwo+IC0gICAgc3RkOjpzdHJpbmcgcGF0aDsKPiAtICAgIHN0ZDo6
c3RyaW5nIHR5cGU7Cj4gLSAgICBzdGQ6OnN0cmluZyBvcHRpb25zOwo+ICsJc3RkOjpzdHJpbmcg
c3BlY2lhbDsKPiArCXN0ZDo6c3RyaW5nIHBhdGg7Cj4gKwlzdGQ6OnN0cmluZyB0eXBlOwo+ICsJ
c3RkOjpzdHJpbmcgb3B0aW9uczsKPiAgIH07Cj4gICAKPiAgIHN0ZDo6dmVjdG9yPG1vdW50X2Rl
c2M+IGN1cnJlbnRfbW91bnRzKCk7Cj4gZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2xvb2t1cC5j
IGIvbGliL3Zmc2NvcmUvbG9va3VwLmMKPiBpbmRleCBhZDAzZmUyNS4uMzAxMzlhODcgMTAwNjQ0
Cj4gLS0tIGEvbGliL3Zmc2NvcmUvbG9va3VwLmMKPiArKysgYi9saWIvdmZzY29yZS9sb29rdXAu
Ywo+IEBAIC00MCw1NyArNDAsNTcgQEAKPiAgIHN0YXRpYyBzc2l6ZV90Cj4gICByZWFkX2xpbmso
c3RydWN0IHZub2RlICp2cCwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3osIHNzaXplX3QgKnN6KQo+
ICAgewo+IC0gICAgc3RydWN0IGlvdmVjIGlvdiA9IHtidWYsIGJ1ZnN6fTsKPiAtICAgIHN0cnVj
dCB1aW8gICB1aW8gPSB7JmlvdiwgMSwgMCwgKHNzaXplX3QpIGJ1ZnN6LCBVSU9fUkVBRH07Cj4g
LSAgICBpbnQgcmM7Cj4gKwlzdHJ1Y3QgaW92ZWMgaW92ID0ge2J1ZiwgYnVmc3p9Owo+ICsJc3Ry
dWN0IHVpbyAgIHVpbyA9IHsmaW92LCAxLCAwLCAoc3NpemVfdCkgYnVmc3osIFVJT19SRUFEfTsK
PiArCWludCByYzsKPiAgIAo+IC0gICAgKnN6ID0gMDsKPiAtICAgIHZuX2xvY2sodnApOwo+IC0g
ICAgcmMgID0gVk9QX1JFQURMSU5LKHZwLCAmdWlvKTsKPiAtICAgIHZuX3VubG9jayh2cCk7Cj4g
Kwkqc3ogPSAwOwo+ICsJdm5fbG9jayh2cCk7Cj4gKwlyYyAgPSBWT1BfUkVBRExJTksodnAsICZ1
aW8pOwo+ICsJdm5fdW5sb2NrKHZwKTsKPiAgIAo+IC0gICAgaWYgKHJjICE9IDApIHsKPiAtICAg
ICAgICByZXR1cm4gKHJjKTsKPiAtICAgIH0KPiArCWlmIChyYyAhPSAwKSB7Cj4gKwkJcmV0dXJu
IChyYyk7Cj4gKwl9Cj4gICAKPiAtICAgICpzeiA9IGJ1ZnN6IC0gdWlvLnVpb19yZXNpZDsKPiAt
ICAgIHJldHVybiAoMCk7Cj4gKwkqc3ogPSBidWZzeiAtIHVpby51aW9fcmVzaWQ7Cj4gKwlyZXR1
cm4gKDApOwo+ICAgfQo+ICAgCj4gICBpbnQKPiAgIG5hbWVpX2ZvbGxvd19saW5rKHN0cnVjdCBk
ZW50cnkgKmRwLCBjaGFyICpub2RlLCBjaGFyICpuYW1lLCBjaGFyICpmcCwgc2l6ZV90IG1vdW50
cG9pbnRfbGVuKQo+ICAgewo+IC0gICAgc3RkOjp1bmlxdWVfcHRyPGNoYXIgW10+IGxpbmsgKG5l
dyBjaGFyW1BBVEhfTUFYXSk7Cj4gLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Y2hhciBbXT4gdCAobmV3
IGNoYXJbUEFUSF9NQVhdKTsKPiAtICAgIGNoYXIgICAgKmxwOwo+IC0gICAgaW50ICAgICBlcnJv
cjsKPiAtICAgIHNzaXplX3Qgc3o7Cj4gLSAgICBjaGFyICAgICpwOwo+IC0gICAgaW50ICAgICBj
Owo+IC0KPiAtICAgIGxwICAgID0gbGluay5nZXQoKTsKPiAtICAgIGVycm9yID0gcmVhZF9saW5r
KGRwLT5kX3Zub2RlLCBscCwgUEFUSF9NQVgsICZzeik7Cj4gLSAgICBpZiAoZXJyb3IgIT0gMCkg
ewo+IC0gICAgICAgIHJldHVybiAoZXJyb3IpOwo+IC0gICAgfQo+IC0gICAgbHBbc3pdID0gMDsK
PiAtCj4gLSAgICBwID0gZnAgKyBtb3VudHBvaW50X2xlbiArIHN0cmxlbihub2RlKTsKPiAtICAg
IGMgPSBzdHJsZW4obm9kZSkgLSBzdHJsZW4obmFtZSkgLSAxOwo+IC0gICAgbm9kZVtjXSA9IDA7
Cj4gLQo+IC0gICAgaWYgKGxwWzBdID09ICcvJykgewo+IC0gICAgICAgIHN0cmxjYXQobHAsIHAs
IFBBVEhfTUFYKTsKPiAtICAgICAgICBzdHJsY3B5KGZwLCBscCwgUEFUSF9NQVgpOwo+IC0gICAg
fSBlbHNlIHsKPiAtICAgICAgICBzdHJsY3B5KHQuZ2V0KCksIHAsIFBBVEhfTUFYKTsKPiAtICAg
ICAgICBzdHJsY3B5KG5vZGUsIGZwLCBtb3VudHBvaW50X2xlbiArIGMgKyAxKTsKPiAtICAgICAg
ICBwYXRoX2NvbnYobm9kZSwgbHAsIGZwKTsKPiAtICAgICAgICBzdHJsY2F0KGZwLCB0LmdldCgp
LCBQQVRIX01BWCk7Cj4gLSAgICB9Cj4gLSAgICBub2RlWzBdID0gMDsKPiAtICAgIG5hbWVbMF0g
PSAwOwo+IC0gICAgcmV0dXJuICgwKTsKPiArCXN0ZDo6dW5pcXVlX3B0cjxjaGFyIFtdPiBsaW5r
IChuZXcgY2hhcltQQVRIX01BWF0pOwo+ICsJc3RkOjp1bmlxdWVfcHRyPGNoYXIgW10+IHQgKG5l
dyBjaGFyW1BBVEhfTUFYXSk7Cj4gKwljaGFyICAgICpscDsKPiArCWludCAgICAgZXJyb3I7Cj4g
Kwlzc2l6ZV90IHN6Owo+ICsJY2hhciAgICAqcDsKPiArCWludCAgICAgYzsKPiArCj4gKwlscCAg
ICA9IGxpbmsuZ2V0KCk7Cj4gKwllcnJvciA9IHJlYWRfbGluayhkcC0+ZF92bm9kZSwgbHAsIFBB
VEhfTUFYLCAmc3opOwo+ICsJaWYgKGVycm9yICE9IDApIHsKPiArCQlyZXR1cm4gKGVycm9yKTsK
PiArCX0KPiArCWxwW3N6XSA9IDA7Cj4gKwo+ICsJcCA9IGZwICsgbW91bnRwb2ludF9sZW4gKyBz
dHJsZW4obm9kZSk7Cj4gKwljID0gc3RybGVuKG5vZGUpIC0gc3RybGVuKG5hbWUpIC0gMTsKPiAr
CW5vZGVbY10gPSAwOwo+ICsKPiArCWlmIChscFswXSA9PSAnLycpIHsKPiArCQlzdHJsY2F0KGxw
LCBwLCBQQVRIX01BWCk7Cj4gKwkJc3RybGNweShmcCwgbHAsIFBBVEhfTUFYKTsKPiArCX0gZWxz
ZSB7Cj4gKwkJc3RybGNweSh0LmdldCgpLCBwLCBQQVRIX01BWCk7Cj4gKwkJc3RybGNweShub2Rl
LCBmcCwgbW91bnRwb2ludF9sZW4gKyBjICsgMSk7Cj4gKwkJcGF0aF9jb252KG5vZGUsIGxwLCBm
cCk7Cj4gKwkJc3RybGNhdChmcCwgdC5nZXQoKSwgUEFUSF9NQVgpOwo+ICsJfQo+ICsJbm9kZVsw
XSA9IDA7Cj4gKwluYW1lWzBdID0gMDsKPiArCXJldHVybiAoMCk7Cj4gICB9Cj4gICAvKgo+ICAg
ICogQ29udmVydCBhIHBhdGhuYW1lIGludG8gYSBwb2ludGVyIHRvIGEgZGVudHJ5Cj4gQEAgLTEw
MSwxMzcgKzEwMSwxMzcgQEAgbmFtZWlfZm9sbG93X2xpbmsoc3RydWN0IGRlbnRyeSAqZHAsIGNo
YXIgKm5vZGUsIGNoYXIgKm5hbWUsIGNoYXIgKmZwLCBzaXplX3QgbW8KPiAgIGludAo+ICAgbmFt
ZWkoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IGRlbnRyeSAqKmRwcCkKPiAgIHsKPiAtICAgIGNo
YXIgKnA7Cj4gLSAgICBjaGFyIG5vZGVbUEFUSF9NQVhdOwo+IC0gICAgY2hhciBuYW1lW1BBVEhf
TUFYXTsKPiAtICAgIHN0ZDo6dW5pcXVlX3B0cjxjaGFyIFtdPiBmcCAobmV3IGNoYXIgW1BBVEhf
TUFYXSk7Cj4gLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Y2hhciBbXT4gdCAobmV3IGNoYXIgW1BBVEhf
TUFYXSk7Cj4gLSAgICBzdHJ1Y3QgbW91bnQgKm1wOwo+IC0gICAgc3RydWN0IGRlbnRyeSAqZHAs
ICpkZHA7Cj4gLSAgICBzdHJ1Y3Qgdm5vZGUgKmR2cCwgKnZwOwo+IC0gICAgaW50IGVycm9yLCBp
Owo+IC0gICAgaW50IGxpbmtzX2ZvbGxvd2VkOwo+IC0gICAgYm9vbCBuZWVkX2NvbnRpbnVlOwo+
IC0KPiAtICAgIERQUklOVEYoVkZTREJfVk5PREUsICgibmFtZWk6IHBhdGg9JXNcbiIsIHBhdGgp
KTsKPiAtCj4gLSAgICBsaW5rc19mb2xsb3dlZCA9IDA7Cj4gLSAgICBzdHJsY3B5KGZwLmdldCgp
LCBwYXRoLCBQQVRIX01BWCk7Cj4gLQo+IC0gICAgZG8gewo+IC0gICAgICAgIG5lZWRfY29udGlu
dWUgPSBmYWxzZTsKPiAtICAgICAgICAvKgo+IC0gICAgICAgICAqIENvbnZlcnQgYSBmdWxsIHBh
dGggbmFtZSB0byBpdHMgbW91bnQgcG9pbnQgYW5kCj4gLSAgICAgICAgICogdGhlIGxvY2FsIG5v
ZGUgaW4gdGhlIGZpbGUgc3lzdGVtLgo+IC0gICAgICAgICAqLwo+IC0gICAgICAgIGlmICh2ZnNf
ZmluZHJvb3QoZnAuZ2V0KCksICZtcCwgJnApKSB7Cj4gLSAgICAgICAgICAgIHJldHVybiBFTk9U
RElSOwo+IC0gICAgICAgIH0KPiAtICAgICAgICBpbnQgbW91bnRwb2ludF9sZW4gPSBwIC0gZnAu
Z2V0KCkgLSAxOwo+IC0gICAgICAgIHN0cmxjcHkobm9kZSwgIi8iLCBzaXplb2Yobm9kZSkpOwo+
IC0gICAgICAgIHN0cmxjYXQobm9kZSwgcCwgc2l6ZW9mKG5vZGUpKTsKPiAtICAgICAgICBkcCA9
IGRlbnRyeV9sb29rdXAobXAsIG5vZGUpOwo+IC0gICAgICAgIGlmIChkcCkgewo+IC0gICAgICAg
ICAgICAvKiB2bm9kZSBpcyBhbHJlYWR5IGFjdGl2ZS4gKi8KPiAtICAgICAgICAgICAgKmRwcCA9
IGRwOwo+IC0gICAgICAgICAgICByZXR1cm4gMDsKPiAtICAgICAgICB9Cj4gLSAgICAgICAgLyoK
PiAtICAgICAgICAgKiBGaW5kIHRhcmdldCB2bm9kZSwgc3RhcnRlZCBmcm9tIHJvb3QgZGlyZWN0
b3J5Lgo+IC0gICAgICAgICAqIFRoaXMgaXMgZG9uZSB0byBhdHRhY2ggdGhlIGZzIHNwZWNpZmlj
IGRhdGEgdG8KPiAtICAgICAgICAgKiB0aGUgdGFyZ2V0IHZub2RlLgo+IC0gICAgICAgICAqLwo+
IC0gICAgICAgIGRkcCA9IG1wLT5tX3Jvb3Q7Cj4gLSAgICAgICAgaWYgKCFkZHApIHsKPiAtICAg
ICAgICAgICAgc3lzX3BhbmljKCJWRlM6IG5vIHJvb3QiKTsKPiAtICAgICAgICB9Cj4gLSAgICAg
ICAgZHJlZihkZHApOwo+IC0KPiAtICAgICAgICBub2RlWzBdID0gJ1wwJzsKPiAtCj4gLSAgICAg
ICAgd2hpbGUgKCpwICE9ICdcMCcpIHsKPiAtICAgICAgICAgICAgLyoKPiAtICAgICAgICAgICAg
ICogR2V0IGxvd2VyIGRpcmVjdG9yeS9maWxlIG5hbWUuCj4gLSAgICAgICAgICAgICAqLwo+IC0g
ICAgICAgICAgICB3aGlsZSAoKnAgPT0gJy8nKSB7Cj4gLSAgICAgICAgICAgICAgICBwKys7Cj4g
LSAgICAgICAgICAgIH0KPiAtCj4gLSAgICAgICAgICAgIGlmICgqcCA9PSAnXDAnKSB7Cj4gLSAg
ICAgICAgICAgICAgICBicmVhazsKPiAtICAgICAgICAgICAgfQo+IC0KPiAtICAgICAgICAgICAg
Zm9yIChpID0gMDsgaSA8IFBBVEhfTUFYOyBpKyspIHsKPiAtICAgICAgICAgICAgICAgIGlmICgq
cCA9PSAnXDAnIHx8ICpwID09ICcvJykgewo+IC0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+
IC0gICAgICAgICAgICAgICAgfQo+IC0gICAgICAgICAgICAgICAgbmFtZVtpXSA9ICpwKys7Cj4g
LSAgICAgICAgICAgIH0KPiAtICAgICAgICAgICAgbmFtZVtpXSA9ICdcMCc7Cj4gLQo+IC0gICAg
ICAgICAgICAvKgo+IC0gICAgICAgICAgICAgKiBHZXQgYSB2bm9kZSBmb3IgdGhlIHRhcmdldC4K
PiAtICAgICAgICAgICAgICovCj4gLSAgICAgICAgICAgIHN0cmxjYXQobm9kZSwgIi8iLCBzaXpl
b2Yobm9kZSkpOwo+IC0gICAgICAgICAgICBzdHJsY2F0KG5vZGUsIG5hbWUsIHNpemVvZihub2Rl
KSk7Cj4gLSAgICAgICAgICAgIGR2cCA9IGRkcC0+ZF92bm9kZTsKPiAtICAgICAgICAgICAgdm5f
bG9jayhkdnApOwo+IC0gICAgICAgICAgICBkcCA9IGRlbnRyeV9sb29rdXAobXAsIG5vZGUpOwo+
IC0gICAgICAgICAgICBpZiAoZHAgPT0gbnVsbHB0cikgewo+IC0gICAgICAgICAgICAgICAgLyog
RmluZCBhIHZub2RlIGluIHRoaXMgZGlyZWN0b3J5LiAqLwo+IC0gICAgICAgICAgICAgICAgZXJy
b3IgPSBWT1BfTE9PS1VQKGR2cCwgbmFtZSwgJnZwKTsKPiAtICAgICAgICAgICAgICAgIGlmIChl
cnJvcikgewo+IC0gICAgICAgICAgICAgICAgICAgIHZuX3VubG9jayhkdnApOwo+IC0gICAgICAg
ICAgICAgICAgICAgIGRyZWxlKGRkcCk7Cj4gLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVy
cm9yOwo+IC0gICAgICAgICAgICAgICAgfQo+IC0KPiAtICAgICAgICAgICAgICAgIGRwID0gZGVu
dHJ5X2FsbG9jKGRkcCwgdnAsIG5vZGUpOwo+IC0gICAgICAgICAgICAgICAgdnB1dCh2cCk7Cj4g
LQo+IC0gICAgICAgICAgICAgICAgaWYgKCFkcCkgewo+IC0gICAgICAgICAgICAgICAgICAgIHZu
X3VubG9jayhkdnApOwo+IC0gICAgICAgICAgICAgICAgICAgIGRyZWxlKGRkcCk7Cj4gLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIEVOT01FTTsKPiAtICAgICAgICAgICAgICAgIH0KPiAtICAg
ICAgICAgICAgfQo+IC0gICAgICAgICAgICB2bl91bmxvY2soZHZwKTsKPiAtICAgICAgICAgICAg
ZHJlbGUoZGRwKTsKPiAtICAgICAgICAgICAgZGRwID0gZHA7Cj4gLQo+IC0gICAgICAgICAgICBp
ZiAoZHAtPmRfdm5vZGUtPnZfdHlwZSA9PSBWTE5LKSB7Cj4gLSAgICAgICAgICAgICAgICBlcnJv
ciA9IG5hbWVpX2ZvbGxvd19saW5rKGRwLCBub2RlLCBuYW1lLCBmcC5nZXQoKSwgbW91bnRwb2lu
dF9sZW4pOwo+IC0gICAgICAgICAgICAgICAgaWYgKGVycm9yKSB7Cj4gLSAgICAgICAgICAgICAg
ICAgICAgZHJlbGUoZHApOwo+IC0gICAgICAgICAgICAgICAgICAgIHJldHVybiAoZXJyb3IpOwo+
IC0gICAgICAgICAgICAgICAgfQo+IC0KPiAtICAgICAgICAgICAgICAgIGRyZWxlKGRwKTsKPiAt
Cj4gLSAgICAgICAgICAgICAgICBwICAgICAgID0gZnAuZ2V0KCk7Cj4gLSAgICAgICAgICAgICAg
ICBkcCAgICAgID0gbnVsbHB0cjsKPiAtICAgICAgICAgICAgICAgIGRkcCAgICAgPSBudWxscHRy
Owo+IC0gICAgICAgICAgICAgICAgdnAgICAgICA9IG51bGxwdHI7Cj4gLSAgICAgICAgICAgICAg
ICBkdnAgICAgID0gbnVsbHB0cjsKPiAtICAgICAgICAgICAgICAgIG5hbWVbMF0gPSAwOwo+IC0g
ICAgICAgICAgICAgICAgbm9kZVswXSA9IDA7Cj4gLQo+IC0gICAgICAgICAgICAgICAgaWYgKCsr
bGlua3NfZm9sbG93ZWQgPj0gTUFYU1lNTElOS1MpIHsKPiAtICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gKEVMT09QKTsKPiAtICAgICAgICAgICAgICAgIH0KPiAtICAgICAgICAgICAgICAgIG5l
ZWRfY29udGludWUgPSB0cnVlOwo+IC0gICAgICAgICAgICAgICAgYnJlYWs7Cj4gLSAgICAgICAg
ICAgIH0KPiAtCj4gLSAgICAgICAgICAgIGlmICgqcCA9PSAnLycgJiYgZGRwLT5kX3Zub2RlLT52
X3R5cGUgIT0gVkRJUikgewo+IC0gICAgICAgICAgICAgICAgZHJlbGUoZGRwKTsKPiAtICAgICAg
ICAgICAgICAgIHJldHVybiBFTk9URElSOwo+IC0gICAgICAgICAgICB9Cj4gLSAgICAgICAgfQo+
IC0gICAgfSB3aGlsZSAobmVlZF9jb250aW51ZSA9PSB0cnVlKTsKPiAtCj4gLSAgICAqZHBwID0g
ZHA7Cj4gLSAgICByZXR1cm4gMDsKPiArCWNoYXIgKnA7Cj4gKwljaGFyIG5vZGVbUEFUSF9NQVhd
Owo+ICsJY2hhciBuYW1lW1BBVEhfTUFYXTsKPiArCXN0ZDo6dW5pcXVlX3B0cjxjaGFyIFtdPiBm
cCAobmV3IGNoYXIgW1BBVEhfTUFYXSk7Cj4gKwlzdGQ6OnVuaXF1ZV9wdHI8Y2hhciBbXT4gdCAo
bmV3IGNoYXIgW1BBVEhfTUFYXSk7Cj4gKwlzdHJ1Y3QgbW91bnQgKm1wOwo+ICsJc3RydWN0IGRl
bnRyeSAqZHAsICpkZHA7Cj4gKwlzdHJ1Y3Qgdm5vZGUgKmR2cCwgKnZwOwo+ICsJaW50IGVycm9y
LCBpOwo+ICsJaW50IGxpbmtzX2ZvbGxvd2VkOwo+ICsJYm9vbCBuZWVkX2NvbnRpbnVlOwo+ICsK
PiArCURQUklOVEYoVkZTREJfVk5PREUsICgibmFtZWk6IHBhdGg9JXNcbiIsIHBhdGgpKTsKPiAr
Cj4gKwlsaW5rc19mb2xsb3dlZCA9IDA7Cj4gKwlzdHJsY3B5KGZwLmdldCgpLCBwYXRoLCBQQVRI
X01BWCk7Cj4gKwo+ICsJZG8gewo+ICsJCW5lZWRfY29udGludWUgPSBmYWxzZTsKPiArCQkvKgo+
ICsJCSAqIENvbnZlcnQgYSBmdWxsIHBhdGggbmFtZSB0byBpdHMgbW91bnQgcG9pbnQgYW5kCj4g
KwkJICogdGhlIGxvY2FsIG5vZGUgaW4gdGhlIGZpbGUgc3lzdGVtLgo+ICsJCSAqLwo+ICsJCWlm
ICh2ZnNfZmluZHJvb3QoZnAuZ2V0KCksICZtcCwgJnApKSB7Cj4gKwkJCXJldHVybiBFTk9URElS
Owo+ICsJCX0KPiArCQlpbnQgbW91bnRwb2ludF9sZW4gPSBwIC0gZnAuZ2V0KCkgLSAxOwo+ICsJ
CXN0cmxjcHkobm9kZSwgIi8iLCBzaXplb2Yobm9kZSkpOwo+ICsJCXN0cmxjYXQobm9kZSwgcCwg
c2l6ZW9mKG5vZGUpKTsKPiArCQlkcCA9IGRlbnRyeV9sb29rdXAobXAsIG5vZGUpOwo+ICsJCWlm
IChkcCkgewo+ICsJCQkvKiB2bm9kZSBpcyBhbHJlYWR5IGFjdGl2ZS4gKi8KPiArCQkJKmRwcCA9
IGRwOwo+ICsJCQlyZXR1cm4gMDsKPiArCQl9Cj4gKwkJLyoKPiArCQkgKiBGaW5kIHRhcmdldCB2
bm9kZSwgc3RhcnRlZCBmcm9tIHJvb3QgZGlyZWN0b3J5Lgo+ICsJCSAqIFRoaXMgaXMgZG9uZSB0
byBhdHRhY2ggdGhlIGZzIHNwZWNpZmljIGRhdGEgdG8KPiArCQkgKiB0aGUgdGFyZ2V0IHZub2Rl
Lgo+ICsJCSAqLwo+ICsJCWRkcCA9IG1wLT5tX3Jvb3Q7Cj4gKwkJaWYgKCFkZHApIHsKPiArCQkJ
c3lzX3BhbmljKCJWRlM6IG5vIHJvb3QiKTsKPiArCQl9Cj4gKwkJZHJlZihkZHApOwo+ICsKPiAr
CQlub2RlWzBdID0gJ1wwJzsKPiArCj4gKwkJd2hpbGUgKCpwICE9ICdcMCcpIHsKPiArCQkJLyoK
PiArCQkJICogR2V0IGxvd2VyIGRpcmVjdG9yeS9maWxlIG5hbWUuCj4gKwkJCSAqLwo+ICsJCQl3
aGlsZSAoKnAgPT0gJy8nKSB7Cj4gKwkJCQlwKys7Cj4gKwkJCX0KPiArCj4gKwkJCWlmICgqcCA9
PSAnXDAnKSB7Cj4gKwkJCQlicmVhazsKPiArCQkJfQo+ICsKPiArCQkJZm9yIChpID0gMDsgaSA8
IFBBVEhfTUFYOyBpKyspIHsKPiArCQkJCWlmICgqcCA9PSAnXDAnIHx8ICpwID09ICcvJykgewo+
ICsJCQkJCWJyZWFrOwo+ICsJCQkJfQo+ICsJCQkJbmFtZVtpXSA9ICpwKys7Cj4gKwkJCX0KPiAr
CQkJbmFtZVtpXSA9ICdcMCc7Cj4gKwo+ICsJCQkvKgo+ICsJCQkgKiBHZXQgYSB2bm9kZSBmb3Ig
dGhlIHRhcmdldC4KPiArCQkJICovCj4gKwkJCXN0cmxjYXQobm9kZSwgIi8iLCBzaXplb2Yobm9k
ZSkpOwo+ICsJCQlzdHJsY2F0KG5vZGUsIG5hbWUsIHNpemVvZihub2RlKSk7Cj4gKwkJCWR2cCA9
IGRkcC0+ZF92bm9kZTsKPiArCQkJdm5fbG9jayhkdnApOwo+ICsJCQlkcCA9IGRlbnRyeV9sb29r
dXAobXAsIG5vZGUpOwo+ICsJCQlpZiAoZHAgPT0gbnVsbHB0cikgewo+ICsJCQkJLyogRmluZCBh
IHZub2RlIGluIHRoaXMgZGlyZWN0b3J5LiAqLwo+ICsJCQkJZXJyb3IgPSBWT1BfTE9PS1VQKGR2
cCwgbmFtZSwgJnZwKTsKPiArCQkJCWlmIChlcnJvcikgewo+ICsJCQkJCXZuX3VubG9jayhkdnAp
Owo+ICsJCQkJCWRyZWxlKGRkcCk7Cj4gKwkJCQkJcmV0dXJuIGVycm9yOwo+ICsJCQkJfQo+ICsK
PiArCQkJCWRwID0gZGVudHJ5X2FsbG9jKGRkcCwgdnAsIG5vZGUpOwo+ICsJCQkJdnB1dCh2cCk7
Cj4gKwo+ICsJCQkJaWYgKCFkcCkgewo+ICsJCQkJCXZuX3VubG9jayhkdnApOwo+ICsJCQkJCWRy
ZWxlKGRkcCk7Cj4gKwkJCQkJcmV0dXJuIEVOT01FTTsKPiArCQkJCX0KPiArCQkJfQo+ICsJCQl2
bl91bmxvY2soZHZwKTsKPiArCQkJZHJlbGUoZGRwKTsKPiArCQkJZGRwID0gZHA7Cj4gKwo+ICsJ
CQlpZiAoZHAtPmRfdm5vZGUtPnZfdHlwZSA9PSBWTE5LKSB7Cj4gKwkJCQllcnJvciA9IG5hbWVp
X2ZvbGxvd19saW5rKGRwLCBub2RlLCBuYW1lLCBmcC5nZXQoKSwgbW91bnRwb2ludF9sZW4pOwo+
ICsJCQkJaWYgKGVycm9yKSB7Cj4gKwkJCQkJZHJlbGUoZHApOwo+ICsJCQkJCXJldHVybiAoZXJy
b3IpOwo+ICsJCQkJfQo+ICsKPiArCQkJCWRyZWxlKGRwKTsKPiArCj4gKwkJCQlwICAgICAgID0g
ZnAuZ2V0KCk7Cj4gKwkJCQlkcCAgICAgID0gbnVsbHB0cjsKPiArCQkJCWRkcCAgICAgPSBudWxs
cHRyOwo+ICsJCQkJdnAgICAgICA9IG51bGxwdHI7Cj4gKwkJCQlkdnAgICAgID0gbnVsbHB0cjsK
PiArCQkJCW5hbWVbMF0gPSAwOwo+ICsJCQkJbm9kZVswXSA9IDA7Cj4gKwo+ICsJCQkJaWYgKCsr
bGlua3NfZm9sbG93ZWQgPj0gTUFYU1lNTElOS1MpIHsKPiArCQkJCQlyZXR1cm4gKEVMT09QKTsK
PiArCQkJCX0KPiArCQkJCW5lZWRfY29udGludWUgPSB0cnVlOwo+ICsJCQkJYnJlYWs7Cj4gKwkJ
CX0KPiArCj4gKwkJCWlmICgqcCA9PSAnLycgJiYgZGRwLT5kX3Zub2RlLT52X3R5cGUgIT0gVkRJ
Uikgewo+ICsJCQkJZHJlbGUoZGRwKTsKPiArCQkJCXJldHVybiBFTk9URElSOwo+ICsJCQl9Cj4g
KwkJfQo+ICsJfSB3aGlsZSAobmVlZF9jb250aW51ZSA9PSB0cnVlKTsKPiArCj4gKwkqZHBwID0g
ZHA7Cj4gKwlyZXR1cm4gMDsKPiAgIH0KPiAgIAo+ICAgLyoKPiBAQCAtMjQ0LDY3ICsyNDQsNjcg
QEAgbmFtZWkoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IGRlbnRyeSAqKmRwcCkKPiAgIGludAo+
ICAgbmFtZWlfbGFzdF9ub2ZvbGxvdyhjaGFyICpwYXRoLCBzdHJ1Y3QgZGVudHJ5ICpkZHAsIHN0
cnVjdCBkZW50cnkgKipkcHApCj4gICB7Cj4gLSAgICBjaGFyICAgICAgICAgICpuYW1lOwo+IC0g
ICAgaW50ICAgICAgICAgICBlcnJvcjsKPiAtICAgIHN0cnVjdCBtb3VudCAgKm1wOwo+IC0gICAg
Y2hhciAgICAgICAgICAqcDsKPiAtICAgIHN0cnVjdCBkZW50cnkgKmRwOwo+IC0gICAgc3RydWN0
IHZub2RlICAqZHZwOwo+IC0gICAgc3RydWN0IHZub2RlICAqdnA7Cj4gLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8Y2hhciBbXT4gbm9kZSAobmV3IGNoYXJbUEFUSF9NQVhdKTsKPiAtCj4gLSAgICBkdnAg
ID0gbnVsbHB0cjsKPiAtCj4gLSAgICBpZiAocGF0aFswXSAhPSAnLycpIHsKPiAtICAgICAgICBy
ZXR1cm4gKEVOT1RESVIpOwo+IC0gICAgfQo+IC0KPiAtICAgIG5hbWUgPSBzdHJyY2hyKHBhdGgs
ICcvJyk7Cj4gLSAgICBpZiAobmFtZSA9PSBudWxscHRyKSB7Cj4gLSAgICAgICAgcmV0dXJuIChF
Tk9FTlQpOwo+IC0gICAgfQo+IC0gICAgbmFtZSsrOwo+IC0KPiAtICAgIGVycm9yID0gdmZzX2Zp
bmRyb290KHBhdGgsICZtcCwgJnApOwo+IC0gICAgaWYgKGVycm9yICE9IDApIHsKPiAtICAgICAg
ICByZXR1cm4gKEVOT1RESVIpOwo+IC0gICAgfQo+IC0KPiAtICAgIHN0cmxjcHkobm9kZS5nZXQo
KSwgIi8iLCBQQVRIX01BWCk7Cj4gLSAgICBzdHJsY2F0KG5vZGUuZ2V0KCksIHAsIFBBVEhfTUFY
KTsKPiAtCj4gLSAgICAvLyBXZSB3YW50IHRvIHRyZWF0IHRoaW5ncyBsaWtlIC90bXAvIHRoZSBz
YW1lIGFzIC90bXAuIEJlc3Qgd2F5IHRvIGRvIHRoYXQKPiAtICAgIC8vIGlzIHRvIGlnbm9yZSB0
aGUgbGFzdCBjaGFyYWN0ZXIsIGV4Y2VwdCB3aGVuIHdlJ3JlIHN0YXRpbmcgdGhlIHJvb3QuCj4g
LSAgICBhdXRvIGwgPSBzdHJsZW4obm9kZS5nZXQoKSkgLSAxOwo+IC0gICAgaWYgKGwgJiYgbm9k
ZS5nZXQoKVtsXSA9PSAnLycpIHsKPiAtICAgICAgICBub2RlLmdldCgpW2xdID0gJ1wwJzsKPiAt
ICAgIH0KPiAtCj4gLSAgICBkdnAgPSBkZHAtPmRfdm5vZGU7Cj4gLSAgICB2bl9sb2NrKGR2cCk7
Cj4gLSAgICBkcCA9IGRlbnRyeV9sb29rdXAobXAsIG5vZGUuZ2V0KCkpOwo+IC0gICAgaWYgKGRw
ID09IG51bGxwdHIpIHsKPiAtICAgICAgICBlcnJvciA9IFZPUF9MT09LVVAoZHZwLCBuYW1lLCAm
dnApOwo+IC0gICAgICAgIGlmIChlcnJvciAhPSAwKSB7Cj4gLSAgICAgICAgICAgIGdvdG8gb3V0
Owo+IC0gICAgICAgIH0KPiAtCj4gLSAgICAgICAgZHAgPSBkZW50cnlfYWxsb2MoZGRwLCB2cCwg
bm9kZS5nZXQoKSk7Cj4gLSAgICAgICAgdnB1dCh2cCk7Cj4gLQo+IC0gICAgICAgIGlmIChkcCA9
PSBudWxscHRyKSB7Cj4gLSAgICAgICAgICAgIGVycm9yID0gRU5PTUVNOwo+IC0gICAgICAgICAg
ICBnb3RvIG91dDsKPiAtICAgICAgICB9Cj4gLSAgICB9Cj4gLQo+IC0gICAgKmRwcCAgPSBkcDsK
PiAtICAgIGVycm9yID0gMDsKPiArCWNoYXIgICAgICAgICAgKm5hbWU7Cj4gKwlpbnQgICAgICAg
ICAgIGVycm9yOwo+ICsJc3RydWN0IG1vdW50ICAqbXA7Cj4gKwljaGFyICAgICAgICAgICpwOwo+
ICsJc3RydWN0IGRlbnRyeSAqZHA7Cj4gKwlzdHJ1Y3Qgdm5vZGUgICpkdnA7Cj4gKwlzdHJ1Y3Qg
dm5vZGUgICp2cDsKPiArCXN0ZDo6dW5pcXVlX3B0cjxjaGFyIFtdPiBub2RlIChuZXcgY2hhcltQ
QVRIX01BWF0pOwo+ICsKPiArCWR2cCAgPSBudWxscHRyOwo+ICsKPiArCWlmIChwYXRoWzBdICE9
ICcvJykgewo+ICsJCXJldHVybiAoRU5PVERJUik7Cj4gKwl9Cj4gKwo+ICsJbmFtZSA9IHN0cnJj
aHIocGF0aCwgJy8nKTsKPiArCWlmIChuYW1lID09IG51bGxwdHIpIHsKPiArCQlyZXR1cm4gKEVO
T0VOVCk7Cj4gKwl9Cj4gKwluYW1lKys7Cj4gKwo+ICsJZXJyb3IgPSB2ZnNfZmluZHJvb3QocGF0
aCwgJm1wLCAmcCk7Cj4gKwlpZiAoZXJyb3IgIT0gMCkgewo+ICsJCXJldHVybiAoRU5PVERJUik7
Cj4gKwl9Cj4gKwo+ICsJc3RybGNweShub2RlLmdldCgpLCAiLyIsIFBBVEhfTUFYKTsKPiArCXN0
cmxjYXQobm9kZS5nZXQoKSwgcCwgUEFUSF9NQVgpOwo+ICsKPiArCS8vIFdlIHdhbnQgdG8gdHJl
YXQgdGhpbmdzIGxpa2UgL3RtcC8gdGhlIHNhbWUgYXMgL3RtcC4gQmVzdCB3YXkgdG8gZG8gdGhh
dAo+ICsJLy8gaXMgdG8gaWdub3JlIHRoZSBsYXN0IGNoYXJhY3RlciwgZXhjZXB0IHdoZW4gd2Un
cmUgc3RhdGluZyB0aGUgcm9vdC4KPiArCWF1dG8gbCA9IHN0cmxlbihub2RlLmdldCgpKSAtIDE7
Cj4gKwlpZiAobCAmJiBub2RlLmdldCgpW2xdID09ICcvJykgewo+ICsJCW5vZGUuZ2V0KClbbF0g
PSAnXDAnOwo+ICsJfQo+ICsKPiArCWR2cCA9IGRkcC0+ZF92bm9kZTsKPiArCXZuX2xvY2soZHZw
KTsKPiArCWRwID0gZGVudHJ5X2xvb2t1cChtcCwgbm9kZS5nZXQoKSk7Cj4gKwlpZiAoZHAgPT0g
bnVsbHB0cikgewo+ICsJCWVycm9yID0gVk9QX0xPT0tVUChkdnAsIG5hbWUsICZ2cCk7Cj4gKwkJ
aWYgKGVycm9yICE9IDApIHsKPiArCQkJZ290byBvdXQ7Cj4gKwkJfQo+ICsKPiArCQlkcCA9IGRl
bnRyeV9hbGxvYyhkZHAsIHZwLCBub2RlLmdldCgpKTsKPiArCQl2cHV0KHZwKTsKPiArCj4gKwkJ
aWYgKGRwID09IG51bGxwdHIpIHsKPiArCQkJZXJyb3IgPSBFTk9NRU07Cj4gKwkJCWdvdG8gb3V0
Owo+ICsJCX0KPiArCX0KPiArCj4gKwkqZHBwICA9IGRwOwo+ICsJZXJyb3IgPSAwOwo+ICAgb3V0
Ogo+IC0gICAgaWYgKGR2cCAhPSBudWxscHRyKSB7Cj4gLSAgICAgICAgdm5fdW5sb2NrKGR2cCk7
Cj4gLSAgICB9Cj4gLSAgICByZXR1cm4gKGVycm9yKTsKPiArCWlmIChkdnAgIT0gbnVsbHB0cikg
ewo+ICsJCXZuX3VubG9jayhkdnApOwo+ICsJfQo+ICsJcmV0dXJuIChlcnJvcik7Cj4gICB9Cj4g
ICAKPiAgIC8qCj4gQEAgLTMyMCw0OCArMzIwLDQ4IEBAIG91dDoKPiAgIGludAo+ICAgbG9va3Vw
KGNoYXIgKnBhdGgsIHN0cnVjdCBkZW50cnkgKipkcHAsIGNoYXIgKipuYW1lKQo+ICAgewo+IC0g
ICAgY2hhciBidWZbUEFUSF9NQVhdOwo+IC0gICAgY2hhciByb290W10gPSAiLyI7Cj4gLSAgICBj
aGFyICpmaWxlLCAqZGlyOwo+IC0gICAgc3RydWN0IGRlbnRyeSAqZHA7Cj4gLSAgICBpbnQgZXJy
b3I7Cj4gLQo+IC0gICAgRFBSSU5URihWRlNEQl9WTk9ERSwgKCJsb29rdXA6IHBhdGg9JXNcbiIs
IHBhdGgpKTsKPiAtCj4gLSAgICAvKgo+IC0gICAgICogR2V0IHRoZSBwYXRoIGZvciBkaXJlY3Rv
cnkuCj4gLSAgICAgKi8KPiAtICAgIHN0cmxjcHkoYnVmLCBwYXRoLCBzaXplb2YoYnVmKSk7Cj4g
LSAgICBmaWxlID0gc3RycmNocihidWYsICcvJyk7Cj4gLSAgICBpZiAoIWJ1ZlswXSkgewo+IC0g
ICAgICAgIHJldHVybiBFTk9URElSOwo+IC0gICAgfQo+IC0gICAgaWYgKGZpbGUgPT0gYnVmKSB7
Cj4gLSAgICAgICAgZGlyID0gcm9vdDsKPiAtICAgIH0gZWxzZSB7Cj4gLSAgICAgICAgKmZpbGUg
PSAnXDAnOwo+IC0gICAgICAgIGRpciA9IGJ1ZjsKPiAtICAgIH0KPiAtICAgIC8qCj4gLSAgICAg
KiBHZXQgdGhlIHZub2RlIGZvciBkaXJlY3RvcnkKPiAtICAgICAqLwo+IC0gICAgaWYgKChlcnJv
ciA9IG5hbWVpKGRpciwgJmRwKSkgIT0gMCkgewo+IC0gICAgICAgIHJldHVybiBlcnJvcjsKPiAt
ICAgIH0KPiAtICAgIGlmIChkcC0+ZF92bm9kZS0+dl90eXBlICE9IFZESVIpIHsKPiAtICAgICAg
ICBkcmVsZShkcCk7Cj4gLSAgICAgICAgcmV0dXJuIEVOT1RESVI7Cj4gLSAgICB9Cj4gLQo+IC0g
ICAgKmRwcCA9IGRwOwo+IC0KPiAtICAgIGlmIChuYW1lKSB7Cj4gLSAgICAgICAgLyoKPiAtICAg
ICAgICAgKiBHZXQgdGhlIGZpbGUgbmFtZQo+IC0gICAgICAgICAqLwo+IC0gICAgICAgICpuYW1l
ID0gc3RycmNocihwYXRoLCAnLycpICsgMTsKPiAtICAgIH0KPiAtICAgIHJldHVybiAwOwo+ICsJ
Y2hhciBidWZbUEFUSF9NQVhdOwo+ICsJY2hhciByb290W10gPSAiLyI7Cj4gKwljaGFyICpmaWxl
LCAqZGlyOwo+ICsJc3RydWN0IGRlbnRyeSAqZHA7Cj4gKwlpbnQgZXJyb3I7Cj4gKwo+ICsJRFBS
SU5URihWRlNEQl9WTk9ERSwgKCJsb29rdXA6IHBhdGg9JXNcbiIsIHBhdGgpKTsKPiArCj4gKwkv
Kgo+ICsJICogR2V0IHRoZSBwYXRoIGZvciBkaXJlY3RvcnkuCj4gKwkgKi8KPiArCXN0cmxjcHko
YnVmLCBwYXRoLCBzaXplb2YoYnVmKSk7Cj4gKwlmaWxlID0gc3RycmNocihidWYsICcvJyk7Cj4g
KwlpZiAoIWJ1ZlswXSkgewo+ICsJCXJldHVybiBFTk9URElSOwo+ICsJfQo+ICsJaWYgKGZpbGUg
PT0gYnVmKSB7Cj4gKwkJZGlyID0gcm9vdDsKPiArCX0gZWxzZSB7Cj4gKwkJKmZpbGUgPSAnXDAn
Owo+ICsJCWRpciA9IGJ1ZjsKPiArCX0KPiArCS8qCj4gKwkgKiBHZXQgdGhlIHZub2RlIGZvciBk
aXJlY3RvcnkKPiArCSAqLwo+ICsJaWYgKChlcnJvciA9IG5hbWVpKGRpciwgJmRwKSkgIT0gMCkg
ewo+ICsJCXJldHVybiBlcnJvcjsKPiArCX0KPiArCWlmIChkcC0+ZF92bm9kZS0+dl90eXBlICE9
IFZESVIpIHsKPiArCQlkcmVsZShkcCk7Cj4gKwkJcmV0dXJuIEVOT1RESVI7Cj4gKwl9Cj4gKwo+
ICsJKmRwcCA9IGRwOwo+ICsKPiArCWlmIChuYW1lKSB7Cj4gKwkJLyoKPiArCQkgKiBHZXQgdGhl
IGZpbGUgbmFtZQo+ICsJCSAqLwo+ICsJCSpuYW1lID0gc3RycmNocihwYXRoLCAnLycpICsgMTsK
PiArCX0KPiArCXJldHVybiAwOwo+ICAgfQo+ICAgCj4gICAvKgo+IEBAIC0zNzEsNSArMzcxLDUg
QEAgbG9va3VwKGNoYXIgKnBhdGgsIHN0cnVjdCBkZW50cnkgKipkcHAsIGNoYXIgKipuYW1lKQo+
ICAgdm9pZAo+ICAgbG9va3VwX2luaXQodm9pZCkKPiAgIHsKPiAtICAgIGRlbnRyeV9pbml0KCk7
Cj4gKwlkZW50cnlfaW5pdCgpOwo+ICAgfQo+IGRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9tYWlu
LmMgYi9saWIvdmZzY29yZS9tYWluLmMKPiBpbmRleCBjZDE0MTExNy4uOGQ5ZGMzM2EgMTAwNjQ0
Cj4gLS0tIGEvbGliL3Zmc2NvcmUvbWFpbi5jCj4gKysrIGIvbGliL3Zmc2NvcmUvbWFpbi5jCj4g
QEAgLTkyLDcgKzkyLDcgQEAgc3RkOjphdG9taWM8bW9kZV90PiBnbG9iYWxfdW1hc2t7U19JV0dS
UCB8IFNfSVdPVEh9Owo+ICAgCj4gICBzdGF0aWMgaW5saW5lIG1vZGVfdCBhcHBseV91bWFzayht
b2RlX3QgbW9kZSkKPiAgIHsKPiAtICAgIHJldHVybiBtb2RlICYgfmdsb2JhbF91bWFzay5sb2Fk
KHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOwo+ICsJcmV0dXJuIG1vZGUgJiB+Z2xvYmFsX3Vt
YXNrLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7Cj4gICB9Cj4gICAKPiAgIFRSQUNF
UE9JTlQodHJhY2VfdmZzX29wZW4sICJcIiVzXCIgMHgleCAwJTBvIiwgY29uc3QgY2hhciosIGlu
dCwgbW9kZV90KTsKPiBAQCAtMTA0LDk5ICsxMDQsOTkgQEAgc3RydWN0IHRhc2sgKm1haW5fdGFz
azsJLyogd2Ugb25seSBoYXZlIGEgc2luZ2xlIHByb2Nlc3MgKi8KPiAgIGV4dGVybiAiQyIKPiAg
IGludCBvcGVuKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBpbnQgZmxhZ3MsIC4uLikKPiAgIHsKPiAt
ICAgIG1vZGVfdCBtb2RlID0gMDsKPiAtICAgIGlmIChmbGFncyAmIE9fQ1JFQVQpIHsKPiAtICAg
ICAgICB2YV9saXN0IGFwOwo+IC0gICAgICAgIHZhX3N0YXJ0KGFwLCBmbGFncyk7Cj4gLSAgICAg
ICAgbW9kZSA9IGFwcGx5X3VtYXNrKHZhX2FyZyhhcCwgbW9kZV90KSk7Cj4gLSAgICAgICAgdmFf
ZW5kKGFwKTsKPiAtICAgIH0KPiAtCj4gLSAgICB0cmFjZV92ZnNfb3BlbihwYXRobmFtZSwgZmxh
Z3MsIG1vZGUpOwo+IC0KPiAtICAgIHN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOwo+IC0gICAg
Y2hhciBwYXRoW1BBVEhfTUFYXTsKPiAtICAgIHN0cnVjdCBmaWxlICpmcDsKPiAtICAgIGludCBm
ZCwgZXJyb3I7Cj4gLSAgICBpbnQgYWNjOwo+IC0KPiAtICAgIGFjYyA9IDA7Cj4gLSAgICBzd2l0
Y2ggKGZsYWdzICYgT19BQ0NNT0RFKSB7Cj4gLSAgICBjYXNlIE9fUkRPTkxZOgo+IC0gICAgICAg
IGFjYyA9IFZSRUFEOwo+IC0gICAgICAgIGJyZWFrOwo+IC0gICAgY2FzZSBPX1dST05MWToKPiAt
ICAgICAgICBhY2MgPSBWV1JJVEU7Cj4gLSAgICAgICAgYnJlYWs7Cj4gLSAgICBjYXNlIE9fUkRX
UjoKPiAtICAgICAgICBhY2MgPSBWUkVBRCB8IFZXUklURTsKPiAtICAgICAgICBicmVhazsKPiAt
ICAgIH0KPiAtCj4gLSAgICBlcnJvciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwgYWNjLCBwYXRo
KTsKPiAtICAgIGlmIChlcnJvcikKPiAtICAgICAgICBnb3RvIG91dF9lcnJubzsKPiAtCj4gLSAg
ICBlcnJvciA9IHN5c19vcGVuKHBhdGgsIGZsYWdzLCBtb2RlLCAmZnApOwo+IC0gICAgaWYgKGVy
cm9yKQo+IC0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwo+IC0KPiAtICAgIGVycm9yID0gZmRhbGxv
YyhmcCwgJmZkKTsKPiAtICAgIGlmIChlcnJvcikKPiAtICAgICAgICBnb3RvIG91dF9mcHV0Owo+
IC0gICAgZmRyb3AoZnApOwo+IC0gICAgdHJhY2VfdmZzX29wZW5fcmV0KGZkKTsKPiAtICAgIHJl
dHVybiBmZDsKPiAtCj4gLSAgICBvdXRfZnB1dDoKPiAtICAgIGZkcm9wKGZwKTsKPiAtICAgIG91
dF9lcnJubzoKPiAtICAgIGVycm5vID0gZXJyb3I7Cj4gLSAgICB0cmFjZV92ZnNfb3Blbl9lcnIo
ZXJyb3IpOwo+IC0gICAgcmV0dXJuIC0xOwo+ICsJbW9kZV90IG1vZGUgPSAwOwo+ICsJaWYgKGZs
YWdzICYgT19DUkVBVCkgewo+ICsJCXZhX2xpc3QgYXA7Cj4gKwkJdmFfc3RhcnQoYXAsIGZsYWdz
KTsKPiArCQltb2RlID0gYXBwbHlfdW1hc2sodmFfYXJnKGFwLCBtb2RlX3QpKTsKPiArCQl2YV9l
bmQoYXApOwo+ICsJfQo+ICsKPiArCXRyYWNlX3Zmc19vcGVuKHBhdGhuYW1lLCBmbGFncywgbW9k
ZSk7Cj4gKwo+ICsJc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7Cj4gKwljaGFyIHBhdGhbUEFU
SF9NQVhdOwo+ICsJc3RydWN0IGZpbGUgKmZwOwo+ICsJaW50IGZkLCBlcnJvcjsKPiArCWludCBh
Y2M7Cj4gKwo+ICsJYWNjID0gMDsKPiArCXN3aXRjaCAoZmxhZ3MgJiBPX0FDQ01PREUpIHsKPiAr
CWNhc2UgT19SRE9OTFk6Cj4gKwkJYWNjID0gVlJFQUQ7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIE9f
V1JPTkxZOgo+ICsJCWFjYyA9IFZXUklURTsKPiArCQlicmVhazsKPiArCWNhc2UgT19SRFdSOgo+
ICsJCWFjYyA9IFZSRUFEIHwgVldSSVRFOwo+ICsJCWJyZWFrOwo+ICsJfQo+ICsKPiArCWVycm9y
ID0gdGFza19jb252KHQsIHBhdGhuYW1lLCBhY2MsIHBhdGgpOwo+ICsJaWYgKGVycm9yKQo+ICsJ
CWdvdG8gb3V0X2Vycm5vOwo+ICsKPiArCWVycm9yID0gc3lzX29wZW4ocGF0aCwgZmxhZ3MsIG1v
ZGUsICZmcCk7Cj4gKwlpZiAoZXJyb3IpCj4gKwkJZ290byBvdXRfZXJybm87Cj4gKwo+ICsJZXJy
b3IgPSBmZGFsbG9jKGZwLCAmZmQpOwo+ICsJaWYgKGVycm9yKQo+ICsJCWdvdG8gb3V0X2ZwdXQ7
Cj4gKwlmZHJvcChmcCk7Cj4gKwl0cmFjZV92ZnNfb3Blbl9yZXQoZmQpOwo+ICsJcmV0dXJuIGZk
Owo+ICsKPiArCW91dF9mcHV0Ogo+ICsJZmRyb3AoZnApOwo+ICsJb3V0X2Vycm5vOgo+ICsJZXJy
bm8gPSBlcnJvcjsKPiArCXRyYWNlX3Zmc19vcGVuX2VycihlcnJvcik7Cj4gKwlyZXR1cm4gLTE7
Cj4gICB9Cj4gICAKPiAgIExGUzY0KG9wZW4pOwo+ICAgCj4gICBpbnQgb3BlbmF0KGludCBkaXJm
ZCwgY29uc3QgY2hhciAqcGF0aG5hbWUsIGludCBmbGFncywgLi4uKQo+ICAgewo+IC0gICAgbW9k
ZV90IG1vZGUgPSAwOwo+IC0gICAgaWYgKGZsYWdzICYgT19DUkVBVCkgewo+IC0gICAgICAgIHZh
X2xpc3QgYXA7Cj4gLSAgICAgICAgdmFfc3RhcnQoYXAsIGZsYWdzKTsKPiAtICAgICAgICBtb2Rl
ID0gYXBwbHlfdW1hc2sodmFfYXJnKGFwLCBtb2RlX3QpKTsKPiAtICAgICAgICB2YV9lbmQoYXAp
Owo+IC0gICAgfQo+ICsJbW9kZV90IG1vZGUgPSAwOwo+ICsJaWYgKGZsYWdzICYgT19DUkVBVCkg
ewo+ICsJCXZhX2xpc3QgYXA7Cj4gKwkJdmFfc3RhcnQoYXAsIGZsYWdzKTsKPiArCQltb2RlID0g
YXBwbHlfdW1hc2sodmFfYXJnKGFwLCBtb2RlX3QpKTsKPiArCQl2YV9lbmQoYXApOwo+ICsJfQo+
ICAgCj4gLSAgICBpZiAocGF0aG5hbWVbMF0gPT0gJy8nIHx8IGRpcmZkID09IEFUX0ZEQ1dEKSB7
Cj4gLSAgICAgICAgcmV0dXJuIG9wZW4ocGF0aG5hbWUsIGZsYWdzLCBtb2RlKTsKPiAtICAgIH0K
PiArCWlmIChwYXRobmFtZVswXSA9PSAnLycgfHwgZGlyZmQgPT0gQVRfRkRDV0QpIHsKPiArCQly
ZXR1cm4gb3BlbihwYXRobmFtZSwgZmxhZ3MsIG1vZGUpOwo+ICsJfQo+ICAgCj4gLSAgICBzdHJ1
Y3QgZmlsZSAqZnA7Cj4gLSAgICBpbnQgZXJyb3IgPSBmZ2V0KGRpcmZkLCAmZnApOwo+IC0gICAg
aWYgKGVycm9yKSB7Cj4gLSAgICAgICAgZXJybm8gPSBlcnJvcjsKPiAtICAgICAgICByZXR1cm4g
LTE7Cj4gLSAgICB9Cj4gKwlzdHJ1Y3QgZmlsZSAqZnA7Cj4gKwlpbnQgZXJyb3IgPSBmZ2V0KGRp
cmZkLCAmZnApOwo+ICsJaWYgKGVycm9yKSB7Cj4gKwkJZXJybm8gPSBlcnJvcjsKPiArCQlyZXR1
cm4gLTE7Cj4gKwl9Cj4gICAKPiAtICAgIHN0cnVjdCB2bm9kZSAqdnAgPSBmcC0+Zl9kZW50cnkt
PmRfdm5vZGU7Cj4gLSAgICB2bl9sb2NrKHZwKTsKPiArCXN0cnVjdCB2bm9kZSAqdnAgPSBmcC0+
Zl9kZW50cnktPmRfdm5vZGU7Cj4gKwl2bl9sb2NrKHZwKTsKPiAgIAo+IC0gICAgc3RkOjp1bmlx
dWVfcHRyPGNoYXIgW10+IHVwIChuZXcgY2hhcltQQVRIX01BWF0pOwo+IC0gICAgY2hhciAqcCA9
IHVwLmdldCgpOwo+ICsJc3RkOjp1bmlxdWVfcHRyPGNoYXIgW10+IHVwIChuZXcgY2hhcltQQVRI
X01BWF0pOwo+ICsJY2hhciAqcCA9IHVwLmdldCgpOwo+ICAgCj4gLSAgICAvKiBidWlsZCBhYnNv
bHV0ZSBwYXRoICovCj4gLSAgICBzdHJsY3B5KHAsIGZwLT5mX2RlbnRyeS0+ZF9tb3VudC0+bV9w
YXRoLCBQQVRIX01BWCk7Cj4gLSAgICBzdHJsY2F0KHAsIGZwLT5mX2RlbnRyeS0+ZF9wYXRoLCBQ
QVRIX01BWCk7Cj4gLSAgICBzdHJsY2F0KHAsICIvIiwgUEFUSF9NQVgpOwo+IC0gICAgc3RybGNh
dChwLCBwYXRobmFtZSwgUEFUSF9NQVgpOwo+ICsJLyogYnVpbGQgYWJzb2x1dGUgcGF0aCAqLwo+
ICsJc3RybGNweShwLCBmcC0+Zl9kZW50cnktPmRfbW91bnQtPm1fcGF0aCwgUEFUSF9NQVgpOwo+
ICsJc3RybGNhdChwLCBmcC0+Zl9kZW50cnktPmRfcGF0aCwgUEFUSF9NQVgpOwo+ICsJc3RybGNh
dChwLCAiLyIsIFBBVEhfTUFYKTsKPiArCXN0cmxjYXQocCwgcGF0aG5hbWUsIFBBVEhfTUFYKTsK
PiAgIAo+IC0gICAgZXJyb3IgPSBvcGVuKHAsIGZsYWdzLCBtb2RlKTsKPiArCWVycm9yID0gb3Bl
bihwLCBmbGFncywgbW9kZSk7Cj4gICAKPiAtICAgIHZuX3VubG9jayh2cCk7Cj4gLSAgICBmZHJv
cChmcCk7Cj4gKwl2bl91bmxvY2sodnApOwo+ICsJZmRyb3AoZnApOwo+ICAgCj4gLSAgICByZXR1
cm4gZXJyb3I7Cj4gKwlyZXR1cm4gZXJyb3I7Cj4gICB9Cj4gICBMRlM2NChvcGVuYXQpOwo+ICAg
Cj4gQEAgLTIwNiwyMyArMjA2LDIzIEBAIExGUzY0KG9wZW5hdCk7Cj4gICAvLyBieSBhIGNhbGwg
dG8gX19vcGVuXzIoKSwgd2hpY2ggdmVyaWZpZXMgaXQgaXNuJ3QgY2FsbGVkIHdpdGggT19DUkVB
VEUuCj4gICBleHRlcm4gIkMiIGludCBfX29wZW5fMihjb25zdCBjaGFyICpwYXRobmFtZSwgaW50
IGZsYWdzKQo+ICAgewo+IC0gICAgYXNzZXJ0KCEoZmxhZ3MgJiBPX0NSRUFUKSk7Cj4gLSAgICBy
ZXR1cm4gb3BlbihwYXRobmFtZSwgZmxhZ3MsIDApOwo+ICsJYXNzZXJ0KCEoZmxhZ3MgJiBPX0NS
RUFUKSk7Cj4gKwlyZXR1cm4gb3BlbihwYXRobmFtZSwgZmxhZ3MsIDApOwo+ICAgfQo+ICAgCj4g
ICBleHRlcm4gIkMiIGludCBfX29wZW42NF8yKGNvbnN0IGNoYXIgKmZpbGUsIGludCBmbGFncykK
PiAgIHsKPiAtICAgIGlmIChmbGFncyAmIE9fQ1JFQVQpIHsKPiAtICAgICAgICBlcnJubyA9IEVJ
TlZBTDsKPiAtICAgICAgICByZXR1cm4gLTE7Cj4gLSAgICB9Cj4gKwlpZiAoZmxhZ3MgJiBPX0NS
RUFUKSB7Cj4gKwkJZXJybm8gPSBFSU5WQUw7Cj4gKwkJcmV0dXJuIC0xOwo+ICsJfQo+ICAgCj4g
LSAgICByZXR1cm4gb3BlbjY0KGZpbGUsIGZsYWdzKTsKPiArCXJldHVybiBvcGVuNjQoZmlsZSwg
ZmxhZ3MpOwo+ICAgfQo+ICAgCj4gICBpbnQgY3JlYXQoY29uc3QgY2hhciAqcGF0aG5hbWUsIG1v
ZGVfdCBtb2RlKQo+ICAgewo+IC0gICAgcmV0dXJuIG9wZW4ocGF0aG5hbWUsIE9fQ1JFQVR8T19X
Uk9OTFl8T19UUlVOQywgbW9kZSk7Cj4gKwlyZXR1cm4gb3BlbihwYXRobmFtZSwgT19DUkVBVHxP
X1dST05MWXxPX1RSVU5DLCBtb2RlKTsKPiAgIH0KPiAgIExGUzY0KGNyZWF0KTsKPiAgIAo+IEBA
IC0yMzIsMjAgKzIzMiwyMCBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19jbG9zZV9lcnIsICIlZCIs
IGludCk7Cj4gICAKPiAgIGludCBjbG9zZShpbnQgZmQpCj4gICB7Cj4gLSAgICBpbnQgZXJyb3I7
Cj4gKwlpbnQgZXJyb3I7Cj4gICAKPiAtICAgIHRyYWNlX3Zmc19jbG9zZShmZCk7Cj4gLSAgICBl
cnJvciA9IGZkY2xvc2UoZmQpOwo+IC0gICAgaWYgKGVycm9yKQo+IC0gICAgICAgIGdvdG8gb3V0
X2Vycm5vOwo+ICsJdHJhY2VfdmZzX2Nsb3NlKGZkKTsKPiArCWVycm9yID0gZmRjbG9zZShmZCk7
Cj4gKwlpZiAoZXJyb3IpCj4gKwkJZ290byBvdXRfZXJybm87Cj4gICAKPiAtICAgIHRyYWNlX3Zm
c19jbG9zZV9yZXQoKTsKPiAtICAgIHJldHVybiAwOwo+ICsJdHJhY2VfdmZzX2Nsb3NlX3JldCgp
Owo+ICsJcmV0dXJuIDA7Cj4gICAKPiAtICAgIG91dF9lcnJubzoKPiAtICAgIHRyYWNlX3Zmc19j
bG9zZV9lcnIoZXJyb3IpOwo+IC0gICAgZXJybm8gPSBlcnJvcjsKPiAtICAgIHJldHVybiAtMTsK
PiArCW91dF9lcnJubzoKPiArCXRyYWNlX3Zmc19jbG9zZV9lcnIoZXJyb3IpOwo+ICsJZXJybm8g
PSBlcnJvcjsKPiArCXJldHVybiAtMTsKPiAgIH0KPiAgIAo+ICAgVFJBQ0VQT0lOVCh0cmFjZV92
ZnNfbWtub2QsICJcIiVzXCIgMCUwbyAweCV4IiwgY29uc3QgY2hhciosIG1vZGVfdCwgZGV2X3Qp
Owo+IEBAIC0yNTYsMzEgKzI1NiwzMSBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19ta25vZF9lcnIs
ICIlZCIsIGludCk7Cj4gICBleHRlcm4gIkMiCj4gICBpbnQgX194bWtub2QoaW50IHZlciwgY29u
c3QgY2hhciAqcGF0aG5hbWUsIG1vZGVfdCBtb2RlLCBkZXZfdCAqZGV2KQo+ICAgewo+IC0gICAg
YXNzZXJ0KHZlciA9PSAwKTsgLy8gT24geDg2LTY0IExpbnV4LCBfTUtOT0RfVkVSX0xJTlVYIGlz
IDAuCj4gLSAgICBzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKPiAtICAgIGNoYXIgcGF0aFtQ
QVRIX01BWF07Cj4gLSAgICBpbnQgZXJyb3I7Cj4gKwlhc3NlcnQodmVyID09IDApOyAvLyBPbiB4
ODYtNjQgTGludXgsIF9NS05PRF9WRVJfTElOVVggaXMgMC4KPiArCXN0cnVjdCB0YXNrICp0ID0g
bWFpbl90YXNrOwo+ICsJY2hhciBwYXRoW1BBVEhfTUFYXTsKPiArCWludCBlcnJvcjsKPiAgIAo+
IC0gICAgdHJhY2VfdmZzX21rbm9kKHBhdGhuYW1lLCBtb2RlLCAqZGV2KTsKPiAtICAgIGlmICgo
ZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5hbWUsIFZXUklURSwgcGF0aCkpICE9IDApCj4gLSAg
ICAgICAgZ290byBvdXRfZXJybm87Cj4gKwl0cmFjZV92ZnNfbWtub2QocGF0aG5hbWUsIG1vZGUs
ICpkZXYpOwo+ICsJaWYgKChlcnJvciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwgVldSSVRFLCBw
YXRoKSkgIT0gMCkKPiArCQlnb3RvIG91dF9lcnJubzsKPiAgIAo+IC0gICAgZXJyb3IgPSBzeXNf
bWtub2QocGF0aCwgbW9kZSk7Cj4gLSAgICBpZiAoZXJyb3IpCj4gLSAgICAgICAgZ290byBvdXRf
ZXJybm87Cj4gKwllcnJvciA9IHN5c19ta25vZChwYXRoLCBtb2RlKTsKPiArCWlmIChlcnJvcikK
PiArCQlnb3RvIG91dF9lcnJubzsKPiAgIAo+IC0gICAgdHJhY2VfdmZzX21rbm9kX3JldCgpOwo+
IC0gICAgcmV0dXJuIDA7Cj4gKwl0cmFjZV92ZnNfbWtub2RfcmV0KCk7Cj4gKwlyZXR1cm4gMDsK
PiAgIAo+IC0gICAgb3V0X2Vycm5vOgo+IC0gICAgdHJhY2VfdmZzX21rbm9kX2VycihlcnJvcik7
Cj4gLSAgICBlcnJubyA9IGVycm9yOwo+IC0gICAgcmV0dXJuIC0xOwo+ICsJb3V0X2Vycm5vOgo+
ICsJdHJhY2VfdmZzX21rbm9kX2VycihlcnJvcik7Cj4gKwllcnJubyA9IGVycm9yOwo+ICsJcmV0
dXJuIC0xOwo+ICAgfQo+ICAgCj4gICBpbnQgbWtub2QoY29uc3QgY2hhciAqcGF0aG5hbWUsIG1v
ZGVfdCBtb2RlLCBkZXZfdCBkZXYpCj4gICB7Cj4gLSAgICByZXR1cm4gX194bWtub2QoMCwgcGF0
aG5hbWUsIG1vZGUsICZkZXYpOwo+ICsJcmV0dXJuIF9feG1rbm9kKDAsIHBhdGhuYW1lLCBtb2Rl
LCAmZGV2KTsKPiAgIH0KPiAgIAo+ICAgCj4gQEAgLTI5MCwyNyArMjkwLDI3IEBAIFRSQUNFUE9J
TlQodHJhY2VfdmZzX2xzZWVrX2VyciwgIiVkIiwgaW50KTsKPiAgIAo+ICAgb2ZmX3QgbHNlZWso
aW50IGZkLCBvZmZfdCBvZmZzZXQsIGludCB3aGVuY2UpCj4gICB7Cj4gLSAgICBzdHJ1Y3QgZmls
ZSAqZnA7Cj4gLSAgICBvZmZfdCBvcmc7Cj4gLSAgICBpbnQgZXJyb3I7Cj4gKwlzdHJ1Y3QgZmls
ZSAqZnA7Cj4gKwlvZmZfdCBvcmc7Cj4gKwlpbnQgZXJyb3I7Cj4gICAKPiAtICAgIHRyYWNlX3Zm
c19sc2VlayhmZCwgb2Zmc2V0LCB3aGVuY2UpOwo+IC0gICAgZXJyb3IgPSBmZ2V0KGZkLCAmZnAp
Owo+IC0gICAgaWYgKGVycm9yKQo+IC0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwo+ICsJdHJhY2Vf
dmZzX2xzZWVrKGZkLCBvZmZzZXQsIHdoZW5jZSk7Cj4gKwllcnJvciA9IGZnZXQoZmQsICZmcCk7
Cj4gKwlpZiAoZXJyb3IpCj4gKwkJZ290byBvdXRfZXJybm87Cj4gICAKPiAtICAgIGVycm9yID0g
c3lzX2xzZWVrKGZwLCBvZmZzZXQsIHdoZW5jZSwgJm9yZyk7Cj4gLSAgICBmZHJvcChmcCk7Cj4g
KwllcnJvciA9IHN5c19sc2VlayhmcCwgb2Zmc2V0LCB3aGVuY2UsICZvcmcpOwo+ICsJZmRyb3Ao
ZnApOwo+ICAgCj4gLSAgICBpZiAoZXJyb3IpCj4gLSAgICAgICAgZ290byBvdXRfZXJybm87Cj4g
LSAgICB0cmFjZV92ZnNfbHNlZWtfcmV0KG9yZyk7Cj4gLSAgICByZXR1cm4gb3JnOwo+ICsJaWYg
KGVycm9yKQo+ICsJCWdvdG8gb3V0X2Vycm5vOwo+ICsJdHJhY2VfdmZzX2xzZWVrX3JldChvcmcp
Owo+ICsJcmV0dXJuIG9yZzsKPiAgIAo+IC0gICAgb3V0X2Vycm5vOgo+IC0gICAgdHJhY2VfdmZz
X2xzZWVrX2VycihlcnJvcik7Cj4gLSAgICBlcnJubyA9IGVycm9yOwo+IC0gICAgcmV0dXJuIC0x
Owo+ICsJb3V0X2Vycm5vOgo+ICsJdHJhY2VfdmZzX2xzZWVrX2VycihlcnJvcik7Cj4gKwllcnJu
byA9IGVycm9yOwo+ICsJcmV0dXJuIC0xOwo+ICAgfQo+ICAgCj4gICBMRlM2NChsc2Vlayk7Cj4g
QEAgLTMyNiw0NiArMzI2LDQ2IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX3ByZWFkX2VyciwgIiVk
IiwgaW50KTsKPiAgIC8vIEluIEZyZWVCU0QsIGRvZmlsZXdyaXRlKCkgYW5kIGRvZmlsZXJlYWQo
KSAoc3lzX2dlbmVyaWMuYykgZG8gdGhpcyB0b28uCj4gICBzdGF0aWMgaW5saW5lIGJvb2wgaGFz
X2Vycm9yKGludCBlcnJvciwgaW50IGJ5dGVzKQo+ICAgewo+IC0gICAgcmV0dXJuIGVycm9yICYm
ICgKPiAtICAgICAgICAgICAgKGJ5dGVzID09IDApIHx8Cj4gLSAgICAgICAgICAgIChlcnJvciAh
PSBFV09VTERCTE9DSyAmJiBlcnJvciAhPSBFSU5UUiAmJiBlcnJvciAhPSBFUkVTVEFSVCkpOwo+
ICsJcmV0dXJuIGVycm9yICYmICgKPiArCQkJKGJ5dGVzID09IDApIHx8Cj4gKwkJCShlcnJvciAh
PSBFV09VTERCTE9DSyAmJiBlcnJvciAhPSBFSU5UUiAmJiBlcnJvciAhPSBFUkVTVEFSVCkpOwo+
ICAgfQo+ICAgCj4gICAKPiAgIHNzaXplX3QgcHJlYWQoaW50IGZkLCB2b2lkICpidWYsIHNpemVf
dCBjb3VudCwgb2ZmX3Qgb2Zmc2V0KQo+ICAgewo+IC0gICAgdHJhY2VfdmZzX3ByZWFkKGZkLCBi
dWYsIGNvdW50LCBvZmZzZXQpOwo+IC0gICAgc3RydWN0IGlvdmVjIGlvdiA9IHsKPiAtICAgICAg
ICAgICAgLmlvdl9iYXNlCT0gYnVmLAo+IC0gICAgICAgICAgICAuaW92X2xlbgk9IGNvdW50LAo+
IC0gICAgfTsKPiAtICAgIHN0cnVjdCBmaWxlICpmcDsKPiAtICAgIHNpemVfdCBieXRlczsKPiAt
ICAgIGludCBlcnJvcjsKPiArCXRyYWNlX3Zmc19wcmVhZChmZCwgYnVmLCBjb3VudCwgb2Zmc2V0
KTsKPiArCXN0cnVjdCBpb3ZlYyBpb3YgPSB7Cj4gKwkJCS5pb3ZfYmFzZQk9IGJ1ZiwKPiArCQkJ
Lmlvdl9sZW4JPSBjb3VudCwKPiArCX07Cj4gKwlzdHJ1Y3QgZmlsZSAqZnA7Cj4gKwlzaXplX3Qg
Ynl0ZXM7Cj4gKwlpbnQgZXJyb3I7Cj4gICAKPiAtICAgIGVycm9yID0gZmdldChmZCwgJmZwKTsK
PiAtICAgIGlmIChlcnJvcikKPiAtICAgICAgICBnb3RvIG91dF9lcnJubzsKPiArCWVycm9yID0g
ZmdldChmZCwgJmZwKTsKPiArCWlmIChlcnJvcikKPiArCQlnb3RvIG91dF9lcnJubzsKPiAgIAo+
IC0gICAgZXJyb3IgPSBzeXNfcmVhZChmcCwgJmlvdiwgMSwgb2Zmc2V0LCAmYnl0ZXMpOwo+IC0g
ICAgZmRyb3AoZnApOwo+ICsJZXJyb3IgPSBzeXNfcmVhZChmcCwgJmlvdiwgMSwgb2Zmc2V0LCAm
Ynl0ZXMpOwo+ICsJZmRyb3AoZnApOwo+ICAgCj4gLSAgICBpZiAoaGFzX2Vycm9yKGVycm9yLCBi
eXRlcykpCj4gLSAgICAgICAgZ290byBvdXRfZXJybm87Cj4gLSAgICB0cmFjZV92ZnNfcHJlYWRf
cmV0KGJ5dGVzKTsKPiAtICAgIHJldHVybiBieXRlczsKPiArCWlmIChoYXNfZXJyb3IoZXJyb3Is
IGJ5dGVzKSkKPiArCQlnb3RvIG91dF9lcnJubzsKPiArCXRyYWNlX3Zmc19wcmVhZF9yZXQoYnl0
ZXMpOwo+ICsJcmV0dXJuIGJ5dGVzOwo+ICAgCj4gLSAgICBvdXRfZXJybm86Cj4gLSAgICB0cmFj
ZV92ZnNfcHJlYWRfZXJyKGVycm9yKTsKPiAtICAgIGVycm5vID0gZXJyb3I7Cj4gLSAgICByZXR1
cm4gLTE7Cj4gKwlvdXRfZXJybm86Cj4gKwl0cmFjZV92ZnNfcHJlYWRfZXJyKGVycm9yKTsKPiAr
CWVycm5vID0gZXJyb3I7Cj4gKwlyZXR1cm4gLTE7Cj4gICB9Cj4gICAKPiAgIExGUzY0KHByZWFk
KTsKPiAgIAo+ICAgc3NpemVfdCByZWFkKGludCBmZCwgdm9pZCAqYnVmLCBzaXplX3QgY291bnQp
Cj4gICB7Cj4gLSAgICByZXR1cm4gcHJlYWQoZmQsIGJ1ZiwgY291bnQsIC0xKTsKPiArCXJldHVy
biBwcmVhZChmZCwgYnVmLCBjb3VudCwgLTEpOwo+ICAgfQo+ICAgCj4gICBUUkFDRVBPSU5UKHRy
YWNlX3Zmc19wd3JpdGUsICIlZCAlcCAweCV4IDB4JXgiLCBpbnQsIGNvbnN0IHZvaWQqLCBzaXpl
X3QsIG9mZl90KTsKPiBAQCAtMzc0LDY3ICszNzQsNjcgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNf
cHdyaXRlX2VyciwgIiVkIiwgaW50KTsKPiAgIAo+ICAgc3NpemVfdCBwd3JpdGUoaW50IGZkLCBj
b25zdCB2b2lkICpidWYsIHNpemVfdCBjb3VudCwgb2ZmX3Qgb2Zmc2V0KQo+ICAgewo+IC0gICAg
dHJhY2VfdmZzX3B3cml0ZShmZCwgYnVmLCBjb3VudCwgb2Zmc2V0KTsKPiAtICAgIHN0cnVjdCBp
b3ZlYyBpb3YgPSB7Cj4gLSAgICAgICAgICAgIC5pb3ZfYmFzZQk9ICh2b2lkICopYnVmLAo+IC0g
ICAgICAgICAgICAuaW92X2xlbgk9IGNvdW50LAo+IC0gICAgfTsKPiAtICAgIHN0cnVjdCBmaWxl
ICpmcDsKPiAtICAgIHNpemVfdCBieXRlczsKPiAtICAgIGludCBlcnJvcjsKPiArCXRyYWNlX3Zm
c19wd3JpdGUoZmQsIGJ1ZiwgY291bnQsIG9mZnNldCk7Cj4gKwlzdHJ1Y3QgaW92ZWMgaW92ID0g
ewo+ICsJCQkuaW92X2Jhc2UJPSAodm9pZCAqKWJ1ZiwKPiArCQkJLmlvdl9sZW4JPSBjb3VudCwK
PiArCX07Cj4gKwlzdHJ1Y3QgZmlsZSAqZnA7Cj4gKwlzaXplX3QgYnl0ZXM7Cj4gKwlpbnQgZXJy
b3I7Cj4gICAKPiAtICAgIGVycm9yID0gZmdldChmZCwgJmZwKTsKPiAtICAgIGlmIChlcnJvcikK
PiAtICAgICAgICBnb3RvIG91dF9lcnJubzsKPiArCWVycm9yID0gZmdldChmZCwgJmZwKTsKPiAr
CWlmIChlcnJvcikKPiArCQlnb3RvIG91dF9lcnJubzsKPiAgIAo+IC0gICAgZXJyb3IgPSBzeXNf
d3JpdGUoZnAsICZpb3YsIDEsIG9mZnNldCwgJmJ5dGVzKTsKPiAtICAgIGZkcm9wKGZwKTsKPiAr
CWVycm9yID0gc3lzX3dyaXRlKGZwLCAmaW92LCAxLCBvZmZzZXQsICZieXRlcyk7Cj4gKwlmZHJv
cChmcCk7Cj4gICAKPiAtICAgIGlmIChoYXNfZXJyb3IoZXJyb3IsIGJ5dGVzKSkKPiAtICAgICAg
ICBnb3RvIG91dF9lcnJubzsKPiAtICAgIHRyYWNlX3Zmc19wd3JpdGVfcmV0KGJ5dGVzKTsKPiAt
ICAgIHJldHVybiBieXRlczsKPiArCWlmIChoYXNfZXJyb3IoZXJyb3IsIGJ5dGVzKSkKPiArCQln
b3RvIG91dF9lcnJubzsKPiArCXRyYWNlX3Zmc19wd3JpdGVfcmV0KGJ5dGVzKTsKPiArCXJldHVy
biBieXRlczsKPiAgIAo+IC0gICAgb3V0X2Vycm5vOgo+IC0gICAgdHJhY2VfdmZzX3B3cml0ZV9l
cnIoZXJyb3IpOwo+IC0gICAgZXJybm8gPSBlcnJvcjsKPiAtICAgIHJldHVybiAtMTsKPiArCW91
dF9lcnJubzoKPiArCXRyYWNlX3Zmc19wd3JpdGVfZXJyKGVycm9yKTsKPiArCWVycm5vID0gZXJy
b3I7Cj4gKwlyZXR1cm4gLTE7Cj4gICB9Cj4gICAKPiAgIExGUzY0KHB3cml0ZSk7Cj4gICAKPiAg
IHNzaXplX3Qgd3JpdGUoaW50IGZkLCBjb25zdCB2b2lkICpidWYsIHNpemVfdCBjb3VudCkKPiAg
IHsKPiAtICAgIHJldHVybiBwd3JpdGUoZmQsIGJ1ZiwgY291bnQsIC0xKTsKPiArCXJldHVybiBw
d3JpdGUoZmQsIGJ1ZiwgY291bnQsIC0xKTsKPiAgIH0KPiAgIAo+ICAgc3NpemVfdCBwcmVhZHYo
aW50IGZkLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlvdiwgaW50IGlvdmNudCwgb2ZmX3Qgb2Zmc2V0
KQo+ICAgewo+IC0gICAgc3RydWN0IGZpbGUgKmZwOwo+IC0gICAgc2l6ZV90IGJ5dGVzOwo+IC0g
ICAgaW50IGVycm9yOwo+ICsJc3RydWN0IGZpbGUgKmZwOwo+ICsJc2l6ZV90IGJ5dGVzOwo+ICsJ
aW50IGVycm9yOwo+ICAgCj4gLSAgICBlcnJvciA9IGZnZXQoZmQsICZmcCk7Cj4gLSAgICBpZiAo
ZXJyb3IpCj4gLSAgICAgICAgZ290byBvdXRfZXJybm87Cj4gKwllcnJvciA9IGZnZXQoZmQsICZm
cCk7Cj4gKwlpZiAoZXJyb3IpCj4gKwkJZ290byBvdXRfZXJybm87Cj4gICAKPiAtICAgIGVycm9y
ID0gc3lzX3JlYWQoZnAsIGlvdiwgaW92Y250LCBvZmZzZXQsICZieXRlcyk7Cj4gLSAgICBmZHJv
cChmcCk7Cj4gKwllcnJvciA9IHN5c19yZWFkKGZwLCBpb3YsIGlvdmNudCwgb2Zmc2V0LCAmYnl0
ZXMpOwo+ICsJZmRyb3AoZnApOwo+ICAgCj4gLSAgICBpZiAoaGFzX2Vycm9yKGVycm9yLCBieXRl
cykpCj4gLSAgICAgICAgZ290byBvdXRfZXJybm87Cj4gLSAgICByZXR1cm4gYnl0ZXM7Cj4gKwlp
ZiAoaGFzX2Vycm9yKGVycm9yLCBieXRlcykpCj4gKwkJZ290byBvdXRfZXJybm87Cj4gKwlyZXR1
cm4gYnl0ZXM7Cj4gICAKPiAtICAgIG91dF9lcnJubzoKPiAtICAgIGVycm5vID0gZXJyb3I7Cj4g
LSAgICByZXR1cm4gLTE7Cj4gKwlvdXRfZXJybm86Cj4gKwllcnJubyA9IGVycm9yOwo+ICsJcmV0
dXJuIC0xOwo+ICAgfQo+ICAgCj4gICBMRlM2NChwcmVhZHYpOwo+ICAgCj4gICBzc2l6ZV90IHJl
YWR2KGludCBmZCwgY29uc3Qgc3RydWN0IGlvdmVjICppb3YsIGludCBpb3ZjbnQpCj4gICB7Cj4g
LSAgICByZXR1cm4gcHJlYWR2KGZkLCBpb3YsIGlvdmNudCwgLTEpOwo+ICsJcmV0dXJuIHByZWFk
dihmZCwgaW92LCBpb3ZjbnQsIC0xKTsKPiAgIH0KPiAgIAo+ICAgVFJBQ0VQT0lOVCh0cmFjZV92
ZnNfcHdyaXRldiwgIiVkICVwIDB4JXggMHgleCIsIGludCwgY29uc3Qgc3RydWN0IGlvdmVjKiwg
aW50LCBvZmZfdCk7Cj4gQEAgLTQ0MywzMyArNDQzLDMzIEBAIFRSQUNFUE9JTlQodHJhY2VfdmZz
X3B3cml0ZXZfZXJyLCAiJWQiLCBpbnQpOwo+ICAgCj4gICBzc2l6ZV90IHB3cml0ZXYoaW50IGZk
LCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlvdiwgaW50IGlvdmNudCwgb2ZmX3Qgb2Zmc2V0KQo+ICAg
ewo+IC0gICAgc3RydWN0IGZpbGUgKmZwOwo+IC0gICAgc2l6ZV90IGJ5dGVzOwo+IC0gICAgaW50
IGVycm9yOwo+ICsJc3RydWN0IGZpbGUgKmZwOwo+ICsJc2l6ZV90IGJ5dGVzOwo+ICsJaW50IGVy
cm9yOwo+ICAgCj4gLSAgICB0cmFjZV92ZnNfcHdyaXRldihmZCwgaW92LCBpb3ZjbnQsIG9mZnNl
dCk7Cj4gLSAgICBlcnJvciA9IGZnZXQoZmQsICZmcCk7Cj4gLSAgICBpZiAoZXJyb3IpCj4gLSAg
ICAgICAgZ290byBvdXRfZXJybm87Cj4gKwl0cmFjZV92ZnNfcHdyaXRldihmZCwgaW92LCBpb3Zj
bnQsIG9mZnNldCk7Cj4gKwllcnJvciA9IGZnZXQoZmQsICZmcCk7Cj4gKwlpZiAoZXJyb3IpCj4g
KwkJZ290byBvdXRfZXJybm87Cj4gICAKPiAtICAgIGVycm9yID0gc3lzX3dyaXRlKGZwLCBpb3Ys
IGlvdmNudCwgb2Zmc2V0LCAmYnl0ZXMpOwo+IC0gICAgZmRyb3AoZnApOwo+ICsJZXJyb3IgPSBz
eXNfd3JpdGUoZnAsIGlvdiwgaW92Y250LCBvZmZzZXQsICZieXRlcyk7Cj4gKwlmZHJvcChmcCk7
Cj4gICAKPiAtICAgIGlmIChoYXNfZXJyb3IoZXJyb3IsIGJ5dGVzKSkKPiAtICAgICAgICBnb3Rv
IG91dF9lcnJubzsKPiAtICAgIHRyYWNlX3Zmc19wd3JpdGV2X3JldChieXRlcyk7Cj4gLSAgICBy
ZXR1cm4gYnl0ZXM7Cj4gKwlpZiAoaGFzX2Vycm9yKGVycm9yLCBieXRlcykpCj4gKwkJZ290byBv
dXRfZXJybm87Cj4gKwl0cmFjZV92ZnNfcHdyaXRldl9yZXQoYnl0ZXMpOwo+ICsJcmV0dXJuIGJ5
dGVzOwo+ICAgCj4gLSAgICBvdXRfZXJybm86Cj4gLSAgICB0cmFjZV92ZnNfcHdyaXRldl9lcnIo
ZXJyb3IpOwo+IC0gICAgZXJybm8gPSBlcnJvcjsKPiAtICAgIHJldHVybiAtMTsKPiArCW91dF9l
cnJubzoKPiArCXRyYWNlX3Zmc19wd3JpdGV2X2VycihlcnJvcik7Cj4gKwllcnJubyA9IGVycm9y
Owo+ICsJcmV0dXJuIC0xOwo+ICAgfQo+ICAgTEZTNjQocHdyaXRldik7Cj4gICAKPiAgIHNzaXpl
X3Qgd3JpdGV2KGludCBmZCwgY29uc3Qgc3RydWN0IGlvdmVjICppb3YsIGludCBpb3ZjbnQpCj4g
ICB7Cj4gLSAgICByZXR1cm4gcHdyaXRldihmZCwgaW92LCBpb3ZjbnQsIC0xKTsKPiArCXJldHVy
biBwd3JpdGV2KGZkLCBpb3YsIGlvdmNudCwgLTEpOwo+ICAgfQo+ICAgCj4gICBUUkFDRVBPSU5U
KHRyYWNlX3Zmc19pb2N0bCwgIiVkIDB4JXgiLCBpbnQsIHVuc2lnbmVkIGxvbmcpOwo+IEBAIC00
NzgsMzUgKzQ3OCwzNSBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19pb2N0bF9lcnIsICIlZCIsIGlu
dCk7Cj4gICAKPiAgIGludCBpb2N0bChpbnQgZmQsIHVuc2lnbmVkIGxvbmcgaW50IHJlcXVlc3Qs
IC4uLikKPiAgIHsKPiAtICAgIHN0cnVjdCBmaWxlICpmcDsKPiAtICAgIGludCBlcnJvcjsKPiAt
ICAgIHZhX2xpc3QgYXA7Cj4gLSAgICB2b2lkKiBhcmc7Cj4gKwlzdHJ1Y3QgZmlsZSAqZnA7Cj4g
KwlpbnQgZXJyb3I7Cj4gKwl2YV9saXN0IGFwOwo+ICsJdm9pZCogYXJnOwo+ICAgCj4gLSAgICB0
cmFjZV92ZnNfaW9jdGwoZmQsIHJlcXVlc3QpOwo+IC0gICAgLyogZ2xpYmMgQUJJIHByb3ZpZGVz
IGEgdmFyaWFkaWMgcHJvdG90eXBlIGZvciBpb2N0bCBzbyB3ZSBuZWVkIHRvIGFncmVlCj4gLSAg
ICAgKiB3aXRoIGl0LCBzaW5jZSB3ZSBub3cgaW5jbHVkZSBzeXMvaW9jdGwuaAo+IC0gICAgICog
cmVhZCB0aGUgZmlyc3QgYXJndW1lbnQgYW5kIHBhc3MgaXQgdG8gc3lzX2lvY3RsKCkgKi8KPiAt
ICAgIHZhX3N0YXJ0KGFwLCByZXF1ZXN0KTsKPiAtICAgIGFyZyA9IHZhX2FyZyhhcCwgdm9pZCop
Owo+IC0gICAgdmFfZW5kKGFwKTsKPiArCXRyYWNlX3Zmc19pb2N0bChmZCwgcmVxdWVzdCk7Cj4g
KwkvKiBnbGliYyBBQkkgcHJvdmlkZXMgYSB2YXJpYWRpYyBwcm90b3R5cGUgZm9yIGlvY3RsIHNv
IHdlIG5lZWQgdG8gYWdyZWUKPiArCSAqIHdpdGggaXQsIHNpbmNlIHdlIG5vdyBpbmNsdWRlIHN5
cy9pb2N0bC5oCj4gKwkgKiByZWFkIHRoZSBmaXJzdCBhcmd1bWVudCBhbmQgcGFzcyBpdCB0byBz
eXNfaW9jdGwoKSAqLwo+ICsJdmFfc3RhcnQoYXAsIHJlcXVlc3QpOwo+ICsJYXJnID0gdmFfYXJn
KGFwLCB2b2lkKik7Cj4gKwl2YV9lbmQoYXApOwo+ICAgCj4gLSAgICBlcnJvciA9IGZnZXQoZmQs
ICZmcCk7Cj4gLSAgICBpZiAoZXJyb3IpCj4gLSAgICAgICAgZ290byBvdXRfZXJybm87Cj4gKwll
cnJvciA9IGZnZXQoZmQsICZmcCk7Cj4gKwlpZiAoZXJyb3IpCj4gKwkJZ290byBvdXRfZXJybm87
Cj4gICAKPiAtICAgIGVycm9yID0gc3lzX2lvY3RsKGZwLCByZXF1ZXN0LCBhcmcpOwo+IC0gICAg
ZmRyb3AoZnApOwo+ICsJZXJyb3IgPSBzeXNfaW9jdGwoZnAsIHJlcXVlc3QsIGFyZyk7Cj4gKwlm
ZHJvcChmcCk7Cj4gICAKPiAtICAgIGlmIChlcnJvcikKPiAtICAgICAgICBnb3RvIG91dF9lcnJu
bzsKPiAtICAgIHRyYWNlX3Zmc19pb2N0bF9yZXQoKTsKPiAtICAgIHJldHVybiAwOwo+ICsJaWYg
KGVycm9yKQo+ICsJCWdvdG8gb3V0X2Vycm5vOwo+ICsJdHJhY2VfdmZzX2lvY3RsX3JldCgpOwo+
ICsJcmV0dXJuIDA7Cj4gICAKPiAtICAgIG91dF9lcnJubzoKPiAtICAgIHRyYWNlX3Zmc19pb2N0
bF9lcnIoZXJyb3IpOwo+IC0gICAgZXJybm8gPSBlcnJvcjsKPiAtICAgIHJldHVybiAtMTsKPiAr
CW91dF9lcnJubzoKPiArCXRyYWNlX3Zmc19pb2N0bF9lcnIoZXJyb3IpOwo+ICsJZXJybm8gPSBl
cnJvcjsKPiArCXJldHVybiAtMTsKPiAgIH0KPiAgIAo+ICAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNf
ZnN5bmMsICIlZCIsIGludCk7Cj4gQEAgLTUxNSwzMiArNTE1LDMyIEBAIFRSQUNFUE9JTlQodHJh
Y2VfdmZzX2ZzeW5jX2VyciwgIiVkIiwgaW50KTsKPiAgIAo+ICAgaW50IGZzeW5jKGludCBmZCkK
PiAgIHsKPiAtICAgIHN0cnVjdCBmaWxlICpmcDsKPiAtICAgIGludCBlcnJvcjsKPiArCXN0cnVj
dCBmaWxlICpmcDsKPiArCWludCBlcnJvcjsKPiAgIAo+IC0gICAgdHJhY2VfdmZzX2ZzeW5jKGZk
KTsKPiAtICAgIGVycm9yID0gZmdldChmZCwgJmZwKTsKPiAtICAgIGlmIChlcnJvcikKPiAtICAg
ICAgICBnb3RvIG91dF9lcnJubzsKPiArCXRyYWNlX3Zmc19mc3luYyhmZCk7Cj4gKwllcnJvciA9
IGZnZXQoZmQsICZmcCk7Cj4gKwlpZiAoZXJyb3IpCj4gKwkJZ290byBvdXRfZXJybm87Cj4gICAK
PiAtICAgIGVycm9yID0gc3lzX2ZzeW5jKGZwKTsKPiAtICAgIGZkcm9wKGZwKTsKPiArCWVycm9y
ID0gc3lzX2ZzeW5jKGZwKTsKPiArCWZkcm9wKGZwKTsKPiAgIAo+IC0gICAgaWYgKGVycm9yKQo+
IC0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwo+IC0gICAgdHJhY2VfdmZzX2ZzeW5jX3JldCgpOwo+
IC0gICAgcmV0dXJuIDA7Cj4gKwlpZiAoZXJyb3IpCj4gKwkJZ290byBvdXRfZXJybm87Cj4gKwl0
cmFjZV92ZnNfZnN5bmNfcmV0KCk7Cj4gKwlyZXR1cm4gMDsKPiAgIAo+IC0gICAgb3V0X2Vycm5v
Ogo+IC0gICAgdHJhY2VfdmZzX2ZzeW5jX2VycihlcnJvcik7Cj4gLSAgICBlcnJubyA9IGVycm9y
Owo+IC0gICAgcmV0dXJuIC0xOwo+ICsJb3V0X2Vycm5vOgo+ICsJdHJhY2VfdmZzX2ZzeW5jX2Vy
cihlcnJvcik7Cj4gKwllcnJubyA9IGVycm9yOwo+ICsJcmV0dXJuIC0xOwo+ICAgfQo+ICAgCj4g
ICBpbnQgZmRhdGFzeW5jKGludCBmZCkKPiAgIHsKPiAtICAgIC8vIFRPRE86IFNlZSBpZiB3ZSBj
YW4gZG8gbGVzcyB0aGFuIGZzeW5jKCkuCj4gLSAgICByZXR1cm4gZnN5bmMoZmQpOwo+ICsJLy8g
VE9ETzogU2VlIGlmIHdlIGNhbiBkbyBsZXNzIHRoYW4gZnN5bmMoKS4KPiArCXJldHVybiBmc3lu
YyhmZCk7Cj4gICB9Cj4gICAKPiAgIFRSQUNFUE9JTlQodHJhY2VfdmZzX2ZzdGF0LCAiJWQgJXAi
LCBpbnQsIHN0cnVjdCBzdGF0Kik7Cj4gQEAgLTU1MCwyNyArNTUwLDI3IEBAIFRSQUNFUE9JTlQo
dHJhY2VfdmZzX2ZzdGF0X2VyciwgIiVkIiwgaW50KTsKPiAgIGV4dGVybiAiQyIKPiAgIGludCBf
X2Z4c3RhdChpbnQgdmVyLCBpbnQgZmQsIHN0cnVjdCBzdGF0ICpzdCkKPiAgIHsKPiAtICAgIHN0
cnVjdCBmaWxlICpmcDsKPiAtICAgIGludCBlcnJvcjsKPiArCXN0cnVjdCBmaWxlICpmcDsKPiAr
CWludCBlcnJvcjsKPiAgIAo+IC0gICAgdHJhY2VfdmZzX2ZzdGF0KGZkLCBzdCk7Cj4gKwl0cmFj
ZV92ZnNfZnN0YXQoZmQsIHN0KTsKPiAgIAo+IC0gICAgZXJyb3IgPSBmZ2V0KGZkLCAmZnApOwo+
IC0gICAgaWYgKGVycm9yKQo+IC0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwo+ICsJZXJyb3IgPSBm
Z2V0KGZkLCAmZnApOwo+ICsJaWYgKGVycm9yKQo+ICsJCWdvdG8gb3V0X2Vycm5vOwo+ICAgCj4g
LSAgICBlcnJvciA9IHN5c19mc3RhdChmcCwgc3QpOwo+IC0gICAgZmRyb3AoZnApOwo+ICsJZXJy
b3IgPSBzeXNfZnN0YXQoZnAsIHN0KTsKPiArCWZkcm9wKGZwKTsKPiAgIAo+IC0gICAgaWYgKGVy
cm9yKQo+IC0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwo+IC0gICAgdHJhY2VfdmZzX2ZzdGF0X3Jl
dCgpOwo+IC0gICAgcmV0dXJuIDA7Cj4gKwlpZiAoZXJyb3IpCj4gKwkJZ290byBvdXRfZXJybm87
Cj4gKwl0cmFjZV92ZnNfZnN0YXRfcmV0KCk7Cj4gKwlyZXR1cm4gMDsKPiAgIAo+IC0gICAgb3V0
X2Vycm5vOgo+IC0gICAgdHJhY2VfdmZzX2ZzdGF0X2VycihlcnJvcik7Cj4gLSAgICBlcnJubyA9
IGVycm9yOwo+IC0gICAgcmV0dXJuIC0xOwo+ICsJb3V0X2Vycm5vOgo+ICsJdHJhY2VfdmZzX2Zz
dGF0X2VycihlcnJvcik7Cj4gKwllcnJubyA9IGVycm9yOwo+ICsJcmV0dXJuIC0xOwo+ICAgfQo+
ICAgCj4gICBMRlM2NChfX2Z4c3RhdCk7Cj4gQEAgLTU3OCw1MiArNTc4LDUyIEBAIExGUzY0KF9f
ZnhzdGF0KTsKPiAgIGV4dGVybiAiQyIKPiAgIGludCBmc3RhdChpbnQgZmQsIHN0cnVjdCBzdGF0
ICpzdCkKPiAgIHsKPiAtICAgIHJldHVybiBfX2Z4c3RhdCgxLCBmZCwgc3QpOwo+ICsJcmV0dXJu
IF9fZnhzdGF0KDEsIGZkLCBzdCk7Cj4gICB9Cj4gICAKPiAgIExGUzY0KGZzdGF0KTsKPiAgIAo+
ICAgZXh0ZXJuICJDIgo+ICAgaW50IF9fZnhzdGF0YXQoaW50IHZlciwgaW50IGRpcmZkLCBjb25z
dCBjaGFyICpwYXRobmFtZSwgc3RydWN0IHN0YXQgKnN0LAo+IC0gICAgICAgIGludCBmbGFncykK
PiArCQlpbnQgZmxhZ3MpCj4gICB7Cj4gLSAgICBpZiAoZmxhZ3MgJiBBVF9TWU1MSU5LX05PRk9M
TE9XKSB7Cj4gLSAgICAgICAgVU5JTVBMRU1FTlRFRCgiZnN0YXRhdCgpIHdpdGggQVRfU1lNTElO
S19OT0ZPTExPVyIpOwo+IC0gICAgfQo+ICsJaWYgKGZsYWdzICYgQVRfU1lNTElOS19OT0ZPTExP
Vykgewo+ICsJCVVOSU1QTEVNRU5URUQoImZzdGF0YXQoKSB3aXRoIEFUX1NZTUxJTktfTk9GT0xM
T1ciKTsKPiArCX0KPiAgIAo+IC0gICAgaWYgKHBhdGhuYW1lWzBdID09ICcvJyB8fCBkaXJmZCA9
PSBBVF9GRENXRCkgewo+IC0gICAgICAgIHJldHVybiBzdGF0KHBhdGhuYW1lLCBzdCk7Cj4gLSAg
ICB9Cj4gLSAgICAvLyBJZiBBVF9FTVBUWV9QQVRIIGFuZCBwYXRobmFtZSBpcyBhbiBlbXB0eSBz
dHJpbmcsIGZzdGF0YXQoKSBvcGVyYXRlcyBvbgo+IC0gICAgLy8gZGlyZmQgaXRzZWxmLCBhbmQg
aW4gdGhhdCBjYXNlIGl0IGRvZXNuJ3QgaGF2ZSB0byBiZSBhIGRpcmVjdG9yeS4KPiAtICAgIGlm
ICgoZmxhZ3MgJiBBVF9FTVBUWV9QQVRIKSAmJiAhcGF0aG5hbWVbMF0pIHsKPiAtICAgICAgICBy
ZXR1cm4gZnN0YXQoZGlyZmQsIHN0KTsKPiAtICAgIH0KPiArCWlmIChwYXRobmFtZVswXSA9PSAn
LycgfHwgZGlyZmQgPT0gQVRfRkRDV0QpIHsKPiArCQlyZXR1cm4gc3RhdChwYXRobmFtZSwgc3Qp
Owo+ICsJfQo+ICsJLy8gSWYgQVRfRU1QVFlfUEFUSCBhbmQgcGF0aG5hbWUgaXMgYW4gZW1wdHkg
c3RyaW5nLCBmc3RhdGF0KCkgb3BlcmF0ZXMgb24KPiArCS8vIGRpcmZkIGl0c2VsZiwgYW5kIGlu
IHRoYXQgY2FzZSBpdCBkb2Vzbid0IGhhdmUgdG8gYmUgYSBkaXJlY3RvcnkuCj4gKwlpZiAoKGZs
YWdzICYgQVRfRU1QVFlfUEFUSCkgJiYgIXBhdGhuYW1lWzBdKSB7Cj4gKwkJcmV0dXJuIGZzdGF0
KGRpcmZkLCBzdCk7Cj4gKwl9Cj4gICAKPiAtICAgIHN0cnVjdCBmaWxlICpmcDsKPiAtICAgIGlu
dCBlcnJvciA9IGZnZXQoZGlyZmQsICZmcCk7Cj4gLSAgICBpZiAoZXJyb3IpIHsKPiAtICAgICAg
ICBlcnJubyA9IGVycm9yOwo+IC0gICAgICAgIHJldHVybiAtMTsKPiAtICAgIH0KPiArCXN0cnVj
dCBmaWxlICpmcDsKPiArCWludCBlcnJvciA9IGZnZXQoZGlyZmQsICZmcCk7Cj4gKwlpZiAoZXJy
b3IpIHsKPiArCQllcnJubyA9IGVycm9yOwo+ICsJCXJldHVybiAtMTsKPiArCX0KPiAgIAo+IC0g
ICAgc3RydWN0IHZub2RlICp2cCA9IGZwLT5mX2RlbnRyeS0+ZF92bm9kZTsKPiAtICAgIHZuX2xv
Y2sodnApOwo+ICsJc3RydWN0IHZub2RlICp2cCA9IGZwLT5mX2RlbnRyeS0+ZF92bm9kZTsKPiAr
CXZuX2xvY2sodnApOwo+ICAgCj4gLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Y2hhciBbXT4gdXAgKG5l
dyBjaGFyW1BBVEhfTUFYXSk7Cj4gLSAgICBjaGFyICpwID0gdXAuZ2V0KCk7Cj4gLSAgICAvKiBi
dWlsZCBhYnNvbHV0ZSBwYXRoICovCj4gLSAgICBzdHJsY3B5KHAsIGZwLT5mX2RlbnRyeS0+ZF9t
b3VudC0+bV9wYXRoLCBQQVRIX01BWCk7Cj4gLSAgICBzdHJsY2F0KHAsIGZwLT5mX2RlbnRyeS0+
ZF9wYXRoLCBQQVRIX01BWCk7Cj4gLSAgICBzdHJsY2F0KHAsICIvIiwgUEFUSF9NQVgpOwo+IC0g
ICAgc3RybGNhdChwLCBwYXRobmFtZSwgUEFUSF9NQVgpOwo+ICsJc3RkOjp1bmlxdWVfcHRyPGNo
YXIgW10+IHVwIChuZXcgY2hhcltQQVRIX01BWF0pOwo+ICsJY2hhciAqcCA9IHVwLmdldCgpOwo+
ICsJLyogYnVpbGQgYWJzb2x1dGUgcGF0aCAqLwo+ICsJc3RybGNweShwLCBmcC0+Zl9kZW50cnkt
PmRfbW91bnQtPm1fcGF0aCwgUEFUSF9NQVgpOwo+ICsJc3RybGNhdChwLCBmcC0+Zl9kZW50cnkt
PmRfcGF0aCwgUEFUSF9NQVgpOwo+ICsJc3RybGNhdChwLCAiLyIsIFBBVEhfTUFYKTsKPiArCXN0
cmxjYXQocCwgcGF0aG5hbWUsIFBBVEhfTUFYKTsKPiAgIAo+IC0gICAgZXJyb3IgPSBzdGF0KHAs
IHN0KTsKPiArCWVycm9yID0gc3RhdChwLCBzdCk7Cj4gICAKPiAtICAgIHZuX3VubG9jayh2cCk7
Cj4gLSAgICBmZHJvcChmcCk7Cj4gKwl2bl91bmxvY2sodnApOwo+ICsJZmRyb3AoZnApOwo+ICAg
Cj4gLSAgICByZXR1cm4gZXJyb3I7Cj4gKwlyZXR1cm4gZXJyb3I7Cj4gICB9Cj4gICAKPiAgIExG
UzY0KF9fZnhzdGF0YXQpOwo+IEBAIC02MzEsMjkgKzYzMSwyOSBAQCBMRlM2NChfX2Z4c3RhdGF0
KTsKPiAgIGV4dGVybiAiQyIKPiAgIGludCBmc3RhdGF0KGludCBkaXJmZCwgY29uc3QgY2hhciAq
cGF0aCwgc3RydWN0IHN0YXQgKnN0LCBpbnQgZmxhZ3MpCj4gICB7Cj4gLSAgICByZXR1cm4gX19m
eHN0YXRhdCgxLCBkaXJmZCwgcGF0aCwgc3QsIGZsYWdzKTsKPiArCXJldHVybiBfX2Z4c3RhdGF0
KDEsIGRpcmZkLCBwYXRoLCBzdCwgZmxhZ3MpOwo+ICAgfQo+ICAgCj4gICBMRlM2NChmc3RhdGF0
KTsKPiAgIAo+ICAgZXh0ZXJuICJDIiBpbnQgZmxvY2soaW50IGZkLCBpbnQgb3BlcmF0aW9uKQo+
ICAgewo+IC0gICAgaWYgKCFmaWxlcmVmX2Zyb21fZmQoZmQpKSB7Cj4gLSAgICAgICAgcmV0dXJu
IGxpYmNfZXJyb3IoRUJBREYpOwo+IC0gICAgfQo+ICsJaWYgKCFmaWxlcmVmX2Zyb21fZmQoZmQp
KSB7Cj4gKwkJcmV0dXJuIGxpYmNfZXJyb3IoRUJBREYpOwo+ICsJfQo+ICAgCj4gLSAgICBzd2l0
Y2ggKG9wZXJhdGlvbikgewo+IC0gICAgY2FzZSBMT0NLX1NIOgo+IC0gICAgY2FzZSBMT0NLX1NI
IHwgTE9DS19OQjoKPiAtICAgIGNhc2UgTE9DS19FWDoKPiAtICAgIGNhc2UgTE9DS19FWCB8IExP
Q0tfTkI6Cj4gLSAgICBjYXNlIExPQ0tfVU46Cj4gLSAgICAgICAgYnJlYWs7Cj4gLSAgICBkZWZh
dWx0Ogo+IC0gICAgICAgIHJldHVybiBsaWJjX2Vycm9yKEVJTlZBTCk7Cj4gLSAgICB9Cj4gKwlz
d2l0Y2ggKG9wZXJhdGlvbikgewo+ICsJY2FzZSBMT0NLX1NIOgo+ICsJY2FzZSBMT0NLX1NIIHwg
TE9DS19OQjoKPiArCWNhc2UgTE9DS19FWDoKPiArCWNhc2UgTE9DS19FWCB8IExPQ0tfTkI6Cj4g
KwljYXNlIExPQ0tfVU46Cj4gKwkJYnJlYWs7Cj4gKwlkZWZhdWx0Ogo+ICsJCXJldHVybiBsaWJj
X2Vycm9yKEVJTlZBTCk7Cj4gKwl9Cj4gICAKPiAtICAgIHJldHVybiAwOwo+ICsJcmV0dXJuIDA7
Cj4gICB9Cj4gICAKPiAgIFRSQUNFUE9JTlQodHJhY2VfdmZzX3JlYWRkaXIsICIlZCAlcCIsIGlu
dCwgZGlyZW50Kik7Cj4gQEAgLTY2MiwxNTIgKzY2MiwxNTIgQEAgVFJBQ0VQT0lOVCh0cmFjZV92
ZnNfcmVhZGRpcl9lcnIsICIlZCIsIGludCk7Cj4gICAKPiAgIHN0cnVjdCBfX2RpcnN0cmVhbQo+
ICAgewo+IC0gICAgaW50IGZkOwo+ICsJaW50IGZkOwo+ICAgfTsKPiAgIAo+ICAgRElSICpvcGVu
ZGlyKGNvbnN0IGNoYXIgKnBhdGgpCj4gICB7Cj4gLSAgICBESVIgKmRpciA9IG5ldyBESVI7Cj4g
KwlESVIgKmRpciA9IG5ldyBESVI7Cj4gICAKPiAtICAgIGlmICghZGlyKQo+IC0gICAgICAgIHJl
dHVybiBsaWJjX2Vycm9yX3B0cjxESVI+KEVOT01FTSk7Cj4gKwlpZiAoIWRpcikKPiArCQlyZXR1
cm4gbGliY19lcnJvcl9wdHI8RElSPihFTk9NRU0pOwo+ICAgCj4gLSAgICBkaXItPmZkID0gb3Bl
bihwYXRoLCBPX1JET05MWSk7Cj4gLSAgICBpZiAoZGlyLT5mZCA8IDApIHsKPiAtICAgICAgICBk
ZWxldGUgZGlyOwo+IC0gICAgICAgIHJldHVybiBudWxscHRyOwo+IC0gICAgfQo+IC0gICAgcmV0
dXJuIGRpcjsKPiArCWRpci0+ZmQgPSBvcGVuKHBhdGgsIE9fUkRPTkxZKTsKPiArCWlmIChkaXIt
PmZkIDwgMCkgewo+ICsJCWRlbGV0ZSBkaXI7Cj4gKwkJcmV0dXJuIG51bGxwdHI7Cj4gKwl9Cj4g
KwlyZXR1cm4gZGlyOwo+ICAgfQo+ICAgCj4gICBESVIgKmZkb3BlbmRpcihpbnQgZmQpCj4gICB7
Cj4gLSAgICBESVIgKmRpcjsKPiAtICAgIHN0cnVjdCBzdGF0IHN0Owo+IC0gICAgaWYgKGZzdGF0
KGZkLCAmc3QpIDwgMCkgewo+IC0gICAgICAgIHJldHVybiBudWxscHRyOwo+IC0gICAgfQo+IC0g
ICAgaWYgKCFTX0lTRElSKHN0LnN0X21vZGUpKSB7Cj4gLSAgICAgICAgZXJybm8gPSBFTk9URElS
Owo+IC0gICAgICAgIHJldHVybiBudWxscHRyOwo+IC0gICAgfQo+IC0gICAgZGlyID0gbmV3IERJ
UjsKPiAtICAgIGRpci0+ZmQgPSBmZDsKPiAtICAgIHJldHVybiBkaXI7Cj4gKwlESVIgKmRpcjsK
PiArCXN0cnVjdCBzdGF0IHN0Owo+ICsJaWYgKGZzdGF0KGZkLCAmc3QpIDwgMCkgewo+ICsJCXJl
dHVybiBudWxscHRyOwo+ICsJfQo+ICsJaWYgKCFTX0lTRElSKHN0LnN0X21vZGUpKSB7Cj4gKwkJ
ZXJybm8gPSBFTk9URElSOwo+ICsJCXJldHVybiBudWxscHRyOwo+ICsJfQo+ICsJZGlyID0gbmV3
IERJUjsKPiArCWRpci0+ZmQgPSBmZDsKPiArCXJldHVybiBkaXI7Cj4gICAKPiAgIH0KPiAgIAo+
ICAgaW50IGRpcmZkKERJUiAqZGlycCkKPiAgIHsKPiAtICAgIGlmICghZGlycCkgewo+IC0gICAg
ICAgIHJldHVybiBsaWJjX2Vycm9yKEVJTlZBTCk7Cj4gLSAgICB9Cj4gKwlpZiAoIWRpcnApIHsK
PiArCQlyZXR1cm4gbGliY19lcnJvcihFSU5WQUwpOwo+ICsJfQo+ICAgCj4gLSAgICByZXR1cm4g
ZGlycC0+ZmQ7Cj4gKwlyZXR1cm4gZGlycC0+ZmQ7Cj4gICB9Cj4gICAKPiAgIGludCBjbG9zZWRp
cihESVIgKmRpcikKPiAgIHsKPiAtICAgIGNsb3NlKGRpci0+ZmQpOwo+IC0gICAgZGVsZXRlIGRp
cjsKPiAtICAgIHJldHVybiAwOwo+ICsJY2xvc2UoZGlyLT5mZCk7Cj4gKwlkZWxldGUgZGlyOwo+
ICsJcmV0dXJuIDA7Cj4gICB9Cj4gICAKPiAgIHN0cnVjdCBkaXJlbnQgKnJlYWRkaXIoRElSICpk
aXIpCj4gICB7Cj4gLSAgICBzdGF0aWMgX190aHJlYWQgc3RydWN0IGRpcmVudCBlbnRyeSwgKnJl
c3VsdDsKPiAtICAgIGludCByZXQ7Cj4gKwlzdGF0aWMgX190aHJlYWQgc3RydWN0IGRpcmVudCBl
bnRyeSwgKnJlc3VsdDsKPiArCWludCByZXQ7Cj4gICAKPiAtICAgIHJldCA9IHJlYWRkaXJfcihk
aXIsICZlbnRyeSwgJnJlc3VsdCk7Cj4gLSAgICBpZiAocmV0KQo+IC0gICAgICAgIHJldHVybiBs
aWJjX2Vycm9yX3B0cjxzdHJ1Y3QgZGlyZW50PihyZXQpOwo+ICsJcmV0ID0gcmVhZGRpcl9yKGRp
ciwgJmVudHJ5LCAmcmVzdWx0KTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIGxpYmNfZXJyb3Jf
cHRyPHN0cnVjdCBkaXJlbnQ+KHJldCk7Cj4gICAKPiAtICAgIGVycm5vID0gMDsKPiAtICAgIHJl
dHVybiByZXN1bHQ7Cj4gKwllcnJubyA9IDA7Cj4gKwlyZXR1cm4gcmVzdWx0Owo+ICAgfQo+ICAg
Cj4gICBpbnQgcmVhZGRpcl9yKERJUiAqZGlyLCBzdHJ1Y3QgZGlyZW50ICplbnRyeSwgc3RydWN0
IGRpcmVudCAqKnJlc3VsdCkKPiAgIHsKPiAtICAgIGludCBlcnJvcjsKPiAtICAgIHN0cnVjdCBm
aWxlICpmcDsKPiAtCj4gLSAgICB0cmFjZV92ZnNfcmVhZGRpcihkaXItPmZkLCBlbnRyeSk7Cj4g
LSAgICBlcnJvciA9IGZnZXQoZGlyLT5mZCwgJmZwKTsKPiAtICAgIGlmIChlcnJvcikgewo+IC0g
ICAgICAgIHRyYWNlX3Zmc19yZWFkZGlyX2VycihlcnJvcik7Cj4gLSAgICB9IGVsc2Ugewo+IC0g
ICAgICAgIGVycm9yID0gc3lzX3JlYWRkaXIoZnAsIGVudHJ5KTsKPiAtICAgICAgICBmZHJvcChm
cCk7Cj4gLSAgICAgICAgaWYgKGVycm9yKSB7Cj4gLSAgICAgICAgICAgIHRyYWNlX3Zmc19yZWFk
ZGlyX2VycihlcnJvcik7Cj4gLSAgICAgICAgfSBlbHNlIHsKPiAtICAgICAgICAgICAgdHJhY2Vf
dmZzX3JlYWRkaXJfcmV0KCk7Cj4gLSAgICAgICAgfQo+IC0gICAgfQo+IC0gICAgLy8gT3VyIGRp
cmVudCBoYXMgKGxpa2UgTGludXgpIGEgZF9yZWNsZW4gZmllbGQsIGJ1dCBhIGNvbnN0YW50IHNp
emUuCj4gLSAgICBlbnRyeS0+ZF9yZWNsZW4gPSBzaXplb2YoKmVudHJ5KTsKPiAtCj4gLSAgICBp
ZiAoZXJyb3IpIHsKPiAtICAgICAgICAqcmVzdWx0ID0gbnVsbHB0cjsKPiAtICAgIH0gZWxzZSB7
Cj4gLSAgICAgICAgKnJlc3VsdCA9IGVudHJ5Owo+IC0gICAgfQo+IC0gICAgcmV0dXJuIGVycm9y
ID09IEVOT0VOVCA/IDAgOiBlcnJvcjsKPiArCWludCBlcnJvcjsKPiArCXN0cnVjdCBmaWxlICpm
cDsKPiArCj4gKwl0cmFjZV92ZnNfcmVhZGRpcihkaXItPmZkLCBlbnRyeSk7Cj4gKwllcnJvciA9
IGZnZXQoZGlyLT5mZCwgJmZwKTsKPiArCWlmIChlcnJvcikgewo+ICsJCXRyYWNlX3Zmc19yZWFk
ZGlyX2VycihlcnJvcik7Cj4gKwl9IGVsc2Ugewo+ICsJCWVycm9yID0gc3lzX3JlYWRkaXIoZnAs
IGVudHJ5KTsKPiArCQlmZHJvcChmcCk7Cj4gKwkJaWYgKGVycm9yKSB7Cj4gKwkJCXRyYWNlX3Zm
c19yZWFkZGlyX2VycihlcnJvcik7Cj4gKwkJfSBlbHNlIHsKPiArCQkJdHJhY2VfdmZzX3JlYWRk
aXJfcmV0KCk7Cj4gKwkJfQo+ICsJfQo+ICsJLy8gT3VyIGRpcmVudCBoYXMgKGxpa2UgTGludXgp
IGEgZF9yZWNsZW4gZmllbGQsIGJ1dCBhIGNvbnN0YW50IHNpemUuCj4gKwllbnRyeS0+ZF9yZWNs
ZW4gPSBzaXplb2YoKmVudHJ5KTsKPiArCj4gKwlpZiAoZXJyb3IpIHsKPiArCQkqcmVzdWx0ID0g
bnVsbHB0cjsKPiArCX0gZWxzZSB7Cj4gKwkJKnJlc3VsdCA9IGVudHJ5Owo+ICsJfQo+ICsJcmV0
dXJuIGVycm9yID09IEVOT0VOVCA/IDAgOiBlcnJvcjsKPiAgIH0KPiAgIAo+ICAgLy8gRklYTUU6
IGluIDY0Yml0IGRpcmVudDY0IGFuZCBkaXJlbnQgYXJlIGlkZW50aWNhbCwgc28gaXQncyBzYWZl
IHRvIGFsaWFzCj4gICAjdW5kZWYgcmVhZGRpcjY0X3IKPiAgIGV4dGVybiAiQyIgaW50IHJlYWRk
aXI2NF9yKERJUiAqZGlyLCBzdHJ1Y3QgZGlyZW50NjQgKmVudHJ5LAo+IC0gICAgICAgIHN0cnVj
dCBkaXJlbnQ2NCAqKnJlc3VsdCkKPiAtICAgICAgICBfX2F0dHJpYnV0ZV9fKChhbGlhcygicmVh
ZGRpcl9yIikpKTsKPiArCQlzdHJ1Y3QgZGlyZW50NjQgKipyZXN1bHQpCj4gKwkJX19hdHRyaWJ1
dGVfXygoYWxpYXMoInJlYWRkaXJfciIpKSk7Cj4gICAKPiAgICN1bmRlZiByZWFkZGlyNjQKPiAg
IGV4dGVybiAiQyIgc3RydWN0IGRpcmVudCAqcmVhZGRpcjY0KERJUiAqZGlyKSBfX2F0dHJpYnV0
ZV9fKChhbGlhcygicmVhZGRpciIpKSk7Cj4gICAKPiAgIHZvaWQgcmV3aW5kZGlyKERJUiAqZGly
cCkKPiAgIHsKPiAtICAgIHN0cnVjdCBmaWxlICpmcDsKPiArCXN0cnVjdCBmaWxlICpmcDsKPiAg
IAo+IC0gICAgYXV0byBlcnJvciA9IGZnZXQoZGlycC0+ZmQsICZmcCk7Cj4gLSAgICBpZiAoZXJy
b3IpIHsKPiAtICAgICAgICAvLyBQT1NJWCBzcGVjaWZpZXMgdGhhdCB3aGF0IHJld2luZGRpcigp
IGRvZXMgaW4gdGhlIGNhc2Ugb2YgZXJyb3IKPiAtICAgICAgICAvLyBpcyB1bmRlZmluZWQuLi4K
PiAtICAgICAgICByZXR1cm47Cj4gLSAgICB9Cj4gKwlhdXRvIGVycm9yID0gZmdldChkaXJwLT5m
ZCwgJmZwKTsKPiArCWlmIChlcnJvcikgewo+ICsJCS8vIFBPU0lYIHNwZWNpZmllcyB0aGF0IHdo
YXQgcmV3aW5kZGlyKCkgZG9lcyBpbiB0aGUgY2FzZSBvZiBlcnJvcgo+ICsJCS8vIGlzIHVuZGVm
aW5lZC4uLgo+ICsJCXJldHVybjsKPiArCX0KPiAgIAo+IC0gICAgc3lzX3Jld2luZGRpcihmcCk7
Cj4gLSAgICAvLyBBZ2FpbiwgZXJyb3IgY29kZSBmcm9tIHN5c19yZXdpbmRkaXIoKSBpcyBpZ25v
cmVkLgo+IC0gICAgZmRyb3AoZnApOwo+ICsJc3lzX3Jld2luZGRpcihmcCk7Cj4gKwkvLyBBZ2Fp
biwgZXJyb3IgY29kZSBmcm9tIHN5c19yZXdpbmRkaXIoKSBpcyBpZ25vcmVkLgo+ICsJZmRyb3Ao
ZnApOwo+ICAgfQo+ICAgCj4gICBsb25nIHRlbGxkaXIoRElSICpkaXJwKQo+ICAgewo+IC0gICAg
c3RydWN0IGZpbGUgKmZwOwo+IC0gICAgaW50IGVycm9yID0gZmdldChkaXJwLT5mZCwgJmZwKTsK
PiAtICAgIGlmIChlcnJvcikgewo+IC0gICAgICAgIHJldHVybiBsaWJjX2Vycm9yKGVycm9yKTsK
PiAtICAgIH0KPiArCXN0cnVjdCBmaWxlICpmcDsKPiArCWludCBlcnJvciA9IGZnZXQoZGlycC0+
ZmQsICZmcCk7Cj4gKwlpZiAoZXJyb3IpIHsKPiArCQlyZXR1cm4gbGliY19lcnJvcihlcnJvcik7
Cj4gKwl9Cj4gICAKPiAtICAgIGxvbmcgbG9jOwo+IC0gICAgZXJyb3IgPSBzeXNfdGVsbGRpcihm
cCwgJmxvYyk7Cj4gLSAgICBmZHJvcChmcCk7Cj4gLSAgICBpZiAoZXJyb3IpIHsKPiAtICAgICAg
ICByZXR1cm4gbGliY19lcnJvcihlcnJvcik7Cj4gLSAgICB9Cj4gLSAgICByZXR1cm4gbG9jOwo+
ICsJbG9uZyBsb2M7Cj4gKwllcnJvciA9IHN5c190ZWxsZGlyKGZwLCAmbG9jKTsKPiArCWZkcm9w
KGZwKTsKPiArCWlmIChlcnJvcikgewo+ICsJCXJldHVybiBsaWJjX2Vycm9yKGVycm9yKTsKPiAr
CX0KPiArCXJldHVybiBsb2M7Cj4gICB9Cj4gICAKPiAgIHZvaWQgc2Vla2RpcihESVIgKmRpcnAs
IGxvbmcgbG9jKQo+ICAgewo+IC0gICAgc3RydWN0IGZpbGUgKmZwOwo+IC0gICAgaW50IGVycm9y
ID0gZmdldChkaXJwLT5mZCwgJmZwKTsKPiAtICAgIGlmIChlcnJvcikgewo+IC0gICAgICAgIC8v
IFBPU0lYIHNwZWNpZmllcyBzZWVrZGlyKCkgY2Fubm90IHJldHVybiBlcnJvcnMuCj4gLSAgICAg
ICAgcmV0dXJuOwo+IC0gICAgfQo+IC0gICAgc3lzX3NlZWtkaXIoZnAsIGxvYyk7Cj4gLSAgICAv
LyBBZ2FpbiwgZXJyb3IgY29kZSBmcm9tIHN5c19zZWVrZGlyKCkgaXMgaWdub3JlZC4KPiAtICAg
IGZkcm9wKGZwKTsKPiArCXN0cnVjdCBmaWxlICpmcDsKPiArCWludCBlcnJvciA9IGZnZXQoZGly
cC0+ZmQsICZmcCk7Cj4gKwlpZiAoZXJyb3IpIHsKPiArCQkvLyBQT1NJWCBzcGVjaWZpZXMgc2Vl
a2RpcigpIGNhbm5vdCByZXR1cm4gZXJyb3JzLgo+ICsJCXJldHVybjsKPiArCX0KPiArCXN5c19z
ZWVrZGlyKGZwLCBsb2MpOwo+ICsJLy8gQWdhaW4sIGVycm9yIGNvZGUgZnJvbSBzeXNfc2Vla2Rp
cigpIGlzIGlnbm9yZWQuCj4gKwlmZHJvcChmcCk7Cj4gICB9Cj4gICAKPiAgIFRSQUNFUE9JTlQo
dHJhY2VfdmZzX21rZGlyLCAiXCIlc1wiIDAlMG8iLCBjb25zdCBjaGFyKiwgbW9kZV90KTsKPiBA
QCAtODE3LDI1ICs4MTcsMjUgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbWtkaXJfZXJyLCAiJWQi
LCBpbnQpOwo+ICAgaW50Cj4gICBta2Rpcihjb25zdCBjaGFyICpwYXRobmFtZSwgbW9kZV90IG1v
ZGUpCj4gICB7Cj4gLSAgICBzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKPiAtICAgIGNoYXIg
cGF0aFtQQVRIX01BWF07Cj4gLSAgICBpbnQgZXJyb3I7Cj4gKwlzdHJ1Y3QgdGFzayAqdCA9IG1h
aW5fdGFzazsKPiArCWNoYXIgcGF0aFtQQVRIX01BWF07Cj4gKwlpbnQgZXJyb3I7Cj4gICAKPiAt
ICAgIG1vZGUgPSBhcHBseV91bWFzayhtb2RlKTsKPiArCW1vZGUgPSBhcHBseV91bWFzayhtb2Rl
KTsKPiAgIAo+IC0gICAgdHJhY2VfdmZzX21rZGlyKHBhdGhuYW1lLCBtb2RlKTsKPiAtICAgIGlm
ICgoZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5hbWUsIFZXUklURSwgcGF0aCkpICE9IDApCj4g
LSAgICAgICAgZ290byBvdXRfZXJybm87Cj4gKwl0cmFjZV92ZnNfbWtkaXIocGF0aG5hbWUsIG1v
ZGUpOwo+ICsJaWYgKChlcnJvciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwgVldSSVRFLCBwYXRo
KSkgIT0gMCkKPiArCQlnb3RvIG91dF9lcnJubzsKPiAgIAo+IC0gICAgZXJyb3IgPSBzeXNfbWtk
aXIocGF0aCwgbW9kZSk7Cj4gLSAgICBpZiAoZXJyb3IpCj4gLSAgICAgICAgZ290byBvdXRfZXJy
bm87Cj4gLSAgICB0cmFjZV92ZnNfbWtkaXJfcmV0KCk7Cj4gLSAgICByZXR1cm4gMDsKPiAtICAg
IG91dF9lcnJubzoKPiAtICAgIHRyYWNlX3Zmc19ta2Rpcl9lcnIoZXJyb3IpOwo+IC0gICAgZXJy
bm8gPSBlcnJvcjsKPiAtICAgIHJldHVybiAtMTsKPiArCWVycm9yID0gc3lzX21rZGlyKHBhdGgs
IG1vZGUpOwo+ICsJaWYgKGVycm9yKQo+ICsJCWdvdG8gb3V0X2Vycm5vOwo+ICsJdHJhY2VfdmZz
X21rZGlyX3JldCgpOwo+ICsJcmV0dXJuIDA7Cj4gKwlvdXRfZXJybm86Cj4gKwl0cmFjZV92ZnNf
bWtkaXJfZXJyKGVycm9yKTsKPiArCWVycm5vID0gZXJyb3I7Cj4gKwlyZXR1cm4gLTE7Cj4gICB9
Cj4gICAKPiAgIFRSQUNFUE9JTlQodHJhY2VfdmZzX3JtZGlyLCAiXCIlc1wiIiwgY29uc3QgY2hh
ciopOwo+IEBAIC04NDQsNTEgKzg0NCw1MSBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19ybWRpcl9l
cnIsICIlZCIsIGludCk7Cj4gICAKPiAgIGludCBybWRpcihjb25zdCBjaGFyICpwYXRobmFtZSkK
PiAgIHsKPiAtICAgIHN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOwo+IC0gICAgY2hhciBwYXRo
W1BBVEhfTUFYXTsKPiAtICAgIGludCBlcnJvcjsKPiArCXN0cnVjdCB0YXNrICp0ID0gbWFpbl90
YXNrOwo+ICsJY2hhciBwYXRoW1BBVEhfTUFYXTsKPiArCWludCBlcnJvcjsKPiAgIAo+IC0gICAg
dHJhY2VfdmZzX3JtZGlyKHBhdGhuYW1lKTsKPiAtICAgIGVycm9yID0gRU5PRU5UOwo+IC0gICAg
aWYgKHBhdGhuYW1lID09IG51bGxwdHIpCj4gLSAgICAgICAgZ290byBvdXRfZXJybm87Cj4gLSAg
ICBpZiAoKGVycm9yID0gdGFza19jb252KHQsIHBhdGhuYW1lLCBWV1JJVEUsIHBhdGgpKSAhPSAw
KQo+IC0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwo+ICsJdHJhY2VfdmZzX3JtZGlyKHBhdGhuYW1l
KTsKPiArCWVycm9yID0gRU5PRU5UOwo+ICsJaWYgKHBhdGhuYW1lID09IG51bGxwdHIpCj4gKwkJ
Z290byBvdXRfZXJybm87Cj4gKwlpZiAoKGVycm9yID0gdGFza19jb252KHQsIHBhdGhuYW1lLCBW
V1JJVEUsIHBhdGgpKSAhPSAwKQo+ICsJCWdvdG8gb3V0X2Vycm5vOwo+ICAgCj4gLSAgICBlcnJv
ciA9IHN5c19ybWRpcihwYXRoKTsKPiAtICAgIGlmIChlcnJvcikKPiAtICAgICAgICBnb3RvIG91
dF9lcnJubzsKPiAtICAgIHRyYWNlX3Zmc19ybWRpcl9yZXQoKTsKPiAtICAgIHJldHVybiAwOwo+
IC0gICAgb3V0X2Vycm5vOgo+IC0gICAgdHJhY2VfdmZzX3JtZGlyX2VycihlcnJvcik7Cj4gLSAg
ICBlcnJubyA9IGVycm9yOwo+IC0gICAgcmV0dXJuIC0xOwo+ICsJZXJyb3IgPSBzeXNfcm1kaXIo
cGF0aCk7Cj4gKwlpZiAoZXJyb3IpCj4gKwkJZ290byBvdXRfZXJybm87Cj4gKwl0cmFjZV92ZnNf
cm1kaXJfcmV0KCk7Cj4gKwlyZXR1cm4gMDsKPiArCW91dF9lcnJubzoKPiArCXRyYWNlX3Zmc19y
bWRpcl9lcnIoZXJyb3IpOwo+ICsJZXJybm8gPSBlcnJvcjsKPiArCXJldHVybiAtMTsKPiAgIH0K
PiAgIAo+ICAgc3RhdGljIHZvaWQKPiAgIGdldF9sYXN0X2NvbXBvbmVudChjb25zdCBjaGFyICpw
YXRoLCBjaGFyICpkc3QpCj4gICB7Cj4gLSAgICBpbnQgcG9zID0gc3RybGVuKHBhdGgpIC0gMTsK
PiArCWludCBwb3MgPSBzdHJsZW4ocGF0aCkgLSAxOwo+ICAgCj4gLSAgICB3aGlsZSAocG9zID49
IDAgJiYgcGF0aFtwb3NdID09ICcvJykKPiAtICAgICAgICBwb3MtLTsKPiArCXdoaWxlIChwb3Mg
Pj0gMCAmJiBwYXRoW3Bvc10gPT0gJy8nKQo+ICsJCXBvcy0tOwo+ICAgCj4gLSAgICBpbnQgY29t
cG9uZW50X2VuZCA9IHBvczsKPiArCWludCBjb21wb25lbnRfZW5kID0gcG9zOwo+ICAgCj4gLSAg
ICB3aGlsZSAocG9zID49IDAgJiYgcGF0aFtwb3NdICE9ICcvJykKPiAtICAgICAgICBwb3MtLTsK
PiArCXdoaWxlIChwb3MgPj0gMCAmJiBwYXRoW3Bvc10gIT0gJy8nKQo+ICsJCXBvcy0tOwo+ICAg
Cj4gLSAgICBpbnQgY29tcG9uZW50X3N0YXJ0ID0gcG9zICsgMTsKPiArCWludCBjb21wb25lbnRf
c3RhcnQgPSBwb3MgKyAxOwo+ICAgCj4gLSAgICBpbnQgbGVuID0gY29tcG9uZW50X2VuZCAtIGNv
bXBvbmVudF9zdGFydCArIDE7Cj4gLSAgICBtZW1jcHkoZHN0LCBwYXRoICsgY29tcG9uZW50X3N0
YXJ0LCBsZW4pOwo+IC0gICAgZHN0W2xlbl0gPSAwOwo+ICsJaW50IGxlbiA9IGNvbXBvbmVudF9l
bmQgLSBjb21wb25lbnRfc3RhcnQgKyAxOwo+ICsJbWVtY3B5KGRzdCwgcGF0aCArIGNvbXBvbmVu
dF9zdGFydCwgbGVuKTsKPiArCWRzdFtsZW5dID0gMDsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIGJv
b2wgbnVsbF9vcl9lbXB0eShjb25zdCBjaGFyICpzdHIpCj4gICB7Cj4gLSAgICByZXR1cm4gc3Ry
ID09IG51bGxwdHIgfHwgKnN0ciA9PSAnXDAnOwo+ICsJcmV0dXJuIHN0ciA9PSBudWxscHRyIHx8
ICpzdHIgPT0gJ1wwJzsKPiAgIH0KPiAgIAo+ICAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfcmVuYW1l
LCAiXCIlc1wiIFwiJXNcIiIsIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKik7Cj4gQEAgLTg5Nyw0
MyArODk3LDQzIEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX3JlbmFtZV9lcnIsICIlZCIsIGludCk7
Cj4gICAKPiAgIGludCByZW5hbWUoY29uc3QgY2hhciAqb2xkcGF0aCwgY29uc3QgY2hhciAqbmV3
cGF0aCkKPiAgIHsKPiAtICAgIHRyYWNlX3Zmc19yZW5hbWUob2xkcGF0aCwgbmV3cGF0aCk7Cj4g
LSAgICBzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKPiAtICAgIGNoYXIgc3JjW1BBVEhfTUFY
XTsKPiAtICAgIGNoYXIgZGVzdFtQQVRIX01BWF07Cj4gLSAgICBpbnQgZXJyb3I7Cj4gLQo+IC0g
ICAgZXJyb3IgPSBFTk9FTlQ7Cj4gLSAgICBpZiAobnVsbF9vcl9lbXB0eShvbGRwYXRoKSB8fCBu
dWxsX29yX2VtcHR5KG5ld3BhdGgpKQo+IC0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwo+IC0KPiAt
ICAgIGdldF9sYXN0X2NvbXBvbmVudChvbGRwYXRoLCBzcmMpOwo+IC0gICAgaWYgKCFzdHJjbXAo
c3JjLCAiLiIpIHx8ICFzdHJjbXAoc3JjLCAiLi4iKSkgewo+IC0gICAgICAgIGVycm9yID0gRUlO
VkFMOwo+IC0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwo+IC0gICAgfQo+IC0KPiAtICAgIGdldF9s
YXN0X2NvbXBvbmVudChuZXdwYXRoLCBkZXN0KTsKPiAtICAgIGlmICghc3RyY21wKGRlc3QsICIu
IikgfHwgIXN0cmNtcChkZXN0LCAiLi4iKSkgewo+IC0gICAgICAgIGVycm9yID0gRUlOVkFMOwo+
IC0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwo+IC0gICAgfQo+IC0KPiAtICAgIGlmICgoZXJyb3Ig
PSB0YXNrX2NvbnYodCwgb2xkcGF0aCwgVlJFQUQsIHNyYykpICE9IDApCj4gLSAgICAgICAgZ290
byBvdXRfZXJybm87Cj4gLQo+IC0gICAgaWYgKChlcnJvciA9IHRhc2tfY29udih0LCBuZXdwYXRo
LCBWV1JJVEUsIGRlc3QpKSAhPSAwKQo+IC0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwo+IC0KPiAt
ICAgIGVycm9yID0gc3lzX3JlbmFtZShzcmMsIGRlc3QpOwo+IC0gICAgaWYgKGVycm9yKQo+IC0g
ICAgICAgIGdvdG8gb3V0X2Vycm5vOwo+IC0gICAgdHJhY2VfdmZzX3JlbmFtZV9yZXQoKTsKPiAt
ICAgIHJldHVybiAwOwo+IC0gICAgb3V0X2Vycm5vOgo+IC0gICAgdHJhY2VfdmZzX3JlbmFtZV9l
cnIoZXJyb3IpOwo+IC0gICAgZXJybm8gPSBlcnJvcjsKPiAtICAgIHJldHVybiAtMTsKPiArCXRy
YWNlX3Zmc19yZW5hbWUob2xkcGF0aCwgbmV3cGF0aCk7Cj4gKwlzdHJ1Y3QgdGFzayAqdCA9IG1h
aW5fdGFzazsKPiArCWNoYXIgc3JjW1BBVEhfTUFYXTsKPiArCWNoYXIgZGVzdFtQQVRIX01BWF07
Cj4gKwlpbnQgZXJyb3I7Cj4gKwo+ICsJZXJyb3IgPSBFTk9FTlQ7Cj4gKwlpZiAobnVsbF9vcl9l
bXB0eShvbGRwYXRoKSB8fCBudWxsX29yX2VtcHR5KG5ld3BhdGgpKQo+ICsJCWdvdG8gb3V0X2Vy
cm5vOwo+ICsKPiArCWdldF9sYXN0X2NvbXBvbmVudChvbGRwYXRoLCBzcmMpOwo+ICsJaWYgKCFz
dHJjbXAoc3JjLCAiLiIpIHx8ICFzdHJjbXAoc3JjLCAiLi4iKSkgewo+ICsJCWVycm9yID0gRUlO
VkFMOwo+ICsJCWdvdG8gb3V0X2Vycm5vOwo+ICsJfQo+ICsKPiArCWdldF9sYXN0X2NvbXBvbmVu
dChuZXdwYXRoLCBkZXN0KTsKPiArCWlmICghc3RyY21wKGRlc3QsICIuIikgfHwgIXN0cmNtcChk
ZXN0LCAiLi4iKSkgewo+ICsJCWVycm9yID0gRUlOVkFMOwo+ICsJCWdvdG8gb3V0X2Vycm5vOwo+
ICsJfQo+ICsKPiArCWlmICgoZXJyb3IgPSB0YXNrX2NvbnYodCwgb2xkcGF0aCwgVlJFQUQsIHNy
YykpICE9IDApCj4gKwkJZ290byBvdXRfZXJybm87Cj4gKwo+ICsJaWYgKChlcnJvciA9IHRhc2tf
Y29udih0LCBuZXdwYXRoLCBWV1JJVEUsIGRlc3QpKSAhPSAwKQo+ICsJCWdvdG8gb3V0X2Vycm5v
Owo+ICsKPiArCWVycm9yID0gc3lzX3JlbmFtZShzcmMsIGRlc3QpOwo+ICsJaWYgKGVycm9yKQo+
ICsJCWdvdG8gb3V0X2Vycm5vOwo+ICsJdHJhY2VfdmZzX3JlbmFtZV9yZXQoKTsKPiArCXJldHVy
biAwOwo+ICsJb3V0X2Vycm5vOgo+ICsJdHJhY2VfdmZzX3JlbmFtZV9lcnIoZXJyb3IpOwo+ICsJ
ZXJybm8gPSBlcnJvcjsKPiArCXJldHVybiAtMTsKPiAgIH0KPiAgIAo+ICAgVFJBQ0VQT0lOVCh0
cmFjZV92ZnNfY2hkaXIsICJcIiVzXCIiLCBjb25zdCBjaGFyKik7Cj4gQEAgLTk0MSw1OCArOTQx
LDU4IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2NoZGlyX3JldCwgIiIpOwo+ICAgVFJBQ0VQT0lO
VCh0cmFjZV92ZnNfY2hkaXJfZXJyLCAiJWQiLCBpbnQpOwo+ICAgCj4gICBzdGF0aWMgaW50IHJl
cGxhY2VfY3dkKHN0cnVjdCB0YXNrICp0LCBzdHJ1Y3QgZmlsZSAqbmV3X2N3ZGZwLAo+IC0gICAg
ICAgICAgICAgICAgICAgICAgIHN0ZDo6ZnVuY3Rpb248aW50ICh2b2lkKT4gY2hkaXJfZnVuYykK
PiArCQkJCQkgICBzdGQ6OmZ1bmN0aW9uPGludCAodm9pZCk+IGNoZGlyX2Z1bmMpCj4gICB7Cj4g
LSAgICBzdHJ1Y3QgZmlsZSAqb2xkID0gbnVsbHB0cjsKPiArCXN0cnVjdCBmaWxlICpvbGQgPSBu
dWxscHRyOwo+ICAgCj4gLSAgICBpZiAoIXQpIHsKPiAtICAgICAgICByZXR1cm4gMDsKPiAtICAg
IH0KPiArCWlmICghdCkgewo+ICsJCXJldHVybiAwOwo+ICsJfQo+ICAgCj4gLSAgICBpZiAodC0+
dF9jd2RmcCkgewo+IC0gICAgICAgIG9sZCA9IHQtPnRfY3dkZnA7Cj4gLSAgICB9Cj4gKwlpZiAo
dC0+dF9jd2RmcCkgewo+ICsJCW9sZCA9IHQtPnRfY3dkZnA7Cj4gKwl9Cj4gICAKPiAtICAgIC8q
IERvIHRoZSBhY3R1YWwgY2hkaXIgb3BlcmF0aW9uIGhlcmUgKi8KPiAtICAgIGludCBlcnJvciA9
IGNoZGlyX2Z1bmMoKTsKPiArCS8qIERvIHRoZSBhY3R1YWwgY2hkaXIgb3BlcmF0aW9uIGhlcmUg
Ki8KPiArCWludCBlcnJvciA9IGNoZGlyX2Z1bmMoKTsKPiAgIAo+IC0gICAgdC0+dF9jd2RmcCA9
IG5ld19jd2RmcDsKPiAtICAgIGlmIChvbGQpIHsKPiAtICAgICAgICBmZHJvcChvbGQpOwo+IC0g
ICAgfQo+ICsJdC0+dF9jd2RmcCA9IG5ld19jd2RmcDsKPiArCWlmIChvbGQpIHsKPiArCQlmZHJv
cChvbGQpOwo+ICsJfQo+ICAgCj4gLSAgICByZXR1cm4gZXJyb3I7Cj4gKwlyZXR1cm4gZXJyb3I7
Cj4gICB9Cj4gICAKPiAgIGludCBjaGRpcihjb25zdCBjaGFyICpwYXRobmFtZSkKPiAgIHsKPiAt
ICAgIHRyYWNlX3Zmc19jaGRpcihwYXRobmFtZSk7Cj4gLSAgICBzdHJ1Y3QgdGFzayAqdCA9IG1h
aW5fdGFzazsKPiAtICAgIGNoYXIgcGF0aFtQQVRIX01BWF07Cj4gLSAgICBzdHJ1Y3QgZmlsZSAq
ZnA7Cj4gLSAgICBpbnQgZXJyb3I7Cj4gKwl0cmFjZV92ZnNfY2hkaXIocGF0aG5hbWUpOwo+ICsJ
c3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7Cj4gKwljaGFyIHBhdGhbUEFUSF9NQVhdOwo+ICsJ
c3RydWN0IGZpbGUgKmZwOwo+ICsJaW50IGVycm9yOwo+ICAgCj4gLSAgICBlcnJvciA9IEVOT0VO
VDsKPiAtICAgIGlmIChwYXRobmFtZSA9PSBudWxscHRyKQo+IC0gICAgICAgIGdvdG8gb3V0X2Vy
cm5vOwo+ICsJZXJyb3IgPSBFTk9FTlQ7Cj4gKwlpZiAocGF0aG5hbWUgPT0gbnVsbHB0cikKPiAr
CQlnb3RvIG91dF9lcnJubzsKPiAgIAo+IC0gICAgaWYgKChlcnJvciA9IHRhc2tfY29udih0LCBw
YXRobmFtZSwgVlJFQUQsIHBhdGgpKSAhPSAwKQo+IC0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwo+
ICsJaWYgKChlcnJvciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwgVlJFQUQsIHBhdGgpKSAhPSAw
KQo+ICsJCWdvdG8gb3V0X2Vycm5vOwo+ICAgCj4gLSAgICAvKiBDaGVjayBpZiBkaXJlY3Rvcnkg
ZXhpdHMgKi8KPiAtICAgIGVycm9yID0gc3lzX29wZW4ocGF0aCwgT19ESVJFQ1RPUlksIDAsICZm
cCk7Cj4gLSAgICBpZiAoZXJyb3IpIHsKPiAtICAgICAgICBnb3RvIG91dF9lcnJubzsKPiAtICAg
IH0KPiArCS8qIENoZWNrIGlmIGRpcmVjdG9yeSBleGl0cyAqLwo+ICsJZXJyb3IgPSBzeXNfb3Bl
bihwYXRoLCBPX0RJUkVDVE9SWSwgMCwgJmZwKTsKPiArCWlmIChlcnJvcikgewo+ICsJCWdvdG8g
b3V0X2Vycm5vOwo+ICsJfQo+ICAgCj4gLSAgICByZXBsYWNlX2N3ZCh0LCBmcCwgWyZdKCkgeyBz
dHJsY3B5KHQtPnRfY3dkLCBwYXRoLCBzaXplb2YodC0+dF9jd2QpKTsgcmV0dXJuIDA7IH0pOwo+
ICsJcmVwbGFjZV9jd2QodCwgZnAsIFsmXSgpIHsgc3RybGNweSh0LT50X2N3ZCwgcGF0aCwgc2l6
ZW9mKHQtPnRfY3dkKSk7IHJldHVybiAwOyB9KTsKPiAgIAo+IC0gICAgdHJhY2VfdmZzX2NoZGly
X3JldCgpOwo+IC0gICAgcmV0dXJuIDA7Cj4gLSAgICBvdXRfZXJybm86Cj4gLSAgICBlcnJubyA9
IGVycm9yOwo+IC0gICAgdHJhY2VfdmZzX2NoZGlyX2VycihlcnJubyk7Cj4gLSAgICByZXR1cm4g
LTE7Cj4gKwl0cmFjZV92ZnNfY2hkaXJfcmV0KCk7Cj4gKwlyZXR1cm4gMDsKPiArCW91dF9lcnJu
bzoKPiArCWVycm5vID0gZXJyb3I7Cj4gKwl0cmFjZV92ZnNfY2hkaXJfZXJyKGVycm5vKTsKPiAr
CXJldHVybiAtMTsKPiAgIH0KPiAgIAo+ICAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZmNoZGlyLCAi
JWQiLCBpbnQpOwo+IEBAIC0xMDAxLDI4ICsxMDAxLDI4IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZz
X2ZjaGRpcl9lcnIsICIlZCIsIGludCk7Cj4gICAKPiAgIGludCBmY2hkaXIoaW50IGZkKQo+ICAg
ewo+IC0gICAgdHJhY2VfdmZzX2ZjaGRpcihmZCk7Cj4gLSAgICBzdHJ1Y3QgdGFzayAqdCA9IG1h
aW5fdGFzazsKPiAtICAgIHN0cnVjdCBmaWxlICpmcDsKPiAtICAgIGludCBlcnJvcjsKPiArCXRy
YWNlX3Zmc19mY2hkaXIoZmQpOwo+ICsJc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7Cj4gKwlz
dHJ1Y3QgZmlsZSAqZnA7Cj4gKwlpbnQgZXJyb3I7Cj4gICAKPiAtICAgIGVycm9yID0gZmdldChm
ZCwgJmZwKTsKPiAtICAgIGlmIChlcnJvcikKPiAtICAgICAgICBnb3RvIG91dF9lcnJubzsKPiAr
CWVycm9yID0gZmdldChmZCwgJmZwKTsKPiArCWlmIChlcnJvcikKPiArCQlnb3RvIG91dF9lcnJu
bzsKPiAgIAo+IC0gICAgZXJyb3IgPSByZXBsYWNlX2N3ZCh0LCBmcCwgWyZdKCkgeyByZXR1cm4g
c3lzX2ZjaGRpcihmcCwgdC0+dF9jd2QpOyB9KTsKPiAtICAgIGlmIChlcnJvcikgewo+IC0gICAg
ICAgIGZkcm9wKGZwKTsKPiAtICAgICAgICBnb3RvIG91dF9lcnJubzsKPiAtICAgIH0KPiArCWVy
cm9yID0gcmVwbGFjZV9jd2QodCwgZnAsIFsmXSgpIHsgcmV0dXJuIHN5c19mY2hkaXIoZnAsIHQt
PnRfY3dkKTsgfSk7Cj4gKwlpZiAoZXJyb3IpIHsKPiArCQlmZHJvcChmcCk7Cj4gKwkJZ290byBv
dXRfZXJybm87Cj4gKwl9Cj4gICAKPiAtICAgIHRyYWNlX3Zmc19mY2hkaXJfcmV0KCk7Cj4gLSAg
ICByZXR1cm4gMDsKPiArCXRyYWNlX3Zmc19mY2hkaXJfcmV0KCk7Cj4gKwlyZXR1cm4gMDsKPiAg
IAo+IC0gICAgb3V0X2Vycm5vOgo+IC0gICAgdHJhY2VfdmZzX2ZjaGRpcl9lcnIoZXJyb3IpOwo+
IC0gICAgZXJybm8gPSBlcnJvcjsKPiAtICAgIHJldHVybiAtMTsKPiArCW91dF9lcnJubzoKPiAr
CXRyYWNlX3Zmc19mY2hkaXJfZXJyKGVycm9yKTsKPiArCWVycm5vID0gZXJyb3I7Cj4gKwlyZXR1
cm4gLTE7Cj4gICB9Cj4gICAKPiAgIFRSQUNFUE9JTlQodHJhY2VfdmZzX2xpbmssICJcIiVzXCIg
XCIlc1wiIiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKTsKPiBAQCAtMTAzMSwzMCArMTAzMSwz
MCBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19saW5rX2VyciwgIiVkIiwgaW50KTsKPiAgIAo+ICAg
aW50IGxpbmsoY29uc3QgY2hhciAqb2xkcGF0aCwgY29uc3QgY2hhciAqbmV3cGF0aCkKPiAgIHsK
PiAtICAgIHN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOwo+IC0gICAgY2hhciBwYXRoMVtQQVRI
X01BWF07Cj4gLSAgICBjaGFyIHBhdGgyW1BBVEhfTUFYXTsKPiAtICAgIGludCBlcnJvcjsKPiAr
CXN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOwo+ICsJY2hhciBwYXRoMVtQQVRIX01BWF07Cj4g
KwljaGFyIHBhdGgyW1BBVEhfTUFYXTsKPiArCWludCBlcnJvcjsKPiAgIAo+IC0gICAgdHJhY2Vf
dmZzX2xpbmsob2xkcGF0aCwgbmV3cGF0aCk7Cj4gKwl0cmFjZV92ZnNfbGluayhvbGRwYXRoLCBu
ZXdwYXRoKTsKPiAgIAo+IC0gICAgZXJyb3IgPSBFTk9FTlQ7Cj4gLSAgICBpZiAob2xkcGF0aCA9
PSBudWxscHRyIHx8IG5ld3BhdGggPT0gbnVsbHB0cikKPiAtICAgICAgICBnb3RvIG91dF9lcnJu
bzsKPiAtICAgIGlmICgoZXJyb3IgPSB0YXNrX2NvbnYodCwgb2xkcGF0aCwgVldSSVRFLCBwYXRo
MSkpICE9IDApCj4gLSAgICAgICAgZ290byBvdXRfZXJybm87Cj4gLSAgICBpZiAoKGVycm9yID0g
dGFza19jb252KHQsIG5ld3BhdGgsIFZXUklURSwgcGF0aDIpKSAhPSAwKQo+IC0gICAgICAgIGdv
dG8gb3V0X2Vycm5vOwo+ICsJZXJyb3IgPSBFTk9FTlQ7Cj4gKwlpZiAob2xkcGF0aCA9PSBudWxs
cHRyIHx8IG5ld3BhdGggPT0gbnVsbHB0cikKPiArCQlnb3RvIG91dF9lcnJubzsKPiArCWlmICgo
ZXJyb3IgPSB0YXNrX2NvbnYodCwgb2xkcGF0aCwgVldSSVRFLCBwYXRoMSkpICE9IDApCj4gKwkJ
Z290byBvdXRfZXJybm87Cj4gKwlpZiAoKGVycm9yID0gdGFza19jb252KHQsIG5ld3BhdGgsIFZX
UklURSwgcGF0aDIpKSAhPSAwKQo+ICsJCWdvdG8gb3V0X2Vycm5vOwo+ICAgCj4gLSAgICBlcnJv
ciA9IHN5c19saW5rKHBhdGgxLCBwYXRoMik7Cj4gLSAgICBpZiAoZXJyb3IpCj4gLSAgICAgICAg
Z290byBvdXRfZXJybm87Cj4gLSAgICB0cmFjZV92ZnNfbGlua19yZXQoKTsKPiAtICAgIHJldHVy
biAwOwo+IC0gICAgb3V0X2Vycm5vOgo+IC0gICAgdHJhY2VfdmZzX2xpbmtfZXJyKGVycm9yKTsK
PiAtICAgIGVycm5vID0gZXJyb3I7Cj4gLSAgICByZXR1cm4gLTE7Cj4gKwllcnJvciA9IHN5c19s
aW5rKHBhdGgxLCBwYXRoMik7Cj4gKwlpZiAoZXJyb3IpCj4gKwkJZ290byBvdXRfZXJybm87Cj4g
Kwl0cmFjZV92ZnNfbGlua19yZXQoKTsKPiArCXJldHVybiAwOwo+ICsJb3V0X2Vycm5vOgo+ICsJ
dHJhY2VfdmZzX2xpbmtfZXJyKGVycm9yKTsKPiArCWVycm5vID0gZXJyb3I7Cj4gKwlyZXR1cm4g
LTE7Cj4gICB9Cj4gICAKPiAgIAo+IEBAIC0xMDY0LDI2ICsxMDY0LDI2IEBAIFRSQUNFUE9JTlQo
dHJhY2VfdmZzX3N5bWxpbmtfZXJyLCAiZXJybm89JWQiLCBpbnQpOwo+ICAgCj4gICBpbnQgc3lt
bGluayhjb25zdCBjaGFyICpvbGRwYXRoLCBjb25zdCBjaGFyICpuZXdwYXRoKQo+ICAgewo+IC0g
ICAgaW50IGVycm9yOwo+ICsJaW50IGVycm9yOwo+ICAgCj4gLSAgICB0cmFjZV92ZnNfc3ltbGlu
ayhvbGRwYXRoLCBuZXdwYXRoKTsKPiArCXRyYWNlX3Zmc19zeW1saW5rKG9sZHBhdGgsIG5ld3Bh
dGgpOwo+ICAgCj4gLSAgICBlcnJvciA9IEVOT0VOVDsKPiAtICAgIGlmIChvbGRwYXRoID09IG51
bGxwdHIgfHwgbmV3cGF0aCA9PSBudWxscHRyKSB7Cj4gLSAgICAgICAgZXJybm8gPSBFTk9FTlQ7
Cj4gLSAgICAgICAgdHJhY2VfdmZzX3N5bWxpbmtfZXJyKGVycm9yKTsKPiAtICAgICAgICByZXR1
cm4gKC0xKTsKPiAtICAgIH0KPiArCWVycm9yID0gRU5PRU5UOwo+ICsJaWYgKG9sZHBhdGggPT0g
bnVsbHB0ciB8fCBuZXdwYXRoID09IG51bGxwdHIpIHsKPiArCQllcnJubyA9IEVOT0VOVDsKPiAr
CQl0cmFjZV92ZnNfc3ltbGlua19lcnIoZXJyb3IpOwo+ICsJCXJldHVybiAoLTEpOwo+ICsJfQo+
ICAgCj4gLSAgICBlcnJvciA9IHN5c19zeW1saW5rKG9sZHBhdGgsIG5ld3BhdGgpOwo+IC0gICAg
aWYgKGVycm9yKSB7Cj4gLSAgICAgICAgZXJybm8gPSBlcnJvcjsKPiAtICAgICAgICB0cmFjZV92
ZnNfc3ltbGlua19lcnIoZXJyb3IpOwo+IC0gICAgICAgIHJldHVybiAoLTEpOwo+IC0gICAgfQo+
ICsJZXJyb3IgPSBzeXNfc3ltbGluayhvbGRwYXRoLCBuZXdwYXRoKTsKPiArCWlmIChlcnJvcikg
ewo+ICsJCWVycm5vID0gZXJyb3I7Cj4gKwkJdHJhY2VfdmZzX3N5bWxpbmtfZXJyKGVycm9yKTsK
PiArCQlyZXR1cm4gKC0xKTsKPiArCX0KPiAgIAo+IC0gICAgdHJhY2VfdmZzX3N5bWxpbmtfcmV0
KCk7Cj4gLSAgICByZXR1cm4gMDsKPiArCXRyYWNlX3Zmc19zeW1saW5rX3JldCgpOwo+ICsJcmV0
dXJuIDA7Cj4gICB9Cj4gICAKPiAgIFRSQUNFUE9JTlQodHJhY2VfdmZzX3VubGluaywgIlwiJXNc
IiIsIGNvbnN0IGNoYXIqKTsKPiBAQCAtMTA5MiwyNiArMTA5MiwyNiBAQCBUUkFDRVBPSU5UKHRy
YWNlX3Zmc191bmxpbmtfZXJyLCAiJWQiLCBpbnQpOwo+ICAgCj4gICBpbnQgdW5saW5rKGNvbnN0
IGNoYXIgKnBhdGhuYW1lKQo+ICAgewo+IC0gICAgdHJhY2VfdmZzX3VubGluayhwYXRobmFtZSk7
Cj4gLSAgICBzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKPiAtICAgIGNoYXIgcGF0aFtQQVRI
X01BWF07Cj4gLSAgICBpbnQgZXJyb3I7Cj4gKwl0cmFjZV92ZnNfdW5saW5rKHBhdGhuYW1lKTsK
PiArCXN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOwo+ICsJY2hhciBwYXRoW1BBVEhfTUFYXTsK
PiArCWludCBlcnJvcjsKPiAgIAo+IC0gICAgZXJyb3IgPSBFTk9FTlQ7Cj4gLSAgICBpZiAocGF0
aG5hbWUgPT0gbnVsbHB0cikKPiAtICAgICAgICBnb3RvIG91dF9lcnJubzsKPiAtICAgIGlmICgo
ZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5hbWUsIFZXUklURSwgcGF0aCkpICE9IDApCj4gLSAg
ICAgICAgZ290byBvdXRfZXJybm87Cj4gKwllcnJvciA9IEVOT0VOVDsKPiArCWlmIChwYXRobmFt
ZSA9PSBudWxscHRyKQo+ICsJCWdvdG8gb3V0X2Vycm5vOwo+ICsJaWYgKChlcnJvciA9IHRhc2tf
Y29udih0LCBwYXRobmFtZSwgVldSSVRFLCBwYXRoKSkgIT0gMCkKPiArCQlnb3RvIG91dF9lcnJu
bzsKPiAgIAo+IC0gICAgZXJyb3IgPSBzeXNfdW5saW5rKHBhdGgpOwo+IC0gICAgaWYgKGVycm9y
KQo+IC0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwo+IC0gICAgdHJhY2VfdmZzX3VubGlua19yZXQo
KTsKPiAtICAgIHJldHVybiAwOwo+IC0gICAgb3V0X2Vycm5vOgo+IC0gICAgdHJhY2VfdmZzX3Vu
bGlua19lcnIoZXJyb3IpOwo+IC0gICAgZXJybm8gPSBlcnJvcjsKPiAtICAgIHJldHVybiAtMTsK
PiArCWVycm9yID0gc3lzX3VubGluayhwYXRoKTsKPiArCWlmIChlcnJvcikKPiArCQlnb3RvIG91
dF9lcnJubzsKPiArCXRyYWNlX3Zmc191bmxpbmtfcmV0KCk7Cj4gKwlyZXR1cm4gMDsKPiArCW91
dF9lcnJubzoKPiArCXRyYWNlX3Zmc191bmxpbmtfZXJyKGVycm9yKTsKPiArCWVycm5vID0gZXJy
b3I7Cj4gKwlyZXR1cm4gLTE7Cj4gICB9Cj4gICAKPiAgIFRSQUNFUE9JTlQodHJhY2VfdmZzX3N0
YXQsICJcIiVzXCIgJXAiLCBjb25zdCBjaGFyKiwgc3RydWN0IHN0YXQqKTsKPiBAQCAtMTEyMSwz
MyArMTEyMSwzMyBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19zdGF0X2VyciwgIiVkIiwgaW50KTsK
PiAgIGV4dGVybiAiQyIKPiAgIGludCBfX3hzdGF0KGludCB2ZXIsIGNvbnN0IGNoYXIgKnBhdGhu
YW1lLCBzdHJ1Y3Qgc3RhdCAqc3QpCj4gICB7Cj4gLSAgICBzdHJ1Y3QgdGFzayAqdCA9IG1haW5f
dGFzazsKPiAtICAgIGNoYXIgcGF0aFtQQVRIX01BWF07Cj4gLSAgICBpbnQgZXJyb3I7Cj4gKwlz
dHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKPiArCWNoYXIgcGF0aFtQQVRIX01BWF07Cj4gKwlp
bnQgZXJyb3I7Cj4gICAKPiAtICAgIHRyYWNlX3Zmc19zdGF0KHBhdGhuYW1lLCBzdCk7Cj4gKwl0
cmFjZV92ZnNfc3RhdChwYXRobmFtZSwgc3QpOwo+ICAgCj4gLSAgICBlcnJvciA9IHRhc2tfY29u
dih0LCBwYXRobmFtZSwgMCwgcGF0aCk7Cj4gLSAgICBpZiAoZXJyb3IpCj4gLSAgICAgICAgZ290
byBvdXRfZXJybm87Cj4gKwllcnJvciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwgMCwgcGF0aCk7
Cj4gKwlpZiAoZXJyb3IpCj4gKwkJZ290byBvdXRfZXJybm87Cj4gICAKPiAtICAgIGVycm9yID0g
c3lzX3N0YXQocGF0aCwgc3QpOwo+IC0gICAgaWYgKGVycm9yKQo+IC0gICAgICAgIGdvdG8gb3V0
X2Vycm5vOwo+IC0gICAgdHJhY2VfdmZzX3N0YXRfcmV0KCk7Cj4gLSAgICByZXR1cm4gMDsKPiAr
CWVycm9yID0gc3lzX3N0YXQocGF0aCwgc3QpOwo+ICsJaWYgKGVycm9yKQo+ICsJCWdvdG8gb3V0
X2Vycm5vOwo+ICsJdHJhY2VfdmZzX3N0YXRfcmV0KCk7Cj4gKwlyZXR1cm4gMDsKPiAgIAo+IC0g
ICAgb3V0X2Vycm5vOgo+IC0gICAgdHJhY2VfdmZzX3N0YXRfZXJyKGVycm9yKTsKPiAtICAgIGVy
cm5vID0gZXJyb3I7Cj4gLSAgICByZXR1cm4gLTE7Cj4gKwlvdXRfZXJybm86Cj4gKwl0cmFjZV92
ZnNfc3RhdF9lcnIoZXJyb3IpOwo+ICsJZXJybm8gPSBlcnJvcjsKPiArCXJldHVybiAtMTsKPiAg
IH0KPiAgIAo+ICAgTEZTNjQoX194c3RhdCk7Cj4gICAKPiAgIGludCBzdGF0KGNvbnN0IGNoYXIg
KnBhdGhuYW1lLCBzdHJ1Y3Qgc3RhdCAqc3QpCj4gICB7Cj4gLSAgICByZXR1cm4gX194c3RhdCgx
LCBwYXRobmFtZSwgc3QpOwo+ICsJcmV0dXJuIF9feHN0YXQoMSwgcGF0aG5hbWUsIHN0KTsKPiAg
IH0KPiAgIAo+ICAgTEZTNjQoc3RhdCk7Cj4gQEAgLTExNTgsMzUgKzExNTgsMzUgQEAgVFJBQ0VQ
T0lOVCh0cmFjZV92ZnNfbHN0YXRfZXJyLCAiZXJybm89JWQiLCBpbnQpOwo+ICAgZXh0ZXJuICJD
Igo+ICAgaW50IF9fbHhzdGF0KGludCB2ZXIsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBzdHJ1Y3Qg
c3RhdCAqc3QpCj4gICB7Cj4gLSAgICBzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKPiAtICAg
IGNoYXIgcGF0aFtQQVRIX01BWF07Cj4gLSAgICBpbnQgZXJyb3I7Cj4gKwlzdHJ1Y3QgdGFzayAq
dCA9IG1haW5fdGFzazsKPiArCWNoYXIgcGF0aFtQQVRIX01BWF07Cj4gKwlpbnQgZXJyb3I7Cj4g
ICAKPiAtICAgIHRyYWNlX3Zmc19sc3RhdChwYXRobmFtZSwgc3QpOwo+ICsJdHJhY2VfdmZzX2xz
dGF0KHBhdGhuYW1lLCBzdCk7Cj4gICAKPiAtICAgIGVycm9yID0gdGFza19jb252KHQsIHBhdGhu
YW1lLCAwLCBwYXRoKTsKPiAtICAgIGlmIChlcnJvcikgewo+IC0gICAgICAgIGVycm5vID0gZXJy
b3I7Cj4gLSAgICAgICAgdHJhY2VfdmZzX2xzdGF0X2VycihlcnJvcik7Cj4gLSAgICAgICAgcmV0
dXJuICgtMSk7Cj4gLSAgICB9Cj4gKwllcnJvciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwgMCwg
cGF0aCk7Cj4gKwlpZiAoZXJyb3IpIHsKPiArCQllcnJubyA9IGVycm9yOwo+ICsJCXRyYWNlX3Zm
c19sc3RhdF9lcnIoZXJyb3IpOwo+ICsJCXJldHVybiAoLTEpOwo+ICsJfQo+ICAgCj4gLSAgICBl
cnJvciA9IHN5c19sc3RhdChwYXRoLCBzdCk7Cj4gLSAgICBpZiAoZXJyb3IpIHsKPiAtICAgICAg
ICBlcnJubyA9IGVycm9yOwo+IC0gICAgICAgIHRyYWNlX3Zmc19sc3RhdF9lcnIoZXJyb3IpOwo+
IC0gICAgICAgIHJldHVybiAoLTEpOwo+IC0gICAgfQo+ICsJZXJyb3IgPSBzeXNfbHN0YXQocGF0
aCwgc3QpOwo+ICsJaWYgKGVycm9yKSB7Cj4gKwkJZXJybm8gPSBlcnJvcjsKPiArCQl0cmFjZV92
ZnNfbHN0YXRfZXJyKGVycm9yKTsKPiArCQlyZXR1cm4gKC0xKTsKPiArCX0KPiAgIAo+IC0gICAg
dHJhY2VfdmZzX2xzdGF0X3JldCgpOwo+IC0gICAgcmV0dXJuIDA7Cj4gKwl0cmFjZV92ZnNfbHN0
YXRfcmV0KCk7Cj4gKwlyZXR1cm4gMDsKPiAgIH0KPiAgIAo+ICAgTEZTNjQoX19seHN0YXQpOwo+
ICAgCj4gICBpbnQgbHN0YXQoY29uc3QgY2hhciAqcGF0aG5hbWUsIHN0cnVjdCBzdGF0ICpzdCkK
PiAgIHsKPiAtICAgIHJldHVybiBfX2x4c3RhdCgxLCBwYXRobmFtZSwgc3QpOwo+ICsJcmV0dXJu
IF9fbHhzdGF0KDEsIHBhdGhuYW1lLCBzdCk7Cj4gICB9Cj4gICAKPiAgIExGUzY0KGxzdGF0KTsK
PiBAQCAtMTE5OCwyNCArMTE5OCwyNCBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19zdGF0ZnNfZXJy
LCAiJWQiLCBpbnQpOwo+ICAgZXh0ZXJuICJDIgo+ICAgaW50IF9fc3RhdGZzKGNvbnN0IGNoYXIg
KnBhdGhuYW1lLCBzdHJ1Y3Qgc3RhdGZzICpidWYpCj4gICB7Cj4gLSAgICB0cmFjZV92ZnNfc3Rh
dGZzKHBhdGhuYW1lLCBidWYpOwo+IC0gICAgc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7Cj4g
LSAgICBjaGFyIHBhdGhbUEFUSF9NQVhdOwo+IC0gICAgaW50IGVycm9yOwo+IC0KPiAtICAgIGVy
cm9yID0gdGFza19jb252KHQsIHBhdGhuYW1lLCAwLCBwYXRoKTsKPiAtICAgIGlmIChlcnJvcikK
PiAtICAgICAgICBnb3RvIG91dF9lcnJubzsKPiAtCj4gLSAgICBlcnJvciA9IHN5c19zdGF0ZnMo
cGF0aCwgYnVmKTsKPiAtICAgIGlmIChlcnJvcikKPiAtICAgICAgICBnb3RvIG91dF9lcnJubzsK
PiAtICAgIHRyYWNlX3Zmc19zdGF0ZnNfcmV0KCk7Cj4gLSAgICByZXR1cm4gMDsKPiAtICAgIG91
dF9lcnJubzoKPiAtICAgIHRyYWNlX3Zmc19zdGF0ZnNfZXJyKGVycm9yKTsKPiAtICAgIGVycm5v
ID0gZXJyb3I7Cj4gLSAgICByZXR1cm4gLTE7Cj4gKwl0cmFjZV92ZnNfc3RhdGZzKHBhdGhuYW1l
LCBidWYpOwo+ICsJc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7Cj4gKwljaGFyIHBhdGhbUEFU
SF9NQVhdOwo+ICsJaW50IGVycm9yOwo+ICsKPiArCWVycm9yID0gdGFza19jb252KHQsIHBhdGhu
YW1lLCAwLCBwYXRoKTsKPiArCWlmIChlcnJvcikKPiArCQlnb3RvIG91dF9lcnJubzsKPiArCj4g
KwllcnJvciA9IHN5c19zdGF0ZnMocGF0aCwgYnVmKTsKPiArCWlmIChlcnJvcikKPiArCQlnb3Rv
IG91dF9lcnJubzsKPiArCXRyYWNlX3Zmc19zdGF0ZnNfcmV0KCk7Cj4gKwlyZXR1cm4gMDsKPiAr
CW91dF9lcnJubzoKPiArCXRyYWNlX3Zmc19zdGF0ZnNfZXJyKGVycm9yKTsKPiArCWVycm5vID0g
ZXJyb3I7Cj4gKwlyZXR1cm4gLTE7Cj4gICB9Cj4gICB3ZWFrX2FsaWFzKF9fc3RhdGZzLCBzdGF0
ZnMpOwo+ICAgCj4gQEAgLTEyMjgsMjYgKzEyMjgsMjYgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNf
ZnN0YXRmc19lcnIsICIlZCIsIGludCk7Cj4gICBleHRlcm4gIkMiCj4gICBpbnQgX19mc3RhdGZz
KGludCBmZCwgc3RydWN0IHN0YXRmcyAqYnVmKQo+ICAgewo+IC0gICAgc3RydWN0IGZpbGUgKmZw
Owo+IC0gICAgaW50IGVycm9yOwo+ICsJc3RydWN0IGZpbGUgKmZwOwo+ICsJaW50IGVycm9yOwo+
ICAgCj4gLSAgICB0cmFjZV92ZnNfZnN0YXRmcyhmZCwgYnVmKTsKPiAtICAgIGVycm9yID0gZmdl
dChmZCwgJmZwKTsKPiAtICAgIGlmIChlcnJvcikKPiAtICAgICAgICBnb3RvIG91dF9lcnJubzsK
PiArCXRyYWNlX3Zmc19mc3RhdGZzKGZkLCBidWYpOwo+ICsJZXJyb3IgPSBmZ2V0KGZkLCAmZnAp
Owo+ICsJaWYgKGVycm9yKQo+ICsJCWdvdG8gb3V0X2Vycm5vOwo+ICAgCj4gLSAgICBlcnJvciA9
IHN5c19mc3RhdGZzKGZwLCBidWYpOwo+IC0gICAgZmRyb3AoZnApOwo+ICsJZXJyb3IgPSBzeXNf
ZnN0YXRmcyhmcCwgYnVmKTsKPiArCWZkcm9wKGZwKTsKPiAgIAo+IC0gICAgaWYgKGVycm9yKQo+
IC0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwo+IC0gICAgdHJhY2VfdmZzX2ZzdGF0ZnNfcmV0KCk7
Cj4gLSAgICByZXR1cm4gMDsKPiArCWlmIChlcnJvcikKPiArCQlnb3RvIG91dF9lcnJubzsKPiAr
CXRyYWNlX3Zmc19mc3RhdGZzX3JldCgpOwo+ICsJcmV0dXJuIDA7Cj4gICAKPiAtICAgIG91dF9l
cnJubzoKPiAtICAgIHRyYWNlX3Zmc19mc3RhdGZzX2VycihlcnJvcik7Cj4gLSAgICBlcnJubyA9
IGVycm9yOwo+IC0gICAgcmV0dXJuIC0xOwo+ICsJb3V0X2Vycm5vOgo+ICsJdHJhY2VfdmZzX2Zz
dGF0ZnNfZXJyKGVycm9yKTsKPiArCWVycm5vID0gZXJyb3I7Cj4gKwlyZXR1cm4gLTE7Cj4gICB9
Cj4gICB3ZWFrX2FsaWFzKF9fZnN0YXRmcywgZnN0YXRmcyk7Cj4gICAKPiBAQCAtMTI1NiwyOCAr
MTI1NiwyOCBAQCBMRlM2NChmc3RhdGZzKTsKPiAgIHN0YXRpYyBpbnQKPiAgIHN0YXRmc190b19z
dGF0dmZzKHN0cnVjdCBzdGF0dmZzICpkc3QsIHN0cnVjdCBzdGF0ZnMgKnNyYykKPiAgIHsKPiAt
ICAgIGRzdC0+Zl9ic2l6ZSA9IHNyYy0+Zl9ic2l6ZTsKPiAtICAgIGRzdC0+Zl9mcnNpemUgPSBz
cmMtPmZfYnNpemU7Cj4gLSAgICBkc3QtPmZfYmxvY2tzID0gc3JjLT5mX2Jsb2NrczsKPiAtICAg
IGRzdC0+Zl9iZnJlZSA9IHNyYy0+Zl9iZnJlZTsKPiAtICAgIGRzdC0+Zl9iYXZhaWwgPSBzcmMt
PmZfYmF2YWlsOwo+IC0gICAgZHN0LT5mX2ZpbGVzID0gc3JjLT5mX2ZpbGVzOwo+IC0gICAgZHN0
LT5mX2ZmcmVlID0gc3JjLT5mX2ZmcmVlOwo+IC0gICAgZHN0LT5mX2ZhdmFpbCA9IDA7Cj4gLSAg
ICBkc3QtPmZfZnNpZCA9IHNyYy0+Zl9mc2lkLl9fdmFsWzBdOwo+IC0gICAgZHN0LT5mX2ZsYWcg
PSBzcmMtPmZfZmxhZ3M7Cj4gLSAgICBkc3QtPmZfbmFtZW1heCA9IHNyYy0+Zl9uYW1lbGVuOwo+
IC0gICAgcmV0dXJuIDA7Cj4gKwlkc3QtPmZfYnNpemUgPSBzcmMtPmZfYnNpemU7Cj4gKwlkc3Qt
PmZfZnJzaXplID0gc3JjLT5mX2JzaXplOwo+ICsJZHN0LT5mX2Jsb2NrcyA9IHNyYy0+Zl9ibG9j
a3M7Cj4gKwlkc3QtPmZfYmZyZWUgPSBzcmMtPmZfYmZyZWU7Cj4gKwlkc3QtPmZfYmF2YWlsID0g
c3JjLT5mX2JhdmFpbDsKPiArCWRzdC0+Zl9maWxlcyA9IHNyYy0+Zl9maWxlczsKPiArCWRzdC0+
Zl9mZnJlZSA9IHNyYy0+Zl9mZnJlZTsKPiArCWRzdC0+Zl9mYXZhaWwgPSAwOwo+ICsJZHN0LT5m
X2ZzaWQgPSBzcmMtPmZfZnNpZC5fX3ZhbFswXTsKPiArCWRzdC0+Zl9mbGFnID0gc3JjLT5mX2Zs
YWdzOwo+ICsJZHN0LT5mX25hbWVtYXggPSBzcmMtPmZfbmFtZWxlbjsKPiArCXJldHVybiAwOwo+
ICAgfQo+ICAgCj4gICBpbnQKPiAgIHN0YXR2ZnMoY29uc3QgY2hhciAqcGF0aG5hbWUsIHN0cnVj
dCBzdGF0dmZzICpidWYpCj4gICB7Cj4gLSAgICBzdHJ1Y3Qgc3RhdGZzIHN0Owo+ICsJc3RydWN0
IHN0YXRmcyBzdDsKPiAgIAo+IC0gICAgaWYgKF9fc3RhdGZzKHBhdGhuYW1lLCAmc3QpIDwgMCkK
PiAtICAgICAgICByZXR1cm4gLTE7Cj4gLSAgICByZXR1cm4gc3RhdGZzX3RvX3N0YXR2ZnMoYnVm
LCAmc3QpOwo+ICsJaWYgKF9fc3RhdGZzKHBhdGhuYW1lLCAmc3QpIDwgMCkKPiArCQlyZXR1cm4g
LTE7Cj4gKwlyZXR1cm4gc3RhdGZzX3RvX3N0YXR2ZnMoYnVmLCAmc3QpOwo+ICAgfQo+ICAgCj4g
ICBMRlM2NChzdGF0dmZzKTsKPiBAQCAtMTI4NSwxMSArMTI4NSwxMSBAQCBMRlM2NChzdGF0dmZz
KTsKPiAgIGludAo+ICAgZnN0YXR2ZnMoaW50IGZkLCBzdHJ1Y3Qgc3RhdHZmcyAqYnVmKQo+ICAg
ewo+IC0gICAgc3RydWN0IHN0YXRmcyBzdDsKPiArCXN0cnVjdCBzdGF0ZnMgc3Q7Cj4gICAKPiAt
ICAgIGlmIChfX2ZzdGF0ZnMoZmQsICZzdCkgPCAwKQo+IC0gICAgICAgIHJldHVybiAtMTsKPiAt
ICAgIHJldHVybiBzdGF0ZnNfdG9fc3RhdHZmcyhidWYsICZzdCk7Cj4gKwlpZiAoX19mc3RhdGZz
KGZkLCAmc3QpIDwgMCkKPiArCQlyZXR1cm4gLTE7Cj4gKwlyZXR1cm4gc3RhdGZzX3RvX3N0YXR2
ZnMoYnVmLCAmc3QpOwo+ICAgfQo+ICAgCj4gICBMRlM2NChmc3RhdHZmcyk7Cj4gQEAgLTEzMDEs
MzkgKzEzMDEsMzkgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZ2V0Y3dkX2VyciwgIiVkIiwgaW50
KTsKPiAgIAo+ICAgY2hhciAqZ2V0Y3dkKGNoYXIgKnBhdGgsIHNpemVfdCBzaXplKQo+ICAgewo+
IC0gICAgdHJhY2VfdmZzX2dldGN3ZChwYXRoLCBzaXplKTsKPiAtICAgIHN0cnVjdCB0YXNrICp0
ID0gbWFpbl90YXNrOwo+IC0gICAgaW50IGxlbiA9IHN0cmxlbih0LT50X2N3ZCkgKyAxOwo+IC0g
ICAgaW50IGVycm9yOwo+IC0KPiAtICAgIGlmICghcGF0aCkgewo+IC0gICAgICAgIGlmICghc2l6
ZSkKPiAtICAgICAgICAgICAgc2l6ZSA9IGxlbjsKPiAtICAgICAgICBwYXRoID0gKGNoYXIqKW1h
bGxvYyhzaXplKTsKPiAtICAgICAgICBpZiAoIXBhdGgpIHsKPiAtICAgICAgICAgICAgZXJyb3Ig
PSBFTk9NRU07Cj4gLSAgICAgICAgICAgIGdvdG8gb3V0X2Vycm5vOwo+IC0gICAgICAgIH0KPiAt
ICAgIH0gZWxzZSB7Cj4gLSAgICAgICAgaWYgKCFzaXplKSB7Cj4gLSAgICAgICAgICAgIGVycm9y
ID0gRUlOVkFMOwo+IC0gICAgICAgICAgICBnb3RvIG91dF9lcnJubzsKPiAtICAgICAgICB9Cj4g
LSAgICB9Cj4gLQo+IC0gICAgaWYgKHNpemUgPCBsZW4pIHsKPiAtICAgICAgICBlcnJvciA9IEVS
QU5HRTsKPiAtICAgICAgICBnb3RvIG91dF9lcnJubzsKPiAtICAgIH0KPiAtCj4gLSAgICBtZW1j
cHkocGF0aCwgdC0+dF9jd2QsIGxlbik7Cj4gLSAgICB0cmFjZV92ZnNfZ2V0Y3dkX3JldChwYXRo
KTsKPiAtICAgIHJldHVybiBwYXRoOwo+IC0KPiAtICAgIG91dF9lcnJubzoKPiAtICAgIHRyYWNl
X3Zmc19nZXRjd2RfZXJyKGVycm9yKTsKPiAtICAgIGVycm5vID0gZXJyb3I7Cj4gLSAgICByZXR1
cm4gbnVsbHB0cjsKPiArCXRyYWNlX3Zmc19nZXRjd2QocGF0aCwgc2l6ZSk7Cj4gKwlzdHJ1Y3Qg
dGFzayAqdCA9IG1haW5fdGFzazsKPiArCWludCBsZW4gPSBzdHJsZW4odC0+dF9jd2QpICsgMTsK
PiArCWludCBlcnJvcjsKPiArCj4gKwlpZiAoIXBhdGgpIHsKPiArCQlpZiAoIXNpemUpCj4gKwkJ
CXNpemUgPSBsZW47Cj4gKwkJcGF0aCA9IChjaGFyKiltYWxsb2Moc2l6ZSk7Cj4gKwkJaWYgKCFw
YXRoKSB7Cj4gKwkJCWVycm9yID0gRU5PTUVNOwo+ICsJCQlnb3RvIG91dF9lcnJubzsKPiArCQl9
Cj4gKwl9IGVsc2Ugewo+ICsJCWlmICghc2l6ZSkgewo+ICsJCQllcnJvciA9IEVJTlZBTDsKPiAr
CQkJZ290byBvdXRfZXJybm87Cj4gKwkJfQo+ICsJfQo+ICsKPiArCWlmIChzaXplIDwgbGVuKSB7
Cj4gKwkJZXJyb3IgPSBFUkFOR0U7Cj4gKwkJZ290byBvdXRfZXJybm87Cj4gKwl9Cj4gKwo+ICsJ
bWVtY3B5KHBhdGgsIHQtPnRfY3dkLCBsZW4pOwo+ICsJdHJhY2VfdmZzX2dldGN3ZF9yZXQocGF0
aCk7Cj4gKwlyZXR1cm4gcGF0aDsKPiArCj4gKwlvdXRfZXJybm86Cj4gKwl0cmFjZV92ZnNfZ2V0
Y3dkX2VycihlcnJvcik7Cj4gKwllcnJubyA9IGVycm9yOwo+ICsJcmV0dXJuIG51bGxwdHI7Cj4g
ICB9Cj4gICAKPiAgIFRSQUNFUE9JTlQodHJhY2VfdmZzX2R1cCwgIiVkIiwgaW50KTsKPiBAQCAt
MTM0NCwyOSArMTM0NCwyOSBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19kdXBfZXJyLCAiJWQiLCBp
bnQpOwo+ICAgICovCj4gICBpbnQgZHVwKGludCBvbGRmZCkKPiAgIHsKPiAtICAgIHN0cnVjdCBm
aWxlICpmcDsKPiAtICAgIGludCBuZXdmZDsKPiAtICAgIGludCBlcnJvcjsKPiArCXN0cnVjdCBm
aWxlICpmcDsKPiArCWludCBuZXdmZDsKPiArCWludCBlcnJvcjsKPiAgIAo+IC0gICAgdHJhY2Vf
dmZzX2R1cChvbGRmZCk7Cj4gLSAgICBlcnJvciA9IGZnZXQob2xkZmQsICZmcCk7Cj4gLSAgICBp
ZiAoZXJyb3IpCj4gLSAgICAgICAgZ290byBvdXRfZXJybm87Cj4gKwl0cmFjZV92ZnNfZHVwKG9s
ZGZkKTsKPiArCWVycm9yID0gZmdldChvbGRmZCwgJmZwKTsKPiArCWlmIChlcnJvcikKPiArCQln
b3RvIG91dF9lcnJubzsKPiAgIAo+IC0gICAgZXJyb3IgPSBmZGFsbG9jKGZwLCAmbmV3ZmQpOwo+
IC0gICAgaWYgKGVycm9yKQo+IC0gICAgICAgIGdvdG8gb3V0X2Zkcm9wOwo+ICsJZXJyb3IgPSBm
ZGFsbG9jKGZwLCAmbmV3ZmQpOwo+ICsJaWYgKGVycm9yKQo+ICsJCWdvdG8gb3V0X2Zkcm9wOwo+
ICAgCj4gLSAgICBmZHJvcChmcCk7Cj4gLSAgICB0cmFjZV92ZnNfZHVwX3JldChuZXdmZCk7Cj4g
LSAgICByZXR1cm4gbmV3ZmQ7Cj4gKwlmZHJvcChmcCk7Cj4gKwl0cmFjZV92ZnNfZHVwX3JldChu
ZXdmZCk7Cj4gKwlyZXR1cm4gbmV3ZmQ7Cj4gICAKPiAtICAgIG91dF9mZHJvcDoKPiAtICAgIGZk
cm9wKGZwKTsKPiAtICAgIG91dF9lcnJubzoKPiAtICAgIHRyYWNlX3Zmc19kdXBfZXJyKGVycm9y
KTsKPiAtICAgIGVycm5vID0gZXJyb3I7Cj4gLSAgICByZXR1cm4gLTE7Cj4gKwlvdXRfZmRyb3A6
Cj4gKwlmZHJvcChmcCk7Cj4gKwlvdXRfZXJybm86Cj4gKwl0cmFjZV92ZnNfZHVwX2VycihlcnJv
cik7Cj4gKwllcnJubyA9IGVycm9yOwo+ICsJcmV0dXJuIC0xOwo+ICAgfQo+ICAgCj4gICBUUkFD
RVBPSU5UKHRyYWNlX3Zmc19kdXAzLCAiJWQgJWQgMHgleCIsIGludCwgaW50LCBpbnQpOwo+IEBA
IC0xMzc3LDUwICsxMzc3LDUwIEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2R1cDNfZXJyLCAiJWQi
LCBpbnQpOwo+ICAgICovCj4gICBpbnQgZHVwMyhpbnQgb2xkZmQsIGludCBuZXdmZCwgaW50IGZs
YWdzKQo+ICAgewo+IC0gICAgc3RydWN0IGZpbGUgKmZwOwo+IC0gICAgaW50IGVycm9yOwo+IC0K
PiAtICAgIHRyYWNlX3Zmc19kdXAzKG9sZGZkLCBuZXdmZCwgZmxhZ3MpOwo+IC0gICAgLyoKPiAt
ICAgICAqIERvbid0IGFsbG93IGFueSBhcmd1bWVudCBidXQgT19DTE9FWEVDLiAgQnV0IHdlIGV2
ZW4gaWdub3JlCj4gLSAgICAgKiB0aGF0IGFzIHdlIGRvbid0IHN1cHBvcnQgZXhlYygpIGFuZCB0
aHVzIGRvbid0IGNhcmUuCj4gLSAgICAgKi8KPiAtICAgIGlmICgoZmxhZ3MgJiB+T19DTE9FWEVD
KSAhPSAwKSB7Cj4gLSAgICAgICAgZXJyb3IgPSBFSU5WQUw7Cj4gLSAgICAgICAgZ290byBvdXRf
ZXJybm87Cj4gLSAgICB9Cj4gKwlzdHJ1Y3QgZmlsZSAqZnA7Cj4gKwlpbnQgZXJyb3I7Cj4gKwo+
ICsJdHJhY2VfdmZzX2R1cDMob2xkZmQsIG5ld2ZkLCBmbGFncyk7Cj4gKwkvKgo+ICsJICogRG9u
J3QgYWxsb3cgYW55IGFyZ3VtZW50IGJ1dCBPX0NMT0VYRUMuICBCdXQgd2UgZXZlbiBpZ25vcmUK
PiArCSAqIHRoYXQgYXMgd2UgZG9uJ3Qgc3VwcG9ydCBleGVjKCkgYW5kIHRodXMgZG9uJ3QgY2Fy
ZS4KPiArCSAqLwo+ICsJaWYgKChmbGFncyAmIH5PX0NMT0VYRUMpICE9IDApIHsKPiArCQllcnJv
ciA9IEVJTlZBTDsKPiArCQlnb3RvIG91dF9lcnJubzsKPiArCX0KPiAgIAo+IC0gICAgaWYgKG9s
ZGZkID09IG5ld2ZkKSB7Cj4gLSAgICAgICAgZXJyb3IgPSBFSU5WQUw7Cj4gLSAgICAgICAgZ290
byBvdXRfZXJybm87Cj4gLSAgICB9Cj4gKwlpZiAob2xkZmQgPT0gbmV3ZmQpIHsKPiArCQllcnJv
ciA9IEVJTlZBTDsKPiArCQlnb3RvIG91dF9lcnJubzsKPiArCX0KPiAgIAo+IC0gICAgZXJyb3Ig
PSBmZ2V0KG9sZGZkLCAmZnApOwo+IC0gICAgaWYgKGVycm9yKQo+IC0gICAgICAgIGdvdG8gb3V0
X2Vycm5vOwo+ICsJZXJyb3IgPSBmZ2V0KG9sZGZkLCAmZnApOwo+ICsJaWYgKGVycm9yKQo+ICsJ
CWdvdG8gb3V0X2Vycm5vOwo+ICAgCj4gLSAgICBlcnJvciA9IGZkc2V0KG5ld2ZkLCBmcCk7Cj4g
LSAgICBpZiAoZXJyb3IpIHsKPiAtICAgICAgICBmZHJvcChmcCk7Cj4gLSAgICAgICAgZ290byBv
dXRfZXJybm87Cj4gLSAgICB9Cj4gKwllcnJvciA9IGZkc2V0KG5ld2ZkLCBmcCk7Cj4gKwlpZiAo
ZXJyb3IpIHsKPiArCQlmZHJvcChmcCk7Cj4gKwkJZ290byBvdXRfZXJybm87Cj4gKwl9Cj4gICAK
PiAtICAgIGZkcm9wKGZwKTsKPiAtICAgIHRyYWNlX3Zmc19kdXAzX3JldChuZXdmZCk7Cj4gLSAg
ICByZXR1cm4gbmV3ZmQ7Cj4gKwlmZHJvcChmcCk7Cj4gKwl0cmFjZV92ZnNfZHVwM19yZXQobmV3
ZmQpOwo+ICsJcmV0dXJuIG5ld2ZkOwo+ICAgCj4gLSAgICBvdXRfZXJybm86Cj4gLSAgICB0cmFj
ZV92ZnNfZHVwM19lcnIoZXJyb3IpOwo+IC0gICAgZXJybm8gPSBlcnJvcjsKPiAtICAgIHJldHVy
biAtMTsKPiArCW91dF9lcnJubzoKPiArCXRyYWNlX3Zmc19kdXAzX2VycihlcnJvcik7Cj4gKwll
cnJubyA9IGVycm9yOwo+ICsJcmV0dXJuIC0xOwo+ICAgfQo+ICAgCj4gICBpbnQgZHVwMihpbnQg
b2xkZmQsIGludCBuZXdmZCkKPiAgIHsKPiAtICAgIGlmIChvbGRmZCA9PSBuZXdmZCkKPiAtICAg
ICAgICByZXR1cm4gbmV3ZmQ7Cj4gKwlpZiAob2xkZmQgPT0gbmV3ZmQpCj4gKwkJcmV0dXJuIG5l
d2ZkOwo+ICAgCj4gLSAgICByZXR1cm4gZHVwMyhvbGRmZCwgbmV3ZmQsIDApOwo+ICsJcmV0dXJu
IGR1cDMob2xkZmQsIG5ld2ZkLCAwKTsKPiAgIH0KPiAgIAo+ICAgLyoKPiBAQCAtMTQzNSw4MyAr
MTQzNSw4MyBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19mY250bF9lcnIsICIlZCIsIGludCk7Cj4g
ICBleHRlcm4gIkMiCj4gICBpbnQgZmNudGwoaW50IGZkLCBpbnQgY21kLCBpbnQgYXJnKQo+ICAg
ewo+IC0gICAgc3RydWN0IGZpbGUgKmZwOwo+IC0gICAgaW50IHJldCA9IDAsIGVycm9yOwo+IC0g
ICAgaW50IHRtcDsKPiAtCj4gLSAgICB0cmFjZV92ZnNfZmNudGwoZmQsIGNtZCwgYXJnKTsKPiAt
ICAgIGVycm9yID0gZmdldChmZCwgJmZwKTsKPiAtICAgIGlmIChlcnJvcikKPiAtICAgICAgICBn
b3RvIG91dF9lcnJubzsKPiAtCj4gLSAgICAvLyBBbiBpbXBvcnRhbnQgbm90ZSBhYm91dCBvdXIg
aGFuZGxpbmcgb2YgRkRfQ0xPRVhFQyAvIE9fQ0xPRVhFQzoKPiAtICAgIC8vIGNsb3NlLW9uLWV4
ZWMgc2hvdWxkbid0IGhhdmUgYmVlbiBhIGZpbGUgZmxhZyAoZnAtPmZfZmxhZ3MpIC0gaXQgaXMg
YQo+IC0gICAgLy8gZmlsZSBkZXNjcmlwdG9yIGZsYWcsIG1lYW5pbmcgdGhhdCB0aGF0IHR3byBk
dXAoKWVkIGZpbGUgZGVzY3JpcHRvcnMKPiAtICAgIC8vIGNvdWxkIGhhdmUgZGlmZmVyZW50IHZh
bHVlcyBmb3IgRkRfQ0xPRVhFQy4gT3VyIGN1cnJlbnQgaW1wbGVtZW50YXRpb24KPiAtICAgIC8v
ICp3cm9uZ2x5KiBtYWtlcyBjbG9zZS1vbi1leGVjIGFuIGZfZmxhZyAodXNpbmcgdGhlIGJpdCBP
X0NMT0VYRUMpLgo+IC0gICAgLy8gVGhlcmUgaXMgbGl0dGxlIHByYWN0aWNhbCBkaWZmZXJlbmNl
LCB0aG91Z2gsIGJlY2F1c2UgdGhpcyBmbGFnIGlzCj4gLSAgICAvLyBpZ25vcmVkIGluIE9TdiBh
bnl3YXksIGFzIGl0IGRvZXNuJ3Qgc3VwcG9ydCBleGVjKCkuCj4gLSAgICBzd2l0Y2ggKGNtZCkg
ewo+IC0gICAgY2FzZSBGX0RVUEZEOgo+IC0gICAgICAgIGVycm9yID0gX2ZkYWxsb2MoZnAsICZy
ZXQsIGFyZyk7Cj4gLSAgICAgICAgaWYgKGVycm9yKQo+IC0gICAgICAgICAgICBnb3RvIG91dF9l
cnJubzsKPiAtICAgICAgICBicmVhazsKPiAtICAgIGNhc2UgRl9HRVRGRDoKPiAtICAgICAgICBy
ZXQgPSAoZnAtPmZfZmxhZ3MgJiBPX0NMT0VYRUMpID8gRkRfQ0xPRVhFQyA6IDA7Cj4gLSAgICAg
ICAgYnJlYWs7Cj4gLSAgICBjYXNlIEZfU0VURkQ6Cj4gLSAgICAgICAgRkRfTE9DSyhmcCk7Cj4g
LSAgICAgICAgZnAtPmZfZmxhZ3MgPSAoZnAtPmZfZmxhZ3MgJiB+T19DTE9FWEVDKSB8Cj4gLSAg
ICAgICAgICAgICAgICAoKGFyZyAmIEZEX0NMT0VYRUMpID8gT19DTE9FWEVDIDogMCk7Cj4gLSAg
ICAgICAgRkRfVU5MT0NLKGZwKTsKPiAtICAgICAgICBicmVhazsKPiAtICAgIGNhc2UgRl9HRVRG
TDoKPiAtICAgICAgICAvLyBBcyBleHBsYWluZWQgYWJvdmUsIHRoZSBPX0NMT0VYRUMgc2hvdWxk
IGhhdmUgYmVlbiBpbiBmX2ZsYWdzLAo+IC0gICAgICAgIC8vIGFuZCBzaG91bGRuJ3QgYmUgcmV0
dXJuZWQuIExpbnV4IGFsd2F5cyByZXR1cm5zIDAxMDAwMDAgKCJ0aGUKPiAtICAgICAgICAvLyBm
bGFnIGZvcm1lcmx5IGtub3duIGFzIE9fTEFSR0VGSUxFKSBzbyBsZXQncyBkbyBpdCB0b28uCj4g
LSAgICAgICAgcmV0ID0gKG9mbGFncyhmcC0+Zl9mbGFncykgJiB+T19DTE9FWEVDKSB8IDAxMDAw
MDA7Cj4gLSAgICAgICAgYnJlYWs7Cj4gLSAgICBjYXNlIEZfU0VURkw6Cj4gLSAgICAgICAgRkRf
TE9DSyhmcCk7Cj4gLSAgICAgICAgZnAtPmZfZmxhZ3MgPSBmZmxhZ3MoKG9mbGFncyhmcC0+Zl9m
bGFncykgJiB+U0VURkwpIHwKPiAtICAgICAgICAgICAgICAgIChhcmcgJiBTRVRGTCkpOwo+IC0g
ICAgICAgIEZEX1VOTE9DSyhmcCk7Cj4gLQo+IC0gICAgICAgIC8qIFN5bmMgbm9uYmxvY2tpbmcv
YXN5bmMgc3RhdGUgd2l0aCBmaWxlIGZsYWdzICovCj4gLSAgICAgICAgdG1wID0gZnAtPmZfZmxh
Z3MgJiBGTk9OQkxPQ0s7Cj4gLSAgICAgICAgZnAtPmlvY3RsKEZJT05CSU8sICZ0bXApOwo+IC0g
ICAgICAgIHRtcCA9IGZwLT5mX2ZsYWdzICYgRkFTWU5DOwo+IC0gICAgICAgIGZwLT5pb2N0bChG
SU9BU1lOQywgJnRtcCk7Cj4gLQo+IC0gICAgICAgIGJyZWFrOwo+IC0gICAgY2FzZSBGX1NFVExL
Ogo+IC0gICAgICAgIFdBUk5fT05DRSgiZmNudGwoRl9TRVRMSykgc3R1YmJlZFxuIik7Cj4gLSAg
ICAgICAgYnJlYWs7Cj4gLSAgICBjYXNlIEZfR0VUTEs6Cj4gLSAgICAgICAgV0FSTl9PTkNFKCJm
Y250bChGX0dFVExLKSBzdHViYmVkXG4iKTsKPiAtICAgICAgICBicmVhazsKPiAtICAgIGNhc2Ug
Rl9TRVRMS1c6Cj4gLSAgICAgICAgV0FSTl9PTkNFKCJmY250bChGX1NFVExLVykgc3R1YmJlZFxu
Iik7Cj4gLSAgICAgICAgYnJlYWs7Cj4gLSAgICBjYXNlIEZfU0VUT1dOOgo+IC0gICAgICAgIFdB
Uk5fT05DRSgiZmNudGwoRl9TRVRPV04pIHN0dWJiZWRcbiIpOwo+IC0gICAgICAgIGJyZWFrOwo+
IC0gICAgZGVmYXVsdDoKPiAtICAgICAgICBrcHJpbnRmKCJ1bnN1cHBvcnRlZCBmY250bCBjbWQg
MHgleFxuIiwgY21kKTsKPiAtICAgICAgICBlcnJvciA9IEVJTlZBTDsKPiAtICAgIH0KPiAtCj4g
LSAgICBmZHJvcChmcCk7Cj4gLSAgICBpZiAoZXJyb3IpCj4gLSAgICAgICAgZ290byBvdXRfZXJy
bm87Cj4gLSAgICB0cmFjZV92ZnNfZmNudGxfcmV0KHJldCk7Cj4gLSAgICByZXR1cm4gcmV0Owo+
IC0KPiAtICAgIG91dF9lcnJubzoKPiAtICAgIHRyYWNlX3Zmc19mY250bF9lcnIoZXJyb3IpOwo+
IC0gICAgZXJybm8gPSBlcnJvcjsKPiAtICAgIHJldHVybiAtMTsKPiArCXN0cnVjdCBmaWxlICpm
cDsKPiArCWludCByZXQgPSAwLCBlcnJvcjsKPiArCWludCB0bXA7Cj4gKwo+ICsJdHJhY2VfdmZz
X2ZjbnRsKGZkLCBjbWQsIGFyZyk7Cj4gKwllcnJvciA9IGZnZXQoZmQsICZmcCk7Cj4gKwlpZiAo
ZXJyb3IpCj4gKwkJZ290byBvdXRfZXJybm87Cj4gKwo+ICsJLy8gQW4gaW1wb3J0YW50IG5vdGUg
YWJvdXQgb3VyIGhhbmRsaW5nIG9mIEZEX0NMT0VYRUMgLyBPX0NMT0VYRUM6Cj4gKwkvLyBjbG9z
ZS1vbi1leGVjIHNob3VsZG4ndCBoYXZlIGJlZW4gYSBmaWxlIGZsYWcgKGZwLT5mX2ZsYWdzKSAt
IGl0IGlzIGEKPiArCS8vIGZpbGUgZGVzY3JpcHRvciBmbGFnLCBtZWFuaW5nIHRoYXQgdGhhdCB0
d28gZHVwKCllZCBmaWxlIGRlc2NyaXB0b3JzCj4gKwkvLyBjb3VsZCBoYXZlIGRpZmZlcmVudCB2
YWx1ZXMgZm9yIEZEX0NMT0VYRUMuIE91ciBjdXJyZW50IGltcGxlbWVudGF0aW9uCj4gKwkvLyAq
d3JvbmdseSogbWFrZXMgY2xvc2Utb24tZXhlYyBhbiBmX2ZsYWcgKHVzaW5nIHRoZSBiaXQgT19D
TE9FWEVDKS4KPiArCS8vIFRoZXJlIGlzIGxpdHRsZSBwcmFjdGljYWwgZGlmZmVyZW5jZSwgdGhv
dWdoLCBiZWNhdXNlIHRoaXMgZmxhZyBpcwo+ICsJLy8gaWdub3JlZCBpbiBPU3YgYW55d2F5LCBh
cyBpdCBkb2Vzbid0IHN1cHBvcnQgZXhlYygpLgo+ICsJc3dpdGNoIChjbWQpIHsKPiArCWNhc2Ug
Rl9EVVBGRDoKPiArCQllcnJvciA9IF9mZGFsbG9jKGZwLCAmcmV0LCBhcmcpOwo+ICsJCWlmIChl
cnJvcikKPiArCQkJZ290byBvdXRfZXJybm87Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIEZfR0VURkQ6
Cj4gKwkJcmV0ID0gKGZwLT5mX2ZsYWdzICYgT19DTE9FWEVDKSA/IEZEX0NMT0VYRUMgOiAwOwo+
ICsJCWJyZWFrOwo+ICsJY2FzZSBGX1NFVEZEOgo+ICsJCUZEX0xPQ0soZnApOwo+ICsJCWZwLT5m
X2ZsYWdzID0gKGZwLT5mX2ZsYWdzICYgfk9fQ0xPRVhFQykgfAo+ICsJCQkJKChhcmcgJiBGRF9D
TE9FWEVDKSA/IE9fQ0xPRVhFQyA6IDApOwo+ICsJCUZEX1VOTE9DSyhmcCk7Cj4gKwkJYnJlYWs7
Cj4gKwljYXNlIEZfR0VURkw6Cj4gKwkJLy8gQXMgZXhwbGFpbmVkIGFib3ZlLCB0aGUgT19DTE9F
WEVDIHNob3VsZCBoYXZlIGJlZW4gaW4gZl9mbGFncywKPiArCQkvLyBhbmQgc2hvdWxkbid0IGJl
IHJldHVybmVkLiBMaW51eCBhbHdheXMgcmV0dXJucyAwMTAwMDAwICgidGhlCj4gKwkJLy8gZmxh
ZyBmb3JtZXJseSBrbm93biBhcyBPX0xBUkdFRklMRSkgc28gbGV0J3MgZG8gaXQgdG9vLgo+ICsJ
CXJldCA9IChvZmxhZ3MoZnAtPmZfZmxhZ3MpICYgfk9fQ0xPRVhFQykgfCAwMTAwMDAwOwo+ICsJ
CWJyZWFrOwo+ICsJY2FzZSBGX1NFVEZMOgo+ICsJCUZEX0xPQ0soZnApOwo+ICsJCWZwLT5mX2Zs
YWdzID0gZmZsYWdzKChvZmxhZ3MoZnAtPmZfZmxhZ3MpICYgflNFVEZMKSB8Cj4gKwkJCQkoYXJn
ICYgU0VURkwpKTsKPiArCQlGRF9VTkxPQ0soZnApOwo+ICsKPiArCQkvKiBTeW5jIG5vbmJsb2Nr
aW5nL2FzeW5jIHN0YXRlIHdpdGggZmlsZSBmbGFncyAqLwo+ICsJCXRtcCA9IGZwLT5mX2ZsYWdz
ICYgRk5PTkJMT0NLOwo+ICsJCWZwLT5pb2N0bChGSU9OQklPLCAmdG1wKTsKPiArCQl0bXAgPSBm
cC0+Zl9mbGFncyAmIEZBU1lOQzsKPiArCQlmcC0+aW9jdGwoRklPQVNZTkMsICZ0bXApOwo+ICsK
PiArCQlicmVhazsKPiArCWNhc2UgRl9TRVRMSzoKPiArCQlXQVJOX09OQ0UoImZjbnRsKEZfU0VU
TEspIHN0dWJiZWRcbiIpOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSBGX0dFVExLOgo+ICsJCVdBUk5f
T05DRSgiZmNudGwoRl9HRVRMSykgc3R1YmJlZFxuIik7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIEZf
U0VUTEtXOgo+ICsJCVdBUk5fT05DRSgiZmNudGwoRl9TRVRMS1cpIHN0dWJiZWRcbiIpOwo+ICsJ
CWJyZWFrOwo+ICsJY2FzZSBGX1NFVE9XTjoKPiArCQlXQVJOX09OQ0UoImZjbnRsKEZfU0VUT1dO
KSBzdHViYmVkXG4iKTsKPiArCQlicmVhazsKPiArCWRlZmF1bHQ6Cj4gKwkJa3ByaW50ZigidW5z
dXBwb3J0ZWQgZmNudGwgY21kIDB4JXhcbiIsIGNtZCk7Cj4gKwkJZXJyb3IgPSBFSU5WQUw7Cj4g
Kwl9Cj4gKwo+ICsJZmRyb3AoZnApOwo+ICsJaWYgKGVycm9yKQo+ICsJCWdvdG8gb3V0X2Vycm5v
Owo+ICsJdHJhY2VfdmZzX2ZjbnRsX3JldChyZXQpOwo+ICsJcmV0dXJuIHJldDsKPiArCj4gKwlv
dXRfZXJybm86Cj4gKwl0cmFjZV92ZnNfZmNudGxfZXJyKGVycm9yKTsKPiArCWVycm5vID0gZXJy
b3I7Cj4gKwlyZXR1cm4gLTE7Cj4gICB9Cj4gICAKPiAgIFRSQUNFUE9JTlQodHJhY2VfdmZzX2Fj
Y2VzcywgIlwiJXNcIiAwJTBvIiwgY29uc3QgY2hhciosIGludCk7Cj4gQEAgLTE1MjMsNzIgKzE1
MjMsNzIgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfYWNjZXNzX2VyciwgIiVkIiwgaW50KTsKPiAg
ICAqLwo+ICAgaW50IGFjY2Vzcyhjb25zdCBjaGFyICpwYXRobmFtZSwgaW50IG1vZGUpCj4gICB7
Cj4gLSAgICB0cmFjZV92ZnNfYWNjZXNzKHBhdGhuYW1lLCBtb2RlKTsKPiAtICAgIHN0cnVjdCB0
YXNrICp0ID0gbWFpbl90YXNrOwo+IC0gICAgY2hhciBwYXRoW1BBVEhfTUFYXTsKPiAtICAgIGlu
dCBhY2MsIGVycm9yID0gMDsKPiArCXRyYWNlX3Zmc19hY2Nlc3MocGF0aG5hbWUsIG1vZGUpOwo+
ICsJc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7Cj4gKwljaGFyIHBhdGhbUEFUSF9NQVhdOwo+
ICsJaW50IGFjYywgZXJyb3IgPSAwOwo+ICAgCj4gLSAgICBhY2MgPSAwOwo+IC0gICAgaWYgKG1v
ZGUgJiBSX09LKQo+IC0gICAgICAgIGFjYyB8PSBWUkVBRDsKPiAtICAgIGlmIChtb2RlICYgV19P
SykKPiAtICAgICAgICBhY2MgfD0gVldSSVRFOwo+ICsJYWNjID0gMDsKPiArCWlmIChtb2RlICYg
Ul9PSykKPiArCQlhY2MgfD0gVlJFQUQ7Cj4gKwlpZiAobW9kZSAmIFdfT0spCj4gKwkJYWNjIHw9
IFZXUklURTsKPiAgIAo+IC0gICAgaWYgKChlcnJvciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwg
YWNjLCBwYXRoKSkgIT0gMCkKPiAtICAgICAgICBnb3RvIG91dF9lcnJubzsKPiArCWlmICgoZXJy
b3IgPSB0YXNrX2NvbnYodCwgcGF0aG5hbWUsIGFjYywgcGF0aCkpICE9IDApCj4gKwkJZ290byBv
dXRfZXJybm87Cj4gICAKPiAtICAgIGVycm9yID0gc3lzX2FjY2VzcyhwYXRoLCBtb2RlKTsKPiAt
ICAgIGlmIChlcnJvcikKPiAtICAgICAgICBnb3RvIG91dF9lcnJubzsKPiAtICAgIHRyYWNlX3Zm
c19hY2Nlc3NfcmV0KCk7Cj4gLSAgICByZXR1cm4gMDsKPiAtICAgIG91dF9lcnJubzoKPiAtICAg
IGVycm5vID0gZXJyb3I7Cj4gLSAgICB0cmFjZV92ZnNfYWNjZXNzX2VycihlcnJvcik7Cj4gLSAg
ICByZXR1cm4gLTE7Cj4gKwllcnJvciA9IHN5c19hY2Nlc3MocGF0aCwgbW9kZSk7Cj4gKwlpZiAo
ZXJyb3IpCj4gKwkJZ290byBvdXRfZXJybm87Cj4gKwl0cmFjZV92ZnNfYWNjZXNzX3JldCgpOwo+
ICsJcmV0dXJuIDA7Cj4gKwlvdXRfZXJybm86Cj4gKwllcnJubyA9IGVycm9yOwo+ICsJdHJhY2Vf
dmZzX2FjY2Vzc19lcnIoZXJyb3IpOwo+ICsJcmV0dXJuIC0xOwo+ICAgfQo+ICAgCj4gICBpbnQg
ZmFjY2Vzc2F0KGludCBkaXJmZCwgY29uc3QgY2hhciAqcGF0aG5hbWUsIGludCBtb2RlLCBpbnQg
ZmxhZ3MpCj4gICB7Cj4gLSAgICBpZiAoZmxhZ3MgJiBBVF9TWU1MSU5LX05PRk9MTE9XKSB7Cj4g
LSAgICAgICAgVU5JTVBMRU1FTlRFRCgiZmFjY2Vzc2F0KCkgd2l0aCBBVF9TWU1MSU5LX05PRk9M
TE9XIik7Cj4gLSAgICB9Cj4gKwlpZiAoZmxhZ3MgJiBBVF9TWU1MSU5LX05PRk9MTE9XKSB7Cj4g
KwkJVU5JTVBMRU1FTlRFRCgiZmFjY2Vzc2F0KCkgd2l0aCBBVF9TWU1MSU5LX05PRk9MTE9XIik7
Cj4gKwl9Cj4gICAKPiAtICAgIGlmIChwYXRobmFtZVswXSA9PSAnLycgfHwgZGlyZmQgPT0gQVRf
RkRDV0QpIHsKPiAtICAgICAgICByZXR1cm4gYWNjZXNzKHBhdGhuYW1lLCBtb2RlKTsKPiAtICAg
IH0KPiArCWlmIChwYXRobmFtZVswXSA9PSAnLycgfHwgZGlyZmQgPT0gQVRfRkRDV0QpIHsKPiAr
CQlyZXR1cm4gYWNjZXNzKHBhdGhuYW1lLCBtb2RlKTsKPiArCX0KPiAgIAo+IC0gICAgc3RydWN0
IGZpbGUgKmZwOwo+IC0gICAgaW50IGVycm9yID0gZmdldChkaXJmZCwgJmZwKTsKPiAtICAgIGlm
IChlcnJvcikgewo+IC0gICAgICAgIGVycm5vID0gZXJyb3I7Cj4gLSAgICAgICAgcmV0dXJuIC0x
Owo+IC0gICAgfQo+ICsJc3RydWN0IGZpbGUgKmZwOwo+ICsJaW50IGVycm9yID0gZmdldChkaXJm
ZCwgJmZwKTsKPiArCWlmIChlcnJvcikgewo+ICsJCWVycm5vID0gZXJyb3I7Cj4gKwkJcmV0dXJu
IC0xOwo+ICsJfQo+ICAgCj4gLSAgICBzdHJ1Y3Qgdm5vZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5k
X3Zub2RlOwo+IC0gICAgdm5fbG9jayh2cCk7Cj4gKwlzdHJ1Y3Qgdm5vZGUgKnZwID0gZnAtPmZf
ZGVudHJ5LT5kX3Zub2RlOwo+ICsJdm5fbG9jayh2cCk7Cj4gICAKPiAtICAgIHN0ZDo6dW5pcXVl
X3B0cjxjaGFyIFtdPiB1cCAobmV3IGNoYXJbUEFUSF9NQVhdKTsKPiAtICAgIGNoYXIgKnAgPSB1
cC5nZXQoKTsKPiArCXN0ZDo6dW5pcXVlX3B0cjxjaGFyIFtdPiB1cCAobmV3IGNoYXJbUEFUSF9N
QVhdKTsKPiArCWNoYXIgKnAgPSB1cC5nZXQoKTsKPiAgIAo+IC0gICAgLyogYnVpbGQgYWJzb2x1
dGUgcGF0aCAqLwo+IC0gICAgc3RybGNweShwLCBmcC0+Zl9kZW50cnktPmRfbW91bnQtPm1fcGF0
aCwgUEFUSF9NQVgpOwo+IC0gICAgc3RybGNhdChwLCBmcC0+Zl9kZW50cnktPmRfcGF0aCwgUEFU
SF9NQVgpOwo+IC0gICAgc3RybGNhdChwLCAiLyIsIFBBVEhfTUFYKTsKPiAtICAgIHN0cmxjYXQo
cCwgcGF0aG5hbWUsIFBBVEhfTUFYKTsKPiArCS8qIGJ1aWxkIGFic29sdXRlIHBhdGggKi8KPiAr
CXN0cmxjcHkocCwgZnAtPmZfZGVudHJ5LT5kX21vdW50LT5tX3BhdGgsIFBBVEhfTUFYKTsKPiAr
CXN0cmxjYXQocCwgZnAtPmZfZGVudHJ5LT5kX3BhdGgsIFBBVEhfTUFYKTsKPiArCXN0cmxjYXQo
cCwgIi8iLCBQQVRIX01BWCk7Cj4gKwlzdHJsY2F0KHAsIHBhdGhuYW1lLCBQQVRIX01BWCk7Cj4g
ICAKPiAtICAgIGVycm9yID0gYWNjZXNzKHAsIG1vZGUpOwo+ICsJZXJyb3IgPSBhY2Nlc3MocCwg
bW9kZSk7Cj4gICAKPiAtICAgIHZuX3VubG9jayh2cCk7Cj4gLSAgICBmZHJvcChmcCk7Cj4gKwl2
bl91bmxvY2sodnApOwo+ICsJZmRyb3AoZnApOwo+ICAgCj4gLSAgICByZXR1cm4gZXJyb3I7Cj4g
KwlyZXR1cm4gZXJyb3I7Cj4gICB9Cj4gICAKPiAgIGV4dGVybiAiQyIKPiAgIGludCBldWlkYWNj
ZXNzKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBpbnQgbW9kZSkKPiAgIHsKPiAtICAgIHJldHVybiBh
Y2Nlc3MocGF0aG5hbWUsIG1vZGUpOwo+ICsJcmV0dXJuIGFjY2VzcyhwYXRobmFtZSwgbW9kZSk7
Cj4gICB9Cj4gICAKPiAgIHdlYWtfYWxpYXMoZXVpZGFjY2VzcyxlYWNjZXNzKTsKPiBAQCAtMTU5
OCw0MiArMTU5OCw0MiBAQCBzdGF0aWMgaW50Cj4gICBmc19waXBlKHN0cnVjdCB0YXNrICp0LCBz
dHJ1Y3QgbXNnICptc2cpCj4gICB7Cj4gICAjaWZkZWYgQ09ORklHX0ZJRk9GUwo+IC0gICAgY2hh
ciBwYXRoW1BBVEhfTUFYXTsKPiAtICAgIGZpbGVfdCByZnAsIHdmcDsKPiAtICAgIGludCBlcnJv
ciwgcmZkLCB3ZmQ7Cj4gLQo+IC0gICAgRFBSSU5URihWRlNEQl9DT1JFLCAoImZzX3BpcGVcbiIp
KTsKPiAtCj4gLSAgICBpZiAoKHJmZCA9IHRhc2tfbmV3ZmQodCkpID09IC0xKQo+IC0gICAgICAg
IHJldHVybiBFTUZJTEU7Cj4gLSAgICB0LT50X29maWxlW3JmZF0gPSAoZmlsZV90KTE7IC8qIHRl
bXAgKi8KPiAtCj4gLSAgICBpZiAoKHdmZCA9IHRhc2tfbmV3ZmQodCkpID09IC0xKSB7Cj4gLSAg
ICAgICAgdC0+dF9vZmlsZVtyZmRdID0gbnVsbHB0cjsKPiAtICAgICAgICByZXR1cm4gRU1GSUxF
Owo+IC0gICAgfQo+IC0gICAgc3ByaW50ZihwYXRoLCAiL21udC9maWZvL3BpcGUtJXgtJWQiLCAo
dV9pbnQpdC0+dF90YXNraWQsIHJmZCk7Cj4gLQo+IC0gICAgaWYgKChlcnJvciA9IHN5c19ta25v
ZChwYXRoLCBTX0lGSUZPKSkgIT0gMCkKPiAtICAgICAgICBnb3RvIG91dDsKPiAtICAgIGlmICgo
ZXJyb3IgPSBzeXNfb3BlbihwYXRoLCBPX1JET05MWSB8IE9fTk9OQkxPQ0ssIDAsICZyZnApKSAh
PSAwKSB7Cj4gLSAgICAgICAgZ290byBvdXQ7Cj4gLSAgICB9Cj4gLSAgICBpZiAoKGVycm9yID0g
c3lzX29wZW4ocGF0aCwgT19XUk9OTFkgfCBPX05PTkJMT0NLLCAwLCAmd2ZwKSkgIT0gMCkgewo+
IC0gICAgICAgIGdvdG8gb3V0Owo+IC0gICAgfQo+IC0gICAgdC0+dF9vZmlsZVtyZmRdID0gcmZw
Owo+IC0gICAgdC0+dF9vZmlsZVt3ZmRdID0gd2ZwOwo+IC0gICAgdC0+dF9ub3BlbnMgKz0gMjsK
PiAtICAgIG1zZy0+ZGF0YVswXSA9IHJmZDsKPiAtICAgIG1zZy0+ZGF0YVsxXSA9IHdmZDsKPiAt
ICAgIHJldHVybiAwOwo+IC0gICAgb3V0Ogo+IC0gICAgdC0+dF9vZmlsZVtyZmRdID0gbnVsbHB0
cjsKPiAtICAgIHQtPnRfb2ZpbGVbd2ZkXSA9IG51bGxwdHI7Cj4gLSAgICByZXR1cm4gZXJyb3I7
Cj4gKwljaGFyIHBhdGhbUEFUSF9NQVhdOwo+ICsJZmlsZV90IHJmcCwgd2ZwOwo+ICsJaW50IGVy
cm9yLCByZmQsIHdmZDsKPiArCj4gKwlEUFJJTlRGKFZGU0RCX0NPUkUsICgiZnNfcGlwZVxuIikp
Owo+ICsKPiArCWlmICgocmZkID0gdGFza19uZXdmZCh0KSkgPT0gLTEpCj4gKwkJcmV0dXJuIEVN
RklMRTsKPiArCXQtPnRfb2ZpbGVbcmZkXSA9IChmaWxlX3QpMTsgLyogdGVtcCAqLwo+ICsKPiAr
CWlmICgod2ZkID0gdGFza19uZXdmZCh0KSkgPT0gLTEpIHsKPiArCQl0LT50X29maWxlW3JmZF0g
PSBudWxscHRyOwo+ICsJCXJldHVybiBFTUZJTEU7Cj4gKwl9Cj4gKwlzcHJpbnRmKHBhdGgsICIv
bW50L2ZpZm8vcGlwZS0leC0lZCIsICh1X2ludCl0LT50X3Rhc2tpZCwgcmZkKTsKPiArCj4gKwlp
ZiAoKGVycm9yID0gc3lzX21rbm9kKHBhdGgsIFNfSUZJRk8pKSAhPSAwKQo+ICsJCWdvdG8gb3V0
Owo+ICsJaWYgKChlcnJvciA9IHN5c19vcGVuKHBhdGgsIE9fUkRPTkxZIHwgT19OT05CTE9DSywg
MCwgJnJmcCkpICE9IDApIHsKPiArCQlnb3RvIG91dDsKPiArCX0KPiArCWlmICgoZXJyb3IgPSBz
eXNfb3BlbihwYXRoLCBPX1dST05MWSB8IE9fTk9OQkxPQ0ssIDAsICZ3ZnApKSAhPSAwKSB7Cj4g
KwkJZ290byBvdXQ7Cj4gKwl9Cj4gKwl0LT50X29maWxlW3JmZF0gPSByZnA7Cj4gKwl0LT50X29m
aWxlW3dmZF0gPSB3ZnA7Cj4gKwl0LT50X25vcGVucyArPSAyOwo+ICsJbXNnLT5kYXRhWzBdID0g
cmZkOwo+ICsJbXNnLT5kYXRhWzFdID0gd2ZkOwo+ICsJcmV0dXJuIDA7Cj4gKwlvdXQ6Cj4gKwl0
LT50X29maWxlW3JmZF0gPSBudWxscHRyOwo+ICsJdC0+dF9vZmlsZVt3ZmRdID0gbnVsbHB0cjsK
PiArCXJldHVybiBlcnJvcjsKPiAgICNlbHNlCj4gLSAgICByZXR1cm4gRU5PU1lTOwo+ICsJcmV0
dXJuIEVOT1NZUzsKPiAgICNlbmRpZgo+ICAgfQo+ICAgI2VuZGlmCj4gQEAgLTE2NDcsMjUgKzE2
NDcsMjUgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfaXNhdHR5X2VyciwgIiVkIiwgaW50KTsKPiAg
ICAqLwo+ICAgaW50IGlzYXR0eShpbnQgZmQpCj4gICB7Cj4gLSAgICBzdHJ1Y3QgZmlsZSAqZnA7
Cj4gLSAgICBpbnQgaXN0dHkgPSAwOwo+ICsJc3RydWN0IGZpbGUgKmZwOwo+ICsJaW50IGlzdHR5
ID0gMDsKPiAgIAo+IC0gICAgdHJhY2VfdmZzX2lzYXR0eShmZCk7Cj4gLSAgICBmaWxlcmVmIGYo
ZmlsZXJlZl9mcm9tX2ZkKGZkKSk7Cj4gLSAgICBpZiAoIWYpIHsKPiAtICAgICAgICBlcnJubyA9
IEVCQURGOwo+IC0gICAgICAgIHRyYWNlX3Zmc19pc2F0dHlfZXJyKGVycm5vKTsKPiAtICAgICAg
ICByZXR1cm4gLTE7Cj4gLSAgICB9Cj4gKwl0cmFjZV92ZnNfaXNhdHR5KGZkKTsKPiArCWZpbGVy
ZWYgZihmaWxlcmVmX2Zyb21fZmQoZmQpKTsKPiArCWlmICghZikgewo+ICsJCWVycm5vID0gRUJB
REY7Cj4gKwkJdHJhY2VfdmZzX2lzYXR0eV9lcnIoZXJybm8pOwo+ICsJCXJldHVybiAtMTsKPiAr
CX0KPiAgIAo+IC0gICAgZnAgPSBmLmdldCgpOwo+IC0gICAgaWYgKGR5bmFtaWNfY2FzdDx0dHlf
ZmlsZSo+KGZwKSB8fAo+IC0gICAgICAgIChmcC0+Zl9kZW50cnkgJiYgZnAtPmZfZGVudHJ5LT5k
X3Zub2RlLT52X2ZsYWdzICYgVklTVFRZKSkgewo+IC0gICAgICAgIGlzdHR5ID0gMTsKPiAtICAg
IH0KPiArCWZwID0gZi5nZXQoKTsKPiArCWlmIChkeW5hbWljX2Nhc3Q8dHR5X2ZpbGUqPihmcCkg
fHwKPiArCQkoZnAtPmZfZGVudHJ5ICYmIGZwLT5mX2RlbnRyeS0+ZF92bm9kZS0+dl9mbGFncyAm
IFZJU1RUWSkpIHsKPiArCQlpc3R0eSA9IDE7Cj4gKwl9Cj4gICAKPiAtICAgIHRyYWNlX3Zmc19p
c2F0dHlfcmV0KGlzdHR5KTsKPiAtICAgIHJldHVybiBpc3R0eTsKPiArCXRyYWNlX3Zmc19pc2F0
dHlfcmV0KGlzdHR5KTsKPiArCXJldHVybiBpc3R0eTsKPiAgIH0KPiAgIAo+ICAgVFJBQ0VQT0lO
VCh0cmFjZV92ZnNfdHJ1bmNhdGUsICJcIiVzXCIgMHgleCIsIGNvbnN0IGNoYXIqLCBvZmZfdCk7
Cj4gQEAgLTE2NzQsMjYgKzE2NzQsMjYgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfdHJ1bmNhdGVf
ZXJyLCAiJWQiLCBpbnQpOwo+ICAgCj4gICBpbnQgdHJ1bmNhdGUoY29uc3QgY2hhciAqcGF0aG5h
bWUsIG9mZl90IGxlbmd0aCkKPiAgIHsKPiAtICAgIHRyYWNlX3Zmc190cnVuY2F0ZShwYXRobmFt
ZSwgbGVuZ3RoKTsKPiAtICAgIHN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOwo+IC0gICAgY2hh
ciBwYXRoW1BBVEhfTUFYXTsKPiAtICAgIGludCBlcnJvcjsKPiArCXRyYWNlX3Zmc190cnVuY2F0
ZShwYXRobmFtZSwgbGVuZ3RoKTsKPiArCXN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOwo+ICsJ
Y2hhciBwYXRoW1BBVEhfTUFYXTsKPiArCWludCBlcnJvcjsKPiAgIAo+IC0gICAgZXJyb3IgPSBF
Tk9FTlQ7Cj4gLSAgICBpZiAocGF0aG5hbWUgPT0gbnVsbHB0cikKPiAtICAgICAgICBnb3RvIG91
dF9lcnJubzsKPiAtICAgIGlmICgoZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5hbWUsIFZXUklU
RSwgcGF0aCkpICE9IDApCj4gLSAgICAgICAgZ290byBvdXRfZXJybm87Cj4gKwllcnJvciA9IEVO
T0VOVDsKPiArCWlmIChwYXRobmFtZSA9PSBudWxscHRyKQo+ICsJCWdvdG8gb3V0X2Vycm5vOwo+
ICsJaWYgKChlcnJvciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwgVldSSVRFLCBwYXRoKSkgIT0g
MCkKPiArCQlnb3RvIG91dF9lcnJubzsKPiAgIAo+IC0gICAgZXJyb3IgPSBzeXNfdHJ1bmNhdGUo
cGF0aCwgbGVuZ3RoKTsKPiAtICAgIGlmIChlcnJvcikKPiAtICAgICAgICBnb3RvIG91dF9lcnJu
bzsKPiAtICAgIHRyYWNlX3Zmc190cnVuY2F0ZV9yZXQoKTsKPiAtICAgIHJldHVybiAwOwo+IC0g
ICAgb3V0X2Vycm5vOgo+IC0gICAgZXJybm8gPSBlcnJvcjsKPiAtICAgIHRyYWNlX3Zmc190cnVu
Y2F0ZV9lcnIoZXJyb3IpOwo+IC0gICAgcmV0dXJuIC0xOwo+ICsJZXJyb3IgPSBzeXNfdHJ1bmNh
dGUocGF0aCwgbGVuZ3RoKTsKPiArCWlmIChlcnJvcikKPiArCQlnb3RvIG91dF9lcnJubzsKPiAr
CXRyYWNlX3Zmc190cnVuY2F0ZV9yZXQoKTsKPiArCXJldHVybiAwOwo+ICsJb3V0X2Vycm5vOgo+
ICsJZXJybm8gPSBlcnJvcjsKPiArCXRyYWNlX3Zmc190cnVuY2F0ZV9lcnIoZXJyb3IpOwo+ICsJ
cmV0dXJuIC0xOwo+ICAgfQo+ICAgCj4gICBMRlM2NCh0cnVuY2F0ZSk7Cj4gQEAgLTE3MDQsNTgg
KzE3MDQsNTggQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZnRydW5jYXRlX2VyciwgIiVkIiwgaW50
KTsKPiAgIAo+ICAgaW50IGZ0cnVuY2F0ZShpbnQgZmQsIG9mZl90IGxlbmd0aCkKPiAgIHsKPiAt
ICAgIHRyYWNlX3Zmc19mdHJ1bmNhdGUoZmQsIGxlbmd0aCk7Cj4gLSAgICBzdHJ1Y3QgZmlsZSAq
ZnA7Cj4gLSAgICBpbnQgZXJyb3I7Cj4gKwl0cmFjZV92ZnNfZnRydW5jYXRlKGZkLCBsZW5ndGgp
Owo+ICsJc3RydWN0IGZpbGUgKmZwOwo+ICsJaW50IGVycm9yOwo+ICAgCj4gLSAgICBlcnJvciA9
IGZnZXQoZmQsICZmcCk7Cj4gLSAgICBpZiAoZXJyb3IpCj4gLSAgICAgICAgZ290byBvdXRfZXJy
bm87Cj4gKwllcnJvciA9IGZnZXQoZmQsICZmcCk7Cj4gKwlpZiAoZXJyb3IpCj4gKwkJZ290byBv
dXRfZXJybm87Cj4gICAKPiAtICAgIGVycm9yID0gc3lzX2Z0cnVuY2F0ZShmcCwgbGVuZ3RoKTsK
PiAtICAgIGZkcm9wKGZwKTsKPiArCWVycm9yID0gc3lzX2Z0cnVuY2F0ZShmcCwgbGVuZ3RoKTsK
PiArCWZkcm9wKGZwKTsKPiAgIAo+IC0gICAgaWYgKGVycm9yKQo+IC0gICAgICAgIGdvdG8gb3V0
X2Vycm5vOwo+IC0gICAgdHJhY2VfdmZzX2Z0cnVuY2F0ZV9yZXQoKTsKPiAtICAgIHJldHVybiAw
Owo+ICsJaWYgKGVycm9yKQo+ICsJCWdvdG8gb3V0X2Vycm5vOwo+ICsJdHJhY2VfdmZzX2Z0cnVu
Y2F0ZV9yZXQoKTsKPiArCXJldHVybiAwOwo+ICAgCj4gLSAgICBvdXRfZXJybm86Cj4gLSAgICBl
cnJubyA9IGVycm9yOwo+IC0gICAgdHJhY2VfdmZzX2Z0cnVuY2F0ZV9lcnIoZXJyb3IpOwo+IC0g
ICAgcmV0dXJuIC0xOwo+ICsJb3V0X2Vycm5vOgo+ICsJZXJybm8gPSBlcnJvcjsKPiArCXRyYWNl
X3Zmc19mdHJ1bmNhdGVfZXJyKGVycm9yKTsKPiArCXJldHVybiAtMTsKPiAgIH0KPiAgIAo+ICAg
TEZTNjQoZnRydW5jYXRlKTsKPiAgIAo+ICAgc3NpemVfdCByZWFkbGluayhjb25zdCBjaGFyICpw
YXRobmFtZSwgY2hhciAqYnVmLCBzaXplX3QgYnVmc2l6ZSkKPiAgIHsKPiAtICAgIHN0cnVjdCB0
YXNrICp0ID0gbWFpbl90YXNrOwo+IC0gICAgY2hhciBwYXRoW1BBVEhfTUFYXTsKPiAtICAgIGlu
dCBlcnJvcjsKPiAtICAgIHNzaXplX3Qgc2l6ZTsKPiArCXN0cnVjdCB0YXNrICp0ID0gbWFpbl90
YXNrOwo+ICsJY2hhciBwYXRoW1BBVEhfTUFYXTsKPiArCWludCBlcnJvcjsKPiArCXNzaXplX3Qg
c2l6ZTsKPiAgIAo+IC0gICAgZXJyb3IgPSAtRUlOVkFMOwo+IC0gICAgaWYgKGJ1ZnNpemUgPD0g
MCkKPiAtICAgICAgICBnb3RvIG91dF9lcnJubzsKPiArCWVycm9yID0gLUVJTlZBTDsKPiArCWlm
IChidWZzaXplIDw9IDApCj4gKwkJZ290byBvdXRfZXJybm87Cj4gICAKPiAtICAgIGVycm9yID0g
RU5PRU5UOwo+IC0gICAgaWYgKHBhdGhuYW1lID09IG51bGxwdHIpCj4gLSAgICAgICAgZ290byBv
dXRfZXJybm87Cj4gLSAgICBlcnJvciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwgVldSSVRFLCBw
YXRoKTsKPiAtICAgIGlmIChlcnJvcikKPiAtICAgICAgICBnb3RvIG91dF9lcnJubzsKPiArCWVy
cm9yID0gRU5PRU5UOwo+ICsJaWYgKHBhdGhuYW1lID09IG51bGxwdHIpCj4gKwkJZ290byBvdXRf
ZXJybm87Cj4gKwllcnJvciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwgVldSSVRFLCBwYXRoKTsK
PiArCWlmIChlcnJvcikKPiArCQlnb3RvIG91dF9lcnJubzsKPiAgIAo+IC0gICAgc2l6ZSAgPSAw
Owo+IC0gICAgZXJyb3IgPSBzeXNfcmVhZGxpbmsocGF0aCwgYnVmLCBidWZzaXplLCAmc2l6ZSk7
Cj4gKwlzaXplICA9IDA7Cj4gKwllcnJvciA9IHN5c19yZWFkbGluayhwYXRoLCBidWYsIGJ1ZnNp
emUsICZzaXplKTsKPiAgIAo+IC0gICAgaWYgKGVycm9yICE9IDApCj4gLSAgICAgICAgZ290byBv
dXRfZXJybm87Cj4gKwlpZiAoZXJyb3IgIT0gMCkKPiArCQlnb3RvIG91dF9lcnJubzsKPiAgIAo+
IC0gICAgcmV0dXJuIHNpemU7Cj4gLSAgICBvdXRfZXJybm86Cj4gLSAgICBlcnJubyA9IGVycm9y
Owo+IC0gICAgcmV0dXJuIC0xOwo+ICsJcmV0dXJuIHNpemU7Cj4gKwlvdXRfZXJybm86Cj4gKwll
cnJubyA9IGVycm9yOwo+ICsJcmV0dXJuIC0xOwo+ICAgfQo+ICAgCj4gICBUUkFDRVBPSU5UKHRy
YWNlX3Zmc19mYWxsb2NhdGUsICIlZCAlZCAweCV4IDB4JXgiLCBpbnQsIGludCwgbG9mZl90LCBs
b2ZmX3QpOwo+IEBAIC0xNzY0LDI2ICsxNzY0LDI2IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2Zh
bGxvY2F0ZV9lcnIsICIlZCIsIGludCk7Cj4gICAKPiAgIGludCBmYWxsb2NhdGUoaW50IGZkLCBp
bnQgbW9kZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbikKPiAgIHsKPiAtICAgIHN0cnVjdCBm
aWxlICpmcDsKPiAtICAgIGludCBlcnJvcjsKPiArCXN0cnVjdCBmaWxlICpmcDsKPiArCWludCBl
cnJvcjsKPiAgIAo+IC0gICAgdHJhY2VfdmZzX2ZhbGxvY2F0ZShmZCwgbW9kZSwgb2Zmc2V0LCBs
ZW4pOwo+IC0gICAgZXJyb3IgPSBmZ2V0KGZkLCAmZnApOwo+IC0gICAgaWYgKGVycm9yKQo+IC0g
ICAgICAgIGdvdG8gb3V0X2Vycm5vOwo+ICsJdHJhY2VfdmZzX2ZhbGxvY2F0ZShmZCwgbW9kZSwg
b2Zmc2V0LCBsZW4pOwo+ICsJZXJyb3IgPSBmZ2V0KGZkLCAmZnApOwo+ICsJaWYgKGVycm9yKQo+
ICsJCWdvdG8gb3V0X2Vycm5vOwo+ICAgCj4gLSAgICBlcnJvciA9IHN5c19mYWxsb2NhdGUoZnAs
IG1vZGUsIG9mZnNldCwgbGVuKTsKPiAtICAgIGZkcm9wKGZwKTsKPiArCWVycm9yID0gc3lzX2Zh
bGxvY2F0ZShmcCwgbW9kZSwgb2Zmc2V0LCBsZW4pOwo+ICsJZmRyb3AoZnApOwo+ICAgCj4gLSAg
ICBpZiAoZXJyb3IpCj4gLSAgICAgICAgZ290byBvdXRfZXJybm87Cj4gLSAgICB0cmFjZV92ZnNf
ZmFsbG9jYXRlX3JldCgpOwo+IC0gICAgcmV0dXJuIDA7Cj4gKwlpZiAoZXJyb3IpCj4gKwkJZ290
byBvdXRfZXJybm87Cj4gKwl0cmFjZV92ZnNfZmFsbG9jYXRlX3JldCgpOwo+ICsJcmV0dXJuIDA7
Cj4gICAKPiAtICAgIG91dF9lcnJubzoKPiAtICAgIHRyYWNlX3Zmc19mYWxsb2NhdGVfZXJyKGVy
cm9yKTsKPiAtICAgIGVycm5vID0gZXJyb3I7Cj4gLSAgICByZXR1cm4gLTE7Cj4gKwlvdXRfZXJy
bm86Cj4gKwl0cmFjZV92ZnNfZmFsbG9jYXRlX2VycihlcnJvcik7Cj4gKwllcnJubyA9IGVycm9y
Owo+ICsJcmV0dXJuIC0xOwo+ICAgfQo+ICAgCj4gICBMRlM2NChmYWxsb2NhdGUpOwo+IEBAIC0x
Nzk0LDYwICsxNzk0LDYwIEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX3V0aW1lc19lcnIsICIlZCIs
IGludCk7Cj4gICAKPiAgIGludCBmdXRpbWVzKGludCBmZCwgY29uc3Qgc3RydWN0IHRpbWV2YWwg
dGltZXNbMl0pCj4gICB7Cj4gLSAgICByZXR1cm4gZnV0aW1lc2F0KGZkLCBudWxscHRyLCB0aW1l
cyk7Cj4gKwlyZXR1cm4gZnV0aW1lc2F0KGZkLCBudWxscHRyLCB0aW1lcyk7Cj4gICB9Cj4gICAK
PiAgIGludCBmdXRpbWVzYXQoaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwgY29uc3Qg
c3RydWN0IHRpbWV2YWwgdGltZXNbMl0pCj4gICB7Cj4gLSAgICBzdHJ1Y3Qgc3RhdCBzdDsKPiAt
ICAgIHN0cnVjdCBmaWxlICpmcDsKPiAtICAgIGludCBlcnJvcjsKPiAtICAgIGNoYXIgKmFic29s
dXRlX3BhdGg7Cj4gLQo+IC0gICAgaWYgKChwYXRobmFtZSAmJiBwYXRobmFtZVswXSA9PSAnLycp
IHx8IGRpcmZkID09IEFUX0ZEQ1dEKQo+IC0gICAgICAgIHJldHVybiB1dGltZXMocGF0aG5hbWUs
IHRpbWVzKTsKPiAtCj4gLSAgICAvLyBOb3RlOiBpZiBwYXRobmFtZSA9PSBudWxscHRyLCBmdXRp
bWVzYXQgb3BlcmF0ZXMgb24gZGlyZmQgaXRzZWxmLCBhbmQgaW4KPiAtICAgIC8vIHRoYXQgY2Fz
ZSBpdCBkb2Vzbid0IGhhdmUgdG8gYmUgYSBkaXJlY3RvcnkuCj4gLSAgICBpZiAocGF0aG5hbWUp
IHsKPiAtICAgICAgICBlcnJvciA9IGZzdGF0KGRpcmZkLCAmc3QpOwo+IC0gICAgICAgIGlmIChl
cnJvcikgewo+IC0gICAgICAgICAgICBlcnJvciA9IGVycm5vOwo+IC0gICAgICAgICAgICBnb3Rv
IG91dF9lcnJubzsKPiAtICAgICAgICB9Cj4gLQo+IC0gICAgICAgIGlmICghU19JU0RJUihzdC5z
dF9tb2RlKSl7Cj4gLSAgICAgICAgICAgIGVycm9yID0gRU5PVERJUjsKPiAtICAgICAgICAgICAg
Z290byBvdXRfZXJybm87Cj4gLSAgICAgICAgfQo+IC0gICAgfQo+ICsJc3RydWN0IHN0YXQgc3Q7
Cj4gKwlzdHJ1Y3QgZmlsZSAqZnA7Cj4gKwlpbnQgZXJyb3I7Cj4gKwljaGFyICphYnNvbHV0ZV9w
YXRoOwo+ICsKPiArCWlmICgocGF0aG5hbWUgJiYgcGF0aG5hbWVbMF0gPT0gJy8nKSB8fCBkaXJm
ZCA9PSBBVF9GRENXRCkKPiArCQlyZXR1cm4gdXRpbWVzKHBhdGhuYW1lLCB0aW1lcyk7Cj4gKwo+
ICsJLy8gTm90ZTogaWYgcGF0aG5hbWUgPT0gbnVsbHB0ciwgZnV0aW1lc2F0IG9wZXJhdGVzIG9u
IGRpcmZkIGl0c2VsZiwgYW5kIGluCj4gKwkvLyB0aGF0IGNhc2UgaXQgZG9lc24ndCBoYXZlIHRv
IGJlIGEgZGlyZWN0b3J5Lgo+ICsJaWYgKHBhdGhuYW1lKSB7Cj4gKwkJZXJyb3IgPSBmc3RhdChk
aXJmZCwgJnN0KTsKPiArCQlpZiAoZXJyb3IpIHsKPiArCQkJZXJyb3IgPSBlcnJubzsKPiArCQkJ
Z290byBvdXRfZXJybm87Cj4gKwkJfQo+ICsKPiArCQlpZiAoIVNfSVNESVIoc3Quc3RfbW9kZSkp
ewo+ICsJCQllcnJvciA9IEVOT1RESVI7Cj4gKwkJCWdvdG8gb3V0X2Vycm5vOwo+ICsJCX0KPiAr
CX0KPiAgIAo+IC0gICAgZXJyb3IgPSBmZ2V0KGRpcmZkLCAmZnApOwo+IC0gICAgaWYgKGVycm9y
KQo+IC0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwo+ICsJZXJyb3IgPSBmZ2V0KGRpcmZkLCAmZnAp
Owo+ICsJaWYgKGVycm9yKQo+ICsJCWdvdG8gb3V0X2Vycm5vOwo+ICAgCj4gLSAgICAvKiBidWls
ZCBhYnNvbHV0ZSBwYXRoICovCj4gLSAgICBhYnNvbHV0ZV9wYXRoID0gKGNoYXIqKW1hbGxvYyhQ
QVRIX01BWCk7Cj4gLSAgICBzdHJsY3B5KGFic29sdXRlX3BhdGgsIGZwLT5mX2RlbnRyeS0+ZF9t
b3VudC0+bV9wYXRoLCBQQVRIX01BWCk7Cj4gLSAgICBzdHJsY2F0KGFic29sdXRlX3BhdGgsIGZw
LT5mX2RlbnRyeS0+ZF9wYXRoLCBQQVRIX01BWCk7Cj4gKwkvKiBidWlsZCBhYnNvbHV0ZSBwYXRo
ICovCj4gKwlhYnNvbHV0ZV9wYXRoID0gKGNoYXIqKW1hbGxvYyhQQVRIX01BWCk7Cj4gKwlzdHJs
Y3B5KGFic29sdXRlX3BhdGgsIGZwLT5mX2RlbnRyeS0+ZF9tb3VudC0+bV9wYXRoLCBQQVRIX01B
WCk7Cj4gKwlzdHJsY2F0KGFic29sdXRlX3BhdGgsIGZwLT5mX2RlbnRyeS0+ZF9wYXRoLCBQQVRI
X01BWCk7Cj4gICAKPiAtICAgIGlmIChwYXRobmFtZSkgewo+IC0gICAgICAgIHN0cmxjYXQoYWJz
b2x1dGVfcGF0aCwgIi8iLCBQQVRIX01BWCk7Cj4gLSAgICAgICAgc3RybGNhdChhYnNvbHV0ZV9w
YXRoLCBwYXRobmFtZSwgUEFUSF9NQVgpOwo+IC0gICAgfQo+ICsJaWYgKHBhdGhuYW1lKSB7Cj4g
KwkJc3RybGNhdChhYnNvbHV0ZV9wYXRoLCAiLyIsIFBBVEhfTUFYKTsKPiArCQlzdHJsY2F0KGFi
c29sdXRlX3BhdGgsIHBhdGhuYW1lLCBQQVRIX01BWCk7Cj4gKwl9Cj4gICAKPiAtICAgIGVycm9y
ID0gdXRpbWVzKGFic29sdXRlX3BhdGgsIHRpbWVzKTsKPiAtICAgIGZyZWUoYWJzb2x1dGVfcGF0
aCk7Cj4gKwllcnJvciA9IHV0aW1lcyhhYnNvbHV0ZV9wYXRoLCB0aW1lcyk7Cj4gKwlmcmVlKGFi
c29sdXRlX3BhdGgpOwo+ICAgCj4gLSAgICBmZHJvcChmcCk7Cj4gKwlmZHJvcChmcCk7Cj4gICAK
PiAtICAgIGlmIChlcnJvcikKPiAtICAgICAgICBnb3RvIG91dF9lcnJubzsKPiAtICAgIHJldHVy
biAwOwo+ICsJaWYgKGVycm9yKQo+ICsJCWdvdG8gb3V0X2Vycm5vOwo+ICsJcmV0dXJuIDA7Cj4g
ICAKPiAtICAgIG91dF9lcnJubzoKPiAtICAgIGVycm5vID0gZXJyb3I7Cj4gLSAgICByZXR1cm4g
LTE7Cj4gKwlvdXRfZXJybm86Cj4gKwllcnJubyA9IGVycm9yOwo+ICsJcmV0dXJuIC0xOwo+ICAg
fQo+ICAgCj4gICBUUkFDRVBPSU5UKHRyYWNlX3Zmc191dGltZW5zYXQsICJcIiVzXCIiLCBjb25z
dCBjaGFyKik7Cj4gQEAgLTE4NTcsMTcgKzE4NTcsMTcgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNf
dXRpbWVuc2F0X2VyciwgIiVkIiwgaW50KTsKPiAgIGV4dGVybiAiQyIKPiAgIGludCB1dGltZW5z
YXQoaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwgY29uc3Qgc3RydWN0IHRpbWVzcGVj
IHRpbWVzWzJdLCBpbnQgZmxhZ3MpCj4gICB7Cj4gLSAgICB0cmFjZV92ZnNfdXRpbWVuc2F0KHBh
dGhuYW1lKTsKPiArCXRyYWNlX3Zmc191dGltZW5zYXQocGF0aG5hbWUpOwo+ICAgCj4gLSAgICBh
dXRvIGVycm9yID0gc3lzX3V0aW1lbnNhdChkaXJmZCwgcGF0aG5hbWUsIHRpbWVzLCBmbGFncyk7
Cj4gLSAgICBpZiAoZXJyb3IpIHsKPiAtICAgICAgICB0cmFjZV92ZnNfdXRpbWVuc2F0X2Vycihl
cnJvcik7Cj4gLSAgICAgICAgZXJybm8gPSBlcnJvcjsKPiAtICAgICAgICByZXR1cm4gLTE7Cj4g
LSAgICB9Cj4gKwlhdXRvIGVycm9yID0gc3lzX3V0aW1lbnNhdChkaXJmZCwgcGF0aG5hbWUsIHRp
bWVzLCBmbGFncyk7Cj4gKwlpZiAoZXJyb3IpIHsKPiArCQl0cmFjZV92ZnNfdXRpbWVuc2F0X2Vy
cihlcnJvcik7Cj4gKwkJZXJybm8gPSBlcnJvcjsKPiArCQlyZXR1cm4gLTE7Cj4gKwl9Cj4gICAK
PiAtICAgIHRyYWNlX3Zmc191dGltZW5zYXRfcmV0KCk7Cj4gLSAgICByZXR1cm4gMDsKPiArCXRy
YWNlX3Zmc191dGltZW5zYXRfcmV0KCk7Cj4gKwlyZXR1cm4gMDsKPiAgIH0KPiAgIAo+ICAgVFJB
Q0VQT0lOVCh0cmFjZV92ZnNfZnV0aW1lbnMsICIlZCIsIGludCk7Cj4gQEAgLTE4NzcsNzMgKzE4
NzcsNzMgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZnV0aW1lbnNfZXJyLCAiJWQiLCBpbnQpOwo+
ICAgZXh0ZXJuICJDIgo+ICAgaW50IGZ1dGltZW5zKGludCBmZCwgY29uc3Qgc3RydWN0IHRpbWVz
cGVjIHRpbWVzWzJdKQo+ICAgewo+IC0gICAgdHJhY2VfdmZzX2Z1dGltZW5zKGZkKTsKPiArCXRy
YWNlX3Zmc19mdXRpbWVucyhmZCk7Cj4gICAKPiAtICAgIGF1dG8gZXJyb3IgPSBzeXNfZnV0aW1l
bnMoZmQsIHRpbWVzKTsKPiAtICAgIGlmIChlcnJvcikgewo+IC0gICAgICAgIHRyYWNlX3Zmc19m
dXRpbWVuc19lcnIoZXJyb3IpOwo+IC0gICAgICAgIGVycm5vID0gZXJyb3I7Cj4gLSAgICAgICAg
cmV0dXJuIC0xOwo+IC0gICAgfQo+ICsJYXV0byBlcnJvciA9IHN5c19mdXRpbWVucyhmZCwgdGlt
ZXMpOwo+ICsJaWYgKGVycm9yKSB7Cj4gKwkJdHJhY2VfdmZzX2Z1dGltZW5zX2VycihlcnJvcik7
Cj4gKwkJZXJybm8gPSBlcnJvcjsKPiArCQlyZXR1cm4gLTE7Cj4gKwl9Cj4gICAKPiAtICAgIHRy
YWNlX3Zmc19mdXRpbWVuc19yZXQoKTsKPiAtICAgIHJldHVybiAwOwo+ICsJdHJhY2VfdmZzX2Z1
dGltZW5zX3JldCgpOwo+ICsJcmV0dXJuIDA7Cj4gICB9Cj4gICAKPiAgIHN0YXRpYyBpbnQgZG9f
dXRpbWVzKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBjb25zdCBzdHJ1Y3QgdGltZXZhbCB0aW1lc1sy
XSwgaW50IGZsYWdzKQo+ICAgewo+IC0gICAgc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7Cj4g
LSAgICBjaGFyIHBhdGhbUEFUSF9NQVhdOwo+IC0gICAgaW50IGVycm9yOwo+ICsJc3RydWN0IHRh
c2sgKnQgPSBtYWluX3Rhc2s7Cj4gKwljaGFyIHBhdGhbUEFUSF9NQVhdOwo+ICsJaW50IGVycm9y
Owo+ICAgCj4gLSAgICB0cmFjZV92ZnNfdXRpbWVzKHBhdGhuYW1lKTsKPiArCXRyYWNlX3Zmc191
dGltZXMocGF0aG5hbWUpOwo+ICAgCj4gLSAgICBlcnJvciA9IHRhc2tfY29udih0LCBwYXRobmFt
ZSwgMCwgcGF0aCk7Cj4gLSAgICBpZiAoZXJyb3IpIHsKPiAtICAgICAgICB0cmFjZV92ZnNfdXRp
bWVzX2VycihlcnJvcik7Cj4gLSAgICAgICAgcmV0dXJuIGxpYmNfZXJyb3IoZXJyb3IpOwo+IC0g
ICAgfQo+ICsJZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5hbWUsIDAsIHBhdGgpOwo+ICsJaWYg
KGVycm9yKSB7Cj4gKwkJdHJhY2VfdmZzX3V0aW1lc19lcnIoZXJyb3IpOwo+ICsJCXJldHVybiBs
aWJjX2Vycm9yKGVycm9yKTsKPiArCX0KPiAgIAo+IC0gICAgZXJyb3IgPSBzeXNfdXRpbWVzKHBh
dGgsIHRpbWVzLCBmbGFncyk7Cj4gLSAgICBpZiAoZXJyb3IpIHsKPiAtICAgICAgICB0cmFjZV92
ZnNfdXRpbWVzX2VycihlcnJvcik7Cj4gLSAgICAgICAgcmV0dXJuIGxpYmNfZXJyb3IoZXJyb3Ip
Owo+IC0gICAgfQo+ICsJZXJyb3IgPSBzeXNfdXRpbWVzKHBhdGgsIHRpbWVzLCBmbGFncyk7Cj4g
KwlpZiAoZXJyb3IpIHsKPiArCQl0cmFjZV92ZnNfdXRpbWVzX2VycihlcnJvcik7Cj4gKwkJcmV0
dXJuIGxpYmNfZXJyb3IoZXJyb3IpOwo+ICsJfQo+ICAgCj4gLSAgICB0cmFjZV92ZnNfdXRpbWVz
X3JldCgpOwo+IC0gICAgcmV0dXJuIDA7Cj4gKwl0cmFjZV92ZnNfdXRpbWVzX3JldCgpOwo+ICsJ
cmV0dXJuIDA7Cj4gICB9Cj4gICAKPiAgIGV4dGVybiAiQyIKPiAgIGludCB1dGltZXMoY29uc3Qg
Y2hhciAqcGF0aG5hbWUsIGNvbnN0IHN0cnVjdCB0aW1ldmFsIHRpbWVzWzJdKQo+ICAgewo+IC0g
ICAgcmV0dXJuIGRvX3V0aW1lcyhwYXRobmFtZSwgdGltZXMsIDApOwo+ICsJcmV0dXJuIGRvX3V0
aW1lcyhwYXRobmFtZSwgdGltZXMsIDApOwo+ICAgfQo+ICAgCj4gICBleHRlcm4gIkMiCj4gICBp
bnQgbHV0aW1lcyhjb25zdCBjaGFyICpwYXRobmFtZSwgY29uc3Qgc3RydWN0IHRpbWV2YWwgdGlt
ZXNbMl0pCj4gICB7Cj4gLSAgICByZXR1cm4gZG9fdXRpbWVzKHBhdGhuYW1lLCB0aW1lcywgQVRf
U1lNTElOS19OT0ZPTExPVyk7Cj4gKwlyZXR1cm4gZG9fdXRpbWVzKHBhdGhuYW1lLCB0aW1lcywg
QVRfU1lNTElOS19OT0ZPTExPVyk7Cj4gICB9Cj4gICAKPiAgIGV4dGVybiAiQyIKPiAgIGludCB1
dGltZShjb25zdCBjaGFyICpwYXRobmFtZSwgY29uc3Qgc3RydWN0IHV0aW1idWYgKnQpCj4gICB7
Cj4gLSAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOjpjaHJvbm87Cj4gLQo+IC0gICAgc3RydWN0IHRp
bWV2YWwgdGltZXNbMl07Cj4gLSAgICB0aW1lc1swXS50dl91c2VjID0gMDsKPiAtICAgIHRpbWVz
WzFdLnR2X3VzZWMgPSAwOwo+IC0gICAgaWYgKCF0KSB7Cj4gLSAgICAgICAgbG9uZyBpbnQgdHNl
YyA9IGR1cmF0aW9uX2Nhc3Q8c2Vjb25kcz4ob3N2OjpjbG9jazo6d2FsbDo6bm93KCkudGltZV9z
aW5jZV9lcG9jaCgpKS5jb3VudCgpOwo+IC0gICAgICAgIHRpbWVzWzBdLnR2X3NlYyA9IHRzZWM7
Cj4gLSAgICAgICAgdGltZXNbMV0udHZfc2VjID0gdHNlYzsKPiAtICAgIH0gZWxzZSB7Cj4gLSAg
ICAgICAgdGltZXNbMF0udHZfc2VjID0gdC0+YWN0aW1lOwo+IC0gICAgICAgIHRpbWVzWzFdLnR2
X3NlYyA9IHQtPm1vZHRpbWU7Cj4gLSAgICB9Cj4gKwl1c2luZyBuYW1lc3BhY2Ugc3RkOjpjaHJv
bm87Cj4gKwo+ICsJc3RydWN0IHRpbWV2YWwgdGltZXNbMl07Cj4gKwl0aW1lc1swXS50dl91c2Vj
ID0gMDsKPiArCXRpbWVzWzFdLnR2X3VzZWMgPSAwOwo+ICsJaWYgKCF0KSB7Cj4gKwkJbG9uZyBp
bnQgdHNlYyA9IGR1cmF0aW9uX2Nhc3Q8c2Vjb25kcz4ob3N2OjpjbG9jazo6d2FsbDo6bm93KCku
dGltZV9zaW5jZV9lcG9jaCgpKS5jb3VudCgpOwo+ICsJCXRpbWVzWzBdLnR2X3NlYyA9IHRzZWM7
Cj4gKwkJdGltZXNbMV0udHZfc2VjID0gdHNlYzsKPiArCX0gZWxzZSB7Cj4gKwkJdGltZXNbMF0u
dHZfc2VjID0gdC0+YWN0aW1lOwo+ICsJCXRpbWVzWzFdLnR2X3NlYyA9IHQtPm1vZHRpbWU7Cj4g
Kwl9Cj4gICAKPiAtICAgIHJldHVybiB1dGltZXMocGF0aG5hbWUsIHRpbWVzKTsKPiArCXJldHVy
biB1dGltZXMocGF0aG5hbWUsIHRpbWVzKTsKPiAgIH0KPiAgIAo+ICAgVFJBQ0VQT0lOVCh0cmFj
ZV92ZnNfY2htb2QsICJcIiVzXCIgMCUwbyIsIGNvbnN0IGNoYXIqLCBtb2RlX3QpOwo+IEBAIC0x
OTUyLDIzICsxOTUyLDIzIEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2NobW9kX2VyciwgIiVkIiwg
aW50KTsKPiAgIAo+ICAgaW50IGNobW9kKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBtb2RlX3QgbW9k
ZSkKPiAgIHsKPiAtICAgIHRyYWNlX3Zmc19jaG1vZChwYXRobmFtZSwgbW9kZSk7Cj4gLSAgICBz
dHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKPiAtICAgIGNoYXIgcGF0aFtQQVRIX01BWF07Cj4g
LSAgICBpbnQgZXJyb3IgPSBFTk9FTlQ7Cj4gLSAgICBpZiAocGF0aG5hbWUgPT0gbnVsbHB0cikK
PiAtICAgICAgICBnb3RvIG91dF9lcnJubzsKPiAtICAgIGlmICgoZXJyb3IgPSB0YXNrX2NvbnYo
dCwgcGF0aG5hbWUsIFZXUklURSwgcGF0aCkpICE9IDApCj4gLSAgICAgICAgZ290byBvdXRfZXJy
bm87Cj4gLSAgICBlcnJvciA9IHN5c19jaG1vZChwYXRoLCBtb2RlICYgQUxMUEVSTVMpOwo+IC0g
ICAgaWYgKGVycm9yKQo+IC0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwo+IC0gICAgdHJhY2VfdmZz
X2NobW9kX3JldCgpOwo+IC0gICAgcmV0dXJuIDA7Cj4gKwl0cmFjZV92ZnNfY2htb2QocGF0aG5h
bWUsIG1vZGUpOwo+ICsJc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7Cj4gKwljaGFyIHBhdGhb
UEFUSF9NQVhdOwo+ICsJaW50IGVycm9yID0gRU5PRU5UOwo+ICsJaWYgKHBhdGhuYW1lID09IG51
bGxwdHIpCj4gKwkJZ290byBvdXRfZXJybm87Cj4gKwlpZiAoKGVycm9yID0gdGFza19jb252KHQs
IHBhdGhuYW1lLCBWV1JJVEUsIHBhdGgpKSAhPSAwKQo+ICsJCWdvdG8gb3V0X2Vycm5vOwo+ICsJ
ZXJyb3IgPSBzeXNfY2htb2QocGF0aCwgbW9kZSAmIEFMTFBFUk1TKTsKPiArCWlmIChlcnJvcikK
PiArCQlnb3RvIG91dF9lcnJubzsKPiArCXRyYWNlX3Zmc19jaG1vZF9yZXQoKTsKPiArCXJldHVy
biAwOwo+ICAgb3V0X2Vycm5vOgo+IC0gICAgdHJhY2VfdmZzX2NobW9kX2VycihlcnJvcik7Cj4g
LSAgICBlcnJubyA9IGVycm9yOwo+IC0gICAgcmV0dXJuIC0xOwo+ICsJdHJhY2VfdmZzX2NobW9k
X2VycihlcnJvcik7Cj4gKwllcnJubyA9IGVycm9yOwo+ICsJcmV0dXJuIC0xOwo+ICAgfQo+ICAg
Cj4gICBUUkFDRVBPSU5UKHRyYWNlX3Zmc19mY2htb2QsICJcIiVkXCIgMCUwbyIsIGludCwgbW9k
ZV90KTsKPiBAQCAtMTk3NiwxNSArMTk3NiwxNSBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19mY2ht
b2RfcmV0LCAiIik7Cj4gICAKPiAgIGludCBmY2htb2QoaW50IGZkLCBtb2RlX3QgbW9kZSkKPiAg
IHsKPiAtICAgIHRyYWNlX3Zmc19mY2htb2QoZmQsIG1vZGUpOwo+IC0gICAgYXV0byBlcnJvciA9
IHN5c19mY2htb2QoZmQsIG1vZGUgJiBBTExQRVJNUyk7Cj4gLSAgICB0cmFjZV92ZnNfZmNobW9k
X3JldCgpOwo+IC0gICAgaWYgKGVycm9yKSB7Cj4gLSAgICAgICAgZXJybm8gPSBlcnJvcjsKPiAt
ICAgICAgICByZXR1cm4gLTE7Cj4gLSAgICB9IGVsc2Ugewo+IC0gICAgICAgIHJldHVybiAwOwo+
IC0gICAgfQo+ICsJdHJhY2VfdmZzX2ZjaG1vZChmZCwgbW9kZSk7Cj4gKwlhdXRvIGVycm9yID0g
c3lzX2ZjaG1vZChmZCwgbW9kZSAmIEFMTFBFUk1TKTsKPiArCXRyYWNlX3Zmc19mY2htb2RfcmV0
KCk7Cj4gKwlpZiAoZXJyb3IpIHsKPiArCQllcnJubyA9IGVycm9yOwo+ICsJCXJldHVybiAtMTsK
PiArCX0gZWxzZSB7Cj4gKwkJcmV0dXJuIDA7Cj4gKwl9Cj4gICB9Cj4gICAKPiAgIFRSQUNFUE9J
TlQodHJhY2VfdmZzX2ZjaG93biwgIlwiJWRcIiAlZCAlZCIsIGludCwgdWlkX3QsIGdpZF90KTsK
PiBAQCAtMTk5MiwxMDEgKzE5OTIsMTAxIEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2ZjaG93bl9y
ZXQsICIiKTsKPiAgIAo+ICAgaW50IGZjaG93bihpbnQgZmQsIHVpZF90IG93bmVyLCBnaWRfdCBn
cm91cCkKPiAgIHsKPiAtICAgIHRyYWNlX3Zmc19mY2hvd24oZmQsIG93bmVyLCBncm91cCk7Cj4g
LSAgICBXQVJOX1NUVUJCRUQoKTsKPiAtICAgIHRyYWNlX3Zmc19mY2hvd25fcmV0KCk7Cj4gLSAg
ICByZXR1cm4gMDsKPiArCXRyYWNlX3Zmc19mY2hvd24oZmQsIG93bmVyLCBncm91cCk7Cj4gKwlX
QVJOX1NUVUJCRUQoKTsKPiArCXRyYWNlX3Zmc19mY2hvd25fcmV0KCk7Cj4gKwlyZXR1cm4gMDsK
PiAgIH0KPiAgIAo+ICAgaW50IGNob3duKGNvbnN0IGNoYXIgKnBhdGgsIHVpZF90IG93bmVyLCBn
aWRfdCBncm91cCkKPiAgIHsKPiAtICAgIFdBUk5fU1RVQkJFRCgpOwo+IC0gICAgcmV0dXJuIDA7
Cj4gKwlXQVJOX1NUVUJCRUQoKTsKPiArCXJldHVybiAwOwo+ICAgfQo+ICAgCj4gICBpbnQgbGNo
b3duKGNvbnN0IGNoYXIgKnBhdGgsIHVpZF90IG93bmVyLCBnaWRfdCBncm91cCkKPiAgIHsKPiAt
ICAgIFdBUk5fU1RVQkJFRCgpOwo+IC0gICAgcmV0dXJuIDA7Cj4gKwlXQVJOX1NUVUJCRUQoKTsK
PiArCXJldHVybiAwOwo+ICAgfQo+ICAgCj4gICAKPiAgIHNzaXplX3Qgc2VuZGZpbGUoaW50IG91
dF9mZCwgaW50IGluX2ZkLCBvZmZfdCAqX29mZnNldCwgc2l6ZV90IGNvdW50KQo+ICAgewo+IC0g
ICAgc3RydWN0IGZpbGUgKmluX2ZwOwo+IC0gICAgc3RydWN0IGZpbGUgKm91dF9mcDsKPiAtICAg
IGZpbGVyZWYgaW5fZntmaWxlcmVmX2Zyb21fZmQoaW5fZmQpfTsKPiAtICAgIGZpbGVyZWYgb3V0
X2Z7ZmlsZXJlZl9mcm9tX2ZkKG91dF9mZCl9Owo+ICsJc3RydWN0IGZpbGUgKmluX2ZwOwo+ICsJ
c3RydWN0IGZpbGUgKm91dF9mcDsKPiArCWZpbGVyZWYgaW5fZntmaWxlcmVmX2Zyb21fZmQoaW5f
ZmQpfTsKPiArCWZpbGVyZWYgb3V0X2Z7ZmlsZXJlZl9mcm9tX2ZkKG91dF9mZCl9Owo+ICAgCj4g
LSAgICBpZiAoIWluX2YgfHwgIW91dF9mKSB7Cj4gLSAgICAgICAgcmV0dXJuIGxpYmNfZXJyb3Io
RUJBREYpOwo+IC0gICAgfQo+ICsJaWYgKCFpbl9mIHx8ICFvdXRfZikgewo+ICsJCXJldHVybiBs
aWJjX2Vycm9yKEVCQURGKTsKPiArCX0KPiAgIAo+IC0gICAgaW5fZnAgPSBpbl9mLmdldCgpOwo+
IC0gICAgb3V0X2ZwID0gb3V0X2YuZ2V0KCk7Cj4gKwlpbl9mcCA9IGluX2YuZ2V0KCk7Cj4gKwlv
dXRfZnAgPSBvdXRfZi5nZXQoKTsKPiAgIAo+IC0gICAgaWYgKCFpbl9mcC0+Zl9kZW50cnkpIHsK
PiAtICAgICAgICByZXR1cm4gbGliY19lcnJvcihFQkFERik7Cj4gLSAgICB9Cj4gKwlpZiAoIWlu
X2ZwLT5mX2RlbnRyeSkgewo+ICsJCXJldHVybiBsaWJjX2Vycm9yKEVCQURGKTsKPiArCX0KPiAg
IAo+IC0gICAgaWYgKCEoaW5fZnAtPmZfZmxhZ3MgJiBGUkVBRCkpIHsKPiAtICAgICAgICByZXR1
cm4gbGliY19lcnJvcihFQkFERik7Cj4gLSAgICB9Cj4gKwlpZiAoIShpbl9mcC0+Zl9mbGFncyAm
IEZSRUFEKSkgewo+ICsJCXJldHVybiBsaWJjX2Vycm9yKEVCQURGKTsKPiArCX0KPiAgIAo+IC0g
ICAgaWYgKG91dF9mcC0+Zl90eXBlICYgRFRZUEVfVk5PREUpIHsKPiAtICAgICAgICBpZiAoIW91
dF9mcC0+Zl9kZW50cnkpIHsKPiAtICAgICAgICAgICAgcmV0dXJuIGxpYmNfZXJyb3IoRUJBREYp
Owo+ICsJaWYgKG91dF9mcC0+Zl90eXBlICYgRFRZUEVfVk5PREUpIHsKPiArCQlpZiAoIW91dF9m
cC0+Zl9kZW50cnkpIHsKPiArCQkJcmV0dXJuIGxpYmNfZXJyb3IoRUJBREYpOwo+ICAgCX0gZWxz
ZSBpZiAoIShvdXRfZnAtPmZfZmxhZ3MgJiBGV1JJVEUpKSB7Cj4gLSAgICAgICAgICAgIHJldHVy
biBsaWJjX2Vycm9yKEVCQURGKTsKPiArCQkJcmV0dXJuIGxpYmNfZXJyb3IoRUJBREYpOwo+ICsJ
fQo+ICAgCX0KPiAtICAgIH0KPiAgIAo+IC0gICAgb2ZmX3Qgb2Zmc2V0IDsKPiArCW9mZl90IG9m
ZnNldCA7Cj4gICAKPiAtICAgIGlmIChfb2Zmc2V0ICE9IG51bGxwdHIpIHsKPiAtICAgICAgICBv
ZmZzZXQgPSAqX29mZnNldDsKPiAtICAgIH0gZWxzZSB7Cj4gLSAgICAgICAgLyogaWYgX29mZnNl
dCBpcyBudWxscHRyLCB3ZSBuZWVkIHRvIHJlYWQgZnJvbSB0aGUgcHJlc2VudCBwb3NpdGlvbiBv
ZiBpbl9mZCAqLwo+IC0gICAgICAgIG9mZnNldCA9IGxzZWVrKGluX2ZkLCAwLCBTRUVLX0NVUik7
Cj4gLSAgICB9Cj4gKwlpZiAoX29mZnNldCAhPSBudWxscHRyKSB7Cj4gKwkJb2Zmc2V0ID0gKl9v
ZmZzZXQ7Cj4gKwl9IGVsc2Ugewo+ICsJCS8qIGlmIF9vZmZzZXQgaXMgbnVsbHB0ciwgd2UgbmVl
ZCB0byByZWFkIGZyb20gdGhlIHByZXNlbnQgcG9zaXRpb24gb2YgaW5fZmQgKi8KPiArCQlvZmZz
ZXQgPSBsc2Vlayhpbl9mZCwgMCwgU0VFS19DVVIpOwo+ICsJfQo+ICAgCj4gLSAgICAvLyBDb25z
dHJhaW4gY291bnQgdG8gdGhlIGV4dGVudCBvZiB0aGUgZmlsZS4uLgo+IC0gICAgc3RydWN0IHN0
YXQgc3Q7Cj4gLSAgICBpZiAoZnN0YXQoaW5fZmQsICZzdCkgPCAwKSB7Cj4gLSAgICAgICAgcmV0
dXJuIC0xOwo+IC0gICAgfSBlbHNlIHsKPiAtICAgICAgICBpZiAob2Zmc2V0ID49IHN0LnN0X3Np
emUpIHsKPiAtICAgICAgICAgICAgcmV0dXJuIDA7Cj4gLSAgICAgICAgfSBlbHNlIGlmICgob2Zm
c2V0ICsgY291bnQpID49IHN0LnN0X3NpemUpIHsKPiAtICAgICAgICAgICAgY291bnQgPSBzdC5z
dF9zaXplIC0gb2Zmc2V0Owo+IC0gICAgICAgICAgICBpZiAoY291bnQgPT0gMCkgewo+IC0gICAg
ICAgICAgICAgICAgcmV0dXJuIDA7Cj4gLSAgICAgICAgICAgIH0KPiAtICAgICAgICB9Cj4gLSAg
ICB9Cj4gKwkvLyBDb25zdHJhaW4gY291bnQgdG8gdGhlIGV4dGVudCBvZiB0aGUgZmlsZS4uLgo+
ICsJc3RydWN0IHN0YXQgc3Q7Cj4gKwlpZiAoZnN0YXQoaW5fZmQsICZzdCkgPCAwKSB7Cj4gKwkJ
cmV0dXJuIC0xOwo+ICsJfSBlbHNlIHsKPiArCQlpZiAob2Zmc2V0ID49IHN0LnN0X3NpemUpIHsK
PiArCQkJcmV0dXJuIDA7Cj4gKwkJfSBlbHNlIGlmICgob2Zmc2V0ICsgY291bnQpID49IHN0LnN0
X3NpemUpIHsKPiArCQkJY291bnQgPSBzdC5zdF9zaXplIC0gb2Zmc2V0Owo+ICsJCQlpZiAoY291
bnQgPT0gMCkgewo+ICsJCQkJcmV0dXJuIDA7Cj4gKwkJCX0KPiArCQl9Cj4gKwl9Cj4gICAKPiAt
ICAgIHNpemVfdCBieXRlc190b19tbWFwID0gY291bnQgKyAob2Zmc2V0ICUgbW11OjpwYWdlX3Np
emUpOwo+IC0gICAgb2ZmX3Qgb2Zmc2V0X2Zvcl9tbWFwID0gIGFsaWduX2Rvd24ob2Zmc2V0LCAo
b2ZmX3QpbW11OjpwYWdlX3NpemUpOwo+ICsJc2l6ZV90IGJ5dGVzX3RvX21tYXAgPSBjb3VudCAr
IChvZmZzZXQgJSBtbXU6OnBhZ2Vfc2l6ZSk7Cj4gKwlvZmZfdCBvZmZzZXRfZm9yX21tYXAgPSAg
YWxpZ25fZG93bihvZmZzZXQsIChvZmZfdCltbXU6OnBhZ2Vfc2l6ZSk7Cj4gICAKPiAtICAgIGNo
YXIgKnNyYyA9IHN0YXRpY19jYXN0PGNoYXIgKj4obW1hcChudWxscHRyLCBieXRlc190b19tbWFw
LCBQUk9UX1JFQUQsIE1BUF9TSEFSRUQsIGluX2ZkLCBvZmZzZXRfZm9yX21tYXApKTsKPiArCWNo
YXIgKnNyYyA9IHN0YXRpY19jYXN0PGNoYXIgKj4obW1hcChudWxscHRyLCBieXRlc190b19tbWFw
LCBQUk9UX1JFQUQsIE1BUF9TSEFSRUQsIGluX2ZkLCBvZmZzZXRfZm9yX21tYXApKTsKPiAgIAo+
IC0gICAgaWYgKHNyYyA9PSBNQVBfRkFJTEVEKSB7Cj4gLSAgICAgICAgcmV0dXJuIC0xOwo+IC0g
ICAgfQo+ICsJaWYgKHNyYyA9PSBNQVBfRkFJTEVEKSB7Cj4gKwkJcmV0dXJuIC0xOwo+ICsJfQo+
ICAgCj4gLSAgICBhdXRvIHJldCA9IHdyaXRlKG91dF9mZCwgc3JjICsgKG9mZnNldCAlIFBBR0VT
SVpFKSwgY291bnQpOwo+ICsJYXV0byByZXQgPSB3cml0ZShvdXRfZmQsIHNyYyArIChvZmZzZXQg
JSBQQUdFU0laRSksIGNvdW50KTsKPiAgIAo+IC0gICAgaWYgKHJldCA8IDApIHsKPiAtICAgICAg
ICByZXR1cm4gbGliY19lcnJvcihlcnJubyk7Cj4gLSAgICB9IGVsc2UgaWYoX29mZnNldCA9PSBu
dWxscHRyKSB7Cj4gLSAgICAgICAgbHNlZWsoaW5fZmQsIHJldCwgU0VFS19DVVIpOwo+IC0gICAg
fSBlbHNlIHsKPiAtICAgICAgICAqX29mZnNldCArPSByZXQ7Cj4gLSAgICB9Cj4gKwlpZiAocmV0
IDwgMCkgewo+ICsJCXJldHVybiBsaWJjX2Vycm9yKGVycm5vKTsKPiArCX0gZWxzZSBpZihfb2Zm
c2V0ID09IG51bGxwdHIpIHsKPiArCQlsc2Vlayhpbl9mZCwgcmV0LCBTRUVLX0NVUik7Cj4gKwl9
IGVsc2Ugewo+ICsJCSpfb2Zmc2V0ICs9IHJldDsKPiArCX0KPiAgIAo+IC0gICAgYXNzZXJ0KG11
bm1hcChzcmMsIGNvdW50KSA9PSAwKTsKPiArCWFzc2VydChtdW5tYXAoc3JjLCBjb3VudCkgPT0g
MCk7Cj4gICAKPiAtICAgIHJldHVybiByZXQ7Cj4gKwlyZXR1cm4gcmV0Owo+ICAgfQo+ICAgCj4g
ICAjdW5kZWYgc2VuZGZpbGU2NAo+IEBAIC0yMDk2LDIwICsyMDk2LDIwIEBAIE5PX1NZUyhpbnQg
ZmNobW9kYXQoaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwgbW9kZV90IG1vZGUsIGlu
dCBmbGFncykpOwo+ICAgCj4gICBtb2RlX3QgdW1hc2sobW9kZV90IG5ld21hc2spCj4gICB7Cj4g
LSAgICByZXR1cm4gZ2xvYmFsX3VtYXNrLmV4Y2hhbmdlKG5ld21hc2ssIHN0ZDo6bWVtb3J5X29y
ZGVyX3JlbGF4ZWQpOwo+ICsJcmV0dXJuIGdsb2JhbF91bWFzay5leGNoYW5nZShuZXdtYXNrLCBz
dGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKPiAgIH0KPiAgIAo+ICAgaW50Cj4gICBmc19ub29w
KHZvaWQpCj4gICB7Cj4gLSAgICByZXR1cm4gMDsKPiArCXJldHVybiAwOwo+ICAgfQo+ICAgCj4g
ICBpbnQgY2hyb290KGNvbnN0IGNoYXIgKnBhdGgpCj4gICB7Cj4gLSAgICBXQVJOX1NUVUJCRUQo
KTsKPiAtICAgIGVycm5vID0gRU5PU1lTOwo+IC0gICAgcmV0dXJuIC0xOwo+ICsJV0FSTl9TVFVC
QkVEKCk7Cj4gKwllcnJubyA9IEVOT1NZUzsKPiArCXJldHVybiAtMTsKPiAgIH0KPiAgIAo+ICAg
Ly8gdW5wYWNrX2Jvb3RmcygpIHVucGFja3MgYSBjb2xsZWN0aW9uIG9mIGZpbGVzIHN0b3JlZCBh
cyBwYXJ0IG9mIHRoZSBPU3YKPiBAQCAtMjEyMCwxNCArMjEyMCwxNCBAQCBpbnQgY2hyb290KGNv
bnN0IGNoYXIgKnBhdGgpCj4gICAjZGVmaW5lIEJPT1RGU19QQVRIX01BWCAxMTEKPiAgIGVudW0g
Y2xhc3MgYm9vdGZzX2ZpbGVfdHlwZSA6IGNoYXIgeyBvdGhlciA9IDAsIHN5bWxpbmsgPSAxIH07
Cj4gICBzdHJ1Y3QgYm9vdGZzX21ldGFkYXRhIHsKPiAtICAgIHVpbnQ2NF90IHNpemU7Cj4gLSAg
ICB1aW50NjRfdCBvZmZzZXQ7Cj4gLSAgICAvLyBUaGUgZmlsZSdzIHR5cGUuIENhbiBiZSAic3lt
bGluayIgb3IgIm90aGVyIi4gQSBkaXJlY3RvcnkgaXMgYW4gIm90aGVyIgo+IC0gICAgLy8gZmls
ZSB3aXRoIGl0cyBuYW1lIGVuZGluZyB3aXRoIGEgIi8iIChhbmQgbm8gY29udGVudCkuCj4gLSAg
ICBib290ZnNfZmlsZV90eXBlIHR5cGU7Cj4gLSAgICAvLyBuYW1lIG11c3QgZW5kIHdpdGggYSBu
dWxsLiBGb3Igc3ltbGluayBmaWxlcywgdGhlIGNvbnRlbnQgbXVzdCBlbmQKPiAtICAgIC8vIHdp
dGggYSBudWxsIGFzIHdlbGwuCj4gLSAgICBjaGFyIG5hbWVbQk9PVEZTX1BBVEhfTUFYXTsKPiAr
CXVpbnQ2NF90IHNpemU7Cj4gKwl1aW50NjRfdCBvZmZzZXQ7Cj4gKwkvLyBUaGUgZmlsZSdzIHR5
cGUuIENhbiBiZSAic3ltbGluayIgb3IgIm90aGVyIi4gQSBkaXJlY3RvcnkgaXMgYW4gIm90aGVy
Igo+ICsJLy8gZmlsZSB3aXRoIGl0cyBuYW1lIGVuZGluZyB3aXRoIGEgIi8iIChhbmQgbm8gY29u
dGVudCkuCj4gKwlib290ZnNfZmlsZV90eXBlIHR5cGU7Cj4gKwkvLyBuYW1lIG11c3QgZW5kIHdp
dGggYSBudWxsLiBGb3Igc3ltbGluayBmaWxlcywgdGhlIGNvbnRlbnQgbXVzdCBlbmQKPiArCS8v
IHdpdGggYSBudWxsIGFzIHdlbGwuCj4gKwljaGFyIG5hbWVbQk9PVEZTX1BBVEhfTUFYXTsKPiAg
IH07Cj4gICAKPiAgIGV4dGVybiBjaGFyIGJvb3Rmc19zdGFydDsKPiBAQCAtMjEzNSwyMjUgKzIx
MzUsMjI1IEBAIGV4dGVybiBjaGFyIGJvb3Rmc19zdGFydDsKPiAgIGludCByYW1mc19zZXRfZmls
ZV9kYXRhKHN0cnVjdCB2bm9kZSAqdnAsIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBzaXplKTsK
PiAgIHZvaWQgdW5wYWNrX2Jvb3Rmcyh2b2lkKQo+ICAgewo+IC0gICAgc3RydWN0IGJvb3Rmc19t
ZXRhZGF0YSAqbWQgPSAoc3RydWN0IGJvb3Rmc19tZXRhZGF0YSAqKSZib290ZnNfc3RhcnQ7Cj4g
LSAgICBpbnQgZmQsIGk7Cj4gLQo+IC0gICAgZm9yIChpID0gMDsgbWRbaV0ubmFtZVswXTsgaSsr
KSB7Cj4gLSAgICAgICAgaW50IHJldDsKPiAtICAgICAgICBjaGFyICpwOwo+IC0KPiAtICAgICAg
ICAvLyBta2RpcigpIGRpcmVjdG9yaWVzIG5lZWRlZCBmb3IgdGhpcyBwYXRoIG5hbWUsIGFzIG5l
Y2Vzc2FyeQo+IC0gICAgICAgIGNoYXIgdG1wW0JPT1RGU19QQVRIX01BWF07Cj4gLSAgICAgICAg
c3RybGNweSh0bXAsIG1kW2ldLm5hbWUsIEJPT1RGU19QQVRIX01BWCk7Cj4gLSAgICAgICAgZm9y
IChwID0gdG1wOyAqcDsgKytwKSB7Cj4gLSAgICAgICAgICAgIGlmICgqcCA9PSAnLycpIHsKPiAt
ICAgICAgICAgICAgICAgICpwID0gJ1wwJzsKPiAtICAgICAgICAgICAgICAgIG1rZGlyKHRtcCwg
MDY2Nik7ICAvLyBzaWxlbnRseSBpZ25vcmUgZXJyb3JzIGFuZCBleGlzdGluZyBkaXJzCj4gLSAg
ICAgICAgICAgICAgICAqcCA9ICcvJzsKPiAtICAgICAgICAgICAgfQo+IC0gICAgICAgIH0KPiAt
Cj4gLSAgICAgICAgaWYgKG1kW2ldLnR5cGUgPT0gYm9vdGZzX2ZpbGVfdHlwZTo6c3ltbGluaykg
ewo+IC0gICAgICAgICAgICAvLyBUaGlzIGlzIGEgc3ltYm9saWMgbGluayByZWNvcmQuIFRoZSBm
aWxlJ3MgY29udGVudCBpcyB0aGUKPiAtICAgICAgICAgICAgLy8gdGFyZ2V0IHBhdGgsIGFuZCB3
ZSBhc3N1bWUgZW5kcyB3aXRoIGEgbnVsbC4KPiAtICAgICAgICAgICAgaWYgKHN5bWxpbmsoJmJv
b3Rmc19zdGFydCArIG1kW2ldLm9mZnNldCwgbWRbaV0ubmFtZSkgIT0gMCkgewo+IC0gICAgICAg
ICAgICAgICAga3ByaW50ZigiY291bGRuJ3Qgc3ltbGluayAlczogJWRcbiIsIG1kW2ldLm5hbWUs
IGVycm5vKTsKPiAtICAgICAgICAgICAgICAgIHN5c19wYW5pYygidW5wYWNrX2Jvb3RmcyBmYWls
ZWQiKTsKPiAtICAgICAgICAgICAgfQo+IC0gICAgICAgICAgICBjb250aW51ZTsKPiAtICAgICAg
ICB9Cj4gLSAgICAgICAgaWYgKCoocC0xKSA9PSAnLycgJiYgbWRbaV0uc2l6ZSA9PSAwKSB7Cj4g
LSAgICAgICAgICAgIC8vIFRoaXMgaXMgZGlyZWN0b3J5IHJlY29yZC4gTm90aGluZyBlbHNlIHRv
IGRvCj4gLSAgICAgICAgICAgIGNvbnRpbnVlOwo+IC0gICAgICAgIH0KPiAtCj4gLSAgICAgICAg
ZmQgPSBjcmVhdChtZFtpXS5uYW1lLCAwNjY2KTsKPiAtICAgICAgICBpZiAoZmQgPCAwKSB7Cj4g
LSAgICAgICAgICAgIGtwcmludGYoImNvdWxkbid0IGNyZWF0ZSAlczogJWRcbiIsCj4gLSAgICAg
ICAgICAgICAgICAgICAgbWRbaV0ubmFtZSwgZXJybm8pOwo+IC0gICAgICAgICAgICBzeXNfcGFu
aWMoInVucGFja19ib290ZnMgZmFpbGVkIik7Cj4gLSAgICAgICAgfQo+IC0KPiAtICAgICAgICBz
dHJ1Y3QgZmlsZSAqZnA7Cj4gLSAgICAgICAgaW50IGVycm9yID0gZmdldChmZCwgJmZwKTsKPiAt
ICAgICAgICBpZiAoZXJyb3IpIHsKPiAtICAgICAgICAgICAga3ByaW50ZigiY291bGRuJ3QgZmdl
dCAlczogJWRcbiIsCj4gLSAgICAgICAgICAgICAgICAgICAgbWRbaV0ubmFtZSwgZXJyb3IpOwo+
IC0gICAgICAgICAgICBzeXNfcGFuaWMoInVucGFja19ib290ZnMgZmFpbGVkIik7Cj4gLSAgICAg
ICAgfQo+IC0KPiAtICAgICAgICBzdHJ1Y3Qgdm5vZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5kX3Zu
b2RlOwo+IC0gICAgICAgIHJldCA9IHJhbWZzX3NldF9maWxlX2RhdGEodnAsICZib290ZnNfc3Rh
cnQgKyBtZFtpXS5vZmZzZXQsIG1kW2ldLnNpemUpOwo+IC0gICAgICAgIGlmIChyZXQpIHsKPiAt
ICAgICAgICAgICAga3ByaW50ZigicmFtZnNfc2V0X2ZpbGVfZGF0YSBmYWlsZWQsIHJldCA9ICVk
XG4iLCByZXQpOwo+IC0gICAgICAgICAgICBzeXNfcGFuaWMoInVucGFja19ib290ZnMgZmFpbGVk
Iik7Cj4gLSAgICAgICAgfQo+IC0KPiAtICAgICAgICBmZHJvcChmcCk7Cj4gLSAgICAgICAgY2xv
c2UoZmQpOwo+IC0gICAgfQo+ICsJc3RydWN0IGJvb3Rmc19tZXRhZGF0YSAqbWQgPSAoc3RydWN0
IGJvb3Rmc19tZXRhZGF0YSAqKSZib290ZnNfc3RhcnQ7Cj4gKwlpbnQgZmQsIGk7Cj4gKwo+ICsJ
Zm9yIChpID0gMDsgbWRbaV0ubmFtZVswXTsgaSsrKSB7Cj4gKwkJaW50IHJldDsKPiArCQljaGFy
ICpwOwo+ICsKPiArCQkvLyBta2RpcigpIGRpcmVjdG9yaWVzIG5lZWRlZCBmb3IgdGhpcyBwYXRo
IG5hbWUsIGFzIG5lY2Vzc2FyeQo+ICsJCWNoYXIgdG1wW0JPT1RGU19QQVRIX01BWF07Cj4gKwkJ
c3RybGNweSh0bXAsIG1kW2ldLm5hbWUsIEJPT1RGU19QQVRIX01BWCk7Cj4gKwkJZm9yIChwID0g
dG1wOyAqcDsgKytwKSB7Cj4gKwkJCWlmICgqcCA9PSAnLycpIHsKPiArCQkJCSpwID0gJ1wwJzsK
PiArCQkJCW1rZGlyKHRtcCwgMDY2Nik7ICAvLyBzaWxlbnRseSBpZ25vcmUgZXJyb3JzIGFuZCBl
eGlzdGluZyBkaXJzCj4gKwkJCQkqcCA9ICcvJzsKPiArCQkJfQo+ICsJCX0KPiArCj4gKwkJaWYg
KG1kW2ldLnR5cGUgPT0gYm9vdGZzX2ZpbGVfdHlwZTo6c3ltbGluaykgewo+ICsJCQkvLyBUaGlz
IGlzIGEgc3ltYm9saWMgbGluayByZWNvcmQuIFRoZSBmaWxlJ3MgY29udGVudCBpcyB0aGUKPiAr
CQkJLy8gdGFyZ2V0IHBhdGgsIGFuZCB3ZSBhc3N1bWUgZW5kcyB3aXRoIGEgbnVsbC4KPiArCQkJ
aWYgKHN5bWxpbmsoJmJvb3Rmc19zdGFydCArIG1kW2ldLm9mZnNldCwgbWRbaV0ubmFtZSkgIT0g
MCkgewo+ICsJCQkJa3ByaW50ZigiY291bGRuJ3Qgc3ltbGluayAlczogJWRcbiIsIG1kW2ldLm5h
bWUsIGVycm5vKTsKPiArCQkJCXN5c19wYW5pYygidW5wYWNrX2Jvb3RmcyBmYWlsZWQiKTsKPiAr
CQkJfQo+ICsJCQljb250aW51ZTsKPiArCQl9Cj4gKwkJaWYgKCoocC0xKSA9PSAnLycgJiYgbWRb
aV0uc2l6ZSA9PSAwKSB7Cj4gKwkJCS8vIFRoaXMgaXMgZGlyZWN0b3J5IHJlY29yZC4gTm90aGlu
ZyBlbHNlIHRvIGRvCj4gKwkJCWNvbnRpbnVlOwo+ICsJCX0KPiArCj4gKwkJZmQgPSBjcmVhdCht
ZFtpXS5uYW1lLCAwNjY2KTsKPiArCQlpZiAoZmQgPCAwKSB7Cj4gKwkJCWtwcmludGYoImNvdWxk
bid0IGNyZWF0ZSAlczogJWRcbiIsCj4gKwkJCQkJbWRbaV0ubmFtZSwgZXJybm8pOwo+ICsJCQlz
eXNfcGFuaWMoInVucGFja19ib290ZnMgZmFpbGVkIik7Cj4gKwkJfQo+ICsKPiArCQlzdHJ1Y3Qg
ZmlsZSAqZnA7Cj4gKwkJaW50IGVycm9yID0gZmdldChmZCwgJmZwKTsKPiArCQlpZiAoZXJyb3Ip
IHsKPiArCQkJa3ByaW50ZigiY291bGRuJ3QgZmdldCAlczogJWRcbiIsCj4gKwkJCQkJbWRbaV0u
bmFtZSwgZXJyb3IpOwo+ICsJCQlzeXNfcGFuaWMoInVucGFja19ib290ZnMgZmFpbGVkIik7Cj4g
KwkJfQo+ICsKPiArCQlzdHJ1Y3Qgdm5vZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOwo+
ICsJCXJldCA9IHJhbWZzX3NldF9maWxlX2RhdGEodnAsICZib290ZnNfc3RhcnQgKyBtZFtpXS5v
ZmZzZXQsIG1kW2ldLnNpemUpOwo+ICsJCWlmIChyZXQpIHsKPiArCQkJa3ByaW50ZigicmFtZnNf
c2V0X2ZpbGVfZGF0YSBmYWlsZWQsIHJldCA9ICVkXG4iLCByZXQpOwo+ICsJCQlzeXNfcGFuaWMo
InVucGFja19ib290ZnMgZmFpbGVkIik7Cj4gKwkJfQo+ICsKPiArCQlmZHJvcChmcCk7Cj4gKwkJ
Y2xvc2UoZmQpOwo+ICsJfQo+ICAgfQo+ICAgCj4gICB2b2lkIG1vdW50X3Jvb3Rmcyh2b2lkKQo+
ICAgewo+IC0gICAgaW50IHJldDsKPiArCWludCByZXQ7Cj4gICAKPiAtICAgIHJldCA9IHN5c19t
b3VudCgiIiwgIi8iLCAicmFtZnMiLCAwLCBudWxscHRyKTsKPiAtICAgIGlmIChyZXQpCj4gLSAg
ICAgICAga3ByaW50ZigiZmFpbGVkIHRvIG1vdW50IHJvb3RmcywgZXJyb3IgPSAlc1xuIiwgc3Ry
ZXJyb3IocmV0KSk7Cj4gKwlyZXQgPSBzeXNfbW91bnQoIiIsICIvIiwgInJhbWZzIiwgMCwgbnVs
bHB0cik7Cj4gKwlpZiAocmV0KQo+ICsJCWtwcmludGYoImZhaWxlZCB0byBtb3VudCByb290ZnMs
IGVycm9yID0gJXNcbiIsIHN0cmVycm9yKHJldCkpOwo+ICAgCj4gLSAgICBpZiAobWtkaXIoIi9k
ZXYiLCAwNzU1KSA8IDApCj4gLSAgICAgICAga3ByaW50ZigiZmFpbGVkIHRvIGNyZWF0ZSAvZGV2
LCBlcnJvciA9ICVzXG4iLCBzdHJlcnJvcihlcnJubykpOwo+ICsJaWYgKG1rZGlyKCIvZGV2Iiwg
MDc1NSkgPCAwKQo+ICsJCWtwcmludGYoImZhaWxlZCB0byBjcmVhdGUgL2RldiwgZXJyb3IgPSAl
c1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKPiAgIAo+IC0gICAgcmV0ID0gc3lzX21vdW50KCIiLCAi
L2RldiIsICJkZXZmcyIsIDAsIG51bGxwdHIpOwo+IC0gICAgaWYgKHJldCkKPiAtICAgICAgICBr
cHJpbnRmKCJmYWlsZWQgdG8gbW91bnQgZGV2ZnMsIGVycm9yID0gJXNcbiIsIHN0cmVycm9yKHJl
dCkpOwo+ICsJcmV0ID0gc3lzX21vdW50KCIiLCAiL2RldiIsICJkZXZmcyIsIDAsIG51bGxwdHIp
Owo+ICsJaWYgKHJldCkKPiArCQlrcHJpbnRmKCJmYWlsZWQgdG8gbW91bnQgZGV2ZnMsIGVycm9y
ID0gJXNcbiIsIHN0cmVycm9yKHJldCkpOwo+ICAgfQo+ICAgCj4gICBleHRlcm4gIkMiCj4gICBp
bnQgbm1vdW50KHN0cnVjdCBpb3ZlYyAqaW92LCB1bnNpZ25lZCBuaW92LCBpbnQgZmxhZ3MpCj4g
ICB7Cj4gLSAgICBzdHJ1Y3QgYXJncyB7Cj4gLSAgICAgICAgY2hhciogZnN0eXBlID0gbnVsbHB0
cjsKPiAtICAgICAgICBjaGFyKiBmc3BhdGggPSBudWxscHRyOwo+IC0gICAgICAgIGNoYXIqIGZy
b20gPSBudWxscHRyOwo+IC0gICAgfTsKPiAtICAgIHN0YXRpYyB1bm9yZGVyZWRfbWFwPHN0cmlu
ZywgY2hhciogYXJnczo6Kj4gYXJnbWFwIHsKPiAtICAgICAgICB7ICJmc3R5cGUiLCAmYXJnczo6
ZnN0eXBlIH0sCj4gLSAgICAgICAgeyAiZnNwYXRoIiwgJmFyZ3M6OmZzcGF0aCB9LAo+IC0gICAg
ICAgIHsgImZyb20iLCAmYXJnczo6ZnJvbSB9LAo+IC0gICAgfTsKPiAtICAgIGFyZ3MgYTsKPiAt
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbmlvdjsgaSArPSAyKSB7Cj4gLSAgICAgICAgc3Rk
OjpzdHJpbmcgcyhzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oaW92W2ldLmlvdl9iYXNlKSk7Cj4g
LSAgICAgICAgaWYgKGFyZ21hcC5jb3VudChzKSkgewo+IC0gICAgICAgICAgICBhLiooYXJnbWFw
W3NdKSA9IHN0YXRpY19jYXN0PGNoYXIqPihpb3ZbaSsxXS5pb3ZfYmFzZSk7Cj4gLSAgICAgICAg
fQo+IC0gICAgfQo+IC0gICAgcmV0dXJuIHN5c19tb3VudChhLmZyb20sIGEuZnNwYXRoLCBhLmZz
dHlwZSwgZmxhZ3MsIG51bGxwdHIpOwo+ICsJc3RydWN0IGFyZ3Mgewo+ICsJCWNoYXIqIGZzdHlw
ZSA9IG51bGxwdHI7Cj4gKwkJY2hhciogZnNwYXRoID0gbnVsbHB0cjsKPiArCQljaGFyKiBmcm9t
ID0gbnVsbHB0cjsKPiArCX07Cj4gKwlzdGF0aWMgdW5vcmRlcmVkX21hcDxzdHJpbmcsIGNoYXIq
IGFyZ3M6Oio+IGFyZ21hcCB7Cj4gKwkJeyAiZnN0eXBlIiwgJmFyZ3M6OmZzdHlwZSB9LAo+ICsJ
CXsgImZzcGF0aCIsICZhcmdzOjpmc3BhdGggfSwKPiArCQl7ICJmcm9tIiwgJmFyZ3M6OmZyb20g
fSwKPiArCX07Cj4gKwlhcmdzIGE7Cj4gKwlmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5pb3Y7IGkg
Kz0gMikgewo+ICsJCXN0ZDo6c3RyaW5nIHMoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGlvdltp
XS5pb3ZfYmFzZSkpOwo+ICsJCWlmIChhcmdtYXAuY291bnQocykpIHsKPiArCQkJYS4qKGFyZ21h
cFtzXSkgPSBzdGF0aWNfY2FzdDxjaGFyKj4oaW92W2krMV0uaW92X2Jhc2UpOwo+ICsJCX0KPiAr
CX0KPiArCXJldHVybiBzeXNfbW91bnQoYS5mcm9tLCBhLmZzcGF0aCwgYS5mc3R5cGUsIGZsYWdz
LCBudWxscHRyKTsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIHZvaWQgaW1wb3J0X2V4dHJhX3pmc19w
b29scyh2b2lkKQo+ICAgewo+IC0gICAgc3RydWN0IHN0YXQgc3Q7Cj4gLSAgICBpbnQgcmV0Owo+
ICsJc3RydWN0IHN0YXQgc3Q7Cj4gKwlpbnQgcmV0Owo+ICAgCj4gLSAgICAvLyBUaGUgZmlsZSAn
L2V0Yy9tbnR0YWInIGlzIGEgTGliWkZTIHJlcXVpcmVtZW50IGFuZCB3aWxsIG5vdAo+IC0gICAg
Ly8gZXhpc3QgZHVyaW5nIGNwaW9kIHBoYXNlLiBUaGUgZnVuY3Rpb25hbGl0eSBwcm92aWRlZCBi
eSB0aGlzCj4gLSAgICAvLyBmdW5jdGlvbiBpc24ndCBuZWVkZWQgZHVyaW5nIHRoYXQgcGhhc2Us
IHNvIGxldCdzIHNraXAgaXQuCj4gLSAgICBpZiAoc3RhdCgiL2V0Yy9tbnR0YWIiICwgJnN0KSAh
PSAwKSB7Cj4gLSAgICAgICAgcmV0dXJuOwo+IC0gICAgfQo+ICsJLy8gVGhlIGZpbGUgJy9ldGMv
bW50dGFiJyBpcyBhIExpYlpGUyByZXF1aXJlbWVudCBhbmQgd2lsbCBub3QKPiArCS8vIGV4aXN0
IGR1cmluZyBjcGlvZCBwaGFzZS4gVGhlIGZ1bmN0aW9uYWxpdHkgcHJvdmlkZWQgYnkgdGhpcwo+
ICsJLy8gZnVuY3Rpb24gaXNuJ3QgbmVlZGVkIGR1cmluZyB0aGF0IHBoYXNlLCBzbyBsZXQncyBz
a2lwIGl0Lgo+ICsJaWYgKHN0YXQoIi9ldGMvbW50dGFiIiAsICZzdCkgIT0gMCkgewo+ICsJCXJl
dHVybjsKPiArCX0KPiAgIAo+IC0gICAgLy8gSW1wb3J0IGV4dHJhIHBvb2xzIG1vdW50aW5nIGRh
dGFzZXRzIHRoZXJlIGNvbnRhaW5lZC4KPiAtICAgIC8vIERhdGFzZXRzIGZyb20gb3N2IHBvb2wg
d2lsbCBub3QgYmUgbW91bnRlZCBoZXJlLgo+IC0gICAgaWYgKGFjY2VzcygienBvb2wuc28iLCBY
X09LKSAhPSAwKSB7Cj4gLSAgICAgICAgcmV0dXJuOwo+IC0gICAgfQo+IC0gICAgdmVjdG9yPHN0
cmluZz4genBvb2xfYXJncyA9IHsienBvb2wiLCAiaW1wb3J0IiwgIi1mIiwgIi1hIiB9Owo+IC0g
ICAgYXV0byBvayA9IG9zdjo6cnVuKCJ6cG9vbC5zbyIsIHpwb29sX2FyZ3MsICZyZXQpOwo+IC0g
ICAgYXNzZXJ0KG9rKTsKPiArCS8vIEltcG9ydCBleHRyYSBwb29scyBtb3VudGluZyBkYXRhc2V0
cyB0aGVyZSBjb250YWluZWQuCj4gKwkvLyBEYXRhc2V0cyBmcm9tIG9zdiBwb29sIHdpbGwgbm90
IGJlIG1vdW50ZWQgaGVyZS4KPiArCWlmIChhY2Nlc3MoInpwb29sLnNvIiwgWF9PSykgIT0gMCkg
ewo+ICsJCXJldHVybjsKPiArCX0KPiArCXZlY3RvcjxzdHJpbmc+IHpwb29sX2FyZ3MgPSB7Inpw
b29sIiwgImltcG9ydCIsICItZiIsICItYSIgfTsKPiArCWF1dG8gb2sgPSBvc3Y6OnJ1bigienBv
b2wuc28iLCB6cG9vbF9hcmdzLCAmcmV0KTsKPiArCWFzc2VydChvayk7Cj4gICAKPiAtICAgIGlm
ICghcmV0KSB7Cj4gLSAgICAgICAgZGVidWcoInpmczogZXh0cmEgWkZTIHBvb2wocykgZm91bmQu
XG4iKTsKPiAtICAgIH0KPiArCWlmICghcmV0KSB7Cj4gKwkJZGVidWcoInpmczogZXh0cmEgWkZT
IHBvb2wocykgZm91bmQuXG4iKTsKPiArCX0KPiAgIH0KPiAgIAo+ICAgdm9pZCBwaXZvdF9yb290
ZnMoY29uc3QgY2hhciogcGF0aCkKPiAgIHsKPiAtICAgIGludCByZXQgPSBzeXNfcGl2b3Rfcm9v
dChwYXRoLCAiLyIpOwo+IC0gICAgaWYgKHJldCkKPiAtICAgICAgICBrcHJpbnRmKCJmYWlsZWQg
dG8gcGl2b3Qgcm9vdCwgZXJyb3IgPSAlc1xuIiwgc3RyZXJyb3IocmV0KSk7Cj4gLQo+IC0gICAg
YXV0byBlbnQgPSBzZXRtbnRlbnQoIi9ldGMvZnN0YWIiLCAiciIpOwo+IC0gICAgaWYgKCFlbnQp
IHsKPiAtICAgICAgICByZXR1cm47Cj4gLSAgICB9Cj4gKwlpbnQgcmV0ID0gc3lzX3Bpdm90X3Jv
b3QocGF0aCwgIi8iKTsKPiArCWlmIChyZXQpCj4gKwkJa3ByaW50ZigiZmFpbGVkIHRvIHBpdm90
IHJvb3QsIGVycm9yID0gJXNcbiIsIHN0cmVycm9yKHJldCkpOwo+ICAgCj4gLSAgICBzdHJ1Y3Qg
bW50ZW50ICptID0gbnVsbHB0cjsKPiAtICAgIHdoaWxlICgobSA9IGdldG1udGVudChlbnQpKSAh
PSBudWxscHRyKSB7Cj4gLSAgICAgICAgaWYgKCFzdHJjbXAobS0+bW50X2RpciwgIi8iKSkgewo+
IC0gICAgICAgICAgICBjb250aW51ZTsKPiAtICAgICAgICB9Cj4gLQo+IC0gICAgICAgIGlmICgo
bS0+bW50X29wdHMgIT0gbnVsbHB0cikgJiYgc3RyY21wKG0tPm1udF9vcHRzLCBNTlRPUFRfREVG
QVVMVFMpKSB7Cj4gLSAgICAgICAgICAgIHByaW50ZigiV2FybmluZzogb3B0cyAlcywgaWdub3Jl
ZCBmb3IgZnMgJXNcbiIsIG0tPm1udF9vcHRzLCBtLT5tbnRfdHlwZSk7Cj4gLSAgICAgICAgfQo+
ICsJYXV0byBlbnQgPSBzZXRtbnRlbnQoIi9ldGMvZnN0YWIiLCAiciIpOwo+ICsJaWYgKCFlbnQp
IHsKPiArCQlyZXR1cm47Cj4gKwl9Cj4gICAKPiAtICAgICAgICAvLyBGSVhNRTogUmlnaHQgbm93
LCBpZ25vcmluZyBtbnRvcHMuIEluIHRoZSBmdXR1cmUgd2UgbWF5IGhhdmUgYW4gb3B0aW9uIHBh
cnNlcgo+IC0gICAgICAgIHJldCA9IHN5c19tb3VudChtLT5tbnRfZnNuYW1lLCBtLT5tbnRfZGly
LCBtLT5tbnRfdHlwZSwgMCwgbnVsbHB0cik7Cj4gLSAgICAgICAgaWYgKHJldCkgewo+IC0gICAg
ICAgICAgICBwcmludGYoImZhaWxlZCB0byBtb3VudCAlcywgZXJyb3IgPSAlc1xuIiwgbS0+bW50
X3R5cGUsIHN0cmVycm9yKHJldCkpOwo+IC0gICAgICAgIH0KPiAtICAgIH0KPiAtICAgIGVuZG1u
dGVudChlbnQpOwo+ICsJc3RydWN0IG1udGVudCAqbSA9IG51bGxwdHI7Cj4gKwl3aGlsZSAoKG0g
PSBnZXRtbnRlbnQoZW50KSkgIT0gbnVsbHB0cikgewo+ICsJCWlmICghc3RyY21wKG0tPm1udF9k
aXIsICIvIikpIHsKPiArCQkJY29udGludWU7Cj4gKwkJfQo+ICsKPiArCQlpZiAoKG0tPm1udF9v
cHRzICE9IG51bGxwdHIpICYmIHN0cmNtcChtLT5tbnRfb3B0cywgTU5UT1BUX0RFRkFVTFRTKSkg
ewo+ICsJCQlwcmludGYoIldhcm5pbmc6IG9wdHMgJXMsIGlnbm9yZWQgZm9yIGZzICVzXG4iLCBt
LT5tbnRfb3B0cywgbS0+bW50X3R5cGUpOwo+ICsJCX0KPiArCj4gKwkJLy8gRklYTUU6IFJpZ2h0
IG5vdywgaWdub3JpbmcgbW50b3BzLiBJbiB0aGUgZnV0dXJlIHdlIG1heSBoYXZlIGFuIG9wdGlv
biBwYXJzZXIKPiArCQlyZXQgPSBzeXNfbW91bnQobS0+bW50X2ZzbmFtZSwgbS0+bW50X2Rpciwg
bS0+bW50X3R5cGUsIDAsIG51bGxwdHIpOwo+ICsJCWlmIChyZXQpIHsKPiArCQkJcHJpbnRmKCJm
YWlsZWQgdG8gbW91bnQgJXMsIGVycm9yID0gJXNcbiIsIG0tPm1udF90eXBlLCBzdHJlcnJvcihy
ZXQpKTsKPiArCQl9Cj4gKwl9Cj4gKwllbmRtbnRlbnQoZW50KTsKPiAgIH0KPiAgIAo+ICAgZXh0
ZXJuICJDIiB2b2lkIHVubW91bnRfZGV2ZnMoKQo+ICAgewo+IC0gICAgaW50IHJldCA9IHN5c191
bW91bnQoIi9kZXYiKTsKPiAtICAgIGlmIChyZXQpCj4gLSAgICAgICAga3ByaW50ZigiZmFpbGVk
IHRvIHVubW91bnQgL2RldiwgZXJyb3IgPSAlc1xuIiwgc3RyZXJyb3IocmV0KSk7Cj4gKwlpbnQg
cmV0ID0gc3lzX3Vtb3VudCgiL2RldiIpOwo+ICsJaWYgKHJldCkKPiArCQlrcHJpbnRmKCJmYWls
ZWQgdG8gdW5tb3VudCAvZGV2LCBlcnJvciA9ICVzXG4iLCBzdHJlcnJvcihyZXQpKTsKPiAgIH0K
PiAgIAo+ICAgZXh0ZXJuICJDIiBpbnQgbW91bnRfcm9mc19yb290ZnMoYm9vbCBwaXZvdF9yb290
KQo+ICAgewo+IC0gICAgaW50IHJldDsKPiArCWludCByZXQ7Cj4gICAKPiAtICAgIGlmIChta2Rp
cigiL3JvZnMiLCAwNzU1KSA8IDApCj4gLSAgICAgICAga3ByaW50ZigiZmFpbGVkIHRvIGNyZWF0
ZSAvcm9mcywgZXJyb3IgPSAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKPiArCWlmIChta2Rpcigi
L3JvZnMiLCAwNzU1KSA8IDApCj4gKwkJa3ByaW50ZigiZmFpbGVkIHRvIGNyZWF0ZSAvcm9mcywg
ZXJyb3IgPSAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKPiAgIAo+IC0gICAgcmV0ID0gc3lzX21v
dW50KCIvZGV2L3ZibGswLjEiLCAiL3JvZnMiLCAicm9mcyIsIE1OVF9SRE9OTFksIDApOwo+ICsJ
cmV0ID0gc3lzX21vdW50KCIvZGV2L3ZibGswLjEiLCAiL3JvZnMiLCAicm9mcyIsIE1OVF9SRE9O
TFksIDApOwo+ICAgCj4gLSAgICBpZiAocmV0KSB7Cj4gLSAgICAgICAga3ByaW50ZigiZmFpbGVk
IHRvIG1vdW50IC9yb2ZzLCBlcnJvciA9ICVzXG4iLCBzdHJlcnJvcihyZXQpKTsKPiAtICAgICAg
ICBybWRpcigiL3JvZnMiKTsKPiAtICAgICAgICByZXR1cm4gcmV0Owo+IC0gICAgfQo+ICsJaWYg
KHJldCkgewo+ICsJCWtwcmludGYoImZhaWxlZCB0byBtb3VudCAvcm9mcywgZXJyb3IgPSAlc1xu
Iiwgc3RyZXJyb3IocmV0KSk7Cj4gKwkJcm1kaXIoIi9yb2ZzIik7Cj4gKwkJcmV0dXJuIHJldDsK
PiArCX0KPiAgIAo+IC0gICAgaWYgKHBpdm90X3Jvb3QpIHsKPiAtICAgICAgICBwaXZvdF9yb290
ZnMoIi9yb2ZzIik7Cj4gLSAgICB9Cj4gKwlpZiAocGl2b3Rfcm9vdCkgewo+ICsJCXBpdm90X3Jv
b3RmcygiL3JvZnMiKTsKPiArCX0KPiAgIAo+IC0gICAgcmV0dXJuIDA7Cj4gKwlyZXR1cm4gMDsK
PiAgIH0KPiAgIAo+ICAgZXh0ZXJuICJDIiB2b2lkIG1vdW50X3pmc19yb290ZnMoYm9vbCBwaXZv
dF9yb290KQo+ICAgewo+IC0gICAgaWYgKG1rZGlyKCIvemZzIiwgMDc1NSkgPCAwKQo+IC0gICAg
ICAgIGtwcmludGYoImZhaWxlZCB0byBjcmVhdGUgL3pmcywgZXJyb3IgPSAlc1xuIiwgc3RyZXJy
b3IoZXJybm8pKTsKPiArCWlmIChta2RpcigiL3pmcyIsIDA3NTUpIDwgMCkKPiArCQlrcHJpbnRm
KCJmYWlsZWQgdG8gY3JlYXRlIC96ZnMsIGVycm9yID0gJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7
Cj4gICAKPiAtICAgIGludCByZXQgPSBzeXNfbW91bnQoIi9kZXYvdmJsazAuMSIsICIvemZzIiwg
InpmcyIsIDAsICh2b2lkICopIm9zdi96ZnMiKTsKPiArCWludCByZXQgPSBzeXNfbW91bnQoIi9k
ZXYvdmJsazAuMSIsICIvemZzIiwgInpmcyIsIDAsICh2b2lkICopIm9zdi96ZnMiKTsKPiAgIAo+
IC0gICAgaWYgKHJldCkKPiAtICAgICAgICBrcHJpbnRmKCJmYWlsZWQgdG8gbW91bnQgL3pmcywg
ZXJyb3IgPSAlc1xuIiwgc3RyZXJyb3IocmV0KSk7Cj4gKwlpZiAocmV0KQo+ICsJCWtwcmludGYo
ImZhaWxlZCB0byBtb3VudCAvemZzLCBlcnJvciA9ICVzXG4iLCBzdHJlcnJvcihyZXQpKTsKPiAg
IAo+IC0gICAgaWYgKCFwaXZvdF9yb290KSB7Cj4gLSAgICAgICAgcmV0dXJuOwo+IC0gICAgfQo+
ICsJaWYgKCFwaXZvdF9yb290KSB7Cj4gKwkJcmV0dXJuOwo+ICsJfQo+ICAgCj4gLSAgICBwaXZv
dF9yb290ZnMoIi96ZnMiKTsKPiArCXBpdm90X3Jvb3RmcygiL3pmcyIpOwo+ICAgCj4gLSAgICBp
bXBvcnRfZXh0cmFfemZzX3Bvb2xzKCk7Cj4gKwlpbXBvcnRfZXh0cmFfemZzX3Bvb2xzKCk7Cj4g
ICB9Cj4gICAKPiAgIGV4dGVybiAiQyIgdm9pZCB1bm1vdW50X3Jvb3Rmcyh2b2lkKQo+ICAgewo+
IC0gICAgaW50IHJldDsKPiArCWludCByZXQ7Cj4gICAKPiAtICAgIHN5c191bW91bnQoIi9kZXYi
KTsKPiArCXN5c191bW91bnQoIi9kZXYiKTsKPiAgIAo+IC0gICAgcmV0ID0gc3lzX3Vtb3VudCgi
L3Byb2MiKTsKPiAtICAgIGlmIChyZXQpIHsKPiAtICAgICAgICBrcHJpbnRmKCJXYXJuaW5nOiB1
bm1vdW50X3Jvb3RmczogZmFpbGVkIHRvIHVubW91bnQgL3Byb2MsICIKPiAtICAgICAgICAgICAg
ImVycm9yID0gJXNcbiIsIHN0cmVycm9yKHJldCkpOwo+IC0gICAgfQo+ICsJcmV0ID0gc3lzX3Vt
b3VudCgiL3Byb2MiKTsKPiArCWlmIChyZXQpIHsKPiArCQlrcHJpbnRmKCJXYXJuaW5nOiB1bm1v
dW50X3Jvb3RmczogZmFpbGVkIHRvIHVubW91bnQgL3Byb2MsICIKPiArCQkJImVycm9yID0gJXNc
biIsIHN0cmVycm9yKHJldCkpOwo+ICsJfQo+ICAgCj4gLSAgICByZXQgPSBzeXNfdW1vdW50Migi
LyIsIE1OVF9GT1JDRSk7Cj4gLSAgICBpZiAocmV0KSB7Cj4gLSAgICAgICAga3ByaW50ZigiV2Fy
bmluZzogdW5tb3VudF9yb290ZnM6IGZhaWxlZCB0byB1bm1vdW50IC8sICIKPiAtICAgICAgICAg
ICAgImVycm9yID0gJXNcbiIsIHN0cmVycm9yKHJldCkpOwo+IC0gICAgfQo+ICsJcmV0ID0gc3lz
X3Vtb3VudDIoIi8iLCBNTlRfRk9SQ0UpOwo+ICsJaWYgKHJldCkgewo+ICsJCWtwcmludGYoIldh
cm5pbmc6IHVubW91bnRfcm9vdGZzOiBmYWlsZWQgdG8gdW5tb3VudCAvLCAiCj4gKwkJCSJlcnJv
ciA9ICVzXG4iLCBzdHJlcnJvcihyZXQpKTsKPiArCX0KPiAgIH0KPiAgIAo+ICAgZXh0ZXJuICJD
IiB2b2lkIGJpb19pbml0KHZvaWQpOwo+IEBAIC0yMzY1LDQ5ICsyMzY1LDQ5IEBAIGV4dGVybiAi
QyIKPiAgIHZvaWQKPiAgIHZmc19pbml0KHZvaWQpCj4gICB7Cj4gLSAgICBjb25zdCBzdHJ1Y3Qg
dmZzc3cgKmZzOwo+IC0KPiAtICAgIGJpb19pbml0KCk7Cj4gLSAgICBsb29rdXBfaW5pdCgpOwo+
IC0gICAgdm5vZGVfaW5pdCgpOwo+IC0gICAgdGFza19hbGxvYygmbWFpbl90YXNrKTsKPiAtCj4g
LSAgICAvKgo+IC0gICAgICogSW5pdGlhbGl6ZSBlYWNoIGZpbGUgc3lzdGVtLgo+IC0gICAgICov
Cj4gLSAgICBmb3IgKGZzID0gdmZzc3c7IGZzLT52c19uYW1lOyBmcysrKSB7Cj4gLSAgICAgICAg
aWYgKGZzLT52c19pbml0KSB7Cj4gLSAgICAgICAgICAgIERQUklOVEYoVkZTREJfQ09SRSwgKCJW
RlM6IGluaXRpYWxpemluZyAlc1xuIiwKPiAtICAgICAgICAgICAgICAgICAgICBmcy0+dnNfbmFt
ZSkpOwo+IC0gICAgICAgICAgICBmcy0+dnNfaW5pdCgpOwo+IC0gICAgICAgIH0KPiAtICAgIH0K
PiAtCj4gLSAgICBtb3VudF9yb290ZnMoKTsKPiAtICAgIHVucGFja19ib290ZnMoKTsKPiAtCj4g
LSAgICAvLwlpZiAob3BlbigiL2Rldi9jb25zb2xlIiwgT19SRFdSLCAwKSAhPSAwKQo+IC0gICAg
aWYgKGNvbnNvbGU6Om9wZW4oKSAhPSAwKQo+IC0gICAgICAgIGtwcmludGYoImZhaWxlZCB0byBv
cGVuIGNvbnNvbGUsIGVycm9yID0gJWRcbiIsIGVycm5vKTsKPiAtICAgIGlmIChkdXAoMCkgIT0g
MSkKPiAtICAgICAgICBrcHJpbnRmKCJmYWlsZWQgdG8gZHVwIGNvbnNvbGUgKDEpXG4iKTsKPiAt
ICAgIGlmIChkdXAoMCkgIT0gMikKPiAtICAgICAgICBrcHJpbnRmKCJmYWlsZWQgdG8gZHVwIGNv
bnNvbGUgKDIpXG4iKTsKPiAtICAgIHZmc19pbml0aWFsaXplZCA9IDE7Cj4gKwljb25zdCBzdHJ1
Y3QgdmZzc3cgKmZzOwo+ICsKPiArCWJpb19pbml0KCk7Cj4gKwlsb29rdXBfaW5pdCgpOwo+ICsJ
dm5vZGVfaW5pdCgpOwo+ICsJdGFza19hbGxvYygmbWFpbl90YXNrKTsKPiArCj4gKwkvKgo+ICsJ
ICogSW5pdGlhbGl6ZSBlYWNoIGZpbGUgc3lzdGVtLgo+ICsJICovCj4gKwlmb3IgKGZzID0gdmZz
c3c7IGZzLT52c19uYW1lOyBmcysrKSB7Cj4gKwkJaWYgKGZzLT52c19pbml0KSB7Cj4gKwkJCURQ
UklOVEYoVkZTREJfQ09SRSwgKCJWRlM6IGluaXRpYWxpemluZyAlc1xuIiwKPiArCQkJCQlmcy0+
dnNfbmFtZSkpOwo+ICsJCQlmcy0+dnNfaW5pdCgpOwo+ICsJCX0KPiArCX0KPiArCj4gKwltb3Vu
dF9yb290ZnMoKTsKPiArCXVucGFja19ib290ZnMoKTsKPiArCj4gKwkvLwlpZiAob3BlbigiL2Rl
di9jb25zb2xlIiwgT19SRFdSLCAwKSAhPSAwKQo+ICsJaWYgKGNvbnNvbGU6Om9wZW4oKSAhPSAw
KQo+ICsJCWtwcmludGYoImZhaWxlZCB0byBvcGVuIGNvbnNvbGUsIGVycm9yID0gJWRcbiIsIGVy
cm5vKTsKPiArCWlmIChkdXAoMCkgIT0gMSkKPiArCQlrcHJpbnRmKCJmYWlsZWQgdG8gZHVwIGNv
bnNvbGUgKDEpXG4iKTsKPiArCWlmIChkdXAoMCkgIT0gMikKPiArCQlrcHJpbnRmKCJmYWlsZWQg
dG8gZHVwIGNvbnNvbGUgKDIpXG4iKTsKPiArCXZmc19pbml0aWFsaXplZCA9IDE7Cj4gICB9Cj4g
ICAKPiAgIHZvaWQgdmZzX2V4aXQodm9pZCkKPiAgIHsKPiAtICAgIC8qIEZyZWUgdXAgbWFpbl90
YXNrIChzdG9yZXMgY3dkIGRhdGEpIHJlc291cmNlcyAqLwo+IC0gICAgcmVwbGFjZV9jd2QobWFp
bl90YXNrLCBudWxscHRyLCBbXSgpIHsgcmV0dXJuIDA7IH0pOwo+IC0gICAgLyogVW5tb3VudCBh
bGwgZmlsZSBzeXN0ZW1zICovCj4gLSAgICB1bm1vdW50X3Jvb3RmcygpOwo+IC0gICAgLyogRmlu
aXNoIHdpdGggdGhlIGJpbyBsYXllciAqLwo+IC0gICAgYmlvX3N5bmMoKTsKPiArCS8qIEZyZWUg
dXAgbWFpbl90YXNrIChzdG9yZXMgY3dkIGRhdGEpIHJlc291cmNlcyAqLwo+ICsJcmVwbGFjZV9j
d2QobWFpbl90YXNrLCBudWxscHRyLCBbXSgpIHsgcmV0dXJuIDA7IH0pOwo+ICsJLyogVW5tb3Vu
dCBhbGwgZmlsZSBzeXN0ZW1zICovCj4gKwl1bm1vdW50X3Jvb3RmcygpOwo+ICsJLyogRmluaXNo
IHdpdGggdGhlIGJpbyBsYXllciAqLwo+ICsJYmlvX3N5bmMoKTsKPiAgIH0KPiAgIAo+ICAgdm9p
ZCBzeXNfcGFuaWMoY29uc3QgY2hhciAqc3RyKQo+ICAgewo+IC0gICAgYWJvcnQoInBhbmljOiAl
cyIsIHN0cik7Cj4gKwlhYm9ydCgicGFuaWM6ICVzIiwgc3RyKTsKPiAgIH0KPiAgIAo+IGRpZmYg
LS1naXQgYS9saWIvdmZzY29yZS9tb3VudC5jIGIvbGliL3Zmc2NvcmUvbW91bnQuYwo+IGluZGV4
IGRhYzRkMDljLi5iNTFiMjdhNCAxMDA2NDQKPiAtLS0gYS9saWIvdmZzY29yZS9tb3VudC5jCj4g
KysrIGIvbGliL3Zmc2NvcmUvbW91bnQuYwo+IEBAIC02OSwyODcgKzY5LDI4NyBAQCBzdGF0aWMg
bXV0ZXggbW91bnRfbG9jazsKPiAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZzc3cgKgo+ICAgZnNf
Z2V0ZnMoY29uc3QgY2hhciAqbmFtZSkKPiAgIHsKPiAtICAgIGNvbnN0IHN0cnVjdCB2ZnNzdyAq
ZnM7Cj4gLQo+IC0gICAgZm9yIChmcyA9IHZmc3N3OyBmcy0+dnNfbmFtZTsgZnMrKykgewo+IC0g
ICAgICAgIGlmICghc3RybmNtcChuYW1lLCBmcy0+dnNfbmFtZSwgRlNNQVhOQU1FUykpCj4gLSAg
ICAgICAgICAgIGJyZWFrOwo+IC0gICAgfQo+IC0gICAgaWYgKCFmcy0+dnNfbmFtZSkKPiAtICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKPiAtICAgIHJldHVybiBmczsKPiArCWNvbnN0IHN0cnVjdCB2
ZnNzdyAqZnM7Cj4gKwo+ICsJZm9yIChmcyA9IHZmc3N3OyBmcy0+dnNfbmFtZTsgZnMrKykgewo+
ICsJCWlmICghc3RybmNtcChuYW1lLCBmcy0+dnNfbmFtZSwgRlNNQVhOQU1FUykpCj4gKwkJCWJy
ZWFrOwo+ICsJfQo+ICsJaWYgKCFmcy0+dnNfbmFtZSkKPiArCQlyZXR1cm4gbnVsbHB0cjsKPiAr
CXJldHVybiBmczsKPiAgIH0KPiAgIAo+ICAgY29uc3QgY2hhcioKPiAgIGZzX2dldGZzbmFtZSh2
ZnNvcHMqIG9wcykKPiAgIHsKPiAtICAgIGZvciAoYXV0byBmcyA9IHZmc3N3OyBmcy0+dnNfbmFt
ZTsgZnMrKykgewo+IC0gICAgICAgIGlmIChmcy0+dnNfb3AgPT0gb3BzKSB7Cj4gLSAgICAgICAg
ICAgIHJldHVybiBmcy0+dnNfbmFtZTsKPiAtICAgICAgICB9Cj4gLSAgICB9Cj4gLSAgICBhYm9y
dCgpOwo+ICsJZm9yIChhdXRvIGZzID0gdmZzc3c7IGZzLT52c19uYW1lOyBmcysrKSB7Cj4gKwkJ
aWYgKGZzLT52c19vcCA9PSBvcHMpIHsKPiArCQkJcmV0dXJuIGZzLT52c19uYW1lOwo+ICsJCX0K
PiArCX0KPiArCWFib3J0KCk7Cj4gICB9Cj4gICAKPiAgIGludAo+ICAgc3lzX21vdW50KGNvbnN0
IGNoYXIgKmRldiwgY29uc3QgY2hhciAqZGlyLCBjb25zdCBjaGFyICpmc25hbWUsIGludCBmbGFn
cywgY29uc3Qgdm9pZCAqZGF0YSkKPiAgIHsKPiAtICAgIGNvbnN0IHN0cnVjdCB2ZnNzdyAqZnM7
Cj4gLSAgICBzdHJ1Y3QgbW91bnQgKm1wOwo+IC0gICAgc3RydWN0IGRldmljZSAqZGV2aWNlOwo+
IC0gICAgc3RydWN0IGRlbnRyeSAqZHBfY292ZXJlZDsKPiAtICAgIHN0cnVjdCB2bm9kZSAqdnA7
Cj4gLSAgICBpbnQgZXJyb3I7Cj4gLQo+IC0gICAga3ByaW50ZigiVkZTOiBtb3VudGluZyAlcyBh
dCAlc1xuIiwgZnNuYW1lLCBkaXIpOwo+IC0KPiAtICAgIGlmICghZGlyIHx8ICpkaXIgPT0gJ1ww
JykKPiAtICAgICAgICByZXR1cm4gRU5PRU5UOwo+IC0KPiAtICAgIC8qIEZpbmQgYSBmaWxlIHN5
c3RlbS4gKi8KPiAtICAgIGlmICghKGZzID0gZnNfZ2V0ZnMoZnNuYW1lKSkpCj4gLSAgICAgICAg
cmV0dXJuIEVOT0RFVjsgIC8qIE5vIHN1Y2ggZmlsZSBzeXN0ZW0gKi8KPiAtCj4gLSAgICAvKiBP
cGVuIGRldmljZS4gbnVsbHB0ciBjYW4gYmUgc3BlY2lmaWVkIGFzIGEgZGV2aWNlLiAqLwo+IC0g
ICAgLy8gQWxsb3cgZGV2aWNlX29wZW4oKSB0byBmYWlsLCBpbiB3aGljaCBjYXNlIGRldiBpcyBp
bnRlcnByZXRlZAo+IC0gICAgLy8gYnkgdGhlIGZpbGUgc3lzdGVtIG1vdW50IHJvdXRpbmUgKGUu
ZyB6ZnMgcG9vbHMpCj4gLSAgICBkZXZpY2UgPSAwOwo+IC0gICAgaWYgKGRldiAmJiBzdHJuY21w
KGRldiwgIi9kZXYvIiwgNSkgPT0gMCkKPiAtICAgICAgICBkZXZpY2Vfb3BlbihkZXYgKyA1LCBE
T19SRFdSLCAmZGV2aWNlKTsKPiAtCj4gLSAgICAvKiBDaGVjayBpZiBkZXZpY2Ugb3IgZGlyZWN0
b3J5IGhhcyBhbHJlYWR5IGJlZW4gbW91bnRlZC4gKi8KPiAtICAgIC8vIFdlIG5lZWQgdG8gYXZv
aWQgdGhlIHNpdHVhdGlvbiB3aGVyZSBhZnRlciB3ZSBhbHJlYWR5IHZlcmlmaWVkIHRoYXQKPiAt
ICAgIC8vIHRoZSBtb3VudCBwb2ludCBpcyBmcmVlLCBidXQgYmVmb3JlIHdlIGFjdHVhbGx5IGFk
ZCBpdCB0byBtb3VudF9saXN0LAo+IC0gICAgLy8gYW5vdGhlciBjb25jdXJyZW50IG1vdW50IGFk
ZHMgaXQuIFNvIHdlIHVzZSBhIG5ldyBtdXRleCB0byBlbnN1cmUKPiAtICAgIC8vIHRoYXQgb25s
eSBvbmUgc3lzX21vdW50KCkgcnVucyBhdCBhIHRpbWUuIFdlIGNhbm5vdCByZXVzZSB0aGUgZXhp
c3RpbmcKPiAtICAgIC8vIG1vdW50X2xvY2sgZm9yIHRoaXMgcHVycG9zZTogSWYgd2UgdGFrZSBt
b3VudF9sb2NrIGFuZCB0aGVuIGRvCj4gLSAgICAvLyBsb29rdXBzLCB0aGlzIGlzIGxvY2sgb3Jk
ZXIgaW52ZXJzaW9uIGFuZCBjYW4gcmVzdWx0IGluIGRlYWRsb2NrLgo+IC0gICAgc3RhdGljIG11
dGV4IHN5c19tb3VudF9sb2NrOwo+IC0gICAgU0NPUEVfTE9DSyhzeXNfbW91bnRfbG9jayk7Cj4g
LSAgICBXSVRIX0xPQ0sobW91bnRfbG9jaykgewo+IC0gICAgICAgIGZvciAoYXV0byYmIG1wIDog
bW91bnRfbGlzdCkgewo+IC0gICAgICAgICAgICBpZiAoIXN0cmNtcChtcC0+bV9wYXRoLCBkaXIp
IHx8Cj4gLSAgICAgICAgICAgICAgICAoZGV2aWNlICYmIG1wLT5tX2RldiA9PSBkZXZpY2UpKSB7
Cj4gLSAgICAgICAgICAgICAgICBlcnJvciA9IEVCVVNZOyAgLyogQWxyZWFkeSBtb3VudGVkICov
Cj4gLSAgICAgICAgICAgICAgICBnb3RvIGVycjE7Cj4gLSAgICAgICAgICAgIH0KPiAtICAgICAg
ICB9Cj4gLSAgICB9Cj4gLSAgICAvKgo+IC0gICAgICogQ3JlYXRlIFZGUyBtb3VudCBlbnRyeS4K
PiAtICAgICAqLwo+IC0gICAgaWYgKCEobXAgPSBuZXcgbW91bnQpKSB7Cj4gLSAgICAgICAgZXJy
b3IgPSBFTk9NRU07Cj4gLSAgICAgICAgZ290byBlcnIxOwo+IC0gICAgfQo+IC0gICAgbXAtPm1f
Y291bnQgPSAwOwo+IC0gICAgbXAtPm1fb3AgPSBmcy0+dnNfb3A7Cj4gLSAgICBtcC0+bV9mbGFn
cyA9IGZsYWdzOwo+IC0gICAgbXAtPm1fZGV2ID0gZGV2aWNlOwo+IC0gICAgbXAtPm1fZGF0YSA9
IG51bGxwdHI7Cj4gLSAgICBzdHJsY3B5KG1wLT5tX3BhdGgsIGRpciwgc2l6ZW9mKG1wLT5tX3Bh
dGgpKTsKPiAtICAgIHN0cmxjcHkobXAtPm1fc3BlY2lhbCwgZGV2LCBzaXplb2YobXAtPm1fc3Bl
Y2lhbCkpOwo+IC0KPiAtICAgIC8qCj4gLSAgICAgKiBHZXQgdm5vZGUgdG8gYmUgY292ZXJlZCBp
biB0aGUgdXBwZXIgZmlsZSBzeXN0ZW0uCj4gLSAgICAgKi8KPiAtICAgIGlmICgqZGlyID09ICcv
JyAmJiAqKGRpciArIDEpID09ICdcMCcpIHsKPiAtICAgICAgICAvKiBJZ25vcmUgaWYgaXQgbW91
bnRzIHRvIGdsb2JhbCByb290IGRpcmVjdG9yeS4gKi8KPiAtICAgICAgICBkcF9jb3ZlcmVkID0g
bnVsbHB0cjsKPiAtICAgIH0gZWxzZSB7Cj4gLSAgICAgICAgaWYgKChlcnJvciA9IG5hbWVpKGRp
ciwgJmRwX2NvdmVyZWQpKSAhPSAwKSB7Cj4gLQo+IC0gICAgICAgICAgICBlcnJvciA9IEVOT0VO
VDsKPiAtICAgICAgICAgICAgZ290byBlcnIyOwo+IC0gICAgICAgIH0KPiAtICAgICAgICBpZiAo
ZHBfY292ZXJlZC0+ZF92bm9kZS0+dl90eXBlICE9IFZESVIpIHsKPiAtICAgICAgICAgICAgZXJy
b3IgPSBFTk9URElSOwo+IC0gICAgICAgICAgICBnb3RvIGVycjM7Cj4gLSAgICAgICAgfQo+IC0g
ICAgfQo+IC0gICAgbXAtPm1fY292ZXJlZCA9IGRwX2NvdmVyZWQ7Cj4gLQo+IC0gICAgLyoKPiAt
ICAgICAqIENyZWF0ZSBhIHJvb3Qgdm5vZGUgZm9yIHRoaXMgZmlsZSBzeXN0ZW0uCj4gLSAgICAg
Ki8KPiAtICAgIHZnZXQobXAsIDAsICZ2cCk7Cj4gLSAgICBpZiAodnAgPT0gbnVsbHB0cikgewo+
IC0gICAgICAgIGVycm9yID0gRU5PTUVNOwo+IC0gICAgICAgIGdvdG8gZXJyMzsKPiAtICAgIH0K
PiAtICAgIHZwLT52X3R5cGUgPSBWRElSOwo+IC0gICAgdnAtPnZfZmxhZ3MgPSBWUk9PVDsKPiAt
ICAgIHZwLT52X21vZGUgPSBTX0lGRElSIHwgU19JUlVTUiB8IFNfSVdVU1IgfCBTX0lYVVNSOwo+
IC0KPiAtICAgIG1wLT5tX3Jvb3QgPSBkZW50cnlfYWxsb2MobnVsbHB0ciwgdnAsICIvIik7Cj4g
LSAgICBpZiAoIW1wLT5tX3Jvb3QpIHsKPiAtICAgICAgICB2cHV0KHZwKTsKPiAtICAgICAgICBn
b3RvIGVycjM7Cj4gLSAgICB9Cj4gLSAgICB2cHV0KHZwKTsKPiAtCj4gLSAgICAvKgo+IC0gICAg
ICogQ2FsbCBhIGZpbGUgc3lzdGVtIHNwZWNpZmljIHJvdXRpbmUuCj4gLSAgICAgKi8KPiAtICAg
IGlmICgoZXJyb3IgPSBWRlNfTU9VTlQobXAsIGRldiwgZmxhZ3MsIGRhdGEpKSAhPSAwKQo+IC0g
ICAgICAgIGdvdG8gZXJyNDsKPiAtCj4gLSAgICBpZiAobXAtPm1fZmxhZ3MgJiBNTlRfUkRPTkxZ
KQo+IC0gICAgICAgIHZwLT52X21vZGUgJj1+U19JV1VTUjsKPiAtCj4gLSAgICAvKgo+IC0gICAg
ICogSW5zZXJ0IHRvIG1vdW50IGxpc3QKPiAtICAgICAqLwo+IC0gICAgV0lUSF9MT0NLKG1vdW50
X2xvY2spIHsKPiAtICAgICAgICBtb3VudF9saXN0LnB1c2hfYmFjayhtcCk7Cj4gLSAgICB9Cj4g
LQo+IC0gICAgcmV0dXJuIDA7ICAgLyogc3VjY2VzcyAqLwo+ICsJY29uc3Qgc3RydWN0IHZmc3N3
ICpmczsKPiArCXN0cnVjdCBtb3VudCAqbXA7Cj4gKwlzdHJ1Y3QgZGV2aWNlICpkZXZpY2U7Cj4g
KwlzdHJ1Y3QgZGVudHJ5ICpkcF9jb3ZlcmVkOwo+ICsJc3RydWN0IHZub2RlICp2cDsKPiArCWlu
dCBlcnJvcjsKPiArCj4gKwlrcHJpbnRmKCJWRlM6IG1vdW50aW5nICVzIGF0ICVzXG4iLCBmc25h
bWUsIGRpcik7Cj4gKwo+ICsJaWYgKCFkaXIgfHwgKmRpciA9PSAnXDAnKQo+ICsJCXJldHVybiBF
Tk9FTlQ7Cj4gKwo+ICsJLyogRmluZCBhIGZpbGUgc3lzdGVtLiAqLwo+ICsJaWYgKCEoZnMgPSBm
c19nZXRmcyhmc25hbWUpKSkKPiArCQlyZXR1cm4gRU5PREVWOyAgLyogTm8gc3VjaCBmaWxlIHN5
c3RlbSAqLwo+ICsKPiArCS8qIE9wZW4gZGV2aWNlLiBudWxscHRyIGNhbiBiZSBzcGVjaWZpZWQg
YXMgYSBkZXZpY2UuICovCj4gKwkvLyBBbGxvdyBkZXZpY2Vfb3BlbigpIHRvIGZhaWwsIGluIHdo
aWNoIGNhc2UgZGV2IGlzIGludGVycHJldGVkCj4gKwkvLyBieSB0aGUgZmlsZSBzeXN0ZW0gbW91
bnQgcm91dGluZSAoZS5nIHpmcyBwb29scykKPiArCWRldmljZSA9IDA7Cj4gKwlpZiAoZGV2ICYm
IHN0cm5jbXAoZGV2LCAiL2Rldi8iLCA1KSA9PSAwKQo+ICsJCWRldmljZV9vcGVuKGRldiArIDUs
IERPX1JEV1IsICZkZXZpY2UpOwo+ICsKPiArCS8qIENoZWNrIGlmIGRldmljZSBvciBkaXJlY3Rv
cnkgaGFzIGFscmVhZHkgYmVlbiBtb3VudGVkLiAqLwo+ICsJLy8gV2UgbmVlZCB0byBhdm9pZCB0
aGUgc2l0dWF0aW9uIHdoZXJlIGFmdGVyIHdlIGFscmVhZHkgdmVyaWZpZWQgdGhhdAo+ICsJLy8g
dGhlIG1vdW50IHBvaW50IGlzIGZyZWUsIGJ1dCBiZWZvcmUgd2UgYWN0dWFsbHkgYWRkIGl0IHRv
IG1vdW50X2xpc3QsCj4gKwkvLyBhbm90aGVyIGNvbmN1cnJlbnQgbW91bnQgYWRkcyBpdC4gU28g
d2UgdXNlIGEgbmV3IG11dGV4IHRvIGVuc3VyZQo+ICsJLy8gdGhhdCBvbmx5IG9uZSBzeXNfbW91
bnQoKSBydW5zIGF0IGEgdGltZS4gV2UgY2Fubm90IHJldXNlIHRoZSBleGlzdGluZwo+ICsJLy8g
bW91bnRfbG9jayBmb3IgdGhpcyBwdXJwb3NlOiBJZiB3ZSB0YWtlIG1vdW50X2xvY2sgYW5kIHRo
ZW4gZG8KPiArCS8vIGxvb2t1cHMsIHRoaXMgaXMgbG9jayBvcmRlciBpbnZlcnNpb24gYW5kIGNh
biByZXN1bHQgaW4gZGVhZGxvY2suCj4gKwlzdGF0aWMgbXV0ZXggc3lzX21vdW50X2xvY2s7Cj4g
KwlTQ09QRV9MT0NLKHN5c19tb3VudF9sb2NrKTsKPiArCVdJVEhfTE9DSyhtb3VudF9sb2NrKSB7
Cj4gKwkJZm9yIChhdXRvJiYgbXAgOiBtb3VudF9saXN0KSB7Cj4gKwkJCWlmICghc3RyY21wKG1w
LT5tX3BhdGgsIGRpcikgfHwKPiArCQkJCShkZXZpY2UgJiYgbXAtPm1fZGV2ID09IGRldmljZSkp
IHsKPiArCQkJCWVycm9yID0gRUJVU1k7ICAvKiBBbHJlYWR5IG1vdW50ZWQgKi8KPiArCQkJCWdv
dG8gZXJyMTsKPiArCQkJfQo+ICsJCX0KPiArCX0KPiArCS8qCj4gKwkgKiBDcmVhdGUgVkZTIG1v
dW50IGVudHJ5Lgo+ICsJICovCj4gKwlpZiAoIShtcCA9IG5ldyBtb3VudCkpIHsKPiArCQllcnJv
ciA9IEVOT01FTTsKPiArCQlnb3RvIGVycjE7Cj4gKwl9Cj4gKwltcC0+bV9jb3VudCA9IDA7Cj4g
KwltcC0+bV9vcCA9IGZzLT52c19vcDsKPiArCW1wLT5tX2ZsYWdzID0gZmxhZ3M7Cj4gKwltcC0+
bV9kZXYgPSBkZXZpY2U7Cj4gKwltcC0+bV9kYXRhID0gbnVsbHB0cjsKPiArCXN0cmxjcHkobXAt
Pm1fcGF0aCwgZGlyLCBzaXplb2YobXAtPm1fcGF0aCkpOwo+ICsJc3RybGNweShtcC0+bV9zcGVj
aWFsLCBkZXYsIHNpemVvZihtcC0+bV9zcGVjaWFsKSk7Cj4gKwo+ICsJLyoKPiArCSAqIEdldCB2
bm9kZSB0byBiZSBjb3ZlcmVkIGluIHRoZSB1cHBlciBmaWxlIHN5c3RlbS4KPiArCSAqLwo+ICsJ
aWYgKCpkaXIgPT0gJy8nICYmICooZGlyICsgMSkgPT0gJ1wwJykgewo+ICsJCS8qIElnbm9yZSBp
ZiBpdCBtb3VudHMgdG8gZ2xvYmFsIHJvb3QgZGlyZWN0b3J5LiAqLwo+ICsJCWRwX2NvdmVyZWQg
PSBudWxscHRyOwo+ICsJfSBlbHNlIHsKPiArCQlpZiAoKGVycm9yID0gbmFtZWkoZGlyLCAmZHBf
Y292ZXJlZCkpICE9IDApIHsKPiArCj4gKwkJCWVycm9yID0gRU5PRU5UOwo+ICsJCQlnb3RvIGVy
cjI7Cj4gKwkJfQo+ICsJCWlmIChkcF9jb3ZlcmVkLT5kX3Zub2RlLT52X3R5cGUgIT0gVkRJUikg
ewo+ICsJCQllcnJvciA9IEVOT1RESVI7Cj4gKwkJCWdvdG8gZXJyMzsKPiArCQl9Cj4gKwl9Cj4g
KwltcC0+bV9jb3ZlcmVkID0gZHBfY292ZXJlZDsKPiArCj4gKwkvKgo+ICsJICogQ3JlYXRlIGEg
cm9vdCB2bm9kZSBmb3IgdGhpcyBmaWxlIHN5c3RlbS4KPiArCSAqLwo+ICsJdmdldChtcCwgMCwg
JnZwKTsKPiArCWlmICh2cCA9PSBudWxscHRyKSB7Cj4gKwkJZXJyb3IgPSBFTk9NRU07Cj4gKwkJ
Z290byBlcnIzOwo+ICsJfQo+ICsJdnAtPnZfdHlwZSA9IFZESVI7Cj4gKwl2cC0+dl9mbGFncyA9
IFZST09UOwo+ICsJdnAtPnZfbW9kZSA9IFNfSUZESVIgfCBTX0lSVVNSIHwgU19JV1VTUiB8IFNf
SVhVU1I7Cj4gKwo+ICsJbXAtPm1fcm9vdCA9IGRlbnRyeV9hbGxvYyhudWxscHRyLCB2cCwgIi8i
KTsKPiArCWlmICghbXAtPm1fcm9vdCkgewo+ICsJCXZwdXQodnApOwo+ICsJCWdvdG8gZXJyMzsK
PiArCX0KPiArCXZwdXQodnApOwo+ICsKPiArCS8qCj4gKwkgKiBDYWxsIGEgZmlsZSBzeXN0ZW0g
c3BlY2lmaWMgcm91dGluZS4KPiArCSAqLwo+ICsJaWYgKChlcnJvciA9IFZGU19NT1VOVChtcCwg
ZGV2LCBmbGFncywgZGF0YSkpICE9IDApCj4gKwkJZ290byBlcnI0Owo+ICsKPiArCWlmIChtcC0+
bV9mbGFncyAmIE1OVF9SRE9OTFkpCj4gKwkJdnAtPnZfbW9kZSAmPX5TX0lXVVNSOwo+ICsKPiAr
CS8qCj4gKwkgKiBJbnNlcnQgdG8gbW91bnQgbGlzdAo+ICsJICovCj4gKwlXSVRIX0xPQ0sobW91
bnRfbG9jaykgewo+ICsJCW1vdW50X2xpc3QucHVzaF9iYWNrKG1wKTsKPiArCX0KPiArCj4gKwly
ZXR1cm4gMDsgICAvKiBzdWNjZXNzICovCj4gICAgZXJyNDoKPiAtICAgIGRyZWxlKG1wLT5tX3Jv
b3QpOwo+ICsJZHJlbGUobXAtPm1fcm9vdCk7Cj4gICAgZXJyMzoKPiAtICAgIGlmIChkcF9jb3Zl
cmVkKQo+IC0gICAgICAgIGRyZWxlKGRwX2NvdmVyZWQpOwo+ICsJaWYgKGRwX2NvdmVyZWQpCj4g
KwkJZHJlbGUoZHBfY292ZXJlZCk7Cj4gICAgZXJyMjoKPiAtICAgIGRlbGV0ZSBtcDsKPiArCWRl
bGV0ZSBtcDsKPiAgICBlcnIxOgo+IC0gICAgaWYgKGRldmljZSkKPiAtICAgICAgICBkZXZpY2Vf
Y2xvc2UoZGV2aWNlKTsKPiArCWlmIChkZXZpY2UpCj4gKwkJZGV2aWNlX2Nsb3NlKGRldmljZSk7
Cj4gICAKPiAtICAgIHJldHVybiBlcnJvcjsKPiArCXJldHVybiBlcnJvcjsKPiAgIH0KPiAgIAo+
ICAgdm9pZAo+ICAgcmVsZWFzZV9tcF9kZW50cmllcyhzdHJ1Y3QgbW91bnQgKm1wKQo+ICAgewo+
IC0gICAgLyogRGVjcmVtZW50IHJlZmVyZWNlIGNvdW50IG9mIHJvb3Qgdm5vZGUgKi8KPiAtICAg
IGlmIChtcC0+bV9jb3ZlcmVkKSB7Cj4gLSAgICAgICAgZHJlbGUobXAtPm1fY292ZXJlZCk7Cj4g
LSAgICB9Cj4gKwkvKiBEZWNyZW1lbnQgcmVmZXJlY2UgY291bnQgb2Ygcm9vdCB2bm9kZSAqLwo+
ICsJaWYgKG1wLT5tX2NvdmVyZWQpIHsKPiArCQlkcmVsZShtcC0+bV9jb3ZlcmVkKTsKPiArCX0K
PiAgIAo+IC0gICAgLyogUmVsZWFzZSByb290IGRlbnRyeSAqLwo+IC0gICAgZHJlbGUobXAtPm1f
cm9vdCk7Cj4gKwkvKiBSZWxlYXNlIHJvb3QgZGVudHJ5ICovCj4gKwlkcmVsZShtcC0+bV9yb290
KTsKPiAgIH0KPiAgIAo+ICAgaW50Cj4gICBzeXNfdW1vdW50Mihjb25zdCBjaGFyICpwYXRoLCBp
bnQgZmxhZ3MpCj4gICB7Cj4gLSAgICBzdHJ1Y3QgbW91bnQgKm1wOwo+IC0gICAgaW50IGVycm9y
LCBwYXRobGVuOwo+ICsJc3RydWN0IG1vdW50ICptcDsKPiArCWludCBlcnJvciwgcGF0aGxlbjsK
PiAgIAo+IC0gICAga3ByaW50ZigiVkZTOiB1bm1vdW50aW5nICVzXG4iLCBwYXRoKTsKPiArCWtw
cmludGYoIlZGUzogdW5tb3VudGluZyAlc1xuIiwgcGF0aCk7Cj4gICAKPiAtICAgIFNDT1BFX0xP
Q0sobW91bnRfbG9jayk7Cj4gKwlTQ09QRV9MT0NLKG1vdW50X2xvY2spOwo+ICAgCj4gLSAgICBw
YXRobGVuID0gc3RybGVuKHBhdGgpOwo+IC0gICAgaWYgKHBhdGhsZW4gPj0gTUFYUEFUSExFTikg
ewo+IC0gICAgICAgIGVycm9yID0gRU5BTUVUT09MT05HOwo+IC0gICAgICAgIGdvdG8gb3V0Owo+
IC0gICAgfQo+ICsJcGF0aGxlbiA9IHN0cmxlbihwYXRoKTsKPiArCWlmIChwYXRobGVuID49IE1B
WFBBVEhMRU4pIHsKPiArCQllcnJvciA9IEVOQU1FVE9PTE9ORzsKPiArCQlnb3RvIG91dDsKPiAr
CX0KPiAgIAo+IC0gICAgLyogR2V0IG1vdW50IGVudHJ5ICovCj4gLSAgICBmb3IgKGF1dG8mJiB0
bXAgOiBtb3VudF9saXN0KSB7Cj4gLSAgICAgICAgaWYgKCFzdHJjbXAocGF0aCwgdG1wLT5tX3Bh
dGgpKSB7Cj4gLSAgICAgICAgICAgIG1wID0gdG1wOwo+IC0gICAgICAgICAgICBnb3RvIGZvdW5k
Owo+IC0gICAgICAgIH0KPiAtICAgIH0KPiArCS8qIEdldCBtb3VudCBlbnRyeSAqLwo+ICsJZm9y
IChhdXRvJiYgdG1wIDogbW91bnRfbGlzdCkgewo+ICsJCWlmICghc3RyY21wKHBhdGgsIHRtcC0+
bV9wYXRoKSkgewo+ICsJCQltcCA9IHRtcDsKPiArCQkJZ290byBmb3VuZDsKPiArCQl9Cj4gKwl9
Cj4gICAKPiAtICAgIGVycm9yID0gRUlOVkFMOwo+IC0gICAgZ290byBvdXQ7Cj4gKwllcnJvciA9
IEVJTlZBTDsKPiArCWdvdG8gb3V0Owo+ICAgCj4gICBmb3VuZDoKPiAtICAgIC8qCj4gLSAgICAg
KiBSb290IGZzIGNhbiBub3QgYmUgdW5tb3VudGVkLgo+IC0gICAgICovCj4gLSAgICBpZiAobXAt
Pm1fY292ZXJlZCA9PSBudWxscHRyICYmICEoZmxhZ3MgJiBNTlRfRk9SQ0UpKSB7Cj4gLSAgICAg
ICAgZXJyb3IgPSBFSU5WQUw7Cj4gLSAgICAgICAgZ290byBvdXQ7Cj4gLSAgICB9Cj4gLQo+IC0g
ICAgaWYgKChlcnJvciA9IFZGU19VTk1PVU5UKG1wLCBmbGFncykpICE9IDApCj4gLSAgICAgICAg
Z290byBvdXQ7Cj4gLSAgICBtb3VudF9saXN0LnJlbW92ZShtcCk7Cj4gKwkvKgo+ICsJICogUm9v
dCBmcyBjYW4gbm90IGJlIHVubW91bnRlZC4KPiArCSAqLwo+ICsJaWYgKG1wLT5tX2NvdmVyZWQg
PT0gbnVsbHB0ciAmJiAhKGZsYWdzICYgTU5UX0ZPUkNFKSkgewo+ICsJCWVycm9yID0gRUlOVkFM
Owo+ICsJCWdvdG8gb3V0Owo+ICsJfQo+ICsKPiArCWlmICgoZXJyb3IgPSBWRlNfVU5NT1VOVCht
cCwgZmxhZ3MpKSAhPSAwKQo+ICsJCWdvdG8gb3V0Owo+ICsJbW91bnRfbGlzdC5yZW1vdmUobXAp
Owo+ICAgCj4gICAjaWZkZWYgSEFWRV9CVUZGRVJTCj4gLSAgICAvKiBGbHVzaCBhbGwgYnVmZmVy
cyAqLwo+IC0gICAgYmludmFsKG1wLT5tX2Rldik7Cj4gKwkvKiBGbHVzaCBhbGwgYnVmZmVycyAq
Lwo+ICsJYmludmFsKG1wLT5tX2Rldik7Cj4gICAjZW5kaWYKPiAgIAo+IC0gICAgaWYgKG1wLT5t
X2RldikKPiAtICAgICAgICBkZXZpY2VfY2xvc2UobXAtPm1fZGV2KTsKPiAtICAgIGRlbGV0ZSBt
cDsKPiArCWlmIChtcC0+bV9kZXYpCj4gKwkJZGV2aWNlX2Nsb3NlKG1wLT5tX2Rldik7Cj4gKwlk
ZWxldGUgbXA7Cj4gICAgb3V0Ogo+IC0gICAgcmV0dXJuIGVycm9yOwo+ICsJcmV0dXJuIGVycm9y
Owo+ICAgfQo+ICAgCj4gICBpbnQKPiAgIHN5c191bW91bnQoY29uc3QgY2hhciAqcGF0aCkKPiAg
IHsKPiAtICAgIHJldHVybiBzeXNfdW1vdW50MihwYXRoLCAwKTsKPiArCXJldHVybiBzeXNfdW1v
dW50MihwYXRoLCAwKTsKPiAgIH0KPiAgIAo+ICAgaW50Cj4gICBzeXNfcGl2b3Rfcm9vdChjb25z
dCBjaGFyICpuZXdfcm9vdCwgY29uc3QgY2hhciAqcHV0X29sZCkKPiAgIHsKPiAtICAgIHN0cnVj
dCBtb3VudCAqbmV3bXAgPSBudWxscHRyLCAqb2xkbXAgPSBudWxscHRyOwo+IC0gICAgaW50IGVy
cm9yOwo+IC0KPiAtICAgIFdJVEhfTE9DSyhtb3VudF9sb2NrKSB7Cj4gLSAgICAgICAgZm9yIChh
dXRvJiYgbXAgOiBtb3VudF9saXN0KSB7Cj4gLSAgICAgICAgICAgIGlmICghc3RyY21wKG1wLT5t
X3BhdGgsIG5ld19yb290KSkgewo+IC0gICAgICAgICAgICAgICAgbmV3bXAgPSBtcDsKPiAtICAg
ICAgICAgICAgfQo+IC0gICAgICAgICAgICBpZiAoIXN0cmNtcChtcC0+bV9wYXRoLCBwdXRfb2xk
KSkgewo+IC0gICAgICAgICAgICAgICAgb2xkbXAgPSBtcDsKPiAtICAgICAgICAgICAgfQo+IC0g
ICAgICAgIH0KPiAtICAgICAgICBpZiAoIW5ld21wIHx8ICFvbGRtcCB8fCBuZXdtcCA9PSBvbGRt
cCkgewo+IC0gICAgICAgICAgICByZXR1cm4gRUlOVkFMOwo+IC0gICAgICAgIH0KPiAtICAgICAg
ICBmb3IgKGF1dG8mJiBtcCA6IG1vdW50X2xpc3QpIHsKPiAtICAgICAgICAgICAgaWYgKG1wID09
IG5ld21wIHx8IG1wID09IG9sZG1wKSB7Cj4gLSAgICAgICAgICAgICAgICBjb250aW51ZTsKPiAt
ICAgICAgICAgICAgfQo+IC0gICAgICAgICAgICBpZiAoIXN0cm5jbXAobXAtPm1fcGF0aCwgcHV0
X29sZCwgc3RybGVuKHB1dF9vbGQpKSkgewo+IC0gICAgICAgICAgICAgICAgcmV0dXJuIEVCVVNZ
Owo+IC0gICAgICAgICAgICB9Cj4gLSAgICAgICAgfQo+IC0gICAgICAgIGlmICgoZXJyb3IgPSBW
RlNfVU5NT1VOVChvbGRtcCwgMCkpICE9IDApIHsKPiAtICAgICAgICAgICAgcmV0dXJuIGVycm9y
Owo+IC0gICAgICAgIH0KPiAtICAgICAgICBtb3VudF9saXN0LnJlbW92ZShvbGRtcCk7Cj4gLQo+
IC0gICAgICAgIG5ld21wLT5tX3Jvb3QtPmRfdm5vZGUtPnZfbW91bnQgPSBuZXdtcDsKPiAtCj4g
LSAgICAgICAgaWYgKG5ld21wLT5tX2NvdmVyZWQpIHsKPiAtICAgICAgICAgICAgZHJlbGUobmV3
bXAtPm1fY292ZXJlZCk7Cj4gLSAgICAgICAgfQo+IC0gICAgICAgIG5ld21wLT5tX2NvdmVyZWQg
PSBudWxscHRyOwo+IC0KPiAtICAgICAgICBpZiAobmV3bXAtPm1fcm9vdC0+ZF9wYXJlbnQpIHsK
PiAtICAgICAgICAgICAgZHJlbGUobmV3bXAtPm1fcm9vdC0+ZF9wYXJlbnQpOwo+IC0gICAgICAg
IH0KPiAtICAgICAgICBuZXdtcC0+bV9yb290LT5kX3BhcmVudCA9IG51bGxwdHI7Cj4gLQo+IC0g
ICAgICAgIHN0cmxjcHkobmV3bXAtPm1fcGF0aCwgIi8iLCBzaXplb2YobmV3bXAtPm1fcGF0aCkp
Owo+IC0gICAgfQo+IC0gICAgcmV0dXJuIDA7Cj4gKwlzdHJ1Y3QgbW91bnQgKm5ld21wID0gbnVs
bHB0ciwgKm9sZG1wID0gbnVsbHB0cjsKPiArCWludCBlcnJvcjsKPiArCj4gKwlXSVRIX0xPQ0so
bW91bnRfbG9jaykgewo+ICsJCWZvciAoYXV0byYmIG1wIDogbW91bnRfbGlzdCkgewo+ICsJCQlp
ZiAoIXN0cmNtcChtcC0+bV9wYXRoLCBuZXdfcm9vdCkpIHsKPiArCQkJCW5ld21wID0gbXA7Cj4g
KwkJCX0KPiArCQkJaWYgKCFzdHJjbXAobXAtPm1fcGF0aCwgcHV0X29sZCkpIHsKPiArCQkJCW9s
ZG1wID0gbXA7Cj4gKwkJCX0KPiArCQl9Cj4gKwkJaWYgKCFuZXdtcCB8fCAhb2xkbXAgfHwgbmV3
bXAgPT0gb2xkbXApIHsKPiArCQkJcmV0dXJuIEVJTlZBTDsKPiArCQl9Cj4gKwkJZm9yIChhdXRv
JiYgbXAgOiBtb3VudF9saXN0KSB7Cj4gKwkJCWlmIChtcCA9PSBuZXdtcCB8fCBtcCA9PSBvbGRt
cCkgewo+ICsJCQkJY29udGludWU7Cj4gKwkJCX0KPiArCQkJaWYgKCFzdHJuY21wKG1wLT5tX3Bh
dGgsIHB1dF9vbGQsIHN0cmxlbihwdXRfb2xkKSkpIHsKPiArCQkJCXJldHVybiBFQlVTWTsKPiAr
CQkJfQo+ICsJCX0KPiArCQlpZiAoKGVycm9yID0gVkZTX1VOTU9VTlQob2xkbXAsIDApKSAhPSAw
KSB7Cj4gKwkJCXJldHVybiBlcnJvcjsKPiArCQl9Cj4gKwkJbW91bnRfbGlzdC5yZW1vdmUob2xk
bXApOwo+ICsKPiArCQluZXdtcC0+bV9yb290LT5kX3Zub2RlLT52X21vdW50ID0gbmV3bXA7Cj4g
Kwo+ICsJCWlmIChuZXdtcC0+bV9jb3ZlcmVkKSB7Cj4gKwkJCWRyZWxlKG5ld21wLT5tX2NvdmVy
ZWQpOwo+ICsJCX0KPiArCQluZXdtcC0+bV9jb3ZlcmVkID0gbnVsbHB0cjsKPiArCj4gKwkJaWYg
KG5ld21wLT5tX3Jvb3QtPmRfcGFyZW50KSB7Cj4gKwkJCWRyZWxlKG5ld21wLT5tX3Jvb3QtPmRf
cGFyZW50KTsKPiArCQl9Cj4gKwkJbmV3bXAtPm1fcm9vdC0+ZF9wYXJlbnQgPSBudWxscHRyOwo+
ICsKPiArCQlzdHJsY3B5KG5ld21wLT5tX3BhdGgsICIvIiwgc2l6ZW9mKG5ld21wLT5tX3BhdGgp
KTsKPiArCX0KPiArCXJldHVybiAwOwo+ICAgfQo+ICAgCj4gICBpbnQKPiAgIHN5c19zeW5jKHZv
aWQpCj4gICB7Cj4gLSAgICAvKiBDYWxsIGVhY2ggbW91bnRlZCBmaWxlIHN5c3RlbS4gKi8KPiAt
ICAgIFdJVEhfTE9DSyhtb3VudF9sb2NrKSB7Cj4gLSAgICAgICAgZm9yIChhdXRvJiYgbXAgOiBt
b3VudF9saXN0KSB7Cj4gLSAgICAgICAgICAgIFZGU19TWU5DKG1wKTsKPiAtICAgICAgICB9Cj4g
LSAgICB9Cj4gKwkvKiBDYWxsIGVhY2ggbW91bnRlZCBmaWxlIHN5c3RlbS4gKi8KPiArCVdJVEhf
TE9DSyhtb3VudF9sb2NrKSB7Cj4gKwkJZm9yIChhdXRvJiYgbXAgOiBtb3VudF9saXN0KSB7Cj4g
KwkJCVZGU19TWU5DKG1wKTsKPiArCQl9Cj4gKwl9Cj4gICAjaWZkZWYgSEFWRV9CVUZGRVJTCj4g
LSAgICBiaW9fc3luYygpOwo+ICsJYmlvX3N5bmMoKTsKPiAgICNlbmRpZgo+IC0gICAgcmV0dXJu
IDA7Cj4gKwlyZXR1cm4gMDsKPiAgIH0KPiAgIAo+ICAgLyoKPiBAQCAtMzYwLDI1ICszNjAsMjUg
QEAgc3lzX3N5bmModm9pZCkKPiAgIHN0YXRpYyBzaXplX3QKPiAgIGNvdW50X21hdGNoKGNvbnN0
IGNoYXIgKnBhdGgsIGNoYXIgKm1vdW50X3Jvb3QpCj4gICB7Cj4gLSAgICBzaXplX3QgbGVuID0g
MDsKPiArCXNpemVfdCBsZW4gPSAwOwo+ICAgCj4gLSAgICB3aGlsZSAoKnBhdGggJiYgKm1vdW50
X3Jvb3QpIHsKPiAtICAgICAgICBpZiAoKnBhdGggIT0gKm1vdW50X3Jvb3QpCj4gLSAgICAgICAg
ICAgIGJyZWFrOwo+ICsJd2hpbGUgKCpwYXRoICYmICptb3VudF9yb290KSB7Cj4gKwkJaWYgKCpw
YXRoICE9ICptb3VudF9yb290KQo+ICsJCQlicmVhazsKPiAgIAo+IC0gICAgICAgIHBhdGgrKzsK
PiAtICAgICAgICBtb3VudF9yb290Kys7Cj4gLSAgICAgICAgbGVuKys7Cj4gLSAgICB9Cj4gLSAg
ICBpZiAoKm1vdW50X3Jvb3QgIT0gJ1wwJykKPiAtICAgICAgICByZXR1cm4gMDsKPiArCQlwYXRo
Kys7Cj4gKwkJbW91bnRfcm9vdCsrOwo+ICsJCWxlbisrOwo+ICsJfQo+ICsJaWYgKCptb3VudF9y
b290ICE9ICdcMCcpCj4gKwkJcmV0dXJuIDA7Cj4gICAKPiAtICAgIGlmIChsZW4gPT0gMSAmJiAq
KHBhdGggLSAxKSA9PSAnLycpCj4gLSAgICAgICAgcmV0dXJuIDE7Cj4gKwlpZiAobGVuID09IDEg
JiYgKihwYXRoIC0gMSkgPT0gJy8nKQo+ICsJCXJldHVybiAxOwo+ICAgCj4gLSAgICBpZiAoKnBh
dGggPT0gJ1wwJyB8fCAqcGF0aCA9PSAnLycpCj4gLSAgICAgICAgcmV0dXJuIGxlbjsKPiAtICAg
IHJldHVybiAwOwo+ICsJaWYgKCpwYXRoID09ICdcMCcgfHwgKnBhdGggPT0gJy8nKQo+ICsJCXJl
dHVybiBsZW47Cj4gKwlyZXR1cm4gMDsKPiAgIH0KPiAgIAo+ICAgLyoKPiBAQCAtMzkwLDI4ICsz
OTAsMjggQEAgY291bnRfbWF0Y2goY29uc3QgY2hhciAqcGF0aCwgY2hhciAqbW91bnRfcm9vdCkK
PiAgIGludAo+ICAgdmZzX2ZpbmRyb290KGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBtb3VudCAq
Km1wLCBjaGFyICoqcm9vdCkKPiAgIHsKPiAtICAgIHN0cnVjdCBtb3VudCAqbSA9IG51bGxwdHI7
Cj4gLSAgICBzaXplX3QgbGVuLCBtYXhfbGVuID0gMDsKPiAtCj4gLSAgICBpZiAoIXBhdGgpCj4g
LSAgICAgICAgcmV0dXJuIC0xOwo+IC0KPiAtICAgIC8qIEZpbmQgbW91bnQgcG9pbnQgZnJvbSBu
ZWFyZXN0IHBhdGggKi8KPiAtICAgIFNDT1BFX0xPQ0sobW91bnRfbG9jayk7Cj4gLSAgICBmb3Ig
KGF1dG8mJiB0bXAgOiBtb3VudF9saXN0KSB7Cj4gLSAgICAgICAgbGVuID0gY291bnRfbWF0Y2go
cGF0aCwgdG1wLT5tX3BhdGgpOwo+IC0gICAgICAgIGlmIChsZW4gPiBtYXhfbGVuKSB7Cj4gLSAg
ICAgICAgICAgIG1heF9sZW4gPSBsZW47Cj4gLSAgICAgICAgICAgIG0gPSB0bXA7Cj4gLSAgICAg
ICAgfQo+IC0gICAgfQo+IC0gICAgaWYgKG0gPT0gbnVsbHB0cikKPiAtICAgICAgICByZXR1cm4g
LTE7Cj4gLSAgICAqcm9vdCA9IChjaGFyICopKHBhdGggKyBtYXhfbGVuKTsKPiAtICAgIGlmICgq
KnJvb3QgPT0gJy8nKQo+IC0gICAgICAgICgqcm9vdCkrKzsKPiAtICAgICptcCA9IG07Cj4gLSAg
ICByZXR1cm4gMDsKPiArCXN0cnVjdCBtb3VudCAqbSA9IG51bGxwdHI7Cj4gKwlzaXplX3QgbGVu
LCBtYXhfbGVuID0gMDsKPiArCj4gKwlpZiAoIXBhdGgpCj4gKwkJcmV0dXJuIC0xOwo+ICsKPiAr
CS8qIEZpbmQgbW91bnQgcG9pbnQgZnJvbSBuZWFyZXN0IHBhdGggKi8KPiArCVNDT1BFX0xPQ0so
bW91bnRfbG9jayk7Cj4gKwlmb3IgKGF1dG8mJiB0bXAgOiBtb3VudF9saXN0KSB7Cj4gKwkJbGVu
ID0gY291bnRfbWF0Y2gocGF0aCwgdG1wLT5tX3BhdGgpOwo+ICsJCWlmIChsZW4gPiBtYXhfbGVu
KSB7Cj4gKwkJCW1heF9sZW4gPSBsZW47Cj4gKwkJCW0gPSB0bXA7Cj4gKwkJfQo+ICsJfQo+ICsJ
aWYgKG0gPT0gbnVsbHB0cikKPiArCQlyZXR1cm4gLTE7Cj4gKwkqcm9vdCA9IChjaGFyICopKHBh
dGggKyBtYXhfbGVuKTsKPiArCWlmICgqKnJvb3QgPT0gJy8nKQo+ICsJCSgqcm9vdCkrKzsKPiAr
CSptcCA9IG07Cj4gKwlyZXR1cm4gMDsKPiAgIH0KPiAgIAo+ICAgLyoKPiBAQCAtNDIwLDggKzQy
MCw4IEBAIHZmc19maW5kcm9vdChjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3QgbW91bnQgKiptcCwg
Y2hhciAqKnJvb3QpCj4gICB2b2lkCj4gICB2ZnNfYnVzeShzdHJ1Y3QgbW91bnQgKm1wKQo+ICAg
ewo+IC0gICAgU0NPUEVfTE9DSyhtb3VudF9sb2NrKTsKPiAtICAgIG1wLT5tX2NvdW50Kys7Cj4g
KwlTQ09QRV9MT0NLKG1vdW50X2xvY2spOwo+ICsJbXAtPm1fY291bnQrKzsKPiAgIH0KPiAgIAo+
ICAgCj4gQEAgLTQzMSw0NSArNDMxLDQ1IEBAIHZmc19idXN5KHN0cnVjdCBtb3VudCAqbXApCj4g
ICB2b2lkCj4gICB2ZnNfdW5idXN5KHN0cnVjdCBtb3VudCAqbXApCj4gICB7Cj4gLSAgICBTQ09Q
RV9MT0NLKG1vdW50X2xvY2spOwo+IC0gICAgbXAtPm1fY291bnQtLTsKPiArCVNDT1BFX0xPQ0so
bW91bnRfbG9jayk7Cj4gKwltcC0+bV9jb3VudC0tOwo+ICAgfQo+ICAgCj4gICBpbnQKPiAgIHZm
c19udWxsb3Aodm9pZCkKPiAgIHsKPiAtICAgIHJldHVybiAwOwo+ICsJcmV0dXJuIDA7Cj4gICB9
Cj4gICAKPiAgIGludAo+ICAgdmZzX2VpbnZhbCh2b2lkKQo+ICAgewo+IC0gICAgcmV0dXJuIEVJ
TlZBTDsKPiArCXJldHVybiBFSU5WQUw7Cj4gICB9Cj4gICAKPiAgIG5hbWVzcGFjZSBvc3Ygewo+
ICAgCj4gICBtb3VudF9kZXNjIHRvX21vdW50X2Rlc2MobW91bnQqIG0pCj4gICB7Cj4gLSAgICBt
b3VudF9kZXNjIHJldDsKPiAtICAgIHJldC5zcGVjaWFsID0gbS0+bV9zcGVjaWFsOwo+IC0gICAg
cmV0LnBhdGggPSBtLT5tX3BhdGg7Cj4gLSAgICByZXQudHlwZSA9IGZzX2dldGZzbmFtZShtLT5t
X29wKTsKPiAtICAgIC8vIEZJWE1FOiByZWNvcmQgb3B0aW9ucwo+IC0gICAgcmV0Lm9wdGlvbnMg
PSAiIjsKPiAtICAgIHJldHVybiByZXQ7Cj4gKwltb3VudF9kZXNjIHJldDsKPiArCXJldC5zcGVj
aWFsID0gbS0+bV9zcGVjaWFsOwo+ICsJcmV0LnBhdGggPSBtLT5tX3BhdGg7Cj4gKwlyZXQudHlw
ZSA9IGZzX2dldGZzbmFtZShtLT5tX29wKTsKPiArCS8vIEZJWE1FOiByZWNvcmQgb3B0aW9ucwo+
ICsJcmV0Lm9wdGlvbnMgPSAiIjsKPiArCXJldHVybiByZXQ7Cj4gICB9Cj4gICAKPiAgIHN0ZDo6
dmVjdG9yPG1vdW50X2Rlc2M+Cj4gICBjdXJyZW50X21vdW50cygpCj4gICB7Cj4gLSAgICBXSVRI
X0xPQ0sobW91bnRfbG9jaykgewo+IC0gICAgICAgIHN0ZDo6dmVjdG9yPG1vdW50X2Rlc2M+IHJl
dDsKPiAtICAgICAgICBmb3IgKGF1dG8mJiBtcCA6IG1vdW50X2xpc3QpIHsKPiAtICAgICAgICAg
ICAgcmV0LnB1c2hfYmFjayh0b19tb3VudF9kZXNjKG1wKSk7Cj4gLSAgICAgICAgfQo+IC0gICAg
ICAgIHJldHVybiByZXQ7Cj4gLSAgICB9Cj4gKwlXSVRIX0xPQ0sobW91bnRfbG9jaykgewo+ICsJ
CXN0ZDo6dmVjdG9yPG1vdW50X2Rlc2M+IHJldDsKPiArCQlmb3IgKGF1dG8mJiBtcCA6IG1vdW50
X2xpc3QpIHsKPiArCQkJcmV0LnB1c2hfYmFjayh0b19tb3VudF9kZXNjKG1wKSk7Cj4gKwkJfQo+
ICsJCXJldHVybiByZXQ7Cj4gKwl9Cj4gICB9Cj4gICAKPiAgIH0KPiBAQCAtNDc4LDE0ICs0Nzgs
MTQgQEAgY3VycmVudF9tb3VudHMoKQo+ICAgdm9pZAo+ICAgbW91bnRfZHVtcCh2b2lkKQo+ICAg
ewo+IC0gICAgU0NPUEVfTE9DSyhtb3VudF9sb2NrKTsKPiArCVNDT1BFX0xPQ0sobW91bnRfbG9j
ayk7Cj4gICAKPiAtICAgIGtwcmludGYoIm1vdW50X2R1bXBcbiIpOwo+IC0gICAga3ByaW50Zigi
ZGV2ICAgICAgY291bnQgcm9vdFxuIik7Cj4gLSAgICBrcHJpbnRmKCItLS0tLS0tLSAtLS0tLSAt
LS0tLS0tLVxuIik7Cj4gKwlrcHJpbnRmKCJtb3VudF9kdW1wXG4iKTsKPiArCWtwcmludGYoImRl
diAgICAgIGNvdW50IHJvb3RcbiIpOwo+ICsJa3ByaW50ZigiLS0tLS0tLS0gLS0tLS0gLS0tLS0t
LS1cbiIpOwo+ICAgCj4gLSAgICBmb3IgKGF1dG8mJiBtcCA6IG1vdW50X2xpc3QpIHsKPiAtICAg
ICAgICBrcHJpbnRmKCIlOHggJTVkICVzXG4iLCBtcC0+bV9kZXYsIG1wLT5tX2NvdW50LCBtcC0+
bV9wYXRoKTsKPiAtICAgIH0KPiArCWZvciAoYXV0byYmIG1wIDogbW91bnRfbGlzdCkgewo+ICsJ
CWtwcmludGYoIiU4eCAlNWQgJXNcbiIsIG1wLT5tX2RldiwgbXAtPm1fY291bnQsIG1wLT5tX3Bh
dGgpOwo+ICsJfQo+ICAgfQo+ICAgI2VuZGlmCj4gZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3N5
c2NhbGxzLmMgYi9saWIvdmZzY29yZS9zeXNjYWxscy5jCj4gaW5kZXggNDg3ZDU3MjkuLmI1NDMz
ZWNlIDEwMDY0NAo+IC0tLSBhL2xpYi92ZnNjb3JlL3N5c2NhbGxzLmMKPiArKysgYi9saWIvdmZz
Y29yZS9zeXNjYWxscy5jCldBUk5JTkc6IHN1c3BlY3QgY29kZSBpbmRlbnQgZm9yIGNvbmRpdGlv
bmFsIHN0YXRlbWVudHMgKDE2LCAyMCkgCiAKCiMxODI6IEZJTEU6IGxpYi92ZnNjb3JlL3N5c2Nh
bGxzLmM6MTgyOiAKIAoKKyAgICAgICBpZiAoZmxhZ3MgJiBPX0RJUkVDVE9SWSkgeyAKIAoKKyAg
ICAgICAgICAgaWYgKHZwLT52X3R5cGUgIT0gVkRJUikgeyAKIAoKIAogCgpXQVJOSU5HOiBTdGF0
ZW1lbnRzIHNob3VsZCBzdGFydCBvbiBhIHRhYnN0b3AgCiAKCiMxODM6IEZJTEU6IGxpYi92ZnNj
b3JlL3N5c2NhbGxzLmM6MTgzOiAKIAoKKyAgICAgICAgICAgaWYgKHZwLT52X3R5cGUgIT0gVkRJ
UikgeyAKIAoKIAogCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIHVzZSB0YWJzIHdoZXJlIHBv
c3NpYmxlIAogCgojMTg0OiBGSUxFOiBsaWIvdmZzY29yZS9zeXNjYWxscy5jOjE4NDogCiAKCite
SV5JICAgICAgICBlcnJvciA9IEVOT1RESVI7JCAKIAoKIAogCgpFUlJPUjogY29kZSBpbmRlbnQg
c2hvdWxkIHVzZSB0YWJzIHdoZXJlIHBvc3NpYmxlIAogCgojMTg1OiBGSUxFOiBsaWIvdmZzY29y
ZS9zeXNjYWxscy5jOjE4NTogCiAKCiteSV5JICAgICAgICBnb3RvIG91dF9kcmVsZTskIAogCgog
CiAKCldBUk5JTkc6IFN0YXRlbWVudHMgc2hvdWxkIHN0YXJ0IG9uIGEgdGFic3RvcCAKIAoKIzE4
NjogRklMRTogbGliL3Zmc2NvcmUvc3lzY2FsbHMuYzoxODY6IAogCgorICAgICAgICAgICB9CgpX
QVJOSU5HOiBTdGF0ZW1lbnRzIHNob3VsZCBzdGFydCBvbiBhIHRhYnN0b3AgCiAKCiMyMDg6IEZJ
TEU6IGxpYi92ZnNjb3JlL3N5c2NhbGxzLmM6MjA4OiAKIAoKKyAgICAgICBnb3RvIG91dF92bl91
bmxvY2s7CgpXQVJOSU5HOiBTdGF0ZW1lbnRzIHNob3VsZCBzdGFydCBvbiBhIHRhYnN0b3AgCiAK
CiMzMjc6IEZJTEU6IGxpYi92ZnNjb3JlL3N5c2NhbGxzLmM6MzI3OiAKIAoKKyAgICAgICByZXR1
cm4gRVNQSVBFOwoKV0FSTklORzogU3RhdGVtZW50cyBzaG91bGQgc3RhcnQgb24gYSB0YWJzdG9w
IAogCgojNzg1OiBGSUxFOiBsaWIvdmZzY29yZS9zeXNjYWxscy5jOjc4NTogCiAKCisgICAgICAg
Z290byBlcnIzOwoKV0FSTklORzogU3RhdGVtZW50cyBzaG91bGQgc3RhcnQgb24gYSB0YWJzdG9w
IAogCgojNzg3OiBGSUxFOiBsaWIvdmZzY29yZS9zeXNjYWxscy5jOjc4NzogCiAKCisgICAgICAg
Z290byBlcnIzOyAKIAoKCgpXQVJOSU5HOiBTdGF0ZW1lbnRzIHNob3VsZCBzdGFydCBvbiBhIHRh
YnN0b3AgCiAKCiM5ODQ6IEZJTEU6IGxpYi92ZnNjb3JlL3N5c2NhbGxzLmM6OTg0OiAKIAoKKyAg
ICAgICBnb3RvIG91dDsKCldBUk5JTkc6IFN0YXRlbWVudHMgc2hvdWxkIHN0YXJ0IG9uIGEgdGFi
c3RvcCAKIAoKIzEzMzU6IEZJTEU6IGxpYi92ZnNjb3JlL3N5c2NhbGxzLmM6MTMzNTogCiAKCisg
ICAgICAgcmV0dXJuIEVGQVVMVDsgCgoKCldBUk5JTkc6IFN0YXRlbWVudHMgc2hvdWxkIHN0YXJ0
IG9uIGEgdGFic3RvcCAKIAoKIzEzNDI6IEZJTEU6IGxpYi92ZnNjb3JlL3N5c2NhbGxzLmM6MTM0
MjogCiAKCisgICAgICAgcmV0dXJuIEVCQURGOwoKCldBUk5JTkc6IFN0YXRlbWVudHMgc2hvdWxk
IHN0YXJ0IG9uIGEgdGFic3RvcCAKIAoKIzEzNDc6IEZJTEU6IGxpYi92ZnNjb3JlL3N5c2NhbGxz
LmM6MTM0NzogCiAKCisgICAgICAgcmV0dXJuIEVCQURGOwoKV0FSTklORzogU3RhdGVtZW50cyBz
aG91bGQgc3RhcnQgb24gYSB0YWJzdG9wIAogCgojMTM1MDogRklMRTogbGliL3Zmc2NvcmUvc3lz
Y2FsbHMuYzoxMzUwOiAKIAoKKyAgICAgICByZXR1cm4gRU5PVERJUjsKCldBUk5JTkc6IFN0YXRl
bWVudHMgc2hvdWxkIHN0YXJ0IG9uIGEgdGFic3RvcCAKIAoKIzEzNzM6IEZJTEU6IGxpYi92ZnNj
b3JlL3N5c2NhbGxzLmM6MTM3MzogCiAKCisgICAgICAgaWYgKHRpbWVzICYmCgpFUlJPUjogY29k
ZSBpbmRlbnQgc2hvdWxkIHVzZSB0YWJzIHdoZXJlIHBvc3NpYmxlIAogCgojMTM3NzogRklMRTog
bGliL3Zmc2NvcmUvc3lzY2FsbHMuYzoxMzc3OiAKIAoKK15JICAgICAgICByZXR1cm4gRVBFUk07
JAoKCiAKIAoKCgo+IEBAIC0yNDUsNzIgKzI0NSw3MiBAQCBpbnQKPiAgIHN5c19yZWFkKHN0cnVj
dCBmaWxlICpmcCwgY29uc3Qgc3RydWN0IGlvdmVjICppb3YsIHNpemVfdCBuaW92LAo+ICAgCQlv
ZmZfdCBvZmZzZXQsIHNpemVfdCAqY291bnQpCj4gICB7Cj4gLSAgICBpZiAoKGZwLT5mX2ZsYWdz
ICYgRlJFQUQpID09IDApCj4gLSAgICAgICAgcmV0dXJuIEVCQURGOwo+IC0KPiAtICAgIHNpemVf
dCBieXRlcyA9IDA7Cj4gLSAgICBhdXRvIGlvdnAgPSBpb3Y7Cj4gLSAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbmlvdjsgaSsrKSB7Cj4gLSAgICAgICAgaWYgKGlvdnAtPmlvdl9sZW4gPiBJ
T1NJWkVfTUFYIC0gYnl0ZXMpIHsKPiAtICAgICAgICAgICAgcmV0dXJuIEVJTlZBTDsKPiAtICAg
ICAgICB9Cj4gLSAgICAgICAgYnl0ZXMgKz0gaW92cC0+aW92X2xlbjsKPiAtICAgICAgICBpb3Zw
Kys7Cj4gLSAgICB9Cj4gLQo+IC0gICAgaWYgKGJ5dGVzID09IDApIHsKPiAtICAgICAgICAqY291
bnQgPSAwOwo+IC0gICAgICAgIHJldHVybiAwOwo+IC0gICAgfQo+IC0KPiAtICAgIHN0cnVjdCB1
aW8gdWlvOwo+IC0gICAgLy8gVW5mb3J0dW5hdGVseSwgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRp
b24gb2YgZnAtPnJlYWQgemVyb3MgdGhlCj4gLSAgICAvLyBpb3ZfbGVuIGZpZWxkcyB3aGVuIGl0
IHJlYWRzIGZyb20gZGlzaywgc28gd2UgaGF2ZSB0byBjb3B5IGlvdi4KPiAtICAgIHN0ZDo6dmVj
dG9yPGlvdmVjPiBjb3B5X2lvdihpb3YsIGlvdiArIG5pb3YpOwo+IC0gICAgdWlvLnVpb19pb3Yg
PSBjb3B5X2lvdi5kYXRhKCk7Cj4gLSAgICB1aW8udWlvX2lvdmNudCA9IG5pb3Y7Cj4gLSAgICB1
aW8udWlvX29mZnNldCA9IG9mZnNldDsKPiAtICAgIHVpby51aW9fcmVzaWQgPSBieXRlczsKPiAt
ICAgIHVpby51aW9fcncgPSBVSU9fUkVBRDsKPiAtICAgIGF1dG8gZXJyb3IgPSBmcC0+cmVhZCgm
dWlvLCAob2Zmc2V0ID09IC0xKSA/IDAgOiBGT0ZfT0ZGU0VUKTsKPiAtICAgICpjb3VudCA9IGJ5
dGVzIC0gdWlvLnVpb19yZXNpZDsKPiAtICAgIHJldHVybiBlcnJvcjsKPiArCWlmICgoZnAtPmZf
ZmxhZ3MgJiBGUkVBRCkgPT0gMCkKPiArCQlyZXR1cm4gRUJBREY7Cj4gKwo+ICsJc2l6ZV90IGJ5
dGVzID0gMDsKPiArCWF1dG8gaW92cCA9IGlvdjsKPiArCWZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBuaW92OyBpKyspIHsKPiArCQlpZiAoaW92cC0+aW92X2xlbiA+IElPU0laRV9NQVggLSBieXRl
cykgewo+ICsJCQlyZXR1cm4gRUlOVkFMOwo+ICsJCX0KPiArCQlieXRlcyArPSBpb3ZwLT5pb3Zf
bGVuOwo+ICsJCWlvdnArKzsKPiArCX0KPiArCj4gKwlpZiAoYnl0ZXMgPT0gMCkgewo+ICsJCSpj
b3VudCA9IDA7Cj4gKwkJcmV0dXJuIDA7Cj4gKwl9Cj4gKwo+ICsJc3RydWN0IHVpbyB1aW87Cj4g
KwkvLyBVbmZvcnR1bmF0ZWx5LCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvZiBmcC0+cmVh
ZCB6ZXJvcyB0aGUKPiArCS8vIGlvdl9sZW4gZmllbGRzIHdoZW4gaXQgcmVhZHMgZnJvbSBkaXNr
LCBzbyB3ZSBoYXZlIHRvIGNvcHkgaW92Lgo+ICsJc3RkOjp2ZWN0b3I8aW92ZWM+IGNvcHlfaW92
KGlvdiwgaW92ICsgbmlvdik7Cj4gKwl1aW8udWlvX2lvdiA9IGNvcHlfaW92LmRhdGEoKTsKPiAr
CXVpby51aW9faW92Y250ID0gbmlvdjsKPiArCXVpby51aW9fb2Zmc2V0ID0gb2Zmc2V0Owo+ICsJ
dWlvLnVpb19yZXNpZCA9IGJ5dGVzOwo+ICsJdWlvLnVpb19ydyA9IFVJT19SRUFEOwo+ICsJYXV0
byBlcnJvciA9IGZwLT5yZWFkKCZ1aW8sIChvZmZzZXQgPT0gLTEpID8gMCA6IEZPRl9PRkZTRVQp
Owo+ICsJKmNvdW50ID0gYnl0ZXMgLSB1aW8udWlvX3Jlc2lkOwo+ICsJcmV0dXJuIGVycm9yOwo+
ICAgfQo+ICAgCj4gICBpbnQKPiAgIHN5c193cml0ZShzdHJ1Y3QgZmlsZSAqZnAsIGNvbnN0IHN0
cnVjdCBpb3ZlYyAqaW92LCBzaXplX3QgbmlvdiwKPiAgIAkJb2ZmX3Qgb2Zmc2V0LCBzaXplX3Qg
KmNvdW50KQo+ICAgewo+IC0gICAgaWYgKChmcC0+Zl9mbGFncyAmIEZXUklURSkgPT0gMCkKPiAt
ICAgICAgICByZXR1cm4gRUJBREY7Cj4gLQo+IC0gICAgc2l6ZV90IGJ5dGVzID0gMDsKPiAtICAg
IGF1dG8gaW92cCA9IGlvdjsKPiAtICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBuaW92OyBp
KyspIHsKPiAtICAgICAgICBpZiAoaW92cC0+aW92X2xlbiA+IElPU0laRV9NQVggLSBieXRlcykg
ewo+IC0gICAgICAgICAgICByZXR1cm4gRUlOVkFMOwo+IC0gICAgICAgIH0KPiAtICAgICAgICBi
eXRlcyArPSBpb3ZwLT5pb3ZfbGVuOwo+IC0gICAgICAgIGlvdnArKzsKPiAtICAgIH0KPiAtCj4g
LSAgICBpZiAoYnl0ZXMgPT0gMCkgewo+IC0gICAgICAgICpjb3VudCA9IDA7Cj4gLSAgICAgICAg
cmV0dXJuIDA7Cj4gLSAgICB9Cj4gLQo+IC0gICAgc3RydWN0IHVpbyB1aW87Cj4gLSAgICAvLyBV
bmZvcnR1bmF0ZWx5LCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvZiBmcC0+d3JpdGUgemVy
b3MgdGhlCj4gLSAgICAvLyBpb3ZfbGVuIGZpZWxkcyB3aGVuIGl0IHdyaXRlcyB0byBkaXNrLCBz
byB3ZSBoYXZlIHRvIGNvcHkgaW92Lgo+IC0gICAgc3RkOjp2ZWN0b3I8aW92ZWM+IGNvcHlfaW92
KGlvdiwgaW92ICsgbmlvdik7Cj4gLSAgICB1aW8udWlvX2lvdiA9IGNvcHlfaW92LmRhdGEoKTsK
PiAtICAgIHVpby51aW9faW92Y250ID0gbmlvdjsKPiAtICAgIHVpby51aW9fb2Zmc2V0ID0gb2Zm
c2V0Owo+IC0gICAgdWlvLnVpb19yZXNpZCA9IGJ5dGVzOwo+IC0gICAgdWlvLnVpb19ydyA9IFVJ
T19XUklURTsKPiAtICAgIGF1dG8gZXJyb3IgPSBmcC0+d3JpdGUoJnVpbywgKG9mZnNldCA9PSAt
MSkgPyAwIDogRk9GX09GRlNFVCk7Cj4gLSAgICAqY291bnQgPSBieXRlcyAtIHVpby51aW9fcmVz
aWQ7Cj4gLSAgICByZXR1cm4gZXJyb3I7Cj4gKwlpZiAoKGZwLT5mX2ZsYWdzICYgRldSSVRFKSA9
PSAwKQo+ICsJCXJldHVybiBFQkFERjsKPiArCj4gKwlzaXplX3QgYnl0ZXMgPSAwOwo+ICsJYXV0
byBpb3ZwID0gaW92Owo+ICsJZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG5pb3Y7IGkrKykgewo+
ICsJCWlmIChpb3ZwLT5pb3ZfbGVuID4gSU9TSVpFX01BWCAtIGJ5dGVzKSB7Cj4gKwkJCXJldHVy
biBFSU5WQUw7Cj4gKwkJfQo+ICsJCWJ5dGVzICs9IGlvdnAtPmlvdl9sZW47Cj4gKwkJaW92cCsr
Owo+ICsJfQo+ICsKPiArCWlmIChieXRlcyA9PSAwKSB7Cj4gKwkJKmNvdW50ID0gMDsKPiArCQly
ZXR1cm4gMDsKPiArCX0KPiArCj4gKwlzdHJ1Y3QgdWlvIHVpbzsKPiArCS8vIFVuZm9ydHVuYXRl
bHksIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9mIGZwLT53cml0ZSB6ZXJvcyB0aGUKPiAr
CS8vIGlvdl9sZW4gZmllbGRzIHdoZW4gaXQgd3JpdGVzIHRvIGRpc2ssIHNvIHdlIGhhdmUgdG8g
Y29weSBpb3YuCj4gKwlzdGQ6OnZlY3Rvcjxpb3ZlYz4gY29weV9pb3YoaW92LCBpb3YgKyBuaW92
KTsKPiArCXVpby51aW9faW92ID0gY29weV9pb3YuZGF0YSgpOwo+ICsJdWlvLnVpb19pb3ZjbnQg
PSBuaW92Owo+ICsJdWlvLnVpb19vZmZzZXQgPSBvZmZzZXQ7Cj4gKwl1aW8udWlvX3Jlc2lkID0g
Ynl0ZXM7Cj4gKwl1aW8udWlvX3J3ID0gVUlPX1dSSVRFOwo+ICsJYXV0byBlcnJvciA9IGZwLT53
cml0ZSgmdWlvLCAob2Zmc2V0ID09IC0xKSA/IDAgOiBGT0ZfT0ZGU0VUKTsKPiArCSpjb3VudCA9
IGJ5dGVzIC0gdWlvLnVpb19yZXNpZDsKPiArCXJldHVybiBlcnJvcjsKPiAgIH0KPiAgIAo+ICAg
aW50Cj4gQEAgLTEyMjEsOCArMTIyMSw4IEBAIHN5c19yZWFkbGluayhjaGFyICpwYXRoLCBjaGFy
ICpidWYsIHNpemVfdCBidWZzaXplLCBzc2l6ZV90ICpzaXplKQo+ICAgICovCj4gICBzdGF0aWMg
Ym9vbCBpc190aW1ldmFsX3ZhbGlkKGNvbnN0IHN0cnVjdCB0aW1ldmFsICp0aW1lKQo+ICAgewo+
IC0gICAgcmV0dXJuICh0aW1lLT50dl9zZWMgPj0gMCkgJiYKPiAtICAgICAgICAgICAodGltZS0+
dHZfdXNlYyA+PSAwICYmIHRpbWUtPnR2X3VzZWMgPCAxMDAwMDAwKTsKPiArCXJldHVybiAodGlt
ZS0+dHZfc2VjID49IDApICYmCj4gKwkJICAgKHRpbWUtPnR2X3VzZWMgPj0gMCAmJiB0aW1lLT50
dl91c2VjIDwgMTAwMDAwMCk7Cj4gICB9Cj4gICAKPiAgIC8qCj4gQEAgLTEyMzAsNTggKzEyMzAs
NTggQEAgc3RhdGljIGJvb2wgaXNfdGltZXZhbF92YWxpZChjb25zdCBzdHJ1Y3QgdGltZXZhbCAq
dGltZSkKPiAgICAqLwo+ICAgc3RhdGljIHZvaWQgY29udmVydF90aW1ldmFsKHN0cnVjdCB0aW1l
c3BlYyAmdG8sIGNvbnN0IHN0cnVjdCB0aW1ldmFsICpmcm9tKQo+ICAgewo+IC0gICAgaWYgKGZy
b20pIHsKPiAtICAgICAgICB0by50dl9zZWMgPSBmcm9tLT50dl9zZWM7Cj4gLSAgICAgICAgdG8u
dHZfbnNlYyA9IGZyb20tPnR2X3VzZWMgKiAxMDAwOyAvLyBDb252ZXJ0IG1pY3Jvc2Vjb25kcyB0
byBuYW5vc2Vjb25kcwo+IC0gICAgfSBlbHNlIHsKPiAtICAgICAgICBjbG9ja19nZXR0aW1lKENM
T0NLX1JFQUxUSU1FLCAmdG8pOwo+IC0gICAgfQo+ICsJaWYgKGZyb20pIHsKPiArCQl0by50dl9z
ZWMgPSBmcm9tLT50dl9zZWM7Cj4gKwkJdG8udHZfbnNlYyA9IGZyb20tPnR2X3VzZWMgKiAxMDAw
OyAvLyBDb252ZXJ0IG1pY3Jvc2Vjb25kcyB0byBuYW5vc2Vjb25kcwo+ICsJfSBlbHNlIHsKPiAr
CQljbG9ja19nZXR0aW1lKENMT0NLX1JFQUxUSU1FLCAmdG8pOwo+ICsJfQo+ICAgfQo+ICAgCj4g
ICBpbnQKPiAgIHN5c191dGltZXMoY2hhciAqcGF0aCwgY29uc3Qgc3RydWN0IHRpbWV2YWwgdGlt
ZXNbMl0sIGludCBmbGFncykKPiAgIHsKPiAtICAgIGludCBlcnJvcjsKPiAtICAgIHN0cnVjdCBk
ZW50cnkgKmRwOwo+IC0gICAgc3RydWN0IHRpbWVzcGVjIHRpbWVzcGVjX3RpbWVzWzJdOwo+IC0K
PiAtICAgIERQUklOVEYoVkZTREJfU1lTQ0FMTCwgKCJzeXNfdXRpbWVzOiBwYXRoPSVzXG4iLCBw
YXRoKSk7Cj4gLQo+IC0gICAgaWYgKHRpbWVzICYmICghaXNfdGltZXZhbF92YWxpZCgmdGltZXNb
MF0pIHx8ICFpc190aW1ldmFsX3ZhbGlkKCZ0aW1lc1sxXSkpKQo+IC0gICAgICAgIHJldHVybiBF
SU5WQUw7Cj4gLQo+IC0gICAgLy8gQ29udmVydCBlYWNoIGVsZW1lbnQgb2YgdGltZXZhbCBhcnJh
eSB0byB0aGUgdGltZXNwZWMgdHlwZQo+IC0gICAgY29udmVydF90aW1ldmFsKHRpbWVzcGVjX3Rp
bWVzWzBdLCB0aW1lcyA/IHRpbWVzICsgMCA6IG51bGxwdHIpOwo+IC0gICAgY29udmVydF90aW1l
dmFsKHRpbWVzcGVjX3RpbWVzWzFdLCB0aW1lcyA/IHRpbWVzICsgMSA6IG51bGxwdHIpOwo+IC0K
PiAtICAgIGlmIChmbGFncyAmIEFUX1NZTUxJTktfTk9GT0xMT1cpIHsKPiAtICAgICAgICBzdHJ1
Y3QgZGVudHJ5ICpkZHA7Cj4gLSAgICAgICAgZXJyb3IgPSBsb29rdXAocGF0aCwgJmRkcCwgbnVs
bHB0cik7Cj4gLSAgICAgICAgaWYgKGVycm9yKSB7Cj4gLSAgICAgICAgICAgIHJldHVybiBlcnJv
cjsKPiAtICAgICAgICB9Cj4gLQo+IC0gICAgICAgIGVycm9yID0gbmFtZWlfbGFzdF9ub2ZvbGxv
dyhwYXRoLCBkZHAsICZkcCk7Cj4gLSAgICAgICAgaWYgKGRkcCAhPSBudWxscHRyKSB7Cj4gLSAg
ICAgICAgICAgIGRyZWxlKGRkcCk7Cj4gLSAgICAgICAgfQo+IC0gICAgICAgIGlmIChlcnJvcikg
ewo+IC0gICAgICAgICAgICByZXR1cm4gZXJyb3I7Cj4gLSAgICAgICAgfQo+IC0gICAgfSBlbHNl
IHsKPiAtICAgICAgICBlcnJvciA9IG5hbWVpKHBhdGgsICZkcCk7Cj4gLSAgICAgICAgaWYgKGVy
cm9yKQo+IC0gICAgICAgICAgICByZXR1cm4gZXJyb3I7Cj4gLSAgICB9Cj4gLQo+IC0gICAgaWYg
KGRwLT5kX21vdW50LT5tX2ZsYWdzICYgTU5UX1JET05MWSkgewo+IC0gICAgICAgIGVycm9yID0g
RVJPRlM7Cj4gLSAgICB9IGVsc2Ugewo+IC0gICAgICAgIGVycm9yID0gdm5fc2V0dGltZXMoZHAt
PmRfdm5vZGUsIHRpbWVzcGVjX3RpbWVzKTsKPiAtICAgIH0KPiAtCj4gLSAgICBkcmVsZShkcCk7
Cj4gLSAgICByZXR1cm4gZXJyb3I7Cj4gKwlpbnQgZXJyb3I7Cj4gKwlzdHJ1Y3QgZGVudHJ5ICpk
cDsKPiArCXN0cnVjdCB0aW1lc3BlYyB0aW1lc3BlY190aW1lc1syXTsKPiArCj4gKwlEUFJJTlRG
KFZGU0RCX1NZU0NBTEwsICgic3lzX3V0aW1lczogcGF0aD0lc1xuIiwgcGF0aCkpOwo+ICsKPiAr
CWlmICh0aW1lcyAmJiAoIWlzX3RpbWV2YWxfdmFsaWQoJnRpbWVzWzBdKSB8fCAhaXNfdGltZXZh
bF92YWxpZCgmdGltZXNbMV0pKSkKPiArCQlyZXR1cm4gRUlOVkFMOwo+ICsKPiArCS8vIENvbnZl
cnQgZWFjaCBlbGVtZW50IG9mIHRpbWV2YWwgYXJyYXkgdG8gdGhlIHRpbWVzcGVjIHR5cGUKPiAr
CWNvbnZlcnRfdGltZXZhbCh0aW1lc3BlY190aW1lc1swXSwgdGltZXMgPyB0aW1lcyArIDAgOiBu
dWxscHRyKTsKPiArCWNvbnZlcnRfdGltZXZhbCh0aW1lc3BlY190aW1lc1sxXSwgdGltZXMgPyB0
aW1lcyArIDEgOiBudWxscHRyKTsKPiArCj4gKwlpZiAoZmxhZ3MgJiBBVF9TWU1MSU5LX05PRk9M
TE9XKSB7Cj4gKwkJc3RydWN0IGRlbnRyeSAqZGRwOwo+ICsJCWVycm9yID0gbG9va3VwKHBhdGgs
ICZkZHAsIG51bGxwdHIpOwo+ICsJCWlmIChlcnJvcikgewo+ICsJCQlyZXR1cm4gZXJyb3I7Cj4g
KwkJfQo+ICsKPiArCQllcnJvciA9IG5hbWVpX2xhc3Rfbm9mb2xsb3cocGF0aCwgZGRwLCAmZHAp
Owo+ICsJCWlmIChkZHAgIT0gbnVsbHB0cikgewo+ICsJCQlkcmVsZShkZHApOwo+ICsJCX0KPiAr
CQlpZiAoZXJyb3IpIHsKPiArCQkJcmV0dXJuIGVycm9yOwo+ICsJCX0KPiArCX0gZWxzZSB7Cj4g
KwkJZXJyb3IgPSBuYW1laShwYXRoLCAmZHApOwo+ICsJCWlmIChlcnJvcikKPiArCQkJcmV0dXJu
IGVycm9yOwo+ICsJfQo+ICsKPiArCWlmIChkcC0+ZF9tb3VudC0+bV9mbGFncyAmIE1OVF9SRE9O
TFkpIHsKPiArCQllcnJvciA9IEVST0ZTOwo+ICsJfSBlbHNlIHsKPiArCQllcnJvciA9IHZuX3Nl
dHRpbWVzKGRwLT5kX3Zub2RlLCB0aW1lc3BlY190aW1lcyk7Cj4gKwl9Cj4gKwo+ICsJZHJlbGUo
ZHApOwo+ICsJcmV0dXJuIGVycm9yOwo+ICAgfQo+ICAgCj4gICAvKgo+IEBAIC0xMjg5LDcgKzEy
ODksNyBAQCBzeXNfdXRpbWVzKGNoYXIgKnBhdGgsIGNvbnN0IHN0cnVjdCB0aW1ldmFsIHRpbWVz
WzJdLCBpbnQgZmxhZ3MpCj4gICAgKi8KPiAgIHN0YXRpYyBib29sIGlzX3RpbWVzcGVjX3ZhbGlk
KGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAmdGltZSkKPiAgIHsKPiAtICAgIHJldHVybiAodGltZS50
dl9zZWMgPj0gMCkgJiYKPiArCXJldHVybiAodGltZS50dl9zZWMgPj0gMCkgJiYKPiAgIAkgICAo
KHRpbWUudHZfbnNlYyA+PSAwICYmIHRpbWUudHZfbnNlYyA8PSA5OTk5OTk5OTkpIHx8Cj4gICAJ
ICAgIHRpbWUudHZfbnNlYyA9PSBVVElNRV9OT1cgfHwKPiAgIAkgICAgdGltZS50dl9uc2VjID09
IFVUSU1FX09NSVQpOwo+IEBAIC0xMjk3LDQ4ICsxMjk3LDQ4IEBAIHN0YXRpYyBib29sIGlzX3Rp
bWVzcGVjX3ZhbGlkKGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAmdGltZSkKPiAgIAo+ICAgdm9pZCBp
bml0X3RpbWVzcGVjKHN0cnVjdCB0aW1lc3BlYyAmX3RpbWVzLCBjb25zdCBzdHJ1Y3QgdGltZXNw
ZWMgKnRpbWVzKQo+ICAgewo+IC0gICAgaWYgKHRpbWVzID09IG51bGxwdHIgfHwgdGltZXMtPnR2
X25zZWMgPT0gVVRJTUVfTk9XKSB7Cj4gLSAgICAgICAgY2xvY2tfZ2V0dGltZShDTE9DS19SRUFM
VElNRSwgJl90aW1lcyk7Cj4gLSAgICB9IGVsc2Ugewo+IC0gICAgICAgIF90aW1lcy50dl9zZWMg
PSB0aW1lcy0+dHZfc2VjOwo+IC0gICAgICAgIF90aW1lcy50dl9uc2VjID0gdGltZXMtPnR2X25z
ZWM7Cj4gLSAgICB9Cj4gLSAgICByZXR1cm47Cj4gKwlpZiAodGltZXMgPT0gbnVsbHB0ciB8fCB0
aW1lcy0+dHZfbnNlYyA9PSBVVElNRV9OT1cpIHsKPiArCQljbG9ja19nZXR0aW1lKENMT0NLX1JF
QUxUSU1FLCAmX3RpbWVzKTsKPiArCX0gZWxzZSB7Cj4gKwkJX3RpbWVzLnR2X3NlYyA9IHRpbWVz
LT50dl9zZWM7Cj4gKwkJX3RpbWVzLnR2X25zZWMgPSB0aW1lcy0+dHZfbnNlYzsKPiArCX0KPiAr
CXJldHVybjsKPiAgIH0KPiAgIAo+ICAgaW50Cj4gICBzeXNfdXRpbWVuc2F0KGludCBkaXJmZCwg
Y29uc3QgY2hhciAqcGF0aG5hbWUsIGNvbnN0IHN0cnVjdCB0aW1lc3BlYyB0aW1lc1syXSwgaW50
IGZsYWdzKQo+ICAgewo+IC0gICAgaW50IGVycm9yOwo+IC0gICAgc3RkOjpzdHJpbmcgYXA7Cj4g
LSAgICBzdHJ1Y3QgdGltZXNwZWMgdGltZXNwZWNfdGltZXNbMl07Cj4gLSAgICBleHRlcm4gc3Ry
dWN0IHRhc2sgKm1haW5fdGFzazsKPiAtICAgIHN0cnVjdCBkZW50cnkgKmRwOwo+ICsJaW50IGVy
cm9yOwo+ICsJc3RkOjpzdHJpbmcgYXA7Cj4gKwlzdHJ1Y3QgdGltZXNwZWMgdGltZXNwZWNfdGlt
ZXNbMl07Cj4gKwlleHRlcm4gc3RydWN0IHRhc2sgKm1haW5fdGFzazsKPiArCXN0cnVjdCBkZW50
cnkgKmRwOwo+ICAgCj4gLSAgICAvKiB1dGltZW5zYXQgc2hvdWxkIHJldHVybiBFTk9FTlQgd2hl
biBwYXRobmFtZSBpcyBlbXB0eSAqLwo+IC0gICAgaWYocGF0aG5hbWUgJiYgcGF0aG5hbWVbMF0g
PT0gMCkKPiAtICAgICAgICByZXR1cm4gRU5PRU5UOwo+ICsJLyogdXRpbWVuc2F0IHNob3VsZCBy
ZXR1cm4gRU5PRU5UIHdoZW4gcGF0aG5hbWUgaXMgZW1wdHkgKi8KPiArCWlmKHBhdGhuYW1lICYm
IHBhdGhuYW1lWzBdID09IDApCj4gKwkJcmV0dXJuIEVOT0VOVDsKPiAgIAo+IC0gICAgaWYgKGZs
YWdzICYmICEoZmxhZ3MgJiBBVF9TWU1MSU5LX05PRk9MTE9XKSkKPiAtICAgICAgICByZXR1cm4g
RUlOVkFMOwo+ICsJaWYgKGZsYWdzICYmICEoZmxhZ3MgJiBBVF9TWU1MSU5LX05PRk9MTE9XKSkK
PiArCQlyZXR1cm4gRUlOVkFMOwo+ICAgCj4gLSAgICBpZiAodGltZXMgJiYgKCFpc190aW1lc3Bl
Y192YWxpZCh0aW1lc1swXSkgfHwgIWlzX3RpbWVzcGVjX3ZhbGlkKHRpbWVzWzFdKSkpCj4gLSAg
ICAgICAgcmV0dXJuIEVJTlZBTDsKPiArCWlmICh0aW1lcyAmJiAoIWlzX3RpbWVzcGVjX3ZhbGlk
KHRpbWVzWzBdKSB8fCAhaXNfdGltZXNwZWNfdmFsaWQodGltZXNbMV0pKSkKPiArCQlyZXR1cm4g
RUlOVkFMOwo+ICAgCj4gLSAgICBpbml0X3RpbWVzcGVjKHRpbWVzcGVjX3RpbWVzWzBdLCB0aW1l
cyA/IHRpbWVzICsgMCA6IG51bGxwdHIpOwo+IC0gICAgaW5pdF90aW1lc3BlYyh0aW1lc3BlY190
aW1lc1sxXSwgdGltZXMgPyB0aW1lcyArIDEgOiBudWxscHRyKTsKPiArCWluaXRfdGltZXNwZWMo
dGltZXNwZWNfdGltZXNbMF0sIHRpbWVzID8gdGltZXMgKyAwIDogbnVsbHB0cik7Cj4gKwlpbml0
X3RpbWVzcGVjKHRpbWVzcGVjX3RpbWVzWzFdLCB0aW1lcyA/IHRpbWVzICsgMSA6IG51bGxwdHIp
Owo+ICAgCj4gLSAgICBpZiAocGF0aG5hbWUgJiYgcGF0aG5hbWVbMF0gPT0gJy8nKSB7Cj4gKwlp
ZiAocGF0aG5hbWUgJiYgcGF0aG5hbWVbMF0gPT0gJy8nKSB7Cj4gICAJYXAgPSBwYXRobmFtZTsK
PiAtICAgIH0gZWxzZSBpZiAoZGlyZmQgPT0gQVRfRkRDV0QpIHsKPiArCX0gZWxzZSBpZiAoZGly
ZmQgPT0gQVRfRkRDV0QpIHsKPiAgIAlpZiAoIXBhdGhuYW1lKQo+ICAgCSAgICByZXR1cm4gRUZB
VUxUOwo+ICAgCWFwID0gc3RkOjpzdHJpbmcobWFpbl90YXNrLT50X2N3ZCkgKyAiLyIgKyBwYXRo
bmFtZTsKPiAtICAgIH0gZWxzZSB7Cj4gLSAgICAgICAgc3RydWN0IGZpbGUgKmZwOwo+IC0gICAg
ICAgIGZpbGVyZWYgZihmaWxlcmVmX2Zyb21fZmQoZGlyZmQpKTsKPiArCX0gZWxzZSB7Cj4gKwkJ
c3RydWN0IGZpbGUgKmZwOwo+ICsJCWZpbGVyZWYgZihmaWxlcmVmX2Zyb21fZmQoZGlyZmQpKTsK
PiAgIAo+IC0gICAgICAgIGlmICghZikKPiArCQlpZiAoIWYpCj4gICAJICAgIHJldHVybiBFQkFE
RjsKPiAgIAo+ICAgCWZwID0gZi5nZXQoKTsKPiBAQCAtMTM1NSwxMzIgKzEzNTUsMTMyIEBAIHN5
c191dGltZW5zYXQoaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwgY29uc3Qgc3RydWN0
IHRpbWVzcGVjIHRpbWVzWzJdLCBpCj4gICAJICAgIGFwID0gZnAtPmZfZGVudHJ5LT5kX3BhdGg7
Cj4gICAKPiAgIAlhcCA9IHN0ZDo6c3RyaW5nKGZwLT5mX2RlbnRyeS0+ZF9tb3VudC0+bV9wYXRo
KSArICIvIiArIGFwOwo+IC0gICAgfQo+ICsJfQo+ICAgCj4gLSAgICAvKiBGSVhNRTogQWRkIHN1
cHBvcnQgZm9yIEFUX1NZTUxJTktfTk9GT0xMT1cgKi8KPiArCS8qIEZJWE1FOiBBZGQgc3VwcG9y
dCBmb3IgQVRfU1lNTElOS19OT0ZPTExPVyAqLwo+ICAgCj4gLSAgICBlcnJvciA9IG5hbWVpKGFw
LmNfc3RyKCksICZkcCk7Cj4gKwllcnJvciA9IG5hbWVpKGFwLmNfc3RyKCksICZkcCk7Cj4gICAK
PiAtICAgIGlmIChlcnJvcikKPiAtICAgICAgICByZXR1cm4gZXJyb3I7Cj4gKwlpZiAoZXJyb3Ip
Cj4gKwkJcmV0dXJuIGVycm9yOwo+ICAgCj4gLSAgICBpZiAoZHAtPmRfbW91bnQtPm1fZmxhZ3Mg
JiBNTlRfUkRPTkxZKSB7Cj4gLSAgICAgICAgZXJyb3IgPSBFUk9GUzsKPiAtICAgIH0gZWxzZSB7
Cj4gLSAgICAgICAgaWYgKHZuX2FjY2VzcyhkcC0+ZF92bm9kZSwgVldSSVRFKSkgewo+IC0gICAg
ICAgICAgICByZXR1cm4gRUFDQ0VTOwo+IC0gICAgICAgIH0KPiArCWlmIChkcC0+ZF9tb3VudC0+
bV9mbGFncyAmIE1OVF9SRE9OTFkpIHsKPiArCQllcnJvciA9IEVST0ZTOwo+ICsJfSBlbHNlIHsK
PiArCQlpZiAodm5fYWNjZXNzKGRwLT5kX3Zub2RlLCBWV1JJVEUpKSB7Cj4gKwkJCXJldHVybiBF
QUNDRVM7Cj4gKwkJfQo+ICAgCSAgICBpZiAodGltZXMgJiYKPiAtICAgICAgICAgICAgICAgKHRp
bWVzWzBdLnR2X25zZWMgIT0gVVRJTUVfTk9XIHx8IHRpbWVzWzFdLnR2X25zZWMgIT0gVVRJTUVf
Tk9XKSAmJgo+IC0gICAgICAgICAgICAgICAodGltZXNbMF0udHZfbnNlYyAhPSBVVElNRV9PTUlU
IHx8IHRpbWVzWzFdLnR2X25zZWMgIT0gVVRJTUVfT01JVCkgJiYKPiArCQkJICAgKHRpbWVzWzBd
LnR2X25zZWMgIT0gVVRJTUVfTk9XIHx8IHRpbWVzWzFdLnR2X25zZWMgIT0gVVRJTUVfTk9XKSAm
Jgo+ICsJCQkgICAodGltZXNbMF0udHZfbnNlYyAhPSBVVElNRV9PTUlUIHx8IHRpbWVzWzFdLnR2
X25zZWMgIT0gVVRJTUVfT01JVCkgJiYKPiAgIAkgICAgICAgKCEoZHAtPmRfdm5vZGUtPnZfbW9k
ZSAmIH5WQVBQRU5EKSkpCj4gICAJICAgICAgICByZXR1cm4gRVBFUk07Cj4gLSAgICAgICAgZXJy
b3IgPSB2bl9zZXR0aW1lcyhkcC0+ZF92bm9kZSwgdGltZXNwZWNfdGltZXMpOwo+IC0gICAgfQo+
ICsJCWVycm9yID0gdm5fc2V0dGltZXMoZHAtPmRfdm5vZGUsIHRpbWVzcGVjX3RpbWVzKTsKPiAr
CX0KPiAgIAo+IC0gICAgZHJlbGUoZHApOwo+IC0gICAgcmV0dXJuIGVycm9yOwo+ICsJZHJlbGUo
ZHApOwo+ICsJcmV0dXJuIGVycm9yOwo+ICAgfQo+ICAgCj4gICBpbnQKPiAgIHN5c19mdXRpbWVu
cyhpbnQgZmQsIGNvbnN0IHN0cnVjdCB0aW1lc3BlYyB0aW1lc1syXSkKPiAgIHsKPiAtICAgIHN0
cnVjdCBmaWxlICpmcDsKPiArCXN0cnVjdCBmaWxlICpmcDsKPiAgIAo+IC0gICAgZmlsZXJlZiBm
KGZpbGVyZWZfZnJvbV9mZChmZCkpOwo+IC0gICAgaWYgKCFmKQo+IC0gICAgICAgIHJldHVybiBF
QkFERjsKPiArCWZpbGVyZWYgZihmaWxlcmVmX2Zyb21fZmQoZmQpKTsKPiArCWlmICghZikKPiAr
CQlyZXR1cm4gRUJBREY7Cj4gICAKPiAtICAgIGZwID0gZi5nZXQoKTsKPiArCWZwID0gZi5nZXQo
KTsKPiAgIAo+IC0gICAgaWYgKCFmcC0+Zl9kZW50cnkpCj4gLSAgICAgICAgcmV0dXJuIEVCQURG
Owo+ICsJaWYgKCFmcC0+Zl9kZW50cnkpCj4gKwkJcmV0dXJuIEVCQURGOwo+ICAgCj4gLSAgICBz
dGQ6OnN0cmluZyBwYXRobmFtZSA9IGZwLT5mX2RlbnRyeS0+ZF9wYXRoOwo+IC0gICAgYXV0byBl
cnJvciA9IHN5c191dGltZW5zYXQoQVRfRkRDV0QsIHBhdGhuYW1lLmNfc3RyKCksIHRpbWVzLCAw
KTsKPiAtICAgIHJldHVybiBlcnJvcjsKPiArCXN0ZDo6c3RyaW5nIHBhdGhuYW1lID0gZnAtPmZf
ZGVudHJ5LT5kX3BhdGg7Cj4gKwlhdXRvIGVycm9yID0gc3lzX3V0aW1lbnNhdChBVF9GRENXRCwg
cGF0aG5hbWUuY19zdHIoKSwgdGltZXMsIDApOwo+ICsJcmV0dXJuIGVycm9yOwo+ICAgfQo+ICAg
Cj4gICBpbnQKPiAgIHN5c19mYWxsb2NhdGUoc3RydWN0IGZpbGUgKmZwLCBpbnQgbW9kZSwgbG9m
Zl90IG9mZnNldCwgbG9mZl90IGxlbikKPiAgIHsKPiAtICAgIGludCBlcnJvcjsKPiAtICAgIHN0
cnVjdCB2bm9kZSAqdnA7Cj4gLQo+IC0gICAgRFBSSU5URihWRlNEQl9TWVNDQUxMLCAoInN5c19m
YWxsb2NhdGU6IGZwPSV4IiwgZnApKTsKPiAtCj4gLSAgICBpZiAoIWZwLT5mX2RlbnRyeSB8fCAh
KGZwLT5mX2ZsYWdzICYgRldSSVRFKSkgewo+IC0gICAgICAgIHJldHVybiBFQkFERjsKPiAtICAg
IH0KPiAtCj4gLSAgICBpZiAob2Zmc2V0IDwgMCB8fCBsZW4gPD0gMCkgewo+IC0gICAgICAgIHJl
dHVybiBFSU5WQUw7Cj4gLSAgICB9Cj4gLQo+IC0gICAgLy8gU3RyYW5nZSwgYnV0IHRoYXQncyB3
aGF0IExpbnV4IHJldHVybnMuCj4gLSAgICBpZiAoKG1vZGUgJiBGQUxMT0NfRkxfUFVOQ0hfSE9M
RSkgJiYgIShtb2RlICYgRkFMTE9DX0ZMX0tFRVBfU0laRSkpIHsKPiAtICAgICAgICByZXR1cm4g
RU5PVFNVUDsKPiAtICAgIH0KPiAtCj4gLSAgICB2cCA9IGZwLT5mX2RlbnRyeS0+ZF92bm9kZTsK
PiAtICAgIHZuX2xvY2sodnApOwo+IC0KPiAtICAgIC8vIE5PVEU6IEl0J3Mgbm90IGRldGVjdGVk
IGhlcmUgd2hldGhlciBvciBub3QgdGhlIGRldmljZSB1bmRlcmx5aW5nCj4gLSAgICAvLyB0aGUg
ZnMgaXMgYSBibG9jayBkZXZpY2UuIEl0J3MgdXAgdG8gdGhlIGZzIGl0c2VsZiB0ZWxsIHVzIHdo
ZXRoZXIKPiAtICAgIC8vIG9yIG5vdCBmYWxsb2NhdGUgaXMgc3VwcG9ydGVkLiBTZWUgYmVsb3c6
Cj4gLSAgICBpZiAodnAtPnZfdHlwZSAhPSBWUkVHICYmIHZwLT52X3R5cGUgIT0gVkRJUikgewo+
IC0gICAgICAgIGVycm9yID0gRU5PREVWOwo+IC0gICAgICAgIGdvdG8gcmV0Owo+IC0gICAgfQo+
IC0KPiAtICAgIC8vIEVPUE5PVFNVUFAgaGVyZSBtZWFucyB0aGF0IHRoZSB1bmRlcmx5aW5nIGZp
bGUgc3lzdGVtCj4gLSAgICAvLyByZWZlcnJlZCBieSB2cCBkb2Vzbid0IHN1cHBvcnQgZmFsbG9j
YXRlLgo+IC0gICAgaWYgKCF2cC0+dl9vcC0+dm9wX2ZhbGxvY2F0ZSkgewo+IC0gICAgICAgIGVy
cm9yID0gRU9QTk9UU1VQUDsKPiAtICAgICAgICBnb3RvIHJldDsKPiAtICAgIH0KPiAtCj4gLSAg
ICBlcnJvciA9IFZPUF9GQUxMT0NBVEUodnAsIG1vZGUsIG9mZnNldCwgbGVuKTsKPiArCWludCBl
cnJvcjsKPiArCXN0cnVjdCB2bm9kZSAqdnA7Cj4gKwo+ICsJRFBSSU5URihWRlNEQl9TWVNDQUxM
LCAoInN5c19mYWxsb2NhdGU6IGZwPSV4IiwgZnApKTsKPiArCj4gKwlpZiAoIWZwLT5mX2RlbnRy
eSB8fCAhKGZwLT5mX2ZsYWdzICYgRldSSVRFKSkgewo+ICsJCXJldHVybiBFQkFERjsKPiArCX0K
PiArCj4gKwlpZiAob2Zmc2V0IDwgMCB8fCBsZW4gPD0gMCkgewo+ICsJCXJldHVybiBFSU5WQUw7
Cj4gKwl9Cj4gKwo+ICsJLy8gU3RyYW5nZSwgYnV0IHRoYXQncyB3aGF0IExpbnV4IHJldHVybnMu
Cj4gKwlpZiAoKG1vZGUgJiBGQUxMT0NfRkxfUFVOQ0hfSE9MRSkgJiYgIShtb2RlICYgRkFMTE9D
X0ZMX0tFRVBfU0laRSkpIHsKPiArCQlyZXR1cm4gRU5PVFNVUDsKPiArCX0KPiArCj4gKwl2cCA9
IGZwLT5mX2RlbnRyeS0+ZF92bm9kZTsKPiArCXZuX2xvY2sodnApOwo+ICsKPiArCS8vIE5PVEU6
IEl0J3Mgbm90IGRldGVjdGVkIGhlcmUgd2hldGhlciBvciBub3QgdGhlIGRldmljZSB1bmRlcmx5
aW5nCj4gKwkvLyB0aGUgZnMgaXMgYSBibG9jayBkZXZpY2UuIEl0J3MgdXAgdG8gdGhlIGZzIGl0
c2VsZiB0ZWxsIHVzIHdoZXRoZXIKPiArCS8vIG9yIG5vdCBmYWxsb2NhdGUgaXMgc3VwcG9ydGVk
LiBTZWUgYmVsb3c6Cj4gKwlpZiAodnAtPnZfdHlwZSAhPSBWUkVHICYmIHZwLT52X3R5cGUgIT0g
VkRJUikgewo+ICsJCWVycm9yID0gRU5PREVWOwo+ICsJCWdvdG8gcmV0Owo+ICsJfQo+ICsKPiAr
CS8vIEVPUE5PVFNVUFAgaGVyZSBtZWFucyB0aGF0IHRoZSB1bmRlcmx5aW5nIGZpbGUgc3lzdGVt
Cj4gKwkvLyByZWZlcnJlZCBieSB2cCBkb2Vzbid0IHN1cHBvcnQgZmFsbG9jYXRlLgo+ICsJaWYg
KCF2cC0+dl9vcC0+dm9wX2ZhbGxvY2F0ZSkgewo+ICsJCWVycm9yID0gRU9QTk9UU1VQUDsKPiAr
CQlnb3RvIHJldDsKPiArCX0KPiArCj4gKwllcnJvciA9IFZPUF9GQUxMT0NBVEUodnAsIG1vZGUs
IG9mZnNldCwgbGVuKTsKPiAgIHJldDoKPiAtICAgIHZuX3VubG9jayh2cCk7Cj4gLSAgICByZXR1
cm4gZXJyb3I7Cj4gKwl2bl91bmxvY2sodnApOwo+ICsJcmV0dXJuIGVycm9yOwo+ICAgfQo+ICAg
Cj4gICBpbnQKPiAgIHN5c19jaG1vZChjb25zdCBjaGFyICpwYXRoLCBtb2RlX3QgbW9kZSkKPiAg
IHsKPiAtICAgIGludCBlcnJvcjsKPiAtICAgIHN0cnVjdCBkZW50cnkgKmRwOwo+IC0gICAgRFBS
SU5URihWRlNEQl9TWVNDQUxMLCAoInN5c19jaG1vZDogcGF0aD0lc1xuIiwgcGF0aCkpOwo+IC0g
ICAgZXJyb3IgPSBuYW1laShwYXRoLCAmZHApOwo+IC0gICAgaWYgKGVycm9yKQo+IC0gICAgICAg
IHJldHVybiBlcnJvcjsKPiAtICAgIGlmIChkcC0+ZF9tb3VudC0+bV9mbGFncyAmIE1OVF9SRE9O
TFkpIHsKPiAtICAgICAgICBlcnJvciA9IEVST0ZTOwo+IC0gICAgfSBlbHNlIHsKPiAtICAgICAg
ICBlcnJvciA9IHZuX3NldG1vZGUoZHAtPmRfdm5vZGUsIG1vZGUpOwo+IC0gICAgfQo+IC0gICAg
ZHJlbGUoZHApOwo+IC0gICAgcmV0dXJuIGVycm9yOwo+ICsJaW50IGVycm9yOwo+ICsJc3RydWN0
IGRlbnRyeSAqZHA7Cj4gKwlEUFJJTlRGKFZGU0RCX1NZU0NBTEwsICgic3lzX2NobW9kOiBwYXRo
PSVzXG4iLCBwYXRoKSk7Cj4gKwllcnJvciA9IG5hbWVpKHBhdGgsICZkcCk7Cj4gKwlpZiAoZXJy
b3IpCj4gKwkJcmV0dXJuIGVycm9yOwo+ICsJaWYgKGRwLT5kX21vdW50LT5tX2ZsYWdzICYgTU5U
X1JET05MWSkgewo+ICsJCWVycm9yID0gRVJPRlM7Cj4gKwl9IGVsc2Ugewo+ICsJCWVycm9yID0g
dm5fc2V0bW9kZShkcC0+ZF92bm9kZSwgbW9kZSk7Cj4gKwl9Cj4gKwlkcmVsZShkcCk7Cj4gKwly
ZXR1cm4gZXJyb3I7Cj4gICB9Cj4gICAKPiAgIGludAo+ICAgc3lzX2ZjaG1vZChpbnQgZmQsIG1v
ZGVfdCBtb2RlKQo+ICAgewo+IC0gICAgZmlsZXJlZiBmKGZpbGVyZWZfZnJvbV9mZChmZCkpOwo+
IC0gICAgaWYgKCFmKQo+IC0gICAgICAgIHJldHVybiBFQkFERjsKPiAtICAgIC8vIFBvc2l4IGlz
IGFtYml2YWxlbnQgb24gd2hhdCBmY2htb2QoKSBzaG91bGQgZG8gb24gYW4gZmQgdGhhdCBkb2Vz
IG5vdAo+IC0gICAgLy8gcmVmZXIgdG8gYSByZWFsIGZpbGUuIEl0IHN1Z2dlc3RzIGFuIGltcGxl
bWVudGF0aW9uIG1heSAoYnV0IG5vdCBtdXN0KQo+IC0gICAgLy8gZmFpbCBFSU5WQUwgb24gYSBw
aXBlLCBjYW4gYmVoYXZlIGluIGFuICJ1bnNwZWNpZmllZCIgbWFubmVyIG9uIGEKPiAtICAgIC8v
IHNvY2tldCwgYW5kIGZvciBhIFNUUkVBTSwgaXQgbXVzdCBzdWNjZWVkIGFuZCBkbyBub3RoaW5n
LiBMaW51eCBzZWVtcwo+IC0gICAgLy8gdG8ganVzdCBkbyB0aGUgbGFzdCB0aGluZyAoZG8gbm90
aGluZyBhbmQgc3VjY2VlZCkuCj4gLSAgICBpZiAoIWYtPmZfZGVudHJ5KSB7Cj4gLSAgICAgICAg
cmV0dXJuIDA7Cj4gLSAgICB9Cj4gLSAgICBpZiAoZi0+Zl9kZW50cnktPmRfbW91bnQtPm1fZmxh
Z3MgJiBNTlRfUkRPTkxZKSB7Cj4gLSAgICAgICAgcmV0dXJuIEVST0ZTOwo+IC0gICAgfSBlbHNl
IHsKPiAtICAgICAgICByZXR1cm4gdm5fc2V0bW9kZShmLT5mX2RlbnRyeS0+ZF92bm9kZSwgbW9k
ZSk7Cj4gLSAgICB9Cj4gKwlmaWxlcmVmIGYoZmlsZXJlZl9mcm9tX2ZkKGZkKSk7Cj4gKwlpZiAo
IWYpCj4gKwkJcmV0dXJuIEVCQURGOwo+ICsJLy8gUG9zaXggaXMgYW1iaXZhbGVudCBvbiB3aGF0
IGZjaG1vZCgpIHNob3VsZCBkbyBvbiBhbiBmZCB0aGF0IGRvZXMgbm90Cj4gKwkvLyByZWZlciB0
byBhIHJlYWwgZmlsZS4gSXQgc3VnZ2VzdHMgYW4gaW1wbGVtZW50YXRpb24gbWF5IChidXQgbm90
IG11c3QpCj4gKwkvLyBmYWlsIEVJTlZBTCBvbiBhIHBpcGUsIGNhbiBiZWhhdmUgaW4gYW4gInVu
c3BlY2lmaWVkIiBtYW5uZXIgb24gYQo+ICsJLy8gc29ja2V0LCBhbmQgZm9yIGEgU1RSRUFNLCBp
dCBtdXN0IHN1Y2NlZWQgYW5kIGRvIG5vdGhpbmcuIExpbnV4IHNlZW1zCj4gKwkvLyB0byBqdXN0
IGRvIHRoZSBsYXN0IHRoaW5nIChkbyBub3RoaW5nIGFuZCBzdWNjZWVkKS4KPiArCWlmICghZi0+
Zl9kZW50cnkpIHsKPiArCQlyZXR1cm4gMDsKPiArCX0KPiArCWlmIChmLT5mX2RlbnRyeS0+ZF9t
b3VudC0+bV9mbGFncyAmIE1OVF9SRE9OTFkpIHsKPiArCQlyZXR1cm4gRVJPRlM7Cj4gKwl9IGVs
c2Ugewo+ICsJCXJldHVybiB2bl9zZXRtb2RlKGYtPmZfZGVudHJ5LT5kX3Zub2RlLCBtb2RlKTsK
PiArCX0KPiAgIH0KPiBkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvdGFzay5jIGIvbGliL3Zmc2Nv
cmUvdGFzay5jCj4gaW5kZXggN2EzNTUwMzQuLmIyYTAyOGM2IDEwMDY0NAo+IC0tLSBhL2xpYi92
ZnNjb3JlL3Rhc2suYwo+ICsrKyBiL2xpYi92ZnNjb3JlL3Rhc2suYwo+IEBAIC00OCw3ICs0OCw3
IEBAIHRhc2tfYWxsb2Moc3RydWN0IHRhc2sgKipwdCkKPiAgIHsKPiAgIAlzdHJ1Y3QgdGFzayAq
dDsKPiAgIAo+IC0gICAgLy8gRklYTUU6IHdoZXJlIGRvIHdlIGZyZWUgdGFzayA/Cj4gKwkvLyBG
SVhNRTogd2hlcmUgZG8gd2UgZnJlZSB0YXNrID8KPiAgIAlpZiAoISh0ID0gbmV3IHRhc2spKQo+
ICAgCQlyZXR1cm4gRU5PTUVNOwo+ICAgCW1lbXNldCh0LCAwLCBzaXplb2Yoc3RydWN0IHRhc2sp
KTsKPiBAQCAtMTYwLDggKzE2MCw4IEBAIHRhc2tfY29udihzdHJ1Y3QgdGFzayAqdCwgY29uc3Qg
Y2hhciAqY3BhdGgsIGludCBhY2MsIGNoYXIgKmZ1bGwpCj4gICAgKi8KPiAgIGludCB2ZnNfZG5h
bWVfY29weShjaGFyICpkZXN0LCBjb25zdCBjaGFyICpzcmMsIHNpemVfdCBzaXplKQo+ICAgewo+
IC0gICAgaWYgKHN0cmxjcHkoZGVzdCwgc3JjLCBzaXplKSA+PSBzaXplKSB7Cj4gLSAgICAgICAg
cmV0dXJuIC0xOwo+IC0gICAgfQo+IC0gICAgcmV0dXJuIDA7Cj4gKwlpZiAoc3RybGNweShkZXN0
LCBzcmMsIHNpemUpID49IHNpemUpIHsKPiArCQlyZXR1cm4gLTE7Cj4gKwl9Cj4gKwlyZXR1cm4g
MDsKPiAgIH0KPiBkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvdmZzLmggYi9saWIvdmZzY29yZS92
ZnMuaAo+IGluZGV4IGQ4NmVmOTU3Li4yYjgyNTUyMSAxMDA2NDQKPiAtLS0gYS9saWIvdmZzY29y
ZS92ZnMuaAo+ICsrKyBiL2xpYi92ZnNjb3JlL3Zmcy5oCldBUk5JTkc6IHBsZWFzZSwgbm8gc3Bh
Y2UgYmVmb3JlIHRhYnMgCiAKCiM4MzogRklMRTogbGliL3Zmc2NvcmUvdmZzLmg6ODM6IAogCgor
XkljaGFyIF5JICAgIHRfY3dkW1BBVEhfTUFYXTteSS8qIGN1cnJlbnQgd29ya2luZyBkaXJlY3Rv
cnkgKi8kCgoKPiBAQCAtMTIwLDcgKzEyMCw3IEBAIGludAkgc3lzX3RydW5jYXRlKGNoYXIgKnBh
dGgsIG9mZl90IGxlbmd0aCk7Cj4gICBpbnQJIHN5c19yZWFkbGluayhjaGFyICpwYXRoLCBjaGFy
ICpidWYsIHNpemVfdCBidWZzaXplLCBzc2l6ZV90ICpzaXplKTsKPiAgIGludCAgc3lzX3V0aW1l
cyhjaGFyICpwYXRoLCBjb25zdCBzdHJ1Y3QgdGltZXZhbCB0aW1lc1syXSwgaW50IGZsYWdzKTsK
PiAgIGludCAgc3lzX3V0aW1lbnNhdChpbnQgZGlyZmQsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLAo+
IC0gICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHRpbWVzcGVjIHRpbWVzWzJdLCBpbnQg
ZmxhZ3MpOwo+ICsJCQkJICAgY29uc3Qgc3RydWN0IHRpbWVzcGVjIHRpbWVzWzJdLCBpbnQgZmxh
Z3MpOwo+ICAgaW50ICBzeXNfZnV0aW1lbnMoaW50IGZkLCBjb25zdCBzdHJ1Y3QgdGltZXNwZWMg
dGltZXNbMl0pOwo+ICAgaW50ICBzeXNfZmFsbG9jYXRlKHN0cnVjdCBmaWxlICpmcCwgaW50IG1v
ZGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4pOwo+ICAgCj4gZGlmZiAtLWdpdCBhL2xpYi92
ZnNjb3JlL3Zub2RlLmMgYi9saWIvdmZzY29yZS92bm9kZS5jCj4gaW5kZXggYTI5MjM0NGYuLjEx
OWVkODcwIDEwMDY0NAo+IC0tLSBhL2xpYi92ZnNjb3JlL3Zub2RlLmMKPiArKysgYi9saWIvdmZz
Y29yZS92bm9kZS5jCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgdXNlIHRhYnMgd2hlcmUgcG9z
c2libGUgCiAKCiM0NTg6IEZJTEU6IGxpYi92ZnNjb3JlL3Zub2RlLmM6NDU4OiAKIAoKK15JICAg
ICAgICBMSVNUX0ZPUkVBQ0godnAsICZ2bm9kZV90YWJsZVtpXSwgdl9saW5rKSB7JAoKCj4gQEAg
LTM3MSwyMiArMzcxLDIyIEBAIHZuX3N0YXQoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IHN0YXQg
KnN0KQo+ICAgaW50Cj4gICB2bl9zZXR0aW1lcyhzdHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3QgdGlt
ZXNwZWMgdGltZXNbMl0pCj4gICB7Cj4gLSAgICBzdHJ1Y3QgdmF0dHIgdmF0dHI7Cj4gLSAgICBz
dHJ1Y3QgdmF0dHIgKnZhcDsKPiAtICAgIGludCBlcnJvcjsKPiAtCj4gLSAgICB2YXAgPSAmdmF0
dHI7Cj4gLSAgICBtZW1zZXQodmFwLCAwLCBzaXplb2Yoc3RydWN0IHZhdHRyKSk7Cj4gLQo+IC0g
ICAgdmFwLT52YV9hdGltZSA9IHRpbWVzWzBdOwo+IC0gICAgdmFwLT52YV9tdGltZSA9IHRpbWVz
WzFdOwo+IC0gICAgdmFwLT52YV9tYXNrID0gKCh0aW1lc1swXS50dl9uc2VjID09IFVUSU1FX09N
SVQpID8gMCA6IEFUX0FUSU1FKQo+IC0gICAgICAgICAgICAgICAgICAgIHwgKCh0aW1lc1sxXS50
dl9uc2VjID09IFVUSU1FX09NSVQpID8gMCA6IEFUX01USU1FKTsKPiAtICAgIHZuX2xvY2sodnAp
Owo+IC0gICAgZXJyb3IgPSBWT1BfU0VUQVRUUih2cCwgdmFwKTsKPiAtICAgIHZuX3VubG9jayh2
cCk7Cj4gLQo+IC0gICAgcmV0dXJuIGVycm9yOwo+ICsJc3RydWN0IHZhdHRyIHZhdHRyOwo+ICsJ
c3RydWN0IHZhdHRyICp2YXA7Cj4gKwlpbnQgZXJyb3I7Cj4gKwo+ICsJdmFwID0gJnZhdHRyOwo+
ICsJbWVtc2V0KHZhcCwgMCwgc2l6ZW9mKHN0cnVjdCB2YXR0cikpOwo+ICsKPiArCXZhcC0+dmFf
YXRpbWUgPSB0aW1lc1swXTsKPiArCXZhcC0+dmFfbXRpbWUgPSB0aW1lc1sxXTsKPiArCXZhcC0+
dmFfbWFzayA9ICgodGltZXNbMF0udHZfbnNlYyA9PSBVVElNRV9PTUlUKSA/IDAgOiBBVF9BVElN
RSkKPiArCQkJCQl8ICgodGltZXNbMV0udHZfbnNlYyA9PSBVVElNRV9PTUlUKSA/IDAgOiBBVF9N
VElNRSk7Cj4gKwl2bl9sb2NrKHZwKTsKPiArCWVycm9yID0gVk9QX1NFVEFUVFIodnAsIHZhcCk7
Cj4gKwl2bl91bmxvY2sodnApOwo+ICsKPiArCXJldHVybiBlcnJvcjsKPiAgIH0KPiAgIAo+ICAg
LyoKPiBAQCAtMzk1LDE1ICszOTUsMTUgQEAgdm5fc2V0dGltZXMoc3RydWN0IHZub2RlICp2cCwg
c3RydWN0IHRpbWVzcGVjIHRpbWVzWzJdKQo+ICAgaW50Cj4gICB2bl9zZXRtb2RlKHN0cnVjdCB2
bm9kZSAqdnAsIG1vZGVfdCBuZXdfbW9kZSkKPiAgIHsKPiAtICAgIHN0cnVjdCB2YXR0ciB2YXR0
cjsKPiAtICAgIG1lbXNldCgmdmF0dHIsIDAsIHNpemVvZih2YXR0cikpOwo+IC0gICAgdmF0dHIu
dmFfbW9kZSA9IG5ld19tb2RlOwo+IC0gICAgdmF0dHIudmFfbWFzayA9IEFUX01PREU7Cj4gLSAg
ICB2bl9sb2NrKHZwKTsKPiAtICAgIHZwLT52X21vZGUgPSBuZXdfbW9kZTsKPiAtICAgIGludCBl
cnJvciA9IFZPUF9TRVRBVFRSKHZwLCAmdmF0dHIpOwo+IC0gICAgdm5fdW5sb2NrKHZwKTsKPiAt
ICAgIHJldHVybiBlcnJvcjsKPiArCXN0cnVjdCB2YXR0ciB2YXR0cjsKPiArCW1lbXNldCgmdmF0
dHIsIDAsIHNpemVvZih2YXR0cikpOwo+ICsJdmF0dHIudmFfbW9kZSA9IG5ld19tb2RlOwo+ICsJ
dmF0dHIudmFfbWFzayA9IEFUX01PREU7Cj4gKwl2bl9sb2NrKHZwKTsKPiArCXZwLT52X21vZGUg
PSBuZXdfbW9kZTsKPiArCWludCBlcnJvciA9IFZPUF9TRVRBVFRSKHZwLCAmdmF0dHIpOwo+ICsJ
dm5fdW5sb2NrKHZwKTsKPiArCXJldHVybiBlcnJvcjsKPiAgIH0KPiAgIAo+ICAgLyoKPiAKCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZl
bCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8v
bGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Feb 06 17:29:29 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 06 Feb 2019 17:29:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grR0q-0008VP-SM; Wed, 06 Feb 2019 17:29:28 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=tAI7=QN=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1grR0o-0008VK-VX
 for minios-devel@lists.xen.org; Wed, 06 Feb 2019 17:29:27 +0000
X-Inumbo-ID: bc5994ca-2a34-11e9-bd3a-3fd77ce57edf
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id bc5994ca-2a34-11e9-bd3a-3fd77ce57edf;
 Wed, 06 Feb 2019 17:29:20 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 940C1104D92;
 Wed,  6 Feb 2019 18:29:19 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id ldArl7DaB2QJ; Wed,  6 Feb 2019 18:29:19 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 6CD94104D8A
 for <minios-devel@lists.xen.org>; Wed,  6 Feb 2019 18:29:17 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 6 Feb 2019 18:29:17
 +0100
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, <minios-devel@lists.xen.org>,
 <Simon.kuenzer@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
 <20190204143739.29249-7-yuri.volchkov@neclab.eu>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <362499e6-7d20-0855-2af0-b69290cc9250@neclab.eu>
Date: Wed, 6 Feb 2019 18:29:16 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190204143739.29249-7-yuri.volchkov@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 06/23] lib/vfscore: update
 license header for imported files
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gWXVyaSwKClRoaXMgcGF0Y2ggc2VlbXMgZmluZS4KCgpSZXZpZXdlZC1ieTogU2hhcmFu
IFNhbnRoYW5hbSA8c2hhcmFuLnNhbnRoYW5hbUBuZWNsYWIuZXU+CgpUaGFua3MgJiBSZWdhcmRz
ClNoYXJhbgoKT24gMi80LzE5IDM6MzYgUE0sIFl1cmkgVm9sY2hrb3Ygd3JvdGU6Cj4gU2lnbmVk
LW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Cj4gLS0tCj4g
ICBsaWIvbm9saWJjL2luY2x1ZGUvc3lzL21vdW50LmggICAgICAgfCAzNSArKysrKysrKysrKysr
KysrKysrKysrKysrKysrCj4gICBsaWIvbm9saWJjL2luY2x1ZGUvc3lzL3Vpby5oICAgICAgICAg
fCAzNSArKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gICBsaWIvdmZzY29yZS9kZW50cnku
YyAgICAgICAgICAgICAgICAgfCAxMCArKystLS0tLQo+ICAgbGliL3Zmc2NvcmUvZm9wcy5jICAg
ICAgICAgICAgICAgICAgIHwgMzMgKysrKysrKysrKysrKysrKysrKysrKystLS0KPiAgIGxpYi92
ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9kZW50cnkuaCB8IDMyICsrKysrKysrKysrKysrKysrKysr
KysrLS0KPiAgIGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9wcmV4LmggICB8IDMyICsrKysr
KysrKysrKysrKysrKysrKysrLS0KPiAgIGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9k
ZS5oICB8ICAzICsrKwo+ICAgbGliL3Zmc2NvcmUvbG9va3VwLmMgICAgICAgICAgICAgICAgIHwg
IDMgKysrCj4gICBsaWIvdmZzY29yZS9tYWluLmMgICAgICAgICAgICAgICAgICAgfCAxMCArKyst
LS0tLQo+ICAgbGliL3Zmc2NvcmUvbW91bnQuYyAgICAgICAgICAgICAgICAgIHwgIDMgKysrCj4g
ICBsaWIvdmZzY29yZS9zdWJyX3Vpby5jICAgICAgICAgICAgICAgfCAgOSArKysrKy0tCj4gICBs
aWIvdmZzY29yZS9zeXNjYWxscy5jICAgICAgICAgICAgICAgfCAxMCArKystLS0tLQo+ICAgbGli
L3Zmc2NvcmUvdGFzay5jICAgICAgICAgICAgICAgICAgIHwgIDggKysrKystLQo+ICAgbGliL3Zm
c2NvcmUvdmZzLmggICAgICAgICAgICAgICAgICAgIHwgIDMgKysrCj4gICBsaWIvdmZzY29yZS92
bm9kZS5jICAgICAgICAgICAgICAgICAgfCAgMyArKysKPiAgIDE1IGZpbGVzIGNoYW5nZWQsIDE5
NyBpbnNlcnRpb25zKCspLCAzMiBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvbGliL25v
bGliYy9pbmNsdWRlL3N5cy9tb3VudC5oIGIvbGliL25vbGliYy9pbmNsdWRlL3N5cy9tb3VudC5o
Cj4gaW5kZXggYWY4NTVkNjkuLmQ3YTk1YjM4IDEwMDY0NAo+IC0tLSBhL2xpYi9ub2xpYmMvaW5j
bHVkZS9zeXMvbW91bnQuaAo+ICsrKyBiL2xpYi9ub2xpYmMvaW5jbHVkZS9zeXMvbW91bnQuaAo+
IEBAIC0xLDMgKzEsMzggQEAKPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNs
YXVzZSAqLwo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQ2xvdWRpdXMgU3lzdGVtcywg
THRkLgo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTksIE5FQyBFdXJvcGUgTHRkLiwgTkVDIENvcnBv
cmF0aW9uLgo+ICsgKgo+ICsgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgo+ICsgKgo+ICsgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKPiArICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCj4gKyAqIGFyZSBtZXQ6Cj4gKyAqCj4gKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KPiArICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQo+ICsg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgo+ICsgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmln
aHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzCj4gKyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCj4gKyAq
ICAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCj4gKyAqCj4gKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgo+ICsgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Cj4gKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCj4gKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKPiArICogTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgo+ICsgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgo+ICsgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKPiArICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KPiArICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKPiArICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUK
PiArICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCj4gKyAqCj4gKyAqIFRISVMgSEVBREVS
IE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCj4gKyAqLwo+ICsK
PiAgICNpZm5kZWYgX1NZU19NT1VOVF9ICj4gICAjZGVmaW5lIF9TWVNfTU9VTlRfSAo+ICAgCj4g
ZGlmZiAtLWdpdCBhL2xpYi9ub2xpYmMvaW5jbHVkZS9zeXMvdWlvLmggYi9saWIvbm9saWJjL2lu
Y2x1ZGUvc3lzL3Vpby5oCj4gaW5kZXggMTgyNjYwMzguLmNkZmJlYzliIDEwMDY0NAo+IC0tLSBh
L2xpYi9ub2xpYmMvaW5jbHVkZS9zeXMvdWlvLmgKPiArKysgYi9saWIvbm9saWJjL2luY2x1ZGUv
c3lzL3Vpby5oCj4gQEAgLTEsMyArMSwzOCBAQAo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmll
cjogQlNELTMtQ2xhdXNlICovCj4gKy8qCj4gKyAqIENvcHlyaWdodCAoQykgMjAxMyBDbG91ZGl1
cyBTeXN0ZW1zLCBMdGQuCj4gKyAqIENvcHlyaWdodCAoYykgMjAxOSwgTkVDIEV1cm9wZSBMdGQu
LCBORUMgQ29ycG9yYXRpb24uCj4gKyAqCj4gKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4gKyAq
Cj4gKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAo+ICsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKPiArICogYXJlIG1ldDoKPiArICoKPiAr
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgo+ICsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCj4gKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCj4gKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2Yg
dGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKPiArICogICAgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KPiArICogICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KPiArICoKPiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCj4gKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKPiArICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKPiArICogQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBC
RQo+ICsgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCj4gKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCj4gKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
Uwo+ICsgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgo+ICsgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQo+ICsgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRQo+ICsgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KPiArICoKPiArICog
VEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4K
PiArICovCj4gKwo+ICAgI2lmbmRlZiBfU1lTX1VJT19ICj4gICAjZGVmaW5lIF9TWVNfVUlPX0gK
PiAgIAo+IGRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9kZW50cnkuYyBiL2xpYi92ZnNjb3JlL2Rl
bnRyeS5jCj4gaW5kZXggYzJmMjA5YjIuLmVmYzEwYmQ2IDEwMDY0NAo+IC0tLSBhL2xpYi92ZnNj
b3JlL2RlbnRyeS5jCj4gKysrIGIvbGliL3Zmc2NvcmUvZGVudHJ5LmMKPiBAQCAtMSwxMiArMSw4
IEBACj4gLS8qCj4gLSAqIENvcHlyaWdodCAoQykgMjAxNCBDbG91ZGl1cyBTeXN0ZW1zLCBMdGQu
Cj4gLSAqCj4gLSAqIFRoaXMgd29yayBpcyBvcGVuIHNvdXJjZSBzb2Z0d2FyZSwgbGljZW5zZWQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZQo+IC0gKiBCU0QgbGljZW5zZSBhcyBkZXNjcmliZWQgaW4g
dGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgdG9wLWxldmVsIGRpcmVjdG9yeS4KPiAtICovCj4gLQo+
ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCj4gICAvKgo+ICAg
ICogQ29weXJpZ2h0IChjKSAyMDA1LTIwMDcsIEtvaHN1a2UgT2h0YW5pCj4gKyAqIENvcHlyaWdo
dCAoQykgMjAxNCBDbG91ZGl1cyBTeXN0ZW1zLCBMdGQuCj4gKyAqIENvcHlyaWdodCAoYykgMjAx
OSwgTkVDIEV1cm9wZSBMdGQuLCBORUMgQ29ycG9yYXRpb24uCj4gICAgKiBBbGwgcmlnaHRzIHJl
c2VydmVkLgo+ICAgICoKPiAgICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAo+IGRpZmYgLS1naXQgYS9saWIvdmZzY29y
ZS9mb3BzLmMgYi9saWIvdmZzY29yZS9mb3BzLmMKPiBpbmRleCBhYjFmOGNiYi4uYTk0Y2E0NTIg
MTAwNjQ0Cj4gLS0tIGEvbGliL3Zmc2NvcmUvZm9wcy5jCj4gKysrIGIvbGliL3Zmc2NvcmUvZm9w
cy5jCj4gQEAgLTEsMTEgKzEsMzggQEAKPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJT
RC0zLUNsYXVzZSAqLwo+ICAgLyoKPiAgICAqIENvcHlyaWdodCAoQykgMjAxMyBDbG91ZGl1cyBT
eXN0ZW1zLCBMdGQuCj4gKyAqIENvcHlyaWdodCAoYykgMjAxOSwgTkVDIEV1cm9wZSBMdGQuLCBO
RUMgQ29ycG9yYXRpb24uCj4gICAgKgo+IC0gKiBUaGlzIHdvcmsgaXMgb3BlbiBzb3VyY2Ugc29m
dHdhcmUsIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUKPiAtICogQlNEIGxpY2Vuc2Ug
YXMgZGVzY3JpYmVkIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHRvcC1sZXZlbCBkaXJlY3Rv
cnkuCj4gKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4gKyAqCj4gKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAo+ICsg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKPiArICogYXJlIG1ldDoKPiArICoKPiArICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgo+ICsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCj4gKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCj4gKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIg
bm9yIHRoZSBuYW1lcyBvZiBpdHMKPiArICogICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KPiArICogICAgdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KPiArICoK
PiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCj4gKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKPiArICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UKPiArICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRQo+ICsgKiBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCj4g
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCj4gKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwo+ICsgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
Tgo+ICsgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQo+ICsgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQo+ICsgKiBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KPiArICoKPiArICogVEhJUyBIRUFERVIgTUFZIE5PVCBC
RSBFWFRSQUNURUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4KPiAgICAqLwo+ICAgCj4gLQo+ICAg
I2luY2x1ZGUgPGZjbnRsLmg+Cj4gICAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KPiAgICNpbmNsdWRl
IDxvc3YvZmlsZS5oPgo+IGRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUv
ZGVudHJ5LmggYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZGVudHJ5LmgKPiBpbmRleCBm
NTg1MDc4Ni4uMmQyZWFhMWIgMTAwNjQ0Cj4gLS0tIGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNj
b3JlL2RlbnRyeS5oCj4gKysrIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2RlbnRyeS5o
Cj4gQEAgLTEsOCArMSwzNiBAQAo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMt
Q2xhdXNlICovCj4gICAvKgo+ICAgICogQ29weXJpZ2h0IChDKSAyMDE0IENsb3VkaXVzIFN5c3Rl
bXMsIEx0ZC4KPiArICogQ29weXJpZ2h0IChjKSAyMDE5LCBORUMgRXVyb3BlIEx0ZC4sIE5FQyBD
b3Jwb3JhdGlvbi4KPiAgICAqCj4gLSAqIFRoaXMgd29yayBpcyBvcGVuIHNvdXJjZSBzb2Z0d2Fy
ZSwgbGljZW5zZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZQo+IC0gKiBCU0QgbGljZW5zZSBhcyBk
ZXNjcmliZWQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgdG9wLWxldmVsIGRpcmVjdG9yeS4K
PiArICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiArICoKPiArICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cj4gKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwo+ICsgKiBhcmUgbWV0Ogo+ICsgKgo+ICsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Cj4gKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKPiArICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KPiArICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3Ig
dGhlIG5hbWVzIG9mIGl0cwo+ICsgKiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQo+ICsgKiAgICB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgo+ICsgKgo+ICsg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTICJBUyBJUyIKPiArICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQo+ICsgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRQo+ICsgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFCj4gKyAqIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKPiArICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKPiArICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCj4gKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCj4g
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCj4gKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCj4gKyAqIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgo+ICsgKgo+ICsgKiBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVY
VFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgo+ICAgICovCj4gICAKPiAgICNpZm5kZWYg
X09TVl9ERU5UUllfSAo+IGRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUv
cHJleC5oIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3ByZXguaAo+IGluZGV4IDQzNjUw
MzQwLi43YjA1MzMxOSAxMDA2NDQKPiAtLS0gYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUv
cHJleC5oCj4gKysrIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3ByZXguaAo+IEBAIC0x
LDggKzEsMzYgQEAKPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAq
Lwo+ICAgLyoKPiAgICAqIENvcHlyaWdodCAoQykgMjAxMyBDbG91ZGl1cyBTeXN0ZW1zLCBMdGQu
Cj4gKyAqIENvcHlyaWdodCAoYykgMjAxOSwgTkVDIEV1cm9wZSBMdGQuLCBORUMgQ29ycG9yYXRp
b24uCj4gICAgKgo+IC0gKiBUaGlzIHdvcmsgaXMgb3BlbiBzb3VyY2Ugc29mdHdhcmUsIGxpY2Vu
c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUKPiAtICogQlNEIGxpY2Vuc2UgYXMgZGVzY3JpYmVk
IGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHRvcC1sZXZlbCBkaXJlY3RvcnkuCj4gKyAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCj4gKyAqCj4gKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAo+ICsgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
PiArICogYXJlIG1ldDoKPiArICoKPiArICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgo+ICsgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCj4gKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCj4gKyAq
IDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1l
cyBvZiBpdHMKPiArICogICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KPiArICogICAgdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KPiArICoKPiArICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUyAiQVMgSVMiCj4gKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKPiArICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UKPiArICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQg
SE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRQo+ICsgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCj4gKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCj4gKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwo+ICsgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgo+ICsgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQo+ICsgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQo+ICsgKiBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KPiArICoKPiArICogVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQg
T1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4KPiAgICAqLwo+ICAgCj4gICAjaWZuZGVmIF9PU1ZfUFJF
WF9ICj4gZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5oIGIv
bGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Zub2RlLmgKPiBpbmRleCBlMzVhYTgzMC4uNDg3
NGYxYjkgMTAwNjQ0Cj4gLS0tIGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Zub2RlLmgK
PiArKysgYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUuaAo+IEBAIC0xLDUgKzEs
OCBAQAo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCj4gICAv
Kgo+ICAgICogQ29weXJpZ2h0IChjKSAyMDA1LTIwMDcsIEtvaHN1a2UgT2h0YW5pCj4gKyAqIENv
cHlyaWdodCAoQykgMjAxNCBDbG91ZGl1cyBTeXN0ZW1zLCBMdGQuCj4gKyAqIENvcHlyaWdodCAo
YykgMjAxOSwgTkVDIEV1cm9wZSBMdGQuLCBORUMgQ29ycG9yYXRpb24uCj4gICAgKiBBbGwgcmln
aHRzIHJlc2VydmVkLgo+ICAgICoKPiAgICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAo+IGRpZmYgLS1naXQgYS9saWIv
dmZzY29yZS9sb29rdXAuYyBiL2xpYi92ZnNjb3JlL2xvb2t1cC5jCj4gaW5kZXggMzAxMzlhODcu
LjBhYTVjYTNiIDEwMDY0NAo+IC0tLSBhL2xpYi92ZnNjb3JlL2xvb2t1cC5jCj4gKysrIGIvbGli
L3Zmc2NvcmUvbG9va3VwLmMKPiBAQCAtMSw1ICsxLDggQEAKPiArLyogU1BEWC1MaWNlbnNlLUlk
ZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLwo+ICAgLyoKPiAgICAqIENvcHlyaWdodCAoYykgMjAw
NS0yMDA3LCBLb2hzdWtlIE9odGFuaQo+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQ2xvdWRpdXMg
U3lzdGVtcywgTHRkLgo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTksIE5FQyBFdXJvcGUgTHRkLiwg
TkVDIENvcnBvcmF0aW9uLgo+ICAgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiAgICAqCj4gICAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKPiBkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvbWFpbi5jIGIvbGliL3Zmc2Nv
cmUvbWFpbi5jCj4gaW5kZXggOGQ5ZGMzM2EuLmUzMDA0NTk3IDEwMDY0NAo+IC0tLSBhL2xpYi92
ZnNjb3JlL21haW4uYwo+ICsrKyBiL2xpYi92ZnNjb3JlL21haW4uYwo+IEBAIC0xLDEyICsxLDgg
QEAKPiAtLyoKPiAtICogQ29weXJpZ2h0IChDKSAyMDEzIENsb3VkaXVzIFN5c3RlbXMsIEx0ZC4K
PiAtICoKPiAtICogVGhpcyB3b3JrIGlzIG9wZW4gc291cmNlIHNvZnR3YXJlLCBsaWNlbnNlZCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlCj4gLSAqIEJTRCBsaWNlbnNlIGFzIGRlc2NyaWJlZCBpbiB0
aGUgTElDRU5TRSBmaWxlIGluIHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5Lgo+IC0gKi8KPiAtCj4g
Ky8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8KPiAgIC8qCj4gICAg
KiBDb3B5cmlnaHQgKGMpIDIwMDUtMjAwNywgS29oc3VrZSBPaHRhbmkKPiArICogQ29weXJpZ2h0
IChDKSAyMDEzIENsb3VkaXVzIFN5c3RlbXMsIEx0ZC4KPiArICogQ29weXJpZ2h0IChjKSAyMDE5
LCBORUMgRXVyb3BlIEx0ZC4sIE5FQyBDb3Jwb3JhdGlvbi4KPiAgICAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCj4gICAgKgo+ICAgICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cj4gZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3Jl
L21vdW50LmMgYi9saWIvdmZzY29yZS9tb3VudC5jCj4gaW5kZXggYjUxYjI3YTQuLjc2ZTJlNzBj
IDEwMDY0NAo+IC0tLSBhL2xpYi92ZnNjb3JlL21vdW50LmMKPiArKysgYi9saWIvdmZzY29yZS9t
b3VudC5jCj4gQEAgLTEsNSArMSw4IEBACj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBC
U0QtMy1DbGF1c2UgKi8KPiAgIC8qCj4gICAgKiBDb3B5cmlnaHQgKGMpIDIwMDUtMjAwNywgS29o
c3VrZSBPaHRhbmkKPiArICogQ29weXJpZ2h0IChDKSAyMDE0IENsb3VkaXVzIFN5c3RlbXMsIEx0
ZC4KPiArICogQ29weXJpZ2h0IChjKSAyMDE5LCBORUMgRXVyb3BlIEx0ZC4sIE5FQyBDb3Jwb3Jh
dGlvbi4KPiAgICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4gICAgKgo+ICAgICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Cj4gZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3N1YnJfdWlvLmMgYi9saWIvdmZzY29yZS9zdWJy
X3Vpby5jCj4gaW5kZXggYmYxMzhiOGUuLjgyNzZkNmQ0IDEwMDY0NAo+IC0tLSBhL2xpYi92ZnNj
b3JlL3N1YnJfdWlvLmMKPiArKysgYi9saWIvdmZzY29yZS9zdWJyX3Vpby5jCj4gQEAgLTEsNyAr
MSwxMiBAQAo+IC0vKi0KPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVz
ZSAqLwo+ICsvKgo+ICAgICogQ29weXJpZ2h0IChjKSAxOTgyLCAxOTg2LCAxOTkxLCAxOTkzCj4g
LSAqCVRoZSBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuICBBbGwgcmln
aHRzIHJlc2VydmVkLgo+ICsgKiAgICAgVGhlIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2Yg
Q2FsaWZvcm5pYS4KPiAgICAqIChjKSBVTklYIFN5c3RlbSBMYWJvcmF0b3JpZXMsIEluYy4KPiAr
ICogQ29weXJpZ2h0IChDKSAyMDE0IENsb3VkaXVzIFN5c3RlbXMsIEx0ZC4KPiArICogQ29weXJp
Z2h0IChjKSAyMDE5LCBORUMgRXVyb3BlIEx0ZC4sIE5FQyBDb3Jwb3JhdGlvbi4KPiArICogQWxs
IHJpZ2h0cyByZXNlcnZlZC4KPiArICoKPiAgICAqIEFsbCBvciBzb21lIHBvcnRpb25zIG9mIHRo
aXMgZmlsZSBhcmUgZGVyaXZlZCBmcm9tIG1hdGVyaWFsIGxpY2Vuc2VkCj4gICAgKiB0byB0aGUg
VW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhIGJ5IEFtZXJpY2FuIFRlbGVwaG9uZSBhbmQgVGVsZWdy
YXBoCj4gICAgKiBDby4gb3IgVW5peCBTeXN0ZW0gTGFib3JhdG9yaWVzLCBJbmMuIGFuZCBhcmUg
cmVwcm9kdWNlZCBoZXJlaW4gd2l0aAo+IGRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9zeXNjYWxs
cy5jIGIvbGliL3Zmc2NvcmUvc3lzY2FsbHMuYwo+IGluZGV4IGI1NDMzZWNlLi4yOWIxNDIyMCAx
MDA2NDQKPiAtLS0gYS9saWIvdmZzY29yZS9zeXNjYWxscy5jCj4gKysrIGIvbGliL3Zmc2NvcmUv
c3lzY2FsbHMuYwo+IEBAIC0xLDEyICsxLDggQEAKPiAtLyoKPiAtICogQ29weXJpZ2h0IChDKSAy
MDEzIENsb3VkaXVzIFN5c3RlbXMsIEx0ZC4KPiAtICoKPiAtICogVGhpcyB3b3JrIGlzIG9wZW4g
c291cmNlIHNvZnR3YXJlLCBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlCj4gLSAqIEJT
RCBsaWNlbnNlIGFzIGRlc2NyaWJlZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSB0b3AtbGV2
ZWwgZGlyZWN0b3J5Lgo+IC0gKi8KPiAtCj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBC
U0QtMy1DbGF1c2UgKi8KPiAgIC8qCj4gICAgKiBDb3B5cmlnaHQgKGMpIDIwMDUtMjAwNywgS29o
c3VrZSBPaHRhbmkKPiArICogQ29weXJpZ2h0IChDKSAyMDE0IENsb3VkaXVzIFN5c3RlbXMsIEx0
ZC4KPiArICogQ29weXJpZ2h0IChjKSAyMDE5LCBORUMgRXVyb3BlIEx0ZC4sIE5FQyBDb3Jwb3Jh
dGlvbi4KPiAgICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4gICAgKgo+ICAgICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Cj4gZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3Rhc2suYyBiL2xpYi92ZnNjb3JlL3Rhc2suYwo+
IGluZGV4IGIyYTAyOGM2Li4yZDM0ZjBkZiAxMDA2NDQKPiAtLS0gYS9saWIvdmZzY29yZS90YXNr
LmMKPiArKysgYi9saWIvdmZzY29yZS90YXNrLmMKPiBAQCAtMSw1ICsxLDkgQEAKPiAtLyotCj4g
LSAqIENvcHlyaWdodCAoYykgMjAwNywgS29oc3VrZSBPaHRhbmkgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLwo+ICsvKgo+
ICsgKiBDb3B5cmlnaHQgKGMpIDIwMDcsIEtvaHN1a2UgT2h0YW5pCj4gKyAqIENvcHlyaWdodCAo
QykgMjAxNCBDbG91ZGl1cyBTeXN0ZW1zLCBMdGQuCj4gKyAqIENvcHlyaWdodCAoYykgMjAxOSwg
TkVDIEV1cm9wZSBMdGQuLCBORUMgQ29ycG9yYXRpb24uCj4gKyAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCj4gICAgKgo+ICAgICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cj4gICAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKPiBkaWZmIC0tZ2l0
IGEvbGliL3Zmc2NvcmUvdmZzLmggYi9saWIvdmZzY29yZS92ZnMuaAo+IGluZGV4IDJiODI1NTIx
Li5jMTMwNTE3ZCAxMDA2NDQKPiAtLS0gYS9saWIvdmZzY29yZS92ZnMuaAo+ICsrKyBiL2xpYi92
ZnNjb3JlL3Zmcy5oCj4gQEAgLTEsNSArMSw4IEBACj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlm
aWVyOiBCU0QtMy1DbGF1c2UgKi8KPiAgIC8qCj4gICAgKiBDb3B5cmlnaHQgKGMpIDIwMDUtMjAw
NywgS29oc3VrZSBPaHRhbmkKPiArICogQ29weXJpZ2h0IChDKSAyMDE0IENsb3VkaXVzIFN5c3Rl
bXMsIEx0ZC4KPiArICogQ29weXJpZ2h0IChjKSAyMDE5LCBORUMgRXVyb3BlIEx0ZC4sIE5FQyBD
b3Jwb3JhdGlvbi4KPiAgICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4gICAgKgo+ICAgICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Cj4gZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3Zub2RlLmMgYi9saWIvdmZzY29yZS92
bm9kZS5jCj4gaW5kZXggMTE5ZWQ4NzAuLjM0MTJjNmZiIDEwMDY0NAo+IC0tLSBhL2xpYi92ZnNj
b3JlL3Zub2RlLmMKPiArKysgYi9saWIvdmZzY29yZS92bm9kZS5jCj4gQEAgLTEsNSArMSw4IEBA
Cj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8KPiAgIC8qCj4g
ICAgKiBDb3B5cmlnaHQgKGMpIDIwMDUtMjAwOCwgS29oc3VrZSBPaHRhbmkKPiArICogQ29weXJp
Z2h0IChDKSAyMDE0IENsb3VkaXVzIFN5c3RlbXMsIEx0ZC4KPiArICogQ29weXJpZ2h0IChjKSAy
MDE5LCBORUMgRXVyb3BlIEx0ZC4sIE5FQyBDb3Jwb3JhdGlvbi4KPiAgICAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCj4gICAgKgo+ICAgICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cj4gCgpfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1p
bmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qu
b3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Feb 06 17:40:27 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 06 Feb 2019 17:40:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grRBS-0001Rw-OS; Wed, 06 Feb 2019 17:40:26 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=tAI7=QN=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1grRBQ-0001Rr-Mo
 for minios-devel@lists.xen.org; Wed, 06 Feb 2019 17:40:24 +0000
X-Inumbo-ID: 403cd430-2a36-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 403cd430-2a36-11e9-bc90-bc764e045a96;
 Wed, 06 Feb 2019 17:40:11 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 3AE90104D92;
 Wed,  6 Feb 2019 18:40:10 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id S8Y7ICvCQqvA; Wed,  6 Feb 2019 18:40:10 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id E7882104D8A
 for <minios-devel@lists.xen.org>; Wed,  6 Feb 2019 18:40:07 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 6 Feb 2019 18:40:07
 +0100
To: <minios-devel@lists.xen.org>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
 <20190204143739.29249-6-yuri.volchkov@neclab.eu>
 <6870555a-a5f1-027a-3480-8ca07e36dea5@neclab.eu>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <bd36eab1-0d3f-35ba-87ce-a01531512df0@neclab.eu>
Date: Wed, 6 Feb 2019 18:40:07 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <6870555a-a5f1-027a-3480-8ca07e36dea5@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 05/23] lib/vfscore: tabify
 imported vfs code
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Simon.kuenzer@neclab.eu, Yuri Volchkov <yuri.volchkov@neclab.eu>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gWXVyaSwKClNpbmNlIHdlIGltcG9ydGVkIHRoaXMgY29kZSBmcm9tIE9TdiwgSSB3b3Vs
ZG4ndCBiZSB0b28gcGlja3kgb24gdGhlIGl0LiAKV2UgY291bGQgcG9zc2libHkgZml4IGl0IGlu
IGEgc2VwYXJhdGUgcGF0Y2ggc2VyaWVzLgoKUmV2aWV3ZWQtYnk6IFNoYXJhbiBTYW50aGFuYW0g
PHNoYXJhbi5zYW50aGFuYW1AbmVjbGFiLmV1PgoKVGhhbmtzICYgUmVnYXJkcwpTaGFyYW4KCk9u
IDIvNi8xOSA2OjI1IFBNLCBTaGFyYW4gU2FudGhhbmFtIHdyb3RlOgo+IEhlbGxvIFl1cmksCj4g
Cj4gVGhlcmUgYXJlIHNvbWUgcGxhY2Ugd2hlcmUgdGFicyBhbmQgc3BhY2UgYXJlIGNhdXNpbmcg
Y2hlY2twYXRjaCBlcnJvciAKPiBhbmQgd2FybmluZy4gUGxlYXNlIGZpbmQgdGhlbSBpbmxpbmUu
Cj4gCj4gVGhhbmtzICYgUmVnYXJkcwo+IFNoYXJhbgo+IAo+IE9uIDIvNC8xOSAzOjM2IFBNLCBZ
dXJpIFZvbGNoa292IHdyb3RlOgo+PiBUbyBjb21wbHkgd2l0aCBVbmlrcmFmdCBjb2Rpbmcgc3R5
bGUsIGluZGVudHMgbXVzdCBiZSB0YWJzLCBub3QKPj4gc3BhY2VzLiBJbXBvcnRlZCBjb2RlIHdh
cyBhIG1peHR1cmUgb2YgYm90aC4KPj4KPj4gU2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8
eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Cj4+IC0tLQo+PiDCoCBsaWIvdmZzY29yZS9kZW50cnku
Y8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCAyNjggKy0tCj4+IMKgIGxpYi92
ZnNjb3JlL2ZvcHMuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoCAz
MiArLQo+PiDCoCBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZGVudHJ5LmggfMKgwqDCoCA0
ICstCj4+IMKgIGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9tb3VudC5owqAgfMKgwqDCoCA4
ICstCj4+IMKgIGxpYi92ZnNjb3JlL2xvb2t1cC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqAgfMKgIDU1NCArKy0tLQo+PiDCoCBsaWIvdmZzY29yZS9tYWluLmPCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAyODQ0ICsrKysrKysrKysrKystLS0tLS0tLS0tLS0t
Cj4+IMKgIGxpYi92ZnNjb3JlL21vdW50LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgIHzCoCA1ODAgKysrLS0tCj4+IMKgIGxpYi92ZnNjb3JlL3N5c2NhbGxzLmPCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgIHzCoCA0NjQgKystLS0KPj4gwqAgbGliL3Zmc2NvcmUvdGFzay5j
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDEwICstCj4+IMKgIGxp
Yi92ZnNjb3JlL3Zmcy5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKg
wqDCoCAyICstCj4+IMKgIGxpYi92ZnNjb3JlL3Zub2RlLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgIHzCoMKgIDUwICstCj4+IMKgIDExIGZpbGVzIGNoYW5nZWQsIDI0MDggaW5z
ZXJ0aW9ucygrKSwgMjQwOCBkZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAtLWdpdCBhL2xpYi92ZnNj
b3JlL2RlbnRyeS5jIGIvbGliL3Zmc2NvcmUvZGVudHJ5LmMKPj4gaW5kZXggZmFjZDllYWEuLmMy
ZjIwOWIyIDEwMDY0NAo+PiAtLS0gYS9saWIvdmZzY29yZS9kZW50cnkuYwo+PiArKysgYi9saWIv
dmZzY29yZS9kZW50cnkuYwo+PiBAQCAtNTUsMTgwICs1NSwxODAgQEAgc3RhdGljIG11dGV4IGRl
bnRyeV9oYXNoX2xvY2s7Cj4+IMKgIHN0YXRpYyB1X2ludAo+PiDCoCBkZW50cnlfaGFzaChzdHJ1
Y3QgbW91bnQgKm1wLCBjb25zdCBjaGFyICpwYXRoKQo+PiDCoCB7Cj4+IC3CoMKgwqAgdV9pbnQg
dmFsID0gMDsKPj4gLQo+PiAtwqDCoMKgIGlmIChwYXRoKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCB3
aGlsZSAoKnBhdGgpIHsKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdmFsID0gKCh2YWwgPDwg
NSkgKyB2YWwpICsgKnBhdGgrKzsKPj4gLcKgwqDCoMKgwqDCoMKgIH0KPj4gLcKgwqDCoCB9Cj4+
IC3CoMKgwqAgcmV0dXJuICh2YWwgXiAodW5zaWduZWQgbG9uZykgbXApICYgKERFTlRSWV9CVUNL
RVRTIC0gMSk7Cj4+ICvCoMKgwqAgdV9pbnQgdmFsID0gMDsKPj4gKwo+PiArwqDCoMKgIGlmIChw
YXRoKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCB3aGlsZSAoKnBhdGgpIHsKPj4gK8KgwqDCoMKgwqDC
oMKgwqDCoMKgwqAgdmFsID0gKCh2YWwgPDwgNSkgKyB2YWwpICsgKnBhdGgrKzsKPj4gK8KgwqDC
oMKgwqDCoMKgIH0KPj4gK8KgwqDCoCB9Cj4+ICvCoMKgwqAgcmV0dXJuICh2YWwgXiAodW5zaWdu
ZWQgbG9uZykgbXApICYgKERFTlRSWV9CVUNLRVRTIC0gMSk7Cj4+IMKgIH0KPj4gwqAgc3RydWN0
IGRlbnRyeSAqCj4+IMKgIGRlbnRyeV9hbGxvYyhzdHJ1Y3QgZGVudHJ5ICpwYXJlbnRfZHAsIHN0
cnVjdCB2bm9kZSAqdnAsIGNvbnN0IGNoYXIgCj4+ICpwYXRoKQo+PiDCoCB7Cj4+IC3CoMKgwqAg
c3RydWN0IG1vdW50ICptcCA9IHZwLT52X21vdW50Owo+PiAtwqDCoMKgIHN0cnVjdCBkZW50cnkg
KmRwID0gKGRlbnRyeSopY2FsbG9jKHNpemVvZigqZHApLCAxKTsKPj4gLQo+PiAtwqDCoMKgIGlm
ICghZHApIHsKPj4gLcKgwqDCoMKgwqDCoMKgIHJldHVybiBudWxscHRyOwo+PiAtwqDCoMKgIH0K
Pj4gLQo+PiAtwqDCoMKgIHZyZWYodnApOwo+PiAtCj4+IC3CoMKgwqAgZHAtPmRfcmVmY250ID0g
MTsKPj4gLcKgwqDCoCBkcC0+ZF92bm9kZSA9IHZwOwo+PiAtwqDCoMKgIGRwLT5kX21vdW50ID0g
bXA7Cj4+IC3CoMKgwqAgZHAtPmRfcGF0aCA9IHN0cmR1cChwYXRoKTsKPj4gLcKgwqDCoCBMSVNU
X0lOSVQoJmRwLT5kX2NoaWxkcmVuKTsKPj4gLQo+PiAtwqDCoMKgIGlmIChwYXJlbnRfZHApIHsK
Pj4gLcKgwqDCoMKgwqDCoMKgIGRyZWYocGFyZW50X2RwKTsKPj4gLcKgwqDCoMKgwqDCoMKgIFdJ
VEhfTE9DSyhwYXJlbnRfZHAtPmRfbG9jaykgewo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAv
LyBJbnNlcnQgZHAgaW50byBpdHMgcGFyZW50J3MgY2hpbGRyZW4gbGlzdC4KPj4gLcKgwqDCoMKg
wqDCoMKgwqDCoMKgwqAgTElTVF9JTlNFUlRfSEVBRCgmcGFyZW50X2RwLT5kX2NoaWxkcmVuLCBk
cCwgCj4+IGRfY2hpbGRyZW5fbGluayk7Cj4+IC3CoMKgwqDCoMKgwqDCoCB9Cj4+IC3CoMKgwqAg
fQo+PiAtwqDCoMKgIGRwLT5kX3BhcmVudCA9IHBhcmVudF9kcDsKPj4gLQo+PiAtwqDCoMKgIHZu
X2FkZF9uYW1lKHZwLCBkcCk7Cj4+IC0KPj4gLcKgwqDCoCBtdXRleF9sb2NrKCZkZW50cnlfaGFz
aF9sb2NrKTsKPj4gLcKgwqDCoCBMSVNUX0lOU0VSVF9IRUFEKCZkZW50cnlfaGFzaF90YWJsZVtk
ZW50cnlfaGFzaChtcCwgcGF0aCldLCBkcCwgCj4+IGRfbGluayk7Cj4+IC3CoMKgwqAgbXV0ZXhf
dW5sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKPj4gLcKgwqDCoCByZXR1cm4gZHA7Cj4+ICvCoMKg
wqAgc3RydWN0IG1vdW50ICptcCA9IHZwLT52X21vdW50Owo+PiArwqDCoMKgIHN0cnVjdCBkZW50
cnkgKmRwID0gKGRlbnRyeSopY2FsbG9jKHNpemVvZigqZHApLCAxKTsKPj4gKwo+PiArwqDCoMKg
IGlmICghZHApIHsKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBudWxscHRyOwo+PiArwqDCoMKg
IH0KPj4gKwo+PiArwqDCoMKgIHZyZWYodnApOwo+PiArCj4+ICvCoMKgwqAgZHAtPmRfcmVmY250
ID0gMTsKPj4gK8KgwqDCoCBkcC0+ZF92bm9kZSA9IHZwOwo+PiArwqDCoMKgIGRwLT5kX21vdW50
ID0gbXA7Cj4+ICvCoMKgwqAgZHAtPmRfcGF0aCA9IHN0cmR1cChwYXRoKTsKPj4gK8KgwqDCoCBM
SVNUX0lOSVQoJmRwLT5kX2NoaWxkcmVuKTsKPj4gKwo+PiArwqDCoMKgIGlmIChwYXJlbnRfZHAp
IHsKPj4gK8KgwqDCoMKgwqDCoMKgIGRyZWYocGFyZW50X2RwKTsKPj4gK8KgwqDCoMKgwqDCoMKg
IFdJVEhfTE9DSyhwYXJlbnRfZHAtPmRfbG9jaykgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oCAvLyBJbnNlcnQgZHAgaW50byBpdHMgcGFyZW50J3MgY2hpbGRyZW4gbGlzdC4KPj4gK8KgwqDC
oMKgwqDCoMKgwqDCoMKgwqAgTElTVF9JTlNFUlRfSEVBRCgmcGFyZW50X2RwLT5kX2NoaWxkcmVu
LCBkcCwgCj4+IGRfY2hpbGRyZW5fbGluayk7Cj4+ICvCoMKgwqDCoMKgwqDCoCB9Cj4+ICvCoMKg
wqAgfQo+PiArwqDCoMKgIGRwLT5kX3BhcmVudCA9IHBhcmVudF9kcDsKPj4gKwo+PiArwqDCoMKg
IHZuX2FkZF9uYW1lKHZwLCBkcCk7Cj4+ICsKPj4gK8KgwqDCoCBtdXRleF9sb2NrKCZkZW50cnlf
aGFzaF9sb2NrKTsKPj4gK8KgwqDCoCBMSVNUX0lOU0VSVF9IRUFEKCZkZW50cnlfaGFzaF90YWJs
ZVtkZW50cnlfaGFzaChtcCwgcGF0aCldLCBkcCwgCj4+IGRfbGluayk7Cj4+ICvCoMKgwqAgbXV0
ZXhfdW5sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKPj4gK8KgwqDCoCByZXR1cm4gZHA7Cj4+IMKg
IH07Cj4+IMKgIHN0cnVjdCBkZW50cnkgKgo+PiDCoCBkZW50cnlfbG9va3VwKHN0cnVjdCBtb3Vu
dCAqbXAsIGNoYXIgKnBhdGgpCj4+IMKgIHsKPj4gLcKgwqDCoCBzdHJ1Y3QgZGVudHJ5ICpkcDsK
Pj4gLQo+PiAtwqDCoMKgIG11dGV4X2xvY2soJmRlbnRyeV9oYXNoX2xvY2spOwo+PiAtwqDCoMKg
IExJU1RfRk9SRUFDSChkcCwgJmRlbnRyeV9oYXNoX3RhYmxlW2RlbnRyeV9oYXNoKG1wLCBwYXRo
KV0sIAo+PiBkX2xpbmspIHsKPj4gLcKgwqDCoMKgwqDCoMKgIGlmIChkcC0+ZF9tb3VudCA9PSBt
cCAmJiAhc3RybmNtcChkcC0+ZF9wYXRoLCBwYXRoLCBQQVRIX01BWCkpIHsKPj4gLcKgwqDCoMKg
wqDCoMKgwqDCoMKgwqAgZHAtPmRfcmVmY250Kys7Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg
IG11dGV4X3VubG9jaygmZGVudHJ5X2hhc2hfbG9jayk7Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDC
oMKgIHJldHVybiBkcDsKPj4gLcKgwqDCoMKgwqDCoMKgIH0KPj4gLcKgwqDCoCB9Cj4+IC3CoMKg
wqAgbXV0ZXhfdW5sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKPj4gLcKgwqDCoCByZXR1cm4gbnVs
bHB0cjvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyogbm90IGZvdW5kICovCj4+ICvC
oMKgwqAgc3RydWN0IGRlbnRyeSAqZHA7Cj4+ICsKPj4gK8KgwqDCoCBtdXRleF9sb2NrKCZkZW50
cnlfaGFzaF9sb2NrKTsKPj4gK8KgwqDCoCBMSVNUX0ZPUkVBQ0goZHAsICZkZW50cnlfaGFzaF90
YWJsZVtkZW50cnlfaGFzaChtcCwgcGF0aCldLCAKPj4gZF9saW5rKSB7Cj4+ICvCoMKgwqDCoMKg
wqDCoCBpZiAoZHAtPmRfbW91bnQgPT0gbXAgJiYgIXN0cm5jbXAoZHAtPmRfcGF0aCwgcGF0aCwg
UEFUSF9NQVgpKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRwLT5kX3JlZmNudCsrOwo+
PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtdXRleF91bmxvY2soJmRlbnRyeV9oYXNoX2xvY2sp
Owo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gZHA7Cj4+ICvCoMKgwqDCoMKgwqDC
oCB9Cj4+ICvCoMKgwqAgfQo+PiArwqDCoMKgIG11dGV4X3VubG9jaygmZGVudHJ5X2hhc2hfbG9j
ayk7Cj4+ICvCoMKgwqAgcmV0dXJuIG51bGxwdHI7wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgIC8qIG5vdCBmb3VuZCAqLwo+PiDCoCB9Cj4+IMKgIHN0YXRpYyB2b2lkIGRlbnRyeV9jaGls
ZHJlbl9yZW1vdmUoc3RydWN0IGRlbnRyeSAqZHApCj4+IMKgIHsKPj4gLcKgwqDCoCBzdHJ1Y3Qg
ZGVudHJ5ICplbnRyeSA9IG51bGxwdHI7Cj4+IC0KPj4gLcKgwqDCoCBXSVRIX0xPQ0soZHAtPmRf
bG9jaykgewo+PiAtwqDCoMKgwqDCoMKgwqAgTElTVF9GT1JFQUNIKGVudHJ5LCAmZHAtPmRfY2hp
bGRyZW4sIGRfY2hpbGRyZW5fbGluaykgewo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBBU1NF
UlQoZW50cnkpOwo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBBU1NFUlQoZW50cnktPmRfcmVm
Y250ID4gMCk7Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIExJU1RfUkVNT1ZFKGVudHJ5LCBk
X2xpbmspOwo+PiAtwqDCoMKgwqDCoMKgwqAgfQo+PiAtwqDCoMKgIH0KPj4gK8KgwqDCoCBzdHJ1
Y3QgZGVudHJ5ICplbnRyeSA9IG51bGxwdHI7Cj4+ICsKPj4gK8KgwqDCoCBXSVRIX0xPQ0soZHAt
PmRfbG9jaykgewo+PiArwqDCoMKgwqDCoMKgwqAgTElTVF9GT1JFQUNIKGVudHJ5LCAmZHAtPmRf
Y2hpbGRyZW4sIGRfY2hpbGRyZW5fbGluaykgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBB
U1NFUlQoZW50cnkpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBBU1NFUlQoZW50cnktPmRf
cmVmY250ID4gMCk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIExJU1RfUkVNT1ZFKGVudHJ5
LCBkX2xpbmspOwo+PiArwqDCoMKgwqDCoMKgwqAgfQo+PiArwqDCoMKgIH0KPj4gwqAgfQo+PiDC
oCB2b2lkCj4+IMKgIGRlbnRyeV9tb3ZlKHN0cnVjdCBkZW50cnkgKmRwLCBzdHJ1Y3QgZGVudHJ5
ICpwYXJlbnRfZHAsIGNoYXIgKnBhdGgpCj4+IMKgIHsKPj4gLcKgwqDCoCBzdHJ1Y3QgZGVudHJ5
ICpvbGRfcGRwID0gZHAtPmRfcGFyZW50Owo+PiAtwqDCoMKgIGNoYXIgKm9sZF9wYXRoID0gZHAt
PmRfcGF0aDsKPj4gLQo+PiAtwqDCoMKgIGlmIChvbGRfcGRwKSB7Cj4+IC3CoMKgwqDCoMKgwqDC
oCBXSVRIX0xPQ0sob2xkX3BkcC0+ZF9sb2NrKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg
IC8vIFJlbW92ZSBkcCBmcm9tIGl0cyBvbGQgcGFyZW50J3MgY2hpbGRyZW4gbGlzdC4KPj4gLcKg
wqDCoMKgwqDCoMKgwqDCoMKgwqAgTElTVF9SRU1PVkUoZHAsIGRfY2hpbGRyZW5fbGluayk7Cj4+
IC3CoMKgwqDCoMKgwqDCoCB9Cj4+IC3CoMKgwqAgfQo+PiAtCj4+IC3CoMKgwqAgaWYgKHBhcmVu
dF9kcCkgewo+PiAtwqDCoMKgwqDCoMKgwqAgZHJlZihwYXJlbnRfZHApOwo+PiAtwqDCoMKgwqDC
oMKgwqAgV0lUSF9MT0NLKHBhcmVudF9kcC0+ZF9sb2NrKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoMKg
wqDCoMKgIC8vIEluc2VydCBkcCBpbnRvIGl0cyBuZXcgcGFyZW50J3MgY2hpbGRyZW4gbGlzdC4K
Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgTElTVF9JTlNFUlRfSEVBRCgmcGFyZW50X2RwLT5k
X2NoaWxkcmVuLCBkcCwgCj4+IGRfY2hpbGRyZW5fbGluayk7Cj4+IC3CoMKgwqDCoMKgwqDCoCB9
Cj4+IC3CoMKgwqAgfQo+PiAtCj4+IC3CoMKgwqAgV0lUSF9MT0NLKGRlbnRyeV9oYXNoX2xvY2sp
IHsKPj4gLcKgwqDCoMKgwqDCoMKgIC8vIFJlbW92ZSBhbGwgZHAncyBjaGlsZCBkZW50cmllcyBm
cm9tIHRoZSBoYXNodGFibGUuCj4+IC3CoMKgwqDCoMKgwqDCoCBkZW50cnlfY2hpbGRyZW5fcmVt
b3ZlKGRwKTsKPj4gLcKgwqDCoMKgwqDCoMKgIC8vIFJlbW92ZSBkcCB3aXRoIG91dGRhdGVkIGhh
c2ggaW5mbyBmcm9tIHRoZSBoYXNodGFibGUuCj4+IC3CoMKgwqDCoMKgwqDCoCBMSVNUX1JFTU9W
RShkcCwgZF9saW5rKTsKPj4gLcKgwqDCoMKgwqDCoMKgIC8vIFVwZGF0ZSBkcC4KPj4gLcKgwqDC
oMKgwqDCoMKgIGRwLT5kX3BhdGggPSBzdHJkdXAocGF0aCk7Cj4+IC3CoMKgwqDCoMKgwqDCoCBk
cC0+ZF9wYXJlbnQgPSBwYXJlbnRfZHA7Cj4+IC3CoMKgwqDCoMKgwqDCoCAvLyBJbnNlcnQgZHAg
dXBkYXRlZCBoYXNoIGluZm8gaW50byB0aGUgaGFzaHRhYmxlLgo+PiAtwqDCoMKgwqDCoMKgwqAg
TElTVF9JTlNFUlRfSEVBRCgmZGVudHJ5X2hhc2hfdGFibGVbZGVudHJ5X2hhc2goZHAtPmRfbW91
bnQsIAo+PiBwYXRoKV0sCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRwLCBkX2xpbmspOwo+
PiAtwqDCoMKgIH0KPj4gLQo+PiAtwqDCoMKgIGlmIChvbGRfcGRwKSB7Cj4+IC3CoMKgwqDCoMKg
wqDCoCBkcmVsZShvbGRfcGRwKTsKPj4gLcKgwqDCoCB9Cj4+IC0KPj4gLcKgwqDCoCBmcmVlKG9s
ZF9wYXRoKTsKPj4gK8KgwqDCoCBzdHJ1Y3QgZGVudHJ5ICpvbGRfcGRwID0gZHAtPmRfcGFyZW50
Owo+PiArwqDCoMKgIGNoYXIgKm9sZF9wYXRoID0gZHAtPmRfcGF0aDsKPj4gKwo+PiArwqDCoMKg
IGlmIChvbGRfcGRwKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBXSVRIX0xPQ0sob2xkX3BkcC0+ZF9s
b2NrKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8vIFJlbW92ZSBkcCBmcm9tIGl0cyBv
bGQgcGFyZW50J3MgY2hpbGRyZW4gbGlzdC4KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgTElT
VF9SRU1PVkUoZHAsIGRfY2hpbGRyZW5fbGluayk7Cj4+ICvCoMKgwqDCoMKgwqDCoCB9Cj4+ICvC
oMKgwqAgfQo+PiArCj4+ICvCoMKgwqAgaWYgKHBhcmVudF9kcCkgewo+PiArwqDCoMKgwqDCoMKg
wqAgZHJlZihwYXJlbnRfZHApOwo+PiArwqDCoMKgwqDCoMKgwqAgV0lUSF9MT0NLKHBhcmVudF9k
cC0+ZF9sb2NrKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8vIEluc2VydCBkcCBpbnRv
IGl0cyBuZXcgcGFyZW50J3MgY2hpbGRyZW4gbGlzdC4KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg
wqAgTElTVF9JTlNFUlRfSEVBRCgmcGFyZW50X2RwLT5kX2NoaWxkcmVuLCBkcCwgCj4+IGRfY2hp
bGRyZW5fbGluayk7Cj4+ICvCoMKgwqDCoMKgwqDCoCB9Cj4+ICvCoMKgwqAgfQo+PiArCj4+ICvC
oMKgwqAgV0lUSF9MT0NLKGRlbnRyeV9oYXNoX2xvY2spIHsKPj4gK8KgwqDCoMKgwqDCoMKgIC8v
IFJlbW92ZSBhbGwgZHAncyBjaGlsZCBkZW50cmllcyBmcm9tIHRoZSBoYXNodGFibGUuCj4+ICvC
oMKgwqDCoMKgwqDCoCBkZW50cnlfY2hpbGRyZW5fcmVtb3ZlKGRwKTsKPj4gK8KgwqDCoMKgwqDC
oMKgIC8vIFJlbW92ZSBkcCB3aXRoIG91dGRhdGVkIGhhc2ggaW5mbyBmcm9tIHRoZSBoYXNodGFi
bGUuCj4+ICvCoMKgwqDCoMKgwqDCoCBMSVNUX1JFTU9WRShkcCwgZF9saW5rKTsKPj4gK8KgwqDC
oMKgwqDCoMKgIC8vIFVwZGF0ZSBkcC4KPj4gK8KgwqDCoMKgwqDCoMKgIGRwLT5kX3BhdGggPSBz
dHJkdXAocGF0aCk7Cj4+ICvCoMKgwqDCoMKgwqDCoCBkcC0+ZF9wYXJlbnQgPSBwYXJlbnRfZHA7
Cj4+ICvCoMKgwqDCoMKgwqDCoCAvLyBJbnNlcnQgZHAgdXBkYXRlZCBoYXNoIGluZm8gaW50byB0
aGUgaGFzaHRhYmxlLgo+PiArwqDCoMKgwqDCoMKgwqAgTElTVF9JTlNFUlRfSEVBRCgmZGVudHJ5
X2hhc2hfdGFibGVbZGVudHJ5X2hhc2goZHAtPmRfbW91bnQsIAo+PiBwYXRoKV0sCj4+ICvCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgIGRwLCBkX2xpbmspOwo+PiArwqDCoMKgIH0KPj4gKwo+PiArwqDC
oMKgIGlmIChvbGRfcGRwKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBkcmVsZShvbGRfcGRwKTsKPj4g
K8KgwqDCoCB9Cj4+ICsKPj4gK8KgwqDCoCBmcmVlKG9sZF9wYXRoKTsKPj4gwqAgfQo+PiDCoCB2
b2lkCj4+IMKgIGRlbnRyeV9yZW1vdmUoc3RydWN0IGRlbnRyeSAqZHApCj4+IMKgIHsKPj4gLcKg
wqDCoCBtdXRleF9sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKPj4gLcKgwqDCoCBMSVNUX1JFTU9W
RShkcCwgZF9saW5rKTsKPj4gLcKgwqDCoCAvKiBwdXQgaXQgb24gYSBmYWtlIGxpc3QgZm9yIGRy
ZWxlKCkgdG8gd29yayovCj4+IC3CoMKgwqAgTElTVF9JTlNFUlRfSEVBRCgmZmFrZSwgZHAsIGRf
bGluayk7Cj4+IC3CoMKgwqAgbXV0ZXhfdW5sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKPj4gK8Kg
wqDCoCBtdXRleF9sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKPj4gK8KgwqDCoCBMSVNUX1JFTU9W
RShkcCwgZF9saW5rKTsKPj4gK8KgwqDCoCAvKiBwdXQgaXQgb24gYSBmYWtlIGxpc3QgZm9yIGRy
ZWxlKCkgdG8gd29yayovCj4+ICvCoMKgwqAgTElTVF9JTlNFUlRfSEVBRCgmZmFrZSwgZHAsIGRf
bGluayk7Cj4+ICvCoMKgwqAgbXV0ZXhfdW5sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKPj4gwqAg
fQo+PiDCoCB2b2lkCj4+IMKgIGRyZWYoc3RydWN0IGRlbnRyeSAqZHApCj4+IMKgIHsKPj4gLcKg
wqDCoCBBU1NFUlQoZHApOwo+PiAtwqDCoMKgIEFTU0VSVChkcC0+ZF9yZWZjbnQgPiAwKTsKPj4g
K8KgwqDCoCBBU1NFUlQoZHApOwo+PiArwqDCoMKgIEFTU0VSVChkcC0+ZF9yZWZjbnQgPiAwKTsK
Pj4gLcKgwqDCoCBtdXRleF9sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKPj4gLcKgwqDCoCBkcC0+
ZF9yZWZjbnQrKzsKPj4gLcKgwqDCoCBtdXRleF91bmxvY2soJmRlbnRyeV9oYXNoX2xvY2spOwo+
PiArwqDCoMKgIG11dGV4X2xvY2soJmRlbnRyeV9oYXNoX2xvY2spOwo+PiArwqDCoMKgIGRwLT5k
X3JlZmNudCsrOwo+PiArwqDCoMKgIG11dGV4X3VubG9jaygmZGVudHJ5X2hhc2hfbG9jayk7Cj4+
IMKgIH0KPj4gwqAgdm9pZAo+PiDCoCBkcmVsZShzdHJ1Y3QgZGVudHJ5ICpkcCkKPj4gwqAgewo+
PiAtwqDCoMKgIEFTU0VSVChkcCk7Cj4+IC3CoMKgwqAgQVNTRVJUKGRwLT5kX3JlZmNudCA+IDAp
Owo+PiAtCj4+IC3CoMKgwqAgbXV0ZXhfbG9jaygmZGVudHJ5X2hhc2hfbG9jayk7Cj4+IC3CoMKg
wqAgaWYgKC0tZHAtPmRfcmVmY250KSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCBtdXRleF91bmxvY2so
JmRlbnRyeV9oYXNoX2xvY2spOwo+PiAtwqDCoMKgwqDCoMKgwqAgcmV0dXJuOwo+PiAtwqDCoMKg
IH0KPj4gLcKgwqDCoCBMSVNUX1JFTU9WRShkcCwgZF9saW5rKTsKPj4gLcKgwqDCoCB2bl9kZWxf
bmFtZShkcC0+ZF92bm9kZSwgZHApOwo+PiAtCj4+IC3CoMKgwqAgbXV0ZXhfdW5sb2NrKCZkZW50
cnlfaGFzaF9sb2NrKTsKPj4gLQo+PiAtwqDCoMKgIGlmIChkcC0+ZF9wYXJlbnQpIHsKPj4gLcKg
wqDCoMKgwqDCoMKgIFdJVEhfTE9DSyhkcC0+ZF9wYXJlbnQtPmRfbG9jaykgewo+PiAtwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoCAvLyBSZW1vdmUgZHAgZnJvbSBpdHMgcGFyZW50J3MgY2hpbGRyZW4g
bGlzdC4KPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgTElTVF9SRU1PVkUoZHAsIGRfY2hpbGRy
ZW5fbGluayk7Cj4+IC3CoMKgwqDCoMKgwqDCoCB9Cj4+IC3CoMKgwqDCoMKgwqDCoCBkcmVsZShk
cC0+ZF9wYXJlbnQpOwo+PiAtwqDCoMKgIH0KPj4gLQo+PiAtwqDCoMKgIHZyZWxlKGRwLT5kX3Zu
b2RlKTsKPj4gLQo+PiAtwqDCoMKgIGZyZWUoZHAtPmRfcGF0aCk7Cj4+IC3CoMKgwqAgZnJlZShk
cCk7Cj4+ICvCoMKgwqAgQVNTRVJUKGRwKTsKPj4gK8KgwqDCoCBBU1NFUlQoZHAtPmRfcmVmY250
ID4gMCk7Cj4+ICsKPj4gK8KgwqDCoCBtdXRleF9sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKPj4g
K8KgwqDCoCBpZiAoLS1kcC0+ZF9yZWZjbnQpIHsKPj4gK8KgwqDCoMKgwqDCoMKgIG11dGV4X3Vu
bG9jaygmZGVudHJ5X2hhc2hfbG9jayk7Cj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm47Cj4+ICvC
oMKgwqAgfQo+PiArwqDCoMKgIExJU1RfUkVNT1ZFKGRwLCBkX2xpbmspOwo+PiArwqDCoMKgIHZu
X2RlbF9uYW1lKGRwLT5kX3Zub2RlLCBkcCk7Cj4+ICsKPj4gK8KgwqDCoCBtdXRleF91bmxvY2so
JmRlbnRyeV9oYXNoX2xvY2spOwo+PiArCj4+ICvCoMKgwqAgaWYgKGRwLT5kX3BhcmVudCkgewo+
PiArwqDCoMKgwqDCoMKgwqAgV0lUSF9MT0NLKGRwLT5kX3BhcmVudC0+ZF9sb2NrKSB7Cj4+ICvC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8vIFJlbW92ZSBkcCBmcm9tIGl0cyBwYXJlbnQncyBjaGls
ZHJlbiBsaXN0Lgo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBMSVNUX1JFTU9WRShkcCwgZF9j
aGlsZHJlbl9saW5rKTsKPj4gK8KgwqDCoMKgwqDCoMKgIH0KPj4gK8KgwqDCoMKgwqDCoMKgIGRy
ZWxlKGRwLT5kX3BhcmVudCk7Cj4+ICvCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqAgdnJlbGUoZHAt
PmRfdm5vZGUpOwo+PiArCj4+ICvCoMKgwqAgZnJlZShkcC0+ZF9wYXRoKTsKPj4gK8KgwqDCoCBm
cmVlKGRwKTsKPj4gwqAgfQo+PiDCoCB2b2lkCj4+IMKgIGRlbnRyeV9pbml0KHZvaWQpCj4+IMKg
IHsKPj4gLcKgwqDCoCBpbnQgaTsKPj4gK8KgwqDCoCBpbnQgaTsKPj4gLcKgwqDCoCBmb3IgKGkg
PSAwOyBpIDwgREVOVFJZX0JVQ0tFVFM7IGkrKykgewo+PiAtwqDCoMKgwqDCoMKgwqAgTElTVF9J
TklUKCZkZW50cnlfaGFzaF90YWJsZVtpXSk7Cj4+IC3CoMKgwqAgfQo+PiArwqDCoMKgIGZvciAo
aSA9IDA7IGkgPCBERU5UUllfQlVDS0VUUzsgaSsrKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBMSVNU
X0lOSVQoJmRlbnRyeV9oYXNoX3RhYmxlW2ldKTsKPj4gK8KgwqDCoCB9Cj4+IMKgIH0KPj4gZGlm
ZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2ZvcHMuYyBiL2xpYi92ZnNjb3JlL2ZvcHMuYwo+PiBpbmRl
eCAzYThmOThiNC4uYWIxZjhjYmIgMTAwNjQ0Cj4+IC0tLSBhL2xpYi92ZnNjb3JlL2ZvcHMuYwo+
PiArKysgYi9saWIvdmZzY29yZS9mb3BzLmMKPiBFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIHVz
ZSB0YWJzIHdoZXJlIHBvc3NpYmxlCj4gCj4gIzg1OiBGSUxFOiBsaWIvdmZzY29yZS9mb3BzLmM6
ODU6Cj4gCj4gK15JwqDCoMKgwqDCoMKgwqAgdWlvLT51aW9fb2Zmc2V0ID0gZnAtPmZfb2Zmc2V0
OyQKPiAKPiAKPiAKPj4gQEAgLTE0MCwxNyArMTQwLDE3IEBAIGludCB2ZnNfZmlsZTo6Y2htb2Qo
bW9kZV90IG1vZGUpCj4+IMKgIGJvb2wgdmZzX2ZpbGU6Om1hcF9wYWdlKHVpbnRwdHJfdCBvZmYs
IG1tdTo6aHdfcHRlcDwwPiBwdGVwLCAKPj4gbW11OjpwdF9lbGVtZW50PDA+IHB0ZSwgYm9vbCB3
cml0ZSwgYm9vbCBzaGFyZWQpCj4+IMKgIHsKPj4gLcKgwqDCoCByZXR1cm4gcGFnZWNhY2hlOjpn
ZXQodGhpcywgb2ZmLCBwdGVwLCBwdGUsIHdyaXRlLCBzaGFyZWQpOwo+PiArwqDCoMKgIHJldHVy
biBwYWdlY2FjaGU6OmdldCh0aGlzLCBvZmYsIHB0ZXAsIHB0ZSwgd3JpdGUsIHNoYXJlZCk7Cj4+
IMKgIH0KPj4gwqAgYm9vbCB2ZnNfZmlsZTo6cHV0X3BhZ2Uodm9pZCAqYWRkciwgdWludHB0cl90
IG9mZiwgbW11Ojpod19wdGVwPDA+IAo+PiBwdGVwKQo+PiDCoCB7Cj4+IC3CoMKgwqAgcmV0dXJu
IHBhZ2VjYWNoZTo6cmVsZWFzZSh0aGlzLCBhZGRyLCBvZmYsIHB0ZXApOwo+PiArwqDCoMKgIHJl
dHVybiBwYWdlY2FjaGU6OnJlbGVhc2UodGhpcywgYWRkciwgb2ZmLCBwdGVwKTsKPj4gwqAgfQo+
PiDCoCB2b2lkIHZmc19maWxlOjpzeW5jKG9mZl90IHN0YXJ0LCBvZmZfdCBlbmQpCj4+IMKgIHsK
Pj4gLcKgwqDCoCBwYWdlY2FjaGU6OnN5bmModGhpcywgc3RhcnQsIGVuZCk7Cj4+ICvCoMKgwqAg
cGFnZWNhY2hlOjpzeW5jKHRoaXMsIHN0YXJ0LCBlbmQpOwo+PiDCoCB9Cj4+IMKgIC8vIExvY2tp
bmc6IFZPUF9DQUNIRSB3aWxsIGNhbGwgaW50byB0aGUgZmlsZXN5c3RlbSwgYW5kIHRoYXQgY2Fu
IAo+PiB0cmlnZ2VyIGFuCj4+IEBAIC0xNTksMjMgKzE1OSwyMyBAQCB2b2lkIHZmc19maWxlOjpz
eW5jKG9mZl90IHN0YXJ0LCBvZmZfdCBlbmQpCj4+IMKgIC8vIGJlY2F1c2Ugbm90IGFsbCBpbnZh
bGlkYXRpb25zIHdpbGwgYmUgc3luY2hyb25vdXMuCj4+IMKgIGludCB2ZnNfZmlsZTo6Z2V0X2Fy
Y2J1Zih2b2lkKiBrZXksIG9mZl90IG9mZnNldCkKPj4gwqAgewo+PiAtwqDCoMKgIHN0cnVjdCB2
bm9kZSAqdnAgPSBmX2RlbnRyeS0+ZF92bm9kZTsKPj4gK8KgwqDCoCBzdHJ1Y3Qgdm5vZGUgKnZw
ID0gZl9kZW50cnktPmRfdm5vZGU7Cj4+IC3CoMKgwqAgaW92ZWMgaW9bMV07Cj4+ICvCoMKgwqAg
aW92ZWMgaW9bMV07Cj4+IC3CoMKgwqAgaW9bMF0uaW92X2Jhc2UgPSBrZXk7Cj4+IC3CoMKgwqAg
dWlvIGRhdGE7Cj4+IC3CoMKgwqAgZGF0YS51aW9faW92ID0gaW87Cj4+IC3CoMKgwqAgZGF0YS51
aW9faW92Y250ID0gMTsKPj4gLcKgwqDCoCBkYXRhLnVpb19vZmZzZXQgPSBvZmZzZXQ7Cj4+IC3C
oMKgwqAgZGF0YS51aW9fcmVzaWQgPSBtbXU6OnBhZ2Vfc2l6ZTsKPj4gLcKgwqDCoCBkYXRhLnVp
b19ydyA9IFVJT19SRUFEOwo+PiArwqDCoMKgIGlvWzBdLmlvdl9iYXNlID0ga2V5Owo+PiArwqDC
oMKgIHVpbyBkYXRhOwo+PiArwqDCoMKgIGRhdGEudWlvX2lvdiA9IGlvOwo+PiArwqDCoMKgIGRh
dGEudWlvX2lvdmNudCA9IDE7Cj4+ICvCoMKgwqAgZGF0YS51aW9fb2Zmc2V0ID0gb2Zmc2V0Owo+
PiArwqDCoMKgIGRhdGEudWlvX3Jlc2lkID0gbW11OjpwYWdlX3NpemU7Cj4+ICvCoMKgwqAgZGF0
YS51aW9fcncgPSBVSU9fUkVBRDsKPj4gLcKgwqDCoCB2bl9sb2NrKHZwKTsKPj4gLcKgwqDCoCBh
c3NlcnQoVk9QX0NBQ0hFKHZwLCB0aGlzLCAmZGF0YSkgPT0gMCk7Cj4+IC3CoMKgwqAgdm5fdW5s
b2NrKHZwKTsKPj4gK8KgwqDCoCB2bl9sb2NrKHZwKTsKPj4gK8KgwqDCoCBhc3NlcnQoVk9QX0NB
Q0hFKHZwLCB0aGlzLCAmZGF0YSkgPT0gMCk7Cj4+ICvCoMKgwqAgdm5fdW5sb2NrKHZwKTsKPj4g
LcKgwqDCoCByZXR1cm4gKGRhdGEudWlvX3Jlc2lkICE9IDApID8gLTEgOiAwOwo+PiArwqDCoMKg
IHJldHVybiAoZGF0YS51aW9fcmVzaWQgIT0gMCkgPyAtMSA6IDA7Cj4+IMKgIH0KPj4gwqAgc3Rk
Ojp1bmlxdWVfcHRyPG1tdTo6ZmlsZV92bWE+IHZmc19maWxlOjptbWFwKGFkZHJfcmFuZ2UgcmFu
Z2UsIAo+PiB1bnNpZ25lZCBmbGFncywgdW5zaWduZWQgcGVybSwgb2ZmX3Qgb2Zmc2V0KQo+PiBk
aWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2RlbnRyeS5oIAo+PiBiL2xp
Yi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9kZW50cnkuaAo+PiBpbmRleCBhMjU0NWFmOC4uZjU4
NTA3ODYgMTAwNjQ0Cj4+IC0tLSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9kZW50cnku
aAo+PiArKysgYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZGVudHJ5LmgKPj4gQEAgLTMz
LDggKzMzLDggQEAgc3RydWN0IGRlbnRyeSB7Cj4+IMKgIHVzaW5nIGRlbnRyeV9yZWYgPSBib29z
dDo6aW50cnVzaXZlX3B0cjxkZW50cnk+Owo+PiDCoCBleHRlcm4gIkMiIHsKPj4gLcKgwqDCoCB2
b2lkIGRyZWYoc3RydWN0IGRlbnRyeSogZHApOwo+PiAtwqDCoMKgIHZvaWQgZHJlbGUoc3RydWN0
IGRlbnRyeSogZHApOwo+PiArwqDCoMKgIHZvaWQgZHJlZihzdHJ1Y3QgZGVudHJ5KiBkcCk7Cj4+
ICvCoMKgwqAgdm9pZCBkcmVsZShzdHJ1Y3QgZGVudHJ5KiBkcCk7Cj4+IMKgIH07Cj4+IMKgIGlu
bGluZSB2b2lkIGludHJ1c2l2ZV9wdHJfYWRkX3JlZihkZW50cnkqIGRwKSB7IGRyZWYoZHApOyB9
Cj4+IGRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvbW91bnQuaCAKPj4g
Yi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvbW91bnQuaAo+PiBpbmRleCA3MjY4ZDhjZS4u
MGU3ODkyOWYgMTAwNjQ0Cj4+IC0tLSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9tb3Vu
dC5oCj4+ICsrKyBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9tb3VudC5oCj4gV0FSTklO
RzogcGxlYXNlLCBubyBzcGFjZSBiZWZvcmUgdGFicwo+IAo+ICM1NzogRklMRTogbGliL3Zmc2Nv
cmUvaW5jbHVkZS92ZnNjb3JlL21vdW50Lmg6NTc6Cj4gCj4gK15JZnNpZF90IF5JXkltX2ZzaWQ7
IF5JLyogaWQgdGhhdCB1bmlxdWVseSBpZGVudGlmaWVzIHRoZSBmcyAqLyQKPiAKPiAKPj4gQEAg
LTE1NiwxMCArMTU2LDEwIEBAIF9fRU5EX0RFQ0xTCj4+IMKgIG5hbWVzcGFjZSBvc3Ygewo+PiDC
oCBzdHJ1Y3QgbW91bnRfZGVzYyB7Cj4+IC3CoMKgwqAgc3RkOjpzdHJpbmcgc3BlY2lhbDsKPj4g
LcKgwqDCoCBzdGQ6OnN0cmluZyBwYXRoOwo+PiAtwqDCoMKgIHN0ZDo6c3RyaW5nIHR5cGU7Cj4+
IC3CoMKgwqAgc3RkOjpzdHJpbmcgb3B0aW9uczsKPj4gK8KgwqDCoCBzdGQ6OnN0cmluZyBzcGVj
aWFsOwo+PiArwqDCoMKgIHN0ZDo6c3RyaW5nIHBhdGg7Cj4+ICvCoMKgwqAgc3RkOjpzdHJpbmcg
dHlwZTsKPj4gK8KgwqDCoCBzdGQ6OnN0cmluZyBvcHRpb25zOwo+PiDCoCB9Owo+PiDCoCBzdGQ6
OnZlY3Rvcjxtb3VudF9kZXNjPiBjdXJyZW50X21vdW50cygpOwo+PiBkaWZmIC0tZ2l0IGEvbGli
L3Zmc2NvcmUvbG9va3VwLmMgYi9saWIvdmZzY29yZS9sb29rdXAuYwo+PiBpbmRleCBhZDAzZmUy
NS4uMzAxMzlhODcgMTAwNjQ0Cj4+IC0tLSBhL2xpYi92ZnNjb3JlL2xvb2t1cC5jCj4+ICsrKyBi
L2xpYi92ZnNjb3JlL2xvb2t1cC5jCj4+IEBAIC00MCw1NyArNDAsNTcgQEAKPj4gwqAgc3RhdGlj
IHNzaXplX3QKPj4gwqAgcmVhZF9saW5rKHN0cnVjdCB2bm9kZSAqdnAsIGNoYXIgKmJ1Ziwgc2l6
ZV90IGJ1ZnN6LCBzc2l6ZV90ICpzeikKPj4gwqAgewo+PiAtwqDCoMKgIHN0cnVjdCBpb3ZlYyBp
b3YgPSB7YnVmLCBidWZzen07Cj4+IC3CoMKgwqAgc3RydWN0IHVpb8KgwqAgdWlvID0geyZpb3Ys
IDEsIDAsIChzc2l6ZV90KSBidWZzeiwgVUlPX1JFQUR9Owo+PiAtwqDCoMKgIGludCByYzsKPj4g
K8KgwqDCoCBzdHJ1Y3QgaW92ZWMgaW92ID0ge2J1ZiwgYnVmc3p9Owo+PiArwqDCoMKgIHN0cnVj
dCB1aW/CoMKgIHVpbyA9IHsmaW92LCAxLCAwLCAoc3NpemVfdCkgYnVmc3osIFVJT19SRUFEfTsK
Pj4gK8KgwqDCoCBpbnQgcmM7Cj4+IC3CoMKgwqAgKnN6ID0gMDsKPj4gLcKgwqDCoCB2bl9sb2Nr
KHZwKTsKPj4gLcKgwqDCoCByY8KgID0gVk9QX1JFQURMSU5LKHZwLCAmdWlvKTsKPj4gLcKgwqDC
oCB2bl91bmxvY2sodnApOwo+PiArwqDCoMKgICpzeiA9IDA7Cj4+ICvCoMKgwqAgdm5fbG9jayh2
cCk7Cj4+ICvCoMKgwqAgcmPCoCA9IFZPUF9SRUFETElOSyh2cCwgJnVpbyk7Cj4+ICvCoMKgwqAg
dm5fdW5sb2NrKHZwKTsKPj4gLcKgwqDCoCBpZiAocmMgIT0gMCkgewo+PiAtwqDCoMKgwqDCoMKg
wqAgcmV0dXJuIChyYyk7Cj4+IC3CoMKgwqAgfQo+PiArwqDCoMKgIGlmIChyYyAhPSAwKSB7Cj4+
ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gKHJjKTsKPj4gK8KgwqDCoCB9Cj4+IC3CoMKgwqAgKnN6
ID0gYnVmc3ogLSB1aW8udWlvX3Jlc2lkOwo+PiAtwqDCoMKgIHJldHVybiAoMCk7Cj4+ICvCoMKg
wqAgKnN6ID0gYnVmc3ogLSB1aW8udWlvX3Jlc2lkOwo+PiArwqDCoMKgIHJldHVybiAoMCk7Cj4+
IMKgIH0KPj4gwqAgaW50Cj4+IMKgIG5hbWVpX2ZvbGxvd19saW5rKHN0cnVjdCBkZW50cnkgKmRw
LCBjaGFyICpub2RlLCBjaGFyICpuYW1lLCBjaGFyIAo+PiAqZnAsIHNpemVfdCBtb3VudHBvaW50
X2xlbikKPj4gwqAgewo+PiAtwqDCoMKgIHN0ZDo6dW5pcXVlX3B0cjxjaGFyIFtdPiBsaW5rIChu
ZXcgY2hhcltQQVRIX01BWF0pOwo+PiAtwqDCoMKgIHN0ZDo6dW5pcXVlX3B0cjxjaGFyIFtdPiB0
IChuZXcgY2hhcltQQVRIX01BWF0pOwo+PiAtwqDCoMKgIGNoYXLCoMKgwqAgKmxwOwo+PiAtwqDC
oMKgIGludMKgwqDCoMKgIGVycm9yOwo+PiAtwqDCoMKgIHNzaXplX3Qgc3o7Cj4+IC3CoMKgwqAg
Y2hhcsKgwqDCoCAqcDsKPj4gLcKgwqDCoCBpbnTCoMKgwqDCoCBjOwo+PiAtCj4+IC3CoMKgwqAg
bHDCoMKgwqAgPSBsaW5rLmdldCgpOwo+PiAtwqDCoMKgIGVycm9yID0gcmVhZF9saW5rKGRwLT5k
X3Zub2RlLCBscCwgUEFUSF9NQVgsICZzeik7Cj4+IC3CoMKgwqAgaWYgKGVycm9yICE9IDApIHsK
Pj4gLcKgwqDCoMKgwqDCoMKgIHJldHVybiAoZXJyb3IpOwo+PiAtwqDCoMKgIH0KPj4gLcKgwqDC
oCBscFtzel0gPSAwOwo+PiAtCj4+IC3CoMKgwqAgcCA9IGZwICsgbW91bnRwb2ludF9sZW4gKyBz
dHJsZW4obm9kZSk7Cj4+IC3CoMKgwqAgYyA9IHN0cmxlbihub2RlKSAtIHN0cmxlbihuYW1lKSAt
IDE7Cj4+IC3CoMKgwqAgbm9kZVtjXSA9IDA7Cj4+IC0KPj4gLcKgwqDCoCBpZiAobHBbMF0gPT0g
Jy8nKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCBzdHJsY2F0KGxwLCBwLCBQQVRIX01BWCk7Cj4+IC3C
oMKgwqDCoMKgwqDCoCBzdHJsY3B5KGZwLCBscCwgUEFUSF9NQVgpOwo+PiAtwqDCoMKgIH0gZWxz
ZSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCBzdHJsY3B5KHQuZ2V0KCksIHAsIFBBVEhfTUFYKTsKPj4g
LcKgwqDCoMKgwqDCoMKgIHN0cmxjcHkobm9kZSwgZnAsIG1vdW50cG9pbnRfbGVuICsgYyArIDEp
Owo+PiAtwqDCoMKgwqDCoMKgwqAgcGF0aF9jb252KG5vZGUsIGxwLCBmcCk7Cj4+IC3CoMKgwqDC
oMKgwqDCoCBzdHJsY2F0KGZwLCB0LmdldCgpLCBQQVRIX01BWCk7Cj4+IC3CoMKgwqAgfQo+PiAt
wqDCoMKgIG5vZGVbMF0gPSAwOwo+PiAtwqDCoMKgIG5hbWVbMF0gPSAwOwo+PiAtwqDCoMKgIHJl
dHVybiAoMCk7Cj4+ICvCoMKgwqAgc3RkOjp1bmlxdWVfcHRyPGNoYXIgW10+IGxpbmsgKG5ldyBj
aGFyW1BBVEhfTUFYXSk7Cj4+ICvCoMKgwqAgc3RkOjp1bmlxdWVfcHRyPGNoYXIgW10+IHQgKG5l
dyBjaGFyW1BBVEhfTUFYXSk7Cj4+ICvCoMKgwqAgY2hhcsKgwqDCoCAqbHA7Cj4+ICvCoMKgwqAg
aW50wqDCoMKgwqAgZXJyb3I7Cj4+ICvCoMKgwqAgc3NpemVfdCBzejsKPj4gK8KgwqDCoCBjaGFy
wqDCoMKgICpwOwo+PiArwqDCoMKgIGludMKgwqDCoMKgIGM7Cj4+ICsKPj4gK8KgwqDCoCBscMKg
wqDCoCA9IGxpbmsuZ2V0KCk7Cj4+ICvCoMKgwqAgZXJyb3IgPSByZWFkX2xpbmsoZHAtPmRfdm5v
ZGUsIGxwLCBQQVRIX01BWCwgJnN6KTsKPj4gK8KgwqDCoCBpZiAoZXJyb3IgIT0gMCkgewo+PiAr
wqDCoMKgwqDCoMKgwqAgcmV0dXJuIChlcnJvcik7Cj4+ICvCoMKgwqAgfQo+PiArwqDCoMKgIGxw
W3N6XSA9IDA7Cj4+ICsKPj4gK8KgwqDCoCBwID0gZnAgKyBtb3VudHBvaW50X2xlbiArIHN0cmxl
bihub2RlKTsKPj4gK8KgwqDCoCBjID0gc3RybGVuKG5vZGUpIC0gc3RybGVuKG5hbWUpIC0gMTsK
Pj4gK8KgwqDCoCBub2RlW2NdID0gMDsKPj4gKwo+PiArwqDCoMKgIGlmIChscFswXSA9PSAnLycp
IHsKPj4gK8KgwqDCoMKgwqDCoMKgIHN0cmxjYXQobHAsIHAsIFBBVEhfTUFYKTsKPj4gK8KgwqDC
oMKgwqDCoMKgIHN0cmxjcHkoZnAsIGxwLCBQQVRIX01BWCk7Cj4+ICvCoMKgwqAgfSBlbHNlIHsK
Pj4gK8KgwqDCoMKgwqDCoMKgIHN0cmxjcHkodC5nZXQoKSwgcCwgUEFUSF9NQVgpOwo+PiArwqDC
oMKgwqDCoMKgwqAgc3RybGNweShub2RlLCBmcCwgbW91bnRwb2ludF9sZW4gKyBjICsgMSk7Cj4+
ICvCoMKgwqDCoMKgwqDCoCBwYXRoX2NvbnYobm9kZSwgbHAsIGZwKTsKPj4gK8KgwqDCoMKgwqDC
oMKgIHN0cmxjYXQoZnAsIHQuZ2V0KCksIFBBVEhfTUFYKTsKPj4gK8KgwqDCoCB9Cj4+ICvCoMKg
wqAgbm9kZVswXSA9IDA7Cj4+ICvCoMKgwqAgbmFtZVswXSA9IDA7Cj4+ICvCoMKgwqAgcmV0dXJu
ICgwKTsKPj4gwqAgfQo+PiDCoCAvKgo+PiDCoMKgICogQ29udmVydCBhIHBhdGhuYW1lIGludG8g
YSBwb2ludGVyIHRvIGEgZGVudHJ5Cj4+IEBAIC0xMDEsMTM3ICsxMDEsMTM3IEBAIG5hbWVpX2Zv
bGxvd19saW5rKHN0cnVjdCBkZW50cnkgKmRwLCBjaGFyIAo+PiAqbm9kZSwgY2hhciAqbmFtZSwg
Y2hhciAqZnAsIHNpemVfdCBtbwo+PiDCoCBpbnQKPj4gwqAgbmFtZWkoY29uc3QgY2hhciAqcGF0
aCwgc3RydWN0IGRlbnRyeSAqKmRwcCkKPj4gwqAgewo+PiAtwqDCoMKgIGNoYXIgKnA7Cj4+IC3C
oMKgwqAgY2hhciBub2RlW1BBVEhfTUFYXTsKPj4gLcKgwqDCoCBjaGFyIG5hbWVbUEFUSF9NQVhd
Owo+PiAtwqDCoMKgIHN0ZDo6dW5pcXVlX3B0cjxjaGFyIFtdPiBmcCAobmV3IGNoYXIgW1BBVEhf
TUFYXSk7Cj4+IC3CoMKgwqAgc3RkOjp1bmlxdWVfcHRyPGNoYXIgW10+IHQgKG5ldyBjaGFyIFtQ
QVRIX01BWF0pOwo+PiAtwqDCoMKgIHN0cnVjdCBtb3VudCAqbXA7Cj4+IC3CoMKgwqAgc3RydWN0
IGRlbnRyeSAqZHAsICpkZHA7Cj4+IC3CoMKgwqAgc3RydWN0IHZub2RlICpkdnAsICp2cDsKPj4g
LcKgwqDCoCBpbnQgZXJyb3IsIGk7Cj4+IC3CoMKgwqAgaW50IGxpbmtzX2ZvbGxvd2VkOwo+PiAt
wqDCoMKgIGJvb2wgbmVlZF9jb250aW51ZTsKPj4gLQo+PiAtwqDCoMKgIERQUklOVEYoVkZTREJf
Vk5PREUsICgibmFtZWk6IHBhdGg9JXNcbiIsIHBhdGgpKTsKPj4gLQo+PiAtwqDCoMKgIGxpbmtz
X2ZvbGxvd2VkID0gMDsKPj4gLcKgwqDCoCBzdHJsY3B5KGZwLmdldCgpLCBwYXRoLCBQQVRIX01B
WCk7Cj4+IC0KPj4gLcKgwqDCoCBkbyB7Cj4+IC3CoMKgwqDCoMKgwqDCoCBuZWVkX2NvbnRpbnVl
ID0gZmFsc2U7Cj4+IC3CoMKgwqDCoMKgwqDCoCAvKgo+PiAtwqDCoMKgwqDCoMKgwqDCoCAqIENv
bnZlcnQgYSBmdWxsIHBhdGggbmFtZSB0byBpdHMgbW91bnQgcG9pbnQgYW5kCj4+IC3CoMKgwqDC
oMKgwqDCoMKgICogdGhlIGxvY2FsIG5vZGUgaW4gdGhlIGZpbGUgc3lzdGVtLgo+PiAtwqDCoMKg
wqDCoMKgwqDCoCAqLwo+PiAtwqDCoMKgwqDCoMKgwqAgaWYgKHZmc19maW5kcm9vdChmcC5nZXQo
KSwgJm1wLCAmcCkpIHsKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIEVOT1RESVI7
Cj4+IC3CoMKgwqDCoMKgwqDCoCB9Cj4+IC3CoMKgwqDCoMKgwqDCoCBpbnQgbW91bnRwb2ludF9s
ZW4gPSBwIC0gZnAuZ2V0KCkgLSAxOwo+PiAtwqDCoMKgwqDCoMKgwqAgc3RybGNweShub2RlLCAi
LyIsIHNpemVvZihub2RlKSk7Cj4+IC3CoMKgwqDCoMKgwqDCoCBzdHJsY2F0KG5vZGUsIHAsIHNp
emVvZihub2RlKSk7Cj4+IC3CoMKgwqDCoMKgwqDCoCBkcCA9IGRlbnRyeV9sb29rdXAobXAsIG5v
ZGUpOwo+PiAtwqDCoMKgwqDCoMKgwqAgaWYgKGRwKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDC
oMKgIC8qIHZub2RlIGlzIGFscmVhZHkgYWN0aXZlLiAqLwo+PiAtwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoCAqZHBwID0gZHA7Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAwOwo+PiAt
wqDCoMKgwqDCoMKgwqAgfQo+PiAtwqDCoMKgwqDCoMKgwqAgLyoKPj4gLcKgwqDCoMKgwqDCoMKg
wqAgKiBGaW5kIHRhcmdldCB2bm9kZSwgc3RhcnRlZCBmcm9tIHJvb3QgZGlyZWN0b3J5Lgo+PiAt
wqDCoMKgwqDCoMKgwqDCoCAqIFRoaXMgaXMgZG9uZSB0byBhdHRhY2ggdGhlIGZzIHNwZWNpZmlj
IGRhdGEgdG8KPj4gLcKgwqDCoMKgwqDCoMKgwqAgKiB0aGUgdGFyZ2V0IHZub2RlLgo+PiAtwqDC
oMKgwqDCoMKgwqDCoCAqLwo+PiAtwqDCoMKgwqDCoMKgwqAgZGRwID0gbXAtPm1fcm9vdDsKPj4g
LcKgwqDCoMKgwqDCoMKgIGlmICghZGRwKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN5
c19wYW5pYygiVkZTOiBubyByb290Iik7Cj4+IC3CoMKgwqDCoMKgwqDCoCB9Cj4+IC3CoMKgwqDC
oMKgwqDCoCBkcmVmKGRkcCk7Cj4+IC0KPj4gLcKgwqDCoMKgwqDCoMKgIG5vZGVbMF0gPSAnXDAn
Owo+PiAtCj4+IC3CoMKgwqDCoMKgwqDCoCB3aGlsZSAoKnAgIT0gJ1wwJykgewo+PiAtwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoCAvKgo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogR2V0IGxv
d2VyIGRpcmVjdG9yeS9maWxlIG5hbWUuCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8K
Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgd2hpbGUgKCpwID09ICcvJykgewo+PiAtwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHArKzsKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg
fQo+PiAtCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmICgqcCA9PSAnXDAnKSB7Cj4+IC3C
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7Cj4+IC3CoMKgwqDCoMKgwqDCoMKg
wqDCoMKgIH0KPj4gLQo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmb3IgKGkgPSAwOyBpIDwg
UEFUSF9NQVg7IGkrKykgewo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmICgq
cCA9PSAnXDAnIHx8ICpwID09ICcvJykgewo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqAgYnJlYWs7Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+
PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG5hbWVbaV0gPSAqcCsrOwo+PiAtwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG5hbWVbaV0g
PSAnXDAnOwo+PiAtCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qCj4+IC3CoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqAgKiBHZXQgYSB2bm9kZSBmb3IgdGhlIHRhcmdldC4KPj4gLcKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoCAqLwo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJsY2F0KG5v
ZGUsICIvIiwgc2l6ZW9mKG5vZGUpKTsKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RybGNh
dChub2RlLCBuYW1lLCBzaXplb2Yobm9kZSkpOwo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBk
dnAgPSBkZHAtPmRfdm5vZGU7Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHZuX2xvY2soZHZw
KTsKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZHAgPSBkZW50cnlfbG9va3VwKG1wLCBub2Rl
KTsKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGRwID09IG51bGxwdHIpIHsKPj4gLcKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBGaW5kIGEgdm5vZGUgaW4gdGhpcyBkaXJl
Y3RvcnkuICovCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZXJyb3IgPSBWT1Bf
TE9PS1VQKGR2cCwgbmFtZSwgJnZwKTsKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oCBpZiAoZXJyb3IpIHsKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
IHZuX3VubG9jayhkdnApOwo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqAgZHJlbGUoZGRwKTsKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
IHJldHVybiBlcnJvcjsKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+IC0K
Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkcCA9IGRlbnRyeV9hbGxvYyhkZHAs
IHZwLCBub2RlKTsKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB2cHV0KHZwKTsK
Pj4gLQo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmICghZHApIHsKPj4gLcKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHZuX3VubG9jayhkdnApOwo+PiAt
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZHJlbGUoZGRwKTsKPj4gLcKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBFTk9NRU07Cj4+IC3C
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oCB9Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHZuX3VubG9jayhkdnApOwo+PiAtwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoCBkcmVsZShkZHApOwo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBk
ZHAgPSBkcDsKPj4gLQo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoZHAtPmRfdm5vZGUt
PnZfdHlwZSA9PSBWTE5LKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZXJy
b3IgPSBuYW1laV9mb2xsb3dfbGluayhkcCwgbm9kZSwgbmFtZSwgZnAuZ2V0KCksIAo+PiBtb3Vu
dHBvaW50X2xlbik7Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGVycm9y
KSB7Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkcmVsZShkcCk7
Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gKGVycm9y
KTsKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+IC0KPj4gLcKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkcmVsZShkcCk7Cj4+IC0KPj4gLcKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoCBwwqDCoMKgwqDCoMKgID0gZnAuZ2V0KCk7Cj4+IC3CoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqAgZHDCoMKgwqDCoMKgID0gbnVsbHB0cjsKPj4gLcKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkZHDCoMKgwqDCoCA9IG51bGxwdHI7Cj4+IC3CoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdnDCoMKgwqDCoMKgID0gbnVsbHB0cjsKPj4gLcKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkdnDCoMKgwqDCoCA9IG51bGxwdHI7Cj4+IC3CoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbmFtZVswXSA9IDA7Cj4+IC3CoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqAgbm9kZVswXSA9IDA7Cj4+IC0KPj4gLcKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoCBpZiAoKytsaW5rc19mb2xsb3dlZCA+PSBNQVhTWU1MSU5LUykgewo+PiAt
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIChFTE9PUCk7Cj4+
IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+PiAtwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgIG5lZWRfY29udGludWUgPSB0cnVlOwo+PiAtwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgIGJyZWFrOwo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+IC0KPj4g
LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKCpwID09ICcvJyAmJiBkZHAtPmRfdm5vZGUtPnZf
dHlwZSAhPSBWRElSKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZHJlbGUo
ZGRwKTsKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gRU5PVERJUjsK
Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+PiAtwqDCoMKgwqDCoMKgwqAgfQo+PiAtwqDC
oMKgIH0gd2hpbGUgKG5lZWRfY29udGludWUgPT0gdHJ1ZSk7Cj4+IC0KPj4gLcKgwqDCoCAqZHBw
ID0gZHA7Cj4+IC3CoMKgwqAgcmV0dXJuIDA7Cj4+ICvCoMKgwqAgY2hhciAqcDsKPj4gK8KgwqDC
oCBjaGFyIG5vZGVbUEFUSF9NQVhdOwo+PiArwqDCoMKgIGNoYXIgbmFtZVtQQVRIX01BWF07Cj4+
ICvCoMKgwqAgc3RkOjp1bmlxdWVfcHRyPGNoYXIgW10+IGZwIChuZXcgY2hhciBbUEFUSF9NQVhd
KTsKPj4gK8KgwqDCoCBzdGQ6OnVuaXF1ZV9wdHI8Y2hhciBbXT4gdCAobmV3IGNoYXIgW1BBVEhf
TUFYXSk7Cj4+ICvCoMKgwqAgc3RydWN0IG1vdW50ICptcDsKPj4gK8KgwqDCoCBzdHJ1Y3QgZGVu
dHJ5ICpkcCwgKmRkcDsKPj4gK8KgwqDCoCBzdHJ1Y3Qgdm5vZGUgKmR2cCwgKnZwOwo+PiArwqDC
oMKgIGludCBlcnJvciwgaTsKPj4gK8KgwqDCoCBpbnQgbGlua3NfZm9sbG93ZWQ7Cj4+ICvCoMKg
wqAgYm9vbCBuZWVkX2NvbnRpbnVlOwo+PiArCj4+ICvCoMKgwqAgRFBSSU5URihWRlNEQl9WTk9E
RSwgKCJuYW1laTogcGF0aD0lc1xuIiwgcGF0aCkpOwo+PiArCj4+ICvCoMKgwqAgbGlua3NfZm9s
bG93ZWQgPSAwOwo+PiArwqDCoMKgIHN0cmxjcHkoZnAuZ2V0KCksIHBhdGgsIFBBVEhfTUFYKTsK
Pj4gKwo+PiArwqDCoMKgIGRvIHsKPj4gK8KgwqDCoMKgwqDCoMKgIG5lZWRfY29udGludWUgPSBm
YWxzZTsKPj4gK8KgwqDCoMKgwqDCoMKgIC8qCj4+ICvCoMKgwqDCoMKgwqDCoMKgICogQ29udmVy
dCBhIGZ1bGwgcGF0aCBuYW1lIHRvIGl0cyBtb3VudCBwb2ludCBhbmQKPj4gK8KgwqDCoMKgwqDC
oMKgwqAgKiB0aGUgbG9jYWwgbm9kZSBpbiB0aGUgZmlsZSBzeXN0ZW0uCj4+ICvCoMKgwqDCoMKg
wqDCoMKgICovCj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAodmZzX2ZpbmRyb290KGZwLmdldCgpLCAm
bXAsICZwKSkgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gRU5PVERJUjsKPj4g
K8KgwqDCoMKgwqDCoMKgIH0KPj4gK8KgwqDCoMKgwqDCoMKgIGludCBtb3VudHBvaW50X2xlbiA9
IHAgLSBmcC5nZXQoKSAtIDE7Cj4+ICvCoMKgwqDCoMKgwqDCoCBzdHJsY3B5KG5vZGUsICIvIiwg
c2l6ZW9mKG5vZGUpKTsKPj4gK8KgwqDCoMKgwqDCoMKgIHN0cmxjYXQobm9kZSwgcCwgc2l6ZW9m
KG5vZGUpKTsKPj4gK8KgwqDCoMKgwqDCoMKgIGRwID0gZGVudHJ5X2xvb2t1cChtcCwgbm9kZSk7
Cj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAoZHApIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAg
Lyogdm5vZGUgaXMgYWxyZWFkeSBhY3RpdmUuICovCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
ICpkcHAgPSBkcDsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIDA7Cj4+ICvCoMKg
wqDCoMKgwqDCoCB9Cj4+ICvCoMKgwqDCoMKgwqDCoCAvKgo+PiArwqDCoMKgwqDCoMKgwqDCoCAq
IEZpbmQgdGFyZ2V0IHZub2RlLCBzdGFydGVkIGZyb20gcm9vdCBkaXJlY3RvcnkuCj4+ICvCoMKg
wqDCoMKgwqDCoMKgICogVGhpcyBpcyBkb25lIHRvIGF0dGFjaCB0aGUgZnMgc3BlY2lmaWMgZGF0
YSB0bwo+PiArwqDCoMKgwqDCoMKgwqDCoCAqIHRoZSB0YXJnZXQgdm5vZGUuCj4+ICvCoMKgwqDC
oMKgwqDCoMKgICovCj4+ICvCoMKgwqDCoMKgwqDCoCBkZHAgPSBtcC0+bV9yb290Owo+PiArwqDC
oMKgwqDCoMKgwqAgaWYgKCFkZHApIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3lzX3Bh
bmljKCJWRlM6IG5vIHJvb3QiKTsKPj4gK8KgwqDCoMKgwqDCoMKgIH0KPj4gK8KgwqDCoMKgwqDC
oMKgIGRyZWYoZGRwKTsKPj4gKwo+PiArwqDCoMKgwqDCoMKgwqAgbm9kZVswXSA9ICdcMCc7Cj4+
ICsKPj4gK8KgwqDCoMKgwqDCoMKgIHdoaWxlICgqcCAhPSAnXDAnKSB7Cj4+ICvCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgIC8qCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBHZXQgbG93ZXIg
ZGlyZWN0b3J5L2ZpbGUgbmFtZS4KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqLwo+PiAr
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB3aGlsZSAoKnAgPT0gJy8nKSB7Cj4+ICvCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqAgcCsrOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+
ICsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKCpwID09ICdcMCcpIHsKPj4gK8KgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg
wqAgfQo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZvciAoaSA9IDA7IGkgPCBQQVRI
X01BWDsgaSsrKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKCpwID09
ICdcMCcgfHwgKnAgPT0gJy8nKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoCBicmVhazsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+ICvC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbmFtZVtpXSA9ICpwKys7Cj4+ICvCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgIH0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbmFtZVtpXSA9ICdc
MCc7Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyoKPj4gK8KgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoCAqIEdldCBhIHZub2RlIGZvciB0aGUgdGFyZ2V0Lgo+PiArwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgICovCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cmxjYXQobm9kZSwg
Ii8iLCBzaXplb2Yobm9kZSkpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJsY2F0KG5v
ZGUsIG5hbWUsIHNpemVvZihub2RlKSk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGR2cCA9
IGRkcC0+ZF92bm9kZTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdm5fbG9jayhkdnApOwo+
PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkcCA9IGRlbnRyeV9sb29rdXAobXAsIG5vZGUpOwo+
PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoZHAgPT0gbnVsbHB0cikgewo+PiArwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIEZpbmQgYSB2bm9kZSBpbiB0aGlzIGRpcmVjdG9y
eS4gKi8KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlcnJvciA9IFZPUF9MT09L
VVAoZHZwLCBuYW1lLCAmdnApOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlm
IChlcnJvcikgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdm5f
dW5sb2NrKGR2cCk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBk
cmVsZShkZHApOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0
dXJuIGVycm9yOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4gKwo+PiAr
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRwID0gZGVudHJ5X2FsbG9jKGRkcCwgdnAs
IG5vZGUpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHZwdXQodnApOwo+PiAr
Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKCFkcCkgewo+PiArwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdm5fdW5sb2NrKGR2cCk7Cj4+ICvCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkcmVsZShkZHApOwo+PiArwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIEVOT01FTTsKPj4gK8KgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0K
Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdm5fdW5sb2NrKGR2cCk7Cj4+ICvCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgIGRyZWxlKGRkcCk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRkcCA9
IGRwOwo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChkcC0+ZF92bm9kZS0+dl90
eXBlID09IFZMTkspIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlcnJvciA9
IG5hbWVpX2ZvbGxvd19saW5rKGRwLCBub2RlLCBuYW1lLCBmcC5nZXQoKSwgCj4+IG1vdW50cG9p
bnRfbGVuKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoZXJyb3IpIHsK
Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRyZWxlKGRwKTsKPj4g
K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAoZXJyb3IpOwo+
PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgIGRyZWxlKGRwKTsKPj4gKwo+PiArwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgIHDCoMKgwqDCoMKgwqAgPSBmcC5nZXQoKTsKPj4gK8KgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoCBkcMKgwqDCoMKgwqAgPSBudWxscHRyOwo+PiArwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgIGRkcMKgwqDCoMKgID0gbnVsbHB0cjsKPj4gK8KgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoCB2cMKgwqDCoMKgwqAgPSBudWxscHRyOwo+PiArwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGR2cMKgwqDCoMKgID0gbnVsbHB0cjsKPj4gK8KgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBuYW1lWzBdID0gMDsKPj4gK8KgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoCBub2RlWzBdID0gMDsKPj4gKwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgIGlmICgrK2xpbmtzX2ZvbGxvd2VkID49IE1BWFNZTUxJTktTKSB7Cj4+ICvCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gKEVMT09QKTsKPj4gK8Kg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqAgbmVlZF9jb250aW51ZSA9IHRydWU7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqAgYnJlYWs7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4gKwo+PiArwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoKnAgPT0gJy8nICYmIGRkcC0+ZF92bm9kZS0+dl90eXBl
ICE9IFZESVIpIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkcmVsZShkZHAp
Owo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBFTk9URElSOwo+PiAr
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+ICvCoMKgwqDCoMKgwqDCoCB9Cj4+ICvCoMKgwqAg
fSB3aGlsZSAobmVlZF9jb250aW51ZSA9PSB0cnVlKTsKPj4gKwo+PiArwqDCoMKgICpkcHAgPSBk
cDsKPj4gK8KgwqDCoCByZXR1cm4gMDsKPj4gwqAgfQo+PiDCoCAvKgo+PiBAQCAtMjQ0LDY3ICsy
NDQsNjcgQEAgbmFtZWkoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IGRlbnRyeSAqKmRwcCkKPj4g
wqAgaW50Cj4+IMKgIG5hbWVpX2xhc3Rfbm9mb2xsb3coY2hhciAqcGF0aCwgc3RydWN0IGRlbnRy
eSAqZGRwLCBzdHJ1Y3QgZGVudHJ5IAo+PiAqKmRwcCkKPj4gwqAgewo+PiAtwqDCoMKgIGNoYXLC
oMKgwqDCoMKgwqDCoMKgwqAgKm5hbWU7Cj4+IC3CoMKgwqAgaW50wqDCoMKgwqDCoMKgwqDCoMKg
wqAgZXJyb3I7Cj4+IC3CoMKgwqAgc3RydWN0IG1vdW50wqAgKm1wOwo+PiAtwqDCoMKgIGNoYXLC
oMKgwqDCoMKgwqDCoMKgwqAgKnA7Cj4+IC3CoMKgwqAgc3RydWN0IGRlbnRyeSAqZHA7Cj4+IC3C
oMKgwqAgc3RydWN0IHZub2RlwqAgKmR2cDsKPj4gLcKgwqDCoCBzdHJ1Y3Qgdm5vZGXCoCAqdnA7
Cj4+IC3CoMKgwqAgc3RkOjp1bmlxdWVfcHRyPGNoYXIgW10+IG5vZGUgKG5ldyBjaGFyW1BBVEhf
TUFYXSk7Cj4+IC0KPj4gLcKgwqDCoCBkdnDCoCA9IG51bGxwdHI7Cj4+IC0KPj4gLcKgwqDCoCBp
ZiAocGF0aFswXSAhPSAnLycpIHsKPj4gLcKgwqDCoMKgwqDCoMKgIHJldHVybiAoRU5PVERJUik7
Cj4+IC3CoMKgwqAgfQo+PiAtCj4+IC3CoMKgwqAgbmFtZSA9IHN0cnJjaHIocGF0aCwgJy8nKTsK
Pj4gLcKgwqDCoCBpZiAobmFtZSA9PSBudWxscHRyKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCByZXR1
cm4gKEVOT0VOVCk7Cj4+IC3CoMKgwqAgfQo+PiAtwqDCoMKgIG5hbWUrKzsKPj4gLQo+PiAtwqDC
oMKgIGVycm9yID0gdmZzX2ZpbmRyb290KHBhdGgsICZtcCwgJnApOwo+PiAtwqDCoMKgIGlmIChl
cnJvciAhPSAwKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCByZXR1cm4gKEVOT1RESVIpOwo+PiAtwqDC
oMKgIH0KPj4gLQo+PiAtwqDCoMKgIHN0cmxjcHkobm9kZS5nZXQoKSwgIi8iLCBQQVRIX01BWCk7
Cj4+IC3CoMKgwqAgc3RybGNhdChub2RlLmdldCgpLCBwLCBQQVRIX01BWCk7Cj4+IC0KPj4gLcKg
wqDCoCAvLyBXZSB3YW50IHRvIHRyZWF0IHRoaW5ncyBsaWtlIC90bXAvIHRoZSBzYW1lIGFzIC90
bXAuIEJlc3Qgd2F5IAo+PiB0byBkbyB0aGF0Cj4+IC3CoMKgwqAgLy8gaXMgdG8gaWdub3JlIHRo
ZSBsYXN0IGNoYXJhY3RlciwgZXhjZXB0IHdoZW4gd2UncmUgc3RhdGluZyB0aGUgCj4+IHJvb3Qu
Cj4+IC3CoMKgwqAgYXV0byBsID0gc3RybGVuKG5vZGUuZ2V0KCkpIC0gMTsKPj4gLcKgwqDCoCBp
ZiAobCAmJiBub2RlLmdldCgpW2xdID09ICcvJykgewo+PiAtwqDCoMKgwqDCoMKgwqAgbm9kZS5n
ZXQoKVtsXSA9ICdcMCc7Cj4+IC3CoMKgwqAgfQo+PiAtCj4+IC3CoMKgwqAgZHZwID0gZGRwLT5k
X3Zub2RlOwo+PiAtwqDCoMKgIHZuX2xvY2soZHZwKTsKPj4gLcKgwqDCoCBkcCA9IGRlbnRyeV9s
b29rdXAobXAsIG5vZGUuZ2V0KCkpOwo+PiAtwqDCoMKgIGlmIChkcCA9PSBudWxscHRyKSB7Cj4+
IC3CoMKgwqDCoMKgwqDCoCBlcnJvciA9IFZPUF9MT09LVVAoZHZwLCBuYW1lLCAmdnApOwo+PiAt
wqDCoMKgwqDCoMKgwqAgaWYgKGVycm9yICE9IDApIHsKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg
wqAgZ290byBvdXQ7Cj4+IC3CoMKgwqDCoMKgwqDCoCB9Cj4+IC0KPj4gLcKgwqDCoMKgwqDCoMKg
IGRwID0gZGVudHJ5X2FsbG9jKGRkcCwgdnAsIG5vZGUuZ2V0KCkpOwo+PiAtwqDCoMKgwqDCoMKg
wqAgdnB1dCh2cCk7Cj4+IC0KPj4gLcKgwqDCoMKgwqDCoMKgIGlmIChkcCA9PSBudWxscHRyKSB7
Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGVycm9yID0gRU5PTUVNOwo+PiAtwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoCBnb3RvIG91dDsKPj4gLcKgwqDCoMKgwqDCoMKgIH0KPj4gLcKgwqDCoCB9
Cj4+IC0KPj4gLcKgwqDCoCAqZHBwwqAgPSBkcDsKPj4gLcKgwqDCoCBlcnJvciA9IDA7Cj4+ICvC
oMKgwqAgY2hhcsKgwqDCoMKgwqDCoMKgwqDCoCAqbmFtZTsKPj4gK8KgwqDCoCBpbnTCoMKgwqDC
oMKgwqDCoMKgwqDCoCBlcnJvcjsKPj4gK8KgwqDCoCBzdHJ1Y3QgbW91bnTCoCAqbXA7Cj4+ICvC
oMKgwqAgY2hhcsKgwqDCoMKgwqDCoMKgwqDCoCAqcDsKPj4gK8KgwqDCoCBzdHJ1Y3QgZGVudHJ5
ICpkcDsKPj4gK8KgwqDCoCBzdHJ1Y3Qgdm5vZGXCoCAqZHZwOwo+PiArwqDCoMKgIHN0cnVjdCB2
bm9kZcKgICp2cDsKPj4gK8KgwqDCoCBzdGQ6OnVuaXF1ZV9wdHI8Y2hhciBbXT4gbm9kZSAobmV3
IGNoYXJbUEFUSF9NQVhdKTsKPj4gKwo+PiArwqDCoMKgIGR2cMKgID0gbnVsbHB0cjsKPj4gKwo+
PiArwqDCoMKgIGlmIChwYXRoWzBdICE9ICcvJykgewo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJu
IChFTk9URElSKTsKPj4gK8KgwqDCoCB9Cj4+ICsKPj4gK8KgwqDCoCBuYW1lID0gc3RycmNocihw
YXRoLCAnLycpOwo+PiArwqDCoMKgIGlmIChuYW1lID09IG51bGxwdHIpIHsKPj4gK8KgwqDCoMKg
wqDCoMKgIHJldHVybiAoRU5PRU5UKTsKPj4gK8KgwqDCoCB9Cj4+ICvCoMKgwqAgbmFtZSsrOwo+
PiArCj4+ICvCoMKgwqAgZXJyb3IgPSB2ZnNfZmluZHJvb3QocGF0aCwgJm1wLCAmcCk7Cj4+ICvC
oMKgwqAgaWYgKGVycm9yICE9IDApIHsKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAoRU5PVERJ
Uik7Cj4+ICvCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqAgc3RybGNweShub2RlLmdldCgpLCAiLyIs
IFBBVEhfTUFYKTsKPj4gK8KgwqDCoCBzdHJsY2F0KG5vZGUuZ2V0KCksIHAsIFBBVEhfTUFYKTsK
Pj4gKwo+PiArwqDCoMKgIC8vIFdlIHdhbnQgdG8gdHJlYXQgdGhpbmdzIGxpa2UgL3RtcC8gdGhl
IHNhbWUgYXMgL3RtcC4gQmVzdCB3YXkgCj4+IHRvIGRvIHRoYXQKPj4gK8KgwqDCoCAvLyBpcyB0
byBpZ25vcmUgdGhlIGxhc3QgY2hhcmFjdGVyLCBleGNlcHQgd2hlbiB3ZSdyZSBzdGF0aW5nIHRo
ZSAKPj4gcm9vdC4KPj4gK8KgwqDCoCBhdXRvIGwgPSBzdHJsZW4obm9kZS5nZXQoKSkgLSAxOwo+
PiArwqDCoMKgIGlmIChsICYmIG5vZGUuZ2V0KClbbF0gPT0gJy8nKSB7Cj4+ICvCoMKgwqDCoMKg
wqDCoCBub2RlLmdldCgpW2xdID0gJ1wwJzsKPj4gK8KgwqDCoCB9Cj4+ICsKPj4gK8KgwqDCoCBk
dnAgPSBkZHAtPmRfdm5vZGU7Cj4+ICvCoMKgwqAgdm5fbG9jayhkdnApOwo+PiArwqDCoMKgIGRw
ID0gZGVudHJ5X2xvb2t1cChtcCwgbm9kZS5nZXQoKSk7Cj4+ICvCoMKgwqAgaWYgKGRwID09IG51
bGxwdHIpIHsKPj4gK8KgwqDCoMKgwqDCoMKgIGVycm9yID0gVk9QX0xPT0tVUChkdnAsIG5hbWUs
ICZ2cCk7Cj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAoZXJyb3IgIT0gMCkgewo+PiArwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoCBnb3RvIG91dDsKPj4gK8KgwqDCoMKgwqDCoMKgIH0KPj4gKwo+PiArwqDC
oMKgwqDCoMKgwqAgZHAgPSBkZW50cnlfYWxsb2MoZGRwLCB2cCwgbm9kZS5nZXQoKSk7Cj4+ICvC
oMKgwqDCoMKgwqDCoCB2cHV0KHZwKTsKPj4gKwo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKGRwID09
IG51bGxwdHIpIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZXJyb3IgPSBFTk9NRU07Cj4+
ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gb3V0Owo+PiArwqDCoMKgwqDCoMKgwqAgfQo+
PiArwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgICpkcHDCoCA9IGRwOwo+PiArwqDCoMKgIGVycm9y
ID0gMDsKPj4gwqAgb3V0Ogo+PiAtwqDCoMKgIGlmIChkdnAgIT0gbnVsbHB0cikgewo+PiAtwqDC
oMKgwqDCoMKgwqAgdm5fdW5sb2NrKGR2cCk7Cj4+IC3CoMKgwqAgfQo+PiAtwqDCoMKgIHJldHVy
biAoZXJyb3IpOwo+PiArwqDCoMKgIGlmIChkdnAgIT0gbnVsbHB0cikgewo+PiArwqDCoMKgwqDC
oMKgwqAgdm5fdW5sb2NrKGR2cCk7Cj4+ICvCoMKgwqAgfQo+PiArwqDCoMKgIHJldHVybiAoZXJy
b3IpOwo+PiDCoCB9Cj4+IMKgIC8qCj4+IEBAIC0zMjAsNDggKzMyMCw0OCBAQCBvdXQ6Cj4+IMKg
IGludAo+PiDCoCBsb29rdXAoY2hhciAqcGF0aCwgc3RydWN0IGRlbnRyeSAqKmRwcCwgY2hhciAq
Km5hbWUpCj4+IMKgIHsKPj4gLcKgwqDCoCBjaGFyIGJ1ZltQQVRIX01BWF07Cj4+IC3CoMKgwqAg
Y2hhciByb290W10gPSAiLyI7Cj4+IC3CoMKgwqAgY2hhciAqZmlsZSwgKmRpcjsKPj4gLcKgwqDC
oCBzdHJ1Y3QgZGVudHJ5ICpkcDsKPj4gLcKgwqDCoCBpbnQgZXJyb3I7Cj4+IC0KPj4gLcKgwqDC
oCBEUFJJTlRGKFZGU0RCX1ZOT0RFLCAoImxvb2t1cDogcGF0aD0lc1xuIiwgcGF0aCkpOwo+PiAt
Cj4+IC3CoMKgwqAgLyoKPj4gLcKgwqDCoMKgICogR2V0IHRoZSBwYXRoIGZvciBkaXJlY3Rvcnku
Cj4+IC3CoMKgwqDCoCAqLwo+PiAtwqDCoMKgIHN0cmxjcHkoYnVmLCBwYXRoLCBzaXplb2YoYnVm
KSk7Cj4+IC3CoMKgwqAgZmlsZSA9IHN0cnJjaHIoYnVmLCAnLycpOwo+PiAtwqDCoMKgIGlmICgh
YnVmWzBdKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCByZXR1cm4gRU5PVERJUjsKPj4gLcKgwqDCoCB9
Cj4+IC3CoMKgwqAgaWYgKGZpbGUgPT0gYnVmKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCBkaXIgPSBy
b290Owo+PiAtwqDCoMKgIH0gZWxzZSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCAqZmlsZSA9ICdcMCc7
Cj4+IC3CoMKgwqDCoMKgwqDCoCBkaXIgPSBidWY7Cj4+IC3CoMKgwqAgfQo+PiAtwqDCoMKgIC8q
Cj4+IC3CoMKgwqDCoCAqIEdldCB0aGUgdm5vZGUgZm9yIGRpcmVjdG9yeQo+PiAtwqDCoMKgwqAg
Ki8KPj4gLcKgwqDCoCBpZiAoKGVycm9yID0gbmFtZWkoZGlyLCAmZHApKSAhPSAwKSB7Cj4+IC3C
oMKgwqDCoMKgwqDCoCByZXR1cm4gZXJyb3I7Cj4+IC3CoMKgwqAgfQo+PiAtwqDCoMKgIGlmIChk
cC0+ZF92bm9kZS0+dl90eXBlICE9IFZESVIpIHsKPj4gLcKgwqDCoMKgwqDCoMKgIGRyZWxlKGRw
KTsKPj4gLcKgwqDCoMKgwqDCoMKgIHJldHVybiBFTk9URElSOwo+PiAtwqDCoMKgIH0KPj4gLQo+
PiAtwqDCoMKgICpkcHAgPSBkcDsKPj4gLQo+PiAtwqDCoMKgIGlmIChuYW1lKSB7Cj4+IC3CoMKg
wqDCoMKgwqDCoCAvKgo+PiAtwqDCoMKgwqDCoMKgwqDCoCAqIEdldCB0aGUgZmlsZSBuYW1lCj4+
IC3CoMKgwqDCoMKgwqDCoMKgICovCj4+IC3CoMKgwqDCoMKgwqDCoCAqbmFtZSA9IHN0cnJjaHIo
cGF0aCwgJy8nKSArIDE7Cj4+IC3CoMKgwqAgfQo+PiAtwqDCoMKgIHJldHVybiAwOwo+PiArwqDC
oMKgIGNoYXIgYnVmW1BBVEhfTUFYXTsKPj4gK8KgwqDCoCBjaGFyIHJvb3RbXSA9ICIvIjsKPj4g
K8KgwqDCoCBjaGFyICpmaWxlLCAqZGlyOwo+PiArwqDCoMKgIHN0cnVjdCBkZW50cnkgKmRwOwo+
PiArwqDCoMKgIGludCBlcnJvcjsKPj4gKwo+PiArwqDCoMKgIERQUklOVEYoVkZTREJfVk5PREUs
ICgibG9va3VwOiBwYXRoPSVzXG4iLCBwYXRoKSk7Cj4+ICsKPj4gK8KgwqDCoCAvKgo+PiArwqDC
oMKgwqAgKiBHZXQgdGhlIHBhdGggZm9yIGRpcmVjdG9yeS4KPj4gK8KgwqDCoMKgICovCj4+ICvC
oMKgwqAgc3RybGNweShidWYsIHBhdGgsIHNpemVvZihidWYpKTsKPj4gK8KgwqDCoCBmaWxlID0g
c3RycmNocihidWYsICcvJyk7Cj4+ICvCoMKgwqAgaWYgKCFidWZbMF0pIHsKPj4gK8KgwqDCoMKg
wqDCoMKgIHJldHVybiBFTk9URElSOwo+PiArwqDCoMKgIH0KPj4gK8KgwqDCoCBpZiAoZmlsZSA9
PSBidWYpIHsKPj4gK8KgwqDCoMKgwqDCoMKgIGRpciA9IHJvb3Q7Cj4+ICvCoMKgwqAgfSBlbHNl
IHsKPj4gK8KgwqDCoMKgwqDCoMKgICpmaWxlID0gJ1wwJzsKPj4gK8KgwqDCoMKgwqDCoMKgIGRp
ciA9IGJ1ZjsKPj4gK8KgwqDCoCB9Cj4+ICvCoMKgwqAgLyoKPj4gK8KgwqDCoMKgICogR2V0IHRo
ZSB2bm9kZSBmb3IgZGlyZWN0b3J5Cj4+ICvCoMKgwqDCoCAqLwo+PiArwqDCoMKgIGlmICgoZXJy
b3IgPSBuYW1laShkaXIsICZkcCkpICE9IDApIHsKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBl
cnJvcjsKPj4gK8KgwqDCoCB9Cj4+ICvCoMKgwqAgaWYgKGRwLT5kX3Zub2RlLT52X3R5cGUgIT0g
VkRJUikgewo+PiArwqDCoMKgwqDCoMKgwqAgZHJlbGUoZHApOwo+PiArwqDCoMKgwqDCoMKgwqAg
cmV0dXJuIEVOT1RESVI7Cj4+ICvCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqAgKmRwcCA9IGRwOwo+
PiArCj4+ICvCoMKgwqAgaWYgKG5hbWUpIHsKPj4gK8KgwqDCoMKgwqDCoMKgIC8qCj4+ICvCoMKg
wqDCoMKgwqDCoMKgICogR2V0IHRoZSBmaWxlIG5hbWUKPj4gK8KgwqDCoMKgwqDCoMKgwqAgKi8K
Pj4gK8KgwqDCoMKgwqDCoMKgICpuYW1lID0gc3RycmNocihwYXRoLCAnLycpICsgMTsKPj4gK8Kg
wqDCoCB9Cj4+ICvCoMKgwqAgcmV0dXJuIDA7Cj4+IMKgIH0KPj4gwqAgLyoKPj4gQEAgLTM3MSw1
ICszNzEsNSBAQCBsb29rdXAoY2hhciAqcGF0aCwgc3RydWN0IGRlbnRyeSAqKmRwcCwgY2hhciAq
Km5hbWUpCj4+IMKgIHZvaWQKPj4gwqAgbG9va3VwX2luaXQodm9pZCkKPj4gwqAgewo+PiAtwqDC
oMKgIGRlbnRyeV9pbml0KCk7Cj4+ICvCoMKgwqAgZGVudHJ5X2luaXQoKTsKPj4gwqAgfQo+PiBk
aWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvbWFpbi5jIGIvbGliL3Zmc2NvcmUvbWFpbi5jCj4+IGlu
ZGV4IGNkMTQxMTE3Li44ZDlkYzMzYSAxMDA2NDQKPj4gLS0tIGEvbGliL3Zmc2NvcmUvbWFpbi5j
Cj4+ICsrKyBiL2xpYi92ZnNjb3JlL21haW4uYwo+PiBAQCAtOTIsNyArOTIsNyBAQCBzdGQ6OmF0
b21pYzxtb2RlX3Q+IGdsb2JhbF91bWFza3tTX0lXR1JQIHwgU19JV09USH07Cj4+IMKgIHN0YXRp
YyBpbmxpbmUgbW9kZV90IGFwcGx5X3VtYXNrKG1vZGVfdCBtb2RlKQo+PiDCoCB7Cj4+IC3CoMKg
wqAgcmV0dXJuIG1vZGUgJiB+Z2xvYmFsX3VtYXNrLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfcmVs
YXhlZCk7Cj4+ICvCoMKgwqAgcmV0dXJuIG1vZGUgJiB+Z2xvYmFsX3VtYXNrLmxvYWQoc3RkOjpt
ZW1vcnlfb3JkZXJfcmVsYXhlZCk7Cj4+IMKgIH0KPj4gwqAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNf
b3BlbiwgIlwiJXNcIiAweCV4IDAlMG8iLCBjb25zdCBjaGFyKiwgaW50LCAKPj4gbW9kZV90KTsK
Pj4gQEAgLTEwNCw5OSArMTA0LDk5IEBAIHN0cnVjdCB0YXNrICptYWluX3Rhc2s7wqDCoMKgIC8q
IHdlIG9ubHkgaGF2ZSBhIAo+PiBzaW5nbGUgcHJvY2VzcyAqLwo+PiDCoCBleHRlcm4gIkMiCj4+
IMKgIGludCBvcGVuKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBpbnQgZmxhZ3MsIC4uLikKPj4gwqAg
ewo+PiAtwqDCoMKgIG1vZGVfdCBtb2RlID0gMDsKPj4gLcKgwqDCoCBpZiAoZmxhZ3MgJiBPX0NS
RUFUKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCB2YV9saXN0IGFwOwo+PiAtwqDCoMKgwqDCoMKgwqAg
dmFfc3RhcnQoYXAsIGZsYWdzKTsKPj4gLcKgwqDCoMKgwqDCoMKgIG1vZGUgPSBhcHBseV91bWFz
ayh2YV9hcmcoYXAsIG1vZGVfdCkpOwo+PiAtwqDCoMKgwqDCoMKgwqAgdmFfZW5kKGFwKTsKPj4g
LcKgwqDCoCB9Cj4+IC0KPj4gLcKgwqDCoCB0cmFjZV92ZnNfb3BlbihwYXRobmFtZSwgZmxhZ3Ms
IG1vZGUpOwo+PiAtCj4+IC3CoMKgwqAgc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7Cj4+IC3C
oMKgwqAgY2hhciBwYXRoW1BBVEhfTUFYXTsKPj4gLcKgwqDCoCBzdHJ1Y3QgZmlsZSAqZnA7Cj4+
IC3CoMKgwqAgaW50IGZkLCBlcnJvcjsKPj4gLcKgwqDCoCBpbnQgYWNjOwo+PiAtCj4+IC3CoMKg
wqAgYWNjID0gMDsKPj4gLcKgwqDCoCBzd2l0Y2ggKGZsYWdzICYgT19BQ0NNT0RFKSB7Cj4+IC3C
oMKgwqAgY2FzZSBPX1JET05MWToKPj4gLcKgwqDCoMKgwqDCoMKgIGFjYyA9IFZSRUFEOwo+PiAt
wqDCoMKgwqDCoMKgwqAgYnJlYWs7Cj4+IC3CoMKgwqAgY2FzZSBPX1dST05MWToKPj4gLcKgwqDC
oMKgwqDCoMKgIGFjYyA9IFZXUklURTsKPj4gLcKgwqDCoMKgwqDCoMKgIGJyZWFrOwo+PiAtwqDC
oMKgIGNhc2UgT19SRFdSOgo+PiAtwqDCoMKgwqDCoMKgwqAgYWNjID0gVlJFQUQgfCBWV1JJVEU7
Cj4+IC3CoMKgwqDCoMKgwqDCoCBicmVhazsKPj4gLcKgwqDCoCB9Cj4+IC0KPj4gLcKgwqDCoCBl
cnJvciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwgYWNjLCBwYXRoKTsKPj4gLcKgwqDCoCBpZiAo
ZXJyb3IpCj4+IC3CoMKgwqDCoMKgwqDCoCBnb3RvIG91dF9lcnJubzsKPj4gLQo+PiAtwqDCoMKg
IGVycm9yID0gc3lzX29wZW4ocGF0aCwgZmxhZ3MsIG1vZGUsICZmcCk7Cj4+IC3CoMKgwqAgaWYg
KGVycm9yKQo+PiAtwqDCoMKgwqDCoMKgwqAgZ290byBvdXRfZXJybm87Cj4+IC0KPj4gLcKgwqDC
oCBlcnJvciA9IGZkYWxsb2MoZnAsICZmZCk7Cj4+IC3CoMKgwqAgaWYgKGVycm9yKQo+PiAtwqDC
oMKgwqDCoMKgwqAgZ290byBvdXRfZnB1dDsKPj4gLcKgwqDCoCBmZHJvcChmcCk7Cj4+IC3CoMKg
wqAgdHJhY2VfdmZzX29wZW5fcmV0KGZkKTsKPj4gLcKgwqDCoCByZXR1cm4gZmQ7Cj4+IC0KPj4g
LcKgwqDCoCBvdXRfZnB1dDoKPj4gLcKgwqDCoCBmZHJvcChmcCk7Cj4+IC3CoMKgwqAgb3V0X2Vy
cm5vOgo+PiAtwqDCoMKgIGVycm5vID0gZXJyb3I7Cj4+IC3CoMKgwqAgdHJhY2VfdmZzX29wZW5f
ZXJyKGVycm9yKTsKPj4gLcKgwqDCoCByZXR1cm4gLTE7Cj4+ICvCoMKgwqAgbW9kZV90IG1vZGUg
PSAwOwo+PiArwqDCoMKgIGlmIChmbGFncyAmIE9fQ1JFQVQpIHsKPj4gK8KgwqDCoMKgwqDCoMKg
IHZhX2xpc3QgYXA7Cj4+ICvCoMKgwqDCoMKgwqDCoCB2YV9zdGFydChhcCwgZmxhZ3MpOwo+PiAr
wqDCoMKgwqDCoMKgwqAgbW9kZSA9IGFwcGx5X3VtYXNrKHZhX2FyZyhhcCwgbW9kZV90KSk7Cj4+
ICvCoMKgwqDCoMKgwqDCoCB2YV9lbmQoYXApOwo+PiArwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKg
IHRyYWNlX3Zmc19vcGVuKHBhdGhuYW1lLCBmbGFncywgbW9kZSk7Cj4+ICsKPj4gK8KgwqDCoCBz
dHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKPj4gK8KgwqDCoCBjaGFyIHBhdGhbUEFUSF9NQVhd
Owo+PiArwqDCoMKgIHN0cnVjdCBmaWxlICpmcDsKPj4gK8KgwqDCoCBpbnQgZmQsIGVycm9yOwo+
PiArwqDCoMKgIGludCBhY2M7Cj4+ICsKPj4gK8KgwqDCoCBhY2MgPSAwOwo+PiArwqDCoMKgIHN3
aXRjaCAoZmxhZ3MgJiBPX0FDQ01PREUpIHsKPj4gK8KgwqDCoCBjYXNlIE9fUkRPTkxZOgo+PiAr
wqDCoMKgwqDCoMKgwqAgYWNjID0gVlJFQUQ7Cj4+ICvCoMKgwqDCoMKgwqDCoCBicmVhazsKPj4g
K8KgwqDCoCBjYXNlIE9fV1JPTkxZOgo+PiArwqDCoMKgwqDCoMKgwqAgYWNjID0gVldSSVRFOwo+
PiArwqDCoMKgwqDCoMKgwqAgYnJlYWs7Cj4+ICvCoMKgwqAgY2FzZSBPX1JEV1I6Cj4+ICvCoMKg
wqDCoMKgwqDCoCBhY2MgPSBWUkVBRCB8IFZXUklURTsKPj4gK8KgwqDCoMKgwqDCoMKgIGJyZWFr
Owo+PiArwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgIGVycm9yID0gdGFza19jb252KHQsIHBhdGhu
YW1lLCBhY2MsIHBhdGgpOwo+PiArwqDCoMKgIGlmIChlcnJvcikKPj4gK8KgwqDCoMKgwqDCoMKg
IGdvdG8gb3V0X2Vycm5vOwo+PiArCj4+ICvCoMKgwqAgZXJyb3IgPSBzeXNfb3BlbihwYXRoLCBm
bGFncywgbW9kZSwgJmZwKTsKPj4gK8KgwqDCoCBpZiAoZXJyb3IpCj4+ICvCoMKgwqDCoMKgwqDC
oCBnb3RvIG91dF9lcnJubzsKPj4gKwo+PiArwqDCoMKgIGVycm9yID0gZmRhbGxvYyhmcCwgJmZk
KTsKPj4gK8KgwqDCoCBpZiAoZXJyb3IpCj4+ICvCoMKgwqDCoMKgwqDCoCBnb3RvIG91dF9mcHV0
Owo+PiArwqDCoMKgIGZkcm9wKGZwKTsKPj4gK8KgwqDCoCB0cmFjZV92ZnNfb3Blbl9yZXQoZmQp
Owo+PiArwqDCoMKgIHJldHVybiBmZDsKPj4gKwo+PiArwqDCoMKgIG91dF9mcHV0Ogo+PiArwqDC
oMKgIGZkcm9wKGZwKTsKPj4gK8KgwqDCoCBvdXRfZXJybm86Cj4+ICvCoMKgwqAgZXJybm8gPSBl
cnJvcjsKPj4gK8KgwqDCoCB0cmFjZV92ZnNfb3Blbl9lcnIoZXJyb3IpOwo+PiArwqDCoMKgIHJl
dHVybiAtMTsKPj4gwqAgfQo+PiDCoCBMRlM2NChvcGVuKTsKPj4gwqAgaW50IG9wZW5hdChpbnQg
ZGlyZmQsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBpbnQgZmxhZ3MsIC4uLikKPj4gwqAgewo+PiAt
wqDCoMKgIG1vZGVfdCBtb2RlID0gMDsKPj4gLcKgwqDCoCBpZiAoZmxhZ3MgJiBPX0NSRUFUKSB7
Cj4+IC3CoMKgwqDCoMKgwqDCoCB2YV9saXN0IGFwOwo+PiAtwqDCoMKgwqDCoMKgwqAgdmFfc3Rh
cnQoYXAsIGZsYWdzKTsKPj4gLcKgwqDCoMKgwqDCoMKgIG1vZGUgPSBhcHBseV91bWFzayh2YV9h
cmcoYXAsIG1vZGVfdCkpOwo+PiAtwqDCoMKgwqDCoMKgwqAgdmFfZW5kKGFwKTsKPj4gLcKgwqDC
oCB9Cj4+ICvCoMKgwqAgbW9kZV90IG1vZGUgPSAwOwo+PiArwqDCoMKgIGlmIChmbGFncyAmIE9f
Q1JFQVQpIHsKPj4gK8KgwqDCoMKgwqDCoMKgIHZhX2xpc3QgYXA7Cj4+ICvCoMKgwqDCoMKgwqDC
oCB2YV9zdGFydChhcCwgZmxhZ3MpOwo+PiArwqDCoMKgwqDCoMKgwqAgbW9kZSA9IGFwcGx5X3Vt
YXNrKHZhX2FyZyhhcCwgbW9kZV90KSk7Cj4+ICvCoMKgwqDCoMKgwqDCoCB2YV9lbmQoYXApOwo+
PiArwqDCoMKgIH0KPj4gLcKgwqDCoCBpZiAocGF0aG5hbWVbMF0gPT0gJy8nIHx8IGRpcmZkID09
IEFUX0ZEQ1dEKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCByZXR1cm4gb3BlbihwYXRobmFtZSwgZmxh
Z3MsIG1vZGUpOwo+PiAtwqDCoMKgIH0KPj4gK8KgwqDCoCBpZiAocGF0aG5hbWVbMF0gPT0gJy8n
IHx8IGRpcmZkID09IEFUX0ZEQ1dEKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gb3Blbihw
YXRobmFtZSwgZmxhZ3MsIG1vZGUpOwo+PiArwqDCoMKgIH0KPj4gLcKgwqDCoCBzdHJ1Y3QgZmls
ZSAqZnA7Cj4+IC3CoMKgwqAgaW50IGVycm9yID0gZmdldChkaXJmZCwgJmZwKTsKPj4gLcKgwqDC
oCBpZiAoZXJyb3IpIHsKPj4gLcKgwqDCoMKgwqDCoMKgIGVycm5vID0gZXJyb3I7Cj4+IC3CoMKg
wqDCoMKgwqDCoCByZXR1cm4gLTE7Cj4+IC3CoMKgwqAgfQo+PiArwqDCoMKgIHN0cnVjdCBmaWxl
ICpmcDsKPj4gK8KgwqDCoCBpbnQgZXJyb3IgPSBmZ2V0KGRpcmZkLCAmZnApOwo+PiArwqDCoMKg
IGlmIChlcnJvcikgewo+PiArwqDCoMKgwqDCoMKgwqAgZXJybm8gPSBlcnJvcjsKPj4gK8KgwqDC
oMKgwqDCoMKgIHJldHVybiAtMTsKPj4gK8KgwqDCoCB9Cj4+IC3CoMKgwqAgc3RydWN0IHZub2Rl
ICp2cCA9IGZwLT5mX2RlbnRyeS0+ZF92bm9kZTsKPj4gLcKgwqDCoCB2bl9sb2NrKHZwKTsKPj4g
K8KgwqDCoCBzdHJ1Y3Qgdm5vZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOwo+PiArwqDC
oMKgIHZuX2xvY2sodnApOwo+PiAtwqDCoMKgIHN0ZDo6dW5pcXVlX3B0cjxjaGFyIFtdPiB1cCAo
bmV3IGNoYXJbUEFUSF9NQVhdKTsKPj4gLcKgwqDCoCBjaGFyICpwID0gdXAuZ2V0KCk7Cj4+ICvC
oMKgwqAgc3RkOjp1bmlxdWVfcHRyPGNoYXIgW10+IHVwIChuZXcgY2hhcltQQVRIX01BWF0pOwo+
PiArwqDCoMKgIGNoYXIgKnAgPSB1cC5nZXQoKTsKPj4gLcKgwqDCoCAvKiBidWlsZCBhYnNvbHV0
ZSBwYXRoICovCj4+IC3CoMKgwqAgc3RybGNweShwLCBmcC0+Zl9kZW50cnktPmRfbW91bnQtPm1f
cGF0aCwgUEFUSF9NQVgpOwo+PiAtwqDCoMKgIHN0cmxjYXQocCwgZnAtPmZfZGVudHJ5LT5kX3Bh
dGgsIFBBVEhfTUFYKTsKPj4gLcKgwqDCoCBzdHJsY2F0KHAsICIvIiwgUEFUSF9NQVgpOwo+PiAt
wqDCoMKgIHN0cmxjYXQocCwgcGF0aG5hbWUsIFBBVEhfTUFYKTsKPj4gK8KgwqDCoCAvKiBidWls
ZCBhYnNvbHV0ZSBwYXRoICovCj4+ICvCoMKgwqAgc3RybGNweShwLCBmcC0+Zl9kZW50cnktPmRf
bW91bnQtPm1fcGF0aCwgUEFUSF9NQVgpOwo+PiArwqDCoMKgIHN0cmxjYXQocCwgZnAtPmZfZGVu
dHJ5LT5kX3BhdGgsIFBBVEhfTUFYKTsKPj4gK8KgwqDCoCBzdHJsY2F0KHAsICIvIiwgUEFUSF9N
QVgpOwo+PiArwqDCoMKgIHN0cmxjYXQocCwgcGF0aG5hbWUsIFBBVEhfTUFYKTsKPj4gLcKgwqDC
oCBlcnJvciA9IG9wZW4ocCwgZmxhZ3MsIG1vZGUpOwo+PiArwqDCoMKgIGVycm9yID0gb3Blbihw
LCBmbGFncywgbW9kZSk7Cj4+IC3CoMKgwqAgdm5fdW5sb2NrKHZwKTsKPj4gLcKgwqDCoCBmZHJv
cChmcCk7Cj4+ICvCoMKgwqAgdm5fdW5sb2NrKHZwKTsKPj4gK8KgwqDCoCBmZHJvcChmcCk7Cj4+
IC3CoMKgwqAgcmV0dXJuIGVycm9yOwo+PiArwqDCoMKgIHJldHVybiBlcnJvcjsKPj4gwqAgfQo+
PiDCoCBMRlM2NChvcGVuYXQpOwo+PiBAQCAtMjA2LDIzICsyMDYsMjMgQEAgTEZTNjQob3BlbmF0
KTsKPj4gwqAgLy8gYnkgYSBjYWxsIHRvIF9fb3Blbl8yKCksIHdoaWNoIHZlcmlmaWVzIGl0IGlz
bid0IGNhbGxlZCB3aXRoIAo+PiBPX0NSRUFURS4KPj4gwqAgZXh0ZXJuICJDIiBpbnQgX19vcGVu
XzIoY29uc3QgY2hhciAqcGF0aG5hbWUsIGludCBmbGFncykKPj4gwqAgewo+PiAtwqDCoMKgIGFz
c2VydCghKGZsYWdzICYgT19DUkVBVCkpOwo+PiAtwqDCoMKgIHJldHVybiBvcGVuKHBhdGhuYW1l
LCBmbGFncywgMCk7Cj4+ICvCoMKgwqAgYXNzZXJ0KCEoZmxhZ3MgJiBPX0NSRUFUKSk7Cj4+ICvC
oMKgwqAgcmV0dXJuIG9wZW4ocGF0aG5hbWUsIGZsYWdzLCAwKTsKPj4gwqAgfQo+PiDCoCBleHRl
cm4gIkMiIGludCBfX29wZW42NF8yKGNvbnN0IGNoYXIgKmZpbGUsIGludCBmbGFncykKPj4gwqAg
ewo+PiAtwqDCoMKgIGlmIChmbGFncyAmIE9fQ1JFQVQpIHsKPj4gLcKgwqDCoMKgwqDCoMKgIGVy
cm5vID0gRUlOVkFMOwo+PiAtwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC0xOwo+PiAtwqDCoMKgIH0K
Pj4gK8KgwqDCoCBpZiAoZmxhZ3MgJiBPX0NSRUFUKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBlcnJu
byA9IEVJTlZBTDsKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAtMTsKPj4gK8KgwqDCoCB9Cj4+
IC3CoMKgwqAgcmV0dXJuIG9wZW42NChmaWxlLCBmbGFncyk7Cj4+ICvCoMKgwqAgcmV0dXJuIG9w
ZW42NChmaWxlLCBmbGFncyk7Cj4+IMKgIH0KPj4gwqAgaW50IGNyZWF0KGNvbnN0IGNoYXIgKnBh
dGhuYW1lLCBtb2RlX3QgbW9kZSkKPj4gwqAgewo+PiAtwqDCoMKgIHJldHVybiBvcGVuKHBhdGhu
YW1lLCBPX0NSRUFUfE9fV1JPTkxZfE9fVFJVTkMsIG1vZGUpOwo+PiArwqDCoMKgIHJldHVybiBv
cGVuKHBhdGhuYW1lLCBPX0NSRUFUfE9fV1JPTkxZfE9fVFJVTkMsIG1vZGUpOwo+PiDCoCB9Cj4+
IMKgIExGUzY0KGNyZWF0KTsKPj4gQEAgLTIzMiwyMCArMjMyLDIwIEBAIFRSQUNFUE9JTlQodHJh
Y2VfdmZzX2Nsb3NlX2VyciwgIiVkIiwgaW50KTsKPj4gwqAgaW50IGNsb3NlKGludCBmZCkKPj4g
wqAgewo+PiAtwqDCoMKgIGludCBlcnJvcjsKPj4gK8KgwqDCoCBpbnQgZXJyb3I7Cj4+IC3CoMKg
wqAgdHJhY2VfdmZzX2Nsb3NlKGZkKTsKPj4gLcKgwqDCoCBlcnJvciA9IGZkY2xvc2UoZmQpOwo+
PiAtwqDCoMKgIGlmIChlcnJvcikKPj4gLcKgwqDCoMKgwqDCoMKgIGdvdG8gb3V0X2Vycm5vOwo+
PiArwqDCoMKgIHRyYWNlX3Zmc19jbG9zZShmZCk7Cj4+ICvCoMKgwqAgZXJyb3IgPSBmZGNsb3Nl
KGZkKTsKPj4gK8KgwqDCoCBpZiAoZXJyb3IpCj4+ICvCoMKgwqDCoMKgwqDCoCBnb3RvIG91dF9l
cnJubzsKPj4gLcKgwqDCoCB0cmFjZV92ZnNfY2xvc2VfcmV0KCk7Cj4+IC3CoMKgwqAgcmV0dXJu
IDA7Cj4+ICvCoMKgwqAgdHJhY2VfdmZzX2Nsb3NlX3JldCgpOwo+PiArwqDCoMKgIHJldHVybiAw
Owo+PiAtwqDCoMKgIG91dF9lcnJubzoKPj4gLcKgwqDCoCB0cmFjZV92ZnNfY2xvc2VfZXJyKGVy
cm9yKTsKPj4gLcKgwqDCoCBlcnJubyA9IGVycm9yOwo+PiAtwqDCoMKgIHJldHVybiAtMTsKPj4g
K8KgwqDCoCBvdXRfZXJybm86Cj4+ICvCoMKgwqAgdHJhY2VfdmZzX2Nsb3NlX2VycihlcnJvcik7
Cj4+ICvCoMKgwqAgZXJybm8gPSBlcnJvcjsKPj4gK8KgwqDCoCByZXR1cm4gLTE7Cj4+IMKgIH0K
Pj4gwqAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbWtub2QsICJcIiVzXCIgMCUwbyAweCV4IiwgY29u
c3QgY2hhciosIG1vZGVfdCwgCj4+IGRldl90KTsKPj4gQEAgLTI1NiwzMSArMjU2LDMxIEBAIFRS
QUNFUE9JTlQodHJhY2VfdmZzX21rbm9kX2VyciwgIiVkIiwgaW50KTsKPj4gwqAgZXh0ZXJuICJD
Igo+PiDCoCBpbnQgX194bWtub2QoaW50IHZlciwgY29uc3QgY2hhciAqcGF0aG5hbWUsIG1vZGVf
dCBtb2RlLCBkZXZfdCAqZGV2KQo+PiDCoCB7Cj4+IC3CoMKgwqAgYXNzZXJ0KHZlciA9PSAwKTsg
Ly8gT24geDg2LTY0IExpbnV4LCBfTUtOT0RfVkVSX0xJTlVYIGlzIDAuCj4+IC3CoMKgwqAgc3Ry
dWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7Cj4+IC3CoMKgwqAgY2hhciBwYXRoW1BBVEhfTUFYXTsK
Pj4gLcKgwqDCoCBpbnQgZXJyb3I7Cj4+ICvCoMKgwqAgYXNzZXJ0KHZlciA9PSAwKTsgLy8gT24g
eDg2LTY0IExpbnV4LCBfTUtOT0RfVkVSX0xJTlVYIGlzIDAuCj4+ICvCoMKgwqAgc3RydWN0IHRh
c2sgKnQgPSBtYWluX3Rhc2s7Cj4+ICvCoMKgwqAgY2hhciBwYXRoW1BBVEhfTUFYXTsKPj4gK8Kg
wqDCoCBpbnQgZXJyb3I7Cj4+IC3CoMKgwqAgdHJhY2VfdmZzX21rbm9kKHBhdGhuYW1lLCBtb2Rl
LCAqZGV2KTsKPj4gLcKgwqDCoCBpZiAoKGVycm9yID0gdGFza19jb252KHQsIHBhdGhuYW1lLCBW
V1JJVEUsIHBhdGgpKSAhPSAwKQo+PiAtwqDCoMKgwqDCoMKgwqAgZ290byBvdXRfZXJybm87Cj4+
ICvCoMKgwqAgdHJhY2VfdmZzX21rbm9kKHBhdGhuYW1lLCBtb2RlLCAqZGV2KTsKPj4gK8KgwqDC
oCBpZiAoKGVycm9yID0gdGFza19jb252KHQsIHBhdGhuYW1lLCBWV1JJVEUsIHBhdGgpKSAhPSAw
KQo+PiArwqDCoMKgwqDCoMKgwqAgZ290byBvdXRfZXJybm87Cj4+IC3CoMKgwqAgZXJyb3IgPSBz
eXNfbWtub2QocGF0aCwgbW9kZSk7Cj4+IC3CoMKgwqAgaWYgKGVycm9yKQo+PiAtwqDCoMKgwqDC
oMKgwqAgZ290byBvdXRfZXJybm87Cj4+ICvCoMKgwqAgZXJyb3IgPSBzeXNfbWtub2QocGF0aCwg
bW9kZSk7Cj4+ICvCoMKgwqAgaWYgKGVycm9yKQo+PiArwqDCoMKgwqDCoMKgwqAgZ290byBvdXRf
ZXJybm87Cj4+IC3CoMKgwqAgdHJhY2VfdmZzX21rbm9kX3JldCgpOwo+PiAtwqDCoMKgIHJldHVy
biAwOwo+PiArwqDCoMKgIHRyYWNlX3Zmc19ta25vZF9yZXQoKTsKPj4gK8KgwqDCoCByZXR1cm4g
MDsKPj4gLcKgwqDCoCBvdXRfZXJybm86Cj4+IC3CoMKgwqAgdHJhY2VfdmZzX21rbm9kX2Vycihl
cnJvcik7Cj4+IC3CoMKgwqAgZXJybm8gPSBlcnJvcjsKPj4gLcKgwqDCoCByZXR1cm4gLTE7Cj4+
ICvCoMKgwqAgb3V0X2Vycm5vOgo+PiArwqDCoMKgIHRyYWNlX3Zmc19ta25vZF9lcnIoZXJyb3Ip
Owo+PiArwqDCoMKgIGVycm5vID0gZXJyb3I7Cj4+ICvCoMKgwqAgcmV0dXJuIC0xOwo+PiDCoCB9
Cj4+IMKgIGludCBta25vZChjb25zdCBjaGFyICpwYXRobmFtZSwgbW9kZV90IG1vZGUsIGRldl90
IGRldikKPj4gwqAgewo+PiAtwqDCoMKgIHJldHVybiBfX3hta25vZCgwLCBwYXRobmFtZSwgbW9k
ZSwgJmRldik7Cj4+ICvCoMKgwqAgcmV0dXJuIF9feG1rbm9kKDAsIHBhdGhuYW1lLCBtb2RlLCAm
ZGV2KTsKPj4gwqAgfQo+PiBAQCAtMjkwLDI3ICsyOTAsMjcgQEAgVFJBQ0VQT0lOVCh0cmFjZV92
ZnNfbHNlZWtfZXJyLCAiJWQiLCBpbnQpOwo+PiDCoCBvZmZfdCBsc2VlayhpbnQgZmQsIG9mZl90
IG9mZnNldCwgaW50IHdoZW5jZSkKPj4gwqAgewo+PiAtwqDCoMKgIHN0cnVjdCBmaWxlICpmcDsK
Pj4gLcKgwqDCoCBvZmZfdCBvcmc7Cj4+IC3CoMKgwqAgaW50IGVycm9yOwo+PiArwqDCoMKgIHN0
cnVjdCBmaWxlICpmcDsKPj4gK8KgwqDCoCBvZmZfdCBvcmc7Cj4+ICvCoMKgwqAgaW50IGVycm9y
Owo+PiAtwqDCoMKgIHRyYWNlX3Zmc19sc2VlayhmZCwgb2Zmc2V0LCB3aGVuY2UpOwo+PiAtwqDC
oMKgIGVycm9yID0gZmdldChmZCwgJmZwKTsKPj4gLcKgwqDCoCBpZiAoZXJyb3IpCj4+IC3CoMKg
wqDCoMKgwqDCoCBnb3RvIG91dF9lcnJubzsKPj4gK8KgwqDCoCB0cmFjZV92ZnNfbHNlZWsoZmQs
IG9mZnNldCwgd2hlbmNlKTsKPj4gK8KgwqDCoCBlcnJvciA9IGZnZXQoZmQsICZmcCk7Cj4+ICvC
oMKgwqAgaWYgKGVycm9yKQo+PiArwqDCoMKgwqDCoMKgwqAgZ290byBvdXRfZXJybm87Cj4+IC3C
oMKgwqAgZXJyb3IgPSBzeXNfbHNlZWsoZnAsIG9mZnNldCwgd2hlbmNlLCAmb3JnKTsKPj4gLcKg
wqDCoCBmZHJvcChmcCk7Cj4+ICvCoMKgwqAgZXJyb3IgPSBzeXNfbHNlZWsoZnAsIG9mZnNldCwg
d2hlbmNlLCAmb3JnKTsKPj4gK8KgwqDCoCBmZHJvcChmcCk7Cj4+IC3CoMKgwqAgaWYgKGVycm9y
KQo+PiAtwqDCoMKgwqDCoMKgwqAgZ290byBvdXRfZXJybm87Cj4+IC3CoMKgwqAgdHJhY2VfdmZz
X2xzZWVrX3JldChvcmcpOwo+PiAtwqDCoMKgIHJldHVybiBvcmc7Cj4+ICvCoMKgwqAgaWYgKGVy
cm9yKQo+PiArwqDCoMKgwqDCoMKgwqAgZ290byBvdXRfZXJybm87Cj4+ICvCoMKgwqAgdHJhY2Vf
dmZzX2xzZWVrX3JldChvcmcpOwo+PiArwqDCoMKgIHJldHVybiBvcmc7Cj4+IC3CoMKgwqAgb3V0
X2Vycm5vOgo+PiAtwqDCoMKgIHRyYWNlX3Zmc19sc2Vla19lcnIoZXJyb3IpOwo+PiAtwqDCoMKg
IGVycm5vID0gZXJyb3I7Cj4+IC3CoMKgwqAgcmV0dXJuIC0xOwo+PiArwqDCoMKgIG91dF9lcnJu
bzoKPj4gK8KgwqDCoCB0cmFjZV92ZnNfbHNlZWtfZXJyKGVycm9yKTsKPj4gK8KgwqDCoCBlcnJu
byA9IGVycm9yOwo+PiArwqDCoMKgIHJldHVybiAtMTsKPj4gwqAgfQo+PiDCoCBMRlM2NChsc2Vl
ayk7Cj4+IEBAIC0zMjYsNDYgKzMyNiw0NiBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19wcmVhZF9l
cnIsICIlZCIsIGludCk7Cj4+IMKgIC8vIEluIEZyZWVCU0QsIGRvZmlsZXdyaXRlKCkgYW5kIGRv
ZmlsZXJlYWQoKSAoc3lzX2dlbmVyaWMuYykgZG8gCj4+IHRoaXMgdG9vLgo+PiDCoCBzdGF0aWMg
aW5saW5lIGJvb2wgaGFzX2Vycm9yKGludCBlcnJvciwgaW50IGJ5dGVzKQo+PiDCoCB7Cj4+IC3C
oMKgwqAgcmV0dXJuIGVycm9yICYmICgKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKGJ5dGVz
ID09IDApIHx8Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChlcnJvciAhPSBFV09VTERCTE9D
SyAmJiBlcnJvciAhPSBFSU5UUiAmJiBlcnJvciAhPSAKPj4gRVJFU1RBUlQpKTsKPj4gK8KgwqDC
oCByZXR1cm4gZXJyb3IgJiYgKAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoYnl0ZXMgPT0g
MCkgfHwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKGVycm9yICE9IEVXT1VMREJMT0NLICYm
IGVycm9yICE9IEVJTlRSICYmIGVycm9yICE9IAo+PiBFUkVTVEFSVCkpOwo+PiDCoCB9Cj4+IMKg
IHNzaXplX3QgcHJlYWQoaW50IGZkLCB2b2lkICpidWYsIHNpemVfdCBjb3VudCwgb2ZmX3Qgb2Zm
c2V0KQo+PiDCoCB7Cj4+IC3CoMKgwqAgdHJhY2VfdmZzX3ByZWFkKGZkLCBidWYsIGNvdW50LCBv
ZmZzZXQpOwo+PiAtwqDCoMKgIHN0cnVjdCBpb3ZlYyBpb3YgPSB7Cj4+IC3CoMKgwqDCoMKgwqDC
oMKgwqDCoMKgIC5pb3ZfYmFzZcKgwqDCoCA9IGJ1ZiwKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg
wqAgLmlvdl9sZW7CoMKgwqAgPSBjb3VudCwKPj4gLcKgwqDCoCB9Owo+PiAtwqDCoMKgIHN0cnVj
dCBmaWxlICpmcDsKPj4gLcKgwqDCoCBzaXplX3QgYnl0ZXM7Cj4+IC3CoMKgwqAgaW50IGVycm9y
Owo+PiArwqDCoMKgIHRyYWNlX3Zmc19wcmVhZChmZCwgYnVmLCBjb3VudCwgb2Zmc2V0KTsKPj4g
K8KgwqDCoCBzdHJ1Y3QgaW92ZWMgaW92ID0gewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAu
aW92X2Jhc2XCoMKgwqAgPSBidWYsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC5pb3ZfbGVu
wqDCoMKgID0gY291bnQsCj4+ICvCoMKgwqAgfTsKPj4gK8KgwqDCoCBzdHJ1Y3QgZmlsZSAqZnA7
Cj4+ICvCoMKgwqAgc2l6ZV90IGJ5dGVzOwo+PiArwqDCoMKgIGludCBlcnJvcjsKPj4gLcKgwqDC
oCBlcnJvciA9IGZnZXQoZmQsICZmcCk7Cj4+IC3CoMKgwqAgaWYgKGVycm9yKQo+PiAtwqDCoMKg
wqDCoMKgwqAgZ290byBvdXRfZXJybm87Cj4+ICvCoMKgwqAgZXJyb3IgPSBmZ2V0KGZkLCAmZnAp
Owo+PiArwqDCoMKgIGlmIChlcnJvcikKPj4gK8KgwqDCoMKgwqDCoMKgIGdvdG8gb3V0X2Vycm5v
Owo+PiAtwqDCoMKgIGVycm9yID0gc3lzX3JlYWQoZnAsICZpb3YsIDEsIG9mZnNldCwgJmJ5dGVz
KTsKPj4gLcKgwqDCoCBmZHJvcChmcCk7Cj4+ICvCoMKgwqAgZXJyb3IgPSBzeXNfcmVhZChmcCwg
JmlvdiwgMSwgb2Zmc2V0LCAmYnl0ZXMpOwo+PiArwqDCoMKgIGZkcm9wKGZwKTsKPj4gLcKgwqDC
oCBpZiAoaGFzX2Vycm9yKGVycm9yLCBieXRlcykpCj4+IC3CoMKgwqDCoMKgwqDCoCBnb3RvIG91
dF9lcnJubzsKPj4gLcKgwqDCoCB0cmFjZV92ZnNfcHJlYWRfcmV0KGJ5dGVzKTsKPj4gLcKgwqDC
oCByZXR1cm4gYnl0ZXM7Cj4+ICvCoMKgwqAgaWYgKGhhc19lcnJvcihlcnJvciwgYnl0ZXMpKQo+
PiArwqDCoMKgwqDCoMKgwqAgZ290byBvdXRfZXJybm87Cj4+ICvCoMKgwqAgdHJhY2VfdmZzX3By
ZWFkX3JldChieXRlcyk7Cj4+ICvCoMKgwqAgcmV0dXJuIGJ5dGVzOwo+PiAtwqDCoMKgIG91dF9l
cnJubzoKPj4gLcKgwqDCoCB0cmFjZV92ZnNfcHJlYWRfZXJyKGVycm9yKTsKPj4gLcKgwqDCoCBl
cnJubyA9IGVycm9yOwo+PiAtwqDCoMKgIHJldHVybiAtMTsKPj4gK8KgwqDCoCBvdXRfZXJybm86
Cj4+ICvCoMKgwqAgdHJhY2VfdmZzX3ByZWFkX2VycihlcnJvcik7Cj4+ICvCoMKgwqAgZXJybm8g
PSBlcnJvcjsKPj4gK8KgwqDCoCByZXR1cm4gLTE7Cj4+IMKgIH0KPj4gwqAgTEZTNjQocHJlYWQp
Owo+PiDCoCBzc2l6ZV90IHJlYWQoaW50IGZkLCB2b2lkICpidWYsIHNpemVfdCBjb3VudCkKPj4g
wqAgewo+PiAtwqDCoMKgIHJldHVybiBwcmVhZChmZCwgYnVmLCBjb3VudCwgLTEpOwo+PiArwqDC
oMKgIHJldHVybiBwcmVhZChmZCwgYnVmLCBjb3VudCwgLTEpOwo+PiDCoCB9Cj4+IMKgIFRSQUNF
UE9JTlQodHJhY2VfdmZzX3B3cml0ZSwgIiVkICVwIDB4JXggMHgleCIsIGludCwgY29uc3Qgdm9p
ZCosIAo+PiBzaXplX3QsIG9mZl90KTsKPj4gQEAgLTM3NCw2NyArMzc0LDY3IEBAIFRSQUNFUE9J
TlQodHJhY2VfdmZzX3B3cml0ZV9lcnIsICIlZCIsIGludCk7Cj4+IMKgIHNzaXplX3QgcHdyaXRl
KGludCBmZCwgY29uc3Qgdm9pZCAqYnVmLCBzaXplX3QgY291bnQsIG9mZl90IG9mZnNldCkKPj4g
wqAgewo+PiAtwqDCoMKgIHRyYWNlX3Zmc19wd3JpdGUoZmQsIGJ1ZiwgY291bnQsIG9mZnNldCk7
Cj4+IC3CoMKgwqAgc3RydWN0IGlvdmVjIGlvdiA9IHsKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg
wqAgLmlvdl9iYXNlwqDCoMKgID0gKHZvaWQgKilidWYsCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDC
oMKgIC5pb3ZfbGVuwqDCoMKgID0gY291bnQsCj4+IC3CoMKgwqAgfTsKPj4gLcKgwqDCoCBzdHJ1
Y3QgZmlsZSAqZnA7Cj4+IC3CoMKgwqAgc2l6ZV90IGJ5dGVzOwo+PiAtwqDCoMKgIGludCBlcnJv
cjsKPj4gK8KgwqDCoCB0cmFjZV92ZnNfcHdyaXRlKGZkLCBidWYsIGNvdW50LCBvZmZzZXQpOwo+
PiArwqDCoMKgIHN0cnVjdCBpb3ZlYyBpb3YgPSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
IC5pb3ZfYmFzZcKgwqDCoCA9ICh2b2lkICopYnVmLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oCAuaW92X2xlbsKgwqDCoCA9IGNvdW50LAo+PiArwqDCoMKgIH07Cj4+ICvCoMKgwqAgc3RydWN0
IGZpbGUgKmZwOwo+PiArwqDCoMKgIHNpemVfdCBieXRlczsKPj4gK8KgwqDCoCBpbnQgZXJyb3I7
Cj4+IC3CoMKgwqAgZXJyb3IgPSBmZ2V0KGZkLCAmZnApOwo+PiAtwqDCoMKgIGlmIChlcnJvcikK
Pj4gLcKgwqDCoMKgwqDCoMKgIGdvdG8gb3V0X2Vycm5vOwo+PiArwqDCoMKgIGVycm9yID0gZmdl
dChmZCwgJmZwKTsKPj4gK8KgwqDCoCBpZiAoZXJyb3IpCj4+ICvCoMKgwqDCoMKgwqDCoCBnb3Rv
IG91dF9lcnJubzsKPj4gLcKgwqDCoCBlcnJvciA9IHN5c193cml0ZShmcCwgJmlvdiwgMSwgb2Zm
c2V0LCAmYnl0ZXMpOwo+PiAtwqDCoMKgIGZkcm9wKGZwKTsKPj4gK8KgwqDCoCBlcnJvciA9IHN5
c193cml0ZShmcCwgJmlvdiwgMSwgb2Zmc2V0LCAmYnl0ZXMpOwo+PiArwqDCoMKgIGZkcm9wKGZw
KTsKPj4gLcKgwqDCoCBpZiAoaGFzX2Vycm9yKGVycm9yLCBieXRlcykpCj4+IC3CoMKgwqDCoMKg
wqDCoCBnb3RvIG91dF9lcnJubzsKPj4gLcKgwqDCoCB0cmFjZV92ZnNfcHdyaXRlX3JldChieXRl
cyk7Cj4+IC3CoMKgwqAgcmV0dXJuIGJ5dGVzOwo+PiArwqDCoMKgIGlmIChoYXNfZXJyb3IoZXJy
b3IsIGJ5dGVzKSkKPj4gK8KgwqDCoMKgwqDCoMKgIGdvdG8gb3V0X2Vycm5vOwo+PiArwqDCoMKg
IHRyYWNlX3Zmc19wd3JpdGVfcmV0KGJ5dGVzKTsKPj4gK8KgwqDCoCByZXR1cm4gYnl0ZXM7Cj4+
IC3CoMKgwqAgb3V0X2Vycm5vOgo+PiAtwqDCoMKgIHRyYWNlX3Zmc19wd3JpdGVfZXJyKGVycm9y
KTsKPj4gLcKgwqDCoCBlcnJubyA9IGVycm9yOwo+PiAtwqDCoMKgIHJldHVybiAtMTsKPj4gK8Kg
wqDCoCBvdXRfZXJybm86Cj4+ICvCoMKgwqAgdHJhY2VfdmZzX3B3cml0ZV9lcnIoZXJyb3IpOwo+
PiArwqDCoMKgIGVycm5vID0gZXJyb3I7Cj4+ICvCoMKgwqAgcmV0dXJuIC0xOwo+PiDCoCB9Cj4+
IMKgIExGUzY0KHB3cml0ZSk7Cj4+IMKgIHNzaXplX3Qgd3JpdGUoaW50IGZkLCBjb25zdCB2b2lk
ICpidWYsIHNpemVfdCBjb3VudCkKPj4gwqAgewo+PiAtwqDCoMKgIHJldHVybiBwd3JpdGUoZmQs
IGJ1ZiwgY291bnQsIC0xKTsKPj4gK8KgwqDCoCByZXR1cm4gcHdyaXRlKGZkLCBidWYsIGNvdW50
LCAtMSk7Cj4+IMKgIH0KPj4gwqAgc3NpemVfdCBwcmVhZHYoaW50IGZkLCBjb25zdCBzdHJ1Y3Qg
aW92ZWMgKmlvdiwgaW50IGlvdmNudCwgb2ZmX3QgCj4+IG9mZnNldCkKPj4gwqAgewo+PiAtwqDC
oMKgIHN0cnVjdCBmaWxlICpmcDsKPj4gLcKgwqDCoCBzaXplX3QgYnl0ZXM7Cj4+IC3CoMKgwqAg
aW50IGVycm9yOwo+PiArwqDCoMKgIHN0cnVjdCBmaWxlICpmcDsKPj4gK8KgwqDCoCBzaXplX3Qg
Ynl0ZXM7Cj4+ICvCoMKgwqAgaW50IGVycm9yOwo+PiAtwqDCoMKgIGVycm9yID0gZmdldChmZCwg
JmZwKTsKPj4gLcKgwqDCoCBpZiAoZXJyb3IpCj4+IC3CoMKgwqDCoMKgwqDCoCBnb3RvIG91dF9l
cnJubzsKPj4gK8KgwqDCoCBlcnJvciA9IGZnZXQoZmQsICZmcCk7Cj4+ICvCoMKgwqAgaWYgKGVy
cm9yKQo+PiArwqDCoMKgwqDCoMKgwqAgZ290byBvdXRfZXJybm87Cj4+IC3CoMKgwqAgZXJyb3Ig
PSBzeXNfcmVhZChmcCwgaW92LCBpb3ZjbnQsIG9mZnNldCwgJmJ5dGVzKTsKPj4gLcKgwqDCoCBm
ZHJvcChmcCk7Cj4+ICvCoMKgwqAgZXJyb3IgPSBzeXNfcmVhZChmcCwgaW92LCBpb3ZjbnQsIG9m
ZnNldCwgJmJ5dGVzKTsKPj4gK8KgwqDCoCBmZHJvcChmcCk7Cj4+IC3CoMKgwqAgaWYgKGhhc19l
cnJvcihlcnJvciwgYnl0ZXMpKQo+PiAtwqDCoMKgwqDCoMKgwqAgZ290byBvdXRfZXJybm87Cj4+
IC3CoMKgwqAgcmV0dXJuIGJ5dGVzOwo+PiArwqDCoMKgIGlmIChoYXNfZXJyb3IoZXJyb3IsIGJ5
dGVzKSkKPj4gK8KgwqDCoMKgwqDCoMKgIGdvdG8gb3V0X2Vycm5vOwo+PiArwqDCoMKgIHJldHVy
biBieXRlczsKPj4gLcKgwqDCoCBvdXRfZXJybm86Cj4+IC3CoMKgwqAgZXJybm8gPSBlcnJvcjsK
Pj4gLcKgwqDCoCByZXR1cm4gLTE7Cj4+ICvCoMKgwqAgb3V0X2Vycm5vOgo+PiArwqDCoMKgIGVy
cm5vID0gZXJyb3I7Cj4+ICvCoMKgwqAgcmV0dXJuIC0xOwo+PiDCoCB9Cj4+IMKgIExGUzY0KHBy
ZWFkdik7Cj4+IMKgIHNzaXplX3QgcmVhZHYoaW50IGZkLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlv
diwgaW50IGlvdmNudCkKPj4gwqAgewo+PiAtwqDCoMKgIHJldHVybiBwcmVhZHYoZmQsIGlvdiwg
aW92Y250LCAtMSk7Cj4+ICvCoMKgwqAgcmV0dXJuIHByZWFkdihmZCwgaW92LCBpb3ZjbnQsIC0x
KTsKPj4gwqAgfQo+PiDCoCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19wd3JpdGV2LCAiJWQgJXAgMHgl
eCAweCV4IiwgaW50LCBjb25zdCBzdHJ1Y3QgCj4+IGlvdmVjKiwgaW50LCBvZmZfdCk7Cj4+IEBA
IC00NDMsMzMgKzQ0MywzMyBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19wd3JpdGV2X2VyciwgIiVk
IiwgaW50KTsKPj4gwqAgc3NpemVfdCBwd3JpdGV2KGludCBmZCwgY29uc3Qgc3RydWN0IGlvdmVj
ICppb3YsIGludCBpb3ZjbnQsIG9mZl90IAo+PiBvZmZzZXQpCj4+IMKgIHsKPj4gLcKgwqDCoCBz
dHJ1Y3QgZmlsZSAqZnA7Cj4+IC3CoMKgwqAgc2l6ZV90IGJ5dGVzOwo+PiAtwqDCoMKgIGludCBl
cnJvcjsKPj4gK8KgwqDCoCBzdHJ1Y3QgZmlsZSAqZnA7Cj4+ICvCoMKgwqAgc2l6ZV90IGJ5dGVz
Owo+PiArwqDCoMKgIGludCBlcnJvcjsKPj4gLcKgwqDCoCB0cmFjZV92ZnNfcHdyaXRldihmZCwg
aW92LCBpb3ZjbnQsIG9mZnNldCk7Cj4+IC3CoMKgwqAgZXJyb3IgPSBmZ2V0KGZkLCAmZnApOwo+
PiAtwqDCoMKgIGlmIChlcnJvcikKPj4gLcKgwqDCoMKgwqDCoMKgIGdvdG8gb3V0X2Vycm5vOwo+
PiArwqDCoMKgIHRyYWNlX3Zmc19wd3JpdGV2KGZkLCBpb3YsIGlvdmNudCwgb2Zmc2V0KTsKPj4g
K8KgwqDCoCBlcnJvciA9IGZnZXQoZmQsICZmcCk7Cj4+ICvCoMKgwqAgaWYgKGVycm9yKQo+PiAr
wqDCoMKgwqDCoMKgwqAgZ290byBvdXRfZXJybm87Cj4+IC3CoMKgwqAgZXJyb3IgPSBzeXNfd3Jp
dGUoZnAsIGlvdiwgaW92Y250LCBvZmZzZXQsICZieXRlcyk7Cj4+IC3CoMKgwqAgZmRyb3AoZnAp
Owo+PiArwqDCoMKgIGVycm9yID0gc3lzX3dyaXRlKGZwLCBpb3YsIGlvdmNudCwgb2Zmc2V0LCAm
Ynl0ZXMpOwo+PiArwqDCoMKgIGZkcm9wKGZwKTsKPj4gLcKgwqDCoCBpZiAoaGFzX2Vycm9yKGVy
cm9yLCBieXRlcykpCj4+IC3CoMKgwqDCoMKgwqDCoCBnb3RvIG91dF9lcnJubzsKPj4gLcKgwqDC
oCB0cmFjZV92ZnNfcHdyaXRldl9yZXQoYnl0ZXMpOwo+PiAtwqDCoMKgIHJldHVybiBieXRlczsK
Pj4gK8KgwqDCoCBpZiAoaGFzX2Vycm9yKGVycm9yLCBieXRlcykpCj4+ICvCoMKgwqDCoMKgwqDC
oCBnb3RvIG91dF9lcnJubzsKPj4gK8KgwqDCoCB0cmFjZV92ZnNfcHdyaXRldl9yZXQoYnl0ZXMp
Owo+PiArwqDCoMKgIHJldHVybiBieXRlczsKPj4gLcKgwqDCoCBvdXRfZXJybm86Cj4+IC3CoMKg
wqAgdHJhY2VfdmZzX3B3cml0ZXZfZXJyKGVycm9yKTsKPj4gLcKgwqDCoCBlcnJubyA9IGVycm9y
Owo+PiAtwqDCoMKgIHJldHVybiAtMTsKPj4gK8KgwqDCoCBvdXRfZXJybm86Cj4+ICvCoMKgwqAg
dHJhY2VfdmZzX3B3cml0ZXZfZXJyKGVycm9yKTsKPj4gK8KgwqDCoCBlcnJubyA9IGVycm9yOwo+
PiArwqDCoMKgIHJldHVybiAtMTsKPj4gwqAgfQo+PiDCoCBMRlM2NChwd3JpdGV2KTsKPj4gwqAg
c3NpemVfdCB3cml0ZXYoaW50IGZkLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlvdiwgaW50IGlvdmNu
dCkKPj4gwqAgewo+PiAtwqDCoMKgIHJldHVybiBwd3JpdGV2KGZkLCBpb3YsIGlvdmNudCwgLTEp
Owo+PiArwqDCoMKgIHJldHVybiBwd3JpdGV2KGZkLCBpb3YsIGlvdmNudCwgLTEpOwo+PiDCoCB9
Cj4+IMKgIFRSQUNFUE9JTlQodHJhY2VfdmZzX2lvY3RsLCAiJWQgMHgleCIsIGludCwgdW5zaWdu
ZWQgbG9uZyk7Cj4+IEBAIC00NzgsMzUgKzQ3OCwzNSBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19p
b2N0bF9lcnIsICIlZCIsIGludCk7Cj4+IMKgIGludCBpb2N0bChpbnQgZmQsIHVuc2lnbmVkIGxv
bmcgaW50IHJlcXVlc3QsIC4uLikKPj4gwqAgewo+PiAtwqDCoMKgIHN0cnVjdCBmaWxlICpmcDsK
Pj4gLcKgwqDCoCBpbnQgZXJyb3I7Cj4+IC3CoMKgwqAgdmFfbGlzdCBhcDsKPj4gLcKgwqDCoCB2
b2lkKiBhcmc7Cj4+ICvCoMKgwqAgc3RydWN0IGZpbGUgKmZwOwo+PiArwqDCoMKgIGludCBlcnJv
cjsKPj4gK8KgwqDCoCB2YV9saXN0IGFwOwo+PiArwqDCoMKgIHZvaWQqIGFyZzsKPj4gLcKgwqDC
oCB0cmFjZV92ZnNfaW9jdGwoZmQsIHJlcXVlc3QpOwo+PiAtwqDCoMKgIC8qIGdsaWJjIEFCSSBw
cm92aWRlcyBhIHZhcmlhZGljIHByb3RvdHlwZSBmb3IgaW9jdGwgc28gd2UgbmVlZCAKPj4gdG8g
YWdyZWUKPj4gLcKgwqDCoMKgICogd2l0aCBpdCwgc2luY2Ugd2Ugbm93IGluY2x1ZGUgc3lzL2lv
Y3RsLmgKPj4gLcKgwqDCoMKgICogcmVhZCB0aGUgZmlyc3QgYXJndW1lbnQgYW5kIHBhc3MgaXQg
dG8gc3lzX2lvY3RsKCkgKi8KPj4gLcKgwqDCoCB2YV9zdGFydChhcCwgcmVxdWVzdCk7Cj4+IC3C
oMKgwqAgYXJnID0gdmFfYXJnKGFwLCB2b2lkKik7Cj4+IC3CoMKgwqAgdmFfZW5kKGFwKTsKPj4g
K8KgwqDCoCB0cmFjZV92ZnNfaW9jdGwoZmQsIHJlcXVlc3QpOwo+PiArwqDCoMKgIC8qIGdsaWJj
IEFCSSBwcm92aWRlcyBhIHZhcmlhZGljIHByb3RvdHlwZSBmb3IgaW9jdGwgc28gd2UgbmVlZCAK
Pj4gdG8gYWdyZWUKPj4gK8KgwqDCoMKgICogd2l0aCBpdCwgc2luY2Ugd2Ugbm93IGluY2x1ZGUg
c3lzL2lvY3RsLmgKPj4gK8KgwqDCoMKgICogcmVhZCB0aGUgZmlyc3QgYXJndW1lbnQgYW5kIHBh
c3MgaXQgdG8gc3lzX2lvY3RsKCkgKi8KPj4gK8KgwqDCoCB2YV9zdGFydChhcCwgcmVxdWVzdCk7
Cj4+ICvCoMKgwqAgYXJnID0gdmFfYXJnKGFwLCB2b2lkKik7Cj4+ICvCoMKgwqAgdmFfZW5kKGFw
KTsKPj4gLcKgwqDCoCBlcnJvciA9IGZnZXQoZmQsICZmcCk7Cj4+IC3CoMKgwqAgaWYgKGVycm9y
KQo+PiAtwqDCoMKgwqDCoMKgwqAgZ290byBvdXRfZXJybm87Cj4+ICvCoMKgwqAgZXJyb3IgPSBm
Z2V0KGZkLCAmZnApOwo+PiArwqDCoMKgIGlmIChlcnJvcikKPj4gK8KgwqDCoMKgwqDCoMKgIGdv
dG8gb3V0X2Vycm5vOwo+PiAtwqDCoMKgIGVycm9yID0gc3lzX2lvY3RsKGZwLCByZXF1ZXN0LCBh
cmcpOwo+PiAtwqDCoMKgIGZkcm9wKGZwKTsKPj4gK8KgwqDCoCBlcnJvciA9IHN5c19pb2N0bChm
cCwgcmVxdWVzdCwgYXJnKTsKPj4gK8KgwqDCoCBmZHJvcChmcCk7Cj4+IC3CoMKgwqAgaWYgKGVy
cm9yKQo+PiAtwqDCoMKgwqDCoMKgwqAgZ290byBvdXRfZXJybm87Cj4+IC3CoMKgwqAgdHJhY2Vf
dmZzX2lvY3RsX3JldCgpOwo+PiAtwqDCoMKgIHJldHVybiAwOwo+PiArwqDCoMKgIGlmIChlcnJv
cikKPj4gK8KgwqDCoMKgwqDCoMKgIGdvdG8gb3V0X2Vycm5vOwo+PiArwqDCoMKgIHRyYWNlX3Zm
c19pb2N0bF9yZXQoKTsKPj4gK8KgwqDCoCByZXR1cm4gMDsKPj4gLcKgwqDCoCBvdXRfZXJybm86
Cj4+IC3CoMKgwqAgdHJhY2VfdmZzX2lvY3RsX2VycihlcnJvcik7Cj4+IC3CoMKgwqAgZXJybm8g
PSBlcnJvcjsKPj4gLcKgwqDCoCByZXR1cm4gLTE7Cj4+ICvCoMKgwqAgb3V0X2Vycm5vOgo+PiAr
wqDCoMKgIHRyYWNlX3Zmc19pb2N0bF9lcnIoZXJyb3IpOwo+PiArwqDCoMKgIGVycm5vID0gZXJy
b3I7Cj4+ICvCoMKgwqAgcmV0dXJuIC0xOwo+PiDCoCB9Cj4+IMKgIFRSQUNFUE9JTlQodHJhY2Vf
dmZzX2ZzeW5jLCAiJWQiLCBpbnQpOwo+PiBAQCAtNTE1LDMyICs1MTUsMzIgQEAgVFJBQ0VQT0lO
VCh0cmFjZV92ZnNfZnN5bmNfZXJyLCAiJWQiLCBpbnQpOwo+PiDCoCBpbnQgZnN5bmMoaW50IGZk
KQo+PiDCoCB7Cj4+IC3CoMKgwqAgc3RydWN0IGZpbGUgKmZwOwo+PiAtwqDCoMKgIGludCBlcnJv
cjsKPj4gK8KgwqDCoCBzdHJ1Y3QgZmlsZSAqZnA7Cj4+ICvCoMKgwqAgaW50IGVycm9yOwo+PiAt
wqDCoMKgIHRyYWNlX3Zmc19mc3luYyhmZCk7Cj4+IC3CoMKgwqAgZXJyb3IgPSBmZ2V0KGZkLCAm
ZnApOwo+PiAtwqDCoMKgIGlmIChlcnJvcikKPj4gLcKgwqDCoMKgwqDCoMKgIGdvdG8gb3V0X2Vy
cm5vOwo+PiArwqDCoMKgIHRyYWNlX3Zmc19mc3luYyhmZCk7Cj4+ICvCoMKgwqAgZXJyb3IgPSBm
Z2V0KGZkLCAmZnApOwo+PiArwqDCoMKgIGlmIChlcnJvcikKPj4gK8KgwqDCoMKgwqDCoMKgIGdv
dG8gb3V0X2Vycm5vOwo+PiAtwqDCoMKgIGVycm9yID0gc3lzX2ZzeW5jKGZwKTsKPj4gLcKgwqDC
oCBmZHJvcChmcCk7Cj4+ICvCoMKgwqAgZXJyb3IgPSBzeXNfZnN5bmMoZnApOwo+PiArwqDCoMKg
IGZkcm9wKGZwKTsKPj4gLcKgwqDCoCBpZiAoZXJyb3IpCj4+IC3CoMKgwqDCoMKgwqDCoCBnb3Rv
IG91dF9lcnJubzsKPj4gLcKgwqDCoCB0cmFjZV92ZnNfZnN5bmNfcmV0KCk7Cj4+IC3CoMKgwqAg
cmV0dXJuIDA7Cj4+ICvCoMKgwqAgaWYgKGVycm9yKQo+PiArwqDCoMKgwqDCoMKgwqAgZ290byBv
dXRfZXJybm87Cj4+ICvCoMKgwqAgdHJhY2VfdmZzX2ZzeW5jX3JldCgpOwo+PiArwqDCoMKgIHJl
dHVybiAwOwo+PiAtwqDCoMKgIG91dF9lcnJubzoKPj4gLcKgwqDCoCB0cmFjZV92ZnNfZnN5bmNf
ZXJyKGVycm9yKTsKPj4gLcKgwqDCoCBlcnJubyA9IGVycm9yOwo+PiAtwqDCoMKgIHJldHVybiAt
MTsKPj4gK8KgwqDCoCBvdXRfZXJybm86Cj4+ICvCoMKgwqAgdHJhY2VfdmZzX2ZzeW5jX2Vycihl
cnJvcik7Cj4+ICvCoMKgwqAgZXJybm8gPSBlcnJvcjsKPj4gK8KgwqDCoCByZXR1cm4gLTE7Cj4+
IMKgIH0KPj4gwqAgaW50IGZkYXRhc3luYyhpbnQgZmQpCj4+IMKgIHsKPj4gLcKgwqDCoCAvLyBU
T0RPOiBTZWUgaWYgd2UgY2FuIGRvIGxlc3MgdGhhbiBmc3luYygpLgo+PiAtwqDCoMKgIHJldHVy
biBmc3luYyhmZCk7Cj4+ICvCoMKgwqAgLy8gVE9ETzogU2VlIGlmIHdlIGNhbiBkbyBsZXNzIHRo
YW4gZnN5bmMoKS4KPj4gK8KgwqDCoCByZXR1cm4gZnN5bmMoZmQpOwo+PiDCoCB9Cj4+IMKgIFRS
QUNFUE9JTlQodHJhY2VfdmZzX2ZzdGF0LCAiJWQgJXAiLCBpbnQsIHN0cnVjdCBzdGF0Kik7Cj4+
IEBAIC01NTAsMjcgKzU1MCwyNyBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19mc3RhdF9lcnIsICIl
ZCIsIGludCk7Cj4+IMKgIGV4dGVybiAiQyIKPj4gwqAgaW50IF9fZnhzdGF0KGludCB2ZXIsIGlu
dCBmZCwgc3RydWN0IHN0YXQgKnN0KQo+PiDCoCB7Cj4+IC3CoMKgwqAgc3RydWN0IGZpbGUgKmZw
Owo+PiAtwqDCoMKgIGludCBlcnJvcjsKPj4gK8KgwqDCoCBzdHJ1Y3QgZmlsZSAqZnA7Cj4+ICvC
oMKgwqAgaW50IGVycm9yOwo+PiAtwqDCoMKgIHRyYWNlX3Zmc19mc3RhdChmZCwgc3QpOwo+PiAr
wqDCoMKgIHRyYWNlX3Zmc19mc3RhdChmZCwgc3QpOwo+PiAtwqDCoMKgIGVycm9yID0gZmdldChm
ZCwgJmZwKTsKPj4gLcKgwqDCoCBpZiAoZXJyb3IpCj4+IC3CoMKgwqDCoMKgwqDCoCBnb3RvIG91
dF9lcnJubzsKPj4gK8KgwqDCoCBlcnJvciA9IGZnZXQoZmQsICZmcCk7Cj4+ICvCoMKgwqAgaWYg
KGVycm9yKQo+PiArwqDCoMKgwqDCoMKgwqAgZ290byBvdXRfZXJybm87Cj4+IC3CoMKgwqAgZXJy
b3IgPSBzeXNfZnN0YXQoZnAsIHN0KTsKPj4gLcKgwqDCoCBmZHJvcChmcCk7Cj4+ICvCoMKgwqAg
ZXJyb3IgPSBzeXNfZnN0YXQoZnAsIHN0KTsKPj4gK8KgwqDCoCBmZHJvcChmcCk7Cj4+IC3CoMKg
wqAgaWYgKGVycm9yKQo+PiAtwqDCoMKgwqDCoMKgwqAgZ290byBvdXRfZXJybm87Cj4+IC3CoMKg
wqAgdHJhY2VfdmZzX2ZzdGF0X3JldCgpOwo+PiAtwqDCoMKgIHJldHVybiAwOwo+PiArwqDCoMKg
IGlmIChlcnJvcikKPj4gK8KgwqDCoMKgwqDCoMKgIGdvdG8gb3V0X2Vycm5vOwo+PiArwqDCoMKg
IHRyYWNlX3Zmc19mc3RhdF9yZXQoKTsKPj4gK8KgwqDCoCByZXR1cm4gMDsKPj4gLcKgwqDCoCBv
dXRfZXJybm86Cj4+IC3CoMKgwqAgdHJhY2VfdmZzX2ZzdGF0X2VycihlcnJvcik7Cj4+IC3CoMKg
wqAgZXJybm8gPSBlcnJvcjsKPj4gLcKgwqDCoCByZXR1cm4gLTE7Cj4+ICvCoMKgwqAgb3V0X2Vy
cm5vOgo+PiArwqDCoMKgIHRyYWNlX3Zmc19mc3RhdF9lcnIoZXJyb3IpOwo+PiArwqDCoMKgIGVy
cm5vID0gZXJyb3I7Cj4+ICvCoMKgwqAgcmV0dXJuIC0xOwo+PiDCoCB9Cj4+IMKgIExGUzY0KF9f
ZnhzdGF0KTsKPj4gQEAgLTU3OCw1MiArNTc4LDUyIEBAIExGUzY0KF9fZnhzdGF0KTsKPj4gwqAg
ZXh0ZXJuICJDIgo+PiDCoCBpbnQgZnN0YXQoaW50IGZkLCBzdHJ1Y3Qgc3RhdCAqc3QpCj4+IMKg
IHsKPj4gLcKgwqDCoCByZXR1cm4gX19meHN0YXQoMSwgZmQsIHN0KTsKPj4gK8KgwqDCoCByZXR1
cm4gX19meHN0YXQoMSwgZmQsIHN0KTsKPj4gwqAgfQo+PiDCoCBMRlM2NChmc3RhdCk7Cj4+IMKg
IGV4dGVybiAiQyIKPj4gwqAgaW50IF9fZnhzdGF0YXQoaW50IHZlciwgaW50IGRpcmZkLCBjb25z
dCBjaGFyICpwYXRobmFtZSwgc3RydWN0IHN0YXQgCj4+ICpzdCwKPj4gLcKgwqDCoMKgwqDCoMKg
IGludCBmbGFncykKPj4gK8KgwqDCoMKgwqDCoMKgIGludCBmbGFncykKPj4gwqAgewo+PiAtwqDC
oMKgIGlmIChmbGFncyAmIEFUX1NZTUxJTktfTk9GT0xMT1cpIHsKPj4gLcKgwqDCoMKgwqDCoMKg
IFVOSU1QTEVNRU5URUQoImZzdGF0YXQoKSB3aXRoIEFUX1NZTUxJTktfTk9GT0xMT1ciKTsKPj4g
LcKgwqDCoCB9Cj4+ICvCoMKgwqAgaWYgKGZsYWdzICYgQVRfU1lNTElOS19OT0ZPTExPVykgewo+
PiArwqDCoMKgwqDCoMKgwqAgVU5JTVBMRU1FTlRFRCgiZnN0YXRhdCgpIHdpdGggQVRfU1lNTElO
S19OT0ZPTExPVyIpOwo+PiArwqDCoMKgIH0KPj4gLcKgwqDCoCBpZiAocGF0aG5hbWVbMF0gPT0g
Jy8nIHx8IGRpcmZkID09IEFUX0ZEQ1dEKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCByZXR1cm4gc3Rh
dChwYXRobmFtZSwgc3QpOwo+PiAtwqDCoMKgIH0KPj4gLcKgwqDCoCAvLyBJZiBBVF9FTVBUWV9Q
QVRIIGFuZCBwYXRobmFtZSBpcyBhbiBlbXB0eSBzdHJpbmcsIGZzdGF0YXQoKSAKPj4gb3BlcmF0
ZXMgb24KPj4gLcKgwqDCoCAvLyBkaXJmZCBpdHNlbGYsIGFuZCBpbiB0aGF0IGNhc2UgaXQgZG9l
c24ndCBoYXZlIHRvIGJlIGEgZGlyZWN0b3J5Lgo+PiAtwqDCoMKgIGlmICgoZmxhZ3MgJiBBVF9F
TVBUWV9QQVRIKSAmJiAhcGF0aG5hbWVbMF0pIHsKPj4gLcKgwqDCoMKgwqDCoMKgIHJldHVybiBm
c3RhdChkaXJmZCwgc3QpOwo+PiAtwqDCoMKgIH0KPj4gK8KgwqDCoCBpZiAocGF0aG5hbWVbMF0g
PT0gJy8nIHx8IGRpcmZkID09IEFUX0ZEQ1dEKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4g
c3RhdChwYXRobmFtZSwgc3QpOwo+PiArwqDCoMKgIH0KPj4gK8KgwqDCoCAvLyBJZiBBVF9FTVBU
WV9QQVRIIGFuZCBwYXRobmFtZSBpcyBhbiBlbXB0eSBzdHJpbmcsIGZzdGF0YXQoKSAKPj4gb3Bl
cmF0ZXMgb24KPj4gK8KgwqDCoCAvLyBkaXJmZCBpdHNlbGYsIGFuZCBpbiB0aGF0IGNhc2UgaXQg
ZG9lc24ndCBoYXZlIHRvIGJlIGEgZGlyZWN0b3J5Lgo+PiArwqDCoMKgIGlmICgoZmxhZ3MgJiBB
VF9FTVBUWV9QQVRIKSAmJiAhcGF0aG5hbWVbMF0pIHsKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVy
biBmc3RhdChkaXJmZCwgc3QpOwo+PiArwqDCoMKgIH0KPj4gLcKgwqDCoCBzdHJ1Y3QgZmlsZSAq
ZnA7Cj4+IC3CoMKgwqAgaW50IGVycm9yID0gZmdldChkaXJmZCwgJmZwKTsKPj4gLcKgwqDCoCBp
ZiAoZXJyb3IpIHsKPj4gLcKgwqDCoMKgwqDCoMKgIGVycm5vID0gZXJyb3I7Cj4+IC3CoMKgwqDC
oMKgwqDCoCByZXR1cm4gLTE7Cj4+IC3CoMKgwqAgfQo+PiArwqDCoMKgIHN0cnVjdCBmaWxlICpm
cDsKPj4gK8KgwqDCoCBpbnQgZXJyb3IgPSBmZ2V0KGRpcmZkLCAmZnApOwo+PiArwqDCoMKgIGlm
IChlcnJvcikgewo+PiArwqDCoMKgwqDCoMKgwqAgZXJybm8gPSBlcnJvcjsKPj4gK8KgwqDCoMKg
wqDCoMKgIHJldHVybiAtMTsKPj4gK8KgwqDCoCB9Cj4+IC3CoMKgwqAgc3RydWN0IHZub2RlICp2
cCA9IGZwLT5mX2RlbnRyeS0+ZF92bm9kZTsKPj4gLcKgwqDCoCB2bl9sb2NrKHZwKTsKPj4gK8Kg
wqDCoCBzdHJ1Y3Qgdm5vZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOwo+PiArwqDCoMKg
IHZuX2xvY2sodnApOwo+PiAtwqDCoMKgIHN0ZDo6dW5pcXVlX3B0cjxjaGFyIFtdPiB1cCAobmV3
IGNoYXJbUEFUSF9NQVhdKTsKPj4gLcKgwqDCoCBjaGFyICpwID0gdXAuZ2V0KCk7Cj4+IC3CoMKg
wqAgLyogYnVpbGQgYWJzb2x1dGUgcGF0aCAqLwo+PiAtwqDCoMKgIHN0cmxjcHkocCwgZnAtPmZf
ZGVudHJ5LT5kX21vdW50LT5tX3BhdGgsIFBBVEhfTUFYKTsKPj4gLcKgwqDCoCBzdHJsY2F0KHAs
IGZwLT5mX2RlbnRyeS0+ZF9wYXRoLCBQQVRIX01BWCk7Cj4+IC3CoMKgwqAgc3RybGNhdChwLCAi
LyIsIFBBVEhfTUFYKTsKPj4gLcKgwqDCoCBzdHJsY2F0KHAsIHBhdGhuYW1lLCBQQVRIX01BWCk7
Cj4+ICvCoMKgwqAgc3RkOjp1bmlxdWVfcHRyPGNoYXIgW10+IHVwIChuZXcgY2hhcltQQVRIX01B
WF0pOwo+PiArwqDCoMKgIGNoYXIgKnAgPSB1cC5nZXQoKTsKPj4gK8KgwqDCoCAvKiBidWlsZCBh
YnNvbHV0ZSBwYXRoICovCj4+ICvCoMKgwqAgc3RybGNweShwLCBmcC0+Zl9kZW50cnktPmRfbW91
bnQtPm1fcGF0aCwgUEFUSF9NQVgpOwo+PiArwqDCoMKgIHN0cmxjYXQocCwgZnAtPmZfZGVudHJ5
LT5kX3BhdGgsIFBBVEhfTUFYKTsKPj4gK8KgwqDCoCBzdHJsY2F0KHAsICIvIiwgUEFUSF9NQVgp
Owo+PiArwqDCoMKgIHN0cmxjYXQocCwgcGF0aG5hbWUsIFBBVEhfTUFYKTsKPj4gLcKgwqDCoCBl
cnJvciA9IHN0YXQocCwgc3QpOwo+PiArwqDCoMKgIGVycm9yID0gc3RhdChwLCBzdCk7Cj4+IC3C
oMKgwqAgdm5fdW5sb2NrKHZwKTsKPj4gLcKgwqDCoCBmZHJvcChmcCk7Cj4+ICvCoMKgwqAgdm5f
dW5sb2NrKHZwKTsKPj4gK8KgwqDCoCBmZHJvcChmcCk7Cj4+IC3CoMKgwqAgcmV0dXJuIGVycm9y
Owo+PiArwqDCoMKgIHJldHVybiBlcnJvcjsKPj4gwqAgfQo+PiDCoCBMRlM2NChfX2Z4c3RhdGF0
KTsKPj4gQEAgLTYzMSwyOSArNjMxLDI5IEBAIExGUzY0KF9fZnhzdGF0YXQpOwo+PiDCoCBleHRl
cm4gIkMiCj4+IMKgIGludCBmc3RhdGF0KGludCBkaXJmZCwgY29uc3QgY2hhciAqcGF0aCwgc3Ry
dWN0IHN0YXQgKnN0LCBpbnQgZmxhZ3MpCj4+IMKgIHsKPj4gLcKgwqDCoCByZXR1cm4gX19meHN0
YXRhdCgxLCBkaXJmZCwgcGF0aCwgc3QsIGZsYWdzKTsKPj4gK8KgwqDCoCByZXR1cm4gX19meHN0
YXRhdCgxLCBkaXJmZCwgcGF0aCwgc3QsIGZsYWdzKTsKPj4gwqAgfQo+PiDCoCBMRlM2NChmc3Rh
dGF0KTsKPj4gwqAgZXh0ZXJuICJDIiBpbnQgZmxvY2soaW50IGZkLCBpbnQgb3BlcmF0aW9uKQo+
PiDCoCB7Cj4+IC3CoMKgwqAgaWYgKCFmaWxlcmVmX2Zyb21fZmQoZmQpKSB7Cj4+IC3CoMKgwqDC
oMKgwqDCoCByZXR1cm4gbGliY19lcnJvcihFQkFERik7Cj4+IC3CoMKgwqAgfQo+PiArwqDCoMKg
IGlmICghZmlsZXJlZl9mcm9tX2ZkKGZkKSkgewo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIGxp
YmNfZXJyb3IoRUJBREYpOwo+PiArwqDCoMKgIH0KPj4gLcKgwqDCoCBzd2l0Y2ggKG9wZXJhdGlv
bikgewo+PiAtwqDCoMKgIGNhc2UgTE9DS19TSDoKPj4gLcKgwqDCoCBjYXNlIExPQ0tfU0ggfCBM
T0NLX05COgo+PiAtwqDCoMKgIGNhc2UgTE9DS19FWDoKPj4gLcKgwqDCoCBjYXNlIExPQ0tfRVgg
fCBMT0NLX05COgo+PiAtwqDCoMKgIGNhc2UgTE9DS19VTjoKPj4gLcKgwqDCoMKgwqDCoMKgIGJy
ZWFrOwo+PiAtwqDCoMKgIGRlZmF1bHQ6Cj4+IC3CoMKgwqDCoMKgwqDCoCByZXR1cm4gbGliY19l
cnJvcihFSU5WQUwpOwo+PiAtwqDCoMKgIH0KPj4gK8KgwqDCoCBzd2l0Y2ggKG9wZXJhdGlvbikg
ewo+PiArwqDCoMKgIGNhc2UgTE9DS19TSDoKPj4gK8KgwqDCoCBjYXNlIExPQ0tfU0ggfCBMT0NL
X05COgo+PiArwqDCoMKgIGNhc2UgTE9DS19FWDoKPj4gK8KgwqDCoCBjYXNlIExPQ0tfRVggfCBM
T0NLX05COgo+PiArwqDCoMKgIGNhc2UgTE9DS19VTjoKPj4gK8KgwqDCoMKgwqDCoMKgIGJyZWFr
Owo+PiArwqDCoMKgIGRlZmF1bHQ6Cj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gbGliY19lcnJv
cihFSU5WQUwpOwo+PiArwqDCoMKgIH0KPj4gLcKgwqDCoCByZXR1cm4gMDsKPj4gK8KgwqDCoCBy
ZXR1cm4gMDsKPj4gwqAgfQo+PiDCoCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19yZWFkZGlyLCAiJWQg
JXAiLCBpbnQsIGRpcmVudCopOwo+PiBAQCAtNjYyLDE1MiArNjYyLDE1MiBAQCBUUkFDRVBPSU5U
KHRyYWNlX3Zmc19yZWFkZGlyX2VyciwgIiVkIiwgaW50KTsKPj4gwqAgc3RydWN0IF9fZGlyc3Ry
ZWFtCj4+IMKgIHsKPj4gLcKgwqDCoCBpbnQgZmQ7Cj4+ICvCoMKgwqAgaW50IGZkOwo+PiDCoCB9
Owo+PiDCoCBESVIgKm9wZW5kaXIoY29uc3QgY2hhciAqcGF0aCkKPj4gwqAgewo+PiAtwqDCoMKg
IERJUiAqZGlyID0gbmV3IERJUjsKPj4gK8KgwqDCoCBESVIgKmRpciA9IG5ldyBESVI7Cj4+IC3C
oMKgwqAgaWYgKCFkaXIpCj4+IC3CoMKgwqDCoMKgwqDCoCByZXR1cm4gbGliY19lcnJvcl9wdHI8
RElSPihFTk9NRU0pOwo+PiArwqDCoMKgIGlmICghZGlyKQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0
dXJuIGxpYmNfZXJyb3JfcHRyPERJUj4oRU5PTUVNKTsKPj4gLcKgwqDCoCBkaXItPmZkID0gb3Bl
bihwYXRoLCBPX1JET05MWSk7Cj4+IC3CoMKgwqAgaWYgKGRpci0+ZmQgPCAwKSB7Cj4+IC3CoMKg
wqDCoMKgwqDCoCBkZWxldGUgZGlyOwo+PiAtwqDCoMKgwqDCoMKgwqAgcmV0dXJuIG51bGxwdHI7
Cj4+IC3CoMKgwqAgfQo+PiAtwqDCoMKgIHJldHVybiBkaXI7Cj4+ICvCoMKgwqAgZGlyLT5mZCA9
IG9wZW4ocGF0aCwgT19SRE9OTFkpOwo+PiArwqDCoMKgIGlmIChkaXItPmZkIDwgMCkgewo+PiAr
wqDCoMKgwqDCoMKgwqAgZGVsZXRlIGRpcjsKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBudWxs
cHRyOwo+PiArwqDCoMKgIH0KPj4gK8KgwqDCoCByZXR1cm4gZGlyOwo+PiDCoCB9Cj4+IMKgIERJ
UiAqZmRvcGVuZGlyKGludCBmZCkKPj4gwqAgewo+PiAtwqDCoMKgIERJUiAqZGlyOwo+PiAtwqDC
oMKgIHN0cnVjdCBzdGF0IHN0Owo+PiAtwqDCoMKgIGlmIChmc3RhdChmZCwgJnN0KSA8IDApIHsK
Pj4gLcKgwqDCoMKgwqDCoMKgIHJldHVybiBudWxscHRyOwo+PiAtwqDCoMKgIH0KPj4gLcKgwqDC
oCBpZiAoIVNfSVNESVIoc3Quc3RfbW9kZSkpIHsKPj4gLcKgwqDCoMKgwqDCoMKgIGVycm5vID0g
RU5PVERJUjsKPj4gLcKgwqDCoMKgwqDCoMKgIHJldHVybiBudWxscHRyOwo+PiAtwqDCoMKgIH0K
Pj4gLcKgwqDCoCBkaXIgPSBuZXcgRElSOwo+PiAtwqDCoMKgIGRpci0+ZmQgPSBmZDsKPj4gLcKg
wqDCoCByZXR1cm4gZGlyOwo+PiArwqDCoMKgIERJUiAqZGlyOwo+PiArwqDCoMKgIHN0cnVjdCBz
dGF0IHN0Owo+PiArwqDCoMKgIGlmIChmc3RhdChmZCwgJnN0KSA8IDApIHsKPj4gK8KgwqDCoMKg
wqDCoMKgIHJldHVybiBudWxscHRyOwo+PiArwqDCoMKgIH0KPj4gK8KgwqDCoCBpZiAoIVNfSVNE
SVIoc3Quc3RfbW9kZSkpIHsKPj4gK8KgwqDCoMKgwqDCoMKgIGVycm5vID0gRU5PVERJUjsKPj4g
K8KgwqDCoMKgwqDCoMKgIHJldHVybiBudWxscHRyOwo+PiArwqDCoMKgIH0KPj4gK8KgwqDCoCBk
aXIgPSBuZXcgRElSOwo+PiArwqDCoMKgIGRpci0+ZmQgPSBmZDsKPj4gK8KgwqDCoCByZXR1cm4g
ZGlyOwo+PiDCoCB9Cj4+IMKgIGludCBkaXJmZChESVIgKmRpcnApCj4+IMKgIHsKPj4gLcKgwqDC
oCBpZiAoIWRpcnApIHsKPj4gLcKgwqDCoMKgwqDCoMKgIHJldHVybiBsaWJjX2Vycm9yKEVJTlZB
TCk7Cj4+IC3CoMKgwqAgfQo+PiArwqDCoMKgIGlmICghZGlycCkgewo+PiArwqDCoMKgwqDCoMKg
wqAgcmV0dXJuIGxpYmNfZXJyb3IoRUlOVkFMKTsKPj4gK8KgwqDCoCB9Cj4+IC3CoMKgwqAgcmV0
dXJuIGRpcnAtPmZkOwo+PiArwqDCoMKgIHJldHVybiBkaXJwLT5mZDsKPj4gwqAgfQo+PiDCoCBp
bnQgY2xvc2VkaXIoRElSICpkaXIpCj4+IMKgIHsKPj4gLcKgwqDCoCBjbG9zZShkaXItPmZkKTsK
Pj4gLcKgwqDCoCBkZWxldGUgZGlyOwo+PiAtwqDCoMKgIHJldHVybiAwOwo+PiArwqDCoMKgIGNs
b3NlKGRpci0+ZmQpOwo+PiArwqDCoMKgIGRlbGV0ZSBkaXI7Cj4+ICvCoMKgwqAgcmV0dXJuIDA7
Cj4+IMKgIH0KPj4gwqAgc3RydWN0IGRpcmVudCAqcmVhZGRpcihESVIgKmRpcikKPj4gwqAgewo+
PiAtwqDCoMKgIHN0YXRpYyBfX3RocmVhZCBzdHJ1Y3QgZGlyZW50IGVudHJ5LCAqcmVzdWx0Owo+
PiAtwqDCoMKgIGludCByZXQ7Cj4+ICvCoMKgwqAgc3RhdGljIF9fdGhyZWFkIHN0cnVjdCBkaXJl
bnQgZW50cnksICpyZXN1bHQ7Cj4+ICvCoMKgwqAgaW50IHJldDsKPj4gLcKgwqDCoCByZXQgPSBy
ZWFkZGlyX3IoZGlyLCAmZW50cnksICZyZXN1bHQpOwo+PiAtwqDCoMKgIGlmIChyZXQpCj4+IC3C
oMKgwqDCoMKgwqDCoCByZXR1cm4gbGliY19lcnJvcl9wdHI8c3RydWN0IGRpcmVudD4ocmV0KTsK
Pj4gK8KgwqDCoCByZXQgPSByZWFkZGlyX3IoZGlyLCAmZW50cnksICZyZXN1bHQpOwo+PiArwqDC
oMKgIGlmIChyZXQpCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gbGliY19lcnJvcl9wdHI8c3Ry
dWN0IGRpcmVudD4ocmV0KTsKPj4gLcKgwqDCoCBlcnJubyA9IDA7Cj4+IC3CoMKgwqAgcmV0dXJu
IHJlc3VsdDsKPj4gK8KgwqDCoCBlcnJubyA9IDA7Cj4+ICvCoMKgwqAgcmV0dXJuIHJlc3VsdDsK
Pj4gwqAgfQo+PiDCoCBpbnQgcmVhZGRpcl9yKERJUiAqZGlyLCBzdHJ1Y3QgZGlyZW50ICplbnRy
eSwgc3RydWN0IGRpcmVudCAqKnJlc3VsdCkKPj4gwqAgewo+PiAtwqDCoMKgIGludCBlcnJvcjsK
Pj4gLcKgwqDCoCBzdHJ1Y3QgZmlsZSAqZnA7Cj4+IC0KPj4gLcKgwqDCoCB0cmFjZV92ZnNfcmVh
ZGRpcihkaXItPmZkLCBlbnRyeSk7Cj4+IC3CoMKgwqAgZXJyb3IgPSBmZ2V0KGRpci0+ZmQsICZm
cCk7Cj4+IC3CoMKgwqAgaWYgKGVycm9yKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCB0cmFjZV92ZnNf
cmVhZGRpcl9lcnIoZXJyb3IpOwo+PiAtwqDCoMKgIH0gZWxzZSB7Cj4+IC3CoMKgwqDCoMKgwqDC
oCBlcnJvciA9IHN5c19yZWFkZGlyKGZwLCBlbnRyeSk7Cj4+IC3CoMKgwqDCoMKgwqDCoCBmZHJv
cChmcCk7Cj4+IC3CoMKgwqDCoMKgwqDCoCBpZiAoZXJyb3IpIHsKPj4gLcKgwqDCoMKgwqDCoMKg
wqDCoMKgwqAgdHJhY2VfdmZzX3JlYWRkaXJfZXJyKGVycm9yKTsKPj4gLcKgwqDCoMKgwqDCoMKg
IH0gZWxzZSB7Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHRyYWNlX3Zmc19yZWFkZGlyX3Jl
dCgpOwo+PiAtwqDCoMKgwqDCoMKgwqAgfQo+PiAtwqDCoMKgIH0KPj4gLcKgwqDCoCAvLyBPdXIg
ZGlyZW50IGhhcyAobGlrZSBMaW51eCkgYSBkX3JlY2xlbiBmaWVsZCwgYnV0IGEgY29uc3RhbnQg
Cj4+IHNpemUuCj4+IC3CoMKgwqAgZW50cnktPmRfcmVjbGVuID0gc2l6ZW9mKCplbnRyeSk7Cj4+
IC0KPj4gLcKgwqDCoCBpZiAoZXJyb3IpIHsKPj4gLcKgwqDCoMKgwqDCoMKgICpyZXN1bHQgPSBu
dWxscHRyOwo+PiAtwqDCoMKgIH0gZWxzZSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCAqcmVzdWx0ID0g
ZW50cnk7Cj4+IC3CoMKgwqAgfQo+PiAtwqDCoMKgIHJldHVybiBlcnJvciA9PSBFTk9FTlQgPyAw
IDogZXJyb3I7Cj4+ICvCoMKgwqAgaW50IGVycm9yOwo+PiArwqDCoMKgIHN0cnVjdCBmaWxlICpm
cDsKPj4gKwo+PiArwqDCoMKgIHRyYWNlX3Zmc19yZWFkZGlyKGRpci0+ZmQsIGVudHJ5KTsKPj4g
K8KgwqDCoCBlcnJvciA9IGZnZXQoZGlyLT5mZCwgJmZwKTsKPj4gK8KgwqDCoCBpZiAoZXJyb3Ip
IHsKPj4gK8KgwqDCoMKgwqDCoMKgIHRyYWNlX3Zmc19yZWFkZGlyX2VycihlcnJvcik7Cj4+ICvC
oMKgwqAgfSBlbHNlIHsKPj4gK8KgwqDCoMKgwqDCoMKgIGVycm9yID0gc3lzX3JlYWRkaXIoZnAs
IGVudHJ5KTsKPj4gK8KgwqDCoMKgwqDCoMKgIGZkcm9wKGZwKTsKPj4gK8KgwqDCoMKgwqDCoMKg
IGlmIChlcnJvcikgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB0cmFjZV92ZnNfcmVhZGRp
cl9lcnIoZXJyb3IpOwo+PiArwqDCoMKgwqDCoMKgwqAgfSBlbHNlIHsKPj4gK8KgwqDCoMKgwqDC
oMKgwqDCoMKgwqAgdHJhY2VfdmZzX3JlYWRkaXJfcmV0KCk7Cj4+ICvCoMKgwqDCoMKgwqDCoCB9
Cj4+ICvCoMKgwqAgfQo+PiArwqDCoMKgIC8vIE91ciBkaXJlbnQgaGFzIChsaWtlIExpbnV4KSBh
IGRfcmVjbGVuIGZpZWxkLCBidXQgYSBjb25zdGFudCAKPj4gc2l6ZS4KPj4gK8KgwqDCoCBlbnRy
eS0+ZF9yZWNsZW4gPSBzaXplb2YoKmVudHJ5KTsKPj4gKwo+PiArwqDCoMKgIGlmIChlcnJvcikg
ewo+PiArwqDCoMKgwqDCoMKgwqAgKnJlc3VsdCA9IG51bGxwdHI7Cj4+ICvCoMKgwqAgfSBlbHNl
IHsKPj4gK8KgwqDCoMKgwqDCoMKgICpyZXN1bHQgPSBlbnRyeTsKPj4gK8KgwqDCoCB9Cj4+ICvC
oMKgwqAgcmV0dXJuIGVycm9yID09IEVOT0VOVCA/IDAgOiBlcnJvcjsKPj4gwqAgfQo+PiDCoCAv
LyBGSVhNRTogaW4gNjRiaXQgZGlyZW50NjQgYW5kIGRpcmVudCBhcmUgaWRlbnRpY2FsLCBzbyBp
dCdzIHNhZmUgCj4+IHRvIGFsaWFzCj4+IMKgICN1bmRlZiByZWFkZGlyNjRfcgo+PiDCoCBleHRl
cm4gIkMiIGludCByZWFkZGlyNjRfcihESVIgKmRpciwgc3RydWN0IGRpcmVudDY0ICplbnRyeSwK
Pj4gLcKgwqDCoMKgwqDCoMKgIHN0cnVjdCBkaXJlbnQ2NCAqKnJlc3VsdCkKPj4gLcKgwqDCoMKg
wqDCoMKgIF9fYXR0cmlidXRlX18oKGFsaWFzKCJyZWFkZGlyX3IiKSkpOwo+PiArwqDCoMKgwqDC
oMKgwqAgc3RydWN0IGRpcmVudDY0ICoqcmVzdWx0KQo+PiArwqDCoMKgwqDCoMKgwqAgX19hdHRy
aWJ1dGVfXygoYWxpYXMoInJlYWRkaXJfciIpKSk7Cj4+IMKgICN1bmRlZiByZWFkZGlyNjQKPj4g
wqAgZXh0ZXJuICJDIiBzdHJ1Y3QgZGlyZW50ICpyZWFkZGlyNjQoRElSICpkaXIpIAo+PiBfX2F0
dHJpYnV0ZV9fKChhbGlhcygicmVhZGRpciIpKSk7Cj4+IMKgIHZvaWQgcmV3aW5kZGlyKERJUiAq
ZGlycCkKPj4gwqAgewo+PiAtwqDCoMKgIHN0cnVjdCBmaWxlICpmcDsKPj4gK8KgwqDCoCBzdHJ1
Y3QgZmlsZSAqZnA7Cj4+IC3CoMKgwqAgYXV0byBlcnJvciA9IGZnZXQoZGlycC0+ZmQsICZmcCk7
Cj4+IC3CoMKgwqAgaWYgKGVycm9yKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCAvLyBQT1NJWCBzcGVj
aWZpZXMgdGhhdCB3aGF0IHJld2luZGRpcigpIGRvZXMgaW4gdGhlIGNhc2Ugb2YgCj4+IGVycm9y
Cj4+IC3CoMKgwqDCoMKgwqDCoCAvLyBpcyB1bmRlZmluZWQuLi4KPj4gLcKgwqDCoMKgwqDCoMKg
IHJldHVybjsKPj4gLcKgwqDCoCB9Cj4+ICvCoMKgwqAgYXV0byBlcnJvciA9IGZnZXQoZGlycC0+
ZmQsICZmcCk7Cj4+ICvCoMKgwqAgaWYgKGVycm9yKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCAvLyBQ
T1NJWCBzcGVjaWZpZXMgdGhhdCB3aGF0IHJld2luZGRpcigpIGRvZXMgaW4gdGhlIGNhc2Ugb2Yg
Cj4+IGVycm9yCj4+ICvCoMKgwqDCoMKgwqDCoCAvLyBpcyB1bmRlZmluZWQuLi4KPj4gK8KgwqDC
oMKgwqDCoMKgIHJldHVybjsKPj4gK8KgwqDCoCB9Cj4+IC3CoMKgwqAgc3lzX3Jld2luZGRpcihm
cCk7Cj4+IC3CoMKgwqAgLy8gQWdhaW4sIGVycm9yIGNvZGUgZnJvbSBzeXNfcmV3aW5kZGlyKCkg
aXMgaWdub3JlZC4KPj4gLcKgwqDCoCBmZHJvcChmcCk7Cj4+ICvCoMKgwqAgc3lzX3Jld2luZGRp
cihmcCk7Cj4+ICvCoMKgwqAgLy8gQWdhaW4sIGVycm9yIGNvZGUgZnJvbSBzeXNfcmV3aW5kZGly
KCkgaXMgaWdub3JlZC4KPj4gK8KgwqDCoCBmZHJvcChmcCk7Cj4+IMKgIH0KPj4gwqAgbG9uZyB0
ZWxsZGlyKERJUiAqZGlycCkKPj4gwqAgewo+PiAtwqDCoMKgIHN0cnVjdCBmaWxlICpmcDsKPj4g
LcKgwqDCoCBpbnQgZXJyb3IgPSBmZ2V0KGRpcnAtPmZkLCAmZnApOwo+PiAtwqDCoMKgIGlmIChl
cnJvcikgewo+PiAtwqDCoMKgwqDCoMKgwqAgcmV0dXJuIGxpYmNfZXJyb3IoZXJyb3IpOwo+PiAt
wqDCoMKgIH0KPj4gK8KgwqDCoCBzdHJ1Y3QgZmlsZSAqZnA7Cj4+ICvCoMKgwqAgaW50IGVycm9y
ID0gZmdldChkaXJwLT5mZCwgJmZwKTsKPj4gK8KgwqDCoCBpZiAoZXJyb3IpIHsKPj4gK8KgwqDC
oMKgwqDCoMKgIHJldHVybiBsaWJjX2Vycm9yKGVycm9yKTsKPj4gK8KgwqDCoCB9Cj4+IC3CoMKg
wqAgbG9uZyBsb2M7Cj4+IC3CoMKgwqAgZXJyb3IgPSBzeXNfdGVsbGRpcihmcCwgJmxvYyk7Cj4+
IC3CoMKgwqAgZmRyb3AoZnApOwo+PiAtwqDCoMKgIGlmIChlcnJvcikgewo+PiAtwqDCoMKgwqDC
oMKgwqAgcmV0dXJuIGxpYmNfZXJyb3IoZXJyb3IpOwo+PiAtwqDCoMKgIH0KPj4gLcKgwqDCoCBy
ZXR1cm4gbG9jOwo+PiArwqDCoMKgIGxvbmcgbG9jOwo+PiArwqDCoMKgIGVycm9yID0gc3lzX3Rl
bGxkaXIoZnAsICZsb2MpOwo+PiArwqDCoMKgIGZkcm9wKGZwKTsKPj4gK8KgwqDCoCBpZiAoZXJy
b3IpIHsKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBsaWJjX2Vycm9yKGVycm9yKTsKPj4gK8Kg
wqDCoCB9Cj4+ICvCoMKgwqAgcmV0dXJuIGxvYzsKPj4gwqAgfQo+PiDCoCB2b2lkIHNlZWtkaXIo
RElSICpkaXJwLCBsb25nIGxvYykKPj4gwqAgewo+PiAtwqDCoMKgIHN0cnVjdCBmaWxlICpmcDsK
Pj4gLcKgwqDCoCBpbnQgZXJyb3IgPSBmZ2V0KGRpcnAtPmZkLCAmZnApOwo+PiAtwqDCoMKgIGlm
IChlcnJvcikgewo+PiAtwqDCoMKgwqDCoMKgwqAgLy8gUE9TSVggc3BlY2lmaWVzIHNlZWtkaXIo
KSBjYW5ub3QgcmV0dXJuIGVycm9ycy4KPj4gLcKgwqDCoMKgwqDCoMKgIHJldHVybjsKPj4gLcKg
wqDCoCB9Cj4+IC3CoMKgwqAgc3lzX3NlZWtkaXIoZnAsIGxvYyk7Cj4+IC3CoMKgwqAgLy8gQWdh
aW4sIGVycm9yIGNvZGUgZnJvbSBzeXNfc2Vla2RpcigpIGlzIGlnbm9yZWQuCj4+IC3CoMKgwqAg
ZmRyb3AoZnApOwo+PiArwqDCoMKgIHN0cnVjdCBmaWxlICpmcDsKPj4gK8KgwqDCoCBpbnQgZXJy
b3IgPSBmZ2V0KGRpcnAtPmZkLCAmZnApOwo+PiArwqDCoMKgIGlmIChlcnJvcikgewo+PiArwqDC
oMKgwqDCoMKgwqAgLy8gUE9TSVggc3BlY2lmaWVzIHNlZWtkaXIoKSBjYW5ub3QgcmV0dXJuIGVy
cm9ycy4KPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybjsKPj4gK8KgwqDCoCB9Cj4+ICvCoMKgwqAg
c3lzX3NlZWtkaXIoZnAsIGxvYyk7Cj4+ICvCoMKgwqAgLy8gQWdhaW4sIGVycm9yIGNvZGUgZnJv
bSBzeXNfc2Vla2RpcigpIGlzIGlnbm9yZWQuCj4+ICvCoMKgwqAgZmRyb3AoZnApOwo+PiDCoCB9
Cj4+IMKgIFRSQUNFUE9JTlQodHJhY2VfdmZzX21rZGlyLCAiXCIlc1wiIDAlMG8iLCBjb25zdCBj
aGFyKiwgbW9kZV90KTsKPj4gQEAgLTgxNywyNSArODE3LDI1IEBAIFRSQUNFUE9JTlQodHJhY2Vf
dmZzX21rZGlyX2VyciwgIiVkIiwgaW50KTsKPj4gwqAgaW50Cj4+IMKgIG1rZGlyKGNvbnN0IGNo
YXIgKnBhdGhuYW1lLCBtb2RlX3QgbW9kZSkKPj4gwqAgewo+PiAtwqDCoMKgIHN0cnVjdCB0YXNr
ICp0ID0gbWFpbl90YXNrOwo+PiAtwqDCoMKgIGNoYXIgcGF0aFtQQVRIX01BWF07Cj4+IC3CoMKg
wqAgaW50IGVycm9yOwo+PiArwqDCoMKgIHN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOwo+PiAr
wqDCoMKgIGNoYXIgcGF0aFtQQVRIX01BWF07Cj4+ICvCoMKgwqAgaW50IGVycm9yOwo+PiAtwqDC
oMKgIG1vZGUgPSBhcHBseV91bWFzayhtb2RlKTsKPj4gK8KgwqDCoCBtb2RlID0gYXBwbHlfdW1h
c2sobW9kZSk7Cj4+IC3CoMKgwqAgdHJhY2VfdmZzX21rZGlyKHBhdGhuYW1lLCBtb2RlKTsKPj4g
LcKgwqDCoCBpZiAoKGVycm9yID0gdGFza19jb252KHQsIHBhdGhuYW1lLCBWV1JJVEUsIHBhdGgp
KSAhPSAwKQo+PiAtwqDCoMKgwqDCoMKgwqAgZ290byBvdXRfZXJybm87Cj4+ICvCoMKgwqAgdHJh
Y2VfdmZzX21rZGlyKHBhdGhuYW1lLCBtb2RlKTsKPj4gK8KgwqDCoCBpZiAoKGVycm9yID0gdGFz
a19jb252KHQsIHBhdGhuYW1lLCBWV1JJVEUsIHBhdGgpKSAhPSAwKQo+PiArwqDCoMKgwqDCoMKg
wqAgZ290byBvdXRfZXJybm87Cj4+IC3CoMKgwqAgZXJyb3IgPSBzeXNfbWtkaXIocGF0aCwgbW9k
ZSk7Cj4+IC3CoMKgwqAgaWYgKGVycm9yKQo+PiAtwqDCoMKgwqDCoMKgwqAgZ290byBvdXRfZXJy
bm87Cj4+IC3CoMKgwqAgdHJhY2VfdmZzX21rZGlyX3JldCgpOwo+PiAtwqDCoMKgIHJldHVybiAw
Owo+PiAtwqDCoMKgIG91dF9lcnJubzoKPj4gLcKgwqDCoCB0cmFjZV92ZnNfbWtkaXJfZXJyKGVy
cm9yKTsKPj4gLcKgwqDCoCBlcnJubyA9IGVycm9yOwo+PiAtwqDCoMKgIHJldHVybiAtMTsKPj4g
K8KgwqDCoCBlcnJvciA9IHN5c19ta2RpcihwYXRoLCBtb2RlKTsKPj4gK8KgwqDCoCBpZiAoZXJy
b3IpCj4+ICvCoMKgwqDCoMKgwqDCoCBnb3RvIG91dF9lcnJubzsKPj4gK8KgwqDCoCB0cmFjZV92
ZnNfbWtkaXJfcmV0KCk7Cj4+ICvCoMKgwqAgcmV0dXJuIDA7Cj4+ICvCoMKgwqAgb3V0X2Vycm5v
Ogo+PiArwqDCoMKgIHRyYWNlX3Zmc19ta2Rpcl9lcnIoZXJyb3IpOwo+PiArwqDCoMKgIGVycm5v
ID0gZXJyb3I7Cj4+ICvCoMKgwqAgcmV0dXJuIC0xOwo+PiDCoCB9Cj4+IMKgIFRSQUNFUE9JTlQo
dHJhY2VfdmZzX3JtZGlyLCAiXCIlc1wiIiwgY29uc3QgY2hhciopOwo+PiBAQCAtODQ0LDUxICs4
NDQsNTEgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfcm1kaXJfZXJyLCAiJWQiLCBpbnQpOwo+PiDC
oCBpbnQgcm1kaXIoY29uc3QgY2hhciAqcGF0aG5hbWUpCj4+IMKgIHsKPj4gLcKgwqDCoCBzdHJ1
Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKPj4gLcKgwqDCoCBjaGFyIHBhdGhbUEFUSF9NQVhdOwo+
PiAtwqDCoMKgIGludCBlcnJvcjsKPj4gK8KgwqDCoCBzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFz
azsKPj4gK8KgwqDCoCBjaGFyIHBhdGhbUEFUSF9NQVhdOwo+PiArwqDCoMKgIGludCBlcnJvcjsK
Pj4gLcKgwqDCoCB0cmFjZV92ZnNfcm1kaXIocGF0aG5hbWUpOwo+PiAtwqDCoMKgIGVycm9yID0g
RU5PRU5UOwo+PiAtwqDCoMKgIGlmIChwYXRobmFtZSA9PSBudWxscHRyKQo+PiAtwqDCoMKgwqDC
oMKgwqAgZ290byBvdXRfZXJybm87Cj4+IC3CoMKgwqAgaWYgKChlcnJvciA9IHRhc2tfY29udih0
LCBwYXRobmFtZSwgVldSSVRFLCBwYXRoKSkgIT0gMCkKPj4gLcKgwqDCoMKgwqDCoMKgIGdvdG8g
b3V0X2Vycm5vOwo+PiArwqDCoMKgIHRyYWNlX3Zmc19ybWRpcihwYXRobmFtZSk7Cj4+ICvCoMKg
wqAgZXJyb3IgPSBFTk9FTlQ7Cj4+ICvCoMKgwqAgaWYgKHBhdGhuYW1lID09IG51bGxwdHIpCj4+
ICvCoMKgwqDCoMKgwqDCoCBnb3RvIG91dF9lcnJubzsKPj4gK8KgwqDCoCBpZiAoKGVycm9yID0g
dGFza19jb252KHQsIHBhdGhuYW1lLCBWV1JJVEUsIHBhdGgpKSAhPSAwKQo+PiArwqDCoMKgwqDC
oMKgwqAgZ290byBvdXRfZXJybm87Cj4+IC3CoMKgwqAgZXJyb3IgPSBzeXNfcm1kaXIocGF0aCk7
Cj4+IC3CoMKgwqAgaWYgKGVycm9yKQo+PiAtwqDCoMKgwqDCoMKgwqAgZ290byBvdXRfZXJybm87
Cj4+IC3CoMKgwqAgdHJhY2VfdmZzX3JtZGlyX3JldCgpOwo+PiAtwqDCoMKgIHJldHVybiAwOwo+
PiAtwqDCoMKgIG91dF9lcnJubzoKPj4gLcKgwqDCoCB0cmFjZV92ZnNfcm1kaXJfZXJyKGVycm9y
KTsKPj4gLcKgwqDCoCBlcnJubyA9IGVycm9yOwo+PiAtwqDCoMKgIHJldHVybiAtMTsKPj4gK8Kg
wqDCoCBlcnJvciA9IHN5c19ybWRpcihwYXRoKTsKPj4gK8KgwqDCoCBpZiAoZXJyb3IpCj4+ICvC
oMKgwqDCoMKgwqDCoCBnb3RvIG91dF9lcnJubzsKPj4gK8KgwqDCoCB0cmFjZV92ZnNfcm1kaXJf
cmV0KCk7Cj4+ICvCoMKgwqAgcmV0dXJuIDA7Cj4+ICvCoMKgwqAgb3V0X2Vycm5vOgo+PiArwqDC
oMKgIHRyYWNlX3Zmc19ybWRpcl9lcnIoZXJyb3IpOwo+PiArwqDCoMKgIGVycm5vID0gZXJyb3I7
Cj4+ICvCoMKgwqAgcmV0dXJuIC0xOwo+PiDCoCB9Cj4+IMKgIHN0YXRpYyB2b2lkCj4+IMKgIGdl
dF9sYXN0X2NvbXBvbmVudChjb25zdCBjaGFyICpwYXRoLCBjaGFyICpkc3QpCj4+IMKgIHsKPj4g
LcKgwqDCoCBpbnQgcG9zID0gc3RybGVuKHBhdGgpIC0gMTsKPj4gK8KgwqDCoCBpbnQgcG9zID0g
c3RybGVuKHBhdGgpIC0gMTsKPj4gLcKgwqDCoCB3aGlsZSAocG9zID49IDAgJiYgcGF0aFtwb3Nd
ID09ICcvJykKPj4gLcKgwqDCoMKgwqDCoMKgIHBvcy0tOwo+PiArwqDCoMKgIHdoaWxlIChwb3Mg
Pj0gMCAmJiBwYXRoW3Bvc10gPT0gJy8nKQo+PiArwqDCoMKgwqDCoMKgwqAgcG9zLS07Cj4+IC3C
oMKgwqAgaW50IGNvbXBvbmVudF9lbmQgPSBwb3M7Cj4+ICvCoMKgwqAgaW50IGNvbXBvbmVudF9l
bmQgPSBwb3M7Cj4+IC3CoMKgwqAgd2hpbGUgKHBvcyA+PSAwICYmIHBhdGhbcG9zXSAhPSAnLycp
Cj4+IC3CoMKgwqDCoMKgwqDCoCBwb3MtLTsKPj4gK8KgwqDCoCB3aGlsZSAocG9zID49IDAgJiYg
cGF0aFtwb3NdICE9ICcvJykKPj4gK8KgwqDCoMKgwqDCoMKgIHBvcy0tOwo+PiAtwqDCoMKgIGlu
dCBjb21wb25lbnRfc3RhcnQgPSBwb3MgKyAxOwo+PiArwqDCoMKgIGludCBjb21wb25lbnRfc3Rh
cnQgPSBwb3MgKyAxOwo+PiAtwqDCoMKgIGludCBsZW4gPSBjb21wb25lbnRfZW5kIC0gY29tcG9u
ZW50X3N0YXJ0ICsgMTsKPj4gLcKgwqDCoCBtZW1jcHkoZHN0LCBwYXRoICsgY29tcG9uZW50X3N0
YXJ0LCBsZW4pOwo+PiAtwqDCoMKgIGRzdFtsZW5dID0gMDsKPj4gK8KgwqDCoCBpbnQgbGVuID0g
Y29tcG9uZW50X2VuZCAtIGNvbXBvbmVudF9zdGFydCArIDE7Cj4+ICvCoMKgwqAgbWVtY3B5KGRz
dCwgcGF0aCArIGNvbXBvbmVudF9zdGFydCwgbGVuKTsKPj4gK8KgwqDCoCBkc3RbbGVuXSA9IDA7
Cj4+IMKgIH0KPj4gwqAgc3RhdGljIGJvb2wgbnVsbF9vcl9lbXB0eShjb25zdCBjaGFyICpzdHIp
Cj4+IMKgIHsKPj4gLcKgwqDCoCByZXR1cm4gc3RyID09IG51bGxwdHIgfHwgKnN0ciA9PSAnXDAn
Owo+PiArwqDCoMKgIHJldHVybiBzdHIgPT0gbnVsbHB0ciB8fCAqc3RyID09ICdcMCc7Cj4+IMKg
IH0KPj4gwqAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfcmVuYW1lLCAiXCIlc1wiIFwiJXNcIiIsIGNv
bnN0IGNoYXIqLCBjb25zdCAKPj4gY2hhciopOwo+PiBAQCAtODk3LDQzICs4OTcsNDMgQEAgVFJB
Q0VQT0lOVCh0cmFjZV92ZnNfcmVuYW1lX2VyciwgIiVkIiwgaW50KTsKPj4gwqAgaW50IHJlbmFt
ZShjb25zdCBjaGFyICpvbGRwYXRoLCBjb25zdCBjaGFyICpuZXdwYXRoKQo+PiDCoCB7Cj4+IC3C
oMKgwqAgdHJhY2VfdmZzX3JlbmFtZShvbGRwYXRoLCBuZXdwYXRoKTsKPj4gLcKgwqDCoCBzdHJ1
Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKPj4gLcKgwqDCoCBjaGFyIHNyY1tQQVRIX01BWF07Cj4+
IC3CoMKgwqAgY2hhciBkZXN0W1BBVEhfTUFYXTsKPj4gLcKgwqDCoCBpbnQgZXJyb3I7Cj4+IC0K
Pj4gLcKgwqDCoCBlcnJvciA9IEVOT0VOVDsKPj4gLcKgwqDCoCBpZiAobnVsbF9vcl9lbXB0eShv
bGRwYXRoKSB8fCBudWxsX29yX2VtcHR5KG5ld3BhdGgpKQo+PiAtwqDCoMKgwqDCoMKgwqAgZ290
byBvdXRfZXJybm87Cj4+IC0KPj4gLcKgwqDCoCBnZXRfbGFzdF9jb21wb25lbnQob2xkcGF0aCwg
c3JjKTsKPj4gLcKgwqDCoCBpZiAoIXN0cmNtcChzcmMsICIuIikgfHwgIXN0cmNtcChzcmMsICIu
LiIpKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCBlcnJvciA9IEVJTlZBTDsKPj4gLcKgwqDCoMKgwqDC
oMKgIGdvdG8gb3V0X2Vycm5vOwo+PiAtwqDCoMKgIH0KPj4gLQo+PiAtwqDCoMKgIGdldF9sYXN0
X2NvbXBvbmVudChuZXdwYXRoLCBkZXN0KTsKPj4gLcKgwqDCoCBpZiAoIXN0cmNtcChkZXN0LCAi
LiIpIHx8ICFzdHJjbXAoZGVzdCwgIi4uIikpIHsKPj4gLcKgwqDCoMKgwqDCoMKgIGVycm9yID0g
RUlOVkFMOwo+PiAtwqDCoMKgwqDCoMKgwqAgZ290byBvdXRfZXJybm87Cj4+IC3CoMKgwqAgfQo+
PiAtCj4+IC3CoMKgwqAgaWYgKChlcnJvciA9IHRhc2tfY29udih0LCBvbGRwYXRoLCBWUkVBRCwg
c3JjKSkgIT0gMCkKPj4gLcKgwqDCoMKgwqDCoMKgIGdvdG8gb3V0X2Vycm5vOwo+PiAtCj4+IC3C
oMKgwqAgaWYgKChlcnJvciA9IHRhc2tfY29udih0LCBuZXdwYXRoLCBWV1JJVEUsIGRlc3QpKSAh
PSAwKQo+PiAtwqDCoMKgwqDCoMKgwqAgZ290byBvdXRfZXJybm87Cj4+IC0KPj4gLcKgwqDCoCBl
cnJvciA9IHN5c19yZW5hbWUoc3JjLCBkZXN0KTsKPj4gLcKgwqDCoCBpZiAoZXJyb3IpCj4+IC3C
oMKgwqDCoMKgwqDCoCBnb3RvIG91dF9lcnJubzsKPj4gLcKgwqDCoCB0cmFjZV92ZnNfcmVuYW1l
X3JldCgpOwo+PiAtwqDCoMKgIHJldHVybiAwOwo+PiAtwqDCoMKgIG91dF9lcnJubzoKPj4gLcKg
wqDCoCB0cmFjZV92ZnNfcmVuYW1lX2VycihlcnJvcik7Cj4+IC3CoMKgwqAgZXJybm8gPSBlcnJv
cjsKPj4gLcKgwqDCoCByZXR1cm4gLTE7Cj4+ICvCoMKgwqAgdHJhY2VfdmZzX3JlbmFtZShvbGRw
YXRoLCBuZXdwYXRoKTsKPj4gK8KgwqDCoCBzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKPj4g
K8KgwqDCoCBjaGFyIHNyY1tQQVRIX01BWF07Cj4+ICvCoMKgwqAgY2hhciBkZXN0W1BBVEhfTUFY
XTsKPj4gK8KgwqDCoCBpbnQgZXJyb3I7Cj4+ICsKPj4gK8KgwqDCoCBlcnJvciA9IEVOT0VOVDsK
Pj4gK8KgwqDCoCBpZiAobnVsbF9vcl9lbXB0eShvbGRwYXRoKSB8fCBudWxsX29yX2VtcHR5KG5l
d3BhdGgpKQo+PiArwqDCoMKgwqDCoMKgwqAgZ290byBvdXRfZXJybm87Cj4+ICsKPj4gK8KgwqDC
oCBnZXRfbGFzdF9jb21wb25lbnQob2xkcGF0aCwgc3JjKTsKPj4gK8KgwqDCoCBpZiAoIXN0cmNt
cChzcmMsICIuIikgfHwgIXN0cmNtcChzcmMsICIuLiIpKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBl
cnJvciA9IEVJTlZBTDsKPj4gK8KgwqDCoMKgwqDCoMKgIGdvdG8gb3V0X2Vycm5vOwo+PiArwqDC
oMKgIH0KPj4gKwo+PiArwqDCoMKgIGdldF9sYXN0X2NvbXBvbmVudChuZXdwYXRoLCBkZXN0KTsK
Pj4gK8KgwqDCoCBpZiAoIXN0cmNtcChkZXN0LCAiLiIpIHx8ICFzdHJjbXAoZGVzdCwgIi4uIikp
IHsKPj4gK8KgwqDCoMKgwqDCoMKgIGVycm9yID0gRUlOVkFMOwo+PiArwqDCoMKgwqDCoMKgwqAg
Z290byBvdXRfZXJybm87Cj4+ICvCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqAgaWYgKChlcnJvciA9
IHRhc2tfY29udih0LCBvbGRwYXRoLCBWUkVBRCwgc3JjKSkgIT0gMCkKPj4gK8KgwqDCoMKgwqDC
oMKgIGdvdG8gb3V0X2Vycm5vOwo+PiArCj4+ICvCoMKgwqAgaWYgKChlcnJvciA9IHRhc2tfY29u
dih0LCBuZXdwYXRoLCBWV1JJVEUsIGRlc3QpKSAhPSAwKQo+PiArwqDCoMKgwqDCoMKgwqAgZ290
byBvdXRfZXJybm87Cj4+ICsKPj4gK8KgwqDCoCBlcnJvciA9IHN5c19yZW5hbWUoc3JjLCBkZXN0
KTsKPj4gK8KgwqDCoCBpZiAoZXJyb3IpCj4+ICvCoMKgwqDCoMKgwqDCoCBnb3RvIG91dF9lcnJu
bzsKPj4gK8KgwqDCoCB0cmFjZV92ZnNfcmVuYW1lX3JldCgpOwo+PiArwqDCoMKgIHJldHVybiAw
Owo+PiArwqDCoMKgIG91dF9lcnJubzoKPj4gK8KgwqDCoCB0cmFjZV92ZnNfcmVuYW1lX2Vycihl
cnJvcik7Cj4+ICvCoMKgwqAgZXJybm8gPSBlcnJvcjsKPj4gK8KgwqDCoCByZXR1cm4gLTE7Cj4+
IMKgIH0KPj4gwqAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfY2hkaXIsICJcIiVzXCIiLCBjb25zdCBj
aGFyKik7Cj4+IEBAIC05NDEsNTggKzk0MSw1OCBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19jaGRp
cl9yZXQsICIiKTsKPj4gwqAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfY2hkaXJfZXJyLCAiJWQiLCBp
bnQpOwo+PiDCoCBzdGF0aWMgaW50IHJlcGxhY2VfY3dkKHN0cnVjdCB0YXNrICp0LCBzdHJ1Y3Qg
ZmlsZSAqbmV3X2N3ZGZwLAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqAgc3RkOjpmdW5jdGlvbjxpbnQgKHZvaWQpPiBjaGRpcl9mdW5jKQo+PiArwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RkOjpmdW5jdGlvbjxpbnQg
KHZvaWQpPiBjaGRpcl9mdW5jKQo+PiDCoCB7Cj4+IC3CoMKgwqAgc3RydWN0IGZpbGUgKm9sZCA9
IG51bGxwdHI7Cj4+ICvCoMKgwqAgc3RydWN0IGZpbGUgKm9sZCA9IG51bGxwdHI7Cj4+IC3CoMKg
wqAgaWYgKCF0KSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCByZXR1cm4gMDsKPj4gLcKgwqDCoCB9Cj4+
ICvCoMKgwqAgaWYgKCF0KSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gMDsKPj4gK8KgwqDC
oCB9Cj4+IC3CoMKgwqAgaWYgKHQtPnRfY3dkZnApIHsKPj4gLcKgwqDCoMKgwqDCoMKgIG9sZCA9
IHQtPnRfY3dkZnA7Cj4+IC3CoMKgwqAgfQo+PiArwqDCoMKgIGlmICh0LT50X2N3ZGZwKSB7Cj4+
ICvCoMKgwqDCoMKgwqDCoCBvbGQgPSB0LT50X2N3ZGZwOwo+PiArwqDCoMKgIH0KPj4gLcKgwqDC
oCAvKiBEbyB0aGUgYWN0dWFsIGNoZGlyIG9wZXJhdGlvbiBoZXJlICovCj4+IC3CoMKgwqAgaW50
IGVycm9yID0gY2hkaXJfZnVuYygpOwo+PiArwqDCoMKgIC8qIERvIHRoZSBhY3R1YWwgY2hkaXIg
b3BlcmF0aW9uIGhlcmUgKi8KPj4gK8KgwqDCoCBpbnQgZXJyb3IgPSBjaGRpcl9mdW5jKCk7Cj4+
IC3CoMKgwqAgdC0+dF9jd2RmcCA9IG5ld19jd2RmcDsKPj4gLcKgwqDCoCBpZiAob2xkKSB7Cj4+
IC3CoMKgwqDCoMKgwqDCoCBmZHJvcChvbGQpOwo+PiAtwqDCoMKgIH0KPj4gK8KgwqDCoCB0LT50
X2N3ZGZwID0gbmV3X2N3ZGZwOwo+PiArwqDCoMKgIGlmIChvbGQpIHsKPj4gK8KgwqDCoMKgwqDC
oMKgIGZkcm9wKG9sZCk7Cj4+ICvCoMKgwqAgfQo+PiAtwqDCoMKgIHJldHVybiBlcnJvcjsKPj4g
K8KgwqDCoCByZXR1cm4gZXJyb3I7Cj4+IMKgIH0KPj4gwqAgaW50IGNoZGlyKGNvbnN0IGNoYXIg
KnBhdGhuYW1lKQo+PiDCoCB7Cj4+IC3CoMKgwqAgdHJhY2VfdmZzX2NoZGlyKHBhdGhuYW1lKTsK
Pj4gLcKgwqDCoCBzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKPj4gLcKgwqDCoCBjaGFyIHBh
dGhbUEFUSF9NQVhdOwo+PiAtwqDCoMKgIHN0cnVjdCBmaWxlICpmcDsKPj4gLcKgwqDCoCBpbnQg
ZXJyb3I7Cj4+ICvCoMKgwqAgdHJhY2VfdmZzX2NoZGlyKHBhdGhuYW1lKTsKPj4gK8KgwqDCoCBz
dHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKPj4gK8KgwqDCoCBjaGFyIHBhdGhbUEFUSF9NQVhd
Owo+PiArwqDCoMKgIHN0cnVjdCBmaWxlICpmcDsKPj4gK8KgwqDCoCBpbnQgZXJyb3I7Cj4+IC3C
oMKgwqAgZXJyb3IgPSBFTk9FTlQ7Cj4+IC3CoMKgwqAgaWYgKHBhdGhuYW1lID09IG51bGxwdHIp
Cj4+IC3CoMKgwqDCoMKgwqDCoCBnb3RvIG91dF9lcnJubzsKPj4gK8KgwqDCoCBlcnJvciA9IEVO
T0VOVDsKPj4gK8KgwqDCoCBpZiAocGF0aG5hbWUgPT0gbnVsbHB0cikKPj4gK8KgwqDCoMKgwqDC
oMKgIGdvdG8gb3V0X2Vycm5vOwo+PiAtwqDCoMKgIGlmICgoZXJyb3IgPSB0YXNrX2NvbnYodCwg
cGF0aG5hbWUsIFZSRUFELCBwYXRoKSkgIT0gMCkKPj4gLcKgwqDCoMKgwqDCoMKgIGdvdG8gb3V0
X2Vycm5vOwo+PiArwqDCoMKgIGlmICgoZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5hbWUsIFZS
RUFELCBwYXRoKSkgIT0gMCkKPj4gK8KgwqDCoMKgwqDCoMKgIGdvdG8gb3V0X2Vycm5vOwo+PiAt
wqDCoMKgIC8qIENoZWNrIGlmIGRpcmVjdG9yeSBleGl0cyAqLwo+PiAtwqDCoMKgIGVycm9yID0g
c3lzX29wZW4ocGF0aCwgT19ESVJFQ1RPUlksIDAsICZmcCk7Cj4+IC3CoMKgwqAgaWYgKGVycm9y
KSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCBnb3RvIG91dF9lcnJubzsKPj4gLcKgwqDCoCB9Cj4+ICvC
oMKgwqAgLyogQ2hlY2sgaWYgZGlyZWN0b3J5IGV4aXRzICovCj4+ICvCoMKgwqAgZXJyb3IgPSBz
eXNfb3BlbihwYXRoLCBPX0RJUkVDVE9SWSwgMCwgJmZwKTsKPj4gK8KgwqDCoCBpZiAoZXJyb3Ip
IHsKPj4gK8KgwqDCoMKgwqDCoMKgIGdvdG8gb3V0X2Vycm5vOwo+PiArwqDCoMKgIH0KPj4gLcKg
wqDCoCByZXBsYWNlX2N3ZCh0LCBmcCwgWyZdKCkgeyBzdHJsY3B5KHQtPnRfY3dkLCBwYXRoLCAK
Pj4gc2l6ZW9mKHQtPnRfY3dkKSk7IHJldHVybiAwOyB9KTsKPj4gK8KgwqDCoCByZXBsYWNlX2N3
ZCh0LCBmcCwgWyZdKCkgeyBzdHJsY3B5KHQtPnRfY3dkLCBwYXRoLCAKPj4gc2l6ZW9mKHQtPnRf
Y3dkKSk7IHJldHVybiAwOyB9KTsKPj4gLcKgwqDCoCB0cmFjZV92ZnNfY2hkaXJfcmV0KCk7Cj4+
IC3CoMKgwqAgcmV0dXJuIDA7Cj4+IC3CoMKgwqAgb3V0X2Vycm5vOgo+PiAtwqDCoMKgIGVycm5v
ID0gZXJyb3I7Cj4+IC3CoMKgwqAgdHJhY2VfdmZzX2NoZGlyX2VycihlcnJubyk7Cj4+IC3CoMKg
wqAgcmV0dXJuIC0xOwo+PiArwqDCoMKgIHRyYWNlX3Zmc19jaGRpcl9yZXQoKTsKPj4gK8KgwqDC
oCByZXR1cm4gMDsKPj4gK8KgwqDCoCBvdXRfZXJybm86Cj4+ICvCoMKgwqAgZXJybm8gPSBlcnJv
cjsKPj4gK8KgwqDCoCB0cmFjZV92ZnNfY2hkaXJfZXJyKGVycm5vKTsKPj4gK8KgwqDCoCByZXR1
cm4gLTE7Cj4+IMKgIH0KPj4gwqAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZmNoZGlyLCAiJWQiLCBp
bnQpOwo+PiBAQCAtMTAwMSwyOCArMTAwMSwyOCBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19mY2hk
aXJfZXJyLCAiJWQiLCBpbnQpOwo+PiDCoCBpbnQgZmNoZGlyKGludCBmZCkKPj4gwqAgewo+PiAt
wqDCoMKgIHRyYWNlX3Zmc19mY2hkaXIoZmQpOwo+PiAtwqDCoMKgIHN0cnVjdCB0YXNrICp0ID0g
bWFpbl90YXNrOwo+PiAtwqDCoMKgIHN0cnVjdCBmaWxlICpmcDsKPj4gLcKgwqDCoCBpbnQgZXJy
b3I7Cj4+ICvCoMKgwqAgdHJhY2VfdmZzX2ZjaGRpcihmZCk7Cj4+ICvCoMKgwqAgc3RydWN0IHRh
c2sgKnQgPSBtYWluX3Rhc2s7Cj4+ICvCoMKgwqAgc3RydWN0IGZpbGUgKmZwOwo+PiArwqDCoMKg
IGludCBlcnJvcjsKPj4gLcKgwqDCoCBlcnJvciA9IGZnZXQoZmQsICZmcCk7Cj4+IC3CoMKgwqAg
aWYgKGVycm9yKQo+PiAtwqDCoMKgwqDCoMKgwqAgZ290byBvdXRfZXJybm87Cj4+ICvCoMKgwqAg
ZXJyb3IgPSBmZ2V0KGZkLCAmZnApOwo+PiArwqDCoMKgIGlmIChlcnJvcikKPj4gK8KgwqDCoMKg
wqDCoMKgIGdvdG8gb3V0X2Vycm5vOwo+PiAtwqDCoMKgIGVycm9yID0gcmVwbGFjZV9jd2QodCwg
ZnAsIFsmXSgpIHsgcmV0dXJuIHN5c19mY2hkaXIoZnAsIAo+PiB0LT50X2N3ZCk7IH0pOwo+PiAt
wqDCoMKgIGlmIChlcnJvcikgewo+PiAtwqDCoMKgwqDCoMKgwqAgZmRyb3AoZnApOwo+PiAtwqDC
oMKgwqDCoMKgwqAgZ290byBvdXRfZXJybm87Cj4+IC3CoMKgwqAgfQo+PiArwqDCoMKgIGVycm9y
ID0gcmVwbGFjZV9jd2QodCwgZnAsIFsmXSgpIHsgcmV0dXJuIHN5c19mY2hkaXIoZnAsIAo+PiB0
LT50X2N3ZCk7IH0pOwo+PiArwqDCoMKgIGlmIChlcnJvcikgewo+PiArwqDCoMKgwqDCoMKgwqAg
ZmRyb3AoZnApOwo+PiArwqDCoMKgwqDCoMKgwqAgZ290byBvdXRfZXJybm87Cj4+ICvCoMKgwqAg
fQo+PiAtwqDCoMKgIHRyYWNlX3Zmc19mY2hkaXJfcmV0KCk7Cj4+IC3CoMKgwqAgcmV0dXJuIDA7
Cj4+ICvCoMKgwqAgdHJhY2VfdmZzX2ZjaGRpcl9yZXQoKTsKPj4gK8KgwqDCoCByZXR1cm4gMDsK
Pj4gLcKgwqDCoCBvdXRfZXJybm86Cj4+IC3CoMKgwqAgdHJhY2VfdmZzX2ZjaGRpcl9lcnIoZXJy
b3IpOwo+PiAtwqDCoMKgIGVycm5vID0gZXJyb3I7Cj4+IC3CoMKgwqAgcmV0dXJuIC0xOwo+PiAr
wqDCoMKgIG91dF9lcnJubzoKPj4gK8KgwqDCoCB0cmFjZV92ZnNfZmNoZGlyX2VycihlcnJvcik7
Cj4+ICvCoMKgwqAgZXJybm8gPSBlcnJvcjsKPj4gK8KgwqDCoCByZXR1cm4gLTE7Cj4+IMKgIH0K
Pj4gwqAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbGluaywgIlwiJXNcIiBcIiVzXCIiLCBjb25zdCBj
aGFyKiwgY29uc3QgY2hhciopOwo+PiBAQCAtMTAzMSwzMCArMTAzMSwzMCBAQCBUUkFDRVBPSU5U
KHRyYWNlX3Zmc19saW5rX2VyciwgIiVkIiwgaW50KTsKPj4gwqAgaW50IGxpbmsoY29uc3QgY2hh
ciAqb2xkcGF0aCwgY29uc3QgY2hhciAqbmV3cGF0aCkKPj4gwqAgewo+PiAtwqDCoMKgIHN0cnVj
dCB0YXNrICp0ID0gbWFpbl90YXNrOwo+PiAtwqDCoMKgIGNoYXIgcGF0aDFbUEFUSF9NQVhdOwo+
PiAtwqDCoMKgIGNoYXIgcGF0aDJbUEFUSF9NQVhdOwo+PiAtwqDCoMKgIGludCBlcnJvcjsKPj4g
K8KgwqDCoCBzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKPj4gK8KgwqDCoCBjaGFyIHBhdGgx
W1BBVEhfTUFYXTsKPj4gK8KgwqDCoCBjaGFyIHBhdGgyW1BBVEhfTUFYXTsKPj4gK8KgwqDCoCBp
bnQgZXJyb3I7Cj4+IC3CoMKgwqAgdHJhY2VfdmZzX2xpbmsob2xkcGF0aCwgbmV3cGF0aCk7Cj4+
ICvCoMKgwqAgdHJhY2VfdmZzX2xpbmsob2xkcGF0aCwgbmV3cGF0aCk7Cj4+IC3CoMKgwqAgZXJy
b3IgPSBFTk9FTlQ7Cj4+IC3CoMKgwqAgaWYgKG9sZHBhdGggPT0gbnVsbHB0ciB8fCBuZXdwYXRo
ID09IG51bGxwdHIpCj4+IC3CoMKgwqDCoMKgwqDCoCBnb3RvIG91dF9lcnJubzsKPj4gLcKgwqDC
oCBpZiAoKGVycm9yID0gdGFza19jb252KHQsIG9sZHBhdGgsIFZXUklURSwgcGF0aDEpKSAhPSAw
KQo+PiAtwqDCoMKgwqDCoMKgwqAgZ290byBvdXRfZXJybm87Cj4+IC3CoMKgwqAgaWYgKChlcnJv
ciA9IHRhc2tfY29udih0LCBuZXdwYXRoLCBWV1JJVEUsIHBhdGgyKSkgIT0gMCkKPj4gLcKgwqDC
oMKgwqDCoMKgIGdvdG8gb3V0X2Vycm5vOwo+PiArwqDCoMKgIGVycm9yID0gRU5PRU5UOwo+PiAr
wqDCoMKgIGlmIChvbGRwYXRoID09IG51bGxwdHIgfHwgbmV3cGF0aCA9PSBudWxscHRyKQo+PiAr
wqDCoMKgwqDCoMKgwqAgZ290byBvdXRfZXJybm87Cj4+ICvCoMKgwqAgaWYgKChlcnJvciA9IHRh
c2tfY29udih0LCBvbGRwYXRoLCBWV1JJVEUsIHBhdGgxKSkgIT0gMCkKPj4gK8KgwqDCoMKgwqDC
oMKgIGdvdG8gb3V0X2Vycm5vOwo+PiArwqDCoMKgIGlmICgoZXJyb3IgPSB0YXNrX2NvbnYodCwg
bmV3cGF0aCwgVldSSVRFLCBwYXRoMikpICE9IDApCj4+ICvCoMKgwqDCoMKgwqDCoCBnb3RvIG91
dF9lcnJubzsKPj4gLcKgwqDCoCBlcnJvciA9IHN5c19saW5rKHBhdGgxLCBwYXRoMik7Cj4+IC3C
oMKgwqAgaWYgKGVycm9yKQo+PiAtwqDCoMKgwqDCoMKgwqAgZ290byBvdXRfZXJybm87Cj4+IC3C
oMKgwqAgdHJhY2VfdmZzX2xpbmtfcmV0KCk7Cj4+IC3CoMKgwqAgcmV0dXJuIDA7Cj4+IC3CoMKg
wqAgb3V0X2Vycm5vOgo+PiAtwqDCoMKgIHRyYWNlX3Zmc19saW5rX2VycihlcnJvcik7Cj4+IC3C
oMKgwqAgZXJybm8gPSBlcnJvcjsKPj4gLcKgwqDCoCByZXR1cm4gLTE7Cj4+ICvCoMKgwqAgZXJy
b3IgPSBzeXNfbGluayhwYXRoMSwgcGF0aDIpOwo+PiArwqDCoMKgIGlmIChlcnJvcikKPj4gK8Kg
wqDCoMKgwqDCoMKgIGdvdG8gb3V0X2Vycm5vOwo+PiArwqDCoMKgIHRyYWNlX3Zmc19saW5rX3Jl
dCgpOwo+PiArwqDCoMKgIHJldHVybiAwOwo+PiArwqDCoMKgIG91dF9lcnJubzoKPj4gK8KgwqDC
oCB0cmFjZV92ZnNfbGlua19lcnIoZXJyb3IpOwo+PiArwqDCoMKgIGVycm5vID0gZXJyb3I7Cj4+
ICvCoMKgwqAgcmV0dXJuIC0xOwo+PiDCoCB9Cj4+IEBAIC0xMDY0LDI2ICsxMDY0LDI2IEBAIFRS
QUNFUE9JTlQodHJhY2VfdmZzX3N5bWxpbmtfZXJyLCAiZXJybm89JWQiLCAKPj4gaW50KTsKPj4g
wqAgaW50IHN5bWxpbmsoY29uc3QgY2hhciAqb2xkcGF0aCwgY29uc3QgY2hhciAqbmV3cGF0aCkK
Pj4gwqAgewo+PiAtwqDCoMKgIGludCBlcnJvcjsKPj4gK8KgwqDCoCBpbnQgZXJyb3I7Cj4+IC3C
oMKgwqAgdHJhY2VfdmZzX3N5bWxpbmsob2xkcGF0aCwgbmV3cGF0aCk7Cj4+ICvCoMKgwqAgdHJh
Y2VfdmZzX3N5bWxpbmsob2xkcGF0aCwgbmV3cGF0aCk7Cj4+IC3CoMKgwqAgZXJyb3IgPSBFTk9F
TlQ7Cj4+IC3CoMKgwqAgaWYgKG9sZHBhdGggPT0gbnVsbHB0ciB8fCBuZXdwYXRoID09IG51bGxw
dHIpIHsKPj4gLcKgwqDCoMKgwqDCoMKgIGVycm5vID0gRU5PRU5UOwo+PiAtwqDCoMKgwqDCoMKg
wqAgdHJhY2VfdmZzX3N5bWxpbmtfZXJyKGVycm9yKTsKPj4gLcKgwqDCoMKgwqDCoMKgIHJldHVy
biAoLTEpOwo+PiAtwqDCoMKgIH0KPj4gK8KgwqDCoCBlcnJvciA9IEVOT0VOVDsKPj4gK8KgwqDC
oCBpZiAob2xkcGF0aCA9PSBudWxscHRyIHx8IG5ld3BhdGggPT0gbnVsbHB0cikgewo+PiArwqDC
oMKgwqDCoMKgwqAgZXJybm8gPSBFTk9FTlQ7Cj4+ICvCoMKgwqDCoMKgwqDCoCB0cmFjZV92ZnNf
c3ltbGlua19lcnIoZXJyb3IpOwo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuICgtMSk7Cj4+ICvC
oMKgwqAgfQo+PiAtwqDCoMKgIGVycm9yID0gc3lzX3N5bWxpbmsob2xkcGF0aCwgbmV3cGF0aCk7
Cj4+IC3CoMKgwqAgaWYgKGVycm9yKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCBlcnJubyA9IGVycm9y
Owo+PiAtwqDCoMKgwqDCoMKgwqAgdHJhY2VfdmZzX3N5bWxpbmtfZXJyKGVycm9yKTsKPj4gLcKg
wqDCoMKgwqDCoMKgIHJldHVybiAoLTEpOwo+PiAtwqDCoMKgIH0KPj4gK8KgwqDCoCBlcnJvciA9
IHN5c19zeW1saW5rKG9sZHBhdGgsIG5ld3BhdGgpOwo+PiArwqDCoMKgIGlmIChlcnJvcikgewo+
PiArwqDCoMKgwqDCoMKgwqAgZXJybm8gPSBlcnJvcjsKPj4gK8KgwqDCoMKgwqDCoMKgIHRyYWNl
X3Zmc19zeW1saW5rX2VycihlcnJvcik7Cj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gKC0xKTsK
Pj4gK8KgwqDCoCB9Cj4+IC3CoMKgwqAgdHJhY2VfdmZzX3N5bWxpbmtfcmV0KCk7Cj4+IC3CoMKg
wqAgcmV0dXJuIDA7Cj4+ICvCoMKgwqAgdHJhY2VfdmZzX3N5bWxpbmtfcmV0KCk7Cj4+ICvCoMKg
wqAgcmV0dXJuIDA7Cj4+IMKgIH0KPj4gwqAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfdW5saW5rLCAi
XCIlc1wiIiwgY29uc3QgY2hhciopOwo+PiBAQCAtMTA5MiwyNiArMTA5MiwyNiBAQCBUUkFDRVBP
SU5UKHRyYWNlX3Zmc191bmxpbmtfZXJyLCAiJWQiLCBpbnQpOwo+PiDCoCBpbnQgdW5saW5rKGNv
bnN0IGNoYXIgKnBhdGhuYW1lKQo+PiDCoCB7Cj4+IC3CoMKgwqAgdHJhY2VfdmZzX3VubGluayhw
YXRobmFtZSk7Cj4+IC3CoMKgwqAgc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7Cj4+IC3CoMKg
wqAgY2hhciBwYXRoW1BBVEhfTUFYXTsKPj4gLcKgwqDCoCBpbnQgZXJyb3I7Cj4+ICvCoMKgwqAg
dHJhY2VfdmZzX3VubGluayhwYXRobmFtZSk7Cj4+ICvCoMKgwqAgc3RydWN0IHRhc2sgKnQgPSBt
YWluX3Rhc2s7Cj4+ICvCoMKgwqAgY2hhciBwYXRoW1BBVEhfTUFYXTsKPj4gK8KgwqDCoCBpbnQg
ZXJyb3I7Cj4+IC3CoMKgwqAgZXJyb3IgPSBFTk9FTlQ7Cj4+IC3CoMKgwqAgaWYgKHBhdGhuYW1l
ID09IG51bGxwdHIpCj4+IC3CoMKgwqDCoMKgwqDCoCBnb3RvIG91dF9lcnJubzsKPj4gLcKgwqDC
oCBpZiAoKGVycm9yID0gdGFza19jb252KHQsIHBhdGhuYW1lLCBWV1JJVEUsIHBhdGgpKSAhPSAw
KQo+PiAtwqDCoMKgwqDCoMKgwqAgZ290byBvdXRfZXJybm87Cj4+ICvCoMKgwqAgZXJyb3IgPSBF
Tk9FTlQ7Cj4+ICvCoMKgwqAgaWYgKHBhdGhuYW1lID09IG51bGxwdHIpCj4+ICvCoMKgwqDCoMKg
wqDCoCBnb3RvIG91dF9lcnJubzsKPj4gK8KgwqDCoCBpZiAoKGVycm9yID0gdGFza19jb252KHQs
IHBhdGhuYW1lLCBWV1JJVEUsIHBhdGgpKSAhPSAwKQo+PiArwqDCoMKgwqDCoMKgwqAgZ290byBv
dXRfZXJybm87Cj4+IC3CoMKgwqAgZXJyb3IgPSBzeXNfdW5saW5rKHBhdGgpOwo+PiAtwqDCoMKg
IGlmIChlcnJvcikKPj4gLcKgwqDCoMKgwqDCoMKgIGdvdG8gb3V0X2Vycm5vOwo+PiAtwqDCoMKg
IHRyYWNlX3Zmc191bmxpbmtfcmV0KCk7Cj4+IC3CoMKgwqAgcmV0dXJuIDA7Cj4+IC3CoMKgwqAg
b3V0X2Vycm5vOgo+PiAtwqDCoMKgIHRyYWNlX3Zmc191bmxpbmtfZXJyKGVycm9yKTsKPj4gLcKg
wqDCoCBlcnJubyA9IGVycm9yOwo+PiAtwqDCoMKgIHJldHVybiAtMTsKPj4gK8KgwqDCoCBlcnJv
ciA9IHN5c191bmxpbmsocGF0aCk7Cj4+ICvCoMKgwqAgaWYgKGVycm9yKQo+PiArwqDCoMKgwqDC
oMKgwqAgZ290byBvdXRfZXJybm87Cj4+ICvCoMKgwqAgdHJhY2VfdmZzX3VubGlua19yZXQoKTsK
Pj4gK8KgwqDCoCByZXR1cm4gMDsKPj4gK8KgwqDCoCBvdXRfZXJybm86Cj4+ICvCoMKgwqAgdHJh
Y2VfdmZzX3VubGlua19lcnIoZXJyb3IpOwo+PiArwqDCoMKgIGVycm5vID0gZXJyb3I7Cj4+ICvC
oMKgwqAgcmV0dXJuIC0xOwo+PiDCoCB9Cj4+IMKgIFRSQUNFUE9JTlQodHJhY2VfdmZzX3N0YXQs
ICJcIiVzXCIgJXAiLCBjb25zdCBjaGFyKiwgc3RydWN0IHN0YXQqKTsKPj4gQEAgLTExMjEsMzMg
KzExMjEsMzMgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfc3RhdF9lcnIsICIlZCIsIGludCk7Cj4+
IMKgIGV4dGVybiAiQyIKPj4gwqAgaW50IF9feHN0YXQoaW50IHZlciwgY29uc3QgY2hhciAqcGF0
aG5hbWUsIHN0cnVjdCBzdGF0ICpzdCkKPj4gwqAgewo+PiAtwqDCoMKgIHN0cnVjdCB0YXNrICp0
ID0gbWFpbl90YXNrOwo+PiAtwqDCoMKgIGNoYXIgcGF0aFtQQVRIX01BWF07Cj4+IC3CoMKgwqAg
aW50IGVycm9yOwo+PiArwqDCoMKgIHN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOwo+PiArwqDC
oMKgIGNoYXIgcGF0aFtQQVRIX01BWF07Cj4+ICvCoMKgwqAgaW50IGVycm9yOwo+PiAtwqDCoMKg
IHRyYWNlX3Zmc19zdGF0KHBhdGhuYW1lLCBzdCk7Cj4+ICvCoMKgwqAgdHJhY2VfdmZzX3N0YXQo
cGF0aG5hbWUsIHN0KTsKPj4gLcKgwqDCoCBlcnJvciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwg
MCwgcGF0aCk7Cj4+IC3CoMKgwqAgaWYgKGVycm9yKQo+PiAtwqDCoMKgwqDCoMKgwqAgZ290byBv
dXRfZXJybm87Cj4+ICvCoMKgwqAgZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5hbWUsIDAsIHBh
dGgpOwo+PiArwqDCoMKgIGlmIChlcnJvcikKPj4gK8KgwqDCoMKgwqDCoMKgIGdvdG8gb3V0X2Vy
cm5vOwo+PiAtwqDCoMKgIGVycm9yID0gc3lzX3N0YXQocGF0aCwgc3QpOwo+PiAtwqDCoMKgIGlm
IChlcnJvcikKPj4gLcKgwqDCoMKgwqDCoMKgIGdvdG8gb3V0X2Vycm5vOwo+PiAtwqDCoMKgIHRy
YWNlX3Zmc19zdGF0X3JldCgpOwo+PiAtwqDCoMKgIHJldHVybiAwOwo+PiArwqDCoMKgIGVycm9y
ID0gc3lzX3N0YXQocGF0aCwgc3QpOwo+PiArwqDCoMKgIGlmIChlcnJvcikKPj4gK8KgwqDCoMKg
wqDCoMKgIGdvdG8gb3V0X2Vycm5vOwo+PiArwqDCoMKgIHRyYWNlX3Zmc19zdGF0X3JldCgpOwo+
PiArwqDCoMKgIHJldHVybiAwOwo+PiAtwqDCoMKgIG91dF9lcnJubzoKPj4gLcKgwqDCoCB0cmFj
ZV92ZnNfc3RhdF9lcnIoZXJyb3IpOwo+PiAtwqDCoMKgIGVycm5vID0gZXJyb3I7Cj4+IC3CoMKg
wqAgcmV0dXJuIC0xOwo+PiArwqDCoMKgIG91dF9lcnJubzoKPj4gK8KgwqDCoCB0cmFjZV92ZnNf
c3RhdF9lcnIoZXJyb3IpOwo+PiArwqDCoMKgIGVycm5vID0gZXJyb3I7Cj4+ICvCoMKgwqAgcmV0
dXJuIC0xOwo+PiDCoCB9Cj4+IMKgIExGUzY0KF9feHN0YXQpOwo+PiDCoCBpbnQgc3RhdChjb25z
dCBjaGFyICpwYXRobmFtZSwgc3RydWN0IHN0YXQgKnN0KQo+PiDCoCB7Cj4+IC3CoMKgwqAgcmV0
dXJuIF9feHN0YXQoMSwgcGF0aG5hbWUsIHN0KTsKPj4gK8KgwqDCoCByZXR1cm4gX194c3RhdCgx
LCBwYXRobmFtZSwgc3QpOwo+PiDCoCB9Cj4+IMKgIExGUzY0KHN0YXQpOwo+PiBAQCAtMTE1OCwz
NSArMTE1OCwzNSBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19sc3RhdF9lcnIsICJlcnJubz0lZCIs
IGludCk7Cj4+IMKgIGV4dGVybiAiQyIKPj4gwqAgaW50IF9fbHhzdGF0KGludCB2ZXIsIGNvbnN0
IGNoYXIgKnBhdGhuYW1lLCBzdHJ1Y3Qgc3RhdCAqc3QpCj4+IMKgIHsKPj4gLcKgwqDCoCBzdHJ1
Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKPj4gLcKgwqDCoCBjaGFyIHBhdGhbUEFUSF9NQVhdOwo+
PiAtwqDCoMKgIGludCBlcnJvcjsKPj4gK8KgwqDCoCBzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFz
azsKPj4gK8KgwqDCoCBjaGFyIHBhdGhbUEFUSF9NQVhdOwo+PiArwqDCoMKgIGludCBlcnJvcjsK
Pj4gLcKgwqDCoCB0cmFjZV92ZnNfbHN0YXQocGF0aG5hbWUsIHN0KTsKPj4gK8KgwqDCoCB0cmFj
ZV92ZnNfbHN0YXQocGF0aG5hbWUsIHN0KTsKPj4gLcKgwqDCoCBlcnJvciA9IHRhc2tfY29udih0
LCBwYXRobmFtZSwgMCwgcGF0aCk7Cj4+IC3CoMKgwqAgaWYgKGVycm9yKSB7Cj4+IC3CoMKgwqDC
oMKgwqDCoCBlcnJubyA9IGVycm9yOwo+PiAtwqDCoMKgwqDCoMKgwqAgdHJhY2VfdmZzX2xzdGF0
X2VycihlcnJvcik7Cj4+IC3CoMKgwqDCoMKgwqDCoCByZXR1cm4gKC0xKTsKPj4gLcKgwqDCoCB9
Cj4+ICvCoMKgwqAgZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5hbWUsIDAsIHBhdGgpOwo+PiAr
wqDCoMKgIGlmIChlcnJvcikgewo+PiArwqDCoMKgwqDCoMKgwqAgZXJybm8gPSBlcnJvcjsKPj4g
K8KgwqDCoMKgwqDCoMKgIHRyYWNlX3Zmc19sc3RhdF9lcnIoZXJyb3IpOwo+PiArwqDCoMKgwqDC
oMKgwqAgcmV0dXJuICgtMSk7Cj4+ICvCoMKgwqAgfQo+PiAtwqDCoMKgIGVycm9yID0gc3lzX2xz
dGF0KHBhdGgsIHN0KTsKPj4gLcKgwqDCoCBpZiAoZXJyb3IpIHsKPj4gLcKgwqDCoMKgwqDCoMKg
IGVycm5vID0gZXJyb3I7Cj4+IC3CoMKgwqDCoMKgwqDCoCB0cmFjZV92ZnNfbHN0YXRfZXJyKGVy
cm9yKTsKPj4gLcKgwqDCoMKgwqDCoMKgIHJldHVybiAoLTEpOwo+PiAtwqDCoMKgIH0KPj4gK8Kg
wqDCoCBlcnJvciA9IHN5c19sc3RhdChwYXRoLCBzdCk7Cj4+ICvCoMKgwqAgaWYgKGVycm9yKSB7
Cj4+ICvCoMKgwqDCoMKgwqDCoCBlcnJubyA9IGVycm9yOwo+PiArwqDCoMKgwqDCoMKgwqAgdHJh
Y2VfdmZzX2xzdGF0X2VycihlcnJvcik7Cj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gKC0xKTsK
Pj4gK8KgwqDCoCB9Cj4+IC3CoMKgwqAgdHJhY2VfdmZzX2xzdGF0X3JldCgpOwo+PiAtwqDCoMKg
IHJldHVybiAwOwo+PiArwqDCoMKgIHRyYWNlX3Zmc19sc3RhdF9yZXQoKTsKPj4gK8KgwqDCoCBy
ZXR1cm4gMDsKPj4gwqAgfQo+PiDCoCBMRlM2NChfX2x4c3RhdCk7Cj4+IMKgIGludCBsc3RhdChj
b25zdCBjaGFyICpwYXRobmFtZSwgc3RydWN0IHN0YXQgKnN0KQo+PiDCoCB7Cj4+IC3CoMKgwqAg
cmV0dXJuIF9fbHhzdGF0KDEsIHBhdGhuYW1lLCBzdCk7Cj4+ICvCoMKgwqAgcmV0dXJuIF9fbHhz
dGF0KDEsIHBhdGhuYW1lLCBzdCk7Cj4+IMKgIH0KPj4gwqAgTEZTNjQobHN0YXQpOwo+PiBAQCAt
MTE5OCwyNCArMTE5OCwyNCBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19zdGF0ZnNfZXJyLCAiJWQi
LCBpbnQpOwo+PiDCoCBleHRlcm4gIkMiCj4+IMKgIGludCBfX3N0YXRmcyhjb25zdCBjaGFyICpw
YXRobmFtZSwgc3RydWN0IHN0YXRmcyAqYnVmKQo+PiDCoCB7Cj4+IC3CoMKgwqAgdHJhY2VfdmZz
X3N0YXRmcyhwYXRobmFtZSwgYnVmKTsKPj4gLcKgwqDCoCBzdHJ1Y3QgdGFzayAqdCA9IG1haW5f
dGFzazsKPj4gLcKgwqDCoCBjaGFyIHBhdGhbUEFUSF9NQVhdOwo+PiAtwqDCoMKgIGludCBlcnJv
cjsKPj4gLQo+PiAtwqDCoMKgIGVycm9yID0gdGFza19jb252KHQsIHBhdGhuYW1lLCAwLCBwYXRo
KTsKPj4gLcKgwqDCoCBpZiAoZXJyb3IpCj4+IC3CoMKgwqDCoMKgwqDCoCBnb3RvIG91dF9lcnJu
bzsKPj4gLQo+PiAtwqDCoMKgIGVycm9yID0gc3lzX3N0YXRmcyhwYXRoLCBidWYpOwo+PiAtwqDC
oMKgIGlmIChlcnJvcikKPj4gLcKgwqDCoMKgwqDCoMKgIGdvdG8gb3V0X2Vycm5vOwo+PiAtwqDC
oMKgIHRyYWNlX3Zmc19zdGF0ZnNfcmV0KCk7Cj4+IC3CoMKgwqAgcmV0dXJuIDA7Cj4+IC3CoMKg
wqAgb3V0X2Vycm5vOgo+PiAtwqDCoMKgIHRyYWNlX3Zmc19zdGF0ZnNfZXJyKGVycm9yKTsKPj4g
LcKgwqDCoCBlcnJubyA9IGVycm9yOwo+PiAtwqDCoMKgIHJldHVybiAtMTsKPj4gK8KgwqDCoCB0
cmFjZV92ZnNfc3RhdGZzKHBhdGhuYW1lLCBidWYpOwo+PiArwqDCoMKgIHN0cnVjdCB0YXNrICp0
ID0gbWFpbl90YXNrOwo+PiArwqDCoMKgIGNoYXIgcGF0aFtQQVRIX01BWF07Cj4+ICvCoMKgwqAg
aW50IGVycm9yOwo+PiArCj4+ICvCoMKgwqAgZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5hbWUs
IDAsIHBhdGgpOwo+PiArwqDCoMKgIGlmIChlcnJvcikKPj4gK8KgwqDCoMKgwqDCoMKgIGdvdG8g
b3V0X2Vycm5vOwo+PiArCj4+ICvCoMKgwqAgZXJyb3IgPSBzeXNfc3RhdGZzKHBhdGgsIGJ1Zik7
Cj4+ICvCoMKgwqAgaWYgKGVycm9yKQo+PiArwqDCoMKgwqDCoMKgwqAgZ290byBvdXRfZXJybm87
Cj4+ICvCoMKgwqAgdHJhY2VfdmZzX3N0YXRmc19yZXQoKTsKPj4gK8KgwqDCoCByZXR1cm4gMDsK
Pj4gK8KgwqDCoCBvdXRfZXJybm86Cj4+ICvCoMKgwqAgdHJhY2VfdmZzX3N0YXRmc19lcnIoZXJy
b3IpOwo+PiArwqDCoMKgIGVycm5vID0gZXJyb3I7Cj4+ICvCoMKgwqAgcmV0dXJuIC0xOwo+PiDC
oCB9Cj4+IMKgIHdlYWtfYWxpYXMoX19zdGF0ZnMsIHN0YXRmcyk7Cj4+IEBAIC0xMjI4LDI2ICsx
MjI4LDI2IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2ZzdGF0ZnNfZXJyLCAiJWQiLCBpbnQpOwo+
PiDCoCBleHRlcm4gIkMiCj4+IMKgIGludCBfX2ZzdGF0ZnMoaW50IGZkLCBzdHJ1Y3Qgc3RhdGZz
ICpidWYpCj4+IMKgIHsKPj4gLcKgwqDCoCBzdHJ1Y3QgZmlsZSAqZnA7Cj4+IC3CoMKgwqAgaW50
IGVycm9yOwo+PiArwqDCoMKgIHN0cnVjdCBmaWxlICpmcDsKPj4gK8KgwqDCoCBpbnQgZXJyb3I7
Cj4+IC3CoMKgwqAgdHJhY2VfdmZzX2ZzdGF0ZnMoZmQsIGJ1Zik7Cj4+IC3CoMKgwqAgZXJyb3Ig
PSBmZ2V0KGZkLCAmZnApOwo+PiAtwqDCoMKgIGlmIChlcnJvcikKPj4gLcKgwqDCoMKgwqDCoMKg
IGdvdG8gb3V0X2Vycm5vOwo+PiArwqDCoMKgIHRyYWNlX3Zmc19mc3RhdGZzKGZkLCBidWYpOwo+
PiArwqDCoMKgIGVycm9yID0gZmdldChmZCwgJmZwKTsKPj4gK8KgwqDCoCBpZiAoZXJyb3IpCj4+
ICvCoMKgwqDCoMKgwqDCoCBnb3RvIG91dF9lcnJubzsKPj4gLcKgwqDCoCBlcnJvciA9IHN5c19m
c3RhdGZzKGZwLCBidWYpOwo+PiAtwqDCoMKgIGZkcm9wKGZwKTsKPj4gK8KgwqDCoCBlcnJvciA9
IHN5c19mc3RhdGZzKGZwLCBidWYpOwo+PiArwqDCoMKgIGZkcm9wKGZwKTsKPj4gLcKgwqDCoCBp
ZiAoZXJyb3IpCj4+IC3CoMKgwqDCoMKgwqDCoCBnb3RvIG91dF9lcnJubzsKPj4gLcKgwqDCoCB0
cmFjZV92ZnNfZnN0YXRmc19yZXQoKTsKPj4gLcKgwqDCoCByZXR1cm4gMDsKPj4gK8KgwqDCoCBp
ZiAoZXJyb3IpCj4+ICvCoMKgwqDCoMKgwqDCoCBnb3RvIG91dF9lcnJubzsKPj4gK8KgwqDCoCB0
cmFjZV92ZnNfZnN0YXRmc19yZXQoKTsKPj4gK8KgwqDCoCByZXR1cm4gMDsKPj4gLcKgwqDCoCBv
dXRfZXJybm86Cj4+IC3CoMKgwqAgdHJhY2VfdmZzX2ZzdGF0ZnNfZXJyKGVycm9yKTsKPj4gLcKg
wqDCoCBlcnJubyA9IGVycm9yOwo+PiAtwqDCoMKgIHJldHVybiAtMTsKPj4gK8KgwqDCoCBvdXRf
ZXJybm86Cj4+ICvCoMKgwqAgdHJhY2VfdmZzX2ZzdGF0ZnNfZXJyKGVycm9yKTsKPj4gK8KgwqDC
oCBlcnJubyA9IGVycm9yOwo+PiArwqDCoMKgIHJldHVybiAtMTsKPj4gwqAgfQo+PiDCoCB3ZWFr
X2FsaWFzKF9fZnN0YXRmcywgZnN0YXRmcyk7Cj4+IEBAIC0xMjU2LDI4ICsxMjU2LDI4IEBAIExG
UzY0KGZzdGF0ZnMpOwo+PiDCoCBzdGF0aWMgaW50Cj4+IMKgIHN0YXRmc190b19zdGF0dmZzKHN0
cnVjdCBzdGF0dmZzICpkc3QsIHN0cnVjdCBzdGF0ZnMgKnNyYykKPj4gwqAgewo+PiAtwqDCoMKg
IGRzdC0+Zl9ic2l6ZSA9IHNyYy0+Zl9ic2l6ZTsKPj4gLcKgwqDCoCBkc3QtPmZfZnJzaXplID0g
c3JjLT5mX2JzaXplOwo+PiAtwqDCoMKgIGRzdC0+Zl9ibG9ja3MgPSBzcmMtPmZfYmxvY2tzOwo+
PiAtwqDCoMKgIGRzdC0+Zl9iZnJlZSA9IHNyYy0+Zl9iZnJlZTsKPj4gLcKgwqDCoCBkc3QtPmZf
YmF2YWlsID0gc3JjLT5mX2JhdmFpbDsKPj4gLcKgwqDCoCBkc3QtPmZfZmlsZXMgPSBzcmMtPmZf
ZmlsZXM7Cj4+IC3CoMKgwqAgZHN0LT5mX2ZmcmVlID0gc3JjLT5mX2ZmcmVlOwo+PiAtwqDCoMKg
IGRzdC0+Zl9mYXZhaWwgPSAwOwo+PiAtwqDCoMKgIGRzdC0+Zl9mc2lkID0gc3JjLT5mX2ZzaWQu
X192YWxbMF07Cj4+IC3CoMKgwqAgZHN0LT5mX2ZsYWcgPSBzcmMtPmZfZmxhZ3M7Cj4+IC3CoMKg
wqAgZHN0LT5mX25hbWVtYXggPSBzcmMtPmZfbmFtZWxlbjsKPj4gLcKgwqDCoCByZXR1cm4gMDsK
Pj4gK8KgwqDCoCBkc3QtPmZfYnNpemUgPSBzcmMtPmZfYnNpemU7Cj4+ICvCoMKgwqAgZHN0LT5m
X2Zyc2l6ZSA9IHNyYy0+Zl9ic2l6ZTsKPj4gK8KgwqDCoCBkc3QtPmZfYmxvY2tzID0gc3JjLT5m
X2Jsb2NrczsKPj4gK8KgwqDCoCBkc3QtPmZfYmZyZWUgPSBzcmMtPmZfYmZyZWU7Cj4+ICvCoMKg
wqAgZHN0LT5mX2JhdmFpbCA9IHNyYy0+Zl9iYXZhaWw7Cj4+ICvCoMKgwqAgZHN0LT5mX2ZpbGVz
ID0gc3JjLT5mX2ZpbGVzOwo+PiArwqDCoMKgIGRzdC0+Zl9mZnJlZSA9IHNyYy0+Zl9mZnJlZTsK
Pj4gK8KgwqDCoCBkc3QtPmZfZmF2YWlsID0gMDsKPj4gK8KgwqDCoCBkc3QtPmZfZnNpZCA9IHNy
Yy0+Zl9mc2lkLl9fdmFsWzBdOwo+PiArwqDCoMKgIGRzdC0+Zl9mbGFnID0gc3JjLT5mX2ZsYWdz
Owo+PiArwqDCoMKgIGRzdC0+Zl9uYW1lbWF4ID0gc3JjLT5mX25hbWVsZW47Cj4+ICvCoMKgwqAg
cmV0dXJuIDA7Cj4+IMKgIH0KPj4gwqAgaW50Cj4+IMKgIHN0YXR2ZnMoY29uc3QgY2hhciAqcGF0
aG5hbWUsIHN0cnVjdCBzdGF0dmZzICpidWYpCj4+IMKgIHsKPj4gLcKgwqDCoCBzdHJ1Y3Qgc3Rh
dGZzIHN0Owo+PiArwqDCoMKgIHN0cnVjdCBzdGF0ZnMgc3Q7Cj4+IC3CoMKgwqAgaWYgKF9fc3Rh
dGZzKHBhdGhuYW1lLCAmc3QpIDwgMCkKPj4gLcKgwqDCoMKgwqDCoMKgIHJldHVybiAtMTsKPj4g
LcKgwqDCoCByZXR1cm4gc3RhdGZzX3RvX3N0YXR2ZnMoYnVmLCAmc3QpOwo+PiArwqDCoMKgIGlm
IChfX3N0YXRmcyhwYXRobmFtZSwgJnN0KSA8IDApCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4g
LTE7Cj4+ICvCoMKgwqAgcmV0dXJuIHN0YXRmc190b19zdGF0dmZzKGJ1ZiwgJnN0KTsKPj4gwqAg
fQo+PiDCoCBMRlM2NChzdGF0dmZzKTsKPj4gQEAgLTEyODUsMTEgKzEyODUsMTEgQEAgTEZTNjQo
c3RhdHZmcyk7Cj4+IMKgIGludAo+PiDCoCBmc3RhdHZmcyhpbnQgZmQsIHN0cnVjdCBzdGF0dmZz
ICpidWYpCj4+IMKgIHsKPj4gLcKgwqDCoCBzdHJ1Y3Qgc3RhdGZzIHN0Owo+PiArwqDCoMKgIHN0
cnVjdCBzdGF0ZnMgc3Q7Cj4+IC3CoMKgwqAgaWYgKF9fZnN0YXRmcyhmZCwgJnN0KSA8IDApCj4+
IC3CoMKgwqDCoMKgwqDCoCByZXR1cm4gLTE7Cj4+IC3CoMKgwqAgcmV0dXJuIHN0YXRmc190b19z
dGF0dmZzKGJ1ZiwgJnN0KTsKPj4gK8KgwqDCoCBpZiAoX19mc3RhdGZzKGZkLCAmc3QpIDwgMCkK
Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAtMTsKPj4gK8KgwqDCoCByZXR1cm4gc3RhdGZzX3Rv
X3N0YXR2ZnMoYnVmLCAmc3QpOwo+PiDCoCB9Cj4+IMKgIExGUzY0KGZzdGF0dmZzKTsKPj4gQEAg
LTEzMDEsMzkgKzEzMDEsMzkgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZ2V0Y3dkX2VyciwgIiVk
IiwgaW50KTsKPj4gwqAgY2hhciAqZ2V0Y3dkKGNoYXIgKnBhdGgsIHNpemVfdCBzaXplKQo+PiDC
oCB7Cj4+IC3CoMKgwqAgdHJhY2VfdmZzX2dldGN3ZChwYXRoLCBzaXplKTsKPj4gLcKgwqDCoCBz
dHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKPj4gLcKgwqDCoCBpbnQgbGVuID0gc3RybGVuKHQt
PnRfY3dkKSArIDE7Cj4+IC3CoMKgwqAgaW50IGVycm9yOwo+PiAtCj4+IC3CoMKgwqAgaWYgKCFw
YXRoKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCBpZiAoIXNpemUpCj4+IC3CoMKgwqDCoMKgwqDCoMKg
wqDCoMKgIHNpemUgPSBsZW47Cj4+IC3CoMKgwqDCoMKgwqDCoCBwYXRoID0gKGNoYXIqKW1hbGxv
YyhzaXplKTsKPj4gLcKgwqDCoMKgwqDCoMKgIGlmICghcGF0aCkgewo+PiAtwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoCBlcnJvciA9IEVOT01FTTsKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ290
byBvdXRfZXJybm87Cj4+IC3CoMKgwqDCoMKgwqDCoCB9Cj4+IC3CoMKgwqAgfSBlbHNlIHsKPj4g
LcKgwqDCoMKgwqDCoMKgIGlmICghc2l6ZSkgewo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBl
cnJvciA9IEVJTlZBTDsKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBvdXRfZXJybm87
Cj4+IC3CoMKgwqDCoMKgwqDCoCB9Cj4+IC3CoMKgwqAgfQo+PiAtCj4+IC3CoMKgwqAgaWYgKHNp
emUgPCBsZW4pIHsKPj4gLcKgwqDCoMKgwqDCoMKgIGVycm9yID0gRVJBTkdFOwo+PiAtwqDCoMKg
wqDCoMKgwqAgZ290byBvdXRfZXJybm87Cj4+IC3CoMKgwqAgfQo+PiAtCj4+IC3CoMKgwqAgbWVt
Y3B5KHBhdGgsIHQtPnRfY3dkLCBsZW4pOwo+PiAtwqDCoMKgIHRyYWNlX3Zmc19nZXRjd2RfcmV0
KHBhdGgpOwo+PiAtwqDCoMKgIHJldHVybiBwYXRoOwo+PiAtCj4+IC3CoMKgwqAgb3V0X2Vycm5v
Ogo+PiAtwqDCoMKgIHRyYWNlX3Zmc19nZXRjd2RfZXJyKGVycm9yKTsKPj4gLcKgwqDCoCBlcnJu
byA9IGVycm9yOwo+PiAtwqDCoMKgIHJldHVybiBudWxscHRyOwo+PiArwqDCoMKgIHRyYWNlX3Zm
c19nZXRjd2QocGF0aCwgc2l6ZSk7Cj4+ICvCoMKgwqAgc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rh
c2s7Cj4+ICvCoMKgwqAgaW50IGxlbiA9IHN0cmxlbih0LT50X2N3ZCkgKyAxOwo+PiArwqDCoMKg
IGludCBlcnJvcjsKPj4gKwo+PiArwqDCoMKgIGlmICghcGF0aCkgewo+PiArwqDCoMKgwqDCoMKg
wqAgaWYgKCFzaXplKQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzaXplID0gbGVuOwo+PiAr
wqDCoMKgwqDCoMKgwqAgcGF0aCA9IChjaGFyKiltYWxsb2Moc2l6ZSk7Cj4+ICvCoMKgwqDCoMKg
wqDCoCBpZiAoIXBhdGgpIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZXJyb3IgPSBFTk9N
RU07Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gb3V0X2Vycm5vOwo+PiArwqDCoMKg
wqDCoMKgwqAgfQo+PiArwqDCoMKgIH0gZWxzZSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAoIXNp
emUpIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZXJyb3IgPSBFSU5WQUw7Cj4+ICvCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gb3V0X2Vycm5vOwo+PiArwqDCoMKgwqDCoMKgwqAgfQo+
PiArwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgIGlmIChzaXplIDwgbGVuKSB7Cj4+ICvCoMKgwqDC
oMKgwqDCoCBlcnJvciA9IEVSQU5HRTsKPj4gK8KgwqDCoMKgwqDCoMKgIGdvdG8gb3V0X2Vycm5v
Owo+PiArwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgIG1lbWNweShwYXRoLCB0LT50X2N3ZCwgbGVu
KTsKPj4gK8KgwqDCoCB0cmFjZV92ZnNfZ2V0Y3dkX3JldChwYXRoKTsKPj4gK8KgwqDCoCByZXR1
cm4gcGF0aDsKPj4gKwo+PiArwqDCoMKgIG91dF9lcnJubzoKPj4gK8KgwqDCoCB0cmFjZV92ZnNf
Z2V0Y3dkX2VycihlcnJvcik7Cj4+ICvCoMKgwqAgZXJybm8gPSBlcnJvcjsKPj4gK8KgwqDCoCBy
ZXR1cm4gbnVsbHB0cjsKPj4gwqAgfQo+PiDCoCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19kdXAsICIl
ZCIsIGludCk7Cj4+IEBAIC0xMzQ0LDI5ICsxMzQ0LDI5IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZz
X2R1cF9lcnIsICIlZCIsIGludCk7Cj4+IMKgwqAgKi8KPj4gwqAgaW50IGR1cChpbnQgb2xkZmQp
Cj4+IMKgIHsKPj4gLcKgwqDCoCBzdHJ1Y3QgZmlsZSAqZnA7Cj4+IC3CoMKgwqAgaW50IG5ld2Zk
Owo+PiAtwqDCoMKgIGludCBlcnJvcjsKPj4gK8KgwqDCoCBzdHJ1Y3QgZmlsZSAqZnA7Cj4+ICvC
oMKgwqAgaW50IG5ld2ZkOwo+PiArwqDCoMKgIGludCBlcnJvcjsKPj4gLcKgwqDCoCB0cmFjZV92
ZnNfZHVwKG9sZGZkKTsKPj4gLcKgwqDCoCBlcnJvciA9IGZnZXQob2xkZmQsICZmcCk7Cj4+IC3C
oMKgwqAgaWYgKGVycm9yKQo+PiAtwqDCoMKgwqDCoMKgwqAgZ290byBvdXRfZXJybm87Cj4+ICvC
oMKgwqAgdHJhY2VfdmZzX2R1cChvbGRmZCk7Cj4+ICvCoMKgwqAgZXJyb3IgPSBmZ2V0KG9sZGZk
LCAmZnApOwo+PiArwqDCoMKgIGlmIChlcnJvcikKPj4gK8KgwqDCoMKgwqDCoMKgIGdvdG8gb3V0
X2Vycm5vOwo+PiAtwqDCoMKgIGVycm9yID0gZmRhbGxvYyhmcCwgJm5ld2ZkKTsKPj4gLcKgwqDC
oCBpZiAoZXJyb3IpCj4+IC3CoMKgwqDCoMKgwqDCoCBnb3RvIG91dF9mZHJvcDsKPj4gK8KgwqDC
oCBlcnJvciA9IGZkYWxsb2MoZnAsICZuZXdmZCk7Cj4+ICvCoMKgwqAgaWYgKGVycm9yKQo+PiAr
wqDCoMKgwqDCoMKgwqAgZ290byBvdXRfZmRyb3A7Cj4+IC3CoMKgwqAgZmRyb3AoZnApOwo+PiAt
wqDCoMKgIHRyYWNlX3Zmc19kdXBfcmV0KG5ld2ZkKTsKPj4gLcKgwqDCoCByZXR1cm4gbmV3ZmQ7
Cj4+ICvCoMKgwqAgZmRyb3AoZnApOwo+PiArwqDCoMKgIHRyYWNlX3Zmc19kdXBfcmV0KG5ld2Zk
KTsKPj4gK8KgwqDCoCByZXR1cm4gbmV3ZmQ7Cj4+IC3CoMKgwqAgb3V0X2Zkcm9wOgo+PiAtwqDC
oMKgIGZkcm9wKGZwKTsKPj4gLcKgwqDCoCBvdXRfZXJybm86Cj4+IC3CoMKgwqAgdHJhY2VfdmZz
X2R1cF9lcnIoZXJyb3IpOwo+PiAtwqDCoMKgIGVycm5vID0gZXJyb3I7Cj4+IC3CoMKgwqAgcmV0
dXJuIC0xOwo+PiArwqDCoMKgIG91dF9mZHJvcDoKPj4gK8KgwqDCoCBmZHJvcChmcCk7Cj4+ICvC
oMKgwqAgb3V0X2Vycm5vOgo+PiArwqDCoMKgIHRyYWNlX3Zmc19kdXBfZXJyKGVycm9yKTsKPj4g
K8KgwqDCoCBlcnJubyA9IGVycm9yOwo+PiArwqDCoMKgIHJldHVybiAtMTsKPj4gwqAgfQo+PiDC
oCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19kdXAzLCAiJWQgJWQgMHgleCIsIGludCwgaW50LCBpbnQp
Owo+PiBAQCAtMTM3Nyw1MCArMTM3Nyw1MCBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19kdXAzX2Vy
ciwgIiVkIiwgaW50KTsKPj4gwqDCoCAqLwo+PiDCoCBpbnQgZHVwMyhpbnQgb2xkZmQsIGludCBu
ZXdmZCwgaW50IGZsYWdzKQo+PiDCoCB7Cj4+IC3CoMKgwqAgc3RydWN0IGZpbGUgKmZwOwo+PiAt
wqDCoMKgIGludCBlcnJvcjsKPj4gLQo+PiAtwqDCoMKgIHRyYWNlX3Zmc19kdXAzKG9sZGZkLCBu
ZXdmZCwgZmxhZ3MpOwo+PiAtwqDCoMKgIC8qCj4+IC3CoMKgwqDCoCAqIERvbid0IGFsbG93IGFu
eSBhcmd1bWVudCBidXQgT19DTE9FWEVDLsKgIEJ1dCB3ZSBldmVuIGlnbm9yZQo+PiAtwqDCoMKg
wqAgKiB0aGF0IGFzIHdlIGRvbid0IHN1cHBvcnQgZXhlYygpIGFuZCB0aHVzIGRvbid0IGNhcmUu
Cj4+IC3CoMKgwqDCoCAqLwo+PiAtwqDCoMKgIGlmICgoZmxhZ3MgJiB+T19DTE9FWEVDKSAhPSAw
KSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCBlcnJvciA9IEVJTlZBTDsKPj4gLcKgwqDCoMKgwqDCoMKg
IGdvdG8gb3V0X2Vycm5vOwo+PiAtwqDCoMKgIH0KPj4gK8KgwqDCoCBzdHJ1Y3QgZmlsZSAqZnA7
Cj4+ICvCoMKgwqAgaW50IGVycm9yOwo+PiArCj4+ICvCoMKgwqAgdHJhY2VfdmZzX2R1cDMob2xk
ZmQsIG5ld2ZkLCBmbGFncyk7Cj4+ICvCoMKgwqAgLyoKPj4gK8KgwqDCoMKgICogRG9uJ3QgYWxs
b3cgYW55IGFyZ3VtZW50IGJ1dCBPX0NMT0VYRUMuwqAgQnV0IHdlIGV2ZW4gaWdub3JlCj4+ICvC
oMKgwqDCoCAqIHRoYXQgYXMgd2UgZG9uJ3Qgc3VwcG9ydCBleGVjKCkgYW5kIHRodXMgZG9uJ3Qg
Y2FyZS4KPj4gK8KgwqDCoMKgICovCj4+ICvCoMKgwqAgaWYgKChmbGFncyAmIH5PX0NMT0VYRUMp
ICE9IDApIHsKPj4gK8KgwqDCoMKgwqDCoMKgIGVycm9yID0gRUlOVkFMOwo+PiArwqDCoMKgwqDC
oMKgwqAgZ290byBvdXRfZXJybm87Cj4+ICvCoMKgwqAgfQo+PiAtwqDCoMKgIGlmIChvbGRmZCA9
PSBuZXdmZCkgewo+PiAtwqDCoMKgwqDCoMKgwqAgZXJyb3IgPSBFSU5WQUw7Cj4+IC3CoMKgwqDC
oMKgwqDCoCBnb3RvIG91dF9lcnJubzsKPj4gLcKgwqDCoCB9Cj4+ICvCoMKgwqAgaWYgKG9sZGZk
ID09IG5ld2ZkKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBlcnJvciA9IEVJTlZBTDsKPj4gK8KgwqDC
oMKgwqDCoMKgIGdvdG8gb3V0X2Vycm5vOwo+PiArwqDCoMKgIH0KPj4gLcKgwqDCoCBlcnJvciA9
IGZnZXQob2xkZmQsICZmcCk7Cj4+IC3CoMKgwqAgaWYgKGVycm9yKQo+PiAtwqDCoMKgwqDCoMKg
wqAgZ290byBvdXRfZXJybm87Cj4+ICvCoMKgwqAgZXJyb3IgPSBmZ2V0KG9sZGZkLCAmZnApOwo+
PiArwqDCoMKgIGlmIChlcnJvcikKPj4gK8KgwqDCoMKgwqDCoMKgIGdvdG8gb3V0X2Vycm5vOwo+
PiAtwqDCoMKgIGVycm9yID0gZmRzZXQobmV3ZmQsIGZwKTsKPj4gLcKgwqDCoCBpZiAoZXJyb3Ip
IHsKPj4gLcKgwqDCoMKgwqDCoMKgIGZkcm9wKGZwKTsKPj4gLcKgwqDCoMKgwqDCoMKgIGdvdG8g
b3V0X2Vycm5vOwo+PiAtwqDCoMKgIH0KPj4gK8KgwqDCoCBlcnJvciA9IGZkc2V0KG5ld2ZkLCBm
cCk7Cj4+ICvCoMKgwqAgaWYgKGVycm9yKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBmZHJvcChmcCk7
Cj4+ICvCoMKgwqDCoMKgwqDCoCBnb3RvIG91dF9lcnJubzsKPj4gK8KgwqDCoCB9Cj4+IC3CoMKg
wqAgZmRyb3AoZnApOwo+PiAtwqDCoMKgIHRyYWNlX3Zmc19kdXAzX3JldChuZXdmZCk7Cj4+IC3C
oMKgwqAgcmV0dXJuIG5ld2ZkOwo+PiArwqDCoMKgIGZkcm9wKGZwKTsKPj4gK8KgwqDCoCB0cmFj
ZV92ZnNfZHVwM19yZXQobmV3ZmQpOwo+PiArwqDCoMKgIHJldHVybiBuZXdmZDsKPj4gLcKgwqDC
oCBvdXRfZXJybm86Cj4+IC3CoMKgwqAgdHJhY2VfdmZzX2R1cDNfZXJyKGVycm9yKTsKPj4gLcKg
wqDCoCBlcnJubyA9IGVycm9yOwo+PiAtwqDCoMKgIHJldHVybiAtMTsKPj4gK8KgwqDCoCBvdXRf
ZXJybm86Cj4+ICvCoMKgwqAgdHJhY2VfdmZzX2R1cDNfZXJyKGVycm9yKTsKPj4gK8KgwqDCoCBl
cnJubyA9IGVycm9yOwo+PiArwqDCoMKgIHJldHVybiAtMTsKPj4gwqAgfQo+PiDCoCBpbnQgZHVw
MihpbnQgb2xkZmQsIGludCBuZXdmZCkKPj4gwqAgewo+PiAtwqDCoMKgIGlmIChvbGRmZCA9PSBu
ZXdmZCkKPj4gLcKgwqDCoMKgwqDCoMKgIHJldHVybiBuZXdmZDsKPj4gK8KgwqDCoCBpZiAob2xk
ZmQgPT0gbmV3ZmQpCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gbmV3ZmQ7Cj4+IC3CoMKgwqAg
cmV0dXJuIGR1cDMob2xkZmQsIG5ld2ZkLCAwKTsKPj4gK8KgwqDCoCByZXR1cm4gZHVwMyhvbGRm
ZCwgbmV3ZmQsIDApOwo+PiDCoCB9Cj4+IMKgIC8qCj4+IEBAIC0xNDM1LDgzICsxNDM1LDgzIEBA
IFRSQUNFUE9JTlQodHJhY2VfdmZzX2ZjbnRsX2VyciwgIiVkIiwgaW50KTsKPj4gwqAgZXh0ZXJu
ICJDIgo+PiDCoCBpbnQgZmNudGwoaW50IGZkLCBpbnQgY21kLCBpbnQgYXJnKQo+PiDCoCB7Cj4+
IC3CoMKgwqAgc3RydWN0IGZpbGUgKmZwOwo+PiAtwqDCoMKgIGludCByZXQgPSAwLCBlcnJvcjsK
Pj4gLcKgwqDCoCBpbnQgdG1wOwo+PiAtCj4+IC3CoMKgwqAgdHJhY2VfdmZzX2ZjbnRsKGZkLCBj
bWQsIGFyZyk7Cj4+IC3CoMKgwqAgZXJyb3IgPSBmZ2V0KGZkLCAmZnApOwo+PiAtwqDCoMKgIGlm
IChlcnJvcikKPj4gLcKgwqDCoMKgwqDCoMKgIGdvdG8gb3V0X2Vycm5vOwo+PiAtCj4+IC3CoMKg
wqAgLy8gQW4gaW1wb3J0YW50IG5vdGUgYWJvdXQgb3VyIGhhbmRsaW5nIG9mIEZEX0NMT0VYRUMg
LyBPX0NMT0VYRUM6Cj4+IC3CoMKgwqAgLy8gY2xvc2Utb24tZXhlYyBzaG91bGRuJ3QgaGF2ZSBi
ZWVuIGEgZmlsZSBmbGFnIChmcC0+Zl9mbGFncykgLSAKPj4gaXQgaXMgYQo+PiAtwqDCoMKgIC8v
IGZpbGUgZGVzY3JpcHRvciBmbGFnLCBtZWFuaW5nIHRoYXQgdGhhdCB0d28gZHVwKCllZCBmaWxl
IAo+PiBkZXNjcmlwdG9ycwo+PiAtwqDCoMKgIC8vIGNvdWxkIGhhdmUgZGlmZmVyZW50IHZhbHVl
cyBmb3IgRkRfQ0xPRVhFQy4gT3VyIGN1cnJlbnQgCj4+IGltcGxlbWVudGF0aW9uCj4+IC3CoMKg
wqAgLy8gKndyb25nbHkqIG1ha2VzIGNsb3NlLW9uLWV4ZWMgYW4gZl9mbGFnICh1c2luZyB0aGUg
Yml0IAo+PiBPX0NMT0VYRUMpLgo+PiAtwqDCoMKgIC8vIFRoZXJlIGlzIGxpdHRsZSBwcmFjdGlj
YWwgZGlmZmVyZW5jZSwgdGhvdWdoLCBiZWNhdXNlIHRoaXMgCj4+IGZsYWcgaXMKPj4gLcKgwqDC
oCAvLyBpZ25vcmVkIGluIE9TdiBhbnl3YXksIGFzIGl0IGRvZXNuJ3Qgc3VwcG9ydCBleGVjKCku
Cj4+IC3CoMKgwqAgc3dpdGNoIChjbWQpIHsKPj4gLcKgwqDCoCBjYXNlIEZfRFVQRkQ6Cj4+IC3C
oMKgwqDCoMKgwqDCoCBlcnJvciA9IF9mZGFsbG9jKGZwLCAmcmV0LCBhcmcpOwo+PiAtwqDCoMKg
wqDCoMKgwqAgaWYgKGVycm9yKQo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIG91dF9l
cnJubzsKPj4gLcKgwqDCoMKgwqDCoMKgIGJyZWFrOwo+PiAtwqDCoMKgIGNhc2UgRl9HRVRGRDoK
Pj4gLcKgwqDCoMKgwqDCoMKgIHJldCA9IChmcC0+Zl9mbGFncyAmIE9fQ0xPRVhFQykgPyBGRF9D
TE9FWEVDIDogMDsKPj4gLcKgwqDCoMKgwqDCoMKgIGJyZWFrOwo+PiAtwqDCoMKgIGNhc2UgRl9T
RVRGRDoKPj4gLcKgwqDCoMKgwqDCoMKgIEZEX0xPQ0soZnApOwo+PiAtwqDCoMKgwqDCoMKgwqAg
ZnAtPmZfZmxhZ3MgPSAoZnAtPmZfZmxhZ3MgJiB+T19DTE9FWEVDKSB8Cj4+IC3CoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqAgKChhcmcgJiBGRF9DTE9FWEVDKSA/IE9fQ0xPRVhFQyA6IDAp
Owo+PiAtwqDCoMKgwqDCoMKgwqAgRkRfVU5MT0NLKGZwKTsKPj4gLcKgwqDCoMKgwqDCoMKgIGJy
ZWFrOwo+PiAtwqDCoMKgIGNhc2UgRl9HRVRGTDoKPj4gLcKgwqDCoMKgwqDCoMKgIC8vIEFzIGV4
cGxhaW5lZCBhYm92ZSwgdGhlIE9fQ0xPRVhFQyBzaG91bGQgaGF2ZSBiZWVuIGluIAo+PiBmX2Zs
YWdzLAo+PiAtwqDCoMKgwqDCoMKgwqAgLy8gYW5kIHNob3VsZG4ndCBiZSByZXR1cm5lZC4gTGlu
dXggYWx3YXlzIHJldHVybnMgMDEwMDAwMCAoInRoZQo+PiAtwqDCoMKgwqDCoMKgwqAgLy8gZmxh
ZyBmb3JtZXJseSBrbm93biBhcyBPX0xBUkdFRklMRSkgc28gbGV0J3MgZG8gaXQgdG9vLgo+PiAt
wqDCoMKgwqDCoMKgwqAgcmV0ID0gKG9mbGFncyhmcC0+Zl9mbGFncykgJiB+T19DTE9FWEVDKSB8
IDAxMDAwMDA7Cj4+IC3CoMKgwqDCoMKgwqDCoCBicmVhazsKPj4gLcKgwqDCoCBjYXNlIEZfU0VU
Rkw6Cj4+IC3CoMKgwqDCoMKgwqDCoCBGRF9MT0NLKGZwKTsKPj4gLcKgwqDCoMKgwqDCoMKgIGZw
LT5mX2ZsYWdzID0gZmZsYWdzKChvZmxhZ3MoZnAtPmZfZmxhZ3MpICYgflNFVEZMKSB8Cj4+IC3C
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKGFyZyAmIFNFVEZMKSk7Cj4+IC3CoMKgwqDC
oMKgwqDCoCBGRF9VTkxPQ0soZnApOwo+PiAtCj4+IC3CoMKgwqDCoMKgwqDCoCAvKiBTeW5jIG5v
bmJsb2NraW5nL2FzeW5jIHN0YXRlIHdpdGggZmlsZSBmbGFncyAqLwo+PiAtwqDCoMKgwqDCoMKg
wqAgdG1wID0gZnAtPmZfZmxhZ3MgJiBGTk9OQkxPQ0s7Cj4+IC3CoMKgwqDCoMKgwqDCoCBmcC0+
aW9jdGwoRklPTkJJTywgJnRtcCk7Cj4+IC3CoMKgwqDCoMKgwqDCoCB0bXAgPSBmcC0+Zl9mbGFn
cyAmIEZBU1lOQzsKPj4gLcKgwqDCoMKgwqDCoMKgIGZwLT5pb2N0bChGSU9BU1lOQywgJnRtcCk7
Cj4+IC0KPj4gLcKgwqDCoMKgwqDCoMKgIGJyZWFrOwo+PiAtwqDCoMKgIGNhc2UgRl9TRVRMSzoK
Pj4gLcKgwqDCoMKgwqDCoMKgIFdBUk5fT05DRSgiZmNudGwoRl9TRVRMSykgc3R1YmJlZFxuIik7
Cj4+IC3CoMKgwqDCoMKgwqDCoCBicmVhazsKPj4gLcKgwqDCoCBjYXNlIEZfR0VUTEs6Cj4+IC3C
oMKgwqDCoMKgwqDCoCBXQVJOX09OQ0UoImZjbnRsKEZfR0VUTEspIHN0dWJiZWRcbiIpOwo+PiAt
wqDCoMKgwqDCoMKgwqAgYnJlYWs7Cj4+IC3CoMKgwqAgY2FzZSBGX1NFVExLVzoKPj4gLcKgwqDC
oMKgwqDCoMKgIFdBUk5fT05DRSgiZmNudGwoRl9TRVRMS1cpIHN0dWJiZWRcbiIpOwo+PiAtwqDC
oMKgwqDCoMKgwqAgYnJlYWs7Cj4+IC3CoMKgwqAgY2FzZSBGX1NFVE9XTjoKPj4gLcKgwqDCoMKg
wqDCoMKgIFdBUk5fT05DRSgiZmNudGwoRl9TRVRPV04pIHN0dWJiZWRcbiIpOwo+PiAtwqDCoMKg
wqDCoMKgwqAgYnJlYWs7Cj4+IC3CoMKgwqAgZGVmYXVsdDoKPj4gLcKgwqDCoMKgwqDCoMKgIGtw
cmludGYoInVuc3VwcG9ydGVkIGZjbnRsIGNtZCAweCV4XG4iLCBjbWQpOwo+PiAtwqDCoMKgwqDC
oMKgwqAgZXJyb3IgPSBFSU5WQUw7Cj4+IC3CoMKgwqAgfQo+PiAtCj4+IC3CoMKgwqAgZmRyb3Ao
ZnApOwo+PiAtwqDCoMKgIGlmIChlcnJvcikKPj4gLcKgwqDCoMKgwqDCoMKgIGdvdG8gb3V0X2Vy
cm5vOwo+PiAtwqDCoMKgIHRyYWNlX3Zmc19mY250bF9yZXQocmV0KTsKPj4gLcKgwqDCoCByZXR1
cm4gcmV0Owo+PiAtCj4+IC3CoMKgwqAgb3V0X2Vycm5vOgo+PiAtwqDCoMKgIHRyYWNlX3Zmc19m
Y250bF9lcnIoZXJyb3IpOwo+PiAtwqDCoMKgIGVycm5vID0gZXJyb3I7Cj4+IC3CoMKgwqAgcmV0
dXJuIC0xOwo+PiArwqDCoMKgIHN0cnVjdCBmaWxlICpmcDsKPj4gK8KgwqDCoCBpbnQgcmV0ID0g
MCwgZXJyb3I7Cj4+ICvCoMKgwqAgaW50IHRtcDsKPj4gKwo+PiArwqDCoMKgIHRyYWNlX3Zmc19m
Y250bChmZCwgY21kLCBhcmcpOwo+PiArwqDCoMKgIGVycm9yID0gZmdldChmZCwgJmZwKTsKPj4g
K8KgwqDCoCBpZiAoZXJyb3IpCj4+ICvCoMKgwqDCoMKgwqDCoCBnb3RvIG91dF9lcnJubzsKPj4g
Kwo+PiArwqDCoMKgIC8vIEFuIGltcG9ydGFudCBub3RlIGFib3V0IG91ciBoYW5kbGluZyBvZiBG
RF9DTE9FWEVDIC8gT19DTE9FWEVDOgo+PiArwqDCoMKgIC8vIGNsb3NlLW9uLWV4ZWMgc2hvdWxk
bid0IGhhdmUgYmVlbiBhIGZpbGUgZmxhZyAoZnAtPmZfZmxhZ3MpIC0gCj4+IGl0IGlzIGEKPj4g
K8KgwqDCoCAvLyBmaWxlIGRlc2NyaXB0b3IgZmxhZywgbWVhbmluZyB0aGF0IHRoYXQgdHdvIGR1
cCgpZWQgZmlsZSAKPj4gZGVzY3JpcHRvcnMKPj4gK8KgwqDCoCAvLyBjb3VsZCBoYXZlIGRpZmZl
cmVudCB2YWx1ZXMgZm9yIEZEX0NMT0VYRUMuIE91ciBjdXJyZW50IAo+PiBpbXBsZW1lbnRhdGlv
bgo+PiArwqDCoMKgIC8vICp3cm9uZ2x5KiBtYWtlcyBjbG9zZS1vbi1leGVjIGFuIGZfZmxhZyAo
dXNpbmcgdGhlIGJpdCAKPj4gT19DTE9FWEVDKS4KPj4gK8KgwqDCoCAvLyBUaGVyZSBpcyBsaXR0
bGUgcHJhY3RpY2FsIGRpZmZlcmVuY2UsIHRob3VnaCwgYmVjYXVzZSB0aGlzIAo+PiBmbGFnIGlz
Cj4+ICvCoMKgwqAgLy8gaWdub3JlZCBpbiBPU3YgYW55d2F5LCBhcyBpdCBkb2Vzbid0IHN1cHBv
cnQgZXhlYygpLgo+PiArwqDCoMKgIHN3aXRjaCAoY21kKSB7Cj4+ICvCoMKgwqAgY2FzZSBGX0RV
UEZEOgo+PiArwqDCoMKgwqDCoMKgwqAgZXJyb3IgPSBfZmRhbGxvYyhmcCwgJnJldCwgYXJnKTsK
Pj4gK8KgwqDCoMKgwqDCoMKgIGlmIChlcnJvcikKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAg
Z290byBvdXRfZXJybm87Cj4+ICvCoMKgwqDCoMKgwqDCoCBicmVhazsKPj4gK8KgwqDCoCBjYXNl
IEZfR0VURkQ6Cj4+ICvCoMKgwqDCoMKgwqDCoCByZXQgPSAoZnAtPmZfZmxhZ3MgJiBPX0NMT0VY
RUMpID8gRkRfQ0xPRVhFQyA6IDA7Cj4+ICvCoMKgwqDCoMKgwqDCoCBicmVhazsKPj4gK8KgwqDC
oCBjYXNlIEZfU0VURkQ6Cj4+ICvCoMKgwqDCoMKgwqDCoCBGRF9MT0NLKGZwKTsKPj4gK8KgwqDC
oMKgwqDCoMKgIGZwLT5mX2ZsYWdzID0gKGZwLT5mX2ZsYWdzICYgfk9fQ0xPRVhFQykgfAo+PiAr
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICgoYXJnICYgRkRfQ0xPRVhFQykgPyBPX0NM
T0VYRUMgOiAwKTsKPj4gK8KgwqDCoMKgwqDCoMKgIEZEX1VOTE9DSyhmcCk7Cj4+ICvCoMKgwqDC
oMKgwqDCoCBicmVhazsKPj4gK8KgwqDCoCBjYXNlIEZfR0VURkw6Cj4+ICvCoMKgwqDCoMKgwqDC
oCAvLyBBcyBleHBsYWluZWQgYWJvdmUsIHRoZSBPX0NMT0VYRUMgc2hvdWxkIGhhdmUgYmVlbiBp
biAKPj4gZl9mbGFncywKPj4gK8KgwqDCoMKgwqDCoMKgIC8vIGFuZCBzaG91bGRuJ3QgYmUgcmV0
dXJuZWQuIExpbnV4IGFsd2F5cyByZXR1cm5zIDAxMDAwMDAgKCJ0aGUKPj4gK8KgwqDCoMKgwqDC
oMKgIC8vIGZsYWcgZm9ybWVybHkga25vd24gYXMgT19MQVJHRUZJTEUpIHNvIGxldCdzIGRvIGl0
IHRvby4KPj4gK8KgwqDCoMKgwqDCoMKgIHJldCA9IChvZmxhZ3MoZnAtPmZfZmxhZ3MpICYgfk9f
Q0xPRVhFQykgfCAwMTAwMDAwOwo+PiArwqDCoMKgwqDCoMKgwqAgYnJlYWs7Cj4+ICvCoMKgwqAg
Y2FzZSBGX1NFVEZMOgo+PiArwqDCoMKgwqDCoMKgwqAgRkRfTE9DSyhmcCk7Cj4+ICvCoMKgwqDC
oMKgwqDCoCBmcC0+Zl9mbGFncyA9IGZmbGFncygob2ZsYWdzKGZwLT5mX2ZsYWdzKSAmIH5TRVRG
TCkgfAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChhcmcgJiBTRVRGTCkpOwo+
PiArwqDCoMKgwqDCoMKgwqAgRkRfVU5MT0NLKGZwKTsKPj4gKwo+PiArwqDCoMKgwqDCoMKgwqAg
LyogU3luYyBub25ibG9ja2luZy9hc3luYyBzdGF0ZSB3aXRoIGZpbGUgZmxhZ3MgKi8KPj4gK8Kg
wqDCoMKgwqDCoMKgIHRtcCA9IGZwLT5mX2ZsYWdzICYgRk5PTkJMT0NLOwo+PiArwqDCoMKgwqDC
oMKgwqAgZnAtPmlvY3RsKEZJT05CSU8sICZ0bXApOwo+PiArwqDCoMKgwqDCoMKgwqAgdG1wID0g
ZnAtPmZfZmxhZ3MgJiBGQVNZTkM7Cj4+ICvCoMKgwqDCoMKgwqDCoCBmcC0+aW9jdGwoRklPQVNZ
TkMsICZ0bXApOwo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoCBicmVhazsKPj4gK8KgwqDCoCBjYXNl
IEZfU0VUTEs6Cj4+ICvCoMKgwqDCoMKgwqDCoCBXQVJOX09OQ0UoImZjbnRsKEZfU0VUTEspIHN0
dWJiZWRcbiIpOwo+PiArwqDCoMKgwqDCoMKgwqAgYnJlYWs7Cj4+ICvCoMKgwqAgY2FzZSBGX0dF
VExLOgo+PiArwqDCoMKgwqDCoMKgwqAgV0FSTl9PTkNFKCJmY250bChGX0dFVExLKSBzdHViYmVk
XG4iKTsKPj4gK8KgwqDCoMKgwqDCoMKgIGJyZWFrOwo+PiArwqDCoMKgIGNhc2UgRl9TRVRMS1c6
Cj4+ICvCoMKgwqDCoMKgwqDCoCBXQVJOX09OQ0UoImZjbnRsKEZfU0VUTEtXKSBzdHViYmVkXG4i
KTsKPj4gK8KgwqDCoMKgwqDCoMKgIGJyZWFrOwo+PiArwqDCoMKgIGNhc2UgRl9TRVRPV046Cj4+
ICvCoMKgwqDCoMKgwqDCoCBXQVJOX09OQ0UoImZjbnRsKEZfU0VUT1dOKSBzdHViYmVkXG4iKTsK
Pj4gK8KgwqDCoMKgwqDCoMKgIGJyZWFrOwo+PiArwqDCoMKgIGRlZmF1bHQ6Cj4+ICvCoMKgwqDC
oMKgwqDCoCBrcHJpbnRmKCJ1bnN1cHBvcnRlZCBmY250bCBjbWQgMHgleFxuIiwgY21kKTsKPj4g
K8KgwqDCoMKgwqDCoMKgIGVycm9yID0gRUlOVkFMOwo+PiArwqDCoMKgIH0KPj4gKwo+PiArwqDC
oMKgIGZkcm9wKGZwKTsKPj4gK8KgwqDCoCBpZiAoZXJyb3IpCj4+ICvCoMKgwqDCoMKgwqDCoCBn
b3RvIG91dF9lcnJubzsKPj4gK8KgwqDCoCB0cmFjZV92ZnNfZmNudGxfcmV0KHJldCk7Cj4+ICvC
oMKgwqAgcmV0dXJuIHJldDsKPj4gKwo+PiArwqDCoMKgIG91dF9lcnJubzoKPj4gK8KgwqDCoCB0
cmFjZV92ZnNfZmNudGxfZXJyKGVycm9yKTsKPj4gK8KgwqDCoCBlcnJubyA9IGVycm9yOwo+PiAr
wqDCoMKgIHJldHVybiAtMTsKPj4gwqAgfQo+PiDCoCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19hY2Nl
c3MsICJcIiVzXCIgMCUwbyIsIGNvbnN0IGNoYXIqLCBpbnQpOwo+PiBAQCAtMTUyMyw3MiArMTUy
Myw3MiBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19hY2Nlc3NfZXJyLCAiJWQiLCBpbnQpOwo+PiDC
oMKgICovCj4+IMKgIGludCBhY2Nlc3MoY29uc3QgY2hhciAqcGF0aG5hbWUsIGludCBtb2RlKQo+
PiDCoCB7Cj4+IC3CoMKgwqAgdHJhY2VfdmZzX2FjY2VzcyhwYXRobmFtZSwgbW9kZSk7Cj4+IC3C
oMKgwqAgc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7Cj4+IC3CoMKgwqAgY2hhciBwYXRoW1BB
VEhfTUFYXTsKPj4gLcKgwqDCoCBpbnQgYWNjLCBlcnJvciA9IDA7Cj4+ICvCoMKgwqAgdHJhY2Vf
dmZzX2FjY2VzcyhwYXRobmFtZSwgbW9kZSk7Cj4+ICvCoMKgwqAgc3RydWN0IHRhc2sgKnQgPSBt
YWluX3Rhc2s7Cj4+ICvCoMKgwqAgY2hhciBwYXRoW1BBVEhfTUFYXTsKPj4gK8KgwqDCoCBpbnQg
YWNjLCBlcnJvciA9IDA7Cj4+IC3CoMKgwqAgYWNjID0gMDsKPj4gLcKgwqDCoCBpZiAobW9kZSAm
IFJfT0spCj4+IC3CoMKgwqDCoMKgwqDCoCBhY2MgfD0gVlJFQUQ7Cj4+IC3CoMKgwqAgaWYgKG1v
ZGUgJiBXX09LKQo+PiAtwqDCoMKgwqDCoMKgwqAgYWNjIHw9IFZXUklURTsKPj4gK8KgwqDCoCBh
Y2MgPSAwOwo+PiArwqDCoMKgIGlmIChtb2RlICYgUl9PSykKPj4gK8KgwqDCoMKgwqDCoMKgIGFj
YyB8PSBWUkVBRDsKPj4gK8KgwqDCoCBpZiAobW9kZSAmIFdfT0spCj4+ICvCoMKgwqDCoMKgwqDC
oCBhY2MgfD0gVldSSVRFOwo+PiAtwqDCoMKgIGlmICgoZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0
aG5hbWUsIGFjYywgcGF0aCkpICE9IDApCj4+IC3CoMKgwqDCoMKgwqDCoCBnb3RvIG91dF9lcnJu
bzsKPj4gK8KgwqDCoCBpZiAoKGVycm9yID0gdGFza19jb252KHQsIHBhdGhuYW1lLCBhY2MsIHBh
dGgpKSAhPSAwKQo+PiArwqDCoMKgwqDCoMKgwqAgZ290byBvdXRfZXJybm87Cj4+IC3CoMKgwqAg
ZXJyb3IgPSBzeXNfYWNjZXNzKHBhdGgsIG1vZGUpOwo+PiAtwqDCoMKgIGlmIChlcnJvcikKPj4g
LcKgwqDCoMKgwqDCoMKgIGdvdG8gb3V0X2Vycm5vOwo+PiAtwqDCoMKgIHRyYWNlX3Zmc19hY2Nl
c3NfcmV0KCk7Cj4+IC3CoMKgwqAgcmV0dXJuIDA7Cj4+IC3CoMKgwqAgb3V0X2Vycm5vOgo+PiAt
wqDCoMKgIGVycm5vID0gZXJyb3I7Cj4+IC3CoMKgwqAgdHJhY2VfdmZzX2FjY2Vzc19lcnIoZXJy
b3IpOwo+PiAtwqDCoMKgIHJldHVybiAtMTsKPj4gK8KgwqDCoCBlcnJvciA9IHN5c19hY2Nlc3Mo
cGF0aCwgbW9kZSk7Cj4+ICvCoMKgwqAgaWYgKGVycm9yKQo+PiArwqDCoMKgwqDCoMKgwqAgZ290
byBvdXRfZXJybm87Cj4+ICvCoMKgwqAgdHJhY2VfdmZzX2FjY2Vzc19yZXQoKTsKPj4gK8KgwqDC
oCByZXR1cm4gMDsKPj4gK8KgwqDCoCBvdXRfZXJybm86Cj4+ICvCoMKgwqAgZXJybm8gPSBlcnJv
cjsKPj4gK8KgwqDCoCB0cmFjZV92ZnNfYWNjZXNzX2VycihlcnJvcik7Cj4+ICvCoMKgwqAgcmV0
dXJuIC0xOwo+PiDCoCB9Cj4+IMKgIGludCBmYWNjZXNzYXQoaW50IGRpcmZkLCBjb25zdCBjaGFy
ICpwYXRobmFtZSwgaW50IG1vZGUsIGludCBmbGFncykKPj4gwqAgewo+PiAtwqDCoMKgIGlmIChm
bGFncyAmIEFUX1NZTUxJTktfTk9GT0xMT1cpIHsKPj4gLcKgwqDCoMKgwqDCoMKgIFVOSU1QTEVN
RU5URUQoImZhY2Nlc3NhdCgpIHdpdGggQVRfU1lNTElOS19OT0ZPTExPVyIpOwo+PiAtwqDCoMKg
IH0KPj4gK8KgwqDCoCBpZiAoZmxhZ3MgJiBBVF9TWU1MSU5LX05PRk9MTE9XKSB7Cj4+ICvCoMKg
wqDCoMKgwqDCoCBVTklNUExFTUVOVEVEKCJmYWNjZXNzYXQoKSB3aXRoIEFUX1NZTUxJTktfTk9G
T0xMT1ciKTsKPj4gK8KgwqDCoCB9Cj4+IC3CoMKgwqAgaWYgKHBhdGhuYW1lWzBdID09ICcvJyB8
fCBkaXJmZCA9PSBBVF9GRENXRCkgewo+PiAtwqDCoMKgwqDCoMKgwqAgcmV0dXJuIGFjY2Vzcyhw
YXRobmFtZSwgbW9kZSk7Cj4+IC3CoMKgwqAgfQo+PiArwqDCoMKgIGlmIChwYXRobmFtZVswXSA9
PSAnLycgfHwgZGlyZmQgPT0gQVRfRkRDV0QpIHsKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBh
Y2Nlc3MocGF0aG5hbWUsIG1vZGUpOwo+PiArwqDCoMKgIH0KPj4gLcKgwqDCoCBzdHJ1Y3QgZmls
ZSAqZnA7Cj4+IC3CoMKgwqAgaW50IGVycm9yID0gZmdldChkaXJmZCwgJmZwKTsKPj4gLcKgwqDC
oCBpZiAoZXJyb3IpIHsKPj4gLcKgwqDCoMKgwqDCoMKgIGVycm5vID0gZXJyb3I7Cj4+IC3CoMKg
wqDCoMKgwqDCoCByZXR1cm4gLTE7Cj4+IC3CoMKgwqAgfQo+PiArwqDCoMKgIHN0cnVjdCBmaWxl
ICpmcDsKPj4gK8KgwqDCoCBpbnQgZXJyb3IgPSBmZ2V0KGRpcmZkLCAmZnApOwo+PiArwqDCoMKg
IGlmIChlcnJvcikgewo+PiArwqDCoMKgwqDCoMKgwqAgZXJybm8gPSBlcnJvcjsKPj4gK8KgwqDC
oMKgwqDCoMKgIHJldHVybiAtMTsKPj4gK8KgwqDCoCB9Cj4+IC3CoMKgwqAgc3RydWN0IHZub2Rl
ICp2cCA9IGZwLT5mX2RlbnRyeS0+ZF92bm9kZTsKPj4gLcKgwqDCoCB2bl9sb2NrKHZwKTsKPj4g
K8KgwqDCoCBzdHJ1Y3Qgdm5vZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOwo+PiArwqDC
oMKgIHZuX2xvY2sodnApOwo+PiAtwqDCoMKgIHN0ZDo6dW5pcXVlX3B0cjxjaGFyIFtdPiB1cCAo
bmV3IGNoYXJbUEFUSF9NQVhdKTsKPj4gLcKgwqDCoCBjaGFyICpwID0gdXAuZ2V0KCk7Cj4+ICvC
oMKgwqAgc3RkOjp1bmlxdWVfcHRyPGNoYXIgW10+IHVwIChuZXcgY2hhcltQQVRIX01BWF0pOwo+
PiArwqDCoMKgIGNoYXIgKnAgPSB1cC5nZXQoKTsKPj4gLcKgwqDCoCAvKiBidWlsZCBhYnNvbHV0
ZSBwYXRoICovCj4+IC3CoMKgwqAgc3RybGNweShwLCBmcC0+Zl9kZW50cnktPmRfbW91bnQtPm1f
cGF0aCwgUEFUSF9NQVgpOwo+PiAtwqDCoMKgIHN0cmxjYXQocCwgZnAtPmZfZGVudHJ5LT5kX3Bh
dGgsIFBBVEhfTUFYKTsKPj4gLcKgwqDCoCBzdHJsY2F0KHAsICIvIiwgUEFUSF9NQVgpOwo+PiAt
wqDCoMKgIHN0cmxjYXQocCwgcGF0aG5hbWUsIFBBVEhfTUFYKTsKPj4gK8KgwqDCoCAvKiBidWls
ZCBhYnNvbHV0ZSBwYXRoICovCj4+ICvCoMKgwqAgc3RybGNweShwLCBmcC0+Zl9kZW50cnktPmRf
bW91bnQtPm1fcGF0aCwgUEFUSF9NQVgpOwo+PiArwqDCoMKgIHN0cmxjYXQocCwgZnAtPmZfZGVu
dHJ5LT5kX3BhdGgsIFBBVEhfTUFYKTsKPj4gK8KgwqDCoCBzdHJsY2F0KHAsICIvIiwgUEFUSF9N
QVgpOwo+PiArwqDCoMKgIHN0cmxjYXQocCwgcGF0aG5hbWUsIFBBVEhfTUFYKTsKPj4gLcKgwqDC
oCBlcnJvciA9IGFjY2VzcyhwLCBtb2RlKTsKPj4gK8KgwqDCoCBlcnJvciA9IGFjY2VzcyhwLCBt
b2RlKTsKPj4gLcKgwqDCoCB2bl91bmxvY2sodnApOwo+PiAtwqDCoMKgIGZkcm9wKGZwKTsKPj4g
K8KgwqDCoCB2bl91bmxvY2sodnApOwo+PiArwqDCoMKgIGZkcm9wKGZwKTsKPj4gLcKgwqDCoCBy
ZXR1cm4gZXJyb3I7Cj4+ICvCoMKgwqAgcmV0dXJuIGVycm9yOwo+PiDCoCB9Cj4+IMKgIGV4dGVy
biAiQyIKPj4gwqAgaW50IGV1aWRhY2Nlc3MoY29uc3QgY2hhciAqcGF0aG5hbWUsIGludCBtb2Rl
KQo+PiDCoCB7Cj4+IC3CoMKgwqAgcmV0dXJuIGFjY2VzcyhwYXRobmFtZSwgbW9kZSk7Cj4+ICvC
oMKgwqAgcmV0dXJuIGFjY2VzcyhwYXRobmFtZSwgbW9kZSk7Cj4+IMKgIH0KPj4gwqAgd2Vha19h
bGlhcyhldWlkYWNjZXNzLGVhY2Nlc3MpOwo+PiBAQCAtMTU5OCw0MiArMTU5OCw0MiBAQCBzdGF0
aWMgaW50Cj4+IMKgIGZzX3BpcGUoc3RydWN0IHRhc2sgKnQsIHN0cnVjdCBtc2cgKm1zZykKPj4g
wqAgewo+PiDCoCAjaWZkZWYgQ09ORklHX0ZJRk9GUwo+PiAtwqDCoMKgIGNoYXIgcGF0aFtQQVRI
X01BWF07Cj4+IC3CoMKgwqAgZmlsZV90IHJmcCwgd2ZwOwo+PiAtwqDCoMKgIGludCBlcnJvciwg
cmZkLCB3ZmQ7Cj4+IC0KPj4gLcKgwqDCoCBEUFJJTlRGKFZGU0RCX0NPUkUsICgiZnNfcGlwZVxu
IikpOwo+PiAtCj4+IC3CoMKgwqAgaWYgKChyZmQgPSB0YXNrX25ld2ZkKHQpKSA9PSAtMSkKPj4g
LcKgwqDCoMKgwqDCoMKgIHJldHVybiBFTUZJTEU7Cj4+IC3CoMKgwqAgdC0+dF9vZmlsZVtyZmRd
ID0gKGZpbGVfdCkxOyAvKiB0ZW1wICovCj4+IC0KPj4gLcKgwqDCoCBpZiAoKHdmZCA9IHRhc2tf
bmV3ZmQodCkpID09IC0xKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCB0LT50X29maWxlW3JmZF0gPSBu
dWxscHRyOwo+PiAtwqDCoMKgwqDCoMKgwqAgcmV0dXJuIEVNRklMRTsKPj4gLcKgwqDCoCB9Cj4+
IC3CoMKgwqAgc3ByaW50ZihwYXRoLCAiL21udC9maWZvL3BpcGUtJXgtJWQiLCAodV9pbnQpdC0+
dF90YXNraWQsIHJmZCk7Cj4+IC0KPj4gLcKgwqDCoCBpZiAoKGVycm9yID0gc3lzX21rbm9kKHBh
dGgsIFNfSUZJRk8pKSAhPSAwKQo+PiAtwqDCoMKgwqDCoMKgwqAgZ290byBvdXQ7Cj4+IC3CoMKg
wqAgaWYgKChlcnJvciA9IHN5c19vcGVuKHBhdGgsIE9fUkRPTkxZIHwgT19OT05CTE9DSywgMCwg
JnJmcCkpICE9IDApIHsKPj4gLcKgwqDCoMKgwqDCoMKgIGdvdG8gb3V0Owo+PiAtwqDCoMKgIH0K
Pj4gLcKgwqDCoCBpZiAoKGVycm9yID0gc3lzX29wZW4ocGF0aCwgT19XUk9OTFkgfCBPX05PTkJM
T0NLLCAwLCAmd2ZwKSkgIT0gMCkgewo+PiAtwqDCoMKgwqDCoMKgwqAgZ290byBvdXQ7Cj4+IC3C
oMKgwqAgfQo+PiAtwqDCoMKgIHQtPnRfb2ZpbGVbcmZkXSA9IHJmcDsKPj4gLcKgwqDCoCB0LT50
X29maWxlW3dmZF0gPSB3ZnA7Cj4+IC3CoMKgwqAgdC0+dF9ub3BlbnMgKz0gMjsKPj4gLcKgwqDC
oCBtc2ctPmRhdGFbMF0gPSByZmQ7Cj4+IC3CoMKgwqAgbXNnLT5kYXRhWzFdID0gd2ZkOwo+PiAt
wqDCoMKgIHJldHVybiAwOwo+PiAtwqDCoMKgIG91dDoKPj4gLcKgwqDCoCB0LT50X29maWxlW3Jm
ZF0gPSBudWxscHRyOwo+PiAtwqDCoMKgIHQtPnRfb2ZpbGVbd2ZkXSA9IG51bGxwdHI7Cj4+IC3C
oMKgwqAgcmV0dXJuIGVycm9yOwo+PiArwqDCoMKgIGNoYXIgcGF0aFtQQVRIX01BWF07Cj4+ICvC
oMKgwqAgZmlsZV90IHJmcCwgd2ZwOwo+PiArwqDCoMKgIGludCBlcnJvciwgcmZkLCB3ZmQ7Cj4+
ICsKPj4gK8KgwqDCoCBEUFJJTlRGKFZGU0RCX0NPUkUsICgiZnNfcGlwZVxuIikpOwo+PiArCj4+
ICvCoMKgwqAgaWYgKChyZmQgPSB0YXNrX25ld2ZkKHQpKSA9PSAtMSkKPj4gK8KgwqDCoMKgwqDC
oMKgIHJldHVybiBFTUZJTEU7Cj4+ICvCoMKgwqAgdC0+dF9vZmlsZVtyZmRdID0gKGZpbGVfdCkx
OyAvKiB0ZW1wICovCj4+ICsKPj4gK8KgwqDCoCBpZiAoKHdmZCA9IHRhc2tfbmV3ZmQodCkpID09
IC0xKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCB0LT50X29maWxlW3JmZF0gPSBudWxscHRyOwo+PiAr
wqDCoMKgwqDCoMKgwqAgcmV0dXJuIEVNRklMRTsKPj4gK8KgwqDCoCB9Cj4+ICvCoMKgwqAgc3By
aW50ZihwYXRoLCAiL21udC9maWZvL3BpcGUtJXgtJWQiLCAodV9pbnQpdC0+dF90YXNraWQsIHJm
ZCk7Cj4+ICsKPj4gK8KgwqDCoCBpZiAoKGVycm9yID0gc3lzX21rbm9kKHBhdGgsIFNfSUZJRk8p
KSAhPSAwKQo+PiArwqDCoMKgwqDCoMKgwqAgZ290byBvdXQ7Cj4+ICvCoMKgwqAgaWYgKChlcnJv
ciA9IHN5c19vcGVuKHBhdGgsIE9fUkRPTkxZIHwgT19OT05CTE9DSywgMCwgJnJmcCkpICE9IDAp
IHsKPj4gK8KgwqDCoMKgwqDCoMKgIGdvdG8gb3V0Owo+PiArwqDCoMKgIH0KPj4gK8KgwqDCoCBp
ZiAoKGVycm9yID0gc3lzX29wZW4ocGF0aCwgT19XUk9OTFkgfCBPX05PTkJMT0NLLCAwLCAmd2Zw
KSkgIT0gMCkgewo+PiArwqDCoMKgwqDCoMKgwqAgZ290byBvdXQ7Cj4+ICvCoMKgwqAgfQo+PiAr
wqDCoMKgIHQtPnRfb2ZpbGVbcmZkXSA9IHJmcDsKPj4gK8KgwqDCoCB0LT50X29maWxlW3dmZF0g
PSB3ZnA7Cj4+ICvCoMKgwqAgdC0+dF9ub3BlbnMgKz0gMjsKPj4gK8KgwqDCoCBtc2ctPmRhdGFb
MF0gPSByZmQ7Cj4+ICvCoMKgwqAgbXNnLT5kYXRhWzFdID0gd2ZkOwo+PiArwqDCoMKgIHJldHVy
biAwOwo+PiArwqDCoMKgIG91dDoKPj4gK8KgwqDCoCB0LT50X29maWxlW3JmZF0gPSBudWxscHRy
Owo+PiArwqDCoMKgIHQtPnRfb2ZpbGVbd2ZkXSA9IG51bGxwdHI7Cj4+ICvCoMKgwqAgcmV0dXJu
IGVycm9yOwo+PiDCoCAjZWxzZQo+PiAtwqDCoMKgIHJldHVybiBFTk9TWVM7Cj4+ICvCoMKgwqAg
cmV0dXJuIEVOT1NZUzsKPj4gwqAgI2VuZGlmCj4+IMKgIH0KPj4gwqAgI2VuZGlmCj4+IEBAIC0x
NjQ3LDI1ICsxNjQ3LDI1IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2lzYXR0eV9lcnIsICIlZCIs
IGludCk7Cj4+IMKgwqAgKi8KPj4gwqAgaW50IGlzYXR0eShpbnQgZmQpCj4+IMKgIHsKPj4gLcKg
wqDCoCBzdHJ1Y3QgZmlsZSAqZnA7Cj4+IC3CoMKgwqAgaW50IGlzdHR5ID0gMDsKPj4gK8KgwqDC
oCBzdHJ1Y3QgZmlsZSAqZnA7Cj4+ICvCoMKgwqAgaW50IGlzdHR5ID0gMDsKPj4gLcKgwqDCoCB0
cmFjZV92ZnNfaXNhdHR5KGZkKTsKPj4gLcKgwqDCoCBmaWxlcmVmIGYoZmlsZXJlZl9mcm9tX2Zk
KGZkKSk7Cj4+IC3CoMKgwqAgaWYgKCFmKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCBlcnJubyA9IEVC
QURGOwo+PiAtwqDCoMKgwqDCoMKgwqAgdHJhY2VfdmZzX2lzYXR0eV9lcnIoZXJybm8pOwo+PiAt
wqDCoMKgwqDCoMKgwqAgcmV0dXJuIC0xOwo+PiAtwqDCoMKgIH0KPj4gK8KgwqDCoCB0cmFjZV92
ZnNfaXNhdHR5KGZkKTsKPj4gK8KgwqDCoCBmaWxlcmVmIGYoZmlsZXJlZl9mcm9tX2ZkKGZkKSk7
Cj4+ICvCoMKgwqAgaWYgKCFmKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBlcnJubyA9IEVCQURGOwo+
PiArwqDCoMKgwqDCoMKgwqAgdHJhY2VfdmZzX2lzYXR0eV9lcnIoZXJybm8pOwo+PiArwqDCoMKg
wqDCoMKgwqAgcmV0dXJuIC0xOwo+PiArwqDCoMKgIH0KPj4gLcKgwqDCoCBmcCA9IGYuZ2V0KCk7
Cj4+IC3CoMKgwqAgaWYgKGR5bmFtaWNfY2FzdDx0dHlfZmlsZSo+KGZwKSB8fAo+PiAtwqDCoMKg
wqDCoMKgwqAgKGZwLT5mX2RlbnRyeSAmJiBmcC0+Zl9kZW50cnktPmRfdm5vZGUtPnZfZmxhZ3Mg
JiBWSVNUVFkpKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCBpc3R0eSA9IDE7Cj4+IC3CoMKgwqAgfQo+
PiArwqDCoMKgIGZwID0gZi5nZXQoKTsKPj4gK8KgwqDCoCBpZiAoZHluYW1pY19jYXN0PHR0eV9m
aWxlKj4oZnApIHx8Cj4+ICvCoMKgwqDCoMKgwqDCoCAoZnAtPmZfZGVudHJ5ICYmIGZwLT5mX2Rl
bnRyeS0+ZF92bm9kZS0+dl9mbGFncyAmIFZJU1RUWSkpIHsKPj4gK8KgwqDCoMKgwqDCoMKgIGlz
dHR5ID0gMTsKPj4gK8KgwqDCoCB9Cj4+IC3CoMKgwqAgdHJhY2VfdmZzX2lzYXR0eV9yZXQoaXN0
dHkpOwo+PiAtwqDCoMKgIHJldHVybiBpc3R0eTsKPj4gK8KgwqDCoCB0cmFjZV92ZnNfaXNhdHR5
X3JldChpc3R0eSk7Cj4+ICvCoMKgwqAgcmV0dXJuIGlzdHR5Owo+PiDCoCB9Cj4+IMKgIFRSQUNF
UE9JTlQodHJhY2VfdmZzX3RydW5jYXRlLCAiXCIlc1wiIDB4JXgiLCBjb25zdCBjaGFyKiwgb2Zm
X3QpOwo+PiBAQCAtMTY3NCwyNiArMTY3NCwyNiBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc190cnVu
Y2F0ZV9lcnIsICIlZCIsIGludCk7Cj4+IMKgIGludCB0cnVuY2F0ZShjb25zdCBjaGFyICpwYXRo
bmFtZSwgb2ZmX3QgbGVuZ3RoKQo+PiDCoCB7Cj4+IC3CoMKgwqAgdHJhY2VfdmZzX3RydW5jYXRl
KHBhdGhuYW1lLCBsZW5ndGgpOwo+PiAtwqDCoMKgIHN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNr
Owo+PiAtwqDCoMKgIGNoYXIgcGF0aFtQQVRIX01BWF07Cj4+IC3CoMKgwqAgaW50IGVycm9yOwo+
PiArwqDCoMKgIHRyYWNlX3Zmc190cnVuY2F0ZShwYXRobmFtZSwgbGVuZ3RoKTsKPj4gK8KgwqDC
oCBzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKPj4gK8KgwqDCoCBjaGFyIHBhdGhbUEFUSF9N
QVhdOwo+PiArwqDCoMKgIGludCBlcnJvcjsKPj4gLcKgwqDCoCBlcnJvciA9IEVOT0VOVDsKPj4g
LcKgwqDCoCBpZiAocGF0aG5hbWUgPT0gbnVsbHB0cikKPj4gLcKgwqDCoMKgwqDCoMKgIGdvdG8g
b3V0X2Vycm5vOwo+PiAtwqDCoMKgIGlmICgoZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5hbWUs
IFZXUklURSwgcGF0aCkpICE9IDApCj4+IC3CoMKgwqDCoMKgwqDCoCBnb3RvIG91dF9lcnJubzsK
Pj4gK8KgwqDCoCBlcnJvciA9IEVOT0VOVDsKPj4gK8KgwqDCoCBpZiAocGF0aG5hbWUgPT0gbnVs
bHB0cikKPj4gK8KgwqDCoMKgwqDCoMKgIGdvdG8gb3V0X2Vycm5vOwo+PiArwqDCoMKgIGlmICgo
ZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5hbWUsIFZXUklURSwgcGF0aCkpICE9IDApCj4+ICvC
oMKgwqDCoMKgwqDCoCBnb3RvIG91dF9lcnJubzsKPj4gLcKgwqDCoCBlcnJvciA9IHN5c190cnVu
Y2F0ZShwYXRoLCBsZW5ndGgpOwo+PiAtwqDCoMKgIGlmIChlcnJvcikKPj4gLcKgwqDCoMKgwqDC
oMKgIGdvdG8gb3V0X2Vycm5vOwo+PiAtwqDCoMKgIHRyYWNlX3Zmc190cnVuY2F0ZV9yZXQoKTsK
Pj4gLcKgwqDCoCByZXR1cm4gMDsKPj4gLcKgwqDCoCBvdXRfZXJybm86Cj4+IC3CoMKgwqAgZXJy
bm8gPSBlcnJvcjsKPj4gLcKgwqDCoCB0cmFjZV92ZnNfdHJ1bmNhdGVfZXJyKGVycm9yKTsKPj4g
LcKgwqDCoCByZXR1cm4gLTE7Cj4+ICvCoMKgwqAgZXJyb3IgPSBzeXNfdHJ1bmNhdGUocGF0aCwg
bGVuZ3RoKTsKPj4gK8KgwqDCoCBpZiAoZXJyb3IpCj4+ICvCoMKgwqDCoMKgwqDCoCBnb3RvIG91
dF9lcnJubzsKPj4gK8KgwqDCoCB0cmFjZV92ZnNfdHJ1bmNhdGVfcmV0KCk7Cj4+ICvCoMKgwqAg
cmV0dXJuIDA7Cj4+ICvCoMKgwqAgb3V0X2Vycm5vOgo+PiArwqDCoMKgIGVycm5vID0gZXJyb3I7
Cj4+ICvCoMKgwqAgdHJhY2VfdmZzX3RydW5jYXRlX2VycihlcnJvcik7Cj4+ICvCoMKgwqAgcmV0
dXJuIC0xOwo+PiDCoCB9Cj4+IMKgIExGUzY0KHRydW5jYXRlKTsKPj4gQEAgLTE3MDQsNTggKzE3
MDQsNTggQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZnRydW5jYXRlX2VyciwgIiVkIiwgaW50KTsK
Pj4gwqAgaW50IGZ0cnVuY2F0ZShpbnQgZmQsIG9mZl90IGxlbmd0aCkKPj4gwqAgewo+PiAtwqDC
oMKgIHRyYWNlX3Zmc19mdHJ1bmNhdGUoZmQsIGxlbmd0aCk7Cj4+IC3CoMKgwqAgc3RydWN0IGZp
bGUgKmZwOwo+PiAtwqDCoMKgIGludCBlcnJvcjsKPj4gK8KgwqDCoCB0cmFjZV92ZnNfZnRydW5j
YXRlKGZkLCBsZW5ndGgpOwo+PiArwqDCoMKgIHN0cnVjdCBmaWxlICpmcDsKPj4gK8KgwqDCoCBp
bnQgZXJyb3I7Cj4+IC3CoMKgwqAgZXJyb3IgPSBmZ2V0KGZkLCAmZnApOwo+PiAtwqDCoMKgIGlm
IChlcnJvcikKPj4gLcKgwqDCoMKgwqDCoMKgIGdvdG8gb3V0X2Vycm5vOwo+PiArwqDCoMKgIGVy
cm9yID0gZmdldChmZCwgJmZwKTsKPj4gK8KgwqDCoCBpZiAoZXJyb3IpCj4+ICvCoMKgwqDCoMKg
wqDCoCBnb3RvIG91dF9lcnJubzsKPj4gLcKgwqDCoCBlcnJvciA9IHN5c19mdHJ1bmNhdGUoZnAs
IGxlbmd0aCk7Cj4+IC3CoMKgwqAgZmRyb3AoZnApOwo+PiArwqDCoMKgIGVycm9yID0gc3lzX2Z0
cnVuY2F0ZShmcCwgbGVuZ3RoKTsKPj4gK8KgwqDCoCBmZHJvcChmcCk7Cj4+IC3CoMKgwqAgaWYg
KGVycm9yKQo+PiAtwqDCoMKgwqDCoMKgwqAgZ290byBvdXRfZXJybm87Cj4+IC3CoMKgwqAgdHJh
Y2VfdmZzX2Z0cnVuY2F0ZV9yZXQoKTsKPj4gLcKgwqDCoCByZXR1cm4gMDsKPj4gK8KgwqDCoCBp
ZiAoZXJyb3IpCj4+ICvCoMKgwqDCoMKgwqDCoCBnb3RvIG91dF9lcnJubzsKPj4gK8KgwqDCoCB0
cmFjZV92ZnNfZnRydW5jYXRlX3JldCgpOwo+PiArwqDCoMKgIHJldHVybiAwOwo+PiAtwqDCoMKg
IG91dF9lcnJubzoKPj4gLcKgwqDCoCBlcnJubyA9IGVycm9yOwo+PiAtwqDCoMKgIHRyYWNlX3Zm
c19mdHJ1bmNhdGVfZXJyKGVycm9yKTsKPj4gLcKgwqDCoCByZXR1cm4gLTE7Cj4+ICvCoMKgwqAg
b3V0X2Vycm5vOgo+PiArwqDCoMKgIGVycm5vID0gZXJyb3I7Cj4+ICvCoMKgwqAgdHJhY2VfdmZz
X2Z0cnVuY2F0ZV9lcnIoZXJyb3IpOwo+PiArwqDCoMKgIHJldHVybiAtMTsKPj4gwqAgfQo+PiDC
oCBMRlM2NChmdHJ1bmNhdGUpOwo+PiDCoCBzc2l6ZV90IHJlYWRsaW5rKGNvbnN0IGNoYXIgKnBh
dGhuYW1lLCBjaGFyICpidWYsIHNpemVfdCBidWZzaXplKQo+PiDCoCB7Cj4+IC3CoMKgwqAgc3Ry
dWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7Cj4+IC3CoMKgwqAgY2hhciBwYXRoW1BBVEhfTUFYXTsK
Pj4gLcKgwqDCoCBpbnQgZXJyb3I7Cj4+IC3CoMKgwqAgc3NpemVfdCBzaXplOwo+PiArwqDCoMKg
IHN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOwo+PiArwqDCoMKgIGNoYXIgcGF0aFtQQVRIX01B
WF07Cj4+ICvCoMKgwqAgaW50IGVycm9yOwo+PiArwqDCoMKgIHNzaXplX3Qgc2l6ZTsKPj4gLcKg
wqDCoCBlcnJvciA9IC1FSU5WQUw7Cj4+IC3CoMKgwqAgaWYgKGJ1ZnNpemUgPD0gMCkKPj4gLcKg
wqDCoMKgwqDCoMKgIGdvdG8gb3V0X2Vycm5vOwo+PiArwqDCoMKgIGVycm9yID0gLUVJTlZBTDsK
Pj4gK8KgwqDCoCBpZiAoYnVmc2l6ZSA8PSAwKQo+PiArwqDCoMKgwqDCoMKgwqAgZ290byBvdXRf
ZXJybm87Cj4+IC3CoMKgwqAgZXJyb3IgPSBFTk9FTlQ7Cj4+IC3CoMKgwqAgaWYgKHBhdGhuYW1l
ID09IG51bGxwdHIpCj4+IC3CoMKgwqDCoMKgwqDCoCBnb3RvIG91dF9lcnJubzsKPj4gLcKgwqDC
oCBlcnJvciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwgVldSSVRFLCBwYXRoKTsKPj4gLcKgwqDC
oCBpZiAoZXJyb3IpCj4+IC3CoMKgwqDCoMKgwqDCoCBnb3RvIG91dF9lcnJubzsKPj4gK8KgwqDC
oCBlcnJvciA9IEVOT0VOVDsKPj4gK8KgwqDCoCBpZiAocGF0aG5hbWUgPT0gbnVsbHB0cikKPj4g
K8KgwqDCoMKgwqDCoMKgIGdvdG8gb3V0X2Vycm5vOwo+PiArwqDCoMKgIGVycm9yID0gdGFza19j
b252KHQsIHBhdGhuYW1lLCBWV1JJVEUsIHBhdGgpOwo+PiArwqDCoMKgIGlmIChlcnJvcikKPj4g
K8KgwqDCoMKgwqDCoMKgIGdvdG8gb3V0X2Vycm5vOwo+PiAtwqDCoMKgIHNpemXCoCA9IDA7Cj4+
IC3CoMKgwqAgZXJyb3IgPSBzeXNfcmVhZGxpbmsocGF0aCwgYnVmLCBidWZzaXplLCAmc2l6ZSk7
Cj4+ICvCoMKgwqAgc2l6ZcKgID0gMDsKPj4gK8KgwqDCoCBlcnJvciA9IHN5c19yZWFkbGluayhw
YXRoLCBidWYsIGJ1ZnNpemUsICZzaXplKTsKPj4gLcKgwqDCoCBpZiAoZXJyb3IgIT0gMCkKPj4g
LcKgwqDCoMKgwqDCoMKgIGdvdG8gb3V0X2Vycm5vOwo+PiArwqDCoMKgIGlmIChlcnJvciAhPSAw
KQo+PiArwqDCoMKgwqDCoMKgwqAgZ290byBvdXRfZXJybm87Cj4+IC3CoMKgwqAgcmV0dXJuIHNp
emU7Cj4+IC3CoMKgwqAgb3V0X2Vycm5vOgo+PiAtwqDCoMKgIGVycm5vID0gZXJyb3I7Cj4+IC3C
oMKgwqAgcmV0dXJuIC0xOwo+PiArwqDCoMKgIHJldHVybiBzaXplOwo+PiArwqDCoMKgIG91dF9l
cnJubzoKPj4gK8KgwqDCoCBlcnJubyA9IGVycm9yOwo+PiArwqDCoMKgIHJldHVybiAtMTsKPj4g
wqAgfQo+PiDCoCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19mYWxsb2NhdGUsICIlZCAlZCAweCV4IDB4
JXgiLCBpbnQsIGludCwgbG9mZl90LCAKPj4gbG9mZl90KTsKPj4gQEAgLTE3NjQsMjYgKzE3NjQs
MjYgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZmFsbG9jYXRlX2VyciwgIiVkIiwgaW50KTsKPj4g
wqAgaW50IGZhbGxvY2F0ZShpbnQgZmQsIGludCBtb2RlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3Qg
bGVuKQo+PiDCoCB7Cj4+IC3CoMKgwqAgc3RydWN0IGZpbGUgKmZwOwo+PiAtwqDCoMKgIGludCBl
cnJvcjsKPj4gK8KgwqDCoCBzdHJ1Y3QgZmlsZSAqZnA7Cj4+ICvCoMKgwqAgaW50IGVycm9yOwo+
PiAtwqDCoMKgIHRyYWNlX3Zmc19mYWxsb2NhdGUoZmQsIG1vZGUsIG9mZnNldCwgbGVuKTsKPj4g
LcKgwqDCoCBlcnJvciA9IGZnZXQoZmQsICZmcCk7Cj4+IC3CoMKgwqAgaWYgKGVycm9yKQo+PiAt
wqDCoMKgwqDCoMKgwqAgZ290byBvdXRfZXJybm87Cj4+ICvCoMKgwqAgdHJhY2VfdmZzX2ZhbGxv
Y2F0ZShmZCwgbW9kZSwgb2Zmc2V0LCBsZW4pOwo+PiArwqDCoMKgIGVycm9yID0gZmdldChmZCwg
JmZwKTsKPj4gK8KgwqDCoCBpZiAoZXJyb3IpCj4+ICvCoMKgwqDCoMKgwqDCoCBnb3RvIG91dF9l
cnJubzsKPj4gLcKgwqDCoCBlcnJvciA9IHN5c19mYWxsb2NhdGUoZnAsIG1vZGUsIG9mZnNldCwg
bGVuKTsKPj4gLcKgwqDCoCBmZHJvcChmcCk7Cj4+ICvCoMKgwqAgZXJyb3IgPSBzeXNfZmFsbG9j
YXRlKGZwLCBtb2RlLCBvZmZzZXQsIGxlbik7Cj4+ICvCoMKgwqAgZmRyb3AoZnApOwo+PiAtwqDC
oMKgIGlmIChlcnJvcikKPj4gLcKgwqDCoMKgwqDCoMKgIGdvdG8gb3V0X2Vycm5vOwo+PiAtwqDC
oMKgIHRyYWNlX3Zmc19mYWxsb2NhdGVfcmV0KCk7Cj4+IC3CoMKgwqAgcmV0dXJuIDA7Cj4+ICvC
oMKgwqAgaWYgKGVycm9yKQo+PiArwqDCoMKgwqDCoMKgwqAgZ290byBvdXRfZXJybm87Cj4+ICvC
oMKgwqAgdHJhY2VfdmZzX2ZhbGxvY2F0ZV9yZXQoKTsKPj4gK8KgwqDCoCByZXR1cm4gMDsKPj4g
LcKgwqDCoCBvdXRfZXJybm86Cj4+IC3CoMKgwqAgdHJhY2VfdmZzX2ZhbGxvY2F0ZV9lcnIoZXJy
b3IpOwo+PiAtwqDCoMKgIGVycm5vID0gZXJyb3I7Cj4+IC3CoMKgwqAgcmV0dXJuIC0xOwo+PiAr
wqDCoMKgIG91dF9lcnJubzoKPj4gK8KgwqDCoCB0cmFjZV92ZnNfZmFsbG9jYXRlX2VycihlcnJv
cik7Cj4+ICvCoMKgwqAgZXJybm8gPSBlcnJvcjsKPj4gK8KgwqDCoCByZXR1cm4gLTE7Cj4+IMKg
IH0KPj4gwqAgTEZTNjQoZmFsbG9jYXRlKTsKPj4gQEAgLTE3OTQsNjAgKzE3OTQsNjAgQEAgVFJB
Q0VQT0lOVCh0cmFjZV92ZnNfdXRpbWVzX2VyciwgIiVkIiwgaW50KTsKPj4gwqAgaW50IGZ1dGlt
ZXMoaW50IGZkLCBjb25zdCBzdHJ1Y3QgdGltZXZhbCB0aW1lc1syXSkKPj4gwqAgewo+PiAtwqDC
oMKgIHJldHVybiBmdXRpbWVzYXQoZmQsIG51bGxwdHIsIHRpbWVzKTsKPj4gK8KgwqDCoCByZXR1
cm4gZnV0aW1lc2F0KGZkLCBudWxscHRyLCB0aW1lcyk7Cj4+IMKgIH0KPj4gwqAgaW50IGZ1dGlt
ZXNhdChpbnQgZGlyZmQsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBjb25zdCBzdHJ1Y3QgdGltZXZh
bCAKPj4gdGltZXNbMl0pCj4+IMKgIHsKPj4gLcKgwqDCoCBzdHJ1Y3Qgc3RhdCBzdDsKPj4gLcKg
wqDCoCBzdHJ1Y3QgZmlsZSAqZnA7Cj4+IC3CoMKgwqAgaW50IGVycm9yOwo+PiAtwqDCoMKgIGNo
YXIgKmFic29sdXRlX3BhdGg7Cj4+IC0KPj4gLcKgwqDCoCBpZiAoKHBhdGhuYW1lICYmIHBhdGhu
YW1lWzBdID09ICcvJykgfHwgZGlyZmQgPT0gQVRfRkRDV0QpCj4+IC3CoMKgwqDCoMKgwqDCoCBy
ZXR1cm4gdXRpbWVzKHBhdGhuYW1lLCB0aW1lcyk7Cj4+IC0KPj4gLcKgwqDCoCAvLyBOb3RlOiBp
ZiBwYXRobmFtZSA9PSBudWxscHRyLCBmdXRpbWVzYXQgb3BlcmF0ZXMgb24gZGlyZmQgCj4+IGl0
c2VsZiwgYW5kIGluCj4+IC3CoMKgwqAgLy8gdGhhdCBjYXNlIGl0IGRvZXNuJ3QgaGF2ZSB0byBi
ZSBhIGRpcmVjdG9yeS4KPj4gLcKgwqDCoCBpZiAocGF0aG5hbWUpIHsKPj4gLcKgwqDCoMKgwqDC
oMKgIGVycm9yID0gZnN0YXQoZGlyZmQsICZzdCk7Cj4+IC3CoMKgwqDCoMKgwqDCoCBpZiAoZXJy
b3IpIHsKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZXJyb3IgPSBlcnJubzsKPj4gLcKgwqDC
oMKgwqDCoMKgwqDCoMKgwqAgZ290byBvdXRfZXJybm87Cj4+IC3CoMKgwqDCoMKgwqDCoCB9Cj4+
IC0KPj4gLcKgwqDCoMKgwqDCoMKgIGlmICghU19JU0RJUihzdC5zdF9tb2RlKSl7Cj4+IC3CoMKg
wqDCoMKgwqDCoMKgwqDCoMKgIGVycm9yID0gRU5PVERJUjsKPj4gLcKgwqDCoMKgwqDCoMKgwqDC
oMKgwqAgZ290byBvdXRfZXJybm87Cj4+IC3CoMKgwqDCoMKgwqDCoCB9Cj4+IC3CoMKgwqAgfQo+
PiArwqDCoMKgIHN0cnVjdCBzdGF0IHN0Owo+PiArwqDCoMKgIHN0cnVjdCBmaWxlICpmcDsKPj4g
K8KgwqDCoCBpbnQgZXJyb3I7Cj4+ICvCoMKgwqAgY2hhciAqYWJzb2x1dGVfcGF0aDsKPj4gKwo+
PiArwqDCoMKgIGlmICgocGF0aG5hbWUgJiYgcGF0aG5hbWVbMF0gPT0gJy8nKSB8fCBkaXJmZCA9
PSBBVF9GRENXRCkKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiB1dGltZXMocGF0aG5hbWUsIHRp
bWVzKTsKPj4gKwo+PiArwqDCoMKgIC8vIE5vdGU6IGlmIHBhdGhuYW1lID09IG51bGxwdHIsIGZ1
dGltZXNhdCBvcGVyYXRlcyBvbiBkaXJmZCAKPj4gaXRzZWxmLCBhbmQgaW4KPj4gK8KgwqDCoCAv
LyB0aGF0IGNhc2UgaXQgZG9lc24ndCBoYXZlIHRvIGJlIGEgZGlyZWN0b3J5Lgo+PiArwqDCoMKg
IGlmIChwYXRobmFtZSkgewo+PiArwqDCoMKgwqDCoMKgwqAgZXJyb3IgPSBmc3RhdChkaXJmZCwg
JnN0KTsKPj4gK8KgwqDCoMKgwqDCoMKgIGlmIChlcnJvcikgewo+PiArwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoCBlcnJvciA9IGVycm5vOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIG91
dF9lcnJubzsKPj4gK8KgwqDCoMKgwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgwqDCoMKgwqAgaWYg
KCFTX0lTRElSKHN0LnN0X21vZGUpKXsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZXJyb3Ig
PSBFTk9URElSOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIG91dF9lcnJubzsKPj4g
K8KgwqDCoMKgwqDCoMKgIH0KPj4gK8KgwqDCoCB9Cj4+IC3CoMKgwqAgZXJyb3IgPSBmZ2V0KGRp
cmZkLCAmZnApOwo+PiAtwqDCoMKgIGlmIChlcnJvcikKPj4gLcKgwqDCoMKgwqDCoMKgIGdvdG8g
b3V0X2Vycm5vOwo+PiArwqDCoMKgIGVycm9yID0gZmdldChkaXJmZCwgJmZwKTsKPj4gK8KgwqDC
oCBpZiAoZXJyb3IpCj4+ICvCoMKgwqDCoMKgwqDCoCBnb3RvIG91dF9lcnJubzsKPj4gLcKgwqDC
oCAvKiBidWlsZCBhYnNvbHV0ZSBwYXRoICovCj4+IC3CoMKgwqAgYWJzb2x1dGVfcGF0aCA9IChj
aGFyKiltYWxsb2MoUEFUSF9NQVgpOwo+PiAtwqDCoMKgIHN0cmxjcHkoYWJzb2x1dGVfcGF0aCwg
ZnAtPmZfZGVudHJ5LT5kX21vdW50LT5tX3BhdGgsIFBBVEhfTUFYKTsKPj4gLcKgwqDCoCBzdHJs
Y2F0KGFic29sdXRlX3BhdGgsIGZwLT5mX2RlbnRyeS0+ZF9wYXRoLCBQQVRIX01BWCk7Cj4+ICvC
oMKgwqAgLyogYnVpbGQgYWJzb2x1dGUgcGF0aCAqLwo+PiArwqDCoMKgIGFic29sdXRlX3BhdGgg
PSAoY2hhciopbWFsbG9jKFBBVEhfTUFYKTsKPj4gK8KgwqDCoCBzdHJsY3B5KGFic29sdXRlX3Bh
dGgsIGZwLT5mX2RlbnRyeS0+ZF9tb3VudC0+bV9wYXRoLCBQQVRIX01BWCk7Cj4+ICvCoMKgwqAg
c3RybGNhdChhYnNvbHV0ZV9wYXRoLCBmcC0+Zl9kZW50cnktPmRfcGF0aCwgUEFUSF9NQVgpOwo+
PiAtwqDCoMKgIGlmIChwYXRobmFtZSkgewo+PiAtwqDCoMKgwqDCoMKgwqAgc3RybGNhdChhYnNv
bHV0ZV9wYXRoLCAiLyIsIFBBVEhfTUFYKTsKPj4gLcKgwqDCoMKgwqDCoMKgIHN0cmxjYXQoYWJz
b2x1dGVfcGF0aCwgcGF0aG5hbWUsIFBBVEhfTUFYKTsKPj4gLcKgwqDCoCB9Cj4+ICvCoMKgwqAg
aWYgKHBhdGhuYW1lKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBzdHJsY2F0KGFic29sdXRlX3BhdGgs
ICIvIiwgUEFUSF9NQVgpOwo+PiArwqDCoMKgwqDCoMKgwqAgc3RybGNhdChhYnNvbHV0ZV9wYXRo
LCBwYXRobmFtZSwgUEFUSF9NQVgpOwo+PiArwqDCoMKgIH0KPj4gLcKgwqDCoCBlcnJvciA9IHV0
aW1lcyhhYnNvbHV0ZV9wYXRoLCB0aW1lcyk7Cj4+IC3CoMKgwqAgZnJlZShhYnNvbHV0ZV9wYXRo
KTsKPj4gK8KgwqDCoCBlcnJvciA9IHV0aW1lcyhhYnNvbHV0ZV9wYXRoLCB0aW1lcyk7Cj4+ICvC
oMKgwqAgZnJlZShhYnNvbHV0ZV9wYXRoKTsKPj4gLcKgwqDCoCBmZHJvcChmcCk7Cj4+ICvCoMKg
wqAgZmRyb3AoZnApOwo+PiAtwqDCoMKgIGlmIChlcnJvcikKPj4gLcKgwqDCoMKgwqDCoMKgIGdv
dG8gb3V0X2Vycm5vOwo+PiAtwqDCoMKgIHJldHVybiAwOwo+PiArwqDCoMKgIGlmIChlcnJvcikK
Pj4gK8KgwqDCoMKgwqDCoMKgIGdvdG8gb3V0X2Vycm5vOwo+PiArwqDCoMKgIHJldHVybiAwOwo+
PiAtwqDCoMKgIG91dF9lcnJubzoKPj4gLcKgwqDCoCBlcnJubyA9IGVycm9yOwo+PiAtwqDCoMKg
IHJldHVybiAtMTsKPj4gK8KgwqDCoCBvdXRfZXJybm86Cj4+ICvCoMKgwqAgZXJybm8gPSBlcnJv
cjsKPj4gK8KgwqDCoCByZXR1cm4gLTE7Cj4+IMKgIH0KPj4gwqAgVFJBQ0VQT0lOVCh0cmFjZV92
ZnNfdXRpbWVuc2F0LCAiXCIlc1wiIiwgY29uc3QgY2hhciopOwo+PiBAQCAtMTg1NywxNyArMTg1
NywxNyBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc191dGltZW5zYXRfZXJyLCAiJWQiLCBpbnQpOwo+
PiDCoCBleHRlcm4gIkMiCj4+IMKgIGludCB1dGltZW5zYXQoaW50IGRpcmZkLCBjb25zdCBjaGFy
ICpwYXRobmFtZSwgY29uc3Qgc3RydWN0IHRpbWVzcGVjIAo+PiB0aW1lc1syXSwgaW50IGZsYWdz
KQo+PiDCoCB7Cj4+IC3CoMKgwqAgdHJhY2VfdmZzX3V0aW1lbnNhdChwYXRobmFtZSk7Cj4+ICvC
oMKgwqAgdHJhY2VfdmZzX3V0aW1lbnNhdChwYXRobmFtZSk7Cj4+IC3CoMKgwqAgYXV0byBlcnJv
ciA9IHN5c191dGltZW5zYXQoZGlyZmQsIHBhdGhuYW1lLCB0aW1lcywgZmxhZ3MpOwo+PiAtwqDC
oMKgIGlmIChlcnJvcikgewo+PiAtwqDCoMKgwqDCoMKgwqAgdHJhY2VfdmZzX3V0aW1lbnNhdF9l
cnIoZXJyb3IpOwo+PiAtwqDCoMKgwqDCoMKgwqAgZXJybm8gPSBlcnJvcjsKPj4gLcKgwqDCoMKg
wqDCoMKgIHJldHVybiAtMTsKPj4gLcKgwqDCoCB9Cj4+ICvCoMKgwqAgYXV0byBlcnJvciA9IHN5
c191dGltZW5zYXQoZGlyZmQsIHBhdGhuYW1lLCB0aW1lcywgZmxhZ3MpOwo+PiArwqDCoMKgIGlm
IChlcnJvcikgewo+PiArwqDCoMKgwqDCoMKgwqAgdHJhY2VfdmZzX3V0aW1lbnNhdF9lcnIoZXJy
b3IpOwo+PiArwqDCoMKgwqDCoMKgwqAgZXJybm8gPSBlcnJvcjsKPj4gK8KgwqDCoMKgwqDCoMKg
IHJldHVybiAtMTsKPj4gK8KgwqDCoCB9Cj4+IC3CoMKgwqAgdHJhY2VfdmZzX3V0aW1lbnNhdF9y
ZXQoKTsKPj4gLcKgwqDCoCByZXR1cm4gMDsKPj4gK8KgwqDCoCB0cmFjZV92ZnNfdXRpbWVuc2F0
X3JldCgpOwo+PiArwqDCoMKgIHJldHVybiAwOwo+PiDCoCB9Cj4+IMKgIFRSQUNFUE9JTlQodHJh
Y2VfdmZzX2Z1dGltZW5zLCAiJWQiLCBpbnQpOwo+PiBAQCAtMTg3Nyw3MyArMTg3Nyw3MyBAQCBU
UkFDRVBPSU5UKHRyYWNlX3Zmc19mdXRpbWVuc19lcnIsICIlZCIsIGludCk7Cj4+IMKgIGV4dGVy
biAiQyIKPj4gwqAgaW50IGZ1dGltZW5zKGludCBmZCwgY29uc3Qgc3RydWN0IHRpbWVzcGVjIHRp
bWVzWzJdKQo+PiDCoCB7Cj4+IC3CoMKgwqAgdHJhY2VfdmZzX2Z1dGltZW5zKGZkKTsKPj4gK8Kg
wqDCoCB0cmFjZV92ZnNfZnV0aW1lbnMoZmQpOwo+PiAtwqDCoMKgIGF1dG8gZXJyb3IgPSBzeXNf
ZnV0aW1lbnMoZmQsIHRpbWVzKTsKPj4gLcKgwqDCoCBpZiAoZXJyb3IpIHsKPj4gLcKgwqDCoMKg
wqDCoMKgIHRyYWNlX3Zmc19mdXRpbWVuc19lcnIoZXJyb3IpOwo+PiAtwqDCoMKgwqDCoMKgwqAg
ZXJybm8gPSBlcnJvcjsKPj4gLcKgwqDCoMKgwqDCoMKgIHJldHVybiAtMTsKPj4gLcKgwqDCoCB9
Cj4+ICvCoMKgwqAgYXV0byBlcnJvciA9IHN5c19mdXRpbWVucyhmZCwgdGltZXMpOwo+PiArwqDC
oMKgIGlmIChlcnJvcikgewo+PiArwqDCoMKgwqDCoMKgwqAgdHJhY2VfdmZzX2Z1dGltZW5zX2Vy
cihlcnJvcik7Cj4+ICvCoMKgwqDCoMKgwqDCoCBlcnJubyA9IGVycm9yOwo+PiArwqDCoMKgwqDC
oMKgwqAgcmV0dXJuIC0xOwo+PiArwqDCoMKgIH0KPj4gLcKgwqDCoCB0cmFjZV92ZnNfZnV0aW1l
bnNfcmV0KCk7Cj4+IC3CoMKgwqAgcmV0dXJuIDA7Cj4+ICvCoMKgwqAgdHJhY2VfdmZzX2Z1dGlt
ZW5zX3JldCgpOwo+PiArwqDCoMKgIHJldHVybiAwOwo+PiDCoCB9Cj4+IMKgIHN0YXRpYyBpbnQg
ZG9fdXRpbWVzKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBjb25zdCBzdHJ1Y3QgdGltZXZhbCAKPj4g
dGltZXNbMl0sIGludCBmbGFncykKPj4gwqAgewo+PiAtwqDCoMKgIHN0cnVjdCB0YXNrICp0ID0g
bWFpbl90YXNrOwo+PiAtwqDCoMKgIGNoYXIgcGF0aFtQQVRIX01BWF07Cj4+IC3CoMKgwqAgaW50
IGVycm9yOwo+PiArwqDCoMKgIHN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOwo+PiArwqDCoMKg
IGNoYXIgcGF0aFtQQVRIX01BWF07Cj4+ICvCoMKgwqAgaW50IGVycm9yOwo+PiAtwqDCoMKgIHRy
YWNlX3Zmc191dGltZXMocGF0aG5hbWUpOwo+PiArwqDCoMKgIHRyYWNlX3Zmc191dGltZXMocGF0
aG5hbWUpOwo+PiAtwqDCoMKgIGVycm9yID0gdGFza19jb252KHQsIHBhdGhuYW1lLCAwLCBwYXRo
KTsKPj4gLcKgwqDCoCBpZiAoZXJyb3IpIHsKPj4gLcKgwqDCoMKgwqDCoMKgIHRyYWNlX3Zmc191
dGltZXNfZXJyKGVycm9yKTsKPj4gLcKgwqDCoMKgwqDCoMKgIHJldHVybiBsaWJjX2Vycm9yKGVy
cm9yKTsKPj4gLcKgwqDCoCB9Cj4+ICvCoMKgwqAgZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5h
bWUsIDAsIHBhdGgpOwo+PiArwqDCoMKgIGlmIChlcnJvcikgewo+PiArwqDCoMKgwqDCoMKgwqAg
dHJhY2VfdmZzX3V0aW1lc19lcnIoZXJyb3IpOwo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIGxp
YmNfZXJyb3IoZXJyb3IpOwo+PiArwqDCoMKgIH0KPj4gLcKgwqDCoCBlcnJvciA9IHN5c191dGlt
ZXMocGF0aCwgdGltZXMsIGZsYWdzKTsKPj4gLcKgwqDCoCBpZiAoZXJyb3IpIHsKPj4gLcKgwqDC
oMKgwqDCoMKgIHRyYWNlX3Zmc191dGltZXNfZXJyKGVycm9yKTsKPj4gLcKgwqDCoMKgwqDCoMKg
IHJldHVybiBsaWJjX2Vycm9yKGVycm9yKTsKPj4gLcKgwqDCoCB9Cj4+ICvCoMKgwqAgZXJyb3Ig
PSBzeXNfdXRpbWVzKHBhdGgsIHRpbWVzLCBmbGFncyk7Cj4+ICvCoMKgwqAgaWYgKGVycm9yKSB7
Cj4+ICvCoMKgwqDCoMKgwqDCoCB0cmFjZV92ZnNfdXRpbWVzX2VycihlcnJvcik7Cj4+ICvCoMKg
wqDCoMKgwqDCoCByZXR1cm4gbGliY19lcnJvcihlcnJvcik7Cj4+ICvCoMKgwqAgfQo+PiAtwqDC
oMKgIHRyYWNlX3Zmc191dGltZXNfcmV0KCk7Cj4+IC3CoMKgwqAgcmV0dXJuIDA7Cj4+ICvCoMKg
wqAgdHJhY2VfdmZzX3V0aW1lc19yZXQoKTsKPj4gK8KgwqDCoCByZXR1cm4gMDsKPj4gwqAgfQo+
PiDCoCBleHRlcm4gIkMiCj4+IMKgIGludCB1dGltZXMoY29uc3QgY2hhciAqcGF0aG5hbWUsIGNv
bnN0IHN0cnVjdCB0aW1ldmFsIHRpbWVzWzJdKQo+PiDCoCB7Cj4+IC3CoMKgwqAgcmV0dXJuIGRv
X3V0aW1lcyhwYXRobmFtZSwgdGltZXMsIDApOwo+PiArwqDCoMKgIHJldHVybiBkb191dGltZXMo
cGF0aG5hbWUsIHRpbWVzLCAwKTsKPj4gwqAgfQo+PiDCoCBleHRlcm4gIkMiCj4+IMKgIGludCBs
dXRpbWVzKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBjb25zdCBzdHJ1Y3QgdGltZXZhbCB0aW1lc1sy
XSkKPj4gwqAgewo+PiAtwqDCoMKgIHJldHVybiBkb191dGltZXMocGF0aG5hbWUsIHRpbWVzLCBB
VF9TWU1MSU5LX05PRk9MTE9XKTsKPj4gK8KgwqDCoCByZXR1cm4gZG9fdXRpbWVzKHBhdGhuYW1l
LCB0aW1lcywgQVRfU1lNTElOS19OT0ZPTExPVyk7Cj4+IMKgIH0KPj4gwqAgZXh0ZXJuICJDIgo+
PiDCoCBpbnQgdXRpbWUoY29uc3QgY2hhciAqcGF0aG5hbWUsIGNvbnN0IHN0cnVjdCB1dGltYnVm
ICp0KQo+PiDCoCB7Cj4+IC3CoMKgwqAgdXNpbmcgbmFtZXNwYWNlIHN0ZDo6Y2hyb25vOwo+PiAt
Cj4+IC3CoMKgwqAgc3RydWN0IHRpbWV2YWwgdGltZXNbMl07Cj4+IC3CoMKgwqAgdGltZXNbMF0u
dHZfdXNlYyA9IDA7Cj4+IC3CoMKgwqAgdGltZXNbMV0udHZfdXNlYyA9IDA7Cj4+IC3CoMKgwqAg
aWYgKCF0KSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCBsb25nIGludCB0c2VjID0gCj4+IGR1cmF0aW9u
X2Nhc3Q8c2Vjb25kcz4ob3N2OjpjbG9jazo6d2FsbDo6bm93KCkudGltZV9zaW5jZV9lcG9jaCgp
KS5jb3VudCgpOyAKPj4KPj4gLcKgwqDCoMKgwqDCoMKgIHRpbWVzWzBdLnR2X3NlYyA9IHRzZWM7
Cj4+IC3CoMKgwqDCoMKgwqDCoCB0aW1lc1sxXS50dl9zZWMgPSB0c2VjOwo+PiAtwqDCoMKgIH0g
ZWxzZSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCB0aW1lc1swXS50dl9zZWMgPSB0LT5hY3RpbWU7Cj4+
IC3CoMKgwqDCoMKgwqDCoCB0aW1lc1sxXS50dl9zZWMgPSB0LT5tb2R0aW1lOwo+PiAtwqDCoMKg
IH0KPj4gK8KgwqDCoCB1c2luZyBuYW1lc3BhY2Ugc3RkOjpjaHJvbm87Cj4+ICsKPj4gK8KgwqDC
oCBzdHJ1Y3QgdGltZXZhbCB0aW1lc1syXTsKPj4gK8KgwqDCoCB0aW1lc1swXS50dl91c2VjID0g
MDsKPj4gK8KgwqDCoCB0aW1lc1sxXS50dl91c2VjID0gMDsKPj4gK8KgwqDCoCBpZiAoIXQpIHsK
Pj4gK8KgwqDCoMKgwqDCoMKgIGxvbmcgaW50IHRzZWMgPSAKPj4gZHVyYXRpb25fY2FzdDxzZWNv
bmRzPihvc3Y6OmNsb2NrOjp3YWxsOjpub3coKS50aW1lX3NpbmNlX2Vwb2NoKCkpLmNvdW50KCk7
IAo+Pgo+PiArwqDCoMKgwqDCoMKgwqAgdGltZXNbMF0udHZfc2VjID0gdHNlYzsKPj4gK8KgwqDC
oMKgwqDCoMKgIHRpbWVzWzFdLnR2X3NlYyA9IHRzZWM7Cj4+ICvCoMKgwqAgfSBlbHNlIHsKPj4g
K8KgwqDCoMKgwqDCoMKgIHRpbWVzWzBdLnR2X3NlYyA9IHQtPmFjdGltZTsKPj4gK8KgwqDCoMKg
wqDCoMKgIHRpbWVzWzFdLnR2X3NlYyA9IHQtPm1vZHRpbWU7Cj4+ICvCoMKgwqAgfQo+PiAtwqDC
oMKgIHJldHVybiB1dGltZXMocGF0aG5hbWUsIHRpbWVzKTsKPj4gK8KgwqDCoCByZXR1cm4gdXRp
bWVzKHBhdGhuYW1lLCB0aW1lcyk7Cj4+IMKgIH0KPj4gwqAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNf
Y2htb2QsICJcIiVzXCIgMCUwbyIsIGNvbnN0IGNoYXIqLCBtb2RlX3QpOwo+PiBAQCAtMTk1Miwy
MyArMTk1MiwyMyBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19jaG1vZF9lcnIsICIlZCIsIGludCk7
Cj4+IMKgIGludCBjaG1vZChjb25zdCBjaGFyICpwYXRobmFtZSwgbW9kZV90IG1vZGUpCj4+IMKg
IHsKPj4gLcKgwqDCoCB0cmFjZV92ZnNfY2htb2QocGF0aG5hbWUsIG1vZGUpOwo+PiAtwqDCoMKg
IHN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOwo+PiAtwqDCoMKgIGNoYXIgcGF0aFtQQVRIX01B
WF07Cj4+IC3CoMKgwqAgaW50IGVycm9yID0gRU5PRU5UOwo+PiAtwqDCoMKgIGlmIChwYXRobmFt
ZSA9PSBudWxscHRyKQo+PiAtwqDCoMKgwqDCoMKgwqAgZ290byBvdXRfZXJybm87Cj4+IC3CoMKg
wqAgaWYgKChlcnJvciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwgVldSSVRFLCBwYXRoKSkgIT0g
MCkKPj4gLcKgwqDCoMKgwqDCoMKgIGdvdG8gb3V0X2Vycm5vOwo+PiAtwqDCoMKgIGVycm9yID0g
c3lzX2NobW9kKHBhdGgsIG1vZGUgJiBBTExQRVJNUyk7Cj4+IC3CoMKgwqAgaWYgKGVycm9yKQo+
PiAtwqDCoMKgwqDCoMKgwqAgZ290byBvdXRfZXJybm87Cj4+IC3CoMKgwqAgdHJhY2VfdmZzX2No
bW9kX3JldCgpOwo+PiAtwqDCoMKgIHJldHVybiAwOwo+PiArwqDCoMKgIHRyYWNlX3Zmc19jaG1v
ZChwYXRobmFtZSwgbW9kZSk7Cj4+ICvCoMKgwqAgc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7
Cj4+ICvCoMKgwqAgY2hhciBwYXRoW1BBVEhfTUFYXTsKPj4gK8KgwqDCoCBpbnQgZXJyb3IgPSBF
Tk9FTlQ7Cj4+ICvCoMKgwqAgaWYgKHBhdGhuYW1lID09IG51bGxwdHIpCj4+ICvCoMKgwqDCoMKg
wqDCoCBnb3RvIG91dF9lcnJubzsKPj4gK8KgwqDCoCBpZiAoKGVycm9yID0gdGFza19jb252KHQs
IHBhdGhuYW1lLCBWV1JJVEUsIHBhdGgpKSAhPSAwKQo+PiArwqDCoMKgwqDCoMKgwqAgZ290byBv
dXRfZXJybm87Cj4+ICvCoMKgwqAgZXJyb3IgPSBzeXNfY2htb2QocGF0aCwgbW9kZSAmIEFMTFBF
Uk1TKTsKPj4gK8KgwqDCoCBpZiAoZXJyb3IpCj4+ICvCoMKgwqDCoMKgwqDCoCBnb3RvIG91dF9l
cnJubzsKPj4gK8KgwqDCoCB0cmFjZV92ZnNfY2htb2RfcmV0KCk7Cj4+ICvCoMKgwqAgcmV0dXJu
IDA7Cj4+IMKgIG91dF9lcnJubzoKPj4gLcKgwqDCoCB0cmFjZV92ZnNfY2htb2RfZXJyKGVycm9y
KTsKPj4gLcKgwqDCoCBlcnJubyA9IGVycm9yOwo+PiAtwqDCoMKgIHJldHVybiAtMTsKPj4gK8Kg
wqDCoCB0cmFjZV92ZnNfY2htb2RfZXJyKGVycm9yKTsKPj4gK8KgwqDCoCBlcnJubyA9IGVycm9y
Owo+PiArwqDCoMKgIHJldHVybiAtMTsKPj4gwqAgfQo+PiDCoCBUUkFDRVBPSU5UKHRyYWNlX3Zm
c19mY2htb2QsICJcIiVkXCIgMCUwbyIsIGludCwgbW9kZV90KTsKPj4gQEAgLTE5NzYsMTUgKzE5
NzYsMTUgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZmNobW9kX3JldCwgIiIpOwo+PiDCoCBpbnQg
ZmNobW9kKGludCBmZCwgbW9kZV90IG1vZGUpCj4+IMKgIHsKPj4gLcKgwqDCoCB0cmFjZV92ZnNf
ZmNobW9kKGZkLCBtb2RlKTsKPj4gLcKgwqDCoCBhdXRvIGVycm9yID0gc3lzX2ZjaG1vZChmZCwg
bW9kZSAmIEFMTFBFUk1TKTsKPj4gLcKgwqDCoCB0cmFjZV92ZnNfZmNobW9kX3JldCgpOwo+PiAt
wqDCoMKgIGlmIChlcnJvcikgewo+PiAtwqDCoMKgwqDCoMKgwqAgZXJybm8gPSBlcnJvcjsKPj4g
LcKgwqDCoMKgwqDCoMKgIHJldHVybiAtMTsKPj4gLcKgwqDCoCB9IGVsc2Ugewo+PiAtwqDCoMKg
wqDCoMKgwqAgcmV0dXJuIDA7Cj4+IC3CoMKgwqAgfQo+PiArwqDCoMKgIHRyYWNlX3Zmc19mY2ht
b2QoZmQsIG1vZGUpOwo+PiArwqDCoMKgIGF1dG8gZXJyb3IgPSBzeXNfZmNobW9kKGZkLCBtb2Rl
ICYgQUxMUEVSTVMpOwo+PiArwqDCoMKgIHRyYWNlX3Zmc19mY2htb2RfcmV0KCk7Cj4+ICvCoMKg
wqAgaWYgKGVycm9yKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBlcnJubyA9IGVycm9yOwo+PiArwqDC
oMKgwqDCoMKgwqAgcmV0dXJuIC0xOwo+PiArwqDCoMKgIH0gZWxzZSB7Cj4+ICvCoMKgwqDCoMKg
wqDCoCByZXR1cm4gMDsKPj4gK8KgwqDCoCB9Cj4+IMKgIH0KPj4gwqAgVFJBQ0VQT0lOVCh0cmFj
ZV92ZnNfZmNob3duLCAiXCIlZFwiICVkICVkIiwgaW50LCB1aWRfdCwgZ2lkX3QpOwo+PiBAQCAt
MTk5MiwxMDEgKzE5OTIsMTAxIEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2ZjaG93bl9yZXQsICIi
KTsKPj4gwqAgaW50IGZjaG93bihpbnQgZmQsIHVpZF90IG93bmVyLCBnaWRfdCBncm91cCkKPj4g
wqAgewo+PiAtwqDCoMKgIHRyYWNlX3Zmc19mY2hvd24oZmQsIG93bmVyLCBncm91cCk7Cj4+IC3C
oMKgwqAgV0FSTl9TVFVCQkVEKCk7Cj4+IC3CoMKgwqAgdHJhY2VfdmZzX2ZjaG93bl9yZXQoKTsK
Pj4gLcKgwqDCoCByZXR1cm4gMDsKPj4gK8KgwqDCoCB0cmFjZV92ZnNfZmNob3duKGZkLCBvd25l
ciwgZ3JvdXApOwo+PiArwqDCoMKgIFdBUk5fU1RVQkJFRCgpOwo+PiArwqDCoMKgIHRyYWNlX3Zm
c19mY2hvd25fcmV0KCk7Cj4+ICvCoMKgwqAgcmV0dXJuIDA7Cj4+IMKgIH0KPj4gwqAgaW50IGNo
b3duKGNvbnN0IGNoYXIgKnBhdGgsIHVpZF90IG93bmVyLCBnaWRfdCBncm91cCkKPj4gwqAgewo+
PiAtwqDCoMKgIFdBUk5fU1RVQkJFRCgpOwo+PiAtwqDCoMKgIHJldHVybiAwOwo+PiArwqDCoMKg
IFdBUk5fU1RVQkJFRCgpOwo+PiArwqDCoMKgIHJldHVybiAwOwo+PiDCoCB9Cj4+IMKgIGludCBs
Y2hvd24oY29uc3QgY2hhciAqcGF0aCwgdWlkX3Qgb3duZXIsIGdpZF90IGdyb3VwKQo+PiDCoCB7
Cj4+IC3CoMKgwqAgV0FSTl9TVFVCQkVEKCk7Cj4+IC3CoMKgwqAgcmV0dXJuIDA7Cj4+ICvCoMKg
wqAgV0FSTl9TVFVCQkVEKCk7Cj4+ICvCoMKgwqAgcmV0dXJuIDA7Cj4+IMKgIH0KPj4gwqAgc3Np
emVfdCBzZW5kZmlsZShpbnQgb3V0X2ZkLCBpbnQgaW5fZmQsIG9mZl90ICpfb2Zmc2V0LCBzaXpl
X3QgY291bnQpCj4+IMKgIHsKPj4gLcKgwqDCoCBzdHJ1Y3QgZmlsZSAqaW5fZnA7Cj4+IC3CoMKg
wqAgc3RydWN0IGZpbGUgKm91dF9mcDsKPj4gLcKgwqDCoCBmaWxlcmVmIGluX2Z7ZmlsZXJlZl9m
cm9tX2ZkKGluX2ZkKX07Cj4+IC3CoMKgwqAgZmlsZXJlZiBvdXRfZntmaWxlcmVmX2Zyb21fZmQo
b3V0X2ZkKX07Cj4+ICvCoMKgwqAgc3RydWN0IGZpbGUgKmluX2ZwOwo+PiArwqDCoMKgIHN0cnVj
dCBmaWxlICpvdXRfZnA7Cj4+ICvCoMKgwqAgZmlsZXJlZiBpbl9me2ZpbGVyZWZfZnJvbV9mZChp
bl9mZCl9Owo+PiArwqDCoMKgIGZpbGVyZWYgb3V0X2Z7ZmlsZXJlZl9mcm9tX2ZkKG91dF9mZCl9
Owo+PiAtwqDCoMKgIGlmICghaW5fZiB8fCAhb3V0X2YpIHsKPj4gLcKgwqDCoMKgwqDCoMKgIHJl
dHVybiBsaWJjX2Vycm9yKEVCQURGKTsKPj4gLcKgwqDCoCB9Cj4+ICvCoMKgwqAgaWYgKCFpbl9m
IHx8ICFvdXRfZikgewo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIGxpYmNfZXJyb3IoRUJBREYp
Owo+PiArwqDCoMKgIH0KPj4gLcKgwqDCoCBpbl9mcCA9IGluX2YuZ2V0KCk7Cj4+IC3CoMKgwqAg
b3V0X2ZwID0gb3V0X2YuZ2V0KCk7Cj4+ICvCoMKgwqAgaW5fZnAgPSBpbl9mLmdldCgpOwo+PiAr
wqDCoMKgIG91dF9mcCA9IG91dF9mLmdldCgpOwo+PiAtwqDCoMKgIGlmICghaW5fZnAtPmZfZGVu
dHJ5KSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCByZXR1cm4gbGliY19lcnJvcihFQkFERik7Cj4+IC3C
oMKgwqAgfQo+PiArwqDCoMKgIGlmICghaW5fZnAtPmZfZGVudHJ5KSB7Cj4+ICvCoMKgwqDCoMKg
wqDCoCByZXR1cm4gbGliY19lcnJvcihFQkFERik7Cj4+ICvCoMKgwqAgfQo+PiAtwqDCoMKgIGlm
ICghKGluX2ZwLT5mX2ZsYWdzICYgRlJFQUQpKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCByZXR1cm4g
bGliY19lcnJvcihFQkFERik7Cj4+IC3CoMKgwqAgfQo+PiArwqDCoMKgIGlmICghKGluX2ZwLT5m
X2ZsYWdzICYgRlJFQUQpKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gbGliY19lcnJvcihF
QkFERik7Cj4+ICvCoMKgwqAgfQo+PiAtwqDCoMKgIGlmIChvdXRfZnAtPmZfdHlwZSAmIERUWVBF
X1ZOT0RFKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCBpZiAoIW91dF9mcC0+Zl9kZW50cnkpIHsKPj4g
LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIGxpYmNfZXJyb3IoRUJBREYpOwo+PiArwqDC
oMKgIGlmIChvdXRfZnAtPmZfdHlwZSAmIERUWVBFX1ZOT0RFKSB7Cj4+ICvCoMKgwqDCoMKgwqDC
oCBpZiAoIW91dF9mcC0+Zl9kZW50cnkpIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0
dXJuIGxpYmNfZXJyb3IoRUJBREYpOwo+PiDCoMKgwqDCoMKgIH0gZWxzZSBpZiAoIShvdXRfZnAt
PmZfZmxhZ3MgJiBGV1JJVEUpKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBs
aWJjX2Vycm9yKEVCQURGKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIGxpYmNf
ZXJyb3IoRUJBREYpOwo+PiArwqDCoMKgIH0KPj4gwqDCoMKgwqDCoCB9Cj4+IC3CoMKgwqAgfQo+
PiAtwqDCoMKgIG9mZl90IG9mZnNldCA7Cj4+ICvCoMKgwqAgb2ZmX3Qgb2Zmc2V0IDsKPj4gLcKg
wqDCoCBpZiAoX29mZnNldCAhPSBudWxscHRyKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCBvZmZzZXQg
PSAqX29mZnNldDsKPj4gLcKgwqDCoCB9IGVsc2Ugewo+PiAtwqDCoMKgwqDCoMKgwqAgLyogaWYg
X29mZnNldCBpcyBudWxscHRyLCB3ZSBuZWVkIHRvIHJlYWQgZnJvbSB0aGUgcHJlc2VudCAKPj4g
cG9zaXRpb24gb2YgaW5fZmQgKi8KPj4gLcKgwqDCoMKgwqDCoMKgIG9mZnNldCA9IGxzZWVrKGlu
X2ZkLCAwLCBTRUVLX0NVUik7Cj4+IC3CoMKgwqAgfQo+PiArwqDCoMKgIGlmIChfb2Zmc2V0ICE9
IG51bGxwdHIpIHsKPj4gK8KgwqDCoMKgwqDCoMKgIG9mZnNldCA9ICpfb2Zmc2V0Owo+PiArwqDC
oMKgIH0gZWxzZSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCAvKiBpZiBfb2Zmc2V0IGlzIG51bGxwdHIs
IHdlIG5lZWQgdG8gcmVhZCBmcm9tIHRoZSBwcmVzZW50IAo+PiBwb3NpdGlvbiBvZiBpbl9mZCAq
Lwo+PiArwqDCoMKgwqDCoMKgwqAgb2Zmc2V0ID0gbHNlZWsoaW5fZmQsIDAsIFNFRUtfQ1VSKTsK
Pj4gK8KgwqDCoCB9Cj4+IC3CoMKgwqAgLy8gQ29uc3RyYWluIGNvdW50IHRvIHRoZSBleHRlbnQg
b2YgdGhlIGZpbGUuLi4KPj4gLcKgwqDCoCBzdHJ1Y3Qgc3RhdCBzdDsKPj4gLcKgwqDCoCBpZiAo
ZnN0YXQoaW5fZmQsICZzdCkgPCAwKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCByZXR1cm4gLTE7Cj4+
IC3CoMKgwqAgfSBlbHNlIHsKPj4gLcKgwqDCoMKgwqDCoMKgIGlmIChvZmZzZXQgPj0gc3Quc3Rf
c2l6ZSkgewo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gMDsKPj4gLcKgwqDCoMKg
wqDCoMKgIH0gZWxzZSBpZiAoKG9mZnNldCArIGNvdW50KSA+PSBzdC5zdF9zaXplKSB7Cj4+IC3C
oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvdW50ID0gc3Quc3Rfc2l6ZSAtIG9mZnNldDsKPj4gLcKg
wqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGNvdW50ID09IDApIHsKPj4gLcKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gMDsKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+
PiAtwqDCoMKgwqDCoMKgwqAgfQo+PiAtwqDCoMKgIH0KPj4gK8KgwqDCoCAvLyBDb25zdHJhaW4g
Y291bnQgdG8gdGhlIGV4dGVudCBvZiB0aGUgZmlsZS4uLgo+PiArwqDCoMKgIHN0cnVjdCBzdGF0
IHN0Owo+PiArwqDCoMKgIGlmIChmc3RhdChpbl9mZCwgJnN0KSA8IDApIHsKPj4gK8KgwqDCoMKg
wqDCoMKgIHJldHVybiAtMTsKPj4gK8KgwqDCoCB9IGVsc2Ugewo+PiArwqDCoMKgwqDCoMKgwqAg
aWYgKG9mZnNldCA+PSBzdC5zdF9zaXplKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJl
dHVybiAwOwo+PiArwqDCoMKgwqDCoMKgwqAgfSBlbHNlIGlmICgob2Zmc2V0ICsgY291bnQpID49
IHN0LnN0X3NpemUpIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY291bnQgPSBzdC5zdF9z
aXplIC0gb2Zmc2V0Owo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoY291bnQgPT0gMCkg
ewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAwOwo+PiArwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoCB9Cj4+ICvCoMKgwqDCoMKgwqDCoCB9Cj4+ICvCoMKgwqAgfQo+PiAt
wqDCoMKgIHNpemVfdCBieXRlc190b19tbWFwID0gY291bnQgKyAob2Zmc2V0ICUgbW11OjpwYWdl
X3NpemUpOwo+PiAtwqDCoMKgIG9mZl90IG9mZnNldF9mb3JfbW1hcCA9wqAgYWxpZ25fZG93bihv
ZmZzZXQsIChvZmZfdCltbXU6OnBhZ2Vfc2l6ZSk7Cj4+ICvCoMKgwqAgc2l6ZV90IGJ5dGVzX3Rv
X21tYXAgPSBjb3VudCArIChvZmZzZXQgJSBtbXU6OnBhZ2Vfc2l6ZSk7Cj4+ICvCoMKgwqAgb2Zm
X3Qgb2Zmc2V0X2Zvcl9tbWFwID3CoCBhbGlnbl9kb3duKG9mZnNldCwgKG9mZl90KW1tdTo6cGFn
ZV9zaXplKTsKPj4gLcKgwqDCoCBjaGFyICpzcmMgPSBzdGF0aWNfY2FzdDxjaGFyICo+KG1tYXAo
bnVsbHB0ciwgYnl0ZXNfdG9fbW1hcCwgCj4+IFBST1RfUkVBRCwgTUFQX1NIQVJFRCwgaW5fZmQs
IG9mZnNldF9mb3JfbW1hcCkpOwo+PiArwqDCoMKgIGNoYXIgKnNyYyA9IHN0YXRpY19jYXN0PGNo
YXIgKj4obW1hcChudWxscHRyLCBieXRlc190b19tbWFwLCAKPj4gUFJPVF9SRUFELCBNQVBfU0hB
UkVELCBpbl9mZCwgb2Zmc2V0X2Zvcl9tbWFwKSk7Cj4+IC3CoMKgwqAgaWYgKHNyYyA9PSBNQVBf
RkFJTEVEKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCByZXR1cm4gLTE7Cj4+IC3CoMKgwqAgfQo+PiAr
wqDCoMKgIGlmIChzcmMgPT0gTUFQX0ZBSUxFRCkgewo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJu
IC0xOwo+PiArwqDCoMKgIH0KPj4gLcKgwqDCoCBhdXRvIHJldCA9IHdyaXRlKG91dF9mZCwgc3Jj
ICsgKG9mZnNldCAlIFBBR0VTSVpFKSwgY291bnQpOwo+PiArwqDCoMKgIGF1dG8gcmV0ID0gd3Jp
dGUob3V0X2ZkLCBzcmMgKyAob2Zmc2V0ICUgUEFHRVNJWkUpLCBjb3VudCk7Cj4+IC3CoMKgwqAg
aWYgKHJldCA8IDApIHsKPj4gLcKgwqDCoMKgwqDCoMKgIHJldHVybiBsaWJjX2Vycm9yKGVycm5v
KTsKPj4gLcKgwqDCoCB9IGVsc2UgaWYoX29mZnNldCA9PSBudWxscHRyKSB7Cj4+IC3CoMKgwqDC
oMKgwqDCoCBsc2Vlayhpbl9mZCwgcmV0LCBTRUVLX0NVUik7Cj4+IC3CoMKgwqAgfSBlbHNlIHsK
Pj4gLcKgwqDCoMKgwqDCoMKgICpfb2Zmc2V0ICs9IHJldDsKPj4gLcKgwqDCoCB9Cj4+ICvCoMKg
wqAgaWYgKHJldCA8IDApIHsKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBsaWJjX2Vycm9yKGVy
cm5vKTsKPj4gK8KgwqDCoCB9IGVsc2UgaWYoX29mZnNldCA9PSBudWxscHRyKSB7Cj4+ICvCoMKg
wqDCoMKgwqDCoCBsc2Vlayhpbl9mZCwgcmV0LCBTRUVLX0NVUik7Cj4+ICvCoMKgwqAgfSBlbHNl
IHsKPj4gK8KgwqDCoMKgwqDCoMKgICpfb2Zmc2V0ICs9IHJldDsKPj4gK8KgwqDCoCB9Cj4+IC3C
oMKgwqAgYXNzZXJ0KG11bm1hcChzcmMsIGNvdW50KSA9PSAwKTsKPj4gK8KgwqDCoCBhc3NlcnQo
bXVubWFwKHNyYywgY291bnQpID09IDApOwo+PiAtwqDCoMKgIHJldHVybiByZXQ7Cj4+ICvCoMKg
wqAgcmV0dXJuIHJldDsKPj4gwqAgfQo+PiDCoCAjdW5kZWYgc2VuZGZpbGU2NAo+PiBAQCAtMjA5
NiwyMCArMjA5NiwyMCBAQCBOT19TWVMoaW50IGZjaG1vZGF0KGludCBkaXJmZCwgY29uc3QgY2hh
ciAKPj4gKnBhdGhuYW1lLCBtb2RlX3QgbW9kZSwgaW50IGZsYWdzKSk7Cj4+IMKgIG1vZGVfdCB1
bWFzayhtb2RlX3QgbmV3bWFzaykKPj4gwqAgewo+PiAtwqDCoMKgIHJldHVybiBnbG9iYWxfdW1h
c2suZXhjaGFuZ2UobmV3bWFzaywgc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7Cj4+ICvCoMKg
wqAgcmV0dXJuIGdsb2JhbF91bWFzay5leGNoYW5nZShuZXdtYXNrLCBzdGQ6Om1lbW9yeV9vcmRl
cl9yZWxheGVkKTsKPj4gwqAgfQo+PiDCoCBpbnQKPj4gwqAgZnNfbm9vcCh2b2lkKQo+PiDCoCB7
Cj4+IC3CoMKgwqAgcmV0dXJuIDA7Cj4+ICvCoMKgwqAgcmV0dXJuIDA7Cj4+IMKgIH0KPj4gwqAg
aW50IGNocm9vdChjb25zdCBjaGFyICpwYXRoKQo+PiDCoCB7Cj4+IC3CoMKgwqAgV0FSTl9TVFVC
QkVEKCk7Cj4+IC3CoMKgwqAgZXJybm8gPSBFTk9TWVM7Cj4+IC3CoMKgwqAgcmV0dXJuIC0xOwo+
PiArwqDCoMKgIFdBUk5fU1RVQkJFRCgpOwo+PiArwqDCoMKgIGVycm5vID0gRU5PU1lTOwo+PiAr
wqDCoMKgIHJldHVybiAtMTsKPj4gwqAgfQo+PiDCoCAvLyB1bnBhY2tfYm9vdGZzKCkgdW5wYWNr
cyBhIGNvbGxlY3Rpb24gb2YgZmlsZXMgc3RvcmVkIGFzIHBhcnQgb2YgCj4+IHRoZSBPU3YKPj4g
QEAgLTIxMjAsMTQgKzIxMjAsMTQgQEAgaW50IGNocm9vdChjb25zdCBjaGFyICpwYXRoKQo+PiDC
oCAjZGVmaW5lIEJPT1RGU19QQVRIX01BWCAxMTEKPj4gwqAgZW51bSBjbGFzcyBib290ZnNfZmls
ZV90eXBlIDogY2hhciB7IG90aGVyID0gMCwgc3ltbGluayA9IDEgfTsKPj4gwqAgc3RydWN0IGJv
b3Rmc19tZXRhZGF0YSB7Cj4+IC3CoMKgwqAgdWludDY0X3Qgc2l6ZTsKPj4gLcKgwqDCoCB1aW50
NjRfdCBvZmZzZXQ7Cj4+IC3CoMKgwqAgLy8gVGhlIGZpbGUncyB0eXBlLiBDYW4gYmUgInN5bWxp
bmsiIG9yICJvdGhlciIuIEEgZGlyZWN0b3J5IGlzIAo+PiBhbiAib3RoZXIiCj4+IC3CoMKgwqAg
Ly8gZmlsZSB3aXRoIGl0cyBuYW1lIGVuZGluZyB3aXRoIGEgIi8iIChhbmQgbm8gY29udGVudCku
Cj4+IC3CoMKgwqAgYm9vdGZzX2ZpbGVfdHlwZSB0eXBlOwo+PiAtwqDCoMKgIC8vIG5hbWUgbXVz
dCBlbmQgd2l0aCBhIG51bGwuIEZvciBzeW1saW5rIGZpbGVzLCB0aGUgY29udGVudCBtdXN0IAo+
PiBlbmQKPj4gLcKgwqDCoCAvLyB3aXRoIGEgbnVsbCBhcyB3ZWxsLgo+PiAtwqDCoMKgIGNoYXIg
bmFtZVtCT09URlNfUEFUSF9NQVhdOwo+PiArwqDCoMKgIHVpbnQ2NF90IHNpemU7Cj4+ICvCoMKg
wqAgdWludDY0X3Qgb2Zmc2V0Owo+PiArwqDCoMKgIC8vIFRoZSBmaWxlJ3MgdHlwZS4gQ2FuIGJl
ICJzeW1saW5rIiBvciAib3RoZXIiLiBBIGRpcmVjdG9yeSBpcyAKPj4gYW4gIm90aGVyIgo+PiAr
wqDCoMKgIC8vIGZpbGUgd2l0aCBpdHMgbmFtZSBlbmRpbmcgd2l0aCBhICIvIiAoYW5kIG5vIGNv
bnRlbnQpLgo+PiArwqDCoMKgIGJvb3Rmc19maWxlX3R5cGUgdHlwZTsKPj4gK8KgwqDCoCAvLyBu
YW1lIG11c3QgZW5kIHdpdGggYSBudWxsLiBGb3Igc3ltbGluayBmaWxlcywgdGhlIGNvbnRlbnQg
bXVzdCAKPj4gZW5kCj4+ICvCoMKgwqAgLy8gd2l0aCBhIG51bGwgYXMgd2VsbC4KPj4gK8KgwqDC
oCBjaGFyIG5hbWVbQk9PVEZTX1BBVEhfTUFYXTsKPj4gwqAgfTsKPj4gwqAgZXh0ZXJuIGNoYXIg
Ym9vdGZzX3N0YXJ0Owo+PiBAQCAtMjEzNSwyMjUgKzIxMzUsMjI1IEBAIGV4dGVybiBjaGFyIGJv
b3Rmc19zdGFydDsKPj4gwqAgaW50IHJhbWZzX3NldF9maWxlX2RhdGEoc3RydWN0IHZub2RlICp2
cCwgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IAo+PiBzaXplKTsKPj4gwqAgdm9pZCB1bnBhY2tf
Ym9vdGZzKHZvaWQpCj4+IMKgIHsKPj4gLcKgwqDCoCBzdHJ1Y3QgYm9vdGZzX21ldGFkYXRhICpt
ZCA9IChzdHJ1Y3QgYm9vdGZzX21ldGFkYXRhIAo+PiAqKSZib290ZnNfc3RhcnQ7Cj4+IC3CoMKg
wqAgaW50IGZkLCBpOwo+PiAtCj4+IC3CoMKgwqAgZm9yIChpID0gMDsgbWRbaV0ubmFtZVswXTsg
aSsrKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCBpbnQgcmV0Owo+PiAtwqDCoMKgwqDCoMKgwqAgY2hh
ciAqcDsKPj4gLQo+PiAtwqDCoMKgwqDCoMKgwqAgLy8gbWtkaXIoKSBkaXJlY3RvcmllcyBuZWVk
ZWQgZm9yIHRoaXMgcGF0aCBuYW1lLCBhcyBuZWNlc3NhcnkKPj4gLcKgwqDCoMKgwqDCoMKgIGNo
YXIgdG1wW0JPT1RGU19QQVRIX01BWF07Cj4+IC3CoMKgwqDCoMKgwqDCoCBzdHJsY3B5KHRtcCwg
bWRbaV0ubmFtZSwgQk9PVEZTX1BBVEhfTUFYKTsKPj4gLcKgwqDCoMKgwqDCoMKgIGZvciAocCA9
IHRtcDsgKnA7ICsrcCkgewo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoKnAgPT0gJy8n
KSB7Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKnAgPSAnXDAnOwo+PiAtwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG1rZGlyKHRtcCwgMDY2Nik7wqAgLy8gc2lsZW50
bHkgaWdub3JlIGVycm9ycyBhbmQgCj4+IGV4aXN0aW5nIGRpcnMKPj4gLcKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoCAqcCA9ICcvJzsKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+
PiAtwqDCoMKgwqDCoMKgwqAgfQo+PiAtCj4+IC3CoMKgwqDCoMKgwqDCoCBpZiAobWRbaV0udHlw
ZSA9PSBib290ZnNfZmlsZV90eXBlOjpzeW1saW5rKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDC
oMKgIC8vIFRoaXMgaXMgYSBzeW1ib2xpYyBsaW5rIHJlY29yZC4gVGhlIGZpbGUncyBjb250ZW50
IGlzIHRoZQo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvLyB0YXJnZXQgcGF0aCwgYW5kIHdl
IGFzc3VtZSBlbmRzIHdpdGggYSBudWxsLgo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAo
c3ltbGluaygmYm9vdGZzX3N0YXJ0ICsgbWRbaV0ub2Zmc2V0LCBtZFtpXS5uYW1lKSAhPSAKPj4g
MCkgewo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGtwcmludGYoImNvdWxkbid0
IHN5bWxpbmsgJXM6ICVkXG4iLCBtZFtpXS5uYW1lLCBlcnJubyk7Cj4+IC3CoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqAgc3lzX3BhbmljKCJ1bnBhY2tfYm9vdGZzIGZhaWxlZCIpOwo+PiAt
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnRp
bnVlOwo+PiAtwqDCoMKgwqDCoMKgwqAgfQo+PiAtwqDCoMKgwqDCoMKgwqAgaWYgKCoocC0xKSA9
PSAnLycgJiYgbWRbaV0uc2l6ZSA9PSAwKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8v
IFRoaXMgaXMgZGlyZWN0b3J5IHJlY29yZC4gTm90aGluZyBlbHNlIHRvIGRvCj4+IC3CoMKgwqDC
oMKgwqDCoMKgwqDCoMKgIGNvbnRpbnVlOwo+PiAtwqDCoMKgwqDCoMKgwqAgfQo+PiAtCj4+IC3C
oMKgwqDCoMKgwqDCoCBmZCA9IGNyZWF0KG1kW2ldLm5hbWUsIDA2NjYpOwo+PiAtwqDCoMKgwqDC
oMKgwqAgaWYgKGZkIDwgMCkgewo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBrcHJpbnRmKCJj
b3VsZG4ndCBjcmVhdGUgJXM6ICVkXG4iLAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqAgbWRbaV0ubmFtZSwgZXJybm8pOwo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oCBzeXNfcGFuaWMoInVucGFja19ib290ZnMgZmFpbGVkIik7Cj4+IC3CoMKgwqDCoMKgwqDCoCB9
Cj4+IC0KPj4gLcKgwqDCoMKgwqDCoMKgIHN0cnVjdCBmaWxlICpmcDsKPj4gLcKgwqDCoMKgwqDC
oMKgIGludCBlcnJvciA9IGZnZXQoZmQsICZmcCk7Cj4+IC3CoMKgwqDCoMKgwqDCoCBpZiAoZXJy
b3IpIHsKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAga3ByaW50ZigiY291bGRuJ3QgZmdldCAl
czogJWRcbiIsCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtZFtp
XS5uYW1lLCBlcnJvcik7Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN5c19wYW5pYygidW5w
YWNrX2Jvb3RmcyBmYWlsZWQiKTsKPj4gLcKgwqDCoMKgwqDCoMKgIH0KPj4gLQo+PiAtwqDCoMKg
wqDCoMKgwqAgc3RydWN0IHZub2RlICp2cCA9IGZwLT5mX2RlbnRyeS0+ZF92bm9kZTsKPj4gLcKg
wqDCoMKgwqDCoMKgIHJldCA9IHJhbWZzX3NldF9maWxlX2RhdGEodnAsICZib290ZnNfc3RhcnQg
KyBtZFtpXS5vZmZzZXQsIAo+PiBtZFtpXS5zaXplKTsKPj4gLcKgwqDCoMKgwqDCoMKgIGlmIChy
ZXQpIHsKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAga3ByaW50ZigicmFtZnNfc2V0X2ZpbGVf
ZGF0YSBmYWlsZWQsIHJldCA9ICVkXG4iLCByZXQpOwo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oCBzeXNfcGFuaWMoInVucGFja19ib290ZnMgZmFpbGVkIik7Cj4+IC3CoMKgwqDCoMKgwqDCoCB9
Cj4+IC0KPj4gLcKgwqDCoMKgwqDCoMKgIGZkcm9wKGZwKTsKPj4gLcKgwqDCoMKgwqDCoMKgIGNs
b3NlKGZkKTsKPj4gLcKgwqDCoCB9Cj4+ICvCoMKgwqAgc3RydWN0IGJvb3Rmc19tZXRhZGF0YSAq
bWQgPSAoc3RydWN0IGJvb3Rmc19tZXRhZGF0YSAKPj4gKikmYm9vdGZzX3N0YXJ0Owo+PiArwqDC
oMKgIGludCBmZCwgaTsKPj4gKwo+PiArwqDCoMKgIGZvciAoaSA9IDA7IG1kW2ldLm5hbWVbMF07
IGkrKykgewo+PiArwqDCoMKgwqDCoMKgwqAgaW50IHJldDsKPj4gK8KgwqDCoMKgwqDCoMKgIGNo
YXIgKnA7Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgIC8vIG1rZGlyKCkgZGlyZWN0b3JpZXMgbmVl
ZGVkIGZvciB0aGlzIHBhdGggbmFtZSwgYXMgbmVjZXNzYXJ5Cj4+ICvCoMKgwqDCoMKgwqDCoCBj
aGFyIHRtcFtCT09URlNfUEFUSF9NQVhdOwo+PiArwqDCoMKgwqDCoMKgwqAgc3RybGNweSh0bXAs
IG1kW2ldLm5hbWUsIEJPT1RGU19QQVRIX01BWCk7Cj4+ICvCoMKgwqDCoMKgwqDCoCBmb3IgKHAg
PSB0bXA7ICpwOyArK3ApIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKCpwID09ICcv
Jykgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICpwID0gJ1wwJzsKPj4gK8Kg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBta2Rpcih0bXAsIDA2NjYpO8KgIC8vIHNpbGVu
dGx5IGlnbm9yZSBlcnJvcnMgYW5kIAo+PiBleGlzdGluZyBkaXJzCj4+ICvCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqAgKnAgPSAnLyc7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0K
Pj4gK8KgwqDCoMKgwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKG1kW2ldLnR5
cGUgPT0gYm9vdGZzX2ZpbGVfdHlwZTo6c3ltbGluaykgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoCAvLyBUaGlzIGlzIGEgc3ltYm9saWMgbGluayByZWNvcmQuIFRoZSBmaWxlJ3MgY29udGVu
dCBpcyB0aGUKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLy8gdGFyZ2V0IHBhdGgsIGFuZCB3
ZSBhc3N1bWUgZW5kcyB3aXRoIGEgbnVsbC4KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYg
KHN5bWxpbmsoJmJvb3Rmc19zdGFydCArIG1kW2ldLm9mZnNldCwgbWRbaV0ubmFtZSkgIT0gCj4+
IDApIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBrcHJpbnRmKCJjb3VsZG4n
dCBzeW1saW5rICVzOiAlZFxuIiwgbWRbaV0ubmFtZSwgZXJybm8pOwo+PiArwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgIHN5c19wYW5pYygidW5wYWNrX2Jvb3RmcyBmYWlsZWQiKTsKPj4g
K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb250
aW51ZTsKPj4gK8KgwqDCoMKgwqDCoMKgIH0KPj4gK8KgwqDCoMKgwqDCoMKgIGlmICgqKHAtMSkg
PT0gJy8nICYmIG1kW2ldLnNpemUgPT0gMCkgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAv
LyBUaGlzIGlzIGRpcmVjdG9yeSByZWNvcmQuIE5vdGhpbmcgZWxzZSB0byBkbwo+PiArwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoCBjb250aW51ZTsKPj4gK8KgwqDCoMKgwqDCoMKgIH0KPj4gKwo+PiAr
wqDCoMKgwqDCoMKgwqAgZmQgPSBjcmVhdChtZFtpXS5uYW1lLCAwNjY2KTsKPj4gK8KgwqDCoMKg
wqDCoMKgIGlmIChmZCA8IDApIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAga3ByaW50Zigi
Y291bGRuJ3QgY3JlYXRlICVzOiAlZFxuIiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgIG1kW2ldLm5hbWUsIGVycm5vKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg
wqAgc3lzX3BhbmljKCJ1bnBhY2tfYm9vdGZzIGZhaWxlZCIpOwo+PiArwqDCoMKgwqDCoMKgwqAg
fQo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZmlsZSAqZnA7Cj4+ICvCoMKgwqDCoMKg
wqDCoCBpbnQgZXJyb3IgPSBmZ2V0KGZkLCAmZnApOwo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKGVy
cm9yKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGtwcmludGYoImNvdWxkbid0IGZnZXQg
JXM6ICVkXG4iLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbWRb
aV0ubmFtZSwgZXJyb3IpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzeXNfcGFuaWMoInVu
cGFja19ib290ZnMgZmFpbGVkIik7Cj4+ICvCoMKgwqDCoMKgwqDCoCB9Cj4+ICsKPj4gK8KgwqDC
oMKgwqDCoMKgIHN0cnVjdCB2bm9kZSAqdnAgPSBmcC0+Zl9kZW50cnktPmRfdm5vZGU7Cj4+ICvC
oMKgwqDCoMKgwqDCoCByZXQgPSByYW1mc19zZXRfZmlsZV9kYXRhKHZwLCAmYm9vdGZzX3N0YXJ0
ICsgbWRbaV0ub2Zmc2V0LCAKPj4gbWRbaV0uc2l6ZSk7Cj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAo
cmV0KSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGtwcmludGYoInJhbWZzX3NldF9maWxl
X2RhdGEgZmFpbGVkLCByZXQgPSAlZFxuIiwgcmV0KTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg
wqAgc3lzX3BhbmljKCJ1bnBhY2tfYm9vdGZzIGZhaWxlZCIpOwo+PiArwqDCoMKgwqDCoMKgwqAg
fQo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoCBmZHJvcChmcCk7Cj4+ICvCoMKgwqDCoMKgwqDCoCBj
bG9zZShmZCk7Cj4+ICvCoMKgwqAgfQo+PiDCoCB9Cj4+IMKgIHZvaWQgbW91bnRfcm9vdGZzKHZv
aWQpCj4+IMKgIHsKPj4gLcKgwqDCoCBpbnQgcmV0Owo+PiArwqDCoMKgIGludCByZXQ7Cj4+IC3C
oMKgwqAgcmV0ID0gc3lzX21vdW50KCIiLCAiLyIsICJyYW1mcyIsIDAsIG51bGxwdHIpOwo+PiAt
wqDCoMKgIGlmIChyZXQpCj4+IC3CoMKgwqDCoMKgwqDCoCBrcHJpbnRmKCJmYWlsZWQgdG8gbW91
bnQgcm9vdGZzLCBlcnJvciA9ICVzXG4iLCBzdHJlcnJvcihyZXQpKTsKPj4gK8KgwqDCoCByZXQg
PSBzeXNfbW91bnQoIiIsICIvIiwgInJhbWZzIiwgMCwgbnVsbHB0cik7Cj4+ICvCoMKgwqAgaWYg
KHJldCkKPj4gK8KgwqDCoMKgwqDCoMKgIGtwcmludGYoImZhaWxlZCB0byBtb3VudCByb290ZnMs
IGVycm9yID0gJXNcbiIsIHN0cmVycm9yKHJldCkpOwo+PiAtwqDCoMKgIGlmIChta2RpcigiL2Rl
diIsIDA3NTUpIDwgMCkKPj4gLcKgwqDCoMKgwqDCoMKgIGtwcmludGYoImZhaWxlZCB0byBjcmVh
dGUgL2RldiwgZXJyb3IgPSAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKPj4gK8KgwqDCoCBpZiAo
bWtkaXIoIi9kZXYiLCAwNzU1KSA8IDApCj4+ICvCoMKgwqDCoMKgwqDCoCBrcHJpbnRmKCJmYWls
ZWQgdG8gY3JlYXRlIC9kZXYsIGVycm9yID0gJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7Cj4+IC3C
oMKgwqAgcmV0ID0gc3lzX21vdW50KCIiLCAiL2RldiIsICJkZXZmcyIsIDAsIG51bGxwdHIpOwo+
PiAtwqDCoMKgIGlmIChyZXQpCj4+IC3CoMKgwqDCoMKgwqDCoCBrcHJpbnRmKCJmYWlsZWQgdG8g
bW91bnQgZGV2ZnMsIGVycm9yID0gJXNcbiIsIHN0cmVycm9yKHJldCkpOwo+PiArwqDCoMKgIHJl
dCA9IHN5c19tb3VudCgiIiwgIi9kZXYiLCAiZGV2ZnMiLCAwLCBudWxscHRyKTsKPj4gK8KgwqDC
oCBpZiAocmV0KQo+PiArwqDCoMKgwqDCoMKgwqAga3ByaW50ZigiZmFpbGVkIHRvIG1vdW50IGRl
dmZzLCBlcnJvciA9ICVzXG4iLCBzdHJlcnJvcihyZXQpKTsKPj4gwqAgfQo+PiDCoCBleHRlcm4g
IkMiCj4+IMKgIGludCBubW91bnQoc3RydWN0IGlvdmVjICppb3YsIHVuc2lnbmVkIG5pb3YsIGlu
dCBmbGFncykKPj4gwqAgewo+PiAtwqDCoMKgIHN0cnVjdCBhcmdzIHsKPj4gLcKgwqDCoMKgwqDC
oMKgIGNoYXIqIGZzdHlwZSA9IG51bGxwdHI7Cj4+IC3CoMKgwqDCoMKgwqDCoCBjaGFyKiBmc3Bh
dGggPSBudWxscHRyOwo+PiAtwqDCoMKgwqDCoMKgwqAgY2hhciogZnJvbSA9IG51bGxwdHI7Cj4+
IC3CoMKgwqAgfTsKPj4gLcKgwqDCoCBzdGF0aWMgdW5vcmRlcmVkX21hcDxzdHJpbmcsIGNoYXIq
IGFyZ3M6Oio+IGFyZ21hcCB7Cj4+IC3CoMKgwqDCoMKgwqDCoCB7ICJmc3R5cGUiLCAmYXJnczo6
ZnN0eXBlIH0sCj4+IC3CoMKgwqDCoMKgwqDCoCB7ICJmc3BhdGgiLCAmYXJnczo6ZnNwYXRoIH0s
Cj4+IC3CoMKgwqDCoMKgwqDCoCB7ICJmcm9tIiwgJmFyZ3M6OmZyb20gfSwKPj4gLcKgwqDCoCB9
Owo+PiAtwqDCoMKgIGFyZ3MgYTsKPj4gLcKgwqDCoCBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5p
b3Y7IGkgKz0gMikgewo+PiAtwqDCoMKgwqDCoMKgwqAgc3RkOjpzdHJpbmcgcyhzdGF0aWNfY2Fz
dDxjb25zdCBjaGFyKj4oaW92W2ldLmlvdl9iYXNlKSk7Cj4+IC3CoMKgwqDCoMKgwqDCoCBpZiAo
YXJnbWFwLmNvdW50KHMpKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGEuKihhcmdtYXBb
c10pID0gc3RhdGljX2Nhc3Q8Y2hhcio+KGlvdltpKzFdLmlvdl9iYXNlKTsKPj4gLcKgwqDCoMKg
wqDCoMKgIH0KPj4gLcKgwqDCoCB9Cj4+IC3CoMKgwqAgcmV0dXJuIHN5c19tb3VudChhLmZyb20s
IGEuZnNwYXRoLCBhLmZzdHlwZSwgZmxhZ3MsIG51bGxwdHIpOwo+PiArwqDCoMKgIHN0cnVjdCBh
cmdzIHsKPj4gK8KgwqDCoMKgwqDCoMKgIGNoYXIqIGZzdHlwZSA9IG51bGxwdHI7Cj4+ICvCoMKg
wqDCoMKgwqDCoCBjaGFyKiBmc3BhdGggPSBudWxscHRyOwo+PiArwqDCoMKgwqDCoMKgwqAgY2hh
ciogZnJvbSA9IG51bGxwdHI7Cj4+ICvCoMKgwqAgfTsKPj4gK8KgwqDCoCBzdGF0aWMgdW5vcmRl
cmVkX21hcDxzdHJpbmcsIGNoYXIqIGFyZ3M6Oio+IGFyZ21hcCB7Cj4+ICvCoMKgwqDCoMKgwqDC
oCB7ICJmc3R5cGUiLCAmYXJnczo6ZnN0eXBlIH0sCj4+ICvCoMKgwqDCoMKgwqDCoCB7ICJmc3Bh
dGgiLCAmYXJnczo6ZnNwYXRoIH0sCj4+ICvCoMKgwqDCoMKgwqDCoCB7ICJmcm9tIiwgJmFyZ3M6
OmZyb20gfSwKPj4gK8KgwqDCoCB9Owo+PiArwqDCoMKgIGFyZ3MgYTsKPj4gK8KgwqDCoCBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG5pb3Y7IGkgKz0gMikgewo+PiArwqDCoMKgwqDCoMKgwqAgc3Rk
OjpzdHJpbmcgcyhzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oaW92W2ldLmlvdl9iYXNlKSk7Cj4+
ICvCoMKgwqDCoMKgwqDCoCBpZiAoYXJnbWFwLmNvdW50KHMpKSB7Cj4+ICvCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgIGEuKihhcmdtYXBbc10pID0gc3RhdGljX2Nhc3Q8Y2hhcio+KGlvdltpKzFdLmlv
dl9iYXNlKTsKPj4gK8KgwqDCoMKgwqDCoMKgIH0KPj4gK8KgwqDCoCB9Cj4+ICvCoMKgwqAgcmV0
dXJuIHN5c19tb3VudChhLmZyb20sIGEuZnNwYXRoLCBhLmZzdHlwZSwgZmxhZ3MsIG51bGxwdHIp
Owo+PiDCoCB9Cj4+IMKgIHN0YXRpYyB2b2lkIGltcG9ydF9leHRyYV96ZnNfcG9vbHModm9pZCkK
Pj4gwqAgewo+PiAtwqDCoMKgIHN0cnVjdCBzdGF0IHN0Owo+PiAtwqDCoMKgIGludCByZXQ7Cj4+
ICvCoMKgwqAgc3RydWN0IHN0YXQgc3Q7Cj4+ICvCoMKgwqAgaW50IHJldDsKPj4gLcKgwqDCoCAv
LyBUaGUgZmlsZSAnL2V0Yy9tbnR0YWInIGlzIGEgTGliWkZTIHJlcXVpcmVtZW50IGFuZCB3aWxs
IG5vdAo+PiAtwqDCoMKgIC8vIGV4aXN0IGR1cmluZyBjcGlvZCBwaGFzZS4gVGhlIGZ1bmN0aW9u
YWxpdHkgcHJvdmlkZWQgYnkgdGhpcwo+PiAtwqDCoMKgIC8vIGZ1bmN0aW9uIGlzbid0IG5lZWRl
ZCBkdXJpbmcgdGhhdCBwaGFzZSwgc28gbGV0J3Mgc2tpcCBpdC4KPj4gLcKgwqDCoCBpZiAoc3Rh
dCgiL2V0Yy9tbnR0YWIiICwgJnN0KSAhPSAwKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCByZXR1cm47
Cj4+IC3CoMKgwqAgfQo+PiArwqDCoMKgIC8vIFRoZSBmaWxlICcvZXRjL21udHRhYicgaXMgYSBM
aWJaRlMgcmVxdWlyZW1lbnQgYW5kIHdpbGwgbm90Cj4+ICvCoMKgwqAgLy8gZXhpc3QgZHVyaW5n
IGNwaW9kIHBoYXNlLiBUaGUgZnVuY3Rpb25hbGl0eSBwcm92aWRlZCBieSB0aGlzCj4+ICvCoMKg
wqAgLy8gZnVuY3Rpb24gaXNuJ3QgbmVlZGVkIGR1cmluZyB0aGF0IHBoYXNlLCBzbyBsZXQncyBz
a2lwIGl0Lgo+PiArwqDCoMKgIGlmIChzdGF0KCIvZXRjL21udHRhYiIgLCAmc3QpICE9IDApIHsK
Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybjsKPj4gK8KgwqDCoCB9Cj4+IC3CoMKgwqAgLy8gSW1w
b3J0IGV4dHJhIHBvb2xzIG1vdW50aW5nIGRhdGFzZXRzIHRoZXJlIGNvbnRhaW5lZC4KPj4gLcKg
wqDCoCAvLyBEYXRhc2V0cyBmcm9tIG9zdiBwb29sIHdpbGwgbm90IGJlIG1vdW50ZWQgaGVyZS4K
Pj4gLcKgwqDCoCBpZiAoYWNjZXNzKCJ6cG9vbC5zbyIsIFhfT0spICE9IDApIHsKPj4gLcKgwqDC
oMKgwqDCoMKgIHJldHVybjsKPj4gLcKgwqDCoCB9Cj4+IC3CoMKgwqAgdmVjdG9yPHN0cmluZz4g
enBvb2xfYXJncyA9IHsienBvb2wiLCAiaW1wb3J0IiwgIi1mIiwgIi1hIiB9Owo+PiAtwqDCoMKg
IGF1dG8gb2sgPSBvc3Y6OnJ1bigienBvb2wuc28iLCB6cG9vbF9hcmdzLCAmcmV0KTsKPj4gLcKg
wqDCoCBhc3NlcnQob2spOwo+PiArwqDCoMKgIC8vIEltcG9ydCBleHRyYSBwb29scyBtb3VudGlu
ZyBkYXRhc2V0cyB0aGVyZSBjb250YWluZWQuCj4+ICvCoMKgwqAgLy8gRGF0YXNldHMgZnJvbSBv
c3YgcG9vbCB3aWxsIG5vdCBiZSBtb3VudGVkIGhlcmUuCj4+ICvCoMKgwqAgaWYgKGFjY2Vzcygi
enBvb2wuc28iLCBYX09LKSAhPSAwKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm47Cj4+ICvC
oMKgwqAgfQo+PiArwqDCoMKgIHZlY3RvcjxzdHJpbmc+IHpwb29sX2FyZ3MgPSB7Inpwb29sIiwg
ImltcG9ydCIsICItZiIsICItYSIgfTsKPj4gK8KgwqDCoCBhdXRvIG9rID0gb3N2OjpydW4oInpw
b29sLnNvIiwgenBvb2xfYXJncywgJnJldCk7Cj4+ICvCoMKgwqAgYXNzZXJ0KG9rKTsKPj4gLcKg
wqDCoCBpZiAoIXJldCkgewo+PiAtwqDCoMKgwqDCoMKgwqAgZGVidWcoInpmczogZXh0cmEgWkZT
IHBvb2wocykgZm91bmQuXG4iKTsKPj4gLcKgwqDCoCB9Cj4+ICvCoMKgwqAgaWYgKCFyZXQpIHsK
Pj4gK8KgwqDCoMKgwqDCoMKgIGRlYnVnKCJ6ZnM6IGV4dHJhIFpGUyBwb29sKHMpIGZvdW5kLlxu
Iik7Cj4+ICvCoMKgwqAgfQo+PiDCoCB9Cj4+IMKgIHZvaWQgcGl2b3Rfcm9vdGZzKGNvbnN0IGNo
YXIqIHBhdGgpCj4+IMKgIHsKPj4gLcKgwqDCoCBpbnQgcmV0ID0gc3lzX3Bpdm90X3Jvb3QocGF0
aCwgIi8iKTsKPj4gLcKgwqDCoCBpZiAocmV0KQo+PiAtwqDCoMKgwqDCoMKgwqAga3ByaW50Zigi
ZmFpbGVkIHRvIHBpdm90IHJvb3QsIGVycm9yID0gJXNcbiIsIHN0cmVycm9yKHJldCkpOwo+PiAt
Cj4+IC3CoMKgwqAgYXV0byBlbnQgPSBzZXRtbnRlbnQoIi9ldGMvZnN0YWIiLCAiciIpOwo+PiAt
wqDCoMKgIGlmICghZW50KSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCByZXR1cm47Cj4+IC3CoMKgwqAg
fQo+PiArwqDCoMKgIGludCByZXQgPSBzeXNfcGl2b3Rfcm9vdChwYXRoLCAiLyIpOwo+PiArwqDC
oMKgIGlmIChyZXQpCj4+ICvCoMKgwqDCoMKgwqDCoCBrcHJpbnRmKCJmYWlsZWQgdG8gcGl2b3Qg
cm9vdCwgZXJyb3IgPSAlc1xuIiwgc3RyZXJyb3IocmV0KSk7Cj4+IC3CoMKgwqAgc3RydWN0IG1u
dGVudCAqbSA9IG51bGxwdHI7Cj4+IC3CoMKgwqAgd2hpbGUgKChtID0gZ2V0bW50ZW50KGVudCkp
ICE9IG51bGxwdHIpIHsKPj4gLcKgwqDCoMKgwqDCoMKgIGlmICghc3RyY21wKG0tPm1udF9kaXIs
ICIvIikpIHsKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29udGludWU7Cj4+IC3CoMKgwqDC
oMKgwqDCoCB9Cj4+IC0KPj4gLcKgwqDCoMKgwqDCoMKgIGlmICgobS0+bW50X29wdHMgIT0gbnVs
bHB0cikgJiYgc3RyY21wKG0tPm1udF9vcHRzLCAKPj4gTU5UT1BUX0RFRkFVTFRTKSkgewo+PiAt
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwcmludGYoIldhcm5pbmc6IG9wdHMgJXMsIGlnbm9yZWQg
Zm9yIGZzICVzXG4iLCAKPj4gbS0+bW50X29wdHMsIG0tPm1udF90eXBlKTsKPj4gLcKgwqDCoMKg
wqDCoMKgIH0KPj4gK8KgwqDCoCBhdXRvIGVudCA9IHNldG1udGVudCgiL2V0Yy9mc3RhYiIsICJy
Iik7Cj4+ICvCoMKgwqAgaWYgKCFlbnQpIHsKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybjsKPj4g
K8KgwqDCoCB9Cj4+IC3CoMKgwqDCoMKgwqDCoCAvLyBGSVhNRTogUmlnaHQgbm93LCBpZ25vcmlu
ZyBtbnRvcHMuIEluIHRoZSBmdXR1cmUgd2UgbWF5IAo+PiBoYXZlIGFuIG9wdGlvbiBwYXJzZXIK
Pj4gLcKgwqDCoMKgwqDCoMKgIHJldCA9IHN5c19tb3VudChtLT5tbnRfZnNuYW1lLCBtLT5tbnRf
ZGlyLCBtLT5tbnRfdHlwZSwgMCwgCj4+IG51bGxwdHIpOwo+PiAtwqDCoMKgwqDCoMKgwqAgaWYg
KHJldCkgewo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwcmludGYoImZhaWxlZCB0byBtb3Vu
dCAlcywgZXJyb3IgPSAlc1xuIiwgbS0+bW50X3R5cGUsIAo+PiBzdHJlcnJvcihyZXQpKTsKPj4g
LcKgwqDCoMKgwqDCoMKgIH0KPj4gLcKgwqDCoCB9Cj4+IC3CoMKgwqAgZW5kbW50ZW50KGVudCk7
Cj4+ICvCoMKgwqAgc3RydWN0IG1udGVudCAqbSA9IG51bGxwdHI7Cj4+ICvCoMKgwqAgd2hpbGUg
KChtID0gZ2V0bW50ZW50KGVudCkpICE9IG51bGxwdHIpIHsKPj4gK8KgwqDCoMKgwqDCoMKgIGlm
ICghc3RyY21wKG0tPm1udF9kaXIsICIvIikpIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAg
Y29udGludWU7Cj4+ICvCoMKgwqDCoMKgwqDCoCB9Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgIGlm
ICgobS0+bW50X29wdHMgIT0gbnVsbHB0cikgJiYgc3RyY21wKG0tPm1udF9vcHRzLCAKPj4gTU5U
T1BUX0RFRkFVTFRTKSkgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwcmludGYoIldhcm5p
bmc6IG9wdHMgJXMsIGlnbm9yZWQgZm9yIGZzICVzXG4iLCAKPj4gbS0+bW50X29wdHMsIG0tPm1u
dF90eXBlKTsKPj4gK8KgwqDCoMKgwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgwqDCoMKgwqAgLy8g
RklYTUU6IFJpZ2h0IG5vdywgaWdub3JpbmcgbW50b3BzLiBJbiB0aGUgZnV0dXJlIHdlIG1heSAK
Pj4gaGF2ZSBhbiBvcHRpb24gcGFyc2VyCj4+ICvCoMKgwqDCoMKgwqDCoCByZXQgPSBzeXNfbW91
bnQobS0+bW50X2ZzbmFtZSwgbS0+bW50X2RpciwgbS0+bW50X3R5cGUsIDAsIAo+PiBudWxscHRy
KTsKPj4gK8KgwqDCoMKgwqDCoMKgIGlmIChyZXQpIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg
wqAgcHJpbnRmKCJmYWlsZWQgdG8gbW91bnQgJXMsIGVycm9yID0gJXNcbiIsIG0tPm1udF90eXBl
LCAKPj4gc3RyZXJyb3IocmV0KSk7Cj4+ICvCoMKgwqDCoMKgwqDCoCB9Cj4+ICvCoMKgwqAgfQo+
PiArwqDCoMKgIGVuZG1udGVudChlbnQpOwo+PiDCoCB9Cj4+IMKgIGV4dGVybiAiQyIgdm9pZCB1
bm1vdW50X2RldmZzKCkKPj4gwqAgewo+PiAtwqDCoMKgIGludCByZXQgPSBzeXNfdW1vdW50KCIv
ZGV2Iik7Cj4+IC3CoMKgwqAgaWYgKHJldCkKPj4gLcKgwqDCoMKgwqDCoMKgIGtwcmludGYoImZh
aWxlZCB0byB1bm1vdW50IC9kZXYsIGVycm9yID0gJXNcbiIsIHN0cmVycm9yKHJldCkpOwo+PiAr
wqDCoMKgIGludCByZXQgPSBzeXNfdW1vdW50KCIvZGV2Iik7Cj4+ICvCoMKgwqAgaWYgKHJldCkK
Pj4gK8KgwqDCoMKgwqDCoMKgIGtwcmludGYoImZhaWxlZCB0byB1bm1vdW50IC9kZXYsIGVycm9y
ID0gJXNcbiIsIHN0cmVycm9yKHJldCkpOwo+PiDCoCB9Cj4+IMKgIGV4dGVybiAiQyIgaW50IG1v
dW50X3JvZnNfcm9vdGZzKGJvb2wgcGl2b3Rfcm9vdCkKPj4gwqAgewo+PiAtwqDCoMKgIGludCBy
ZXQ7Cj4+ICvCoMKgwqAgaW50IHJldDsKPj4gLcKgwqDCoCBpZiAobWtkaXIoIi9yb2ZzIiwgMDc1
NSkgPCAwKQo+PiAtwqDCoMKgwqDCoMKgwqAga3ByaW50ZigiZmFpbGVkIHRvIGNyZWF0ZSAvcm9m
cywgZXJyb3IgPSAlc1xuIiwgCj4+IHN0cmVycm9yKGVycm5vKSk7Cj4+ICvCoMKgwqAgaWYgKG1r
ZGlyKCIvcm9mcyIsIDA3NTUpIDwgMCkKPj4gK8KgwqDCoMKgwqDCoMKgIGtwcmludGYoImZhaWxl
ZCB0byBjcmVhdGUgL3JvZnMsIGVycm9yID0gJXNcbiIsIAo+PiBzdHJlcnJvcihlcnJubykpOwo+
PiAtwqDCoMKgIHJldCA9IHN5c19tb3VudCgiL2Rldi92YmxrMC4xIiwgIi9yb2ZzIiwgInJvZnMi
LCBNTlRfUkRPTkxZLCAwKTsKPj4gK8KgwqDCoCByZXQgPSBzeXNfbW91bnQoIi9kZXYvdmJsazAu
MSIsICIvcm9mcyIsICJyb2ZzIiwgTU5UX1JET05MWSwgMCk7Cj4+IC3CoMKgwqAgaWYgKHJldCkg
ewo+PiAtwqDCoMKgwqDCoMKgwqAga3ByaW50ZigiZmFpbGVkIHRvIG1vdW50IC9yb2ZzLCBlcnJv
ciA9ICVzXG4iLCBzdHJlcnJvcihyZXQpKTsKPj4gLcKgwqDCoMKgwqDCoMKgIHJtZGlyKCIvcm9m
cyIpOwo+PiAtwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldDsKPj4gLcKgwqDCoCB9Cj4+ICvCoMKg
wqAgaWYgKHJldCkgewo+PiArwqDCoMKgwqDCoMKgwqAga3ByaW50ZigiZmFpbGVkIHRvIG1vdW50
IC9yb2ZzLCBlcnJvciA9ICVzXG4iLCBzdHJlcnJvcihyZXQpKTsKPj4gK8KgwqDCoMKgwqDCoMKg
IHJtZGlyKCIvcm9mcyIpOwo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldDsKPj4gK8KgwqDC
oCB9Cj4+IC3CoMKgwqAgaWYgKHBpdm90X3Jvb3QpIHsKPj4gLcKgwqDCoMKgwqDCoMKgIHBpdm90
X3Jvb3RmcygiL3JvZnMiKTsKPj4gLcKgwqDCoCB9Cj4+ICvCoMKgwqAgaWYgKHBpdm90X3Jvb3Qp
IHsKPj4gK8KgwqDCoMKgwqDCoMKgIHBpdm90X3Jvb3RmcygiL3JvZnMiKTsKPj4gK8KgwqDCoCB9
Cj4+IC3CoMKgwqAgcmV0dXJuIDA7Cj4+ICvCoMKgwqAgcmV0dXJuIDA7Cj4+IMKgIH0KPj4gwqAg
ZXh0ZXJuICJDIiB2b2lkIG1vdW50X3pmc19yb290ZnMoYm9vbCBwaXZvdF9yb290KQo+PiDCoCB7
Cj4+IC3CoMKgwqAgaWYgKG1rZGlyKCIvemZzIiwgMDc1NSkgPCAwKQo+PiAtwqDCoMKgwqDCoMKg
wqAga3ByaW50ZigiZmFpbGVkIHRvIGNyZWF0ZSAvemZzLCBlcnJvciA9ICVzXG4iLCBzdHJlcnJv
cihlcnJubykpOwo+PiArwqDCoMKgIGlmIChta2RpcigiL3pmcyIsIDA3NTUpIDwgMCkKPj4gK8Kg
wqDCoMKgwqDCoMKgIGtwcmludGYoImZhaWxlZCB0byBjcmVhdGUgL3pmcywgZXJyb3IgPSAlc1xu
Iiwgc3RyZXJyb3IoZXJybm8pKTsKPj4gLcKgwqDCoCBpbnQgcmV0ID0gc3lzX21vdW50KCIvZGV2
L3ZibGswLjEiLCAiL3pmcyIsICJ6ZnMiLCAwLCAodm9pZCAKPj4gKikib3N2L3pmcyIpOwo+PiAr
wqDCoMKgIGludCByZXQgPSBzeXNfbW91bnQoIi9kZXYvdmJsazAuMSIsICIvemZzIiwgInpmcyIs
IDAsICh2b2lkIAo+PiAqKSJvc3YvemZzIik7Cj4+IC3CoMKgwqAgaWYgKHJldCkKPj4gLcKgwqDC
oMKgwqDCoMKgIGtwcmludGYoImZhaWxlZCB0byBtb3VudCAvemZzLCBlcnJvciA9ICVzXG4iLCBz
dHJlcnJvcihyZXQpKTsKPj4gK8KgwqDCoCBpZiAocmV0KQo+PiArwqDCoMKgwqDCoMKgwqAga3By
aW50ZigiZmFpbGVkIHRvIG1vdW50IC96ZnMsIGVycm9yID0gJXNcbiIsIHN0cmVycm9yKHJldCkp
Owo+PiAtwqDCoMKgIGlmICghcGl2b3Rfcm9vdCkgewo+PiAtwqDCoMKgwqDCoMKgwqAgcmV0dXJu
Owo+PiAtwqDCoMKgIH0KPj4gK8KgwqDCoCBpZiAoIXBpdm90X3Jvb3QpIHsKPj4gK8KgwqDCoMKg
wqDCoMKgIHJldHVybjsKPj4gK8KgwqDCoCB9Cj4+IC3CoMKgwqAgcGl2b3Rfcm9vdGZzKCIvemZz
Iik7Cj4+ICvCoMKgwqAgcGl2b3Rfcm9vdGZzKCIvemZzIik7Cj4+IC3CoMKgwqAgaW1wb3J0X2V4
dHJhX3pmc19wb29scygpOwo+PiArwqDCoMKgIGltcG9ydF9leHRyYV96ZnNfcG9vbHMoKTsKPj4g
wqAgfQo+PiDCoCBleHRlcm4gIkMiIHZvaWQgdW5tb3VudF9yb290ZnModm9pZCkKPj4gwqAgewo+
PiAtwqDCoMKgIGludCByZXQ7Cj4+ICvCoMKgwqAgaW50IHJldDsKPj4gLcKgwqDCoCBzeXNfdW1v
dW50KCIvZGV2Iik7Cj4+ICvCoMKgwqAgc3lzX3Vtb3VudCgiL2RldiIpOwo+PiAtwqDCoMKgIHJl
dCA9IHN5c191bW91bnQoIi9wcm9jIik7Cj4+IC3CoMKgwqAgaWYgKHJldCkgewo+PiAtwqDCoMKg
wqDCoMKgwqAga3ByaW50ZigiV2FybmluZzogdW5tb3VudF9yb290ZnM6IGZhaWxlZCB0byB1bm1v
dW50IC9wcm9jLCAiCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJlcnJvciA9ICVzXG4iLCBz
dHJlcnJvcihyZXQpKTsKPj4gLcKgwqDCoCB9Cj4+ICvCoMKgwqAgcmV0ID0gc3lzX3Vtb3VudCgi
L3Byb2MiKTsKPj4gK8KgwqDCoCBpZiAocmV0KSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBrcHJpbnRm
KCJXYXJuaW5nOiB1bm1vdW50X3Jvb3RmczogZmFpbGVkIHRvIHVubW91bnQgL3Byb2MsICIKPj4g
K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgImVycm9yID0gJXNcbiIsIHN0cmVycm9yKHJldCkpOwo+
PiArwqDCoMKgIH0KPj4gLcKgwqDCoCByZXQgPSBzeXNfdW1vdW50MigiLyIsIE1OVF9GT1JDRSk7
Cj4+IC3CoMKgwqAgaWYgKHJldCkgewo+PiAtwqDCoMKgwqDCoMKgwqAga3ByaW50ZigiV2Fybmlu
ZzogdW5tb3VudF9yb290ZnM6IGZhaWxlZCB0byB1bm1vdW50IC8sICIKPj4gLcKgwqDCoMKgwqDC
oMKgwqDCoMKgwqAgImVycm9yID0gJXNcbiIsIHN0cmVycm9yKHJldCkpOwo+PiAtwqDCoMKgIH0K
Pj4gK8KgwqDCoCByZXQgPSBzeXNfdW1vdW50MigiLyIsIE1OVF9GT1JDRSk7Cj4+ICvCoMKgwqAg
aWYgKHJldCkgewo+PiArwqDCoMKgwqDCoMKgwqAga3ByaW50ZigiV2FybmluZzogdW5tb3VudF9y
b290ZnM6IGZhaWxlZCB0byB1bm1vdW50IC8sICIKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAg
ImVycm9yID0gJXNcbiIsIHN0cmVycm9yKHJldCkpOwo+PiArwqDCoMKgIH0KPj4gwqAgfQo+PiDC
oCBleHRlcm4gIkMiIHZvaWQgYmlvX2luaXQodm9pZCk7Cj4+IEBAIC0yMzY1LDQ5ICsyMzY1LDQ5
IEBAIGV4dGVybiAiQyIKPj4gwqAgdm9pZAo+PiDCoCB2ZnNfaW5pdCh2b2lkKQo+PiDCoCB7Cj4+
IC3CoMKgwqAgY29uc3Qgc3RydWN0IHZmc3N3ICpmczsKPj4gLQo+PiAtwqDCoMKgIGJpb19pbml0
KCk7Cj4+IC3CoMKgwqAgbG9va3VwX2luaXQoKTsKPj4gLcKgwqDCoCB2bm9kZV9pbml0KCk7Cj4+
IC3CoMKgwqAgdGFza19hbGxvYygmbWFpbl90YXNrKTsKPj4gLQo+PiAtwqDCoMKgIC8qCj4+IC3C
oMKgwqDCoCAqIEluaXRpYWxpemUgZWFjaCBmaWxlIHN5c3RlbS4KPj4gLcKgwqDCoMKgICovCj4+
IC3CoMKgwqAgZm9yIChmcyA9IHZmc3N3OyBmcy0+dnNfbmFtZTsgZnMrKykgewo+PiAtwqDCoMKg
wqDCoMKgwqAgaWYgKGZzLT52c19pbml0KSB7Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERQ
UklOVEYoVkZTREJfQ09SRSwgKCJWRlM6IGluaXRpYWxpemluZyAlc1xuIiwKPj4gLcKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZzLT52c19uYW1lKSk7Cj4+IC3CoMKgwqDC
oMKgwqDCoMKgwqDCoMKgIGZzLT52c19pbml0KCk7Cj4+IC3CoMKgwqDCoMKgwqDCoCB9Cj4+IC3C
oMKgwqAgfQo+PiAtCj4+IC3CoMKgwqAgbW91bnRfcm9vdGZzKCk7Cj4+IC3CoMKgwqAgdW5wYWNr
X2Jvb3RmcygpOwo+PiAtCj4+IC3CoMKgwqAgLy/CoMKgwqAgaWYgKG9wZW4oIi9kZXYvY29uc29s
ZSIsIE9fUkRXUiwgMCkgIT0gMCkKPj4gLcKgwqDCoCBpZiAoY29uc29sZTo6b3BlbigpICE9IDAp
Cj4+IC3CoMKgwqDCoMKgwqDCoCBrcHJpbnRmKCJmYWlsZWQgdG8gb3BlbiBjb25zb2xlLCBlcnJv
ciA9ICVkXG4iLCBlcnJubyk7Cj4+IC3CoMKgwqAgaWYgKGR1cCgwKSAhPSAxKQo+PiAtwqDCoMKg
wqDCoMKgwqAga3ByaW50ZigiZmFpbGVkIHRvIGR1cCBjb25zb2xlICgxKVxuIik7Cj4+IC3CoMKg
wqAgaWYgKGR1cCgwKSAhPSAyKQo+PiAtwqDCoMKgwqDCoMKgwqAga3ByaW50ZigiZmFpbGVkIHRv
IGR1cCBjb25zb2xlICgyKVxuIik7Cj4+IC3CoMKgwqAgdmZzX2luaXRpYWxpemVkID0gMTsKPj4g
K8KgwqDCoCBjb25zdCBzdHJ1Y3QgdmZzc3cgKmZzOwo+PiArCj4+ICvCoMKgwqAgYmlvX2luaXQo
KTsKPj4gK8KgwqDCoCBsb29rdXBfaW5pdCgpOwo+PiArwqDCoMKgIHZub2RlX2luaXQoKTsKPj4g
K8KgwqDCoCB0YXNrX2FsbG9jKCZtYWluX3Rhc2spOwo+PiArCj4+ICvCoMKgwqAgLyoKPj4gK8Kg
wqDCoMKgICogSW5pdGlhbGl6ZSBlYWNoIGZpbGUgc3lzdGVtLgo+PiArwqDCoMKgwqAgKi8KPj4g
K8KgwqDCoCBmb3IgKGZzID0gdmZzc3c7IGZzLT52c19uYW1lOyBmcysrKSB7Cj4+ICvCoMKgwqDC
oMKgwqDCoCBpZiAoZnMtPnZzX2luaXQpIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRFBS
SU5URihWRlNEQl9DT1JFLCAoIlZGUzogaW5pdGlhbGl6aW5nICVzXG4iLAo+PiArwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZnMtPnZzX25hbWUpKTsKPj4gK8KgwqDCoMKg
wqDCoMKgwqDCoMKgwqAgZnMtPnZzX2luaXQoKTsKPj4gK8KgwqDCoMKgwqDCoMKgIH0KPj4gK8Kg
wqDCoCB9Cj4+ICsKPj4gK8KgwqDCoCBtb3VudF9yb290ZnMoKTsKPj4gK8KgwqDCoCB1bnBhY2tf
Ym9vdGZzKCk7Cj4+ICsKPj4gK8KgwqDCoCAvL8KgwqDCoCBpZiAob3BlbigiL2Rldi9jb25zb2xl
IiwgT19SRFdSLCAwKSAhPSAwKQo+PiArwqDCoMKgIGlmIChjb25zb2xlOjpvcGVuKCkgIT0gMCkK
Pj4gK8KgwqDCoMKgwqDCoMKgIGtwcmludGYoImZhaWxlZCB0byBvcGVuIGNvbnNvbGUsIGVycm9y
ID0gJWRcbiIsIGVycm5vKTsKPj4gK8KgwqDCoCBpZiAoZHVwKDApICE9IDEpCj4+ICvCoMKgwqDC
oMKgwqDCoCBrcHJpbnRmKCJmYWlsZWQgdG8gZHVwIGNvbnNvbGUgKDEpXG4iKTsKPj4gK8KgwqDC
oCBpZiAoZHVwKDApICE9IDIpCj4+ICvCoMKgwqDCoMKgwqDCoCBrcHJpbnRmKCJmYWlsZWQgdG8g
ZHVwIGNvbnNvbGUgKDIpXG4iKTsKPj4gK8KgwqDCoCB2ZnNfaW5pdGlhbGl6ZWQgPSAxOwo+PiDC
oCB9Cj4+IMKgIHZvaWQgdmZzX2V4aXQodm9pZCkKPj4gwqAgewo+PiAtwqDCoMKgIC8qIEZyZWUg
dXAgbWFpbl90YXNrIChzdG9yZXMgY3dkIGRhdGEpIHJlc291cmNlcyAqLwo+PiAtwqDCoMKgIHJl
cGxhY2VfY3dkKG1haW5fdGFzaywgbnVsbHB0ciwgW10oKSB7IHJldHVybiAwOyB9KTsKPj4gLcKg
wqDCoCAvKiBVbm1vdW50IGFsbCBmaWxlIHN5c3RlbXMgKi8KPj4gLcKgwqDCoCB1bm1vdW50X3Jv
b3RmcygpOwo+PiAtwqDCoMKgIC8qIEZpbmlzaCB3aXRoIHRoZSBiaW8gbGF5ZXIgKi8KPj4gLcKg
wqDCoCBiaW9fc3luYygpOwo+PiArwqDCoMKgIC8qIEZyZWUgdXAgbWFpbl90YXNrIChzdG9yZXMg
Y3dkIGRhdGEpIHJlc291cmNlcyAqLwo+PiArwqDCoMKgIHJlcGxhY2VfY3dkKG1haW5fdGFzaywg
bnVsbHB0ciwgW10oKSB7IHJldHVybiAwOyB9KTsKPj4gK8KgwqDCoCAvKiBVbm1vdW50IGFsbCBm
aWxlIHN5c3RlbXMgKi8KPj4gK8KgwqDCoCB1bm1vdW50X3Jvb3RmcygpOwo+PiArwqDCoMKgIC8q
IEZpbmlzaCB3aXRoIHRoZSBiaW8gbGF5ZXIgKi8KPj4gK8KgwqDCoCBiaW9fc3luYygpOwo+PiDC
oCB9Cj4+IMKgIHZvaWQgc3lzX3BhbmljKGNvbnN0IGNoYXIgKnN0cikKPj4gwqAgewo+PiAtwqDC
oMKgIGFib3J0KCJwYW5pYzogJXMiLCBzdHIpOwo+PiArwqDCoMKgIGFib3J0KCJwYW5pYzogJXMi
LCBzdHIpOwo+PiDCoCB9Cj4+IGRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9tb3VudC5jIGIvbGli
L3Zmc2NvcmUvbW91bnQuYwo+PiBpbmRleCBkYWM0ZDA5Yy4uYjUxYjI3YTQgMTAwNjQ0Cj4+IC0t
LSBhL2xpYi92ZnNjb3JlL21vdW50LmMKPj4gKysrIGIvbGliL3Zmc2NvcmUvbW91bnQuYwo+PiBA
QCAtNjksMjg3ICs2OSwyODcgQEAgc3RhdGljIG11dGV4IG1vdW50X2xvY2s7Cj4+IMKgIHN0YXRp
YyBjb25zdCBzdHJ1Y3QgdmZzc3cgKgo+PiDCoCBmc19nZXRmcyhjb25zdCBjaGFyICpuYW1lKQo+
PiDCoCB7Cj4+IC3CoMKgwqAgY29uc3Qgc3RydWN0IHZmc3N3ICpmczsKPj4gLQo+PiAtwqDCoMKg
IGZvciAoZnMgPSB2ZnNzdzsgZnMtPnZzX25hbWU7IGZzKyspIHsKPj4gLcKgwqDCoMKgwqDCoMKg
IGlmICghc3RybmNtcChuYW1lLCBmcy0+dnNfbmFtZSwgRlNNQVhOQU1FUykpCj4+IC3CoMKgwqDC
oMKgwqDCoMKgwqDCoMKgIGJyZWFrOwo+PiAtwqDCoMKgIH0KPj4gLcKgwqDCoCBpZiAoIWZzLT52
c19uYW1lKQo+PiAtwqDCoMKgwqDCoMKgwqAgcmV0dXJuIG51bGxwdHI7Cj4+IC3CoMKgwqAgcmV0
dXJuIGZzOwo+PiArwqDCoMKgIGNvbnN0IHN0cnVjdCB2ZnNzdyAqZnM7Cj4+ICsKPj4gK8KgwqDC
oCBmb3IgKGZzID0gdmZzc3c7IGZzLT52c19uYW1lOyBmcysrKSB7Cj4+ICvCoMKgwqDCoMKgwqDC
oCBpZiAoIXN0cm5jbXAobmFtZSwgZnMtPnZzX25hbWUsIEZTTUFYTkFNRVMpKQo+PiArwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoCBicmVhazsKPj4gK8KgwqDCoCB9Cj4+ICvCoMKgwqAgaWYgKCFmcy0+
dnNfbmFtZSkKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBudWxscHRyOwo+PiArwqDCoMKgIHJl
dHVybiBmczsKPj4gwqAgfQo+PiDCoCBjb25zdCBjaGFyKgo+PiDCoCBmc19nZXRmc25hbWUodmZz
b3BzKiBvcHMpCj4+IMKgIHsKPj4gLcKgwqDCoCBmb3IgKGF1dG8gZnMgPSB2ZnNzdzsgZnMtPnZz
X25hbWU7IGZzKyspIHsKPj4gLcKgwqDCoMKgwqDCoMKgIGlmIChmcy0+dnNfb3AgPT0gb3BzKSB7
Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBmcy0+dnNfbmFtZTsKPj4gLcKgwqDC
oMKgwqDCoMKgIH0KPj4gLcKgwqDCoCB9Cj4+IC3CoMKgwqAgYWJvcnQoKTsKPj4gK8KgwqDCoCBm
b3IgKGF1dG8gZnMgPSB2ZnNzdzsgZnMtPnZzX25hbWU7IGZzKyspIHsKPj4gK8KgwqDCoMKgwqDC
oMKgIGlmIChmcy0+dnNfb3AgPT0gb3BzKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJl
dHVybiBmcy0+dnNfbmFtZTsKPj4gK8KgwqDCoMKgwqDCoMKgIH0KPj4gK8KgwqDCoCB9Cj4+ICvC
oMKgwqAgYWJvcnQoKTsKPj4gwqAgfQo+PiDCoCBpbnQKPj4gwqAgc3lzX21vdW50KGNvbnN0IGNo
YXIgKmRldiwgY29uc3QgY2hhciAqZGlyLCBjb25zdCBjaGFyICpmc25hbWUsIGludCAKPj4gZmxh
Z3MsIGNvbnN0IHZvaWQgKmRhdGEpCj4+IMKgIHsKPj4gLcKgwqDCoCBjb25zdCBzdHJ1Y3QgdmZz
c3cgKmZzOwo+PiAtwqDCoMKgIHN0cnVjdCBtb3VudCAqbXA7Cj4+IC3CoMKgwqAgc3RydWN0IGRl
dmljZSAqZGV2aWNlOwo+PiAtwqDCoMKgIHN0cnVjdCBkZW50cnkgKmRwX2NvdmVyZWQ7Cj4+IC3C
oMKgwqAgc3RydWN0IHZub2RlICp2cDsKPj4gLcKgwqDCoCBpbnQgZXJyb3I7Cj4+IC0KPj4gLcKg
wqDCoCBrcHJpbnRmKCJWRlM6IG1vdW50aW5nICVzIGF0ICVzXG4iLCBmc25hbWUsIGRpcik7Cj4+
IC0KPj4gLcKgwqDCoCBpZiAoIWRpciB8fCAqZGlyID09ICdcMCcpCj4+IC3CoMKgwqDCoMKgwqDC
oCByZXR1cm4gRU5PRU5UOwo+PiAtCj4+IC3CoMKgwqAgLyogRmluZCBhIGZpbGUgc3lzdGVtLiAq
Lwo+PiAtwqDCoMKgIGlmICghKGZzID0gZnNfZ2V0ZnMoZnNuYW1lKSkpCj4+IC3CoMKgwqDCoMKg
wqDCoCByZXR1cm4gRU5PREVWO8KgIC8qIE5vIHN1Y2ggZmlsZSBzeXN0ZW0gKi8KPj4gLQo+PiAt
wqDCoMKgIC8qIE9wZW4gZGV2aWNlLiBudWxscHRyIGNhbiBiZSBzcGVjaWZpZWQgYXMgYSBkZXZp
Y2UuICovCj4+IC3CoMKgwqAgLy8gQWxsb3cgZGV2aWNlX29wZW4oKSB0byBmYWlsLCBpbiB3aGlj
aCBjYXNlIGRldiBpcyBpbnRlcnByZXRlZAo+PiAtwqDCoMKgIC8vIGJ5IHRoZSBmaWxlIHN5c3Rl
bSBtb3VudCByb3V0aW5lIChlLmcgemZzIHBvb2xzKQo+PiAtwqDCoMKgIGRldmljZSA9IDA7Cj4+
IC3CoMKgwqAgaWYgKGRldiAmJiBzdHJuY21wKGRldiwgIi9kZXYvIiwgNSkgPT0gMCkKPj4gLcKg
wqDCoMKgwqDCoMKgIGRldmljZV9vcGVuKGRldiArIDUsIERPX1JEV1IsICZkZXZpY2UpOwo+PiAt
Cj4+IC3CoMKgwqAgLyogQ2hlY2sgaWYgZGV2aWNlIG9yIGRpcmVjdG9yeSBoYXMgYWxyZWFkeSBi
ZWVuIG1vdW50ZWQuICovCj4+IC3CoMKgwqAgLy8gV2UgbmVlZCB0byBhdm9pZCB0aGUgc2l0dWF0
aW9uIHdoZXJlIGFmdGVyIHdlIGFscmVhZHkgdmVyaWZpZWQgCj4+IHRoYXQKPj4gLcKgwqDCoCAv
LyB0aGUgbW91bnQgcG9pbnQgaXMgZnJlZSwgYnV0IGJlZm9yZSB3ZSBhY3R1YWxseSBhZGQgaXQg
dG8gCj4+IG1vdW50X2xpc3QsCj4+IC3CoMKgwqAgLy8gYW5vdGhlciBjb25jdXJyZW50IG1vdW50
IGFkZHMgaXQuIFNvIHdlIHVzZSBhIG5ldyBtdXRleCB0byBlbnN1cmUKPj4gLcKgwqDCoCAvLyB0
aGF0IG9ubHkgb25lIHN5c19tb3VudCgpIHJ1bnMgYXQgYSB0aW1lLiBXZSBjYW5ub3QgcmV1c2Ug
dGhlIAo+PiBleGlzdGluZwo+PiAtwqDCoMKgIC8vIG1vdW50X2xvY2sgZm9yIHRoaXMgcHVycG9z
ZTogSWYgd2UgdGFrZSBtb3VudF9sb2NrIGFuZCB0aGVuIGRvCj4+IC3CoMKgwqAgLy8gbG9va3Vw
cywgdGhpcyBpcyBsb2NrIG9yZGVyIGludmVyc2lvbiBhbmQgY2FuIHJlc3VsdCBpbiBkZWFkbG9j
ay4KPj4gLcKgwqDCoCBzdGF0aWMgbXV0ZXggc3lzX21vdW50X2xvY2s7Cj4+IC3CoMKgwqAgU0NP
UEVfTE9DSyhzeXNfbW91bnRfbG9jayk7Cj4+IC3CoMKgwqAgV0lUSF9MT0NLKG1vdW50X2xvY2sp
IHsKPj4gLcKgwqDCoMKgwqDCoMKgIGZvciAoYXV0byYmIG1wIDogbW91bnRfbGlzdCkgewo+PiAt
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoIXN0cmNtcChtcC0+bV9wYXRoLCBkaXIpIHx8Cj4+
IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKGRldmljZSAmJiBtcC0+bV9kZXYgPT0g
ZGV2aWNlKSkgewo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGVycm9yID0gRUJV
U1k7wqAgLyogQWxyZWFkeSBtb3VudGVkICovCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqAgZ290byBlcnIxOwo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+IC3CoMKgwqDC
oMKgwqDCoCB9Cj4+IC3CoMKgwqAgfQo+PiAtwqDCoMKgIC8qCj4+IC3CoMKgwqDCoCAqIENyZWF0
ZSBWRlMgbW91bnQgZW50cnkuCj4+IC3CoMKgwqDCoCAqLwo+PiAtwqDCoMKgIGlmICghKG1wID0g
bmV3IG1vdW50KSkgewo+PiAtwqDCoMKgwqDCoMKgwqAgZXJyb3IgPSBFTk9NRU07Cj4+IC3CoMKg
wqDCoMKgwqDCoCBnb3RvIGVycjE7Cj4+IC3CoMKgwqAgfQo+PiAtwqDCoMKgIG1wLT5tX2NvdW50
ID0gMDsKPj4gLcKgwqDCoCBtcC0+bV9vcCA9IGZzLT52c19vcDsKPj4gLcKgwqDCoCBtcC0+bV9m
bGFncyA9IGZsYWdzOwo+PiAtwqDCoMKgIG1wLT5tX2RldiA9IGRldmljZTsKPj4gLcKgwqDCoCBt
cC0+bV9kYXRhID0gbnVsbHB0cjsKPj4gLcKgwqDCoCBzdHJsY3B5KG1wLT5tX3BhdGgsIGRpciwg
c2l6ZW9mKG1wLT5tX3BhdGgpKTsKPj4gLcKgwqDCoCBzdHJsY3B5KG1wLT5tX3NwZWNpYWwsIGRl
diwgc2l6ZW9mKG1wLT5tX3NwZWNpYWwpKTsKPj4gLQo+PiAtwqDCoMKgIC8qCj4+IC3CoMKgwqDC
oCAqIEdldCB2bm9kZSB0byBiZSBjb3ZlcmVkIGluIHRoZSB1cHBlciBmaWxlIHN5c3RlbS4KPj4g
LcKgwqDCoMKgICovCj4+IC3CoMKgwqAgaWYgKCpkaXIgPT0gJy8nICYmICooZGlyICsgMSkgPT0g
J1wwJykgewo+PiAtwqDCoMKgwqDCoMKgwqAgLyogSWdub3JlIGlmIGl0IG1vdW50cyB0byBnbG9i
YWwgcm9vdCBkaXJlY3RvcnkuICovCj4+IC3CoMKgwqDCoMKgwqDCoCBkcF9jb3ZlcmVkID0gbnVs
bHB0cjsKPj4gLcKgwqDCoCB9IGVsc2Ugewo+PiAtwqDCoMKgwqDCoMKgwqAgaWYgKChlcnJvciA9
IG5hbWVpKGRpciwgJmRwX2NvdmVyZWQpKSAhPSAwKSB7Cj4+IC0KPj4gLcKgwqDCoMKgwqDCoMKg
wqDCoMKgwqAgZXJyb3IgPSBFTk9FTlQ7Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8g
ZXJyMjsKPj4gLcKgwqDCoMKgwqDCoMKgIH0KPj4gLcKgwqDCoMKgwqDCoMKgIGlmIChkcF9jb3Zl
cmVkLT5kX3Zub2RlLT52X3R5cGUgIT0gVkRJUikgewo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oCBlcnJvciA9IEVOT1RESVI7Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gZXJyMzsK
Pj4gLcKgwqDCoMKgwqDCoMKgIH0KPj4gLcKgwqDCoCB9Cj4+IC3CoMKgwqAgbXAtPm1fY292ZXJl
ZCA9IGRwX2NvdmVyZWQ7Cj4+IC0KPj4gLcKgwqDCoCAvKgo+PiAtwqDCoMKgwqAgKiBDcmVhdGUg
YSByb290IHZub2RlIGZvciB0aGlzIGZpbGUgc3lzdGVtLgo+PiAtwqDCoMKgwqAgKi8KPj4gLcKg
wqDCoCB2Z2V0KG1wLCAwLCAmdnApOwo+PiAtwqDCoMKgIGlmICh2cCA9PSBudWxscHRyKSB7Cj4+
IC3CoMKgwqDCoMKgwqDCoCBlcnJvciA9IEVOT01FTTsKPj4gLcKgwqDCoMKgwqDCoMKgIGdvdG8g
ZXJyMzsKPj4gLcKgwqDCoCB9Cj4+IC3CoMKgwqAgdnAtPnZfdHlwZSA9IFZESVI7Cj4+IC3CoMKg
wqAgdnAtPnZfZmxhZ3MgPSBWUk9PVDsKPj4gLcKgwqDCoCB2cC0+dl9tb2RlID0gU19JRkRJUiB8
IFNfSVJVU1IgfCBTX0lXVVNSIHwgU19JWFVTUjsKPj4gLQo+PiAtwqDCoMKgIG1wLT5tX3Jvb3Qg
PSBkZW50cnlfYWxsb2MobnVsbHB0ciwgdnAsICIvIik7Cj4+IC3CoMKgwqAgaWYgKCFtcC0+bV9y
b290KSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCB2cHV0KHZwKTsKPj4gLcKgwqDCoMKgwqDCoMKgIGdv
dG8gZXJyMzsKPj4gLcKgwqDCoCB9Cj4+IC3CoMKgwqAgdnB1dCh2cCk7Cj4+IC0KPj4gLcKgwqDC
oCAvKgo+PiAtwqDCoMKgwqAgKiBDYWxsIGEgZmlsZSBzeXN0ZW0gc3BlY2lmaWMgcm91dGluZS4K
Pj4gLcKgwqDCoMKgICovCj4+IC3CoMKgwqAgaWYgKChlcnJvciA9IFZGU19NT1VOVChtcCwgZGV2
LCBmbGFncywgZGF0YSkpICE9IDApCj4+IC3CoMKgwqDCoMKgwqDCoCBnb3RvIGVycjQ7Cj4+IC0K
Pj4gLcKgwqDCoCBpZiAobXAtPm1fZmxhZ3MgJiBNTlRfUkRPTkxZKQo+PiAtwqDCoMKgwqDCoMKg
wqAgdnAtPnZfbW9kZSAmPX5TX0lXVVNSOwo+PiAtCj4+IC3CoMKgwqAgLyoKPj4gLcKgwqDCoMKg
ICogSW5zZXJ0IHRvIG1vdW50IGxpc3QKPj4gLcKgwqDCoMKgICovCj4+IC3CoMKgwqAgV0lUSF9M
T0NLKG1vdW50X2xvY2spIHsKPj4gLcKgwqDCoMKgwqDCoMKgIG1vdW50X2xpc3QucHVzaF9iYWNr
KG1wKTsKPj4gLcKgwqDCoCB9Cj4+IC0KPj4gLcKgwqDCoCByZXR1cm4gMDvCoMKgIC8qIHN1Y2Nl
c3MgKi8KPj4gK8KgwqDCoCBjb25zdCBzdHJ1Y3QgdmZzc3cgKmZzOwo+PiArwqDCoMKgIHN0cnVj
dCBtb3VudCAqbXA7Cj4+ICvCoMKgwqAgc3RydWN0IGRldmljZSAqZGV2aWNlOwo+PiArwqDCoMKg
IHN0cnVjdCBkZW50cnkgKmRwX2NvdmVyZWQ7Cj4+ICvCoMKgwqAgc3RydWN0IHZub2RlICp2cDsK
Pj4gK8KgwqDCoCBpbnQgZXJyb3I7Cj4+ICsKPj4gK8KgwqDCoCBrcHJpbnRmKCJWRlM6IG1vdW50
aW5nICVzIGF0ICVzXG4iLCBmc25hbWUsIGRpcik7Cj4+ICsKPj4gK8KgwqDCoCBpZiAoIWRpciB8
fCAqZGlyID09ICdcMCcpCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gRU5PRU5UOwo+PiArCj4+
ICvCoMKgwqAgLyogRmluZCBhIGZpbGUgc3lzdGVtLiAqLwo+PiArwqDCoMKgIGlmICghKGZzID0g
ZnNfZ2V0ZnMoZnNuYW1lKSkpCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gRU5PREVWO8KgIC8q
IE5vIHN1Y2ggZmlsZSBzeXN0ZW0gKi8KPj4gKwo+PiArwqDCoMKgIC8qIE9wZW4gZGV2aWNlLiBu
dWxscHRyIGNhbiBiZSBzcGVjaWZpZWQgYXMgYSBkZXZpY2UuICovCj4+ICvCoMKgwqAgLy8gQWxs
b3cgZGV2aWNlX29wZW4oKSB0byBmYWlsLCBpbiB3aGljaCBjYXNlIGRldiBpcyBpbnRlcnByZXRl
ZAo+PiArwqDCoMKgIC8vIGJ5IHRoZSBmaWxlIHN5c3RlbSBtb3VudCByb3V0aW5lIChlLmcgemZz
IHBvb2xzKQo+PiArwqDCoMKgIGRldmljZSA9IDA7Cj4+ICvCoMKgwqAgaWYgKGRldiAmJiBzdHJu
Y21wKGRldiwgIi9kZXYvIiwgNSkgPT0gMCkKPj4gK8KgwqDCoMKgwqDCoMKgIGRldmljZV9vcGVu
KGRldiArIDUsIERPX1JEV1IsICZkZXZpY2UpOwo+PiArCj4+ICvCoMKgwqAgLyogQ2hlY2sgaWYg
ZGV2aWNlIG9yIGRpcmVjdG9yeSBoYXMgYWxyZWFkeSBiZWVuIG1vdW50ZWQuICovCj4+ICvCoMKg
wqAgLy8gV2UgbmVlZCB0byBhdm9pZCB0aGUgc2l0dWF0aW9uIHdoZXJlIGFmdGVyIHdlIGFscmVh
ZHkgdmVyaWZpZWQgCj4+IHRoYXQKPj4gK8KgwqDCoCAvLyB0aGUgbW91bnQgcG9pbnQgaXMgZnJl
ZSwgYnV0IGJlZm9yZSB3ZSBhY3R1YWxseSBhZGQgaXQgdG8gCj4+IG1vdW50X2xpc3QsCj4+ICvC
oMKgwqAgLy8gYW5vdGhlciBjb25jdXJyZW50IG1vdW50IGFkZHMgaXQuIFNvIHdlIHVzZSBhIG5l
dyBtdXRleCB0byBlbnN1cmUKPj4gK8KgwqDCoCAvLyB0aGF0IG9ubHkgb25lIHN5c19tb3VudCgp
IHJ1bnMgYXQgYSB0aW1lLiBXZSBjYW5ub3QgcmV1c2UgdGhlIAo+PiBleGlzdGluZwo+PiArwqDC
oMKgIC8vIG1vdW50X2xvY2sgZm9yIHRoaXMgcHVycG9zZTogSWYgd2UgdGFrZSBtb3VudF9sb2Nr
IGFuZCB0aGVuIGRvCj4+ICvCoMKgwqAgLy8gbG9va3VwcywgdGhpcyBpcyBsb2NrIG9yZGVyIGlu
dmVyc2lvbiBhbmQgY2FuIHJlc3VsdCBpbiBkZWFkbG9jay4KPj4gK8KgwqDCoCBzdGF0aWMgbXV0
ZXggc3lzX21vdW50X2xvY2s7Cj4+ICvCoMKgwqAgU0NPUEVfTE9DSyhzeXNfbW91bnRfbG9jayk7
Cj4+ICvCoMKgwqAgV0lUSF9MT0NLKG1vdW50X2xvY2spIHsKPj4gK8KgwqDCoMKgwqDCoMKgIGZv
ciAoYXV0byYmIG1wIDogbW91bnRfbGlzdCkgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBp
ZiAoIXN0cmNtcChtcC0+bV9wYXRoLCBkaXIpIHx8Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqAgKGRldmljZSAmJiBtcC0+bV9kZXYgPT0gZGV2aWNlKSkgewo+PiArwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGVycm9yID0gRUJVU1k7wqAgLyogQWxyZWFkeSBtb3VudGVk
ICovCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBlcnIxOwo+PiArwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+ICvCoMKgwqDCoMKgwqDCoCB9Cj4+ICvCoMKgwqAgfQo+
PiArwqDCoMKgIC8qCj4+ICvCoMKgwqDCoCAqIENyZWF0ZSBWRlMgbW91bnQgZW50cnkuCj4+ICvC
oMKgwqDCoCAqLwo+PiArwqDCoMKgIGlmICghKG1wID0gbmV3IG1vdW50KSkgewo+PiArwqDCoMKg
wqDCoMKgwqAgZXJyb3IgPSBFTk9NRU07Cj4+ICvCoMKgwqDCoMKgwqDCoCBnb3RvIGVycjE7Cj4+
ICvCoMKgwqAgfQo+PiArwqDCoMKgIG1wLT5tX2NvdW50ID0gMDsKPj4gK8KgwqDCoCBtcC0+bV9v
cCA9IGZzLT52c19vcDsKPj4gK8KgwqDCoCBtcC0+bV9mbGFncyA9IGZsYWdzOwo+PiArwqDCoMKg
IG1wLT5tX2RldiA9IGRldmljZTsKPj4gK8KgwqDCoCBtcC0+bV9kYXRhID0gbnVsbHB0cjsKPj4g
K8KgwqDCoCBzdHJsY3B5KG1wLT5tX3BhdGgsIGRpciwgc2l6ZW9mKG1wLT5tX3BhdGgpKTsKPj4g
K8KgwqDCoCBzdHJsY3B5KG1wLT5tX3NwZWNpYWwsIGRldiwgc2l6ZW9mKG1wLT5tX3NwZWNpYWwp
KTsKPj4gKwo+PiArwqDCoMKgIC8qCj4+ICvCoMKgwqDCoCAqIEdldCB2bm9kZSB0byBiZSBjb3Zl
cmVkIGluIHRoZSB1cHBlciBmaWxlIHN5c3RlbS4KPj4gK8KgwqDCoMKgICovCj4+ICvCoMKgwqAg
aWYgKCpkaXIgPT0gJy8nICYmICooZGlyICsgMSkgPT0gJ1wwJykgewo+PiArwqDCoMKgwqDCoMKg
wqAgLyogSWdub3JlIGlmIGl0IG1vdW50cyB0byBnbG9iYWwgcm9vdCBkaXJlY3RvcnkuICovCj4+
ICvCoMKgwqDCoMKgwqDCoCBkcF9jb3ZlcmVkID0gbnVsbHB0cjsKPj4gK8KgwqDCoCB9IGVsc2Ug
ewo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKChlcnJvciA9IG5hbWVpKGRpciwgJmRwX2NvdmVyZWQp
KSAhPSAwKSB7Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZXJyb3IgPSBFTk9FTlQ7
Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gZXJyMjsKPj4gK8KgwqDCoMKgwqDCoMKg
IH0KPj4gK8KgwqDCoMKgwqDCoMKgIGlmIChkcF9jb3ZlcmVkLT5kX3Zub2RlLT52X3R5cGUgIT0g
VkRJUikgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlcnJvciA9IEVOT1RESVI7Cj4+ICvC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gZXJyMzsKPj4gK8KgwqDCoMKgwqDCoMKgIH0KPj4g
K8KgwqDCoCB9Cj4+ICvCoMKgwqAgbXAtPm1fY292ZXJlZCA9IGRwX2NvdmVyZWQ7Cj4+ICsKPj4g
K8KgwqDCoCAvKgo+PiArwqDCoMKgwqAgKiBDcmVhdGUgYSByb290IHZub2RlIGZvciB0aGlzIGZp
bGUgc3lzdGVtLgo+PiArwqDCoMKgwqAgKi8KPj4gK8KgwqDCoCB2Z2V0KG1wLCAwLCAmdnApOwo+
PiArwqDCoMKgIGlmICh2cCA9PSBudWxscHRyKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBlcnJvciA9
IEVOT01FTTsKPj4gK8KgwqDCoMKgwqDCoMKgIGdvdG8gZXJyMzsKPj4gK8KgwqDCoCB9Cj4+ICvC
oMKgwqAgdnAtPnZfdHlwZSA9IFZESVI7Cj4+ICvCoMKgwqAgdnAtPnZfZmxhZ3MgPSBWUk9PVDsK
Pj4gK8KgwqDCoCB2cC0+dl9tb2RlID0gU19JRkRJUiB8IFNfSVJVU1IgfCBTX0lXVVNSIHwgU19J
WFVTUjsKPj4gKwo+PiArwqDCoMKgIG1wLT5tX3Jvb3QgPSBkZW50cnlfYWxsb2MobnVsbHB0ciwg
dnAsICIvIik7Cj4+ICvCoMKgwqAgaWYgKCFtcC0+bV9yb290KSB7Cj4+ICvCoMKgwqDCoMKgwqDC
oCB2cHV0KHZwKTsKPj4gK8KgwqDCoMKgwqDCoMKgIGdvdG8gZXJyMzsKPj4gK8KgwqDCoCB9Cj4+
ICvCoMKgwqAgdnB1dCh2cCk7Cj4+ICsKPj4gK8KgwqDCoCAvKgo+PiArwqDCoMKgwqAgKiBDYWxs
IGEgZmlsZSBzeXN0ZW0gc3BlY2lmaWMgcm91dGluZS4KPj4gK8KgwqDCoMKgICovCj4+ICvCoMKg
wqAgaWYgKChlcnJvciA9IFZGU19NT1VOVChtcCwgZGV2LCBmbGFncywgZGF0YSkpICE9IDApCj4+
ICvCoMKgwqDCoMKgwqDCoCBnb3RvIGVycjQ7Cj4+ICsKPj4gK8KgwqDCoCBpZiAobXAtPm1fZmxh
Z3MgJiBNTlRfUkRPTkxZKQo+PiArwqDCoMKgwqDCoMKgwqAgdnAtPnZfbW9kZSAmPX5TX0lXVVNS
Owo+PiArCj4+ICvCoMKgwqAgLyoKPj4gK8KgwqDCoMKgICogSW5zZXJ0IHRvIG1vdW50IGxpc3QK
Pj4gK8KgwqDCoMKgICovCj4+ICvCoMKgwqAgV0lUSF9MT0NLKG1vdW50X2xvY2spIHsKPj4gK8Kg
wqDCoMKgwqDCoMKgIG1vdW50X2xpc3QucHVzaF9iYWNrKG1wKTsKPj4gK8KgwqDCoCB9Cj4+ICsK
Pj4gK8KgwqDCoCByZXR1cm4gMDvCoMKgIC8qIHN1Y2Nlc3MgKi8KPj4gwqDCoCBlcnI0Ogo+PiAt
wqDCoMKgIGRyZWxlKG1wLT5tX3Jvb3QpOwo+PiArwqDCoMKgIGRyZWxlKG1wLT5tX3Jvb3QpOwo+
PiDCoMKgIGVycjM6Cj4+IC3CoMKgwqAgaWYgKGRwX2NvdmVyZWQpCj4+IC3CoMKgwqDCoMKgwqDC
oCBkcmVsZShkcF9jb3ZlcmVkKTsKPj4gK8KgwqDCoCBpZiAoZHBfY292ZXJlZCkKPj4gK8KgwqDC
oMKgwqDCoMKgIGRyZWxlKGRwX2NvdmVyZWQpOwo+PiDCoMKgIGVycjI6Cj4+IC3CoMKgwqAgZGVs
ZXRlIG1wOwo+PiArwqDCoMKgIGRlbGV0ZSBtcDsKPj4gwqDCoCBlcnIxOgo+PiAtwqDCoMKgIGlm
IChkZXZpY2UpCj4+IC3CoMKgwqDCoMKgwqDCoCBkZXZpY2VfY2xvc2UoZGV2aWNlKTsKPj4gK8Kg
wqDCoCBpZiAoZGV2aWNlKQo+PiArwqDCoMKgwqDCoMKgwqAgZGV2aWNlX2Nsb3NlKGRldmljZSk7
Cj4+IC3CoMKgwqAgcmV0dXJuIGVycm9yOwo+PiArwqDCoMKgIHJldHVybiBlcnJvcjsKPj4gwqAg
fQo+PiDCoCB2b2lkCj4+IMKgIHJlbGVhc2VfbXBfZGVudHJpZXMoc3RydWN0IG1vdW50ICptcCkK
Pj4gwqAgewo+PiAtwqDCoMKgIC8qIERlY3JlbWVudCByZWZlcmVjZSBjb3VudCBvZiByb290IHZu
b2RlICovCj4+IC3CoMKgwqAgaWYgKG1wLT5tX2NvdmVyZWQpIHsKPj4gLcKgwqDCoMKgwqDCoMKg
IGRyZWxlKG1wLT5tX2NvdmVyZWQpOwo+PiAtwqDCoMKgIH0KPj4gK8KgwqDCoCAvKiBEZWNyZW1l
bnQgcmVmZXJlY2UgY291bnQgb2Ygcm9vdCB2bm9kZSAqLwo+PiArwqDCoMKgIGlmIChtcC0+bV9j
b3ZlcmVkKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBkcmVsZShtcC0+bV9jb3ZlcmVkKTsKPj4gK8Kg
wqDCoCB9Cj4+IC3CoMKgwqAgLyogUmVsZWFzZSByb290IGRlbnRyeSAqLwo+PiAtwqDCoMKgIGRy
ZWxlKG1wLT5tX3Jvb3QpOwo+PiArwqDCoMKgIC8qIFJlbGVhc2Ugcm9vdCBkZW50cnkgKi8KPj4g
K8KgwqDCoCBkcmVsZShtcC0+bV9yb290KTsKPj4gwqAgfQo+PiDCoCBpbnQKPj4gwqAgc3lzX3Vt
b3VudDIoY29uc3QgY2hhciAqcGF0aCwgaW50IGZsYWdzKQo+PiDCoCB7Cj4+IC3CoMKgwqAgc3Ry
dWN0IG1vdW50ICptcDsKPj4gLcKgwqDCoCBpbnQgZXJyb3IsIHBhdGhsZW47Cj4+ICvCoMKgwqAg
c3RydWN0IG1vdW50ICptcDsKPj4gK8KgwqDCoCBpbnQgZXJyb3IsIHBhdGhsZW47Cj4+IC3CoMKg
wqAga3ByaW50ZigiVkZTOiB1bm1vdW50aW5nICVzXG4iLCBwYXRoKTsKPj4gK8KgwqDCoCBrcHJp
bnRmKCJWRlM6IHVubW91bnRpbmcgJXNcbiIsIHBhdGgpOwo+PiAtwqDCoMKgIFNDT1BFX0xPQ0so
bW91bnRfbG9jayk7Cj4+ICvCoMKgwqAgU0NPUEVfTE9DSyhtb3VudF9sb2NrKTsKPj4gLcKgwqDC
oCBwYXRobGVuID0gc3RybGVuKHBhdGgpOwo+PiAtwqDCoMKgIGlmIChwYXRobGVuID49IE1BWFBB
VEhMRU4pIHsKPj4gLcKgwqDCoMKgwqDCoMKgIGVycm9yID0gRU5BTUVUT09MT05HOwo+PiAtwqDC
oMKgwqDCoMKgwqAgZ290byBvdXQ7Cj4+IC3CoMKgwqAgfQo+PiArwqDCoMKgIHBhdGhsZW4gPSBz
dHJsZW4ocGF0aCk7Cj4+ICvCoMKgwqAgaWYgKHBhdGhsZW4gPj0gTUFYUEFUSExFTikgewo+PiAr
wqDCoMKgwqDCoMKgwqAgZXJyb3IgPSBFTkFNRVRPT0xPTkc7Cj4+ICvCoMKgwqDCoMKgwqDCoCBn
b3RvIG91dDsKPj4gK8KgwqDCoCB9Cj4+IC3CoMKgwqAgLyogR2V0IG1vdW50IGVudHJ5ICovCj4+
IC3CoMKgwqAgZm9yIChhdXRvJiYgdG1wIDogbW91bnRfbGlzdCkgewo+PiAtwqDCoMKgwqDCoMKg
wqAgaWYgKCFzdHJjbXAocGF0aCwgdG1wLT5tX3BhdGgpKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoMKg
wqDCoMKgIG1wID0gdG1wOwo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIGZvdW5kOwo+
PiAtwqDCoMKgwqDCoMKgwqAgfQo+PiAtwqDCoMKgIH0KPj4gK8KgwqDCoCAvKiBHZXQgbW91bnQg
ZW50cnkgKi8KPj4gK8KgwqDCoCBmb3IgKGF1dG8mJiB0bXAgOiBtb3VudF9saXN0KSB7Cj4+ICvC
oMKgwqDCoMKgwqDCoCBpZiAoIXN0cmNtcChwYXRoLCB0bXAtPm1fcGF0aCkpIHsKPj4gK8KgwqDC
oMKgwqDCoMKgwqDCoMKgwqAgbXAgPSB0bXA7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdv
dG8gZm91bmQ7Cj4+ICvCoMKgwqDCoMKgwqDCoCB9Cj4+ICvCoMKgwqAgfQo+PiAtwqDCoMKgIGVy
cm9yID0gRUlOVkFMOwo+PiAtwqDCoMKgIGdvdG8gb3V0Owo+PiArwqDCoMKgIGVycm9yID0gRUlO
VkFMOwo+PiArwqDCoMKgIGdvdG8gb3V0Owo+PiDCoCBmb3VuZDoKPj4gLcKgwqDCoCAvKgo+PiAt
wqDCoMKgwqAgKiBSb290IGZzIGNhbiBub3QgYmUgdW5tb3VudGVkLgo+PiAtwqDCoMKgwqAgKi8K
Pj4gLcKgwqDCoCBpZiAobXAtPm1fY292ZXJlZCA9PSBudWxscHRyICYmICEoZmxhZ3MgJiBNTlRf
Rk9SQ0UpKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCBlcnJvciA9IEVJTlZBTDsKPj4gLcKgwqDCoMKg
wqDCoMKgIGdvdG8gb3V0Owo+PiAtwqDCoMKgIH0KPj4gLQo+PiAtwqDCoMKgIGlmICgoZXJyb3Ig
PSBWRlNfVU5NT1VOVChtcCwgZmxhZ3MpKSAhPSAwKQo+PiAtwqDCoMKgwqDCoMKgwqAgZ290byBv
dXQ7Cj4+IC3CoMKgwqAgbW91bnRfbGlzdC5yZW1vdmUobXApOwo+PiArwqDCoMKgIC8qCj4+ICvC
oMKgwqDCoCAqIFJvb3QgZnMgY2FuIG5vdCBiZSB1bm1vdW50ZWQuCj4+ICvCoMKgwqDCoCAqLwo+
PiArwqDCoMKgIGlmIChtcC0+bV9jb3ZlcmVkID09IG51bGxwdHIgJiYgIShmbGFncyAmIE1OVF9G
T1JDRSkpIHsKPj4gK8KgwqDCoMKgwqDCoMKgIGVycm9yID0gRUlOVkFMOwo+PiArwqDCoMKgwqDC
oMKgwqAgZ290byBvdXQ7Cj4+ICvCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqAgaWYgKChlcnJvciA9
IFZGU19VTk1PVU5UKG1wLCBmbGFncykpICE9IDApCj4+ICvCoMKgwqDCoMKgwqDCoCBnb3RvIG91
dDsKPj4gK8KgwqDCoCBtb3VudF9saXN0LnJlbW92ZShtcCk7Cj4+IMKgICNpZmRlZiBIQVZFX0JV
RkZFUlMKPj4gLcKgwqDCoCAvKiBGbHVzaCBhbGwgYnVmZmVycyAqLwo+PiAtwqDCoMKgIGJpbnZh
bChtcC0+bV9kZXYpOwo+PiArwqDCoMKgIC8qIEZsdXNoIGFsbCBidWZmZXJzICovCj4+ICvCoMKg
wqAgYmludmFsKG1wLT5tX2Rldik7Cj4+IMKgICNlbmRpZgo+PiAtwqDCoMKgIGlmIChtcC0+bV9k
ZXYpCj4+IC3CoMKgwqDCoMKgwqDCoCBkZXZpY2VfY2xvc2UobXAtPm1fZGV2KTsKPj4gLcKgwqDC
oCBkZWxldGUgbXA7Cj4+ICvCoMKgwqAgaWYgKG1wLT5tX2RldikKPj4gK8KgwqDCoMKgwqDCoMKg
IGRldmljZV9jbG9zZShtcC0+bV9kZXYpOwo+PiArwqDCoMKgIGRlbGV0ZSBtcDsKPj4gwqDCoCBv
dXQ6Cj4+IC3CoMKgwqAgcmV0dXJuIGVycm9yOwo+PiArwqDCoMKgIHJldHVybiBlcnJvcjsKPj4g
wqAgfQo+PiDCoCBpbnQKPj4gwqAgc3lzX3Vtb3VudChjb25zdCBjaGFyICpwYXRoKQo+PiDCoCB7
Cj4+IC3CoMKgwqAgcmV0dXJuIHN5c191bW91bnQyKHBhdGgsIDApOwo+PiArwqDCoMKgIHJldHVy
biBzeXNfdW1vdW50MihwYXRoLCAwKTsKPj4gwqAgfQo+PiDCoCBpbnQKPj4gwqAgc3lzX3Bpdm90
X3Jvb3QoY29uc3QgY2hhciAqbmV3X3Jvb3QsIGNvbnN0IGNoYXIgKnB1dF9vbGQpCj4+IMKgIHsK
Pj4gLcKgwqDCoCBzdHJ1Y3QgbW91bnQgKm5ld21wID0gbnVsbHB0ciwgKm9sZG1wID0gbnVsbHB0
cjsKPj4gLcKgwqDCoCBpbnQgZXJyb3I7Cj4+IC0KPj4gLcKgwqDCoCBXSVRIX0xPQ0sobW91bnRf
bG9jaykgewo+PiAtwqDCoMKgwqDCoMKgwqAgZm9yIChhdXRvJiYgbXAgOiBtb3VudF9saXN0KSB7
Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmICghc3RyY21wKG1wLT5tX3BhdGgsIG5ld19y
b290KSkgewo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG5ld21wID0gbXA7Cj4+
IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYg
KCFzdHJjbXAobXAtPm1fcGF0aCwgcHV0X29sZCkpIHsKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoCBvbGRtcCA9IG1wOwo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+IC3C
oMKgwqDCoMKgwqDCoCB9Cj4+IC3CoMKgwqDCoMKgwqDCoCBpZiAoIW5ld21wIHx8ICFvbGRtcCB8
fCBuZXdtcCA9PSBvbGRtcCkgewo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gRUlO
VkFMOwo+PiAtwqDCoMKgwqDCoMKgwqAgfQo+PiAtwqDCoMKgwqDCoMKgwqAgZm9yIChhdXRvJiYg
bXAgOiBtb3VudF9saXN0KSB7Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChtcCA9PSBu
ZXdtcCB8fCBtcCA9PSBvbGRtcCkgewo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
IGNvbnRpbnVlOwo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+IC3CoMKgwqDCoMKgwqDC
oMKgwqDCoMKgIGlmICghc3RybmNtcChtcC0+bV9wYXRoLCBwdXRfb2xkLCBzdHJsZW4ocHV0X29s
ZCkpKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIEVCVVNZOwo+
PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+IC3CoMKgwqDCoMKgwqDCoCB9Cj4+IC3CoMKg
wqDCoMKgwqDCoCBpZiAoKGVycm9yID0gVkZTX1VOTU9VTlQob2xkbXAsIDApKSAhPSAwKSB7Cj4+
IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBlcnJvcjsKPj4gLcKgwqDCoMKgwqDCoMKg
IH0KPj4gLcKgwqDCoMKgwqDCoMKgIG1vdW50X2xpc3QucmVtb3ZlKG9sZG1wKTsKPj4gLQo+PiAt
wqDCoMKgwqDCoMKgwqAgbmV3bXAtPm1fcm9vdC0+ZF92bm9kZS0+dl9tb3VudCA9IG5ld21wOwo+
PiAtCj4+IC3CoMKgwqDCoMKgwqDCoCBpZiAobmV3bXAtPm1fY292ZXJlZCkgewo+PiAtwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoCBkcmVsZShuZXdtcC0+bV9jb3ZlcmVkKTsKPj4gLcKgwqDCoMKgwqDC
oMKgIH0KPj4gLcKgwqDCoMKgwqDCoMKgIG5ld21wLT5tX2NvdmVyZWQgPSBudWxscHRyOwo+PiAt
Cj4+IC3CoMKgwqDCoMKgwqDCoCBpZiAobmV3bXAtPm1fcm9vdC0+ZF9wYXJlbnQpIHsKPj4gLcKg
wqDCoMKgwqDCoMKgwqDCoMKgwqAgZHJlbGUobmV3bXAtPm1fcm9vdC0+ZF9wYXJlbnQpOwo+PiAt
wqDCoMKgwqDCoMKgwqAgfQo+PiAtwqDCoMKgwqDCoMKgwqAgbmV3bXAtPm1fcm9vdC0+ZF9wYXJl
bnQgPSBudWxscHRyOwo+PiAtCj4+IC3CoMKgwqDCoMKgwqDCoCBzdHJsY3B5KG5ld21wLT5tX3Bh
dGgsICIvIiwgc2l6ZW9mKG5ld21wLT5tX3BhdGgpKTsKPj4gLcKgwqDCoCB9Cj4+IC3CoMKgwqAg
cmV0dXJuIDA7Cj4+ICvCoMKgwqAgc3RydWN0IG1vdW50ICpuZXdtcCA9IG51bGxwdHIsICpvbGRt
cCA9IG51bGxwdHI7Cj4+ICvCoMKgwqAgaW50IGVycm9yOwo+PiArCj4+ICvCoMKgwqAgV0lUSF9M
T0NLKG1vdW50X2xvY2spIHsKPj4gK8KgwqDCoMKgwqDCoMKgIGZvciAoYXV0byYmIG1wIDogbW91
bnRfbGlzdCkgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoIXN0cmNtcChtcC0+bV9w
YXRoLCBuZXdfcm9vdCkpIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBuZXdt
cCA9IG1wOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+ICvCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgIGlmICghc3RyY21wKG1wLT5tX3BhdGgsIHB1dF9vbGQpKSB7Cj4+ICvCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqAgb2xkbXAgPSBtcDsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg
wqAgfQo+PiArwqDCoMKgwqDCoMKgwqAgfQo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKCFuZXdtcCB8
fCAhb2xkbXAgfHwgbmV3bXAgPT0gb2xkbXApIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAg
cmV0dXJuIEVJTlZBTDsKPj4gK8KgwqDCoMKgwqDCoMKgIH0KPj4gK8KgwqDCoMKgwqDCoMKgIGZv
ciAoYXV0byYmIG1wIDogbW91bnRfbGlzdCkgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBp
ZiAobXAgPT0gbmV3bXAgfHwgbXAgPT0gb2xkbXApIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoCBjb250aW51ZTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+PiArwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoIXN0cm5jbXAobXAtPm1fcGF0aCwgcHV0X29sZCwgc3Ry
bGVuKHB1dF9vbGQpKSkgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVy
biBFQlVTWTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+PiArwqDCoMKgwqDCoMKgwqAg
fQo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKChlcnJvciA9IFZGU19VTk1PVU5UKG9sZG1wLCAwKSkg
IT0gMCkgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gZXJyb3I7Cj4+ICvCoMKg
wqDCoMKgwqDCoCB9Cj4+ICvCoMKgwqDCoMKgwqDCoCBtb3VudF9saXN0LnJlbW92ZShvbGRtcCk7
Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgIG5ld21wLT5tX3Jvb3QtPmRfdm5vZGUtPnZfbW91bnQg
PSBuZXdtcDsKPj4gKwo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKG5ld21wLT5tX2NvdmVyZWQpIHsK
Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZHJlbGUobmV3bXAtPm1fY292ZXJlZCk7Cj4+ICvC
oMKgwqDCoMKgwqDCoCB9Cj4+ICvCoMKgwqDCoMKgwqDCoCBuZXdtcC0+bV9jb3ZlcmVkID0gbnVs
bHB0cjsKPj4gKwo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKG5ld21wLT5tX3Jvb3QtPmRfcGFyZW50
KSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRyZWxlKG5ld21wLT5tX3Jvb3QtPmRfcGFy
ZW50KTsKPj4gK8KgwqDCoMKgwqDCoMKgIH0KPj4gK8KgwqDCoMKgwqDCoMKgIG5ld21wLT5tX3Jv
b3QtPmRfcGFyZW50ID0gbnVsbHB0cjsKPj4gKwo+PiArwqDCoMKgwqDCoMKgwqAgc3RybGNweShu
ZXdtcC0+bV9wYXRoLCAiLyIsIHNpemVvZihuZXdtcC0+bV9wYXRoKSk7Cj4+ICvCoMKgwqAgfQo+
PiArwqDCoMKgIHJldHVybiAwOwo+PiDCoCB9Cj4+IMKgIGludAo+PiDCoCBzeXNfc3luYyh2b2lk
KQo+PiDCoCB7Cj4+IC3CoMKgwqAgLyogQ2FsbCBlYWNoIG1vdW50ZWQgZmlsZSBzeXN0ZW0uICov
Cj4+IC3CoMKgwqAgV0lUSF9MT0NLKG1vdW50X2xvY2spIHsKPj4gLcKgwqDCoMKgwqDCoMKgIGZv
ciAoYXV0byYmIG1wIDogbW91bnRfbGlzdCkgewo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBW
RlNfU1lOQyhtcCk7Cj4+IC3CoMKgwqDCoMKgwqDCoCB9Cj4+IC3CoMKgwqAgfQo+PiArwqDCoMKg
IC8qIENhbGwgZWFjaCBtb3VudGVkIGZpbGUgc3lzdGVtLiAqLwo+PiArwqDCoMKgIFdJVEhfTE9D
Syhtb3VudF9sb2NrKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBmb3IgKGF1dG8mJiBtcCA6IG1vdW50
X2xpc3QpIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgVkZTX1NZTkMobXApOwo+PiArwqDC
oMKgwqDCoMKgwqAgfQo+PiArwqDCoMKgIH0KPj4gwqAgI2lmZGVmIEhBVkVfQlVGRkVSUwo+PiAt
wqDCoMKgIGJpb19zeW5jKCk7Cj4+ICvCoMKgwqAgYmlvX3N5bmMoKTsKPj4gwqAgI2VuZGlmCj4+
IC3CoMKgwqAgcmV0dXJuIDA7Cj4+ICvCoMKgwqAgcmV0dXJuIDA7Cj4+IMKgIH0KPj4gwqAgLyoK
Pj4gQEAgLTM2MCwyNSArMzYwLDI1IEBAIHN5c19zeW5jKHZvaWQpCj4+IMKgIHN0YXRpYyBzaXpl
X3QKPj4gwqAgY291bnRfbWF0Y2goY29uc3QgY2hhciAqcGF0aCwgY2hhciAqbW91bnRfcm9vdCkK
Pj4gwqAgewo+PiAtwqDCoMKgIHNpemVfdCBsZW4gPSAwOwo+PiArwqDCoMKgIHNpemVfdCBsZW4g
PSAwOwo+PiAtwqDCoMKgIHdoaWxlICgqcGF0aCAmJiAqbW91bnRfcm9vdCkgewo+PiAtwqDCoMKg
wqDCoMKgwqAgaWYgKCpwYXRoICE9ICptb3VudF9yb290KQo+PiAtwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoCBicmVhazsKPj4gK8KgwqDCoCB3aGlsZSAoKnBhdGggJiYgKm1vdW50X3Jvb3QpIHsKPj4g
K8KgwqDCoMKgwqDCoMKgIGlmICgqcGF0aCAhPSAqbW91bnRfcm9vdCkKPj4gK8KgwqDCoMKgwqDC
oMKgwqDCoMKgwqAgYnJlYWs7Cj4+IC3CoMKgwqDCoMKgwqDCoCBwYXRoKys7Cj4+IC3CoMKgwqDC
oMKgwqDCoCBtb3VudF9yb290Kys7Cj4+IC3CoMKgwqDCoMKgwqDCoCBsZW4rKzsKPj4gLcKgwqDC
oCB9Cj4+IC3CoMKgwqAgaWYgKCptb3VudF9yb290ICE9ICdcMCcpCj4+IC3CoMKgwqDCoMKgwqDC
oCByZXR1cm4gMDsKPj4gK8KgwqDCoMKgwqDCoMKgIHBhdGgrKzsKPj4gK8KgwqDCoMKgwqDCoMKg
IG1vdW50X3Jvb3QrKzsKPj4gK8KgwqDCoMKgwqDCoMKgIGxlbisrOwo+PiArwqDCoMKgIH0KPj4g
K8KgwqDCoCBpZiAoKm1vdW50X3Jvb3QgIT0gJ1wwJykKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVy
biAwOwo+PiAtwqDCoMKgIGlmIChsZW4gPT0gMSAmJiAqKHBhdGggLSAxKSA9PSAnLycpCj4+IC3C
oMKgwqDCoMKgwqDCoCByZXR1cm4gMTsKPj4gK8KgwqDCoCBpZiAobGVuID09IDEgJiYgKihwYXRo
IC0gMSkgPT0gJy8nKQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIDE7Cj4+IC3CoMKgwqAgaWYg
KCpwYXRoID09ICdcMCcgfHwgKnBhdGggPT0gJy8nKQo+PiAtwqDCoMKgwqDCoMKgwqAgcmV0dXJu
IGxlbjsKPj4gLcKgwqDCoCByZXR1cm4gMDsKPj4gK8KgwqDCoCBpZiAoKnBhdGggPT0gJ1wwJyB8
fCAqcGF0aCA9PSAnLycpCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gbGVuOwo+PiArwqDCoMKg
IHJldHVybiAwOwo+PiDCoCB9Cj4+IMKgIC8qCj4+IEBAIC0zOTAsMjggKzM5MCwyOCBAQCBjb3Vu
dF9tYXRjaChjb25zdCBjaGFyICpwYXRoLCBjaGFyICptb3VudF9yb290KQo+PiDCoCBpbnQKPj4g
wqAgdmZzX2ZpbmRyb290KGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBtb3VudCAqKm1wLCBjaGFy
ICoqcm9vdCkKPj4gwqAgewo+PiAtwqDCoMKgIHN0cnVjdCBtb3VudCAqbSA9IG51bGxwdHI7Cj4+
IC3CoMKgwqAgc2l6ZV90IGxlbiwgbWF4X2xlbiA9IDA7Cj4+IC0KPj4gLcKgwqDCoCBpZiAoIXBh
dGgpCj4+IC3CoMKgwqDCoMKgwqDCoCByZXR1cm4gLTE7Cj4+IC0KPj4gLcKgwqDCoCAvKiBGaW5k
IG1vdW50IHBvaW50IGZyb20gbmVhcmVzdCBwYXRoICovCj4+IC3CoMKgwqAgU0NPUEVfTE9DSyht
b3VudF9sb2NrKTsKPj4gLcKgwqDCoCBmb3IgKGF1dG8mJiB0bXAgOiBtb3VudF9saXN0KSB7Cj4+
IC3CoMKgwqDCoMKgwqDCoCBsZW4gPSBjb3VudF9tYXRjaChwYXRoLCB0bXAtPm1fcGF0aCk7Cj4+
IC3CoMKgwqDCoMKgwqDCoCBpZiAobGVuID4gbWF4X2xlbikgewo+PiAtwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoCBtYXhfbGVuID0gbGVuOwo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtID0gdG1w
Owo+PiAtwqDCoMKgwqDCoMKgwqAgfQo+PiAtwqDCoMKgIH0KPj4gLcKgwqDCoCBpZiAobSA9PSBu
dWxscHRyKQo+PiAtwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC0xOwo+PiAtwqDCoMKgICpyb290ID0g
KGNoYXIgKikocGF0aCArIG1heF9sZW4pOwo+PiAtwqDCoMKgIGlmICgqKnJvb3QgPT0gJy8nKQo+
PiAtwqDCoMKgwqDCoMKgwqAgKCpyb290KSsrOwo+PiAtwqDCoMKgICptcCA9IG07Cj4+IC3CoMKg
wqAgcmV0dXJuIDA7Cj4+ICvCoMKgwqAgc3RydWN0IG1vdW50ICptID0gbnVsbHB0cjsKPj4gK8Kg
wqDCoCBzaXplX3QgbGVuLCBtYXhfbGVuID0gMDsKPj4gKwo+PiArwqDCoMKgIGlmICghcGF0aCkK
Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAtMTsKPj4gKwo+PiArwqDCoMKgIC8qIEZpbmQgbW91
bnQgcG9pbnQgZnJvbSBuZWFyZXN0IHBhdGggKi8KPj4gK8KgwqDCoCBTQ09QRV9MT0NLKG1vdW50
X2xvY2spOwo+PiArwqDCoMKgIGZvciAoYXV0byYmIHRtcCA6IG1vdW50X2xpc3QpIHsKPj4gK8Kg
wqDCoMKgwqDCoMKgIGxlbiA9IGNvdW50X21hdGNoKHBhdGgsIHRtcC0+bV9wYXRoKTsKPj4gK8Kg
wqDCoMKgwqDCoMKgIGlmIChsZW4gPiBtYXhfbGVuKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgIG1heF9sZW4gPSBsZW47Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG0gPSB0bXA7Cj4+
ICvCoMKgwqDCoMKgwqDCoCB9Cj4+ICvCoMKgwqAgfQo+PiArwqDCoMKgIGlmIChtID09IG51bGxw
dHIpCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gLTE7Cj4+ICvCoMKgwqAgKnJvb3QgPSAoY2hh
ciAqKShwYXRoICsgbWF4X2xlbik7Cj4+ICvCoMKgwqAgaWYgKCoqcm9vdCA9PSAnLycpCj4+ICvC
oMKgwqDCoMKgwqDCoCAoKnJvb3QpKys7Cj4+ICvCoMKgwqAgKm1wID0gbTsKPj4gK8KgwqDCoCBy
ZXR1cm4gMDsKPj4gwqAgfQo+PiDCoCAvKgo+PiBAQCAtNDIwLDggKzQyMCw4IEBAIHZmc19maW5k
cm9vdChjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3QgbW91bnQgKiptcCwgCj4+IGNoYXIgKipyb290
KQo+PiDCoCB2b2lkCj4+IMKgIHZmc19idXN5KHN0cnVjdCBtb3VudCAqbXApCj4+IMKgIHsKPj4g
LcKgwqDCoCBTQ09QRV9MT0NLKG1vdW50X2xvY2spOwo+PiAtwqDCoMKgIG1wLT5tX2NvdW50Kys7
Cj4+ICvCoMKgwqAgU0NPUEVfTE9DSyhtb3VudF9sb2NrKTsKPj4gK8KgwqDCoCBtcC0+bV9jb3Vu
dCsrOwo+PiDCoCB9Cj4+IEBAIC00MzEsNDUgKzQzMSw0NSBAQCB2ZnNfYnVzeShzdHJ1Y3QgbW91
bnQgKm1wKQo+PiDCoCB2b2lkCj4+IMKgIHZmc191bmJ1c3koc3RydWN0IG1vdW50ICptcCkKPj4g
wqAgewo+PiAtwqDCoMKgIFNDT1BFX0xPQ0sobW91bnRfbG9jayk7Cj4+IC3CoMKgwqAgbXAtPm1f
Y291bnQtLTsKPj4gK8KgwqDCoCBTQ09QRV9MT0NLKG1vdW50X2xvY2spOwo+PiArwqDCoMKgIG1w
LT5tX2NvdW50LS07Cj4+IMKgIH0KPj4gwqAgaW50Cj4+IMKgIHZmc19udWxsb3Aodm9pZCkKPj4g
wqAgewo+PiAtwqDCoMKgIHJldHVybiAwOwo+PiArwqDCoMKgIHJldHVybiAwOwo+PiDCoCB9Cj4+
IMKgIGludAo+PiDCoCB2ZnNfZWludmFsKHZvaWQpCj4+IMKgIHsKPj4gLcKgwqDCoCByZXR1cm4g
RUlOVkFMOwo+PiArwqDCoMKgIHJldHVybiBFSU5WQUw7Cj4+IMKgIH0KPj4gwqAgbmFtZXNwYWNl
IG9zdiB7Cj4+IMKgIG1vdW50X2Rlc2MgdG9fbW91bnRfZGVzYyhtb3VudCogbSkKPj4gwqAgewo+
PiAtwqDCoMKgIG1vdW50X2Rlc2MgcmV0Owo+PiAtwqDCoMKgIHJldC5zcGVjaWFsID0gbS0+bV9z
cGVjaWFsOwo+PiAtwqDCoMKgIHJldC5wYXRoID0gbS0+bV9wYXRoOwo+PiAtwqDCoMKgIHJldC50
eXBlID0gZnNfZ2V0ZnNuYW1lKG0tPm1fb3ApOwo+PiAtwqDCoMKgIC8vIEZJWE1FOiByZWNvcmQg
b3B0aW9ucwo+PiAtwqDCoMKgIHJldC5vcHRpb25zID0gIiI7Cj4+IC3CoMKgwqAgcmV0dXJuIHJl
dDsKPj4gK8KgwqDCoCBtb3VudF9kZXNjIHJldDsKPj4gK8KgwqDCoCByZXQuc3BlY2lhbCA9IG0t
Pm1fc3BlY2lhbDsKPj4gK8KgwqDCoCByZXQucGF0aCA9IG0tPm1fcGF0aDsKPj4gK8KgwqDCoCBy
ZXQudHlwZSA9IGZzX2dldGZzbmFtZShtLT5tX29wKTsKPj4gK8KgwqDCoCAvLyBGSVhNRTogcmVj
b3JkIG9wdGlvbnMKPj4gK8KgwqDCoCByZXQub3B0aW9ucyA9ICIiOwo+PiArwqDCoMKgIHJldHVy
biByZXQ7Cj4+IMKgIH0KPj4gwqAgc3RkOjp2ZWN0b3I8bW91bnRfZGVzYz4KPj4gwqAgY3VycmVu
dF9tb3VudHMoKQo+PiDCoCB7Cj4+IC3CoMKgwqAgV0lUSF9MT0NLKG1vdW50X2xvY2spIHsKPj4g
LcKgwqDCoMKgwqDCoMKgIHN0ZDo6dmVjdG9yPG1vdW50X2Rlc2M+IHJldDsKPj4gLcKgwqDCoMKg
wqDCoMKgIGZvciAoYXV0byYmIG1wIDogbW91bnRfbGlzdCkgewo+PiAtwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoCByZXQucHVzaF9iYWNrKHRvX21vdW50X2Rlc2MobXApKTsKPj4gLcKgwqDCoMKgwqDC
oMKgIH0KPj4gLcKgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7Cj4+IC3CoMKgwqAgfQo+PiArwqDC
oMKgIFdJVEhfTE9DSyhtb3VudF9sb2NrKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBzdGQ6OnZlY3Rv
cjxtb3VudF9kZXNjPiByZXQ7Cj4+ICvCoMKgwqDCoMKgwqDCoCBmb3IgKGF1dG8mJiBtcCA6IG1v
dW50X2xpc3QpIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0LnB1c2hfYmFjayh0b19t
b3VudF9kZXNjKG1wKSk7Cj4+ICvCoMKgwqDCoMKgwqDCoCB9Cj4+ICvCoMKgwqDCoMKgwqDCoCBy
ZXR1cm4gcmV0Owo+PiArwqDCoMKgIH0KPj4gwqAgfQo+PiDCoCB9Cj4+IEBAIC00NzgsMTQgKzQ3
OCwxNCBAQCBjdXJyZW50X21vdW50cygpCj4+IMKgIHZvaWQKPj4gwqAgbW91bnRfZHVtcCh2b2lk
KQo+PiDCoCB7Cj4+IC3CoMKgwqAgU0NPUEVfTE9DSyhtb3VudF9sb2NrKTsKPj4gK8KgwqDCoCBT
Q09QRV9MT0NLKG1vdW50X2xvY2spOwo+PiAtwqDCoMKgIGtwcmludGYoIm1vdW50X2R1bXBcbiIp
Owo+PiAtwqDCoMKgIGtwcmludGYoImRldsKgwqDCoMKgwqAgY291bnQgcm9vdFxuIik7Cj4+IC3C
oMKgwqAga3ByaW50ZigiLS0tLS0tLS0gLS0tLS0gLS0tLS0tLS1cbiIpOwo+PiArwqDCoMKgIGtw
cmludGYoIm1vdW50X2R1bXBcbiIpOwo+PiArwqDCoMKgIGtwcmludGYoImRldsKgwqDCoMKgwqAg
Y291bnQgcm9vdFxuIik7Cj4+ICvCoMKgwqAga3ByaW50ZigiLS0tLS0tLS0gLS0tLS0gLS0tLS0t
LS1cbiIpOwo+PiAtwqDCoMKgIGZvciAoYXV0byYmIG1wIDogbW91bnRfbGlzdCkgewo+PiAtwqDC
oMKgwqDCoMKgwqAga3ByaW50ZigiJTh4ICU1ZCAlc1xuIiwgbXAtPm1fZGV2LCBtcC0+bV9jb3Vu
dCwgbXAtPm1fcGF0aCk7Cj4+IC3CoMKgwqAgfQo+PiArwqDCoMKgIGZvciAoYXV0byYmIG1wIDog
bW91bnRfbGlzdCkgewo+PiArwqDCoMKgwqDCoMKgwqAga3ByaW50ZigiJTh4ICU1ZCAlc1xuIiwg
bXAtPm1fZGV2LCBtcC0+bV9jb3VudCwgbXAtPm1fcGF0aCk7Cj4+ICvCoMKgwqAgfQo+PiDCoCB9
Cj4+IMKgICNlbmRpZgo+PiBkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvc3lzY2FsbHMuYyBiL2xp
Yi92ZnNjb3JlL3N5c2NhbGxzLmMKPj4gaW5kZXggNDg3ZDU3MjkuLmI1NDMzZWNlIDEwMDY0NAo+
PiAtLS0gYS9saWIvdmZzY29yZS9zeXNjYWxscy5jCj4+ICsrKyBiL2xpYi92ZnNjb3JlL3N5c2Nh
bGxzLmMKPiBXQVJOSU5HOiBzdXNwZWN0IGNvZGUgaW5kZW50IGZvciBjb25kaXRpb25hbCBzdGF0
ZW1lbnRzICgxNiwgMjApCj4gCj4gIzE4MjogRklMRTogbGliL3Zmc2NvcmUvc3lzY2FsbHMuYzox
ODI6Cj4gCj4gK8KgwqDCoMKgwqDCoCBpZiAoZmxhZ3MgJiBPX0RJUkVDVE9SWSkgewo+IAo+ICvC
oMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAodnAtPnZfdHlwZSAhPSBWRElSKSB7Cj4gCj4gCj4gCj4g
Cj4gV0FSTklORzogU3RhdGVtZW50cyBzaG91bGQgc3RhcnQgb24gYSB0YWJzdG9wCj4gCj4gIzE4
MzogRklMRTogbGliL3Zmc2NvcmUvc3lzY2FsbHMuYzoxODM6Cj4gCj4gK8KgwqDCoMKgwqDCoMKg
wqDCoMKgIGlmICh2cC0+dl90eXBlICE9IFZESVIpIHsKPiAKPiAKPiAKPiAKPiBFUlJPUjogY29k
ZSBpbmRlbnQgc2hvdWxkIHVzZSB0YWJzIHdoZXJlIHBvc3NpYmxlCj4gCj4gIzE4NDogRklMRTog
bGliL3Zmc2NvcmUvc3lzY2FsbHMuYzoxODQ6Cj4gCj4gK15JXknCoMKgwqDCoMKgwqDCoCBlcnJv
ciA9IEVOT1RESVI7JAo+IAo+IAo+IAo+IAo+IEVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgdXNl
IHRhYnMgd2hlcmUgcG9zc2libGUKPiAKPiAjMTg1OiBGSUxFOiBsaWIvdmZzY29yZS9zeXNjYWxs
cy5jOjE4NToKPiAKPiArXkleScKgwqDCoMKgwqDCoMKgIGdvdG8gb3V0X2RyZWxlOyQKPiAKPiAK
PiAKPiAKPiBXQVJOSU5HOiBTdGF0ZW1lbnRzIHNob3VsZCBzdGFydCBvbiBhIHRhYnN0b3AKPiAK
PiAjMTg2OiBGSUxFOiBsaWIvdmZzY29yZS9zeXNjYWxscy5jOjE4NjoKPiAKPiArwqDCoMKgwqDC
oMKgwqDCoMKgwqAgfQo+IAo+IFdBUk5JTkc6IFN0YXRlbWVudHMgc2hvdWxkIHN0YXJ0IG9uIGEg
dGFic3RvcAo+IAo+ICMyMDg6IEZJTEU6IGxpYi92ZnNjb3JlL3N5c2NhbGxzLmM6MjA4Ogo+IAo+
ICvCoMKgwqDCoMKgwqAgZ290byBvdXRfdm5fdW5sb2NrOwo+IAo+IFdBUk5JTkc6IFN0YXRlbWVu
dHMgc2hvdWxkIHN0YXJ0IG9uIGEgdGFic3RvcAo+IAo+ICMzMjc6IEZJTEU6IGxpYi92ZnNjb3Jl
L3N5c2NhbGxzLmM6MzI3Ogo+IAo+ICvCoMKgwqDCoMKgwqAgcmV0dXJuIEVTUElQRTsKPiAKPiBX
QVJOSU5HOiBTdGF0ZW1lbnRzIHNob3VsZCBzdGFydCBvbiBhIHRhYnN0b3AKPiAKPiAjNzg1OiBG
SUxFOiBsaWIvdmZzY29yZS9zeXNjYWxscy5jOjc4NToKPiAKPiArwqDCoMKgwqDCoMKgIGdvdG8g
ZXJyMzsKPiAKPiBXQVJOSU5HOiBTdGF0ZW1lbnRzIHNob3VsZCBzdGFydCBvbiBhIHRhYnN0b3AK
PiAKPiAjNzg3OiBGSUxFOiBsaWIvdmZzY29yZS9zeXNjYWxscy5jOjc4NzoKPiAKPiArwqDCoMKg
wqDCoMKgIGdvdG8gZXJyMzsKPiAKPiAKPiAKPiBXQVJOSU5HOiBTdGF0ZW1lbnRzIHNob3VsZCBz
dGFydCBvbiBhIHRhYnN0b3AKPiAKPiAjOTg0OiBGSUxFOiBsaWIvdmZzY29yZS9zeXNjYWxscy5j
Ojk4NDoKPiAKPiArwqDCoMKgwqDCoMKgIGdvdG8gb3V0Owo+IAo+IFdBUk5JTkc6IFN0YXRlbWVu
dHMgc2hvdWxkIHN0YXJ0IG9uIGEgdGFic3RvcAo+IAo+ICMxMzM1OiBGSUxFOiBsaWIvdmZzY29y
ZS9zeXNjYWxscy5jOjEzMzU6Cj4gCj4gK8KgwqDCoMKgwqDCoCByZXR1cm4gRUZBVUxUOwo+IAo+
IAo+IFdBUk5JTkc6IFN0YXRlbWVudHMgc2hvdWxkIHN0YXJ0IG9uIGEgdGFic3RvcAo+IAo+ICMx
MzQyOiBGSUxFOiBsaWIvdmZzY29yZS9zeXNjYWxscy5jOjEzNDI6Cj4gCj4gK8KgwqDCoMKgwqDC
oCByZXR1cm4gRUJBREY7Cj4gCj4gCj4gV0FSTklORzogU3RhdGVtZW50cyBzaG91bGQgc3RhcnQg
b24gYSB0YWJzdG9wCj4gCj4gIzEzNDc6IEZJTEU6IGxpYi92ZnNjb3JlL3N5c2NhbGxzLmM6MTM0
NzoKPiAKPiArwqDCoMKgwqDCoMKgIHJldHVybiBFQkFERjsKPiAKPiBXQVJOSU5HOiBTdGF0ZW1l
bnRzIHNob3VsZCBzdGFydCBvbiBhIHRhYnN0b3AKPiAKPiAjMTM1MDogRklMRTogbGliL3Zmc2Nv
cmUvc3lzY2FsbHMuYzoxMzUwOgo+IAo+ICvCoMKgwqDCoMKgwqAgcmV0dXJuIEVOT1RESVI7Cj4g
Cj4gV0FSTklORzogU3RhdGVtZW50cyBzaG91bGQgc3RhcnQgb24gYSB0YWJzdG9wCj4gCj4gIzEz
NzM6IEZJTEU6IGxpYi92ZnNjb3JlL3N5c2NhbGxzLmM6MTM3MzoKPiAKPiArwqDCoMKgwqDCoMKg
IGlmICh0aW1lcyAmJgo+IAo+IEVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgdXNlIHRhYnMgd2hl
cmUgcG9zc2libGUKPiAKPiAjMTM3NzogRklMRTogbGliL3Zmc2NvcmUvc3lzY2FsbHMuYzoxMzc3
Ogo+IAo+ICteScKgwqDCoMKgwqDCoMKgIHJldHVybiBFUEVSTTskCj4gCj4gCj4gCj4gCj4gCj4g
Cj4gCj4+IEBAIC0yNDUsNzIgKzI0NSw3MiBAQCBpbnQKPj4gwqAgc3lzX3JlYWQoc3RydWN0IGZp
bGUgKmZwLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlvdiwgc2l6ZV90IG5pb3YsCj4+IMKgwqDCoMKg
wqDCoMKgwqDCoCBvZmZfdCBvZmZzZXQsIHNpemVfdCAqY291bnQpCj4+IMKgIHsKPj4gLcKgwqDC
oCBpZiAoKGZwLT5mX2ZsYWdzICYgRlJFQUQpID09IDApCj4+IC3CoMKgwqDCoMKgwqDCoCByZXR1
cm4gRUJBREY7Cj4+IC0KPj4gLcKgwqDCoCBzaXplX3QgYnl0ZXMgPSAwOwo+PiAtwqDCoMKgIGF1
dG8gaW92cCA9IGlvdjsKPj4gLcKgwqDCoCBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbmlvdjsg
aSsrKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCBpZiAoaW92cC0+aW92X2xlbiA+IElPU0laRV9NQVgg
LSBieXRlcykgewo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gRUlOVkFMOwo+PiAt
wqDCoMKgwqDCoMKgwqAgfQo+PiAtwqDCoMKgwqDCoMKgwqAgYnl0ZXMgKz0gaW92cC0+aW92X2xl
bjsKPj4gLcKgwqDCoMKgwqDCoMKgIGlvdnArKzsKPj4gLcKgwqDCoCB9Cj4+IC0KPj4gLcKgwqDC
oCBpZiAoYnl0ZXMgPT0gMCkgewo+PiAtwqDCoMKgwqDCoMKgwqAgKmNvdW50ID0gMDsKPj4gLcKg
wqDCoMKgwqDCoMKgIHJldHVybiAwOwo+PiAtwqDCoMKgIH0KPj4gLQo+PiAtwqDCoMKgIHN0cnVj
dCB1aW8gdWlvOwo+PiAtwqDCoMKgIC8vIFVuZm9ydHVuYXRlbHksIHRoZSBjdXJyZW50IGltcGxl
bWVudGF0aW9uIG9mIGZwLT5yZWFkIHplcm9zIHRoZQo+PiAtwqDCoMKgIC8vIGlvdl9sZW4gZmll
bGRzIHdoZW4gaXQgcmVhZHMgZnJvbSBkaXNrLCBzbyB3ZSBoYXZlIHRvIGNvcHkgaW92Lgo+PiAt
wqDCoMKgIHN0ZDo6dmVjdG9yPGlvdmVjPiBjb3B5X2lvdihpb3YsIGlvdiArIG5pb3YpOwo+PiAt
wqDCoMKgIHVpby51aW9faW92ID0gY29weV9pb3YuZGF0YSgpOwo+PiAtwqDCoMKgIHVpby51aW9f
aW92Y250ID0gbmlvdjsKPj4gLcKgwqDCoCB1aW8udWlvX29mZnNldCA9IG9mZnNldDsKPj4gLcKg
wqDCoCB1aW8udWlvX3Jlc2lkID0gYnl0ZXM7Cj4+IC3CoMKgwqAgdWlvLnVpb19ydyA9IFVJT19S
RUFEOwo+PiAtwqDCoMKgIGF1dG8gZXJyb3IgPSBmcC0+cmVhZCgmdWlvLCAob2Zmc2V0ID09IC0x
KSA/IDAgOiBGT0ZfT0ZGU0VUKTsKPj4gLcKgwqDCoCAqY291bnQgPSBieXRlcyAtIHVpby51aW9f
cmVzaWQ7Cj4+IC3CoMKgwqAgcmV0dXJuIGVycm9yOwo+PiArwqDCoMKgIGlmICgoZnAtPmZfZmxh
Z3MgJiBGUkVBRCkgPT0gMCkKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBFQkFERjsKPj4gKwo+
PiArwqDCoMKgIHNpemVfdCBieXRlcyA9IDA7Cj4+ICvCoMKgwqAgYXV0byBpb3ZwID0gaW92Owo+
PiArwqDCoMKgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBuaW92OyBpKyspIHsKPj4gK8KgwqDC
oMKgwqDCoMKgIGlmIChpb3ZwLT5pb3ZfbGVuID4gSU9TSVpFX01BWCAtIGJ5dGVzKSB7Cj4+ICvC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBFSU5WQUw7Cj4+ICvCoMKgwqDCoMKgwqDCoCB9
Cj4+ICvCoMKgwqDCoMKgwqDCoCBieXRlcyArPSBpb3ZwLT5pb3ZfbGVuOwo+PiArwqDCoMKgwqDC
oMKgwqAgaW92cCsrOwo+PiArwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgIGlmIChieXRlcyA9PSAw
KSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCAqY291bnQgPSAwOwo+PiArwqDCoMKgwqDCoMKgwqAgcmV0
dXJuIDA7Cj4+ICvCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqAgc3RydWN0IHVpbyB1aW87Cj4+ICvC
oMKgwqAgLy8gVW5mb3J0dW5hdGVseSwgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb2YgZnAt
PnJlYWQgemVyb3MgdGhlCj4+ICvCoMKgwqAgLy8gaW92X2xlbiBmaWVsZHMgd2hlbiBpdCByZWFk
cyBmcm9tIGRpc2ssIHNvIHdlIGhhdmUgdG8gY29weSBpb3YuCj4+ICvCoMKgwqAgc3RkOjp2ZWN0
b3I8aW92ZWM+IGNvcHlfaW92KGlvdiwgaW92ICsgbmlvdik7Cj4+ICvCoMKgwqAgdWlvLnVpb19p
b3YgPSBjb3B5X2lvdi5kYXRhKCk7Cj4+ICvCoMKgwqAgdWlvLnVpb19pb3ZjbnQgPSBuaW92Owo+
PiArwqDCoMKgIHVpby51aW9fb2Zmc2V0ID0gb2Zmc2V0Owo+PiArwqDCoMKgIHVpby51aW9fcmVz
aWQgPSBieXRlczsKPj4gK8KgwqDCoCB1aW8udWlvX3J3ID0gVUlPX1JFQUQ7Cj4+ICvCoMKgwqAg
YXV0byBlcnJvciA9IGZwLT5yZWFkKCZ1aW8sIChvZmZzZXQgPT0gLTEpID8gMCA6IEZPRl9PRkZT
RVQpOwo+PiArwqDCoMKgICpjb3VudCA9IGJ5dGVzIC0gdWlvLnVpb19yZXNpZDsKPj4gK8KgwqDC
oCByZXR1cm4gZXJyb3I7Cj4+IMKgIH0KPj4gwqAgaW50Cj4+IMKgIHN5c193cml0ZShzdHJ1Y3Qg
ZmlsZSAqZnAsIGNvbnN0IHN0cnVjdCBpb3ZlYyAqaW92LCBzaXplX3QgbmlvdiwKPj4gwqDCoMKg
wqDCoMKgwqDCoMKgIG9mZl90IG9mZnNldCwgc2l6ZV90ICpjb3VudCkKPj4gwqAgewo+PiAtwqDC
oMKgIGlmICgoZnAtPmZfZmxhZ3MgJiBGV1JJVEUpID09IDApCj4+IC3CoMKgwqDCoMKgwqDCoCBy
ZXR1cm4gRUJBREY7Cj4+IC0KPj4gLcKgwqDCoCBzaXplX3QgYnl0ZXMgPSAwOwo+PiAtwqDCoMKg
IGF1dG8gaW92cCA9IGlvdjsKPj4gLcKgwqDCoCBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbmlv
djsgaSsrKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCBpZiAoaW92cC0+aW92X2xlbiA+IElPU0laRV9N
QVggLSBieXRlcykgewo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gRUlOVkFMOwo+
PiAtwqDCoMKgwqDCoMKgwqAgfQo+PiAtwqDCoMKgwqDCoMKgwqAgYnl0ZXMgKz0gaW92cC0+aW92
X2xlbjsKPj4gLcKgwqDCoMKgwqDCoMKgIGlvdnArKzsKPj4gLcKgwqDCoCB9Cj4+IC0KPj4gLcKg
wqDCoCBpZiAoYnl0ZXMgPT0gMCkgewo+PiAtwqDCoMKgwqDCoMKgwqAgKmNvdW50ID0gMDsKPj4g
LcKgwqDCoMKgwqDCoMKgIHJldHVybiAwOwo+PiAtwqDCoMKgIH0KPj4gLQo+PiAtwqDCoMKgIHN0
cnVjdCB1aW8gdWlvOwo+PiAtwqDCoMKgIC8vIFVuZm9ydHVuYXRlbHksIHRoZSBjdXJyZW50IGlt
cGxlbWVudGF0aW9uIG9mIGZwLT53cml0ZSB6ZXJvcyB0aGUKPj4gLcKgwqDCoCAvLyBpb3ZfbGVu
IGZpZWxkcyB3aGVuIGl0IHdyaXRlcyB0byBkaXNrLCBzbyB3ZSBoYXZlIHRvIGNvcHkgaW92Lgo+
PiAtwqDCoMKgIHN0ZDo6dmVjdG9yPGlvdmVjPiBjb3B5X2lvdihpb3YsIGlvdiArIG5pb3YpOwo+
PiAtwqDCoMKgIHVpby51aW9faW92ID0gY29weV9pb3YuZGF0YSgpOwo+PiAtwqDCoMKgIHVpby51
aW9faW92Y250ID0gbmlvdjsKPj4gLcKgwqDCoCB1aW8udWlvX29mZnNldCA9IG9mZnNldDsKPj4g
LcKgwqDCoCB1aW8udWlvX3Jlc2lkID0gYnl0ZXM7Cj4+IC3CoMKgwqAgdWlvLnVpb19ydyA9IFVJ
T19XUklURTsKPj4gLcKgwqDCoCBhdXRvIGVycm9yID0gZnAtPndyaXRlKCZ1aW8sIChvZmZzZXQg
PT0gLTEpID8gMCA6IEZPRl9PRkZTRVQpOwo+PiAtwqDCoMKgICpjb3VudCA9IGJ5dGVzIC0gdWlv
LnVpb19yZXNpZDsKPj4gLcKgwqDCoCByZXR1cm4gZXJyb3I7Cj4+ICvCoMKgwqAgaWYgKChmcC0+
Zl9mbGFncyAmIEZXUklURSkgPT0gMCkKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBFQkFERjsK
Pj4gKwo+PiArwqDCoMKgIHNpemVfdCBieXRlcyA9IDA7Cj4+ICvCoMKgwqAgYXV0byBpb3ZwID0g
aW92Owo+PiArwqDCoMKgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBuaW92OyBpKyspIHsKPj4g
K8KgwqDCoMKgwqDCoMKgIGlmIChpb3ZwLT5pb3ZfbGVuID4gSU9TSVpFX01BWCAtIGJ5dGVzKSB7
Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBFSU5WQUw7Cj4+ICvCoMKgwqDCoMKg
wqDCoCB9Cj4+ICvCoMKgwqDCoMKgwqDCoCBieXRlcyArPSBpb3ZwLT5pb3ZfbGVuOwo+PiArwqDC
oMKgwqDCoMKgwqAgaW92cCsrOwo+PiArwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgIGlmIChieXRl
cyA9PSAwKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCAqY291bnQgPSAwOwo+PiArwqDCoMKgwqDCoMKg
wqAgcmV0dXJuIDA7Cj4+ICvCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqAgc3RydWN0IHVpbyB1aW87
Cj4+ICvCoMKgwqAgLy8gVW5mb3J0dW5hdGVseSwgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24g
b2YgZnAtPndyaXRlIHplcm9zIHRoZQo+PiArwqDCoMKgIC8vIGlvdl9sZW4gZmllbGRzIHdoZW4g
aXQgd3JpdGVzIHRvIGRpc2ssIHNvIHdlIGhhdmUgdG8gY29weSBpb3YuCj4+ICvCoMKgwqAgc3Rk
Ojp2ZWN0b3I8aW92ZWM+IGNvcHlfaW92KGlvdiwgaW92ICsgbmlvdik7Cj4+ICvCoMKgwqAgdWlv
LnVpb19pb3YgPSBjb3B5X2lvdi5kYXRhKCk7Cj4+ICvCoMKgwqAgdWlvLnVpb19pb3ZjbnQgPSBu
aW92Owo+PiArwqDCoMKgIHVpby51aW9fb2Zmc2V0ID0gb2Zmc2V0Owo+PiArwqDCoMKgIHVpby51
aW9fcmVzaWQgPSBieXRlczsKPj4gK8KgwqDCoCB1aW8udWlvX3J3ID0gVUlPX1dSSVRFOwo+PiAr
wqDCoMKgIGF1dG8gZXJyb3IgPSBmcC0+d3JpdGUoJnVpbywgKG9mZnNldCA9PSAtMSkgPyAwIDog
Rk9GX09GRlNFVCk7Cj4+ICvCoMKgwqAgKmNvdW50ID0gYnl0ZXMgLSB1aW8udWlvX3Jlc2lkOwo+
PiArwqDCoMKgIHJldHVybiBlcnJvcjsKPj4gwqAgfQo+PiDCoCBpbnQKPj4gQEAgLTEyMjEsOCAr
MTIyMSw4IEBAIHN5c19yZWFkbGluayhjaGFyICpwYXRoLCBjaGFyICpidWYsIHNpemVfdCAKPj4g
YnVmc2l6ZSwgc3NpemVfdCAqc2l6ZSkKPj4gwqDCoCAqLwo+PiDCoCBzdGF0aWMgYm9vbCBpc190
aW1ldmFsX3ZhbGlkKGNvbnN0IHN0cnVjdCB0aW1ldmFsICp0aW1lKQo+PiDCoCB7Cj4+IC3CoMKg
wqAgcmV0dXJuICh0aW1lLT50dl9zZWMgPj0gMCkgJiYKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg
ICh0aW1lLT50dl91c2VjID49IDAgJiYgdGltZS0+dHZfdXNlYyA8IDEwMDAwMDApOwo+PiArwqDC
oMKgIHJldHVybiAodGltZS0+dHZfc2VjID49IDApICYmCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC
oCAodGltZS0+dHZfdXNlYyA+PSAwICYmIHRpbWUtPnR2X3VzZWMgPCAxMDAwMDAwKTsKPj4gwqAg
fQo+PiDCoCAvKgo+PiBAQCAtMTIzMCw1OCArMTIzMCw1OCBAQCBzdGF0aWMgYm9vbCBpc190aW1l
dmFsX3ZhbGlkKGNvbnN0IHN0cnVjdCAKPj4gdGltZXZhbCAqdGltZSkKPj4gwqDCoCAqLwo+PiDC
oCBzdGF0aWMgdm9pZCBjb252ZXJ0X3RpbWV2YWwoc3RydWN0IHRpbWVzcGVjICZ0bywgY29uc3Qg
c3RydWN0IAo+PiB0aW1ldmFsICpmcm9tKQo+PiDCoCB7Cj4+IC3CoMKgwqAgaWYgKGZyb20pIHsK
Pj4gLcKgwqDCoMKgwqDCoMKgIHRvLnR2X3NlYyA9IGZyb20tPnR2X3NlYzsKPj4gLcKgwqDCoMKg
wqDCoMKgIHRvLnR2X25zZWMgPSBmcm9tLT50dl91c2VjICogMTAwMDsgLy8gQ29udmVydCBtaWNy
b3NlY29uZHMgdG8gCj4+IG5hbm9zZWNvbmRzCj4+IC3CoMKgwqAgfSBlbHNlIHsKPj4gLcKgwqDC
oMKgwqDCoMKgIGNsb2NrX2dldHRpbWUoQ0xPQ0tfUkVBTFRJTUUsICZ0byk7Cj4+IC3CoMKgwqAg
fQo+PiArwqDCoMKgIGlmIChmcm9tKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCB0by50dl9zZWMgPSBm
cm9tLT50dl9zZWM7Cj4+ICvCoMKgwqDCoMKgwqDCoCB0by50dl9uc2VjID0gZnJvbS0+dHZfdXNl
YyAqIDEwMDA7IC8vIENvbnZlcnQgbWljcm9zZWNvbmRzIHRvIAo+PiBuYW5vc2Vjb25kcwo+PiAr
wqDCoMKgIH0gZWxzZSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBjbG9ja19nZXR0aW1lKENMT0NLX1JF
QUxUSU1FLCAmdG8pOwo+PiArwqDCoMKgIH0KPj4gwqAgfQo+PiDCoCBpbnQKPj4gwqAgc3lzX3V0
aW1lcyhjaGFyICpwYXRoLCBjb25zdCBzdHJ1Y3QgdGltZXZhbCB0aW1lc1syXSwgaW50IGZsYWdz
KQo+PiDCoCB7Cj4+IC3CoMKgwqAgaW50IGVycm9yOwo+PiAtwqDCoMKgIHN0cnVjdCBkZW50cnkg
KmRwOwo+PiAtwqDCoMKgIHN0cnVjdCB0aW1lc3BlYyB0aW1lc3BlY190aW1lc1syXTsKPj4gLQo+
PiAtwqDCoMKgIERQUklOVEYoVkZTREJfU1lTQ0FMTCwgKCJzeXNfdXRpbWVzOiBwYXRoPSVzXG4i
LCBwYXRoKSk7Cj4+IC0KPj4gLcKgwqDCoCBpZiAodGltZXMgJiYgKCFpc190aW1ldmFsX3ZhbGlk
KCZ0aW1lc1swXSkgfHwgCj4+ICFpc190aW1ldmFsX3ZhbGlkKCZ0aW1lc1sxXSkpKQo+PiAtwqDC
oMKgwqDCoMKgwqAgcmV0dXJuIEVJTlZBTDsKPj4gLQo+PiAtwqDCoMKgIC8vIENvbnZlcnQgZWFj
aCBlbGVtZW50IG9mIHRpbWV2YWwgYXJyYXkgdG8gdGhlIHRpbWVzcGVjIHR5cGUKPj4gLcKgwqDC
oCBjb252ZXJ0X3RpbWV2YWwodGltZXNwZWNfdGltZXNbMF0sIHRpbWVzID8gdGltZXMgKyAwIDog
bnVsbHB0cik7Cj4+IC3CoMKgwqAgY29udmVydF90aW1ldmFsKHRpbWVzcGVjX3RpbWVzWzFdLCB0
aW1lcyA/IHRpbWVzICsgMSA6IG51bGxwdHIpOwo+PiAtCj4+IC3CoMKgwqAgaWYgKGZsYWdzICYg
QVRfU1lNTElOS19OT0ZPTExPVykgewo+PiAtwqDCoMKgwqDCoMKgwqAgc3RydWN0IGRlbnRyeSAq
ZGRwOwo+PiAtwqDCoMKgwqDCoMKgwqAgZXJyb3IgPSBsb29rdXAocGF0aCwgJmRkcCwgbnVsbHB0
cik7Cj4+IC3CoMKgwqDCoMKgwqDCoCBpZiAoZXJyb3IpIHsKPj4gLcKgwqDCoMKgwqDCoMKgwqDC
oMKgwqAgcmV0dXJuIGVycm9yOwo+PiAtwqDCoMKgwqDCoMKgwqAgfQo+PiAtCj4+IC3CoMKgwqDC
oMKgwqDCoCBlcnJvciA9IG5hbWVpX2xhc3Rfbm9mb2xsb3cocGF0aCwgZGRwLCAmZHApOwo+PiAt
wqDCoMKgwqDCoMKgwqAgaWYgKGRkcCAhPSBudWxscHRyKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoMKg
wqDCoMKgIGRyZWxlKGRkcCk7Cj4+IC3CoMKgwqDCoMKgwqDCoCB9Cj4+IC3CoMKgwqDCoMKgwqDC
oCBpZiAoZXJyb3IpIHsKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIGVycm9yOwo+
PiAtwqDCoMKgwqDCoMKgwqAgfQo+PiAtwqDCoMKgIH0gZWxzZSB7Cj4+IC3CoMKgwqDCoMKgwqDC
oCBlcnJvciA9IG5hbWVpKHBhdGgsICZkcCk7Cj4+IC3CoMKgwqDCoMKgwqDCoCBpZiAoZXJyb3Ip
Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBlcnJvcjsKPj4gLcKgwqDCoCB9Cj4+
IC0KPj4gLcKgwqDCoCBpZiAoZHAtPmRfbW91bnQtPm1fZmxhZ3MgJiBNTlRfUkRPTkxZKSB7Cj4+
IC3CoMKgwqDCoMKgwqDCoCBlcnJvciA9IEVST0ZTOwo+PiAtwqDCoMKgIH0gZWxzZSB7Cj4+IC3C
oMKgwqDCoMKgwqDCoCBlcnJvciA9IHZuX3NldHRpbWVzKGRwLT5kX3Zub2RlLCB0aW1lc3BlY190
aW1lcyk7Cj4+IC3CoMKgwqAgfQo+PiAtCj4+IC3CoMKgwqAgZHJlbGUoZHApOwo+PiAtwqDCoMKg
IHJldHVybiBlcnJvcjsKPj4gK8KgwqDCoCBpbnQgZXJyb3I7Cj4+ICvCoMKgwqAgc3RydWN0IGRl
bnRyeSAqZHA7Cj4+ICvCoMKgwqAgc3RydWN0IHRpbWVzcGVjIHRpbWVzcGVjX3RpbWVzWzJdOwo+
PiArCj4+ICvCoMKgwqAgRFBSSU5URihWRlNEQl9TWVNDQUxMLCAoInN5c191dGltZXM6IHBhdGg9
JXNcbiIsIHBhdGgpKTsKPj4gKwo+PiArwqDCoMKgIGlmICh0aW1lcyAmJiAoIWlzX3RpbWV2YWxf
dmFsaWQoJnRpbWVzWzBdKSB8fCAKPj4gIWlzX3RpbWV2YWxfdmFsaWQoJnRpbWVzWzFdKSkpCj4+
ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gRUlOVkFMOwo+PiArCj4+ICvCoMKgwqAgLy8gQ29udmVy
dCBlYWNoIGVsZW1lbnQgb2YgdGltZXZhbCBhcnJheSB0byB0aGUgdGltZXNwZWMgdHlwZQo+PiAr
wqDCoMKgIGNvbnZlcnRfdGltZXZhbCh0aW1lc3BlY190aW1lc1swXSwgdGltZXMgPyB0aW1lcyAr
IDAgOiBudWxscHRyKTsKPj4gK8KgwqDCoCBjb252ZXJ0X3RpbWV2YWwodGltZXNwZWNfdGltZXNb
MV0sIHRpbWVzID8gdGltZXMgKyAxIDogbnVsbHB0cik7Cj4+ICsKPj4gK8KgwqDCoCBpZiAoZmxh
Z3MgJiBBVF9TWU1MSU5LX05PRk9MTE9XKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZGVu
dHJ5ICpkZHA7Cj4+ICvCoMKgwqDCoMKgwqDCoCBlcnJvciA9IGxvb2t1cChwYXRoLCAmZGRwLCBu
dWxscHRyKTsKPj4gK8KgwqDCoMKgwqDCoMKgIGlmIChlcnJvcikgewo+PiArwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoCByZXR1cm4gZXJyb3I7Cj4+ICvCoMKgwqDCoMKgwqDCoCB9Cj4+ICsKPj4gK8Kg
wqDCoMKgwqDCoMKgIGVycm9yID0gbmFtZWlfbGFzdF9ub2ZvbGxvdyhwYXRoLCBkZHAsICZkcCk7
Cj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAoZGRwICE9IG51bGxwdHIpIHsKPj4gK8KgwqDCoMKgwqDC
oMKgwqDCoMKgwqAgZHJlbGUoZGRwKTsKPj4gK8KgwqDCoMKgwqDCoMKgIH0KPj4gK8KgwqDCoMKg
wqDCoMKgIGlmIChlcnJvcikgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gZXJy
b3I7Cj4+ICvCoMKgwqDCoMKgwqDCoCB9Cj4+ICvCoMKgwqAgfSBlbHNlIHsKPj4gK8KgwqDCoMKg
wqDCoMKgIGVycm9yID0gbmFtZWkocGF0aCwgJmRwKTsKPj4gK8KgwqDCoMKgwqDCoMKgIGlmIChl
cnJvcikKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIGVycm9yOwo+PiArwqDCoMKg
IH0KPj4gKwo+PiArwqDCoMKgIGlmIChkcC0+ZF9tb3VudC0+bV9mbGFncyAmIE1OVF9SRE9OTFkp
IHsKPj4gK8KgwqDCoMKgwqDCoMKgIGVycm9yID0gRVJPRlM7Cj4+ICvCoMKgwqAgfSBlbHNlIHsK
Pj4gK8KgwqDCoMKgwqDCoMKgIGVycm9yID0gdm5fc2V0dGltZXMoZHAtPmRfdm5vZGUsIHRpbWVz
cGVjX3RpbWVzKTsKPj4gK8KgwqDCoCB9Cj4+ICsKPj4gK8KgwqDCoCBkcmVsZShkcCk7Cj4+ICvC
oMKgwqAgcmV0dXJuIGVycm9yOwo+PiDCoCB9Cj4+IMKgIC8qCj4+IEBAIC0xMjg5LDcgKzEyODks
NyBAQCBzeXNfdXRpbWVzKGNoYXIgKnBhdGgsIGNvbnN0IHN0cnVjdCB0aW1ldmFsIAo+PiB0aW1l
c1syXSwgaW50IGZsYWdzKQo+PiDCoMKgICovCj4+IMKgIHN0YXRpYyBib29sIGlzX3RpbWVzcGVj
X3ZhbGlkKGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAmdGltZSkKPj4gwqAgewo+PiAtwqDCoMKgIHJl
dHVybiAodGltZS50dl9zZWMgPj0gMCkgJiYKPj4gK8KgwqDCoCByZXR1cm4gKHRpbWUudHZfc2Vj
ID49IDApICYmCj4+IMKgwqDCoMKgwqDCoMKgwqAgKCh0aW1lLnR2X25zZWMgPj0gMCAmJiB0aW1l
LnR2X25zZWMgPD0gOTk5OTk5OTk5KSB8fAo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgdGltZS50dl9u
c2VjID09IFVUSU1FX05PVyB8fAo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgdGltZS50dl9uc2VjID09
IFVUSU1FX09NSVQpOwo+PiBAQCAtMTI5Nyw0OCArMTI5Nyw0OCBAQCBzdGF0aWMgYm9vbCBpc190
aW1lc3BlY192YWxpZChjb25zdCBzdHJ1Y3QgCj4+IHRpbWVzcGVjICZ0aW1lKQo+PiDCoCB2b2lk
IGluaXRfdGltZXNwZWMoc3RydWN0IHRpbWVzcGVjICZfdGltZXMsIGNvbnN0IHN0cnVjdCB0aW1l
c3BlYyAKPj4gKnRpbWVzKQo+PiDCoCB7Cj4+IC3CoMKgwqAgaWYgKHRpbWVzID09IG51bGxwdHIg
fHwgdGltZXMtPnR2X25zZWMgPT0gVVRJTUVfTk9XKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCBjbG9j
a19nZXR0aW1lKENMT0NLX1JFQUxUSU1FLCAmX3RpbWVzKTsKPj4gLcKgwqDCoCB9IGVsc2Ugewo+
PiAtwqDCoMKgwqDCoMKgwqAgX3RpbWVzLnR2X3NlYyA9IHRpbWVzLT50dl9zZWM7Cj4+IC3CoMKg
wqDCoMKgwqDCoCBfdGltZXMudHZfbnNlYyA9IHRpbWVzLT50dl9uc2VjOwo+PiAtwqDCoMKgIH0K
Pj4gLcKgwqDCoCByZXR1cm47Cj4+ICvCoMKgwqAgaWYgKHRpbWVzID09IG51bGxwdHIgfHwgdGlt
ZXMtPnR2X25zZWMgPT0gVVRJTUVfTk9XKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBjbG9ja19nZXR0
aW1lKENMT0NLX1JFQUxUSU1FLCAmX3RpbWVzKTsKPj4gK8KgwqDCoCB9IGVsc2Ugewo+PiArwqDC
oMKgwqDCoMKgwqAgX3RpbWVzLnR2X3NlYyA9IHRpbWVzLT50dl9zZWM7Cj4+ICvCoMKgwqDCoMKg
wqDCoCBfdGltZXMudHZfbnNlYyA9IHRpbWVzLT50dl9uc2VjOwo+PiArwqDCoMKgIH0KPj4gK8Kg
wqDCoCByZXR1cm47Cj4+IMKgIH0KPj4gwqAgaW50Cj4+IMKgIHN5c191dGltZW5zYXQoaW50IGRp
cmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwgY29uc3Qgc3RydWN0IHRpbWVzcGVjIAo+PiB0aW1l
c1syXSwgaW50IGZsYWdzKQo+PiDCoCB7Cj4+IC3CoMKgwqAgaW50IGVycm9yOwo+PiAtwqDCoMKg
IHN0ZDo6c3RyaW5nIGFwOwo+PiAtwqDCoMKgIHN0cnVjdCB0aW1lc3BlYyB0aW1lc3BlY190aW1l
c1syXTsKPj4gLcKgwqDCoCBleHRlcm4gc3RydWN0IHRhc2sgKm1haW5fdGFzazsKPj4gLcKgwqDC
oCBzdHJ1Y3QgZGVudHJ5ICpkcDsKPj4gK8KgwqDCoCBpbnQgZXJyb3I7Cj4+ICvCoMKgwqAgc3Rk
OjpzdHJpbmcgYXA7Cj4+ICvCoMKgwqAgc3RydWN0IHRpbWVzcGVjIHRpbWVzcGVjX3RpbWVzWzJd
Owo+PiArwqDCoMKgIGV4dGVybiBzdHJ1Y3QgdGFzayAqbWFpbl90YXNrOwo+PiArwqDCoMKgIHN0
cnVjdCBkZW50cnkgKmRwOwo+PiAtwqDCoMKgIC8qIHV0aW1lbnNhdCBzaG91bGQgcmV0dXJuIEVO
T0VOVCB3aGVuIHBhdGhuYW1lIGlzIGVtcHR5ICovCj4+IC3CoMKgwqAgaWYocGF0aG5hbWUgJiYg
cGF0aG5hbWVbMF0gPT0gMCkKPj4gLcKgwqDCoMKgwqDCoMKgIHJldHVybiBFTk9FTlQ7Cj4+ICvC
oMKgwqAgLyogdXRpbWVuc2F0IHNob3VsZCByZXR1cm4gRU5PRU5UIHdoZW4gcGF0aG5hbWUgaXMg
ZW1wdHkgKi8KPj4gK8KgwqDCoCBpZihwYXRobmFtZSAmJiBwYXRobmFtZVswXSA9PSAwKQo+PiAr
wqDCoMKgwqDCoMKgwqAgcmV0dXJuIEVOT0VOVDsKPj4gLcKgwqDCoCBpZiAoZmxhZ3MgJiYgIShm
bGFncyAmIEFUX1NZTUxJTktfTk9GT0xMT1cpKQo+PiAtwqDCoMKgwqDCoMKgwqAgcmV0dXJuIEVJ
TlZBTDsKPj4gK8KgwqDCoCBpZiAoZmxhZ3MgJiYgIShmbGFncyAmIEFUX1NZTUxJTktfTk9GT0xM
T1cpKQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIEVJTlZBTDsKPj4gLcKgwqDCoCBpZiAodGlt
ZXMgJiYgKCFpc190aW1lc3BlY192YWxpZCh0aW1lc1swXSkgfHwgCj4+ICFpc190aW1lc3BlY192
YWxpZCh0aW1lc1sxXSkpKQo+PiAtwqDCoMKgwqDCoMKgwqAgcmV0dXJuIEVJTlZBTDsKPj4gK8Kg
wqDCoCBpZiAodGltZXMgJiYgKCFpc190aW1lc3BlY192YWxpZCh0aW1lc1swXSkgfHwgCj4+ICFp
c190aW1lc3BlY192YWxpZCh0aW1lc1sxXSkpKQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIEVJ
TlZBTDsKPj4gLcKgwqDCoCBpbml0X3RpbWVzcGVjKHRpbWVzcGVjX3RpbWVzWzBdLCB0aW1lcyA/
IHRpbWVzICsgMCA6IG51bGxwdHIpOwo+PiAtwqDCoMKgIGluaXRfdGltZXNwZWModGltZXNwZWNf
dGltZXNbMV0sIHRpbWVzID8gdGltZXMgKyAxIDogbnVsbHB0cik7Cj4+ICvCoMKgwqAgaW5pdF90
aW1lc3BlYyh0aW1lc3BlY190aW1lc1swXSwgdGltZXMgPyB0aW1lcyArIDAgOiBudWxscHRyKTsK
Pj4gK8KgwqDCoCBpbml0X3RpbWVzcGVjKHRpbWVzcGVjX3RpbWVzWzFdLCB0aW1lcyA/IHRpbWVz
ICsgMSA6IG51bGxwdHIpOwo+PiAtwqDCoMKgIGlmIChwYXRobmFtZSAmJiBwYXRobmFtZVswXSA9
PSAnLycpIHsKPj4gK8KgwqDCoCBpZiAocGF0aG5hbWUgJiYgcGF0aG5hbWVbMF0gPT0gJy8nKSB7
Cj4+IMKgwqDCoMKgwqAgYXAgPSBwYXRobmFtZTsKPj4gLcKgwqDCoCB9IGVsc2UgaWYgKGRpcmZk
ID09IEFUX0ZEQ1dEKSB7Cj4+ICvCoMKgwqAgfSBlbHNlIGlmIChkaXJmZCA9PSBBVF9GRENXRCkg
ewo+PiDCoMKgwqDCoMKgIGlmICghcGF0aG5hbWUpCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1
cm4gRUZBVUxUOwo+PiDCoMKgwqDCoMKgIGFwID0gc3RkOjpzdHJpbmcobWFpbl90YXNrLT50X2N3
ZCkgKyAiLyIgKyBwYXRobmFtZTsKPj4gLcKgwqDCoCB9IGVsc2Ugewo+PiAtwqDCoMKgwqDCoMKg
wqAgc3RydWN0IGZpbGUgKmZwOwo+PiAtwqDCoMKgwqDCoMKgwqAgZmlsZXJlZiBmKGZpbGVyZWZf
ZnJvbV9mZChkaXJmZCkpOwo+PiArwqDCoMKgIH0gZWxzZSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBz
dHJ1Y3QgZmlsZSAqZnA7Cj4+ICvCoMKgwqDCoMKgwqDCoCBmaWxlcmVmIGYoZmlsZXJlZl9mcm9t
X2ZkKGRpcmZkKSk7Cj4+IC3CoMKgwqDCoMKgwqDCoCBpZiAoIWYpCj4+ICvCoMKgwqDCoMKgwqDC
oCBpZiAoIWYpCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gRUJBREY7Cj4+IMKgwqDCoMKg
wqAgZnAgPSBmLmdldCgpOwo+PiBAQCAtMTM1NSwxMzIgKzEzNTUsMTMyIEBAIHN5c191dGltZW5z
YXQoaW50IGRpcmZkLCBjb25zdCBjaGFyIAo+PiAqcGF0aG5hbWUsIGNvbnN0IHN0cnVjdCB0aW1l
c3BlYyB0aW1lc1syXSwgaQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgYXAgPSBmcC0+Zl9kZW50cnkt
PmRfcGF0aDsKPj4gwqDCoMKgwqDCoCBhcCA9IHN0ZDo6c3RyaW5nKGZwLT5mX2RlbnRyeS0+ZF9t
b3VudC0+bV9wYXRoKSArICIvIiArIGFwOwo+PiAtwqDCoMKgIH0KPj4gK8KgwqDCoCB9Cj4+IC3C
oMKgwqAgLyogRklYTUU6IEFkZCBzdXBwb3J0IGZvciBBVF9TWU1MSU5LX05PRk9MTE9XICovCj4+
ICvCoMKgwqAgLyogRklYTUU6IEFkZCBzdXBwb3J0IGZvciBBVF9TWU1MSU5LX05PRk9MTE9XICov
Cj4+IC3CoMKgwqAgZXJyb3IgPSBuYW1laShhcC5jX3N0cigpLCAmZHApOwo+PiArwqDCoMKgIGVy
cm9yID0gbmFtZWkoYXAuY19zdHIoKSwgJmRwKTsKPj4gLcKgwqDCoCBpZiAoZXJyb3IpCj4+IC3C
oMKgwqDCoMKgwqDCoCByZXR1cm4gZXJyb3I7Cj4+ICvCoMKgwqAgaWYgKGVycm9yKQo+PiArwqDC
oMKgwqDCoMKgwqAgcmV0dXJuIGVycm9yOwo+PiAtwqDCoMKgIGlmIChkcC0+ZF9tb3VudC0+bV9m
bGFncyAmIE1OVF9SRE9OTFkpIHsKPj4gLcKgwqDCoMKgwqDCoMKgIGVycm9yID0gRVJPRlM7Cj4+
IC3CoMKgwqAgfSBlbHNlIHsKPj4gLcKgwqDCoMKgwqDCoMKgIGlmICh2bl9hY2Nlc3MoZHAtPmRf
dm5vZGUsIFZXUklURSkpIHsKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIEVBQ0NF
UzsKPj4gLcKgwqDCoMKgwqDCoMKgIH0KPj4gK8KgwqDCoCBpZiAoZHAtPmRfbW91bnQtPm1fZmxh
Z3MgJiBNTlRfUkRPTkxZKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBlcnJvciA9IEVST0ZTOwo+PiAr
wqDCoMKgIH0gZWxzZSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAodm5fYWNjZXNzKGRwLT5kX3Zu
b2RlLCBWV1JJVEUpKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBFQUNDRVM7
Cj4+ICvCoMKgwqDCoMKgwqDCoCB9Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAodGltZXMgJiYK
Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKHRpbWVzWzBdLnR2X25zZWMgIT0gVVRJ
TUVfTk9XIHx8IHRpbWVzWzFdLnR2X25zZWMgIT0gCj4+IFVUSU1FX05PVykgJiYKPj4gLcKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKHRpbWVzWzBdLnR2X25zZWMgIT0gVVRJTUVfT01JVCB8
fCB0aW1lc1sxXS50dl9uc2VjICE9IAo+PiBVVElNRV9PTUlUKSAmJgo+PiArwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoCAodGltZXNbMF0udHZfbnNlYyAhPSBVVElNRV9OT1cgfHwgdGltZXNb
MV0udHZfbnNlYyAhPSAKPj4gVVRJTUVfTk9XKSAmJgo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoCAodGltZXNbMF0udHZfbnNlYyAhPSBVVElNRV9PTUlUIHx8IHRpbWVzWzFdLnR2X25z
ZWMgIT0gCj4+IFVUSU1FX09NSVQpICYmCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoIShk
cC0+ZF92bm9kZS0+dl9tb2RlICYgflZBUFBFTkQpKSkKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqAgcmV0dXJuIEVQRVJNOwo+PiAtwqDCoMKgwqDCoMKgwqAgZXJyb3IgPSB2bl9zZXR0aW1l
cyhkcC0+ZF92bm9kZSwgdGltZXNwZWNfdGltZXMpOwo+PiAtwqDCoMKgIH0KPj4gK8KgwqDCoMKg
wqDCoMKgIGVycm9yID0gdm5fc2V0dGltZXMoZHAtPmRfdm5vZGUsIHRpbWVzcGVjX3RpbWVzKTsK
Pj4gK8KgwqDCoCB9Cj4+IC3CoMKgwqAgZHJlbGUoZHApOwo+PiAtwqDCoMKgIHJldHVybiBlcnJv
cjsKPj4gK8KgwqDCoCBkcmVsZShkcCk7Cj4+ICvCoMKgwqAgcmV0dXJuIGVycm9yOwo+PiDCoCB9
Cj4+IMKgIGludAo+PiDCoCBzeXNfZnV0aW1lbnMoaW50IGZkLCBjb25zdCBzdHJ1Y3QgdGltZXNw
ZWMgdGltZXNbMl0pCj4+IMKgIHsKPj4gLcKgwqDCoCBzdHJ1Y3QgZmlsZSAqZnA7Cj4+ICvCoMKg
wqAgc3RydWN0IGZpbGUgKmZwOwo+PiAtwqDCoMKgIGZpbGVyZWYgZihmaWxlcmVmX2Zyb21fZmQo
ZmQpKTsKPj4gLcKgwqDCoCBpZiAoIWYpCj4+IC3CoMKgwqDCoMKgwqDCoCByZXR1cm4gRUJBREY7
Cj4+ICvCoMKgwqAgZmlsZXJlZiBmKGZpbGVyZWZfZnJvbV9mZChmZCkpOwo+PiArwqDCoMKgIGlm
ICghZikKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBFQkFERjsKPj4gLcKgwqDCoCBmcCA9IGYu
Z2V0KCk7Cj4+ICvCoMKgwqAgZnAgPSBmLmdldCgpOwo+PiAtwqDCoMKgIGlmICghZnAtPmZfZGVu
dHJ5KQo+PiAtwqDCoMKgwqDCoMKgwqAgcmV0dXJuIEVCQURGOwo+PiArwqDCoMKgIGlmICghZnAt
PmZfZGVudHJ5KQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIEVCQURGOwo+PiAtwqDCoMKgIHN0
ZDo6c3RyaW5nIHBhdGhuYW1lID0gZnAtPmZfZGVudHJ5LT5kX3BhdGg7Cj4+IC3CoMKgwqAgYXV0
byBlcnJvciA9IHN5c191dGltZW5zYXQoQVRfRkRDV0QsIHBhdGhuYW1lLmNfc3RyKCksIHRpbWVz
LCAwKTsKPj4gLcKgwqDCoCByZXR1cm4gZXJyb3I7Cj4+ICvCoMKgwqAgc3RkOjpzdHJpbmcgcGF0
aG5hbWUgPSBmcC0+Zl9kZW50cnktPmRfcGF0aDsKPj4gK8KgwqDCoCBhdXRvIGVycm9yID0gc3lz
X3V0aW1lbnNhdChBVF9GRENXRCwgcGF0aG5hbWUuY19zdHIoKSwgdGltZXMsIDApOwo+PiArwqDC
oMKgIHJldHVybiBlcnJvcjsKPj4gwqAgfQo+PiDCoCBpbnQKPj4gwqAgc3lzX2ZhbGxvY2F0ZShz
dHJ1Y3QgZmlsZSAqZnAsIGludCBtb2RlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuKQo+PiDC
oCB7Cj4+IC3CoMKgwqAgaW50IGVycm9yOwo+PiAtwqDCoMKgIHN0cnVjdCB2bm9kZSAqdnA7Cj4+
IC0KPj4gLcKgwqDCoCBEUFJJTlRGKFZGU0RCX1NZU0NBTEwsICgic3lzX2ZhbGxvY2F0ZTogZnA9
JXgiLCBmcCkpOwo+PiAtCj4+IC3CoMKgwqAgaWYgKCFmcC0+Zl9kZW50cnkgfHwgIShmcC0+Zl9m
bGFncyAmIEZXUklURSkpIHsKPj4gLcKgwqDCoMKgwqDCoMKgIHJldHVybiBFQkFERjsKPj4gLcKg
wqDCoCB9Cj4+IC0KPj4gLcKgwqDCoCBpZiAob2Zmc2V0IDwgMCB8fCBsZW4gPD0gMCkgewo+PiAt
wqDCoMKgwqDCoMKgwqAgcmV0dXJuIEVJTlZBTDsKPj4gLcKgwqDCoCB9Cj4+IC0KPj4gLcKgwqDC
oCAvLyBTdHJhbmdlLCBidXQgdGhhdCdzIHdoYXQgTGludXggcmV0dXJucy4KPj4gLcKgwqDCoCBp
ZiAoKG1vZGUgJiBGQUxMT0NfRkxfUFVOQ0hfSE9MRSkgJiYgIShtb2RlICYgCj4+IEZBTExPQ19G
TF9LRUVQX1NJWkUpKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCByZXR1cm4gRU5PVFNVUDsKPj4gLcKg
wqDCoCB9Cj4+IC0KPj4gLcKgwqDCoCB2cCA9IGZwLT5mX2RlbnRyeS0+ZF92bm9kZTsKPj4gLcKg
wqDCoCB2bl9sb2NrKHZwKTsKPj4gLQo+PiAtwqDCoMKgIC8vIE5PVEU6IEl0J3Mgbm90IGRldGVj
dGVkIGhlcmUgd2hldGhlciBvciBub3QgdGhlIGRldmljZSB1bmRlcmx5aW5nCj4+IC3CoMKgwqAg
Ly8gdGhlIGZzIGlzIGEgYmxvY2sgZGV2aWNlLiBJdCdzIHVwIHRvIHRoZSBmcyBpdHNlbGYgdGVs
bCB1cyAKPj4gd2hldGhlcgo+PiAtwqDCoMKgIC8vIG9yIG5vdCBmYWxsb2NhdGUgaXMgc3VwcG9y
dGVkLiBTZWUgYmVsb3c6Cj4+IC3CoMKgwqAgaWYgKHZwLT52X3R5cGUgIT0gVlJFRyAmJiB2cC0+
dl90eXBlICE9IFZESVIpIHsKPj4gLcKgwqDCoMKgwqDCoMKgIGVycm9yID0gRU5PREVWOwo+PiAt
wqDCoMKgwqDCoMKgwqAgZ290byByZXQ7Cj4+IC3CoMKgwqAgfQo+PiAtCj4+IC3CoMKgwqAgLy8g
RU9QTk9UU1VQUCBoZXJlIG1lYW5zIHRoYXQgdGhlIHVuZGVybHlpbmcgZmlsZSBzeXN0ZW0KPj4g
LcKgwqDCoCAvLyByZWZlcnJlZCBieSB2cCBkb2Vzbid0IHN1cHBvcnQgZmFsbG9jYXRlLgo+PiAt
wqDCoMKgIGlmICghdnAtPnZfb3AtPnZvcF9mYWxsb2NhdGUpIHsKPj4gLcKgwqDCoMKgwqDCoMKg
IGVycm9yID0gRU9QTk9UU1VQUDsKPj4gLcKgwqDCoMKgwqDCoMKgIGdvdG8gcmV0Owo+PiAtwqDC
oMKgIH0KPj4gLQo+PiAtwqDCoMKgIGVycm9yID0gVk9QX0ZBTExPQ0FURSh2cCwgbW9kZSwgb2Zm
c2V0LCBsZW4pOwo+PiArwqDCoMKgIGludCBlcnJvcjsKPj4gK8KgwqDCoCBzdHJ1Y3Qgdm5vZGUg
KnZwOwo+PiArCj4+ICvCoMKgwqAgRFBSSU5URihWRlNEQl9TWVNDQUxMLCAoInN5c19mYWxsb2Nh
dGU6IGZwPSV4IiwgZnApKTsKPj4gKwo+PiArwqDCoMKgIGlmICghZnAtPmZfZGVudHJ5IHx8ICEo
ZnAtPmZfZmxhZ3MgJiBGV1JJVEUpKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gRUJBREY7
Cj4+ICvCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqAgaWYgKG9mZnNldCA8IDAgfHwgbGVuIDw9IDAp
IHsKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBFSU5WQUw7Cj4+ICvCoMKgwqAgfQo+PiArCj4+
ICvCoMKgwqAgLy8gU3RyYW5nZSwgYnV0IHRoYXQncyB3aGF0IExpbnV4IHJldHVybnMuCj4+ICvC
oMKgwqAgaWYgKChtb2RlICYgRkFMTE9DX0ZMX1BVTkNIX0hPTEUpICYmICEobW9kZSAmIAo+PiBG
QUxMT0NfRkxfS0VFUF9TSVpFKSkgewo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIEVOT1RTVVA7
Cj4+ICvCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqAgdnAgPSBmcC0+Zl9kZW50cnktPmRfdm5vZGU7
Cj4+ICvCoMKgwqAgdm5fbG9jayh2cCk7Cj4+ICsKPj4gK8KgwqDCoCAvLyBOT1RFOiBJdCdzIG5v
dCBkZXRlY3RlZCBoZXJlIHdoZXRoZXIgb3Igbm90IHRoZSBkZXZpY2UgdW5kZXJseWluZwo+PiAr
wqDCoMKgIC8vIHRoZSBmcyBpcyBhIGJsb2NrIGRldmljZS4gSXQncyB1cCB0byB0aGUgZnMgaXRz
ZWxmIHRlbGwgdXMgCj4+IHdoZXRoZXIKPj4gK8KgwqDCoCAvLyBvciBub3QgZmFsbG9jYXRlIGlz
IHN1cHBvcnRlZC4gU2VlIGJlbG93Ogo+PiArwqDCoMKgIGlmICh2cC0+dl90eXBlICE9IFZSRUcg
JiYgdnAtPnZfdHlwZSAhPSBWRElSKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBlcnJvciA9IEVOT0RF
VjsKPj4gK8KgwqDCoMKgwqDCoMKgIGdvdG8gcmV0Owo+PiArwqDCoMKgIH0KPj4gKwo+PiArwqDC
oMKgIC8vIEVPUE5PVFNVUFAgaGVyZSBtZWFucyB0aGF0IHRoZSB1bmRlcmx5aW5nIGZpbGUgc3lz
dGVtCj4+ICvCoMKgwqAgLy8gcmVmZXJyZWQgYnkgdnAgZG9lc24ndCBzdXBwb3J0IGZhbGxvY2F0
ZS4KPj4gK8KgwqDCoCBpZiAoIXZwLT52X29wLT52b3BfZmFsbG9jYXRlKSB7Cj4+ICvCoMKgwqDC
oMKgwqDCoCBlcnJvciA9IEVPUE5PVFNVUFA7Cj4+ICvCoMKgwqDCoMKgwqDCoCBnb3RvIHJldDsK
Pj4gK8KgwqDCoCB9Cj4+ICsKPj4gK8KgwqDCoCBlcnJvciA9IFZPUF9GQUxMT0NBVEUodnAsIG1v
ZGUsIG9mZnNldCwgbGVuKTsKPj4gwqAgcmV0Ogo+PiAtwqDCoMKgIHZuX3VubG9jayh2cCk7Cj4+
IC3CoMKgwqAgcmV0dXJuIGVycm9yOwo+PiArwqDCoMKgIHZuX3VubG9jayh2cCk7Cj4+ICvCoMKg
wqAgcmV0dXJuIGVycm9yOwo+PiDCoCB9Cj4+IMKgIGludAo+PiDCoCBzeXNfY2htb2QoY29uc3Qg
Y2hhciAqcGF0aCwgbW9kZV90IG1vZGUpCj4+IMKgIHsKPj4gLcKgwqDCoCBpbnQgZXJyb3I7Cj4+
IC3CoMKgwqAgc3RydWN0IGRlbnRyeSAqZHA7Cj4+IC3CoMKgwqAgRFBSSU5URihWRlNEQl9TWVND
QUxMLCAoInN5c19jaG1vZDogcGF0aD0lc1xuIiwgcGF0aCkpOwo+PiAtwqDCoMKgIGVycm9yID0g
bmFtZWkocGF0aCwgJmRwKTsKPj4gLcKgwqDCoCBpZiAoZXJyb3IpCj4+IC3CoMKgwqDCoMKgwqDC
oCByZXR1cm4gZXJyb3I7Cj4+IC3CoMKgwqAgaWYgKGRwLT5kX21vdW50LT5tX2ZsYWdzICYgTU5U
X1JET05MWSkgewo+PiAtwqDCoMKgwqDCoMKgwqAgZXJyb3IgPSBFUk9GUzsKPj4gLcKgwqDCoCB9
IGVsc2Ugewo+PiAtwqDCoMKgwqDCoMKgwqAgZXJyb3IgPSB2bl9zZXRtb2RlKGRwLT5kX3Zub2Rl
LCBtb2RlKTsKPj4gLcKgwqDCoCB9Cj4+IC3CoMKgwqAgZHJlbGUoZHApOwo+PiAtwqDCoMKgIHJl
dHVybiBlcnJvcjsKPj4gK8KgwqDCoCBpbnQgZXJyb3I7Cj4+ICvCoMKgwqAgc3RydWN0IGRlbnRy
eSAqZHA7Cj4+ICvCoMKgwqAgRFBSSU5URihWRlNEQl9TWVNDQUxMLCAoInN5c19jaG1vZDogcGF0
aD0lc1xuIiwgcGF0aCkpOwo+PiArwqDCoMKgIGVycm9yID0gbmFtZWkocGF0aCwgJmRwKTsKPj4g
K8KgwqDCoCBpZiAoZXJyb3IpCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gZXJyb3I7Cj4+ICvC
oMKgwqAgaWYgKGRwLT5kX21vdW50LT5tX2ZsYWdzICYgTU5UX1JET05MWSkgewo+PiArwqDCoMKg
wqDCoMKgwqAgZXJyb3IgPSBFUk9GUzsKPj4gK8KgwqDCoCB9IGVsc2Ugewo+PiArwqDCoMKgwqDC
oMKgwqAgZXJyb3IgPSB2bl9zZXRtb2RlKGRwLT5kX3Zub2RlLCBtb2RlKTsKPj4gK8KgwqDCoCB9
Cj4+ICvCoMKgwqAgZHJlbGUoZHApOwo+PiArwqDCoMKgIHJldHVybiBlcnJvcjsKPj4gwqAgfQo+
PiDCoCBpbnQKPj4gwqAgc3lzX2ZjaG1vZChpbnQgZmQsIG1vZGVfdCBtb2RlKQo+PiDCoCB7Cj4+
IC3CoMKgwqAgZmlsZXJlZiBmKGZpbGVyZWZfZnJvbV9mZChmZCkpOwo+PiAtwqDCoMKgIGlmICgh
ZikKPj4gLcKgwqDCoMKgwqDCoMKgIHJldHVybiBFQkFERjsKPj4gLcKgwqDCoCAvLyBQb3NpeCBp
cyBhbWJpdmFsZW50IG9uIHdoYXQgZmNobW9kKCkgc2hvdWxkIGRvIG9uIGFuIGZkIHRoYXQgCj4+
IGRvZXMgbm90Cj4+IC3CoMKgwqAgLy8gcmVmZXIgdG8gYSByZWFsIGZpbGUuIEl0IHN1Z2dlc3Rz
IGFuIGltcGxlbWVudGF0aW9uIG1heSAoYnV0IAo+PiBub3QgbXVzdCkKPj4gLcKgwqDCoCAvLyBm
YWlsIEVJTlZBTCBvbiBhIHBpcGUsIGNhbiBiZWhhdmUgaW4gYW4gInVuc3BlY2lmaWVkIiBtYW5u
ZXIgb24gYQo+PiAtwqDCoMKgIC8vIHNvY2tldCwgYW5kIGZvciBhIFNUUkVBTSwgaXQgbXVzdCBz
dWNjZWVkIGFuZCBkbyBub3RoaW5nLiAKPj4gTGludXggc2VlbXMKPj4gLcKgwqDCoCAvLyB0byBq
dXN0IGRvIHRoZSBsYXN0IHRoaW5nIChkbyBub3RoaW5nIGFuZCBzdWNjZWVkKS4KPj4gLcKgwqDC
oCBpZiAoIWYtPmZfZGVudHJ5KSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCByZXR1cm4gMDsKPj4gLcKg
wqDCoCB9Cj4+IC3CoMKgwqAgaWYgKGYtPmZfZGVudHJ5LT5kX21vdW50LT5tX2ZsYWdzICYgTU5U
X1JET05MWSkgewo+PiAtwqDCoMKgwqDCoMKgwqAgcmV0dXJuIEVST0ZTOwo+PiAtwqDCoMKgIH0g
ZWxzZSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCByZXR1cm4gdm5fc2V0bW9kZShmLT5mX2RlbnRyeS0+
ZF92bm9kZSwgbW9kZSk7Cj4+IC3CoMKgwqAgfQo+PiArwqDCoMKgIGZpbGVyZWYgZihmaWxlcmVm
X2Zyb21fZmQoZmQpKTsKPj4gK8KgwqDCoCBpZiAoIWYpCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1
cm4gRUJBREY7Cj4+ICvCoMKgwqAgLy8gUG9zaXggaXMgYW1iaXZhbGVudCBvbiB3aGF0IGZjaG1v
ZCgpIHNob3VsZCBkbyBvbiBhbiBmZCB0aGF0IAo+PiBkb2VzIG5vdAo+PiArwqDCoMKgIC8vIHJl
ZmVyIHRvIGEgcmVhbCBmaWxlLiBJdCBzdWdnZXN0cyBhbiBpbXBsZW1lbnRhdGlvbiBtYXkgKGJ1
dCAKPj4gbm90IG11c3QpCj4+ICvCoMKgwqAgLy8gZmFpbCBFSU5WQUwgb24gYSBwaXBlLCBjYW4g
YmVoYXZlIGluIGFuICJ1bnNwZWNpZmllZCIgbWFubmVyIG9uIGEKPj4gK8KgwqDCoCAvLyBzb2Nr
ZXQsIGFuZCBmb3IgYSBTVFJFQU0sIGl0IG11c3Qgc3VjY2VlZCBhbmQgZG8gbm90aGluZy4gCj4+
IExpbnV4IHNlZW1zCj4+ICvCoMKgwqAgLy8gdG8ganVzdCBkbyB0aGUgbGFzdCB0aGluZyAoZG8g
bm90aGluZyBhbmQgc3VjY2VlZCkuCj4+ICvCoMKgwqAgaWYgKCFmLT5mX2RlbnRyeSkgewo+PiAr
wqDCoMKgwqDCoMKgwqAgcmV0dXJuIDA7Cj4+ICvCoMKgwqAgfQo+PiArwqDCoMKgIGlmIChmLT5m
X2RlbnRyeS0+ZF9tb3VudC0+bV9mbGFncyAmIE1OVF9SRE9OTFkpIHsKPj4gK8KgwqDCoMKgwqDC
oMKgIHJldHVybiBFUk9GUzsKPj4gK8KgwqDCoCB9IGVsc2Ugewo+PiArwqDCoMKgwqDCoMKgwqAg
cmV0dXJuIHZuX3NldG1vZGUoZi0+Zl9kZW50cnktPmRfdm5vZGUsIG1vZGUpOwo+PiArwqDCoMKg
IH0KPj4gwqAgfQo+PiBkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvdGFzay5jIGIvbGliL3Zmc2Nv
cmUvdGFzay5jCj4+IGluZGV4IDdhMzU1MDM0Li5iMmEwMjhjNiAxMDA2NDQKPj4gLS0tIGEvbGli
L3Zmc2NvcmUvdGFzay5jCj4+ICsrKyBiL2xpYi92ZnNjb3JlL3Rhc2suYwo+PiBAQCAtNDgsNyAr
NDgsNyBAQCB0YXNrX2FsbG9jKHN0cnVjdCB0YXNrICoqcHQpCj4+IMKgIHsKPj4gwqDCoMKgwqDC
oCBzdHJ1Y3QgdGFzayAqdDsKPj4gLcKgwqDCoCAvLyBGSVhNRTogd2hlcmUgZG8gd2UgZnJlZSB0
YXNrID8KPj4gK8KgwqDCoCAvLyBGSVhNRTogd2hlcmUgZG8gd2UgZnJlZSB0YXNrID8KPj4gwqDC
oMKgwqDCoCBpZiAoISh0ID0gbmV3IHRhc2spKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJu
IEVOT01FTTsKPj4gwqDCoMKgwqDCoCBtZW1zZXQodCwgMCwgc2l6ZW9mKHN0cnVjdCB0YXNrKSk7
Cj4+IEBAIC0xNjAsOCArMTYwLDggQEAgdGFza19jb252KHN0cnVjdCB0YXNrICp0LCBjb25zdCBj
aGFyICpjcGF0aCwgaW50IAo+PiBhY2MsIGNoYXIgKmZ1bGwpCj4+IMKgwqAgKi8KPj4gwqAgaW50
IHZmc19kbmFtZV9jb3B5KGNoYXIgKmRlc3QsIGNvbnN0IGNoYXIgKnNyYywgc2l6ZV90IHNpemUp
Cj4+IMKgIHsKPj4gLcKgwqDCoCBpZiAoc3RybGNweShkZXN0LCBzcmMsIHNpemUpID49IHNpemUp
IHsKPj4gLcKgwqDCoMKgwqDCoMKgIHJldHVybiAtMTsKPj4gLcKgwqDCoCB9Cj4+IC3CoMKgwqAg
cmV0dXJuIDA7Cj4+ICvCoMKgwqAgaWYgKHN0cmxjcHkoZGVzdCwgc3JjLCBzaXplKSA+PSBzaXpl
KSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gLTE7Cj4+ICvCoMKgwqAgfQo+PiArwqDCoMKg
IHJldHVybiAwOwo+PiDCoCB9Cj4+IGRpZmYgLS1naXQgYS9saWIvdmZzY29yZS92ZnMuaCBiL2xp
Yi92ZnNjb3JlL3Zmcy5oCj4+IGluZGV4IGQ4NmVmOTU3Li4yYjgyNTUyMSAxMDA2NDQKPj4gLS0t
IGEvbGliL3Zmc2NvcmUvdmZzLmgKPj4gKysrIGIvbGliL3Zmc2NvcmUvdmZzLmgKPiBXQVJOSU5H
OiBwbGVhc2UsIG5vIHNwYWNlIGJlZm9yZSB0YWJzCj4gCj4gIzgzOiBGSUxFOiBsaWIvdmZzY29y
ZS92ZnMuaDo4MzoKPiAKPiArXkljaGFyIF5JwqDCoMKgIHRfY3dkW1BBVEhfTUFYXTteSS8qIGN1
cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgKi8kCj4gCj4gCj4+IEBAIC0xMjAsNyArMTIwLDcgQEAg
aW50wqDCoMKgwqAgc3lzX3RydW5jYXRlKGNoYXIgKnBhdGgsIG9mZl90IGxlbmd0aCk7Cj4+IMKg
IGludMKgwqDCoMKgIHN5c19yZWFkbGluayhjaGFyICpwYXRoLCBjaGFyICpidWYsIHNpemVfdCBi
dWZzaXplLCBzc2l6ZV90IAo+PiAqc2l6ZSk7Cj4+IMKgIGludMKgIHN5c191dGltZXMoY2hhciAq
cGF0aCwgY29uc3Qgc3RydWN0IHRpbWV2YWwgdGltZXNbMl0sIGludCBmbGFncyk7Cj4+IMKgIGlu
dMKgIHN5c191dGltZW5zYXQoaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwKPj4gLcKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zdCBzdHJ1Y3QgdGltZXNwZWMg
dGltZXNbMl0sIGludCBmbGFncyk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqAgY29uc3Qgc3RydWN0IHRpbWVzcGVjIHRpbWVzWzJdLCBpbnQgZmxhZ3MpOwo+PiDCoCBp
bnTCoCBzeXNfZnV0aW1lbnMoaW50IGZkLCBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgdGltZXNbMl0p
Owo+PiDCoCBpbnTCoCBzeXNfZmFsbG9jYXRlKHN0cnVjdCBmaWxlICpmcCwgaW50IG1vZGUsIGxv
ZmZfdCBvZmZzZXQsIGxvZmZfdCAKPj4gbGVuKTsKPj4gZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3Jl
L3Zub2RlLmMgYi9saWIvdmZzY29yZS92bm9kZS5jCj4+IGluZGV4IGEyOTIzNDRmLi4xMTllZDg3
MCAxMDA2NDQKPj4gLS0tIGEvbGliL3Zmc2NvcmUvdm5vZGUuYwo+PiArKysgYi9saWIvdmZzY29y
ZS92bm9kZS5jCj4gRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCB1c2UgdGFicyB3aGVyZSBwb3Nz
aWJsZQo+IAo+ICM0NTg6IEZJTEU6IGxpYi92ZnNjb3JlL3Zub2RlLmM6NDU4Ogo+IAo+ICteScKg
wqDCoMKgwqDCoMKgIExJU1RfRk9SRUFDSCh2cCwgJnZub2RlX3RhYmxlW2ldLCB2X2xpbmspIHsk
Cj4gCj4gCj4+IEBAIC0zNzEsMjIgKzM3MSwyMiBAQCB2bl9zdGF0KHN0cnVjdCB2bm9kZSAqdnAs
IHN0cnVjdCBzdGF0ICpzdCkKPj4gwqAgaW50Cj4+IMKgIHZuX3NldHRpbWVzKHN0cnVjdCB2bm9k
ZSAqdnAsIHN0cnVjdCB0aW1lc3BlYyB0aW1lc1syXSkKPj4gwqAgewo+PiAtwqDCoMKgIHN0cnVj
dCB2YXR0ciB2YXR0cjsKPj4gLcKgwqDCoCBzdHJ1Y3QgdmF0dHIgKnZhcDsKPj4gLcKgwqDCoCBp
bnQgZXJyb3I7Cj4+IC0KPj4gLcKgwqDCoCB2YXAgPSAmdmF0dHI7Cj4+IC3CoMKgwqAgbWVtc2V0
KHZhcCwgMCwgc2l6ZW9mKHN0cnVjdCB2YXR0cikpOwo+PiAtCj4+IC3CoMKgwqAgdmFwLT52YV9h
dGltZSA9IHRpbWVzWzBdOwo+PiAtwqDCoMKgIHZhcC0+dmFfbXRpbWUgPSB0aW1lc1sxXTsKPj4g
LcKgwqDCoCB2YXAtPnZhX21hc2sgPSAoKHRpbWVzWzBdLnR2X25zZWMgPT0gVVRJTUVfT01JVCkg
PyAwIDogQVRfQVRJTUUpCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oCB8ICgodGltZXNbMV0udHZfbnNlYyA9PSBVVElNRV9PTUlUKSA/IDAgOiBBVF9NVElNRSk7Cj4+
IC3CoMKgwqAgdm5fbG9jayh2cCk7Cj4+IC3CoMKgwqAgZXJyb3IgPSBWT1BfU0VUQVRUUih2cCwg
dmFwKTsKPj4gLcKgwqDCoCB2bl91bmxvY2sodnApOwo+PiAtCj4+IC3CoMKgwqAgcmV0dXJuIGVy
cm9yOwo+PiArwqDCoMKgIHN0cnVjdCB2YXR0ciB2YXR0cjsKPj4gK8KgwqDCoCBzdHJ1Y3QgdmF0
dHIgKnZhcDsKPj4gK8KgwqDCoCBpbnQgZXJyb3I7Cj4+ICsKPj4gK8KgwqDCoCB2YXAgPSAmdmF0
dHI7Cj4+ICvCoMKgwqAgbWVtc2V0KHZhcCwgMCwgc2l6ZW9mKHN0cnVjdCB2YXR0cikpOwo+PiAr
Cj4+ICvCoMKgwqAgdmFwLT52YV9hdGltZSA9IHRpbWVzWzBdOwo+PiArwqDCoMKgIHZhcC0+dmFf
bXRpbWUgPSB0aW1lc1sxXTsKPj4gK8KgwqDCoCB2YXAtPnZhX21hc2sgPSAoKHRpbWVzWzBdLnR2
X25zZWMgPT0gVVRJTUVfT01JVCkgPyAwIDogQVRfQVRJTUUpCj4+ICvCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8ICgodGltZXNbMV0udHZfbnNlYyA9PSBVVElNRV9PTUlU
KSA/IDAgOiBBVF9NVElNRSk7Cj4+ICvCoMKgwqAgdm5fbG9jayh2cCk7Cj4+ICvCoMKgwqAgZXJy
b3IgPSBWT1BfU0VUQVRUUih2cCwgdmFwKTsKPj4gK8KgwqDCoCB2bl91bmxvY2sodnApOwo+PiAr
Cj4+ICvCoMKgwqAgcmV0dXJuIGVycm9yOwo+PiDCoCB9Cj4+IMKgIC8qCj4+IEBAIC0zOTUsMTUg
KzM5NSwxNSBAQCB2bl9zZXR0aW1lcyhzdHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3QgdGltZXNwZWMg
Cj4+IHRpbWVzWzJdKQo+PiDCoCBpbnQKPj4gwqAgdm5fc2V0bW9kZShzdHJ1Y3Qgdm5vZGUgKnZw
LCBtb2RlX3QgbmV3X21vZGUpCj4+IMKgIHsKPj4gLcKgwqDCoCBzdHJ1Y3QgdmF0dHIgdmF0dHI7
Cj4+IC3CoMKgwqAgbWVtc2V0KCZ2YXR0ciwgMCwgc2l6ZW9mKHZhdHRyKSk7Cj4+IC3CoMKgwqAg
dmF0dHIudmFfbW9kZSA9IG5ld19tb2RlOwo+PiAtwqDCoMKgIHZhdHRyLnZhX21hc2sgPSBBVF9N
T0RFOwo+PiAtwqDCoMKgIHZuX2xvY2sodnApOwo+PiAtwqDCoMKgIHZwLT52X21vZGUgPSBuZXdf
bW9kZTsKPj4gLcKgwqDCoCBpbnQgZXJyb3IgPSBWT1BfU0VUQVRUUih2cCwgJnZhdHRyKTsKPj4g
LcKgwqDCoCB2bl91bmxvY2sodnApOwo+PiAtwqDCoMKgIHJldHVybiBlcnJvcjsKPj4gK8KgwqDC
oCBzdHJ1Y3QgdmF0dHIgdmF0dHI7Cj4+ICvCoMKgwqAgbWVtc2V0KCZ2YXR0ciwgMCwgc2l6ZW9m
KHZhdHRyKSk7Cj4+ICvCoMKgwqAgdmF0dHIudmFfbW9kZSA9IG5ld19tb2RlOwo+PiArwqDCoMKg
IHZhdHRyLnZhX21hc2sgPSBBVF9NT0RFOwo+PiArwqDCoMKgIHZuX2xvY2sodnApOwo+PiArwqDC
oMKgIHZwLT52X21vZGUgPSBuZXdfbW9kZTsKPj4gK8KgwqDCoCBpbnQgZXJyb3IgPSBWT1BfU0VU
QVRUUih2cCwgJnZhdHRyKTsKPj4gK8KgwqDCoCB2bl91bmxvY2sodnApOwo+PiArwqDCoMKgIHJl
dHVybiBlcnJvcjsKPj4gwqAgfQo+PiDCoCAvKgo+Pgo+IAo+IF9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdAo+
IE1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwo+IGh0dHBzOi8vbGlzdHMueGVucHJv
amVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWwKCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QK
TWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVj
dC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Thu Feb 07 12:17:36 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 07 Feb 2019 12:17:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gricZ-00054P-Lt; Thu, 07 Feb 2019 12:17:35 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=6wD6=QO=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1gricY-00054H-Ls
 for minios-devel@lists.xen.org; Thu, 07 Feb 2019 12:17:34 +0000
X-Inumbo-ID: 5621a555-2ad2-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 5621a555-2ad2-11e9-bc90-bc764e045a96;
 Thu, 07 Feb 2019 12:17:29 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 70C82104DA1;
 Thu,  7 Feb 2019 13:17:28 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id irISiD9k0VVu; Thu,  7 Feb 2019 13:17:28 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 348C0104D75
 for <minios-devel@lists.xen.org>; Thu,  7 Feb 2019 13:17:26 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Thu, 7 Feb 2019 13:17:26
 +0100
To: <minios-devel@lists.xen.org>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
 <20190204143739.29249-8-yuri.volchkov@neclab.eu>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <22b644f8-1641-43a5-4a3d-7a9fa2081434@neclab.eu>
Date: Thu, 7 Feb 2019 13:17:09 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190204143739.29249-8-yuri.volchkov@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 07/23] lib/vfscore: remove
 obvious c++isms and irrelevant code
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Simon.kuenzer@neclab.eu, Yuri Volchkov <yuri.volchkov@neclab.eu>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gWXVyaSwKClRoaXMgcGF0Y2ggc2VlbXMgZmluZS4KCgpSZXZpZXdlZC1ieTogU2hhcmFu
IFNhbnRoYW5hbSA8c2hhcmFuLnNhbnRoYW5hbUBuZWNsYWIuZXU+CgpPbiB0aGUgc2lkZW5vdGUs
IHRoZXJlIGFyZSBzb21lIEMrK2lzbSBzdGlsbCBpbiB0aGUgY29kZSB3aGljaCBhcmUgZml4ZWQg
CmFzIGEgcGFydCBvZiB0aGUgbGF0ZXIgY29tbWl0cy4gU2luY2Ugd2UgdXBzdHJlYW0gdGhlIGVu
dGlyZSBzZXJpZXMgYXMgCm9uZSBpdCBpcyBmaW5lLgoKVGhhbmtzICYgUmVnYXJkcwpTaGFyYW4K
CgpPbiAyLzQvMTkgMzozNiBQTSwgWXVyaSBWb2xjaGtvdiB3cm90ZToKPiBTb21lIGMrK2lzbXMg
YXJlIGtlZXAgYmVjYXVzZSBiaWdnZXIgcGllY2VzIG5lZWRlZCB0byBiZSByZWRvbmUgYXJvdW5k
Cj4gdGhlbS4KPiAKPiBTb21lIGNvZGUgaXMganVzdCBkaXNhYmxlZCB3aXRoICNpZiAwLCBhcyB3
ZSB3aWxsIG1ha2UgdXNlIG9mIGl0IGxhdGVyCj4gCj4gU2lnbmVkLW9mZi1ieTogWXVyaSBWb2xj
aGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Cj4gLS0tCj4gICBsaWIvdmZzY29yZS9mb3Bz
LmMgICAgICAgICAgICAgICAgICAgfCAgOTEgKy0tLS0tCj4gICBsaWIvdmZzY29yZS9pbmNsdWRl
L3Zmc2NvcmUvZGVudHJ5LmggfCAgMTYgLQo+ICAgbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3Jl
L21vdW50LmggIHwgIDI2IC0tCj4gICBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvcHJleC5o
ICAgfCAgIDYgLQo+ICAgbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Vpby5oICAgIHwgIDI2
IC0tCj4gICBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUuaCAgfCAgIDQgLQo+ICAg
bGliL3Zmc2NvcmUvbG9va3VwLmMgICAgICAgICAgICAgICAgIHwgIDUxICsrLQo+ICAgbGliL3Zm
c2NvcmUvbWFpbi5jICAgICAgICAgICAgICAgICAgIHwgNDY5ICsrKy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQo+ICAgbGliL3Zmc2NvcmUvbW91bnQuYyAgICAgICAgICAgICAgICAgIHwgIDQ3ICst
LQo+ICAgbGliL3Zmc2NvcmUvc3lzY2FsbHMuYyAgICAgICAgICAgICAgIHwgMTE4ICsrKystLS0K
PiAgIGxpYi92ZnNjb3JlL3Rhc2suYyAgICAgICAgICAgICAgICAgICB8ICAxNyAtCj4gICBsaWIv
dmZzY29yZS92ZnMuaCAgICAgICAgICAgICAgICAgICAgfCAgMjMgLS0KPiAgIGxpYi92ZnNjb3Jl
L3Zub2RlLmMgICAgICAgICAgICAgICAgICB8ICAgMyArLQo+ICAgMTMgZmlsZXMgY2hhbmdlZCwg
MTU1IGluc2VydGlvbnMoKyksIDc0MiBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvbGli
L3Zmc2NvcmUvZm9wcy5jIGIvbGliL3Zmc2NvcmUvZm9wcy5jCj4gaW5kZXggYTk0Y2E0NTIuLmYx
YzE2MWU3IDEwMDY0NAo+IC0tLSBhL2xpYi92ZnNjb3JlL2ZvcHMuYwo+ICsrKyBiL2xpYi92ZnNj
b3JlL2ZvcHMuYwo+IEBAIC00MiwxNCArNDIsOCBAQAo+ICAgI2luY2x1ZGUgPG9zdi9tbXUuaGg+
Cj4gICAjaW5jbHVkZSA8b3N2L3BhZ2VjYWNoZS5oaD4KQysrIGhlYWRlciBmaWxlcz8KCj4gICAK
PiAtdmZzX2ZpbGU6OnZmc19maWxlKHVuc2lnbmVkIGZsYWdzKQo+IC0JOiBmaWxlKGZsYWdzLCBE
VFlQRV9WTk9ERSkKPiAraW50IHZmc19jbG9zZShzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCkKPiAg
IHsKPiAtfQo+IC0KPiAtaW50IHZmc19maWxlOjpjbG9zZSgpCj4gLXsKPiAtCWF1dG8gZnAgPSB0
aGlzOwo+ICAgCXN0cnVjdCB2bm9kZSAqdnAgPSBmcC0+Zl9kZW50cnktPmRfdm5vZGU7Cj4gICAJ
aW50IGVycm9yOwo+ICAgCj4gQEAgLTYwLDEzICs1NCwxNCBAQCBpbnQgdmZzX2ZpbGU6OmNsb3Nl
KCkKPiAgIAlpZiAoZXJyb3IpCj4gICAJCXJldHVybiBlcnJvcjsKPiAgIAo+IC0JZnAtPmZfZGVu
dHJ5LnJlc2V0KCk7Cj4gKwkvKiBEZW50cnkgc3RheXMgZm9yZXZlciBpbiB0aGUgZGVudHJ5IGNh
Y2hlLiBVbmxlc3MgdGhlCj4gKwkgKiBmaWxlL2RpcmVjdG9yeSBpdCByZWZlcnMgdG8gZ2V0cyBk
ZWxldGVkL3JlbmFtZWQgKi8KPiArCWZwLT5mX2RlbnRyeSA9IE5VTEw7Cj4gICAJcmV0dXJuIDA7
Cj4gICB9Cj4gICAKPiAtaW50IHZmc19maWxlOjpyZWFkKHN0cnVjdCB1aW8gKnVpbywgaW50IGZs
YWdzKQo+ICtpbnQgdmZzX3JlYWQoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAsIHN0cnVjdCB1aW8g
KnVpbywgaW50IGZsYWdzKQo+ICAgewo+IC0JYXV0byBmcCA9IHRoaXM7Cj4gICAJc3RydWN0IHZu
b2RlICp2cCA9IGZwLT5mX2RlbnRyeS0+ZF92bm9kZTsKPiAgIAlpbnQgZXJyb3I7Cj4gICAJc2l6
ZV90IGNvdW50Owo+IEBAIC05MCw5ICs4NSw4IEBAIGludCB2ZnNfZmlsZTo6cmVhZChzdHJ1Y3Qg
dWlvICp1aW8sIGludCBmbGFncykKPiAgIH0KPiAgIAo+ICAgCj4gLWludCB2ZnNfZmlsZTo6d3Jp
dGUoc3RydWN0IHVpbyAqdWlvLCBpbnQgZmxhZ3MpCj4gK2ludCB2ZnNfd3JpdGUoc3RydWN0IHZm
c2NvcmVfZmlsZSAqZnAsIHN0cnVjdCB1aW8gKnVpbywgaW50IGZsYWdzKQo+ICAgewo+IC0JYXV0
byBmcCA9IHRoaXM7Cj4gICAJc3RydWN0IHZub2RlICp2cCA9IGZwLT5mX2RlbnRyeS0+ZF92bm9k
ZTsKPiAgIAlpbnQgaW9mbGFncyA9IDA7Cj4gICAJaW50IGVycm9yOwo+IEBAIC0xMjIsOSArMTE2
LDggQEAgaW50IHZmc19maWxlOjp3cml0ZShzdHJ1Y3QgdWlvICp1aW8sIGludCBmbGFncykKPiAg
IAlyZXR1cm4gZXJyb3I7Cj4gICB9Cj4gICAKPiAtaW50IHZmc19maWxlOjppb2N0bCh1X2xvbmcg
Y29tLCB2b2lkICpkYXRhKQo+ICtpbnQgdmZzX2lvY3RsKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZw
LCB1X2xvbmcgY29tLCB2b2lkICpkYXRhKQo+ICAgewo+IC0JYXV0byBmcCA9IHRoaXM7Cj4gICAJ
c3RydWN0IHZub2RlICp2cCA9IGZwLT5mX2RlbnRyeS0+ZF92bm9kZTsKPiAgIAlpbnQgZXJyb3I7
Cj4gICAKPiBAQCAtMTM1LDkgKzEyOCw4IEBAIGludCB2ZnNfZmlsZTo6aW9jdGwodV9sb25nIGNv
bSwgdm9pZCAqZGF0YSkKPiAgIAlyZXR1cm4gZXJyb3I7Cj4gICB9Cj4gICAKPiAtaW50IHZmc19m
aWxlOjpzdGF0KHN0cnVjdCBzdGF0ICpzdCkKPiAraW50IHZmc19zdGF0KHN0cnVjdCB2ZnNjb3Jl
X2ZpbGUgKmZwLCBzdHJ1Y3Qgc3RhdCAqc3QpCj4gICB7Cj4gLQlhdXRvIGZwID0gdGhpczsKPiAg
IAlzdHJ1Y3Qgdm5vZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOwo+ICAgCWludCBlcnJv
cjsKPiAgIAo+IEBAIC0xNDcsNzAgKzEzOSwzIEBAIGludCB2ZnNfZmlsZTo6c3RhdChzdHJ1Y3Qg
c3RhdCAqc3QpCj4gICAKPiAgIAlyZXR1cm4gZXJyb3I7Cj4gICB9Cj4gLQo+IC1pbnQgdmZzX2Zp
bGU6OnBvbGwoaW50IGV2ZW50cykKPiAtewo+IC0JcmV0dXJuIHBvbGxfbm9fcG9sbChldmVudHMp
Owo+IC19Cj4gLQo+IC1pbnQgdmZzX2ZpbGU6OnRydW5jYXRlKG9mZl90IGxlbikKPiAtewo+IC0J
Ly8gc29tZWhvdyB0aGlzIGlzIGhhbmRsZWQgb3V0c2lkZSBmaWxlIG9wcwo+IC0JYWJvcnQoKTsK
PiAtfQo+IC0KPiAtaW50IHZmc19maWxlOjpjaG1vZChtb2RlX3QgbW9kZSkKPiAtewo+IC0JLy8g
c29tZWhvdyB0aGlzIGlzIGhhbmRsZWQgb3V0c2lkZSBmaWxlIG9wcwo+IC0JYWJvcnQoKTsKPiAt
fQo+IC0KPiAtYm9vbCB2ZnNfZmlsZTo6bWFwX3BhZ2UodWludHB0cl90IG9mZiwgbW11Ojpod19w
dGVwPDA+IHB0ZXAsIG1tdTo6cHRfZWxlbWVudDwwPiBwdGUsIGJvb2wgd3JpdGUsIGJvb2wgc2hh
cmVkKQo+IC17Cj4gLQlyZXR1cm4gcGFnZWNhY2hlOjpnZXQodGhpcywgb2ZmLCBwdGVwLCBwdGUs
IHdyaXRlLCBzaGFyZWQpOwo+IC19Cj4gLQo+IC1ib29sIHZmc19maWxlOjpwdXRfcGFnZSh2b2lk
ICphZGRyLCB1aW50cHRyX3Qgb2ZmLCBtbXU6Omh3X3B0ZXA8MD4gcHRlcCkKPiAtewo+IC0JcmV0
dXJuIHBhZ2VjYWNoZTo6cmVsZWFzZSh0aGlzLCBhZGRyLCBvZmYsIHB0ZXApOwo+IC19Cj4gLQo+
IC12b2lkIHZmc19maWxlOjpzeW5jKG9mZl90IHN0YXJ0LCBvZmZfdCBlbmQpCj4gLXsKPiAtCXBh
Z2VjYWNoZTo6c3luYyh0aGlzLCBzdGFydCwgZW5kKTsKPiAtfQo+IC0KPiAtLy8gTG9ja2luZzog
Vk9QX0NBQ0hFIHdpbGwgY2FsbCBpbnRvIHRoZSBmaWxlc3lzdGVtLCBhbmQgdGhhdCBjYW4gdHJp
Z2dlciBhbgo+IC0vLyBldmljdGlvbiB0aGF0IHdpbGwgaG9sZCB0aGUgbW11LXNpZGUgbG9jayB0
aGF0IHByb3RlY3RzIHRoZSBtYXBwaW5ncwo+IC0vLyBBbHdheXMgZm9sbG93IHRoYXQgb3JkZXIu
IFdlIGhvd2V2ZXIgY2FuJ3QganVzdCBnZXQgcmlkIG9mIHRoZSBtbXUtc2lkZSBsb2NrLAo+IC0v
LyBiZWNhdXNlIG5vdCBhbGwgaW52YWxpZGF0aW9ucyB3aWxsIGJlIHN5bmNocm9ub3VzLgo+IC1p
bnQgdmZzX2ZpbGU6OmdldF9hcmNidWYodm9pZCoga2V5LCBvZmZfdCBvZmZzZXQpCj4gLXsKPiAt
CXN0cnVjdCB2bm9kZSAqdnAgPSBmX2RlbnRyeS0+ZF92bm9kZTsKPiAtCj4gLQlpb3ZlYyBpb1sx
XTsKPiAtCj4gLQlpb1swXS5pb3ZfYmFzZSA9IGtleTsKPiAtCXVpbyBkYXRhOwo+IC0JZGF0YS51
aW9faW92ID0gaW87Cj4gLQlkYXRhLnVpb19pb3ZjbnQgPSAxOwo+IC0JZGF0YS51aW9fb2Zmc2V0
ID0gb2Zmc2V0Owo+IC0JZGF0YS51aW9fcmVzaWQgPSBtbXU6OnBhZ2Vfc2l6ZTsKPiAtCWRhdGEu
dWlvX3J3ID0gVUlPX1JFQUQ7Cj4gLQo+IC0Jdm5fbG9jayh2cCk7Cj4gLQlhc3NlcnQoVk9QX0NB
Q0hFKHZwLCB0aGlzLCAmZGF0YSkgPT0gMCk7Cj4gLQl2bl91bmxvY2sodnApOwo+IC0KPiAtCXJl
dHVybiAoZGF0YS51aW9fcmVzaWQgIT0gMCkgPyAtMSA6IDA7Cj4gLX0KPiAtCj4gLXN0ZDo6dW5p
cXVlX3B0cjxtbXU6OmZpbGVfdm1hPiB2ZnNfZmlsZTo6bW1hcChhZGRyX3JhbmdlIHJhbmdlLCB1
bnNpZ25lZCBmbGFncywgdW5zaWduZWQgcGVybSwgb2ZmX3Qgb2Zmc2V0KQo+IC17Cj4gLQlhdXRv
IGZwID0gdGhpczsKPiAtCXN0cnVjdCB2bm9kZSAqdnAgPSBmcC0+Zl9kZW50cnktPmRfdm5vZGU7
Cj4gLQlpZiAoIXZwLT52X29wLT52b3BfY2FjaGUgfHwgKHZwLT52X3NpemUgPCAob2ZmX3QpbW11
OjpwYWdlX3NpemUpKSB7Cj4gLQkJcmV0dXJuIG1tdTo6ZGVmYXVsdF9maWxlX21tYXAodGhpcywg
cmFuZ2UsIGZsYWdzLCBwZXJtLCBvZmZzZXQpOwo+IC0JfQo+IC0JcmV0dXJuIG1tdTo6bWFwX2Zp
bGVfbW1hcCh0aGlzLCByYW5nZSwgZmxhZ3MsIHBlcm0sIG9mZnNldCk7Cj4gLX0KPiBkaWZmIC0t
Z2l0IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2RlbnRyeS5oIGIvbGliL3Zmc2NvcmUv
aW5jbHVkZS92ZnNjb3JlL2RlbnRyeS5oCj4gaW5kZXggMmQyZWFhMWIuLjljZmU4ZGFjIDEwMDY0
NAo+IC0tLSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9kZW50cnkuaAo+ICsrKyBiL2xp
Yi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9kZW50cnkuaAo+IEBAIC01NCwyMCArNTQsNCBAQCBz
dHJ1Y3QgZGVudHJ5IHsKT24gdGhlIGxpbmUgYWJvdmUgd2UgaGF2ZSB0aGUgZm9sbG93aW5nIGRl
ZmluaXRpb24KTElTVF9IRUFEKCwgZGVudHJ5KSBkX2NoaWxkcmVuCgo+ICAgCUxJU1RfRU5UUlko
ZGVudHJ5KSBkX2NoaWxkcmVuX2xpbms7Cj4gICB9Owo+ICAgCj4gLSNpZmRlZiBfX2NwbHVzcGx1
cwo+IC0KPiAtI2luY2x1ZGUgPGJvb3N0L2ludHJ1c2l2ZV9wdHIuaHBwPgo+IC0KPiAtdXNpbmcg
ZGVudHJ5X3JlZiA9IGJvb3N0OjppbnRydXNpdmVfcHRyPGRlbnRyeT47Cj4gLQo+IC1leHRlcm4g
IkMiIHsKPiAtCXZvaWQgZHJlZihzdHJ1Y3QgZGVudHJ5KiBkcCk7Cj4gLQl2b2lkIGRyZWxlKHN0
cnVjdCBkZW50cnkqIGRwKTsKPiAtfTsKPiAtCj4gLWlubGluZSB2b2lkIGludHJ1c2l2ZV9wdHJf
YWRkX3JlZihkZW50cnkqIGRwKSB7IGRyZWYoZHApOyB9Cj4gLWlubGluZSB2b2lkIGludHJ1c2l2
ZV9wdHJfcmVsZWFzZShkZW50cnkqIGRwKSB7IGRyZWxlKGRwKTsgfQo+IC0KPiAtI2VuZGlmCj4g
LQo+ICAgI2VuZGlmIC8qIF9PU1ZfREVOVFJZX0ggKi8KPiBkaWZmIC0tZ2l0IGEvbGliL3Zmc2Nv
cmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmggYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUv
bW91bnQuaAo+IGluZGV4IDBlNzg5MjlmLi5iNjhkM2M5OCAxMDA2NDQKPiAtLS0gYS9saWIvdmZz
Y29yZS9pbmNsdWRlL3Zmc2NvcmUvbW91bnQuaAo+ICsrKyBiL2xpYi92ZnNjb3JlL2luY2x1ZGUv
dmZzY29yZS9tb3VudC5oCj4gQEAgLTM3LDggKzM3LDYgQEAKPiAgICNpbmNsdWRlIDxvc3Yvdm5v
ZGUuaD4KPiAgICNpbmNsdWRlIDxic2Qvc3lzL3N5cy9xdWV1ZS5oPgo+ICAgCj4gLV9fQkVHSU5f
REVDTFMKPiAtCj4gICAjaWZkZWYgX0tFUk5FTAo+ICAgCj4gICAvKgo+IEBAIC0xNDQsMjggKzE0
Miw0IEBAIHZvaWQJIHZmc191bmJ1c3koc3RydWN0IG1vdW50ICptcCk7Cj4gICAKPiAgIHZvaWQJ
IHJlbGVhc2VfbXBfZGVudHJpZXMoc3RydWN0IG1vdW50ICptcCk7Cj4gICAKPiAtI2VuZGlmCj4g
LQo+IC1fX0VORF9ERUNMUwo+IC0KPiAtI2lmZGVmIF9fY3BsdXNwbHVzCj4gLQo+IC0jaW5jbHVk
ZSA8dmVjdG9yPgo+IC0jaW5jbHVkZSA8c3RyaW5nPgo+IC0KPiAtbmFtZXNwYWNlIG9zdiB7Cj4g
LQo+IC1zdHJ1Y3QgbW91bnRfZGVzYyB7Cj4gLQlzdGQ6OnN0cmluZyBzcGVjaWFsOwo+IC0Jc3Rk
OjpzdHJpbmcgcGF0aDsKPiAtCXN0ZDo6c3RyaW5nIHR5cGU7Cj4gLQlzdGQ6OnN0cmluZyBvcHRp
b25zOwo+IC19Owo+IC0KPiAtc3RkOjp2ZWN0b3I8bW91bnRfZGVzYz4gY3VycmVudF9tb3VudHMo
KTsKPiAtCj4gLX0KPiAtCj4gLSNlbmRpZgo+IC0KPiAgICNlbmRpZgkvKiAhX1NZU19NT1VOVF9I
XyAqLwo+IGRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvcHJleC5oIGIv
bGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3ByZXguaAo+IGluZGV4IDdiMDUzMzE5Li42Y2Jl
MzEzMCAxMDA2NDQKPiAtLS0gYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvcHJleC5oCj4g
KysrIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3ByZXguaAo+IEBAIC00MCwxMCArNDAs
NiBAQAo+ICAgI2luY2x1ZGUgPHVuaXN0ZC5oPgo+ICAgI2luY2x1ZGUgPG9zdi9mY250bC5oPgo+
ICAgCj4gLV9fQkVHSU5fREVDTFMKPiAtCj4gLSNkZWZpbmUgX19wYWNrZWQgICAgICAgIF9fYXR0
cmlidXRlX18oKF9fcGFja2VkX18pKQo+IC0KPiAgICNkZWZpbmUJQlNJWkUJNTEyCQkvKiBzaXpl
IG9mIHNlY29uZGFyeSBibG9jayAoYnl0ZXMpICovCj4gICAKPiAgICNkZWZpbmUgRE9fUkRXUgkJ
MHgyCj4gQEAgLTU3LDYgKzUzLDQgQEAgc2l6ZV90IHN0cmxjcHkoY2hhciAqZHN0LCBjb25zdCBj
aGFyICpzcmMsIHNpemVfdCBzaXopOwo+ICAgCj4gICB2b2lkIHN5c19wYW5pYyhjb25zdCBjaGFy
ICopOwo+ICAgCj4gLV9fRU5EX0RFQ0xTCj4gLQo+ICAgI2VuZGlmIC8qIF9PU1ZfUFJFWF9IICov
Cj4gZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS91aW8uaCBiL2xpYi92
ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS91aW8uaAo+IGluZGV4IDY5NmIwMWNmLi5kN2Y3ZmNlOSAx
MDA2NDQKPiAtLS0gYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdWlvLmgKPiArKysgYi9s
aWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdWlvLmgKPiBAQCAtMzgsOCArMzgsNiBAQAo+ICAg
I2luY2x1ZGUgPHN5cy91aW8uaD4KPiAgICNpbmNsdWRlIDxsaW1pdHMuaD4KPiAgIAo+IC1fX0JF
R0lOX0RFQ0xTCj4gLQo+ICAgZW51bQl1aW9fcncgeyBVSU9fUkVBRCwgVUlPX1dSSVRFIH07Cj4g
ICAKPiAgIC8qCj4gQEAgLTYyLDI4ICs2MCw0IEBAIHN0cnVjdCB1aW8gewo+ICAgCj4gICBpbnQJ
dWlvbW92ZSh2b2lkICpjcCwgaW50IG4sIHN0cnVjdCB1aW8gKnVpbyk7Cj4gICAKPiAtX19FTkRf
REVDTFMKPiAtCj4gLSNpZmRlZiBfX2NwbHVzcGx1cwo+IC0KPiAtdGVtcGxhdGUgPHR5cGVuYW1l
IEY+Cj4gLXN0YXRpYyBpbmxpbmUgdm9pZCBsaW5lYXJpemVfdWlvX3dyaXRlKHN0cnVjdCB1aW8g
KnVpbywgaW50IGlvZmxhZywgRiBmKQo+IC17Cj4gLSAgICB3aGlsZSAodWlvLT51aW9fcmVzaWQg
PiAwKSB7Cj4gLSAgICAgICAgc3RydWN0IGlvdmVjICppb3YgPSB1aW8tPnVpb19pb3Y7Cj4gLQo+
IC0gICAgICAgIGlmIChpb3YtPmlvdl9sZW4pIHsKPiAtICAgICAgICAgICAgZihyZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIgKj4oaW92LT5pb3ZfYmFzZSksCj4gLSAgICAgICAgICAgICAgICBp
b3YtPmlvdl9sZW4pOwo+IC0gICAgICAgIH0KPiAtCj4gLSAgICAgICAgdWlvLT51aW9faW92Kys7
Cj4gLSAgICAgICAgdWlvLT51aW9faW92Y250LS07Cj4gLSAgICAgICAgdWlvLT51aW9fcmVzaWQg
LT0gaW92LT5pb3ZfbGVuOwo+IC0gICAgICAgIHVpby0+dWlvX29mZnNldCArPSBpb3YtPmlvdl9s
ZW47Cj4gLSAgICB9Cj4gLX0KPiAtCj4gLSNlbmRpZgo+IC0KPiAgICNlbmRpZiAvKiAhX1VJT19I
XyAqLwo+IGRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUuaCBi
L2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5oCj4gaW5kZXggNDg3NGYxYjkuLmQz
MGE5NDExIDEwMDY0NAo+IC0tLSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5o
Cj4gKysrIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Zub2RlLmgKPiBAQCAtNDMsOCAr
NDMsNiBAQAo+ICAgI2luY2x1ZGUgImZpbGUuaCIKPiAgICNpbmNsdWRlICJkaXJlbnQuaCIKPiAg
IAo+IC1fX0JFR0lOX0RFQ0xTCj4gLQo+ICAgc3RydWN0IHZmc29wczsKPiAgIHN0cnVjdCB2bm9w
czsKPiAgIHN0cnVjdCB2bm9kZTsKPiBAQCAtMjQyLDggKzI0MCw2IEBAIHN0YXRpYyBpbmxpbmUg
dm9pZCB2bm9kZV9wYWdlcl9zZXRzaXplKHN0cnVjdCB2bm9kZSAqdnAsIG9mZl90IHNpemUpCj4g
ICAJdnAtPnZfc2l6ZSA9IHNpemU7Cj4gICB9Cj4gICAKPiAtX19FTkRfREVDTFMKPiAtCj4gICAj
ZW5kaWYKPiAgIAo+ICAgI2VuZGlmIC8qICFfU1lTX1ZOT0RFX0hfICovCj4gZGlmZiAtLWdpdCBh
L2xpYi92ZnNjb3JlL2xvb2t1cC5jIGIvbGliL3Zmc2NvcmUvbG9va3VwLmMKPiBpbmRleCAwYWE1
Y2EzYi4uZjdhMzhjNGYgMTAwNjQ0Cj4gLS0tIGEvbGliL3Zmc2NvcmUvbG9va3VwLmMKPiArKysg
Yi9saWIvdmZzY29yZS9sb29rdXAuYwo+IEBAIC02MywzMyArNjMsMzEgQEAgcmVhZF9saW5rKHN0
cnVjdCB2bm9kZSAqdnAsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6LCBzc2l6ZV90ICpzeikKPiAg
IGludAo+ICAgbmFtZWlfZm9sbG93X2xpbmsoc3RydWN0IGRlbnRyeSAqZHAsIGNoYXIgKm5vZGUs
IGNoYXIgKm5hbWUsIGNoYXIgKmZwLCBzaXplX3QgbW91bnRwb2ludF9sZW4pCj4gICB7Cj4gLQlz
dGQ6OnVuaXF1ZV9wdHI8Y2hhciBbXT4gbGluayAobmV3IGNoYXJbUEFUSF9NQVhdKTsKPiAtCXN0
ZDo6dW5pcXVlX3B0cjxjaGFyIFtdPiB0IChuZXcgY2hhcltQQVRIX01BWF0pOwo+IC0JY2hhciAg
ICAqbHA7Cj4gKwljaGFyIGxpbmtbUEFUSF9NQVhdOwo+ICsJY2hhciB0W1BBVEhfTUFYXTsKPiAg
IAlpbnQgICAgIGVycm9yOwo+ICAgCXNzaXplX3Qgc3o7Cj4gICAJY2hhciAgICAqcDsKPiAgIAlp
bnQgICAgIGM7Cj4gICAKPiAtCWxwICAgID0gbGluay5nZXQoKTsKPiAtCWVycm9yID0gcmVhZF9s
aW5rKGRwLT5kX3Zub2RlLCBscCwgUEFUSF9NQVgsICZzeik7Cj4gKwllcnJvciA9IHJlYWRfbGlu
ayhkcC0+ZF92bm9kZSwgbGluaywgUEFUSF9NQVgsICZzeik7Cj4gICAJaWYgKGVycm9yICE9IDAp
IHsKPiAgIAkJcmV0dXJuIChlcnJvcik7Cj4gICAJfQo+IC0JbHBbc3pdID0gMDsKPiArCWxpbmtb
c3pdID0gMDsKPiAgIAo+ICAgCXAgPSBmcCArIG1vdW50cG9pbnRfbGVuICsgc3RybGVuKG5vZGUp
Owo+ICAgCWMgPSBzdHJsZW4obm9kZSkgLSBzdHJsZW4obmFtZSkgLSAxOwo+ICAgCW5vZGVbY10g
PSAwOwo+ICAgCj4gLQlpZiAobHBbMF0gPT0gJy8nKSB7Cj4gLQkJc3RybGNhdChscCwgcCwgUEFU
SF9NQVgpOwo+IC0JCXN0cmxjcHkoZnAsIGxwLCBQQVRIX01BWCk7Cj4gKwlpZiAobGlua1swXSA9
PSAnLycpIHsKPiArCQlzdHJsY2F0KGxpbmssIHAsIFBBVEhfTUFYKTsKPiArCQlzdHJsY3B5KGZw
LCBsaW5rLCBQQVRIX01BWCk7Cj4gICAJfSBlbHNlIHsKPiAtCQlzdHJsY3B5KHQuZ2V0KCksIHAs
IFBBVEhfTUFYKTsKPiArCQlzdHJsY3B5KHQsIHAsIFBBVEhfTUFYKTsKPiAgIAkJc3RybGNweShu
b2RlLCBmcCwgbW91bnRwb2ludF9sZW4gKyBjICsgMSk7Cj4gLQkJcGF0aF9jb252KG5vZGUsIGxw
LCBmcCk7Cj4gLQkJc3RybGNhdChmcCwgdC5nZXQoKSwgUEFUSF9NQVgpOwo+ICsJCXBhdGhfY29u
dihub2RlLCBsaW5rLCBmcCk7Cj4gKwkJc3RybGNhdChmcCwgdCwgUEFUSF9NQVgpOwo+ICAgCX0K
PiAgIAlub2RlWzBdID0gMDsKPiAgIAluYW1lWzBdID0gMDsKPiBAQCAtMTA3LDggKzEwNSw3IEBA
IG5hbWVpKGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBkZW50cnkgKipkcHApCj4gICAJY2hhciAq
cDsKPiAgIAljaGFyIG5vZGVbUEFUSF9NQVhdOwo+ICAgCWNoYXIgbmFtZVtQQVRIX01BWF07Cj4g
LQlzdGQ6OnVuaXF1ZV9wdHI8Y2hhciBbXT4gZnAgKG5ldyBjaGFyIFtQQVRIX01BWF0pOwo+IC0J
c3RkOjp1bmlxdWVfcHRyPGNoYXIgW10+IHQgKG5ldyBjaGFyIFtQQVRIX01BWF0pOwo+ICsJY2hh
ciBmcFtQQVRIX01BWF07Cj4gICAJc3RydWN0IG1vdW50ICptcDsKPiAgIAlzdHJ1Y3QgZGVudHJ5
ICpkcCwgKmRkcDsKPiAgIAlzdHJ1Y3Qgdm5vZGUgKmR2cCwgKnZwOwo+IEBAIC0xMTksNyArMTE2
LDcgQEAgbmFtZWkoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IGRlbnRyeSAqKmRwcCkKPiAgIAlE
UFJJTlRGKFZGU0RCX1ZOT0RFLCAoIm5hbWVpOiBwYXRoPSVzXG4iLCBwYXRoKSk7Cj4gICAKPiAg
IAlsaW5rc19mb2xsb3dlZCA9IDA7Cj4gLQlzdHJsY3B5KGZwLmdldCgpLCBwYXRoLCBQQVRIX01B
WCk7Cj4gKwlzdHJsY3B5KGZwLCBwYXRoLCBQQVRIX01BWCk7Cj4gICAKPiAgIAlkbyB7Cj4gICAJ
CW5lZWRfY29udGludWUgPSBmYWxzZTsKPiBAQCAtMTI3LDEwICsxMjQsMTAgQEAgbmFtZWkoY29u
c3QgY2hhciAqcGF0aCwgc3RydWN0IGRlbnRyeSAqKmRwcCkKPiAgIAkJICogQ29udmVydCBhIGZ1
bGwgcGF0aCBuYW1lIHRvIGl0cyBtb3VudCBwb2ludCBhbmQKPiAgIAkJICogdGhlIGxvY2FsIG5v
ZGUgaW4gdGhlIGZpbGUgc3lzdGVtLgo+ICAgCQkgKi8KPiAtCQlpZiAodmZzX2ZpbmRyb290KGZw
LmdldCgpLCAmbXAsICZwKSkgewo+ICsJCWlmICh2ZnNfZmluZHJvb3QoZnAsICZtcCwgJnApKSB7
Cj4gICAJCQlyZXR1cm4gRU5PVERJUjsKPiAgIAkJfQo+IC0JCWludCBtb3VudHBvaW50X2xlbiA9
IHAgLSBmcC5nZXQoKSAtIDE7Cj4gKwkJaW50IG1vdW50cG9pbnRfbGVuID0gcCAtIGZwIC0gMTsK
PiAgIAkJc3RybGNweShub2RlLCAiLyIsIHNpemVvZihub2RlKSk7Cj4gICAJCXN0cmxjYXQobm9k
ZSwgcCwgc2l6ZW9mKG5vZGUpKTsKPiAgIAkJZHAgPSBkZW50cnlfbG9va3VwKG1wLCBub2RlKTsK
PiBAQCAtMjAzLDcgKzIwMCw3IEBAIG5hbWVpKGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBkZW50
cnkgKipkcHApCj4gICAJCQlkZHAgPSBkcDsKPiAgIAo+ICAgCQkJaWYgKGRwLT5kX3Zub2RlLT52
X3R5cGUgPT0gVkxOSykgewo+IC0JCQkJZXJyb3IgPSBuYW1laV9mb2xsb3dfbGluayhkcCwgbm9k
ZSwgbmFtZSwgZnAuZ2V0KCksIG1vdW50cG9pbnRfbGVuKTsKPiArCQkJCWVycm9yID0gbmFtZWlf
Zm9sbG93X2xpbmsoZHAsIG5vZGUsIG5hbWUsIGZwLCBtb3VudHBvaW50X2xlbik7Cj4gICAJCQkJ
aWYgKGVycm9yKSB7Cj4gICAJCQkJCWRyZWxlKGRwKTsKPiAgIAkJCQkJcmV0dXJuIChlcnJvcik7
Cj4gQEAgLTIxMSw3ICsyMDgsNyBAQCBuYW1laShjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3QgZGVu
dHJ5ICoqZHBwKQo+ICAgCj4gICAJCQkJZHJlbGUoZHApOwo+ICAgCj4gLQkJCQlwICAgICAgID0g
ZnAuZ2V0KCk7Cj4gKwkJCQlwICAgICAgID0gZnA7Cj4gICAJCQkJZHAgICAgICA9IG51bGxwdHI7
Cj4gICAJCQkJZGRwICAgICA9IG51bGxwdHI7Cj4gICAJCQkJdnAgICAgICA9IG51bGxwdHI7Cj4g
QEAgLTI1NCw3ICsyNTEsNyBAQCBuYW1laV9sYXN0X25vZm9sbG93KGNoYXIgKnBhdGgsIHN0cnVj
dCBkZW50cnkgKmRkcCwgc3RydWN0IGRlbnRyeSAqKmRwcCkKPiAgIAlzdHJ1Y3QgZGVudHJ5ICpk
cDsKPiAgIAlzdHJ1Y3Qgdm5vZGUgICpkdnA7Cj4gICAJc3RydWN0IHZub2RlICAqdnA7Cj4gLQlz
dGQ6OnVuaXF1ZV9wdHI8Y2hhciBbXT4gbm9kZSAobmV3IGNoYXJbUEFUSF9NQVhdKTsKPiArCWNo
YXIgbm9kZVtQQVRIX01BWF07Cj4gICAKPiAgIAlkdnAgID0gbnVsbHB0cjsKPiAgIAo+IEBAIC0y
NzMsMjYgKzI3MCwyNiBAQCBuYW1laV9sYXN0X25vZm9sbG93KGNoYXIgKnBhdGgsIHN0cnVjdCBk
ZW50cnkgKmRkcCwgc3RydWN0IGRlbnRyeSAqKmRwcCkKPiAgIAkJcmV0dXJuIChFTk9URElSKTsK
PiAgIAl9Cj4gICAKPiAtCXN0cmxjcHkobm9kZS5nZXQoKSwgIi8iLCBQQVRIX01BWCk7Cj4gLQlz
dHJsY2F0KG5vZGUuZ2V0KCksIHAsIFBBVEhfTUFYKTsKPiArCXN0cmxjcHkobm9kZSwgIi8iLCBQ
QVRIX01BWCk7Cj4gKwlzdHJsY2F0KG5vZGUsIHAsIFBBVEhfTUFYKTsKPiAgIAo+ICAgCS8vIFdl
IHdhbnQgdG8gdHJlYXQgdGhpbmdzIGxpa2UgL3RtcC8gdGhlIHNhbWUgYXMgL3RtcC4gQmVzdCB3
YXkgdG8gZG8gdGhhdAo+ICAgCS8vIGlzIHRvIGlnbm9yZSB0aGUgbGFzdCBjaGFyYWN0ZXIsIGV4
Y2VwdCB3aGVuIHdlJ3JlIHN0YXRpbmcgdGhlIHJvb3QuCj4gLQlhdXRvIGwgPSBzdHJsZW4obm9k
ZS5nZXQoKSkgLSAxOwo+IC0JaWYgKGwgJiYgbm9kZS5nZXQoKVtsXSA9PSAnLycpIHsKPiAtCQlu
b2RlLmdldCgpW2xdID0gJ1wwJzsKPiArCWludCBsID0gc3RybGVuKG5vZGUpIC0gMTsKPiArCWlm
IChsICYmIG5vZGVbbF0gPT0gJy8nKSB7Cj4gKwkJbm9kZVtsXSA9ICdcMCc7Cj4gICAJfQo+ICAg
Cj4gICAJZHZwID0gZGRwLT5kX3Zub2RlOwo+ICAgCXZuX2xvY2soZHZwKTsKPiAtCWRwID0gZGVu
dHJ5X2xvb2t1cChtcCwgbm9kZS5nZXQoKSk7Cj4gKwlkcCA9IGRlbnRyeV9sb29rdXAobXAsIG5v
ZGUpOwo+ICAgCWlmIChkcCA9PSBudWxscHRyKSB7Cj4gICAJCWVycm9yID0gVk9QX0xPT0tVUChk
dnAsIG5hbWUsICZ2cCk7Cj4gICAJCWlmIChlcnJvciAhPSAwKSB7Cj4gICAJCQlnb3RvIG91dDsK
PiAgIAkJfQo+ICAgCj4gLQkJZHAgPSBkZW50cnlfYWxsb2MoZGRwLCB2cCwgbm9kZS5nZXQoKSk7
Cj4gKwkJZHAgPSBkZW50cnlfYWxsb2MoZGRwLCB2cCwgbm9kZSk7Cj4gICAJCXZwdXQodnApOwo+
ICAgCj4gICAJCWlmIChkcCA9PSBudWxscHRyKSB7Cj4gZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3Jl
L21haW4uYyBiL2xpYi92ZnNjb3JlL21haW4uYwo+IGluZGV4IGUzMDA0NTk3Li43NDg3NmRjMSAx
MDA2NDQKPiAtLS0gYS9saWIvdmZzY29yZS9tYWluLmMKPiArKysgYi9saWIvdmZzY29yZS9tYWlu
LmMKVGhlcmUgYXJlIHNvbWUgQysrIGhlYWRlciBmaWxlcz8KCj4gQEAgLTc3LDE4ICs3NywxNiBA
QAo+ICAgI2luY2x1ZGUgPGFwaS91dGltZS5oPgo+ICAgI2luY2x1ZGUgPGNocm9ubz4KPiAgIAo+
IC11c2luZyBuYW1lc3BhY2Ugc3RkOwo+IC0KPiAgIAo+ICAgI2lmZGVmIERFQlVHX1ZGUwo+ICAg
aW50CXZmc19kZWJ1ZyA9IFZGU0RCX0ZMQUdTOwo+ICAgI2VuZGlmCj4gICAKPiAtc3RkOjphdG9t
aWM8bW9kZV90PiBnbG9iYWxfdW1hc2t7U19JV0dSUCB8IFNfSVdPVEh9Owo+ICtzdGF0aWMgbW9k
ZV90IGdsb2JhbF91bWFzayA9IFNfSVdHUlAgfCBTX0lXT1RIOwo+ICAgCj4gICBzdGF0aWMgaW5s
aW5lIG1vZGVfdCBhcHBseV91bWFzayhtb2RlX3QgbW9kZSkKPiAgIHsKPiAtCXJldHVybiBtb2Rl
ICYgfmdsb2JhbF91bWFzay5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOwo+ICsJcmV0
dXJuIG1vZGUgJiB+dWthcmNoX2xvYWRfbigmZ2xvYmFsX3VtYXNrKTsKPiAgIH0KPiAgIAo+ICAg
VFJBQ0VQT0lOVCh0cmFjZV92ZnNfb3BlbiwgIlwiJXNcIiAweCV4IDAlMG8iLCBjb25zdCBjaGFy
KiwgaW50LCBtb2RlX3QpOwo+IEBAIC05Nyw3ICs5NSw2IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZz
X29wZW5fZXJyLCAiJWQiLCBpbnQpOwo+ICAgCj4gICBzdHJ1Y3QgdGFzayAqbWFpbl90YXNrOwkv
KiB3ZSBvbmx5IGhhdmUgYSBzaW5nbGUgcHJvY2VzcyAqLwo+ICAgCj4gLWV4dGVybiAiQyIKPiAg
IGludCBvcGVuKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBpbnQgZmxhZ3MsIC4uLikKPiAgIHsKPiAg
IAltb2RlX3QgbW9kZSA9IDA7Cj4gQEAgLTE3OCw4ICsxNzUsNyBAQCBpbnQgb3BlbmF0KGludCBk
aXJmZCwgY29uc3QgY2hhciAqcGF0aG5hbWUsIGludCBmbGFncywgLi4uKQo+ICAgCXN0cnVjdCB2
bm9kZSAqdnAgPSBmcC0+Zl9kZW50cnktPmRfdm5vZGU7Cj4gICAJdm5fbG9jayh2cCk7Cj4gICAK
PiAtCXN0ZDo6dW5pcXVlX3B0cjxjaGFyIFtdPiB1cCAobmV3IGNoYXJbUEFUSF9NQVhdKTsKPiAt
CWNoYXIgKnAgPSB1cC5nZXQoKTsKPiArCWNoYXIgcFtQQVRIX01BWF07Cj4gICAKPiAgIAkvKiBi
dWlsZCBhYnNvbHV0ZSBwYXRoICovCj4gICAJc3RybGNweShwLCBmcC0+Zl9kZW50cnktPmRfbW91
bnQtPm1fcGF0aCwgUEFUSF9NQVgpOwo+IEBAIC0xOTYsMjYgKzE5Miw2IEBAIGludCBvcGVuYXQo
aW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwgaW50IGZsYWdzLCAuLi4pCj4gICB9Cj4g
ICBMRlM2NChvcGVuYXQpOwo+ICAgCj4gLS8vIG9wZW4oKSBoYXMgYW4gb3B0aW9uYWwgdGhpcmQg
YXJndW1lbnQsICJtb2RlIiwgd2hpY2ggaXMgb25seSBuZWVkZWQgaW4KPiAtLy8gc29tZSBjYXNl
cyAod2hlbiB0aGUgT19DUkVBVCBtb2RlIGlzIHVzZWQpLiBBcyBhIHNhZmV0eSBmZWF0dXJlLCBy
ZWNlbnQKPiAtLy8gdmVyc2lvbnMgb2YgR2xpYmMgYWRkIGEgZmVhdHVyZSB3aGVyZSBvcGVuKCkg
d2l0aCB0d28gYXJndW1lbnRzIGlzIHJlcGxhY2VkCj4gLS8vIGJ5IGEgY2FsbCB0byBfX29wZW5f
MigpLCB3aGljaCB2ZXJpZmllcyBpdCBpc24ndCBjYWxsZWQgd2l0aCBPX0NSRUFURS4KPiAtZXh0
ZXJuICJDIiBpbnQgX19vcGVuXzIoY29uc3QgY2hhciAqcGF0aG5hbWUsIGludCBmbGFncykKPiAt
ewo+IC0JYXNzZXJ0KCEoZmxhZ3MgJiBPX0NSRUFUKSk7Cj4gLQlyZXR1cm4gb3BlbihwYXRobmFt
ZSwgZmxhZ3MsIDApOwo+IC19Cj4gLQo+IC1leHRlcm4gIkMiIGludCBfX29wZW42NF8yKGNvbnN0
IGNoYXIgKmZpbGUsIGludCBmbGFncykKPiAtewo+IC0JaWYgKGZsYWdzICYgT19DUkVBVCkgewo+
IC0JCWVycm5vID0gRUlOVkFMOwo+IC0JCXJldHVybiAtMTsKPiAtCX0KPiAtCj4gLQlyZXR1cm4g
b3BlbjY0KGZpbGUsIGZsYWdzKTsKPiAtfQo+IC0KPiAgIGludCBjcmVhdChjb25zdCBjaGFyICpw
YXRobmFtZSwgbW9kZV90IG1vZGUpCj4gICB7Cj4gICAJcmV0dXJuIG9wZW4ocGF0aG5hbWUsIE9f
Q1JFQVR8T19XUk9OTFl8T19UUlVOQywgbW9kZSk7Cj4gQEAgLTI0OSw3ICsyMjUsNiBAQCBUUkFD
RVBPSU5UKHRyYWNlX3Zmc19ta25vZF9yZXQsICIiKTsKPiAgIFRSQUNFUE9JTlQodHJhY2VfdmZz
X21rbm9kX2VyciwgIiVkIiwgaW50KTsKPiAgIAo+ICAgCj4gLWV4dGVybiAiQyIKPiAgIGludCBf
X3hta25vZChpbnQgdmVyLCBjb25zdCBjaGFyICpwYXRobmFtZSwgbW9kZV90IG1vZGUsIGRldl90
ICpkZXYpCj4gICB7Cj4gICAJYXNzZXJ0KHZlciA9PSAwKTsgLy8gT24geDg2LTY0IExpbnV4LCBf
TUtOT0RfVkVSX0xJTlVYIGlzIDAuCj4gQEAgLTU0Myw3ICs1MTgsNiBAQCBUUkFDRVBPSU5UKHRy
YWNlX3Zmc19mc3RhdCwgIiVkICVwIiwgaW50LCBzdHJ1Y3Qgc3RhdCopOwo+ICAgVFJBQ0VQT0lO
VCh0cmFjZV92ZnNfZnN0YXRfcmV0LCAiIik7Cj4gICBUUkFDRVBPSU5UKHRyYWNlX3Zmc19mc3Rh
dF9lcnIsICIlZCIsIGludCk7Cj4gICAKPiAtZXh0ZXJuICJDIgo+ICAgaW50IF9fZnhzdGF0KGlu
dCB2ZXIsIGludCBmZCwgc3RydWN0IHN0YXQgKnN0KQo+ICAgewo+ICAgCXN0cnVjdCBmaWxlICpm
cDsKPiBAQCAtNTcxLDcgKzU0NSw2IEBAIGludCBfX2Z4c3RhdChpbnQgdmVyLCBpbnQgZmQsIHN0
cnVjdCBzdGF0ICpzdCkKPiAgIAo+ICAgTEZTNjQoX19meHN0YXQpOwo+ICAgCj4gLWV4dGVybiAi
QyIKPiAgIGludCBmc3RhdChpbnQgZmQsIHN0cnVjdCBzdGF0ICpzdCkKPiAgIHsKPiAgIAlyZXR1
cm4gX19meHN0YXQoMSwgZmQsIHN0KTsKPiBAQCAtNTc5LDcgKzU1Miw2IEBAIGludCBmc3RhdChp
bnQgZmQsIHN0cnVjdCBzdGF0ICpzdCkKPiAgIAo+ICAgTEZTNjQoZnN0YXQpOwo+ICAgCj4gLWV4
dGVybiAiQyIKPiAgIGludCBfX2Z4c3RhdGF0KGludCB2ZXIsIGludCBkaXJmZCwgY29uc3QgY2hh
ciAqcGF0aG5hbWUsIHN0cnVjdCBzdGF0ICpzdCwKPiAgIAkJaW50IGZsYWdzKQo+ICAgewo+IEBA
IC02MDYsOCArNTc4LDcgQEAgaW50IF9fZnhzdGF0YXQoaW50IHZlciwgaW50IGRpcmZkLCBjb25z
dCBjaGFyICpwYXRobmFtZSwgc3RydWN0IHN0YXQgKnN0LAo+ICAgCXN0cnVjdCB2bm9kZSAqdnAg
PSBmcC0+Zl9kZW50cnktPmRfdm5vZGU7Cj4gICAJdm5fbG9jayh2cCk7Cj4gICAKPiAtCXN0ZDo6
dW5pcXVlX3B0cjxjaGFyIFtdPiB1cCAobmV3IGNoYXJbUEFUSF9NQVhdKTsKPiAtCWNoYXIgKnAg
PSB1cC5nZXQoKTsKPiArCWNoYXIgcFtQQVRIX01BWF07Cj4gICAJLyogYnVpbGQgYWJzb2x1dGUg
cGF0aCAqLwo+ICAgCXN0cmxjcHkocCwgZnAtPmZfZGVudHJ5LT5kX21vdW50LT5tX3BhdGgsIFBB
VEhfTUFYKTsKPiAgIAlzdHJsY2F0KHAsIGZwLT5mX2RlbnRyeS0+ZF9wYXRoLCBQQVRIX01BWCk7
Cj4gQEAgLTYyNCw3ICs1OTUsNiBAQCBpbnQgX19meHN0YXRhdChpbnQgdmVyLCBpbnQgZGlyZmQs
IGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBzdHJ1Y3Qgc3RhdCAqc3QsCj4gICAKPiAgIExGUzY0KF9f
ZnhzdGF0YXQpOwo+ICAgCj4gLWV4dGVybiAiQyIKPiAgIGludCBmc3RhdGF0KGludCBkaXJmZCwg
Y29uc3QgY2hhciAqcGF0aCwgc3RydWN0IHN0YXQgKnN0LCBpbnQgZmxhZ3MpCj4gICB7Cj4gICAJ
cmV0dXJuIF9fZnhzdGF0YXQoMSwgZGlyZmQsIHBhdGgsIHN0LCBmbGFncyk7Cj4gQEAgLTYzMiw3
ICs2MDIsNyBAQCBpbnQgZnN0YXRhdChpbnQgZGlyZmQsIGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVj
dCBzdGF0ICpzdCwgaW50IGZsYWdzKQo+ICAgCj4gICBMRlM2NChmc3RhdGF0KTsKPiAgIAo+IC1l
eHRlcm4gIkMiIGludCBmbG9jayhpbnQgZmQsIGludCBvcGVyYXRpb24pCj4gK2ludCBmbG9jayhp
bnQgZmQsIGludCBvcGVyYXRpb24pCj4gICB7Cj4gICAJaWYgKCFmaWxlcmVmX2Zyb21fZmQoZmQp
KSB7Cj4gICAJCXJldHVybiBsaWJjX2Vycm9yKEVCQURGKTsKPiBAQCAtNjYzLDE0ICs2MzMsMTQg
QEAgc3RydWN0IF9fZGlyc3RyZWFtCj4gICAKPiAgIERJUiAqb3BlbmRpcihjb25zdCBjaGFyICpw
YXRoKQo+ICAgewo+IC0JRElSICpkaXIgPSBuZXcgRElSOwo+ICsJRElSICpkaXIgPSBtYWxsb2Mo
c2l6ZW9mKCpkaXIpKTsKPiAgIAo+ICAgCWlmICghZGlyKQo+IC0JCXJldHVybiBsaWJjX2Vycm9y
X3B0cjxESVI+KEVOT01FTSk7Cj4gKwkJcmV0dXJuIEVSUjJQVFIoLUVOT01FTSk7Cj4gICAKPiAg
IAlkaXItPmZkID0gb3BlbihwYXRoLCBPX1JET05MWSk7Cj4gICAJaWYgKGRpci0+ZmQgPCAwKSB7
Cj4gLQkJZGVsZXRlIGRpcjsKPiArCQlmcmVlKGRpcik7Cj4gICAJCXJldHVybiBudWxscHRyOwo+
ICAgCX0KPiAgIAlyZXR1cm4gZGlyOwo+IEBAIC02ODcsNyArNjU3LDExIEBAIERJUiAqZmRvcGVu
ZGlyKGludCBmZCkKPiAgIAkJZXJybm8gPSBFTk9URElSOwo+ICAgCQlyZXR1cm4gbnVsbHB0cjsK
PiAgIAl9Cj4gLQlkaXIgPSBuZXcgRElSOwo+ICsJZGlyID0gbWFsbG9jKHNpemVvZigqZGlyKSk7
Cj4gKwlpZiAoIWRpcikgewo+ICsJCWVycm5vID0gRU5PTUVNOwo+ICsJCXJldHVybiBOVUxMOwo+
ICsJfQo+ICAgCWRpci0+ZmQgPSBmZDsKPiAgIAlyZXR1cm4gZGlyOwo+ICAgCj4gQEAgLTcwNSw3
ICs2NzksNyBAQCBpbnQgZGlyZmQoRElSICpkaXJwKQo+ICAgaW50IGNsb3NlZGlyKERJUiAqZGly
KQo+ICAgewo+ICAgCWNsb3NlKGRpci0+ZmQpOwo+IC0JZGVsZXRlIGRpcjsKPiArCWZyZWUoZGly
KTsKPiAgIAlyZXR1cm4gMDsKPiAgIH0KPiAgIAo+IEBAIC03MTYsNyArNjkwLDcgQEAgc3RydWN0
IGRpcmVudCAqcmVhZGRpcihESVIgKmRpcikKPiAgIAo+ICAgCXJldCA9IHJlYWRkaXJfcihkaXIs
ICZlbnRyeSwgJnJlc3VsdCk7Cj4gICAJaWYgKHJldCkKPiAtCQlyZXR1cm4gbGliY19lcnJvcl9w
dHI8c3RydWN0IGRpcmVudD4ocmV0KTsKPiArCQlyZXR1cm4gRVJSMlBUUigtcmV0KTsKPiAgIAo+
ICAgCWVycm5vID0gMDsKPiAgIAlyZXR1cm4gcmVzdWx0Owo+IEBAIC03NTMsMTggKzcyNywxOCBA
QCBpbnQgcmVhZGRpcl9yKERJUiAqZGlyLCBzdHJ1Y3QgZGlyZW50ICplbnRyeSwgc3RydWN0IGRp
cmVudCAqKnJlc3VsdCkKPiAgIAo+ICAgLy8gRklYTUU6IGluIDY0Yml0IGRpcmVudDY0IGFuZCBk
aXJlbnQgYXJlIGlkZW50aWNhbCwgc28gaXQncyBzYWZlIHRvIGFsaWFzCj4gICAjdW5kZWYgcmVh
ZGRpcjY0X3IKPiAtZXh0ZXJuICJDIiBpbnQgcmVhZGRpcjY0X3IoRElSICpkaXIsIHN0cnVjdCBk
aXJlbnQ2NCAqZW50cnksCj4gK2ludCByZWFkZGlyNjRfcihESVIgKmRpciwgc3RydWN0IGRpcmVu
dDY0ICplbnRyeSwKPiAgIAkJc3RydWN0IGRpcmVudDY0ICoqcmVzdWx0KQo+ICAgCQlfX2F0dHJp
YnV0ZV9fKChhbGlhcygicmVhZGRpcl9yIikpKTsKPiAgIAo+ICAgI3VuZGVmIHJlYWRkaXI2NAo+
IC1leHRlcm4gIkMiIHN0cnVjdCBkaXJlbnQgKnJlYWRkaXI2NChESVIgKmRpcikgX19hdHRyaWJ1
dGVfXygoYWxpYXMoInJlYWRkaXIiKSkpOwo+ICtzdHJ1Y3QgZGlyZW50ICpyZWFkZGlyNjQoRElS
ICpkaXIpIF9fYXR0cmlidXRlX18oKGFsaWFzKCJyZWFkZGlyIikpKTsKPiAgIAo+ICAgdm9pZCBy
ZXdpbmRkaXIoRElSICpkaXJwKQo+ICAgewo+ICAgCXN0cnVjdCBmaWxlICpmcDsKPiAgIAo+IC0J
YXV0byBlcnJvciA9IGZnZXQoZGlycC0+ZmQsICZmcCk7Cj4gKwlpbnQgZXJyb3IgPSBmZ2V0KGRp
cnAtPmZkLCAmZnApOwo+ICAgCWlmIChlcnJvcikgewo+ICAgCQkvLyBQT1NJWCBzcGVjaWZpZXMg
dGhhdCB3aGF0IHJld2luZGRpcigpIGRvZXMgaW4gdGhlIGNhc2Ugb2YgZXJyb3IKPiAgIAkJLy8g
aXMgdW5kZWZpbmVkLi4uCj4gQEAgLTkzNiwyMyArOTEwLDIxIEBAIFRSQUNFUE9JTlQodHJhY2Vf
dmZzX2NoZGlyLCAiXCIlc1wiIiwgY29uc3QgY2hhciopOwo+ICAgVFJBQ0VQT0lOVCh0cmFjZV92
ZnNfY2hkaXJfcmV0LCAiIik7Cj4gICBUUkFDRVBPSU5UKHRyYWNlX3Zmc19jaGRpcl9lcnIsICIl
ZCIsIGludCk7Cj4gICAKPiAtc3RhdGljIGludCByZXBsYWNlX2N3ZChzdHJ1Y3QgdGFzayAqdCwg
c3RydWN0IGZpbGUgKm5ld19jd2RmcCwKPiAtCQkJCQkgICBzdGQ6OmZ1bmN0aW9uPGludCAodm9p
ZCk+IGNoZGlyX2Z1bmMpCj4gK3N0YXRpYyBpbnQKPiArX19kb19mY2hkaXIoc3RydWN0IHZmc2Nv
cmVfZmlsZSAqZnAsIHN0cnVjdCB0YXNrICp0KQo+ICAgewo+ICAgCXN0cnVjdCBmaWxlICpvbGQg
PSBudWxscHRyOwo+ICAgCj4gLQlpZiAoIXQpIHsKPiAtCQlyZXR1cm4gMDsKPiAtCX0KPiArCVVL
X0FTU0VSVCh0KTsKPiAgIAo+ICAgCWlmICh0LT50X2N3ZGZwKSB7Cj4gICAJCW9sZCA9IHQtPnRf
Y3dkZnA7Cj4gICAJfQo+ICAgCj4gICAJLyogRG8gdGhlIGFjdHVhbCBjaGRpciBvcGVyYXRpb24g
aGVyZSAqLwo+IC0JaW50IGVycm9yID0gY2hkaXJfZnVuYygpOwo+ICsJaW50IGVycm9yID0gc3lz
X2ZjaGRpcihmcCwgdC0+dF9jd2QpOwo+ICAgCj4gLQl0LT50X2N3ZGZwID0gbmV3X2N3ZGZwOwo+
ICsJdC0+dF9jd2RmcCA9IGZwOwo+ICAgCWlmIChvbGQpIHsKPiAgIAkJZmRyb3Aob2xkKTsKPiAg
IAl9Cj4gQEAgLTk4MSw3ICs5NTMsMTEgQEAgaW50IGNoZGlyKGNvbnN0IGNoYXIgKnBhdGhuYW1l
KQo+ICAgCQlnb3RvIG91dF9lcnJubzsKPiAgIAl9Cj4gICAKPiAtCXJlcGxhY2VfY3dkKHQsIGZw
LCBbJl0oKSB7IHN0cmxjcHkodC0+dF9jd2QsIHBhdGgsIHNpemVvZih0LT50X2N3ZCkpOyByZXR1
cm4gMDsgfSk7Cj4gKwllcnJvciA9IF9fZG9fZmNoZGlyKGZwLCB0KTsKPiArCWlmIChlcnJvcikg
ewo+ICsJCWZkcm9wKGZwKTsKPiArCQlnb3RvIG91dF9lcnJubzsKPiArCX0KPiAgIAo+ICAgCXRy
YWNlX3Zmc19jaGRpcl9yZXQoKTsKPiAgIAlyZXR1cm4gMDsKPiBAQCAtMTAwNiw3ICs5ODIsNyBA
QCBpbnQgZmNoZGlyKGludCBmZCkKPiAgIAlpZiAoZXJyb3IpCj4gICAJCWdvdG8gb3V0X2Vycm5v
Owo+ICAgCj4gLQllcnJvciA9IHJlcGxhY2VfY3dkKHQsIGZwLCBbJl0oKSB7IHJldHVybiBzeXNf
ZmNoZGlyKGZwLCB0LT50X2N3ZCk7IH0pOwo+ICsJZXJyb3IgPSBfX2RvX2ZjaGRpcihmcCwgdCk7
Cj4gICAJaWYgKGVycm9yKSB7Cj4gICAJCWZkcm9wKGZwKTsKPiAgIAkJZ290byBvdXRfZXJybm87
Cj4gQEAgLTExMTQsNyArMTA5MCw2IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX3N0YXQsICJcIiVz
XCIgJXAiLCBjb25zdCBjaGFyKiwgc3RydWN0IHN0YXQqKTsKPiAgIFRSQUNFUE9JTlQodHJhY2Vf
dmZzX3N0YXRfcmV0LCAiIik7Cj4gICBUUkFDRVBPSU5UKHRyYWNlX3Zmc19zdGF0X2VyciwgIiVk
IiwgaW50KTsKPiAgIAo+IC1leHRlcm4gIkMiCj4gICBpbnQgX194c3RhdChpbnQgdmVyLCBjb25z
dCBjaGFyICpwYXRobmFtZSwgc3RydWN0IHN0YXQgKnN0KQo+ICAgewo+ICAgCXN0cnVjdCB0YXNr
ICp0ID0gbWFpbl90YXNrOwo+IEBAIC0xMTUxLDcgKzExMjYsNiBAQCBMRlM2NChzdGF0KTsKPiAg
IFRSQUNFUE9JTlQodHJhY2VfdmZzX2xzdGF0LCAicGF0aG5hbWU9JXMsIHN0YXQ9JXAiLCBjb25z
dCBjaGFyKiwgc3RydWN0IHN0YXQqKTsKPiAgIFRSQUNFUE9JTlQodHJhY2VfdmZzX2xzdGF0X3Jl
dCwgIiIpOwo+ICAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbHN0YXRfZXJyLCAiZXJybm89JWQiLCBp
bnQpOwo+IC1leHRlcm4gIkMiCj4gICBpbnQgX19seHN0YXQoaW50IHZlciwgY29uc3QgY2hhciAq
cGF0aG5hbWUsIHN0cnVjdCBzdGF0ICpzdCkKPiAgIHsKPiAgIAlzdHJ1Y3QgdGFzayAqdCA9IG1h
aW5fdGFzazsKPiBAQCAtMTE5MSw3ICsxMTY1LDYgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfc3Rh
dGZzLCAiXCIlc1wiICVwIiwgY29uc3QgY2hhciosIHN0cnVjdCBzdGF0ZnMqKTsKPiAgIFRSQUNF
UE9JTlQodHJhY2VfdmZzX3N0YXRmc19yZXQsICIiKTsKPiAgIFRSQUNFUE9JTlQodHJhY2VfdmZz
X3N0YXRmc19lcnIsICIlZCIsIGludCk7Cj4gICAKPiAtZXh0ZXJuICJDIgo+ICAgaW50IF9fc3Rh
dGZzKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBzdHJ1Y3Qgc3RhdGZzICpidWYpCj4gICB7Cj4gICAJ
dHJhY2VfdmZzX3N0YXRmcyhwYXRobmFtZSwgYnVmKTsKPiBAQCAtMTIyMSw3ICsxMTk0LDYgQEAg
VFJBQ0VQT0lOVCh0cmFjZV92ZnNfZnN0YXRmcywgIlwiJXNcIiAlcCIsIGludCwgc3RydWN0IHN0
YXRmcyopOwo+ICAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZnN0YXRmc19yZXQsICIiKTsKPiAgIFRS
QUNFUE9JTlQodHJhY2VfdmZzX2ZzdGF0ZnNfZXJyLCAiJWQiLCBpbnQpOwo+ICAgCj4gLWV4dGVy
biAiQyIKPiAgIGludCBfX2ZzdGF0ZnMoaW50IGZkLCBzdHJ1Y3Qgc3RhdGZzICpidWYpCj4gICB7
Cj4gICAJc3RydWN0IGZpbGUgKmZwOwo+IEBAIC0xNDI0LDExICsxMzk2LDExIEBAIGludCBkdXAy
KGludCBvbGRmZCwgaW50IG5ld2ZkKQo+ICAgICovCj4gICAjZGVmaW5lIFNFVEZMIChPX0FQUEVO
RCB8IE9fQVNZTkMgfCBPX0RJUkVDVCB8IE9fTk9BVElNRSB8IE9fTk9OQkxPQ0spCj4gICAKPiAr
I2lmIDAKPiAgIFRSQUNFUE9JTlQodHJhY2VfdmZzX2ZjbnRsLCAiJWQgJWQgMHgleCIsIGludCwg
aW50LCBpbnQpOwo+ICAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZmNudGxfcmV0LCAiXCIlc1wiIiwg
aW50KTsKPiAgIFRSQUNFUE9JTlQodHJhY2VfdmZzX2ZjbnRsX2VyciwgIiVkIiwgaW50KTsKPiAg
IAo+IC1leHRlcm4gIkMiCj4gICBpbnQgZmNudGwoaW50IGZkLCBpbnQgY21kLCBpbnQgYXJnKQo+
ICAgewo+ICAgCXN0cnVjdCBmaWxlICpmcDsKPiBAQCAtMTUwOSw2ICsxNDgxLDcgQEAgaW50IGZj
bnRsKGludCBmZCwgaW50IGNtZCwgaW50IGFyZykKPiAgIAllcnJubyA9IGVycm9yOwo+ICAgCXJl
dHVybiAtMTsKPiAgIH0KPiArI2VuZGlmCj4gICAKPiAgIFRSQUNFUE9JTlQodHJhY2VfdmZzX2Fj
Y2VzcywgIlwiJXNcIiAwJTBvIiwgY29uc3QgY2hhciosIGludCk7Cj4gICBUUkFDRVBPSU5UKHRy
YWNlX3Zmc19hY2Nlc3NfcmV0LCAiIik7Cj4gQEAgLTE1NjQsOCArMTUzNyw3IEBAIGludCBmYWNj
ZXNzYXQoaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwgaW50IG1vZGUsIGludCBmbGFn
cykKPiAgIAlzdHJ1Y3Qgdm5vZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOwo+ICAgCXZu
X2xvY2sodnApOwo+ICAgCj4gLQlzdGQ6OnVuaXF1ZV9wdHI8Y2hhciBbXT4gdXAgKG5ldyBjaGFy
W1BBVEhfTUFYXSk7Cj4gLQljaGFyICpwID0gdXAuZ2V0KCk7Cj4gKwljaGFyIHBbUEFUSF9NQVhd
Owo+ICAgCj4gICAJLyogYnVpbGQgYWJzb2x1dGUgcGF0aCAqLwo+ICAgCXN0cmxjcHkocCwgZnAt
PmZfZGVudHJ5LT5kX21vdW50LT5tX3BhdGgsIFBBVEhfTUFYKTsKPiBAQCAtMTU4MSw3ICsxNTUz
LDYgQEAgaW50IGZhY2Nlc3NhdChpbnQgZGlyZmQsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBpbnQg
bW9kZSwgaW50IGZsYWdzKQo+ICAgCXJldHVybiBlcnJvcjsKPiAgIH0KPiAgIAo+IC1leHRlcm4g
IkMiCj4gICBpbnQgZXVpZGFjY2Vzcyhjb25zdCBjaGFyICpwYXRobmFtZSwgaW50IG1vZGUpCj4g
ICB7Cj4gICAJcmV0dXJuIGFjY2VzcyhwYXRobmFtZSwgbW9kZSk7Cj4gQEAgLTE1OTAsNTQgKzE1
NjEsNiBAQCBpbnQgZXVpZGFjY2Vzcyhjb25zdCBjaGFyICpwYXRobmFtZSwgaW50IG1vZGUpCj4g
ICB3ZWFrX2FsaWFzKGV1aWRhY2Nlc3MsZWFjY2Vzcyk7Cj4gICAKPiAgICNpZiAwCj4gLXN0YXRp
YyBpbnQKPiAtZnNfcGlwZShzdHJ1Y3QgdGFzayAqdCwgc3RydWN0IG1zZyAqbXNnKQo+IC17Cj4g
LSNpZmRlZiBDT05GSUdfRklGT0ZTCj4gLQljaGFyIHBhdGhbUEFUSF9NQVhdOwo+IC0JZmlsZV90
IHJmcCwgd2ZwOwo+IC0JaW50IGVycm9yLCByZmQsIHdmZDsKPiAtCj4gLQlEUFJJTlRGKFZGU0RC
X0NPUkUsICgiZnNfcGlwZVxuIikpOwo+IC0KPiAtCWlmICgocmZkID0gdGFza19uZXdmZCh0KSkg
PT0gLTEpCj4gLQkJcmV0dXJuIEVNRklMRTsKPiAtCXQtPnRfb2ZpbGVbcmZkXSA9IChmaWxlX3Qp
MTsgLyogdGVtcCAqLwo+IC0KPiAtCWlmICgod2ZkID0gdGFza19uZXdmZCh0KSkgPT0gLTEpIHsK
PiAtCQl0LT50X29maWxlW3JmZF0gPSBudWxscHRyOwo+IC0JCXJldHVybiBFTUZJTEU7Cj4gLQl9
Cj4gLQlzcHJpbnRmKHBhdGgsICIvbW50L2ZpZm8vcGlwZS0leC0lZCIsICh1X2ludCl0LT50X3Rh
c2tpZCwgcmZkKTsKPiAtCj4gLQlpZiAoKGVycm9yID0gc3lzX21rbm9kKHBhdGgsIFNfSUZJRk8p
KSAhPSAwKQo+IC0JCWdvdG8gb3V0Owo+IC0JaWYgKChlcnJvciA9IHN5c19vcGVuKHBhdGgsIE9f
UkRPTkxZIHwgT19OT05CTE9DSywgMCwgJnJmcCkpICE9IDApIHsKPiAtCQlnb3RvIG91dDsKPiAt
CX0KPiAtCWlmICgoZXJyb3IgPSBzeXNfb3BlbihwYXRoLCBPX1dST05MWSB8IE9fTk9OQkxPQ0ss
IDAsICZ3ZnApKSAhPSAwKSB7Cj4gLQkJZ290byBvdXQ7Cj4gLQl9Cj4gLQl0LT50X29maWxlW3Jm
ZF0gPSByZnA7Cj4gLQl0LT50X29maWxlW3dmZF0gPSB3ZnA7Cj4gLQl0LT50X25vcGVucyArPSAy
Owo+IC0JbXNnLT5kYXRhWzBdID0gcmZkOwo+IC0JbXNnLT5kYXRhWzFdID0gd2ZkOwo+IC0JcmV0
dXJuIDA7Cj4gLQlvdXQ6Cj4gLQl0LT50X29maWxlW3JmZF0gPSBudWxscHRyOwo+IC0JdC0+dF9v
ZmlsZVt3ZmRdID0gbnVsbHB0cjsKPiAtCXJldHVybiBlcnJvcjsKPiAtI2Vsc2UKPiAtCXJldHVy
biBFTk9TWVM7Cj4gLSNlbmRpZgo+IC19Cj4gLSNlbmRpZgo+IC0KPiAtVFJBQ0VQT0lOVCh0cmFj
ZV92ZnNfaXNhdHR5LCAiJWQiLCBpbnQpOwo+IC1UUkFDRVBPSU5UKHRyYWNlX3Zmc19pc2F0dHlf
cmV0LCAiJWQiLCBpbnQpOwo+IC1UUkFDRVBPSU5UKHRyYWNlX3Zmc19pc2F0dHlfZXJyLCAiJWQi
LCBpbnQpOwo+IC0KPiAgIC8qCj4gICAgKiBSZXR1cm4gaWYgc3BlY2lmaWVkIGZpbGUgaXMgYSB0
dHkKPiAgICAqLwo+IEBAIC0xNjYzLDYgKzE1ODYsNyBAQCBpbnQgaXNhdHR5KGludCBmZCkKPiAg
IAl0cmFjZV92ZnNfaXNhdHR5X3JldChpc3R0eSk7Cj4gICAJcmV0dXJuIGlzdHR5Owo+ICAgfQo+
ICsjZW5kaWYKPiAgIAo+ICAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfdHJ1bmNhdGUsICJcIiVzXCIg
MHgleCIsIGNvbnN0IGNoYXIqLCBvZmZfdCk7Cj4gICBUUkFDRVBPSU5UKHRyYWNlX3Zmc190cnVu
Y2F0ZV9yZXQsICIiKTsKPiBAQCAtMTc4NCwxNSArMTcwOCw3IEBAIGludCBmYWxsb2NhdGUoaW50
IGZkLCBpbnQgbW9kZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbikKPiAgIAo+ICAgTEZTNjQo
ZmFsbG9jYXRlKTsKPiAgIAo+IC1UUkFDRVBPSU5UKHRyYWNlX3Zmc191dGltZXMsICJcIiVzXCIi
LCBjb25zdCBjaGFyKik7Cj4gLVRSQUNFUE9JTlQodHJhY2VfdmZzX3V0aW1lc19yZXQsICIiKTsK
PiAtVFJBQ0VQT0lOVCh0cmFjZV92ZnNfdXRpbWVzX2VyciwgIiVkIiwgaW50KTsKPiAtCj4gLWlu
dCBmdXRpbWVzKGludCBmZCwgY29uc3Qgc3RydWN0IHRpbWV2YWwgdGltZXNbMl0pCj4gLXsKPiAt
CXJldHVybiBmdXRpbWVzYXQoZmQsIG51bGxwdHIsIHRpbWVzKTsKPiAtfQo+IC0KPiArI2lmIDAK
PiAgIGludCBmdXRpbWVzYXQoaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwgY29uc3Qg
c3RydWN0IHRpbWV2YWwgdGltZXNbMl0pCj4gICB7Cj4gICAJc3RydWN0IHN0YXQgc3Q7Cj4gQEAg
LTE4NTAsMTIgKzE3NjYsMTIgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfdXRpbWVuc2F0LCAiXCIl
c1wiIiwgY29uc3QgY2hhciopOwo+ICAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfdXRpbWVuc2F0X3Jl
dCwgIiIpOwo+ICAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfdXRpbWVuc2F0X2VyciwgIiVkIiwgaW50
KTsKPiAgIAo+IC1leHRlcm4gIkMiCj4gICBpbnQgdXRpbWVuc2F0KGludCBkaXJmZCwgY29uc3Qg
Y2hhciAqcGF0aG5hbWUsIGNvbnN0IHN0cnVjdCB0aW1lc3BlYyB0aW1lc1syXSwgaW50IGZsYWdz
KQo+ICAgewo+ICAgCXRyYWNlX3Zmc191dGltZW5zYXQocGF0aG5hbWUpOwo+ICAgCj4gICAJYXV0
byBlcnJvciA9IHN5c191dGltZW5zYXQoZGlyZmQsIHBhdGhuYW1lLCB0aW1lcywgZmxhZ3MpOwo+
ICsKPiAgIAlpZiAoZXJyb3IpIHsKPiAgIAkJdHJhY2VfdmZzX3V0aW1lbnNhdF9lcnIoZXJyb3Ip
Owo+ICAgCQllcnJubyA9IGVycm9yOwo+IEBAIC0xODcwLDEyICsxNzg2LDExIEBAIFRSQUNFUE9J
TlQodHJhY2VfdmZzX2Z1dGltZW5zLCAiJWQiLCBpbnQpOwo+ICAgVFJBQ0VQT0lOVCh0cmFjZV92
ZnNfZnV0aW1lbnNfcmV0LCAiIik7Cj4gICBUUkFDRVBPSU5UKHRyYWNlX3Zmc19mdXRpbWVuc19l
cnIsICIlZCIsIGludCk7Cj4gICAKPiAtZXh0ZXJuICJDIgo+ICAgaW50IGZ1dGltZW5zKGludCBm
ZCwgY29uc3Qgc3RydWN0IHRpbWVzcGVjIHRpbWVzWzJdKQo+ICAgewo+ICAgCXRyYWNlX3Zmc19m
dXRpbWVucyhmZCk7Cj4gICAKPiAtCWF1dG8gZXJyb3IgPSBzeXNfZnV0aW1lbnMoZmQsIHRpbWVz
KTsKPiArCWludCBlcnJvciA9IHN5c19mdXRpbWVucyhmZCwgdGltZXMpOwo+ICAgCWlmIChlcnJv
cikgewo+ICAgCQl0cmFjZV92ZnNfZnV0aW1lbnNfZXJyKGVycm9yKTsKPiAgIAkJZXJybm8gPSBl
cnJvcjsKPiBAQCAtMTkxMCwxOSArMTgyNSwxNiBAQCBzdGF0aWMgaW50IGRvX3V0aW1lcyhjb25z
dCBjaGFyICpwYXRobmFtZSwgY29uc3Qgc3RydWN0IHRpbWV2YWwgdGltZXNbMl0sIGludCBmbAo+
ICAgCXJldHVybiAwOwo+ICAgfQo+ICAgCj4gLWV4dGVybiAiQyIKPiAgIGludCB1dGltZXMoY29u
c3QgY2hhciAqcGF0aG5hbWUsIGNvbnN0IHN0cnVjdCB0aW1ldmFsIHRpbWVzWzJdKQo+ICAgewo+
ICAgCXJldHVybiBkb191dGltZXMocGF0aG5hbWUsIHRpbWVzLCAwKTsKPiAgIH0KPiAgIAo+IC1l
eHRlcm4gIkMiCj4gICBpbnQgbHV0aW1lcyhjb25zdCBjaGFyICpwYXRobmFtZSwgY29uc3Qgc3Ry
dWN0IHRpbWV2YWwgdGltZXNbMl0pCj4gICB7Cj4gICAJcmV0dXJuIGRvX3V0aW1lcyhwYXRobmFt
ZSwgdGltZXMsIEFUX1NZTUxJTktfTk9GT0xMT1cpOwo+ICAgfQo+ICAgCj4gLWV4dGVybiAiQyIK
PiAgIGludCB1dGltZShjb25zdCBjaGFyICpwYXRobmFtZSwgY29uc3Qgc3RydWN0IHV0aW1idWYg
KnQpCj4gICB7Cj4gICAJdXNpbmcgbmFtZXNwYWNlIHN0ZDo6Y2hyb25vOwo+IEBAIC0xOTQxLDYg
KzE4NTMsNyBAQCBpbnQgdXRpbWUoY29uc3QgY2hhciAqcGF0aG5hbWUsIGNvbnN0IHN0cnVjdCB1
dGltYnVmICp0KQo+ICAgCj4gICAJcmV0dXJuIHV0aW1lcyhwYXRobmFtZSwgdGltZXMpOwo+ICAg
fQo+ICsjZW5kaWYKPiAgIAo+ICAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfY2htb2QsICJcIiVzXCIg
MCUwbyIsIGNvbnN0IGNoYXIqLCBtb2RlX3QpOwo+ICAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfY2ht
b2RfcmV0LCAiIik7Cj4gQEAgLTE5NzMsNyArMTg4Niw3IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZz
X2ZjaG1vZF9yZXQsICIiKTsKPiAgIGludCBmY2htb2QoaW50IGZkLCBtb2RlX3QgbW9kZSkKPiAg
IHsKPiAgIAl0cmFjZV92ZnNfZmNobW9kKGZkLCBtb2RlKTsKPiAtCWF1dG8gZXJyb3IgPSBzeXNf
ZmNobW9kKGZkLCBtb2RlICYgQUxMUEVSTVMpOwo+ICsJaW50IGVycm9yID0gc3lzX2ZjaG1vZChm
ZCwgbW9kZSAmIEFMTFBFUk1TKTsKPiAgIAl0cmFjZV92ZnNfZmNobW9kX3JldCgpOwo+ICAgCWlm
IChlcnJvcikgewo+ICAgCQllcnJubyA9IGVycm9yOwo+IEBAIC0yMDA3LDYgKzE5MjAsNyBAQCBp
bnQgbGNob3duKGNvbnN0IGNoYXIgKnBhdGgsIHVpZF90IG93bmVyLCBnaWRfdCBncm91cCkKPiAg
IH0KPiAgIAo+ICAgCj4gKyNpZiAwCj4gICBzc2l6ZV90IHNlbmRmaWxlKGludCBvdXRfZmQsIGlu
dCBpbl9mZCwgb2ZmX3QgKl9vZmZzZXQsIHNpemVfdCBjb3VudCkKPiAgIHsKPiAgIAlzdHJ1Y3Qg
ZmlsZSAqaW5fZnA7Cj4gQEAgLTIwNzAsNyArMTk4NCw3IEBAIHNzaXplX3Qgc2VuZGZpbGUoaW50
IG91dF9mZCwgaW50IGluX2ZkLCBvZmZfdCAqX29mZnNldCwgc2l6ZV90IGNvdW50KQo+ICAgCQly
ZXR1cm4gLTE7Cj4gICAJfQo+ICAgCj4gLQlhdXRvIHJldCA9IHdyaXRlKG91dF9mZCwgc3JjICsg
KG9mZnNldCAlIFBBR0VTSVpFKSwgY291bnQpOwo+ICsJaW50IHJldCA9IHdyaXRlKG91dF9mZCwg
c3JjICsgKG9mZnNldCAlIFBBR0VTSVpFKSwgY291bnQpOwo+ICAgCj4gICAJaWYgKHJldCA8IDAp
IHsKPiAgIAkJcmV0dXJuIGxpYmNfZXJyb3IoZXJybm8pOwo+IEBAIC0yMDg3LDEyICsyMDAxLDEz
IEBAIHNzaXplX3Qgc2VuZGZpbGUoaW50IG91dF9mZCwgaW50IGluX2ZkLCBvZmZfdCAqX29mZnNl
dCwgc2l6ZV90IGNvdW50KQo+ICAgCj4gICAjdW5kZWYgc2VuZGZpbGU2NAo+ICAgTEZTNjQoc2Vu
ZGZpbGUpOwo+ICsjZW5kaWYKPiAgIAo+ICAgTk9fU1lTKGludCBmY2htb2RhdChpbnQgZGlyZmQs
IGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBtb2RlX3QgbW9kZSwgaW50IGZsYWdzKSk7Cj4gICAKPiAg
IG1vZGVfdCB1bWFzayhtb2RlX3QgbmV3bWFzaykKPiAgIHsKPiAtCXJldHVybiBnbG9iYWxfdW1h
c2suZXhjaGFuZ2UobmV3bWFzaywgc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7Cj4gKwlyZXR1
cm4gdWthcmNoX2V4Y2hhbmdlX24oJmdsb2JhbF91bWFzaywgbmV3bWFzayk7Cj4gICB9Cj4gICAK
PiAgIGludAo+IEBAIC0yMTA3LDMwMyArMjAyMiwzIEBAIGludCBjaHJvb3QoY29uc3QgY2hhciAq
cGF0aCkKPiAgIAllcnJubyA9IEVOT1NZUzsKPiAgIAlyZXR1cm4gLTE7Cj4gICB9Cj4gLQo+IC0v
LyB1bnBhY2tfYm9vdGZzKCkgdW5wYWNrcyBhIGNvbGxlY3Rpb24gb2YgZmlsZXMgc3RvcmVkIGFz
IHBhcnQgb2YgdGhlIE9Tdgo+IC0vLyBleGVjdXRhYmxlIChpbiBtZW1vcnkgbG9jYXRpb24gImJv
b3Rmc19zdGFydCIpIGludG8gdGhlIGZpbGUgc3lzdGVtLAo+IC0vLyBub3JtYWxseSB0aGUgaW4t
bWVtb3J5IGZpbGVzeXN0ZW0gcmFtZnMuCj4gLS8vIFRoZSBmaWxlcyBhcmUgcGFja2VkIGluIHRo
ZSBleGVjdXRhYmxlIGluIGFuIGFkLWhvYyBmb3JtYXQgZGVmaW5lZCBoZXJlLgo+IC0vLyBDb2Rl
IGluIHNjcmlwdHMvbWtib290ZnMucHkgcGFja3MgZmlsZXMgaW50byB0aGlzIGZvcm1hdC4KPiAt
I2RlZmluZSBCT09URlNfUEFUSF9NQVggMTExCj4gLWVudW0gY2xhc3MgYm9vdGZzX2ZpbGVfdHlw
ZSA6IGNoYXIgeyBvdGhlciA9IDAsIHN5bWxpbmsgPSAxIH07Cj4gLXN0cnVjdCBib290ZnNfbWV0
YWRhdGEgewo+IC0JdWludDY0X3Qgc2l6ZTsKPiAtCXVpbnQ2NF90IG9mZnNldDsKPiAtCS8vIFRo
ZSBmaWxlJ3MgdHlwZS4gQ2FuIGJlICJzeW1saW5rIiBvciAib3RoZXIiLiBBIGRpcmVjdG9yeSBp
cyBhbiAib3RoZXIiCj4gLQkvLyBmaWxlIHdpdGggaXRzIG5hbWUgZW5kaW5nIHdpdGggYSAiLyIg
KGFuZCBubyBjb250ZW50KS4KPiAtCWJvb3Rmc19maWxlX3R5cGUgdHlwZTsKPiAtCS8vIG5hbWUg
bXVzdCBlbmQgd2l0aCBhIG51bGwuIEZvciBzeW1saW5rIGZpbGVzLCB0aGUgY29udGVudCBtdXN0
IGVuZAo+IC0JLy8gd2l0aCBhIG51bGwgYXMgd2VsbC4KPiAtCWNoYXIgbmFtZVtCT09URlNfUEFU
SF9NQVhdOwo+IC19Owo+IC0KPiAtZXh0ZXJuIGNoYXIgYm9vdGZzX3N0YXJ0Owo+IC0KPiAtaW50
IHJhbWZzX3NldF9maWxlX2RhdGEoc3RydWN0IHZub2RlICp2cCwgY29uc3Qgdm9pZCAqZGF0YSwg
c2l6ZV90IHNpemUpOwo+IC12b2lkIHVucGFja19ib290ZnModm9pZCkKPiAtewo+IC0Jc3RydWN0
IGJvb3Rmc19tZXRhZGF0YSAqbWQgPSAoc3RydWN0IGJvb3Rmc19tZXRhZGF0YSAqKSZib290ZnNf
c3RhcnQ7Cj4gLQlpbnQgZmQsIGk7Cj4gLQo+IC0JZm9yIChpID0gMDsgbWRbaV0ubmFtZVswXTsg
aSsrKSB7Cj4gLQkJaW50IHJldDsKPiAtCQljaGFyICpwOwo+IC0KPiAtCQkvLyBta2RpcigpIGRp
cmVjdG9yaWVzIG5lZWRlZCBmb3IgdGhpcyBwYXRoIG5hbWUsIGFzIG5lY2Vzc2FyeQo+IC0JCWNo
YXIgdG1wW0JPT1RGU19QQVRIX01BWF07Cj4gLQkJc3RybGNweSh0bXAsIG1kW2ldLm5hbWUsIEJP
T1RGU19QQVRIX01BWCk7Cj4gLQkJZm9yIChwID0gdG1wOyAqcDsgKytwKSB7Cj4gLQkJCWlmICgq
cCA9PSAnLycpIHsKPiAtCQkJCSpwID0gJ1wwJzsKPiAtCQkJCW1rZGlyKHRtcCwgMDY2Nik7ICAv
LyBzaWxlbnRseSBpZ25vcmUgZXJyb3JzIGFuZCBleGlzdGluZyBkaXJzCj4gLQkJCQkqcCA9ICcv
JzsKPiAtCQkJfQo+IC0JCX0KPiAtCj4gLQkJaWYgKG1kW2ldLnR5cGUgPT0gYm9vdGZzX2ZpbGVf
dHlwZTo6c3ltbGluaykgewo+IC0JCQkvLyBUaGlzIGlzIGEgc3ltYm9saWMgbGluayByZWNvcmQu
IFRoZSBmaWxlJ3MgY29udGVudCBpcyB0aGUKPiAtCQkJLy8gdGFyZ2V0IHBhdGgsIGFuZCB3ZSBh
c3N1bWUgZW5kcyB3aXRoIGEgbnVsbC4KPiAtCQkJaWYgKHN5bWxpbmsoJmJvb3Rmc19zdGFydCAr
IG1kW2ldLm9mZnNldCwgbWRbaV0ubmFtZSkgIT0gMCkgewo+IC0JCQkJa3ByaW50ZigiY291bGRu
J3Qgc3ltbGluayAlczogJWRcbiIsIG1kW2ldLm5hbWUsIGVycm5vKTsKPiAtCQkJCXN5c19wYW5p
YygidW5wYWNrX2Jvb3RmcyBmYWlsZWQiKTsKPiAtCQkJfQo+IC0JCQljb250aW51ZTsKPiAtCQl9
Cj4gLQkJaWYgKCoocC0xKSA9PSAnLycgJiYgbWRbaV0uc2l6ZSA9PSAwKSB7Cj4gLQkJCS8vIFRo
aXMgaXMgZGlyZWN0b3J5IHJlY29yZC4gTm90aGluZyBlbHNlIHRvIGRvCj4gLQkJCWNvbnRpbnVl
Owo+IC0JCX0KPiAtCj4gLQkJZmQgPSBjcmVhdChtZFtpXS5uYW1lLCAwNjY2KTsKPiAtCQlpZiAo
ZmQgPCAwKSB7Cj4gLQkJCWtwcmludGYoImNvdWxkbid0IGNyZWF0ZSAlczogJWRcbiIsCj4gLQkJ
CQkJbWRbaV0ubmFtZSwgZXJybm8pOwo+IC0JCQlzeXNfcGFuaWMoInVucGFja19ib290ZnMgZmFp
bGVkIik7Cj4gLQkJfQo+IC0KPiAtCQlzdHJ1Y3QgZmlsZSAqZnA7Cj4gLQkJaW50IGVycm9yID0g
ZmdldChmZCwgJmZwKTsKPiAtCQlpZiAoZXJyb3IpIHsKPiAtCQkJa3ByaW50ZigiY291bGRuJ3Qg
ZmdldCAlczogJWRcbiIsCj4gLQkJCQkJbWRbaV0ubmFtZSwgZXJyb3IpOwo+IC0JCQlzeXNfcGFu
aWMoInVucGFja19ib290ZnMgZmFpbGVkIik7Cj4gLQkJfQo+IC0KPiAtCQlzdHJ1Y3Qgdm5vZGUg
KnZwID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOwo+IC0JCXJldCA9IHJhbWZzX3NldF9maWxlX2Rh
dGEodnAsICZib290ZnNfc3RhcnQgKyBtZFtpXS5vZmZzZXQsIG1kW2ldLnNpemUpOwo+IC0JCWlm
IChyZXQpIHsKPiAtCQkJa3ByaW50ZigicmFtZnNfc2V0X2ZpbGVfZGF0YSBmYWlsZWQsIHJldCA9
ICVkXG4iLCByZXQpOwo+IC0JCQlzeXNfcGFuaWMoInVucGFja19ib290ZnMgZmFpbGVkIik7Cj4g
LQkJfQo+IC0KPiAtCQlmZHJvcChmcCk7Cj4gLQkJY2xvc2UoZmQpOwo+IC0JfQo+IC19Cj4gLQo+
IC12b2lkIG1vdW50X3Jvb3Rmcyh2b2lkKQo+IC17Cj4gLQlpbnQgcmV0Owo+IC0KPiAtCXJldCA9
IHN5c19tb3VudCgiIiwgIi8iLCAicmFtZnMiLCAwLCBudWxscHRyKTsKPiAtCWlmIChyZXQpCj4g
LQkJa3ByaW50ZigiZmFpbGVkIHRvIG1vdW50IHJvb3RmcywgZXJyb3IgPSAlc1xuIiwgc3RyZXJy
b3IocmV0KSk7Cj4gLQo+IC0JaWYgKG1rZGlyKCIvZGV2IiwgMDc1NSkgPCAwKQo+IC0JCWtwcmlu
dGYoImZhaWxlZCB0byBjcmVhdGUgL2RldiwgZXJyb3IgPSAlc1xuIiwgc3RyZXJyb3IoZXJybm8p
KTsKPiAtCj4gLQlyZXQgPSBzeXNfbW91bnQoIiIsICIvZGV2IiwgImRldmZzIiwgMCwgbnVsbHB0
cik7Cj4gLQlpZiAocmV0KQo+IC0JCWtwcmludGYoImZhaWxlZCB0byBtb3VudCBkZXZmcywgZXJy
b3IgPSAlc1xuIiwgc3RyZXJyb3IocmV0KSk7Cj4gLX0KPiAtCj4gLWV4dGVybiAiQyIKPiAtaW50
IG5tb3VudChzdHJ1Y3QgaW92ZWMgKmlvdiwgdW5zaWduZWQgbmlvdiwgaW50IGZsYWdzKQo+IC17
Cj4gLQlzdHJ1Y3QgYXJncyB7Cj4gLQkJY2hhciogZnN0eXBlID0gbnVsbHB0cjsKPiAtCQljaGFy
KiBmc3BhdGggPSBudWxscHRyOwo+IC0JCWNoYXIqIGZyb20gPSBudWxscHRyOwo+IC0JfTsKPiAt
CXN0YXRpYyB1bm9yZGVyZWRfbWFwPHN0cmluZywgY2hhciogYXJnczo6Kj4gYXJnbWFwIHsKPiAt
CQl7ICJmc3R5cGUiLCAmYXJnczo6ZnN0eXBlIH0sCj4gLQkJeyAiZnNwYXRoIiwgJmFyZ3M6OmZz
cGF0aCB9LAo+IC0JCXsgImZyb20iLCAmYXJnczo6ZnJvbSB9LAo+IC0JfTsKPiAtCWFyZ3MgYTsK
PiAtCWZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbmlvdjsgaSArPSAyKSB7Cj4gLQkJc3RkOjpzdHJp
bmcgcyhzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oaW92W2ldLmlvdl9iYXNlKSk7Cj4gLQkJaWYg
KGFyZ21hcC5jb3VudChzKSkgewo+IC0JCQlhLiooYXJnbWFwW3NdKSA9IHN0YXRpY19jYXN0PGNo
YXIqPihpb3ZbaSsxXS5pb3ZfYmFzZSk7Cj4gLQkJfQo+IC0JfQo+IC0JcmV0dXJuIHN5c19tb3Vu
dChhLmZyb20sIGEuZnNwYXRoLCBhLmZzdHlwZSwgZmxhZ3MsIG51bGxwdHIpOwo+IC19Cj4gLQo+
IC1zdGF0aWMgdm9pZCBpbXBvcnRfZXh0cmFfemZzX3Bvb2xzKHZvaWQpCj4gLXsKPiAtCXN0cnVj
dCBzdGF0IHN0Owo+IC0JaW50IHJldDsKPiAtCj4gLQkvLyBUaGUgZmlsZSAnL2V0Yy9tbnR0YWIn
IGlzIGEgTGliWkZTIHJlcXVpcmVtZW50IGFuZCB3aWxsIG5vdAo+IC0JLy8gZXhpc3QgZHVyaW5n
IGNwaW9kIHBoYXNlLiBUaGUgZnVuY3Rpb25hbGl0eSBwcm92aWRlZCBieSB0aGlzCj4gLQkvLyBm
dW5jdGlvbiBpc24ndCBuZWVkZWQgZHVyaW5nIHRoYXQgcGhhc2UsIHNvIGxldCdzIHNraXAgaXQu
Cj4gLQlpZiAoc3RhdCgiL2V0Yy9tbnR0YWIiICwgJnN0KSAhPSAwKSB7Cj4gLQkJcmV0dXJuOwo+
IC0JfQo+IC0KPiAtCS8vIEltcG9ydCBleHRyYSBwb29scyBtb3VudGluZyBkYXRhc2V0cyB0aGVy
ZSBjb250YWluZWQuCj4gLQkvLyBEYXRhc2V0cyBmcm9tIG9zdiBwb29sIHdpbGwgbm90IGJlIG1v
dW50ZWQgaGVyZS4KPiAtCWlmIChhY2Nlc3MoInpwb29sLnNvIiwgWF9PSykgIT0gMCkgewo+IC0J
CXJldHVybjsKPiAtCX0KPiAtCXZlY3RvcjxzdHJpbmc+IHpwb29sX2FyZ3MgPSB7Inpwb29sIiwg
ImltcG9ydCIsICItZiIsICItYSIgfTsKPiAtCWF1dG8gb2sgPSBvc3Y6OnJ1bigienBvb2wuc28i
LCB6cG9vbF9hcmdzLCAmcmV0KTsKPiAtCWFzc2VydChvayk7Cj4gLQo+IC0JaWYgKCFyZXQpIHsK
PiAtCQlkZWJ1ZygiemZzOiBleHRyYSBaRlMgcG9vbChzKSBmb3VuZC5cbiIpOwo+IC0JfQo+IC19
Cj4gLQo+IC12b2lkIHBpdm90X3Jvb3Rmcyhjb25zdCBjaGFyKiBwYXRoKQo+IC17Cj4gLQlpbnQg
cmV0ID0gc3lzX3Bpdm90X3Jvb3QocGF0aCwgIi8iKTsKPiAtCWlmIChyZXQpCj4gLQkJa3ByaW50
ZigiZmFpbGVkIHRvIHBpdm90IHJvb3QsIGVycm9yID0gJXNcbiIsIHN0cmVycm9yKHJldCkpOwo+
IC0KPiAtCWF1dG8gZW50ID0gc2V0bW50ZW50KCIvZXRjL2ZzdGFiIiwgInIiKTsKPiAtCWlmICgh
ZW50KSB7Cj4gLQkJcmV0dXJuOwo+IC0JfQo+IC0KPiAtCXN0cnVjdCBtbnRlbnQgKm0gPSBudWxs
cHRyOwo+IC0Jd2hpbGUgKChtID0gZ2V0bW50ZW50KGVudCkpICE9IG51bGxwdHIpIHsKPiAtCQlp
ZiAoIXN0cmNtcChtLT5tbnRfZGlyLCAiLyIpKSB7Cj4gLQkJCWNvbnRpbnVlOwo+IC0JCX0KPiAt
Cj4gLQkJaWYgKChtLT5tbnRfb3B0cyAhPSBudWxscHRyKSAmJiBzdHJjbXAobS0+bW50X29wdHMs
IE1OVE9QVF9ERUZBVUxUUykpIHsKPiAtCQkJcHJpbnRmKCJXYXJuaW5nOiBvcHRzICVzLCBpZ25v
cmVkIGZvciBmcyAlc1xuIiwgbS0+bW50X29wdHMsIG0tPm1udF90eXBlKTsKPiAtCQl9Cj4gLQo+
IC0JCS8vIEZJWE1FOiBSaWdodCBub3csIGlnbm9yaW5nIG1udG9wcy4gSW4gdGhlIGZ1dHVyZSB3
ZSBtYXkgaGF2ZSBhbiBvcHRpb24gcGFyc2VyCj4gLQkJcmV0ID0gc3lzX21vdW50KG0tPm1udF9m
c25hbWUsIG0tPm1udF9kaXIsIG0tPm1udF90eXBlLCAwLCBudWxscHRyKTsKPiAtCQlpZiAocmV0
KSB7Cj4gLQkJCXByaW50ZigiZmFpbGVkIHRvIG1vdW50ICVzLCBlcnJvciA9ICVzXG4iLCBtLT5t
bnRfdHlwZSwgc3RyZXJyb3IocmV0KSk7Cj4gLQkJfQo+IC0JfQo+IC0JZW5kbW50ZW50KGVudCk7
Cj4gLX0KPiAtCj4gLWV4dGVybiAiQyIgdm9pZCB1bm1vdW50X2RldmZzKCkKPiAtewo+IC0JaW50
IHJldCA9IHN5c191bW91bnQoIi9kZXYiKTsKPiAtCWlmIChyZXQpCj4gLQkJa3ByaW50ZigiZmFp
bGVkIHRvIHVubW91bnQgL2RldiwgZXJyb3IgPSAlc1xuIiwgc3RyZXJyb3IocmV0KSk7Cj4gLX0K
PiAtCj4gLWV4dGVybiAiQyIgaW50IG1vdW50X3JvZnNfcm9vdGZzKGJvb2wgcGl2b3Rfcm9vdCkK
PiAtewo+IC0JaW50IHJldDsKPiAtCj4gLQlpZiAobWtkaXIoIi9yb2ZzIiwgMDc1NSkgPCAwKQo+
IC0JCWtwcmludGYoImZhaWxlZCB0byBjcmVhdGUgL3JvZnMsIGVycm9yID0gJXNcbiIsIHN0cmVy
cm9yKGVycm5vKSk7Cj4gLQo+IC0JcmV0ID0gc3lzX21vdW50KCIvZGV2L3ZibGswLjEiLCAiL3Jv
ZnMiLCAicm9mcyIsIE1OVF9SRE9OTFksIDApOwo+IC0KPiAtCWlmIChyZXQpIHsKPiAtCQlrcHJp
bnRmKCJmYWlsZWQgdG8gbW91bnQgL3JvZnMsIGVycm9yID0gJXNcbiIsIHN0cmVycm9yKHJldCkp
Owo+IC0JCXJtZGlyKCIvcm9mcyIpOwo+IC0JCXJldHVybiByZXQ7Cj4gLQl9Cj4gLQo+IC0JaWYg
KHBpdm90X3Jvb3QpIHsKPiAtCQlwaXZvdF9yb290ZnMoIi9yb2ZzIik7Cj4gLQl9Cj4gLQo+IC0J
cmV0dXJuIDA7Cj4gLX0KPiAtCj4gLWV4dGVybiAiQyIgdm9pZCBtb3VudF96ZnNfcm9vdGZzKGJv
b2wgcGl2b3Rfcm9vdCkKPiAtewo+IC0JaWYgKG1rZGlyKCIvemZzIiwgMDc1NSkgPCAwKQo+IC0J
CWtwcmludGYoImZhaWxlZCB0byBjcmVhdGUgL3pmcywgZXJyb3IgPSAlc1xuIiwgc3RyZXJyb3Io
ZXJybm8pKTsKPiAtCj4gLQlpbnQgcmV0ID0gc3lzX21vdW50KCIvZGV2L3ZibGswLjEiLCAiL3pm
cyIsICJ6ZnMiLCAwLCAodm9pZCAqKSJvc3YvemZzIik7Cj4gLQo+IC0JaWYgKHJldCkKPiAtCQlr
cHJpbnRmKCJmYWlsZWQgdG8gbW91bnQgL3pmcywgZXJyb3IgPSAlc1xuIiwgc3RyZXJyb3IocmV0
KSk7Cj4gLQo+IC0JaWYgKCFwaXZvdF9yb290KSB7Cj4gLQkJcmV0dXJuOwo+IC0JfQo+IC0KPiAt
CXBpdm90X3Jvb3RmcygiL3pmcyIpOwo+IC0KPiAtCWltcG9ydF9leHRyYV96ZnNfcG9vbHMoKTsK
PiAtfQo+IC0KPiAtZXh0ZXJuICJDIiB2b2lkIHVubW91bnRfcm9vdGZzKHZvaWQpCj4gLXsKPiAt
CWludCByZXQ7Cj4gLQo+IC0Jc3lzX3Vtb3VudCgiL2RldiIpOwo+IC0KPiAtCXJldCA9IHN5c191
bW91bnQoIi9wcm9jIik7Cj4gLQlpZiAocmV0KSB7Cj4gLQkJa3ByaW50ZigiV2FybmluZzogdW5t
b3VudF9yb290ZnM6IGZhaWxlZCB0byB1bm1vdW50IC9wcm9jLCAiCj4gLQkJCSJlcnJvciA9ICVz
XG4iLCBzdHJlcnJvcihyZXQpKTsKPiAtCX0KPiAtCj4gLQlyZXQgPSBzeXNfdW1vdW50MigiLyIs
IE1OVF9GT1JDRSk7Cj4gLQlpZiAocmV0KSB7Cj4gLQkJa3ByaW50ZigiV2FybmluZzogdW5tb3Vu
dF9yb290ZnM6IGZhaWxlZCB0byB1bm1vdW50IC8sICIKPiAtCQkJImVycm9yID0gJXNcbiIsIHN0
cmVycm9yKHJldCkpOwo+IC0JfQo+IC19Cj4gLQo+IC1leHRlcm4gIkMiIHZvaWQgYmlvX2luaXQo
dm9pZCk7Cj4gLWV4dGVybiAiQyIgdm9pZCBiaW9fc3luYyh2b2lkKTsKPiAtCj4gLWludCB2ZnNf
aW5pdGlhbGl6ZWQ7Cj4gLQo+IC1leHRlcm4gIkMiCj4gLXZvaWQKPiAtdmZzX2luaXQodm9pZCkK
PiAtewo+IC0JY29uc3Qgc3RydWN0IHZmc3N3ICpmczsKPiAtCj4gLQliaW9faW5pdCgpOwo+IC0J
bG9va3VwX2luaXQoKTsKPiAtCXZub2RlX2luaXQoKTsKPiAtCXRhc2tfYWxsb2MoJm1haW5fdGFz
ayk7Cj4gLQo+IC0JLyoKPiAtCSAqIEluaXRpYWxpemUgZWFjaCBmaWxlIHN5c3RlbS4KPiAtCSAq
Lwo+IC0JZm9yIChmcyA9IHZmc3N3OyBmcy0+dnNfbmFtZTsgZnMrKykgewo+IC0JCWlmIChmcy0+
dnNfaW5pdCkgewo+IC0JCQlEUFJJTlRGKFZGU0RCX0NPUkUsICgiVkZTOiBpbml0aWFsaXppbmcg
JXNcbiIsCj4gLQkJCQkJZnMtPnZzX25hbWUpKTsKPiAtCQkJZnMtPnZzX2luaXQoKTsKPiAtCQl9
Cj4gLQl9Cj4gLQo+IC0JbW91bnRfcm9vdGZzKCk7Cj4gLQl1bnBhY2tfYm9vdGZzKCk7Cj4gLQo+
IC0JLy8JaWYgKG9wZW4oIi9kZXYvY29uc29sZSIsIE9fUkRXUiwgMCkgIT0gMCkKPiAtCWlmIChj
b25zb2xlOjpvcGVuKCkgIT0gMCkKPiAtCQlrcHJpbnRmKCJmYWlsZWQgdG8gb3BlbiBjb25zb2xl
LCBlcnJvciA9ICVkXG4iLCBlcnJubyk7Cj4gLQlpZiAoZHVwKDApICE9IDEpCj4gLQkJa3ByaW50
ZigiZmFpbGVkIHRvIGR1cCBjb25zb2xlICgxKVxuIik7Cj4gLQlpZiAoZHVwKDApICE9IDIpCj4g
LQkJa3ByaW50ZigiZmFpbGVkIHRvIGR1cCBjb25zb2xlICgyKVxuIik7Cj4gLQl2ZnNfaW5pdGlh
bGl6ZWQgPSAxOwo+IC19Cj4gLQo+IC12b2lkIHZmc19leGl0KHZvaWQpCj4gLXsKPiAtCS8qIEZy
ZWUgdXAgbWFpbl90YXNrIChzdG9yZXMgY3dkIGRhdGEpIHJlc291cmNlcyAqLwo+IC0JcmVwbGFj
ZV9jd2QobWFpbl90YXNrLCBudWxscHRyLCBbXSgpIHsgcmV0dXJuIDA7IH0pOwo+IC0JLyogVW5t
b3VudCBhbGwgZmlsZSBzeXN0ZW1zICovCj4gLQl1bm1vdW50X3Jvb3RmcygpOwo+IC0JLyogRmlu
aXNoIHdpdGggdGhlIGJpbyBsYXllciAqLwo+IC0JYmlvX3N5bmMoKTsKPiAtfQo+IC0KPiAtdm9p
ZCBzeXNfcGFuaWMoY29uc3QgY2hhciAqc3RyKQo+IC17Cj4gLQlhYm9ydCgicGFuaWM6ICVzIiwg
c3RyKTsKPiAtfQo+IC0KPiBkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvbW91bnQuYyBiL2xpYi92
ZnNjb3JlL21vdW50LmMKPiBpbmRleCA3NmUyZTcwYy4uMTBjMjdmYWQgMTAwNjQ0Cj4gLS0tIGEv
bGliL3Zmc2NvcmUvbW91bnQuYwo+ICsrKyBiL2xpYi92ZnNjb3JlL21vdW50LmMKVGhlcmUgYXJl
IHNvbWUgQysrIGhlYWRlciBmaWxlcwoKV2UgYXJlIHVzaW5nIHRoZSBzdGQ6Omxpc3Q/Cgo+IEBA
IC04MywxNyArODMsNiBAQCBmc19nZXRmcyhjb25zdCBjaGFyICpuYW1lKQo+ICAgCXJldHVybiBm
czsKPiAgIH0KPiAgIAo+IC1jb25zdCBjaGFyKgo+IC1mc19nZXRmc25hbWUodmZzb3BzKiBvcHMp
Cj4gLXsKPiAtCWZvciAoYXV0byBmcyA9IHZmc3N3OyBmcy0+dnNfbmFtZTsgZnMrKykgewo+IC0J
CWlmIChmcy0+dnNfb3AgPT0gb3BzKSB7Cj4gLQkJCXJldHVybiBmcy0+dnNfbmFtZTsKPiAtCQl9
Cj4gLQl9Cj4gLQlhYm9ydCgpOwo+IC19Cj4gLQo+ICAgaW50Cj4gICBzeXNfbW91bnQoY29uc3Qg
Y2hhciAqZGV2LCBjb25zdCBjaGFyICpkaXIsIGNvbnN0IGNoYXIgKmZzbmFtZSwgaW50IGZsYWdz
LCBjb25zdCB2b2lkICpkYXRhKQo+ICAgewo+IEBAIC0xNDEsNyArMTMwLDggQEAgc3lzX21vdW50
KGNvbnN0IGNoYXIgKmRldiwgY29uc3QgY2hhciAqZGlyLCBjb25zdCBjaGFyICpmc25hbWUsIGlu
dCBmbGFncywgY29uc3QKPiAgIAkvKgo+ICAgCSAqIENyZWF0ZSBWRlMgbW91bnQgZW50cnkuCj4g
ICAJICovCj4gLQlpZiAoIShtcCA9IG5ldyBtb3VudCkpIHsKPiArCW1wID0gbWFsbG9jKHNpemVv
ZihzdHJ1Y3QgbW91bnQpKTsKPiArCWlmICghbXApIHsKPiAgIAkJZXJyb3IgPSBFTk9NRU07Cj4g
ICAJCWdvdG8gZXJyMTsKPiAgIAl9Cj4gQEAgLTIxNCw3ICsyMDQsNyBAQCBzeXNfbW91bnQoY29u
c3QgY2hhciAqZGV2LCBjb25zdCBjaGFyICpkaXIsIGNvbnN0IGNoYXIgKmZzbmFtZSwgaW50IGZs
YWdzLCBjb25zdAo+ICAgCWlmIChkcF9jb3ZlcmVkKQo+ICAgCQlkcmVsZShkcF9jb3ZlcmVkKTsK
PiAgICBlcnIyOgo+IC0JZGVsZXRlIG1wOwo+ICsJZnJlZShtcCk7Cj4gICAgZXJyMToKPiAgIAlp
ZiAoZGV2aWNlKQo+ICAgCQlkZXZpY2VfY2xvc2UoZGV2aWNlKTsKCkF0IGxpbmUgMjQwLCB0aGVy
ZSBhcmUgYysrIHN5bnRheCBmb3IgbGlzdCBpdGVyYXRpb24KCj4gQEAgLTI4MSw3ICsyNzEsNyBA
QCBmb3VuZDoKPiAgIAo+ICAgCWlmIChtcC0+bV9kZXYpCj4gICAJCWRldmljZV9jbG9zZShtcC0+
bV9kZXYpOwo+IC0JZGVsZXRlIG1wOwo+ICsJZnJlZShtcCk7Cj4gICAgb3V0Ogo+ICAgCXJldHVy
biBlcnJvcjsKPiAgIH0KCkF0IGxpbmUgMjkwLCB0aGVyZSBhcmUgc29tZSBsaXN0IGl0ZXJhdGlv
biBvcGVyYXRpb24uCj4gQEAgLTI5Miw2ICsyODIsNyBAQCBzeXNfdW1vdW50KGNvbnN0IGNoYXIg
KnBhdGgpCj4gICAJcmV0dXJuIHN5c191bW91bnQyKHBhdGgsIDApOwo+ICAgfQo+ICAgCj4gKyNp
ZiAwCj4gICBpbnQKPiAgIHN5c19waXZvdF9yb290KGNvbnN0IGNoYXIgKm5ld19yb290LCBjb25z
dCBjaGFyICpwdXRfb2xkKQo+ICAgewo+IEBAIC0zMzksNiArMzMwLDcgQEAgc3lzX3Bpdm90X3Jv
b3QoY29uc3QgY2hhciAqbmV3X3Jvb3QsIGNvbnN0IGNoYXIgKnB1dF9vbGQpCj4gICAJfQo+ICAg
CXJldHVybiAwOwo+ICAgfQo+ICsjZW5kaWYKPiAgIAo+ICAgaW50Cj4gICBzeXNfc3luYyh2b2lk
KQoKQXQgbGluZSAzNDAsIHRoZXJlIGFyZSBzb21lIGxpc3QgaXRlcmF0aW9uIG9wZXJhdGlvbi4K
PiBAQCAtNDUwLDMzICs0NDIsNiBAQCB2ZnNfZWludmFsKHZvaWQpCj4gICAJcmV0dXJuIEVJTlZB
TDsKPiAgIH0KCkF0IGxpbmUgNDUyLCB0aGVyZSBhcmUgc29tZSBsaXN0IGl0ZXJhdGlvbiBvcGVy
YXRpb25zLgo+ICAgCj4gLW5hbWVzcGFjZSBvc3Ygewo+IC0KPiAtbW91bnRfZGVzYyB0b19tb3Vu
dF9kZXNjKG1vdW50KiBtKQo+IC17Cj4gLQltb3VudF9kZXNjIHJldDsKPiAtCXJldC5zcGVjaWFs
ID0gbS0+bV9zcGVjaWFsOwo+IC0JcmV0LnBhdGggPSBtLT5tX3BhdGg7Cj4gLQlyZXQudHlwZSA9
IGZzX2dldGZzbmFtZShtLT5tX29wKTsKPiAtCS8vIEZJWE1FOiByZWNvcmQgb3B0aW9ucwo+IC0J
cmV0Lm9wdGlvbnMgPSAiIjsKPiAtCXJldHVybiByZXQ7Cj4gLX0KPiAtCj4gLXN0ZDo6dmVjdG9y
PG1vdW50X2Rlc2M+Cj4gLWN1cnJlbnRfbW91bnRzKCkKPiAtewo+IC0JV0lUSF9MT0NLKG1vdW50
X2xvY2spIHsKPiAtCQlzdGQ6OnZlY3Rvcjxtb3VudF9kZXNjPiByZXQ7Cj4gLQkJZm9yIChhdXRv
JiYgbXAgOiBtb3VudF9saXN0KSB7Cj4gLQkJCXJldC5wdXNoX2JhY2sodG9fbW91bnRfZGVzYyht
cCkpOwo+IC0JCX0KPiAtCQlyZXR1cm4gcmV0Owo+IC0JfQo+IC19Cj4gLQo+IC19Cj4gLQo+ICAg
I2lmZGVmIERFQlVHX1ZGUwo+ICAgdm9pZAo+ICAgbW91bnRfZHVtcCh2b2lkKQo+IGRpZmYgLS1n
aXQgYS9saWIvdmZzY29yZS9zeXNjYWxscy5jIGIvbGliL3Zmc2NvcmUvc3lzY2FsbHMuYwo+IGlu
ZGV4IDI5YjE0MjIwLi40ZTU1MzM3ZiAxMDA2NDQKPiAtLS0gYS9saWIvdmZzY29yZS9zeXNjYWxs
cy5jCj4gKysrIGIvbGliL3Zmc2NvcmUvc3lzY2FsbHMuYwo+IEBAIC0xOTUsMTcgKzE5NSwxNyBA
QCBzeXNfb3BlbihjaGFyICpwYXRoLCBpbnQgZmxhZ3MsIG1vZGVfdCBtb2RlLCBzdHJ1Y3QgZmls
ZSAqKmZwcCkKPiAgIAkJCWdvdG8gb3V0X3ZuX3VubG9jazsKPiAgIAl9Cj4gICAKPiAtCXRyeSB7
Cj4gLQkgICAgZmlsZXJlZiBmID0gbWFrZV9maWxlPHZmc19maWxlPihmbGFncyk7Cj4gLQkgICAg
ZnAgPSBmLmdldCgpOwo+IC0JICAgIGZob2xkKGZwKTsKPiAtCX0gY2F0Y2ggKGludCBlcnIpIHsK
PiAtCSAgICBlcnJvciA9IGVycjsKPiArCWZwID0gY2FsbG9jKHNpemVvZihzdHJ1Y3QgdmZzY29y
ZV9maWxlKSwgMSk7Cj4gKwlmaG9sZChmcCk7Cj4gKwlpZiAoIWZwKSB7Cj4gKwkgICAgZXJyb3Ig
PSBFTk9NRU07Cj4gICAJICAgIGdvdG8gb3V0X3ZuX3VubG9jazsKPiAgIAl9Cj4gKwlmcC0+Zl9m
bGFncyA9IGZsYWdzOwo+ICsKPiAgIAkvLyBjaGFuZ2UgdG8gc3RkOjptb3ZlIG9uY2UgZHAgaXMg
YSBkZW50cnlfcmVmCj4gLQlmcC0+Zl9kZW50cnkgPSBkZW50cnlfcmVmKGRwLCBmYWxzZSk7Cj4g
LQlkcCA9IG51bGxwdHI7Cj4gKwlmcC0+Zl9kZW50cnkgPSBkcDsKPiArCWRwID0gTlVMTDsKPiAg
IAo+ICAgCWVycm9yID0gVk9QX09QRU4odnAsIGZwKTsKPiAgIAlpZiAoZXJyb3IpIHsKPiBAQCAt
MjEzLDcgKzIxMyw3IEBAIHN5c19vcGVuKGNoYXIgKnBhdGgsIGludCBmbGFncywgbW9kZV90IG1v
ZGUsIHN0cnVjdCBmaWxlICoqZnBwKQo+ICAgCQkvLyBOb3RlIGRpcmVjdCBkZWxldGUgb2YgZnAg
aW5zdGVhZCBvZiBmZHJvcChmcCkuIGZwIHdhcyBuZXZlcgo+ICAgCQkvLyByZXR1cm5lZCBzbyBj
YW5ub3QgYmUgaW4gdXNlLCBhbmQgYmVjYXVzZSBpdCB3YXNuJ3Qgb3BlbmVkCj4gICAJCS8vIGl0
IGNhbm5vdCBiZSBjbG9zZSgpZWQuCj4gLQkJZGVsZXRlIGZwOwo+ICsJCWZyZWUoZnApOwo+ICAg
CQlyZXR1cm4gZXJyb3I7Cj4gICAJfQo+ICAgCXZuX3VubG9jayh2cCk7Cj4gQEAgLTI0MSwxMSAr
MjQxLDE0IEBAIGludAo+ICAgc3lzX3JlYWQoc3RydWN0IGZpbGUgKmZwLCBjb25zdCBzdHJ1Y3Qg
aW92ZWMgKmlvdiwgc2l6ZV90IG5pb3YsCj4gICAJCW9mZl90IG9mZnNldCwgc2l6ZV90ICpjb3Vu
dCkKPiAgIHsKPiArCWludCBlcnJvciA9IDA7Cj4gKwlzdHJ1Y3QgaW92ZWMgKmNvcHlfaW92Owo+
ICAgCWlmICgoZnAtPmZfZmxhZ3MgJiBGUkVBRCkgPT0gMCkKPiAgIAkJcmV0dXJuIEVCQURGOwo+
ICAgCj4gICAJc2l6ZV90IGJ5dGVzID0gMDsKPiAtCWF1dG8gaW92cCA9IGlvdjsKPiArCWNvbnN0
IHN0cnVjdCBpb3ZlYyAqaW92cCA9IGlvdjsKPiArCj4gICAJZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG5pb3Y7IGkrKykgewo+ICAgCQlpZiAoaW92cC0+aW92X2xlbiA+IElPU0laRV9NQVggLSBi
eXRlcykgewo+ICAgCQkJcmV0dXJuIEVJTlZBTDsKPiBAQCAtMjYwLDE2ICsyNjMsMjcgQEAgc3lz
X3JlYWQoc3RydWN0IGZpbGUgKmZwLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlvdiwgc2l6ZV90IG5p
b3YsCj4gICAJfQo+ICAgCj4gICAJc3RydWN0IHVpbyB1aW87Cj4gLQkvLyBVbmZvcnR1bmF0ZWx5
LCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvZiBmcC0+cmVhZCB6ZXJvcyB0aGUKPiAtCS8v
IGlvdl9sZW4gZmllbGRzIHdoZW4gaXQgcmVhZHMgZnJvbSBkaXNrLCBzbyB3ZSBoYXZlIHRvIGNv
cHkgaW92Lgo+IC0Jc3RkOjp2ZWN0b3I8aW92ZWM+IGNvcHlfaW92KGlvdiwgaW92ICsgbmlvdik7
Cj4gLQl1aW8udWlvX2lvdiA9IGNvcHlfaW92LmRhdGEoKTsKPiArCS8qIFRPRE86IGlzIGl0IG5l
Y2Vzc2FyeSB0byBjb3B5IGlvdiB3aXRoaW4gVW5pa3JhZnQ/Cj4gKwkgKiBPU3YgZGlkIHRoaXMs
IG1lbnRpb25pbmcgdGhpcyByZWFzb246Cj4gKwkgKgo+ICsJICogIlVuZm9ydHVuYXRlbHksIHRo
ZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9mIGZwLT5yZWFkCj4gKwkgKiAgemVyb3MgdGhlIGlv
dl9sZW4gZmllbGRzIHdoZW4gaXQgcmVhZHMgZnJvbSBkaXNrLCBzbyB3ZQo+ICsJICogIGhhdmUg
dG8gY29weSBpb3YuICIKPiArCSAqLwo+ICsJY29weV9pb3YgPSBjYWxsb2Moc2l6ZW9mKHN0cnVj
dCBpb3ZlYyksIG5pb3YpOwo+ICsJaWYgKCFjb3B5X2lvdikKPiArCQlyZXR1cm4gRU5PTUVNOwo+
ICsJbWVtY3B5KGNvcHlfaW92LCBpb3YsIHNpemVvZihzdHJ1Y3QgaW92ZWMpKm5pb3YpOwo+ICsK
PiArCXVpby51aW9faW92ID0gY29weV9pb3Y7Cj4gICAJdWlvLnVpb19pb3ZjbnQgPSBuaW92Owo+
ICAgCXVpby51aW9fb2Zmc2V0ID0gb2Zmc2V0Owo+ICAgCXVpby51aW9fcmVzaWQgPSBieXRlczsK
PiAgIAl1aW8udWlvX3J3ID0gVUlPX1JFQUQ7Cj4gLQlhdXRvIGVycm9yID0gZnAtPnJlYWQoJnVp
bywgKG9mZnNldCA9PSAtMSkgPyAwIDogRk9GX09GRlNFVCk7Cj4gKwllcnJvciA9IHZmc19yZWFk
KGZwLCAmdWlvLCAob2Zmc2V0ID09IC0xKSA/IDAgOiBGT0ZfT0ZGU0VUKTsKPiAgIAkqY291bnQg
PSBieXRlcyAtIHVpby51aW9fcmVzaWQ7Cj4gKwo+ICsJZnJlZShjb3B5X2lvdik7Cj4gICAJcmV0
dXJuIGVycm9yOwo+ICAgfQo+ICAgCj4gQEAgLTI3NywxMSArMjkxLDEzIEBAIGludAo+ICAgc3lz
X3dyaXRlKHN0cnVjdCBmaWxlICpmcCwgY29uc3Qgc3RydWN0IGlvdmVjICppb3YsIHNpemVfdCBu
aW92LAo+ICAgCQlvZmZfdCBvZmZzZXQsIHNpemVfdCAqY291bnQpCj4gICB7Cj4gKwlzdHJ1Y3Qg
aW92ZWMgKmNvcHlfaW92Owo+ICsJaW50IGVycm9yID0gMDsKPiAgIAlpZiAoKGZwLT5mX2ZsYWdz
ICYgRldSSVRFKSA9PSAwKQo+ICAgCQlyZXR1cm4gRUJBREY7Cj4gICAKPiAgIAlzaXplX3QgYnl0
ZXMgPSAwOwo+IC0JYXV0byBpb3ZwID0gaW92Owo+ICsJY29uc3Qgc3RydWN0IGlvdmVjICppb3Zw
ID0gaW92Owo+ICAgCWZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBuaW92OyBpKyspIHsKPiAgIAkJ
aWYgKGlvdnAtPmlvdl9sZW4gPiBJT1NJWkVfTUFYIC0gYnl0ZXMpIHsKPiAgIAkJCXJldHVybiBF
SU5WQUw7Cj4gQEAgLTI5NiwxNSArMzEyLDI0IEBAIHN5c193cml0ZShzdHJ1Y3QgZmlsZSAqZnAs
IGNvbnN0IHN0cnVjdCBpb3ZlYyAqaW92LCBzaXplX3QgbmlvdiwKPiAgIAl9Cj4gICAKPiAgIAlz
dHJ1Y3QgdWlvIHVpbzsKPiAtCS8vIFVuZm9ydHVuYXRlbHksIHRoZSBjdXJyZW50IGltcGxlbWVu
dGF0aW9uIG9mIGZwLT53cml0ZSB6ZXJvcyB0aGUKPiAtCS8vIGlvdl9sZW4gZmllbGRzIHdoZW4g
aXQgd3JpdGVzIHRvIGRpc2ssIHNvIHdlIGhhdmUgdG8gY29weSBpb3YuCj4gLQlzdGQ6OnZlY3Rv
cjxpb3ZlYz4gY29weV9pb3YoaW92LCBpb3YgKyBuaW92KTsKPiAtCXVpby51aW9faW92ID0gY29w
eV9pb3YuZGF0YSgpOwo+ICsKPiArCS8qIFRPRE86IHNhbWUgbm90ZSBhcyBpbiBzeXNfcmVhZC4g
T3JpZ2luYWwgY29tbWVudDoKPiArCSAqCj4gKwkgKiAiVW5mb3J0dW5hdGVseSwgdGhlIGN1cnJl
bnQgaW1wbGVtZW50YXRpb24gb2YgZnAtPndyaXRlIHplcm9zIHRoZQo+ICsJICogIGlvdl9sZW4g
ZmllbGRzIHdoZW4gaXQgd3JpdGVzIHRvIGRpc2ssIHNvIHdlIGhhdmUgdG8gY29weSBpb3YuCj4g
KwkgKi8KPiArCS8qIHN0ZDo6dmVjdG9yPGlvdmVjPiBjb3B5X2lvdihpb3YsIGlvdiArIG5pb3Yp
OyAqLwo+ICsJY29weV9pb3YgPSBjYWxsb2Moc2l6ZW9mKHN0cnVjdCBpb3ZlYyksIG5pb3YpOwo+
ICsJaWYgKCFjb3B5X2lvdikKPiArCQlyZXR1cm4gRU5PTUVNOwo+ICsJbWVtY3B5KGNvcHlfaW92
LCBpb3YsIHNpemVvZihzdHJ1Y3QgaW92ZWMpKm5pb3YpOwo+ICsKPiArCXVpby51aW9faW92ID0g
Y29weV9pb3Y7Cj4gICAJdWlvLnVpb19pb3ZjbnQgPSBuaW92Owo+ICAgCXVpby51aW9fb2Zmc2V0
ID0gb2Zmc2V0Owo+ICAgCXVpby51aW9fcmVzaWQgPSBieXRlczsKPiAgIAl1aW8udWlvX3J3ID0g
VUlPX1dSSVRFOwo+IC0JYXV0byBlcnJvciA9IGZwLT53cml0ZSgmdWlvLCAob2Zmc2V0ID09IC0x
KSA/IDAgOiBGT0ZfT0ZGU0VUKTsKPiArCXZmc193cml0ZShmcCwgJnVpbywgKG9mZnNldCA9PSAt
MSkgPyAwIDogRk9GX09GRlNFVCk7Cj4gICAJKmNvdW50ID0gYnl0ZXMgLSB1aW8udWlvX3Jlc2lk
Owo+ICAgCXJldHVybiBlcnJvcjsKPiAgIH0KPiBAQCAtMzU1LDcgKzM4MCw3IEBAIHN5c19pb2N0
bChzdHJ1Y3QgZmlsZSAqZnAsIHVfbG9uZyByZXF1ZXN0LCB2b2lkICpidWYpCj4gICAJaWYgKChm
cC0+Zl9mbGFncyAmIChGUkVBRCB8IEZXUklURSkpID09IDApCj4gICAJCXJldHVybiBFQkFERjsK
PiAgIAo+IC0JZXJyb3IgPSBmcC0+aW9jdGwocmVxdWVzdCwgYnVmKTsKPiArCWVycm9yID0gdmZz
X2lvY3RsKGZwLCByZXF1ZXN0LCBidWYpOwo+ICAgCj4gICAJRFBSSU5URihWRlNEQl9TWVNDQUxM
LCAoInN5c19pb2N0bDogY29tcCBlcnJvcj0lZFxuIiwgZXJyb3IpKTsKPiAgIAlyZXR1cm4gZXJy
b3I7Cj4gQEAgLTM4Niw3ICs0MTEsNyBAQCBzeXNfZnN0YXQoc3RydWN0IGZpbGUgKmZwLCBzdHJ1
Y3Qgc3RhdCAqc3QpCj4gICAKPiAgIAlEUFJJTlRGKFZGU0RCX1NZU0NBTEwsICgic3lzX2ZzdGF0
OiBmcD0leFxuIiwgZnApKTsKPiAgIAo+IC0JZXJyb3IgPSBmcC0+c3RhdChzdCk7Cj4gKwllcnJv
ciA9IHZmc19zdGF0KGZwLCBzdCk7Cj4gICAKPiAgIAlyZXR1cm4gZXJyb3I7Cj4gICB9Cj4gQEAg
LTgxNSwxMCArODQwLDggQEAgc3lzX3N5bWxpbmsoY29uc3QgY2hhciAqb2xkcGF0aCwgY29uc3Qg
Y2hhciAqbmV3cGF0aCkKPiAgIHsKPiAgIAlzdHJ1Y3QgdGFzawkqdCA9IG1haW5fdGFzazsKPiAg
IAlpbnQJCWVycm9yOwo+IC0Jc3RkOjp1bmlxdWVfcHRyPGNoYXIgW10+IHVwX29wIChuZXcgY2hh
cltQQVRIX01BWF0pOwo+IC0JY2hhcgkJKm9wID0gdXBfb3AuZ2V0KCk7Cj4gLQlzdGQ6OnVuaXF1
ZV9wdHI8Y2hhciBbXT4gdXBfbnAgKG5ldyBjaGFyW1BBVEhfTUFYXSk7Cj4gLQljaGFyCQkqbnAg
PSB1cF9ucC5nZXQoKTsKPiArCWNoYXIJCW9wW1BBVEhfTUFYXTsKPiArCWNoYXIJCW5wW1BBVEhf
TUFYXTsKPiAgIAlzdHJ1Y3QgZGVudHJ5CSpuZXdkcDsKPiAgIAlzdHJ1Y3QgZGVudHJ5CSpuZXdk
aXJkcDsKPiAgIAljaGFyCQkqbmFtZTsKPiBAQCAtMTAzMiwxNyArMTA1NSwxNyBAQCBzeXNfYWNj
ZXNzKGNoYXIgKnBhdGgsIGludCBtb2RlKQo+ICAgaW50Cj4gICBzeXNfc3RhdChjaGFyICpwYXRo
LCBzdHJ1Y3Qgc3RhdCAqc3QpCj4gICB7Cj4gKwlzdHJ1Y3QgZGVudHJ5ICpkcDsKPiArCWludCBl
cnJvcjsKPiArCj4gICAJRFBSSU5URihWRlNEQl9TWVNDQUxMLCAoInN5c19zdGF0OiBwYXRoPSVz
XG4iLCBwYXRoKSk7Cj4gICAKPiAtCXRyeSB7Cj4gLQkJZGVudHJ5X3JlZiBkcCA9IG5hbWVpKHBh
dGgpOwo+IC0JCWlmICghZHApIHsKPiAtCQkJcmV0dXJuIEVOT0VOVDsKPiAtCQl9Cj4gLQkJcmV0
dXJuIHZuX3N0YXQoZHAtPmRfdm5vZGUsIHN0KTsKPiAtCX0gY2F0Y2ggKGVycm9yIGUpIHsKPiAt
CQlyZXR1cm4gZS5nZXQoKTsKPiAtCX0KPiArCWVycm9yID0gbmFtZWkocGF0aCwgJmRwKTsKPiAr
CWlmIChlcnJvcikKPiArCQlyZXR1cm4gZXJyb3I7Cj4gKwllcnJvciA9IHZuX3N0YXQoZHAtPmRf
dm5vZGUsIHN0KTsKPiArCWRyZWxlKGRwKTsKPiArCXJldHVybiBlcnJvcjsKPiAgIH0KPiAgIAo+
ICAgaW50IHN5c19sc3RhdChjaGFyICpwYXRoLCBzdHJ1Y3Qgc3RhdCAqc3QpCj4gQEAgLTEwNzQs
MTYgKzEwOTcsMTkgQEAgaW50IHN5c19sc3RhdChjaGFyICpwYXRoLCBzdHJ1Y3Qgc3RhdCAqc3Qp
Cj4gICBpbnQKPiAgIHN5c19zdGF0ZnMoY2hhciAqcGF0aCwgc3RydWN0IHN0YXRmcyAqYnVmKQo+
ICAgewo+ICsJc3RydWN0IGRlbnRyeSAqZHA7Cj4gKwlpbnQgZXJyb3I7Cj4gKwo+ICAgCW1lbXNl
dChidWYsIDAsIHNpemVvZigqYnVmKSk7Cj4gLQl0cnkgewo+IC0JCWRlbnRyeV9yZWYgZHAgPSBu
YW1laShwYXRoKTsKPiAtCQlpZiAoIWRwKSB7Cj4gLQkJCXJldHVybiBFTk9FTlQ7Cj4gLQkJfQo+
IC0JCXJldHVybiBWRlNfU1RBVEZTKGRwLT5kX21vdW50LCBidWYpOwo+IC0JfSBjYXRjaCAoZXJy
b3IgZSkgewo+IC0JCXJldHVybiBlLmdldCgpOwo+IC0JfQo+ICsKPiArCWVycm9yID0gbmFtZWko
cGF0aCwgJmRwKTsKPiArCWlmIChlcnJvcikKPiArCQlyZXR1cm4gZXJyb3I7Cj4gKwo+ICsJZXJy
b3IgPSBWRlNfU1RBVEZTKGRwLT5kX21vdW50LCBidWYpOwo+ICsJZHJlbGUoZHApOwo+ICsKPiAr
CXJldHVybiBlcnJvcjsKPiAgIH0KPiAgIAo+ICAgaW50Cj4gQEAgLTEyMTIsNiArMTIzOCw3IEBA
IHN5c19yZWFkbGluayhjaGFyICpwYXRoLCBjaGFyICpidWYsIHNpemVfdCBidWZzaXplLCBzc2l6
ZV90ICpzaXplKQo+ICAgCXJldHVybiAoMCk7Cj4gICB9Cj4gICAKPiArI2lmIDAKPiAgIC8qCj4g
ICAgKiBDaGVjayB0aGUgdmFsaWRpdHkgb2YgdGhlIG1lbWJlcnMgb2YgYSBzdHJ1Y3QgdGltZXZh
bC4KPiAgICAqLwpBdCBsaW5lIDEzMzMgJiBsaW5lIDEzNTYgdGhlcmUgYXJlIHN0ZDo6c3RyaW5n
cz8KCj4gQEAgLTEzOTYsNiArMTQyMyw3IEBAIHN5c19mdXRpbWVucyhpbnQgZmQsIGNvbnN0IHN0
cnVjdCB0aW1lc3BlYyB0aW1lc1syXSkKPiAgIAlhdXRvIGVycm9yID0gc3lzX3V0aW1lbnNhdChB
VF9GRENXRCwgcGF0aG5hbWUuY19zdHIoKSwgdGltZXMsIDApOwo+ICAgCXJldHVybiBlcnJvcjsK
PiAgIH0KPiArI2VuZGlmCj4gICAKPiAgIGludAo+ICAgc3lzX2ZhbGxvY2F0ZShzdHJ1Y3QgZmls
ZSAqZnAsIGludCBtb2RlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuKQo+IGRpZmYgLS1naXQg
YS9saWIvdmZzY29yZS90YXNrLmMgYi9saWIvdmZzY29yZS90YXNrLmMKPiBpbmRleCAyZDM0ZjBk
Zi4uNGNlYjEyM2IgMTAwNjQ0Cj4gLS0tIGEvbGliL3Zmc2NvcmUvdGFzay5jCj4gKysrIGIvbGli
L3Zmc2NvcmUvdGFzay5jCj4gQEAgLTQ0LDIzICs0NCw2IEBACj4gICAjaW5jbHVkZSA8b3N2L3By
ZXguaD4KPiAgICNpbmNsdWRlICJ2ZnMuaCIKPiAgIAo+IC0vKgo+IC0gKiBBbGxvY2F0ZSBuZXcg
dGFzay4KPiAtICovCj4gLWludAo+IC10YXNrX2FsbG9jKHN0cnVjdCB0YXNrICoqcHQpCj4gLXsK
PiAtCXN0cnVjdCB0YXNrICp0Owo+IC0KPiAtCS8vIEZJWE1FOiB3aGVyZSBkbyB3ZSBmcmVlIHRh
c2sgPwo+IC0JaWYgKCEodCA9IG5ldyB0YXNrKSkKPiAtCQlyZXR1cm4gRU5PTUVNOwo+IC0JbWVt
c2V0KHQsIDAsIHNpemVvZihzdHJ1Y3QgdGFzaykpOwo+IC0Jc3RybGNweSh0LT50X2N3ZCwgIi8i
LCBzaXplb2YodC0+dF9jd2QpKTsKPiAtCj4gLQkqcHQgPSB0Owo+IC0JcmV0dXJuIDA7Cj4gLX0K
PiAgIAo+ICAgLyoKPiAgICAqIENvbnZlcnQgdG8gZnVsbCBwYXRoIGZyb20gdGhlIGN3ZCBvZiB0
YXNrIGFuZCBwYXRoLgo+IGRpZmYgLS1naXQgYS9saWIvdmZzY29yZS92ZnMuaCBiL2xpYi92ZnNj
b3JlL3Zmcy5oCj4gaW5kZXggYzEzMDUxN2QuLmNkOTQwOTc5IDEwMDY0NAo+IC0tLSBhL2xpYi92
ZnNjb3JlL3Zmcy5oCj4gKysrIGIvbGliL3Zmc2NvcmUvdmZzLmgKPiBAQCAtODksNyArODksNiBA
QCBzdHJ1Y3QgdGFzayB7Cj4gICAKPiAgIGV4dGVybiBjb25zdCBzdHJ1Y3QgdmZzc3cgdmZzc3db
XTsKPiAgIAo+IC1fX0JFR0lOX0RFQ0xTCj4gICBpbnQJIHN5c19vcGVuKGNoYXIgKnBhdGgsIGlu
dCBmbGFncywgbW9kZV90IG1vZGUsIHN0cnVjdCBmaWxlICoqZnApOwo+ICAgaW50CSBzeXNfcmVh
ZChzdHJ1Y3QgZmlsZSAqZnAsIGNvbnN0IHN0cnVjdCBpb3ZlYyAqaW92LCBzaXplX3QgbmlvdiwK
PiAgIAkJb2ZmX3Qgb2Zmc2V0LCBzaXplX3QgKmNvdW50KTsKPiBAQCAtMTY3LDI2ICsxNjYsNCBA
QCB2b2lkCSB2bm9kZV9kdW1wKHZvaWQpOwo+ICAgdm9pZAkgbW91bnRfZHVtcCh2b2lkKTsKPiAg
ICNlbmRpZgo+ICAgCj4gLV9fRU5EX0RFQ0xTCj4gLQo+IC0jaWZkZWYgX19jcGx1c3BsdXMKPiAt
Cj4gLS8vIENvbnZlcnQgYSBwYXRoIHRvIGEgZGVudHJ5X3JlZi4gIFJldHVybnMgYW4gZW1wdHkK
PiAtLy8gcmVmZXJlbmNlIGlmIG5vdCBmb3VuZCAoRU5PRU5UKSBmb3IgZWZmaWNpZW5jeSwgdGhy
b3dzCj4gLS8vIGFuIGVycm9yIG9uIG90aGVyIGVycm9ycy4KPiAtaW5saW5lIGRlbnRyeV9yZWYg
bmFtZWkoY2hhciogcGF0aCkKPiAtewo+IC0JZGVudHJ5KiBkcDsKPiAtCWF1dG8gZXJyID0gbmFt
ZWkocGF0aCwgJmRwKTsKPiAtCWlmIChlcnIgPT0gRU5PRU5UKSB7Cj4gLQkJcmV0dXJuIGRlbnRy
eV9yZWYoKTsKPiAtCX0gZWxzZSBpZiAoZXJyKSB7Cj4gLQkJdGhyb3cgbWFrZV9lcnJvcihlcnIp
Owo+IC0JfSBlbHNlIHsKPiAtCQlyZXR1cm4gZGVudHJ5X3JlZihkcCwgZmFsc2UpOwo+IC0JfQo+
IC19Cj4gLQo+IC0jZW5kaWYKPiAtCj4gICAjZW5kaWYgLyogIV9WRlNfSCAqLwo+IGRpZmYgLS1n
aXQgYS9saWIvdmZzY29yZS92bm9kZS5jIGIvbGliL3Zmc2NvcmUvdm5vZGUuYwo+IGluZGV4IDM0
MTJjNmZiLi5mNTY0NTc3ZiAxMDA2NDQKPiAtLS0gYS9saWIvdmZzY29yZS92bm9kZS5jCj4gKysr
IGIvbGliL3Zmc2NvcmUvdm5vZGUuYwo+IEBAIC0xODcsNyArMTg3LDggQEAgdmdldChzdHJ1Y3Qg
bW91bnQgKm1wLCB1aW50NjRfdCBpbm8sIHN0cnVjdCB2bm9kZSAqKnZwcCkKPiAgIAkJcmV0dXJu
IDE7Cj4gICAJfQo+ICAgCj4gLQlpZiAoISh2cCA9IG5ldyB2bm9kZSgpKSkgewo+ICsJdnAgPSBt
YWxsb2Moc2l6ZW9mKCp2cCkpOwo+ICsJaWYgKCF2cCkgewo+ICAgCQlWTk9ERV9VTkxPQ0soKTsK
PiAgIAkJcmV0dXJuIDA7Cj4gICAJfQo+IAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVs
QGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1h
bi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Thu Feb 07 13:15:12 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 07 Feb 2019 13:15:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grjWJ-00028i-5P; Thu, 07 Feb 2019 13:15:11 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=6wD6=QO=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1grjWI-00028d-2Z
 for minios-devel@lists.xen.org; Thu, 07 Feb 2019 13:15:10 +0000
X-Inumbo-ID: 614b3a92-2ada-11e9-89a1-5f3ea6abfa89
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 614b3a92-2ada-11e9-89a1-5f3ea6abfa89;
 Thu, 07 Feb 2019 13:15:04 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 3C3D4104DA3;
 Thu,  7 Feb 2019 14:15:03 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id v8cXE-cNl-QR; Thu,  7 Feb 2019 14:15:03 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 1541E104DA1
 for <minios-devel@lists.xen.org>; Thu,  7 Feb 2019 14:15:01 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Thu, 7 Feb 2019 14:15:00
 +0100
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, <minios-devel@lists.xen.org>,
 <Simon.kuenzer@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
 <20190204143739.29249-9-yuri.volchkov@neclab.eu>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <1d665d88-7612-1f7c-7a9f-edf7025b0f6a@neclab.eu>
Date: Thu, 7 Feb 2019 14:15:00 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190204143739.29249-9-yuri.volchkov@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 08/23] lib/vfscore: use
 Unikraft includes
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gWXVyaSwKClRoZSBwYXRjaCBmYWlscyB3aXRoIHRoZSBjb21waWxhdGlvbiBlcnJvci4K
CkluIGZpbGUgaW5jbHVkZWQgZnJvbSBVbmlrcmFmdC9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2Nv
cmUvZmlsZS5oOjQxOjAsCiAgICAgICAgICAgICAgICAgIGZyb20gVW5pa3JhZnQvbGliL3Zmc2Nv
cmUvZmQuYzo0MDoKVW5pa3JhZnQvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2RlbnRyeS5o
OjQ1OjI6IGVycm9yOiBleHBlY3RlZCAKc3BlY2lmaWVyLXF1YWxpZmllci1saXN0IGJlZm9yZSDi
gJhMSVNUX0VOVFJZ4oCZCiAgIExJU1RfRU5UUlkoZGVudHJ5KSBkX2xpbms7IC8qIGxpbmsgZm9y
IGhhc2ggbGlzdCAqLwoKUHJvYmFibHkgaXQgd291bGQgYmUgd2lzZSB0byBmaXggaXQuCgoKVGhl
cmUgaXMgYWxzbyBhIGRlcGVuZGVuY3kgb24gVUtfTE9DSyB3aGljaCBpcyBtaXNzaW5nIGluIENv
bmZpZy51ayBidXQgCnRoaXMgaXMgYWRkZWQgYXMgYSBwYXJ0IG9mIHBhdGNoIDIyLgoKVGhhbmtz
ICYgUmVnYXJkcwpTaGFyYW4KCgpPbiAyLzQvMTkgMzozNyBQTSwgWXVyaSBWb2xjaGtvdiB3cm90
ZToKPiBTaWduZWQtb2ZmLWJ5OiBZdXJpIFZvbGNoa292IDx5dXJpLnZvbGNoa292QG5lY2xhYi5l
dT4KPiAtLS0KPiAgIGxpYi92ZnNjb3JlL2RlbnRyeS5jICAgICAgICAgICAgICAgICB8ICA3ICsr
LS0KPiAgIGxpYi92ZnNjb3JlL2ZvcHMuYyAgICAgICAgICAgICAgICAgICB8IDExICsrKy0tLS0K
PiAgIGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9kZW50cnkuaCB8ICA0ICstLQo+ICAgbGli
L3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2ZpbGUuaCAgIHwgIDEgKwo+ICAgbGliL3Zmc2NvcmUv
aW5jbHVkZS92ZnNjb3JlL21vdW50LmggIHwgIDYgKystLQo+ICAgbGliL3Zmc2NvcmUvaW5jbHVk
ZS92ZnNjb3JlL3ByZXguaCAgIHwgIDEgLQo+ICAgbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3Jl
L3Vpby5oICAgIHwgIDEgLQo+ICAgbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Zub2RlLmgg
IHwgMTMgKysrKy0tLS0KPiAgIGxpYi92ZnNjb3JlL2xvb2t1cC5jICAgICAgICAgICAgICAgICB8
ICA0ICstLQo+ICAgbGliL3Zmc2NvcmUvbWFpbi5jICAgICAgICAgICAgICAgICAgIHwgNDggKysr
KysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICAgbGliL3Zmc2NvcmUvbW91bnQuYyAgICAgICAg
ICAgICAgICAgIHwgMjEgKysrKystLS0tLS0tCj4gICBsaWIvdmZzY29yZS9zdGRpby5jICAgICAg
ICAgICAgICAgICAgfCAgMyArKwo+ICAgbGliL3Zmc2NvcmUvc3Vicl91aW8uYyAgICAgICAgICAg
ICAgIHwgIDQgKy0tCj4gICBsaWIvdmZzY29yZS9zeXNjYWxscy5jICAgICAgICAgICAgICAgfCAx
MiArKysrLS0tCj4gICBsaWIvdmZzY29yZS90YXNrLmMgICAgICAgICAgICAgICAgICAgfCAgMiAr
LQo+ICAgbGliL3Zmc2NvcmUvdmZzLmggICAgICAgICAgICAgICAgICAgIHwgMjMgKysrLS0tLS0t
LS0tLQo+ICAgbGliL3Zmc2NvcmUvdm5vZGUuYyAgICAgICAgICAgICAgICAgIHwgIDYgKystLQo+
ICAgMTcgZmlsZXMgY2hhbmdlZCwgNjMgaW5zZXJ0aW9ucygrKSwgMTA0IGRlbGV0aW9ucygtKQo+
IAo+IGRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9kZW50cnkuYyBiL2xpYi92ZnNjb3JlL2RlbnRy
eS5jCj4gaW5kZXggZWZjMTBiZDYuLmNjY2UwN2QxIDEwMDY0NAo+IC0tLSBhL2xpYi92ZnNjb3Jl
L2RlbnRyeS5jCj4gKysrIGIvbGliL3Zmc2NvcmUvZGVudHJ5LmMKPiBAQCAtMzIsMTAgKzMyLDEx
IEBACj4gICAKPiAgICNpbmNsdWRlIDxzdHJpbmcuaD4KPiAgICNpbmNsdWRlIDxzdGRsaWIuaD4K
PiAtI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgo+ICAgCj4gLSNpbmNsdWRlIDxvc3YvZGVudHJ5Lmg+
Cj4gLSNpbmNsdWRlIDxvc3Yvdm5vZGUuaD4KPiArI2luY2x1ZGUgPHVrL2xpc3QuaD4KPiArI2lu
Y2x1ZGUgPHZmc2NvcmUvZGVudHJ5Lmg+Cj4gKyNpbmNsdWRlIDx2ZnNjb3JlL3Zub2RlLmg+Cj4g
KyNpbmNsdWRlIDx1ay9tdXRleC5oPgo+ICAgI2luY2x1ZGUgInZmcy5oIgo+ICAgCj4gICAjZGVm
aW5lIERFTlRSWV9CVUNLRVRTIDMyCj4gZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2ZvcHMuYyBi
L2xpYi92ZnNjb3JlL2ZvcHMuYwo+IGluZGV4IGYxYzE2MWU3Li5iNDU4M2QyMCAxMDA2NDQKPiAt
LS0gYS9saWIvdmZzY29yZS9mb3BzLmMKPiArKysgYi9saWIvdmZzY29yZS9mb3BzLmMKPiBAQCAt
MzMsMTQgKzMzLDEzIEBACj4gICAgKiBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBP
UiBNT0RJRklFRCBJTiBBTlkgV0FZLgo+ICAgICovCj4gICAKPiArI2RlZmluZSBfR05VX1NPVVJD
RQo+ICAgI2luY2x1ZGUgPGZjbnRsLmg+Cj4gICAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KPiAtI2lu
Y2x1ZGUgPG9zdi9maWxlLmg+Cj4gLSNpbmNsdWRlIDxvc3YvcG9sbC5oPgo+IC0jaW5jbHVkZSA8
ZnMvdmZzL3Zmcy5oPgo+IC0jaW5jbHVkZSA8b3N2L3Zmc19maWxlLmhoPgo+IC0jaW5jbHVkZSA8
b3N2L21tdS5oaD4KPiAtI2luY2x1ZGUgPG9zdi9wYWdlY2FjaGUuaGg+Cj4gKyNpbmNsdWRlIDx2
ZnNjb3JlL2ZpbGUuaD4KPiArI2luY2x1ZGUgInZmcy5oIgo+ICsKPiArI2luY2x1ZGUgPHVrL2Fz
c2VydC5oPgo+ICAgCj4gICBpbnQgdmZzX2Nsb3NlKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwKQo+
ICAgewo+IGRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZGVudHJ5Lmgg
Yi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZGVudHJ5LmgKPiBpbmRleCA5Y2ZlOGRhYy4u
YmExYzM0NTcgMTAwNjQ0Cj4gLS0tIGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2RlbnRy
eS5oCj4gKysrIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2RlbnRyeS5oCj4gQEAgLTM2
LDggKzM2LDggQEAKPiAgICNpZm5kZWYgX09TVl9ERU5UUllfSAo+ICAgI2RlZmluZSBfT1NWX0RF
TlRSWV9IIDEKPiAgIAo+IC0jaW5jbHVkZSA8b3N2L211dGV4Lmg+Cj4gLSNpbmNsdWRlIDxic2Qv
c3lzL3N5cy9xdWV1ZS5oPgo+ICsjaW5jbHVkZSA8dWsvbXV0ZXguaD4KPiArI2luY2x1ZGUgPHVr
L2xpc3QuaD4KPiAgIAo+ICAgc3RydWN0IHZub2RlOwo+ICAgCj4gZGlmZiAtLWdpdCBhL2xpYi92
ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9maWxlLmggYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2Nv
cmUvZmlsZS5oCj4gaW5kZXggOTk4NTcwNmYuLjczODcyNjVkIDEwMDY0NAo+IC0tLSBhL2xpYi92
ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9maWxlLmgKPiArKysgYi9saWIvdmZzY29yZS9pbmNsdWRl
L3Zmc2NvcmUvZmlsZS5oCj4gQEAgLTM4LDYgKzM4LDcgQEAKPiAgIAo+ICAgI2luY2x1ZGUgPHN0
ZGludC5oPgo+ICAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgo+ICsjaW5jbHVkZSA8dmZzY29yZS9k
ZW50cnkuaD4KPiAgIAo+ICAgI2lmZGVmIF9fY3BsdXNwbHVzCj4gICBleHRlcm4gIkMiIHsKPiBk
aWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmggYi9saWIvdmZz
Y29yZS9pbmNsdWRlL3Zmc2NvcmUvbW91bnQuaAo+IGluZGV4IGI2OGQzYzk4Li5lMTJhMTAzOSAx
MDA2NDQKPiAtLS0gYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvbW91bnQuaAo+ICsrKyBi
L2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9tb3VudC5oCj4gQEAgLTMyLDEwICszMiwxMCBA
QAo+ICAgI2lmbmRlZiBfU1lTX01PVU5UX0hfCj4gICAjZGVmaW5lIF9TWVNfTU9VTlRfSF8KPiAg
IAo+IC0jaW5jbHVkZSA8c3lzL2NkZWZzLmg+Cj4gICAjaW5jbHVkZSA8c3lzL3N0YXRmcy5oPgo+
IC0jaW5jbHVkZSA8b3N2L3Zub2RlLmg+Cj4gLSNpbmNsdWRlIDxic2Qvc3lzL3N5cy9xdWV1ZS5o
Pgo+ICsjaW5jbHVkZSA8bGltaXRzLmg+Cj4gKyNpbmNsdWRlIDx1ay9saXN0Lmg+Cj4gKyNpbmNs
dWRlIDx2ZnNjb3JlL3Zub2RlLmg+Cj4gICAKPiAgICNpZmRlZiBfS0VSTkVMCj4gICAKPiBkaWZm
IC0tZ2l0IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3ByZXguaCBiL2xpYi92ZnNjb3Jl
L2luY2x1ZGUvdmZzY29yZS9wcmV4LmgKPiBpbmRleCA2Y2JlMzEzMC4uOGEzMDZkNTQgMTAwNjQ0
Cj4gLS0tIGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3ByZXguaAo+ICsrKyBiL2xpYi92
ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9wcmV4LmgKPiBAQCAtMzgsNyArMzgsNiBAQAo+ICAgCj4g
ICAKPiAgICNpbmNsdWRlIDx1bmlzdGQuaD4KPiAtI2luY2x1ZGUgPG9zdi9mY250bC5oPgo+ICAg
Cj4gICAjZGVmaW5lCUJTSVpFCTUxMgkJLyogc2l6ZSBvZiBzZWNvbmRhcnkgYmxvY2sgKGJ5dGVz
KSAqLwo+ICAgCj4gZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS91aW8u
aCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS91aW8uaAo+IGluZGV4IGQ3ZjdmY2U5Li44
YWQxZTNmYiAxMDA2NDQKPiAtLS0gYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdWlvLmgK
PiArKysgYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdWlvLmgKPiBAQCAtMzMsNyArMzMs
NiBAQAo+ICAgI2lmbmRlZiBfVUlPX0hfCj4gICAjZGVmaW5lCV9VSU9fSF8KPiAgIAo+IC0jaW5j
bHVkZSA8c3lzL2NkZWZzLmg+Cj4gICAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Cj4gICAjaW5jbHVk
ZSA8c3lzL3Vpby5oPgo+ICAgI2luY2x1ZGUgPGxpbWl0cy5oPgo+IGRpZmYgLS1naXQgYS9saWIv
dmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUuaCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZz
Y29yZS92bm9kZS5oCj4gaW5kZXggZDMwYTk0MTEuLjQ5ZmQ0ZDM2IDEwMDY0NAo+IC0tLSBhL2xp
Yi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5oCj4gKysrIGIvbGliL3Zmc2NvcmUvaW5j
bHVkZS92ZnNjb3JlL3Zub2RlLmgKPiBAQCAtMzUsMTMgKzM1LDE0IEBACj4gICAKPiAgICNpZmRl
ZiBfS0VSTkVMCj4gICAKPiAtI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgo+ICAgI2luY2x1ZGUgPHN5
cy9zdGF0Lmg+Cj4gLSNpbmNsdWRlIDxvc3YvcHJleC5oPgo+IC0jaW5jbHVkZSA8b3N2L3Vpby5o
Pgo+IC0jaW5jbHVkZSA8b3N2L211dGV4Lmg+Cj4gLSNpbmNsdWRlICJmaWxlLmgiCj4gLSNpbmNs
dWRlICJkaXJlbnQuaCIKPiArI2luY2x1ZGUgPGRpcmVudC5oPgo+ICsKPiArI2luY2x1ZGUgPHVr
L211dGV4Lmg+Cj4gKyNpbmNsdWRlIDx1ay9saXN0Lmg+Cj4gKyNpbmNsdWRlIDx0aW1lLmg+Cj4g
KyNpbmNsdWRlIDx2ZnNjb3JlL3Vpby5oPgo+ICsjaW5jbHVkZSA8dmZzY29yZS9kZW50cnkuaD4K
PiAgIAo+ICAgc3RydWN0IHZmc29wczsKPiAgIHN0cnVjdCB2bm9wczsKPiBkaWZmIC0tZ2l0IGEv
bGliL3Zmc2NvcmUvbG9va3VwLmMgYi9saWIvdmZzY29yZS9sb29rdXAuYwo+IGluZGV4IGY3YTM4
YzRmLi45ODM3ZTgxZiAxMDA2NDQKPiAtLS0gYS9saWIvdmZzY29yZS9sb29rdXAuYwo+ICsrKyBi
L2xpYi92ZnNjb3JlL2xvb2t1cC5jCj4gQEAgLTM2LDggKzM2LDggQEAKPiAgICNpbmNsdWRlIDxz
dGRsaWIuaD4KPiAgICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KPiAgIAo+IC0jaW5jbHVkZSA8b3N2
L2RlbnRyeS5oPgo+IC0jaW5jbHVkZSA8b3N2L3Zub2RlLmg+Cj4gKyNpbmNsdWRlIDx2ZnNjb3Jl
L2RlbnRyeS5oPgo+ICsjaW5jbHVkZSA8dmZzY29yZS92bm9kZS5oPgo+ICAgI2luY2x1ZGUgInZm
cy5oIgo+ICAgCj4gICBzdGF0aWMgc3NpemVfdAo+IGRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9t
YWluLmMgYi9saWIvdmZzY29yZS9tYWluLmMKPiBpbmRleCA3NDg3NmRjMS4uOTBkZjNkNzEgMTAw
NjQ0Cj4gLS0tIGEvbGliL3Zmc2NvcmUvbWFpbi5jCj4gKysrIGIvbGliL3Zmc2NvcmUvbWFpbi5j
Cj4gQEAgLTMwLDUzICszMCwyMyBAQAo+ICAgICogU1VDSCBEQU1BR0UuCj4gICAgKi8KPiAgIAo+
IC0jaW5jbHVkZSA8c3lzL3BhcmFtLmg+Cj4gKyNkZWZpbmUgX0dOVV9TT1VSQ0UKPiArCj4gICAj
aW5jbHVkZSA8c3lzL3N0YXR2ZnMuaD4KPiAgICNpbmNsdWRlIDxzeXMvc3RhdC5oPgo+IC0jaW5j
bHVkZSA8c3lzL3RpbWUuaD4KPiAtI2luY2x1ZGUgPHN5cy9zZW5kZmlsZS5oPgo+IC0KPiAgICNp
bmNsdWRlIDxsaW1pdHMuaD4KPiAtI2luY2x1ZGUgPHVuaXN0ZC5oPgo+IC0jaW5jbHVkZSA8c3Rk
aW8uaD4KPiAtI2luY2x1ZGUgPHN0ZGludC5oPgo+IC0jaW5jbHVkZSA8c3RkbGliLmg+Cj4gICAj
aW5jbHVkZSA8c3RyaW5nLmg+Cj4gICAjaW5jbHVkZSA8ZXJybm8uaD4KPiAtI2luY2x1ZGUgPHNp
Z25hbC5oPgo+IC0jZGVmaW5lIG9wZW4gX19vcGVuX3ZhcmlhZGljCj4gLSNkZWZpbmUgZmNudGwg
X19mY250bF92YXJpYWRpYwo+ICAgI2luY2x1ZGUgPGZjbnRsLmg+Cj4gLSN1bmRlZiBvcGVuCj4g
LSN1bmRlZiBmY250bAo+IC0KPiAtI2luY2x1ZGUgPG9zdi9wcmV4Lmg+Cj4gLSNpbmNsdWRlIDxv
c3Yvdm5vZGUuaD4KPiAtI2luY2x1ZGUgPG9zdi9zdHViYmluZy5oaD4KPiAtI2luY2x1ZGUgPG9z
di9pb2N0bC5oPgo+IC0jaW5jbHVkZSA8b3N2L3RyYWNlLmhoPgo+IC0jaW5jbHVkZSA8b3N2L3J1
bi5oaD4KPiAtI2luY2x1ZGUgPGRyaXZlcnMvY29uc29sZS5oaD4KPiAtCj4gKyNpbmNsdWRlIDx2
ZnNjb3JlL3ByZXguaD4KPiArI2luY2x1ZGUgPHZmc2NvcmUvdm5vZGUuaD4KPiAgICNpbmNsdWRl
ICJ2ZnMuaCIKPiAtCj4gLSNpbmNsdWRlICJsaWJjL2ludGVybmFsL2xpYmMuaCIKPiAtCj4gLSNp
bmNsdWRlIDxhbGdvcml0aG0+Cj4gLSNpbmNsdWRlIDx1bm9yZGVyZWRfbWFwPgo+IC0KPiAgICNp
bmNsdWRlIDxzeXMvZmlsZS5oPgo+IC0KPiAtI2luY2x1ZGUgImZzL2ZzLmhoIgo+IC0jaW5jbHVk
ZSAibGliYy9saWJjLmhoIgo+IC0KPiAtI2luY2x1ZGUgPG1udGVudC5oPgo+IC0jaW5jbHVkZSA8
c3lzL21tYW4uaD4KPiAtCj4gLSNpbmNsdWRlIDxvc3YvY2xvY2suaGg+Cj4gLSNpbmNsdWRlIDxh
cGkvdXRpbWUuaD4KPiAtI2luY2x1ZGUgPGNocm9ubz4KPiAtCj4gKyNpbmNsdWRlIDxzdGRhcmcu
aD4KPiArI2luY2x1ZGUgPHZmc2NvcmUvZmlsZS5oPgo+ICsjaW5jbHVkZSA8dmZzY29yZS9tb3Vu
dC5oPgo+ICsjaW5jbHVkZSA8dmZzY29yZS9mcy5oPgo+ICsjaW5jbHVkZSA8dWsvZXJycHRyLmg+
Cj4gICAKPiAgICNpZmRlZiBERUJVR19WRlMKPiAgIGludAl2ZnNfZGVidWcgPSBWRlNEQl9GTEFH
UzsKPiBkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvbW91bnQuYyBiL2xpYi92ZnNjb3JlL21vdW50
LmMKPiBpbmRleCAxMGMyN2ZhZC4uMDY5MjJmZmIgMTAwNjQ0Cj4gLS0tIGEvbGliL3Zmc2NvcmUv
bW91bnQuYwo+ICsrKyBiL2xpYi92ZnNjb3JlL21vdW50LmMKPiBAQCAtMzQsMjcgKzM0LDIyIEBA
Cj4gICAgKiB2ZnNfbW91bnQuYyAtIG1vdW50IG9wZXJhdGlvbnMKPiAgICAqLwo+ICAgCj4gLSNp
bmNsdWRlIDxzeXMvc3RhdC5oPgo+ICAgI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgo+IC0jaW5jbHVk
ZSA8ZGlyZW50Lmg+Cj4gLQo+ICAgI2luY2x1ZGUgPGxpbWl0cy5oPgo+ICAgI2luY2x1ZGUgPHVu
aXN0ZC5oPgo+ICAgI2luY2x1ZGUgPHN0ZGxpYi5oPgo+ICAgI2luY2x1ZGUgPHN0cmluZy5oPgo+
ICAgI2luY2x1ZGUgPHN0ZGlvLmg+Cj4gICAjaW5jbHVkZSA8ZXJybm8uaD4KPiAtI2luY2x1ZGUg
PGZjbnRsLmg+Cj4gLQo+IC0jaW5jbHVkZSA8b3N2L3ByZXguaD4KPiAtI2luY2x1ZGUgPG9zdi92
bm9kZS5oPgo+IC0jaW5jbHVkZSA8b3N2L2RldmljZS5oPgo+IC0jaW5jbHVkZSA8b3N2L2RlYnVn
Lmg+Cj4gLSNpbmNsdWRlIDxvc3YvbXV0ZXguaD4KPiAgICNpbmNsdWRlICJ2ZnMuaCIKPiAtCj4g
LSNpbmNsdWRlIDxtZW1vcnk+Cj4gLSNpbmNsdWRlIDxsaXN0Pgo+ICsjaW5jbHVkZSA8c3lzL3R5
cGVzLmg+Cj4gKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgo+ICsjaW5jbHVkZSA8dGltZS5oPgo+ICsj
aW5jbHVkZSA8dWsvbGlzdC5oPgo+ICsjaW5jbHVkZSA8dWsvbXV0ZXguaD4KPiArI2luY2x1ZGUg
PHZmc2NvcmUvcHJleC5oPgo+ICsjaW5jbHVkZSA8dmZzY29yZS9kZW50cnkuaD4KPiArI2luY2x1
ZGUgPHZmc2NvcmUvdm5vZGUuaD4KPiAgIAo+ICAgLyoKPiAgICAqIExpc3QgZm9yIFZGUyBtb3Vu
dCBwb2ludHMuCj4gZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3N0ZGlvLmMgYi9saWIvdmZzY29y
ZS9zdGRpby5jCj4gaW5kZXggYTliZGZkNjEuLjdkNzQ5NDQyIDEwMDY0NAo+IC0tLSBhL2xpYi92
ZnNjb3JlL3N0ZGlvLmMKPiArKysgYi9saWIvdmZzY29yZS9zdGRpby5jCj4gQEAgLTM0LDkgKzM0
LDEyIEBACj4gICAgKi8KPiAgIAo+ICAgI2luY2x1ZGUgPHZmc2NvcmUvZmlsZS5oPgo+ICsjaW5j
bHVkZSA8dmZzY29yZS9mcy5oPgo+ICAgI2luY2x1ZGUgPHVrL3BsYXQvY29uc29sZS5oPgo+ICAg
I2luY2x1ZGUgPHVrL2Vzc2VudGlhbHMuaD4KPiAgICNpbmNsdWRlIDx0ZXJtaW9zLmg+Cj4gKyNp
bmNsdWRlIDx2ZnNjb3JlL3Zub2RlLmg+Cj4gKyNpbmNsdWRlIDx1bmlzdGQuaD4KPiAgIAo+ICAg
LyogT25lIGZ1bmN0aW9uIGZvciBzdGRlcnIgYW5kIHN0ZG91dCAqLwo+ICAgc3RhdGljIHNzaXpl
X3Qgc3Rkb3V0X3dyaXRlKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKnZmc2NvcmVfZmlsZSBfX3VudXNl
ZCwKPiBkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvc3Vicl91aW8uYyBiL2xpYi92ZnNjb3JlL3N1
YnJfdWlvLmMKPiBpbmRleCA4Mjc2ZDZkNC4uYmJjYTMzNjIgMTAwNjQ0Cj4gLS0tIGEvbGliL3Zm
c2NvcmUvc3Vicl91aW8uYwo+ICsrKyBiL2xpYi92ZnNjb3JlL3N1YnJfdWlvLmMKPiBAQCAtMzks
MTEgKzM5LDExIEBACj4gICAgKglAKCMpa2Vybl9zdWJyLmMJOC4zIChCZXJrZWxleSkgMS8yMS85
NAo+ICAgICovCj4gICAKPiAtI2luY2x1ZGUgPGFzc2VydC5oPgo+ICsjaW5jbHVkZSA8dWsvYXNz
ZXJ0Lmg+Cj4gICAjaW5jbHVkZSA8ZXJybm8uaD4KPiAgICNpbmNsdWRlIDxzdGRsaWIuaD4KPiAg
ICNpbmNsdWRlIDxzdHJpbmcuaD4KPiAtI2luY2x1ZGUgPG9zdi91aW8uaD4KPiArI2luY2x1ZGUg
PHZmc2NvcmUvdWlvLmg+Cj4gICAKPiAgIGludAo+ICAgdWlvbW92ZSh2b2lkICpjcCwgaW50IG4s
IHN0cnVjdCB1aW8gKnVpbykKPiBkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvc3lzY2FsbHMuYyBi
L2xpYi92ZnNjb3JlL3N5c2NhbGxzLmMKPiBpbmRleCA0ZTU1MzM3Zi4uZjUwZmIzOGYgMTAwNjQ0
Cj4gLS0tIGEvbGliL3Zmc2NvcmUvc3lzY2FsbHMuYwo+ICsrKyBiL2xpYi92ZnNjb3JlL3N5c2Nh
bGxzLmMKPiBAQCAtMzUsNyArMzUsOCBAQAo+ICAgICogICAgICAgICAgICAgICAgICBhIFZGUyBz
eXN0ZW0gY2FsbC4KPiAgICAqLwo+ICAgCj4gLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgo+ICsjZGVm
aW5lIF9CU0RfU09VUkNFCj4gKyNkZWZpbmUgX0dOVV9TT1VSQ0UKPiAgICNpbmNsdWRlIDxkaXJl
bnQuaD4KPiAgIAo+ICAgI2luY2x1ZGUgPGxpbWl0cy5oPgo+IEBAIC00NiwxMSArNDcsMTIgQEAK
PiAgICNpbmNsdWRlIDxlcnJuby5oPgo+ICAgI2luY2x1ZGUgPGZjbnRsLmg+Cj4gICAKPiAtI2lu
Y2x1ZGUgPG9zdi9wcmV4Lmg+Cj4gLSNpbmNsdWRlIDxvc3Yvdm5vZGUuaD4KPiAtI2luY2x1ZGUg
PG9zdi92ZnNfZmlsZS5oaD4KPiArI2luY2x1ZGUgPHZmc2NvcmUvcHJleC5oPgo+ICsjaW5jbHVk
ZSA8dmZzY29yZS92bm9kZS5oPgo+ICsjaW5jbHVkZSA8dmZzY29yZS9maWxlLmg+Cj4gKwo+ICAg
I2luY2x1ZGUgInZmcy5oIgo+IC0jaW5jbHVkZSA8ZnMvZnMuaGg+Cj4gKyNpbmNsdWRlIDx2ZnNj
b3JlL2ZzLmg+Cj4gICAKPiAgIGV4dGVybiBzdHJ1Y3QgdGFzayAqbWFpbl90YXNrOwo+ICAgCj4g
ZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3Rhc2suYyBiL2xpYi92ZnNjb3JlL3Rhc2suYwo+IGlu
ZGV4IDRjZWIxMjNiLi43NjM1YmQ3YSAxMDA2NDQKPiAtLS0gYS9saWIvdmZzY29yZS90YXNrLmMK
PiArKysgYi9saWIvdmZzY29yZS90YXNrLmMKPiBAQCAtNDEsNyArNDEsNyBAQAo+ICAgI2luY2x1
ZGUgPHN0ZGlvLmg+Cj4gICAjaW5jbHVkZSA8ZXJybm8uaD4KPiAgIAo+IC0jaW5jbHVkZSA8b3N2
L3ByZXguaD4KPiArI2luY2x1ZGUgPHZmc2NvcmUvcHJleC5oPgo+ICAgI2luY2x1ZGUgInZmcy5o
Igo+ICAgCj4gICAKPiBkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvdmZzLmggYi9saWIvdmZzY29y
ZS92ZnMuaAo+IGluZGV4IGNkOTQwOTc5Li4yNTMxZjczMCAxMDA2NDQKPiAtLS0gYS9saWIvdmZz
Y29yZS92ZnMuaAo+ICsrKyBiL2xpYi92ZnNjb3JlL3Zmcy5oCj4gQEAgLTMzLDI0ICszMywxMiBA
QAo+ICAgI2lmbmRlZiBfVkZTX0gKPiAgICNkZWZpbmUgX1ZGU19ICj4gICAKPiAtI2luY2x1ZGUg
PHN5cy9jZGVmcy5oPgo+IC0jaW5jbHVkZSA8YXNzZXJ0Lmg+Cj4gLSNpbmNsdWRlIDxkaXJlbnQu
aD4KPiAtI2luY2x1ZGUgPGxpbWl0cy5oPgo+IC0KPiAtI2luY2x1ZGUgPG9zdi9wcmV4Lmg+Cj4g
LSNpbmNsdWRlIDxvc3YvZmlsZS5oPgo+IC0jaW5jbHVkZSA8b3N2L21vdW50Lmg+Cj4gLSNpbmNs
dWRlIDxvc3Yvdm5vZGUuaD4KPiAtI2luY2x1ZGUgPG9zdi9kZW50cnkuaD4KPiAtI2luY2x1ZGUg
PG9zdi9lcnJvci5oPgo+IC0KPiAtLyoKPiAtICogSW1wb3J0IHZub2RlIGF0dHJpYnV0ZXMgZmxh
Z3MKPiAtICovCj4gLSNpbmNsdWRlIDxvc3Yvdm5vZGVfYXR0ci5oPgo+ICsjZGVmaW5lIF9HTlVf
U09VUkNFCj4gKyNpbmNsdWRlIDx2ZnNjb3JlL21vdW50Lmg+Cj4gICAKPiAtLyogI2RlZmluZSBE
RUJVR19WRlMgMSAqLwo+ICsjaW5jbHVkZSA8bGltaXRzLmg+Cj4gKyNpbmNsdWRlIDxmY250bC5o
Pgo+ICsjaW5jbHVkZSA8c3lzL3N0YXRmcy5oPgo+ICAgCj4gICAvKgo+ICAgICogVHVuYWJsZSBw
YXJhbWV0ZXJzCj4gQEAgLTU4LDcgKzQ2LDYgQEAKPiAgICNkZWZpbmUgRlNNQVhOQU1FUwkxNgkJ
LyogbWF4IGxlbmd0aCBvZiAnZmlsZSBzeXN0ZW0nIG5hbWUgKi8KPiAgIAo+ICAgI2lmZGVmIERF
QlVHX1ZGUwo+IC0jaW5jbHVkZSA8b3N2L2RlYnVnLmg+Cj4gICAKPiAgIGV4dGVybiBpbnQgdmZz
X2RlYnVnOwo+ICAgCj4gZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3Zub2RlLmMgYi9saWIvdmZz
Y29yZS92bm9kZS5jCj4gaW5kZXggZjU2NDU3N2YuLjgxZjc4YmU4IDEwMDY0NAo+IC0tLSBhL2xp
Yi92ZnNjb3JlL3Zub2RlLmMKPiArKysgYi9saWIvdmZzY29yZS92bm9kZS5jCj4gQEAgLTM2LDE0
ICszNiwxNiBAQAo+ICAgCj4gICAjaW5jbHVkZSA8bGltaXRzLmg+Cj4gICAjaW5jbHVkZSA8dW5p
c3RkLmg+Cj4gKyNpbmNsdWRlIDxzdGRpbnQuaD4KPiAgICNpbmNsdWRlIDxzdHJpbmcuaD4KPiAg
ICNpbmNsdWRlIDxzdGRsaWIuaD4KPiAgICNpbmNsdWRlIDxzdGRpby5oPgo+ICAgI2luY2x1ZGUg
PGVycm5vLmg+Cj4gICAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KPiAgIAo+IC0jaW5jbHVkZSA8b3N2
L3ByZXguaD4KPiAtI2luY2x1ZGUgPG9zdi92bm9kZS5oPgo+ICsjaW5jbHVkZSA8dmZzY29yZS9w
cmV4Lmg+Cj4gKyNpbmNsdWRlIDx2ZnNjb3JlL2RlbnRyeS5oPgo+ICsjaW5jbHVkZSA8dmZzY29y
ZS92bm9kZS5oPgo+ICAgI2luY2x1ZGUgInZmcy5oIgo+ICAgCj4gICBlbnVtIHZ0eXBlIGlmdG92
dF90YWJbMTZdID0gewo+IAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVu
cHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZv
L21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Thu Feb 07 13:59:37 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 07 Feb 2019 13:59:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grkDH-0006Rn-TI; Thu, 07 Feb 2019 13:59:35 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=CXnx=QO=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1grkDG-0006Ri-4q
 for minios-devel@lists.xen.org; Thu, 07 Feb 2019 13:59:34 +0000
X-Inumbo-ID: 9763e267-2ae0-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 9763e267-2ae0-11e9-bc90-bc764e045a96;
 Thu, 07 Feb 2019 13:59:31 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id D7624F205F;
 Thu,  7 Feb 2019 14:59:30 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id r7Lm3gvlcA2R; Thu,  7 Feb 2019 14:59:30 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id AEC37F202D
 for <minios-devel@lists.xen.org>; Thu,  7 Feb 2019 14:59:28 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Thu, 7 Feb 2019 14:59:28 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Thu, 7 Feb 2019 14:58:38 +0100
Message-ID: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v3 00/23]   import vfs from OSv
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhpcyBzZXJpZXMgaXMgYW4gaW5pdGlhbCBpbXBvcnQuIEkgdHJ5aWVkIHRvIGtlZXAgYW1tb3Vu
dCBvZgptb2RpZmljYXRpb25zIHNtYWxsLiBBbmQgZmFpbGVkLgoKU2VyaWVzIGhhcyBhIGxvdCBv
ZiBzdHlsZSBwcm9ibGVtcy4gQnV0IGZpeGluZyBzdHlsZSB3b3VsZCBibG93IGl0CmV2ZW4gbW9y
ZS4gSSB3aWxsIHByb3ZpZGUgZm9sbG93LXVwcyBjbGVhbmluZyB1cCB0aGlzIG1lc3MuCgpBbmQg
c29ycnkgZm9yIHRoZSBwYXRjaCBzaXplcy4gQXQgbGVhc3QgdGhlc2UgaHVnZSBwYXRjaGVzIGNv
bnRhaW4gb25seQptZWNoYW5pY2FsIG1vZGlmaWNhdGlvbnMgKGUuZy4gbmV3IC0+IG1hbGxvYywg
ZGVsZXRlIC0+IGZyZWUsCnJlcGxhY2luZyBPU3YgZnVuY3Rpb25zIHdpdGggVW5pa3JhZnQgYW5h
bG9ndWVzKS4gSSBob3BlIHRoaXMgaGVscHMuCgpDaGFuZ2VzIHNpbmNlIHYxOgogLSByZWJhc2Ug
dG8gdGhlIGN1cnJlbnQgInN0YWdpbmciIGJyYW5jaAogLSB1cGRhdGUgbGljZW5zZSBoZWFkZXJz
KioqIFNVQkpFQ1QgSEVSRSAqKioKCkNoYW5nZXMgc2luY2UgdjI6CiAtIGFkZCB1bmxpbmsgdG8g
ZXhwb3J0cyBhbmQgdG8gbm9saWJjIHByb3RvdHlwZXMKIC0gYWRkIG5vdGUgYWJvdXQgd2VhayBh
bGlhcyBhbmQgTFRPCiAtIGZpeCBjb21waWxhdGlvbiBwcm9ibGVtcyBpbiB0aGUgbWlkZGxlIG9m
IHRoZSBzZXJpZXMKCll1cmkgVm9sY2hrb3YgKDIzKToKICBpbmNsdWRlL3VrOiBpbnRyb2R1Y2Ug
X193ZWFrX2FsaWFzIG1hY3JvCiAgbGliL25vbGliYzogaW1wb3J0IG1vdW50LmgKICBsaWIvbm9s
aWJjOiBhZGFwdCBtb3VudC5oIHRvIFVuaWtyYWZ0CiAgbGliL3Zmc2NvcmU6IEluaXRpYWwgaW1w
b3J0IG9mIE9TdiB2ZnMKICBsaWIvdmZzY29yZTogdGFiaWZ5IGltcG9ydGVkIHZmcyBjb2RlCiAg
bGliL3Zmc2NvcmU6IHVwZGF0ZSBsaWNlbnNlIGhlYWRlciBmb3IgaW1wb3J0ZWQgZmlsZXMKICBs
aWIvdmZzY29yZTogcmVtb3ZlIG9idmlvdXMgYysraXNtcyBhbmQgaXJyZWxldmFudCBjb2RlCiAg
bGliL3Zmc2NvcmU6IHVzZSBVbmlrcmFmdCBpbmNsdWRlcwogIGxpYi92ZnNjb3JlOiB1c2UgVW5p
a3JhZnQgdHlwZXMgYW5kIGZ1bmN0aW9ucwogIGxpYi92ZnNjb3JlOiBhZGQgdXRpbGl0eSBmdW5j
cyZkZWZzIHRvIHN1cHBvcnQgaW1wb3J0ZWQKICBsaWIvdmZzY29yZTogaW50cm9kdWNlIFVLX0ZT
X1JFR0lTVEVSCiAgbGliL3Zmc2NvcmU6IHByZWZpeCBleHBvcnRlZCBmdW5jdGlvbnMKICBsaWIv
dmZzY29yZTogaW50cm9kdWNlIGZnZXQsIGZkcm9wLCBmZGFsbG9jCiAgbGliL3Zmc2NvcmU6IGtl
ZXAgdm5vZGUgbG9ja2VkIGR1cmluZyBkcmVsZSBjYWxsCiAgbGliL3Zmc2NvcmU6IGFkZCBuZWNl
c3NhcnkgZmllbGQgaW4gdmZzY29yZV9maWxlCiAgbGliL3Zmc2NvcmU6IHJlbW92ZSBfS0VSTkVM
IGlmZGVmcwogIGxpYi92ZnNjb3JlOiBpbnRyb2R1Y2UgZmRjbG9zZQogIGxpYi92ZnNjb3JlOiBh
ZGQgbmVjZXNzYXJ5IGludGVybmFsIHByb3RvdHlwZXMKICBsaWIvdmZzY29yZTogZml4IGNvbXBp
bGVyIGNvbXBsYWlucwogIGxpYi92ZnNjb3JlOiBhZGQgbWFpbiBjb25zdHJ1Y3RvcgogIGxpYi9u
b2xpYmM6IGFkZCBwcm90b3R5cGVzIGZvciBmdW5jdGlvbnMgZnJvbSB2ZnNjb3JlCiAgbGliL3Zm
c2NvcmU6IHJlLWltcGxlbWVudCBzdGRpbyBhbmQgZW5hYmxlIG5ldyBjb2RlCiAgbGliL3Zmc2Nv
cmU6IHJlbW92ZSBzeXMgcHJlZml4IGZyb20gdmZzIGFwaSBmdW5jdGlvbnMKCiBpbmNsdWRlL3Vr
L2Vzc2VudGlhbHMuaCAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEwICsKIGxpYi9ub2xpYmMv
aW5jbHVkZS9zeXMvbW91bnQuaCAgICAgICAgICAgICAgICB8ICAxMDkgKwogbGliL25vbGliYy9p
bmNsdWRlL3N5cy91aW8uaCAgICAgICAgICAgICAgICAgIHwgICAzNSArCiBsaWIvbm9saWJjL2lu
Y2x1ZGUvdW5pc3RkLmggICAgICAgICAgICAgICAgICAgfCAgICA2ICsKIGxpYi92ZnNjb3JlL0Nv
bmZpZy51ayAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogbGliL3Zmc2NvcmUvTWFr
ZWZpbGUudWsgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMSArCiBsaWIvdmZzY29yZS9kZW50
cnkuYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMjM2ICsrCiBsaWIvdmZzY29yZS9leHBv
cnRzeW1zLnVrICAgICAgICAgICAgICAgICAgICAgfCAgIDI3ICsKIGxpYi92ZnNjb3JlL2V4dHJh
LmxkICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDkgKwogbGliL3Zmc2NvcmUvZmQuYyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA2NyArLQogbGliL3Zmc2NvcmUvZmlsZS5j
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA2MSArLQogbGliL3Zmc2NvcmUvZm9wcy5j
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE0MCArKwogLi4uL2luY2x1ZGUvdmZzY29y
ZS9kZW50cnkuaH0gICAgICAgICAgICAgICAgIHwgICA0NCArLQogbGliL3Zmc2NvcmUvaW5jbHVk
ZS92ZnNjb3JlL2ZpbGUuaCAgICAgICAgICAgIHwgICAxNyArLQogbGliL3Zmc2NvcmUvaW5jbHVk
ZS92ZnNjb3JlL2ZzLmggICAgICAgICAgICAgIHwgICAyOCArCiBsaWIvdmZzY29yZS9pbmNsdWRl
L3Zmc2NvcmUvbW91bnQuaCAgICAgICAgICAgfCAgMTQ1ICsrCiAuLi4vaW5jbHVkZS92ZnNjb3Jl
L3ByZXguaH0gICAgICAgICAgICAgICAgICAgfCAgIDQwICstCiBsaWIvdmZzY29yZS9pbmNsdWRl
L3Zmc2NvcmUvdWlvLmggICAgICAgICAgICAgfCAgIDYyICsKIGxpYi92ZnNjb3JlL2luY2x1ZGUv
dmZzY29yZS92bm9kZS5oICAgICAgICAgICB8ICAyNjMgKysrCiBsaWIvdmZzY29yZS9sb29rdXAu
YyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMzc1ICsrKwogbGliL3Zmc2NvcmUvbWFpbi5j
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjA1OCArKysrKysrKysrKysrKysrKwogbGli
L3Zmc2NvcmUvbW91bnQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQ5NCArKysrCiBs
aWIvdmZzY29yZS9zdGRpby5jICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDczICstCiBs
aWIvdmZzY29yZS9zdWJyX3Vpby5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDc4ICsKIGxp
Yi92ZnNjb3JlL3N5c2NhbGxzLmMgICAgICAgICAgICAgICAgICAgICAgICB8IDE1MTIgKysrKysr
KysrKysrCiBsaWIvdmZzY29yZS90YXNrLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg
MTU0ICsrCiBsaWIvdmZzY29yZS92ZnMuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg
MTY5ICsrCiBsaWIvdmZzY29yZS92bm9kZS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg
NTMwICsrKysrCiAyOCBmaWxlcyBjaGFuZ2VkLCA2NjI2IGluc2VydGlvbnMoKyksIDEyOCBkZWxl
dGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvbm9saWJjL2luY2x1ZGUvc3lzL21vdW50
LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdmZzY29yZS9kZW50cnkuYwogY3JlYXRlIG1vZGUg
MTAwNjQ0IGxpYi92ZnNjb3JlL2V4dHJhLmxkCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3Zmc2Nv
cmUvZm9wcy5jCiBjb3B5IGxpYi97bm9saWJjL2luY2x1ZGUvdW5pc3RkLmggPT4gdmZzY29yZS9p
bmNsdWRlL3Zmc2NvcmUvZGVudHJ5Lmh9ICg3MCUpCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3Zm
c2NvcmUvaW5jbHVkZS92ZnNjb3JlL2ZzLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdmZzY29y
ZS9pbmNsdWRlL3Zmc2NvcmUvbW91bnQuaAogY29weSBsaWIve25vbGliYy9pbmNsdWRlL3VuaXN0
ZC5oID0+IHZmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3ByZXguaH0gKDc1JSkKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdWlvLmgKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUuaAogY3JlYXRlIG1vZGUgMTAw
NjQ0IGxpYi92ZnNjb3JlL2xvb2t1cC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3Zmc2NvcmUv
bWFpbi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3Zmc2NvcmUvbW91bnQuYwogY3JlYXRlIG1v
ZGUgMTAwNjQ0IGxpYi92ZnNjb3JlL3N1YnJfdWlvLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIv
dmZzY29yZS9zeXNjYWxscy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3Zmc2NvcmUvdGFzay5j
CiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3Zmc2NvcmUvdmZzLmgKIGNyZWF0ZSBtb2RlIDEwMDY0
NCBsaWIvdmZzY29yZS92bm9kZS5jCgotLSAKMi4xOS4yCgoKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5p
b3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9y
Zy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Thu Feb 07 13:59:40 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 07 Feb 2019 13:59:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grkDL-0006TN-Uu; Thu, 07 Feb 2019 13:59:39 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=CXnx=QO=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1grkDK-0006T4-CQ
 for minios-devel@lists.xen.org; Thu, 07 Feb 2019 13:59:38 +0000
X-Inumbo-ID: 9a5ecce0-2ae0-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 9a5ecce0-2ae0-11e9-bc90-bc764e045a96;
 Thu, 07 Feb 2019 13:59:36 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id F1723F205F;
 Thu,  7 Feb 2019 14:59:35 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id Q1ud2LQQgROa; Thu,  7 Feb 2019 14:59:35 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id CB91AF202D
 for <minios-devel@lists.xen.org>; Thu,  7 Feb 2019 14:59:33 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Thu, 7 Feb 2019 14:59:33 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Thu, 7 Feb 2019 14:58:40 +0100
Message-ID: <20190207135901.9122-3-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
References: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v3 02/23] lib/nolibc: import mount.h
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

dGFnOiB2MS4xLjIwCmNvbW1pdDogMGZhMWU2MzhlODdjZjI1N2U5Zjk2YjQwMTliMjA3NmFmZDY3
NGExOQoKU2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIu
ZXU+ClJldmlld2VkLWJ5OiBTaGFyYW4gU2FudGhhbmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xh
Yi5ldT4KLS0tCiBsaWIvbm9saWJjL2luY2x1ZGUvc3lzL21vdW50LmggfCA3NCArKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgNzQgaW5zZXJ0aW9ucygr
KQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9ub2xpYmMvaW5jbHVkZS9zeXMvbW91bnQuaAoKZGlm
ZiAtLWdpdCBhL2xpYi9ub2xpYmMvaW5jbHVkZS9zeXMvbW91bnQuaCBiL2xpYi9ub2xpYmMvaW5j
bHVkZS9zeXMvbW91bnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uNTdh
ODljMDkKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvbm9saWJjL2luY2x1ZGUvc3lzL21vdW50LmgK
QEAgLTAsMCArMSw3NCBAQAorI2lmbmRlZiBfU1lTX01PVU5UX0gKKyNkZWZpbmUgX1NZU19NT1VO
VF9ICisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworI2luY2x1
ZGUgPHN5cy9pb2N0bC5oPgorCisjZGVmaW5lIEJMS1JPU0VUICAgX0lPKDB4MTIsIDkzKQorI2Rl
ZmluZSBCTEtST0dFVCAgIF9JTygweDEyLCA5NCkKKyNkZWZpbmUgQkxLUlJQQVJUICBfSU8oMHgx
MiwgOTUpCisjZGVmaW5lIEJMS0dFVFNJWkUgX0lPKDB4MTIsIDk2KQorI2RlZmluZSBCTEtGTFNC
VUYgIF9JTygweDEyLCA5NykKKyNkZWZpbmUgQkxLUkFTRVQgICBfSU8oMHgxMiwgOTgpCisjZGVm
aW5lIEJMS1JBR0VUICAgX0lPKDB4MTIsIDk5KQorI2RlZmluZSBCTEtGUkFTRVQgIF9JTygweDEy
LDEwMCkKKyNkZWZpbmUgQkxLRlJBR0VUICBfSU8oMHgxMiwxMDEpCisjZGVmaW5lIEJMS1NFQ1RT
RVQgX0lPKDB4MTIsMTAyKQorI2RlZmluZSBCTEtTRUNUR0VUIF9JTygweDEyLDEwMykKKyNkZWZp
bmUgQkxLU1NaR0VUICBfSU8oMHgxMiwxMDQpCisjZGVmaW5lIEJMS0JTWkdFVCAgX0lPUigweDEy
LDExMixzaXplX3QpCisjZGVmaW5lIEJMS0JTWlNFVCAgX0lPVygweDEyLDExMyxzaXplX3QpCisj
ZGVmaW5lIEJMS0dFVFNJWkU2NCBfSU9SKDB4MTIsMTE0LHNpemVfdCkKKworI2RlZmluZSBNU19S
RE9OTFkgICAgICAxCisjZGVmaW5lIE1TX05PU1VJRCAgICAgIDIKKyNkZWZpbmUgTVNfTk9ERVYg
ICAgICAgNAorI2RlZmluZSBNU19OT0VYRUMgICAgICA4CisjZGVmaW5lIE1TX1NZTkNIUk9OT1VT
IDE2CisjZGVmaW5lIE1TX1JFTU9VTlQgICAgIDMyCisjZGVmaW5lIE1TX01BTkRMT0NLICAgIDY0
CisjZGVmaW5lIE1TX0RJUlNZTkMgICAgIDEyOAorI2RlZmluZSBNU19OT0FUSU1FICAgICAxMDI0
CisjZGVmaW5lIE1TX05PRElSQVRJTUUgIDIwNDgKKyNkZWZpbmUgTVNfQklORCAgICAgICAgNDA5
NgorI2RlZmluZSBNU19NT1ZFICAgICAgICA4MTkyCisjZGVmaW5lIE1TX1JFQyAgICAgICAgIDE2
Mzg0CisjZGVmaW5lIE1TX1NJTEVOVCAgICAgIDMyNzY4CisjZGVmaW5lIE1TX1BPU0lYQUNMICAg
ICgxPDwxNikKKyNkZWZpbmUgTVNfVU5CSU5EQUJMRSAgKDE8PDE3KQorI2RlZmluZSBNU19QUklW
QVRFICAgICAoMTw8MTgpCisjZGVmaW5lIE1TX1NMQVZFICAgICAgICgxPDwxOSkKKyNkZWZpbmUg
TVNfU0hBUkVEICAgICAgKDE8PDIwKQorI2RlZmluZSBNU19SRUxBVElNRSAgICAoMTw8MjEpCisj
ZGVmaW5lIE1TX0tFUk5NT1VOVCAgICgxPDwyMikKKyNkZWZpbmUgTVNfSV9WRVJTSU9OICAgKDE8
PDIzKQorI2RlZmluZSBNU19TVFJJQ1RBVElNRSAoMTw8MjQpCisjZGVmaW5lIE1TX0xBWllUSU1F
ICAgICgxPDwyNSkKKyNkZWZpbmUgTVNfTk9SRU1PVEVMT0NLICgxPDwyNykKKyNkZWZpbmUgTVNf
Tk9TRUMgICAgICAgKDE8PDI4KQorI2RlZmluZSBNU19CT1JOICAgICAgICAoMTw8MjkpCisjZGVm
aW5lIE1TX0FDVElWRSAgICAgICgxPDwzMCkKKyNkZWZpbmUgTVNfTk9VU0VSICAgICAgKDFVPDwz
MSkKKworI2RlZmluZSBNU19STVRfTUFTSyAoTVNfUkRPTkxZfE1TX1NZTkNIUk9OT1VTfE1TX01B
TkRMT0NLfE1TX0lfVkVSU0lPTnxNU19MQVpZVElNRSkKKworI2RlZmluZSBNU19NR0NfVkFMIDB4
YzBlZDAwMDAKKyNkZWZpbmUgTVNfTUdDX01TSyAweGZmZmYwMDAwCisKKyNkZWZpbmUgTU5UX0ZP
UkNFICAgICAgIDEKKyNkZWZpbmUgTU5UX0RFVEFDSCAgICAgIDIKKyNkZWZpbmUgTU5UX0VYUElS
RSAgICAgIDQKKyNkZWZpbmUgVU1PVU5UX05PRk9MTE9XIDgKKworaW50IG1vdW50KGNvbnN0IGNo
YXIgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIHVuc2lnbmVkIGxvbmcsIGNvbnN0IHZv
aWQgKik7CitpbnQgdW1vdW50KGNvbnN0IGNoYXIgKik7CitpbnQgdW1vdW50Mihjb25zdCBjaGFy
ICosIGludCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZgotLSAK
Mi4xOS4yCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
TWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5v
cmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1k
ZXZlbA==

From minios-devel-bounces@lists.xenproject.org Thu Feb 07 13:59:41 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 07 Feb 2019 13:59:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grkDN-0006Tn-0C; Thu, 07 Feb 2019 13:59:41 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=CXnx=QO=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1grkDL-0006TH-P5
 for minios-devel@lists.xen.org; Thu, 07 Feb 2019 13:59:39 +0000
X-Inumbo-ID: 98c98ac2-2ae0-11e9-bb10-13c63ffeec77
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 98c98ac2-2ae0-11e9-bb10-13c63ffeec77;
 Thu, 07 Feb 2019 13:59:34 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 631B2104DA4;
 Thu,  7 Feb 2019 14:59:33 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id aMKRnMyUyT7P; Thu,  7 Feb 2019 14:59:33 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 4395A104DA3
 for <minios-devel@lists.xen.org>; Thu,  7 Feb 2019 14:59:31 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Thu, 7 Feb 2019 14:59:31 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Thu, 7 Feb 2019 14:58:39 +0100
Message-ID: <20190207135901.9122-2-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
References: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v3 01/23] include/uk: introduce
 __weak_alias macro
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogaW5jbHVkZS91ay9lc3NlbnRpYWxzLmggfCAxMCArKysrKysrKysrCiAxIGZpbGUgY2hhbmdl
ZCwgMTAgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWsvZXNzZW50aWFscy5o
IGIvaW5jbHVkZS91ay9lc3NlbnRpYWxzLmgKaW5kZXggM2MxNmUzMDguLjQ3ZTA0ZjdjIDEwMDY0
NAotLS0gYS9pbmNsdWRlL3VrL2Vzc2VudGlhbHMuaAorKysgYi9pbmNsdWRlL3VrL2Vzc2VudGlh
bHMuaApAQCAtNzYsNiArNzYsMTYgQEAgZXh0ZXJuICJDIiB7CiAjaWZuZGVmIF9fYWxpZ24KICNk
ZWZpbmUgX19hbGlnbihieXRlcykgICAgICAgICBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKGJ5dGVz
KSkpCiAjZW5kaWYKKy8qIE5PVEU6IHdlYWsgYWxpYXNpbmcgZG9lcyBub3Qgd29yayB3ZWxsIHdp
dGggbGluay10aW1lIG9wdGltaXphdGlvbgorICogY3VycmVudGx5LiBIb3BlZnVsbHkgdGhpcyB3
aWxsIGJlIGZpeGVkIGluIGdjYyA5LiBUaGUgcHJvYmxlbSBpcywKKyAqIGlmIGEgd2VhayBzeW1i
b2wgaXMgcmVmZXJlbmNlZCBpbiB0aGUgbGlicmFyeSwgZ2NjIHJlc29sdmVzIGNhbGxzCisgKiB0
byB0aGF0IHdlYWsgc3ltYm9sIGR1cmluZyB0aGUgZmlyc3Qgcm91bmQgb2YgbGlua2luZy4gRXZl
biBpZiBhCisgKiBzdHJvbmcgc3ltYm9sIGlzIHByb3ZpZGVkIGluIHRoZSBvdGhlciBsaWJyYXJ5
LgorICovCisjaWZuZGVmIF9fd2Vha19hbGlhcworI2RlZmluZSBfX3dlYWtfYWxpYXMob2xkLCBu
ZXcpIFwKKwlleHRlcm4gX190eXBlb2Yob2xkKSBuZXcgX19hdHRyaWJ1dGVfXygod2VhaywgYWxp
YXMoI29sZCkpKQorI2VuZGlmCiAKIC8qKgogICAqIE1hcmsgYSBmdW5jdGlvbiBhcyBjb25zdHJ1
Y3RvcgotLSAKMi4xOS4yCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVu
cHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZv
L21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Thu Feb 07 13:59:42 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 07 Feb 2019 13:59:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grkDO-0006UC-2h; Thu, 07 Feb 2019 13:59:42 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=CXnx=QO=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1grkDM-0006Th-Kf
 for minios-devel@lists.xen.org; Thu, 07 Feb 2019 13:59:40 +0000
X-Inumbo-ID: 9be0f1e6-2ae0-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 9be0f1e6-2ae0-11e9-bc90-bc764e045a96;
 Thu, 07 Feb 2019 13:59:39 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 8C06F104DA4;
 Thu,  7 Feb 2019 14:59:38 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id rC2vWOkHMjRn; Thu,  7 Feb 2019 14:59:38 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 6A7B9104DA3
 for <minios-devel@lists.xen.org>; Thu,  7 Feb 2019 14:59:36 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Thu, 7 Feb 2019 14:59:36 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Thu, 7 Feb 2019 14:58:41 +0100
Message-ID: <20190207135901.9122-4-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
References: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v3 03/23] lib/nolibc: adapt mount.h
 to Unikraft
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U3R5bGUgcHJvYmxlbXMgYW5kIHByb3BlciBpbmNsdWRlcwoKU2lnbmVkLW9mZi1ieTogWXVyaSBW
b2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+ClJldmlld2VkLWJ5OiBTaGFyYW4gU2Fu
dGhhbmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xhYi5ldT4KLS0tCiBsaWIvbm9saWJjL2luY2x1
ZGUvc3lzL21vdW50LmggfCAzOCArKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCiAx
IGZpbGUgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCgpkaWZmIC0t
Z2l0IGEvbGliL25vbGliYy9pbmNsdWRlL3N5cy9tb3VudC5oIGIvbGliL25vbGliYy9pbmNsdWRl
L3N5cy9tb3VudC5oCmluZGV4IDU3YTg5YzA5Li5hZjg1NWQ2OSAxMDA2NDQKLS0tIGEvbGliL25v
bGliYy9pbmNsdWRlL3N5cy9tb3VudC5oCisrKyBiL2xpYi9ub2xpYmMvaW5jbHVkZS9zeXMvbW91
bnQuaApAQCAtNSwyMyArNSwyMiBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAotI2luY2x1ZGUg
PHN5cy9pb2N0bC5oPgogCi0jZGVmaW5lIEJMS1JPU0VUICAgX0lPKDB4MTIsIDkzKQotI2RlZmlu
ZSBCTEtST0dFVCAgIF9JTygweDEyLCA5NCkKLSNkZWZpbmUgQkxLUlJQQVJUICBfSU8oMHgxMiwg
OTUpCi0jZGVmaW5lIEJMS0dFVFNJWkUgX0lPKDB4MTIsIDk2KQotI2RlZmluZSBCTEtGTFNCVUYg
IF9JTygweDEyLCA5NykKLSNkZWZpbmUgQkxLUkFTRVQgICBfSU8oMHgxMiwgOTgpCi0jZGVmaW5l
IEJMS1JBR0VUICAgX0lPKDB4MTIsIDk5KQotI2RlZmluZSBCTEtGUkFTRVQgIF9JTygweDEyLDEw
MCkKLSNkZWZpbmUgQkxLRlJBR0VUICBfSU8oMHgxMiwxMDEpCi0jZGVmaW5lIEJMS1NFQ1RTRVQg
X0lPKDB4MTIsMTAyKQotI2RlZmluZSBCTEtTRUNUR0VUIF9JTygweDEyLDEwMykKLSNkZWZpbmUg
QkxLU1NaR0VUICBfSU8oMHgxMiwxMDQpCi0jZGVmaW5lIEJMS0JTWkdFVCAgX0lPUigweDEyLDEx
MixzaXplX3QpCi0jZGVmaW5lIEJMS0JTWlNFVCAgX0lPVygweDEyLDExMyxzaXplX3QpCi0jZGVm
aW5lIEJMS0dFVFNJWkU2NCBfSU9SKDB4MTIsMTE0LHNpemVfdCkKKyNkZWZpbmUgQkxLUk9TRVQg
ICAgICBfSU8oMHgxMiwgIDkzKQorI2RlZmluZSBCTEtST0dFVCAgICAgIF9JTygweDEyLCAgOTQp
CisjZGVmaW5lIEJMS1JSUEFSVCAgICAgX0lPKDB4MTIsICA5NSkKKyNkZWZpbmUgQkxLR0VUU0la
RSAgICBfSU8oMHgxMiwgIDk2KQorI2RlZmluZSBCTEtGTFNCVUYgICAgIF9JTygweDEyLCAgOTcp
CisjZGVmaW5lIEJMS1JBU0VUICAgICAgX0lPKDB4MTIsICA5OCkKKyNkZWZpbmUgQkxLUkFHRVQg
ICAgICBfSU8oMHgxMiwgIDk5KQorI2RlZmluZSBCTEtGUkFTRVQgICAgIF9JTygweDEyLCAxMDAp
CisjZGVmaW5lIEJMS0ZSQUdFVCAgICAgX0lPKDB4MTIsIDEwMSkKKyNkZWZpbmUgQkxLU0VDVFNF
VCAgICBfSU8oMHgxMiwgMTAyKQorI2RlZmluZSBCTEtTRUNUR0VUICAgIF9JTygweDEyLCAxMDMp
CisjZGVmaW5lIEJMS1NTWkdFVCAgICAgX0lPKDB4MTIsIDEwNCkKKyNkZWZpbmUgQkxLQlNaR0VU
ICAgIF9JT1IoMHgxMiwgMTEyLCBzaXplX3QpCisjZGVmaW5lIEJMS0JTWlNFVCAgICBfSU9XKDB4
MTIsIDExMywgc2l6ZV90KQorI2RlZmluZSBCTEtHRVRTSVpFNjQgX0lPUigweDEyLCAxMTQsIHNp
emVfdCkKIAogI2RlZmluZSBNU19SRE9OTFkgICAgICAxCiAjZGVmaW5lIE1TX05PU1VJRCAgICAg
IDIKQEAgLTYzLDkgKzYyLDEwIEBAIGV4dGVybiAiQyIgewogI2RlZmluZSBNTlRfRVhQSVJFICAg
ICAgNAogI2RlZmluZSBVTU9VTlRfTk9GT0xMT1cgOAogCi1pbnQgbW91bnQoY29uc3QgY2hhciAq
LCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgdW5zaWduZWQgbG9uZywgY29uc3Qgdm9pZCAq
KTsKLWludCB1bW91bnQoY29uc3QgY2hhciAqKTsKLWludCB1bW91bnQyKGNvbnN0IGNoYXIgKiwg
aW50KTsKK2ludCBtb3VudChjb25zdCBjaGFyICpkZXYsIGNvbnN0IGNoYXIgKmRpciwgY29uc3Qg
Y2hhciAqZnNuYW1lLAorCSAgdW5zaWduZWQgbG9uZyBmbGFncywgY29uc3Qgdm9pZCAqZGF0YSk7
CitpbnQgdW1vdW50KGNvbnN0IGNoYXIgKnBhdGgpOworaW50IHVtb3VudDIoY29uc3QgY2hhciAq
cGF0aCwgaW50IGZsYWdzKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9Ci0tIAoyLjE5LjIKCgpf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2
ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczov
L2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Thu Feb 07 13:59:53 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 07 Feb 2019 13:59:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grkDZ-0006YU-6O; Thu, 07 Feb 2019 13:59:53 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=CXnx=QO=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1grkDX-0006YC-M2
 for minios-devel@lists.xen.org; Thu, 07 Feb 2019 13:59:51 +0000
X-Inumbo-ID: 9db36cab-2ae0-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 9db36cab-2ae0-11e9-bc90-bc764e045a96;
 Thu, 07 Feb 2019 13:59:42 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 82419F205F;
 Thu,  7 Feb 2019 14:59:41 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id xCzMgCLn0tAd; Thu,  7 Feb 2019 14:59:41 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 1C805F202D
 for <minios-devel@lists.xen.org>; Thu,  7 Feb 2019 14:59:39 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Thu, 7 Feb 2019 14:59:38 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Thu, 7 Feb 2019 14:58:42 +0100
Message-ID: <20190207135901.9122-5-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
References: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v3 04/23] lib/vfscore: Initial
 import of OSv vfs
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhlIGNvZGUgaXMgaW1wb3J0ZWQgYXMgaXMuCgpDb21taXQgZjFmNDI5MTVhMzNiZWJlMTIwZTcw
YWYxZjMyYzFhNGQ5MmJhYzc4MAoKU2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52
b2xjaGtvdkBuZWNsYWIuZXU+ClJldmlld2VkLWJ5OiBTaGFyYW4gU2FudGhhbmFtIDxzaGFyYW4u
c2FudGhhbmFtQG5lY2xhYi5ldT4KLS0tCiBsaWIvdmZzY29yZS9kZW50cnkuYyAgICAgICAgICAg
ICAgICAgfCAgMjM0ICsrKwogbGliL3Zmc2NvcmUvZm9wcy5jICAgICAgICAgICAgICAgICAgIHwg
IDE4OSArKwogbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2RlbnRyeS5oIHwgICA0NSArCiBs
aWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvbW91bnQuaCAgfCAgMTcxICsrCiBsaWIvdmZzY29y
ZS9pbmNsdWRlL3Zmc2NvcmUvcHJleC5oICAgfCAgIDM0ICsKIGxpYi92ZnNjb3JlL2luY2x1ZGUv
dmZzY29yZS91aW8uaCAgICB8ICAgODkgKwogbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Zu
b2RlLmggIHwgIDI0NiArKysKIGxpYi92ZnNjb3JlL2xvb2t1cC5jICAgICAgICAgICAgICAgICB8
ICAzNzUgKysrKwogbGliL3Zmc2NvcmUvbWFpbi5jICAgICAgICAgICAgICAgICAgIHwgMjQxMyAr
KysrKysrKysrKysrKysrKysrKysrKysrKwogbGliL3Zmc2NvcmUvbW91bnQuYyAgICAgICAgICAg
ICAgICAgIHwgIDQ5MSArKysrKysKIGxpYi92ZnNjb3JlL3N1YnJfdWlvLmMgICAgICAgICAgICAg
ICB8ICAgNzMgKwogbGliL3Zmc2NvcmUvc3lzY2FsbHMuYyAgICAgICAgICAgICAgIHwgMTQ4NiAr
KysrKysrKysrKysrKysrCiBsaWIvdmZzY29yZS90YXNrLmMgICAgICAgICAgICAgICAgICAgfCAg
MTY3ICsrCiBsaWIvdmZzY29yZS92ZnMuaCAgICAgICAgICAgICAgICAgICAgfCAgMTg5ICsrCiBs
aWIvdmZzY29yZS92bm9kZS5jICAgICAgICAgICAgICAgICAgfCAgNTIyICsrKysrKwogMTUgZmls
ZXMgY2hhbmdlZCwgNjcyNCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3Zm
c2NvcmUvZGVudHJ5LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdmZzY29yZS9mb3BzLmMKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZGVudHJ5LmgKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvbW91bnQuaAogY3Jl
YXRlIG1vZGUgMTAwNjQ0IGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9wcmV4LmgKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdWlvLmgKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUuaAogY3JlYXRlIG1v
ZGUgMTAwNjQ0IGxpYi92ZnNjb3JlL2xvb2t1cC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3Zm
c2NvcmUvbWFpbi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3Zmc2NvcmUvbW91bnQuYwogY3Jl
YXRlIG1vZGUgMTAwNjQ0IGxpYi92ZnNjb3JlL3N1YnJfdWlvLmMKIGNyZWF0ZSBtb2RlIDEwMDY0
NCBsaWIvdmZzY29yZS9zeXNjYWxscy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3Zmc2NvcmUv
dGFzay5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3Zmc2NvcmUvdmZzLmgKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBsaWIvdmZzY29yZS92bm9kZS5jCgpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvZGVu
dHJ5LmMgYi9saWIvdmZzY29yZS9kZW50cnkuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMC4uZmFjZDllYWEKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvdmZzY29yZS9kZW50cnku
YwpAQCAtMCwwICsxLDIzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBDbG91ZGl1cyBT
eXN0ZW1zLCBMdGQuCisgKgorICogVGhpcyB3b3JrIGlzIG9wZW4gc291cmNlIHNvZnR3YXJlLCBs
aWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlCisgKiBCU0QgbGljZW5zZSBhcyBkZXNjcmli
ZWQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgdG9wLWxldmVsIGRpcmVjdG9yeS4KKyAqLwor
CisvKgorICogQ29weXJpZ2h0IChjKSAyMDA1LTIwMDcsIEtvaHN1a2UgT2h0YW5pCisgKiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUg
YXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgYW55IGNvLWNvbnRyaWJ1dG9ycworICogICAgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNv
ZnR3YXJlCisgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3lzL3BhcmFt
Lmg+CisKKyNpbmNsdWRlIDxvc3YvZGVudHJ5Lmg+CisjaW5jbHVkZSA8b3N2L3Zub2RlLmg+Cisj
aW5jbHVkZSAidmZzLmgiCisKKyNkZWZpbmUgREVOVFJZX0JVQ0tFVFMgMzIKKworc3RhdGljIExJ
U1RfSEVBRChkZW50cnlfaGFzaF9oZWFkLCBkZW50cnkpIGRlbnRyeV9oYXNoX3RhYmxlW0RFTlRS
WV9CVUNLRVRTXTsKK3N0YXRpYyBMSVNUX0hFQUQoZmFrZSwgZGVudHJ5KSBmYWtlOworc3RhdGlj
IG11dGV4IGRlbnRyeV9oYXNoX2xvY2s7CisKKy8qCisgKiBHZXQgdGhlIGhhc2ggdmFsdWUgZnJv
bSB0aGUgbW91bnQgcG9pbnQgYW5kIHBhdGggbmFtZS4KKyAqIFhYWDogcmVwbGFjZSB3aXRoIGEg
YmV0dGVyIGhhc2ggZm9yIDY0LWJpdCBwb2ludGVycy4KKyAqLworc3RhdGljIHVfaW50CitkZW50
cnlfaGFzaChzdHJ1Y3QgbW91bnQgKm1wLCBjb25zdCBjaGFyICpwYXRoKQoreworICAgIHVfaW50
IHZhbCA9IDA7CisKKyAgICBpZiAocGF0aCkgeworICAgICAgICB3aGlsZSAoKnBhdGgpIHsKKyAg
ICAgICAgICAgIHZhbCA9ICgodmFsIDw8IDUpICsgdmFsKSArICpwYXRoKys7CisgICAgICAgIH0K
KyAgICB9CisgICAgcmV0dXJuICh2YWwgXiAodW5zaWduZWQgbG9uZykgbXApICYgKERFTlRSWV9C
VUNLRVRTIC0gMSk7Cit9CisKKworc3RydWN0IGRlbnRyeSAqCitkZW50cnlfYWxsb2Moc3RydWN0
IGRlbnRyeSAqcGFyZW50X2RwLCBzdHJ1Y3Qgdm5vZGUgKnZwLCBjb25zdCBjaGFyICpwYXRoKQor
eworICAgIHN0cnVjdCBtb3VudCAqbXAgPSB2cC0+dl9tb3VudDsKKyAgICBzdHJ1Y3QgZGVudHJ5
ICpkcCA9IChkZW50cnkqKWNhbGxvYyhzaXplb2YoKmRwKSwgMSk7CisKKyAgICBpZiAoIWRwKSB7
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHZyZWYodnApOworCisgICAg
ZHAtPmRfcmVmY250ID0gMTsKKyAgICBkcC0+ZF92bm9kZSA9IHZwOworICAgIGRwLT5kX21vdW50
ID0gbXA7CisgICAgZHAtPmRfcGF0aCA9IHN0cmR1cChwYXRoKTsKKyAgICBMSVNUX0lOSVQoJmRw
LT5kX2NoaWxkcmVuKTsKKworICAgIGlmIChwYXJlbnRfZHApIHsKKyAgICAgICAgZHJlZihwYXJl
bnRfZHApOworICAgICAgICBXSVRIX0xPQ0socGFyZW50X2RwLT5kX2xvY2spIHsKKyAgICAgICAg
ICAgIC8vIEluc2VydCBkcCBpbnRvIGl0cyBwYXJlbnQncyBjaGlsZHJlbiBsaXN0LgorICAgICAg
ICAgICAgTElTVF9JTlNFUlRfSEVBRCgmcGFyZW50X2RwLT5kX2NoaWxkcmVuLCBkcCwgZF9jaGls
ZHJlbl9saW5rKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBkcC0+ZF9wYXJlbnQgPSBwYXJlbnRf
ZHA7CisKKyAgICB2bl9hZGRfbmFtZSh2cCwgZHApOworCisgICAgbXV0ZXhfbG9jaygmZGVudHJ5
X2hhc2hfbG9jayk7CisgICAgTElTVF9JTlNFUlRfSEVBRCgmZGVudHJ5X2hhc2hfdGFibGVbZGVu
dHJ5X2hhc2gobXAsIHBhdGgpXSwgZHAsIGRfbGluayk7CisgICAgbXV0ZXhfdW5sb2NrKCZkZW50
cnlfaGFzaF9sb2NrKTsKKyAgICByZXR1cm4gZHA7Cit9OworCitzdHJ1Y3QgZGVudHJ5ICoKK2Rl
bnRyeV9sb29rdXAoc3RydWN0IG1vdW50ICptcCwgY2hhciAqcGF0aCkKK3sKKyAgICBzdHJ1Y3Qg
ZGVudHJ5ICpkcDsKKworICAgIG11dGV4X2xvY2soJmRlbnRyeV9oYXNoX2xvY2spOworICAgIExJ
U1RfRk9SRUFDSChkcCwgJmRlbnRyeV9oYXNoX3RhYmxlW2RlbnRyeV9oYXNoKG1wLCBwYXRoKV0s
IGRfbGluaykgeworICAgICAgICBpZiAoZHAtPmRfbW91bnQgPT0gbXAgJiYgIXN0cm5jbXAoZHAt
PmRfcGF0aCwgcGF0aCwgUEFUSF9NQVgpKSB7CisgICAgICAgICAgICBkcC0+ZF9yZWZjbnQrKzsK
KyAgICAgICAgICAgIG11dGV4X3VubG9jaygmZGVudHJ5X2hhc2hfbG9jayk7CisgICAgICAgICAg
ICByZXR1cm4gZHA7CisgICAgICAgIH0KKyAgICB9CisgICAgbXV0ZXhfdW5sb2NrKCZkZW50cnlf
aGFzaF9sb2NrKTsKKyAgICByZXR1cm4gbnVsbHB0cjsgICAgICAgICAgICAgICAgLyogbm90IGZv
dW5kICovCit9CisKK3N0YXRpYyB2b2lkIGRlbnRyeV9jaGlsZHJlbl9yZW1vdmUoc3RydWN0IGRl
bnRyeSAqZHApCit7CisgICAgc3RydWN0IGRlbnRyeSAqZW50cnkgPSBudWxscHRyOworCisgICAg
V0lUSF9MT0NLKGRwLT5kX2xvY2spIHsKKyAgICAgICAgTElTVF9GT1JFQUNIKGVudHJ5LCAmZHAt
PmRfY2hpbGRyZW4sIGRfY2hpbGRyZW5fbGluaykgeworICAgICAgICAgICAgQVNTRVJUKGVudHJ5
KTsKKyAgICAgICAgICAgIEFTU0VSVChlbnRyeS0+ZF9yZWZjbnQgPiAwKTsKKyAgICAgICAgICAg
IExJU1RfUkVNT1ZFKGVudHJ5LCBkX2xpbmspOworICAgICAgICB9CisgICAgfQorfQorCit2b2lk
CitkZW50cnlfbW92ZShzdHJ1Y3QgZGVudHJ5ICpkcCwgc3RydWN0IGRlbnRyeSAqcGFyZW50X2Rw
LCBjaGFyICpwYXRoKQoreworICAgIHN0cnVjdCBkZW50cnkgKm9sZF9wZHAgPSBkcC0+ZF9wYXJl
bnQ7CisgICAgY2hhciAqb2xkX3BhdGggPSBkcC0+ZF9wYXRoOworCisgICAgaWYgKG9sZF9wZHAp
IHsKKyAgICAgICAgV0lUSF9MT0NLKG9sZF9wZHAtPmRfbG9jaykgeworICAgICAgICAgICAgLy8g
UmVtb3ZlIGRwIGZyb20gaXRzIG9sZCBwYXJlbnQncyBjaGlsZHJlbiBsaXN0LgorICAgICAgICAg
ICAgTElTVF9SRU1PVkUoZHAsIGRfY2hpbGRyZW5fbGluayk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBpZiAocGFyZW50X2RwKSB7CisgICAgICAgIGRyZWYocGFyZW50X2RwKTsKKyAgICAgICAg
V0lUSF9MT0NLKHBhcmVudF9kcC0+ZF9sb2NrKSB7CisgICAgICAgICAgICAvLyBJbnNlcnQgZHAg
aW50byBpdHMgbmV3IHBhcmVudCdzIGNoaWxkcmVuIGxpc3QuCisgICAgICAgICAgICBMSVNUX0lO
U0VSVF9IRUFEKCZwYXJlbnRfZHAtPmRfY2hpbGRyZW4sIGRwLCBkX2NoaWxkcmVuX2xpbmspOwor
ICAgICAgICB9CisgICAgfQorCisgICAgV0lUSF9MT0NLKGRlbnRyeV9oYXNoX2xvY2spIHsKKyAg
ICAgICAgLy8gUmVtb3ZlIGFsbCBkcCdzIGNoaWxkIGRlbnRyaWVzIGZyb20gdGhlIGhhc2h0YWJs
ZS4KKyAgICAgICAgZGVudHJ5X2NoaWxkcmVuX3JlbW92ZShkcCk7CisgICAgICAgIC8vIFJlbW92
ZSBkcCB3aXRoIG91dGRhdGVkIGhhc2ggaW5mbyBmcm9tIHRoZSBoYXNodGFibGUuCisgICAgICAg
IExJU1RfUkVNT1ZFKGRwLCBkX2xpbmspOworICAgICAgICAvLyBVcGRhdGUgZHAuCisgICAgICAg
IGRwLT5kX3BhdGggPSBzdHJkdXAocGF0aCk7CisgICAgICAgIGRwLT5kX3BhcmVudCA9IHBhcmVu
dF9kcDsKKyAgICAgICAgLy8gSW5zZXJ0IGRwIHVwZGF0ZWQgaGFzaCBpbmZvIGludG8gdGhlIGhh
c2h0YWJsZS4KKyAgICAgICAgTElTVF9JTlNFUlRfSEVBRCgmZGVudHJ5X2hhc2hfdGFibGVbZGVu
dHJ5X2hhc2goZHAtPmRfbW91bnQsIHBhdGgpXSwKKyAgICAgICAgICAgIGRwLCBkX2xpbmspOwor
ICAgIH0KKworICAgIGlmIChvbGRfcGRwKSB7CisgICAgICAgIGRyZWxlKG9sZF9wZHApOworICAg
IH0KKworICAgIGZyZWUob2xkX3BhdGgpOworfQorCit2b2lkCitkZW50cnlfcmVtb3ZlKHN0cnVj
dCBkZW50cnkgKmRwKQoreworICAgIG11dGV4X2xvY2soJmRlbnRyeV9oYXNoX2xvY2spOworICAg
IExJU1RfUkVNT1ZFKGRwLCBkX2xpbmspOworICAgIC8qIHB1dCBpdCBvbiBhIGZha2UgbGlzdCBm
b3IgZHJlbGUoKSB0byB3b3JrKi8KKyAgICBMSVNUX0lOU0VSVF9IRUFEKCZmYWtlLCBkcCwgZF9s
aW5rKTsKKyAgICBtdXRleF91bmxvY2soJmRlbnRyeV9oYXNoX2xvY2spOworfQorCit2b2lkCitk
cmVmKHN0cnVjdCBkZW50cnkgKmRwKQoreworICAgIEFTU0VSVChkcCk7CisgICAgQVNTRVJUKGRw
LT5kX3JlZmNudCA+IDApOworCisgICAgbXV0ZXhfbG9jaygmZGVudHJ5X2hhc2hfbG9jayk7Cisg
ICAgZHAtPmRfcmVmY250Kys7CisgICAgbXV0ZXhfdW5sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsK
K30KKwordm9pZAorZHJlbGUoc3RydWN0IGRlbnRyeSAqZHApCit7CisgICAgQVNTRVJUKGRwKTsK
KyAgICBBU1NFUlQoZHAtPmRfcmVmY250ID4gMCk7CisKKyAgICBtdXRleF9sb2NrKCZkZW50cnlf
aGFzaF9sb2NrKTsKKyAgICBpZiAoLS1kcC0+ZF9yZWZjbnQpIHsKKyAgICAgICAgbXV0ZXhfdW5s
b2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBMSVNU
X1JFTU9WRShkcCwgZF9saW5rKTsKKyAgICB2bl9kZWxfbmFtZShkcC0+ZF92bm9kZSwgZHApOwor
CisgICAgbXV0ZXhfdW5sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKKworICAgIGlmIChkcC0+ZF9w
YXJlbnQpIHsKKyAgICAgICAgV0lUSF9MT0NLKGRwLT5kX3BhcmVudC0+ZF9sb2NrKSB7CisgICAg
ICAgICAgICAvLyBSZW1vdmUgZHAgZnJvbSBpdHMgcGFyZW50J3MgY2hpbGRyZW4gbGlzdC4KKyAg
ICAgICAgICAgIExJU1RfUkVNT1ZFKGRwLCBkX2NoaWxkcmVuX2xpbmspOworICAgICAgICB9Cisg
ICAgICAgIGRyZWxlKGRwLT5kX3BhcmVudCk7CisgICAgfQorCisgICAgdnJlbGUoZHAtPmRfdm5v
ZGUpOworCisgICAgZnJlZShkcC0+ZF9wYXRoKTsKKyAgICBmcmVlKGRwKTsKK30KKwordm9pZAor
ZGVudHJ5X2luaXQodm9pZCkKK3sKKyAgICBpbnQgaTsKKworICAgIGZvciAoaSA9IDA7IGkgPCBE
RU5UUllfQlVDS0VUUzsgaSsrKSB7CisgICAgICAgIExJU1RfSU5JVCgmZGVudHJ5X2hhc2hfdGFi
bGVbaV0pOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2ZvcHMuYyBiL2xpYi92
ZnNjb3JlL2ZvcHMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uM2E4Zjk4
YjQKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvdmZzY29yZS9mb3BzLmMKQEAgLTAsMCArMSwxODkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQ2xvdWRpdXMgU3lzdGVtcywgTHRkLgorICoK
KyAqIFRoaXMgd29yayBpcyBvcGVuIHNvdXJjZSBzb2Z0d2FyZSwgbGljZW5zZWQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZQorICogQlNEIGxpY2Vuc2UgYXMgZGVzY3JpYmVkIGluIHRoZSBMSUNFTlNF
IGZpbGUgaW4gdGhlIHRvcC1sZXZlbCBkaXJlY3RvcnkuCisgKi8KKworCisjaW5jbHVkZSA8ZmNu
dGwuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPG9zdi9maWxlLmg+CisjaW5j
bHVkZSA8b3N2L3BvbGwuaD4KKyNpbmNsdWRlIDxmcy92ZnMvdmZzLmg+CisjaW5jbHVkZSA8b3N2
L3Zmc19maWxlLmhoPgorI2luY2x1ZGUgPG9zdi9tbXUuaGg+CisjaW5jbHVkZSA8b3N2L3BhZ2Vj
YWNoZS5oaD4KKwordmZzX2ZpbGU6OnZmc19maWxlKHVuc2lnbmVkIGZsYWdzKQorCTogZmlsZShm
bGFncywgRFRZUEVfVk5PREUpCit7Cit9CisKK2ludCB2ZnNfZmlsZTo6Y2xvc2UoKQoreworCWF1
dG8gZnAgPSB0aGlzOworCXN0cnVjdCB2bm9kZSAqdnAgPSBmcC0+Zl9kZW50cnktPmRfdm5vZGU7
CisJaW50IGVycm9yOworCisJdm5fbG9jayh2cCk7CisJZXJyb3IgPSBWT1BfQ0xPU0UodnAsIGZw
KTsKKwl2bl91bmxvY2sodnApOworCisJaWYgKGVycm9yKQorCQlyZXR1cm4gZXJyb3I7CisKKwlm
cC0+Zl9kZW50cnkucmVzZXQoKTsKKwlyZXR1cm4gMDsKK30KKworaW50IHZmc19maWxlOjpyZWFk
KHN0cnVjdCB1aW8gKnVpbywgaW50IGZsYWdzKQoreworCWF1dG8gZnAgPSB0aGlzOworCXN0cnVj
dCB2bm9kZSAqdnAgPSBmcC0+Zl9kZW50cnktPmRfdm5vZGU7CisJaW50IGVycm9yOworCXNpemVf
dCBjb3VudDsKKwlzc2l6ZV90IGJ5dGVzOworCisJYnl0ZXMgPSB1aW8tPnVpb19yZXNpZDsKKwor
CXZuX2xvY2sodnApOworCWlmICgoZmxhZ3MgJiBGT0ZfT0ZGU0VUKSA9PSAwKQorCQl1aW8tPnVp
b19vZmZzZXQgPSBmcC0+Zl9vZmZzZXQ7CisKKwllcnJvciA9IFZPUF9SRUFEKHZwLCBmcCwgdWlv
LCAwKTsKKwlpZiAoIWVycm9yKSB7CisJCWNvdW50ID0gYnl0ZXMgLSB1aW8tPnVpb19yZXNpZDsK
KwkJaWYgKChmbGFncyAmIEZPRl9PRkZTRVQpID09IDApCisJCQlmcC0+Zl9vZmZzZXQgKz0gY291
bnQ7CisJfQorCXZuX3VubG9jayh2cCk7CisKKwlyZXR1cm4gZXJyb3I7Cit9CisKKworaW50IHZm
c19maWxlOjp3cml0ZShzdHJ1Y3QgdWlvICp1aW8sIGludCBmbGFncykKK3sKKwlhdXRvIGZwID0g
dGhpczsKKwlzdHJ1Y3Qgdm5vZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOworCWludCBp
b2ZsYWdzID0gMDsKKwlpbnQgZXJyb3I7CisJc2l6ZV90IGNvdW50OworCXNzaXplX3QgYnl0ZXM7
CisKKwlieXRlcyA9IHVpby0+dWlvX3Jlc2lkOworCisJdm5fbG9jayh2cCk7CisKKwlpZiAoZnAt
PmZfZmxhZ3MgJiBPX0FQUEVORCkKKwkJaW9mbGFncyB8PSBJT19BUFBFTkQ7CisJaWYgKGZwLT5m
X2ZsYWdzICYgKE9fRFNZTkN8T19TWU5DKSkKKwkJaW9mbGFncyB8PSBJT19TWU5DOworCisJaWYg
KChmbGFncyAmIEZPRl9PRkZTRVQpID09IDApCisJICAgICAgICB1aW8tPnVpb19vZmZzZXQgPSBm
cC0+Zl9vZmZzZXQ7CisKKwllcnJvciA9IFZPUF9XUklURSh2cCwgdWlvLCBpb2ZsYWdzKTsKKwlp
ZiAoIWVycm9yKSB7CisJCWNvdW50ID0gYnl0ZXMgLSB1aW8tPnVpb19yZXNpZDsKKwkJaWYgKChm
bGFncyAmIEZPRl9PRkZTRVQpID09IDApCisJCQlmcC0+Zl9vZmZzZXQgKz0gY291bnQ7CisJfQor
CisJdm5fdW5sb2NrKHZwKTsKKwlyZXR1cm4gZXJyb3I7Cit9CisKK2ludCB2ZnNfZmlsZTo6aW9j
dGwodV9sb25nIGNvbSwgdm9pZCAqZGF0YSkKK3sKKwlhdXRvIGZwID0gdGhpczsKKwlzdHJ1Y3Qg
dm5vZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOworCWludCBlcnJvcjsKKworCXZuX2xv
Y2sodnApOworCWVycm9yID0gVk9QX0lPQ1RMKHZwLCBmcCwgY29tLCBkYXRhKTsKKwl2bl91bmxv
Y2sodnApOworCisJcmV0dXJuIGVycm9yOworfQorCitpbnQgdmZzX2ZpbGU6OnN0YXQoc3RydWN0
IHN0YXQgKnN0KQoreworCWF1dG8gZnAgPSB0aGlzOworCXN0cnVjdCB2bm9kZSAqdnAgPSBmcC0+
Zl9kZW50cnktPmRfdm5vZGU7CisJaW50IGVycm9yOworCisJdm5fbG9jayh2cCk7CisJZXJyb3Ig
PSB2bl9zdGF0KHZwLCBzdCk7CisJdm5fdW5sb2NrKHZwKTsKKworCXJldHVybiBlcnJvcjsKK30K
KworaW50IHZmc19maWxlOjpwb2xsKGludCBldmVudHMpCit7CisJcmV0dXJuIHBvbGxfbm9fcG9s
bChldmVudHMpOworfQorCitpbnQgdmZzX2ZpbGU6OnRydW5jYXRlKG9mZl90IGxlbikKK3sKKwkv
LyBzb21laG93IHRoaXMgaXMgaGFuZGxlZCBvdXRzaWRlIGZpbGUgb3BzCisJYWJvcnQoKTsKK30K
KworaW50IHZmc19maWxlOjpjaG1vZChtb2RlX3QgbW9kZSkKK3sKKwkvLyBzb21laG93IHRoaXMg
aXMgaGFuZGxlZCBvdXRzaWRlIGZpbGUgb3BzCisJYWJvcnQoKTsKK30KKworYm9vbCB2ZnNfZmls
ZTo6bWFwX3BhZ2UodWludHB0cl90IG9mZiwgbW11Ojpod19wdGVwPDA+IHB0ZXAsIG1tdTo6cHRf
ZWxlbWVudDwwPiBwdGUsIGJvb2wgd3JpdGUsIGJvb2wgc2hhcmVkKQoreworICAgIHJldHVybiBw
YWdlY2FjaGU6OmdldCh0aGlzLCBvZmYsIHB0ZXAsIHB0ZSwgd3JpdGUsIHNoYXJlZCk7Cit9CisK
K2Jvb2wgdmZzX2ZpbGU6OnB1dF9wYWdlKHZvaWQgKmFkZHIsIHVpbnRwdHJfdCBvZmYsIG1tdTo6
aHdfcHRlcDwwPiBwdGVwKQoreworICAgIHJldHVybiBwYWdlY2FjaGU6OnJlbGVhc2UodGhpcywg
YWRkciwgb2ZmLCBwdGVwKTsKK30KKwordm9pZCB2ZnNfZmlsZTo6c3luYyhvZmZfdCBzdGFydCwg
b2ZmX3QgZW5kKQoreworICAgIHBhZ2VjYWNoZTo6c3luYyh0aGlzLCBzdGFydCwgZW5kKTsKK30K
KworLy8gTG9ja2luZzogVk9QX0NBQ0hFIHdpbGwgY2FsbCBpbnRvIHRoZSBmaWxlc3lzdGVtLCBh
bmQgdGhhdCBjYW4gdHJpZ2dlciBhbgorLy8gZXZpY3Rpb24gdGhhdCB3aWxsIGhvbGQgdGhlIG1t
dS1zaWRlIGxvY2sgdGhhdCBwcm90ZWN0cyB0aGUgbWFwcGluZ3MKKy8vIEFsd2F5cyBmb2xsb3cg
dGhhdCBvcmRlci4gV2UgaG93ZXZlciBjYW4ndCBqdXN0IGdldCByaWQgb2YgdGhlIG1tdS1zaWRl
IGxvY2ssCisvLyBiZWNhdXNlIG5vdCBhbGwgaW52YWxpZGF0aW9ucyB3aWxsIGJlIHN5bmNocm9u
b3VzLgoraW50IHZmc19maWxlOjpnZXRfYXJjYnVmKHZvaWQqIGtleSwgb2ZmX3Qgb2Zmc2V0KQor
eworICAgIHN0cnVjdCB2bm9kZSAqdnAgPSBmX2RlbnRyeS0+ZF92bm9kZTsKKworICAgIGlvdmVj
IGlvWzFdOworCisgICAgaW9bMF0uaW92X2Jhc2UgPSBrZXk7CisgICAgdWlvIGRhdGE7CisgICAg
ZGF0YS51aW9faW92ID0gaW87CisgICAgZGF0YS51aW9faW92Y250ID0gMTsKKyAgICBkYXRhLnVp
b19vZmZzZXQgPSBvZmZzZXQ7CisgICAgZGF0YS51aW9fcmVzaWQgPSBtbXU6OnBhZ2Vfc2l6ZTsK
KyAgICBkYXRhLnVpb19ydyA9IFVJT19SRUFEOworCisgICAgdm5fbG9jayh2cCk7CisgICAgYXNz
ZXJ0KFZPUF9DQUNIRSh2cCwgdGhpcywgJmRhdGEpID09IDApOworICAgIHZuX3VubG9jayh2cCk7
CisKKyAgICByZXR1cm4gKGRhdGEudWlvX3Jlc2lkICE9IDApID8gLTEgOiAwOworfQorCitzdGQ6
OnVuaXF1ZV9wdHI8bW11OjpmaWxlX3ZtYT4gdmZzX2ZpbGU6Om1tYXAoYWRkcl9yYW5nZSByYW5n
ZSwgdW5zaWduZWQgZmxhZ3MsIHVuc2lnbmVkIHBlcm0sIG9mZl90IG9mZnNldCkKK3sKKwlhdXRv
IGZwID0gdGhpczsKKwlzdHJ1Y3Qgdm5vZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOwor
CWlmICghdnAtPnZfb3AtPnZvcF9jYWNoZSB8fCAodnAtPnZfc2l6ZSA8IChvZmZfdCltbXU6OnBh
Z2Vfc2l6ZSkpIHsKKwkJcmV0dXJuIG1tdTo6ZGVmYXVsdF9maWxlX21tYXAodGhpcywgcmFuZ2Us
IGZsYWdzLCBwZXJtLCBvZmZzZXQpOworCX0KKwlyZXR1cm4gbW11OjptYXBfZmlsZV9tbWFwKHRo
aXMsIHJhbmdlLCBmbGFncywgcGVybSwgb2Zmc2V0KTsKK30KZGlmZiAtLWdpdCBhL2xpYi92ZnNj
b3JlL2luY2x1ZGUvdmZzY29yZS9kZW50cnkuaCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29y
ZS9kZW50cnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uYTI1NDVhZjgK
LS0tIC9kZXYvbnVsbAorKysgYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZGVudHJ5LmgK
QEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBDbG91ZGl1cyBTeXN0
ZW1zLCBMdGQuCisgKgorICogVGhpcyB3b3JrIGlzIG9wZW4gc291cmNlIHNvZnR3YXJlLCBsaWNl
bnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlCisgKiBCU0QgbGljZW5zZSBhcyBkZXNjcmliZWQg
aW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgdG9wLWxldmVsIGRpcmVjdG9yeS4KKyAqLworCisj
aWZuZGVmIF9PU1ZfREVOVFJZX0gKKyNkZWZpbmUgX09TVl9ERU5UUllfSCAxCisKKyNpbmNsdWRl
IDxvc3YvbXV0ZXguaD4KKyNpbmNsdWRlIDxic2Qvc3lzL3N5cy9xdWV1ZS5oPgorCitzdHJ1Y3Qg
dm5vZGU7CisKK3N0cnVjdCBkZW50cnkgeworCUxJU1RfRU5UUlkoZGVudHJ5KSBkX2xpbms7CS8q
IGxpbmsgZm9yIGhhc2ggbGlzdCAqLworCWludAkJZF9yZWZjbnQ7CS8qIHJlZmVyZW5jZSBjb3Vu
dCAqLworCWNoYXIJCSpkX3BhdGg7CS8qIHBvaW50ZXIgdG8gcGF0aCBpbiBmcyAqLworCXN0cnVj
dCB2bm9kZQkqZF92bm9kZTsKKwlzdHJ1Y3QgbW91bnQJKmRfbW91bnQ7CisJc3RydWN0IGRlbnRy
eSAgICpkX3BhcmVudDsgLyogcG9pbnRlciB0byBwYXJlbnQgKi8KKwlMSVNUX0VOVFJZKGRlbnRy
eSkgZF9uYW1lc19saW5rOyAvKiBsaW5rIGZvIHZub2RlOjpkX25hbWVzICovCisJbXV0ZXhfdAkJ
ZF9sb2NrOworCUxJU1RfSEVBRCgsIGRlbnRyeSkgZF9jaGlsZHJlbjsKKwlMSVNUX0VOVFJZKGRl
bnRyeSkgZF9jaGlsZHJlbl9saW5rOworfTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCisKKyNpbmNs
dWRlIDxib29zdC9pbnRydXNpdmVfcHRyLmhwcD4KKwordXNpbmcgZGVudHJ5X3JlZiA9IGJvb3N0
OjppbnRydXNpdmVfcHRyPGRlbnRyeT47CisKK2V4dGVybiAiQyIgeworICAgIHZvaWQgZHJlZihz
dHJ1Y3QgZGVudHJ5KiBkcCk7CisgICAgdm9pZCBkcmVsZShzdHJ1Y3QgZGVudHJ5KiBkcCk7Cit9
OworCitpbmxpbmUgdm9pZCBpbnRydXNpdmVfcHRyX2FkZF9yZWYoZGVudHJ5KiBkcCkgeyBkcmVm
KGRwKTsgfQoraW5saW5lIHZvaWQgaW50cnVzaXZlX3B0cl9yZWxlYXNlKGRlbnRyeSogZHApIHsg
ZHJlbGUoZHApOyB9CisKKyNlbmRpZgorCisjZW5kaWYgLyogX09TVl9ERU5UUllfSCAqLwpkaWZm
IC0tZ2l0IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmggYi9saWIvdmZzY29y
ZS9pbmNsdWRlL3Zmc2NvcmUvbW91bnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMC4uNzI2OGQ4Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zm
c2NvcmUvbW91bnQuaApAQCAtMCwwICsxLDE3MSBAQAorLyotCisgKiBDb3B5cmlnaHQgKGMpIDE5
ODksIDE5OTEsIDE5OTMKKyAqCVRoZSBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlm
b3JuaWEuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUg
bmFtZSBvZiB0aGUgVW5pdmVyc2l0eSBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMK
KyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20gdGhpcyBzb2Z0d2FyZQorICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgUkVH
RU5UUyBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIFJFR0VOVFMgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFH
RS4KKyAqCisgKglAKCMpbW91bnQuaAk4LjIxIChCZXJrZWxleSkgNS8yMC85NQorICovCisKKyNp
Zm5kZWYgX1NZU19NT1VOVF9IXworI2RlZmluZSBfU1lTX01PVU5UX0hfCisKKyNpbmNsdWRlIDxz
eXMvY2RlZnMuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdGZzLmg+CisjaW5jbHVkZSA8b3N2L3Zub2Rl
Lmg+CisjaW5jbHVkZSA8YnNkL3N5cy9zeXMvcXVldWUuaD4KKworX19CRUdJTl9ERUNMUworCisj
aWZkZWYgX0tFUk5FTAorCisvKgorICogTW91bnQgZGF0YQorICovCitzdHJ1Y3QgbW91bnQgewor
CXN0cnVjdCB2ZnNvcHMJKm1fb3A7CQkvKiBwb2ludGVyIHRvIHZmcyBvcGVyYXRpb24gKi8KKwlp
bnQJCW1fZmxhZ3M7CS8qIG1vdW50IGZsYWcgKi8KKwlpbnQJCW1fY291bnQ7CS8qIHJlZmVyZW5j
ZSBjb3VudCAqLworCWNoYXIgICAgICAgICAgICBtX3BhdGhbUEFUSF9NQVhdOyAvKiBtb3VudGVk
IHBhdGggKi8KKwljaGFyICAgICAgICAgICAgbV9zcGVjaWFsW1BBVEhfTUFYXTsgLyogcmVzb3Vy
Y2UgKi8KKwlzdHJ1Y3QgZGV2aWNlCSptX2RldjsJCS8qIG1vdW50ZWQgZGV2aWNlICovCisJc3Ry
dWN0IGRlbnRyeQkqbV9yb290OwkvKiByb290IHZub2RlICovCisJc3RydWN0IGRlbnRyeQkqbV9j
b3ZlcmVkOwkvKiB2bm9kZSBjb3ZlcmVkIG9uIHBhcmVudCBmcyAqLworCXZvaWQJCSptX2RhdGE7
CS8qIHByaXZhdGUgZGF0YSBmb3IgZnMgKi8KKwlmc2lkX3QgCQltX2ZzaWQ7IAkvKiBpZCB0aGF0
IHVuaXF1ZWx5IGlkZW50aWZpZXMgdGhlIGZzICovCit9OworCisjZW5kaWYKKworLyoKKyAqIE1v
dW50IGZsYWdzLgorICovCisjZGVmaW5lCU1OVF9SRE9OTFkJMHgwMDAwMDAwMQkvKiByZWFkIG9u
bHkgZmlsZXN5c3RlbSAqLworI2RlZmluZQlNTlRfU1lOQ0hST05PVVMJMHgwMDAwMDAwMgkvKiBm
aWxlIHN5c3RlbSB3cml0dGVuIHN5bmNocm9ub3VzbHkgKi8KKyNkZWZpbmUJTU5UX05PRVhFQwkw
eDAwMDAwMDA0CS8qIGNhbid0IGV4ZWMgZnJvbSBmaWxlc3lzdGVtICovCisjZGVmaW5lCU1OVF9O
T1NVSUQJMHgwMDAwMDAwOAkvKiBkb24ndCBob25vciBzZXR1aWQgYml0cyBvbiBmcyAqLworI2Rl
ZmluZQlNTlRfTk9ERVYJMHgwMDAwMDAxMAkvKiBkb24ndCBpbnRlcnByZXQgc3BlY2lhbCBmaWxl
cyAqLworI2RlZmluZQlNTlRfVU5JT04JMHgwMDAwMDAyMAkvKiB1bmlvbiB3aXRoIHVuZGVybHlp
bmcgZmlsZXN5c3RlbSAqLworI2RlZmluZQlNTlRfQVNZTkMJMHgwMDAwMDA0MAkvKiBmaWxlIHN5
c3RlbSB3cml0dGVuIGFzeW5jaHJvbm91c2x5ICovCisKKy8qCisgKiBVbm1vdW50IGZsYWdzLgor
ICovCisjZGVmaW5lIE1OVF9GT1JDRQkweDAwMDAwMDAxCS8qIGZvcmNlZCB1bm1vdW50ICovCisK
Ky8qCisgKiBleHBvcnRlZCBtb3VudCBmbGFncy4KKyAqLworI2RlZmluZQlNTlRfRVhSRE9OTFkJ
MHgwMDAwMDA4MAkvKiBleHBvcnRlZCByZWFkIG9ubHkgKi8KKyNkZWZpbmUJTU5UX0VYUE9SVEVE
CTB4MDAwMDAxMDAJLyogZmlsZSBzeXN0ZW0gaXMgZXhwb3J0ZWQgKi8KKyNkZWZpbmUJTU5UX0RF
RkVYUE9SVEVECTB4MDAwMDAyMDAJLyogZXhwb3J0ZWQgdG8gdGhlIHdvcmxkICovCisjZGVmaW5l
CU1OVF9FWFBPUlRBTk9OCTB4MDAwMDA0MDAJLyogdXNlIGFub24gdWlkIG1hcHBpbmcgZm9yIGV2
ZXJ5b25lICovCisjZGVmaW5lCU1OVF9FWEtFUkIJMHgwMDAwMDgwMAkvKiBleHBvcnRlZCB3aXRo
IEtlcmJlcm9zIHVpZCBtYXBwaW5nICovCisKKy8qCisgKiBGbGFncyBzZXQgYnkgaW50ZXJuYWwg
b3BlcmF0aW9ucy4KKyAqLworI2RlZmluZQlNTlRfTE9DQUwJMHgwMDAwMTAwMAkvKiBmaWxlc3lz
dGVtIGlzIHN0b3JlZCBsb2NhbGx5ICovCisjZGVmaW5lCU1OVF9RVU9UQQkweDAwMDAyMDAwCS8q
IHF1b3RhcyBhcmUgZW5hYmxlZCBvbiBmaWxlc3lzdGVtICovCisjZGVmaW5lCU1OVF9ST09URlMJ
MHgwMDAwNDAwMAkvKiBpZGVudGlmaWVzIHRoZSByb290IGZpbGVzeXN0ZW0gKi8KKworLyoKKyAq
IE1hc2sgb2YgZmxhZ3MgdGhhdCBhcmUgdmlzaWJsZSB0byBzdGF0ZnMoKQorICovCisjZGVmaW5l
CU1OVF9WSVNGTEFHTUFTSwkweDAwMDBmZmZmCisKKyNpZmRlZiBfS0VSTkVMCisKKy8qCisgKiBG
aWxlc3lzdGVtIHR5cGUgc3dpdGNoIHRhYmxlLgorICovCitzdHJ1Y3QgdmZzc3cgeworCWNvbnN0
IGNoYXIgICAgICAqdnNfbmFtZTsJLyogbmFtZSBvZiBmaWxlIHN5c3RlbSAqLworCWludAkJKCp2
c19pbml0KSh2b2lkKTsgLyogaW5pdGlhbGl6ZSByb3V0aW5lICovCisJc3RydWN0IHZmc29wcwkq
dnNfb3A7CQkvKiBwb2ludGVyIHRvIHZmcyBvcGVyYXRpb24gKi8KK307CisKKy8qCisgKiBPcGVy
YXRpb25zIHN1cHBvcnRlZCBvbiB2aXJ0dWFsIGZpbGUgc3lzdGVtLgorICovCitzdHJ1Y3QgdmZz
b3BzIHsKKwlpbnQgKCp2ZnNfbW91bnQpCShzdHJ1Y3QgbW91bnQgKiwgY29uc3QgY2hhciAqLCBp
bnQsIGNvbnN0IHZvaWQgKik7CisJaW50ICgqdmZzX3VubW91bnQpCShzdHJ1Y3QgbW91bnQgKiwg
aW50IGZsYWdzKTsKKwlpbnQgKCp2ZnNfc3luYykJCShzdHJ1Y3QgbW91bnQgKik7CisJaW50ICgq
dmZzX3ZnZXQpCQkoc3RydWN0IG1vdW50ICosIHN0cnVjdCB2bm9kZSAqKTsKKwlpbnQgKCp2ZnNf
c3RhdGZzKQkoc3RydWN0IG1vdW50ICosIHN0cnVjdCBzdGF0ZnMgKik7CisJc3RydWN0IHZub3Bz
CSp2ZnNfdm5vcHM7Cit9OworCit0eXBlZGVmIGludCAoKnZmc29wX21vdW50X3QpKHN0cnVjdCBt
b3VudCAqLCBjb25zdCBjaGFyICosIGludCwgY29uc3Qgdm9pZCAqKTsKK3R5cGVkZWYgaW50ICgq
dmZzb3BfdW1vdW50X3QpKHN0cnVjdCBtb3VudCAqLCBpbnQgZmxhZ3MpOwordHlwZWRlZiBpbnQg
KCp2ZnNvcF9zeW5jX3QpKHN0cnVjdCBtb3VudCAqKTsKK3R5cGVkZWYgaW50ICgqdmZzb3Bfdmdl
dF90KShzdHJ1Y3QgbW91bnQgKiwgc3RydWN0IHZub2RlICopOwordHlwZWRlZiBpbnQgKCp2ZnNv
cF9zdGF0ZnNfdCkoc3RydWN0IG1vdW50ICosIHN0cnVjdCBzdGF0ZnMgKik7CisKKy8qCisgKiBW
RlMgaW50ZXJmYWNlCisgKi8KKyNkZWZpbmUgVkZTX01PVU5UKE1QLCBERVYsIEZMLCBEQVQpICgo
TVApLT5tX29wLT52ZnNfbW91bnQpKE1QLCBERVYsIEZMLCBEQVQpCisjZGVmaW5lIFZGU19VTk1P
VU5UKE1QLCBGTCkgICAgICAgICAoKE1QKS0+bV9vcC0+dmZzX3VubW91bnQpKE1QLCBGTCkKKyNk
ZWZpbmUgVkZTX1NZTkMoTVApICAgICAgICAgICAgICAgICgoTVApLT5tX29wLT52ZnNfc3luYyko
TVApCisjZGVmaW5lIFZGU19WR0VUKE1QLCBWUCkgICAgICAgICAgICAoKE1QKS0+bV9vcC0+dmZz
X3ZnZXQpKE1QLCBWUCkKKyNkZWZpbmUgVkZTX1NUQVRGUyhNUCwgU0ZQKSAgICAgICAgICgoTVAp
LT5tX29wLT52ZnNfc3RhdGZzKShNUCwgU0ZQKQorCisjZGVmaW5lIFZGU19OVUxMCQkgICAgKCh2
b2lkICopdmZzX251bGwpCisKK2ludAl2ZnNfbnVsbG9wKHZvaWQpOworaW50CXZmc19laW52YWwo
dm9pZCk7CisKK3ZvaWQJIHZmc19idXN5KHN0cnVjdCBtb3VudCAqbXApOwordm9pZAkgdmZzX3Vu
YnVzeShzdHJ1Y3QgbW91bnQgKm1wKTsKKwordm9pZAkgcmVsZWFzZV9tcF9kZW50cmllcyhzdHJ1
Y3QgbW91bnQgKm1wKTsKKworI2VuZGlmCisKK19fRU5EX0RFQ0xTCisKKyNpZmRlZiBfX2NwbHVz
cGx1cworCisjaW5jbHVkZSA8dmVjdG9yPgorI2luY2x1ZGUgPHN0cmluZz4KKworbmFtZXNwYWNl
IG9zdiB7CisKK3N0cnVjdCBtb3VudF9kZXNjIHsKKyAgICBzdGQ6OnN0cmluZyBzcGVjaWFsOwor
ICAgIHN0ZDo6c3RyaW5nIHBhdGg7CisgICAgc3RkOjpzdHJpbmcgdHlwZTsKKyAgICBzdGQ6OnN0
cmluZyBvcHRpb25zOworfTsKKworc3RkOjp2ZWN0b3I8bW91bnRfZGVzYz4gY3VycmVudF9tb3Vu
dHMoKTsKKworfQorCisjZW5kaWYKKworI2VuZGlmCS8qICFfU1lTX01PVU5UX0hfICovCmRpZmYg
LS1naXQgYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvcHJleC5oIGIvbGliL3Zmc2NvcmUv
aW5jbHVkZS92ZnNjb3JlL3ByZXguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MC4uNDM2NTAzNDAKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2Nv
cmUvcHJleC5oCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQ2xv
dWRpdXMgU3lzdGVtcywgTHRkLgorICoKKyAqIFRoaXMgd29yayBpcyBvcGVuIHNvdXJjZSBzb2Z0
d2FyZSwgbGljZW5zZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZQorICogQlNEIGxpY2Vuc2UgYXMg
ZGVzY3JpYmVkIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHRvcC1sZXZlbCBkaXJlY3Rvcnku
CisgKi8KKworI2lmbmRlZiBfT1NWX1BSRVhfSAorI2RlZmluZSBfT1NWX1BSRVhfSCAxCisKKwor
I2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPG9zdi9mY250bC5oPgorCitfX0JFR0lOX0RF
Q0xTCisKKyNkZWZpbmUgX19wYWNrZWQgICAgICAgIF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18p
KQorCisjZGVmaW5lCUJTSVpFCTUxMgkJLyogc2l6ZSBvZiBzZWNvbmRhcnkgYmxvY2sgKGJ5dGVz
KSAqLworCisjZGVmaW5lIERPX1JEV1IJCTB4MgorCisjZGVmaW5lIFBBR0VfU0laRQk0MDk2Cisj
ZGVmaW5lIFBBR0VfTUFTSwkoUEFHRV9TSVpFLTEpCisjZGVmaW5lIHJvdW5kX3BhZ2UoeCkJKCgo
eCkgKyBQQUdFX01BU0spICYgflBBR0VfTUFTSykKKworc2l6ZV90IHN0cmxjYXQoY2hhciAqZHN0
LCBjb25zdCBjaGFyICpzcmMsIHNpemVfdCBzaXopOworc2l6ZV90IHN0cmxjcHkoY2hhciAqZHN0
LCBjb25zdCBjaGFyICpzcmMsIHNpemVfdCBzaXopOworCit2b2lkIHN5c19wYW5pYyhjb25zdCBj
aGFyICopOworCitfX0VORF9ERUNMUworCisjZW5kaWYgLyogX09TVl9QUkVYX0ggKi8KZGlmZiAt
LWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS91aW8uaCBiL2xpYi92ZnNjb3JlL2lu
Y2x1ZGUvdmZzY29yZS91aW8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4u
Njk2YjAxY2YKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUv
dWlvLmgKQEAgLTAsMCArMSw4OSBAQAorLyotCisgKiBDb3B5cmlnaHQgKGMpIDE5ODIsIDE5ODYs
IDE5OTMsIDE5OTQKKyAqCVRoZSBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3Ju
aWEuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogNC4gTmVpdGhlciB0aGUgbmFt
ZSBvZiB0aGUgVW5pdmVyc2l0eSBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKKyAq
ICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20gdGhpcyBzb2Z0d2FyZQorICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgUkVHRU5U
UyBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IFJFR0VOVFMgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwK
KyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
CisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4K
KyAqCisgKglAKCMpdWlvLmgJOC41IChCZXJrZWxleSkgMi8yMi85NAorICogJEZyZWVCU0QkCisg
Ki8KKworI2lmbmRlZiBfVUlPX0hfCisjZGVmaW5lCV9VSU9fSF8KKworI2luY2x1ZGUgPHN5cy9j
ZGVmcy5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy91aW8uaD4KKyNp
bmNsdWRlIDxsaW1pdHMuaD4KKworX19CRUdJTl9ERUNMUworCitlbnVtCXVpb19ydyB7IFVJT19S
RUFELCBVSU9fV1JJVEUgfTsKKworLyoKKyAqIFNhZmUgZGVmYXVsdCB0byBwcmV2ZW50IHBvc3Np
YmxlIG92ZXJmbG93cyBpbiB1c2VyIGNvZGUsIG90aGVyd2lzZSBjb3VsZAorICogYmUgU1NJWkVf
VF9NQVguCisgKi8KKyNkZWZpbmUgSU9TSVpFX01BWCAgICAgIElOVF9NQVgKKworI2RlZmluZSBV
SU9fTUFYSU9WIDEwMjQKKworI2RlZmluZSBVSU9fU1lTU1BBQ0UgMAorCitzdHJ1Y3QgdWlvIHsK
KwlzdHJ1Y3QgaW92ZWMgKnVpb19pb3Y7CQkvKiBzY2F0dGVyL2dhdGhlciBsaXN0ICovCisJaW50
CXVpb19pb3ZjbnQ7CQkvKiBsZW5ndGggb2Ygc2NhdHRlci9nYXRoZXIgbGlzdCAqLworCW9mZl90
CXVpb19vZmZzZXQ7CQkvKiBvZmZzZXQgaW4gdGFyZ2V0IG9iamVjdCAqLworCXNzaXplX3QJdWlv
X3Jlc2lkOwkJLyogcmVtYWluaW5nIGJ5dGVzIHRvIHByb2Nlc3MgKi8KKwllbnVtCXVpb19ydyB1
aW9fcnc7CQkvKiBvcGVyYXRpb24gKi8KK307CisKK2ludAl1aW9tb3ZlKHZvaWQgKmNwLCBpbnQg
biwgc3RydWN0IHVpbyAqdWlvKTsKKworX19FTkRfREVDTFMKKworI2lmZGVmIF9fY3BsdXNwbHVz
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBGPgorc3RhdGljIGlubGluZSB2b2lkIGxpbmVhcml6ZV91
aW9fd3JpdGUoc3RydWN0IHVpbyAqdWlvLCBpbnQgaW9mbGFnLCBGIGYpCit7CisgICAgd2hpbGUg
KHVpby0+dWlvX3Jlc2lkID4gMCkgeworICAgICAgICBzdHJ1Y3QgaW92ZWMgKmlvdiA9IHVpby0+
dWlvX2lvdjsKKworICAgICAgICBpZiAoaW92LT5pb3ZfbGVuKSB7CisgICAgICAgICAgICBmKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhciAqPihpb3YtPmlvdl9iYXNlKSwKKyAgICAgICAgICAg
ICAgICBpb3YtPmlvdl9sZW4pOworICAgICAgICB9CisKKyAgICAgICAgdWlvLT51aW9faW92Kys7
CisgICAgICAgIHVpby0+dWlvX2lvdmNudC0tOworICAgICAgICB1aW8tPnVpb19yZXNpZCAtPSBp
b3YtPmlvdl9sZW47CisgICAgICAgIHVpby0+dWlvX29mZnNldCArPSBpb3YtPmlvdl9sZW47Cisg
ICAgfQorfQorCisjZW5kaWYKKworI2VuZGlmIC8qICFfVUlPX0hfICovCmRpZmYgLS1naXQgYS9s
aWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUuaCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUv
dmZzY29yZS92bm9kZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi5lMzVh
YTgzMAotLS0gL2Rldi9udWxsCisrKyBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9k
ZS5oCkBAIC0wLDAgKzEsMjQ2IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA1LTIwMDcsIEtv
aHN1a2UgT2h0YW5pCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gTmVp
dGhlciB0aGUgbmFtZSBvZiB0aGUgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgYW55IGNvLWNvbnRy
aWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCisgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIF9TWVNfVk5PREVfSF8KKyNkZWZpbmUgX1NZU19WTk9E
RV9IXworCisjaWZkZWYgX0tFUk5FTAorCisjaW5jbHVkZSA8c3lzL2NkZWZzLmg+CisjaW5jbHVk
ZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxvc3YvcHJleC5oPgorI2luY2x1ZGUgPG9zdi91aW8u
aD4KKyNpbmNsdWRlIDxvc3YvbXV0ZXguaD4KKyNpbmNsdWRlICJmaWxlLmgiCisjaW5jbHVkZSAi
ZGlyZW50LmgiCisKK19fQkVHSU5fREVDTFMKKworc3RydWN0IHZmc29wczsKK3N0cnVjdCB2bm9w
czsKK3N0cnVjdCB2bm9kZTsKK3N0cnVjdCBmaWxlOworCisvKgorICogVm5vZGUgdHlwZXMuCisg
Ki8KK2VudW0gdnR5cGUgeworCVZOT04sCSAgICAvKiBubyB0eXBlICovCisJVlJFRywJICAgIC8q
IHJlZ3VsYXIgZmlsZSAgKi8KKwlWRElSLAkgICAgLyogZGlyZWN0b3J5ICovCisJVkJMSywJICAg
IC8qIGJsb2NrIGRldmljZSAqLworCVZDSFIsCSAgICAvKiBjaGFyYWN0ZXIgZGV2aWNlICovCisJ
VkxOSywJICAgIC8qIHN5bWJvbGljIGxpbmsgKi8KKwlWU09DSywJICAgIC8qIHNvY2tzICovCisJ
VkZJRk8sCSAgICAvKiBGSUZPICovCisJVkJBRAorfTsKKworLyoKKyAqIFJlYWRpbmcgb3Igd3Jp
dGluZyBhbnkgb2YgdGhlc2UgaXRlbXMgcmVxdWlyZXMgaG9sZGluZyB0aGUKKyAqIGFwcHJvcHJp
YXRlIGxvY2suCisgKi8KK3N0cnVjdCB2bm9kZSB7CisJdWludDY0X3QJdl9pbm87CQkvKiBpbm9k
ZSBudW1iZXIgKi8KKwlMSVNUX0VOVFJZKHZub2RlKSB2X2xpbms7CS8qIGxpbmsgZm9yIGhhc2gg
bGlzdCAqLworCXN0cnVjdCBtb3VudAkqdl9tb3VudDsJLyogbW91bnRlZCB2ZnMgcG9pbnRlciAq
LworCXN0cnVjdCB2bm9wcwkqdl9vcDsJCS8qIHZub2RlIG9wZXJhdGlvbnMgKi8KKwlpbnQJCXZf
cmVmY250OwkvKiByZWZlcmVuY2UgY291bnQgKi8KKwlpbnQJCXZfdHlwZTsJCS8qIHZub2RlIHR5
cGUgKi8KKwlpbnQJCXZfZmxhZ3M7CS8qIHZub2RlIGZsYWcgKi8KKwltb2RlX3QJCXZfbW9kZTsJ
CS8qIGZpbGUgbW9kZSAqLworCW9mZl90CQl2X3NpemU7CQkvKiBmaWxlIHNpemUgKi8KKwltdXRl
eF90CQl2X2xvY2s7CQkvKiBsb2NrIGZvciB0aGlzIHZub2RlICovCisJTElTVF9IRUFEKCwgZGVu
dHJ5KSB2X25hbWVzOwkvKiBkaXJlY3RvcnkgZW50cmllcyBwb2ludGluZyBhdCB0aGlzICovCisJ
aW50CQl2X25ybG9ja3M7CS8qIGxvY2sgY291bnQgKGZvciBkZWJ1ZykgKi8KKwl2b2lkCQkqdl9k
YXRhOwkvKiBwcml2YXRlIGRhdGEgZm9yIGZzICovCit9OworCisvKiBmbGFncyBmb3Igdm5vZGUg
Ki8KKyNkZWZpbmUgVlJPT1QJCTB4MDAwMQkJLyogcm9vdCBvZiBpdHMgZmlsZSBzeXN0ZW0gKi8K
KyNkZWZpbmUgVklTVFRZCQkweDAwMDIJCS8qIGRldmljZSBpcyB0dHkgKi8KKyNkZWZpbmUgVlBS
T1RERVYJMHgwMDA0CQkvKiBwcm90ZWN0ZWQgZGV2aWNlICovCisKKy8qCisgKiBWbm9kZSBhdHRy
aWJ1dGUKKyAqLworc3RydWN0IHZhdHRyIHsKKwl1bnNpZ25lZCBpbnQJdmFfbWFzazsKKwllbnVt
IHZ0eXBlCXZhX3R5cGU7CS8qIHZub2RlIHR5cGUgKi8KKwltb2RlX3QJCXZhX21vZGU7CS8qIGZp
bGUgYWNjZXNzIG1vZGUgKi8KKwlubGlua190CQl2YV9ubGluazsKKwl1aWRfdAkJdmFfdWlkOwor
CWdpZF90CQl2YV9naWQ7CisJZGV2X3QgICAgICAgICAgIHZhX2ZzaWQ7ICAgICAgICAvKiBpZCBv
ZiB0aGUgdW5kZXJseWluZyBmaWxlc3lzdGVtICovCisJaW5vX3QJCXZhX25vZGVpZDsKKwlzdHJ1
Y3QgdGltZXNwZWMJdmFfYXRpbWU7CisJc3RydWN0IHRpbWVzcGVjCXZhX210aW1lOworCXN0cnVj
dCB0aW1lc3BlYwl2YV9jdGltZTsKKwlkZXZfdAkJdmFfcmRldjsKKwl1aW50NjRfdAl2YV9uYmxv
Y2tzOworCW9mZl90CQl2YV9zaXplOworfTsKKworLyoKKyAqICBNb2Rlcy4KKyAqLworI2RlZmlu
ZSBWQVBQRU5EIDAwMDEwCisjZGVmaW5lCVZSRUFECTAwMDA0CQkvKiByZWFkLCB3cml0ZSwgZXhl
Y3V0ZSBwZXJtaXNzaW9ucyAqLworI2RlZmluZQlWV1JJVEUJMDAwMDIKKyNkZWZpbmUJVkVYRUMJ
MDAwMDEKKworI2RlZmluZSBJT19BUFBFTkQJMHgwMDAxCisjZGVmaW5lIElPX1NZTkMJCTB4MDAw
MgorCisvKgorICogQVJDIGFjdGlvbnMKKyAqLworI2RlZmluZSBBUkNfQUNUSU9OX1FVRVJZICAg
IDAKKyNkZWZpbmUgQVJDX0FDVElPTl9IT0xEICAgICAxCisjZGVmaW5lIEFSQ19BQ1RJT05fUkVM
RUFTRSAgMgorCit0eXBlZGVmCWludCAoKnZub3Bfb3Blbl90KQkoc3RydWN0IGZpbGUgKik7Cit0
eXBlZGVmCWludCAoKnZub3BfY2xvc2VfdCkJKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgZmlsZSAq
KTsKK3R5cGVkZWYJaW50ICgqdm5vcF9yZWFkX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IGZp
bGUgKiwgc3RydWN0IHVpbyAqLCBpbnQpOwordHlwZWRlZglpbnQgKCp2bm9wX3dyaXRlX3QpCShz
dHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHVpbyAqLCBpbnQpOwordHlwZWRlZglpbnQgKCp2bm9wX3Nl
ZWtfdCkJKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgZmlsZSAqLCBvZmZfdCwgb2ZmX3QpOwordHlw
ZWRlZglpbnQgKCp2bm9wX2lvY3RsX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IGZpbGUgKiwg
dV9sb25nLCB2b2lkICopOwordHlwZWRlZglpbnQgKCp2bm9wX2ZzeW5jX3QpCShzdHJ1Y3Qgdm5v
ZGUgKiwgc3RydWN0IGZpbGUgKik7Cit0eXBlZGVmCWludCAoKnZub3BfcmVhZGRpcl90KQkoc3Ry
dWN0IHZub2RlICosIHN0cnVjdCBmaWxlICosIHN0cnVjdCBkaXJlbnQgKik7Cit0eXBlZGVmCWlu
dCAoKnZub3BfbG9va3VwX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgY2hhciAqLCBzdHJ1Y3Qgdm5vZGUg
KiopOwordHlwZWRlZglpbnQgKCp2bm9wX2NyZWF0ZV90KQkoc3RydWN0IHZub2RlICosIGNoYXIg
KiwgbW9kZV90KTsKK3R5cGVkZWYJaW50ICgqdm5vcF9yZW1vdmVfdCkJKHN0cnVjdCB2bm9kZSAq
LCBzdHJ1Y3Qgdm5vZGUgKiwgY2hhciAqKTsKK3R5cGVkZWYJaW50ICgqdm5vcF9yZW5hbWVfdCkJ
KHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3Qgdm5vZGUgKiwgY2hhciAqLAorCQkJCSBzdHJ1Y3Qgdm5v
ZGUgKiwgc3RydWN0IHZub2RlICosIGNoYXIgKik7Cit0eXBlZGVmCWludCAoKnZub3BfbWtkaXJf
dCkJKHN0cnVjdCB2bm9kZSAqLCBjaGFyICosIG1vZGVfdCk7Cit0eXBlZGVmCWludCAoKnZub3Bf
cm1kaXJfdCkJKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3Qgdm5vZGUgKiwgY2hhciAqKTsKK3R5cGVk
ZWYJaW50ICgqdm5vcF9nZXRhdHRyX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHZhdHRyICop
OwordHlwZWRlZglpbnQgKCp2bm9wX3NldGF0dHJfdCkJKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3Qg
dmF0dHIgKik7Cit0eXBlZGVmCWludCAoKnZub3BfaW5hY3RpdmVfdCkJKHN0cnVjdCB2bm9kZSAq
KTsKK3R5cGVkZWYJaW50ICgqdm5vcF90cnVuY2F0ZV90KQkoc3RydWN0IHZub2RlICosIG9mZl90
KTsKK3R5cGVkZWYJaW50ICgqdm5vcF9saW5rX3QpICAgICAgKHN0cnVjdCB2bm9kZSAqLCBzdHJ1
Y3Qgdm5vZGUgKiwgY2hhciAqKTsKK3R5cGVkZWYgaW50ICgqdm5vcF9jYWNoZV90KSAoc3RydWN0
IHZub2RlICosIHN0cnVjdCBmaWxlICosIHN0cnVjdCB1aW8gKik7Cit0eXBlZGVmIGludCAoKnZu
b3BfZmFsbG9jYXRlX3QpIChzdHJ1Y3Qgdm5vZGUgKiwgaW50LCBsb2ZmX3QsIGxvZmZfdCk7Cit0
eXBlZGVmIGludCAoKnZub3BfcmVhZGxpbmtfdCkgIChzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHVp
byAqKTsKK3R5cGVkZWYgaW50ICgqdm5vcF9zeW1saW5rX3QpICAgKHN0cnVjdCB2bm9kZSAqLCBj
aGFyICosIGNoYXIgKik7CisKKy8qCisgKiB2bm9kZSBvcGVyYXRpb25zCisgKi8KK3N0cnVjdCB2
bm9wcyB7CisJdm5vcF9vcGVuX3QJCXZvcF9vcGVuOworCXZub3BfY2xvc2VfdAkJdm9wX2Nsb3Nl
OworCXZub3BfcmVhZF90CQl2b3BfcmVhZDsKKwl2bm9wX3dyaXRlX3QJCXZvcF93cml0ZTsKKwl2
bm9wX3NlZWtfdAkJdm9wX3NlZWs7CisJdm5vcF9pb2N0bF90CQl2b3BfaW9jdGw7CisJdm5vcF9m
c3luY190CQl2b3BfZnN5bmM7CisJdm5vcF9yZWFkZGlyX3QJCXZvcF9yZWFkZGlyOworCXZub3Bf
bG9va3VwX3QJCXZvcF9sb29rdXA7CisJdm5vcF9jcmVhdGVfdAkJdm9wX2NyZWF0ZTsKKwl2bm9w
X3JlbW92ZV90CQl2b3BfcmVtb3ZlOworCXZub3BfcmVuYW1lX3QJCXZvcF9yZW5hbWU7CisJdm5v
cF9ta2Rpcl90CQl2b3BfbWtkaXI7CisJdm5vcF9ybWRpcl90CQl2b3Bfcm1kaXI7CisJdm5vcF9n
ZXRhdHRyX3QJCXZvcF9nZXRhdHRyOworCXZub3Bfc2V0YXR0cl90CQl2b3Bfc2V0YXR0cjsKKwl2
bm9wX2luYWN0aXZlX3QJCXZvcF9pbmFjdGl2ZTsKKwl2bm9wX3RydW5jYXRlX3QJCXZvcF90cnVu
Y2F0ZTsKKwl2bm9wX2xpbmtfdAkJdm9wX2xpbms7CisJdm5vcF9jYWNoZV90CQl2b3BfY2FjaGU7
CisJdm5vcF9mYWxsb2NhdGVfdAl2b3BfZmFsbG9jYXRlOworCXZub3BfcmVhZGxpbmtfdAkJdm9w
X3JlYWRsaW5rOworCXZub3Bfc3ltbGlua190CQl2b3Bfc3ltbGluazsKK307CisKKy8qCisgKiB2
bm9kZSBpbnRlcmZhY2UKKyAqLworI2RlZmluZSBWT1BfT1BFTihWUCwgRlApCSAgICgoVlApLT52
X29wLT52b3Bfb3BlbikoRlApCisjZGVmaW5lIFZPUF9DTE9TRShWUCwgRlApCSAgICgoVlApLT52
X29wLT52b3BfY2xvc2UpKFZQLCBGUCkKKyNkZWZpbmUgVk9QX1JFQUQoVlAsIEZQLCBVLCBGKQkg
ICAoKFZQKS0+dl9vcC0+dm9wX3JlYWQpKFZQLCBGUCwgVSwgRikKKyNkZWZpbmUgVk9QX0NBQ0hF
KFZQLCBGUCwgVSkJICAgKChWUCktPnZfb3AtPnZvcF9jYWNoZSkoVlAsIEZQLCBVKQorI2RlZmlu
ZSBWT1BfV1JJVEUoVlAsIFUsIEYpCSAgICgoVlApLT52X29wLT52b3Bfd3JpdGUpKFZQLCBVLCBG
KQorI2RlZmluZSBWT1BfU0VFSyhWUCwgRlAsIE9MRCwgTkVXKSAoKFZQKS0+dl9vcC0+dm9wX3Nl
ZWspKFZQLCBGUCwgT0xELCBORVcpCisjZGVmaW5lIFZPUF9JT0NUTChWUCwgRlAsIEMsIEEpCSAg
ICgoVlApLT52X29wLT52b3BfaW9jdGwpKFZQLCBGUCwgQywgQSkKKyNkZWZpbmUgVk9QX0ZTWU5D
KFZQLCBGUCkJICAgKChWUCktPnZfb3AtPnZvcF9mc3luYykoVlAsIEZQKQorI2RlZmluZSBWT1Bf
UkVBRERJUihWUCwgRlAsIERJUikgICAoKFZQKS0+dl9vcC0+dm9wX3JlYWRkaXIpKFZQLCBGUCwg
RElSKQorI2RlZmluZSBWT1BfTE9PS1VQKERWUCwgTiwgVlApCSAgICgoRFZQKS0+dl9vcC0+dm9w
X2xvb2t1cCkoRFZQLCBOLCBWUCkKKyNkZWZpbmUgVk9QX0NSRUFURShEVlAsIE4sIE0pCSAgICgo
RFZQKS0+dl9vcC0+dm9wX2NyZWF0ZSkoRFZQLCBOLCBNKQorI2RlZmluZSBWT1BfUkVNT1ZFKERW
UCwgVlAsIE4pCSAgICgoRFZQKS0+dl9vcC0+dm9wX3JlbW92ZSkoRFZQLCBWUCwgTikKKyNkZWZp
bmUgVk9QX1JFTkFNRShEVlAxLCBWUDEsIE4xLCBEVlAyLCBWUDIsIE4yKSBcCisJCQkgICAoKERW
UDEpLT52X29wLT52b3BfcmVuYW1lKShEVlAxLCBWUDEsIE4xLCBEVlAyLCBWUDIsIE4yKQorI2Rl
ZmluZSBWT1BfTUtESVIoRFZQLCBOLCBNKQkgICAoKERWUCktPnZfb3AtPnZvcF9ta2RpcikoRFZQ
LCBOLCBNKQorI2RlZmluZSBWT1BfUk1ESVIoRFZQLCBWUCwgTikJICAgKChEVlApLT52X29wLT52
b3Bfcm1kaXIpKERWUCwgVlAsIE4pCisjZGVmaW5lIFZPUF9HRVRBVFRSKFZQLCBWQVApCSAgICgo
VlApLT52X29wLT52b3BfZ2V0YXR0cikoVlAsIFZBUCkKKyNkZWZpbmUgVk9QX1NFVEFUVFIoVlAs
IFZBUCkJICAgKChWUCktPnZfb3AtPnZvcF9zZXRhdHRyKShWUCwgVkFQKQorI2RlZmluZSBWT1Bf
SU5BQ1RJVkUoVlApCSAgICgoVlApLT52X29wLT52b3BfaW5hY3RpdmUpKFZQKQorI2RlZmluZSBW
T1BfVFJVTkNBVEUoVlAsIE4pCSAgICgoVlApLT52X29wLT52b3BfdHJ1bmNhdGUpKFZQLCBOKQor
I2RlZmluZSBWT1BfTElOSyhEVlAsIFNWUCwgTikgCSAgICgoRFZQKS0+dl9vcC0+dm9wX2xpbmsp
KERWUCwgU1ZQLCBOKQorI2RlZmluZSBWT1BfRkFMTE9DQVRFKFZQLCBNLCBPRkYsIExFTikgKChW
UCktPnZfb3AtPnZvcF9mYWxsb2NhdGUpKFZQLCBNLCBPRkYsIExFTikKKyNkZWZpbmUgVk9QX1JF
QURMSU5LKFZQLCBVKSAgICAgICAgKChWUCktPnZfb3AtPnZvcF9yZWFkbGluaykoVlAsIFUpCisj
ZGVmaW5lIFZPUF9TWU1MSU5LKERWUCwgT1AsIE5QKSAgICgoRFZQKS0+dl9vcC0+dm9wX3N5bWxp
bmspKERWUCwgT1AsIE5QKQorCitpbnQJIHZvcF9udWxsb3Aodm9pZCk7CitpbnQJIHZvcF9laW52
YWwodm9pZCk7CitpbnQJIHZvcF9lcGVybSh2b2lkKTsKK2ludAkgdm9wX2Vyb2ZzKHZvaWQpOwor
c3RydWN0IHZub2RlICp2bl9sb29rdXAoc3RydWN0IG1vdW50ICosIHVpbnQ2NF90KTsKK3ZvaWQJ
IHZuX2xvY2soc3RydWN0IHZub2RlICopOwordm9pZAkgdm5fdW5sb2NrKHN0cnVjdCB2bm9kZSAq
KTsKK2ludAkgdm5fc3RhdChzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHN0YXQgKik7CitpbnQJIHZu
X3NldHRpbWVzKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgdGltZXNwZWNbMl0pOworaW50CSB2bl9z
ZXRtb2RlKHN0cnVjdCB2bm9kZSAqLCBtb2RlX3QgbW9kZSk7CitpbnQJIHZuX2FjY2VzcyhzdHJ1
Y3Qgdm5vZGUgKiwgaW50KTsKK2ludAkgdmdldChzdHJ1Y3QgbW91bnQgKiwgdWludDY0X3QgaW5v
LCBzdHJ1Y3Qgdm5vZGUgKip2cHApOwordm9pZAkgdnB1dChzdHJ1Y3Qgdm5vZGUgKik7Cit2b2lk
CSB2cmVmKHN0cnVjdCB2bm9kZSAqKTsKK3ZvaWQJIHZyZWxlKHN0cnVjdCB2bm9kZSAqKTsKK3Zv
aWQJIHZmbHVzaChzdHJ1Y3QgbW91bnQgKik7Cit2b2lkIHZuX2FkZF9uYW1lKHN0cnVjdCB2bm9k
ZSAqLCBzdHJ1Y3QgZGVudHJ5ICopOwordm9pZCB2bl9kZWxfbmFtZShzdHJ1Y3Qgdm5vZGUgKiwg
c3RydWN0IGRlbnRyeSAqKTsKKworZXh0ZXJuIGVudW0gdnR5cGUgaWZ0b3Z0X3RhYltdOworZXh0
ZXJuIGludCB2dHRvaWZfdGFiW107CisjZGVmaW5lIElGVE9WVChtb2RlKSAgICAoaWZ0b3Z0X3Rh
YlsoKG1vZGUpICYgU19JRk1UKSA+PiAxMl0pCisjZGVmaW5lIFZUVE9JRihpbmR4KQkodnR0b2lm
X3RhYlsoaW50KShpbmR4KV0pCisjZGVmaW5lIE1BS0VJTU9ERShpbmR4LCBtb2RlKSAgIChpbnQp
KFZUVE9JRihpbmR4KSB8IChtb2RlKSkKKworI2RlZmluZSBWQVRUUl9OVUxMKHZwKSAoKih2cCkg
PSAodmF0dHJfdCl7fSkKKworc3RhdGljIGlubGluZSB2b2lkIHZub2RlX3BhZ2VyX3NldHNpemUo
c3RydWN0IHZub2RlICp2cCwgb2ZmX3Qgc2l6ZSkKK3sKKwl2cC0+dl9zaXplID0gc2l6ZTsKK30K
KworX19FTkRfREVDTFMKKworI2VuZGlmCisKKyNlbmRpZiAvKiAhX1NZU19WTk9ERV9IXyAqLwpk
aWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvbG9va3VwLmMgYi9saWIvdmZzY29yZS9sb29rdXAuYwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uYWQwM2ZlMjUKLS0tIC9kZXYvbnVs
bAorKysgYi9saWIvdmZzY29yZS9sb29rdXAuYwpAQCAtMCwwICsxLDM3NSBAQAorLyoKKyAqIENv
cHlyaWdodCAoYykgMjAwNS0yMDA3LCBLb2hzdWtlIE9odGFuaQorICogQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGF1dGhvciBub3Ig
dGhlIG5hbWVzIG9mIGFueSBjby1jb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQorICog
ICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICog
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQor
ICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgPHVuaXN0
ZC5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8
c3RkbGliLmg+CisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisKKyNpbmNsdWRlIDxvc3YvZGVudHJ5
Lmg+CisjaW5jbHVkZSA8b3N2L3Zub2RlLmg+CisjaW5jbHVkZSAidmZzLmgiCisKK3N0YXRpYyBz
c2l6ZV90CityZWFkX2xpbmsoc3RydWN0IHZub2RlICp2cCwgY2hhciAqYnVmLCBzaXplX3QgYnVm
c3osIHNzaXplX3QgKnN6KQoreworICAgIHN0cnVjdCBpb3ZlYyBpb3YgPSB7YnVmLCBidWZzen07
CisgICAgc3RydWN0IHVpbyAgIHVpbyA9IHsmaW92LCAxLCAwLCAoc3NpemVfdCkgYnVmc3osIFVJ
T19SRUFEfTsKKyAgICBpbnQgcmM7CisKKyAgICAqc3ogPSAwOworICAgIHZuX2xvY2sodnApOwor
ICAgIHJjICA9IFZPUF9SRUFETElOSyh2cCwgJnVpbyk7CisgICAgdm5fdW5sb2NrKHZwKTsKKwor
ICAgIGlmIChyYyAhPSAwKSB7CisgICAgICAgIHJldHVybiAocmMpOworICAgIH0KKworICAgICpz
eiA9IGJ1ZnN6IC0gdWlvLnVpb19yZXNpZDsKKyAgICByZXR1cm4gKDApOworfQorCitpbnQKK25h
bWVpX2ZvbGxvd19saW5rKHN0cnVjdCBkZW50cnkgKmRwLCBjaGFyICpub2RlLCBjaGFyICpuYW1l
LCBjaGFyICpmcCwgc2l6ZV90IG1vdW50cG9pbnRfbGVuKQoreworICAgIHN0ZDo6dW5pcXVlX3B0
cjxjaGFyIFtdPiBsaW5rIChuZXcgY2hhcltQQVRIX01BWF0pOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxjaGFyIFtdPiB0IChuZXcgY2hhcltQQVRIX01BWF0pOworICAgIGNoYXIgICAgKmxwOworICAg
IGludCAgICAgZXJyb3I7CisgICAgc3NpemVfdCBzejsKKyAgICBjaGFyICAgICpwOworICAgIGlu
dCAgICAgYzsKKworICAgIGxwICAgID0gbGluay5nZXQoKTsKKyAgICBlcnJvciA9IHJlYWRfbGlu
ayhkcC0+ZF92bm9kZSwgbHAsIFBBVEhfTUFYLCAmc3opOworICAgIGlmIChlcnJvciAhPSAwKSB7
CisgICAgICAgIHJldHVybiAoZXJyb3IpOworICAgIH0KKyAgICBscFtzel0gPSAwOworCisgICAg
cCA9IGZwICsgbW91bnRwb2ludF9sZW4gKyBzdHJsZW4obm9kZSk7CisgICAgYyA9IHN0cmxlbihu
b2RlKSAtIHN0cmxlbihuYW1lKSAtIDE7CisgICAgbm9kZVtjXSA9IDA7CisKKyAgICBpZiAobHBb
MF0gPT0gJy8nKSB7CisgICAgICAgIHN0cmxjYXQobHAsIHAsIFBBVEhfTUFYKTsKKyAgICAgICAg
c3RybGNweShmcCwgbHAsIFBBVEhfTUFYKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzdHJsY3B5
KHQuZ2V0KCksIHAsIFBBVEhfTUFYKTsKKyAgICAgICAgc3RybGNweShub2RlLCBmcCwgbW91bnRw
b2ludF9sZW4gKyBjICsgMSk7CisgICAgICAgIHBhdGhfY29udihub2RlLCBscCwgZnApOworICAg
ICAgICBzdHJsY2F0KGZwLCB0LmdldCgpLCBQQVRIX01BWCk7CisgICAgfQorICAgIG5vZGVbMF0g
PSAwOworICAgIG5hbWVbMF0gPSAwOworICAgIHJldHVybiAoMCk7Cit9CisvKgorICogQ29udmVy
dCBhIHBhdGhuYW1lIGludG8gYSBwb2ludGVyIHRvIGEgZGVudHJ5CisgKgorICogQHBhdGg6IGZ1
bGwgcGF0aCBuYW1lLgorICogQGRwcDogIGRlbnRyeSB0byBiZSByZXR1cm5lZC4KKyAqLworaW50
CituYW1laShjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3QgZGVudHJ5ICoqZHBwKQoreworICAgIGNo
YXIgKnA7CisgICAgY2hhciBub2RlW1BBVEhfTUFYXTsKKyAgICBjaGFyIG5hbWVbUEFUSF9NQVhd
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxjaGFyIFtdPiBmcCAobmV3IGNoYXIgW1BBVEhfTUFYXSk7
CisgICAgc3RkOjp1bmlxdWVfcHRyPGNoYXIgW10+IHQgKG5ldyBjaGFyIFtQQVRIX01BWF0pOwor
ICAgIHN0cnVjdCBtb3VudCAqbXA7CisgICAgc3RydWN0IGRlbnRyeSAqZHAsICpkZHA7CisgICAg
c3RydWN0IHZub2RlICpkdnAsICp2cDsKKyAgICBpbnQgZXJyb3IsIGk7CisgICAgaW50IGxpbmtz
X2ZvbGxvd2VkOworICAgIGJvb2wgbmVlZF9jb250aW51ZTsKKworICAgIERQUklOVEYoVkZTREJf
Vk5PREUsICgibmFtZWk6IHBhdGg9JXNcbiIsIHBhdGgpKTsKKworICAgIGxpbmtzX2ZvbGxvd2Vk
ID0gMDsKKyAgICBzdHJsY3B5KGZwLmdldCgpLCBwYXRoLCBQQVRIX01BWCk7CisKKyAgICBkbyB7
CisgICAgICAgIG5lZWRfY29udGludWUgPSBmYWxzZTsKKyAgICAgICAgLyoKKyAgICAgICAgICog
Q29udmVydCBhIGZ1bGwgcGF0aCBuYW1lIHRvIGl0cyBtb3VudCBwb2ludCBhbmQKKyAgICAgICAg
ICogdGhlIGxvY2FsIG5vZGUgaW4gdGhlIGZpbGUgc3lzdGVtLgorICAgICAgICAgKi8KKyAgICAg
ICAgaWYgKHZmc19maW5kcm9vdChmcC5nZXQoKSwgJm1wLCAmcCkpIHsKKyAgICAgICAgICAgIHJl
dHVybiBFTk9URElSOworICAgICAgICB9CisgICAgICAgIGludCBtb3VudHBvaW50X2xlbiA9IHAg
LSBmcC5nZXQoKSAtIDE7CisgICAgICAgIHN0cmxjcHkobm9kZSwgIi8iLCBzaXplb2Yobm9kZSkp
OworICAgICAgICBzdHJsY2F0KG5vZGUsIHAsIHNpemVvZihub2RlKSk7CisgICAgICAgIGRwID0g
ZGVudHJ5X2xvb2t1cChtcCwgbm9kZSk7CisgICAgICAgIGlmIChkcCkgeworICAgICAgICAgICAg
Lyogdm5vZGUgaXMgYWxyZWFkeSBhY3RpdmUuICovCisgICAgICAgICAgICAqZHBwID0gZHA7Cisg
ICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICAvKgorICAgICAgICAgKiBG
aW5kIHRhcmdldCB2bm9kZSwgc3RhcnRlZCBmcm9tIHJvb3QgZGlyZWN0b3J5LgorICAgICAgICAg
KiBUaGlzIGlzIGRvbmUgdG8gYXR0YWNoIHRoZSBmcyBzcGVjaWZpYyBkYXRhIHRvCisgICAgICAg
ICAqIHRoZSB0YXJnZXQgdm5vZGUuCisgICAgICAgICAqLworICAgICAgICBkZHAgPSBtcC0+bV9y
b290OworICAgICAgICBpZiAoIWRkcCkgeworICAgICAgICAgICAgc3lzX3BhbmljKCJWRlM6IG5v
IHJvb3QiKTsKKyAgICAgICAgfQorICAgICAgICBkcmVmKGRkcCk7CisKKyAgICAgICAgbm9kZVsw
XSA9ICdcMCc7CisKKyAgICAgICAgd2hpbGUgKCpwICE9ICdcMCcpIHsKKyAgICAgICAgICAgIC8q
CisgICAgICAgICAgICAgKiBHZXQgbG93ZXIgZGlyZWN0b3J5L2ZpbGUgbmFtZS4KKyAgICAgICAg
ICAgICAqLworICAgICAgICAgICAgd2hpbGUgKCpwID09ICcvJykgeworICAgICAgICAgICAgICAg
IHArKzsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCpwID09ICdcMCcpIHsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZm9yIChp
ID0gMDsgaSA8IFBBVEhfTUFYOyBpKyspIHsKKyAgICAgICAgICAgICAgICBpZiAoKnAgPT0gJ1ww
JyB8fCAqcCA9PSAnLycpIHsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIG5hbWVbaV0gPSAqcCsrOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgbmFtZVtpXSA9ICdcMCc7CisKKyAgICAgICAgICAgIC8qCisgICAgICAgICAg
ICAgKiBHZXQgYSB2bm9kZSBmb3IgdGhlIHRhcmdldC4KKyAgICAgICAgICAgICAqLworICAgICAg
ICAgICAgc3RybGNhdChub2RlLCAiLyIsIHNpemVvZihub2RlKSk7CisgICAgICAgICAgICBzdHJs
Y2F0KG5vZGUsIG5hbWUsIHNpemVvZihub2RlKSk7CisgICAgICAgICAgICBkdnAgPSBkZHAtPmRf
dm5vZGU7CisgICAgICAgICAgICB2bl9sb2NrKGR2cCk7CisgICAgICAgICAgICBkcCA9IGRlbnRy
eV9sb29rdXAobXAsIG5vZGUpOworICAgICAgICAgICAgaWYgKGRwID09IG51bGxwdHIpIHsKKyAg
ICAgICAgICAgICAgICAvKiBGaW5kIGEgdm5vZGUgaW4gdGhpcyBkaXJlY3RvcnkuICovCisgICAg
ICAgICAgICAgICAgZXJyb3IgPSBWT1BfTE9PS1VQKGR2cCwgbmFtZSwgJnZwKTsKKyAgICAgICAg
ICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgICAgICAgICAgdm5fdW5sb2NrKGR2cCk7
CisgICAgICAgICAgICAgICAgICAgIGRyZWxlKGRkcCk7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBkcCA9IGRl
bnRyeV9hbGxvYyhkZHAsIHZwLCBub2RlKTsKKyAgICAgICAgICAgICAgICB2cHV0KHZwKTsKKwor
ICAgICAgICAgICAgICAgIGlmICghZHApIHsKKyAgICAgICAgICAgICAgICAgICAgdm5fdW5sb2Nr
KGR2cCk7CisgICAgICAgICAgICAgICAgICAgIGRyZWxlKGRkcCk7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBFTk9NRU07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICAgICAgdm5fdW5sb2NrKGR2cCk7CisgICAgICAgICAgICBkcmVsZShkZHApOworICAgICAg
ICAgICAgZGRwID0gZHA7CisKKyAgICAgICAgICAgIGlmIChkcC0+ZF92bm9kZS0+dl90eXBlID09
IFZMTkspIHsKKyAgICAgICAgICAgICAgICBlcnJvciA9IG5hbWVpX2ZvbGxvd19saW5rKGRwLCBu
b2RlLCBuYW1lLCBmcC5nZXQoKSwgbW91bnRwb2ludF9sZW4pOworICAgICAgICAgICAgICAgIGlm
IChlcnJvcikgeworICAgICAgICAgICAgICAgICAgICBkcmVsZShkcCk7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiAoZXJyb3IpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ICAgIGRyZWxlKGRwKTsKKworICAgICAgICAgICAgICAgIHAgICAgICAgPSBmcC5nZXQoKTsKKyAg
ICAgICAgICAgICAgICBkcCAgICAgID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICBkZHAgICAg
ID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICB2cCAgICAgID0gbnVsbHB0cjsKKyAgICAgICAg
ICAgICAgICBkdnAgICAgID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICBuYW1lWzBdID0gMDsK
KyAgICAgICAgICAgICAgICBub2RlWzBdID0gMDsKKworICAgICAgICAgICAgICAgIGlmICgrK2xp
bmtzX2ZvbGxvd2VkID49IE1BWFNZTUxJTktTKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biAoRUxPT1ApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBuZWVkX2NvbnRp
bnVlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgaWYgKCpwID09ICcvJyAmJiBkZHAtPmRfdm5vZGUtPnZfdHlwZSAhPSBWRElSKSB7
CisgICAgICAgICAgICAgICAgZHJlbGUoZGRwKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gRU5P
VERJUjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0gd2hpbGUgKG5lZWRfY29udGlu
dWUgPT0gdHJ1ZSk7CisKKyAgICAqZHBwID0gZHA7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qCisg
KiBDb252ZXJ0IGxhc3QgY29tcG9uZW50IGluIHRoZSBwYXRoIHRvIHBvaW50ZXIgdG8gZGVudHJ5
CisgKgorICogQHBhdGg6IGZ1bGwgcGF0aCBuYW1lCisgKiBAZGRwIDogcG9pbnRlciB0byBkZW50
cnkgb2YgcGFyZW50CisgKiBAZHBwIDogZGVudHJ5IHRvIGJlIHJldHVybmVkCisgKi8KK2ludAor
bmFtZWlfbGFzdF9ub2ZvbGxvdyhjaGFyICpwYXRoLCBzdHJ1Y3QgZGVudHJ5ICpkZHAsIHN0cnVj
dCBkZW50cnkgKipkcHApCit7CisgICAgY2hhciAgICAgICAgICAqbmFtZTsKKyAgICBpbnQgICAg
ICAgICAgIGVycm9yOworICAgIHN0cnVjdCBtb3VudCAgKm1wOworICAgIGNoYXIgICAgICAgICAg
KnA7CisgICAgc3RydWN0IGRlbnRyeSAqZHA7CisgICAgc3RydWN0IHZub2RlICAqZHZwOworICAg
IHN0cnVjdCB2bm9kZSAgKnZwOworICAgIHN0ZDo6dW5pcXVlX3B0cjxjaGFyIFtdPiBub2RlIChu
ZXcgY2hhcltQQVRIX01BWF0pOworCisgICAgZHZwICA9IG51bGxwdHI7CisKKyAgICBpZiAocGF0
aFswXSAhPSAnLycpIHsKKyAgICAgICAgcmV0dXJuIChFTk9URElSKTsKKyAgICB9CisKKyAgICBu
YW1lID0gc3RycmNocihwYXRoLCAnLycpOworICAgIGlmIChuYW1lID09IG51bGxwdHIpIHsKKyAg
ICAgICAgcmV0dXJuIChFTk9FTlQpOworICAgIH0KKyAgICBuYW1lKys7CisKKyAgICBlcnJvciA9
IHZmc19maW5kcm9vdChwYXRoLCAmbXAsICZwKTsKKyAgICBpZiAoZXJyb3IgIT0gMCkgeworICAg
ICAgICByZXR1cm4gKEVOT1RESVIpOworICAgIH0KKworICAgIHN0cmxjcHkobm9kZS5nZXQoKSwg
Ii8iLCBQQVRIX01BWCk7CisgICAgc3RybGNhdChub2RlLmdldCgpLCBwLCBQQVRIX01BWCk7CisK
KyAgICAvLyBXZSB3YW50IHRvIHRyZWF0IHRoaW5ncyBsaWtlIC90bXAvIHRoZSBzYW1lIGFzIC90
bXAuIEJlc3Qgd2F5IHRvIGRvIHRoYXQKKyAgICAvLyBpcyB0byBpZ25vcmUgdGhlIGxhc3QgY2hh
cmFjdGVyLCBleGNlcHQgd2hlbiB3ZSdyZSBzdGF0aW5nIHRoZSByb290LgorICAgIGF1dG8gbCA9
IHN0cmxlbihub2RlLmdldCgpKSAtIDE7CisgICAgaWYgKGwgJiYgbm9kZS5nZXQoKVtsXSA9PSAn
LycpIHsKKyAgICAgICAgbm9kZS5nZXQoKVtsXSA9ICdcMCc7CisgICAgfQorCisgICAgZHZwID0g
ZGRwLT5kX3Zub2RlOworICAgIHZuX2xvY2soZHZwKTsKKyAgICBkcCA9IGRlbnRyeV9sb29rdXAo
bXAsIG5vZGUuZ2V0KCkpOworICAgIGlmIChkcCA9PSBudWxscHRyKSB7CisgICAgICAgIGVycm9y
ID0gVk9QX0xPT0tVUChkdnAsIG5hbWUsICZ2cCk7CisgICAgICAgIGlmIChlcnJvciAhPSAwKSB7
CisgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgfQorCisgICAgICAgIGRwID0gZGVudHJ5
X2FsbG9jKGRkcCwgdnAsIG5vZGUuZ2V0KCkpOworICAgICAgICB2cHV0KHZwKTsKKworICAgICAg
ICBpZiAoZHAgPT0gbnVsbHB0cikgeworICAgICAgICAgICAgZXJyb3IgPSBFTk9NRU07CisgICAg
ICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgfQorICAgIH0KKworICAgICpkcHAgID0gZHA7Cisg
ICAgZXJyb3IgPSAwOworb3V0OgorICAgIGlmIChkdnAgIT0gbnVsbHB0cikgeworICAgICAgICB2
bl91bmxvY2soZHZwKTsKKyAgICB9CisgICAgcmV0dXJuIChlcnJvcik7Cit9CisKKy8qCisgKiBT
ZWFyY2ggYSBwYXRobmFtZS4KKyAqIFRoaXMgaXMgYSB2ZXJ5IGNlbnRyYWwgYnV0IG5vdCBzbyBj
b21wbGljYXRlZCByb3V0aW5lLiA7LVAKKyAqCisgKiBAcGF0aDogZnVsbCBwYXRoLgorICogQGRw
cDogIHBvaW50ZXIgdG8gZGVudHJ5IGZvciBkaXJlY3RvcnkuCisgKiBAbmFtZTogaWYgbm9uLW51
bGwsIHBvaW50ZXIgdG8gZmlsZSBuYW1lIGluIHBhdGguCisgKgorICogVGhpcyByb3V0aW5lIHJl
dHVybnMgYSBsb2NrZWQgZGlyZWN0b3J5IHZub2RlIGFuZCBmaWxlIG5hbWUuCisgKi8KK2ludAor
bG9va3VwKGNoYXIgKnBhdGgsIHN0cnVjdCBkZW50cnkgKipkcHAsIGNoYXIgKipuYW1lKQorewor
ICAgIGNoYXIgYnVmW1BBVEhfTUFYXTsKKyAgICBjaGFyIHJvb3RbXSA9ICIvIjsKKyAgICBjaGFy
ICpmaWxlLCAqZGlyOworICAgIHN0cnVjdCBkZW50cnkgKmRwOworICAgIGludCBlcnJvcjsKKwor
ICAgIERQUklOVEYoVkZTREJfVk5PREUsICgibG9va3VwOiBwYXRoPSVzXG4iLCBwYXRoKSk7CisK
KyAgICAvKgorICAgICAqIEdldCB0aGUgcGF0aCBmb3IgZGlyZWN0b3J5LgorICAgICAqLworICAg
IHN0cmxjcHkoYnVmLCBwYXRoLCBzaXplb2YoYnVmKSk7CisgICAgZmlsZSA9IHN0cnJjaHIoYnVm
LCAnLycpOworICAgIGlmICghYnVmWzBdKSB7CisgICAgICAgIHJldHVybiBFTk9URElSOworICAg
IH0KKyAgICBpZiAoZmlsZSA9PSBidWYpIHsKKyAgICAgICAgZGlyID0gcm9vdDsKKyAgICB9IGVs
c2UgeworICAgICAgICAqZmlsZSA9ICdcMCc7CisgICAgICAgIGRpciA9IGJ1ZjsKKyAgICB9Cisg
ICAgLyoKKyAgICAgKiBHZXQgdGhlIHZub2RlIGZvciBkaXJlY3RvcnkKKyAgICAgKi8KKyAgICBp
ZiAoKGVycm9yID0gbmFtZWkoZGlyLCAmZHApKSAhPSAwKSB7CisgICAgICAgIHJldHVybiBlcnJv
cjsKKyAgICB9CisgICAgaWYgKGRwLT5kX3Zub2RlLT52X3R5cGUgIT0gVkRJUikgeworICAgICAg
ICBkcmVsZShkcCk7CisgICAgICAgIHJldHVybiBFTk9URElSOworICAgIH0KKworICAgICpkcHAg
PSBkcDsKKworICAgIGlmIChuYW1lKSB7CisgICAgICAgIC8qCisgICAgICAgICAqIEdldCB0aGUg
ZmlsZSBuYW1lCisgICAgICAgICAqLworICAgICAgICAqbmFtZSA9IHN0cnJjaHIocGF0aCwgJy8n
KSArIDE7CisgICAgfQorICAgIHJldHVybiAwOworfQorCisvKgorICogdm5vZGVfaW5pdCgpIGlz
IGNhbGxlZCBvbmNlIChmcm9tIHZmc19pbml0KQorICogaW4gaW5pdGlhbGl6YXRpb24uCisgKi8K
K3ZvaWQKK2xvb2t1cF9pbml0KHZvaWQpCit7CisgICAgZGVudHJ5X2luaXQoKTsKK30KZGlmZiAt
LWdpdCBhL2xpYi92ZnNjb3JlL21haW4uYyBiL2xpYi92ZnNjb3JlL21haW4uYwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uY2QxNDExMTcKLS0tIC9kZXYvbnVsbAorKysgYi9s
aWIvdmZzY29yZS9tYWluLmMKQEAgLTAsMCArMSwyNDEzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEzIENsb3VkaXVzIFN5c3RlbXMsIEx0ZC4KKyAqCisgKiBUaGlzIHdvcmsgaXMgb3BlbiBz
b3VyY2Ugc29mdHdhcmUsIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUKKyAqIEJTRCBs
aWNlbnNlIGFzIGRlc2NyaWJlZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSB0b3AtbGV2ZWwg
ZGlyZWN0b3J5LgorICovCisKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDUtMjAwNywgS29oc3Vr
ZSBPaHRhbmkKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVy
IHRoZSBuYW1lIG9mIHRoZSBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBhbnkgY28tY29udHJpYnV0
b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKKyAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNpbmNsdWRlIDxzeXMvc3RhdHZm
cy5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyNpbmNs
dWRlIDxzeXMvc2VuZGZpbGUuaD4KKworI2luY2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUgPHVu
aXN0ZC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVk
ZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNp
bmNsdWRlIDxzaWduYWwuaD4KKyNkZWZpbmUgb3BlbiBfX29wZW5fdmFyaWFkaWMKKyNkZWZpbmUg
ZmNudGwgX19mY250bF92YXJpYWRpYworI2luY2x1ZGUgPGZjbnRsLmg+CisjdW5kZWYgb3Blbgor
I3VuZGVmIGZjbnRsCisKKyNpbmNsdWRlIDxvc3YvcHJleC5oPgorI2luY2x1ZGUgPG9zdi92bm9k
ZS5oPgorI2luY2x1ZGUgPG9zdi9zdHViYmluZy5oaD4KKyNpbmNsdWRlIDxvc3YvaW9jdGwuaD4K
KyNpbmNsdWRlIDxvc3YvdHJhY2UuaGg+CisjaW5jbHVkZSA8b3N2L3J1bi5oaD4KKyNpbmNsdWRl
IDxkcml2ZXJzL2NvbnNvbGUuaGg+CisKKyNpbmNsdWRlICJ2ZnMuaCIKKworI2luY2x1ZGUgImxp
YmMvaW50ZXJuYWwvbGliYy5oIgorCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPHVu
b3JkZXJlZF9tYXA+CisKKyNpbmNsdWRlIDxzeXMvZmlsZS5oPgorCisjaW5jbHVkZSAiZnMvZnMu
aGgiCisjaW5jbHVkZSAibGliYy9saWJjLmhoIgorCisjaW5jbHVkZSA8bW50ZW50Lmg+CisjaW5j
bHVkZSA8c3lzL21tYW4uaD4KKworI2luY2x1ZGUgPG9zdi9jbG9jay5oaD4KKyNpbmNsdWRlIDxh
cGkvdXRpbWUuaD4KKyNpbmNsdWRlIDxjaHJvbm8+CisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisK
KworI2lmZGVmIERFQlVHX1ZGUworaW50CXZmc19kZWJ1ZyA9IFZGU0RCX0ZMQUdTOworI2VuZGlm
CisKK3N0ZDo6YXRvbWljPG1vZGVfdD4gZ2xvYmFsX3VtYXNre1NfSVdHUlAgfCBTX0lXT1RIfTsK
Kworc3RhdGljIGlubGluZSBtb2RlX3QgYXBwbHlfdW1hc2sobW9kZV90IG1vZGUpCit7CisgICAg
cmV0dXJuIG1vZGUgJiB+Z2xvYmFsX3VtYXNrLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhl
ZCk7Cit9CisKK1RSQUNFUE9JTlQodHJhY2VfdmZzX29wZW4sICJcIiVzXCIgMHgleCAwJTBvIiwg
Y29uc3QgY2hhciosIGludCwgbW9kZV90KTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX29wZW5fcmV0
LCAiJWQiLCBpbnQpOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfb3Blbl9lcnIsICIlZCIsIGludCk7
CisKK3N0cnVjdCB0YXNrICptYWluX3Rhc2s7CS8qIHdlIG9ubHkgaGF2ZSBhIHNpbmdsZSBwcm9j
ZXNzICovCisKK2V4dGVybiAiQyIKK2ludCBvcGVuKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBpbnQg
ZmxhZ3MsIC4uLikKK3sKKyAgICBtb2RlX3QgbW9kZSA9IDA7CisgICAgaWYgKGZsYWdzICYgT19D
UkVBVCkgeworICAgICAgICB2YV9saXN0IGFwOworICAgICAgICB2YV9zdGFydChhcCwgZmxhZ3Mp
OworICAgICAgICBtb2RlID0gYXBwbHlfdW1hc2sodmFfYXJnKGFwLCBtb2RlX3QpKTsKKyAgICAg
ICAgdmFfZW5kKGFwKTsKKyAgICB9CisKKyAgICB0cmFjZV92ZnNfb3BlbihwYXRobmFtZSwgZmxh
Z3MsIG1vZGUpOworCisgICAgc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7CisgICAgY2hhciBw
YXRoW1BBVEhfTUFYXTsKKyAgICBzdHJ1Y3QgZmlsZSAqZnA7CisgICAgaW50IGZkLCBlcnJvcjsK
KyAgICBpbnQgYWNjOworCisgICAgYWNjID0gMDsKKyAgICBzd2l0Y2ggKGZsYWdzICYgT19BQ0NN
T0RFKSB7CisgICAgY2FzZSBPX1JET05MWToKKyAgICAgICAgYWNjID0gVlJFQUQ7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgT19XUk9OTFk6CisgICAgICAgIGFjYyA9IFZXUklURTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBPX1JEV1I6CisgICAgICAgIGFjYyA9IFZSRUFEIHwgVldSSVRF
OworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBlcnJvciA9IHRhc2tfY29udih0LCBwYXRo
bmFtZSwgYWNjLCBwYXRoKTsKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIGdvdG8gb3V0X2Vycm5v
OworCisgICAgZXJyb3IgPSBzeXNfb3BlbihwYXRoLCBmbGFncywgbW9kZSwgJmZwKTsKKyAgICBp
ZiAoZXJyb3IpCisgICAgICAgIGdvdG8gb3V0X2Vycm5vOworCisgICAgZXJyb3IgPSBmZGFsbG9j
KGZwLCAmZmQpOworICAgIGlmIChlcnJvcikKKyAgICAgICAgZ290byBvdXRfZnB1dDsKKyAgICBm
ZHJvcChmcCk7CisgICAgdHJhY2VfdmZzX29wZW5fcmV0KGZkKTsKKyAgICByZXR1cm4gZmQ7CisK
KyAgICBvdXRfZnB1dDoKKyAgICBmZHJvcChmcCk7CisgICAgb3V0X2Vycm5vOgorICAgIGVycm5v
ID0gZXJyb3I7CisgICAgdHJhY2VfdmZzX29wZW5fZXJyKGVycm9yKTsKKyAgICByZXR1cm4gLTE7
Cit9CisKK0xGUzY0KG9wZW4pOworCitpbnQgb3BlbmF0KGludCBkaXJmZCwgY29uc3QgY2hhciAq
cGF0aG5hbWUsIGludCBmbGFncywgLi4uKQoreworICAgIG1vZGVfdCBtb2RlID0gMDsKKyAgICBp
ZiAoZmxhZ3MgJiBPX0NSRUFUKSB7CisgICAgICAgIHZhX2xpc3QgYXA7CisgICAgICAgIHZhX3N0
YXJ0KGFwLCBmbGFncyk7CisgICAgICAgIG1vZGUgPSBhcHBseV91bWFzayh2YV9hcmcoYXAsIG1v
ZGVfdCkpOworICAgICAgICB2YV9lbmQoYXApOworICAgIH0KKworICAgIGlmIChwYXRobmFtZVsw
XSA9PSAnLycgfHwgZGlyZmQgPT0gQVRfRkRDV0QpIHsKKyAgICAgICAgcmV0dXJuIG9wZW4ocGF0
aG5hbWUsIGZsYWdzLCBtb2RlKTsKKyAgICB9CisKKyAgICBzdHJ1Y3QgZmlsZSAqZnA7CisgICAg
aW50IGVycm9yID0gZmdldChkaXJmZCwgJmZwKTsKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAg
ZXJybm8gPSBlcnJvcjsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIHN0cnVjdCB2
bm9kZSAqdnAgPSBmcC0+Zl9kZW50cnktPmRfdm5vZGU7CisgICAgdm5fbG9jayh2cCk7CisKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Y2hhciBbXT4gdXAgKG5ldyBjaGFyW1BBVEhfTUFYXSk7CisgICAg
Y2hhciAqcCA9IHVwLmdldCgpOworCisgICAgLyogYnVpbGQgYWJzb2x1dGUgcGF0aCAqLworICAg
IHN0cmxjcHkocCwgZnAtPmZfZGVudHJ5LT5kX21vdW50LT5tX3BhdGgsIFBBVEhfTUFYKTsKKyAg
ICBzdHJsY2F0KHAsIGZwLT5mX2RlbnRyeS0+ZF9wYXRoLCBQQVRIX01BWCk7CisgICAgc3RybGNh
dChwLCAiLyIsIFBBVEhfTUFYKTsKKyAgICBzdHJsY2F0KHAsIHBhdGhuYW1lLCBQQVRIX01BWCk7
CisKKyAgICBlcnJvciA9IG9wZW4ocCwgZmxhZ3MsIG1vZGUpOworCisgICAgdm5fdW5sb2NrKHZw
KTsKKyAgICBmZHJvcChmcCk7CisKKyAgICByZXR1cm4gZXJyb3I7Cit9CitMRlM2NChvcGVuYXQp
OworCisvLyBvcGVuKCkgaGFzIGFuIG9wdGlvbmFsIHRoaXJkIGFyZ3VtZW50LCAibW9kZSIsIHdo
aWNoIGlzIG9ubHkgbmVlZGVkIGluCisvLyBzb21lIGNhc2VzICh3aGVuIHRoZSBPX0NSRUFUIG1v
ZGUgaXMgdXNlZCkuIEFzIGEgc2FmZXR5IGZlYXR1cmUsIHJlY2VudAorLy8gdmVyc2lvbnMgb2Yg
R2xpYmMgYWRkIGEgZmVhdHVyZSB3aGVyZSBvcGVuKCkgd2l0aCB0d28gYXJndW1lbnRzIGlzIHJl
cGxhY2VkCisvLyBieSBhIGNhbGwgdG8gX19vcGVuXzIoKSwgd2hpY2ggdmVyaWZpZXMgaXQgaXNu
J3QgY2FsbGVkIHdpdGggT19DUkVBVEUuCitleHRlcm4gIkMiIGludCBfX29wZW5fMihjb25zdCBj
aGFyICpwYXRobmFtZSwgaW50IGZsYWdzKQoreworICAgIGFzc2VydCghKGZsYWdzICYgT19DUkVB
VCkpOworICAgIHJldHVybiBvcGVuKHBhdGhuYW1lLCBmbGFncywgMCk7Cit9CisKK2V4dGVybiAi
QyIgaW50IF9fb3BlbjY0XzIoY29uc3QgY2hhciAqZmlsZSwgaW50IGZsYWdzKQoreworICAgIGlm
IChmbGFncyAmIE9fQ1JFQVQpIHsKKyAgICAgICAgZXJybm8gPSBFSU5WQUw7CisgICAgICAgIHJl
dHVybiAtMTsKKyAgICB9CisKKyAgICByZXR1cm4gb3BlbjY0KGZpbGUsIGZsYWdzKTsKK30KKwor
aW50IGNyZWF0KGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBtb2RlX3QgbW9kZSkKK3sKKyAgICByZXR1
cm4gb3BlbihwYXRobmFtZSwgT19DUkVBVHxPX1dST05MWXxPX1RSVU5DLCBtb2RlKTsKK30KK0xG
UzY0KGNyZWF0KTsKKworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfY2xvc2UsICIlZCIsIGludCk7CitU
UkFDRVBPSU5UKHRyYWNlX3Zmc19jbG9zZV9yZXQsICIiKTsKK1RSQUNFUE9JTlQodHJhY2VfdmZz
X2Nsb3NlX2VyciwgIiVkIiwgaW50KTsKKworaW50IGNsb3NlKGludCBmZCkKK3sKKyAgICBpbnQg
ZXJyb3I7CisKKyAgICB0cmFjZV92ZnNfY2xvc2UoZmQpOworICAgIGVycm9yID0gZmRjbG9zZShm
ZCk7CisgICAgaWYgKGVycm9yKQorICAgICAgICBnb3RvIG91dF9lcnJubzsKKworICAgIHRyYWNl
X3Zmc19jbG9zZV9yZXQoKTsKKyAgICByZXR1cm4gMDsKKworICAgIG91dF9lcnJubzoKKyAgICB0
cmFjZV92ZnNfY2xvc2VfZXJyKGVycm9yKTsKKyAgICBlcnJubyA9IGVycm9yOworICAgIHJldHVy
biAtMTsKK30KKworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbWtub2QsICJcIiVzXCIgMCUwbyAweCV4
IiwgY29uc3QgY2hhciosIG1vZGVfdCwgZGV2X3QpOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbWtu
b2RfcmV0LCAiIik7CitUUkFDRVBPSU5UKHRyYWNlX3Zmc19ta25vZF9lcnIsICIlZCIsIGludCk7
CisKKworZXh0ZXJuICJDIgoraW50IF9feG1rbm9kKGludCB2ZXIsIGNvbnN0IGNoYXIgKnBhdGhu
YW1lLCBtb2RlX3QgbW9kZSwgZGV2X3QgKmRldikKK3sKKyAgICBhc3NlcnQodmVyID09IDApOyAv
LyBPbiB4ODYtNjQgTGludXgsIF9NS05PRF9WRVJfTElOVVggaXMgMC4KKyAgICBzdHJ1Y3QgdGFz
ayAqdCA9IG1haW5fdGFzazsKKyAgICBjaGFyIHBhdGhbUEFUSF9NQVhdOworICAgIGludCBlcnJv
cjsKKworICAgIHRyYWNlX3Zmc19ta25vZChwYXRobmFtZSwgbW9kZSwgKmRldik7CisgICAgaWYg
KChlcnJvciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwgVldSSVRFLCBwYXRoKSkgIT0gMCkKKyAg
ICAgICAgZ290byBvdXRfZXJybm87CisKKyAgICBlcnJvciA9IHN5c19ta25vZChwYXRoLCBtb2Rl
KTsKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIGdvdG8gb3V0X2Vycm5vOworCisgICAgdHJhY2Vf
dmZzX21rbm9kX3JldCgpOworICAgIHJldHVybiAwOworCisgICAgb3V0X2Vycm5vOgorICAgIHRy
YWNlX3Zmc19ta25vZF9lcnIoZXJyb3IpOworICAgIGVycm5vID0gZXJyb3I7CisgICAgcmV0dXJu
IC0xOworfQorCitpbnQgbWtub2QoY29uc3QgY2hhciAqcGF0aG5hbWUsIG1vZGVfdCBtb2RlLCBk
ZXZfdCBkZXYpCit7CisgICAgcmV0dXJuIF9feG1rbm9kKDAsIHBhdGhuYW1lLCBtb2RlLCAmZGV2
KTsKK30KKworCitUUkFDRVBPSU5UKHRyYWNlX3Zmc19sc2VlaywgIiVkIDB4JXggJWQiLCBpbnQs
IG9mZl90LCBpbnQpOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbHNlZWtfcmV0LCAiMHgleCIsIG9m
Zl90KTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX2xzZWVrX2VyciwgIiVkIiwgaW50KTsKKworb2Zm
X3QgbHNlZWsoaW50IGZkLCBvZmZfdCBvZmZzZXQsIGludCB3aGVuY2UpCit7CisgICAgc3RydWN0
IGZpbGUgKmZwOworICAgIG9mZl90IG9yZzsKKyAgICBpbnQgZXJyb3I7CisKKyAgICB0cmFjZV92
ZnNfbHNlZWsoZmQsIG9mZnNldCwgd2hlbmNlKTsKKyAgICBlcnJvciA9IGZnZXQoZmQsICZmcCk7
CisgICAgaWYgKGVycm9yKQorICAgICAgICBnb3RvIG91dF9lcnJubzsKKworICAgIGVycm9yID0g
c3lzX2xzZWVrKGZwLCBvZmZzZXQsIHdoZW5jZSwgJm9yZyk7CisgICAgZmRyb3AoZnApOworCisg
ICAgaWYgKGVycm9yKQorICAgICAgICBnb3RvIG91dF9lcnJubzsKKyAgICB0cmFjZV92ZnNfbHNl
ZWtfcmV0KG9yZyk7CisgICAgcmV0dXJuIG9yZzsKKworICAgIG91dF9lcnJubzoKKyAgICB0cmFj
ZV92ZnNfbHNlZWtfZXJyKGVycm9yKTsKKyAgICBlcnJubyA9IGVycm9yOworICAgIHJldHVybiAt
MTsKK30KKworTEZTNjQobHNlZWspOworCitUUkFDRVBPSU5UKHRyYWNlX3Zmc19wcmVhZCwgIiVk
ICVwIDB4JXggMHgleCIsIGludCwgdm9pZCosIHNpemVfdCwgb2ZmX3QpOworVFJBQ0VQT0lOVCh0
cmFjZV92ZnNfcHJlYWRfcmV0LCAiMHgleCIsIHNzaXplX3QpOworVFJBQ0VQT0lOVCh0cmFjZV92
ZnNfcHJlYWRfZXJyLCAiJWQiLCBpbnQpOworCisvLyBJbiBCU0QncyBpbnRlcm5hbCBpbXBsZW1l
bnRhdGlvbiBvZiByZWFkKCkgYW5kIHdyaXRlKCkgY29kZSwgZm9yIGV4YW1wbGUKKy8vIHNvc2Vu
ZF9nZW5lcmljKCksIGEgcGFydGlhbCByZWFkIG9yIHdyaXRlIHJldHVybnMgYm90aCBhbiBFV09V
TERCTE9DSyBlcnJvcgorLy8gKmFuZCogYSBub24temVybyBudW1iZXIgb2Ygd3JpdHRlbiBieXRl
cy4gSW4gdGhhdCBjYXNlLCB3ZSBuZWVkIHRvIHplcm8gdGhlCisvLyBlcnJvciwgc28gdGhlIHN5
c3RlbSBjYWxsIGFwcGVhciBhIHN1Y2Nlc3NmdWwgcGFydGlhbCByZWFkL3dyaXRlLgorLy8gSW4g
RnJlZUJTRCwgZG9maWxld3JpdGUoKSBhbmQgZG9maWxlcmVhZCgpIChzeXNfZ2VuZXJpYy5jKSBk
byB0aGlzIHRvby4KK3N0YXRpYyBpbmxpbmUgYm9vbCBoYXNfZXJyb3IoaW50IGVycm9yLCBpbnQg
Ynl0ZXMpCit7CisgICAgcmV0dXJuIGVycm9yICYmICgKKyAgICAgICAgICAgIChieXRlcyA9PSAw
KSB8fAorICAgICAgICAgICAgKGVycm9yICE9IEVXT1VMREJMT0NLICYmIGVycm9yICE9IEVJTlRS
ICYmIGVycm9yICE9IEVSRVNUQVJUKSk7Cit9CisKKworc3NpemVfdCBwcmVhZChpbnQgZmQsIHZv
aWQgKmJ1Ziwgc2l6ZV90IGNvdW50LCBvZmZfdCBvZmZzZXQpCit7CisgICAgdHJhY2VfdmZzX3By
ZWFkKGZkLCBidWYsIGNvdW50LCBvZmZzZXQpOworICAgIHN0cnVjdCBpb3ZlYyBpb3YgPSB7Cisg
ICAgICAgICAgICAuaW92X2Jhc2UJPSBidWYsCisgICAgICAgICAgICAuaW92X2xlbgk9IGNvdW50
LAorICAgIH07CisgICAgc3RydWN0IGZpbGUgKmZwOworICAgIHNpemVfdCBieXRlczsKKyAgICBp
bnQgZXJyb3I7CisKKyAgICBlcnJvciA9IGZnZXQoZmQsICZmcCk7CisgICAgaWYgKGVycm9yKQor
ICAgICAgICBnb3RvIG91dF9lcnJubzsKKworICAgIGVycm9yID0gc3lzX3JlYWQoZnAsICZpb3Ys
IDEsIG9mZnNldCwgJmJ5dGVzKTsKKyAgICBmZHJvcChmcCk7CisKKyAgICBpZiAoaGFzX2Vycm9y
KGVycm9yLCBieXRlcykpCisgICAgICAgIGdvdG8gb3V0X2Vycm5vOworICAgIHRyYWNlX3Zmc19w
cmVhZF9yZXQoYnl0ZXMpOworICAgIHJldHVybiBieXRlczsKKworICAgIG91dF9lcnJubzoKKyAg
ICB0cmFjZV92ZnNfcHJlYWRfZXJyKGVycm9yKTsKKyAgICBlcnJubyA9IGVycm9yOworICAgIHJl
dHVybiAtMTsKK30KKworTEZTNjQocHJlYWQpOworCitzc2l6ZV90IHJlYWQoaW50IGZkLCB2b2lk
ICpidWYsIHNpemVfdCBjb3VudCkKK3sKKyAgICByZXR1cm4gcHJlYWQoZmQsIGJ1ZiwgY291bnQs
IC0xKTsKK30KKworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfcHdyaXRlLCAiJWQgJXAgMHgleCAweCV4
IiwgaW50LCBjb25zdCB2b2lkKiwgc2l6ZV90LCBvZmZfdCk7CitUUkFDRVBPSU5UKHRyYWNlX3Zm
c19wd3JpdGVfcmV0LCAiMHgleCIsIHNzaXplX3QpOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfcHdy
aXRlX2VyciwgIiVkIiwgaW50KTsKKworc3NpemVfdCBwd3JpdGUoaW50IGZkLCBjb25zdCB2b2lk
ICpidWYsIHNpemVfdCBjb3VudCwgb2ZmX3Qgb2Zmc2V0KQoreworICAgIHRyYWNlX3Zmc19wd3Jp
dGUoZmQsIGJ1ZiwgY291bnQsIG9mZnNldCk7CisgICAgc3RydWN0IGlvdmVjIGlvdiA9IHsKKyAg
ICAgICAgICAgIC5pb3ZfYmFzZQk9ICh2b2lkICopYnVmLAorICAgICAgICAgICAgLmlvdl9sZW4J
PSBjb3VudCwKKyAgICB9OworICAgIHN0cnVjdCBmaWxlICpmcDsKKyAgICBzaXplX3QgYnl0ZXM7
CisgICAgaW50IGVycm9yOworCisgICAgZXJyb3IgPSBmZ2V0KGZkLCAmZnApOworICAgIGlmIChl
cnJvcikKKyAgICAgICAgZ290byBvdXRfZXJybm87CisKKyAgICBlcnJvciA9IHN5c193cml0ZShm
cCwgJmlvdiwgMSwgb2Zmc2V0LCAmYnl0ZXMpOworICAgIGZkcm9wKGZwKTsKKworICAgIGlmICho
YXNfZXJyb3IoZXJyb3IsIGJ5dGVzKSkKKyAgICAgICAgZ290byBvdXRfZXJybm87CisgICAgdHJh
Y2VfdmZzX3B3cml0ZV9yZXQoYnl0ZXMpOworICAgIHJldHVybiBieXRlczsKKworICAgIG91dF9l
cnJubzoKKyAgICB0cmFjZV92ZnNfcHdyaXRlX2VycihlcnJvcik7CisgICAgZXJybm8gPSBlcnJv
cjsKKyAgICByZXR1cm4gLTE7Cit9CisKK0xGUzY0KHB3cml0ZSk7CisKK3NzaXplX3Qgd3JpdGUo
aW50IGZkLCBjb25zdCB2b2lkICpidWYsIHNpemVfdCBjb3VudCkKK3sKKyAgICByZXR1cm4gcHdy
aXRlKGZkLCBidWYsIGNvdW50LCAtMSk7Cit9CisKK3NzaXplX3QgcHJlYWR2KGludCBmZCwgY29u
c3Qgc3RydWN0IGlvdmVjICppb3YsIGludCBpb3ZjbnQsIG9mZl90IG9mZnNldCkKK3sKKyAgICBz
dHJ1Y3QgZmlsZSAqZnA7CisgICAgc2l6ZV90IGJ5dGVzOworICAgIGludCBlcnJvcjsKKworICAg
IGVycm9yID0gZmdldChmZCwgJmZwKTsKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIGdvdG8gb3V0
X2Vycm5vOworCisgICAgZXJyb3IgPSBzeXNfcmVhZChmcCwgaW92LCBpb3ZjbnQsIG9mZnNldCwg
JmJ5dGVzKTsKKyAgICBmZHJvcChmcCk7CisKKyAgICBpZiAoaGFzX2Vycm9yKGVycm9yLCBieXRl
cykpCisgICAgICAgIGdvdG8gb3V0X2Vycm5vOworICAgIHJldHVybiBieXRlczsKKworICAgIG91
dF9lcnJubzoKKyAgICBlcnJubyA9IGVycm9yOworICAgIHJldHVybiAtMTsKK30KKworTEZTNjQo
cHJlYWR2KTsKKworc3NpemVfdCByZWFkdihpbnQgZmQsIGNvbnN0IHN0cnVjdCBpb3ZlYyAqaW92
LCBpbnQgaW92Y250KQoreworICAgIHJldHVybiBwcmVhZHYoZmQsIGlvdiwgaW92Y250LCAtMSk7
Cit9CisKK1RSQUNFUE9JTlQodHJhY2VfdmZzX3B3cml0ZXYsICIlZCAlcCAweCV4IDB4JXgiLCBp
bnQsIGNvbnN0IHN0cnVjdCBpb3ZlYyosIGludCwgb2ZmX3QpOworVFJBQ0VQT0lOVCh0cmFjZV92
ZnNfcHdyaXRldl9yZXQsICIweCV4Iiwgc3NpemVfdCk7CitUUkFDRVBPSU5UKHRyYWNlX3Zmc19w
d3JpdGV2X2VyciwgIiVkIiwgaW50KTsKKworc3NpemVfdCBwd3JpdGV2KGludCBmZCwgY29uc3Qg
c3RydWN0IGlvdmVjICppb3YsIGludCBpb3ZjbnQsIG9mZl90IG9mZnNldCkKK3sKKyAgICBzdHJ1
Y3QgZmlsZSAqZnA7CisgICAgc2l6ZV90IGJ5dGVzOworICAgIGludCBlcnJvcjsKKworICAgIHRy
YWNlX3Zmc19wd3JpdGV2KGZkLCBpb3YsIGlvdmNudCwgb2Zmc2V0KTsKKyAgICBlcnJvciA9IGZn
ZXQoZmQsICZmcCk7CisgICAgaWYgKGVycm9yKQorICAgICAgICBnb3RvIG91dF9lcnJubzsKKwor
ICAgIGVycm9yID0gc3lzX3dyaXRlKGZwLCBpb3YsIGlvdmNudCwgb2Zmc2V0LCAmYnl0ZXMpOwor
ICAgIGZkcm9wKGZwKTsKKworICAgIGlmIChoYXNfZXJyb3IoZXJyb3IsIGJ5dGVzKSkKKyAgICAg
ICAgZ290byBvdXRfZXJybm87CisgICAgdHJhY2VfdmZzX3B3cml0ZXZfcmV0KGJ5dGVzKTsKKyAg
ICByZXR1cm4gYnl0ZXM7CisKKyAgICBvdXRfZXJybm86CisgICAgdHJhY2VfdmZzX3B3cml0ZXZf
ZXJyKGVycm9yKTsKKyAgICBlcnJubyA9IGVycm9yOworICAgIHJldHVybiAtMTsKK30KK0xGUzY0
KHB3cml0ZXYpOworCitzc2l6ZV90IHdyaXRldihpbnQgZmQsIGNvbnN0IHN0cnVjdCBpb3ZlYyAq
aW92LCBpbnQgaW92Y250KQoreworICAgIHJldHVybiBwd3JpdGV2KGZkLCBpb3YsIGlvdmNudCwg
LTEpOworfQorCitUUkFDRVBPSU5UKHRyYWNlX3Zmc19pb2N0bCwgIiVkIDB4JXgiLCBpbnQsIHVu
c2lnbmVkIGxvbmcpOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfaW9jdGxfcmV0LCAiIik7CitUUkFD
RVBPSU5UKHRyYWNlX3Zmc19pb2N0bF9lcnIsICIlZCIsIGludCk7CisKK2ludCBpb2N0bChpbnQg
ZmQsIHVuc2lnbmVkIGxvbmcgaW50IHJlcXVlc3QsIC4uLikKK3sKKyAgICBzdHJ1Y3QgZmlsZSAq
ZnA7CisgICAgaW50IGVycm9yOworICAgIHZhX2xpc3QgYXA7CisgICAgdm9pZCogYXJnOworCisg
ICAgdHJhY2VfdmZzX2lvY3RsKGZkLCByZXF1ZXN0KTsKKyAgICAvKiBnbGliYyBBQkkgcHJvdmlk
ZXMgYSB2YXJpYWRpYyBwcm90b3R5cGUgZm9yIGlvY3RsIHNvIHdlIG5lZWQgdG8gYWdyZWUKKyAg
ICAgKiB3aXRoIGl0LCBzaW5jZSB3ZSBub3cgaW5jbHVkZSBzeXMvaW9jdGwuaAorICAgICAqIHJl
YWQgdGhlIGZpcnN0IGFyZ3VtZW50IGFuZCBwYXNzIGl0IHRvIHN5c19pb2N0bCgpICovCisgICAg
dmFfc3RhcnQoYXAsIHJlcXVlc3QpOworICAgIGFyZyA9IHZhX2FyZyhhcCwgdm9pZCopOworICAg
IHZhX2VuZChhcCk7CisKKyAgICBlcnJvciA9IGZnZXQoZmQsICZmcCk7CisgICAgaWYgKGVycm9y
KQorICAgICAgICBnb3RvIG91dF9lcnJubzsKKworICAgIGVycm9yID0gc3lzX2lvY3RsKGZwLCBy
ZXF1ZXN0LCBhcmcpOworICAgIGZkcm9wKGZwKTsKKworICAgIGlmIChlcnJvcikKKyAgICAgICAg
Z290byBvdXRfZXJybm87CisgICAgdHJhY2VfdmZzX2lvY3RsX3JldCgpOworICAgIHJldHVybiAw
OworCisgICAgb3V0X2Vycm5vOgorICAgIHRyYWNlX3Zmc19pb2N0bF9lcnIoZXJyb3IpOworICAg
IGVycm5vID0gZXJyb3I7CisgICAgcmV0dXJuIC0xOworfQorCitUUkFDRVBPSU5UKHRyYWNlX3Zm
c19mc3luYywgIiVkIiwgaW50KTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX2ZzeW5jX3JldCwgIiIp
OworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZnN5bmNfZXJyLCAiJWQiLCBpbnQpOworCitpbnQgZnN5
bmMoaW50IGZkKQoreworICAgIHN0cnVjdCBmaWxlICpmcDsKKyAgICBpbnQgZXJyb3I7CisKKyAg
ICB0cmFjZV92ZnNfZnN5bmMoZmQpOworICAgIGVycm9yID0gZmdldChmZCwgJmZwKTsKKyAgICBp
ZiAoZXJyb3IpCisgICAgICAgIGdvdG8gb3V0X2Vycm5vOworCisgICAgZXJyb3IgPSBzeXNfZnN5
bmMoZnApOworICAgIGZkcm9wKGZwKTsKKworICAgIGlmIChlcnJvcikKKyAgICAgICAgZ290byBv
dXRfZXJybm87CisgICAgdHJhY2VfdmZzX2ZzeW5jX3JldCgpOworICAgIHJldHVybiAwOworCisg
ICAgb3V0X2Vycm5vOgorICAgIHRyYWNlX3Zmc19mc3luY19lcnIoZXJyb3IpOworICAgIGVycm5v
ID0gZXJyb3I7CisgICAgcmV0dXJuIC0xOworfQorCitpbnQgZmRhdGFzeW5jKGludCBmZCkKK3sK
KyAgICAvLyBUT0RPOiBTZWUgaWYgd2UgY2FuIGRvIGxlc3MgdGhhbiBmc3luYygpLgorICAgIHJl
dHVybiBmc3luYyhmZCk7Cit9CisKK1RSQUNFUE9JTlQodHJhY2VfdmZzX2ZzdGF0LCAiJWQgJXAi
LCBpbnQsIHN0cnVjdCBzdGF0Kik7CitUUkFDRVBPSU5UKHRyYWNlX3Zmc19mc3RhdF9yZXQsICIi
KTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX2ZzdGF0X2VyciwgIiVkIiwgaW50KTsKKworZXh0ZXJu
ICJDIgoraW50IF9fZnhzdGF0KGludCB2ZXIsIGludCBmZCwgc3RydWN0IHN0YXQgKnN0KQorewor
ICAgIHN0cnVjdCBmaWxlICpmcDsKKyAgICBpbnQgZXJyb3I7CisKKyAgICB0cmFjZV92ZnNfZnN0
YXQoZmQsIHN0KTsKKworICAgIGVycm9yID0gZmdldChmZCwgJmZwKTsKKyAgICBpZiAoZXJyb3Ip
CisgICAgICAgIGdvdG8gb3V0X2Vycm5vOworCisgICAgZXJyb3IgPSBzeXNfZnN0YXQoZnAsIHN0
KTsKKyAgICBmZHJvcChmcCk7CisKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIGdvdG8gb3V0X2Vy
cm5vOworICAgIHRyYWNlX3Zmc19mc3RhdF9yZXQoKTsKKyAgICByZXR1cm4gMDsKKworICAgIG91
dF9lcnJubzoKKyAgICB0cmFjZV92ZnNfZnN0YXRfZXJyKGVycm9yKTsKKyAgICBlcnJubyA9IGVy
cm9yOworICAgIHJldHVybiAtMTsKK30KKworTEZTNjQoX19meHN0YXQpOworCitleHRlcm4gIkMi
CitpbnQgZnN0YXQoaW50IGZkLCBzdHJ1Y3Qgc3RhdCAqc3QpCit7CisgICAgcmV0dXJuIF9fZnhz
dGF0KDEsIGZkLCBzdCk7Cit9CisKK0xGUzY0KGZzdGF0KTsKKworZXh0ZXJuICJDIgoraW50IF9f
ZnhzdGF0YXQoaW50IHZlciwgaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwgc3RydWN0
IHN0YXQgKnN0LAorICAgICAgICBpbnQgZmxhZ3MpCit7CisgICAgaWYgKGZsYWdzICYgQVRfU1lN
TElOS19OT0ZPTExPVykgeworICAgICAgICBVTklNUExFTUVOVEVEKCJmc3RhdGF0KCkgd2l0aCBB
VF9TWU1MSU5LX05PRk9MTE9XIik7CisgICAgfQorCisgICAgaWYgKHBhdGhuYW1lWzBdID09ICcv
JyB8fCBkaXJmZCA9PSBBVF9GRENXRCkgeworICAgICAgICByZXR1cm4gc3RhdChwYXRobmFtZSwg
c3QpOworICAgIH0KKyAgICAvLyBJZiBBVF9FTVBUWV9QQVRIIGFuZCBwYXRobmFtZSBpcyBhbiBl
bXB0eSBzdHJpbmcsIGZzdGF0YXQoKSBvcGVyYXRlcyBvbgorICAgIC8vIGRpcmZkIGl0c2VsZiwg
YW5kIGluIHRoYXQgY2FzZSBpdCBkb2Vzbid0IGhhdmUgdG8gYmUgYSBkaXJlY3RvcnkuCisgICAg
aWYgKChmbGFncyAmIEFUX0VNUFRZX1BBVEgpICYmICFwYXRobmFtZVswXSkgeworICAgICAgICBy
ZXR1cm4gZnN0YXQoZGlyZmQsIHN0KTsKKyAgICB9CisKKyAgICBzdHJ1Y3QgZmlsZSAqZnA7Cisg
ICAgaW50IGVycm9yID0gZmdldChkaXJmZCwgJmZwKTsKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAg
ICAgZXJybm8gPSBlcnJvcjsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIHN0cnVj
dCB2bm9kZSAqdnAgPSBmcC0+Zl9kZW50cnktPmRfdm5vZGU7CisgICAgdm5fbG9jayh2cCk7CisK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8Y2hhciBbXT4gdXAgKG5ldyBjaGFyW1BBVEhfTUFYXSk7Cisg
ICAgY2hhciAqcCA9IHVwLmdldCgpOworICAgIC8qIGJ1aWxkIGFic29sdXRlIHBhdGggKi8KKyAg
ICBzdHJsY3B5KHAsIGZwLT5mX2RlbnRyeS0+ZF9tb3VudC0+bV9wYXRoLCBQQVRIX01BWCk7Cisg
ICAgc3RybGNhdChwLCBmcC0+Zl9kZW50cnktPmRfcGF0aCwgUEFUSF9NQVgpOworICAgIHN0cmxj
YXQocCwgIi8iLCBQQVRIX01BWCk7CisgICAgc3RybGNhdChwLCBwYXRobmFtZSwgUEFUSF9NQVgp
OworCisgICAgZXJyb3IgPSBzdGF0KHAsIHN0KTsKKworICAgIHZuX3VubG9jayh2cCk7CisgICAg
ZmRyb3AoZnApOworCisgICAgcmV0dXJuIGVycm9yOworfQorCitMRlM2NChfX2Z4c3RhdGF0KTsK
KworZXh0ZXJuICJDIgoraW50IGZzdGF0YXQoaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRoLCBz
dHJ1Y3Qgc3RhdCAqc3QsIGludCBmbGFncykKK3sKKyAgICByZXR1cm4gX19meHN0YXRhdCgxLCBk
aXJmZCwgcGF0aCwgc3QsIGZsYWdzKTsKK30KKworTEZTNjQoZnN0YXRhdCk7CisKK2V4dGVybiAi
QyIgaW50IGZsb2NrKGludCBmZCwgaW50IG9wZXJhdGlvbikKK3sKKyAgICBpZiAoIWZpbGVyZWZf
ZnJvbV9mZChmZCkpIHsKKyAgICAgICAgcmV0dXJuIGxpYmNfZXJyb3IoRUJBREYpOworICAgIH0K
KworICAgIHN3aXRjaCAob3BlcmF0aW9uKSB7CisgICAgY2FzZSBMT0NLX1NIOgorICAgIGNhc2Ug
TE9DS19TSCB8IExPQ0tfTkI6CisgICAgY2FzZSBMT0NLX0VYOgorICAgIGNhc2UgTE9DS19FWCB8
IExPQ0tfTkI6CisgICAgY2FzZSBMT0NLX1VOOgorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0
OgorICAgICAgICByZXR1cm4gbGliY19lcnJvcihFSU5WQUwpOworICAgIH0KKworICAgIHJldHVy
biAwOworfQorCitUUkFDRVBPSU5UKHRyYWNlX3Zmc19yZWFkZGlyLCAiJWQgJXAiLCBpbnQsIGRp
cmVudCopOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfcmVhZGRpcl9yZXQsICIiKTsKK1RSQUNFUE9J
TlQodHJhY2VfdmZzX3JlYWRkaXJfZXJyLCAiJWQiLCBpbnQpOworCitzdHJ1Y3QgX19kaXJzdHJl
YW0KK3sKKyAgICBpbnQgZmQ7Cit9OworCitESVIgKm9wZW5kaXIoY29uc3QgY2hhciAqcGF0aCkK
K3sKKyAgICBESVIgKmRpciA9IG5ldyBESVI7CisKKyAgICBpZiAoIWRpcikKKyAgICAgICAgcmV0
dXJuIGxpYmNfZXJyb3JfcHRyPERJUj4oRU5PTUVNKTsKKworICAgIGRpci0+ZmQgPSBvcGVuKHBh
dGgsIE9fUkRPTkxZKTsKKyAgICBpZiAoZGlyLT5mZCA8IDApIHsKKyAgICAgICAgZGVsZXRlIGRp
cjsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIHJldHVybiBkaXI7Cit9CisK
K0RJUiAqZmRvcGVuZGlyKGludCBmZCkKK3sKKyAgICBESVIgKmRpcjsKKyAgICBzdHJ1Y3Qgc3Rh
dCBzdDsKKyAgICBpZiAoZnN0YXQoZmQsICZzdCkgPCAwKSB7CisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIH0KKyAgICBpZiAoIVNfSVNESVIoc3Quc3RfbW9kZSkpIHsKKyAgICAgICAgZXJy
bm8gPSBFTk9URElSOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgZGlyID0g
bmV3IERJUjsKKyAgICBkaXItPmZkID0gZmQ7CisgICAgcmV0dXJuIGRpcjsKKworfQorCitpbnQg
ZGlyZmQoRElSICpkaXJwKQoreworICAgIGlmICghZGlycCkgeworICAgICAgICByZXR1cm4gbGli
Y19lcnJvcihFSU5WQUwpOworICAgIH0KKworICAgIHJldHVybiBkaXJwLT5mZDsKK30KKworaW50
IGNsb3NlZGlyKERJUiAqZGlyKQoreworICAgIGNsb3NlKGRpci0+ZmQpOworICAgIGRlbGV0ZSBk
aXI7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0cnVjdCBkaXJlbnQgKnJlYWRkaXIoRElSICpkaXIp
Cit7CisgICAgc3RhdGljIF9fdGhyZWFkIHN0cnVjdCBkaXJlbnQgZW50cnksICpyZXN1bHQ7Cisg
ICAgaW50IHJldDsKKworICAgIHJldCA9IHJlYWRkaXJfcihkaXIsICZlbnRyeSwgJnJlc3VsdCk7
CisgICAgaWYgKHJldCkKKyAgICAgICAgcmV0dXJuIGxpYmNfZXJyb3JfcHRyPHN0cnVjdCBkaXJl
bnQ+KHJldCk7CisKKyAgICBlcnJubyA9IDA7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworaW50
IHJlYWRkaXJfcihESVIgKmRpciwgc3RydWN0IGRpcmVudCAqZW50cnksIHN0cnVjdCBkaXJlbnQg
KipyZXN1bHQpCit7CisgICAgaW50IGVycm9yOworICAgIHN0cnVjdCBmaWxlICpmcDsKKworICAg
IHRyYWNlX3Zmc19yZWFkZGlyKGRpci0+ZmQsIGVudHJ5KTsKKyAgICBlcnJvciA9IGZnZXQoZGly
LT5mZCwgJmZwKTsKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgdHJhY2VfdmZzX3JlYWRkaXJf
ZXJyKGVycm9yKTsKKyAgICB9IGVsc2UgeworICAgICAgICBlcnJvciA9IHN5c19yZWFkZGlyKGZw
LCBlbnRyeSk7CisgICAgICAgIGZkcm9wKGZwKTsKKyAgICAgICAgaWYgKGVycm9yKSB7CisgICAg
ICAgICAgICB0cmFjZV92ZnNfcmVhZGRpcl9lcnIoZXJyb3IpOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgdHJhY2VfdmZzX3JlYWRkaXJfcmV0KCk7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgLy8gT3VyIGRpcmVudCBoYXMgKGxpa2UgTGludXgpIGEgZF9yZWNsZW4gZmllbGQsIGJ1dCBh
IGNvbnN0YW50IHNpemUuCisgICAgZW50cnktPmRfcmVjbGVuID0gc2l6ZW9mKCplbnRyeSk7CisK
KyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgKnJlc3VsdCA9IG51bGxwdHI7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgKnJlc3VsdCA9IGVudHJ5OworICAgIH0KKyAgICByZXR1cm4gZXJyb3IgPT0g
RU5PRU5UID8gMCA6IGVycm9yOworfQorCisvLyBGSVhNRTogaW4gNjRiaXQgZGlyZW50NjQgYW5k
IGRpcmVudCBhcmUgaWRlbnRpY2FsLCBzbyBpdCdzIHNhZmUgdG8gYWxpYXMKKyN1bmRlZiByZWFk
ZGlyNjRfcgorZXh0ZXJuICJDIiBpbnQgcmVhZGRpcjY0X3IoRElSICpkaXIsIHN0cnVjdCBkaXJl
bnQ2NCAqZW50cnksCisgICAgICAgIHN0cnVjdCBkaXJlbnQ2NCAqKnJlc3VsdCkKKyAgICAgICAg
X19hdHRyaWJ1dGVfXygoYWxpYXMoInJlYWRkaXJfciIpKSk7CisKKyN1bmRlZiByZWFkZGlyNjQK
K2V4dGVybiAiQyIgc3RydWN0IGRpcmVudCAqcmVhZGRpcjY0KERJUiAqZGlyKSBfX2F0dHJpYnV0
ZV9fKChhbGlhcygicmVhZGRpciIpKSk7CisKK3ZvaWQgcmV3aW5kZGlyKERJUiAqZGlycCkKK3sK
KyAgICBzdHJ1Y3QgZmlsZSAqZnA7CisKKyAgICBhdXRvIGVycm9yID0gZmdldChkaXJwLT5mZCwg
JmZwKTsKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgLy8gUE9TSVggc3BlY2lmaWVzIHRoYXQg
d2hhdCByZXdpbmRkaXIoKSBkb2VzIGluIHRoZSBjYXNlIG9mIGVycm9yCisgICAgICAgIC8vIGlz
IHVuZGVmaW5lZC4uLgorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3lzX3Jld2luZGRp
cihmcCk7CisgICAgLy8gQWdhaW4sIGVycm9yIGNvZGUgZnJvbSBzeXNfcmV3aW5kZGlyKCkgaXMg
aWdub3JlZC4KKyAgICBmZHJvcChmcCk7Cit9CisKK2xvbmcgdGVsbGRpcihESVIgKmRpcnApCit7
CisgICAgc3RydWN0IGZpbGUgKmZwOworICAgIGludCBlcnJvciA9IGZnZXQoZGlycC0+ZmQsICZm
cCk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIHJldHVybiBsaWJjX2Vycm9yKGVycm9yKTsK
KyAgICB9CisKKyAgICBsb25nIGxvYzsKKyAgICBlcnJvciA9IHN5c190ZWxsZGlyKGZwLCAmbG9j
KTsKKyAgICBmZHJvcChmcCk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIHJldHVybiBsaWJj
X2Vycm9yKGVycm9yKTsKKyAgICB9CisgICAgcmV0dXJuIGxvYzsKK30KKwordm9pZCBzZWVrZGly
KERJUiAqZGlycCwgbG9uZyBsb2MpCit7CisgICAgc3RydWN0IGZpbGUgKmZwOworICAgIGludCBl
cnJvciA9IGZnZXQoZGlycC0+ZmQsICZmcCk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIC8v
IFBPU0lYIHNwZWNpZmllcyBzZWVrZGlyKCkgY2Fubm90IHJldHVybiBlcnJvcnMuCisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgc3lzX3NlZWtkaXIoZnAsIGxvYyk7CisgICAgLy8gQWdhaW4s
IGVycm9yIGNvZGUgZnJvbSBzeXNfc2Vla2RpcigpIGlzIGlnbm9yZWQuCisgICAgZmRyb3AoZnAp
OworfQorCitUUkFDRVBPSU5UKHRyYWNlX3Zmc19ta2RpciwgIlwiJXNcIiAwJTBvIiwgY29uc3Qg
Y2hhciosIG1vZGVfdCk7CitUUkFDRVBPSU5UKHRyYWNlX3Zmc19ta2Rpcl9yZXQsICIiKTsKK1RS
QUNFUE9JTlQodHJhY2VfdmZzX21rZGlyX2VyciwgIiVkIiwgaW50KTsKKworaW50Citta2Rpcihj
b25zdCBjaGFyICpwYXRobmFtZSwgbW9kZV90IG1vZGUpCit7CisgICAgc3RydWN0IHRhc2sgKnQg
PSBtYWluX3Rhc2s7CisgICAgY2hhciBwYXRoW1BBVEhfTUFYXTsKKyAgICBpbnQgZXJyb3I7CisK
KyAgICBtb2RlID0gYXBwbHlfdW1hc2sobW9kZSk7CisKKyAgICB0cmFjZV92ZnNfbWtkaXIocGF0
aG5hbWUsIG1vZGUpOworICAgIGlmICgoZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5hbWUsIFZX
UklURSwgcGF0aCkpICE9IDApCisgICAgICAgIGdvdG8gb3V0X2Vycm5vOworCisgICAgZXJyb3Ig
PSBzeXNfbWtkaXIocGF0aCwgbW9kZSk7CisgICAgaWYgKGVycm9yKQorICAgICAgICBnb3RvIG91
dF9lcnJubzsKKyAgICB0cmFjZV92ZnNfbWtkaXJfcmV0KCk7CisgICAgcmV0dXJuIDA7CisgICAg
b3V0X2Vycm5vOgorICAgIHRyYWNlX3Zmc19ta2Rpcl9lcnIoZXJyb3IpOworICAgIGVycm5vID0g
ZXJyb3I7CisgICAgcmV0dXJuIC0xOworfQorCitUUkFDRVBPSU5UKHRyYWNlX3Zmc19ybWRpciwg
IlwiJXNcIiIsIGNvbnN0IGNoYXIqKTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX3JtZGlyX3JldCwg
IiIpOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfcm1kaXJfZXJyLCAiJWQiLCBpbnQpOworCitpbnQg
cm1kaXIoY29uc3QgY2hhciAqcGF0aG5hbWUpCit7CisgICAgc3RydWN0IHRhc2sgKnQgPSBtYWlu
X3Rhc2s7CisgICAgY2hhciBwYXRoW1BBVEhfTUFYXTsKKyAgICBpbnQgZXJyb3I7CisKKyAgICB0
cmFjZV92ZnNfcm1kaXIocGF0aG5hbWUpOworICAgIGVycm9yID0gRU5PRU5UOworICAgIGlmIChw
YXRobmFtZSA9PSBudWxscHRyKQorICAgICAgICBnb3RvIG91dF9lcnJubzsKKyAgICBpZiAoKGVy
cm9yID0gdGFza19jb252KHQsIHBhdGhuYW1lLCBWV1JJVEUsIHBhdGgpKSAhPSAwKQorICAgICAg
ICBnb3RvIG91dF9lcnJubzsKKworICAgIGVycm9yID0gc3lzX3JtZGlyKHBhdGgpOworICAgIGlm
IChlcnJvcikKKyAgICAgICAgZ290byBvdXRfZXJybm87CisgICAgdHJhY2VfdmZzX3JtZGlyX3Jl
dCgpOworICAgIHJldHVybiAwOworICAgIG91dF9lcnJubzoKKyAgICB0cmFjZV92ZnNfcm1kaXJf
ZXJyKGVycm9yKTsKKyAgICBlcnJubyA9IGVycm9yOworICAgIHJldHVybiAtMTsKK30KKworc3Rh
dGljIHZvaWQKK2dldF9sYXN0X2NvbXBvbmVudChjb25zdCBjaGFyICpwYXRoLCBjaGFyICpkc3Qp
Cit7CisgICAgaW50IHBvcyA9IHN0cmxlbihwYXRoKSAtIDE7CisKKyAgICB3aGlsZSAocG9zID49
IDAgJiYgcGF0aFtwb3NdID09ICcvJykKKyAgICAgICAgcG9zLS07CisKKyAgICBpbnQgY29tcG9u
ZW50X2VuZCA9IHBvczsKKworICAgIHdoaWxlIChwb3MgPj0gMCAmJiBwYXRoW3Bvc10gIT0gJy8n
KQorICAgICAgICBwb3MtLTsKKworICAgIGludCBjb21wb25lbnRfc3RhcnQgPSBwb3MgKyAxOwor
CisgICAgaW50IGxlbiA9IGNvbXBvbmVudF9lbmQgLSBjb21wb25lbnRfc3RhcnQgKyAxOworICAg
IG1lbWNweShkc3QsIHBhdGggKyBjb21wb25lbnRfc3RhcnQsIGxlbik7CisgICAgZHN0W2xlbl0g
PSAwOworfQorCitzdGF0aWMgYm9vbCBudWxsX29yX2VtcHR5KGNvbnN0IGNoYXIgKnN0cikKK3sK
KyAgICByZXR1cm4gc3RyID09IG51bGxwdHIgfHwgKnN0ciA9PSAnXDAnOworfQorCitUUkFDRVBP
SU5UKHRyYWNlX3Zmc19yZW5hbWUsICJcIiVzXCIgXCIlc1wiIiwgY29uc3QgY2hhciosIGNvbnN0
IGNoYXIqKTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX3JlbmFtZV9yZXQsICIiKTsKK1RSQUNFUE9J
TlQodHJhY2VfdmZzX3JlbmFtZV9lcnIsICIlZCIsIGludCk7CisKK2ludCByZW5hbWUoY29uc3Qg
Y2hhciAqb2xkcGF0aCwgY29uc3QgY2hhciAqbmV3cGF0aCkKK3sKKyAgICB0cmFjZV92ZnNfcmVu
YW1lKG9sZHBhdGgsIG5ld3BhdGgpOworICAgIHN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOwor
ICAgIGNoYXIgc3JjW1BBVEhfTUFYXTsKKyAgICBjaGFyIGRlc3RbUEFUSF9NQVhdOworICAgIGlu
dCBlcnJvcjsKKworICAgIGVycm9yID0gRU5PRU5UOworICAgIGlmIChudWxsX29yX2VtcHR5KG9s
ZHBhdGgpIHx8IG51bGxfb3JfZW1wdHkobmV3cGF0aCkpCisgICAgICAgIGdvdG8gb3V0X2Vycm5v
OworCisgICAgZ2V0X2xhc3RfY29tcG9uZW50KG9sZHBhdGgsIHNyYyk7CisgICAgaWYgKCFzdHJj
bXAoc3JjLCAiLiIpIHx8ICFzdHJjbXAoc3JjLCAiLi4iKSkgeworICAgICAgICBlcnJvciA9IEVJ
TlZBTDsKKyAgICAgICAgZ290byBvdXRfZXJybm87CisgICAgfQorCisgICAgZ2V0X2xhc3RfY29t
cG9uZW50KG5ld3BhdGgsIGRlc3QpOworICAgIGlmICghc3RyY21wKGRlc3QsICIuIikgfHwgIXN0
cmNtcChkZXN0LCAiLi4iKSkgeworICAgICAgICBlcnJvciA9IEVJTlZBTDsKKyAgICAgICAgZ290
byBvdXRfZXJybm87CisgICAgfQorCisgICAgaWYgKChlcnJvciA9IHRhc2tfY29udih0LCBvbGRw
YXRoLCBWUkVBRCwgc3JjKSkgIT0gMCkKKyAgICAgICAgZ290byBvdXRfZXJybm87CisKKyAgICBp
ZiAoKGVycm9yID0gdGFza19jb252KHQsIG5ld3BhdGgsIFZXUklURSwgZGVzdCkpICE9IDApCisg
ICAgICAgIGdvdG8gb3V0X2Vycm5vOworCisgICAgZXJyb3IgPSBzeXNfcmVuYW1lKHNyYywgZGVz
dCk7CisgICAgaWYgKGVycm9yKQorICAgICAgICBnb3RvIG91dF9lcnJubzsKKyAgICB0cmFjZV92
ZnNfcmVuYW1lX3JldCgpOworICAgIHJldHVybiAwOworICAgIG91dF9lcnJubzoKKyAgICB0cmFj
ZV92ZnNfcmVuYW1lX2VycihlcnJvcik7CisgICAgZXJybm8gPSBlcnJvcjsKKyAgICByZXR1cm4g
LTE7Cit9CisKK1RSQUNFUE9JTlQodHJhY2VfdmZzX2NoZGlyLCAiXCIlc1wiIiwgY29uc3QgY2hh
ciopOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfY2hkaXJfcmV0LCAiIik7CitUUkFDRVBPSU5UKHRy
YWNlX3Zmc19jaGRpcl9lcnIsICIlZCIsIGludCk7CisKK3N0YXRpYyBpbnQgcmVwbGFjZV9jd2Qo
c3RydWN0IHRhc2sgKnQsIHN0cnVjdCBmaWxlICpuZXdfY3dkZnAsCisgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6ZnVuY3Rpb248aW50ICh2b2lkKT4gY2hkaXJfZnVuYykKK3sKKyAgICBzdHJ1
Y3QgZmlsZSAqb2xkID0gbnVsbHB0cjsKKworICAgIGlmICghdCkgeworICAgICAgICByZXR1cm4g
MDsKKyAgICB9CisKKyAgICBpZiAodC0+dF9jd2RmcCkgeworICAgICAgICBvbGQgPSB0LT50X2N3
ZGZwOworICAgIH0KKworICAgIC8qIERvIHRoZSBhY3R1YWwgY2hkaXIgb3BlcmF0aW9uIGhlcmUg
Ki8KKyAgICBpbnQgZXJyb3IgPSBjaGRpcl9mdW5jKCk7CisKKyAgICB0LT50X2N3ZGZwID0gbmV3
X2N3ZGZwOworICAgIGlmIChvbGQpIHsKKyAgICAgICAgZmRyb3Aob2xkKTsKKyAgICB9CisKKyAg
ICByZXR1cm4gZXJyb3I7Cit9CisKK2ludCBjaGRpcihjb25zdCBjaGFyICpwYXRobmFtZSkKK3sK
KyAgICB0cmFjZV92ZnNfY2hkaXIocGF0aG5hbWUpOworICAgIHN0cnVjdCB0YXNrICp0ID0gbWFp
bl90YXNrOworICAgIGNoYXIgcGF0aFtQQVRIX01BWF07CisgICAgc3RydWN0IGZpbGUgKmZwOwor
ICAgIGludCBlcnJvcjsKKworICAgIGVycm9yID0gRU5PRU5UOworICAgIGlmIChwYXRobmFtZSA9
PSBudWxscHRyKQorICAgICAgICBnb3RvIG91dF9lcnJubzsKKworICAgIGlmICgoZXJyb3IgPSB0
YXNrX2NvbnYodCwgcGF0aG5hbWUsIFZSRUFELCBwYXRoKSkgIT0gMCkKKyAgICAgICAgZ290byBv
dXRfZXJybm87CisKKyAgICAvKiBDaGVjayBpZiBkaXJlY3RvcnkgZXhpdHMgKi8KKyAgICBlcnJv
ciA9IHN5c19vcGVuKHBhdGgsIE9fRElSRUNUT1JZLCAwLCAmZnApOworICAgIGlmIChlcnJvcikg
eworICAgICAgICBnb3RvIG91dF9lcnJubzsKKyAgICB9CisKKyAgICByZXBsYWNlX2N3ZCh0LCBm
cCwgWyZdKCkgeyBzdHJsY3B5KHQtPnRfY3dkLCBwYXRoLCBzaXplb2YodC0+dF9jd2QpKTsgcmV0
dXJuIDA7IH0pOworCisgICAgdHJhY2VfdmZzX2NoZGlyX3JldCgpOworICAgIHJldHVybiAwOwor
ICAgIG91dF9lcnJubzoKKyAgICBlcnJubyA9IGVycm9yOworICAgIHRyYWNlX3Zmc19jaGRpcl9l
cnIoZXJybm8pOworICAgIHJldHVybiAtMTsKK30KKworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZmNo
ZGlyLCAiJWQiLCBpbnQpOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZmNoZGlyX3JldCwgIiIpOwor
VFJBQ0VQT0lOVCh0cmFjZV92ZnNfZmNoZGlyX2VyciwgIiVkIiwgaW50KTsKKworaW50IGZjaGRp
cihpbnQgZmQpCit7CisgICAgdHJhY2VfdmZzX2ZjaGRpcihmZCk7CisgICAgc3RydWN0IHRhc2sg
KnQgPSBtYWluX3Rhc2s7CisgICAgc3RydWN0IGZpbGUgKmZwOworICAgIGludCBlcnJvcjsKKwor
ICAgIGVycm9yID0gZmdldChmZCwgJmZwKTsKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIGdvdG8g
b3V0X2Vycm5vOworCisgICAgZXJyb3IgPSByZXBsYWNlX2N3ZCh0LCBmcCwgWyZdKCkgeyByZXR1
cm4gc3lzX2ZjaGRpcihmcCwgdC0+dF9jd2QpOyB9KTsKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAg
ICAgZmRyb3AoZnApOworICAgICAgICBnb3RvIG91dF9lcnJubzsKKyAgICB9CisKKyAgICB0cmFj
ZV92ZnNfZmNoZGlyX3JldCgpOworICAgIHJldHVybiAwOworCisgICAgb3V0X2Vycm5vOgorICAg
IHRyYWNlX3Zmc19mY2hkaXJfZXJyKGVycm9yKTsKKyAgICBlcnJubyA9IGVycm9yOworICAgIHJl
dHVybiAtMTsKK30KKworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbGluaywgIlwiJXNcIiBcIiVzXCIi
LCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciopOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbGlua19y
ZXQsICIiKTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX2xpbmtfZXJyLCAiJWQiLCBpbnQpOworCitp
bnQgbGluayhjb25zdCBjaGFyICpvbGRwYXRoLCBjb25zdCBjaGFyICpuZXdwYXRoKQoreworICAg
IHN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOworICAgIGNoYXIgcGF0aDFbUEFUSF9NQVhdOwor
ICAgIGNoYXIgcGF0aDJbUEFUSF9NQVhdOworICAgIGludCBlcnJvcjsKKworICAgIHRyYWNlX3Zm
c19saW5rKG9sZHBhdGgsIG5ld3BhdGgpOworCisgICAgZXJyb3IgPSBFTk9FTlQ7CisgICAgaWYg
KG9sZHBhdGggPT0gbnVsbHB0ciB8fCBuZXdwYXRoID09IG51bGxwdHIpCisgICAgICAgIGdvdG8g
b3V0X2Vycm5vOworICAgIGlmICgoZXJyb3IgPSB0YXNrX2NvbnYodCwgb2xkcGF0aCwgVldSSVRF
LCBwYXRoMSkpICE9IDApCisgICAgICAgIGdvdG8gb3V0X2Vycm5vOworICAgIGlmICgoZXJyb3Ig
PSB0YXNrX2NvbnYodCwgbmV3cGF0aCwgVldSSVRFLCBwYXRoMikpICE9IDApCisgICAgICAgIGdv
dG8gb3V0X2Vycm5vOworCisgICAgZXJyb3IgPSBzeXNfbGluayhwYXRoMSwgcGF0aDIpOworICAg
IGlmIChlcnJvcikKKyAgICAgICAgZ290byBvdXRfZXJybm87CisgICAgdHJhY2VfdmZzX2xpbmtf
cmV0KCk7CisgICAgcmV0dXJuIDA7CisgICAgb3V0X2Vycm5vOgorICAgIHRyYWNlX3Zmc19saW5r
X2VycihlcnJvcik7CisgICAgZXJybm8gPSBlcnJvcjsKKyAgICByZXR1cm4gLTE7Cit9CisKKwor
VFJBQ0VQT0lOVCh0cmFjZV92ZnNfc3ltbGluaywgIm9sZHBhdGg9JXMsIG5ld3BhdGg9JXMiLCBj
b25zdCBjaGFyKiwgY29uc3QgY2hhciopOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfc3ltbGlua19y
ZXQsICIiKTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX3N5bWxpbmtfZXJyLCAiZXJybm89JWQiLCBp
bnQpOworCitpbnQgc3ltbGluayhjb25zdCBjaGFyICpvbGRwYXRoLCBjb25zdCBjaGFyICpuZXdw
YXRoKQoreworICAgIGludCBlcnJvcjsKKworICAgIHRyYWNlX3Zmc19zeW1saW5rKG9sZHBhdGgs
IG5ld3BhdGgpOworCisgICAgZXJyb3IgPSBFTk9FTlQ7CisgICAgaWYgKG9sZHBhdGggPT0gbnVs
bHB0ciB8fCBuZXdwYXRoID09IG51bGxwdHIpIHsKKyAgICAgICAgZXJybm8gPSBFTk9FTlQ7Cisg
ICAgICAgIHRyYWNlX3Zmc19zeW1saW5rX2VycihlcnJvcik7CisgICAgICAgIHJldHVybiAoLTEp
OworICAgIH0KKworICAgIGVycm9yID0gc3lzX3N5bWxpbmsob2xkcGF0aCwgbmV3cGF0aCk7Cisg
ICAgaWYgKGVycm9yKSB7CisgICAgICAgIGVycm5vID0gZXJyb3I7CisgICAgICAgIHRyYWNlX3Zm
c19zeW1saW5rX2VycihlcnJvcik7CisgICAgICAgIHJldHVybiAoLTEpOworICAgIH0KKworICAg
IHRyYWNlX3Zmc19zeW1saW5rX3JldCgpOworICAgIHJldHVybiAwOworfQorCitUUkFDRVBPSU5U
KHRyYWNlX3Zmc191bmxpbmssICJcIiVzXCIiLCBjb25zdCBjaGFyKik7CitUUkFDRVBPSU5UKHRy
YWNlX3Zmc191bmxpbmtfcmV0LCAiIik7CitUUkFDRVBPSU5UKHRyYWNlX3Zmc191bmxpbmtfZXJy
LCAiJWQiLCBpbnQpOworCitpbnQgdW5saW5rKGNvbnN0IGNoYXIgKnBhdGhuYW1lKQoreworICAg
IHRyYWNlX3Zmc191bmxpbmsocGF0aG5hbWUpOworICAgIHN0cnVjdCB0YXNrICp0ID0gbWFpbl90
YXNrOworICAgIGNoYXIgcGF0aFtQQVRIX01BWF07CisgICAgaW50IGVycm9yOworCisgICAgZXJy
b3IgPSBFTk9FTlQ7CisgICAgaWYgKHBhdGhuYW1lID09IG51bGxwdHIpCisgICAgICAgIGdvdG8g
b3V0X2Vycm5vOworICAgIGlmICgoZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5hbWUsIFZXUklU
RSwgcGF0aCkpICE9IDApCisgICAgICAgIGdvdG8gb3V0X2Vycm5vOworCisgICAgZXJyb3IgPSBz
eXNfdW5saW5rKHBhdGgpOworICAgIGlmIChlcnJvcikKKyAgICAgICAgZ290byBvdXRfZXJybm87
CisgICAgdHJhY2VfdmZzX3VubGlua19yZXQoKTsKKyAgICByZXR1cm4gMDsKKyAgICBvdXRfZXJy
bm86CisgICAgdHJhY2VfdmZzX3VubGlua19lcnIoZXJyb3IpOworICAgIGVycm5vID0gZXJyb3I7
CisgICAgcmV0dXJuIC0xOworfQorCitUUkFDRVBPSU5UKHRyYWNlX3Zmc19zdGF0LCAiXCIlc1wi
ICVwIiwgY29uc3QgY2hhciosIHN0cnVjdCBzdGF0Kik7CitUUkFDRVBPSU5UKHRyYWNlX3Zmc19z
dGF0X3JldCwgIiIpOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfc3RhdF9lcnIsICIlZCIsIGludCk7
CisKK2V4dGVybiAiQyIKK2ludCBfX3hzdGF0KGludCB2ZXIsIGNvbnN0IGNoYXIgKnBhdGhuYW1l
LCBzdHJ1Y3Qgc3RhdCAqc3QpCit7CisgICAgc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7Cisg
ICAgY2hhciBwYXRoW1BBVEhfTUFYXTsKKyAgICBpbnQgZXJyb3I7CisKKyAgICB0cmFjZV92ZnNf
c3RhdChwYXRobmFtZSwgc3QpOworCisgICAgZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5hbWUs
IDAsIHBhdGgpOworICAgIGlmIChlcnJvcikKKyAgICAgICAgZ290byBvdXRfZXJybm87CisKKyAg
ICBlcnJvciA9IHN5c19zdGF0KHBhdGgsIHN0KTsKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIGdv
dG8gb3V0X2Vycm5vOworICAgIHRyYWNlX3Zmc19zdGF0X3JldCgpOworICAgIHJldHVybiAwOwor
CisgICAgb3V0X2Vycm5vOgorICAgIHRyYWNlX3Zmc19zdGF0X2VycihlcnJvcik7CisgICAgZXJy
bm8gPSBlcnJvcjsKKyAgICByZXR1cm4gLTE7Cit9CisKK0xGUzY0KF9feHN0YXQpOworCitpbnQg
c3RhdChjb25zdCBjaGFyICpwYXRobmFtZSwgc3RydWN0IHN0YXQgKnN0KQoreworICAgIHJldHVy
biBfX3hzdGF0KDEsIHBhdGhuYW1lLCBzdCk7Cit9CisKK0xGUzY0KHN0YXQpOworCitUUkFDRVBP
SU5UKHRyYWNlX3Zmc19sc3RhdCwgInBhdGhuYW1lPSVzLCBzdGF0PSVwIiwgY29uc3QgY2hhcios
IHN0cnVjdCBzdGF0Kik7CitUUkFDRVBPSU5UKHRyYWNlX3Zmc19sc3RhdF9yZXQsICIiKTsKK1RS
QUNFUE9JTlQodHJhY2VfdmZzX2xzdGF0X2VyciwgImVycm5vPSVkIiwgaW50KTsKK2V4dGVybiAi
QyIKK2ludCBfX2x4c3RhdChpbnQgdmVyLCBjb25zdCBjaGFyICpwYXRobmFtZSwgc3RydWN0IHN0
YXQgKnN0KQoreworICAgIHN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOworICAgIGNoYXIgcGF0
aFtQQVRIX01BWF07CisgICAgaW50IGVycm9yOworCisgICAgdHJhY2VfdmZzX2xzdGF0KHBhdGhu
YW1lLCBzdCk7CisKKyAgICBlcnJvciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwgMCwgcGF0aCk7
CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIGVycm5vID0gZXJyb3I7CisgICAgICAgIHRyYWNl
X3Zmc19sc3RhdF9lcnIoZXJyb3IpOworICAgICAgICByZXR1cm4gKC0xKTsKKyAgICB9CisKKyAg
ICBlcnJvciA9IHN5c19sc3RhdChwYXRoLCBzdCk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAg
IGVycm5vID0gZXJyb3I7CisgICAgICAgIHRyYWNlX3Zmc19sc3RhdF9lcnIoZXJyb3IpOworICAg
ICAgICByZXR1cm4gKC0xKTsKKyAgICB9CisKKyAgICB0cmFjZV92ZnNfbHN0YXRfcmV0KCk7Cisg
ICAgcmV0dXJuIDA7Cit9CisKK0xGUzY0KF9fbHhzdGF0KTsKKworaW50IGxzdGF0KGNvbnN0IGNo
YXIgKnBhdGhuYW1lLCBzdHJ1Y3Qgc3RhdCAqc3QpCit7CisgICAgcmV0dXJuIF9fbHhzdGF0KDEs
IHBhdGhuYW1lLCBzdCk7Cit9CisKK0xGUzY0KGxzdGF0KTsKKworVFJBQ0VQT0lOVCh0cmFjZV92
ZnNfc3RhdGZzLCAiXCIlc1wiICVwIiwgY29uc3QgY2hhciosIHN0cnVjdCBzdGF0ZnMqKTsKK1RS
QUNFUE9JTlQodHJhY2VfdmZzX3N0YXRmc19yZXQsICIiKTsKK1RSQUNFUE9JTlQodHJhY2VfdmZz
X3N0YXRmc19lcnIsICIlZCIsIGludCk7CisKK2V4dGVybiAiQyIKK2ludCBfX3N0YXRmcyhjb25z
dCBjaGFyICpwYXRobmFtZSwgc3RydWN0IHN0YXRmcyAqYnVmKQoreworICAgIHRyYWNlX3Zmc19z
dGF0ZnMocGF0aG5hbWUsIGJ1Zik7CisgICAgc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7Cisg
ICAgY2hhciBwYXRoW1BBVEhfTUFYXTsKKyAgICBpbnQgZXJyb3I7CisKKyAgICBlcnJvciA9IHRh
c2tfY29udih0LCBwYXRobmFtZSwgMCwgcGF0aCk7CisgICAgaWYgKGVycm9yKQorICAgICAgICBn
b3RvIG91dF9lcnJubzsKKworICAgIGVycm9yID0gc3lzX3N0YXRmcyhwYXRoLCBidWYpOworICAg
IGlmIChlcnJvcikKKyAgICAgICAgZ290byBvdXRfZXJybm87CisgICAgdHJhY2VfdmZzX3N0YXRm
c19yZXQoKTsKKyAgICByZXR1cm4gMDsKKyAgICBvdXRfZXJybm86CisgICAgdHJhY2VfdmZzX3N0
YXRmc19lcnIoZXJyb3IpOworICAgIGVycm5vID0gZXJyb3I7CisgICAgcmV0dXJuIC0xOworfQor
d2Vha19hbGlhcyhfX3N0YXRmcywgc3RhdGZzKTsKKworTEZTNjQoc3RhdGZzKTsKKworVFJBQ0VQ
T0lOVCh0cmFjZV92ZnNfZnN0YXRmcywgIlwiJXNcIiAlcCIsIGludCwgc3RydWN0IHN0YXRmcyop
OworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZnN0YXRmc19yZXQsICIiKTsKK1RSQUNFUE9JTlQodHJh
Y2VfdmZzX2ZzdGF0ZnNfZXJyLCAiJWQiLCBpbnQpOworCitleHRlcm4gIkMiCitpbnQgX19mc3Rh
dGZzKGludCBmZCwgc3RydWN0IHN0YXRmcyAqYnVmKQoreworICAgIHN0cnVjdCBmaWxlICpmcDsK
KyAgICBpbnQgZXJyb3I7CisKKyAgICB0cmFjZV92ZnNfZnN0YXRmcyhmZCwgYnVmKTsKKyAgICBl
cnJvciA9IGZnZXQoZmQsICZmcCk7CisgICAgaWYgKGVycm9yKQorICAgICAgICBnb3RvIG91dF9l
cnJubzsKKworICAgIGVycm9yID0gc3lzX2ZzdGF0ZnMoZnAsIGJ1Zik7CisgICAgZmRyb3AoZnAp
OworCisgICAgaWYgKGVycm9yKQorICAgICAgICBnb3RvIG91dF9lcnJubzsKKyAgICB0cmFjZV92
ZnNfZnN0YXRmc19yZXQoKTsKKyAgICByZXR1cm4gMDsKKworICAgIG91dF9lcnJubzoKKyAgICB0
cmFjZV92ZnNfZnN0YXRmc19lcnIoZXJyb3IpOworICAgIGVycm5vID0gZXJyb3I7CisgICAgcmV0
dXJuIC0xOworfQord2Vha19hbGlhcyhfX2ZzdGF0ZnMsIGZzdGF0ZnMpOworCitMRlM2NChmc3Rh
dGZzKTsKKworc3RhdGljIGludAorc3RhdGZzX3RvX3N0YXR2ZnMoc3RydWN0IHN0YXR2ZnMgKmRz
dCwgc3RydWN0IHN0YXRmcyAqc3JjKQoreworICAgIGRzdC0+Zl9ic2l6ZSA9IHNyYy0+Zl9ic2l6
ZTsKKyAgICBkc3QtPmZfZnJzaXplID0gc3JjLT5mX2JzaXplOworICAgIGRzdC0+Zl9ibG9ja3Mg
PSBzcmMtPmZfYmxvY2tzOworICAgIGRzdC0+Zl9iZnJlZSA9IHNyYy0+Zl9iZnJlZTsKKyAgICBk
c3QtPmZfYmF2YWlsID0gc3JjLT5mX2JhdmFpbDsKKyAgICBkc3QtPmZfZmlsZXMgPSBzcmMtPmZf
ZmlsZXM7CisgICAgZHN0LT5mX2ZmcmVlID0gc3JjLT5mX2ZmcmVlOworICAgIGRzdC0+Zl9mYXZh
aWwgPSAwOworICAgIGRzdC0+Zl9mc2lkID0gc3JjLT5mX2ZzaWQuX192YWxbMF07CisgICAgZHN0
LT5mX2ZsYWcgPSBzcmMtPmZfZmxhZ3M7CisgICAgZHN0LT5mX25hbWVtYXggPSBzcmMtPmZfbmFt
ZWxlbjsKKyAgICByZXR1cm4gMDsKK30KKworaW50CitzdGF0dmZzKGNvbnN0IGNoYXIgKnBhdGhu
YW1lLCBzdHJ1Y3Qgc3RhdHZmcyAqYnVmKQoreworICAgIHN0cnVjdCBzdGF0ZnMgc3Q7CisKKyAg
ICBpZiAoX19zdGF0ZnMocGF0aG5hbWUsICZzdCkgPCAwKQorICAgICAgICByZXR1cm4gLTE7Cisg
ICAgcmV0dXJuIHN0YXRmc190b19zdGF0dmZzKGJ1ZiwgJnN0KTsKK30KKworTEZTNjQoc3RhdHZm
cyk7CisKK2ludAorZnN0YXR2ZnMoaW50IGZkLCBzdHJ1Y3Qgc3RhdHZmcyAqYnVmKQoreworICAg
IHN0cnVjdCBzdGF0ZnMgc3Q7CisKKyAgICBpZiAoX19mc3RhdGZzKGZkLCAmc3QpIDwgMCkKKyAg
ICAgICAgcmV0dXJuIC0xOworICAgIHJldHVybiBzdGF0ZnNfdG9fc3RhdHZmcyhidWYsICZzdCk7
Cit9CisKK0xGUzY0KGZzdGF0dmZzKTsKKworCitUUkFDRVBPSU5UKHRyYWNlX3Zmc19nZXRjd2Qs
ICIlcCAlZCIsIGNoYXIqLCBzaXplX3QpOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZ2V0Y3dkX3Jl
dCwgIlwiJXNcIiIsIGNvbnN0IGNoYXIqKTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX2dldGN3ZF9l
cnIsICIlZCIsIGludCk7CisKK2NoYXIgKmdldGN3ZChjaGFyICpwYXRoLCBzaXplX3Qgc2l6ZSkK
K3sKKyAgICB0cmFjZV92ZnNfZ2V0Y3dkKHBhdGgsIHNpemUpOworICAgIHN0cnVjdCB0YXNrICp0
ID0gbWFpbl90YXNrOworICAgIGludCBsZW4gPSBzdHJsZW4odC0+dF9jd2QpICsgMTsKKyAgICBp
bnQgZXJyb3I7CisKKyAgICBpZiAoIXBhdGgpIHsKKyAgICAgICAgaWYgKCFzaXplKQorICAgICAg
ICAgICAgc2l6ZSA9IGxlbjsKKyAgICAgICAgcGF0aCA9IChjaGFyKiltYWxsb2Moc2l6ZSk7Cisg
ICAgICAgIGlmICghcGF0aCkgeworICAgICAgICAgICAgZXJyb3IgPSBFTk9NRU07CisgICAgICAg
ICAgICBnb3RvIG91dF9lcnJubzsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlm
ICghc2l6ZSkgeworICAgICAgICAgICAgZXJyb3IgPSBFSU5WQUw7CisgICAgICAgICAgICBnb3Rv
IG91dF9lcnJubzsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChzaXplIDwgbGVuKSB7Cisg
ICAgICAgIGVycm9yID0gRVJBTkdFOworICAgICAgICBnb3RvIG91dF9lcnJubzsKKyAgICB9CisK
KyAgICBtZW1jcHkocGF0aCwgdC0+dF9jd2QsIGxlbik7CisgICAgdHJhY2VfdmZzX2dldGN3ZF9y
ZXQocGF0aCk7CisgICAgcmV0dXJuIHBhdGg7CisKKyAgICBvdXRfZXJybm86CisgICAgdHJhY2Vf
dmZzX2dldGN3ZF9lcnIoZXJyb3IpOworICAgIGVycm5vID0gZXJyb3I7CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKK1RSQUNFUE9JTlQodHJhY2VfdmZzX2R1cCwgIiVkIiwgaW50KTsKK1RSQUNF
UE9JTlQodHJhY2VfdmZzX2R1cF9yZXQsICJcIiVzXCIiLCBpbnQpOworVFJBQ0VQT0lOVCh0cmFj
ZV92ZnNfZHVwX2VyciwgIiVkIiwgaW50KTsKKy8qCisgKiBEdXBsaWNhdGUgYSBmaWxlIGRlc2Ny
aXB0b3IKKyAqLworaW50IGR1cChpbnQgb2xkZmQpCit7CisgICAgc3RydWN0IGZpbGUgKmZwOwor
ICAgIGludCBuZXdmZDsKKyAgICBpbnQgZXJyb3I7CisKKyAgICB0cmFjZV92ZnNfZHVwKG9sZGZk
KTsKKyAgICBlcnJvciA9IGZnZXQob2xkZmQsICZmcCk7CisgICAgaWYgKGVycm9yKQorICAgICAg
ICBnb3RvIG91dF9lcnJubzsKKworICAgIGVycm9yID0gZmRhbGxvYyhmcCwgJm5ld2ZkKTsKKyAg
ICBpZiAoZXJyb3IpCisgICAgICAgIGdvdG8gb3V0X2Zkcm9wOworCisgICAgZmRyb3AoZnApOwor
ICAgIHRyYWNlX3Zmc19kdXBfcmV0KG5ld2ZkKTsKKyAgICByZXR1cm4gbmV3ZmQ7CisKKyAgICBv
dXRfZmRyb3A6CisgICAgZmRyb3AoZnApOworICAgIG91dF9lcnJubzoKKyAgICB0cmFjZV92ZnNf
ZHVwX2VycihlcnJvcik7CisgICAgZXJybm8gPSBlcnJvcjsKKyAgICByZXR1cm4gLTE7Cit9CisK
K1RSQUNFUE9JTlQodHJhY2VfdmZzX2R1cDMsICIlZCAlZCAweCV4IiwgaW50LCBpbnQsIGludCk7
CitUUkFDRVBPSU5UKHRyYWNlX3Zmc19kdXAzX3JldCwgIiVkIiwgaW50KTsKK1RSQUNFUE9JTlQo
dHJhY2VfdmZzX2R1cDNfZXJyLCAiJWQiLCBpbnQpOworLyoKKyAqIER1cGxpY2F0ZSBhIGZpbGUg
ZGVzY3JpcHRvciB0byBhIHBhcnRpY3VsYXIgdmFsdWUuCisgKi8KK2ludCBkdXAzKGludCBvbGRm
ZCwgaW50IG5ld2ZkLCBpbnQgZmxhZ3MpCit7CisgICAgc3RydWN0IGZpbGUgKmZwOworICAgIGlu
dCBlcnJvcjsKKworICAgIHRyYWNlX3Zmc19kdXAzKG9sZGZkLCBuZXdmZCwgZmxhZ3MpOworICAg
IC8qCisgICAgICogRG9uJ3QgYWxsb3cgYW55IGFyZ3VtZW50IGJ1dCBPX0NMT0VYRUMuICBCdXQg
d2UgZXZlbiBpZ25vcmUKKyAgICAgKiB0aGF0IGFzIHdlIGRvbid0IHN1cHBvcnQgZXhlYygpIGFu
ZCB0aHVzIGRvbid0IGNhcmUuCisgICAgICovCisgICAgaWYgKChmbGFncyAmIH5PX0NMT0VYRUMp
ICE9IDApIHsKKyAgICAgICAgZXJyb3IgPSBFSU5WQUw7CisgICAgICAgIGdvdG8gb3V0X2Vycm5v
OworICAgIH0KKworICAgIGlmIChvbGRmZCA9PSBuZXdmZCkgeworICAgICAgICBlcnJvciA9IEVJ
TlZBTDsKKyAgICAgICAgZ290byBvdXRfZXJybm87CisgICAgfQorCisgICAgZXJyb3IgPSBmZ2V0
KG9sZGZkLCAmZnApOworICAgIGlmIChlcnJvcikKKyAgICAgICAgZ290byBvdXRfZXJybm87CisK
KyAgICBlcnJvciA9IGZkc2V0KG5ld2ZkLCBmcCk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAg
IGZkcm9wKGZwKTsKKyAgICAgICAgZ290byBvdXRfZXJybm87CisgICAgfQorCisgICAgZmRyb3Ao
ZnApOworICAgIHRyYWNlX3Zmc19kdXAzX3JldChuZXdmZCk7CisgICAgcmV0dXJuIG5ld2ZkOwor
CisgICAgb3V0X2Vycm5vOgorICAgIHRyYWNlX3Zmc19kdXAzX2VycihlcnJvcik7CisgICAgZXJy
bm8gPSBlcnJvcjsKKyAgICByZXR1cm4gLTE7Cit9CisKK2ludCBkdXAyKGludCBvbGRmZCwgaW50
IG5ld2ZkKQoreworICAgIGlmIChvbGRmZCA9PSBuZXdmZCkKKyAgICAgICAgcmV0dXJuIG5ld2Zk
OworCisgICAgcmV0dXJuIGR1cDMob2xkZmQsIG5ld2ZkLCAwKTsKK30KKworLyoKKyAqIFRoZSBm
aWxlIGNvbnRyb2wgc3lzdGVtIGNhbGwuCisgKi8KKyNkZWZpbmUgU0VURkwgKE9fQVBQRU5EIHwg
T19BU1lOQyB8IE9fRElSRUNUIHwgT19OT0FUSU1FIHwgT19OT05CTE9DSykKKworVFJBQ0VQT0lO
VCh0cmFjZV92ZnNfZmNudGwsICIlZCAlZCAweCV4IiwgaW50LCBpbnQsIGludCk7CitUUkFDRVBP
SU5UKHRyYWNlX3Zmc19mY250bF9yZXQsICJcIiVzXCIiLCBpbnQpOworVFJBQ0VQT0lOVCh0cmFj
ZV92ZnNfZmNudGxfZXJyLCAiJWQiLCBpbnQpOworCitleHRlcm4gIkMiCitpbnQgZmNudGwoaW50
IGZkLCBpbnQgY21kLCBpbnQgYXJnKQoreworICAgIHN0cnVjdCBmaWxlICpmcDsKKyAgICBpbnQg
cmV0ID0gMCwgZXJyb3I7CisgICAgaW50IHRtcDsKKworICAgIHRyYWNlX3Zmc19mY250bChmZCwg
Y21kLCBhcmcpOworICAgIGVycm9yID0gZmdldChmZCwgJmZwKTsKKyAgICBpZiAoZXJyb3IpCisg
ICAgICAgIGdvdG8gb3V0X2Vycm5vOworCisgICAgLy8gQW4gaW1wb3J0YW50IG5vdGUgYWJvdXQg
b3VyIGhhbmRsaW5nIG9mIEZEX0NMT0VYRUMgLyBPX0NMT0VYRUM6CisgICAgLy8gY2xvc2Utb24t
ZXhlYyBzaG91bGRuJ3QgaGF2ZSBiZWVuIGEgZmlsZSBmbGFnIChmcC0+Zl9mbGFncykgLSBpdCBp
cyBhCisgICAgLy8gZmlsZSBkZXNjcmlwdG9yIGZsYWcsIG1lYW5pbmcgdGhhdCB0aGF0IHR3byBk
dXAoKWVkIGZpbGUgZGVzY3JpcHRvcnMKKyAgICAvLyBjb3VsZCBoYXZlIGRpZmZlcmVudCB2YWx1
ZXMgZm9yIEZEX0NMT0VYRUMuIE91ciBjdXJyZW50IGltcGxlbWVudGF0aW9uCisgICAgLy8gKndy
b25nbHkqIG1ha2VzIGNsb3NlLW9uLWV4ZWMgYW4gZl9mbGFnICh1c2luZyB0aGUgYml0IE9fQ0xP
RVhFQykuCisgICAgLy8gVGhlcmUgaXMgbGl0dGxlIHByYWN0aWNhbCBkaWZmZXJlbmNlLCB0aG91
Z2gsIGJlY2F1c2UgdGhpcyBmbGFnIGlzCisgICAgLy8gaWdub3JlZCBpbiBPU3YgYW55d2F5LCBh
cyBpdCBkb2Vzbid0IHN1cHBvcnQgZXhlYygpLgorICAgIHN3aXRjaCAoY21kKSB7CisgICAgY2Fz
ZSBGX0RVUEZEOgorICAgICAgICBlcnJvciA9IF9mZGFsbG9jKGZwLCAmcmV0LCBhcmcpOworICAg
ICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICBnb3RvIG91dF9lcnJubzsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBGX0dFVEZEOgorICAgICAgICByZXQgPSAoZnAtPmZfZmxhZ3MgJiBPX0NM
T0VYRUMpID8gRkRfQ0xPRVhFQyA6IDA7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRl9TRVRG
RDoKKyAgICAgICAgRkRfTE9DSyhmcCk7CisgICAgICAgIGZwLT5mX2ZsYWdzID0gKGZwLT5mX2Zs
YWdzICYgfk9fQ0xPRVhFQykgfAorICAgICAgICAgICAgICAgICgoYXJnICYgRkRfQ0xPRVhFQykg
PyBPX0NMT0VYRUMgOiAwKTsKKyAgICAgICAgRkRfVU5MT0NLKGZwKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBGX0dFVEZMOgorICAgICAgICAvLyBBcyBleHBsYWluZWQgYWJvdmUsIHRoZSBP
X0NMT0VYRUMgc2hvdWxkIGhhdmUgYmVlbiBpbiBmX2ZsYWdzLAorICAgICAgICAvLyBhbmQgc2hv
dWxkbid0IGJlIHJldHVybmVkLiBMaW51eCBhbHdheXMgcmV0dXJucyAwMTAwMDAwICgidGhlCisg
ICAgICAgIC8vIGZsYWcgZm9ybWVybHkga25vd24gYXMgT19MQVJHRUZJTEUpIHNvIGxldCdzIGRv
IGl0IHRvby4KKyAgICAgICAgcmV0ID0gKG9mbGFncyhmcC0+Zl9mbGFncykgJiB+T19DTE9FWEVD
KSB8IDAxMDAwMDA7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRl9TRVRGTDoKKyAgICAgICAg
RkRfTE9DSyhmcCk7CisgICAgICAgIGZwLT5mX2ZsYWdzID0gZmZsYWdzKChvZmxhZ3MoZnAtPmZf
ZmxhZ3MpICYgflNFVEZMKSB8CisgICAgICAgICAgICAgICAgKGFyZyAmIFNFVEZMKSk7CisgICAg
ICAgIEZEX1VOTE9DSyhmcCk7CisKKyAgICAgICAgLyogU3luYyBub25ibG9ja2luZy9hc3luYyBz
dGF0ZSB3aXRoIGZpbGUgZmxhZ3MgKi8KKyAgICAgICAgdG1wID0gZnAtPmZfZmxhZ3MgJiBGTk9O
QkxPQ0s7CisgICAgICAgIGZwLT5pb2N0bChGSU9OQklPLCAmdG1wKTsKKyAgICAgICAgdG1wID0g
ZnAtPmZfZmxhZ3MgJiBGQVNZTkM7CisgICAgICAgIGZwLT5pb2N0bChGSU9BU1lOQywgJnRtcCk7
CisKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGX1NFVExLOgorICAgICAgICBXQVJOX09OQ0Uo
ImZjbnRsKEZfU0VUTEspIHN0dWJiZWRcbiIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZf
R0VUTEs6CisgICAgICAgIFdBUk5fT05DRSgiZmNudGwoRl9HRVRMSykgc3R1YmJlZFxuIik7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgRl9TRVRMS1c6CisgICAgICAgIFdBUk5fT05DRSgiZmNu
dGwoRl9TRVRMS1cpIHN0dWJiZWRcbiIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZfU0VU
T1dOOgorICAgICAgICBXQVJOX09OQ0UoImZjbnRsKEZfU0VUT1dOKSBzdHViYmVkXG4iKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAga3ByaW50ZigidW5zdXBwb3J0ZWQg
ZmNudGwgY21kIDB4JXhcbiIsIGNtZCk7CisgICAgICAgIGVycm9yID0gRUlOVkFMOworICAgIH0K
KworICAgIGZkcm9wKGZwKTsKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIGdvdG8gb3V0X2Vycm5v
OworICAgIHRyYWNlX3Zmc19mY250bF9yZXQocmV0KTsKKyAgICByZXR1cm4gcmV0OworCisgICAg
b3V0X2Vycm5vOgorICAgIHRyYWNlX3Zmc19mY250bF9lcnIoZXJyb3IpOworICAgIGVycm5vID0g
ZXJyb3I7CisgICAgcmV0dXJuIC0xOworfQorCitUUkFDRVBPSU5UKHRyYWNlX3Zmc19hY2Nlc3Ms
ICJcIiVzXCIgMCUwbyIsIGNvbnN0IGNoYXIqLCBpbnQpOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNf
YWNjZXNzX3JldCwgIiIpOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfYWNjZXNzX2VyciwgIiVkIiwg
aW50KTsKKworLyoKKyAqIENoZWNrIHBlcm1pc3Npb24gZm9yIGZpbGUgYWNjZXNzCisgKi8KK2lu
dCBhY2Nlc3MoY29uc3QgY2hhciAqcGF0aG5hbWUsIGludCBtb2RlKQoreworICAgIHRyYWNlX3Zm
c19hY2Nlc3MocGF0aG5hbWUsIG1vZGUpOworICAgIHN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNr
OworICAgIGNoYXIgcGF0aFtQQVRIX01BWF07CisgICAgaW50IGFjYywgZXJyb3IgPSAwOworCisg
ICAgYWNjID0gMDsKKyAgICBpZiAobW9kZSAmIFJfT0spCisgICAgICAgIGFjYyB8PSBWUkVBRDsK
KyAgICBpZiAobW9kZSAmIFdfT0spCisgICAgICAgIGFjYyB8PSBWV1JJVEU7CisKKyAgICBpZiAo
KGVycm9yID0gdGFza19jb252KHQsIHBhdGhuYW1lLCBhY2MsIHBhdGgpKSAhPSAwKQorICAgICAg
ICBnb3RvIG91dF9lcnJubzsKKworICAgIGVycm9yID0gc3lzX2FjY2VzcyhwYXRoLCBtb2RlKTsK
KyAgICBpZiAoZXJyb3IpCisgICAgICAgIGdvdG8gb3V0X2Vycm5vOworICAgIHRyYWNlX3Zmc19h
Y2Nlc3NfcmV0KCk7CisgICAgcmV0dXJuIDA7CisgICAgb3V0X2Vycm5vOgorICAgIGVycm5vID0g
ZXJyb3I7CisgICAgdHJhY2VfdmZzX2FjY2Vzc19lcnIoZXJyb3IpOworICAgIHJldHVybiAtMTsK
K30KKworaW50IGZhY2Nlc3NhdChpbnQgZGlyZmQsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBpbnQg
bW9kZSwgaW50IGZsYWdzKQoreworICAgIGlmIChmbGFncyAmIEFUX1NZTUxJTktfTk9GT0xMT1cp
IHsKKyAgICAgICAgVU5JTVBMRU1FTlRFRCgiZmFjY2Vzc2F0KCkgd2l0aCBBVF9TWU1MSU5LX05P
Rk9MTE9XIik7CisgICAgfQorCisgICAgaWYgKHBhdGhuYW1lWzBdID09ICcvJyB8fCBkaXJmZCA9
PSBBVF9GRENXRCkgeworICAgICAgICByZXR1cm4gYWNjZXNzKHBhdGhuYW1lLCBtb2RlKTsKKyAg
ICB9CisKKyAgICBzdHJ1Y3QgZmlsZSAqZnA7CisgICAgaW50IGVycm9yID0gZmdldChkaXJmZCwg
JmZwKTsKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgZXJybm8gPSBlcnJvcjsKKyAgICAgICAg
cmV0dXJuIC0xOworICAgIH0KKworICAgIHN0cnVjdCB2bm9kZSAqdnAgPSBmcC0+Zl9kZW50cnkt
PmRfdm5vZGU7CisgICAgdm5fbG9jayh2cCk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Y2hhciBb
XT4gdXAgKG5ldyBjaGFyW1BBVEhfTUFYXSk7CisgICAgY2hhciAqcCA9IHVwLmdldCgpOworCisg
ICAgLyogYnVpbGQgYWJzb2x1dGUgcGF0aCAqLworICAgIHN0cmxjcHkocCwgZnAtPmZfZGVudHJ5
LT5kX21vdW50LT5tX3BhdGgsIFBBVEhfTUFYKTsKKyAgICBzdHJsY2F0KHAsIGZwLT5mX2RlbnRy
eS0+ZF9wYXRoLCBQQVRIX01BWCk7CisgICAgc3RybGNhdChwLCAiLyIsIFBBVEhfTUFYKTsKKyAg
ICBzdHJsY2F0KHAsIHBhdGhuYW1lLCBQQVRIX01BWCk7CisKKyAgICBlcnJvciA9IGFjY2Vzcyhw
LCBtb2RlKTsKKworICAgIHZuX3VubG9jayh2cCk7CisgICAgZmRyb3AoZnApOworCisgICAgcmV0
dXJuIGVycm9yOworfQorCitleHRlcm4gIkMiIAoraW50IGV1aWRhY2Nlc3MoY29uc3QgY2hhciAq
cGF0aG5hbWUsIGludCBtb2RlKQoreworICAgIHJldHVybiBhY2Nlc3MocGF0aG5hbWUsIG1vZGUp
OworfQorCit3ZWFrX2FsaWFzKGV1aWRhY2Nlc3MsZWFjY2Vzcyk7CisKKyNpZiAwCitzdGF0aWMg
aW50Citmc19waXBlKHN0cnVjdCB0YXNrICp0LCBzdHJ1Y3QgbXNnICptc2cpCit7CisjaWZkZWYg
Q09ORklHX0ZJRk9GUworICAgIGNoYXIgcGF0aFtQQVRIX01BWF07CisgICAgZmlsZV90IHJmcCwg
d2ZwOworICAgIGludCBlcnJvciwgcmZkLCB3ZmQ7CisKKyAgICBEUFJJTlRGKFZGU0RCX0NPUkUs
ICgiZnNfcGlwZVxuIikpOworCisgICAgaWYgKChyZmQgPSB0YXNrX25ld2ZkKHQpKSA9PSAtMSkK
KyAgICAgICAgcmV0dXJuIEVNRklMRTsKKyAgICB0LT50X29maWxlW3JmZF0gPSAoZmlsZV90KTE7
IC8qIHRlbXAgKi8KKworICAgIGlmICgod2ZkID0gdGFza19uZXdmZCh0KSkgPT0gLTEpIHsKKyAg
ICAgICAgdC0+dF9vZmlsZVtyZmRdID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIEVNRklMRTsK
KyAgICB9CisgICAgc3ByaW50ZihwYXRoLCAiL21udC9maWZvL3BpcGUtJXgtJWQiLCAodV9pbnQp
dC0+dF90YXNraWQsIHJmZCk7CisKKyAgICBpZiAoKGVycm9yID0gc3lzX21rbm9kKHBhdGgsIFNf
SUZJRk8pKSAhPSAwKQorICAgICAgICBnb3RvIG91dDsKKyAgICBpZiAoKGVycm9yID0gc3lzX29w
ZW4ocGF0aCwgT19SRE9OTFkgfCBPX05PTkJMT0NLLCAwLCAmcmZwKSkgIT0gMCkgeworICAgICAg
ICBnb3RvIG91dDsKKyAgICB9CisgICAgaWYgKChlcnJvciA9IHN5c19vcGVuKHBhdGgsIE9fV1JP
TkxZIHwgT19OT05CTE9DSywgMCwgJndmcCkpICE9IDApIHsKKyAgICAgICAgZ290byBvdXQ7Cisg
ICAgfQorICAgIHQtPnRfb2ZpbGVbcmZkXSA9IHJmcDsKKyAgICB0LT50X29maWxlW3dmZF0gPSB3
ZnA7CisgICAgdC0+dF9ub3BlbnMgKz0gMjsKKyAgICBtc2ctPmRhdGFbMF0gPSByZmQ7CisgICAg
bXNnLT5kYXRhWzFdID0gd2ZkOworICAgIHJldHVybiAwOworICAgIG91dDoKKyAgICB0LT50X29m
aWxlW3JmZF0gPSBudWxscHRyOworICAgIHQtPnRfb2ZpbGVbd2ZkXSA9IG51bGxwdHI7CisgICAg
cmV0dXJuIGVycm9yOworI2Vsc2UKKyAgICByZXR1cm4gRU5PU1lTOworI2VuZGlmCit9CisjZW5k
aWYKKworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfaXNhdHR5LCAiJWQiLCBpbnQpOworVFJBQ0VQT0lO
VCh0cmFjZV92ZnNfaXNhdHR5X3JldCwgIiVkIiwgaW50KTsKK1RSQUNFUE9JTlQodHJhY2VfdmZz
X2lzYXR0eV9lcnIsICIlZCIsIGludCk7CisKKy8qCisgKiBSZXR1cm4gaWYgc3BlY2lmaWVkIGZp
bGUgaXMgYSB0dHkKKyAqLworaW50IGlzYXR0eShpbnQgZmQpCit7CisgICAgc3RydWN0IGZpbGUg
KmZwOworICAgIGludCBpc3R0eSA9IDA7CisKKyAgICB0cmFjZV92ZnNfaXNhdHR5KGZkKTsKKyAg
ICBmaWxlcmVmIGYoZmlsZXJlZl9mcm9tX2ZkKGZkKSk7CisgICAgaWYgKCFmKSB7CisgICAgICAg
IGVycm5vID0gRUJBREY7CisgICAgICAgIHRyYWNlX3Zmc19pc2F0dHlfZXJyKGVycm5vKTsKKyAg
ICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGZwID0gZi5nZXQoKTsKKyAgICBpZiAoZHlu
YW1pY19jYXN0PHR0eV9maWxlKj4oZnApIHx8CisgICAgICAgIChmcC0+Zl9kZW50cnkgJiYgZnAt
PmZfZGVudHJ5LT5kX3Zub2RlLT52X2ZsYWdzICYgVklTVFRZKSkgeworICAgICAgICBpc3R0eSA9
IDE7CisgICAgfQorCisgICAgdHJhY2VfdmZzX2lzYXR0eV9yZXQoaXN0dHkpOworICAgIHJldHVy
biBpc3R0eTsKK30KKworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfdHJ1bmNhdGUsICJcIiVzXCIgMHgl
eCIsIGNvbnN0IGNoYXIqLCBvZmZfdCk7CitUUkFDRVBPSU5UKHRyYWNlX3Zmc190cnVuY2F0ZV9y
ZXQsICIiKTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX3RydW5jYXRlX2VyciwgIiVkIiwgaW50KTsK
KworaW50IHRydW5jYXRlKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBvZmZfdCBsZW5ndGgpCit7Cisg
ICAgdHJhY2VfdmZzX3RydW5jYXRlKHBhdGhuYW1lLCBsZW5ndGgpOworICAgIHN0cnVjdCB0YXNr
ICp0ID0gbWFpbl90YXNrOworICAgIGNoYXIgcGF0aFtQQVRIX01BWF07CisgICAgaW50IGVycm9y
OworCisgICAgZXJyb3IgPSBFTk9FTlQ7CisgICAgaWYgKHBhdGhuYW1lID09IG51bGxwdHIpCisg
ICAgICAgIGdvdG8gb3V0X2Vycm5vOworICAgIGlmICgoZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0
aG5hbWUsIFZXUklURSwgcGF0aCkpICE9IDApCisgICAgICAgIGdvdG8gb3V0X2Vycm5vOworCisg
ICAgZXJyb3IgPSBzeXNfdHJ1bmNhdGUocGF0aCwgbGVuZ3RoKTsKKyAgICBpZiAoZXJyb3IpCisg
ICAgICAgIGdvdG8gb3V0X2Vycm5vOworICAgIHRyYWNlX3Zmc190cnVuY2F0ZV9yZXQoKTsKKyAg
ICByZXR1cm4gMDsKKyAgICBvdXRfZXJybm86CisgICAgZXJybm8gPSBlcnJvcjsKKyAgICB0cmFj
ZV92ZnNfdHJ1bmNhdGVfZXJyKGVycm9yKTsKKyAgICByZXR1cm4gLTE7Cit9CisKK0xGUzY0KHRy
dW5jYXRlKTsKKworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZnRydW5jYXRlLCAiJWQgMHgleCIsIGlu
dCwgb2ZmX3QpOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZnRydW5jYXRlX3JldCwgIiIpOworVFJB
Q0VQT0lOVCh0cmFjZV92ZnNfZnRydW5jYXRlX2VyciwgIiVkIiwgaW50KTsKKworaW50IGZ0cnVu
Y2F0ZShpbnQgZmQsIG9mZl90IGxlbmd0aCkKK3sKKyAgICB0cmFjZV92ZnNfZnRydW5jYXRlKGZk
LCBsZW5ndGgpOworICAgIHN0cnVjdCBmaWxlICpmcDsKKyAgICBpbnQgZXJyb3I7CisKKyAgICBl
cnJvciA9IGZnZXQoZmQsICZmcCk7CisgICAgaWYgKGVycm9yKQorICAgICAgICBnb3RvIG91dF9l
cnJubzsKKworICAgIGVycm9yID0gc3lzX2Z0cnVuY2F0ZShmcCwgbGVuZ3RoKTsKKyAgICBmZHJv
cChmcCk7CisKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIGdvdG8gb3V0X2Vycm5vOworICAgIHRy
YWNlX3Zmc19mdHJ1bmNhdGVfcmV0KCk7CisgICAgcmV0dXJuIDA7CisKKyAgICBvdXRfZXJybm86
CisgICAgZXJybm8gPSBlcnJvcjsKKyAgICB0cmFjZV92ZnNfZnRydW5jYXRlX2VycihlcnJvcik7
CisgICAgcmV0dXJuIC0xOworfQorCitMRlM2NChmdHJ1bmNhdGUpOworCitzc2l6ZV90IHJlYWRs
aW5rKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBjaGFyICpidWYsIHNpemVfdCBidWZzaXplKQorewor
ICAgIHN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOworICAgIGNoYXIgcGF0aFtQQVRIX01BWF07
CisgICAgaW50IGVycm9yOworICAgIHNzaXplX3Qgc2l6ZTsKKworICAgIGVycm9yID0gLUVJTlZB
TDsKKyAgICBpZiAoYnVmc2l6ZSA8PSAwKQorICAgICAgICBnb3RvIG91dF9lcnJubzsKKworICAg
IGVycm9yID0gRU5PRU5UOworICAgIGlmIChwYXRobmFtZSA9PSBudWxscHRyKQorICAgICAgICBn
b3RvIG91dF9lcnJubzsKKyAgICBlcnJvciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwgVldSSVRF
LCBwYXRoKTsKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIGdvdG8gb3V0X2Vycm5vOworCisgICAg
c2l6ZSAgPSAwOworICAgIGVycm9yID0gc3lzX3JlYWRsaW5rKHBhdGgsIGJ1ZiwgYnVmc2l6ZSwg
JnNpemUpOworCisgICAgaWYgKGVycm9yICE9IDApCisgICAgICAgIGdvdG8gb3V0X2Vycm5vOwor
CisgICAgcmV0dXJuIHNpemU7CisgICAgb3V0X2Vycm5vOgorICAgIGVycm5vID0gZXJyb3I7Cisg
ICAgcmV0dXJuIC0xOworfQorCitUUkFDRVBPSU5UKHRyYWNlX3Zmc19mYWxsb2NhdGUsICIlZCAl
ZCAweCV4IDB4JXgiLCBpbnQsIGludCwgbG9mZl90LCBsb2ZmX3QpOworVFJBQ0VQT0lOVCh0cmFj
ZV92ZnNfZmFsbG9jYXRlX3JldCwgIiIpOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZmFsbG9jYXRl
X2VyciwgIiVkIiwgaW50KTsKKworaW50IGZhbGxvY2F0ZShpbnQgZmQsIGludCBtb2RlLCBsb2Zm
X3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuKQoreworICAgIHN0cnVjdCBmaWxlICpmcDsKKyAgICBpbnQg
ZXJyb3I7CisKKyAgICB0cmFjZV92ZnNfZmFsbG9jYXRlKGZkLCBtb2RlLCBvZmZzZXQsIGxlbik7
CisgICAgZXJyb3IgPSBmZ2V0KGZkLCAmZnApOworICAgIGlmIChlcnJvcikKKyAgICAgICAgZ290
byBvdXRfZXJybm87CisKKyAgICBlcnJvciA9IHN5c19mYWxsb2NhdGUoZnAsIG1vZGUsIG9mZnNl
dCwgbGVuKTsKKyAgICBmZHJvcChmcCk7CisKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIGdvdG8g
b3V0X2Vycm5vOworICAgIHRyYWNlX3Zmc19mYWxsb2NhdGVfcmV0KCk7CisgICAgcmV0dXJuIDA7
CisKKyAgICBvdXRfZXJybm86CisgICAgdHJhY2VfdmZzX2ZhbGxvY2F0ZV9lcnIoZXJyb3IpOwor
ICAgIGVycm5vID0gZXJyb3I7CisgICAgcmV0dXJuIC0xOworfQorCitMRlM2NChmYWxsb2NhdGUp
OworCitUUkFDRVBPSU5UKHRyYWNlX3Zmc191dGltZXMsICJcIiVzXCIiLCBjb25zdCBjaGFyKik7
CitUUkFDRVBPSU5UKHRyYWNlX3Zmc191dGltZXNfcmV0LCAiIik7CitUUkFDRVBPSU5UKHRyYWNl
X3Zmc191dGltZXNfZXJyLCAiJWQiLCBpbnQpOworCitpbnQgZnV0aW1lcyhpbnQgZmQsIGNvbnN0
IHN0cnVjdCB0aW1ldmFsIHRpbWVzWzJdKQoreworICAgIHJldHVybiBmdXRpbWVzYXQoZmQsIG51
bGxwdHIsIHRpbWVzKTsKK30KKworaW50IGZ1dGltZXNhdChpbnQgZGlyZmQsIGNvbnN0IGNoYXIg
KnBhdGhuYW1lLCBjb25zdCBzdHJ1Y3QgdGltZXZhbCB0aW1lc1syXSkKK3sKKyAgICBzdHJ1Y3Qg
c3RhdCBzdDsKKyAgICBzdHJ1Y3QgZmlsZSAqZnA7CisgICAgaW50IGVycm9yOworICAgIGNoYXIg
KmFic29sdXRlX3BhdGg7CisKKyAgICBpZiAoKHBhdGhuYW1lICYmIHBhdGhuYW1lWzBdID09ICcv
JykgfHwgZGlyZmQgPT0gQVRfRkRDV0QpCisgICAgICAgIHJldHVybiB1dGltZXMocGF0aG5hbWUs
IHRpbWVzKTsKKworICAgIC8vIE5vdGU6IGlmIHBhdGhuYW1lID09IG51bGxwdHIsIGZ1dGltZXNh
dCBvcGVyYXRlcyBvbiBkaXJmZCBpdHNlbGYsIGFuZCBpbgorICAgIC8vIHRoYXQgY2FzZSBpdCBk
b2Vzbid0IGhhdmUgdG8gYmUgYSBkaXJlY3RvcnkuCisgICAgaWYgKHBhdGhuYW1lKSB7CisgICAg
ICAgIGVycm9yID0gZnN0YXQoZGlyZmQsICZzdCk7CisgICAgICAgIGlmIChlcnJvcikgeworICAg
ICAgICAgICAgZXJyb3IgPSBlcnJubzsKKyAgICAgICAgICAgIGdvdG8gb3V0X2Vycm5vOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKCFTX0lTRElSKHN0LnN0X21vZGUpKXsKKyAgICAgICAgICAg
IGVycm9yID0gRU5PVERJUjsKKyAgICAgICAgICAgIGdvdG8gb3V0X2Vycm5vOworICAgICAgICB9
CisgICAgfQorCisgICAgZXJyb3IgPSBmZ2V0KGRpcmZkLCAmZnApOworICAgIGlmIChlcnJvcikK
KyAgICAgICAgZ290byBvdXRfZXJybm87CisKKyAgICAvKiBidWlsZCBhYnNvbHV0ZSBwYXRoICov
CisgICAgYWJzb2x1dGVfcGF0aCA9IChjaGFyKiltYWxsb2MoUEFUSF9NQVgpOworICAgIHN0cmxj
cHkoYWJzb2x1dGVfcGF0aCwgZnAtPmZfZGVudHJ5LT5kX21vdW50LT5tX3BhdGgsIFBBVEhfTUFY
KTsKKyAgICBzdHJsY2F0KGFic29sdXRlX3BhdGgsIGZwLT5mX2RlbnRyeS0+ZF9wYXRoLCBQQVRI
X01BWCk7CisKKyAgICBpZiAocGF0aG5hbWUpIHsKKyAgICAgICAgc3RybGNhdChhYnNvbHV0ZV9w
YXRoLCAiLyIsIFBBVEhfTUFYKTsKKyAgICAgICAgc3RybGNhdChhYnNvbHV0ZV9wYXRoLCBwYXRo
bmFtZSwgUEFUSF9NQVgpOworICAgIH0KKworICAgIGVycm9yID0gdXRpbWVzKGFic29sdXRlX3Bh
dGgsIHRpbWVzKTsKKyAgICBmcmVlKGFic29sdXRlX3BhdGgpOworCisgICAgZmRyb3AoZnApOwor
CisgICAgaWYgKGVycm9yKQorICAgICAgICBnb3RvIG91dF9lcnJubzsKKyAgICByZXR1cm4gMDsK
KworICAgIG91dF9lcnJubzoKKyAgICBlcnJubyA9IGVycm9yOworICAgIHJldHVybiAtMTsKK30K
KworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfdXRpbWVuc2F0LCAiXCIlc1wiIiwgY29uc3QgY2hhciop
OworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfdXRpbWVuc2F0X3JldCwgIiIpOworVFJBQ0VQT0lOVCh0
cmFjZV92ZnNfdXRpbWVuc2F0X2VyciwgIiVkIiwgaW50KTsKKworZXh0ZXJuICJDIgoraW50IHV0
aW1lbnNhdChpbnQgZGlyZmQsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBjb25zdCBzdHJ1Y3QgdGlt
ZXNwZWMgdGltZXNbMl0sIGludCBmbGFncykKK3sKKyAgICB0cmFjZV92ZnNfdXRpbWVuc2F0KHBh
dGhuYW1lKTsKKworICAgIGF1dG8gZXJyb3IgPSBzeXNfdXRpbWVuc2F0KGRpcmZkLCBwYXRobmFt
ZSwgdGltZXMsIGZsYWdzKTsKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgdHJhY2VfdmZzX3V0
aW1lbnNhdF9lcnIoZXJyb3IpOworICAgICAgICBlcnJubyA9IGVycm9yOworICAgICAgICByZXR1
cm4gLTE7CisgICAgfQorCisgICAgdHJhY2VfdmZzX3V0aW1lbnNhdF9yZXQoKTsKKyAgICByZXR1
cm4gMDsKK30KKworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZnV0aW1lbnMsICIlZCIsIGludCk7CitU
UkFDRVBPSU5UKHRyYWNlX3Zmc19mdXRpbWVuc19yZXQsICIiKTsKK1RSQUNFUE9JTlQodHJhY2Vf
dmZzX2Z1dGltZW5zX2VyciwgIiVkIiwgaW50KTsKKworZXh0ZXJuICJDIgoraW50IGZ1dGltZW5z
KGludCBmZCwgY29uc3Qgc3RydWN0IHRpbWVzcGVjIHRpbWVzWzJdKQoreworICAgIHRyYWNlX3Zm
c19mdXRpbWVucyhmZCk7CisKKyAgICBhdXRvIGVycm9yID0gc3lzX2Z1dGltZW5zKGZkLCB0aW1l
cyk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIHRyYWNlX3Zmc19mdXRpbWVuc19lcnIoZXJy
b3IpOworICAgICAgICBlcnJubyA9IGVycm9yOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQor
CisgICAgdHJhY2VfdmZzX2Z1dGltZW5zX3JldCgpOworICAgIHJldHVybiAwOworfQorCitzdGF0
aWMgaW50IGRvX3V0aW1lcyhjb25zdCBjaGFyICpwYXRobmFtZSwgY29uc3Qgc3RydWN0IHRpbWV2
YWwgdGltZXNbMl0sIGludCBmbGFncykKK3sKKyAgICBzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFz
azsKKyAgICBjaGFyIHBhdGhbUEFUSF9NQVhdOworICAgIGludCBlcnJvcjsKKworICAgIHRyYWNl
X3Zmc191dGltZXMocGF0aG5hbWUpOworCisgICAgZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5h
bWUsIDAsIHBhdGgpOworICAgIGlmIChlcnJvcikgeworICAgICAgICB0cmFjZV92ZnNfdXRpbWVz
X2VycihlcnJvcik7CisgICAgICAgIHJldHVybiBsaWJjX2Vycm9yKGVycm9yKTsKKyAgICB9CisK
KyAgICBlcnJvciA9IHN5c191dGltZXMocGF0aCwgdGltZXMsIGZsYWdzKTsKKyAgICBpZiAoZXJy
b3IpIHsKKyAgICAgICAgdHJhY2VfdmZzX3V0aW1lc19lcnIoZXJyb3IpOworICAgICAgICByZXR1
cm4gbGliY19lcnJvcihlcnJvcik7CisgICAgfQorCisgICAgdHJhY2VfdmZzX3V0aW1lc19yZXQo
KTsKKyAgICByZXR1cm4gMDsKK30KKworZXh0ZXJuICJDIgoraW50IHV0aW1lcyhjb25zdCBjaGFy
ICpwYXRobmFtZSwgY29uc3Qgc3RydWN0IHRpbWV2YWwgdGltZXNbMl0pCit7CisgICAgcmV0dXJu
IGRvX3V0aW1lcyhwYXRobmFtZSwgdGltZXMsIDApOworfQorCitleHRlcm4gIkMiCitpbnQgbHV0
aW1lcyhjb25zdCBjaGFyICpwYXRobmFtZSwgY29uc3Qgc3RydWN0IHRpbWV2YWwgdGltZXNbMl0p
Cit7CisgICAgcmV0dXJuIGRvX3V0aW1lcyhwYXRobmFtZSwgdGltZXMsIEFUX1NZTUxJTktfTk9G
T0xMT1cpOworfQorCitleHRlcm4gIkMiCitpbnQgdXRpbWUoY29uc3QgY2hhciAqcGF0aG5hbWUs
IGNvbnN0IHN0cnVjdCB1dGltYnVmICp0KQoreworICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ6OmNo
cm9ubzsKKworICAgIHN0cnVjdCB0aW1ldmFsIHRpbWVzWzJdOworICAgIHRpbWVzWzBdLnR2X3Vz
ZWMgPSAwOworICAgIHRpbWVzWzFdLnR2X3VzZWMgPSAwOworICAgIGlmICghdCkgeworICAgICAg
ICBsb25nIGludCB0c2VjID0gZHVyYXRpb25fY2FzdDxzZWNvbmRzPihvc3Y6OmNsb2NrOjp3YWxs
Ojpub3coKS50aW1lX3NpbmNlX2Vwb2NoKCkpLmNvdW50KCk7CisgICAgICAgIHRpbWVzWzBdLnR2
X3NlYyA9IHRzZWM7CisgICAgICAgIHRpbWVzWzFdLnR2X3NlYyA9IHRzZWM7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgdGltZXNbMF0udHZfc2VjID0gdC0+YWN0aW1lOworICAgICAgICB0aW1lc1sx
XS50dl9zZWMgPSB0LT5tb2R0aW1lOworICAgIH0KKworICAgIHJldHVybiB1dGltZXMocGF0aG5h
bWUsIHRpbWVzKTsKK30KKworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfY2htb2QsICJcIiVzXCIgMCUw
byIsIGNvbnN0IGNoYXIqLCBtb2RlX3QpOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfY2htb2RfcmV0
LCAiIik7CitUUkFDRVBPSU5UKHRyYWNlX3Zmc19jaG1vZF9lcnIsICIlZCIsIGludCk7CisKK2lu
dCBjaG1vZChjb25zdCBjaGFyICpwYXRobmFtZSwgbW9kZV90IG1vZGUpCit7CisgICAgdHJhY2Vf
dmZzX2NobW9kKHBhdGhuYW1lLCBtb2RlKTsKKyAgICBzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFz
azsKKyAgICBjaGFyIHBhdGhbUEFUSF9NQVhdOworICAgIGludCBlcnJvciA9IEVOT0VOVDsKKyAg
ICBpZiAocGF0aG5hbWUgPT0gbnVsbHB0cikKKyAgICAgICAgZ290byBvdXRfZXJybm87CisgICAg
aWYgKChlcnJvciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwgVldSSVRFLCBwYXRoKSkgIT0gMCkK
KyAgICAgICAgZ290byBvdXRfZXJybm87CisgICAgZXJyb3IgPSBzeXNfY2htb2QocGF0aCwgbW9k
ZSAmIEFMTFBFUk1TKTsKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIGdvdG8gb3V0X2Vycm5vOwor
ICAgIHRyYWNlX3Zmc19jaG1vZF9yZXQoKTsKKyAgICByZXR1cm4gMDsKK291dF9lcnJubzoKKyAg
ICB0cmFjZV92ZnNfY2htb2RfZXJyKGVycm9yKTsKKyAgICBlcnJubyA9IGVycm9yOworICAgIHJl
dHVybiAtMTsKK30KKworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZmNobW9kLCAiXCIlZFwiIDAlMG8i
LCBpbnQsIG1vZGVfdCk7CitUUkFDRVBPSU5UKHRyYWNlX3Zmc19mY2htb2RfcmV0LCAiIik7CisK
K2ludCBmY2htb2QoaW50IGZkLCBtb2RlX3QgbW9kZSkKK3sKKyAgICB0cmFjZV92ZnNfZmNobW9k
KGZkLCBtb2RlKTsKKyAgICBhdXRvIGVycm9yID0gc3lzX2ZjaG1vZChmZCwgbW9kZSAmIEFMTFBF
Uk1TKTsKKyAgICB0cmFjZV92ZnNfZmNobW9kX3JldCgpOworICAgIGlmIChlcnJvcikgeworICAg
ICAgICBlcnJubyA9IGVycm9yOworICAgICAgICByZXR1cm4gLTE7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCitUUkFDRVBPSU5UKHRyYWNlX3Zmc19mY2hvd24s
ICJcIiVkXCIgJWQgJWQiLCBpbnQsIHVpZF90LCBnaWRfdCk7CitUUkFDRVBPSU5UKHRyYWNlX3Zm
c19mY2hvd25fcmV0LCAiIik7CisKK2ludCBmY2hvd24oaW50IGZkLCB1aWRfdCBvd25lciwgZ2lk
X3QgZ3JvdXApCit7CisgICAgdHJhY2VfdmZzX2ZjaG93bihmZCwgb3duZXIsIGdyb3VwKTsKKyAg
ICBXQVJOX1NUVUJCRUQoKTsKKyAgICB0cmFjZV92ZnNfZmNob3duX3JldCgpOworICAgIHJldHVy
biAwOworfQorCitpbnQgY2hvd24oY29uc3QgY2hhciAqcGF0aCwgdWlkX3Qgb3duZXIsIGdpZF90
IGdyb3VwKQoreworICAgIFdBUk5fU1RVQkJFRCgpOworICAgIHJldHVybiAwOworfQorCitpbnQg
bGNob3duKGNvbnN0IGNoYXIgKnBhdGgsIHVpZF90IG93bmVyLCBnaWRfdCBncm91cCkKK3sKKyAg
ICBXQVJOX1NUVUJCRUQoKTsKKyAgICByZXR1cm4gMDsKK30KKworCitzc2l6ZV90IHNlbmRmaWxl
KGludCBvdXRfZmQsIGludCBpbl9mZCwgb2ZmX3QgKl9vZmZzZXQsIHNpemVfdCBjb3VudCkKK3sK
KyAgICBzdHJ1Y3QgZmlsZSAqaW5fZnA7CisgICAgc3RydWN0IGZpbGUgKm91dF9mcDsKKyAgICBm
aWxlcmVmIGluX2Z7ZmlsZXJlZl9mcm9tX2ZkKGluX2ZkKX07CisgICAgZmlsZXJlZiBvdXRfZntm
aWxlcmVmX2Zyb21fZmQob3V0X2ZkKX07CisKKyAgICBpZiAoIWluX2YgfHwgIW91dF9mKSB7Cisg
ICAgICAgIHJldHVybiBsaWJjX2Vycm9yKEVCQURGKTsKKyAgICB9CisKKyAgICBpbl9mcCA9IGlu
X2YuZ2V0KCk7CisgICAgb3V0X2ZwID0gb3V0X2YuZ2V0KCk7CisKKyAgICBpZiAoIWluX2ZwLT5m
X2RlbnRyeSkgeworICAgICAgICByZXR1cm4gbGliY19lcnJvcihFQkFERik7CisgICAgfQorCisg
ICAgaWYgKCEoaW5fZnAtPmZfZmxhZ3MgJiBGUkVBRCkpIHsKKyAgICAgICAgcmV0dXJuIGxpYmNf
ZXJyb3IoRUJBREYpOworICAgIH0KKworICAgIGlmIChvdXRfZnAtPmZfdHlwZSAmIERUWVBFX1ZO
T0RFKSB7CisgICAgICAgIGlmICghb3V0X2ZwLT5mX2RlbnRyeSkgeworICAgICAgICAgICAgcmV0
dXJuIGxpYmNfZXJyb3IoRUJBREYpOworCX0gZWxzZSBpZiAoIShvdXRfZnAtPmZfZmxhZ3MgJiBG
V1JJVEUpKSB7CisgICAgICAgICAgICByZXR1cm4gbGliY19lcnJvcihFQkFERik7CisJfQorICAg
IH0KKworICAgIG9mZl90IG9mZnNldCA7CisKKyAgICBpZiAoX29mZnNldCAhPSBudWxscHRyKSB7
CisgICAgICAgIG9mZnNldCA9ICpfb2Zmc2V0OworICAgIH0gZWxzZSB7CisgICAgICAgIC8qIGlm
IF9vZmZzZXQgaXMgbnVsbHB0ciwgd2UgbmVlZCB0byByZWFkIGZyb20gdGhlIHByZXNlbnQgcG9z
aXRpb24gb2YgaW5fZmQgKi8KKyAgICAgICAgb2Zmc2V0ID0gbHNlZWsoaW5fZmQsIDAsIFNFRUtf
Q1VSKTsKKyAgICB9CisKKyAgICAvLyBDb25zdHJhaW4gY291bnQgdG8gdGhlIGV4dGVudCBvZiB0
aGUgZmlsZS4uLgorICAgIHN0cnVjdCBzdGF0IHN0OworICAgIGlmIChmc3RhdChpbl9mZCwgJnN0
KSA8IDApIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChv
ZmZzZXQgPj0gc3Quc3Rfc2l6ZSkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0g
ZWxzZSBpZiAoKG9mZnNldCArIGNvdW50KSA+PSBzdC5zdF9zaXplKSB7CisgICAgICAgICAgICBj
b3VudCA9IHN0LnN0X3NpemUgLSBvZmZzZXQ7CisgICAgICAgICAgICBpZiAoY291bnQgPT0gMCkg
eworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorCisgICAgc2l6ZV90IGJ5dGVzX3RvX21tYXAgPSBjb3VudCArIChvZmZzZXQgJSBtbXU6
OnBhZ2Vfc2l6ZSk7CisgICAgb2ZmX3Qgb2Zmc2V0X2Zvcl9tbWFwID0gIGFsaWduX2Rvd24ob2Zm
c2V0LCAob2ZmX3QpbW11OjpwYWdlX3NpemUpOworCisgICAgY2hhciAqc3JjID0gc3RhdGljX2Nh
c3Q8Y2hhciAqPihtbWFwKG51bGxwdHIsIGJ5dGVzX3RvX21tYXAsIFBST1RfUkVBRCwgTUFQX1NI
QVJFRCwgaW5fZmQsIG9mZnNldF9mb3JfbW1hcCkpOworCisgICAgaWYgKHNyYyA9PSBNQVBfRkFJ
TEVEKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBhdXRvIHJldCA9IHdyaXRl
KG91dF9mZCwgc3JjICsgKG9mZnNldCAlIFBBR0VTSVpFKSwgY291bnQpOworCisgICAgaWYgKHJl
dCA8IDApIHsKKyAgICAgICAgcmV0dXJuIGxpYmNfZXJyb3IoZXJybm8pOworICAgIH0gZWxzZSBp
Zihfb2Zmc2V0ID09IG51bGxwdHIpIHsKKyAgICAgICAgbHNlZWsoaW5fZmQsIHJldCwgU0VFS19D
VVIpOworICAgIH0gZWxzZSB7CisgICAgICAgICpfb2Zmc2V0ICs9IHJldDsKKyAgICB9CisKKyAg
ICBhc3NlcnQobXVubWFwKHNyYywgY291bnQpID09IDApOworCisgICAgcmV0dXJuIHJldDsKK30K
KworI3VuZGVmIHNlbmRmaWxlNjQKK0xGUzY0KHNlbmRmaWxlKTsKKworTk9fU1lTKGludCBmY2ht
b2RhdChpbnQgZGlyZmQsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBtb2RlX3QgbW9kZSwgaW50IGZs
YWdzKSk7CisKK21vZGVfdCB1bWFzayhtb2RlX3QgbmV3bWFzaykKK3sKKyAgICByZXR1cm4gZ2xv
YmFsX3VtYXNrLmV4Y2hhbmdlKG5ld21hc2ssIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOwor
fQorCitpbnQKK2ZzX25vb3Aodm9pZCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworaW50IGNocm9v
dChjb25zdCBjaGFyICpwYXRoKQoreworICAgIFdBUk5fU1RVQkJFRCgpOworICAgIGVycm5vID0g
RU5PU1lTOworICAgIHJldHVybiAtMTsKK30KKworLy8gdW5wYWNrX2Jvb3RmcygpIHVucGFja3Mg
YSBjb2xsZWN0aW9uIG9mIGZpbGVzIHN0b3JlZCBhcyBwYXJ0IG9mIHRoZSBPU3YKKy8vIGV4ZWN1
dGFibGUgKGluIG1lbW9yeSBsb2NhdGlvbiAiYm9vdGZzX3N0YXJ0IikgaW50byB0aGUgZmlsZSBz
eXN0ZW0sCisvLyBub3JtYWxseSB0aGUgaW4tbWVtb3J5IGZpbGVzeXN0ZW0gcmFtZnMuCisvLyBU
aGUgZmlsZXMgYXJlIHBhY2tlZCBpbiB0aGUgZXhlY3V0YWJsZSBpbiBhbiBhZC1ob2MgZm9ybWF0
IGRlZmluZWQgaGVyZS4KKy8vIENvZGUgaW4gc2NyaXB0cy9ta2Jvb3Rmcy5weSBwYWNrcyBmaWxl
cyBpbnRvIHRoaXMgZm9ybWF0LgorI2RlZmluZSBCT09URlNfUEFUSF9NQVggMTExCitlbnVtIGNs
YXNzIGJvb3Rmc19maWxlX3R5cGUgOiBjaGFyIHsgb3RoZXIgPSAwLCBzeW1saW5rID0gMSB9Owor
c3RydWN0IGJvb3Rmc19tZXRhZGF0YSB7CisgICAgdWludDY0X3Qgc2l6ZTsKKyAgICB1aW50NjRf
dCBvZmZzZXQ7CisgICAgLy8gVGhlIGZpbGUncyB0eXBlLiBDYW4gYmUgInN5bWxpbmsiIG9yICJv
dGhlciIuIEEgZGlyZWN0b3J5IGlzIGFuICJvdGhlciIKKyAgICAvLyBmaWxlIHdpdGggaXRzIG5h
bWUgZW5kaW5nIHdpdGggYSAiLyIgKGFuZCBubyBjb250ZW50KS4KKyAgICBib290ZnNfZmlsZV90
eXBlIHR5cGU7CisgICAgLy8gbmFtZSBtdXN0IGVuZCB3aXRoIGEgbnVsbC4gRm9yIHN5bWxpbmsg
ZmlsZXMsIHRoZSBjb250ZW50IG11c3QgZW5kCisgICAgLy8gd2l0aCBhIG51bGwgYXMgd2VsbC4K
KyAgICBjaGFyIG5hbWVbQk9PVEZTX1BBVEhfTUFYXTsKK307CisKK2V4dGVybiBjaGFyIGJvb3Rm
c19zdGFydDsKKworaW50IHJhbWZzX3NldF9maWxlX2RhdGEoc3RydWN0IHZub2RlICp2cCwgY29u
c3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUpOwordm9pZCB1bnBhY2tfYm9vdGZzKHZvaWQpCit7
CisgICAgc3RydWN0IGJvb3Rmc19tZXRhZGF0YSAqbWQgPSAoc3RydWN0IGJvb3Rmc19tZXRhZGF0
YSAqKSZib290ZnNfc3RhcnQ7CisgICAgaW50IGZkLCBpOworCisgICAgZm9yIChpID0gMDsgbWRb
aV0ubmFtZVswXTsgaSsrKSB7CisgICAgICAgIGludCByZXQ7CisgICAgICAgIGNoYXIgKnA7CisK
KyAgICAgICAgLy8gbWtkaXIoKSBkaXJlY3RvcmllcyBuZWVkZWQgZm9yIHRoaXMgcGF0aCBuYW1l
LCBhcyBuZWNlc3NhcnkKKyAgICAgICAgY2hhciB0bXBbQk9PVEZTX1BBVEhfTUFYXTsKKyAgICAg
ICAgc3RybGNweSh0bXAsIG1kW2ldLm5hbWUsIEJPT1RGU19QQVRIX01BWCk7CisgICAgICAgIGZv
ciAocCA9IHRtcDsgKnA7ICsrcCkgeworICAgICAgICAgICAgaWYgKCpwID09ICcvJykgeworICAg
ICAgICAgICAgICAgICpwID0gJ1wwJzsKKyAgICAgICAgICAgICAgICBta2Rpcih0bXAsIDA2NjYp
OyAgLy8gc2lsZW50bHkgaWdub3JlIGVycm9ycyBhbmQgZXhpc3RpbmcgZGlycworICAgICAgICAg
ICAgICAgICpwID0gJy8nOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYg
KG1kW2ldLnR5cGUgPT0gYm9vdGZzX2ZpbGVfdHlwZTo6c3ltbGluaykgeworICAgICAgICAgICAg
Ly8gVGhpcyBpcyBhIHN5bWJvbGljIGxpbmsgcmVjb3JkLiBUaGUgZmlsZSdzIGNvbnRlbnQgaXMg
dGhlCisgICAgICAgICAgICAvLyB0YXJnZXQgcGF0aCwgYW5kIHdlIGFzc3VtZSBlbmRzIHdpdGgg
YSBudWxsLgorICAgICAgICAgICAgaWYgKHN5bWxpbmsoJmJvb3Rmc19zdGFydCArIG1kW2ldLm9m
ZnNldCwgbWRbaV0ubmFtZSkgIT0gMCkgeworICAgICAgICAgICAgICAgIGtwcmludGYoImNvdWxk
bid0IHN5bWxpbmsgJXM6ICVkXG4iLCBtZFtpXS5uYW1lLCBlcnJubyk7CisgICAgICAgICAgICAg
ICAgc3lzX3BhbmljKCJ1bnBhY2tfYm9vdGZzIGZhaWxlZCIpOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCoocC0xKSA9PSAnLycg
JiYgbWRbaV0uc2l6ZSA9PSAwKSB7CisgICAgICAgICAgICAvLyBUaGlzIGlzIGRpcmVjdG9yeSBy
ZWNvcmQuIE5vdGhpbmcgZWxzZSB0byBkbworICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IH0KKworICAgICAgICBmZCA9IGNyZWF0KG1kW2ldLm5hbWUsIDA2NjYpOworICAgICAgICBpZiAo
ZmQgPCAwKSB7CisgICAgICAgICAgICBrcHJpbnRmKCJjb3VsZG4ndCBjcmVhdGUgJXM6ICVkXG4i
LAorICAgICAgICAgICAgICAgICAgICBtZFtpXS5uYW1lLCBlcnJubyk7CisgICAgICAgICAgICBz
eXNfcGFuaWMoInVucGFja19ib290ZnMgZmFpbGVkIik7CisgICAgICAgIH0KKworICAgICAgICBz
dHJ1Y3QgZmlsZSAqZnA7CisgICAgICAgIGludCBlcnJvciA9IGZnZXQoZmQsICZmcCk7CisgICAg
ICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAga3ByaW50ZigiY291bGRuJ3QgZmdldCAlczog
JWRcbiIsCisgICAgICAgICAgICAgICAgICAgIG1kW2ldLm5hbWUsIGVycm9yKTsKKyAgICAgICAg
ICAgIHN5c19wYW5pYygidW5wYWNrX2Jvb3RmcyBmYWlsZWQiKTsKKyAgICAgICAgfQorCisgICAg
ICAgIHN0cnVjdCB2bm9kZSAqdnAgPSBmcC0+Zl9kZW50cnktPmRfdm5vZGU7CisgICAgICAgIHJl
dCA9IHJhbWZzX3NldF9maWxlX2RhdGEodnAsICZib290ZnNfc3RhcnQgKyBtZFtpXS5vZmZzZXQs
IG1kW2ldLnNpemUpOworICAgICAgICBpZiAocmV0KSB7CisgICAgICAgICAgICBrcHJpbnRmKCJy
YW1mc19zZXRfZmlsZV9kYXRhIGZhaWxlZCwgcmV0ID0gJWRcbiIsIHJldCk7CisgICAgICAgICAg
ICBzeXNfcGFuaWMoInVucGFja19ib290ZnMgZmFpbGVkIik7CisgICAgICAgIH0KKworICAgICAg
ICBmZHJvcChmcCk7CisgICAgICAgIGNsb3NlKGZkKTsKKyAgICB9Cit9CisKK3ZvaWQgbW91bnRf
cm9vdGZzKHZvaWQpCit7CisgICAgaW50IHJldDsKKworICAgIHJldCA9IHN5c19tb3VudCgiIiwg
Ii8iLCAicmFtZnMiLCAwLCBudWxscHRyKTsKKyAgICBpZiAocmV0KQorICAgICAgICBrcHJpbnRm
KCJmYWlsZWQgdG8gbW91bnQgcm9vdGZzLCBlcnJvciA9ICVzXG4iLCBzdHJlcnJvcihyZXQpKTsK
KworICAgIGlmIChta2RpcigiL2RldiIsIDA3NTUpIDwgMCkKKyAgICAgICAga3ByaW50ZigiZmFp
bGVkIHRvIGNyZWF0ZSAvZGV2LCBlcnJvciA9ICVzXG4iLCBzdHJlcnJvcihlcnJubykpOworCisg
ICAgcmV0ID0gc3lzX21vdW50KCIiLCAiL2RldiIsICJkZXZmcyIsIDAsIG51bGxwdHIpOworICAg
IGlmIChyZXQpCisgICAgICAgIGtwcmludGYoImZhaWxlZCB0byBtb3VudCBkZXZmcywgZXJyb3Ig
PSAlc1xuIiwgc3RyZXJyb3IocmV0KSk7Cit9CisKK2V4dGVybiAiQyIKK2ludCBubW91bnQoc3Ry
dWN0IGlvdmVjICppb3YsIHVuc2lnbmVkIG5pb3YsIGludCBmbGFncykKK3sKKyAgICBzdHJ1Y3Qg
YXJncyB7CisgICAgICAgIGNoYXIqIGZzdHlwZSA9IG51bGxwdHI7CisgICAgICAgIGNoYXIqIGZz
cGF0aCA9IG51bGxwdHI7CisgICAgICAgIGNoYXIqIGZyb20gPSBudWxscHRyOworICAgIH07Cisg
ICAgc3RhdGljIHVub3JkZXJlZF9tYXA8c3RyaW5nLCBjaGFyKiBhcmdzOjoqPiBhcmdtYXAgewor
ICAgICAgICB7ICJmc3R5cGUiLCAmYXJnczo6ZnN0eXBlIH0sCisgICAgICAgIHsgImZzcGF0aCIs
ICZhcmdzOjpmc3BhdGggfSwKKyAgICAgICAgeyAiZnJvbSIsICZhcmdzOjpmcm9tIH0sCisgICAg
fTsKKyAgICBhcmdzIGE7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuaW92OyBpICs9IDIp
IHsKKyAgICAgICAgc3RkOjpzdHJpbmcgcyhzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oaW92W2ld
Lmlvdl9iYXNlKSk7CisgICAgICAgIGlmIChhcmdtYXAuY291bnQocykpIHsKKyAgICAgICAgICAg
IGEuKihhcmdtYXBbc10pID0gc3RhdGljX2Nhc3Q8Y2hhcio+KGlvdltpKzFdLmlvdl9iYXNlKTsK
KyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gc3lzX21vdW50KGEuZnJvbSwgYS5mc3BhdGgs
IGEuZnN0eXBlLCBmbGFncywgbnVsbHB0cik7Cit9CisKK3N0YXRpYyB2b2lkIGltcG9ydF9leHRy
YV96ZnNfcG9vbHModm9pZCkKK3sKKyAgICBzdHJ1Y3Qgc3RhdCBzdDsKKyAgICBpbnQgcmV0Owor
CisgICAgLy8gVGhlIGZpbGUgJy9ldGMvbW50dGFiJyBpcyBhIExpYlpGUyByZXF1aXJlbWVudCBh
bmQgd2lsbCBub3QKKyAgICAvLyBleGlzdCBkdXJpbmcgY3Bpb2QgcGhhc2UuIFRoZSBmdW5jdGlv
bmFsaXR5IHByb3ZpZGVkIGJ5IHRoaXMKKyAgICAvLyBmdW5jdGlvbiBpc24ndCBuZWVkZWQgZHVy
aW5nIHRoYXQgcGhhc2UsIHNvIGxldCdzIHNraXAgaXQuCisgICAgaWYgKHN0YXQoIi9ldGMvbW50
dGFiIiAsICZzdCkgIT0gMCkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gSW1w
b3J0IGV4dHJhIHBvb2xzIG1vdW50aW5nIGRhdGFzZXRzIHRoZXJlIGNvbnRhaW5lZC4KKyAgICAv
LyBEYXRhc2V0cyBmcm9tIG9zdiBwb29sIHdpbGwgbm90IGJlIG1vdW50ZWQgaGVyZS4KKyAgICBp
ZiAoYWNjZXNzKCJ6cG9vbC5zbyIsIFhfT0spICE9IDApIHsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICB2ZWN0b3I8c3RyaW5nPiB6cG9vbF9hcmdzID0geyJ6cG9vbCIsICJpbXBvcnQiLCAi
LWYiLCAiLWEiIH07CisgICAgYXV0byBvayA9IG9zdjo6cnVuKCJ6cG9vbC5zbyIsIHpwb29sX2Fy
Z3MsICZyZXQpOworICAgIGFzc2VydChvayk7CisKKyAgICBpZiAoIXJldCkgeworICAgICAgICBk
ZWJ1ZygiemZzOiBleHRyYSBaRlMgcG9vbChzKSBmb3VuZC5cbiIpOworICAgIH0KK30KKwordm9p
ZCBwaXZvdF9yb290ZnMoY29uc3QgY2hhciogcGF0aCkKK3sKKyAgICBpbnQgcmV0ID0gc3lzX3Bp
dm90X3Jvb3QocGF0aCwgIi8iKTsKKyAgICBpZiAocmV0KQorICAgICAgICBrcHJpbnRmKCJmYWls
ZWQgdG8gcGl2b3Qgcm9vdCwgZXJyb3IgPSAlc1xuIiwgc3RyZXJyb3IocmV0KSk7CisKKyAgICBh
dXRvIGVudCA9IHNldG1udGVudCgiL2V0Yy9mc3RhYiIsICJyIik7CisgICAgaWYgKCFlbnQpIHsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN0cnVjdCBtbnRlbnQgKm0gPSBudWxscHRy
OworICAgIHdoaWxlICgobSA9IGdldG1udGVudChlbnQpKSAhPSBudWxscHRyKSB7CisgICAgICAg
IGlmICghc3RyY21wKG0tPm1udF9kaXIsICIvIikpIHsKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKChtLT5tbnRfb3B0cyAhPSBudWxscHRyKSAmJiBzdHJj
bXAobS0+bW50X29wdHMsIE1OVE9QVF9ERUZBVUxUUykpIHsKKyAgICAgICAgICAgIHByaW50Zigi
V2FybmluZzogb3B0cyAlcywgaWdub3JlZCBmb3IgZnMgJXNcbiIsIG0tPm1udF9vcHRzLCBtLT5t
bnRfdHlwZSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBGSVhNRTogUmlnaHQgbm93LCBpZ25v
cmluZyBtbnRvcHMuIEluIHRoZSBmdXR1cmUgd2UgbWF5IGhhdmUgYW4gb3B0aW9uIHBhcnNlcgor
ICAgICAgICByZXQgPSBzeXNfbW91bnQobS0+bW50X2ZzbmFtZSwgbS0+bW50X2RpciwgbS0+bW50
X3R5cGUsIDAsIG51bGxwdHIpOworICAgICAgICBpZiAocmV0KSB7CisgICAgICAgICAgICBwcmlu
dGYoImZhaWxlZCB0byBtb3VudCAlcywgZXJyb3IgPSAlc1xuIiwgbS0+bW50X3R5cGUsIHN0cmVy
cm9yKHJldCkpOworICAgICAgICB9CisgICAgfQorICAgIGVuZG1udGVudChlbnQpOworfQorCitl
eHRlcm4gIkMiIHZvaWQgdW5tb3VudF9kZXZmcygpCit7CisgICAgaW50IHJldCA9IHN5c191bW91
bnQoIi9kZXYiKTsKKyAgICBpZiAocmV0KQorICAgICAgICBrcHJpbnRmKCJmYWlsZWQgdG8gdW5t
b3VudCAvZGV2LCBlcnJvciA9ICVzXG4iLCBzdHJlcnJvcihyZXQpKTsKK30KKworZXh0ZXJuICJD
IiBpbnQgbW91bnRfcm9mc19yb290ZnMoYm9vbCBwaXZvdF9yb290KQoreworICAgIGludCByZXQ7
CisKKyAgICBpZiAobWtkaXIoIi9yb2ZzIiwgMDc1NSkgPCAwKQorICAgICAgICBrcHJpbnRmKCJm
YWlsZWQgdG8gY3JlYXRlIC9yb2ZzLCBlcnJvciA9ICVzXG4iLCBzdHJlcnJvcihlcnJubykpOwor
CisgICAgcmV0ID0gc3lzX21vdW50KCIvZGV2L3ZibGswLjEiLCAiL3JvZnMiLCAicm9mcyIsIE1O
VF9SRE9OTFksIDApOworCisgICAgaWYgKHJldCkgeworICAgICAgICBrcHJpbnRmKCJmYWlsZWQg
dG8gbW91bnQgL3JvZnMsIGVycm9yID0gJXNcbiIsIHN0cmVycm9yKHJldCkpOworICAgICAgICBy
bWRpcigiL3JvZnMiKTsKKyAgICAgICAgcmV0dXJuIHJldDsKKyAgICB9CisKKyAgICBpZiAocGl2
b3Rfcm9vdCkgeworICAgICAgICBwaXZvdF9yb290ZnMoIi9yb2ZzIik7CisgICAgfQorCisgICAg
cmV0dXJuIDA7Cit9CisKK2V4dGVybiAiQyIgdm9pZCBtb3VudF96ZnNfcm9vdGZzKGJvb2wgcGl2
b3Rfcm9vdCkKK3sKKyAgICBpZiAobWtkaXIoIi96ZnMiLCAwNzU1KSA8IDApCisgICAgICAgIGtw
cmludGYoImZhaWxlZCB0byBjcmVhdGUgL3pmcywgZXJyb3IgPSAlc1xuIiwgc3RyZXJyb3IoZXJy
bm8pKTsKKworICAgIGludCByZXQgPSBzeXNfbW91bnQoIi9kZXYvdmJsazAuMSIsICIvemZzIiwg
InpmcyIsIDAsICh2b2lkICopIm9zdi96ZnMiKTsKKworICAgIGlmIChyZXQpCisgICAgICAgIGtw
cmludGYoImZhaWxlZCB0byBtb3VudCAvemZzLCBlcnJvciA9ICVzXG4iLCBzdHJlcnJvcihyZXQp
KTsKKworICAgIGlmICghcGl2b3Rfcm9vdCkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgcGl2b3Rfcm9vdGZzKCIvemZzIik7CisKKyAgICBpbXBvcnRfZXh0cmFfemZzX3Bvb2xzKCk7
Cit9CisKK2V4dGVybiAiQyIgdm9pZCB1bm1vdW50X3Jvb3Rmcyh2b2lkKQoreworICAgIGludCBy
ZXQ7CisKKyAgICBzeXNfdW1vdW50KCIvZGV2Iik7CisKKyAgICByZXQgPSBzeXNfdW1vdW50KCIv
cHJvYyIpOworICAgIGlmIChyZXQpIHsKKyAgICAgICAga3ByaW50ZigiV2FybmluZzogdW5tb3Vu
dF9yb290ZnM6IGZhaWxlZCB0byB1bm1vdW50IC9wcm9jLCAiCisgICAgICAgICAgICAiZXJyb3Ig
PSAlc1xuIiwgc3RyZXJyb3IocmV0KSk7CisgICAgfQorCisgICAgcmV0ID0gc3lzX3Vtb3VudDIo
Ii8iLCBNTlRfRk9SQ0UpOworICAgIGlmIChyZXQpIHsKKyAgICAgICAga3ByaW50ZigiV2Fybmlu
ZzogdW5tb3VudF9yb290ZnM6IGZhaWxlZCB0byB1bm1vdW50IC8sICIKKyAgICAgICAgICAgICJl
cnJvciA9ICVzXG4iLCBzdHJlcnJvcihyZXQpKTsKKyAgICB9Cit9CisKK2V4dGVybiAiQyIgdm9p
ZCBiaW9faW5pdCh2b2lkKTsKK2V4dGVybiAiQyIgdm9pZCBiaW9fc3luYyh2b2lkKTsKKworaW50
IHZmc19pbml0aWFsaXplZDsKKworZXh0ZXJuICJDIgordm9pZAordmZzX2luaXQodm9pZCkKK3sK
KyAgICBjb25zdCBzdHJ1Y3QgdmZzc3cgKmZzOworCisgICAgYmlvX2luaXQoKTsKKyAgICBsb29r
dXBfaW5pdCgpOworICAgIHZub2RlX2luaXQoKTsKKyAgICB0YXNrX2FsbG9jKCZtYWluX3Rhc2sp
OworCisgICAgLyoKKyAgICAgKiBJbml0aWFsaXplIGVhY2ggZmlsZSBzeXN0ZW0uCisgICAgICov
CisgICAgZm9yIChmcyA9IHZmc3N3OyBmcy0+dnNfbmFtZTsgZnMrKykgeworICAgICAgICBpZiAo
ZnMtPnZzX2luaXQpIHsKKyAgICAgICAgICAgIERQUklOVEYoVkZTREJfQ09SRSwgKCJWRlM6IGlu
aXRpYWxpemluZyAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgZnMtPnZzX25hbWUpKTsKKyAg
ICAgICAgICAgIGZzLT52c19pbml0KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtb3VudF9y
b290ZnMoKTsKKyAgICB1bnBhY2tfYm9vdGZzKCk7CisKKyAgICAvLwlpZiAob3BlbigiL2Rldi9j
b25zb2xlIiwgT19SRFdSLCAwKSAhPSAwKQorICAgIGlmIChjb25zb2xlOjpvcGVuKCkgIT0gMCkK
KyAgICAgICAga3ByaW50ZigiZmFpbGVkIHRvIG9wZW4gY29uc29sZSwgZXJyb3IgPSAlZFxuIiwg
ZXJybm8pOworICAgIGlmIChkdXAoMCkgIT0gMSkKKyAgICAgICAga3ByaW50ZigiZmFpbGVkIHRv
IGR1cCBjb25zb2xlICgxKVxuIik7CisgICAgaWYgKGR1cCgwKSAhPSAyKQorICAgICAgICBrcHJp
bnRmKCJmYWlsZWQgdG8gZHVwIGNvbnNvbGUgKDIpXG4iKTsKKyAgICB2ZnNfaW5pdGlhbGl6ZWQg
PSAxOworfQorCit2b2lkIHZmc19leGl0KHZvaWQpCit7CisgICAgLyogRnJlZSB1cCBtYWluX3Rh
c2sgKHN0b3JlcyBjd2QgZGF0YSkgcmVzb3VyY2VzICovCisgICAgcmVwbGFjZV9jd2QobWFpbl90
YXNrLCBudWxscHRyLCBbXSgpIHsgcmV0dXJuIDA7IH0pOworICAgIC8qIFVubW91bnQgYWxsIGZp
bGUgc3lzdGVtcyAqLworICAgIHVubW91bnRfcm9vdGZzKCk7CisgICAgLyogRmluaXNoIHdpdGgg
dGhlIGJpbyBsYXllciAqLworICAgIGJpb19zeW5jKCk7Cit9CisKK3ZvaWQgc3lzX3BhbmljKGNv
bnN0IGNoYXIgKnN0cikKK3sKKyAgICBhYm9ydCgicGFuaWM6ICVzIiwgc3RyKTsKK30KKwpkaWZm
IC0tZ2l0IGEvbGliL3Zmc2NvcmUvbW91bnQuYyBiL2xpYi92ZnNjb3JlL21vdW50LmMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLmRhYzRkMDljCi0tLSAvZGV2L251bGwKKysr
IGIvbGliL3Zmc2NvcmUvbW91bnQuYwpAQCAtMCwwICsxLDQ5MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoYykgMjAwNS0yMDA3LCBLb2hzdWtlIE9odGFuaQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGF1dGhvciBub3IgdGhlIG5h
bWVzIG9mIGFueSBjby1jb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQorICogICAgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworLyoKKyAqIHZmc19tb3VudC5jIC0g
bW91bnQgb3BlcmF0aW9ucworICovCisKKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUg
PHN5cy9wYXJhbS5oPgorI2luY2x1ZGUgPGRpcmVudC5oPgorCisjaW5jbHVkZSA8bGltaXRzLmg+
CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3Ry
aW5nLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUg
PGZjbnRsLmg+CisKKyNpbmNsdWRlIDxvc3YvcHJleC5oPgorI2luY2x1ZGUgPG9zdi92bm9kZS5o
PgorI2luY2x1ZGUgPG9zdi9kZXZpY2UuaD4KKyNpbmNsdWRlIDxvc3YvZGVidWcuaD4KKyNpbmNs
dWRlIDxvc3YvbXV0ZXguaD4KKyNpbmNsdWRlICJ2ZnMuaCIKKworI2luY2x1ZGUgPG1lbW9yeT4K
KyNpbmNsdWRlIDxsaXN0PgorCisvKgorICogTGlzdCBmb3IgVkZTIG1vdW50IHBvaW50cy4KKyAq
Lworc3RhdGljIHN0ZDo6bGlzdDxtb3VudCo+IG1vdW50X2xpc3Q7CisKKy8qCisgKiBHbG9iYWwg
bG9jayB0byBhY2Nlc3MgbW91bnQgcG9pbnQuCisgKi8KK3N0YXRpYyBtdXRleCBtb3VudF9sb2Nr
OworCisvKgorICogTG9va3VwIGZpbGUgc3lzdGVtLgorICovCitzdGF0aWMgY29uc3Qgc3RydWN0
IHZmc3N3ICoKK2ZzX2dldGZzKGNvbnN0IGNoYXIgKm5hbWUpCit7CisgICAgY29uc3Qgc3RydWN0
IHZmc3N3ICpmczsKKworICAgIGZvciAoZnMgPSB2ZnNzdzsgZnMtPnZzX25hbWU7IGZzKyspIHsK
KyAgICAgICAgaWYgKCFzdHJuY21wKG5hbWUsIGZzLT52c19uYW1lLCBGU01BWE5BTUVTKSkKKyAg
ICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBpZiAoIWZzLT52c19uYW1lKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gZnM7Cit9CisKK2NvbnN0IGNoYXIqCitmc19nZXRm
c25hbWUodmZzb3BzKiBvcHMpCit7CisgICAgZm9yIChhdXRvIGZzID0gdmZzc3c7IGZzLT52c19u
YW1lOyBmcysrKSB7CisgICAgICAgIGlmIChmcy0+dnNfb3AgPT0gb3BzKSB7CisgICAgICAgICAg
ICByZXR1cm4gZnMtPnZzX25hbWU7CisgICAgICAgIH0KKyAgICB9CisgICAgYWJvcnQoKTsKK30K
KworaW50CitzeXNfbW91bnQoY29uc3QgY2hhciAqZGV2LCBjb25zdCBjaGFyICpkaXIsIGNvbnN0
IGNoYXIgKmZzbmFtZSwgaW50IGZsYWdzLCBjb25zdCB2b2lkICpkYXRhKQoreworICAgIGNvbnN0
IHN0cnVjdCB2ZnNzdyAqZnM7CisgICAgc3RydWN0IG1vdW50ICptcDsKKyAgICBzdHJ1Y3QgZGV2
aWNlICpkZXZpY2U7CisgICAgc3RydWN0IGRlbnRyeSAqZHBfY292ZXJlZDsKKyAgICBzdHJ1Y3Qg
dm5vZGUgKnZwOworICAgIGludCBlcnJvcjsKKworICAgIGtwcmludGYoIlZGUzogbW91bnRpbmcg
JXMgYXQgJXNcbiIsIGZzbmFtZSwgZGlyKTsKKworICAgIGlmICghZGlyIHx8ICpkaXIgPT0gJ1ww
JykKKyAgICAgICAgcmV0dXJuIEVOT0VOVDsKKworICAgIC8qIEZpbmQgYSBmaWxlIHN5c3RlbS4g
Ki8KKyAgICBpZiAoIShmcyA9IGZzX2dldGZzKGZzbmFtZSkpKQorICAgICAgICByZXR1cm4gRU5P
REVWOyAgLyogTm8gc3VjaCBmaWxlIHN5c3RlbSAqLworCisgICAgLyogT3BlbiBkZXZpY2UuIG51
bGxwdHIgY2FuIGJlIHNwZWNpZmllZCBhcyBhIGRldmljZS4gKi8KKyAgICAvLyBBbGxvdyBkZXZp
Y2Vfb3BlbigpIHRvIGZhaWwsIGluIHdoaWNoIGNhc2UgZGV2IGlzIGludGVycHJldGVkCisgICAg
Ly8gYnkgdGhlIGZpbGUgc3lzdGVtIG1vdW50IHJvdXRpbmUgKGUuZyB6ZnMgcG9vbHMpCisgICAg
ZGV2aWNlID0gMDsKKyAgICBpZiAoZGV2ICYmIHN0cm5jbXAoZGV2LCAiL2Rldi8iLCA1KSA9PSAw
KQorICAgICAgICBkZXZpY2Vfb3BlbihkZXYgKyA1LCBET19SRFdSLCAmZGV2aWNlKTsKKworICAg
IC8qIENoZWNrIGlmIGRldmljZSBvciBkaXJlY3RvcnkgaGFzIGFscmVhZHkgYmVlbiBtb3VudGVk
LiAqLworICAgIC8vIFdlIG5lZWQgdG8gYXZvaWQgdGhlIHNpdHVhdGlvbiB3aGVyZSBhZnRlciB3
ZSBhbHJlYWR5IHZlcmlmaWVkIHRoYXQKKyAgICAvLyB0aGUgbW91bnQgcG9pbnQgaXMgZnJlZSwg
YnV0IGJlZm9yZSB3ZSBhY3R1YWxseSBhZGQgaXQgdG8gbW91bnRfbGlzdCwKKyAgICAvLyBhbm90
aGVyIGNvbmN1cnJlbnQgbW91bnQgYWRkcyBpdC4gU28gd2UgdXNlIGEgbmV3IG11dGV4IHRvIGVu
c3VyZQorICAgIC8vIHRoYXQgb25seSBvbmUgc3lzX21vdW50KCkgcnVucyBhdCBhIHRpbWUuIFdl
IGNhbm5vdCByZXVzZSB0aGUgZXhpc3RpbmcKKyAgICAvLyBtb3VudF9sb2NrIGZvciB0aGlzIHB1
cnBvc2U6IElmIHdlIHRha2UgbW91bnRfbG9jayBhbmQgdGhlbiBkbworICAgIC8vIGxvb2t1cHMs
IHRoaXMgaXMgbG9jayBvcmRlciBpbnZlcnNpb24gYW5kIGNhbiByZXN1bHQgaW4gZGVhZGxvY2su
CisgICAgc3RhdGljIG11dGV4IHN5c19tb3VudF9sb2NrOworICAgIFNDT1BFX0xPQ0soc3lzX21v
dW50X2xvY2spOworICAgIFdJVEhfTE9DSyhtb3VudF9sb2NrKSB7CisgICAgICAgIGZvciAoYXV0
byYmIG1wIDogbW91bnRfbGlzdCkgeworICAgICAgICAgICAgaWYgKCFzdHJjbXAobXAtPm1fcGF0
aCwgZGlyKSB8fAorICAgICAgICAgICAgICAgIChkZXZpY2UgJiYgbXAtPm1fZGV2ID09IGRldmlj
ZSkpIHsKKyAgICAgICAgICAgICAgICBlcnJvciA9IEVCVVNZOyAgLyogQWxyZWFkeSBtb3VudGVk
ICovCisgICAgICAgICAgICAgICAgZ290byBlcnIxOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorICAgIC8qCisgICAgICogQ3JlYXRlIFZGUyBtb3VudCBlbnRyeS4KKyAgICAgKi8K
KyAgICBpZiAoIShtcCA9IG5ldyBtb3VudCkpIHsKKyAgICAgICAgZXJyb3IgPSBFTk9NRU07Cisg
ICAgICAgIGdvdG8gZXJyMTsKKyAgICB9CisgICAgbXAtPm1fY291bnQgPSAwOworICAgIG1wLT5t
X29wID0gZnMtPnZzX29wOworICAgIG1wLT5tX2ZsYWdzID0gZmxhZ3M7CisgICAgbXAtPm1fZGV2
ID0gZGV2aWNlOworICAgIG1wLT5tX2RhdGEgPSBudWxscHRyOworICAgIHN0cmxjcHkobXAtPm1f
cGF0aCwgZGlyLCBzaXplb2YobXAtPm1fcGF0aCkpOworICAgIHN0cmxjcHkobXAtPm1fc3BlY2lh
bCwgZGV2LCBzaXplb2YobXAtPm1fc3BlY2lhbCkpOworCisgICAgLyoKKyAgICAgKiBHZXQgdm5v
ZGUgdG8gYmUgY292ZXJlZCBpbiB0aGUgdXBwZXIgZmlsZSBzeXN0ZW0uCisgICAgICovCisgICAg
aWYgKCpkaXIgPT0gJy8nICYmICooZGlyICsgMSkgPT0gJ1wwJykgeworICAgICAgICAvKiBJZ25v
cmUgaWYgaXQgbW91bnRzIHRvIGdsb2JhbCByb290IGRpcmVjdG9yeS4gKi8KKyAgICAgICAgZHBf
Y292ZXJlZCA9IG51bGxwdHI7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKChlcnJvciA9IG5h
bWVpKGRpciwgJmRwX2NvdmVyZWQpKSAhPSAwKSB7CisKKyAgICAgICAgICAgIGVycm9yID0gRU5P
RU5UOworICAgICAgICAgICAgZ290byBlcnIyOworICAgICAgICB9CisgICAgICAgIGlmIChkcF9j
b3ZlcmVkLT5kX3Zub2RlLT52X3R5cGUgIT0gVkRJUikgeworICAgICAgICAgICAgZXJyb3IgPSBF
Tk9URElSOworICAgICAgICAgICAgZ290byBlcnIzOworICAgICAgICB9CisgICAgfQorICAgIG1w
LT5tX2NvdmVyZWQgPSBkcF9jb3ZlcmVkOworCisgICAgLyoKKyAgICAgKiBDcmVhdGUgYSByb290
IHZub2RlIGZvciB0aGlzIGZpbGUgc3lzdGVtLgorICAgICAqLworICAgIHZnZXQobXAsIDAsICZ2
cCk7CisgICAgaWYgKHZwID09IG51bGxwdHIpIHsKKyAgICAgICAgZXJyb3IgPSBFTk9NRU07Cisg
ICAgICAgIGdvdG8gZXJyMzsKKyAgICB9CisgICAgdnAtPnZfdHlwZSA9IFZESVI7CisgICAgdnAt
PnZfZmxhZ3MgPSBWUk9PVDsKKyAgICB2cC0+dl9tb2RlID0gU19JRkRJUiB8IFNfSVJVU1IgfCBT
X0lXVVNSIHwgU19JWFVTUjsKKworICAgIG1wLT5tX3Jvb3QgPSBkZW50cnlfYWxsb2MobnVsbHB0
ciwgdnAsICIvIik7CisgICAgaWYgKCFtcC0+bV9yb290KSB7CisgICAgICAgIHZwdXQodnApOwor
ICAgICAgICBnb3RvIGVycjM7CisgICAgfQorICAgIHZwdXQodnApOworCisgICAgLyoKKyAgICAg
KiBDYWxsIGEgZmlsZSBzeXN0ZW0gc3BlY2lmaWMgcm91dGluZS4KKyAgICAgKi8KKyAgICBpZiAo
KGVycm9yID0gVkZTX01PVU5UKG1wLCBkZXYsIGZsYWdzLCBkYXRhKSkgIT0gMCkKKyAgICAgICAg
Z290byBlcnI0OworCisgICAgaWYgKG1wLT5tX2ZsYWdzICYgTU5UX1JET05MWSkKKyAgICAgICAg
dnAtPnZfbW9kZSAmPX5TX0lXVVNSOworCisgICAgLyoKKyAgICAgKiBJbnNlcnQgdG8gbW91bnQg
bGlzdAorICAgICAqLworICAgIFdJVEhfTE9DSyhtb3VudF9sb2NrKSB7CisgICAgICAgIG1vdW50
X2xpc3QucHVzaF9iYWNrKG1wKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsgICAvKiBzdWNjZXNz
ICovCisgZXJyNDoKKyAgICBkcmVsZShtcC0+bV9yb290KTsKKyBlcnIzOgorICAgIGlmIChkcF9j
b3ZlcmVkKQorICAgICAgICBkcmVsZShkcF9jb3ZlcmVkKTsKKyBlcnIyOgorICAgIGRlbGV0ZSBt
cDsKKyBlcnIxOgorICAgIGlmIChkZXZpY2UpCisgICAgICAgIGRldmljZV9jbG9zZShkZXZpY2Up
OworCisgICAgcmV0dXJuIGVycm9yOworfQorCit2b2lkCityZWxlYXNlX21wX2RlbnRyaWVzKHN0
cnVjdCBtb3VudCAqbXApCit7CisgICAgLyogRGVjcmVtZW50IHJlZmVyZWNlIGNvdW50IG9mIHJv
b3Qgdm5vZGUgKi8KKyAgICBpZiAobXAtPm1fY292ZXJlZCkgeworICAgICAgICBkcmVsZShtcC0+
bV9jb3ZlcmVkKTsKKyAgICB9CisKKyAgICAvKiBSZWxlYXNlIHJvb3QgZGVudHJ5ICovCisgICAg
ZHJlbGUobXAtPm1fcm9vdCk7Cit9CisKK2ludAorc3lzX3Vtb3VudDIoY29uc3QgY2hhciAqcGF0
aCwgaW50IGZsYWdzKQoreworICAgIHN0cnVjdCBtb3VudCAqbXA7CisgICAgaW50IGVycm9yLCBw
YXRobGVuOworCisgICAga3ByaW50ZigiVkZTOiB1bm1vdW50aW5nICVzXG4iLCBwYXRoKTsKKwor
ICAgIFNDT1BFX0xPQ0sobW91bnRfbG9jayk7CisKKyAgICBwYXRobGVuID0gc3RybGVuKHBhdGgp
OworICAgIGlmIChwYXRobGVuID49IE1BWFBBVEhMRU4pIHsKKyAgICAgICAgZXJyb3IgPSBFTkFN
RVRPT0xPTkc7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIC8qIEdldCBtb3VudCBl
bnRyeSAqLworICAgIGZvciAoYXV0byYmIHRtcCA6IG1vdW50X2xpc3QpIHsKKyAgICAgICAgaWYg
KCFzdHJjbXAocGF0aCwgdG1wLT5tX3BhdGgpKSB7CisgICAgICAgICAgICBtcCA9IHRtcDsKKyAg
ICAgICAgICAgIGdvdG8gZm91bmQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBlcnJvciA9IEVJ
TlZBTDsKKyAgICBnb3RvIG91dDsKKworZm91bmQ6CisgICAgLyoKKyAgICAgKiBSb290IGZzIGNh
biBub3QgYmUgdW5tb3VudGVkLgorICAgICAqLworICAgIGlmIChtcC0+bV9jb3ZlcmVkID09IG51
bGxwdHIgJiYgIShmbGFncyAmIE1OVF9GT1JDRSkpIHsKKyAgICAgICAgZXJyb3IgPSBFSU5WQUw7
CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIGlmICgoZXJyb3IgPSBWRlNfVU5NT1VO
VChtcCwgZmxhZ3MpKSAhPSAwKQorICAgICAgICBnb3RvIG91dDsKKyAgICBtb3VudF9saXN0LnJl
bW92ZShtcCk7CisKKyNpZmRlZiBIQVZFX0JVRkZFUlMKKyAgICAvKiBGbHVzaCBhbGwgYnVmZmVy
cyAqLworICAgIGJpbnZhbChtcC0+bV9kZXYpOworI2VuZGlmCisKKyAgICBpZiAobXAtPm1fZGV2
KQorICAgICAgICBkZXZpY2VfY2xvc2UobXAtPm1fZGV2KTsKKyAgICBkZWxldGUgbXA7Cisgb3V0
OgorICAgIHJldHVybiBlcnJvcjsKK30KKworaW50CitzeXNfdW1vdW50KGNvbnN0IGNoYXIgKnBh
dGgpCit7CisgICAgcmV0dXJuIHN5c191bW91bnQyKHBhdGgsIDApOworfQorCitpbnQKK3N5c19w
aXZvdF9yb290KGNvbnN0IGNoYXIgKm5ld19yb290LCBjb25zdCBjaGFyICpwdXRfb2xkKQorewor
ICAgIHN0cnVjdCBtb3VudCAqbmV3bXAgPSBudWxscHRyLCAqb2xkbXAgPSBudWxscHRyOworICAg
IGludCBlcnJvcjsKKworICAgIFdJVEhfTE9DSyhtb3VudF9sb2NrKSB7CisgICAgICAgIGZvciAo
YXV0byYmIG1wIDogbW91bnRfbGlzdCkgeworICAgICAgICAgICAgaWYgKCFzdHJjbXAobXAtPm1f
cGF0aCwgbmV3X3Jvb3QpKSB7CisgICAgICAgICAgICAgICAgbmV3bXAgPSBtcDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGlmICghc3RyY21wKG1wLT5tX3BhdGgsIHB1dF9vbGQpKSB7Cisg
ICAgICAgICAgICAgICAgb2xkbXAgPSBtcDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICBpZiAoIW5ld21wIHx8ICFvbGRtcCB8fCBuZXdtcCA9PSBvbGRtcCkgeworICAgICAgICAg
ICAgcmV0dXJuIEVJTlZBTDsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGF1dG8mJiBtcCA6IG1v
dW50X2xpc3QpIHsKKyAgICAgICAgICAgIGlmIChtcCA9PSBuZXdtcCB8fCBtcCA9PSBvbGRtcCkg
eworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
aWYgKCFzdHJuY21wKG1wLT5tX3BhdGgsIHB1dF9vbGQsIHN0cmxlbihwdXRfb2xkKSkpIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gRUJVU1k7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKChlcnJvciA9IFZGU19VTk1PVU5UKG9sZG1wLCAwKSkgIT0gMCkgeworICAgICAg
ICAgICAgcmV0dXJuIGVycm9yOworICAgICAgICB9CisgICAgICAgIG1vdW50X2xpc3QucmVtb3Zl
KG9sZG1wKTsKKworICAgICAgICBuZXdtcC0+bV9yb290LT5kX3Zub2RlLT52X21vdW50ID0gbmV3
bXA7CisKKyAgICAgICAgaWYgKG5ld21wLT5tX2NvdmVyZWQpIHsKKyAgICAgICAgICAgIGRyZWxl
KG5ld21wLT5tX2NvdmVyZWQpOworICAgICAgICB9CisgICAgICAgIG5ld21wLT5tX2NvdmVyZWQg
PSBudWxscHRyOworCisgICAgICAgIGlmIChuZXdtcC0+bV9yb290LT5kX3BhcmVudCkgeworICAg
ICAgICAgICAgZHJlbGUobmV3bXAtPm1fcm9vdC0+ZF9wYXJlbnQpOworICAgICAgICB9CisgICAg
ICAgIG5ld21wLT5tX3Jvb3QtPmRfcGFyZW50ID0gbnVsbHB0cjsKKworICAgICAgICBzdHJsY3B5
KG5ld21wLT5tX3BhdGgsICIvIiwgc2l6ZW9mKG5ld21wLT5tX3BhdGgpKTsKKyAgICB9CisgICAg
cmV0dXJuIDA7Cit9CisKK2ludAorc3lzX3N5bmModm9pZCkKK3sKKyAgICAvKiBDYWxsIGVhY2gg
bW91bnRlZCBmaWxlIHN5c3RlbS4gKi8KKyAgICBXSVRIX0xPQ0sobW91bnRfbG9jaykgeworICAg
ICAgICBmb3IgKGF1dG8mJiBtcCA6IG1vdW50X2xpc3QpIHsKKyAgICAgICAgICAgIFZGU19TWU5D
KG1wKTsKKyAgICAgICAgfQorICAgIH0KKyNpZmRlZiBIQVZFX0JVRkZFUlMKKyAgICBiaW9fc3lu
YygpOworI2VuZGlmCisgICAgcmV0dXJuIDA7Cit9CisKKy8qCisgKiBDb21wYXJlIHR3byBwYXRo
IHN0cmluZ3MuIFJldHVybiBtYXRjaGVkIGxlbmd0aC4KKyAqIEBwYXRoOiB0YXJnZXQgcGF0aC4K
KyAqIEByb290OiB2ZnMgcm9vdCBwYXRoIGFzIG1vdW50IHBvaW50LgorICovCitzdGF0aWMgc2l6
ZV90Citjb3VudF9tYXRjaChjb25zdCBjaGFyICpwYXRoLCBjaGFyICptb3VudF9yb290KQorewor
ICAgIHNpemVfdCBsZW4gPSAwOworCisgICAgd2hpbGUgKCpwYXRoICYmICptb3VudF9yb290KSB7
CisgICAgICAgIGlmICgqcGF0aCAhPSAqbW91bnRfcm9vdCkKKyAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgIHBhdGgrKzsKKyAgICAgICAgbW91bnRfcm9vdCsrOworICAgICAgICBsZW4rKzsK
KyAgICB9CisgICAgaWYgKCptb3VudF9yb290ICE9ICdcMCcpCisgICAgICAgIHJldHVybiAwOwor
CisgICAgaWYgKGxlbiA9PSAxICYmICoocGF0aCAtIDEpID09ICcvJykKKyAgICAgICAgcmV0dXJu
IDE7CisKKyAgICBpZiAoKnBhdGggPT0gJ1wwJyB8fCAqcGF0aCA9PSAnLycpCisgICAgICAgIHJl
dHVybiBsZW47CisgICAgcmV0dXJuIDA7Cit9CisKKy8qCisgKiBHZXQgdGhlIHJvb3QgZGlyZWN0
b3J5IGFuZCBtb3VudCBwb2ludCBmb3Igc3BlY2lmaWVkIHBhdGguCisgKiBAcGF0aDogZnVsbCBw
YXRoLgorICogQG1wOiBtb3VudCBwb2ludCB0byByZXR1cm4uCisgKiBAcm9vdDogcG9pbnRlciB0
byByb290IGRpcmVjdG9yeSBpbiBwYXRoLgorICovCitpbnQKK3Zmc19maW5kcm9vdChjb25zdCBj
aGFyICpwYXRoLCBzdHJ1Y3QgbW91bnQgKiptcCwgY2hhciAqKnJvb3QpCit7CisgICAgc3RydWN0
IG1vdW50ICptID0gbnVsbHB0cjsKKyAgICBzaXplX3QgbGVuLCBtYXhfbGVuID0gMDsKKworICAg
IGlmICghcGF0aCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgLyogRmluZCBtb3VudCBwb2lu
dCBmcm9tIG5lYXJlc3QgcGF0aCAqLworICAgIFNDT1BFX0xPQ0sobW91bnRfbG9jayk7CisgICAg
Zm9yIChhdXRvJiYgdG1wIDogbW91bnRfbGlzdCkgeworICAgICAgICBsZW4gPSBjb3VudF9tYXRj
aChwYXRoLCB0bXAtPm1fcGF0aCk7CisgICAgICAgIGlmIChsZW4gPiBtYXhfbGVuKSB7CisgICAg
ICAgICAgICBtYXhfbGVuID0gbGVuOworICAgICAgICAgICAgbSA9IHRtcDsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBpZiAobSA9PSBudWxscHRyKQorICAgICAgICByZXR1cm4gLTE7CisgICAgKnJv
b3QgPSAoY2hhciAqKShwYXRoICsgbWF4X2xlbik7CisgICAgaWYgKCoqcm9vdCA9PSAnLycpCisg
ICAgICAgICgqcm9vdCkrKzsKKyAgICAqbXAgPSBtOworICAgIHJldHVybiAwOworfQorCisvKgor
ICogTWFyayBhIG1vdW50IHBvaW50IGFzIGJ1c3kuCisgKi8KK3ZvaWQKK3Zmc19idXN5KHN0cnVj
dCBtb3VudCAqbXApCit7CisgICAgU0NPUEVfTE9DSyhtb3VudF9sb2NrKTsKKyAgICBtcC0+bV9j
b3VudCsrOworfQorCisKKy8qCisgKiBNYXJrIGEgbW91bnQgcG9pbnQgYXMgYnVzeS4KKyAqLwor
dm9pZAordmZzX3VuYnVzeShzdHJ1Y3QgbW91bnQgKm1wKQoreworICAgIFNDT1BFX0xPQ0sobW91
bnRfbG9jayk7CisgICAgbXAtPm1fY291bnQtLTsKK30KKworaW50Cit2ZnNfbnVsbG9wKHZvaWQp
Cit7CisgICAgcmV0dXJuIDA7Cit9CisKK2ludAordmZzX2VpbnZhbCh2b2lkKQoreworICAgIHJl
dHVybiBFSU5WQUw7Cit9CisKK25hbWVzcGFjZSBvc3YgeworCittb3VudF9kZXNjIHRvX21vdW50
X2Rlc2MobW91bnQqIG0pCit7CisgICAgbW91bnRfZGVzYyByZXQ7CisgICAgcmV0LnNwZWNpYWwg
PSBtLT5tX3NwZWNpYWw7CisgICAgcmV0LnBhdGggPSBtLT5tX3BhdGg7CisgICAgcmV0LnR5cGUg
PSBmc19nZXRmc25hbWUobS0+bV9vcCk7CisgICAgLy8gRklYTUU6IHJlY29yZCBvcHRpb25zCisg
ICAgcmV0Lm9wdGlvbnMgPSAiIjsKKyAgICByZXR1cm4gcmV0OworfQorCitzdGQ6OnZlY3Rvcjxt
b3VudF9kZXNjPgorY3VycmVudF9tb3VudHMoKQoreworICAgIFdJVEhfTE9DSyhtb3VudF9sb2Nr
KSB7CisgICAgICAgIHN0ZDo6dmVjdG9yPG1vdW50X2Rlc2M+IHJldDsKKyAgICAgICAgZm9yIChh
dXRvJiYgbXAgOiBtb3VudF9saXN0KSB7CisgICAgICAgICAgICByZXQucHVzaF9iYWNrKHRvX21v
dW50X2Rlc2MobXApKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmV0OworICAgIH0KK30K
KworfQorCisjaWZkZWYgREVCVUdfVkZTCit2b2lkCittb3VudF9kdW1wKHZvaWQpCit7CisgICAg
U0NPUEVfTE9DSyhtb3VudF9sb2NrKTsKKworICAgIGtwcmludGYoIm1vdW50X2R1bXBcbiIpOwor
ICAgIGtwcmludGYoImRldiAgICAgIGNvdW50IHJvb3RcbiIpOworICAgIGtwcmludGYoIi0tLS0t
LS0tIC0tLS0tIC0tLS0tLS0tXG4iKTsKKworICAgIGZvciAoYXV0byYmIG1wIDogbW91bnRfbGlz
dCkgeworICAgICAgICBrcHJpbnRmKCIlOHggJTVkICVzXG4iLCBtcC0+bV9kZXYsIG1wLT5tX2Nv
dW50LCBtcC0+bV9wYXRoKTsKKyAgICB9Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL2xpYi92ZnNj
b3JlL3N1YnJfdWlvLmMgYi9saWIvdmZzY29yZS9zdWJyX3Vpby5jCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwLi5iZjEzOGI4ZQotLS0gL2Rldi9udWxsCisrKyBiL2xpYi92ZnNj
b3JlL3N1YnJfdWlvLmMKQEAgLTAsMCArMSw3MyBAQAorLyotCisgKiBDb3B5cmlnaHQgKGMpIDE5
ODIsIDE5ODYsIDE5OTEsIDE5OTMKKyAqCVRoZSBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9m
IENhbGlmb3JuaWEuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogKGMpIFVOSVggU3lzdGVtIExh
Ym9yYXRvcmllcywgSW5jLgorICogQWxsIG9yIHNvbWUgcG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFy
ZSBkZXJpdmVkIGZyb20gbWF0ZXJpYWwgbGljZW5zZWQKKyAqIHRvIHRoZSBVbml2ZXJzaXR5IG9m
IENhbGlmb3JuaWEgYnkgQW1lcmljYW4gVGVsZXBob25lIGFuZCBUZWxlZ3JhcGgKKyAqIENvLiBv
ciBVbml4IFN5c3RlbSBMYWJvcmF0b3JpZXMsIEluYy4gYW5kIGFyZSByZXByb2R1Y2VkIGhlcmVp
biB3aXRoCisgKiB0aGUgcGVybWlzc2lvbiBvZiBVTklYIFN5c3RlbSBMYWJvcmF0b3JpZXMsIElu
Yy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqIDQuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIFVuaXZlcnNpdHkgbm9y
IHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKKyAqICAg
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIFJFR0VOVFMgQU5EIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBSRUdFTlRTIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICog
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQor
ICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKgorICoJQCgjKWtlcm5fc3Vici5j
CTguMyAoQmVya2VsZXkpIDEvMjEvOTQKKyAqLworCisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisjaW5j
bHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4K
KyNpbmNsdWRlIDxvc3YvdWlvLmg+CisKK2ludAordWlvbW92ZSh2b2lkICpjcCwgaW50IG4sIHN0
cnVjdCB1aW8gKnVpbykKK3sKKwlhc3NlcnQodWlvLT51aW9fcncgPT0gVUlPX1JFQUQgfHwgdWlv
LT51aW9fcncgPT0gVUlPX1dSSVRFKTsKKworCXdoaWxlIChuID4gMCAmJiB1aW8tPnVpb19yZXNp
ZCkgeworCQlzdHJ1Y3QgaW92ZWMgKmlvdiA9IHVpby0+dWlvX2lvdjsKKwkJaW50IGNudCA9IGlv
di0+aW92X2xlbjsKKwkJaWYgKGNudCA9PSAwKSB7CisJCQl1aW8tPnVpb19pb3YrKzsKKwkJCXVp
by0+dWlvX2lvdmNudC0tOworCQkJY29udGludWU7CisJCX0KKwkJaWYgKGNudCA+IG4pCisJCQlj
bnQgPSBuOworCisJCWlmICh1aW8tPnVpb19ydyA9PSBVSU9fUkVBRCkKKwkJCW1lbWNweShpb3Yt
Pmlvdl9iYXNlLCBjcCwgY250KTsKKwkJZWxzZQorCQkJbWVtY3B5KGNwLCBpb3YtPmlvdl9iYXNl
LCBjbnQpOworCisJCWlvdi0+aW92X2Jhc2UgPSAoY2hhciAqKWlvdi0+aW92X2Jhc2UgKyBjbnQ7
CisJCWlvdi0+aW92X2xlbiAtPSBjbnQ7CisJCXVpby0+dWlvX3Jlc2lkIC09IGNudDsKKwkJdWlv
LT51aW9fb2Zmc2V0ICs9IGNudDsKKwkJY3AgPSAoY2hhciAqKWNwICsgY250OworCQluIC09IGNu
dDsKKwl9CisKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3N5c2NhbGxz
LmMgYi9saWIvdmZzY29yZS9zeXNjYWxscy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwLi40ODdkNTcyOQotLS0gL2Rldi9udWxsCisrKyBiL2xpYi92ZnNjb3JlL3N5c2NhbGxz
LmMKQEAgLTAsMCArMSwxNDg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIENsb3VkaXVz
IFN5c3RlbXMsIEx0ZC4KKyAqCisgKiBUaGlzIHdvcmsgaXMgb3BlbiBzb3VyY2Ugc29mdHdhcmUs
IGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUKKyAqIEJTRCBsaWNlbnNlIGFzIGRlc2Ny
aWJlZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5LgorICov
CisKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDUtMjAwNywgS29oc3VrZSBPaHRhbmkKKyAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRo
ZSBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBhbnkgY28tY29udHJpYnV0b3JzCisgKiAgICBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMg
c29mdHdhcmUKKyAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKy8q
CisgKiB2ZnNfc3lzY2FsbHMuYyAtIGV2ZXJ5dGhpbmcgaW4gdGhpcyBmaWxlIGlzIGEgcm91dGlu
ZSBpbXBsZW1lbnRpbmcKKyAqICAgICAgICAgICAgICAgICAgYSBWRlMgc3lzdGVtIGNhbGwuCisg
Ki8KKworI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8ZGlyZW50Lmg+CisKKyNpbmNs
dWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4K
KyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPGVycm5v
Lmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKworI2luY2x1ZGUgPG9zdi9wcmV4Lmg+CisjaW5jbHVk
ZSA8b3N2L3Zub2RlLmg+CisjaW5jbHVkZSA8b3N2L3Zmc19maWxlLmhoPgorI2luY2x1ZGUgInZm
cy5oIgorI2luY2x1ZGUgPGZzL2ZzLmhoPgorCitleHRlcm4gc3RydWN0IHRhc2sgKm1haW5fdGFz
azsKKworc3RhdGljIGludAorb3Blbl9ub19mb2xsb3dfY2hrKGNoYXIgKnBhdGgpCit7CisJaW50
ICAgICAgICAgICBlcnJvcjsKKwlzdHJ1Y3QgZGVudHJ5ICpkZHA7CisJY2hhciAgICAgICAgICAq
bmFtZTsKKwlzdHJ1Y3QgZGVudHJ5ICpkcDsKKwlzdHJ1Y3Qgdm5vZGUgICp2cDsKKworCWRkcCA9
IG51bGxwdHI7CisJZHAgID0gbnVsbHB0cjsKKwl2cCAgPSBudWxscHRyOworCisJZXJyb3IgPSBs
b29rdXAocGF0aCwgJmRkcCwgJm5hbWUpOworCWlmIChlcnJvcikgeworCQlyZXR1cm4gKGVycm9y
KTsKKwl9CisKKwllcnJvciA9IG5hbWVpX2xhc3Rfbm9mb2xsb3cocGF0aCwgZGRwLCAmZHApOwor
CWlmIChlcnJvcikgeworCQlnb3RvIG91dDsKKwl9CisKKwl2cCA9IGRwLT5kX3Zub2RlOworCXZu
X2xvY2sodnApOworCWlmICh2cC0+dl90eXBlID09IFZMTkspIHsKKwkJZXJyb3IgPSBFTE9PUDsK
KwkJZ290byBvdXQ7CisJfQorCisJZXJyb3IgPSAwOworb3V0OgorCWlmICh2cCAhPSBudWxscHRy
KSB7CisJCXZuX3VubG9jayh2cCk7CisJfQorCisJaWYgKGRwICE9IG51bGxwdHIpIHsKKwkJZHJl
bGUoZHApOworCX0KKworCWlmIChkZHAgIT0gbnVsbHB0cikgeworCQlkcmVsZShkZHApOworCX0K
KworCXJldHVybiAoZXJyb3IpOworfQorCitpbnQKK3N5c19vcGVuKGNoYXIgKnBhdGgsIGludCBm
bGFncywgbW9kZV90IG1vZGUsIHN0cnVjdCBmaWxlICoqZnBwKQoreworCWZpbGUgKmZwOworCXN0
cnVjdCBkZW50cnkgKmRwLCAqZGRwOworCXN0cnVjdCB2bm9kZSAqdnA7CisJY2hhciAqZmlsZW5h
bWU7CisJaW50IGVycm9yOworCisJRFBSSU5URihWRlNEQl9TWVNDQUxMLCAoInN5c19vcGVuOiBw
YXRoPSVzIGZsYWdzPSV4IG1vZGU9JXhcbiIsCisJCQkJcGF0aCwgZmxhZ3MsIG1vZGUpKTsKKwor
CWZsYWdzID0gZmZsYWdzKGZsYWdzKTsKKwlpZiAoZmxhZ3MgJiBPX0NSRUFUKSB7CisJCWVycm9y
ID0gbmFtZWkocGF0aCwgJmRwKTsKKwkJaWYgKGVycm9yID09IEVOT0VOVCkgeworCQkJLyogQ3Jl
YXRlIG5ldyBmaWxlLiAqLworCQkJaWYgKChlcnJvciA9IGxvb2t1cChwYXRoLCAmZGRwLCAmZmls
ZW5hbWUpKSAhPSAwKQorCQkJCXJldHVybiBlcnJvcjsKKworCQkJdm5fbG9jayhkZHAtPmRfdm5v
ZGUpOworCQkJaWYgKChlcnJvciA9IHZuX2FjY2VzcyhkZHAtPmRfdm5vZGUsIFZXUklURSkpICE9
IDApIHsKKwkJCQl2bl91bmxvY2soZGRwLT5kX3Zub2RlKTsKKwkJCQlkcmVsZShkZHApOworCQkJ
CXJldHVybiBlcnJvcjsKKwkJCX0KKwkJCW1vZGUgJj0gflNfSUZNVDsKKwkJCW1vZGUgfD0gU19J
RlJFRzsKKwkJCWVycm9yID0gVk9QX0NSRUFURShkZHAtPmRfdm5vZGUsIGZpbGVuYW1lLCBtb2Rl
KTsKKwkJCXZuX3VubG9jayhkZHAtPmRfdm5vZGUpOworCQkJZHJlbGUoZGRwKTsKKworCQkJaWYg
KGVycm9yKQorCQkJCXJldHVybiBlcnJvcjsKKwkJCWlmICgoZXJyb3IgPSBuYW1laShwYXRoLCAm
ZHApKSAhPSAwKQorCQkJCXJldHVybiBlcnJvcjsKKworCQkJdnAgPSBkcC0+ZF92bm9kZTsKKwkJ
CWZsYWdzICY9IH5PX1RSVU5DOworCQl9IGVsc2UgaWYgKGVycm9yKSB7CisJCQlyZXR1cm4gZXJy
b3I7CisJCX0gZWxzZSB7CisJCQkvKiBGaWxlIGFscmVhZHkgZXhpdHMgKi8KKwkJCWlmIChmbGFn
cyAmIE9fRVhDTCkgeworCQkJCWVycm9yID0gRUVYSVNUOworCQkJCWdvdG8gb3V0X2RyZWxlOwor
CQkJfQorCQl9CisKKwkJdnAgPSBkcC0+ZF92bm9kZTsKKwkJZmxhZ3MgJj0gfk9fQ1JFQVQ7CisJ
fSBlbHNlIHsKKwkJLyogT3BlbiAqLworCQlpZiAoZmxhZ3MgJiBPX05PRk9MTE9XKSB7CisJCQll
cnJvciA9IG9wZW5fbm9fZm9sbG93X2NoayhwYXRoKTsKKwkJCWlmIChlcnJvciAhPSAwKSB7CisJ
CQkJcmV0dXJuIChlcnJvcik7CisJCQl9CisJCX0KKwkJZXJyb3IgPSBuYW1laShwYXRoLCAmZHAp
OworCQlpZiAoZXJyb3IpCisJCQlyZXR1cm4gZXJyb3I7CisKKwkJdnAgPSBkcC0+ZF92bm9kZTsK
KworCQlpZiAoZmxhZ3MgJiBGV1JJVEUgfHwgZmxhZ3MgJiBPX1RSVU5DKSB7CisJCQllcnJvciA9
IHZuX2FjY2Vzcyh2cCwgVldSSVRFKTsKKwkJCWlmIChlcnJvcikKKwkJCQlnb3RvIG91dF9kcmVs
ZTsKKworCQkJZXJyb3IgPSBFSVNESVI7CisJCQlpZiAodnAtPnZfdHlwZSA9PSBWRElSKQorCQkJ
CWdvdG8gb3V0X2RyZWxlOworCQl9CisJCWlmIChmbGFncyAmIE9fRElSRUNUT1JZKSB7CisJCSAg
ICBpZiAodnAtPnZfdHlwZSAhPSBWRElSKSB7CisJCSAgICAgICAgZXJyb3IgPSBFTk9URElSOwor
CQkgICAgICAgIGdvdG8gb3V0X2RyZWxlOworCQkgICAgfQorCQl9CisJfQorCisJdm5fbG9jayh2
cCk7CisJLyogUHJvY2VzcyB0cnVuY2F0ZSByZXF1ZXN0ICovCisJaWYgKGZsYWdzICYgT19UUlVO
QykgeworCQllcnJvciA9IEVJTlZBTDsKKwkJaWYgKCEoZmxhZ3MgJiBGV1JJVEUpIHx8IHZwLT52
X3R5cGUgPT0gVkRJUikKKwkJCWdvdG8gb3V0X3ZuX3VubG9jazsKKworCQllcnJvciA9IFZPUF9U
UlVOQ0FURSh2cCwgMCk7CisJCWlmIChlcnJvcikKKwkJCWdvdG8gb3V0X3ZuX3VubG9jazsKKwl9
CisKKwl0cnkgeworCSAgICBmaWxlcmVmIGYgPSBtYWtlX2ZpbGU8dmZzX2ZpbGU+KGZsYWdzKTsK
KwkgICAgZnAgPSBmLmdldCgpOworCSAgICBmaG9sZChmcCk7CisJfSBjYXRjaCAoaW50IGVycikg
eworCSAgICBlcnJvciA9IGVycjsKKwkgICAgZ290byBvdXRfdm5fdW5sb2NrOworCX0KKwkvLyBj
aGFuZ2UgdG8gc3RkOjptb3ZlIG9uY2UgZHAgaXMgYSBkZW50cnlfcmVmCisJZnAtPmZfZGVudHJ5
ID0gZGVudHJ5X3JlZihkcCwgZmFsc2UpOworCWRwID0gbnVsbHB0cjsKKworCWVycm9yID0gVk9Q
X09QRU4odnAsIGZwKTsKKwlpZiAoZXJyb3IpIHsKKwkJdm5fdW5sb2NrKHZwKTsKKwkJLy8gTm90
ZSBkaXJlY3QgZGVsZXRlIG9mIGZwIGluc3RlYWQgb2YgZmRyb3AoZnApLiBmcCB3YXMgbmV2ZXIK
KwkJLy8gcmV0dXJuZWQgc28gY2Fubm90IGJlIGluIHVzZSwgYW5kIGJlY2F1c2UgaXQgd2Fzbid0
IG9wZW5lZAorCQkvLyBpdCBjYW5ub3QgYmUgY2xvc2UoKWVkLgorCQlkZWxldGUgZnA7CisJCXJl
dHVybiBlcnJvcjsKKwl9CisJdm5fdW5sb2NrKHZwKTsKKworCSpmcHAgPSBmcDsKKwlyZXR1cm4g
MDsKKworb3V0X3ZuX3VubG9jazoKKwl2bl91bmxvY2sodnApOworb3V0X2RyZWxlOgorCWlmIChk
cCkgeworCQlkcmVsZShkcCk7CisJfQorCXJldHVybiBlcnJvcjsKK30KKworaW50CitzeXNfY2xv
c2Uoc3RydWN0IGZpbGUgKmZwKQoreworCisJcmV0dXJuIDA7Cit9CisKK2ludAorc3lzX3JlYWQo
c3RydWN0IGZpbGUgKmZwLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlvdiwgc2l6ZV90IG5pb3YsCisJ
CW9mZl90IG9mZnNldCwgc2l6ZV90ICpjb3VudCkKK3sKKyAgICBpZiAoKGZwLT5mX2ZsYWdzICYg
RlJFQUQpID09IDApCisgICAgICAgIHJldHVybiBFQkFERjsKKworICAgIHNpemVfdCBieXRlcyA9
IDA7CisgICAgYXV0byBpb3ZwID0gaW92OworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBu
aW92OyBpKyspIHsKKyAgICAgICAgaWYgKGlvdnAtPmlvdl9sZW4gPiBJT1NJWkVfTUFYIC0gYnl0
ZXMpIHsKKyAgICAgICAgICAgIHJldHVybiBFSU5WQUw7CisgICAgICAgIH0KKyAgICAgICAgYnl0
ZXMgKz0gaW92cC0+aW92X2xlbjsKKyAgICAgICAgaW92cCsrOworICAgIH0KKworICAgIGlmIChi
eXRlcyA9PSAwKSB7CisgICAgICAgICpjb3VudCA9IDA7CisgICAgICAgIHJldHVybiAwOworICAg
IH0KKworICAgIHN0cnVjdCB1aW8gdWlvOworICAgIC8vIFVuZm9ydHVuYXRlbHksIHRoZSBjdXJy
ZW50IGltcGxlbWVudGF0aW9uIG9mIGZwLT5yZWFkIHplcm9zIHRoZQorICAgIC8vIGlvdl9sZW4g
ZmllbGRzIHdoZW4gaXQgcmVhZHMgZnJvbSBkaXNrLCBzbyB3ZSBoYXZlIHRvIGNvcHkgaW92Lgor
ICAgIHN0ZDo6dmVjdG9yPGlvdmVjPiBjb3B5X2lvdihpb3YsIGlvdiArIG5pb3YpOworICAgIHVp
by51aW9faW92ID0gY29weV9pb3YuZGF0YSgpOworICAgIHVpby51aW9faW92Y250ID0gbmlvdjsK
KyAgICB1aW8udWlvX29mZnNldCA9IG9mZnNldDsKKyAgICB1aW8udWlvX3Jlc2lkID0gYnl0ZXM7
CisgICAgdWlvLnVpb19ydyA9IFVJT19SRUFEOworICAgIGF1dG8gZXJyb3IgPSBmcC0+cmVhZCgm
dWlvLCAob2Zmc2V0ID09IC0xKSA/IDAgOiBGT0ZfT0ZGU0VUKTsKKyAgICAqY291bnQgPSBieXRl
cyAtIHVpby51aW9fcmVzaWQ7CisgICAgcmV0dXJuIGVycm9yOworfQorCitpbnQKK3N5c193cml0
ZShzdHJ1Y3QgZmlsZSAqZnAsIGNvbnN0IHN0cnVjdCBpb3ZlYyAqaW92LCBzaXplX3QgbmlvdiwK
KwkJb2ZmX3Qgb2Zmc2V0LCBzaXplX3QgKmNvdW50KQoreworICAgIGlmICgoZnAtPmZfZmxhZ3Mg
JiBGV1JJVEUpID09IDApCisgICAgICAgIHJldHVybiBFQkFERjsKKworICAgIHNpemVfdCBieXRl
cyA9IDA7CisgICAgYXV0byBpb3ZwID0gaW92OworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBuaW92OyBpKyspIHsKKyAgICAgICAgaWYgKGlvdnAtPmlvdl9sZW4gPiBJT1NJWkVfTUFYIC0g
Ynl0ZXMpIHsKKyAgICAgICAgICAgIHJldHVybiBFSU5WQUw7CisgICAgICAgIH0KKyAgICAgICAg
Ynl0ZXMgKz0gaW92cC0+aW92X2xlbjsKKyAgICAgICAgaW92cCsrOworICAgIH0KKworICAgIGlm
IChieXRlcyA9PSAwKSB7CisgICAgICAgICpjb3VudCA9IDA7CisgICAgICAgIHJldHVybiAwOwor
ICAgIH0KKworICAgIHN0cnVjdCB1aW8gdWlvOworICAgIC8vIFVuZm9ydHVuYXRlbHksIHRoZSBj
dXJyZW50IGltcGxlbWVudGF0aW9uIG9mIGZwLT53cml0ZSB6ZXJvcyB0aGUKKyAgICAvLyBpb3Zf
bGVuIGZpZWxkcyB3aGVuIGl0IHdyaXRlcyB0byBkaXNrLCBzbyB3ZSBoYXZlIHRvIGNvcHkgaW92
LgorICAgIHN0ZDo6dmVjdG9yPGlvdmVjPiBjb3B5X2lvdihpb3YsIGlvdiArIG5pb3YpOworICAg
IHVpby51aW9faW92ID0gY29weV9pb3YuZGF0YSgpOworICAgIHVpby51aW9faW92Y250ID0gbmlv
djsKKyAgICB1aW8udWlvX29mZnNldCA9IG9mZnNldDsKKyAgICB1aW8udWlvX3Jlc2lkID0gYnl0
ZXM7CisgICAgdWlvLnVpb19ydyA9IFVJT19XUklURTsKKyAgICBhdXRvIGVycm9yID0gZnAtPndy
aXRlKCZ1aW8sIChvZmZzZXQgPT0gLTEpID8gMCA6IEZPRl9PRkZTRVQpOworICAgICpjb3VudCA9
IGJ5dGVzIC0gdWlvLnVpb19yZXNpZDsKKyAgICByZXR1cm4gZXJyb3I7Cit9CisKK2ludAorc3lz
X2xzZWVrKHN0cnVjdCBmaWxlICpmcCwgb2ZmX3Qgb2ZmLCBpbnQgdHlwZSwgb2ZmX3QgKm9yaWdp
bikKK3sKKwlzdHJ1Y3Qgdm5vZGUgKnZwOworCisJRFBSSU5URihWRlNEQl9TWVNDQUxMLCAoInN5
c19zZWVrOiBmcD0leCBvZmY9JWQgdHlwZT0lZFxuIiwKKwkJCQkodV9sb25nKWZwLCAodV9pbnQp
b2ZmLCB0eXBlKSk7CisKKwlpZiAoIWZwLT5mX2RlbnRyeSkgeworCSAgICAvLyBMaW51eCBkb2Vz
bid0IGltcGxlbWVudCBsc2VlaygpIG9uIHBpcGVzLCBzb2NrZXRzLCBvciB0dHlzLgorCSAgICAv
LyBJbiBPU1YsIHdlIG9ubHkgaW1wbGVtZW50IGxzZWVrKCkgb24gcmVndWxhciBmaWxlcywgYmFj
a2VkIGJ5IHZub2RlCisJICAgIHJldHVybiBFU1BJUEU7CisJfQorCisJdnAgPSBmcC0+Zl9kZW50
cnktPmRfdm5vZGU7CisJaW50IGVycm9yID0gRUlOVkFMOworCXZuX2xvY2sodnApOworCXN3aXRj
aCAodHlwZSkgeworCWNhc2UgU0VFS19DVVI6CisJCW9mZiA9IGZwLT5mX29mZnNldCArIG9mZjsK
KwkJYnJlYWs7CisJY2FzZSBTRUVLX0VORDoKKwkJb2ZmID0gdnAtPnZfc2l6ZSArIG9mZjsKKwkJ
YnJlYWs7CisJfQorCWlmIChvZmYgPj0gMCkgeworCQllcnJvciA9IFZPUF9TRUVLKHZwLCBmcCwg
ZnAtPmZfb2Zmc2V0LCBvZmYpOworCQlpZiAoIWVycm9yKSB7CisJCQkqb3JpZ2luICAgICAgPSBv
ZmY7CisJCQlmcC0+Zl9vZmZzZXQgPSBvZmY7CisJCX0KKwl9CisJdm5fdW5sb2NrKHZwKTsKKwly
ZXR1cm4gZXJyb3I7Cit9CisKK2ludAorc3lzX2lvY3RsKHN0cnVjdCBmaWxlICpmcCwgdV9sb25n
IHJlcXVlc3QsIHZvaWQgKmJ1ZikKK3sKKwlpbnQgZXJyb3I7CisKKwlEUFJJTlRGKFZGU0RCX1NZ
U0NBTEwsICgic3lzX2lvY3RsOiBmcD0leCByZXF1ZXN0PSV4XG4iLCBmcCwgcmVxdWVzdCkpOwor
CisJaWYgKChmcC0+Zl9mbGFncyAmIChGUkVBRCB8IEZXUklURSkpID09IDApCisJCXJldHVybiBF
QkFERjsKKworCWVycm9yID0gZnAtPmlvY3RsKHJlcXVlc3QsIGJ1Zik7CisKKwlEUFJJTlRGKFZG
U0RCX1NZU0NBTEwsICgic3lzX2lvY3RsOiBjb21wIGVycm9yPSVkXG4iLCBlcnJvcikpOworCXJl
dHVybiBlcnJvcjsKK30KKworaW50CitzeXNfZnN5bmMoc3RydWN0IGZpbGUgKmZwKQoreworCXN0
cnVjdCB2bm9kZSAqdnA7CisJaW50IGVycm9yOworCisJRFBSSU5URihWRlNEQl9TWVNDQUxMLCAo
InN5c19mc3luYzogZnA9JXhcbiIsIGZwKSk7CisKKwlpZiAoIWZwLT5mX2RlbnRyeSkKKwkJcmV0
dXJuIEVJTlZBTDsKKworCXZwID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOworCXZuX2xvY2sodnAp
OworCWVycm9yID0gVk9QX0ZTWU5DKHZwLCBmcCk7CisJdm5fdW5sb2NrKHZwKTsKKwlyZXR1cm4g
ZXJyb3I7Cit9CisKK2ludAorc3lzX2ZzdGF0KHN0cnVjdCBmaWxlICpmcCwgc3RydWN0IHN0YXQg
KnN0KQoreworCWludCBlcnJvciA9IDA7CisKKwlEUFJJTlRGKFZGU0RCX1NZU0NBTEwsICgic3lz
X2ZzdGF0OiBmcD0leFxuIiwgZnApKTsKKworCWVycm9yID0gZnAtPnN0YXQoc3QpOworCisJcmV0
dXJuIGVycm9yOworfQorCisvKgorICogUmV0dXJuIDAgaWYgZGlyZWN0b3J5IGlzIGVtcHR5Cisg
Ki8KK3N0YXRpYyBpbnQKK2NoZWNrX2Rpcl9lbXB0eShjaGFyICpwYXRoKQoreworCWludCBlcnJv
cjsKKwlzdHJ1Y3QgZmlsZSAqZnA7CisJc3RydWN0IGRpcmVudCBkaXI7CisKKwlEUFJJTlRGKFZG
U0RCX1NZU0NBTEwsICgiY2hlY2tfZGlyX2VtcHR5XG4iKSk7CisKKwllcnJvciA9IHN5c19vcGVu
KHBhdGgsIE9fUkRPTkxZLCAwLCAmZnApOworCWlmIChlcnJvcikKKwkJZ290byBvdXRfZXJyb3I7
CisKKwlkbyB7CisJCWVycm9yID0gc3lzX3JlYWRkaXIoZnAsICZkaXIpOworCQlpZiAoZXJyb3Ig
IT0gMCAmJiBlcnJvciAhPSBFQUNDRVMpCisJCQlicmVhazsKKwl9IHdoaWxlICghc3RyY21wKGRp
ci5kX25hbWUsICIuIikgfHwgIXN0cmNtcChkaXIuZF9uYW1lLCAiLi4iKSk7CisKKwlpZiAoZXJy
b3IgPT0gRU5PRU5UKQorCQllcnJvciA9IDA7CisJZWxzZSBpZiAoZXJyb3IgPT0gMCkgeworCSAg
ICAvLyBQb3NpeCBzcGVjaWZpZXMgdG8gcmV0dXJuIEVFWElTVCBpbiB0aGlzIGNhc2UgKHJtZGly
IG9mIG5vbi1lbXB0eQorCSAgICAvLyBkaXJlY3RvcnksIGJ1dCBMaW51eCBhY3R1YWxseSByZXR1
cm5zIEVOT1RFTVBUWSkuCisJCWVycm9yID0gRU5PVEVNUFRZOworCX0KKwlmZHJvcChmcCk7Citv
dXRfZXJyb3I6CisJcmV0dXJuIGVycm9yOworfQorCitpbnQKK3N5c19yZWFkZGlyKHN0cnVjdCBm
aWxlICpmcCwgc3RydWN0IGRpcmVudCAqZGlyKQoreworCXN0cnVjdCB2bm9kZSAqZHZwOworCWlu
dCBlcnJvcjsKKworCURQUklOVEYoVkZTREJfU1lTQ0FMTCwgKCJzeXNfcmVhZGRpcjogZnA9JXhc
biIsIGZwKSk7CisKKwlpZiAoIWZwLT5mX2RlbnRyeSkKKwkJcmV0dXJuIEVOT1RESVI7CisKKwlk
dnAgPSBmcC0+Zl9kZW50cnktPmRfdm5vZGU7CisJdm5fbG9jayhkdnApOworCWlmIChkdnAtPnZf
dHlwZSAhPSBWRElSKSB7CisJCXZuX3VubG9jayhkdnApOworCQlyZXR1cm4gRU5PVERJUjsKKwl9
CisJZXJyb3IgPSBWT1BfUkVBRERJUihkdnAsIGZwLCBkaXIpOworCURQUklOVEYoVkZTREJfU1lT
Q0FMTCwgKCJzeXNfcmVhZGRpcjogZXJyb3I9JWQgcGF0aD0lc1xuIiwKKwkJCQllcnJvciwgZGly
LT5kX25hbWUpKTsKKwl2bl91bmxvY2soZHZwKTsKKwlyZXR1cm4gZXJyb3I7Cit9CisKK2ludAor
c3lzX3Jld2luZGRpcihzdHJ1Y3QgZmlsZSAqZnApCit7CisJc3RydWN0IHZub2RlICpkdnA7CisK
KwlpZiAoIWZwLT5mX2RlbnRyeSkKKwkJcmV0dXJuIEVOT1RESVI7CisKKwlkdnAgPSBmcC0+Zl9k
ZW50cnktPmRfdm5vZGU7CisJdm5fbG9jayhkdnApOworCWlmIChkdnAtPnZfdHlwZSAhPSBWRElS
KSB7CisJCXZuX3VubG9jayhkdnApOworCQlyZXR1cm4gRUJBREY7CisJfQorCWZwLT5mX29mZnNl
dCA9IDA7CisJdm5fdW5sb2NrKGR2cCk7CisJcmV0dXJuIDA7Cit9CisKK2ludAorc3lzX3NlZWtk
aXIoc3RydWN0IGZpbGUgKmZwLCBsb25nIGxvYykKK3sKKwlzdHJ1Y3Qgdm5vZGUgKmR2cDsKKwor
CWlmICghZnAtPmZfZGVudHJ5KQorCQlyZXR1cm4gRU5PVERJUjsKKworCWR2cCA9IGZwLT5mX2Rl
bnRyeS0+ZF92bm9kZTsKKwl2bl9sb2NrKGR2cCk7CisJaWYgKGR2cC0+dl90eXBlICE9IFZESVIp
IHsKKwkJdm5fdW5sb2NrKGR2cCk7CisJCXJldHVybiBFQkFERjsKKwl9CisJZnAtPmZfb2Zmc2V0
ID0gKG9mZl90KWxvYzsKKwl2bl91bmxvY2soZHZwKTsKKwlyZXR1cm4gMDsKK30KKworaW50Citz
eXNfdGVsbGRpcihzdHJ1Y3QgZmlsZSAqZnAsIGxvbmcgKmxvYykKK3sKKwlzdHJ1Y3Qgdm5vZGUg
KmR2cDsKKworCWlmICghZnAtPmZfZGVudHJ5KQorCQlyZXR1cm4gRU5PVERJUjsKKworCWR2cCA9
IGZwLT5mX2RlbnRyeS0+ZF92bm9kZTsKKwl2bl9sb2NrKGR2cCk7CisJaWYgKGR2cC0+dl90eXBl
ICE9IFZESVIpIHsKKwkJdm5fdW5sb2NrKGR2cCk7CisJCXJldHVybiBFQkFERjsKKwl9CisJKmxv
YyA9IChsb25nKWZwLT5mX29mZnNldDsKKwl2bl91bmxvY2soZHZwKTsKKwlyZXR1cm4gMDsKK30K
KworaW50CitzeXNfbWtkaXIoY2hhciAqcGF0aCwgbW9kZV90IG1vZGUpCit7CisJY2hhciAqbmFt
ZTsKKwlzdHJ1Y3QgZGVudHJ5ICpkcCwgKmRkcDsKKwlpbnQgZXJyb3I7CisKKwlEUFJJTlRGKFZG
U0RCX1NZU0NBTEwsICgic3lzX21rZGlyOiBwYXRoPSVzIG1vZGU9JWRcbiIsCXBhdGgsIG1vZGUp
KTsKKworCWVycm9yID0gbmFtZWkocGF0aCwgJmRwKTsKKwlpZiAoIWVycm9yKSB7CisJCS8qIEZp
bGUgYWxyZWFkeSBleGlzdHMgKi8KKwkJZHJlbGUoZHApOworCQlyZXR1cm4gRUVYSVNUOworCX0K
KworCWlmICgoZXJyb3IgPSBsb29rdXAocGF0aCwgJmRkcCwgJm5hbWUpKSAhPSAwKSB7CisJCS8q
IERpcmVjdG9yeSBhbHJlYWR5IGV4aXN0cyAqLworCQlyZXR1cm4gZXJyb3I7CisJfQorCisJdm5f
bG9jayhkZHAtPmRfdm5vZGUpOworCWlmICgoZXJyb3IgPSB2bl9hY2Nlc3MoZGRwLT5kX3Zub2Rl
LCBWV1JJVEUpKSAhPSAwKQorCQlnb3RvIG91dDsKKwltb2RlICY9IH5TX0lGTVQ7CisJbW9kZSB8
PSBTX0lGRElSOworCisJZXJyb3IgPSBWT1BfTUtESVIoZGRwLT5kX3Zub2RlLCBuYW1lLCBtb2Rl
KTsKKyBvdXQ6CisJdm5fdW5sb2NrKGRkcC0+ZF92bm9kZSk7CisJZHJlbGUoZGRwKTsKKwlyZXR1
cm4gZXJyb3I7Cit9CisKK2ludAorc3lzX3JtZGlyKGNoYXIgKnBhdGgpCit7CisJc3RydWN0IGRl
bnRyeSAqZHAsICpkZHA7CisJc3RydWN0IHZub2RlICp2cDsKKwlpbnQgZXJyb3I7CisJY2hhciAq
bmFtZTsKKworCURQUklOVEYoVkZTREJfU1lTQ0FMTCwgKCJzeXNfcm1kaXI6IHBhdGg9JXNcbiIs
IHBhdGgpKTsKKworCWlmICgoZXJyb3IgPSBjaGVja19kaXJfZW1wdHkocGF0aCkpICE9IDApCisJ
CXJldHVybiBlcnJvcjsKKwllcnJvciA9IG5hbWVpKHBhdGgsICZkcCk7CisJaWYgKGVycm9yKQor
CQlyZXR1cm4gZXJyb3I7CisKKwl2cCA9IGRwLT5kX3Zub2RlOworCXZuX2xvY2sodnApOworCWlm
ICgoZXJyb3IgPSB2bl9hY2Nlc3ModnAsIFZXUklURSkpICE9IDApCisJCWdvdG8gb3V0OworCWlm
ICh2cC0+dl90eXBlICE9IFZESVIpIHsKKwkJZXJyb3IgPSBFTk9URElSOworCQlnb3RvIG91dDsK
Kwl9CisJaWYgKHZwLT52X2ZsYWdzICYgVlJPT1QgfHwgdnAtPnZfcmVmY250ID49IDIpIHsKKwkJ
ZXJyb3IgPSBFQlVTWTsKKwkJZ290byBvdXQ7CisJfQorCWlmICgoZXJyb3IgPSBsb29rdXAocGF0
aCwgJmRkcCwgJm5hbWUpKSAhPSAwKQorCQlnb3RvIG91dDsKKworCXZuX2xvY2soZGRwLT5kX3Zu
b2RlKTsKKwllcnJvciA9IFZPUF9STURJUihkZHAtPmRfdm5vZGUsIHZwLCBuYW1lKTsKKwl2bl91
bmxvY2soZGRwLT5kX3Zub2RlKTsKKworCXZuX3VubG9jayh2cCk7CisJZGVudHJ5X3JlbW92ZShk
cCk7CisJZHJlbGUoZGRwKTsKKwlkcmVsZShkcCk7CisJcmV0dXJuIGVycm9yOworCisgb3V0Ogor
CXZuX3VubG9jayh2cCk7CisJZHJlbGUoZHApOworCXJldHVybiBlcnJvcjsKK30KKworaW50Citz
eXNfbWtub2QoY2hhciAqcGF0aCwgbW9kZV90IG1vZGUpCit7CisJY2hhciAqbmFtZTsKKwlzdHJ1
Y3QgZGVudHJ5ICpkcCwgKmRkcDsKKwlpbnQgZXJyb3I7CisKKwlEUFJJTlRGKFZGU0RCX1NZU0NB
TEwsICgic3lzX21rbm9kOiBwYXRoPSVzIG1vZGU9JWRcbiIsCXBhdGgsIG1vZGUpKTsKKworCXN3
aXRjaCAobW9kZSAmIFNfSUZNVCkgeworCWNhc2UgU19JRlJFRzoKKwljYXNlIFNfSUZESVI6CisJ
Y2FzZSBTX0lGSUZPOgorCWNhc2UgU19JRlNPQ0s6CisJCS8qIE9LICovCisJCWJyZWFrOworCWRl
ZmF1bHQ6CisJCXJldHVybiBFSU5WQUw7CisJfQorCisJZXJyb3IgPSBuYW1laShwYXRoLCAmZHAp
OworCWlmICghZXJyb3IpIHsKKwkJZHJlbGUoZHApOworCQlyZXR1cm4gRUVYSVNUOworCX0KKwor
CWlmICgoZXJyb3IgPSBsb29rdXAocGF0aCwgJmRkcCwgJm5hbWUpKSAhPSAwKQorCQlyZXR1cm4g
ZXJyb3I7CisKKwl2bl9sb2NrKGRkcC0+ZF92bm9kZSk7CisJaWYgKChlcnJvciA9IHZuX2FjY2Vz
cyhkZHAtPmRfdm5vZGUsIFZXUklURSkpICE9IDApCisJCWdvdG8gb3V0OworCWlmIChTX0lTRElS
KG1vZGUpKQorCQllcnJvciA9IFZPUF9NS0RJUihkZHAtPmRfdm5vZGUsIG5hbWUsIG1vZGUpOwor
CWVsc2UKKwkJZXJyb3IgPSBWT1BfQ1JFQVRFKGRkcC0+ZF92bm9kZSwgbmFtZSwgbW9kZSk7Cisg
b3V0OgorCXZuX3VubG9jayhkZHAtPmRfdm5vZGUpOworCWRyZWxlKGRkcCk7CisJcmV0dXJuIGVy
cm9yOworfQorCisvKgorICogUmV0dXJucyB0cnVlIHdoZW4gQHBhcmVudCBwYXRoIGNvdWxkIHJl
cHJlc2VudCBwYXJlbnQgZGlyZWN0b3J5CisgKiBvZiBhIGZpbGUgb3IgZGlyZWN0b3J5IHJlcHJl
c2VudGVkIGJ5IEBjaGlsZCBwYXRoLgorICoKKyAqIEFzc3VtZXMgYm90aCBwYXRocyBkbyBub3Qg
aGF2ZSB0cmFpbGluZyBzbGFzaGVzLgorICovCitzdGF0aWMgYm9vbAoraXNfcGFyZW50KGNvbnN0
IGNoYXIgKnBhcmVudCwgY29uc3QgY2hhciAqY2hpbGQpCit7CisJc2l6ZV90IHBfbGVuID0gc3Ry
bGVuKHBhcmVudCk7CisJcmV0dXJuICFzdHJuY21wKHBhcmVudCwgY2hpbGQsIHBfbGVuKSAmJiAo
cGFyZW50W3BfbGVuLTFdID09ICcvJyB8fCBjaGlsZFtwX2xlbl0gPT0gJy8nKTsKK30KKworc3Rh
dGljIGJvb2wKK2hhc190cmFpbGluZyhjb25zdCBjaGFyICpwYXRoLCBjaGFyIGNoKQoreworCXNp
emVfdCBsZW4gPSBzdHJsZW4ocGF0aCk7CisJcmV0dXJuIGxlbiAmJiBwYXRoW2xlbiAtIDFdID09
IGNoOworfQorCitzdGF0aWMgdm9pZAorc3RyaXBfdHJhaWxpbmcoY2hhciAqcGF0aCwgY2hhciBj
aCkKK3sKKwlzaXplX3QgbGVuID0gc3RybGVuKHBhdGgpOworCisJd2hpbGUgKGxlbiAmJiBwYXRo
W2xlbiAtIDFdID09IGNoKQorCQlsZW4tLTsKKworCXBhdGhbbGVuXSA9ICdcMCc7Cit9CisKK2lu
dAorc3lzX3JlbmFtZShjaGFyICpzcmMsIGNoYXIgKmRlc3QpCit7CisJc3RydWN0IGRlbnRyeSAq
ZHAxLCAqZHAyID0gMCwgKmRkcDEsICpkZHAyOworCXN0cnVjdCB2bm9kZSAqdnAxLCAqdnAyID0g
MCwgKmR2cDEsICpkdnAyOworCWNoYXIgKnNuYW1lLCAqZG5hbWU7CisJaW50IGVycm9yOworCWNo
YXIgcm9vdFtdID0gIi8iOworCWJvb2wgdHM7IC8qIHRyYWlsaW5nIHNsYXNoICovCisKKwlEUFJJ
TlRGKFZGU0RCX1NZU0NBTEwsICgic3lzX3JlbmFtZTogc3JjPSVzIGRlc3Q9JXNcbiIsIHNyYywg
ZGVzdCkpOworCisJdHMgPSBmYWxzZTsKKwlpZiAoaGFzX3RyYWlsaW5nKHNyYywgJy8nKSA9PSB0
cnVlKSB7CisJCWlmIChzdHJsZW4oc3JjKSAhPSAxKSB7CisJCQkvKiByZW1vdmUgdHJhaWxpbmcg
c2xhc2ggaWZmIHBhdGggaXMgbm9uZSByb290ICovCisJCQlzdHJpcF90cmFpbGluZyhzcmMsICcv
Jyk7CisJCQl0cyA9IHRydWU7CisJCX0KKwl9CisKKwllcnJvciA9IGxvb2t1cChzcmMsICZkZHAx
LCAmc25hbWUpOworCWlmIChlcnJvciAhPSAwKSB7CisJCXJldHVybiAoZXJyb3IpOworCX0KKwor
CWVycm9yID0gbmFtZWlfbGFzdF9ub2ZvbGxvdyhzcmMsIGRkcDEsICZkcDEpOworCWlmIChlcnJv
ciAhPSAwKSB7CisJCWRyZWxlKGRkcDEpOworCQlyZXR1cm4gKGVycm9yKTsKKwl9CisKKwl2cDEg
PSBkcDEtPmRfdm5vZGU7CisJdm5fbG9jayh2cDEpOworCisJaWYgKHZwMS0+dl90eXBlICE9IFZE
SVIgJiYgdHMgPT0gdHJ1ZSkgeworCQllcnJvciA9IEVOT1RESVI7CisJCWdvdG8gZXJyMTsKKwl9
CisKKwl0cyA9IGZhbHNlOworCWlmIChoYXNfdHJhaWxpbmcoZGVzdCwgJy8nKSA9PSB0cnVlKSB7
CisJCWlmIChzdHJsZW4oZGVzdCkgIT0gMSkgeworCQkJLyogcmVtb3ZlIHRyYWlsaW5nIHNsYXNo
IGlmZiBwYXRoIGlzIG5vbmUgcm9vdCAqLworCQkJc3RyaXBfdHJhaWxpbmcoZGVzdCwgJy8nKTsK
KwkJCXRzID0gdHJ1ZTsKKwkJfQorCX0KKworCWVycm9yID0gbG9va3VwKGRlc3QsICZkZHAyLCAm
ZG5hbWUpOworCWlmIChlcnJvciAhPSAwKSB7CisJCWdvdG8gZXJyMTsKKwl9CisKKwllcnJvciA9
IG5hbWVpX2xhc3Rfbm9mb2xsb3coZGVzdCwgZGRwMiwgJmRwMik7CisJaWYgKGVycm9yID09IDAp
IHsKKwkJLyogdGFyZ2V0IGV4aXN0cyAqLworCisJCXZwMiA9IGRwMi0+ZF92bm9kZTsKKwkJdm5f
bG9jayh2cDIpOworCisJCWlmICh2cDItPnZfdHlwZSAhPSBWRElSICYmIHZwMi0+dl90eXBlICE9
IFZMTkspIHsKKwkJCWlmICh2cDEtPnZfdHlwZSA9PSBWRElSIHx8IHRzID09IHRydWUpIHsKKwkJ
CQllcnJvciA9IEVOT1RESVI7CisJCQkJZ290byBlcnIyOworCQkJfQorCQl9IGVsc2UgaWYgKHZw
MS0+dl90eXBlICE9IFZESVIgJiYgdnAyLT52X3R5cGUgPT0gVkRJUikgeworCQkJZXJyb3IgPSBF
SVNESVI7CisJCQlnb3RvIGVycjI7CisJCX0KKwkJaWYgKHZwMi0+dl90eXBlID09IFZESVIgJiYg
Y2hlY2tfZGlyX2VtcHR5KGRlc3QpKSB7CisJCQllcnJvciA9IEVFWElTVDsKKwkJCWdvdG8gZXJy
MjsKKwkJfQorCX0gZWxzZSBpZiAoZXJyb3IgPT0gRU5PRU5UKSB7CisJCWlmICh2cDEtPnZfdHlw
ZSAhPSBWRElSICYmIHRzID09IHRydWUpIHsKKwkJCWVycm9yID0gRU5PVERJUjsKKwkJCWdvdG8g
ZXJyMjsKKwkJfQorCX0gZWxzZSB7CisJCWdvdG8gZXJyMjsKKwl9CisKKwlpZiAoc3RyY21wKGRl
c3QsICIvIikpCisJCXN0cmlwX3RyYWlsaW5nKGRlc3QsICcvJyk7CisKKwlpZiAoc3RyY21wKHNy
YywgIi8iKSkKKwkJc3RyaXBfdHJhaWxpbmcoc3JjLCAnLycpOworCisJLyogSWYgc291cmNlIGFu
ZCBkZXN0IGFyZSB0aGUgc2FtZSwgZG8gbm90aGluZyAqLworCWlmICghc3RybmNtcChzcmMsIGRl
c3QsIFBBVEhfTUFYKSkKKwkJZ290byBlcnIyOworCisJLyogQ2hlY2sgaWYgdGFyZ2V0IGlzIGRp
cmVjdG9yeSBvZiBzb3VyY2UgKi8KKwlpZiAoaXNfcGFyZW50KHNyYywgZGVzdCkpIHsKKwkJZXJy
b3IgPSBFSU5WQUw7CisJCWdvdG8gZXJyMjsKKwl9CisKKwlkbmFtZSA9IHN0cnJjaHIoZGVzdCwg
Jy8nKTsKKwlpZiAoZG5hbWUgPT0gbnVsbHB0cikgeworCQllcnJvciA9IEVOT1RESVI7CisJCWdv
dG8gZXJyMjsKKwl9CisJaWYgKGRuYW1lID09IGRlc3QpCisJCWRlc3QgPSByb290OworCisJKmRu
YW1lID0gMDsKKwlkbmFtZSsrOworCisJZHZwMSA9IGRkcDEtPmRfdm5vZGU7CisJdm5fbG9jayhk
dnAxKTsKKworCWR2cDIgPSBkZHAyLT5kX3Zub2RlOworCXZuX2xvY2soZHZwMik7CisKKwkvKiBT
b3VyY2UgYW5kIGRlc3RpbmF0aW9uIGRpcmVjdGlvbnMgc2hvdWxkIGJlIHdyaXRhYmxlKSAqLwor
CWlmICgoZXJyb3IgPSB2bl9hY2Nlc3MoZHZwMSwgVldSSVRFKSkgIT0gMCkKKwkgICAgZ290byBl
cnIzOworCWlmICgoZXJyb3IgPSB2bl9hY2Nlc3MoZHZwMiwgVldSSVRFKSkgIT0gMCkKKwkgICAg
Z290byBlcnIzOworCisJLyogVGhlIHNvdXJjZSBhbmQgZGVzdCBtdXN0IGJlIHNhbWUgZmlsZSBz
eXN0ZW0gKi8KKwlpZiAoZHZwMS0+dl9tb3VudCAhPSBkdnAyLT52X21vdW50KSB7CisJCWVycm9y
ID0gRVhERVY7CisJCWdvdG8gZXJyMzsKKwl9CisKKwllcnJvciA9IFZPUF9SRU5BTUUoZHZwMSwg
dnAxLCBzbmFtZSwgZHZwMiwgdnAyLCBkbmFtZSk7CisKKwlkZW50cnlfbW92ZShkcDEsIGRkcDIs
IGRuYW1lKTsKKwlpZiAoZHAyKQorCQlkZW50cnlfcmVtb3ZlKGRwMik7CisKKyBlcnIzOgorCXZu
X3VubG9jayhkdnAyKTsKKwl2bl91bmxvY2soZHZwMSk7CisgZXJyMjoKKwlpZiAodnAyKSB7CisJ
CXZuX3VubG9jayh2cDIpOworCQlkcmVsZShkcDIpOworCX0KKwlkcmVsZShkZHAyKTsKKyBlcnIx
OgorCXZuX3VubG9jayh2cDEpOworCWRyZWxlKGRwMSk7CisJZHJlbGUoZGRwMSk7CisJcmV0dXJu
IGVycm9yOworfQorCitpbnQKK3N5c19zeW1saW5rKGNvbnN0IGNoYXIgKm9sZHBhdGgsIGNvbnN0
IGNoYXIgKm5ld3BhdGgpCit7CisJc3RydWN0IHRhc2sJKnQgPSBtYWluX3Rhc2s7CisJaW50CQll
cnJvcjsKKwlzdGQ6OnVuaXF1ZV9wdHI8Y2hhciBbXT4gdXBfb3AgKG5ldyBjaGFyW1BBVEhfTUFY
XSk7CisJY2hhcgkJKm9wID0gdXBfb3AuZ2V0KCk7CisJc3RkOjp1bmlxdWVfcHRyPGNoYXIgW10+
IHVwX25wIChuZXcgY2hhcltQQVRIX01BWF0pOworCWNoYXIJCSpucCA9IHVwX25wLmdldCgpOwor
CXN0cnVjdCBkZW50cnkJKm5ld2RwOworCXN0cnVjdCBkZW50cnkJKm5ld2RpcmRwOworCWNoYXIJ
CSpuYW1lOworCisJaWYgKG9sZHBhdGggPT0gbnVsbHB0ciB8fCBuZXdwYXRoID09IG51bGxwdHIp
IHsKKwkJcmV0dXJuIChFRkFVTFQpOworCX0KKworCURQUklOVEYoVkZTREJfU1lTQ0FMTCwgKCJz
eXNfbGluazogb2xkcGF0aD0lcyBuZXdwYXRoPSVzXG4iLAorCQkJCW9sZHBhdGgsIG5ld3BhdGgp
KTsKKworCW5ld2RwCQk9IG51bGxwdHI7CisJbmV3ZGlyZHAJPSBudWxscHRyOworCisJZXJyb3Ig
PSB0YXNrX2NvbnYodCwgbmV3cGF0aCwgVldSSVRFLCBucCk7CisJaWYgKGVycm9yICE9IDApIHsK
KwkJcmV0dXJuIChlcnJvcik7CisJfQorCisJLyogcGFyZW50IGRpcmVjdG9yeSBmb3IgbmV3IHBh
dGggbXVzdCBleGlzdCAqLworCWlmICgoZXJyb3IgPSBsb29rdXAobnAsICZuZXdkaXJkcCwgJm5h
bWUpKSAhPSAwKSB7CisJCWVycm9yID0gRU5PRU5UOworCQlnb3RvIG91dDsKKwl9CisJdm5fbG9j
ayhuZXdkaXJkcC0+ZF92bm9kZSk7CisKKwkvKiBuZXdwYXRoIHNob3VsZCBub3QgYWxyZWFkeSBl
eGlzdCAqLworCWlmIChuYW1laV9sYXN0X25vZm9sbG93KG5wLCBuZXdkaXJkcCwgJm5ld2RwKSA9
PSAwKSB7CisJCWRyZWxlKG5ld2RwKTsKKwkJZXJyb3IgPSBFRVhJU1Q7CisJCWdvdG8gb3V0Owor
CX0KKworCS8qIGNoZWNrIGZvciB3cml0ZSBhY2Nlc3MgYXQgbmV3cGF0aCAqLworCWlmICgoZXJy
b3IgPSB2bl9hY2Nlc3MobmV3ZGlyZHAtPmRfdm5vZGUsIFZXUklURSkpICE9IDApIHsKKwkJZ290
byBvdXQ7CisJfQorCisJLyogb2xkcGF0aCBtYXkgbm90IGJlIGNvbnN0IGNoYXIgKiB0byBWT1Bf
U1lNTElOSyAtIG5lZWQgdG8gY29weSAqLworCXNpemVfdCB0b2NvcHk7CisJdG9jb3B5ID0gc3Ry
bGNweShvcCwgb2xkcGF0aCwgUEFUSF9NQVgpOworCWlmICh0b2NvcHkgPj0gUEFUSF9NQVggLSAx
KSB7CisJCWVycm9yID0gRU5BTUVUT09MT05HOworCQlnb3RvIG91dDsKKwl9CisJZXJyb3IgPSBW
T1BfU1lNTElOSyhuZXdkaXJkcC0+ZF92bm9kZSwgbmFtZSwgb3ApOworCitvdXQ6CisJaWYgKG5l
d2RpcmRwICE9IG51bGxwdHIpIHsKKwkJdm5fdW5sb2NrKG5ld2RpcmRwLT5kX3Zub2RlKTsKKwkJ
ZHJlbGUobmV3ZGlyZHApOworCX0KKworCXJldHVybiAoZXJyb3IpOworfQorCitpbnQKK3N5c19s
aW5rKGNoYXIgKm9sZHBhdGgsIGNoYXIgKm5ld3BhdGgpCit7CisJc3RydWN0IGRlbnRyeSAqb2xk
ZHAsICpuZXdkcCwgKm5ld2RpcmRwOworCXN0cnVjdCB2bm9kZSAqdnA7CisJY2hhciAqbmFtZTsK
KwlpbnQgZXJyb3I7CisKKwlEUFJJTlRGKFZGU0RCX1NZU0NBTEwsICgic3lzX2xpbms6IG9sZHBh
dGg9JXMgbmV3cGF0aD0lc1xuIiwKKwkJCQlvbGRwYXRoLCBuZXdwYXRoKSk7CisKKwkvKiBGaWxl
IGZyb20gb2xkcGF0aCBtdXN0IGV4aXN0ICovCisJaWYgKChlcnJvciA9IG5hbWVpKG9sZHBhdGgs
ICZvbGRkcCkpICE9IDApCisJCXJldHVybiBlcnJvcjsKKworCXZwID0gb2xkZHAtPmRfdm5vZGU7
CisJdm5fbG9jayh2cCk7CisKKwlpZiAodnAtPnZfdHlwZSA9PSBWRElSKSB7CisJCWVycm9yID0g
RVBFUk07CisJCWdvdG8gb3V0OworCX0KKworCS8qIElmIG5ld3BhdGggZXhpc3RzLCBpdCBzaG91
bGRuJ3QgYmUgb3ZlcndyaXR0ZW4gKi8KKwlpZiAoIW5hbWVpKG5ld3BhdGgsICZuZXdkcCkpIHsK
KwkJZXJyb3IgPSBFRVhJU1Q7CisJCWdvdG8gb3V0OworCX0KKworCS8qIEdldCBwb2ludGVyIHRv
IHRoZSBwYXJlbnQgZGVudHJ5IG9mIG5ld3BhdGggKi8KKwlpZiAoKGVycm9yID0gbG9va3VwKG5l
d3BhdGgsICZuZXdkaXJkcCwgJm5hbWUpKSAhPSAwKQorCQlnb3RvIG91dDsKKworCXZuX2xvY2so
bmV3ZGlyZHAtPmRfdm5vZGUpOworCisJLyogQm90aCBmaWxlcyBtdXN0IHJlc2lkZSBvbiB0aGUg
c2FtZSBtb3VudGVkIGZpbGUgc3lzdGVtICovCisJaWYgKG9sZGRwLT5kX21vdW50ICE9IG5ld2Rp
cmRwLT5kX21vdW50KSB7CisJCWVycm9yID0gRVhERVY7CisJCWdvdG8gb3V0MTsKKwl9CisKKwkv
KiBXcml0ZSBhY2Nlc3MgdG8gdGhlIGRpciBjb250YWluaW5nIG5ld3BhdGggaXMgcmVxdWlyZWQg
Ki8KKwlpZiAoKGVycm9yID0gdm5fYWNjZXNzKG5ld2RpcmRwLT5kX3Zub2RlLCBWV1JJVEUpKSAh
PSAwKQorCQlnb3RvIG91dDE7CisKKwkvKiBNYXAgbmV3cGF0aCBpbnRvIGRlbnRyeSBoYXNoIHdp
dGggdGhlIHNhbWUgdm5vZGUgYXMgb2xkcGF0aCAqLworCWlmICghKG5ld2RwID0gZGVudHJ5X2Fs
bG9jKG5ld2RpcmRwLCB2cCwgbmV3cGF0aCkpKSB7CisJCWVycm9yID0gRU5PTUVNOworCQlnb3Rv
IG91dDE7CisJfQorCisJZXJyb3IgPSBWT1BfTElOSyhuZXdkaXJkcC0+ZF92bm9kZSwgdnAsIG5h
bWUpOworIG91dDE6CisJdm5fdW5sb2NrKG5ld2RpcmRwLT5kX3Zub2RlKTsKKwlkcmVsZShuZXdk
aXJkcCk7Cisgb3V0OgorCXZuX3VubG9jayh2cCk7CisJZHJlbGUob2xkZHApOworCWRyZWxlKG5l
d2RwKTsKKwlyZXR1cm4gZXJyb3I7Cit9CisKK2ludAorc3lzX3VubGluayhjaGFyICpwYXRoKQor
eworCWNoYXIgKm5hbWU7CisJc3RydWN0IGRlbnRyeSAqZHAsICpkZHA7CisJc3RydWN0IHZub2Rl
ICp2cDsKKwlpbnQgZXJyb3I7CisKKwlEUFJJTlRGKFZGU0RCX1NZU0NBTEwsICgic3lzX3VubGlu
azogcGF0aD0lc1xuIiwgcGF0aCkpOworCisJZGRwICAgPSBudWxscHRyOworCWRwICAgID0gbnVs
bHB0cjsKKwl2cCAgICA9IG51bGxwdHI7CisKKwllcnJvciA9IGxvb2t1cChwYXRoLCAmZGRwLCAm
bmFtZSk7CisJaWYgKGVycm9yICE9IDApIHsKKwkJcmV0dXJuIChlcnJvcik7CisJfQorCisJZXJy
b3IgPSBuYW1laV9sYXN0X25vZm9sbG93KHBhdGgsIGRkcCwgJmRwKTsKKwlpZiAoZXJyb3IgIT0g
MCkgeworCQlnb3RvIG91dDsKKwl9CisKKwl2cCA9IGRwLT5kX3Zub2RlOworCXZuX2xvY2sodnAp
OworCWlmICh2cC0+dl90eXBlID09IFZESVIpIHsKKwkgICAgLy8gUG9zaXggc3BlY2lmaWVzIHRo
YXQgd2Ugc2hvdWxkIHJldHVybiBFUEVSTSBoZXJlLCBidXQgTGludXgKKwkgICAgLy8gYWN0dWFs
bHkgcmV0dXJucyBFSVNESVIuCisJCWVycm9yID0gRUlTRElSOworCQlnb3RvIG91dDsKKwl9CisJ
aWYgKHZwLT52X2ZsYWdzICYgVlJPT1QpIHsKKwkJZXJyb3IgPSBFQlVTWTsKKwkJZ290byBvdXQ7
CisJfQorCisJdm5fbG9jayhkZHAtPmRfdm5vZGUpOworCWlmICgoZXJyb3IgPSB2bl9hY2Nlc3Mo
ZGRwLT5kX3Zub2RlLCBWV1JJVEUpKSAhPSAwKSB7CisJICAgIHZuX3VubG9jayhkZHAtPmRfdm5v
ZGUpOworCSAgICBnb3RvIG91dDsKKwl9CisJZXJyb3IgPSBWT1BfUkVNT1ZFKGRkcC0+ZF92bm9k
ZSwgdnAsIG5hbWUpOworCXZuX3VubG9jayhkZHAtPmRfdm5vZGUpOworCisJdm5fdW5sb2NrKHZw
KTsKKwlkZW50cnlfcmVtb3ZlKGRwKTsKKwlkcmVsZShkZHApOworCWRyZWxlKGRwKTsKKwlyZXR1
cm4gZXJyb3I7Cisgb3V0OgorCWlmICh2cCAhPSBudWxscHRyKSB7CisJCXZuX3VubG9jayh2cCk7
CisJfQorCisJaWYgKGRwICE9IG51bGxwdHIpIHsKKwkJZHJlbGUoZHApOworCX0KKworCWlmIChk
ZHAgIT0gbnVsbHB0cikgeworCQlkcmVsZShkZHApOworCX0KKwlyZXR1cm4gZXJyb3I7Cit9CisK
K2ludAorc3lzX2FjY2VzcyhjaGFyICpwYXRoLCBpbnQgbW9kZSkKK3sKKwlzdHJ1Y3QgZGVudHJ5
ICpkcDsKKwlpbnQgZXJyb3IsIGZsYWdzOworCisJRFBSSU5URihWRlNEQl9TWVNDQUxMLCAoInN5
c19hY2Nlc3M6IHBhdGg9JXMgbW9kZT0leFxuIiwgcGF0aCwgbW9kZSkpOworCisJLyogSWYgRl9P
SyBpcyBzZXQsIHdlIHJldHVybiBoZXJlIGlmIGZpbGUgaXMgbm90IGZvdW5kLiAqLworCWVycm9y
ID0gbmFtZWkocGF0aCwgJmRwKTsKKwlpZiAoZXJyb3IpCisJCXJldHVybiBlcnJvcjsKKworCWZs
YWdzID0gMDsKKwlpZiAobW9kZSAmIFJfT0spCisJCWZsYWdzIHw9IFZSRUFEOworCWlmIChtb2Rl
ICYgV19PSykKKwkJZmxhZ3MgfD0gVldSSVRFOworCWlmIChtb2RlICYgWF9PSykKKwkJZmxhZ3Mg
fD0gVkVYRUM7CisKKwllcnJvciA9IHZuX2FjY2VzcyhkcC0+ZF92bm9kZSwgZmxhZ3MpOworCisJ
ZHJlbGUoZHApOworCXJldHVybiBlcnJvcjsKK30KKworaW50CitzeXNfc3RhdChjaGFyICpwYXRo
LCBzdHJ1Y3Qgc3RhdCAqc3QpCit7CisJRFBSSU5URihWRlNEQl9TWVNDQUxMLCAoInN5c19zdGF0
OiBwYXRoPSVzXG4iLCBwYXRoKSk7CisKKwl0cnkgeworCQlkZW50cnlfcmVmIGRwID0gbmFtZWko
cGF0aCk7CisJCWlmICghZHApIHsKKwkJCXJldHVybiBFTk9FTlQ7CisJCX0KKwkJcmV0dXJuIHZu
X3N0YXQoZHAtPmRfdm5vZGUsIHN0KTsKKwl9IGNhdGNoIChlcnJvciBlKSB7CisJCXJldHVybiBl
LmdldCgpOworCX0KK30KKworaW50IHN5c19sc3RhdChjaGFyICpwYXRoLCBzdHJ1Y3Qgc3RhdCAq
c3QpCit7CisJaW50ICAgICAgICAgICBlcnJvcjsKKwlzdHJ1Y3QgZGVudHJ5ICpkZHA7CisJY2hh
ciAgICAgICAgICAqbmFtZTsKKwlzdHJ1Y3QgZGVudHJ5ICpkcDsKKworCURQUklOVEYoVkZTREJf
U1lTQ0FMTCwgKCJzeXNfbHN0YXQ6IHBhdGg9JXNcbiIsIHBhdGgpKTsKKworCWVycm9yID0gbG9v
a3VwKHBhdGgsICZkZHAsICZuYW1lKTsKKwlpZiAoZXJyb3IpIHsKKwkJcmV0dXJuIChlcnJvcik7
CisJfQorCisJZXJyb3IgPSBuYW1laV9sYXN0X25vZm9sbG93KHBhdGgsIGRkcCwgJmRwKTsKKwlp
ZiAoZXJyb3IpIHsKKwkJZHJlbGUoZGRwKTsKKwkJcmV0dXJuIGVycm9yOworCX0KKworCWVycm9y
ID0gdm5fc3RhdChkcC0+ZF92bm9kZSwgc3QpOworCWRyZWxlKGRwKTsKKwlkcmVsZShkZHApOwor
CXJldHVybiBlcnJvcjsKK30KKworaW50CitzeXNfc3RhdGZzKGNoYXIgKnBhdGgsIHN0cnVjdCBz
dGF0ZnMgKmJ1ZikKK3sKKwltZW1zZXQoYnVmLCAwLCBzaXplb2YoKmJ1ZikpOworCXRyeSB7CisJ
CWRlbnRyeV9yZWYgZHAgPSBuYW1laShwYXRoKTsKKwkJaWYgKCFkcCkgeworCQkJcmV0dXJuIEVO
T0VOVDsKKwkJfQorCQlyZXR1cm4gVkZTX1NUQVRGUyhkcC0+ZF9tb3VudCwgYnVmKTsKKwl9IGNh
dGNoIChlcnJvciBlKSB7CisJCXJldHVybiBlLmdldCgpOworCX0KK30KKworaW50CitzeXNfZnN0
YXRmcyhzdHJ1Y3QgZmlsZSAqZnAsIHN0cnVjdCBzdGF0ZnMgKmJ1ZikKK3sKKwlzdHJ1Y3Qgdm5v
ZGUgKnZwOworCWludCBlcnJvciA9IDA7CisKKwlpZiAoIWZwLT5mX2RlbnRyeSkKKwkJcmV0dXJu
IEVCQURGOworCisJdnAgPSBmcC0+Zl9kZW50cnktPmRfdm5vZGU7CisJbWVtc2V0KGJ1ZiwgMCwg
c2l6ZW9mKCpidWYpKTsKKworCXZuX2xvY2sodnApOworCWVycm9yID0gVkZTX1NUQVRGUyh2cC0+
dl9tb3VudCwgYnVmKTsKKwl2bl91bmxvY2sodnApOworCisJcmV0dXJuIGVycm9yOworfQorCitp
bnQKK3N5c190cnVuY2F0ZShjaGFyICpwYXRoLCBvZmZfdCBsZW5ndGgpCit7CisJc3RydWN0IGRl
bnRyeSAqZHA7CisJaW50IGVycm9yOworCisJZXJyb3IgPSBuYW1laShwYXRoLCAmZHApOworCWlm
IChlcnJvcikKKwkJcmV0dXJuIGVycm9yOworCisJdm5fbG9jayhkcC0+ZF92bm9kZSk7CisJZXJy
b3IgPSBWT1BfVFJVTkNBVEUoZHAtPmRfdm5vZGUsIGxlbmd0aCk7CisJdm5fdW5sb2NrKGRwLT5k
X3Zub2RlKTsKKworCWRyZWxlKGRwKTsKKwlyZXR1cm4gZXJyb3I7Cit9CisKK2ludAorc3lzX2Z0
cnVuY2F0ZShzdHJ1Y3QgZmlsZSAqZnAsIG9mZl90IGxlbmd0aCkKK3sKKwlzdHJ1Y3Qgdm5vZGUg
KnZwOworCWludCBlcnJvcjsKKworCWlmICghZnAtPmZfZGVudHJ5KQorCQlyZXR1cm4gRUJBREY7
CisKKwl2cCA9IGZwLT5mX2RlbnRyeS0+ZF92bm9kZTsKKwl2bl9sb2NrKHZwKTsKKwllcnJvciA9
IFZPUF9UUlVOQ0FURSh2cCwgbGVuZ3RoKTsKKwl2bl91bmxvY2sodnApOworCisJcmV0dXJuIGVy
cm9yOworfQorCitpbnQKK3N5c19mY2hkaXIoc3RydWN0IGZpbGUgKmZwLCBjaGFyICpjd2QpCit7
CisJc3RydWN0IHZub2RlICpkdnA7CisKKwlpZiAoIWZwLT5mX2RlbnRyeSkKKwkJcmV0dXJuIEVC
QURGOworCisJZHZwID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOworCXZuX2xvY2soZHZwKTsKKwlp
ZiAoZHZwLT52X3R5cGUgIT0gVkRJUikgeworCQl2bl91bmxvY2soZHZwKTsKKwkJcmV0dXJuIEVC
QURGOworCX0KKwlzdHJsY3B5KGN3ZCwgZnAtPmZfZGVudHJ5LT5kX3BhdGgsIFBBVEhfTUFYKTsK
Kwl2bl91bmxvY2soZHZwKTsKKwlyZXR1cm4gMDsKK30KKworaW50CitzeXNfcmVhZGxpbmsoY2hh
ciAqcGF0aCwgY2hhciAqYnVmLCBzaXplX3QgYnVmc2l6ZSwgc3NpemVfdCAqc2l6ZSkKK3sKKwlp
bnQJCWVycm9yOworCXN0cnVjdCBkZW50cnkJKmRkcDsKKwljaGFyCQkqbmFtZTsKKwlzdHJ1Y3Qg
ZGVudHJ5CSpkcDsKKwlzdHJ1Y3Qgdm5vZGUJKnZwOworCXN0cnVjdCBpb3ZlYwl2ZWM7CisJc3Ry
dWN0IHVpbwl1aW87CisKKwkqc2l6ZSA9IDA7CisJZXJyb3IgPSBsb29rdXAocGF0aCwgJmRkcCwg
Jm5hbWUpOworCWlmIChlcnJvcikgeworCQlyZXR1cm4gKGVycm9yKTsKKwl9CisKKwllcnJvciA9
IG5hbWVpX2xhc3Rfbm9mb2xsb3cocGF0aCwgZGRwLCAmZHApOworCWlmIChlcnJvcikgeworCQlk
cmVsZShkZHApOworCQlyZXR1cm4gKGVycm9yKTsKKwl9CisKKwlpZiAoZHAtPmRfdm5vZGUtPnZf
dHlwZSAhPSBWTE5LKSB7CisJCWRyZWxlKGRwKTsKKwkJZHJlbGUoZGRwKTsKKwkJcmV0dXJuIChF
SU5WQUwpOworCX0KKwl2ZWMuaW92X2Jhc2UJPSBidWY7CisJdmVjLmlvdl9sZW4JPSBidWZzaXpl
OworCisJdWlvLnVpb19pb3YJPSAmdmVjOworCXVpby51aW9faW92Y250CT0gMTsKKwl1aW8udWlv
X29mZnNldAk9IDA7CisJdWlvLnVpb19yZXNpZAk9IGJ1ZnNpemU7CisJdWlvLnVpb19ydwk9IFVJ
T19SRUFEOworCisJdnAgPSBkcC0+ZF92bm9kZTsKKwl2bl9sb2NrKHZwKTsKKwllcnJvciA9IFZP
UF9SRUFETElOSyh2cCwgJnVpbyk7CisJdm5fdW5sb2NrKHZwKTsKKworCWRyZWxlKGRwKTsKKwlk
cmVsZShkZHApOworCisJaWYgKGVycm9yKSB7CisJCXJldHVybiAoZXJyb3IpOworCX0KKworCSpz
aXplID0gYnVmc2l6ZSAtIHVpby51aW9fcmVzaWQ7CisJcmV0dXJuICgwKTsKK30KKworLyoKKyAq
IENoZWNrIHRoZSB2YWxpZGl0eSBvZiB0aGUgbWVtYmVycyBvZiBhIHN0cnVjdCB0aW1ldmFsLgor
ICovCitzdGF0aWMgYm9vbCBpc190aW1ldmFsX3ZhbGlkKGNvbnN0IHN0cnVjdCB0aW1ldmFsICp0
aW1lKQoreworICAgIHJldHVybiAodGltZS0+dHZfc2VjID49IDApICYmCisgICAgICAgICAgICh0
aW1lLT50dl91c2VjID49IDAgJiYgdGltZS0+dHZfdXNlYyA8IDEwMDAwMDApOworfQorCisvKgor
ICogQ29udmVydCBhIHRpbWV2YWwgc3RydWN0IHRvIGEgdGltZXNwZWMgb25lLgorICovCitzdGF0
aWMgdm9pZCBjb252ZXJ0X3RpbWV2YWwoc3RydWN0IHRpbWVzcGVjICZ0bywgY29uc3Qgc3RydWN0
IHRpbWV2YWwgKmZyb20pCit7CisgICAgaWYgKGZyb20pIHsKKyAgICAgICAgdG8udHZfc2VjID0g
ZnJvbS0+dHZfc2VjOworICAgICAgICB0by50dl9uc2VjID0gZnJvbS0+dHZfdXNlYyAqIDEwMDA7
IC8vIENvbnZlcnQgbWljcm9zZWNvbmRzIHRvIG5hbm9zZWNvbmRzCisgICAgfSBlbHNlIHsKKyAg
ICAgICAgY2xvY2tfZ2V0dGltZShDTE9DS19SRUFMVElNRSwgJnRvKTsKKyAgICB9Cit9CisKK2lu
dAorc3lzX3V0aW1lcyhjaGFyICpwYXRoLCBjb25zdCBzdHJ1Y3QgdGltZXZhbCB0aW1lc1syXSwg
aW50IGZsYWdzKQoreworICAgIGludCBlcnJvcjsKKyAgICBzdHJ1Y3QgZGVudHJ5ICpkcDsKKyAg
ICBzdHJ1Y3QgdGltZXNwZWMgdGltZXNwZWNfdGltZXNbMl07CisKKyAgICBEUFJJTlRGKFZGU0RC
X1NZU0NBTEwsICgic3lzX3V0aW1lczogcGF0aD0lc1xuIiwgcGF0aCkpOworCisgICAgaWYgKHRp
bWVzICYmICghaXNfdGltZXZhbF92YWxpZCgmdGltZXNbMF0pIHx8ICFpc190aW1ldmFsX3ZhbGlk
KCZ0aW1lc1sxXSkpKQorICAgICAgICByZXR1cm4gRUlOVkFMOworCisgICAgLy8gQ29udmVydCBl
YWNoIGVsZW1lbnQgb2YgdGltZXZhbCBhcnJheSB0byB0aGUgdGltZXNwZWMgdHlwZQorICAgIGNv
bnZlcnRfdGltZXZhbCh0aW1lc3BlY190aW1lc1swXSwgdGltZXMgPyB0aW1lcyArIDAgOiBudWxs
cHRyKTsKKyAgICBjb252ZXJ0X3RpbWV2YWwodGltZXNwZWNfdGltZXNbMV0sIHRpbWVzID8gdGlt
ZXMgKyAxIDogbnVsbHB0cik7CisKKyAgICBpZiAoZmxhZ3MgJiBBVF9TWU1MSU5LX05PRk9MTE9X
KSB7CisgICAgICAgIHN0cnVjdCBkZW50cnkgKmRkcDsKKyAgICAgICAgZXJyb3IgPSBsb29rdXAo
cGF0aCwgJmRkcCwgbnVsbHB0cik7CisgICAgICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAg
cmV0dXJuIGVycm9yOworICAgICAgICB9CisKKyAgICAgICAgZXJyb3IgPSBuYW1laV9sYXN0X25v
Zm9sbG93KHBhdGgsIGRkcCwgJmRwKTsKKyAgICAgICAgaWYgKGRkcCAhPSBudWxscHRyKSB7Cisg
ICAgICAgICAgICBkcmVsZShkZHApOworICAgICAgICB9CisgICAgICAgIGlmIChlcnJvcikgewor
ICAgICAgICAgICAgcmV0dXJuIGVycm9yOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgZXJyb3IgPSBuYW1laShwYXRoLCAmZHApOworICAgICAgICBpZiAoZXJyb3IpCisgICAgICAg
ICAgICByZXR1cm4gZXJyb3I7CisgICAgfQorCisgICAgaWYgKGRwLT5kX21vdW50LT5tX2ZsYWdz
ICYgTU5UX1JET05MWSkgeworICAgICAgICBlcnJvciA9IEVST0ZTOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIGVycm9yID0gdm5fc2V0dGltZXMoZHAtPmRfdm5vZGUsIHRpbWVzcGVjX3RpbWVzKTsK
KyAgICB9CisKKyAgICBkcmVsZShkcCk7CisgICAgcmV0dXJuIGVycm9yOworfQorCisvKgorICog
Q2hlY2sgdGhlIHZhbGlkaXR5IG9mIG1lbWJlcnMgb2YgYSBzdHJ1Y3QgdGltZXNwZWMKKyAqLwor
c3RhdGljIGJvb2wgaXNfdGltZXNwZWNfdmFsaWQoY29uc3Qgc3RydWN0IHRpbWVzcGVjICZ0aW1l
KQoreworICAgIHJldHVybiAodGltZS50dl9zZWMgPj0gMCkgJiYKKwkgICAoKHRpbWUudHZfbnNl
YyA+PSAwICYmIHRpbWUudHZfbnNlYyA8PSA5OTk5OTk5OTkpIHx8CisJICAgIHRpbWUudHZfbnNl
YyA9PSBVVElNRV9OT1cgfHwKKwkgICAgdGltZS50dl9uc2VjID09IFVUSU1FX09NSVQpOworfQor
Cit2b2lkIGluaXRfdGltZXNwZWMoc3RydWN0IHRpbWVzcGVjICZfdGltZXMsIGNvbnN0IHN0cnVj
dCB0aW1lc3BlYyAqdGltZXMpCit7CisgICAgaWYgKHRpbWVzID09IG51bGxwdHIgfHwgdGltZXMt
PnR2X25zZWMgPT0gVVRJTUVfTk9XKSB7CisgICAgICAgIGNsb2NrX2dldHRpbWUoQ0xPQ0tfUkVB
TFRJTUUsICZfdGltZXMpOworICAgIH0gZWxzZSB7CisgICAgICAgIF90aW1lcy50dl9zZWMgPSB0
aW1lcy0+dHZfc2VjOworICAgICAgICBfdGltZXMudHZfbnNlYyA9IHRpbWVzLT50dl9uc2VjOwor
ICAgIH0KKyAgICByZXR1cm47Cit9CisKK2ludAorc3lzX3V0aW1lbnNhdChpbnQgZGlyZmQsIGNv
bnN0IGNoYXIgKnBhdGhuYW1lLCBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgdGltZXNbMl0sIGludCBm
bGFncykKK3sKKyAgICBpbnQgZXJyb3I7CisgICAgc3RkOjpzdHJpbmcgYXA7CisgICAgc3RydWN0
IHRpbWVzcGVjIHRpbWVzcGVjX3RpbWVzWzJdOworICAgIGV4dGVybiBzdHJ1Y3QgdGFzayAqbWFp
bl90YXNrOworICAgIHN0cnVjdCBkZW50cnkgKmRwOworCisgICAgLyogdXRpbWVuc2F0IHNob3Vs
ZCByZXR1cm4gRU5PRU5UIHdoZW4gcGF0aG5hbWUgaXMgZW1wdHkgKi8KKyAgICBpZihwYXRobmFt
ZSAmJiBwYXRobmFtZVswXSA9PSAwKQorICAgICAgICByZXR1cm4gRU5PRU5UOworCisgICAgaWYg
KGZsYWdzICYmICEoZmxhZ3MgJiBBVF9TWU1MSU5LX05PRk9MTE9XKSkKKyAgICAgICAgcmV0dXJu
IEVJTlZBTDsKKworICAgIGlmICh0aW1lcyAmJiAoIWlzX3RpbWVzcGVjX3ZhbGlkKHRpbWVzWzBd
KSB8fCAhaXNfdGltZXNwZWNfdmFsaWQodGltZXNbMV0pKSkKKyAgICAgICAgcmV0dXJuIEVJTlZB
TDsKKworICAgIGluaXRfdGltZXNwZWModGltZXNwZWNfdGltZXNbMF0sIHRpbWVzID8gdGltZXMg
KyAwIDogbnVsbHB0cik7CisgICAgaW5pdF90aW1lc3BlYyh0aW1lc3BlY190aW1lc1sxXSwgdGlt
ZXMgPyB0aW1lcyArIDEgOiBudWxscHRyKTsKKworICAgIGlmIChwYXRobmFtZSAmJiBwYXRobmFt
ZVswXSA9PSAnLycpIHsKKwlhcCA9IHBhdGhuYW1lOworICAgIH0gZWxzZSBpZiAoZGlyZmQgPT0g
QVRfRkRDV0QpIHsKKwlpZiAoIXBhdGhuYW1lKQorCSAgICByZXR1cm4gRUZBVUxUOworCWFwID0g
c3RkOjpzdHJpbmcobWFpbl90YXNrLT50X2N3ZCkgKyAiLyIgKyBwYXRobmFtZTsKKyAgICB9IGVs
c2UgeworICAgICAgICBzdHJ1Y3QgZmlsZSAqZnA7CisgICAgICAgIGZpbGVyZWYgZihmaWxlcmVm
X2Zyb21fZmQoZGlyZmQpKTsKKworICAgICAgICBpZiAoIWYpCisJICAgIHJldHVybiBFQkFERjsK
KworCWZwID0gZi5nZXQoKTsKKworCWlmKCFmcC0+Zl9kZW50cnkpCisJICAgIHJldHVybiBFQkFE
RjsKKworCWlmICghKGZwLT5mX2RlbnRyeS0+ZF92bm9kZS0+dl90eXBlICYgVkRJUikpCisJICAg
IHJldHVybiBFTk9URElSOworCisJaWYgKHBhdGhuYW1lKQorCSAgICBhcCA9IHN0ZDo6c3RyaW5n
KGZwLT5mX2RlbnRyeS0+ZF9wYXRoKSArICIvIiArIHBhdGhuYW1lOworCWVsc2UKKwkgICAgYXAg
PSBmcC0+Zl9kZW50cnktPmRfcGF0aDsKKworCWFwID0gc3RkOjpzdHJpbmcoZnAtPmZfZGVudHJ5
LT5kX21vdW50LT5tX3BhdGgpICsgIi8iICsgYXA7CisgICAgfQorCisgICAgLyogRklYTUU6IEFk
ZCBzdXBwb3J0IGZvciBBVF9TWU1MSU5LX05PRk9MTE9XICovCisKKyAgICBlcnJvciA9IG5hbWVp
KGFwLmNfc3RyKCksICZkcCk7CisKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIHJldHVybiBlcnJv
cjsKKworICAgIGlmIChkcC0+ZF9tb3VudC0+bV9mbGFncyAmIE1OVF9SRE9OTFkpIHsKKyAgICAg
ICAgZXJyb3IgPSBFUk9GUzsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAodm5fYWNjZXNzKGRw
LT5kX3Zub2RlLCBWV1JJVEUpKSB7CisgICAgICAgICAgICByZXR1cm4gRUFDQ0VTOworICAgICAg
ICB9CisJICAgIGlmICh0aW1lcyAmJgorICAgICAgICAgICAgICAgKHRpbWVzWzBdLnR2X25zZWMg
IT0gVVRJTUVfTk9XIHx8IHRpbWVzWzFdLnR2X25zZWMgIT0gVVRJTUVfTk9XKSAmJgorICAgICAg
ICAgICAgICAgKHRpbWVzWzBdLnR2X25zZWMgIT0gVVRJTUVfT01JVCB8fCB0aW1lc1sxXS50dl9u
c2VjICE9IFVUSU1FX09NSVQpICYmCisJICAgICAgICghKGRwLT5kX3Zub2RlLT52X21vZGUgJiB+
VkFQUEVORCkpKQorCSAgICAgICAgcmV0dXJuIEVQRVJNOworICAgICAgICBlcnJvciA9IHZuX3Nl
dHRpbWVzKGRwLT5kX3Zub2RlLCB0aW1lc3BlY190aW1lcyk7CisgICAgfQorCisgICAgZHJlbGUo
ZHApOworICAgIHJldHVybiBlcnJvcjsKK30KKworaW50CitzeXNfZnV0aW1lbnMoaW50IGZkLCBj
b25zdCBzdHJ1Y3QgdGltZXNwZWMgdGltZXNbMl0pCit7CisgICAgc3RydWN0IGZpbGUgKmZwOwor
CisgICAgZmlsZXJlZiBmKGZpbGVyZWZfZnJvbV9mZChmZCkpOworICAgIGlmICghZikKKyAgICAg
ICAgcmV0dXJuIEVCQURGOworCisgICAgZnAgPSBmLmdldCgpOworCisgICAgaWYgKCFmcC0+Zl9k
ZW50cnkpCisgICAgICAgIHJldHVybiBFQkFERjsKKworICAgIHN0ZDo6c3RyaW5nIHBhdGhuYW1l
ID0gZnAtPmZfZGVudHJ5LT5kX3BhdGg7CisgICAgYXV0byBlcnJvciA9IHN5c191dGltZW5zYXQo
QVRfRkRDV0QsIHBhdGhuYW1lLmNfc3RyKCksIHRpbWVzLCAwKTsKKyAgICByZXR1cm4gZXJyb3I7
Cit9CisKK2ludAorc3lzX2ZhbGxvY2F0ZShzdHJ1Y3QgZmlsZSAqZnAsIGludCBtb2RlLCBsb2Zm
X3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuKQoreworICAgIGludCBlcnJvcjsKKyAgICBzdHJ1Y3Qgdm5v
ZGUgKnZwOworCisgICAgRFBSSU5URihWRlNEQl9TWVNDQUxMLCAoInN5c19mYWxsb2NhdGU6IGZw
PSV4IiwgZnApKTsKKworICAgIGlmICghZnAtPmZfZGVudHJ5IHx8ICEoZnAtPmZfZmxhZ3MgJiBG
V1JJVEUpKSB7CisgICAgICAgIHJldHVybiBFQkFERjsKKyAgICB9CisKKyAgICBpZiAob2Zmc2V0
IDwgMCB8fCBsZW4gPD0gMCkgeworICAgICAgICByZXR1cm4gRUlOVkFMOworICAgIH0KKworICAg
IC8vIFN0cmFuZ2UsIGJ1dCB0aGF0J3Mgd2hhdCBMaW51eCByZXR1cm5zLgorICAgIGlmICgobW9k
ZSAmIEZBTExPQ19GTF9QVU5DSF9IT0xFKSAmJiAhKG1vZGUgJiBGQUxMT0NfRkxfS0VFUF9TSVpF
KSkgeworICAgICAgICByZXR1cm4gRU5PVFNVUDsKKyAgICB9CisKKyAgICB2cCA9IGZwLT5mX2Rl
bnRyeS0+ZF92bm9kZTsKKyAgICB2bl9sb2NrKHZwKTsKKworICAgIC8vIE5PVEU6IEl0J3Mgbm90
IGRldGVjdGVkIGhlcmUgd2hldGhlciBvciBub3QgdGhlIGRldmljZSB1bmRlcmx5aW5nCisgICAg
Ly8gdGhlIGZzIGlzIGEgYmxvY2sgZGV2aWNlLiBJdCdzIHVwIHRvIHRoZSBmcyBpdHNlbGYgdGVs
bCB1cyB3aGV0aGVyCisgICAgLy8gb3Igbm90IGZhbGxvY2F0ZSBpcyBzdXBwb3J0ZWQuIFNlZSBi
ZWxvdzoKKyAgICBpZiAodnAtPnZfdHlwZSAhPSBWUkVHICYmIHZwLT52X3R5cGUgIT0gVkRJUikg
eworICAgICAgICBlcnJvciA9IEVOT0RFVjsKKyAgICAgICAgZ290byByZXQ7CisgICAgfQorCisg
ICAgLy8gRU9QTk9UU1VQUCBoZXJlIG1lYW5zIHRoYXQgdGhlIHVuZGVybHlpbmcgZmlsZSBzeXN0
ZW0KKyAgICAvLyByZWZlcnJlZCBieSB2cCBkb2Vzbid0IHN1cHBvcnQgZmFsbG9jYXRlLgorICAg
IGlmICghdnAtPnZfb3AtPnZvcF9mYWxsb2NhdGUpIHsKKyAgICAgICAgZXJyb3IgPSBFT1BOT1RT
VVBQOworICAgICAgICBnb3RvIHJldDsKKyAgICB9CisKKyAgICBlcnJvciA9IFZPUF9GQUxMT0NB
VEUodnAsIG1vZGUsIG9mZnNldCwgbGVuKTsKK3JldDoKKyAgICB2bl91bmxvY2sodnApOworICAg
IHJldHVybiBlcnJvcjsKK30KKworaW50CitzeXNfY2htb2QoY29uc3QgY2hhciAqcGF0aCwgbW9k
ZV90IG1vZGUpCit7CisgICAgaW50IGVycm9yOworICAgIHN0cnVjdCBkZW50cnkgKmRwOworICAg
IERQUklOVEYoVkZTREJfU1lTQ0FMTCwgKCJzeXNfY2htb2Q6IHBhdGg9JXNcbiIsIHBhdGgpKTsK
KyAgICBlcnJvciA9IG5hbWVpKHBhdGgsICZkcCk7CisgICAgaWYgKGVycm9yKQorICAgICAgICBy
ZXR1cm4gZXJyb3I7CisgICAgaWYgKGRwLT5kX21vdW50LT5tX2ZsYWdzICYgTU5UX1JET05MWSkg
eworICAgICAgICBlcnJvciA9IEVST0ZTOworICAgIH0gZWxzZSB7CisgICAgICAgIGVycm9yID0g
dm5fc2V0bW9kZShkcC0+ZF92bm9kZSwgbW9kZSk7CisgICAgfQorICAgIGRyZWxlKGRwKTsKKyAg
ICByZXR1cm4gZXJyb3I7Cit9CisKK2ludAorc3lzX2ZjaG1vZChpbnQgZmQsIG1vZGVfdCBtb2Rl
KQoreworICAgIGZpbGVyZWYgZihmaWxlcmVmX2Zyb21fZmQoZmQpKTsKKyAgICBpZiAoIWYpCisg
ICAgICAgIHJldHVybiBFQkFERjsKKyAgICAvLyBQb3NpeCBpcyBhbWJpdmFsZW50IG9uIHdoYXQg
ZmNobW9kKCkgc2hvdWxkIGRvIG9uIGFuIGZkIHRoYXQgZG9lcyBub3QKKyAgICAvLyByZWZlciB0
byBhIHJlYWwgZmlsZS4gSXQgc3VnZ2VzdHMgYW4gaW1wbGVtZW50YXRpb24gbWF5IChidXQgbm90
IG11c3QpCisgICAgLy8gZmFpbCBFSU5WQUwgb24gYSBwaXBlLCBjYW4gYmVoYXZlIGluIGFuICJ1
bnNwZWNpZmllZCIgbWFubmVyIG9uIGEKKyAgICAvLyBzb2NrZXQsIGFuZCBmb3IgYSBTVFJFQU0s
IGl0IG11c3Qgc3VjY2VlZCBhbmQgZG8gbm90aGluZy4gTGludXggc2VlbXMKKyAgICAvLyB0byBq
dXN0IGRvIHRoZSBsYXN0IHRoaW5nIChkbyBub3RoaW5nIGFuZCBzdWNjZWVkKS4KKyAgICBpZiAo
IWYtPmZfZGVudHJ5KSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBpZiAoZi0+Zl9k
ZW50cnktPmRfbW91bnQtPm1fZmxhZ3MgJiBNTlRfUkRPTkxZKSB7CisgICAgICAgIHJldHVybiBF
Uk9GUzsKKyAgICB9IGVsc2UgeworICAgICAgICByZXR1cm4gdm5fc2V0bW9kZShmLT5mX2RlbnRy
eS0+ZF92bm9kZSwgbW9kZSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvdGFz
ay5jIGIvbGliL3Zmc2NvcmUvdGFzay5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwLi43YTM1NTAzNAotLS0gL2Rldi9udWxsCisrKyBiL2xpYi92ZnNjb3JlL3Rhc2suYwpAQCAt
MCwwICsxLDE2NyBAQAorLyotCisgKiBDb3B5cmlnaHQgKGMpIDIwMDcsIEtvaHN1a2UgT2h0YW5p
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9m
IHRoZSBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBhbnkgY28tY29udHJpYnV0b3JzCisgKiAgICBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRo
aXMgc29mdHdhcmUKKyAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhP
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisK
Ky8qCisgKiB2ZnNfdGFzay5jIC0gUm91dGluZXMgdG8gbWFuYWdlIHRoZSBwZXIgdGFzayBkYXRh
LgorICovCisKKworI2luY2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2lu
Y2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4K
KworI2luY2x1ZGUgPG9zdi9wcmV4Lmg+CisjaW5jbHVkZSAidmZzLmgiCisKKy8qCisgKiBBbGxv
Y2F0ZSBuZXcgdGFzay4KKyAqLworaW50Cit0YXNrX2FsbG9jKHN0cnVjdCB0YXNrICoqcHQpCit7
CisJc3RydWN0IHRhc2sgKnQ7CisKKyAgICAvLyBGSVhNRTogd2hlcmUgZG8gd2UgZnJlZSB0YXNr
ID8KKwlpZiAoISh0ID0gbmV3IHRhc2spKQorCQlyZXR1cm4gRU5PTUVNOworCW1lbXNldCh0LCAw
LCBzaXplb2Yoc3RydWN0IHRhc2spKTsKKwlzdHJsY3B5KHQtPnRfY3dkLCAiLyIsIHNpemVvZih0
LT50X2N3ZCkpOworCisJKnB0ID0gdDsKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIENvbnZlcnQg
dG8gZnVsbCBwYXRoIGZyb20gdGhlIGN3ZCBvZiB0YXNrIGFuZCBwYXRoLgorICogQHdkOiAgIHdv
cmtpbmcgZGlyZWN0b3J5CisgKiBAcGF0aDogdGFyZ2V0IHBhdGgKKyAqIEBmdWxsOiBmdWxsIHBh
dGggdG8gYmUgcmV0dXJuZWQKKyAqLworaW50CitwYXRoX2NvbnYoY2hhciAqd2QsIGNvbnN0IGNo
YXIgKmNwYXRoLCBjaGFyICpmdWxsKQoreworCWNoYXIgcGF0aFtQQVRIX01BWF07CisJY2hhciAq
c3JjLCAqdGd0LCAqcCwgKmVuZDsKKwlzaXplX3QgbGVuID0gMDsKKworCXN0cmxjcHkocGF0aCwg
Y3BhdGgsIFBBVEhfTUFYKTsKKwlwYXRoW1BBVEhfTUFYIC0gMV0gPSAnXDAnOworCisJbGVuID0g
c3RybGVuKHBhdGgpOworCWlmIChsZW4gPj0gUEFUSF9NQVgpCisJCXJldHVybiBFTkFNRVRPT0xP
Tkc7CisJaWYgKHN0cmxlbih3ZCkgKyBsZW4gPj0gUEFUSF9NQVgpCisJCXJldHVybiBFTkFNRVRP
T0xPTkc7CisJc3JjID0gcGF0aDsKKwl0Z3QgPSBmdWxsOworCWVuZCA9IHNyYyArIGxlbjsKKwlp
ZiAocGF0aFswXSA9PSAnLycpIHsKKwkJKnRndCsrID0gKnNyYysrOworCQlsZW4gPSAxOworCX0g
ZWxzZSB7CisJCXN0cmxjcHkoZnVsbCwgd2QsIFBBVEhfTUFYKTsKKwkJbGVuID0gc3RybGVuKHdk
KTsKKwkJdGd0ICs9IGxlbjsKKwkJaWYgKGxlbiA+IDEgJiYgcGF0aFswXSAhPSAnLicpIHsKKwkJ
CSp0Z3QgPSAnLyc7CisJCQl0Z3QrKzsKKwkJCWxlbisrOworCQl9CisJfQorCXdoaWxlICgqc3Jj
KSB7CisJCXAgPSBzcmM7CisJCXdoaWxlICgqcCAhPSAnLycgJiYgKnAgIT0gJ1wwJykKKwkJCXAr
KzsKKwkJKnAgPSAnXDAnOworCQlpZiAoIXN0cmNtcChzcmMsICIuLiIpKSB7CisJCQlpZiAobGVu
ID49IDIpIHsKKwkJCQlsZW4gLT0gMjsKKwkJCQl0Z3QgLT0gMjsJLyogc2tpcCBwcmV2aW91cyAn
LycgKi8KKwkJCQl3aGlsZSAoKnRndCAhPSAnLycpIHsKKwkJCQkJdGd0LS07CisJCQkJCWxlbi0t
OworCQkJCX0KKwkJCQlpZiAobGVuID09IDApIHsKKwkJCQkJdGd0Kys7CisJCQkJCWxlbisrOwor
CQkJCX0KKwkJCX0KKwkJfSBlbHNlIGlmICghc3RyY21wKHNyYywgIi4iKSkgeworCQkJLyogSWdu
b3JlICIuIiAqLworCQl9IGVsc2UgeworCQkJd2hpbGUgKCpzcmMgIT0gJ1wwJykgeworCQkJCSp0
Z3QrKyA9ICpzcmMrKzsKKwkJCQlsZW4rKzsKKwkJCX0KKwkJfQorCQlpZiAocCA9PSBlbmQpCisJ
CQlicmVhazsKKwkJaWYgKGxlbiA+IDAgJiYgKih0Z3QgLSAxKSAhPSAnLycpIHsKKwkJCSp0Z3Qr
KyA9ICcvJzsKKwkJCWxlbisrOworCQl9CisJCXNyYyA9IHAgKyAxOworCX0KKwkqdGd0ID0gJ1ww
JzsKKworCXJldHVybiAoMCk7Cit9CisKKy8qCisgKiBDb252ZXJ0IHRvIGZ1bGwgcGF0aCBmcm9t
IHRoZSBjd2Qgb2YgdGFzayBhbmQgcGF0aC4KKyAqIEB0OiAgICB0YXNrIHN0cnVjdHVyZQorICog
QHBhdGg6IHRhcmdldCBwYXRoCisgKiBAZnVsbDogZnVsbCBwYXRoIHRvIGJlIHJldHVybmVkCisg
KiBAYWNjOiBhY2Nlc3MgbW9kZQorICovCitpbnQKK3Rhc2tfY29udihzdHJ1Y3QgdGFzayAqdCwg
Y29uc3QgY2hhciAqY3BhdGgsIGludCBhY2MsIGNoYXIgKmZ1bGwpCit7CisJaW50IHJjOworCisJ
cmMgPSBwYXRoX2NvbnYodC0+dF9jd2QsIGNwYXRoLCBmdWxsKTsKKwlpZiAocmMgIT0gMCkgewor
CQlyZXR1cm4gKHJjKTsKKwl9CisKKwkvKiBDaGVjayBpZiB0aGUgY2xpZW50IHRhc2sgaGFzIHJl
cXVpcmVkIHBlcm1pc3Npb24gKi8KKwlyZXR1cm4gKDApOyAvL3NlY19maWxlX3Blcm1pc3Npb24o
dC0+dF90YXNraWQsIGZ1bGwsIGFjYyk7Cit9CisKKy8qCisgKiBTYWZlIGNvcHlpbmcgZnVuY3Rp
b24gdGhhdCBjaGVja3MgZm9yIG92ZXJmbG93LgorICovCitpbnQgdmZzX2RuYW1lX2NvcHkoY2hh
ciAqZGVzdCwgY29uc3QgY2hhciAqc3JjLCBzaXplX3Qgc2l6ZSkKK3sKKyAgICBpZiAoc3RybGNw
eShkZXN0LCBzcmMsIHNpemUpID49IHNpemUpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0K
KyAgICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3Zmcy5oIGIvbGliL3Zm
c2NvcmUvdmZzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLmQ4NmVmOTU3
Ci0tLSAvZGV2L251bGwKKysrIGIvbGliL3Zmc2NvcmUvdmZzLmgKQEAgLTAsMCArMSwxODkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDUtMjAwNywgS29oc3VrZSBPaHRhbmkKKyAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBh
dXRob3Igbm9yIHRoZSBuYW1lcyBvZiBhbnkgY28tY29udHJpYnV0b3JzCisgKiAgICBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29m
dHdhcmUKKyAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgX1ZGU19ICisjZGVmaW5lIF9WRlNfSAorCisjaW5jbHVkZSA8c3lzL2NkZWZzLmg+CisjaW5j
bHVkZSA8YXNzZXJ0Lmg+CisjaW5jbHVkZSA8ZGlyZW50Lmg+CisjaW5jbHVkZSA8bGltaXRzLmg+
CisKKyNpbmNsdWRlIDxvc3YvcHJleC5oPgorI2luY2x1ZGUgPG9zdi9maWxlLmg+CisjaW5jbHVk
ZSA8b3N2L21vdW50Lmg+CisjaW5jbHVkZSA8b3N2L3Zub2RlLmg+CisjaW5jbHVkZSA8b3N2L2Rl
bnRyeS5oPgorI2luY2x1ZGUgPG9zdi9lcnJvci5oPgorCisvKgorICogSW1wb3J0IHZub2RlIGF0
dHJpYnV0ZXMgZmxhZ3MKKyAqLworI2luY2x1ZGUgPG9zdi92bm9kZV9hdHRyLmg+CisKKy8qICNk
ZWZpbmUgREVCVUdfVkZTIDEgKi8KKworLyoKKyAqIFR1bmFibGUgcGFyYW1ldGVycworICovCisj
ZGVmaW5lIEZTTUFYTkFNRVMJMTYJCS8qIG1heCBsZW5ndGggb2YgJ2ZpbGUgc3lzdGVtJyBuYW1l
ICovCisKKyNpZmRlZiBERUJVR19WRlMKKyNpbmNsdWRlIDxvc3YvZGVidWcuaD4KKworZXh0ZXJu
IGludCB2ZnNfZGVidWc7CisKKyNkZWZpbmUJVkZTREJfQ09SRQkweDAwMDAwMDAxCisjZGVmaW5l
CVZGU0RCX1NZU0NBTEwJMHgwMDAwMDAwMgorI2RlZmluZQlWRlNEQl9WTk9ERQkweDAwMDAwMDA0
CisjZGVmaW5lCVZGU0RCX0JJTwkweDAwMDAwMDA4CisjZGVmaW5lCVZGU0RCX0NBUAkweDAwMDAw
MDEwCisKKyNkZWZpbmUgVkZTREJfRkxBR1MJMHgwMDAwMDAxMworCisjZGVmaW5lCURQUklOVEYo
X20sWCkJaWYgKHZmc19kZWJ1ZyAmIChfbSkpIGtwcmludGYgWAorI2Vsc2UKKyNkZWZpbmUJRFBS
SU5URihfbSwgWCkKKyNlbmRpZgorCisjZGVmaW5lIEFTU0VSVChlKQlhc3NlcnQoZSkKKworI2Rl
ZmluZSBPUEVOX01BWAkyNTYKKworLyoKKyAqIHBlciB0YXNrIGRhdGEKKyAqLworc3RydWN0IHRh
c2sgeworCWNoYXIgCSAgICB0X2N3ZFtQQVRIX01BWF07CS8qIGN1cnJlbnQgd29ya2luZyBkaXJl
Y3RvcnkgKi8KKwlzdHJ1Y3QgZmlsZSAqdF9jd2RmcDsJCS8qIGRpcmVjdG9yeSBmb3IgY3dkICov
Cit9OworCitleHRlcm4gY29uc3Qgc3RydWN0IHZmc3N3IHZmc3N3W107CisKK19fQkVHSU5fREVD
TFMKK2ludAkgc3lzX29wZW4oY2hhciAqcGF0aCwgaW50IGZsYWdzLCBtb2RlX3QgbW9kZSwgc3Ry
dWN0IGZpbGUgKipmcCk7CitpbnQJIHN5c19yZWFkKHN0cnVjdCBmaWxlICpmcCwgY29uc3Qgc3Ry
dWN0IGlvdmVjICppb3YsIHNpemVfdCBuaW92LAorCQlvZmZfdCBvZmZzZXQsIHNpemVfdCAqY291
bnQpOworaW50CSBzeXNfd3JpdGUoc3RydWN0IGZpbGUgKmZwLCBjb25zdCBzdHJ1Y3QgaW92ZWMg
Kmlvdiwgc2l6ZV90IG5pb3YsCisJCW9mZl90IG9mZnNldCwgc2l6ZV90ICpjb3VudCk7CitpbnQJ
IHN5c19sc2VlayhzdHJ1Y3QgZmlsZSAqZnAsIG9mZl90IG9mZiwgaW50IHR5cGUsIG9mZl90ICog
Y3VyX29mZik7CitpbnQJIHN5c19pb2N0bChzdHJ1Y3QgZmlsZSAqZnAsIHVfbG9uZyByZXF1ZXN0
LCB2b2lkICpidWYpOworaW50CSBzeXNfZnN0YXQoc3RydWN0IGZpbGUgKmZwLCBzdHJ1Y3Qgc3Rh
dCAqc3QpOworaW50CSBzeXNfZnN0YXRmcyhzdHJ1Y3QgZmlsZSAqZnAsIHN0cnVjdCBzdGF0ZnMg
KmJ1Zik7CitpbnQJIHN5c19mc3luYyhzdHJ1Y3QgZmlsZSAqZnApOworaW50CSBzeXNfZnRydW5j
YXRlKHN0cnVjdCBmaWxlICpmcCwgb2ZmX3QgbGVuZ3RoKTsKKworaW50CSBzeXNfcmVhZGRpcihz
dHJ1Y3QgZmlsZSAqZnAsIHN0cnVjdCBkaXJlbnQgKmRpcmVudCk7CitpbnQJIHN5c19yZXdpbmRk
aXIoc3RydWN0IGZpbGUgKmZwKTsKK2ludAkgc3lzX3NlZWtkaXIoc3RydWN0IGZpbGUgKmZwLCBs
b25nIGxvYyk7CitpbnQJIHN5c190ZWxsZGlyKHN0cnVjdCBmaWxlICpmcCwgbG9uZyAqbG9jKTsK
K2ludAkgc3lzX2ZjaGRpcihzdHJ1Y3QgZmlsZSAqZnAsIGNoYXIgKnBhdGgpOworCitpbnQJIHN5
c19ta2RpcihjaGFyICpwYXRoLCBtb2RlX3QgbW9kZSk7CitpbnQJIHN5c19ybWRpcihjaGFyICpw
YXRoKTsKK2ludAkgc3lzX21rbm9kKGNoYXIgKnBhdGgsIG1vZGVfdCBtb2RlKTsKK2ludAkgc3lz
X3JlbmFtZShjaGFyICpzcmMsIGNoYXIgKmRlc3QpOworaW50CSBzeXNfbGluayhjaGFyICpvbGRw
YXRoLCBjaGFyICpuZXdwYXRoKTsKK2ludAkgc3lzX3VubGluayhjaGFyICpwYXRoKTsKK2ludAkg
c3lzX3N5bWxpbmsoY29uc3QgY2hhciAqb2xkcGF0aCwgY29uc3QgY2hhciAqbmV3cGF0aCk7Citp
bnQJIHN5c19hY2Nlc3MoY2hhciAqcGF0aCwgaW50IG1vZGUpOworaW50CSBzeXNfc3RhdChjaGFy
ICpwYXRoLCBzdHJ1Y3Qgc3RhdCAqc3QpOworaW50CSBzeXNfbHN0YXQoY2hhciAqcGF0aCwgc3Ry
dWN0IHN0YXQgKnN0KTsKK2ludAkgc3lzX3N0YXRmcyhjaGFyICpwYXRoLCBzdHJ1Y3Qgc3RhdGZz
ICpidWYpOworaW50CSBzeXNfdHJ1bmNhdGUoY2hhciAqcGF0aCwgb2ZmX3QgbGVuZ3RoKTsKK2lu
dAkgc3lzX3JlYWRsaW5rKGNoYXIgKnBhdGgsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnNpemUsIHNz
aXplX3QgKnNpemUpOworaW50ICBzeXNfdXRpbWVzKGNoYXIgKnBhdGgsIGNvbnN0IHN0cnVjdCB0
aW1ldmFsIHRpbWVzWzJdLCBpbnQgZmxhZ3MpOworaW50ICBzeXNfdXRpbWVuc2F0KGludCBkaXJm
ZCwgY29uc3QgY2hhciAqcGF0aG5hbWUsCisgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0
IHRpbWVzcGVjIHRpbWVzWzJdLCBpbnQgZmxhZ3MpOworaW50ICBzeXNfZnV0aW1lbnMoaW50IGZk
LCBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgdGltZXNbMl0pOworaW50ICBzeXNfZmFsbG9jYXRlKHN0
cnVjdCBmaWxlICpmcCwgaW50IG1vZGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4pOworCitp
bnQJIHN5c19tb3VudChjb25zdCBjaGFyICpkZXYsIGNvbnN0IGNoYXIgKmRpciwgY29uc3QgY2hh
ciAqZnNuYW1lLCBpbnQgZmxhZ3MsIGNvbnN0IHZvaWQgKmRhdGEpOworaW50CSBzeXNfdW1vdW50
Mihjb25zdCBjaGFyICpwYXRoLCBpbnQgZmxhZ3MpOworaW50CSBzeXNfdW1vdW50KGNvbnN0IGNo
YXIgKnBhdGgpOworaW50CSBzeXNfcGl2b3Rfcm9vdChjb25zdCBjaGFyICpuZXdfcm9vdCwgY29u
c3QgY2hhciAqb2xkX3B1dCk7CitpbnQJIHN5c19zeW5jKHZvaWQpOworaW50CSBzeXNfY2htb2Qo
Y29uc3QgY2hhciAqcGF0aCwgbW9kZV90IG1vZGUpOworaW50CSBzeXNfZmNobW9kKGludCBmZCwg
bW9kZV90IG1vZGUpOworCisKK2ludAkgdGFza19hbGxvYyhzdHJ1Y3QgdGFzayAqKnB0KTsKK2lu
dAkgdGFza19jb252KHN0cnVjdCB0YXNrICp0LCBjb25zdCBjaGFyICpwYXRoLCBpbnQgbW9kZSwg
Y2hhciAqZnVsbCk7CitpbnQJIHBhdGhfY29udihjaGFyICp3ZCwgY29uc3QgY2hhciAqY3BhdGgs
IGNoYXIgKmZ1bGwpOworCisvL2ludAkgc2VjX2ZpbGVfcGVybWlzc2lvbih0YXNrX3QgdGFzaywg
Y2hhciAqcGF0aCwgaW50IG1vZGUpOworaW50CSBzZWNfdm5vZGVfcGVybWlzc2lvbihjaGFyICpw
YXRoKTsKKworaW50ICAgICBuYW1laShjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3QgZGVudHJ5ICoq
ZHBwKTsKK2ludAkgbmFtZWlfbGFzdF9ub2ZvbGxvdyhjaGFyICpwYXRoLCBzdHJ1Y3QgZGVudHJ5
ICpkZHAsIHN0cnVjdCBkZW50cnkgKipkcCk7CitpbnQJIGxvb2t1cChjaGFyICpwYXRoLCBzdHJ1
Y3QgZGVudHJ5ICoqZHBwLCBjaGFyICoqbmFtZSk7Cit2b2lkCSB2bm9kZV9pbml0KHZvaWQpOwor
dm9pZAkgbG9va3VwX2luaXQodm9pZCk7CisKK2ludCAgICAgdmZzX2ZpbmRyb290KGNvbnN0IGNo
YXIgKnBhdGgsIHN0cnVjdCBtb3VudCAqKm1wLCBjaGFyICoqcm9vdCk7CitpbnQJIHZmc19kbmFt
ZV9jb3B5KGNoYXIgKmRlc3QsIGNvbnN0IGNoYXIgKnNyYywgc2l6ZV90IHNpemUpOworCitpbnQJ
IGZzX25vb3Aodm9pZCk7CisKK3N0cnVjdCBkZW50cnkgKmRlbnRyeV9hbGxvYyhzdHJ1Y3QgZGVu
dHJ5ICpwYXJlbnRfZHAsIHN0cnVjdCB2bm9kZSAqdnAsIGNvbnN0IGNoYXIgKnBhdGgpOworc3Ry
dWN0IGRlbnRyeSAqZGVudHJ5X2xvb2t1cChzdHJ1Y3QgbW91bnQgKm1wLCBjaGFyICpwYXRoKTsK
K3ZvaWQgZGVudHJ5X21vdmUoc3RydWN0IGRlbnRyeSAqZHAsIHN0cnVjdCBkZW50cnkgKnBhcmVu
dF9kcCwgY2hhciAqcGF0aCk7Cit2b2lkIGRlbnRyeV9yZW1vdmUoc3RydWN0IGRlbnRyeSAqZHAp
Owordm9pZCBkcmVmKHN0cnVjdCBkZW50cnkgKmRwKTsKK3ZvaWQgZHJlbGUoc3RydWN0IGRlbnRy
eSAqZHApOwordm9pZCBkZW50cnlfaW5pdCh2b2lkKTsKKworI2lmZGVmIERFQlVHX1ZGUwordm9p
ZAkgdm5vZGVfZHVtcCh2b2lkKTsKK3ZvaWQJIG1vdW50X2R1bXAodm9pZCk7CisjZW5kaWYKKwor
X19FTkRfREVDTFMKKworI2lmZGVmIF9fY3BsdXNwbHVzCisKKy8vIENvbnZlcnQgYSBwYXRoIHRv
IGEgZGVudHJ5X3JlZi4gIFJldHVybnMgYW4gZW1wdHkKKy8vIHJlZmVyZW5jZSBpZiBub3QgZm91
bmQgKEVOT0VOVCkgZm9yIGVmZmljaWVuY3ksIHRocm93cworLy8gYW4gZXJyb3Igb24gb3RoZXIg
ZXJyb3JzLgoraW5saW5lIGRlbnRyeV9yZWYgbmFtZWkoY2hhciogcGF0aCkKK3sKKwlkZW50cnkq
IGRwOworCWF1dG8gZXJyID0gbmFtZWkocGF0aCwgJmRwKTsKKwlpZiAoZXJyID09IEVOT0VOVCkg
eworCQlyZXR1cm4gZGVudHJ5X3JlZigpOworCX0gZWxzZSBpZiAoZXJyKSB7CisJCXRocm93IG1h
a2VfZXJyb3IoZXJyKTsKKwl9IGVsc2UgeworCQlyZXR1cm4gZGVudHJ5X3JlZihkcCwgZmFsc2Up
OworCX0KK30KKworI2VuZGlmCisKKyNlbmRpZiAvKiAhX1ZGU19IICovCmRpZmYgLS1naXQgYS9s
aWIvdmZzY29yZS92bm9kZS5jIGIvbGliL3Zmc2NvcmUvdm5vZGUuYwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMC4uYTI5MjM0NGYKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvdmZz
Y29yZS92bm9kZS5jCkBAIC0wLDAgKzEsNTIyIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA1
LTIwMDgsIEtvaHN1a2UgT2h0YW5pCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgYW55
IGNvLWNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCisgKiAgICB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICog
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAq
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
CisgKiBTVUNIIERBTUFHRS4KKyAqLworCisvKgorICogdmZzX3Zub2RlLmMgLSB2bm9kZSBzZXJ2
aWNlCisgKi8KKworI2luY2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2lu
Y2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+
CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorCisjaW5jbHVkZSA8
b3N2L3ByZXguaD4KKyNpbmNsdWRlIDxvc3Yvdm5vZGUuaD4KKyNpbmNsdWRlICJ2ZnMuaCIKKwor
ZW51bSB2dHlwZSBpZnRvdnRfdGFiWzE2XSA9IHsKKwlWTk9OLCBWRklGTywgVkNIUiwgVk5PTiwg
VkRJUiwgVk5PTiwgVkJMSywgVk5PTiwKKwlWUkVHLCBWTk9OLCBWTE5LLCBWTk9OLCBWU09DSywg
Vk5PTiwgVk5PTiwgVkJBRCwKK307CitpbnQgdnR0b2lmX3RhYlsxMF0gPSB7CisJMCwgU19JRlJF
RywgU19JRkRJUiwgU19JRkJMSywgU19JRkNIUiwgU19JRkxOSywKKwlTX0lGU09DSywgU19JRklG
TywgU19JRk1ULCBTX0lGTVQKK307CisKKy8qCisgKiBNZW1vOgorICoKKyAqIEZ1bmN0aW9uICAg
UmVmIGNvdW50IExvY2sKKyAqIC0tLS0tLS0tLS0gLS0tLS0tLS0tIC0tLS0tLS0tLS0KKyAqIHZu
X2xvY2sgICAgICogICAgICAgIExvY2sKKyAqIHZuX3VubG9jayAgICogICAgICAgIFVubG9jawor
ICogdmdldCAgICAgICAgMSAgICAgICAgTG9jaworICogdnB1dCAgICAgICAtMSAgICAgICAgVW5s
b2NrCisgKiB2cmVmICAgICAgICsxICAgICAgICAqCisgKiB2cmVsZSAgICAgIC0xICAgICAgICAq
CisgKi8KKworI2RlZmluZSBWTk9ERV9CVUNLRVRTIDMyCQkvKiBzaXplIG9mIHZub2RlIGhhc2gg
dGFibGUgKi8KKworLyoKKyAqIHZub2RlIHRhYmxlLgorICogQWxsIGFjdGl2ZSAob3BlbmVkKSB2
bm9kZXMgYXJlIHN0b3JlZCBvbiB0aGlzIGhhc2ggdGFibGUuCisgKiBUaGV5IGNhbiBiZSBhY2Nl
c3NlZCBieSBpdHMgcGF0aCBuYW1lLgorICovCitzdGF0aWMgTElTVF9IRUFEKHZub2RlX2hhc2hf
aGVhZCwgdm5vZGUpIHZub2RlX3RhYmxlW1ZOT0RFX0JVQ0tFVFNdOworCisvKgorICogR2xvYmFs
IGxvY2sgdG8gYWNjZXNzIGFsbCB2bm9kZXMgYW5kIHZub2RlIHRhYmxlLgorICogSWYgYSB2bm9k
ZSBpcyBhbHJlYWR5IGxvY2tlZCwgdGhlcmUgaXMgbm8gbmVlZCB0bworICogbG9jayB0aGlzIGds
b2JhbCBsb2NrIHRvIGFjY2VzcyBpbnRlcm5hbCBkYXRhLgorICovCitzdGF0aWMgbXV0ZXhfdCB2
bm9kZV9sb2NrID0gTVVURVhfSU5JVElBTElaRVI7CisjZGVmaW5lIFZOT0RFX0xPQ0soKQltdXRl
eF9sb2NrKCZ2bm9kZV9sb2NrKQorI2RlZmluZSBWTk9ERV9VTkxPQ0soKQltdXRleF91bmxvY2so
JnZub2RlX2xvY2spCisjZGVmaW5lIFZOT0RFX09XTkVEKCkJbXV0ZXhfb3duZWQoJnZub2RlX2xv
Y2spCisKKy8qCisgKiBHZXQgdGhlIGhhc2ggdmFsdWUgZnJvbSB0aGUgbW91bnQgcG9pbnQgYW5k
IHBhdGggbmFtZS4KKyAqIFhYWChoY2gpOiByZXBsYWNlIHdpdGggYSBiZXR0ZXIgaGFzaCBmb3Ig
NjQtYml0IHBvaW50ZXJzLgorICovCitzdGF0aWMgdV9pbnQKK3ZuX2hhc2goc3RydWN0IG1vdW50
ICptcCwgdWludDY0X3QgaW5vKQoreworCXJldHVybiAoaW5vIF4gKHVuc2lnbmVkIGxvbmcpbXAp
ICYgKFZOT0RFX0JVQ0tFVFMgLSAxKTsKK30KKworLyoKKyAqIFJldHVybnMgbG9ja2VkIHZub2Rl
IGZvciBzcGVjaWZpZWQgbW91bnQgcG9pbnQgYW5kIHBhdGguCisgKiB2bl9sb2NrKCkgd2lsbCBp
bmNyZW1lbnQgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiB2bm9kZS4KKyAqCisgKiBMb2NraW5nOiBW
Tk9ERV9MT0NLIG11c3QgYmUgaGVsZC4KKyAqLworc3RydWN0IHZub2RlICoKK3ZuX2xvb2t1cChz
dHJ1Y3QgbW91bnQgKm1wLCB1aW50NjRfdCBpbm8pCit7CisJc3RydWN0IHZub2RlICp2cDsKKwor
CWFzc2VydChWTk9ERV9PV05FRCgpKTsKKwlMSVNUX0ZPUkVBQ0godnAsICZ2bm9kZV90YWJsZVt2
bl9oYXNoKG1wLCBpbm8pXSwgdl9saW5rKSB7CisJCWlmICh2cC0+dl9tb3VudCA9PSBtcCAmJiB2
cC0+dl9pbm8gPT0gaW5vKSB7CisJCQl2cC0+dl9yZWZjbnQrKzsKKwkJCW11dGV4X2xvY2soJnZw
LT52X2xvY2spOworCQkJdnAtPnZfbnJsb2NrcysrOworCQkJcmV0dXJuIHZwOworCQl9CisJfQor
CXJldHVybiBudWxscHRyOwkJLyogbm90IGZvdW5kICovCit9CisKKyNpZmRlZiBERUJVR19WRlMK
K3N0YXRpYyBjb25zdCBjaGFyICoKK3ZuX3BhdGgoc3RydWN0IHZub2RlICp2cCkKK3sKKwlzdHJ1
Y3QgZGVudHJ5ICpkcDsKKworCWlmIChMSVNUX0VNUFRZKCZ2cC0+dl9uYW1lcykgPT0gMSkgewor
CQlyZXR1cm4gKCIgIik7CisJfQorCWRwID0gTElTVF9GSVJTVCgmdnAtPnZfbmFtZXMpOworCXJl
dHVybiAoZHAtPmRfcGF0aCk7Cit9CisjZW5kaWYKKworLyoKKyAqIExvY2sgdm5vZGUKKyAqLwor
dm9pZAordm5fbG9jayhzdHJ1Y3Qgdm5vZGUgKnZwKQoreworCUFTU0VSVCh2cCk7CisJQVNTRVJU
KHZwLT52X3JlZmNudCA+IDApOworCisJbXV0ZXhfbG9jaygmdnAtPnZfbG9jayk7CisJdnAtPnZf
bnJsb2NrcysrOworCURQUklOVEYoVkZTREJfVk5PREUsICgidm5fbG9jazogICAlc1xuIiwgdm5f
cGF0aCh2cCkpKTsKK30KKworLyoKKyAqIFVubG9jayB2bm9kZQorICovCit2b2lkCit2bl91bmxv
Y2soc3RydWN0IHZub2RlICp2cCkKK3sKKwlBU1NFUlQodnApOworCUFTU0VSVCh2cC0+dl9yZWZj
bnQgPiAwKTsKKwlBU1NFUlQodnAtPnZfbnJsb2NrcyA+IDApOworCisJdnAtPnZfbnJsb2Nrcy0t
OworCW11dGV4X3VubG9jaygmdnAtPnZfbG9jayk7CisJRFBSSU5URihWRlNEQl9WTk9ERSwgKCJ2
bl9sb2NrOiAgICVzXG4iLCB2bl9wYXRoKHZwKSkpOworfQorCisvKgorICogQWxsb2NhdGUgbmV3
IHZub2RlIGZvciBzcGVjaWZpZWQgcGF0aC4KKyAqIEluY3JlbWVudCBpdHMgcmVmZXJlbmNlIGNv
dW50IGFuZCBsb2NrIGl0LgorICogUmV0dXJucyAxIGlmIHZub2RlIHdhcyBmb3VuZCBpbiBjYWNo
ZTsgb3RoZXJ3aXNlIHJldHVybnMgMC4KKyAqLworaW50Cit2Z2V0KHN0cnVjdCBtb3VudCAqbXAs
IHVpbnQ2NF90IGlubywgc3RydWN0IHZub2RlICoqdnBwKQoreworCXN0cnVjdCB2bm9kZSAqdnA7
CisJaW50IGVycm9yOworCisJKnZwcCA9IG51bGxwdHI7CisKKwlEUFJJTlRGKFZGU0RCX1ZOT0RF
LCAoInZnZXQgJUxMdVxuIiwgaW5vKSk7CisKKwlWTk9ERV9MT0NLKCk7CisKKwl2cCA9IHZuX2xv
b2t1cChtcCwgaW5vKTsKKwlpZiAodnApIHsKKwkJVk5PREVfVU5MT0NLKCk7CisJCSp2cHAgPSB2
cDsKKwkJcmV0dXJuIDE7CisJfQorCisJaWYgKCEodnAgPSBuZXcgdm5vZGUoKSkpIHsKKwkJVk5P
REVfVU5MT0NLKCk7CisJCXJldHVybiAwOworCX0KKworCUxJU1RfSU5JVCgmdnAtPnZfbmFtZXMp
OworCXZwLT52X2lubyA9IGlubzsKKwl2cC0+dl9tb3VudCA9IG1wOworCXZwLT52X3JlZmNudCA9
IDE7CisJdnAtPnZfb3AgPSBtcC0+bV9vcC0+dmZzX3Zub3BzOworCXZwLT52X25ybG9ja3MgPSAw
OworCisJLyoKKwkgKiBSZXF1ZXN0IHRvIGFsbG9jYXRlIGZzIHNwZWNpZmljIGRhdGEgZm9yIHZu
b2RlLgorCSAqLworCWlmICgoZXJyb3IgPSBWRlNfVkdFVChtcCwgdnApKSAhPSAwKSB7CisJCVZO
T0RFX1VOTE9DSygpOworCQlkZWxldGUgdnA7CisJCXJldHVybiBlcnJvcjsKKwl9CisJdmZzX2J1
c3kodnAtPnZfbW91bnQpOworCW11dGV4X2xvY2soJnZwLT52X2xvY2spOworCXZwLT52X25ybG9j
a3MrKzsKKworCUxJU1RfSU5TRVJUX0hFQUQoJnZub2RlX3RhYmxlW3ZuX2hhc2gobXAsIGlubyld
LCB2cCwgdl9saW5rKTsKKwlWTk9ERV9VTkxPQ0soKTsKKworCSp2cHAgPSB2cDsKKworCXJldHVy
biAwOworfQorCisvKgorICogVW5sb2NrIHZub2RlIGFuZCBkZWNyZW1lbnQgaXRzIHJlZmVyZW5j
ZSBjb3VudC4KKyAqLwordm9pZAordnB1dChzdHJ1Y3Qgdm5vZGUgKnZwKQoreworCUFTU0VSVCh2
cCk7CisJQVNTRVJUKHZwLT52X25ybG9ja3MgPiAwKTsKKwlBU1NFUlQodnAtPnZfcmVmY250ID4g
MCk7CisJRFBSSU5URihWRlNEQl9WTk9ERSwgKCJ2cHV0OiByZWY9JWQgJXNcbiIsIHZwLT52X3Jl
ZmNudCwgdm5fcGF0aCh2cCkpKTsKKworCVZOT0RFX0xPQ0soKTsKKwl2cC0+dl9yZWZjbnQtLTsK
KwlpZiAodnAtPnZfcmVmY250ID4gMCkgeworCSAgICBWTk9ERV9VTkxPQ0soKTsKKwkJdm5fdW5s
b2NrKHZwKTsKKwkJcmV0dXJuOworCX0KKwlMSVNUX1JFTU9WRSh2cCwgdl9saW5rKTsKKwlWTk9E
RV9VTkxPQ0soKTsKKworCS8qCisJICogRGVhbGxvY2F0ZSBmcyBzcGVjaWZpYyB2bm9kZSBkYXRh
CisJICovCisJaWYgKHZwLT52X29wLT52b3BfaW5hY3RpdmUpCisJCVZPUF9JTkFDVElWRSh2cCk7
CisJdmZzX3VuYnVzeSh2cC0+dl9tb3VudCk7CisJdnAtPnZfbnJsb2Nrcy0tOworCUFTU0VSVCh2
cC0+dl9ucmxvY2tzID09IDApOworCW11dGV4X3VubG9jaygmdnAtPnZfbG9jayk7CisJZGVsZXRl
IHZwOworfQorCisvKgorICogSW5jcmVtZW50IHRoZSByZWZlcmVuY2UgY291bnQgb24gYW4gYWN0
aXZlIHZub2RlLgorICovCit2b2lkCit2cmVmKHN0cnVjdCB2bm9kZSAqdnApCit7CisJQVNTRVJU
KHZwKTsKKwlBU1NFUlQodnAtPnZfcmVmY250ID4gMCk7CS8qIE5lZWQgdmdldCAqLworCisJVk5P
REVfTE9DSygpOworCURQUklOVEYoVkZTREJfVk5PREUsICgidnJlZjogcmVmPSVkXG4iLCB2cC0+
dl9yZWZjbnQpKTsKKwl2cC0+dl9yZWZjbnQrKzsKKwlWTk9ERV9VTkxPQ0soKTsKK30KKworLyoK
KyAqIERlY3JlbWVudCB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIHRoZSB2bm9kZS4KKyAqIEFueSBj
b2RlIGluIHRoZSBzeXN0ZW0gd2hpY2ggaXMgdXNpbmcgdm5vZGUgc2hvdWxkIGNhbGwgdnJlbGUo
KQorICogd2hlbiBpdCBpcyBmaW5pc2hlZCB3aXRoIHRoZSB2bm9kZS4KKyAqIElmIGNvdW50IGRy
b3BzIHRvIHplcm8sIGNhbGwgaW5hY3RpdmUgcm91dGluZSBhbmQgcmV0dXJuIHRvIGZyZWVsaXN0
LgorICovCit2b2lkCit2cmVsZShzdHJ1Y3Qgdm5vZGUgKnZwKQoreworCUFTU0VSVCh2cCk7CisJ
QVNTRVJUKHZwLT52X3JlZmNudCA+IDApOworCisJVk5PREVfTE9DSygpOworCURQUklOVEYoVkZT
REJfVk5PREUsICgidnJlbGU6IHJlZj0lZFxuIiwgdnAtPnZfcmVmY250KSk7CisJdnAtPnZfcmVm
Y250LS07CisJaWYgKHZwLT52X3JlZmNudCA+IDApIHsKKwkJVk5PREVfVU5MT0NLKCk7CisJCXJl
dHVybjsKKwl9CisJTElTVF9SRU1PVkUodnAsIHZfbGluayk7CisJVk5PREVfVU5MT0NLKCk7CisK
KwkvKgorCSAqIERlYWxsb2NhdGUgZnMgc3BlY2lmaWMgdm5vZGUgZGF0YQorCSAqLworCVZPUF9J
TkFDVElWRSh2cCk7CisJdmZzX3VuYnVzeSh2cC0+dl9tb3VudCk7CisJZGVsZXRlIHZwOworfQor
CisvKgorICogUmVtb3ZlIGFsbCB2bm9kZSBpbiB0aGUgdm5vZGUgdGFibGUgZm9yIHVubW91bnQu
CisgKi8KK3ZvaWQKK3ZmbHVzaChzdHJ1Y3QgbW91bnQgKm1wKQoreworfQorCitpbnQKK3ZuX3N0
YXQoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IHN0YXQgKnN0KQoreworCXN0cnVjdCB2YXR0ciB2
YXR0cjsKKwlzdHJ1Y3QgdmF0dHIgKnZhcDsKKwltb2RlX3QgbW9kZTsKKwlpbnQgZXJyb3I7CisK
Kwl2YXAgPSAmdmF0dHI7CisKKwltZW1zZXQoc3QsIDAsIHNpemVvZihzdHJ1Y3Qgc3RhdCkpOwor
CisJbWVtc2V0KHZhcCwgMCwgc2l6ZW9mKHN0cnVjdCB2YXR0cikpOworCisJZXJyb3IgPSBWT1Bf
R0VUQVRUUih2cCwgdmFwKTsKKwlpZiAoZXJyb3IpCisJCXJldHVybiBlcnJvcjsKKworCXN0LT5z
dF9pbm8gPSAoaW5vX3QpdmFwLT52YV9ub2RlaWQ7CisJc3QtPnN0X3NpemUgPSB2YXAtPnZhX3Np
emU7CisJbW9kZSA9IHZhcC0+dmFfbW9kZTsKKwlzd2l0Y2ggKHZwLT52X3R5cGUpIHsKKwljYXNl
IFZSRUc6CisJCW1vZGUgfD0gU19JRlJFRzsKKwkJYnJlYWs7CisJY2FzZSBWRElSOgorCQltb2Rl
IHw9IFNfSUZESVI7CisJCWJyZWFrOworCWNhc2UgVkJMSzoKKwkJbW9kZSB8PSBTX0lGQkxLOwor
CQlicmVhazsKKwljYXNlIFZDSFI6CisJCW1vZGUgfD0gU19JRkNIUjsKKwkJYnJlYWs7CisJY2Fz
ZSBWTE5LOgorCQltb2RlIHw9IFNfSUZMTks7CisJCWJyZWFrOworCWNhc2UgVlNPQ0s6CisJCW1v
ZGUgfD0gU19JRlNPQ0s7CisJCWJyZWFrOworCWNhc2UgVkZJRk86CisJCW1vZGUgfD0gU19JRklG
TzsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcmV0dXJuIEVCQURGOworCX07CisJc3QtPnN0X21v
ZGUgPSBtb2RlOworCXN0LT5zdF9ubGluayA9IHZhcC0+dmFfbmxpbms7CisJc3QtPnN0X2Jsa3Np
emUgPSBCU0laRTsKKwlzdC0+c3RfYmxvY2tzID0gdmFwLT52YV9zaXplIC8gU19CTEtTSVpFOwor
CXN0LT5zdF91aWQgPSB2YXAtPnZhX3VpZDsKKwlzdC0+c3RfZ2lkID0gdmFwLT52YV9naWQ7CisJ
c3QtPnN0X2RldiA9IHZhcC0+dmFfZnNpZDsKKwlpZiAodnAtPnZfdHlwZSA9PSBWQ0hSIHx8IHZw
LT52X3R5cGUgPT0gVkJMSykKKwkJc3QtPnN0X3JkZXYgPSB2YXAtPnZhX3JkZXY7CisKKwlzdC0+
c3RfYXRpbSA9IHZhcC0+dmFfYXRpbWU7CisJc3QtPnN0X210aW0gPSB2YXAtPnZhX210aW1lOwor
CXN0LT5zdF9jdGltID0gdmFwLT52YV9jdGltZTsKKworCXJldHVybiAwOworfQorCisvKgorICog
U2V0IGFjY2VzcyBhbmQgbW9kaWZpY2F0aW9uIHRpbWVzIG9mIHRoZSB2bm9kZQorICovCitpbnQK
K3ZuX3NldHRpbWVzKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCB0aW1lc3BlYyB0aW1lc1syXSkK
K3sKKyAgICBzdHJ1Y3QgdmF0dHIgdmF0dHI7CisgICAgc3RydWN0IHZhdHRyICp2YXA7CisgICAg
aW50IGVycm9yOworCisgICAgdmFwID0gJnZhdHRyOworICAgIG1lbXNldCh2YXAsIDAsIHNpemVv
ZihzdHJ1Y3QgdmF0dHIpKTsKKworICAgIHZhcC0+dmFfYXRpbWUgPSB0aW1lc1swXTsKKyAgICB2
YXAtPnZhX210aW1lID0gdGltZXNbMV07CisgICAgdmFwLT52YV9tYXNrID0gKCh0aW1lc1swXS50
dl9uc2VjID09IFVUSU1FX09NSVQpID8gMCA6IEFUX0FUSU1FKQorICAgICAgICAgICAgICAgICAg
ICB8ICgodGltZXNbMV0udHZfbnNlYyA9PSBVVElNRV9PTUlUKSA/IDAgOiBBVF9NVElNRSk7Cisg
ICAgdm5fbG9jayh2cCk7CisgICAgZXJyb3IgPSBWT1BfU0VUQVRUUih2cCwgdmFwKTsKKyAgICB2
bl91bmxvY2sodnApOworCisgICAgcmV0dXJuIGVycm9yOworfQorCisvKgorICogU2V0IGNobW9k
IHBlcm1pc3Npb25zIG9uIHRoZSB2bm9kZS4KKyAqLworaW50Cit2bl9zZXRtb2RlKHN0cnVjdCB2
bm9kZSAqdnAsIG1vZGVfdCBuZXdfbW9kZSkKK3sKKyAgICBzdHJ1Y3QgdmF0dHIgdmF0dHI7Cisg
ICAgbWVtc2V0KCZ2YXR0ciwgMCwgc2l6ZW9mKHZhdHRyKSk7CisgICAgdmF0dHIudmFfbW9kZSA9
IG5ld19tb2RlOworICAgIHZhdHRyLnZhX21hc2sgPSBBVF9NT0RFOworICAgIHZuX2xvY2sodnAp
OworICAgIHZwLT52X21vZGUgPSBuZXdfbW9kZTsKKyAgICBpbnQgZXJyb3IgPSBWT1BfU0VUQVRU
Uih2cCwgJnZhdHRyKTsKKyAgICB2bl91bmxvY2sodnApOworICAgIHJldHVybiBlcnJvcjsKK30K
KworLyoKKyAqIENoZWNrIHBlcm1pc3Npb24gb24gdm5vZGUgcG9pbnRlci4KKyAqLworaW50Cit2
bl9hY2Nlc3Moc3RydWN0IHZub2RlICp2cCwgaW50IGZsYWdzKQoreworCWludCBlcnJvciA9IDA7
CisKKwlpZiAoKGZsYWdzICYgVkVYRUMpICYmICh2cC0+dl9tb2RlICYgMDExMSkgPT0gMCkgewor
CQllcnJvciA9IEVBQ0NFUzsKKwkJZ290byBvdXQ7CisJfQorCWlmICgoZmxhZ3MgJiBWUkVBRCkg
JiYgKHZwLT52X21vZGUgJiAwNDQ0KSA9PSAwKSB7CisJCWVycm9yID0gRUFDQ0VTOworCQlnb3Rv
IG91dDsKKwl9CisJaWYgKGZsYWdzICYgVldSSVRFKSB7CisJCWlmICh2cC0+dl9tb3VudC0+bV9m
bGFncyAmIE1OVF9SRE9OTFkpIHsKKwkJCWVycm9yID0gRVJPRlM7CisJCQlnb3RvIG91dDsKKwkJ
fQorCQlpZiAoKHZwLT52X21vZGUgJiAwMjIyKSA9PSAwKSB7CisJCQllcnJvciA9IEVBQ0NFUzsK
KwkJCWdvdG8gb3V0OworCQl9CisJfQorIG91dDoKKwlyZXR1cm4gZXJyb3I7Cit9CisKKyNpZmRl
ZiBERUJVR19WRlMKKy8qCisgKiBEdW1wIGFsbCBhbGwgdm5vZGUuCisgKi8KK3ZvaWQKK3Zub2Rl
X2R1bXAodm9pZCkKK3sKKwlpbnQgaTsKKwlzdHJ1Y3Qgdm5vZGUgKnZwOworCXN0cnVjdCBtb3Vu
dCAqbXA7CisJY2hhciB0eXBlW11bNl0gPSB7ICJWTk9OICIsICJWUkVHICIsICJWRElSICIsICJW
QkxLICIsICJWQ0hSICIsCisJCQkgICAiVkxOSyAiLCAiVlNPQ0siLCAiVkZJRk8iIH07CisKKwlW
Tk9ERV9MT0NLKCk7CisJa3ByaW50ZigiRHVtcCB2bm9kZVxuIik7CisJa3ByaW50ZigiIHZub2Rl
ICAgIG1vdW50ICAgIHR5cGUgIHJlZmNudCBibGtubyAgICBwYXRoXG4iKTsKKwlrcHJpbnRmKCIg
LS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLVxuIik7CisKKwlmb3IgKGkgPSAwOyBpIDwgVk5PREVfQlVDS0VUUzsgaSsr
KSB7CisJICAgICAgICBMSVNUX0ZPUkVBQ0godnAsICZ2bm9kZV90YWJsZVtpXSwgdl9saW5rKSB7
CisJCQltcCA9IHZwLT52X21vdW50OworCisJCQlrcHJpbnRmKCIgJTA4eCAlMDh4ICVzICU2ZCAl
OGQgJXMlc1xuIiwgKHVfbG9uZyl2cCwKKwkJCQkodV9sb25nKW1wLCB0eXBlW3ZwLT52X3R5cGVd
LCB2cC0+dl9yZWZjbnQsCisJCQkJKHN0cmxlbihtcC0+bV9wYXRoKSA9PSAxKSA/ICJcMCIgOiBt
cC0+bV9wYXRoLAorCQkJCXZuX3BhdGgodnApKTsKKwkJfQorCX0KKwlrcHJpbnRmKCJcbiIpOwor
CVZOT0RFX1VOTE9DSygpOworfQorI2VuZGlmCisKK2ludAordm9wX251bGxvcCh2b2lkKQorewor
CXJldHVybiAwOworfQorCitpbnQKK3ZvcF9laW52YWwodm9pZCkKK3sKKwlyZXR1cm4gRUlOVkFM
OworfQorCitpbnQKK3ZvcF9lcGVybSh2b2lkKQoreworCXJldHVybiBFUEVSTTsKK30KKworaW50
Cit2b3BfZXJvZnModm9pZCkKK3sKKwlyZXR1cm4gRVJPRlM7Cit9CisKKy8qCisgKiB2bm9kZV9p
bml0KCkgaXMgY2FsbGVkIG9uY2UgKGZyb20gdmZzX2luaXQpCisgKiBpbiBpbml0aWFsaXphdGlv
bi4KKyAqLwordm9pZAordm5vZGVfaW5pdCh2b2lkKQoreworCWludCBpOworCisJZm9yIChpID0g
MDsgaSA8IFZOT0RFX0JVQ0tFVFM7IGkrKykKKwkJTElTVF9JTklUKCZ2bm9kZV90YWJsZVtpXSk7
Cit9CisKK3ZvaWQgdm5fYWRkX25hbWUoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IGRlbnRyeSAq
ZHApCit7CisJdm5fbG9jayh2cCk7CisJTElTVF9JTlNFUlRfSEVBRCgmdnAtPnZfbmFtZXMsIGRw
LCBkX25hbWVzX2xpbmspOworCXZuX3VubG9jayh2cCk7Cit9CisKK3ZvaWQgdm5fZGVsX25hbWUo
c3RydWN0IHZub2RlICp2cCwgc3RydWN0IGRlbnRyeSAqZHApCit7CisJdm5fbG9jayh2cCk7CisJ
TElTVF9SRU1PVkUoZHAsIGRfbmFtZXNfbGluayk7CisJdm5fdW5sb2NrKHZwKTsKK30KKwotLSAK
Mi4xOS4yCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
TWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5v
cmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1k
ZXZlbA==

From minios-devel-bounces@lists.xenproject.org Thu Feb 07 13:59:54 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 07 Feb 2019 13:59:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grkDa-0006Yy-A7; Thu, 07 Feb 2019 13:59:54 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=CXnx=QO=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1grkDZ-0006YR-3J
 for minios-devel@lists.xen.org; Thu, 07 Feb 2019 13:59:53 +0000
X-Inumbo-ID: a0aed953-2ae0-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id a0aed953-2ae0-11e9-bc90-bc764e045a96;
 Thu, 07 Feb 2019 13:59:47 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 83339F206D;
 Thu,  7 Feb 2019 14:59:46 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 8HSnFrweDoPE; Thu,  7 Feb 2019 14:59:46 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 57A71F202D
 for <minios-devel@lists.xen.org>; Thu,  7 Feb 2019 14:59:44 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Thu, 7 Feb 2019 14:59:44 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Thu, 7 Feb 2019 14:58:44 +0100
Message-ID: <20190207135901.9122-7-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
References: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v3 06/23] lib/vfscore: update
 license header for imported files
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+ClJl
dmlld2VkLWJ5OiBTaGFyYW4gU2FudGhhbmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xhYi5ldT4K
LS0tCiBsaWIvbm9saWJjL2luY2x1ZGUvc3lzL21vdW50LmggICAgICAgfCAzNSArKysrKysrKysr
KysrKysrKysrKysrKysrKysrCiBsaWIvbm9saWJjL2luY2x1ZGUvc3lzL3Vpby5oICAgICAgICAg
fCAzNSArKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBsaWIvdmZzY29yZS9kZW50cnkuYyAg
ICAgICAgICAgICAgICAgfCAxMCArKystLS0tLQogbGliL3Zmc2NvcmUvZm9wcy5jICAgICAgICAg
ICAgICAgICAgIHwgMzMgKysrKysrKysrKysrKysrKysrKysrKystLS0KIGxpYi92ZnNjb3JlL2lu
Y2x1ZGUvdmZzY29yZS9kZW50cnkuaCB8IDMyICsrKysrKysrKysrKysrKysrKysrKysrLS0KIGxp
Yi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9wcmV4LmggICB8IDMyICsrKysrKysrKysrKysrKysr
KysrKysrLS0KIGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5oICB8ICAzICsrKwog
bGliL3Zmc2NvcmUvbG9va3VwLmMgICAgICAgICAgICAgICAgIHwgIDMgKysrCiBsaWIvdmZzY29y
ZS9tYWluLmMgICAgICAgICAgICAgICAgICAgfCAxMCArKystLS0tLQogbGliL3Zmc2NvcmUvbW91
bnQuYyAgICAgICAgICAgICAgICAgIHwgIDMgKysrCiBsaWIvdmZzY29yZS9zdWJyX3Vpby5jICAg
ICAgICAgICAgICAgfCAgOSArKysrKy0tCiBsaWIvdmZzY29yZS9zeXNjYWxscy5jICAgICAgICAg
ICAgICAgfCAxMCArKystLS0tLQogbGliL3Zmc2NvcmUvdGFzay5jICAgICAgICAgICAgICAgICAg
IHwgIDggKysrKystLQogbGliL3Zmc2NvcmUvdmZzLmggICAgICAgICAgICAgICAgICAgIHwgIDMg
KysrCiBsaWIvdmZzY29yZS92bm9kZS5jICAgICAgICAgICAgICAgICAgfCAgMyArKysKIDE1IGZp
bGVzIGNoYW5nZWQsIDE5NyBpbnNlcnRpb25zKCspLCAzMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1n
aXQgYS9saWIvbm9saWJjL2luY2x1ZGUvc3lzL21vdW50LmggYi9saWIvbm9saWJjL2luY2x1ZGUv
c3lzL21vdW50LmgKaW5kZXggYWY4NTVkNjkuLmQ3YTk1YjM4IDEwMDY0NAotLS0gYS9saWIvbm9s
aWJjL2luY2x1ZGUvc3lzL21vdW50LmgKKysrIGIvbGliL25vbGliYy9pbmNsdWRlL3N5cy9tb3Vu
dC5oCkBAIC0xLDMgKzEsMzggQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1D
bGF1c2UgKi8KKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQ2xvdWRpdXMgU3lzdGVtcywgTHRk
LgorICogQ29weXJpZ2h0IChjKSAyMDE5LCBORUMgRXVyb3BlIEx0ZC4sIE5FQyBDb3Jwb3JhdGlv
bi4KKyAqCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRo
ZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiAgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgorICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMg
QkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUK
KyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqIFRISVMgSEVBREVSIE1BWSBO
T1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCisgKi8KKwogI2lmbmRlZiBf
U1lTX01PVU5UX0gKICNkZWZpbmUgX1NZU19NT1VOVF9ICiAKZGlmZiAtLWdpdCBhL2xpYi9ub2xp
YmMvaW5jbHVkZS9zeXMvdWlvLmggYi9saWIvbm9saWJjL2luY2x1ZGUvc3lzL3Vpby5oCmluZGV4
IDE4MjY2MDM4Li5jZGZiZWM5YiAxMDA2NDQKLS0tIGEvbGliL25vbGliYy9pbmNsdWRlL3N5cy91
aW8uaAorKysgYi9saWIvbm9saWJjL2luY2x1ZGUvc3lzL3Vpby5oCkBAIC0xLDMgKzEsMzggQEAK
Ky8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8KKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQ2xvdWRpdXMgU3lzdGVtcywgTHRkLgorICogQ29weXJpZ2h0IChjKSAy
MDE5LCBORUMgRXVyb3BlIEx0ZC4sIE5FQyBDb3Jwb3JhdGlvbi4KKyAqCisgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNv
cHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqICAgIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiAgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICoKKyAqIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1P
RElGSUVEIElOIEFOWSBXQVkuCisgKi8KKwogI2lmbmRlZiBfU1lTX1VJT19ICiAjZGVmaW5lIF9T
WVNfVUlPX0gKIApkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvZGVudHJ5LmMgYi9saWIvdmZzY29y
ZS9kZW50cnkuYwppbmRleCBjMmYyMDliMi4uZWZjMTBiZDYgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNj
b3JlL2RlbnRyeS5jCisrKyBiL2xpYi92ZnNjb3JlL2RlbnRyeS5jCkBAIC0xLDEyICsxLDggQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQ2xvdWRpdXMgU3lzdGVtcywgTHRkLgotICoKLSAq
IFRoaXMgd29yayBpcyBvcGVuIHNvdXJjZSBzb2Z0d2FyZSwgbGljZW5zZWQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZQotICogQlNEIGxpY2Vuc2UgYXMgZGVzY3JpYmVkIGluIHRoZSBMSUNFTlNFIGZp
bGUgaW4gdGhlIHRvcC1sZXZlbCBkaXJlY3RvcnkuCi0gKi8KLQorLyogU1BEWC1MaWNlbnNlLUlk
ZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLwogLyoKICAqIENvcHlyaWdodCAoYykgMjAwNS0yMDA3
LCBLb2hzdWtlIE9odGFuaQorICogQ29weXJpZ2h0IChDKSAyMDE0IENsb3VkaXVzIFN5c3RlbXMs
IEx0ZC4KKyAqIENvcHlyaWdodCAoYykgMjAxOSwgTkVDIEV1cm9wZSBMdGQuLCBORUMgQ29ycG9y
YXRpb24uCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApkaWZmIC0t
Z2l0IGEvbGliL3Zmc2NvcmUvZm9wcy5jIGIvbGliL3Zmc2NvcmUvZm9wcy5jCmluZGV4IGFiMWY4
Y2JiLi5hOTRjYTQ1MiAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvZm9wcy5jCisrKyBiL2xpYi92
ZnNjb3JlL2ZvcHMuYwpAQCAtMSwxMSArMSwzOCBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZp
ZXI6IEJTRC0zLUNsYXVzZSAqLwogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBDbG91ZGl1cyBT
eXN0ZW1zLCBMdGQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTksIE5FQyBFdXJvcGUgTHRkLiwgTkVD
IENvcnBvcmF0aW9uLgogICoKLSAqIFRoaXMgd29yayBpcyBvcGVuIHNvdXJjZSBzb2Z0d2FyZSwg
bGljZW5zZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZQotICogQlNEIGxpY2Vuc2UgYXMgZGVzY3Jp
YmVkIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHRvcC1sZXZlbCBkaXJlY3RvcnkuCisgKiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUg
b2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqICAgIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiAgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgorICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFD
VEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCiAgKi8KIAotCiAjaW5jbHVkZSA8ZmNudGwuaD4K
ICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogI2luY2x1ZGUgPG9zdi9maWxlLmg+CmRpZmYgLS1naXQg
YS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZGVudHJ5LmggYi9saWIvdmZzY29yZS9pbmNs
dWRlL3Zmc2NvcmUvZGVudHJ5LmgKaW5kZXggZjU4NTA3ODYuLjJkMmVhYTFiIDEwMDY0NAotLS0g
YS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZGVudHJ5LmgKKysrIGIvbGliL3Zmc2NvcmUv
aW5jbHVkZS92ZnNjb3JlL2RlbnRyeS5oCkBAIC0xLDggKzEsMzYgQEAKKy8qIFNQRFgtTGljZW5z
ZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8KIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTQg
Q2xvdWRpdXMgU3lzdGVtcywgTHRkLgorICogQ29weXJpZ2h0IChjKSAyMDE5LCBORUMgRXVyb3Bl
IEx0ZC4sIE5FQyBDb3Jwb3JhdGlvbi4KICAqCi0gKiBUaGlzIHdvcmsgaXMgb3BlbiBzb3VyY2Ug
c29mdHdhcmUsIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUKLSAqIEJTRCBsaWNlbnNl
IGFzIGRlc2NyaWJlZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSB0b3AtbGV2ZWwgZGlyZWN0
b3J5LgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVy
IHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJF
CisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisg
KiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKiBUSElTIEhFQURFUiBNQVkgTk9U
IEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgogICovCiAKICNpZm5kZWYgX09T
Vl9ERU5UUllfSApkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3ByZXgu
aCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9wcmV4LmgKaW5kZXggNDM2NTAzNDAuLjdi
MDUzMzE5IDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvcHJleC5oCisr
KyBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9wcmV4LmgKQEAgLTEsOCArMSwzNiBAQAor
LyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLwogLyoKICAqIENvcHly
aWdodCAoQykgMjAxMyBDbG91ZGl1cyBTeXN0ZW1zLCBMdGQuCisgKiBDb3B5cmlnaHQgKGMpIDIw
MTksIE5FQyBFdXJvcGUgTHRkLiwgTkVDIENvcnBvcmF0aW9uLgogICoKLSAqIFRoaXMgd29yayBp
cyBvcGVuIHNvdXJjZSBzb2Z0d2FyZSwgbGljZW5zZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZQot
ICogQlNEIGxpY2Vuc2UgYXMgZGVzY3JpYmVkIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHRv
cC1sZXZlbCBkaXJlY3RvcnkuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiAgICB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMg
IkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBD
T05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqIFRISVMg
SEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCiAgKi8K
IAogI2lmbmRlZiBfT1NWX1BSRVhfSApkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92
ZnNjb3JlL3Zub2RlLmggYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUuaAppbmRl
eCBlMzVhYTgzMC4uNDg3NGYxYjkgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZz
Y29yZS92bm9kZS5oCisrKyBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5oCkBA
IC0xLDUgKzEsOCBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAq
LwogLyoKICAqIENvcHlyaWdodCAoYykgMjAwNS0yMDA3LCBLb2hzdWtlIE9odGFuaQorICogQ29w
eXJpZ2h0IChDKSAyMDE0IENsb3VkaXVzIFN5c3RlbXMsIEx0ZC4KKyAqIENvcHlyaWdodCAoYykg
MjAxOSwgTkVDIEV1cm9wZSBMdGQuLCBORUMgQ29ycG9yYXRpb24uCiAgKiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvbG9va3Vw
LmMgYi9saWIvdmZzY29yZS9sb29rdXAuYwppbmRleCAzMDEzOWE4Ny4uMGFhNWNhM2IgMTAwNjQ0
Ci0tLSBhL2xpYi92ZnNjb3JlL2xvb2t1cC5jCisrKyBiL2xpYi92ZnNjb3JlL2xvb2t1cC5jCkBA
IC0xLDUgKzEsOCBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAq
LwogLyoKICAqIENvcHlyaWdodCAoYykgMjAwNS0yMDA3LCBLb2hzdWtlIE9odGFuaQorICogQ29w
eXJpZ2h0IChDKSAyMDE0IENsb3VkaXVzIFN5c3RlbXMsIEx0ZC4KKyAqIENvcHlyaWdodCAoYykg
MjAxOSwgTkVDIEV1cm9wZSBMdGQuLCBORUMgQ29ycG9yYXRpb24uCiAgKiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvbWFpbi5j
IGIvbGliL3Zmc2NvcmUvbWFpbi5jCmluZGV4IDhkOWRjMzNhLi5lMzAwNDU5NyAxMDA2NDQKLS0t
IGEvbGliL3Zmc2NvcmUvbWFpbi5jCisrKyBiL2xpYi92ZnNjb3JlL21haW4uYwpAQCAtMSwxMiAr
MSw4IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIENsb3VkaXVzIFN5c3RlbXMsIEx0ZC4K
LSAqCi0gKiBUaGlzIHdvcmsgaXMgb3BlbiBzb3VyY2Ugc29mdHdhcmUsIGxpY2Vuc2VkIHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUKLSAqIEJTRCBsaWNlbnNlIGFzIGRlc2NyaWJlZCBpbiB0aGUgTElD
RU5TRSBmaWxlIGluIHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5LgotICovCi0KKy8qIFNQRFgtTGlj
ZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8KIC8qCiAgKiBDb3B5cmlnaHQgKGMpIDIw
MDUtMjAwNywgS29oc3VrZSBPaHRhbmkKKyAqIENvcHlyaWdodCAoQykgMjAxMyBDbG91ZGl1cyBT
eXN0ZW1zLCBMdGQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTksIE5FQyBFdXJvcGUgTHRkLiwgTkVD
IENvcnBvcmF0aW9uLgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL21vdW50LmMgYi9saWIvdmZzY29yZS9tb3VudC5jCmlu
ZGV4IGI1MWIyN2E0Li43NmUyZTcwYyAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvbW91bnQuYwor
KysgYi9saWIvdmZzY29yZS9tb3VudC5jCkBAIC0xLDUgKzEsOCBAQAorLyogU1BEWC1MaWNlbnNl
LUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLwogLyoKICAqIENvcHlyaWdodCAoYykgMjAwNS0y
MDA3LCBLb2hzdWtlIE9odGFuaQorICogQ29weXJpZ2h0IChDKSAyMDE0IENsb3VkaXVzIFN5c3Rl
bXMsIEx0ZC4KKyAqIENvcHlyaWdodCAoYykgMjAxOSwgTkVDIEV1cm9wZSBMdGQuLCBORUMgQ29y
cG9yYXRpb24uCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApkaWZm
IC0tZ2l0IGEvbGliL3Zmc2NvcmUvc3Vicl91aW8uYyBiL2xpYi92ZnNjb3JlL3N1YnJfdWlvLmMK
aW5kZXggYmYxMzhiOGUuLjgyNzZkNmQ0IDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9zdWJyX3Vp
by5jCisrKyBiL2xpYi92ZnNjb3JlL3N1YnJfdWlvLmMKQEAgLTEsNyArMSwxMiBAQAotLyotCisv
KiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCisvKgogICogQ29weXJp
Z2h0IChjKSAxOTgyLCAxOTg2LCAxOTkxLCAxOTkzCi0gKglUaGUgUmVnZW50cyBvZiB0aGUgVW5p
dmVyc2l0eSBvZiBDYWxpZm9ybmlhLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICAgICBUaGUg
UmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgogICogKGMpIFVOSVggU3lz
dGVtIExhYm9yYXRvcmllcywgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDE0IENsb3VkaXVzIFN5
c3RlbXMsIEx0ZC4KKyAqIENvcHlyaWdodCAoYykgMjAxOSwgTkVDIEV1cm9wZSBMdGQuLCBORUMg
Q29ycG9yYXRpb24uCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKICAqIEFsbCBvciBzb21l
IHBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgZGVyaXZlZCBmcm9tIG1hdGVyaWFsIGxpY2Vuc2Vk
CiAgKiB0byB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhIGJ5IEFtZXJpY2FuIFRlbGVwaG9u
ZSBhbmQgVGVsZWdyYXBoCiAgKiBDby4gb3IgVW5peCBTeXN0ZW0gTGFib3JhdG9yaWVzLCBJbmMu
IGFuZCBhcmUgcmVwcm9kdWNlZCBoZXJlaW4gd2l0aApkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUv
c3lzY2FsbHMuYyBiL2xpYi92ZnNjb3JlL3N5c2NhbGxzLmMKaW5kZXggYjU0MzNlY2UuLjI5YjE0
MjIwIDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9zeXNjYWxscy5jCisrKyBiL2xpYi92ZnNjb3Jl
L3N5c2NhbGxzLmMKQEAgLTEsMTIgKzEsOCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBD
bG91ZGl1cyBTeXN0ZW1zLCBMdGQuCi0gKgotICogVGhpcyB3b3JrIGlzIG9wZW4gc291cmNlIHNv
ZnR3YXJlLCBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlCi0gKiBCU0QgbGljZW5zZSBh
cyBkZXNjcmliZWQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgdG9wLWxldmVsIGRpcmVjdG9y
eS4KLSAqLwotCisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCiAv
KgogICogQ29weXJpZ2h0IChjKSAyMDA1LTIwMDcsIEtvaHN1a2UgT2h0YW5pCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQgQ2xvdWRpdXMgU3lzdGVtcywgTHRkLgorICogQ29weXJpZ2h0IChjKSAyMDE5
LCBORUMgRXVyb3BlIEx0ZC4sIE5FQyBDb3Jwb3JhdGlvbi4KICAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS90YXNrLmMgYi9s
aWIvdmZzY29yZS90YXNrLmMKaW5kZXggYjJhMDI4YzYuLjJkMzRmMGRmIDEwMDY0NAotLS0gYS9s
aWIvdmZzY29yZS90YXNrLmMKKysrIGIvbGliL3Zmc2NvcmUvdGFzay5jCkBAIC0xLDUgKzEsOSBA
QAotLyotCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDcsIEtvaHN1a2UgT2h0YW5pIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCisv
KgorICogQ29weXJpZ2h0IChjKSAyMDA3LCBLb2hzdWtlIE9odGFuaQorICogQ29weXJpZ2h0IChD
KSAyMDE0IENsb3VkaXVzIFN5c3RlbXMsIEx0ZC4KKyAqIENvcHlyaWdodCAoYykgMjAxOSwgTkVD
IEV1cm9wZSBMdGQuLCBORUMgQ29ycG9yYXRpb24uCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS92
ZnMuaCBiL2xpYi92ZnNjb3JlL3Zmcy5oCmluZGV4IDJiODI1NTIxLi5jMTMwNTE3ZCAxMDA2NDQK
LS0tIGEvbGliL3Zmc2NvcmUvdmZzLmgKKysrIGIvbGliL3Zmc2NvcmUvdmZzLmgKQEAgLTEsNSAr
MSw4IEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCiAvKgog
ICogQ29weXJpZ2h0IChjKSAyMDA1LTIwMDcsIEtvaHN1a2UgT2h0YW5pCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQ2xvdWRpdXMgU3lzdGVtcywgTHRkLgorICogQ29weXJpZ2h0IChjKSAyMDE5LCBO
RUMgRXVyb3BlIEx0ZC4sIE5FQyBDb3Jwb3JhdGlvbi4KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS92bm9kZS5jIGIvbGli
L3Zmc2NvcmUvdm5vZGUuYwppbmRleCAxMTllZDg3MC4uMzQxMmM2ZmIgMTAwNjQ0Ci0tLSBhL2xp
Yi92ZnNjb3JlL3Zub2RlLmMKKysrIGIvbGliL3Zmc2NvcmUvdm5vZGUuYwpAQCAtMSw1ICsxLDgg
QEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8KIC8qCiAgKiBD
b3B5cmlnaHQgKGMpIDIwMDUtMjAwOCwgS29oc3VrZSBPaHRhbmkKKyAqIENvcHlyaWdodCAoQykg
MjAxNCBDbG91ZGl1cyBTeXN0ZW1zLCBMdGQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTksIE5FQyBF
dXJvcGUgTHRkLiwgTkVDIENvcnBvcmF0aW9uLgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLS0gCjIuMTkuMgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVs
QGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1h
bi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Thu Feb 07 13:59:56 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 07 Feb 2019 13:59:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grkDc-0006Ze-Bk; Thu, 07 Feb 2019 13:59:56 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=CXnx=QO=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1grkDa-0006Z3-EI
 for minios-devel@lists.xen.org; Thu, 07 Feb 2019 13:59:54 +0000
X-Inumbo-ID: a247a34a-2ae0-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id a247a34a-2ae0-11e9-bc90-bc764e045a96;
 Thu, 07 Feb 2019 13:59:50 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 3EC0E104DA5;
 Thu,  7 Feb 2019 14:59:49 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id RMFnQ9DvgZo1; Thu,  7 Feb 2019 14:59:49 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 0AE00104DA3
 for <minios-devel@lists.xen.org>; Thu,  7 Feb 2019 14:59:47 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Thu, 7 Feb 2019 14:59:46 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Thu, 7 Feb 2019 14:58:45 +0100
Message-ID: <20190207135901.9122-8-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
References: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v3 07/23] lib/vfscore: remove
 obvious c++isms and irrelevant code
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U29tZSBjKytpc21zIGFyZSBrZWVwIGJlY2F1c2UgYmlnZ2VyIHBpZWNlcyBuZWVkZWQgdG8gYmUg
cmVkb25lIGFyb3VuZAp0aGVtLgoKU29tZSBjb2RlIGlzIGp1c3QgZGlzYWJsZWQgd2l0aCAjaWYg
MCwgYXMgd2Ugd2lsbCBtYWtlIHVzZSBvZiBpdCBsYXRlcgoKU2lnbmVkLW9mZi1ieTogWXVyaSBW
b2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+ClJldmlld2VkLWJ5OiBTaGFyYW4gU2Fu
dGhhbmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xhYi5ldT4KLS0tCiBsaWIvdmZzY29yZS9mb3Bz
LmMgICAgICAgICAgICAgICAgICAgfCAgOTEgKy0tLS0tCiBsaWIvdmZzY29yZS9pbmNsdWRlL3Zm
c2NvcmUvZGVudHJ5LmggfCAgMTYgLQogbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21vdW50
LmggIHwgIDI2IC0tCiBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvcHJleC5oICAgfCAgIDYg
LQogbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Vpby5oICAgIHwgIDI2IC0tCiBsaWIvdmZz
Y29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUuaCAgfCAgIDQgLQogbGliL3Zmc2NvcmUvbG9va3Vw
LmMgICAgICAgICAgICAgICAgIHwgIDUxICsrLQogbGliL3Zmc2NvcmUvbWFpbi5jICAgICAgICAg
ICAgICAgICAgIHwgNDY5ICsrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogbGliL3Zmc2NvcmUv
bW91bnQuYyAgICAgICAgICAgICAgICAgIHwgIDQ3ICstLQogbGliL3Zmc2NvcmUvc3lzY2FsbHMu
YyAgICAgICAgICAgICAgIHwgMTE4ICsrKystLS0KIGxpYi92ZnNjb3JlL3Rhc2suYyAgICAgICAg
ICAgICAgICAgICB8ICAxNyAtCiBsaWIvdmZzY29yZS92ZnMuaCAgICAgICAgICAgICAgICAgICAg
fCAgMjMgLS0KIGxpYi92ZnNjb3JlL3Zub2RlLmMgICAgICAgICAgICAgICAgICB8ICAgMyArLQog
MTMgZmlsZXMgY2hhbmdlZCwgMTU1IGluc2VydGlvbnMoKyksIDc0MiBkZWxldGlvbnMoLSkKCmRp
ZmYgLS1naXQgYS9saWIvdmZzY29yZS9mb3BzLmMgYi9saWIvdmZzY29yZS9mb3BzLmMKaW5kZXgg
YTk0Y2E0NTIuLmYxYzE2MWU3IDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9mb3BzLmMKKysrIGIv
bGliL3Zmc2NvcmUvZm9wcy5jCkBAIC00MiwxNCArNDIsOCBAQAogI2luY2x1ZGUgPG9zdi9tbXUu
aGg+CiAjaW5jbHVkZSA8b3N2L3BhZ2VjYWNoZS5oaD4KIAotdmZzX2ZpbGU6OnZmc19maWxlKHVu
c2lnbmVkIGZsYWdzKQotCTogZmlsZShmbGFncywgRFRZUEVfVk5PREUpCitpbnQgdmZzX2Nsb3Nl
KHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwKQogewotfQotCi1pbnQgdmZzX2ZpbGU6OmNsb3NlKCkK
LXsKLQlhdXRvIGZwID0gdGhpczsKIAlzdHJ1Y3Qgdm5vZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5k
X3Zub2RlOwogCWludCBlcnJvcjsKIApAQCAtNjAsMTMgKzU0LDE0IEBAIGludCB2ZnNfZmlsZTo6
Y2xvc2UoKQogCWlmIChlcnJvcikKIAkJcmV0dXJuIGVycm9yOwogCi0JZnAtPmZfZGVudHJ5LnJl
c2V0KCk7CisJLyogRGVudHJ5IHN0YXlzIGZvcmV2ZXIgaW4gdGhlIGRlbnRyeSBjYWNoZS4gVW5s
ZXNzIHRoZQorCSAqIGZpbGUvZGlyZWN0b3J5IGl0IHJlZmVycyB0byBnZXRzIGRlbGV0ZWQvcmVu
YW1lZCAqLworCWZwLT5mX2RlbnRyeSA9IE5VTEw7CiAJcmV0dXJuIDA7CiB9CiAKLWludCB2ZnNf
ZmlsZTo6cmVhZChzdHJ1Y3QgdWlvICp1aW8sIGludCBmbGFncykKK2ludCB2ZnNfcmVhZChzdHJ1
Y3QgdmZzY29yZV9maWxlICpmcCwgc3RydWN0IHVpbyAqdWlvLCBpbnQgZmxhZ3MpCiB7Ci0JYXV0
byBmcCA9IHRoaXM7CiAJc3RydWN0IHZub2RlICp2cCA9IGZwLT5mX2RlbnRyeS0+ZF92bm9kZTsK
IAlpbnQgZXJyb3I7CiAJc2l6ZV90IGNvdW50OwpAQCAtOTAsOSArODUsOCBAQCBpbnQgdmZzX2Zp
bGU6OnJlYWQoc3RydWN0IHVpbyAqdWlvLCBpbnQgZmxhZ3MpCiB9CiAKIAotaW50IHZmc19maWxl
Ojp3cml0ZShzdHJ1Y3QgdWlvICp1aW8sIGludCBmbGFncykKK2ludCB2ZnNfd3JpdGUoc3RydWN0
IHZmc2NvcmVfZmlsZSAqZnAsIHN0cnVjdCB1aW8gKnVpbywgaW50IGZsYWdzKQogewotCWF1dG8g
ZnAgPSB0aGlzOwogCXN0cnVjdCB2bm9kZSAqdnAgPSBmcC0+Zl9kZW50cnktPmRfdm5vZGU7CiAJ
aW50IGlvZmxhZ3MgPSAwOwogCWludCBlcnJvcjsKQEAgLTEyMiw5ICsxMTYsOCBAQCBpbnQgdmZz
X2ZpbGU6OndyaXRlKHN0cnVjdCB1aW8gKnVpbywgaW50IGZsYWdzKQogCXJldHVybiBlcnJvcjsK
IH0KIAotaW50IHZmc19maWxlOjppb2N0bCh1X2xvbmcgY29tLCB2b2lkICpkYXRhKQoraW50IHZm
c19pb2N0bChzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCwgdV9sb25nIGNvbSwgdm9pZCAqZGF0YSkK
IHsKLQlhdXRvIGZwID0gdGhpczsKIAlzdHJ1Y3Qgdm5vZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5k
X3Zub2RlOwogCWludCBlcnJvcjsKIApAQCAtMTM1LDkgKzEyOCw4IEBAIGludCB2ZnNfZmlsZTo6
aW9jdGwodV9sb25nIGNvbSwgdm9pZCAqZGF0YSkKIAlyZXR1cm4gZXJyb3I7CiB9CiAKLWludCB2
ZnNfZmlsZTo6c3RhdChzdHJ1Y3Qgc3RhdCAqc3QpCitpbnQgdmZzX3N0YXQoc3RydWN0IHZmc2Nv
cmVfZmlsZSAqZnAsIHN0cnVjdCBzdGF0ICpzdCkKIHsKLQlhdXRvIGZwID0gdGhpczsKIAlzdHJ1
Y3Qgdm5vZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOwogCWludCBlcnJvcjsKIApAQCAt
MTQ3LDcwICsxMzksMyBAQCBpbnQgdmZzX2ZpbGU6OnN0YXQoc3RydWN0IHN0YXQgKnN0KQogCiAJ
cmV0dXJuIGVycm9yOwogfQotCi1pbnQgdmZzX2ZpbGU6OnBvbGwoaW50IGV2ZW50cykKLXsKLQly
ZXR1cm4gcG9sbF9ub19wb2xsKGV2ZW50cyk7Ci19Ci0KLWludCB2ZnNfZmlsZTo6dHJ1bmNhdGUo
b2ZmX3QgbGVuKQotewotCS8vIHNvbWVob3cgdGhpcyBpcyBoYW5kbGVkIG91dHNpZGUgZmlsZSBv
cHMKLQlhYm9ydCgpOwotfQotCi1pbnQgdmZzX2ZpbGU6OmNobW9kKG1vZGVfdCBtb2RlKQotewot
CS8vIHNvbWVob3cgdGhpcyBpcyBoYW5kbGVkIG91dHNpZGUgZmlsZSBvcHMKLQlhYm9ydCgpOwot
fQotCi1ib29sIHZmc19maWxlOjptYXBfcGFnZSh1aW50cHRyX3Qgb2ZmLCBtbXU6Omh3X3B0ZXA8
MD4gcHRlcCwgbW11OjpwdF9lbGVtZW50PDA+IHB0ZSwgYm9vbCB3cml0ZSwgYm9vbCBzaGFyZWQp
Ci17Ci0JcmV0dXJuIHBhZ2VjYWNoZTo6Z2V0KHRoaXMsIG9mZiwgcHRlcCwgcHRlLCB3cml0ZSwg
c2hhcmVkKTsKLX0KLQotYm9vbCB2ZnNfZmlsZTo6cHV0X3BhZ2Uodm9pZCAqYWRkciwgdWludHB0
cl90IG9mZiwgbW11Ojpod19wdGVwPDA+IHB0ZXApCi17Ci0JcmV0dXJuIHBhZ2VjYWNoZTo6cmVs
ZWFzZSh0aGlzLCBhZGRyLCBvZmYsIHB0ZXApOwotfQotCi12b2lkIHZmc19maWxlOjpzeW5jKG9m
Zl90IHN0YXJ0LCBvZmZfdCBlbmQpCi17Ci0JcGFnZWNhY2hlOjpzeW5jKHRoaXMsIHN0YXJ0LCBl
bmQpOwotfQotCi0vLyBMb2NraW5nOiBWT1BfQ0FDSEUgd2lsbCBjYWxsIGludG8gdGhlIGZpbGVz
eXN0ZW0sIGFuZCB0aGF0IGNhbiB0cmlnZ2VyIGFuCi0vLyBldmljdGlvbiB0aGF0IHdpbGwgaG9s
ZCB0aGUgbW11LXNpZGUgbG9jayB0aGF0IHByb3RlY3RzIHRoZSBtYXBwaW5ncwotLy8gQWx3YXlz
IGZvbGxvdyB0aGF0IG9yZGVyLiBXZSBob3dldmVyIGNhbid0IGp1c3QgZ2V0IHJpZCBvZiB0aGUg
bW11LXNpZGUgbG9jaywKLS8vIGJlY2F1c2Ugbm90IGFsbCBpbnZhbGlkYXRpb25zIHdpbGwgYmUg
c3luY2hyb25vdXMuCi1pbnQgdmZzX2ZpbGU6OmdldF9hcmNidWYodm9pZCoga2V5LCBvZmZfdCBv
ZmZzZXQpCi17Ci0Jc3RydWN0IHZub2RlICp2cCA9IGZfZGVudHJ5LT5kX3Zub2RlOwotCi0JaW92
ZWMgaW9bMV07Ci0KLQlpb1swXS5pb3ZfYmFzZSA9IGtleTsKLQl1aW8gZGF0YTsKLQlkYXRhLnVp
b19pb3YgPSBpbzsKLQlkYXRhLnVpb19pb3ZjbnQgPSAxOwotCWRhdGEudWlvX29mZnNldCA9IG9m
ZnNldDsKLQlkYXRhLnVpb19yZXNpZCA9IG1tdTo6cGFnZV9zaXplOwotCWRhdGEudWlvX3J3ID0g
VUlPX1JFQUQ7Ci0KLQl2bl9sb2NrKHZwKTsKLQlhc3NlcnQoVk9QX0NBQ0hFKHZwLCB0aGlzLCAm
ZGF0YSkgPT0gMCk7Ci0Jdm5fdW5sb2NrKHZwKTsKLQotCXJldHVybiAoZGF0YS51aW9fcmVzaWQg
IT0gMCkgPyAtMSA6IDA7Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxtbXU6OmZpbGVfdm1hPiB2ZnNf
ZmlsZTo6bW1hcChhZGRyX3JhbmdlIHJhbmdlLCB1bnNpZ25lZCBmbGFncywgdW5zaWduZWQgcGVy
bSwgb2ZmX3Qgb2Zmc2V0KQotewotCWF1dG8gZnAgPSB0aGlzOwotCXN0cnVjdCB2bm9kZSAqdnAg
PSBmcC0+Zl9kZW50cnktPmRfdm5vZGU7Ci0JaWYgKCF2cC0+dl9vcC0+dm9wX2NhY2hlIHx8ICh2
cC0+dl9zaXplIDwgKG9mZl90KW1tdTo6cGFnZV9zaXplKSkgewotCQlyZXR1cm4gbW11OjpkZWZh
dWx0X2ZpbGVfbW1hcCh0aGlzLCByYW5nZSwgZmxhZ3MsIHBlcm0sIG9mZnNldCk7Ci0JfQotCXJl
dHVybiBtbXU6Om1hcF9maWxlX21tYXAodGhpcywgcmFuZ2UsIGZsYWdzLCBwZXJtLCBvZmZzZXQp
OwotfQpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2RlbnRyeS5oIGIv
bGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2RlbnRyeS5oCmluZGV4IDJkMmVhYTFiLi45Y2Zl
OGRhYyAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2RlbnRyeS5oCisr
KyBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9kZW50cnkuaApAQCAtNTQsMjAgKzU0LDQg
QEAgc3RydWN0IGRlbnRyeSB7CiAJTElTVF9FTlRSWShkZW50cnkpIGRfY2hpbGRyZW5fbGluazsK
IH07CiAKLSNpZmRlZiBfX2NwbHVzcGx1cwotCi0jaW5jbHVkZSA8Ym9vc3QvaW50cnVzaXZlX3B0
ci5ocHA+Ci0KLXVzaW5nIGRlbnRyeV9yZWYgPSBib29zdDo6aW50cnVzaXZlX3B0cjxkZW50cnk+
OwotCi1leHRlcm4gIkMiIHsKLQl2b2lkIGRyZWYoc3RydWN0IGRlbnRyeSogZHApOwotCXZvaWQg
ZHJlbGUoc3RydWN0IGRlbnRyeSogZHApOwotfTsKLQotaW5saW5lIHZvaWQgaW50cnVzaXZlX3B0
cl9hZGRfcmVmKGRlbnRyeSogZHApIHsgZHJlZihkcCk7IH0KLWlubGluZSB2b2lkIGludHJ1c2l2
ZV9wdHJfcmVsZWFzZShkZW50cnkqIGRwKSB7IGRyZWxlKGRwKTsgfQotCi0jZW5kaWYKLQogI2Vu
ZGlmIC8qIF9PU1ZfREVOVFJZX0ggKi8KZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUv
dmZzY29yZS9tb3VudC5oIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmgKaW5k
ZXggMGU3ODkyOWYuLmI2OGQzYzk4IDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zm
c2NvcmUvbW91bnQuaAorKysgYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvbW91bnQuaApA
QCAtMzcsOCArMzcsNiBAQAogI2luY2x1ZGUgPG9zdi92bm9kZS5oPgogI2luY2x1ZGUgPGJzZC9z
eXMvc3lzL3F1ZXVlLmg+CiAKLV9fQkVHSU5fREVDTFMKLQogI2lmZGVmIF9LRVJORUwKIAogLyoK
QEAgLTE0NCwyOCArMTQyLDQgQEAgdm9pZAkgdmZzX3VuYnVzeShzdHJ1Y3QgbW91bnQgKm1wKTsK
IAogdm9pZAkgcmVsZWFzZV9tcF9kZW50cmllcyhzdHJ1Y3QgbW91bnQgKm1wKTsKIAotI2VuZGlm
Ci0KLV9fRU5EX0RFQ0xTCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotCi0jaW5jbHVkZSA8dmVjdG9y
PgotI2luY2x1ZGUgPHN0cmluZz4KLQotbmFtZXNwYWNlIG9zdiB7Ci0KLXN0cnVjdCBtb3VudF9k
ZXNjIHsKLQlzdGQ6OnN0cmluZyBzcGVjaWFsOwotCXN0ZDo6c3RyaW5nIHBhdGg7Ci0Jc3RkOjpz
dHJpbmcgdHlwZTsKLQlzdGQ6OnN0cmluZyBvcHRpb25zOwotfTsKLQotc3RkOjp2ZWN0b3I8bW91
bnRfZGVzYz4gY3VycmVudF9tb3VudHMoKTsKLQotfQotCi0jZW5kaWYKLQogI2VuZGlmCS8qICFf
U1lTX01PVU5UX0hfICovCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUv
cHJleC5oIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3ByZXguaAppbmRleCA3YjA1MzMx
OS4uNmNiZTMxMzAgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9wcmV4
LmgKKysrIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3ByZXguaApAQCAtNDAsMTAgKzQw
LDYgQEAKICNpbmNsdWRlIDx1bmlzdGQuaD4KICNpbmNsdWRlIDxvc3YvZmNudGwuaD4KIAotX19C
RUdJTl9ERUNMUwotCi0jZGVmaW5lIF9fcGFja2VkICAgICAgICBfX2F0dHJpYnV0ZV9fKChfX3Bh
Y2tlZF9fKSkKLQogI2RlZmluZQlCU0laRQk1MTIJCS8qIHNpemUgb2Ygc2Vjb25kYXJ5IGJsb2Nr
IChieXRlcykgKi8KIAogI2RlZmluZSBET19SRFdSCQkweDIKQEAgLTU3LDYgKzUzLDQgQEAgc2l6
ZV90IHN0cmxjcHkoY2hhciAqZHN0LCBjb25zdCBjaGFyICpzcmMsIHNpemVfdCBzaXopOwogCiB2
b2lkIHN5c19wYW5pYyhjb25zdCBjaGFyICopOwogCi1fX0VORF9ERUNMUwotCiAjZW5kaWYgLyog
X09TVl9QUkVYX0ggKi8KZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS91
aW8uaCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS91aW8uaAppbmRleCA2OTZiMDFjZi4u
ZDdmN2ZjZTkgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS91aW8uaAor
KysgYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdWlvLmgKQEAgLTM4LDggKzM4LDYgQEAK
ICNpbmNsdWRlIDxzeXMvdWlvLmg+CiAjaW5jbHVkZSA8bGltaXRzLmg+CiAKLV9fQkVHSU5fREVD
TFMKLQogZW51bQl1aW9fcncgeyBVSU9fUkVBRCwgVUlPX1dSSVRFIH07CiAKIC8qCkBAIC02Miwy
OCArNjAsNCBAQCBzdHJ1Y3QgdWlvIHsKIAogaW50CXVpb21vdmUodm9pZCAqY3AsIGludCBuLCBz
dHJ1Y3QgdWlvICp1aW8pOwogCi1fX0VORF9ERUNMUwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLQot
dGVtcGxhdGUgPHR5cGVuYW1lIEY+Ci1zdGF0aWMgaW5saW5lIHZvaWQgbGluZWFyaXplX3Vpb193
cml0ZShzdHJ1Y3QgdWlvICp1aW8sIGludCBpb2ZsYWcsIEYgZikKLXsKLSAgICB3aGlsZSAodWlv
LT51aW9fcmVzaWQgPiAwKSB7Ci0gICAgICAgIHN0cnVjdCBpb3ZlYyAqaW92ID0gdWlvLT51aW9f
aW92OwotCi0gICAgICAgIGlmIChpb3YtPmlvdl9sZW4pIHsKLSAgICAgICAgICAgIGYocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBjaGFyICo+KGlvdi0+aW92X2Jhc2UpLAotICAgICAgICAgICAgICAg
IGlvdi0+aW92X2xlbik7Ci0gICAgICAgIH0KLQotICAgICAgICB1aW8tPnVpb19pb3YrKzsKLSAg
ICAgICAgdWlvLT51aW9faW92Y250LS07Ci0gICAgICAgIHVpby0+dWlvX3Jlc2lkIC09IGlvdi0+
aW92X2xlbjsKLSAgICAgICAgdWlvLT51aW9fb2Zmc2V0ICs9IGlvdi0+aW92X2xlbjsKLSAgICB9
Ci19Ci0KLSNlbmRpZgotCiAjZW5kaWYgLyogIV9VSU9fSF8gKi8KZGlmZiAtLWdpdCBhL2xpYi92
ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5oIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNj
b3JlL3Zub2RlLmgKaW5kZXggNDg3NGYxYjkuLmQzMGE5NDExIDEwMDY0NAotLS0gYS9saWIvdmZz
Y29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUuaAorKysgYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zm
c2NvcmUvdm5vZGUuaApAQCAtNDMsOCArNDMsNiBAQAogI2luY2x1ZGUgImZpbGUuaCIKICNpbmNs
dWRlICJkaXJlbnQuaCIKIAotX19CRUdJTl9ERUNMUwotCiBzdHJ1Y3QgdmZzb3BzOwogc3RydWN0
IHZub3BzOwogc3RydWN0IHZub2RlOwpAQCAtMjQyLDggKzI0MCw2IEBAIHN0YXRpYyBpbmxpbmUg
dm9pZCB2bm9kZV9wYWdlcl9zZXRzaXplKHN0cnVjdCB2bm9kZSAqdnAsIG9mZl90IHNpemUpCiAJ
dnAtPnZfc2l6ZSA9IHNpemU7CiB9CiAKLV9fRU5EX0RFQ0xTCi0KICNlbmRpZgogCiAjZW5kaWYg
LyogIV9TWVNfVk5PREVfSF8gKi8KZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2xvb2t1cC5jIGIv
bGliL3Zmc2NvcmUvbG9va3VwLmMKaW5kZXggMGFhNWNhM2IuLmY3YTM4YzRmIDEwMDY0NAotLS0g
YS9saWIvdmZzY29yZS9sb29rdXAuYworKysgYi9saWIvdmZzY29yZS9sb29rdXAuYwpAQCAtNjMs
MzMgKzYzLDMxIEBAIHJlYWRfbGluayhzdHJ1Y3Qgdm5vZGUgKnZwLCBjaGFyICpidWYsIHNpemVf
dCBidWZzeiwgc3NpemVfdCAqc3opCiBpbnQKIG5hbWVpX2ZvbGxvd19saW5rKHN0cnVjdCBkZW50
cnkgKmRwLCBjaGFyICpub2RlLCBjaGFyICpuYW1lLCBjaGFyICpmcCwgc2l6ZV90IG1vdW50cG9p
bnRfbGVuKQogewotCXN0ZDo6dW5pcXVlX3B0cjxjaGFyIFtdPiBsaW5rIChuZXcgY2hhcltQQVRI
X01BWF0pOwotCXN0ZDo6dW5pcXVlX3B0cjxjaGFyIFtdPiB0IChuZXcgY2hhcltQQVRIX01BWF0p
OwotCWNoYXIgICAgKmxwOworCWNoYXIgbGlua1tQQVRIX01BWF07CisJY2hhciB0W1BBVEhfTUFY
XTsKIAlpbnQgICAgIGVycm9yOwogCXNzaXplX3Qgc3o7CiAJY2hhciAgICAqcDsKIAlpbnQgICAg
IGM7CiAKLQlscCAgICA9IGxpbmsuZ2V0KCk7Ci0JZXJyb3IgPSByZWFkX2xpbmsoZHAtPmRfdm5v
ZGUsIGxwLCBQQVRIX01BWCwgJnN6KTsKKwllcnJvciA9IHJlYWRfbGluayhkcC0+ZF92bm9kZSwg
bGluaywgUEFUSF9NQVgsICZzeik7CiAJaWYgKGVycm9yICE9IDApIHsKIAkJcmV0dXJuIChlcnJv
cik7CiAJfQotCWxwW3N6XSA9IDA7CisJbGlua1tzel0gPSAwOwogCiAJcCA9IGZwICsgbW91bnRw
b2ludF9sZW4gKyBzdHJsZW4obm9kZSk7CiAJYyA9IHN0cmxlbihub2RlKSAtIHN0cmxlbihuYW1l
KSAtIDE7CiAJbm9kZVtjXSA9IDA7CiAKLQlpZiAobHBbMF0gPT0gJy8nKSB7Ci0JCXN0cmxjYXQo
bHAsIHAsIFBBVEhfTUFYKTsKLQkJc3RybGNweShmcCwgbHAsIFBBVEhfTUFYKTsKKwlpZiAobGlu
a1swXSA9PSAnLycpIHsKKwkJc3RybGNhdChsaW5rLCBwLCBQQVRIX01BWCk7CisJCXN0cmxjcHko
ZnAsIGxpbmssIFBBVEhfTUFYKTsKIAl9IGVsc2UgewotCQlzdHJsY3B5KHQuZ2V0KCksIHAsIFBB
VEhfTUFYKTsKKwkJc3RybGNweSh0LCBwLCBQQVRIX01BWCk7CiAJCXN0cmxjcHkobm9kZSwgZnAs
IG1vdW50cG9pbnRfbGVuICsgYyArIDEpOwotCQlwYXRoX2NvbnYobm9kZSwgbHAsIGZwKTsKLQkJ
c3RybGNhdChmcCwgdC5nZXQoKSwgUEFUSF9NQVgpOworCQlwYXRoX2NvbnYobm9kZSwgbGluaywg
ZnApOworCQlzdHJsY2F0KGZwLCB0LCBQQVRIX01BWCk7CiAJfQogCW5vZGVbMF0gPSAwOwogCW5h
bWVbMF0gPSAwOwpAQCAtMTA3LDggKzEwNSw3IEBAIG5hbWVpKGNvbnN0IGNoYXIgKnBhdGgsIHN0
cnVjdCBkZW50cnkgKipkcHApCiAJY2hhciAqcDsKIAljaGFyIG5vZGVbUEFUSF9NQVhdOwogCWNo
YXIgbmFtZVtQQVRIX01BWF07Ci0Jc3RkOjp1bmlxdWVfcHRyPGNoYXIgW10+IGZwIChuZXcgY2hh
ciBbUEFUSF9NQVhdKTsKLQlzdGQ6OnVuaXF1ZV9wdHI8Y2hhciBbXT4gdCAobmV3IGNoYXIgW1BB
VEhfTUFYXSk7CisJY2hhciBmcFtQQVRIX01BWF07CiAJc3RydWN0IG1vdW50ICptcDsKIAlzdHJ1
Y3QgZGVudHJ5ICpkcCwgKmRkcDsKIAlzdHJ1Y3Qgdm5vZGUgKmR2cCwgKnZwOwpAQCAtMTE5LDcg
KzExNiw3IEBAIG5hbWVpKGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBkZW50cnkgKipkcHApCiAJ
RFBSSU5URihWRlNEQl9WTk9ERSwgKCJuYW1laTogcGF0aD0lc1xuIiwgcGF0aCkpOwogCiAJbGlu
a3NfZm9sbG93ZWQgPSAwOwotCXN0cmxjcHkoZnAuZ2V0KCksIHBhdGgsIFBBVEhfTUFYKTsKKwlz
dHJsY3B5KGZwLCBwYXRoLCBQQVRIX01BWCk7CiAKIAlkbyB7CiAJCW5lZWRfY29udGludWUgPSBm
YWxzZTsKQEAgLTEyNywxMCArMTI0LDEwIEBAIG5hbWVpKGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVj
dCBkZW50cnkgKipkcHApCiAJCSAqIENvbnZlcnQgYSBmdWxsIHBhdGggbmFtZSB0byBpdHMgbW91
bnQgcG9pbnQgYW5kCiAJCSAqIHRoZSBsb2NhbCBub2RlIGluIHRoZSBmaWxlIHN5c3RlbS4KIAkJ
ICovCi0JCWlmICh2ZnNfZmluZHJvb3QoZnAuZ2V0KCksICZtcCwgJnApKSB7CisJCWlmICh2ZnNf
ZmluZHJvb3QoZnAsICZtcCwgJnApKSB7CiAJCQlyZXR1cm4gRU5PVERJUjsKIAkJfQotCQlpbnQg
bW91bnRwb2ludF9sZW4gPSBwIC0gZnAuZ2V0KCkgLSAxOworCQlpbnQgbW91bnRwb2ludF9sZW4g
PSBwIC0gZnAgLSAxOwogCQlzdHJsY3B5KG5vZGUsICIvIiwgc2l6ZW9mKG5vZGUpKTsKIAkJc3Ry
bGNhdChub2RlLCBwLCBzaXplb2Yobm9kZSkpOwogCQlkcCA9IGRlbnRyeV9sb29rdXAobXAsIG5v
ZGUpOwpAQCAtMjAzLDcgKzIwMCw3IEBAIG5hbWVpKGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBk
ZW50cnkgKipkcHApCiAJCQlkZHAgPSBkcDsKIAogCQkJaWYgKGRwLT5kX3Zub2RlLT52X3R5cGUg
PT0gVkxOSykgewotCQkJCWVycm9yID0gbmFtZWlfZm9sbG93X2xpbmsoZHAsIG5vZGUsIG5hbWUs
IGZwLmdldCgpLCBtb3VudHBvaW50X2xlbik7CisJCQkJZXJyb3IgPSBuYW1laV9mb2xsb3dfbGlu
ayhkcCwgbm9kZSwgbmFtZSwgZnAsIG1vdW50cG9pbnRfbGVuKTsKIAkJCQlpZiAoZXJyb3IpIHsK
IAkJCQkJZHJlbGUoZHApOwogCQkJCQlyZXR1cm4gKGVycm9yKTsKQEAgLTIxMSw3ICsyMDgsNyBA
QCBuYW1laShjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3QgZGVudHJ5ICoqZHBwKQogCiAJCQkJZHJl
bGUoZHApOwogCi0JCQkJcCAgICAgICA9IGZwLmdldCgpOworCQkJCXAgICAgICAgPSBmcDsKIAkJ
CQlkcCAgICAgID0gbnVsbHB0cjsKIAkJCQlkZHAgICAgID0gbnVsbHB0cjsKIAkJCQl2cCAgICAg
ID0gbnVsbHB0cjsKQEAgLTI1NCw3ICsyNTEsNyBAQCBuYW1laV9sYXN0X25vZm9sbG93KGNoYXIg
KnBhdGgsIHN0cnVjdCBkZW50cnkgKmRkcCwgc3RydWN0IGRlbnRyeSAqKmRwcCkKIAlzdHJ1Y3Qg
ZGVudHJ5ICpkcDsKIAlzdHJ1Y3Qgdm5vZGUgICpkdnA7CiAJc3RydWN0IHZub2RlICAqdnA7Ci0J
c3RkOjp1bmlxdWVfcHRyPGNoYXIgW10+IG5vZGUgKG5ldyBjaGFyW1BBVEhfTUFYXSk7CisJY2hh
ciBub2RlW1BBVEhfTUFYXTsKIAogCWR2cCAgPSBudWxscHRyOwogCkBAIC0yNzMsMjYgKzI3MCwy
NiBAQCBuYW1laV9sYXN0X25vZm9sbG93KGNoYXIgKnBhdGgsIHN0cnVjdCBkZW50cnkgKmRkcCwg
c3RydWN0IGRlbnRyeSAqKmRwcCkKIAkJcmV0dXJuIChFTk9URElSKTsKIAl9CiAKLQlzdHJsY3B5
KG5vZGUuZ2V0KCksICIvIiwgUEFUSF9NQVgpOwotCXN0cmxjYXQobm9kZS5nZXQoKSwgcCwgUEFU
SF9NQVgpOworCXN0cmxjcHkobm9kZSwgIi8iLCBQQVRIX01BWCk7CisJc3RybGNhdChub2RlLCBw
LCBQQVRIX01BWCk7CiAKIAkvLyBXZSB3YW50IHRvIHRyZWF0IHRoaW5ncyBsaWtlIC90bXAvIHRo
ZSBzYW1lIGFzIC90bXAuIEJlc3Qgd2F5IHRvIGRvIHRoYXQKIAkvLyBpcyB0byBpZ25vcmUgdGhl
IGxhc3QgY2hhcmFjdGVyLCBleGNlcHQgd2hlbiB3ZSdyZSBzdGF0aW5nIHRoZSByb290LgotCWF1
dG8gbCA9IHN0cmxlbihub2RlLmdldCgpKSAtIDE7Ci0JaWYgKGwgJiYgbm9kZS5nZXQoKVtsXSA9
PSAnLycpIHsKLQkJbm9kZS5nZXQoKVtsXSA9ICdcMCc7CisJaW50IGwgPSBzdHJsZW4obm9kZSkg
LSAxOworCWlmIChsICYmIG5vZGVbbF0gPT0gJy8nKSB7CisJCW5vZGVbbF0gPSAnXDAnOwogCX0K
IAogCWR2cCA9IGRkcC0+ZF92bm9kZTsKIAl2bl9sb2NrKGR2cCk7Ci0JZHAgPSBkZW50cnlfbG9v
a3VwKG1wLCBub2RlLmdldCgpKTsKKwlkcCA9IGRlbnRyeV9sb29rdXAobXAsIG5vZGUpOwogCWlm
IChkcCA9PSBudWxscHRyKSB7CiAJCWVycm9yID0gVk9QX0xPT0tVUChkdnAsIG5hbWUsICZ2cCk7
CiAJCWlmIChlcnJvciAhPSAwKSB7CiAJCQlnb3RvIG91dDsKIAkJfQogCi0JCWRwID0gZGVudHJ5
X2FsbG9jKGRkcCwgdnAsIG5vZGUuZ2V0KCkpOworCQlkcCA9IGRlbnRyeV9hbGxvYyhkZHAsIHZw
LCBub2RlKTsKIAkJdnB1dCh2cCk7CiAKIAkJaWYgKGRwID09IG51bGxwdHIpIHsKZGlmZiAtLWdp
dCBhL2xpYi92ZnNjb3JlL21haW4uYyBiL2xpYi92ZnNjb3JlL21haW4uYwppbmRleCBlMzAwNDU5
Ny4uNzQ4NzZkYzEgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL21haW4uYworKysgYi9saWIvdmZz
Y29yZS9tYWluLmMKQEAgLTc3LDE4ICs3NywxNiBAQAogI2luY2x1ZGUgPGFwaS91dGltZS5oPgog
I2luY2x1ZGUgPGNocm9ubz4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogCiAjaWZkZWYgREVC
VUdfVkZTCiBpbnQJdmZzX2RlYnVnID0gVkZTREJfRkxBR1M7CiAjZW5kaWYKIAotc3RkOjphdG9t
aWM8bW9kZV90PiBnbG9iYWxfdW1hc2t7U19JV0dSUCB8IFNfSVdPVEh9Oworc3RhdGljIG1vZGVf
dCBnbG9iYWxfdW1hc2sgPSBTX0lXR1JQIHwgU19JV09USDsKIAogc3RhdGljIGlubGluZSBtb2Rl
X3QgYXBwbHlfdW1hc2sobW9kZV90IG1vZGUpCiB7Ci0JcmV0dXJuIG1vZGUgJiB+Z2xvYmFsX3Vt
YXNrLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7CisJcmV0dXJuIG1vZGUgJiB+dWth
cmNoX2xvYWRfbigmZ2xvYmFsX3VtYXNrKTsKIH0KIAogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfb3Bl
biwgIlwiJXNcIiAweCV4IDAlMG8iLCBjb25zdCBjaGFyKiwgaW50LCBtb2RlX3QpOwpAQCAtOTcs
NyArOTUsNiBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19vcGVuX2VyciwgIiVkIiwgaW50KTsKIAog
c3RydWN0IHRhc2sgKm1haW5fdGFzazsJLyogd2Ugb25seSBoYXZlIGEgc2luZ2xlIHByb2Nlc3Mg
Ki8KIAotZXh0ZXJuICJDIgogaW50IG9wZW4oY29uc3QgY2hhciAqcGF0aG5hbWUsIGludCBmbGFn
cywgLi4uKQogewogCW1vZGVfdCBtb2RlID0gMDsKQEAgLTE3OCw4ICsxNzUsNyBAQCBpbnQgb3Bl
bmF0KGludCBkaXJmZCwgY29uc3QgY2hhciAqcGF0aG5hbWUsIGludCBmbGFncywgLi4uKQogCXN0
cnVjdCB2bm9kZSAqdnAgPSBmcC0+Zl9kZW50cnktPmRfdm5vZGU7CiAJdm5fbG9jayh2cCk7CiAK
LQlzdGQ6OnVuaXF1ZV9wdHI8Y2hhciBbXT4gdXAgKG5ldyBjaGFyW1BBVEhfTUFYXSk7Ci0JY2hh
ciAqcCA9IHVwLmdldCgpOworCWNoYXIgcFtQQVRIX01BWF07CiAKIAkvKiBidWlsZCBhYnNvbHV0
ZSBwYXRoICovCiAJc3RybGNweShwLCBmcC0+Zl9kZW50cnktPmRfbW91bnQtPm1fcGF0aCwgUEFU
SF9NQVgpOwpAQCAtMTk2LDI2ICsxOTIsNiBAQCBpbnQgb3BlbmF0KGludCBkaXJmZCwgY29uc3Qg
Y2hhciAqcGF0aG5hbWUsIGludCBmbGFncywgLi4uKQogfQogTEZTNjQob3BlbmF0KTsKIAotLy8g
b3BlbigpIGhhcyBhbiBvcHRpb25hbCB0aGlyZCBhcmd1bWVudCwgIm1vZGUiLCB3aGljaCBpcyBv
bmx5IG5lZWRlZCBpbgotLy8gc29tZSBjYXNlcyAod2hlbiB0aGUgT19DUkVBVCBtb2RlIGlzIHVz
ZWQpLiBBcyBhIHNhZmV0eSBmZWF0dXJlLCByZWNlbnQKLS8vIHZlcnNpb25zIG9mIEdsaWJjIGFk
ZCBhIGZlYXR1cmUgd2hlcmUgb3BlbigpIHdpdGggdHdvIGFyZ3VtZW50cyBpcyByZXBsYWNlZAot
Ly8gYnkgYSBjYWxsIHRvIF9fb3Blbl8yKCksIHdoaWNoIHZlcmlmaWVzIGl0IGlzbid0IGNhbGxl
ZCB3aXRoIE9fQ1JFQVRFLgotZXh0ZXJuICJDIiBpbnQgX19vcGVuXzIoY29uc3QgY2hhciAqcGF0
aG5hbWUsIGludCBmbGFncykKLXsKLQlhc3NlcnQoIShmbGFncyAmIE9fQ1JFQVQpKTsKLQlyZXR1
cm4gb3BlbihwYXRobmFtZSwgZmxhZ3MsIDApOwotfQotCi1leHRlcm4gIkMiIGludCBfX29wZW42
NF8yKGNvbnN0IGNoYXIgKmZpbGUsIGludCBmbGFncykKLXsKLQlpZiAoZmxhZ3MgJiBPX0NSRUFU
KSB7Ci0JCWVycm5vID0gRUlOVkFMOwotCQlyZXR1cm4gLTE7Ci0JfQotCi0JcmV0dXJuIG9wZW42
NChmaWxlLCBmbGFncyk7Ci19Ci0KIGludCBjcmVhdChjb25zdCBjaGFyICpwYXRobmFtZSwgbW9k
ZV90IG1vZGUpCiB7CiAJcmV0dXJuIG9wZW4ocGF0aG5hbWUsIE9fQ1JFQVR8T19XUk9OTFl8T19U
UlVOQywgbW9kZSk7CkBAIC0yNDksNyArMjI1LDYgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbWtu
b2RfcmV0LCAiIik7CiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19ta25vZF9lcnIsICIlZCIsIGludCk7
CiAKIAotZXh0ZXJuICJDIgogaW50IF9feG1rbm9kKGludCB2ZXIsIGNvbnN0IGNoYXIgKnBhdGhu
YW1lLCBtb2RlX3QgbW9kZSwgZGV2X3QgKmRldikKIHsKIAlhc3NlcnQodmVyID09IDApOyAvLyBP
biB4ODYtNjQgTGludXgsIF9NS05PRF9WRVJfTElOVVggaXMgMC4KQEAgLTU0Myw3ICs1MTgsNiBA
QCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19mc3RhdCwgIiVkICVwIiwgaW50LCBzdHJ1Y3Qgc3RhdCop
OwogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZnN0YXRfcmV0LCAiIik7CiBUUkFDRVBPSU5UKHRyYWNl
X3Zmc19mc3RhdF9lcnIsICIlZCIsIGludCk7CiAKLWV4dGVybiAiQyIKIGludCBfX2Z4c3RhdChp
bnQgdmVyLCBpbnQgZmQsIHN0cnVjdCBzdGF0ICpzdCkKIHsKIAlzdHJ1Y3QgZmlsZSAqZnA7CkBA
IC01NzEsNyArNTQ1LDYgQEAgaW50IF9fZnhzdGF0KGludCB2ZXIsIGludCBmZCwgc3RydWN0IHN0
YXQgKnN0KQogCiBMRlM2NChfX2Z4c3RhdCk7CiAKLWV4dGVybiAiQyIKIGludCBmc3RhdChpbnQg
ZmQsIHN0cnVjdCBzdGF0ICpzdCkKIHsKIAlyZXR1cm4gX19meHN0YXQoMSwgZmQsIHN0KTsKQEAg
LTU3OSw3ICs1NTIsNiBAQCBpbnQgZnN0YXQoaW50IGZkLCBzdHJ1Y3Qgc3RhdCAqc3QpCiAKIExG
UzY0KGZzdGF0KTsKIAotZXh0ZXJuICJDIgogaW50IF9fZnhzdGF0YXQoaW50IHZlciwgaW50IGRp
cmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwgc3RydWN0IHN0YXQgKnN0LAogCQlpbnQgZmxhZ3Mp
CiB7CkBAIC02MDYsOCArNTc4LDcgQEAgaW50IF9fZnhzdGF0YXQoaW50IHZlciwgaW50IGRpcmZk
LCBjb25zdCBjaGFyICpwYXRobmFtZSwgc3RydWN0IHN0YXQgKnN0LAogCXN0cnVjdCB2bm9kZSAq
dnAgPSBmcC0+Zl9kZW50cnktPmRfdm5vZGU7CiAJdm5fbG9jayh2cCk7CiAKLQlzdGQ6OnVuaXF1
ZV9wdHI8Y2hhciBbXT4gdXAgKG5ldyBjaGFyW1BBVEhfTUFYXSk7Ci0JY2hhciAqcCA9IHVwLmdl
dCgpOworCWNoYXIgcFtQQVRIX01BWF07CiAJLyogYnVpbGQgYWJzb2x1dGUgcGF0aCAqLwogCXN0
cmxjcHkocCwgZnAtPmZfZGVudHJ5LT5kX21vdW50LT5tX3BhdGgsIFBBVEhfTUFYKTsKIAlzdHJs
Y2F0KHAsIGZwLT5mX2RlbnRyeS0+ZF9wYXRoLCBQQVRIX01BWCk7CkBAIC02MjQsNyArNTk1LDYg
QEAgaW50IF9fZnhzdGF0YXQoaW50IHZlciwgaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFt
ZSwgc3RydWN0IHN0YXQgKnN0LAogCiBMRlM2NChfX2Z4c3RhdGF0KTsKIAotZXh0ZXJuICJDIgog
aW50IGZzdGF0YXQoaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3Qgc3RhdCAqc3Qs
IGludCBmbGFncykKIHsKIAlyZXR1cm4gX19meHN0YXRhdCgxLCBkaXJmZCwgcGF0aCwgc3QsIGZs
YWdzKTsKQEAgLTYzMiw3ICs2MDIsNyBAQCBpbnQgZnN0YXRhdChpbnQgZGlyZmQsIGNvbnN0IGNo
YXIgKnBhdGgsIHN0cnVjdCBzdGF0ICpzdCwgaW50IGZsYWdzKQogCiBMRlM2NChmc3RhdGF0KTsK
IAotZXh0ZXJuICJDIiBpbnQgZmxvY2soaW50IGZkLCBpbnQgb3BlcmF0aW9uKQoraW50IGZsb2Nr
KGludCBmZCwgaW50IG9wZXJhdGlvbikKIHsKIAlpZiAoIWZpbGVyZWZfZnJvbV9mZChmZCkpIHsK
IAkJcmV0dXJuIGxpYmNfZXJyb3IoRUJBREYpOwpAQCAtNjYzLDE0ICs2MzMsMTQgQEAgc3RydWN0
IF9fZGlyc3RyZWFtCiAKIERJUiAqb3BlbmRpcihjb25zdCBjaGFyICpwYXRoKQogewotCURJUiAq
ZGlyID0gbmV3IERJUjsKKwlESVIgKmRpciA9IG1hbGxvYyhzaXplb2YoKmRpcikpOwogCiAJaWYg
KCFkaXIpCi0JCXJldHVybiBsaWJjX2Vycm9yX3B0cjxESVI+KEVOT01FTSk7CisJCXJldHVybiBF
UlIyUFRSKC1FTk9NRU0pOwogCiAJZGlyLT5mZCA9IG9wZW4ocGF0aCwgT19SRE9OTFkpOwogCWlm
IChkaXItPmZkIDwgMCkgewotCQlkZWxldGUgZGlyOworCQlmcmVlKGRpcik7CiAJCXJldHVybiBu
dWxscHRyOwogCX0KIAlyZXR1cm4gZGlyOwpAQCAtNjg3LDcgKzY1NywxMSBAQCBESVIgKmZkb3Bl
bmRpcihpbnQgZmQpCiAJCWVycm5vID0gRU5PVERJUjsKIAkJcmV0dXJuIG51bGxwdHI7CiAJfQot
CWRpciA9IG5ldyBESVI7CisJZGlyID0gbWFsbG9jKHNpemVvZigqZGlyKSk7CisJaWYgKCFkaXIp
IHsKKwkJZXJybm8gPSBFTk9NRU07CisJCXJldHVybiBOVUxMOworCX0KIAlkaXItPmZkID0gZmQ7
CiAJcmV0dXJuIGRpcjsKIApAQCAtNzA1LDcgKzY3OSw3IEBAIGludCBkaXJmZChESVIgKmRpcnAp
CiBpbnQgY2xvc2VkaXIoRElSICpkaXIpCiB7CiAJY2xvc2UoZGlyLT5mZCk7Ci0JZGVsZXRlIGRp
cjsKKwlmcmVlKGRpcik7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTcxNiw3ICs2OTAsNyBAQCBzdHJ1
Y3QgZGlyZW50ICpyZWFkZGlyKERJUiAqZGlyKQogCiAJcmV0ID0gcmVhZGRpcl9yKGRpciwgJmVu
dHJ5LCAmcmVzdWx0KTsKIAlpZiAocmV0KQotCQlyZXR1cm4gbGliY19lcnJvcl9wdHI8c3RydWN0
IGRpcmVudD4ocmV0KTsKKwkJcmV0dXJuIEVSUjJQVFIoLXJldCk7CiAKIAllcnJubyA9IDA7CiAJ
cmV0dXJuIHJlc3VsdDsKQEAgLTc1MywxOCArNzI3LDE4IEBAIGludCByZWFkZGlyX3IoRElSICpk
aXIsIHN0cnVjdCBkaXJlbnQgKmVudHJ5LCBzdHJ1Y3QgZGlyZW50ICoqcmVzdWx0KQogCiAvLyBG
SVhNRTogaW4gNjRiaXQgZGlyZW50NjQgYW5kIGRpcmVudCBhcmUgaWRlbnRpY2FsLCBzbyBpdCdz
IHNhZmUgdG8gYWxpYXMKICN1bmRlZiByZWFkZGlyNjRfcgotZXh0ZXJuICJDIiBpbnQgcmVhZGRp
cjY0X3IoRElSICpkaXIsIHN0cnVjdCBkaXJlbnQ2NCAqZW50cnksCitpbnQgcmVhZGRpcjY0X3Io
RElSICpkaXIsIHN0cnVjdCBkaXJlbnQ2NCAqZW50cnksCiAJCXN0cnVjdCBkaXJlbnQ2NCAqKnJl
c3VsdCkKIAkJX19hdHRyaWJ1dGVfXygoYWxpYXMoInJlYWRkaXJfciIpKSk7CiAKICN1bmRlZiBy
ZWFkZGlyNjQKLWV4dGVybiAiQyIgc3RydWN0IGRpcmVudCAqcmVhZGRpcjY0KERJUiAqZGlyKSBf
X2F0dHJpYnV0ZV9fKChhbGlhcygicmVhZGRpciIpKSk7CitzdHJ1Y3QgZGlyZW50ICpyZWFkZGly
NjQoRElSICpkaXIpIF9fYXR0cmlidXRlX18oKGFsaWFzKCJyZWFkZGlyIikpKTsKIAogdm9pZCBy
ZXdpbmRkaXIoRElSICpkaXJwKQogewogCXN0cnVjdCBmaWxlICpmcDsKIAotCWF1dG8gZXJyb3Ig
PSBmZ2V0KGRpcnAtPmZkLCAmZnApOworCWludCBlcnJvciA9IGZnZXQoZGlycC0+ZmQsICZmcCk7
CiAJaWYgKGVycm9yKSB7CiAJCS8vIFBPU0lYIHNwZWNpZmllcyB0aGF0IHdoYXQgcmV3aW5kZGly
KCkgZG9lcyBpbiB0aGUgY2FzZSBvZiBlcnJvcgogCQkvLyBpcyB1bmRlZmluZWQuLi4KQEAgLTkz
NiwyMyArOTEwLDIxIEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2NoZGlyLCAiXCIlc1wiIiwgY29u
c3QgY2hhciopOwogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfY2hkaXJfcmV0LCAiIik7CiBUUkFDRVBP
SU5UKHRyYWNlX3Zmc19jaGRpcl9lcnIsICIlZCIsIGludCk7CiAKLXN0YXRpYyBpbnQgcmVwbGFj
ZV9jd2Qoc3RydWN0IHRhc2sgKnQsIHN0cnVjdCBmaWxlICpuZXdfY3dkZnAsCi0JCQkJCSAgIHN0
ZDo6ZnVuY3Rpb248aW50ICh2b2lkKT4gY2hkaXJfZnVuYykKK3N0YXRpYyBpbnQKK19fZG9fZmNo
ZGlyKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwLCBzdHJ1Y3QgdGFzayAqdCkKIHsKIAlzdHJ1Y3Qg
ZmlsZSAqb2xkID0gbnVsbHB0cjsKIAotCWlmICghdCkgewotCQlyZXR1cm4gMDsKLQl9CisJVUtf
QVNTRVJUKHQpOwogCiAJaWYgKHQtPnRfY3dkZnApIHsKIAkJb2xkID0gdC0+dF9jd2RmcDsKIAl9
CiAKIAkvKiBEbyB0aGUgYWN0dWFsIGNoZGlyIG9wZXJhdGlvbiBoZXJlICovCi0JaW50IGVycm9y
ID0gY2hkaXJfZnVuYygpOworCWludCBlcnJvciA9IHN5c19mY2hkaXIoZnAsIHQtPnRfY3dkKTsK
IAotCXQtPnRfY3dkZnAgPSBuZXdfY3dkZnA7CisJdC0+dF9jd2RmcCA9IGZwOwogCWlmIChvbGQp
IHsKIAkJZmRyb3Aob2xkKTsKIAl9CkBAIC05ODEsNyArOTUzLDExIEBAIGludCBjaGRpcihjb25z
dCBjaGFyICpwYXRobmFtZSkKIAkJZ290byBvdXRfZXJybm87CiAJfQogCi0JcmVwbGFjZV9jd2Qo
dCwgZnAsIFsmXSgpIHsgc3RybGNweSh0LT50X2N3ZCwgcGF0aCwgc2l6ZW9mKHQtPnRfY3dkKSk7
IHJldHVybiAwOyB9KTsKKwllcnJvciA9IF9fZG9fZmNoZGlyKGZwLCB0KTsKKwlpZiAoZXJyb3Ip
IHsKKwkJZmRyb3AoZnApOworCQlnb3RvIG91dF9lcnJubzsKKwl9CiAKIAl0cmFjZV92ZnNfY2hk
aXJfcmV0KCk7CiAJcmV0dXJuIDA7CkBAIC0xMDA2LDcgKzk4Miw3IEBAIGludCBmY2hkaXIoaW50
IGZkKQogCWlmIChlcnJvcikKIAkJZ290byBvdXRfZXJybm87CiAKLQllcnJvciA9IHJlcGxhY2Vf
Y3dkKHQsIGZwLCBbJl0oKSB7IHJldHVybiBzeXNfZmNoZGlyKGZwLCB0LT50X2N3ZCk7IH0pOwor
CWVycm9yID0gX19kb19mY2hkaXIoZnAsIHQpOwogCWlmIChlcnJvcikgewogCQlmZHJvcChmcCk7
CiAJCWdvdG8gb3V0X2Vycm5vOwpAQCAtMTExNCw3ICsxMDkwLDYgQEAgVFJBQ0VQT0lOVCh0cmFj
ZV92ZnNfc3RhdCwgIlwiJXNcIiAlcCIsIGNvbnN0IGNoYXIqLCBzdHJ1Y3Qgc3RhdCopOwogVFJB
Q0VQT0lOVCh0cmFjZV92ZnNfc3RhdF9yZXQsICIiKTsKIFRSQUNFUE9JTlQodHJhY2VfdmZzX3N0
YXRfZXJyLCAiJWQiLCBpbnQpOwogCi1leHRlcm4gIkMiCiBpbnQgX194c3RhdChpbnQgdmVyLCBj
b25zdCBjaGFyICpwYXRobmFtZSwgc3RydWN0IHN0YXQgKnN0KQogewogCXN0cnVjdCB0YXNrICp0
ID0gbWFpbl90YXNrOwpAQCAtMTE1MSw3ICsxMTI2LDYgQEAgTEZTNjQoc3RhdCk7CiBUUkFDRVBP
SU5UKHRyYWNlX3Zmc19sc3RhdCwgInBhdGhuYW1lPSVzLCBzdGF0PSVwIiwgY29uc3QgY2hhcios
IHN0cnVjdCBzdGF0Kik7CiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19sc3RhdF9yZXQsICIiKTsKIFRS
QUNFUE9JTlQodHJhY2VfdmZzX2xzdGF0X2VyciwgImVycm5vPSVkIiwgaW50KTsKLWV4dGVybiAi
QyIKIGludCBfX2x4c3RhdChpbnQgdmVyLCBjb25zdCBjaGFyICpwYXRobmFtZSwgc3RydWN0IHN0
YXQgKnN0KQogewogCXN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOwpAQCAtMTE5MSw3ICsxMTY1
LDYgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfc3RhdGZzLCAiXCIlc1wiICVwIiwgY29uc3QgY2hh
ciosIHN0cnVjdCBzdGF0ZnMqKTsKIFRSQUNFUE9JTlQodHJhY2VfdmZzX3N0YXRmc19yZXQsICIi
KTsKIFRSQUNFUE9JTlQodHJhY2VfdmZzX3N0YXRmc19lcnIsICIlZCIsIGludCk7CiAKLWV4dGVy
biAiQyIKIGludCBfX3N0YXRmcyhjb25zdCBjaGFyICpwYXRobmFtZSwgc3RydWN0IHN0YXRmcyAq
YnVmKQogewogCXRyYWNlX3Zmc19zdGF0ZnMocGF0aG5hbWUsIGJ1Zik7CkBAIC0xMjIxLDcgKzEx
OTQsNiBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19mc3RhdGZzLCAiXCIlc1wiICVwIiwgaW50LCBz
dHJ1Y3Qgc3RhdGZzKik7CiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19mc3RhdGZzX3JldCwgIiIpOwog
VFJBQ0VQT0lOVCh0cmFjZV92ZnNfZnN0YXRmc19lcnIsICIlZCIsIGludCk7CiAKLWV4dGVybiAi
QyIKIGludCBfX2ZzdGF0ZnMoaW50IGZkLCBzdHJ1Y3Qgc3RhdGZzICpidWYpCiB7CiAJc3RydWN0
IGZpbGUgKmZwOwpAQCAtMTQyNCwxMSArMTM5NiwxMSBAQCBpbnQgZHVwMihpbnQgb2xkZmQsIGlu
dCBuZXdmZCkKICAqLwogI2RlZmluZSBTRVRGTCAoT19BUFBFTkQgfCBPX0FTWU5DIHwgT19ESVJF
Q1QgfCBPX05PQVRJTUUgfCBPX05PTkJMT0NLKQogCisjaWYgMAogVFJBQ0VQT0lOVCh0cmFjZV92
ZnNfZmNudGwsICIlZCAlZCAweCV4IiwgaW50LCBpbnQsIGludCk7CiBUUkFDRVBPSU5UKHRyYWNl
X3Zmc19mY250bF9yZXQsICJcIiVzXCIiLCBpbnQpOwogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZmNu
dGxfZXJyLCAiJWQiLCBpbnQpOwogCi1leHRlcm4gIkMiCiBpbnQgZmNudGwoaW50IGZkLCBpbnQg
Y21kLCBpbnQgYXJnKQogewogCXN0cnVjdCBmaWxlICpmcDsKQEAgLTE1MDksNiArMTQ4MSw3IEBA
IGludCBmY250bChpbnQgZmQsIGludCBjbWQsIGludCBhcmcpCiAJZXJybm8gPSBlcnJvcjsKIAly
ZXR1cm4gLTE7CiB9CisjZW5kaWYKIAogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfYWNjZXNzLCAiXCIl
c1wiIDAlMG8iLCBjb25zdCBjaGFyKiwgaW50KTsKIFRSQUNFUE9JTlQodHJhY2VfdmZzX2FjY2Vz
c19yZXQsICIiKTsKQEAgLTE1NjQsOCArMTUzNyw3IEBAIGludCBmYWNjZXNzYXQoaW50IGRpcmZk
LCBjb25zdCBjaGFyICpwYXRobmFtZSwgaW50IG1vZGUsIGludCBmbGFncykKIAlzdHJ1Y3Qgdm5v
ZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOwogCXZuX2xvY2sodnApOwogCi0Jc3RkOjp1
bmlxdWVfcHRyPGNoYXIgW10+IHVwIChuZXcgY2hhcltQQVRIX01BWF0pOwotCWNoYXIgKnAgPSB1
cC5nZXQoKTsKKwljaGFyIHBbUEFUSF9NQVhdOwogCiAJLyogYnVpbGQgYWJzb2x1dGUgcGF0aCAq
LwogCXN0cmxjcHkocCwgZnAtPmZfZGVudHJ5LT5kX21vdW50LT5tX3BhdGgsIFBBVEhfTUFYKTsK
QEAgLTE1ODEsNyArMTU1Myw2IEBAIGludCBmYWNjZXNzYXQoaW50IGRpcmZkLCBjb25zdCBjaGFy
ICpwYXRobmFtZSwgaW50IG1vZGUsIGludCBmbGFncykKIAlyZXR1cm4gZXJyb3I7CiB9CiAKLWV4
dGVybiAiQyIgCiBpbnQgZXVpZGFjY2Vzcyhjb25zdCBjaGFyICpwYXRobmFtZSwgaW50IG1vZGUp
CiB7CiAJcmV0dXJuIGFjY2VzcyhwYXRobmFtZSwgbW9kZSk7CkBAIC0xNTkwLDU0ICsxNTYxLDYg
QEAgaW50IGV1aWRhY2Nlc3MoY29uc3QgY2hhciAqcGF0aG5hbWUsIGludCBtb2RlKQogd2Vha19h
bGlhcyhldWlkYWNjZXNzLGVhY2Nlc3MpOwogCiAjaWYgMAotc3RhdGljIGludAotZnNfcGlwZShz
dHJ1Y3QgdGFzayAqdCwgc3RydWN0IG1zZyAqbXNnKQotewotI2lmZGVmIENPTkZJR19GSUZPRlMK
LQljaGFyIHBhdGhbUEFUSF9NQVhdOwotCWZpbGVfdCByZnAsIHdmcDsKLQlpbnQgZXJyb3IsIHJm
ZCwgd2ZkOwotCi0JRFBSSU5URihWRlNEQl9DT1JFLCAoImZzX3BpcGVcbiIpKTsKLQotCWlmICgo
cmZkID0gdGFza19uZXdmZCh0KSkgPT0gLTEpCi0JCXJldHVybiBFTUZJTEU7Ci0JdC0+dF9vZmls
ZVtyZmRdID0gKGZpbGVfdCkxOyAvKiB0ZW1wICovCi0KLQlpZiAoKHdmZCA9IHRhc2tfbmV3ZmQo
dCkpID09IC0xKSB7Ci0JCXQtPnRfb2ZpbGVbcmZkXSA9IG51bGxwdHI7Ci0JCXJldHVybiBFTUZJ
TEU7Ci0JfQotCXNwcmludGYocGF0aCwgIi9tbnQvZmlmby9waXBlLSV4LSVkIiwgKHVfaW50KXQt
PnRfdGFza2lkLCByZmQpOwotCi0JaWYgKChlcnJvciA9IHN5c19ta25vZChwYXRoLCBTX0lGSUZP
KSkgIT0gMCkKLQkJZ290byBvdXQ7Ci0JaWYgKChlcnJvciA9IHN5c19vcGVuKHBhdGgsIE9fUkRP
TkxZIHwgT19OT05CTE9DSywgMCwgJnJmcCkpICE9IDApIHsKLQkJZ290byBvdXQ7Ci0JfQotCWlm
ICgoZXJyb3IgPSBzeXNfb3BlbihwYXRoLCBPX1dST05MWSB8IE9fTk9OQkxPQ0ssIDAsICZ3ZnAp
KSAhPSAwKSB7Ci0JCWdvdG8gb3V0OwotCX0KLQl0LT50X29maWxlW3JmZF0gPSByZnA7Ci0JdC0+
dF9vZmlsZVt3ZmRdID0gd2ZwOwotCXQtPnRfbm9wZW5zICs9IDI7Ci0JbXNnLT5kYXRhWzBdID0g
cmZkOwotCW1zZy0+ZGF0YVsxXSA9IHdmZDsKLQlyZXR1cm4gMDsKLQlvdXQ6Ci0JdC0+dF9vZmls
ZVtyZmRdID0gbnVsbHB0cjsKLQl0LT50X29maWxlW3dmZF0gPSBudWxscHRyOwotCXJldHVybiBl
cnJvcjsKLSNlbHNlCi0JcmV0dXJuIEVOT1NZUzsKLSNlbmRpZgotfQotI2VuZGlmCi0KLVRSQUNF
UE9JTlQodHJhY2VfdmZzX2lzYXR0eSwgIiVkIiwgaW50KTsKLVRSQUNFUE9JTlQodHJhY2VfdmZz
X2lzYXR0eV9yZXQsICIlZCIsIGludCk7Ci1UUkFDRVBPSU5UKHRyYWNlX3Zmc19pc2F0dHlfZXJy
LCAiJWQiLCBpbnQpOwotCiAvKgogICogUmV0dXJuIGlmIHNwZWNpZmllZCBmaWxlIGlzIGEgdHR5
CiAgKi8KQEAgLTE2NjMsNiArMTU4Niw3IEBAIGludCBpc2F0dHkoaW50IGZkKQogCXRyYWNlX3Zm
c19pc2F0dHlfcmV0KGlzdHR5KTsKIAlyZXR1cm4gaXN0dHk7CiB9CisjZW5kaWYKIAogVFJBQ0VQ
T0lOVCh0cmFjZV92ZnNfdHJ1bmNhdGUsICJcIiVzXCIgMHgleCIsIGNvbnN0IGNoYXIqLCBvZmZf
dCk7CiBUUkFDRVBPSU5UKHRyYWNlX3Zmc190cnVuY2F0ZV9yZXQsICIiKTsKQEAgLTE3ODQsMTUg
KzE3MDgsNyBAQCBpbnQgZmFsbG9jYXRlKGludCBmZCwgaW50IG1vZGUsIGxvZmZfdCBvZmZzZXQs
IGxvZmZfdCBsZW4pCiAKIExGUzY0KGZhbGxvY2F0ZSk7CiAKLVRSQUNFUE9JTlQodHJhY2VfdmZz
X3V0aW1lcywgIlwiJXNcIiIsIGNvbnN0IGNoYXIqKTsKLVRSQUNFUE9JTlQodHJhY2VfdmZzX3V0
aW1lc19yZXQsICIiKTsKLVRSQUNFUE9JTlQodHJhY2VfdmZzX3V0aW1lc19lcnIsICIlZCIsIGlu
dCk7Ci0KLWludCBmdXRpbWVzKGludCBmZCwgY29uc3Qgc3RydWN0IHRpbWV2YWwgdGltZXNbMl0p
Ci17Ci0JcmV0dXJuIGZ1dGltZXNhdChmZCwgbnVsbHB0ciwgdGltZXMpOwotfQotCisjaWYgMAog
aW50IGZ1dGltZXNhdChpbnQgZGlyZmQsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBjb25zdCBzdHJ1
Y3QgdGltZXZhbCB0aW1lc1syXSkKIHsKIAlzdHJ1Y3Qgc3RhdCBzdDsKQEAgLTE4NTAsMTIgKzE3
NjYsMTIgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfdXRpbWVuc2F0LCAiXCIlc1wiIiwgY29uc3Qg
Y2hhciopOwogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfdXRpbWVuc2F0X3JldCwgIiIpOwogVFJBQ0VQ
T0lOVCh0cmFjZV92ZnNfdXRpbWVuc2F0X2VyciwgIiVkIiwgaW50KTsKIAotZXh0ZXJuICJDIgog
aW50IHV0aW1lbnNhdChpbnQgZGlyZmQsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBjb25zdCBzdHJ1
Y3QgdGltZXNwZWMgdGltZXNbMl0sIGludCBmbGFncykKIHsKIAl0cmFjZV92ZnNfdXRpbWVuc2F0
KHBhdGhuYW1lKTsKIAogCWF1dG8gZXJyb3IgPSBzeXNfdXRpbWVuc2F0KGRpcmZkLCBwYXRobmFt
ZSwgdGltZXMsIGZsYWdzKTsKKwogCWlmIChlcnJvcikgewogCQl0cmFjZV92ZnNfdXRpbWVuc2F0
X2VycihlcnJvcik7CiAJCWVycm5vID0gZXJyb3I7CkBAIC0xODcwLDEyICsxNzg2LDExIEBAIFRS
QUNFUE9JTlQodHJhY2VfdmZzX2Z1dGltZW5zLCAiJWQiLCBpbnQpOwogVFJBQ0VQT0lOVCh0cmFj
ZV92ZnNfZnV0aW1lbnNfcmV0LCAiIik7CiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19mdXRpbWVuc19l
cnIsICIlZCIsIGludCk7CiAKLWV4dGVybiAiQyIKIGludCBmdXRpbWVucyhpbnQgZmQsIGNvbnN0
IHN0cnVjdCB0aW1lc3BlYyB0aW1lc1syXSkKIHsKIAl0cmFjZV92ZnNfZnV0aW1lbnMoZmQpOwog
Ci0JYXV0byBlcnJvciA9IHN5c19mdXRpbWVucyhmZCwgdGltZXMpOworCWludCBlcnJvciA9IHN5
c19mdXRpbWVucyhmZCwgdGltZXMpOwogCWlmIChlcnJvcikgewogCQl0cmFjZV92ZnNfZnV0aW1l
bnNfZXJyKGVycm9yKTsKIAkJZXJybm8gPSBlcnJvcjsKQEAgLTE5MTAsMTkgKzE4MjUsMTYgQEAg
c3RhdGljIGludCBkb191dGltZXMoY29uc3QgY2hhciAqcGF0aG5hbWUsIGNvbnN0IHN0cnVjdCB0
aW1ldmFsIHRpbWVzWzJdLCBpbnQgZmwKIAlyZXR1cm4gMDsKIH0KIAotZXh0ZXJuICJDIgogaW50
IHV0aW1lcyhjb25zdCBjaGFyICpwYXRobmFtZSwgY29uc3Qgc3RydWN0IHRpbWV2YWwgdGltZXNb
Ml0pCiB7CiAJcmV0dXJuIGRvX3V0aW1lcyhwYXRobmFtZSwgdGltZXMsIDApOwogfQogCi1leHRl
cm4gIkMiCiBpbnQgbHV0aW1lcyhjb25zdCBjaGFyICpwYXRobmFtZSwgY29uc3Qgc3RydWN0IHRp
bWV2YWwgdGltZXNbMl0pCiB7CiAJcmV0dXJuIGRvX3V0aW1lcyhwYXRobmFtZSwgdGltZXMsIEFU
X1NZTUxJTktfTk9GT0xMT1cpOwogfQogCi1leHRlcm4gIkMiCiBpbnQgdXRpbWUoY29uc3QgY2hh
ciAqcGF0aG5hbWUsIGNvbnN0IHN0cnVjdCB1dGltYnVmICp0KQogewogCXVzaW5nIG5hbWVzcGFj
ZSBzdGQ6OmNocm9ubzsKQEAgLTE5NDEsNiArMTg1Myw3IEBAIGludCB1dGltZShjb25zdCBjaGFy
ICpwYXRobmFtZSwgY29uc3Qgc3RydWN0IHV0aW1idWYgKnQpCiAKIAlyZXR1cm4gdXRpbWVzKHBh
dGhuYW1lLCB0aW1lcyk7CiB9CisjZW5kaWYKIAogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfY2htb2Qs
ICJcIiVzXCIgMCUwbyIsIGNvbnN0IGNoYXIqLCBtb2RlX3QpOwogVFJBQ0VQT0lOVCh0cmFjZV92
ZnNfY2htb2RfcmV0LCAiIik7CkBAIC0xOTczLDcgKzE4ODYsNyBAQCBUUkFDRVBPSU5UKHRyYWNl
X3Zmc19mY2htb2RfcmV0LCAiIik7CiBpbnQgZmNobW9kKGludCBmZCwgbW9kZV90IG1vZGUpCiB7
CiAJdHJhY2VfdmZzX2ZjaG1vZChmZCwgbW9kZSk7Ci0JYXV0byBlcnJvciA9IHN5c19mY2htb2Qo
ZmQsIG1vZGUgJiBBTExQRVJNUyk7CisJaW50IGVycm9yID0gc3lzX2ZjaG1vZChmZCwgbW9kZSAm
IEFMTFBFUk1TKTsKIAl0cmFjZV92ZnNfZmNobW9kX3JldCgpOwogCWlmIChlcnJvcikgewogCQll
cnJubyA9IGVycm9yOwpAQCAtMjAwNyw2ICsxOTIwLDcgQEAgaW50IGxjaG93bihjb25zdCBjaGFy
ICpwYXRoLCB1aWRfdCBvd25lciwgZ2lkX3QgZ3JvdXApCiB9CiAKIAorI2lmIDAKIHNzaXplX3Qg
c2VuZGZpbGUoaW50IG91dF9mZCwgaW50IGluX2ZkLCBvZmZfdCAqX29mZnNldCwgc2l6ZV90IGNv
dW50KQogewogCXN0cnVjdCBmaWxlICppbl9mcDsKQEAgLTIwNzAsNyArMTk4NCw3IEBAIHNzaXpl
X3Qgc2VuZGZpbGUoaW50IG91dF9mZCwgaW50IGluX2ZkLCBvZmZfdCAqX29mZnNldCwgc2l6ZV90
IGNvdW50KQogCQlyZXR1cm4gLTE7CiAJfQogCi0JYXV0byByZXQgPSB3cml0ZShvdXRfZmQsIHNy
YyArIChvZmZzZXQgJSBQQUdFU0laRSksIGNvdW50KTsKKwlpbnQgcmV0ID0gd3JpdGUob3V0X2Zk
LCBzcmMgKyAob2Zmc2V0ICUgUEFHRVNJWkUpLCBjb3VudCk7CiAKIAlpZiAocmV0IDwgMCkgewog
CQlyZXR1cm4gbGliY19lcnJvcihlcnJubyk7CkBAIC0yMDg3LDEyICsyMDAxLDEzIEBAIHNzaXpl
X3Qgc2VuZGZpbGUoaW50IG91dF9mZCwgaW50IGluX2ZkLCBvZmZfdCAqX29mZnNldCwgc2l6ZV90
IGNvdW50KQogCiAjdW5kZWYgc2VuZGZpbGU2NAogTEZTNjQoc2VuZGZpbGUpOworI2VuZGlmCiAK
IE5PX1NZUyhpbnQgZmNobW9kYXQoaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwgbW9k
ZV90IG1vZGUsIGludCBmbGFncykpOwogCiBtb2RlX3QgdW1hc2sobW9kZV90IG5ld21hc2spCiB7
Ci0JcmV0dXJuIGdsb2JhbF91bWFzay5leGNoYW5nZShuZXdtYXNrLCBzdGQ6Om1lbW9yeV9vcmRl
cl9yZWxheGVkKTsKKwlyZXR1cm4gdWthcmNoX2V4Y2hhbmdlX24oJmdsb2JhbF91bWFzaywgbmV3
bWFzayk7CiB9CiAKIGludApAQCAtMjEwNywzMDMgKzIwMjIsMyBAQCBpbnQgY2hyb290KGNvbnN0
IGNoYXIgKnBhdGgpCiAJZXJybm8gPSBFTk9TWVM7CiAJcmV0dXJuIC0xOwogfQotCi0vLyB1bnBh
Y2tfYm9vdGZzKCkgdW5wYWNrcyBhIGNvbGxlY3Rpb24gb2YgZmlsZXMgc3RvcmVkIGFzIHBhcnQg
b2YgdGhlIE9TdgotLy8gZXhlY3V0YWJsZSAoaW4gbWVtb3J5IGxvY2F0aW9uICJib290ZnNfc3Rh
cnQiKSBpbnRvIHRoZSBmaWxlIHN5c3RlbSwKLS8vIG5vcm1hbGx5IHRoZSBpbi1tZW1vcnkgZmls
ZXN5c3RlbSByYW1mcy4KLS8vIFRoZSBmaWxlcyBhcmUgcGFja2VkIGluIHRoZSBleGVjdXRhYmxl
IGluIGFuIGFkLWhvYyBmb3JtYXQgZGVmaW5lZCBoZXJlLgotLy8gQ29kZSBpbiBzY3JpcHRzL21r
Ym9vdGZzLnB5IHBhY2tzIGZpbGVzIGludG8gdGhpcyBmb3JtYXQuCi0jZGVmaW5lIEJPT1RGU19Q
QVRIX01BWCAxMTEKLWVudW0gY2xhc3MgYm9vdGZzX2ZpbGVfdHlwZSA6IGNoYXIgeyBvdGhlciA9
IDAsIHN5bWxpbmsgPSAxIH07Ci1zdHJ1Y3QgYm9vdGZzX21ldGFkYXRhIHsKLQl1aW50NjRfdCBz
aXplOwotCXVpbnQ2NF90IG9mZnNldDsKLQkvLyBUaGUgZmlsZSdzIHR5cGUuIENhbiBiZSAic3lt
bGluayIgb3IgIm90aGVyIi4gQSBkaXJlY3RvcnkgaXMgYW4gIm90aGVyIgotCS8vIGZpbGUgd2l0
aCBpdHMgbmFtZSBlbmRpbmcgd2l0aCBhICIvIiAoYW5kIG5vIGNvbnRlbnQpLgotCWJvb3Rmc19m
aWxlX3R5cGUgdHlwZTsKLQkvLyBuYW1lIG11c3QgZW5kIHdpdGggYSBudWxsLiBGb3Igc3ltbGlu
ayBmaWxlcywgdGhlIGNvbnRlbnQgbXVzdCBlbmQKLQkvLyB3aXRoIGEgbnVsbCBhcyB3ZWxsLgot
CWNoYXIgbmFtZVtCT09URlNfUEFUSF9NQVhdOwotfTsKLQotZXh0ZXJuIGNoYXIgYm9vdGZzX3N0
YXJ0OwotCi1pbnQgcmFtZnNfc2V0X2ZpbGVfZGF0YShzdHJ1Y3Qgdm5vZGUgKnZwLCBjb25zdCB2
b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSk7Ci12b2lkIHVucGFja19ib290ZnModm9pZCkKLXsKLQlz
dHJ1Y3QgYm9vdGZzX21ldGFkYXRhICptZCA9IChzdHJ1Y3QgYm9vdGZzX21ldGFkYXRhICopJmJv
b3Rmc19zdGFydDsKLQlpbnQgZmQsIGk7Ci0KLQlmb3IgKGkgPSAwOyBtZFtpXS5uYW1lWzBdOyBp
KyspIHsKLQkJaW50IHJldDsKLQkJY2hhciAqcDsKLQotCQkvLyBta2RpcigpIGRpcmVjdG9yaWVz
IG5lZWRlZCBmb3IgdGhpcyBwYXRoIG5hbWUsIGFzIG5lY2Vzc2FyeQotCQljaGFyIHRtcFtCT09U
RlNfUEFUSF9NQVhdOwotCQlzdHJsY3B5KHRtcCwgbWRbaV0ubmFtZSwgQk9PVEZTX1BBVEhfTUFY
KTsKLQkJZm9yIChwID0gdG1wOyAqcDsgKytwKSB7Ci0JCQlpZiAoKnAgPT0gJy8nKSB7Ci0JCQkJ
KnAgPSAnXDAnOwotCQkJCW1rZGlyKHRtcCwgMDY2Nik7ICAvLyBzaWxlbnRseSBpZ25vcmUgZXJy
b3JzIGFuZCBleGlzdGluZyBkaXJzCi0JCQkJKnAgPSAnLyc7Ci0JCQl9Ci0JCX0KLQotCQlpZiAo
bWRbaV0udHlwZSA9PSBib290ZnNfZmlsZV90eXBlOjpzeW1saW5rKSB7Ci0JCQkvLyBUaGlzIGlz
IGEgc3ltYm9saWMgbGluayByZWNvcmQuIFRoZSBmaWxlJ3MgY29udGVudCBpcyB0aGUKLQkJCS8v
IHRhcmdldCBwYXRoLCBhbmQgd2UgYXNzdW1lIGVuZHMgd2l0aCBhIG51bGwuCi0JCQlpZiAoc3lt
bGluaygmYm9vdGZzX3N0YXJ0ICsgbWRbaV0ub2Zmc2V0LCBtZFtpXS5uYW1lKSAhPSAwKSB7Ci0J
CQkJa3ByaW50ZigiY291bGRuJ3Qgc3ltbGluayAlczogJWRcbiIsIG1kW2ldLm5hbWUsIGVycm5v
KTsKLQkJCQlzeXNfcGFuaWMoInVucGFja19ib290ZnMgZmFpbGVkIik7Ci0JCQl9Ci0JCQljb250
aW51ZTsKLQkJfQotCQlpZiAoKihwLTEpID09ICcvJyAmJiBtZFtpXS5zaXplID09IDApIHsKLQkJ
CS8vIFRoaXMgaXMgZGlyZWN0b3J5IHJlY29yZC4gTm90aGluZyBlbHNlIHRvIGRvCi0JCQljb250
aW51ZTsKLQkJfQotCi0JCWZkID0gY3JlYXQobWRbaV0ubmFtZSwgMDY2Nik7Ci0JCWlmIChmZCA8
IDApIHsKLQkJCWtwcmludGYoImNvdWxkbid0IGNyZWF0ZSAlczogJWRcbiIsCi0JCQkJCW1kW2ld
Lm5hbWUsIGVycm5vKTsKLQkJCXN5c19wYW5pYygidW5wYWNrX2Jvb3RmcyBmYWlsZWQiKTsKLQkJ
fQotCi0JCXN0cnVjdCBmaWxlICpmcDsKLQkJaW50IGVycm9yID0gZmdldChmZCwgJmZwKTsKLQkJ
aWYgKGVycm9yKSB7Ci0JCQlrcHJpbnRmKCJjb3VsZG4ndCBmZ2V0ICVzOiAlZFxuIiwKLQkJCQkJ
bWRbaV0ubmFtZSwgZXJyb3IpOwotCQkJc3lzX3BhbmljKCJ1bnBhY2tfYm9vdGZzIGZhaWxlZCIp
OwotCQl9Ci0KLQkJc3RydWN0IHZub2RlICp2cCA9IGZwLT5mX2RlbnRyeS0+ZF92bm9kZTsKLQkJ
cmV0ID0gcmFtZnNfc2V0X2ZpbGVfZGF0YSh2cCwgJmJvb3Rmc19zdGFydCArIG1kW2ldLm9mZnNl
dCwgbWRbaV0uc2l6ZSk7Ci0JCWlmIChyZXQpIHsKLQkJCWtwcmludGYoInJhbWZzX3NldF9maWxl
X2RhdGEgZmFpbGVkLCByZXQgPSAlZFxuIiwgcmV0KTsKLQkJCXN5c19wYW5pYygidW5wYWNrX2Jv
b3RmcyBmYWlsZWQiKTsKLQkJfQotCi0JCWZkcm9wKGZwKTsKLQkJY2xvc2UoZmQpOwotCX0KLX0K
LQotdm9pZCBtb3VudF9yb290ZnModm9pZCkKLXsKLQlpbnQgcmV0OwotCi0JcmV0ID0gc3lzX21v
dW50KCIiLCAiLyIsICJyYW1mcyIsIDAsIG51bGxwdHIpOwotCWlmIChyZXQpCi0JCWtwcmludGYo
ImZhaWxlZCB0byBtb3VudCByb290ZnMsIGVycm9yID0gJXNcbiIsIHN0cmVycm9yKHJldCkpOwot
Ci0JaWYgKG1rZGlyKCIvZGV2IiwgMDc1NSkgPCAwKQotCQlrcHJpbnRmKCJmYWlsZWQgdG8gY3Jl
YXRlIC9kZXYsIGVycm9yID0gJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7Ci0KLQlyZXQgPSBzeXNf
bW91bnQoIiIsICIvZGV2IiwgImRldmZzIiwgMCwgbnVsbHB0cik7Ci0JaWYgKHJldCkKLQkJa3By
aW50ZigiZmFpbGVkIHRvIG1vdW50IGRldmZzLCBlcnJvciA9ICVzXG4iLCBzdHJlcnJvcihyZXQp
KTsKLX0KLQotZXh0ZXJuICJDIgotaW50IG5tb3VudChzdHJ1Y3QgaW92ZWMgKmlvdiwgdW5zaWdu
ZWQgbmlvdiwgaW50IGZsYWdzKQotewotCXN0cnVjdCBhcmdzIHsKLQkJY2hhciogZnN0eXBlID0g
bnVsbHB0cjsKLQkJY2hhciogZnNwYXRoID0gbnVsbHB0cjsKLQkJY2hhciogZnJvbSA9IG51bGxw
dHI7Ci0JfTsKLQlzdGF0aWMgdW5vcmRlcmVkX21hcDxzdHJpbmcsIGNoYXIqIGFyZ3M6Oio+IGFy
Z21hcCB7Ci0JCXsgImZzdHlwZSIsICZhcmdzOjpmc3R5cGUgfSwKLQkJeyAiZnNwYXRoIiwgJmFy
Z3M6OmZzcGF0aCB9LAotCQl7ICJmcm9tIiwgJmFyZ3M6OmZyb20gfSwKLQl9OwotCWFyZ3MgYTsK
LQlmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5pb3Y7IGkgKz0gMikgewotCQlzdGQ6OnN0cmluZyBz
KHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihpb3ZbaV0uaW92X2Jhc2UpKTsKLQkJaWYgKGFyZ21h
cC5jb3VudChzKSkgewotCQkJYS4qKGFyZ21hcFtzXSkgPSBzdGF0aWNfY2FzdDxjaGFyKj4oaW92
W2krMV0uaW92X2Jhc2UpOwotCQl9Ci0JfQotCXJldHVybiBzeXNfbW91bnQoYS5mcm9tLCBhLmZz
cGF0aCwgYS5mc3R5cGUsIGZsYWdzLCBudWxscHRyKTsKLX0KLQotc3RhdGljIHZvaWQgaW1wb3J0
X2V4dHJhX3pmc19wb29scyh2b2lkKQotewotCXN0cnVjdCBzdGF0IHN0OwotCWludCByZXQ7Ci0K
LQkvLyBUaGUgZmlsZSAnL2V0Yy9tbnR0YWInIGlzIGEgTGliWkZTIHJlcXVpcmVtZW50IGFuZCB3
aWxsIG5vdAotCS8vIGV4aXN0IGR1cmluZyBjcGlvZCBwaGFzZS4gVGhlIGZ1bmN0aW9uYWxpdHkg
cHJvdmlkZWQgYnkgdGhpcwotCS8vIGZ1bmN0aW9uIGlzbid0IG5lZWRlZCBkdXJpbmcgdGhhdCBw
aGFzZSwgc28gbGV0J3Mgc2tpcCBpdC4KLQlpZiAoc3RhdCgiL2V0Yy9tbnR0YWIiICwgJnN0KSAh
PSAwKSB7Ci0JCXJldHVybjsKLQl9Ci0KLQkvLyBJbXBvcnQgZXh0cmEgcG9vbHMgbW91bnRpbmcg
ZGF0YXNldHMgdGhlcmUgY29udGFpbmVkLgotCS8vIERhdGFzZXRzIGZyb20gb3N2IHBvb2wgd2ls
bCBub3QgYmUgbW91bnRlZCBoZXJlLgotCWlmIChhY2Nlc3MoInpwb29sLnNvIiwgWF9PSykgIT0g
MCkgewotCQlyZXR1cm47Ci0JfQotCXZlY3RvcjxzdHJpbmc+IHpwb29sX2FyZ3MgPSB7Inpwb29s
IiwgImltcG9ydCIsICItZiIsICItYSIgfTsKLQlhdXRvIG9rID0gb3N2OjpydW4oInpwb29sLnNv
IiwgenBvb2xfYXJncywgJnJldCk7Ci0JYXNzZXJ0KG9rKTsKLQotCWlmICghcmV0KSB7Ci0JCWRl
YnVnKCJ6ZnM6IGV4dHJhIFpGUyBwb29sKHMpIGZvdW5kLlxuIik7Ci0JfQotfQotCi12b2lkIHBp
dm90X3Jvb3Rmcyhjb25zdCBjaGFyKiBwYXRoKQotewotCWludCByZXQgPSBzeXNfcGl2b3Rfcm9v
dChwYXRoLCAiLyIpOwotCWlmIChyZXQpCi0JCWtwcmludGYoImZhaWxlZCB0byBwaXZvdCByb290
LCBlcnJvciA9ICVzXG4iLCBzdHJlcnJvcihyZXQpKTsKLQotCWF1dG8gZW50ID0gc2V0bW50ZW50
KCIvZXRjL2ZzdGFiIiwgInIiKTsKLQlpZiAoIWVudCkgewotCQlyZXR1cm47Ci0JfQotCi0Jc3Ry
dWN0IG1udGVudCAqbSA9IG51bGxwdHI7Ci0Jd2hpbGUgKChtID0gZ2V0bW50ZW50KGVudCkpICE9
IG51bGxwdHIpIHsKLQkJaWYgKCFzdHJjbXAobS0+bW50X2RpciwgIi8iKSkgewotCQkJY29udGlu
dWU7Ci0JCX0KLQotCQlpZiAoKG0tPm1udF9vcHRzICE9IG51bGxwdHIpICYmIHN0cmNtcChtLT5t
bnRfb3B0cywgTU5UT1BUX0RFRkFVTFRTKSkgewotCQkJcHJpbnRmKCJXYXJuaW5nOiBvcHRzICVz
LCBpZ25vcmVkIGZvciBmcyAlc1xuIiwgbS0+bW50X29wdHMsIG0tPm1udF90eXBlKTsKLQkJfQot
Ci0JCS8vIEZJWE1FOiBSaWdodCBub3csIGlnbm9yaW5nIG1udG9wcy4gSW4gdGhlIGZ1dHVyZSB3
ZSBtYXkgaGF2ZSBhbiBvcHRpb24gcGFyc2VyCi0JCXJldCA9IHN5c19tb3VudChtLT5tbnRfZnNu
YW1lLCBtLT5tbnRfZGlyLCBtLT5tbnRfdHlwZSwgMCwgbnVsbHB0cik7Ci0JCWlmIChyZXQpIHsK
LQkJCXByaW50ZigiZmFpbGVkIHRvIG1vdW50ICVzLCBlcnJvciA9ICVzXG4iLCBtLT5tbnRfdHlw
ZSwgc3RyZXJyb3IocmV0KSk7Ci0JCX0KLQl9Ci0JZW5kbW50ZW50KGVudCk7Ci19Ci0KLWV4dGVy
biAiQyIgdm9pZCB1bm1vdW50X2RldmZzKCkKLXsKLQlpbnQgcmV0ID0gc3lzX3Vtb3VudCgiL2Rl
diIpOwotCWlmIChyZXQpCi0JCWtwcmludGYoImZhaWxlZCB0byB1bm1vdW50IC9kZXYsIGVycm9y
ID0gJXNcbiIsIHN0cmVycm9yKHJldCkpOwotfQotCi1leHRlcm4gIkMiIGludCBtb3VudF9yb2Zz
X3Jvb3Rmcyhib29sIHBpdm90X3Jvb3QpCi17Ci0JaW50IHJldDsKLQotCWlmIChta2RpcigiL3Jv
ZnMiLCAwNzU1KSA8IDApCi0JCWtwcmludGYoImZhaWxlZCB0byBjcmVhdGUgL3JvZnMsIGVycm9y
ID0gJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7Ci0KLQlyZXQgPSBzeXNfbW91bnQoIi9kZXYvdmJs
azAuMSIsICIvcm9mcyIsICJyb2ZzIiwgTU5UX1JET05MWSwgMCk7Ci0KLQlpZiAocmV0KSB7Ci0J
CWtwcmludGYoImZhaWxlZCB0byBtb3VudCAvcm9mcywgZXJyb3IgPSAlc1xuIiwgc3RyZXJyb3Io
cmV0KSk7Ci0JCXJtZGlyKCIvcm9mcyIpOwotCQlyZXR1cm4gcmV0OwotCX0KLQotCWlmIChwaXZv
dF9yb290KSB7Ci0JCXBpdm90X3Jvb3RmcygiL3JvZnMiKTsKLQl9Ci0KLQlyZXR1cm4gMDsKLX0K
LQotZXh0ZXJuICJDIiB2b2lkIG1vdW50X3pmc19yb290ZnMoYm9vbCBwaXZvdF9yb290KQotewot
CWlmIChta2RpcigiL3pmcyIsIDA3NTUpIDwgMCkKLQkJa3ByaW50ZigiZmFpbGVkIHRvIGNyZWF0
ZSAvemZzLCBlcnJvciA9ICVzXG4iLCBzdHJlcnJvcihlcnJubykpOwotCi0JaW50IHJldCA9IHN5
c19tb3VudCgiL2Rldi92YmxrMC4xIiwgIi96ZnMiLCAiemZzIiwgMCwgKHZvaWQgKikib3N2L3pm
cyIpOwotCi0JaWYgKHJldCkKLQkJa3ByaW50ZigiZmFpbGVkIHRvIG1vdW50IC96ZnMsIGVycm9y
ID0gJXNcbiIsIHN0cmVycm9yKHJldCkpOwotCi0JaWYgKCFwaXZvdF9yb290KSB7Ci0JCXJldHVy
bjsKLQl9Ci0KLQlwaXZvdF9yb290ZnMoIi96ZnMiKTsKLQotCWltcG9ydF9leHRyYV96ZnNfcG9v
bHMoKTsKLX0KLQotZXh0ZXJuICJDIiB2b2lkIHVubW91bnRfcm9vdGZzKHZvaWQpCi17Ci0JaW50
IHJldDsKLQotCXN5c191bW91bnQoIi9kZXYiKTsKLQotCXJldCA9IHN5c191bW91bnQoIi9wcm9j
Iik7Ci0JaWYgKHJldCkgewotCQlrcHJpbnRmKCJXYXJuaW5nOiB1bm1vdW50X3Jvb3RmczogZmFp
bGVkIHRvIHVubW91bnQgL3Byb2MsICIKLQkJCSJlcnJvciA9ICVzXG4iLCBzdHJlcnJvcihyZXQp
KTsKLQl9Ci0KLQlyZXQgPSBzeXNfdW1vdW50MigiLyIsIE1OVF9GT1JDRSk7Ci0JaWYgKHJldCkg
ewotCQlrcHJpbnRmKCJXYXJuaW5nOiB1bm1vdW50X3Jvb3RmczogZmFpbGVkIHRvIHVubW91bnQg
LywgIgotCQkJImVycm9yID0gJXNcbiIsIHN0cmVycm9yKHJldCkpOwotCX0KLX0KLQotZXh0ZXJu
ICJDIiB2b2lkIGJpb19pbml0KHZvaWQpOwotZXh0ZXJuICJDIiB2b2lkIGJpb19zeW5jKHZvaWQp
OwotCi1pbnQgdmZzX2luaXRpYWxpemVkOwotCi1leHRlcm4gIkMiCi12b2lkCi12ZnNfaW5pdCh2
b2lkKQotewotCWNvbnN0IHN0cnVjdCB2ZnNzdyAqZnM7Ci0KLQliaW9faW5pdCgpOwotCWxvb2t1
cF9pbml0KCk7Ci0Jdm5vZGVfaW5pdCgpOwotCXRhc2tfYWxsb2MoJm1haW5fdGFzayk7Ci0KLQkv
KgotCSAqIEluaXRpYWxpemUgZWFjaCBmaWxlIHN5c3RlbS4KLQkgKi8KLQlmb3IgKGZzID0gdmZz
c3c7IGZzLT52c19uYW1lOyBmcysrKSB7Ci0JCWlmIChmcy0+dnNfaW5pdCkgewotCQkJRFBSSU5U
RihWRlNEQl9DT1JFLCAoIlZGUzogaW5pdGlhbGl6aW5nICVzXG4iLAotCQkJCQlmcy0+dnNfbmFt
ZSkpOwotCQkJZnMtPnZzX2luaXQoKTsKLQkJfQotCX0KLQotCW1vdW50X3Jvb3RmcygpOwotCXVu
cGFja19ib290ZnMoKTsKLQotCS8vCWlmIChvcGVuKCIvZGV2L2NvbnNvbGUiLCBPX1JEV1IsIDAp
ICE9IDApCi0JaWYgKGNvbnNvbGU6Om9wZW4oKSAhPSAwKQotCQlrcHJpbnRmKCJmYWlsZWQgdG8g
b3BlbiBjb25zb2xlLCBlcnJvciA9ICVkXG4iLCBlcnJubyk7Ci0JaWYgKGR1cCgwKSAhPSAxKQot
CQlrcHJpbnRmKCJmYWlsZWQgdG8gZHVwIGNvbnNvbGUgKDEpXG4iKTsKLQlpZiAoZHVwKDApICE9
IDIpCi0JCWtwcmludGYoImZhaWxlZCB0byBkdXAgY29uc29sZSAoMilcbiIpOwotCXZmc19pbml0
aWFsaXplZCA9IDE7Ci19Ci0KLXZvaWQgdmZzX2V4aXQodm9pZCkKLXsKLQkvKiBGcmVlIHVwIG1h
aW5fdGFzayAoc3RvcmVzIGN3ZCBkYXRhKSByZXNvdXJjZXMgKi8KLQlyZXBsYWNlX2N3ZChtYWlu
X3Rhc2ssIG51bGxwdHIsIFtdKCkgeyByZXR1cm4gMDsgfSk7Ci0JLyogVW5tb3VudCBhbGwgZmls
ZSBzeXN0ZW1zICovCi0JdW5tb3VudF9yb290ZnMoKTsKLQkvKiBGaW5pc2ggd2l0aCB0aGUgYmlv
IGxheWVyICovCi0JYmlvX3N5bmMoKTsKLX0KLQotdm9pZCBzeXNfcGFuaWMoY29uc3QgY2hhciAq
c3RyKQotewotCWFib3J0KCJwYW5pYzogJXMiLCBzdHIpOwotfQotCmRpZmYgLS1naXQgYS9saWIv
dmZzY29yZS9tb3VudC5jIGIvbGliL3Zmc2NvcmUvbW91bnQuYwppbmRleCA3NmUyZTcwYy4uMTBj
MjdmYWQgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL21vdW50LmMKKysrIGIvbGliL3Zmc2NvcmUv
bW91bnQuYwpAQCAtODMsMTcgKzgzLDYgQEAgZnNfZ2V0ZnMoY29uc3QgY2hhciAqbmFtZSkKIAly
ZXR1cm4gZnM7CiB9CiAKLWNvbnN0IGNoYXIqCi1mc19nZXRmc25hbWUodmZzb3BzKiBvcHMpCi17
Ci0JZm9yIChhdXRvIGZzID0gdmZzc3c7IGZzLT52c19uYW1lOyBmcysrKSB7Ci0JCWlmIChmcy0+
dnNfb3AgPT0gb3BzKSB7Ci0JCQlyZXR1cm4gZnMtPnZzX25hbWU7Ci0JCX0KLQl9Ci0JYWJvcnQo
KTsKLX0KLQogaW50CiBzeXNfbW91bnQoY29uc3QgY2hhciAqZGV2LCBjb25zdCBjaGFyICpkaXIs
IGNvbnN0IGNoYXIgKmZzbmFtZSwgaW50IGZsYWdzLCBjb25zdCB2b2lkICpkYXRhKQogewpAQCAt
MTQxLDcgKzEzMCw4IEBAIHN5c19tb3VudChjb25zdCBjaGFyICpkZXYsIGNvbnN0IGNoYXIgKmRp
ciwgY29uc3QgY2hhciAqZnNuYW1lLCBpbnQgZmxhZ3MsIGNvbnN0CiAJLyoKIAkgKiBDcmVhdGUg
VkZTIG1vdW50IGVudHJ5LgogCSAqLwotCWlmICghKG1wID0gbmV3IG1vdW50KSkgeworCW1wID0g
bWFsbG9jKHNpemVvZihzdHJ1Y3QgbW91bnQpKTsKKwlpZiAoIW1wKSB7CiAJCWVycm9yID0gRU5P
TUVNOwogCQlnb3RvIGVycjE7CiAJfQpAQCAtMjE0LDcgKzIwNCw3IEBAIHN5c19tb3VudChjb25z
dCBjaGFyICpkZXYsIGNvbnN0IGNoYXIgKmRpciwgY29uc3QgY2hhciAqZnNuYW1lLCBpbnQgZmxh
Z3MsIGNvbnN0CiAJaWYgKGRwX2NvdmVyZWQpCiAJCWRyZWxlKGRwX2NvdmVyZWQpOwogIGVycjI6
Ci0JZGVsZXRlIG1wOworCWZyZWUobXApOwogIGVycjE6CiAJaWYgKGRldmljZSkKIAkJZGV2aWNl
X2Nsb3NlKGRldmljZSk7CkBAIC0yODEsNyArMjcxLDcgQEAgZm91bmQ6CiAKIAlpZiAobXAtPm1f
ZGV2KQogCQlkZXZpY2VfY2xvc2UobXAtPm1fZGV2KTsKLQlkZWxldGUgbXA7CisJZnJlZShtcCk7
CiAgb3V0OgogCXJldHVybiBlcnJvcjsKIH0KQEAgLTI5Miw2ICsyODIsNyBAQCBzeXNfdW1vdW50
KGNvbnN0IGNoYXIgKnBhdGgpCiAJcmV0dXJuIHN5c191bW91bnQyKHBhdGgsIDApOwogfQogCisj
aWYgMAogaW50CiBzeXNfcGl2b3Rfcm9vdChjb25zdCBjaGFyICpuZXdfcm9vdCwgY29uc3QgY2hh
ciAqcHV0X29sZCkKIHsKQEAgLTMzOSw2ICszMzAsNyBAQCBzeXNfcGl2b3Rfcm9vdChjb25zdCBj
aGFyICpuZXdfcm9vdCwgY29uc3QgY2hhciAqcHV0X29sZCkKIAl9CiAJcmV0dXJuIDA7CiB9Cisj
ZW5kaWYKIAogaW50CiBzeXNfc3luYyh2b2lkKQpAQCAtNDUwLDMzICs0NDIsNiBAQCB2ZnNfZWlu
dmFsKHZvaWQpCiAJcmV0dXJuIEVJTlZBTDsKIH0KIAotbmFtZXNwYWNlIG9zdiB7Ci0KLW1vdW50
X2Rlc2MgdG9fbW91bnRfZGVzYyhtb3VudCogbSkKLXsKLQltb3VudF9kZXNjIHJldDsKLQlyZXQu
c3BlY2lhbCA9IG0tPm1fc3BlY2lhbDsKLQlyZXQucGF0aCA9IG0tPm1fcGF0aDsKLQlyZXQudHlw
ZSA9IGZzX2dldGZzbmFtZShtLT5tX29wKTsKLQkvLyBGSVhNRTogcmVjb3JkIG9wdGlvbnMKLQly
ZXQub3B0aW9ucyA9ICIiOwotCXJldHVybiByZXQ7Ci19Ci0KLXN0ZDo6dmVjdG9yPG1vdW50X2Rl
c2M+Ci1jdXJyZW50X21vdW50cygpCi17Ci0JV0lUSF9MT0NLKG1vdW50X2xvY2spIHsKLQkJc3Rk
Ojp2ZWN0b3I8bW91bnRfZGVzYz4gcmV0OwotCQlmb3IgKGF1dG8mJiBtcCA6IG1vdW50X2xpc3Qp
IHsKLQkJCXJldC5wdXNoX2JhY2sodG9fbW91bnRfZGVzYyhtcCkpOwotCQl9Ci0JCXJldHVybiBy
ZXQ7Ci0JfQotfQotCi19Ci0KICNpZmRlZiBERUJVR19WRlMKIHZvaWQKIG1vdW50X2R1bXAodm9p
ZCkKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3N5c2NhbGxzLmMgYi9saWIvdmZzY29yZS9zeXNj
YWxscy5jCmluZGV4IDI5YjE0MjIwLi40ZTU1MzM3ZiAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUv
c3lzY2FsbHMuYworKysgYi9saWIvdmZzY29yZS9zeXNjYWxscy5jCkBAIC0xOTUsMTcgKzE5NSwx
NyBAQCBzeXNfb3BlbihjaGFyICpwYXRoLCBpbnQgZmxhZ3MsIG1vZGVfdCBtb2RlLCBzdHJ1Y3Qg
ZmlsZSAqKmZwcCkKIAkJCWdvdG8gb3V0X3ZuX3VubG9jazsKIAl9CiAKLQl0cnkgewotCSAgICBm
aWxlcmVmIGYgPSBtYWtlX2ZpbGU8dmZzX2ZpbGU+KGZsYWdzKTsKLQkgICAgZnAgPSBmLmdldCgp
OwotCSAgICBmaG9sZChmcCk7Ci0JfSBjYXRjaCAoaW50IGVycikgewotCSAgICBlcnJvciA9IGVy
cjsKKwlmcCA9IGNhbGxvYyhzaXplb2Yoc3RydWN0IHZmc2NvcmVfZmlsZSksIDEpOworCWZob2xk
KGZwKTsKKwlpZiAoIWZwKSB7CisJICAgIGVycm9yID0gRU5PTUVNOwogCSAgICBnb3RvIG91dF92
bl91bmxvY2s7CiAJfQorCWZwLT5mX2ZsYWdzID0gZmxhZ3M7CisKIAkvLyBjaGFuZ2UgdG8gc3Rk
Ojptb3ZlIG9uY2UgZHAgaXMgYSBkZW50cnlfcmVmCi0JZnAtPmZfZGVudHJ5ID0gZGVudHJ5X3Jl
ZihkcCwgZmFsc2UpOwotCWRwID0gbnVsbHB0cjsKKwlmcC0+Zl9kZW50cnkgPSBkcDsKKwlkcCA9
IE5VTEw7CiAKIAllcnJvciA9IFZPUF9PUEVOKHZwLCBmcCk7CiAJaWYgKGVycm9yKSB7CkBAIC0y
MTMsNyArMjEzLDcgQEAgc3lzX29wZW4oY2hhciAqcGF0aCwgaW50IGZsYWdzLCBtb2RlX3QgbW9k
ZSwgc3RydWN0IGZpbGUgKipmcHApCiAJCS8vIE5vdGUgZGlyZWN0IGRlbGV0ZSBvZiBmcCBpbnN0
ZWFkIG9mIGZkcm9wKGZwKS4gZnAgd2FzIG5ldmVyCiAJCS8vIHJldHVybmVkIHNvIGNhbm5vdCBi
ZSBpbiB1c2UsIGFuZCBiZWNhdXNlIGl0IHdhc24ndCBvcGVuZWQKIAkJLy8gaXQgY2Fubm90IGJl
IGNsb3NlKCllZC4KLQkJZGVsZXRlIGZwOworCQlmcmVlKGZwKTsKIAkJcmV0dXJuIGVycm9yOwog
CX0KIAl2bl91bmxvY2sodnApOwpAQCAtMjQxLDExICsyNDEsMTQgQEAgaW50CiBzeXNfcmVhZChz
dHJ1Y3QgZmlsZSAqZnAsIGNvbnN0IHN0cnVjdCBpb3ZlYyAqaW92LCBzaXplX3QgbmlvdiwKIAkJ
b2ZmX3Qgb2Zmc2V0LCBzaXplX3QgKmNvdW50KQogeworCWludCBlcnJvciA9IDA7CisJc3RydWN0
IGlvdmVjICpjb3B5X2lvdjsKIAlpZiAoKGZwLT5mX2ZsYWdzICYgRlJFQUQpID09IDApCiAJCXJl
dHVybiBFQkFERjsKIAogCXNpemVfdCBieXRlcyA9IDA7Ci0JYXV0byBpb3ZwID0gaW92OworCWNv
bnN0IHN0cnVjdCBpb3ZlYyAqaW92cCA9IGlvdjsKKwogCWZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBuaW92OyBpKyspIHsKIAkJaWYgKGlvdnAtPmlvdl9sZW4gPiBJT1NJWkVfTUFYIC0gYnl0ZXMp
IHsKIAkJCXJldHVybiBFSU5WQUw7CkBAIC0yNjAsMTYgKzI2MywyNyBAQCBzeXNfcmVhZChzdHJ1
Y3QgZmlsZSAqZnAsIGNvbnN0IHN0cnVjdCBpb3ZlYyAqaW92LCBzaXplX3QgbmlvdiwKIAl9CiAK
IAlzdHJ1Y3QgdWlvIHVpbzsKLQkvLyBVbmZvcnR1bmF0ZWx5LCB0aGUgY3VycmVudCBpbXBsZW1l
bnRhdGlvbiBvZiBmcC0+cmVhZCB6ZXJvcyB0aGUKLQkvLyBpb3ZfbGVuIGZpZWxkcyB3aGVuIGl0
IHJlYWRzIGZyb20gZGlzaywgc28gd2UgaGF2ZSB0byBjb3B5IGlvdi4KLQlzdGQ6OnZlY3Rvcjxp
b3ZlYz4gY29weV9pb3YoaW92LCBpb3YgKyBuaW92KTsKLQl1aW8udWlvX2lvdiA9IGNvcHlfaW92
LmRhdGEoKTsKKwkvKiBUT0RPOiBpcyBpdCBuZWNlc3NhcnkgdG8gY29weSBpb3Ygd2l0aGluIFVu
aWtyYWZ0PworCSAqIE9TdiBkaWQgdGhpcywgbWVudGlvbmluZyB0aGlzIHJlYXNvbjoKKwkgKgor
CSAqICJVbmZvcnR1bmF0ZWx5LCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvZiBmcC0+cmVh
ZAorCSAqICB6ZXJvcyB0aGUgaW92X2xlbiBmaWVsZHMgd2hlbiBpdCByZWFkcyBmcm9tIGRpc2ss
IHNvIHdlCisJICogIGhhdmUgdG8gY29weSBpb3YuICIKKwkgKi8KKwljb3B5X2lvdiA9IGNhbGxv
YyhzaXplb2Yoc3RydWN0IGlvdmVjKSwgbmlvdik7CisJaWYgKCFjb3B5X2lvdikKKwkJcmV0dXJu
IEVOT01FTTsKKwltZW1jcHkoY29weV9pb3YsIGlvdiwgc2l6ZW9mKHN0cnVjdCBpb3ZlYykqbmlv
dik7CisKKwl1aW8udWlvX2lvdiA9IGNvcHlfaW92OwogCXVpby51aW9faW92Y250ID0gbmlvdjsK
IAl1aW8udWlvX29mZnNldCA9IG9mZnNldDsKIAl1aW8udWlvX3Jlc2lkID0gYnl0ZXM7CiAJdWlv
LnVpb19ydyA9IFVJT19SRUFEOwotCWF1dG8gZXJyb3IgPSBmcC0+cmVhZCgmdWlvLCAob2Zmc2V0
ID09IC0xKSA/IDAgOiBGT0ZfT0ZGU0VUKTsKKwllcnJvciA9IHZmc19yZWFkKGZwLCAmdWlvLCAo
b2Zmc2V0ID09IC0xKSA/IDAgOiBGT0ZfT0ZGU0VUKTsKIAkqY291bnQgPSBieXRlcyAtIHVpby51
aW9fcmVzaWQ7CisKKwlmcmVlKGNvcHlfaW92KTsKIAlyZXR1cm4gZXJyb3I7CiB9CiAKQEAgLTI3
NywxMSArMjkxLDEzIEBAIGludAogc3lzX3dyaXRlKHN0cnVjdCBmaWxlICpmcCwgY29uc3Qgc3Ry
dWN0IGlvdmVjICppb3YsIHNpemVfdCBuaW92LAogCQlvZmZfdCBvZmZzZXQsIHNpemVfdCAqY291
bnQpCiB7CisJc3RydWN0IGlvdmVjICpjb3B5X2lvdjsKKwlpbnQgZXJyb3IgPSAwOwogCWlmICgo
ZnAtPmZfZmxhZ3MgJiBGV1JJVEUpID09IDApCiAJCXJldHVybiBFQkFERjsKIAogCXNpemVfdCBi
eXRlcyA9IDA7Ci0JYXV0byBpb3ZwID0gaW92OworCWNvbnN0IHN0cnVjdCBpb3ZlYyAqaW92cCA9
IGlvdjsKIAlmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbmlvdjsgaSsrKSB7CiAJCWlmIChpb3Zw
LT5pb3ZfbGVuID4gSU9TSVpFX01BWCAtIGJ5dGVzKSB7CiAJCQlyZXR1cm4gRUlOVkFMOwpAQCAt
Mjk2LDE1ICszMTIsMjQgQEAgc3lzX3dyaXRlKHN0cnVjdCBmaWxlICpmcCwgY29uc3Qgc3RydWN0
IGlvdmVjICppb3YsIHNpemVfdCBuaW92LAogCX0KIAogCXN0cnVjdCB1aW8gdWlvOwotCS8vIFVu
Zm9ydHVuYXRlbHksIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9mIGZwLT53cml0ZSB6ZXJv
cyB0aGUKLQkvLyBpb3ZfbGVuIGZpZWxkcyB3aGVuIGl0IHdyaXRlcyB0byBkaXNrLCBzbyB3ZSBo
YXZlIHRvIGNvcHkgaW92LgotCXN0ZDo6dmVjdG9yPGlvdmVjPiBjb3B5X2lvdihpb3YsIGlvdiAr
IG5pb3YpOwotCXVpby51aW9faW92ID0gY29weV9pb3YuZGF0YSgpOworCisJLyogVE9ETzogc2Ft
ZSBub3RlIGFzIGluIHN5c19yZWFkLiBPcmlnaW5hbCBjb21tZW50OgorCSAqCisJICogIlVuZm9y
dHVuYXRlbHksIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9mIGZwLT53cml0ZSB6ZXJvcyB0
aGUKKwkgKiAgaW92X2xlbiBmaWVsZHMgd2hlbiBpdCB3cml0ZXMgdG8gZGlzaywgc28gd2UgaGF2
ZSB0byBjb3B5IGlvdi4KKwkgKi8KKwkvKiBzdGQ6OnZlY3Rvcjxpb3ZlYz4gY29weV9pb3YoaW92
LCBpb3YgKyBuaW92KTsgKi8KKwljb3B5X2lvdiA9IGNhbGxvYyhzaXplb2Yoc3RydWN0IGlvdmVj
KSwgbmlvdik7CisJaWYgKCFjb3B5X2lvdikKKwkJcmV0dXJuIEVOT01FTTsKKwltZW1jcHkoY29w
eV9pb3YsIGlvdiwgc2l6ZW9mKHN0cnVjdCBpb3ZlYykqbmlvdik7CisKKwl1aW8udWlvX2lvdiA9
IGNvcHlfaW92OwogCXVpby51aW9faW92Y250ID0gbmlvdjsKIAl1aW8udWlvX29mZnNldCA9IG9m
ZnNldDsKIAl1aW8udWlvX3Jlc2lkID0gYnl0ZXM7CiAJdWlvLnVpb19ydyA9IFVJT19XUklURTsK
LQlhdXRvIGVycm9yID0gZnAtPndyaXRlKCZ1aW8sIChvZmZzZXQgPT0gLTEpID8gMCA6IEZPRl9P
RkZTRVQpOworCXZmc193cml0ZShmcCwgJnVpbywgKG9mZnNldCA9PSAtMSkgPyAwIDogRk9GX09G
RlNFVCk7CiAJKmNvdW50ID0gYnl0ZXMgLSB1aW8udWlvX3Jlc2lkOwogCXJldHVybiBlcnJvcjsK
IH0KQEAgLTM1NSw3ICszODAsNyBAQCBzeXNfaW9jdGwoc3RydWN0IGZpbGUgKmZwLCB1X2xvbmcg
cmVxdWVzdCwgdm9pZCAqYnVmKQogCWlmICgoZnAtPmZfZmxhZ3MgJiAoRlJFQUQgfCBGV1JJVEUp
KSA9PSAwKQogCQlyZXR1cm4gRUJBREY7CiAKLQllcnJvciA9IGZwLT5pb2N0bChyZXF1ZXN0LCBi
dWYpOworCWVycm9yID0gdmZzX2lvY3RsKGZwLCByZXF1ZXN0LCBidWYpOwogCiAJRFBSSU5URihW
RlNEQl9TWVNDQUxMLCAoInN5c19pb2N0bDogY29tcCBlcnJvcj0lZFxuIiwgZXJyb3IpKTsKIAly
ZXR1cm4gZXJyb3I7CkBAIC0zODYsNyArNDExLDcgQEAgc3lzX2ZzdGF0KHN0cnVjdCBmaWxlICpm
cCwgc3RydWN0IHN0YXQgKnN0KQogCiAJRFBSSU5URihWRlNEQl9TWVNDQUxMLCAoInN5c19mc3Rh
dDogZnA9JXhcbiIsIGZwKSk7CiAKLQllcnJvciA9IGZwLT5zdGF0KHN0KTsKKwllcnJvciA9IHZm
c19zdGF0KGZwLCBzdCk7CiAKIAlyZXR1cm4gZXJyb3I7CiB9CkBAIC04MTUsMTAgKzg0MCw4IEBA
IHN5c19zeW1saW5rKGNvbnN0IGNoYXIgKm9sZHBhdGgsIGNvbnN0IGNoYXIgKm5ld3BhdGgpCiB7
CiAJc3RydWN0IHRhc2sJKnQgPSBtYWluX3Rhc2s7CiAJaW50CQllcnJvcjsKLQlzdGQ6OnVuaXF1
ZV9wdHI8Y2hhciBbXT4gdXBfb3AgKG5ldyBjaGFyW1BBVEhfTUFYXSk7Ci0JY2hhcgkJKm9wID0g
dXBfb3AuZ2V0KCk7Ci0Jc3RkOjp1bmlxdWVfcHRyPGNoYXIgW10+IHVwX25wIChuZXcgY2hhcltQ
QVRIX01BWF0pOwotCWNoYXIJCSpucCA9IHVwX25wLmdldCgpOworCWNoYXIJCW9wW1BBVEhfTUFY
XTsKKwljaGFyCQlucFtQQVRIX01BWF07CiAJc3RydWN0IGRlbnRyeQkqbmV3ZHA7CiAJc3RydWN0
IGRlbnRyeQkqbmV3ZGlyZHA7CiAJY2hhcgkJKm5hbWU7CkBAIC0xMDMyLDE3ICsxMDU1LDE3IEBA
IHN5c19hY2Nlc3MoY2hhciAqcGF0aCwgaW50IG1vZGUpCiBpbnQKIHN5c19zdGF0KGNoYXIgKnBh
dGgsIHN0cnVjdCBzdGF0ICpzdCkKIHsKKwlzdHJ1Y3QgZGVudHJ5ICpkcDsKKwlpbnQgZXJyb3I7
CisKIAlEUFJJTlRGKFZGU0RCX1NZU0NBTEwsICgic3lzX3N0YXQ6IHBhdGg9JXNcbiIsIHBhdGgp
KTsKIAotCXRyeSB7Ci0JCWRlbnRyeV9yZWYgZHAgPSBuYW1laShwYXRoKTsKLQkJaWYgKCFkcCkg
ewotCQkJcmV0dXJuIEVOT0VOVDsKLQkJfQotCQlyZXR1cm4gdm5fc3RhdChkcC0+ZF92bm9kZSwg
c3QpOwotCX0gY2F0Y2ggKGVycm9yIGUpIHsKLQkJcmV0dXJuIGUuZ2V0KCk7Ci0JfQorCWVycm9y
ID0gbmFtZWkocGF0aCwgJmRwKTsKKwlpZiAoZXJyb3IpCisJCXJldHVybiBlcnJvcjsKKwllcnJv
ciA9IHZuX3N0YXQoZHAtPmRfdm5vZGUsIHN0KTsKKwlkcmVsZShkcCk7CisJcmV0dXJuIGVycm9y
OwogfQogCiBpbnQgc3lzX2xzdGF0KGNoYXIgKnBhdGgsIHN0cnVjdCBzdGF0ICpzdCkKQEAgLTEw
NzQsMTYgKzEwOTcsMTkgQEAgaW50IHN5c19sc3RhdChjaGFyICpwYXRoLCBzdHJ1Y3Qgc3RhdCAq
c3QpCiBpbnQKIHN5c19zdGF0ZnMoY2hhciAqcGF0aCwgc3RydWN0IHN0YXRmcyAqYnVmKQogewor
CXN0cnVjdCBkZW50cnkgKmRwOworCWludCBlcnJvcjsKKwogCW1lbXNldChidWYsIDAsIHNpemVv
ZigqYnVmKSk7Ci0JdHJ5IHsKLQkJZGVudHJ5X3JlZiBkcCA9IG5hbWVpKHBhdGgpOwotCQlpZiAo
IWRwKSB7Ci0JCQlyZXR1cm4gRU5PRU5UOwotCQl9Ci0JCXJldHVybiBWRlNfU1RBVEZTKGRwLT5k
X21vdW50LCBidWYpOwotCX0gY2F0Y2ggKGVycm9yIGUpIHsKLQkJcmV0dXJuIGUuZ2V0KCk7Ci0J
fQorCisJZXJyb3IgPSBuYW1laShwYXRoLCAmZHApOworCWlmIChlcnJvcikKKwkJcmV0dXJuIGVy
cm9yOworCisJZXJyb3IgPSBWRlNfU1RBVEZTKGRwLT5kX21vdW50LCBidWYpOworCWRyZWxlKGRw
KTsKKworCXJldHVybiBlcnJvcjsKIH0KIAogaW50CkBAIC0xMjEyLDYgKzEyMzgsNyBAQCBzeXNf
cmVhZGxpbmsoY2hhciAqcGF0aCwgY2hhciAqYnVmLCBzaXplX3QgYnVmc2l6ZSwgc3NpemVfdCAq
c2l6ZSkKIAlyZXR1cm4gKDApOwogfQogCisjaWYgMAogLyoKICAqIENoZWNrIHRoZSB2YWxpZGl0
eSBvZiB0aGUgbWVtYmVycyBvZiBhIHN0cnVjdCB0aW1ldmFsLgogICovCkBAIC0xMzk2LDYgKzE0
MjMsNyBAQCBzeXNfZnV0aW1lbnMoaW50IGZkLCBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgdGltZXNb
Ml0pCiAJYXV0byBlcnJvciA9IHN5c191dGltZW5zYXQoQVRfRkRDV0QsIHBhdGhuYW1lLmNfc3Ry
KCksIHRpbWVzLCAwKTsKIAlyZXR1cm4gZXJyb3I7CiB9CisjZW5kaWYKIAogaW50CiBzeXNfZmFs
bG9jYXRlKHN0cnVjdCBmaWxlICpmcCwgaW50IG1vZGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBs
ZW4pCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS90YXNrLmMgYi9saWIvdmZzY29yZS90YXNrLmMK
aW5kZXggMmQzNGYwZGYuLjRjZWIxMjNiIDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS90YXNrLmMK
KysrIGIvbGliL3Zmc2NvcmUvdGFzay5jCkBAIC00NCwyMyArNDQsNiBAQAogI2luY2x1ZGUgPG9z
di9wcmV4Lmg+CiAjaW5jbHVkZSAidmZzLmgiCiAKLS8qCi0gKiBBbGxvY2F0ZSBuZXcgdGFzay4K
LSAqLwotaW50Ci10YXNrX2FsbG9jKHN0cnVjdCB0YXNrICoqcHQpCi17Ci0Jc3RydWN0IHRhc2sg
KnQ7Ci0KLQkvLyBGSVhNRTogd2hlcmUgZG8gd2UgZnJlZSB0YXNrID8KLQlpZiAoISh0ID0gbmV3
IHRhc2spKQotCQlyZXR1cm4gRU5PTUVNOwotCW1lbXNldCh0LCAwLCBzaXplb2Yoc3RydWN0IHRh
c2spKTsKLQlzdHJsY3B5KHQtPnRfY3dkLCAiLyIsIHNpemVvZih0LT50X2N3ZCkpOwotCi0JKnB0
ID0gdDsKLQlyZXR1cm4gMDsKLX0KIAogLyoKICAqIENvbnZlcnQgdG8gZnVsbCBwYXRoIGZyb20g
dGhlIGN3ZCBvZiB0YXNrIGFuZCBwYXRoLgpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvdmZzLmgg
Yi9saWIvdmZzY29yZS92ZnMuaAppbmRleCBjMTMwNTE3ZC4uY2Q5NDA5NzkgMTAwNjQ0Ci0tLSBh
L2xpYi92ZnNjb3JlL3Zmcy5oCisrKyBiL2xpYi92ZnNjb3JlL3Zmcy5oCkBAIC04OSw3ICs4OSw2
IEBAIHN0cnVjdCB0YXNrIHsKIAogZXh0ZXJuIGNvbnN0IHN0cnVjdCB2ZnNzdyB2ZnNzd1tdOwog
Ci1fX0JFR0lOX0RFQ0xTCiBpbnQJIHN5c19vcGVuKGNoYXIgKnBhdGgsIGludCBmbGFncywgbW9k
ZV90IG1vZGUsIHN0cnVjdCBmaWxlICoqZnApOwogaW50CSBzeXNfcmVhZChzdHJ1Y3QgZmlsZSAq
ZnAsIGNvbnN0IHN0cnVjdCBpb3ZlYyAqaW92LCBzaXplX3QgbmlvdiwKIAkJb2ZmX3Qgb2Zmc2V0
LCBzaXplX3QgKmNvdW50KTsKQEAgLTE2NywyNiArMTY2LDQgQEAgdm9pZAkgdm5vZGVfZHVtcCh2
b2lkKTsKIHZvaWQJIG1vdW50X2R1bXAodm9pZCk7CiAjZW5kaWYKIAotX19FTkRfREVDTFMKLQot
I2lmZGVmIF9fY3BsdXNwbHVzCi0KLS8vIENvbnZlcnQgYSBwYXRoIHRvIGEgZGVudHJ5X3JlZi4g
IFJldHVybnMgYW4gZW1wdHkKLS8vIHJlZmVyZW5jZSBpZiBub3QgZm91bmQgKEVOT0VOVCkgZm9y
IGVmZmljaWVuY3ksIHRocm93cwotLy8gYW4gZXJyb3Igb24gb3RoZXIgZXJyb3JzLgotaW5saW5l
IGRlbnRyeV9yZWYgbmFtZWkoY2hhciogcGF0aCkKLXsKLQlkZW50cnkqIGRwOwotCWF1dG8gZXJy
ID0gbmFtZWkocGF0aCwgJmRwKTsKLQlpZiAoZXJyID09IEVOT0VOVCkgewotCQlyZXR1cm4gZGVu
dHJ5X3JlZigpOwotCX0gZWxzZSBpZiAoZXJyKSB7Ci0JCXRocm93IG1ha2VfZXJyb3IoZXJyKTsK
LQl9IGVsc2UgewotCQlyZXR1cm4gZGVudHJ5X3JlZihkcCwgZmFsc2UpOwotCX0KLX0KLQotI2Vu
ZGlmCi0KICNlbmRpZiAvKiAhX1ZGU19IICovCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS92bm9k
ZS5jIGIvbGliL3Zmc2NvcmUvdm5vZGUuYwppbmRleCAzNDEyYzZmYi4uZjU2NDU3N2YgMTAwNjQ0
Ci0tLSBhL2xpYi92ZnNjb3JlL3Zub2RlLmMKKysrIGIvbGliL3Zmc2NvcmUvdm5vZGUuYwpAQCAt
MTg3LDcgKzE4Nyw4IEBAIHZnZXQoc3RydWN0IG1vdW50ICptcCwgdWludDY0X3QgaW5vLCBzdHJ1
Y3Qgdm5vZGUgKip2cHApCiAJCXJldHVybiAxOwogCX0KIAotCWlmICghKHZwID0gbmV3IHZub2Rl
KCkpKSB7CisJdnAgPSBtYWxsb2Moc2l6ZW9mKCp2cCkpOworCWlmICghdnApIHsKIAkJVk5PREVf
VU5MT0NLKCk7CiAJCXJldHVybiAwOwogCX0KLS0gCjIuMTkuMgoKCgpfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0
Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2pl
Y3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Thu Feb 07 13:59:56 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 07 Feb 2019 13:59:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grkDc-0006Zj-Dw; Thu, 07 Feb 2019 13:59:56 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=CXnx=QO=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1grkDa-0006Z5-IK
 for minios-devel@lists.xen.org; Thu, 07 Feb 2019 13:59:54 +0000
X-Inumbo-ID: 9f3362e4-2ae0-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 9f3362e4-2ae0-11e9-bc90-bc764e045a96;
 Thu, 07 Feb 2019 13:59:45 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 17012104DA4;
 Thu,  7 Feb 2019 14:59:44 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id XDQFM-54AyY3; Thu,  7 Feb 2019 14:59:43 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id C330B104DA3
 for <minios-devel@lists.xen.org>; Thu,  7 Feb 2019 14:59:41 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Thu, 7 Feb 2019 14:59:41 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Thu, 7 Feb 2019 14:58:43 +0100
Message-ID: <20190207135901.9122-6-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
References: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v3 05/23] lib/vfscore: tabify
 imported vfs code
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VG8gY29tcGx5IHdpdGggVW5pa3JhZnQgY29kaW5nIHN0eWxlLCBpbmRlbnRzIG11c3QgYmUgdGFi
cywgbm90CnNwYWNlcy4gSW1wb3J0ZWQgY29kZSB3YXMgYSBtaXh0dXJlIG9mIGJvdGguCgpTaWdu
ZWQtb2ZmLWJ5OiBZdXJpIFZvbGNoa292IDx5dXJpLnZvbGNoa292QG5lY2xhYi5ldT4KUmV2aWV3
ZWQtYnk6IFNoYXJhbiBTYW50aGFuYW0gPHNoYXJhbi5zYW50aGFuYW1AbmVjbGFiLmV1PgotLS0K
IGxpYi92ZnNjb3JlL2RlbnRyeS5jICAgICAgICAgICAgICAgICB8ICAyNjggKy0tCiBsaWIvdmZz
Y29yZS9mb3BzLmMgICAgICAgICAgICAgICAgICAgfCAgIDMyICstCiBsaWIvdmZzY29yZS9pbmNs
dWRlL3Zmc2NvcmUvZGVudHJ5LmggfCAgICA0ICstCiBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2Nv
cmUvbW91bnQuaCAgfCAgICA4ICstCiBsaWIvdmZzY29yZS9sb29rdXAuYyAgICAgICAgICAgICAg
ICAgfCAgNTU0ICsrLS0tCiBsaWIvdmZzY29yZS9tYWluLmMgICAgICAgICAgICAgICAgICAgfCAy
ODQ0ICsrKysrKysrKysrKystLS0tLS0tLS0tLS0tCiBsaWIvdmZzY29yZS9tb3VudC5jICAgICAg
ICAgICAgICAgICAgfCAgNTgwICsrKy0tLQogbGliL3Zmc2NvcmUvc3lzY2FsbHMuYyAgICAgICAg
ICAgICAgIHwgIDQ2NCArKy0tLQogbGliL3Zmc2NvcmUvdGFzay5jICAgICAgICAgICAgICAgICAg
IHwgICAxMCArLQogbGliL3Zmc2NvcmUvdmZzLmggICAgICAgICAgICAgICAgICAgIHwgICAgMiAr
LQogbGliL3Zmc2NvcmUvdm5vZGUuYyAgICAgICAgICAgICAgICAgIHwgICA1MCArLQogMTEgZmls
ZXMgY2hhbmdlZCwgMjQwOCBpbnNlcnRpb25zKCspLCAyNDA4IGRlbGV0aW9ucygtKQoKZGlmZiAt
LWdpdCBhL2xpYi92ZnNjb3JlL2RlbnRyeS5jIGIvbGliL3Zmc2NvcmUvZGVudHJ5LmMKaW5kZXgg
ZmFjZDllYWEuLmMyZjIwOWIyIDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9kZW50cnkuYworKysg
Yi9saWIvdmZzY29yZS9kZW50cnkuYwpAQCAtNTUsMTgwICs1NSwxODAgQEAgc3RhdGljIG11dGV4
IGRlbnRyeV9oYXNoX2xvY2s7CiBzdGF0aWMgdV9pbnQKIGRlbnRyeV9oYXNoKHN0cnVjdCBtb3Vu
dCAqbXAsIGNvbnN0IGNoYXIgKnBhdGgpCiB7Ci0gICAgdV9pbnQgdmFsID0gMDsKLQotICAgIGlm
IChwYXRoKSB7Ci0gICAgICAgIHdoaWxlICgqcGF0aCkgewotICAgICAgICAgICAgdmFsID0gKCh2
YWwgPDwgNSkgKyB2YWwpICsgKnBhdGgrKzsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4g
KHZhbCBeICh1bnNpZ25lZCBsb25nKSBtcCkgJiAoREVOVFJZX0JVQ0tFVFMgLSAxKTsKKwl1X2lu
dCB2YWwgPSAwOworCisJaWYgKHBhdGgpIHsKKwkJd2hpbGUgKCpwYXRoKSB7CisJCQl2YWwgPSAo
KHZhbCA8PCA1KSArIHZhbCkgKyAqcGF0aCsrOworCQl9CisJfQorCXJldHVybiAodmFsIF4gKHVu
c2lnbmVkIGxvbmcpIG1wKSAmIChERU5UUllfQlVDS0VUUyAtIDEpOwogfQogCiAKIHN0cnVjdCBk
ZW50cnkgKgogZGVudHJ5X2FsbG9jKHN0cnVjdCBkZW50cnkgKnBhcmVudF9kcCwgc3RydWN0IHZu
b2RlICp2cCwgY29uc3QgY2hhciAqcGF0aCkKIHsKLSAgICBzdHJ1Y3QgbW91bnQgKm1wID0gdnAt
PnZfbW91bnQ7Ci0gICAgc3RydWN0IGRlbnRyeSAqZHAgPSAoZGVudHJ5KiljYWxsb2Moc2l6ZW9m
KCpkcCksIDEpOwotCi0gICAgaWYgKCFkcCkgewotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICB9Ci0KLSAgICB2cmVmKHZwKTsKLQotICAgIGRwLT5kX3JlZmNudCA9IDE7Ci0gICAgZHAtPmRf
dm5vZGUgPSB2cDsKLSAgICBkcC0+ZF9tb3VudCA9IG1wOwotICAgIGRwLT5kX3BhdGggPSBzdHJk
dXAocGF0aCk7Ci0gICAgTElTVF9JTklUKCZkcC0+ZF9jaGlsZHJlbik7Ci0KLSAgICBpZiAocGFy
ZW50X2RwKSB7Ci0gICAgICAgIGRyZWYocGFyZW50X2RwKTsKLSAgICAgICAgV0lUSF9MT0NLKHBh
cmVudF9kcC0+ZF9sb2NrKSB7Ci0gICAgICAgICAgICAvLyBJbnNlcnQgZHAgaW50byBpdHMgcGFy
ZW50J3MgY2hpbGRyZW4gbGlzdC4KLSAgICAgICAgICAgIExJU1RfSU5TRVJUX0hFQUQoJnBhcmVu
dF9kcC0+ZF9jaGlsZHJlbiwgZHAsIGRfY2hpbGRyZW5fbGluayk7Ci0gICAgICAgIH0KLSAgICB9
Ci0gICAgZHAtPmRfcGFyZW50ID0gcGFyZW50X2RwOwotCi0gICAgdm5fYWRkX25hbWUodnAsIGRw
KTsKLQotICAgIG11dGV4X2xvY2soJmRlbnRyeV9oYXNoX2xvY2spOwotICAgIExJU1RfSU5TRVJU
X0hFQUQoJmRlbnRyeV9oYXNoX3RhYmxlW2RlbnRyeV9oYXNoKG1wLCBwYXRoKV0sIGRwLCBkX2xp
bmspOwotICAgIG11dGV4X3VubG9jaygmZGVudHJ5X2hhc2hfbG9jayk7Ci0gICAgcmV0dXJuIGRw
OworCXN0cnVjdCBtb3VudCAqbXAgPSB2cC0+dl9tb3VudDsKKwlzdHJ1Y3QgZGVudHJ5ICpkcCA9
IChkZW50cnkqKWNhbGxvYyhzaXplb2YoKmRwKSwgMSk7CisKKwlpZiAoIWRwKSB7CisJCXJldHVy
biBudWxscHRyOworCX0KKworCXZyZWYodnApOworCisJZHAtPmRfcmVmY250ID0gMTsKKwlkcC0+
ZF92bm9kZSA9IHZwOworCWRwLT5kX21vdW50ID0gbXA7CisJZHAtPmRfcGF0aCA9IHN0cmR1cChw
YXRoKTsKKwlMSVNUX0lOSVQoJmRwLT5kX2NoaWxkcmVuKTsKKworCWlmIChwYXJlbnRfZHApIHsK
KwkJZHJlZihwYXJlbnRfZHApOworCQlXSVRIX0xPQ0socGFyZW50X2RwLT5kX2xvY2spIHsKKwkJ
CS8vIEluc2VydCBkcCBpbnRvIGl0cyBwYXJlbnQncyBjaGlsZHJlbiBsaXN0LgorCQkJTElTVF9J
TlNFUlRfSEVBRCgmcGFyZW50X2RwLT5kX2NoaWxkcmVuLCBkcCwgZF9jaGlsZHJlbl9saW5rKTsK
KwkJfQorCX0KKwlkcC0+ZF9wYXJlbnQgPSBwYXJlbnRfZHA7CisKKwl2bl9hZGRfbmFtZSh2cCwg
ZHApOworCisJbXV0ZXhfbG9jaygmZGVudHJ5X2hhc2hfbG9jayk7CisJTElTVF9JTlNFUlRfSEVB
RCgmZGVudHJ5X2hhc2hfdGFibGVbZGVudHJ5X2hhc2gobXAsIHBhdGgpXSwgZHAsIGRfbGluayk7
CisJbXV0ZXhfdW5sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKKwlyZXR1cm4gZHA7CiB9OwogCiBz
dHJ1Y3QgZGVudHJ5ICoKIGRlbnRyeV9sb29rdXAoc3RydWN0IG1vdW50ICptcCwgY2hhciAqcGF0
aCkKIHsKLSAgICBzdHJ1Y3QgZGVudHJ5ICpkcDsKLQotICAgIG11dGV4X2xvY2soJmRlbnRyeV9o
YXNoX2xvY2spOwotICAgIExJU1RfRk9SRUFDSChkcCwgJmRlbnRyeV9oYXNoX3RhYmxlW2RlbnRy
eV9oYXNoKG1wLCBwYXRoKV0sIGRfbGluaykgewotICAgICAgICBpZiAoZHAtPmRfbW91bnQgPT0g
bXAgJiYgIXN0cm5jbXAoZHAtPmRfcGF0aCwgcGF0aCwgUEFUSF9NQVgpKSB7Ci0gICAgICAgICAg
ICBkcC0+ZF9yZWZjbnQrKzsKLSAgICAgICAgICAgIG11dGV4X3VubG9jaygmZGVudHJ5X2hhc2hf
bG9jayk7Ci0gICAgICAgICAgICByZXR1cm4gZHA7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgbXV0
ZXhfdW5sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKLSAgICByZXR1cm4gbnVsbHB0cjsgICAgICAg
ICAgICAgICAgLyogbm90IGZvdW5kICovCisJc3RydWN0IGRlbnRyeSAqZHA7CisKKwltdXRleF9s
b2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKKwlMSVNUX0ZPUkVBQ0goZHAsICZkZW50cnlfaGFzaF90
YWJsZVtkZW50cnlfaGFzaChtcCwgcGF0aCldLCBkX2xpbmspIHsKKwkJaWYgKGRwLT5kX21vdW50
ID09IG1wICYmICFzdHJuY21wKGRwLT5kX3BhdGgsIHBhdGgsIFBBVEhfTUFYKSkgeworCQkJZHAt
PmRfcmVmY250Kys7CisJCQltdXRleF91bmxvY2soJmRlbnRyeV9oYXNoX2xvY2spOworCQkJcmV0
dXJuIGRwOworCQl9CisJfQorCW11dGV4X3VubG9jaygmZGVudHJ5X2hhc2hfbG9jayk7CisJcmV0
dXJuIG51bGxwdHI7ICAgICAgICAgICAgICAgIC8qIG5vdCBmb3VuZCAqLwogfQogCiBzdGF0aWMg
dm9pZCBkZW50cnlfY2hpbGRyZW5fcmVtb3ZlKHN0cnVjdCBkZW50cnkgKmRwKQogewotICAgIHN0
cnVjdCBkZW50cnkgKmVudHJ5ID0gbnVsbHB0cjsKLQotICAgIFdJVEhfTE9DSyhkcC0+ZF9sb2Nr
KSB7Ci0gICAgICAgIExJU1RfRk9SRUFDSChlbnRyeSwgJmRwLT5kX2NoaWxkcmVuLCBkX2NoaWxk
cmVuX2xpbmspIHsKLSAgICAgICAgICAgIEFTU0VSVChlbnRyeSk7Ci0gICAgICAgICAgICBBU1NF
UlQoZW50cnktPmRfcmVmY250ID4gMCk7Ci0gICAgICAgICAgICBMSVNUX1JFTU9WRShlbnRyeSwg
ZF9saW5rKTsKLSAgICAgICAgfQotICAgIH0KKwlzdHJ1Y3QgZGVudHJ5ICplbnRyeSA9IG51bGxw
dHI7CisKKwlXSVRIX0xPQ0soZHAtPmRfbG9jaykgeworCQlMSVNUX0ZPUkVBQ0goZW50cnksICZk
cC0+ZF9jaGlsZHJlbiwgZF9jaGlsZHJlbl9saW5rKSB7CisJCQlBU1NFUlQoZW50cnkpOworCQkJ
QVNTRVJUKGVudHJ5LT5kX3JlZmNudCA+IDApOworCQkJTElTVF9SRU1PVkUoZW50cnksIGRfbGlu
ayk7CisJCX0KKwl9CiB9CiAKIHZvaWQKIGRlbnRyeV9tb3ZlKHN0cnVjdCBkZW50cnkgKmRwLCBz
dHJ1Y3QgZGVudHJ5ICpwYXJlbnRfZHAsIGNoYXIgKnBhdGgpCiB7Ci0gICAgc3RydWN0IGRlbnRy
eSAqb2xkX3BkcCA9IGRwLT5kX3BhcmVudDsKLSAgICBjaGFyICpvbGRfcGF0aCA9IGRwLT5kX3Bh
dGg7Ci0KLSAgICBpZiAob2xkX3BkcCkgewotICAgICAgICBXSVRIX0xPQ0sob2xkX3BkcC0+ZF9s
b2NrKSB7Ci0gICAgICAgICAgICAvLyBSZW1vdmUgZHAgZnJvbSBpdHMgb2xkIHBhcmVudCdzIGNo
aWxkcmVuIGxpc3QuCi0gICAgICAgICAgICBMSVNUX1JFTU9WRShkcCwgZF9jaGlsZHJlbl9saW5r
KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChwYXJlbnRfZHApIHsKLSAgICAgICAgZHJl
ZihwYXJlbnRfZHApOwotICAgICAgICBXSVRIX0xPQ0socGFyZW50X2RwLT5kX2xvY2spIHsKLSAg
ICAgICAgICAgIC8vIEluc2VydCBkcCBpbnRvIGl0cyBuZXcgcGFyZW50J3MgY2hpbGRyZW4gbGlz
dC4KLSAgICAgICAgICAgIExJU1RfSU5TRVJUX0hFQUQoJnBhcmVudF9kcC0+ZF9jaGlsZHJlbiwg
ZHAsIGRfY2hpbGRyZW5fbGluayk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBXSVRIX0xPQ0so
ZGVudHJ5X2hhc2hfbG9jaykgewotICAgICAgICAvLyBSZW1vdmUgYWxsIGRwJ3MgY2hpbGQgZGVu
dHJpZXMgZnJvbSB0aGUgaGFzaHRhYmxlLgotICAgICAgICBkZW50cnlfY2hpbGRyZW5fcmVtb3Zl
KGRwKTsKLSAgICAgICAgLy8gUmVtb3ZlIGRwIHdpdGggb3V0ZGF0ZWQgaGFzaCBpbmZvIGZyb20g
dGhlIGhhc2h0YWJsZS4KLSAgICAgICAgTElTVF9SRU1PVkUoZHAsIGRfbGluayk7Ci0gICAgICAg
IC8vIFVwZGF0ZSBkcC4KLSAgICAgICAgZHAtPmRfcGF0aCA9IHN0cmR1cChwYXRoKTsKLSAgICAg
ICAgZHAtPmRfcGFyZW50ID0gcGFyZW50X2RwOwotICAgICAgICAvLyBJbnNlcnQgZHAgdXBkYXRl
ZCBoYXNoIGluZm8gaW50byB0aGUgaGFzaHRhYmxlLgotICAgICAgICBMSVNUX0lOU0VSVF9IRUFE
KCZkZW50cnlfaGFzaF90YWJsZVtkZW50cnlfaGFzaChkcC0+ZF9tb3VudCwgcGF0aCldLAotICAg
ICAgICAgICAgZHAsIGRfbGluayk7Ci0gICAgfQotCi0gICAgaWYgKG9sZF9wZHApIHsKLSAgICAg
ICAgZHJlbGUob2xkX3BkcCk7Ci0gICAgfQotCi0gICAgZnJlZShvbGRfcGF0aCk7CisJc3RydWN0
IGRlbnRyeSAqb2xkX3BkcCA9IGRwLT5kX3BhcmVudDsKKwljaGFyICpvbGRfcGF0aCA9IGRwLT5k
X3BhdGg7CisKKwlpZiAob2xkX3BkcCkgeworCQlXSVRIX0xPQ0sob2xkX3BkcC0+ZF9sb2NrKSB7
CisJCQkvLyBSZW1vdmUgZHAgZnJvbSBpdHMgb2xkIHBhcmVudCdzIGNoaWxkcmVuIGxpc3QuCisJ
CQlMSVNUX1JFTU9WRShkcCwgZF9jaGlsZHJlbl9saW5rKTsKKwkJfQorCX0KKworCWlmIChwYXJl
bnRfZHApIHsKKwkJZHJlZihwYXJlbnRfZHApOworCQlXSVRIX0xPQ0socGFyZW50X2RwLT5kX2xv
Y2spIHsKKwkJCS8vIEluc2VydCBkcCBpbnRvIGl0cyBuZXcgcGFyZW50J3MgY2hpbGRyZW4gbGlz
dC4KKwkJCUxJU1RfSU5TRVJUX0hFQUQoJnBhcmVudF9kcC0+ZF9jaGlsZHJlbiwgZHAsIGRfY2hp
bGRyZW5fbGluayk7CisJCX0KKwl9CisKKwlXSVRIX0xPQ0soZGVudHJ5X2hhc2hfbG9jaykgewor
CQkvLyBSZW1vdmUgYWxsIGRwJ3MgY2hpbGQgZGVudHJpZXMgZnJvbSB0aGUgaGFzaHRhYmxlLgor
CQlkZW50cnlfY2hpbGRyZW5fcmVtb3ZlKGRwKTsKKwkJLy8gUmVtb3ZlIGRwIHdpdGggb3V0ZGF0
ZWQgaGFzaCBpbmZvIGZyb20gdGhlIGhhc2h0YWJsZS4KKwkJTElTVF9SRU1PVkUoZHAsIGRfbGlu
ayk7CisJCS8vIFVwZGF0ZSBkcC4KKwkJZHAtPmRfcGF0aCA9IHN0cmR1cChwYXRoKTsKKwkJZHAt
PmRfcGFyZW50ID0gcGFyZW50X2RwOworCQkvLyBJbnNlcnQgZHAgdXBkYXRlZCBoYXNoIGluZm8g
aW50byB0aGUgaGFzaHRhYmxlLgorCQlMSVNUX0lOU0VSVF9IRUFEKCZkZW50cnlfaGFzaF90YWJs
ZVtkZW50cnlfaGFzaChkcC0+ZF9tb3VudCwgcGF0aCldLAorCQkJZHAsIGRfbGluayk7CisJfQor
CisJaWYgKG9sZF9wZHApIHsKKwkJZHJlbGUob2xkX3BkcCk7CisJfQorCisJZnJlZShvbGRfcGF0
aCk7CiB9CiAKIHZvaWQKIGRlbnRyeV9yZW1vdmUoc3RydWN0IGRlbnRyeSAqZHApCiB7Ci0gICAg
bXV0ZXhfbG9jaygmZGVudHJ5X2hhc2hfbG9jayk7Ci0gICAgTElTVF9SRU1PVkUoZHAsIGRfbGlu
ayk7Ci0gICAgLyogcHV0IGl0IG9uIGEgZmFrZSBsaXN0IGZvciBkcmVsZSgpIHRvIHdvcmsqLwot
ICAgIExJU1RfSU5TRVJUX0hFQUQoJmZha2UsIGRwLCBkX2xpbmspOwotICAgIG11dGV4X3VubG9j
aygmZGVudHJ5X2hhc2hfbG9jayk7CisJbXV0ZXhfbG9jaygmZGVudHJ5X2hhc2hfbG9jayk7CisJ
TElTVF9SRU1PVkUoZHAsIGRfbGluayk7CisJLyogcHV0IGl0IG9uIGEgZmFrZSBsaXN0IGZvciBk
cmVsZSgpIHRvIHdvcmsqLworCUxJU1RfSU5TRVJUX0hFQUQoJmZha2UsIGRwLCBkX2xpbmspOwor
CW11dGV4X3VubG9jaygmZGVudHJ5X2hhc2hfbG9jayk7CiB9CiAKIHZvaWQKIGRyZWYoc3RydWN0
IGRlbnRyeSAqZHApCiB7Ci0gICAgQVNTRVJUKGRwKTsKLSAgICBBU1NFUlQoZHAtPmRfcmVmY250
ID4gMCk7CisJQVNTRVJUKGRwKTsKKwlBU1NFUlQoZHAtPmRfcmVmY250ID4gMCk7CiAKLSAgICBt
dXRleF9sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKLSAgICBkcC0+ZF9yZWZjbnQrKzsKLSAgICBt
dXRleF91bmxvY2soJmRlbnRyeV9oYXNoX2xvY2spOworCW11dGV4X2xvY2soJmRlbnRyeV9oYXNo
X2xvY2spOworCWRwLT5kX3JlZmNudCsrOworCW11dGV4X3VubG9jaygmZGVudHJ5X2hhc2hfbG9j
ayk7CiB9CiAKIHZvaWQKIGRyZWxlKHN0cnVjdCBkZW50cnkgKmRwKQogewotICAgIEFTU0VSVChk
cCk7Ci0gICAgQVNTRVJUKGRwLT5kX3JlZmNudCA+IDApOwotCi0gICAgbXV0ZXhfbG9jaygmZGVu
dHJ5X2hhc2hfbG9jayk7Ci0gICAgaWYgKC0tZHAtPmRfcmVmY250KSB7Ci0gICAgICAgIG11dGV4
X3VubG9jaygmZGVudHJ5X2hhc2hfbG9jayk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
TElTVF9SRU1PVkUoZHAsIGRfbGluayk7Ci0gICAgdm5fZGVsX25hbWUoZHAtPmRfdm5vZGUsIGRw
KTsKLQotICAgIG11dGV4X3VubG9jaygmZGVudHJ5X2hhc2hfbG9jayk7Ci0KLSAgICBpZiAoZHAt
PmRfcGFyZW50KSB7Ci0gICAgICAgIFdJVEhfTE9DSyhkcC0+ZF9wYXJlbnQtPmRfbG9jaykgewot
ICAgICAgICAgICAgLy8gUmVtb3ZlIGRwIGZyb20gaXRzIHBhcmVudCdzIGNoaWxkcmVuIGxpc3Qu
Ci0gICAgICAgICAgICBMSVNUX1JFTU9WRShkcCwgZF9jaGlsZHJlbl9saW5rKTsKLSAgICAgICAg
fQotICAgICAgICBkcmVsZShkcC0+ZF9wYXJlbnQpOwotICAgIH0KLQotICAgIHZyZWxlKGRwLT5k
X3Zub2RlKTsKLQotICAgIGZyZWUoZHAtPmRfcGF0aCk7Ci0gICAgZnJlZShkcCk7CisJQVNTRVJU
KGRwKTsKKwlBU1NFUlQoZHAtPmRfcmVmY250ID4gMCk7CisKKwltdXRleF9sb2NrKCZkZW50cnlf
aGFzaF9sb2NrKTsKKwlpZiAoLS1kcC0+ZF9yZWZjbnQpIHsKKwkJbXV0ZXhfdW5sb2NrKCZkZW50
cnlfaGFzaF9sb2NrKTsKKwkJcmV0dXJuOworCX0KKwlMSVNUX1JFTU9WRShkcCwgZF9saW5rKTsK
Kwl2bl9kZWxfbmFtZShkcC0+ZF92bm9kZSwgZHApOworCisJbXV0ZXhfdW5sb2NrKCZkZW50cnlf
aGFzaF9sb2NrKTsKKworCWlmIChkcC0+ZF9wYXJlbnQpIHsKKwkJV0lUSF9MT0NLKGRwLT5kX3Bh
cmVudC0+ZF9sb2NrKSB7CisJCQkvLyBSZW1vdmUgZHAgZnJvbSBpdHMgcGFyZW50J3MgY2hpbGRy
ZW4gbGlzdC4KKwkJCUxJU1RfUkVNT1ZFKGRwLCBkX2NoaWxkcmVuX2xpbmspOworCQl9CisJCWRy
ZWxlKGRwLT5kX3BhcmVudCk7CisJfQorCisJdnJlbGUoZHAtPmRfdm5vZGUpOworCisJZnJlZShk
cC0+ZF9wYXRoKTsKKwlmcmVlKGRwKTsKIH0KIAogdm9pZAogZGVudHJ5X2luaXQodm9pZCkKIHsK
LSAgICBpbnQgaTsKKwlpbnQgaTsKIAotICAgIGZvciAoaSA9IDA7IGkgPCBERU5UUllfQlVDS0VU
UzsgaSsrKSB7Ci0gICAgICAgIExJU1RfSU5JVCgmZGVudHJ5X2hhc2hfdGFibGVbaV0pOwotICAg
IH0KKwlmb3IgKGkgPSAwOyBpIDwgREVOVFJZX0JVQ0tFVFM7IGkrKykgeworCQlMSVNUX0lOSVQo
JmRlbnRyeV9oYXNoX3RhYmxlW2ldKTsKKwl9CiB9CmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9m
b3BzLmMgYi9saWIvdmZzY29yZS9mb3BzLmMKaW5kZXggM2E4Zjk4YjQuLmFiMWY4Y2JiIDEwMDY0
NAotLS0gYS9saWIvdmZzY29yZS9mb3BzLmMKKysrIGIvbGliL3Zmc2NvcmUvZm9wcy5jCkBAIC0x
NDAsMTcgKzE0MCwxNyBAQCBpbnQgdmZzX2ZpbGU6OmNobW9kKG1vZGVfdCBtb2RlKQogCiBib29s
IHZmc19maWxlOjptYXBfcGFnZSh1aW50cHRyX3Qgb2ZmLCBtbXU6Omh3X3B0ZXA8MD4gcHRlcCwg
bW11OjpwdF9lbGVtZW50PDA+IHB0ZSwgYm9vbCB3cml0ZSwgYm9vbCBzaGFyZWQpCiB7Ci0gICAg
cmV0dXJuIHBhZ2VjYWNoZTo6Z2V0KHRoaXMsIG9mZiwgcHRlcCwgcHRlLCB3cml0ZSwgc2hhcmVk
KTsKKwlyZXR1cm4gcGFnZWNhY2hlOjpnZXQodGhpcywgb2ZmLCBwdGVwLCBwdGUsIHdyaXRlLCBz
aGFyZWQpOwogfQogCiBib29sIHZmc19maWxlOjpwdXRfcGFnZSh2b2lkICphZGRyLCB1aW50cHRy
X3Qgb2ZmLCBtbXU6Omh3X3B0ZXA8MD4gcHRlcCkKIHsKLSAgICByZXR1cm4gcGFnZWNhY2hlOjpy
ZWxlYXNlKHRoaXMsIGFkZHIsIG9mZiwgcHRlcCk7CisJcmV0dXJuIHBhZ2VjYWNoZTo6cmVsZWFz
ZSh0aGlzLCBhZGRyLCBvZmYsIHB0ZXApOwogfQogCiB2b2lkIHZmc19maWxlOjpzeW5jKG9mZl90
IHN0YXJ0LCBvZmZfdCBlbmQpCiB7Ci0gICAgcGFnZWNhY2hlOjpzeW5jKHRoaXMsIHN0YXJ0LCBl
bmQpOworCXBhZ2VjYWNoZTo6c3luYyh0aGlzLCBzdGFydCwgZW5kKTsKIH0KIAogLy8gTG9ja2lu
ZzogVk9QX0NBQ0hFIHdpbGwgY2FsbCBpbnRvIHRoZSBmaWxlc3lzdGVtLCBhbmQgdGhhdCBjYW4g
dHJpZ2dlciBhbgpAQCAtMTU5LDIzICsxNTksMjMgQEAgdm9pZCB2ZnNfZmlsZTo6c3luYyhvZmZf
dCBzdGFydCwgb2ZmX3QgZW5kKQogLy8gYmVjYXVzZSBub3QgYWxsIGludmFsaWRhdGlvbnMgd2ls
bCBiZSBzeW5jaHJvbm91cy4KIGludCB2ZnNfZmlsZTo6Z2V0X2FyY2J1Zih2b2lkKiBrZXksIG9m
Zl90IG9mZnNldCkKIHsKLSAgICBzdHJ1Y3Qgdm5vZGUgKnZwID0gZl9kZW50cnktPmRfdm5vZGU7
CisJc3RydWN0IHZub2RlICp2cCA9IGZfZGVudHJ5LT5kX3Zub2RlOwogCi0gICAgaW92ZWMgaW9b
MV07CisJaW92ZWMgaW9bMV07CiAKLSAgICBpb1swXS5pb3ZfYmFzZSA9IGtleTsKLSAgICB1aW8g
ZGF0YTsKLSAgICBkYXRhLnVpb19pb3YgPSBpbzsKLSAgICBkYXRhLnVpb19pb3ZjbnQgPSAxOwot
ICAgIGRhdGEudWlvX29mZnNldCA9IG9mZnNldDsKLSAgICBkYXRhLnVpb19yZXNpZCA9IG1tdTo6
cGFnZV9zaXplOwotICAgIGRhdGEudWlvX3J3ID0gVUlPX1JFQUQ7CisJaW9bMF0uaW92X2Jhc2Ug
PSBrZXk7CisJdWlvIGRhdGE7CisJZGF0YS51aW9faW92ID0gaW87CisJZGF0YS51aW9faW92Y250
ID0gMTsKKwlkYXRhLnVpb19vZmZzZXQgPSBvZmZzZXQ7CisJZGF0YS51aW9fcmVzaWQgPSBtbXU6
OnBhZ2Vfc2l6ZTsKKwlkYXRhLnVpb19ydyA9IFVJT19SRUFEOwogCi0gICAgdm5fbG9jayh2cCk7
Ci0gICAgYXNzZXJ0KFZPUF9DQUNIRSh2cCwgdGhpcywgJmRhdGEpID09IDApOwotICAgIHZuX3Vu
bG9jayh2cCk7CisJdm5fbG9jayh2cCk7CisJYXNzZXJ0KFZPUF9DQUNIRSh2cCwgdGhpcywgJmRh
dGEpID09IDApOworCXZuX3VubG9jayh2cCk7CiAKLSAgICByZXR1cm4gKGRhdGEudWlvX3Jlc2lk
ICE9IDApID8gLTEgOiAwOworCXJldHVybiAoZGF0YS51aW9fcmVzaWQgIT0gMCkgPyAtMSA6IDA7
CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxtbXU6OmZpbGVfdm1hPiB2ZnNfZmlsZTo6bW1hcChhZGRy
X3JhbmdlIHJhbmdlLCB1bnNpZ25lZCBmbGFncywgdW5zaWduZWQgcGVybSwgb2ZmX3Qgb2Zmc2V0
KQpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2RlbnRyeS5oIGIvbGli
L3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2RlbnRyeS5oCmluZGV4IGEyNTQ1YWY4Li5mNTg1MDc4
NiAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2RlbnRyeS5oCisrKyBi
L2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9kZW50cnkuaApAQCAtMzMsOCArMzMsOCBAQCBz
dHJ1Y3QgZGVudHJ5IHsKIHVzaW5nIGRlbnRyeV9yZWYgPSBib29zdDo6aW50cnVzaXZlX3B0cjxk
ZW50cnk+OwogCiBleHRlcm4gIkMiIHsKLSAgICB2b2lkIGRyZWYoc3RydWN0IGRlbnRyeSogZHAp
OwotICAgIHZvaWQgZHJlbGUoc3RydWN0IGRlbnRyeSogZHApOworCXZvaWQgZHJlZihzdHJ1Y3Qg
ZGVudHJ5KiBkcCk7CisJdm9pZCBkcmVsZShzdHJ1Y3QgZGVudHJ5KiBkcCk7CiB9OwogCiBpbmxp
bmUgdm9pZCBpbnRydXNpdmVfcHRyX2FkZF9yZWYoZGVudHJ5KiBkcCkgeyBkcmVmKGRwKTsgfQpk
aWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmggYi9saWIvdmZz
Y29yZS9pbmNsdWRlL3Zmc2NvcmUvbW91bnQuaAppbmRleCA3MjY4ZDhjZS4uMGU3ODkyOWYgMTAw
NjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9tb3VudC5oCisrKyBiL2xpYi92
ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9tb3VudC5oCkBAIC0xNTYsMTAgKzE1NiwxMCBAQCBfX0VO
RF9ERUNMUwogbmFtZXNwYWNlIG9zdiB7CiAKIHN0cnVjdCBtb3VudF9kZXNjIHsKLSAgICBzdGQ6
OnN0cmluZyBzcGVjaWFsOwotICAgIHN0ZDo6c3RyaW5nIHBhdGg7Ci0gICAgc3RkOjpzdHJpbmcg
dHlwZTsKLSAgICBzdGQ6OnN0cmluZyBvcHRpb25zOworCXN0ZDo6c3RyaW5nIHNwZWNpYWw7CisJ
c3RkOjpzdHJpbmcgcGF0aDsKKwlzdGQ6OnN0cmluZyB0eXBlOworCXN0ZDo6c3RyaW5nIG9wdGlv
bnM7CiB9OwogCiBzdGQ6OnZlY3Rvcjxtb3VudF9kZXNjPiBjdXJyZW50X21vdW50cygpOwpkaWZm
IC0tZ2l0IGEvbGliL3Zmc2NvcmUvbG9va3VwLmMgYi9saWIvdmZzY29yZS9sb29rdXAuYwppbmRl
eCBhZDAzZmUyNS4uMzAxMzlhODcgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2xvb2t1cC5jCisr
KyBiL2xpYi92ZnNjb3JlL2xvb2t1cC5jCkBAIC00MCw1NyArNDAsNTcgQEAKIHN0YXRpYyBzc2l6
ZV90CiByZWFkX2xpbmsoc3RydWN0IHZub2RlICp2cCwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3os
IHNzaXplX3QgKnN6KQogewotICAgIHN0cnVjdCBpb3ZlYyBpb3YgPSB7YnVmLCBidWZzen07Ci0g
ICAgc3RydWN0IHVpbyAgIHVpbyA9IHsmaW92LCAxLCAwLCAoc3NpemVfdCkgYnVmc3osIFVJT19S
RUFEfTsKLSAgICBpbnQgcmM7CisJc3RydWN0IGlvdmVjIGlvdiA9IHtidWYsIGJ1ZnN6fTsKKwlz
dHJ1Y3QgdWlvICAgdWlvID0geyZpb3YsIDEsIDAsIChzc2l6ZV90KSBidWZzeiwgVUlPX1JFQUR9
OworCWludCByYzsKIAotICAgICpzeiA9IDA7Ci0gICAgdm5fbG9jayh2cCk7Ci0gICAgcmMgID0g
Vk9QX1JFQURMSU5LKHZwLCAmdWlvKTsKLSAgICB2bl91bmxvY2sodnApOworCSpzeiA9IDA7CisJ
dm5fbG9jayh2cCk7CisJcmMgID0gVk9QX1JFQURMSU5LKHZwLCAmdWlvKTsKKwl2bl91bmxvY2so
dnApOwogCi0gICAgaWYgKHJjICE9IDApIHsKLSAgICAgICAgcmV0dXJuIChyYyk7Ci0gICAgfQor
CWlmIChyYyAhPSAwKSB7CisJCXJldHVybiAocmMpOworCX0KIAotICAgICpzeiA9IGJ1ZnN6IC0g
dWlvLnVpb19yZXNpZDsKLSAgICByZXR1cm4gKDApOworCSpzeiA9IGJ1ZnN6IC0gdWlvLnVpb19y
ZXNpZDsKKwlyZXR1cm4gKDApOwogfQogCiBpbnQKIG5hbWVpX2ZvbGxvd19saW5rKHN0cnVjdCBk
ZW50cnkgKmRwLCBjaGFyICpub2RlLCBjaGFyICpuYW1lLCBjaGFyICpmcCwgc2l6ZV90IG1vdW50
cG9pbnRfbGVuKQogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxjaGFyIFtdPiBsaW5rIChuZXcgY2hh
cltQQVRIX01BWF0pOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxjaGFyIFtdPiB0IChuZXcgY2hhcltQ
QVRIX01BWF0pOwotICAgIGNoYXIgICAgKmxwOwotICAgIGludCAgICAgZXJyb3I7Ci0gICAgc3Np
emVfdCBzejsKLSAgICBjaGFyICAgICpwOwotICAgIGludCAgICAgYzsKLQotICAgIGxwICAgID0g
bGluay5nZXQoKTsKLSAgICBlcnJvciA9IHJlYWRfbGluayhkcC0+ZF92bm9kZSwgbHAsIFBBVEhf
TUFYLCAmc3opOwotICAgIGlmIChlcnJvciAhPSAwKSB7Ci0gICAgICAgIHJldHVybiAoZXJyb3Ip
OwotICAgIH0KLSAgICBscFtzel0gPSAwOwotCi0gICAgcCA9IGZwICsgbW91bnRwb2ludF9sZW4g
KyBzdHJsZW4obm9kZSk7Ci0gICAgYyA9IHN0cmxlbihub2RlKSAtIHN0cmxlbihuYW1lKSAtIDE7
Ci0gICAgbm9kZVtjXSA9IDA7Ci0KLSAgICBpZiAobHBbMF0gPT0gJy8nKSB7Ci0gICAgICAgIHN0
cmxjYXQobHAsIHAsIFBBVEhfTUFYKTsKLSAgICAgICAgc3RybGNweShmcCwgbHAsIFBBVEhfTUFY
KTsKLSAgICB9IGVsc2UgewotICAgICAgICBzdHJsY3B5KHQuZ2V0KCksIHAsIFBBVEhfTUFYKTsK
LSAgICAgICAgc3RybGNweShub2RlLCBmcCwgbW91bnRwb2ludF9sZW4gKyBjICsgMSk7Ci0gICAg
ICAgIHBhdGhfY29udihub2RlLCBscCwgZnApOwotICAgICAgICBzdHJsY2F0KGZwLCB0LmdldCgp
LCBQQVRIX01BWCk7Ci0gICAgfQotICAgIG5vZGVbMF0gPSAwOwotICAgIG5hbWVbMF0gPSAwOwot
ICAgIHJldHVybiAoMCk7CisJc3RkOjp1bmlxdWVfcHRyPGNoYXIgW10+IGxpbmsgKG5ldyBjaGFy
W1BBVEhfTUFYXSk7CisJc3RkOjp1bmlxdWVfcHRyPGNoYXIgW10+IHQgKG5ldyBjaGFyW1BBVEhf
TUFYXSk7CisJY2hhciAgICAqbHA7CisJaW50ICAgICBlcnJvcjsKKwlzc2l6ZV90IHN6OworCWNo
YXIgICAgKnA7CisJaW50ICAgICBjOworCisJbHAgICAgPSBsaW5rLmdldCgpOworCWVycm9yID0g
cmVhZF9saW5rKGRwLT5kX3Zub2RlLCBscCwgUEFUSF9NQVgsICZzeik7CisJaWYgKGVycm9yICE9
IDApIHsKKwkJcmV0dXJuIChlcnJvcik7CisJfQorCWxwW3N6XSA9IDA7CisKKwlwID0gZnAgKyBt
b3VudHBvaW50X2xlbiArIHN0cmxlbihub2RlKTsKKwljID0gc3RybGVuKG5vZGUpIC0gc3RybGVu
KG5hbWUpIC0gMTsKKwlub2RlW2NdID0gMDsKKworCWlmIChscFswXSA9PSAnLycpIHsKKwkJc3Ry
bGNhdChscCwgcCwgUEFUSF9NQVgpOworCQlzdHJsY3B5KGZwLCBscCwgUEFUSF9NQVgpOworCX0g
ZWxzZSB7CisJCXN0cmxjcHkodC5nZXQoKSwgcCwgUEFUSF9NQVgpOworCQlzdHJsY3B5KG5vZGUs
IGZwLCBtb3VudHBvaW50X2xlbiArIGMgKyAxKTsKKwkJcGF0aF9jb252KG5vZGUsIGxwLCBmcCk7
CisJCXN0cmxjYXQoZnAsIHQuZ2V0KCksIFBBVEhfTUFYKTsKKwl9CisJbm9kZVswXSA9IDA7CisJ
bmFtZVswXSA9IDA7CisJcmV0dXJuICgwKTsKIH0KIC8qCiAgKiBDb252ZXJ0IGEgcGF0aG5hbWUg
aW50byBhIHBvaW50ZXIgdG8gYSBkZW50cnkKQEAgLTEwMSwxMzcgKzEwMSwxMzcgQEAgbmFtZWlf
Zm9sbG93X2xpbmsoc3RydWN0IGRlbnRyeSAqZHAsIGNoYXIgKm5vZGUsIGNoYXIgKm5hbWUsIGNo
YXIgKmZwLCBzaXplX3QgbW8KIGludAogbmFtZWkoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IGRl
bnRyeSAqKmRwcCkKIHsKLSAgICBjaGFyICpwOwotICAgIGNoYXIgbm9kZVtQQVRIX01BWF07Ci0g
ICAgY2hhciBuYW1lW1BBVEhfTUFYXTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Y2hhciBbXT4gZnAg
KG5ldyBjaGFyIFtQQVRIX01BWF0pOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxjaGFyIFtdPiB0IChu
ZXcgY2hhciBbUEFUSF9NQVhdKTsKLSAgICBzdHJ1Y3QgbW91bnQgKm1wOwotICAgIHN0cnVjdCBk
ZW50cnkgKmRwLCAqZGRwOwotICAgIHN0cnVjdCB2bm9kZSAqZHZwLCAqdnA7Ci0gICAgaW50IGVy
cm9yLCBpOwotICAgIGludCBsaW5rc19mb2xsb3dlZDsKLSAgICBib29sIG5lZWRfY29udGludWU7
Ci0KLSAgICBEUFJJTlRGKFZGU0RCX1ZOT0RFLCAoIm5hbWVpOiBwYXRoPSVzXG4iLCBwYXRoKSk7
Ci0KLSAgICBsaW5rc19mb2xsb3dlZCA9IDA7Ci0gICAgc3RybGNweShmcC5nZXQoKSwgcGF0aCwg
UEFUSF9NQVgpOwotCi0gICAgZG8gewotICAgICAgICBuZWVkX2NvbnRpbnVlID0gZmFsc2U7Ci0g
ICAgICAgIC8qCi0gICAgICAgICAqIENvbnZlcnQgYSBmdWxsIHBhdGggbmFtZSB0byBpdHMgbW91
bnQgcG9pbnQgYW5kCi0gICAgICAgICAqIHRoZSBsb2NhbCBub2RlIGluIHRoZSBmaWxlIHN5c3Rl
bS4KLSAgICAgICAgICovCi0gICAgICAgIGlmICh2ZnNfZmluZHJvb3QoZnAuZ2V0KCksICZtcCwg
JnApKSB7Ci0gICAgICAgICAgICByZXR1cm4gRU5PVERJUjsKLSAgICAgICAgfQotICAgICAgICBp
bnQgbW91bnRwb2ludF9sZW4gPSBwIC0gZnAuZ2V0KCkgLSAxOwotICAgICAgICBzdHJsY3B5KG5v
ZGUsICIvIiwgc2l6ZW9mKG5vZGUpKTsKLSAgICAgICAgc3RybGNhdChub2RlLCBwLCBzaXplb2Yo
bm9kZSkpOwotICAgICAgICBkcCA9IGRlbnRyeV9sb29rdXAobXAsIG5vZGUpOwotICAgICAgICBp
ZiAoZHApIHsKLSAgICAgICAgICAgIC8qIHZub2RlIGlzIGFscmVhZHkgYWN0aXZlLiAqLwotICAg
ICAgICAgICAgKmRwcCA9IGRwOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAg
ICAgICAgLyoKLSAgICAgICAgICogRmluZCB0YXJnZXQgdm5vZGUsIHN0YXJ0ZWQgZnJvbSByb290
IGRpcmVjdG9yeS4KLSAgICAgICAgICogVGhpcyBpcyBkb25lIHRvIGF0dGFjaCB0aGUgZnMgc3Bl
Y2lmaWMgZGF0YSB0bwotICAgICAgICAgKiB0aGUgdGFyZ2V0IHZub2RlLgotICAgICAgICAgKi8K
LSAgICAgICAgZGRwID0gbXAtPm1fcm9vdDsKLSAgICAgICAgaWYgKCFkZHApIHsKLSAgICAgICAg
ICAgIHN5c19wYW5pYygiVkZTOiBubyByb290Iik7Ci0gICAgICAgIH0KLSAgICAgICAgZHJlZihk
ZHApOwotCi0gICAgICAgIG5vZGVbMF0gPSAnXDAnOwotCi0gICAgICAgIHdoaWxlICgqcCAhPSAn
XDAnKSB7Ci0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogR2V0IGxvd2VyIGRpcmVjdG9y
eS9maWxlIG5hbWUuCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIHdoaWxlICgqcCA9PSAn
LycpIHsKLSAgICAgICAgICAgICAgICBwKys7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IGlmICgqcCA9PSAnXDAnKSB7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBQQVRIX01BWDsgaSsrKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKCpwID09ICdcMCcgfHwgKnAgPT0gJy8nKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBuYW1lW2ldID0g
KnArKzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG5hbWVbaV0gPSAnXDAnOwotCi0gICAg
ICAgICAgICAvKgotICAgICAgICAgICAgICogR2V0IGEgdm5vZGUgZm9yIHRoZSB0YXJnZXQuCi0g
ICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIHN0cmxjYXQobm9kZSwgIi8iLCBzaXplb2Yobm9k
ZSkpOwotICAgICAgICAgICAgc3RybGNhdChub2RlLCBuYW1lLCBzaXplb2Yobm9kZSkpOwotICAg
ICAgICAgICAgZHZwID0gZGRwLT5kX3Zub2RlOwotICAgICAgICAgICAgdm5fbG9jayhkdnApOwot
ICAgICAgICAgICAgZHAgPSBkZW50cnlfbG9va3VwKG1wLCBub2RlKTsKLSAgICAgICAgICAgIGlm
IChkcCA9PSBudWxscHRyKSB7Ci0gICAgICAgICAgICAgICAgLyogRmluZCBhIHZub2RlIGluIHRo
aXMgZGlyZWN0b3J5LiAqLwotICAgICAgICAgICAgICAgIGVycm9yID0gVk9QX0xPT0tVUChkdnAs
IG5hbWUsICZ2cCk7Ci0gICAgICAgICAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHZuX3VubG9jayhkdnApOwotICAgICAgICAgICAgICAgICAgICBkcmVsZShkZHApOwot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAgICAgZHAgPSBkZW50cnlfYWxsb2MoZGRwLCB2cCwgbm9kZSk7Ci0gICAgICAg
ICAgICAgICAgdnB1dCh2cCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoIWRwKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHZuX3VubG9jayhkdnApOwotICAgICAgICAgICAgICAgICAgICBkcmVsZShk
ZHApOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gRU5PTUVNOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZuX3VubG9jayhkdnApOwotICAgICAgICAg
ICAgZHJlbGUoZGRwKTsKLSAgICAgICAgICAgIGRkcCA9IGRwOwotCi0gICAgICAgICAgICBpZiAo
ZHAtPmRfdm5vZGUtPnZfdHlwZSA9PSBWTE5LKSB7Ci0gICAgICAgICAgICAgICAgZXJyb3IgPSBu
YW1laV9mb2xsb3dfbGluayhkcCwgbm9kZSwgbmFtZSwgZnAuZ2V0KCksIG1vdW50cG9pbnRfbGVu
KTsKLSAgICAgICAgICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAgICAgICAgICAgZHJl
bGUoZHApOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGVycm9yKTsKLSAgICAgICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgICAgICBkcmVsZShkcCk7Ci0KLSAgICAgICAgICAgICAgICBw
ICAgICAgID0gZnAuZ2V0KCk7Ci0gICAgICAgICAgICAgICAgZHAgICAgICA9IG51bGxwdHI7Ci0g
ICAgICAgICAgICAgICAgZGRwICAgICA9IG51bGxwdHI7Ci0gICAgICAgICAgICAgICAgdnAgICAg
ICA9IG51bGxwdHI7Ci0gICAgICAgICAgICAgICAgZHZwICAgICA9IG51bGxwdHI7Ci0gICAgICAg
ICAgICAgICAgbmFtZVswXSA9IDA7Ci0gICAgICAgICAgICAgICAgbm9kZVswXSA9IDA7Ci0KLSAg
ICAgICAgICAgICAgICBpZiAoKytsaW5rc19mb2xsb3dlZCA+PSBNQVhTWU1MSU5LUykgewotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gKEVMT09QKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgbmVlZF9jb250aW51ZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICgqcCA9PSAnLycgJiYgZGRwLT5kX3Zu
b2RlLT52X3R5cGUgIT0gVkRJUikgewotICAgICAgICAgICAgICAgIGRyZWxlKGRkcCk7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIEVOT1RESVI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICB9IHdoaWxlIChuZWVkX2NvbnRpbnVlID09IHRydWUpOwotCi0gICAgKmRwcCA9IGRwOwotICAg
IHJldHVybiAwOworCWNoYXIgKnA7CisJY2hhciBub2RlW1BBVEhfTUFYXTsKKwljaGFyIG5hbWVb
UEFUSF9NQVhdOworCXN0ZDo6dW5pcXVlX3B0cjxjaGFyIFtdPiBmcCAobmV3IGNoYXIgW1BBVEhf
TUFYXSk7CisJc3RkOjp1bmlxdWVfcHRyPGNoYXIgW10+IHQgKG5ldyBjaGFyIFtQQVRIX01BWF0p
OworCXN0cnVjdCBtb3VudCAqbXA7CisJc3RydWN0IGRlbnRyeSAqZHAsICpkZHA7CisJc3RydWN0
IHZub2RlICpkdnAsICp2cDsKKwlpbnQgZXJyb3IsIGk7CisJaW50IGxpbmtzX2ZvbGxvd2VkOwor
CWJvb2wgbmVlZF9jb250aW51ZTsKKworCURQUklOVEYoVkZTREJfVk5PREUsICgibmFtZWk6IHBh
dGg9JXNcbiIsIHBhdGgpKTsKKworCWxpbmtzX2ZvbGxvd2VkID0gMDsKKwlzdHJsY3B5KGZwLmdl
dCgpLCBwYXRoLCBQQVRIX01BWCk7CisKKwlkbyB7CisJCW5lZWRfY29udGludWUgPSBmYWxzZTsK
KwkJLyoKKwkJICogQ29udmVydCBhIGZ1bGwgcGF0aCBuYW1lIHRvIGl0cyBtb3VudCBwb2ludCBh
bmQKKwkJICogdGhlIGxvY2FsIG5vZGUgaW4gdGhlIGZpbGUgc3lzdGVtLgorCQkgKi8KKwkJaWYg
KHZmc19maW5kcm9vdChmcC5nZXQoKSwgJm1wLCAmcCkpIHsKKwkJCXJldHVybiBFTk9URElSOwor
CQl9CisJCWludCBtb3VudHBvaW50X2xlbiA9IHAgLSBmcC5nZXQoKSAtIDE7CisJCXN0cmxjcHko
bm9kZSwgIi8iLCBzaXplb2Yobm9kZSkpOworCQlzdHJsY2F0KG5vZGUsIHAsIHNpemVvZihub2Rl
KSk7CisJCWRwID0gZGVudHJ5X2xvb2t1cChtcCwgbm9kZSk7CisJCWlmIChkcCkgeworCQkJLyog
dm5vZGUgaXMgYWxyZWFkeSBhY3RpdmUuICovCisJCQkqZHBwID0gZHA7CisJCQlyZXR1cm4gMDsK
KwkJfQorCQkvKgorCQkgKiBGaW5kIHRhcmdldCB2bm9kZSwgc3RhcnRlZCBmcm9tIHJvb3QgZGly
ZWN0b3J5LgorCQkgKiBUaGlzIGlzIGRvbmUgdG8gYXR0YWNoIHRoZSBmcyBzcGVjaWZpYyBkYXRh
IHRvCisJCSAqIHRoZSB0YXJnZXQgdm5vZGUuCisJCSAqLworCQlkZHAgPSBtcC0+bV9yb290Owor
CQlpZiAoIWRkcCkgeworCQkJc3lzX3BhbmljKCJWRlM6IG5vIHJvb3QiKTsKKwkJfQorCQlkcmVm
KGRkcCk7CisKKwkJbm9kZVswXSA9ICdcMCc7CisKKwkJd2hpbGUgKCpwICE9ICdcMCcpIHsKKwkJ
CS8qCisJCQkgKiBHZXQgbG93ZXIgZGlyZWN0b3J5L2ZpbGUgbmFtZS4KKwkJCSAqLworCQkJd2hp
bGUgKCpwID09ICcvJykgeworCQkJCXArKzsKKwkJCX0KKworCQkJaWYgKCpwID09ICdcMCcpIHsK
KwkJCQlicmVhazsKKwkJCX0KKworCQkJZm9yIChpID0gMDsgaSA8IFBBVEhfTUFYOyBpKyspIHsK
KwkJCQlpZiAoKnAgPT0gJ1wwJyB8fCAqcCA9PSAnLycpIHsKKwkJCQkJYnJlYWs7CisJCQkJfQor
CQkJCW5hbWVbaV0gPSAqcCsrOworCQkJfQorCQkJbmFtZVtpXSA9ICdcMCc7CisKKwkJCS8qCisJ
CQkgKiBHZXQgYSB2bm9kZSBmb3IgdGhlIHRhcmdldC4KKwkJCSAqLworCQkJc3RybGNhdChub2Rl
LCAiLyIsIHNpemVvZihub2RlKSk7CisJCQlzdHJsY2F0KG5vZGUsIG5hbWUsIHNpemVvZihub2Rl
KSk7CisJCQlkdnAgPSBkZHAtPmRfdm5vZGU7CisJCQl2bl9sb2NrKGR2cCk7CisJCQlkcCA9IGRl
bnRyeV9sb29rdXAobXAsIG5vZGUpOworCQkJaWYgKGRwID09IG51bGxwdHIpIHsKKwkJCQkvKiBG
aW5kIGEgdm5vZGUgaW4gdGhpcyBkaXJlY3RvcnkuICovCisJCQkJZXJyb3IgPSBWT1BfTE9PS1VQ
KGR2cCwgbmFtZSwgJnZwKTsKKwkJCQlpZiAoZXJyb3IpIHsKKwkJCQkJdm5fdW5sb2NrKGR2cCk7
CisJCQkJCWRyZWxlKGRkcCk7CisJCQkJCXJldHVybiBlcnJvcjsKKwkJCQl9CisKKwkJCQlkcCA9
IGRlbnRyeV9hbGxvYyhkZHAsIHZwLCBub2RlKTsKKwkJCQl2cHV0KHZwKTsKKworCQkJCWlmICgh
ZHApIHsKKwkJCQkJdm5fdW5sb2NrKGR2cCk7CisJCQkJCWRyZWxlKGRkcCk7CisJCQkJCXJldHVy
biBFTk9NRU07CisJCQkJfQorCQkJfQorCQkJdm5fdW5sb2NrKGR2cCk7CisJCQlkcmVsZShkZHAp
OworCQkJZGRwID0gZHA7CisKKwkJCWlmIChkcC0+ZF92bm9kZS0+dl90eXBlID09IFZMTkspIHsK
KwkJCQllcnJvciA9IG5hbWVpX2ZvbGxvd19saW5rKGRwLCBub2RlLCBuYW1lLCBmcC5nZXQoKSwg
bW91bnRwb2ludF9sZW4pOworCQkJCWlmIChlcnJvcikgeworCQkJCQlkcmVsZShkcCk7CisJCQkJ
CXJldHVybiAoZXJyb3IpOworCQkJCX0KKworCQkJCWRyZWxlKGRwKTsKKworCQkJCXAgICAgICAg
PSBmcC5nZXQoKTsKKwkJCQlkcCAgICAgID0gbnVsbHB0cjsKKwkJCQlkZHAgICAgID0gbnVsbHB0
cjsKKwkJCQl2cCAgICAgID0gbnVsbHB0cjsKKwkJCQlkdnAgICAgID0gbnVsbHB0cjsKKwkJCQlu
YW1lWzBdID0gMDsKKwkJCQlub2RlWzBdID0gMDsKKworCQkJCWlmICgrK2xpbmtzX2ZvbGxvd2Vk
ID49IE1BWFNZTUxJTktTKSB7CisJCQkJCXJldHVybiAoRUxPT1ApOworCQkJCX0KKwkJCQluZWVk
X2NvbnRpbnVlID0gdHJ1ZTsKKwkJCQlicmVhazsKKwkJCX0KKworCQkJaWYgKCpwID09ICcvJyAm
JiBkZHAtPmRfdm5vZGUtPnZfdHlwZSAhPSBWRElSKSB7CisJCQkJZHJlbGUoZGRwKTsKKwkJCQly
ZXR1cm4gRU5PVERJUjsKKwkJCX0KKwkJfQorCX0gd2hpbGUgKG5lZWRfY29udGludWUgPT0gdHJ1
ZSk7CisKKwkqZHBwID0gZHA7CisJcmV0dXJuIDA7CiB9CiAKIC8qCkBAIC0yNDQsNjcgKzI0NCw2
NyBAQCBuYW1laShjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3QgZGVudHJ5ICoqZHBwKQogaW50CiBu
YW1laV9sYXN0X25vZm9sbG93KGNoYXIgKnBhdGgsIHN0cnVjdCBkZW50cnkgKmRkcCwgc3RydWN0
IGRlbnRyeSAqKmRwcCkKIHsKLSAgICBjaGFyICAgICAgICAgICpuYW1lOwotICAgIGludCAgICAg
ICAgICAgZXJyb3I7Ci0gICAgc3RydWN0IG1vdW50ICAqbXA7Ci0gICAgY2hhciAgICAgICAgICAq
cDsKLSAgICBzdHJ1Y3QgZGVudHJ5ICpkcDsKLSAgICBzdHJ1Y3Qgdm5vZGUgICpkdnA7Ci0gICAg
c3RydWN0IHZub2RlICAqdnA7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPGNoYXIgW10+IG5vZGUgKG5l
dyBjaGFyW1BBVEhfTUFYXSk7Ci0KLSAgICBkdnAgID0gbnVsbHB0cjsKLQotICAgIGlmIChwYXRo
WzBdICE9ICcvJykgewotICAgICAgICByZXR1cm4gKEVOT1RESVIpOwotICAgIH0KLQotICAgIG5h
bWUgPSBzdHJyY2hyKHBhdGgsICcvJyk7Ci0gICAgaWYgKG5hbWUgPT0gbnVsbHB0cikgewotICAg
ICAgICByZXR1cm4gKEVOT0VOVCk7Ci0gICAgfQotICAgIG5hbWUrKzsKLQotICAgIGVycm9yID0g
dmZzX2ZpbmRyb290KHBhdGgsICZtcCwgJnApOwotICAgIGlmIChlcnJvciAhPSAwKSB7Ci0gICAg
ICAgIHJldHVybiAoRU5PVERJUik7Ci0gICAgfQotCi0gICAgc3RybGNweShub2RlLmdldCgpLCAi
LyIsIFBBVEhfTUFYKTsKLSAgICBzdHJsY2F0KG5vZGUuZ2V0KCksIHAsIFBBVEhfTUFYKTsKLQot
ICAgIC8vIFdlIHdhbnQgdG8gdHJlYXQgdGhpbmdzIGxpa2UgL3RtcC8gdGhlIHNhbWUgYXMgL3Rt
cC4gQmVzdCB3YXkgdG8gZG8gdGhhdAotICAgIC8vIGlzIHRvIGlnbm9yZSB0aGUgbGFzdCBjaGFy
YWN0ZXIsIGV4Y2VwdCB3aGVuIHdlJ3JlIHN0YXRpbmcgdGhlIHJvb3QuCi0gICAgYXV0byBsID0g
c3RybGVuKG5vZGUuZ2V0KCkpIC0gMTsKLSAgICBpZiAobCAmJiBub2RlLmdldCgpW2xdID09ICcv
JykgewotICAgICAgICBub2RlLmdldCgpW2xdID0gJ1wwJzsKLSAgICB9Ci0KLSAgICBkdnAgPSBk
ZHAtPmRfdm5vZGU7Ci0gICAgdm5fbG9jayhkdnApOwotICAgIGRwID0gZGVudHJ5X2xvb2t1cCht
cCwgbm9kZS5nZXQoKSk7Ci0gICAgaWYgKGRwID09IG51bGxwdHIpIHsKLSAgICAgICAgZXJyb3Ig
PSBWT1BfTE9PS1VQKGR2cCwgbmFtZSwgJnZwKTsKLSAgICAgICAgaWYgKGVycm9yICE9IDApIHsK
LSAgICAgICAgICAgIGdvdG8gb3V0OwotICAgICAgICB9Ci0KLSAgICAgICAgZHAgPSBkZW50cnlf
YWxsb2MoZGRwLCB2cCwgbm9kZS5nZXQoKSk7Ci0gICAgICAgIHZwdXQodnApOwotCi0gICAgICAg
IGlmIChkcCA9PSBudWxscHRyKSB7Ci0gICAgICAgICAgICBlcnJvciA9IEVOT01FTTsKLSAgICAg
ICAgICAgIGdvdG8gb3V0OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgKmRwcCAgPSBkcDsKLSAg
ICBlcnJvciA9IDA7CisJY2hhciAgICAgICAgICAqbmFtZTsKKwlpbnQgICAgICAgICAgIGVycm9y
OworCXN0cnVjdCBtb3VudCAgKm1wOworCWNoYXIgICAgICAgICAgKnA7CisJc3RydWN0IGRlbnRy
eSAqZHA7CisJc3RydWN0IHZub2RlICAqZHZwOworCXN0cnVjdCB2bm9kZSAgKnZwOworCXN0ZDo6
dW5pcXVlX3B0cjxjaGFyIFtdPiBub2RlIChuZXcgY2hhcltQQVRIX01BWF0pOworCisJZHZwICA9
IG51bGxwdHI7CisKKwlpZiAocGF0aFswXSAhPSAnLycpIHsKKwkJcmV0dXJuIChFTk9URElSKTsK
Kwl9CisKKwluYW1lID0gc3RycmNocihwYXRoLCAnLycpOworCWlmIChuYW1lID09IG51bGxwdHIp
IHsKKwkJcmV0dXJuIChFTk9FTlQpOworCX0KKwluYW1lKys7CisKKwllcnJvciA9IHZmc19maW5k
cm9vdChwYXRoLCAmbXAsICZwKTsKKwlpZiAoZXJyb3IgIT0gMCkgeworCQlyZXR1cm4gKEVOT1RE
SVIpOworCX0KKworCXN0cmxjcHkobm9kZS5nZXQoKSwgIi8iLCBQQVRIX01BWCk7CisJc3RybGNh
dChub2RlLmdldCgpLCBwLCBQQVRIX01BWCk7CisKKwkvLyBXZSB3YW50IHRvIHRyZWF0IHRoaW5n
cyBsaWtlIC90bXAvIHRoZSBzYW1lIGFzIC90bXAuIEJlc3Qgd2F5IHRvIGRvIHRoYXQKKwkvLyBp
cyB0byBpZ25vcmUgdGhlIGxhc3QgY2hhcmFjdGVyLCBleGNlcHQgd2hlbiB3ZSdyZSBzdGF0aW5n
IHRoZSByb290LgorCWF1dG8gbCA9IHN0cmxlbihub2RlLmdldCgpKSAtIDE7CisJaWYgKGwgJiYg
bm9kZS5nZXQoKVtsXSA9PSAnLycpIHsKKwkJbm9kZS5nZXQoKVtsXSA9ICdcMCc7CisJfQorCisJ
ZHZwID0gZGRwLT5kX3Zub2RlOworCXZuX2xvY2soZHZwKTsKKwlkcCA9IGRlbnRyeV9sb29rdXAo
bXAsIG5vZGUuZ2V0KCkpOworCWlmIChkcCA9PSBudWxscHRyKSB7CisJCWVycm9yID0gVk9QX0xP
T0tVUChkdnAsIG5hbWUsICZ2cCk7CisJCWlmIChlcnJvciAhPSAwKSB7CisJCQlnb3RvIG91dDsK
KwkJfQorCisJCWRwID0gZGVudHJ5X2FsbG9jKGRkcCwgdnAsIG5vZGUuZ2V0KCkpOworCQl2cHV0
KHZwKTsKKworCQlpZiAoZHAgPT0gbnVsbHB0cikgeworCQkJZXJyb3IgPSBFTk9NRU07CisJCQln
b3RvIG91dDsKKwkJfQorCX0KKworCSpkcHAgID0gZHA7CisJZXJyb3IgPSAwOwogb3V0OgotICAg
IGlmIChkdnAgIT0gbnVsbHB0cikgewotICAgICAgICB2bl91bmxvY2soZHZwKTsKLSAgICB9Ci0g
ICAgcmV0dXJuIChlcnJvcik7CisJaWYgKGR2cCAhPSBudWxscHRyKSB7CisJCXZuX3VubG9jayhk
dnApOworCX0KKwlyZXR1cm4gKGVycm9yKTsKIH0KIAogLyoKQEAgLTMyMCw0OCArMzIwLDQ4IEBA
IG91dDoKIGludAogbG9va3VwKGNoYXIgKnBhdGgsIHN0cnVjdCBkZW50cnkgKipkcHAsIGNoYXIg
KipuYW1lKQogewotICAgIGNoYXIgYnVmW1BBVEhfTUFYXTsKLSAgICBjaGFyIHJvb3RbXSA9ICIv
IjsKLSAgICBjaGFyICpmaWxlLCAqZGlyOwotICAgIHN0cnVjdCBkZW50cnkgKmRwOwotICAgIGlu
dCBlcnJvcjsKLQotICAgIERQUklOVEYoVkZTREJfVk5PREUsICgibG9va3VwOiBwYXRoPSVzXG4i
LCBwYXRoKSk7Ci0KLSAgICAvKgotICAgICAqIEdldCB0aGUgcGF0aCBmb3IgZGlyZWN0b3J5Lgot
ICAgICAqLwotICAgIHN0cmxjcHkoYnVmLCBwYXRoLCBzaXplb2YoYnVmKSk7Ci0gICAgZmlsZSA9
IHN0cnJjaHIoYnVmLCAnLycpOwotICAgIGlmICghYnVmWzBdKSB7Ci0gICAgICAgIHJldHVybiBF
Tk9URElSOwotICAgIH0KLSAgICBpZiAoZmlsZSA9PSBidWYpIHsKLSAgICAgICAgZGlyID0gcm9v
dDsKLSAgICB9IGVsc2UgewotICAgICAgICAqZmlsZSA9ICdcMCc7Ci0gICAgICAgIGRpciA9IGJ1
ZjsKLSAgICB9Ci0gICAgLyoKLSAgICAgKiBHZXQgdGhlIHZub2RlIGZvciBkaXJlY3RvcnkKLSAg
ICAgKi8KLSAgICBpZiAoKGVycm9yID0gbmFtZWkoZGlyLCAmZHApKSAhPSAwKSB7Ci0gICAgICAg
IHJldHVybiBlcnJvcjsKLSAgICB9Ci0gICAgaWYgKGRwLT5kX3Zub2RlLT52X3R5cGUgIT0gVkRJ
UikgewotICAgICAgICBkcmVsZShkcCk7Ci0gICAgICAgIHJldHVybiBFTk9URElSOwotICAgIH0K
LQotICAgICpkcHAgPSBkcDsKLQotICAgIGlmIChuYW1lKSB7Ci0gICAgICAgIC8qCi0gICAgICAg
ICAqIEdldCB0aGUgZmlsZSBuYW1lCi0gICAgICAgICAqLwotICAgICAgICAqbmFtZSA9IHN0cnJj
aHIocGF0aCwgJy8nKSArIDE7Ci0gICAgfQotICAgIHJldHVybiAwOworCWNoYXIgYnVmW1BBVEhf
TUFYXTsKKwljaGFyIHJvb3RbXSA9ICIvIjsKKwljaGFyICpmaWxlLCAqZGlyOworCXN0cnVjdCBk
ZW50cnkgKmRwOworCWludCBlcnJvcjsKKworCURQUklOVEYoVkZTREJfVk5PREUsICgibG9va3Vw
OiBwYXRoPSVzXG4iLCBwYXRoKSk7CisKKwkvKgorCSAqIEdldCB0aGUgcGF0aCBmb3IgZGlyZWN0
b3J5LgorCSAqLworCXN0cmxjcHkoYnVmLCBwYXRoLCBzaXplb2YoYnVmKSk7CisJZmlsZSA9IHN0
cnJjaHIoYnVmLCAnLycpOworCWlmICghYnVmWzBdKSB7CisJCXJldHVybiBFTk9URElSOworCX0K
KwlpZiAoZmlsZSA9PSBidWYpIHsKKwkJZGlyID0gcm9vdDsKKwl9IGVsc2UgeworCQkqZmlsZSA9
ICdcMCc7CisJCWRpciA9IGJ1ZjsKKwl9CisJLyoKKwkgKiBHZXQgdGhlIHZub2RlIGZvciBkaXJl
Y3RvcnkKKwkgKi8KKwlpZiAoKGVycm9yID0gbmFtZWkoZGlyLCAmZHApKSAhPSAwKSB7CisJCXJl
dHVybiBlcnJvcjsKKwl9CisJaWYgKGRwLT5kX3Zub2RlLT52X3R5cGUgIT0gVkRJUikgeworCQlk
cmVsZShkcCk7CisJCXJldHVybiBFTk9URElSOworCX0KKworCSpkcHAgPSBkcDsKKworCWlmIChu
YW1lKSB7CisJCS8qCisJCSAqIEdldCB0aGUgZmlsZSBuYW1lCisJCSAqLworCQkqbmFtZSA9IHN0
cnJjaHIocGF0aCwgJy8nKSArIDE7CisJfQorCXJldHVybiAwOwogfQogCiAvKgpAQCAtMzcxLDUg
KzM3MSw1IEBAIGxvb2t1cChjaGFyICpwYXRoLCBzdHJ1Y3QgZGVudHJ5ICoqZHBwLCBjaGFyICoq
bmFtZSkKIHZvaWQKIGxvb2t1cF9pbml0KHZvaWQpCiB7Ci0gICAgZGVudHJ5X2luaXQoKTsKKwlk
ZW50cnlfaW5pdCgpOwogfQpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvbWFpbi5jIGIvbGliL3Zm
c2NvcmUvbWFpbi5jCmluZGV4IGNkMTQxMTE3Li44ZDlkYzMzYSAxMDA2NDQKLS0tIGEvbGliL3Zm
c2NvcmUvbWFpbi5jCisrKyBiL2xpYi92ZnNjb3JlL21haW4uYwpAQCAtOTIsNyArOTIsNyBAQCBz
dGQ6OmF0b21pYzxtb2RlX3Q+IGdsb2JhbF91bWFza3tTX0lXR1JQIHwgU19JV09USH07CiAKIHN0
YXRpYyBpbmxpbmUgbW9kZV90IGFwcGx5X3VtYXNrKG1vZGVfdCBtb2RlKQogewotICAgIHJldHVy
biBtb2RlICYgfmdsb2JhbF91bWFzay5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOwor
CXJldHVybiBtb2RlICYgfmdsb2JhbF91bWFzay5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4
ZWQpOwogfQogCiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19vcGVuLCAiXCIlc1wiIDB4JXggMCUwbyIs
IGNvbnN0IGNoYXIqLCBpbnQsIG1vZGVfdCk7CkBAIC0xMDQsOTkgKzEwNCw5OSBAQCBzdHJ1Y3Qg
dGFzayAqbWFpbl90YXNrOwkvKiB3ZSBvbmx5IGhhdmUgYSBzaW5nbGUgcHJvY2VzcyAqLwogZXh0
ZXJuICJDIgogaW50IG9wZW4oY29uc3QgY2hhciAqcGF0aG5hbWUsIGludCBmbGFncywgLi4uKQog
ewotICAgIG1vZGVfdCBtb2RlID0gMDsKLSAgICBpZiAoZmxhZ3MgJiBPX0NSRUFUKSB7Ci0gICAg
ICAgIHZhX2xpc3QgYXA7Ci0gICAgICAgIHZhX3N0YXJ0KGFwLCBmbGFncyk7Ci0gICAgICAgIG1v
ZGUgPSBhcHBseV91bWFzayh2YV9hcmcoYXAsIG1vZGVfdCkpOwotICAgICAgICB2YV9lbmQoYXAp
OwotICAgIH0KLQotICAgIHRyYWNlX3Zmc19vcGVuKHBhdGhuYW1lLCBmbGFncywgbW9kZSk7Ci0K
LSAgICBzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKLSAgICBjaGFyIHBhdGhbUEFUSF9NQVhd
OwotICAgIHN0cnVjdCBmaWxlICpmcDsKLSAgICBpbnQgZmQsIGVycm9yOwotICAgIGludCBhY2M7
Ci0KLSAgICBhY2MgPSAwOwotICAgIHN3aXRjaCAoZmxhZ3MgJiBPX0FDQ01PREUpIHsKLSAgICBj
YXNlIE9fUkRPTkxZOgotICAgICAgICBhY2MgPSBWUkVBRDsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBPX1dST05MWToKLSAgICAgICAgYWNjID0gVldSSVRFOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIE9fUkRXUjoKLSAgICAgICAgYWNjID0gVlJFQUQgfCBWV1JJVEU7Ci0gICAgICAgIGJy
ZWFrOwotICAgIH0KLQotICAgIGVycm9yID0gdGFza19jb252KHQsIHBhdGhuYW1lLCBhY2MsIHBh
dGgpOwotICAgIGlmIChlcnJvcikKLSAgICAgICAgZ290byBvdXRfZXJybm87Ci0KLSAgICBlcnJv
ciA9IHN5c19vcGVuKHBhdGgsIGZsYWdzLCBtb2RlLCAmZnApOwotICAgIGlmIChlcnJvcikKLSAg
ICAgICAgZ290byBvdXRfZXJybm87Ci0KLSAgICBlcnJvciA9IGZkYWxsb2MoZnAsICZmZCk7Ci0g
ICAgaWYgKGVycm9yKQotICAgICAgICBnb3RvIG91dF9mcHV0OwotICAgIGZkcm9wKGZwKTsKLSAg
ICB0cmFjZV92ZnNfb3Blbl9yZXQoZmQpOwotICAgIHJldHVybiBmZDsKLQotICAgIG91dF9mcHV0
OgotICAgIGZkcm9wKGZwKTsKLSAgICBvdXRfZXJybm86Ci0gICAgZXJybm8gPSBlcnJvcjsKLSAg
ICB0cmFjZV92ZnNfb3Blbl9lcnIoZXJyb3IpOwotICAgIHJldHVybiAtMTsKKwltb2RlX3QgbW9k
ZSA9IDA7CisJaWYgKGZsYWdzICYgT19DUkVBVCkgeworCQl2YV9saXN0IGFwOworCQl2YV9zdGFy
dChhcCwgZmxhZ3MpOworCQltb2RlID0gYXBwbHlfdW1hc2sodmFfYXJnKGFwLCBtb2RlX3QpKTsK
KwkJdmFfZW5kKGFwKTsKKwl9CisKKwl0cmFjZV92ZnNfb3BlbihwYXRobmFtZSwgZmxhZ3MsIG1v
ZGUpOworCisJc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7CisJY2hhciBwYXRoW1BBVEhfTUFY
XTsKKwlzdHJ1Y3QgZmlsZSAqZnA7CisJaW50IGZkLCBlcnJvcjsKKwlpbnQgYWNjOworCisJYWNj
ID0gMDsKKwlzd2l0Y2ggKGZsYWdzICYgT19BQ0NNT0RFKSB7CisJY2FzZSBPX1JET05MWToKKwkJ
YWNjID0gVlJFQUQ7CisJCWJyZWFrOworCWNhc2UgT19XUk9OTFk6CisJCWFjYyA9IFZXUklURTsK
KwkJYnJlYWs7CisJY2FzZSBPX1JEV1I6CisJCWFjYyA9IFZSRUFEIHwgVldSSVRFOworCQlicmVh
azsKKwl9CisKKwllcnJvciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwgYWNjLCBwYXRoKTsKKwlp
ZiAoZXJyb3IpCisJCWdvdG8gb3V0X2Vycm5vOworCisJZXJyb3IgPSBzeXNfb3BlbihwYXRoLCBm
bGFncywgbW9kZSwgJmZwKTsKKwlpZiAoZXJyb3IpCisJCWdvdG8gb3V0X2Vycm5vOworCisJZXJy
b3IgPSBmZGFsbG9jKGZwLCAmZmQpOworCWlmIChlcnJvcikKKwkJZ290byBvdXRfZnB1dDsKKwlm
ZHJvcChmcCk7CisJdHJhY2VfdmZzX29wZW5fcmV0KGZkKTsKKwlyZXR1cm4gZmQ7CisKKwlvdXRf
ZnB1dDoKKwlmZHJvcChmcCk7CisJb3V0X2Vycm5vOgorCWVycm5vID0gZXJyb3I7CisJdHJhY2Vf
dmZzX29wZW5fZXJyKGVycm9yKTsKKwlyZXR1cm4gLTE7CiB9CiAKIExGUzY0KG9wZW4pOwogCiBp
bnQgb3BlbmF0KGludCBkaXJmZCwgY29uc3QgY2hhciAqcGF0aG5hbWUsIGludCBmbGFncywgLi4u
KQogewotICAgIG1vZGVfdCBtb2RlID0gMDsKLSAgICBpZiAoZmxhZ3MgJiBPX0NSRUFUKSB7Ci0g
ICAgICAgIHZhX2xpc3QgYXA7Ci0gICAgICAgIHZhX3N0YXJ0KGFwLCBmbGFncyk7Ci0gICAgICAg
IG1vZGUgPSBhcHBseV91bWFzayh2YV9hcmcoYXAsIG1vZGVfdCkpOwotICAgICAgICB2YV9lbmQo
YXApOwotICAgIH0KKwltb2RlX3QgbW9kZSA9IDA7CisJaWYgKGZsYWdzICYgT19DUkVBVCkgewor
CQl2YV9saXN0IGFwOworCQl2YV9zdGFydChhcCwgZmxhZ3MpOworCQltb2RlID0gYXBwbHlfdW1h
c2sodmFfYXJnKGFwLCBtb2RlX3QpKTsKKwkJdmFfZW5kKGFwKTsKKwl9CiAKLSAgICBpZiAocGF0
aG5hbWVbMF0gPT0gJy8nIHx8IGRpcmZkID09IEFUX0ZEQ1dEKSB7Ci0gICAgICAgIHJldHVybiBv
cGVuKHBhdGhuYW1lLCBmbGFncywgbW9kZSk7Ci0gICAgfQorCWlmIChwYXRobmFtZVswXSA9PSAn
LycgfHwgZGlyZmQgPT0gQVRfRkRDV0QpIHsKKwkJcmV0dXJuIG9wZW4ocGF0aG5hbWUsIGZsYWdz
LCBtb2RlKTsKKwl9CiAKLSAgICBzdHJ1Y3QgZmlsZSAqZnA7Ci0gICAgaW50IGVycm9yID0gZmdl
dChkaXJmZCwgJmZwKTsKLSAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgZXJybm8gPSBlcnJvcjsK
LSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KKwlzdHJ1Y3QgZmlsZSAqZnA7CisJaW50IGVycm9y
ID0gZmdldChkaXJmZCwgJmZwKTsKKwlpZiAoZXJyb3IpIHsKKwkJZXJybm8gPSBlcnJvcjsKKwkJ
cmV0dXJuIC0xOworCX0KIAotICAgIHN0cnVjdCB2bm9kZSAqdnAgPSBmcC0+Zl9kZW50cnktPmRf
dm5vZGU7Ci0gICAgdm5fbG9jayh2cCk7CisJc3RydWN0IHZub2RlICp2cCA9IGZwLT5mX2RlbnRy
eS0+ZF92bm9kZTsKKwl2bl9sb2NrKHZwKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxjaGFyIFtd
PiB1cCAobmV3IGNoYXJbUEFUSF9NQVhdKTsKLSAgICBjaGFyICpwID0gdXAuZ2V0KCk7CisJc3Rk
Ojp1bmlxdWVfcHRyPGNoYXIgW10+IHVwIChuZXcgY2hhcltQQVRIX01BWF0pOworCWNoYXIgKnAg
PSB1cC5nZXQoKTsKIAotICAgIC8qIGJ1aWxkIGFic29sdXRlIHBhdGggKi8KLSAgICBzdHJsY3B5
KHAsIGZwLT5mX2RlbnRyeS0+ZF9tb3VudC0+bV9wYXRoLCBQQVRIX01BWCk7Ci0gICAgc3RybGNh
dChwLCBmcC0+Zl9kZW50cnktPmRfcGF0aCwgUEFUSF9NQVgpOwotICAgIHN0cmxjYXQocCwgIi8i
LCBQQVRIX01BWCk7Ci0gICAgc3RybGNhdChwLCBwYXRobmFtZSwgUEFUSF9NQVgpOworCS8qIGJ1
aWxkIGFic29sdXRlIHBhdGggKi8KKwlzdHJsY3B5KHAsIGZwLT5mX2RlbnRyeS0+ZF9tb3VudC0+
bV9wYXRoLCBQQVRIX01BWCk7CisJc3RybGNhdChwLCBmcC0+Zl9kZW50cnktPmRfcGF0aCwgUEFU
SF9NQVgpOworCXN0cmxjYXQocCwgIi8iLCBQQVRIX01BWCk7CisJc3RybGNhdChwLCBwYXRobmFt
ZSwgUEFUSF9NQVgpOwogCi0gICAgZXJyb3IgPSBvcGVuKHAsIGZsYWdzLCBtb2RlKTsKKwllcnJv
ciA9IG9wZW4ocCwgZmxhZ3MsIG1vZGUpOwogCi0gICAgdm5fdW5sb2NrKHZwKTsKLSAgICBmZHJv
cChmcCk7CisJdm5fdW5sb2NrKHZwKTsKKwlmZHJvcChmcCk7CiAKLSAgICByZXR1cm4gZXJyb3I7
CisJcmV0dXJuIGVycm9yOwogfQogTEZTNjQob3BlbmF0KTsKIApAQCAtMjA2LDIzICsyMDYsMjMg
QEAgTEZTNjQob3BlbmF0KTsKIC8vIGJ5IGEgY2FsbCB0byBfX29wZW5fMigpLCB3aGljaCB2ZXJp
ZmllcyBpdCBpc24ndCBjYWxsZWQgd2l0aCBPX0NSRUFURS4KIGV4dGVybiAiQyIgaW50IF9fb3Bl
bl8yKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBpbnQgZmxhZ3MpCiB7Ci0gICAgYXNzZXJ0KCEoZmxh
Z3MgJiBPX0NSRUFUKSk7Ci0gICAgcmV0dXJuIG9wZW4ocGF0aG5hbWUsIGZsYWdzLCAwKTsKKwlh
c3NlcnQoIShmbGFncyAmIE9fQ1JFQVQpKTsKKwlyZXR1cm4gb3BlbihwYXRobmFtZSwgZmxhZ3Ms
IDApOwogfQogCiBleHRlcm4gIkMiIGludCBfX29wZW42NF8yKGNvbnN0IGNoYXIgKmZpbGUsIGlu
dCBmbGFncykKIHsKLSAgICBpZiAoZmxhZ3MgJiBPX0NSRUFUKSB7Ci0gICAgICAgIGVycm5vID0g
RUlOVkFMOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQorCWlmIChmbGFncyAmIE9fQ1JFQVQp
IHsKKwkJZXJybm8gPSBFSU5WQUw7CisJCXJldHVybiAtMTsKKwl9CiAKLSAgICByZXR1cm4gb3Bl
bjY0KGZpbGUsIGZsYWdzKTsKKwlyZXR1cm4gb3BlbjY0KGZpbGUsIGZsYWdzKTsKIH0KIAogaW50
IGNyZWF0KGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBtb2RlX3QgbW9kZSkKIHsKLSAgICByZXR1cm4g
b3BlbihwYXRobmFtZSwgT19DUkVBVHxPX1dST05MWXxPX1RSVU5DLCBtb2RlKTsKKwlyZXR1cm4g
b3BlbihwYXRobmFtZSwgT19DUkVBVHxPX1dST05MWXxPX1RSVU5DLCBtb2RlKTsKIH0KIExGUzY0
KGNyZWF0KTsKIApAQCAtMjMyLDIwICsyMzIsMjAgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfY2xv
c2VfZXJyLCAiJWQiLCBpbnQpOwogCiBpbnQgY2xvc2UoaW50IGZkKQogewotICAgIGludCBlcnJv
cjsKKwlpbnQgZXJyb3I7CiAKLSAgICB0cmFjZV92ZnNfY2xvc2UoZmQpOwotICAgIGVycm9yID0g
ZmRjbG9zZShmZCk7Ci0gICAgaWYgKGVycm9yKQotICAgICAgICBnb3RvIG91dF9lcnJubzsKKwl0
cmFjZV92ZnNfY2xvc2UoZmQpOworCWVycm9yID0gZmRjbG9zZShmZCk7CisJaWYgKGVycm9yKQor
CQlnb3RvIG91dF9lcnJubzsKIAotICAgIHRyYWNlX3Zmc19jbG9zZV9yZXQoKTsKLSAgICByZXR1
cm4gMDsKKwl0cmFjZV92ZnNfY2xvc2VfcmV0KCk7CisJcmV0dXJuIDA7CiAKLSAgICBvdXRfZXJy
bm86Ci0gICAgdHJhY2VfdmZzX2Nsb3NlX2VycihlcnJvcik7Ci0gICAgZXJybm8gPSBlcnJvcjsK
LSAgICByZXR1cm4gLTE7CisJb3V0X2Vycm5vOgorCXRyYWNlX3Zmc19jbG9zZV9lcnIoZXJyb3Ip
OworCWVycm5vID0gZXJyb3I7CisJcmV0dXJuIC0xOwogfQogCiBUUkFDRVBPSU5UKHRyYWNlX3Zm
c19ta25vZCwgIlwiJXNcIiAwJTBvIDB4JXgiLCBjb25zdCBjaGFyKiwgbW9kZV90LCBkZXZfdCk7
CkBAIC0yNTYsMzEgKzI1NiwzMSBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19ta25vZF9lcnIsICIl
ZCIsIGludCk7CiBleHRlcm4gIkMiCiBpbnQgX194bWtub2QoaW50IHZlciwgY29uc3QgY2hhciAq
cGF0aG5hbWUsIG1vZGVfdCBtb2RlLCBkZXZfdCAqZGV2KQogewotICAgIGFzc2VydCh2ZXIgPT0g
MCk7IC8vIE9uIHg4Ni02NCBMaW51eCwgX01LTk9EX1ZFUl9MSU5VWCBpcyAwLgotICAgIHN0cnVj
dCB0YXNrICp0ID0gbWFpbl90YXNrOwotICAgIGNoYXIgcGF0aFtQQVRIX01BWF07Ci0gICAgaW50
IGVycm9yOworCWFzc2VydCh2ZXIgPT0gMCk7IC8vIE9uIHg4Ni02NCBMaW51eCwgX01LTk9EX1ZF
Ul9MSU5VWCBpcyAwLgorCXN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOworCWNoYXIgcGF0aFtQ
QVRIX01BWF07CisJaW50IGVycm9yOwogCi0gICAgdHJhY2VfdmZzX21rbm9kKHBhdGhuYW1lLCBt
b2RlLCAqZGV2KTsKLSAgICBpZiAoKGVycm9yID0gdGFza19jb252KHQsIHBhdGhuYW1lLCBWV1JJ
VEUsIHBhdGgpKSAhPSAwKQotICAgICAgICBnb3RvIG91dF9lcnJubzsKKwl0cmFjZV92ZnNfbWtu
b2QocGF0aG5hbWUsIG1vZGUsICpkZXYpOworCWlmICgoZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0
aG5hbWUsIFZXUklURSwgcGF0aCkpICE9IDApCisJCWdvdG8gb3V0X2Vycm5vOwogCi0gICAgZXJy
b3IgPSBzeXNfbWtub2QocGF0aCwgbW9kZSk7Ci0gICAgaWYgKGVycm9yKQotICAgICAgICBnb3Rv
IG91dF9lcnJubzsKKwllcnJvciA9IHN5c19ta25vZChwYXRoLCBtb2RlKTsKKwlpZiAoZXJyb3Ip
CisJCWdvdG8gb3V0X2Vycm5vOwogCi0gICAgdHJhY2VfdmZzX21rbm9kX3JldCgpOwotICAgIHJl
dHVybiAwOworCXRyYWNlX3Zmc19ta25vZF9yZXQoKTsKKwlyZXR1cm4gMDsKIAotICAgIG91dF9l
cnJubzoKLSAgICB0cmFjZV92ZnNfbWtub2RfZXJyKGVycm9yKTsKLSAgICBlcnJubyA9IGVycm9y
OwotICAgIHJldHVybiAtMTsKKwlvdXRfZXJybm86CisJdHJhY2VfdmZzX21rbm9kX2VycihlcnJv
cik7CisJZXJybm8gPSBlcnJvcjsKKwlyZXR1cm4gLTE7CiB9CiAKIGludCBta25vZChjb25zdCBj
aGFyICpwYXRobmFtZSwgbW9kZV90IG1vZGUsIGRldl90IGRldikKIHsKLSAgICByZXR1cm4gX194
bWtub2QoMCwgcGF0aG5hbWUsIG1vZGUsICZkZXYpOworCXJldHVybiBfX3hta25vZCgwLCBwYXRo
bmFtZSwgbW9kZSwgJmRldik7CiB9CiAKIApAQCAtMjkwLDI3ICsyOTAsMjcgQEAgVFJBQ0VQT0lO
VCh0cmFjZV92ZnNfbHNlZWtfZXJyLCAiJWQiLCBpbnQpOwogCiBvZmZfdCBsc2VlayhpbnQgZmQs
IG9mZl90IG9mZnNldCwgaW50IHdoZW5jZSkKIHsKLSAgICBzdHJ1Y3QgZmlsZSAqZnA7Ci0gICAg
b2ZmX3Qgb3JnOwotICAgIGludCBlcnJvcjsKKwlzdHJ1Y3QgZmlsZSAqZnA7CisJb2ZmX3Qgb3Jn
OworCWludCBlcnJvcjsKIAotICAgIHRyYWNlX3Zmc19sc2VlayhmZCwgb2Zmc2V0LCB3aGVuY2Up
OwotICAgIGVycm9yID0gZmdldChmZCwgJmZwKTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIGdv
dG8gb3V0X2Vycm5vOworCXRyYWNlX3Zmc19sc2VlayhmZCwgb2Zmc2V0LCB3aGVuY2UpOworCWVy
cm9yID0gZmdldChmZCwgJmZwKTsKKwlpZiAoZXJyb3IpCisJCWdvdG8gb3V0X2Vycm5vOwogCi0g
ICAgZXJyb3IgPSBzeXNfbHNlZWsoZnAsIG9mZnNldCwgd2hlbmNlLCAmb3JnKTsKLSAgICBmZHJv
cChmcCk7CisJZXJyb3IgPSBzeXNfbHNlZWsoZnAsIG9mZnNldCwgd2hlbmNlLCAmb3JnKTsKKwlm
ZHJvcChmcCk7CiAKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwotICAg
IHRyYWNlX3Zmc19sc2Vla19yZXQob3JnKTsKLSAgICByZXR1cm4gb3JnOworCWlmIChlcnJvcikK
KwkJZ290byBvdXRfZXJybm87CisJdHJhY2VfdmZzX2xzZWVrX3JldChvcmcpOworCXJldHVybiBv
cmc7CiAKLSAgICBvdXRfZXJybm86Ci0gICAgdHJhY2VfdmZzX2xzZWVrX2VycihlcnJvcik7Ci0g
ICAgZXJybm8gPSBlcnJvcjsKLSAgICByZXR1cm4gLTE7CisJb3V0X2Vycm5vOgorCXRyYWNlX3Zm
c19sc2Vla19lcnIoZXJyb3IpOworCWVycm5vID0gZXJyb3I7CisJcmV0dXJuIC0xOwogfQogCiBM
RlM2NChsc2Vlayk7CkBAIC0zMjYsNDYgKzMyNiw0NiBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19w
cmVhZF9lcnIsICIlZCIsIGludCk7CiAvLyBJbiBGcmVlQlNELCBkb2ZpbGV3cml0ZSgpIGFuZCBk
b2ZpbGVyZWFkKCkgKHN5c19nZW5lcmljLmMpIGRvIHRoaXMgdG9vLgogc3RhdGljIGlubGluZSBi
b29sIGhhc19lcnJvcihpbnQgZXJyb3IsIGludCBieXRlcykKIHsKLSAgICByZXR1cm4gZXJyb3Ig
JiYgKAotICAgICAgICAgICAgKGJ5dGVzID09IDApIHx8Ci0gICAgICAgICAgICAoZXJyb3IgIT0g
RVdPVUxEQkxPQ0sgJiYgZXJyb3IgIT0gRUlOVFIgJiYgZXJyb3IgIT0gRVJFU1RBUlQpKTsKKwly
ZXR1cm4gZXJyb3IgJiYgKAorCQkJKGJ5dGVzID09IDApIHx8CisJCQkoZXJyb3IgIT0gRVdPVUxE
QkxPQ0sgJiYgZXJyb3IgIT0gRUlOVFIgJiYgZXJyb3IgIT0gRVJFU1RBUlQpKTsKIH0KIAogCiBz
c2l6ZV90IHByZWFkKGludCBmZCwgdm9pZCAqYnVmLCBzaXplX3QgY291bnQsIG9mZl90IG9mZnNl
dCkKIHsKLSAgICB0cmFjZV92ZnNfcHJlYWQoZmQsIGJ1ZiwgY291bnQsIG9mZnNldCk7Ci0gICAg
c3RydWN0IGlvdmVjIGlvdiA9IHsKLSAgICAgICAgICAgIC5pb3ZfYmFzZQk9IGJ1ZiwKLSAgICAg
ICAgICAgIC5pb3ZfbGVuCT0gY291bnQsCi0gICAgfTsKLSAgICBzdHJ1Y3QgZmlsZSAqZnA7Ci0g
ICAgc2l6ZV90IGJ5dGVzOwotICAgIGludCBlcnJvcjsKKwl0cmFjZV92ZnNfcHJlYWQoZmQsIGJ1
ZiwgY291bnQsIG9mZnNldCk7CisJc3RydWN0IGlvdmVjIGlvdiA9IHsKKwkJCS5pb3ZfYmFzZQk9
IGJ1ZiwKKwkJCS5pb3ZfbGVuCT0gY291bnQsCisJfTsKKwlzdHJ1Y3QgZmlsZSAqZnA7CisJc2l6
ZV90IGJ5dGVzOworCWludCBlcnJvcjsKIAotICAgIGVycm9yID0gZmdldChmZCwgJmZwKTsKLSAg
ICBpZiAoZXJyb3IpCi0gICAgICAgIGdvdG8gb3V0X2Vycm5vOworCWVycm9yID0gZmdldChmZCwg
JmZwKTsKKwlpZiAoZXJyb3IpCisJCWdvdG8gb3V0X2Vycm5vOwogCi0gICAgZXJyb3IgPSBzeXNf
cmVhZChmcCwgJmlvdiwgMSwgb2Zmc2V0LCAmYnl0ZXMpOwotICAgIGZkcm9wKGZwKTsKKwllcnJv
ciA9IHN5c19yZWFkKGZwLCAmaW92LCAxLCBvZmZzZXQsICZieXRlcyk7CisJZmRyb3AoZnApOwog
Ci0gICAgaWYgKGhhc19lcnJvcihlcnJvciwgYnl0ZXMpKQotICAgICAgICBnb3RvIG91dF9lcnJu
bzsKLSAgICB0cmFjZV92ZnNfcHJlYWRfcmV0KGJ5dGVzKTsKLSAgICByZXR1cm4gYnl0ZXM7CisJ
aWYgKGhhc19lcnJvcihlcnJvciwgYnl0ZXMpKQorCQlnb3RvIG91dF9lcnJubzsKKwl0cmFjZV92
ZnNfcHJlYWRfcmV0KGJ5dGVzKTsKKwlyZXR1cm4gYnl0ZXM7CiAKLSAgICBvdXRfZXJybm86Ci0g
ICAgdHJhY2VfdmZzX3ByZWFkX2VycihlcnJvcik7Ci0gICAgZXJybm8gPSBlcnJvcjsKLSAgICBy
ZXR1cm4gLTE7CisJb3V0X2Vycm5vOgorCXRyYWNlX3Zmc19wcmVhZF9lcnIoZXJyb3IpOworCWVy
cm5vID0gZXJyb3I7CisJcmV0dXJuIC0xOwogfQogCiBMRlM2NChwcmVhZCk7CiAKIHNzaXplX3Qg
cmVhZChpbnQgZmQsIHZvaWQgKmJ1Ziwgc2l6ZV90IGNvdW50KQogewotICAgIHJldHVybiBwcmVh
ZChmZCwgYnVmLCBjb3VudCwgLTEpOworCXJldHVybiBwcmVhZChmZCwgYnVmLCBjb3VudCwgLTEp
OwogfQogCiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19wd3JpdGUsICIlZCAlcCAweCV4IDB4JXgiLCBp
bnQsIGNvbnN0IHZvaWQqLCBzaXplX3QsIG9mZl90KTsKQEAgLTM3NCw2NyArMzc0LDY3IEBAIFRS
QUNFUE9JTlQodHJhY2VfdmZzX3B3cml0ZV9lcnIsICIlZCIsIGludCk7CiAKIHNzaXplX3QgcHdy
aXRlKGludCBmZCwgY29uc3Qgdm9pZCAqYnVmLCBzaXplX3QgY291bnQsIG9mZl90IG9mZnNldCkK
IHsKLSAgICB0cmFjZV92ZnNfcHdyaXRlKGZkLCBidWYsIGNvdW50LCBvZmZzZXQpOwotICAgIHN0
cnVjdCBpb3ZlYyBpb3YgPSB7Ci0gICAgICAgICAgICAuaW92X2Jhc2UJPSAodm9pZCAqKWJ1ZiwK
LSAgICAgICAgICAgIC5pb3ZfbGVuCT0gY291bnQsCi0gICAgfTsKLSAgICBzdHJ1Y3QgZmlsZSAq
ZnA7Ci0gICAgc2l6ZV90IGJ5dGVzOwotICAgIGludCBlcnJvcjsKKwl0cmFjZV92ZnNfcHdyaXRl
KGZkLCBidWYsIGNvdW50LCBvZmZzZXQpOworCXN0cnVjdCBpb3ZlYyBpb3YgPSB7CisJCQkuaW92
X2Jhc2UJPSAodm9pZCAqKWJ1ZiwKKwkJCS5pb3ZfbGVuCT0gY291bnQsCisJfTsKKwlzdHJ1Y3Qg
ZmlsZSAqZnA7CisJc2l6ZV90IGJ5dGVzOworCWludCBlcnJvcjsKIAotICAgIGVycm9yID0gZmdl
dChmZCwgJmZwKTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIGdvdG8gb3V0X2Vycm5vOworCWVy
cm9yID0gZmdldChmZCwgJmZwKTsKKwlpZiAoZXJyb3IpCisJCWdvdG8gb3V0X2Vycm5vOwogCi0g
ICAgZXJyb3IgPSBzeXNfd3JpdGUoZnAsICZpb3YsIDEsIG9mZnNldCwgJmJ5dGVzKTsKLSAgICBm
ZHJvcChmcCk7CisJZXJyb3IgPSBzeXNfd3JpdGUoZnAsICZpb3YsIDEsIG9mZnNldCwgJmJ5dGVz
KTsKKwlmZHJvcChmcCk7CiAKLSAgICBpZiAoaGFzX2Vycm9yKGVycm9yLCBieXRlcykpCi0gICAg
ICAgIGdvdG8gb3V0X2Vycm5vOwotICAgIHRyYWNlX3Zmc19wd3JpdGVfcmV0KGJ5dGVzKTsKLSAg
ICByZXR1cm4gYnl0ZXM7CisJaWYgKGhhc19lcnJvcihlcnJvciwgYnl0ZXMpKQorCQlnb3RvIG91
dF9lcnJubzsKKwl0cmFjZV92ZnNfcHdyaXRlX3JldChieXRlcyk7CisJcmV0dXJuIGJ5dGVzOwog
Ci0gICAgb3V0X2Vycm5vOgotICAgIHRyYWNlX3Zmc19wd3JpdGVfZXJyKGVycm9yKTsKLSAgICBl
cnJubyA9IGVycm9yOwotICAgIHJldHVybiAtMTsKKwlvdXRfZXJybm86CisJdHJhY2VfdmZzX3B3
cml0ZV9lcnIoZXJyb3IpOworCWVycm5vID0gZXJyb3I7CisJcmV0dXJuIC0xOwogfQogCiBMRlM2
NChwd3JpdGUpOwogCiBzc2l6ZV90IHdyaXRlKGludCBmZCwgY29uc3Qgdm9pZCAqYnVmLCBzaXpl
X3QgY291bnQpCiB7Ci0gICAgcmV0dXJuIHB3cml0ZShmZCwgYnVmLCBjb3VudCwgLTEpOworCXJl
dHVybiBwd3JpdGUoZmQsIGJ1ZiwgY291bnQsIC0xKTsKIH0KIAogc3NpemVfdCBwcmVhZHYoaW50
IGZkLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlvdiwgaW50IGlvdmNudCwgb2ZmX3Qgb2Zmc2V0KQog
ewotICAgIHN0cnVjdCBmaWxlICpmcDsKLSAgICBzaXplX3QgYnl0ZXM7Ci0gICAgaW50IGVycm9y
OworCXN0cnVjdCBmaWxlICpmcDsKKwlzaXplX3QgYnl0ZXM7CisJaW50IGVycm9yOwogCi0gICAg
ZXJyb3IgPSBmZ2V0KGZkLCAmZnApOwotICAgIGlmIChlcnJvcikKLSAgICAgICAgZ290byBvdXRf
ZXJybm87CisJZXJyb3IgPSBmZ2V0KGZkLCAmZnApOworCWlmIChlcnJvcikKKwkJZ290byBvdXRf
ZXJybm87CiAKLSAgICBlcnJvciA9IHN5c19yZWFkKGZwLCBpb3YsIGlvdmNudCwgb2Zmc2V0LCAm
Ynl0ZXMpOwotICAgIGZkcm9wKGZwKTsKKwllcnJvciA9IHN5c19yZWFkKGZwLCBpb3YsIGlvdmNu
dCwgb2Zmc2V0LCAmYnl0ZXMpOworCWZkcm9wKGZwKTsKIAotICAgIGlmIChoYXNfZXJyb3IoZXJy
b3IsIGJ5dGVzKSkKLSAgICAgICAgZ290byBvdXRfZXJybm87Ci0gICAgcmV0dXJuIGJ5dGVzOwor
CWlmIChoYXNfZXJyb3IoZXJyb3IsIGJ5dGVzKSkKKwkJZ290byBvdXRfZXJybm87CisJcmV0dXJu
IGJ5dGVzOwogCi0gICAgb3V0X2Vycm5vOgotICAgIGVycm5vID0gZXJyb3I7Ci0gICAgcmV0dXJu
IC0xOworCW91dF9lcnJubzoKKwllcnJubyA9IGVycm9yOworCXJldHVybiAtMTsKIH0KIAogTEZT
NjQocHJlYWR2KTsKIAogc3NpemVfdCByZWFkdihpbnQgZmQsIGNvbnN0IHN0cnVjdCBpb3ZlYyAq
aW92LCBpbnQgaW92Y250KQogewotICAgIHJldHVybiBwcmVhZHYoZmQsIGlvdiwgaW92Y250LCAt
MSk7CisJcmV0dXJuIHByZWFkdihmZCwgaW92LCBpb3ZjbnQsIC0xKTsKIH0KIAogVFJBQ0VQT0lO
VCh0cmFjZV92ZnNfcHdyaXRldiwgIiVkICVwIDB4JXggMHgleCIsIGludCwgY29uc3Qgc3RydWN0
IGlvdmVjKiwgaW50LCBvZmZfdCk7CkBAIC00NDMsMzMgKzQ0MywzMyBAQCBUUkFDRVBPSU5UKHRy
YWNlX3Zmc19wd3JpdGV2X2VyciwgIiVkIiwgaW50KTsKIAogc3NpemVfdCBwd3JpdGV2KGludCBm
ZCwgY29uc3Qgc3RydWN0IGlvdmVjICppb3YsIGludCBpb3ZjbnQsIG9mZl90IG9mZnNldCkKIHsK
LSAgICBzdHJ1Y3QgZmlsZSAqZnA7Ci0gICAgc2l6ZV90IGJ5dGVzOwotICAgIGludCBlcnJvcjsK
KwlzdHJ1Y3QgZmlsZSAqZnA7CisJc2l6ZV90IGJ5dGVzOworCWludCBlcnJvcjsKIAotICAgIHRy
YWNlX3Zmc19wd3JpdGV2KGZkLCBpb3YsIGlvdmNudCwgb2Zmc2V0KTsKLSAgICBlcnJvciA9IGZn
ZXQoZmQsICZmcCk7Ci0gICAgaWYgKGVycm9yKQotICAgICAgICBnb3RvIG91dF9lcnJubzsKKwl0
cmFjZV92ZnNfcHdyaXRldihmZCwgaW92LCBpb3ZjbnQsIG9mZnNldCk7CisJZXJyb3IgPSBmZ2V0
KGZkLCAmZnApOworCWlmIChlcnJvcikKKwkJZ290byBvdXRfZXJybm87CiAKLSAgICBlcnJvciA9
IHN5c193cml0ZShmcCwgaW92LCBpb3ZjbnQsIG9mZnNldCwgJmJ5dGVzKTsKLSAgICBmZHJvcChm
cCk7CisJZXJyb3IgPSBzeXNfd3JpdGUoZnAsIGlvdiwgaW92Y250LCBvZmZzZXQsICZieXRlcyk7
CisJZmRyb3AoZnApOwogCi0gICAgaWYgKGhhc19lcnJvcihlcnJvciwgYnl0ZXMpKQotICAgICAg
ICBnb3RvIG91dF9lcnJubzsKLSAgICB0cmFjZV92ZnNfcHdyaXRldl9yZXQoYnl0ZXMpOwotICAg
IHJldHVybiBieXRlczsKKwlpZiAoaGFzX2Vycm9yKGVycm9yLCBieXRlcykpCisJCWdvdG8gb3V0
X2Vycm5vOworCXRyYWNlX3Zmc19wd3JpdGV2X3JldChieXRlcyk7CisJcmV0dXJuIGJ5dGVzOwog
Ci0gICAgb3V0X2Vycm5vOgotICAgIHRyYWNlX3Zmc19wd3JpdGV2X2VycihlcnJvcik7Ci0gICAg
ZXJybm8gPSBlcnJvcjsKLSAgICByZXR1cm4gLTE7CisJb3V0X2Vycm5vOgorCXRyYWNlX3Zmc19w
d3JpdGV2X2VycihlcnJvcik7CisJZXJybm8gPSBlcnJvcjsKKwlyZXR1cm4gLTE7CiB9CiBMRlM2
NChwd3JpdGV2KTsKIAogc3NpemVfdCB3cml0ZXYoaW50IGZkLCBjb25zdCBzdHJ1Y3QgaW92ZWMg
KmlvdiwgaW50IGlvdmNudCkKIHsKLSAgICByZXR1cm4gcHdyaXRldihmZCwgaW92LCBpb3ZjbnQs
IC0xKTsKKwlyZXR1cm4gcHdyaXRldihmZCwgaW92LCBpb3ZjbnQsIC0xKTsKIH0KIAogVFJBQ0VQ
T0lOVCh0cmFjZV92ZnNfaW9jdGwsICIlZCAweCV4IiwgaW50LCB1bnNpZ25lZCBsb25nKTsKQEAg
LTQ3OCwzNSArNDc4LDM1IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2lvY3RsX2VyciwgIiVkIiwg
aW50KTsKIAogaW50IGlvY3RsKGludCBmZCwgdW5zaWduZWQgbG9uZyBpbnQgcmVxdWVzdCwgLi4u
KQogewotICAgIHN0cnVjdCBmaWxlICpmcDsKLSAgICBpbnQgZXJyb3I7Ci0gICAgdmFfbGlzdCBh
cDsKLSAgICB2b2lkKiBhcmc7CisJc3RydWN0IGZpbGUgKmZwOworCWludCBlcnJvcjsKKwl2YV9s
aXN0IGFwOworCXZvaWQqIGFyZzsKIAotICAgIHRyYWNlX3Zmc19pb2N0bChmZCwgcmVxdWVzdCk7
Ci0gICAgLyogZ2xpYmMgQUJJIHByb3ZpZGVzIGEgdmFyaWFkaWMgcHJvdG90eXBlIGZvciBpb2N0
bCBzbyB3ZSBuZWVkIHRvIGFncmVlCi0gICAgICogd2l0aCBpdCwgc2luY2Ugd2Ugbm93IGluY2x1
ZGUgc3lzL2lvY3RsLmgKLSAgICAgKiByZWFkIHRoZSBmaXJzdCBhcmd1bWVudCBhbmQgcGFzcyBp
dCB0byBzeXNfaW9jdGwoKSAqLwotICAgIHZhX3N0YXJ0KGFwLCByZXF1ZXN0KTsKLSAgICBhcmcg
PSB2YV9hcmcoYXAsIHZvaWQqKTsKLSAgICB2YV9lbmQoYXApOworCXRyYWNlX3Zmc19pb2N0bChm
ZCwgcmVxdWVzdCk7CisJLyogZ2xpYmMgQUJJIHByb3ZpZGVzIGEgdmFyaWFkaWMgcHJvdG90eXBl
IGZvciBpb2N0bCBzbyB3ZSBuZWVkIHRvIGFncmVlCisJICogd2l0aCBpdCwgc2luY2Ugd2Ugbm93
IGluY2x1ZGUgc3lzL2lvY3RsLmgKKwkgKiByZWFkIHRoZSBmaXJzdCBhcmd1bWVudCBhbmQgcGFz
cyBpdCB0byBzeXNfaW9jdGwoKSAqLworCXZhX3N0YXJ0KGFwLCByZXF1ZXN0KTsKKwlhcmcgPSB2
YV9hcmcoYXAsIHZvaWQqKTsKKwl2YV9lbmQoYXApOwogCi0gICAgZXJyb3IgPSBmZ2V0KGZkLCAm
ZnApOwotICAgIGlmIChlcnJvcikKLSAgICAgICAgZ290byBvdXRfZXJybm87CisJZXJyb3IgPSBm
Z2V0KGZkLCAmZnApOworCWlmIChlcnJvcikKKwkJZ290byBvdXRfZXJybm87CiAKLSAgICBlcnJv
ciA9IHN5c19pb2N0bChmcCwgcmVxdWVzdCwgYXJnKTsKLSAgICBmZHJvcChmcCk7CisJZXJyb3Ig
PSBzeXNfaW9jdGwoZnAsIHJlcXVlc3QsIGFyZyk7CisJZmRyb3AoZnApOwogCi0gICAgaWYgKGVy
cm9yKQotICAgICAgICBnb3RvIG91dF9lcnJubzsKLSAgICB0cmFjZV92ZnNfaW9jdGxfcmV0KCk7
Ci0gICAgcmV0dXJuIDA7CisJaWYgKGVycm9yKQorCQlnb3RvIG91dF9lcnJubzsKKwl0cmFjZV92
ZnNfaW9jdGxfcmV0KCk7CisJcmV0dXJuIDA7CiAKLSAgICBvdXRfZXJybm86Ci0gICAgdHJhY2Vf
dmZzX2lvY3RsX2VycihlcnJvcik7Ci0gICAgZXJybm8gPSBlcnJvcjsKLSAgICByZXR1cm4gLTE7
CisJb3V0X2Vycm5vOgorCXRyYWNlX3Zmc19pb2N0bF9lcnIoZXJyb3IpOworCWVycm5vID0gZXJy
b3I7CisJcmV0dXJuIC0xOwogfQogCiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19mc3luYywgIiVkIiwg
aW50KTsKQEAgLTUxNSwzMiArNTE1LDMyIEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2ZzeW5jX2Vy
ciwgIiVkIiwgaW50KTsKIAogaW50IGZzeW5jKGludCBmZCkKIHsKLSAgICBzdHJ1Y3QgZmlsZSAq
ZnA7Ci0gICAgaW50IGVycm9yOworCXN0cnVjdCBmaWxlICpmcDsKKwlpbnQgZXJyb3I7CiAKLSAg
ICB0cmFjZV92ZnNfZnN5bmMoZmQpOwotICAgIGVycm9yID0gZmdldChmZCwgJmZwKTsKLSAgICBp
ZiAoZXJyb3IpCi0gICAgICAgIGdvdG8gb3V0X2Vycm5vOworCXRyYWNlX3Zmc19mc3luYyhmZCk7
CisJZXJyb3IgPSBmZ2V0KGZkLCAmZnApOworCWlmIChlcnJvcikKKwkJZ290byBvdXRfZXJybm87
CiAKLSAgICBlcnJvciA9IHN5c19mc3luYyhmcCk7Ci0gICAgZmRyb3AoZnApOworCWVycm9yID0g
c3lzX2ZzeW5jKGZwKTsKKwlmZHJvcChmcCk7CiAKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIGdv
dG8gb3V0X2Vycm5vOwotICAgIHRyYWNlX3Zmc19mc3luY19yZXQoKTsKLSAgICByZXR1cm4gMDsK
KwlpZiAoZXJyb3IpCisJCWdvdG8gb3V0X2Vycm5vOworCXRyYWNlX3Zmc19mc3luY19yZXQoKTsK
KwlyZXR1cm4gMDsKIAotICAgIG91dF9lcnJubzoKLSAgICB0cmFjZV92ZnNfZnN5bmNfZXJyKGVy
cm9yKTsKLSAgICBlcnJubyA9IGVycm9yOwotICAgIHJldHVybiAtMTsKKwlvdXRfZXJybm86CisJ
dHJhY2VfdmZzX2ZzeW5jX2VycihlcnJvcik7CisJZXJybm8gPSBlcnJvcjsKKwlyZXR1cm4gLTE7
CiB9CiAKIGludCBmZGF0YXN5bmMoaW50IGZkKQogewotICAgIC8vIFRPRE86IFNlZSBpZiB3ZSBj
YW4gZG8gbGVzcyB0aGFuIGZzeW5jKCkuCi0gICAgcmV0dXJuIGZzeW5jKGZkKTsKKwkvLyBUT0RP
OiBTZWUgaWYgd2UgY2FuIGRvIGxlc3MgdGhhbiBmc3luYygpLgorCXJldHVybiBmc3luYyhmZCk7
CiB9CiAKIFRSQUNFUE9JTlQodHJhY2VfdmZzX2ZzdGF0LCAiJWQgJXAiLCBpbnQsIHN0cnVjdCBz
dGF0Kik7CkBAIC01NTAsMjcgKzU1MCwyNyBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19mc3RhdF9l
cnIsICIlZCIsIGludCk7CiBleHRlcm4gIkMiCiBpbnQgX19meHN0YXQoaW50IHZlciwgaW50IGZk
LCBzdHJ1Y3Qgc3RhdCAqc3QpCiB7Ci0gICAgc3RydWN0IGZpbGUgKmZwOwotICAgIGludCBlcnJv
cjsKKwlzdHJ1Y3QgZmlsZSAqZnA7CisJaW50IGVycm9yOwogCi0gICAgdHJhY2VfdmZzX2ZzdGF0
KGZkLCBzdCk7CisJdHJhY2VfdmZzX2ZzdGF0KGZkLCBzdCk7CiAKLSAgICBlcnJvciA9IGZnZXQo
ZmQsICZmcCk7Ci0gICAgaWYgKGVycm9yKQotICAgICAgICBnb3RvIG91dF9lcnJubzsKKwllcnJv
ciA9IGZnZXQoZmQsICZmcCk7CisJaWYgKGVycm9yKQorCQlnb3RvIG91dF9lcnJubzsKIAotICAg
IGVycm9yID0gc3lzX2ZzdGF0KGZwLCBzdCk7Ci0gICAgZmRyb3AoZnApOworCWVycm9yID0gc3lz
X2ZzdGF0KGZwLCBzdCk7CisJZmRyb3AoZnApOwogCi0gICAgaWYgKGVycm9yKQotICAgICAgICBn
b3RvIG91dF9lcnJubzsKLSAgICB0cmFjZV92ZnNfZnN0YXRfcmV0KCk7Ci0gICAgcmV0dXJuIDA7
CisJaWYgKGVycm9yKQorCQlnb3RvIG91dF9lcnJubzsKKwl0cmFjZV92ZnNfZnN0YXRfcmV0KCk7
CisJcmV0dXJuIDA7CiAKLSAgICBvdXRfZXJybm86Ci0gICAgdHJhY2VfdmZzX2ZzdGF0X2Vycihl
cnJvcik7Ci0gICAgZXJybm8gPSBlcnJvcjsKLSAgICByZXR1cm4gLTE7CisJb3V0X2Vycm5vOgor
CXRyYWNlX3Zmc19mc3RhdF9lcnIoZXJyb3IpOworCWVycm5vID0gZXJyb3I7CisJcmV0dXJuIC0x
OwogfQogCiBMRlM2NChfX2Z4c3RhdCk7CkBAIC01NzgsNTIgKzU3OCw1MiBAQCBMRlM2NChfX2Z4
c3RhdCk7CiBleHRlcm4gIkMiCiBpbnQgZnN0YXQoaW50IGZkLCBzdHJ1Y3Qgc3RhdCAqc3QpCiB7
Ci0gICAgcmV0dXJuIF9fZnhzdGF0KDEsIGZkLCBzdCk7CisJcmV0dXJuIF9fZnhzdGF0KDEsIGZk
LCBzdCk7CiB9CiAKIExGUzY0KGZzdGF0KTsKIAogZXh0ZXJuICJDIgogaW50IF9fZnhzdGF0YXQo
aW50IHZlciwgaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwgc3RydWN0IHN0YXQgKnN0
LAotICAgICAgICBpbnQgZmxhZ3MpCisJCWludCBmbGFncykKIHsKLSAgICBpZiAoZmxhZ3MgJiBB
VF9TWU1MSU5LX05PRk9MTE9XKSB7Ci0gICAgICAgIFVOSU1QTEVNRU5URUQoImZzdGF0YXQoKSB3
aXRoIEFUX1NZTUxJTktfTk9GT0xMT1ciKTsKLSAgICB9CisJaWYgKGZsYWdzICYgQVRfU1lNTElO
S19OT0ZPTExPVykgeworCQlVTklNUExFTUVOVEVEKCJmc3RhdGF0KCkgd2l0aCBBVF9TWU1MSU5L
X05PRk9MTE9XIik7CisJfQogCi0gICAgaWYgKHBhdGhuYW1lWzBdID09ICcvJyB8fCBkaXJmZCA9
PSBBVF9GRENXRCkgewotICAgICAgICByZXR1cm4gc3RhdChwYXRobmFtZSwgc3QpOwotICAgIH0K
LSAgICAvLyBJZiBBVF9FTVBUWV9QQVRIIGFuZCBwYXRobmFtZSBpcyBhbiBlbXB0eSBzdHJpbmcs
IGZzdGF0YXQoKSBvcGVyYXRlcyBvbgotICAgIC8vIGRpcmZkIGl0c2VsZiwgYW5kIGluIHRoYXQg
Y2FzZSBpdCBkb2Vzbid0IGhhdmUgdG8gYmUgYSBkaXJlY3RvcnkuCi0gICAgaWYgKChmbGFncyAm
IEFUX0VNUFRZX1BBVEgpICYmICFwYXRobmFtZVswXSkgewotICAgICAgICByZXR1cm4gZnN0YXQo
ZGlyZmQsIHN0KTsKLSAgICB9CisJaWYgKHBhdGhuYW1lWzBdID09ICcvJyB8fCBkaXJmZCA9PSBB
VF9GRENXRCkgeworCQlyZXR1cm4gc3RhdChwYXRobmFtZSwgc3QpOworCX0KKwkvLyBJZiBBVF9F
TVBUWV9QQVRIIGFuZCBwYXRobmFtZSBpcyBhbiBlbXB0eSBzdHJpbmcsIGZzdGF0YXQoKSBvcGVy
YXRlcyBvbgorCS8vIGRpcmZkIGl0c2VsZiwgYW5kIGluIHRoYXQgY2FzZSBpdCBkb2Vzbid0IGhh
dmUgdG8gYmUgYSBkaXJlY3RvcnkuCisJaWYgKChmbGFncyAmIEFUX0VNUFRZX1BBVEgpICYmICFw
YXRobmFtZVswXSkgeworCQlyZXR1cm4gZnN0YXQoZGlyZmQsIHN0KTsKKwl9CiAKLSAgICBzdHJ1
Y3QgZmlsZSAqZnA7Ci0gICAgaW50IGVycm9yID0gZmdldChkaXJmZCwgJmZwKTsKLSAgICBpZiAo
ZXJyb3IpIHsKLSAgICAgICAgZXJybm8gPSBlcnJvcjsKLSAgICAgICAgcmV0dXJuIC0xOwotICAg
IH0KKwlzdHJ1Y3QgZmlsZSAqZnA7CisJaW50IGVycm9yID0gZmdldChkaXJmZCwgJmZwKTsKKwlp
ZiAoZXJyb3IpIHsKKwkJZXJybm8gPSBlcnJvcjsKKwkJcmV0dXJuIC0xOworCX0KIAotICAgIHN0
cnVjdCB2bm9kZSAqdnAgPSBmcC0+Zl9kZW50cnktPmRfdm5vZGU7Ci0gICAgdm5fbG9jayh2cCk7
CisJc3RydWN0IHZub2RlICp2cCA9IGZwLT5mX2RlbnRyeS0+ZF92bm9kZTsKKwl2bl9sb2NrKHZw
KTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxjaGFyIFtdPiB1cCAobmV3IGNoYXJbUEFUSF9NQVhd
KTsKLSAgICBjaGFyICpwID0gdXAuZ2V0KCk7Ci0gICAgLyogYnVpbGQgYWJzb2x1dGUgcGF0aCAq
LwotICAgIHN0cmxjcHkocCwgZnAtPmZfZGVudHJ5LT5kX21vdW50LT5tX3BhdGgsIFBBVEhfTUFY
KTsKLSAgICBzdHJsY2F0KHAsIGZwLT5mX2RlbnRyeS0+ZF9wYXRoLCBQQVRIX01BWCk7Ci0gICAg
c3RybGNhdChwLCAiLyIsIFBBVEhfTUFYKTsKLSAgICBzdHJsY2F0KHAsIHBhdGhuYW1lLCBQQVRI
X01BWCk7CisJc3RkOjp1bmlxdWVfcHRyPGNoYXIgW10+IHVwIChuZXcgY2hhcltQQVRIX01BWF0p
OworCWNoYXIgKnAgPSB1cC5nZXQoKTsKKwkvKiBidWlsZCBhYnNvbHV0ZSBwYXRoICovCisJc3Ry
bGNweShwLCBmcC0+Zl9kZW50cnktPmRfbW91bnQtPm1fcGF0aCwgUEFUSF9NQVgpOworCXN0cmxj
YXQocCwgZnAtPmZfZGVudHJ5LT5kX3BhdGgsIFBBVEhfTUFYKTsKKwlzdHJsY2F0KHAsICIvIiwg
UEFUSF9NQVgpOworCXN0cmxjYXQocCwgcGF0aG5hbWUsIFBBVEhfTUFYKTsKIAotICAgIGVycm9y
ID0gc3RhdChwLCBzdCk7CisJZXJyb3IgPSBzdGF0KHAsIHN0KTsKIAotICAgIHZuX3VubG9jayh2
cCk7Ci0gICAgZmRyb3AoZnApOworCXZuX3VubG9jayh2cCk7CisJZmRyb3AoZnApOwogCi0gICAg
cmV0dXJuIGVycm9yOworCXJldHVybiBlcnJvcjsKIH0KIAogTEZTNjQoX19meHN0YXRhdCk7CkBA
IC02MzEsMjkgKzYzMSwyOSBAQCBMRlM2NChfX2Z4c3RhdGF0KTsKIGV4dGVybiAiQyIKIGludCBm
c3RhdGF0KGludCBkaXJmZCwgY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IHN0YXQgKnN0LCBpbnQg
ZmxhZ3MpCiB7Ci0gICAgcmV0dXJuIF9fZnhzdGF0YXQoMSwgZGlyZmQsIHBhdGgsIHN0LCBmbGFn
cyk7CisJcmV0dXJuIF9fZnhzdGF0YXQoMSwgZGlyZmQsIHBhdGgsIHN0LCBmbGFncyk7CiB9CiAK
IExGUzY0KGZzdGF0YXQpOwogCiBleHRlcm4gIkMiIGludCBmbG9jayhpbnQgZmQsIGludCBvcGVy
YXRpb24pCiB7Ci0gICAgaWYgKCFmaWxlcmVmX2Zyb21fZmQoZmQpKSB7Ci0gICAgICAgIHJldHVy
biBsaWJjX2Vycm9yKEVCQURGKTsKLSAgICB9CisJaWYgKCFmaWxlcmVmX2Zyb21fZmQoZmQpKSB7
CisJCXJldHVybiBsaWJjX2Vycm9yKEVCQURGKTsKKwl9CiAKLSAgICBzd2l0Y2ggKG9wZXJhdGlv
bikgewotICAgIGNhc2UgTE9DS19TSDoKLSAgICBjYXNlIExPQ0tfU0ggfCBMT0NLX05COgotICAg
IGNhc2UgTE9DS19FWDoKLSAgICBjYXNlIExPQ0tfRVggfCBMT0NLX05COgotICAgIGNhc2UgTE9D
S19VTjoKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGxpYmNf
ZXJyb3IoRUlOVkFMKTsKLSAgICB9CisJc3dpdGNoIChvcGVyYXRpb24pIHsKKwljYXNlIExPQ0tf
U0g6CisJY2FzZSBMT0NLX1NIIHwgTE9DS19OQjoKKwljYXNlIExPQ0tfRVg6CisJY2FzZSBMT0NL
X0VYIHwgTE9DS19OQjoKKwljYXNlIExPQ0tfVU46CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXJl
dHVybiBsaWJjX2Vycm9yKEVJTlZBTCk7CisJfQogCi0gICAgcmV0dXJuIDA7CisJcmV0dXJuIDA7
CiB9CiAKIFRSQUNFUE9JTlQodHJhY2VfdmZzX3JlYWRkaXIsICIlZCAlcCIsIGludCwgZGlyZW50
Kik7CkBAIC02NjIsMTUyICs2NjIsMTUyIEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX3JlYWRkaXJf
ZXJyLCAiJWQiLCBpbnQpOwogCiBzdHJ1Y3QgX19kaXJzdHJlYW0KIHsKLSAgICBpbnQgZmQ7CisJ
aW50IGZkOwogfTsKIAogRElSICpvcGVuZGlyKGNvbnN0IGNoYXIgKnBhdGgpCiB7Ci0gICAgRElS
ICpkaXIgPSBuZXcgRElSOworCURJUiAqZGlyID0gbmV3IERJUjsKIAotICAgIGlmICghZGlyKQot
ICAgICAgICByZXR1cm4gbGliY19lcnJvcl9wdHI8RElSPihFTk9NRU0pOworCWlmICghZGlyKQor
CQlyZXR1cm4gbGliY19lcnJvcl9wdHI8RElSPihFTk9NRU0pOwogCi0gICAgZGlyLT5mZCA9IG9w
ZW4ocGF0aCwgT19SRE9OTFkpOwotICAgIGlmIChkaXItPmZkIDwgMCkgewotICAgICAgICBkZWxl
dGUgZGlyOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0gICAgcmV0dXJuIGRpcjsK
KwlkaXItPmZkID0gb3BlbihwYXRoLCBPX1JET05MWSk7CisJaWYgKGRpci0+ZmQgPCAwKSB7CisJ
CWRlbGV0ZSBkaXI7CisJCXJldHVybiBudWxscHRyOworCX0KKwlyZXR1cm4gZGlyOwogfQogCiBE
SVIgKmZkb3BlbmRpcihpbnQgZmQpCiB7Ci0gICAgRElSICpkaXI7Ci0gICAgc3RydWN0IHN0YXQg
c3Q7Ci0gICAgaWYgKGZzdGF0KGZkLCAmc3QpIDwgMCkgewotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICB9Ci0gICAgaWYgKCFTX0lTRElSKHN0LnN0X21vZGUpKSB7Ci0gICAgICAgIGVycm5v
ID0gRU5PVERJUjsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotICAgIGRpciA9IG5l
dyBESVI7Ci0gICAgZGlyLT5mZCA9IGZkOwotICAgIHJldHVybiBkaXI7CisJRElSICpkaXI7CisJ
c3RydWN0IHN0YXQgc3Q7CisJaWYgKGZzdGF0KGZkLCAmc3QpIDwgMCkgeworCQlyZXR1cm4gbnVs
bHB0cjsKKwl9CisJaWYgKCFTX0lTRElSKHN0LnN0X21vZGUpKSB7CisJCWVycm5vID0gRU5PVERJ
UjsKKwkJcmV0dXJuIG51bGxwdHI7CisJfQorCWRpciA9IG5ldyBESVI7CisJZGlyLT5mZCA9IGZk
OworCXJldHVybiBkaXI7CiAKIH0KIAogaW50IGRpcmZkKERJUiAqZGlycCkKIHsKLSAgICBpZiAo
IWRpcnApIHsKLSAgICAgICAgcmV0dXJuIGxpYmNfZXJyb3IoRUlOVkFMKTsKLSAgICB9CisJaWYg
KCFkaXJwKSB7CisJCXJldHVybiBsaWJjX2Vycm9yKEVJTlZBTCk7CisJfQogCi0gICAgcmV0dXJu
IGRpcnAtPmZkOworCXJldHVybiBkaXJwLT5mZDsKIH0KIAogaW50IGNsb3NlZGlyKERJUiAqZGly
KQogewotICAgIGNsb3NlKGRpci0+ZmQpOwotICAgIGRlbGV0ZSBkaXI7Ci0gICAgcmV0dXJuIDA7
CisJY2xvc2UoZGlyLT5mZCk7CisJZGVsZXRlIGRpcjsKKwlyZXR1cm4gMDsKIH0KIAogc3RydWN0
IGRpcmVudCAqcmVhZGRpcihESVIgKmRpcikKIHsKLSAgICBzdGF0aWMgX190aHJlYWQgc3RydWN0
IGRpcmVudCBlbnRyeSwgKnJlc3VsdDsKLSAgICBpbnQgcmV0OworCXN0YXRpYyBfX3RocmVhZCBz
dHJ1Y3QgZGlyZW50IGVudHJ5LCAqcmVzdWx0OworCWludCByZXQ7CiAKLSAgICByZXQgPSByZWFk
ZGlyX3IoZGlyLCAmZW50cnksICZyZXN1bHQpOwotICAgIGlmIChyZXQpCi0gICAgICAgIHJldHVy
biBsaWJjX2Vycm9yX3B0cjxzdHJ1Y3QgZGlyZW50PihyZXQpOworCXJldCA9IHJlYWRkaXJfcihk
aXIsICZlbnRyeSwgJnJlc3VsdCk7CisJaWYgKHJldCkKKwkJcmV0dXJuIGxpYmNfZXJyb3JfcHRy
PHN0cnVjdCBkaXJlbnQ+KHJldCk7CiAKLSAgICBlcnJubyA9IDA7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKKwllcnJubyA9IDA7CisJcmV0dXJuIHJlc3VsdDsKIH0KIAogaW50IHJlYWRkaXJfcihESVIg
KmRpciwgc3RydWN0IGRpcmVudCAqZW50cnksIHN0cnVjdCBkaXJlbnQgKipyZXN1bHQpCiB7Ci0g
ICAgaW50IGVycm9yOwotICAgIHN0cnVjdCBmaWxlICpmcDsKLQotICAgIHRyYWNlX3Zmc19yZWFk
ZGlyKGRpci0+ZmQsIGVudHJ5KTsKLSAgICBlcnJvciA9IGZnZXQoZGlyLT5mZCwgJmZwKTsKLSAg
ICBpZiAoZXJyb3IpIHsKLSAgICAgICAgdHJhY2VfdmZzX3JlYWRkaXJfZXJyKGVycm9yKTsKLSAg
ICB9IGVsc2UgewotICAgICAgICBlcnJvciA9IHN5c19yZWFkZGlyKGZwLCBlbnRyeSk7Ci0gICAg
ICAgIGZkcm9wKGZwKTsKLSAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICB0cmFjZV92
ZnNfcmVhZGRpcl9lcnIoZXJyb3IpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdHJh
Y2VfdmZzX3JlYWRkaXJfcmV0KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgLy8gT3VyIGRpcmVu
dCBoYXMgKGxpa2UgTGludXgpIGEgZF9yZWNsZW4gZmllbGQsIGJ1dCBhIGNvbnN0YW50IHNpemUu
Ci0gICAgZW50cnktPmRfcmVjbGVuID0gc2l6ZW9mKCplbnRyeSk7Ci0KLSAgICBpZiAoZXJyb3Ip
IHsKLSAgICAgICAgKnJlc3VsdCA9IG51bGxwdHI7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgKnJl
c3VsdCA9IGVudHJ5OwotICAgIH0KLSAgICByZXR1cm4gZXJyb3IgPT0gRU5PRU5UID8gMCA6IGVy
cm9yOworCWludCBlcnJvcjsKKwlzdHJ1Y3QgZmlsZSAqZnA7CisKKwl0cmFjZV92ZnNfcmVhZGRp
cihkaXItPmZkLCBlbnRyeSk7CisJZXJyb3IgPSBmZ2V0KGRpci0+ZmQsICZmcCk7CisJaWYgKGVy
cm9yKSB7CisJCXRyYWNlX3Zmc19yZWFkZGlyX2VycihlcnJvcik7CisJfSBlbHNlIHsKKwkJZXJy
b3IgPSBzeXNfcmVhZGRpcihmcCwgZW50cnkpOworCQlmZHJvcChmcCk7CisJCWlmIChlcnJvcikg
eworCQkJdHJhY2VfdmZzX3JlYWRkaXJfZXJyKGVycm9yKTsKKwkJfSBlbHNlIHsKKwkJCXRyYWNl
X3Zmc19yZWFkZGlyX3JldCgpOworCQl9CisJfQorCS8vIE91ciBkaXJlbnQgaGFzIChsaWtlIExp
bnV4KSBhIGRfcmVjbGVuIGZpZWxkLCBidXQgYSBjb25zdGFudCBzaXplLgorCWVudHJ5LT5kX3Jl
Y2xlbiA9IHNpemVvZigqZW50cnkpOworCisJaWYgKGVycm9yKSB7CisJCSpyZXN1bHQgPSBudWxs
cHRyOworCX0gZWxzZSB7CisJCSpyZXN1bHQgPSBlbnRyeTsKKwl9CisJcmV0dXJuIGVycm9yID09
IEVOT0VOVCA/IDAgOiBlcnJvcjsKIH0KIAogLy8gRklYTUU6IGluIDY0Yml0IGRpcmVudDY0IGFu
ZCBkaXJlbnQgYXJlIGlkZW50aWNhbCwgc28gaXQncyBzYWZlIHRvIGFsaWFzCiAjdW5kZWYgcmVh
ZGRpcjY0X3IKIGV4dGVybiAiQyIgaW50IHJlYWRkaXI2NF9yKERJUiAqZGlyLCBzdHJ1Y3QgZGly
ZW50NjQgKmVudHJ5LAotICAgICAgICBzdHJ1Y3QgZGlyZW50NjQgKipyZXN1bHQpCi0gICAgICAg
IF9fYXR0cmlidXRlX18oKGFsaWFzKCJyZWFkZGlyX3IiKSkpOworCQlzdHJ1Y3QgZGlyZW50NjQg
KipyZXN1bHQpCisJCV9fYXR0cmlidXRlX18oKGFsaWFzKCJyZWFkZGlyX3IiKSkpOwogCiAjdW5k
ZWYgcmVhZGRpcjY0CiBleHRlcm4gIkMiIHN0cnVjdCBkaXJlbnQgKnJlYWRkaXI2NChESVIgKmRp
cikgX19hdHRyaWJ1dGVfXygoYWxpYXMoInJlYWRkaXIiKSkpOwogCiB2b2lkIHJld2luZGRpcihE
SVIgKmRpcnApCiB7Ci0gICAgc3RydWN0IGZpbGUgKmZwOworCXN0cnVjdCBmaWxlICpmcDsKIAot
ICAgIGF1dG8gZXJyb3IgPSBmZ2V0KGRpcnAtPmZkLCAmZnApOwotICAgIGlmIChlcnJvcikgewot
ICAgICAgICAvLyBQT1NJWCBzcGVjaWZpZXMgdGhhdCB3aGF0IHJld2luZGRpcigpIGRvZXMgaW4g
dGhlIGNhc2Ugb2YgZXJyb3IKLSAgICAgICAgLy8gaXMgdW5kZWZpbmVkLi4uCi0gICAgICAgIHJl
dHVybjsKLSAgICB9CisJYXV0byBlcnJvciA9IGZnZXQoZGlycC0+ZmQsICZmcCk7CisJaWYgKGVy
cm9yKSB7CisJCS8vIFBPU0lYIHNwZWNpZmllcyB0aGF0IHdoYXQgcmV3aW5kZGlyKCkgZG9lcyBp
biB0aGUgY2FzZSBvZiBlcnJvcgorCQkvLyBpcyB1bmRlZmluZWQuLi4KKwkJcmV0dXJuOworCX0K
IAotICAgIHN5c19yZXdpbmRkaXIoZnApOwotICAgIC8vIEFnYWluLCBlcnJvciBjb2RlIGZyb20g
c3lzX3Jld2luZGRpcigpIGlzIGlnbm9yZWQuCi0gICAgZmRyb3AoZnApOworCXN5c19yZXdpbmRk
aXIoZnApOworCS8vIEFnYWluLCBlcnJvciBjb2RlIGZyb20gc3lzX3Jld2luZGRpcigpIGlzIGln
bm9yZWQuCisJZmRyb3AoZnApOwogfQogCiBsb25nIHRlbGxkaXIoRElSICpkaXJwKQogewotICAg
IHN0cnVjdCBmaWxlICpmcDsKLSAgICBpbnQgZXJyb3IgPSBmZ2V0KGRpcnAtPmZkLCAmZnApOwot
ICAgIGlmIChlcnJvcikgewotICAgICAgICByZXR1cm4gbGliY19lcnJvcihlcnJvcik7Ci0gICAg
fQorCXN0cnVjdCBmaWxlICpmcDsKKwlpbnQgZXJyb3IgPSBmZ2V0KGRpcnAtPmZkLCAmZnApOwor
CWlmIChlcnJvcikgeworCQlyZXR1cm4gbGliY19lcnJvcihlcnJvcik7CisJfQogCi0gICAgbG9u
ZyBsb2M7Ci0gICAgZXJyb3IgPSBzeXNfdGVsbGRpcihmcCwgJmxvYyk7Ci0gICAgZmRyb3AoZnAp
OwotICAgIGlmIChlcnJvcikgewotICAgICAgICByZXR1cm4gbGliY19lcnJvcihlcnJvcik7Ci0g
ICAgfQotICAgIHJldHVybiBsb2M7CisJbG9uZyBsb2M7CisJZXJyb3IgPSBzeXNfdGVsbGRpcihm
cCwgJmxvYyk7CisJZmRyb3AoZnApOworCWlmIChlcnJvcikgeworCQlyZXR1cm4gbGliY19lcnJv
cihlcnJvcik7CisJfQorCXJldHVybiBsb2M7CiB9CiAKIHZvaWQgc2Vla2RpcihESVIgKmRpcnAs
IGxvbmcgbG9jKQogewotICAgIHN0cnVjdCBmaWxlICpmcDsKLSAgICBpbnQgZXJyb3IgPSBmZ2V0
KGRpcnAtPmZkLCAmZnApOwotICAgIGlmIChlcnJvcikgewotICAgICAgICAvLyBQT1NJWCBzcGVj
aWZpZXMgc2Vla2RpcigpIGNhbm5vdCByZXR1cm4gZXJyb3JzLgotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIHN5c19zZWVrZGlyKGZwLCBsb2MpOwotICAgIC8vIEFnYWluLCBlcnJvciBjb2Rl
IGZyb20gc3lzX3NlZWtkaXIoKSBpcyBpZ25vcmVkLgotICAgIGZkcm9wKGZwKTsKKwlzdHJ1Y3Qg
ZmlsZSAqZnA7CisJaW50IGVycm9yID0gZmdldChkaXJwLT5mZCwgJmZwKTsKKwlpZiAoZXJyb3Ip
IHsKKwkJLy8gUE9TSVggc3BlY2lmaWVzIHNlZWtkaXIoKSBjYW5ub3QgcmV0dXJuIGVycm9ycy4K
KwkJcmV0dXJuOworCX0KKwlzeXNfc2Vla2RpcihmcCwgbG9jKTsKKwkvLyBBZ2FpbiwgZXJyb3Ig
Y29kZSBmcm9tIHN5c19zZWVrZGlyKCkgaXMgaWdub3JlZC4KKwlmZHJvcChmcCk7CiB9CiAKIFRS
QUNFUE9JTlQodHJhY2VfdmZzX21rZGlyLCAiXCIlc1wiIDAlMG8iLCBjb25zdCBjaGFyKiwgbW9k
ZV90KTsKQEAgLTgxNywyNSArODE3LDI1IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX21rZGlyX2Vy
ciwgIiVkIiwgaW50KTsKIGludAogbWtkaXIoY29uc3QgY2hhciAqcGF0aG5hbWUsIG1vZGVfdCBt
b2RlKQogewotICAgIHN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOwotICAgIGNoYXIgcGF0aFtQ
QVRIX01BWF07Ci0gICAgaW50IGVycm9yOworCXN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOwor
CWNoYXIgcGF0aFtQQVRIX01BWF07CisJaW50IGVycm9yOwogCi0gICAgbW9kZSA9IGFwcGx5X3Vt
YXNrKG1vZGUpOworCW1vZGUgPSBhcHBseV91bWFzayhtb2RlKTsKIAotICAgIHRyYWNlX3Zmc19t
a2RpcihwYXRobmFtZSwgbW9kZSk7Ci0gICAgaWYgKChlcnJvciA9IHRhc2tfY29udih0LCBwYXRo
bmFtZSwgVldSSVRFLCBwYXRoKSkgIT0gMCkKLSAgICAgICAgZ290byBvdXRfZXJybm87CisJdHJh
Y2VfdmZzX21rZGlyKHBhdGhuYW1lLCBtb2RlKTsKKwlpZiAoKGVycm9yID0gdGFza19jb252KHQs
IHBhdGhuYW1lLCBWV1JJVEUsIHBhdGgpKSAhPSAwKQorCQlnb3RvIG91dF9lcnJubzsKIAotICAg
IGVycm9yID0gc3lzX21rZGlyKHBhdGgsIG1vZGUpOwotICAgIGlmIChlcnJvcikKLSAgICAgICAg
Z290byBvdXRfZXJybm87Ci0gICAgdHJhY2VfdmZzX21rZGlyX3JldCgpOwotICAgIHJldHVybiAw
OwotICAgIG91dF9lcnJubzoKLSAgICB0cmFjZV92ZnNfbWtkaXJfZXJyKGVycm9yKTsKLSAgICBl
cnJubyA9IGVycm9yOwotICAgIHJldHVybiAtMTsKKwllcnJvciA9IHN5c19ta2RpcihwYXRoLCBt
b2RlKTsKKwlpZiAoZXJyb3IpCisJCWdvdG8gb3V0X2Vycm5vOworCXRyYWNlX3Zmc19ta2Rpcl9y
ZXQoKTsKKwlyZXR1cm4gMDsKKwlvdXRfZXJybm86CisJdHJhY2VfdmZzX21rZGlyX2VycihlcnJv
cik7CisJZXJybm8gPSBlcnJvcjsKKwlyZXR1cm4gLTE7CiB9CiAKIFRSQUNFUE9JTlQodHJhY2Vf
dmZzX3JtZGlyLCAiXCIlc1wiIiwgY29uc3QgY2hhciopOwpAQCAtODQ0LDUxICs4NDQsNTEgQEAg
VFJBQ0VQT0lOVCh0cmFjZV92ZnNfcm1kaXJfZXJyLCAiJWQiLCBpbnQpOwogCiBpbnQgcm1kaXIo
Y29uc3QgY2hhciAqcGF0aG5hbWUpCiB7Ci0gICAgc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7
Ci0gICAgY2hhciBwYXRoW1BBVEhfTUFYXTsKLSAgICBpbnQgZXJyb3I7CisJc3RydWN0IHRhc2sg
KnQgPSBtYWluX3Rhc2s7CisJY2hhciBwYXRoW1BBVEhfTUFYXTsKKwlpbnQgZXJyb3I7CiAKLSAg
ICB0cmFjZV92ZnNfcm1kaXIocGF0aG5hbWUpOwotICAgIGVycm9yID0gRU5PRU5UOwotICAgIGlm
IChwYXRobmFtZSA9PSBudWxscHRyKQotICAgICAgICBnb3RvIG91dF9lcnJubzsKLSAgICBpZiAo
KGVycm9yID0gdGFza19jb252KHQsIHBhdGhuYW1lLCBWV1JJVEUsIHBhdGgpKSAhPSAwKQotICAg
ICAgICBnb3RvIG91dF9lcnJubzsKKwl0cmFjZV92ZnNfcm1kaXIocGF0aG5hbWUpOworCWVycm9y
ID0gRU5PRU5UOworCWlmIChwYXRobmFtZSA9PSBudWxscHRyKQorCQlnb3RvIG91dF9lcnJubzsK
KwlpZiAoKGVycm9yID0gdGFza19jb252KHQsIHBhdGhuYW1lLCBWV1JJVEUsIHBhdGgpKSAhPSAw
KQorCQlnb3RvIG91dF9lcnJubzsKIAotICAgIGVycm9yID0gc3lzX3JtZGlyKHBhdGgpOwotICAg
IGlmIChlcnJvcikKLSAgICAgICAgZ290byBvdXRfZXJybm87Ci0gICAgdHJhY2VfdmZzX3JtZGly
X3JldCgpOwotICAgIHJldHVybiAwOwotICAgIG91dF9lcnJubzoKLSAgICB0cmFjZV92ZnNfcm1k
aXJfZXJyKGVycm9yKTsKLSAgICBlcnJubyA9IGVycm9yOwotICAgIHJldHVybiAtMTsKKwllcnJv
ciA9IHN5c19ybWRpcihwYXRoKTsKKwlpZiAoZXJyb3IpCisJCWdvdG8gb3V0X2Vycm5vOworCXRy
YWNlX3Zmc19ybWRpcl9yZXQoKTsKKwlyZXR1cm4gMDsKKwlvdXRfZXJybm86CisJdHJhY2VfdmZz
X3JtZGlyX2VycihlcnJvcik7CisJZXJybm8gPSBlcnJvcjsKKwlyZXR1cm4gLTE7CiB9CiAKIHN0
YXRpYyB2b2lkCiBnZXRfbGFzdF9jb21wb25lbnQoY29uc3QgY2hhciAqcGF0aCwgY2hhciAqZHN0
KQogewotICAgIGludCBwb3MgPSBzdHJsZW4ocGF0aCkgLSAxOworCWludCBwb3MgPSBzdHJsZW4o
cGF0aCkgLSAxOwogCi0gICAgd2hpbGUgKHBvcyA+PSAwICYmIHBhdGhbcG9zXSA9PSAnLycpCi0g
ICAgICAgIHBvcy0tOworCXdoaWxlIChwb3MgPj0gMCAmJiBwYXRoW3Bvc10gPT0gJy8nKQorCQlw
b3MtLTsKIAotICAgIGludCBjb21wb25lbnRfZW5kID0gcG9zOworCWludCBjb21wb25lbnRfZW5k
ID0gcG9zOwogCi0gICAgd2hpbGUgKHBvcyA+PSAwICYmIHBhdGhbcG9zXSAhPSAnLycpCi0gICAg
ICAgIHBvcy0tOworCXdoaWxlIChwb3MgPj0gMCAmJiBwYXRoW3Bvc10gIT0gJy8nKQorCQlwb3Mt
LTsKIAotICAgIGludCBjb21wb25lbnRfc3RhcnQgPSBwb3MgKyAxOworCWludCBjb21wb25lbnRf
c3RhcnQgPSBwb3MgKyAxOwogCi0gICAgaW50IGxlbiA9IGNvbXBvbmVudF9lbmQgLSBjb21wb25l
bnRfc3RhcnQgKyAxOwotICAgIG1lbWNweShkc3QsIHBhdGggKyBjb21wb25lbnRfc3RhcnQsIGxl
bik7Ci0gICAgZHN0W2xlbl0gPSAwOworCWludCBsZW4gPSBjb21wb25lbnRfZW5kIC0gY29tcG9u
ZW50X3N0YXJ0ICsgMTsKKwltZW1jcHkoZHN0LCBwYXRoICsgY29tcG9uZW50X3N0YXJ0LCBsZW4p
OworCWRzdFtsZW5dID0gMDsKIH0KIAogc3RhdGljIGJvb2wgbnVsbF9vcl9lbXB0eShjb25zdCBj
aGFyICpzdHIpCiB7Ci0gICAgcmV0dXJuIHN0ciA9PSBudWxscHRyIHx8ICpzdHIgPT0gJ1wwJzsK
KwlyZXR1cm4gc3RyID09IG51bGxwdHIgfHwgKnN0ciA9PSAnXDAnOwogfQogCiBUUkFDRVBPSU5U
KHRyYWNlX3Zmc19yZW5hbWUsICJcIiVzXCIgXCIlc1wiIiwgY29uc3QgY2hhciosIGNvbnN0IGNo
YXIqKTsKQEAgLTg5Nyw0MyArODk3LDQzIEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX3JlbmFtZV9l
cnIsICIlZCIsIGludCk7CiAKIGludCByZW5hbWUoY29uc3QgY2hhciAqb2xkcGF0aCwgY29uc3Qg
Y2hhciAqbmV3cGF0aCkKIHsKLSAgICB0cmFjZV92ZnNfcmVuYW1lKG9sZHBhdGgsIG5ld3BhdGgp
OwotICAgIHN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOwotICAgIGNoYXIgc3JjW1BBVEhfTUFY
XTsKLSAgICBjaGFyIGRlc3RbUEFUSF9NQVhdOwotICAgIGludCBlcnJvcjsKLQotICAgIGVycm9y
ID0gRU5PRU5UOwotICAgIGlmIChudWxsX29yX2VtcHR5KG9sZHBhdGgpIHx8IG51bGxfb3JfZW1w
dHkobmV3cGF0aCkpCi0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwotCi0gICAgZ2V0X2xhc3RfY29t
cG9uZW50KG9sZHBhdGgsIHNyYyk7Ci0gICAgaWYgKCFzdHJjbXAoc3JjLCAiLiIpIHx8ICFzdHJj
bXAoc3JjLCAiLi4iKSkgewotICAgICAgICBlcnJvciA9IEVJTlZBTDsKLSAgICAgICAgZ290byBv
dXRfZXJybm87Ci0gICAgfQotCi0gICAgZ2V0X2xhc3RfY29tcG9uZW50KG5ld3BhdGgsIGRlc3Qp
OwotICAgIGlmICghc3RyY21wKGRlc3QsICIuIikgfHwgIXN0cmNtcChkZXN0LCAiLi4iKSkgewot
ICAgICAgICBlcnJvciA9IEVJTlZBTDsKLSAgICAgICAgZ290byBvdXRfZXJybm87Ci0gICAgfQot
Ci0gICAgaWYgKChlcnJvciA9IHRhc2tfY29udih0LCBvbGRwYXRoLCBWUkVBRCwgc3JjKSkgIT0g
MCkKLSAgICAgICAgZ290byBvdXRfZXJybm87Ci0KLSAgICBpZiAoKGVycm9yID0gdGFza19jb252
KHQsIG5ld3BhdGgsIFZXUklURSwgZGVzdCkpICE9IDApCi0gICAgICAgIGdvdG8gb3V0X2Vycm5v
OwotCi0gICAgZXJyb3IgPSBzeXNfcmVuYW1lKHNyYywgZGVzdCk7Ci0gICAgaWYgKGVycm9yKQot
ICAgICAgICBnb3RvIG91dF9lcnJubzsKLSAgICB0cmFjZV92ZnNfcmVuYW1lX3JldCgpOwotICAg
IHJldHVybiAwOwotICAgIG91dF9lcnJubzoKLSAgICB0cmFjZV92ZnNfcmVuYW1lX2VycihlcnJv
cik7Ci0gICAgZXJybm8gPSBlcnJvcjsKLSAgICByZXR1cm4gLTE7CisJdHJhY2VfdmZzX3JlbmFt
ZShvbGRwYXRoLCBuZXdwYXRoKTsKKwlzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKKwljaGFy
IHNyY1tQQVRIX01BWF07CisJY2hhciBkZXN0W1BBVEhfTUFYXTsKKwlpbnQgZXJyb3I7CisKKwll
cnJvciA9IEVOT0VOVDsKKwlpZiAobnVsbF9vcl9lbXB0eShvbGRwYXRoKSB8fCBudWxsX29yX2Vt
cHR5KG5ld3BhdGgpKQorCQlnb3RvIG91dF9lcnJubzsKKworCWdldF9sYXN0X2NvbXBvbmVudChv
bGRwYXRoLCBzcmMpOworCWlmICghc3RyY21wKHNyYywgIi4iKSB8fCAhc3RyY21wKHNyYywgIi4u
IikpIHsKKwkJZXJyb3IgPSBFSU5WQUw7CisJCWdvdG8gb3V0X2Vycm5vOworCX0KKworCWdldF9s
YXN0X2NvbXBvbmVudChuZXdwYXRoLCBkZXN0KTsKKwlpZiAoIXN0cmNtcChkZXN0LCAiLiIpIHx8
ICFzdHJjbXAoZGVzdCwgIi4uIikpIHsKKwkJZXJyb3IgPSBFSU5WQUw7CisJCWdvdG8gb3V0X2Vy
cm5vOworCX0KKworCWlmICgoZXJyb3IgPSB0YXNrX2NvbnYodCwgb2xkcGF0aCwgVlJFQUQsIHNy
YykpICE9IDApCisJCWdvdG8gb3V0X2Vycm5vOworCisJaWYgKChlcnJvciA9IHRhc2tfY29udih0
LCBuZXdwYXRoLCBWV1JJVEUsIGRlc3QpKSAhPSAwKQorCQlnb3RvIG91dF9lcnJubzsKKworCWVy
cm9yID0gc3lzX3JlbmFtZShzcmMsIGRlc3QpOworCWlmIChlcnJvcikKKwkJZ290byBvdXRfZXJy
bm87CisJdHJhY2VfdmZzX3JlbmFtZV9yZXQoKTsKKwlyZXR1cm4gMDsKKwlvdXRfZXJybm86CisJ
dHJhY2VfdmZzX3JlbmFtZV9lcnIoZXJyb3IpOworCWVycm5vID0gZXJyb3I7CisJcmV0dXJuIC0x
OwogfQogCiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19jaGRpciwgIlwiJXNcIiIsIGNvbnN0IGNoYXIq
KTsKQEAgLTk0MSw1OCArOTQxLDU4IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2NoZGlyX3JldCwg
IiIpOwogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfY2hkaXJfZXJyLCAiJWQiLCBpbnQpOwogCiBzdGF0
aWMgaW50IHJlcGxhY2VfY3dkKHN0cnVjdCB0YXNrICp0LCBzdHJ1Y3QgZmlsZSAqbmV3X2N3ZGZw
LAotICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmZ1bmN0aW9uPGludCAodm9pZCk+IGNoZGly
X2Z1bmMpCisJCQkJCSAgIHN0ZDo6ZnVuY3Rpb248aW50ICh2b2lkKT4gY2hkaXJfZnVuYykKIHsK
LSAgICBzdHJ1Y3QgZmlsZSAqb2xkID0gbnVsbHB0cjsKKwlzdHJ1Y3QgZmlsZSAqb2xkID0gbnVs
bHB0cjsKIAotICAgIGlmICghdCkgewotICAgICAgICByZXR1cm4gMDsKLSAgICB9CisJaWYgKCF0
KSB7CisJCXJldHVybiAwOworCX0KIAotICAgIGlmICh0LT50X2N3ZGZwKSB7Ci0gICAgICAgIG9s
ZCA9IHQtPnRfY3dkZnA7Ci0gICAgfQorCWlmICh0LT50X2N3ZGZwKSB7CisJCW9sZCA9IHQtPnRf
Y3dkZnA7CisJfQogCi0gICAgLyogRG8gdGhlIGFjdHVhbCBjaGRpciBvcGVyYXRpb24gaGVyZSAq
LwotICAgIGludCBlcnJvciA9IGNoZGlyX2Z1bmMoKTsKKwkvKiBEbyB0aGUgYWN0dWFsIGNoZGly
IG9wZXJhdGlvbiBoZXJlICovCisJaW50IGVycm9yID0gY2hkaXJfZnVuYygpOwogCi0gICAgdC0+
dF9jd2RmcCA9IG5ld19jd2RmcDsKLSAgICBpZiAob2xkKSB7Ci0gICAgICAgIGZkcm9wKG9sZCk7
Ci0gICAgfQorCXQtPnRfY3dkZnAgPSBuZXdfY3dkZnA7CisJaWYgKG9sZCkgeworCQlmZHJvcChv
bGQpOworCX0KIAotICAgIHJldHVybiBlcnJvcjsKKwlyZXR1cm4gZXJyb3I7CiB9CiAKIGludCBj
aGRpcihjb25zdCBjaGFyICpwYXRobmFtZSkKIHsKLSAgICB0cmFjZV92ZnNfY2hkaXIocGF0aG5h
bWUpOwotICAgIHN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOwotICAgIGNoYXIgcGF0aFtQQVRI
X01BWF07Ci0gICAgc3RydWN0IGZpbGUgKmZwOwotICAgIGludCBlcnJvcjsKKwl0cmFjZV92ZnNf
Y2hkaXIocGF0aG5hbWUpOworCXN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOworCWNoYXIgcGF0
aFtQQVRIX01BWF07CisJc3RydWN0IGZpbGUgKmZwOworCWludCBlcnJvcjsKIAotICAgIGVycm9y
ID0gRU5PRU5UOwotICAgIGlmIChwYXRobmFtZSA9PSBudWxscHRyKQotICAgICAgICBnb3RvIG91
dF9lcnJubzsKKwllcnJvciA9IEVOT0VOVDsKKwlpZiAocGF0aG5hbWUgPT0gbnVsbHB0cikKKwkJ
Z290byBvdXRfZXJybm87CiAKLSAgICBpZiAoKGVycm9yID0gdGFza19jb252KHQsIHBhdGhuYW1l
LCBWUkVBRCwgcGF0aCkpICE9IDApCi0gICAgICAgIGdvdG8gb3V0X2Vycm5vOworCWlmICgoZXJy
b3IgPSB0YXNrX2NvbnYodCwgcGF0aG5hbWUsIFZSRUFELCBwYXRoKSkgIT0gMCkKKwkJZ290byBv
dXRfZXJybm87CiAKLSAgICAvKiBDaGVjayBpZiBkaXJlY3RvcnkgZXhpdHMgKi8KLSAgICBlcnJv
ciA9IHN5c19vcGVuKHBhdGgsIE9fRElSRUNUT1JZLCAwLCAmZnApOwotICAgIGlmIChlcnJvcikg
ewotICAgICAgICBnb3RvIG91dF9lcnJubzsKLSAgICB9CisJLyogQ2hlY2sgaWYgZGlyZWN0b3J5
IGV4aXRzICovCisJZXJyb3IgPSBzeXNfb3BlbihwYXRoLCBPX0RJUkVDVE9SWSwgMCwgJmZwKTsK
KwlpZiAoZXJyb3IpIHsKKwkJZ290byBvdXRfZXJybm87CisJfQogCi0gICAgcmVwbGFjZV9jd2Qo
dCwgZnAsIFsmXSgpIHsgc3RybGNweSh0LT50X2N3ZCwgcGF0aCwgc2l6ZW9mKHQtPnRfY3dkKSk7
IHJldHVybiAwOyB9KTsKKwlyZXBsYWNlX2N3ZCh0LCBmcCwgWyZdKCkgeyBzdHJsY3B5KHQtPnRf
Y3dkLCBwYXRoLCBzaXplb2YodC0+dF9jd2QpKTsgcmV0dXJuIDA7IH0pOwogCi0gICAgdHJhY2Vf
dmZzX2NoZGlyX3JldCgpOwotICAgIHJldHVybiAwOwotICAgIG91dF9lcnJubzoKLSAgICBlcnJu
byA9IGVycm9yOwotICAgIHRyYWNlX3Zmc19jaGRpcl9lcnIoZXJybm8pOwotICAgIHJldHVybiAt
MTsKKwl0cmFjZV92ZnNfY2hkaXJfcmV0KCk7CisJcmV0dXJuIDA7CisJb3V0X2Vycm5vOgorCWVy
cm5vID0gZXJyb3I7CisJdHJhY2VfdmZzX2NoZGlyX2VycihlcnJubyk7CisJcmV0dXJuIC0xOwog
fQogCiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19mY2hkaXIsICIlZCIsIGludCk7CkBAIC0xMDAxLDI4
ICsxMDAxLDI4IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2ZjaGRpcl9lcnIsICIlZCIsIGludCk7
CiAKIGludCBmY2hkaXIoaW50IGZkKQogewotICAgIHRyYWNlX3Zmc19mY2hkaXIoZmQpOwotICAg
IHN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOwotICAgIHN0cnVjdCBmaWxlICpmcDsKLSAgICBp
bnQgZXJyb3I7CisJdHJhY2VfdmZzX2ZjaGRpcihmZCk7CisJc3RydWN0IHRhc2sgKnQgPSBtYWlu
X3Rhc2s7CisJc3RydWN0IGZpbGUgKmZwOworCWludCBlcnJvcjsKIAotICAgIGVycm9yID0gZmdl
dChmZCwgJmZwKTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIGdvdG8gb3V0X2Vycm5vOworCWVy
cm9yID0gZmdldChmZCwgJmZwKTsKKwlpZiAoZXJyb3IpCisJCWdvdG8gb3V0X2Vycm5vOwogCi0g
ICAgZXJyb3IgPSByZXBsYWNlX2N3ZCh0LCBmcCwgWyZdKCkgeyByZXR1cm4gc3lzX2ZjaGRpcihm
cCwgdC0+dF9jd2QpOyB9KTsKLSAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgZmRyb3AoZnApOwot
ICAgICAgICBnb3RvIG91dF9lcnJubzsKLSAgICB9CisJZXJyb3IgPSByZXBsYWNlX2N3ZCh0LCBm
cCwgWyZdKCkgeyByZXR1cm4gc3lzX2ZjaGRpcihmcCwgdC0+dF9jd2QpOyB9KTsKKwlpZiAoZXJy
b3IpIHsKKwkJZmRyb3AoZnApOworCQlnb3RvIG91dF9lcnJubzsKKwl9CiAKLSAgICB0cmFjZV92
ZnNfZmNoZGlyX3JldCgpOwotICAgIHJldHVybiAwOworCXRyYWNlX3Zmc19mY2hkaXJfcmV0KCk7
CisJcmV0dXJuIDA7CiAKLSAgICBvdXRfZXJybm86Ci0gICAgdHJhY2VfdmZzX2ZjaGRpcl9lcnIo
ZXJyb3IpOwotICAgIGVycm5vID0gZXJyb3I7Ci0gICAgcmV0dXJuIC0xOworCW91dF9lcnJubzoK
Kwl0cmFjZV92ZnNfZmNoZGlyX2VycihlcnJvcik7CisJZXJybm8gPSBlcnJvcjsKKwlyZXR1cm4g
LTE7CiB9CiAKIFRSQUNFUE9JTlQodHJhY2VfdmZzX2xpbmssICJcIiVzXCIgXCIlc1wiIiwgY29u
c3QgY2hhciosIGNvbnN0IGNoYXIqKTsKQEAgLTEwMzEsMzAgKzEwMzEsMzAgQEAgVFJBQ0VQT0lO
VCh0cmFjZV92ZnNfbGlua19lcnIsICIlZCIsIGludCk7CiAKIGludCBsaW5rKGNvbnN0IGNoYXIg
Km9sZHBhdGgsIGNvbnN0IGNoYXIgKm5ld3BhdGgpCiB7Ci0gICAgc3RydWN0IHRhc2sgKnQgPSBt
YWluX3Rhc2s7Ci0gICAgY2hhciBwYXRoMVtQQVRIX01BWF07Ci0gICAgY2hhciBwYXRoMltQQVRI
X01BWF07Ci0gICAgaW50IGVycm9yOworCXN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOworCWNo
YXIgcGF0aDFbUEFUSF9NQVhdOworCWNoYXIgcGF0aDJbUEFUSF9NQVhdOworCWludCBlcnJvcjsK
IAotICAgIHRyYWNlX3Zmc19saW5rKG9sZHBhdGgsIG5ld3BhdGgpOworCXRyYWNlX3Zmc19saW5r
KG9sZHBhdGgsIG5ld3BhdGgpOwogCi0gICAgZXJyb3IgPSBFTk9FTlQ7Ci0gICAgaWYgKG9sZHBh
dGggPT0gbnVsbHB0ciB8fCBuZXdwYXRoID09IG51bGxwdHIpCi0gICAgICAgIGdvdG8gb3V0X2Vy
cm5vOwotICAgIGlmICgoZXJyb3IgPSB0YXNrX2NvbnYodCwgb2xkcGF0aCwgVldSSVRFLCBwYXRo
MSkpICE9IDApCi0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwotICAgIGlmICgoZXJyb3IgPSB0YXNr
X2NvbnYodCwgbmV3cGF0aCwgVldSSVRFLCBwYXRoMikpICE9IDApCi0gICAgICAgIGdvdG8gb3V0
X2Vycm5vOworCWVycm9yID0gRU5PRU5UOworCWlmIChvbGRwYXRoID09IG51bGxwdHIgfHwgbmV3
cGF0aCA9PSBudWxscHRyKQorCQlnb3RvIG91dF9lcnJubzsKKwlpZiAoKGVycm9yID0gdGFza19j
b252KHQsIG9sZHBhdGgsIFZXUklURSwgcGF0aDEpKSAhPSAwKQorCQlnb3RvIG91dF9lcnJubzsK
KwlpZiAoKGVycm9yID0gdGFza19jb252KHQsIG5ld3BhdGgsIFZXUklURSwgcGF0aDIpKSAhPSAw
KQorCQlnb3RvIG91dF9lcnJubzsKIAotICAgIGVycm9yID0gc3lzX2xpbmsocGF0aDEsIHBhdGgy
KTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwotICAgIHRyYWNlX3Zm
c19saW5rX3JldCgpOwotICAgIHJldHVybiAwOwotICAgIG91dF9lcnJubzoKLSAgICB0cmFjZV92
ZnNfbGlua19lcnIoZXJyb3IpOwotICAgIGVycm5vID0gZXJyb3I7Ci0gICAgcmV0dXJuIC0xOwor
CWVycm9yID0gc3lzX2xpbmsocGF0aDEsIHBhdGgyKTsKKwlpZiAoZXJyb3IpCisJCWdvdG8gb3V0
X2Vycm5vOworCXRyYWNlX3Zmc19saW5rX3JldCgpOworCXJldHVybiAwOworCW91dF9lcnJubzoK
Kwl0cmFjZV92ZnNfbGlua19lcnIoZXJyb3IpOworCWVycm5vID0gZXJyb3I7CisJcmV0dXJuIC0x
OwogfQogCiAKQEAgLTEwNjQsMjYgKzEwNjQsMjYgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfc3lt
bGlua19lcnIsICJlcnJubz0lZCIsIGludCk7CiAKIGludCBzeW1saW5rKGNvbnN0IGNoYXIgKm9s
ZHBhdGgsIGNvbnN0IGNoYXIgKm5ld3BhdGgpCiB7Ci0gICAgaW50IGVycm9yOworCWludCBlcnJv
cjsKIAotICAgIHRyYWNlX3Zmc19zeW1saW5rKG9sZHBhdGgsIG5ld3BhdGgpOworCXRyYWNlX3Zm
c19zeW1saW5rKG9sZHBhdGgsIG5ld3BhdGgpOwogCi0gICAgZXJyb3IgPSBFTk9FTlQ7Ci0gICAg
aWYgKG9sZHBhdGggPT0gbnVsbHB0ciB8fCBuZXdwYXRoID09IG51bGxwdHIpIHsKLSAgICAgICAg
ZXJybm8gPSBFTk9FTlQ7Ci0gICAgICAgIHRyYWNlX3Zmc19zeW1saW5rX2VycihlcnJvcik7Ci0g
ICAgICAgIHJldHVybiAoLTEpOwotICAgIH0KKwllcnJvciA9IEVOT0VOVDsKKwlpZiAob2xkcGF0
aCA9PSBudWxscHRyIHx8IG5ld3BhdGggPT0gbnVsbHB0cikgeworCQllcnJubyA9IEVOT0VOVDsK
KwkJdHJhY2VfdmZzX3N5bWxpbmtfZXJyKGVycm9yKTsKKwkJcmV0dXJuICgtMSk7CisJfQogCi0g
ICAgZXJyb3IgPSBzeXNfc3ltbGluayhvbGRwYXRoLCBuZXdwYXRoKTsKLSAgICBpZiAoZXJyb3Ip
IHsKLSAgICAgICAgZXJybm8gPSBlcnJvcjsKLSAgICAgICAgdHJhY2VfdmZzX3N5bWxpbmtfZXJy
KGVycm9yKTsKLSAgICAgICAgcmV0dXJuICgtMSk7Ci0gICAgfQorCWVycm9yID0gc3lzX3N5bWxp
bmsob2xkcGF0aCwgbmV3cGF0aCk7CisJaWYgKGVycm9yKSB7CisJCWVycm5vID0gZXJyb3I7CisJ
CXRyYWNlX3Zmc19zeW1saW5rX2VycihlcnJvcik7CisJCXJldHVybiAoLTEpOworCX0KIAotICAg
IHRyYWNlX3Zmc19zeW1saW5rX3JldCgpOwotICAgIHJldHVybiAwOworCXRyYWNlX3Zmc19zeW1s
aW5rX3JldCgpOworCXJldHVybiAwOwogfQogCiBUUkFDRVBPSU5UKHRyYWNlX3Zmc191bmxpbmss
ICJcIiVzXCIiLCBjb25zdCBjaGFyKik7CkBAIC0xMDkyLDI2ICsxMDkyLDI2IEBAIFRSQUNFUE9J
TlQodHJhY2VfdmZzX3VubGlua19lcnIsICIlZCIsIGludCk7CiAKIGludCB1bmxpbmsoY29uc3Qg
Y2hhciAqcGF0aG5hbWUpCiB7Ci0gICAgdHJhY2VfdmZzX3VubGluayhwYXRobmFtZSk7Ci0gICAg
c3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7Ci0gICAgY2hhciBwYXRoW1BBVEhfTUFYXTsKLSAg
ICBpbnQgZXJyb3I7CisJdHJhY2VfdmZzX3VubGluayhwYXRobmFtZSk7CisJc3RydWN0IHRhc2sg
KnQgPSBtYWluX3Rhc2s7CisJY2hhciBwYXRoW1BBVEhfTUFYXTsKKwlpbnQgZXJyb3I7CiAKLSAg
ICBlcnJvciA9IEVOT0VOVDsKLSAgICBpZiAocGF0aG5hbWUgPT0gbnVsbHB0cikKLSAgICAgICAg
Z290byBvdXRfZXJybm87Ci0gICAgaWYgKChlcnJvciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwg
VldSSVRFLCBwYXRoKSkgIT0gMCkKLSAgICAgICAgZ290byBvdXRfZXJybm87CisJZXJyb3IgPSBF
Tk9FTlQ7CisJaWYgKHBhdGhuYW1lID09IG51bGxwdHIpCisJCWdvdG8gb3V0X2Vycm5vOworCWlm
ICgoZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5hbWUsIFZXUklURSwgcGF0aCkpICE9IDApCisJ
CWdvdG8gb3V0X2Vycm5vOwogCi0gICAgZXJyb3IgPSBzeXNfdW5saW5rKHBhdGgpOwotICAgIGlm
IChlcnJvcikKLSAgICAgICAgZ290byBvdXRfZXJybm87Ci0gICAgdHJhY2VfdmZzX3VubGlua19y
ZXQoKTsKLSAgICByZXR1cm4gMDsKLSAgICBvdXRfZXJybm86Ci0gICAgdHJhY2VfdmZzX3VubGlu
a19lcnIoZXJyb3IpOwotICAgIGVycm5vID0gZXJyb3I7Ci0gICAgcmV0dXJuIC0xOworCWVycm9y
ID0gc3lzX3VubGluayhwYXRoKTsKKwlpZiAoZXJyb3IpCisJCWdvdG8gb3V0X2Vycm5vOworCXRy
YWNlX3Zmc191bmxpbmtfcmV0KCk7CisJcmV0dXJuIDA7CisJb3V0X2Vycm5vOgorCXRyYWNlX3Zm
c191bmxpbmtfZXJyKGVycm9yKTsKKwllcnJubyA9IGVycm9yOworCXJldHVybiAtMTsKIH0KIAog
VFJBQ0VQT0lOVCh0cmFjZV92ZnNfc3RhdCwgIlwiJXNcIiAlcCIsIGNvbnN0IGNoYXIqLCBzdHJ1
Y3Qgc3RhdCopOwpAQCAtMTEyMSwzMyArMTEyMSwzMyBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19z
dGF0X2VyciwgIiVkIiwgaW50KTsKIGV4dGVybiAiQyIKIGludCBfX3hzdGF0KGludCB2ZXIsIGNv
bnN0IGNoYXIgKnBhdGhuYW1lLCBzdHJ1Y3Qgc3RhdCAqc3QpCiB7Ci0gICAgc3RydWN0IHRhc2sg
KnQgPSBtYWluX3Rhc2s7Ci0gICAgY2hhciBwYXRoW1BBVEhfTUFYXTsKLSAgICBpbnQgZXJyb3I7
CisJc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7CisJY2hhciBwYXRoW1BBVEhfTUFYXTsKKwlp
bnQgZXJyb3I7CiAKLSAgICB0cmFjZV92ZnNfc3RhdChwYXRobmFtZSwgc3QpOworCXRyYWNlX3Zm
c19zdGF0KHBhdGhuYW1lLCBzdCk7CiAKLSAgICBlcnJvciA9IHRhc2tfY29udih0LCBwYXRobmFt
ZSwgMCwgcGF0aCk7Ci0gICAgaWYgKGVycm9yKQotICAgICAgICBnb3RvIG91dF9lcnJubzsKKwll
cnJvciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwgMCwgcGF0aCk7CisJaWYgKGVycm9yKQorCQln
b3RvIG91dF9lcnJubzsKIAotICAgIGVycm9yID0gc3lzX3N0YXQocGF0aCwgc3QpOwotICAgIGlm
IChlcnJvcikKLSAgICAgICAgZ290byBvdXRfZXJybm87Ci0gICAgdHJhY2VfdmZzX3N0YXRfcmV0
KCk7Ci0gICAgcmV0dXJuIDA7CisJZXJyb3IgPSBzeXNfc3RhdChwYXRoLCBzdCk7CisJaWYgKGVy
cm9yKQorCQlnb3RvIG91dF9lcnJubzsKKwl0cmFjZV92ZnNfc3RhdF9yZXQoKTsKKwlyZXR1cm4g
MDsKIAotICAgIG91dF9lcnJubzoKLSAgICB0cmFjZV92ZnNfc3RhdF9lcnIoZXJyb3IpOwotICAg
IGVycm5vID0gZXJyb3I7Ci0gICAgcmV0dXJuIC0xOworCW91dF9lcnJubzoKKwl0cmFjZV92ZnNf
c3RhdF9lcnIoZXJyb3IpOworCWVycm5vID0gZXJyb3I7CisJcmV0dXJuIC0xOwogfQogCiBMRlM2
NChfX3hzdGF0KTsKIAogaW50IHN0YXQoY29uc3QgY2hhciAqcGF0aG5hbWUsIHN0cnVjdCBzdGF0
ICpzdCkKIHsKLSAgICByZXR1cm4gX194c3RhdCgxLCBwYXRobmFtZSwgc3QpOworCXJldHVybiBf
X3hzdGF0KDEsIHBhdGhuYW1lLCBzdCk7CiB9CiAKIExGUzY0KHN0YXQpOwpAQCAtMTE1OCwzNSAr
MTE1OCwzNSBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19sc3RhdF9lcnIsICJlcnJubz0lZCIsIGlu
dCk7CiBleHRlcm4gIkMiCiBpbnQgX19seHN0YXQoaW50IHZlciwgY29uc3QgY2hhciAqcGF0aG5h
bWUsIHN0cnVjdCBzdGF0ICpzdCkKIHsKLSAgICBzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsK
LSAgICBjaGFyIHBhdGhbUEFUSF9NQVhdOwotICAgIGludCBlcnJvcjsKKwlzdHJ1Y3QgdGFzayAq
dCA9IG1haW5fdGFzazsKKwljaGFyIHBhdGhbUEFUSF9NQVhdOworCWludCBlcnJvcjsKIAotICAg
IHRyYWNlX3Zmc19sc3RhdChwYXRobmFtZSwgc3QpOworCXRyYWNlX3Zmc19sc3RhdChwYXRobmFt
ZSwgc3QpOwogCi0gICAgZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5hbWUsIDAsIHBhdGgpOwot
ICAgIGlmIChlcnJvcikgewotICAgICAgICBlcnJubyA9IGVycm9yOwotICAgICAgICB0cmFjZV92
ZnNfbHN0YXRfZXJyKGVycm9yKTsKLSAgICAgICAgcmV0dXJuICgtMSk7Ci0gICAgfQorCWVycm9y
ID0gdGFza19jb252KHQsIHBhdGhuYW1lLCAwLCBwYXRoKTsKKwlpZiAoZXJyb3IpIHsKKwkJZXJy
bm8gPSBlcnJvcjsKKwkJdHJhY2VfdmZzX2xzdGF0X2VycihlcnJvcik7CisJCXJldHVybiAoLTEp
OworCX0KIAotICAgIGVycm9yID0gc3lzX2xzdGF0KHBhdGgsIHN0KTsKLSAgICBpZiAoZXJyb3Ip
IHsKLSAgICAgICAgZXJybm8gPSBlcnJvcjsKLSAgICAgICAgdHJhY2VfdmZzX2xzdGF0X2Vycihl
cnJvcik7Ci0gICAgICAgIHJldHVybiAoLTEpOwotICAgIH0KKwllcnJvciA9IHN5c19sc3RhdChw
YXRoLCBzdCk7CisJaWYgKGVycm9yKSB7CisJCWVycm5vID0gZXJyb3I7CisJCXRyYWNlX3Zmc19s
c3RhdF9lcnIoZXJyb3IpOworCQlyZXR1cm4gKC0xKTsKKwl9CiAKLSAgICB0cmFjZV92ZnNfbHN0
YXRfcmV0KCk7Ci0gICAgcmV0dXJuIDA7CisJdHJhY2VfdmZzX2xzdGF0X3JldCgpOworCXJldHVy
biAwOwogfQogCiBMRlM2NChfX2x4c3RhdCk7CiAKIGludCBsc3RhdChjb25zdCBjaGFyICpwYXRo
bmFtZSwgc3RydWN0IHN0YXQgKnN0KQogewotICAgIHJldHVybiBfX2x4c3RhdCgxLCBwYXRobmFt
ZSwgc3QpOworCXJldHVybiBfX2x4c3RhdCgxLCBwYXRobmFtZSwgc3QpOwogfQogCiBMRlM2NChs
c3RhdCk7CkBAIC0xMTk4LDI0ICsxMTk4LDI0IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX3N0YXRm
c19lcnIsICIlZCIsIGludCk7CiBleHRlcm4gIkMiCiBpbnQgX19zdGF0ZnMoY29uc3QgY2hhciAq
cGF0aG5hbWUsIHN0cnVjdCBzdGF0ZnMgKmJ1ZikKIHsKLSAgICB0cmFjZV92ZnNfc3RhdGZzKHBh
dGhuYW1lLCBidWYpOwotICAgIHN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOwotICAgIGNoYXIg
cGF0aFtQQVRIX01BWF07Ci0gICAgaW50IGVycm9yOwotCi0gICAgZXJyb3IgPSB0YXNrX2NvbnYo
dCwgcGF0aG5hbWUsIDAsIHBhdGgpOwotICAgIGlmIChlcnJvcikKLSAgICAgICAgZ290byBvdXRf
ZXJybm87Ci0KLSAgICBlcnJvciA9IHN5c19zdGF0ZnMocGF0aCwgYnVmKTsKLSAgICBpZiAoZXJy
b3IpCi0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwotICAgIHRyYWNlX3Zmc19zdGF0ZnNfcmV0KCk7
Ci0gICAgcmV0dXJuIDA7Ci0gICAgb3V0X2Vycm5vOgotICAgIHRyYWNlX3Zmc19zdGF0ZnNfZXJy
KGVycm9yKTsKLSAgICBlcnJubyA9IGVycm9yOwotICAgIHJldHVybiAtMTsKKwl0cmFjZV92ZnNf
c3RhdGZzKHBhdGhuYW1lLCBidWYpOworCXN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOworCWNo
YXIgcGF0aFtQQVRIX01BWF07CisJaW50IGVycm9yOworCisJZXJyb3IgPSB0YXNrX2NvbnYodCwg
cGF0aG5hbWUsIDAsIHBhdGgpOworCWlmIChlcnJvcikKKwkJZ290byBvdXRfZXJybm87CisKKwll
cnJvciA9IHN5c19zdGF0ZnMocGF0aCwgYnVmKTsKKwlpZiAoZXJyb3IpCisJCWdvdG8gb3V0X2Vy
cm5vOworCXRyYWNlX3Zmc19zdGF0ZnNfcmV0KCk7CisJcmV0dXJuIDA7CisJb3V0X2Vycm5vOgor
CXRyYWNlX3Zmc19zdGF0ZnNfZXJyKGVycm9yKTsKKwllcnJubyA9IGVycm9yOworCXJldHVybiAt
MTsKIH0KIHdlYWtfYWxpYXMoX19zdGF0ZnMsIHN0YXRmcyk7CiAKQEAgLTEyMjgsMjYgKzEyMjgs
MjYgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZnN0YXRmc19lcnIsICIlZCIsIGludCk7CiBleHRl
cm4gIkMiCiBpbnQgX19mc3RhdGZzKGludCBmZCwgc3RydWN0IHN0YXRmcyAqYnVmKQogewotICAg
IHN0cnVjdCBmaWxlICpmcDsKLSAgICBpbnQgZXJyb3I7CisJc3RydWN0IGZpbGUgKmZwOworCWlu
dCBlcnJvcjsKIAotICAgIHRyYWNlX3Zmc19mc3RhdGZzKGZkLCBidWYpOwotICAgIGVycm9yID0g
ZmdldChmZCwgJmZwKTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwor
CXRyYWNlX3Zmc19mc3RhdGZzKGZkLCBidWYpOworCWVycm9yID0gZmdldChmZCwgJmZwKTsKKwlp
ZiAoZXJyb3IpCisJCWdvdG8gb3V0X2Vycm5vOwogCi0gICAgZXJyb3IgPSBzeXNfZnN0YXRmcyhm
cCwgYnVmKTsKLSAgICBmZHJvcChmcCk7CisJZXJyb3IgPSBzeXNfZnN0YXRmcyhmcCwgYnVmKTsK
KwlmZHJvcChmcCk7CiAKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwot
ICAgIHRyYWNlX3Zmc19mc3RhdGZzX3JldCgpOwotICAgIHJldHVybiAwOworCWlmIChlcnJvcikK
KwkJZ290byBvdXRfZXJybm87CisJdHJhY2VfdmZzX2ZzdGF0ZnNfcmV0KCk7CisJcmV0dXJuIDA7
CiAKLSAgICBvdXRfZXJybm86Ci0gICAgdHJhY2VfdmZzX2ZzdGF0ZnNfZXJyKGVycm9yKTsKLSAg
ICBlcnJubyA9IGVycm9yOwotICAgIHJldHVybiAtMTsKKwlvdXRfZXJybm86CisJdHJhY2VfdmZz
X2ZzdGF0ZnNfZXJyKGVycm9yKTsKKwllcnJubyA9IGVycm9yOworCXJldHVybiAtMTsKIH0KIHdl
YWtfYWxpYXMoX19mc3RhdGZzLCBmc3RhdGZzKTsKIApAQCAtMTI1NiwyOCArMTI1NiwyOCBAQCBM
RlM2NChmc3RhdGZzKTsKIHN0YXRpYyBpbnQKIHN0YXRmc190b19zdGF0dmZzKHN0cnVjdCBzdGF0
dmZzICpkc3QsIHN0cnVjdCBzdGF0ZnMgKnNyYykKIHsKLSAgICBkc3QtPmZfYnNpemUgPSBzcmMt
PmZfYnNpemU7Ci0gICAgZHN0LT5mX2Zyc2l6ZSA9IHNyYy0+Zl9ic2l6ZTsKLSAgICBkc3QtPmZf
YmxvY2tzID0gc3JjLT5mX2Jsb2NrczsKLSAgICBkc3QtPmZfYmZyZWUgPSBzcmMtPmZfYmZyZWU7
Ci0gICAgZHN0LT5mX2JhdmFpbCA9IHNyYy0+Zl9iYXZhaWw7Ci0gICAgZHN0LT5mX2ZpbGVzID0g
c3JjLT5mX2ZpbGVzOwotICAgIGRzdC0+Zl9mZnJlZSA9IHNyYy0+Zl9mZnJlZTsKLSAgICBkc3Qt
PmZfZmF2YWlsID0gMDsKLSAgICBkc3QtPmZfZnNpZCA9IHNyYy0+Zl9mc2lkLl9fdmFsWzBdOwot
ICAgIGRzdC0+Zl9mbGFnID0gc3JjLT5mX2ZsYWdzOwotICAgIGRzdC0+Zl9uYW1lbWF4ID0gc3Jj
LT5mX25hbWVsZW47Ci0gICAgcmV0dXJuIDA7CisJZHN0LT5mX2JzaXplID0gc3JjLT5mX2JzaXpl
OworCWRzdC0+Zl9mcnNpemUgPSBzcmMtPmZfYnNpemU7CisJZHN0LT5mX2Jsb2NrcyA9IHNyYy0+
Zl9ibG9ja3M7CisJZHN0LT5mX2JmcmVlID0gc3JjLT5mX2JmcmVlOworCWRzdC0+Zl9iYXZhaWwg
PSBzcmMtPmZfYmF2YWlsOworCWRzdC0+Zl9maWxlcyA9IHNyYy0+Zl9maWxlczsKKwlkc3QtPmZf
ZmZyZWUgPSBzcmMtPmZfZmZyZWU7CisJZHN0LT5mX2ZhdmFpbCA9IDA7CisJZHN0LT5mX2ZzaWQg
PSBzcmMtPmZfZnNpZC5fX3ZhbFswXTsKKwlkc3QtPmZfZmxhZyA9IHNyYy0+Zl9mbGFnczsKKwlk
c3QtPmZfbmFtZW1heCA9IHNyYy0+Zl9uYW1lbGVuOworCXJldHVybiAwOwogfQogCiBpbnQKIHN0
YXR2ZnMoY29uc3QgY2hhciAqcGF0aG5hbWUsIHN0cnVjdCBzdGF0dmZzICpidWYpCiB7Ci0gICAg
c3RydWN0IHN0YXRmcyBzdDsKKwlzdHJ1Y3Qgc3RhdGZzIHN0OwogCi0gICAgaWYgKF9fc3RhdGZz
KHBhdGhuYW1lLCAmc3QpIDwgMCkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIHJldHVybiBzdGF0
ZnNfdG9fc3RhdHZmcyhidWYsICZzdCk7CisJaWYgKF9fc3RhdGZzKHBhdGhuYW1lLCAmc3QpIDwg
MCkKKwkJcmV0dXJuIC0xOworCXJldHVybiBzdGF0ZnNfdG9fc3RhdHZmcyhidWYsICZzdCk7CiB9
CiAKIExGUzY0KHN0YXR2ZnMpOwpAQCAtMTI4NSwxMSArMTI4NSwxMSBAQCBMRlM2NChzdGF0dmZz
KTsKIGludAogZnN0YXR2ZnMoaW50IGZkLCBzdHJ1Y3Qgc3RhdHZmcyAqYnVmKQogewotICAgIHN0
cnVjdCBzdGF0ZnMgc3Q7CisJc3RydWN0IHN0YXRmcyBzdDsKIAotICAgIGlmIChfX2ZzdGF0ZnMo
ZmQsICZzdCkgPCAwKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgcmV0dXJuIHN0YXRmc190b19z
dGF0dmZzKGJ1ZiwgJnN0KTsKKwlpZiAoX19mc3RhdGZzKGZkLCAmc3QpIDwgMCkKKwkJcmV0dXJu
IC0xOworCXJldHVybiBzdGF0ZnNfdG9fc3RhdHZmcyhidWYsICZzdCk7CiB9CiAKIExGUzY0KGZz
dGF0dmZzKTsKQEAgLTEzMDEsMzkgKzEzMDEsMzkgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZ2V0
Y3dkX2VyciwgIiVkIiwgaW50KTsKIAogY2hhciAqZ2V0Y3dkKGNoYXIgKnBhdGgsIHNpemVfdCBz
aXplKQogewotICAgIHRyYWNlX3Zmc19nZXRjd2QocGF0aCwgc2l6ZSk7Ci0gICAgc3RydWN0IHRh
c2sgKnQgPSBtYWluX3Rhc2s7Ci0gICAgaW50IGxlbiA9IHN0cmxlbih0LT50X2N3ZCkgKyAxOwot
ICAgIGludCBlcnJvcjsKLQotICAgIGlmICghcGF0aCkgewotICAgICAgICBpZiAoIXNpemUpCi0g
ICAgICAgICAgICBzaXplID0gbGVuOwotICAgICAgICBwYXRoID0gKGNoYXIqKW1hbGxvYyhzaXpl
KTsKLSAgICAgICAgaWYgKCFwYXRoKSB7Ci0gICAgICAgICAgICBlcnJvciA9IEVOT01FTTsKLSAg
ICAgICAgICAgIGdvdG8gb3V0X2Vycm5vOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAg
ICAgaWYgKCFzaXplKSB7Ci0gICAgICAgICAgICBlcnJvciA9IEVJTlZBTDsKLSAgICAgICAgICAg
IGdvdG8gb3V0X2Vycm5vOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKHNpemUgPCBsZW4p
IHsKLSAgICAgICAgZXJyb3IgPSBFUkFOR0U7Ci0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwotICAg
IH0KLQotICAgIG1lbWNweShwYXRoLCB0LT50X2N3ZCwgbGVuKTsKLSAgICB0cmFjZV92ZnNfZ2V0
Y3dkX3JldChwYXRoKTsKLSAgICByZXR1cm4gcGF0aDsKLQotICAgIG91dF9lcnJubzoKLSAgICB0
cmFjZV92ZnNfZ2V0Y3dkX2VycihlcnJvcik7Ci0gICAgZXJybm8gPSBlcnJvcjsKLSAgICByZXR1
cm4gbnVsbHB0cjsKKwl0cmFjZV92ZnNfZ2V0Y3dkKHBhdGgsIHNpemUpOworCXN0cnVjdCB0YXNr
ICp0ID0gbWFpbl90YXNrOworCWludCBsZW4gPSBzdHJsZW4odC0+dF9jd2QpICsgMTsKKwlpbnQg
ZXJyb3I7CisKKwlpZiAoIXBhdGgpIHsKKwkJaWYgKCFzaXplKQorCQkJc2l6ZSA9IGxlbjsKKwkJ
cGF0aCA9IChjaGFyKiltYWxsb2Moc2l6ZSk7CisJCWlmICghcGF0aCkgeworCQkJZXJyb3IgPSBF
Tk9NRU07CisJCQlnb3RvIG91dF9lcnJubzsKKwkJfQorCX0gZWxzZSB7CisJCWlmICghc2l6ZSkg
eworCQkJZXJyb3IgPSBFSU5WQUw7CisJCQlnb3RvIG91dF9lcnJubzsKKwkJfQorCX0KKworCWlm
IChzaXplIDwgbGVuKSB7CisJCWVycm9yID0gRVJBTkdFOworCQlnb3RvIG91dF9lcnJubzsKKwl9
CisKKwltZW1jcHkocGF0aCwgdC0+dF9jd2QsIGxlbik7CisJdHJhY2VfdmZzX2dldGN3ZF9yZXQo
cGF0aCk7CisJcmV0dXJuIHBhdGg7CisKKwlvdXRfZXJybm86CisJdHJhY2VfdmZzX2dldGN3ZF9l
cnIoZXJyb3IpOworCWVycm5vID0gZXJyb3I7CisJcmV0dXJuIG51bGxwdHI7CiB9CiAKIFRSQUNF
UE9JTlQodHJhY2VfdmZzX2R1cCwgIiVkIiwgaW50KTsKQEAgLTEzNDQsMjkgKzEzNDQsMjkgQEAg
VFJBQ0VQT0lOVCh0cmFjZV92ZnNfZHVwX2VyciwgIiVkIiwgaW50KTsKICAqLwogaW50IGR1cChp
bnQgb2xkZmQpCiB7Ci0gICAgc3RydWN0IGZpbGUgKmZwOwotICAgIGludCBuZXdmZDsKLSAgICBp
bnQgZXJyb3I7CisJc3RydWN0IGZpbGUgKmZwOworCWludCBuZXdmZDsKKwlpbnQgZXJyb3I7CiAK
LSAgICB0cmFjZV92ZnNfZHVwKG9sZGZkKTsKLSAgICBlcnJvciA9IGZnZXQob2xkZmQsICZmcCk7
Ci0gICAgaWYgKGVycm9yKQotICAgICAgICBnb3RvIG91dF9lcnJubzsKKwl0cmFjZV92ZnNfZHVw
KG9sZGZkKTsKKwllcnJvciA9IGZnZXQob2xkZmQsICZmcCk7CisJaWYgKGVycm9yKQorCQlnb3Rv
IG91dF9lcnJubzsKIAotICAgIGVycm9yID0gZmRhbGxvYyhmcCwgJm5ld2ZkKTsKLSAgICBpZiAo
ZXJyb3IpCi0gICAgICAgIGdvdG8gb3V0X2Zkcm9wOworCWVycm9yID0gZmRhbGxvYyhmcCwgJm5l
d2ZkKTsKKwlpZiAoZXJyb3IpCisJCWdvdG8gb3V0X2Zkcm9wOwogCi0gICAgZmRyb3AoZnApOwot
ICAgIHRyYWNlX3Zmc19kdXBfcmV0KG5ld2ZkKTsKLSAgICByZXR1cm4gbmV3ZmQ7CisJZmRyb3Ao
ZnApOworCXRyYWNlX3Zmc19kdXBfcmV0KG5ld2ZkKTsKKwlyZXR1cm4gbmV3ZmQ7CiAKLSAgICBv
dXRfZmRyb3A6Ci0gICAgZmRyb3AoZnApOwotICAgIG91dF9lcnJubzoKLSAgICB0cmFjZV92ZnNf
ZHVwX2VycihlcnJvcik7Ci0gICAgZXJybm8gPSBlcnJvcjsKLSAgICByZXR1cm4gLTE7CisJb3V0
X2Zkcm9wOgorCWZkcm9wKGZwKTsKKwlvdXRfZXJybm86CisJdHJhY2VfdmZzX2R1cF9lcnIoZXJy
b3IpOworCWVycm5vID0gZXJyb3I7CisJcmV0dXJuIC0xOwogfQogCiBUUkFDRVBPSU5UKHRyYWNl
X3Zmc19kdXAzLCAiJWQgJWQgMHgleCIsIGludCwgaW50LCBpbnQpOwpAQCAtMTM3Nyw1MCArMTM3
Nyw1MCBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19kdXAzX2VyciwgIiVkIiwgaW50KTsKICAqLwog
aW50IGR1cDMoaW50IG9sZGZkLCBpbnQgbmV3ZmQsIGludCBmbGFncykKIHsKLSAgICBzdHJ1Y3Qg
ZmlsZSAqZnA7Ci0gICAgaW50IGVycm9yOwotCi0gICAgdHJhY2VfdmZzX2R1cDMob2xkZmQsIG5l
d2ZkLCBmbGFncyk7Ci0gICAgLyoKLSAgICAgKiBEb24ndCBhbGxvdyBhbnkgYXJndW1lbnQgYnV0
IE9fQ0xPRVhFQy4gIEJ1dCB3ZSBldmVuIGlnbm9yZQotICAgICAqIHRoYXQgYXMgd2UgZG9uJ3Qg
c3VwcG9ydCBleGVjKCkgYW5kIHRodXMgZG9uJ3QgY2FyZS4KLSAgICAgKi8KLSAgICBpZiAoKGZs
YWdzICYgfk9fQ0xPRVhFQykgIT0gMCkgewotICAgICAgICBlcnJvciA9IEVJTlZBTDsKLSAgICAg
ICAgZ290byBvdXRfZXJybm87Ci0gICAgfQorCXN0cnVjdCBmaWxlICpmcDsKKwlpbnQgZXJyb3I7
CisKKwl0cmFjZV92ZnNfZHVwMyhvbGRmZCwgbmV3ZmQsIGZsYWdzKTsKKwkvKgorCSAqIERvbid0
IGFsbG93IGFueSBhcmd1bWVudCBidXQgT19DTE9FWEVDLiAgQnV0IHdlIGV2ZW4gaWdub3JlCisJ
ICogdGhhdCBhcyB3ZSBkb24ndCBzdXBwb3J0IGV4ZWMoKSBhbmQgdGh1cyBkb24ndCBjYXJlLgor
CSAqLworCWlmICgoZmxhZ3MgJiB+T19DTE9FWEVDKSAhPSAwKSB7CisJCWVycm9yID0gRUlOVkFM
OworCQlnb3RvIG91dF9lcnJubzsKKwl9CiAKLSAgICBpZiAob2xkZmQgPT0gbmV3ZmQpIHsKLSAg
ICAgICAgZXJyb3IgPSBFSU5WQUw7Ci0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwotICAgIH0KKwlp
ZiAob2xkZmQgPT0gbmV3ZmQpIHsKKwkJZXJyb3IgPSBFSU5WQUw7CisJCWdvdG8gb3V0X2Vycm5v
OworCX0KIAotICAgIGVycm9yID0gZmdldChvbGRmZCwgJmZwKTsKLSAgICBpZiAoZXJyb3IpCi0g
ICAgICAgIGdvdG8gb3V0X2Vycm5vOworCWVycm9yID0gZmdldChvbGRmZCwgJmZwKTsKKwlpZiAo
ZXJyb3IpCisJCWdvdG8gb3V0X2Vycm5vOwogCi0gICAgZXJyb3IgPSBmZHNldChuZXdmZCwgZnAp
OwotICAgIGlmIChlcnJvcikgewotICAgICAgICBmZHJvcChmcCk7Ci0gICAgICAgIGdvdG8gb3V0
X2Vycm5vOwotICAgIH0KKwllcnJvciA9IGZkc2V0KG5ld2ZkLCBmcCk7CisJaWYgKGVycm9yKSB7
CisJCWZkcm9wKGZwKTsKKwkJZ290byBvdXRfZXJybm87CisJfQogCi0gICAgZmRyb3AoZnApOwot
ICAgIHRyYWNlX3Zmc19kdXAzX3JldChuZXdmZCk7Ci0gICAgcmV0dXJuIG5ld2ZkOworCWZkcm9w
KGZwKTsKKwl0cmFjZV92ZnNfZHVwM19yZXQobmV3ZmQpOworCXJldHVybiBuZXdmZDsKIAotICAg
IG91dF9lcnJubzoKLSAgICB0cmFjZV92ZnNfZHVwM19lcnIoZXJyb3IpOwotICAgIGVycm5vID0g
ZXJyb3I7Ci0gICAgcmV0dXJuIC0xOworCW91dF9lcnJubzoKKwl0cmFjZV92ZnNfZHVwM19lcnIo
ZXJyb3IpOworCWVycm5vID0gZXJyb3I7CisJcmV0dXJuIC0xOwogfQogCiBpbnQgZHVwMihpbnQg
b2xkZmQsIGludCBuZXdmZCkKIHsKLSAgICBpZiAob2xkZmQgPT0gbmV3ZmQpCi0gICAgICAgIHJl
dHVybiBuZXdmZDsKKwlpZiAob2xkZmQgPT0gbmV3ZmQpCisJCXJldHVybiBuZXdmZDsKIAotICAg
IHJldHVybiBkdXAzKG9sZGZkLCBuZXdmZCwgMCk7CisJcmV0dXJuIGR1cDMob2xkZmQsIG5ld2Zk
LCAwKTsKIH0KIAogLyoKQEAgLTE0MzUsODMgKzE0MzUsODMgQEAgVFJBQ0VQT0lOVCh0cmFjZV92
ZnNfZmNudGxfZXJyLCAiJWQiLCBpbnQpOwogZXh0ZXJuICJDIgogaW50IGZjbnRsKGludCBmZCwg
aW50IGNtZCwgaW50IGFyZykKIHsKLSAgICBzdHJ1Y3QgZmlsZSAqZnA7Ci0gICAgaW50IHJldCA9
IDAsIGVycm9yOwotICAgIGludCB0bXA7Ci0KLSAgICB0cmFjZV92ZnNfZmNudGwoZmQsIGNtZCwg
YXJnKTsKLSAgICBlcnJvciA9IGZnZXQoZmQsICZmcCk7Ci0gICAgaWYgKGVycm9yKQotICAgICAg
ICBnb3RvIG91dF9lcnJubzsKLQotICAgIC8vIEFuIGltcG9ydGFudCBub3RlIGFib3V0IG91ciBo
YW5kbGluZyBvZiBGRF9DTE9FWEVDIC8gT19DTE9FWEVDOgotICAgIC8vIGNsb3NlLW9uLWV4ZWMg
c2hvdWxkbid0IGhhdmUgYmVlbiBhIGZpbGUgZmxhZyAoZnAtPmZfZmxhZ3MpIC0gaXQgaXMgYQot
ICAgIC8vIGZpbGUgZGVzY3JpcHRvciBmbGFnLCBtZWFuaW5nIHRoYXQgdGhhdCB0d28gZHVwKCll
ZCBmaWxlIGRlc2NyaXB0b3JzCi0gICAgLy8gY291bGQgaGF2ZSBkaWZmZXJlbnQgdmFsdWVzIGZv
ciBGRF9DTE9FWEVDLiBPdXIgY3VycmVudCBpbXBsZW1lbnRhdGlvbgotICAgIC8vICp3cm9uZ2x5
KiBtYWtlcyBjbG9zZS1vbi1leGVjIGFuIGZfZmxhZyAodXNpbmcgdGhlIGJpdCBPX0NMT0VYRUMp
LgotICAgIC8vIFRoZXJlIGlzIGxpdHRsZSBwcmFjdGljYWwgZGlmZmVyZW5jZSwgdGhvdWdoLCBi
ZWNhdXNlIHRoaXMgZmxhZyBpcwotICAgIC8vIGlnbm9yZWQgaW4gT1N2IGFueXdheSwgYXMgaXQg
ZG9lc24ndCBzdXBwb3J0IGV4ZWMoKS4KLSAgICBzd2l0Y2ggKGNtZCkgewotICAgIGNhc2UgRl9E
VVBGRDoKLSAgICAgICAgZXJyb3IgPSBfZmRhbGxvYyhmcCwgJnJldCwgYXJnKTsKLSAgICAgICAg
aWYgKGVycm9yKQotICAgICAgICAgICAgZ290byBvdXRfZXJybm87Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgRl9HRVRGRDoKLSAgICAgICAgcmV0ID0gKGZwLT5mX2ZsYWdzICYgT19DTE9FWEVD
KSA/IEZEX0NMT0VYRUMgOiAwOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZfU0VURkQ6Ci0g
ICAgICAgIEZEX0xPQ0soZnApOwotICAgICAgICBmcC0+Zl9mbGFncyA9IChmcC0+Zl9mbGFncyAm
IH5PX0NMT0VYRUMpIHwKLSAgICAgICAgICAgICAgICAoKGFyZyAmIEZEX0NMT0VYRUMpID8gT19D
TE9FWEVDIDogMCk7Ci0gICAgICAgIEZEX1VOTE9DSyhmcCk7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgRl9HRVRGTDoKLSAgICAgICAgLy8gQXMgZXhwbGFpbmVkIGFib3ZlLCB0aGUgT19DTE9F
WEVDIHNob3VsZCBoYXZlIGJlZW4gaW4gZl9mbGFncywKLSAgICAgICAgLy8gYW5kIHNob3VsZG4n
dCBiZSByZXR1cm5lZC4gTGludXggYWx3YXlzIHJldHVybnMgMDEwMDAwMCAoInRoZQotICAgICAg
ICAvLyBmbGFnIGZvcm1lcmx5IGtub3duIGFzIE9fTEFSR0VGSUxFKSBzbyBsZXQncyBkbyBpdCB0
b28uCi0gICAgICAgIHJldCA9IChvZmxhZ3MoZnAtPmZfZmxhZ3MpICYgfk9fQ0xPRVhFQykgfCAw
MTAwMDAwOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZfU0VURkw6Ci0gICAgICAgIEZEX0xP
Q0soZnApOwotICAgICAgICBmcC0+Zl9mbGFncyA9IGZmbGFncygob2ZsYWdzKGZwLT5mX2ZsYWdz
KSAmIH5TRVRGTCkgfAotICAgICAgICAgICAgICAgIChhcmcgJiBTRVRGTCkpOwotICAgICAgICBG
RF9VTkxPQ0soZnApOwotCi0gICAgICAgIC8qIFN5bmMgbm9uYmxvY2tpbmcvYXN5bmMgc3RhdGUg
d2l0aCBmaWxlIGZsYWdzICovCi0gICAgICAgIHRtcCA9IGZwLT5mX2ZsYWdzICYgRk5PTkJMT0NL
OwotICAgICAgICBmcC0+aW9jdGwoRklPTkJJTywgJnRtcCk7Ci0gICAgICAgIHRtcCA9IGZwLT5m
X2ZsYWdzICYgRkFTWU5DOwotICAgICAgICBmcC0+aW9jdGwoRklPQVNZTkMsICZ0bXApOwotCi0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgRl9TRVRMSzoKLSAgICAgICAgV0FSTl9PTkNFKCJmY250
bChGX1NFVExLKSBzdHViYmVkXG4iKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGX0dFVExL
OgotICAgICAgICBXQVJOX09OQ0UoImZjbnRsKEZfR0VUTEspIHN0dWJiZWRcbiIpOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEZfU0VUTEtXOgotICAgICAgICBXQVJOX09OQ0UoImZjbnRsKEZf
U0VUTEtXKSBzdHViYmVkXG4iKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGX1NFVE9XTjoK
LSAgICAgICAgV0FSTl9PTkNFKCJmY250bChGX1NFVE9XTikgc3R1YmJlZFxuIik7Ci0gICAgICAg
IGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIGtwcmludGYoInVuc3VwcG9ydGVkIGZjbnRs
IGNtZCAweCV4XG4iLCBjbWQpOwotICAgICAgICBlcnJvciA9IEVJTlZBTDsKLSAgICB9Ci0KLSAg
ICBmZHJvcChmcCk7Ci0gICAgaWYgKGVycm9yKQotICAgICAgICBnb3RvIG91dF9lcnJubzsKLSAg
ICB0cmFjZV92ZnNfZmNudGxfcmV0KHJldCk7Ci0gICAgcmV0dXJuIHJldDsKLQotICAgIG91dF9l
cnJubzoKLSAgICB0cmFjZV92ZnNfZmNudGxfZXJyKGVycm9yKTsKLSAgICBlcnJubyA9IGVycm9y
OwotICAgIHJldHVybiAtMTsKKwlzdHJ1Y3QgZmlsZSAqZnA7CisJaW50IHJldCA9IDAsIGVycm9y
OworCWludCB0bXA7CisKKwl0cmFjZV92ZnNfZmNudGwoZmQsIGNtZCwgYXJnKTsKKwllcnJvciA9
IGZnZXQoZmQsICZmcCk7CisJaWYgKGVycm9yKQorCQlnb3RvIG91dF9lcnJubzsKKworCS8vIEFu
IGltcG9ydGFudCBub3RlIGFib3V0IG91ciBoYW5kbGluZyBvZiBGRF9DTE9FWEVDIC8gT19DTE9F
WEVDOgorCS8vIGNsb3NlLW9uLWV4ZWMgc2hvdWxkbid0IGhhdmUgYmVlbiBhIGZpbGUgZmxhZyAo
ZnAtPmZfZmxhZ3MpIC0gaXQgaXMgYQorCS8vIGZpbGUgZGVzY3JpcHRvciBmbGFnLCBtZWFuaW5n
IHRoYXQgdGhhdCB0d28gZHVwKCllZCBmaWxlIGRlc2NyaXB0b3JzCisJLy8gY291bGQgaGF2ZSBk
aWZmZXJlbnQgdmFsdWVzIGZvciBGRF9DTE9FWEVDLiBPdXIgY3VycmVudCBpbXBsZW1lbnRhdGlv
bgorCS8vICp3cm9uZ2x5KiBtYWtlcyBjbG9zZS1vbi1leGVjIGFuIGZfZmxhZyAodXNpbmcgdGhl
IGJpdCBPX0NMT0VYRUMpLgorCS8vIFRoZXJlIGlzIGxpdHRsZSBwcmFjdGljYWwgZGlmZmVyZW5j
ZSwgdGhvdWdoLCBiZWNhdXNlIHRoaXMgZmxhZyBpcworCS8vIGlnbm9yZWQgaW4gT1N2IGFueXdh
eSwgYXMgaXQgZG9lc24ndCBzdXBwb3J0IGV4ZWMoKS4KKwlzd2l0Y2ggKGNtZCkgeworCWNhc2Ug
Rl9EVVBGRDoKKwkJZXJyb3IgPSBfZmRhbGxvYyhmcCwgJnJldCwgYXJnKTsKKwkJaWYgKGVycm9y
KQorCQkJZ290byBvdXRfZXJybm87CisJCWJyZWFrOworCWNhc2UgRl9HRVRGRDoKKwkJcmV0ID0g
KGZwLT5mX2ZsYWdzICYgT19DTE9FWEVDKSA/IEZEX0NMT0VYRUMgOiAwOworCQlicmVhazsKKwlj
YXNlIEZfU0VURkQ6CisJCUZEX0xPQ0soZnApOworCQlmcC0+Zl9mbGFncyA9IChmcC0+Zl9mbGFn
cyAmIH5PX0NMT0VYRUMpIHwKKwkJCQkoKGFyZyAmIEZEX0NMT0VYRUMpID8gT19DTE9FWEVDIDog
MCk7CisJCUZEX1VOTE9DSyhmcCk7CisJCWJyZWFrOworCWNhc2UgRl9HRVRGTDoKKwkJLy8gQXMg
ZXhwbGFpbmVkIGFib3ZlLCB0aGUgT19DTE9FWEVDIHNob3VsZCBoYXZlIGJlZW4gaW4gZl9mbGFn
cywKKwkJLy8gYW5kIHNob3VsZG4ndCBiZSByZXR1cm5lZC4gTGludXggYWx3YXlzIHJldHVybnMg
MDEwMDAwMCAoInRoZQorCQkvLyBmbGFnIGZvcm1lcmx5IGtub3duIGFzIE9fTEFSR0VGSUxFKSBz
byBsZXQncyBkbyBpdCB0b28uCisJCXJldCA9IChvZmxhZ3MoZnAtPmZfZmxhZ3MpICYgfk9fQ0xP
RVhFQykgfCAwMTAwMDAwOworCQlicmVhazsKKwljYXNlIEZfU0VURkw6CisJCUZEX0xPQ0soZnAp
OworCQlmcC0+Zl9mbGFncyA9IGZmbGFncygob2ZsYWdzKGZwLT5mX2ZsYWdzKSAmIH5TRVRGTCkg
fAorCQkJCShhcmcgJiBTRVRGTCkpOworCQlGRF9VTkxPQ0soZnApOworCisJCS8qIFN5bmMgbm9u
YmxvY2tpbmcvYXN5bmMgc3RhdGUgd2l0aCBmaWxlIGZsYWdzICovCisJCXRtcCA9IGZwLT5mX2Zs
YWdzICYgRk5PTkJMT0NLOworCQlmcC0+aW9jdGwoRklPTkJJTywgJnRtcCk7CisJCXRtcCA9IGZw
LT5mX2ZsYWdzICYgRkFTWU5DOworCQlmcC0+aW9jdGwoRklPQVNZTkMsICZ0bXApOworCisJCWJy
ZWFrOworCWNhc2UgRl9TRVRMSzoKKwkJV0FSTl9PTkNFKCJmY250bChGX1NFVExLKSBzdHViYmVk
XG4iKTsKKwkJYnJlYWs7CisJY2FzZSBGX0dFVExLOgorCQlXQVJOX09OQ0UoImZjbnRsKEZfR0VU
TEspIHN0dWJiZWRcbiIpOworCQlicmVhazsKKwljYXNlIEZfU0VUTEtXOgorCQlXQVJOX09OQ0Uo
ImZjbnRsKEZfU0VUTEtXKSBzdHViYmVkXG4iKTsKKwkJYnJlYWs7CisJY2FzZSBGX1NFVE9XTjoK
KwkJV0FSTl9PTkNFKCJmY250bChGX1NFVE9XTikgc3R1YmJlZFxuIik7CisJCWJyZWFrOworCWRl
ZmF1bHQ6CisJCWtwcmludGYoInVuc3VwcG9ydGVkIGZjbnRsIGNtZCAweCV4XG4iLCBjbWQpOwor
CQllcnJvciA9IEVJTlZBTDsKKwl9CisKKwlmZHJvcChmcCk7CisJaWYgKGVycm9yKQorCQlnb3Rv
IG91dF9lcnJubzsKKwl0cmFjZV92ZnNfZmNudGxfcmV0KHJldCk7CisJcmV0dXJuIHJldDsKKwor
CW91dF9lcnJubzoKKwl0cmFjZV92ZnNfZmNudGxfZXJyKGVycm9yKTsKKwllcnJubyA9IGVycm9y
OworCXJldHVybiAtMTsKIH0KIAogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfYWNjZXNzLCAiXCIlc1wi
IDAlMG8iLCBjb25zdCBjaGFyKiwgaW50KTsKQEAgLTE1MjMsNzIgKzE1MjMsNzIgQEAgVFJBQ0VQ
T0lOVCh0cmFjZV92ZnNfYWNjZXNzX2VyciwgIiVkIiwgaW50KTsKICAqLwogaW50IGFjY2Vzcyhj
b25zdCBjaGFyICpwYXRobmFtZSwgaW50IG1vZGUpCiB7Ci0gICAgdHJhY2VfdmZzX2FjY2Vzcyhw
YXRobmFtZSwgbW9kZSk7Ci0gICAgc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7Ci0gICAgY2hh
ciBwYXRoW1BBVEhfTUFYXTsKLSAgICBpbnQgYWNjLCBlcnJvciA9IDA7CisJdHJhY2VfdmZzX2Fj
Y2VzcyhwYXRobmFtZSwgbW9kZSk7CisJc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7CisJY2hh
ciBwYXRoW1BBVEhfTUFYXTsKKwlpbnQgYWNjLCBlcnJvciA9IDA7CiAKLSAgICBhY2MgPSAwOwot
ICAgIGlmIChtb2RlICYgUl9PSykKLSAgICAgICAgYWNjIHw9IFZSRUFEOwotICAgIGlmIChtb2Rl
ICYgV19PSykKLSAgICAgICAgYWNjIHw9IFZXUklURTsKKwlhY2MgPSAwOworCWlmIChtb2RlICYg
Ul9PSykKKwkJYWNjIHw9IFZSRUFEOworCWlmIChtb2RlICYgV19PSykKKwkJYWNjIHw9IFZXUklU
RTsKIAotICAgIGlmICgoZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5hbWUsIGFjYywgcGF0aCkp
ICE9IDApCi0gICAgICAgIGdvdG8gb3V0X2Vycm5vOworCWlmICgoZXJyb3IgPSB0YXNrX2NvbnYo
dCwgcGF0aG5hbWUsIGFjYywgcGF0aCkpICE9IDApCisJCWdvdG8gb3V0X2Vycm5vOwogCi0gICAg
ZXJyb3IgPSBzeXNfYWNjZXNzKHBhdGgsIG1vZGUpOwotICAgIGlmIChlcnJvcikKLSAgICAgICAg
Z290byBvdXRfZXJybm87Ci0gICAgdHJhY2VfdmZzX2FjY2Vzc19yZXQoKTsKLSAgICByZXR1cm4g
MDsKLSAgICBvdXRfZXJybm86Ci0gICAgZXJybm8gPSBlcnJvcjsKLSAgICB0cmFjZV92ZnNfYWNj
ZXNzX2VycihlcnJvcik7Ci0gICAgcmV0dXJuIC0xOworCWVycm9yID0gc3lzX2FjY2VzcyhwYXRo
LCBtb2RlKTsKKwlpZiAoZXJyb3IpCisJCWdvdG8gb3V0X2Vycm5vOworCXRyYWNlX3Zmc19hY2Nl
c3NfcmV0KCk7CisJcmV0dXJuIDA7CisJb3V0X2Vycm5vOgorCWVycm5vID0gZXJyb3I7CisJdHJh
Y2VfdmZzX2FjY2Vzc19lcnIoZXJyb3IpOworCXJldHVybiAtMTsKIH0KIAogaW50IGZhY2Nlc3Nh
dChpbnQgZGlyZmQsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBpbnQgbW9kZSwgaW50IGZsYWdzKQog
ewotICAgIGlmIChmbGFncyAmIEFUX1NZTUxJTktfTk9GT0xMT1cpIHsKLSAgICAgICAgVU5JTVBM
RU1FTlRFRCgiZmFjY2Vzc2F0KCkgd2l0aCBBVF9TWU1MSU5LX05PRk9MTE9XIik7Ci0gICAgfQor
CWlmIChmbGFncyAmIEFUX1NZTUxJTktfTk9GT0xMT1cpIHsKKwkJVU5JTVBMRU1FTlRFRCgiZmFj
Y2Vzc2F0KCkgd2l0aCBBVF9TWU1MSU5LX05PRk9MTE9XIik7CisJfQogCi0gICAgaWYgKHBhdGhu
YW1lWzBdID09ICcvJyB8fCBkaXJmZCA9PSBBVF9GRENXRCkgewotICAgICAgICByZXR1cm4gYWNj
ZXNzKHBhdGhuYW1lLCBtb2RlKTsKLSAgICB9CisJaWYgKHBhdGhuYW1lWzBdID09ICcvJyB8fCBk
aXJmZCA9PSBBVF9GRENXRCkgeworCQlyZXR1cm4gYWNjZXNzKHBhdGhuYW1lLCBtb2RlKTsKKwl9
CiAKLSAgICBzdHJ1Y3QgZmlsZSAqZnA7Ci0gICAgaW50IGVycm9yID0gZmdldChkaXJmZCwgJmZw
KTsKLSAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgZXJybm8gPSBlcnJvcjsKLSAgICAgICAgcmV0
dXJuIC0xOwotICAgIH0KKwlzdHJ1Y3QgZmlsZSAqZnA7CisJaW50IGVycm9yID0gZmdldChkaXJm
ZCwgJmZwKTsKKwlpZiAoZXJyb3IpIHsKKwkJZXJybm8gPSBlcnJvcjsKKwkJcmV0dXJuIC0xOwor
CX0KIAotICAgIHN0cnVjdCB2bm9kZSAqdnAgPSBmcC0+Zl9kZW50cnktPmRfdm5vZGU7Ci0gICAg
dm5fbG9jayh2cCk7CisJc3RydWN0IHZub2RlICp2cCA9IGZwLT5mX2RlbnRyeS0+ZF92bm9kZTsK
Kwl2bl9sb2NrKHZwKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxjaGFyIFtdPiB1cCAobmV3IGNo
YXJbUEFUSF9NQVhdKTsKLSAgICBjaGFyICpwID0gdXAuZ2V0KCk7CisJc3RkOjp1bmlxdWVfcHRy
PGNoYXIgW10+IHVwIChuZXcgY2hhcltQQVRIX01BWF0pOworCWNoYXIgKnAgPSB1cC5nZXQoKTsK
IAotICAgIC8qIGJ1aWxkIGFic29sdXRlIHBhdGggKi8KLSAgICBzdHJsY3B5KHAsIGZwLT5mX2Rl
bnRyeS0+ZF9tb3VudC0+bV9wYXRoLCBQQVRIX01BWCk7Ci0gICAgc3RybGNhdChwLCBmcC0+Zl9k
ZW50cnktPmRfcGF0aCwgUEFUSF9NQVgpOwotICAgIHN0cmxjYXQocCwgIi8iLCBQQVRIX01BWCk7
Ci0gICAgc3RybGNhdChwLCBwYXRobmFtZSwgUEFUSF9NQVgpOworCS8qIGJ1aWxkIGFic29sdXRl
IHBhdGggKi8KKwlzdHJsY3B5KHAsIGZwLT5mX2RlbnRyeS0+ZF9tb3VudC0+bV9wYXRoLCBQQVRI
X01BWCk7CisJc3RybGNhdChwLCBmcC0+Zl9kZW50cnktPmRfcGF0aCwgUEFUSF9NQVgpOworCXN0
cmxjYXQocCwgIi8iLCBQQVRIX01BWCk7CisJc3RybGNhdChwLCBwYXRobmFtZSwgUEFUSF9NQVgp
OwogCi0gICAgZXJyb3IgPSBhY2Nlc3MocCwgbW9kZSk7CisJZXJyb3IgPSBhY2Nlc3MocCwgbW9k
ZSk7CiAKLSAgICB2bl91bmxvY2sodnApOwotICAgIGZkcm9wKGZwKTsKKwl2bl91bmxvY2sodnAp
OworCWZkcm9wKGZwKTsKIAotICAgIHJldHVybiBlcnJvcjsKKwlyZXR1cm4gZXJyb3I7CiB9CiAK
IGV4dGVybiAiQyIgCiBpbnQgZXVpZGFjY2Vzcyhjb25zdCBjaGFyICpwYXRobmFtZSwgaW50IG1v
ZGUpCiB7Ci0gICAgcmV0dXJuIGFjY2VzcyhwYXRobmFtZSwgbW9kZSk7CisJcmV0dXJuIGFjY2Vz
cyhwYXRobmFtZSwgbW9kZSk7CiB9CiAKIHdlYWtfYWxpYXMoZXVpZGFjY2VzcyxlYWNjZXNzKTsK
QEAgLTE1OTgsNDIgKzE1OTgsNDIgQEAgc3RhdGljIGludAogZnNfcGlwZShzdHJ1Y3QgdGFzayAq
dCwgc3RydWN0IG1zZyAqbXNnKQogewogI2lmZGVmIENPTkZJR19GSUZPRlMKLSAgICBjaGFyIHBh
dGhbUEFUSF9NQVhdOwotICAgIGZpbGVfdCByZnAsIHdmcDsKLSAgICBpbnQgZXJyb3IsIHJmZCwg
d2ZkOwotCi0gICAgRFBSSU5URihWRlNEQl9DT1JFLCAoImZzX3BpcGVcbiIpKTsKLQotICAgIGlm
ICgocmZkID0gdGFza19uZXdmZCh0KSkgPT0gLTEpCi0gICAgICAgIHJldHVybiBFTUZJTEU7Ci0g
ICAgdC0+dF9vZmlsZVtyZmRdID0gKGZpbGVfdCkxOyAvKiB0ZW1wICovCi0KLSAgICBpZiAoKHdm
ZCA9IHRhc2tfbmV3ZmQodCkpID09IC0xKSB7Ci0gICAgICAgIHQtPnRfb2ZpbGVbcmZkXSA9IG51
bGxwdHI7Ci0gICAgICAgIHJldHVybiBFTUZJTEU7Ci0gICAgfQotICAgIHNwcmludGYocGF0aCwg
Ii9tbnQvZmlmby9waXBlLSV4LSVkIiwgKHVfaW50KXQtPnRfdGFza2lkLCByZmQpOwotCi0gICAg
aWYgKChlcnJvciA9IHN5c19ta25vZChwYXRoLCBTX0lGSUZPKSkgIT0gMCkKLSAgICAgICAgZ290
byBvdXQ7Ci0gICAgaWYgKChlcnJvciA9IHN5c19vcGVuKHBhdGgsIE9fUkRPTkxZIHwgT19OT05C
TE9DSywgMCwgJnJmcCkpICE9IDApIHsKLSAgICAgICAgZ290byBvdXQ7Ci0gICAgfQotICAgIGlm
ICgoZXJyb3IgPSBzeXNfb3BlbihwYXRoLCBPX1dST05MWSB8IE9fTk9OQkxPQ0ssIDAsICZ3ZnAp
KSAhPSAwKSB7Ci0gICAgICAgIGdvdG8gb3V0OwotICAgIH0KLSAgICB0LT50X29maWxlW3JmZF0g
PSByZnA7Ci0gICAgdC0+dF9vZmlsZVt3ZmRdID0gd2ZwOwotICAgIHQtPnRfbm9wZW5zICs9IDI7
Ci0gICAgbXNnLT5kYXRhWzBdID0gcmZkOwotICAgIG1zZy0+ZGF0YVsxXSA9IHdmZDsKLSAgICBy
ZXR1cm4gMDsKLSAgICBvdXQ6Ci0gICAgdC0+dF9vZmlsZVtyZmRdID0gbnVsbHB0cjsKLSAgICB0
LT50X29maWxlW3dmZF0gPSBudWxscHRyOwotICAgIHJldHVybiBlcnJvcjsKKwljaGFyIHBhdGhb
UEFUSF9NQVhdOworCWZpbGVfdCByZnAsIHdmcDsKKwlpbnQgZXJyb3IsIHJmZCwgd2ZkOworCisJ
RFBSSU5URihWRlNEQl9DT1JFLCAoImZzX3BpcGVcbiIpKTsKKworCWlmICgocmZkID0gdGFza19u
ZXdmZCh0KSkgPT0gLTEpCisJCXJldHVybiBFTUZJTEU7CisJdC0+dF9vZmlsZVtyZmRdID0gKGZp
bGVfdCkxOyAvKiB0ZW1wICovCisKKwlpZiAoKHdmZCA9IHRhc2tfbmV3ZmQodCkpID09IC0xKSB7
CisJCXQtPnRfb2ZpbGVbcmZkXSA9IG51bGxwdHI7CisJCXJldHVybiBFTUZJTEU7CisJfQorCXNw
cmludGYocGF0aCwgIi9tbnQvZmlmby9waXBlLSV4LSVkIiwgKHVfaW50KXQtPnRfdGFza2lkLCBy
ZmQpOworCisJaWYgKChlcnJvciA9IHN5c19ta25vZChwYXRoLCBTX0lGSUZPKSkgIT0gMCkKKwkJ
Z290byBvdXQ7CisJaWYgKChlcnJvciA9IHN5c19vcGVuKHBhdGgsIE9fUkRPTkxZIHwgT19OT05C
TE9DSywgMCwgJnJmcCkpICE9IDApIHsKKwkJZ290byBvdXQ7CisJfQorCWlmICgoZXJyb3IgPSBz
eXNfb3BlbihwYXRoLCBPX1dST05MWSB8IE9fTk9OQkxPQ0ssIDAsICZ3ZnApKSAhPSAwKSB7CisJ
CWdvdG8gb3V0OworCX0KKwl0LT50X29maWxlW3JmZF0gPSByZnA7CisJdC0+dF9vZmlsZVt3ZmRd
ID0gd2ZwOworCXQtPnRfbm9wZW5zICs9IDI7CisJbXNnLT5kYXRhWzBdID0gcmZkOworCW1zZy0+
ZGF0YVsxXSA9IHdmZDsKKwlyZXR1cm4gMDsKKwlvdXQ6CisJdC0+dF9vZmlsZVtyZmRdID0gbnVs
bHB0cjsKKwl0LT50X29maWxlW3dmZF0gPSBudWxscHRyOworCXJldHVybiBlcnJvcjsKICNlbHNl
Ci0gICAgcmV0dXJuIEVOT1NZUzsKKwlyZXR1cm4gRU5PU1lTOwogI2VuZGlmCiB9CiAjZW5kaWYK
QEAgLTE2NDcsMjUgKzE2NDcsMjUgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfaXNhdHR5X2Vyciwg
IiVkIiwgaW50KTsKICAqLwogaW50IGlzYXR0eShpbnQgZmQpCiB7Ci0gICAgc3RydWN0IGZpbGUg
KmZwOwotICAgIGludCBpc3R0eSA9IDA7CisJc3RydWN0IGZpbGUgKmZwOworCWludCBpc3R0eSA9
IDA7CiAKLSAgICB0cmFjZV92ZnNfaXNhdHR5KGZkKTsKLSAgICBmaWxlcmVmIGYoZmlsZXJlZl9m
cm9tX2ZkKGZkKSk7Ci0gICAgaWYgKCFmKSB7Ci0gICAgICAgIGVycm5vID0gRUJBREY7Ci0gICAg
ICAgIHRyYWNlX3Zmc19pc2F0dHlfZXJyKGVycm5vKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAg
IH0KKwl0cmFjZV92ZnNfaXNhdHR5KGZkKTsKKwlmaWxlcmVmIGYoZmlsZXJlZl9mcm9tX2ZkKGZk
KSk7CisJaWYgKCFmKSB7CisJCWVycm5vID0gRUJBREY7CisJCXRyYWNlX3Zmc19pc2F0dHlfZXJy
KGVycm5vKTsKKwkJcmV0dXJuIC0xOworCX0KIAotICAgIGZwID0gZi5nZXQoKTsKLSAgICBpZiAo
ZHluYW1pY19jYXN0PHR0eV9maWxlKj4oZnApIHx8Ci0gICAgICAgIChmcC0+Zl9kZW50cnkgJiYg
ZnAtPmZfZGVudHJ5LT5kX3Zub2RlLT52X2ZsYWdzICYgVklTVFRZKSkgewotICAgICAgICBpc3R0
eSA9IDE7Ci0gICAgfQorCWZwID0gZi5nZXQoKTsKKwlpZiAoZHluYW1pY19jYXN0PHR0eV9maWxl
Kj4oZnApIHx8CisJCShmcC0+Zl9kZW50cnkgJiYgZnAtPmZfZGVudHJ5LT5kX3Zub2RlLT52X2Zs
YWdzICYgVklTVFRZKSkgeworCQlpc3R0eSA9IDE7CisJfQogCi0gICAgdHJhY2VfdmZzX2lzYXR0
eV9yZXQoaXN0dHkpOwotICAgIHJldHVybiBpc3R0eTsKKwl0cmFjZV92ZnNfaXNhdHR5X3JldChp
c3R0eSk7CisJcmV0dXJuIGlzdHR5OwogfQogCiBUUkFDRVBPSU5UKHRyYWNlX3Zmc190cnVuY2F0
ZSwgIlwiJXNcIiAweCV4IiwgY29uc3QgY2hhciosIG9mZl90KTsKQEAgLTE2NzQsMjYgKzE2NzQs
MjYgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfdHJ1bmNhdGVfZXJyLCAiJWQiLCBpbnQpOwogCiBp
bnQgdHJ1bmNhdGUoY29uc3QgY2hhciAqcGF0aG5hbWUsIG9mZl90IGxlbmd0aCkKIHsKLSAgICB0
cmFjZV92ZnNfdHJ1bmNhdGUocGF0aG5hbWUsIGxlbmd0aCk7Ci0gICAgc3RydWN0IHRhc2sgKnQg
PSBtYWluX3Rhc2s7Ci0gICAgY2hhciBwYXRoW1BBVEhfTUFYXTsKLSAgICBpbnQgZXJyb3I7CisJ
dHJhY2VfdmZzX3RydW5jYXRlKHBhdGhuYW1lLCBsZW5ndGgpOworCXN0cnVjdCB0YXNrICp0ID0g
bWFpbl90YXNrOworCWNoYXIgcGF0aFtQQVRIX01BWF07CisJaW50IGVycm9yOwogCi0gICAgZXJy
b3IgPSBFTk9FTlQ7Ci0gICAgaWYgKHBhdGhuYW1lID09IG51bGxwdHIpCi0gICAgICAgIGdvdG8g
b3V0X2Vycm5vOwotICAgIGlmICgoZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5hbWUsIFZXUklU
RSwgcGF0aCkpICE9IDApCi0gICAgICAgIGdvdG8gb3V0X2Vycm5vOworCWVycm9yID0gRU5PRU5U
OworCWlmIChwYXRobmFtZSA9PSBudWxscHRyKQorCQlnb3RvIG91dF9lcnJubzsKKwlpZiAoKGVy
cm9yID0gdGFza19jb252KHQsIHBhdGhuYW1lLCBWV1JJVEUsIHBhdGgpKSAhPSAwKQorCQlnb3Rv
IG91dF9lcnJubzsKIAotICAgIGVycm9yID0gc3lzX3RydW5jYXRlKHBhdGgsIGxlbmd0aCk7Ci0g
ICAgaWYgKGVycm9yKQotICAgICAgICBnb3RvIG91dF9lcnJubzsKLSAgICB0cmFjZV92ZnNfdHJ1
bmNhdGVfcmV0KCk7Ci0gICAgcmV0dXJuIDA7Ci0gICAgb3V0X2Vycm5vOgotICAgIGVycm5vID0g
ZXJyb3I7Ci0gICAgdHJhY2VfdmZzX3RydW5jYXRlX2VycihlcnJvcik7Ci0gICAgcmV0dXJuIC0x
OworCWVycm9yID0gc3lzX3RydW5jYXRlKHBhdGgsIGxlbmd0aCk7CisJaWYgKGVycm9yKQorCQln
b3RvIG91dF9lcnJubzsKKwl0cmFjZV92ZnNfdHJ1bmNhdGVfcmV0KCk7CisJcmV0dXJuIDA7CisJ
b3V0X2Vycm5vOgorCWVycm5vID0gZXJyb3I7CisJdHJhY2VfdmZzX3RydW5jYXRlX2VycihlcnJv
cik7CisJcmV0dXJuIC0xOwogfQogCiBMRlM2NCh0cnVuY2F0ZSk7CkBAIC0xNzA0LDU4ICsxNzA0
LDU4IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2Z0cnVuY2F0ZV9lcnIsICIlZCIsIGludCk7CiAK
IGludCBmdHJ1bmNhdGUoaW50IGZkLCBvZmZfdCBsZW5ndGgpCiB7Ci0gICAgdHJhY2VfdmZzX2Z0
cnVuY2F0ZShmZCwgbGVuZ3RoKTsKLSAgICBzdHJ1Y3QgZmlsZSAqZnA7Ci0gICAgaW50IGVycm9y
OworCXRyYWNlX3Zmc19mdHJ1bmNhdGUoZmQsIGxlbmd0aCk7CisJc3RydWN0IGZpbGUgKmZwOwor
CWludCBlcnJvcjsKIAotICAgIGVycm9yID0gZmdldChmZCwgJmZwKTsKLSAgICBpZiAoZXJyb3Ip
Ci0gICAgICAgIGdvdG8gb3V0X2Vycm5vOworCWVycm9yID0gZmdldChmZCwgJmZwKTsKKwlpZiAo
ZXJyb3IpCisJCWdvdG8gb3V0X2Vycm5vOwogCi0gICAgZXJyb3IgPSBzeXNfZnRydW5jYXRlKGZw
LCBsZW5ndGgpOwotICAgIGZkcm9wKGZwKTsKKwllcnJvciA9IHN5c19mdHJ1bmNhdGUoZnAsIGxl
bmd0aCk7CisJZmRyb3AoZnApOwogCi0gICAgaWYgKGVycm9yKQotICAgICAgICBnb3RvIG91dF9l
cnJubzsKLSAgICB0cmFjZV92ZnNfZnRydW5jYXRlX3JldCgpOwotICAgIHJldHVybiAwOworCWlm
IChlcnJvcikKKwkJZ290byBvdXRfZXJybm87CisJdHJhY2VfdmZzX2Z0cnVuY2F0ZV9yZXQoKTsK
KwlyZXR1cm4gMDsKIAotICAgIG91dF9lcnJubzoKLSAgICBlcnJubyA9IGVycm9yOwotICAgIHRy
YWNlX3Zmc19mdHJ1bmNhdGVfZXJyKGVycm9yKTsKLSAgICByZXR1cm4gLTE7CisJb3V0X2Vycm5v
OgorCWVycm5vID0gZXJyb3I7CisJdHJhY2VfdmZzX2Z0cnVuY2F0ZV9lcnIoZXJyb3IpOworCXJl
dHVybiAtMTsKIH0KIAogTEZTNjQoZnRydW5jYXRlKTsKIAogc3NpemVfdCByZWFkbGluayhjb25z
dCBjaGFyICpwYXRobmFtZSwgY2hhciAqYnVmLCBzaXplX3QgYnVmc2l6ZSkKIHsKLSAgICBzdHJ1
Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKLSAgICBjaGFyIHBhdGhbUEFUSF9NQVhdOwotICAgIGlu
dCBlcnJvcjsKLSAgICBzc2l6ZV90IHNpemU7CisJc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7
CisJY2hhciBwYXRoW1BBVEhfTUFYXTsKKwlpbnQgZXJyb3I7CisJc3NpemVfdCBzaXplOwogCi0g
ICAgZXJyb3IgPSAtRUlOVkFMOwotICAgIGlmIChidWZzaXplIDw9IDApCi0gICAgICAgIGdvdG8g
b3V0X2Vycm5vOworCWVycm9yID0gLUVJTlZBTDsKKwlpZiAoYnVmc2l6ZSA8PSAwKQorCQlnb3Rv
IG91dF9lcnJubzsKIAotICAgIGVycm9yID0gRU5PRU5UOwotICAgIGlmIChwYXRobmFtZSA9PSBu
dWxscHRyKQotICAgICAgICBnb3RvIG91dF9lcnJubzsKLSAgICBlcnJvciA9IHRhc2tfY29udih0
LCBwYXRobmFtZSwgVldSSVRFLCBwYXRoKTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIGdvdG8g
b3V0X2Vycm5vOworCWVycm9yID0gRU5PRU5UOworCWlmIChwYXRobmFtZSA9PSBudWxscHRyKQor
CQlnb3RvIG91dF9lcnJubzsKKwllcnJvciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwgVldSSVRF
LCBwYXRoKTsKKwlpZiAoZXJyb3IpCisJCWdvdG8gb3V0X2Vycm5vOwogCi0gICAgc2l6ZSAgPSAw
OwotICAgIGVycm9yID0gc3lzX3JlYWRsaW5rKHBhdGgsIGJ1ZiwgYnVmc2l6ZSwgJnNpemUpOwor
CXNpemUgID0gMDsKKwllcnJvciA9IHN5c19yZWFkbGluayhwYXRoLCBidWYsIGJ1ZnNpemUsICZz
aXplKTsKIAotICAgIGlmIChlcnJvciAhPSAwKQotICAgICAgICBnb3RvIG91dF9lcnJubzsKKwlp
ZiAoZXJyb3IgIT0gMCkKKwkJZ290byBvdXRfZXJybm87CiAKLSAgICByZXR1cm4gc2l6ZTsKLSAg
ICBvdXRfZXJybm86Ci0gICAgZXJybm8gPSBlcnJvcjsKLSAgICByZXR1cm4gLTE7CisJcmV0dXJu
IHNpemU7CisJb3V0X2Vycm5vOgorCWVycm5vID0gZXJyb3I7CisJcmV0dXJuIC0xOwogfQogCiBU
UkFDRVBPSU5UKHRyYWNlX3Zmc19mYWxsb2NhdGUsICIlZCAlZCAweCV4IDB4JXgiLCBpbnQsIGlu
dCwgbG9mZl90LCBsb2ZmX3QpOwpAQCAtMTc2NCwyNiArMTc2NCwyNiBAQCBUUkFDRVBPSU5UKHRy
YWNlX3Zmc19mYWxsb2NhdGVfZXJyLCAiJWQiLCBpbnQpOwogCiBpbnQgZmFsbG9jYXRlKGludCBm
ZCwgaW50IG1vZGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4pCiB7Ci0gICAgc3RydWN0IGZp
bGUgKmZwOwotICAgIGludCBlcnJvcjsKKwlzdHJ1Y3QgZmlsZSAqZnA7CisJaW50IGVycm9yOwog
Ci0gICAgdHJhY2VfdmZzX2ZhbGxvY2F0ZShmZCwgbW9kZSwgb2Zmc2V0LCBsZW4pOwotICAgIGVy
cm9yID0gZmdldChmZCwgJmZwKTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIGdvdG8gb3V0X2Vy
cm5vOworCXRyYWNlX3Zmc19mYWxsb2NhdGUoZmQsIG1vZGUsIG9mZnNldCwgbGVuKTsKKwllcnJv
ciA9IGZnZXQoZmQsICZmcCk7CisJaWYgKGVycm9yKQorCQlnb3RvIG91dF9lcnJubzsKIAotICAg
IGVycm9yID0gc3lzX2ZhbGxvY2F0ZShmcCwgbW9kZSwgb2Zmc2V0LCBsZW4pOwotICAgIGZkcm9w
KGZwKTsKKwllcnJvciA9IHN5c19mYWxsb2NhdGUoZnAsIG1vZGUsIG9mZnNldCwgbGVuKTsKKwlm
ZHJvcChmcCk7CiAKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwotICAg
IHRyYWNlX3Zmc19mYWxsb2NhdGVfcmV0KCk7Ci0gICAgcmV0dXJuIDA7CisJaWYgKGVycm9yKQor
CQlnb3RvIG91dF9lcnJubzsKKwl0cmFjZV92ZnNfZmFsbG9jYXRlX3JldCgpOworCXJldHVybiAw
OwogCi0gICAgb3V0X2Vycm5vOgotICAgIHRyYWNlX3Zmc19mYWxsb2NhdGVfZXJyKGVycm9yKTsK
LSAgICBlcnJubyA9IGVycm9yOwotICAgIHJldHVybiAtMTsKKwlvdXRfZXJybm86CisJdHJhY2Vf
dmZzX2ZhbGxvY2F0ZV9lcnIoZXJyb3IpOworCWVycm5vID0gZXJyb3I7CisJcmV0dXJuIC0xOwog
fQogCiBMRlM2NChmYWxsb2NhdGUpOwpAQCAtMTc5NCw2MCArMTc5NCw2MCBAQCBUUkFDRVBPSU5U
KHRyYWNlX3Zmc191dGltZXNfZXJyLCAiJWQiLCBpbnQpOwogCiBpbnQgZnV0aW1lcyhpbnQgZmQs
IGNvbnN0IHN0cnVjdCB0aW1ldmFsIHRpbWVzWzJdKQogewotICAgIHJldHVybiBmdXRpbWVzYXQo
ZmQsIG51bGxwdHIsIHRpbWVzKTsKKwlyZXR1cm4gZnV0aW1lc2F0KGZkLCBudWxscHRyLCB0aW1l
cyk7CiB9CiAKIGludCBmdXRpbWVzYXQoaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwg
Y29uc3Qgc3RydWN0IHRpbWV2YWwgdGltZXNbMl0pCiB7Ci0gICAgc3RydWN0IHN0YXQgc3Q7Ci0g
ICAgc3RydWN0IGZpbGUgKmZwOwotICAgIGludCBlcnJvcjsKLSAgICBjaGFyICphYnNvbHV0ZV9w
YXRoOwotCi0gICAgaWYgKChwYXRobmFtZSAmJiBwYXRobmFtZVswXSA9PSAnLycpIHx8IGRpcmZk
ID09IEFUX0ZEQ1dEKQotICAgICAgICByZXR1cm4gdXRpbWVzKHBhdGhuYW1lLCB0aW1lcyk7Ci0K
LSAgICAvLyBOb3RlOiBpZiBwYXRobmFtZSA9PSBudWxscHRyLCBmdXRpbWVzYXQgb3BlcmF0ZXMg
b24gZGlyZmQgaXRzZWxmLCBhbmQgaW4KLSAgICAvLyB0aGF0IGNhc2UgaXQgZG9lc24ndCBoYXZl
IHRvIGJlIGEgZGlyZWN0b3J5LgotICAgIGlmIChwYXRobmFtZSkgewotICAgICAgICBlcnJvciA9
IGZzdGF0KGRpcmZkLCAmc3QpOwotICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAgIGVy
cm9yID0gZXJybm87Ci0gICAgICAgICAgICBnb3RvIG91dF9lcnJubzsKLSAgICAgICAgfQotCi0g
ICAgICAgIGlmICghU19JU0RJUihzdC5zdF9tb2RlKSl7Ci0gICAgICAgICAgICBlcnJvciA9IEVO
T1RESVI7Ci0gICAgICAgICAgICBnb3RvIG91dF9lcnJubzsKLSAgICAgICAgfQotICAgIH0KKwlz
dHJ1Y3Qgc3RhdCBzdDsKKwlzdHJ1Y3QgZmlsZSAqZnA7CisJaW50IGVycm9yOworCWNoYXIgKmFi
c29sdXRlX3BhdGg7CisKKwlpZiAoKHBhdGhuYW1lICYmIHBhdGhuYW1lWzBdID09ICcvJykgfHwg
ZGlyZmQgPT0gQVRfRkRDV0QpCisJCXJldHVybiB1dGltZXMocGF0aG5hbWUsIHRpbWVzKTsKKwor
CS8vIE5vdGU6IGlmIHBhdGhuYW1lID09IG51bGxwdHIsIGZ1dGltZXNhdCBvcGVyYXRlcyBvbiBk
aXJmZCBpdHNlbGYsIGFuZCBpbgorCS8vIHRoYXQgY2FzZSBpdCBkb2Vzbid0IGhhdmUgdG8gYmUg
YSBkaXJlY3RvcnkuCisJaWYgKHBhdGhuYW1lKSB7CisJCWVycm9yID0gZnN0YXQoZGlyZmQsICZz
dCk7CisJCWlmIChlcnJvcikgeworCQkJZXJyb3IgPSBlcnJubzsKKwkJCWdvdG8gb3V0X2Vycm5v
OworCQl9CisKKwkJaWYgKCFTX0lTRElSKHN0LnN0X21vZGUpKXsKKwkJCWVycm9yID0gRU5PVERJ
UjsKKwkJCWdvdG8gb3V0X2Vycm5vOworCQl9CisJfQogCi0gICAgZXJyb3IgPSBmZ2V0KGRpcmZk
LCAmZnApOwotICAgIGlmIChlcnJvcikKLSAgICAgICAgZ290byBvdXRfZXJybm87CisJZXJyb3Ig
PSBmZ2V0KGRpcmZkLCAmZnApOworCWlmIChlcnJvcikKKwkJZ290byBvdXRfZXJybm87CiAKLSAg
ICAvKiBidWlsZCBhYnNvbHV0ZSBwYXRoICovCi0gICAgYWJzb2x1dGVfcGF0aCA9IChjaGFyKilt
YWxsb2MoUEFUSF9NQVgpOwotICAgIHN0cmxjcHkoYWJzb2x1dGVfcGF0aCwgZnAtPmZfZGVudHJ5
LT5kX21vdW50LT5tX3BhdGgsIFBBVEhfTUFYKTsKLSAgICBzdHJsY2F0KGFic29sdXRlX3BhdGgs
IGZwLT5mX2RlbnRyeS0+ZF9wYXRoLCBQQVRIX01BWCk7CisJLyogYnVpbGQgYWJzb2x1dGUgcGF0
aCAqLworCWFic29sdXRlX3BhdGggPSAoY2hhciopbWFsbG9jKFBBVEhfTUFYKTsKKwlzdHJsY3B5
KGFic29sdXRlX3BhdGgsIGZwLT5mX2RlbnRyeS0+ZF9tb3VudC0+bV9wYXRoLCBQQVRIX01BWCk7
CisJc3RybGNhdChhYnNvbHV0ZV9wYXRoLCBmcC0+Zl9kZW50cnktPmRfcGF0aCwgUEFUSF9NQVgp
OwogCi0gICAgaWYgKHBhdGhuYW1lKSB7Ci0gICAgICAgIHN0cmxjYXQoYWJzb2x1dGVfcGF0aCwg
Ii8iLCBQQVRIX01BWCk7Ci0gICAgICAgIHN0cmxjYXQoYWJzb2x1dGVfcGF0aCwgcGF0aG5hbWUs
IFBBVEhfTUFYKTsKLSAgICB9CisJaWYgKHBhdGhuYW1lKSB7CisJCXN0cmxjYXQoYWJzb2x1dGVf
cGF0aCwgIi8iLCBQQVRIX01BWCk7CisJCXN0cmxjYXQoYWJzb2x1dGVfcGF0aCwgcGF0aG5hbWUs
IFBBVEhfTUFYKTsKKwl9CiAKLSAgICBlcnJvciA9IHV0aW1lcyhhYnNvbHV0ZV9wYXRoLCB0aW1l
cyk7Ci0gICAgZnJlZShhYnNvbHV0ZV9wYXRoKTsKKwllcnJvciA9IHV0aW1lcyhhYnNvbHV0ZV9w
YXRoLCB0aW1lcyk7CisJZnJlZShhYnNvbHV0ZV9wYXRoKTsKIAotICAgIGZkcm9wKGZwKTsKKwlm
ZHJvcChmcCk7CiAKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwotICAg
IHJldHVybiAwOworCWlmIChlcnJvcikKKwkJZ290byBvdXRfZXJybm87CisJcmV0dXJuIDA7CiAK
LSAgICBvdXRfZXJybm86Ci0gICAgZXJybm8gPSBlcnJvcjsKLSAgICByZXR1cm4gLTE7CisJb3V0
X2Vycm5vOgorCWVycm5vID0gZXJyb3I7CisJcmV0dXJuIC0xOwogfQogCiBUUkFDRVBPSU5UKHRy
YWNlX3Zmc191dGltZW5zYXQsICJcIiVzXCIiLCBjb25zdCBjaGFyKik7CkBAIC0xODU3LDE3ICsx
ODU3LDE3IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX3V0aW1lbnNhdF9lcnIsICIlZCIsIGludCk7
CiBleHRlcm4gIkMiCiBpbnQgdXRpbWVuc2F0KGludCBkaXJmZCwgY29uc3QgY2hhciAqcGF0aG5h
bWUsIGNvbnN0IHN0cnVjdCB0aW1lc3BlYyB0aW1lc1syXSwgaW50IGZsYWdzKQogewotICAgIHRy
YWNlX3Zmc191dGltZW5zYXQocGF0aG5hbWUpOworCXRyYWNlX3Zmc191dGltZW5zYXQocGF0aG5h
bWUpOwogCi0gICAgYXV0byBlcnJvciA9IHN5c191dGltZW5zYXQoZGlyZmQsIHBhdGhuYW1lLCB0
aW1lcywgZmxhZ3MpOwotICAgIGlmIChlcnJvcikgewotICAgICAgICB0cmFjZV92ZnNfdXRpbWVu
c2F0X2VycihlcnJvcik7Ci0gICAgICAgIGVycm5vID0gZXJyb3I7Ci0gICAgICAgIHJldHVybiAt
MTsKLSAgICB9CisJYXV0byBlcnJvciA9IHN5c191dGltZW5zYXQoZGlyZmQsIHBhdGhuYW1lLCB0
aW1lcywgZmxhZ3MpOworCWlmIChlcnJvcikgeworCQl0cmFjZV92ZnNfdXRpbWVuc2F0X2Vycihl
cnJvcik7CisJCWVycm5vID0gZXJyb3I7CisJCXJldHVybiAtMTsKKwl9CiAKLSAgICB0cmFjZV92
ZnNfdXRpbWVuc2F0X3JldCgpOwotICAgIHJldHVybiAwOworCXRyYWNlX3Zmc191dGltZW5zYXRf
cmV0KCk7CisJcmV0dXJuIDA7CiB9CiAKIFRSQUNFUE9JTlQodHJhY2VfdmZzX2Z1dGltZW5zLCAi
JWQiLCBpbnQpOwpAQCAtMTg3Nyw3MyArMTg3Nyw3MyBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19m
dXRpbWVuc19lcnIsICIlZCIsIGludCk7CiBleHRlcm4gIkMiCiBpbnQgZnV0aW1lbnMoaW50IGZk
LCBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgdGltZXNbMl0pCiB7Ci0gICAgdHJhY2VfdmZzX2Z1dGlt
ZW5zKGZkKTsKKwl0cmFjZV92ZnNfZnV0aW1lbnMoZmQpOwogCi0gICAgYXV0byBlcnJvciA9IHN5
c19mdXRpbWVucyhmZCwgdGltZXMpOwotICAgIGlmIChlcnJvcikgewotICAgICAgICB0cmFjZV92
ZnNfZnV0aW1lbnNfZXJyKGVycm9yKTsKLSAgICAgICAgZXJybm8gPSBlcnJvcjsKLSAgICAgICAg
cmV0dXJuIC0xOwotICAgIH0KKwlhdXRvIGVycm9yID0gc3lzX2Z1dGltZW5zKGZkLCB0aW1lcyk7
CisJaWYgKGVycm9yKSB7CisJCXRyYWNlX3Zmc19mdXRpbWVuc19lcnIoZXJyb3IpOworCQllcnJu
byA9IGVycm9yOworCQlyZXR1cm4gLTE7CisJfQogCi0gICAgdHJhY2VfdmZzX2Z1dGltZW5zX3Jl
dCgpOwotICAgIHJldHVybiAwOworCXRyYWNlX3Zmc19mdXRpbWVuc19yZXQoKTsKKwlyZXR1cm4g
MDsKIH0KIAogc3RhdGljIGludCBkb191dGltZXMoY29uc3QgY2hhciAqcGF0aG5hbWUsIGNvbnN0
IHN0cnVjdCB0aW1ldmFsIHRpbWVzWzJdLCBpbnQgZmxhZ3MpCiB7Ci0gICAgc3RydWN0IHRhc2sg
KnQgPSBtYWluX3Rhc2s7Ci0gICAgY2hhciBwYXRoW1BBVEhfTUFYXTsKLSAgICBpbnQgZXJyb3I7
CisJc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7CisJY2hhciBwYXRoW1BBVEhfTUFYXTsKKwlp
bnQgZXJyb3I7CiAKLSAgICB0cmFjZV92ZnNfdXRpbWVzKHBhdGhuYW1lKTsKKwl0cmFjZV92ZnNf
dXRpbWVzKHBhdGhuYW1lKTsKIAotICAgIGVycm9yID0gdGFza19jb252KHQsIHBhdGhuYW1lLCAw
LCBwYXRoKTsKLSAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgdHJhY2VfdmZzX3V0aW1lc19lcnIo
ZXJyb3IpOwotICAgICAgICByZXR1cm4gbGliY19lcnJvcihlcnJvcik7Ci0gICAgfQorCWVycm9y
ID0gdGFza19jb252KHQsIHBhdGhuYW1lLCAwLCBwYXRoKTsKKwlpZiAoZXJyb3IpIHsKKwkJdHJh
Y2VfdmZzX3V0aW1lc19lcnIoZXJyb3IpOworCQlyZXR1cm4gbGliY19lcnJvcihlcnJvcik7CisJ
fQogCi0gICAgZXJyb3IgPSBzeXNfdXRpbWVzKHBhdGgsIHRpbWVzLCBmbGFncyk7Ci0gICAgaWYg
KGVycm9yKSB7Ci0gICAgICAgIHRyYWNlX3Zmc191dGltZXNfZXJyKGVycm9yKTsKLSAgICAgICAg
cmV0dXJuIGxpYmNfZXJyb3IoZXJyb3IpOwotICAgIH0KKwllcnJvciA9IHN5c191dGltZXMocGF0
aCwgdGltZXMsIGZsYWdzKTsKKwlpZiAoZXJyb3IpIHsKKwkJdHJhY2VfdmZzX3V0aW1lc19lcnIo
ZXJyb3IpOworCQlyZXR1cm4gbGliY19lcnJvcihlcnJvcik7CisJfQogCi0gICAgdHJhY2VfdmZz
X3V0aW1lc19yZXQoKTsKLSAgICByZXR1cm4gMDsKKwl0cmFjZV92ZnNfdXRpbWVzX3JldCgpOwor
CXJldHVybiAwOwogfQogCiBleHRlcm4gIkMiCiBpbnQgdXRpbWVzKGNvbnN0IGNoYXIgKnBhdGhu
YW1lLCBjb25zdCBzdHJ1Y3QgdGltZXZhbCB0aW1lc1syXSkKIHsKLSAgICByZXR1cm4gZG9fdXRp
bWVzKHBhdGhuYW1lLCB0aW1lcywgMCk7CisJcmV0dXJuIGRvX3V0aW1lcyhwYXRobmFtZSwgdGlt
ZXMsIDApOwogfQogCiBleHRlcm4gIkMiCiBpbnQgbHV0aW1lcyhjb25zdCBjaGFyICpwYXRobmFt
ZSwgY29uc3Qgc3RydWN0IHRpbWV2YWwgdGltZXNbMl0pCiB7Ci0gICAgcmV0dXJuIGRvX3V0aW1l
cyhwYXRobmFtZSwgdGltZXMsIEFUX1NZTUxJTktfTk9GT0xMT1cpOworCXJldHVybiBkb191dGlt
ZXMocGF0aG5hbWUsIHRpbWVzLCBBVF9TWU1MSU5LX05PRk9MTE9XKTsKIH0KIAogZXh0ZXJuICJD
IgogaW50IHV0aW1lKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBjb25zdCBzdHJ1Y3QgdXRpbWJ1ZiAq
dCkKIHsKLSAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOjpjaHJvbm87Ci0KLSAgICBzdHJ1Y3QgdGlt
ZXZhbCB0aW1lc1syXTsKLSAgICB0aW1lc1swXS50dl91c2VjID0gMDsKLSAgICB0aW1lc1sxXS50
dl91c2VjID0gMDsKLSAgICBpZiAoIXQpIHsKLSAgICAgICAgbG9uZyBpbnQgdHNlYyA9IGR1cmF0
aW9uX2Nhc3Q8c2Vjb25kcz4ob3N2OjpjbG9jazo6d2FsbDo6bm93KCkudGltZV9zaW5jZV9lcG9j
aCgpKS5jb3VudCgpOwotICAgICAgICB0aW1lc1swXS50dl9zZWMgPSB0c2VjOwotICAgICAgICB0
aW1lc1sxXS50dl9zZWMgPSB0c2VjOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHRpbWVzWzBdLnR2
X3NlYyA9IHQtPmFjdGltZTsKLSAgICAgICAgdGltZXNbMV0udHZfc2VjID0gdC0+bW9kdGltZTsK
LSAgICB9CisJdXNpbmcgbmFtZXNwYWNlIHN0ZDo6Y2hyb25vOworCisJc3RydWN0IHRpbWV2YWwg
dGltZXNbMl07CisJdGltZXNbMF0udHZfdXNlYyA9IDA7CisJdGltZXNbMV0udHZfdXNlYyA9IDA7
CisJaWYgKCF0KSB7CisJCWxvbmcgaW50IHRzZWMgPSBkdXJhdGlvbl9jYXN0PHNlY29uZHM+KG9z
djo6Y2xvY2s6OndhbGw6Om5vdygpLnRpbWVfc2luY2VfZXBvY2goKSkuY291bnQoKTsKKwkJdGlt
ZXNbMF0udHZfc2VjID0gdHNlYzsKKwkJdGltZXNbMV0udHZfc2VjID0gdHNlYzsKKwl9IGVsc2Ug
eworCQl0aW1lc1swXS50dl9zZWMgPSB0LT5hY3RpbWU7CisJCXRpbWVzWzFdLnR2X3NlYyA9IHQt
Pm1vZHRpbWU7CisJfQogCi0gICAgcmV0dXJuIHV0aW1lcyhwYXRobmFtZSwgdGltZXMpOworCXJl
dHVybiB1dGltZXMocGF0aG5hbWUsIHRpbWVzKTsKIH0KIAogVFJBQ0VQT0lOVCh0cmFjZV92ZnNf
Y2htb2QsICJcIiVzXCIgMCUwbyIsIGNvbnN0IGNoYXIqLCBtb2RlX3QpOwpAQCAtMTk1MiwyMyAr
MTk1MiwyMyBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19jaG1vZF9lcnIsICIlZCIsIGludCk7CiAK
IGludCBjaG1vZChjb25zdCBjaGFyICpwYXRobmFtZSwgbW9kZV90IG1vZGUpCiB7Ci0gICAgdHJh
Y2VfdmZzX2NobW9kKHBhdGhuYW1lLCBtb2RlKTsKLSAgICBzdHJ1Y3QgdGFzayAqdCA9IG1haW5f
dGFzazsKLSAgICBjaGFyIHBhdGhbUEFUSF9NQVhdOwotICAgIGludCBlcnJvciA9IEVOT0VOVDsK
LSAgICBpZiAocGF0aG5hbWUgPT0gbnVsbHB0cikKLSAgICAgICAgZ290byBvdXRfZXJybm87Ci0g
ICAgaWYgKChlcnJvciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwgVldSSVRFLCBwYXRoKSkgIT0g
MCkKLSAgICAgICAgZ290byBvdXRfZXJybm87Ci0gICAgZXJyb3IgPSBzeXNfY2htb2QocGF0aCwg
bW9kZSAmIEFMTFBFUk1TKTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIGdvdG8gb3V0X2Vycm5v
OwotICAgIHRyYWNlX3Zmc19jaG1vZF9yZXQoKTsKLSAgICByZXR1cm4gMDsKKwl0cmFjZV92ZnNf
Y2htb2QocGF0aG5hbWUsIG1vZGUpOworCXN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOworCWNo
YXIgcGF0aFtQQVRIX01BWF07CisJaW50IGVycm9yID0gRU5PRU5UOworCWlmIChwYXRobmFtZSA9
PSBudWxscHRyKQorCQlnb3RvIG91dF9lcnJubzsKKwlpZiAoKGVycm9yID0gdGFza19jb252KHQs
IHBhdGhuYW1lLCBWV1JJVEUsIHBhdGgpKSAhPSAwKQorCQlnb3RvIG91dF9lcnJubzsKKwllcnJv
ciA9IHN5c19jaG1vZChwYXRoLCBtb2RlICYgQUxMUEVSTVMpOworCWlmIChlcnJvcikKKwkJZ290
byBvdXRfZXJybm87CisJdHJhY2VfdmZzX2NobW9kX3JldCgpOworCXJldHVybiAwOwogb3V0X2Vy
cm5vOgotICAgIHRyYWNlX3Zmc19jaG1vZF9lcnIoZXJyb3IpOwotICAgIGVycm5vID0gZXJyb3I7
Ci0gICAgcmV0dXJuIC0xOworCXRyYWNlX3Zmc19jaG1vZF9lcnIoZXJyb3IpOworCWVycm5vID0g
ZXJyb3I7CisJcmV0dXJuIC0xOwogfQogCiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19mY2htb2QsICJc
IiVkXCIgMCUwbyIsIGludCwgbW9kZV90KTsKQEAgLTE5NzYsMTUgKzE5NzYsMTUgQEAgVFJBQ0VQ
T0lOVCh0cmFjZV92ZnNfZmNobW9kX3JldCwgIiIpOwogCiBpbnQgZmNobW9kKGludCBmZCwgbW9k
ZV90IG1vZGUpCiB7Ci0gICAgdHJhY2VfdmZzX2ZjaG1vZChmZCwgbW9kZSk7Ci0gICAgYXV0byBl
cnJvciA9IHN5c19mY2htb2QoZmQsIG1vZGUgJiBBTExQRVJNUyk7Ci0gICAgdHJhY2VfdmZzX2Zj
aG1vZF9yZXQoKTsKLSAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgZXJybm8gPSBlcnJvcjsKLSAg
ICAgICAgcmV0dXJuIC0xOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0K
Kwl0cmFjZV92ZnNfZmNobW9kKGZkLCBtb2RlKTsKKwlhdXRvIGVycm9yID0gc3lzX2ZjaG1vZChm
ZCwgbW9kZSAmIEFMTFBFUk1TKTsKKwl0cmFjZV92ZnNfZmNobW9kX3JldCgpOworCWlmIChlcnJv
cikgeworCQllcnJubyA9IGVycm9yOworCQlyZXR1cm4gLTE7CisJfSBlbHNlIHsKKwkJcmV0dXJu
IDA7CisJfQogfQogCiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19mY2hvd24sICJcIiVkXCIgJWQgJWQi
LCBpbnQsIHVpZF90LCBnaWRfdCk7CkBAIC0xOTkyLDEwMSArMTk5MiwxMDEgQEAgVFJBQ0VQT0lO
VCh0cmFjZV92ZnNfZmNob3duX3JldCwgIiIpOwogCiBpbnQgZmNob3duKGludCBmZCwgdWlkX3Qg
b3duZXIsIGdpZF90IGdyb3VwKQogewotICAgIHRyYWNlX3Zmc19mY2hvd24oZmQsIG93bmVyLCBn
cm91cCk7Ci0gICAgV0FSTl9TVFVCQkVEKCk7Ci0gICAgdHJhY2VfdmZzX2ZjaG93bl9yZXQoKTsK
LSAgICByZXR1cm4gMDsKKwl0cmFjZV92ZnNfZmNob3duKGZkLCBvd25lciwgZ3JvdXApOworCVdB
Uk5fU1RVQkJFRCgpOworCXRyYWNlX3Zmc19mY2hvd25fcmV0KCk7CisJcmV0dXJuIDA7CiB9CiAK
IGludCBjaG93bihjb25zdCBjaGFyICpwYXRoLCB1aWRfdCBvd25lciwgZ2lkX3QgZ3JvdXApCiB7
Ci0gICAgV0FSTl9TVFVCQkVEKCk7Ci0gICAgcmV0dXJuIDA7CisJV0FSTl9TVFVCQkVEKCk7CisJ
cmV0dXJuIDA7CiB9CiAKIGludCBsY2hvd24oY29uc3QgY2hhciAqcGF0aCwgdWlkX3Qgb3duZXIs
IGdpZF90IGdyb3VwKQogewotICAgIFdBUk5fU1RVQkJFRCgpOwotICAgIHJldHVybiAwOworCVdB
Uk5fU1RVQkJFRCgpOworCXJldHVybiAwOwogfQogCiAKIHNzaXplX3Qgc2VuZGZpbGUoaW50IG91
dF9mZCwgaW50IGluX2ZkLCBvZmZfdCAqX29mZnNldCwgc2l6ZV90IGNvdW50KQogewotICAgIHN0
cnVjdCBmaWxlICppbl9mcDsKLSAgICBzdHJ1Y3QgZmlsZSAqb3V0X2ZwOwotICAgIGZpbGVyZWYg
aW5fZntmaWxlcmVmX2Zyb21fZmQoaW5fZmQpfTsKLSAgICBmaWxlcmVmIG91dF9me2ZpbGVyZWZf
ZnJvbV9mZChvdXRfZmQpfTsKKwlzdHJ1Y3QgZmlsZSAqaW5fZnA7CisJc3RydWN0IGZpbGUgKm91
dF9mcDsKKwlmaWxlcmVmIGluX2Z7ZmlsZXJlZl9mcm9tX2ZkKGluX2ZkKX07CisJZmlsZXJlZiBv
dXRfZntmaWxlcmVmX2Zyb21fZmQob3V0X2ZkKX07CiAKLSAgICBpZiAoIWluX2YgfHwgIW91dF9m
KSB7Ci0gICAgICAgIHJldHVybiBsaWJjX2Vycm9yKEVCQURGKTsKLSAgICB9CisJaWYgKCFpbl9m
IHx8ICFvdXRfZikgeworCQlyZXR1cm4gbGliY19lcnJvcihFQkFERik7CisJfQogCi0gICAgaW5f
ZnAgPSBpbl9mLmdldCgpOwotICAgIG91dF9mcCA9IG91dF9mLmdldCgpOworCWluX2ZwID0gaW5f
Zi5nZXQoKTsKKwlvdXRfZnAgPSBvdXRfZi5nZXQoKTsKIAotICAgIGlmICghaW5fZnAtPmZfZGVu
dHJ5KSB7Ci0gICAgICAgIHJldHVybiBsaWJjX2Vycm9yKEVCQURGKTsKLSAgICB9CisJaWYgKCFp
bl9mcC0+Zl9kZW50cnkpIHsKKwkJcmV0dXJuIGxpYmNfZXJyb3IoRUJBREYpOworCX0KIAotICAg
IGlmICghKGluX2ZwLT5mX2ZsYWdzICYgRlJFQUQpKSB7Ci0gICAgICAgIHJldHVybiBsaWJjX2Vy
cm9yKEVCQURGKTsKLSAgICB9CisJaWYgKCEoaW5fZnAtPmZfZmxhZ3MgJiBGUkVBRCkpIHsKKwkJ
cmV0dXJuIGxpYmNfZXJyb3IoRUJBREYpOworCX0KIAotICAgIGlmIChvdXRfZnAtPmZfdHlwZSAm
IERUWVBFX1ZOT0RFKSB7Ci0gICAgICAgIGlmICghb3V0X2ZwLT5mX2RlbnRyeSkgewotICAgICAg
ICAgICAgcmV0dXJuIGxpYmNfZXJyb3IoRUJBREYpOworCWlmIChvdXRfZnAtPmZfdHlwZSAmIERU
WVBFX1ZOT0RFKSB7CisJCWlmICghb3V0X2ZwLT5mX2RlbnRyeSkgeworCQkJcmV0dXJuIGxpYmNf
ZXJyb3IoRUJBREYpOwogCX0gZWxzZSBpZiAoIShvdXRfZnAtPmZfZmxhZ3MgJiBGV1JJVEUpKSB7
Ci0gICAgICAgICAgICByZXR1cm4gbGliY19lcnJvcihFQkFERik7CisJCQlyZXR1cm4gbGliY19l
cnJvcihFQkFERik7CisJfQogCX0KLSAgICB9CiAKLSAgICBvZmZfdCBvZmZzZXQgOworCW9mZl90
IG9mZnNldCA7CiAKLSAgICBpZiAoX29mZnNldCAhPSBudWxscHRyKSB7Ci0gICAgICAgIG9mZnNl
dCA9ICpfb2Zmc2V0OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8qIGlmIF9vZmZzZXQgaXMgbnVs
bHB0ciwgd2UgbmVlZCB0byByZWFkIGZyb20gdGhlIHByZXNlbnQgcG9zaXRpb24gb2YgaW5fZmQg
Ki8KLSAgICAgICAgb2Zmc2V0ID0gbHNlZWsoaW5fZmQsIDAsIFNFRUtfQ1VSKTsKLSAgICB9CisJ
aWYgKF9vZmZzZXQgIT0gbnVsbHB0cikgeworCQlvZmZzZXQgPSAqX29mZnNldDsKKwl9IGVsc2Ug
eworCQkvKiBpZiBfb2Zmc2V0IGlzIG51bGxwdHIsIHdlIG5lZWQgdG8gcmVhZCBmcm9tIHRoZSBw
cmVzZW50IHBvc2l0aW9uIG9mIGluX2ZkICovCisJCW9mZnNldCA9IGxzZWVrKGluX2ZkLCAwLCBT
RUVLX0NVUik7CisJfQogCi0gICAgLy8gQ29uc3RyYWluIGNvdW50IHRvIHRoZSBleHRlbnQgb2Yg
dGhlIGZpbGUuLi4KLSAgICBzdHJ1Y3Qgc3RhdCBzdDsKLSAgICBpZiAoZnN0YXQoaW5fZmQsICZz
dCkgPCAwKSB7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAo
b2Zmc2V0ID49IHN0LnN0X3NpemUpIHsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9
IGVsc2UgaWYgKChvZmZzZXQgKyBjb3VudCkgPj0gc3Quc3Rfc2l6ZSkgewotICAgICAgICAgICAg
Y291bnQgPSBzdC5zdF9zaXplIC0gb2Zmc2V0OwotICAgICAgICAgICAgaWYgKGNvdW50ID09IDAp
IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
ICAgIH0KKwkvLyBDb25zdHJhaW4gY291bnQgdG8gdGhlIGV4dGVudCBvZiB0aGUgZmlsZS4uLgor
CXN0cnVjdCBzdGF0IHN0OworCWlmIChmc3RhdChpbl9mZCwgJnN0KSA8IDApIHsKKwkJcmV0dXJu
IC0xOworCX0gZWxzZSB7CisJCWlmIChvZmZzZXQgPj0gc3Quc3Rfc2l6ZSkgeworCQkJcmV0dXJu
IDA7CisJCX0gZWxzZSBpZiAoKG9mZnNldCArIGNvdW50KSA+PSBzdC5zdF9zaXplKSB7CisJCQlj
b3VudCA9IHN0LnN0X3NpemUgLSBvZmZzZXQ7CisJCQlpZiAoY291bnQgPT0gMCkgeworCQkJCXJl
dHVybiAwOworCQkJfQorCQl9CisJfQogCi0gICAgc2l6ZV90IGJ5dGVzX3RvX21tYXAgPSBjb3Vu
dCArIChvZmZzZXQgJSBtbXU6OnBhZ2Vfc2l6ZSk7Ci0gICAgb2ZmX3Qgb2Zmc2V0X2Zvcl9tbWFw
ID0gIGFsaWduX2Rvd24ob2Zmc2V0LCAob2ZmX3QpbW11OjpwYWdlX3NpemUpOworCXNpemVfdCBi
eXRlc190b19tbWFwID0gY291bnQgKyAob2Zmc2V0ICUgbW11OjpwYWdlX3NpemUpOworCW9mZl90
IG9mZnNldF9mb3JfbW1hcCA9ICBhbGlnbl9kb3duKG9mZnNldCwgKG9mZl90KW1tdTo6cGFnZV9z
aXplKTsKIAotICAgIGNoYXIgKnNyYyA9IHN0YXRpY19jYXN0PGNoYXIgKj4obW1hcChudWxscHRy
LCBieXRlc190b19tbWFwLCBQUk9UX1JFQUQsIE1BUF9TSEFSRUQsIGluX2ZkLCBvZmZzZXRfZm9y
X21tYXApKTsKKwljaGFyICpzcmMgPSBzdGF0aWNfY2FzdDxjaGFyICo+KG1tYXAobnVsbHB0ciwg
Ynl0ZXNfdG9fbW1hcCwgUFJPVF9SRUFELCBNQVBfU0hBUkVELCBpbl9mZCwgb2Zmc2V0X2Zvcl9t
bWFwKSk7CiAKLSAgICBpZiAoc3JjID09IE1BUF9GQUlMRUQpIHsKLSAgICAgICAgcmV0dXJuIC0x
OwotICAgIH0KKwlpZiAoc3JjID09IE1BUF9GQUlMRUQpIHsKKwkJcmV0dXJuIC0xOworCX0KIAot
ICAgIGF1dG8gcmV0ID0gd3JpdGUob3V0X2ZkLCBzcmMgKyAob2Zmc2V0ICUgUEFHRVNJWkUpLCBj
b3VudCk7CisJYXV0byByZXQgPSB3cml0ZShvdXRfZmQsIHNyYyArIChvZmZzZXQgJSBQQUdFU0la
RSksIGNvdW50KTsKIAotICAgIGlmIChyZXQgPCAwKSB7Ci0gICAgICAgIHJldHVybiBsaWJjX2Vy
cm9yKGVycm5vKTsKLSAgICB9IGVsc2UgaWYoX29mZnNldCA9PSBudWxscHRyKSB7Ci0gICAgICAg
IGxzZWVrKGluX2ZkLCByZXQsIFNFRUtfQ1VSKTsKLSAgICB9IGVsc2UgewotICAgICAgICAqX29m
ZnNldCArPSByZXQ7Ci0gICAgfQorCWlmIChyZXQgPCAwKSB7CisJCXJldHVybiBsaWJjX2Vycm9y
KGVycm5vKTsKKwl9IGVsc2UgaWYoX29mZnNldCA9PSBudWxscHRyKSB7CisJCWxzZWVrKGluX2Zk
LCByZXQsIFNFRUtfQ1VSKTsKKwl9IGVsc2UgeworCQkqX29mZnNldCArPSByZXQ7CisJfQogCi0g
ICAgYXNzZXJ0KG11bm1hcChzcmMsIGNvdW50KSA9PSAwKTsKKwlhc3NlcnQobXVubWFwKHNyYywg
Y291bnQpID09IDApOwogCi0gICAgcmV0dXJuIHJldDsKKwlyZXR1cm4gcmV0OwogfQogCiAjdW5k
ZWYgc2VuZGZpbGU2NApAQCAtMjA5NiwyMCArMjA5NiwyMCBAQCBOT19TWVMoaW50IGZjaG1vZGF0
KGludCBkaXJmZCwgY29uc3QgY2hhciAqcGF0aG5hbWUsIG1vZGVfdCBtb2RlLCBpbnQgZmxhZ3Mp
KTsKIAogbW9kZV90IHVtYXNrKG1vZGVfdCBuZXdtYXNrKQogewotICAgIHJldHVybiBnbG9iYWxf
dW1hc2suZXhjaGFuZ2UobmV3bWFzaywgc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7CisJcmV0
dXJuIGdsb2JhbF91bWFzay5leGNoYW5nZShuZXdtYXNrLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxh
eGVkKTsKIH0KIAogaW50CiBmc19ub29wKHZvaWQpCiB7Ci0gICAgcmV0dXJuIDA7CisJcmV0dXJu
IDA7CiB9CiAKIGludCBjaHJvb3QoY29uc3QgY2hhciAqcGF0aCkKIHsKLSAgICBXQVJOX1NUVUJC
RUQoKTsKLSAgICBlcnJubyA9IEVOT1NZUzsKLSAgICByZXR1cm4gLTE7CisJV0FSTl9TVFVCQkVE
KCk7CisJZXJybm8gPSBFTk9TWVM7CisJcmV0dXJuIC0xOwogfQogCiAvLyB1bnBhY2tfYm9vdGZz
KCkgdW5wYWNrcyBhIGNvbGxlY3Rpb24gb2YgZmlsZXMgc3RvcmVkIGFzIHBhcnQgb2YgdGhlIE9T
dgpAQCAtMjEyMCwxNCArMjEyMCwxNCBAQCBpbnQgY2hyb290KGNvbnN0IGNoYXIgKnBhdGgpCiAj
ZGVmaW5lIEJPT1RGU19QQVRIX01BWCAxMTEKIGVudW0gY2xhc3MgYm9vdGZzX2ZpbGVfdHlwZSA6
IGNoYXIgeyBvdGhlciA9IDAsIHN5bWxpbmsgPSAxIH07CiBzdHJ1Y3QgYm9vdGZzX21ldGFkYXRh
IHsKLSAgICB1aW50NjRfdCBzaXplOwotICAgIHVpbnQ2NF90IG9mZnNldDsKLSAgICAvLyBUaGUg
ZmlsZSdzIHR5cGUuIENhbiBiZSAic3ltbGluayIgb3IgIm90aGVyIi4gQSBkaXJlY3RvcnkgaXMg
YW4gIm90aGVyIgotICAgIC8vIGZpbGUgd2l0aCBpdHMgbmFtZSBlbmRpbmcgd2l0aCBhICIvIiAo
YW5kIG5vIGNvbnRlbnQpLgotICAgIGJvb3Rmc19maWxlX3R5cGUgdHlwZTsKLSAgICAvLyBuYW1l
IG11c3QgZW5kIHdpdGggYSBudWxsLiBGb3Igc3ltbGluayBmaWxlcywgdGhlIGNvbnRlbnQgbXVz
dCBlbmQKLSAgICAvLyB3aXRoIGEgbnVsbCBhcyB3ZWxsLgotICAgIGNoYXIgbmFtZVtCT09URlNf
UEFUSF9NQVhdOworCXVpbnQ2NF90IHNpemU7CisJdWludDY0X3Qgb2Zmc2V0OworCS8vIFRoZSBm
aWxlJ3MgdHlwZS4gQ2FuIGJlICJzeW1saW5rIiBvciAib3RoZXIiLiBBIGRpcmVjdG9yeSBpcyBh
biAib3RoZXIiCisJLy8gZmlsZSB3aXRoIGl0cyBuYW1lIGVuZGluZyB3aXRoIGEgIi8iIChhbmQg
bm8gY29udGVudCkuCisJYm9vdGZzX2ZpbGVfdHlwZSB0eXBlOworCS8vIG5hbWUgbXVzdCBlbmQg
d2l0aCBhIG51bGwuIEZvciBzeW1saW5rIGZpbGVzLCB0aGUgY29udGVudCBtdXN0IGVuZAorCS8v
IHdpdGggYSBudWxsIGFzIHdlbGwuCisJY2hhciBuYW1lW0JPT1RGU19QQVRIX01BWF07CiB9Owog
CiBleHRlcm4gY2hhciBib290ZnNfc3RhcnQ7CkBAIC0yMTM1LDIyNSArMjEzNSwyMjUgQEAgZXh0
ZXJuIGNoYXIgYm9vdGZzX3N0YXJ0OwogaW50IHJhbWZzX3NldF9maWxlX2RhdGEoc3RydWN0IHZu
b2RlICp2cCwgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUpOwogdm9pZCB1bnBhY2tfYm9v
dGZzKHZvaWQpCiB7Ci0gICAgc3RydWN0IGJvb3Rmc19tZXRhZGF0YSAqbWQgPSAoc3RydWN0IGJv
b3Rmc19tZXRhZGF0YSAqKSZib290ZnNfc3RhcnQ7Ci0gICAgaW50IGZkLCBpOwotCi0gICAgZm9y
IChpID0gMDsgbWRbaV0ubmFtZVswXTsgaSsrKSB7Ci0gICAgICAgIGludCByZXQ7Ci0gICAgICAg
IGNoYXIgKnA7Ci0KLSAgICAgICAgLy8gbWtkaXIoKSBkaXJlY3RvcmllcyBuZWVkZWQgZm9yIHRo
aXMgcGF0aCBuYW1lLCBhcyBuZWNlc3NhcnkKLSAgICAgICAgY2hhciB0bXBbQk9PVEZTX1BBVEhf
TUFYXTsKLSAgICAgICAgc3RybGNweSh0bXAsIG1kW2ldLm5hbWUsIEJPT1RGU19QQVRIX01BWCk7
Ci0gICAgICAgIGZvciAocCA9IHRtcDsgKnA7ICsrcCkgewotICAgICAgICAgICAgaWYgKCpwID09
ICcvJykgewotICAgICAgICAgICAgICAgICpwID0gJ1wwJzsKLSAgICAgICAgICAgICAgICBta2Rp
cih0bXAsIDA2NjYpOyAgLy8gc2lsZW50bHkgaWdub3JlIGVycm9ycyBhbmQgZXhpc3RpbmcgZGly
cwotICAgICAgICAgICAgICAgICpwID0gJy8nOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0K
LSAgICAgICAgaWYgKG1kW2ldLnR5cGUgPT0gYm9vdGZzX2ZpbGVfdHlwZTo6c3ltbGluaykgewot
ICAgICAgICAgICAgLy8gVGhpcyBpcyBhIHN5bWJvbGljIGxpbmsgcmVjb3JkLiBUaGUgZmlsZSdz
IGNvbnRlbnQgaXMgdGhlCi0gICAgICAgICAgICAvLyB0YXJnZXQgcGF0aCwgYW5kIHdlIGFzc3Vt
ZSBlbmRzIHdpdGggYSBudWxsLgotICAgICAgICAgICAgaWYgKHN5bWxpbmsoJmJvb3Rmc19zdGFy
dCArIG1kW2ldLm9mZnNldCwgbWRbaV0ubmFtZSkgIT0gMCkgewotICAgICAgICAgICAgICAgIGtw
cmludGYoImNvdWxkbid0IHN5bWxpbmsgJXM6ICVkXG4iLCBtZFtpXS5uYW1lLCBlcnJubyk7Ci0g
ICAgICAgICAgICAgICAgc3lzX3BhbmljKCJ1bnBhY2tfYm9vdGZzIGZhaWxlZCIpOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCoo
cC0xKSA9PSAnLycgJiYgbWRbaV0uc2l6ZSA9PSAwKSB7Ci0gICAgICAgICAgICAvLyBUaGlzIGlz
IGRpcmVjdG9yeSByZWNvcmQuIE5vdGhpbmcgZWxzZSB0byBkbwotICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgIH0KLQotICAgICAgICBmZCA9IGNyZWF0KG1kW2ldLm5hbWUsIDA2NjYpOwot
ICAgICAgICBpZiAoZmQgPCAwKSB7Ci0gICAgICAgICAgICBrcHJpbnRmKCJjb3VsZG4ndCBjcmVh
dGUgJXM6ICVkXG4iLAotICAgICAgICAgICAgICAgICAgICBtZFtpXS5uYW1lLCBlcnJubyk7Ci0g
ICAgICAgICAgICBzeXNfcGFuaWMoInVucGFja19ib290ZnMgZmFpbGVkIik7Ci0gICAgICAgIH0K
LQotICAgICAgICBzdHJ1Y3QgZmlsZSAqZnA7Ci0gICAgICAgIGludCBlcnJvciA9IGZnZXQoZmQs
ICZmcCk7Ci0gICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAga3ByaW50ZigiY291bGRu
J3QgZmdldCAlczogJWRcbiIsCi0gICAgICAgICAgICAgICAgICAgIG1kW2ldLm5hbWUsIGVycm9y
KTsKLSAgICAgICAgICAgIHN5c19wYW5pYygidW5wYWNrX2Jvb3RmcyBmYWlsZWQiKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIHN0cnVjdCB2bm9kZSAqdnAgPSBmcC0+Zl9kZW50cnktPmRfdm5vZGU7
Ci0gICAgICAgIHJldCA9IHJhbWZzX3NldF9maWxlX2RhdGEodnAsICZib290ZnNfc3RhcnQgKyBt
ZFtpXS5vZmZzZXQsIG1kW2ldLnNpemUpOwotICAgICAgICBpZiAocmV0KSB7Ci0gICAgICAgICAg
ICBrcHJpbnRmKCJyYW1mc19zZXRfZmlsZV9kYXRhIGZhaWxlZCwgcmV0ID0gJWRcbiIsIHJldCk7
Ci0gICAgICAgICAgICBzeXNfcGFuaWMoInVucGFja19ib290ZnMgZmFpbGVkIik7Ci0gICAgICAg
IH0KLQotICAgICAgICBmZHJvcChmcCk7Ci0gICAgICAgIGNsb3NlKGZkKTsKLSAgICB9CisJc3Ry
dWN0IGJvb3Rmc19tZXRhZGF0YSAqbWQgPSAoc3RydWN0IGJvb3Rmc19tZXRhZGF0YSAqKSZib290
ZnNfc3RhcnQ7CisJaW50IGZkLCBpOworCisJZm9yIChpID0gMDsgbWRbaV0ubmFtZVswXTsgaSsr
KSB7CisJCWludCByZXQ7CisJCWNoYXIgKnA7CisKKwkJLy8gbWtkaXIoKSBkaXJlY3RvcmllcyBu
ZWVkZWQgZm9yIHRoaXMgcGF0aCBuYW1lLCBhcyBuZWNlc3NhcnkKKwkJY2hhciB0bXBbQk9PVEZT
X1BBVEhfTUFYXTsKKwkJc3RybGNweSh0bXAsIG1kW2ldLm5hbWUsIEJPT1RGU19QQVRIX01BWCk7
CisJCWZvciAocCA9IHRtcDsgKnA7ICsrcCkgeworCQkJaWYgKCpwID09ICcvJykgeworCQkJCSpw
ID0gJ1wwJzsKKwkJCQlta2Rpcih0bXAsIDA2NjYpOyAgLy8gc2lsZW50bHkgaWdub3JlIGVycm9y
cyBhbmQgZXhpc3RpbmcgZGlycworCQkJCSpwID0gJy8nOworCQkJfQorCQl9CisKKwkJaWYgKG1k
W2ldLnR5cGUgPT0gYm9vdGZzX2ZpbGVfdHlwZTo6c3ltbGluaykgeworCQkJLy8gVGhpcyBpcyBh
IHN5bWJvbGljIGxpbmsgcmVjb3JkLiBUaGUgZmlsZSdzIGNvbnRlbnQgaXMgdGhlCisJCQkvLyB0
YXJnZXQgcGF0aCwgYW5kIHdlIGFzc3VtZSBlbmRzIHdpdGggYSBudWxsLgorCQkJaWYgKHN5bWxp
bmsoJmJvb3Rmc19zdGFydCArIG1kW2ldLm9mZnNldCwgbWRbaV0ubmFtZSkgIT0gMCkgeworCQkJ
CWtwcmludGYoImNvdWxkbid0IHN5bWxpbmsgJXM6ICVkXG4iLCBtZFtpXS5uYW1lLCBlcnJubyk7
CisJCQkJc3lzX3BhbmljKCJ1bnBhY2tfYm9vdGZzIGZhaWxlZCIpOworCQkJfQorCQkJY29udGlu
dWU7CisJCX0KKwkJaWYgKCoocC0xKSA9PSAnLycgJiYgbWRbaV0uc2l6ZSA9PSAwKSB7CisJCQkv
LyBUaGlzIGlzIGRpcmVjdG9yeSByZWNvcmQuIE5vdGhpbmcgZWxzZSB0byBkbworCQkJY29udGlu
dWU7CisJCX0KKworCQlmZCA9IGNyZWF0KG1kW2ldLm5hbWUsIDA2NjYpOworCQlpZiAoZmQgPCAw
KSB7CisJCQlrcHJpbnRmKCJjb3VsZG4ndCBjcmVhdGUgJXM6ICVkXG4iLAorCQkJCQltZFtpXS5u
YW1lLCBlcnJubyk7CisJCQlzeXNfcGFuaWMoInVucGFja19ib290ZnMgZmFpbGVkIik7CisJCX0K
KworCQlzdHJ1Y3QgZmlsZSAqZnA7CisJCWludCBlcnJvciA9IGZnZXQoZmQsICZmcCk7CisJCWlm
IChlcnJvcikgeworCQkJa3ByaW50ZigiY291bGRuJ3QgZmdldCAlczogJWRcbiIsCisJCQkJCW1k
W2ldLm5hbWUsIGVycm9yKTsKKwkJCXN5c19wYW5pYygidW5wYWNrX2Jvb3RmcyBmYWlsZWQiKTsK
KwkJfQorCisJCXN0cnVjdCB2bm9kZSAqdnAgPSBmcC0+Zl9kZW50cnktPmRfdm5vZGU7CisJCXJl
dCA9IHJhbWZzX3NldF9maWxlX2RhdGEodnAsICZib290ZnNfc3RhcnQgKyBtZFtpXS5vZmZzZXQs
IG1kW2ldLnNpemUpOworCQlpZiAocmV0KSB7CisJCQlrcHJpbnRmKCJyYW1mc19zZXRfZmlsZV9k
YXRhIGZhaWxlZCwgcmV0ID0gJWRcbiIsIHJldCk7CisJCQlzeXNfcGFuaWMoInVucGFja19ib290
ZnMgZmFpbGVkIik7CisJCX0KKworCQlmZHJvcChmcCk7CisJCWNsb3NlKGZkKTsKKwl9CiB9CiAK
IHZvaWQgbW91bnRfcm9vdGZzKHZvaWQpCiB7Ci0gICAgaW50IHJldDsKKwlpbnQgcmV0OwogCi0g
ICAgcmV0ID0gc3lzX21vdW50KCIiLCAiLyIsICJyYW1mcyIsIDAsIG51bGxwdHIpOwotICAgIGlm
IChyZXQpCi0gICAgICAgIGtwcmludGYoImZhaWxlZCB0byBtb3VudCByb290ZnMsIGVycm9yID0g
JXNcbiIsIHN0cmVycm9yKHJldCkpOworCXJldCA9IHN5c19tb3VudCgiIiwgIi8iLCAicmFtZnMi
LCAwLCBudWxscHRyKTsKKwlpZiAocmV0KQorCQlrcHJpbnRmKCJmYWlsZWQgdG8gbW91bnQgcm9v
dGZzLCBlcnJvciA9ICVzXG4iLCBzdHJlcnJvcihyZXQpKTsKIAotICAgIGlmIChta2RpcigiL2Rl
diIsIDA3NTUpIDwgMCkKLSAgICAgICAga3ByaW50ZigiZmFpbGVkIHRvIGNyZWF0ZSAvZGV2LCBl
cnJvciA9ICVzXG4iLCBzdHJlcnJvcihlcnJubykpOworCWlmIChta2RpcigiL2RldiIsIDA3NTUp
IDwgMCkKKwkJa3ByaW50ZigiZmFpbGVkIHRvIGNyZWF0ZSAvZGV2LCBlcnJvciA9ICVzXG4iLCBz
dHJlcnJvcihlcnJubykpOwogCi0gICAgcmV0ID0gc3lzX21vdW50KCIiLCAiL2RldiIsICJkZXZm
cyIsIDAsIG51bGxwdHIpOwotICAgIGlmIChyZXQpCi0gICAgICAgIGtwcmludGYoImZhaWxlZCB0
byBtb3VudCBkZXZmcywgZXJyb3IgPSAlc1xuIiwgc3RyZXJyb3IocmV0KSk7CisJcmV0ID0gc3lz
X21vdW50KCIiLCAiL2RldiIsICJkZXZmcyIsIDAsIG51bGxwdHIpOworCWlmIChyZXQpCisJCWtw
cmludGYoImZhaWxlZCB0byBtb3VudCBkZXZmcywgZXJyb3IgPSAlc1xuIiwgc3RyZXJyb3IocmV0
KSk7CiB9CiAKIGV4dGVybiAiQyIKIGludCBubW91bnQoc3RydWN0IGlvdmVjICppb3YsIHVuc2ln
bmVkIG5pb3YsIGludCBmbGFncykKIHsKLSAgICBzdHJ1Y3QgYXJncyB7Ci0gICAgICAgIGNoYXIq
IGZzdHlwZSA9IG51bGxwdHI7Ci0gICAgICAgIGNoYXIqIGZzcGF0aCA9IG51bGxwdHI7Ci0gICAg
ICAgIGNoYXIqIGZyb20gPSBudWxscHRyOwotICAgIH07Ci0gICAgc3RhdGljIHVub3JkZXJlZF9t
YXA8c3RyaW5nLCBjaGFyKiBhcmdzOjoqPiBhcmdtYXAgewotICAgICAgICB7ICJmc3R5cGUiLCAm
YXJnczo6ZnN0eXBlIH0sCi0gICAgICAgIHsgImZzcGF0aCIsICZhcmdzOjpmc3BhdGggfSwKLSAg
ICAgICAgeyAiZnJvbSIsICZhcmdzOjpmcm9tIH0sCi0gICAgfTsKLSAgICBhcmdzIGE7Ci0gICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBuaW92OyBpICs9IDIpIHsKLSAgICAgICAgc3RkOjpzdHJp
bmcgcyhzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oaW92W2ldLmlvdl9iYXNlKSk7Ci0gICAgICAg
IGlmIChhcmdtYXAuY291bnQocykpIHsKLSAgICAgICAgICAgIGEuKihhcmdtYXBbc10pID0gc3Rh
dGljX2Nhc3Q8Y2hhcio+KGlvdltpKzFdLmlvdl9iYXNlKTsKLSAgICAgICAgfQotICAgIH0KLSAg
ICByZXR1cm4gc3lzX21vdW50KGEuZnJvbSwgYS5mc3BhdGgsIGEuZnN0eXBlLCBmbGFncywgbnVs
bHB0cik7CisJc3RydWN0IGFyZ3MgeworCQljaGFyKiBmc3R5cGUgPSBudWxscHRyOworCQljaGFy
KiBmc3BhdGggPSBudWxscHRyOworCQljaGFyKiBmcm9tID0gbnVsbHB0cjsKKwl9OworCXN0YXRp
YyB1bm9yZGVyZWRfbWFwPHN0cmluZywgY2hhciogYXJnczo6Kj4gYXJnbWFwIHsKKwkJeyAiZnN0
eXBlIiwgJmFyZ3M6OmZzdHlwZSB9LAorCQl7ICJmc3BhdGgiLCAmYXJnczo6ZnNwYXRoIH0sCisJ
CXsgImZyb20iLCAmYXJnczo6ZnJvbSB9LAorCX07CisJYXJncyBhOworCWZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbmlvdjsgaSArPSAyKSB7CisJCXN0ZDo6c3RyaW5nIHMoc3RhdGljX2Nhc3Q8Y29u
c3QgY2hhcio+KGlvdltpXS5pb3ZfYmFzZSkpOworCQlpZiAoYXJnbWFwLmNvdW50KHMpKSB7CisJ
CQlhLiooYXJnbWFwW3NdKSA9IHN0YXRpY19jYXN0PGNoYXIqPihpb3ZbaSsxXS5pb3ZfYmFzZSk7
CisJCX0KKwl9CisJcmV0dXJuIHN5c19tb3VudChhLmZyb20sIGEuZnNwYXRoLCBhLmZzdHlwZSwg
ZmxhZ3MsIG51bGxwdHIpOwogfQogCiBzdGF0aWMgdm9pZCBpbXBvcnRfZXh0cmFfemZzX3Bvb2xz
KHZvaWQpCiB7Ci0gICAgc3RydWN0IHN0YXQgc3Q7Ci0gICAgaW50IHJldDsKKwlzdHJ1Y3Qgc3Rh
dCBzdDsKKwlpbnQgcmV0OwogCi0gICAgLy8gVGhlIGZpbGUgJy9ldGMvbW50dGFiJyBpcyBhIExp
YlpGUyByZXF1aXJlbWVudCBhbmQgd2lsbCBub3QKLSAgICAvLyBleGlzdCBkdXJpbmcgY3Bpb2Qg
cGhhc2UuIFRoZSBmdW5jdGlvbmFsaXR5IHByb3ZpZGVkIGJ5IHRoaXMKLSAgICAvLyBmdW5jdGlv
biBpc24ndCBuZWVkZWQgZHVyaW5nIHRoYXQgcGhhc2UsIHNvIGxldCdzIHNraXAgaXQuCi0gICAg
aWYgKHN0YXQoIi9ldGMvbW50dGFiIiAsICZzdCkgIT0gMCkgewotICAgICAgICByZXR1cm47Ci0g
ICAgfQorCS8vIFRoZSBmaWxlICcvZXRjL21udHRhYicgaXMgYSBMaWJaRlMgcmVxdWlyZW1lbnQg
YW5kIHdpbGwgbm90CisJLy8gZXhpc3QgZHVyaW5nIGNwaW9kIHBoYXNlLiBUaGUgZnVuY3Rpb25h
bGl0eSBwcm92aWRlZCBieSB0aGlzCisJLy8gZnVuY3Rpb24gaXNuJ3QgbmVlZGVkIGR1cmluZyB0
aGF0IHBoYXNlLCBzbyBsZXQncyBza2lwIGl0LgorCWlmIChzdGF0KCIvZXRjL21udHRhYiIgLCAm
c3QpICE9IDApIHsKKwkJcmV0dXJuOworCX0KIAotICAgIC8vIEltcG9ydCBleHRyYSBwb29scyBt
b3VudGluZyBkYXRhc2V0cyB0aGVyZSBjb250YWluZWQuCi0gICAgLy8gRGF0YXNldHMgZnJvbSBv
c3YgcG9vbCB3aWxsIG5vdCBiZSBtb3VudGVkIGhlcmUuCi0gICAgaWYgKGFjY2VzcygienBvb2wu
c28iLCBYX09LKSAhPSAwKSB7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgdmVjdG9yPHN0
cmluZz4genBvb2xfYXJncyA9IHsienBvb2wiLCAiaW1wb3J0IiwgIi1mIiwgIi1hIiB9OwotICAg
IGF1dG8gb2sgPSBvc3Y6OnJ1bigienBvb2wuc28iLCB6cG9vbF9hcmdzLCAmcmV0KTsKLSAgICBh
c3NlcnQob2spOworCS8vIEltcG9ydCBleHRyYSBwb29scyBtb3VudGluZyBkYXRhc2V0cyB0aGVy
ZSBjb250YWluZWQuCisJLy8gRGF0YXNldHMgZnJvbSBvc3YgcG9vbCB3aWxsIG5vdCBiZSBtb3Vu
dGVkIGhlcmUuCisJaWYgKGFjY2VzcygienBvb2wuc28iLCBYX09LKSAhPSAwKSB7CisJCXJldHVy
bjsKKwl9CisJdmVjdG9yPHN0cmluZz4genBvb2xfYXJncyA9IHsienBvb2wiLCAiaW1wb3J0Iiwg
Ii1mIiwgIi1hIiB9OworCWF1dG8gb2sgPSBvc3Y6OnJ1bigienBvb2wuc28iLCB6cG9vbF9hcmdz
LCAmcmV0KTsKKwlhc3NlcnQob2spOwogCi0gICAgaWYgKCFyZXQpIHsKLSAgICAgICAgZGVidWco
InpmczogZXh0cmEgWkZTIHBvb2wocykgZm91bmQuXG4iKTsKLSAgICB9CisJaWYgKCFyZXQpIHsK
KwkJZGVidWcoInpmczogZXh0cmEgWkZTIHBvb2wocykgZm91bmQuXG4iKTsKKwl9CiB9CiAKIHZv
aWQgcGl2b3Rfcm9vdGZzKGNvbnN0IGNoYXIqIHBhdGgpCiB7Ci0gICAgaW50IHJldCA9IHN5c19w
aXZvdF9yb290KHBhdGgsICIvIik7Ci0gICAgaWYgKHJldCkKLSAgICAgICAga3ByaW50ZigiZmFp
bGVkIHRvIHBpdm90IHJvb3QsIGVycm9yID0gJXNcbiIsIHN0cmVycm9yKHJldCkpOwotCi0gICAg
YXV0byBlbnQgPSBzZXRtbnRlbnQoIi9ldGMvZnN0YWIiLCAiciIpOwotICAgIGlmICghZW50KSB7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisJaW50IHJldCA9IHN5c19waXZvdF9yb290KHBhdGgs
ICIvIik7CisJaWYgKHJldCkKKwkJa3ByaW50ZigiZmFpbGVkIHRvIHBpdm90IHJvb3QsIGVycm9y
ID0gJXNcbiIsIHN0cmVycm9yKHJldCkpOwogCi0gICAgc3RydWN0IG1udGVudCAqbSA9IG51bGxw
dHI7Ci0gICAgd2hpbGUgKChtID0gZ2V0bW50ZW50KGVudCkpICE9IG51bGxwdHIpIHsKLSAgICAg
ICAgaWYgKCFzdHJjbXAobS0+bW50X2RpciwgIi8iKSkgewotICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoKG0tPm1udF9vcHRzICE9IG51bGxwdHIpICYmIHN0
cmNtcChtLT5tbnRfb3B0cywgTU5UT1BUX0RFRkFVTFRTKSkgewotICAgICAgICAgICAgcHJpbnRm
KCJXYXJuaW5nOiBvcHRzICVzLCBpZ25vcmVkIGZvciBmcyAlc1xuIiwgbS0+bW50X29wdHMsIG0t
Pm1udF90eXBlKTsKLSAgICAgICAgfQorCWF1dG8gZW50ID0gc2V0bW50ZW50KCIvZXRjL2ZzdGFi
IiwgInIiKTsKKwlpZiAoIWVudCkgeworCQlyZXR1cm47CisJfQogCi0gICAgICAgIC8vIEZJWE1F
OiBSaWdodCBub3csIGlnbm9yaW5nIG1udG9wcy4gSW4gdGhlIGZ1dHVyZSB3ZSBtYXkgaGF2ZSBh
biBvcHRpb24gcGFyc2VyCi0gICAgICAgIHJldCA9IHN5c19tb3VudChtLT5tbnRfZnNuYW1lLCBt
LT5tbnRfZGlyLCBtLT5tbnRfdHlwZSwgMCwgbnVsbHB0cik7Ci0gICAgICAgIGlmIChyZXQpIHsK
LSAgICAgICAgICAgIHByaW50ZigiZmFpbGVkIHRvIG1vdW50ICVzLCBlcnJvciA9ICVzXG4iLCBt
LT5tbnRfdHlwZSwgc3RyZXJyb3IocmV0KSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZW5kbW50
ZW50KGVudCk7CisJc3RydWN0IG1udGVudCAqbSA9IG51bGxwdHI7CisJd2hpbGUgKChtID0gZ2V0
bW50ZW50KGVudCkpICE9IG51bGxwdHIpIHsKKwkJaWYgKCFzdHJjbXAobS0+bW50X2RpciwgIi8i
KSkgeworCQkJY29udGludWU7CisJCX0KKworCQlpZiAoKG0tPm1udF9vcHRzICE9IG51bGxwdHIp
ICYmIHN0cmNtcChtLT5tbnRfb3B0cywgTU5UT1BUX0RFRkFVTFRTKSkgeworCQkJcHJpbnRmKCJX
YXJuaW5nOiBvcHRzICVzLCBpZ25vcmVkIGZvciBmcyAlc1xuIiwgbS0+bW50X29wdHMsIG0tPm1u
dF90eXBlKTsKKwkJfQorCisJCS8vIEZJWE1FOiBSaWdodCBub3csIGlnbm9yaW5nIG1udG9wcy4g
SW4gdGhlIGZ1dHVyZSB3ZSBtYXkgaGF2ZSBhbiBvcHRpb24gcGFyc2VyCisJCXJldCA9IHN5c19t
b3VudChtLT5tbnRfZnNuYW1lLCBtLT5tbnRfZGlyLCBtLT5tbnRfdHlwZSwgMCwgbnVsbHB0cik7
CisJCWlmIChyZXQpIHsKKwkJCXByaW50ZigiZmFpbGVkIHRvIG1vdW50ICVzLCBlcnJvciA9ICVz
XG4iLCBtLT5tbnRfdHlwZSwgc3RyZXJyb3IocmV0KSk7CisJCX0KKwl9CisJZW5kbW50ZW50KGVu
dCk7CiB9CiAKIGV4dGVybiAiQyIgdm9pZCB1bm1vdW50X2RldmZzKCkKIHsKLSAgICBpbnQgcmV0
ID0gc3lzX3Vtb3VudCgiL2RldiIpOwotICAgIGlmIChyZXQpCi0gICAgICAgIGtwcmludGYoImZh
aWxlZCB0byB1bm1vdW50IC9kZXYsIGVycm9yID0gJXNcbiIsIHN0cmVycm9yKHJldCkpOworCWlu
dCByZXQgPSBzeXNfdW1vdW50KCIvZGV2Iik7CisJaWYgKHJldCkKKwkJa3ByaW50ZigiZmFpbGVk
IHRvIHVubW91bnQgL2RldiwgZXJyb3IgPSAlc1xuIiwgc3RyZXJyb3IocmV0KSk7CiB9CiAKIGV4
dGVybiAiQyIgaW50IG1vdW50X3JvZnNfcm9vdGZzKGJvb2wgcGl2b3Rfcm9vdCkKIHsKLSAgICBp
bnQgcmV0OworCWludCByZXQ7CiAKLSAgICBpZiAobWtkaXIoIi9yb2ZzIiwgMDc1NSkgPCAwKQot
ICAgICAgICBrcHJpbnRmKCJmYWlsZWQgdG8gY3JlYXRlIC9yb2ZzLCBlcnJvciA9ICVzXG4iLCBz
dHJlcnJvcihlcnJubykpOworCWlmIChta2RpcigiL3JvZnMiLCAwNzU1KSA8IDApCisJCWtwcmlu
dGYoImZhaWxlZCB0byBjcmVhdGUgL3JvZnMsIGVycm9yID0gJXNcbiIsIHN0cmVycm9yKGVycm5v
KSk7CiAKLSAgICByZXQgPSBzeXNfbW91bnQoIi9kZXYvdmJsazAuMSIsICIvcm9mcyIsICJyb2Zz
IiwgTU5UX1JET05MWSwgMCk7CisJcmV0ID0gc3lzX21vdW50KCIvZGV2L3ZibGswLjEiLCAiL3Jv
ZnMiLCAicm9mcyIsIE1OVF9SRE9OTFksIDApOwogCi0gICAgaWYgKHJldCkgewotICAgICAgICBr
cHJpbnRmKCJmYWlsZWQgdG8gbW91bnQgL3JvZnMsIGVycm9yID0gJXNcbiIsIHN0cmVycm9yKHJl
dCkpOwotICAgICAgICBybWRpcigiL3JvZnMiKTsKLSAgICAgICAgcmV0dXJuIHJldDsKLSAgICB9
CisJaWYgKHJldCkgeworCQlrcHJpbnRmKCJmYWlsZWQgdG8gbW91bnQgL3JvZnMsIGVycm9yID0g
JXNcbiIsIHN0cmVycm9yKHJldCkpOworCQlybWRpcigiL3JvZnMiKTsKKwkJcmV0dXJuIHJldDsK
Kwl9CiAKLSAgICBpZiAocGl2b3Rfcm9vdCkgewotICAgICAgICBwaXZvdF9yb290ZnMoIi9yb2Zz
Iik7Ci0gICAgfQorCWlmIChwaXZvdF9yb290KSB7CisJCXBpdm90X3Jvb3RmcygiL3JvZnMiKTsK
Kwl9CiAKLSAgICByZXR1cm4gMDsKKwlyZXR1cm4gMDsKIH0KIAogZXh0ZXJuICJDIiB2b2lkIG1v
dW50X3pmc19yb290ZnMoYm9vbCBwaXZvdF9yb290KQogewotICAgIGlmIChta2RpcigiL3pmcyIs
IDA3NTUpIDwgMCkKLSAgICAgICAga3ByaW50ZigiZmFpbGVkIHRvIGNyZWF0ZSAvemZzLCBlcnJv
ciA9ICVzXG4iLCBzdHJlcnJvcihlcnJubykpOworCWlmIChta2RpcigiL3pmcyIsIDA3NTUpIDwg
MCkKKwkJa3ByaW50ZigiZmFpbGVkIHRvIGNyZWF0ZSAvemZzLCBlcnJvciA9ICVzXG4iLCBzdHJl
cnJvcihlcnJubykpOwogCi0gICAgaW50IHJldCA9IHN5c19tb3VudCgiL2Rldi92YmxrMC4xIiwg
Ii96ZnMiLCAiemZzIiwgMCwgKHZvaWQgKikib3N2L3pmcyIpOworCWludCByZXQgPSBzeXNfbW91
bnQoIi9kZXYvdmJsazAuMSIsICIvemZzIiwgInpmcyIsIDAsICh2b2lkICopIm9zdi96ZnMiKTsK
IAotICAgIGlmIChyZXQpCi0gICAgICAgIGtwcmludGYoImZhaWxlZCB0byBtb3VudCAvemZzLCBl
cnJvciA9ICVzXG4iLCBzdHJlcnJvcihyZXQpKTsKKwlpZiAocmV0KQorCQlrcHJpbnRmKCJmYWls
ZWQgdG8gbW91bnQgL3pmcywgZXJyb3IgPSAlc1xuIiwgc3RyZXJyb3IocmV0KSk7CiAKLSAgICBp
ZiAoIXBpdm90X3Jvb3QpIHsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKwlpZiAoIXBpdm90X3Jv
b3QpIHsKKwkJcmV0dXJuOworCX0KIAotICAgIHBpdm90X3Jvb3RmcygiL3pmcyIpOworCXBpdm90
X3Jvb3RmcygiL3pmcyIpOwogCi0gICAgaW1wb3J0X2V4dHJhX3pmc19wb29scygpOworCWltcG9y
dF9leHRyYV96ZnNfcG9vbHMoKTsKIH0KIAogZXh0ZXJuICJDIiB2b2lkIHVubW91bnRfcm9vdGZz
KHZvaWQpCiB7Ci0gICAgaW50IHJldDsKKwlpbnQgcmV0OwogCi0gICAgc3lzX3Vtb3VudCgiL2Rl
diIpOworCXN5c191bW91bnQoIi9kZXYiKTsKIAotICAgIHJldCA9IHN5c191bW91bnQoIi9wcm9j
Iik7Ci0gICAgaWYgKHJldCkgewotICAgICAgICBrcHJpbnRmKCJXYXJuaW5nOiB1bm1vdW50X3Jv
b3RmczogZmFpbGVkIHRvIHVubW91bnQgL3Byb2MsICIKLSAgICAgICAgICAgICJlcnJvciA9ICVz
XG4iLCBzdHJlcnJvcihyZXQpKTsKLSAgICB9CisJcmV0ID0gc3lzX3Vtb3VudCgiL3Byb2MiKTsK
KwlpZiAocmV0KSB7CisJCWtwcmludGYoIldhcm5pbmc6IHVubW91bnRfcm9vdGZzOiBmYWlsZWQg
dG8gdW5tb3VudCAvcHJvYywgIgorCQkJImVycm9yID0gJXNcbiIsIHN0cmVycm9yKHJldCkpOwor
CX0KIAotICAgIHJldCA9IHN5c191bW91bnQyKCIvIiwgTU5UX0ZPUkNFKTsKLSAgICBpZiAocmV0
KSB7Ci0gICAgICAgIGtwcmludGYoIldhcm5pbmc6IHVubW91bnRfcm9vdGZzOiBmYWlsZWQgdG8g
dW5tb3VudCAvLCAiCi0gICAgICAgICAgICAiZXJyb3IgPSAlc1xuIiwgc3RyZXJyb3IocmV0KSk7
Ci0gICAgfQorCXJldCA9IHN5c191bW91bnQyKCIvIiwgTU5UX0ZPUkNFKTsKKwlpZiAocmV0KSB7
CisJCWtwcmludGYoIldhcm5pbmc6IHVubW91bnRfcm9vdGZzOiBmYWlsZWQgdG8gdW5tb3VudCAv
LCAiCisJCQkiZXJyb3IgPSAlc1xuIiwgc3RyZXJyb3IocmV0KSk7CisJfQogfQogCiBleHRlcm4g
IkMiIHZvaWQgYmlvX2luaXQodm9pZCk7CkBAIC0yMzY1LDQ5ICsyMzY1LDQ5IEBAIGV4dGVybiAi
QyIKIHZvaWQKIHZmc19pbml0KHZvaWQpCiB7Ci0gICAgY29uc3Qgc3RydWN0IHZmc3N3ICpmczsK
LQotICAgIGJpb19pbml0KCk7Ci0gICAgbG9va3VwX2luaXQoKTsKLSAgICB2bm9kZV9pbml0KCk7
Ci0gICAgdGFza19hbGxvYygmbWFpbl90YXNrKTsKLQotICAgIC8qCi0gICAgICogSW5pdGlhbGl6
ZSBlYWNoIGZpbGUgc3lzdGVtLgotICAgICAqLwotICAgIGZvciAoZnMgPSB2ZnNzdzsgZnMtPnZz
X25hbWU7IGZzKyspIHsKLSAgICAgICAgaWYgKGZzLT52c19pbml0KSB7Ci0gICAgICAgICAgICBE
UFJJTlRGKFZGU0RCX0NPUkUsICgiVkZTOiBpbml0aWFsaXppbmcgJXNcbiIsCi0gICAgICAgICAg
ICAgICAgICAgIGZzLT52c19uYW1lKSk7Ci0gICAgICAgICAgICBmcy0+dnNfaW5pdCgpOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgbW91bnRfcm9vdGZzKCk7Ci0gICAgdW5wYWNrX2Jvb3Rmcygp
OwotCi0gICAgLy8JaWYgKG9wZW4oIi9kZXYvY29uc29sZSIsIE9fUkRXUiwgMCkgIT0gMCkKLSAg
ICBpZiAoY29uc29sZTo6b3BlbigpICE9IDApCi0gICAgICAgIGtwcmludGYoImZhaWxlZCB0byBv
cGVuIGNvbnNvbGUsIGVycm9yID0gJWRcbiIsIGVycm5vKTsKLSAgICBpZiAoZHVwKDApICE9IDEp
Ci0gICAgICAgIGtwcmludGYoImZhaWxlZCB0byBkdXAgY29uc29sZSAoMSlcbiIpOwotICAgIGlm
IChkdXAoMCkgIT0gMikKLSAgICAgICAga3ByaW50ZigiZmFpbGVkIHRvIGR1cCBjb25zb2xlICgy
KVxuIik7Ci0gICAgdmZzX2luaXRpYWxpemVkID0gMTsKKwljb25zdCBzdHJ1Y3QgdmZzc3cgKmZz
OworCisJYmlvX2luaXQoKTsKKwlsb29rdXBfaW5pdCgpOworCXZub2RlX2luaXQoKTsKKwl0YXNr
X2FsbG9jKCZtYWluX3Rhc2spOworCisJLyoKKwkgKiBJbml0aWFsaXplIGVhY2ggZmlsZSBzeXN0
ZW0uCisJICovCisJZm9yIChmcyA9IHZmc3N3OyBmcy0+dnNfbmFtZTsgZnMrKykgeworCQlpZiAo
ZnMtPnZzX2luaXQpIHsKKwkJCURQUklOVEYoVkZTREJfQ09SRSwgKCJWRlM6IGluaXRpYWxpemlu
ZyAlc1xuIiwKKwkJCQkJZnMtPnZzX25hbWUpKTsKKwkJCWZzLT52c19pbml0KCk7CisJCX0KKwl9
CisKKwltb3VudF9yb290ZnMoKTsKKwl1bnBhY2tfYm9vdGZzKCk7CisKKwkvLwlpZiAob3Blbigi
L2Rldi9jb25zb2xlIiwgT19SRFdSLCAwKSAhPSAwKQorCWlmIChjb25zb2xlOjpvcGVuKCkgIT0g
MCkKKwkJa3ByaW50ZigiZmFpbGVkIHRvIG9wZW4gY29uc29sZSwgZXJyb3IgPSAlZFxuIiwgZXJy
bm8pOworCWlmIChkdXAoMCkgIT0gMSkKKwkJa3ByaW50ZigiZmFpbGVkIHRvIGR1cCBjb25zb2xl
ICgxKVxuIik7CisJaWYgKGR1cCgwKSAhPSAyKQorCQlrcHJpbnRmKCJmYWlsZWQgdG8gZHVwIGNv
bnNvbGUgKDIpXG4iKTsKKwl2ZnNfaW5pdGlhbGl6ZWQgPSAxOwogfQogCiB2b2lkIHZmc19leGl0
KHZvaWQpCiB7Ci0gICAgLyogRnJlZSB1cCBtYWluX3Rhc2sgKHN0b3JlcyBjd2QgZGF0YSkgcmVz
b3VyY2VzICovCi0gICAgcmVwbGFjZV9jd2QobWFpbl90YXNrLCBudWxscHRyLCBbXSgpIHsgcmV0
dXJuIDA7IH0pOwotICAgIC8qIFVubW91bnQgYWxsIGZpbGUgc3lzdGVtcyAqLwotICAgIHVubW91
bnRfcm9vdGZzKCk7Ci0gICAgLyogRmluaXNoIHdpdGggdGhlIGJpbyBsYXllciAqLwotICAgIGJp
b19zeW5jKCk7CisJLyogRnJlZSB1cCBtYWluX3Rhc2sgKHN0b3JlcyBjd2QgZGF0YSkgcmVzb3Vy
Y2VzICovCisJcmVwbGFjZV9jd2QobWFpbl90YXNrLCBudWxscHRyLCBbXSgpIHsgcmV0dXJuIDA7
IH0pOworCS8qIFVubW91bnQgYWxsIGZpbGUgc3lzdGVtcyAqLworCXVubW91bnRfcm9vdGZzKCk7
CisJLyogRmluaXNoIHdpdGggdGhlIGJpbyBsYXllciAqLworCWJpb19zeW5jKCk7CiB9CiAKIHZv
aWQgc3lzX3BhbmljKGNvbnN0IGNoYXIgKnN0cikKIHsKLSAgICBhYm9ydCgicGFuaWM6ICVzIiwg
c3RyKTsKKwlhYm9ydCgicGFuaWM6ICVzIiwgc3RyKTsKIH0KIApkaWZmIC0tZ2l0IGEvbGliL3Zm
c2NvcmUvbW91bnQuYyBiL2xpYi92ZnNjb3JlL21vdW50LmMKaW5kZXggZGFjNGQwOWMuLmI1MWIy
N2E0IDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9tb3VudC5jCisrKyBiL2xpYi92ZnNjb3JlL21v
dW50LmMKQEAgLTY5LDI4NyArNjksMjg3IEBAIHN0YXRpYyBtdXRleCBtb3VudF9sb2NrOwogc3Rh
dGljIGNvbnN0IHN0cnVjdCB2ZnNzdyAqCiBmc19nZXRmcyhjb25zdCBjaGFyICpuYW1lKQogewot
ICAgIGNvbnN0IHN0cnVjdCB2ZnNzdyAqZnM7Ci0KLSAgICBmb3IgKGZzID0gdmZzc3c7IGZzLT52
c19uYW1lOyBmcysrKSB7Ci0gICAgICAgIGlmICghc3RybmNtcChuYW1lLCBmcy0+dnNfbmFtZSwg
RlNNQVhOQU1FUykpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgaWYgKCFmcy0+dnNf
bmFtZSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGZzOworCWNvbnN0IHN0
cnVjdCB2ZnNzdyAqZnM7CisKKwlmb3IgKGZzID0gdmZzc3c7IGZzLT52c19uYW1lOyBmcysrKSB7
CisJCWlmICghc3RybmNtcChuYW1lLCBmcy0+dnNfbmFtZSwgRlNNQVhOQU1FUykpCisJCQlicmVh
azsKKwl9CisJaWYgKCFmcy0+dnNfbmFtZSkKKwkJcmV0dXJuIG51bGxwdHI7CisJcmV0dXJuIGZz
OwogfQogCiBjb25zdCBjaGFyKgogZnNfZ2V0ZnNuYW1lKHZmc29wcyogb3BzKQogewotICAgIGZv
ciAoYXV0byBmcyA9IHZmc3N3OyBmcy0+dnNfbmFtZTsgZnMrKykgewotICAgICAgICBpZiAoZnMt
PnZzX29wID09IG9wcykgewotICAgICAgICAgICAgcmV0dXJuIGZzLT52c19uYW1lOwotICAgICAg
ICB9Ci0gICAgfQotICAgIGFib3J0KCk7CisJZm9yIChhdXRvIGZzID0gdmZzc3c7IGZzLT52c19u
YW1lOyBmcysrKSB7CisJCWlmIChmcy0+dnNfb3AgPT0gb3BzKSB7CisJCQlyZXR1cm4gZnMtPnZz
X25hbWU7CisJCX0KKwl9CisJYWJvcnQoKTsKIH0KIAogaW50CiBzeXNfbW91bnQoY29uc3QgY2hh
ciAqZGV2LCBjb25zdCBjaGFyICpkaXIsIGNvbnN0IGNoYXIgKmZzbmFtZSwgaW50IGZsYWdzLCBj
b25zdCB2b2lkICpkYXRhKQogewotICAgIGNvbnN0IHN0cnVjdCB2ZnNzdyAqZnM7Ci0gICAgc3Ry
dWN0IG1vdW50ICptcDsKLSAgICBzdHJ1Y3QgZGV2aWNlICpkZXZpY2U7Ci0gICAgc3RydWN0IGRl
bnRyeSAqZHBfY292ZXJlZDsKLSAgICBzdHJ1Y3Qgdm5vZGUgKnZwOwotICAgIGludCBlcnJvcjsK
LQotICAgIGtwcmludGYoIlZGUzogbW91bnRpbmcgJXMgYXQgJXNcbiIsIGZzbmFtZSwgZGlyKTsK
LQotICAgIGlmICghZGlyIHx8ICpkaXIgPT0gJ1wwJykKLSAgICAgICAgcmV0dXJuIEVOT0VOVDsK
LQotICAgIC8qIEZpbmQgYSBmaWxlIHN5c3RlbS4gKi8KLSAgICBpZiAoIShmcyA9IGZzX2dldGZz
KGZzbmFtZSkpKQotICAgICAgICByZXR1cm4gRU5PREVWOyAgLyogTm8gc3VjaCBmaWxlIHN5c3Rl
bSAqLwotCi0gICAgLyogT3BlbiBkZXZpY2UuIG51bGxwdHIgY2FuIGJlIHNwZWNpZmllZCBhcyBh
IGRldmljZS4gKi8KLSAgICAvLyBBbGxvdyBkZXZpY2Vfb3BlbigpIHRvIGZhaWwsIGluIHdoaWNo
IGNhc2UgZGV2IGlzIGludGVycHJldGVkCi0gICAgLy8gYnkgdGhlIGZpbGUgc3lzdGVtIG1vdW50
IHJvdXRpbmUgKGUuZyB6ZnMgcG9vbHMpCi0gICAgZGV2aWNlID0gMDsKLSAgICBpZiAoZGV2ICYm
IHN0cm5jbXAoZGV2LCAiL2Rldi8iLCA1KSA9PSAwKQotICAgICAgICBkZXZpY2Vfb3BlbihkZXYg
KyA1LCBET19SRFdSLCAmZGV2aWNlKTsKLQotICAgIC8qIENoZWNrIGlmIGRldmljZSBvciBkaXJl
Y3RvcnkgaGFzIGFscmVhZHkgYmVlbiBtb3VudGVkLiAqLwotICAgIC8vIFdlIG5lZWQgdG8gYXZv
aWQgdGhlIHNpdHVhdGlvbiB3aGVyZSBhZnRlciB3ZSBhbHJlYWR5IHZlcmlmaWVkIHRoYXQKLSAg
ICAvLyB0aGUgbW91bnQgcG9pbnQgaXMgZnJlZSwgYnV0IGJlZm9yZSB3ZSBhY3R1YWxseSBhZGQg
aXQgdG8gbW91bnRfbGlzdCwKLSAgICAvLyBhbm90aGVyIGNvbmN1cnJlbnQgbW91bnQgYWRkcyBp
dC4gU28gd2UgdXNlIGEgbmV3IG11dGV4IHRvIGVuc3VyZQotICAgIC8vIHRoYXQgb25seSBvbmUg
c3lzX21vdW50KCkgcnVucyBhdCBhIHRpbWUuIFdlIGNhbm5vdCByZXVzZSB0aGUgZXhpc3RpbmcK
LSAgICAvLyBtb3VudF9sb2NrIGZvciB0aGlzIHB1cnBvc2U6IElmIHdlIHRha2UgbW91bnRfbG9j
ayBhbmQgdGhlbiBkbwotICAgIC8vIGxvb2t1cHMsIHRoaXMgaXMgbG9jayBvcmRlciBpbnZlcnNp
b24gYW5kIGNhbiByZXN1bHQgaW4gZGVhZGxvY2suCi0gICAgc3RhdGljIG11dGV4IHN5c19tb3Vu
dF9sb2NrOwotICAgIFNDT1BFX0xPQ0soc3lzX21vdW50X2xvY2spOwotICAgIFdJVEhfTE9DSyht
b3VudF9sb2NrKSB7Ci0gICAgICAgIGZvciAoYXV0byYmIG1wIDogbW91bnRfbGlzdCkgewotICAg
ICAgICAgICAgaWYgKCFzdHJjbXAobXAtPm1fcGF0aCwgZGlyKSB8fAotICAgICAgICAgICAgICAg
IChkZXZpY2UgJiYgbXAtPm1fZGV2ID09IGRldmljZSkpIHsKLSAgICAgICAgICAgICAgICBlcnJv
ciA9IEVCVVNZOyAgLyogQWxyZWFkeSBtb3VudGVkICovCi0gICAgICAgICAgICAgICAgZ290byBl
cnIxOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIC8qCi0gICAgICogQ3Jl
YXRlIFZGUyBtb3VudCBlbnRyeS4KLSAgICAgKi8KLSAgICBpZiAoIShtcCA9IG5ldyBtb3VudCkp
IHsKLSAgICAgICAgZXJyb3IgPSBFTk9NRU07Ci0gICAgICAgIGdvdG8gZXJyMTsKLSAgICB9Ci0g
ICAgbXAtPm1fY291bnQgPSAwOwotICAgIG1wLT5tX29wID0gZnMtPnZzX29wOwotICAgIG1wLT5t
X2ZsYWdzID0gZmxhZ3M7Ci0gICAgbXAtPm1fZGV2ID0gZGV2aWNlOwotICAgIG1wLT5tX2RhdGEg
PSBudWxscHRyOwotICAgIHN0cmxjcHkobXAtPm1fcGF0aCwgZGlyLCBzaXplb2YobXAtPm1fcGF0
aCkpOwotICAgIHN0cmxjcHkobXAtPm1fc3BlY2lhbCwgZGV2LCBzaXplb2YobXAtPm1fc3BlY2lh
bCkpOwotCi0gICAgLyoKLSAgICAgKiBHZXQgdm5vZGUgdG8gYmUgY292ZXJlZCBpbiB0aGUgdXBw
ZXIgZmlsZSBzeXN0ZW0uCi0gICAgICovCi0gICAgaWYgKCpkaXIgPT0gJy8nICYmICooZGlyICsg
MSkgPT0gJ1wwJykgewotICAgICAgICAvKiBJZ25vcmUgaWYgaXQgbW91bnRzIHRvIGdsb2JhbCBy
b290IGRpcmVjdG9yeS4gKi8KLSAgICAgICAgZHBfY292ZXJlZCA9IG51bGxwdHI7Ci0gICAgfSBl
bHNlIHsKLSAgICAgICAgaWYgKChlcnJvciA9IG5hbWVpKGRpciwgJmRwX2NvdmVyZWQpKSAhPSAw
KSB7Ci0KLSAgICAgICAgICAgIGVycm9yID0gRU5PRU5UOwotICAgICAgICAgICAgZ290byBlcnIy
OwotICAgICAgICB9Ci0gICAgICAgIGlmIChkcF9jb3ZlcmVkLT5kX3Zub2RlLT52X3R5cGUgIT0g
VkRJUikgewotICAgICAgICAgICAgZXJyb3IgPSBFTk9URElSOwotICAgICAgICAgICAgZ290byBl
cnIzOwotICAgICAgICB9Ci0gICAgfQotICAgIG1wLT5tX2NvdmVyZWQgPSBkcF9jb3ZlcmVkOwot
Ci0gICAgLyoKLSAgICAgKiBDcmVhdGUgYSByb290IHZub2RlIGZvciB0aGlzIGZpbGUgc3lzdGVt
LgotICAgICAqLwotICAgIHZnZXQobXAsIDAsICZ2cCk7Ci0gICAgaWYgKHZwID09IG51bGxwdHIp
IHsKLSAgICAgICAgZXJyb3IgPSBFTk9NRU07Ci0gICAgICAgIGdvdG8gZXJyMzsKLSAgICB9Ci0g
ICAgdnAtPnZfdHlwZSA9IFZESVI7Ci0gICAgdnAtPnZfZmxhZ3MgPSBWUk9PVDsKLSAgICB2cC0+
dl9tb2RlID0gU19JRkRJUiB8IFNfSVJVU1IgfCBTX0lXVVNSIHwgU19JWFVTUjsKLQotICAgIG1w
LT5tX3Jvb3QgPSBkZW50cnlfYWxsb2MobnVsbHB0ciwgdnAsICIvIik7Ci0gICAgaWYgKCFtcC0+
bV9yb290KSB7Ci0gICAgICAgIHZwdXQodnApOwotICAgICAgICBnb3RvIGVycjM7Ci0gICAgfQot
ICAgIHZwdXQodnApOwotCi0gICAgLyoKLSAgICAgKiBDYWxsIGEgZmlsZSBzeXN0ZW0gc3BlY2lm
aWMgcm91dGluZS4KLSAgICAgKi8KLSAgICBpZiAoKGVycm9yID0gVkZTX01PVU5UKG1wLCBkZXYs
IGZsYWdzLCBkYXRhKSkgIT0gMCkKLSAgICAgICAgZ290byBlcnI0OwotCi0gICAgaWYgKG1wLT5t
X2ZsYWdzICYgTU5UX1JET05MWSkKLSAgICAgICAgdnAtPnZfbW9kZSAmPX5TX0lXVVNSOwotCi0g
ICAgLyoKLSAgICAgKiBJbnNlcnQgdG8gbW91bnQgbGlzdAotICAgICAqLwotICAgIFdJVEhfTE9D
Syhtb3VudF9sb2NrKSB7Ci0gICAgICAgIG1vdW50X2xpc3QucHVzaF9iYWNrKG1wKTsKLSAgICB9
Ci0KLSAgICByZXR1cm4gMDsgICAvKiBzdWNjZXNzICovCisJY29uc3Qgc3RydWN0IHZmc3N3ICpm
czsKKwlzdHJ1Y3QgbW91bnQgKm1wOworCXN0cnVjdCBkZXZpY2UgKmRldmljZTsKKwlzdHJ1Y3Qg
ZGVudHJ5ICpkcF9jb3ZlcmVkOworCXN0cnVjdCB2bm9kZSAqdnA7CisJaW50IGVycm9yOworCisJ
a3ByaW50ZigiVkZTOiBtb3VudGluZyAlcyBhdCAlc1xuIiwgZnNuYW1lLCBkaXIpOworCisJaWYg
KCFkaXIgfHwgKmRpciA9PSAnXDAnKQorCQlyZXR1cm4gRU5PRU5UOworCisJLyogRmluZCBhIGZp
bGUgc3lzdGVtLiAqLworCWlmICghKGZzID0gZnNfZ2V0ZnMoZnNuYW1lKSkpCisJCXJldHVybiBF
Tk9ERVY7ICAvKiBObyBzdWNoIGZpbGUgc3lzdGVtICovCisKKwkvKiBPcGVuIGRldmljZS4gbnVs
bHB0ciBjYW4gYmUgc3BlY2lmaWVkIGFzIGEgZGV2aWNlLiAqLworCS8vIEFsbG93IGRldmljZV9v
cGVuKCkgdG8gZmFpbCwgaW4gd2hpY2ggY2FzZSBkZXYgaXMgaW50ZXJwcmV0ZWQKKwkvLyBieSB0
aGUgZmlsZSBzeXN0ZW0gbW91bnQgcm91dGluZSAoZS5nIHpmcyBwb29scykKKwlkZXZpY2UgPSAw
OworCWlmIChkZXYgJiYgc3RybmNtcChkZXYsICIvZGV2LyIsIDUpID09IDApCisJCWRldmljZV9v
cGVuKGRldiArIDUsIERPX1JEV1IsICZkZXZpY2UpOworCisJLyogQ2hlY2sgaWYgZGV2aWNlIG9y
IGRpcmVjdG9yeSBoYXMgYWxyZWFkeSBiZWVuIG1vdW50ZWQuICovCisJLy8gV2UgbmVlZCB0byBh
dm9pZCB0aGUgc2l0dWF0aW9uIHdoZXJlIGFmdGVyIHdlIGFscmVhZHkgdmVyaWZpZWQgdGhhdAor
CS8vIHRoZSBtb3VudCBwb2ludCBpcyBmcmVlLCBidXQgYmVmb3JlIHdlIGFjdHVhbGx5IGFkZCBp
dCB0byBtb3VudF9saXN0LAorCS8vIGFub3RoZXIgY29uY3VycmVudCBtb3VudCBhZGRzIGl0LiBT
byB3ZSB1c2UgYSBuZXcgbXV0ZXggdG8gZW5zdXJlCisJLy8gdGhhdCBvbmx5IG9uZSBzeXNfbW91
bnQoKSBydW5zIGF0IGEgdGltZS4gV2UgY2Fubm90IHJldXNlIHRoZSBleGlzdGluZworCS8vIG1v
dW50X2xvY2sgZm9yIHRoaXMgcHVycG9zZTogSWYgd2UgdGFrZSBtb3VudF9sb2NrIGFuZCB0aGVu
IGRvCisJLy8gbG9va3VwcywgdGhpcyBpcyBsb2NrIG9yZGVyIGludmVyc2lvbiBhbmQgY2FuIHJl
c3VsdCBpbiBkZWFkbG9jay4KKwlzdGF0aWMgbXV0ZXggc3lzX21vdW50X2xvY2s7CisJU0NPUEVf
TE9DSyhzeXNfbW91bnRfbG9jayk7CisJV0lUSF9MT0NLKG1vdW50X2xvY2spIHsKKwkJZm9yIChh
dXRvJiYgbXAgOiBtb3VudF9saXN0KSB7CisJCQlpZiAoIXN0cmNtcChtcC0+bV9wYXRoLCBkaXIp
IHx8CisJCQkJKGRldmljZSAmJiBtcC0+bV9kZXYgPT0gZGV2aWNlKSkgeworCQkJCWVycm9yID0g
RUJVU1k7ICAvKiBBbHJlYWR5IG1vdW50ZWQgKi8KKwkJCQlnb3RvIGVycjE7CisJCQl9CisJCX0K
Kwl9CisJLyoKKwkgKiBDcmVhdGUgVkZTIG1vdW50IGVudHJ5LgorCSAqLworCWlmICghKG1wID0g
bmV3IG1vdW50KSkgeworCQllcnJvciA9IEVOT01FTTsKKwkJZ290byBlcnIxOworCX0KKwltcC0+
bV9jb3VudCA9IDA7CisJbXAtPm1fb3AgPSBmcy0+dnNfb3A7CisJbXAtPm1fZmxhZ3MgPSBmbGFn
czsKKwltcC0+bV9kZXYgPSBkZXZpY2U7CisJbXAtPm1fZGF0YSA9IG51bGxwdHI7CisJc3RybGNw
eShtcC0+bV9wYXRoLCBkaXIsIHNpemVvZihtcC0+bV9wYXRoKSk7CisJc3RybGNweShtcC0+bV9z
cGVjaWFsLCBkZXYsIHNpemVvZihtcC0+bV9zcGVjaWFsKSk7CisKKwkvKgorCSAqIEdldCB2bm9k
ZSB0byBiZSBjb3ZlcmVkIGluIHRoZSB1cHBlciBmaWxlIHN5c3RlbS4KKwkgKi8KKwlpZiAoKmRp
ciA9PSAnLycgJiYgKihkaXIgKyAxKSA9PSAnXDAnKSB7CisJCS8qIElnbm9yZSBpZiBpdCBtb3Vu
dHMgdG8gZ2xvYmFsIHJvb3QgZGlyZWN0b3J5LiAqLworCQlkcF9jb3ZlcmVkID0gbnVsbHB0cjsK
Kwl9IGVsc2UgeworCQlpZiAoKGVycm9yID0gbmFtZWkoZGlyLCAmZHBfY292ZXJlZCkpICE9IDAp
IHsKKworCQkJZXJyb3IgPSBFTk9FTlQ7CisJCQlnb3RvIGVycjI7CisJCX0KKwkJaWYgKGRwX2Nv
dmVyZWQtPmRfdm5vZGUtPnZfdHlwZSAhPSBWRElSKSB7CisJCQllcnJvciA9IEVOT1RESVI7CisJ
CQlnb3RvIGVycjM7CisJCX0KKwl9CisJbXAtPm1fY292ZXJlZCA9IGRwX2NvdmVyZWQ7CisKKwkv
KgorCSAqIENyZWF0ZSBhIHJvb3Qgdm5vZGUgZm9yIHRoaXMgZmlsZSBzeXN0ZW0uCisJICovCisJ
dmdldChtcCwgMCwgJnZwKTsKKwlpZiAodnAgPT0gbnVsbHB0cikgeworCQllcnJvciA9IEVOT01F
TTsKKwkJZ290byBlcnIzOworCX0KKwl2cC0+dl90eXBlID0gVkRJUjsKKwl2cC0+dl9mbGFncyA9
IFZST09UOworCXZwLT52X21vZGUgPSBTX0lGRElSIHwgU19JUlVTUiB8IFNfSVdVU1IgfCBTX0lY
VVNSOworCisJbXAtPm1fcm9vdCA9IGRlbnRyeV9hbGxvYyhudWxscHRyLCB2cCwgIi8iKTsKKwlp
ZiAoIW1wLT5tX3Jvb3QpIHsKKwkJdnB1dCh2cCk7CisJCWdvdG8gZXJyMzsKKwl9CisJdnB1dCh2
cCk7CisKKwkvKgorCSAqIENhbGwgYSBmaWxlIHN5c3RlbSBzcGVjaWZpYyByb3V0aW5lLgorCSAq
LworCWlmICgoZXJyb3IgPSBWRlNfTU9VTlQobXAsIGRldiwgZmxhZ3MsIGRhdGEpKSAhPSAwKQor
CQlnb3RvIGVycjQ7CisKKwlpZiAobXAtPm1fZmxhZ3MgJiBNTlRfUkRPTkxZKQorCQl2cC0+dl9t
b2RlICY9flNfSVdVU1I7CisKKwkvKgorCSAqIEluc2VydCB0byBtb3VudCBsaXN0CisJICovCisJ
V0lUSF9MT0NLKG1vdW50X2xvY2spIHsKKwkJbW91bnRfbGlzdC5wdXNoX2JhY2sobXApOworCX0K
KworCXJldHVybiAwOyAgIC8qIHN1Y2Nlc3MgKi8KICBlcnI0OgotICAgIGRyZWxlKG1wLT5tX3Jv
b3QpOworCWRyZWxlKG1wLT5tX3Jvb3QpOwogIGVycjM6Ci0gICAgaWYgKGRwX2NvdmVyZWQpCi0g
ICAgICAgIGRyZWxlKGRwX2NvdmVyZWQpOworCWlmIChkcF9jb3ZlcmVkKQorCQlkcmVsZShkcF9j
b3ZlcmVkKTsKICBlcnIyOgotICAgIGRlbGV0ZSBtcDsKKwlkZWxldGUgbXA7CiAgZXJyMToKLSAg
ICBpZiAoZGV2aWNlKQotICAgICAgICBkZXZpY2VfY2xvc2UoZGV2aWNlKTsKKwlpZiAoZGV2aWNl
KQorCQlkZXZpY2VfY2xvc2UoZGV2aWNlKTsKIAotICAgIHJldHVybiBlcnJvcjsKKwlyZXR1cm4g
ZXJyb3I7CiB9CiAKIHZvaWQKIHJlbGVhc2VfbXBfZGVudHJpZXMoc3RydWN0IG1vdW50ICptcCkK
IHsKLSAgICAvKiBEZWNyZW1lbnQgcmVmZXJlY2UgY291bnQgb2Ygcm9vdCB2bm9kZSAqLwotICAg
IGlmIChtcC0+bV9jb3ZlcmVkKSB7Ci0gICAgICAgIGRyZWxlKG1wLT5tX2NvdmVyZWQpOwotICAg
IH0KKwkvKiBEZWNyZW1lbnQgcmVmZXJlY2UgY291bnQgb2Ygcm9vdCB2bm9kZSAqLworCWlmICht
cC0+bV9jb3ZlcmVkKSB7CisJCWRyZWxlKG1wLT5tX2NvdmVyZWQpOworCX0KIAotICAgIC8qIFJl
bGVhc2Ugcm9vdCBkZW50cnkgKi8KLSAgICBkcmVsZShtcC0+bV9yb290KTsKKwkvKiBSZWxlYXNl
IHJvb3QgZGVudHJ5ICovCisJZHJlbGUobXAtPm1fcm9vdCk7CiB9CiAKIGludAogc3lzX3Vtb3Vu
dDIoY29uc3QgY2hhciAqcGF0aCwgaW50IGZsYWdzKQogewotICAgIHN0cnVjdCBtb3VudCAqbXA7
Ci0gICAgaW50IGVycm9yLCBwYXRobGVuOworCXN0cnVjdCBtb3VudCAqbXA7CisJaW50IGVycm9y
LCBwYXRobGVuOwogCi0gICAga3ByaW50ZigiVkZTOiB1bm1vdW50aW5nICVzXG4iLCBwYXRoKTsK
KwlrcHJpbnRmKCJWRlM6IHVubW91bnRpbmcgJXNcbiIsIHBhdGgpOwogCi0gICAgU0NPUEVfTE9D
Syhtb3VudF9sb2NrKTsKKwlTQ09QRV9MT0NLKG1vdW50X2xvY2spOwogCi0gICAgcGF0aGxlbiA9
IHN0cmxlbihwYXRoKTsKLSAgICBpZiAocGF0aGxlbiA+PSBNQVhQQVRITEVOKSB7Ci0gICAgICAg
IGVycm9yID0gRU5BTUVUT09MT05HOwotICAgICAgICBnb3RvIG91dDsKLSAgICB9CisJcGF0aGxl
biA9IHN0cmxlbihwYXRoKTsKKwlpZiAocGF0aGxlbiA+PSBNQVhQQVRITEVOKSB7CisJCWVycm9y
ID0gRU5BTUVUT09MT05HOworCQlnb3RvIG91dDsKKwl9CiAKLSAgICAvKiBHZXQgbW91bnQgZW50
cnkgKi8KLSAgICBmb3IgKGF1dG8mJiB0bXAgOiBtb3VudF9saXN0KSB7Ci0gICAgICAgIGlmICgh
c3RyY21wKHBhdGgsIHRtcC0+bV9wYXRoKSkgewotICAgICAgICAgICAgbXAgPSB0bXA7Ci0gICAg
ICAgICAgICBnb3RvIGZvdW5kOwotICAgICAgICB9Ci0gICAgfQorCS8qIEdldCBtb3VudCBlbnRy
eSAqLworCWZvciAoYXV0byYmIHRtcCA6IG1vdW50X2xpc3QpIHsKKwkJaWYgKCFzdHJjbXAocGF0
aCwgdG1wLT5tX3BhdGgpKSB7CisJCQltcCA9IHRtcDsKKwkJCWdvdG8gZm91bmQ7CisJCX0KKwl9
CiAKLSAgICBlcnJvciA9IEVJTlZBTDsKLSAgICBnb3RvIG91dDsKKwllcnJvciA9IEVJTlZBTDsK
Kwlnb3RvIG91dDsKIAogZm91bmQ6Ci0gICAgLyoKLSAgICAgKiBSb290IGZzIGNhbiBub3QgYmUg
dW5tb3VudGVkLgotICAgICAqLwotICAgIGlmIChtcC0+bV9jb3ZlcmVkID09IG51bGxwdHIgJiYg
IShmbGFncyAmIE1OVF9GT1JDRSkpIHsKLSAgICAgICAgZXJyb3IgPSBFSU5WQUw7Ci0gICAgICAg
IGdvdG8gb3V0OwotICAgIH0KLQotICAgIGlmICgoZXJyb3IgPSBWRlNfVU5NT1VOVChtcCwgZmxh
Z3MpKSAhPSAwKQotICAgICAgICBnb3RvIG91dDsKLSAgICBtb3VudF9saXN0LnJlbW92ZShtcCk7
CisJLyoKKwkgKiBSb290IGZzIGNhbiBub3QgYmUgdW5tb3VudGVkLgorCSAqLworCWlmIChtcC0+
bV9jb3ZlcmVkID09IG51bGxwdHIgJiYgIShmbGFncyAmIE1OVF9GT1JDRSkpIHsKKwkJZXJyb3Ig
PSBFSU5WQUw7CisJCWdvdG8gb3V0OworCX0KKworCWlmICgoZXJyb3IgPSBWRlNfVU5NT1VOVCht
cCwgZmxhZ3MpKSAhPSAwKQorCQlnb3RvIG91dDsKKwltb3VudF9saXN0LnJlbW92ZShtcCk7CiAK
ICNpZmRlZiBIQVZFX0JVRkZFUlMKLSAgICAvKiBGbHVzaCBhbGwgYnVmZmVycyAqLwotICAgIGJp
bnZhbChtcC0+bV9kZXYpOworCS8qIEZsdXNoIGFsbCBidWZmZXJzICovCisJYmludmFsKG1wLT5t
X2Rldik7CiAjZW5kaWYKIAotICAgIGlmIChtcC0+bV9kZXYpCi0gICAgICAgIGRldmljZV9jbG9z
ZShtcC0+bV9kZXYpOwotICAgIGRlbGV0ZSBtcDsKKwlpZiAobXAtPm1fZGV2KQorCQlkZXZpY2Vf
Y2xvc2UobXAtPm1fZGV2KTsKKwlkZWxldGUgbXA7CiAgb3V0OgotICAgIHJldHVybiBlcnJvcjsK
KwlyZXR1cm4gZXJyb3I7CiB9CiAKIGludAogc3lzX3Vtb3VudChjb25zdCBjaGFyICpwYXRoKQog
ewotICAgIHJldHVybiBzeXNfdW1vdW50MihwYXRoLCAwKTsKKwlyZXR1cm4gc3lzX3Vtb3VudDIo
cGF0aCwgMCk7CiB9CiAKIGludAogc3lzX3Bpdm90X3Jvb3QoY29uc3QgY2hhciAqbmV3X3Jvb3Qs
IGNvbnN0IGNoYXIgKnB1dF9vbGQpCiB7Ci0gICAgc3RydWN0IG1vdW50ICpuZXdtcCA9IG51bGxw
dHIsICpvbGRtcCA9IG51bGxwdHI7Ci0gICAgaW50IGVycm9yOwotCi0gICAgV0lUSF9MT0NLKG1v
dW50X2xvY2spIHsKLSAgICAgICAgZm9yIChhdXRvJiYgbXAgOiBtb3VudF9saXN0KSB7Ci0gICAg
ICAgICAgICBpZiAoIXN0cmNtcChtcC0+bV9wYXRoLCBuZXdfcm9vdCkpIHsKLSAgICAgICAgICAg
ICAgICBuZXdtcCA9IG1wOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCFzdHJjbXAo
bXAtPm1fcGF0aCwgcHV0X29sZCkpIHsKLSAgICAgICAgICAgICAgICBvbGRtcCA9IG1wOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlmICghbmV3bXAgfHwgIW9sZG1wIHx8IG5l
d21wID09IG9sZG1wKSB7Ci0gICAgICAgICAgICByZXR1cm4gRUlOVkFMOwotICAgICAgICB9Ci0g
ICAgICAgIGZvciAoYXV0byYmIG1wIDogbW91bnRfbGlzdCkgewotICAgICAgICAgICAgaWYgKG1w
ID09IG5ld21wIHx8IG1wID09IG9sZG1wKSB7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoIXN0cm5jbXAobXAtPm1fcGF0aCwgcHV0X29s
ZCwgc3RybGVuKHB1dF9vbGQpKSkgewotICAgICAgICAgICAgICAgIHJldHVybiBFQlVTWTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoKGVycm9yID0gVkZTX1VOTU9VTlQo
b2xkbXAsIDApKSAhPSAwKSB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgIH0K
LSAgICAgICAgbW91bnRfbGlzdC5yZW1vdmUob2xkbXApOwotCi0gICAgICAgIG5ld21wLT5tX3Jv
b3QtPmRfdm5vZGUtPnZfbW91bnQgPSBuZXdtcDsKLQotICAgICAgICBpZiAobmV3bXAtPm1fY292
ZXJlZCkgewotICAgICAgICAgICAgZHJlbGUobmV3bXAtPm1fY292ZXJlZCk7Ci0gICAgICAgIH0K
LSAgICAgICAgbmV3bXAtPm1fY292ZXJlZCA9IG51bGxwdHI7Ci0KLSAgICAgICAgaWYgKG5ld21w
LT5tX3Jvb3QtPmRfcGFyZW50KSB7Ci0gICAgICAgICAgICBkcmVsZShuZXdtcC0+bV9yb290LT5k
X3BhcmVudCk7Ci0gICAgICAgIH0KLSAgICAgICAgbmV3bXAtPm1fcm9vdC0+ZF9wYXJlbnQgPSBu
dWxscHRyOwotCi0gICAgICAgIHN0cmxjcHkobmV3bXAtPm1fcGF0aCwgIi8iLCBzaXplb2YobmV3
bXAtPm1fcGF0aCkpOwotICAgIH0KLSAgICByZXR1cm4gMDsKKwlzdHJ1Y3QgbW91bnQgKm5ld21w
ID0gbnVsbHB0ciwgKm9sZG1wID0gbnVsbHB0cjsKKwlpbnQgZXJyb3I7CisKKwlXSVRIX0xPQ0so
bW91bnRfbG9jaykgeworCQlmb3IgKGF1dG8mJiBtcCA6IG1vdW50X2xpc3QpIHsKKwkJCWlmICgh
c3RyY21wKG1wLT5tX3BhdGgsIG5ld19yb290KSkgeworCQkJCW5ld21wID0gbXA7CisJCQl9CisJ
CQlpZiAoIXN0cmNtcChtcC0+bV9wYXRoLCBwdXRfb2xkKSkgeworCQkJCW9sZG1wID0gbXA7CisJ
CQl9CisJCX0KKwkJaWYgKCFuZXdtcCB8fCAhb2xkbXAgfHwgbmV3bXAgPT0gb2xkbXApIHsKKwkJ
CXJldHVybiBFSU5WQUw7CisJCX0KKwkJZm9yIChhdXRvJiYgbXAgOiBtb3VudF9saXN0KSB7CisJ
CQlpZiAobXAgPT0gbmV3bXAgfHwgbXAgPT0gb2xkbXApIHsKKwkJCQljb250aW51ZTsKKwkJCX0K
KwkJCWlmICghc3RybmNtcChtcC0+bV9wYXRoLCBwdXRfb2xkLCBzdHJsZW4ocHV0X29sZCkpKSB7
CisJCQkJcmV0dXJuIEVCVVNZOworCQkJfQorCQl9CisJCWlmICgoZXJyb3IgPSBWRlNfVU5NT1VO
VChvbGRtcCwgMCkpICE9IDApIHsKKwkJCXJldHVybiBlcnJvcjsKKwkJfQorCQltb3VudF9saXN0
LnJlbW92ZShvbGRtcCk7CisKKwkJbmV3bXAtPm1fcm9vdC0+ZF92bm9kZS0+dl9tb3VudCA9IG5l
d21wOworCisJCWlmIChuZXdtcC0+bV9jb3ZlcmVkKSB7CisJCQlkcmVsZShuZXdtcC0+bV9jb3Zl
cmVkKTsKKwkJfQorCQluZXdtcC0+bV9jb3ZlcmVkID0gbnVsbHB0cjsKKworCQlpZiAobmV3bXAt
Pm1fcm9vdC0+ZF9wYXJlbnQpIHsKKwkJCWRyZWxlKG5ld21wLT5tX3Jvb3QtPmRfcGFyZW50KTsK
KwkJfQorCQluZXdtcC0+bV9yb290LT5kX3BhcmVudCA9IG51bGxwdHI7CisKKwkJc3RybGNweShu
ZXdtcC0+bV9wYXRoLCAiLyIsIHNpemVvZihuZXdtcC0+bV9wYXRoKSk7CisJfQorCXJldHVybiAw
OwogfQogCiBpbnQKIHN5c19zeW5jKHZvaWQpCiB7Ci0gICAgLyogQ2FsbCBlYWNoIG1vdW50ZWQg
ZmlsZSBzeXN0ZW0uICovCi0gICAgV0lUSF9MT0NLKG1vdW50X2xvY2spIHsKLSAgICAgICAgZm9y
IChhdXRvJiYgbXAgOiBtb3VudF9saXN0KSB7Ci0gICAgICAgICAgICBWRlNfU1lOQyhtcCk7Ci0g
ICAgICAgIH0KLSAgICB9CisJLyogQ2FsbCBlYWNoIG1vdW50ZWQgZmlsZSBzeXN0ZW0uICovCisJ
V0lUSF9MT0NLKG1vdW50X2xvY2spIHsKKwkJZm9yIChhdXRvJiYgbXAgOiBtb3VudF9saXN0KSB7
CisJCQlWRlNfU1lOQyhtcCk7CisJCX0KKwl9CiAjaWZkZWYgSEFWRV9CVUZGRVJTCi0gICAgYmlv
X3N5bmMoKTsKKwliaW9fc3luYygpOwogI2VuZGlmCi0gICAgcmV0dXJuIDA7CisJcmV0dXJuIDA7
CiB9CiAKIC8qCkBAIC0zNjAsMjUgKzM2MCwyNSBAQCBzeXNfc3luYyh2b2lkKQogc3RhdGljIHNp
emVfdAogY291bnRfbWF0Y2goY29uc3QgY2hhciAqcGF0aCwgY2hhciAqbW91bnRfcm9vdCkKIHsK
LSAgICBzaXplX3QgbGVuID0gMDsKKwlzaXplX3QgbGVuID0gMDsKIAotICAgIHdoaWxlICgqcGF0
aCAmJiAqbW91bnRfcm9vdCkgewotICAgICAgICBpZiAoKnBhdGggIT0gKm1vdW50X3Jvb3QpCi0g
ICAgICAgICAgICBicmVhazsKKwl3aGlsZSAoKnBhdGggJiYgKm1vdW50X3Jvb3QpIHsKKwkJaWYg
KCpwYXRoICE9ICptb3VudF9yb290KQorCQkJYnJlYWs7CiAKLSAgICAgICAgcGF0aCsrOwotICAg
ICAgICBtb3VudF9yb290Kys7Ci0gICAgICAgIGxlbisrOwotICAgIH0KLSAgICBpZiAoKm1vdW50
X3Jvb3QgIT0gJ1wwJykKLSAgICAgICAgcmV0dXJuIDA7CisJCXBhdGgrKzsKKwkJbW91bnRfcm9v
dCsrOworCQlsZW4rKzsKKwl9CisJaWYgKCptb3VudF9yb290ICE9ICdcMCcpCisJCXJldHVybiAw
OwogCi0gICAgaWYgKGxlbiA9PSAxICYmICoocGF0aCAtIDEpID09ICcvJykKLSAgICAgICAgcmV0
dXJuIDE7CisJaWYgKGxlbiA9PSAxICYmICoocGF0aCAtIDEpID09ICcvJykKKwkJcmV0dXJuIDE7
CiAKLSAgICBpZiAoKnBhdGggPT0gJ1wwJyB8fCAqcGF0aCA9PSAnLycpCi0gICAgICAgIHJldHVy
biBsZW47Ci0gICAgcmV0dXJuIDA7CisJaWYgKCpwYXRoID09ICdcMCcgfHwgKnBhdGggPT0gJy8n
KQorCQlyZXR1cm4gbGVuOworCXJldHVybiAwOwogfQogCiAvKgpAQCAtMzkwLDI4ICszOTAsMjgg
QEAgY291bnRfbWF0Y2goY29uc3QgY2hhciAqcGF0aCwgY2hhciAqbW91bnRfcm9vdCkKIGludAog
dmZzX2ZpbmRyb290KGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBtb3VudCAqKm1wLCBjaGFyICoq
cm9vdCkKIHsKLSAgICBzdHJ1Y3QgbW91bnQgKm0gPSBudWxscHRyOwotICAgIHNpemVfdCBsZW4s
IG1heF9sZW4gPSAwOwotCi0gICAgaWYgKCFwYXRoKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAg
ICAvKiBGaW5kIG1vdW50IHBvaW50IGZyb20gbmVhcmVzdCBwYXRoICovCi0gICAgU0NPUEVfTE9D
Syhtb3VudF9sb2NrKTsKLSAgICBmb3IgKGF1dG8mJiB0bXAgOiBtb3VudF9saXN0KSB7Ci0gICAg
ICAgIGxlbiA9IGNvdW50X21hdGNoKHBhdGgsIHRtcC0+bV9wYXRoKTsKLSAgICAgICAgaWYgKGxl
biA+IG1heF9sZW4pIHsKLSAgICAgICAgICAgIG1heF9sZW4gPSBsZW47Ci0gICAgICAgICAgICBt
ID0gdG1wOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmIChtID09IG51bGxwdHIpCi0gICAgICAg
IHJldHVybiAtMTsKLSAgICAqcm9vdCA9IChjaGFyICopKHBhdGggKyBtYXhfbGVuKTsKLSAgICBp
ZiAoKipyb290ID09ICcvJykKLSAgICAgICAgKCpyb290KSsrOwotICAgICptcCA9IG07Ci0gICAg
cmV0dXJuIDA7CisJc3RydWN0IG1vdW50ICptID0gbnVsbHB0cjsKKwlzaXplX3QgbGVuLCBtYXhf
bGVuID0gMDsKKworCWlmICghcGF0aCkKKwkJcmV0dXJuIC0xOworCisJLyogRmluZCBtb3VudCBw
b2ludCBmcm9tIG5lYXJlc3QgcGF0aCAqLworCVNDT1BFX0xPQ0sobW91bnRfbG9jayk7CisJZm9y
IChhdXRvJiYgdG1wIDogbW91bnRfbGlzdCkgeworCQlsZW4gPSBjb3VudF9tYXRjaChwYXRoLCB0
bXAtPm1fcGF0aCk7CisJCWlmIChsZW4gPiBtYXhfbGVuKSB7CisJCQltYXhfbGVuID0gbGVuOwor
CQkJbSA9IHRtcDsKKwkJfQorCX0KKwlpZiAobSA9PSBudWxscHRyKQorCQlyZXR1cm4gLTE7CisJ
KnJvb3QgPSAoY2hhciAqKShwYXRoICsgbWF4X2xlbik7CisJaWYgKCoqcm9vdCA9PSAnLycpCisJ
CSgqcm9vdCkrKzsKKwkqbXAgPSBtOworCXJldHVybiAwOwogfQogCiAvKgpAQCAtNDIwLDggKzQy
MCw4IEBAIHZmc19maW5kcm9vdChjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3QgbW91bnQgKiptcCwg
Y2hhciAqKnJvb3QpCiB2b2lkCiB2ZnNfYnVzeShzdHJ1Y3QgbW91bnQgKm1wKQogewotICAgIFND
T1BFX0xPQ0sobW91bnRfbG9jayk7Ci0gICAgbXAtPm1fY291bnQrKzsKKwlTQ09QRV9MT0NLKG1v
dW50X2xvY2spOworCW1wLT5tX2NvdW50Kys7CiB9CiAKIApAQCAtNDMxLDQ1ICs0MzEsNDUgQEAg
dmZzX2J1c3koc3RydWN0IG1vdW50ICptcCkKIHZvaWQKIHZmc191bmJ1c3koc3RydWN0IG1vdW50
ICptcCkKIHsKLSAgICBTQ09QRV9MT0NLKG1vdW50X2xvY2spOwotICAgIG1wLT5tX2NvdW50LS07
CisJU0NPUEVfTE9DSyhtb3VudF9sb2NrKTsKKwltcC0+bV9jb3VudC0tOwogfQogCiBpbnQKIHZm
c19udWxsb3Aodm9pZCkKIHsKLSAgICByZXR1cm4gMDsKKwlyZXR1cm4gMDsKIH0KIAogaW50CiB2
ZnNfZWludmFsKHZvaWQpCiB7Ci0gICAgcmV0dXJuIEVJTlZBTDsKKwlyZXR1cm4gRUlOVkFMOwog
fQogCiBuYW1lc3BhY2Ugb3N2IHsKIAogbW91bnRfZGVzYyB0b19tb3VudF9kZXNjKG1vdW50KiBt
KQogewotICAgIG1vdW50X2Rlc2MgcmV0OwotICAgIHJldC5zcGVjaWFsID0gbS0+bV9zcGVjaWFs
OwotICAgIHJldC5wYXRoID0gbS0+bV9wYXRoOwotICAgIHJldC50eXBlID0gZnNfZ2V0ZnNuYW1l
KG0tPm1fb3ApOwotICAgIC8vIEZJWE1FOiByZWNvcmQgb3B0aW9ucwotICAgIHJldC5vcHRpb25z
ID0gIiI7Ci0gICAgcmV0dXJuIHJldDsKKwltb3VudF9kZXNjIHJldDsKKwlyZXQuc3BlY2lhbCA9
IG0tPm1fc3BlY2lhbDsKKwlyZXQucGF0aCA9IG0tPm1fcGF0aDsKKwlyZXQudHlwZSA9IGZzX2dl
dGZzbmFtZShtLT5tX29wKTsKKwkvLyBGSVhNRTogcmVjb3JkIG9wdGlvbnMKKwlyZXQub3B0aW9u
cyA9ICIiOworCXJldHVybiByZXQ7CiB9CiAKIHN0ZDo6dmVjdG9yPG1vdW50X2Rlc2M+CiBjdXJy
ZW50X21vdW50cygpCiB7Ci0gICAgV0lUSF9MT0NLKG1vdW50X2xvY2spIHsKLSAgICAgICAgc3Rk
Ojp2ZWN0b3I8bW91bnRfZGVzYz4gcmV0OwotICAgICAgICBmb3IgKGF1dG8mJiBtcCA6IG1vdW50
X2xpc3QpIHsKLSAgICAgICAgICAgIHJldC5wdXNoX2JhY2sodG9fbW91bnRfZGVzYyhtcCkpOwot
ICAgICAgICB9Ci0gICAgICAgIHJldHVybiByZXQ7Ci0gICAgfQorCVdJVEhfTE9DSyhtb3VudF9s
b2NrKSB7CisJCXN0ZDo6dmVjdG9yPG1vdW50X2Rlc2M+IHJldDsKKwkJZm9yIChhdXRvJiYgbXAg
OiBtb3VudF9saXN0KSB7CisJCQlyZXQucHVzaF9iYWNrKHRvX21vdW50X2Rlc2MobXApKTsKKwkJ
fQorCQlyZXR1cm4gcmV0OworCX0KIH0KIAogfQpAQCAtNDc4LDE0ICs0NzgsMTQgQEAgY3VycmVu
dF9tb3VudHMoKQogdm9pZAogbW91bnRfZHVtcCh2b2lkKQogewotICAgIFNDT1BFX0xPQ0sobW91
bnRfbG9jayk7CisJU0NPUEVfTE9DSyhtb3VudF9sb2NrKTsKIAotICAgIGtwcmludGYoIm1vdW50
X2R1bXBcbiIpOwotICAgIGtwcmludGYoImRldiAgICAgIGNvdW50IHJvb3RcbiIpOwotICAgIGtw
cmludGYoIi0tLS0tLS0tIC0tLS0tIC0tLS0tLS0tXG4iKTsKKwlrcHJpbnRmKCJtb3VudF9kdW1w
XG4iKTsKKwlrcHJpbnRmKCJkZXYgICAgICBjb3VudCByb290XG4iKTsKKwlrcHJpbnRmKCItLS0t
LS0tLSAtLS0tLSAtLS0tLS0tLVxuIik7CiAKLSAgICBmb3IgKGF1dG8mJiBtcCA6IG1vdW50X2xp
c3QpIHsKLSAgICAgICAga3ByaW50ZigiJTh4ICU1ZCAlc1xuIiwgbXAtPm1fZGV2LCBtcC0+bV9j
b3VudCwgbXAtPm1fcGF0aCk7Ci0gICAgfQorCWZvciAoYXV0byYmIG1wIDogbW91bnRfbGlzdCkg
eworCQlrcHJpbnRmKCIlOHggJTVkICVzXG4iLCBtcC0+bV9kZXYsIG1wLT5tX2NvdW50LCBtcC0+
bV9wYXRoKTsKKwl9CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3N5c2NhbGxz
LmMgYi9saWIvdmZzY29yZS9zeXNjYWxscy5jCmluZGV4IDQ4N2Q1NzI5Li5iNTQzM2VjZSAxMDA2
NDQKLS0tIGEvbGliL3Zmc2NvcmUvc3lzY2FsbHMuYworKysgYi9saWIvdmZzY29yZS9zeXNjYWxs
cy5jCkBAIC0yNDUsNzIgKzI0NSw3MiBAQCBpbnQKIHN5c19yZWFkKHN0cnVjdCBmaWxlICpmcCwg
Y29uc3Qgc3RydWN0IGlvdmVjICppb3YsIHNpemVfdCBuaW92LAogCQlvZmZfdCBvZmZzZXQsIHNp
emVfdCAqY291bnQpCiB7Ci0gICAgaWYgKChmcC0+Zl9mbGFncyAmIEZSRUFEKSA9PSAwKQotICAg
ICAgICByZXR1cm4gRUJBREY7Ci0KLSAgICBzaXplX3QgYnl0ZXMgPSAwOwotICAgIGF1dG8gaW92
cCA9IGlvdjsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbmlvdjsgaSsrKSB7Ci0gICAg
ICAgIGlmIChpb3ZwLT5pb3ZfbGVuID4gSU9TSVpFX01BWCAtIGJ5dGVzKSB7Ci0gICAgICAgICAg
ICByZXR1cm4gRUlOVkFMOwotICAgICAgICB9Ci0gICAgICAgIGJ5dGVzICs9IGlvdnAtPmlvdl9s
ZW47Ci0gICAgICAgIGlvdnArKzsKLSAgICB9Ci0KLSAgICBpZiAoYnl0ZXMgPT0gMCkgewotICAg
ICAgICAqY291bnQgPSAwOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBzdHJ1Y3Qg
dWlvIHVpbzsKLSAgICAvLyBVbmZvcnR1bmF0ZWx5LCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlv
biBvZiBmcC0+cmVhZCB6ZXJvcyB0aGUKLSAgICAvLyBpb3ZfbGVuIGZpZWxkcyB3aGVuIGl0IHJl
YWRzIGZyb20gZGlzaywgc28gd2UgaGF2ZSB0byBjb3B5IGlvdi4KLSAgICBzdGQ6OnZlY3Rvcjxp
b3ZlYz4gY29weV9pb3YoaW92LCBpb3YgKyBuaW92KTsKLSAgICB1aW8udWlvX2lvdiA9IGNvcHlf
aW92LmRhdGEoKTsKLSAgICB1aW8udWlvX2lvdmNudCA9IG5pb3Y7Ci0gICAgdWlvLnVpb19vZmZz
ZXQgPSBvZmZzZXQ7Ci0gICAgdWlvLnVpb19yZXNpZCA9IGJ5dGVzOwotICAgIHVpby51aW9fcncg
PSBVSU9fUkVBRDsKLSAgICBhdXRvIGVycm9yID0gZnAtPnJlYWQoJnVpbywgKG9mZnNldCA9PSAt
MSkgPyAwIDogRk9GX09GRlNFVCk7Ci0gICAgKmNvdW50ID0gYnl0ZXMgLSB1aW8udWlvX3Jlc2lk
OwotICAgIHJldHVybiBlcnJvcjsKKwlpZiAoKGZwLT5mX2ZsYWdzICYgRlJFQUQpID09IDApCisJ
CXJldHVybiBFQkFERjsKKworCXNpemVfdCBieXRlcyA9IDA7CisJYXV0byBpb3ZwID0gaW92Owor
CWZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBuaW92OyBpKyspIHsKKwkJaWYgKGlvdnAtPmlvdl9s
ZW4gPiBJT1NJWkVfTUFYIC0gYnl0ZXMpIHsKKwkJCXJldHVybiBFSU5WQUw7CisJCX0KKwkJYnl0
ZXMgKz0gaW92cC0+aW92X2xlbjsKKwkJaW92cCsrOworCX0KKworCWlmIChieXRlcyA9PSAwKSB7
CisJCSpjb3VudCA9IDA7CisJCXJldHVybiAwOworCX0KKworCXN0cnVjdCB1aW8gdWlvOworCS8v
IFVuZm9ydHVuYXRlbHksIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9mIGZwLT5yZWFkIHpl
cm9zIHRoZQorCS8vIGlvdl9sZW4gZmllbGRzIHdoZW4gaXQgcmVhZHMgZnJvbSBkaXNrLCBzbyB3
ZSBoYXZlIHRvIGNvcHkgaW92LgorCXN0ZDo6dmVjdG9yPGlvdmVjPiBjb3B5X2lvdihpb3YsIGlv
diArIG5pb3YpOworCXVpby51aW9faW92ID0gY29weV9pb3YuZGF0YSgpOworCXVpby51aW9faW92
Y250ID0gbmlvdjsKKwl1aW8udWlvX29mZnNldCA9IG9mZnNldDsKKwl1aW8udWlvX3Jlc2lkID0g
Ynl0ZXM7CisJdWlvLnVpb19ydyA9IFVJT19SRUFEOworCWF1dG8gZXJyb3IgPSBmcC0+cmVhZCgm
dWlvLCAob2Zmc2V0ID09IC0xKSA/IDAgOiBGT0ZfT0ZGU0VUKTsKKwkqY291bnQgPSBieXRlcyAt
IHVpby51aW9fcmVzaWQ7CisJcmV0dXJuIGVycm9yOwogfQogCiBpbnQKIHN5c193cml0ZShzdHJ1
Y3QgZmlsZSAqZnAsIGNvbnN0IHN0cnVjdCBpb3ZlYyAqaW92LCBzaXplX3QgbmlvdiwKIAkJb2Zm
X3Qgb2Zmc2V0LCBzaXplX3QgKmNvdW50KQogewotICAgIGlmICgoZnAtPmZfZmxhZ3MgJiBGV1JJ
VEUpID09IDApCi0gICAgICAgIHJldHVybiBFQkFERjsKLQotICAgIHNpemVfdCBieXRlcyA9IDA7
Ci0gICAgYXV0byBpb3ZwID0gaW92OwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBuaW92
OyBpKyspIHsKLSAgICAgICAgaWYgKGlvdnAtPmlvdl9sZW4gPiBJT1NJWkVfTUFYIC0gYnl0ZXMp
IHsKLSAgICAgICAgICAgIHJldHVybiBFSU5WQUw7Ci0gICAgICAgIH0KLSAgICAgICAgYnl0ZXMg
Kz0gaW92cC0+aW92X2xlbjsKLSAgICAgICAgaW92cCsrOwotICAgIH0KLQotICAgIGlmIChieXRl
cyA9PSAwKSB7Ci0gICAgICAgICpjb3VudCA9IDA7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0K
LQotICAgIHN0cnVjdCB1aW8gdWlvOwotICAgIC8vIFVuZm9ydHVuYXRlbHksIHRoZSBjdXJyZW50
IGltcGxlbWVudGF0aW9uIG9mIGZwLT53cml0ZSB6ZXJvcyB0aGUKLSAgICAvLyBpb3ZfbGVuIGZp
ZWxkcyB3aGVuIGl0IHdyaXRlcyB0byBkaXNrLCBzbyB3ZSBoYXZlIHRvIGNvcHkgaW92LgotICAg
IHN0ZDo6dmVjdG9yPGlvdmVjPiBjb3B5X2lvdihpb3YsIGlvdiArIG5pb3YpOwotICAgIHVpby51
aW9faW92ID0gY29weV9pb3YuZGF0YSgpOwotICAgIHVpby51aW9faW92Y250ID0gbmlvdjsKLSAg
ICB1aW8udWlvX29mZnNldCA9IG9mZnNldDsKLSAgICB1aW8udWlvX3Jlc2lkID0gYnl0ZXM7Ci0g
ICAgdWlvLnVpb19ydyA9IFVJT19XUklURTsKLSAgICBhdXRvIGVycm9yID0gZnAtPndyaXRlKCZ1
aW8sIChvZmZzZXQgPT0gLTEpID8gMCA6IEZPRl9PRkZTRVQpOwotICAgICpjb3VudCA9IGJ5dGVz
IC0gdWlvLnVpb19yZXNpZDsKLSAgICByZXR1cm4gZXJyb3I7CisJaWYgKChmcC0+Zl9mbGFncyAm
IEZXUklURSkgPT0gMCkKKwkJcmV0dXJuIEVCQURGOworCisJc2l6ZV90IGJ5dGVzID0gMDsKKwlh
dXRvIGlvdnAgPSBpb3Y7CisJZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG5pb3Y7IGkrKykgewor
CQlpZiAoaW92cC0+aW92X2xlbiA+IElPU0laRV9NQVggLSBieXRlcykgeworCQkJcmV0dXJuIEVJ
TlZBTDsKKwkJfQorCQlieXRlcyArPSBpb3ZwLT5pb3ZfbGVuOworCQlpb3ZwKys7CisJfQorCisJ
aWYgKGJ5dGVzID09IDApIHsKKwkJKmNvdW50ID0gMDsKKwkJcmV0dXJuIDA7CisJfQorCisJc3Ry
dWN0IHVpbyB1aW87CisJLy8gVW5mb3J0dW5hdGVseSwgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRp
b24gb2YgZnAtPndyaXRlIHplcm9zIHRoZQorCS8vIGlvdl9sZW4gZmllbGRzIHdoZW4gaXQgd3Jp
dGVzIHRvIGRpc2ssIHNvIHdlIGhhdmUgdG8gY29weSBpb3YuCisJc3RkOjp2ZWN0b3I8aW92ZWM+
IGNvcHlfaW92KGlvdiwgaW92ICsgbmlvdik7CisJdWlvLnVpb19pb3YgPSBjb3B5X2lvdi5kYXRh
KCk7CisJdWlvLnVpb19pb3ZjbnQgPSBuaW92OworCXVpby51aW9fb2Zmc2V0ID0gb2Zmc2V0Owor
CXVpby51aW9fcmVzaWQgPSBieXRlczsKKwl1aW8udWlvX3J3ID0gVUlPX1dSSVRFOworCWF1dG8g
ZXJyb3IgPSBmcC0+d3JpdGUoJnVpbywgKG9mZnNldCA9PSAtMSkgPyAwIDogRk9GX09GRlNFVCk7
CisJKmNvdW50ID0gYnl0ZXMgLSB1aW8udWlvX3Jlc2lkOworCXJldHVybiBlcnJvcjsKIH0KIAog
aW50CkBAIC0xMjIxLDggKzEyMjEsOCBAQCBzeXNfcmVhZGxpbmsoY2hhciAqcGF0aCwgY2hhciAq
YnVmLCBzaXplX3QgYnVmc2l6ZSwgc3NpemVfdCAqc2l6ZSkKICAqLwogc3RhdGljIGJvb2wgaXNf
dGltZXZhbF92YWxpZChjb25zdCBzdHJ1Y3QgdGltZXZhbCAqdGltZSkKIHsKLSAgICByZXR1cm4g
KHRpbWUtPnR2X3NlYyA+PSAwKSAmJgotICAgICAgICAgICAodGltZS0+dHZfdXNlYyA+PSAwICYm
IHRpbWUtPnR2X3VzZWMgPCAxMDAwMDAwKTsKKwlyZXR1cm4gKHRpbWUtPnR2X3NlYyA+PSAwKSAm
JgorCQkgICAodGltZS0+dHZfdXNlYyA+PSAwICYmIHRpbWUtPnR2X3VzZWMgPCAxMDAwMDAwKTsK
IH0KIAogLyoKQEAgLTEyMzAsNTggKzEyMzAsNTggQEAgc3RhdGljIGJvb2wgaXNfdGltZXZhbF92
YWxpZChjb25zdCBzdHJ1Y3QgdGltZXZhbCAqdGltZSkKICAqLwogc3RhdGljIHZvaWQgY29udmVy
dF90aW1ldmFsKHN0cnVjdCB0aW1lc3BlYyAmdG8sIGNvbnN0IHN0cnVjdCB0aW1ldmFsICpmcm9t
KQogewotICAgIGlmIChmcm9tKSB7Ci0gICAgICAgIHRvLnR2X3NlYyA9IGZyb20tPnR2X3NlYzsK
LSAgICAgICAgdG8udHZfbnNlYyA9IGZyb20tPnR2X3VzZWMgKiAxMDAwOyAvLyBDb252ZXJ0IG1p
Y3Jvc2Vjb25kcyB0byBuYW5vc2Vjb25kcwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGNsb2NrX2dl
dHRpbWUoQ0xPQ0tfUkVBTFRJTUUsICZ0byk7Ci0gICAgfQorCWlmIChmcm9tKSB7CisJCXRvLnR2
X3NlYyA9IGZyb20tPnR2X3NlYzsKKwkJdG8udHZfbnNlYyA9IGZyb20tPnR2X3VzZWMgKiAxMDAw
OyAvLyBDb252ZXJ0IG1pY3Jvc2Vjb25kcyB0byBuYW5vc2Vjb25kcworCX0gZWxzZSB7CisJCWNs
b2NrX2dldHRpbWUoQ0xPQ0tfUkVBTFRJTUUsICZ0byk7CisJfQogfQogCiBpbnQKIHN5c191dGlt
ZXMoY2hhciAqcGF0aCwgY29uc3Qgc3RydWN0IHRpbWV2YWwgdGltZXNbMl0sIGludCBmbGFncykK
IHsKLSAgICBpbnQgZXJyb3I7Ci0gICAgc3RydWN0IGRlbnRyeSAqZHA7Ci0gICAgc3RydWN0IHRp
bWVzcGVjIHRpbWVzcGVjX3RpbWVzWzJdOwotCi0gICAgRFBSSU5URihWRlNEQl9TWVNDQUxMLCAo
InN5c191dGltZXM6IHBhdGg9JXNcbiIsIHBhdGgpKTsKLQotICAgIGlmICh0aW1lcyAmJiAoIWlz
X3RpbWV2YWxfdmFsaWQoJnRpbWVzWzBdKSB8fCAhaXNfdGltZXZhbF92YWxpZCgmdGltZXNbMV0p
KSkKLSAgICAgICAgcmV0dXJuIEVJTlZBTDsKLQotICAgIC8vIENvbnZlcnQgZWFjaCBlbGVtZW50
IG9mIHRpbWV2YWwgYXJyYXkgdG8gdGhlIHRpbWVzcGVjIHR5cGUKLSAgICBjb252ZXJ0X3RpbWV2
YWwodGltZXNwZWNfdGltZXNbMF0sIHRpbWVzID8gdGltZXMgKyAwIDogbnVsbHB0cik7Ci0gICAg
Y29udmVydF90aW1ldmFsKHRpbWVzcGVjX3RpbWVzWzFdLCB0aW1lcyA/IHRpbWVzICsgMSA6IG51
bGxwdHIpOwotCi0gICAgaWYgKGZsYWdzICYgQVRfU1lNTElOS19OT0ZPTExPVykgewotICAgICAg
ICBzdHJ1Y3QgZGVudHJ5ICpkZHA7Ci0gICAgICAgIGVycm9yID0gbG9va3VwKHBhdGgsICZkZHAs
IG51bGxwdHIpOwotICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJv
cjsKLSAgICAgICAgfQotCi0gICAgICAgIGVycm9yID0gbmFtZWlfbGFzdF9ub2ZvbGxvdyhwYXRo
LCBkZHAsICZkcCk7Ci0gICAgICAgIGlmIChkZHAgIT0gbnVsbHB0cikgewotICAgICAgICAgICAg
ZHJlbGUoZGRwKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAg
IHJldHVybiBlcnJvcjsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGVycm9yID0g
bmFtZWkocGF0aCwgJmRwKTsKLSAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAgICAgcmV0dXJu
IGVycm9yOwotICAgIH0KLQotICAgIGlmIChkcC0+ZF9tb3VudC0+bV9mbGFncyAmIE1OVF9SRE9O
TFkpIHsKLSAgICAgICAgZXJyb3IgPSBFUk9GUzsKLSAgICB9IGVsc2UgewotICAgICAgICBlcnJv
ciA9IHZuX3NldHRpbWVzKGRwLT5kX3Zub2RlLCB0aW1lc3BlY190aW1lcyk7Ci0gICAgfQotCi0g
ICAgZHJlbGUoZHApOwotICAgIHJldHVybiBlcnJvcjsKKwlpbnQgZXJyb3I7CisJc3RydWN0IGRl
bnRyeSAqZHA7CisJc3RydWN0IHRpbWVzcGVjIHRpbWVzcGVjX3RpbWVzWzJdOworCisJRFBSSU5U
RihWRlNEQl9TWVNDQUxMLCAoInN5c191dGltZXM6IHBhdGg9JXNcbiIsIHBhdGgpKTsKKworCWlm
ICh0aW1lcyAmJiAoIWlzX3RpbWV2YWxfdmFsaWQoJnRpbWVzWzBdKSB8fCAhaXNfdGltZXZhbF92
YWxpZCgmdGltZXNbMV0pKSkKKwkJcmV0dXJuIEVJTlZBTDsKKworCS8vIENvbnZlcnQgZWFjaCBl
bGVtZW50IG9mIHRpbWV2YWwgYXJyYXkgdG8gdGhlIHRpbWVzcGVjIHR5cGUKKwljb252ZXJ0X3Rp
bWV2YWwodGltZXNwZWNfdGltZXNbMF0sIHRpbWVzID8gdGltZXMgKyAwIDogbnVsbHB0cik7CisJ
Y29udmVydF90aW1ldmFsKHRpbWVzcGVjX3RpbWVzWzFdLCB0aW1lcyA/IHRpbWVzICsgMSA6IG51
bGxwdHIpOworCisJaWYgKGZsYWdzICYgQVRfU1lNTElOS19OT0ZPTExPVykgeworCQlzdHJ1Y3Qg
ZGVudHJ5ICpkZHA7CisJCWVycm9yID0gbG9va3VwKHBhdGgsICZkZHAsIG51bGxwdHIpOworCQlp
ZiAoZXJyb3IpIHsKKwkJCXJldHVybiBlcnJvcjsKKwkJfQorCisJCWVycm9yID0gbmFtZWlfbGFz
dF9ub2ZvbGxvdyhwYXRoLCBkZHAsICZkcCk7CisJCWlmIChkZHAgIT0gbnVsbHB0cikgeworCQkJ
ZHJlbGUoZGRwKTsKKwkJfQorCQlpZiAoZXJyb3IpIHsKKwkJCXJldHVybiBlcnJvcjsKKwkJfQor
CX0gZWxzZSB7CisJCWVycm9yID0gbmFtZWkocGF0aCwgJmRwKTsKKwkJaWYgKGVycm9yKQorCQkJ
cmV0dXJuIGVycm9yOworCX0KKworCWlmIChkcC0+ZF9tb3VudC0+bV9mbGFncyAmIE1OVF9SRE9O
TFkpIHsKKwkJZXJyb3IgPSBFUk9GUzsKKwl9IGVsc2UgeworCQllcnJvciA9IHZuX3NldHRpbWVz
KGRwLT5kX3Zub2RlLCB0aW1lc3BlY190aW1lcyk7CisJfQorCisJZHJlbGUoZHApOworCXJldHVy
biBlcnJvcjsKIH0KIAogLyoKQEAgLTEyODksNyArMTI4OSw3IEBAIHN5c191dGltZXMoY2hhciAq
cGF0aCwgY29uc3Qgc3RydWN0IHRpbWV2YWwgdGltZXNbMl0sIGludCBmbGFncykKICAqLwogc3Rh
dGljIGJvb2wgaXNfdGltZXNwZWNfdmFsaWQoY29uc3Qgc3RydWN0IHRpbWVzcGVjICZ0aW1lKQog
ewotICAgIHJldHVybiAodGltZS50dl9zZWMgPj0gMCkgJiYKKwlyZXR1cm4gKHRpbWUudHZfc2Vj
ID49IDApICYmCiAJICAgKCh0aW1lLnR2X25zZWMgPj0gMCAmJiB0aW1lLnR2X25zZWMgPD0gOTk5
OTk5OTk5KSB8fAogCSAgICB0aW1lLnR2X25zZWMgPT0gVVRJTUVfTk9XIHx8CiAJICAgIHRpbWUu
dHZfbnNlYyA9PSBVVElNRV9PTUlUKTsKQEAgLTEyOTcsNDggKzEyOTcsNDggQEAgc3RhdGljIGJv
b2wgaXNfdGltZXNwZWNfdmFsaWQoY29uc3Qgc3RydWN0IHRpbWVzcGVjICZ0aW1lKQogCiB2b2lk
IGluaXRfdGltZXNwZWMoc3RydWN0IHRpbWVzcGVjICZfdGltZXMsIGNvbnN0IHN0cnVjdCB0aW1l
c3BlYyAqdGltZXMpCiB7Ci0gICAgaWYgKHRpbWVzID09IG51bGxwdHIgfHwgdGltZXMtPnR2X25z
ZWMgPT0gVVRJTUVfTk9XKSB7Ci0gICAgICAgIGNsb2NrX2dldHRpbWUoQ0xPQ0tfUkVBTFRJTUUs
ICZfdGltZXMpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIF90aW1lcy50dl9zZWMgPSB0aW1lcy0+
dHZfc2VjOwotICAgICAgICBfdGltZXMudHZfbnNlYyA9IHRpbWVzLT50dl9uc2VjOwotICAgIH0K
LSAgICByZXR1cm47CisJaWYgKHRpbWVzID09IG51bGxwdHIgfHwgdGltZXMtPnR2X25zZWMgPT0g
VVRJTUVfTk9XKSB7CisJCWNsb2NrX2dldHRpbWUoQ0xPQ0tfUkVBTFRJTUUsICZfdGltZXMpOwor
CX0gZWxzZSB7CisJCV90aW1lcy50dl9zZWMgPSB0aW1lcy0+dHZfc2VjOworCQlfdGltZXMudHZf
bnNlYyA9IHRpbWVzLT50dl9uc2VjOworCX0KKwlyZXR1cm47CiB9CiAKIGludAogc3lzX3V0aW1l
bnNhdChpbnQgZGlyZmQsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBjb25zdCBzdHJ1Y3QgdGltZXNw
ZWMgdGltZXNbMl0sIGludCBmbGFncykKIHsKLSAgICBpbnQgZXJyb3I7Ci0gICAgc3RkOjpzdHJp
bmcgYXA7Ci0gICAgc3RydWN0IHRpbWVzcGVjIHRpbWVzcGVjX3RpbWVzWzJdOwotICAgIGV4dGVy
biBzdHJ1Y3QgdGFzayAqbWFpbl90YXNrOwotICAgIHN0cnVjdCBkZW50cnkgKmRwOworCWludCBl
cnJvcjsKKwlzdGQ6OnN0cmluZyBhcDsKKwlzdHJ1Y3QgdGltZXNwZWMgdGltZXNwZWNfdGltZXNb
Ml07CisJZXh0ZXJuIHN0cnVjdCB0YXNrICptYWluX3Rhc2s7CisJc3RydWN0IGRlbnRyeSAqZHA7
CiAKLSAgICAvKiB1dGltZW5zYXQgc2hvdWxkIHJldHVybiBFTk9FTlQgd2hlbiBwYXRobmFtZSBp
cyBlbXB0eSAqLwotICAgIGlmKHBhdGhuYW1lICYmIHBhdGhuYW1lWzBdID09IDApCi0gICAgICAg
IHJldHVybiBFTk9FTlQ7CisJLyogdXRpbWVuc2F0IHNob3VsZCByZXR1cm4gRU5PRU5UIHdoZW4g
cGF0aG5hbWUgaXMgZW1wdHkgKi8KKwlpZihwYXRobmFtZSAmJiBwYXRobmFtZVswXSA9PSAwKQor
CQlyZXR1cm4gRU5PRU5UOwogCi0gICAgaWYgKGZsYWdzICYmICEoZmxhZ3MgJiBBVF9TWU1MSU5L
X05PRk9MTE9XKSkKLSAgICAgICAgcmV0dXJuIEVJTlZBTDsKKwlpZiAoZmxhZ3MgJiYgIShmbGFn
cyAmIEFUX1NZTUxJTktfTk9GT0xMT1cpKQorCQlyZXR1cm4gRUlOVkFMOwogCi0gICAgaWYgKHRp
bWVzICYmICghaXNfdGltZXNwZWNfdmFsaWQodGltZXNbMF0pIHx8ICFpc190aW1lc3BlY192YWxp
ZCh0aW1lc1sxXSkpKQotICAgICAgICByZXR1cm4gRUlOVkFMOworCWlmICh0aW1lcyAmJiAoIWlz
X3RpbWVzcGVjX3ZhbGlkKHRpbWVzWzBdKSB8fCAhaXNfdGltZXNwZWNfdmFsaWQodGltZXNbMV0p
KSkKKwkJcmV0dXJuIEVJTlZBTDsKIAotICAgIGluaXRfdGltZXNwZWModGltZXNwZWNfdGltZXNb
MF0sIHRpbWVzID8gdGltZXMgKyAwIDogbnVsbHB0cik7Ci0gICAgaW5pdF90aW1lc3BlYyh0aW1l
c3BlY190aW1lc1sxXSwgdGltZXMgPyB0aW1lcyArIDEgOiBudWxscHRyKTsKKwlpbml0X3RpbWVz
cGVjKHRpbWVzcGVjX3RpbWVzWzBdLCB0aW1lcyA/IHRpbWVzICsgMCA6IG51bGxwdHIpOworCWlu
aXRfdGltZXNwZWModGltZXNwZWNfdGltZXNbMV0sIHRpbWVzID8gdGltZXMgKyAxIDogbnVsbHB0
cik7CiAKLSAgICBpZiAocGF0aG5hbWUgJiYgcGF0aG5hbWVbMF0gPT0gJy8nKSB7CisJaWYgKHBh
dGhuYW1lICYmIHBhdGhuYW1lWzBdID09ICcvJykgewogCWFwID0gcGF0aG5hbWU7Ci0gICAgfSBl
bHNlIGlmIChkaXJmZCA9PSBBVF9GRENXRCkgeworCX0gZWxzZSBpZiAoZGlyZmQgPT0gQVRfRkRD
V0QpIHsKIAlpZiAoIXBhdGhuYW1lKQogCSAgICByZXR1cm4gRUZBVUxUOwogCWFwID0gc3RkOjpz
dHJpbmcobWFpbl90YXNrLT50X2N3ZCkgKyAiLyIgKyBwYXRobmFtZTsKLSAgICB9IGVsc2Ugewot
ICAgICAgICBzdHJ1Y3QgZmlsZSAqZnA7Ci0gICAgICAgIGZpbGVyZWYgZihmaWxlcmVmX2Zyb21f
ZmQoZGlyZmQpKTsKKwl9IGVsc2UgeworCQlzdHJ1Y3QgZmlsZSAqZnA7CisJCWZpbGVyZWYgZihm
aWxlcmVmX2Zyb21fZmQoZGlyZmQpKTsKIAotICAgICAgICBpZiAoIWYpCisJCWlmICghZikKIAkg
ICAgcmV0dXJuIEVCQURGOwogCiAJZnAgPSBmLmdldCgpOwpAQCAtMTM1NSwxMzIgKzEzNTUsMTMy
IEBAIHN5c191dGltZW5zYXQoaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwgY29uc3Qg
c3RydWN0IHRpbWVzcGVjIHRpbWVzWzJdLCBpCiAJICAgIGFwID0gZnAtPmZfZGVudHJ5LT5kX3Bh
dGg7CiAKIAlhcCA9IHN0ZDo6c3RyaW5nKGZwLT5mX2RlbnRyeS0+ZF9tb3VudC0+bV9wYXRoKSAr
ICIvIiArIGFwOwotICAgIH0KKwl9CiAKLSAgICAvKiBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIEFU
X1NZTUxJTktfTk9GT0xMT1cgKi8KKwkvKiBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIEFUX1NZTUxJ
TktfTk9GT0xMT1cgKi8KIAotICAgIGVycm9yID0gbmFtZWkoYXAuY19zdHIoKSwgJmRwKTsKKwll
cnJvciA9IG5hbWVpKGFwLmNfc3RyKCksICZkcCk7CiAKLSAgICBpZiAoZXJyb3IpCi0gICAgICAg
IHJldHVybiBlcnJvcjsKKwlpZiAoZXJyb3IpCisJCXJldHVybiBlcnJvcjsKIAotICAgIGlmIChk
cC0+ZF9tb3VudC0+bV9mbGFncyAmIE1OVF9SRE9OTFkpIHsKLSAgICAgICAgZXJyb3IgPSBFUk9G
UzsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAodm5fYWNjZXNzKGRwLT5kX3Zub2RlLCBWV1JJ
VEUpKSB7Ci0gICAgICAgICAgICByZXR1cm4gRUFDQ0VTOwotICAgICAgICB9CisJaWYgKGRwLT5k
X21vdW50LT5tX2ZsYWdzICYgTU5UX1JET05MWSkgeworCQllcnJvciA9IEVST0ZTOworCX0gZWxz
ZSB7CisJCWlmICh2bl9hY2Nlc3MoZHAtPmRfdm5vZGUsIFZXUklURSkpIHsKKwkJCXJldHVybiBF
QUNDRVM7CisJCX0KIAkgICAgaWYgKHRpbWVzICYmCi0gICAgICAgICAgICAgICAodGltZXNbMF0u
dHZfbnNlYyAhPSBVVElNRV9OT1cgfHwgdGltZXNbMV0udHZfbnNlYyAhPSBVVElNRV9OT1cpICYm
Ci0gICAgICAgICAgICAgICAodGltZXNbMF0udHZfbnNlYyAhPSBVVElNRV9PTUlUIHx8IHRpbWVz
WzFdLnR2X25zZWMgIT0gVVRJTUVfT01JVCkgJiYKKwkJCSAgICh0aW1lc1swXS50dl9uc2VjICE9
IFVUSU1FX05PVyB8fCB0aW1lc1sxXS50dl9uc2VjICE9IFVUSU1FX05PVykgJiYKKwkJCSAgICh0
aW1lc1swXS50dl9uc2VjICE9IFVUSU1FX09NSVQgfHwgdGltZXNbMV0udHZfbnNlYyAhPSBVVElN
RV9PTUlUKSAmJgogCSAgICAgICAoIShkcC0+ZF92bm9kZS0+dl9tb2RlICYgflZBUFBFTkQpKSkK
IAkgICAgICAgIHJldHVybiBFUEVSTTsKLSAgICAgICAgZXJyb3IgPSB2bl9zZXR0aW1lcyhkcC0+
ZF92bm9kZSwgdGltZXNwZWNfdGltZXMpOwotICAgIH0KKwkJZXJyb3IgPSB2bl9zZXR0aW1lcyhk
cC0+ZF92bm9kZSwgdGltZXNwZWNfdGltZXMpOworCX0KIAotICAgIGRyZWxlKGRwKTsKLSAgICBy
ZXR1cm4gZXJyb3I7CisJZHJlbGUoZHApOworCXJldHVybiBlcnJvcjsKIH0KIAogaW50CiBzeXNf
ZnV0aW1lbnMoaW50IGZkLCBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgdGltZXNbMl0pCiB7Ci0gICAg
c3RydWN0IGZpbGUgKmZwOworCXN0cnVjdCBmaWxlICpmcDsKIAotICAgIGZpbGVyZWYgZihmaWxl
cmVmX2Zyb21fZmQoZmQpKTsKLSAgICBpZiAoIWYpCi0gICAgICAgIHJldHVybiBFQkFERjsKKwlm
aWxlcmVmIGYoZmlsZXJlZl9mcm9tX2ZkKGZkKSk7CisJaWYgKCFmKQorCQlyZXR1cm4gRUJBREY7
CiAKLSAgICBmcCA9IGYuZ2V0KCk7CisJZnAgPSBmLmdldCgpOwogCi0gICAgaWYgKCFmcC0+Zl9k
ZW50cnkpCi0gICAgICAgIHJldHVybiBFQkFERjsKKwlpZiAoIWZwLT5mX2RlbnRyeSkKKwkJcmV0
dXJuIEVCQURGOwogCi0gICAgc3RkOjpzdHJpbmcgcGF0aG5hbWUgPSBmcC0+Zl9kZW50cnktPmRf
cGF0aDsKLSAgICBhdXRvIGVycm9yID0gc3lzX3V0aW1lbnNhdChBVF9GRENXRCwgcGF0aG5hbWUu
Y19zdHIoKSwgdGltZXMsIDApOwotICAgIHJldHVybiBlcnJvcjsKKwlzdGQ6OnN0cmluZyBwYXRo
bmFtZSA9IGZwLT5mX2RlbnRyeS0+ZF9wYXRoOworCWF1dG8gZXJyb3IgPSBzeXNfdXRpbWVuc2F0
KEFUX0ZEQ1dELCBwYXRobmFtZS5jX3N0cigpLCB0aW1lcywgMCk7CisJcmV0dXJuIGVycm9yOwog
fQogCiBpbnQKIHN5c19mYWxsb2NhdGUoc3RydWN0IGZpbGUgKmZwLCBpbnQgbW9kZSwgbG9mZl90
IG9mZnNldCwgbG9mZl90IGxlbikKIHsKLSAgICBpbnQgZXJyb3I7Ci0gICAgc3RydWN0IHZub2Rl
ICp2cDsKLQotICAgIERQUklOVEYoVkZTREJfU1lTQ0FMTCwgKCJzeXNfZmFsbG9jYXRlOiBmcD0l
eCIsIGZwKSk7Ci0KLSAgICBpZiAoIWZwLT5mX2RlbnRyeSB8fCAhKGZwLT5mX2ZsYWdzICYgRldS
SVRFKSkgewotICAgICAgICByZXR1cm4gRUJBREY7Ci0gICAgfQotCi0gICAgaWYgKG9mZnNldCA8
IDAgfHwgbGVuIDw9IDApIHsKLSAgICAgICAgcmV0dXJuIEVJTlZBTDsKLSAgICB9Ci0KLSAgICAv
LyBTdHJhbmdlLCBidXQgdGhhdCdzIHdoYXQgTGludXggcmV0dXJucy4KLSAgICBpZiAoKG1vZGUg
JiBGQUxMT0NfRkxfUFVOQ0hfSE9MRSkgJiYgIShtb2RlICYgRkFMTE9DX0ZMX0tFRVBfU0laRSkp
IHsKLSAgICAgICAgcmV0dXJuIEVOT1RTVVA7Ci0gICAgfQotCi0gICAgdnAgPSBmcC0+Zl9kZW50
cnktPmRfdm5vZGU7Ci0gICAgdm5fbG9jayh2cCk7Ci0KLSAgICAvLyBOT1RFOiBJdCdzIG5vdCBk
ZXRlY3RlZCBoZXJlIHdoZXRoZXIgb3Igbm90IHRoZSBkZXZpY2UgdW5kZXJseWluZwotICAgIC8v
IHRoZSBmcyBpcyBhIGJsb2NrIGRldmljZS4gSXQncyB1cCB0byB0aGUgZnMgaXRzZWxmIHRlbGwg
dXMgd2hldGhlcgotICAgIC8vIG9yIG5vdCBmYWxsb2NhdGUgaXMgc3VwcG9ydGVkLiBTZWUgYmVs
b3c6Ci0gICAgaWYgKHZwLT52X3R5cGUgIT0gVlJFRyAmJiB2cC0+dl90eXBlICE9IFZESVIpIHsK
LSAgICAgICAgZXJyb3IgPSBFTk9ERVY7Ci0gICAgICAgIGdvdG8gcmV0OwotICAgIH0KLQotICAg
IC8vIEVPUE5PVFNVUFAgaGVyZSBtZWFucyB0aGF0IHRoZSB1bmRlcmx5aW5nIGZpbGUgc3lzdGVt
Ci0gICAgLy8gcmVmZXJyZWQgYnkgdnAgZG9lc24ndCBzdXBwb3J0IGZhbGxvY2F0ZS4KLSAgICBp
ZiAoIXZwLT52X29wLT52b3BfZmFsbG9jYXRlKSB7Ci0gICAgICAgIGVycm9yID0gRU9QTk9UU1VQ
UDsKLSAgICAgICAgZ290byByZXQ7Ci0gICAgfQotCi0gICAgZXJyb3IgPSBWT1BfRkFMTE9DQVRF
KHZwLCBtb2RlLCBvZmZzZXQsIGxlbik7CisJaW50IGVycm9yOworCXN0cnVjdCB2bm9kZSAqdnA7
CisKKwlEUFJJTlRGKFZGU0RCX1NZU0NBTEwsICgic3lzX2ZhbGxvY2F0ZTogZnA9JXgiLCBmcCkp
OworCisJaWYgKCFmcC0+Zl9kZW50cnkgfHwgIShmcC0+Zl9mbGFncyAmIEZXUklURSkpIHsKKwkJ
cmV0dXJuIEVCQURGOworCX0KKworCWlmIChvZmZzZXQgPCAwIHx8IGxlbiA8PSAwKSB7CisJCXJl
dHVybiBFSU5WQUw7CisJfQorCisJLy8gU3RyYW5nZSwgYnV0IHRoYXQncyB3aGF0IExpbnV4IHJl
dHVybnMuCisJaWYgKChtb2RlICYgRkFMTE9DX0ZMX1BVTkNIX0hPTEUpICYmICEobW9kZSAmIEZB
TExPQ19GTF9LRUVQX1NJWkUpKSB7CisJCXJldHVybiBFTk9UU1VQOworCX0KKworCXZwID0gZnAt
PmZfZGVudHJ5LT5kX3Zub2RlOworCXZuX2xvY2sodnApOworCisJLy8gTk9URTogSXQncyBub3Qg
ZGV0ZWN0ZWQgaGVyZSB3aGV0aGVyIG9yIG5vdCB0aGUgZGV2aWNlIHVuZGVybHlpbmcKKwkvLyB0
aGUgZnMgaXMgYSBibG9jayBkZXZpY2UuIEl0J3MgdXAgdG8gdGhlIGZzIGl0c2VsZiB0ZWxsIHVz
IHdoZXRoZXIKKwkvLyBvciBub3QgZmFsbG9jYXRlIGlzIHN1cHBvcnRlZC4gU2VlIGJlbG93Ogor
CWlmICh2cC0+dl90eXBlICE9IFZSRUcgJiYgdnAtPnZfdHlwZSAhPSBWRElSKSB7CisJCWVycm9y
ID0gRU5PREVWOworCQlnb3RvIHJldDsKKwl9CisKKwkvLyBFT1BOT1RTVVBQIGhlcmUgbWVhbnMg
dGhhdCB0aGUgdW5kZXJseWluZyBmaWxlIHN5c3RlbQorCS8vIHJlZmVycmVkIGJ5IHZwIGRvZXNu
J3Qgc3VwcG9ydCBmYWxsb2NhdGUuCisJaWYgKCF2cC0+dl9vcC0+dm9wX2ZhbGxvY2F0ZSkgewor
CQllcnJvciA9IEVPUE5PVFNVUFA7CisJCWdvdG8gcmV0OworCX0KKworCWVycm9yID0gVk9QX0ZB
TExPQ0FURSh2cCwgbW9kZSwgb2Zmc2V0LCBsZW4pOwogcmV0OgotICAgIHZuX3VubG9jayh2cCk7
Ci0gICAgcmV0dXJuIGVycm9yOworCXZuX3VubG9jayh2cCk7CisJcmV0dXJuIGVycm9yOwogfQog
CiBpbnQKIHN5c19jaG1vZChjb25zdCBjaGFyICpwYXRoLCBtb2RlX3QgbW9kZSkKIHsKLSAgICBp
bnQgZXJyb3I7Ci0gICAgc3RydWN0IGRlbnRyeSAqZHA7Ci0gICAgRFBSSU5URihWRlNEQl9TWVND
QUxMLCAoInN5c19jaG1vZDogcGF0aD0lc1xuIiwgcGF0aCkpOwotICAgIGVycm9yID0gbmFtZWko
cGF0aCwgJmRwKTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICBp
ZiAoZHAtPmRfbW91bnQtPm1fZmxhZ3MgJiBNTlRfUkRPTkxZKSB7Ci0gICAgICAgIGVycm9yID0g
RVJPRlM7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZXJyb3IgPSB2bl9zZXRtb2RlKGRwLT5kX3Zu
b2RlLCBtb2RlKTsKLSAgICB9Ci0gICAgZHJlbGUoZHApOwotICAgIHJldHVybiBlcnJvcjsKKwlp
bnQgZXJyb3I7CisJc3RydWN0IGRlbnRyeSAqZHA7CisJRFBSSU5URihWRlNEQl9TWVNDQUxMLCAo
InN5c19jaG1vZDogcGF0aD0lc1xuIiwgcGF0aCkpOworCWVycm9yID0gbmFtZWkocGF0aCwgJmRw
KTsKKwlpZiAoZXJyb3IpCisJCXJldHVybiBlcnJvcjsKKwlpZiAoZHAtPmRfbW91bnQtPm1fZmxh
Z3MgJiBNTlRfUkRPTkxZKSB7CisJCWVycm9yID0gRVJPRlM7CisJfSBlbHNlIHsKKwkJZXJyb3Ig
PSB2bl9zZXRtb2RlKGRwLT5kX3Zub2RlLCBtb2RlKTsKKwl9CisJZHJlbGUoZHApOworCXJldHVy
biBlcnJvcjsKIH0KIAogaW50CiBzeXNfZmNobW9kKGludCBmZCwgbW9kZV90IG1vZGUpCiB7Ci0g
ICAgZmlsZXJlZiBmKGZpbGVyZWZfZnJvbV9mZChmZCkpOwotICAgIGlmICghZikKLSAgICAgICAg
cmV0dXJuIEVCQURGOwotICAgIC8vIFBvc2l4IGlzIGFtYml2YWxlbnQgb24gd2hhdCBmY2htb2Qo
KSBzaG91bGQgZG8gb24gYW4gZmQgdGhhdCBkb2VzIG5vdAotICAgIC8vIHJlZmVyIHRvIGEgcmVh
bCBmaWxlLiBJdCBzdWdnZXN0cyBhbiBpbXBsZW1lbnRhdGlvbiBtYXkgKGJ1dCBub3QgbXVzdCkK
LSAgICAvLyBmYWlsIEVJTlZBTCBvbiBhIHBpcGUsIGNhbiBiZWhhdmUgaW4gYW4gInVuc3BlY2lm
aWVkIiBtYW5uZXIgb24gYQotICAgIC8vIHNvY2tldCwgYW5kIGZvciBhIFNUUkVBTSwgaXQgbXVz
dCBzdWNjZWVkIGFuZCBkbyBub3RoaW5nLiBMaW51eCBzZWVtcwotICAgIC8vIHRvIGp1c3QgZG8g
dGhlIGxhc3QgdGhpbmcgKGRvIG5vdGhpbmcgYW5kIHN1Y2NlZWQpLgotICAgIGlmICghZi0+Zl9k
ZW50cnkpIHsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIGlmIChmLT5mX2RlbnRyeS0+
ZF9tb3VudC0+bV9mbGFncyAmIE1OVF9SRE9OTFkpIHsKLSAgICAgICAgcmV0dXJuIEVST0ZTOwot
ICAgIH0gZWxzZSB7Ci0gICAgICAgIHJldHVybiB2bl9zZXRtb2RlKGYtPmZfZGVudHJ5LT5kX3Zu
b2RlLCBtb2RlKTsKLSAgICB9CisJZmlsZXJlZiBmKGZpbGVyZWZfZnJvbV9mZChmZCkpOworCWlm
ICghZikKKwkJcmV0dXJuIEVCQURGOworCS8vIFBvc2l4IGlzIGFtYml2YWxlbnQgb24gd2hhdCBm
Y2htb2QoKSBzaG91bGQgZG8gb24gYW4gZmQgdGhhdCBkb2VzIG5vdAorCS8vIHJlZmVyIHRvIGEg
cmVhbCBmaWxlLiBJdCBzdWdnZXN0cyBhbiBpbXBsZW1lbnRhdGlvbiBtYXkgKGJ1dCBub3QgbXVz
dCkKKwkvLyBmYWlsIEVJTlZBTCBvbiBhIHBpcGUsIGNhbiBiZWhhdmUgaW4gYW4gInVuc3BlY2lm
aWVkIiBtYW5uZXIgb24gYQorCS8vIHNvY2tldCwgYW5kIGZvciBhIFNUUkVBTSwgaXQgbXVzdCBz
dWNjZWVkIGFuZCBkbyBub3RoaW5nLiBMaW51eCBzZWVtcworCS8vIHRvIGp1c3QgZG8gdGhlIGxh
c3QgdGhpbmcgKGRvIG5vdGhpbmcgYW5kIHN1Y2NlZWQpLgorCWlmICghZi0+Zl9kZW50cnkpIHsK
KwkJcmV0dXJuIDA7CisJfQorCWlmIChmLT5mX2RlbnRyeS0+ZF9tb3VudC0+bV9mbGFncyAmIE1O
VF9SRE9OTFkpIHsKKwkJcmV0dXJuIEVST0ZTOworCX0gZWxzZSB7CisJCXJldHVybiB2bl9zZXRt
b2RlKGYtPmZfZGVudHJ5LT5kX3Zub2RlLCBtb2RlKTsKKwl9CiB9CmRpZmYgLS1naXQgYS9saWIv
dmZzY29yZS90YXNrLmMgYi9saWIvdmZzY29yZS90YXNrLmMKaW5kZXggN2EzNTUwMzQuLmIyYTAy
OGM2IDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS90YXNrLmMKKysrIGIvbGliL3Zmc2NvcmUvdGFz
ay5jCkBAIC00OCw3ICs0OCw3IEBAIHRhc2tfYWxsb2Moc3RydWN0IHRhc2sgKipwdCkKIHsKIAlz
dHJ1Y3QgdGFzayAqdDsKIAotICAgIC8vIEZJWE1FOiB3aGVyZSBkbyB3ZSBmcmVlIHRhc2sgPwor
CS8vIEZJWE1FOiB3aGVyZSBkbyB3ZSBmcmVlIHRhc2sgPwogCWlmICghKHQgPSBuZXcgdGFzaykp
CiAJCXJldHVybiBFTk9NRU07CiAJbWVtc2V0KHQsIDAsIHNpemVvZihzdHJ1Y3QgdGFzaykpOwpA
QCAtMTYwLDggKzE2MCw4IEBAIHRhc2tfY29udihzdHJ1Y3QgdGFzayAqdCwgY29uc3QgY2hhciAq
Y3BhdGgsIGludCBhY2MsIGNoYXIgKmZ1bGwpCiAgKi8KIGludCB2ZnNfZG5hbWVfY29weShjaGFy
ICpkZXN0LCBjb25zdCBjaGFyICpzcmMsIHNpemVfdCBzaXplKQogewotICAgIGlmIChzdHJsY3B5
KGRlc3QsIHNyYywgc2l6ZSkgPj0gc2l6ZSkgewotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQot
ICAgIHJldHVybiAwOworCWlmIChzdHJsY3B5KGRlc3QsIHNyYywgc2l6ZSkgPj0gc2l6ZSkgewor
CQlyZXR1cm4gLTE7CisJfQorCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUv
dmZzLmggYi9saWIvdmZzY29yZS92ZnMuaAppbmRleCBkODZlZjk1Ny4uMmI4MjU1MjEgMTAwNjQ0
Ci0tLSBhL2xpYi92ZnNjb3JlL3Zmcy5oCisrKyBiL2xpYi92ZnNjb3JlL3Zmcy5oCkBAIC0xMjAs
NyArMTIwLDcgQEAgaW50CSBzeXNfdHJ1bmNhdGUoY2hhciAqcGF0aCwgb2ZmX3QgbGVuZ3RoKTsK
IGludAkgc3lzX3JlYWRsaW5rKGNoYXIgKnBhdGgsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnNpemUs
IHNzaXplX3QgKnNpemUpOwogaW50ICBzeXNfdXRpbWVzKGNoYXIgKnBhdGgsIGNvbnN0IHN0cnVj
dCB0aW1ldmFsIHRpbWVzWzJdLCBpbnQgZmxhZ3MpOwogaW50ICBzeXNfdXRpbWVuc2F0KGludCBk
aXJmZCwgY29uc3QgY2hhciAqcGF0aG5hbWUsCi0gICAgICAgICAgICAgICAgICAgY29uc3Qgc3Ry
dWN0IHRpbWVzcGVjIHRpbWVzWzJdLCBpbnQgZmxhZ3MpOworCQkJCSAgIGNvbnN0IHN0cnVjdCB0
aW1lc3BlYyB0aW1lc1syXSwgaW50IGZsYWdzKTsKIGludCAgc3lzX2Z1dGltZW5zKGludCBmZCwg
Y29uc3Qgc3RydWN0IHRpbWVzcGVjIHRpbWVzWzJdKTsKIGludCAgc3lzX2ZhbGxvY2F0ZShzdHJ1
Y3QgZmlsZSAqZnAsIGludCBtb2RlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuKTsKIApkaWZm
IC0tZ2l0IGEvbGliL3Zmc2NvcmUvdm5vZGUuYyBiL2xpYi92ZnNjb3JlL3Zub2RlLmMKaW5kZXgg
YTI5MjM0NGYuLjExOWVkODcwIDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS92bm9kZS5jCisrKyBi
L2xpYi92ZnNjb3JlL3Zub2RlLmMKQEAgLTM3MSwyMiArMzcxLDIyIEBAIHZuX3N0YXQoc3RydWN0
IHZub2RlICp2cCwgc3RydWN0IHN0YXQgKnN0KQogaW50CiB2bl9zZXR0aW1lcyhzdHJ1Y3Qgdm5v
ZGUgKnZwLCBzdHJ1Y3QgdGltZXNwZWMgdGltZXNbMl0pCiB7Ci0gICAgc3RydWN0IHZhdHRyIHZh
dHRyOwotICAgIHN0cnVjdCB2YXR0ciAqdmFwOwotICAgIGludCBlcnJvcjsKLQotICAgIHZhcCA9
ICZ2YXR0cjsKLSAgICBtZW1zZXQodmFwLCAwLCBzaXplb2Yoc3RydWN0IHZhdHRyKSk7Ci0KLSAg
ICB2YXAtPnZhX2F0aW1lID0gdGltZXNbMF07Ci0gICAgdmFwLT52YV9tdGltZSA9IHRpbWVzWzFd
OwotICAgIHZhcC0+dmFfbWFzayA9ICgodGltZXNbMF0udHZfbnNlYyA9PSBVVElNRV9PTUlUKSA/
IDAgOiBBVF9BVElNRSkKLSAgICAgICAgICAgICAgICAgICAgfCAoKHRpbWVzWzFdLnR2X25zZWMg
PT0gVVRJTUVfT01JVCkgPyAwIDogQVRfTVRJTUUpOwotICAgIHZuX2xvY2sodnApOwotICAgIGVy
cm9yID0gVk9QX1NFVEFUVFIodnAsIHZhcCk7Ci0gICAgdm5fdW5sb2NrKHZwKTsKLQotICAgIHJl
dHVybiBlcnJvcjsKKwlzdHJ1Y3QgdmF0dHIgdmF0dHI7CisJc3RydWN0IHZhdHRyICp2YXA7CisJ
aW50IGVycm9yOworCisJdmFwID0gJnZhdHRyOworCW1lbXNldCh2YXAsIDAsIHNpemVvZihzdHJ1
Y3QgdmF0dHIpKTsKKworCXZhcC0+dmFfYXRpbWUgPSB0aW1lc1swXTsKKwl2YXAtPnZhX210aW1l
ID0gdGltZXNbMV07CisJdmFwLT52YV9tYXNrID0gKCh0aW1lc1swXS50dl9uc2VjID09IFVUSU1F
X09NSVQpID8gMCA6IEFUX0FUSU1FKQorCQkJCQl8ICgodGltZXNbMV0udHZfbnNlYyA9PSBVVElN
RV9PTUlUKSA/IDAgOiBBVF9NVElNRSk7CisJdm5fbG9jayh2cCk7CisJZXJyb3IgPSBWT1BfU0VU
QVRUUih2cCwgdmFwKTsKKwl2bl91bmxvY2sodnApOworCisJcmV0dXJuIGVycm9yOwogfQogCiAv
KgpAQCAtMzk1LDE1ICszOTUsMTUgQEAgdm5fc2V0dGltZXMoc3RydWN0IHZub2RlICp2cCwgc3Ry
dWN0IHRpbWVzcGVjIHRpbWVzWzJdKQogaW50CiB2bl9zZXRtb2RlKHN0cnVjdCB2bm9kZSAqdnAs
IG1vZGVfdCBuZXdfbW9kZSkKIHsKLSAgICBzdHJ1Y3QgdmF0dHIgdmF0dHI7Ci0gICAgbWVtc2V0
KCZ2YXR0ciwgMCwgc2l6ZW9mKHZhdHRyKSk7Ci0gICAgdmF0dHIudmFfbW9kZSA9IG5ld19tb2Rl
OwotICAgIHZhdHRyLnZhX21hc2sgPSBBVF9NT0RFOwotICAgIHZuX2xvY2sodnApOwotICAgIHZw
LT52X21vZGUgPSBuZXdfbW9kZTsKLSAgICBpbnQgZXJyb3IgPSBWT1BfU0VUQVRUUih2cCwgJnZh
dHRyKTsKLSAgICB2bl91bmxvY2sodnApOwotICAgIHJldHVybiBlcnJvcjsKKwlzdHJ1Y3QgdmF0
dHIgdmF0dHI7CisJbWVtc2V0KCZ2YXR0ciwgMCwgc2l6ZW9mKHZhdHRyKSk7CisJdmF0dHIudmFf
bW9kZSA9IG5ld19tb2RlOworCXZhdHRyLnZhX21hc2sgPSBBVF9NT0RFOworCXZuX2xvY2sodnAp
OworCXZwLT52X21vZGUgPSBuZXdfbW9kZTsKKwlpbnQgZXJyb3IgPSBWT1BfU0VUQVRUUih2cCwg
JnZhdHRyKTsKKwl2bl91bmxvY2sodnApOworCXJldHVybiBlcnJvcjsKIH0KIAogLyoKLS0gCjIu
MTkuMgoKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpN
aW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9y
ZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRl
dmVs

From minios-devel-bounces@lists.xenproject.org Thu Feb 07 13:59:57 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 07 Feb 2019 13:59:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grkDd-0006ah-Ju; Thu, 07 Feb 2019 13:59:57 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=CXnx=QO=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1grkDc-0006Zn-I6
 for minios-devel@lists.xen.org; Thu, 07 Feb 2019 13:59:56 +0000
X-Inumbo-ID: a3cac1b6-2ae0-11e9-ac22-5fa38ecaf95a
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id a3cac1b6-2ae0-11e9-ac22-5fa38ecaf95a;
 Thu, 07 Feb 2019 13:59:52 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id C4E79F205F;
 Thu,  7 Feb 2019 14:59:51 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id sGfIb89bLR29; Thu,  7 Feb 2019 14:59:51 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 97282F202D
 for <minios-devel@lists.xen.org>; Thu,  7 Feb 2019 14:59:49 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Thu, 7 Feb 2019 14:59:49 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Thu, 7 Feb 2019 14:58:46 +0100
Message-ID: <20190207135901.9122-9-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
References: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v3 08/23] lib/vfscore: use Unikraft
 includes
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogbGliL3Zmc2NvcmUvZGVudHJ5LmMgICAgICAgICAgICAgICAgIHwgIDcgKystLQogbGliL3Zm
c2NvcmUvZm9wcy5jICAgICAgICAgICAgICAgICAgIHwgMTEgKysrLS0tLQogbGliL3Zmc2NvcmUv
aW5jbHVkZS92ZnNjb3JlL2RlbnRyeS5oIHwgIDQgKy0tCiBsaWIvdmZzY29yZS9pbmNsdWRlL3Zm
c2NvcmUvbW91bnQuaCAgfCAgNiArKy0tCiBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvcHJl
eC5oICAgfCAgMSAtCiBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdWlvLmggICAgfCAgMSAt
CiBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUuaCAgfCAxMyArKysrLS0tLQogbGli
L3Zmc2NvcmUvbG9va3VwLmMgICAgICAgICAgICAgICAgIHwgIDQgKy0tCiBsaWIvdmZzY29yZS9t
YWluLmMgICAgICAgICAgICAgICAgICAgfCA0OCArKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiBsaWIvdmZzY29yZS9tb3VudC5jICAgICAgICAgICAgICAgICAgfCAyMSArKysrKy0tLS0tLS0K
IGxpYi92ZnNjb3JlL3N1YnJfdWlvLmMgICAgICAgICAgICAgICB8ICA0ICstLQogbGliL3Zmc2Nv
cmUvc3lzY2FsbHMuYyAgICAgICAgICAgICAgIHwgMTIgKysrKy0tLQogbGliL3Zmc2NvcmUvdGFz
ay5jICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGxpYi92ZnNjb3JlL3Zmcy5oICAgICAgICAg
ICAgICAgICAgICB8IDIzICsrKy0tLS0tLS0tLS0KIGxpYi92ZnNjb3JlL3Zub2RlLmMgICAgICAg
ICAgICAgICAgICB8ICA2ICsrLS0KIDE1IGZpbGVzIGNoYW5nZWQsIDU5IGluc2VydGlvbnMoKyks
IDEwNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9kZW50cnkuYyBiL2xp
Yi92ZnNjb3JlL2RlbnRyeS5jCmluZGV4IGVmYzEwYmQ2Li5jY2NlMDdkMSAxMDA2NDQKLS0tIGEv
bGliL3Zmc2NvcmUvZGVudHJ5LmMKKysrIGIvbGliL3Zmc2NvcmUvZGVudHJ5LmMKQEAgLTMyLDEw
ICszMiwxMSBAQAogCiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+Ci0j
aW5jbHVkZSA8c3lzL3BhcmFtLmg+CiAKLSNpbmNsdWRlIDxvc3YvZGVudHJ5Lmg+Ci0jaW5jbHVk
ZSA8b3N2L3Zub2RlLmg+CisjaW5jbHVkZSA8dWsvbGlzdC5oPgorI2luY2x1ZGUgPHZmc2NvcmUv
ZGVudHJ5Lmg+CisjaW5jbHVkZSA8dmZzY29yZS92bm9kZS5oPgorI2luY2x1ZGUgPHVrL211dGV4
Lmg+CiAjaW5jbHVkZSAidmZzLmgiCiAKICNkZWZpbmUgREVOVFJZX0JVQ0tFVFMgMzIKZGlmZiAt
LWdpdCBhL2xpYi92ZnNjb3JlL2ZvcHMuYyBiL2xpYi92ZnNjb3JlL2ZvcHMuYwppbmRleCBmMWMx
NjFlNy4uYjQ1ODNkMjAgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2ZvcHMuYworKysgYi9saWIv
dmZzY29yZS9mb3BzLmMKQEAgLTMzLDE0ICszMywxMyBAQAogICogVEhJUyBIRUFERVIgTUFZIE5P
VCBCRSBFWFRSQUNURUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4KICAqLwogCisjZGVmaW5lIF9H
TlVfU09VUkNFCiAjaW5jbHVkZSA8ZmNudGwuaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgotI2lu
Y2x1ZGUgPG9zdi9maWxlLmg+Ci0jaW5jbHVkZSA8b3N2L3BvbGwuaD4KLSNpbmNsdWRlIDxmcy92
ZnMvdmZzLmg+Ci0jaW5jbHVkZSA8b3N2L3Zmc19maWxlLmhoPgotI2luY2x1ZGUgPG9zdi9tbXUu
aGg+Ci0jaW5jbHVkZSA8b3N2L3BhZ2VjYWNoZS5oaD4KKyNpbmNsdWRlIDx2ZnNjb3JlL2ZpbGUu
aD4KKyNpbmNsdWRlICJ2ZnMuaCIKKworI2luY2x1ZGUgPHVrL2Fzc2VydC5oPgogCiBpbnQgdmZz
X2Nsb3NlKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwKQogewpkaWZmIC0tZ2l0IGEvbGliL3Zmc2Nv
cmUvaW5jbHVkZS92ZnNjb3JlL2RlbnRyeS5oIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3Jl
L2RlbnRyeS5oCmluZGV4IDljZmU4ZGFjLi5iYTFjMzQ1NyAxMDA2NDQKLS0tIGEvbGliL3Zmc2Nv
cmUvaW5jbHVkZS92ZnNjb3JlL2RlbnRyeS5oCisrKyBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZz
Y29yZS9kZW50cnkuaApAQCAtMzYsOCArMzYsOCBAQAogI2lmbmRlZiBfT1NWX0RFTlRSWV9ICiAj
ZGVmaW5lIF9PU1ZfREVOVFJZX0ggMQogCi0jaW5jbHVkZSA8b3N2L211dGV4Lmg+Ci0jaW5jbHVk
ZSA8YnNkL3N5cy9zeXMvcXVldWUuaD4KKyNpbmNsdWRlIDx1ay9tdXRleC5oPgorI2luY2x1ZGUg
PHVrL2xpc3QuaD4KIAogc3RydWN0IHZub2RlOwogCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9p
bmNsdWRlL3Zmc2NvcmUvbW91bnQuaCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9tb3Vu
dC5oCmluZGV4IGI2OGQzYzk4Li5lMTJhMTAzOSAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvaW5j
bHVkZS92ZnNjb3JlL21vdW50LmgKKysrIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21v
dW50LmgKQEAgLTMyLDEwICszMiwxMCBAQAogI2lmbmRlZiBfU1lTX01PVU5UX0hfCiAjZGVmaW5l
IF9TWVNfTU9VTlRfSF8KIAotI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgogI2luY2x1ZGUgPHN5cy9z
dGF0ZnMuaD4KLSNpbmNsdWRlIDxvc3Yvdm5vZGUuaD4KLSNpbmNsdWRlIDxic2Qvc3lzL3N5cy9x
dWV1ZS5oPgorI2luY2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUgPHVrL2xpc3QuaD4KKyNpbmNs
dWRlIDx2ZnNjb3JlL3Zub2RlLmg+CiAKICNpZmRlZiBfS0VSTkVMCiAKZGlmZiAtLWdpdCBhL2xp
Yi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9wcmV4LmggYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zm
c2NvcmUvcHJleC5oCmluZGV4IDZjYmUzMTMwLi44YTMwNmQ1NCAxMDA2NDQKLS0tIGEvbGliL3Zm
c2NvcmUvaW5jbHVkZS92ZnNjb3JlL3ByZXguaAorKysgYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zm
c2NvcmUvcHJleC5oCkBAIC0zOCw3ICszOCw2IEBACiAKIAogI2luY2x1ZGUgPHVuaXN0ZC5oPgot
I2luY2x1ZGUgPG9zdi9mY250bC5oPgogCiAjZGVmaW5lCUJTSVpFCTUxMgkJLyogc2l6ZSBvZiBz
ZWNvbmRhcnkgYmxvY2sgKGJ5dGVzKSAqLwogCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9pbmNs
dWRlL3Zmc2NvcmUvdWlvLmggYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdWlvLmgKaW5k
ZXggZDdmN2ZjZTkuLjhhZDFlM2ZiIDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zm
c2NvcmUvdWlvLmgKKysrIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Vpby5oCkBAIC0z
Myw3ICszMyw2IEBACiAjaWZuZGVmIF9VSU9fSF8KICNkZWZpbmUJX1VJT19IXwogCi0jaW5jbHVk
ZSA8c3lzL2NkZWZzLmg+CiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaW5jbHVkZSA8c3lzL3Vp
by5oPgogI2luY2x1ZGUgPGxpbWl0cy5oPgpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvaW5jbHVk
ZS92ZnNjb3JlL3Zub2RlLmggYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUuaApp
bmRleCBkMzBhOTQxMS4uNDlmZDRkMzYgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUv
dmZzY29yZS92bm9kZS5oCisrKyBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5o
CkBAIC0zNSwxMyArMzUsMTQgQEAKIAogI2lmZGVmIF9LRVJORUwKIAotI2luY2x1ZGUgPHN5cy9j
ZGVmcy5oPgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0jaW5jbHVkZSA8b3N2L3ByZXguaD4KLSNp
bmNsdWRlIDxvc3YvdWlvLmg+Ci0jaW5jbHVkZSA8b3N2L211dGV4Lmg+Ci0jaW5jbHVkZSAiZmls
ZS5oIgotI2luY2x1ZGUgImRpcmVudC5oIgorI2luY2x1ZGUgPGRpcmVudC5oPgorCisjaW5jbHVk
ZSA8dWsvbXV0ZXguaD4KKyNpbmNsdWRlIDx1ay9saXN0Lmg+CisjaW5jbHVkZSA8dGltZS5oPgor
I2luY2x1ZGUgPHZmc2NvcmUvdWlvLmg+CisjaW5jbHVkZSA8dmZzY29yZS9kZW50cnkuaD4KIAog
c3RydWN0IHZmc29wczsKIHN0cnVjdCB2bm9wczsKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2xv
b2t1cC5jIGIvbGliL3Zmc2NvcmUvbG9va3VwLmMKaW5kZXggZjdhMzhjNGYuLjk4MzdlODFmIDEw
MDY0NAotLS0gYS9saWIvdmZzY29yZS9sb29rdXAuYworKysgYi9saWIvdmZzY29yZS9sb29rdXAu
YwpAQCAtMzYsOCArMzYsOCBAQAogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN5cy9w
YXJhbS5oPgogCi0jaW5jbHVkZSA8b3N2L2RlbnRyeS5oPgotI2luY2x1ZGUgPG9zdi92bm9kZS5o
PgorI2luY2x1ZGUgPHZmc2NvcmUvZGVudHJ5Lmg+CisjaW5jbHVkZSA8dmZzY29yZS92bm9kZS5o
PgogI2luY2x1ZGUgInZmcy5oIgogCiBzdGF0aWMgc3NpemVfdApkaWZmIC0tZ2l0IGEvbGliL3Zm
c2NvcmUvbWFpbi5jIGIvbGliL3Zmc2NvcmUvbWFpbi5jCmluZGV4IDc0ODc2ZGMxLi45MGRmM2Q3
MSAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvbWFpbi5jCisrKyBiL2xpYi92ZnNjb3JlL21haW4u
YwpAQCAtMzAsNTMgKzMwLDIzIEBACiAgKiBTVUNIIERBTUFHRS4KICAqLwogCi0jaW5jbHVkZSA8
c3lzL3BhcmFtLmg+CisjZGVmaW5lIF9HTlVfU09VUkNFCisKICNpbmNsdWRlIDxzeXMvc3RhdHZm
cy5oPgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0jaW5jbHVkZSA8c3lzL3RpbWUuaD4KLSNpbmNs
dWRlIDxzeXMvc2VuZGZpbGUuaD4KLQogI2luY2x1ZGUgPGxpbWl0cy5oPgotI2luY2x1ZGUgPHVu
aXN0ZC5oPgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8c3RkaW50Lmg+Ci0jaW5jbHVk
ZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8ZXJybm8uaD4KLSNp
bmNsdWRlIDxzaWduYWwuaD4KLSNkZWZpbmUgb3BlbiBfX29wZW5fdmFyaWFkaWMKLSNkZWZpbmUg
ZmNudGwgX19mY250bF92YXJpYWRpYwogI2luY2x1ZGUgPGZjbnRsLmg+Ci0jdW5kZWYgb3Blbgot
I3VuZGVmIGZjbnRsCi0KLSNpbmNsdWRlIDxvc3YvcHJleC5oPgotI2luY2x1ZGUgPG9zdi92bm9k
ZS5oPgotI2luY2x1ZGUgPG9zdi9zdHViYmluZy5oaD4KLSNpbmNsdWRlIDxvc3YvaW9jdGwuaD4K
LSNpbmNsdWRlIDxvc3YvdHJhY2UuaGg+Ci0jaW5jbHVkZSA8b3N2L3J1bi5oaD4KLSNpbmNsdWRl
IDxkcml2ZXJzL2NvbnNvbGUuaGg+Ci0KKyNpbmNsdWRlIDx2ZnNjb3JlL3ByZXguaD4KKyNpbmNs
dWRlIDx2ZnNjb3JlL3Zub2RlLmg+CiAjaW5jbHVkZSAidmZzLmgiCi0KLSNpbmNsdWRlICJsaWJj
L2ludGVybmFsL2xpYmMuaCIKLQotI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDx1bm9y
ZGVyZWRfbWFwPgotCiAjaW5jbHVkZSA8c3lzL2ZpbGUuaD4KLQotI2luY2x1ZGUgImZzL2ZzLmho
IgotI2luY2x1ZGUgImxpYmMvbGliYy5oaCIKLQotI2luY2x1ZGUgPG1udGVudC5oPgotI2luY2x1
ZGUgPHN5cy9tbWFuLmg+Ci0KLSNpbmNsdWRlIDxvc3YvY2xvY2suaGg+Ci0jaW5jbHVkZSA8YXBp
L3V0aW1lLmg+Ci0jaW5jbHVkZSA8Y2hyb25vPgotCisjaW5jbHVkZSA8c3RkYXJnLmg+CisjaW5j
bHVkZSA8dmZzY29yZS9maWxlLmg+CisjaW5jbHVkZSA8dmZzY29yZS9tb3VudC5oPgorI2luY2x1
ZGUgPHZmc2NvcmUvZnMuaD4KKyNpbmNsdWRlIDx1ay9lcnJwdHIuaD4KIAogI2lmZGVmIERFQlVH
X1ZGUwogaW50CXZmc19kZWJ1ZyA9IFZGU0RCX0ZMQUdTOwpkaWZmIC0tZ2l0IGEvbGliL3Zmc2Nv
cmUvbW91bnQuYyBiL2xpYi92ZnNjb3JlL21vdW50LmMKaW5kZXggMTBjMjdmYWQuLjA2OTIyZmZi
IDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9tb3VudC5jCisrKyBiL2xpYi92ZnNjb3JlL21vdW50
LmMKQEAgLTM0LDI3ICszNCwyMiBAQAogICogdmZzX21vdW50LmMgLSBtb3VudCBvcGVyYXRpb25z
CiAgKi8KIAotI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAjaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0j
aW5jbHVkZSA8ZGlyZW50Lmg+Ci0KICNpbmNsdWRlIDxsaW1pdHMuaD4KICNpbmNsdWRlIDx1bmlz
dGQuaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRl
IDxzdGRpby5oPgogI2luY2x1ZGUgPGVycm5vLmg+Ci0jaW5jbHVkZSA8ZmNudGwuaD4KLQotI2lu
Y2x1ZGUgPG9zdi9wcmV4Lmg+Ci0jaW5jbHVkZSA8b3N2L3Zub2RlLmg+Ci0jaW5jbHVkZSA8b3N2
L2RldmljZS5oPgotI2luY2x1ZGUgPG9zdi9kZWJ1Zy5oPgotI2luY2x1ZGUgPG9zdi9tdXRleC5o
PgogI2luY2x1ZGUgInZmcy5oIgotCi0jaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPGxpc3Q+
CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRl
IDx0aW1lLmg+CisjaW5jbHVkZSA8dWsvbGlzdC5oPgorI2luY2x1ZGUgPHVrL211dGV4Lmg+Cisj
aW5jbHVkZSA8dmZzY29yZS9wcmV4Lmg+CisjaW5jbHVkZSA8dmZzY29yZS9kZW50cnkuaD4KKyNp
bmNsdWRlIDx2ZnNjb3JlL3Zub2RlLmg+CiAKIC8qCiAgKiBMaXN0IGZvciBWRlMgbW91bnQgcG9p
bnRzLgpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvc3Vicl91aW8uYyBiL2xpYi92ZnNjb3JlL3N1
YnJfdWlvLmMKaW5kZXggODI3NmQ2ZDQuLmJiY2EzMzYyIDEwMDY0NAotLS0gYS9saWIvdmZzY29y
ZS9zdWJyX3Vpby5jCisrKyBiL2xpYi92ZnNjb3JlL3N1YnJfdWlvLmMKQEAgLTM5LDExICszOSwx
MSBAQAogICoJQCgjKWtlcm5fc3Vici5jCTguMyAoQmVya2VsZXkpIDEvMjEvOTQKICAqLwogCi0j
aW5jbHVkZSA8YXNzZXJ0Lmg+CisjaW5jbHVkZSA8dWsvYXNzZXJ0Lmg+CiAjaW5jbHVkZSA8ZXJy
bm8uaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KLSNpbmNsdWRl
IDxvc3YvdWlvLmg+CisjaW5jbHVkZSA8dmZzY29yZS91aW8uaD4KIAogaW50CiB1aW9tb3ZlKHZv
aWQgKmNwLCBpbnQgbiwgc3RydWN0IHVpbyAqdWlvKQpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUv
c3lzY2FsbHMuYyBiL2xpYi92ZnNjb3JlL3N5c2NhbGxzLmMKaW5kZXggNGU1NTMzN2YuLmY1MGZi
MzhmIDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9zeXNjYWxscy5jCisrKyBiL2xpYi92ZnNjb3Jl
L3N5c2NhbGxzLmMKQEAgLTM1LDcgKzM1LDggQEAKICAqICAgICAgICAgICAgICAgICAgYSBWRlMg
c3lzdGVtIGNhbGwuCiAgKi8KIAotI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjZGVmaW5lIF9CU0Rf
U09VUkNFCisjZGVmaW5lIF9HTlVfU09VUkNFCiAjaW5jbHVkZSA8ZGlyZW50Lmg+CiAKICNpbmNs
dWRlIDxsaW1pdHMuaD4KQEAgLTQ2LDExICs0NywxMiBAQAogI2luY2x1ZGUgPGVycm5vLmg+CiAj
aW5jbHVkZSA8ZmNudGwuaD4KIAotI2luY2x1ZGUgPG9zdi9wcmV4Lmg+Ci0jaW5jbHVkZSA8b3N2
L3Zub2RlLmg+Ci0jaW5jbHVkZSA8b3N2L3Zmc19maWxlLmhoPgorI2luY2x1ZGUgPHZmc2NvcmUv
cHJleC5oPgorI2luY2x1ZGUgPHZmc2NvcmUvdm5vZGUuaD4KKyNpbmNsdWRlIDx2ZnNjb3JlL2Zp
bGUuaD4KKwogI2luY2x1ZGUgInZmcy5oIgotI2luY2x1ZGUgPGZzL2ZzLmhoPgorI2luY2x1ZGUg
PHZmc2NvcmUvZnMuaD4KIAogZXh0ZXJuIHN0cnVjdCB0YXNrICptYWluX3Rhc2s7CiAKZGlmZiAt
LWdpdCBhL2xpYi92ZnNjb3JlL3Rhc2suYyBiL2xpYi92ZnNjb3JlL3Rhc2suYwppbmRleCA0Y2Vi
MTIzYi4uNzYzNWJkN2EgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL3Rhc2suYworKysgYi9saWIv
dmZzY29yZS90YXNrLmMKQEAgLTQxLDcgKzQxLDcgQEAKICNpbmNsdWRlIDxzdGRpby5oPgogI2lu
Y2x1ZGUgPGVycm5vLmg+CiAKLSNpbmNsdWRlIDxvc3YvcHJleC5oPgorI2luY2x1ZGUgPHZmc2Nv
cmUvcHJleC5oPgogI2luY2x1ZGUgInZmcy5oIgogCiAKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3Jl
L3Zmcy5oIGIvbGliL3Zmc2NvcmUvdmZzLmgKaW5kZXggY2Q5NDA5NzkuLjI1MzFmNzMwIDEwMDY0
NAotLS0gYS9saWIvdmZzY29yZS92ZnMuaAorKysgYi9saWIvdmZzY29yZS92ZnMuaApAQCAtMzMs
MjQgKzMzLDEyIEBACiAjaWZuZGVmIF9WRlNfSAogI2RlZmluZSBfVkZTX0gKIAotI2luY2x1ZGUg
PHN5cy9jZGVmcy5oPgotI2luY2x1ZGUgPGFzc2VydC5oPgotI2luY2x1ZGUgPGRpcmVudC5oPgot
I2luY2x1ZGUgPGxpbWl0cy5oPgotCi0jaW5jbHVkZSA8b3N2L3ByZXguaD4KLSNpbmNsdWRlIDxv
c3YvZmlsZS5oPgotI2luY2x1ZGUgPG9zdi9tb3VudC5oPgotI2luY2x1ZGUgPG9zdi92bm9kZS5o
PgotI2luY2x1ZGUgPG9zdi9kZW50cnkuaD4KLSNpbmNsdWRlIDxvc3YvZXJyb3IuaD4KLQotLyoK
LSAqIEltcG9ydCB2bm9kZSBhdHRyaWJ1dGVzIGZsYWdzCi0gKi8KLSNpbmNsdWRlIDxvc3Yvdm5v
ZGVfYXR0ci5oPgorI2RlZmluZSBfR05VX1NPVVJDRQorI2luY2x1ZGUgPHZmc2NvcmUvbW91bnQu
aD4KIAotLyogI2RlZmluZSBERUJVR19WRlMgMSAqLworI2luY2x1ZGUgPGxpbWl0cy5oPgorI2lu
Y2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8c3lzL3N0YXRmcy5oPgogCiAvKgogICogVHVuYWJs
ZSBwYXJhbWV0ZXJzCkBAIC01OCw3ICs0Niw2IEBACiAjZGVmaW5lIEZTTUFYTkFNRVMJMTYJCS8q
IG1heCBsZW5ndGggb2YgJ2ZpbGUgc3lzdGVtJyBuYW1lICovCiAKICNpZmRlZiBERUJVR19WRlMK
LSNpbmNsdWRlIDxvc3YvZGVidWcuaD4KIAogZXh0ZXJuIGludCB2ZnNfZGVidWc7CiAKZGlmZiAt
LWdpdCBhL2xpYi92ZnNjb3JlL3Zub2RlLmMgYi9saWIvdmZzY29yZS92bm9kZS5jCmluZGV4IGY1
NjQ1NzdmLi44MWY3OGJlOCAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvdm5vZGUuYworKysgYi9s
aWIvdmZzY29yZS92bm9kZS5jCkBAIC0zNiwxNCArMzYsMTYgQEAKIAogI2luY2x1ZGUgPGxpbWl0
cy5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUg
PHN0cmluZy5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5j
bHVkZSA8ZXJybm8uaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogCi0jaW5jbHVkZSA8b3N2L3By
ZXguaD4KLSNpbmNsdWRlIDxvc3Yvdm5vZGUuaD4KKyNpbmNsdWRlIDx2ZnNjb3JlL3ByZXguaD4K
KyNpbmNsdWRlIDx2ZnNjb3JlL2RlbnRyeS5oPgorI2luY2x1ZGUgPHZmc2NvcmUvdm5vZGUuaD4K
ICNpbmNsdWRlICJ2ZnMuaCIKIAogZW51bSB2dHlwZSBpZnRvdnRfdGFiWzE2XSA9IHsKLS0gCjIu
MTkuMgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1p
bmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3Jn
Cmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2
ZWw=

From minios-devel-bounces@lists.xenproject.org Thu Feb 07 13:59:59 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 07 Feb 2019 13:59:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grkDf-0006cC-MH; Thu, 07 Feb 2019 13:59:59 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=CXnx=QO=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1grkDf-0006bW-7G
 for minios-devel@lists.xen.org; Thu, 07 Feb 2019 13:59:59 +0000
X-Inumbo-ID: a56d6a6f-2ae0-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id a56d6a6f-2ae0-11e9-bc90-bc764e045a96;
 Thu, 07 Feb 2019 13:59:55 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 8454D104DA7;
 Thu,  7 Feb 2019 14:59:54 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id o1eTigk4GC05; Thu,  7 Feb 2019 14:59:54 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 485F0104DA5
 for <minios-devel@lists.xen.org>; Thu,  7 Feb 2019 14:59:52 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Thu, 7 Feb 2019 14:59:52 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Thu, 7 Feb 2019 14:58:47 +0100
Message-ID: <20190207135901.9122-10-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
References: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v3 09/23] lib/vfscore: use Unikraft
 types and functions
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogbGliL3Zmc2NvcmUvZGVudHJ5LmMgICAgICAgICAgICAgICAgIHwgMTM3ICsrKysrKysrKysr
KysrLS0tLS0tLS0tLS0tLQogbGliL3Zmc2NvcmUvZm9wcy5jICAgICAgICAgICAgICAgICAgIHwg
ICAyICstCiBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZGVudHJ5LmggfCAgMTAgKy0KIGxp
Yi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9tb3VudC5oICB8ICAgMSArCiBsaWIvdmZzY29yZS9p
bmNsdWRlL3Zmc2NvcmUvdm5vZGUuaCAgfCAgMjkgKysrLS0tCiBsaWIvdmZzY29yZS9sb29rdXAu
YyAgICAgICAgICAgICAgICAgfCAgMzAgKysrLS0tCiBsaWIvdmZzY29yZS9tYWluLmMgICAgICAg
ICAgICAgICAgICAgfCAxMjEgKysrKysrKysrKystLS0tLS0tLS0tLS0KIGxpYi92ZnNjb3JlL21v
dW50LmMgICAgICAgICAgICAgICAgICB8IDExNCArKysrKysrKysrKystLS0tLS0tLS0tCiBsaWIv
dmZzY29yZS9zdWJyX3Vpby5jICAgICAgICAgICAgICAgfCAgIDIgKy0KIGxpYi92ZnNjb3JlL3N5
c2NhbGxzLmMgICAgICAgICAgICAgICB8IDEyOCArKysrKysrKysrKystLS0tLS0tLS0tLS0tCiBs
aWIvdmZzY29yZS92ZnMuaCAgICAgICAgICAgICAgICAgICAgfCAgMzggKysrKy0tLS0KIGxpYi92
ZnNjb3JlL3Zub2RlLmMgICAgICAgICAgICAgICAgICB8IDEyMiArKysrKysrKysrKystLS0tLS0t
LS0tLS0KIDEyIGZpbGVzIGNoYW5nZWQsIDM3NiBpbnNlcnRpb25zKCspLCAzNTggZGVsZXRpb25z
KC0pCgpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvZGVudHJ5LmMgYi9saWIvdmZzY29yZS9kZW50
cnkuYwppbmRleCBjY2NlMDdkMS4uZmUxODQxYmIgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2Rl
bnRyeS5jCisrKyBiL2xpYi92ZnNjb3JlL2RlbnRyeS5jCkBAIC00MSwxOCArNDEsMTggQEAKIAog
I2RlZmluZSBERU5UUllfQlVDS0VUUyAzMgogCi1zdGF0aWMgTElTVF9IRUFEKGRlbnRyeV9oYXNo
X2hlYWQsIGRlbnRyeSkgZGVudHJ5X2hhc2hfdGFibGVbREVOVFJZX0JVQ0tFVFNdOwotc3RhdGlj
IExJU1RfSEVBRChmYWtlLCBkZW50cnkpIGZha2U7Ci1zdGF0aWMgbXV0ZXggZGVudHJ5X2hhc2hf
bG9jazsKK3N0YXRpYyBzdHJ1Y3QgdWtfaGxpc3RfaGVhZCBkZW50cnlfaGFzaF90YWJsZVtERU5U
UllfQlVDS0VUU107CitzdGF0aWMgVUtfSExJU1RfSEVBRChmYWtlKTsKK3N0YXRpYyBzdHJ1Y3Qg
dWtfbXV0ZXggZGVudHJ5X2hhc2hfbG9jazsKIAogLyoKICAqIEdldCB0aGUgaGFzaCB2YWx1ZSBm
cm9tIHRoZSBtb3VudCBwb2ludCBhbmQgcGF0aCBuYW1lLgogICogWFhYOiByZXBsYWNlIHdpdGgg
YSBiZXR0ZXIgaGFzaCBmb3IgNjQtYml0IHBvaW50ZXJzLgogICovCi1zdGF0aWMgdV9pbnQKK3N0
YXRpYyB1bnNpZ25lZCBpbnQKIGRlbnRyeV9oYXNoKHN0cnVjdCBtb3VudCAqbXAsIGNvbnN0IGNo
YXIgKnBhdGgpCiB7Ci0JdV9pbnQgdmFsID0gMDsKKwl1bnNpZ25lZCBpbnQgdmFsID0gMDsKIAog
CWlmIChwYXRoKSB7CiAJCXdoaWxlICgqcGF0aCkgewpAQCAtNjcsMTAgKzY3LDEwIEBAIHN0cnVj
dCBkZW50cnkgKgogZGVudHJ5X2FsbG9jKHN0cnVjdCBkZW50cnkgKnBhcmVudF9kcCwgc3RydWN0
IHZub2RlICp2cCwgY29uc3QgY2hhciAqcGF0aCkKIHsKIAlzdHJ1Y3QgbW91bnQgKm1wID0gdnAt
PnZfbW91bnQ7Ci0Jc3RydWN0IGRlbnRyeSAqZHAgPSAoZGVudHJ5KiljYWxsb2Moc2l6ZW9mKCpk
cCksIDEpOworCXN0cnVjdCBkZW50cnkgKmRwID0gKHN0cnVjdCBkZW50cnkqKWNhbGxvYyhzaXpl
b2YoKmRwKSwgMSk7CiAKIAlpZiAoIWRwKSB7Ci0JCXJldHVybiBudWxscHRyOworCQlyZXR1cm4g
TlVMTDsKIAl9CiAKIAl2cmVmKHZwKTsKQEAgLTc5LDIyICs3OSwyNCBAQCBkZW50cnlfYWxsb2Mo
c3RydWN0IGRlbnRyeSAqcGFyZW50X2RwLCBzdHJ1Y3Qgdm5vZGUgKnZwLCBjb25zdCBjaGFyICpw
YXRoKQogCWRwLT5kX3Zub2RlID0gdnA7CiAJZHAtPmRfbW91bnQgPSBtcDsKIAlkcC0+ZF9wYXRo
ID0gc3RyZHVwKHBhdGgpOwotCUxJU1RfSU5JVCgmZHAtPmRfY2hpbGRyZW4pOworCVVLX0lOSVRf
TElTVF9IRUFEKCZkcC0+ZF9jaGlsZF9saXN0KTsKIAogCWlmIChwYXJlbnRfZHApIHsKIAkJZHJl
ZihwYXJlbnRfZHApOwotCQlXSVRIX0xPQ0socGFyZW50X2RwLT5kX2xvY2spIHsKLQkJCS8vIElu
c2VydCBkcCBpbnRvIGl0cyBwYXJlbnQncyBjaGlsZHJlbiBsaXN0LgotCQkJTElTVF9JTlNFUlRf
SEVBRCgmcGFyZW50X2RwLT5kX2NoaWxkcmVuLCBkcCwgZF9jaGlsZHJlbl9saW5rKTsKLQkJfQor
CisJCXVrX211dGV4X2xvY2soJnBhcmVudF9kcC0+ZF9sb2NrKTsKKwkJLy8gSW5zZXJ0IGRwIGlu
dG8gaXRzIHBhcmVudCdzIGNoaWxkcmVuIGxpc3QuCisJCXVrX2xpc3RfYWRkKCZkcC0+ZF9jaGls
ZF9saW5rLCAmcGFyZW50X2RwLT5kX2NoaWxkX2xpc3QpOworCQl1a19tdXRleF91bmxvY2soJnBh
cmVudF9kcC0+ZF9sb2NrKTsKIAl9CiAJZHAtPmRfcGFyZW50ID0gcGFyZW50X2RwOwogCiAJdm5f
YWRkX25hbWUodnAsIGRwKTsKIAotCW11dGV4X2xvY2soJmRlbnRyeV9oYXNoX2xvY2spOwotCUxJ
U1RfSU5TRVJUX0hFQUQoJmRlbnRyeV9oYXNoX3RhYmxlW2RlbnRyeV9oYXNoKG1wLCBwYXRoKV0s
IGRwLCBkX2xpbmspOwotCW11dGV4X3VubG9jaygmZGVudHJ5X2hhc2hfbG9jayk7CisJdWtfbXV0
ZXhfbG9jaygmZGVudHJ5X2hhc2hfbG9jayk7CisJdWtfaGxpc3RfYWRkX2hlYWQoJmRwLT5kX2xp
bmssCisJCQkgICZkZW50cnlfaGFzaF90YWJsZVtkZW50cnlfaGFzaChtcCwgcGF0aCldKTsKKwl1
a19tdXRleF91bmxvY2soJmRlbnRyeV9oYXNoX2xvY2spOwogCXJldHVybiBkcDsKIH07CiAKQEAg
LTEwMywyOSArMTA1LDMwIEBAIGRlbnRyeV9sb29rdXAoc3RydWN0IG1vdW50ICptcCwgY2hhciAq
cGF0aCkKIHsKIAlzdHJ1Y3QgZGVudHJ5ICpkcDsKIAotCW11dGV4X2xvY2soJmRlbnRyeV9oYXNo
X2xvY2spOwotCUxJU1RfRk9SRUFDSChkcCwgJmRlbnRyeV9oYXNoX3RhYmxlW2RlbnRyeV9oYXNo
KG1wLCBwYXRoKV0sIGRfbGluaykgeworCXVrX211dGV4X2xvY2soJmRlbnRyeV9oYXNoX2xvY2sp
OworCXVrX2hsaXN0X2Zvcl9lYWNoX2VudHJ5KGRwLCAmZGVudHJ5X2hhc2hfdGFibGVbZGVudHJ5
X2hhc2gobXAsIHBhdGgpXSwgZF9saW5rKSB7CiAJCWlmIChkcC0+ZF9tb3VudCA9PSBtcCAmJiAh
c3RybmNtcChkcC0+ZF9wYXRoLCBwYXRoLCBQQVRIX01BWCkpIHsKIAkJCWRwLT5kX3JlZmNudCsr
OwotCQkJbXV0ZXhfdW5sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKKwkJCXVrX211dGV4X3VubG9j
aygmZGVudHJ5X2hhc2hfbG9jayk7CiAJCQlyZXR1cm4gZHA7CiAJCX0KIAl9Ci0JbXV0ZXhfdW5s
b2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKLQlyZXR1cm4gbnVsbHB0cjsgICAgICAgICAgICAgICAg
Lyogbm90IGZvdW5kICovCisJdWtfbXV0ZXhfdW5sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKKwly
ZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgLyogbm90IGZvdW5kICovCiB9CiAKIHN0YXRpYyB2
b2lkIGRlbnRyeV9jaGlsZHJlbl9yZW1vdmUoc3RydWN0IGRlbnRyeSAqZHApCiB7Ci0Jc3RydWN0
IGRlbnRyeSAqZW50cnkgPSBudWxscHRyOworCXN0cnVjdCBkZW50cnkgKmVudHJ5ID0gTlVMTDsK
IAotCVdJVEhfTE9DSyhkcC0+ZF9sb2NrKSB7Ci0JCUxJU1RfRk9SRUFDSChlbnRyeSwgJmRwLT5k
X2NoaWxkcmVuLCBkX2NoaWxkcmVuX2xpbmspIHsKLQkJCUFTU0VSVChlbnRyeSk7Ci0JCQlBU1NF
UlQoZW50cnktPmRfcmVmY250ID4gMCk7Ci0JCQlMSVNUX1JFTU9WRShlbnRyeSwgZF9saW5rKTsK
LQkJfQorCXVrX211dGV4X2xvY2soJmRwLT5kX2xvY2spOworCXVrX2xpc3RfZm9yX2VhY2hfZW50
cnkoZW50cnksICZkcC0+ZF9jaGlsZF9saXN0LCBkX2NoaWxkX2xpbmspIHsKKwkJVUtfQVNTRVJU
KGVudHJ5KTsKKwkJVUtfQVNTRVJUKGVudHJ5LT5kX3JlZmNudCA+IDApOworCQl1a19obGlzdF9k
ZWwoJmVudHJ5LT5kX2xpbmspOwogCX0KKwl1a19tdXRleF91bmxvY2soJmRwLT5kX2xvY2spOwor
CiB9CiAKIHZvaWQKQEAgLTEzNSwzMyArMTM4LDM0IEBAIGRlbnRyeV9tb3ZlKHN0cnVjdCBkZW50
cnkgKmRwLCBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnRfZHAsIGNoYXIgKnBhdGgpCiAJY2hhciAqb2xk
X3BhdGggPSBkcC0+ZF9wYXRoOwogCiAJaWYgKG9sZF9wZHApIHsKLQkJV0lUSF9MT0NLKG9sZF9w
ZHAtPmRfbG9jaykgewotCQkJLy8gUmVtb3ZlIGRwIGZyb20gaXRzIG9sZCBwYXJlbnQncyBjaGls
ZHJlbiBsaXN0LgotCQkJTElTVF9SRU1PVkUoZHAsIGRfY2hpbGRyZW5fbGluayk7Ci0JCX0KKwkJ
dWtfbXV0ZXhfbG9jaygmb2xkX3BkcC0+ZF9sb2NrKTsKKwkJLy8gUmVtb3ZlIGRwIGZyb20gaXRz
IG9sZCBwYXJlbnQncyBjaGlsZHJlbiBsaXN0LgorCQl1a19saXN0X2RlbCgmZHAtPmRfY2hpbGRf
bGluayk7CisJCXVrX211dGV4X3VubG9jaygmb2xkX3BkcC0+ZF9sb2NrKTsKIAl9CiAKIAlpZiAo
cGFyZW50X2RwKSB7CiAJCWRyZWYocGFyZW50X2RwKTsKLQkJV0lUSF9MT0NLKHBhcmVudF9kcC0+
ZF9sb2NrKSB7Ci0JCQkvLyBJbnNlcnQgZHAgaW50byBpdHMgbmV3IHBhcmVudCdzIGNoaWxkcmVu
IGxpc3QuCi0JCQlMSVNUX0lOU0VSVF9IRUFEKCZwYXJlbnRfZHAtPmRfY2hpbGRyZW4sIGRwLCBk
X2NoaWxkcmVuX2xpbmspOwotCQl9Ci0JfQogCi0JV0lUSF9MT0NLKGRlbnRyeV9oYXNoX2xvY2sp
IHsKLQkJLy8gUmVtb3ZlIGFsbCBkcCdzIGNoaWxkIGRlbnRyaWVzIGZyb20gdGhlIGhhc2h0YWJs
ZS4KLQkJZGVudHJ5X2NoaWxkcmVuX3JlbW92ZShkcCk7Ci0JCS8vIFJlbW92ZSBkcCB3aXRoIG91
dGRhdGVkIGhhc2ggaW5mbyBmcm9tIHRoZSBoYXNodGFibGUuCi0JCUxJU1RfUkVNT1ZFKGRwLCBk
X2xpbmspOwotCQkvLyBVcGRhdGUgZHAuCi0JCWRwLT5kX3BhdGggPSBzdHJkdXAocGF0aCk7Ci0J
CWRwLT5kX3BhcmVudCA9IHBhcmVudF9kcDsKLQkJLy8gSW5zZXJ0IGRwIHVwZGF0ZWQgaGFzaCBp
bmZvIGludG8gdGhlIGhhc2h0YWJsZS4KLQkJTElTVF9JTlNFUlRfSEVBRCgmZGVudHJ5X2hhc2hf
dGFibGVbZGVudHJ5X2hhc2goZHAtPmRfbW91bnQsIHBhdGgpXSwKLQkJCWRwLCBkX2xpbmspOwor
CQl1a19tdXRleF9sb2NrKCZwYXJlbnRfZHAtPmRfbG9jayk7CisJCS8vIEluc2VydCBkcCBpbnRv
IGl0cyBuZXcgcGFyZW50J3MgY2hpbGRyZW4gbGlzdC4KKwkJdWtfbGlzdF9hZGQoJmRwLT5kX2No
aWxkX2xpbmssICZwYXJlbnRfZHAtPmRfY2hpbGRfbGlzdCk7CisJCXVrX211dGV4X3VubG9jaygm
cGFyZW50X2RwLT5kX2xvY2spOwogCX0KIAorCXVrX211dGV4X2xvY2soJmRlbnRyeV9oYXNoX2xv
Y2spOworCS8vIFJlbW92ZSBhbGwgZHAncyBjaGlsZCBkZW50cmllcyBmcm9tIHRoZSBoYXNodGFi
bGUuCisJZGVudHJ5X2NoaWxkcmVuX3JlbW92ZShkcCk7CisJLy8gUmVtb3ZlIGRwIHdpdGggb3V0
ZGF0ZWQgaGFzaCBpbmZvIGZyb20gdGhlIGhhc2h0YWJsZS4KKwl1a19obGlzdF9kZWwoJmRwLT5k
X2xpbmspOworCS8vIFVwZGF0ZSBkcC4KKwlkcC0+ZF9wYXRoID0gc3RyZHVwKHBhdGgpOworCWRw
LT5kX3BhcmVudCA9IHBhcmVudF9kcDsKKwkvLyBJbnNlcnQgZHAgdXBkYXRlZCBoYXNoIGluZm8g
aW50byB0aGUgaGFzaHRhYmxlLgorCXVrX2hsaXN0X2FkZF9oZWFkKCZkcC0+ZF9saW5rLAorCQkJ
ICAmZGVudHJ5X2hhc2hfdGFibGVbZGVudHJ5X2hhc2goZHAtPmRfbW91bnQsIHBhdGgpXSk7CisJ
dWtfbXV0ZXhfdW5sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKKwogCWlmIChvbGRfcGRwKSB7CiAJ
CWRyZWxlKG9sZF9wZHApOwogCX0KQEAgLTE3Miw0NSArMTc2LDQ2IEBAIGRlbnRyeV9tb3ZlKHN0
cnVjdCBkZW50cnkgKmRwLCBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnRfZHAsIGNoYXIgKnBhdGgpCiB2
b2lkCiBkZW50cnlfcmVtb3ZlKHN0cnVjdCBkZW50cnkgKmRwKQogewotCW11dGV4X2xvY2soJmRl
bnRyeV9oYXNoX2xvY2spOwotCUxJU1RfUkVNT1ZFKGRwLCBkX2xpbmspOworCXVrX211dGV4X2xv
Y2soJmRlbnRyeV9oYXNoX2xvY2spOworCXVrX2hsaXN0X2RlbCgmZHAtPmRfbGluayk7CiAJLyog
cHV0IGl0IG9uIGEgZmFrZSBsaXN0IGZvciBkcmVsZSgpIHRvIHdvcmsqLwotCUxJU1RfSU5TRVJU
X0hFQUQoJmZha2UsIGRwLCBkX2xpbmspOwotCW11dGV4X3VubG9jaygmZGVudHJ5X2hhc2hfbG9j
ayk7CisJdWtfaGxpc3RfYWRkX2hlYWQoJmRwLT5kX2xpbmssICZmYWtlKTsKKwl1a19tdXRleF91
bmxvY2soJmRlbnRyeV9oYXNoX2xvY2spOwogfQogCiB2b2lkCiBkcmVmKHN0cnVjdCBkZW50cnkg
KmRwKQogewotCUFTU0VSVChkcCk7Ci0JQVNTRVJUKGRwLT5kX3JlZmNudCA+IDApOworCVVLX0FT
U0VSVChkcCk7CisJVUtfQVNTRVJUKGRwLT5kX3JlZmNudCA+IDApOwogCi0JbXV0ZXhfbG9jaygm
ZGVudHJ5X2hhc2hfbG9jayk7CisJdWtfbXV0ZXhfbG9jaygmZGVudHJ5X2hhc2hfbG9jayk7CiAJ
ZHAtPmRfcmVmY250Kys7Ci0JbXV0ZXhfdW5sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKKwl1a19t
dXRleF91bmxvY2soJmRlbnRyeV9oYXNoX2xvY2spOwogfQogCiB2b2lkCiBkcmVsZShzdHJ1Y3Qg
ZGVudHJ5ICpkcCkKIHsKLQlBU1NFUlQoZHApOwotCUFTU0VSVChkcC0+ZF9yZWZjbnQgPiAwKTsK
KwlVS19BU1NFUlQoZHApOworCVVLX0FTU0VSVChkcC0+ZF9yZWZjbnQgPiAwKTsKIAotCW11dGV4
X2xvY2soJmRlbnRyeV9oYXNoX2xvY2spOworCXVrX211dGV4X2xvY2soJmRlbnRyeV9oYXNoX2xv
Y2spOwogCWlmICgtLWRwLT5kX3JlZmNudCkgewotCQltdXRleF91bmxvY2soJmRlbnRyeV9oYXNo
X2xvY2spOworCQl1a19tdXRleF91bmxvY2soJmRlbnRyeV9oYXNoX2xvY2spOwogCQlyZXR1cm47
CiAJfQotCUxJU1RfUkVNT1ZFKGRwLCBkX2xpbmspOworCXVrX2hsaXN0X2RlbCgmZHAtPmRfbGlu
ayk7CiAJdm5fZGVsX25hbWUoZHAtPmRfdm5vZGUsIGRwKTsKIAotCW11dGV4X3VubG9jaygmZGVu
dHJ5X2hhc2hfbG9jayk7CisJdWtfbXV0ZXhfdW5sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKIAog
CWlmIChkcC0+ZF9wYXJlbnQpIHsKLQkJV0lUSF9MT0NLKGRwLT5kX3BhcmVudC0+ZF9sb2NrKSB7
Ci0JCQkvLyBSZW1vdmUgZHAgZnJvbSBpdHMgcGFyZW50J3MgY2hpbGRyZW4gbGlzdC4KLQkJCUxJ
U1RfUkVNT1ZFKGRwLCBkX2NoaWxkcmVuX2xpbmspOwotCQl9CisJCXVrX211dGV4X2xvY2soJmRw
LT5kX3BhcmVudC0+ZF9sb2NrKTsKKwkJLy8gUmVtb3ZlIGRwIGZyb20gaXRzIHBhcmVudCdzIGNo
aWxkcmVuIGxpc3QuCisJCXVrX2xpc3RfZGVsKCZkcC0+ZF9jaGlsZF9saW5rKTsKKwkJdWtfbXV0
ZXhfdW5sb2NrKCZkcC0+ZF9wYXJlbnQtPmRfbG9jayk7CisKIAkJZHJlbGUoZHAtPmRfcGFyZW50
KTsKIAl9CiAKQEAgLTIyNiw2ICsyMzEsNiBAQCBkZW50cnlfaW5pdCh2b2lkKQogCWludCBpOwog
CiAJZm9yIChpID0gMDsgaSA8IERFTlRSWV9CVUNLRVRTOyBpKyspIHsKLQkJTElTVF9JTklUKCZk
ZW50cnlfaGFzaF90YWJsZVtpXSk7CisJCVVLX0lOSVRfSExJU1RfSEVBRCgmZGVudHJ5X2hhc2hf
dGFibGVbaV0pOwogCX0KIH0KZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2ZvcHMuYyBiL2xpYi92
ZnNjb3JlL2ZvcHMuYwppbmRleCBiNDU4M2QyMC4uNzkxMTRlMjEgMTAwNjQ0Ci0tLSBhL2xpYi92
ZnNjb3JlL2ZvcHMuYworKysgYi9saWIvdmZzY29yZS9mb3BzLmMKQEAgLTExNSw3ICsxMTUsNyBA
QCBpbnQgdmZzX3dyaXRlKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwLCBzdHJ1Y3QgdWlvICp1aW8s
IGludCBmbGFncykKIAlyZXR1cm4gZXJyb3I7CiB9CiAKLWludCB2ZnNfaW9jdGwoc3RydWN0IHZm
c2NvcmVfZmlsZSAqZnAsIHVfbG9uZyBjb20sIHZvaWQgKmRhdGEpCitpbnQgdmZzX2lvY3RsKHN0
cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwLCB1bnNpZ25lZCBsb25nIGNvbSwgdm9pZCAqZGF0YSkKIHsK
IAlzdHJ1Y3Qgdm5vZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOwogCWludCBlcnJvcjsK
ZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9kZW50cnkuaCBiL2xpYi92
ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9kZW50cnkuaAppbmRleCBiYTFjMzQ1Ny4uODVmMzdhYjcg
MTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9kZW50cnkuaAorKysgYi9s
aWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZGVudHJ5LmgKQEAgLTQyLDE2ICs0MiwxNiBAQAog
c3RydWN0IHZub2RlOwogCiBzdHJ1Y3QgZGVudHJ5IHsKLQlMSVNUX0VOVFJZKGRlbnRyeSkgZF9s
aW5rOwkvKiBsaW5rIGZvciBoYXNoIGxpc3QgKi8KKwlzdHJ1Y3QgdWtfaGxpc3Rfbm9kZSBkX2xp
bms7CS8qIGxpbmsgZm9yIGhhc2ggbGlzdCAqLwogCWludAkJZF9yZWZjbnQ7CS8qIHJlZmVyZW5j
ZSBjb3VudCAqLwogCWNoYXIJCSpkX3BhdGg7CS8qIHBvaW50ZXIgdG8gcGF0aCBpbiBmcyAqLwog
CXN0cnVjdCB2bm9kZQkqZF92bm9kZTsKIAlzdHJ1Y3QgbW91bnQJKmRfbW91bnQ7CiAJc3RydWN0
IGRlbnRyeSAgICpkX3BhcmVudDsgLyogcG9pbnRlciB0byBwYXJlbnQgKi8KLQlMSVNUX0VOVFJZ
KGRlbnRyeSkgZF9uYW1lc19saW5rOyAvKiBsaW5rIGZvIHZub2RlOjpkX25hbWVzICovCi0JbXV0
ZXhfdAkJZF9sb2NrOwotCUxJU1RfSEVBRCgsIGRlbnRyeSkgZF9jaGlsZHJlbjsKLQlMSVNUX0VO
VFJZKGRlbnRyeSkgZF9jaGlsZHJlbl9saW5rOworCXN0cnVjdCB1a19saXN0X2hlYWQgZF9uYW1l
c19saW5rOyAvKiBsaW5rIGZvIHZub2RlOjpkX25hbWVzICovCisJc3RydWN0IHVrX211dGV4CWRf
bG9jazsKKwlzdHJ1Y3QgdWtfbGlzdF9oZWFkIGRfY2hpbGRfbGlzdDsKKwlzdHJ1Y3QgdWtfbGlz
dF9oZWFkIGRfY2hpbGRfbGluazsKIH07CiAKICNlbmRpZiAvKiBfT1NWX0RFTlRSWV9IICovCmRp
ZmYgLS1naXQgYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvbW91bnQuaCBiL2xpYi92ZnNj
b3JlL2luY2x1ZGUvdmZzY29yZS9tb3VudC5oCmluZGV4IGUxMmExMDM5Li43YTYzOGRiZSAxMDA2
NDQKLS0tIGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmgKKysrIGIvbGliL3Zm
c2NvcmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmgKQEAgLTUyLDYgKzUyLDcgQEAgc3RydWN0IG1v
dW50IHsKIAlzdHJ1Y3QgZGVudHJ5CSptX3Jvb3Q7CS8qIHJvb3Qgdm5vZGUgKi8KIAlzdHJ1Y3Qg
ZGVudHJ5CSptX2NvdmVyZWQ7CS8qIHZub2RlIGNvdmVyZWQgb24gcGFyZW50IGZzICovCiAJdm9p
ZAkJKm1fZGF0YTsJLyogcHJpdmF0ZSBkYXRhIGZvciBmcyAqLworCXN0cnVjdCB1a19saXN0X2hl
YWQgbW50X2xpc3Q7CiAJZnNpZF90IAkJbV9mc2lkOyAJLyogaWQgdGhhdCB1bmlxdWVseSBpZGVu
dGlmaWVzIHRoZSBmcyAqLwogfTsKIApkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92
ZnNjb3JlL3Zub2RlLmggYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUuaAppbmRl
eCA0OWZkNGQzNi4uYTRkYjljMTMgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZz
Y29yZS92bm9kZS5oCisrKyBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5oCkBA
IC00Nyw3ICs0Nyw3IEBACiBzdHJ1Y3QgdmZzb3BzOwogc3RydWN0IHZub3BzOwogc3RydWN0IHZu
b2RlOwotc3RydWN0IGZpbGU7CitzdHJ1Y3QgdmZzY29yZV9maWxlOwogCiAvKgogICogVm5vZGUg
dHlwZXMuCkBAIC03MCw3ICs3MCw3IEBAIGVudW0gdnR5cGUgewogICovCiBzdHJ1Y3Qgdm5vZGUg
ewogCXVpbnQ2NF90CXZfaW5vOwkJLyogaW5vZGUgbnVtYmVyICovCi0JTElTVF9FTlRSWSh2bm9k
ZSkgdl9saW5rOwkvKiBsaW5rIGZvciBoYXNoIGxpc3QgKi8KKwlzdHJ1Y3QgdWtfbGlzdF9oZWFk
IHZfbGluazsJLyogbGluayBmb3IgaGFzaCBsaXN0ICovCiAJc3RydWN0IG1vdW50CSp2X21vdW50
OwkvKiBtb3VudGVkIHZmcyBwb2ludGVyICovCiAJc3RydWN0IHZub3BzCSp2X29wOwkJLyogdm5v
ZGUgb3BlcmF0aW9ucyAqLwogCWludAkJdl9yZWZjbnQ7CS8qIHJlZmVyZW5jZSBjb3VudCAqLwpA
QCAtNzgsOSArNzgsOCBAQCBzdHJ1Y3Qgdm5vZGUgewogCWludAkJdl9mbGFnczsJLyogdm5vZGUg
ZmxhZyAqLwogCW1vZGVfdAkJdl9tb2RlOwkJLyogZmlsZSBtb2RlICovCiAJb2ZmX3QJCXZfc2l6
ZTsJCS8qIGZpbGUgc2l6ZSAqLwotCW11dGV4X3QJCXZfbG9jazsJCS8qIGxvY2sgZm9yIHRoaXMg
dm5vZGUgKi8KLQlMSVNUX0hFQUQoLCBkZW50cnkpIHZfbmFtZXM7CS8qIGRpcmVjdG9yeSBlbnRy
aWVzIHBvaW50aW5nIGF0IHRoaXMgKi8KLQlpbnQJCXZfbnJsb2NrczsJLyogbG9jayBjb3VudCAo
Zm9yIGRlYnVnKSAqLworCXN0cnVjdCB1a19tdXRleAl2X2xvY2s7CQkvKiBsb2NrIGZvciB0aGlz
IHZub2RlICovCisJc3RydWN0IHVrX2xpc3RfaGVhZCB2X25hbWVzOwkvKiBkaXJlY3RvcnkgZW50
cmllcyBwb2ludGluZyBhdCB0aGlzICovCiAJdm9pZAkJKnZfZGF0YTsJLyogcHJpdmF0ZSBkYXRh
IGZvciBmcyAqLwogfTsKIApAQCAtMTI3LDE0ICsxMjYsMTQgQEAgc3RydWN0IHZhdHRyIHsKICNk
ZWZpbmUgQVJDX0FDVElPTl9IT0xEICAgICAxCiAjZGVmaW5lIEFSQ19BQ1RJT05fUkVMRUFTRSAg
MgogCi10eXBlZGVmCWludCAoKnZub3Bfb3Blbl90KQkoc3RydWN0IGZpbGUgKik7Ci10eXBlZGVm
CWludCAoKnZub3BfY2xvc2VfdCkJKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTsKLXR5
cGVkZWYJaW50ICgqdm5vcF9yZWFkX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IGZpbGUgKiwg
c3RydWN0IHVpbyAqLCBpbnQpOwotdHlwZWRlZglpbnQgKCp2bm9wX3dyaXRlX3QpCShzdHJ1Y3Qg
dm5vZGUgKiwgc3RydWN0IHVpbyAqLCBpbnQpOwotdHlwZWRlZglpbnQgKCp2bm9wX3NlZWtfdCkJ
KHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgZmlsZSAqLCBvZmZfdCwgb2ZmX3QpOwotdHlwZWRlZglp
bnQgKCp2bm9wX2lvY3RsX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IGZpbGUgKiwgdV9sb25n
LCB2b2lkICopOwotdHlwZWRlZglpbnQgKCp2bm9wX2ZzeW5jX3QpCShzdHJ1Y3Qgdm5vZGUgKiwg
c3RydWN0IGZpbGUgKik7Ci10eXBlZGVmCWludCAoKnZub3BfcmVhZGRpcl90KQkoc3RydWN0IHZu
b2RlICosIHN0cnVjdCBmaWxlICosIHN0cnVjdCBkaXJlbnQgKik7Cit0eXBlZGVmCWludCAoKnZu
b3Bfb3Blbl90KQkoc3RydWN0IHZmc2NvcmVfZmlsZSAqKTsKK3R5cGVkZWYJaW50ICgqdm5vcF9j
bG9zZV90KQkoc3RydWN0IHZub2RlICosIHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKik7Cit0eXBlZGVm
CXNzaXplX3QgKCp2bm9wX3JlYWRfdCkJKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgdmZzY29yZV9m
aWxlICosIHN0cnVjdCB1aW8gKiwgaW50KTsKK3R5cGVkZWYJc3NpemVfdCAoKnZub3Bfd3JpdGVf
dCkJKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgdWlvICosIGludCk7Cit0eXBlZGVmCW9mZl90ICgq
dm5vcF9zZWVrX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHZmc2NvcmVfZmlsZSAqLCBvZmZf
dCwgb2ZmX3QpOwordHlwZWRlZglpbnQgKCp2bm9wX2lvY3RsX3QpCShzdHJ1Y3Qgdm5vZGUgKiwg
c3RydWN0IHZmc2NvcmVfZmlsZSAqLCB1bnNpZ25lZCBsb25nLCB2b2lkICopOwordHlwZWRlZglp
bnQgKCp2bm9wX2ZzeW5jX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHZmc2NvcmVfZmlsZSAq
KTsKK3R5cGVkZWYJaW50ICgqdm5vcF9yZWFkZGlyX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0
IHZmc2NvcmVfZmlsZSAqLCBzdHJ1Y3QgZGlyZW50ICopOwogdHlwZWRlZglpbnQgKCp2bm9wX2xv
b2t1cF90KQkoc3RydWN0IHZub2RlICosIGNoYXIgKiwgc3RydWN0IHZub2RlICoqKTsKIHR5cGVk
ZWYJaW50ICgqdm5vcF9jcmVhdGVfdCkJKHN0cnVjdCB2bm9kZSAqLCBjaGFyICosIG1vZGVfdCk7
CiB0eXBlZGVmCWludCAoKnZub3BfcmVtb3ZlX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHZu
b2RlICosIGNoYXIgKik7CkBAIC0xNDcsOCArMTQ2LDggQEAgdHlwZWRlZglpbnQgKCp2bm9wX3Nl
dGF0dHJfdCkJKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgdmF0dHIgKik7CiB0eXBlZGVmCWludCAo
KnZub3BfaW5hY3RpdmVfdCkJKHN0cnVjdCB2bm9kZSAqKTsKIHR5cGVkZWYJaW50ICgqdm5vcF90
cnVuY2F0ZV90KQkoc3RydWN0IHZub2RlICosIG9mZl90KTsKIHR5cGVkZWYJaW50ICgqdm5vcF9s
aW5rX3QpICAgICAgKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3Qgdm5vZGUgKiwgY2hhciAqKTsKLXR5
cGVkZWYgaW50ICgqdm5vcF9jYWNoZV90KSAoc3RydWN0IHZub2RlICosIHN0cnVjdCBmaWxlICos
IHN0cnVjdCB1aW8gKik7Ci10eXBlZGVmIGludCAoKnZub3BfZmFsbG9jYXRlX3QpIChzdHJ1Y3Qg
dm5vZGUgKiwgaW50LCBsb2ZmX3QsIGxvZmZfdCk7Cit0eXBlZGVmIGludCAoKnZub3BfY2FjaGVf
dCkgKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgdmZzY29yZV9maWxlICosIHN0cnVjdCB1aW8gKik7
Cit0eXBlZGVmIGludCAoKnZub3BfZmFsbG9jYXRlX3QpIChzdHJ1Y3Qgdm5vZGUgKiwgaW50LCBv
ZmZfdCwgb2ZmX3QpOwogdHlwZWRlZiBpbnQgKCp2bm9wX3JlYWRsaW5rX3QpICAoc3RydWN0IHZu
b2RlICosIHN0cnVjdCB1aW8gKik7CiB0eXBlZGVmIGludCAoKnZub3Bfc3ltbGlua190KSAgIChz
dHJ1Y3Qgdm5vZGUgKiwgY2hhciAqLCBjaGFyICopOwogCmRpZmYgLS1naXQgYS9saWIvdmZzY29y
ZS9sb29rdXAuYyBiL2xpYi92ZnNjb3JlL2xvb2t1cC5jCmluZGV4IDk4MzdlODFmLi4xZTJjNDAw
NSAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvbG9va3VwLmMKKysrIGIvbGliL3Zmc2NvcmUvbG9v
a3VwLmMKQEAgLTExMSw3ICsxMTEsNyBAQCBuYW1laShjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3Qg
ZGVudHJ5ICoqZHBwKQogCXN0cnVjdCB2bm9kZSAqZHZwLCAqdnA7CiAJaW50IGVycm9yLCBpOwog
CWludCBsaW5rc19mb2xsb3dlZDsKLQlib29sIG5lZWRfY29udGludWU7CisJaW50IG5lZWRfY29u
dGludWU7CiAKIAlEUFJJTlRGKFZGU0RCX1ZOT0RFLCAoIm5hbWVpOiBwYXRoPSVzXG4iLCBwYXRo
KSk7CiAKQEAgLTExOSw3ICsxMTksNyBAQCBuYW1laShjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3Qg
ZGVudHJ5ICoqZHBwKQogCXN0cmxjcHkoZnAsIHBhdGgsIFBBVEhfTUFYKTsKIAogCWRvIHsKLQkJ
bmVlZF9jb250aW51ZSA9IGZhbHNlOworCQluZWVkX2NvbnRpbnVlID0gMDsKIAkJLyoKIAkJICog
Q29udmVydCBhIGZ1bGwgcGF0aCBuYW1lIHRvIGl0cyBtb3VudCBwb2ludCBhbmQKIAkJICogdGhl
IGxvY2FsIG5vZGUgaW4gdGhlIGZpbGUgc3lzdGVtLgpAQCAtMTQzLDcgKzE0Myw3IEBAIG5hbWVp
KGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBkZW50cnkgKipkcHApCiAJCSAqLwogCQlkZHAgPSBt
cC0+bV9yb290OwogCQlpZiAoIWRkcCkgewotCQkJc3lzX3BhbmljKCJWRlM6IG5vIHJvb3QiKTsK
KwkJCVVLX0NSQVNIKCJWRlM6IG5vIHJvb3QiKTsKIAkJfQogCQlkcmVmKGRkcCk7CiAKQEAgLTE3
Nyw3ICsxNzcsNyBAQCBuYW1laShjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3QgZGVudHJ5ICoqZHBw
KQogCQkJZHZwID0gZGRwLT5kX3Zub2RlOwogCQkJdm5fbG9jayhkdnApOwogCQkJZHAgPSBkZW50
cnlfbG9va3VwKG1wLCBub2RlKTsKLQkJCWlmIChkcCA9PSBudWxscHRyKSB7CisJCQlpZiAoZHAg
PT0gTlVMTCkgewogCQkJCS8qIEZpbmQgYSB2bm9kZSBpbiB0aGlzIGRpcmVjdG9yeS4gKi8KIAkJ
CQllcnJvciA9IFZPUF9MT09LVVAoZHZwLCBuYW1lLCAmdnApOwogCQkJCWlmIChlcnJvcikgewpA
QCAtMjA5LDE3ICsyMDksMTcgQEAgbmFtZWkoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IGRlbnRy
eSAqKmRwcCkKIAkJCQlkcmVsZShkcCk7CiAKIAkJCQlwICAgICAgID0gZnA7Ci0JCQkJZHAgICAg
ICA9IG51bGxwdHI7Ci0JCQkJZGRwICAgICA9IG51bGxwdHI7Ci0JCQkJdnAgICAgICA9IG51bGxw
dHI7Ci0JCQkJZHZwICAgICA9IG51bGxwdHI7CisJCQkJZHAgICAgICA9IE5VTEw7CisJCQkJZGRw
ICAgICA9IE5VTEw7CisJCQkJdnAgICAgICA9IE5VTEw7CisJCQkJZHZwICAgICA9IE5VTEw7CiAJ
CQkJbmFtZVswXSA9IDA7CiAJCQkJbm9kZVswXSA9IDA7CiAKIAkJCQlpZiAoKytsaW5rc19mb2xs
b3dlZCA+PSBNQVhTWU1MSU5LUykgewogCQkJCQlyZXR1cm4gKEVMT09QKTsKIAkJCQl9Ci0JCQkJ
bmVlZF9jb250aW51ZSA9IHRydWU7CisJCQkJbmVlZF9jb250aW51ZSA9IDE7CiAJCQkJYnJlYWs7
CiAJCQl9CiAKQEAgLTIyOCw3ICsyMjgsNyBAQCBuYW1laShjb25zdCBjaGFyICpwYXRoLCBzdHJ1
Y3QgZGVudHJ5ICoqZHBwKQogCQkJCXJldHVybiBFTk9URElSOwogCQkJfQogCQl9Ci0JfSB3aGls
ZSAobmVlZF9jb250aW51ZSA9PSB0cnVlKTsKKwl9IHdoaWxlIChuZWVkX2NvbnRpbnVlKTsKIAog
CSpkcHAgPSBkcDsKIAlyZXR1cm4gMDsKQEAgLTI1MywxNCArMjUzLDE0IEBAIG5hbWVpX2xhc3Rf
bm9mb2xsb3coY2hhciAqcGF0aCwgc3RydWN0IGRlbnRyeSAqZGRwLCBzdHJ1Y3QgZGVudHJ5ICoq
ZHBwKQogCXN0cnVjdCB2bm9kZSAgKnZwOwogCWNoYXIgbm9kZVtQQVRIX01BWF07CiAKLQlkdnAg
ID0gbnVsbHB0cjsKKwlkdnAgID0gTlVMTDsKIAogCWlmIChwYXRoWzBdICE9ICcvJykgewogCQly
ZXR1cm4gKEVOT1RESVIpOwogCX0KIAogCW5hbWUgPSBzdHJyY2hyKHBhdGgsICcvJyk7Ci0JaWYg
KG5hbWUgPT0gbnVsbHB0cikgeworCWlmIChuYW1lID09IE5VTEwpIHsKIAkJcmV0dXJuIChFTk9F
TlQpOwogCX0KIAluYW1lKys7CkBAIC0yODMsNyArMjgzLDcgQEAgbmFtZWlfbGFzdF9ub2ZvbGxv
dyhjaGFyICpwYXRoLCBzdHJ1Y3QgZGVudHJ5ICpkZHAsIHN0cnVjdCBkZW50cnkgKipkcHApCiAJ
ZHZwID0gZGRwLT5kX3Zub2RlOwogCXZuX2xvY2soZHZwKTsKIAlkcCA9IGRlbnRyeV9sb29rdXAo
bXAsIG5vZGUpOwotCWlmIChkcCA9PSBudWxscHRyKSB7CisJaWYgKGRwID09IE5VTEwpIHsKIAkJ
ZXJyb3IgPSBWT1BfTE9PS1VQKGR2cCwgbmFtZSwgJnZwKTsKIAkJaWYgKGVycm9yICE9IDApIHsK
IAkJCWdvdG8gb3V0OwpAQCAtMjkyLDcgKzI5Miw3IEBAIG5hbWVpX2xhc3Rfbm9mb2xsb3coY2hh
ciAqcGF0aCwgc3RydWN0IGRlbnRyeSAqZGRwLCBzdHJ1Y3QgZGVudHJ5ICoqZHBwKQogCQlkcCA9
IGRlbnRyeV9hbGxvYyhkZHAsIHZwLCBub2RlKTsKIAkJdnB1dCh2cCk7CiAKLQkJaWYgKGRwID09
IG51bGxwdHIpIHsKKwkJaWYgKGRwID09IE5VTEwpIHsKIAkJCWVycm9yID0gRU5PTUVNOwogCQkJ
Z290byBvdXQ7CiAJCX0KQEAgLTMwMSw3ICszMDEsNyBAQCBuYW1laV9sYXN0X25vZm9sbG93KGNo
YXIgKnBhdGgsIHN0cnVjdCBkZW50cnkgKmRkcCwgc3RydWN0IGRlbnRyeSAqKmRwcCkKIAkqZHBw
ICA9IGRwOwogCWVycm9yID0gMDsKIG91dDoKLQlpZiAoZHZwICE9IG51bGxwdHIpIHsKKwlpZiAo
ZHZwICE9IE5VTEwpIHsKIAkJdm5fdW5sb2NrKGR2cCk7CiAJfQogCXJldHVybiAoZXJyb3IpOwpk
aWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvbWFpbi5jIGIvbGliL3Zmc2NvcmUvbWFpbi5jCmluZGV4
IDkwZGYzZDcxLi44MmU0NTkxNyAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvbWFpbi5jCisrKyBi
L2xpYi92ZnNjb3JlL21haW4uYwpAQCAtNzksNyArNzksNyBAQCBpbnQgb3Blbihjb25zdCBjaGFy
ICpwYXRobmFtZSwgaW50IGZsYWdzLCAuLi4pCiAKIAlzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFz
azsKIAljaGFyIHBhdGhbUEFUSF9NQVhdOwotCXN0cnVjdCBmaWxlICpmcDsKKwlzdHJ1Y3QgdmZz
Y29yZV9maWxlICpmcDsKIAlpbnQgZmQsIGVycm9yOwogCWludCBhY2M7CiAKQEAgLTEzNSw3ICsx
MzUsNyBAQCBpbnQgb3BlbmF0KGludCBkaXJmZCwgY29uc3QgY2hhciAqcGF0aG5hbWUsIGludCBm
bGFncywgLi4uKQogCQlyZXR1cm4gb3BlbihwYXRobmFtZSwgZmxhZ3MsIG1vZGUpOwogCX0KIAot
CXN0cnVjdCBmaWxlICpmcDsKKwlzdHJ1Y3QgdmZzY29yZV9maWxlICpmcDsKIAlpbnQgZXJyb3Ig
PSBmZ2V0KGRpcmZkLCAmZnApOwogCWlmIChlcnJvcikgewogCQllcnJubyA9IGVycm9yOwpAQCAt
MTk3LDcgKzE5Nyw3IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX21rbm9kX2VyciwgIiVkIiwgaW50
KTsKIAogaW50IF9feG1rbm9kKGludCB2ZXIsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBtb2RlX3Qg
bW9kZSwgZGV2X3QgKmRldikKIHsKLQlhc3NlcnQodmVyID09IDApOyAvLyBPbiB4ODYtNjQgTGlu
dXgsIF9NS05PRF9WRVJfTElOVVggaXMgMC4KKwlVS19BU1NFUlQodmVyID09IDApOyAvLyBPbiB4
ODYtNjQgTGludXgsIF9NS05PRF9WRVJfTElOVVggaXMgMC4KIAlzdHJ1Y3QgdGFzayAqdCA9IG1h
aW5fdGFzazsKIAljaGFyIHBhdGhbUEFUSF9NQVhdOwogCWludCBlcnJvcjsKQEAgLTIzMSw3ICsy
MzEsNyBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19sc2Vla19lcnIsICIlZCIsIGludCk7CiAKIG9m
Zl90IGxzZWVrKGludCBmZCwgb2ZmX3Qgb2Zmc2V0LCBpbnQgd2hlbmNlKQogewotCXN0cnVjdCBm
aWxlICpmcDsKKwlzdHJ1Y3QgdmZzY29yZV9maWxlICpmcDsKIAlvZmZfdCBvcmc7CiAJaW50IGVy
cm9yOwogCkBAIC0yNjUsMTEgKzI2NSwxMiBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19wcmVhZF9l
cnIsICIlZCIsIGludCk7CiAvLyAqYW5kKiBhIG5vbi16ZXJvIG51bWJlciBvZiB3cml0dGVuIGJ5
dGVzLiBJbiB0aGF0IGNhc2UsIHdlIG5lZWQgdG8gemVybyB0aGUKIC8vIGVycm9yLCBzbyB0aGUg
c3lzdGVtIGNhbGwgYXBwZWFyIGEgc3VjY2Vzc2Z1bCBwYXJ0aWFsIHJlYWQvd3JpdGUuCiAvLyBJ
biBGcmVlQlNELCBkb2ZpbGV3cml0ZSgpIGFuZCBkb2ZpbGVyZWFkKCkgKHN5c19nZW5lcmljLmMp
IGRvIHRoaXMgdG9vLgotc3RhdGljIGlubGluZSBib29sIGhhc19lcnJvcihpbnQgZXJyb3IsIGlu
dCBieXRlcykKK3N0YXRpYyBpbmxpbmUgaW50IGhhc19lcnJvcihpbnQgZXJyb3IsIGludCBieXRl
cykKIHsKKwkvKiBUT0RPOiBPU3YgY2hlY2tzIGFsc28gZm9yIEVSRVNUQVJUICovCiAJcmV0dXJu
IGVycm9yICYmICgKIAkJCShieXRlcyA9PSAwKSB8fAotCQkJKGVycm9yICE9IEVXT1VMREJMT0NL
ICYmIGVycm9yICE9IEVJTlRSICYmIGVycm9yICE9IEVSRVNUQVJUKSk7CisJCQkoZXJyb3IgIT0g
RVdPVUxEQkxPQ0sgJiYgZXJyb3IgIT0gRUlOVFIpKTsKIH0KIAogCkBAIC0yODAsNyArMjgxLDcg
QEAgc3NpemVfdCBwcmVhZChpbnQgZmQsIHZvaWQgKmJ1Ziwgc2l6ZV90IGNvdW50LCBvZmZfdCBv
ZmZzZXQpCiAJCQkuaW92X2Jhc2UJPSBidWYsCiAJCQkuaW92X2xlbgk9IGNvdW50LAogCX07Ci0J
c3RydWN0IGZpbGUgKmZwOworCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwOwogCXNpemVfdCBieXRl
czsKIAlpbnQgZXJyb3I7CiAKQEAgLTMyMCw3ICszMjEsNyBAQCBzc2l6ZV90IHB3cml0ZShpbnQg
ZmQsIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGNvdW50LCBvZmZfdCBvZmZzZXQpCiAJCQkuaW92
X2Jhc2UJPSAodm9pZCAqKWJ1ZiwKIAkJCS5pb3ZfbGVuCT0gY291bnQsCiAJfTsKLQlzdHJ1Y3Qg
ZmlsZSAqZnA7CisJc3RydWN0IHZmc2NvcmVfZmlsZSAqZnA7CiAJc2l6ZV90IGJ5dGVzOwogCWlu
dCBlcnJvcjsKIApAQCAtMzUxLDcgKzM1Miw3IEBAIHNzaXplX3Qgd3JpdGUoaW50IGZkLCBjb25z
dCB2b2lkICpidWYsIHNpemVfdCBjb3VudCkKIAogc3NpemVfdCBwcmVhZHYoaW50IGZkLCBjb25z
dCBzdHJ1Y3QgaW92ZWMgKmlvdiwgaW50IGlvdmNudCwgb2ZmX3Qgb2Zmc2V0KQogewotCXN0cnVj
dCBmaWxlICpmcDsKKwlzdHJ1Y3QgdmZzY29yZV9maWxlICpmcDsKIAlzaXplX3QgYnl0ZXM7CiAJ
aW50IGVycm9yOwogCkBAIC0zODQsNyArMzg1LDcgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfcHdy
aXRldl9lcnIsICIlZCIsIGludCk7CiAKIHNzaXplX3QgcHdyaXRldihpbnQgZmQsIGNvbnN0IHN0
cnVjdCBpb3ZlYyAqaW92LCBpbnQgaW92Y250LCBvZmZfdCBvZmZzZXQpCiB7Ci0Jc3RydWN0IGZp
bGUgKmZwOworCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwOwogCXNpemVfdCBieXRlczsKIAlpbnQg
ZXJyb3I7CiAKQEAgLTQxOSw3ICs0MjAsNyBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19pb2N0bF9l
cnIsICIlZCIsIGludCk7CiAKIGludCBpb2N0bChpbnQgZmQsIHVuc2lnbmVkIGxvbmcgaW50IHJl
cXVlc3QsIC4uLikKIHsKLQlzdHJ1Y3QgZmlsZSAqZnA7CisJc3RydWN0IHZmc2NvcmVfZmlsZSAq
ZnA7CiAJaW50IGVycm9yOwogCXZhX2xpc3QgYXA7CiAJdm9pZCogYXJnOwpAQCAtNDU2LDcgKzQ1
Nyw3IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2ZzeW5jX2VyciwgIiVkIiwgaW50KTsKIAogaW50
IGZzeW5jKGludCBmZCkKIHsKLQlzdHJ1Y3QgZmlsZSAqZnA7CisJc3RydWN0IHZmc2NvcmVfZmls
ZSAqZnA7CiAJaW50IGVycm9yOwogCiAJdHJhY2VfdmZzX2ZzeW5jKGZkKTsKQEAgLTQ5MCw3ICs0
OTEsNyBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19mc3RhdF9lcnIsICIlZCIsIGludCk7CiAKIGlu
dCBfX2Z4c3RhdChpbnQgdmVyLCBpbnQgZmQsIHN0cnVjdCBzdGF0ICpzdCkKIHsKLQlzdHJ1Y3Qg
ZmlsZSAqZnA7CisJc3RydWN0IHZmc2NvcmVfZmlsZSAqZnA7CiAJaW50IGVycm9yOwogCiAJdHJh
Y2VfdmZzX2ZzdGF0KGZkLCBzdCk7CkBAIC01MjYsNyArNTI3LDcgQEAgaW50IF9fZnhzdGF0YXQo
aW50IHZlciwgaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwgc3RydWN0IHN0YXQgKnN0
LAogCQlpbnQgZmxhZ3MpCiB7CiAJaWYgKGZsYWdzICYgQVRfU1lNTElOS19OT0ZPTExPVykgewot
CQlVTklNUExFTUVOVEVEKCJmc3RhdGF0KCkgd2l0aCBBVF9TWU1MSU5LX05PRk9MTE9XIik7CisJ
CVVLX0NSQVNIKCJVTklNUExFTUVOVEVEOiBmc3RhdGF0KCkgd2l0aCBBVF9TWU1MSU5LX05PRk9M
TE9XIik7CiAJfQogCiAJaWYgKHBhdGhuYW1lWzBdID09ICcvJyB8fCBkaXJmZCA9PSBBVF9GRENX
RCkgewpAQCAtNTM4LDcgKzUzOSw3IEBAIGludCBfX2Z4c3RhdGF0KGludCB2ZXIsIGludCBkaXJm
ZCwgY29uc3QgY2hhciAqcGF0aG5hbWUsIHN0cnVjdCBzdGF0ICpzdCwKIAkJcmV0dXJuIGZzdGF0
KGRpcmZkLCBzdCk7CiAJfQogCi0Jc3RydWN0IGZpbGUgKmZwOworCXN0cnVjdCB2ZnNjb3JlX2Zp
bGUgKmZwOwogCWludCBlcnJvciA9IGZnZXQoZGlyZmQsICZmcCk7CiAJaWYgKGVycm9yKSB7CiAJ
CWVycm5vID0gZXJyb3I7CkBAIC01NzQsNyArNTc1LDkgQEAgTEZTNjQoZnN0YXRhdCk7CiAKIGlu
dCBmbG9jayhpbnQgZmQsIGludCBvcGVyYXRpb24pCiB7Ci0JaWYgKCFmaWxlcmVmX2Zyb21fZmQo
ZmQpKSB7CisJc3RydWN0IHZmc2NvcmVfZmlsZSAqZmlsZTsKKworCWlmICghZmdldChmZCwgJmZp
bGUpKSB7CiAJCXJldHVybiBsaWJjX2Vycm9yKEVCQURGKTsKIAl9CiAKQEAgLTU5Miw3ICs1OTUs
NyBAQCBpbnQgZmxvY2soaW50IGZkLCBpbnQgb3BlcmF0aW9uKQogCXJldHVybiAwOwogfQogCi1U
UkFDRVBPSU5UKHRyYWNlX3Zmc19yZWFkZGlyLCAiJWQgJXAiLCBpbnQsIGRpcmVudCopOworVFJB
Q0VQT0lOVCh0cmFjZV92ZnNfcmVhZGRpciwgIiVkICVwIiwgaW50LCBzdHJ1Y3QgZGlyZW50Kik7
CiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19yZWFkZGlyX3JldCwgIiIpOwogVFJBQ0VQT0lOVCh0cmFj
ZV92ZnNfcmVhZGRpcl9lcnIsICIlZCIsIGludCk7CiAKQEAgLTYxMSw3ICs2MTQsNyBAQCBESVIg
Km9wZW5kaXIoY29uc3QgY2hhciAqcGF0aCkKIAlkaXItPmZkID0gb3BlbihwYXRoLCBPX1JET05M
WSk7CiAJaWYgKGRpci0+ZmQgPCAwKSB7CiAJCWZyZWUoZGlyKTsKLQkJcmV0dXJuIG51bGxwdHI7
CisJCXJldHVybiBOVUxMOwogCX0KIAlyZXR1cm4gZGlyOwogfQpAQCAtNjIxLDExICs2MjQsMTEg
QEAgRElSICpmZG9wZW5kaXIoaW50IGZkKQogCURJUiAqZGlyOwogCXN0cnVjdCBzdGF0IHN0Owog
CWlmIChmc3RhdChmZCwgJnN0KSA8IDApIHsKLQkJcmV0dXJuIG51bGxwdHI7CisJCXJldHVybiBO
VUxMOwogCX0KIAlpZiAoIVNfSVNESVIoc3Quc3RfbW9kZSkpIHsKIAkJZXJybm8gPSBFTk9URElS
OwotCQlyZXR1cm4gbnVsbHB0cjsKKwkJcmV0dXJuIE5VTEw7CiAJfQogCWRpciA9IG1hbGxvYyhz
aXplb2YoKmRpcikpOwogCWlmICghZGlyKSB7CkBAIC02NjksMTMgKzY3MiwxMSBAQCBzdHJ1Y3Qg
ZGlyZW50ICpyZWFkZGlyKERJUiAqZGlyKQogaW50IHJlYWRkaXJfcihESVIgKmRpciwgc3RydWN0
IGRpcmVudCAqZW50cnksIHN0cnVjdCBkaXJlbnQgKipyZXN1bHQpCiB7CiAJaW50IGVycm9yOwot
CXN0cnVjdCBmaWxlICpmcDsKKwlzdHJ1Y3QgdmZzY29yZV9maWxlICpmcDsKIAogCXRyYWNlX3Zm
c19yZWFkZGlyKGRpci0+ZmQsIGVudHJ5KTsKIAllcnJvciA9IGZnZXQoZGlyLT5mZCwgJmZwKTsK
LQlpZiAoZXJyb3IpIHsKLQkJdHJhY2VfdmZzX3JlYWRkaXJfZXJyKGVycm9yKTsKLQl9IGVsc2Ug
eworCWlmICghZXJyb3IpIHsKIAkJZXJyb3IgPSBzeXNfcmVhZGRpcihmcCwgZW50cnkpOwogCQlm
ZHJvcChmcCk7CiAJCWlmIChlcnJvcikgewpAQCAtNjg4LDcgKzY4OSw3IEBAIGludCByZWFkZGly
X3IoRElSICpkaXIsIHN0cnVjdCBkaXJlbnQgKmVudHJ5LCBzdHJ1Y3QgZGlyZW50ICoqcmVzdWx0
KQogCWVudHJ5LT5kX3JlY2xlbiA9IHNpemVvZigqZW50cnkpOwogCiAJaWYgKGVycm9yKSB7Ci0J
CSpyZXN1bHQgPSBudWxscHRyOworCQkqcmVzdWx0ID0gTlVMTDsKIAl9IGVsc2UgewogCQkqcmVz
dWx0ID0gZW50cnk7CiAJfQpAQCAtNzA2LDcgKzcwNyw3IEBAIHN0cnVjdCBkaXJlbnQgKnJlYWRk
aXI2NChESVIgKmRpcikgX19hdHRyaWJ1dGVfXygoYWxpYXMoInJlYWRkaXIiKSkpOwogCiB2b2lk
IHJld2luZGRpcihESVIgKmRpcnApCiB7Ci0Jc3RydWN0IGZpbGUgKmZwOworCXN0cnVjdCB2ZnNj
b3JlX2ZpbGUgKmZwOwogCiAJaW50IGVycm9yID0gZmdldChkaXJwLT5mZCwgJmZwKTsKIAlpZiAo
ZXJyb3IpIHsKQEAgLTcyMiw3ICs3MjMsNyBAQCB2b2lkIHJld2luZGRpcihESVIgKmRpcnApCiAK
IGxvbmcgdGVsbGRpcihESVIgKmRpcnApCiB7Ci0Jc3RydWN0IGZpbGUgKmZwOworCXN0cnVjdCB2
ZnNjb3JlX2ZpbGUgKmZwOwogCWludCBlcnJvciA9IGZnZXQoZGlycC0+ZmQsICZmcCk7CiAJaWYg
KGVycm9yKSB7CiAJCXJldHVybiBsaWJjX2Vycm9yKGVycm9yKTsKQEAgLTczOSw3ICs3NDAsNyBA
QCBsb25nIHRlbGxkaXIoRElSICpkaXJwKQogCiB2b2lkIHNlZWtkaXIoRElSICpkaXJwLCBsb25n
IGxvYykKIHsKLQlzdHJ1Y3QgZmlsZSAqZnA7CisJc3RydWN0IHZmc2NvcmVfZmlsZSAqZnA7CiAJ
aW50IGVycm9yID0gZmdldChkaXJwLT5mZCwgJmZwKTsKIAlpZiAoZXJyb3IpIHsKIAkJLy8gUE9T
SVggc3BlY2lmaWVzIHNlZWtkaXIoKSBjYW5ub3QgcmV0dXJuIGVycm9ycy4KQEAgLTc5MCw3ICs3
OTEsNyBAQCBpbnQgcm1kaXIoY29uc3QgY2hhciAqcGF0aG5hbWUpCiAKIAl0cmFjZV92ZnNfcm1k
aXIocGF0aG5hbWUpOwogCWVycm9yID0gRU5PRU5UOwotCWlmIChwYXRobmFtZSA9PSBudWxscHRy
KQorCWlmIChwYXRobmFtZSA9PSBOVUxMKQogCQlnb3RvIG91dF9lcnJubzsKIAlpZiAoKGVycm9y
ID0gdGFza19jb252KHQsIHBhdGhuYW1lLCBWV1JJVEUsIHBhdGgpKSAhPSAwKQogCQlnb3RvIG91
dF9lcnJubzsKQEAgLTgyNiw5ICs4MjcsOSBAQCBnZXRfbGFzdF9jb21wb25lbnQoY29uc3QgY2hh
ciAqcGF0aCwgY2hhciAqZHN0KQogCWRzdFtsZW5dID0gMDsKIH0KIAotc3RhdGljIGJvb2wgbnVs
bF9vcl9lbXB0eShjb25zdCBjaGFyICpzdHIpCitzdGF0aWMgaW50IG51bGxfb3JfZW1wdHkoY29u
c3QgY2hhciAqc3RyKQogewotCXJldHVybiBzdHIgPT0gbnVsbHB0ciB8fCAqc3RyID09ICdcMCc7
CisJcmV0dXJuIHN0ciA9PSBOVUxMIHx8ICpzdHIgPT0gJ1wwJzsKIH0KIAogVFJBQ0VQT0lOVCh0
cmFjZV92ZnNfcmVuYW1lLCAiXCIlc1wiIFwiJXNcIiIsIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFy
Kik7CkBAIC04ODMsNyArODg0LDcgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfY2hkaXJfZXJyLCAi
JWQiLCBpbnQpOwogc3RhdGljIGludAogX19kb19mY2hkaXIoc3RydWN0IHZmc2NvcmVfZmlsZSAq
ZnAsIHN0cnVjdCB0YXNrICp0KQogewotCXN0cnVjdCBmaWxlICpvbGQgPSBudWxscHRyOworCXN0
cnVjdCB2ZnNjb3JlX2ZpbGUgKm9sZCA9IE5VTEw7CiAKIAlVS19BU1NFUlQodCk7CiAKQEAgLTkw
NywxMSArOTA4LDExIEBAIGludCBjaGRpcihjb25zdCBjaGFyICpwYXRobmFtZSkKIAl0cmFjZV92
ZnNfY2hkaXIocGF0aG5hbWUpOwogCXN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOwogCWNoYXIg
cGF0aFtQQVRIX01BWF07Ci0Jc3RydWN0IGZpbGUgKmZwOworCXN0cnVjdCB2ZnNjb3JlX2ZpbGUg
KmZwOwogCWludCBlcnJvcjsKIAogCWVycm9yID0gRU5PRU5UOwotCWlmIChwYXRobmFtZSA9PSBu
dWxscHRyKQorCWlmIChwYXRobmFtZSA9PSBOVUxMKQogCQlnb3RvIG91dF9lcnJubzsKIAogCWlm
ICgoZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5hbWUsIFZSRUFELCBwYXRoKSkgIT0gMCkKQEAg
LTk0NSw3ICs5NDYsNyBAQCBpbnQgZmNoZGlyKGludCBmZCkKIHsKIAl0cmFjZV92ZnNfZmNoZGly
KGZkKTsKIAlzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKLQlzdHJ1Y3QgZmlsZSAqZnA7CisJ
c3RydWN0IHZmc2NvcmVfZmlsZSAqZnA7CiAJaW50IGVycm9yOwogCiAJZXJyb3IgPSBmZ2V0KGZk
LCAmZnApOwpAQCAtOTgxLDcgKzk4Miw3IEBAIGludCBsaW5rKGNvbnN0IGNoYXIgKm9sZHBhdGgs
IGNvbnN0IGNoYXIgKm5ld3BhdGgpCiAJdHJhY2VfdmZzX2xpbmsob2xkcGF0aCwgbmV3cGF0aCk7
CiAKIAllcnJvciA9IEVOT0VOVDsKLQlpZiAob2xkcGF0aCA9PSBudWxscHRyIHx8IG5ld3BhdGgg
PT0gbnVsbHB0cikKKwlpZiAob2xkcGF0aCA9PSBOVUxMIHx8IG5ld3BhdGggPT0gTlVMTCkKIAkJ
Z290byBvdXRfZXJybm87CiAJaWYgKChlcnJvciA9IHRhc2tfY29udih0LCBvbGRwYXRoLCBWV1JJ
VEUsIHBhdGgxKSkgIT0gMCkKIAkJZ290byBvdXRfZXJybm87CkBAIC0xMDExLDcgKzEwMTIsNyBA
QCBpbnQgc3ltbGluayhjb25zdCBjaGFyICpvbGRwYXRoLCBjb25zdCBjaGFyICpuZXdwYXRoKQog
CXRyYWNlX3Zmc19zeW1saW5rKG9sZHBhdGgsIG5ld3BhdGgpOwogCiAJZXJyb3IgPSBFTk9FTlQ7
Ci0JaWYgKG9sZHBhdGggPT0gbnVsbHB0ciB8fCBuZXdwYXRoID09IG51bGxwdHIpIHsKKwlpZiAo
b2xkcGF0aCA9PSBOVUxMIHx8IG5ld3BhdGggPT0gTlVMTCkgewogCQllcnJubyA9IEVOT0VOVDsK
IAkJdHJhY2VfdmZzX3N5bWxpbmtfZXJyKGVycm9yKTsKIAkJcmV0dXJuICgtMSk7CkBAIC0xMDQw
LDcgKzEwNDEsNyBAQCBpbnQgdW5saW5rKGNvbnN0IGNoYXIgKnBhdGhuYW1lKQogCWludCBlcnJv
cjsKIAogCWVycm9yID0gRU5PRU5UOwotCWlmIChwYXRobmFtZSA9PSBudWxscHRyKQorCWlmIChw
YXRobmFtZSA9PSBOVUxMKQogCQlnb3RvIG91dF9lcnJubzsKIAlpZiAoKGVycm9yID0gdGFza19j
b252KHQsIHBhdGhuYW1lLCBWV1JJVEUsIHBhdGgpKSAhPSAwKQogCQlnb3RvIG91dF9lcnJubzsK
QEAgLTExNTYsNyArMTE1Nyw3IEBAIGludCBfX3N0YXRmcyhjb25zdCBjaGFyICpwYXRobmFtZSwg
c3RydWN0IHN0YXRmcyAqYnVmKQogCWVycm5vID0gZXJyb3I7CiAJcmV0dXJuIC0xOwogfQotd2Vh
a19hbGlhcyhfX3N0YXRmcywgc3RhdGZzKTsKK19fd2Vha19hbGlhcyhfX3N0YXRmcywgc3RhdGZz
KTsKIAogTEZTNjQoc3RhdGZzKTsKIApAQCAtMTE2Niw3ICsxMTY3LDcgQEAgVFJBQ0VQT0lOVCh0
cmFjZV92ZnNfZnN0YXRmc19lcnIsICIlZCIsIGludCk7CiAKIGludCBfX2ZzdGF0ZnMoaW50IGZk
LCBzdHJ1Y3Qgc3RhdGZzICpidWYpCiB7Ci0Jc3RydWN0IGZpbGUgKmZwOworCXN0cnVjdCB2ZnNj
b3JlX2ZpbGUgKmZwOwogCWludCBlcnJvcjsKIAogCXRyYWNlX3Zmc19mc3RhdGZzKGZkLCBidWYp
OwpAQCAtMTE4Nyw3ICsxMTg4LDcgQEAgaW50IF9fZnN0YXRmcyhpbnQgZmQsIHN0cnVjdCBzdGF0
ZnMgKmJ1ZikKIAllcnJubyA9IGVycm9yOwogCXJldHVybiAtMTsKIH0KLXdlYWtfYWxpYXMoX19m
c3RhdGZzLCBmc3RhdGZzKTsKK19fd2Vha19hbGlhcyhfX2ZzdGF0ZnMsIGZzdGF0ZnMpOwogCiBM
RlM2NChmc3RhdGZzKTsKIApAQCAtMTI0MSw3ICsxMjQyLDcgQEAgY2hhciAqZ2V0Y3dkKGNoYXIg
KnBhdGgsIHNpemVfdCBzaXplKQogewogCXRyYWNlX3Zmc19nZXRjd2QocGF0aCwgc2l6ZSk7CiAJ
c3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7Ci0JaW50IGxlbiA9IHN0cmxlbih0LT50X2N3ZCkg
KyAxOworCXNpemVfdCBsZW4gPSBzdHJsZW4odC0+dF9jd2QpICsgMTsKIAlpbnQgZXJyb3I7CiAK
IAlpZiAoIXBhdGgpIHsKQEAgLTEyNzEsNyArMTI3Miw3IEBAIGNoYXIgKmdldGN3ZChjaGFyICpw
YXRoLCBzaXplX3Qgc2l6ZSkKIAlvdXRfZXJybm86CiAJdHJhY2VfdmZzX2dldGN3ZF9lcnIoZXJy
b3IpOwogCWVycm5vID0gZXJyb3I7Ci0JcmV0dXJuIG51bGxwdHI7CisJcmV0dXJuIE5VTEw7CiB9
CiAKIFRSQUNFUE9JTlQodHJhY2VfdmZzX2R1cCwgIiVkIiwgaW50KTsKQEAgLTEyODIsNyArMTI4
Myw3IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2R1cF9lcnIsICIlZCIsIGludCk7CiAgKi8KIGlu
dCBkdXAoaW50IG9sZGZkKQogewotCXN0cnVjdCBmaWxlICpmcDsKKwlzdHJ1Y3QgdmZzY29yZV9m
aWxlICpmcDsKIAlpbnQgbmV3ZmQ7CiAJaW50IGVycm9yOwogCkBAIC0xMzE1LDcgKzEzMTYsNyBA
QCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19kdXAzX2VyciwgIiVkIiwgaW50KTsKICAqLwogaW50IGR1
cDMoaW50IG9sZGZkLCBpbnQgbmV3ZmQsIGludCBmbGFncykKIHsKLQlzdHJ1Y3QgZmlsZSAqZnA7
CisJc3RydWN0IHZmc2NvcmVfZmlsZSAqZnA7CiAJaW50IGVycm9yOwogCiAJdHJhY2VfdmZzX2R1
cDMob2xkZmQsIG5ld2ZkLCBmbGFncyk7CkBAIC0xMzM3LDcgKzEzMzgsNyBAQCBpbnQgZHVwMyhp
bnQgb2xkZmQsIGludCBuZXdmZCwgaW50IGZsYWdzKQogCWlmIChlcnJvcikKIAkJZ290byBvdXRf
ZXJybm87CiAKLQllcnJvciA9IGZkc2V0KG5ld2ZkLCBmcCk7CisJZXJyb3IgPSB2ZnNjb3JlX2lu
c3RhbGxfZmQobmV3ZmQsIGZwKTsKIAlpZiAoZXJyb3IpIHsKIAkJZmRyb3AoZnApOwogCQlnb3Rv
IG91dF9lcnJubzsKQEAgLTEzNzMsNyArMTM3NCw3IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2Zj
bnRsX2VyciwgIiVkIiwgaW50KTsKIAogaW50IGZjbnRsKGludCBmZCwgaW50IGNtZCwgaW50IGFy
ZykKIHsKLQlzdHJ1Y3QgZmlsZSAqZnA7CisJc3RydWN0IHZmc2NvcmVfZmlsZSAqZnA7CiAJaW50
IHJldCA9IDAsIGVycm9yOwogCWludCB0bXA7CiAKQEAgLTE0OTAsMTQgKzE0OTEsMTQgQEAgaW50
IGFjY2Vzcyhjb25zdCBjaGFyICpwYXRobmFtZSwgaW50IG1vZGUpCiBpbnQgZmFjY2Vzc2F0KGlu
dCBkaXJmZCwgY29uc3QgY2hhciAqcGF0aG5hbWUsIGludCBtb2RlLCBpbnQgZmxhZ3MpCiB7CiAJ
aWYgKGZsYWdzICYgQVRfU1lNTElOS19OT0ZPTExPVykgewotCQlVTklNUExFTUVOVEVEKCJmYWNj
ZXNzYXQoKSB3aXRoIEFUX1NZTUxJTktfTk9GT0xMT1ciKTsKKwkJVUtfQ1JBU0goIlVOSU1QTEVN
RU5URUQ6IGZhY2Nlc3NhdCgpIHdpdGggQVRfU1lNTElOS19OT0ZPTExPVyIpOwogCX0KIAogCWlm
IChwYXRobmFtZVswXSA9PSAnLycgfHwgZGlyZmQgPT0gQVRfRkRDV0QpIHsKIAkJcmV0dXJuIGFj
Y2VzcyhwYXRobmFtZSwgbW9kZSk7CiAJfQogCi0Jc3RydWN0IGZpbGUgKmZwOworCXN0cnVjdCB2
ZnNjb3JlX2ZpbGUgKmZwOwogCWludCBlcnJvciA9IGZnZXQoZGlyZmQsICZmcCk7CiAJaWYgKGVy
cm9yKSB7CiAJCWVycm5vID0gZXJyb3I7CkBAIC0xNTI4LDcgKzE1MjksNyBAQCBpbnQgZXVpZGFj
Y2Vzcyhjb25zdCBjaGFyICpwYXRobmFtZSwgaW50IG1vZGUpCiAJcmV0dXJuIGFjY2VzcyhwYXRo
bmFtZSwgbW9kZSk7CiB9CiAKLXdlYWtfYWxpYXMoZXVpZGFjY2VzcyxlYWNjZXNzKTsKK19fd2Vh
a19hbGlhcyhldWlkYWNjZXNzLGVhY2Nlc3MpOwogCiAjaWYgMAogLyoKQEAgLTE1MzYsNyArMTUz
Nyw3IEBAIHdlYWtfYWxpYXMoZXVpZGFjY2VzcyxlYWNjZXNzKTsKICAqLwogaW50IGlzYXR0eShp
bnQgZmQpCiB7Ci0Jc3RydWN0IGZpbGUgKmZwOworCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwOwog
CWludCBpc3R0eSA9IDA7CiAKIAl0cmFjZV92ZnNfaXNhdHR5KGZkKTsKQEAgLTE1NzAsNyArMTU3
MSw3IEBAIGludCB0cnVuY2F0ZShjb25zdCBjaGFyICpwYXRobmFtZSwgb2ZmX3QgbGVuZ3RoKQog
CWludCBlcnJvcjsKIAogCWVycm9yID0gRU5PRU5UOwotCWlmIChwYXRobmFtZSA9PSBudWxscHRy
KQorCWlmIChwYXRobmFtZSA9PSBOVUxMKQogCQlnb3RvIG91dF9lcnJubzsKIAlpZiAoKGVycm9y
ID0gdGFza19jb252KHQsIHBhdGhuYW1lLCBWV1JJVEUsIHBhdGgpKSAhPSAwKQogCQlnb3RvIG91
dF9lcnJubzsKQEAgLTE1OTUsNyArMTU5Niw3IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2Z0cnVu
Y2F0ZV9lcnIsICIlZCIsIGludCk7CiBpbnQgZnRydW5jYXRlKGludCBmZCwgb2ZmX3QgbGVuZ3Ro
KQogewogCXRyYWNlX3Zmc19mdHJ1bmNhdGUoZmQsIGxlbmd0aCk7Ci0Jc3RydWN0IGZpbGUgKmZw
OworCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwOwogCWludCBlcnJvcjsKIAogCWVycm9yID0gZmdl
dChmZCwgJmZwKTsKQEAgLTE2MzAsNyArMTYzMSw3IEBAIHNzaXplX3QgcmVhZGxpbmsoY29uc3Qg
Y2hhciAqcGF0aG5hbWUsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnNpemUpCiAJCWdvdG8gb3V0X2Vy
cm5vOwogCiAJZXJyb3IgPSBFTk9FTlQ7Ci0JaWYgKHBhdGhuYW1lID09IG51bGxwdHIpCisJaWYg
KHBhdGhuYW1lID09IE5VTEwpCiAJCWdvdG8gb3V0X2Vycm5vOwogCWVycm9yID0gdGFza19jb252
KHQsIHBhdGhuYW1lLCBWV1JJVEUsIHBhdGgpOwogCWlmIChlcnJvcikKQEAgLTE2NTQsNyArMTY1
NSw3IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2ZhbGxvY2F0ZV9lcnIsICIlZCIsIGludCk7CiAK
IGludCBmYWxsb2NhdGUoaW50IGZkLCBpbnQgbW9kZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxl
bikKIHsKLQlzdHJ1Y3QgZmlsZSAqZnA7CisJc3RydWN0IHZmc2NvcmVfZmlsZSAqZnA7CiAJaW50
IGVycm9yOwogCiAJdHJhY2VfdmZzX2ZhbGxvY2F0ZShmZCwgbW9kZSwgb2Zmc2V0LCBsZW4pOwpA
QCAtMTY4MiwxNCArMTY4MywxNCBAQCBMRlM2NChmYWxsb2NhdGUpOwogaW50IGZ1dGltZXNhdChp
bnQgZGlyZmQsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBjb25zdCBzdHJ1Y3QgdGltZXZhbCB0aW1l
c1syXSkKIHsKIAlzdHJ1Y3Qgc3RhdCBzdDsKLQlzdHJ1Y3QgZmlsZSAqZnA7CisJc3RydWN0IHZm
c2NvcmVfZmlsZSAqZnA7CiAJaW50IGVycm9yOwogCWNoYXIgKmFic29sdXRlX3BhdGg7CiAKIAlp
ZiAoKHBhdGhuYW1lICYmIHBhdGhuYW1lWzBdID09ICcvJykgfHwgZGlyZmQgPT0gQVRfRkRDV0Qp
CiAJCXJldHVybiB1dGltZXMocGF0aG5hbWUsIHRpbWVzKTsKIAotCS8vIE5vdGU6IGlmIHBhdGhu
YW1lID09IG51bGxwdHIsIGZ1dGltZXNhdCBvcGVyYXRlcyBvbiBkaXJmZCBpdHNlbGYsIGFuZCBp
bgorCS8vIE5vdGU6IGlmIHBhdGhuYW1lID09IE5VTEwsIGZ1dGltZXNhdCBvcGVyYXRlcyBvbiBk
aXJmZCBpdHNlbGYsIGFuZCBpbgogCS8vIHRoYXQgY2FzZSBpdCBkb2Vzbid0IGhhdmUgdG8gYmUg
YSBkaXJlY3RvcnkuCiAJaWYgKHBhdGhuYW1lKSB7CiAJCWVycm9yID0gZnN0YXQoZGlyZmQsICZz
dCk7CkBAIC0xODM1LDcgKzE4MzYsNyBAQCBpbnQgY2htb2QoY29uc3QgY2hhciAqcGF0aG5hbWUs
IG1vZGVfdCBtb2RlKQogCXN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOwogCWNoYXIgcGF0aFtQ
QVRIX01BWF07CiAJaW50IGVycm9yID0gRU5PRU5UOwotCWlmIChwYXRobmFtZSA9PSBudWxscHRy
KQorCWlmIChwYXRobmFtZSA9PSBOVUxMKQogCQlnb3RvIG91dF9lcnJubzsKIAlpZiAoKGVycm9y
ID0gdGFza19jb252KHQsIHBhdGhuYW1lLCBWV1JJVEUsIHBhdGgpKSAhPSAwKQogCQlnb3RvIG91
dF9lcnJubzsKQEAgLTE4OTMsOCArMTg5NCw4IEBAIGludCBsY2hvd24oY29uc3QgY2hhciAqcGF0
aCwgdWlkX3Qgb3duZXIsIGdpZF90IGdyb3VwKQogI2lmIDAKIHNzaXplX3Qgc2VuZGZpbGUoaW50
IG91dF9mZCwgaW50IGluX2ZkLCBvZmZfdCAqX29mZnNldCwgc2l6ZV90IGNvdW50KQogewotCXN0
cnVjdCBmaWxlICppbl9mcDsKLQlzdHJ1Y3QgZmlsZSAqb3V0X2ZwOworCXN0cnVjdCB2ZnNjb3Jl
X2ZpbGUgKmluX2ZwOworCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKm91dF9mcDsKIAlmaWxlcmVmIGlu
X2Z7ZmlsZXJlZl9mcm9tX2ZkKGluX2ZkKX07CiAJZmlsZXJlZiBvdXRfZntmaWxlcmVmX2Zyb21f
ZmQob3V0X2ZkKX07CiAKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL21vdW50LmMgYi9saWIvdmZz
Y29yZS9tb3VudC5jCmluZGV4IDA2OTIyZmZiLi43ZDA4M2Q2ZiAxMDA2NDQKLS0tIGEvbGliL3Zm
c2NvcmUvbW91bnQuYworKysgYi9saWIvdmZzY29yZS9tb3VudC5jCkBAIC01NCwxMiArNTQsMTMg
QEAKIC8qCiAgKiBMaXN0IGZvciBWRlMgbW91bnQgcG9pbnRzLgogICovCi1zdGF0aWMgc3RkOjps
aXN0PG1vdW50Kj4gbW91bnRfbGlzdDsKKworVUtfTElTVF9IRUFEKG1vdW50X2xpc3QpOwogCiAv
KgogICogR2xvYmFsIGxvY2sgdG8gYWNjZXNzIG1vdW50IHBvaW50LgogICovCi1zdGF0aWMgbXV0
ZXggbW91bnRfbG9jazsKK3N0YXRpYyBzdHJ1Y3QgdWtfbXV0ZXggbW91bnRfbG9jazsKIAogLyoK
ICAqIExvb2t1cCBmaWxlIHN5c3RlbS4KQEAgLTg0LDExICs4NSwxMSBAQCBzeXNfbW91bnQoY29u
c3QgY2hhciAqZGV2LCBjb25zdCBjaGFyICpkaXIsIGNvbnN0IGNoYXIgKmZzbmFtZSwgaW50IGZs
YWdzLCBjb25zdAogCWNvbnN0IHN0cnVjdCB2ZnNzdyAqZnM7CiAJc3RydWN0IG1vdW50ICptcDsK
IAlzdHJ1Y3QgZGV2aWNlICpkZXZpY2U7Ci0Jc3RydWN0IGRlbnRyeSAqZHBfY292ZXJlZDsKLQlz
dHJ1Y3Qgdm5vZGUgKnZwOworCXN0cnVjdCBkZW50cnkgKmRwX2NvdmVyZWQgPSBOVUxMOworCXN0
cnVjdCB2bm9kZSAqdnAgPSBOVUxMOwogCWludCBlcnJvcjsKIAotCWtwcmludGYoIlZGUzogbW91
bnRpbmcgJXMgYXQgJXNcbiIsIGZzbmFtZSwgZGlyKTsKKwl1a19wcl9pbmZvKCJWRlM6IG1vdW50
aW5nICVzIGF0ICVzXG4iLCBmc25hbWUsIGRpcik7CiAKIAlpZiAoIWRpciB8fCAqZGlyID09ICdc
MCcpCiAJCXJldHVybiBFTk9FTlQ7CkBAIC05Nyw3ICs5OCw3IEBAIHN5c19tb3VudChjb25zdCBj
aGFyICpkZXYsIGNvbnN0IGNoYXIgKmRpciwgY29uc3QgY2hhciAqZnNuYW1lLCBpbnQgZmxhZ3Ms
IGNvbnN0CiAJaWYgKCEoZnMgPSBmc19nZXRmcyhmc25hbWUpKSkKIAkJcmV0dXJuIEVOT0RFVjsg
IC8qIE5vIHN1Y2ggZmlsZSBzeXN0ZW0gKi8KIAotCS8qIE9wZW4gZGV2aWNlLiBudWxscHRyIGNh
biBiZSBzcGVjaWZpZWQgYXMgYSBkZXZpY2UuICovCisJLyogT3BlbiBkZXZpY2UuIE5VTEwgY2Fu
IGJlIHNwZWNpZmllZCBhcyBhIGRldmljZS4gKi8KIAkvLyBBbGxvdyBkZXZpY2Vfb3BlbigpIHRv
IGZhaWwsIGluIHdoaWNoIGNhc2UgZGV2IGlzIGludGVycHJldGVkCiAJLy8gYnkgdGhlIGZpbGUg
c3lzdGVtIG1vdW50IHJvdXRpbmUgKGUuZyB6ZnMgcG9vbHMpCiAJZGV2aWNlID0gMDsKQEAgLTEx
MSwxNyArMTEyLDIxIEBAIHN5c19tb3VudChjb25zdCBjaGFyICpkZXYsIGNvbnN0IGNoYXIgKmRp
ciwgY29uc3QgY2hhciAqZnNuYW1lLCBpbnQgZmxhZ3MsIGNvbnN0CiAJLy8gdGhhdCBvbmx5IG9u
ZSBzeXNfbW91bnQoKSBydW5zIGF0IGEgdGltZS4gV2UgY2Fubm90IHJldXNlIHRoZSBleGlzdGlu
ZwogCS8vIG1vdW50X2xvY2sgZm9yIHRoaXMgcHVycG9zZTogSWYgd2UgdGFrZSBtb3VudF9sb2Nr
IGFuZCB0aGVuIGRvCiAJLy8gbG9va3VwcywgdGhpcyBpcyBsb2NrIG9yZGVyIGludmVyc2lvbiBh
bmQgY2FuIHJlc3VsdCBpbiBkZWFkbG9jay4KLQlzdGF0aWMgbXV0ZXggc3lzX21vdW50X2xvY2s7
Ci0JU0NPUEVfTE9DSyhzeXNfbW91bnRfbG9jayk7Ci0JV0lUSF9MT0NLKG1vdW50X2xvY2spIHsK
LQkJZm9yIChhdXRvJiYgbXAgOiBtb3VudF9saXN0KSB7Ci0JCQlpZiAoIXN0cmNtcChtcC0+bV9w
YXRoLCBkaXIpIHx8Ci0JCQkJKGRldmljZSAmJiBtcC0+bV9kZXYgPT0gZGV2aWNlKSkgewotCQkJ
CWVycm9yID0gRUJVU1k7ICAvKiBBbHJlYWR5IG1vdW50ZWQgKi8KLQkJCQlnb3RvIGVycjE7Ci0J
CQl9CisKKwkvKiBUT0RPOiBwcm90ZWN0IHRoZSBmdW5jdGlvbiBmcm9tIHJlZW50cmFuY2UsIGFz
IGRlc2NyaWJlZCBpbgorCSAqIHRoZSBjb21tZW50IGFib3ZlICovCisJLyogc3RhdGljIG11dGV4
IHN5c19tb3VudF9sb2NrOyAqLworCS8qIFNDT1BFX0xPQ0soc3lzX21vdW50X2xvY2spOyAqLwor
CisJdWtfbXV0ZXhfbG9jaygmbW91bnRfbG9jayk7CisJdWtfbGlzdF9mb3JfZWFjaF9lbnRyeSht
cCwgJm1vdW50X2xpc3QsIG1udF9saXN0KSB7CisJCWlmICghc3RyY21wKG1wLT5tX3BhdGgsIGRp
cikgfHwKKwkJICAgIChkZXZpY2UgJiYgbXAtPm1fZGV2ID09IGRldmljZSkpIHsKKwkJCWVycm9y
ID0gRUJVU1k7ICAvKiBBbHJlYWR5IG1vdW50ZWQgKi8KKwkJCWdvdG8gZXJyMTsKIAkJfQogCX0K
Kwl1a19tdXRleF91bmxvY2soJm1vdW50X2xvY2spOwogCS8qCiAJICogQ3JlYXRlIFZGUyBtb3Vu
dCBlbnRyeS4KIAkgKi8KQEAgLTEzNCw3ICsxMzksNyBAQCBzeXNfbW91bnQoY29uc3QgY2hhciAq
ZGV2LCBjb25zdCBjaGFyICpkaXIsIGNvbnN0IGNoYXIgKmZzbmFtZSwgaW50IGZsYWdzLCBjb25z
dAogCW1wLT5tX29wID0gZnMtPnZzX29wOwogCW1wLT5tX2ZsYWdzID0gZmxhZ3M7CiAJbXAtPm1f
ZGV2ID0gZGV2aWNlOwotCW1wLT5tX2RhdGEgPSBudWxscHRyOworCW1wLT5tX2RhdGEgPSBOVUxM
OwogCXN0cmxjcHkobXAtPm1fcGF0aCwgZGlyLCBzaXplb2YobXAtPm1fcGF0aCkpOwogCXN0cmxj
cHkobXAtPm1fc3BlY2lhbCwgZGV2LCBzaXplb2YobXAtPm1fc3BlY2lhbCkpOwogCkBAIC0xNDMs
NyArMTQ4LDcgQEAgc3lzX21vdW50KGNvbnN0IGNoYXIgKmRldiwgY29uc3QgY2hhciAqZGlyLCBj
b25zdCBjaGFyICpmc25hbWUsIGludCBmbGFncywgY29uc3QKIAkgKi8KIAlpZiAoKmRpciA9PSAn
LycgJiYgKihkaXIgKyAxKSA9PSAnXDAnKSB7CiAJCS8qIElnbm9yZSBpZiBpdCBtb3VudHMgdG8g
Z2xvYmFsIHJvb3QgZGlyZWN0b3J5LiAqLwotCQlkcF9jb3ZlcmVkID0gbnVsbHB0cjsKKwkJZHBf
Y292ZXJlZCA9IE5VTEw7CiAJfSBlbHNlIHsKIAkJaWYgKChlcnJvciA9IG5hbWVpKGRpciwgJmRw
X2NvdmVyZWQpKSAhPSAwKSB7CiAKQEAgLTE2MCw4ICsxNjUsOCBAQCBzeXNfbW91bnQoY29uc3Qg
Y2hhciAqZGV2LCBjb25zdCBjaGFyICpkaXIsIGNvbnN0IGNoYXIgKmZzbmFtZSwgaW50IGZsYWdz
LCBjb25zdAogCS8qCiAJICogQ3JlYXRlIGEgcm9vdCB2bm9kZSBmb3IgdGhpcyBmaWxlIHN5c3Rl
bS4KIAkgKi8KLQl2Z2V0KG1wLCAwLCAmdnApOwotCWlmICh2cCA9PSBudWxscHRyKSB7CisJdmZz
Y29yZV92Z2V0KG1wLCAwLCAmdnApOworCWlmICh2cCA9PSBOVUxMKSB7CiAJCWVycm9yID0gRU5P
TUVNOwogCQlnb3RvIGVycjM7CiAJfQpAQCAtMTY5LDcgKzE3NCw3IEBAIHN5c19tb3VudChjb25z
dCBjaGFyICpkZXYsIGNvbnN0IGNoYXIgKmRpciwgY29uc3QgY2hhciAqZnNuYW1lLCBpbnQgZmxh
Z3MsIGNvbnN0CiAJdnAtPnZfZmxhZ3MgPSBWUk9PVDsKIAl2cC0+dl9tb2RlID0gU19JRkRJUiB8
IFNfSVJVU1IgfCBTX0lXVVNSIHwgU19JWFVTUjsKIAotCW1wLT5tX3Jvb3QgPSBkZW50cnlfYWxs
b2MobnVsbHB0ciwgdnAsICIvIik7CisJbXAtPm1fcm9vdCA9IGRlbnRyeV9hbGxvYyhOVUxMLCB2
cCwgIi8iKTsKIAlpZiAoIW1wLT5tX3Jvb3QpIHsKIAkJdnB1dCh2cCk7CiAJCWdvdG8gZXJyMzsK
QEAgLTE4OCw5ICsxOTMsOSBAQCBzeXNfbW91bnQoY29uc3QgY2hhciAqZGV2LCBjb25zdCBjaGFy
ICpkaXIsIGNvbnN0IGNoYXIgKmZzbmFtZSwgaW50IGZsYWdzLCBjb25zdAogCS8qCiAJICogSW5z
ZXJ0IHRvIG1vdW50IGxpc3QKIAkgKi8KLQlXSVRIX0xPQ0sobW91bnRfbG9jaykgewotCQltb3Vu
dF9saXN0LnB1c2hfYmFjayhtcCk7Ci0JfQorCXVrX211dGV4X2xvY2soJm1vdW50X2xvY2spOwor
CXVrX2xpc3RfYWRkX3RhaWwoJm1wLT5tbnRfbGlzdCwgJm1vdW50X2xpc3QpOworCXVrX211dGV4
X3VubG9jaygmbW91bnRfbG9jayk7CiAKIAlyZXR1cm4gMDsgICAvKiBzdWNjZXNzICovCiAgZXJy
NDoKQEAgLTIyMiwxMiArMjI3LDEyIEBAIHJlbGVhc2VfbXBfZGVudHJpZXMoc3RydWN0IG1vdW50
ICptcCkKIGludAogc3lzX3Vtb3VudDIoY29uc3QgY2hhciAqcGF0aCwgaW50IGZsYWdzKQogewot
CXN0cnVjdCBtb3VudCAqbXA7CisJc3RydWN0IG1vdW50ICptcCwgKnRtcDsKIAlpbnQgZXJyb3Is
IHBhdGhsZW47CiAKLQlrcHJpbnRmKCJWRlM6IHVubW91bnRpbmcgJXNcbiIsIHBhdGgpOworCXVr
X3ByX2luZm8oIlZGUzogdW5tb3VudGluZyAlc1xuIiwgcGF0aCk7CiAKLQlTQ09QRV9MT0NLKG1v
dW50X2xvY2spOworCXVrX211dGV4X2xvY2soJm1vdW50X2xvY2spOwogCiAJcGF0aGxlbiA9IHN0
cmxlbihwYXRoKTsKIAlpZiAocGF0aGxlbiA+PSBNQVhQQVRITEVOKSB7CkBAIC0yMzYsNyArMjQx
LDcgQEAgc3lzX3Vtb3VudDIoY29uc3QgY2hhciAqcGF0aCwgaW50IGZsYWdzKQogCX0KIAogCS8q
IEdldCBtb3VudCBlbnRyeSAqLwotCWZvciAoYXV0byYmIHRtcCA6IG1vdW50X2xpc3QpIHsKKwl1
a19saXN0X2Zvcl9lYWNoX2VudHJ5KHRtcCwgJm1vdW50X2xpc3QsIG1udF9saXN0KSB7CiAJCWlm
ICghc3RyY21wKHBhdGgsIHRtcC0+bV9wYXRoKSkgewogCQkJbXAgPSB0bXA7CiAJCQlnb3RvIGZv
dW5kOwpAQCAtMjUwLDE0ICsyNTUsMTQgQEAgZm91bmQ6CiAJLyoKIAkgKiBSb290IGZzIGNhbiBu
b3QgYmUgdW5tb3VudGVkLgogCSAqLwotCWlmIChtcC0+bV9jb3ZlcmVkID09IG51bGxwdHIgJiYg
IShmbGFncyAmIE1OVF9GT1JDRSkpIHsKKwlpZiAobXAtPm1fY292ZXJlZCA9PSBOVUxMICYmICEo
ZmxhZ3MgJiBNTlRfRk9SQ0UpKSB7CiAJCWVycm9yID0gRUlOVkFMOwogCQlnb3RvIG91dDsKIAl9
CiAKIAlpZiAoKGVycm9yID0gVkZTX1VOTU9VTlQobXAsIGZsYWdzKSkgIT0gMCkKIAkJZ290byBv
dXQ7Ci0JbW91bnRfbGlzdC5yZW1vdmUobXApOworCXVrX2xpc3RfZGVsX2luaXQoJm1wLT5tbnRf
bGlzdCk7CiAKICNpZmRlZiBIQVZFX0JVRkZFUlMKIAkvKiBGbHVzaCBhbGwgYnVmZmVycyAqLwpA
QCAtMjY4LDYgKzI3Myw3IEBAIGZvdW5kOgogCQlkZXZpY2VfY2xvc2UobXAtPm1fZGV2KTsKIAlm
cmVlKG1wKTsKICBvdXQ6CisJdWtfbXV0ZXhfdW5sb2NrKCZtb3VudF9sb2NrKTsKIAlyZXR1cm4g
ZXJyb3I7CiB9CiAKQEAgLTI4MSw3ICsyODcsNyBAQCBzeXNfdW1vdW50KGNvbnN0IGNoYXIgKnBh
dGgpCiBpbnQKIHN5c19waXZvdF9yb290KGNvbnN0IGNoYXIgKm5ld19yb290LCBjb25zdCBjaGFy
ICpwdXRfb2xkKQogewotCXN0cnVjdCBtb3VudCAqbmV3bXAgPSBudWxscHRyLCAqb2xkbXAgPSBu
dWxscHRyOworCXN0cnVjdCBtb3VudCAqbmV3bXAgPSBOVUxMLCAqb2xkbXAgPSBOVUxMOwogCWlu
dCBlcnJvcjsKIAogCVdJVEhfTE9DSyhtb3VudF9sb2NrKSB7CkBAIC0zMTQsMTIgKzMyMCwxMiBA
QCBzeXNfcGl2b3Rfcm9vdChjb25zdCBjaGFyICpuZXdfcm9vdCwgY29uc3QgY2hhciAqcHV0X29s
ZCkKIAkJaWYgKG5ld21wLT5tX2NvdmVyZWQpIHsKIAkJCWRyZWxlKG5ld21wLT5tX2NvdmVyZWQp
OwogCQl9Ci0JCW5ld21wLT5tX2NvdmVyZWQgPSBudWxscHRyOworCQluZXdtcC0+bV9jb3ZlcmVk
ID0gTlVMTDsKIAogCQlpZiAobmV3bXAtPm1fcm9vdC0+ZF9wYXJlbnQpIHsKIAkJCWRyZWxlKG5l
d21wLT5tX3Jvb3QtPmRfcGFyZW50KTsKIAkJfQotCQluZXdtcC0+bV9yb290LT5kX3BhcmVudCA9
IG51bGxwdHI7CisJCW5ld21wLT5tX3Jvb3QtPmRfcGFyZW50ID0gTlVMTDsKIAogCQlzdHJsY3B5
KG5ld21wLT5tX3BhdGgsICIvIiwgc2l6ZW9mKG5ld21wLT5tX3BhdGgpKTsKIAl9CkBAIC0zMzAs
MTEgKzMzNiwxMiBAQCBzeXNfcGl2b3Rfcm9vdChjb25zdCBjaGFyICpuZXdfcm9vdCwgY29uc3Qg
Y2hhciAqcHV0X29sZCkKIGludAogc3lzX3N5bmModm9pZCkKIHsKKwlzdHJ1Y3QgbW91bnQgKm1w
OworCXVrX211dGV4X2xvY2soJm1vdW50X2xvY2spOworCiAJLyogQ2FsbCBlYWNoIG1vdW50ZWQg
ZmlsZSBzeXN0ZW0uICovCi0JV0lUSF9MT0NLKG1vdW50X2xvY2spIHsKLQkJZm9yIChhdXRvJiYg
bXAgOiBtb3VudF9saXN0KSB7Ci0JCQlWRlNfU1lOQyhtcCk7Ci0JCX0KKwl1a19saXN0X2Zvcl9l
YWNoX2VudHJ5KG1wLCAmbW91bnRfbGlzdCwgbW50X2xpc3QpIHsKKwkJVkZTX1NZTkMobXApOwog
CX0KICNpZmRlZiBIQVZFX0JVRkZFUlMKIAliaW9fc3luYygpOwpAQCAtMzgwLDIyICszODcsMjMg
QEAgY291bnRfbWF0Y2goY29uc3QgY2hhciAqcGF0aCwgY2hhciAqbW91bnRfcm9vdCkKIGludAog
dmZzX2ZpbmRyb290KGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBtb3VudCAqKm1wLCBjaGFyICoq
cm9vdCkKIHsKLQlzdHJ1Y3QgbW91bnQgKm0gPSBudWxscHRyOworCXN0cnVjdCBtb3VudCAqbSA9
IE5VTEwsICp0bXA7CiAJc2l6ZV90IGxlbiwgbWF4X2xlbiA9IDA7CiAKIAlpZiAoIXBhdGgpCiAJ
CXJldHVybiAtMTsKIAogCS8qIEZpbmQgbW91bnQgcG9pbnQgZnJvbSBuZWFyZXN0IHBhdGggKi8K
LQlTQ09QRV9MT0NLKG1vdW50X2xvY2spOwotCWZvciAoYXV0byYmIHRtcCA6IG1vdW50X2xpc3Qp
IHsKKwl1a19tdXRleF9sb2NrKCZtb3VudF9sb2NrKTsKKwl1a19saXN0X2Zvcl9lYWNoX2VudHJ5
KHRtcCwgJm1vdW50X2xpc3QsIG1udF9saXN0KSB7CiAJCWxlbiA9IGNvdW50X21hdGNoKHBhdGgs
IHRtcC0+bV9wYXRoKTsKIAkJaWYgKGxlbiA+IG1heF9sZW4pIHsKIAkJCW1heF9sZW4gPSBsZW47
CiAJCQltID0gdG1wOwogCQl9CiAJfQotCWlmIChtID09IG51bGxwdHIpCisJdWtfbXV0ZXhfdW5s
b2NrKCZtb3VudF9sb2NrKTsKKwlpZiAobSA9PSBOVUxMKQogCQlyZXR1cm4gLTE7CiAJKnJvb3Qg
PSAoY2hhciAqKShwYXRoICsgbWF4X2xlbik7CiAJaWYgKCoqcm9vdCA9PSAnLycpCkBAIC00MTAs
OCArNDE4LDEwIEBAIHZmc19maW5kcm9vdChjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3QgbW91bnQg
KiptcCwgY2hhciAqKnJvb3QpCiB2b2lkCiB2ZnNfYnVzeShzdHJ1Y3QgbW91bnQgKm1wKQogewot
CVNDT1BFX0xPQ0sobW91bnRfbG9jayk7Ci0JbXAtPm1fY291bnQrKzsKKwkvKiBUaGUgbV9jb3Vu
dCBpcyBub3QgcmVhbGx5IGNoZWNrZWQgYW55d2hlcmUKKwkgKiBjdXJyZW50bHkuIEF0b21pYyBp
cyBlbm91Z2guIEJ1dCBpdCBjb3VsZCBiZSB0aGF0IG9idGFpbmluZworCSAqIG1vdW50X2xvY2sg
d2lsbCBiZSBuZWVkZWQgaW4gdGhlIGZ1dHVyZSAqLworCXVrYXJjaF9pbmMoJm1wLT5tX2NvdW50
KTsKIH0KIAogCkBAIC00MjEsOCArNDMxLDEwIEBAIHZmc19idXN5KHN0cnVjdCBtb3VudCAqbXAp
CiB2b2lkCiB2ZnNfdW5idXN5KHN0cnVjdCBtb3VudCAqbXApCiB7Ci0JU0NPUEVfTE9DSyhtb3Vu
dF9sb2NrKTsKLQltcC0+bV9jb3VudC0tOworCS8qIFRoZSBtX2NvdW50IGlzIG5vdCByZWFsbHkg
Y2hlY2tlZCBhbnl3aGVyZQorCSAqIGN1cnJlbnRseS4gQXRvbWljIGlzIGVub3VnaC4gQnV0IGl0
IGNvdWxkIGJlIHRoYXQgb2J0YWluaW5nCisJICogbW91bnRfbG9jayB3aWxsIGJlIG5lZWRlZCBp
biB0aGUgZnV0dXJlICovCisJdWthcmNoX2RlYygmbXAtPm1fY291bnQpOwogfQogCiBpbnQKQEAg
LTQ0MSwxNCArNDUzLDE2IEBAIHZmc19laW52YWwodm9pZCkKIHZvaWQKIG1vdW50X2R1bXAodm9p
ZCkKIHsKLQlTQ09QRV9MT0NLKG1vdW50X2xvY2spOworCXN0cnVjdCBtb3VudCAqbXA7CisJdWtf
bXV0ZXhfbG9jaygmbW91bnRfbG9jayk7CiAKLQlrcHJpbnRmKCJtb3VudF9kdW1wXG4iKTsKLQlr
cHJpbnRmKCJkZXYgICAgICBjb3VudCByb290XG4iKTsKLQlrcHJpbnRmKCItLS0tLS0tLSAtLS0t
LSAtLS0tLS0tLVxuIik7CisJdWtfcHJfZGVidWcoIm1vdW50X2R1bXBcbiIpOworCXVrX3ByX2Rl
YnVnKCJkZXYgICAgICBjb3VudCByb290XG4iKTsKKwl1a19wcl9kZWJ1ZygiLS0tLS0tLS0gLS0t
LS0gLS0tLS0tLS1cbiIpOwogCi0JZm9yIChhdXRvJiYgbXAgOiBtb3VudF9saXN0KSB7Ci0JCWtw
cmludGYoIiU4eCAlNWQgJXNcbiIsIG1wLT5tX2RldiwgbXAtPm1fY291bnQsIG1wLT5tX3BhdGgp
OworCXVrX2xpc3RfZm9yX2VhY2hfZW50cnkobXAsICZtb3VudF9saXN0LCBtbnRfbGlzdCkgewor
CQl1a19wcl9kZWJ1ZygiJThwICU1ZCAlc1xuIiwgbXAtPm1fZGV2LCBtcC0+bV9jb3VudCwgbXAt
Pm1fcGF0aCk7CiAJfQorCXVrX211dGV4X3VubG9jaygmbW91bnRfbG9jayk7CiB9CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3N1YnJfdWlvLmMgYi9saWIvdmZzY29yZS9zdWJyX3Vp
by5jCmluZGV4IGJiY2EzMzYyLi5kOGU5ZDFiZSAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvc3Vi
cl91aW8uYworKysgYi9saWIvdmZzY29yZS9zdWJyX3Vpby5jCkBAIC00OCw3ICs0OCw3IEBACiBp
bnQKIHVpb21vdmUodm9pZCAqY3AsIGludCBuLCBzdHJ1Y3QgdWlvICp1aW8pCiB7Ci0JYXNzZXJ0
KHVpby0+dWlvX3J3ID09IFVJT19SRUFEIHx8IHVpby0+dWlvX3J3ID09IFVJT19XUklURSk7CisJ
VUtfQVNTRVJUKHVpby0+dWlvX3J3ID09IFVJT19SRUFEIHx8IHVpby0+dWlvX3J3ID09IFVJT19X
UklURSk7CiAKIAl3aGlsZSAobiA+IDAgJiYgdWlvLT51aW9fcmVzaWQpIHsKIAkJc3RydWN0IGlv
dmVjICppb3YgPSB1aW8tPnVpb19pb3Y7CmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9zeXNjYWxs
cy5jIGIvbGliL3Zmc2NvcmUvc3lzY2FsbHMuYwppbmRleCBmNTBmYjM4Zi4uZmEwNDk4ZTcgMTAw
NjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL3N5c2NhbGxzLmMKKysrIGIvbGliL3Zmc2NvcmUvc3lzY2Fs
bHMuYwpAQCAtNjUsOSArNjUsOSBAQCBvcGVuX25vX2ZvbGxvd19jaGsoY2hhciAqcGF0aCkKIAlz
dHJ1Y3QgZGVudHJ5ICpkcDsKIAlzdHJ1Y3Qgdm5vZGUgICp2cDsKIAotCWRkcCA9IG51bGxwdHI7
Ci0JZHAgID0gbnVsbHB0cjsKLQl2cCAgPSBudWxscHRyOworCWRkcCA9IE5VTEw7CisJZHAgID0g
TlVMTDsKKwl2cCAgPSBOVUxMOwogCiAJZXJyb3IgPSBsb29rdXAocGF0aCwgJmRkcCwgJm5hbWUp
OwogCWlmIChlcnJvcikgewpAQCAtODgsMTUgKzg4LDE1IEBAIG9wZW5fbm9fZm9sbG93X2Noayhj
aGFyICpwYXRoKQogCiAJZXJyb3IgPSAwOwogb3V0OgotCWlmICh2cCAhPSBudWxscHRyKSB7CisJ
aWYgKHZwICE9IE5VTEwpIHsKIAkJdm5fdW5sb2NrKHZwKTsKIAl9CiAKLQlpZiAoZHAgIT0gbnVs
bHB0cikgeworCWlmIChkcCAhPSBOVUxMKSB7CiAJCWRyZWxlKGRwKTsKIAl9CiAKLQlpZiAoZGRw
ICE9IG51bGxwdHIpIHsKKwlpZiAoZGRwICE9IE5VTEwpIHsKIAkJZHJlbGUoZGRwKTsKIAl9CiAK
QEAgLTEwNCw5ICsxMDQsOSBAQCBvdXQ6CiB9CiAKIGludAotc3lzX29wZW4oY2hhciAqcGF0aCwg
aW50IGZsYWdzLCBtb2RlX3QgbW9kZSwgc3RydWN0IGZpbGUgKipmcHApCitzeXNfb3BlbihjaGFy
ICpwYXRoLCBpbnQgZmxhZ3MsIG1vZGVfdCBtb2RlLCBzdHJ1Y3QgdmZzY29yZV9maWxlICoqZnBw
KQogewotCWZpbGUgKmZwOworCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwOwogCXN0cnVjdCBkZW50
cnkgKmRwLCAqZGRwOwogCXN0cnVjdCB2bm9kZSAqdnA7CiAJY2hhciAqZmlsZW5hbWU7CkBAIC0x
MTUsMTEgKzExNSwxMSBAQCBzeXNfb3BlbihjaGFyICpwYXRoLCBpbnQgZmxhZ3MsIG1vZGVfdCBt
b2RlLCBzdHJ1Y3QgZmlsZSAqKmZwcCkKIAlEUFJJTlRGKFZGU0RCX1NZU0NBTEwsICgic3lzX29w
ZW46IHBhdGg9JXMgZmxhZ3M9JXggbW9kZT0leFxuIiwKIAkJCQlwYXRoLCBmbGFncywgbW9kZSkp
OwogCi0JZmxhZ3MgPSBmZmxhZ3MoZmxhZ3MpOworCWZsYWdzID0gdmZzY29yZV9mZmxhZ3MoZmxh
Z3MpOwogCWlmIChmbGFncyAmIE9fQ1JFQVQpIHsKIAkJZXJyb3IgPSBuYW1laShwYXRoLCAmZHAp
OwogCQlpZiAoZXJyb3IgPT0gRU5PRU5UKSB7Ci0JCQkvKiBDcmVhdGUgbmV3IGZpbGUuICovCisJ
CQkvKiBDcmVhdGUgbmV3IHN0cnVjdCB2ZnNjb3JlX2ZpbGUuICovCiAJCQlpZiAoKGVycm9yID0g
bG9va3VwKHBhdGgsICZkZHAsICZmaWxlbmFtZSkpICE9IDApCiAJCQkJcmV0dXJuIGVycm9yOwog
CkBAIC0yMzMsMTQgKzIzMywxNCBAQCBvdXRfZHJlbGU6CiB9CiAKIGludAotc3lzX2Nsb3NlKHN0
cnVjdCBmaWxlICpmcCkKK3N5c19jbG9zZShzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCBfX3VudXNl
ZCkKIHsKIAogCXJldHVybiAwOwogfQogCiBpbnQKLXN5c19yZWFkKHN0cnVjdCBmaWxlICpmcCwg
Y29uc3Qgc3RydWN0IGlvdmVjICppb3YsIHNpemVfdCBuaW92LAorc3lzX3JlYWQoc3RydWN0IHZm
c2NvcmVfZmlsZSAqZnAsIGNvbnN0IHN0cnVjdCBpb3ZlYyAqaW92LCBzaXplX3QgbmlvdiwKIAkJ
b2ZmX3Qgb2Zmc2V0LCBzaXplX3QgKmNvdW50KQogewogCWludCBlcnJvciA9IDA7CkBAIC0yOTAs
NyArMjkwLDcgQEAgc3lzX3JlYWQoc3RydWN0IGZpbGUgKmZwLCBjb25zdCBzdHJ1Y3QgaW92ZWMg
Kmlvdiwgc2l6ZV90IG5pb3YsCiB9CiAKIGludAotc3lzX3dyaXRlKHN0cnVjdCBmaWxlICpmcCwg
Y29uc3Qgc3RydWN0IGlvdmVjICppb3YsIHNpemVfdCBuaW92LAorc3lzX3dyaXRlKHN0cnVjdCB2
ZnNjb3JlX2ZpbGUgKmZwLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlvdiwgc2l6ZV90IG5pb3YsCiAJ
CW9mZl90IG9mZnNldCwgc2l6ZV90ICpjb3VudCkKIHsKIAlzdHJ1Y3QgaW92ZWMgKmNvcHlfaW92
OwpAQCAtMzM3LDEyICszMzcsMTIgQEAgc3lzX3dyaXRlKHN0cnVjdCBmaWxlICpmcCwgY29uc3Qg
c3RydWN0IGlvdmVjICppb3YsIHNpemVfdCBuaW92LAogfQogCiBpbnQKLXN5c19sc2VlayhzdHJ1
Y3QgZmlsZSAqZnAsIG9mZl90IG9mZiwgaW50IHR5cGUsIG9mZl90ICpvcmlnaW4pCitzeXNfbHNl
ZWsoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAsIG9mZl90IG9mZiwgaW50IHR5cGUsIG9mZl90ICpv
cmlnaW4pCiB7CiAJc3RydWN0IHZub2RlICp2cDsKIAotCURQUklOVEYoVkZTREJfU1lTQ0FMTCwg
KCJzeXNfc2VlazogZnA9JXggb2ZmPSVkIHR5cGU9JWRcbiIsCi0JCQkJKHVfbG9uZylmcCwgKHVf
aW50KW9mZiwgdHlwZSkpOworCURQUklOVEYoVkZTREJfU1lTQ0FMTCwgKCJzeXNfc2VlazogZnA9
JXAgb2ZmPSV1ZCB0eXBlPSVkXG4iLAorCQkJCWZwLCAodW5zaWduZWQgaW50KW9mZiwgdHlwZSkp
OwogCiAJaWYgKCFmcC0+Zl9kZW50cnkpIHsKIAkgICAgLy8gTGludXggZG9lc24ndCBpbXBsZW1l
bnQgbHNlZWsoKSBvbiBwaXBlcywgc29ja2V0cywgb3IgdHR5cy4KQEAgLTM3MywxMSArMzczLDEx
IEBAIHN5c19sc2VlayhzdHJ1Y3QgZmlsZSAqZnAsIG9mZl90IG9mZiwgaW50IHR5cGUsIG9mZl90
ICpvcmlnaW4pCiB9CiAKIGludAotc3lzX2lvY3RsKHN0cnVjdCBmaWxlICpmcCwgdV9sb25nIHJl
cXVlc3QsIHZvaWQgKmJ1ZikKK3N5c19pb2N0bChzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCwgdW5z
aWduZWQgbG9uZyByZXF1ZXN0LCB2b2lkICpidWYpCiB7CiAJaW50IGVycm9yOwogCi0JRFBSSU5U
RihWRlNEQl9TWVNDQUxMLCAoInN5c19pb2N0bDogZnA9JXggcmVxdWVzdD0leFxuIiwgZnAsIHJl
cXVlc3QpKTsKKwlEUFJJTlRGKFZGU0RCX1NZU0NBTEwsICgic3lzX2lvY3RsOiBmcD0lcCByZXF1
ZXN0PSVsdXhcbiIsIGZwLCByZXF1ZXN0KSk7CiAKIAlpZiAoKGZwLT5mX2ZsYWdzICYgKEZSRUFE
IHwgRldSSVRFKSkgPT0gMCkKIAkJcmV0dXJuIEVCQURGOwpAQCAtMzg5LDcgKzM4OSw3IEBAIHN5
c19pb2N0bChzdHJ1Y3QgZmlsZSAqZnAsIHVfbG9uZyByZXF1ZXN0LCB2b2lkICpidWYpCiB9CiAK
IGludAotc3lzX2ZzeW5jKHN0cnVjdCBmaWxlICpmcCkKK3N5c19mc3luYyhzdHJ1Y3QgdmZzY29y
ZV9maWxlICpmcCkKIHsKIAlzdHJ1Y3Qgdm5vZGUgKnZwOwogCWludCBlcnJvcjsKQEAgLTQwNyw3
ICs0MDcsNyBAQCBzeXNfZnN5bmMoc3RydWN0IGZpbGUgKmZwKQogfQogCiBpbnQKLXN5c19mc3Rh
dChzdHJ1Y3QgZmlsZSAqZnAsIHN0cnVjdCBzdGF0ICpzdCkKK3N5c19mc3RhdChzdHJ1Y3QgdmZz
Y29yZV9maWxlICpmcCwgc3RydWN0IHN0YXQgKnN0KQogewogCWludCBlcnJvciA9IDA7CiAKQEAg
LTQyNSw3ICs0MjUsNyBAQCBzdGF0aWMgaW50CiBjaGVja19kaXJfZW1wdHkoY2hhciAqcGF0aCkK
IHsKIAlpbnQgZXJyb3I7Ci0Jc3RydWN0IGZpbGUgKmZwOworCXN0cnVjdCB2ZnNjb3JlX2ZpbGUg
KmZwOwogCXN0cnVjdCBkaXJlbnQgZGlyOwogCiAJRFBSSU5URihWRlNEQl9TWVNDQUxMLCAoImNo
ZWNrX2Rpcl9lbXB0eVxuIikpOwpAQCAtNDUzLDcgKzQ1Myw3IEBAIG91dF9lcnJvcjoKIH0KIAog
aW50Ci1zeXNfcmVhZGRpcihzdHJ1Y3QgZmlsZSAqZnAsIHN0cnVjdCBkaXJlbnQgKmRpcikKK3N5
c19yZWFkZGlyKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwLCBzdHJ1Y3QgZGlyZW50ICpkaXIpCiB7
CiAJc3RydWN0IHZub2RlICpkdnA7CiAJaW50IGVycm9yOwpAQCAtNDc3LDcgKzQ3Nyw3IEBAIHN5
c19yZWFkZGlyKHN0cnVjdCBmaWxlICpmcCwgc3RydWN0IGRpcmVudCAqZGlyKQogfQogCiBpbnQK
LXN5c19yZXdpbmRkaXIoc3RydWN0IGZpbGUgKmZwKQorc3lzX3Jld2luZGRpcihzdHJ1Y3QgdmZz
Y29yZV9maWxlICpmcCkKIHsKIAlzdHJ1Y3Qgdm5vZGUgKmR2cDsKIApAQCAtNDk2LDcgKzQ5Niw3
IEBAIHN5c19yZXdpbmRkaXIoc3RydWN0IGZpbGUgKmZwKQogfQogCiBpbnQKLXN5c19zZWVrZGly
KHN0cnVjdCBmaWxlICpmcCwgbG9uZyBsb2MpCitzeXNfc2Vla2RpcihzdHJ1Y3QgdmZzY29yZV9m
aWxlICpmcCwgbG9uZyBsb2MpCiB7CiAJc3RydWN0IHZub2RlICpkdnA7CiAKQEAgLTUxNSw3ICs1
MTUsNyBAQCBzeXNfc2Vla2RpcihzdHJ1Y3QgZmlsZSAqZnAsIGxvbmcgbG9jKQogfQogCiBpbnQK
LXN5c190ZWxsZGlyKHN0cnVjdCBmaWxlICpmcCwgbG9uZyAqbG9jKQorc3lzX3RlbGxkaXIoc3Ry
dWN0IHZmc2NvcmVfZmlsZSAqZnAsIGxvbmcgKmxvYykKIHsKIAlzdHJ1Y3Qgdm5vZGUgKmR2cDsK
IApAQCAtNjYyLDE0ICs2NjIsMTQgQEAgc3lzX21rbm9kKGNoYXIgKnBhdGgsIG1vZGVfdCBtb2Rl
KQogICoKICAqIEFzc3VtZXMgYm90aCBwYXRocyBkbyBub3QgaGF2ZSB0cmFpbGluZyBzbGFzaGVz
LgogICovCi1zdGF0aWMgYm9vbAorc3RhdGljIGludAogaXNfcGFyZW50KGNvbnN0IGNoYXIgKnBh
cmVudCwgY29uc3QgY2hhciAqY2hpbGQpCiB7CiAJc2l6ZV90IHBfbGVuID0gc3RybGVuKHBhcmVu
dCk7CiAJcmV0dXJuICFzdHJuY21wKHBhcmVudCwgY2hpbGQsIHBfbGVuKSAmJiAocGFyZW50W3Bf
bGVuLTFdID09ICcvJyB8fCBjaGlsZFtwX2xlbl0gPT0gJy8nKTsKIH0KIAotc3RhdGljIGJvb2wK
K3N0YXRpYyBpbnQKIGhhc190cmFpbGluZyhjb25zdCBjaGFyICpwYXRoLCBjaGFyIGNoKQogewog
CXNpemVfdCBsZW4gPSBzdHJsZW4ocGF0aCk7CkBAIC02OTUsMTYgKzY5NSwxNiBAQCBzeXNfcmVu
YW1lKGNoYXIgKnNyYywgY2hhciAqZGVzdCkKIAljaGFyICpzbmFtZSwgKmRuYW1lOwogCWludCBl
cnJvcjsKIAljaGFyIHJvb3RbXSA9ICIvIjsKLQlib29sIHRzOyAvKiB0cmFpbGluZyBzbGFzaCAq
LworCWludCB0czsgLyogdHJhaWxpbmcgc2xhc2ggKi8KIAogCURQUklOVEYoVkZTREJfU1lTQ0FM
TCwgKCJzeXNfcmVuYW1lOiBzcmM9JXMgZGVzdD0lc1xuIiwgc3JjLCBkZXN0KSk7CiAKLQl0cyA9
IGZhbHNlOwotCWlmIChoYXNfdHJhaWxpbmcoc3JjLCAnLycpID09IHRydWUpIHsKKwl0cyA9IDA7
CisJaWYgKGhhc190cmFpbGluZyhzcmMsICcvJykpIHsKIAkJaWYgKHN0cmxlbihzcmMpICE9IDEp
IHsKIAkJCS8qIHJlbW92ZSB0cmFpbGluZyBzbGFzaCBpZmYgcGF0aCBpcyBub25lIHJvb3QgKi8K
IAkJCXN0cmlwX3RyYWlsaW5nKHNyYywgJy8nKTsKLQkJCXRzID0gdHJ1ZTsKKwkJCXRzID0gMTsK
IAkJfQogCX0KIApAQCAtNzIyLDE3ICs3MjIsMTcgQEAgc3lzX3JlbmFtZShjaGFyICpzcmMsIGNo
YXIgKmRlc3QpCiAJdnAxID0gZHAxLT5kX3Zub2RlOwogCXZuX2xvY2sodnAxKTsKIAotCWlmICh2
cDEtPnZfdHlwZSAhPSBWRElSICYmIHRzID09IHRydWUpIHsKKwlpZiAodnAxLT52X3R5cGUgIT0g
VkRJUiAmJiB0cykgewogCQllcnJvciA9IEVOT1RESVI7CiAJCWdvdG8gZXJyMTsKIAl9CiAKLQl0
cyA9IGZhbHNlOwotCWlmIChoYXNfdHJhaWxpbmcoZGVzdCwgJy8nKSA9PSB0cnVlKSB7CisJdHMg
PSAwOworCWlmIChoYXNfdHJhaWxpbmcoZGVzdCwgJy8nKSkgewogCQlpZiAoc3RybGVuKGRlc3Qp
ICE9IDEpIHsKIAkJCS8qIHJlbW92ZSB0cmFpbGluZyBzbGFzaCBpZmYgcGF0aCBpcyBub25lIHJv
b3QgKi8KIAkJCXN0cmlwX3RyYWlsaW5nKGRlc3QsICcvJyk7Ci0JCQl0cyA9IHRydWU7CisJCQl0
cyA9IDE7CiAJCX0KIAl9CiAKQEAgLTc0OSw3ICs3NDksNyBAQCBzeXNfcmVuYW1lKGNoYXIgKnNy
YywgY2hhciAqZGVzdCkKIAkJdm5fbG9jayh2cDIpOwogCiAJCWlmICh2cDItPnZfdHlwZSAhPSBW
RElSICYmIHZwMi0+dl90eXBlICE9IFZMTkspIHsKLQkJCWlmICh2cDEtPnZfdHlwZSA9PSBWRElS
IHx8IHRzID09IHRydWUpIHsKKwkJCWlmICh2cDEtPnZfdHlwZSA9PSBWRElSIHx8IHRzKSB7CiAJ
CQkJZXJyb3IgPSBFTk9URElSOwogCQkJCWdvdG8gZXJyMjsKIAkJCX0KQEAgLTc2Miw3ICs3NjIs
NyBAQCBzeXNfcmVuYW1lKGNoYXIgKnNyYywgY2hhciAqZGVzdCkKIAkJCWdvdG8gZXJyMjsKIAkJ
fQogCX0gZWxzZSBpZiAoZXJyb3IgPT0gRU5PRU5UKSB7Ci0JCWlmICh2cDEtPnZfdHlwZSAhPSBW
RElSICYmIHRzID09IHRydWUpIHsKKwkJaWYgKHZwMS0+dl90eXBlICE9IFZESVIgJiYgdHMpIHsK
IAkJCWVycm9yID0gRU5PVERJUjsKIAkJCWdvdG8gZXJyMjsKIAkJfQpAQCAtNzg3LDcgKzc4Nyw3
IEBAIHN5c19yZW5hbWUoY2hhciAqc3JjLCBjaGFyICpkZXN0KQogCX0KIAogCWRuYW1lID0gc3Ry
cmNocihkZXN0LCAnLycpOwotCWlmIChkbmFtZSA9PSBudWxscHRyKSB7CisJaWYgKGRuYW1lID09
IE5VTEwpIHsKIAkJZXJyb3IgPSBFTk9URElSOwogCQlnb3RvIGVycjI7CiAJfQpAQCAtODQ4LDE1
ICs4NDgsMTUgQEAgc3lzX3N5bWxpbmsoY29uc3QgY2hhciAqb2xkcGF0aCwgY29uc3QgY2hhciAq
bmV3cGF0aCkKIAlzdHJ1Y3QgZGVudHJ5CSpuZXdkaXJkcDsKIAljaGFyCQkqbmFtZTsKIAotCWlm
IChvbGRwYXRoID09IG51bGxwdHIgfHwgbmV3cGF0aCA9PSBudWxscHRyKSB7CisJaWYgKG9sZHBh
dGggPT0gTlVMTCB8fCBuZXdwYXRoID09IE5VTEwpIHsKIAkJcmV0dXJuIChFRkFVTFQpOwogCX0K
IAogCURQUklOVEYoVkZTREJfU1lTQ0FMTCwgKCJzeXNfbGluazogb2xkcGF0aD0lcyBuZXdwYXRo
PSVzXG4iLAogCQkJCW9sZHBhdGgsIG5ld3BhdGgpKTsKIAotCW5ld2RwCQk9IG51bGxwdHI7Ci0J
bmV3ZGlyZHAJPSBudWxscHRyOworCW5ld2RwCQk9IE5VTEw7CisJbmV3ZGlyZHAJPSBOVUxMOwog
CiAJZXJyb3IgPSB0YXNrX2NvbnYodCwgbmV3cGF0aCwgVldSSVRFLCBucCk7CiAJaWYgKGVycm9y
ICE9IDApIHsKQEAgLTg5Miw3ICs4OTIsNyBAQCBzeXNfc3ltbGluayhjb25zdCBjaGFyICpvbGRw
YXRoLCBjb25zdCBjaGFyICpuZXdwYXRoKQogCWVycm9yID0gVk9QX1NZTUxJTksobmV3ZGlyZHAt
PmRfdm5vZGUsIG5hbWUsIG9wKTsKIAogb3V0OgotCWlmIChuZXdkaXJkcCAhPSBudWxscHRyKSB7
CisJaWYgKG5ld2RpcmRwICE9IE5VTEwpIHsKIAkJdm5fdW5sb2NrKG5ld2RpcmRwLT5kX3Zub2Rl
KTsKIAkJZHJlbGUobmV3ZGlyZHApOwogCX0KQEAgLTk3Miw5ICs5NzIsOSBAQCBzeXNfdW5saW5r
KGNoYXIgKnBhdGgpCiAKIAlEUFJJTlRGKFZGU0RCX1NZU0NBTEwsICgic3lzX3VubGluazogcGF0
aD0lc1xuIiwgcGF0aCkpOwogCi0JZGRwICAgPSBudWxscHRyOwotCWRwICAgID0gbnVsbHB0cjsK
LQl2cCAgICA9IG51bGxwdHI7CisJZGRwICAgPSBOVUxMOworCWRwICAgID0gTlVMTDsKKwl2cCAg
ICA9IE5VTEw7CiAKIAllcnJvciA9IGxvb2t1cChwYXRoLCAmZGRwLCAmbmFtZSk7CiAJaWYgKGVy
cm9yICE9IDApIHsKQEAgLTEwMTMsMTUgKzEwMTMsMTUgQEAgc3lzX3VubGluayhjaGFyICpwYXRo
KQogCWRyZWxlKGRwKTsKIAlyZXR1cm4gZXJyb3I7CiAgb3V0OgotCWlmICh2cCAhPSBudWxscHRy
KSB7CisJaWYgKHZwICE9IE5VTEwpIHsKIAkJdm5fdW5sb2NrKHZwKTsKIAl9CiAKLQlpZiAoZHAg
IT0gbnVsbHB0cikgeworCWlmIChkcCAhPSBOVUxMKSB7CiAJCWRyZWxlKGRwKTsKIAl9CiAKLQlp
ZiAoZGRwICE9IG51bGxwdHIpIHsKKwlpZiAoZGRwICE9IE5VTEwpIHsKIAkJZHJlbGUoZGRwKTsK
IAl9CiAJcmV0dXJuIGVycm9yOwpAQCAtMTExNSw3ICsxMTE1LDcgQEAgc3lzX3N0YXRmcyhjaGFy
ICpwYXRoLCBzdHJ1Y3Qgc3RhdGZzICpidWYpCiB9CiAKIGludAotc3lzX2ZzdGF0ZnMoc3RydWN0
IGZpbGUgKmZwLCBzdHJ1Y3Qgc3RhdGZzICpidWYpCitzeXNfZnN0YXRmcyhzdHJ1Y3QgdmZzY29y
ZV9maWxlICpmcCwgc3RydWN0IHN0YXRmcyAqYnVmKQogewogCXN0cnVjdCB2bm9kZSAqdnA7CiAJ
aW50IGVycm9yID0gMDsKQEAgLTExNTIsNyArMTE1Miw3IEBAIHN5c190cnVuY2F0ZShjaGFyICpw
YXRoLCBvZmZfdCBsZW5ndGgpCiB9CiAKIGludAotc3lzX2Z0cnVuY2F0ZShzdHJ1Y3QgZmlsZSAq
ZnAsIG9mZl90IGxlbmd0aCkKK3N5c19mdHJ1bmNhdGUoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAs
IG9mZl90IGxlbmd0aCkKIHsKIAlzdHJ1Y3Qgdm5vZGUgKnZwOwogCWludCBlcnJvcjsKQEAgLTEx
NjksNyArMTE2OSw3IEBAIHN5c19mdHJ1bmNhdGUoc3RydWN0IGZpbGUgKmZwLCBvZmZfdCBsZW5n
dGgpCiB9CiAKIGludAotc3lzX2ZjaGRpcihzdHJ1Y3QgZmlsZSAqZnAsIGNoYXIgKmN3ZCkKK3N5
c19mY2hkaXIoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAsIGNoYXIgKmN3ZCkKIHsKIAlzdHJ1Y3Qg
dm5vZGUgKmR2cDsKIApAQCAtMTI0NCw3ICsxMjQ0LDcgQEAgc3lzX3JlYWRsaW5rKGNoYXIgKnBh
dGgsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnNpemUsIHNzaXplX3QgKnNpemUpCiAvKgogICogQ2hl
Y2sgdGhlIHZhbGlkaXR5IG9mIHRoZSBtZW1iZXJzIG9mIGEgc3RydWN0IHRpbWV2YWwuCiAgKi8K
LXN0YXRpYyBib29sIGlzX3RpbWV2YWxfdmFsaWQoY29uc3Qgc3RydWN0IHRpbWV2YWwgKnRpbWUp
CitzdGF0aWMgaW50IGlzX3RpbWV2YWxfdmFsaWQoY29uc3Qgc3RydWN0IHRpbWV2YWwgKnRpbWUp
CiB7CiAJcmV0dXJuICh0aW1lLT50dl9zZWMgPj0gMCkgJiYKIAkJICAgKHRpbWUtPnR2X3VzZWMg
Pj0gMCAmJiB0aW1lLT50dl91c2VjIDwgMTAwMDAwMCk7CkBAIC0xMjc2LDE4ICsxMjc2LDE4IEBA
IHN5c191dGltZXMoY2hhciAqcGF0aCwgY29uc3Qgc3RydWN0IHRpbWV2YWwgdGltZXNbMl0sIGlu
dCBmbGFncykKIAkJcmV0dXJuIEVJTlZBTDsKIAogCS8vIENvbnZlcnQgZWFjaCBlbGVtZW50IG9m
IHRpbWV2YWwgYXJyYXkgdG8gdGhlIHRpbWVzcGVjIHR5cGUKLQljb252ZXJ0X3RpbWV2YWwodGlt
ZXNwZWNfdGltZXNbMF0sIHRpbWVzID8gdGltZXMgKyAwIDogbnVsbHB0cik7Ci0JY29udmVydF90
aW1ldmFsKHRpbWVzcGVjX3RpbWVzWzFdLCB0aW1lcyA/IHRpbWVzICsgMSA6IG51bGxwdHIpOwor
CWNvbnZlcnRfdGltZXZhbCh0aW1lc3BlY190aW1lc1swXSwgdGltZXMgPyB0aW1lcyArIDAgOiBO
VUxMKTsKKwljb252ZXJ0X3RpbWV2YWwodGltZXNwZWNfdGltZXNbMV0sIHRpbWVzID8gdGltZXMg
KyAxIDogTlVMTCk7CiAKIAlpZiAoZmxhZ3MgJiBBVF9TWU1MSU5LX05PRk9MTE9XKSB7CiAJCXN0
cnVjdCBkZW50cnkgKmRkcDsKLQkJZXJyb3IgPSBsb29rdXAocGF0aCwgJmRkcCwgbnVsbHB0cik7
CisJCWVycm9yID0gbG9va3VwKHBhdGgsICZkZHAsIE5VTEwpOwogCQlpZiAoZXJyb3IpIHsKIAkJ
CXJldHVybiBlcnJvcjsKIAkJfQogCiAJCWVycm9yID0gbmFtZWlfbGFzdF9ub2ZvbGxvdyhwYXRo
LCBkZHAsICZkcCk7Ci0JCWlmIChkZHAgIT0gbnVsbHB0cikgeworCQlpZiAoZGRwICE9IE5VTEwp
IHsKIAkJCWRyZWxlKGRkcCk7CiAJCX0KIAkJaWYgKGVycm9yKSB7CkBAIC0xMzEyLDcgKzEzMTIs
NyBAQCBzeXNfdXRpbWVzKGNoYXIgKnBhdGgsIGNvbnN0IHN0cnVjdCB0aW1ldmFsIHRpbWVzWzJd
LCBpbnQgZmxhZ3MpCiAvKgogICogQ2hlY2sgdGhlIHZhbGlkaXR5IG9mIG1lbWJlcnMgb2YgYSBz
dHJ1Y3QgdGltZXNwZWMKICAqLwotc3RhdGljIGJvb2wgaXNfdGltZXNwZWNfdmFsaWQoY29uc3Qg
c3RydWN0IHRpbWVzcGVjICZ0aW1lKQorc3RhdGljIGludCBpc190aW1lc3BlY192YWxpZChjb25z
dCBzdHJ1Y3QgdGltZXNwZWMgJnRpbWUpCiB7CiAJcmV0dXJuICh0aW1lLnR2X3NlYyA+PSAwKSAm
JgogCSAgICgodGltZS50dl9uc2VjID49IDAgJiYgdGltZS50dl9uc2VjIDw9IDk5OTk5OTk5OSkg
fHwKQEAgLTEzMjIsNyArMTMyMiw3IEBAIHN0YXRpYyBib29sIGlzX3RpbWVzcGVjX3ZhbGlkKGNv
bnN0IHN0cnVjdCB0aW1lc3BlYyAmdGltZSkKIAogdm9pZCBpbml0X3RpbWVzcGVjKHN0cnVjdCB0
aW1lc3BlYyAmX3RpbWVzLCBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKnRpbWVzKQogewotCWlmICh0
aW1lcyA9PSBudWxscHRyIHx8IHRpbWVzLT50dl9uc2VjID09IFVUSU1FX05PVykgeworCWlmICh0
aW1lcyA9PSBOVUxMIHx8IHRpbWVzLT50dl9uc2VjID09IFVUSU1FX05PVykgewogCQljbG9ja19n
ZXR0aW1lKENMT0NLX1JFQUxUSU1FLCAmX3RpbWVzKTsKIAl9IGVsc2UgewogCQlfdGltZXMudHZf
c2VjID0gdGltZXMtPnR2X3NlYzsKQEAgLTEzNTAsOCArMTM1MCw4IEBAIHN5c191dGltZW5zYXQo
aW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwgY29uc3Qgc3RydWN0IHRpbWVzcGVjIHRp
bWVzWzJdLCBpCiAJaWYgKHRpbWVzICYmICghaXNfdGltZXNwZWNfdmFsaWQodGltZXNbMF0pIHx8
ICFpc190aW1lc3BlY192YWxpZCh0aW1lc1sxXSkpKQogCQlyZXR1cm4gRUlOVkFMOwogCi0JaW5p
dF90aW1lc3BlYyh0aW1lc3BlY190aW1lc1swXSwgdGltZXMgPyB0aW1lcyArIDAgOiBudWxscHRy
KTsKLQlpbml0X3RpbWVzcGVjKHRpbWVzcGVjX3RpbWVzWzFdLCB0aW1lcyA/IHRpbWVzICsgMSA6
IG51bGxwdHIpOworCWluaXRfdGltZXNwZWModGltZXNwZWNfdGltZXNbMF0sIHRpbWVzID8gdGlt
ZXMgKyAwIDogTlVMTCk7CisJaW5pdF90aW1lc3BlYyh0aW1lc3BlY190aW1lc1sxXSwgdGltZXMg
PyB0aW1lcyArIDEgOiBOVUxMKTsKIAogCWlmIChwYXRobmFtZSAmJiBwYXRobmFtZVswXSA9PSAn
LycpIHsKIAlhcCA9IHBhdGhuYW1lOwpAQCAtMTM2MCw3ICsxMzYwLDcgQEAgc3lzX3V0aW1lbnNh
dChpbnQgZGlyZmQsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBjb25zdCBzdHJ1Y3QgdGltZXNwZWMg
dGltZXNbMl0sIGkKIAkgICAgcmV0dXJuIEVGQVVMVDsKIAlhcCA9IHN0ZDo6c3RyaW5nKG1haW5f
dGFzay0+dF9jd2QpICsgIi8iICsgcGF0aG5hbWU7CiAJfSBlbHNlIHsKLQkJc3RydWN0IGZpbGUg
KmZwOworCQlzdHJ1Y3QgdmZzY29yZV9maWxlICpmcDsKIAkJZmlsZXJlZiBmKGZpbGVyZWZfZnJv
bV9mZChkaXJmZCkpOwogCiAJCWlmICghZikKQEAgLTE0MTAsNyArMTQxMCw3IEBAIHN5c191dGlt
ZW5zYXQoaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwgY29uc3Qgc3RydWN0IHRpbWVz
cGVjIHRpbWVzWzJdLCBpCiBpbnQKIHN5c19mdXRpbWVucyhpbnQgZmQsIGNvbnN0IHN0cnVjdCB0
aW1lc3BlYyB0aW1lc1syXSkKIHsKLQlzdHJ1Y3QgZmlsZSAqZnA7CisJc3RydWN0IHZmc2NvcmVf
ZmlsZSAqZnA7CiAKIAlmaWxlcmVmIGYoZmlsZXJlZl9mcm9tX2ZkKGZkKSk7CiAJaWYgKCFmKQpA
QCAtMTQyOCw3ICsxNDI4LDcgQEAgc3lzX2Z1dGltZW5zKGludCBmZCwgY29uc3Qgc3RydWN0IHRp
bWVzcGVjIHRpbWVzWzJdKQogI2VuZGlmCiAKIGludAotc3lzX2ZhbGxvY2F0ZShzdHJ1Y3QgZmls
ZSAqZnAsIGludCBtb2RlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuKQorc3lzX2ZhbGxvY2F0
ZShzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCwgaW50IG1vZGUsIG9mZl90IG9mZnNldCwgb2ZmX3Qg
bGVuKQogewogCWludCBlcnJvcjsKIAlzdHJ1Y3Qgdm5vZGUgKnZwOwpAQCAtMTQ5Myw3ICsxNDkz
LDcgQEAgc3lzX2NobW9kKGNvbnN0IGNoYXIgKnBhdGgsIG1vZGVfdCBtb2RlKQogaW50CiBzeXNf
ZmNobW9kKGludCBmZCwgbW9kZV90IG1vZGUpCiB7Ci0JZmlsZXJlZiBmKGZpbGVyZWZfZnJvbV9m
ZChmZCkpOworCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmYgPSB2ZnNjb3JlX2dldF9maWxlKGZkKTsK
IAlpZiAoIWYpCiAJCXJldHVybiBFQkFERjsKIAkvLyBQb3NpeCBpcyBhbWJpdmFsZW50IG9uIHdo
YXQgZmNobW9kKCkgc2hvdWxkIGRvIG9uIGFuIGZkIHRoYXQgZG9lcyBub3QKZGlmZiAtLWdpdCBh
L2xpYi92ZnNjb3JlL3Zmcy5oIGIvbGliL3Zmc2NvcmUvdmZzLmgKaW5kZXggMjUzMWY3MzAuLjE5
ZjhhYzg3IDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS92ZnMuaAorKysgYi9saWIvdmZzY29yZS92
ZnMuaApAQCAtNTcsNyArNTcsNyBAQCBleHRlcm4gaW50IHZmc19kZWJ1ZzsKIAogI2RlZmluZSBW
RlNEQl9GTEFHUwkweDAwMDAwMDEzCiAKLSNkZWZpbmUJRFBSSU5URihfbSxYKQlpZiAodmZzX2Rl
YnVnICYgKF9tKSkga3ByaW50ZiBYCisjZGVmaW5lCURQUklOVEYoX20sWCkJaWYgKHZmc19kZWJ1
ZyAmIChfbSkpIHVrX3ByX2RlYnVnIFgKICNlbHNlCiAjZGVmaW5lCURQUklOVEYoX20sIFgpCiAj
ZW5kaWYKQEAgLTcxLDI4ICs3MSwyNiBAQCBleHRlcm4gaW50IHZmc19kZWJ1ZzsKICAqLwogc3Ry
dWN0IHRhc2sgewogCWNoYXIgCSAgICB0X2N3ZFtQQVRIX01BWF07CS8qIGN1cnJlbnQgd29ya2lu
ZyBkaXJlY3RvcnkgKi8KLQlzdHJ1Y3QgZmlsZSAqdF9jd2RmcDsJCS8qIGRpcmVjdG9yeSBmb3Ig
Y3dkICovCisJc3RydWN0IHZmc2NvcmVfZmlsZSAqdF9jd2RmcDsJCS8qIGRpcmVjdG9yeSBmb3Ig
Y3dkICovCiB9OwogCi1leHRlcm4gY29uc3Qgc3RydWN0IHZmc3N3IHZmc3N3W107Ci0KLWludAkg
c3lzX29wZW4oY2hhciAqcGF0aCwgaW50IGZsYWdzLCBtb2RlX3QgbW9kZSwgc3RydWN0IGZpbGUg
KipmcCk7Ci1pbnQJIHN5c19yZWFkKHN0cnVjdCBmaWxlICpmcCwgY29uc3Qgc3RydWN0IGlvdmVj
ICppb3YsIHNpemVfdCBuaW92LAoraW50CSBzeXNfb3BlbihjaGFyICpwYXRoLCBpbnQgZmxhZ3Ms
IG1vZGVfdCBtb2RlLCBzdHJ1Y3QgdmZzY29yZV9maWxlICoqZnApOworaW50CSBzeXNfcmVhZChz
dHJ1Y3QgdmZzY29yZV9maWxlICpmcCwgY29uc3Qgc3RydWN0IGlvdmVjICppb3YsIHNpemVfdCBu
aW92LAogCQlvZmZfdCBvZmZzZXQsIHNpemVfdCAqY291bnQpOwotaW50CSBzeXNfd3JpdGUoc3Ry
dWN0IGZpbGUgKmZwLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlvdiwgc2l6ZV90IG5pb3YsCitpbnQJ
IHN5c193cml0ZShzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCwgY29uc3Qgc3RydWN0IGlvdmVjICpp
b3YsIHNpemVfdCBuaW92LAogCQlvZmZfdCBvZmZzZXQsIHNpemVfdCAqY291bnQpOwotaW50CSBz
eXNfbHNlZWsoc3RydWN0IGZpbGUgKmZwLCBvZmZfdCBvZmYsIGludCB0eXBlLCBvZmZfdCAqIGN1
cl9vZmYpOwotaW50CSBzeXNfaW9jdGwoc3RydWN0IGZpbGUgKmZwLCB1X2xvbmcgcmVxdWVzdCwg
dm9pZCAqYnVmKTsKLWludAkgc3lzX2ZzdGF0KHN0cnVjdCBmaWxlICpmcCwgc3RydWN0IHN0YXQg
KnN0KTsKLWludAkgc3lzX2ZzdGF0ZnMoc3RydWN0IGZpbGUgKmZwLCBzdHJ1Y3Qgc3RhdGZzICpi
dWYpOwotaW50CSBzeXNfZnN5bmMoc3RydWN0IGZpbGUgKmZwKTsKLWludAkgc3lzX2Z0cnVuY2F0
ZShzdHJ1Y3QgZmlsZSAqZnAsIG9mZl90IGxlbmd0aCk7Ci0KLWludAkgc3lzX3JlYWRkaXIoc3Ry
dWN0IGZpbGUgKmZwLCBzdHJ1Y3QgZGlyZW50ICpkaXJlbnQpOwotaW50CSBzeXNfcmV3aW5kZGly
KHN0cnVjdCBmaWxlICpmcCk7Ci1pbnQJIHN5c19zZWVrZGlyKHN0cnVjdCBmaWxlICpmcCwgbG9u
ZyBsb2MpOwotaW50CSBzeXNfdGVsbGRpcihzdHJ1Y3QgZmlsZSAqZnAsIGxvbmcgKmxvYyk7Ci1p
bnQJIHN5c19mY2hkaXIoc3RydWN0IGZpbGUgKmZwLCBjaGFyICpwYXRoKTsKK2ludAkgc3lzX2xz
ZWVrKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwLCBvZmZfdCBvZmYsIGludCB0eXBlLCBvZmZfdCAq
IGN1cl9vZmYpOworaW50CSBzeXNfaW9jdGwoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAsIHVuc2ln
bmVkIGxvbmcgcmVxdWVzdCwgdm9pZCAqYnVmKTsKK2ludAkgc3lzX2ZzdGF0KHN0cnVjdCB2ZnNj
b3JlX2ZpbGUgKmZwLCBzdHJ1Y3Qgc3RhdCAqc3QpOworaW50CSBzeXNfZnN0YXRmcyhzdHJ1Y3Qg
dmZzY29yZV9maWxlICpmcCwgc3RydWN0IHN0YXRmcyAqYnVmKTsKK2ludAkgc3lzX2ZzeW5jKHN0
cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwKTsKK2ludAkgc3lzX2Z0cnVuY2F0ZShzdHJ1Y3QgdmZzY29y
ZV9maWxlICpmcCwgb2ZmX3QgbGVuZ3RoKTsKKworaW50CSBzeXNfcmVhZGRpcihzdHJ1Y3QgdmZz
Y29yZV9maWxlICpmcCwgc3RydWN0IGRpcmVudCAqZGlyZW50KTsKK2ludAkgc3lzX3Jld2luZGRp
cihzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCk7CitpbnQJIHN5c19zZWVrZGlyKHN0cnVjdCB2ZnNj
b3JlX2ZpbGUgKmZwLCBsb25nIGxvYyk7CitpbnQJIHN5c190ZWxsZGlyKHN0cnVjdCB2ZnNjb3Jl
X2ZpbGUgKmZwLCBsb25nICpsb2MpOworaW50CSBzeXNfZmNoZGlyKHN0cnVjdCB2ZnNjb3JlX2Zp
bGUgKmZwLCBjaGFyICpwYXRoKTsKIAogaW50CSBzeXNfbWtkaXIoY2hhciAqcGF0aCwgbW9kZV90
IG1vZGUpOwogaW50CSBzeXNfcm1kaXIoY2hhciAqcGF0aCk7CkBAIC0xMTEsNyArMTA5LDcgQEAg
aW50ICBzeXNfdXRpbWVzKGNoYXIgKnBhdGgsIGNvbnN0IHN0cnVjdCB0aW1ldmFsIHRpbWVzWzJd
LCBpbnQgZmxhZ3MpOwogaW50ICBzeXNfdXRpbWVuc2F0KGludCBkaXJmZCwgY29uc3QgY2hhciAq
cGF0aG5hbWUsCiAJCQkJICAgY29uc3Qgc3RydWN0IHRpbWVzcGVjIHRpbWVzWzJdLCBpbnQgZmxh
Z3MpOwogaW50ICBzeXNfZnV0aW1lbnMoaW50IGZkLCBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgdGlt
ZXNbMl0pOwotaW50ICBzeXNfZmFsbG9jYXRlKHN0cnVjdCBmaWxlICpmcCwgaW50IG1vZGUsIGxv
ZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4pOworaW50ICBzeXNfZmFsbG9jYXRlKHN0cnVjdCB2ZnNj
b3JlX2ZpbGUgKmZwLCBpbnQgbW9kZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbik7CiAKIGlu
dAkgc3lzX21vdW50KGNvbnN0IGNoYXIgKmRldiwgY29uc3QgY2hhciAqZGlyLCBjb25zdCBjaGFy
ICpmc25hbWUsIGludCBmbGFncywgY29uc3Qgdm9pZCAqZGF0YSk7CiBpbnQJIHN5c191bW91bnQy
KGNvbnN0IGNoYXIgKnBhdGgsIGludCBmbGFncyk7CmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS92
bm9kZS5jIGIvbGliL3Zmc2NvcmUvdm5vZGUuYwppbmRleCA4MWY3OGJlOC4uYTJmNDU1OTYgMTAw
NjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL3Zub2RlLmMKKysrIGIvbGliL3Zmc2NvcmUvdm5vZGUuYwpA
QCAtNzcsMjQgKzc3LDI3IEBAIGludCB2dHRvaWZfdGFiWzEwXSA9IHsKICAqIEFsbCBhY3RpdmUg
KG9wZW5lZCkgdm5vZGVzIGFyZSBzdG9yZWQgb24gdGhpcyBoYXNoIHRhYmxlLgogICogVGhleSBj
YW4gYmUgYWNjZXNzZWQgYnkgaXRzIHBhdGggbmFtZS4KICAqLwotc3RhdGljIExJU1RfSEVBRCh2
bm9kZV9oYXNoX2hlYWQsIHZub2RlKSB2bm9kZV90YWJsZVtWTk9ERV9CVUNLRVRTXTsKK3N0YXRp
YyBzdHJ1Y3QgdWtfbGlzdF9oZWFkIHZub2RlX3RhYmxlW1ZOT0RFX0JVQ0tFVFNdOwogCiAvKgog
ICogR2xvYmFsIGxvY2sgdG8gYWNjZXNzIGFsbCB2bm9kZXMgYW5kIHZub2RlIHRhYmxlLgogICog
SWYgYSB2bm9kZSBpcyBhbHJlYWR5IGxvY2tlZCwgdGhlcmUgaXMgbm8gbmVlZCB0bwogICogbG9j
ayB0aGlzIGdsb2JhbCBsb2NrIHRvIGFjY2VzcyBpbnRlcm5hbCBkYXRhLgogICovCi1zdGF0aWMg
bXV0ZXhfdCB2bm9kZV9sb2NrID0gTVVURVhfSU5JVElBTElaRVI7Ci0jZGVmaW5lIFZOT0RFX0xP
Q0soKQltdXRleF9sb2NrKCZ2bm9kZV9sb2NrKQotI2RlZmluZSBWTk9ERV9VTkxPQ0soKQltdXRl
eF91bmxvY2soJnZub2RlX2xvY2spCi0jZGVmaW5lIFZOT0RFX09XTkVEKCkJbXV0ZXhfb3duZWQo
JnZub2RlX2xvY2spCitzdGF0aWMgc3RydWN0IHVrX211dGV4IHZub2RlX2xvY2sgPSBVS19NVVRF
WF9JTklUSUFMSVpFUih2bm9kZV9sb2NrKTsKKyNkZWZpbmUgVk5PREVfTE9DSygpCXVrX211dGV4
X2xvY2soJnZub2RlX2xvY2spCisjZGVmaW5lIFZOT0RFX1VOTE9DSygpCXVrX211dGV4X3VubG9j
aygmdm5vZGVfbG9jaykKKworLyogVE9ETzogaW1wbGVtZW50IG11dGV4X293bmVkICovCisjZGVm
aW5lIFZOT0RFX09XTkVEKCkJKDEpCisvKiAjZGVmaW5lIFZOT0RFX09XTkVEKCkJbXV0ZXhfb3du
ZWQoJnZub2RlX2xvY2spICovCisKIAogLyoKICAqIEdldCB0aGUgaGFzaCB2YWx1ZSBmcm9tIHRo
ZSBtb3VudCBwb2ludCBhbmQgcGF0aCBuYW1lLgogICogWFhYKGhjaCk6IHJlcGxhY2Ugd2l0aCBh
IGJldHRlciBoYXNoIGZvciA2NC1iaXQgcG9pbnRlcnMuCiAgKi8KLXN0YXRpYyB1X2ludAotdm5f
aGFzaChzdHJ1Y3QgbW91bnQgKm1wLCB1aW50NjRfdCBpbm8pCitzdGF0aWMgdW5zaWduZWQgaW50
IHZuX2hhc2goc3RydWN0IG1vdW50ICptcCwgdWludDY0X3QgaW5vKQogewogCXJldHVybiAoaW5v
IF4gKHVuc2lnbmVkIGxvbmcpbXApICYgKFZOT0RFX0JVQ0tFVFMgLSAxKTsKIH0KQEAgLTExMCwx
NiArMTEzLDE1IEBAIHZuX2xvb2t1cChzdHJ1Y3QgbW91bnQgKm1wLCB1aW50NjRfdCBpbm8pCiB7
CiAJc3RydWN0IHZub2RlICp2cDsKIAotCWFzc2VydChWTk9ERV9PV05FRCgpKTsKLQlMSVNUX0ZP
UkVBQ0godnAsICZ2bm9kZV90YWJsZVt2bl9oYXNoKG1wLCBpbm8pXSwgdl9saW5rKSB7CisJVUtf
QVNTRVJUKFZOT0RFX09XTkVEKCkpOworCXVrX2xpc3RfZm9yX2VhY2hfZW50cnkodnAsICZ2bm9k
ZV90YWJsZVt2bl9oYXNoKG1wLCBpbm8pXSwgdl9saW5rKSB7CiAJCWlmICh2cC0+dl9tb3VudCA9
PSBtcCAmJiB2cC0+dl9pbm8gPT0gaW5vKSB7CiAJCQl2cC0+dl9yZWZjbnQrKzsKLQkJCW11dGV4
X2xvY2soJnZwLT52X2xvY2spOwotCQkJdnAtPnZfbnJsb2NrcysrOworCQkJdWtfbXV0ZXhfbG9j
aygmdnAtPnZfbG9jayk7CiAJCQlyZXR1cm4gdnA7CiAJCX0KIAl9Ci0JcmV0dXJuIG51bGxwdHI7
CQkvKiBub3QgZm91bmQgKi8KKwlyZXR1cm4gTlVMTDsJCS8qIG5vdCBmb3VuZCAqLwogfQogCiAj
aWZkZWYgREVCVUdfVkZTCkBAIC0xMjgsMTAgKzEzMCwxMCBAQCB2bl9wYXRoKHN0cnVjdCB2bm9k
ZSAqdnApCiB7CiAJc3RydWN0IGRlbnRyeSAqZHA7CiAKLQlpZiAoTElTVF9FTVBUWSgmdnAtPnZf
bmFtZXMpID09IDEpIHsKKwlpZiAodWtfbGlzdF9lbXB0eSgmdnAtPnZfbmFtZXMpID09IDEpIHsK
IAkJcmV0dXJuICgiICIpOwogCX0KLQlkcCA9IExJU1RfRklSU1QoJnZwLT52X25hbWVzKTsKKwlk
cCA9IHVrX2xpc3RfZmlyc3RfZW50cnkoJnZwLT52X25hbWVzLCBzdHJ1Y3QgZGVudHJ5LCBkX25h
bWVzX2xpbmspOwogCXJldHVybiAoZHAtPmRfcGF0aCk7CiB9CiAjZW5kaWYKQEAgLTE0MiwxMSAr
MTQ0LDEwIEBAIHZuX3BhdGgoc3RydWN0IHZub2RlICp2cCkKIHZvaWQKIHZuX2xvY2soc3RydWN0
IHZub2RlICp2cCkKIHsKLQlBU1NFUlQodnApOwotCUFTU0VSVCh2cC0+dl9yZWZjbnQgPiAwKTsK
KwlVS19BU1NFUlQodnApOworCVVLX0FTU0VSVCh2cC0+dl9yZWZjbnQgPiAwKTsKIAotCW11dGV4
X2xvY2soJnZwLT52X2xvY2spOwotCXZwLT52X25ybG9ja3MrKzsKKwl1a19tdXRleF9sb2NrKCZ2
cC0+dl9sb2NrKTsKIAlEUFJJTlRGKFZGU0RCX1ZOT0RFLCAoInZuX2xvY2s6ICAgJXNcbiIsIHZu
X3BhdGgodnApKSk7CiB9CiAKQEAgLTE1NiwxMiArMTU3LDEwIEBAIHZuX2xvY2soc3RydWN0IHZu
b2RlICp2cCkKIHZvaWQKIHZuX3VubG9jayhzdHJ1Y3Qgdm5vZGUgKnZwKQogewotCUFTU0VSVCh2
cCk7Ci0JQVNTRVJUKHZwLT52X3JlZmNudCA+IDApOwotCUFTU0VSVCh2cC0+dl9ucmxvY2tzID4g
MCk7CisJVUtfQVNTRVJUKHZwKTsKKwlVS19BU1NFUlQodnAtPnZfcmVmY250ID49IDApOwogCi0J
dnAtPnZfbnJsb2Nrcy0tOwotCW11dGV4X3VubG9jaygmdnAtPnZfbG9jayk7CisJdWtfbXV0ZXhf
dW5sb2NrKCZ2cC0+dl9sb2NrKTsKIAlEUFJJTlRGKFZGU0RCX1ZOT0RFLCAoInZuX2xvY2s6ICAg
JXNcbiIsIHZuX3BhdGgodnApKSk7CiB9CiAKQEAgLTE3Niw3ICsxNzUsNyBAQCB2Z2V0KHN0cnVj
dCBtb3VudCAqbXAsIHVpbnQ2NF90IGlubywgc3RydWN0IHZub2RlICoqdnBwKQogCXN0cnVjdCB2
bm9kZSAqdnA7CiAJaW50IGVycm9yOwogCi0JKnZwcCA9IG51bGxwdHI7CisJKnZwcCA9IE5VTEw7
CiAKIAlEUFJJTlRGKFZGU0RCX1ZOT0RFLCAoInZnZXQgJUxMdVxuIiwgaW5vKSk7CiAKQEAgLTE5
NSwyNiArMTk0LDI0IEBAIHZnZXQoc3RydWN0IG1vdW50ICptcCwgdWludDY0X3QgaW5vLCBzdHJ1
Y3Qgdm5vZGUgKip2cHApCiAJCXJldHVybiAwOwogCX0KIAotCUxJU1RfSU5JVCgmdnAtPnZfbmFt
ZXMpOworCVVLX0lOSVRfTElTVF9IRUFEKCZ2cC0+dl9uYW1lcyk7CiAJdnAtPnZfaW5vID0gaW5v
OwogCXZwLT52X21vdW50ID0gbXA7CiAJdnAtPnZfcmVmY250ID0gMTsKIAl2cC0+dl9vcCA9IG1w
LT5tX29wLT52ZnNfdm5vcHM7Ci0JdnAtPnZfbnJsb2NrcyA9IDA7Ci0KKwl1a19tdXRleF9pbml0
KCZ2cC0+dl9sb2NrKTsKIAkvKgogCSAqIFJlcXVlc3QgdG8gYWxsb2NhdGUgZnMgc3BlY2lmaWMg
ZGF0YSBmb3Igdm5vZGUuCiAJICovCiAJaWYgKChlcnJvciA9IFZGU19WR0VUKG1wLCB2cCkpICE9
IDApIHsKIAkJVk5PREVfVU5MT0NLKCk7Ci0JCWRlbGV0ZSB2cDsKKwkJZnJlZSh2cCk7CiAJCXJl
dHVybiBlcnJvcjsKIAl9CiAJdmZzX2J1c3kodnAtPnZfbW91bnQpOwotCW11dGV4X2xvY2soJnZw
LT52X2xvY2spOwotCXZwLT52X25ybG9ja3MrKzsKKwl1a19tdXRleF9sb2NrKCZ2cC0+dl9sb2Nr
KTsKIAotCUxJU1RfSU5TRVJUX0hFQUQoJnZub2RlX3RhYmxlW3ZuX2hhc2gobXAsIGlubyldLCB2
cCwgdl9saW5rKTsKKwl1a19saXN0X2FkZCgmdnAtPnZfbGluaywgJnZub2RlX3RhYmxlW3ZuX2hh
c2gobXAsIGlubyldKTsKIAlWTk9ERV9VTkxPQ0soKTsKIAogCSp2cHAgPSB2cDsKQEAgLTIyOCw5
ICsyMjUsOCBAQCB2Z2V0KHN0cnVjdCBtb3VudCAqbXAsIHVpbnQ2NF90IGlubywgc3RydWN0IHZu
b2RlICoqdnBwKQogdm9pZAogdnB1dChzdHJ1Y3Qgdm5vZGUgKnZwKQogewotCUFTU0VSVCh2cCk7
Ci0JQVNTRVJUKHZwLT52X25ybG9ja3MgPiAwKTsKLQlBU1NFUlQodnAtPnZfcmVmY250ID4gMCk7
CisJVUtfQVNTRVJUKHZwKTsKKwlVS19BU1NFUlQodnAtPnZfcmVmY250ID4gMCk7CiAJRFBSSU5U
RihWRlNEQl9WTk9ERSwgKCJ2cHV0OiByZWY9JWQgJXNcbiIsIHZwLT52X3JlZmNudCwgdm5fcGF0
aCh2cCkpKTsKIAogCVZOT0RFX0xPQ0soKTsKQEAgLTI0MCw3ICsyMzYsNyBAQCB2cHV0KHN0cnVj
dCB2bm9kZSAqdnApCiAJCXZuX3VubG9jayh2cCk7CiAJCXJldHVybjsKIAl9Ci0JTElTVF9SRU1P
VkUodnAsIHZfbGluayk7CisJdWtfbGlzdF9kZWwoJnZwLT52X2xpbmspOwogCVZOT0RFX1VOTE9D
SygpOwogCiAJLyoKQEAgLTI0OSwxMCArMjQ1LDggQEAgdnB1dChzdHJ1Y3Qgdm5vZGUgKnZwKQog
CWlmICh2cC0+dl9vcC0+dm9wX2luYWN0aXZlKQogCQlWT1BfSU5BQ1RJVkUodnApOwogCXZmc191
bmJ1c3kodnAtPnZfbW91bnQpOwotCXZwLT52X25ybG9ja3MtLTsKLQlBU1NFUlQodnAtPnZfbnJs
b2NrcyA9PSAwKTsKLQltdXRleF91bmxvY2soJnZwLT52X2xvY2spOwotCWRlbGV0ZSB2cDsKKwl1
a19tdXRleF91bmxvY2soJnZwLT52X2xvY2spOworCWZyZWUodnApOwogfQogCiAvKgpAQCAtMjYx
LDggKzI1NSw4IEBAIHZwdXQoc3RydWN0IHZub2RlICp2cCkKIHZvaWQKIHZyZWYoc3RydWN0IHZu
b2RlICp2cCkKIHsKLQlBU1NFUlQodnApOwotCUFTU0VSVCh2cC0+dl9yZWZjbnQgPiAwKTsJLyog
TmVlZCB2Z2V0ICovCisJVUtfQVNTRVJUKHZwKTsKKwlVS19BU1NFUlQodnAtPnZfcmVmY250ID4g
MCk7CS8qIE5lZWQgdmZzY29yZV92Z2V0ICovCiAKIAlWTk9ERV9MT0NLKCk7CiAJRFBSSU5URihW
RlNEQl9WTk9ERSwgKCJ2cmVmOiByZWY9JWRcbiIsIHZwLT52X3JlZmNudCkpOwpAQCAtMjc5LDgg
KzI3Myw4IEBAIHZyZWYoc3RydWN0IHZub2RlICp2cCkKIHZvaWQKIHZyZWxlKHN0cnVjdCB2bm9k
ZSAqdnApCiB7Ci0JQVNTRVJUKHZwKTsKLQlBU1NFUlQodnAtPnZfcmVmY250ID4gMCk7CisJVUtf
QVNTRVJUKHZwKTsKKwlVS19BU1NFUlQodnAtPnZfcmVmY250ID4gMCk7CiAKIAlWTk9ERV9MT0NL
KCk7CiAJRFBSSU5URihWRlNEQl9WTk9ERSwgKCJ2cmVsZTogcmVmPSVkXG4iLCB2cC0+dl9yZWZj
bnQpKTsKQEAgLTI4OSw3ICsyODMsNyBAQCB2cmVsZShzdHJ1Y3Qgdm5vZGUgKnZwKQogCQlWTk9E
RV9VTkxPQ0soKTsKIAkJcmV0dXJuOwogCX0KLQlMSVNUX1JFTU9WRSh2cCwgdl9saW5rKTsKKwl1
a19saXN0X2RlbCgmdnAtPnZfbGluayk7CiAJVk5PREVfVU5MT0NLKCk7CiAKIAkvKgpAQCAtMjk3
LDcgKzI5MSw3IEBAIHZyZWxlKHN0cnVjdCB2bm9kZSAqdnApCiAJICovCiAJVk9QX0lOQUNUSVZF
KHZwKTsKIAl2ZnNfdW5idXN5KHZwLT52X21vdW50KTsKLQlkZWxldGUgdnA7CisJZnJlZSh2cCk7
CiB9CiAKIC8qCkBAIC00NTYsMjEgKzQ1MCwyNSBAQCB2bm9kZV9kdW1wKHZvaWQpCiAJCQkgICAi
VkxOSyAiLCAiVlNPQ0siLCAiVkZJRk8iIH07CiAKIAlWTk9ERV9MT0NLKCk7Ci0Ja3ByaW50Zigi
RHVtcCB2bm9kZVxuIik7Ci0Ja3ByaW50ZigiIHZub2RlICAgIG1vdW50ICAgIHR5cGUgIHJlZmNu
dCBibGtubyAgICBwYXRoXG4iKTsKLQlrcHJpbnRmKCIgLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0g
LS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7CisKKwl1
a19wcl9kZWJ1ZygiRHVtcCB2bm9kZVxuIik7CisJdWtfcHJfZGVidWcoIiB2bm9kZSAgICAgICAg
ICAgIG1vdW50ICAgICAgICAgICAgdHlwZSAgcmVmY250IHBhdGhcbiIpOworCXVrX3ByX2RlYnVn
KCIgLS0tLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOwogCiAJZm9yIChpID0gMDsgaSA8IFZOT0RFX0JV
Q0tFVFM7IGkrKykgewotCSAgICAgICAgTElTVF9GT1JFQUNIKHZwLCAmdm5vZGVfdGFibGVbaV0s
IHZfbGluaykgeworCQl1a19saXN0X2Zvcl9lYWNoX2VudHJ5KHZwLCAmdm5vZGVfdGFibGVbaV0s
IHZfbGluaykgewogCQkJbXAgPSB2cC0+dl9tb3VudDsKIAotCQkJa3ByaW50ZigiICUwOHggJTA4
eCAlcyAlNmQgJThkICVzJXNcbiIsICh1X2xvbmcpdnAsCi0JCQkJKHVfbG9uZyltcCwgdHlwZVt2
cC0+dl90eXBlXSwgdnAtPnZfcmVmY250LAotCQkJCShzdHJsZW4obXAtPm1fcGF0aCkgPT0gMSkg
PyAiXDAiIDogbXAtPm1fcGF0aCwKLQkJCQl2bl9wYXRoKHZwKSk7CisKKwkJCXVrX3ByX2RlYnVn
KCIgJTAxNmx4ICUwMTZseCAlcyAlNmQgJXMlc1xuIiwKKwkJCQkgICAgKHVuc2lnbmVkIGxvbmcp
IHZwLAorCQkJCSAgICAodW5zaWduZWQgbG9uZykgbXAsIHR5cGVbdnAtPnZfdHlwZV0sCisJCQkJ
ICAgIHZwLT52X3JlZmNudCwKKwkJCQkgICAgKHN0cmxlbihtcC0+bV9wYXRoKSA9PSAxKSA/ICJc
MCIgOiBtcC0+bV9wYXRoLAorCQkJCSAgICB2bl9wYXRoKHZwKSk7CiAJCX0KIAl9Ci0Ja3ByaW50
ZigiXG4iKTsKKwl1a19wcl9kZWJ1ZygiXG4iKTsKIAlWTk9ERV9VTkxPQ0soKTsKIH0KICNlbmRp
ZgpAQCAtNTA5LDIwICs1MDcsMjIgQEAgdm5vZGVfaW5pdCh2b2lkKQogCWludCBpOwogCiAJZm9y
IChpID0gMDsgaSA8IFZOT0RFX0JVQ0tFVFM7IGkrKykKLQkJTElTVF9JTklUKCZ2bm9kZV90YWJs
ZVtpXSk7CisJCVVLX0lOSVRfTElTVF9IRUFEKCZ2bm9kZV90YWJsZVtpXSk7CiB9CiAKIHZvaWQg
dm5fYWRkX25hbWUoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IGRlbnRyeSAqZHApCiB7Ci0Jdm5f
bG9jayh2cCk7Ci0JTElTVF9JTlNFUlRfSEVBRCgmdnAtPnZfbmFtZXMsIGRwLCBkX25hbWVzX2xp
bmspOwotCXZuX3VubG9jayh2cCk7CisJLyogVE9ETzogUmUtZW5hYmxlIHRoaXMgY2hlY2sgd2hl
biBwcmVlbXB0aW9uIGFuZC9vciBzbXAgaXMKKwkgKiBoZXJlICovCisJLyogVUtfQVNTRVJUKHVr
X211dGV4X2lzX2xvY2tlZCgmdnAtPnZfbG9jaykpOyAqLworCXVrX2xpc3RfYWRkKCZkcC0+ZF9u
YW1lc19saW5rLCAmdnAtPnZfbmFtZXMpOwogfQogCiB2b2lkIHZuX2RlbF9uYW1lKHN0cnVjdCB2
bm9kZSAqdnAsIHN0cnVjdCBkZW50cnkgKmRwKQogewotCXZuX2xvY2sodnApOwotCUxJU1RfUkVN
T1ZFKGRwLCBkX25hbWVzX2xpbmspOwotCXZuX3VubG9jayh2cCk7CisJLyogVE9ETzogUmUtZW5h
YmxlIHRoaXMgY2hlY2sgd2hlbiBwcmVlbXB0aW9uIGFuZC9vciBzbXAgaXMKKwkgKiBoZXJlICov
CisJLyogVUtfQVNTRVJUKHVrX211dGV4X2lzX2xvY2tlZCgmdnAtPnZfbG9jaykpOyAqLworCXVr
X2xpc3RfZGVsKCZkcC0+ZF9uYW1lc19saW5rKTsKIH0KIAotLSAKMi4xOS4yCgoKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxp
bmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54
ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Thu Feb 07 14:00:02 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 07 Feb 2019 14:00:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grkDi-0006nq-QO; Thu, 07 Feb 2019 14:00:02 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=CXnx=QO=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1grkDh-0006g1-L8
 for minios-devel@lists.xen.org; Thu, 07 Feb 2019 14:00:01 +0000
X-Inumbo-ID: a88552d4-2ae0-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id a88552d4-2ae0-11e9-bc90-bc764e045a96;
 Thu, 07 Feb 2019 14:00:00 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id BE25C104DA7;
 Thu,  7 Feb 2019 14:59:59 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id kTFn9xh5N9Ey; Thu,  7 Feb 2019 14:59:59 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 9F729104DA5
 for <minios-devel@lists.xen.org>; Thu,  7 Feb 2019 14:59:57 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Thu, 7 Feb 2019 14:59:57 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Thu, 7 Feb 2019 14:58:49 +0100
Message-ID: <20190207135901.9122-12-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
References: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v3 11/23] lib/vfscore: introduce
 UK_FS_REGISTER
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhlIG1hY3JvIHJlZ2lzdGVycyB0aGUgZmlsZXN5c3RlbSBpbiB0aGUgc3RhdGljIGFycmF5CgpT
aWduZWQtb2ZmLWJ5OiBZdXJpIFZvbGNoa292IDx5dXJpLnZvbGNoa292QG5lY2xhYi5ldT4KLS0t
CiBsaWIvdmZzY29yZS9NYWtlZmlsZS51ayAgICAgICAgICAgICB8ICAyICsrCiBsaWIvdmZzY29y
ZS9leHRyYS5sZCAgICAgICAgICAgICAgICB8ICA5ICsrKysrKysrKwogbGliL3Zmc2NvcmUvaW5j
bHVkZS92ZnNjb3JlL21vdW50LmggfCAgNiArKysrKy0KIGxpYi92ZnNjb3JlL21vdW50LmMgICAg
ICAgICAgICAgICAgIHwgMjQgKysrKysrKysrKysrKysrKysrLS0tLS0tCiA0IGZpbGVzIGNoYW5n
ZWQsIDM0IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQg
bGliL3Zmc2NvcmUvZXh0cmEubGQKCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9NYWtlZmlsZS51
ayBiL2xpYi92ZnNjb3JlL01ha2VmaWxlLnVrCmluZGV4IDEyNDZhZTUzLi4wNjkzM2Q5NiAxMDA2
NDQKLS0tIGEvbGliL3Zmc2NvcmUvTWFrZWZpbGUudWsKKysrIGIvbGliL3Zmc2NvcmUvTWFrZWZp
bGUudWsKQEAgLTUsMyArNSw1IEBAIENJTkNMVURFUy15ICs9IC1JJChMSUJWRlNDT1JFX0JBU0Up
L2luY2x1ZGUKIExJQlZGU0NPUkVfU1JDUy15ICs9ICQoTElCVkZTQ09SRV9CQVNFKS9mZC5jCiBM
SUJWRlNDT1JFX1NSQ1MteSArPSAkKExJQlZGU0NPUkVfQkFTRSkvZmlsZS5jCiBMSUJWRlNDT1JF
X1NSQ1MteSArPSAkKExJQlZGU0NPUkVfQkFTRSkvc3RkaW8uYworCitFWFRSQV9MRF9TQ1JJUFQt
JChDT05GSUdfTElCVkZTQ09SRSkgKz0gJChMSUJWRlNDT1JFX0JBU0UpL2V4dHJhLmxkClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvZXh0cmEubGQg
Yi9saWIvdmZzY29yZS9leHRyYS5sZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MC4uMTczYjIzNTAKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvdmZzY29yZS9leHRyYS5sZApAQCAt
MCwwICsxLDkgQEAKK1NFQ1RJT05TCit7CisJLnVrX2ZzX2xpc3QgOiB7CisJCVBST1ZJREUodWtf
ZnNsaXN0X3N0YXJ0ID0gLik7CisJCUtFRVAgKCooLnVrX2ZzX2xpc3QpKQorICAgICAgICAgICAg
ICAgIFBST1ZJREUodWtfZnNsaXN0X2VuZCA9IC4pOworCX0KK30KK0lOU0VSVCBBRlRFUiAudGV4
dDsKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9tb3VudC5oIGIvbGli
L3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmgKaW5kZXggN2E2MzhkYmUuLmI0YTA3MzIz
IDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvbW91bnQuaAorKysgYi9s
aWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvbW91bnQuaApAQCAtMTAwLDEyICsxMDAsMTYgQEAg
c3RydWN0IG1vdW50IHsKIC8qCiAgKiBGaWxlc3lzdGVtIHR5cGUgc3dpdGNoIHRhYmxlLgogICov
Ci1zdHJ1Y3QgdmZzc3cgeworc3RydWN0IHZmc2NvcmVfZnNfdHlwZSB7CiAJY29uc3QgY2hhciAg
ICAgICp2c19uYW1lOwkvKiBuYW1lIG9mIGZpbGUgc3lzdGVtICovCiAJaW50CQkoKnZzX2luaXQp
KHZvaWQpOyAvKiBpbml0aWFsaXplIHJvdXRpbmUgKi8KIAlzdHJ1Y3QgdmZzb3BzCSp2c19vcDsJ
CS8qIHBvaW50ZXIgdG8gdmZzIG9wZXJhdGlvbiAqLwogfTsKIAorI2RlZmluZSBVS19GU19SRUdJ
U1RFUihmc3N3KQkJCQkJXAorCXN0YXRpYyB2b2lkIF9fYXR0cmlidXRlKChfX3NlY3Rpb25fXygi
LnVrX2ZzX2xpc3QiKSkpCVwKKwkJKl9fcHRyXyMjZnNzdyBfX3VzZWQgPSAmZnNzdzsJCQkJXAor
CiAvKgogICogT3BlcmF0aW9ucyBzdXBwb3J0ZWQgb24gdmlydHVhbCBmaWxlIHN5c3RlbS4KICAq
LwpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvbW91bnQuYyBiL2xpYi92ZnNjb3JlL21vdW50LmMK
aW5kZXggZTEyYzAwMzMuLmRhZWQ4N2ZhIDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9tb3VudC5j
CisrKyBiL2xpYi92ZnNjb3JlL21vdW50LmMKQEAgLTYyLDIwICs2MiwzMiBAQCBVS19MSVNUX0hF
QUQobW91bnRfbGlzdCk7CiAgKi8KIHN0YXRpYyBzdHJ1Y3QgdWtfbXV0ZXggbW91bnRfbG9jazsK
IAorZXh0ZXJuIGNvbnN0IHN0cnVjdCB2ZnNjb3JlX2ZzX3R5cGUgKnVrX2ZzbGlzdF9zdGFydDsK
K2V4dGVybiBjb25zdCBzdHJ1Y3QgdmZzY29yZV9mc190eXBlICp1a19mc2xpc3RfZW5kOworCisj
ZGVmaW5lIGZvcl9lYWNoX2ZzKGl0ZXIpCQkJXAorCWZvciAoaXRlciA9ICZ1a19mc2xpc3Rfc3Rh
cnQ7CVwKKwkgICAgIGl0ZXIgPCAmdWtfZnNsaXN0X2VuZDsJCVwKKwkgICAgIGl0ZXIrKykKKwog
LyoKICAqIExvb2t1cCBmaWxlIHN5c3RlbS4KICAqLwotc3RhdGljIGNvbnN0IHN0cnVjdCB2ZnNz
dyAqCitzdGF0aWMgY29uc3Qgc3RydWN0IHZmc2NvcmVfZnNfdHlwZSAqCiBmc19nZXRmcyhjb25z
dCBjaGFyICpuYW1lKQogewotCWNvbnN0IHN0cnVjdCB2ZnNzdyAqZnM7CisJY29uc3Qgc3RydWN0
IHZmc2NvcmVfZnNfdHlwZSAqZnMgPSBOVUxMLCAqKl9fZnM7CisKKwlmb3JfZWFjaF9mcyhfX2Zz
KSB7CisJCWZzID0gKl9fZnM7CisJCWlmIChmcyA9PSBOVUxMKQorCQkJY29udGludWU7CiAKLQlm
b3IgKGZzID0gdmZzc3c7IGZzLT52c19uYW1lOyBmcysrKSB7CiAJCWlmICghc3RybmNtcChuYW1l
LCBmcy0+dnNfbmFtZSwgRlNNQVhOQU1FUykpCiAJCQlicmVhazsKIAl9Ci0JaWYgKCFmcy0+dnNf
bmFtZSkKLQkJcmV0dXJuIG51bGxwdHI7CisJaWYgKCFmcyB8fCAhZnMtPnZzX25hbWUpCisJCXJl
dHVybiBOVUxMOwogCXJldHVybiBmczsKIH0KIApAQCAtOTksNyArMTExLDcgQEAgaW50IGRldmlj
ZV9jbG9zZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiBpbnQKIHN5c19tb3VudChjb25zdCBjaGFyICpk
ZXYsIGNvbnN0IGNoYXIgKmRpciwgY29uc3QgY2hhciAqZnNuYW1lLCBpbnQgZmxhZ3MsIGNvbnN0
IHZvaWQgKmRhdGEpCiB7Ci0JY29uc3Qgc3RydWN0IHZmc3N3ICpmczsKKwljb25zdCBzdHJ1Y3Qg
dmZzY29yZV9mc190eXBlICpmczsKIAlzdHJ1Y3QgbW91bnQgKm1wOwogCXN0cnVjdCBkZXZpY2Ug
KmRldmljZTsKIAlzdHJ1Y3QgZGVudHJ5ICpkcF9jb3ZlcmVkID0gTlVMTDsKLS0gCjIuMTkuMgoK
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1k
ZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBz
Oi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Thu Feb 07 14:00:03 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 07 Feb 2019 14:00:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grkDi-0006nw-T6; Thu, 07 Feb 2019 14:00:02 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=CXnx=QO=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1grkDh-0006jS-P9
 for minios-devel@lists.xen.org; Thu, 07 Feb 2019 14:00:01 +0000
X-Inumbo-ID: a6f96e46-2ae0-11e9-8c22-f319adbb376c
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id a6f96e46-2ae0-11e9-8c22-f319adbb376c;
 Thu, 07 Feb 2019 13:59:58 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 2612FF205F;
 Thu,  7 Feb 2019 14:59:57 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id YYfmyy6bRcAf; Thu,  7 Feb 2019 14:59:57 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id E9C01F202D
 for <minios-devel@lists.xen.org>; Thu,  7 Feb 2019 14:59:54 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Thu, 7 Feb 2019 14:59:54 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Thu, 7 Feb 2019 14:58:48 +0100
Message-ID: <20190207135901.9122-11-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
References: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v3 10/23] lib/vfscore: add utility
 funcs&defs to support imported
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2ZpbGUuaCAgfCAgMiArKwogbGliL3Zmc2Nv
cmUvaW5jbHVkZS92ZnNjb3JlL2ZzLmggICAgfCAyOCArKysrKysrKysrKysrKysrKysrKysrKysK
IGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5oIHwgMjEgKysrKysrKysrKysrKysr
KysrCiBsaWIvdmZzY29yZS9tYWluLmMgICAgICAgICAgICAgICAgICB8IDMzICsrKysrKysrKysr
KysrKysrKysrKysrKysrKysrCiBsaWIvdmZzY29yZS9tb3VudC5jICAgICAgICAgICAgICAgICB8
IDE3ICsrKysrKysrKysrKysrKwogbGliL3Zmc2NvcmUvdmZzLmggICAgICAgICAgICAgICAgICAg
fCAgOSArKysrKysrKwogbGliL3Zmc2NvcmUvdm5vZGUuYyAgICAgICAgICAgICAgICAgfCAgMiAr
KwogNyBmaWxlcyBjaGFuZ2VkLCAxMTIgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0
IGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9mcy5oCgpkaWZmIC0tZ2l0IGEvbGliL3Zmc2Nv
cmUvaW5jbHVkZS92ZnNjb3JlL2ZpbGUuaCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9m
aWxlLmgKaW5kZXggOTk4NTcwNmYuLjNkOGQ2NjdmIDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9p
bmNsdWRlL3Zmc2NvcmUvZmlsZS5oCisrKyBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9m
aWxlLmgKQEAgLTYxLDYgKzYxLDggQEAgdm9pZCB2ZnNjb3JlX3B1dF9mZChpbnQgZmQpOwogdm9p
ZCB2ZnNjb3JlX2luc3RhbGxfZmQoaW50IGZkLCBzdHJ1Y3QgdmZzY29yZV9maWxlICpmaWxlKTsK
IHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKnZmc2NvcmVfZ2V0X2ZpbGUoaW50IGZkKTsKIAorI2RlZmlu
ZSBGT0ZfT0ZGU0VUICAweDA4MDAgICAgLyogVXNlIHRoZSBvZmZzZXQgaW4gdWlvIGFyZ3VtZW50
ICovCisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9saWIvdmZz
Y29yZS9pbmNsdWRlL3Zmc2NvcmUvZnMuaCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9m
cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi4xYmI0ZTI0ZAotLS0gL2Rl
di9udWxsCisrKyBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9mcy5oCkBAIC0wLDAgKzEs
MjggQEAKKyNpZm5kZWYgX1ZGU0NPUkVfRlNfSF8KKyNkZWZpbmUgX1ZGU0NPUkVfRlNfSF8KKwor
I2luY2x1ZGUgPGZjbnRsLmg+CisvKgorICogS2VybmVsIGVuY29kaW5nIG9mIG9wZW4gbW9kZTsg
c2VwYXJhdGUgcmVhZCBhbmQgd3JpdGUgYml0cyB0aGF0IGFyZQorICogaW5kZXBlbmRlbnRseSB0
ZXN0YWJsZTogMSBncmVhdGVyIHRoYW4gdGhlIGFib3ZlLgorICovCisjZGVmaW5lIEZSRUFEICAg
ICAgICAgICAweDAwMDAwMDAxCisjZGVmaW5lIEZXUklURSAgICAgICAgICAweDAwMDAwMDAyCisK
KyNkZWZpbmUgQUxMUEVSTVMgKFNfSVNVSUR8U19JU0dJRHxTX0lTVlRYfFNfSVJXWFV8U19JUldY
R3xTX0lSV1hPKQorCitzdGF0aWMgaW5saW5lIGludCB2ZnNjb3JlX2ZmbGFncyhpbnQgb2ZsYWdz
KQoreworICAgIGludCBydyA9IG9mbGFncyAmIE9fQUNDTU9ERTsKKyAgICBvZmxhZ3MgJj0gfk9f
QUNDTU9ERTsKKyAgICByZXR1cm4gKHJ3ICsgMSkgfCBvZmxhZ3M7Cit9CisKK3N0YXRpYyBpbmxp
bmUgaW50IHZmc2NvcmVfb2ZsYWdzKGludCBmZmxhZ3MpCit7CisgICAgaW50IHJ3ID0gZmZsYWdz
ICYgKEZSRUFEfEZXUklURSk7CisgICAgZmZsYWdzICY9IH4oRlJFQUR8RldSSVRFKTsKKyAgICBy
ZXR1cm4gKHJ3IC0gMSkgfCBmZmxhZ3M7Cit9CisKKyNlbmRpZiAvKiBfVkZTQ09SRV9GU19IXyAq
LwpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Zub2RlLmggYi9saWIv
dmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUuaAppbmRleCBhNGRiOWMxMy4uNDE1NWE3ZGIg
MTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5oCisrKyBiL2xp
Yi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5oCkBAIC0xMDgsNiArMTA4LDI3IEBAIHN0
cnVjdCB2YXR0ciB7CiAJb2ZmX3QJCXZhX3NpemU7CiB9OwogCisvKiBzdHJ1Y3QgdmF0dHIgaXMg
dXNlZCB0byBjb25zb2xpZGF0ZSBtdWx0aXBsZSB0eXBlcyBvZiBmaWxlCisgKiBhdHRyaWJ1dGVz
IGZvciBwYXNzaW5nIHRoZW0gYXMgZnVuY3Rpb24gcGFyYW1ldGVycy4gTWFjcm9zIGJlbGxvdwor
ICogYXJlIHNlbGVjdG9ycywgb2Ygd2hhdCB0eXBlcyBvZiBhdHRyaWJ1dGVzIGFyZSB2YWxpZCBp
biBwYXJ0aWN1bGFyCisgKiBzdHJ1Y3QgdmF0dHIqLworI2RlZmluZQlBVF9UWVBFCQkweDAwMDAx
CisjZGVmaW5lCUFUX01PREUJCTB4MDAwMDIKKyNkZWZpbmUJQVRfVUlECQkweDAwMDA0CisjZGVm
aW5lCUFUX0dJRAkJMHgwMDAwOAorI2RlZmluZQlBVF9GU0lECQkweDAwMDEwCisjZGVmaW5lCUFU
X05PREVJRAkweDAwMDIwCisjZGVmaW5lCUFUX05MSU5LCTB4MDAwNDAKKyNkZWZpbmUJQVRfU0la
RQkJMHgwMDA4MAorI2RlZmluZQlBVF9BVElNRQkweDAwMTAwCisjZGVmaW5lCUFUX01USU1FCTB4
MDAyMDAKKyNkZWZpbmUJQVRfQ1RJTUUJMHgwMDQwMAorI2RlZmluZQlBVF9SREVWCQkweDAwODAw
CisjZGVmaW5lCUFUX0JMS1NJWkUJMHgwMTAwMAorI2RlZmluZQlBVF9OQkxPQ0tTCTB4MDIwMDAK
KyNkZWZpbmUJQVRfU0VRCQkweDA4MDAwCisjZGVmaW5lCUFUX1hWQVRUUgkweDEwMDAwCisKIC8q
CiAgKiAgTW9kZXMuCiAgKi8KZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL21haW4uYyBiL2xpYi92
ZnNjb3JlL21haW4uYwppbmRleCA4MmU0NTkxNy4uMTE2NGIzMGIgMTAwNjQ0Ci0tLSBhL2xpYi92
ZnNjb3JlL21haW4uYworKysgYi9saWIvdmZzY29yZS9tYWluLmMKQEAgLTUyLDggKzUyLDQxIEBA
CiBpbnQJdmZzX2RlYnVnID0gVkZTREJfRkxBR1M7CiAjZW5kaWYKIAorLyogVGhpcyBtYWNybyBp
cyBmb3IgZGVmaW5pbmcgYW4gYWxpYXMgb2YgdGhlIDY0Yml0IHZlcnNpb24gb2YgYQorICogc3lz
Y2FsbCB0byB0aGUgcmVndWxhciBvbmUuIEl0IHNlYW1zIHdlIGNhbiBtYWtlIHRoZSBsb2dpYyB3
aGljaCBpcworICogY2hvb3NpbmcgdGhlIHJpZ2h0IGNhbGwgc2ltcGxlciB0aGVuIGluIGNvbW1v
biBsaWJjLgorICoKKyAqIExldCdzIGtlZXAgTEZTNjQgY2FsbHMganVzdCBpbiBjYXNlIGluIGZ1
dHVyZSB3ZSB3aWxsIGZpbmQgb3V0IHRoYXQKKyAqIHRoZXNlIGFsaWFzZXMgYXJlIG5lZWQuCisg
Ki8KKyNkZWZpbmUgTEZTNjQoeCkKKwogc3RhdGljIG1vZGVfdCBnbG9iYWxfdW1hc2sgPSBTX0lX
R1JQIHwgU19JV09USDsKIAorLyogVE9ETzogdGhlc2UgbWFjcm8gZG9lcyBub3QgYmVsb25nIGhl
cmUKKyAqIE5PVEU6IGJvcnJvd2VkIGZyb20gT1N2CisgKi8KKyNkZWZpbmUgRE9fT05DRSh0aGlu
ZykgZG8gewkJCQlcCisJc3RhdGljIGludCBfeDsJCQkJCVwKKwlpZiAoIV94KSB7CQkJCQlcCisJ
ICAgIF94ID0gMTsJCQkJCVwKKwkgICAgdGhpbmcgOwkJCQkJXAorCX0JCQkJCQlcCit9IHdoaWxl
ICgwKQorI2RlZmluZSBXQVJOX1NUVUJCRUQoKSBET19PTkNFKHVrX3ByX3dhcm4oIiVzKCkgc3R1
YmJlZFxuIiwgX19mdW5jX18pKQorCisjZGVmaW5lIE5PX1NZUyhkZWNsKSBkZWNsIHsJCQkJXAor
ICAgIERPX09OQ0UodWtfcHJfd2FybigiJXMgbm90IGltcGxlbWVudGVkXG4iLCBfX2Z1bmNfXykp
OwlcCisgICAgZXJybm8gPSBFTk9TWVM7CQkJCQlcCisgICAgcmV0dXJuIC0xOwkJCQkJCVwKK30K
Kworc3RhdGljIGlubGluZSBpbnQgbGliY19lcnJvcihpbnQgZXJyKQoreworICAgIGVycm5vID0g
ZXJyOworICAgIHJldHVybiAtMTsKK30KKwogc3RhdGljIGlubGluZSBtb2RlX3QgYXBwbHlfdW1h
c2sobW9kZV90IG1vZGUpCiB7CiAJcmV0dXJuIG1vZGUgJiB+dWthcmNoX2xvYWRfbigmZ2xvYmFs
X3VtYXNrKTsKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL21vdW50LmMgYi9saWIvdmZzY29yZS9t
b3VudC5jCmluZGV4IDdkMDgzZDZmLi5lMTJjMDAzMyAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUv
bW91bnQuYworKysgYi9saWIvdmZzY29yZS9tb3VudC5jCkBAIC03OSw2ICs3OSwyMyBAQCBmc19n
ZXRmcyhjb25zdCBjaGFyICpuYW1lKQogCXJldHVybiBmczsKIH0KIAoraW50IGRldmljZV9vcGVu
KGNvbnN0IGNoYXIgKm5hbWUsIGludCBtb2RlLCBzdHJ1Y3QgZGV2aWNlICoqZGV2cCkKK3sKKwko
dm9pZCkgbmFtZTsKKwkodm9pZCkgbW9kZTsKKwkodm9pZCkgZGV2cDsKKworCXVrX3ByX2Vycigi
ZGV2aWNlIG9wZW4gaXMgbm90IGltcGxlbWVudGVkICglcylcbiIsIG5hbWUpOworCXJldHVybiAw
OworfQorCitpbnQgZGV2aWNlX2Nsb3NlKHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwkodm9pZCkg
ZGV2OworCVVLX0NSQVNIKCJub3QgaW1wbGVtZW50ZWQiKTsKKwlyZXR1cm4gMDsKK30KKwogaW50
CiBzeXNfbW91bnQoY29uc3QgY2hhciAqZGV2LCBjb25zdCBjaGFyICpkaXIsIGNvbnN0IGNoYXIg
KmZzbmFtZSwgaW50IGZsYWdzLCBjb25zdCB2b2lkICpkYXRhKQogewpkaWZmIC0tZ2l0IGEvbGli
L3Zmc2NvcmUvdmZzLmggYi9saWIvdmZzY29yZS92ZnMuaAppbmRleCAxOWY4YWM4Ny4uNjA5ZGMx
ZjUgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL3Zmcy5oCisrKyBiL2xpYi92ZnNjb3JlL3Zmcy5o
CkBAIC0xNTEsNCArMTUxLDEzIEBAIHZvaWQJIHZub2RlX2R1bXAodm9pZCk7CiB2b2lkCSBtb3Vu
dF9kdW1wKHZvaWQpOwogI2VuZGlmCiAKK3N0YXRpYyB2b2lkIF9fYXR0cmlidXRlX18oKHVudXNl
ZCkpIHVrX3Zmc2NvcmVfdHJhY2UoaW50IGZvbyBfX3VudXNlZCwgLi4uKQoreworfQorCisjZGVm
aW5lIFRSQUNFUE9JTlQodHJhY2VfbmFtZSwgZm10LCAuLi4pCQkJXAorCXN0YXRpYyB2b2lkIHRy
YWNlX25hbWUoX19WQV9BUkdTX18gKSBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQsIGFsaWFzKCJ1a192
ZnNjb3JlX3RyYWNlIikpKQorCisKKwogI2VuZGlmIC8qICFfVkZTX0ggKi8KZGlmZiAtLWdpdCBh
L2xpYi92ZnNjb3JlL3Zub2RlLmMgYi9saWIvdmZzY29yZS92bm9kZS5jCmluZGV4IGEyZjQ1NTk2
Li44NmU2ZDljNyAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvdm5vZGUuYworKysgYi9saWIvdmZz
Y29yZS92bm9kZS5jCkBAIC00OCw2ICs0OCw4IEBACiAjaW5jbHVkZSA8dmZzY29yZS92bm9kZS5o
PgogI2luY2x1ZGUgInZmcy5oIgogCisjZGVmaW5lIFNfQkxLU0laRSA1MTIKKwogZW51bSB2dHlw
ZSBpZnRvdnRfdGFiWzE2XSA9IHsKIAlWTk9OLCBWRklGTywgVkNIUiwgVk5PTiwgVkRJUiwgVk5P
TiwgVkJMSywgVk5PTiwKIAlWUkVHLCBWTk9OLCBWTE5LLCBWTk9OLCBWU09DSywgVk5PTiwgVk5P
TiwgVkJBRCwKLS0gCjIuMTkuMgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3Rz
LnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0
aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Thu Feb 07 14:00:08 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 07 Feb 2019 14:00:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grkDn-0007FZ-Uz; Thu, 07 Feb 2019 14:00:07 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=CXnx=QO=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1grkDn-0007BC-2M
 for minios-devel@lists.xen.org; Thu, 07 Feb 2019 14:00:07 +0000
X-Inumbo-ID: aa151576-2ae0-11e9-b351-1b3c384848e4
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id aa151576-2ae0-11e9-b351-1b3c384848e4;
 Thu, 07 Feb 2019 14:00:03 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 5BC15F205F;
 Thu,  7 Feb 2019 15:00:02 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 84VnRurJmqBB; Thu,  7 Feb 2019 15:00:02 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 2D503F202D
 for <minios-devel@lists.xen.org>; Thu,  7 Feb 2019 15:00:00 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Thu, 7 Feb 2019 14:59:59 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Thu, 7 Feb 2019 14:58:50 +0100
Message-ID: <20190207135901.9122-13-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
References: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v3 12/23] lib/vfscore: prefix
 exported functions
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmggfCAgNCArKy0tCiBsaWIvdmZz
Y29yZS9pbmNsdWRlL3Zmc2NvcmUvcHJleC5oICB8ICA2ICsrKy0tLQogbGliL3Zmc2NvcmUvaW5j
bHVkZS92ZnNjb3JlL3Vpby5oICAgfCAgMiArLQogbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3Jl
L3Zub2RlLmggfCAxMCArKysrKy0tLS0tCiBsaWIvdmZzY29yZS9tb3VudC5jICAgICAgICAgICAg
ICAgICB8ICA5ICsrKystLS0tLQogbGliL3Zmc2NvcmUvc3Vicl91aW8uYyAgICAgICAgICAgICAg
fCAgMiArLQogbGliL3Zmc2NvcmUvdmZzLmggICAgICAgICAgICAgICAgICAgfCAgMiArLQogbGli
L3Zmc2NvcmUvdm5vZGUuYyAgICAgICAgICAgICAgICAgfCAxMiArKysrKystLS0tLS0KIDggZmls
ZXMgY2hhbmdlZCwgMjMgaW5zZXJ0aW9ucygrKSwgMjQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0
IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmggYi9saWIvdmZzY29yZS9pbmNs
dWRlL3Zmc2NvcmUvbW91bnQuaAppbmRleCBiNGEwNzMyMy4uYTEyMjdjYmUgMTAwNjQ0Ci0tLSBh
L2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9tb3VudC5oCisrKyBiL2xpYi92ZnNjb3JlL2lu
Y2x1ZGUvdmZzY29yZS9tb3VudC5oCkBAIC0xMzksMTIgKzEzOSwxMiBAQCB0eXBlZGVmIGludCAo
KnZmc29wX3N0YXRmc190KShzdHJ1Y3QgbW91bnQgKiwgc3RydWN0IHN0YXRmcyAqKTsKIAogI2Rl
ZmluZSBWRlNfTlVMTAkJICAgICgodm9pZCAqKXZmc19udWxsKQogCi1pbnQJdmZzX251bGxvcCh2
b2lkKTsKK2ludAl2ZnNjb3JlX251bGxvcCh2b2lkKTsKIGludAl2ZnNfZWludmFsKHZvaWQpOwog
CiB2b2lkCSB2ZnNfYnVzeShzdHJ1Y3QgbW91bnQgKm1wKTsKIHZvaWQJIHZmc191bmJ1c3koc3Ry
dWN0IG1vdW50ICptcCk7CiAKLXZvaWQJIHJlbGVhc2VfbXBfZGVudHJpZXMoc3RydWN0IG1vdW50
ICptcCk7Cit2b2lkCSB2ZnNjb3JlX3JlbGVhc2VfbXBfZGVudHJpZXMoc3RydWN0IG1vdW50ICpt
cCk7CiAKICNlbmRpZgkvKiAhX1NZU19NT1VOVF9IXyAqLwpkaWZmIC0tZ2l0IGEvbGliL3Zmc2Nv
cmUvaW5jbHVkZS92ZnNjb3JlL3ByZXguaCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9w
cmV4LmgKaW5kZXggOGEzMDZkNTQuLjIyNjFiMjE2IDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9p
bmNsdWRlL3Zmc2NvcmUvcHJleC5oCisrKyBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9w
cmV4LmgKQEAgLTMzLDggKzMzLDggQEAKICAqIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFD
VEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCiAgKi8KIAotI2lmbmRlZiBfT1NWX1BSRVhfSAot
I2RlZmluZSBfT1NWX1BSRVhfSCAxCisjaWZuZGVmIF9VS19QUkVYX0gKKyNkZWZpbmUgX1VLX1BS
RVhfSCAxCiAKIAogI2luY2x1ZGUgPHVuaXN0ZC5oPgpAQCAtNTIsNCArNTIsNCBAQCBzaXplX3Qg
c3RybGNweShjaGFyICpkc3QsIGNvbnN0IGNoYXIgKnNyYywgc2l6ZV90IHNpeik7CiAKIHZvaWQg
c3lzX3BhbmljKGNvbnN0IGNoYXIgKik7CiAKLSNlbmRpZiAvKiBfT1NWX1BSRVhfSCAqLworI2Vu
ZGlmIC8qIF9VS19QUkVYX0ggKi8KZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZz
Y29yZS91aW8uaCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS91aW8uaAppbmRleCA4YWQx
ZTNmYi4uYzczNGZhMTkgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS91
aW8uaAorKysgYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdWlvLmgKQEAgLTU3LDYgKzU3
LDYgQEAgc3RydWN0IHVpbyB7CiAJZW51bQl1aW9fcncgdWlvX3J3OwkJLyogb3BlcmF0aW9uICov
CiB9OwogCi1pbnQJdWlvbW92ZSh2b2lkICpjcCwgaW50IG4sIHN0cnVjdCB1aW8gKnVpbyk7Citp
bnQJdmZzY29yZV91aW9tb3ZlKHZvaWQgKmNwLCBpbnQgbiwgc3RydWN0IHVpbyAqdWlvKTsKIAog
I2VuZGlmIC8qICFfVUlPX0hfICovCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zm
c2NvcmUvdm5vZGUuaCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5oCmluZGV4
IDQxNTVhN2RiLi4wOGI4ZTU2MiAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNj
b3JlL3Zub2RlLmgKKysrIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Zub2RlLmgKQEAg
LTIyOSwxMCArMjI5LDEwIEBAIHN0cnVjdCB2bm9wcyB7CiAjZGVmaW5lIFZPUF9SRUFETElOSyhW
UCwgVSkgICAgICAgICgoVlApLT52X29wLT52b3BfcmVhZGxpbmspKFZQLCBVKQogI2RlZmluZSBW
T1BfU1lNTElOSyhEVlAsIE9QLCBOUCkgICAoKERWUCktPnZfb3AtPnZvcF9zeW1saW5rKShEVlAs
IE9QLCBOUCkKIAotaW50CSB2b3BfbnVsbG9wKHZvaWQpOwotaW50CSB2b3BfZWludmFsKHZvaWQp
OwotaW50CSB2b3BfZXBlcm0odm9pZCk7Ci1pbnQJIHZvcF9lcm9mcyh2b2lkKTsKK2ludAkgdmZz
Y29yZV92b3BfbnVsbG9wKHZvaWQpOworaW50CSB2ZnNjb3JlX3ZvcF9laW52YWwodm9pZCk7Citp
bnQJIHZmc2NvcmVfdm9wX2VwZXJtKHZvaWQpOworaW50CSB2ZnNjb3JlX3ZvcF9lcm9mcyh2b2lk
KTsKIHN0cnVjdCB2bm9kZSAqdm5fbG9va3VwKHN0cnVjdCBtb3VudCAqLCB1aW50NjRfdCk7CiB2
b2lkCSB2bl9sb2NrKHN0cnVjdCB2bm9kZSAqKTsKIHZvaWQJIHZuX3VubG9jayhzdHJ1Y3Qgdm5v
ZGUgKik7CkBAIC0yNDAsNyArMjQwLDcgQEAgaW50CSB2bl9zdGF0KHN0cnVjdCB2bm9kZSAqLCBz
dHJ1Y3Qgc3RhdCAqKTsKIGludAkgdm5fc2V0dGltZXMoc3RydWN0IHZub2RlICosIHN0cnVjdCB0
aW1lc3BlY1syXSk7CiBpbnQJIHZuX3NldG1vZGUoc3RydWN0IHZub2RlICosIG1vZGVfdCBtb2Rl
KTsKIGludAkgdm5fYWNjZXNzKHN0cnVjdCB2bm9kZSAqLCBpbnQpOwotaW50CSB2Z2V0KHN0cnVj
dCBtb3VudCAqLCB1aW50NjRfdCBpbm8sIHN0cnVjdCB2bm9kZSAqKnZwcCk7CitpbnQJIHZmc2Nv
cmVfdmdldChzdHJ1Y3QgbW91bnQgKiwgdWludDY0X3QgaW5vLCBzdHJ1Y3Qgdm5vZGUgKip2cHAp
Owogdm9pZAkgdnB1dChzdHJ1Y3Qgdm5vZGUgKik7CiB2b2lkCSB2cmVmKHN0cnVjdCB2bm9kZSAq
KTsKIHZvaWQJIHZyZWxlKHN0cnVjdCB2bm9kZSAqKTsKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3Jl
L21vdW50LmMgYi9saWIvdmZzY29yZS9tb3VudC5jCmluZGV4IGRhZWQ4N2ZhLi42OTQxNzVmMSAx
MDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvbW91bnQuYworKysgYi9saWIvdmZzY29yZS9tb3VudC5j
CkBAIC0yNDIsNyArMjQyLDcgQEAgc3lzX21vdW50KGNvbnN0IGNoYXIgKmRldiwgY29uc3QgY2hh
ciAqZGlyLCBjb25zdCBjaGFyICpmc25hbWUsIGludCBmbGFncywgY29uc3QKIH0KIAogdm9pZAot
cmVsZWFzZV9tcF9kZW50cmllcyhzdHJ1Y3QgbW91bnQgKm1wKQordmZzY29yZV9yZWxlYXNlX21w
X2RlbnRyaWVzKHN0cnVjdCBtb3VudCAqbXApCiB7CiAJLyogRGVjcmVtZW50IHJlZmVyZWNlIGNv
dW50IG9mIHJvb3Qgdm5vZGUgKi8KIAlpZiAobXAtPm1fY292ZXJlZCkgewpAQCAtNDY2LDggKzQ2
Niw3IEBAIHZmc191bmJ1c3koc3RydWN0IG1vdW50ICptcCkKIAl1a2FyY2hfZGVjKCZtcC0+bV9j
b3VudCk7CiB9CiAKLWludAotdmZzX251bGxvcCh2b2lkKQoraW50IHZmc2NvcmVfbnVsbG9wKHZv
aWQpCiB7CiAJcmV0dXJuIDA7CiB9CkBAIC00ODAsMTIgKzQ3OSwxMiBAQCB2ZnNfZWludmFsKHZv
aWQpCiAKICNpZmRlZiBERUJVR19WRlMKIHZvaWQKLW1vdW50X2R1bXAodm9pZCkKK3Zmc2NvcmVf
bW91bnRfZHVtcCh2b2lkKQogewogCXN0cnVjdCBtb3VudCAqbXA7CiAJdWtfbXV0ZXhfbG9jaygm
bW91bnRfbG9jayk7CiAKLQl1a19wcl9kZWJ1ZygibW91bnRfZHVtcFxuIik7CisJdWtfcHJfZGVi
dWcoInZmc2NvcmVfbW91bnRfZHVtcFxuIik7CiAJdWtfcHJfZGVidWcoImRldiAgICAgIGNvdW50
IHJvb3RcbiIpOwogCXVrX3ByX2RlYnVnKCItLS0tLS0tLSAtLS0tLSAtLS0tLS0tLVxuIik7CiAK
ZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3N1YnJfdWlvLmMgYi9saWIvdmZzY29yZS9zdWJyX3Vp
by5jCmluZGV4IGQ4ZTlkMWJlLi5hYTE3NjA3NCAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvc3Vi
cl91aW8uYworKysgYi9saWIvdmZzY29yZS9zdWJyX3Vpby5jCkBAIC00Niw3ICs0Niw3IEBACiAj
aW5jbHVkZSA8dmZzY29yZS91aW8uaD4KIAogaW50Ci11aW9tb3ZlKHZvaWQgKmNwLCBpbnQgbiwg
c3RydWN0IHVpbyAqdWlvKQordmZzY29yZV91aW9tb3ZlKHZvaWQgKmNwLCBpbnQgbiwgc3RydWN0
IHVpbyAqdWlvKQogewogCVVLX0FTU0VSVCh1aW8tPnVpb19ydyA9PSBVSU9fUkVBRCB8fCB1aW8t
PnVpb19ydyA9PSBVSU9fV1JJVEUpOwogCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS92ZnMuaCBi
L2xpYi92ZnNjb3JlL3Zmcy5oCmluZGV4IDYwOWRjMWY1Li45NGZlODlhNSAxMDA2NDQKLS0tIGEv
bGliL3Zmc2NvcmUvdmZzLmgKKysrIGIvbGliL3Zmc2NvcmUvdmZzLmgKQEAgLTE0OCw3ICsxNDgs
NyBAQCB2b2lkIGRlbnRyeV9pbml0KHZvaWQpOwogCiAjaWZkZWYgREVCVUdfVkZTCiB2b2lkCSB2
bm9kZV9kdW1wKHZvaWQpOwotdm9pZAkgbW91bnRfZHVtcCh2b2lkKTsKK3ZvaWQJIHZmc2NvcmVf
bW91bnRfZHVtcCh2b2lkKTsKICNlbmRpZgogCiBzdGF0aWMgdm9pZCBfX2F0dHJpYnV0ZV9fKCh1
bnVzZWQpKSB1a192ZnNjb3JlX3RyYWNlKGludCBmb28gX191bnVzZWQsIC4uLikKZGlmZiAtLWdp
dCBhL2xpYi92ZnNjb3JlL3Zub2RlLmMgYi9saWIvdmZzY29yZS92bm9kZS5jCmluZGV4IDg2ZTZk
OWM3Li5lOWUwNDBhYSAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvdm5vZGUuYworKysgYi9saWIv
dmZzY29yZS92bm9kZS5jCkBAIC02Niw3ICs2Niw3IEBAIGludCB2dHRvaWZfdGFiWzEwXSA9IHsK
ICAqIC0tLS0tLS0tLS0gLS0tLS0tLS0tIC0tLS0tLS0tLS0KICAqIHZuX2xvY2sgICAgICogICAg
ICAgIExvY2sKICAqIHZuX3VubG9jayAgICogICAgICAgIFVubG9jawotICogdmdldCAgICAgICAg
MSAgICAgICAgTG9jaworICogdmZzY29yZV92Z2V0ICAgICAgICAxICAgICAgICBMb2NrCiAgKiB2
cHV0ICAgICAgIC0xICAgICAgICBVbmxvY2sKICAqIHZyZWYgICAgICAgKzEgICAgICAgICoKICAq
IHZyZWxlICAgICAgLTEgICAgICAgICoKQEAgLTE3Miw3ICsxNzIsNyBAQCB2bl91bmxvY2soc3Ry
dWN0IHZub2RlICp2cCkKICAqIFJldHVybnMgMSBpZiB2bm9kZSB3YXMgZm91bmQgaW4gY2FjaGU7
IG90aGVyd2lzZSByZXR1cm5zIDAuCiAgKi8KIGludAotdmdldChzdHJ1Y3QgbW91bnQgKm1wLCB1
aW50NjRfdCBpbm8sIHN0cnVjdCB2bm9kZSAqKnZwcCkKK3Zmc2NvcmVfdmdldChzdHJ1Y3QgbW91
bnQgKm1wLCB1aW50NjRfdCBpbm8sIHN0cnVjdCB2bm9kZSAqKnZwcCkKIHsKIAlzdHJ1Y3Qgdm5v
ZGUgKnZwOwogCWludCBlcnJvcjsKQEAgLTQ3NiwyNSArNDc2LDI1IEBAIHZub2RlX2R1bXAodm9p
ZCkKICNlbmRpZgogCiBpbnQKLXZvcF9udWxsb3Aodm9pZCkKK3Zmc2NvcmVfdm9wX251bGxvcCh2
b2lkKQogewogCXJldHVybiAwOwogfQogCiBpbnQKLXZvcF9laW52YWwodm9pZCkKK3Zmc2NvcmVf
dm9wX2VpbnZhbCh2b2lkKQogewogCXJldHVybiBFSU5WQUw7CiB9CiAKIGludAotdm9wX2VwZXJt
KHZvaWQpCit2ZnNjb3JlX3ZvcF9lcGVybSh2b2lkKQogewogCXJldHVybiBFUEVSTTsKIH0KIAog
aW50Ci12b3BfZXJvZnModm9pZCkKK3Zmc2NvcmVfdm9wX2Vyb2ZzKHZvaWQpCiB7CiAJcmV0dXJu
IEVST0ZTOwogfQotLSAKMi4xOS4yCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlz
dHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xp
c3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Thu Feb 07 14:00:11 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 07 Feb 2019 14:00:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grkDr-0007IU-0g; Thu, 07 Feb 2019 14:00:11 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=CXnx=QO=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1grkDp-0007I6-KB
 for minios-devel@lists.xen.org; Thu, 07 Feb 2019 14:00:09 +0000
X-Inumbo-ID: ad488fe6-2ae0-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id ad488fe6-2ae0-11e9-bc90-bc764e045a96;
 Thu, 07 Feb 2019 14:00:08 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id B4924F205F;
 Thu,  7 Feb 2019 15:00:07 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id vGVNeoB3--WD; Thu,  7 Feb 2019 15:00:07 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 89B6CF202D
 for <minios-devel@lists.xen.org>; Thu,  7 Feb 2019 15:00:05 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Thu, 7 Feb 2019 15:00:05 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Thu, 7 Feb 2019 14:58:52 +0100
Message-ID: <20190207135901.9122-15-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
References: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v3 14/23] lib/vfscore: keep vnode
 locked during drele call
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogbGliL3Zmc2NvcmUvbG9va3VwLmMgICB8IDIgKy0KIGxpYi92ZnNjb3JlL3N5c2NhbGxzLmMg
fCAyICstCiAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkK
CmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9sb29rdXAuYyBiL2xpYi92ZnNjb3JlL2xvb2t1cC5j
CmluZGV4IDFlMmM0MDA1Li5jYmMwMmI1MiAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvbG9va3Vw
LmMKKysrIGIvbGliL3Zmc2NvcmUvbG9va3VwLmMKQEAgLTE4MSw4ICsxODEsOCBAQCBuYW1laShj
b25zdCBjaGFyICpwYXRoLCBzdHJ1Y3QgZGVudHJ5ICoqZHBwKQogCQkJCS8qIEZpbmQgYSB2bm9k
ZSBpbiB0aGlzIGRpcmVjdG9yeS4gKi8KIAkJCQllcnJvciA9IFZPUF9MT09LVVAoZHZwLCBuYW1l
LCAmdnApOwogCQkJCWlmIChlcnJvcikgewotCQkJCQl2bl91bmxvY2soZHZwKTsKIAkJCQkJZHJl
bGUoZGRwKTsKKwkJCQkJdm5fdW5sb2NrKGR2cCk7CiAJCQkJCXJldHVybiBlcnJvcjsKIAkJCQl9
CiAKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3N5c2NhbGxzLmMgYi9saWIvdmZzY29yZS9zeXNj
YWxscy5jCmluZGV4IGZhMDQ5OGU3Li4zMzAwNDk2MCAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUv
c3lzY2FsbHMuYworKysgYi9saWIvdmZzY29yZS9zeXNjYWxscy5jCkBAIC0xMzIsOCArMTMyLDgg
QEAgc3lzX29wZW4oY2hhciAqcGF0aCwgaW50IGZsYWdzLCBtb2RlX3QgbW9kZSwgc3RydWN0IHZm
c2NvcmVfZmlsZSAqKmZwcCkKIAkJCW1vZGUgJj0gflNfSUZNVDsKIAkJCW1vZGUgfD0gU19JRlJF
RzsKIAkJCWVycm9yID0gVk9QX0NSRUFURShkZHAtPmRfdm5vZGUsIGZpbGVuYW1lLCBtb2RlKTsK
LQkJCXZuX3VubG9jayhkZHAtPmRfdm5vZGUpOwogCQkJZHJlbGUoZGRwKTsKKwkJCXZuX3VubG9j
ayhkZHAtPmRfdm5vZGUpOwogCiAJCQlpZiAoZXJyb3IpCiAJCQkJcmV0dXJuIGVycm9yOwotLSAK
Mi4xOS4yCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
TWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5v
cmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1k
ZXZlbA==

From minios-devel-bounces@lists.xenproject.org Thu Feb 07 14:00:11 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 07 Feb 2019 14:00:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grkDr-0007Ia-3H; Thu, 07 Feb 2019 14:00:11 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=CXnx=QO=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1grkDq-0007IE-84
 for minios-devel@lists.xen.org; Thu, 07 Feb 2019 14:00:10 +0000
X-Inumbo-ID: abd0ad94-2ae0-11e9-842d-bf05abe6fe75
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id abd0ad94-2ae0-11e9-842d-bf05abe6fe75;
 Thu, 07 Feb 2019 14:00:06 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 45378104DA3;
 Thu,  7 Feb 2019 15:00:05 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id evYM3xKxY7JX; Thu,  7 Feb 2019 15:00:05 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id F2832104DA5
 for <minios-devel@lists.xen.org>; Thu,  7 Feb 2019 15:00:02 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Thu, 7 Feb 2019 15:00:02 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Thu, 7 Feb 2019 14:58:51 +0100
Message-ID: <20190207135901.9122-14-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
References: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v3 13/23] lib/vfscore: introduce
 fget, fdrop, fdalloc
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkIGluIHRoZSBpbXBvcnRlZCBjb2RlLCB3aGljaCBpcyBu
b3QgZW5hYmxlZAp5ZXQuIFRoaXMgcmVxdWlyZWQgdG8gZXhwYW5kIGZ1bmN0aW9uYWxpdHkgb2Yg
dmZzY29yZV9pbnN0YWxsX2ZkIGFuZApmcmllbmRzIHdpdGggbG9ja2luZyBhbmQgcmVmZXJlbmNl
IGNvdW50aW5nLgoKU2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBu
ZWNsYWIuZXU+Ci0tLQogbGliL3Zmc2NvcmUvZmQuYyAgICAgICAgICAgICAgICAgICB8IDY3ICsr
KysrKysrKysrKysrKysrKysrKysrKysrKystLQogbGliL3Zmc2NvcmUvZmlsZS5jICAgICAgICAg
ICAgICAgICB8IDIyICsrKysrKysrKy0KIGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9maWxl
LmggfCAgOSArKystCiAzIGZpbGVzIGNoYW5nZWQsIDkyIGluc2VydGlvbnMoKyksIDYgZGVsZXRp
b25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvZmQuYyBiL2xpYi92ZnNjb3JlL2ZkLmMK
aW5kZXggNmMyMjA0MjguLjlkMmFmZTVhIDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9mZC5jCisr
KyBiL2xpYi92ZnNjb3JlL2ZkLmMKQEAgLTc0LDIwICs3NCw0MSBAQCBleGl0OgogCiB2b2lkIHZm
c2NvcmVfcHV0X2ZkKGludCBmZCkKIHsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCiAJVUtfQVNT
RVJUKGZkIDwgKGludCkgRkRUQUJMRV9NQVhfRklMRVMpOwogCS8qIEN1cnJlbnRseSBpdCBpcyBu
b3QgYWxsb3dlZCB0byBmcmVlIHN0ZChpbnxvdXR8ZXJyKSAqLwogCVVLX0FTU0VSVChmZCA+IDIp
OwogCi0JX191a19jbGVhcl9iaXQoZmQsICZmZHRhYmxlLmJpdG1hcCk7CisJZmxhZ3MgPSB1a3Bs
YXRfbGNwdV9zYXZlX2lycWYoKTsKKwlfX3VrX2NsZWFyX2JpdChmZCwgJmZkdGFibGUuYml0bWFw
KTtcCisJZmR0YWJsZS5maWxlc1tmZF0gPSBOVUxMOworCXVrcGxhdF9sY3B1X3Jlc3RvcmVfaXJx
ZihmbGFncyk7CiB9CiAKLXZvaWQgdmZzY29yZV9pbnN0YWxsX2ZkKGludCBmZCwgc3RydWN0IHZm
c2NvcmVfZmlsZSAqZmlsZSkKK2ludCB2ZnNjb3JlX2luc3RhbGxfZmQoaW50IGZkLCBzdHJ1Y3Qg
dmZzY29yZV9maWxlICpmaWxlKQogewotCVVLX0FTU0VSVChmZCA8IChpbnQpIEZEVEFCTEVfTUFY
X0ZJTEVTKTsKLQlVS19BU1NFUlQoZmlsZSk7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwlzdHJ1
Y3QgdmZzY29yZV9maWxlICpvcmlnOworCisJaWYgKChmZCA+PSAoaW50KSBGRFRBQkxFX01BWF9G
SUxFUykgfHwgKCFmaWxlKSkKKwkJcmV0dXJuIC1FQkFERjsKKworCWZob2xkKGZpbGUpOwogCiAJ
ZmlsZS0+ZmQgPSBmZDsKKworCWZsYWdzID0gdWtwbGF0X2xjcHVfc2F2ZV9pcnFmKCk7CisJb3Jp
ZyA9IGZkdGFibGUuZmlsZXNbZmRdOwogCWZkdGFibGUuZmlsZXNbZmRdID0gZmlsZTsKKwl1a3Bs
YXRfbGNwdV9yZXN0b3JlX2lycWYoZmxhZ3MpOworCisJZmRyb3AoZmlsZSk7CisKKwlpZiAob3Jp
ZykKKwkJZmRyb3Aob3JpZyk7CisKKwlyZXR1cm4gMDsKIH0KIAogc3RydWN0IHZmc2NvcmVfZmls
ZSAqdmZzY29yZV9nZXRfZmlsZShpbnQgZmQpCkBAIC0xMDEsMTIgKzEyMiw1MCBAQCBzdHJ1Y3Qg
dmZzY29yZV9maWxlICp2ZnNjb3JlX2dldF9maWxlKGludCBmZCkKIAlpZiAoIShmZHRhYmxlLmJp
dG1hcCAmICgodWludDY0X3QpIDEgPDwgZmQpKSkKIAkJZ290byBleGl0OwogCXJldCA9IGZkdGFi
bGUuZmlsZXNbZmRdOworCWZob2xkKHJldCk7CiAKIGV4aXQ6CiAJdWtwbGF0X2xjcHVfcmVzdG9y
ZV9pcnFmKGZsYWdzKTsKIAlyZXR1cm4gcmV0OwogfQogCitpbnQgZmdldChpbnQgZmQsIHN0cnVj
dCB2ZnNjb3JlX2ZpbGUgKipvdXRfZnApCit7CisJaW50IHJldCA9IDA7CisJc3RydWN0IHZmc2Nv
cmVfZmlsZSAqZnAgPSB2ZnNjb3JlX2dldF9maWxlKGZkKTsKKworCWlmICghZnApCisJCXJldCA9
IEVCQURGOworCWVsc2UKKwkJKm91dF9mcCA9IGZwOworCisJcmV0dXJuIHJldDsKK30KKworaW50
IGZkYWxsb2Moc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAsIGludCAqbmV3ZmQpCit7CisJaW50IGZk
LCByZXQgPSAwOworCisJZmhvbGQoZnApOworCisJZmQgPSB2ZnNjb3JlX2FsbG9jX2ZkKCk7CisJ
aWYgKGZkIDwgMCkgeworCQlyZXQgPSBmZDsKKwkJZ290byBleGl0OworCX0KKworCXJldCA9IHZm
c2NvcmVfaW5zdGFsbF9mZChmZCwgZnApOworCWlmIChyZXQpCisJCWZkcm9wKGZwKTsKKwllbHNl
CisJCSpuZXdmZCA9IGZkOworCitleGl0OgorCXJldHVybiByZXQ7Cit9CisKKworLyogVE9ETzog
bW92ZSB0aGlzIGNvbnN0cnVjdG9yIHRvIG1haW4uYyAqLwogX19jb25zdHJ1Y3RvciBzdGF0aWMg
dm9pZCBmZHRhYmxlX2luaXQodm9pZCkKIHsKIAltZW1zZXQoJmZkdGFibGUsIDAsIHNpemVvZihm
ZHRhYmxlKSk7CmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9maWxlLmMgYi9saWIvdmZzY29yZS9m
aWxlLmMKaW5kZXggZTdhZGYxYTMuLjBmNmRmYTkzIDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9m
aWxlLmMKKysrIGIvbGliL3Zmc2NvcmUvZmlsZS5jCkBAIC0zOCw3ICszOCw3IEBACiAjaW5jbHVk
ZSA8dWsvcHJpbnQuaD4KICNpbmNsdWRlIDx2ZnNjb3JlL2ZpbGUuaD4KICNpbmNsdWRlIDx1ay9h
c3NlcnQuaD4KLQorI2luY2x1ZGUgPHVrL2FyY2gvYXRvbWljLmg+CiAKIGludCBjbG9zZShpbnQg
ZmQpCiB7CkBAIC05NSwzICs5NSwyMyBAQCBzc2l6ZV90IHJlYWQoaW50IGZkLCB2b2lkICpidWYs
IHNpemVfdCBjb3VudCkKIAogCXJldHVybiBmaWxlLT5mb3BzLT5yZWFkKGZpbGUsIGJ1ZiwgY291
bnQpOwogfQorCisvKiBUT0RPOiByZW1vdmUgc3R1YiAqLworI2RlZmluZSB2ZnNfY2xvc2UoZnAp
ICgwKQorCitpbnQgZmRyb3Aoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnApCit7CisJaW50IHJldCA9
IDA7CisJaW50IHByZXYgPSB1a2FyY2hfZGVjKCZmcC0+Zl9jb3VudCk7CisKKwlpZiAocHJldiA9
PSAwKQorCQlVS19DUkFTSCgiVW5iYWxhbmNlZCBmaG9sZC9mZHJvcCIpOworCisJaWYgKHByZXYg
PT0gMSkKKwkJcmV0ID0gdmZzX2Nsb3NlKGZwKTsKKwlyZXR1cm4gcmV0OworfQordm9pZCBmaG9s
ZChzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCkKK3sKKwl1a2FyY2hfaW5jKCZmcC0+Zl9jb3VudCk7
Cit9CmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZmlsZS5oIGIvbGli
L3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2ZpbGUuaAppbmRleCAzZDhkNjY3Zi4uODRlYjM1ZDcg
MTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9maWxlLmgKKysrIGIvbGli
L3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2ZpbGUuaApAQCAtNTMsMTQgKzUzLDIxIEBAIHN0cnVj
dCB2ZnNjb3JlX2ZvcHMgewogCiBzdHJ1Y3QgdmZzY29yZV9maWxlIHsKIAlpbnQgZmQ7CisJaW50
CQlmX2NvdW50OwkvKiByZWZlcmVuY2UgY291bnQgKi8KIAljb25zdCBzdHJ1Y3QgdmZzY29yZV9m
b3BzICpmb3BzOwogfTsKIAogaW50IHZmc2NvcmVfYWxsb2NfZmQodm9pZCk7CiB2b2lkIHZmc2Nv
cmVfcHV0X2ZkKGludCBmZCk7Ci12b2lkIHZmc2NvcmVfaW5zdGFsbF9mZChpbnQgZmQsIHN0cnVj
dCB2ZnNjb3JlX2ZpbGUgKmZpbGUpOworaW50IHZmc2NvcmVfaW5zdGFsbF9mZChpbnQgZmQsIHN0
cnVjdCB2ZnNjb3JlX2ZpbGUgKmZpbGUpOwogc3RydWN0IHZmc2NvcmVfZmlsZSAqdmZzY29yZV9n
ZXRfZmlsZShpbnQgZmQpOwogCisvKgorICogRmlsZSBkZXNjcmlwdG9ycyByZWZlcmVuY2UgY291
bnQKKyAqLwordm9pZCBmaG9sZChzdHJ1Y3QgdmZzY29yZV9maWxlKiBmcCk7CitpbnQgZmRyb3Ao
c3RydWN0IHZmc2NvcmVfZmlsZSogZnApOworCiAjZGVmaW5lIEZPRl9PRkZTRVQgIDB4MDgwMCAg
ICAvKiBVc2UgdGhlIG9mZnNldCBpbiB1aW8gYXJndW1lbnQgKi8KIAogI2lmZGVmIF9fY3BsdXNw
bHVzCi0tIAoyLjE5LjIKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5w
cm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8v
bWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Thu Feb 07 14:00:14 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 07 Feb 2019 14:00:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grkDu-0007Jy-6L; Thu, 07 Feb 2019 14:00:14 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=CXnx=QO=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1grkDt-0007Jc-FL
 for minios-devel@lists.xen.org; Thu, 07 Feb 2019 14:00:13 +0000
X-Inumbo-ID: aed914e0-2ae0-11e9-898b-c30db532739e
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id aed914e0-2ae0-11e9-898b-c30db532739e;
 Thu, 07 Feb 2019 14:00:11 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 62140104DA6;
 Thu,  7 Feb 2019 15:00:10 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id DEqslJQegnBN; Thu,  7 Feb 2019 15:00:10 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 4220C104DA3
 for <minios-devel@lists.xen.org>; Thu,  7 Feb 2019 15:00:08 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Thu, 7 Feb 2019 15:00:07 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Thu, 7 Feb 2019 14:58:53 +0100
Message-ID: <20190207135901.9122-16-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
References: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v3 15/23] lib/vfscore: add necessary
 field in vfscore_file
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2ZpbGUuaCB8IDQgKysrKwogMSBmaWxlIGNo
YW5nZWQsIDQgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUv
dmZzY29yZS9maWxlLmggYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZmlsZS5oCmluZGV4
IDg0ZWIzNWQ3Li5iNzMyMGNjMSAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNj
b3JlL2ZpbGUuaAorKysgYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZmlsZS5oCkBAIC01
Myw3ICs1MywxMSBAQCBzdHJ1Y3QgdmZzY29yZV9mb3BzIHsKIAogc3RydWN0IHZmc2NvcmVfZmls
ZSB7CiAJaW50IGZkOworCWludAkJZl9mbGFnczsJLyogb3BlbiBmbGFncyAqLwogCWludAkJZl9j
b3VudDsJLyogcmVmZXJlbmNlIGNvdW50ICovCisJb2ZmX3QJCWZfb2Zmc2V0OwkvKiBjdXJyZW50
IHBvc2l0aW9uIGluIGZpbGUgKi8KKwl2b2lkCQkqZl9kYXRhOyAgICAgICAgLyogZmlsZSBkZXNj
cmlwdG9yIHNwZWNpZmljIGRhdGEgKi8KKwlzdHJ1Y3QgZGVudHJ5ICAgKmZfZGVudHJ5OwogCWNv
bnN0IHN0cnVjdCB2ZnNjb3JlX2ZvcHMgKmZvcHM7CiB9OwogCi0tIAoyLjE5LjIKCgpfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFp
bGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3Rz
LnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Thu Feb 07 14:00:17 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 07 Feb 2019 14:00:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grkDx-0007LC-80; Thu, 07 Feb 2019 14:00:17 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=CXnx=QO=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1grkDw-0007Kp-82
 for minios-devel@lists.xen.org; Thu, 07 Feb 2019 14:00:16 +0000
X-Inumbo-ID: b075d0b8-2ae0-11e9-8a8a-970c42751620
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id b075d0b8-2ae0-11e9-8a8a-970c42751620;
 Thu, 07 Feb 2019 14:00:13 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 138B7F205F;
 Thu,  7 Feb 2019 15:00:13 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id yp9cPJjVsqiR; Thu,  7 Feb 2019 15:00:12 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id DF489F202D
 for <minios-devel@lists.xen.org>; Thu,  7 Feb 2019 15:00:10 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Thu, 7 Feb 2019 15:00:10 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Thu, 7 Feb 2019 14:58:54 +0100
Message-ID: <20190207135901.9122-17-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
References: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v3 16/23] lib/vfscore: remove
 _KERNEL ifdefs
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

QWxsIHRoaXMgY29kZSBpcyBydW5uaW5nIGluIGtlcm5lbAoKU2lnbmVkLW9mZi1ieTogWXVyaSBW
b2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0tLQogbGliL3Zmc2NvcmUvaW5jbHVk
ZS92ZnNjb3JlL21vdW50LmggfCA1IC0tLS0tCiBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUv
dm5vZGUuaCB8IDMgLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDggZGVsZXRpb25zKC0pCgpkaWZmIC0t
Z2l0IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmggYi9saWIvdmZzY29yZS9p
bmNsdWRlL3Zmc2NvcmUvbW91bnQuaAppbmRleCBhMTIyN2NiZS4uZmFjN2Q5NTQgMTAwNjQ0Ci0t
LSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9tb3VudC5oCisrKyBiL2xpYi92ZnNjb3Jl
L2luY2x1ZGUvdmZzY29yZS9tb3VudC5oCkBAIC0zNyw4ICszNyw2IEBACiAjaW5jbHVkZSA8dWsv
bGlzdC5oPgogI2luY2x1ZGUgPHZmc2NvcmUvdm5vZGUuaD4KIAotI2lmZGVmIF9LRVJORUwKLQog
LyoKICAqIE1vdW50IGRhdGEKICAqLwpAQCAtNTYsNyArNTQsNiBAQCBzdHJ1Y3QgbW91bnQgewog
CWZzaWRfdCAJCW1fZnNpZDsgCS8qIGlkIHRoYXQgdW5pcXVlbHkgaWRlbnRpZmllcyB0aGUgZnMg
Ki8KIH07CiAKLSNlbmRpZgogCiAvKgogICogTW91bnQgZmxhZ3MuCkBAIC05NSw4ICs5Miw2IEBA
IHN0cnVjdCBtb3VudCB7CiAgKi8KICNkZWZpbmUJTU5UX1ZJU0ZMQUdNQVNLCTB4MDAwMGZmZmYK
IAotI2lmZGVmIF9LRVJORUwKLQogLyoKICAqIEZpbGVzeXN0ZW0gdHlwZSBzd2l0Y2ggdGFibGUu
CiAgKi8KZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5oIGIv
bGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Zub2RlLmgKaW5kZXggMDhiOGU1NjIuLmZlMTRi
YzgyIDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUuaAorKysg
Yi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUuaApAQCAtMzMsOCArMzMsNiBAQAog
I2lmbmRlZiBfU1lTX1ZOT0RFX0hfCiAjZGVmaW5lIF9TWVNfVk5PREVfSF8KIAotI2lmZGVmIF9L
RVJORUwKLQogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAjaW5jbHVkZSA8ZGlyZW50Lmg+CiAKQEAg
LTI2MSw2ICsyNTksNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgdm5vZGVfcGFnZXJfc2V0c2l6ZShz
dHJ1Y3Qgdm5vZGUgKnZwLCBvZmZfdCBzaXplKQogCXZwLT52X3NpemUgPSBzaXplOwogfQogCi0j
ZW5kaWYKIAogI2VuZGlmIC8qICFfU1lTX1ZOT0RFX0hfICovCi0tIAoyLjE5LjIKCgpfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFp
bGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3Rz
LnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Thu Feb 07 14:00:19 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 07 Feb 2019 14:00:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grkDz-0007Lz-Jd; Thu, 07 Feb 2019 14:00:19 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=CXnx=QO=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1grkDy-0007Li-EG
 for minios-devel@lists.xen.org; Thu, 07 Feb 2019 14:00:18 +0000
X-Inumbo-ID: b20988ca-2ae0-11e9-8c34-0bb597e2618e
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id b20988ca-2ae0-11e9-8c34-0bb597e2618e;
 Thu, 07 Feb 2019 14:00:16 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id BBCCC104DA6;
 Thu,  7 Feb 2019 15:00:15 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id pkSRj0HbN24o; Thu,  7 Feb 2019 15:00:15 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 9F377104DA3
 for <minios-devel@lists.xen.org>; Thu,  7 Feb 2019 15:00:13 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Thu, 7 Feb 2019 15:00:13 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Thu, 7 Feb 2019 14:58:55 +0100
Message-ID: <20190207135901.9122-18-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
References: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v3 17/23] lib/vfscore: introduce
 fdclose
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogbGliL3Zmc2NvcmUvbWFpbi5jIHwgMTkgKysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNo
YW5nZWQsIDE5IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9tYWluLmMg
Yi9saWIvdmZzY29yZS9tYWluLmMKaW5kZXggMTE2NGIzMGIuLjBmZjhkMzkwIDEwMDY0NAotLS0g
YS9saWIvdmZzY29yZS9tYWluLmMKKysrIGIvbGliL3Zmc2NvcmUvbWFpbi5jCkBAIC0yMDUsNiAr
MjA1LDI1IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2Nsb3NlLCAiJWQiLCBpbnQpOwogVFJBQ0VQ
T0lOVCh0cmFjZV92ZnNfY2xvc2VfcmV0LCAiIik7CiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19jbG9z
ZV9lcnIsICIlZCIsIGludCk7CiAKK2ludCBmZGNsb3NlKGludCBmZCkKK3sKKwlzdHJ1Y3QgdmZz
Y29yZV9maWxlICpmcDsKKworCWZwID0gdmZzY29yZV9nZXRfZmlsZShmZCk7CisJaWYgKCFmcCkK
KwkJcmV0dXJuIEVCQURGOworCisJdmZzY29yZV9wdXRfZmQoZmQpOworCS8qIHZmc2NvcmVfZ2V0
X2ZpbGUgaW5jcmVhc2VzIHRoZSBmX2NvdW50LiBUaGUgZmlyc3QgZmRyb3AgaXMKKwkgKiB0byBk
ZWNyZW1lbnQgaXQgYmFjay4gVGhlIHNlY29uZCBpcyBhbiBhY3R1YWwgcmVkdWNpbmcgd2UKKwkg
KiBhcmUgc3VwcG9zZWQgdG8gZG8gd2hpbGUgcGVyZm9ybWluZyBmZGNsb3NlKCkKKwkgKi8KKwlm
ZHJvcChmcCk7CisJZmRyb3AoZnApOworCisJcmV0dXJuIDA7Cit9CisKIGludCBjbG9zZShpbnQg
ZmQpCiB7CiAJaW50IGVycm9yOwotLSAKMi4xOS4yCgoKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3Mt
ZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9t
YWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Thu Feb 07 14:00:22 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 07 Feb 2019 14:00:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grkE2-0007N1-Le; Thu, 07 Feb 2019 14:00:22 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=CXnx=QO=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1grkE0-0007MV-MX
 for minios-devel@lists.xen.org; Thu, 07 Feb 2019 14:00:20 +0000
X-Inumbo-ID: b39cb086-2ae0-11e9-81f2-132848ec1df3
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id b39cb086-2ae0-11e9-81f2-132848ec1df3;
 Thu, 07 Feb 2019 14:00:19 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 606F0F205F;
 Thu,  7 Feb 2019 15:00:18 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 9KxI2cn7QLbK; Thu,  7 Feb 2019 15:00:18 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 3B326F202D
 for <minios-devel@lists.xen.org>; Thu,  7 Feb 2019 15:00:16 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Thu, 7 Feb 2019 15:00:15 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Thu, 7 Feb 2019 14:58:56 +0100
Message-ID: <20190207135901.9122-19-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
References: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v3 18/23] lib/vfscore: add necessary
 internal prototypes
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogbGliL3Zmc2NvcmUvdmZzLmggfCA5ICsrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDkgaW5z
ZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3Zmcy5oIGIvbGliL3Zmc2NvcmUv
dmZzLmgKaW5kZXggOTRmZTg5YTUuLjRhMWNmYTlmIDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS92
ZnMuaAorKysgYi9saWIvdmZzY29yZS92ZnMuaApAQCAtMTQ2LDYgKzE0NiwxNSBAQCB2b2lkIGRy
ZWYoc3RydWN0IGRlbnRyeSAqZHApOwogdm9pZCBkcmVsZShzdHJ1Y3QgZGVudHJ5ICpkcCk7CiB2
b2lkIGRlbnRyeV9pbml0KHZvaWQpOwogCitpbnQgdmZzX2Nsb3NlKHN0cnVjdCB2ZnNjb3JlX2Zp
bGUgKmZwKTsKK2ludCB2ZnNfcmVhZChzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCwgc3RydWN0IHVp
byAqdWlvLCBpbnQgZmxhZ3MpOworaW50IHZmc193cml0ZShzdHJ1Y3QgdmZzY29yZV9maWxlICpm
cCwgc3RydWN0IHVpbyAqdWlvLCBpbnQgZmxhZ3MpOworaW50IHZmc19pb2N0bChzdHJ1Y3QgdmZz
Y29yZV9maWxlICpmcCwgdW5zaWduZWQgbG9uZyBjb20sIHZvaWQgKmRhdGEpOworaW50IHZmc19z
dGF0KHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwLCBzdHJ1Y3Qgc3RhdCAqc3QpOworCitpbnQgZmdl
dChpbnQgZmQsIHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKipvdXRfZnApOworaW50IGZkYWxsb2Moc3Ry
dWN0IHZmc2NvcmVfZmlsZSAqZnAsIGludCAqbmV3ZmQpOworCiAjaWZkZWYgREVCVUdfVkZTCiB2
b2lkCSB2bm9kZV9kdW1wKHZvaWQpOwogdm9pZAkgdmZzY29yZV9tb3VudF9kdW1wKHZvaWQpOwot
LSAKMi4xOS4yCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVj
dC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlv
cy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Thu Feb 07 14:00:27 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 07 Feb 2019 14:00:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grkE7-0007Op-No; Thu, 07 Feb 2019 14:00:27 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=CXnx=QO=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1grkE6-0007OD-GR
 for minios-devel@lists.xen.org; Thu, 07 Feb 2019 14:00:26 +0000
X-Inumbo-ID: b6c98a68-2ae0-11e9-b03c-d7d3a5f618e3
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id b6c98a68-2ae0-11e9-b03c-d7d3a5f618e3;
 Thu, 07 Feb 2019 14:00:24 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id ABA55F205F;
 Thu,  7 Feb 2019 15:00:23 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id mGglAw6xhcO1; Thu,  7 Feb 2019 15:00:23 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 82108F202D
 for <minios-devel@lists.xen.org>; Thu,  7 Feb 2019 15:00:21 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Thu, 7 Feb 2019 15:00:21 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Thu, 7 Feb 2019 14:58:58 +0100
Message-ID: <20190207135901.9122-21-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
References: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v3 20/23] lib/vfscore: add main
 constructor
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogbGliL3Zmc2NvcmUvbWFpbi5jIHwgMTEgKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAx
MSBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvbWFpbi5jIGIvbGliL3Zm
c2NvcmUvbWFpbi5jCmluZGV4IGQ3YWJhNzU2Li43YWNjZjkzMSAxMDA2NDQKLS0tIGEvbGliL3Zm
c2NvcmUvbWFpbi5jCisrKyBiL2xpYi92ZnNjb3JlL21haW4uYwpAQCAtMjA0NSwzICsyMDQ1LDE0
IEBAIGludCBjaHJvb3QoY29uc3QgY2hhciAqcGF0aCBfX3VudXNlZCkKIAllcnJubyA9IEVOT1NZ
UzsKIAlyZXR1cm4gLTE7CiB9CisKK3N0YXRpYyBzdHJ1Y3QgdGFzayBfbWFpbl90YXNrX2ltcGw7
CitfX2NvbnN0cnVjdG9yIHN0YXRpYyB2b2lkIHZmc2NvcmVfaW5pdCh2b2lkKQoreworCW1lbXNl
dCgmX21haW5fdGFza19pbXBsLCAwLCBzaXplb2YoX21haW5fdGFza19pbXBsKSk7CisJc3RyY3B5
KF9tYWluX3Rhc2tfaW1wbC50X2N3ZCwgIi8iKTsKKwltYWluX3Rhc2sgPSAmX21haW5fdGFza19p
bXBsOworCisJdm5vZGVfaW5pdCgpOworCWxvb2t1cF9pbml0KCk7Cit9Ci0tIAoyLjE5LjIKCgpf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2
ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczov
L2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Thu Feb 07 14:00:28 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 07 Feb 2019 14:00:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grkE8-0007PS-Pd; Thu, 07 Feb 2019 14:00:28 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=CXnx=QO=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1grkE7-0007OZ-5K
 for minios-devel@lists.xen.org; Thu, 07 Feb 2019 14:00:27 +0000
X-Inumbo-ID: b54ae2c7-2ae0-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id b54ae2c7-2ae0-11e9-bc90-bc764e045a96;
 Thu, 07 Feb 2019 14:00:22 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 19288104DA9;
 Thu,  7 Feb 2019 15:00:21 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 5AVHEQXQ7ikq; Thu,  7 Feb 2019 15:00:20 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id D2528104DA8
 for <minios-devel@lists.xen.org>; Thu,  7 Feb 2019 15:00:18 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Thu, 7 Feb 2019 15:00:18 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Thu, 7 Feb 2019 14:58:57 +0100
Message-ID: <20190207135901.9122-20-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
References: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v3 19/23] lib/vfscore: fix compiler
 complains
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Zub2RlLmggfCAgMiArLQogbGliL3Zmc2Nv
cmUvbWFpbi5jICAgICAgICAgICAgICAgICAgfCAyNCArKysrKysrKysrKystLS0tLS0tLS0tLS0K
IGxpYi92ZnNjb3JlL3N5c2NhbGxzLmMgICAgICAgICAgICAgIHwgIDggKysrKy0tLS0KIGxpYi92
ZnNjb3JlL3Rhc2suYyAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGxpYi92ZnNjb3JlL3Zub2Rl
LmMgICAgICAgICAgICAgICAgIHwgIDggKysrKy0tLS0KIDUgZmlsZXMgY2hhbmdlZCwgMjIgaW5z
ZXJ0aW9ucygrKSwgMjIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvaW5j
bHVkZS92ZnNjb3JlL3Zub2RlLmggYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUu
aAppbmRleCBmZTE0YmM4Mi4uMTM0OGY1NzkgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2luY2x1
ZGUvdmZzY29yZS92bm9kZS5oCisrKyBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9k
ZS5oCkBAIC0xNjcsNyArMTY3LDcgQEAgdHlwZWRlZglpbnQgKCp2bm9wX3RydW5jYXRlX3QpCShz
dHJ1Y3Qgdm5vZGUgKiwgb2ZmX3QpOwogdHlwZWRlZglpbnQgKCp2bm9wX2xpbmtfdCkgICAgICAo
c3RydWN0IHZub2RlICosIHN0cnVjdCB2bm9kZSAqLCBjaGFyICopOwogdHlwZWRlZiBpbnQgKCp2
bm9wX2NhY2hlX3QpIChzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHZmc2NvcmVfZmlsZSAqLCBzdHJ1
Y3QgdWlvICopOwogdHlwZWRlZiBpbnQgKCp2bm9wX2ZhbGxvY2F0ZV90KSAoc3RydWN0IHZub2Rl
ICosIGludCwgb2ZmX3QsIG9mZl90KTsKLXR5cGVkZWYgaW50ICgqdm5vcF9yZWFkbGlua190KSAg
KHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgdWlvICopOwordHlwZWRlZiBzc2l6ZV90ICgqdm5vcF9y
ZWFkbGlua190KSAgKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgdWlvICopOwogdHlwZWRlZiBpbnQg
KCp2bm9wX3N5bWxpbmtfdCkgICAoc3RydWN0IHZub2RlICosIGNoYXIgKiwgY2hhciAqKTsKIAog
LyoKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL21haW4uYyBiL2xpYi92ZnNjb3JlL21haW4uYwpp
bmRleCAwZmY4ZDM5MC4uZDdhYmE3NTYgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL21haW4uYwor
KysgYi9saWIvdmZzY29yZS9tYWluLmMKQEAgLTI0Niw4ICsyNDYsNyBAQCBUUkFDRVBPSU5UKHRy
YWNlX3Zmc19ta25vZCwgIlwiJXNcIiAwJTBvIDB4JXgiLCBjb25zdCBjaGFyKiwgbW9kZV90LCBk
ZXZfdCk7CiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19ta25vZF9yZXQsICIiKTsKIFRSQUNFUE9JTlQo
dHJhY2VfdmZzX21rbm9kX2VyciwgIiVkIiwgaW50KTsKIAotCi1pbnQgX194bWtub2QoaW50IHZl
ciwgY29uc3QgY2hhciAqcGF0aG5hbWUsIG1vZGVfdCBtb2RlLCBkZXZfdCAqZGV2KQoraW50IF9f
eG1rbm9kKGludCB2ZXIsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBtb2RlX3QgbW9kZSwgZGV2X3Qg
KmRldiBfX3VudXNlZCkKIHsKIAlVS19BU1NFUlQodmVyID09IDApOyAvLyBPbiB4ODYtNjQgTGlu
dXgsIF9NS05PRF9WRVJfTElOVVggaXMgMC4KIAlzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsK
QEAgLTU0MSw3ICs1NDAsNyBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19mc3RhdCwgIiVkICVwIiwg
aW50LCBzdHJ1Y3Qgc3RhdCopOwogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZnN0YXRfcmV0LCAiIik7
CiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19mc3RhdF9lcnIsICIlZCIsIGludCk7CiAKLWludCBfX2Z4
c3RhdChpbnQgdmVyLCBpbnQgZmQsIHN0cnVjdCBzdGF0ICpzdCkKK2ludCBfX2Z4c3RhdChpbnQg
dmVyIF9fdW51c2VkLCBpbnQgZmQsIHN0cnVjdCBzdGF0ICpzdCkKIHsKIAlzdHJ1Y3QgdmZzY29y
ZV9maWxlICpmcDsKIAlpbnQgZXJyb3I7CkBAIC01NjgsMTQgKzU2NywxNCBAQCBpbnQgX19meHN0
YXQoaW50IHZlciwgaW50IGZkLCBzdHJ1Y3Qgc3RhdCAqc3QpCiAKIExGUzY0KF9fZnhzdGF0KTsK
IAotaW50IGZzdGF0KGludCBmZCwgc3RydWN0IHN0YXQgKnN0KQoraW50IGZzdGF0KGludCBmZCBf
X3VudXNlZCwgc3RydWN0IHN0YXQgKnN0KQogewogCXJldHVybiBfX2Z4c3RhdCgxLCBmZCwgc3Qp
OwogfQogCiBMRlM2NChmc3RhdCk7CiAKLWludCBfX2Z4c3RhdGF0KGludCB2ZXIsIGludCBkaXJm
ZCwgY29uc3QgY2hhciAqcGF0aG5hbWUsIHN0cnVjdCBzdGF0ICpzdCwKK2ludCBfX2Z4c3RhdGF0
KGludCB2ZXIgX191bnVzZWQsIGludCBkaXJmZCwgY29uc3QgY2hhciAqcGF0aG5hbWUsIHN0cnVj
dCBzdGF0ICpzdCwKIAkJaW50IGZsYWdzKQogewogCWlmIChmbGFncyAmIEFUX1NZTUxJTktfTk9G
T0xMT1cpIHsKQEAgLTExMTMsNyArMTExMiw3IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX3N0YXQs
ICJcIiVzXCIgJXAiLCBjb25zdCBjaGFyKiwgc3RydWN0IHN0YXQqKTsKIFRSQUNFUE9JTlQodHJh
Y2VfdmZzX3N0YXRfcmV0LCAiIik7CiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19zdGF0X2VyciwgIiVk
IiwgaW50KTsKIAotaW50IF9feHN0YXQoaW50IHZlciwgY29uc3QgY2hhciAqcGF0aG5hbWUsIHN0
cnVjdCBzdGF0ICpzdCkKK2ludCBfX3hzdGF0KGludCB2ZXIgX191bnVzZWQsIGNvbnN0IGNoYXIg
KnBhdGhuYW1lLCBzdHJ1Y3Qgc3RhdCAqc3QpCiB7CiAJc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rh
c2s7CiAJY2hhciBwYXRoW1BBVEhfTUFYXTsKQEAgLTExNDksNyArMTE0OCw4IEBAIExGUzY0KHN0
YXQpOwogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbHN0YXQsICJwYXRobmFtZT0lcywgc3RhdD0lcCIs
IGNvbnN0IGNoYXIqLCBzdHJ1Y3Qgc3RhdCopOwogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbHN0YXRf
cmV0LCAiIik7CiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19sc3RhdF9lcnIsICJlcnJubz0lZCIsIGlu
dCk7Ci1pbnQgX19seHN0YXQoaW50IHZlciwgY29uc3QgY2hhciAqcGF0aG5hbWUsIHN0cnVjdCBz
dGF0ICpzdCkKKworaW50IF9fbHhzdGF0KGludCB2ZXIgX191bnVzZWQsIGNvbnN0IGNoYXIgKnBh
dGhuYW1lLCBzdHJ1Y3Qgc3RhdCAqc3QpCiB7CiAJc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7
CiAJY2hhciBwYXRoW1BBVEhfTUFYXTsKQEAgLTE5MjIsNyArMTkyMiw3IEBAIGludCBmY2htb2Qo
aW50IGZkLCBtb2RlX3QgbW9kZSkKIFRSQUNFUE9JTlQodHJhY2VfdmZzX2ZjaG93biwgIlwiJWRc
IiAlZCAlZCIsIGludCwgdWlkX3QsIGdpZF90KTsKIFRSQUNFUE9JTlQodHJhY2VfdmZzX2ZjaG93
bl9yZXQsICIiKTsKIAotaW50IGZjaG93bihpbnQgZmQsIHVpZF90IG93bmVyLCBnaWRfdCBncm91
cCkKK2ludCBmY2hvd24oaW50IGZkIF9fdW51c2VkLCB1aWRfdCBvd25lciBfX3VudXNlZCwgZ2lk
X3QgZ3JvdXAgX191bnVzZWQpCiB7CiAJdHJhY2VfdmZzX2ZjaG93bihmZCwgb3duZXIsIGdyb3Vw
KTsKIAlXQVJOX1NUVUJCRUQoKTsKQEAgLTE5MzAsMTMgKzE5MzAsMTMgQEAgaW50IGZjaG93bihp
bnQgZmQsIHVpZF90IG93bmVyLCBnaWRfdCBncm91cCkKIAlyZXR1cm4gMDsKIH0KIAotaW50IGNo
b3duKGNvbnN0IGNoYXIgKnBhdGgsIHVpZF90IG93bmVyLCBnaWRfdCBncm91cCkKK2ludCBjaG93
bihjb25zdCBjaGFyICpwYXRoIF9fdW51c2VkLCB1aWRfdCBvd25lciBfX3VudXNlZCwgZ2lkX3Qg
Z3JvdXAgX191bnVzZWQpCiB7CiAJV0FSTl9TVFVCQkVEKCk7CiAJcmV0dXJuIDA7CiB9CiAKLWlu
dCBsY2hvd24oY29uc3QgY2hhciAqcGF0aCwgdWlkX3Qgb3duZXIsIGdpZF90IGdyb3VwKQoraW50
IGxjaG93bihjb25zdCBjaGFyICpwYXRoIF9fdW51c2VkLCB1aWRfdCBvd25lciBfX3VudXNlZCwg
Z2lkX3QgZ3JvdXAgX191bnVzZWQpCiB7CiAJV0FSTl9TVFVCQkVEKCk7CiAJcmV0dXJuIDA7CkBA
IC0yMDI2LDcgKzIwMjYsNyBAQCBzc2l6ZV90IHNlbmRmaWxlKGludCBvdXRfZmQsIGludCBpbl9m
ZCwgb2ZmX3QgKl9vZmZzZXQsIHNpemVfdCBjb3VudCkKIExGUzY0KHNlbmRmaWxlKTsKICNlbmRp
ZgogCi1OT19TWVMoaW50IGZjaG1vZGF0KGludCBkaXJmZCwgY29uc3QgY2hhciAqcGF0aG5hbWUs
IG1vZGVfdCBtb2RlLCBpbnQgZmxhZ3MpKTsKK05PX1NZUyhpbnQgZmNobW9kYXQoaW50IGRpcmZk
IF9fdW51c2VkLCBjb25zdCBjaGFyICpwYXRobmFtZSBfX3VudXNlZCwgbW9kZV90IG1vZGUgX191
bnVzZWQsIGludCBmbGFncyBfX3VudXNlZCkpOwogCiBtb2RlX3QgdW1hc2sobW9kZV90IG5ld21h
c2spCiB7CkBAIC0yMDM5LDcgKzIwMzksNyBAQCBmc19ub29wKHZvaWQpCiAJcmV0dXJuIDA7CiB9
CiAKLWludCBjaHJvb3QoY29uc3QgY2hhciAqcGF0aCkKK2ludCBjaHJvb3QoY29uc3QgY2hhciAq
cGF0aCBfX3VudXNlZCkKIHsKIAlXQVJOX1NUVUJCRUQoKTsKIAllcnJubyA9IEVOT1NZUzsKZGlm
ZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3N5c2NhbGxzLmMgYi9saWIvdmZzY29yZS9zeXNjYWxscy5j
CmluZGV4IDMzMDA0OTYwLi5iZmVkMmMyMSAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvc3lzY2Fs
bHMuYworKysgYi9saWIvdmZzY29yZS9zeXNjYWxscy5jCkBAIC0zOTQsNyArMzk0LDcgQEAgc3lz
X2ZzeW5jKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwKQogCXN0cnVjdCB2bm9kZSAqdnA7CiAJaW50
IGVycm9yOwogCi0JRFBSSU5URihWRlNEQl9TWVNDQUxMLCAoInN5c19mc3luYzogZnA9JXhcbiIs
IGZwKSk7CisJRFBSSU5URihWRlNEQl9TWVNDQUxMLCAoInN5c19mc3luYzogZnA9JXBcbiIsIGZw
KSk7CiAKIAlpZiAoIWZwLT5mX2RlbnRyeSkKIAkJcmV0dXJuIEVJTlZBTDsKQEAgLTQxMSw3ICs0
MTEsNyBAQCBzeXNfZnN0YXQoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAsIHN0cnVjdCBzdGF0ICpz
dCkKIHsKIAlpbnQgZXJyb3IgPSAwOwogCi0JRFBSSU5URihWRlNEQl9TWVNDQUxMLCAoInN5c19m
c3RhdDogZnA9JXhcbiIsIGZwKSk7CisJRFBSSU5URihWRlNEQl9TWVNDQUxMLCAoInN5c19mc3Rh
dDogZnA9JXBcbiIsIGZwKSk7CiAKIAllcnJvciA9IHZmc19zdGF0KGZwLCBzdCk7CiAKQEAgLTQ1
OCw3ICs0NTgsNyBAQCBzeXNfcmVhZGRpcihzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCwgc3RydWN0
IGRpcmVudCAqZGlyKQogCXN0cnVjdCB2bm9kZSAqZHZwOwogCWludCBlcnJvcjsKIAotCURQUklO
VEYoVkZTREJfU1lTQ0FMTCwgKCJzeXNfcmVhZGRpcjogZnA9JXhcbiIsIGZwKSk7CisJRFBSSU5U
RihWRlNEQl9TWVNDQUxMLCAoInN5c19yZWFkZGlyOiBmcD0lcFxuIiwgZnApKTsKIAogCWlmICgh
ZnAtPmZfZGVudHJ5KQogCQlyZXR1cm4gRU5PVERJUjsKQEAgLTE0MzMsNyArMTQzMyw3IEBAIHN5
c19mYWxsb2NhdGUoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAsIGludCBtb2RlLCBvZmZfdCBvZmZz
ZXQsIG9mZl90IGxlbikKIAlpbnQgZXJyb3I7CiAJc3RydWN0IHZub2RlICp2cDsKIAotCURQUklO
VEYoVkZTREJfU1lTQ0FMTCwgKCJzeXNfZmFsbG9jYXRlOiBmcD0leCIsIGZwKSk7CisJRFBSSU5U
RihWRlNEQl9TWVNDQUxMLCAoInN5c19mYWxsb2NhdGU6IGZwPSVwIiwgZnApKTsKIAogCWlmICgh
ZnAtPmZfZGVudHJ5IHx8ICEoZnAtPmZfZmxhZ3MgJiBGV1JJVEUpKSB7CiAJCXJldHVybiBFQkFE
RjsKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3Rhc2suYyBiL2xpYi92ZnNjb3JlL3Rhc2suYwpp
bmRleCA3NjM1YmQ3YS4uZTY1OGJkYWEgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL3Rhc2suYwor
KysgYi9saWIvdmZzY29yZS90YXNrLmMKQEAgLTEyOSw3ICsxMjksNyBAQCBwYXRoX2NvbnYoY2hh
ciAqd2QsIGNvbnN0IGNoYXIgKmNwYXRoLCBjaGFyICpmdWxsKQogICogQGFjYzogYWNjZXNzIG1v
ZGUKICAqLwogaW50Ci10YXNrX2NvbnYoc3RydWN0IHRhc2sgKnQsIGNvbnN0IGNoYXIgKmNwYXRo
LCBpbnQgYWNjLCBjaGFyICpmdWxsKQordGFza19jb252KHN0cnVjdCB0YXNrICp0LCBjb25zdCBj
aGFyICpjcGF0aCwgaW50IGFjYyBfX3VudXNlZCwgY2hhciAqZnVsbCkKIHsKIAlpbnQgcmM7CiAK
ZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3Zub2RlLmMgYi9saWIvdmZzY29yZS92bm9kZS5jCmlu
ZGV4IGU5ZTA0MGFhLi5kNzA3NDZjOSAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvdm5vZGUuYwor
KysgYi9saWIvdmZzY29yZS92bm9kZS5jCkBAIC0xNzksNyArMTc5LDcgQEAgdmZzY29yZV92Z2V0
KHN0cnVjdCBtb3VudCAqbXAsIHVpbnQ2NF90IGlubywgc3RydWN0IHZub2RlICoqdnBwKQogCiAJ
KnZwcCA9IE5VTEw7CiAKLQlEUFJJTlRGKFZGU0RCX1ZOT0RFLCAoInZnZXQgJUxMdVxuIiwgaW5v
KSk7CisJRFBSSU5URihWRlNEQl9WTk9ERSwgKCJ2ZnNjb3JlX3ZnZXQgJWxsdVxuIiwgKHVuc2ln
bmVkIGxvbmcgbG9uZykgaW5vKSk7CiAKIAlWTk9ERV9MT0NLKCk7CiAKQEAgLTMwMCw3ICszMDAs
NyBAQCB2cmVsZShzdHJ1Y3Qgdm5vZGUgKnZwKQogICogUmVtb3ZlIGFsbCB2bm9kZSBpbiB0aGUg
dm5vZGUgdGFibGUgZm9yIHVubW91bnQuCiAgKi8KIHZvaWQKLXZmbHVzaChzdHJ1Y3QgbW91bnQg
Km1wKQordmZsdXNoKHN0cnVjdCBtb3VudCAqbXAgX191bnVzZWQpCiB7CiB9CiAKQEAgLTUxMiw3
ICs1MTIsNyBAQCB2bm9kZV9pbml0KHZvaWQpCiAJCVVLX0lOSVRfTElTVF9IRUFEKCZ2bm9kZV90
YWJsZVtpXSk7CiB9CiAKLXZvaWQgdm5fYWRkX25hbWUoc3RydWN0IHZub2RlICp2cCwgc3RydWN0
IGRlbnRyeSAqZHApCit2b2lkIHZuX2FkZF9uYW1lKHN0cnVjdCB2bm9kZSAqdnAgX191bnVzZWQs
IHN0cnVjdCBkZW50cnkgKmRwKQogewogCS8qIFRPRE86IFJlLWVuYWJsZSB0aGlzIGNoZWNrIHdo
ZW4gcHJlZW1wdGlvbiBhbmQvb3Igc21wIGlzCiAJICogaGVyZSAqLwpAQCAtNTIwLDcgKzUyMCw3
IEBAIHZvaWQgdm5fYWRkX25hbWUoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IGRlbnRyeSAqZHAp
CiAJdWtfbGlzdF9hZGQoJmRwLT5kX25hbWVzX2xpbmssICZ2cC0+dl9uYW1lcyk7CiB9CiAKLXZv
aWQgdm5fZGVsX25hbWUoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IGRlbnRyeSAqZHApCit2b2lk
IHZuX2RlbF9uYW1lKHN0cnVjdCB2bm9kZSAqdnAgX191bnVzZWQsIHN0cnVjdCBkZW50cnkgKmRw
KQogewogCS8qIFRPRE86IFJlLWVuYWJsZSB0aGlzIGNoZWNrIHdoZW4gcHJlZW1wdGlvbiBhbmQv
b3Igc21wIGlzCiAJICogaGVyZSAqLwotLSAKMi4xOS4yCgoKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5p
b3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9y
Zy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Thu Feb 07 14:00:31 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 07 Feb 2019 14:00:31 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grkEB-0007Qn-Ru; Thu, 07 Feb 2019 14:00:31 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=CXnx=QO=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1grkE9-0007Q6-NX
 for minios-devel@lists.xen.org; Thu, 07 Feb 2019 14:00:29 +0000
X-Inumbo-ID: b859d0e0-2ae0-11e9-8891-6bbb2b2f0aac
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id b859d0e0-2ae0-11e9-8891-6bbb2b2f0aac;
 Thu, 07 Feb 2019 14:00:27 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 54319104DA9;
 Thu,  7 Feb 2019 15:00:26 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id UCD6hPInZ7uG; Thu,  7 Feb 2019 15:00:26 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 319F7104DA5
 for <minios-devel@lists.xen.org>; Thu,  7 Feb 2019 15:00:24 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Thu, 7 Feb 2019 15:00:23 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Thu, 7 Feb 2019 14:58:59 +0100
Message-ID: <20190207135901.9122-22-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
References: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v3 21/23] lib/nolibc: add prototypes
 for functions from vfscore
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogbGliL25vbGliYy9pbmNsdWRlL3VuaXN0ZC5oIHwgNSArKysrKwogMSBmaWxlIGNoYW5nZWQs
IDUgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2xpYi9ub2xpYmMvaW5jbHVkZS91bmlzdGQu
aCBiL2xpYi9ub2xpYmMvaW5jbHVkZS91bmlzdGQuaAppbmRleCAwOWU3ZDdhMS4uZTNjMDhhNzUg
MTAwNjQ0Ci0tLSBhL2xpYi9ub2xpYmMvaW5jbHVkZS91bmlzdGQuaAorKysgYi9saWIvbm9saWJj
L2luY2x1ZGUvdW5pc3RkLmgKQEAgLTUxLDYgKzUxLDExIEBAIGV4dGVybiAiQyIgewogaW50IGNs
b3NlKGludCBmZCk7CiBzc2l6ZV90IHdyaXRlKGludCBmZCwgY29uc3Qgdm9pZCAqYnVmLCBzaXpl
X3QgY291bnQpOwogc3NpemVfdCByZWFkKGludCBmZCwgdm9pZCAqYnVmLCBzaXplX3QgY291bnQp
OworaW50IGZzeW5jKGludCBmZCk7CitpbnQgZHVwKGludCBvbGRmZCk7CitpbnQgZHVwMihpbnQg
b2xkZmQsIGludCBuZXdmZCk7CitpbnQgZHVwMyhpbnQgb2xkZmQsIGludCBuZXdmZCwgaW50IGZs
YWdzKTsKK2ludCB1bmxpbmsoY29uc3QgY2hhciAqcGF0aG5hbWUpOwogI2VuZGlmCiAKICNpZmRl
ZiBfX2NwbHVzcGx1cwotLSAKMi4xOS4yCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxA
bGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFu
L2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Thu Feb 07 14:00:33 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 07 Feb 2019 14:00:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grkEC-0007RP-US; Thu, 07 Feb 2019 14:00:32 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=CXnx=QO=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1grkEB-0007Qg-HZ
 for minios-devel@lists.xen.org; Thu, 07 Feb 2019 14:00:31 +0000
X-Inumbo-ID: b9f0fef7-2ae0-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id b9f0fef7-2ae0-11e9-bc90-bc764e045a96;
 Thu, 07 Feb 2019 14:00:29 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id EFACDF205F;
 Thu,  7 Feb 2019 15:00:28 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id rUp40Jon0G87; Thu,  7 Feb 2019 15:00:28 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id BD958F202D
 for <minios-devel@lists.xen.org>; Thu,  7 Feb 2019 15:00:26 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Thu, 7 Feb 2019 15:00:26 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Thu, 7 Feb 2019 14:59:00 +0100
Message-ID: <20190207135901.9122-23-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
References: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v3 22/23] lib/vfscore: re-implement
 stdio and enable new code
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogbGliL3Zmc2NvcmUvQ29uZmlnLnVrICAgICAgICAgICAgICB8ICAxICsKIGxpYi92ZnNjb3Jl
L01ha2VmaWxlLnVrICAgICAgICAgICAgfCAgOSArKysrCiBsaWIvdmZzY29yZS9leHBvcnRzeW1z
LnVrICAgICAgICAgIHwgMjcgKysrKysrKysrKysKIGxpYi92ZnNjb3JlL2ZpbGUuYyAgICAgICAg
ICAgICAgICAgfCA2MSArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBsaWIvdmZzY29yZS9pbmNs
dWRlL3Zmc2NvcmUvZmlsZS5oIHwgIDIgKy0KIGxpYi92ZnNjb3JlL3N0ZGlvLmMgICAgICAgICAg
ICAgICAgfCA3MyArKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KIDYgZmlsZXMgY2hhbmdl
ZCwgODUgaW5zZXJ0aW9ucygrKSwgODggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliL3Zm
c2NvcmUvQ29uZmlnLnVrIGIvbGliL3Zmc2NvcmUvQ29uZmlnLnVrCmluZGV4IDQ5ZDZkYWExLi42
Y2Y2YzYzYSAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvQ29uZmlnLnVrCisrKyBiL2xpYi92ZnNj
b3JlL0NvbmZpZy51awpAQCAtMywzICszLDQgQEAgY29uZmlnIExJQlZGU0NPUkUKIAlkZWZhdWx0
IG4KIAlzZWxlY3QgTElCTk9MSUJDIGlmICFIQVZFX0xJQkMKIAlzZWxlY3QgTElCVUtERUJVRwor
CXNlbGVjdCBMSUJVS0xPQ0sKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL01ha2VmaWxlLnVrIGIv
bGliL3Zmc2NvcmUvTWFrZWZpbGUudWsKaW5kZXggMDY5MzNkOTYuLjFmZDM1ODU4IDEwMDY0NAot
LS0gYS9saWIvdmZzY29yZS9NYWtlZmlsZS51aworKysgYi9saWIvdmZzY29yZS9NYWtlZmlsZS51
awpAQCAtNSw1ICs1LDE0IEBAIENJTkNMVURFUy15ICs9IC1JJChMSUJWRlNDT1JFX0JBU0UpL2lu
Y2x1ZGUKIExJQlZGU0NPUkVfU1JDUy15ICs9ICQoTElCVkZTQ09SRV9CQVNFKS9mZC5jCiBMSUJW
RlNDT1JFX1NSQ1MteSArPSAkKExJQlZGU0NPUkVfQkFTRSkvZmlsZS5jCiBMSUJWRlNDT1JFX1NS
Q1MteSArPSAkKExJQlZGU0NPUkVfQkFTRSkvc3RkaW8uYworTElCVkZTQ09SRV9TUkNTLXkgKz0g
JChMSUJWRlNDT1JFX0JBU0UpL21vdW50LmMKK0xJQlZGU0NPUkVfU1JDUy15ICs9ICQoTElCVkZT
Q09SRV9CQVNFKS92bm9kZS5jCitMSUJWRlNDT1JFX1NSQ1MteSArPSAkKExJQlZGU0NPUkVfQkFT
RSkvZGVudHJ5LmMKK0xJQlZGU0NPUkVfU1JDUy15ICs9ICQoTElCVkZTQ09SRV9CQVNFKS9zeXNj
YWxscy5jCitMSUJWRlNDT1JFX1NSQ1MteSArPSAkKExJQlZGU0NPUkVfQkFTRSkvbWFpbi5jCitM
SUJWRlNDT1JFX1NSQ1MteSArPSAkKExJQlZGU0NPUkVfQkFTRSkvdGFzay5jCitMSUJWRlNDT1JF
X1NSQ1MteSArPSAkKExJQlZGU0NPUkVfQkFTRSkvbG9va3VwLmMKK0xJQlZGU0NPUkVfU1JDUy15
ICs9ICQoTElCVkZTQ09SRV9CQVNFKS9mb3BzLmMKK0xJQlZGU0NPUkVfU1JDUy15ICs9ICQoTElC
VkZTQ09SRV9CQVNFKS9zdWJyX3Vpby5jCiAKIEVYVFJBX0xEX1NDUklQVC0kKENPTkZJR19MSUJW
RlNDT1JFKSArPSAkKExJQlZGU0NPUkVfQkFTRSkvZXh0cmEubGQKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9leHBvcnRzeW1zLnVrIGIvbGliL3Zm
c2NvcmUvZXhwb3J0c3ltcy51awppbmRleCA5ZTIyOWExMS4uNTQzOGE2NGMgMTAwNjQ0Ci0tLSBh
L2xpYi92ZnNjb3JlL2V4cG9ydHN5bXMudWsKKysrIGIvbGliL3Zmc2NvcmUvZXhwb3J0c3ltcy51
awpAQCAtNSwzICs1LDMwIEBAIHZmc2NvcmVfZ2V0X2ZpbGUKIGNsb3NlCiB3cml0ZQogcmVhZAor
c3lzX21vdW50Cit2ZnNjb3JlX251bGxvcAordmZzY29yZV9yZWxlYXNlX21wX2RlbnRyaWVzCit2
ZnNjb3JlX3ZnZXQKK3Zmc2NvcmVfdWlvbW92ZQordmZzY29yZV92b3BfbnVsbG9wCit2ZnNjb3Jl
X3ZvcF9laW52YWwKK3Zmc2NvcmVfdm9wX2VwZXJtCit2ZnNjb3JlX3ZvcF9lcm9mcworb3Blbgor
d3JpdGUKK2Nsb3NlCityZWFkCitta2RpcgorZnN5bmMKK2ZzdGF0CitzdGF0CitjaG1vZAorZHVw
CitkdXAyCitkdXAzCit2ZnNjb3JlX3Vpb21vdmUKK3N5c19zeW5jCit2ZnNjb3JlX21vdW50X2R1
bXAKK3N5c191bW91bnQKK3N5c191bW91bnQyCit1bmxpbmsKZGlmZiAtLWdpdCBhL2xpYi92ZnNj
b3JlL2ZpbGUuYyBiL2xpYi92ZnNjb3JlL2ZpbGUuYwppbmRleCAwZjZkZmE5My4uZTU2ZjE2ZGMg
MTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2ZpbGUuYworKysgYi9saWIvdmZzY29yZS9maWxlLmMK
QEAgLTM4LDY2ICszOCw3IEBACiAjaW5jbHVkZSA8dWsvcHJpbnQuaD4KICNpbmNsdWRlIDx2ZnNj
b3JlL2ZpbGUuaD4KICNpbmNsdWRlIDx1ay9hc3NlcnQuaD4KLSNpbmNsdWRlIDx1ay9hcmNoL2F0
b21pYy5oPgotCi1pbnQgY2xvc2UoaW50IGZkKQotewotCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZp
bGUgPSB2ZnNjb3JlX2dldF9maWxlKGZkKTsKLQotCWlmICghZmlsZSkgewotCQl1a19wcl93YXJu
KCJubyBzdWNoIGZpbGUgZGVzY3JpcHRvcjogJWRcbiIsIGZkKTsKLQkJZXJybm8gPSBFQkFERjsK
LQkJcmV0dXJuIC0xOwotCX0KLQotCWlmICghZmlsZS0+Zm9wcy0+Y2xvc2UpIHsKLQkJZXJybm8g
PSBFSU87Ci0JCXJldHVybiAtMTsKLQl9Ci0KLQlyZXR1cm4gZmlsZS0+Zm9wcy0+Y2xvc2UoZmls
ZSk7Ci19Ci0KLXNzaXplX3Qgd3JpdGUoaW50IGZkLCBjb25zdCB2b2lkICpidWYsIHNpemVfdCBj
b3VudCkKLXsKLQlzdHJ1Y3QgdmZzY29yZV9maWxlICpmaWxlID0gdmZzY29yZV9nZXRfZmlsZShm
ZCk7Ci0KLQlpZiAoIWZpbGUpIHsKLQkJdWtfcHJfd2Fybigibm8gc3VjaCBmaWxlIGRlc2NyaXB0
b3I6ICVkXG4iLCBmZCk7Ci0JCWVycm5vID0gRUJBREY7Ci0JCXJldHVybiAtMTsKLQl9Ci0KLQlp
ZiAoIWZpbGUtPmZvcHMtPndyaXRlKSB7Ci0JCXVrX3ByX3dhcm4oImZpbGUgZG9lcyBub3QgaGF2
ZSB3cml0ZSBvcDogJWRcbiIsIGZkKTsKLQkJZXJybm8gPSBFSU5WQUw7Ci0JCXJldHVybiAtMTsK
LQl9Ci0KLQlyZXR1cm4gZmlsZS0+Zm9wcy0+d3JpdGUoZmlsZSwgYnVmLCBjb3VudCk7Ci19Ci0K
LXNzaXplX3QgcmVhZChpbnQgZmQsIHZvaWQgKmJ1Ziwgc2l6ZV90IGNvdW50KQotewotCXN0cnVj
dCB2ZnNjb3JlX2ZpbGUgKmZpbGUgPSB2ZnNjb3JlX2dldF9maWxlKGZkKTsKLQotCWlmICghZmls
ZSkgewotCQl1a19wcl93YXJuKCJubyBzdWNoIGZpbGUgZGVzY3JpcHRvcjogJWRcbiIsIGZkKTsK
LQkJZXJybm8gPSBFQkFERjsKLQkJcmV0dXJuIC0xOwotCX0KLQotCWlmICghZmlsZS0+Zm9wcy0+
cmVhZCkgewotCQl1a19wcl93YXJuKCJmaWxlIGRvZXMgbm90IGhhdmUgcmVhZCBvcDogJWRcbiIs
IGZkKTsKLQkJZXJybm8gPSBFSU5WQUw7Ci0JCXJldHVybiAtMTsKLQl9Ci0KLQlyZXR1cm4gZmls
ZS0+Zm9wcy0+cmVhZChmaWxlLCBidWYsIGNvdW50KTsKLX0KLQotLyogVE9ETzogcmVtb3ZlIHN0
dWIgKi8KLSNkZWZpbmUgdmZzX2Nsb3NlKGZwKSAoMCkKKyNpbmNsdWRlICJ2ZnMuaCIKIAogaW50
IGZkcm9wKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwKQogewpkaWZmIC0tZ2l0IGEvbGliL3Zmc2Nv
cmUvaW5jbHVkZS92ZnNjb3JlL2ZpbGUuaCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9m
aWxlLmgKaW5kZXggYjczMjBjYzEuLjdmNDVjYTc4IDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9p
bmNsdWRlL3Zmc2NvcmUvZmlsZS5oCisrKyBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9m
aWxlLmgKQEAgLTM4LDYgKzM4LDcgQEAKIAogI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUg
PHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHZmc2NvcmUvZGVudHJ5Lmg+CiAKICNpZmRlZiBfX2Nw
bHVzcGx1cwogZXh0ZXJuICJDIiB7CkBAIC01OCw3ICs1OSw2IEBAIHN0cnVjdCB2ZnNjb3JlX2Zp
bGUgewogCW9mZl90CQlmX29mZnNldDsJLyogY3VycmVudCBwb3NpdGlvbiBpbiBmaWxlICovCiAJ
dm9pZAkJKmZfZGF0YTsgICAgICAgIC8qIGZpbGUgZGVzY3JpcHRvciBzcGVjaWZpYyBkYXRhICov
CiAJc3RydWN0IGRlbnRyeSAgICpmX2RlbnRyeTsKLQljb25zdCBzdHJ1Y3QgdmZzY29yZV9mb3Bz
ICpmb3BzOwogfTsKIAogaW50IHZmc2NvcmVfYWxsb2NfZmQodm9pZCk7CmRpZmYgLS1naXQgYS9s
aWIvdmZzY29yZS9zdGRpby5jIGIvbGliL3Zmc2NvcmUvc3RkaW8uYwppbmRleCBhOWJkZmQ2MS4u
NWYxNWVmMmEgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL3N0ZGlvLmMKKysrIGIvbGliL3Zmc2Nv
cmUvc3RkaW8uYwpAQCAtMzQsMjMgKzM0LDM3IEBACiAgKi8KIAogI2luY2x1ZGUgPHZmc2NvcmUv
ZmlsZS5oPgorI2luY2x1ZGUgPHZmc2NvcmUvZnMuaD4KICNpbmNsdWRlIDx1ay9wbGF0L2NvbnNv
bGUuaD4KICNpbmNsdWRlIDx1ay9lc3NlbnRpYWxzLmg+CiAjaW5jbHVkZSA8dGVybWlvcy5oPgor
I2luY2x1ZGUgPHZmc2NvcmUvdm5vZGUuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KIAogLyogT25l
IGZ1bmN0aW9uIGZvciBzdGRlcnIgYW5kIHN0ZG91dCAqLwotc3RhdGljIHNzaXplX3Qgc3Rkb3V0
X3dyaXRlKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKnZmc2NvcmVfZmlsZSBfX3VudXNlZCwKLQkJCSAg
ICBjb25zdCB2b2lkICpidWYsIHNpemVfdCBjb3VudCkKK3N0YXRpYyBzc2l6ZV90IHN0ZGlvX3dy
aXRlKHN0cnVjdCB2bm9kZSAqdnAgX191bnVzZWQsCisJCQkgICBzdHJ1Y3QgdWlvICp1aW8sCisJ
CQkgICBpbnQgaW9mbGFnIF9fdW51c2VkKQogewotCXJldHVybiB1a3BsYXRfY291dGsoYnVmLCBj
b3VudCk7CisJVUtfQVNTRVJUKCF1aW8tPnVpb19vZmZzZXQpOworCVVLX0FTU0VSVCh1aW8tPnVp
b19pb3ZjbnQgPT0gMSk7CisJcmV0dXJuIHVrcGxhdF9jb3V0ayh1aW8tPnVpb19pb3YtPmlvdl9i
YXNlLCB1aW8tPnVpb19pb3YtPmlvdl9sZW4pOwogfQogCi1zdGF0aWMgc3NpemVfdCBzdGRpbl9y
ZWFkKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKnZmc2NvcmVfZmlsZSBfX3VudXNlZCwKLQkJCSAgdm9p
ZCAqX2J1Ziwgc2l6ZV90IGNvdW50KQorc3RhdGljIHNzaXplX3Qgc3RkaW9fcmVhZChzdHJ1Y3Qg
dm5vZGUgKnZwIF9fdW51c2VkLAorCQkgICAgICBzdHJ1Y3QgdmZzY29yZV9maWxlICpmaWxlIF9f
dW51c2VkLAorCQkgICAgICBzdHJ1Y3QgdWlvICp1aW8sCisJCSAgICAgIGludCBpb2ZsYWcgX191
bnVzZWQpCiB7CiAJaW50IGJ5dGVzX3JlYWQ7Ci0Jc2l6ZV90IGJ5dGVzX3RvdGFsID0gMDsKLQlj
aGFyICpidWYgPSAoY2hhciAqKV9idWY7CisJc2l6ZV90IGJ5dGVzX3RvdGFsID0gMCwgY291bnQ7
CisJY2hhciAqYnVmOworCisJVUtfQVNTRVJUKCF1aW8tPnVpb19vZmZzZXQpOworCVVLX0FTU0VS
VCh1aW8tPnVpb19pb3ZjbnQgPT0gMSk7CisKKwlidWYgPSB1aW8tPnVpb19pb3YtPmlvdl9iYXNl
OworCWNvdW50ID0gdWlvLT51aW9faW92LT5pb3ZfbGVuOwogCiAJZG8gewogCQl3aGlsZSAoKGJ5
dGVzX3JlYWQgPSB1a3BsYXRfY2luayhidWYsCkBAIC02MSw4ICs3NSw4IEBAIHN0YXRpYyBzc2l6
ZV90IHN0ZGluX3JlYWQoc3RydWN0IHZmc2NvcmVfZmlsZSAqdmZzY29yZV9maWxlIF9fdW51c2Vk
LAogCQkqKGJ1ZiAtIDEpID0gKihidWYgLSAxKSA9PSAnXHInID8KIAkJCQkJJ1xuJyA6ICooYnVm
IC0gMSk7CiAKLQkJc3Rkb3V0X3dyaXRlKHZmc2NvcmVfZmlsZSwgKGJ1ZiAtIGJ5dGVzX3JlYWQp
LAotCQkJCWJ5dGVzX3JlYWQpOworCQkvKiBFY2hvIHRoZSBpbnB1dCAqLworCQl1a3BsYXRfY291
dGsoYnVmIC0gYnl0ZXNfcmVhZCwgYnl0ZXNfcmVhZCk7CiAJCWJ5dGVzX3RvdGFsICs9IGJ5dGVz
X3JlYWQ7CiAKIAl9IHdoaWxlIChieXRlc190b3RhbCA8IGNvdW50ICYmICooYnVmIC0gMSkgIT0g
J1xuJwpAQCAtNzEsMzMgKzg1LDM4IEBAIHN0YXRpYyBzc2l6ZV90IHN0ZGluX3JlYWQoc3RydWN0
IHZmc2NvcmVfZmlsZSAqdmZzY29yZV9maWxlIF9fdW51c2VkLAogCXJldHVybiBieXRlc190b3Rh
bDsKIH0KIAotc3RhdGljIHN0cnVjdCB2ZnNjb3JlX2ZvcHMgc3RkaW5fZm9wcyA9IHsKLQkucmVh
ZCA9IHN0ZGluX3JlYWQsCi19OwogCi1zdGF0aWMgc3RydWN0IHZmc2NvcmVfZm9wcyBzdGRvdXRf
Zm9wcyA9IHsKLQkud3JpdGUgPSBzdGRvdXRfd3JpdGUsCitzdGF0aWMgc3RydWN0IHZub3BzIHN0
ZGlvX3Zub3BzID0geworCS52b3Bfd3JpdGUgPSBzdGRpb193cml0ZSwKKwkudm9wX3JlYWQgPSBz
dGRpb19yZWFkLAogfTsKIAotc3RhdGljIHN0cnVjdCB2ZnNjb3JlX2ZpbGUgIHN0ZGluX2ZpbGUg
PSB7Ci0JLmZkID0gMCwKLQkuZm9wcyA9ICZzdGRpbl9mb3BzLAorc3RhdGljIHN0cnVjdCB2bm9k
ZSBzdGRpb192bm9kZSA9IHsKKwkudl9pbm8gPSAxLAorCS52X29wID0gJnN0ZGlvX3Zub3BzLAor
CS52X2xvY2sgPSBVS19NVVRFWF9JTklUSUFMSVpFUihzdGRpb192bm9kZS52X2xvY2spLAorCS52
X3JlZmNudCA9IDEsCiB9OwogCi1zdGF0aWMgc3RydWN0IHZmc2NvcmVfZmlsZSAgc3Rkb3V0X2Zp
bGUgPSB7Ci0JLmZkID0gMSwKLQkuZm9wcyA9ICZzdGRvdXRfZm9wcywKK3N0YXRpYyBzdHJ1Y3Qg
ZGVudHJ5IHN0ZGlvX2RlbnRyeSA9IHsKKwkuZF92bm9kZSA9ICZzdGRpb192bm9kZSwKIH07CiAK
LXN0YXRpYyBzdHJ1Y3QgdmZzY29yZV9maWxlICBzdGRlcnJfZmlsZSA9IHsKLQkuZmQgPSAyLAot
CS5mb3BzID0gJnN0ZG91dF9mb3BzLAorc3RhdGljIHN0cnVjdCB2ZnNjb3JlX2ZpbGUgIHN0ZGlv
X2ZpbGUgPSB7CisJLmZkID0gMSwKKwkuZl9mbGFncyA9IEZXUklURSB8IEZSRUFELAorCS5mX2Rl
bnRyeSA9ICZzdGRpb19kZW50cnksCisJLyogcmVmZXJlbmNlIGNvdW50IGlzIDIgYmVjYXVzZSBj
bG9zZSgwKSBpcyBhIHZhbGlkCisJICogb3BlcmF0aW9uLiBIb3dldmVyIGl0IGlzIG5vdCBwcm9w
ZXJseSBoYW5kbGVkIGluIHRoZQorCSAqIGN1cnJlbnQgaW1wbGVtZW50YXRpb24uICovCisJLmZf
Y291bnQgPSAyLAogfTsKIAotCiB2b2lkIGluaXRfc3RkaW8odm9pZCkKIHsKLQl2ZnNjb3JlX2lu
c3RhbGxfZmQoMCwgJnN0ZGluX2ZpbGUpOwotCXZmc2NvcmVfaW5zdGFsbF9mZCgxLCAmc3Rkb3V0
X2ZpbGUpOwotCXZmc2NvcmVfaW5zdGFsbF9mZCgyLCAmc3RkZXJyX2ZpbGUpOworCXZmc2NvcmVf
aW5zdGFsbF9mZCgwLCAmc3RkaW9fZmlsZSk7CisJaWYgKGR1cDIoMCwgMSkgIT0gMSkKKwkJdWtf
cHJfZXJyKCJmYWlsZWQgdG8gZHVwIHRvIHN0ZGluXG4iKTsKKwlpZiAoZHVwMigwLCAyKSAhPSAy
KQorCQl1a19wcl9lcnIoImZhaWxlZCB0byBkdXAgdG8gc3RkZXJyXG4iKTsKIH0KLS0gCjIuMTku
MgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlv
cy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0
dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Thu Feb 07 14:00:34 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 07 Feb 2019 14:00:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grkED-0007S7-W8; Thu, 07 Feb 2019 14:00:33 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=CXnx=QO=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1grkED-0007S0-Ob
 for minios-devel@lists.xen.org; Thu, 07 Feb 2019 14:00:33 +0000
X-Inumbo-ID: bb921cc5-2ae0-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id bb921cc5-2ae0-11e9-bc90-bc764e045a96;
 Thu, 07 Feb 2019 14:00:32 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id B3073104DAA;
 Thu,  7 Feb 2019 15:00:31 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id V8rqqXwElLmp; Thu,  7 Feb 2019 15:00:31 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 780CF104DB1
 for <minios-devel@lists.xen.org>; Thu,  7 Feb 2019 15:00:29 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Thu, 7 Feb 2019 15:00:29 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Thu, 7 Feb 2019 14:59:01 +0100
Message-ID: <20190207135901.9122-24-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
References: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v3 23/23] lib/vfscore: remove sys
 prefix from vfs api functions
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

RnVjbnRpb25zIHN5cyhtb3VudHx1bW91bnR8dW1vdW50MnxzeW5jKSBhcmUgY29tcGxldGUgZnVu
Y3Rpb24KY2FsbHMuIFVzZXIgYXBwbGljYXRpb25zIHNob3VsZCB1c2UgdGhlbSBkaXJlY3RseSBh
bnl3YXlzLiBMZXQncwpyZW5hbWUgdGhlbSBhY2NvcmRpbmdseS4KClNpZ25lZC1vZmYtYnk6IFl1
cmkgVm9sY2hrb3YgPHl1cmkudm9sY2hrb3ZAbmVjbGFiLmV1PgotLS0KIGxpYi9ub2xpYmMvaW5j
bHVkZS91bmlzdGQuaCB8ICAxICsKIGxpYi92ZnNjb3JlL2V4cG9ydHN5bXMudWsgICB8ICA4ICsr
KystLS0tCiBsaWIvdmZzY29yZS9tb3VudC5jICAgICAgICAgfCAxNCArKysrKystLS0tLS0tLQog
bGliL3Zmc2NvcmUvdmZzLmggICAgICAgICAgIHwgIDUgKy0tLS0KIDQgZmlsZXMgY2hhbmdlZCwg
MTIgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliL25vbGli
Yy9pbmNsdWRlL3VuaXN0ZC5oIGIvbGliL25vbGliYy9pbmNsdWRlL3VuaXN0ZC5oCmluZGV4IGUz
YzA4YTc1Li45ODgxYWI1YiAxMDA2NDQKLS0tIGEvbGliL25vbGliYy9pbmNsdWRlL3VuaXN0ZC5o
CisrKyBiL2xpYi9ub2xpYmMvaW5jbHVkZS91bmlzdGQuaApAQCAtNTEsNiArNTEsNyBAQCBleHRl
cm4gIkMiIHsKIGludCBjbG9zZShpbnQgZmQpOwogc3NpemVfdCB3cml0ZShpbnQgZmQsIGNvbnN0
IHZvaWQgKmJ1Ziwgc2l6ZV90IGNvdW50KTsKIHNzaXplX3QgcmVhZChpbnQgZmQsIHZvaWQgKmJ1
Ziwgc2l6ZV90IGNvdW50KTsKK3ZvaWQgc3luYyh2b2lkKTsKIGludCBmc3luYyhpbnQgZmQpOwog
aW50IGR1cChpbnQgb2xkZmQpOwogaW50IGR1cDIoaW50IG9sZGZkLCBpbnQgbmV3ZmQpOwpkaWZm
IC0tZ2l0IGEvbGliL3Zmc2NvcmUvZXhwb3J0c3ltcy51ayBiL2xpYi92ZnNjb3JlL2V4cG9ydHN5
bXMudWsKaW5kZXggNTQzOGE2NGMuLjEwZmVkODA2IDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9l
eHBvcnRzeW1zLnVrCisrKyBiL2xpYi92ZnNjb3JlL2V4cG9ydHN5bXMudWsKQEAgLTUsNyArNSw3
IEBAIHZmc2NvcmVfZ2V0X2ZpbGUKIGNsb3NlCiB3cml0ZQogcmVhZAotc3lzX21vdW50Cittb3Vu
dAogdmZzY29yZV9udWxsb3AKIHZmc2NvcmVfcmVsZWFzZV9tcF9kZW50cmllcwogdmZzY29yZV92
Z2V0CkBAIC0yNyw4ICsyNyw4IEBAIGR1cAogZHVwMgogZHVwMwogdmZzY29yZV91aW9tb3ZlCi1z
eXNfc3luYworc3luYwogdmZzY29yZV9tb3VudF9kdW1wCi1zeXNfdW1vdW50Ci1zeXNfdW1vdW50
MgordW1vdW50Cit1bW91bnQyCiB1bmxpbmsKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL21vdW50
LmMgYi9saWIvdmZzY29yZS9tb3VudC5jCmluZGV4IDY5NDE3NWYxLi4zOWYwMDlhYyAxMDA2NDQK
LS0tIGEvbGliL3Zmc2NvcmUvbW91bnQuYworKysgYi9saWIvdmZzY29yZS9tb3VudC5jCkBAIC0x
MDksNyArMTA5LDcgQEAgaW50IGRldmljZV9jbG9zZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiB9CiAK
IGludAotc3lzX21vdW50KGNvbnN0IGNoYXIgKmRldiwgY29uc3QgY2hhciAqZGlyLCBjb25zdCBj
aGFyICpmc25hbWUsIGludCBmbGFncywgY29uc3Qgdm9pZCAqZGF0YSkKK21vdW50KGNvbnN0IGNo
YXIgKmRldiwgY29uc3QgY2hhciAqZGlyLCBjb25zdCBjaGFyICpmc25hbWUsIGludCBmbGFncywg
Y29uc3Qgdm9pZCAqZGF0YSkKIHsKIAljb25zdCBzdHJ1Y3QgdmZzY29yZV9mc190eXBlICpmczsK
IAlzdHJ1Y3QgbW91bnQgKm1wOwpAQCAtMTM4LDcgKzEzOCw3IEBAIHN5c19tb3VudChjb25zdCBj
aGFyICpkZXYsIGNvbnN0IGNoYXIgKmRpciwgY29uc3QgY2hhciAqZnNuYW1lLCBpbnQgZmxhZ3Ms
IGNvbnN0CiAJLy8gV2UgbmVlZCB0byBhdm9pZCB0aGUgc2l0dWF0aW9uIHdoZXJlIGFmdGVyIHdl
IGFscmVhZHkgdmVyaWZpZWQgdGhhdAogCS8vIHRoZSBtb3VudCBwb2ludCBpcyBmcmVlLCBidXQg
YmVmb3JlIHdlIGFjdHVhbGx5IGFkZCBpdCB0byBtb3VudF9saXN0LAogCS8vIGFub3RoZXIgY29u
Y3VycmVudCBtb3VudCBhZGRzIGl0LiBTbyB3ZSB1c2UgYSBuZXcgbXV0ZXggdG8gZW5zdXJlCi0J
Ly8gdGhhdCBvbmx5IG9uZSBzeXNfbW91bnQoKSBydW5zIGF0IGEgdGltZS4gV2UgY2Fubm90IHJl
dXNlIHRoZSBleGlzdGluZworCS8vIHRoYXQgb25seSBvbmUgbW91bnQoKSBydW5zIGF0IGEgdGlt
ZS4gV2UgY2Fubm90IHJldXNlIHRoZSBleGlzdGluZwogCS8vIG1vdW50X2xvY2sgZm9yIHRoaXMg
cHVycG9zZTogSWYgd2UgdGFrZSBtb3VudF9sb2NrIGFuZCB0aGVuIGRvCiAJLy8gbG9va3Vwcywg
dGhpcyBpcyBsb2NrIG9yZGVyIGludmVyc2lvbiBhbmQgY2FuIHJlc3VsdCBpbiBkZWFkbG9jay4K
IApAQCAtMjU0LDcgKzI1NCw3IEBAIHZmc2NvcmVfcmVsZWFzZV9tcF9kZW50cmllcyhzdHJ1Y3Qg
bW91bnQgKm1wKQogfQogCiBpbnQKLXN5c191bW91bnQyKGNvbnN0IGNoYXIgKnBhdGgsIGludCBm
bGFncykKK3Vtb3VudDIoY29uc3QgY2hhciAqcGF0aCwgaW50IGZsYWdzKQogewogCXN0cnVjdCBt
b3VudCAqbXAsICp0bXA7CiAJaW50IGVycm9yLCBwYXRobGVuOwpAQCAtMzA3LDkgKzMwNyw5IEBA
IGZvdW5kOgogfQogCiBpbnQKLXN5c191bW91bnQoY29uc3QgY2hhciAqcGF0aCkKK3Vtb3VudChj
b25zdCBjaGFyICpwYXRoKQogewotCXJldHVybiBzeXNfdW1vdW50MihwYXRoLCAwKTsKKwlyZXR1
cm4gdW1vdW50MihwYXRoLCAwKTsKIH0KIAogI2lmIDAKQEAgLTM2Miw4ICszNjIsNyBAQCBzeXNf
cGl2b3Rfcm9vdChjb25zdCBjaGFyICpuZXdfcm9vdCwgY29uc3QgY2hhciAqcHV0X29sZCkKIH0K
ICNlbmRpZgogCi1pbnQKLXN5c19zeW5jKHZvaWQpCit2b2lkIHN5bmModm9pZCkKIHsKIAlzdHJ1
Y3QgbW91bnQgKm1wOwogCXVrX211dGV4X2xvY2soJm1vdW50X2xvY2spOwpAQCAtMzc1LDcgKzM3
NCw2IEBAIHN5c19zeW5jKHZvaWQpCiAjaWZkZWYgSEFWRV9CVUZGRVJTCiAJYmlvX3N5bmMoKTsK
ICNlbmRpZgotCXJldHVybiAwOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvdmZz
LmggYi9saWIvdmZzY29yZS92ZnMuaAppbmRleCA0YTFjZmE5Zi4uODFhNjFkNzUgMTAwNjQ0Ci0t
LSBhL2xpYi92ZnNjb3JlL3Zmcy5oCisrKyBiL2xpYi92ZnNjb3JlL3Zmcy5oCkBAIC0xMTEsMTEg
KzExMSw4IEBAIGludCAgc3lzX3V0aW1lbnNhdChpbnQgZGlyZmQsIGNvbnN0IGNoYXIgKnBhdGhu
YW1lLAogaW50ICBzeXNfZnV0aW1lbnMoaW50IGZkLCBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgdGlt
ZXNbMl0pOwogaW50ICBzeXNfZmFsbG9jYXRlKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwLCBpbnQg
bW9kZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbik7CiAKLWludAkgc3lzX21vdW50KGNvbnN0
IGNoYXIgKmRldiwgY29uc3QgY2hhciAqZGlyLCBjb25zdCBjaGFyICpmc25hbWUsIGludCBmbGFn
cywgY29uc3Qgdm9pZCAqZGF0YSk7Ci1pbnQJIHN5c191bW91bnQyKGNvbnN0IGNoYXIgKnBhdGgs
IGludCBmbGFncyk7Ci1pbnQJIHN5c191bW91bnQoY29uc3QgY2hhciAqcGF0aCk7CiBpbnQJIHN5
c19waXZvdF9yb290KGNvbnN0IGNoYXIgKm5ld19yb290LCBjb25zdCBjaGFyICpvbGRfcHV0KTsK
LWludAkgc3lzX3N5bmModm9pZCk7Cit2b2lkCSBzeW5jKHZvaWQpOwogaW50CSBzeXNfY2htb2Qo
Y29uc3QgY2hhciAqcGF0aCwgbW9kZV90IG1vZGUpOwogaW50CSBzeXNfZmNobW9kKGludCBmZCwg
bW9kZV90IG1vZGUpOwogCi0tIAoyLjE5LjIKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZl
bEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxt
YW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Thu Feb 07 14:03:20 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 07 Feb 2019 14:03:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grkGt-0007bG-7i; Thu, 07 Feb 2019 14:03:19 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=CXnx=QO=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1grkGs-0007b7-8Y
 for minios-devel@lists.xen.org; Thu, 07 Feb 2019 14:03:18 +0000
X-Inumbo-ID: 1d2ab7dc-2ae1-11e9-a2f2-43f121597c53
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 1d2ab7dc-2ae1-11e9-a2f2-43f121597c53;
 Thu, 07 Feb 2019 14:03:16 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 19F93F205F;
 Thu,  7 Feb 2019 15:03:15 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id upF9-nnlgBzP; Thu,  7 Feb 2019 15:03:14 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id E83E0F202D
 for <minios-devel@lists.xen.org>; Thu,  7 Feb 2019 15:03:12 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Thu, 7 Feb 2019 15:03:12 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: Sharan Santhanam <sharan.santhanam@neclab.eu>, <minios-devel@lists.xen.org>
In-Reply-To: <425973a2-5d4a-bbb0-98c4-7158b543d3e3@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
 <20190204143739.29249-2-yuri.volchkov@neclab.eu>
 <540c8472-d0a7-f8a4-8cc3-8b4290df3f34@neclab.eu>
 <tza4s2bm3ox4ok.fsf@N-1128.office.hd>
 <425973a2-5d4a-bbb0-98c4-7158b543d3e3@neclab.eu>
Date: Thu, 7 Feb 2019 15:03:12 +0100
Message-ID: <tza4s28syrwva7.fsf@N-1128.office.hd>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 01/23] include/uk: introduce
 __weak_alias macro
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Simon.kuenzer@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGksCgphaCwgdGhhdCdzIHdoYXQgeW91IG1lYW4uIEkgYWRkZWQgYSBub3RlIGluIHRoZSB2Mywg
d2hpY2ggSSBqdXN0IHNlbnQKClJlZ2FyZHMsCi0gWXVyaS4KClNoYXJhbiBTYW50aGFuYW0gPHNo
YXJhbi5zYW50aGFuYW1AbmVjbGFiLmV1PiB3cml0ZXM6Cgo+IEhlbGxvIFl1cmksCj4KPiBQbGVh
c2UgZmluZCB0aGUgY29tbWVudCBpbmxpbmUuCj4KPiBUaGFua3MgJiBSZWdhcmRzCj4gU2hhcmFu
Cj4KPgo+IE9uIDIvNi8xOSA1OjI3IFBNLCBZdXJpIFZvbGNoa292IHdyb3RlOgo+PiBIaSwKPj4g
Cj4+IHdlbGwsIHRoaXMgaXMgbm90IGEgY29ycmVjdCBiZWhhdmlvciBvZiBnY2MuIEkgZG9uJ3Qg
bGlrZSB0aGUgaWRlYSBvZgo+PiBwb2xsdXRpbmcgYnVpbGQgbG9nIHdpdGggd2FybmluZ3MgYWJv
dXQgbm90IHlvdXIgcHJvYmxlbSBhbmQgd2hpY2ggeW91Cj4+IGNhbiBub3QgZml4LiBBbmQgSSBk
b24ndCBsaWtlIHRoZSBpZGVhIG9mIGRpdGNoaW5nIHNvbWV0aGluZyBhcwo+PiBlc3NlbnRpYWwg
YXMgd2VhayBhbGlhc2luZy4KPiBJIGFncmVlLgo+Cj4+IAo+PiBBbm90aGVyIHRoaW5nLCBMVE8g
cmVzb2x2ZXMgYSB3ZWFrIHN5bWJvbCBvbmx5IGlmIGl0IGlzIHJlZmVyZW5jZWQKPj4gaW5zaWRl
IGEgbGlicmFyeS4gVGhpcyBpcyBleGFjdGx5IHRoZSBpZGVhIGJlaGluZCB0aGUgd29ya2Fyb3Vu
ZCBmb3IKPj4gdGhpcyAibXVsdGlwbGUgZGVmaW5pdGlvbiBvZiBgbWFpbiciIHBhdGNoIHlvdSBy
ZXZpZXdlZCBlYXJsaWVyCj4+IHRvZGF5LiBZZXMgeW91IGNvdWxkIHBlcmhhcHMgY2hlY2sgaWYg
dGhpcyBpcyB0aGUgY2FzZSwgYW5kIHByb2R1Y2UgdGhlCj4+IHdhcm5pbmcgb25seSBpZiAxKSBM
VE8gaXMgZW5hYmxlZCAyKSB0aGUgd2VhayBzeW1ib2wgaXMgcmVmZXJlbmNlZAo+PiBpbnNpZGUg
dGhlIGxpYnJhcnkgaXQgd2FzIGRlZmluZWQuIEkgdGhpbmsgdGhpcyBpcyB3YXkgdG9vIGNvbXBs
ZXggZm9yCj4+IHRoZSBvdXRjb21lLgo+IEkgd2FzIHJlZmVycmluZyB0byB0aGUgdXNlIGNhc2Ug
d2hlcmUgdGhlIGZ1bmN0aW9uIGlzIHVzZWQgd2l0aGluIHRoZSAKPiBsaWJyYXJ5LiBJIHdhcyBt
b3JlIGluIGZhdm9yIG9mIGFkZGluZyBhIGNvZGUtY29tbWVudCB3aXRoIGEgIk5PVEU6Igo+IG1l
bnRpb25pbmcgYWJvdXQgdGhlIGJ1Zy4gSnVzdCB0byByZW1pbmQgdXMgb2YgdGhpcyBidWcgaW4g
TFRPLgo+Cj4+IAoKLS0gCll1cmkgVm9sY2hrb3YKU29mdHdhcmUgU3BlY2lhbGlzdAoKTkVDIEV1
cm9wZSBMdGQKS3VyZsO8cnN0ZW4tQW5sYWdlIDM2CkQtNjkxMTUgSGVpZGVsYmVyZwoKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1h
aWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0
cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Thu Feb 07 14:04:04 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 07 Feb 2019 14:04:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grkHc-0007eG-B6; Thu, 07 Feb 2019 14:04:04 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=CXnx=QO=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1grkHb-0007e5-LN
 for minios-devel@lists.xen.org; Thu, 07 Feb 2019 14:04:03 +0000
X-Inumbo-ID: 38206265-2ae1-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 38206265-2ae1-11e9-bc90-bc764e045a96;
 Thu, 07 Feb 2019 14:04:01 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id A1A8B104DA4;
 Thu,  7 Feb 2019 15:04:00 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id O4rpUrPQcweG; Thu,  7 Feb 2019 15:04:00 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 7C0F4104DA3
 for <minios-devel@lists.xen.org>; Thu,  7 Feb 2019 15:03:58 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Thu, 7 Feb 2019 15:03:58 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: Sharan Santhanam <sharan.santhanam@neclab.eu>,
 <minios-devel@lists.xen.org>, <Simon.kuenzer@neclab.eu>
In-Reply-To: <1d665d88-7612-1f7c-7a9f-edf7025b0f6a@neclab.eu>
References: <20190204143739.29249-1-yuri.volchkov@neclab.eu>
 <20190204143739.29249-9-yuri.volchkov@neclab.eu>
 <1d665d88-7612-1f7c-7a9f-edf7025b0f6a@neclab.eu>
Date: Thu, 7 Feb 2019 15:03:57 +0100
Message-ID: <tza4s25ztvwv8y.fsf@N-1128.office.hd>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 08/23] lib/vfscore: use
 Unikraft includes
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

T29wcywgc29ycnkgYWJvdXQgdGhhdC4gVGhlIHYzIGZpeGVzIHRoYXQuCgpTaGFyYW4gU2FudGhh
bmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xhYi5ldT4gd3JpdGVzOgoKPiBIZWxsbyBZdXJpLAo+
Cj4gVGhlIHBhdGNoIGZhaWxzIHdpdGggdGhlIGNvbXBpbGF0aW9uIGVycm9yLgo+Cj4gSW4gZmls
ZSBpbmNsdWRlZCBmcm9tIFVuaWtyYWZ0L2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9maWxl
Lmg6NDE6MCwKPiAgICAgICAgICAgICAgICAgICBmcm9tIFVuaWtyYWZ0L2xpYi92ZnNjb3JlL2Zk
LmM6NDA6Cj4gVW5pa3JhZnQvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2RlbnRyeS5oOjQ1
OjI6IGVycm9yOiBleHBlY3RlZCAKPiBzcGVjaWZpZXItcXVhbGlmaWVyLWxpc3QgYmVmb3JlIOKA
mExJU1RfRU5UUlnigJkKPiAgICBMSVNUX0VOVFJZKGRlbnRyeSkgZF9saW5rOyAvKiBsaW5rIGZv
ciBoYXNoIGxpc3QgKi8KPgo+IFByb2JhYmx5IGl0IHdvdWxkIGJlIHdpc2UgdG8gZml4IGl0Lgo+
Cj4KPiBUaGVyZSBpcyBhbHNvIGEgZGVwZW5kZW5jeSBvbiBVS19MT0NLIHdoaWNoIGlzIG1pc3Np
bmcgaW4gQ29uZmlnLnVrIGJ1dCAKPiB0aGlzIGlzIGFkZGVkIGFzIGEgcGFydCBvZiBwYXRjaCAy
Mi4KPgo+IFRoYW5rcyAmIFJlZ2FyZHMKPiBTaGFyYW4KPgo+Cj4gT24gMi80LzE5IDM6MzcgUE0s
IFl1cmkgVm9sY2hrb3Ygd3JvdGU6Cj4+IFNpZ25lZC1vZmYtYnk6IFl1cmkgVm9sY2hrb3YgPHl1
cmkudm9sY2hrb3ZAbmVjbGFiLmV1Pgo+PiAtLS0KPj4gICBsaWIvdmZzY29yZS9kZW50cnkuYyAg
ICAgICAgICAgICAgICAgfCAgNyArKy0tCj4+ICAgbGliL3Zmc2NvcmUvZm9wcy5jICAgICAgICAg
ICAgICAgICAgIHwgMTEgKysrLS0tLQo+PiAgIGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9k
ZW50cnkuaCB8ICA0ICstLQo+PiAgIGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9maWxlLmgg
ICB8ICAxICsKPj4gICBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvbW91bnQuaCAgfCAgNiAr
Ky0tCj4+ICAgbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3ByZXguaCAgIHwgIDEgLQo+PiAg
IGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS91aW8uaCAgICB8ICAxIC0KPj4gICBsaWIvdmZz
Y29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUuaCAgfCAxMyArKysrLS0tLQo+PiAgIGxpYi92ZnNj
b3JlL2xvb2t1cC5jICAgICAgICAgICAgICAgICB8ICA0ICstLQo+PiAgIGxpYi92ZnNjb3JlL21h
aW4uYyAgICAgICAgICAgICAgICAgICB8IDQ4ICsrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
Pj4gICBsaWIvdmZzY29yZS9tb3VudC5jICAgICAgICAgICAgICAgICAgfCAyMSArKysrKy0tLS0t
LS0KPj4gICBsaWIvdmZzY29yZS9zdGRpby5jICAgICAgICAgICAgICAgICAgfCAgMyArKwo+PiAg
IGxpYi92ZnNjb3JlL3N1YnJfdWlvLmMgICAgICAgICAgICAgICB8ICA0ICstLQo+PiAgIGxpYi92
ZnNjb3JlL3N5c2NhbGxzLmMgICAgICAgICAgICAgICB8IDEyICsrKystLS0KPj4gICBsaWIvdmZz
Y29yZS90YXNrLmMgICAgICAgICAgICAgICAgICAgfCAgMiArLQo+PiAgIGxpYi92ZnNjb3JlL3Zm
cy5oICAgICAgICAgICAgICAgICAgICB8IDIzICsrKy0tLS0tLS0tLS0KPj4gICBsaWIvdmZzY29y
ZS92bm9kZS5jICAgICAgICAgICAgICAgICAgfCAgNiArKy0tCj4+ICAgMTcgZmlsZXMgY2hhbmdl
ZCwgNjMgaW5zZXJ0aW9ucygrKSwgMTA0IGRlbGV0aW9ucygtKQo+PiAKPj4gZGlmZiAtLWdpdCBh
L2xpYi92ZnNjb3JlL2RlbnRyeS5jIGIvbGliL3Zmc2NvcmUvZGVudHJ5LmMKPj4gaW5kZXggZWZj
MTBiZDYuLmNjY2UwN2QxIDEwMDY0NAo+PiAtLS0gYS9saWIvdmZzY29yZS9kZW50cnkuYwo+PiAr
KysgYi9saWIvdmZzY29yZS9kZW50cnkuYwo+PiBAQCAtMzIsMTAgKzMyLDExIEBACj4+ICAgCj4+
ICAgI2luY2x1ZGUgPHN0cmluZy5oPgo+PiAgICNpbmNsdWRlIDxzdGRsaWIuaD4KPj4gLSNpbmNs
dWRlIDxzeXMvcGFyYW0uaD4KPj4gICAKPj4gLSNpbmNsdWRlIDxvc3YvZGVudHJ5Lmg+Cj4+IC0j
aW5jbHVkZSA8b3N2L3Zub2RlLmg+Cj4+ICsjaW5jbHVkZSA8dWsvbGlzdC5oPgo+PiArI2luY2x1
ZGUgPHZmc2NvcmUvZGVudHJ5Lmg+Cj4+ICsjaW5jbHVkZSA8dmZzY29yZS92bm9kZS5oPgo+PiAr
I2luY2x1ZGUgPHVrL211dGV4Lmg+Cj4+ICAgI2luY2x1ZGUgInZmcy5oIgo+PiAgIAo+PiAgICNk
ZWZpbmUgREVOVFJZX0JVQ0tFVFMgMzIKPj4gZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2ZvcHMu
YyBiL2xpYi92ZnNjb3JlL2ZvcHMuYwo+PiBpbmRleCBmMWMxNjFlNy4uYjQ1ODNkMjAgMTAwNjQ0
Cj4+IC0tLSBhL2xpYi92ZnNjb3JlL2ZvcHMuYwo+PiArKysgYi9saWIvdmZzY29yZS9mb3BzLmMK
Pj4gQEAgLTMzLDE0ICszMywxMyBAQAo+PiAgICAqIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhU
UkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCj4+ICAgICovCj4+ICAgCj4+ICsjZGVmaW5l
IF9HTlVfU09VUkNFCj4+ICAgI2luY2x1ZGUgPGZjbnRsLmg+Cj4+ICAgI2luY2x1ZGUgPHN5cy9z
dGF0Lmg+Cj4+IC0jaW5jbHVkZSA8b3N2L2ZpbGUuaD4KPj4gLSNpbmNsdWRlIDxvc3YvcG9sbC5o
Pgo+PiAtI2luY2x1ZGUgPGZzL3Zmcy92ZnMuaD4KPj4gLSNpbmNsdWRlIDxvc3YvdmZzX2ZpbGUu
aGg+Cj4+IC0jaW5jbHVkZSA8b3N2L21tdS5oaD4KPj4gLSNpbmNsdWRlIDxvc3YvcGFnZWNhY2hl
LmhoPgo+PiArI2luY2x1ZGUgPHZmc2NvcmUvZmlsZS5oPgo+PiArI2luY2x1ZGUgInZmcy5oIgo+
PiArCj4+ICsjaW5jbHVkZSA8dWsvYXNzZXJ0Lmg+Cj4+ICAgCj4+ICAgaW50IHZmc19jbG9zZShz
dHJ1Y3QgdmZzY29yZV9maWxlICpmcCkKPj4gICB7Cj4+IGRpZmYgLS1naXQgYS9saWIvdmZzY29y
ZS9pbmNsdWRlL3Zmc2NvcmUvZGVudHJ5LmggYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUv
ZGVudHJ5LmgKPj4gaW5kZXggOWNmZThkYWMuLmJhMWMzNDU3IDEwMDY0NAo+PiAtLS0gYS9saWIv
dmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZGVudHJ5LmgKPj4gKysrIGIvbGliL3Zmc2NvcmUvaW5j
bHVkZS92ZnNjb3JlL2RlbnRyeS5oCj4+IEBAIC0zNiw4ICszNiw4IEBACj4+ICAgI2lmbmRlZiBf
T1NWX0RFTlRSWV9ICj4+ICAgI2RlZmluZSBfT1NWX0RFTlRSWV9IIDEKPj4gICAKPj4gLSNpbmNs
dWRlIDxvc3YvbXV0ZXguaD4KPj4gLSNpbmNsdWRlIDxic2Qvc3lzL3N5cy9xdWV1ZS5oPgo+PiAr
I2luY2x1ZGUgPHVrL211dGV4Lmg+Cj4+ICsjaW5jbHVkZSA8dWsvbGlzdC5oPgo+PiAgIAo+PiAg
IHN0cnVjdCB2bm9kZTsKPj4gICAKPj4gZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUv
dmZzY29yZS9maWxlLmggYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZmlsZS5oCj4+IGlu
ZGV4IDk5ODU3MDZmLi43Mzg3MjY1ZCAxMDA2NDQKPj4gLS0tIGEvbGliL3Zmc2NvcmUvaW5jbHVk
ZS92ZnNjb3JlL2ZpbGUuaAo+PiArKysgYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZmls
ZS5oCj4+IEBAIC0zOCw2ICszOCw3IEBACj4+ICAgCj4+ICAgI2luY2x1ZGUgPHN0ZGludC5oPgo+
PiAgICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KPj4gKyNpbmNsdWRlIDx2ZnNjb3JlL2RlbnRyeS5o
Pgo+PiAgIAo+PiAgICNpZmRlZiBfX2NwbHVzcGx1cwo+PiAgIGV4dGVybiAiQyIgewo+PiBkaWZm
IC0tZ2l0IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmggYi9saWIvdmZzY29y
ZS9pbmNsdWRlL3Zmc2NvcmUvbW91bnQuaAo+PiBpbmRleCBiNjhkM2M5OC4uZTEyYTEwMzkgMTAw
NjQ0Cj4+IC0tLSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9tb3VudC5oCj4+ICsrKyBi
L2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9tb3VudC5oCj4+IEBAIC0zMiwxMCArMzIsMTAg
QEAKPj4gICAjaWZuZGVmIF9TWVNfTU9VTlRfSF8KPj4gICAjZGVmaW5lIF9TWVNfTU9VTlRfSF8K
Pj4gICAKPj4gLSNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KPj4gICAjaW5jbHVkZSA8c3lzL3N0YXRm
cy5oPgo+PiAtI2luY2x1ZGUgPG9zdi92bm9kZS5oPgo+PiAtI2luY2x1ZGUgPGJzZC9zeXMvc3lz
L3F1ZXVlLmg+Cj4+ICsjaW5jbHVkZSA8bGltaXRzLmg+Cj4+ICsjaW5jbHVkZSA8dWsvbGlzdC5o
Pgo+PiArI2luY2x1ZGUgPHZmc2NvcmUvdm5vZGUuaD4KPj4gICAKPj4gICAjaWZkZWYgX0tFUk5F
TAo+PiAgIAo+PiBkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3ByZXgu
aCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9wcmV4LmgKPj4gaW5kZXggNmNiZTMxMzAu
LjhhMzA2ZDU0IDEwMDY0NAo+PiAtLS0gYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvcHJl
eC5oCj4+ICsrKyBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9wcmV4LmgKPj4gQEAgLTM4
LDcgKzM4LDYgQEAKPj4gICAKPj4gICAKPj4gICAjaW5jbHVkZSA8dW5pc3RkLmg+Cj4+IC0jaW5j
bHVkZSA8b3N2L2ZjbnRsLmg+Cj4+ICAgCj4+ICAgI2RlZmluZQlCU0laRQk1MTIJCS8qIHNpemUg
b2Ygc2Vjb25kYXJ5IGJsb2NrIChieXRlcykgKi8KPj4gICAKPj4gZGlmZiAtLWdpdCBhL2xpYi92
ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS91aW8uaCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29y
ZS91aW8uaAo+PiBpbmRleCBkN2Y3ZmNlOS4uOGFkMWUzZmIgMTAwNjQ0Cj4+IC0tLSBhL2xpYi92
ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS91aW8uaAo+PiArKysgYi9saWIvdmZzY29yZS9pbmNsdWRl
L3Zmc2NvcmUvdWlvLmgKPj4gQEAgLTMzLDcgKzMzLDYgQEAKPj4gICAjaWZuZGVmIF9VSU9fSF8K
Pj4gICAjZGVmaW5lCV9VSU9fSF8KPj4gICAKPj4gLSNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KPj4g
ICAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Cj4+ICAgI2luY2x1ZGUgPHN5cy91aW8uaD4KPj4gICAj
aW5jbHVkZSA8bGltaXRzLmg+Cj4+IGRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zm
c2NvcmUvdm5vZGUuaCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5oCj4+IGlu
ZGV4IGQzMGE5NDExLi40OWZkNGQzNiAxMDA2NDQKPj4gLS0tIGEvbGliL3Zmc2NvcmUvaW5jbHVk
ZS92ZnNjb3JlL3Zub2RlLmgKPj4gKysrIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Zu
b2RlLmgKPj4gQEAgLTM1LDEzICszNSwxNCBAQAo+PiAgIAo+PiAgICNpZmRlZiBfS0VSTkVMCj4+
ICAgCj4+IC0jaW5jbHVkZSA8c3lzL2NkZWZzLmg+Cj4+ICAgI2luY2x1ZGUgPHN5cy9zdGF0Lmg+
Cj4+IC0jaW5jbHVkZSA8b3N2L3ByZXguaD4KPj4gLSNpbmNsdWRlIDxvc3YvdWlvLmg+Cj4+IC0j
aW5jbHVkZSA8b3N2L211dGV4Lmg+Cj4+IC0jaW5jbHVkZSAiZmlsZS5oIgo+PiAtI2luY2x1ZGUg
ImRpcmVudC5oIgo+PiArI2luY2x1ZGUgPGRpcmVudC5oPgo+PiArCj4+ICsjaW5jbHVkZSA8dWsv
bXV0ZXguaD4KPj4gKyNpbmNsdWRlIDx1ay9saXN0Lmg+Cj4+ICsjaW5jbHVkZSA8dGltZS5oPgo+
PiArI2luY2x1ZGUgPHZmc2NvcmUvdWlvLmg+Cj4+ICsjaW5jbHVkZSA8dmZzY29yZS9kZW50cnku
aD4KPj4gICAKPj4gICBzdHJ1Y3QgdmZzb3BzOwo+PiAgIHN0cnVjdCB2bm9wczsKPj4gZGlmZiAt
LWdpdCBhL2xpYi92ZnNjb3JlL2xvb2t1cC5jIGIvbGliL3Zmc2NvcmUvbG9va3VwLmMKPj4gaW5k
ZXggZjdhMzhjNGYuLjk4MzdlODFmIDEwMDY0NAo+PiAtLS0gYS9saWIvdmZzY29yZS9sb29rdXAu
Ywo+PiArKysgYi9saWIvdmZzY29yZS9sb29rdXAuYwo+PiBAQCAtMzYsOCArMzYsOCBAQAo+PiAg
ICNpbmNsdWRlIDxzdGRsaWIuaD4KPj4gICAjaW5jbHVkZSA8c3lzL3BhcmFtLmg+Cj4+ICAgCj4+
IC0jaW5jbHVkZSA8b3N2L2RlbnRyeS5oPgo+PiAtI2luY2x1ZGUgPG9zdi92bm9kZS5oPgo+PiAr
I2luY2x1ZGUgPHZmc2NvcmUvZGVudHJ5Lmg+Cj4+ICsjaW5jbHVkZSA8dmZzY29yZS92bm9kZS5o
Pgo+PiAgICNpbmNsdWRlICJ2ZnMuaCIKPj4gICAKPj4gICBzdGF0aWMgc3NpemVfdAo+PiBkaWZm
IC0tZ2l0IGEvbGliL3Zmc2NvcmUvbWFpbi5jIGIvbGliL3Zmc2NvcmUvbWFpbi5jCj4+IGluZGV4
IDc0ODc2ZGMxLi45MGRmM2Q3MSAxMDA2NDQKPj4gLS0tIGEvbGliL3Zmc2NvcmUvbWFpbi5jCj4+
ICsrKyBiL2xpYi92ZnNjb3JlL21haW4uYwo+PiBAQCAtMzAsNTMgKzMwLDIzIEBACj4+ICAgICog
U1VDSCBEQU1BR0UuCj4+ICAgICovCj4+ICAgCj4+IC0jaW5jbHVkZSA8c3lzL3BhcmFtLmg+Cj4+
ICsjZGVmaW5lIF9HTlVfU09VUkNFCj4+ICsKPj4gICAjaW5jbHVkZSA8c3lzL3N0YXR2ZnMuaD4K
Pj4gICAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KPj4gLSNpbmNsdWRlIDxzeXMvdGltZS5oPgo+PiAt
I2luY2x1ZGUgPHN5cy9zZW5kZmlsZS5oPgo+PiAtCj4+ICAgI2luY2x1ZGUgPGxpbWl0cy5oPgo+
PiAtI2luY2x1ZGUgPHVuaXN0ZC5oPgo+PiAtI2luY2x1ZGUgPHN0ZGlvLmg+Cj4+IC0jaW5jbHVk
ZSA8c3RkaW50Lmg+Cj4+IC0jaW5jbHVkZSA8c3RkbGliLmg+Cj4+ICAgI2luY2x1ZGUgPHN0cmlu
Zy5oPgo+PiAgICNpbmNsdWRlIDxlcnJuby5oPgo+PiAtI2luY2x1ZGUgPHNpZ25hbC5oPgo+PiAt
I2RlZmluZSBvcGVuIF9fb3Blbl92YXJpYWRpYwo+PiAtI2RlZmluZSBmY250bCBfX2ZjbnRsX3Zh
cmlhZGljCj4+ICAgI2luY2x1ZGUgPGZjbnRsLmg+Cj4+IC0jdW5kZWYgb3Blbgo+PiAtI3VuZGVm
IGZjbnRsCj4+IC0KPj4gLSNpbmNsdWRlIDxvc3YvcHJleC5oPgo+PiAtI2luY2x1ZGUgPG9zdi92
bm9kZS5oPgo+PiAtI2luY2x1ZGUgPG9zdi9zdHViYmluZy5oaD4KPj4gLSNpbmNsdWRlIDxvc3Yv
aW9jdGwuaD4KPj4gLSNpbmNsdWRlIDxvc3YvdHJhY2UuaGg+Cj4+IC0jaW5jbHVkZSA8b3N2L3J1
bi5oaD4KPj4gLSNpbmNsdWRlIDxkcml2ZXJzL2NvbnNvbGUuaGg+Cj4+IC0KPj4gKyNpbmNsdWRl
IDx2ZnNjb3JlL3ByZXguaD4KPj4gKyNpbmNsdWRlIDx2ZnNjb3JlL3Zub2RlLmg+Cj4+ICAgI2lu
Y2x1ZGUgInZmcy5oIgo+PiAtCj4+IC0jaW5jbHVkZSAibGliYy9pbnRlcm5hbC9saWJjLmgiCj4+
IC0KPj4gLSNpbmNsdWRlIDxhbGdvcml0aG0+Cj4+IC0jaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4K
Pj4gLQo+PiAgICNpbmNsdWRlIDxzeXMvZmlsZS5oPgo+PiAtCj4+IC0jaW5jbHVkZSAiZnMvZnMu
aGgiCj4+IC0jaW5jbHVkZSAibGliYy9saWJjLmhoIgo+PiAtCj4+IC0jaW5jbHVkZSA8bW50ZW50
Lmg+Cj4+IC0jaW5jbHVkZSA8c3lzL21tYW4uaD4KPj4gLQo+PiAtI2luY2x1ZGUgPG9zdi9jbG9j
ay5oaD4KPj4gLSNpbmNsdWRlIDxhcGkvdXRpbWUuaD4KPj4gLSNpbmNsdWRlIDxjaHJvbm8+Cj4+
IC0KPj4gKyNpbmNsdWRlIDxzdGRhcmcuaD4KPj4gKyNpbmNsdWRlIDx2ZnNjb3JlL2ZpbGUuaD4K
Pj4gKyNpbmNsdWRlIDx2ZnNjb3JlL21vdW50Lmg+Cj4+ICsjaW5jbHVkZSA8dmZzY29yZS9mcy5o
Pgo+PiArI2luY2x1ZGUgPHVrL2VycnB0ci5oPgo+PiAgIAo+PiAgICNpZmRlZiBERUJVR19WRlMK
Pj4gICBpbnQJdmZzX2RlYnVnID0gVkZTREJfRkxBR1M7Cj4+IGRpZmYgLS1naXQgYS9saWIvdmZz
Y29yZS9tb3VudC5jIGIvbGliL3Zmc2NvcmUvbW91bnQuYwo+PiBpbmRleCAxMGMyN2ZhZC4uMDY5
MjJmZmIgMTAwNjQ0Cj4+IC0tLSBhL2xpYi92ZnNjb3JlL21vdW50LmMKPj4gKysrIGIvbGliL3Zm
c2NvcmUvbW91bnQuYwo+PiBAQCAtMzQsMjcgKzM0LDIyIEBACj4+ICAgICogdmZzX21vdW50LmMg
LSBtb3VudCBvcGVyYXRpb25zCj4+ICAgICovCj4+ICAgCj4+IC0jaW5jbHVkZSA8c3lzL3N0YXQu
aD4KPj4gICAjaW5jbHVkZSA8c3lzL3BhcmFtLmg+Cj4+IC0jaW5jbHVkZSA8ZGlyZW50Lmg+Cj4+
IC0KPj4gICAjaW5jbHVkZSA8bGltaXRzLmg+Cj4+ICAgI2luY2x1ZGUgPHVuaXN0ZC5oPgo+PiAg
ICNpbmNsdWRlIDxzdGRsaWIuaD4KPj4gICAjaW5jbHVkZSA8c3RyaW5nLmg+Cj4+ICAgI2luY2x1
ZGUgPHN0ZGlvLmg+Cj4+ICAgI2luY2x1ZGUgPGVycm5vLmg+Cj4+IC0jaW5jbHVkZSA8ZmNudGwu
aD4KPj4gLQo+PiAtI2luY2x1ZGUgPG9zdi9wcmV4Lmg+Cj4+IC0jaW5jbHVkZSA8b3N2L3Zub2Rl
Lmg+Cj4+IC0jaW5jbHVkZSA8b3N2L2RldmljZS5oPgo+PiAtI2luY2x1ZGUgPG9zdi9kZWJ1Zy5o
Pgo+PiAtI2luY2x1ZGUgPG9zdi9tdXRleC5oPgo+PiAgICNpbmNsdWRlICJ2ZnMuaCIKPj4gLQo+
PiAtI2luY2x1ZGUgPG1lbW9yeT4KPj4gLSNpbmNsdWRlIDxsaXN0Pgo+PiArI2luY2x1ZGUgPHN5
cy90eXBlcy5oPgo+PiArI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Cj4+ICsjaW5jbHVkZSA8dGltZS5o
Pgo+PiArI2luY2x1ZGUgPHVrL2xpc3QuaD4KPj4gKyNpbmNsdWRlIDx1ay9tdXRleC5oPgo+PiAr
I2luY2x1ZGUgPHZmc2NvcmUvcHJleC5oPgo+PiArI2luY2x1ZGUgPHZmc2NvcmUvZGVudHJ5Lmg+
Cj4+ICsjaW5jbHVkZSA8dmZzY29yZS92bm9kZS5oPgo+PiAgIAo+PiAgIC8qCj4+ICAgICogTGlz
dCBmb3IgVkZTIG1vdW50IHBvaW50cy4KPj4gZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3N0ZGlv
LmMgYi9saWIvdmZzY29yZS9zdGRpby5jCj4+IGluZGV4IGE5YmRmZDYxLi43ZDc0OTQ0MiAxMDA2
NDQKPj4gLS0tIGEvbGliL3Zmc2NvcmUvc3RkaW8uYwo+PiArKysgYi9saWIvdmZzY29yZS9zdGRp
by5jCj4+IEBAIC0zNCw5ICszNCwxMiBAQAo+PiAgICAqLwo+PiAgIAo+PiAgICNpbmNsdWRlIDx2
ZnNjb3JlL2ZpbGUuaD4KPj4gKyNpbmNsdWRlIDx2ZnNjb3JlL2ZzLmg+Cj4+ICAgI2luY2x1ZGUg
PHVrL3BsYXQvY29uc29sZS5oPgo+PiAgICNpbmNsdWRlIDx1ay9lc3NlbnRpYWxzLmg+Cj4+ICAg
I2luY2x1ZGUgPHRlcm1pb3MuaD4KPj4gKyNpbmNsdWRlIDx2ZnNjb3JlL3Zub2RlLmg+Cj4+ICsj
aW5jbHVkZSA8dW5pc3RkLmg+Cj4+ICAgCj4+ICAgLyogT25lIGZ1bmN0aW9uIGZvciBzdGRlcnIg
YW5kIHN0ZG91dCAqLwo+PiAgIHN0YXRpYyBzc2l6ZV90IHN0ZG91dF93cml0ZShzdHJ1Y3QgdmZz
Y29yZV9maWxlICp2ZnNjb3JlX2ZpbGUgX191bnVzZWQsCj4+IGRpZmYgLS1naXQgYS9saWIvdmZz
Y29yZS9zdWJyX3Vpby5jIGIvbGliL3Zmc2NvcmUvc3Vicl91aW8uYwo+PiBpbmRleCA4Mjc2ZDZk
NC4uYmJjYTMzNjIgMTAwNjQ0Cj4+IC0tLSBhL2xpYi92ZnNjb3JlL3N1YnJfdWlvLmMKPj4gKysr
IGIvbGliL3Zmc2NvcmUvc3Vicl91aW8uYwo+PiBAQCAtMzksMTEgKzM5LDExIEBACj4+ICAgICoJ
QCgjKWtlcm5fc3Vici5jCTguMyAoQmVya2VsZXkpIDEvMjEvOTQKPj4gICAgKi8KPj4gICAKPj4g
LSNpbmNsdWRlIDxhc3NlcnQuaD4KPj4gKyNpbmNsdWRlIDx1ay9hc3NlcnQuaD4KPj4gICAjaW5j
bHVkZSA8ZXJybm8uaD4KPj4gICAjaW5jbHVkZSA8c3RkbGliLmg+Cj4+ICAgI2luY2x1ZGUgPHN0
cmluZy5oPgo+PiAtI2luY2x1ZGUgPG9zdi91aW8uaD4KPj4gKyNpbmNsdWRlIDx2ZnNjb3JlL3Vp
by5oPgo+PiAgIAo+PiAgIGludAo+PiAgIHVpb21vdmUodm9pZCAqY3AsIGludCBuLCBzdHJ1Y3Qg
dWlvICp1aW8pCj4+IGRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9zeXNjYWxscy5jIGIvbGliL3Zm
c2NvcmUvc3lzY2FsbHMuYwo+PiBpbmRleCA0ZTU1MzM3Zi4uZjUwZmIzOGYgMTAwNjQ0Cj4+IC0t
LSBhL2xpYi92ZnNjb3JlL3N5c2NhbGxzLmMKPj4gKysrIGIvbGliL3Zmc2NvcmUvc3lzY2FsbHMu
Ywo+PiBAQCAtMzUsNyArMzUsOCBAQAo+PiAgICAqICAgICAgICAgICAgICAgICAgYSBWRlMgc3lz
dGVtIGNhbGwuCj4+ICAgICovCj4+ICAgCj4+IC0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KPj4gKyNk
ZWZpbmUgX0JTRF9TT1VSQ0UKPj4gKyNkZWZpbmUgX0dOVV9TT1VSQ0UKPj4gICAjaW5jbHVkZSA8
ZGlyZW50Lmg+Cj4+ICAgCj4+ICAgI2luY2x1ZGUgPGxpbWl0cy5oPgo+PiBAQCAtNDYsMTEgKzQ3
LDEyIEBACj4+ICAgI2luY2x1ZGUgPGVycm5vLmg+Cj4+ICAgI2luY2x1ZGUgPGZjbnRsLmg+Cj4+
ICAgCj4+IC0jaW5jbHVkZSA8b3N2L3ByZXguaD4KPj4gLSNpbmNsdWRlIDxvc3Yvdm5vZGUuaD4K
Pj4gLSNpbmNsdWRlIDxvc3YvdmZzX2ZpbGUuaGg+Cj4+ICsjaW5jbHVkZSA8dmZzY29yZS9wcmV4
Lmg+Cj4+ICsjaW5jbHVkZSA8dmZzY29yZS92bm9kZS5oPgo+PiArI2luY2x1ZGUgPHZmc2NvcmUv
ZmlsZS5oPgo+PiArCj4+ICAgI2luY2x1ZGUgInZmcy5oIgo+PiAtI2luY2x1ZGUgPGZzL2ZzLmho
Pgo+PiArI2luY2x1ZGUgPHZmc2NvcmUvZnMuaD4KPj4gICAKPj4gICBleHRlcm4gc3RydWN0IHRh
c2sgKm1haW5fdGFzazsKPj4gICAKPj4gZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3Rhc2suYyBi
L2xpYi92ZnNjb3JlL3Rhc2suYwo+PiBpbmRleCA0Y2ViMTIzYi4uNzYzNWJkN2EgMTAwNjQ0Cj4+
IC0tLSBhL2xpYi92ZnNjb3JlL3Rhc2suYwo+PiArKysgYi9saWIvdmZzY29yZS90YXNrLmMKPj4g
QEAgLTQxLDcgKzQxLDcgQEAKPj4gICAjaW5jbHVkZSA8c3RkaW8uaD4KPj4gICAjaW5jbHVkZSA8
ZXJybm8uaD4KPj4gICAKPj4gLSNpbmNsdWRlIDxvc3YvcHJleC5oPgo+PiArI2luY2x1ZGUgPHZm
c2NvcmUvcHJleC5oPgo+PiAgICNpbmNsdWRlICJ2ZnMuaCIKPj4gICAKPj4gICAKPj4gZGlmZiAt
LWdpdCBhL2xpYi92ZnNjb3JlL3Zmcy5oIGIvbGliL3Zmc2NvcmUvdmZzLmgKPj4gaW5kZXggY2Q5
NDA5NzkuLjI1MzFmNzMwIDEwMDY0NAo+PiAtLS0gYS9saWIvdmZzY29yZS92ZnMuaAo+PiArKysg
Yi9saWIvdmZzY29yZS92ZnMuaAo+PiBAQCAtMzMsMjQgKzMzLDEyIEBACj4+ICAgI2lmbmRlZiBf
VkZTX0gKPj4gICAjZGVmaW5lIF9WRlNfSAo+PiAgIAo+PiAtI2luY2x1ZGUgPHN5cy9jZGVmcy5o
Pgo+PiAtI2luY2x1ZGUgPGFzc2VydC5oPgo+PiAtI2luY2x1ZGUgPGRpcmVudC5oPgo+PiAtI2lu
Y2x1ZGUgPGxpbWl0cy5oPgo+PiAtCj4+IC0jaW5jbHVkZSA8b3N2L3ByZXguaD4KPj4gLSNpbmNs
dWRlIDxvc3YvZmlsZS5oPgo+PiAtI2luY2x1ZGUgPG9zdi9tb3VudC5oPgo+PiAtI2luY2x1ZGUg
PG9zdi92bm9kZS5oPgo+PiAtI2luY2x1ZGUgPG9zdi9kZW50cnkuaD4KPj4gLSNpbmNsdWRlIDxv
c3YvZXJyb3IuaD4KPj4gLQo+PiAtLyoKPj4gLSAqIEltcG9ydCB2bm9kZSBhdHRyaWJ1dGVzIGZs
YWdzCj4+IC0gKi8KPj4gLSNpbmNsdWRlIDxvc3Yvdm5vZGVfYXR0ci5oPgo+PiArI2RlZmluZSBf
R05VX1NPVVJDRQo+PiArI2luY2x1ZGUgPHZmc2NvcmUvbW91bnQuaD4KPj4gICAKPj4gLS8qICNk
ZWZpbmUgREVCVUdfVkZTIDEgKi8KPj4gKyNpbmNsdWRlIDxsaW1pdHMuaD4KPj4gKyNpbmNsdWRl
IDxmY250bC5oPgo+PiArI2luY2x1ZGUgPHN5cy9zdGF0ZnMuaD4KPj4gICAKPj4gICAvKgo+PiAg
ICAqIFR1bmFibGUgcGFyYW1ldGVycwo+PiBAQCAtNTgsNyArNDYsNiBAQAo+PiAgICNkZWZpbmUg
RlNNQVhOQU1FUwkxNgkJLyogbWF4IGxlbmd0aCBvZiAnZmlsZSBzeXN0ZW0nIG5hbWUgKi8KPj4g
ICAKPj4gICAjaWZkZWYgREVCVUdfVkZTCj4+IC0jaW5jbHVkZSA8b3N2L2RlYnVnLmg+Cj4+ICAg
Cj4+ICAgZXh0ZXJuIGludCB2ZnNfZGVidWc7Cj4+ICAgCj4+IGRpZmYgLS1naXQgYS9saWIvdmZz
Y29yZS92bm9kZS5jIGIvbGliL3Zmc2NvcmUvdm5vZGUuYwo+PiBpbmRleCBmNTY0NTc3Zi4uODFm
NzhiZTggMTAwNjQ0Cj4+IC0tLSBhL2xpYi92ZnNjb3JlL3Zub2RlLmMKPj4gKysrIGIvbGliL3Zm
c2NvcmUvdm5vZGUuYwo+PiBAQCAtMzYsMTQgKzM2LDE2IEBACj4+ICAgCj4+ICAgI2luY2x1ZGUg
PGxpbWl0cy5oPgo+PiAgICNpbmNsdWRlIDx1bmlzdGQuaD4KPj4gKyNpbmNsdWRlIDxzdGRpbnQu
aD4KPj4gICAjaW5jbHVkZSA8c3RyaW5nLmg+Cj4+ICAgI2luY2x1ZGUgPHN0ZGxpYi5oPgo+PiAg
ICNpbmNsdWRlIDxzdGRpby5oPgo+PiAgICNpbmNsdWRlIDxlcnJuby5oPgo+PiAgICNpbmNsdWRl
IDxzeXMvc3RhdC5oPgo+PiAgIAo+PiAtI2luY2x1ZGUgPG9zdi9wcmV4Lmg+Cj4+IC0jaW5jbHVk
ZSA8b3N2L3Zub2RlLmg+Cj4+ICsjaW5jbHVkZSA8dmZzY29yZS9wcmV4Lmg+Cj4+ICsjaW5jbHVk
ZSA8dmZzY29yZS9kZW50cnkuaD4KPj4gKyNpbmNsdWRlIDx2ZnNjb3JlL3Zub2RlLmg+Cj4+ICAg
I2luY2x1ZGUgInZmcy5oIgo+PiAgIAo+PiAgIGVudW0gdnR5cGUgaWZ0b3Z0X3RhYlsxNl0gPSB7
Cj4+IAoKLS0gCll1cmkgVm9sY2hrb3YKU29mdHdhcmUgU3BlY2lhbGlzdAoKTkVDIEV1cm9wZSBM
dGQKS3VyZsO8cnN0ZW4tQW5sYWdlIDM2CkQtNjkxMTUgSGVpZGVsYmVyZwoKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcg
bGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5w
cm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Thu Feb 07 14:14:10 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 07 Feb 2019 14:14:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grkRN-0008U1-6M; Thu, 07 Feb 2019 14:14:09 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=6wD6=QO=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1grkRM-0008Tw-G2
 for minios-devel@lists.xen.org; Thu, 07 Feb 2019 14:14:08 +0000
X-Inumbo-ID: a10f2bca-2ae2-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id a10f2bca-2ae2-11e9-bc90-bc764e045a96;
 Thu, 07 Feb 2019 14:14:07 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id DDC4CF205F;
 Thu,  7 Feb 2019 15:14:05 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 8xMHPE7NXctT; Thu,  7 Feb 2019 15:14:05 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id B797BF202D
 for <minios-devel@lists.xen.org>; Thu,  7 Feb 2019 15:14:03 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Thu, 7 Feb 2019 15:14:03
 +0100
To: <minios-devel@lists.xen.org>
References: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
 <20190207135901.9122-2-yuri.volchkov@neclab.eu>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <5ddc6dbd-bb1f-75cb-df95-71873483ec6a@neclab.eu>
Date: Thu, 7 Feb 2019 15:14:03 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190207135901.9122-2-yuri.volchkov@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v3 01/23] include/uk: introduce
 __weak_alias macro
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Yuri Volchkov <yuri.volchkov@neclab.eu>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gWXVyaSwKClRoaXMgcGF0Y2ggc2VlbXMgZmluZS4KClJldmlld2VkLWJ5OiBTaGFyYW4g
U2FudGhhbmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xhYi5ldT4KClRoYW5rcyAmIFJlZ2FyZHMK
U2hhcmFuCgpPbiAyLzcvMTkgMjo1OCBQTSwgWXVyaSBWb2xjaGtvdiB3cm90ZToKPiBTaWduZWQt
b2ZmLWJ5OiBZdXJpIFZvbGNoa292IDx5dXJpLnZvbGNoa292QG5lY2xhYi5ldT4KPiAtLS0KPiAg
IGluY2x1ZGUvdWsvZXNzZW50aWFscy5oIHwgMTAgKysrKysrKysrKwo+ICAgMSBmaWxlIGNoYW5n
ZWQsIDEwIGluc2VydGlvbnMoKykKPiAKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS91ay9lc3NlbnRp
YWxzLmggYi9pbmNsdWRlL3VrL2Vzc2VudGlhbHMuaAo+IGluZGV4IDNjMTZlMzA4Li40N2UwNGY3
YyAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL3VrL2Vzc2VudGlhbHMuaAo+ICsrKyBiL2luY2x1ZGUv
dWsvZXNzZW50aWFscy5oCj4gQEAgLTc2LDYgKzc2LDE2IEBAIGV4dGVybiAiQyIgewo+ICAgI2lm
bmRlZiBfX2FsaWduCj4gICAjZGVmaW5lIF9fYWxpZ24oYnl0ZXMpICAgICAgICAgX19hdHRyaWJ1
dGVfXygoYWxpZ25lZChieXRlcykpKQo+ICAgI2VuZGlmCj4gKy8qIE5PVEU6IHdlYWsgYWxpYXNp
bmcgZG9lcyBub3Qgd29yayB3ZWxsIHdpdGggbGluay10aW1lIG9wdGltaXphdGlvbgo+ICsgKiBj
dXJyZW50bHkuIEhvcGVmdWxseSB0aGlzIHdpbGwgYmUgZml4ZWQgaW4gZ2NjIDkuIFRoZSBwcm9i
bGVtIGlzLAo+ICsgKiBpZiBhIHdlYWsgc3ltYm9sIGlzIHJlZmVyZW5jZWQgaW4gdGhlIGxpYnJh
cnksIGdjYyByZXNvbHZlcyBjYWxscwo+ICsgKiB0byB0aGF0IHdlYWsgc3ltYm9sIGR1cmluZyB0
aGUgZmlyc3Qgcm91bmQgb2YgbGlua2luZy4gRXZlbiBpZiBhCj4gKyAqIHN0cm9uZyBzeW1ib2wg
aXMgcHJvdmlkZWQgaW4gdGhlIG90aGVyIGxpYnJhcnkuCj4gKyAqLwo+ICsjaWZuZGVmIF9fd2Vh
a19hbGlhcwo+ICsjZGVmaW5lIF9fd2Vha19hbGlhcyhvbGQsIG5ldykgXAo+ICsJZXh0ZXJuIF9f
dHlwZW9mKG9sZCkgbmV3IF9fYXR0cmlidXRlX18oKHdlYWssIGFsaWFzKCNvbGQpKSkKPiArI2Vu
ZGlmCj4gICAKPiAgIC8qKgo+ICAgICAqIE1hcmsgYSBmdW5jdGlvbiBhcyBjb25zdHJ1Y3Rvcgo+
IAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9z
LWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0
cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Thu Feb 07 15:29:10 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 07 Feb 2019 15:29:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grlbw-0006yW-4G; Thu, 07 Feb 2019 15:29:08 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=6wD6=QO=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1grlbu-0006yR-L1
 for minios-devel@lists.xen.org; Thu, 07 Feb 2019 15:29:06 +0000
X-Inumbo-ID: 19145171-2aed-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 19145171-2aed-11e9-bc90-bc764e045a96;
 Thu, 07 Feb 2019 15:29:03 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 63BE0F205F;
 Thu,  7 Feb 2019 16:29:02 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id hboEUBVoZ0EZ; Thu,  7 Feb 2019 16:29:02 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 31184F202D
 for <minios-devel@lists.xen.org>; Thu,  7 Feb 2019 16:29:00 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Thu, 7 Feb 2019 16:28:38
 +0100
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
 <20190207135901.9122-9-yuri.volchkov@neclab.eu>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <2a750b1d-6c5d-813a-aa05-e33db4a4c80f@neclab.eu>
Date: Thu, 7 Feb 2019 16:28:38 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190207135901.9122-9-yuri.volchkov@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v3 08/23] lib/vfscore: use
 Unikraft includes
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gWXVyaSwKClRoaXMgcGF0Y2ggc2VlbXMgZmluZS4KClJldmlld2VkLWJ5OiBTaGFyYW4g
U2FudGhhbmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xhYi5ldT4KClRoYW5rcyAmIFJlZ2FyZHMK
U2hhcmFuCgpPbiAyLzcvMTkgMjo1OCBQTSwgWXVyaSBWb2xjaGtvdiB3cm90ZToKPiBTaWduZWQt
b2ZmLWJ5OiBZdXJpIFZvbGNoa292IDx5dXJpLnZvbGNoa292QG5lY2xhYi5ldT4KPiAtLS0KPiAg
IGxpYi92ZnNjb3JlL2RlbnRyeS5jICAgICAgICAgICAgICAgICB8ICA3ICsrLS0KPiAgIGxpYi92
ZnNjb3JlL2ZvcHMuYyAgICAgICAgICAgICAgICAgICB8IDExICsrKy0tLS0KPiAgIGxpYi92ZnNj
b3JlL2luY2x1ZGUvdmZzY29yZS9kZW50cnkuaCB8ICA0ICstLQo+ICAgbGliL3Zmc2NvcmUvaW5j
bHVkZS92ZnNjb3JlL21vdW50LmggIHwgIDYgKystLQo+ICAgbGliL3Zmc2NvcmUvaW5jbHVkZS92
ZnNjb3JlL3ByZXguaCAgIHwgIDEgLQo+ICAgbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Vp
by5oICAgIHwgIDEgLQo+ICAgbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Zub2RlLmggIHwg
MTMgKysrKy0tLS0KPiAgIGxpYi92ZnNjb3JlL2xvb2t1cC5jICAgICAgICAgICAgICAgICB8ICA0
ICstLQo+ICAgbGliL3Zmc2NvcmUvbWFpbi5jICAgICAgICAgICAgICAgICAgIHwgNDggKysrKysr
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICAgbGliL3Zmc2NvcmUvbW91bnQuYyAgICAgICAgICAg
ICAgICAgIHwgMjEgKysrKystLS0tLS0tCj4gICBsaWIvdmZzY29yZS9zdWJyX3Vpby5jICAgICAg
ICAgICAgICAgfCAgNCArLS0KPiAgIGxpYi92ZnNjb3JlL3N5c2NhbGxzLmMgICAgICAgICAgICAg
ICB8IDEyICsrKystLS0KPiAgIGxpYi92ZnNjb3JlL3Rhc2suYyAgICAgICAgICAgICAgICAgICB8
ICAyICstCj4gICBsaWIvdmZzY29yZS92ZnMuaCAgICAgICAgICAgICAgICAgICAgfCAyMyArKyst
LS0tLS0tLS0tCj4gICBsaWIvdmZzY29yZS92bm9kZS5jICAgICAgICAgICAgICAgICAgfCAgNiAr
Ky0tCj4gICAxNSBmaWxlcyBjaGFuZ2VkLCA1OSBpbnNlcnRpb25zKCspLCAxMDQgZGVsZXRpb25z
KC0pCj4gCj4gZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2RlbnRyeS5jIGIvbGliL3Zmc2NvcmUv
ZGVudHJ5LmMKPiBpbmRleCBlZmMxMGJkNi4uY2NjZTA3ZDEgMTAwNjQ0Cj4gLS0tIGEvbGliL3Zm
c2NvcmUvZGVudHJ5LmMKPiArKysgYi9saWIvdmZzY29yZS9kZW50cnkuYwo+IEBAIC0zMiwxMCAr
MzIsMTEgQEAKPiAgIAo+ICAgI2luY2x1ZGUgPHN0cmluZy5oPgo+ICAgI2luY2x1ZGUgPHN0ZGxp
Yi5oPgo+IC0jaW5jbHVkZSA8c3lzL3BhcmFtLmg+Cj4gICAKPiAtI2luY2x1ZGUgPG9zdi9kZW50
cnkuaD4KPiAtI2luY2x1ZGUgPG9zdi92bm9kZS5oPgo+ICsjaW5jbHVkZSA8dWsvbGlzdC5oPgo+
ICsjaW5jbHVkZSA8dmZzY29yZS9kZW50cnkuaD4KPiArI2luY2x1ZGUgPHZmc2NvcmUvdm5vZGUu
aD4KPiArI2luY2x1ZGUgPHVrL211dGV4Lmg+Cj4gICAjaW5jbHVkZSAidmZzLmgiCj4gICAKPiAg
ICNkZWZpbmUgREVOVFJZX0JVQ0tFVFMgMzIKPiBkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvZm9w
cy5jIGIvbGliL3Zmc2NvcmUvZm9wcy5jCj4gaW5kZXggZjFjMTYxZTcuLmI0NTgzZDIwIDEwMDY0
NAo+IC0tLSBhL2xpYi92ZnNjb3JlL2ZvcHMuYwo+ICsrKyBiL2xpYi92ZnNjb3JlL2ZvcHMuYwo+
IEBAIC0zMywxNCArMzMsMTMgQEAKPiAgICAqIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFD
VEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCj4gICAgKi8KPiAKPiArI2RlZmluZSBfR05VX1NP
VVJDRQpEbyB3ZSBuZWVkIG5vbi1wb3NpeCBmdW5jdGlvbnMKPiAgICNpbmNsdWRlIDxmY250bC5o
Pgo+ICAgI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Cj4gLSNpbmNsdWRlIDxvc3YvZmlsZS5oPgo+IC0j
aW5jbHVkZSA8b3N2L3BvbGwuaD4KPiAtI2luY2x1ZGUgPGZzL3Zmcy92ZnMuaD4KPiAtI2luY2x1
ZGUgPG9zdi92ZnNfZmlsZS5oaD4KPiAtI2luY2x1ZGUgPG9zdi9tbXUuaGg+Cj4gLSNpbmNsdWRl
IDxvc3YvcGFnZWNhY2hlLmhoPgo+ICsjaW5jbHVkZSA8dmZzY29yZS9maWxlLmg+Cj4gKyNpbmNs
dWRlICJ2ZnMuaCIKPiArCj4gKyNpbmNsdWRlIDx1ay9hc3NlcnQuaD4KPiAgIAo+ICAgaW50IHZm
c19jbG9zZShzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCkKPiAgIHsKPiBkaWZmIC0tZ2l0IGEvbGli
L3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2RlbnRyeS5oIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92
ZnNjb3JlL2RlbnRyeS5oCj4gaW5kZXggOWNmZThkYWMuLmJhMWMzNDU3IDEwMDY0NAo+IC0tLSBh
L2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9kZW50cnkuaAo+ICsrKyBiL2xpYi92ZnNjb3Jl
L2luY2x1ZGUvdmZzY29yZS9kZW50cnkuaAo+IEBAIC0zNiw4ICszNiw4IEBACj4gICAjaWZuZGVm
IF9PU1ZfREVOVFJZX0gKPiAgICNkZWZpbmUgX09TVl9ERU5UUllfSCAxCj4gICAKPiAtI2luY2x1
ZGUgPG9zdi9tdXRleC5oPgo+IC0jaW5jbHVkZSA8YnNkL3N5cy9zeXMvcXVldWUuaD4KPiArI2lu
Y2x1ZGUgPHVrL211dGV4Lmg+Cj4gKyNpbmNsdWRlIDx1ay9saXN0Lmg+Cj4gICAKPiAgIHN0cnVj
dCB2bm9kZTsKPiAgIAo+IGRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUv
bW91bnQuaCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9tb3VudC5oCj4gaW5kZXggYjY4
ZDNjOTguLmUxMmExMDM5IDEwMDY0NAo+IC0tLSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29y
ZS9tb3VudC5oCj4gKysrIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmgKPiBA
QCAtMzIsMTAgKzMyLDEwIEBACj4gICAjaWZuZGVmIF9TWVNfTU9VTlRfSF8KPiAgICNkZWZpbmUg
X1NZU19NT1VOVF9IXwo+ICAgCj4gLSNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KPiAgICNpbmNsdWRl
IDxzeXMvc3RhdGZzLmg+Cj4gLSNpbmNsdWRlIDxvc3Yvdm5vZGUuaD4KPiAtI2luY2x1ZGUgPGJz
ZC9zeXMvc3lzL3F1ZXVlLmg+Cj4gKyNpbmNsdWRlIDxsaW1pdHMuaD4KPiArI2luY2x1ZGUgPHVr
L2xpc3QuaD4KPiArI2luY2x1ZGUgPHZmc2NvcmUvdm5vZGUuaD4KPiAgIAo+ICAgI2lmZGVmIF9L
RVJORUwKPiAgIAo+IGRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvcHJl
eC5oIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3ByZXguaAo+IGluZGV4IDZjYmUzMTMw
Li44YTMwNmQ1NCAxMDA2NDQKPiAtLS0gYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvcHJl
eC5oCj4gKysrIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3ByZXguaAo+IEBAIC0zOCw3
ICszOCw2IEBACj4gICAKPiAgIAo+ICAgI2luY2x1ZGUgPHVuaXN0ZC5oPgo+IC0jaW5jbHVkZSA8
b3N2L2ZjbnRsLmg+Cj4gICAKPiAgICNkZWZpbmUJQlNJWkUJNTEyCQkvKiBzaXplIG9mIHNlY29u
ZGFyeSBibG9jayAoYnl0ZXMpICovCj4gICAKPiBkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvaW5j
bHVkZS92ZnNjb3JlL3Vpby5oIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Vpby5oCj4g
aW5kZXggZDdmN2ZjZTkuLjhhZDFlM2ZiIDEwMDY0NAo+IC0tLSBhL2xpYi92ZnNjb3JlL2luY2x1
ZGUvdmZzY29yZS91aW8uaAo+ICsrKyBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS91aW8u
aAo+IEBAIC0zMyw3ICszMyw2IEBACj4gICAjaWZuZGVmIF9VSU9fSF8KPiAgICNkZWZpbmUJX1VJ
T19IXwo+ICAgCj4gLSNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KPiAgICNpbmNsdWRlIDxzeXMvdHlw
ZXMuaD4KPiAgICNpbmNsdWRlIDxzeXMvdWlvLmg+Cj4gICAjaW5jbHVkZSA8bGltaXRzLmg+Cj4g
ZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5oIGIvbGliL3Zm
c2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Zub2RlLmgKPiBpbmRleCBkMzBhOTQxMS4uNDlmZDRkMzYg
MTAwNjQ0Cj4gLS0tIGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Zub2RlLmgKPiArKysg
Yi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUuaAo+IEBAIC0zNSwxMyArMzUsMTQg
QEAKPiAgIAo+ICAgI2lmZGVmIF9LRVJORUwKPiAgIAo+IC0jaW5jbHVkZSA8c3lzL2NkZWZzLmg+
Cj4gICAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KPiAtI2luY2x1ZGUgPG9zdi9wcmV4Lmg+Cj4gLSNp
bmNsdWRlIDxvc3YvdWlvLmg+Cj4gLSNpbmNsdWRlIDxvc3YvbXV0ZXguaD4KPiAtI2luY2x1ZGUg
ImZpbGUuaCIKPiAtI2luY2x1ZGUgImRpcmVudC5oIgo+ICsjaW5jbHVkZSA8ZGlyZW50Lmg+Cj4g
Kwo+ICsjaW5jbHVkZSA8dWsvbXV0ZXguaD4KPiArI2luY2x1ZGUgPHVrL2xpc3QuaD4KPiArI2lu
Y2x1ZGUgPHRpbWUuaD4KPiArI2luY2x1ZGUgPHZmc2NvcmUvdWlvLmg+Cj4gKyNpbmNsdWRlIDx2
ZnNjb3JlL2RlbnRyeS5oPgo+ICAgCj4gICBzdHJ1Y3QgdmZzb3BzOwo+ICAgc3RydWN0IHZub3Bz
Owo+IGRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9sb29rdXAuYyBiL2xpYi92ZnNjb3JlL2xvb2t1
cC5jCj4gaW5kZXggZjdhMzhjNGYuLjk4MzdlODFmIDEwMDY0NAo+IC0tLSBhL2xpYi92ZnNjb3Jl
L2xvb2t1cC5jCj4gKysrIGIvbGliL3Zmc2NvcmUvbG9va3VwLmMKPiBAQCAtMzYsOCArMzYsOCBA
QAo+ICAgI2luY2x1ZGUgPHN0ZGxpYi5oPgo+ICAgI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgo+ICAg
Cj4gLSNpbmNsdWRlIDxvc3YvZGVudHJ5Lmg+Cj4gLSNpbmNsdWRlIDxvc3Yvdm5vZGUuaD4KPiAr
I2luY2x1ZGUgPHZmc2NvcmUvZGVudHJ5Lmg+Cj4gKyNpbmNsdWRlIDx2ZnNjb3JlL3Zub2RlLmg+
Cj4gICAjaW5jbHVkZSAidmZzLmgiCj4gICAKPiAgIHN0YXRpYyBzc2l6ZV90Cj4gZGlmZiAtLWdp
dCBhL2xpYi92ZnNjb3JlL21haW4uYyBiL2xpYi92ZnNjb3JlL21haW4uYwo+IGluZGV4IDc0ODc2
ZGMxLi45MGRmM2Q3MSAxMDA2NDQKPiAtLS0gYS9saWIvdmZzY29yZS9tYWluLmMKPiArKysgYi9s
aWIvdmZzY29yZS9tYWluLmMKPiBAQCAtMzAsNTMgKzMwLDIzIEBACj4gICAgKiBTVUNIIERBTUFH
RS4KPiAgICAqLwo+ICAgCj4gLSNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KPiArI2RlZmluZSBfR05V
X1NPVVJDRQo+ICsKPiAgICNpbmNsdWRlIDxzeXMvc3RhdHZmcy5oPgo+ICAgI2luY2x1ZGUgPHN5
cy9zdGF0Lmg+Cj4gLSNpbmNsdWRlIDxzeXMvdGltZS5oPgo+IC0jaW5jbHVkZSA8c3lzL3NlbmRm
aWxlLmg+Cj4gLQo+ICAgI2luY2x1ZGUgPGxpbWl0cy5oPgo+IC0jaW5jbHVkZSA8dW5pc3RkLmg+
Cj4gLSNpbmNsdWRlIDxzdGRpby5oPgo+IC0jaW5jbHVkZSA8c3RkaW50Lmg+Cj4gLSNpbmNsdWRl
IDxzdGRsaWIuaD4KPiAgICNpbmNsdWRlIDxzdHJpbmcuaD4KPiAgICNpbmNsdWRlIDxlcnJuby5o
Pgo+IC0jaW5jbHVkZSA8c2lnbmFsLmg+Cj4gLSNkZWZpbmUgb3BlbiBfX29wZW5fdmFyaWFkaWMK
PiAtI2RlZmluZSBmY250bCBfX2ZjbnRsX3ZhcmlhZGljCj4gICAjaW5jbHVkZSA8ZmNudGwuaD4K
PiAtI3VuZGVmIG9wZW4KPiAtI3VuZGVmIGZjbnRsCj4gLQo+IC0jaW5jbHVkZSA8b3N2L3ByZXgu
aD4KPiAtI2luY2x1ZGUgPG9zdi92bm9kZS5oPgo+IC0jaW5jbHVkZSA8b3N2L3N0dWJiaW5nLmho
Pgo+IC0jaW5jbHVkZSA8b3N2L2lvY3RsLmg+Cj4gLSNpbmNsdWRlIDxvc3YvdHJhY2UuaGg+Cj4g
LSNpbmNsdWRlIDxvc3YvcnVuLmhoPgo+IC0jaW5jbHVkZSA8ZHJpdmVycy9jb25zb2xlLmhoPgo+
IC0KPiArI2luY2x1ZGUgPHZmc2NvcmUvcHJleC5oPgo+ICsjaW5jbHVkZSA8dmZzY29yZS92bm9k
ZS5oPgo+ICAgI2luY2x1ZGUgInZmcy5oIgo+IC0KPiAtI2luY2x1ZGUgImxpYmMvaW50ZXJuYWwv
bGliYy5oIgo+IC0KPiAtI2luY2x1ZGUgPGFsZ29yaXRobT4KPiAtI2luY2x1ZGUgPHVub3JkZXJl
ZF9tYXA+Cj4gLQo+ICAgI2luY2x1ZGUgPHN5cy9maWxlLmg+Cj4gLQo+IC0jaW5jbHVkZSAiZnMv
ZnMuaGgiCj4gLSNpbmNsdWRlICJsaWJjL2xpYmMuaGgiCj4gLQo+IC0jaW5jbHVkZSA8bW50ZW50
Lmg+Cj4gLSNpbmNsdWRlIDxzeXMvbW1hbi5oPgo+IC0KPiAtI2luY2x1ZGUgPG9zdi9jbG9jay5o
aD4KPiAtI2luY2x1ZGUgPGFwaS91dGltZS5oPgo+IC0jaW5jbHVkZSA8Y2hyb25vPgo+IC0KPiAr
I2luY2x1ZGUgPHN0ZGFyZy5oPgo+ICsjaW5jbHVkZSA8dmZzY29yZS9maWxlLmg+Cj4gKyNpbmNs
dWRlIDx2ZnNjb3JlL21vdW50Lmg+Cj4gKyNpbmNsdWRlIDx2ZnNjb3JlL2ZzLmg+Cj4gKyNpbmNs
dWRlIDx1ay9lcnJwdHIuaD4KPiAgIAo+ICAgI2lmZGVmIERFQlVHX1ZGUwo+ICAgaW50CXZmc19k
ZWJ1ZyA9IFZGU0RCX0ZMQUdTOwo+IGRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9tb3VudC5jIGIv
bGliL3Zmc2NvcmUvbW91bnQuYwo+IGluZGV4IDEwYzI3ZmFkLi4wNjkyMmZmYiAxMDA2NDQKPiAt
LS0gYS9saWIvdmZzY29yZS9tb3VudC5jCj4gKysrIGIvbGliL3Zmc2NvcmUvbW91bnQuYwo+IEBA
IC0zNCwyNyArMzQsMjIgQEAKPiAgICAqIHZmc19tb3VudC5jIC0gbW91bnQgb3BlcmF0aW9ucwo+
ICAgICovCj4gICAKPiAtI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Cj4gICAjaW5jbHVkZSA8c3lzL3Bh
cmFtLmg+Cj4gLSNpbmNsdWRlIDxkaXJlbnQuaD4KPiAtCj4gICAjaW5jbHVkZSA8bGltaXRzLmg+
Cj4gICAjaW5jbHVkZSA8dW5pc3RkLmg+Cj4gICAjaW5jbHVkZSA8c3RkbGliLmg+Cj4gICAjaW5j
bHVkZSA8c3RyaW5nLmg+Cj4gICAjaW5jbHVkZSA8c3RkaW8uaD4KPiAgICNpbmNsdWRlIDxlcnJu
by5oPgo+IC0jaW5jbHVkZSA8ZmNudGwuaD4KPiAtCj4gLSNpbmNsdWRlIDxvc3YvcHJleC5oPgo+
IC0jaW5jbHVkZSA8b3N2L3Zub2RlLmg+Cj4gLSNpbmNsdWRlIDxvc3YvZGV2aWNlLmg+Cj4gLSNp
bmNsdWRlIDxvc3YvZGVidWcuaD4KPiAtI2luY2x1ZGUgPG9zdi9tdXRleC5oPgo+ICAgI2luY2x1
ZGUgInZmcy5oIgo+IC0KPiAtI2luY2x1ZGUgPG1lbW9yeT4KPiAtI2luY2x1ZGUgPGxpc3Q+Cj4g
KyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KPiArI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Cj4gKyNpbmNs
dWRlIDx0aW1lLmg+Cj4gKyNpbmNsdWRlIDx1ay9saXN0Lmg+Cj4gKyNpbmNsdWRlIDx1ay9tdXRl
eC5oPgo+ICsjaW5jbHVkZSA8dmZzY29yZS9wcmV4Lmg+Cj4gKyNpbmNsdWRlIDx2ZnNjb3JlL2Rl
bnRyeS5oPgo+ICsjaW5jbHVkZSA8dmZzY29yZS92bm9kZS5oPgo+ICAgCj4gICAvKgo+ICAgICog
TGlzdCBmb3IgVkZTIG1vdW50IHBvaW50cy4KPiBkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvc3Vi
cl91aW8uYyBiL2xpYi92ZnNjb3JlL3N1YnJfdWlvLmMKPiBpbmRleCA4Mjc2ZDZkNC4uYmJjYTMz
NjIgMTAwNjQ0Cj4gLS0tIGEvbGliL3Zmc2NvcmUvc3Vicl91aW8uYwo+ICsrKyBiL2xpYi92ZnNj
b3JlL3N1YnJfdWlvLmMKPiBAQCAtMzksMTEgKzM5LDExIEBACj4gICAgKglAKCMpa2Vybl9zdWJy
LmMJOC4zIChCZXJrZWxleSkgMS8yMS85NAo+ICAgICovCj4gICAKPiAtI2luY2x1ZGUgPGFzc2Vy
dC5oPgo+ICsjaW5jbHVkZSA8dWsvYXNzZXJ0Lmg+Cj4gICAjaW5jbHVkZSA8ZXJybm8uaD4KPiAg
ICNpbmNsdWRlIDxzdGRsaWIuaD4KPiAgICNpbmNsdWRlIDxzdHJpbmcuaD4KPiAtI2luY2x1ZGUg
PG9zdi91aW8uaD4KPiArI2luY2x1ZGUgPHZmc2NvcmUvdWlvLmg+Cj4gICAKPiAgIGludAo+ICAg
dWlvbW92ZSh2b2lkICpjcCwgaW50IG4sIHN0cnVjdCB1aW8gKnVpbykKPiBkaWZmIC0tZ2l0IGEv
bGliL3Zmc2NvcmUvc3lzY2FsbHMuYyBiL2xpYi92ZnNjb3JlL3N5c2NhbGxzLmMKPiBpbmRleCA0
ZTU1MzM3Zi4uZjUwZmIzOGYgMTAwNjQ0Cj4gLS0tIGEvbGliL3Zmc2NvcmUvc3lzY2FsbHMuYwo+
ICsrKyBiL2xpYi92ZnNjb3JlL3N5c2NhbGxzLmMKPiBAQCAtMzUsNyArMzUsOCBAQAo+ICAgICog
ICAgICAgICAgICAgICAgICBhIFZGUyBzeXN0ZW0gY2FsbC4KPiAgICAqLwo+ICAgCj4gLSNpbmNs
dWRlIDxzeXMvc3RhdC5oPgo+ICsjZGVmaW5lIF9CU0RfU09VUkNFCj4gKyNkZWZpbmUgX0dOVV9T
T1VSQ0UKPiAgICNpbmNsdWRlIDxkaXJlbnQuaD4KPiAgIAo+ICAgI2luY2x1ZGUgPGxpbWl0cy5o
Pgo+IEBAIC00NiwxMSArNDcsMTIgQEAKPiAgICNpbmNsdWRlIDxlcnJuby5oPgo+ICAgI2luY2x1
ZGUgPGZjbnRsLmg+Cj4gICAKPiAtI2luY2x1ZGUgPG9zdi9wcmV4Lmg+Cj4gLSNpbmNsdWRlIDxv
c3Yvdm5vZGUuaD4KPiAtI2luY2x1ZGUgPG9zdi92ZnNfZmlsZS5oaD4KPiArI2luY2x1ZGUgPHZm
c2NvcmUvcHJleC5oPgo+ICsjaW5jbHVkZSA8dmZzY29yZS92bm9kZS5oPgo+ICsjaW5jbHVkZSA8
dmZzY29yZS9maWxlLmg+Cj4gKwo+ICAgI2luY2x1ZGUgInZmcy5oIgo+IC0jaW5jbHVkZSA8ZnMv
ZnMuaGg+Cj4gKyNpbmNsdWRlIDx2ZnNjb3JlL2ZzLmg+Cj4gICAKPiAgIGV4dGVybiBzdHJ1Y3Qg
dGFzayAqbWFpbl90YXNrOwo+ICAgCj4gZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3Rhc2suYyBi
L2xpYi92ZnNjb3JlL3Rhc2suYwo+IGluZGV4IDRjZWIxMjNiLi43NjM1YmQ3YSAxMDA2NDQKPiAt
LS0gYS9saWIvdmZzY29yZS90YXNrLmMKPiArKysgYi9saWIvdmZzY29yZS90YXNrLmMKPiBAQCAt
NDEsNyArNDEsNyBAQAo+ICAgI2luY2x1ZGUgPHN0ZGlvLmg+Cj4gICAjaW5jbHVkZSA8ZXJybm8u
aD4KPiAgIAo+IC0jaW5jbHVkZSA8b3N2L3ByZXguaD4KPiArI2luY2x1ZGUgPHZmc2NvcmUvcHJl
eC5oPgo+ICAgI2luY2x1ZGUgInZmcy5oIgo+ICAgCj4gICAKPiBkaWZmIC0tZ2l0IGEvbGliL3Zm
c2NvcmUvdmZzLmggYi9saWIvdmZzY29yZS92ZnMuaAo+IGluZGV4IGNkOTQwOTc5Li4yNTMxZjcz
MCAxMDA2NDQKPiAtLS0gYS9saWIvdmZzY29yZS92ZnMuaAo+ICsrKyBiL2xpYi92ZnNjb3JlL3Zm
cy5oCj4gQEAgLTMzLDI0ICszMywxMiBAQAo+ICAgI2lmbmRlZiBfVkZTX0gKPiAgICNkZWZpbmUg
X1ZGU19ICj4gICAKPiAtI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgo+IC0jaW5jbHVkZSA8YXNzZXJ0
Lmg+Cj4gLSNpbmNsdWRlIDxkaXJlbnQuaD4KPiAtI2luY2x1ZGUgPGxpbWl0cy5oPgo+IC0KPiAt
I2luY2x1ZGUgPG9zdi9wcmV4Lmg+Cj4gLSNpbmNsdWRlIDxvc3YvZmlsZS5oPgo+IC0jaW5jbHVk
ZSA8b3N2L21vdW50Lmg+Cj4gLSNpbmNsdWRlIDxvc3Yvdm5vZGUuaD4KPiAtI2luY2x1ZGUgPG9z
di9kZW50cnkuaD4KPiAtI2luY2x1ZGUgPG9zdi9lcnJvci5oPgo+IC0KPiAtLyoKPiAtICogSW1w
b3J0IHZub2RlIGF0dHJpYnV0ZXMgZmxhZ3MKPiAtICovCj4gLSNpbmNsdWRlIDxvc3Yvdm5vZGVf
YXR0ci5oPgo+ICsjZGVmaW5lIF9HTlVfU09VUkNFCj4gKyNpbmNsdWRlIDx2ZnNjb3JlL21vdW50
Lmg+Cj4gICAKPiAtLyogI2RlZmluZSBERUJVR19WRlMgMSAqLwo+ICsjaW5jbHVkZSA8bGltaXRz
Lmg+Cj4gKyNpbmNsdWRlIDxmY250bC5oPgo+ICsjaW5jbHVkZSA8c3lzL3N0YXRmcy5oPgo+ICAg
Cj4gICAvKgo+ICAgICogVHVuYWJsZSBwYXJhbWV0ZXJzCj4gQEAgLTU4LDcgKzQ2LDYgQEAKPiAg
ICNkZWZpbmUgRlNNQVhOQU1FUwkxNgkJLyogbWF4IGxlbmd0aCBvZiAnZmlsZSBzeXN0ZW0nIG5h
bWUgKi8KPiAgIAo+ICAgI2lmZGVmIERFQlVHX1ZGUwo+IC0jaW5jbHVkZSA8b3N2L2RlYnVnLmg+
Cj4gICAKPiAgIGV4dGVybiBpbnQgdmZzX2RlYnVnOwo+ICAgCj4gZGlmZiAtLWdpdCBhL2xpYi92
ZnNjb3JlL3Zub2RlLmMgYi9saWIvdmZzY29yZS92bm9kZS5jCj4gaW5kZXggZjU2NDU3N2YuLjgx
Zjc4YmU4IDEwMDY0NAo+IC0tLSBhL2xpYi92ZnNjb3JlL3Zub2RlLmMKPiArKysgYi9saWIvdmZz
Y29yZS92bm9kZS5jCj4gQEAgLTM2LDE0ICszNiwxNiBAQAo+ICAgCj4gICAjaW5jbHVkZSA8bGlt
aXRzLmg+Cj4gICAjaW5jbHVkZSA8dW5pc3RkLmg+Cj4gKyNpbmNsdWRlIDxzdGRpbnQuaD4KPiAg
ICNpbmNsdWRlIDxzdHJpbmcuaD4KPiAgICNpbmNsdWRlIDxzdGRsaWIuaD4KPiAgICNpbmNsdWRl
IDxzdGRpby5oPgo+ICAgI2luY2x1ZGUgPGVycm5vLmg+Cj4gICAjaW5jbHVkZSA8c3lzL3N0YXQu
aD4KPiAgIAo+IC0jaW5jbHVkZSA8b3N2L3ByZXguaD4KPiAtI2luY2x1ZGUgPG9zdi92bm9kZS5o
Pgo+ICsjaW5jbHVkZSA8dmZzY29yZS9wcmV4Lmg+Cj4gKyNpbmNsdWRlIDx2ZnNjb3JlL2RlbnRy
eS5oPgo+ICsjaW5jbHVkZSA8dmZzY29yZS92bm9kZS5oPgo+ICAgI2luY2x1ZGUgInZmcy5oIgo+
ICAgCj4gICBlbnVtIHZ0eXBlIGlmdG92dF90YWJbMTZdID0gewo+IAoKX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlz
dApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9q
ZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Thu Feb 07 23:01:42 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 07 Feb 2019 23:01:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grsfs-0004em-CN; Thu, 07 Feb 2019 23:01:40 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=3EZI=QO=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1grsfr-0004eY-Gs
 for minios-devel@lists.xen.org; Thu, 07 Feb 2019 23:01:39 +0000
X-Inumbo-ID: 5100cdee-2b2c-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 5100cdee-2b2c-11e9-bc90-bc764e045a96;
 Thu, 07 Feb 2019 23:01:35 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 8E970F206D;
 Fri,  8 Feb 2019 00:01:34 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id HsrNXQFw88HX; Fri,  8 Feb 2019 00:01:34 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 67A4FF202D
 for <minios-devel@lists.xen.org>; Fri,  8 Feb 2019 00:01:32 +0100 (CET)
Received: from localhost.localdomain (10.7.0.213) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 8 Feb
 2019 00:01:31 +0100
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Fri, 8 Feb 2019 00:00:30 +0100
Message-ID: <20190207230035.29861-1-simon.kuenzer@neclab.eu>
X-Mailer: git-send-email 2.17.1
MIME-Version: 1.0
X-Originating-IP: [10.7.0.213]
Subject: [Minios-devel] [UNIKRAFT/LIBLWIP PATCH 0/5] lwip 2.1.2 and uknetdev
 support
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Simon Kuenzer <simon.kuenzer@neclab.eu>, sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhpcyBwYXRjaCBzZXJpZXMgdXBkYXRlcyBsd2lwIHRvIDIuMS4yIGFuZCBhZGRzIHN1cHBvcnQg
Zm9yCmxpYnVrbmV0ZGV2IGRyaXZlcnMuIFRoZSBnbHVlIGNvZGUgaXMgaGVhdmlseSBtb2RpZmll
ZCB0byBjYXRjaC11cAp3aXRoIHJlY2VudCBVbmlrcmFmdCBBUEkgY2hhbmdlcy4gV2UgYWxzbyBy
ZW1vdmUgY3VycmVubHkgdW51c2VkIGFuZAp1bnRlc3RlZCBmZWF0dXJlcyBpbiBvcmRlciB0byBn
ZXQgYSBtaW5pbWFsIGJhc2UuIFRoZSBpZGVhIGlzIHRvCmVuaGFuY2UgdGhlIGltcGxlbWVudGF0
aW9uIHdpdGggbW9yZSBmZWF0dXJlcyBhZnRlcndhcmRzLgoKU2ltb24gS3VlbnplciAoNSk6CiAg
QWRkIC5naXRpZ25vcmUKICBVcGRhdGUgdG8gbHdJUCAyLjEuMgogIE5ldGlmIGRyaXZlciBmb3Ig
bGlidWtuZXRkZXYgZGV2aWNlcwogIEF0dGFjaCB1a25ldGRldiBuZXRpZnMgZHVyaW5nIGJvb3QK
ICBOZXRpZiBzdGF0dXMgcHJpbnQgY2FsbGJhY2sKCiAuZ2l0aWdub3JlICAgICAgICAgICAgICAg
ICB8ICAyNyArKwogQ29uZmlnLnVrICAgICAgICAgICAgICAgICAgfCAxMzIgKysrKystLS0KIE1h
a2VmaWxlLnVrICAgICAgICAgICAgICAgIHwgIDc5ICsrLS0tCiBhbGxvYy5jICAgICAgICAgICAg
ICAgICAgICB8ICAzMyArKwogaW5jbHVkZS9hcmNoL2NjLmggICAgICAgICAgfCAgMzMgKy0KIGlu
Y2x1ZGUvYXJjaC9zeXNfYXJjaC5oICAgIHwgIDQxICsrLQogaW5jbHVkZS9hcnBhL2luZXQuaCAg
ICAgICAgfCAgIDEgKwogaW5jbHVkZS9sd2lwb3B0cy5oICAgICAgICAgfCAyODYgKysrKysrKysr
KystLS0tLS0KIGluY2x1ZGUvbmV0L2lmLmggICAgICAgICAgIHwgICAxICsKIGluY2x1ZGUvbmV0
ZGIuaCAgICAgICAgICAgIHwgICAxICsKIGluY2x1ZGUvbmV0aWYvdWtuZXRkZXYuaCAgIHwgIDgw
ICsrKysrCiBpbmNsdWRlL3N5cy9zb2NrZXQuaCAgICAgICB8ICA2NyArKystCiBpbml0LmMgICAg
ICAgICAgICAgICAgICAgICB8IDI0MyArKysrKysrKysrKysrKy0KIG1haWxib3guYyAgICAgICAg
ICAgICAgICAgIHwgMTU1ICsrKysrKy0tLS0KIG11dGV4LmMgICAgICAgICAgICAgICAgICAgIHwg
IDQzICsrLQogbmV0YnVmLmMgICAgICAgICAgICAgICAgICAgfCAxMDQgKysrKysrKwogbmV0YnVm
LmggICAgICAgICAgICAgICAgICAgfCAxMDcgKysrKysrKwogc2VtYXBob3JlLmMgICAgICAgICAg
ICAgICAgfCAgNTggKysrLQogc29ja2V0X2dsdWUuYyA9PiBzb2NrZXRzLmMgfCAyMTMgKysrKysr
KystLS0tLQogdGhyZWFkcy5jICAgICAgICAgICAgICAgICAgfCAgNTIgKysrLQogdGltZS5jICAg
ICAgICAgICAgICAgICAgICAgfCAgMzMgKysKIHVrbmV0ZGV2LmMgICAgICAgICAgICAgICAgIHwg
NjExICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDIyIGZpbGVzIGNoYW5n
ZWQsIDIwMjAgaW5zZXJ0aW9ucygrKSwgMzgwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAw
NjQ0IC5naXRpZ25vcmUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2FycGEvaW5ldC5oCiBj
cmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9uZXQvaWYuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGlu
Y2x1ZGUvbmV0ZGIuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvbmV0aWYvdWtuZXRkZXYu
aAogY3JlYXRlIG1vZGUgMTAwNjQ0IG5ldGJ1Zi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbmV0YnVm
LmgKIHJlbmFtZSBzb2NrZXRfZ2x1ZS5jID0+IHNvY2tldHMuYyAoNjAlKQogY3JlYXRlIG1vZGUg
MTAwNjQ0IHVrbmV0ZGV2LmMKCi0tIAoyLjIwLjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21h
aWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Thu Feb 07 23:01:42 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 07 Feb 2019 23:01:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grsfs-0004eh-9x; Thu, 07 Feb 2019 23:01:40 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=3EZI=QO=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1grsfr-0004eX-GO
 for minios-devel@lists.xen.org; Thu, 07 Feb 2019 23:01:39 +0000
X-Inumbo-ID: 528679ad-2b2c-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 528679ad-2b2c-11e9-bc90-bc764e045a96;
 Thu, 07 Feb 2019 23:01:38 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 32E95104DA9;
 Fri,  8 Feb 2019 00:01:37 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id iBzU6MRVAxS1; Fri,  8 Feb 2019 00:01:37 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 14AF1104DA5
 for <minios-devel@lists.xen.org>; Fri,  8 Feb 2019 00:01:35 +0100 (CET)
Received: from localhost.localdomain (10.7.0.213) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 8 Feb
 2019 00:01:34 +0100
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Fri, 8 Feb 2019 00:00:31 +0100
Message-ID: <20190207230035.29861-2-simon.kuenzer@neclab.eu>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190207230035.29861-1-simon.kuenzer@neclab.eu>
References: <20190207230035.29861-1-simon.kuenzer@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.7.0.213]
Subject: [Minios-devel] [UNIKRAFT/LIBLWIP PATCH 1/5] Add .gitignore
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Simon Kuenzer <simon.kuenzer@neclab.eu>, sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogU2ltb24gS3VlbnplciA8c2ltb24ua3VlbnplckBuZWNsYWIuZXU+Ci0t
LQogLmdpdGlnbm9yZSB8IDI3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNo
YW5nZWQsIDI3IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCAuZ2l0aWdub3JlCgpk
aWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBiLy5naXRpZ25vcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uNzVkMmZkMwotLS0gL2Rldi9udWxsCisrKyBiLy5naXRpZ25vcmUKQEAg
LTAsMCArMSwyNyBAQAorKi5kZXBlbmQKKyoubworKi5hCisqLmQKKyouc28KKyoub3JpZworKi5y
ZWoKKyouYmFrCisqLnN3cAorKn4KKywqCitcIypcIworLlwjKgorXCNfKlwjCisuXCNfKgorIS5n
aXRpZ25vcmUKKy4qCisKKyMgZ251IGdsb2JhbCBmaWxlcworR1BBVEgKK0dSVEFHUworR1NZTVMK
K0dUQUdTCisKKyMgY3Njb3BlIGZpbGVzCitjc2NvcGUuKgorbmNzY29wZS4qCi0tIAoyLjIwLjEK
CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3Mt
ZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRw
czovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Thu Feb 07 23:01:46 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 07 Feb 2019 23:01:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grsfy-0004fW-Fn; Thu, 07 Feb 2019 23:01:46 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=3EZI=QO=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1grsfx-0004fP-OJ
 for minios-devel@lists.xen.org; Thu, 07 Feb 2019 23:01:45 +0000
X-Inumbo-ID: 543de778-2b2c-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 543de778-2b2c-11e9-bc90-bc764e045a96;
 Thu, 07 Feb 2019 23:01:41 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 0EAD4F206D;
 Fri,  8 Feb 2019 00:01:40 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id cPcojQa7yfT3; Fri,  8 Feb 2019 00:01:39 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id B8FF1F202D
 for <minios-devel@lists.xen.org>; Fri,  8 Feb 2019 00:01:37 +0100 (CET)
Received: from localhost.localdomain (10.7.0.213) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 8 Feb
 2019 00:01:37 +0100
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Fri, 8 Feb 2019 00:00:32 +0100
Message-ID: <20190207230035.29861-3-simon.kuenzer@neclab.eu>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190207230035.29861-1-simon.kuenzer@neclab.eu>
References: <20190207230035.29861-1-simon.kuenzer@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.7.0.213]
Subject: [Minios-devel] [UNIKRAFT/LIBLWIP PATCH 2/5] Update to lwIP 2.1.2
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Florian Schmidt <florian.schmidt@neclab.eu>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>, sharan.santhanam@neclab.eu,
 Yuri Volchkov <yuri.volchkov@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VXBkYXRlIGx3SVAgZnJvbSAyLjAuMyB0byB0aGUgbGF0ZXN0IHJlbGFzZSAyLjEuMiBmcm9tIERl
YyAyMDE4LiBXZQp0cmFuc2Zvcm0gdGhlIHJhdGhlciBiZXRhIHN0YXRlIG9mIG91ciBnbHVlIGxp
YnJhcnkgdG8gYSBtb3JlIHN0YWJsZQppbXBsZW1lbnRhdGlvbiBiYXNlZCBvbiB0aGUgbGF0ZXN0
IHN0YWdpbmcgYnJhbmNoIG9mIFVuaWtyYWZ0IHRvd2FyZHMKcmVsZWFzZSAwLjMuCgpUaGlzIGNv
bW1pdCBwcm92aWRlcyB0aGUgZm9sbG93aW5nIGZlYXR1cmVzIGFzIHNlbGVjdGFibGUgb3B0aW9u
cyBmcm9tCmx3SVA6Ci0gVHdvIG9wZXJhdGlvbiBtb2RlczogInRocmVhZGVkIiBvciBhcyAocGFy
dCBvZiBhKSAibWFpbmxvb3AiCi0gSVB2NCBzdXBwb3J0Ci0gRXhwZXJpbWVudGFsIElQdjYgc3Vw
cG9ydCAoaW5jb21wbGV0ZSkKLSBQcm90b2NvbHM6IFVEUCwgVENQLCBJQ01QLCBJR01QLCBTTk1Q
Ci0gRE5TIHJlc29sdmVyCi0gREhDUHY0IGNsaWVudAotIFNvY2tldCBBUEkKClNpZ25lZC1vZmYt
Ynk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1PgpTaWduZWQtb2ZmLWJ5
OiBGbG9yaWFuIFNjaG1pZHQgPGZsb3JpYW4uc2NobWlkdEBuZWNsYWIuZXU+ClNpZ25lZC1vZmYt
Ynk6IFl1cmkgVm9sY2hrb3YgPHl1cmkudm9sY2hrb3ZAbmVjbGFiLmV1PgotLS0KIENvbmZpZy51
ayAgICAgICAgICAgICAgICAgIHwgIDk1ICsrKysrKystLS0tLS0KIE1ha2VmaWxlLnVrICAgICAg
ICAgICAgICAgIHwgIDc3ICsrLS0tLS0tLS0KIGFsbG9jLmMgICAgICAgICAgICAgICAgICAgIHwg
IDMzICsrKysrCiBpbmNsdWRlL2FyY2gvY2MuaCAgICAgICAgICB8ICAzMyArKy0tLQogaW5jbHVk
ZS9hcmNoL3N5c19hcmNoLmggICAgfCAgNDEgKysrKystCiBpbmNsdWRlL2FycGEvaW5ldC5oICAg
ICAgICB8ICAgMSArCiBpbmNsdWRlL2x3aXBvcHRzLmggICAgICAgICB8IDI4MCArKysrKysrKysr
KysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tCiBpbmNsdWRlL25ldC9pZi5oICAgICAgICAgICB8
ICAgMSArCiBpbmNsdWRlL25ldGRiLmggICAgICAgICAgICB8ICAgMSArCiBpbmNsdWRlL3N5cy9z
b2NrZXQuaCAgICAgICB8ICA2NyArKysrKysrKy0KIGluaXQuYyAgICAgICAgICAgICAgICAgICAg
IHwgIDg5ICsrKysrKysrKystLQogbWFpbGJveC5jICAgICAgICAgICAgICAgICAgfCAxNTUgKysr
KysrKysrKysrKy0tLS0tLS0KIG11dGV4LmMgICAgICAgICAgICAgICAgICAgIHwgIDQzICsrKysr
LQogc2VtYXBob3JlLmMgICAgICAgICAgICAgICAgfCAgNTggKysrKysrLS0KIHNvY2tldF9nbHVl
LmMgPT4gc29ja2V0cy5jIHwgMjEzICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0KIHRocmVh
ZHMuYyAgICAgICAgICAgICAgICAgIHwgIDUyICsrKysrLS0KIHRpbWUuYyAgICAgICAgICAgICAg
ICAgICAgIHwgIDMzICsrKysrCiAxNyBmaWxlcyBjaGFuZ2VkLCA4OTIgaW5zZXJ0aW9ucygrKSwg
MzgwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvYXJwYS9pbmV0LmgK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL25ldC9pZi5oCiBjcmVhdGUgbW9kZSAxMDA2NDQg
aW5jbHVkZS9uZXRkYi5oCiByZW5hbWUgc29ja2V0X2dsdWUuYyA9PiBzb2NrZXRzLmMgKDYwJSkK
CmRpZmYgLS1naXQgYS9Db25maWcudWsgYi9Db25maWcudWsKaW5kZXggNGZjYzZkYy4uZGNlNTYw
NyAxMDA2NDQKLS0tIGEvQ29uZmlnLnVrCisrKyBiL0NvbmZpZy51awpAQCAtMyw0NiArMyw1NCBA
QCBtZW51Y29uZmlnIExJQkxXSVAKIAlkZWZhdWx0IG4KIAlzZWxlY3QgTElCTk9MSUJDIGlmICFI
QVZFX0xJQkMKIAlzZWxlY3QgTElCVUtERUJVRworCXNlbGVjdCBMSUJVS1NXUkFORAorCXNlbGVj
dCBIQVZFX05XX1NUQUNLCisKK2lmIExJQkxXSVAKK2Nob2ljZQorCXByb21wdCAiT3BlcmF0aW9u
IG1vZGUiCisJZGVmYXVsdCBMV0lQX1RIUkVBRFMKKworY29uZmlnIExXSVBfTk9USFJFQURTCisJ
Ym9vbCAiTWFpbmxvb3AgKG5vbi10aHJlYWRlZCkiCisJaGVscAorCQlObyB0aHJlYWQgaXMgY3Jl
YXRlZCB0byBvcGVyYXRlIHRoZSBzdGFjay4gVGhlIHN0YWNrIGhhcyB0byBiZQorCQljYWxsZWQg
ZnJvbSB0aGUgc2FtZSBjb250ZXh0IGFzIGFsbCBzdGFjayBpbnRlcmFjdGlvbnMuIFRoaXMKKwkJ
aW5jbHVkZXMgcG9sbGluZyBuZXR3b3JrIGRldmljZXMuIFRoZSBTb2NrZXQgQVBJIGlzIHVuYXZh
aWxhYmxlLgorCitjb25maWcgTFdJUF9USFJFQURTCisJYm9vbCAiVGhyZWFkZWQiCisJc2VsZWN0
IExJQlVLU0NIRUQKIAlzZWxlY3QgTElCVUtNUEkKIAlzZWxlY3QgTElCVUtNUElfTUJPWAogCXNl
bGVjdCBMSUJVS0xPQ0sKIAlzZWxlY3QgTElCVUtMT0NLX1NFTUFQSE9SRQogCXNlbGVjdCBMSUJV
S0xPQ0tfTVVURVgKLQlzZWxlY3QgTElCVUtTV1JBTkQKLQlzZWxlY3QgTElCVUtTQ0hFRAotCXNl
bGVjdCBIQVZFX05XX1NUQUNLCi0KLQlzZWxlY3QgTElCTFdJUF9IRUFQT05MWQorCWhlbHAKKwkJ
Q3JlYXRlcyBhIGNvcmUgdGhyZWFkIGZvciB0aGUgc3RhY2suCitlbmRjaG9pY2UKIAotaWYgTElC
TFdJUAogY2hvaWNlCiAJcHJvbXB0ICJNZW1vcnkgYWxsb2NhdGlvbiBtb2RlIgogCWRlZmF1bHQg
TFdJUF9IRUFQCiAKIGNvbmZpZyBMV0lQX0hFQVAKIAlib29sICJIZWFwIG9ubHkiCisJaGVscAor
CQlVc2UgZGVmYXVsdCB1a2FsbG9jIGFsbG9jYXRvciBmb3IgYWxsIG1lbW9yeSBhbGxvY2F0aW9u
IHJlcXVlc3RzCiAKICNjb25maWcgTFdJUF9QT09MUwogIwlib29sICJNZW1vcnkgcG9vbHMiCiBl
bmRjaG9pY2UKIAogY29uZmlnIExXSVBfSVBWNAotCWJvb2wgIklQdjQiCisJYm9vbCAiSVB2NCBz
dXBwb3J0IgogCWRlZmF1bHQgeQogCiBjb25maWcgTFdJUF9JUFY2Ci0JYm9vbCAiSVB2NiIKKwli
b29sICJJUHY2IHN1cHBvcnQiCiAJZGVmYXVsdCBuCiAKLQotY29uZmlnIExXSVBfUlhDSEVDS1NV
TQotCWJvb2wgIkNoZWNrIGNoZWNrc3VtIG9uIHJlY2VwdGlvbiIKLQlkZWZhdWx0IG4KLQotY29u
ZmlnIExXSVBfVFhDSEVDS1NVTQotCWJvb2wgIkNhbGN1bGF0ZSBjaGVja3N1bSBvbiBzZW5kaW5n
IgotCWRlZmF1bHQgeQotCiBjb25maWcgTFdJUF9VRFAKIAlib29sICJVRFAgc3VwcG9ydCIKIAlk
ZWZhdWx0IHkKQEAgLTg0LDE2ICs5MiwxMiBAQCBjb25maWcgTFdJUF9TTk1QCiBjb25maWcgTFdJ
UF9ESENQCiAJYm9vbCAiREhDUCBjbGllbnQiCiAJZGVwZW5kcyBvbiBMV0lQX0lQVjQKKwlzZWxl
Y3QgTFdJUF9VRFAKIAlkZWZhdWx0IG4KIAloZWxwCi0JCVF1ZXJ5IGRldmljZSBJUCBhZGRyZXNz
IGZyb20gREhDUCBzZXJ2ZXIgb24gbmV0d29yawotCi1jb25maWcgTFdJUF9BVVRPSVAKLQlib29s
ICJBdXRvSVAiCi0JZGVwZW5kcyBvbiBMV0lQX0lQVjQKLQlkZWZhdWx0IG4KLQloZWxwCi0JCUR5
bmFtaWMgSVAgYWRkcmVzcyBhc3NpZ25tZW50IGF0IGRldmljZSBvbiBzdGFydHVwCisJCVdoZW4g
TFdJUF9BVVRPSUZBQ0UgaXMgdXNlZCwgdGhlIGluaXRpYWxpemF0aW9uIHJvdXRpbmUgd2lsbAor
CQlxdWVyeSB0aGUgSVB2NCBhZGRyZXNzZXMgZm9yIHRoZSBmb3VuZCBkZXZpY2VzIGZyb20gYSBE
SENQCisJCXNlcnZlciBvbiBuZXR3b3JrLgogCiBtZW51Y29uZmlnIExXSVBfRE5TCiAJYm9vbCAi
RE5TIFJlc29sdmVyIgpAQCAtMTA5LDU4ICsxMTMsNjkgQEAgY29uZmlnIExXSVBfRE5TX1RBQkxF
X1NJWkUKIAlkZWZhdWx0IDMyCiBlbmRpZgogCi1jb25maWcgTFdJUF9QUFAKLQlib29sICJQb2lu
dC10by1Qb2ludCBzdXBwb3J0IgotCWRlZmF1bHQgbgotCi1jb25maWcgTFdJUF9TTElQCi0JYm9v
bCAiU0xJUCBuZXRpZiIKLQlkZWZhdWx0IG4KLQotY29uZmlnIExXSVBfNkxPV1BBTgotCWJvb2wg
IjZMb3dQQU4iCi0JZGVwZW5kcyBvbiBMV0lQX0lQVjYKLQlkZWZhdWx0IG4KLQogY29uZmlnIExX
SVBfU09DS0VUCiAJYm9vbCAiU29ja2V0IEFQSSIKKwlzZWxlY3QgTElCVkZTQ09SRQorCWRlcGVu
ZHMgb24gTFdJUF9USFJFQURTICYmIChMV0lQX1VEUCB8fCBMV0lQX1RDUCkKIAlkZWZhdWx0IHkK
IAogbWVudWNvbmZpZyBMV0lQX0RFQlVHCiAJYm9vbCAiRGVidWcgbWVzc2FnZXMiCiAJZGVmYXVs
dCBuCisJaGVscAorCQlFbmFibGVzIGRlYnVnIG1lc3NhZ2VzIG9uIHRoZSBkZWJ1ZyBjb25zb2xl
IGZvciBzZWxlY3RlZCBsd0lQCisJCW1lc3NhZ2UgdHlwZXMuCiAKIGlmIExXSVBfREVCVUcKIGNv
bmZpZyBMV0lQX01BSU5MT09QX0RFQlVHCiAJYm9vbCAiTWFpbmxvb3AiCiAJZGVmYXVsdCBuCisJ
aGVscAorCQlFbmFibGVzIFRDUF9JUF9ERUJVRywgVElNRVJTX0RFQlVHCiAKIGNvbmZpZyBMV0lQ
X0lGX0RFQlVHCiAJYm9vbCAiTmV0aWYiCiAJZGVmYXVsdCBuCisJaGVscAorCQlFbmFibGVzIEVU
SEFSUF9ERUJVRywgTkVUSUZfREVCVUcKIAogY29uZmlnIExXSVBfSVBfREVCVUcKIAlib29sICJJ
UCIKIAlkZWZhdWx0IG4KKwloZWxwCisJCUVuYWJsZXMgSVBfREVCVUcsIElQNl9ERUJVRywgSVBf
UkVBU1NfREVCVUcKIAogY29uZmlnIExXSVBfVURQX0RFQlVHCiAJYm9vbCAiVURQIgogCWRlZmF1
bHQgbgorCWhlbHAKKwkJRW5hYmxlcyBVRFBfREVCVUcKIAogY29uZmlnIExXSVBfVENQX0RFQlVH
CiAJYm9vbCAiVENQIgogCWRlZmF1bHQgbgorCWhlbHAKKwkJRW5hYmxlcyBUQ1BfREVCVUcsIFRD
UF9GUl9ERUJVRywgVENQX1JUT19ERUJVRywgVENQX0NXTkRfREVCVUcsCisJCVRDUF9XTkRfREVC
VUcsIFRDUF9SU1RfREVCVUcsIFRDUF9RTEVOX0RFQlVHLCBUQ1BfT1VUUFVUX0RFQlVHLAorCQlU
Q1BfSU5QVVRfREVCVUcKIAogY29uZmlnIExXSVBfU1lTX0RFQlVHCiAJYm9vbCAiU3lzdGVtIgog
CWRlZmF1bHQgbgorCWhlbHAKKwkJRW5hYmxlcyBTWVNfREVCVUcsIFBCVUZfREVCVUcsIE1FTV9E
RUJVRywgTUVNUF9ERUJVRwogCiBjb25maWcgTFdJUF9BUElfREVCVUcKLQlib29sICJBUEkiCisJ
Ym9vbCAiQVBJcyIKIAlkZWZhdWx0IG4KKwloZWxwCisJCUVuYWJsZXMgU09DS0VUU19ERUJVRywg
UkFXX0RFQlVHLCBBUElfTVNHX0RFQlVHLCBBUElfTElCX0RFQlVHCiAKIGNvbmZpZyBMV0lQX1NF
UlZJQ0VfREVCVUcKLQlib29sICJTZXJ2aWNlIgorCWJvb2wgIlNlcnZpY2VzIgogCWRlZmF1bHQg
bgorCWhlbHAKKwkJRW5hYmxlcyBFVEhBUlBfREVCVUcsIEROU19ERUJVRywgQVVUT0lQX0RFQlVH
LCBESENQX0RFQlVHLAorCQlJQ01QX0RFQlVHLCBTTk1QX0RFQlVHLCBTTk1QX01TR19ERUJVRywg
U05NUF9NSUJfREVCVUcKIGVuZGlmCiBlbmRpZgpkaWZmIC0tZ2l0IGEvTWFrZWZpbGUudWsgYi9N
YWtlZmlsZS51awppbmRleCBkZjU0Nzg3Li5hZTNmYmVhIDEwMDY0NAotLS0gYS9NYWtlZmlsZS51
aworKysgYi9NYWtlZmlsZS51awpAQCAtNCw3ICs0LDggQEAKICMgICAgICAgICAgIFNpbW9uIEt1
ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1PgogIwogIwotIyAgQ29weXJpZ2h0IChjKSAy
MDE3LCBORUMgRXVyb3BlIEx0ZC4sIE5FQyBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMgIENvcHlyaWdodCAoYykgMjAxNy0yMDE5LCBORUMgRXVyb3BlIEx0ZC4sIE5FQyBDb3Jw
b3JhdGlvbi4KKyMgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGwgcmlnaHRzIHJlc2VydmVk
LgogIwogIyAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAjICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQyLDcgKzQzLDcgQEAgJChldmFs
ICQoY2FsbCBhZGRsaWJfcyxsaWJsd2lwLCQoQ09ORklHX0xJQkxXSVApKSkKICMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjCiAjIFNvdXJjZXMKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi1MSUJMV0lQ
X1pJUE5BTUU9bHdpcC0yLjAuMworTElCTFdJUF9aSVBOQU1FPWx3aXAtMi4xLjIKIExJQkxXSVBf
VVJMPWh0dHA6Ly9kb3dubG9hZC5zYXZhbm5haC5ub25nbnUub3JnL3JlbGVhc2VzL2x3aXAvJChM
SUJMV0lQX1pJUE5BTUUpLnppcAogTElCTFdJUF9QQVRDSERJUj0kKExJQkxXSVBfQkFTRSkvcGF0
Y2hlcwogJChldmFsICQoY2FsbCBmZXRjaCxsaWJsd2lwLCQoTElCTFdJUF9VUkwpKSkKQEAgLTYw
LDMzICs2MSwyMiBAQCBDSU5DTFVERVMtJChDT05GSUdfTElCTFdJUCkgICArPSAtSSQoTElCTFdJ
UF9CQVNFKS9pbmNsdWRlIC1JJChMSUJMV0lQX0VYVFJBQ1RFRAogQ1hYSU5DTFVERVMtJChDT05G
SUdfTElCTFdJUCkgKz0gLUkkKExJQkxXSVBfQkFTRSkvaW5jbHVkZSAtSSQoTElCTFdJUF9FWFRS
QUNURUQpL2luY2x1ZGUKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgR2xvYmFsIGZsYWdz
CisjIExpYnJhcnkgZmxhZ3MKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi1MSUJMV0lQX0NGTEFH
Uy15ICs9IC1EQ09ORklHX0xXSVBfTUlOSU1BTCAtVUxXSVBfVElNRVZBTF9QUklWQVRFCi0KLSMg
U3VwcHJlc3Mgc29tZSB3YXJuaW5ncyB0byBtYWtlIHRoZSBidWlsZCBwcm9jZXNzIGxvb2sgbmVh
dGVyCi1MSUJMV0lQX1NVUFBSRVNTX0NGTEFHUyArPSAtV25vLXVudXNlZC1wYXJhbWV0ZXIgLVdu
by11bnVzZWQtdmFyaWFibGUgXAotLVduby11bnVzZWQtYnV0LXNldC12YXJpYWJsZSAtV25vLXVu
dXNlZC1sYWJlbCAtV25vLWNoYXItc3Vic2NyaXB0cyAgXAotLVduby11bnVzZWQtZnVuY3Rpb24g
LVduby1taXNzaW5nLWZpZWxkLWluaXRpYWxpemVycyAgICAgICAgICAgICAgICAgXAotLVduby11
bmluaXRpYWxpemVkIC1Xbm8tYXJyYXktYm91bmRzIC1Xbm8tbWF5YmUtdW5pbml0aWFsaXplZCAg
ICAgICAgXAotLVduby1wb2ludGVyLXNpZ24gLVduby11bnVzZWQtdmFsdWUgLVduby11bnVzZWQt
bWFjcm9zICAgICAgICAgICAgICAgXAotLVduby1wYXJlbnRoZXNlcyAtV25vLWltcGxpY2l0LWZ1
bmN0aW9uLWRlY2xhcmF0aW9uICAgICAgICAgICAgICAgICAgXAotLVduby1zaGlmdC1uZWdhdGl2
ZS12YWx1ZSAtV25vLW1pc3NpbmctYnJhY2VzIC1Xbm8tZW5kaWYtbGFiZWxzICAgICAgXAotLVdu
by11bnVzZWQtYnV0LXNldC12YXJpYWJsZSAtV25vLWltcGxpY2l0LWZ1bmN0aW9uLWRlY2xhcmF0
aW9uICAgICAgXAotLVduby11bnVzZWQtY29uc3QtdmFyaWFibGUgLVduby10eXBlLWxpbWl0cyAt
V25vLXNpZ24tY29tcGFyZQotTElCTFdJUF9DRkxBR1MteSArPSAkKExJQkxXSVBfU1VQUFJFU1Nf
Q0ZMQUdTKQorTElCTFdJUF9DRkxBR1MteSArPSAtV25vLXR5cGUtbGltaXRzIC1XdW51c2VkLXBh
cmFtZXRlcgorTElCTFdJUF9DRkxBR1MtJChDT05GSUdfTFdJUF9ERUJVRykgKz0gLURVS19ERUJV
RwogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBDb3JlCiAjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIwogTElCTFdJUF9TUkNTLXkgKz0gJChMSUJMV0lQX0JBU0UpL2FsbG9jLmN8dW5pa3JhZnQK
LUxJQkxXSVBfU1JDUy15ICs9ICQoTElCTFdJUF9CQVNFKS9tdXRleC5jfHVuaWtyYWZ0Ci1MSUJM
V0lQX1NSQ1MteSArPSAkKExJQkxXSVBfQkFTRSkvc2VtYXBob3JlLmN8dW5pa3JhZnQKLUxJQkxX
SVBfU1JDUy15ICs9ICQoTElCTFdJUF9CQVNFKS9tYWlsYm94LmN8dW5pa3JhZnQKK0xJQkxXSVBf
U1JDUy0kKENPTkZJR19MV0lQX1RIUkVBRFMpICs9ICQoTElCTFdJUF9CQVNFKS9tdXRleC5jfHVu
aWtyYWZ0CitMSUJMV0lQX1NSQ1MtJChDT05GSUdfTFdJUF9USFJFQURTKSArPSAkKExJQkxXSVBf
QkFTRSkvc2VtYXBob3JlLmN8dW5pa3JhZnQKK0xJQkxXSVBfU1JDUy0kKENPTkZJR19MV0lQX1RI
UkVBRFMpICs9ICQoTElCTFdJUF9CQVNFKS9tYWlsYm94LmN8dW5pa3JhZnQKK0xJQkxXSVBfU1JD
Uy0kKENPTkZJR19MV0lQX1RIUkVBRFMpICs9ICQoTElCTFdJUF9CQVNFKS90aHJlYWRzLmN8dW5p
a3JhZnQKIExJQkxXSVBfU1JDUy15ICs9ICQoTElCTFdJUF9CQVNFKS9pbml0LmN8dW5pa3JhZnQK
LUxJQkxXSVBfU1JDUy15ICs9ICQoTElCTFdJUF9CQVNFKS90aHJlYWRzLmN8dW5pa3JhZnQKIExJ
QkxXSVBfU1JDUy15ICs9ICQoTElCTFdJUF9CQVNFKS90aW1lLmN8dW5pa3JhZnQKLUxJQkxXSVBf
U1JDUy15ICs9ICQoTElCTFdJUF9CQVNFKS9zb2NrZXRfZ2x1ZS5jfHVuaWtyYWZ0CitMSUJMV0lQ
X1NSQ1MtJChDT05GSUdfTFdJUF9TT0NLRVQpICs9ICQoTElCTFdJUF9CQVNFKS9zb2NrZXRzLmN8
dW5pa3JhZnQKIExJQkxXSVBfU1JDUy15ICs9ICQoTElCTFdJUF9FWFRSQUNURUQpL2NvcmUvaW5p
dC5jCiBMSUJMV0lQX1NSQ1MteSArPSAkKExJQkxXSVBfRVhUUkFDVEVEKS9jb3JlL2RlZi5jCiBM
SUJMV0lQX1NSQ1MteSArPSAkKExJQkxXSVBfRVhUUkFDVEVEKS9jb3JlL2luZXRfY2hrc3VtLmMK
QEAgLTExOCwyMyArMTA4LDIwIEBAIExJQkxXSVBfU1JDUy15ICs9ICQoTElCTFdJUF9FWFRSQUNU
RUQpL2FwaS90Y3BpcC5jCiBMSUJMV0lQX1NSQ1MtJChDT05GSUdfTFdJUF9TT0NLRVQpICs9ICQo
TElCTFdJUF9FWFRSQUNURUQpL2FwaS9zb2NrZXRzLmMKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMKLSMgTkVUSUYgSGVscGVycworIyBORVRJRnMKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiBM
SUJMV0lQX1NSQ1MteSArPSAkKExJQkxXSVBfRVhUUkFDVEVEKS9uZXRpZi9ldGhlcm5ldC5jCi1M
SUJMV0lQX1NSQ1MtJChDT05GSUdfTFdJUF9TTElQKSArPSAkKExJQkxXSVBfRVhUUkFDVEVEKS9u
ZXRpZi9zbGlwaWYuYwotTElCTFdJUF9TUkNTLXkgKz0gJChMSUJMV0lQX0VYVFJBQ1RFRCkvbmV0
aWYvbG93cGFuNi5jCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIElQdjQKICMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjCi1MSUJMV0lQX1NSQ1MtJChDT05GSUdfTFdJUF9BVVRPSVApICArPSAk
KExJQkxXSVBfRVhUUkFDVEVEKS9jb3JlL2lwdjQvYXV0b2lwLmMKLUxJQkxXSVBfU1JDUy0kKENP
TkZJR19MV0lQX0RIQ1ApICAgICs9ICQoTElCTFdJUF9FWFRSQUNURUQpL2NvcmUvaXB2NC9kaGNw
LmMKIExJQkxXSVBfU1JDUy0kKENPTkZJR19MV0lQX0lQVjQpICAgICs9ICQoTElCTFdJUF9FWFRS
QUNURUQpL2NvcmUvaXB2NC9ldGhhcnAuYwotTElCTFdJUF9TUkNTLSQoQ09ORklHX0xXSVBfSVBW
NCkgICAgKz0gJChMSUJMV0lQX0VYVFJBQ1RFRCkvY29yZS9pcHY0L2ljbXAuYwotTElCTFdJUF9T
UkNTLSQoQ09ORklHX0xXSVBfSVBWNCkgICAgKz0gJChMSUJMV0lQX0VYVFJBQ1RFRCkvY29yZS9p
cHY0L2lnbXAuYwogTElCTFdJUF9TUkNTLSQoQ09ORklHX0xXSVBfSVBWNCkgICAgKz0gJChMSUJM
V0lQX0VYVFJBQ1RFRCkvY29yZS9pcHY0L2lwNF9mcmFnLmMKIExJQkxXSVBfU1JDUy0kKENPTkZJ
R19MV0lQX0lQVjQpICAgICs9ICQoTElCTFdJUF9FWFRSQUNURUQpL2NvcmUvaXB2NC9pcDQuYwog
TElCTFdJUF9TUkNTLSQoQ09ORklHX0xXSVBfSVBWNCkgICAgKz0gJChMSUJMV0lQX0VYVFJBQ1RF
RCkvY29yZS9pcHY0L2lwNF9hZGRyLmMKK0xJQkxXSVBfU1JDUy0kKENPTkZJR19MV0lQX0lDTVAp
ICAgICs9ICQoTElCTFdJUF9FWFRSQUNURUQpL2NvcmUvaXB2NC9pY21wLmMKK0xJQkxXSVBfU1JD
Uy0kKENPTkZJR19MV0lQX0lHTVApICAgICs9ICQoTElCTFdJUF9FWFRSQUNURUQpL2NvcmUvaXB2
NC9pZ21wLmMKK0xJQkxXSVBfU1JDUy0kKENPTkZJR19MV0lQX0RIQ1ApICAgICs9ICQoTElCTFdJ
UF9FWFRSQUNURUQpL2NvcmUvaXB2NC9kaGNwLmMKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK
ICMgSVB2NgpAQCAtMTQ4LDM3ICsxMzUsMyBAQCBMSUJMV0lQX1NSQ1MtJChDT05GSUdfTFdJUF9J
UFY2KSArPSAkKExJQkxXSVBfRVhUUkFDVEVEKS9jb3JlL2lwdjYvaXA2X2FkZHIuYwogTElCTFdJ
UF9TUkNTLSQoQ09ORklHX0xXSVBfSVBWNikgKz0gJChMSUJMV0lQX0VYVFJBQ1RFRCkvY29yZS9p
cHY2L2lwNl9mcmFnLmMKIExJQkxXSVBfU1JDUy0kKENPTkZJR19MV0lQX0lQVjYpICs9ICQoTElC
TFdJUF9FWFRSQUNURUQpL2NvcmUvaXB2Ni9tbGQ2LmMKIExJQkxXSVBfU1JDUy0kKENPTkZJR19M
V0lQX0lQVjYpICs9ICQoTElCTFdJUF9FWFRSQUNURUQpL2NvcmUvaXB2Ni9uZDYuYwotCi0jIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIwotIyBMd2lwIGNvZGUgLSBQUFAKLSMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjCi1MSUJMV0lQX1NSQ1MtJChDT05GSUdfTFdJUF9QUFApICs9ICQoTElCTFdJUF9FWFRS
QUNURUQpL25ldGlmL3BwcC9hdXRoLmMKLUxJQkxXSVBfU1JDUy0kKENPTkZJR19MV0lQX1BQUCkg
Kz0gJChMSUJMV0lQX0VYVFJBQ1RFRCkvbmV0aWYvcHBwL2NjcC5jCi1MSUJMV0lQX1NSQ1MtJChD
T05GSUdfTFdJUF9QUFApICs9ICQoTElCTFdJUF9FWFRSQUNURUQpL25ldGlmL3BwcC9jaGFwLW1k
NS5jCi1MSUJMV0lQX1NSQ1MtJChDT05GSUdfTFdJUF9QUFApICs9ICQoTElCTFdJUF9FWFRSQUNU
RUQpL25ldGlmL3BwcC9jaGFwX21zLmMKLUxJQkxXSVBfU1JDUy0kKENPTkZJR19MV0lQX1BQUCkg
Kz0gJChMSUJMV0lQX0VYVFJBQ1RFRCkvbmV0aWYvcHBwL2NoYXAtbmV3LmMKLUxJQkxXSVBfU1JD
Uy0kKENPTkZJR19MV0lQX1BQUCkgKz0gJChMSUJMV0lQX0VYVFJBQ1RFRCkvbmV0aWYvcHBwL2Rl
bWFuZC5jCi1MSUJMV0lQX1NSQ1MtJChDT05GSUdfTFdJUF9QUFApICs9ICQoTElCTFdJUF9FWFRS
QUNURUQpL25ldGlmL3BwcC9lYXAuYwotTElCTFdJUF9TUkNTLSQoQ09ORklHX0xXSVBfUFBQKSAr
PSAkKExJQkxXSVBfRVhUUkFDVEVEKS9uZXRpZi9wcHAvZWNwLmMKLUxJQkxXSVBfU1JDUy0kKENP
TkZJR19MV0lQX1BQUCkgKz0gJChMSUJMV0lQX0VYVFJBQ1RFRCkvbmV0aWYvcHBwL2V1aTY0LmMK
LUxJQkxXSVBfU1JDUy0kKENPTkZJR19MV0lQX1BQUCkgKz0gJChMSUJMV0lQX0VYVFJBQ1RFRCkv
bmV0aWYvcHBwL2ZzbS5jCi1MSUJMV0lQX1NSQ1MtJChDT05GSUdfTFdJUF9QUFApICs9ICQoTElC
TFdJUF9FWFRSQUNURUQpL25ldGlmL3BwcC9pcGNwLmMKLUxJQkxXSVBfU1JDUy0kKENPTkZJR19M
V0lQX1BQUCkgKz0gJChMSUJMV0lQX0VYVFJBQ1RFRCkvbmV0aWYvcHBwL2lwdjZjcC5jCi1MSUJM
V0lQX1NSQ1MtJChDT05GSUdfTFdJUF9QUFApICs9ICQoTElCTFdJUF9FWFRSQUNURUQpL25ldGlm
L3BwcC9sY3AuYwotTElCTFdJUF9TUkNTLSQoQ09ORklHX0xXSVBfUFBQKSArPSAkKExJQkxXSVBf
RVhUUkFDVEVEKS9uZXRpZi9wcHAvbWFnaWMuYwotTElCTFdJUF9TUkNTLSQoQ09ORklHX0xXSVBf
UFBQKSArPSAkKExJQkxXSVBfRVhUUkFDVEVEKS9uZXRpZi9wcHAvbXBwZS5jCi1MSUJMV0lQX1NS
Q1MtJChDT05GSUdfTFdJUF9QUFApICs9ICQoTElCTFdJUF9FWFRSQUNURUQpL25ldGlmL3BwcC9t
dWx0aWxpbmsuYwotTElCTFdJUF9TUkNTLSQoQ09ORklHX0xXSVBfUFBQKSArPSAkKExJQkxXSVBf
RVhUUkFDVEVEKS9uZXRpZi9wcHAvcHBwLmMKLUxJQkxXSVBfU1JDUy0kKENPTkZJR19MV0lQX1BQ
UCkgKz0gJChMSUJMV0lQX0VYVFJBQ1RFRCkvbmV0aWYvcHBwL3BwcGFwaS5jCi1MSUJMV0lQX1NS
Q1MtJChDT05GSUdfTFdJUF9QUFApICs9ICQoTElCTFdJUF9FWFRSQUNURUQpL25ldGlmL3BwcC9w
cHBjcnlwdC5jCi1MSUJMV0lQX1NSQ1MtJChDT05GSUdfTFdJUF9QUFApICs9ICQoTElCTFdJUF9F
WFRSQUNURUQpL25ldGlmL3BwcC9wcHBvZS5jCi1MSUJMV0lQX1NSQ1MtJChDT05GSUdfTFdJUF9Q
UFApICs9ICQoTElCTFdJUF9FWFRSQUNURUQpL25ldGlmL3BwcC9wcHBvbDJ0cC5jCi1MSUJMV0lQ
X1NSQ1MtJChDT05GSUdfTFdJUF9QUFApICs9ICQoTElCTFdJUF9FWFRSQUNURUQpL25ldGlmL3Bw
cC9wcHBvcy5jCi1MSUJMV0lQX1NSQ1MtJChDT05GSUdfTFdJUF9QUFApICs9ICQoTElCTFdJUF9F
WFRSQUNURUQpL25ldGlmL3BwcC91cGFwLmMKLUxJQkxXSVBfU1JDUy0kKENPTkZJR19MV0lQX1BQ
UCkgKz0gJChMSUJMV0lQX0VYVFJBQ1RFRCkvbmV0aWYvcHBwL3V0aWxzLmMKLUxJQkxXSVBfU1JD
Uy0kKENPTkZJR19MV0lQX1BQUCkgKz0gJChMSUJMV0lQX0VYVFJBQ1RFRCkvbmV0aWYvcHBwL3Zq
LmMKLUxJQkxXSVBfU1JDUy0kKENPTkZJR19MV0lQX1BQUCkgKz0gJChMSUJMV0lQX0VYVFJBQ1RF
RCkvbmV0aWYvcHBwL3BvbGFyc3NsL2FyYzQuYwotTElCTFdJUF9TUkNTLSQoQ09ORklHX0xXSVBf
UFBQKSArPSAkKExJQkxXSVBfRVhUUkFDVEVEKS9uZXRpZi9wcHAvcG9sYXJzc2wvZGVzLmMKLUxJ
QkxXSVBfU1JDUy0kKENPTkZJR19MV0lQX1BQUCkgKz0gJChMSUJMV0lQX0VYVFJBQ1RFRCkvbmV0
aWYvcHBwL3BvbGFyc3NsL21kNC5jCi1MSUJMV0lQX1NSQ1MtJChDT05GSUdfTFdJUF9QUFApICs9
ICQoTElCTFdJUF9FWFRSQUNURUQpL25ldGlmL3BwcC9wb2xhcnNzbC9tZDUuYwotTElCTFdJUF9T
UkNTLSQoQ09ORklHX0xXSVBfUFBQKSArPSAkKExJQkxXSVBfRVhUUkFDVEVEKS9uZXRpZi9wcHAv
cG9sYXJzc2wvc2hhMS5jCmRpZmYgLS1naXQgYS9hbGxvYy5jIGIvYWxsb2MuYwppbmRleCA4NmUw
YzZiLi5hNWI0Mzc3IDEwMDY0NAotLS0gYS9hbGxvYy5jCisrKyBiL2FsbG9jLmMKQEAgLTEsMyAr
MSwzNiBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLworLyoK
KyAqIENvcHlyaWdodCAoYykgMjAxOSwgTkVDIExhYm9yYXRvcmllcyBFdXJvcGUgR21iSCwgTkVD
IENvcnBvcmF0aW9uLgorICogICAgICAgICAgICAgICAgICAgICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBo
b2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiAgICB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMgIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICoKKyAqIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElO
IEFOWSBXQVkuCisgKi8KKwogI2luY2x1ZGUgPHVrL2FsbG9jLmg+CiAKIHZvaWQgKnN5c19tYWxs
b2Moc2l6ZV90IHNpemUpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FyY2gvY2MuaCBiL2luY2x1ZGUv
YXJjaC9jYy5oCmluZGV4IDA5OWM0YWMuLmExZDBjMzQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXJj
aC9jYy5oCisrKyBiL2luY2x1ZGUvYXJjaC9jYy5oCkBAIC02MiwyOCArNjIsMjUgQEAKICNkZWZp
bmUgUEFDS19TVFJVQ1RfQkVHSU4KICNkZWZpbmUgUEFDS19TVFJVQ1RfRU5ECiAKLS8qIHBsYXRm
b3JtIHNwZWNpZmljIGRpYWdub3N0aWMgb3V0cHV0ICovCiAjZGVmaW5lIExXSVBfUExBVEZPUk1f
RElBRyhfeCkgXAotCWRvIHsJCQkJCSBcCi0JCWlmIChETFZMX0lORk8gPD0gRExWTF9NQVgpIHsJ
IFwKLQkJCV9sd2lwX3BsYXRmb3JtX2RpYWcgX3g7CSBcCi0JCX0JCQkJIFwKLQl9IHdoaWxlKDAp
CisJKHsgdWtfcHJfZGVidWcgX3g7IH0pCiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBfbHdpcF9wbGF0
Zm9ybV9kaWFnKGNvbnN0IGNoYXIgKmZtdCwgLi4uKQotewotCXZhX2xpc3QgYXA7CisjaWYgQ09O
RklHX0xJQlVLREVCVUdfRU5BQkxFX0FTU0VSVAorI2RlZmluZSBMV0lQX1BMQVRGT1JNX0FTU0VS
VChfeCkgXAorCWRvIHsgdWtfcHJfY3JpdChfeCk7IFVLX0JVRygpOyB9IHdoaWxlICgwKQorI2Vs
c2UKKyNkZWZpbmUgTFdJUF9QTEFURk9STV9BU1NFUlQoX3gpIFwKKwlkbyB7IH0gd2hpbGUgKDAp
CisjZW5kaWYgLyogQ09ORklHX0xJQlVLREVCVUdfRU5BQkxFX0FTU0VSVCAqLwogCi0JdmFfc3Rh
cnQoYXAsIGZtdCk7Ci0JdWtfdnByaW50ZChETFZMX0lORk8sIGZtdCwgYXApOwotCXZhX2VuZChh
cCk7Ci19CisvKiBsaWdodHdlaWdodCBzeW5jaHJvbml6YXRpb24gbWVjaGFuaXNtcyAqLworI2Rl
ZmluZSBTWVNfQVJDSF9ERUNMX1BST1RFQ1QoX3gpIFwKKwl1bnNpZ25lZCBsb25nIChfeCkKIAot
I2RlZmluZSBMV0lQX1BMQVRGT1JNX0FTU0VSVChfeCkgVUtfQVNTRVJUKChfeCkpCisjZGVmaW5l
IFNZU19BUkNIX1BST1RFQ1QoX3gpIFwKKwkoeyAoX3gpID0gdWtwbGF0X2xjcHVfc2F2ZV9pcnFm
KCk7IH0pCiAKLS8qIGxpZ2h0d2VpZ2h0IHN5bmNocm9uaXphdGlvbiBtZWNoYW5pc21zICovCi0j
ZGVmaW5lIFNZU19BUkNIX0RFQ0xfUFJPVEVDVChfeCkgIHVuc2lnbmVkIGxvbmcgKF94KQotI2Rl
ZmluZSBTWVNfQVJDSF9QUk9URUNUKF94KSAgICAgICBkbyB7IChfeCkgPSB1a3BsYXRfbGNwdV9z
YXZlX2lycWYoKTsgfSB3aGlsZSgwKQotI2RlZmluZSBTWVNfQVJDSF9VTlBST1RFQ1QoX3gpICAg
ICB1a3BsYXRfbGNwdV9yZXN0b3JlX2lycWYoKF94KSkKKyNkZWZpbmUgU1lTX0FSQ0hfVU5QUk9U
RUNUKF94KSBcCisJdWtwbGF0X2xjcHVfcmVzdG9yZV9pcnFmKChfeCkpCiAKICNlbmRpZiAvKiBf
X0xXSVBfQVJDSF9DQ19IX18gKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXJjaC9zeXNfYXJjaC5o
IGIvaW5jbHVkZS9hcmNoL3N5c19hcmNoLmgKaW5kZXggM2IxZmJlZi4uNjI1MTBlZSAxMDA2NDQK
LS0tIGEvaW5jbHVkZS9hcmNoL3N5c19hcmNoLmgKKysrIGIvaW5jbHVkZS9hcmNoL3N5c19hcmNo
LmgKQEAgLTEsMyArMSwzNSBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNs
YXVzZSAqLworLyoKKyAqIENvcHlyaWdodCAoYykgMjAxOSwgTkVDIExhYm9yYXRvcmllcyBFdXJv
cGUgR21iSCwgTkVDIENvcnBvcmF0aW9uLgorICogICAgICAgICAgICAgICAgICAgICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhl
IGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqICAgIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiAgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICoKKyAqIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9S
IE1PRElGSUVEIElOIEFOWSBXQVkuCisgKi8KIC8qCiAgKiBsd2lwL2FyY2gvc3lzX2FyY2guaAog
ICoKQEAgLTE2LDkgKzQ4LDEwIEBACiAjaW5jbHVkZSA8dWsvbXV0ZXguaD4KICNpbmNsdWRlIDx1
ay9zZW1hcGhvcmUuaD4KICNpbmNsdWRlIDx1ay9tYm94Lmg+Ci0jaWYgQ09ORklHX0xJQlVLU0NI
RUQKKworI2lmIENPTkZJR19MV0lQX1RIUkVBRFMKICNpbmNsdWRlIDx1ay90aHJlYWQuaD4KLSNl
bmRpZiAvKiBDT05GSUdfTElCVUtTQ0hFRCAqLworI2VuZGlmIC8qIENPTkZJR19MV0lQX1RIUkVB
RFMgKi8KIAogI2lmIENPTkZJR19MV0lQX1NPQ0tFVCAmJiBDT05GSUdfSEFWRV9MSUJDCiAjaW5j
bHVkZSA8ZmNudGwuaD4KQEAgLTQ0LDkgKzc3LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgewogCWludCB2
YWxpZDsKIH0gc3lzX21ib3hfdDsKIAotI2lmIENPTkZJR19MSUJVS1NDSEVECisjaWYgQ09ORklH
X0xXSVBfVEhSRUFEUwogdHlwZWRlZiBzdHJ1Y3QgdWtfdGhyZWFkICpzeXNfdGhyZWFkX3Q7Ci0j
ZW5kaWYgLyogQ09ORklHX0xJQlVLU0NIRUQgKi8KKyNlbmRpZiAvKiBDT05GSUdfTFdJUF9USFJF
QURTICovCiAKIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBzeXNfcHJvdF90OwogCmRpZmYgLS1naXQg
YS9pbmNsdWRlL2FycGEvaW5ldC5oIGIvaW5jbHVkZS9hcnBhL2luZXQuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMmZjNmMzCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVk
ZS9hcnBhL2luZXQuaApAQCAtMCwwICsxIEBACisjaW5jbHVkZSA8Y29tcGF0L3Bvc2l4L2FycGEv
aW5ldC5oPgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9sd2lwb3B0cy5oIGIvaW5jbHVkZS9sd2lwb3B0
cy5oCmluZGV4IGM2Y2MwYmMuLjc0OWIyYTkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbHdpcG9wdHMu
aAorKysgYi9pbmNsdWRlL2x3aXBvcHRzLmgKQEAgLTQsMjQgKzQsMjAgQEAKICAqIENvbmZpZ3Vy
YXRpb24gZm9yIGx3SVAgcnVubmluZyBvbiBtaW5pLW9zCiAgKgogICogVGltIERlZWdhbiA8VGlt
LkRlZWdhbkBldS5jaXRyaXgubmV0PiwgSnVseSAyMDA3Ci0gKiBTaW1vbiBLdWVuemVyIDxzaW1v
bi5rdWVuemVyQG5lY2xhYi5ldT4sIE9jdG9iZXIgMjAxMworICogU2ltb24gS3VlbnplciA8c2lt
b24ua3VlbnplckBuZWNsYWIuZXU+LCAyMDEzLTIwMTkKICAqLwogI2lmbmRlZiBfX0xXSVBfTFdJ
UE9QVFNfSF9fCiAjZGVmaW5lIF9fTFdJUF9MV0lQT1BUU19IX18KIAogI2luY2x1ZGUgPGludHR5
cGVzLmg+CisjaW5jbHVkZSA8c3lzL3RpbWUuaD4KICNpbmNsdWRlIDx1ay9jb25maWcuaD4KIAot
I2RlZmluZSBTT19SRVVTRSAxCi0KLS8qCi0gKiBHZW5lcmFsIG9wdGlvbnMvU3lzdGVtIHNldHRp
bmdzCisvKioKKyAqIE1lbW9yeSBtb2RlCiAgKi8KLS8qIGxpZ2h0d2VpZ2h0IHByb3RlY3Rpb24g
Ki8KLSNkZWZpbmUgU1lTX0xJR0hUV0VJR0hUX1BST1QgMQotCiAvKiBwcm92aWRlIG1hbGxvYy9m
cmVlIGJ5IFVuaWtyYWZ0ICovCi0jaWYgQ09ORklHX0xXSVBfSEVBUCAvKiBkZWZhdWx0ICovCisj
aWYgQ09ORklHX0xXSVBfSEVBUAogICAvKiBPbmx5IHVzZSBtYWxsb2MvZnJlZSBmb3IgbHdJUC4K
ICAgICogRXZlcnkgYWxsb2NhdGlvbiBpcyBkb25lIGJ5IHRoZSBoZWFwLgogICAgKiBOb3RlOiBU
aGlzIHNldHRpbmcgcmVzdWx0cyBpbiB0aGUgc21hbGxlc3QgYmluYXJ5CkBAIC0yOSwxMCArMjUs
OSBAQAogICAgKiAgICAgICBuZXR3b3JrIHByb2Nlc3NpbmcuCiAgICAqLwogICAjZGVmaW5lIE1F
TV9MSUJDX01BTExPQyAxIC8qIGVuYWJsZSBoZWFwICovCi0gICNkZWZpbmUgTUVNUF9NRU1fTUFM
TE9DIDEgLyogcG9vbCBhbGxvY2F0aW9ucyB2aWEgbWFsbG9jICh0aHVzIG5vdCBmcm9tIHBvb2wg
aW4gZGF0YSBzZWdtZW50KSAqLworICAjZGVmaW5lIE1FTVBfTUVNX01BTExPQyAxIC8qIHBvb2wg
YWxsb2NhdGlvbnMgdmlhIG1hbGxvYyAqLwogI2VsaWYgQ09ORklHX0xXSVBfUE9PTFMKLSAgLyog
VGhpcyBpcyB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uIChtaXhlZCkuCi0gICAqIFBvb2xzIGFy
ZSB1c2VkIGZvciBwb29sIGFsbG9jYXRpb25zIGFuZCB0aGUgaGVhcAorICAvKiBQb29scyBhcmUg
dXNlZCBmb3IgcG9vbCBhbGxvY2F0aW9ucyBhbmQgdGhlIGhlYXAKICAgICogaXMgdXNlZCBmb3Ig
YWxsIHRoZSByZXN0IG9mIGFsbG9jYXRpb25zLgogICAgKiBOb3RlOiBQZXIgZGVzaWduLCBsd0lQ
IGFsbG9jYXRlcyBvdXRnb2luZyBwYWNrZXQgYnVmZmVycwogICAgKiAgICAgICBmcm9tIGhlYXAg
KHZpYSBQQlVGX1JBTSkgYW5kIGluY29taW5nIGZyb20gcG9vbHMgKHZpYSBQQlVGX1BPT0wpCkBA
IC00NiwxNSArNDEsMTAgQEAKICAjZXJyb3IgQ29uZmlndXJhdGlvbiBlcnJvciEKICNlbmRpZiAv
KiBDT05GSUdfTFdJUF9IRUFQX09OTFkgLyBDT05GSUdfTFdJUF9QT09MU19PTkxZICovCiAKLSNk
ZWZpbmUgTUVNUF9TRVBBUkFURV9QT09MUyAxIC8qIGZvciBlYWNoIHBvb2wgdXNlIGEgc2VwYXJh
dGUgYXJyYXkgaW4gZGF0YSBzZWdtZW50ICovCi0KLS8vI2lmZGVmIENPTkZJR19MV0lQX1BPT0xT
X09OX0hFQVAgLyogbm90IHN1cHBvcnRlZCB5ZXQgKi8KLS8vI2RlZmluZSBNRU1QX1BPT0xTX09O
X0hFQVAgMSAvKiBhbGxvY2F0ZSBwb29scyBvbiBzeXN0ZW0ncyBoZWFwICovCi0vLyNlbmRpZgot
Ci0jZGVmaW5lIE1FTV9BTElHTk1FTlQgNAotCiAjaWYgTUVNX0xJQkNfTUFMTE9DCisvKgorICog
YWxsb2MuYyBiaW5kaW5nIHRvIHRoZSBzdGFjaworICovCiAjaW5jbHVkZSA8c3RkZGVmLmg+IC8q
IHNpemVfdCAqLwogdm9pZCAqc3lzX21hbGxvYyhzaXplX3Qgc2l6ZSk7CiB2b2lkICpzeXNfY2Fs
bG9jKGludCBudW0sIHNpemVfdCBzaXplKTsKQEAgLTY2LDU2ICs1Niw5MiBAQCB2b2lkIHN5c19m
cmVlKHZvaWQgKnB0cik7CiAjZW5kaWYgLyogTUVNX0xJQkNfTUFMTE9DICovCiAKICNpZiBNRU1f
VVNFX1BPT0xTCi0vKiByZXF1aXJlcyBsd2lwcG9vbHMuaCAqLwotI2RlZmluZSBNRU1QX1VTRV9D
VVNUT01fUE9PTFMgMAotI2VuZGlmIC8qIE1FTV9VU0VfUE9PTFMgKi8KLQogLyoKLSAqIE1vc3Qg
ZmVhdHVyZXMgYXJlIHNlbGVjdGVkIGJ5IHVrL2NvbmZpZy5oCisgKiBVc2UgbHdJUCdzIHBvb2xz
CiAgKi8KLSNkZWZpbmUgTFdJUF9ORVRJRl9SRU1PVkVfQ0FMTEJBQ0sgMQotI2RlZmluZSBMV0lQ
X1RJTUVWQUxfUFJJVkFURSAwCi0KLS8qIGRpc2FibGUgQlNELXN0eWxlIHNvY2tldCAtIGxheWVy
IGlzIHByb3ZpZGVkIGJ5IGxpYmMgKi8KLSNkZWZpbmUgTFdJUF9DT01QQVRfU09DS0VUUyAwCisj
ZGVmaW5lIE1FTVBfVVNFX0NVU1RPTV9QT09MUyAwCisvKiBmb3IgZWFjaCBwb29sIHVzZSBhIHNl
cGFyYXRlIGFycmF5IGluIGRhdGEgc2VnbWVudCAqLworI2RlZmluZSBNRU1QX1NFUEFSQVRFX1BP
T0xTIDEKKyNlbmRpZiAvKiBNRU1fVVNFX1BPT0xTICovCiAKLS8qCi0gKiBUaHJlYWQgb3B0aW9u
cworLyoqCisgKiBPcGVyYXRpb24gbW9kZSAodGhyZWFkZWQsIG1haW5sb29wKQogICovCi0jaWZu
ZGVmIENPTkZJR19MV0lQX05PVEhSRUFEUworI2lmIENPTkZJR19MV0lQX05PVEhSRUFEUworI2Rl
ZmluZSBOT19TWVMgMQorI2Vsc2UgIC8qIENPTkZJR19MV0lQX05PVEhSRUFEUyAqLworI2RlZmlu
ZSBOT19TWVMgMAorLyogbGlnaHR3ZWlnaHQgcHJvdGVjdGlvbiAqLworI2RlZmluZSBTWVNfTElH
SFRXRUlHSFRfUFJPVCAxCiAjZGVmaW5lIFRDUElQX1RIUkVBRF9OQU1FICJsd2lwIgogI2RlZmlu
ZSBUQ1BJUF9NQk9YX1NJWkUgMjU2Ci0jZGVmaW5lIE1FTVBfTlVNX1RDUElQX01TR19JTlBLVCAy
NTYKICNlbmRpZiAvKiBDT05GSUdfTFdJUF9OT1RIUkVBRFMgKi8KIAotLyoKKy8qKgorICogUGJ1
ZiBvcHRpb25zCisgKi8KKyNkZWZpbmUgTFdJUF9TVVBQT1JUX0NVU1RPTV9QQlVGIDEKKworLyoq
CisgKiBOZXRpZiBvcHRpb25zCisgKi8KKyNkZWZpbmUgTFdJUF9ORVRJRl9SRU1PVkVfQ0FMTEJB
Q0sgMQorI2RlZmluZSBMV0lQX1RJTUVWQUxfUFJJVkFURSAwCisjZGVmaW5lIExXSVBfTkVUSUZf
U1RBVFVTX0NBTExCQUNLIDEKKworLyoqCiAgKiBBUlAgb3B0aW9ucwogICovCiAjZGVmaW5lIE1F
TVBfTlVNX0FSUF9RVUVVRSAyNTYKICNkZWZpbmUgRVRIQVJQX1NVUFBPUlRfU1RBVElDX0VOVFJJ
RVMgMQogCi0vKgorLyoqCisgKiBJUCBvcHRpb25zCisgKi8KKyNpZiBDT05GSUdfTFdJUF9JUFY0
CisjZGVmaW5lIExXSVBfSVBWNCAxCisjZWxzZQorI2RlZmluZSBMV0lQX0lQVjQgMAorI2VuZGlm
CisKKyNpZiBDT05GSUdfTFdJUF9JUFY2CisjZGVmaW5lIExXSVBfSVBWNiAxCisjZGVmaW5lIElQ
VjZfRlJBR19DT1BZSEVBREVSIDEKKworI2Vsc2UKKyNkZWZpbmUgTFdJUF9JUFY2IDAKKyNlbmRp
ZgorCisjaWYgKCghTFdJUF9JUFY0KSAmJiAoIUxXSVBfSVBWNikpCisjZXJyb3IgTm8gSVAgcHJv
dG9jb2wgd2FzIHNlbGVjdGVkISBQbGVhc2UgY2hvb3NlIGF0IGxlYXN0IG9uZSBvZiBMV0lQX0lQ
VjQgYW5kIExXSVBfSVBWNgorI2VuZGlmCisKKy8qKgogICogVURQIG9wdGlvbnMKICAqLwotLy8j
ZGVmaW5lIE1FTVBfTlVNX1VEUF9QQ0IgMTYKKyNpZiBDT05GSUdfTFdJUF9VRFAKKyNkZWZpbmUg
TFdJUF9VRFAgMQorI2Vsc2UKKyNkZWZpbmUgTFdJUF9VRFAgMAorI2VuZGlmCiAKLS8qCisvKioK
ICAqIFRDUCBvcHRpb25zCiAgKi8KLSNkZWZpbmUgVENQX01TUyBDT05GSUdfTFdJUF9UQ1BfTVNT
Ci0KKyNpZiBDT05GSUdfTFdJUF9UQ1AKKyNkZWZpbmUgTFdJUF9UQ1AgMQorI2Vsc2UKKyNkZWZp
bmUgTFdJUF9UQ1AgMAorI2VuZGlmCiAKKyNpZiBMV0lQX1RDUAorI2RlZmluZSBUQ1BfTVNTIENP
TkZJR19MV0lQX1RDUF9NU1MKICNkZWZpbmUgVENQX0NBTENVTEFURV9FRkZfU0VORF9NU1MgMQog
I2RlZmluZSBJUF9GUkFHIDAKIAotCi0KICNpZiBDT05GSUdfTFdJUF9XTkRfU0NBTEUKIC8qCiAg
KiBNYXhpbXVtIHdpbmRvdyBhbmQgc2NhbGluZyBmYWN0b3IKLSAqIE9wdGltYWwgc2V0dGluZ3Mg
Zm9yIFJYIHBlcmZvcm1hbmNlIGFyZToKLSAqIAlUQ1BfV05ECQkyNjIxNDMKLSAqIAlUQ1BfUkNW
X1NDQUxFCTUKICAqLwogI2RlZmluZSBMV0lQX1dORF9TQ0FMRSAgMQogI2lmIGRlZmluZWQgQ09O
RklHX0xXSVBfV05EX1NDQUxFX0ZBQ1RPUiAmJiBDT05GSUdfTFdJUF9XTkRfU0NBTEVfRkFDVE9S
ID49IDEKQEAgLTEyOCwxMSArMTU0LDEyIEBAIHZvaWQgc3lzX2ZyZWUodm9pZCAqcHRyKTsKIAog
I2Vsc2UgLyogQ09ORklHX0xXSVBfV05EX1NDQUxFICovCiAvKgotICogT3B0aW9ucyB3aGVuIG5v
IHdpbmRvdyBzY2FsaW5nICBpcyBlbmFibGVkCisgKiBPcHRpb25zIHdoZW4gbm8gd2luZG93IHNj
YWxpbmcgaXMgZW5hYmxlZAogICovCisjZGVmaW5lIExXSVBfV05EX1NDQUxFIDAKICNkZWZpbmUg
VENQX1dORCAzMjc2NiAvKiBJZGVhbGx5LCBUQ1BfV05EIHNob3VsZCBiZSBsaW5rIGJhbmR3aWR0
aCBtdWx0aXBsaWVkIGJ5IHJ0dCAqLwogI2RlZmluZSBUQ1BfU05EX0JVRiAoVENQX1dORCArICgy
ICogVENQX01TUykpCi0jZW5kaWYgLyogTFdJUF9XTkRfU0NBTEUgKi8KKyNlbmRpZiAvKiBDT05G
SUdfTFdJUF9XTkRfU0NBTEUgKi8KIAogI2RlZmluZSBUQ1BfU05ETE9XQVQgKDQgKiBUQ1BfTVNT
KQogI2RlZmluZSBUQ1BfU05EX1FVRVVFTEVOICgyICogKFRDUF9TTkRfQlVGKSAvIChUQ1BfTVNT
KSkKQEAgLTE0Miw3MCArMTY5LDE1MiBAQCB2b2lkIHN5c19mcmVlKHZvaWQgKnB0cik7CiAKICNk
ZWZpbmUgTUVNUF9OVU1fVENQX1BDQiBDT05GSUdfTFdJUF9OVU1fVENQQ09OIC8qIG1heCBudW0g
b2Ygc2ltLiBUQ1AgY29ubmVjdGlvbnMgKi8KICNkZWZpbmUgTUVNUF9OVU1fVENQX1BDQl9MSVNU
RU4gMzIgLyogbWF4IG51bSBvZiBzaW0uIFRDUCBsaXN0ZW5lcnMgKi8KKyNlbmRpZiAvKiBMV0lQ
X1RDUCAqLworCisvKioKKyAqIFNvY2tldCBvcHRpb25zCisgKi8KKyNpZiBDT05GSUdfTFdJUF9T
T0NLRVQKKyNkZWZpbmUgTFdJUF9TT0NLRVQgMQorI2Vsc2UKKyNkZWZpbmUgTFdJUF9TT0NLRVQg
MAorI2VuZGlmCisKKyNpZiBMV0lQX1NPQ0tFVAorLyogU3RvcCBsd2lwIHRvIHByb3ZpZGUgZmRf
c2V0ICovCisjaW5jbHVkZSA8c3lzL3NlbGVjdC5oPgorCisjaWZuZGVmIEZEX1NFVAorI2RlZmlu
ZSBGRF9TRVQKKyNlbmRpZgogCiAvKgorICogZGlzYWJsZSBCU0Qtc3R5bGUgc29ja2V0IGludGVy
ZmFjZQorICogV2Ugd2lsbCBwcm92aWRlIHRoZSBsYXllciB3aXRoIHNvY2tldC5jfHVuaWtyYWZ0
CisgKi8KKyNkZWZpbmUgTFdJUF9DT01QQVRfU09DS0VUUyAwCisKKy8qIGVuYWJsZSBTT19SRVVT
RUFERFIgb3B0aW9uICovCisjZGVmaW5lIFNPX1JFVVNFIDEKKyNlbmRpZiAvKiBMV0lQX1NPQ0tF
VCAqLworCisvKioKICAqIEROUyBvcHRpb25zCiAgKi8KKyNpZiBDT05GSUdfTFdJUF9ETlMKKyNk
ZWZpbmUgTFdJUF9ETlMgMQorI2Vsc2UKKyNkZWZpbmUgTFdJUF9ETlMgMAorI2VuZGlmCisKKyNp
ZiBMV0lQX0ROUwogI2RlZmluZSBETlNfTUFYX1NFUlZFUlMgQ09ORklHX0xXSVBfRE5TX01BWF9T
RVJWRVJTCiAjZGVmaW5lIEROU19UQUJMRV9TSVpFIENPTkZJR19MV0lQX0ROU19UQUJMRV9TSVpF
CiAjZGVmaW5lIEROU19MT0NBTF9IT1NUX0xJU1QgMQogI2RlZmluZSBETlNfTE9DQUxfSE9TVExJ
U1RfSVNfRFlOQU1JQyAxCisjZW5kaWYgLyogTFdJUF9ETlMgKi8KIAorLyoqCisgKiBNZW1vcnkg
cG9vbCBzaXplcworICovCisjaWYgTUVNX1VTRV9QT09MUwogLyoKLSAqIFBvb2wgb3B0aW9ucwor
ICogV2UgZGltZW5zaW9uIHBvb2wgc2l6ZXMgb24gcHJldmlvdXMgc3RhY2sgY29uZmlndXJhdGlv
bnMgc28gd2UgaGF2ZSB0byBkbworICogdGhpcyBhdCB0aGUgdmVyeSBsYXN0IHBvaW50IGluIHRo
aXMgY29uZmlndXJhdGlvbiBmaWxlLgogICovCi0vKiBQQlVGIHBvb2xzICovCiAjaWZuZGVmIFBC
VUZfUE9PTF9TSVpFCiAjZGVmaW5lIFBCVUZfUE9PTF9TSVpFICgoVENQX1dORCArIFRDUF9NU1Mg
LSAxKSAvIFRDUF9NU1MpCiAjZW5kaWYKLSNpZm5kZWYgQ09ORklHX05FVEZST05UX1BFUlNJU1RF
TlRfR1JBTlRTCi0jZGVmaW5lIExXSVBfU1VQUE9SVF9DVVNUT01fUEJVRiAxCi0jZW5kaWYKICNp
Zm5kZWYgTUVNUF9OVU1fUEJVRgogI2RlZmluZSBNRU1QX05VTV9QQlVGICgoTUVNUF9OVU1fVENQ
X1BDQiAqIChUQ1BfU05EX1FVRVVFTEVOKSkgLyAyKQogI2VuZGlmCisjZGVmaW5lIE1FTVBfTlVN
X1RDUElQX01TR19JTlBLVCBUQ1BJUF9NQk9YX1NJWkUKKyNlbmRpZiAvKiBNRU1fVVNFX1BPT0xT
ICovCiAKLS8qCisvKioKKyAqIEFkZGl0aW9uYWwgZmVhdHVyZXMKKyAqLworI2lmIENPTkZJR19M
V0lQX0lDTVAKKyNkZWZpbmUgTFdJUF9JQ01QIDEKKyNlbHNlCisjZGVmaW5lIExXSVBfSUNNUCAw
CisjZW5kaWYKKworI2lmIENPTkZJR19MV0lQX0lHTVAKKyNkZWZpbmUgTFdJUF9JR01QIDEKKyNl
bHNlCisjZGVmaW5lIExXSVBfSUdNUCAwCisjZW5kaWYKKworI2lmIENPTkZJR19MV0lQX1NOTVAK
KyNkZWZpbmUgTFdJUF9TTk1QIDEKKyNlbHNlCisjZGVmaW5lIExXSVBfU05NUCAwCisjZW5kaWYK
KworI2lmIENPTkZJR19MV0lQX0RIQ1AKKyNkZWZpbmUgTFdJUF9ESENQIDEKKyNlbHNlCisjZGVm
aW5lIExXSVBfREhDUCAwCisjZW5kaWYKKworI2lmIENPTkZJR19MV0lQX05PVEhSRUFEUworI2Rl
ZmluZSBMV0lQX05FVENPTk4gMAorI2Vsc2UKKyNkZWZpbmUgTFdJUF9ORVRDT05OIDEKKyNlbmRp
ZgorCisvKioKICAqIENoZWNrc3VtIG9wdGlvbnMKICAqLwotI2RlZmluZSBDSEVDS1NVTV9HRU5f
SVAgQ09ORklHX0xXSVBfVFhDSEVDS1NVTQotI2RlZmluZSBDSEVDS1NVTV9HRU5fSVA2IENPTkZJ
R19MV0lQX1RYQ0hFQ0tTVU0KLSNkZWZpbmUgQ0hFQ0tTVU1fR0VOX0lDTVAgQ09ORklHX0xXSVBf
VFhDSEVDS1NVTQotI2RlZmluZSBDSEVDS1NVTV9HRU5fSUNNUDYgQ09ORklHX0xXSVBfVFhDSEVD
S1NVTQotI2RlZmluZSBDSEVDS1NVTV9HRU5fVURQIENPTkZJR19MV0lQX1RYQ0hFQ0tTVU0KLSNk
ZWZpbmUgQ0hFQ0tTVU1fR0VOX1RDUCBDT05GSUdfTFdJUF9UWENIRUNLU1VNCi0jZGVmaW5lIExX
SVBfQ0hFQ0tTVU1fT05fQ09QWSAxCi0KLS8qIENoZWNrc3VtIGNoZWNraW5nIGlzIG9mZmxvYWRl
ZCB0byB0aGUgaG9zdCAobHdpcC1uZXQgaXMgYSB2aXJ0dWFsIGludGVyZmFjZSkKLSAqIFRPRE86
IGJldHRlciBzb2x1dGlvbiBpcyB3aGVuIG5ldGZyb250IGZvcndhcmRzIGNoZWNrc3VtIGZsYWdz
IHRvIGx3SVAgKi8KLSNkZWZpbmUgQ0hFQ0tTVU1fQ0hFQ0tfSVAgQ09ORklHX0xXSVBfUlhDSEVD
S1NVTQotI2RlZmluZSBDSEVDS1NVTV9DSEVDS19VRFAgQ09ORklHX0xXSVBfUlhDSEVDS1NVTQot
I2RlZmluZSBDSEVDS1NVTV9DSEVDS19UQ1AgQ09ORklHX0xXSVBfUlhDSEVDS1NVTQotI2RlZmlu
ZSBDSEVDS1NVTV9DSEVDS19JQ01QIENPTkZJR19MV0lQX1JYQ0hFQ0tTVU0KLSNkZWZpbmUgQ0hF
Q0tTVU1fQ0hFQ0tfSUNNUDYgQ09ORklHX0xXSVBfUlhDSEVDS1NVTQotI2RlZmluZSBDSEVDS1NV
TV9DSEVDS19UQ1AgQ09ORklHX0xXSVBfUlhDSEVDS1NVTQotCi0jaWZkZWYgQ09ORklHX0xXSVBf
TUFJTkxPT1BfREVCVUcKLSNkZWZpbmUgSVBfREVCVUcgICAgICAgICBMV0lQX0RCR19PTgorLyoK
KyAqIFdlIGVuYWJsZSB0aGUgb3B0aW9uIHRoYXQgZWFjaCBuZXRpZiBjYW4gZW5hYmxlIGFuZCBk
aXNhYmxlCisgKiBpbmRpdmlkdWFsbHkgd2hpY2ggY2hlY2tzdW1zIHNob3VsZCBiZSBjaGVja2Vk
L2NhbGN1bGF0ZWQgYnkgdGhlIHN0YWNrCisgKi8KKyNkZWZpbmUgTFdJUF9DSEVDS1NVTV9DVFJM
X1BFUl9ORVRJRiAxCisKKyNkZWZpbmUgQ0hFQ0tTVU1fR0VOX0lQICAgICAgMQorI2RlZmluZSBD
SEVDS1NVTV9HRU5fSVA2ICAgICAxCisjZGVmaW5lIENIRUNLU1VNX0dFTl9JQ01QICAgIDEKKyNk
ZWZpbmUgQ0hFQ0tTVU1fR0VOX0lDTVA2ICAgMQorI2RlZmluZSBDSEVDS1NVTV9HRU5fVURQICAg
ICAxCisjZGVmaW5lIENIRUNLU1VNX0dFTl9UQ1AgICAgIDEKKyNkZWZpbmUgQ0hFQ0tTVU1fQ0hF
Q0tfSVAgICAgMQorI2RlZmluZSBDSEVDS1NVTV9DSEVDS19VRFAgICAxCisjZGVmaW5lIENIRUNL
U1VNX0NIRUNLX1RDUCAgIDEKKyNkZWZpbmUgQ0hFQ0tTVU1fQ0hFQ0tfSUNNUCAgMQorI2RlZmlu
ZSBDSEVDS1NVTV9DSEVDS19JQ01QNiAxCisjZGVmaW5lIENIRUNLU1VNX0NIRUNLX1RDUCAgIDEK
KworLyoqCisgKiBEZWJ1Z2dpbmcgb3B0aW9ucworICovCisjaWYgQ09ORklHX0xXSVBfREVCVUcK
KyNkZWZpbmUgTFdJUF9ERUJVRworI2RlZmluZSBMV0lQX0RCR19NSU5fTEVWRUwgICBMV0lQX0RC
R19MRVZFTF9BTEwKKyNkZWZpbmUgTFdJUF9EQkdfVFlQRVNfT04gICAgTFdJUF9EQkdfT04KKwor
I2lmIENPTkZJR19MV0lQX01BSU5MT09QX0RFQlVHCiAjZGVmaW5lIFRDUElQX0RFQlVHICAgICAg
TFdJUF9EQkdfT04KICNkZWZpbmUgVElNRVJTX0RFQlVHICAgICBMV0lQX0RCR19PTgogI2VuZGlm
IC8qIENPTkZJR19MV0lQX01BSU5MT09QX0RFQlVHICovCiAKLSNpZmRlZiBDT05GSUdfTFdJUF9J
Rl9ERUJVRworI2lmIENPTkZJR19MV0lQX0lGX0RFQlVHCisjZGVmaW5lIEVUSEFSUF9ERUJVRyAg
ICAgTFdJUF9EQkdfT04KICNkZWZpbmUgTkVUSUZfREVCVUcgICAgICBMV0lQX0RCR19PTgogI2Vu
ZGlmIC8qIENPTkZJR19MV0lQX0lGX0RFQlVHICovCiAKLSNpZmRlZiBDT05GSUdfTFdJUF9JUF9E
RUJVRworI2lmIENPTkZJR19MV0lQX0lQX0RFQlVHCiAjZGVmaW5lIElQX0RFQlVHICAgICAgICAg
TFdJUF9EQkdfT04KICNkZWZpbmUgSVA2X0RFQlVHICAgICAgICBMV0lQX0RCR19PTgogI2RlZmlu
ZSBJUF9SRUFTU19ERUJVRyAgIExXSVBfREJHX09OCiAjZW5kaWYgLyogQ09ORklHX0xXSVBfSVBf
REVCVUcgKi8KIAotI2lmZGVmIENPTkZJR19MV0lQX1VEUF9ERUJVRworI2lmIENPTkZJR19MV0lQ
X1VEUF9ERUJVRwogI2RlZmluZSBVRFBfREVCVUcgICAgICAgIExXSVBfREJHX09OCiAjZW5kaWYg
LyogQ09ORklHX0xXSVBfVURQX0RFQlVHICovCiAKLSNpZmRlZiBDT05GSUdfTFdJUF9UQ1BfREVC
VUcKKyNpZiBDT05GSUdfTFdJUF9UQ1BfREVCVUcKICNkZWZpbmUgVENQX0RFQlVHICAgICAgICBM
V0lQX0RCR19PTgogI2RlZmluZSBUQ1BfRlJfREVCVUcgICAgIExXSVBfREJHX09OCiAjZGVmaW5l
IFRDUF9SVE9fREVCVUcgICAgTFdJUF9EQkdfT04KQEAgLTIxMywyOCArMzIyLDI4IEBAIHZvaWQg
c3lzX2ZyZWUodm9pZCAqcHRyKTsKICNkZWZpbmUgVENQX1dORF9ERUJVRyAgICBMV0lQX0RCR19P
TgogI2RlZmluZSBUQ1BfUlNUX0RFQlVHICAgIExXSVBfREJHX09OCiAjZGVmaW5lIFRDUF9RTEVO
X0RFQlVHICAgTFdJUF9EQkdfT04KLS8vI2RlZmluZSBUQ1BfT1VUUFVUX0RFQlVHIExXSVBfREJH
X09OCi0vLyNkZWZpbmUgVENQX0lOUFVUX0RFQlVHIExXSVBfREJHX09OCisjZGVmaW5lIFRDUF9P
VVRQVVRfREVCVUcgTFdJUF9EQkdfT04KKyNkZWZpbmUgVENQX0lOUFVUX0RFQlVHIExXSVBfREJH
X09OCiAjaWYgTFdJUF9DSEVDS1NVTV9PTl9DT1BZCiAjZGVmaW5lIFRDUF9DSEVDS1NVTV9PTl9D
T1BZX1NBTklUWV9DSEVDSyAxCiAjZW5kaWYKICNlbmRpZiAvKiBDT05GSUdfTFdJUF9UQ1BfREVC
VUcgKi8KIAotI2lmZGVmIENPTkZJR19MV0lQX1NZU19ERUJVRworI2lmIENPTkZJR19MV0lQX1NZ
U19ERUJVRwogI2RlZmluZSBTWVNfREVCVUcgICAgICAgIExXSVBfREJHX09OCiAjZGVmaW5lIFBC
VUZfREVCVUcgICAgICAgTFdJUF9EQkdfT04KICNkZWZpbmUgTUVNX0RFQlVHICAgICAgICBMV0lQ
X0RCR19PTgogI2RlZmluZSBNRU1QX0RFQlVHICAgICAgIExXSVBfREJHX09OCi0jZW5kaWYgLyog
TFdJUF9TWVNfREVCVUcgKi8KKyNlbmRpZiAvKiBDT05GSUdfTFdJUF9TWVNfREVCVUcgKi8KIAot
I2lmZGVmIExXSVBfQVBJX0RFQlVHCisjaWYgQ09ORklHX0xXSVBfQVBJX0RFQlVHCiAjZGVmaW5l
IFNPQ0tFVFNfREVCVUcgICAgTFdJUF9EQkdfT04KICNkZWZpbmUgUkFXX0RFQlVHICAgICAgICBM
V0lQX0RCR19PTgogI2RlZmluZSBBUElfTVNHX0RFQlVHICAgIExXSVBfREJHX09OCiAjZGVmaW5l
IEFQSV9MSUJfREVCVUcgICAgTFdJUF9EQkdfT04KLSNlbmRpZiAvKiBMV0lQX0FQSV9ERUJVRyAq
LworI2VuZGlmIC8qIENPTkZJR19MV0lQX0FQSV9ERUJVRyAqLwogCi0jaWZkZWYgTFdJUF9TRVJW
SUNFX0RFQlVHCisjaWYgQ09ORklHX0xXSVBfU0VSVklDRV9ERUJVRwogI2RlZmluZSBFVEhBUlBf
REVCVUcgICAgIExXSVBfREJHX09OCiAjZGVmaW5lIEROU19ERUJVRyAgICAgICAgTFdJUF9EQkdf
T04KICNkZWZpbmUgQVVUT0lQX0RFQlVHICAgICBMV0lQX0RCR19PTgpAQCAtMjQzLDggKzM1Miw3
IEBAIHZvaWQgc3lzX2ZyZWUodm9pZCAqcHRyKTsKICNkZWZpbmUgU05NUF9ERUJVRyAgICAgICBM
V0lQX0RCR19PTgogI2RlZmluZSBTTk1QX01TR19ERUJVRyAgIExXSVBfREJHX09OCiAjZGVmaW5l
IFNOTVBfTUlCX0RFQlVHICAgTFdJUF9EQkdfT04KLSNkZWZpbmUgUFBQX0RFQlVHICAgICAgICBM
V0lQX0RCR19PTgotI2RlZmluZSBTTElQX0RFQlVHICAgICAgIExXSVBfREJHX09OCi0jZW5kaWYg
LyogTFdJUF9TRVJWSUNFX0RFQlVHICovCisjZW5kaWYgLyogQ09ORklHX0xXSVBfU0VSVklDRV9E
RUJVRyAqLworI2VuZGlmIC8qIENPTkZJR19MV0lQX0RFQlVHICovCiAKICNlbmRpZiAvKiBfX0xX
SVBfTFdJUE9QVFNfSF9fICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9pZi5oIGIvaW5jbHVk
ZS9uZXQvaWYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZmJmZGVjCi0t
LSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9uZXQvaWYuaApAQCAtMCwwICsxIEBACisjaW5jbHVk
ZSA8Y29tcGF0L3Bvc2l4L25ldC9pZi5oPgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXRkYi5oIGIv
aW5jbHVkZS9uZXRkYi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlMmVi
NjAKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL25ldGRiLmgKQEAgLTAsMCArMSBAQAorI2lu
Y2x1ZGUgPGNvbXBhdC9wb3NpeC9uZXRkYi5oPgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zeXMvc29j
a2V0LmggYi9pbmNsdWRlL3N5cy9zb2NrZXQuaAppbmRleCA1ZjQ5NmNiLi4yYTAxODc3IDEwMDY0
NAotLS0gYS9pbmNsdWRlL3N5cy9zb2NrZXQuaAorKysgYi9pbmNsdWRlL3N5cy9zb2NrZXQuaApA
QCAtMSwxMyArMSw2OCBAQAotI2lmbmRlZiBVS19MV0lQX1NPQ0tFVF9ICi0jaW5jbHVkZSA8dWsv
Y29uZmlnLmg+CisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCisv
KgorICogQ29weXJpZ2h0IChjKSAyMDE5LCBORUMgTGFib3JhdG9yaWVzIEV1cm9wZSBHbWJILCBO
RUMgQ29ycG9yYXRpb24uCisgKiAgICAgICAgICAgICAgICAgICAgIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0
IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cworICogICAgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqICAgIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKgorICogVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQgT1IgTU9ESUZJRUQg
SU4gQU5ZIFdBWS4KKyAqLwogCisjaWZuZGVmIF9VS19MV0lQX1NPQ0tFVF9IXwogCi0jaWYgQ09O
RklHX0xJQkxXSVAKLSNpbmNsdWRlIDxsd2lwL2luZXQuaD4KKyNpbmNsdWRlIDx1ay9jb25maWcu
aD4KICNpbmNsdWRlIDxsd2lwL3NvY2tldHMuaD4KLSNlbmRpZiAvKiBDT05GSUdfTElCTFdJUCAq
LwogCisjaWZuZGVmIFNPQ0tfQ0xPRVhFQwogI2RlZmluZSBTT0NLX0NMT0VYRUMgICAgMHgxMDAw
MDAwMAorI2VuZGlmCisKKyNpZm5kZWYgU09DS19OT05CTE9DSwogI2RlZmluZSBTT0NLX05PTkJM
T0NLICAgMHgyMDAwMDAwMAorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfTElCTk9MSUJDCitpbnQg
c29ja2V0KGludCBkb21haW4sIGludCB0eXBlLCBpbnQgcHJvdG9jb2wpOworaW50IGFjY2VwdChp
bnQgcywgc3RydWN0IHNvY2thZGRyICphZGRyLCBzb2NrbGVuX3QgKmFkZHJsZW4pOworaW50IGJp
bmQoaW50IHMsIGNvbnN0IHN0cnVjdCBzb2NrYWRkciAqbmFtZSwgc29ja2xlbl90IG5hbWVsZW4p
OworaW50IHNodXRkb3duKGludCBzLCBpbnQgaG93KTsKK2ludCBnZXRwZWVybmFtZShpbnQgcywg
c3RydWN0IHNvY2thZGRyICpuYW1lLCBzb2NrbGVuX3QgKm5hbWVsZW4pOworaW50IGdldHNvY2tu
YW1lKGludCBzLCBzdHJ1Y3Qgc29ja2FkZHIgKm5hbWUsIHNvY2tsZW5fdCAqbmFtZWxlbik7Citp
bnQgZ2V0c29ja29wdChpbnQgcywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFs
LCBzb2NrbGVuX3QgKm9wdGxlbik7CitpbnQgc2V0c29ja29wdChpbnQgcywgaW50IGxldmVsLCBp
bnQgb3B0bmFtZSwgY29uc3Qgdm9pZCAqb3B0dmFsLAorCSAgICAgICBzb2NrbGVuX3Qgb3B0bGVu
KTsKK2ludCBjb25uZWN0KGludCBzLCBjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKm5hbWUsIHNvY2ts
ZW5fdCBuYW1lbGVuKTsKK2ludCBsaXN0ZW4oaW50IHMsIGludCBiYWNrbG9nKTsKK2ludCByZWN2
KGludCBzLCB2b2lkICptZW0sIHNpemVfdCBsZW4sIGludCBmbGFncyk7CitpbnQgcmVjdmZyb20o
aW50IHMsIHZvaWQgKm1lbSwgc2l6ZV90IGxlbiwgaW50IGZsYWdzLAorCSAgICAgc3RydWN0IHNv
Y2thZGRyICpmcm9tLCBzb2NrbGVuX3QgKmZyb21sZW4pOworaW50IHNlbmQoaW50IHMsIGNvbnN0
IHZvaWQgKmRhdGFwdHIsIHNpemVfdCBzaXplLCBpbnQgZmxhZ3MpOworaW50IHNlbmRtc2coaW50
IHMsIGNvbnN0IHN0cnVjdCBtc2doZHIgKm1lc3NhZ2UsIGludCBmbGFncyk7CitpbnQgc2VuZHRv
KGludCBzLCBjb25zdCB2b2lkICpkYXRhcHRyLCBzaXplX3Qgc2l6ZSwgaW50IGZsYWdzLAorCSAg
IGNvbnN0IHN0cnVjdCBzb2NrYWRkciAqdG8sIHNvY2tsZW5fdCB0b2xlbik7CisjZW5kaWYgLyog
Q09ORklHX0xJQk5PTElCQyAqLwogCi0jZW5kaWYgLyogVUtfTFdJUF9TT0NLRVRfSCAqLworI2Vu
ZGlmIC8qIF9VS19MV0lQX1NPQ0tFVF9IXyAqLwpkaWZmIC0tZ2l0IGEvaW5pdC5jIGIvaW5pdC5j
CmluZGV4IDAzMjY2NjIuLmVjZTM2M2QgMTAwNjQ0Ci0tLSBhL2luaXQuYworKysgYi9pbml0LmMK
QEAgLTEsMjcgKzEsODYgQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1
c2UgKi8KKy8qCisgKiBBdXRob3JzOiBTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xh
Yi5ldT4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTksIE5FQyBMYWJvcmF0b3JpZXMgRXVyb3Bl
IEdtYkgsIE5FQyBDb3Jwb3JhdGlvbi4KKyAqICAgICAgICAgICAgICAgICAgICAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBj
b3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiAgICBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqCisgKiBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBN
T0RJRklFRCBJTiBBTlkgV0FZLgorICovCisKICNpbmNsdWRlIDx1ay9jb25maWcuaD4KLSNpbmNs
dWRlIDxsd2lwL3RjcGlwLmg+Ci0jaW5jbHVkZSA8bHdpcC9pbml0Lmg+Ci0jaW5jbHVkZSA8dWsv
cGxhdC9jdG9ycy5oPgotCi0vKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBiZWZvcmUgdGhlIGFu
eSBvdGhlciBzeXNfYXJjaC1mdW5jdGlvbiBpcwotICogY2FsbGVkIGFuZCBpcyBtZWFudCB0byBi
ZSB1c2VkIHRvIGluaXRpYWxpemUgYW55dGhpbmcgdGhhdCBoYXMgdG8KLSAqIGJlIHVwIGFuZCBy
dW5uaW5nIGZvciB0aGUgcmVzdCBvZiB0aGUgZnVuY3Rpb25zIHRvIHdvcmsuIGZvcgotICogZXhh
bXBsZSB0byBzZXQgdXAgYSBwb29sIG9mIHNlbWFwaG9yZXMuICovCisjaW5jbHVkZSAibHdpcC9v
cHQuaCIKKyNpbmNsdWRlICJsd2lwL3RjcGlwLmgiCisjaW5jbHVkZSAibHdpcC9pbml0LmgiCisj
aW5jbHVkZSAibHdpcC9kaGNwLmgiCisjaWYgQ09ORklHX0xXSVBfTk9USFJFQURTCisjaW5jbHVk
ZSAibHdpcC90aW1lb3V0cy5oIgorI2Vsc2UgLyogQ09ORklHX0xXSVBfTk9USFJFQURTICovCisj
aW5jbHVkZSA8dWsvc2VtYXBob3JlLmg+CisjZW5kaWYgLyogQ09ORklHX0xXSVBfTk9USFJFQURT
ICovCisKIHZvaWQgc3lzX2luaXQodm9pZCkKIHsKLSAgICByZXR1cm47CisJLyoKKwkgKiBUaGlz
IGZ1bmN0aW9uIGlzIGNhbGxlZCBiZWZvcmUgdGhlIGFueSBvdGhlciBzeXNfYXJjaC1mdW5jdGlv
biBpcworCSAqIGNhbGxlZCBhbmQgaXMgbWVhbnQgdG8gYmUgdXNlZCB0byBpbml0aWFsaXplIGFu
eXRoaW5nIHRoYXQgaGFzIHRvCisJICogYmUgdXAgYW5kIHJ1bm5pbmcgZm9yIHRoZSByZXN0IG9m
IHRoZSBmdW5jdGlvbnMgdG8gd29yay4gZm9yCisJICogZXhhbXBsZSB0byBzZXQgdXAgYSBwb29s
IG9mIHNlbWFwaG9yZXMuCisJICovCiB9CiAKKyNpZiAhQ09ORklHX0xXSVBfTk9USFJFQURTCitz
dGF0aWMgc3RydWN0IHVrX3NlbWFwaG9yZSBfbHdpcF9pbml0X3NlbTsKKworc3RhdGljIHZvaWQg
X2x3aXBfaW5pdF9kb25lKHZvaWQgKmFyZyBfX3VudXNlZCkKK3sKKwl1a19zZW1hcGhvcmVfdXAo
Jl9sd2lwX2luaXRfc2VtKTsKK30KKyNlbmRpZiAvKiAhQ09ORklHX0xXSVBfTk9USFJFQURTICov
CisKIC8qCiAgKiBUaGlzIGZ1bmN0aW9uIGluaXRpYWxpemluZyB0aGUgbHdpcCBuZXR3b3JrIHN0
YWNrCi0gKgogICovCiBpbnQgbGlibHdpcF9pbml0KHZvaWQpCiB7Ci0jaWYgQ09ORklHX0xJQlVL
U0NIRUQKLSAgICAgICAgdGNwaXBfaW5pdChOVUxMLCBOVUxMKTsKLSNlbHNlCi0gICAgICAgIGx3
aXBfaW5pdCgpOwotI2VuZGlmIC8qIENPTkZJR19MSUJVS1NDSEVEICovCisKKyNpZiAhQ09ORklH
X0xXSVBfTk9USFJFQURTCisJdWtfc2VtYXBob3JlX2luaXQoJl9sd2lwX2luaXRfc2VtLCAwKTsK
KyNlbmRpZiAvKiAhQ09ORklHX0xXSVBfTk9USFJFQURTICovCisKKyNpZiBDT05GSUdfTFdJUF9O
T1RIUkVBRFMKKwlsd2lwX2luaXQoKTsKKyNlbHNlIC8qIENPTkZJR19MV0lQX05PVEhSRUFEUyAq
LworCXRjcGlwX2luaXQoX2x3aXBfaW5pdF9kb25lLCBOVUxMKTsKKworCS8qIFdhaXQgdW50aWwg
c3RhY2sgaXMgYm9vdGVkICovCisJdWtfc2VtYXBob3JlX2Rvd24oJl9sd2lwX2luaXRfc2VtKTsK
KyNlbmRpZiAvKiBDT05GSUdfTFdJUF9OT1RIUkVBRFMgKi8KKwogCXJldHVybiAwOwogfQpkaWZm
IC0tZ2l0IGEvbWFpbGJveC5jIGIvbWFpbGJveC5jCmluZGV4IDhhNmNiMTMuLjZmYjVmZGEgMTAw
NjQ0Ci0tLSBhL21haWxib3guYworKysgYi9tYWlsYm94LmMKQEAgLTEsMyArMSwzNiBAQAorLyog
U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLworLyoKKyAqIENvcHlyaWdo
dCAoYykgMjAxOSwgTkVDIExhYm9yYXRvcmllcyBFdXJvcGUgR21iSCwgTkVDIENvcnBvcmF0aW9u
LgorICogICAgICAgICAgICAgICAgICAgICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiAgICB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMgIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAq
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBP
UiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqIFRI
SVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCisg
Ki8KKwogI2luY2x1ZGUgPHVrL21ib3guaD4KICNpbmNsdWRlIDx1ay9hcmNoL3RpbWUuaD4KICNp
bmNsdWRlIDxsd2lwL3N5cy5oPgpAQCAtNyw2NyArNDAsODAgQEAKIC8qIENyZWF0ZXMgYW4gZW1w
dHkgbWFpbGJveC4gKi8KIGVycl90IHN5c19tYm94X25ldyhzeXNfbWJveF90ICptYm94LCBpbnQg
c2l6ZSkKIHsKLSAgICBpZiAoc2l6ZSA8PSAwKQotICAgICAgICBzaXplID0gMzI7Ci0KLSAgICBV
S19BU1NFUlQobWJveCk7Ci0gICAgbWJveC0+YSA9IHVrX2FsbG9jX2dldF9kZWZhdWx0KCk7Ci0g
ICAgVUtfQVNTRVJUKG1ib3gtPmEpOwotICAgIG1ib3gtPm1ib3ggPSB1a19tYm94X2NyZWF0ZSht
Ym94LT5hLCBzaXplKTsKLSAgICBpZiAoIW1ib3gtPm1ib3gpCi0gICAgICAgIHJldHVybiBFUlJf
TUVNOwotICAgIG1ib3gtPnZhbGlkID0gMTsKLSAgICByZXR1cm4gRVJSX09LOworCWlmIChzaXpl
IDw9IDApCisJCXNpemUgPSAzMjsKKworCVVLX0FTU0VSVChtYm94KTsKKwltYm94LT5hID0gdWtf
YWxsb2NfZ2V0X2RlZmF1bHQoKTsKKwlVS19BU1NFUlQobWJveC0+YSk7CisJbWJveC0+bWJveCA9
IHVrX21ib3hfY3JlYXRlKG1ib3gtPmEsIHNpemUpOworCWlmICghbWJveC0+bWJveCkKKwkJcmV0
dXJuIEVSUl9NRU07CisJbWJveC0+dmFsaWQgPSAxOworCXJldHVybiBFUlJfT0s7CiB9CiAKIGlu
dCBzeXNfbWJveF92YWxpZChzeXNfbWJveF90ICptYm94KQogewotICAgIGlmICghbWJveCkKLSAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIChtYm94LT52YWxpZCA9PSAxKTsKKwlpZiAoIW1i
b3gpCisJCXJldHVybiAwOworCXJldHVybiAobWJveC0+dmFsaWQgPT0gMSk7CiB9CiAKIHZvaWQg
c3lzX21ib3hfc2V0X2ludmFsaWQoc3lzX21ib3hfdCAqbWJveCkKIHsKLSAgICBVS19BU1NFUlQo
bWJveCk7Ci0gICAgbWJveC0+dmFsaWQgPSAwOworCVVLX0FTU0VSVChtYm94KTsKKwltYm94LT52
YWxpZCA9IDA7CiB9CiAKLS8qIERlYWxsb2NhdGVzIGEgbWFpbGJveC4gSWYgdGhlcmUgYXJlIG1l
c3NhZ2VzIHN0aWxsIHByZXNlbnQgaW4gdGhlCisvKioKKyAqIERlYWxsb2NhdGVzIGEgbWFpbGJv
eC4gSWYgdGhlcmUgYXJlIG1lc3NhZ2VzIHN0aWxsIHByZXNlbnQgaW4gdGhlCiAgKiBtYWlsYm94
IHdoZW4gdGhlIG1haWxib3ggaXMgZGVhbGxvY2F0ZWQsIGl0IGlzIGFuIGluZGljYXRpb24gb2Yg
YQotICogcHJvZ3JhbW1pbmcgZXJyb3IgaW4gbHdJUCBhbmQgdGhlIGRldmVsb3BlciBzaG91bGQg
YmUgbm90aWZpZWQuICovCisgKiBwcm9ncmFtbWluZyBlcnJvciBpbiBsd0lQIGFuZCB0aGUgZGV2
ZWxvcGVyIHNob3VsZCBiZSBub3RpZmllZC4KKyAqLwogdm9pZCBzeXNfbWJveF9mcmVlKHN5c19t
Ym94X3QgKm1ib3gpCiB7Ci0gICAgVUtfQVNTRVJUKHN5c19tYm94X3ZhbGlkKG1ib3gpKTsKKwlV
S19BU1NFUlQoc3lzX21ib3hfdmFsaWQobWJveCkpOwogCi0gICAgdWtfbWJveF9mcmVlKG1ib3gt
PmEsIG1ib3gtPm1ib3gpOwotICAgIHN5c19tYm94X3NldF9pbnZhbGlkKG1ib3gpOworCXVrX21i
b3hfZnJlZShtYm94LT5hLCBtYm94LT5tYm94KTsKKwlzeXNfbWJveF9zZXRfaW52YWxpZChtYm94
KTsKIH0KIAotLyogUG9zdHMgdGhlICJtc2ciIHRvIHRoZSBtYWlsYm94LiAqLworLyogUG9zdHMg
Im1zZyIgdG8gdGhlIG1haWxib3gsIE5VTEwgbXNnJ3MgYXJlIG5vdCBzdXBwb3J0ZWQgKi8KIHZv
aWQgc3lzX21ib3hfcG9zdChzeXNfbWJveF90ICptYm94LCB2b2lkICptc2cpCiB7Ci0gICAgVUtf
QVNTRVJUKHN5c19tYm94X3ZhbGlkKG1ib3gpKTsKKwlVS19BU1NFUlQoc3lzX21ib3hfdmFsaWQo
bWJveCkpOwogCi0gICAgaWYgKCFtc2cpIHsgLyogRklYTUU/ICovCi0gICAgICAgIHVrX3ByaW50
ZChETFZMX1dBUk4sICJJZ25vcmUgcG9zdGluZyBOVUxMIG1lc3NhZ2UiKTsKLQlyZXR1cm47Ci0g
ICAgfQorCWlmICghbXNnKSB7CisJCXVrX3ByX2RlYnVnKCJJZ25vcmVkIHBvc3RpbmcgTlVMTCBt
ZXNzYWdlIik7CisJCXJldHVybjsKKwl9CiAKLSAgICB1a19tYm94X3Bvc3QobWJveC0+bWJveCwg
bXNnKTsKKwl1a19tYm94X3Bvc3QobWJveC0+bWJveCwgbXNnKTsKIH0KIAotLyogVHJ5IHRvIHBv
c3QgdGhlICJtc2ciIHRvIHRoZSBtYWlsYm94LiAqLworLyogVHJ5IHRvIHBvc3QgIm1zZyIgdG8g
dGhlIG1haWxib3guICovCiBlcnJfdCBzeXNfbWJveF90cnlwb3N0KHN5c19tYm94X3QgKm1ib3gs
IHZvaWQgKm1zZykKIHsKLSAgICBVS19BU1NFUlQoc3lzX21ib3hfdmFsaWQobWJveCkpOworCVVL
X0FTU0VSVChzeXNfbWJveF92YWxpZChtYm94KSk7CiAKLSAgICBpZiAodWtfbWJveF9wb3N0X3Ry
eShtYm94LT5tYm94LCBtc2cpIDwgMCkKLSAgICAgICAgcmV0dXJuIEVSUl9NRU07Ci0gICAgcmV0
dXJuIEVSUl9PSzsKKwlpZiAodWtfbWJveF9wb3N0X3RyeShtYm94LT5tYm94LCBtc2cpIDwgMCkK
KwkJcmV0dXJuIEVSUl9NRU07CisJcmV0dXJuIEVSUl9PSzsKIH0KIAotLyogQmxvY2tzIHRoZSB0
aHJlYWQgdW50aWwgYSBtZXNzYWdlIGFycml2ZXMgaW4gdGhlIG1haWxib3gsIGJ1dCBkb2VzCisv
KiBUcnkgdG8gcG9zdCB0aGUgIm1zZyIgdG8gdGhlIG1haWxib3ggZnJvbSBJU1IgY29udGV4dC4g
Ki8KK2Vycl90IHN5c19tYm94X3RyeXBvc3RfZnJvbWlzcihzeXNfbWJveF90ICptYm94LCB2b2lk
ICptc2cpCit7CisJVUtfQVNTRVJUKHN5c19tYm94X3ZhbGlkKG1ib3gpKTsKKworCWlmICh1a19t
Ym94X3Bvc3RfdHJ5KG1ib3gtPm1ib3gsIG1zZykgPCAwKQorCQlyZXR1cm4gRVJSX01FTTsKKwly
ZXR1cm4gRVJSX09LOworfQorCisvKioKKyAqIEJsb2NrcyB0aGUgdGhyZWFkIHVudGlsIGEgbWVz
c2FnZSBhcnJpdmVzIGluIHRoZSBtYWlsYm94LCBidXQgZG9lcwogICogbm90IGJsb2NrIHRoZSB0
aHJlYWQgbG9uZ2VyIHRoYW4gInRpbWVvdXQiIG1pbGxpc2Vjb25kcyAoc2ltaWxhciB0bwogICog
dGhlIHN5c19hcmNoX3NlbV93YWl0KCkgZnVuY3Rpb24pLiBUaGUgIm1zZyIgYXJndW1lbnQgaXMg
YSByZXN1bHQKICAqIHBhcmFtZXRlciB0aGF0IGlzIHNldCBieSB0aGUgZnVuY3Rpb24gKGkuZS4s
IGJ5IGRvaW5nICIqbXNnID0KQEAgLTc2LDIxICsxMjIsMjMgQEAgZXJyX3Qgc3lzX21ib3hfdHJ5
cG9zdChzeXNfbWJveF90ICptYm94LCB2b2lkICptc2cpCiAgKgogICogVGhlIHJldHVybiB2YWx1
ZXMgYXJlIHRoZSBzYW1lIGFzIGZvciB0aGUgc3lzX2FyY2hfc2VtX3dhaXQoKSBmdW5jdGlvbjoK
ICAqIE51bWJlciBvZiBtaWxsaXNlY29uZHMgc3BlbnQgd2FpdGluZyBvciBTWVNfQVJDSF9USU1F
T1VUIGlmIHRoZXJlIHdhcyBhCi0gKiB0aW1lb3V0LiAqLworICogdGltZW91dC4KKyAqLwogdTMy
X3Qgc3lzX2FyY2hfbWJveF9mZXRjaChzeXNfbWJveF90ICptYm94LCB2b2lkICoqbXNnLCB1MzJf
dCB0aW1lb3V0KQogewotICAgIF9fbnNlYyBuc3JldDsKKwlfX25zZWMgbnNyZXQ7CiAKLSAgICBV
S19BU1NFUlQoc3lzX21ib3hfdmFsaWQobWJveCkpOworCVVLX0FTU0VSVChzeXNfbWJveF92YWxp
ZChtYm94KSk7CiAKLSAgICBuc3JldCA9IHVrX21ib3hfcmVjdl90byhtYm94LT5tYm94LCBtc2cs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWthcmNoX3RpbWVfbXNlY190b19uc2Vj
KChfX25zZWMpIHRpbWVvdXQpKTsKLSAgICBpZiAodW5saWtlbHkobnNyZXQgPT0gX19OU0VDX01B
WCkpCi0gICAgICAgIHJldHVybiBTWVNfQVJDSF9USU1FT1VUOwotICAgIHJldHVybiAodTMyX3Qp
IHVrYXJjaF90aW1lX25zZWNfdG9fbXNlYyhuc3JldCk7CisJbnNyZXQgPSB1a19tYm94X3JlY3Zf
dG8obWJveC0+bWJveCwgbXNnLAorCQkJCXVrYXJjaF90aW1lX21zZWNfdG9fbnNlYygoX19uc2Vj
KSB0aW1lb3V0KSk7CisJaWYgKHVubGlrZWx5KG5zcmV0ID09IF9fTlNFQ19NQVgpKQorCQlyZXR1
cm4gU1lTX0FSQ0hfVElNRU9VVDsKKwlyZXR1cm4gKHUzMl90KSB1a2FyY2hfdGltZV9uc2VjX3Rv
X21zZWMobnNyZXQpOwogfQogCi0vKiBUaGlzIGlzIHNpbWlsYXIgdG8gc3lzX2FyY2hfbWJveF9m
ZXRjaCwgaG93ZXZlciBpZiBhIG1lc3NhZ2UgaXMgbm90CisvKioKKyAqIFRoaXMgaXMgc2ltaWxh
ciB0byBzeXNfYXJjaF9tYm94X2ZldGNoLCBob3dldmVyIGlmIGEgbWVzc2FnZSBpcyBub3QKICAq
IHByZXNlbnQgaW4gdGhlIG1haWxib3gsIGl0IGltbWVkaWF0ZWx5IHJldHVybnMgd2l0aCB0aGUg
Y29kZQogICogU1lTX01CT1hfRU1QVFkuIE9uIHN1Y2Nlc3MgMCBpcyByZXR1cm5lZC4KICAqCkBA
IC05OSwxNyArMTQ3LDE4IEBAIHUzMl90IHN5c19hcmNoX21ib3hfZmV0Y2goc3lzX21ib3hfdCAq
bWJveCwgdm9pZCAqKm1zZywgdTMyX3QgdGltZW91dCkKICAqIGV4YW1wbGUsIGEgbmFpdmUgaW1w
bGVtZW50YXRpb24gY291bGQgYmU6CiAgKiAgICNkZWZpbmUgc3lzX2FyY2hfbWJveF90cnlmZXRj
aChtYm94LG1zZykgXAogICogICAgIHN5c19hcmNoX21ib3hfZmV0Y2gobWJveCxtc2csMSkKLSAq
IGFsdGhvdWdoIHRoaXMgd291bGQgaW50cm9kdWNlIHVubmVjZXNzYXJ5IGRlbGF5cy4gKi8KLQot
dTMyX3Qgc3lzX2FyY2hfbWJveF90cnlmZXRjaChzeXNfbWJveF90ICptYm94LCB2b2lkICoqbXNn
KSB7Ci0gICAgdm9pZCAqcm1zZzsKKyAqIGFsdGhvdWdoIHRoaXMgd291bGQgaW50cm9kdWNlIHVu
bmVjZXNzYXJ5IGRlbGF5cy4KKyAqLwordTMyX3Qgc3lzX2FyY2hfbWJveF90cnlmZXRjaChzeXNf
bWJveF90ICptYm94LCB2b2lkICoqbXNnKQoreworCXZvaWQgKnJtc2c7CiAKLSAgICBVS19BU1NF
UlQoc3lzX21ib3hfdmFsaWQobWJveCkpOworCVVLX0FTU0VSVChzeXNfbWJveF92YWxpZChtYm94
KSk7CiAKLSAgICBpZiAodWtfbWJveF9yZWN2X3RyeShtYm94LT5tYm94LCAmcm1zZykgPCAwKQot
CXJldHVybiBTWVNfTUJPWF9FTVBUWTsKKwlpZiAodWtfbWJveF9yZWN2X3RyeShtYm94LT5tYm94
LCAmcm1zZykgPCAwKQorCQlyZXR1cm4gU1lTX01CT1hfRU1QVFk7CiAKLSAgICBpZiAobXNnKQot
ICAgICAgICAqbXNnID0gcm1zZzsKLSAgICByZXR1cm4gMDsKKwlpZiAobXNnKQorCQkqbXNnID0g
cm1zZzsKKwlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL211dGV4LmMgYi9tdXRleC5jCmluZGV4
IGFhYTEwODUuLjJmOGQ0YzUgMTAwNjQ0Ci0tLSBhL211dGV4LmMKKysrIGIvbXV0ZXguYwpAQCAt
MSwxMSArMSw0NiBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAq
LworLyoKKyAqIENvcHlyaWdodCAoYykgMjAxOSwgTkVDIExhYm9yYXRvcmllcyBFdXJvcGUgR21i
SCwgTkVDIENvcnBvcmF0aW9uLgorICogICAgICAgICAgICAgICAgICAgICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHly
aWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiAg
ICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICoKKyAqIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElG
SUVEIElOIEFOWSBXQVkuCisgKi8KKwogI2luY2x1ZGUgPHVrL211dGV4Lmg+CiAjaW5jbHVkZSA8
dWsvYXJjaC90aW1lLmg+CiAjaW5jbHVkZSA8bHdpcC9zeXMuaD4KIAogI2luY2x1ZGUgPHVrL2Vz
c2VudGlhbHMuaD4KIAotLyogSW5pdGlhbGl6ZXMgYSBuZXcgc2VtYXBob3JlLiBUaGUgImNvdW50
IiBhcmd1bWVudCBzcGVjaWZpZXMKLSAqIHRoZSBpbml0aWFsIHN0YXRlIG9mIHRoZSBzZW1hcGhv
cmUuICovCisvKioKKyAqIEluaXRpYWxpemVzIGEgbmV3IHNlbWFwaG9yZS4gVGhlICJjb3VudCIg
YXJndW1lbnQgc3BlY2lmaWVzCisgKiB0aGUgaW5pdGlhbCBzdGF0ZSBvZiB0aGUgc2VtYXBob3Jl
LgorICovCiBlcnJfdCBzeXNfbXV0ZXhfbmV3KHN5c19tdXRleF90ICptdHgpCiB7CiAJdWtfbXV0
ZXhfaW5pdCgmbXR4LT5tdHgpOwpAQCAtMzEsMTAgKzY2LDEwIEBAIHZvaWQgc3lzX211dGV4X2Zy
ZWUoc3lzX211dGV4X3QgKm10eCkKIC8qIFNpZ25hbHMgYSBtdHhhcGhvcmUuICovCiB2b2lkIHN5
c19tdXRleF9sb2NrKHN5c19tdXRleF90ICptdHgpCiB7Ci0JdWtfbXV0ZXhfaG9sZCgmbXR4LT5t
dHgpOworCXVrX211dGV4X2xvY2soJm10eC0+bXR4KTsKIH0KIAogdm9pZCBzeXNfbXV0ZXhfdW5s
b2NrKHN5c19tdXRleF90ICptdHgpCiB7Ci0JdWtfbXV0ZXhfcmVsZWFzZSgmbXR4LT5tdHgpOwor
CXVrX211dGV4X3VubG9jaygmbXR4LT5tdHgpOwogfQpkaWZmIC0tZ2l0IGEvc2VtYXBob3JlLmMg
Yi9zZW1hcGhvcmUuYwppbmRleCA4YjFiMTVmLi4xNmRhMzE2IDEwMDY0NAotLS0gYS9zZW1hcGhv
cmUuYworKysgYi9zZW1hcGhvcmUuYwpAQCAtMSwxMSArMSw0NiBAQAorLyogU1BEWC1MaWNlbnNl
LUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLworLyoKKyAqIENvcHlyaWdodCAoYykgMjAxOSwg
TkVDIExhYm9yYXRvcmllcyBFdXJvcGUgR21iSCwgTkVDIENvcnBvcmF0aW9uLgorICogICAgICAg
ICAgICAgICAgICAgICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5l
aXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiAgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRP
UlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqIFRISVMgSEVBREVSIE1B
WSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCisgKi8KKwogI2luY2x1
ZGUgPHVrL3NlbWFwaG9yZS5oPgogI2luY2x1ZGUgPHVrL2FyY2gvdGltZS5oPgogI2luY2x1ZGUg
PGx3aXAvc3lzLmg+CiAKICNpbmNsdWRlIDx1ay9lc3NlbnRpYWxzLmg+CiAKLS8qIEluaXRpYWxp
emVzIGEgbmV3IHNlbWFwaG9yZS4gVGhlICJjb3VudCIgYXJndW1lbnQgc3BlY2lmaWVzCi0gKiB0
aGUgaW5pdGlhbCBzdGF0ZSBvZiB0aGUgc2VtYXBob3JlLiAqLworLyoqCisgKiBJbml0aWFsaXpl
cyBhIG5ldyBzZW1hcGhvcmUuIFRoZSAiY291bnQiIGFyZ3VtZW50IHNwZWNpZmllcworICogdGhl
IGluaXRpYWwgc3RhdGUgb2YgdGhlIHNlbWFwaG9yZS4KKyAqLwogZXJyX3Qgc3lzX3NlbV9uZXco
c3lzX3NlbV90ICpzZW0sIHU4X3QgY291bnQpCiB7CiAJdWtfc2VtYXBob3JlX2luaXQoJnNlbS0+
c2VtLCAobG9uZykgY291bnQpOwpAQCAtMzQsNyArNjksOCBAQCB2b2lkIHN5c19zZW1fc2lnbmFs
KHN5c19zZW1fdCAqc2VtKQogCXVrX3NlbWFwaG9yZV91cCgmc2VtLT5zZW0pOwogfQogCi0vKiBC
bG9ja3MgdGhlIHRocmVhZCB3aGlsZSB3YWl0aW5nIGZvciB0aGUgc2VtYXBob3JlIHRvIGJlCisv
KioKKyAqIEJsb2NrcyB0aGUgdGhyZWFkIHdoaWxlIHdhaXRpbmcgZm9yIHRoZSBzZW1hcGhvcmUg
dG8gYmUKICAqIHNpZ25hbGVkLiBJZiB0aGUgInRpbWVvdXQiIGFyZ3VtZW50IGlzIG5vbi16ZXJv
LCB0aGUgdGhyZWFkIHNob3VsZAogICogb25seSBiZSBibG9ja2VkIGZvciB0aGUgc3BlY2lmaWVk
IHRpbWUgKG1lYXN1cmVkIGluCiAgKiBtaWxsaXNlY29uZHMpLgpAQCAtNDMsMTQgKzc5LDE2IEBA
IHZvaWQgc3lzX3NlbV9zaWduYWwoc3lzX3NlbV90ICpzZW0pCiAgKiBtaWxsaXNlY29uZHMgc3Bl
bnQgd2FpdGluZyBmb3IgdGhlIHNlbWFwaG9yZSB0byBiZSBzaWduYWxlZC4gSWYgdGhlCiAgKiBz
ZW1hcGhvcmUgd2Fzbid0IHNpZ25hbGVkIHdpdGhpbiB0aGUgc3BlY2lmaWVkIHRpbWUsIHRoZSBy
ZXR1cm4gdmFsdWUgaXMKICAqIFNZU19BUkNIX1RJTUVPVVQuIElmIHRoZSB0aHJlYWQgZGlkbid0
IGhhdmUgdG8gd2FpdCBmb3IgdGhlIHNlbWFwaG9yZQotICogKGkuZS4sIGl0IHdhcyBhbHJlYWR5
IHNpZ25hbGVkKSwgdGhlIGZ1bmN0aW9uIG1heSByZXR1cm4gemVyby4gKi8KKyAqIChpLmUuLCBp
dCB3YXMgYWxyZWFkeSBzaWduYWxlZCksIHRoZSBmdW5jdGlvbiBtYXkgcmV0dXJuIHplcm8uCisg
Ki8KIHUzMl90IHN5c19hcmNoX3NlbV93YWl0KHN5c19zZW1fdCAqc2VtLCB1MzJfdCB0aW1lb3V0
KQogewotICAgIF9fbnNlYyBuc3JldDsKKwlfX25zZWMgbnNyZXQ7CiAKLSAgICBuc3JldCA9IHVr
X3NlbWFwaG9yZV9kb3duX3RvKCZzZW0tPnNlbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVrYXJjaF90aW1lX21zZWNfdG9fbnNlYygoX19uc2VjKSB0aW1lb3V0KSk7Ci0g
ICAgaWYgKHVubGlrZWx5KG5zcmV0ID09IF9fTlNFQ19NQVgpKQotICAgICAgICByZXR1cm4gU1lT
X0FSQ0hfVElNRU9VVDsKLSAgICByZXR1cm4gKHUzMl90KSB1a2FyY2hfdGltZV9uc2VjX3RvX21z
ZWMobnNyZXQpOworCW5zcmV0ID0gdWtfc2VtYXBob3JlX2Rvd25fdG8oJnNlbS0+c2VtLAorCQkJ
CSAgICAgdWthcmNoX3RpbWVfbXNlY190b19uc2VjKChfX25zZWMpCisJCQkJCQkJICAgICAgdGlt
ZW91dCkpOworCWlmICh1bmxpa2VseShuc3JldCA9PSBfX05TRUNfTUFYKSkKKwkJcmV0dXJuIFNZ
U19BUkNIX1RJTUVPVVQ7CisJcmV0dXJuICh1MzJfdCkgdWthcmNoX3RpbWVfbnNlY190b19tc2Vj
KG5zcmV0KTsKIH0KZGlmZiAtLWdpdCBhL3NvY2tldF9nbHVlLmMgYi9zb2NrZXRzLmMKc2ltaWxh
cml0eSBpbmRleCA2MCUKcmVuYW1lIGZyb20gc29ja2V0X2dsdWUuYwpyZW5hbWUgdG8gc29ja2V0
cy5jCmluZGV4IGU3ZGMzM2MuLmJkZjIxYWQgMTAwNjQ0Ci0tLSBhL3NvY2tldF9nbHVlLmMKKysr
IGIvc29ja2V0cy5jCkBAIC0xLDIwICsxLDUwIEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmll
cjogQlNELTMtQ2xhdXNlICovCisvKgorICogQXV0aG9yczogU2hhcmFuIFNhbnRoYW5hbSA8c2hh
cmFuLnNhbnRoYW5hbUBuZWNsYWIuZXU+CisgKgorICogQ29weXJpZ2h0IChjKSAyMDE5LCBORUMg
TGFib3JhdG9yaWVzIEV1cm9wZSBHbWJILCBORUMgQ29ycG9yYXRpb24uCisgKiAgICAgICAgICAg
ICAgICAgICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhl
ciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqICAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBC
RQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQor
ICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICogVEhJUyBIRUFERVIgTUFZIE5P
VCBCRSBFWFRSQUNURUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4KKyAqLworCiAvKiBuZXR3b3Jr
IHN0dWIgY2FsbHMgKi8KICNpbmNsdWRlIDxzeXMvdGltZS5oPgogI2luY2x1ZGUgPHZmc2NvcmUv
ZmlsZS5oPgogI2luY2x1ZGUgPHVrL2FsbG9jLmg+CiAjaW5jbHVkZSA8dWsvZXNzZW50aWFscy5o
PgotI2luY2x1ZGUgPHVrL3ByaW50Lmg+CiAjaW5jbHVkZSA8dWsvZXJycHRyLmg+CiAjaW5jbHVk
ZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxlcnJuby5oPgogI2luY2x1ZGUgPGx3aXAvc29ja2V0cy5o
PgogCi0jZGVmaW5lICBORVRfTElCX05BTUUgICAgICAgICAgImx3aXAtc29ja2V0IgotI2RlZmlu
ZSAgU09DS19ORVRfU0VUX0VSUk5PKGVycmNvZGUpIFwKLQkJCWRvIHtcCi0JCQkJZXJybm8gPSAt
KGVycmNvZGUpO1wKLQkJCX0gd2hpbGUoMCkKLQorI2RlZmluZSBTT0NLX05FVF9TRVRfRVJSTk8o
ZXJyY29kZSkgXAorCShlcnJubyA9IC0oZXJyY29kZSkpCiAKIHN0cnVjdCBzb2NrX25ldF9maWxl
IHsKIAlzdHJ1Y3QgdmZzY29yZV9maWxlIHZmc2NvcmVfZmlsZTsKQEAgLTI1LDkgKzU1LDExIEBA
IHN0YXRpYyBpbmxpbmUgc3RydWN0IHNvY2tfbmV0X2ZpbGUgKnNvY2tfbmV0X2ZpbGVfZ2V0KGlu
dCBmZCkKIHsKIAlzdHJ1Y3Qgc29ja19uZXRfZmlsZSAqZmlsZSA9IE5VTEw7CiAJc3RydWN0IHZm
c2NvcmVfZmlsZSAqZm9zOworCiAJZm9zICA9IHZmc2NvcmVfZ2V0X2ZpbGUoZmQpOwotCWlmKE5V
TEwgPT0gZm9zKSB7Ci0JCXVrX3ByaW50ZChETFZMX0VSUiwiZmFpbGVkIHdpdGggaW52YWxpZCBk
ZXNjcmlwdG9yXG4iKTsKKwlpZiAoIWZvcykgeworCQlMV0lQX0RFQlVHRihTT0NLRVRTX0RFQlVH
LAorCQkJICAgICgiZmFpbGVkIHdpdGggaW52YWxpZCBkZXNjcmlwdG9yXG4iKSk7CiAJCWZpbGUg
PSBFUlIyUFRSKC1FSU5WQUwpOwogCQlnb3RvIEVYSVQ7CiAJfQpAQCAtNDYsMjAgKzc4LDIyIEBA
IHN0YXRpYyBpbnQgc29ja19mZF9hbGxvYyhzdHJ1Y3QgdmZzY29yZV9mb3BzICpmb3BzLCBpbnQg
c29ja19mZCkKIAl2ZnNfZmQgPSB2ZnNjb3JlX2FsbG9jX2ZkKCk7CiAJaWYgKHZmc19mZCA8IDAp
IHsKIAkJcmV0ID0gLUVORklMRTsKLQkJdWtfcHJpbnRkKERMVkxfRVJSLCAiZmFpbGVkIHRvIGFs
bG9jYXRlIHNvY2tldCBmZFxuIik7CisJCUxXSVBfREVCVUdGKFNPQ0tFVFNfREVCVUcsICgiZmFp
bGVkIHRvIGFsbG9jYXRlIHNvY2tldCBmZFxuIikpOwogCQlnb3RvIEVYSVQ7CiAJfQogCiAJZmls
ZSA9IHVrX21hbGxvYyh1a19hbGxvY19nZXRfZGVmYXVsdCgpLCBzaXplb2YoKmZpbGUpKTsKIAlp
ZiAoIWZpbGUpIHsKIAkJcmV0ID0gLUVOT01FTTsKLQkJdWtfcHJpbnRkKERMVkxfRVJSLCAiZmFp
bGVkIHRvIGFsbG9jYXRlIHNvY2tldCBmZCAtIG5vIG1lbVxuIik7CisJCUxXSVBfREVCVUdGKFNP
Q0tFVFNfREVCVUcsCisJCQkgICAgKCJmYWlsZWQgdG8gYWxsb2NhdGUgc29ja2V0IGZkOiBubyBt
ZW1cbiIpKTsKIAkJZ290byBVS19NRU1fQUxMT0NfRVJSOwogCX0KIAlmaWxlLT52ZnNjb3JlX2Zp
bGUuZm9wcyA9IGZvcHM7CiAJZmlsZS0+c29ja19mZCA9IHNvY2tfZmQ7Ci0JdWtfcHJpbnRkKERM
VkxfRVhUUkEsIE5FVF9MSUJfTkFNRSI6YWxsb2NhdGVkIHNvY2tldCAlZCAoJXgpXG4iLAotCQkJ
ZmlsZS0+dmZzY29yZV9maWxlLmZkLCBmaWxlLT5zb2NrX2ZkKTsKKwlMV0lQX0RFQlVHRihTT0NL
RVRTX0RFQlVHLCAoImFsbG9jYXRlZCBzb2NrZXQgJWQgKCV4KVxuIiwKKwkJCQkgICAgZmlsZS0+
dmZzY29yZV9maWxlLmZkLAorCQkJCSAgICBmaWxlLT5zb2NrX2ZkKSk7CiAJLyogU3RvcmluZyB0
aGUgaW5mb3JtYXRpb24gd2l0aGluIHRoZSB2ZnMgc3RydWN0dXJlICovCiAJdmZzY29yZV9pbnN0
YWxsX2ZkKHZmc19mZCwgJmZpbGUtPnZmc2NvcmVfZmlsZSk7CiAJcmV0ID0gdmZzX2ZkOwpAQCAt
NzMsMTIgKzEwNywxNCBAQCBVS19NRU1fQUxMT0NfRVJSOgogCiBzdGF0aWMgaW50IHNvY2tfbmV0
X2Nsb3NlKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKnZmc2NvcmVfZmlsZSkKIHsKLQlpbnQgICAgcmV0
ID0gMDsKKwlpbnQgcmV0ID0gMDsKIAlzdHJ1Y3Qgc29ja19uZXRfZmlsZSAqZmlsZSA9IE5VTEw7
CisKIAlmaWxlID0gX19jb250YWluZXJvZih2ZnNjb3JlX2ZpbGUsIHN0cnVjdCBzb2NrX25ldF9m
aWxlLCB2ZnNjb3JlX2ZpbGUpOwogCi0JdWtfcHJpbnRkKERMVkxfRVhUUkEsIE5FVF9MSUJfTkFN
RSI6IGNsb3NlKCkgJWQgKCV4KVxuIiwKLQkJCWZpbGUtPnZmc2NvcmVfZmlsZS5mZCwgZmlsZS0+
c29ja19mZCk7CisJTFdJUF9ERUJVR0YoU09DS0VUU19ERUJVRywgKCJjbG9zZSAlZCAoJXgpXG4i
LAorCQkJCSAgICBmaWxlLT52ZnNjb3JlX2ZpbGUuZmQsCisJCQkJICAgIGZpbGUtPnNvY2tfZmQp
KTsKIAogCS8qIENsb3NlIGFuZCByZWxlYXNlIHRoZSBsd2lwIHNvY2tldCAqLwogCXJldCA9IGx3
aXBfY2xvc2UoZmlsZS0+c29ja19mZCk7CkBAIC04OSwxNSArMTI1LDE4IEBAIHN0YXRpYyBpbnQg
c29ja19uZXRfY2xvc2Uoc3RydWN0IHZmc2NvcmVfZmlsZSAqdmZzY29yZV9maWxlKQogCXJldHVy
biByZXQ7CiB9CiAKLXN0YXRpYyBzc2l6ZV90IHNvY2tfbmV0X3dyaXRlKHN0cnVjdCB2ZnNjb3Jl
X2ZpbGUgKnZmc2NvcmVfZmlsZSwgY29uc3Qgdm9pZCAqYnVmLAotCQkJICAgICBzaXplX3QgY291
bnQpCitzdGF0aWMgc3NpemVfdCBzb2NrX25ldF93cml0ZShzdHJ1Y3QgdmZzY29yZV9maWxlICp2
ZnNjb3JlX2ZpbGUsCisJCQkgICAgICBjb25zdCB2b2lkICpidWYsIHNpemVfdCBjb3VudCkKIHsK
IAlpbnQgcmV0ID0gMDsKIAlzdHJ1Y3Qgc29ja19uZXRfZmlsZSAqZmlsZSA9IE5VTEw7CisKIAlm
aWxlID0gX19jb250YWluZXJvZih2ZnNjb3JlX2ZpbGUsIHN0cnVjdCBzb2NrX25ldF9maWxlLAot
CQkJCXZmc2NvcmVfZmlsZSk7Ci0JdWtfcHJpbnRkKERMVkxfRVhUUkEsIE5FVF9MSUJfTkFNRSI6
IHdyaXRlICVkICgleCk6JXNcbiIsCi0JCQlmaWxlLT52ZnNjb3JlX2ZpbGUuZmQsIGZpbGUtPnNv
Y2tfZmQsIChjaGFyICopIGJ1Zik7CisJCQkgICAgIHZmc2NvcmVfZmlsZSk7CisJTFdJUF9ERUJV
R0YoU09DS0VUU19ERUJVRywgKCJ3cml0ZSAlZCAoJXgpOiVzXG4iLAorCQkJCSAgICBmaWxlLT52
ZnNjb3JlX2ZpbGUuZmQsCisJCQkJICAgIGZpbGUtPnNvY2tfZmQsCisJCQkJICAgIChjaGFyICop
IGJ1ZikpOwogCXJldCA9IGx3aXBfd3JpdGUoZmlsZS0+c29ja19mZCwgYnVmLCBjb3VudCk7CiAJ
cmV0dXJuIHJldDsKIH0KQEAgLTEwNywxMCArMTQ2LDEzIEBAIHN0YXRpYyBzc2l6ZV90IHNvY2tf
bmV0X3JlYWQoc3RydWN0IHZmc2NvcmVfZmlsZSAqdmZzY29yZV9maWxlLCB2b2lkICpidWYsCiB7
CiAJaW50IHJldCA9IDA7CiAJc3RydWN0IHNvY2tfbmV0X2ZpbGUgKmZpbGUgPSBOVUxMOworCiAJ
ZmlsZSA9IF9fY29udGFpbmVyb2YodmZzY29yZV9maWxlLCBzdHJ1Y3Qgc29ja19uZXRfZmlsZSwK
LQkJCQl2ZnNjb3JlX2ZpbGUpOwotCXVrX3ByaW50ZChETFZMX0VYVFJBLCBORVRfTElCX05BTUUi
OiB3cml0ZSAlZCAoJXgpOiVzXG4iLAotCQkJZmlsZS0+dmZzY29yZV9maWxlLmZkLCBmaWxlLT5z
b2NrX2ZkLCAoY2hhciAqKSBidWYpOworCQkJICAgICB2ZnNjb3JlX2ZpbGUpOworCUxXSVBfREVC
VUdGKFNPQ0tFVFNfREVCVUcsICgid3JpdGUgJWQgKCV4KTolc1xuIiwKKwkJCQkgICAgZmlsZS0+
dmZzY29yZV9maWxlLmZkLAorCQkJCSAgICBmaWxlLT5zb2NrX2ZkLAorCQkJCSAgICAoY2hhciAq
KSBidWYpKTsKIAlyZXQgPSBsd2lwX3JlYWQoZmlsZS0+c29ja19mZCwgYnVmLCBjb3VudCk7CiAJ
cmV0dXJuIHJldDsKIH0KQEAgLTEyOSwxNiArMTcxLDE5IEBAIGludCBzb2NrZXQoaW50IGRvbWFp
biwgaW50IHR5cGUsIGludCBwcm90b2NvbCkKIAogCS8qIENyZWF0ZSBsd2lwX3NvY2tldCAqLwog
CXNvY2tfZmQgPSBsd2lwX3NvY2tldChkb21haW4sIHR5cGUsIHByb3RvY29sKTsKLQlpZigwID4g
c29ja19mZCkgewotCQl1a19wcmludGQoRExWTF9FUlIsICJmYWlsZWQgdG8gY3JlYXRlIHNvY2tl
dCAlZFxuIiwgZXJybm8pOworCWlmIChzb2NrX2ZkIDwgMCkgeworCQlMV0lQX0RFQlVHRihTT0NL
RVRTX0RFQlVHLCAoImZhaWxlZCB0byBjcmVhdGUgc29ja2V0ICVkXG4iLAorCQkJCQkgICAgZXJy
bm8pKTsKIAkJcmV0ID0gLTE7CiAJCWdvdG8gRVhJVDsKIAl9CiAKIAkvKiBBbGxvY2F0ZSB0aGUg
ZmlsZSBkZXNjcmlwdG9yICovCiAJdmZzX2ZkID0gc29ja19mZF9hbGxvYygmc29ja19uZXRfZm9w
cywgc29ja19mZCk7Ci0JaWYoMCA+IHZmc19mZCkgewotCQl1a19wcmludGQoRExWTF9FUlIsICJm
YWlsZWQgdG8gYWxsb2NhdGUgZGVzY3JpcHRvciAlZFxuIiwgZXJybm8pOworCWlmICh2ZnNfZmQg
PCAwKSB7CisJCUxXSVBfREVCVUdGKFNPQ0tFVFNfREVCVUcsCisJCQkgICAgKCJmYWlsZWQgdG8g
YWxsb2NhdGUgZGVzY3JpcHRvciAlZFxuIiwKKwkJCSAgICAgZXJybm8pKTsKIAkJcmV0ID0gLTE7
CiAJCS8qIFNldHRpbmcgdGhlIGVycm5vICovCiAJCVNPQ0tfTkVUX1NFVF9FUlJOTyh2ZnNfZmQp
OwpAQCAtMTYwLDI4ICsyMDUsMzEgQEAgaW50IGFjY2VwdChpbnQgcywgc3RydWN0IHNvY2thZGRy
ICphZGRyLCBzb2NrbGVuX3QgKmFkZHJsZW4pCiAJaW50IHJldCA9IDA7CiAJc3RydWN0IHNvY2tf
bmV0X2ZpbGUgKmZpbGU7CiAJaW50IHNvY2tfZmQsIHZmc19mZDsKKwogCWZpbGUgPSBzb2NrX25l
dF9maWxlX2dldChzKTsKLQlpZihQVFJJU0VSUihmaWxlKSkgewotCQl1a19wcmludGQoRExWTF9F
UlIsICJmYWlsZWQgdG8gYWNjZXB0IGluY29taW5naSBjb25uZWN0aW9uIFxuIik7CisJaWYgKFBU
UklTRVJSKGZpbGUpKSB7CisJCUxXSVBfREVCVUdGKFNPQ0tFVFNfREVCVUcsCisJCQkgICAgKCJm
YWlsZWQgdG8gYWNjZXB0IGluY29taW5naSBjb25uZWN0aW9uXG4iKSk7CiAJCXJldCA9IC0xOwog
CQkvKiBTZXR0aW5nIHRoZSBlcnJubyAqLwogCQlTT0NLX05FVF9TRVRfRVJSTk8oUFRSMkVSUihm
aWxlKSk7Ci0JICAgICAgICBnb3RvIEVYSVQ7CisJCWdvdG8gRVhJVDsKIAl9CiAKIAkvKiBBY2Nl
cHQgYW4gaW5jb21pbmcgY29ubmVjdGlvbiAqLwogCXNvY2tfZmQgPSBsd2lwX2FjY2VwdChmaWxl
LT5zb2NrX2ZkLCBhZGRyLCBhZGRybGVuKTsKLQlpZigwID4gc29ja19mZCkgewotCQl1a19wcmlu
dGQoRExWTF9FUlIsICJmYWlsZWQgdG8gYWNjZXB0IGluY29taW5nIGNvbm5lY3Rpb24gXG4iKTsK
KwlpZiAoc29ja19mZCA8IDApIHsKKwkJTFdJUF9ERUJVR0YoU09DS0VUU19ERUJVRywKKwkJCSAg
ICAoImZhaWxlZCB0byBhY2NlcHQgaW5jb21pbmcgY29ubmVjdGlvblxuIikpOwogCQlyZXQgPSAt
MTsKIAkJZ290byBFWElUOwogCX0KIAogCS8qIEFsbG9jYXRlIHRoZSBmaWxlIGRlc2NyaXB0b3Ig
Zm9yIHRoZSBhY2NlcHRlZCBjb25uZWN0aW9uICovCiAJdmZzX2ZkID0gc29ja19mZF9hbGxvYygm
c29ja19uZXRfZm9wcywgc29ja19mZCk7Ci0JaWYoMCA+IHZmc19mZCkgewotCQl1a19wcmludGQo
RExWTF9FUlIsICJmYWlsZWQgdG8gYWxsb2NhdGUJZGVzY3JpcHRvciBmb3IgdGhlIgotCQkJImFj
Y2VwdGVkIGNvbm5lY3Rpb24gXG4iKTsKKwlpZiAodmZzX2ZkIDwgMCkgeworCQlMV0lQX0RFQlVH
RihTT0NLRVRTX0RFQlVHLAorCQkJICAgICgiZmFpbGVkIHRvIGFsbG9jYXRlIGRlc2NyaXB0b3Ig
Zm9yIGFjY2VwdGVkIGNvbm5lY3Rpb25cbiIpKTsKIAkJcmV0ID0gLTE7CiAJCS8qIFNldHRpbmcg
dGhlIGVycm5vICovCiAJCVNPQ0tfTkVUX1NFVF9FUlJOTyh2ZnNfZmQpOwpAQCAtMjAwLDkgKzI0
OCwxMSBAQCBpbnQgYmluZChpbnQgcywgY29uc3Qgc3RydWN0IHNvY2thZGRyICpuYW1lLCBzb2Nr
bGVuX3QgbmFtZWxlbikKIHsKIAlpbnQgcmV0ID0gMDsKIAlzdHJ1Y3Qgc29ja19uZXRfZmlsZSAq
ZmlsZSA9IE5VTEw7CisKIAlmaWxlID0gc29ja19uZXRfZmlsZV9nZXQocyk7Ci0JaWYoUFRSSVNF
UlIoZmlsZSkpIHsKLQkJdWtfcHJpbnRkKERMVkxfRVJSLCAiZmFpbGVkIHRvIGlkZW50aWZ5IHRo
ZSBzb2NrZXQgZGVzY3JpcHRvciBcbiIpOworCWlmIChQVFJJU0VSUihmaWxlKSkgeworCQlMV0lQ
X0RFQlVHRihTT0NLRVRTX0RFQlVHLAorCQkJICAgICgiZmFpbGVkIHRvIGlkZW50aWZ5IHNvY2tl
dCBkZXNjcmlwdG9yXG4iKSk7CiAJCXJldCA9IC0xOwogCQkvKiBTZXR0aW5nIHRoZSBlcnJubyAq
LwogCQlTT0NLX05FVF9TRVRfRVJSTk8oUFRSMkVSUihmaWxlKSk7CkBAIC0yMTAsOCArMjYwLDkg
QEAgaW50IGJpbmQoaW50IHMsIGNvbnN0IHN0cnVjdCBzb2NrYWRkciAqbmFtZSwgc29ja2xlbl90
IG5hbWVsZW4pCiAJfQogCS8qIEJpbmQgYW4gaW5jb21pbmcgY29ubmVjdGlvbiAqLwogCXJldCA9
IGx3aXBfYmluZChmaWxlLT5zb2NrX2ZkLCBuYW1lLCBuYW1lbGVuKTsKLQlpZigwID4gcmV0KSB7
Ci0JCXVrX3ByaW50ZChETFZMX0VSUiwgImZhaWxlZCB0byBiaW5kIHdpdGggdGhlIHNvY2tldCBc
biIpOworCWlmIChyZXQgPCAwKSB7CisJCUxXSVBfREVCVUdGKFNPQ0tFVFNfREVCVUcsCisJCQkg
ICAgKCJmYWlsZWQgdG8gYmluZCB3aXRoIHNvY2tldFxuIikpOwogCQlyZXQgPSAtMTsKIAkJZ290
byBFWElUOwogCX0KQEAgLTIyMyw5ICsyNzQsMTEgQEAgaW50IHNodXRkb3duKGludCBzLCBpbnQg
aG93KQogewogCWludCByZXQgPSAwOwogCXN0cnVjdCBzb2NrX25ldF9maWxlICpmaWxlID0gTlVM
TDsKKwogCWZpbGUgPSBzb2NrX25ldF9maWxlX2dldChzKTsKLQlpZihQVFJJU0VSUihmaWxlKSkg
ewotCQl1a19wcmludGQoRExWTF9FUlIsICJmYWlsZWQgdG8gaWRlbnRpZnkgdGhlIHNvY2tldCBk
ZXNjcmlwdG9yIFxuIik7CisJaWYgKFBUUklTRVJSKGZpbGUpKSB7CisJCUxXSVBfREVCVUdGKFNP
Q0tFVFNfREVCVUcsCisJCQkgICAgKCJmYWlsZWQgdG8gaWRlbnRpZnkgc29ja2V0IGRlc2NyaXB0
b3JcbiIpKTsKIAkJcmV0ID0gLTE7CiAJCS8qIFNldHRpbmcgdGhlIGVycm5vICovCiAJCVNPQ0tf
TkVUX1NFVF9FUlJOTyhQVFIyRVJSKGZpbGUpKTsKQEAgLTI0MSw5ICsyOTQsMTAgQEAgaW50IGdl
dHBlZXJuYW1lKGludCBzLCBzdHJ1Y3Qgc29ja2FkZHIgKm5hbWUsIHNvY2tsZW5fdCAqbmFtZWxl
bikKIHsKIAlpbnQgcmV0ID0gMDsKIAlzdHJ1Y3Qgc29ja19uZXRfZmlsZSAqZmlsZSA9IE5VTEw7
CisKIAlmaWxlID0gc29ja19uZXRfZmlsZV9nZXQocyk7Ci0JaWYoUFRSSVNFUlIoZmlsZSkpIHsK
LQkJdWtfcHJpbnRkKERMVkxfRVJSLCAiZmFpbGVkIHRvIGlkZW50aWZ5IHRoZSBzb2NrZXRcbiIp
OworCWlmIChQVFJJU0VSUihmaWxlKSkgeworCQlMV0lQX0RFQlVHRihTT0NLRVRTX0RFQlVHLCAo
ImZhaWxlZCB0byBpZGVudGlmeSBzb2NrZXRcbiIpKTsKIAkJcmV0ID0gLTE7CiAJCVNPQ0tfTkVU
X1NFVF9FUlJOTyhQVFIyRVJSKGZpbGUpKTsKIAkJZ290byBFWElUOwpAQCAtMjU3LDkgKzMxMSwx
MCBAQCBpbnQgZ2V0c29ja25hbWUoaW50IHMsIHN0cnVjdCBzb2NrYWRkciAqbmFtZSwgc29ja2xl
bl90ICpuYW1lbGVuKQogewogCWludCByZXQgPSAwOwogCXN0cnVjdCBzb2NrX25ldF9maWxlICpm
aWxlID0gTlVMTDsKKwogCWZpbGUgPSBzb2NrX25ldF9maWxlX2dldChzKTsKLQlpZihQVFJJU0VS
UihmaWxlKSkgewotCQl1a19wcmludGQoRExWTF9FUlIsICJmYWlsZWQgdG8gaWRlbnRpZnkgdGhl
IHNvY2tldFxuIik7CisJaWYgKFBUUklTRVJSKGZpbGUpKSB7CisJCUxXSVBfREVCVUdGKFNPQ0tF
VFNfREVCVUcsICgiZmFpbGVkIHRvIGlkZW50aWZ5IHNvY2tldFxuIikpOwogCQlyZXQgPSAtMTsK
IAkJU09DS19ORVRfU0VUX0VSUk5PKFBUUjJFUlIoZmlsZSkpOwogCQlnb3RvIEVYSVQ7CkBAIC0y
NzMsOSArMzI4LDExIEBAIGludCBnZXRzb2Nrb3B0KGludCBzLCBpbnQgbGV2ZWwsIGludCBvcHRu
YW1lLCB2b2lkICpvcHR2YWwsIHNvY2tsZW5fdCAqb3B0bGVuKQogewogCWludCByZXQgPSAwOwog
CXN0cnVjdCBzb2NrX25ldF9maWxlICpmaWxlID0gTlVMTDsKKwogCWZpbGUgPSBzb2NrX25ldF9m
aWxlX2dldChzKTsKLQlpZihQVFJJU0VSUihmaWxlKSkgewotCQl1a19wcmludGQoRExWTF9FUlIs
ICJmYWlsZWQgdG8gaWRlbnRpZnkgdGhlIHNvY2tldCBkZXNjcmlwdG9yIFxuIik7CisJaWYgKFBU
UklTRVJSKGZpbGUpKSB7CisJCUxXSVBfREVCVUdGKFNPQ0tFVFNfREVCVUcsCisJCQkgICAgKCJm
YWlsZWQgdG8gaWRlbnRpZnkgc29ja2V0IGRlc2NyaXB0b3JcbiIpKTsKIAkJcmV0ID0gLTE7CiAJ
CVNPQ0tfTkVUX1NFVF9FUlJOTyhQVFIyRVJSKGZpbGUpKTsKIAkJZ290byBFWElUOwpAQCAtMjg1
LDE0ICszNDIsMTYgQEAgRVhJVDoKIAlyZXR1cm4gcmV0OwogfQogCi1pbnQgc2V0c29ja29wdCAo
aW50IHMsIGludCBsZXZlbCwgaW50IG9wdG5hbWUsIGNvbnN0IHZvaWQgKm9wdHZhbCwKLQkJc29j
a2xlbl90IG9wdGxlbikKK2ludCBzZXRzb2Nrb3B0KGludCBzLCBpbnQgbGV2ZWwsIGludCBvcHRu
YW1lLCBjb25zdCB2b2lkICpvcHR2YWwsCisJICAgICAgIHNvY2tsZW5fdCBvcHRsZW4pCiB7CiAJ
aW50IHJldCA9IDA7CiAJc3RydWN0IHNvY2tfbmV0X2ZpbGUgKmZpbGUgPSBOVUxMOworCiAJZmls
ZSA9IHNvY2tfbmV0X2ZpbGVfZ2V0KHMpOwotCWlmKFBUUklTRVJSKGZpbGUpKSB7Ci0JCXVrX3By
aW50ZChETFZMX0VSUiwgImZhaWxlZCB0byBpZGVudGlmeSB0aGUgc29ja2V0IGRlc2NyaXB0b3Ig
XG4iKTsKKwlpZiAoUFRSSVNFUlIoZmlsZSkpIHsKKwkJTFdJUF9ERUJVR0YoU09DS0VUU19ERUJV
RywKKwkJCSAgICAoImZhaWxlZCB0byBpZGVudGlmeSBzb2NrZXQgZGVzY3JpcHRvclxuIikpOwog
CQlyZXQgPSAtMTsKIAkJU09DS19ORVRfU0VUX0VSUk5PKFBUUjJFUlIoZmlsZSkpOwogCQlnb3Rv
IEVYSVQ7CkBAIC0zMDYsOSArMzY1LDExIEBAIGludCBjb25uZWN0KGludCBzLCBjb25zdCBzdHJ1
Y3Qgc29ja2FkZHIgKm5hbWUsIHNvY2tsZW5fdCBuYW1lbGVuKQogewogCWludCByZXQgPSAwOwog
CXN0cnVjdCBzb2NrX25ldF9maWxlICpmaWxlID0gTlVMTDsKKwogCWZpbGUgPSBzb2NrX25ldF9m
aWxlX2dldChzKTsKLQlpZihQVFJJU0VSUihmaWxlKSkgewotCQl1a19wcmludGQoRExWTF9FUlIs
ICJmYWlsZWQgdG8gaWRlbnRpZnkgdGhlIHNvY2tldCBkZXNjcmlwdG9yIFxuIik7CisJaWYgKFBU
UklTRVJSKGZpbGUpKSB7CisJCUxXSVBfREVCVUdGKFNPQ0tFVFNfREVCVUcsCisJCQkgICAgKCJm
YWlsZWQgdG8gaWRlbnRpZnkgc29ja2V0IGRlc2NyaXB0b3JcbiIpKTsKIAkJcmV0ID0gLTE7CiAJ
CVNPQ0tfTkVUX1NFVF9FUlJOTyhQVFIyRVJSKGZpbGUpKTsKIAkJZ290byBFWElUOwpAQCAtMzIy
LDkgKzM4MywxMSBAQCBpbnQgbGlzdGVuKGludCBzLCBpbnQgYmFja2xvZykKIHsKIAlpbnQgcmV0
ID0gMDsKIAlzdHJ1Y3Qgc29ja19uZXRfZmlsZSAqZmlsZSA9IE5VTEw7CisKIAlmaWxlID0gc29j
a19uZXRfZmlsZV9nZXQocyk7Ci0JaWYoUFRSSVNFUlIoZmlsZSkpIHsKLQkJdWtfcHJpbnRkKERM
VkxfRVJSLCAiZmFpbGVkIHRvIGlkZW50aWZ5IHRoZSBzb2NrZXQgZGVzY3JpcHRvciBcbiIpOwor
CWlmIChQVFJJU0VSUihmaWxlKSkgeworCQlMV0lQX0RFQlVHRihTT0NLRVRTX0RFQlVHLAorCQkJ
ICAgICgiZmFpbGVkIHRvIGlkZW50aWZ5IHNvY2tldCBkZXNjcmlwdG9yXG4iKSk7CiAJCXJldCA9
IC0xOwogCQlTT0NLX05FVF9TRVRfRVJSTk8oUFRSMkVSUihmaWxlKSk7CiAJCWdvdG8gRVhJVDsK
QEAgLTMzOCw5ICs0MDEsMTEgQEAgaW50IHJlY3YoaW50IHMsIHZvaWQgKm1lbSwgc2l6ZV90IGxl
biwgaW50IGZsYWdzKQogewogCWludCByZXQgPSAwOwogCXN0cnVjdCBzb2NrX25ldF9maWxlICpm
aWxlID0gTlVMTDsKKwogCWZpbGUgPSBzb2NrX25ldF9maWxlX2dldChzKTsKLQlpZihQVFJJU0VS
UihmaWxlKSkgewotCQl1a19wcmludGQoRExWTF9FUlIsICJmYWlsZWQgdG8gaWRlbnRpZnkgdGhl
IHNvY2tldCBkZXNjcmlwdG9yIFxuIik7CisJaWYgKFBUUklTRVJSKGZpbGUpKSB7CisJCUxXSVBf
REVCVUdGKFNPQ0tFVFNfREVCVUcsCisJCQkgICAgKCJmYWlsZWQgdG8gaWRlbnRpZnkgc29ja2V0
IGRlc2NyaXB0b3JcbiIpKTsKIAkJcmV0ID0gLTE7CiAJCVNPQ0tfTkVUX1NFVF9FUlJOTyhQVFIy
RVJSKGZpbGUpKTsKIAkJZ290byBFWElUOwpAQCAtMzU1LDkgKzQyMCwxMSBAQCBpbnQgcmVjdmZy
b20oaW50IHMsIHZvaWQgKm1lbSwgc2l6ZV90IGxlbiwgaW50IGZsYWdzLAogewogCWludCByZXQg
PSAwOwogCXN0cnVjdCBzb2NrX25ldF9maWxlICpmaWxlID0gTlVMTDsKKwogCWZpbGUgPSBzb2Nr
X25ldF9maWxlX2dldChzKTsKLQlpZihQVFJJU0VSUihmaWxlKSkgewotCQl1a19wcmludGQoRExW
TF9FUlIsICJmYWlsZWQgdG8gaWRlbnRpZnkgdGhlIHNvY2tldCBkZXNjcmlwdG9yIFxuIik7CisJ
aWYgKFBUUklTRVJSKGZpbGUpKSB7CisJCUxXSVBfREVCVUdGKFNPQ0tFVFNfREVCVUcsCisJCQkg
ICAgKCJmYWlsZWQgdG8gaWRlbnRpZnkgc29ja2V0IGRlc2NyaXB0b3JcbiIpKTsKIAkJcmV0ID0g
LTE7CiAJCVNPQ0tfTkVUX1NFVF9FUlJOTyhQVFIyRVJSKGZpbGUpKTsKIAkJZ290byBFWElUOwpA
QCAtMzcxLDkgKzQzOCwxMSBAQCBpbnQgc2VuZChpbnQgcywgY29uc3Qgdm9pZCAqZGF0YXB0ciwg
c2l6ZV90IHNpemUsIGludCBmbGFncykKIHsKIAlpbnQgcmV0ID0gMDsKIAlzdHJ1Y3Qgc29ja19u
ZXRfZmlsZSAqZmlsZSA9IE5VTEw7CisKIAlmaWxlID0gc29ja19uZXRfZmlsZV9nZXQocyk7Ci0J
aWYoUFRSSVNFUlIoZmlsZSkpIHsKLQkJdWtfcHJpbnRkKERMVkxfRVJSLCAiZmFpbGVkIHRvIGlk
ZW50aWZ5IHRoZSBzb2NrZXQgZGVzY3JpcHRvciBcbiIpOworCWlmIChQVFJJU0VSUihmaWxlKSkg
eworCQlMV0lQX0RFQlVHRihTT0NLRVRTX0RFQlVHLAorCQkJICAgICgiZmFpbGVkIHRvIGlkZW50
aWZ5IHNvY2tldCBkZXNjcmlwdG9yXG4iKSk7CiAJCXJldCA9IC0xOwogCQlTT0NLX05FVF9TRVRf
RVJSTk8oUFRSMkVSUihmaWxlKSk7CiAJCWdvdG8gRVhJVDsKQEAgLTM4Nyw5ICs0NTYsMTEgQEAg
aW50IHNlbmRtc2coaW50IHMsIGNvbnN0IHN0cnVjdCBtc2doZHIgKm1lc3NhZ2UsIGludCBmbGFn
cykKIHsKIAlpbnQgcmV0ID0gMDsKIAlzdHJ1Y3Qgc29ja19uZXRfZmlsZSAqZmlsZSA9IE5VTEw7
CisKIAlmaWxlID0gc29ja19uZXRfZmlsZV9nZXQocyk7Ci0JaWYoUFRSSVNFUlIoZmlsZSkpIHsK
LQkJdWtfcHJpbnRkKERMVkxfRVJSLCAiZmFpbGVkIHRvIGlkZW50aWZ5IHRoZSBzb2NrZXQgZGVz
Y3JpcHRvciBcbiIpOworCWlmIChQVFJJU0VSUihmaWxlKSkgeworCQlMV0lQX0RFQlVHRihTT0NL
RVRTX0RFQlVHLAorCQkJICAgICgiZmFpbGVkIHRvIGlkZW50aWZ5IHNvY2tldCBkZXNjcmlwdG9y
XG4iKSk7CiAJCXJldCA9IC0xOwogCQlTT0NLX05FVF9TRVRfRVJSTk8oUFRSMkVSUihmaWxlKSk7
CiAJCWdvdG8gRVhJVDsKQEAgLTQwNCw5ICs0NzUsMTEgQEAgaW50IHNlbmR0byhpbnQgcywgY29u
c3Qgdm9pZCAqZGF0YXB0ciwgc2l6ZV90IHNpemUsIGludCBmbGFncywKIHsKIAlpbnQgcmV0ID0g
MDsKIAlzdHJ1Y3Qgc29ja19uZXRfZmlsZSAqZmlsZSA9IE5VTEw7CisKIAlmaWxlID0gc29ja19u
ZXRfZmlsZV9nZXQocyk7Ci0JaWYoUFRSSVNFUlIoZmlsZSkpIHsKLQkJdWtfcHJpbnRkKERMVkxf
RVJSLCAiZmFpbGVkIHRvIGlkZW50aWZ5IHRoZSBzb2NrZXQgZGVzY3JpcHRvciBcbiIpOworCWlm
IChQVFJJU0VSUihmaWxlKSkgeworCQlMV0lQX0RFQlVHRihTT0NLRVRTX0RFQlVHLAorCQkJICAg
ICgiZmFpbGVkIHRvIGlkZW50aWZ5IHNvY2tldCBkZXNjcmlwdG9yXG4iKSk7CiAJCXJldCA9IC0x
OwogCQlTT0NLX05FVF9TRVRfRVJSTk8oUFRSMkVSUihmaWxlKSk7CiAJCWdvdG8gRVhJVDsKQEAg
LTQxNSwxMSArNDg4LDMgQEAgaW50IHNlbmR0byhpbnQgcywgY29uc3Qgdm9pZCAqZGF0YXB0ciwg
c2l6ZV90IHNpemUsIGludCBmbGFncywKIEVYSVQ6CiAJcmV0dXJuIHJldDsKIH0KLQotaW50IHNl
bGVjdChpbnQgbWF4ZmRwMSwgZmRfc2V0ICpyZWFkc2V0LCBmZF9zZXQgKndyaXRlc2V0LCBmZF9z
ZXQKLQkJKmV4Y2VwdHNldCwgc3RydWN0IHRpbWV2YWwgKnRpbWVvdXQpCi17Ci0JaW50IHJldCA9
IC0xOwotCVNPQ0tfTkVUX1NFVF9FUlJOTygtRU5PVFNVUCk7Ci0JcmV0dXJuIHJldDsKLX0KZGlm
ZiAtLWdpdCBhL3RocmVhZHMuYyBiL3RocmVhZHMuYwppbmRleCAxZTZiZTRkLi4zZWMwNmZhIDEw
MDY0NAotLS0gYS90aHJlYWRzLmMKKysrIGIvdGhyZWFkcy5jCkBAIC0xLDIzICsxLDU5IEBACisv
KiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCisvKgorICogQ29weXJp
Z2h0IChjKSAyMDE5LCBORUMgTGFib3JhdG9yaWVzIEV1cm9wZSBHbWJILCBORUMgQ29ycG9yYXRp
b24uCisgKiAgICAgICAgICAgICAgICAgICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqICAgIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUyAiQVMgSVMiCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQor
ICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVS
IE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICog
VEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4K
KyAqLworCiAjaW5jbHVkZSA8dWsvYXJjaC9saW1pdHMuaD4KICNpbmNsdWRlIDx1ay9zY2hlZC5o
PgogI2luY2x1ZGUgPHVrL3RocmVhZC5oPgogI2luY2x1ZGUgPHVrL3ByaW50Lmg+CiAjaW5jbHVk
ZSA8dWsvYXNzZXJ0Lmg+CiAjaW5jbHVkZSA8bHdpcC9zeXMuaD4KKyNpbmNsdWRlIDx1ay9lc3Nl
bnRpYWxzLmg+CiAKLS8qIFN0YXJ0cyBhIG5ldyB0aHJlYWQgd2l0aCBwcmlvcml0eSAicHJpbyIg
dGhhdCB3aWxsIGJlZ2luIGl0cyBleGVjdXRpb24gaW4gdGhlCisvKioKKyAqIFN0YXJ0cyBhIG5l
dyB0aHJlYWQgd2l0aCBwcmlvcml0eSAicHJpbyIgdGhhdCB3aWxsIGJlZ2luIGl0cyBleGVjdXRp
b24gaW4gdGhlCiAgKiBmdW5jdGlvbiAidGhyZWFkKCkiLiBUaGUgImFyZyIgYXJndW1lbnQgd2ls
bCBiZSBwYXNzZWQgYXMgYW4gYXJndW1lbnQgdG8gdGhlCiAgKiB0aHJlYWQoKSBmdW5jdGlvbi4g
VGhlIGlkIG9mIHRoZSBuZXcgdGhyZWFkIGlzIHJldHVybmVkLiBCb3RoIHRoZSBpZCBhbmQKLSAq
IHRoZSBwcmlvcml0eSBhcmUgc3lzdGVtIGRlcGVuZGVudC4gKi8KKyAqIHRoZSBwcmlvcml0eSBh
cmUgc3lzdGVtIGRlcGVuZGVudC4KKyAqLwogc3lzX3RocmVhZF90IHN5c190aHJlYWRfbmV3KGNv
bnN0IGNoYXIgKm5hbWUsIGx3aXBfdGhyZWFkX2ZuIHRocmVhZCwgdm9pZCAqYXJnLAotCQkJCWlu
dCBzdGFja3NpemUsIGludCBwcmlvKQorCQkJICAgIGludCBzdGFja3NpemUsIGludCBwcmlvIF9f
dW51c2VkKQogewogCXN0cnVjdCB1a190aHJlYWQgKnQ7Ci0JaWYgKHN0YWNrc2l6ZSA+IF9fU1RB
Q0tfU0laRSkgewotCQl1a19wcmludGQoRExWTF9DUklULCAiQ2FuJ3QgY3JlYXRlIGx3SVAgdGhy
ZWFkOiBzdGFjayBzaXplICV1IGlzIHRvbyBsYXJnZSAoPiAldSlcbiIsCi0JCQkJCXN0YWNrc2l6
ZSwgX19TVEFDS19TSVpFKTsKLQkJVUtfQ1JBU0goIkR5aW5nXG4iKTsKKworCWlmIChzdGFja3Np
emUgPiAoX19zc3opIF9fU1RBQ0tfU0laRSkgeworCQlVS19DUkFTSCgiQ2FuJ3QgY3JlYXRlIGx3
SVAgdGhyZWFkOiBzdGFjayBzaXplICV1IGlzIHRvbyBsYXJnZSAoPiAlbGx1KS4gRHlpbmcuLi5c
biIsCisJCQkgc3RhY2tzaXplLCBfX1NUQUNLX1NJWkUpOwogCX0KLQl0ID0gdWtfdGhyZWFkX2Ny
ZWF0ZSgoY2hhciAqKSBuYW1lLCB0aHJlYWQsIGFyZyk7CisJdCA9IHVrX3RocmVhZF9jcmVhdGUo
bmFtZSwgdGhyZWFkLCBhcmcpOwogCXJldHVybiB0OwogfQpkaWZmIC0tZ2l0IGEvdGltZS5jIGIv
dGltZS5jCmluZGV4IGNhNmJlOGYuLmY2YjEwNTAgMTAwNjQ0Ci0tLSBhL3RpbWUuYworKysgYi90
aW1lLmMKQEAgLTEsMyArMSwzNiBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0z
LUNsYXVzZSAqLworLyoKKyAqIENvcHlyaWdodCAoYykgMjAxOSwgTkVDIExhYm9yYXRvcmllcyBF
dXJvcGUgR21iSCwgTkVDIENvcnBvcmF0aW9uLgorICogICAgICAgICAgICAgICAgICAgICBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2Yg
dGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqICAgIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiAgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICoKKyAqIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVE
IE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCisgKi8KKwogI2luY2x1ZGUgPHVrL2FyY2gvdGltZS5o
PgogI2luY2x1ZGUgPHVrL3BsYXQvdGltZS5oPgogI2luY2x1ZGUgPGx3aXAvc3lzLmg+Ci0tIAoy
LjIwLjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpN
aW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9y
ZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRl
dmVs

From minios-devel-bounces@lists.xenproject.org Thu Feb 07 23:01:49 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 07 Feb 2019 23:01:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grsg1-0004gM-LK; Thu, 07 Feb 2019 23:01:49 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=3EZI=QO=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1grsg0-0004g7-Jq
 for minios-devel@lists.xen.org; Thu, 07 Feb 2019 23:01:48 +0000
X-Inumbo-ID: 573a8ec0-2b2c-11e9-8ca3-57c40218aa78
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 573a8ec0-2b2c-11e9-8ca3-57c40218aa78;
 Thu, 07 Feb 2019 23:01:45 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 1E124F206D;
 Fri,  8 Feb 2019 00:01:45 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id Z9x-S-yXFsMe; Fri,  8 Feb 2019 00:01:45 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id E5918F202D
 for <minios-devel@lists.xen.org>; Fri,  8 Feb 2019 00:01:42 +0100 (CET)
Received: from localhost.localdomain (10.7.0.213) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 8 Feb
 2019 00:01:42 +0100
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Fri, 8 Feb 2019 00:00:34 +0100
Message-ID: <20190207230035.29861-5-simon.kuenzer@neclab.eu>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190207230035.29861-1-simon.kuenzer@neclab.eu>
References: <20190207230035.29861-1-simon.kuenzer@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.7.0.213]
Subject: [Minios-devel] [UNIKRAFT/LIBLWIP PATCH 4/5] Attach uknetdev netifs
 during boot
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Simon Kuenzer <simon.kuenzer@neclab.eu>, sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2NhbiBmb3IgdWtuZXRkZXYgZGV2aWNlcyBhbmQgYXR0YWNoIHRoZW0gYXV0b21hdGljYWxseSB0
byB0aGUgbHdJUApzdGFjayBkdXJpbmcgaW5pdGlhbGl6YXRpb24uIElmIERIQ1Agc3VwcG9ydCBp
cyBlbmFibGVkLCB0aGUgc3RhY2sKd2lsbCBxdWVyeSBmb3IgYW4gYWRkcmVzcyBvbiB0aGUgaW50
ZXJmYWNlcy4KClNpZ25lZC1vZmYtYnk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVj
bGFiLmV1PgotLS0KIENvbmZpZy51ayB8ICA3ICsrKysrCiBpbml0LmMgICAgfCA4OCArKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAyIGZpbGVz
IGNoYW5nZWQsIDk1IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9Db25maWcudWsgYi9Db25m
aWcudWsKaW5kZXggMjM4MTNkZS4uYWNmZTNlZiAxMDA2NDQKLS0tIGEvQ29uZmlnLnVrCisrKyBi
L0NvbmZpZy51awpAQCAtMjQsNiArMjQsMTMgQEAgY29uZmlnIExXSVBfVUtORVRERVYKIAkJaW50
ZXJmYWNlcyBoYXZlIHRvIGJlIHBvbGxlZCBtYW51YWxseSAodWtuZXRkZXZfcG9sbCgpKS4KIGVu
ZG1lbnUKIAorY29uZmlnIExXSVBfQVVUT0lGQUNFCisJYm9vbCAiQXV0b21hdGljYWxseSBhdHRh
Y2ggbmV0aWZzIgorCWRlZmF1bHQgeQorCWhlbHAKKwkJQXV0b21hdGljYWxseSBhdHRhY2ggZm91
bmQgbmV0d29yayBkZXZpY2VzIHRvIHRoZSBzdGFjaworCQlkdXJpbmcgaW5pdGlhbGl6YXRpb24u
CisKIGNob2ljZQogCXByb21wdCAiT3BlcmF0aW9uIG1vZGUiCiAJZGVmYXVsdCBMV0lQX1RIUkVB
RFMKZGlmZiAtLWdpdCBhL2luaXQuYyBiL2luaXQuYwppbmRleCBlY2UzNjNkLi42NWQ1NmI2IDEw
MDY0NAotLS0gYS9pbml0LmMKKysrIGIvaW5pdC5jCkBAIC00Myw2ICs0Myw3IEBACiAjZWxzZSAv
KiBDT05GSUdfTFdJUF9OT1RIUkVBRFMgKi8KICNpbmNsdWRlIDx1ay9zZW1hcGhvcmUuaD4KICNl
bmRpZiAvKiBDT05GSUdfTFdJUF9OT1RIUkVBRFMgKi8KKyNpbmNsdWRlICJuZXRpZi91a25ldGRl
di5oIgogCiB2b2lkIHN5c19pbml0KHZvaWQpCiB7CkBAIC02OCw2ICs2OSwyMiBAQCBzdGF0aWMg
dm9pZCBfbHdpcF9pbml0X2RvbmUodm9pZCAqYXJnIF9fdW51c2VkKQogICovCiBpbnQgbGlibHdp
cF9pbml0KHZvaWQpCiB7CisjaWYgQ09ORklHX0xXSVBfVUtORVRERVYgJiYgQ09ORklHX0xXSVBf
QVVUT0lGQUNFCisJdW5zaWduZWQgaW50IGRldmlkOworCXN0cnVjdCB1a19uZXRkZXYgKmRldjsK
KwlzdHJ1Y3QgbmV0aWYgKm5mOworCWNvbnN0IGNoYXIgIF9fbWF5YmVfdW51c2VkICpzdHJjZmc7
CisJdWludDE2X3QgIF9fbWF5YmVfdW51c2VkIGludDE2Y2ZnOworCWludCBpc19maXJzdF9uZjsK
KyNpZiBMV0lQX0lQVjQKKwlpcDRfYWRkcl90IF9fbWF5YmVfdW51c2VkIGlwNDsKKwlpcDRfYWRk
cl90ICppcDRfYXJnOworCWlwNF9hZGRyX3QgX19tYXliZV91bnVzZWQgbWFzazQ7CisJaXA0X2Fk
ZHJfdCAqbWFzazRfYXJnOworCWlwNF9hZGRyX3QgX19tYXliZV91bnVzZWQgZ3c0OworCWlwNF9h
ZGRyX3QgKmd3NF9hcmc7CisjZW5kaWYgLyogTFdJUF9JUFY0ICovCisjZW5kaWYgLyogQ09ORklH
X0xXSVBfVUtORVRERVYgJiYgQ09ORklHX0xXSVBfQVVUT0lGQUNFICovCiAKICNpZiAhQ09ORklH
X0xXSVBfTk9USFJFQURTCiAJdWtfc2VtYXBob3JlX2luaXQoJl9sd2lwX2luaXRfc2VtLCAwKTsK
QEAgLTgyLDUgKzk5LDc2IEBAIGludCBsaWJsd2lwX2luaXQodm9pZCkKIAl1a19zZW1hcGhvcmVf
ZG93bigmX2x3aXBfaW5pdF9zZW0pOwogI2VuZGlmIC8qIENPTkZJR19MV0lQX05PVEhSRUFEUyAq
LwogCisjaWYgQ09ORklHX0xXSVBfVUtORVRERVYgJiYgQ09ORklHX0xXSVBfQVVUT0lGQUNFCisJ
aXNfZmlyc3RfbmYgPSAxOworCisJZm9yIChkZXZpZCA9IDA7IGRldmlkIDwgdWtfbmV0ZGV2X2Nv
dW50KCk7ICsrZGV2aWQpIHsKKwkJZGV2ID0gdWtfbmV0ZGV2X2dldChkZXZpZCk7CisJCWlmICgh
ZGV2KQorCQkJY29udGludWU7CisJCWlmICh1a19uZXRkZXZfc3RhdGVfZ2V0KGRldikgIT0gVUtf
TkVUREVWX1VOQ09ORklHVVJFRCkgeworCQkJdWtfcHJfaW5mbygiU2tpcHBpbmcgdG8gYWRkIG5l
dHdvcmsgZGV2aWNlICV1IHRvIGx3SVA6IE5vdCBpbiB1bmNvbmZpZ3VyZWQgc3RhdGVcbiIsCisJ
CQkJICAgIGRldmlkKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJdWtfcHJfaW5mbygiQXR0YWNo
IG5ldHdvcmsgZGV2aWNlICV1IHRvIGx3SVAuLi5cbiIsCisJCQkgICBkZXZpZCk7CisKKyNpZiBM
V0lQX0lQVjQKKwkJaXA0X2FyZyAgID0gTlVMTDsKKwkJbWFzazRfYXJnID0gTlVMTDsKKwkJZ3c0
X2FyZyAgID0gTlVMTDsKKworCQkvKgorCQkgKiBUT0RPOiBUcnkgdG8gZ2V0IGRldmljZSBjb25m
aWd1cmF0aW9uIGZyb20KKwkJICogbmV0ZGV2J3MgZWNvbmYgaW50ZXJmYWNlOgorCQkgKgorCQkg
KiBVS19ORVRERVZfSVBWNF9BRERSX05JTlQxNjsKKwkJICogVUtfTkVUREVWX0lQVjRfQUREUl9T
VFI7CisJCSAqIFVLX05FVERFVl9JUFY0X01BU0tfTklOVDE2OworCQkgKiBVS19ORVRERVZfSVBW
NF9NQVNLX1NUUjsKKwkJICogVUtfTkVUREVWX0lQVjRfR1dfTklOVDE2OworCQkgKiBVS19ORVRE
RVZfSVBWNF9HV19TVFI7CisJCSAqCisJCSAqIFdoZW4gc3VjY2Vzc2Z1bGx5IGRvbmUsIHNldAor
CQkgKiAgaXBfYXJnID0gJmlwOworCQkgKiAgbWFza19hcmcgPSAmbWFzazsKKwkJICogIGd3X2Fy
ZyA9ICZndzsKKwkJICovCisKKwkJbmYgPSB1a25ldGRldl9hZGRpZihkZXYsIGlwNF9hcmcsIG1h
c2s0X2FyZywgZ3c0X2FyZyk7CisjZWxzZSAvKiBMV0lQX0lQVjQgKi8KKwkJLyoKKwkJICogVE9E
TzogQWRkIHN1cHBvcnQgZm9yIElQdjYgZGV2aWNlIGNvbmZpZ3VyYXRpb24gZnJvbQorCQkgKiBu
ZXRkZXYncyBlY29uZiBpbnRlcmZhY2UKKwkJICovCisKKwkJbmYgPSB1a25ldGRldl9hZGRpZihk
ZXYpOworI2VuZGlmIC8qIExXSVBfSVBWNCAqLworCQlpZiAoIW5mKSB7CisJCQl1a19wcl9lcnIo
IkZhaWxlZCB0byBhdHRhY2ggbmV0d29yayBkZXZpY2UgJXUgdG8gbHdJUFxuIiwKKwkJCQkgIGRl
dmlkKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJLyogRGVjbGFyZSB0aGUgZmlyc3QgbmV0d29y
ayBkZXZpY2UgYXMgZGVmYXVsdCBpbnRlcmZhY2UgKi8KKwkJaWYgKGlzX2ZpcnN0X25mKSB7CisJ
CQl1a19wcl9pbmZvKCIlYyVjJXU6IFNldCBhcyBkZWZhdWx0IGludGVyZmFjZVxuIiwKKwkJCQkg
ICBuZi0+bmFtZVswXSwgbmYtPm5hbWVbMV0sIG5mLT5udW0pOworCQkJbmV0aWZfc2V0X2RlZmF1
bHQobmYpOworCQkJaXNfZmlyc3RfbmYgPSAwOworCQl9CisJCW5ldGlmX3NldF91cChuZik7CisK
KyNpZiBMV0lQX0lQVjQgJiYgTFdJUF9ESENQCisJCWlmICghaXA0X2FyZykgeworCQkJdWtfcHJf
aW5mbygiJWMlYyV1OiBESENQIGNvbmZpZ3VyYXRpb24gKGJhY2tncm91bmQpLi4uXG4iLAorCQkJ
CSAgIG5mLT5uYW1lWzBdLCBuZi0+bmFtZVsxXSwgbmYtPm51bSk7CisJCQlkaGNwX3N0YXJ0KG5m
KTsKKwkJfQorI2VuZGlmIC8qIExXSVBfSVBWNCAmJiBMV0lQX0RIQ1AgKi8KKwl9CisjZW5kaWYg
LyogQ09ORklHX0xXSVBfVUtORVRERVYgJiYgQ09ORklHX0xXSVBfQVVUT0lGQUNFICovCiAJcmV0
dXJuIDA7CiB9Ci0tIAoyLjIwLjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0
cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlz
dGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Thu Feb 07 23:01:49 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 07 Feb 2019 23:01:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grsg1-0004gT-NE; Thu, 07 Feb 2019 23:01:49 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=3EZI=QO=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1grsg0-0004g8-Kj
 for minios-devel@lists.xen.org; Thu, 07 Feb 2019 23:01:48 +0000
X-Inumbo-ID: 55b42070-2b2c-11e9-a154-2be159f24841
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 55b42070-2b2c-11e9-a154-2be159f24841;
 Thu, 07 Feb 2019 23:01:43 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 90CF0104DA9;
 Fri,  8 Feb 2019 00:01:42 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 1Gbs_kv8TZ_x; Fri,  8 Feb 2019 00:01:42 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 68B3A104DA5
 for <minios-devel@lists.xen.org>; Fri,  8 Feb 2019 00:01:40 +0100 (CET)
Received: from localhost.localdomain (10.7.0.213) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 8 Feb
 2019 00:01:39 +0100
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Fri, 8 Feb 2019 00:00:33 +0100
Message-ID: <20190207230035.29861-4-simon.kuenzer@neclab.eu>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190207230035.29861-1-simon.kuenzer@neclab.eu>
References: <20190207230035.29861-1-simon.kuenzer@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.7.0.213]
Subject: [Minios-devel] [UNIKRAFT/LIBLWIP PATCH 3/5] Netif driver for
 libuknetdev devices
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Simon Kuenzer <simon.kuenzer@neclab.eu>, sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SW50cm9kdWNlcyBhIG5ldGlmIGRyaXZlciBmb3IgbGlidWtuZXRkZXYgZGV2aWNlcy4gUGFja2V0
IGJ1ZmZlcnMgYXJlCmFsbG9jYXRlZCBvbiB0aGUgaGVhcCBmb3Igbm93LiBSZWNlaXZlIGludGVy
cnVwdHMgYXJlIHN1cHBvcnRlZCBhbmQKZW5hYmxlZCB3aGVuIGx3SVAgaXMgb3BlcmF0ZWQgaW4g
InRocmVhZGVkIiBtb2RlLiBaZXJvLWNvcHkgcmVjZWl2ZSBpcwppbXBsZW1lbnRlZCB3aXRoIHBh
Y2tldCBidWZmZXJzIGhhdmluZyB0d28gcGVyc29uYWxpdGllczogcGJ1ZiBhbmQgbmV0YnVmLgoK
U2lnbmVkLW9mZi1ieTogU2ltb24gS3VlbnplciA8c2ltb24ua3VlbnplckBuZWNsYWIuZXU+Ci0t
LQogQ29uZmlnLnVrICAgICAgICAgICAgICAgIHwgIDE3ICsrCiBNYWtlZmlsZS51ayAgICAgICAg
ICAgICAgfCAgIDIgKwogaW5jbHVkZS9uZXRpZi91a25ldGRldi5oIHwgIDgwICsrKysrCiBuZXRi
dWYuYyAgICAgICAgICAgICAgICAgfCAxMDQgKysrKysrKwogbmV0YnVmLmggICAgICAgICAgICAg
ICAgIHwgMTA3ICsrKysrKysKIHVrbmV0ZGV2LmMgICAgICAgICAgICAgICB8IDYxMSArKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDYgZmlsZXMgY2hhbmdlZCwgOTIxIGlu
c2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL25ldGlmL3VrbmV0ZGV2LmgK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBuZXRidWYuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IG5ldGJ1Zi5o
CiBjcmVhdGUgbW9kZSAxMDA2NDQgdWtuZXRkZXYuYwoKZGlmZiAtLWdpdCBhL0NvbmZpZy51ayBi
L0NvbmZpZy51awppbmRleCBkY2U1NjA3Li4yMzgxM2RlIDEwMDY0NAotLS0gYS9Db25maWcudWsK
KysrIGIvQ29uZmlnLnVrCkBAIC03LDYgKzcsMjMgQEAgbWVudWNvbmZpZyBMSUJMV0lQCiAJc2Vs
ZWN0IEhBVkVfTldfU1RBQ0sKIAogaWYgTElCTFdJUAorbWVudSAiTmV0aWYgZHJpdmVycyIKK2Nv
bmZpZyBMV0lQX1VLTkVUREVWCisJYm9vbCAiVW5pa3JhZnQgTmV0ZGV2IEV0aGVybmV0IChsaWJ1
a25ldGRldikiCisJZGVmYXVsdCB5CisJc2VsZWN0IExJQlVLTkVUREVWCisJc2VsZWN0IExJQlVL
TkVUREVWX0RJU1BBVENIRVJUSFJFQURTIGlmIExXSVBfVEhSRUFEUworCWhlbHAKKwkJQSBnZW5l
cmljIGRyaXZlciB0aGF0IG9wZXJhdGVzIG5ldHdvcmsgZHJpdmVycyB0aHJvdWdoCisJCWxpYnVr
bmV0ZGV2IEFQSS4KKwkJTm90ZTogV2hlbiBsd0lQIGlzIGNvbmZpZ3VyZWQgd2l0aCBtYWlubG9v
cCBtb2RlLCByZWNlaXZlCisJCWludGVycnVwdHMgYXJlIG5vdCBlbmFibGVkIGJ5IHRoaXMgZHJp
dmVyICh0aGVyZSBpcyBhbHNvIG5vCisJCXJlY2VpdmUgaW50ZXJydXB0IGhhbmRsZXIgcmVnaXN0
ZXJlZCkuCisJCUluIGNhc2UgdGhyZWFkZWQgbW9kZSBpcyBzZWxlY3RlZCBhbmQgdGhlIHVuZGVy
bHlpbmcgZGV2aWNlCisJCWRyaXZlciBkb2VzIG5vdCBzdXBwb3J0IHJlY2VpdmUgaW50ZXJydXB0
cyB0aGUgbmV0d29yaworCQlpbnRlcmZhY2VzIGhhdmUgdG8gYmUgcG9sbGVkIG1hbnVhbGx5ICh1
a25ldGRldl9wb2xsKCkpLgorZW5kbWVudQorCiBjaG9pY2UKIAlwcm9tcHQgIk9wZXJhdGlvbiBt
b2RlIgogCWRlZmF1bHQgTFdJUF9USFJFQURTCmRpZmYgLS1naXQgYS9NYWtlZmlsZS51ayBiL01h
a2VmaWxlLnVrCmluZGV4IGFlM2ZiZWEuLmU3YjdjYzYgMTAwNjQ0Ci0tLSBhL01ha2VmaWxlLnVr
CisrKyBiL01ha2VmaWxlLnVrCkBAIC0xMTEsNiArMTExLDggQEAgTElCTFdJUF9TUkNTLSQoQ09O
RklHX0xXSVBfU09DS0VUKSArPSAkKExJQkxXSVBfRVhUUkFDVEVEKS9hcGkvc29ja2V0cy5jCiAj
IE5FVElGcwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIExJQkxXSVBfU1JDUy15ICs9ICQoTElC
TFdJUF9FWFRSQUNURUQpL25ldGlmL2V0aGVybmV0LmMKK0xJQkxXSVBfU1JDUy0kKENPTkZJR19M
V0lQX1VLTkVUREVWKSArPSAkKExJQkxXSVBfQkFTRSkvbmV0YnVmLmN8dW5pa3JhZnQKK0xJQkxX
SVBfU1JDUy0kKENPTkZJR19MV0lQX1VLTkVUREVWKSArPSAkKExJQkxXSVBfQkFTRSkvdWtuZXRk
ZXYuY3x1bmlrcmFmdAogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBJUHY0CmRpZmYgLS1n
aXQgYS9pbmNsdWRlL25ldGlmL3VrbmV0ZGV2LmggYi9pbmNsdWRlL25ldGlmL3VrbmV0ZGV2LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzdhYWE2ZAotLS0gL2Rldi9udWxs
CisrKyBiL2luY2x1ZGUvbmV0aWYvdWtuZXRkZXYuaApAQCAtMCwwICsxLDgwIEBACisvKiBTUERY
LUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCisvKgorICogQXV0aG9yczogU2lt
b24gS3VlbnplciA8c2ltb24ua3VlbnplckBuZWNsYWIuZXU+CisgKgorICogQ29weXJpZ2h0IChj
KSAyMDE5LCBORUMgTGFib3JhdG9yaWVzIEV1cm9wZSBHbWJILCBORUMgQ29ycG9yYXRpb24uCisg
KiAgICAgICAgICAgICAgICAgICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqICAgIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAi
QVMgSVMiCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENP
TlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICogVEhJUyBI
RUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4KKyAqLwor
CisjaWZuZGVmIF9MV0lQX1VLTkVUREVWXworI2RlZmluZSBfTFdJUF9VS05FVERFVl8KKworI2lu
Y2x1ZGUgPHVrL2NvbmZpZy5oPgorI2luY2x1ZGUgImx3aXAvb3B0LmgiCisKKyNpZiBDT05GSUdf
TFdJUF9VS05FVERFViAvKiBkbyBub3QgZGVmaW5lIGFueXRoaW5nIGlmIG5vdCBjb25maWd1cmVk
IGZvciB1c2UgKi8KKworI2luY2x1ZGUgImx3aXAvbmV0aWYuaCIKKyNpbmNsdWRlICJsd2lwL2lw
X2FkZHIuaCIKKyNpbmNsdWRlICJuZXRpZi9ldGhlcm5ldC5oIgorI2luY2x1ZGUgPHVrL25ldGRl
di5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKy8qIENv
bmZpZ3VyZXMgYW5kIGJyaW5ncyB1cCBuZXQgZGV2aWNlICovCitlcnJfdCB1a25ldGRldl9pbml0
KHN0cnVjdCBuZXRpZiAqbmYpOworCisvKgorICogTm90ZTogV2hlbiB0aHJlYWRpbmcgbW9kZSBp
cyBlbmFibGVkLCBvbmx5IHVrbmV0ZGV2IG5ldGlmcyB0aGF0IGRvIG5vdAorICogc3VwcG9ydCBy
ZWNlaXZlIGludGVycnVwdHMgc2hvdWxkIGJlIHBvbGxlZCBmb3IgcGFja2V0cy4KKyAqLwordm9p
ZCB1a25ldGRldl9wb2xsKHN0cnVjdCBuZXRpZiAqbmYpOworCisjaWZkZWYgQ09ORklHX0xXSVBf
Tk9USFJFQURTCit2b2lkIHVrbmV0ZGV2X3BvbGxfYWxsKHZvaWQpOworI2VuZGlmIC8qIENPTkZJ
R19MV0lQX05PVEhSRUFEUyAqLworCitzdHJ1Y3QgbmV0aWYgKnVrbmV0ZGV2X2FkZGlmKHN0cnVj
dCB1a19uZXRkZXYgKm4KKyNpZiBMV0lQX0lQVjQKKwkJCSAgICAgLAorCQkJICAgICBjb25zdCBp
cDRfYWRkcl90ICppcGFkZHIsCisJCQkgICAgIGNvbnN0IGlwNF9hZGRyX3QgKm5ldG1hc2ssCisJ
CQkgICAgIGNvbnN0IGlwNF9hZGRyX3QgKmd3CisjZW5kaWYgLyogTFdJUF9JUFY0ICovCisJKTsK
KworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIENPTkZJR19MV0lQ
X1VLTkVUREVWICovCisjZW5kaWYgLyogX0xXSVBfTkVUREVWXyAqLwpkaWZmIC0tZ2l0IGEvbmV0
YnVmLmMgYi9uZXRidWYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ODc4
Zjc0Ci0tLSAvZGV2L251bGwKKysrIGIvbmV0YnVmLmMKQEAgLTAsMCArMSwxMDQgQEAKKy8qIFNQ
RFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8KKy8qCisgKiBBdXRob3JzOiBT
aW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4KKyAqCisgKiBDb3B5cmlnaHQg
KGMpIDIwMTksIE5FQyBMYWJvcmF0b3JpZXMgRXVyb3BlIEdtYkgsIE5FQyBDb3Jwb3JhdGlvbi4K
KyAqICAgICAgICAgICAgICAgICAgICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogICAgdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
ICJBUyBJUyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1Ig
Q09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKiBUSElT
IEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgorICov
CisKKyNpbmNsdWRlICJuZXRidWYuaCIKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworLyoqCisgKiBU
aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSBsd2lwIHdoZW4gb3VyIHBidWYgaXMgZnJlZSdkCisg
KiBBdCB0aGlzIHBvaW50LCBsd2lwIHNob3VsZCBoYXZlIG5vIHJlZmVyZW5jZSB0byB0aGUgcGJ1
ZgorICogYW55bW9yZSwgc28gd2UgY2FuIGp1c3QgcmVsZWFzZSB0aGUgZW5jYXBzdWxhdGluZyBu
ZXRidWYKKyAqLworc3RhdGljIHZvaWQgX25ldGJ1Zl9mcmVlKHN0cnVjdCBwYnVmICpwKQorewor
CXN0cnVjdCB1a19uZXRidWYgKm5iOworCisJbmIgPSBsd2lwX3BidWZfdG9fbmV0YnVmKHApOwor
CXVrX25ldGJ1Zl9mcmVlX3NpbmdsZShuYik7Cit9CisKK3N0cnVjdCB1a19uZXRidWYgKmx3aXBf
YWxsb2NfbmV0YnVmKHN0cnVjdCB1a19hbGxvYyAqYSwgc2l6ZV90IGFsbG9jX3NpemUsCisJCQkJ
ICAgIHNpemVfdCBoZWFkcm9vbSkKK3sKKwl2b2lkICphbGxvY2F0aW9uOworCXN0cnVjdCB1a19u
ZXRidWYgKmI7CisJc3RydWN0IF9uZXRidWZfcGJ1ZiAqbnA7CisKKwlhbGxvY2F0aW9uID0gdWtf
bWFsbG9jKGEsIGFsbG9jX3NpemUpOworCWlmICh1bmxpa2VseSghYWxsb2NhdGlvbikpCisJCWdv
dG8gZXJyX291dDsKKworCWIgPSB1a19uZXRidWZfcHJlcGFyZV9idWYoYWxsb2NhdGlvbiwgYWxs
b2Nfc2l6ZSwKKwkJCQkgIGhlYWRyb29tLCBzaXplb2Yoc3RydWN0IF9uZXRidWZfcGJ1ZiksIE5V
TEwpOworCWlmICh1bmxpa2VseSghYikpIHsKKwkJTFdJUF9ERUJVR0YoUEJVRl9ERUJVRywKKwkJ
CSAgICAoIkZhaWxlZCB0byBpbml0aWFsaXplIG5ldGJ1ZiB3aXRoIGVuY2Fwc3VsYXRlZCBwYnVm
OiByZXF1ZXN0ZWQgaGVhZHJvb206ICUiX19QUklzeiIsIGFsbG9jX3NpemU6ICUiX19QUklzeiJc
biIsCisJCQkgICAgIGhlYWRyb29tLCBhbGxvY19zaXplKSk7CisJCWdvdG8gZXJyX2ZyZWVfYWxs
b2NhdGlvbjsKKwl9CisKKwkvKgorCSAqIFJlZ2lzdGVyIGFsbG9jYXRvciBzbyB0aGF0IHVrX25l
dGJ1Zl9mcmVlKCkgd2lsbAorCSAqIHJldHVybiBvdXIgbWVtb3J5IGJhY2sgdG8gdGhpcyBhbGxv
Y2F0b3Igd2hlbiBmcmVlJ2luZworCSAqIHRoaXMgbmV0YnVmCisJICovCisJYi0+X2EgPSBhOwor
CisJLyogRmlsbC1vdXQgbWV0YSBkYXRhICovCisJbnAgPSAoc3RydWN0IF9uZXRidWZfcGJ1ZiAq
KSB1a19uZXRidWZfZ2V0X3ByaXYoYik7CisJbWVtc2V0KG5wLCAwLCBzaXplb2Yoc3RydWN0IF9u
ZXRidWZfcGJ1ZikpOworCW5wLT5wYnVmX2N1c3RvbS5wYnVmLnR5cGVfaW50ZXJuYWwgICA9IFBC
VUZfUk9NOworCW5wLT5wYnVmX2N1c3RvbS5wYnVmLmZsYWdzICAgICAgICAgICA9IFBCVUZfRkxB
R19JU19DVVNUT007CisJbnAtPnBidWZfY3VzdG9tLnBidWYucGF5bG9hZCAgICAgICAgID0gYi0+
ZGF0YTsKKwlucC0+cGJ1Zl9jdXN0b20ucGJ1Zi5yZWYgICAgICAgICAgICAgPSAxOworCW5wLT5w
YnVmX2N1c3RvbS5jdXN0b21fZnJlZV9mdW5jdGlvbiA9IF9uZXRidWZfZnJlZTsKKwlucC0+bmV0
YnVmID0gYjsKKworCS8qCisJICogU2V0IGxlbmd0aCBvZiBuZXRidWYgdG8gYXZhaWxhYmxlIHNw
YWNlIHNvIHRoYXQgaXQKKwkgKiBjYW4gYmUgdXNlZCBhcyByZWNlaXZlIGJ1ZmZlcgorCSAqLwor
CWItPmxlbiA9IGItPmJ1ZmxlbiAtIGhlYWRyb29tOworCisJTFdJUF9ERUJVR0YoUEJVRl9ERUJV
RywKKwkJICAgICgiQWxsb2NhdGVkIG5ldGJ1ZiB3aXRoIGVuY2Fwc3VsYXRlZCBwYnVmICVwIChi
dWZsZW46ICUiX19QUklzeiIsIGhlYWRyb29tOiAlIl9fUFJJc3oiKVxuIiwKKwkJICAgICBiLCBi
LT5idWZsZW4sIHVrX25ldGJ1Zl9oZWFkcm9vbShiKSkpOworCXJldHVybiBiOworCitlcnJfZnJl
ZV9hbGxvY2F0aW9uOgorCXVrX2ZyZWUoYSwgYWxsb2NhdGlvbik7CitlcnJfb3V0OgorCXJldHVy
biBOVUxMOworfQpkaWZmIC0tZ2l0IGEvbmV0YnVmLmggYi9uZXRidWYuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNDkyMDY1Ci0tLSAvZGV2L251bGwKKysrIGIvbmV0YnVm
LmgKQEAgLTAsMCArMSwxMDcgQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1D
bGF1c2UgKi8KKy8qCisgKiBBdXRob3JzOiBTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5l
Y2xhYi5ldT4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTksIE5FQyBMYWJvcmF0b3JpZXMgRXVy
b3BlIEdtYkgsIE5FQyBDb3Jwb3JhdGlvbi4KKyAqICAgICAgICAgICAgICAgICAgICAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRo
ZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiAgICBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqCisgKiBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBP
UiBNT0RJRklFRCBJTiBBTlkgV0FZLgorICovCisKKyNpZm5kZWYgX0xXSVBfTkVUQlVGXworI2Rl
ZmluZSBfTFdJUF9ORVRCVUZfCisKKyNpbmNsdWRlIDx1ay9jb25maWcuaD4KKyNpbmNsdWRlICJs
d2lwL29wdC5oIgorCisjaWYgQ09ORklHX0xXSVBfVUtORVRERVYgLyogZG8gbm90IGRlZmluZSBh
bnl0aGluZyBpZiBub3QgY29uZmlndXJlZCBmb3IgdXNlICovCisKKyNpbmNsdWRlICJsd2lwL3Bi
dWYuaCIKKyNpbmNsdWRlIDx1ay9uZXRidWYuaD4KKyNpbmNsdWRlIDx1ay9hbGxvYy5oPgorI2lu
Y2x1ZGUgPHVrL2Fzc2VydC5oPgorI2luY2x1ZGUgPHVrL2Vzc2VudGlhbHMuaD4KKworc3RydWN0
IF9uZXRidWZfcGJ1ZiB7CisJc3RydWN0IHBidWZfY3VzdG9tIHBidWZfY3VzdG9tOworCXN0cnVj
dCB1a19uZXRidWYgKm5ldGJ1ZjsKK307CisKKy8qKgorICogQWxsb2NhdGVzIGEgbmV0YnVmIHRo
YXQgZW1iZWRzIGEgcGJ1Zi4gQm90aCB3aWxsIHBvaW50CisgKiB0byB0aGUgc2FtZSBwYWNrZXQg
ZGF0YSBidWZmZXIuCisgKiBTdWNoIGJ1ZmZlcnMgYXJlIHVzZWQgdG8gaW1wbGVtZW50IHplcm8t
Y29weSByZWNlaXZlIHdpdGggdGhlCisgKiB1a25ldGRldiBBUEkuCisgKiBOT1RFOiBNYWtlIHN1
cmUgdGhhdCBuZXRidWYgYW5kIHBidWYgbWV0YSBkYXRhIGFyZSBrZXB0IGluIHN5bmMKKyAqIGJl
Zm9yZSBoYW5kaW5nIG92ZXIgdGhlIGVtYmVkZGVkIHBidWYgdG8gdGhlIG5ldHdvcmsgc3RhY2su
CisgKi8KK3N0cnVjdCB1a19uZXRidWYgKmx3aXBfYWxsb2NfbmV0YnVmKHN0cnVjdCB1a19hbGxv
YyAqYSwgc2l6ZV90IGFsbG9jX3NpemUsCisJCQkJICAgIHNpemVfdCBoZWFkcm9vbSk7CisKKy8q
KgorICogUmV0dXJucyB0aGUgcmVmZXJlbmNlIG9mIHRoZSBlbWJlZGRlZCBwYnVmIG9mIGEgbmV0
YnVmCisgKi8KK3N0YXRpYyBpbmxpbmUgc3RydWN0IHBidWYgKmx3aXBfbmV0YnVmX3RvX3BidWYo
c3RydWN0IHVrX25ldGJ1ZiAqYikKK3sKKwlzdHJ1Y3QgX25ldGJ1Zl9wYnVmICpucDsKKworCVVL
X0FTU0VSVChiKTsKKwlucCA9IChzdHJ1Y3QgX25ldGJ1Zl9wYnVmICopIHVrX25ldGJ1Zl9nZXRf
cHJpdihiKTsKKwlVS19BU1NFUlQobnApOworCisJLyoKKwkgKiBTYW5pdHkgY2hlY2s6IFdlIHVz
ZSB0aGUgUEJVRl9DVVNUT01fRkxBRyBhcyBhIHdheQorCSAqIHRvIGlkZW50aWZ5IGx3aXBfYWxs
b2NfbmV0YnVmKCkgd2FzIGFsbG9jYXRpbmcgdGhpcyBwYnVmLgorCSAqIFdlIGtub3cgaXQgbWF5
IGZhaWwgYnV0IGl0IGlzIHN0aWxsIGJldHRlciB0aGFuIG5vdGhpbmcuCisJICovCisJVUtfQVNT
RVJUKG5wLT5wYnVmX2N1c3RvbS5wYnVmLmZsYWdzICYgUEJVRl9GTEFHX0lTX0NVU1RPTSk7CisK
KwlyZXR1cm4gJm5wLT5wYnVmX2N1c3RvbS5wYnVmOworfQorCisvKioKKyAqIFJldHVybnMgdGhl
IHJlZmVyZW5jZSBvZiB0aGUgZW5jYXBzdWxhdGluZyBuZXRidWYgb2YgYSBwYnVmCisgKi8KK3N0
YXRpYyBpbmxpbmUgc3RydWN0IHVrX25ldGJ1ZiAqbHdpcF9wYnVmX3RvX25ldGJ1ZihzdHJ1Y3Qg
cGJ1ZiAqcCkKK3sKKwlzdHJ1Y3QgcGJ1Zl9jdXN0b20gKnBjOworCXN0cnVjdCBfbmV0YnVmX3Bi
dWYgKm5wOworCisJVUtfQVNTRVJUKHApOworCVVLX0FTU0VSVChwLT5mbGFncyAmIFBCVUZfRkxB
R19JU19DVVNUT00pOworCisJcGMgPSAoc3RydWN0IHBidWZfY3VzdG9tICopIF9fY29udGFpbmVy
b2YocCwgIHN0cnVjdCBwYnVmX2N1c3RvbSwgcGJ1Zik7CisJVUtfQVNTRVJUKHBjKTsKKwlucCA9
IChzdHJ1Y3QgX25ldGJ1Zl9wYnVmICopICBfX2NvbnRhaW5lcm9mKHBjLCBzdHJ1Y3QgX25ldGJ1
Zl9wYnVmLAorCQkJCQkJICAgIHBidWZfY3VzdG9tKTsKKwlVS19BU1NFUlQobnApOworCXJldHVy
biBucC0+bmV0YnVmOworfQorCisjZW5kaWYgLyogQ09ORklHX0xXSVBfVUtORVRERVYgKi8KKyNl
bmRpZiAvKiBfTFdJUF9ORVRCVUZfICovCmRpZmYgLS1naXQgYS91a25ldGRldi5jIGIvdWtuZXRk
ZXYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZGUyMDJkCi0tLSAvZGV2
L251bGwKKysrIGIvdWtuZXRkZXYuYwpAQCAtMCwwICsxLDYxMSBAQAorLyogU1BEWC1MaWNlbnNl
LUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLworLyoKKyAqIEF1dGhvcnM6IFNpbW9uIEt1ZW56
ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1PgorICoKKyAqIENvcHlyaWdodCAoYykgMjAxOSwg
TkVDIExhYm9yYXRvcmllcyBFdXJvcGUgR21iSCwgTkVDIENvcnBvcmF0aW9uLgorICogICAgICAg
ICAgICAgICAgICAgICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5l
aXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiAgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRP
UlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqIFRISVMgSEVBREVSIE1B
WSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCisgKi8KKworI2luY2x1
ZGUgPHVrL2NvbmZpZy5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+
CisKKyNpbmNsdWRlIDx1ay9hbGxvYy5oPgorI2luY2x1ZGUgPHVrL3ByaW50Lmg+CisjaW5jbHVk
ZSAibmV0aWYvdWtuZXRkZXYuaCIKKyNpbmNsdWRlICJuZXRidWYuaCIKKworI2luY2x1ZGUgImx3
aXAvb3B0LmgiCisjaW5jbHVkZSAibHdpcC9kZWYuaCIKKyNpbmNsdWRlICJsd2lwL3BidWYuaCIK
KyNpbmNsdWRlICJsd2lwL3N0YXRzLmgiCisjaW5jbHVkZSAibHdpcC9zbm1wLmgiCisjaW5jbHVk
ZSAibHdpcC9zeXMuaCIKKyNpbmNsdWRlICJsd2lwL3RjcGlwLmgiCisjaW5jbHVkZSAibHdpcC9l
dGhpcDYuaCIKKyNpbmNsdWRlICJuZXRpZi9ldGhhcnAuaCIKKyNpbmNsdWRlICJuZXRpZi9ldGhl
cm5ldC5oIgorI2luY2x1ZGUgPHVrL2FyY2gvYXRvbWljLmg+CisKKyNpbmNsdWRlIDx1ay9lc3Nl
bnRpYWxzLmg+CisKKyNkZWZpbmUgVUtORVRERVZfQlBTIDEwMDAwMDAwMDB1CisjZGVmaW5lIFVL
TkVUREVWX0JVRkxFTiAyMDQ4CisKKyNkZWZpbmUgVUtORVRERVZfTkVUSUZfTkFNRTAgJ2UnCisj
ZGVmaW5lIFVLTkVUREVWX05FVElGX05BTUUxICduJworCisvKgorICogR2xvYmFsIGhlYWRyb29t
IHNldHRpbmdzIGZvciBidWZmZXIgYWxsb2NhdGlvbnMgdXNlZCBvbiByZWNlaXZlCisgKiBhbmQg
dHJhbnNtaXQuIFdlIGFyZSB0YWtpbmcgdGhlIG1heGltdW0gb2YgYWxsIHVrbmV0ZGV2IGRldmlj
ZXMgYXMKKyAqIHNpbXBsaWZpY2F0aW9uLgorICogVE9ETzogQSBwZXItZGV2aWNlIHNldHRpbmcg
bWlnaHQgYmUgbW9yZSBlZmZpY2llbnQgYnV0IHJlcXVpcmVzIG1vcmUgZGF0YQorICogICAgICAg
ZmllbGRzIGZvciBgbmV0aWYtPnN0YXRlYC4gRm9yIG5vdyB3ZSBwb2ludCBkaXJlY3RseSB0byB0
aGUgYWNjb3JkaW5nCisgKiAgICAgICBgc3RydWN0IHVrX25ldGRldmAgaW4gb3JkZXIgdG8gYXZv
aWQgYW5vdGhlciBhbGxvY2F0aW9uIGZvciB0aGVzZQorICogICAgICAgcGVyLWRldmljZSBmaWVs
ZHMuCisgKi8KK3N0YXRpYyB1aW50MTZfdCByeF9oZWFkcm9vbSA9IEVUSF9QQURfU0laRTsKK3N0
YXRpYyB1aW50MTZfdCB0eF9oZWFkcm9vbSA9IEVUSF9QQURfU0laRTsKKworI2RlZmluZSBuZXRp
Zl90b191a25ldGRldihuZikgXAorCSgoc3RydWN0IHVrX25ldGRldiAqKSAobmYpLT5zdGF0ZSkK
Kworc3RhdGljIHVpbnQxNl90IG5ldGlmX2FsbG9jX3J4cGt0cyh2b2lkICphcmdwLCBzdHJ1Y3Qg
dWtfbmV0YnVmICpuYltdLAorCQkJCSAgIHVpbnQxNl90IGNvdW50KQoreworCXN0cnVjdCB1a19h
bGxvYyAqYTsKKwl1aW50MTZfdCBpOworCisJVUtfQVNTRVJUKGFyZ3ApOworCisJYSA9IChzdHJ1
Y3QgdWtfYWxsb2MgKikgYXJncDsKKworCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CisJ
CW5iW2ldID0gbHdpcF9hbGxvY19uZXRidWYoYSwgVUtORVRERVZfQlVGTEVOLCByeF9oZWFkcm9v
bSk7CisJCWlmICghbmJbaV0pIHsKKwkJCS8qIHdlIHJ1biBvdXQgb2YgbWVtb3J5ICovCisJCQli
cmVhazsKKwkJfQorCX0KKworCXJldHVybiBpOworfQorCitzdGF0aWMgZXJyX3QgdWtuZXRkZXZf
b3V0cHV0KHN0cnVjdCBuZXRpZiAqbmYsIHN0cnVjdCBwYnVmICpwKQoreworCXN0cnVjdCB1a19h
bGxvYyAqYTsKKwlzdHJ1Y3QgdWtfbmV0ZGV2ICpkZXY7CisJc3RydWN0IHBidWYgKnE7CisJc3Ry
dWN0IHVrX25ldGJ1ZiAqbmI7CisJdm9pZCAqYWxsb2NhdGlvbjsKKwljaGFyICp3cG9zOworCWlu
dCByZXQ7CisKKwlVS19BU1NFUlQobmYpOworCWRldiA9IG5ldGlmX3RvX3VrbmV0ZGV2KG5mKTsK
KwlVS19BU1NFUlQoZGV2KTsKKworCWEgPSB1a19hbGxvY19nZXRfZGVmYXVsdCgpOworCWlmICgh
YSkKKwkJcmV0dXJuIEVSUl9NRU07CisKKwlhbGxvY2F0aW9uID0gdWtfbWFsbG9jKGEsIFVLTkVU
REVWX0JVRkxFTik7CisJaWYgKCFhbGxvY2F0aW9uKQorCQlyZXR1cm4gRVJSX01FTTsKKwluYiA9
IHVrX25ldGJ1Zl9wcmVwYXJlX2J1ZihhbGxvY2F0aW9uLCBVS05FVERFVl9CVUZMRU4sCisJCQkJ
ICAgdHhfaGVhZHJvb20sIDAsIE5VTEwpOworCVVLX0FTU0VSVChuYik7CisJbmItPl9hID0gYTsg
LyogcmVnaXN0ZXIgYWxsb2NhdG9yIGZvciBmcmVlIG9wZXJhdGlvbiAqLworCisJaWYgKHVubGlr
ZWx5KHAtPnRvdF9sZW4gPiB1a19uZXRidWZfdGFpbHJvb20obmIpKSkgeworCQlMV0lQX0RFQlVH
RihORVRJRl9ERUJVRywKKwkJCSAgICAoIiVzOiAlYyVjJXU6IENhbm5vdCBzZW5kICUiUFJJdTE2
IiBieXRlcywgdG9vIGJpZyAoPiAlIl9fUFJJc3oiKVxuIiwKKwkJCSAgICAgX19mdW5jX18sIG5m
LT5uYW1lWzBdLCBuZi0+bmFtZVsxXSwgbmYtPm51bSwKKwkJCSAgICAgcC0+dG90X2xlbiwgdWtf
bmV0YnVmX3RhaWxyb29tKG5iKSkpOworCQl1a19uZXRidWZfZnJlZV9zaW5nbGUobmIpOworCQly
ZXR1cm4gRVJSX01FTTsKKwl9CisKKyNpZiBFVEhfUEFEX1NJWkUKKwlwYnVmX2hlYWRlcihwLCAt
RVRIX1BBRF9TSVpFKTsgLyogZHJvcCB0aGUgcGFkZGluZyB3b3JkICovCisjZW5kaWYgLyogRVRI
X1BBRF9TSVpFICovCisJLyoKKwkgKiBDb3B5IHBidWYgdG8gbmV0YnVmCisJICogTk9URTogVW5m
b3J0dW5hdGVseSwgbHdJUCBzZWVtcyBub3QgdG8gc3VwcG9ydCB6ZXJvLWNvcHkgdHJhbnNtaXQs
CisJICogICAgICAgeWV0LiBBcyBsb25nIGFzIHdlIGRvIG5vdCBoYXZlIHRoaXMsIHdlIGhhdmUg
dG8gY29weS4KKwkgKi8KKwl3cG9zID0gbmItPmRhdGE7CisJZm9yIChxID0gcDsgcSAhPSBOVUxM
OyBxID0gcC0+bmV4dCkgeworCQltZW1jcHkod3BvcywgcS0+cGF5bG9hZCwgcS0+bGVuKTsKKwkJ
d3BvcyArPSBxLT5sZW47CisJfQorCW5iLT5sZW4gPSBwLT50b3RfbGVuOworI2lmIEVUSF9QQURf
U0laRQorCXBidWZfaGVhZGVyKHAsIEVUSF9QQURfU0laRSk7IC8qIHJlY2xhaW0gdGhlIHBhZGRp
bmcgd29yZCAqLworI2VuZGlmIC8qIEVUSF9QQURfU0laRSAqLworCisJLyogVHJhbnNtaXQgcGFj
a2V0ICovCisJZG8geworCQlyZXQgPSB1a19uZXRkZXZfdHhfb25lKGRldiwgMCwgbmIpOworCX0g
d2hpbGUgKHVrX25ldGRldl9zdGF0dXNfbm90cmVhZHkocmV0KSk7CisJaWYgKHVubGlrZWx5KHJl
dCA8IDApKSB7CisjaWYgRVRIX1BBRF9TSVpFCisJCUxXSVBfREVCVUdGKE5FVElGX0RFQlVHLAor
CQkJICAgICgiJXM6ICVjJWMldTogRmFpbGVkIHRvIHNlbmQgJSJQUkl1MTYiIGJ5dGVzXG4iLAor
CQkJICAgICBfX2Z1bmNfXywgbmYtPm5hbWVbMF0sIG5mLT5uYW1lWzFdLCBuZi0+bnVtLAorCQkJ
ICAgICBwLT50b3RfbGVuIC0gRVRIX1BBRF9TSVpFKSk7CisjZWxzZSAvKiBFVEhfUEFEX1NJWkUg
Ki8KKwkJTFdJUF9ERUJVR0YoTkVUSUZfREVCVUcsCisJCQkgICAgKCIlczogJWMlYyV1OiBGYWls
ZWQgdG8gc2VuZCAlIlBSSXUxNiIgYnl0ZXNcbiIsCisJCQkgICAgIF9fZnVuY19fLCBuZi0+bmFt
ZVswXSwgbmYtPm5hbWVbMV0sIG5mLT5udW0sCisJCQkgICAgIHAtPnRvdF9sZW4pKTsKKyNlbmRp
ZiAvKiBFVEhfUEFEX1NJWkUgKi8KKwkJLyoKKwkJICogRGVjcmVhc2UgcmVmY291bnQgYWdhaW4g
YmVjYXVzZSBpbgorCQkgKiB0aGUgZXJyb3IgY2FzZSB0aGUgbmV0ZGV2IGRpZCBub3QgY29uc3Vt
ZSB0aGUgcGJ1ZgorCQkgKi8KKwkJdWtfbmV0YnVmX2ZyZWVfc2luZ2xlKG5iKTsKKwkJcmV0dXJu
IEVSUl9JRjsKKwl9CisjaWYgRVRIX1BBRF9TSVpFCisJTFdJUF9ERUJVR0YoTkVUSUZfREVCVUcs
ICgiJXM6ICVjJWMldTogU2VudCAlIlBSSXUxNiIgYnl0ZXNcbiIsCisJCQkJICBfX2Z1bmNfXywg
bmYtPm5hbWVbMF0sIG5mLT5uYW1lWzFdLCBuZi0+bnVtLAorCQkJCSAgcC0+dG90X2xlbiAtIEVU
SF9QQURfU0laRSkpOworI2Vsc2UgLyogRVRIX1BBRF9TSVpFICovCisJTFdJUF9ERUJVR0YoTkVU
SUZfREVCVUcsICgiJXM6ICVjJWMldTogU2VudCAlIlBSSXUxNiIgYnl0ZXNcbiIsCisJCQkJICBf
X2Z1bmNfXywgbmYtPm5hbWVbMF0sIG5mLT5uYW1lWzFdLCBuZi0+bnVtLAorCQkJCSAgcC0+dG90
X2xlbikpOworI2VuZGlmIC8qIEVUSF9QQURfU0laRSAqLworCisJcmV0dXJuIEVSUl9PSzsKK30K
Kworc3RhdGljIHZvaWQgdWtuZXRkZXZfaW5wdXQoc3RydWN0IHVrX25ldGRldiAqZGV2LAorCQkJ
ICAgdWludDE2X3QgcXVldWVfaWQgX191bnVzZWQsIHZvaWQgKmFyZ3ApCit7CisJc3RydWN0IG5l
dGlmICpuZiA9IChzdHJ1Y3QgbmV0aWYgKikgYXJncDsKKwlzdHJ1Y3QgdWtfbmV0YnVmICpuYjsK
KwlzdHJ1Y3QgcGJ1ZiAqcDsKKwlpbnQgcmV0OworCisJVUtfQVNTRVJUKGRldik7CisJVUtfQVNT
RVJUKG5mKTsKKwlVS19BU1NFUlQobmYtPmlucHV0KTsKKworCUxXSVBfREVCVUdGKE5FVElGX0RF
QlVHLCAoIiVzOiAlYyVjJXU6IFBvbGwgcmVjZWl2ZSBxdWV1ZS4uLlxuIiwKKwkJCQkgIF9fZnVu
Y19fLCBuZi0+bmFtZVswXSwgbmYtPm5hbWVbMV0sIG5mLT5udW0pKTsKKwlkbyB7CisJCXJldCA9
IHVrX25ldGRldl9yeF9vbmUoZGV2LCAwLCAmbmIpOworCQlMV0lQX0RFQlVHRihORVRJRl9ERUJV
RywKKwkJCSAgICAoIiVzOiAlYyVjJXU6IElucHV0IHN0YXR1cyAlZCAoJWMlYyVjKVxuIiwKKwkJ
CSAgICAgX19mdW5jX18sIG5mLT5uYW1lWzBdLCBuZi0+bmFtZVsxXSwgbmYtPm51bSwgcmV0LAor
CQkJICAgICB1a19uZXRkZXZfc3RhdHVzX3Rlc3Rfc2V0KHJldCwKKwkJCQkJCSAgICAgICBVS19O
RVRERVZfU1RBVFVTX1NVQ0NFU1MpCisJCQkgICAgID8gJ1MnIDogJy0nLAorCQkJICAgICB1a19u
ZXRkZXZfc3RhdHVzX3Rlc3Rfc2V0KHJldCwKKwkJCQkJCSAgICAgICBVS19ORVRERVZfU1RBVFVT
X01PUkUpCisJCQkgICAgID8gJ00nIDogJy0nLAorCQkJICAgICB1a19uZXRkZXZfc3RhdHVzX3Rl
c3Rfc2V0KHJldCwKKwkJCQkJCSAgICAgIFVLX05FVERFVl9TVEFUVVNfVU5ERVJSVU4pCisJCQkg
ICAgID8gJ1UnIDogJy0nKSk7CisJCWlmICh1bmxpa2VseShyZXQgPCAwKSkgeworCQkJLyoKKwkJ
CSAqIE91Y2gsIGFuIGVycm9yIGhhcHBlbmVkLiBXZSBjYW5ub3QgcmVjb3ZlciBmcm9tIGl0CisJ
CQkgKiBjdXJyZW50bHksIHNvIHdlIHdpbGwgdGhyb3cgYW4gZXJyb3IgbWVzc2FnZSwgYnJpbmcK
KwkJCSAqIHRoZSBpbnRlcmZhY2UgZG93biwgYW5kIGxlYXZlIG91ciBsb29wLgorCQkJICovCisJ
CQl1a19wcl9jcml0KCIlYyVjJXU6IFJlY2VpdmUgZXJyb3IgJWQuIFN0b3BwaW5nIGludGVyZmFj
ZS4uLlxuIiwKKwkJCQkgICBuZi0+bmFtZVswXSwgbmYtPm5hbWVbMV0sIG5mLT5udW0sIHJldCk7
CisJCQluZXRpZl9zZXRfZG93bihuZik7CisJCQlicmVhazsKKwkJfQorCQlpZiAodWtfbmV0ZGV2
X3N0YXR1c19ub3RyZWFkeShyZXQpKSB7CisJCQkvKiBObyAobW9yZSkgcGFja2V0cyByZWNlaXZl
ZCAqLworCQkJYnJlYWs7CisJCX0KKworCQlMV0lQX0RFQlVHRihORVRJRl9ERUJVRywKKwkJCSAg
ICAoIiVzOiAlYyVjJXU6IFJlY2VpdmVkICUiUFJJdTE2IiBieXRlc1xuIiwKKwkJCSAgICAgX19m
dW5jX18sIG5mLT5uYW1lWzBdLCBuZi0+bmFtZVsxXSwgbmYtPm51bSwKKwkJCSAgICAgbmItPmxl
bikpOworCisJCS8qIFNlbmQgcGFja2V0IHRvIGx3aXAgKi8KKyNpZiBFVEhfUEFEX1NJWkUKKwkJ
dWtfbmV0YnVmX2hlYWRlcihuYiwgRVRIX1BBRF9TSVpFKTsKKyNlbmRpZiAvKiBFVEhfUEFEX1NJ
WkUgKi8KKwkJcCA9IGx3aXBfbmV0YnVmX3RvX3BidWYobmIpOworCQlwLT5wYXlsb2FkID0gbmIt
PmRhdGE7CisJCXAtPnRvdF9sZW4gPSBwLT5sZW4gPSBuYi0+bGVuOworCQlpZiAodW5saWtlbHko
bmYtPmlucHV0KHAsIG5mKSAhPSBFUlJfT0spKSB7CisJCQkvKgorCQkJICogRHJvcCB0aGUgcGFj
a2V0IHRoYXQgd2UgY291bGQgbm90IHNlbmQgdG8gdGhlIHN0YWNrCisJCQkgKi8KKwkJCXVrX3By
X2VycigiJWMlYyV1OiBGYWlsZWQgdG8gZm9yd2FyZCBwYWNrZXQgdG8gbHdJUFxuIiwKKwkJCQkg
IG5mLT5uYW1lWzBdLCBuZi0+bmFtZVsxXSwgbmYtPm51bSk7CisJCQl1a19uZXRidWZfZnJlZV9z
aW5nbGUobmIpOworCQl9CisJfSB3aGlsZSAodWtfbmV0ZGV2X3N0YXR1c19tb3JlKHJldCkpOwor
fQorCit2b2lkIHVrbmV0ZGV2X3BvbGwoc3RydWN0IG5ldGlmICpuZikKK3sKKwlzdHJ1Y3QgdWtf
bmV0ZGV2ICpkZXY7CisKKwlVS19BU1NFUlQobmYpOworCS8qCisJICogVE9ETzogVW5mb3J0dW5h
dGVseSwgY2hlY2tpbmcgdGhlIGludGVyZmFjZSBuYW1lIGlzIGEgd2VhayBzYW5pdHkKKwkgKiBj
aGVjayB0aGF0IHVrbmV0ZGV2X3BvbGwoKSBpcyBjYWxsZWQgb24gYSBuZXRpZiB0aGF0IGlzIGRy
aXZlbiBieQorCSAqIHRoaXMgZHJpdmVyLi4uCisJICovCisJVUtfQVNTRVJUKG5mLT5uYW1lWzBd
ID09IFVLTkVUREVWX05FVElGX05BTUUwKTsKKwlVS19BU1NFUlQobmYtPm5hbWVbMV0gPT0gVUtO
RVRERVZfTkVUSUZfTkFNRTEpOworCisJZGV2ID0gbmV0aWZfdG9fdWtuZXRkZXYobmYpOworCVVL
X0FTU0VSVChkZXYpOworCisJdWtuZXRkZXZfaW5wdXQoZGV2LCAwLCBuZik7Cit9CisKKyNpZmRl
ZiBDT05GSUdfTFdJUF9OT1RIUkVBRFMKK3ZvaWQgdWtuZXRkZXZfcG9sbF9hbGwodm9pZCkKK3sK
KwlzdHJ1Y3QgbmV0aWYgKm5mOworCisJLyoKKwkgKiBUT0RPOiBXZSBhcmUgZ29pbmcgdGhyb3Vn
aCBhbGwgbmV0aWZzIGFuZCBjaGVjayB0aGUgaW50ZXJmYWNlIG5hbWUuCisJICogVGhpcyB3YXkg
d2UgYXJlIGZpZ3VyaW5nIG91dCB0aGF0IHRoZSBuZXRpZiBpcyBwcm92aWRlZCBieSBvdXIKKwkg
KiBkcml2ZXIuIFByb2JhYmx5IHdlIHNob3VsZCBmaW5kIGEgYmV0dGVyIGFuZCBtb3JlIHN0YWJs
ZSBzb2x1dGlvbiBhdAorCSAqIHNvbWUgcG9pbnQuLi4KKwkgKi8KKwlORVRJRl9GT1JFQUNIKG5m
KSB7CisJCWlmIChuZi0+bmFtZVswXSA9PSBVS05FVERFVl9ORVRJRl9OQU1FMAorCQkgICAgJiYg
bmYtPm5hbWVbMV0gPT0gVUtORVRERVZfTkVUSUZfTkFNRTEpCisJCQl1a25ldGRldl9wb2xsKG5m
KTsKKwl9Cit9CisKKyNlbHNlIC8qIENPTkZJR19MV0lQX05PVEhSRUFEUyAqLworCitzdGF0aWMg
dm9pZCB1a25ldGRldl91cGRvd24oc3RydWN0IG5ldGlmICpuZikKK3sKKwlzdHJ1Y3QgdWtfbmV0
ZGV2ICpkZXY7CisJaW50IHJldDsKKworCVVLX0FTU0VSVChuZik7CisJZGV2ID0gbmV0aWZfdG9f
dWtuZXRkZXYobmYpOworCVVLX0FTU0VSVChkZXYpOworCisJLyogRW5hYmxlIGFuZCBkaXNhYmxl
IGludGVycnVwdHMgYWNjb3JkaW5nIHRvIG5ldGlmJ3MgdXAvZG93biBzdGF0dXMgKi8KKwlpZiAo
bmYtPmZsYWdzICYgTkVUSUZfRkxBR19VUCkgeworCQlyZXQgPSB1a19uZXRkZXZfcnhxX2ludHJf
ZW5hYmxlKGRldiwgMCk7CisJCWlmIChyZXQgPCAwKSB7CisJCQlMV0lQX0RFQlVHRihORVRJRl9E
RUJVRywKKwkJCQkgICAgKCIlczogJWMlYyV1OiBGYWlsZWQgdG8gZW5hYmxlIHJ4IGludGVycnJ1
cHQgbW9kZSBvbiBuZXRkZXYgJXVcbiIsCisJCQkJICAgICBfX2Z1bmNfXywgbmYtPm5hbWVbMF0s
IG5mLT5uYW1lWzFdLAorCQkJCSAgICAgbmYtPm51bSwgdWtfbmV0ZGV2X2lkX2dldChkZXYpKSk7
CisJCX0gZWxzZSB7CisJCQlMV0lQX0RFQlVHRihORVRJRl9ERUJVRywKKwkJCQkgICAgKCIlczog
JWMlYyV1OiBFbmFibGVkIHJ4IGludGVycnVwdCBtb2RlIG9uIG5ldGRldiAldVxuIiwKKwkJCQkg
ICAgIF9fZnVuY19fLCBuZi0+bmFtZVswXSwgbmYtPm5hbWVbMV0sCisJCQkJICAgICBuZi0+bnVt
LCB1a19uZXRkZXZfaWRfZ2V0KGRldikpKTsKKwkJfQorCisJCWlmIChyZXQgPT0gMSkgeworCQkJ
LyoKKwkJCSAqIHVrX25ldGRldl9yeHFfaW50cl9lbmFibGUoKSB0b2xkIHVzIHRoYXQgd2UgbmVl
ZCB0bworCQkJICogZmx1c2ggdGhlIHJlY2VpZXZlIHF1ZXVlIGJlZm9yZSBpbnRlcnJ1cHRzIGFy
ZQorCQkJICogZW5hYmxlZC4gRm9yIHRoaXMgcHVycG9zZSB3ZSBkbyBhbiBpbml0aWFsIHBvbGwu
CisJCQkgKi8KKwkJCXVrbmV0ZGV2X3BvbGwobmYpOworCQl9CisJfSBlbHNlIHsKKwkJdWtfbmV0
ZGV2X3J4cV9pbnRyX2Rpc2FibGUoZGV2LCAwKTsKKwkJTFdJUF9ERUJVR0YoTkVUSUZfREVCVUcs
CisJCQkgICAgKCIlczogJWMlYyV1OiBEaXNhYmxlZCByeCBpbnRlcnJ1cHRzIG9uIG5ldGRldiAl
dVxuIiwKKwkJCSAgICAgX19mdW5jX18sIG5mLT5uYW1lWzBdLCBuZi0+bmFtZVsxXSwKKwkJCSAg
ICAgbmYtPm51bSwgdWtfbmV0ZGV2X2lkX2dldChkZXYpKSk7CisKKwl9Cit9CisjZW5kaWYgLyog
Q09ORklHX0xXSVBfTk9USFJFQURTICovCisKK2Vycl90IHVrbmV0ZGV2X2luaXQoc3RydWN0IG5l
dGlmICpuZikKK3sKKwlzdHJ1Y3QgdWtfYWxsb2MgKmEgPSBOVUxMOworCXN0cnVjdCB1a19uZXRk
ZXYgKmRldjsKKwlzdHJ1Y3QgdWtfbmV0ZGV2X2NvbmYgZGV2X2NvbmY7CisJc3RydWN0IHVrX25l
dGRldl9yeHF1ZXVlX2NvbmYgcnhxX2NvbmY7CisJc3RydWN0IHVrX25ldGRldl90eHF1ZXVlX2Nv
bmYgdHhxX2NvbmY7CisJc3RydWN0IHVrX25ldGRldl9pbmZvIGluZm87CisJY29uc3Qgc3RydWN0
IHVrX2h3YWRkciAqaHdhZGRyOworCXVuc2lnbmVkIGludCBpOworCWludCByZXQ7CisKKwlVS19B
U1NFUlQobmYpOworCWRldiA9IG5ldGlmX3RvX3VrbmV0ZGV2KG5mKTsKKwlVS19BU1NFUlQoZGV2
KTsKKworCUxXSVBfQVNTRVJUKCJ1a25ldGRldiBuZWVkcyBhbiBpbnB1dCBjYWxsYmFjayAobmV0
aWZfaW5wdXQgb3IgdGNwaXBfaW5wdXQpIiwKKwkJICAgIG5mLT5pbnB1dCAhPSBOVUxMKTsKKwor
CS8qIE5ldGRldiBoYXMgdG8gYmUgaW4gdW5jb25maWd1cmVkIHN0YXRlICovCisJaWYgKHVrX25l
dGRldl9zdGF0ZV9nZXQoZGV2KSAhPSBVS19ORVRERVZfVU5DT05GSUdVUkVEKSB7CisJCUxXSVBf
REVCVUdGKE5FVElGX0RFQlVHLAorCQkJICAgICgiJXM6IE5ldGRldiAldSBub3QgaW4gdW5jb2Zp
Z3VyZWQgc3RhdGVcbiIsCisJCQkgICAgIF9fZnVuY19fLCB1a19uZXRkZXZfaWRfZ2V0KGRldikp
KTsKKwkJcmV0dXJuIEVSUl9JU0NPTk47CisJfQorCisJLyogSW50ZXJmYWNlIG5hbWUsIHRoZSBp
bnRlcmZhY2UgbnVtYmVyIChuZi0+bnVtKSBpcyBhc3NpZ25lZCBieSBsd2lwICovCisJbmYtPm5h
bWVbMF0gPSBVS05FVERFVl9ORVRJRl9OQU1FMDsKKwluZi0+bmFtZVsxXSA9IFVLTkVUREVWX05F
VElGX05BTUUxOworCisJLyoKKwkgKiBCcmluZyB1cCB1a25ldGRldgorCSAqIE5vdGU6IFdlIHVz
ZSB0aGUgZGVmYXVsdCBhbGxvY2F0b3IgZm9yIHNldHRpbmcgdXAgdGhlIHJ4L3R4IHF1ZXVlcwor
CSAqLworCS8qIFRPRE86IEluIGNhc2UgdGhlIGRldmljZSBpbml0aWFsaXphdGlvbiBzaG91bGQg
aGFwcGVuIG1hbnVhbGx5IGJlZm9yZQorCSAqICAgICAgIGF0dGFjaGluZyB0byBsd2lwLCB3ZSBy
ZXF1aXJlIGFub3RoZXIgaW5pdCBmdW5jdGlvbiB0aGF0IHNraXBzCisJICogICAgICAgdGhpcyBp
bml0aWFsaXphdGlvbiBzdGVwcy4KKwkgKi8KKwlhID0gdWtfYWxsb2NfZ2V0X2RlZmF1bHQoKTsK
KwlpZiAoIWEpCisJCXJldHVybiBFUlJfTUVNOworCisJLyogR2V0IGRldmljZSBpbmZvcm1hdGlv
biAqLworCXVrX25ldGRldl9pbmZvX2dldChkZXYsICZpbmZvKTsKKwlpZiAoIWluZm8ubWF4X3J4
X3F1ZXVlcyB8fCAhaW5mby5tYXhfdHhfcXVldWVzKQorCQlyZXR1cm4gRVJSX0lGOworCisJLyoK
KwkgKiBVcGRhdGUgb3VyIGdsb2JhbCAocnh8dHgpX2hlYWRyb29tIHNldHRpbmcgdGhhdCB3ZSB1
c2UgZm9yCisJICogYnVmZmVyIGFsbG9jYXRpb25zCisJICovCisJcnhfaGVhZHJvb20gPSAocnhf
aGVhZHJvb20gPCBpbmZvLm5iX2VuY2FwX3J4KQorCQkgICAgICA/IGluZm8ubmJfZW5jYXBfcngg
OiByeF9oZWFkcm9vbTsKKwl0eF9oZWFkcm9vbSA9ICh0eF9oZWFkcm9vbSA8IGluZm8ubmJfZW5j
YXBfdHgpCisJCSAgICAgID8gaW5mby5uYl9lbmNhcF90eCA6IHR4X2hlYWRyb29tOworCUxXSVBf
REVCVUdGKE5FVElGX0RFQlVHLAorCQkgICAgKCIlczogJWMlYyV1OiBOZWVkIGhlYWRyb29tIHJ4
OiUiUFJJdTE2IiwgdHg6JSJQUkl1MTYiXG4iLAorCQkgICAgIF9fZnVuY19fLCBuZi0+bmFtZVsw
XSwgbmYtPm5hbWVbMV0sIG5mLT5udW0sCisJCSAgICAgaW5mby5uYl9lbmNhcF9yeCwgaW5mby5u
Yl9lbmNhcF90eCkpOworCisJLyoKKwkgKiBEZXZpY2UgY29uZmlndXJhdGlvbiwKKwkgKiB3ZSB3
YW50IHRvIHVzZSBqdXN0IG9uZSBxdWV1ZSBmb3IgZWFjaCBkaXJlY3Rpb24KKwkgKi8KKwlkZXZf
Y29uZi5uYl9yeF9xdWV1ZXMgPSAxOworCWRldl9jb25mLm5iX3R4X3F1ZXVlcyA9IDE7CisJcmV0
ID0gdWtfbmV0ZGV2X2NvbmZpZ3VyZShkZXYsICZkZXZfY29uZik7CisJaWYgKHJldCA8IDApIHsK
KwkJTFdJUF9ERUJVR0YoTkVUSUZfREVCVUcsCisJCQkgICAgKCIlczogJWMlYyV1OiBGYWlsZWQg
dG8gY29uZmlndXJlIG5ldGRldiAldVxuIiwKKwkJCSAgICAgX19mdW5jX18sIG5mLT5uYW1lWzBd
LCBuZi0+bmFtZVsxXSwgbmYtPm51bSwKKwkJCSAgICAgdWtfbmV0ZGV2X2lkX2dldChkZXYpKSk7
CisJCXJldHVybiBFUlJfSUY7CisJfQorCisJLyoKKwkgKiBSZWNlaXZlIHF1ZXVlLAorCSAqIHVz
ZSBkcml2ZXIgZGVmYXVsdCBkZXNjcmlwdG9ycworCSAqLworCXJ4cV9jb25mLmEgPSBhOworCXJ4
cV9jb25mLmFsbG9jX3J4cGt0cyA9IG5ldGlmX2FsbG9jX3J4cGt0czsKKwlyeHFfY29uZi5hbGxv
Y19yeHBrdHNfYXJncCA9IGE7CisjaWZkZWYgQ09ORklHX0xXSVBfTk9USFJFQURTCisJLyoKKwkg
KiBJbiBtYWlubG9vcCBtb2RlLCB3ZSB3aWxsIG5vdCB1c2UgaW50ZXJydXB0cy4KKwkgKi8KKwly
eHFfY29uZi5jYWxsYmFjayA9IE5VTEw7CisJcnhxX2NvbmYuY2FsbGJhY2tfY29va2llID0gTlVM
TDsKKyNlbHNlICAvKiBDT05GSUdfTFdJUF9OT1RIUkVBRFMgKi8KKwlyeHFfY29uZi5jYWxsYmFj
ayA9IHVrbmV0ZGV2X2lucHV0OworCXJ4cV9jb25mLmNhbGxiYWNrX2Nvb2tpZSA9IG5mOworI2lm
ZGVmIENPTkZJR19MSUJVS05FVERFVl9ESVNQQVRDSEVSVEhSRUFEUworCXJ4cV9jb25mLnMgPSB1
a19zY2hlZF9nZXRfZGVmYXVsdCgpOworCWlmICghcnhxX2NvbmYucykKKwkJcmV0dXJuIEVSUl9J
RjsKKworI2VuZGlmIC8qIENPTkZJR19MSUJVS05FVERFVl9ESVNQQVRDSEVSVEhSRUFEUyAqLwor
I2VuZGlmIC8qIENPTkZJR19MV0lQX05PVEhSRUFEUyAqLworCXJldCA9IHVrX25ldGRldl9yeHFf
Y29uZmlndXJlKGRldiwgMCwgMCwgJnJ4cV9jb25mKTsKKwlpZiAocmV0IDwgMCkgeworCQlMV0lQ
X0RFQlVHRihORVRJRl9ERUJVRywKKwkJCSAgICAoIiVzOiAlYyVjJXU6IEZhaWxlZCB0byBjb25m
aWd1cmUgcnggcXVldWUgb2YgbmV0ZGV2ICV1XG4iLAorCQkJICAgICBfX2Z1bmNfXywgbmYtPm5h
bWVbMF0sIG5mLT5uYW1lWzFdLCBuZi0+bnVtLAorCQkJICAgICB1a19uZXRkZXZfaWRfZ2V0KGRl
dikpKTsKKwkJcmV0dXJuIEVSUl9JRjsKKwl9CisKKwkvKgorCSAqIFRyYW5zbWl0IHF1ZXVlLAor
CSAqIHVzZSBkcml2ZXIgZGVmYXVsdCBkZXNjcmlwdG9ycworCSAqLworCXR4cV9jb25mLmEgPSBh
OworCXJldCA9IHVrX25ldGRldl90eHFfY29uZmlndXJlKGRldiwgMCwgMCwgJnR4cV9jb25mKTsK
KwlpZiAocmV0IDwgMCkgeworCQlMV0lQX0RFQlVHRihORVRJRl9ERUJVRywKKwkJCSAgICAoIiVz
OiAlYyVjJXU6IEZhaWxlZCB0byBjb25maWd1cmUgdHggcXVldWUgb2YgbmV0ZGV2ICV1XG4iLAor
CQkJICAgICBfX2Z1bmNfXywgbmYtPm5hbWVbMF0sIG5mLT5uYW1lWzFdLCBuZi0+bnVtLAorCQkJ
ICAgICB1a19uZXRkZXZfaWRfZ2V0KGRldikpKTsKKwkJcmV0dXJuIEVSUl9JRjsKKwl9CisKKwkv
KiBTdGFydCBpbnRlcmZhY2UgKi8KKwlyZXQgPSB1a19uZXRkZXZfc3RhcnQoZGV2KTsKKwlpZiAo
cmV0IDwgMCkgeworCQlMV0lQX0RFQlVHRihORVRJRl9ERUJVRywKKwkJCSAgICAoIiVzOiAlYyVj
JXU6IEZhaWxlZCB0byBzdGFydCBuZXRkZXYgJXVcbiIsCisJCQkgICAgIF9fZnVuY19fLCBuZi0+
bmFtZVswXSwgbmYtPm5hbWVbMV0sIG5mLT5udW0sCisJCQkgICAgIHVrX25ldGRldl9pZF9nZXQo
ZGV2KSkpOworCQlyZXR1cm4gRVJSX0lGOworCX0KKworCS8qIERyaXZlciBjYWxsYmFja3MgKi8K
KyNpZiBMV0lQX0lQVjQKKwluZi0+b3V0cHV0ID0gZXRoYXJwX291dHB1dDsKKyNlbmRpZiAvKiBM
V0lQX0lQVjQgKi8KKyNpZiBMV0lQX0lQVjYKKwluZi0+b3V0cHV0X2lwNiA9IGV0aGlwNl9vdXRw
dXQ7CisjZW5kaWYgLyogTFdJUF9JUFY2ICovCisJbmYtPmxpbmtvdXRwdXQgPSB1a25ldGRldl9v
dXRwdXQ7CisKKwkvKiBUT0RPOiBTZXQgcmVtb3ZlIGNhbGxiYWNrICovCisKKwkvKiBEZXZpY2Ug
Y2FwYWJpbGl0aWVzICovCisJbmV0aWZfc2V0X2ZsYWdzKG5mLCAoTkVUSUZfRkxBR19CUk9BRENB
U1QKKwkJCSAgICAgfCBORVRJRl9GTEFHX0VUSEFSUAorCQkJICAgICB8IE5FVElGX0ZMQUdfTElO
S19VUCkpOworCUxXSVBfREVCVUdGKE5FVElGX0RFQlVHLAorCQkgICAgKCIlczogJWMlYyV1OiBm
bGFnczogJSJQUkl4OCJcbiIsCisJCSAgICAgX19mdW5jX18sIG5mLT5uYW1lWzBdLCBuZi0+bmFt
ZVsxXSwgbmYtPm51bSwgbmYtPmZsYWdzKSk7CisKKyNpZiBMV0lQX0NIRUNLU1VNX0NUUkxfUEVS
X05FVElGCisJLyoKKwkgKiBDaGVja3N1bSBzZXR0aW5ncworCSAqIFRPRE86IGxpYnVrbmV0ZGV2
IGRvZXMgbm90IHN1cHBvcnQgY2hlY2tzdW0gY2FwYWJpbGl0aWVzIHlldC4KKwkgKiAgICAgICBC
ZWNhdXNlIG9mIHRoaXMsIHdlIG5lZWQgdG8gY2FsY3VsYXRlIHRoZSBjaGVja3N1bSBmb3IgZXZl
cnkKKwkgKiAgICAgICBvdXRnb2luZyBwYWNrZXQgaW4gc29mdHdhcmUuIFdlIGFzc3VtZSB0aGF0
IHdlIHJlY2VpdmUgcGFja2V0cworCSAqICAgICAgIGZyb20gYSB2aXJ0dWFsIGludGVyZmFjZSwg
c28gdGhlIGhvc3Qgd2FzIGRvaW5nIGEgY2hlY2sgZm9yIHVzCisJICogICAgICAgYWxyZWFkeS4g
SW4gY2FzZSBvZiBndWVzdC10by1ndWVzdCBjb21tdW5pY2F0aW9uLCB0aGUgY2hlY2tzdW0KKwkg
KiAgICAgICBmaWVsZCBtYXkgYmUgaW5jb3JyZWN0IGJlY2F1c2UgdGhlIG90aGVyIGd1ZXN0IGV4
cGVjdHMgdGhhdCB0aGUKKwkgKiAgICAgICBob3N0IGlzIG9mZmxvYWRpbmcgdGhlIGNhbGN1bGF0
aW9uIHRvIGhhcmR3YXJlIGFzIHNvb24gYXMgYQorCSAqICAgICAgIHBhY2tldCBsZWF2ZXMgdGhl
IHBoeXNpY2FsIGhvc3QgbWFjaGluZS4gQXQgdGhpcyBwb2ludCwgdGhlCisJICogICAgICAgYmVz
dCB3ZSBjYW4gZG8gaXMgbm90IHRvIGNoZWNrIGFueSBjaGVja3N1bXMgb24gaW5jb21pbmcKKwkg
KiAgICAgICB0cmFmZmljIGFuZCBhc3N1bWUgZXZlcnl0aGluZyBpcyBmaW5lLgorCSAqLworCU5F
VElGX1NFVF9DSEVDS1NVTV9DVFJMKG5mLCAoTkVUSUZfQ0hFQ0tTVU1fR0VOX0lQCisJCQkJICAg
ICB8IE5FVElGX0NIRUNLU1VNX0dFTl9VRFAKKwkJCQkgICAgIHwgTkVUSUZfQ0hFQ0tTVU1fR0VO
X1RDUAorCQkJCSAgICAgfCBORVRJRl9DSEVDS1NVTV9HRU5fSUNNUAorCQkJCSAgICAgfCBORVRJ
Rl9DSEVDS1NVTV9HRU5fSUNNUDYpKTsKKwlMV0lQX0RFQlVHRihORVRJRl9ERUJVRywKKwkJICAg
ICgiJXM6ICVjJWMldTogY2hrc3VtX2ZsYWdzOiAlIlBSSXgxNiJcbiIsCisJCSAgICAgX19mdW5j
X18sIG5mLT5uYW1lWzBdLCBuZi0+bmFtZVsxXSwgbmYtPm51bSwKKwkJICAgICBuZi0+Y2hrc3Vt
X2ZsYWdzKSk7CisjZW5kaWYgLyogTFdJUF9DSEVDS1NVTV9DVFJMX1BFUl9ORVRJRiAqLworCisJ
LyogTUFDIGFkZHJlc3MgKi8KKwlVS19BU1NFUlQoTkVUSUZfTUFYX0hXQUREUl9MRU4gPj0gVUtf
TkVUREVWX0hXQUREUl9MRU4pOworCWh3YWRkciA9IHVrX25ldGRldl9od2FkZHJfZ2V0KGRldik7
CisJVUtfQVNTRVJUKGh3YWRkcik7CisJbmYtPmh3YWRkcl9sZW4gPSBVS19ORVRERVZfSFdBRERS
X0xFTjsKKwlmb3IgKGkgPSAwOyBpIDwgVUtfTkVUREVWX0hXQUREUl9MRU47ICsraSkKKwkJbmYt
Pmh3YWRkcltpXSA9IGh3YWRkci0+YWRkcl9ieXRlc1tpXTsKKyNpZiBVS19ORVRERVZfSFdBRERS
X0xFTiA9PSA2CisJTFdJUF9ERUJVR0YoTkVUSUZfREVCVUcsCisJCSAgICAoIiVzOiAlYyVjJXU6
IEhhcmR3YXJlIGFkZHJlc3M6ICUwMiJQUkl4OCI6JTAyIlBSSXg4IjolMDIiUFJJeDgiOiUwMiJQ
Ukl4OCI6JTAyIlBSSXg4IjolMDIiUFJJeDgiXG4iLAorCQkgICAgIF9fZnVuY19fLCBuZi0+bmFt
ZVswXSwgbmYtPm5hbWVbMV0sIG5mLT5udW0sCisJCSAgICAgbmYtPmh3YWRkclswXSwgbmYtPmh3
YWRkclsxXSwgbmYtPmh3YWRkclsyXSwKKwkJICAgICBuZi0+aHdhZGRyWzNdLCBuZi0+aHdhZGRy
WzRdLCBuZi0+aHdhZGRyWzVdKSk7CisjZWxzZSAvKiBVS19ORVRERVZfSFdBRERSX0xFTiAqLwor
CUxXSVBfREVCVUdGKE5FVElGX0RFQlVHLAorCQkgICAgKCIlczogJWMlYyV1OiBIYXJkd2FyZSBh
ZGRyZXNzIHNldFxuIiwKKwkJICAgICBfX2Z1bmNfXywgbmYtPm5hbWVbMF0sIG5mLT5uYW1lWzFd
LCBuZi0+bnVtKSk7CisjZW5kaWYgLyogVUtfTkVUREVWX0hXQUREUl9MRU4gKi8KKworCS8qIE1h
eGltdW0gdHJhbnNmZXIgdW5pdCAqLworCW5mLT5tdHUgPSB1a19uZXRkZXZfbXR1X2dldChkZXYp
OworCVVLX0FTU0VSVChuZi0+bXR1KTsKKwlMV0lQX0RFQlVHRihORVRJRl9ERUJVRywKKwkJICAg
ICgiJXM6ICVjJWMldTogTVRVOiAldVxuIiwKKwkJICAgICBfX2Z1bmNfXywgbmYtPm5hbWVbMF0s
IG5mLT5uYW1lWzFdLCBuZi0+bnVtLAorCQkgICAgIG5mLT5tdHUpKTsKKworI2lmbmRlZiBDT05G
SUdfTFdJUF9OT1RIUkVBRFMKKwkvKgorCSAqIFdlIHdpbGwgdXNlIHRoZSBzdGF0dXMgdXBkYXRl
IGNhbGxiYWNrIHRvIGVuYWJsZSBhbmQgZGlzYWJsZWQKKwkgKiByZWNlaXZlIHF1ZXVlIGludGVy
cnVwdHMKKwkgKi8KKwluZXRpZl9zZXRfc3RhdHVzX2NhbGxiYWNrKG5mLCB1a25ldGRldl91cGRv
d24pOworI2VuZGlmIC8qICFDT05GSUdfTFdJUF9OT1RIUkVBRFMgKi8KKworCS8qCisJICogSW5p
dGlhbGl6ZSB0aGUgc25tcCB2YXJpYWJsZXMgYW5kIGNvdW50ZXJzIGluc2lkZSB0aGUgc3RydWN0
IG5ldGlmLgorCSAqIFRoZSBsYXN0IGFyZ3VtZW50IGlzIHRoZSBsaW5rIHNwZWVkLCBpbiB1bml0
cyBvZiBiaXRzIHBlciBzZWNvbmQuCisJICovCisJTkVUSUZfSU5JVF9TTk1QKG5mLCBzbm1wX2lm
VHlwZV9ldGhlcm5ldF9jc21hY2QsIFVLTkVUREVWX0JQUyk7CisJTFdJUF9ERUJVR0YoTkVUSUZf
REVCVUcsCisJCSAgICAoIiVzOiAlYyVjJXU6IExpbmsgc3BlZWQ6ICUiUFJJdTMyIiBicHNcbiIs
CisJCSAgICAgX19mdW5jX18sIG5mLT5uYW1lWzBdLCBuZi0+bmFtZVsxXSwgbmYtPm51bSwKKwkJ
ICAgICBVS05FVERFVl9CUFMpKTsKKworCXJldHVybiBFUlJfT0s7Cit9CisKKyNpZiBDT05GSUdf
TFdJUF9OT1RIUkVBRFMKKyNkZWZpbmUgTkVUSUZfSU5QVVQgZXRoZXJuZXRfaW5wdXQKKyNlbHNl
IC8qIENPTkZJR19MV0lQX05PVEhSRUFEUyAqLworI2RlZmluZSBORVRJRl9JTlBVVCB0Y3BpcF9p
bnB1dAorI2VuZGlmIC8qQ09ORklHX0xXSVBfTk9USFJFQURTICovCisKK3N0cnVjdCBuZXRpZiAq
dWtuZXRkZXZfYWRkaWYoc3RydWN0IHVrX25ldGRldiAqbgorI2lmIExXSVBfSVBWNAorCQkJICAg
ICAsCisJCQkgICAgIGNvbnN0IGlwNF9hZGRyX3QgKmlwYWRkciwKKwkJCSAgICAgY29uc3QgaXA0
X2FkZHJfdCAqbmV0bWFzaywKKwkJCSAgICAgY29uc3QgaXA0X2FkZHJfdCAqZ3cKKyNlbmRpZiAv
KiBMV0lQX0lQVjQgKi8KKwkpCit7CisJLyoKKwkgKiBUaGlzIHBvaW50ZXIgYW5kIFVLX1JFQURf
T05DRSBvbiBpdCBpcyBhbiB1Z2x5IHdvcmthcm91bmQKKwkgKiBhZ2FpbnN0IGEgcHJldHR5IHdl
aXJkIHByb2JsZW0uIFdpdGhvdXQgaXQsIHRoZSBsYXN0CisJICogcGFyYW1ldGVyIG9mIG5ldGlm
X2FkZCBwYXNzZWQgYXMgTlVMTC4gSXQgc2VlbXMgdG8gYmUgYQorCSAqIGJ1aWxkIHRpbWUgcHJv
YmxlbSBiZWNhdXNlOgorCSAqCisJICogLSBNb3ZpbmcgImlucHV0IiBwYXJhbWV0ZXIgdG8gdGhl
IGZpcnN0IHBvc2l0aW9ucyBoZWxwcworCSAqIC0gUmVtb3Zpbmcgb25lIHBhcmFtZXRlciBoZWxw
cy4gU2VlbXMgZG9lcyBub3QgbWF0dGVyIHdoaWNoCisJICogLSBBbiBleHRyYSBwYXJhbWV0ZXIg
YWRkZWQgYWZ0ZXIgImlucHV0IiB3b3JrcyB3ZWxsLiBBbmQKKwkgKiAgIGlucHV0IGlzIHN0aWxs
IE5VTEwgaW4gdGhpcyBjYXNlCisJICogLSBTd2FwcGluZyAiaW5pdCIgYW5kICJpbnB1dCIgaGVs
cHMKKwkgKi8KKwlzdGF0aWMgY29uc3Qgdm9pZCAqcGV0aGVybmV0X2lucHV0ID0gTkVUSUZfSU5Q
VVQ7CisJc3RydWN0IG5ldGlmICpuZjsKKwlzdHJ1Y3QgbmV0aWYgKnJldDsKKworCW5mID0gbWVt
X2NhbGxvYygxLCBzaXplb2YoKm5mKSk7CisJaWYgKCFuZikKKwkJcmV0dXJuIE5VTEw7CisKKwly
ZXQgPSBuZXRpZl9hZGQobmYsCisjaWYgTFdJUF9JUFY0CisJCQlpcGFkZHIsIG5ldG1hc2ssIGd3
LAorI2VuZGlmIC8qIExXSVBfSVBWNCAqLworCQkJbiwgdWtuZXRkZXZfaW5pdCwgVUtfUkVBRF9P
TkNFKHBldGhlcm5ldF9pbnB1dCkpOworCVVLX0FTU0VSVChuZi0+aW5wdXQpOworCisJaWYgKCFy
ZXQpIHsKKwkJbWVtX2ZyZWUobmYpOworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwlyZXR1cm4gcmV0
OworfQotLSAKMi4yMC4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVu
cHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZv
L21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Thu Feb 07 23:01:51 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 07 Feb 2019 23:01:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1grsg3-0004hS-QG; Thu, 07 Feb 2019 23:01:51 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=3EZI=QO=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1grsg2-0004hD-TD
 for minios-devel@lists.xen.org; Thu, 07 Feb 2019 23:01:50 +0000
X-Inumbo-ID: 58a54be2-2b2c-11e9-9507-134af86ab043
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 58a54be2-2b2c-11e9-9507-134af86ab043;
 Thu, 07 Feb 2019 23:01:48 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 7901B104DAA;
 Fri,  8 Feb 2019 00:01:47 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id B_3peKW3WTWa; Fri,  8 Feb 2019 00:01:47 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 584EF104DA5
 for <minios-devel@lists.xen.org>; Fri,  8 Feb 2019 00:01:45 +0100 (CET)
Received: from localhost.localdomain (10.7.0.213) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 8 Feb
 2019 00:01:45 +0100
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Fri, 8 Feb 2019 00:00:35 +0100
Message-ID: <20190207230035.29861-6-simon.kuenzer@neclab.eu>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190207230035.29861-1-simon.kuenzer@neclab.eu>
References: <20190207230035.29861-1-simon.kuenzer@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.7.0.213]
Subject: [Minios-devel] [UNIKRAFT/LIBLWIP PATCH 5/5] Netif status print
 callback
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Simon Kuenzer <simon.kuenzer@neclab.eu>, sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SW50cm9kdWNlIGEgc3RhdHVzIHByaW50IGhvb2sgdG8gYWxsIG5ldGlmcyBvcGVyYXRlZCBieSB0
aGUgbHdJUApzdGFjay4gU3RhdGUgY2hhbmdlcyAoZS5nLiwgYXNzaWduaW5nIG9mIGFuIElQLCBi
cmluZ2luZyBkZXZpY2UgdXAgb3IKZG93bikgYXJlIHByaW50ZWQgdG8gdGhlIHN0YW5kYXJkIGNv
bnNvbGUuIEJlY2F1c2UgdGhlIHN0YWNrIGlzIG5vdApwcmludGluZyBhbnkgbWVzc2FnZSB0byB0
aGUgY29uc29sZSB3aXRoIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24sIHdlCmVuYWJsZSB0aGlz
IHByaW50IGhvb2sgYXMgZGVmYXVsdC4KClNpZ25lZC1vZmYtYnk6IFNpbW9uIEt1ZW56ZXIgPHNp
bW9uLmt1ZW56ZXJAbmVjbGFiLmV1PgotLS0KIENvbmZpZy51ayAgICAgICAgICB8IDEzICsrKysr
KysrKwogaW5jbHVkZS9sd2lwb3B0cy5oIHwgIDYgKysrKysKIGluaXQuYyAgICAgICAgICAgICB8
IDY2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDMgZmls
ZXMgY2hhbmdlZCwgODUgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL0NvbmZpZy51ayBiL0Nv
bmZpZy51awppbmRleCBhY2ZlM2VmLi5hMGRiNDFkIDEwMDY0NAotLS0gYS9Db25maWcudWsKKysr
IGIvQ29uZmlnLnVrCkBAIC02Nyw2ICs2NywxOSBAQCBjb25maWcgTFdJUF9IRUFQCiAjCWJvb2wg
Ik1lbW9yeSBwb29scyIKIGVuZGNob2ljZQogCitjb25maWcgTFdJUF9ORVRJRl9FWFRfU1RBVFVT
X0NBTExCQUNLCisJYm9vbCAiTmV0aWYgZXh0ZW5kZWQgc3RhdHVzIGNhbGxiYWNrIEFQSSIKKwlk
ZWZhdWx0IHkKKwloZWxwCisJCVN1cHBvcnQgZXh0ZW5kZWQgc3RhdHVzIGNhbGxiYWNrcyB0byBu
ZXRpZiByZWxhdGVkIGV2ZW50cy4KKworY29uZmlnIExXSVBfTkVUSUZfU1RBVFVTX1BSSU5UCisJ
Ym9vbCAiUHJpbnQgbmV0aWYgc3RhdHVzIHVwZGF0ZXMiCisJZGVwZW5kcyBvbiBMV0lQX05FVElG
X0VYVF9TVEFUVVNfQ0FMTEJBQ0sKKwlkZWZhdWx0IHkKKwloZWxwCisJCVByaW50IG5ldGlmIHN0
YXR1cyBjaGFuZ2VzIHRvIHN0YW5kYXJkIGNvbnNvbGUKKwogY29uZmlnIExXSVBfSVBWNAogCWJv
b2wgIklQdjQgc3VwcG9ydCIKIAlkZWZhdWx0IHkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbHdpcG9w
dHMuaCBiL2luY2x1ZGUvbHdpcG9wdHMuaAppbmRleCA3NDliMmE5Li5jOTRjMjNkIDEwMDY0NAot
LS0gYS9pbmNsdWRlL2x3aXBvcHRzLmgKKysrIGIvaW5jbHVkZS9sd2lwb3B0cy5oCkBAIC04OSw2
ICs4OSwxMiBAQCB2b2lkIHN5c19mcmVlKHZvaWQgKnB0cik7CiAjZGVmaW5lIExXSVBfVElNRVZB
TF9QUklWQVRFIDAKICNkZWZpbmUgTFdJUF9ORVRJRl9TVEFUVVNfQ0FMTEJBQ0sgMQogCisjaWYg
Q09ORklHX0xXSVBfTkVUSUZfRVhUX1NUQVRVU19DQUxMQkFDSworI2RlZmluZSBMV0lQX05FVElG
X0VYVF9TVEFUVVNfQ0FMTEJBQ0sgMQorI2Vsc2UKKyNkZWZpbmUgTFdJUF9ORVRJRl9FWFRfU1RB
VFVTX0NBTExCQUNLIDAKKyNlbmRpZiAvKiBDT05GSUdfTFdJUF9ORVRJRl9FWFRfU1RBVFVTX0NB
TExCQUNLICovCisKIC8qKgogICogQVJQIG9wdGlvbnMKICAqLwpkaWZmIC0tZ2l0IGEvaW5pdC5j
IGIvaW5pdC5jCmluZGV4IDY1ZDU2YjYuLmE1ODU0YjggMTAwNjQ0Ci0tLSBhL2luaXQuYworKysg
Yi9pbml0LmMKQEAgLTQ1LDYgKzQ1LDY3IEBACiAjZW5kaWYgLyogQ09ORklHX0xXSVBfTk9USFJF
QURTICovCiAjaW5jbHVkZSAibmV0aWYvdWtuZXRkZXYuaCIKIAorI2lmIExXSVBfTkVUSUZfRVhU
X1NUQVRVU19DQUxMQkFDSyAmJiBDT05GSUdfTFdJUF9ORVRJRl9TVEFUVVNfUFJJTlQKKyNpbmNs
dWRlIDxzdGRpby5oPgorCitzdGF0aWMgdm9pZCBfbmV0aWZfc3RhdHVzX3ByaW50KHN0cnVjdCBu
ZXRpZiAqbmYsIG5ldGlmX25zY19yZWFzb25fdCByZWFzb24sCisJCQkJY29uc3QgbmV0aWZfZXh0
X2NhbGxiYWNrX2FyZ3NfdCAqYXJncykKK3sKKwlpZiAocmVhc29uICYgTFdJUF9OU0NfTkVUSUZf
QURERUQpCisJCXByaW50ZigiJWMlYyV1OiBBZGRlZFxuIiwKKwkJICAgICAgIG5mLT5uYW1lWzBd
LCBuZi0+bmFtZVsxXSwgbmYtPm51bSk7CisJaWYgKHJlYXNvbiAmIExXSVBfTlNDX05FVElGX1JF
TU9WRUQpCisJCXByaW50ZigiJWMlYyV1OiBSZW1vdmVkXG4iLAorCQkgICAgICAgbmYtPm5hbWVb
MF0sIG5mLT5uYW1lWzFdLCBuZi0+bnVtKTsKKwlpZiAocmVhc29uICYgTFdJUF9OU0NfTElOS19D
SEFOR0VEKQorCQlwcmludGYoIiVjJWMldTogTGluayBpcyAlc1xuIiwKKwkJICAgICAgIG5mLT5u
YW1lWzBdLCBuZi0+bmFtZVsxXSwgbmYtPm51bSwKKwkJICAgICAgIGFyZ3MtPmxpbmtfY2hhbmdl
ZC5zdGF0ZSA/ICJ1cCIgOiAiZG93biIpOworCWlmIChyZWFzb24gJiBMV0lQX05TQ19TVEFUVVNf
Q0hBTkdFRCkKKwkJcHJpbnRmKCIlYyVjJXU6IEludGVyZmFjZSBpcyAlc1xuIiwKKwkJICAgICAg
IG5mLT5uYW1lWzBdLCBuZi0+bmFtZVsxXSwgbmYtPm51bSwKKwkJICAgICAgIGFyZ3MtPnN0YXR1
c19jaGFuZ2VkLnN0YXRlID8gInVwIiA6ICJkb3duIik7CisKKyNpZiBMV0lQX0lQVjQKKwlpZiAo
KHJlYXNvbiAmIExXSVBfTlNDX0lQVjRfU0VUVElOR1NfQ0hBTkdFRCkKKwkgICAgfHwgKHJlYXNv
biAmIExXSVBfTlNDX0lQVjRfQUREUkVTU19DSEFOR0VEKQorCSAgICB8fCAocmVhc29uICYgTFdJ
UF9OU0NfSVBWNF9ORVRNQVNLX0NIQU5HRUQpCisJICAgIHx8IChyZWFzb24gJiBMV0lQX05TQ19J
UFY0X0dBVEVXQVlfQ0hBTkdFRCkpIHsKKwkJY2hhciBzdHJfaXA0X2FkZHJbMTddOworCQljaGFy
IHN0cl9pcDRfbWFza1sxN107CisJCWNoYXIgc3RyX2lwNF9nd1sxN107CisKKwkJaXBhZGRyX250
b2FfcigmbmYtPmlwX2FkZHIsIHN0cl9pcDRfYWRkciwgc2l6ZW9mKHN0cl9pcDRfYWRkcikpOwor
CQlpcGFkZHJfbnRvYV9yKCZuZi0+bmV0bWFzaywgc3RyX2lwNF9tYXNrLCBzaXplb2Yoc3RyX2lw
NF9tYXNrKSk7CisJCWlwYWRkcl9udG9hX3IoJm5mLT5ndywgICAgICBzdHJfaXA0X2d3LCAgIHNp
emVvZihzdHJfaXA0X2d3KSk7CisKKwkJcHJpbnRmKCIlYyVjJXU6IFNldCBJUHY0IGFkZHJlc3Mg
JXMgbWFzayAlcyBndyAlc1xuIiwKKwkJICAgICAgIG5mLT5uYW1lWzBdLCBuZi0+bmFtZVsxXSwg
bmYtPm51bSwKKwkJICAgICAgIHN0cl9pcDRfYWRkciwgc3RyX2lwNF9tYXNrLCBzdHJfaXA0X2d3
KTsKKwl9CisjZW5kaWYgLyogTFdJUF9JUFY0ICovCisKKyNpZiBMV0lQX0lQVjYKKwlpZiAocmVh
c29uICYgTFdJUF9OU0NfSVBWNl9TRVQpCisJCXByaW50ZigiJWMlYyV1OiBTZXQgSVB2NiBhZGRy
ZXNzICUiX19QUklzOCI6ICVzIChzdGF0ZSAlIl9fUFJJdTgiKVxuIiwKKwkJICAgICAgIG5mLT5u
YW1lWzBdLCBuZi0+bmFtZVsxXSwgbmYtPm51bSwKKwkJICAgICAgIGFyZ3MtPmlwdjZfc2V0LmFk
ZHJfaW5kZXgsCisJCSAgICAgICBpcGFkZHJfbnRvYSgmbmYtPmlwNl9hZGRyW2FyZ3MtPmlwdjZf
c2V0LmFkZHJfaW5kZXhdKSwKKwkJICAgICAgIG5mLT5pcDZfYWRkcl9zdGF0ZVthcmdzLT5pcHY2
X3NldC5hZGRyX2luZGV4XSk7CisJaWYgKHJlYXNvbiAmIExXSVBfTlNDX0lQVjZfQUREUl9TVEFU
RV9DSEFOR0VEKQorCQlwcmludGYoIiVjJWMldTogU2V0IElQdjYgYWRkcmVzcyAlIl9fUFJJczgi
OiAlcyAoc3RhdGUgJSJfX1BSSXU4IilcbiIsCisJCSAgICAgICBuZi0+bmFtZVswXSwgbmYtPm5h
bWVbMV0sIG5mLT5udW0sCisJCSAgICAgICBhcmdzLT5pcHY2X3NldC5hZGRyX2luZGV4LAorCQkg
ICAgICAgaXBhZGRyX250b2EoJm5mLT5pcDZfYWRkclsKKwkJCQkgICAgIGFyZ3MtPmlwdjZfYWRk
cl9zdGF0ZV9jaGFuZ2VkLmFkZHJfaW5kZXhdKSwKKwkJICAgICAgIG5mLT5pcDZfYWRkcl9zdGF0
ZVsKKwkJCQkgICAgIGFyZ3MtPmlwdjZfYWRkcl9zdGF0ZV9jaGFuZ2VkLmFkZHJfaW5kZXhdKTsK
KyNlbmRpZiAvKiBMV0lQX0lQVjYgKi8KK30KKworTkVUSUZfREVDTEFSRV9FWFRfQ0FMTEJBQ0so
bmV0aWZfc3RhdHVzX3ByaW50KQorI2VuZGlmIC8qIExXSVBfTkVUSUZfRVhUX1NUQVRVU19DQUxM
QkFDSyAmJiBDT05GSUdfTFdJUF9ORVRJRl9TVEFUVVNfUFJJTlQgKi8KKwogdm9pZCBzeXNfaW5p
dCh2b2lkKQogewogCS8qCkBAIC05OSw2ICsxNjAsMTEgQEAgaW50IGxpYmx3aXBfaW5pdCh2b2lk
KQogCXVrX3NlbWFwaG9yZV9kb3duKCZfbHdpcF9pbml0X3NlbSk7CiAjZW5kaWYgLyogQ09ORklH
X0xXSVBfTk9USFJFQURTICovCiAKKyNpZiBMV0lQX05FVElGX0VYVF9TVEFUVVNfQ0FMTEJBQ0sg
JiYgQ09ORklHX0xXSVBfTkVUSUZfU1RBVFVTX1BSSU5UCisJLyogQWRkIHByaW50IGNhbGxiYWNr
IGZvciBuZXRpZiBzdGF0ZSBjaGFuZ2VzICovCisJbmV0aWZfYWRkX2V4dF9jYWxsYmFjaygmbmV0
aWZfc3RhdHVzX3ByaW50LCBfbmV0aWZfc3RhdHVzX3ByaW50KTsKKyNlbmRpZiAvKiBMV0lQX05F
VElGX0VYVF9TVEFUVVNfQ0FMTEJBQ0sgJiYgQ09ORklHX0xXSVBfTkVUSUZfU1RBVFVTX1BSSU5U
ICovCisKICNpZiBDT05GSUdfTFdJUF9VS05FVERFViAmJiBDT05GSUdfTFdJUF9BVVRPSUZBQ0UK
IAlpc19maXJzdF9uZiA9IDE7CiAKLS0gCjIuMjAuMQoKCl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9z
LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcv
bWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Fri Feb 08 10:41:11 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 08 Feb 2019 10:41:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gs3ak-0006rk-1d; Fri, 08 Feb 2019 10:41:06 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=9frw=QP=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1gs3aj-0006rf-42
 for minios-devel@lists.xen.org; Fri, 08 Feb 2019 10:41:05 +0000
X-Inumbo-ID: 06f2140c-2b8e-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 06f2140c-2b8e-11e9-bc90-bc764e045a96;
 Fri, 08 Feb 2019 10:41:02 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 0BE58104DA6;
 Fri,  8 Feb 2019 11:41:01 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id PQTWeNfykq75; Fri,  8 Feb 2019 11:41:00 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id E1B00FFEF3
 for <minios-devel@lists.xen.org>; Fri,  8 Feb 2019 11:40:58 +0100 (CET)
Received: from localhost.localdomain (10.1.99.239) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 8 Feb
 2019 11:40:58 +0100
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Fri, 8 Feb 2019 11:38:08 +0100
Message-ID: <20190208103808.42775-1-simon.kuenzer@neclab.eu>
X-Mailer: git-send-email 2.17.1
MIME-Version: 1.0
X-Originating-IP: [10.1.99.239]
Subject: [Minios-devel] [UNIKRAFT PATCH] plat/kvm: Disconnect console
 options from ukdebug
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Simon Kuenzer <simon.kuenzer@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

TGlrZSBvbiB0aGUgb3RoZXIgcGxhdGZvcm1zLCB0aGUgY29uc29sZSBvcHRpb25zIGZvciBkZWJ1
Z2dpbmcKbWVzc2FnZXMgc2hvdWxkIG5vdCBiZSBoaWRkZW4gd2hlbiBnbG9iYWwgZGVidWcgb3V0
cHV0IGlzIG5vdAplbmFibGVkLiBPbmUgbWF5IHN0aWxsIHdhbnQgdG8gZW5hYmxlIGluZGl2aWR1
YWwgZGVidWdnaW5nIGZvciBhCnBhcnRpY3VsYXIgbGlicmFyeSBvciBmaWxlLiBUaGlzIGNvbW1p
dCBtYWtlcyB0aGlzIGNvbmZpZ3VyYXRpb24Kb3B0aW9uIGluZGVwZW5kZW50IGluIHRoZSBtZW51
LgoKU2lnbmVkLW9mZi1ieTogU2ltb24gS3VlbnplciA8c2ltb24ua3VlbnplckBuZWNsYWIuZXU+
Ci0tLQogcGxhdC9rdm0vQ29uZmlnLnVrIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNl
cnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3BsYXQva3ZtL0NvbmZpZy51
ayBiL3BsYXQva3ZtL0NvbmZpZy51awppbmRleCA0YTIwYTEwZS4uNWE2ZGZjMTQgMTAwNjQ0Ci0t
LSBhL3BsYXQva3ZtL0NvbmZpZy51aworKysgYi9wbGF0L2t2bS9Db25maWcudWsKQEAgLTMxLDE0
ICszMSwxNCBAQCBjb25maWcgS1ZNX0tFUk5FTF9WR0FfQ09OU09MRQogY29uZmlnIEtWTV9ERUJV
R19TRVJJQUxfQ09OU09MRQogICAgICAgICBib29sICJTZXJpYWwgY29uc29sZSBmb3IgdGhlIGRl
YnVnIHByaW50cyIKICAgICAgICAgZGVmYXVsdCB5Ci0gICAgICAgIGRlcGVuZHMgb24gKExJQlVL
REVCVUdfUFJJTlREICYmIChBUkNIX1g4Nl82NCB8fCBBUkNIX0FSTV82NCkpCisgICAgICAgIGRl
cGVuZHMgb24gKEFSQ0hfWDg2XzY0IHx8IEFSQ0hfQVJNXzY0KQogICAgICAgICBoZWxwCiAgICAg
ICAgICAgQ2hvb3NlIHNlcmlhbCBjb25zb2xlIGZvciB0aGUgZGVidWcgcHJpbnRpbmcKIAogY29u
ZmlnIEtWTV9ERUJVR19WR0FfQ09OU09MRQogICAgICAgICBib29sICJWR0EgY29uc29sZSBmb3Ig
dGhlIGRlYnVnIHByaW50cyIKICAgICAgICAgZGVmYXVsdCB5Ci0gICAgICAgIGRlcGVuZHMgb24g
KExJQlVLREVCVUdfUFJJTlREICYmIEFSQ0hfWDg2XzY0KQorICAgICAgICBkZXBlbmRzIG9uIEFS
Q0hfWDg2XzY0CiAgICAgICAgIGhlbHAKICAgICAgICAgICBDaG9vc2UgVkdBIGNvbnNvbGUgZm9y
IHRoZSBkZWJ1ZyBwcmludGluZwogZW5kbWVudQotLSAKMi4yMC4xCgoKX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlz
dApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9q
ZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Fri Feb 08 12:19:02 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 08 Feb 2019 12:19:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gs57U-0006vX-Qp; Fri, 08 Feb 2019 12:19:00 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=p2U7=QP=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1gs57T-0006vS-U3
 for minios-devel@lists.xen.org; Fri, 08 Feb 2019 12:19:00 +0000
X-Inumbo-ID: b26760d8-2b9b-11e9-861e-97d646f4e3ba
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id b26760d8-2b9b-11e9-861e-97d646f4e3ba;
 Fri, 08 Feb 2019 12:18:53 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 2901C104DB1;
 Fri,  8 Feb 2019 13:18:52 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id xEhkpvywlgnn; Fri,  8 Feb 2019 13:18:51 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id E0EA0104DB0
 for <minios-devel@lists.xen.org>; Fri,  8 Feb 2019 13:18:49 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 8 Feb 2019 13:18:49
 +0100
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
 <20190207135901.9122-10-yuri.volchkov@neclab.eu>
Message-ID: <637e6065-35f0-91c5-69b4-29993d3bedeb@neclab.eu>
Date: Fri, 8 Feb 2019 13:18:43 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190207135901.9122-10-yuri.volchkov@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v3 09/23] lib/vfscore: use
 Unikraft types and functions
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gWXVyaSwKClBsZWFzZSBmaW5kIHRoZSBjb21tZW50cyBpbmxpbmU6CgpUaGFua3MgJiBS
ZWdhcmRzClNoYXJhbgoKT24gMi83LzE5IDI6NTggUE0sIFl1cmkgVm9sY2hrb3Ygd3JvdGU6Cj4g
U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Cj4g
LS0tCj4gICBsaWIvdmZzY29yZS9kZW50cnkuYyAgICAgICAgICAgICAgICAgfCAxMzcgKysrKysr
KysrKysrKystLS0tLS0tLS0tLS0tCj4gICBsaWIvdmZzY29yZS9mb3BzLmMgICAgICAgICAgICAg
ICAgICAgfCAgIDIgKy0KPiAgIGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9kZW50cnkuaCB8
ICAxMCArLQo+ICAgbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmggIHwgICAxICsK
PiAgIGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5oICB8ICAyOSArKystLS0KPiAg
IGxpYi92ZnNjb3JlL2xvb2t1cC5jICAgICAgICAgICAgICAgICB8ICAzMCArKystLS0KPiAgIGxp
Yi92ZnNjb3JlL21haW4uYyAgICAgICAgICAgICAgICAgICB8IDEyMSArKysrKysrKysrKy0tLS0t
LS0tLS0tLQo+ICAgbGliL3Zmc2NvcmUvbW91bnQuYyAgICAgICAgICAgICAgICAgIHwgMTE0ICsr
KysrKysrKysrKy0tLS0tLS0tLS0KPiAgIGxpYi92ZnNjb3JlL3N1YnJfdWlvLmMgICAgICAgICAg
ICAgICB8ICAgMiArLQo+ICAgbGliL3Zmc2NvcmUvc3lzY2FsbHMuYyAgICAgICAgICAgICAgIHwg
MTI4ICsrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KPiAgIGxpYi92ZnNjb3JlL3Zmcy5oICAgICAg
ICAgICAgICAgICAgICB8ICAzOCArKysrLS0tLQo+ICAgbGliL3Zmc2NvcmUvdm5vZGUuYyAgICAg
ICAgICAgICAgICAgIHwgMTIyICsrKysrKysrKysrKy0tLS0tLS0tLS0tLQo+ICAgMTIgZmlsZXMg
Y2hhbmdlZCwgMzc2IGluc2VydGlvbnMoKyksIDM1OCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0t
Z2l0IGEvbGliL3Zmc2NvcmUvZGVudHJ5LmMgYi9saWIvdmZzY29yZS9kZW50cnkuYwo+IGluZGV4
IGNjY2UwN2QxLi5mZTE4NDFiYiAxMDA2NDQKPiAtLS0gYS9saWIvdmZzY29yZS9kZW50cnkuYwo+
ICsrKyBiL2xpYi92ZnNjb3JlL2RlbnRyeS5jCj4gQEAgLTQxLDE4ICs0MSwxOCBAQAo+ICAgCj4g
ICAjZGVmaW5lIERFTlRSWV9CVUNLRVRTIDMyCj4gICAKPiAtc3RhdGljIExJU1RfSEVBRChkZW50
cnlfaGFzaF9oZWFkLCBkZW50cnkpIGRlbnRyeV9oYXNoX3RhYmxlW0RFTlRSWV9CVUNLRVRTXTsK
PiAtc3RhdGljIExJU1RfSEVBRChmYWtlLCBkZW50cnkpIGZha2U7Cj4gLXN0YXRpYyBtdXRleCBk
ZW50cnlfaGFzaF9sb2NrOwo+ICtzdGF0aWMgc3RydWN0IHVrX2hsaXN0X2hlYWQgZGVudHJ5X2hh
c2hfdGFibGVbREVOVFJZX0JVQ0tFVFNdOwo+ICtzdGF0aWMgVUtfSExJU1RfSEVBRChmYWtlKTsK
PiArc3RhdGljIHN0cnVjdCB1a19tdXRleCBkZW50cnlfaGFzaF9sb2NrOwpkZW50cnlfaGFzaF9s
b2NrIGlzbid0IGluaXRpYWxpemVkPwoKPiAgIAo+ICAgLyoKPiAgICAqIEdldCB0aGUgaGFzaCB2
YWx1ZSBmcm9tIHRoZSBtb3VudCBwb2ludCBhbmQgcGF0aCBuYW1lLgo+ICAgICogWFhYOiByZXBs
YWNlIHdpdGggYSBiZXR0ZXIgaGFzaCBmb3IgNjQtYml0IHBvaW50ZXJzLgo+ICAgICovCj4gLXN0
YXRpYyB1X2ludAo+ICtzdGF0aWMgdW5zaWduZWQgaW50Cj4gICBkZW50cnlfaGFzaChzdHJ1Y3Qg
bW91bnQgKm1wLCBjb25zdCBjaGFyICpwYXRoKQo+ICAgewo+IC0JdV9pbnQgdmFsID0gMDsKPiAr
CXVuc2lnbmVkIGludCB2YWwgPSAwOwo+ICAgCj4gICAJaWYgKHBhdGgpIHsKPiAgIAkJd2hpbGUg
KCpwYXRoKSB7Cj4gQEAgLTY3LDEwICs2NywxMCBAQCBzdHJ1Y3QgZGVudHJ5ICoKPiAgIGRlbnRy
eV9hbGxvYyhzdHJ1Y3QgZGVudHJ5ICpwYXJlbnRfZHAsIHN0cnVjdCB2bm9kZSAqdnAsIGNvbnN0
IGNoYXIgKnBhdGgpCj4gICB7Cj4gICAJc3RydWN0IG1vdW50ICptcCA9IHZwLT52X21vdW50Owo+
IC0Jc3RydWN0IGRlbnRyeSAqZHAgPSAoZGVudHJ5KiljYWxsb2Moc2l6ZW9mKCpkcCksIDEpOwo+
ICsJc3RydWN0IGRlbnRyeSAqZHAgPSAoc3RydWN0IGRlbnRyeSopY2FsbG9jKHNpemVvZigqZHAp
LCAxKTsKPiAgIAo+ICAgCWlmICghZHApIHsKPiAtCQlyZXR1cm4gbnVsbHB0cjsKPiArCQlyZXR1
cm4gTlVMTDsKPiAgIAl9Cj4gICAKPiAgIAl2cmVmKHZwKTsKPiBAQCAtNzksMjIgKzc5LDI0IEBA
IGRlbnRyeV9hbGxvYyhzdHJ1Y3QgZGVudHJ5ICpwYXJlbnRfZHAsIHN0cnVjdCB2bm9kZSAqdnAs
IGNvbnN0IGNoYXIgKnBhdGgpCj4gICAJZHAtPmRfdm5vZGUgPSB2cDsKPiAgIAlkcC0+ZF9tb3Vu
dCA9IG1wOwo+ICAgCWRwLT5kX3BhdGggPSBzdHJkdXAocGF0aCk7Cj4gLQlMSVNUX0lOSVQoJmRw
LT5kX2NoaWxkcmVuKTsKPiArCVVLX0lOSVRfTElTVF9IRUFEKCZkcC0+ZF9jaGlsZF9saXN0KTsK
PiAgIAo+ICAgCWlmIChwYXJlbnRfZHApIHsKPiAgIAkJZHJlZihwYXJlbnRfZHApOwo+IC0JCVdJ
VEhfTE9DSyhwYXJlbnRfZHAtPmRfbG9jaykgewo+IC0JCQkvLyBJbnNlcnQgZHAgaW50byBpdHMg
cGFyZW50J3MgY2hpbGRyZW4gbGlzdC4KPiAtCQkJTElTVF9JTlNFUlRfSEVBRCgmcGFyZW50X2Rw
LT5kX2NoaWxkcmVuLCBkcCwgZF9jaGlsZHJlbl9saW5rKTsKPiAtCQl9Cj4gKwo+ICsJCXVrX211
dGV4X2xvY2soJnBhcmVudF9kcC0+ZF9sb2NrKTsKPiArCQkvLyBJbnNlcnQgZHAgaW50byBpdHMg
cGFyZW50J3MgY2hpbGRyZW4gbGlzdC4KPiArCQl1a19saXN0X2FkZCgmZHAtPmRfY2hpbGRfbGlu
aywgJnBhcmVudF9kcC0+ZF9jaGlsZF9saXN0KTsKPiArCQl1a19tdXRleF91bmxvY2soJnBhcmVu
dF9kcC0+ZF9sb2NrKTsKPiAgIAl9Cj4gICAJZHAtPmRfcGFyZW50ID0gcGFyZW50X2RwOwo+ICAg
Cj4gICAJdm5fYWRkX25hbWUodnAsIGRwKTsKPiAgIAo+IC0JbXV0ZXhfbG9jaygmZGVudHJ5X2hh
c2hfbG9jayk7Cj4gLQlMSVNUX0lOU0VSVF9IRUFEKCZkZW50cnlfaGFzaF90YWJsZVtkZW50cnlf
aGFzaChtcCwgcGF0aCldLCBkcCwgZF9saW5rKTsKPiAtCW11dGV4X3VubG9jaygmZGVudHJ5X2hh
c2hfbG9jayk7Cj4gKwl1a19tdXRleF9sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKPiArCXVrX2hs
aXN0X2FkZF9oZWFkKCZkcC0+ZF9saW5rLAo+ICsJCQkgICZkZW50cnlfaGFzaF90YWJsZVtkZW50
cnlfaGFzaChtcCwgcGF0aCldKTsKPiArCXVrX211dGV4X3VubG9jaygmZGVudHJ5X2hhc2hfbG9j
ayk7Cj4gICAJcmV0dXJuIGRwOwo+ICAgfTsKPiAgIAo+IEBAIC0xMDMsMjkgKzEwNSwzMCBAQCBk
ZW50cnlfbG9va3VwKHN0cnVjdCBtb3VudCAqbXAsIGNoYXIgKnBhdGgpCj4gICB7Cj4gICAJc3Ry
dWN0IGRlbnRyeSAqZHA7Cj4gICAKPiAtCW11dGV4X2xvY2soJmRlbnRyeV9oYXNoX2xvY2spOwo+
IC0JTElTVF9GT1JFQUNIKGRwLCAmZGVudHJ5X2hhc2hfdGFibGVbZGVudHJ5X2hhc2gobXAsIHBh
dGgpXSwgZF9saW5rKSB7Cj4gKwl1a19tdXRleF9sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKPiAr
CXVrX2hsaXN0X2Zvcl9lYWNoX2VudHJ5KGRwLCAmZGVudHJ5X2hhc2hfdGFibGVbZGVudHJ5X2hh
c2gobXAsIHBhdGgpXSwgZF9saW5rKSB7Cj4gICAJCWlmIChkcC0+ZF9tb3VudCA9PSBtcCAmJiAh
c3RybmNtcChkcC0+ZF9wYXRoLCBwYXRoLCBQQVRIX01BWCkpIHsKPiAgIAkJCWRwLT5kX3JlZmNu
dCsrOwpXZSBjb3VsZCB1c2UgPHVrL3JlZmNvdW50Lmg+IHRvIGltcGxlbWVudCB0aGUgcmVmZXJl
bmNlIGNvdW50aW5nIHNjaGVtZS4gCkl0IGlzIGZpbmUgZm9yIHRoZSBpbml0aWFsIHZlcnNpb24g
YnV0IHdlIG11c3QgY29uc2lkZXIgdXNpbmcgdW5pa3JhZnQgCmxpYnJhcnkgZm9yIGl0LgoKCj4g
LQkJCW11dGV4X3VubG9jaygmZGVudHJ5X2hhc2hfbG9jayk7Cj4gKwkJCXVrX211dGV4X3VubG9j
aygmZGVudHJ5X2hhc2hfbG9jayk7Cj4gICAJCQlyZXR1cm4gZHA7Cj4gICAJCX0KPiAgIAl9Cj4g
LQltdXRleF91bmxvY2soJmRlbnRyeV9oYXNoX2xvY2spOwo+IC0JcmV0dXJuIG51bGxwdHI7ICAg
ICAgICAgICAgICAgIC8qIG5vdCBmb3VuZCAqLwo+ICsJdWtfbXV0ZXhfdW5sb2NrKCZkZW50cnlf
aGFzaF9sb2NrKTsKPiArCXJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAvKiBub3QgZm91bmQg
Ki8KPiAgIH0KPiAgIAo+ICAgc3RhdGljIHZvaWQgZGVudHJ5X2NoaWxkcmVuX3JlbW92ZShzdHJ1
Y3QgZGVudHJ5ICpkcCkKPiAgIHsKPiAtCXN0cnVjdCBkZW50cnkgKmVudHJ5ID0gbnVsbHB0cjsK
PiArCXN0cnVjdCBkZW50cnkgKmVudHJ5ID0gTlVMTDsKPiAgIAo+IC0JV0lUSF9MT0NLKGRwLT5k
X2xvY2spIHsKPiAtCQlMSVNUX0ZPUkVBQ0goZW50cnksICZkcC0+ZF9jaGlsZHJlbiwgZF9jaGls
ZHJlbl9saW5rKSB7Cj4gLQkJCUFTU0VSVChlbnRyeSk7Cj4gLQkJCUFTU0VSVChlbnRyeS0+ZF9y
ZWZjbnQgPiAwKTsKPiAtCQkJTElTVF9SRU1PVkUoZW50cnksIGRfbGluayk7Cj4gLQkJfQo+ICsJ
dWtfbXV0ZXhfbG9jaygmZHAtPmRfbG9jayk7Cj4gKwl1a19saXN0X2Zvcl9lYWNoX2VudHJ5KGVu
dHJ5LCAmZHAtPmRfY2hpbGRfbGlzdCwgZF9jaGlsZF9saW5rKSB7Cj4gKwkJVUtfQVNTRVJUKGVu
dHJ5KTsKPiArCQlVS19BU1NFUlQoZW50cnktPmRfcmVmY250ID4gMCk7Cj4gKwkJdWtfaGxpc3Rf
ZGVsKCZlbnRyeS0+ZF9saW5rKTsKPiAgIAl9Cj4gKwl1a19tdXRleF91bmxvY2soJmRwLT5kX2xv
Y2spOwo+ICsKPiAgIH0KPiAgIAo+ICAgdm9pZAo+IEBAIC0xMzUsMzMgKzEzOCwzNCBAQCBkZW50
cnlfbW92ZShzdHJ1Y3QgZGVudHJ5ICpkcCwgc3RydWN0IGRlbnRyeSAqcGFyZW50X2RwLCBjaGFy
ICpwYXRoKQo+ICAgCWNoYXIgKm9sZF9wYXRoID0gZHAtPmRfcGF0aDsKPiAgIAo+ICAgCWlmIChv
bGRfcGRwKSB7Cj4gLQkJV0lUSF9MT0NLKG9sZF9wZHAtPmRfbG9jaykgewo+IC0JCQkvLyBSZW1v
dmUgZHAgZnJvbSBpdHMgb2xkIHBhcmVudCdzIGNoaWxkcmVuIGxpc3QuCj4gLQkJCUxJU1RfUkVN
T1ZFKGRwLCBkX2NoaWxkcmVuX2xpbmspOwo+IC0JCX0KPiArCQl1a19tdXRleF9sb2NrKCZvbGRf
cGRwLT5kX2xvY2spOwo+ICsJCS8vIFJlbW92ZSBkcCBmcm9tIGl0cyBvbGQgcGFyZW50J3MgY2hp
bGRyZW4gbGlzdC4KPiArCQl1a19saXN0X2RlbCgmZHAtPmRfY2hpbGRfbGluayk7Cj4gKwkJdWtf
bXV0ZXhfdW5sb2NrKCZvbGRfcGRwLT5kX2xvY2spOwo+ICAgCX0KPiAgIAo+ICAgCWlmIChwYXJl
bnRfZHApIHsKPiAgIAkJZHJlZihwYXJlbnRfZHApOwo+IC0JCVdJVEhfTE9DSyhwYXJlbnRfZHAt
PmRfbG9jaykgewo+IC0JCQkvLyBJbnNlcnQgZHAgaW50byBpdHMgbmV3IHBhcmVudCdzIGNoaWxk
cmVuIGxpc3QuCj4gLQkJCUxJU1RfSU5TRVJUX0hFQUQoJnBhcmVudF9kcC0+ZF9jaGlsZHJlbiwg
ZHAsIGRfY2hpbGRyZW5fbGluayk7Cj4gLQkJfQo+IC0JfQo+ICAgCj4gLQlXSVRIX0xPQ0soZGVu
dHJ5X2hhc2hfbG9jaykgewo+IC0JCS8vIFJlbW92ZSBhbGwgZHAncyBjaGlsZCBkZW50cmllcyBm
cm9tIHRoZSBoYXNodGFibGUuCj4gLQkJZGVudHJ5X2NoaWxkcmVuX3JlbW92ZShkcCk7Cj4gLQkJ
Ly8gUmVtb3ZlIGRwIHdpdGggb3V0ZGF0ZWQgaGFzaCBpbmZvIGZyb20gdGhlIGhhc2h0YWJsZS4K
PiAtCQlMSVNUX1JFTU9WRShkcCwgZF9saW5rKTsKPiAtCQkvLyBVcGRhdGUgZHAuCj4gLQkJZHAt
PmRfcGF0aCA9IHN0cmR1cChwYXRoKTsKPiAtCQlkcC0+ZF9wYXJlbnQgPSBwYXJlbnRfZHA7Cj4g
LQkJLy8gSW5zZXJ0IGRwIHVwZGF0ZWQgaGFzaCBpbmZvIGludG8gdGhlIGhhc2h0YWJsZS4KPiAt
CQlMSVNUX0lOU0VSVF9IRUFEKCZkZW50cnlfaGFzaF90YWJsZVtkZW50cnlfaGFzaChkcC0+ZF9t
b3VudCwgcGF0aCldLAo+IC0JCQlkcCwgZF9saW5rKTsKPiArCQl1a19tdXRleF9sb2NrKCZwYXJl
bnRfZHAtPmRfbG9jayk7Cj4gKwkJLy8gSW5zZXJ0IGRwIGludG8gaXRzIG5ldyBwYXJlbnQncyBj
aGlsZHJlbiBsaXN0Lgo+ICsJCXVrX2xpc3RfYWRkKCZkcC0+ZF9jaGlsZF9saW5rLCAmcGFyZW50
X2RwLT5kX2NoaWxkX2xpc3QpOwo+ICsJCXVrX211dGV4X3VubG9jaygmcGFyZW50X2RwLT5kX2xv
Y2spOwo+ICAgCX0KPiAgIAo+ICsJdWtfbXV0ZXhfbG9jaygmZGVudHJ5X2hhc2hfbG9jayk7Cj4g
KwkvLyBSZW1vdmUgYWxsIGRwJ3MgY2hpbGQgZGVudHJpZXMgZnJvbSB0aGUgaGFzaHRhYmxlLgo+
ICsJZGVudHJ5X2NoaWxkcmVuX3JlbW92ZShkcCk7Cj4gKwkvLyBSZW1vdmUgZHAgd2l0aCBvdXRk
YXRlZCBoYXNoIGluZm8gZnJvbSB0aGUgaGFzaHRhYmxlLgo+ICsJdWtfaGxpc3RfZGVsKCZkcC0+
ZF9saW5rKTsKPiArCS8vIFVwZGF0ZSBkcC4KPiArCWRwLT5kX3BhdGggPSBzdHJkdXAocGF0aCk7
Cj4gKwlkcC0+ZF9wYXJlbnQgPSBwYXJlbnRfZHA7Cj4gKwkvLyBJbnNlcnQgZHAgdXBkYXRlZCBo
YXNoIGluZm8gaW50byB0aGUgaGFzaHRhYmxlLgo+ICsJdWtfaGxpc3RfYWRkX2hlYWQoJmRwLT5k
X2xpbmssCj4gKwkJCSAgJmRlbnRyeV9oYXNoX3RhYmxlW2RlbnRyeV9oYXNoKGRwLT5kX21vdW50
LCBwYXRoKV0pOwo+ICsJdWtfbXV0ZXhfdW5sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKPiArCj4g
ICAJaWYgKG9sZF9wZHApIHsKPiAgIAkJZHJlbGUob2xkX3BkcCk7Cj4gICAJfQo+IEBAIC0xNzIs
NDUgKzE3Niw0NiBAQCBkZW50cnlfbW92ZShzdHJ1Y3QgZGVudHJ5ICpkcCwgc3RydWN0IGRlbnRy
eSAqcGFyZW50X2RwLCBjaGFyICpwYXRoKQo+ICAgdm9pZAo+ICAgZGVudHJ5X3JlbW92ZShzdHJ1
Y3QgZGVudHJ5ICpkcCkKPiAgIHsKPiAtCW11dGV4X2xvY2soJmRlbnRyeV9oYXNoX2xvY2spOwo+
IC0JTElTVF9SRU1PVkUoZHAsIGRfbGluayk7Cj4gKwl1a19tdXRleF9sb2NrKCZkZW50cnlfaGFz
aF9sb2NrKTsKPiArCXVrX2hsaXN0X2RlbCgmZHAtPmRfbGluayk7Cj4gICAJLyogcHV0IGl0IG9u
IGEgZmFrZSBsaXN0IGZvciBkcmVsZSgpIHRvIHdvcmsqLwo+IC0JTElTVF9JTlNFUlRfSEVBRCgm
ZmFrZSwgZHAsIGRfbGluayk7Cj4gLQltdXRleF91bmxvY2soJmRlbnRyeV9oYXNoX2xvY2spOwo+
ICsJdWtfaGxpc3RfYWRkX2hlYWQoJmRwLT5kX2xpbmssICZmYWtlKTsKPiArCXVrX211dGV4X3Vu
bG9jaygmZGVudHJ5X2hhc2hfbG9jayk7Cj4gICB9Cj4gICAKPiAgIHZvaWQKPiAgIGRyZWYoc3Ry
dWN0IGRlbnRyeSAqZHApCj4gICB7Cj4gLQlBU1NFUlQoZHApOwo+IC0JQVNTRVJUKGRwLT5kX3Jl
ZmNudCA+IDApOwo+ICsJVUtfQVNTRVJUKGRwKTsKPiArCVVLX0FTU0VSVChkcC0+ZF9yZWZjbnQg
PiAwKTsKPiAgIAo+IC0JbXV0ZXhfbG9jaygmZGVudHJ5X2hhc2hfbG9jayk7Cj4gKwl1a19tdXRl
eF9sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKPiAgIAlkcC0+ZF9yZWZjbnQrKzsKPiAtCW11dGV4
X3VubG9jaygmZGVudHJ5X2hhc2hfbG9jayk7Cj4gKwl1a19tdXRleF91bmxvY2soJmRlbnRyeV9o
YXNoX2xvY2spOwo+ICAgfQo+ICAgCj4gICB2b2lkCj4gICBkcmVsZShzdHJ1Y3QgZGVudHJ5ICpk
cCkKPiAgIHsKPiAtCUFTU0VSVChkcCk7Cj4gLQlBU1NFUlQoZHAtPmRfcmVmY250ID4gMCk7Cj4g
KwlVS19BU1NFUlQoZHApOwo+ICsJVUtfQVNTRVJUKGRwLT5kX3JlZmNudCA+IDApOwo+ICAgCj4g
LQltdXRleF9sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKPiArCXVrX211dGV4X2xvY2soJmRlbnRy
eV9oYXNoX2xvY2spOwo+ICAgCWlmICgtLWRwLT5kX3JlZmNudCkgewo+IC0JCW11dGV4X3VubG9j
aygmZGVudHJ5X2hhc2hfbG9jayk7Cj4gKwkJdWtfbXV0ZXhfdW5sb2NrKCZkZW50cnlfaGFzaF9s
b2NrKTsKPiAgIAkJcmV0dXJuOwo+ICAgCX0KPiAtCUxJU1RfUkVNT1ZFKGRwLCBkX2xpbmspOwo+
ICsJdWtfaGxpc3RfZGVsKCZkcC0+ZF9saW5rKTsKPiAgIAl2bl9kZWxfbmFtZShkcC0+ZF92bm9k
ZSwgZHApOwo+ICAgCj4gLQltdXRleF91bmxvY2soJmRlbnRyeV9oYXNoX2xvY2spOwo+ICsJdWtf
bXV0ZXhfdW5sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKPiAgIAo+ICAgCWlmIChkcC0+ZF9wYXJl
bnQpIHsKPiAtCQlXSVRIX0xPQ0soZHAtPmRfcGFyZW50LT5kX2xvY2spIHsKPiAtCQkJLy8gUmVt
b3ZlIGRwIGZyb20gaXRzIHBhcmVudCdzIGNoaWxkcmVuIGxpc3QuCj4gLQkJCUxJU1RfUkVNT1ZF
KGRwLCBkX2NoaWxkcmVuX2xpbmspOwo+IC0JCX0KPiArCQl1a19tdXRleF9sb2NrKCZkcC0+ZF9w
YXJlbnQtPmRfbG9jayk7Cj4gKwkJLy8gUmVtb3ZlIGRwIGZyb20gaXRzIHBhcmVudCdzIGNoaWxk
cmVuIGxpc3QuCj4gKwkJdWtfbGlzdF9kZWwoJmRwLT5kX2NoaWxkX2xpbmspOwo+ICsJCXVrX211
dGV4X3VubG9jaygmZHAtPmRfcGFyZW50LT5kX2xvY2spOwo+ICsKPiAgIAkJZHJlbGUoZHAtPmRf
cGFyZW50KTsKPiAgIAl9Cj4gICAKPiBAQCAtMjI2LDYgKzIzMSw2IEBAIGRlbnRyeV9pbml0KHZv
aWQpCj4gICAJaW50IGk7Cj4gICAKPiAgIAlmb3IgKGkgPSAwOyBpIDwgREVOVFJZX0JVQ0tFVFM7
IGkrKykgewo+IC0JCUxJU1RfSU5JVCgmZGVudHJ5X2hhc2hfdGFibGVbaV0pOwo+ICsJCVVLX0lO
SVRfSExJU1RfSEVBRCgmZGVudHJ5X2hhc2hfdGFibGVbaV0pOwo+ICAgCX0KPiAgIH0KPiBkaWZm
IC0tZ2l0IGEvbGliL3Zmc2NvcmUvZm9wcy5jIGIvbGliL3Zmc2NvcmUvZm9wcy5jCj4gaW5kZXgg
YjQ1ODNkMjAuLjc5MTE0ZTIxIDEwMDY0NAo+IC0tLSBhL2xpYi92ZnNjb3JlL2ZvcHMuYwo+ICsr
KyBiL2xpYi92ZnNjb3JlL2ZvcHMuYwo+IEBAIC0xMTUsNyArMTE1LDcgQEAgaW50IHZmc193cml0
ZShzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCwgc3RydWN0IHVpbyAqdWlvLCBpbnQgZmxhZ3MpCj4g
ICAJcmV0dXJuIGVycm9yOwo+ICAgfQo+ICAgCj4gLWludCB2ZnNfaW9jdGwoc3RydWN0IHZmc2Nv
cmVfZmlsZSAqZnAsIHVfbG9uZyBjb20sIHZvaWQgKmRhdGEpCj4gK2ludCB2ZnNfaW9jdGwoc3Ry
dWN0IHZmc2NvcmVfZmlsZSAqZnAsIHVuc2lnbmVkIGxvbmcgY29tLCB2b2lkICpkYXRhKQo+ICAg
ewo+ICAgCXN0cnVjdCB2bm9kZSAqdnAgPSBmcC0+Zl9kZW50cnktPmRfdm5vZGU7Cj4gICAJaW50
IGVycm9yOwo+IGRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZGVudHJ5
LmggYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZGVudHJ5LmgKPiBpbmRleCBiYTFjMzQ1
Ny4uODVmMzdhYjcgMTAwNjQ0Cj4gLS0tIGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2Rl
bnRyeS5oCj4gKysrIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2RlbnRyeS5oCj4gQEAg
LTQyLDE2ICs0MiwxNiBAQAo+ICAgc3RydWN0IHZub2RlOwo+ICAgCj4gICBzdHJ1Y3QgZGVudHJ5
IHsKPiAtCUxJU1RfRU5UUlkoZGVudHJ5KSBkX2xpbms7CS8qIGxpbmsgZm9yIGhhc2ggbGlzdCAq
Lwo+ICsJc3RydWN0IHVrX2hsaXN0X25vZGUgZF9saW5rOwkvKiBsaW5rIGZvciBoYXNoIGxpc3Qg
Ki8KPiAgIAlpbnQJCWRfcmVmY250OwkvKiByZWZlcmVuY2UgY291bnQgKi8KPiAgIAljaGFyCQkq
ZF9wYXRoOwkvKiBwb2ludGVyIHRvIHBhdGggaW4gZnMgKi8KPiAgIAlzdHJ1Y3Qgdm5vZGUJKmRf
dm5vZGU7Cj4gICAJc3RydWN0IG1vdW50CSpkX21vdW50Owo+ICAgCXN0cnVjdCBkZW50cnkgICAq
ZF9wYXJlbnQ7IC8qIHBvaW50ZXIgdG8gcGFyZW50ICovCj4gLQlMSVNUX0VOVFJZKGRlbnRyeSkg
ZF9uYW1lc19saW5rOyAvKiBsaW5rIGZvIHZub2RlOjpkX25hbWVzICovCj4gLQltdXRleF90CQlk
X2xvY2s7Cj4gLQlMSVNUX0hFQUQoLCBkZW50cnkpIGRfY2hpbGRyZW47Cj4gLQlMSVNUX0VOVFJZ
KGRlbnRyeSkgZF9jaGlsZHJlbl9saW5rOwo+ICsJc3RydWN0IHVrX2xpc3RfaGVhZCBkX25hbWVz
X2xpbms7IC8qIGxpbmsgZm8gdm5vZGU6OmRfbmFtZXMgKi8KPiArCXN0cnVjdCB1a19tdXRleAlk
X2xvY2s7Cj4gKwlzdHJ1Y3QgdWtfbGlzdF9oZWFkIGRfY2hpbGRfbGlzdDsKPiArCXN0cnVjdCB1
a19saXN0X2hlYWQgZF9jaGlsZF9saW5rOwo+ICAgfTsKPiAgIAo+ICAgI2VuZGlmIC8qIF9PU1Zf
REVOVFJZX0ggKi8KPiBkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21v
dW50LmggYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvbW91bnQuaAo+IGluZGV4IGUxMmEx
MDM5Li43YTYzOGRiZSAxMDA2NDQKPiAtLS0gYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUv
bW91bnQuaAo+ICsrKyBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9tb3VudC5oCj4gQEAg
LTUyLDYgKzUyLDcgQEAgc3RydWN0IG1vdW50IHsKPiAgIAlzdHJ1Y3QgZGVudHJ5CSptX3Jvb3Q7
CS8qIHJvb3Qgdm5vZGUgKi8KPiAgIAlzdHJ1Y3QgZGVudHJ5CSptX2NvdmVyZWQ7CS8qIHZub2Rl
IGNvdmVyZWQgb24gcGFyZW50IGZzICovCj4gICAJdm9pZAkJKm1fZGF0YTsJLyogcHJpdmF0ZSBk
YXRhIGZvciBmcyAqLwo+ICsJc3RydWN0IHVrX2xpc3RfaGVhZCBtbnRfbGlzdDsKPiAgIAlmc2lk
X3QgCQltX2ZzaWQ7IAkvKiBpZCB0aGF0IHVuaXF1ZWx5IGlkZW50aWZpZXMgdGhlIGZzICovCj4g
ICB9Owo+ICAgCj4gZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9k
ZS5oIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Zub2RlLmgKPiBpbmRleCA0OWZkNGQz
Ni4uYTRkYjljMTMgMTAwNjQ0Cj4gLS0tIGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Zu
b2RlLmgKPiArKysgYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUuaAo+IEBAIC00
Nyw3ICs0Nyw3IEBACj4gICBzdHJ1Y3QgdmZzb3BzOwo+ICAgc3RydWN0IHZub3BzOwo+ICAgc3Ry
dWN0IHZub2RlOwo+IC1zdHJ1Y3QgZmlsZTsKPiArc3RydWN0IHZmc2NvcmVfZmlsZTsKPiAgIAo+
ICAgLyoKPiAgICAqIFZub2RlIHR5cGVzLgo+IEBAIC03MCw3ICs3MCw3IEBAIGVudW0gdnR5cGUg
ewo+ICAgICovCj4gICBzdHJ1Y3Qgdm5vZGUgewo+ICAgCXVpbnQ2NF90CXZfaW5vOwkJLyogaW5v
ZGUgbnVtYmVyICovCj4gLQlMSVNUX0VOVFJZKHZub2RlKSB2X2xpbms7CS8qIGxpbmsgZm9yIGhh
c2ggbGlzdCAqLwo+ICsJc3RydWN0IHVrX2xpc3RfaGVhZCB2X2xpbms7CS8qIGxpbmsgZm9yIGhh
c2ggbGlzdCAqLwo+ICAgCXN0cnVjdCBtb3VudAkqdl9tb3VudDsJLyogbW91bnRlZCB2ZnMgcG9p
bnRlciAqLwo+ICAgCXN0cnVjdCB2bm9wcwkqdl9vcDsJCS8qIHZub2RlIG9wZXJhdGlvbnMgKi8K
PiAgIAlpbnQJCXZfcmVmY250OwkvKiByZWZlcmVuY2UgY291bnQgKi8KPiBAQCAtNzgsOSArNzgs
OCBAQCBzdHJ1Y3Qgdm5vZGUgewo+ICAgCWludAkJdl9mbGFnczsJLyogdm5vZGUgZmxhZyAqLwo+
ICAgCW1vZGVfdAkJdl9tb2RlOwkJLyogZmlsZSBtb2RlICovCj4gICAJb2ZmX3QJCXZfc2l6ZTsJ
CS8qIGZpbGUgc2l6ZSAqLwo+IC0JbXV0ZXhfdAkJdl9sb2NrOwkJLyogbG9jayBmb3IgdGhpcyB2
bm9kZSAqLwo+IC0JTElTVF9IRUFEKCwgZGVudHJ5KSB2X25hbWVzOwkvKiBkaXJlY3RvcnkgZW50
cmllcyBwb2ludGluZyBhdCB0aGlzICovCj4gLQlpbnQJCXZfbnJsb2NrczsJLyogbG9jayBjb3Vu
dCAoZm9yIGRlYnVnKSAqLwo+ICsJc3RydWN0IHVrX211dGV4CXZfbG9jazsJCS8qIGxvY2sgZm9y
IHRoaXMgdm5vZGUgKi8KPiArCXN0cnVjdCB1a19saXN0X2hlYWQgdl9uYW1lczsJLyogZGlyZWN0
b3J5IGVudHJpZXMgcG9pbnRpbmcgYXQgdGhpcyAqLwo+ICAgCXZvaWQJCSp2X2RhdGE7CS8qIHBy
aXZhdGUgZGF0YSBmb3IgZnMgKi8KPiAgIH07Cj4gICAKPiBAQCAtMTI3LDE0ICsxMjYsMTQgQEAg
c3RydWN0IHZhdHRyIHsKPiAgICNkZWZpbmUgQVJDX0FDVElPTl9IT0xEICAgICAxCj4gICAjZGVm
aW5lIEFSQ19BQ1RJT05fUkVMRUFTRSAgMgo+ICAgCj4gLXR5cGVkZWYJaW50ICgqdm5vcF9vcGVu
X3QpCShzdHJ1Y3QgZmlsZSAqKTsKPiAtdHlwZWRlZglpbnQgKCp2bm9wX2Nsb3NlX3QpCShzdHJ1
Y3Qgdm5vZGUgKiwgc3RydWN0IGZpbGUgKik7Cj4gLXR5cGVkZWYJaW50ICgqdm5vcF9yZWFkX3Qp
CShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IGZpbGUgKiwgc3RydWN0IHVpbyAqLCBpbnQpOwo+IC10
eXBlZGVmCWludCAoKnZub3Bfd3JpdGVfdCkJKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgdWlvICos
IGludCk7Cj4gLXR5cGVkZWYJaW50ICgqdm5vcF9zZWVrX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgc3Ry
dWN0IGZpbGUgKiwgb2ZmX3QsIG9mZl90KTsKPiAtdHlwZWRlZglpbnQgKCp2bm9wX2lvY3RsX3Qp
CShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IGZpbGUgKiwgdV9sb25nLCB2b2lkICopOwo+IC10eXBl
ZGVmCWludCAoKnZub3BfZnN5bmNfdCkJKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTsK
PiAtdHlwZWRlZglpbnQgKCp2bm9wX3JlYWRkaXJfdCkJKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3Qg
ZmlsZSAqLCBzdHJ1Y3QgZGlyZW50ICopOwo+ICt0eXBlZGVmCWludCAoKnZub3Bfb3Blbl90KQko
c3RydWN0IHZmc2NvcmVfZmlsZSAqKTsKPiArdHlwZWRlZglpbnQgKCp2bm9wX2Nsb3NlX3QpCShz
dHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHZmc2NvcmVfZmlsZSAqKTsKPiArdHlwZWRlZglzc2l6ZV90
ICgqdm5vcF9yZWFkX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHZmc2NvcmVfZmlsZSAqLCBz
dHJ1Y3QgdWlvICosIGludCk7Cj4gK3R5cGVkZWYJc3NpemVfdCAoKnZub3Bfd3JpdGVfdCkJKHN0
cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgdWlvICosIGludCk7Cj4gK3R5cGVkZWYJb2ZmX3QgKCp2bm9w
X3NlZWtfdCkJKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgdmZzY29yZV9maWxlICosIG9mZl90LCBv
ZmZfdCk7Cj4gK3R5cGVkZWYJaW50ICgqdm5vcF9pb2N0bF90KQkoc3RydWN0IHZub2RlICosIHN0
cnVjdCB2ZnNjb3JlX2ZpbGUgKiwgdW5zaWduZWQgbG9uZywgdm9pZCAqKTsKPiArdHlwZWRlZglp
bnQgKCp2bm9wX2ZzeW5jX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHZmc2NvcmVfZmlsZSAq
KTsKPiArdHlwZWRlZglpbnQgKCp2bm9wX3JlYWRkaXJfdCkJKHN0cnVjdCB2bm9kZSAqLCBzdHJ1
Y3QgdmZzY29yZV9maWxlICosIHN0cnVjdCBkaXJlbnQgKik7Cj4gICB0eXBlZGVmCWludCAoKnZu
b3BfbG9va3VwX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgY2hhciAqLCBzdHJ1Y3Qgdm5vZGUgKiopOwo+
ICAgdHlwZWRlZglpbnQgKCp2bm9wX2NyZWF0ZV90KQkoc3RydWN0IHZub2RlICosIGNoYXIgKiwg
bW9kZV90KTsKPiAgIHR5cGVkZWYJaW50ICgqdm5vcF9yZW1vdmVfdCkJKHN0cnVjdCB2bm9kZSAq
LCBzdHJ1Y3Qgdm5vZGUgKiwgY2hhciAqKTsKPiBAQCAtMTQ3LDggKzE0Niw4IEBAIHR5cGVkZWYJ
aW50ICgqdm5vcF9zZXRhdHRyX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHZhdHRyICopOwo+
ICAgdHlwZWRlZglpbnQgKCp2bm9wX2luYWN0aXZlX3QpCShzdHJ1Y3Qgdm5vZGUgKik7Cj4gICB0
eXBlZGVmCWludCAoKnZub3BfdHJ1bmNhdGVfdCkJKHN0cnVjdCB2bm9kZSAqLCBvZmZfdCk7Cj4g
ICB0eXBlZGVmCWludCAoKnZub3BfbGlua190KSAgICAgIChzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0
IHZub2RlICosIGNoYXIgKik7Cj4gLXR5cGVkZWYgaW50ICgqdm5vcF9jYWNoZV90KSAoc3RydWN0
IHZub2RlICosIHN0cnVjdCBmaWxlICosIHN0cnVjdCB1aW8gKik7Cj4gLXR5cGVkZWYgaW50ICgq
dm5vcF9mYWxsb2NhdGVfdCkgKHN0cnVjdCB2bm9kZSAqLCBpbnQsIGxvZmZfdCwgbG9mZl90KTsK
PiArdHlwZWRlZiBpbnQgKCp2bm9wX2NhY2hlX3QpIChzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHZm
c2NvcmVfZmlsZSAqLCBzdHJ1Y3QgdWlvICopOwo+ICt0eXBlZGVmIGludCAoKnZub3BfZmFsbG9j
YXRlX3QpIChzdHJ1Y3Qgdm5vZGUgKiwgaW50LCBvZmZfdCwgb2ZmX3QpOwo+ICAgdHlwZWRlZiBp
bnQgKCp2bm9wX3JlYWRsaW5rX3QpICAoc3RydWN0IHZub2RlICosIHN0cnVjdCB1aW8gKik7Cj4g
ICB0eXBlZGVmIGludCAoKnZub3Bfc3ltbGlua190KSAgIChzdHJ1Y3Qgdm5vZGUgKiwgY2hhciAq
LCBjaGFyICopOwo+ICAgCj4gZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2xvb2t1cC5jIGIvbGli
L3Zmc2NvcmUvbG9va3VwLmMKPiBpbmRleCA5ODM3ZTgxZi4uMWUyYzQwMDUgMTAwNjQ0Cj4gLS0t
IGEvbGliL3Zmc2NvcmUvbG9va3VwLmMKPiArKysgYi9saWIvdmZzY29yZS9sb29rdXAuYwo+IEBA
IC0xMTEsNyArMTExLDcgQEAgbmFtZWkoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IGRlbnRyeSAq
KmRwcCkKPiAgIAlzdHJ1Y3Qgdm5vZGUgKmR2cCwgKnZwOwo+ICAgCWludCBlcnJvciwgaTsKPiAg
IAlpbnQgbGlua3NfZm9sbG93ZWQ7Cj4gLQlib29sIG5lZWRfY29udGludWU7Cj4gKwlpbnQgbmVl
ZF9jb250aW51ZTsKPiAgIAo+ICAgCURQUklOVEYoVkZTREJfVk5PREUsICgibmFtZWk6IHBhdGg9
JXNcbiIsIHBhdGgpKTsKPiAgIAo+IEBAIC0xMTksNyArMTE5LDcgQEAgbmFtZWkoY29uc3QgY2hh
ciAqcGF0aCwgc3RydWN0IGRlbnRyeSAqKmRwcCkKPiAgIAlzdHJsY3B5KGZwLCBwYXRoLCBQQVRI
X01BWCk7Cj4gICAKPiAgIAlkbyB7Cj4gLQkJbmVlZF9jb250aW51ZSA9IGZhbHNlOwo+ICsJCW5l
ZWRfY29udGludWUgPSAwOwo+ICAgCQkvKgo+ICAgCQkgKiBDb252ZXJ0IGEgZnVsbCBwYXRoIG5h
bWUgdG8gaXRzIG1vdW50IHBvaW50IGFuZAo+ICAgCQkgKiB0aGUgbG9jYWwgbm9kZSBpbiB0aGUg
ZmlsZSBzeXN0ZW0uCj4gQEAgLTE0Myw3ICsxNDMsNyBAQCBuYW1laShjb25zdCBjaGFyICpwYXRo
LCBzdHJ1Y3QgZGVudHJ5ICoqZHBwKQo+ICAgCQkgKi8KPiAgIAkJZGRwID0gbXAtPm1fcm9vdDsK
PiAgIAkJaWYgKCFkZHApIHsKPiAtCQkJc3lzX3BhbmljKCJWRlM6IG5vIHJvb3QiKTsKPiArCQkJ
VUtfQ1JBU0goIlZGUzogbm8gcm9vdCIpOwo+ICAgCQl9Cj4gICAJCWRyZWYoZGRwKTsKPiAgIAo+
IEBAIC0xNzcsNyArMTc3LDcgQEAgbmFtZWkoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IGRlbnRy
eSAqKmRwcCkKPiAgIAkJCWR2cCA9IGRkcC0+ZF92bm9kZTsKPiAgIAkJCXZuX2xvY2soZHZwKTsK
PiAgIAkJCWRwID0gZGVudHJ5X2xvb2t1cChtcCwgbm9kZSk7Cj4gLQkJCWlmIChkcCA9PSBudWxs
cHRyKSB7Cj4gKwkJCWlmIChkcCA9PSBOVUxMKSB7Cj4gICAJCQkJLyogRmluZCBhIHZub2RlIGlu
IHRoaXMgZGlyZWN0b3J5LiAqLwo+ICAgCQkJCWVycm9yID0gVk9QX0xPT0tVUChkdnAsIG5hbWUs
ICZ2cCk7Cj4gICAJCQkJaWYgKGVycm9yKSB7Cj4gQEAgLTIwOSwxNyArMjA5LDE3IEBAIG5hbWVp
KGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBkZW50cnkgKipkcHApCj4gICAJCQkJZHJlbGUoZHAp
Owo+ICAgCj4gICAJCQkJcCAgICAgICA9IGZwOwo+IC0JCQkJZHAgICAgICA9IG51bGxwdHI7Cj4g
LQkJCQlkZHAgICAgID0gbnVsbHB0cjsKPiAtCQkJCXZwICAgICAgPSBudWxscHRyOwo+IC0JCQkJ
ZHZwICAgICA9IG51bGxwdHI7Cj4gKwkJCQlkcCAgICAgID0gTlVMTDsKPiArCQkJCWRkcCAgICAg
PSBOVUxMOwo+ICsJCQkJdnAgICAgICA9IE5VTEw7Cj4gKwkJCQlkdnAgICAgID0gTlVMTDsKPiAg
IAkJCQluYW1lWzBdID0gMDsKPiAgIAkJCQlub2RlWzBdID0gMDsKPiAgIAo+ICAgCQkJCWlmICgr
K2xpbmtzX2ZvbGxvd2VkID49IE1BWFNZTUxJTktTKSB7Cj4gICAJCQkJCXJldHVybiAoRUxPT1Ap
Owo+ICAgCQkJCX0KPiAtCQkJCW5lZWRfY29udGludWUgPSB0cnVlOwo+ICsJCQkJbmVlZF9jb250
aW51ZSA9IDE7Cj4gICAJCQkJYnJlYWs7Cj4gICAJCQl9Cj4gICAKPiBAQCAtMjI4LDcgKzIyOCw3
IEBAIG5hbWVpKGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBkZW50cnkgKipkcHApCj4gICAJCQkJ
cmV0dXJuIEVOT1RESVI7Cj4gICAJCQl9Cj4gICAJCX0KPiAtCX0gd2hpbGUgKG5lZWRfY29udGlu
dWUgPT0gdHJ1ZSk7Cj4gKwl9IHdoaWxlIChuZWVkX2NvbnRpbnVlKTsKPiAgIAo+ICAgCSpkcHAg
PSBkcDsKPiAgIAlyZXR1cm4gMDsKPiBAQCAtMjUzLDE0ICsyNTMsMTQgQEAgbmFtZWlfbGFzdF9u
b2ZvbGxvdyhjaGFyICpwYXRoLCBzdHJ1Y3QgZGVudHJ5ICpkZHAsIHN0cnVjdCBkZW50cnkgKipk
cHApCj4gICAJc3RydWN0IHZub2RlICAqdnA7Cj4gICAJY2hhciBub2RlW1BBVEhfTUFYXTsKPiAg
IAo+IC0JZHZwICA9IG51bGxwdHI7Cj4gKwlkdnAgID0gTlVMTDsKPiAgIAo+ICAgCWlmIChwYXRo
WzBdICE9ICcvJykgewo+ICAgCQlyZXR1cm4gKEVOT1RESVIpOwo+ICAgCX0KPiAgIAo+ICAgCW5h
bWUgPSBzdHJyY2hyKHBhdGgsICcvJyk7Cj4gLQlpZiAobmFtZSA9PSBudWxscHRyKSB7Cj4gKwlp
ZiAobmFtZSA9PSBOVUxMKSB7Cj4gICAJCXJldHVybiAoRU5PRU5UKTsKPiAgIAl9Cj4gICAJbmFt
ZSsrOwo+IEBAIC0yODMsNyArMjgzLDcgQEAgbmFtZWlfbGFzdF9ub2ZvbGxvdyhjaGFyICpwYXRo
LCBzdHJ1Y3QgZGVudHJ5ICpkZHAsIHN0cnVjdCBkZW50cnkgKipkcHApCj4gICAJZHZwID0gZGRw
LT5kX3Zub2RlOwo+ICAgCXZuX2xvY2soZHZwKTsKPiAgIAlkcCA9IGRlbnRyeV9sb29rdXAobXAs
IG5vZGUpOwo+IC0JaWYgKGRwID09IG51bGxwdHIpIHsKPiArCWlmIChkcCA9PSBOVUxMKSB7Cj4g
ICAJCWVycm9yID0gVk9QX0xPT0tVUChkdnAsIG5hbWUsICZ2cCk7Cj4gICAJCWlmIChlcnJvciAh
PSAwKSB7Cj4gICAJCQlnb3RvIG91dDsKPiBAQCAtMjkyLDcgKzI5Miw3IEBAIG5hbWVpX2xhc3Rf
bm9mb2xsb3coY2hhciAqcGF0aCwgc3RydWN0IGRlbnRyeSAqZGRwLCBzdHJ1Y3QgZGVudHJ5ICoq
ZHBwKQo+ICAgCQlkcCA9IGRlbnRyeV9hbGxvYyhkZHAsIHZwLCBub2RlKTsKPiAgIAkJdnB1dCh2
cCk7Cj4gICAKPiAtCQlpZiAoZHAgPT0gbnVsbHB0cikgewo+ICsJCWlmIChkcCA9PSBOVUxMKSB7
Cj4gICAJCQllcnJvciA9IEVOT01FTTsKPiAgIAkJCWdvdG8gb3V0Owo+ICAgCQl9Cj4gQEAgLTMw
MSw3ICszMDEsNyBAQCBuYW1laV9sYXN0X25vZm9sbG93KGNoYXIgKnBhdGgsIHN0cnVjdCBkZW50
cnkgKmRkcCwgc3RydWN0IGRlbnRyeSAqKmRwcCkKPiAgIAkqZHBwICA9IGRwOwo+ICAgCWVycm9y
ID0gMDsKPiAgIG91dDoKPiAtCWlmIChkdnAgIT0gbnVsbHB0cikgewo+ICsJaWYgKGR2cCAhPSBO
VUxMKSB7Cj4gICAJCXZuX3VubG9jayhkdnApOwo+ICAgCX0KPiAgIAlyZXR1cm4gKGVycm9yKTsK
PiBkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvbWFpbi5jIGIvbGliL3Zmc2NvcmUvbWFpbi5jCj4g
aW5kZXggOTBkZjNkNzEuLjgyZTQ1OTE3IDEwMDY0NAo+IC0tLSBhL2xpYi92ZnNjb3JlL21haW4u
Ywo+ICsrKyBiL2xpYi92ZnNjb3JlL21haW4uYwo+IEBAIC03OSw3ICs3OSw3IEBAIGludCBvcGVu
KGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBpbnQgZmxhZ3MsIC4uLikKPiAgIAo+ICAgCXN0cnVjdCB0
YXNrICp0ID0gbWFpbl90YXNrOwo+ICAgCWNoYXIgcGF0aFtQQVRIX01BWF07Cj4gLQlzdHJ1Y3Qg
ZmlsZSAqZnA7Cj4gKwlzdHJ1Y3QgdmZzY29yZV9maWxlICpmcDsKPiAgIAlpbnQgZmQsIGVycm9y
Owo+ICAgCWludCBhY2M7Cj4gICAKPiBAQCAtMTM1LDcgKzEzNSw3IEBAIGludCBvcGVuYXQoaW50
IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwgaW50IGZsYWdzLCAuLi4pCj4gICAJCXJldHVy
biBvcGVuKHBhdGhuYW1lLCBmbGFncywgbW9kZSk7Cj4gICAJfQo+ICAgCj4gLQlzdHJ1Y3QgZmls
ZSAqZnA7Cj4gKwlzdHJ1Y3QgdmZzY29yZV9maWxlICpmcDsKPiAgIAlpbnQgZXJyb3IgPSBmZ2V0
KGRpcmZkLCAmZnApOwo+ICAgCWlmIChlcnJvcikgewo+ICAgCQllcnJubyA9IGVycm9yOwo+IEBA
IC0xOTcsNyArMTk3LDcgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbWtub2RfZXJyLCAiJWQiLCBp
bnQpOwo+ICAgCj4gICBpbnQgX194bWtub2QoaW50IHZlciwgY29uc3QgY2hhciAqcGF0aG5hbWUs
IG1vZGVfdCBtb2RlLCBkZXZfdCAqZGV2KQo+ICAgewo+IC0JYXNzZXJ0KHZlciA9PSAwKTsgLy8g
T24geDg2LTY0IExpbnV4LCBfTUtOT0RfVkVSX0xJTlVYIGlzIDAuCj4gKwlVS19BU1NFUlQodmVy
ID09IDApOyAvLyBPbiB4ODYtNjQgTGludXgsIF9NS05PRF9WRVJfTElOVVggaXMgMC4KPiAgIAlz
dHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKPiAgIAljaGFyIHBhdGhbUEFUSF9NQVhdOwo+ICAg
CWludCBlcnJvcjsKPiBAQCAtMjMxLDcgKzIzMSw3IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2xz
ZWVrX2VyciwgIiVkIiwgaW50KTsKPiAgIAo+ICAgb2ZmX3QgbHNlZWsoaW50IGZkLCBvZmZfdCBv
ZmZzZXQsIGludCB3aGVuY2UpCj4gICB7Cj4gLQlzdHJ1Y3QgZmlsZSAqZnA7Cj4gKwlzdHJ1Y3Qg
dmZzY29yZV9maWxlICpmcDsKPiAgIAlvZmZfdCBvcmc7Cj4gICAJaW50IGVycm9yOwo+ICAgCj4g
QEAgLTI2NSwxMSArMjY1LDEyIEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX3ByZWFkX2VyciwgIiVk
IiwgaW50KTsKPiAgIC8vICphbmQqIGEgbm9uLXplcm8gbnVtYmVyIG9mIHdyaXR0ZW4gYnl0ZXMu
IEluIHRoYXQgY2FzZSwgd2UgbmVlZCB0byB6ZXJvIHRoZQo+ICAgLy8gZXJyb3IsIHNvIHRoZSBz
eXN0ZW0gY2FsbCBhcHBlYXIgYSBzdWNjZXNzZnVsIHBhcnRpYWwgcmVhZC93cml0ZS4KPiAgIC8v
IEluIEZyZWVCU0QsIGRvZmlsZXdyaXRlKCkgYW5kIGRvZmlsZXJlYWQoKSAoc3lzX2dlbmVyaWMu
YykgZG8gdGhpcyB0b28uCj4gLXN0YXRpYyBpbmxpbmUgYm9vbCBoYXNfZXJyb3IoaW50IGVycm9y
LCBpbnQgYnl0ZXMpCj4gK3N0YXRpYyBpbmxpbmUgaW50IGhhc19lcnJvcihpbnQgZXJyb3IsIGlu
dCBieXRlcykKPiAgIHsKPiArCS8qIFRPRE86IE9TdiBjaGVja3MgYWxzbyBmb3IgRVJFU1RBUlQg
Ki8KPiAgIAlyZXR1cm4gZXJyb3IgJiYgKAo+ICAgCQkJKGJ5dGVzID09IDApIHx8Cj4gLQkJCShl
cnJvciAhPSBFV09VTERCTE9DSyAmJiBlcnJvciAhPSBFSU5UUiAmJiBlcnJvciAhPSBFUkVTVEFS
VCkpOwo+ICsJCQkoZXJyb3IgIT0gRVdPVUxEQkxPQ0sgJiYgZXJyb3IgIT0gRUlOVFIpKTsKPiAg
IH0KPiAgIAo+ICAgCj4gQEAgLTI4MCw3ICsyODEsNyBAQCBzc2l6ZV90IHByZWFkKGludCBmZCwg
dm9pZCAqYnVmLCBzaXplX3QgY291bnQsIG9mZl90IG9mZnNldCkKPiAgIAkJCS5pb3ZfYmFzZQk9
IGJ1ZiwKPiAgIAkJCS5pb3ZfbGVuCT0gY291bnQsCj4gICAJfTsKPiAtCXN0cnVjdCBmaWxlICpm
cDsKPiArCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwOwo+ICAgCXNpemVfdCBieXRlczsKPiAgIAlp
bnQgZXJyb3I7Cj4gICAKPiBAQCAtMzIwLDcgKzMyMSw3IEBAIHNzaXplX3QgcHdyaXRlKGludCBm
ZCwgY29uc3Qgdm9pZCAqYnVmLCBzaXplX3QgY291bnQsIG9mZl90IG9mZnNldCkKPiAgIAkJCS5p
b3ZfYmFzZQk9ICh2b2lkICopYnVmLAo+ICAgCQkJLmlvdl9sZW4JPSBjb3VudCwKPiAgIAl9Owo+
IC0Jc3RydWN0IGZpbGUgKmZwOwo+ICsJc3RydWN0IHZmc2NvcmVfZmlsZSAqZnA7Cj4gICAJc2l6
ZV90IGJ5dGVzOwo+ICAgCWludCBlcnJvcjsKPiAgIAo+IEBAIC0zNTEsNyArMzUyLDcgQEAgc3Np
emVfdCB3cml0ZShpbnQgZmQsIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGNvdW50KQo+ICAgCj4g
ICBzc2l6ZV90IHByZWFkdihpbnQgZmQsIGNvbnN0IHN0cnVjdCBpb3ZlYyAqaW92LCBpbnQgaW92
Y250LCBvZmZfdCBvZmZzZXQpCj4gICB7Cj4gLQlzdHJ1Y3QgZmlsZSAqZnA7Cj4gKwlzdHJ1Y3Qg
dmZzY29yZV9maWxlICpmcDsKPiAgIAlzaXplX3QgYnl0ZXM7Cj4gICAJaW50IGVycm9yOwo+ICAg
Cj4gQEAgLTM4NCw3ICszODUsNyBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19wd3JpdGV2X2Vyciwg
IiVkIiwgaW50KTsKPiAgIAo+ICAgc3NpemVfdCBwd3JpdGV2KGludCBmZCwgY29uc3Qgc3RydWN0
IGlvdmVjICppb3YsIGludCBpb3ZjbnQsIG9mZl90IG9mZnNldCkKPiAgIHsKPiAtCXN0cnVjdCBm
aWxlICpmcDsKPiArCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwOwo+ICAgCXNpemVfdCBieXRlczsK
PiAgIAlpbnQgZXJyb3I7Cj4gICAKPiBAQCAtNDE5LDcgKzQyMCw3IEBAIFRSQUNFUE9JTlQodHJh
Y2VfdmZzX2lvY3RsX2VyciwgIiVkIiwgaW50KTsKPiAgIAo+ICAgaW50IGlvY3RsKGludCBmZCwg
dW5zaWduZWQgbG9uZyBpbnQgcmVxdWVzdCwgLi4uKQo+ICAgewo+IC0Jc3RydWN0IGZpbGUgKmZw
Owo+ICsJc3RydWN0IHZmc2NvcmVfZmlsZSAqZnA7Cj4gICAJaW50IGVycm9yOwo+ICAgCXZhX2xp
c3QgYXA7Cj4gICAJdm9pZCogYXJnOwo+IEBAIC00NTYsNyArNDU3LDcgQEAgVFJBQ0VQT0lOVCh0
cmFjZV92ZnNfZnN5bmNfZXJyLCAiJWQiLCBpbnQpOwo+ICAgCj4gICBpbnQgZnN5bmMoaW50IGZk
KQo+ICAgewo+IC0Jc3RydWN0IGZpbGUgKmZwOwo+ICsJc3RydWN0IHZmc2NvcmVfZmlsZSAqZnA7
Cj4gICAJaW50IGVycm9yOwo+ICAgCj4gICAJdHJhY2VfdmZzX2ZzeW5jKGZkKTsKPiBAQCAtNDkw
LDcgKzQ5MSw3IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2ZzdGF0X2VyciwgIiVkIiwgaW50KTsK
PiAgIAo+ICAgaW50IF9fZnhzdGF0KGludCB2ZXIsIGludCBmZCwgc3RydWN0IHN0YXQgKnN0KQo+
ICAgewo+IC0Jc3RydWN0IGZpbGUgKmZwOwo+ICsJc3RydWN0IHZmc2NvcmVfZmlsZSAqZnA7Cj4g
ICAJaW50IGVycm9yOwo+ICAgCj4gICAJdHJhY2VfdmZzX2ZzdGF0KGZkLCBzdCk7Cj4gQEAgLTUy
Niw3ICs1MjcsNyBAQCBpbnQgX19meHN0YXRhdChpbnQgdmVyLCBpbnQgZGlyZmQsIGNvbnN0IGNo
YXIgKnBhdGhuYW1lLCBzdHJ1Y3Qgc3RhdCAqc3QsCj4gICAJCWludCBmbGFncykKPiAgIHsKPiAg
IAlpZiAoZmxhZ3MgJiBBVF9TWU1MSU5LX05PRk9MTE9XKSB7Cj4gLQkJVU5JTVBMRU1FTlRFRCgi
ZnN0YXRhdCgpIHdpdGggQVRfU1lNTElOS19OT0ZPTExPVyIpOwo+ICsJCVVLX0NSQVNIKCJVTklN
UExFTUVOVEVEOiBmc3RhdGF0KCkgd2l0aCBBVF9TWU1MSU5LX05PRk9MTE9XIik7Cj4gICAJfQo+
ICAgCj4gICAJaWYgKHBhdGhuYW1lWzBdID09ICcvJyB8fCBkaXJmZCA9PSBBVF9GRENXRCkgewo+
IEBAIC01MzgsNyArNTM5LDcgQEAgaW50IF9fZnhzdGF0YXQoaW50IHZlciwgaW50IGRpcmZkLCBj
b25zdCBjaGFyICpwYXRobmFtZSwgc3RydWN0IHN0YXQgKnN0LAo+ICAgCQlyZXR1cm4gZnN0YXQo
ZGlyZmQsIHN0KTsKPiAgIAl9Cj4gICAKPiAtCXN0cnVjdCBmaWxlICpmcDsKPiArCXN0cnVjdCB2
ZnNjb3JlX2ZpbGUgKmZwOwo+ICAgCWludCBlcnJvciA9IGZnZXQoZGlyZmQsICZmcCk7Cj4gICAJ
aWYgKGVycm9yKSB7Cj4gICAJCWVycm5vID0gZXJyb3I7Cj4gQEAgLTU3NCw3ICs1NzUsOSBAQCBM
RlM2NChmc3RhdGF0KTsKPiAgIAo+ICAgaW50IGZsb2NrKGludCBmZCwgaW50IG9wZXJhdGlvbikK
PiAgIHsKPiAtCWlmICghZmlsZXJlZl9mcm9tX2ZkKGZkKSkgewo+ICsJc3RydWN0IHZmc2NvcmVf
ZmlsZSAqZmlsZTsKPiArCj4gKwlpZiAoIWZnZXQoZmQsICZmaWxlKSkgewo+ICAgCQlyZXR1cm4g
bGliY19lcnJvcihFQkFERik7Cj4gICAJfQo+ICAgCj4gQEAgLTU5Miw3ICs1OTUsNyBAQCBpbnQg
ZmxvY2soaW50IGZkLCBpbnQgb3BlcmF0aW9uKQo+ICAgCXJldHVybiAwOwo+ICAgfQo+ICAgCj4g
LVRSQUNFUE9JTlQodHJhY2VfdmZzX3JlYWRkaXIsICIlZCAlcCIsIGludCwgZGlyZW50Kik7Cj4g
K1RSQUNFUE9JTlQodHJhY2VfdmZzX3JlYWRkaXIsICIlZCAlcCIsIGludCwgc3RydWN0IGRpcmVu
dCopOwo+ICAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfcmVhZGRpcl9yZXQsICIiKTsKPiAgIFRSQUNF
UE9JTlQodHJhY2VfdmZzX3JlYWRkaXJfZXJyLCAiJWQiLCBpbnQpOwo+ICAgCj4gQEAgLTYxMSw3
ICs2MTQsNyBAQCBESVIgKm9wZW5kaXIoY29uc3QgY2hhciAqcGF0aCkKPiAgIAlkaXItPmZkID0g
b3BlbihwYXRoLCBPX1JET05MWSk7Cj4gICAJaWYgKGRpci0+ZmQgPCAwKSB7Cj4gICAJCWZyZWUo
ZGlyKTsKPiAtCQlyZXR1cm4gbnVsbHB0cjsKPiArCQlyZXR1cm4gTlVMTDsKPiAgIAl9Cj4gICAJ
cmV0dXJuIGRpcjsKPiAgIH0KPiBAQCAtNjIxLDExICs2MjQsMTEgQEAgRElSICpmZG9wZW5kaXIo
aW50IGZkKQo+ICAgCURJUiAqZGlyOwo+ICAgCXN0cnVjdCBzdGF0IHN0Owo+ICAgCWlmIChmc3Rh
dChmZCwgJnN0KSA8IDApIHsKPiAtCQlyZXR1cm4gbnVsbHB0cjsKPiArCQlyZXR1cm4gTlVMTDsK
PiAgIAl9Cj4gICAJaWYgKCFTX0lTRElSKHN0LnN0X21vZGUpKSB7Cj4gICAJCWVycm5vID0gRU5P
VERJUjsKPiAtCQlyZXR1cm4gbnVsbHB0cjsKPiArCQlyZXR1cm4gTlVMTDsKPiAgIAl9Cj4gICAJ
ZGlyID0gbWFsbG9jKHNpemVvZigqZGlyKSk7Cj4gICAJaWYgKCFkaXIpIHsKPiBAQCAtNjY5LDEz
ICs2NzIsMTEgQEAgc3RydWN0IGRpcmVudCAqcmVhZGRpcihESVIgKmRpcikKPiAgIGludCByZWFk
ZGlyX3IoRElSICpkaXIsIHN0cnVjdCBkaXJlbnQgKmVudHJ5LCBzdHJ1Y3QgZGlyZW50ICoqcmVz
dWx0KQo+ICAgewo+ICAgCWludCBlcnJvcjsKPiAtCXN0cnVjdCBmaWxlICpmcDsKPiArCXN0cnVj
dCB2ZnNjb3JlX2ZpbGUgKmZwOwo+ICAgCj4gICAJdHJhY2VfdmZzX3JlYWRkaXIoZGlyLT5mZCwg
ZW50cnkpOwo+ICAgCWVycm9yID0gZmdldChkaXItPmZkLCAmZnApOwo+IC0JaWYgKGVycm9yKSB7
Cj4gLQkJdHJhY2VfdmZzX3JlYWRkaXJfZXJyKGVycm9yKTsKPiAtCX0gZWxzZSB7Cj4gKwlpZiAo
IWVycm9yKSB7Cj4gICAJCWVycm9yID0gc3lzX3JlYWRkaXIoZnAsIGVudHJ5KTsKPiAgIAkJZmRy
b3AoZnApOwo+ICAgCQlpZiAoZXJyb3IpIHsKPiBAQCAtNjg4LDcgKzY4OSw3IEBAIGludCByZWFk
ZGlyX3IoRElSICpkaXIsIHN0cnVjdCBkaXJlbnQgKmVudHJ5LCBzdHJ1Y3QgZGlyZW50ICoqcmVz
dWx0KQo+ICAgCWVudHJ5LT5kX3JlY2xlbiA9IHNpemVvZigqZW50cnkpOwo+ICAgCj4gICAJaWYg
KGVycm9yKSB7Cj4gLQkJKnJlc3VsdCA9IG51bGxwdHI7Cj4gKwkJKnJlc3VsdCA9IE5VTEw7Cj4g
ICAJfSBlbHNlIHsKPiAgIAkJKnJlc3VsdCA9IGVudHJ5Owo+ICAgCX0KPiBAQCAtNzA2LDcgKzcw
Nyw3IEBAIHN0cnVjdCBkaXJlbnQgKnJlYWRkaXI2NChESVIgKmRpcikgX19hdHRyaWJ1dGVfXygo
YWxpYXMoInJlYWRkaXIiKSkpOwo+ICAgCj4gICB2b2lkIHJld2luZGRpcihESVIgKmRpcnApCj4g
ICB7Cj4gLQlzdHJ1Y3QgZmlsZSAqZnA7Cj4gKwlzdHJ1Y3QgdmZzY29yZV9maWxlICpmcDsKPiAg
IAo+ICAgCWludCBlcnJvciA9IGZnZXQoZGlycC0+ZmQsICZmcCk7Cj4gICAJaWYgKGVycm9yKSB7
Cj4gQEAgLTcyMiw3ICs3MjMsNyBAQCB2b2lkIHJld2luZGRpcihESVIgKmRpcnApCj4gICAKPiAg
IGxvbmcgdGVsbGRpcihESVIgKmRpcnApCj4gICB7Cj4gLQlzdHJ1Y3QgZmlsZSAqZnA7Cj4gKwlz
dHJ1Y3QgdmZzY29yZV9maWxlICpmcDsKPiAgIAlpbnQgZXJyb3IgPSBmZ2V0KGRpcnAtPmZkLCAm
ZnApOwo+ICAgCWlmIChlcnJvcikgewo+ICAgCQlyZXR1cm4gbGliY19lcnJvcihlcnJvcik7Cj4g
QEAgLTczOSw3ICs3NDAsNyBAQCBsb25nIHRlbGxkaXIoRElSICpkaXJwKQo+ICAgCj4gICB2b2lk
IHNlZWtkaXIoRElSICpkaXJwLCBsb25nIGxvYykKPiAgIHsKPiAtCXN0cnVjdCBmaWxlICpmcDsK
PiArCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwOwo+ICAgCWludCBlcnJvciA9IGZnZXQoZGlycC0+
ZmQsICZmcCk7Cj4gICAJaWYgKGVycm9yKSB7Cj4gICAJCS8vIFBPU0lYIHNwZWNpZmllcyBzZWVr
ZGlyKCkgY2Fubm90IHJldHVybiBlcnJvcnMuCj4gQEAgLTc5MCw3ICs3OTEsNyBAQCBpbnQgcm1k
aXIoY29uc3QgY2hhciAqcGF0aG5hbWUpCj4gICAKPiAgIAl0cmFjZV92ZnNfcm1kaXIocGF0aG5h
bWUpOwo+ICAgCWVycm9yID0gRU5PRU5UOwo+IC0JaWYgKHBhdGhuYW1lID09IG51bGxwdHIpCj4g
KwlpZiAocGF0aG5hbWUgPT0gTlVMTCkKPiAgIAkJZ290byBvdXRfZXJybm87Cj4gICAJaWYgKChl
cnJvciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwgVldSSVRFLCBwYXRoKSkgIT0gMCkKPiAgIAkJ
Z290byBvdXRfZXJybm87Cj4gQEAgLTgyNiw5ICs4MjcsOSBAQCBnZXRfbGFzdF9jb21wb25lbnQo
Y29uc3QgY2hhciAqcGF0aCwgY2hhciAqZHN0KQo+ICAgCWRzdFtsZW5dID0gMDsKPiAgIH0KPiAg
IAo+IC1zdGF0aWMgYm9vbCBudWxsX29yX2VtcHR5KGNvbnN0IGNoYXIgKnN0cikKPiArc3RhdGlj
IGludCBudWxsX29yX2VtcHR5KGNvbnN0IGNoYXIgKnN0cikKPiAgIHsKPiAtCXJldHVybiBzdHIg
PT0gbnVsbHB0ciB8fCAqc3RyID09ICdcMCc7Cj4gKwlyZXR1cm4gc3RyID09IE5VTEwgfHwgKnN0
ciA9PSAnXDAnOwo+ICAgfQo+ICAgCj4gICBUUkFDRVBPSU5UKHRyYWNlX3Zmc19yZW5hbWUsICJc
IiVzXCIgXCIlc1wiIiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKTsKPiBAQCAtODgzLDcgKzg4
NCw3IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2NoZGlyX2VyciwgIiVkIiwgaW50KTsKPiAgIHN0
YXRpYyBpbnQKPiAgIF9fZG9fZmNoZGlyKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwLCBzdHJ1Y3Qg
dGFzayAqdCkKPiAgIHsKPiAtCXN0cnVjdCBmaWxlICpvbGQgPSBudWxscHRyOwo+ICsJc3RydWN0
IHZmc2NvcmVfZmlsZSAqb2xkID0gTlVMTDsKPiAgIAo+ICAgCVVLX0FTU0VSVCh0KTsKPiAgIAo+
IEBAIC05MDcsMTEgKzkwOCwxMSBAQCBpbnQgY2hkaXIoY29uc3QgY2hhciAqcGF0aG5hbWUpCj4g
ICAJdHJhY2VfdmZzX2NoZGlyKHBhdGhuYW1lKTsKPiAgIAlzdHJ1Y3QgdGFzayAqdCA9IG1haW5f
dGFzazsKPiAgIAljaGFyIHBhdGhbUEFUSF9NQVhdOwo+IC0Jc3RydWN0IGZpbGUgKmZwOwo+ICsJ
c3RydWN0IHZmc2NvcmVfZmlsZSAqZnA7Cj4gICAJaW50IGVycm9yOwo+ICAgCj4gICAJZXJyb3Ig
PSBFTk9FTlQ7Cj4gLQlpZiAocGF0aG5hbWUgPT0gbnVsbHB0cikKPiArCWlmIChwYXRobmFtZSA9
PSBOVUxMKQo+ICAgCQlnb3RvIG91dF9lcnJubzsKPiAgIAo+ICAgCWlmICgoZXJyb3IgPSB0YXNr
X2NvbnYodCwgcGF0aG5hbWUsIFZSRUFELCBwYXRoKSkgIT0gMCkKPiBAQCAtOTQ1LDcgKzk0Niw3
IEBAIGludCBmY2hkaXIoaW50IGZkKQo+ICAgewo+ICAgCXRyYWNlX3Zmc19mY2hkaXIoZmQpOwo+
ICAgCXN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOwo+IC0Jc3RydWN0IGZpbGUgKmZwOwo+ICsJ
c3RydWN0IHZmc2NvcmVfZmlsZSAqZnA7Cj4gICAJaW50IGVycm9yOwo+ICAgCj4gICAJZXJyb3Ig
PSBmZ2V0KGZkLCAmZnApOwo+IEBAIC05ODEsNyArOTgyLDcgQEAgaW50IGxpbmsoY29uc3QgY2hh
ciAqb2xkcGF0aCwgY29uc3QgY2hhciAqbmV3cGF0aCkKPiAgIAl0cmFjZV92ZnNfbGluayhvbGRw
YXRoLCBuZXdwYXRoKTsKPiAgIAo+ICAgCWVycm9yID0gRU5PRU5UOwo+IC0JaWYgKG9sZHBhdGgg
PT0gbnVsbHB0ciB8fCBuZXdwYXRoID09IG51bGxwdHIpCj4gKwlpZiAob2xkcGF0aCA9PSBOVUxM
IHx8IG5ld3BhdGggPT0gTlVMTCkKPiAgIAkJZ290byBvdXRfZXJybm87Cj4gICAJaWYgKChlcnJv
ciA9IHRhc2tfY29udih0LCBvbGRwYXRoLCBWV1JJVEUsIHBhdGgxKSkgIT0gMCkKPiAgIAkJZ290
byBvdXRfZXJybm87Cj4gQEAgLTEwMTEsNyArMTAxMiw3IEBAIGludCBzeW1saW5rKGNvbnN0IGNo
YXIgKm9sZHBhdGgsIGNvbnN0IGNoYXIgKm5ld3BhdGgpCj4gICAJdHJhY2VfdmZzX3N5bWxpbmso
b2xkcGF0aCwgbmV3cGF0aCk7Cj4gICAKPiAgIAllcnJvciA9IEVOT0VOVDsKPiAtCWlmIChvbGRw
YXRoID09IG51bGxwdHIgfHwgbmV3cGF0aCA9PSBudWxscHRyKSB7Cj4gKwlpZiAob2xkcGF0aCA9
PSBOVUxMIHx8IG5ld3BhdGggPT0gTlVMTCkgewo+ICAgCQllcnJubyA9IEVOT0VOVDsKPiAgIAkJ
dHJhY2VfdmZzX3N5bWxpbmtfZXJyKGVycm9yKTsKPiAgIAkJcmV0dXJuICgtMSk7Cj4gQEAgLTEw
NDAsNyArMTA0MSw3IEBAIGludCB1bmxpbmsoY29uc3QgY2hhciAqcGF0aG5hbWUpCj4gICAJaW50
IGVycm9yOwo+ICAgCj4gICAJZXJyb3IgPSBFTk9FTlQ7Cj4gLQlpZiAocGF0aG5hbWUgPT0gbnVs
bHB0cikKPiArCWlmIChwYXRobmFtZSA9PSBOVUxMKQo+ICAgCQlnb3RvIG91dF9lcnJubzsKPiAg
IAlpZiAoKGVycm9yID0gdGFza19jb252KHQsIHBhdGhuYW1lLCBWV1JJVEUsIHBhdGgpKSAhPSAw
KQo+ICAgCQlnb3RvIG91dF9lcnJubzsKPiBAQCAtMTE1Niw3ICsxMTU3LDcgQEAgaW50IF9fc3Rh
dGZzKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBzdHJ1Y3Qgc3RhdGZzICpidWYpCj4gICAJZXJybm8g
PSBlcnJvcjsKPiAgIAlyZXR1cm4gLTE7Cj4gICB9Cj4gLXdlYWtfYWxpYXMoX19zdGF0ZnMsIHN0
YXRmcyk7Cj4gK19fd2Vha19hbGlhcyhfX3N0YXRmcywgc3RhdGZzKTsKPiAgIAo+ICAgTEZTNjQo
c3RhdGZzKTsKPiAgIAo+IEBAIC0xMTY2LDcgKzExNjcsNyBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zm
c19mc3RhdGZzX2VyciwgIiVkIiwgaW50KTsKPiAgIAo+ICAgaW50IF9fZnN0YXRmcyhpbnQgZmQs
IHN0cnVjdCBzdGF0ZnMgKmJ1ZikKPiAgIHsKPiAtCXN0cnVjdCBmaWxlICpmcDsKPiArCXN0cnVj
dCB2ZnNjb3JlX2ZpbGUgKmZwOwo+ICAgCWludCBlcnJvcjsKPiAgIAo+ICAgCXRyYWNlX3Zmc19m
c3RhdGZzKGZkLCBidWYpOwo+IEBAIC0xMTg3LDcgKzExODgsNyBAQCBpbnQgX19mc3RhdGZzKGlu
dCBmZCwgc3RydWN0IHN0YXRmcyAqYnVmKQo+ICAgCWVycm5vID0gZXJyb3I7Cj4gICAJcmV0dXJu
IC0xOwo+ICAgfQo+IC13ZWFrX2FsaWFzKF9fZnN0YXRmcywgZnN0YXRmcyk7Cj4gK19fd2Vha19h
bGlhcyhfX2ZzdGF0ZnMsIGZzdGF0ZnMpOwo+ICAgCj4gICBMRlM2NChmc3RhdGZzKTsKPiAgIAo+
IEBAIC0xMjQxLDcgKzEyNDIsNyBAQCBjaGFyICpnZXRjd2QoY2hhciAqcGF0aCwgc2l6ZV90IHNp
emUpCj4gICB7Cj4gICAJdHJhY2VfdmZzX2dldGN3ZChwYXRoLCBzaXplKTsKPiAgIAlzdHJ1Y3Qg
dGFzayAqdCA9IG1haW5fdGFzazsKPiAtCWludCBsZW4gPSBzdHJsZW4odC0+dF9jd2QpICsgMTsK
PiArCXNpemVfdCBsZW4gPSBzdHJsZW4odC0+dF9jd2QpICsgMTsKPiAgIAlpbnQgZXJyb3I7Cj4g
ICAKPiAgIAlpZiAoIXBhdGgpIHsKPiBAQCAtMTI3MSw3ICsxMjcyLDcgQEAgY2hhciAqZ2V0Y3dk
KGNoYXIgKnBhdGgsIHNpemVfdCBzaXplKQo+ICAgCW91dF9lcnJubzoKPiAgIAl0cmFjZV92ZnNf
Z2V0Y3dkX2VycihlcnJvcik7Cj4gICAJZXJybm8gPSBlcnJvcjsKPiAtCXJldHVybiBudWxscHRy
Owo+ICsJcmV0dXJuIE5VTEw7Cj4gICB9Cj4gICAKPiAgIFRSQUNFUE9JTlQodHJhY2VfdmZzX2R1
cCwgIiVkIiwgaW50KTsKPiBAQCAtMTI4Miw3ICsxMjgzLDcgQEAgVFJBQ0VQT0lOVCh0cmFjZV92
ZnNfZHVwX2VyciwgIiVkIiwgaW50KTsKPiAgICAqLwo+ICAgaW50IGR1cChpbnQgb2xkZmQpCj4g
ICB7Cj4gLQlzdHJ1Y3QgZmlsZSAqZnA7Cj4gKwlzdHJ1Y3QgdmZzY29yZV9maWxlICpmcDsKPiAg
IAlpbnQgbmV3ZmQ7Cj4gICAJaW50IGVycm9yOwo+ICAgCj4gQEAgLTEzMTUsNyArMTMxNiw3IEBA
IFRSQUNFUE9JTlQodHJhY2VfdmZzX2R1cDNfZXJyLCAiJWQiLCBpbnQpOwo+ICAgICovCj4gICBp
bnQgZHVwMyhpbnQgb2xkZmQsIGludCBuZXdmZCwgaW50IGZsYWdzKQo+ICAgewo+IC0Jc3RydWN0
IGZpbGUgKmZwOwo+ICsJc3RydWN0IHZmc2NvcmVfZmlsZSAqZnA7Cj4gICAJaW50IGVycm9yOwo+
ICAgCj4gICAJdHJhY2VfdmZzX2R1cDMob2xkZmQsIG5ld2ZkLCBmbGFncyk7Cj4gQEAgLTEzMzcs
NyArMTMzOCw3IEBAIGludCBkdXAzKGludCBvbGRmZCwgaW50IG5ld2ZkLCBpbnQgZmxhZ3MpCj4g
ICAJaWYgKGVycm9yKQo+ICAgCQlnb3RvIG91dF9lcnJubzsKPiAgIAo+IC0JZXJyb3IgPSBmZHNl
dChuZXdmZCwgZnApOwo+ICsJZXJyb3IgPSB2ZnNjb3JlX2luc3RhbGxfZmQobmV3ZmQsIGZwKTsK
PiAgIAlpZiAoZXJyb3IpIHsKPiAgIAkJZmRyb3AoZnApOwo+ICAgCQlnb3RvIG91dF9lcnJubzsK
PiBAQCAtMTM3Myw3ICsxMzc0LDcgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZmNudGxfZXJyLCAi
JWQiLCBpbnQpOwo+ICAgCj4gICBpbnQgZmNudGwoaW50IGZkLCBpbnQgY21kLCBpbnQgYXJnKQo+
ICAgewo+IC0Jc3RydWN0IGZpbGUgKmZwOwo+ICsJc3RydWN0IHZmc2NvcmVfZmlsZSAqZnA7Cj4g
ICAJaW50IHJldCA9IDAsIGVycm9yOwo+ICAgCWludCB0bXA7Cj4gICAKPiBAQCAtMTQ5MCwxNCAr
MTQ5MSwxNCBAQCBpbnQgYWNjZXNzKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBpbnQgbW9kZSkKPiAg
IGludCBmYWNjZXNzYXQoaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwgaW50IG1vZGUs
IGludCBmbGFncykKPiAgIHsKPiAgIAlpZiAoZmxhZ3MgJiBBVF9TWU1MSU5LX05PRk9MTE9XKSB7
Cj4gLQkJVU5JTVBMRU1FTlRFRCgiZmFjY2Vzc2F0KCkgd2l0aCBBVF9TWU1MSU5LX05PRk9MTE9X
Iik7Cj4gKwkJVUtfQ1JBU0goIlVOSU1QTEVNRU5URUQ6IGZhY2Nlc3NhdCgpIHdpdGggQVRfU1lN
TElOS19OT0ZPTExPVyIpOwo+ICAgCX0KPiAgIAo+ICAgCWlmIChwYXRobmFtZVswXSA9PSAnLycg
fHwgZGlyZmQgPT0gQVRfRkRDV0QpIHsKPiAgIAkJcmV0dXJuIGFjY2VzcyhwYXRobmFtZSwgbW9k
ZSk7Cj4gICAJfQo+ICAgCj4gLQlzdHJ1Y3QgZmlsZSAqZnA7Cj4gKwlzdHJ1Y3QgdmZzY29yZV9m
aWxlICpmcDsKPiAgIAlpbnQgZXJyb3IgPSBmZ2V0KGRpcmZkLCAmZnApOwo+ICAgCWlmIChlcnJv
cikgewo+ICAgCQllcnJubyA9IGVycm9yOwo+IEBAIC0xNTI4LDcgKzE1MjksNyBAQCBpbnQgZXVp
ZGFjY2Vzcyhjb25zdCBjaGFyICpwYXRobmFtZSwgaW50IG1vZGUpCj4gICAJcmV0dXJuIGFjY2Vz
cyhwYXRobmFtZSwgbW9kZSk7Cj4gICB9Cj4gICAKPiAtd2Vha19hbGlhcyhldWlkYWNjZXNzLGVh
Y2Nlc3MpOwo+ICtfX3dlYWtfYWxpYXMoZXVpZGFjY2VzcyxlYWNjZXNzKTsKPiAgIAo+ICAgI2lm
IDAKPiAgIC8qCj4gQEAgLTE1MzYsNyArMTUzNyw3IEBAIHdlYWtfYWxpYXMoZXVpZGFjY2Vzcyxl
YWNjZXNzKTsKPiAgICAqLwo+ICAgaW50IGlzYXR0eShpbnQgZmQpCj4gICB7Cj4gLQlzdHJ1Y3Qg
ZmlsZSAqZnA7Cj4gKwlzdHJ1Y3QgdmZzY29yZV9maWxlICpmcDsKPiAgIAlpbnQgaXN0dHkgPSAw
Owo+ICAgCj4gICAJdHJhY2VfdmZzX2lzYXR0eShmZCk7Cj4gQEAgLTE1NzAsNyArMTU3MSw3IEBA
IGludCB0cnVuY2F0ZShjb25zdCBjaGFyICpwYXRobmFtZSwgb2ZmX3QgbGVuZ3RoKQo+ICAgCWlu
dCBlcnJvcjsKPiAgIAo+ICAgCWVycm9yID0gRU5PRU5UOwo+IC0JaWYgKHBhdGhuYW1lID09IG51
bGxwdHIpCj4gKwlpZiAocGF0aG5hbWUgPT0gTlVMTCkKPiAgIAkJZ290byBvdXRfZXJybm87Cj4g
ICAJaWYgKChlcnJvciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwgVldSSVRFLCBwYXRoKSkgIT0g
MCkKPiAgIAkJZ290byBvdXRfZXJybm87Cj4gQEAgLTE1OTUsNyArMTU5Niw3IEBAIFRSQUNFUE9J
TlQodHJhY2VfdmZzX2Z0cnVuY2F0ZV9lcnIsICIlZCIsIGludCk7Cj4gICBpbnQgZnRydW5jYXRl
KGludCBmZCwgb2ZmX3QgbGVuZ3RoKQo+ICAgewo+ICAgCXRyYWNlX3Zmc19mdHJ1bmNhdGUoZmQs
IGxlbmd0aCk7Cj4gLQlzdHJ1Y3QgZmlsZSAqZnA7Cj4gKwlzdHJ1Y3QgdmZzY29yZV9maWxlICpm
cDsKPiAgIAlpbnQgZXJyb3I7Cj4gICAKPiAgIAllcnJvciA9IGZnZXQoZmQsICZmcCk7Cj4gQEAg
LTE2MzAsNyArMTYzMSw3IEBAIHNzaXplX3QgcmVhZGxpbmsoY29uc3QgY2hhciAqcGF0aG5hbWUs
IGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnNpemUpCj4gICAJCWdvdG8gb3V0X2Vycm5vOwo+ICAgCj4g
ICAJZXJyb3IgPSBFTk9FTlQ7Cj4gLQlpZiAocGF0aG5hbWUgPT0gbnVsbHB0cikKPiArCWlmIChw
YXRobmFtZSA9PSBOVUxMKQo+ICAgCQlnb3RvIG91dF9lcnJubzsKPiAgIAllcnJvciA9IHRhc2tf
Y29udih0LCBwYXRobmFtZSwgVldSSVRFLCBwYXRoKTsKPiAgIAlpZiAoZXJyb3IpCj4gQEAgLTE2
NTQsNyArMTY1NSw3IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2ZhbGxvY2F0ZV9lcnIsICIlZCIs
IGludCk7Cj4gICAKPiAgIGludCBmYWxsb2NhdGUoaW50IGZkLCBpbnQgbW9kZSwgbG9mZl90IG9m
ZnNldCwgbG9mZl90IGxlbikKPiAgIHsKPiAtCXN0cnVjdCBmaWxlICpmcDsKPiArCXN0cnVjdCB2
ZnNjb3JlX2ZpbGUgKmZwOwo+ICAgCWludCBlcnJvcjsKPiAgIAo+ICAgCXRyYWNlX3Zmc19mYWxs
b2NhdGUoZmQsIG1vZGUsIG9mZnNldCwgbGVuKTsKPiBAQCAtMTY4MiwxNCArMTY4MywxNCBAQCBM
RlM2NChmYWxsb2NhdGUpOwo+ICAgaW50IGZ1dGltZXNhdChpbnQgZGlyZmQsIGNvbnN0IGNoYXIg
KnBhdGhuYW1lLCBjb25zdCBzdHJ1Y3QgdGltZXZhbCB0aW1lc1syXSkKPiAgIHsKPiAgIAlzdHJ1
Y3Qgc3RhdCBzdDsKPiAtCXN0cnVjdCBmaWxlICpmcDsKPiArCXN0cnVjdCB2ZnNjb3JlX2ZpbGUg
KmZwOwo+ICAgCWludCBlcnJvcjsKPiAgIAljaGFyICphYnNvbHV0ZV9wYXRoOwo+ICAgCj4gICAJ
aWYgKChwYXRobmFtZSAmJiBwYXRobmFtZVswXSA9PSAnLycpIHx8IGRpcmZkID09IEFUX0ZEQ1dE
KQo+ICAgCQlyZXR1cm4gdXRpbWVzKHBhdGhuYW1lLCB0aW1lcyk7Cj4gICAKPiAtCS8vIE5vdGU6
IGlmIHBhdGhuYW1lID09IG51bGxwdHIsIGZ1dGltZXNhdCBvcGVyYXRlcyBvbiBkaXJmZCBpdHNl
bGYsIGFuZCBpbgo+ICsJLy8gTm90ZTogaWYgcGF0aG5hbWUgPT0gTlVMTCwgZnV0aW1lc2F0IG9w
ZXJhdGVzIG9uIGRpcmZkIGl0c2VsZiwgYW5kIGluCj4gICAJLy8gdGhhdCBjYXNlIGl0IGRvZXNu
J3QgaGF2ZSB0byBiZSBhIGRpcmVjdG9yeS4KPiAgIAlpZiAocGF0aG5hbWUpIHsKPiAgIAkJZXJy
b3IgPSBmc3RhdChkaXJmZCwgJnN0KTsKPiBAQCAtMTgzNSw3ICsxODM2LDcgQEAgaW50IGNobW9k
KGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBtb2RlX3QgbW9kZSkKPiAgIAlzdHJ1Y3QgdGFzayAqdCA9
IG1haW5fdGFzazsKPiAgIAljaGFyIHBhdGhbUEFUSF9NQVhdOwo+ICAgCWludCBlcnJvciA9IEVO
T0VOVDsKPiAtCWlmIChwYXRobmFtZSA9PSBudWxscHRyKQo+ICsJaWYgKHBhdGhuYW1lID09IE5V
TEwpCj4gICAJCWdvdG8gb3V0X2Vycm5vOwo+ICAgCWlmICgoZXJyb3IgPSB0YXNrX2NvbnYodCwg
cGF0aG5hbWUsIFZXUklURSwgcGF0aCkpICE9IDApCj4gICAJCWdvdG8gb3V0X2Vycm5vOwo+IEBA
IC0xODkzLDggKzE4OTQsOCBAQCBpbnQgbGNob3duKGNvbnN0IGNoYXIgKnBhdGgsIHVpZF90IG93
bmVyLCBnaWRfdCBncm91cCkKPiAgICNpZiAwCj4gICBzc2l6ZV90IHNlbmRmaWxlKGludCBvdXRf
ZmQsIGludCBpbl9mZCwgb2ZmX3QgKl9vZmZzZXQsIHNpemVfdCBjb3VudCkKPiAgIHsKPiAtCXN0
cnVjdCBmaWxlICppbl9mcDsKPiAtCXN0cnVjdCBmaWxlICpvdXRfZnA7Cj4gKwlzdHJ1Y3QgdmZz
Y29yZV9maWxlICppbl9mcDsKPiArCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKm91dF9mcDsKPiAgIAlm
aWxlcmVmIGluX2Z7ZmlsZXJlZl9mcm9tX2ZkKGluX2ZkKX07Cj4gICAJZmlsZXJlZiBvdXRfZntm
aWxlcmVmX2Zyb21fZmQob3V0X2ZkKX07Cj4gICAKPiBkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUv
bW91bnQuYyBiL2xpYi92ZnNjb3JlL21vdW50LmMKPiBpbmRleCAwNjkyMmZmYi4uN2QwODNkNmYg
MTAwNjQ0Cj4gLS0tIGEvbGliL3Zmc2NvcmUvbW91bnQuYwo+ICsrKyBiL2xpYi92ZnNjb3JlL21v
dW50LmMKPiBAQCAtNTQsMTIgKzU0LDEzIEBACj4gICAvKgo+ICAgICogTGlzdCBmb3IgVkZTIG1v
dW50IHBvaW50cy4KPiAgICAqLwo+IC1zdGF0aWMgc3RkOjpsaXN0PG1vdW50Kj4gbW91bnRfbGlz
dDsKPiArCj4gK1VLX0xJU1RfSEVBRChtb3VudF9saXN0KTsKPiAgIAo+ICAgLyoKPiAgICAqIEds
b2JhbCBsb2NrIHRvIGFjY2VzcyBtb3VudCBwb2ludC4KPiAgICAqLwo+IC1zdGF0aWMgbXV0ZXgg
bW91bnRfbG9jazsKPiArc3RhdGljIHN0cnVjdCB1a19tdXRleCBtb3VudF9sb2NrOwpJbnRpYWxp
emF0aW9uPwoKPiAgIAo+ICAgLyoKPiAgICAqIExvb2t1cCBmaWxlIHN5c3RlbS4KPiBAQCAtODQs
MTEgKzg1LDExIEBAIHN5c19tb3VudChjb25zdCBjaGFyICpkZXYsIGNvbnN0IGNoYXIgKmRpciwg
Y29uc3QgY2hhciAqZnNuYW1lLCBpbnQgZmxhZ3MsIGNvbnN0Cj4gICAJY29uc3Qgc3RydWN0IHZm
c3N3ICpmczsKPiAgIAlzdHJ1Y3QgbW91bnQgKm1wOwo+ICAgCXN0cnVjdCBkZXZpY2UgKmRldmlj
ZTsKPiAtCXN0cnVjdCBkZW50cnkgKmRwX2NvdmVyZWQ7Cj4gLQlzdHJ1Y3Qgdm5vZGUgKnZwOwo+
ICsJc3RydWN0IGRlbnRyeSAqZHBfY292ZXJlZCA9IE5VTEw7Cj4gKwlzdHJ1Y3Qgdm5vZGUgKnZw
ID0gTlVMTDsKPiAgIAlpbnQgZXJyb3I7Cj4gICAKPiAtCWtwcmludGYoIlZGUzogbW91bnRpbmcg
JXMgYXQgJXNcbiIsIGZzbmFtZSwgZGlyKTsKPiArCXVrX3ByX2luZm8oIlZGUzogbW91bnRpbmcg
JXMgYXQgJXNcbiIsIGZzbmFtZSwgZGlyKTsKPiAgIAo+ICAgCWlmICghZGlyIHx8ICpkaXIgPT0g
J1wwJykKPiAgIAkJcmV0dXJuIEVOT0VOVDsKPiBAQCAtOTcsNyArOTgsNyBAQCBzeXNfbW91bnQo
Y29uc3QgY2hhciAqZGV2LCBjb25zdCBjaGFyICpkaXIsIGNvbnN0IGNoYXIgKmZzbmFtZSwgaW50
IGZsYWdzLCBjb25zdAo+ICAgCWlmICghKGZzID0gZnNfZ2V0ZnMoZnNuYW1lKSkpCj4gICAJCXJl
dHVybiBFTk9ERVY7ICAvKiBObyBzdWNoIGZpbGUgc3lzdGVtICovCj4gICAKPiAtCS8qIE9wZW4g
ZGV2aWNlLiBudWxscHRyIGNhbiBiZSBzcGVjaWZpZWQgYXMgYSBkZXZpY2UuICovCj4gKwkvKiBP
cGVuIGRldmljZS4gTlVMTCBjYW4gYmUgc3BlY2lmaWVkIGFzIGEgZGV2aWNlLiAqLwo+ICAgCS8v
IEFsbG93IGRldmljZV9vcGVuKCkgdG8gZmFpbCwgaW4gd2hpY2ggY2FzZSBkZXYgaXMgaW50ZXJw
cmV0ZWQKPiAgIAkvLyBieSB0aGUgZmlsZSBzeXN0ZW0gbW91bnQgcm91dGluZSAoZS5nIHpmcyBw
b29scykKPiAgIAlkZXZpY2UgPSAwOwo+IEBAIC0xMTEsMTcgKzExMiwyMSBAQCBzeXNfbW91bnQo
Y29uc3QgY2hhciAqZGV2LCBjb25zdCBjaGFyICpkaXIsIGNvbnN0IGNoYXIgKmZzbmFtZSwgaW50
IGZsYWdzLCBjb25zdAo+ICAgCS8vIHRoYXQgb25seSBvbmUgc3lzX21vdW50KCkgcnVucyBhdCBh
IHRpbWUuIFdlIGNhbm5vdCByZXVzZSB0aGUgZXhpc3RpbmcKPiAgIAkvLyBtb3VudF9sb2NrIGZv
ciB0aGlzIHB1cnBvc2U6IElmIHdlIHRha2UgbW91bnRfbG9jayBhbmQgdGhlbiBkbwo+ICAgCS8v
IGxvb2t1cHMsIHRoaXMgaXMgbG9jayBvcmRlciBpbnZlcnNpb24gYW5kIGNhbiByZXN1bHQgaW4g
ZGVhZGxvY2suCj4gLQlzdGF0aWMgbXV0ZXggc3lzX21vdW50X2xvY2s7Cj4gLQlTQ09QRV9MT0NL
KHN5c19tb3VudF9sb2NrKTsKPiAtCVdJVEhfTE9DSyhtb3VudF9sb2NrKSB7Cj4gLQkJZm9yIChh
dXRvJiYgbXAgOiBtb3VudF9saXN0KSB7Cj4gLQkJCWlmICghc3RyY21wKG1wLT5tX3BhdGgsIGRp
cikgfHwKPiAtCQkJCShkZXZpY2UgJiYgbXAtPm1fZGV2ID09IGRldmljZSkpIHsKPiAtCQkJCWVy
cm9yID0gRUJVU1k7ICAvKiBBbHJlYWR5IG1vdW50ZWQgKi8KPiAtCQkJCWdvdG8gZXJyMTsKPiAt
CQkJfQo+ICsKPiArCS8qIFRPRE86IHByb3RlY3QgdGhlIGZ1bmN0aW9uIGZyb20gcmVlbnRyYW5j
ZSwgYXMgZGVzY3JpYmVkIGluCj4gKwkgKiB0aGUgY29tbWVudCBhYm92ZSAqLwo+ICsJLyogc3Rh
dGljIG11dGV4IHN5c19tb3VudF9sb2NrOyAqLwo+ICsJLyogU0NPUEVfTE9DSyhzeXNfbW91bnRf
bG9jayk7ICovCj4gKwo+ICsJdWtfbXV0ZXhfbG9jaygmbW91bnRfbG9jayk7Cj4gKwl1a19saXN0
X2Zvcl9lYWNoX2VudHJ5KG1wLCAmbW91bnRfbGlzdCwgbW50X2xpc3QpIHsKPiArCQlpZiAoIXN0
cmNtcChtcC0+bV9wYXRoLCBkaXIpIHx8Cj4gKwkJICAgIChkZXZpY2UgJiYgbXAtPm1fZGV2ID09
IGRldmljZSkpIHsKPiArCQkJZXJyb3IgPSBFQlVTWTsgIC8qIEFscmVhZHkgbW91bnRlZCAqLwo+
ICsJCQlnb3RvIGVycjE7CkkgdGhpbmsgaW4gdGhlIGVycm9yIGNhc2Ugd2UgYXJlIG5vdCByZWxl
YXNpbmcgdGhlIGxvY2suCgo+ICAgCQl9Cj4gICAJfQo+ICsJdWtfbXV0ZXhfdW5sb2NrKCZtb3Vu
dF9sb2NrKTsKPiAgIAkvKgo+ICAgCSAqIENyZWF0ZSBWRlMgbW91bnQgZW50cnkuCj4gICAJICov
Cj4gQEAgLTEzNCw3ICsxMzksNyBAQCBzeXNfbW91bnQoY29uc3QgY2hhciAqZGV2LCBjb25zdCBj
aGFyICpkaXIsIGNvbnN0IGNoYXIgKmZzbmFtZSwgaW50IGZsYWdzLCBjb25zdAo+ICAgCW1wLT5t
X29wID0gZnMtPnZzX29wOwo+ICAgCW1wLT5tX2ZsYWdzID0gZmxhZ3M7Cj4gICAJbXAtPm1fZGV2
ID0gZGV2aWNlOwo+IC0JbXAtPm1fZGF0YSA9IG51bGxwdHI7Cj4gKwltcC0+bV9kYXRhID0gTlVM
TDsKPiAgIAlzdHJsY3B5KG1wLT5tX3BhdGgsIGRpciwgc2l6ZW9mKG1wLT5tX3BhdGgpKTsKPiAg
IAlzdHJsY3B5KG1wLT5tX3NwZWNpYWwsIGRldiwgc2l6ZW9mKG1wLT5tX3NwZWNpYWwpKTsKPiAg
IAo+IEBAIC0xNDMsNyArMTQ4LDcgQEAgc3lzX21vdW50KGNvbnN0IGNoYXIgKmRldiwgY29uc3Qg
Y2hhciAqZGlyLCBjb25zdCBjaGFyICpmc25hbWUsIGludCBmbGFncywgY29uc3QKPiAgIAkgKi8K
PiAgIAlpZiAoKmRpciA9PSAnLycgJiYgKihkaXIgKyAxKSA9PSAnXDAnKSB7Cj4gICAJCS8qIEln
bm9yZSBpZiBpdCBtb3VudHMgdG8gZ2xvYmFsIHJvb3QgZGlyZWN0b3J5LiAqLwo+IC0JCWRwX2Nv
dmVyZWQgPSBudWxscHRyOwo+ICsJCWRwX2NvdmVyZWQgPSBOVUxMOwo+ICAgCX0gZWxzZSB7Cj4g
ICAJCWlmICgoZXJyb3IgPSBuYW1laShkaXIsICZkcF9jb3ZlcmVkKSkgIT0gMCkgewo+ICAgCj4g
QEAgLTE2MCw4ICsxNjUsOCBAQCBzeXNfbW91bnQoY29uc3QgY2hhciAqZGV2LCBjb25zdCBjaGFy
ICpkaXIsIGNvbnN0IGNoYXIgKmZzbmFtZSwgaW50IGZsYWdzLCBjb25zdAo+ICAgCS8qCj4gICAJ
ICogQ3JlYXRlIGEgcm9vdCB2bm9kZSBmb3IgdGhpcyBmaWxlIHN5c3RlbS4KPiAgIAkgKi8KPiAt
CXZnZXQobXAsIDAsICZ2cCk7Cj4gLQlpZiAodnAgPT0gbnVsbHB0cikgewo+ICsJdmZzY29yZV92
Z2V0KG1wLCAwLCAmdnApOwo+ICsJaWYgKHZwID09IE5VTEwpIHsKPiAgIAkJZXJyb3IgPSBFTk9N
RU07Cj4gICAJCWdvdG8gZXJyMzsKPiAgIAl9Cj4gQEAgLTE2OSw3ICsxNzQsNyBAQCBzeXNfbW91
bnQoY29uc3QgY2hhciAqZGV2LCBjb25zdCBjaGFyICpkaXIsIGNvbnN0IGNoYXIgKmZzbmFtZSwg
aW50IGZsYWdzLCBjb25zdAo+ICAgCXZwLT52X2ZsYWdzID0gVlJPT1Q7Cj4gICAJdnAtPnZfbW9k
ZSA9IFNfSUZESVIgfCBTX0lSVVNSIHwgU19JV1VTUiB8IFNfSVhVU1I7Cj4gICAKPiAtCW1wLT5t
X3Jvb3QgPSBkZW50cnlfYWxsb2MobnVsbHB0ciwgdnAsICIvIik7Cj4gKwltcC0+bV9yb290ID0g
ZGVudHJ5X2FsbG9jKE5VTEwsIHZwLCAiLyIpOwo+ICAgCWlmICghbXAtPm1fcm9vdCkgewo+ICAg
CQl2cHV0KHZwKTsKPiAgIAkJZ290byBlcnIzOwo+IEBAIC0xODgsOSArMTkzLDkgQEAgc3lzX21v
dW50KGNvbnN0IGNoYXIgKmRldiwgY29uc3QgY2hhciAqZGlyLCBjb25zdCBjaGFyICpmc25hbWUs
IGludCBmbGFncywgY29uc3QKPiAgIAkvKgo+ICAgCSAqIEluc2VydCB0byBtb3VudCBsaXN0Cj4g
ICAJICovCj4gLQlXSVRIX0xPQ0sobW91bnRfbG9jaykgewo+IC0JCW1vdW50X2xpc3QucHVzaF9i
YWNrKG1wKTsKPiAtCX0KPiArCXVrX211dGV4X2xvY2soJm1vdW50X2xvY2spOwo+ICsJdWtfbGlz
dF9hZGRfdGFpbCgmbXAtPm1udF9saXN0LCAmbW91bnRfbGlzdCk7Cj4gKwl1a19tdXRleF91bmxv
Y2soJm1vdW50X2xvY2spOwo+ICAgCj4gICAJcmV0dXJuIDA7ICAgLyogc3VjY2VzcyAqLwo+ICAg
IGVycjQ6Cj4gQEAgLTIyMiwxMiArMjI3LDEyIEBAIHJlbGVhc2VfbXBfZGVudHJpZXMoc3RydWN0
IG1vdW50ICptcCkKPiAgIGludAo+ICAgc3lzX3Vtb3VudDIoY29uc3QgY2hhciAqcGF0aCwgaW50
IGZsYWdzKQo+ICAgewo+IC0Jc3RydWN0IG1vdW50ICptcDsKPiArCXN0cnVjdCBtb3VudCAqbXAs
ICp0bXA7Cj4gICAJaW50IGVycm9yLCBwYXRobGVuOwo+ICAgCj4gLQlrcHJpbnRmKCJWRlM6IHVu
bW91bnRpbmcgJXNcbiIsIHBhdGgpOwo+ICsJdWtfcHJfaW5mbygiVkZTOiB1bm1vdW50aW5nICVz
XG4iLCBwYXRoKTsKPiAgIAo+IC0JU0NPUEVfTE9DSyhtb3VudF9sb2NrKTsKPiArCXVrX211dGV4
X2xvY2soJm1vdW50X2xvY2spOwo+ICAgCj4gICAJcGF0aGxlbiA9IHN0cmxlbihwYXRoKTsKPiAg
IAlpZiAocGF0aGxlbiA+PSBNQVhQQVRITEVOKSB7Cj4gQEAgLTIzNiw3ICsyNDEsNyBAQCBzeXNf
dW1vdW50Mihjb25zdCBjaGFyICpwYXRoLCBpbnQgZmxhZ3MpCj4gICAJfQo+ICAgCj4gICAJLyog
R2V0IG1vdW50IGVudHJ5ICovCj4gLQlmb3IgKGF1dG8mJiB0bXAgOiBtb3VudF9saXN0KSB7Cj4g
Kwl1a19saXN0X2Zvcl9lYWNoX2VudHJ5KHRtcCwgJm1vdW50X2xpc3QsIG1udF9saXN0KSB7Cj4g
ICAJCWlmICghc3RyY21wKHBhdGgsIHRtcC0+bV9wYXRoKSkgewo+ICAgCQkJbXAgPSB0bXA7Cj4g
ICAJCQlnb3RvIGZvdW5kOwo+IEBAIC0yNTAsMTQgKzI1NSwxNCBAQCBmb3VuZDoKPiAgIAkvKgo+
ICAgCSAqIFJvb3QgZnMgY2FuIG5vdCBiZSB1bm1vdW50ZWQuCj4gICAJICovCj4gLQlpZiAobXAt
Pm1fY292ZXJlZCA9PSBudWxscHRyICYmICEoZmxhZ3MgJiBNTlRfRk9SQ0UpKSB7Cj4gKwlpZiAo
bXAtPm1fY292ZXJlZCA9PSBOVUxMICYmICEoZmxhZ3MgJiBNTlRfRk9SQ0UpKSB7Cj4gICAJCWVy
cm9yID0gRUlOVkFMOwo+ICAgCQlnb3RvIG91dDsKPiAgIAl9Cj4gICAKPiAgIAlpZiAoKGVycm9y
ID0gVkZTX1VOTU9VTlQobXAsIGZsYWdzKSkgIT0gMCkKPiAgIAkJZ290byBvdXQ7Cj4gLQltb3Vu
dF9saXN0LnJlbW92ZShtcCk7Cj4gKwl1a19saXN0X2RlbF9pbml0KCZtcC0+bW50X2xpc3QpOwo+
ICAgCj4gICAjaWZkZWYgSEFWRV9CVUZGRVJTCj4gICAJLyogRmx1c2ggYWxsIGJ1ZmZlcnMgKi8K
PiBAQCAtMjY4LDYgKzI3Myw3IEBAIGZvdW5kOgo+ICAgCQlkZXZpY2VfY2xvc2UobXAtPm1fZGV2
KTsKPiAgIAlmcmVlKG1wKTsKPiAgICBvdXQ6Cj4gKwl1a19tdXRleF91bmxvY2soJm1vdW50X2xv
Y2spOwo+ICAgCXJldHVybiBlcnJvcjsKPiAgIH0KPiAgIAo+IEBAIC0yODEsNyArMjg3LDcgQEAg
c3lzX3Vtb3VudChjb25zdCBjaGFyICpwYXRoKQo+ICAgaW50Cj4gICBzeXNfcGl2b3Rfcm9vdChj
b25zdCBjaGFyICpuZXdfcm9vdCwgY29uc3QgY2hhciAqcHV0X29sZCkKPiAgIHsKPiAtCXN0cnVj
dCBtb3VudCAqbmV3bXAgPSBudWxscHRyLCAqb2xkbXAgPSBudWxscHRyOwo+ICsJc3RydWN0IG1v
dW50ICpuZXdtcCA9IE5VTEwsICpvbGRtcCA9IE5VTEw7Cj4gICAJaW50IGVycm9yOwo+ICAgCj4g
ICAJV0lUSF9MT0NLKG1vdW50X2xvY2spIHsKPiBAQCAtMzE0LDEyICszMjAsMTIgQEAgc3lzX3Bp
dm90X3Jvb3QoY29uc3QgY2hhciAqbmV3X3Jvb3QsIGNvbnN0IGNoYXIgKnB1dF9vbGQpCj4gICAJ
CWlmIChuZXdtcC0+bV9jb3ZlcmVkKSB7Cj4gICAJCQlkcmVsZShuZXdtcC0+bV9jb3ZlcmVkKTsK
PiAgIAkJfQo+IC0JCW5ld21wLT5tX2NvdmVyZWQgPSBudWxscHRyOwo+ICsJCW5ld21wLT5tX2Nv
dmVyZWQgPSBOVUxMOwo+ICAgCj4gICAJCWlmIChuZXdtcC0+bV9yb290LT5kX3BhcmVudCkgewo+
ICAgCQkJZHJlbGUobmV3bXAtPm1fcm9vdC0+ZF9wYXJlbnQpOwo+ICAgCQl9Cj4gLQkJbmV3bXAt
Pm1fcm9vdC0+ZF9wYXJlbnQgPSBudWxscHRyOwo+ICsJCW5ld21wLT5tX3Jvb3QtPmRfcGFyZW50
ID0gTlVMTDsKPiAgIAo+ICAgCQlzdHJsY3B5KG5ld21wLT5tX3BhdGgsICIvIiwgc2l6ZW9mKG5l
d21wLT5tX3BhdGgpKTsKPiAgIAl9Cj4gQEAgLTMzMCwxMSArMzM2LDEyIEBAIHN5c19waXZvdF9y
b290KGNvbnN0IGNoYXIgKm5ld19yb290LCBjb25zdCBjaGFyICpwdXRfb2xkKQo+ICAgaW50Cj4g
ICBzeXNfc3luYyh2b2lkKQo+ICAgewo+ICsJc3RydWN0IG1vdW50ICptcDsKPiArCXVrX211dGV4
X2xvY2soJm1vdW50X2xvY2spOwo+ICsKV2UgYXJlIG5vdCByZWxlYXNpbmcgdGhlIGxvY2sKCj4g
ICAJLyogQ2FsbCBlYWNoIG1vdW50ZWQgZmlsZSBzeXN0ZW0uICovCj4gLQlXSVRIX0xPQ0sobW91
bnRfbG9jaykgewo+IC0JCWZvciAoYXV0byYmIG1wIDogbW91bnRfbGlzdCkgewo+IC0JCQlWRlNf
U1lOQyhtcCk7Cj4gLQkJfQo+ICsJdWtfbGlzdF9mb3JfZWFjaF9lbnRyeShtcCwgJm1vdW50X2xp
c3QsIG1udF9saXN0KSB7Cj4gKwkJVkZTX1NZTkMobXApOwo+ICAgCX0KPiAgICNpZmRlZiBIQVZF
X0JVRkZFUlMKPiAgIAliaW9fc3luYygpOwo+IEBAIC0zODAsMjIgKzM4NywyMyBAQCBjb3VudF9t
YXRjaChjb25zdCBjaGFyICpwYXRoLCBjaGFyICptb3VudF9yb290KQo+ICAgaW50Cj4gICB2ZnNf
ZmluZHJvb3QoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IG1vdW50ICoqbXAsIGNoYXIgKipyb290
KQo+ICAgewo+IC0Jc3RydWN0IG1vdW50ICptID0gbnVsbHB0cjsKPiArCXN0cnVjdCBtb3VudCAq
bSA9IE5VTEwsICp0bXA7Cj4gICAJc2l6ZV90IGxlbiwgbWF4X2xlbiA9IDA7Cj4gICAKPiAgIAlp
ZiAoIXBhdGgpCj4gICAJCXJldHVybiAtMTsKPiAgIAo+ICAgCS8qIEZpbmQgbW91bnQgcG9pbnQg
ZnJvbSBuZWFyZXN0IHBhdGggKi8KPiAtCVNDT1BFX0xPQ0sobW91bnRfbG9jayk7Cj4gLQlmb3Ig
KGF1dG8mJiB0bXAgOiBtb3VudF9saXN0KSB7Cj4gKwl1a19tdXRleF9sb2NrKCZtb3VudF9sb2Nr
KTsKPiArCXVrX2xpc3RfZm9yX2VhY2hfZW50cnkodG1wLCAmbW91bnRfbGlzdCwgbW50X2xpc3Qp
IHsKPiAgIAkJbGVuID0gY291bnRfbWF0Y2gocGF0aCwgdG1wLT5tX3BhdGgpOwo+ICAgCQlpZiAo
bGVuID4gbWF4X2xlbikgewo+ICAgCQkJbWF4X2xlbiA9IGxlbjsKPiAgIAkJCW0gPSB0bXA7Cj4g
ICAJCX0KPiAgIAl9Cj4gLQlpZiAobSA9PSBudWxscHRyKQo+ICsJdWtfbXV0ZXhfdW5sb2NrKCZt
b3VudF9sb2NrKTsKPiArCWlmIChtID09IE5VTEwpCj4gICAJCXJldHVybiAtMTsKPiAgIAkqcm9v
dCA9IChjaGFyICopKHBhdGggKyBtYXhfbGVuKTsKPiAgIAlpZiAoKipyb290ID09ICcvJykKPiBA
QCAtNDEwLDggKzQxOCwxMCBAQCB2ZnNfZmluZHJvb3QoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0
IG1vdW50ICoqbXAsIGNoYXIgKipyb290KQo+ICAgdm9pZAo+ICAgdmZzX2J1c3koc3RydWN0IG1v
dW50ICptcCkKPiAgIHsKPiAtCVNDT1BFX0xPQ0sobW91bnRfbG9jayk7Cj4gLQltcC0+bV9jb3Vu
dCsrOwo+ICsJLyogVGhlIG1fY291bnQgaXMgbm90IHJlYWxseSBjaGVja2VkIGFueXdoZXJlCj4g
KwkgKiBjdXJyZW50bHkuIEF0b21pYyBpcyBlbm91Z2guIEJ1dCBpdCBjb3VsZCBiZSB0aGF0IG9i
dGFpbmluZwo+ICsJICogbW91bnRfbG9jayB3aWxsIGJlIG5lZWRlZCBpbiB0aGUgZnV0dXJlICov
Cj4gKwl1a2FyY2hfaW5jKCZtcC0+bV9jb3VudCk7Cj4gICB9Cj4gICAKPiAgIAo+IEBAIC00MjEs
OCArNDMxLDEwIEBAIHZmc19idXN5KHN0cnVjdCBtb3VudCAqbXApCj4gICB2b2lkCj4gICB2ZnNf
dW5idXN5KHN0cnVjdCBtb3VudCAqbXApCj4gICB7Cj4gLQlTQ09QRV9MT0NLKG1vdW50X2xvY2sp
Owo+IC0JbXAtPm1fY291bnQtLTsKPiArCS8qIFRoZSBtX2NvdW50IGlzIG5vdCByZWFsbHkgY2hl
Y2tlZCBhbnl3aGVyZQo+ICsJICogY3VycmVudGx5LiBBdG9taWMgaXMgZW5vdWdoLiBCdXQgaXQg
Y291bGQgYmUgdGhhdCBvYnRhaW5pbmcKPiArCSAqIG1vdW50X2xvY2sgd2lsbCBiZSBuZWVkZWQg
aW4gdGhlIGZ1dHVyZSAqLwo+ICsJdWthcmNoX2RlYygmbXAtPm1fY291bnQpOwo+ICAgfQo+ICAg
Cj4gICBpbnQKPiBAQCAtNDQxLDE0ICs0NTMsMTYgQEAgdmZzX2VpbnZhbCh2b2lkKQo+ICAgdm9p
ZAo+ICAgbW91bnRfZHVtcCh2b2lkKQo+ICAgewo+IC0JU0NPUEVfTE9DSyhtb3VudF9sb2NrKTsK
PiArCXN0cnVjdCBtb3VudCAqbXA7Cj4gKwl1a19tdXRleF9sb2NrKCZtb3VudF9sb2NrKTsKPiAg
IAo+IC0Ja3ByaW50ZigibW91bnRfZHVtcFxuIik7Cj4gLQlrcHJpbnRmKCJkZXYgICAgICBjb3Vu
dCByb290XG4iKTsKPiAtCWtwcmludGYoIi0tLS0tLS0tIC0tLS0tIC0tLS0tLS0tXG4iKTsKPiAr
CXVrX3ByX2RlYnVnKCJtb3VudF9kdW1wXG4iKTsKPiArCXVrX3ByX2RlYnVnKCJkZXYgICAgICBj
b3VudCByb290XG4iKTsKPiArCXVrX3ByX2RlYnVnKCItLS0tLS0tLSAtLS0tLSAtLS0tLS0tLVxu
Iik7Cj4gICAKPiAtCWZvciAoYXV0byYmIG1wIDogbW91bnRfbGlzdCkgewo+IC0JCWtwcmludGYo
IiU4eCAlNWQgJXNcbiIsIG1wLT5tX2RldiwgbXAtPm1fY291bnQsIG1wLT5tX3BhdGgpOwo+ICsJ
dWtfbGlzdF9mb3JfZWFjaF9lbnRyeShtcCwgJm1vdW50X2xpc3QsIG1udF9saXN0KSB7Cj4gKwkJ
dWtfcHJfZGVidWcoIiU4cCAlNWQgJXNcbiIsIG1wLT5tX2RldiwgbXAtPm1fY291bnQsIG1wLT5t
X3BhdGgpOwo+ICAgCX0KPiArCXVrX211dGV4X3VubG9jaygmbW91bnRfbG9jayk7Cj4gICB9Cj4g
ICAjZW5kaWYKPiBkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvc3Vicl91aW8uYyBiL2xpYi92ZnNj
b3JlL3N1YnJfdWlvLmMKPiBpbmRleCBiYmNhMzM2Mi4uZDhlOWQxYmUgMTAwNjQ0Cj4gLS0tIGEv
bGliL3Zmc2NvcmUvc3Vicl91aW8uYwo+ICsrKyBiL2xpYi92ZnNjb3JlL3N1YnJfdWlvLmMKPiBA
QCAtNDgsNyArNDgsNyBAQAo+ICAgaW50Cj4gICB1aW9tb3ZlKHZvaWQgKmNwLCBpbnQgbiwgc3Ry
dWN0IHVpbyAqdWlvKQo+ICAgewo+IC0JYXNzZXJ0KHVpby0+dWlvX3J3ID09IFVJT19SRUFEIHx8
IHVpby0+dWlvX3J3ID09IFVJT19XUklURSk7Cj4gKwlVS19BU1NFUlQodWlvLT51aW9fcncgPT0g
VUlPX1JFQUQgfHwgdWlvLT51aW9fcncgPT0gVUlPX1dSSVRFKTsKPiAgIAo+ICAgCXdoaWxlIChu
ID4gMCAmJiB1aW8tPnVpb19yZXNpZCkgewo+ICAgCQlzdHJ1Y3QgaW92ZWMgKmlvdiA9IHVpby0+
dWlvX2lvdjsKPiBkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvc3lzY2FsbHMuYyBiL2xpYi92ZnNj
b3JlL3N5c2NhbGxzLmMKPiBpbmRleCBmNTBmYjM4Zi4uZmEwNDk4ZTcgMTAwNjQ0Cj4gLS0tIGEv
bGliL3Zmc2NvcmUvc3lzY2FsbHMuYwo+ICsrKyBiL2xpYi92ZnNjb3JlL3N5c2NhbGxzLmMKPiBA
QCAtNjUsOSArNjUsOSBAQCBvcGVuX25vX2ZvbGxvd19jaGsoY2hhciAqcGF0aCkKPiAgIAlzdHJ1
Y3QgZGVudHJ5ICpkcDsKPiAgIAlzdHJ1Y3Qgdm5vZGUgICp2cDsKPiAgIAo+IC0JZGRwID0gbnVs
bHB0cjsKPiAtCWRwICA9IG51bGxwdHI7Cj4gLQl2cCAgPSBudWxscHRyOwo+ICsJZGRwID0gTlVM
TDsKPiArCWRwICA9IE5VTEw7Cj4gKwl2cCAgPSBOVUxMOwo+ICAgCj4gICAJZXJyb3IgPSBsb29r
dXAocGF0aCwgJmRkcCwgJm5hbWUpOwo+ICAgCWlmIChlcnJvcikgewo+IEBAIC04OCwxNSArODgs
MTUgQEAgb3Blbl9ub19mb2xsb3dfY2hrKGNoYXIgKnBhdGgpCj4gICAKPiAgIAllcnJvciA9IDA7
Cj4gICBvdXQ6Cj4gLQlpZiAodnAgIT0gbnVsbHB0cikgewo+ICsJaWYgKHZwICE9IE5VTEwpIHsK
PiAgIAkJdm5fdW5sb2NrKHZwKTsKPiAgIAl9Cj4gICAKPiAtCWlmIChkcCAhPSBudWxscHRyKSB7
Cj4gKwlpZiAoZHAgIT0gTlVMTCkgewo+ICAgCQlkcmVsZShkcCk7Cj4gICAJfQo+ICAgCj4gLQlp
ZiAoZGRwICE9IG51bGxwdHIpIHsKPiArCWlmIChkZHAgIT0gTlVMTCkgewo+ICAgCQlkcmVsZShk
ZHApOwo+ICAgCX0KPiAgIAo+IEBAIC0xMDQsOSArMTA0LDkgQEAgb3V0Ogo+ICAgfQo+ICAgCj4g
ICBpbnQKPiAtc3lzX29wZW4oY2hhciAqcGF0aCwgaW50IGZsYWdzLCBtb2RlX3QgbW9kZSwgc3Ry
dWN0IGZpbGUgKipmcHApCj4gK3N5c19vcGVuKGNoYXIgKnBhdGgsIGludCBmbGFncywgbW9kZV90
IG1vZGUsIHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKipmcHApCj4gICB7Cj4gLQlmaWxlICpmcDsKPiAr
CXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwOwo+ICAgCXN0cnVjdCBkZW50cnkgKmRwLCAqZGRwOwo+
ICAgCXN0cnVjdCB2bm9kZSAqdnA7Cj4gICAJY2hhciAqZmlsZW5hbWU7Cj4gQEAgLTExNSwxMSAr
MTE1LDExIEBAIHN5c19vcGVuKGNoYXIgKnBhdGgsIGludCBmbGFncywgbW9kZV90IG1vZGUsIHN0
cnVjdCBmaWxlICoqZnBwKQo+ICAgCURQUklOVEYoVkZTREJfU1lTQ0FMTCwgKCJzeXNfb3Blbjog
cGF0aD0lcyBmbGFncz0leCBtb2RlPSV4XG4iLAo+ICAgCQkJCXBhdGgsIGZsYWdzLCBtb2RlKSk7
Cj4gICAKPiAtCWZsYWdzID0gZmZsYWdzKGZsYWdzKTsKPiArCWZsYWdzID0gdmZzY29yZV9mZmxh
Z3MoZmxhZ3MpOwo+ICAgCWlmIChmbGFncyAmIE9fQ1JFQVQpIHsKPiAgIAkJZXJyb3IgPSBuYW1l
aShwYXRoLCAmZHApOwo+ICAgCQlpZiAoZXJyb3IgPT0gRU5PRU5UKSB7Cj4gLQkJCS8qIENyZWF0
ZSBuZXcgZmlsZS4gKi8KPiArCQkJLyogQ3JlYXRlIG5ldyBzdHJ1Y3QgdmZzY29yZV9maWxlLiAq
Lwo+ICAgCQkJaWYgKChlcnJvciA9IGxvb2t1cChwYXRoLCAmZGRwLCAmZmlsZW5hbWUpKSAhPSAw
KQo+ICAgCQkJCXJldHVybiBlcnJvcjsKPiAgIAo+IEBAIC0yMzMsMTQgKzIzMywxNCBAQCBvdXRf
ZHJlbGU6Cj4gICB9Cj4gICAKPiAgIGludAo+IC1zeXNfY2xvc2Uoc3RydWN0IGZpbGUgKmZwKQo+
ICtzeXNfY2xvc2Uoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAgX191bnVzZWQpCj4gICB7Cj4gICAK
PiAgIAlyZXR1cm4gMDsKPiAgIH0KPiAgIAo+ICAgaW50Cj4gLXN5c19yZWFkKHN0cnVjdCBmaWxl
ICpmcCwgY29uc3Qgc3RydWN0IGlvdmVjICppb3YsIHNpemVfdCBuaW92LAo+ICtzeXNfcmVhZChz
dHJ1Y3QgdmZzY29yZV9maWxlICpmcCwgY29uc3Qgc3RydWN0IGlvdmVjICppb3YsIHNpemVfdCBu
aW92LAo+ICAgCQlvZmZfdCBvZmZzZXQsIHNpemVfdCAqY291bnQpCj4gICB7Cj4gICAJaW50IGVy
cm9yID0gMDsKPiBAQCAtMjkwLDcgKzI5MCw3IEBAIHN5c19yZWFkKHN0cnVjdCBmaWxlICpmcCwg
Y29uc3Qgc3RydWN0IGlvdmVjICppb3YsIHNpemVfdCBuaW92LAo+ICAgfQo+ICAgCj4gICBpbnQK
PiAtc3lzX3dyaXRlKHN0cnVjdCBmaWxlICpmcCwgY29uc3Qgc3RydWN0IGlvdmVjICppb3YsIHNp
emVfdCBuaW92LAo+ICtzeXNfd3JpdGUoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAsIGNvbnN0IHN0
cnVjdCBpb3ZlYyAqaW92LCBzaXplX3QgbmlvdiwKPiAgIAkJb2ZmX3Qgb2Zmc2V0LCBzaXplX3Qg
KmNvdW50KQo+ICAgewo+ICAgCXN0cnVjdCBpb3ZlYyAqY29weV9pb3Y7Cj4gQEAgLTMzNywxMiAr
MzM3LDEyIEBAIHN5c193cml0ZShzdHJ1Y3QgZmlsZSAqZnAsIGNvbnN0IHN0cnVjdCBpb3ZlYyAq
aW92LCBzaXplX3QgbmlvdiwKPiAgIH0KPiAgIAo+ICAgaW50Cj4gLXN5c19sc2VlayhzdHJ1Y3Qg
ZmlsZSAqZnAsIG9mZl90IG9mZiwgaW50IHR5cGUsIG9mZl90ICpvcmlnaW4pCj4gK3N5c19sc2Vl
ayhzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCwgb2ZmX3Qgb2ZmLCBpbnQgdHlwZSwgb2ZmX3QgKm9y
aWdpbikKPiAgIHsKPiAgIAlzdHJ1Y3Qgdm5vZGUgKnZwOwo+ICAgCj4gLQlEUFJJTlRGKFZGU0RC
X1NZU0NBTEwsICgic3lzX3NlZWs6IGZwPSV4IG9mZj0lZCB0eXBlPSVkXG4iLAo+IC0JCQkJKHVf
bG9uZylmcCwgKHVfaW50KW9mZiwgdHlwZSkpOwo+ICsJRFBSSU5URihWRlNEQl9TWVNDQUxMLCAo
InN5c19zZWVrOiBmcD0lcCBvZmY9JXVkIHR5cGU9JWRcbiIsCj4gKwkJCQlmcCwgKHVuc2lnbmVk
IGludClvZmYsIHR5cGUpKTsKPiAgIAo+ICAgCWlmICghZnAtPmZfZGVudHJ5KSB7Cj4gICAJICAg
IC8vIExpbnV4IGRvZXNuJ3QgaW1wbGVtZW50IGxzZWVrKCkgb24gcGlwZXMsIHNvY2tldHMsIG9y
IHR0eXMuCj4gQEAgLTM3MywxMSArMzczLDExIEBAIHN5c19sc2VlayhzdHJ1Y3QgZmlsZSAqZnAs
IG9mZl90IG9mZiwgaW50IHR5cGUsIG9mZl90ICpvcmlnaW4pCj4gICB9Cj4gICAKPiAgIGludAo+
IC1zeXNfaW9jdGwoc3RydWN0IGZpbGUgKmZwLCB1X2xvbmcgcmVxdWVzdCwgdm9pZCAqYnVmKQo+
ICtzeXNfaW9jdGwoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAsIHVuc2lnbmVkIGxvbmcgcmVxdWVz
dCwgdm9pZCAqYnVmKQo+ICAgewo+ICAgCWludCBlcnJvcjsKPiAgIAo+IC0JRFBSSU5URihWRlNE
Ql9TWVNDQUxMLCAoInN5c19pb2N0bDogZnA9JXggcmVxdWVzdD0leFxuIiwgZnAsIHJlcXVlc3Qp
KTsKPiArCURQUklOVEYoVkZTREJfU1lTQ0FMTCwgKCJzeXNfaW9jdGw6IGZwPSVwIHJlcXVlc3Q9
JWx1eFxuIiwgZnAsIHJlcXVlc3QpKTsKPiAgIAo+ICAgCWlmICgoZnAtPmZfZmxhZ3MgJiAoRlJF
QUQgfCBGV1JJVEUpKSA9PSAwKQo+ICAgCQlyZXR1cm4gRUJBREY7Cj4gQEAgLTM4OSw3ICszODks
NyBAQCBzeXNfaW9jdGwoc3RydWN0IGZpbGUgKmZwLCB1X2xvbmcgcmVxdWVzdCwgdm9pZCAqYnVm
KQo+ICAgfQo+ICAgCj4gICBpbnQKPiAtc3lzX2ZzeW5jKHN0cnVjdCBmaWxlICpmcCkKPiArc3lz
X2ZzeW5jKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwKQo+ICAgewo+ICAgCXN0cnVjdCB2bm9kZSAq
dnA7Cj4gICAJaW50IGVycm9yOwo+IEBAIC00MDcsNyArNDA3LDcgQEAgc3lzX2ZzeW5jKHN0cnVj
dCBmaWxlICpmcCkKPiAgIH0KPiAgIAo+ICAgaW50Cj4gLXN5c19mc3RhdChzdHJ1Y3QgZmlsZSAq
ZnAsIHN0cnVjdCBzdGF0ICpzdCkKPiArc3lzX2ZzdGF0KHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZw
LCBzdHJ1Y3Qgc3RhdCAqc3QpCj4gICB7Cj4gICAJaW50IGVycm9yID0gMDsKPiAgIAo+IEBAIC00
MjUsNyArNDI1LDcgQEAgc3RhdGljIGludAo+ICAgY2hlY2tfZGlyX2VtcHR5KGNoYXIgKnBhdGgp
Cj4gICB7Cj4gICAJaW50IGVycm9yOwo+IC0Jc3RydWN0IGZpbGUgKmZwOwo+ICsJc3RydWN0IHZm
c2NvcmVfZmlsZSAqZnA7Cj4gICAJc3RydWN0IGRpcmVudCBkaXI7Cj4gICAKPiAgIAlEUFJJTlRG
KFZGU0RCX1NZU0NBTEwsICgiY2hlY2tfZGlyX2VtcHR5XG4iKSk7Cj4gQEAgLTQ1Myw3ICs0NTMs
NyBAQCBvdXRfZXJyb3I6Cj4gICB9Cj4gICAKPiAgIGludAo+IC1zeXNfcmVhZGRpcihzdHJ1Y3Qg
ZmlsZSAqZnAsIHN0cnVjdCBkaXJlbnQgKmRpcikKPiArc3lzX3JlYWRkaXIoc3RydWN0IHZmc2Nv
cmVfZmlsZSAqZnAsIHN0cnVjdCBkaXJlbnQgKmRpcikKPiAgIHsKPiAgIAlzdHJ1Y3Qgdm5vZGUg
KmR2cDsKPiAgIAlpbnQgZXJyb3I7Cj4gQEAgLTQ3Nyw3ICs0NzcsNyBAQCBzeXNfcmVhZGRpcihz
dHJ1Y3QgZmlsZSAqZnAsIHN0cnVjdCBkaXJlbnQgKmRpcikKPiAgIH0KPiAgIAo+ICAgaW50Cj4g
LXN5c19yZXdpbmRkaXIoc3RydWN0IGZpbGUgKmZwKQo+ICtzeXNfcmV3aW5kZGlyKHN0cnVjdCB2
ZnNjb3JlX2ZpbGUgKmZwKQo+ICAgewo+ICAgCXN0cnVjdCB2bm9kZSAqZHZwOwo+ICAgCj4gQEAg
LTQ5Niw3ICs0OTYsNyBAQCBzeXNfcmV3aW5kZGlyKHN0cnVjdCBmaWxlICpmcCkKPiAgIH0KPiAg
IAo+ICAgaW50Cj4gLXN5c19zZWVrZGlyKHN0cnVjdCBmaWxlICpmcCwgbG9uZyBsb2MpCj4gK3N5
c19zZWVrZGlyKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwLCBsb25nIGxvYykKPiAgIHsKPiAgIAlz
dHJ1Y3Qgdm5vZGUgKmR2cDsKPiAgIAo+IEBAIC01MTUsNyArNTE1LDcgQEAgc3lzX3NlZWtkaXIo
c3RydWN0IGZpbGUgKmZwLCBsb25nIGxvYykKPiAgIH0KPiAgIAo+ICAgaW50Cj4gLXN5c190ZWxs
ZGlyKHN0cnVjdCBmaWxlICpmcCwgbG9uZyAqbG9jKQo+ICtzeXNfdGVsbGRpcihzdHJ1Y3QgdmZz
Y29yZV9maWxlICpmcCwgbG9uZyAqbG9jKQo+ICAgewo+ICAgCXN0cnVjdCB2bm9kZSAqZHZwOwo+
ICAgCj4gQEAgLTY2MiwxNCArNjYyLDE0IEBAIHN5c19ta25vZChjaGFyICpwYXRoLCBtb2RlX3Qg
bW9kZSkKPiAgICAqCj4gICAgKiBBc3N1bWVzIGJvdGggcGF0aHMgZG8gbm90IGhhdmUgdHJhaWxp
bmcgc2xhc2hlcy4KPiAgICAqLwo+IC1zdGF0aWMgYm9vbAo+ICtzdGF0aWMgaW50Cj4gICBpc19w
YXJlbnQoY29uc3QgY2hhciAqcGFyZW50LCBjb25zdCBjaGFyICpjaGlsZCkKPiAgIHsKPiAgIAlz
aXplX3QgcF9sZW4gPSBzdHJsZW4ocGFyZW50KTsKPiAgIAlyZXR1cm4gIXN0cm5jbXAocGFyZW50
LCBjaGlsZCwgcF9sZW4pICYmIChwYXJlbnRbcF9sZW4tMV0gPT0gJy8nIHx8IGNoaWxkW3BfbGVu
XSA9PSAnLycpOwo+ICAgfQo+ICAgCj4gLXN0YXRpYyBib29sCj4gK3N0YXRpYyBpbnQKPiAgIGhh
c190cmFpbGluZyhjb25zdCBjaGFyICpwYXRoLCBjaGFyIGNoKQo+ICAgewo+ICAgCXNpemVfdCBs
ZW4gPSBzdHJsZW4ocGF0aCk7Cj4gQEAgLTY5NSwxNiArNjk1LDE2IEBAIHN5c19yZW5hbWUoY2hh
ciAqc3JjLCBjaGFyICpkZXN0KQo+ICAgCWNoYXIgKnNuYW1lLCAqZG5hbWU7Cj4gICAJaW50IGVy
cm9yOwo+ICAgCWNoYXIgcm9vdFtdID0gIi8iOwo+IC0JYm9vbCB0czsgLyogdHJhaWxpbmcgc2xh
c2ggKi8KPiArCWludCB0czsgLyogdHJhaWxpbmcgc2xhc2ggKi8KPiAgIAo+ICAgCURQUklOVEYo
VkZTREJfU1lTQ0FMTCwgKCJzeXNfcmVuYW1lOiBzcmM9JXMgZGVzdD0lc1xuIiwgc3JjLCBkZXN0
KSk7Cj4gICAKPiAtCXRzID0gZmFsc2U7Cj4gLQlpZiAoaGFzX3RyYWlsaW5nKHNyYywgJy8nKSA9
PSB0cnVlKSB7Cj4gKwl0cyA9IDA7Cj4gKwlpZiAoaGFzX3RyYWlsaW5nKHNyYywgJy8nKSkgewo+
ICAgCQlpZiAoc3RybGVuKHNyYykgIT0gMSkgewo+ICAgCQkJLyogcmVtb3ZlIHRyYWlsaW5nIHNs
YXNoIGlmZiBwYXRoIGlzIG5vbmUgcm9vdCAqLwo+ICAgCQkJc3RyaXBfdHJhaWxpbmcoc3JjLCAn
LycpOwo+IC0JCQl0cyA9IHRydWU7Cj4gKwkJCXRzID0gMTsKPiAgIAkJfQo+ICAgCX0KPiAgIAo+
IEBAIC03MjIsMTcgKzcyMiwxNyBAQCBzeXNfcmVuYW1lKGNoYXIgKnNyYywgY2hhciAqZGVzdCkK
PiAgIAl2cDEgPSBkcDEtPmRfdm5vZGU7Cj4gICAJdm5fbG9jayh2cDEpOwo+ICAgCj4gLQlpZiAo
dnAxLT52X3R5cGUgIT0gVkRJUiAmJiB0cyA9PSB0cnVlKSB7Cj4gKwlpZiAodnAxLT52X3R5cGUg
IT0gVkRJUiAmJiB0cykgewo+ICAgCQllcnJvciA9IEVOT1RESVI7Cj4gICAJCWdvdG8gZXJyMTsK
PiAgIAl9Cj4gICAKPiAtCXRzID0gZmFsc2U7Cj4gLQlpZiAoaGFzX3RyYWlsaW5nKGRlc3QsICcv
JykgPT0gdHJ1ZSkgewo+ICsJdHMgPSAwOwo+ICsJaWYgKGhhc190cmFpbGluZyhkZXN0LCAnLycp
KSB7Cj4gICAJCWlmIChzdHJsZW4oZGVzdCkgIT0gMSkgewo+ICAgCQkJLyogcmVtb3ZlIHRyYWls
aW5nIHNsYXNoIGlmZiBwYXRoIGlzIG5vbmUgcm9vdCAqLwo+ICAgCQkJc3RyaXBfdHJhaWxpbmco
ZGVzdCwgJy8nKTsKPiAtCQkJdHMgPSB0cnVlOwo+ICsJCQl0cyA9IDE7Cj4gICAJCX0KPiAgIAl9
Cj4gICAKPiBAQCAtNzQ5LDcgKzc0OSw3IEBAIHN5c19yZW5hbWUoY2hhciAqc3JjLCBjaGFyICpk
ZXN0KQo+ICAgCQl2bl9sb2NrKHZwMik7Cj4gICAKPiAgIAkJaWYgKHZwMi0+dl90eXBlICE9IFZE
SVIgJiYgdnAyLT52X3R5cGUgIT0gVkxOSykgewo+IC0JCQlpZiAodnAxLT52X3R5cGUgPT0gVkRJ
UiB8fCB0cyA9PSB0cnVlKSB7Cj4gKwkJCWlmICh2cDEtPnZfdHlwZSA9PSBWRElSIHx8IHRzKSB7
Cj4gICAJCQkJZXJyb3IgPSBFTk9URElSOwo+ICAgCQkJCWdvdG8gZXJyMjsKPiAgIAkJCX0KPiBA
QCAtNzYyLDcgKzc2Miw3IEBAIHN5c19yZW5hbWUoY2hhciAqc3JjLCBjaGFyICpkZXN0KQo+ICAg
CQkJZ290byBlcnIyOwo+ICAgCQl9Cj4gICAJfSBlbHNlIGlmIChlcnJvciA9PSBFTk9FTlQpIHsK
PiAtCQlpZiAodnAxLT52X3R5cGUgIT0gVkRJUiAmJiB0cyA9PSB0cnVlKSB7Cj4gKwkJaWYgKHZw
MS0+dl90eXBlICE9IFZESVIgJiYgdHMpIHsKPiAgIAkJCWVycm9yID0gRU5PVERJUjsKPiAgIAkJ
CWdvdG8gZXJyMjsKPiAgIAkJfQo+IEBAIC03ODcsNyArNzg3LDcgQEAgc3lzX3JlbmFtZShjaGFy
ICpzcmMsIGNoYXIgKmRlc3QpCj4gICAJfQo+ICAgCj4gICAJZG5hbWUgPSBzdHJyY2hyKGRlc3Qs
ICcvJyk7Cj4gLQlpZiAoZG5hbWUgPT0gbnVsbHB0cikgewo+ICsJaWYgKGRuYW1lID09IE5VTEwp
IHsKPiAgIAkJZXJyb3IgPSBFTk9URElSOwo+ICAgCQlnb3RvIGVycjI7Cj4gICAJfQo+IEBAIC04
NDgsMTUgKzg0OCwxNSBAQCBzeXNfc3ltbGluayhjb25zdCBjaGFyICpvbGRwYXRoLCBjb25zdCBj
aGFyICpuZXdwYXRoKQo+ICAgCXN0cnVjdCBkZW50cnkJKm5ld2RpcmRwOwo+ICAgCWNoYXIJCSpu
YW1lOwo+ICAgCj4gLQlpZiAob2xkcGF0aCA9PSBudWxscHRyIHx8IG5ld3BhdGggPT0gbnVsbHB0
cikgewo+ICsJaWYgKG9sZHBhdGggPT0gTlVMTCB8fCBuZXdwYXRoID09IE5VTEwpIHsKPiAgIAkJ
cmV0dXJuIChFRkFVTFQpOwo+ICAgCX0KPiAgIAo+ICAgCURQUklOVEYoVkZTREJfU1lTQ0FMTCwg
KCJzeXNfbGluazogb2xkcGF0aD0lcyBuZXdwYXRoPSVzXG4iLAo+ICAgCQkJCW9sZHBhdGgsIG5l
d3BhdGgpKTsKPiAgIAo+IC0JbmV3ZHAJCT0gbnVsbHB0cjsKPiAtCW5ld2RpcmRwCT0gbnVsbHB0
cjsKPiArCW5ld2RwCQk9IE5VTEw7Cj4gKwluZXdkaXJkcAk9IE5VTEw7Cj4gICAKPiAgIAllcnJv
ciA9IHRhc2tfY29udih0LCBuZXdwYXRoLCBWV1JJVEUsIG5wKTsKPiAgIAlpZiAoZXJyb3IgIT0g
MCkgewo+IEBAIC04OTIsNyArODkyLDcgQEAgc3lzX3N5bWxpbmsoY29uc3QgY2hhciAqb2xkcGF0
aCwgY29uc3QgY2hhciAqbmV3cGF0aCkKPiAgIAllcnJvciA9IFZPUF9TWU1MSU5LKG5ld2RpcmRw
LT5kX3Zub2RlLCBuYW1lLCBvcCk7Cj4gICAKPiAgIG91dDoKPiAtCWlmIChuZXdkaXJkcCAhPSBu
dWxscHRyKSB7Cj4gKwlpZiAobmV3ZGlyZHAgIT0gTlVMTCkgewo+ICAgCQl2bl91bmxvY2sobmV3
ZGlyZHAtPmRfdm5vZGUpOwo+ICAgCQlkcmVsZShuZXdkaXJkcCk7Cj4gICAJfQo+IEBAIC05NzIs
OSArOTcyLDkgQEAgc3lzX3VubGluayhjaGFyICpwYXRoKQo+ICAgCj4gICAJRFBSSU5URihWRlNE
Ql9TWVNDQUxMLCAoInN5c191bmxpbms6IHBhdGg9JXNcbiIsIHBhdGgpKTsKPiAgIAo+IC0JZGRw
ICAgPSBudWxscHRyOwo+IC0JZHAgICAgPSBudWxscHRyOwo+IC0JdnAgICAgPSBudWxscHRyOwo+
ICsJZGRwICAgPSBOVUxMOwo+ICsJZHAgICAgPSBOVUxMOwo+ICsJdnAgICAgPSBOVUxMOwo+ICAg
Cj4gICAJZXJyb3IgPSBsb29rdXAocGF0aCwgJmRkcCwgJm5hbWUpOwo+ICAgCWlmIChlcnJvciAh
PSAwKSB7Cj4gQEAgLTEwMTMsMTUgKzEwMTMsMTUgQEAgc3lzX3VubGluayhjaGFyICpwYXRoKQo+
ICAgCWRyZWxlKGRwKTsKPiAgIAlyZXR1cm4gZXJyb3I7Cj4gICAgb3V0Ogo+IC0JaWYgKHZwICE9
IG51bGxwdHIpIHsKPiArCWlmICh2cCAhPSBOVUxMKSB7Cj4gICAJCXZuX3VubG9jayh2cCk7Cj4g
ICAJfQo+ICAgCj4gLQlpZiAoZHAgIT0gbnVsbHB0cikgewo+ICsJaWYgKGRwICE9IE5VTEwpIHsK
PiAgIAkJZHJlbGUoZHApOwo+ICAgCX0KPiAgIAo+IC0JaWYgKGRkcCAhPSBudWxscHRyKSB7Cj4g
KwlpZiAoZGRwICE9IE5VTEwpIHsKPiAgIAkJZHJlbGUoZGRwKTsKPiAgIAl9Cj4gICAJcmV0dXJu
IGVycm9yOwo+IEBAIC0xMTE1LDcgKzExMTUsNyBAQCBzeXNfc3RhdGZzKGNoYXIgKnBhdGgsIHN0
cnVjdCBzdGF0ZnMgKmJ1ZikKPiAgIH0KPiAgIAo+ICAgaW50Cj4gLXN5c19mc3RhdGZzKHN0cnVj
dCBmaWxlICpmcCwgc3RydWN0IHN0YXRmcyAqYnVmKQo+ICtzeXNfZnN0YXRmcyhzdHJ1Y3QgdmZz
Y29yZV9maWxlICpmcCwgc3RydWN0IHN0YXRmcyAqYnVmKQo+ICAgewo+ICAgCXN0cnVjdCB2bm9k
ZSAqdnA7Cj4gICAJaW50IGVycm9yID0gMDsKPiBAQCAtMTE1Miw3ICsxMTUyLDcgQEAgc3lzX3Ry
dW5jYXRlKGNoYXIgKnBhdGgsIG9mZl90IGxlbmd0aCkKPiAgIH0KPiAgIAo+ICAgaW50Cj4gLXN5
c19mdHJ1bmNhdGUoc3RydWN0IGZpbGUgKmZwLCBvZmZfdCBsZW5ndGgpCj4gK3N5c19mdHJ1bmNh
dGUoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAsIG9mZl90IGxlbmd0aCkKPiAgIHsKPiAgIAlzdHJ1
Y3Qgdm5vZGUgKnZwOwo+ICAgCWludCBlcnJvcjsKPiBAQCAtMTE2OSw3ICsxMTY5LDcgQEAgc3lz
X2Z0cnVuY2F0ZShzdHJ1Y3QgZmlsZSAqZnAsIG9mZl90IGxlbmd0aCkKPiAgIH0KPiAgIAo+ICAg
aW50Cj4gLXN5c19mY2hkaXIoc3RydWN0IGZpbGUgKmZwLCBjaGFyICpjd2QpCj4gK3N5c19mY2hk
aXIoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAsIGNoYXIgKmN3ZCkKPiAgIHsKPiAgIAlzdHJ1Y3Qg
dm5vZGUgKmR2cDsKPiAgIAo+IEBAIC0xMjQ0LDcgKzEyNDQsNyBAQCBzeXNfcmVhZGxpbmsoY2hh
ciAqcGF0aCwgY2hhciAqYnVmLCBzaXplX3QgYnVmc2l6ZSwgc3NpemVfdCAqc2l6ZSkKPiAgIC8q
Cj4gICAgKiBDaGVjayB0aGUgdmFsaWRpdHkgb2YgdGhlIG1lbWJlcnMgb2YgYSBzdHJ1Y3QgdGlt
ZXZhbC4KPiAgICAqLwo+IC1zdGF0aWMgYm9vbCBpc190aW1ldmFsX3ZhbGlkKGNvbnN0IHN0cnVj
dCB0aW1ldmFsICp0aW1lKQo+ICtzdGF0aWMgaW50IGlzX3RpbWV2YWxfdmFsaWQoY29uc3Qgc3Ry
dWN0IHRpbWV2YWwgKnRpbWUpCj4gICB7Cj4gICAJcmV0dXJuICh0aW1lLT50dl9zZWMgPj0gMCkg
JiYKPiAgIAkJICAgKHRpbWUtPnR2X3VzZWMgPj0gMCAmJiB0aW1lLT50dl91c2VjIDwgMTAwMDAw
MCk7Cj4gQEAgLTEyNzYsMTggKzEyNzYsMTggQEAgc3lzX3V0aW1lcyhjaGFyICpwYXRoLCBjb25z
dCBzdHJ1Y3QgdGltZXZhbCB0aW1lc1syXSwgaW50IGZsYWdzKQo+ICAgCQlyZXR1cm4gRUlOVkFM
Owo+ICAgCj4gICAJLy8gQ29udmVydCBlYWNoIGVsZW1lbnQgb2YgdGltZXZhbCBhcnJheSB0byB0
aGUgdGltZXNwZWMgdHlwZQo+IC0JY29udmVydF90aW1ldmFsKHRpbWVzcGVjX3RpbWVzWzBdLCB0
aW1lcyA/IHRpbWVzICsgMCA6IG51bGxwdHIpOwo+IC0JY29udmVydF90aW1ldmFsKHRpbWVzcGVj
X3RpbWVzWzFdLCB0aW1lcyA/IHRpbWVzICsgMSA6IG51bGxwdHIpOwo+ICsJY29udmVydF90aW1l
dmFsKHRpbWVzcGVjX3RpbWVzWzBdLCB0aW1lcyA/IHRpbWVzICsgMCA6IE5VTEwpOwo+ICsJY29u
dmVydF90aW1ldmFsKHRpbWVzcGVjX3RpbWVzWzFdLCB0aW1lcyA/IHRpbWVzICsgMSA6IE5VTEwp
Owo+ICAgCj4gICAJaWYgKGZsYWdzICYgQVRfU1lNTElOS19OT0ZPTExPVykgewo+ICAgCQlzdHJ1
Y3QgZGVudHJ5ICpkZHA7Cj4gLQkJZXJyb3IgPSBsb29rdXAocGF0aCwgJmRkcCwgbnVsbHB0cik7
Cj4gKwkJZXJyb3IgPSBsb29rdXAocGF0aCwgJmRkcCwgTlVMTCk7Cj4gICAJCWlmIChlcnJvcikg
ewo+ICAgCQkJcmV0dXJuIGVycm9yOwo+ICAgCQl9Cj4gICAKPiAgIAkJZXJyb3IgPSBuYW1laV9s
YXN0X25vZm9sbG93KHBhdGgsIGRkcCwgJmRwKTsKPiAtCQlpZiAoZGRwICE9IG51bGxwdHIpIHsK
PiArCQlpZiAoZGRwICE9IE5VTEwpIHsKPiAgIAkJCWRyZWxlKGRkcCk7Cj4gICAJCX0KPiAgIAkJ
aWYgKGVycm9yKSB7Cj4gQEAgLTEzMTIsNyArMTMxMiw3IEBAIHN5c191dGltZXMoY2hhciAqcGF0
aCwgY29uc3Qgc3RydWN0IHRpbWV2YWwgdGltZXNbMl0sIGludCBmbGFncykKPiAgIC8qCj4gICAg
KiBDaGVjayB0aGUgdmFsaWRpdHkgb2YgbWVtYmVycyBvZiBhIHN0cnVjdCB0aW1lc3BlYwo+ICAg
ICovCj4gLXN0YXRpYyBib29sIGlzX3RpbWVzcGVjX3ZhbGlkKGNvbnN0IHN0cnVjdCB0aW1lc3Bl
YyAmdGltZSkKPiArc3RhdGljIGludCBpc190aW1lc3BlY192YWxpZChjb25zdCBzdHJ1Y3QgdGlt
ZXNwZWMgJnRpbWUpCj4gICB7Cj4gICAJcmV0dXJuICh0aW1lLnR2X3NlYyA+PSAwKSAmJgo+ICAg
CSAgICgodGltZS50dl9uc2VjID49IDAgJiYgdGltZS50dl9uc2VjIDw9IDk5OTk5OTk5OSkgfHwK
PiBAQCAtMTMyMiw3ICsxMzIyLDcgQEAgc3RhdGljIGJvb2wgaXNfdGltZXNwZWNfdmFsaWQoY29u
c3Qgc3RydWN0IHRpbWVzcGVjICZ0aW1lKQo+ICAgCj4gICB2b2lkIGluaXRfdGltZXNwZWMoc3Ry
dWN0IHRpbWVzcGVjICZfdGltZXMsIGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAqdGltZXMpCj4gICB7
Cj4gLQlpZiAodGltZXMgPT0gbnVsbHB0ciB8fCB0aW1lcy0+dHZfbnNlYyA9PSBVVElNRV9OT1cp
IHsKPiArCWlmICh0aW1lcyA9PSBOVUxMIHx8IHRpbWVzLT50dl9uc2VjID09IFVUSU1FX05PVykg
ewo+ICAgCQljbG9ja19nZXR0aW1lKENMT0NLX1JFQUxUSU1FLCAmX3RpbWVzKTsKPiAgIAl9IGVs
c2Ugewo+ICAgCQlfdGltZXMudHZfc2VjID0gdGltZXMtPnR2X3NlYzsKPiBAQCAtMTM1MCw4ICsx
MzUwLDggQEAgc3lzX3V0aW1lbnNhdChpbnQgZGlyZmQsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBj
b25zdCBzdHJ1Y3QgdGltZXNwZWMgdGltZXNbMl0sIGkKPiAgIAlpZiAodGltZXMgJiYgKCFpc190
aW1lc3BlY192YWxpZCh0aW1lc1swXSkgfHwgIWlzX3RpbWVzcGVjX3ZhbGlkKHRpbWVzWzFdKSkp
Cj4gICAJCXJldHVybiBFSU5WQUw7Cj4gICAKPiAtCWluaXRfdGltZXNwZWModGltZXNwZWNfdGlt
ZXNbMF0sIHRpbWVzID8gdGltZXMgKyAwIDogbnVsbHB0cik7Cj4gLQlpbml0X3RpbWVzcGVjKHRp
bWVzcGVjX3RpbWVzWzFdLCB0aW1lcyA/IHRpbWVzICsgMSA6IG51bGxwdHIpOwo+ICsJaW5pdF90
aW1lc3BlYyh0aW1lc3BlY190aW1lc1swXSwgdGltZXMgPyB0aW1lcyArIDAgOiBOVUxMKTsKPiAr
CWluaXRfdGltZXNwZWModGltZXNwZWNfdGltZXNbMV0sIHRpbWVzID8gdGltZXMgKyAxIDogTlVM
TCk7Cj4gICAKPiAgIAlpZiAocGF0aG5hbWUgJiYgcGF0aG5hbWVbMF0gPT0gJy8nKSB7Cj4gICAJ
YXAgPSBwYXRobmFtZTsKPiBAQCAtMTM2MCw3ICsxMzYwLDcgQEAgc3lzX3V0aW1lbnNhdChpbnQg
ZGlyZmQsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgdGltZXNb
Ml0sIGkKPiAgIAkgICAgcmV0dXJuIEVGQVVMVDsKPiAgIAlhcCA9IHN0ZDo6c3RyaW5nKG1haW5f
dGFzay0+dF9jd2QpICsgIi8iICsgcGF0aG5hbWU7Cj4gICAJfSBlbHNlIHsKPiAtCQlzdHJ1Y3Qg
ZmlsZSAqZnA7Cj4gKwkJc3RydWN0IHZmc2NvcmVfZmlsZSAqZnA7Cj4gICAJCWZpbGVyZWYgZihm
aWxlcmVmX2Zyb21fZmQoZGlyZmQpKTsKPiAgIAo+ICAgCQlpZiAoIWYpCj4gQEAgLTE0MTAsNyAr
MTQxMCw3IEBAIHN5c191dGltZW5zYXQoaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwg
Y29uc3Qgc3RydWN0IHRpbWVzcGVjIHRpbWVzWzJdLCBpCj4gICBpbnQKPiAgIHN5c19mdXRpbWVu
cyhpbnQgZmQsIGNvbnN0IHN0cnVjdCB0aW1lc3BlYyB0aW1lc1syXSkKPiAgIHsKPiAtCXN0cnVj
dCBmaWxlICpmcDsKPiArCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwOwo+ICAgCj4gICAJZmlsZXJl
ZiBmKGZpbGVyZWZfZnJvbV9mZChmZCkpOwo+ICAgCWlmICghZikKPiBAQCAtMTQyOCw3ICsxNDI4
LDcgQEAgc3lzX2Z1dGltZW5zKGludCBmZCwgY29uc3Qgc3RydWN0IHRpbWVzcGVjIHRpbWVzWzJd
KQo+ICAgI2VuZGlmCj4gICAKPiAgIGludAo+IC1zeXNfZmFsbG9jYXRlKHN0cnVjdCBmaWxlICpm
cCwgaW50IG1vZGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4pCj4gK3N5c19mYWxsb2NhdGUo
c3RydWN0IHZmc2NvcmVfZmlsZSAqZnAsIGludCBtb2RlLCBvZmZfdCBvZmZzZXQsIG9mZl90IGxl
bikKPiAgIHsKPiAgIAlpbnQgZXJyb3I7Cj4gICAJc3RydWN0IHZub2RlICp2cDsKPiBAQCAtMTQ5
Myw3ICsxNDkzLDcgQEAgc3lzX2NobW9kKGNvbnN0IGNoYXIgKnBhdGgsIG1vZGVfdCBtb2RlKQo+
ICAgaW50Cj4gICBzeXNfZmNobW9kKGludCBmZCwgbW9kZV90IG1vZGUpCj4gICB7Cj4gLQlmaWxl
cmVmIGYoZmlsZXJlZl9mcm9tX2ZkKGZkKSk7Cj4gKwlzdHJ1Y3QgdmZzY29yZV9maWxlICpmID0g
dmZzY29yZV9nZXRfZmlsZShmZCk7Cj4gICAJaWYgKCFmKQo+ICAgCQlyZXR1cm4gRUJBREY7Cj4g
ICAJLy8gUG9zaXggaXMgYW1iaXZhbGVudCBvbiB3aGF0IGZjaG1vZCgpIHNob3VsZCBkbyBvbiBh
biBmZCB0aGF0IGRvZXMgbm90Cj4gZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3Zmcy5oIGIvbGli
L3Zmc2NvcmUvdmZzLmgKPiBpbmRleCAyNTMxZjczMC4uMTlmOGFjODcgMTAwNjQ0Cj4gLS0tIGEv
bGliL3Zmc2NvcmUvdmZzLmgKPiArKysgYi9saWIvdmZzY29yZS92ZnMuaAo+IEBAIC01Nyw3ICs1
Nyw3IEBAIGV4dGVybiBpbnQgdmZzX2RlYnVnOwo+ICAgCj4gICAjZGVmaW5lIFZGU0RCX0ZMQUdT
CTB4MDAwMDAwMTMKPiAgIAo+IC0jZGVmaW5lCURQUklOVEYoX20sWCkJaWYgKHZmc19kZWJ1ZyAm
IChfbSkpIGtwcmludGYgWAo+ICsjZGVmaW5lCURQUklOVEYoX20sWCkJaWYgKHZmc19kZWJ1ZyAm
IChfbSkpIHVrX3ByX2RlYnVnIFgKPiAgICNlbHNlCj4gICAjZGVmaW5lCURQUklOVEYoX20sIFgp
Cj4gICAjZW5kaWYKPiBAQCAtNzEsMjggKzcxLDI2IEBAIGV4dGVybiBpbnQgdmZzX2RlYnVnOwo+
ICAgICovCj4gICBzdHJ1Y3QgdGFzayB7Cj4gICAJY2hhciAJICAgIHRfY3dkW1BBVEhfTUFYXTsJ
LyogY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSAqLwo+IC0Jc3RydWN0IGZpbGUgKnRfY3dkZnA7
CQkvKiBkaXJlY3RvcnkgZm9yIGN3ZCAqLwo+ICsJc3RydWN0IHZmc2NvcmVfZmlsZSAqdF9jd2Rm
cDsJCS8qIGRpcmVjdG9yeSBmb3IgY3dkICovCj4gICB9Owo+ICAgCj4gLWV4dGVybiBjb25zdCBz
dHJ1Y3QgdmZzc3cgdmZzc3dbXTsKPiAtCj4gLWludAkgc3lzX29wZW4oY2hhciAqcGF0aCwgaW50
IGZsYWdzLCBtb2RlX3QgbW9kZSwgc3RydWN0IGZpbGUgKipmcCk7Cj4gLWludAkgc3lzX3JlYWQo
c3RydWN0IGZpbGUgKmZwLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlvdiwgc2l6ZV90IG5pb3YsCj4g
K2ludAkgc3lzX29wZW4oY2hhciAqcGF0aCwgaW50IGZsYWdzLCBtb2RlX3QgbW9kZSwgc3RydWN0
IHZmc2NvcmVfZmlsZSAqKmZwKTsKPiAraW50CSBzeXNfcmVhZChzdHJ1Y3QgdmZzY29yZV9maWxl
ICpmcCwgY29uc3Qgc3RydWN0IGlvdmVjICppb3YsIHNpemVfdCBuaW92LAo+ICAgCQlvZmZfdCBv
ZmZzZXQsIHNpemVfdCAqY291bnQpOwo+IC1pbnQJIHN5c193cml0ZShzdHJ1Y3QgZmlsZSAqZnAs
IGNvbnN0IHN0cnVjdCBpb3ZlYyAqaW92LCBzaXplX3QgbmlvdiwKPiAraW50CSBzeXNfd3JpdGUo
c3RydWN0IHZmc2NvcmVfZmlsZSAqZnAsIGNvbnN0IHN0cnVjdCBpb3ZlYyAqaW92LCBzaXplX3Qg
bmlvdiwKPiAgIAkJb2ZmX3Qgb2Zmc2V0LCBzaXplX3QgKmNvdW50KTsKPiAtaW50CSBzeXNfbHNl
ZWsoc3RydWN0IGZpbGUgKmZwLCBvZmZfdCBvZmYsIGludCB0eXBlLCBvZmZfdCAqIGN1cl9vZmYp
Owo+IC1pbnQJIHN5c19pb2N0bChzdHJ1Y3QgZmlsZSAqZnAsIHVfbG9uZyByZXF1ZXN0LCB2b2lk
ICpidWYpOwo+IC1pbnQJIHN5c19mc3RhdChzdHJ1Y3QgZmlsZSAqZnAsIHN0cnVjdCBzdGF0ICpz
dCk7Cj4gLWludAkgc3lzX2ZzdGF0ZnMoc3RydWN0IGZpbGUgKmZwLCBzdHJ1Y3Qgc3RhdGZzICpi
dWYpOwo+IC1pbnQJIHN5c19mc3luYyhzdHJ1Y3QgZmlsZSAqZnApOwo+IC1pbnQJIHN5c19mdHJ1
bmNhdGUoc3RydWN0IGZpbGUgKmZwLCBvZmZfdCBsZW5ndGgpOwo+IC0KPiAtaW50CSBzeXNfcmVh
ZGRpcihzdHJ1Y3QgZmlsZSAqZnAsIHN0cnVjdCBkaXJlbnQgKmRpcmVudCk7Cj4gLWludAkgc3lz
X3Jld2luZGRpcihzdHJ1Y3QgZmlsZSAqZnApOwo+IC1pbnQJIHN5c19zZWVrZGlyKHN0cnVjdCBm
aWxlICpmcCwgbG9uZyBsb2MpOwo+IC1pbnQJIHN5c190ZWxsZGlyKHN0cnVjdCBmaWxlICpmcCwg
bG9uZyAqbG9jKTsKPiAtaW50CSBzeXNfZmNoZGlyKHN0cnVjdCBmaWxlICpmcCwgY2hhciAqcGF0
aCk7Cj4gK2ludAkgc3lzX2xzZWVrKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwLCBvZmZfdCBvZmYs
IGludCB0eXBlLCBvZmZfdCAqIGN1cl9vZmYpOwo+ICtpbnQJIHN5c19pb2N0bChzdHJ1Y3QgdmZz
Y29yZV9maWxlICpmcCwgdW5zaWduZWQgbG9uZyByZXF1ZXN0LCB2b2lkICpidWYpOwo+ICtpbnQJ
IHN5c19mc3RhdChzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCwgc3RydWN0IHN0YXQgKnN0KTsKPiAr
aW50CSBzeXNfZnN0YXRmcyhzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCwgc3RydWN0IHN0YXRmcyAq
YnVmKTsKPiAraW50CSBzeXNfZnN5bmMoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnApOwo+ICtpbnQJ
IHN5c19mdHJ1bmNhdGUoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAsIG9mZl90IGxlbmd0aCk7Cj4g
Kwo+ICtpbnQJIHN5c19yZWFkZGlyKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwLCBzdHJ1Y3QgZGly
ZW50ICpkaXJlbnQpOwo+ICtpbnQJIHN5c19yZXdpbmRkaXIoc3RydWN0IHZmc2NvcmVfZmlsZSAq
ZnApOwo+ICtpbnQJIHN5c19zZWVrZGlyKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwLCBsb25nIGxv
Yyk7Cj4gK2ludAkgc3lzX3RlbGxkaXIoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAsIGxvbmcgKmxv
Yyk7Cj4gK2ludAkgc3lzX2ZjaGRpcihzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCwgY2hhciAqcGF0
aCk7Cj4gICAKPiAgIGludAkgc3lzX21rZGlyKGNoYXIgKnBhdGgsIG1vZGVfdCBtb2RlKTsKPiAg
IGludAkgc3lzX3JtZGlyKGNoYXIgKnBhdGgpOwo+IEBAIC0xMTEsNyArMTA5LDcgQEAgaW50ICBz
eXNfdXRpbWVzKGNoYXIgKnBhdGgsIGNvbnN0IHN0cnVjdCB0aW1ldmFsIHRpbWVzWzJdLCBpbnQg
ZmxhZ3MpOwo+ICAgaW50ICBzeXNfdXRpbWVuc2F0KGludCBkaXJmZCwgY29uc3QgY2hhciAqcGF0
aG5hbWUsCj4gICAJCQkJICAgY29uc3Qgc3RydWN0IHRpbWVzcGVjIHRpbWVzWzJdLCBpbnQgZmxh
Z3MpOwo+ICAgaW50ICBzeXNfZnV0aW1lbnMoaW50IGZkLCBjb25zdCBzdHJ1Y3QgdGltZXNwZWMg
dGltZXNbMl0pOwo+IC1pbnQgIHN5c19mYWxsb2NhdGUoc3RydWN0IGZpbGUgKmZwLCBpbnQgbW9k
ZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbik7Cj4gK2ludCAgc3lzX2ZhbGxvY2F0ZShzdHJ1
Y3QgdmZzY29yZV9maWxlICpmcCwgaW50IG1vZGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4p
Owo+ICAgCj4gICBpbnQJIHN5c19tb3VudChjb25zdCBjaGFyICpkZXYsIGNvbnN0IGNoYXIgKmRp
ciwgY29uc3QgY2hhciAqZnNuYW1lLCBpbnQgZmxhZ3MsIGNvbnN0IHZvaWQgKmRhdGEpOwo+ICAg
aW50CSBzeXNfdW1vdW50Mihjb25zdCBjaGFyICpwYXRoLCBpbnQgZmxhZ3MpOwo+IGRpZmYgLS1n
aXQgYS9saWIvdmZzY29yZS92bm9kZS5jIGIvbGliL3Zmc2NvcmUvdm5vZGUuYwo+IGluZGV4IDgx
Zjc4YmU4Li5hMmY0NTU5NiAxMDA2NDQKPiAtLS0gYS9saWIvdmZzY29yZS92bm9kZS5jCj4gKysr
IGIvbGliL3Zmc2NvcmUvdm5vZGUuYwo+IEBAIC03NywyNCArNzcsMjcgQEAgaW50IHZ0dG9pZl90
YWJbMTBdID0gewo+ICAgICogQWxsIGFjdGl2ZSAob3BlbmVkKSB2bm9kZXMgYXJlIHN0b3JlZCBv
biB0aGlzIGhhc2ggdGFibGUuCj4gICAgKiBUaGV5IGNhbiBiZSBhY2Nlc3NlZCBieSBpdHMgcGF0
aCBuYW1lLgo+ICAgICovCj4gLXN0YXRpYyBMSVNUX0hFQUQodm5vZGVfaGFzaF9oZWFkLCB2bm9k
ZSkgdm5vZGVfdGFibGVbVk5PREVfQlVDS0VUU107Cj4gK3N0YXRpYyBzdHJ1Y3QgdWtfbGlzdF9o
ZWFkIHZub2RlX3RhYmxlW1ZOT0RFX0JVQ0tFVFNdOwo+ICAgCj4gICAvKgo+ICAgICogR2xvYmFs
IGxvY2sgdG8gYWNjZXNzIGFsbCB2bm9kZXMgYW5kIHZub2RlIHRhYmxlLgo+ICAgICogSWYgYSB2
bm9kZSBpcyBhbHJlYWR5IGxvY2tlZCwgdGhlcmUgaXMgbm8gbmVlZCB0bwo+ICAgICogbG9jayB0
aGlzIGdsb2JhbCBsb2NrIHRvIGFjY2VzcyBpbnRlcm5hbCBkYXRhLgo+ICAgICovCj4gLXN0YXRp
YyBtdXRleF90IHZub2RlX2xvY2sgPSBNVVRFWF9JTklUSUFMSVpFUjsKPiAtI2RlZmluZSBWTk9E
RV9MT0NLKCkJbXV0ZXhfbG9jaygmdm5vZGVfbG9jaykKPiAtI2RlZmluZSBWTk9ERV9VTkxPQ0so
KQltdXRleF91bmxvY2soJnZub2RlX2xvY2spCj4gLSNkZWZpbmUgVk5PREVfT1dORUQoKQltdXRl
eF9vd25lZCgmdm5vZGVfbG9jaykKPiArc3RhdGljIHN0cnVjdCB1a19tdXRleCB2bm9kZV9sb2Nr
ID0gVUtfTVVURVhfSU5JVElBTElaRVIodm5vZGVfbG9jayk7Cj4gKyNkZWZpbmUgVk5PREVfTE9D
SygpCXVrX211dGV4X2xvY2soJnZub2RlX2xvY2spCj4gKyNkZWZpbmUgVk5PREVfVU5MT0NLKCkJ
dWtfbXV0ZXhfdW5sb2NrKCZ2bm9kZV9sb2NrKQo+ICsKPiArLyogVE9ETzogaW1wbGVtZW50IG11
dGV4X293bmVkICovCj4gKyNkZWZpbmUgVk5PREVfT1dORUQoKQkoMSkKPiArLyogI2RlZmluZSBW
Tk9ERV9PV05FRCgpCW11dGV4X293bmVkKCZ2bm9kZV9sb2NrKSAqLwo+ICsKPiAgIAo+ICAgLyoK
PiAgICAqIEdldCB0aGUgaGFzaCB2YWx1ZSBmcm9tIHRoZSBtb3VudCBwb2ludCBhbmQgcGF0aCBu
YW1lLgo+ICAgICogWFhYKGhjaCk6IHJlcGxhY2Ugd2l0aCBhIGJldHRlciBoYXNoIGZvciA2NC1i
aXQgcG9pbnRlcnMuCj4gICAgKi8KPiAtc3RhdGljIHVfaW50Cj4gLXZuX2hhc2goc3RydWN0IG1v
dW50ICptcCwgdWludDY0X3QgaW5vKQo+ICtzdGF0aWMgdW5zaWduZWQgaW50IHZuX2hhc2goc3Ry
dWN0IG1vdW50ICptcCwgdWludDY0X3QgaW5vKQo+ICAgewo+ICAgCXJldHVybiAoaW5vIF4gKHVu
c2lnbmVkIGxvbmcpbXApICYgKFZOT0RFX0JVQ0tFVFMgLSAxKTsKPiAgIH0KPiBAQCAtMTEwLDE2
ICsxMTMsMTUgQEAgdm5fbG9va3VwKHN0cnVjdCBtb3VudCAqbXAsIHVpbnQ2NF90IGlubykKPiAg
IHsKPiAgIAlzdHJ1Y3Qgdm5vZGUgKnZwOwo+ICAgCj4gLQlhc3NlcnQoVk5PREVfT1dORUQoKSk7
Cj4gLQlMSVNUX0ZPUkVBQ0godnAsICZ2bm9kZV90YWJsZVt2bl9oYXNoKG1wLCBpbm8pXSwgdl9s
aW5rKSB7Cj4gKwlVS19BU1NFUlQoVk5PREVfT1dORUQoKSk7Cj4gKwl1a19saXN0X2Zvcl9lYWNo
X2VudHJ5KHZwLCAmdm5vZGVfdGFibGVbdm5faGFzaChtcCwgaW5vKV0sIHZfbGluaykgewo+ICAg
CQlpZiAodnAtPnZfbW91bnQgPT0gbXAgJiYgdnAtPnZfaW5vID09IGlubykgewo+ICAgCQkJdnAt
PnZfcmVmY250Kys7Cj4gLQkJCW11dGV4X2xvY2soJnZwLT52X2xvY2spOwo+IC0JCQl2cC0+dl9u
cmxvY2tzKys7Cj4gKwkJCXVrX211dGV4X2xvY2soJnZwLT52X2xvY2spOwo+ICAgCQkJcmV0dXJu
IHZwOwo+ICAgCQl9Cj4gICAJfQo+IC0JcmV0dXJuIG51bGxwdHI7CQkvKiBub3QgZm91bmQgKi8K
PiArCXJldHVybiBOVUxMOwkJLyogbm90IGZvdW5kICovCj4gICB9Cj4gICAKPiAgICNpZmRlZiBE
RUJVR19WRlMKPiBAQCAtMTI4LDEwICsxMzAsMTAgQEAgdm5fcGF0aChzdHJ1Y3Qgdm5vZGUgKnZw
KQo+ICAgewo+ICAgCXN0cnVjdCBkZW50cnkgKmRwOwo+ICAgCj4gLQlpZiAoTElTVF9FTVBUWSgm
dnAtPnZfbmFtZXMpID09IDEpIHsKPiArCWlmICh1a19saXN0X2VtcHR5KCZ2cC0+dl9uYW1lcykg
PT0gMSkgewo+ICAgCQlyZXR1cm4gKCIgIik7Cj4gICAJfQo+IC0JZHAgPSBMSVNUX0ZJUlNUKCZ2
cC0+dl9uYW1lcyk7Cj4gKwlkcCA9IHVrX2xpc3RfZmlyc3RfZW50cnkoJnZwLT52X25hbWVzLCBz
dHJ1Y3QgZGVudHJ5LCBkX25hbWVzX2xpbmspOwo+ICAgCXJldHVybiAoZHAtPmRfcGF0aCk7Cj4g
ICB9Cj4gICAjZW5kaWYKPiBAQCAtMTQyLDExICsxNDQsMTAgQEAgdm5fcGF0aChzdHJ1Y3Qgdm5v
ZGUgKnZwKQo+ICAgdm9pZAo+ICAgdm5fbG9jayhzdHJ1Y3Qgdm5vZGUgKnZwKQo+ICAgewo+IC0J
QVNTRVJUKHZwKTsKPiAtCUFTU0VSVCh2cC0+dl9yZWZjbnQgPiAwKTsKPiArCVVLX0FTU0VSVCh2
cCk7Cj4gKwlVS19BU1NFUlQodnAtPnZfcmVmY250ID4gMCk7Cj4gICAKPiAtCW11dGV4X2xvY2so
JnZwLT52X2xvY2spOwo+IC0JdnAtPnZfbnJsb2NrcysrOwo+ICsJdWtfbXV0ZXhfbG9jaygmdnAt
PnZfbG9jayk7Cj4gICAJRFBSSU5URihWRlNEQl9WTk9ERSwgKCJ2bl9sb2NrOiAgICVzXG4iLCB2
bl9wYXRoKHZwKSkpOwo+ICAgfQo+ICAgCj4gQEAgLTE1NiwxMiArMTU3LDEwIEBAIHZuX2xvY2so
c3RydWN0IHZub2RlICp2cCkKPiAgIHZvaWQKPiAgIHZuX3VubG9jayhzdHJ1Y3Qgdm5vZGUgKnZw
KQo+ICAgewo+IC0JQVNTRVJUKHZwKTsKPiAtCUFTU0VSVCh2cC0+dl9yZWZjbnQgPiAwKTsKPiAt
CUFTU0VSVCh2cC0+dl9ucmxvY2tzID4gMCk7Cj4gKwlVS19BU1NFUlQodnApOwo+ICsJVUtfQVNT
RVJUKHZwLT52X3JlZmNudCA+PSAwKTsKPiAgIAo+IC0JdnAtPnZfbnJsb2Nrcy0tOwo+IC0JbXV0
ZXhfdW5sb2NrKCZ2cC0+dl9sb2NrKTsKPiArCXVrX211dGV4X3VubG9jaygmdnAtPnZfbG9jayk7
Cj4gICAJRFBSSU5URihWRlNEQl9WTk9ERSwgKCJ2bl9sb2NrOiAgICVzXG4iLCB2bl9wYXRoKHZw
KSkpOwo+ICAgfQo+ICAgCj4gQEAgLTE3Niw3ICsxNzUsNyBAQCB2Z2V0KHN0cnVjdCBtb3VudCAq
bXAsIHVpbnQ2NF90IGlubywgc3RydWN0IHZub2RlICoqdnBwKQo+ICAgCXN0cnVjdCB2bm9kZSAq
dnA7Cj4gICAJaW50IGVycm9yOwo+ICAgCj4gLQkqdnBwID0gbnVsbHB0cjsKPiArCSp2cHAgPSBO
VUxMOwo+ICAgCj4gICAJRFBSSU5URihWRlNEQl9WTk9ERSwgKCJ2Z2V0ICVMTHVcbiIsIGlubykp
Owo+ICAgCj4gQEAgLTE5NSwyNiArMTk0LDI0IEBAIHZnZXQoc3RydWN0IG1vdW50ICptcCwgdWlu
dDY0X3QgaW5vLCBzdHJ1Y3Qgdm5vZGUgKip2cHApCj4gICAJCXJldHVybiAwOwo+ICAgCX0KPiAg
IAo+IC0JTElTVF9JTklUKCZ2cC0+dl9uYW1lcyk7Cj4gKwlVS19JTklUX0xJU1RfSEVBRCgmdnAt
PnZfbmFtZXMpOwo+ICAgCXZwLT52X2lubyA9IGlubzsKPiAgIAl2cC0+dl9tb3VudCA9IG1wOwo+
ICAgCXZwLT52X3JlZmNudCA9IDE7Cj4gICAJdnAtPnZfb3AgPSBtcC0+bV9vcC0+dmZzX3Zub3Bz
Owo+IC0JdnAtPnZfbnJsb2NrcyA9IDA7Cj4gLQo+ICsJdWtfbXV0ZXhfaW5pdCgmdnAtPnZfbG9j
ayk7Cj4gICAJLyoKPiAgIAkgKiBSZXF1ZXN0IHRvIGFsbG9jYXRlIGZzIHNwZWNpZmljIGRhdGEg
Zm9yIHZub2RlLgo+ICAgCSAqLwo+ICAgCWlmICgoZXJyb3IgPSBWRlNfVkdFVChtcCwgdnApKSAh
PSAwKSB7Cj4gICAJCVZOT0RFX1VOTE9DSygpOwo+IC0JCWRlbGV0ZSB2cDsKPiArCQlmcmVlKHZw
KTsKPiAgIAkJcmV0dXJuIGVycm9yOwo+ICAgCX0KPiAgIAl2ZnNfYnVzeSh2cC0+dl9tb3VudCk7
Cj4gLQltdXRleF9sb2NrKCZ2cC0+dl9sb2NrKTsKPiAtCXZwLT52X25ybG9ja3MrKzsKPiArCXVr
X211dGV4X2xvY2soJnZwLT52X2xvY2spOwo+ICAgCj4gLQlMSVNUX0lOU0VSVF9IRUFEKCZ2bm9k
ZV90YWJsZVt2bl9oYXNoKG1wLCBpbm8pXSwgdnAsIHZfbGluayk7Cj4gKwl1a19saXN0X2FkZCgm
dnAtPnZfbGluaywgJnZub2RlX3RhYmxlW3ZuX2hhc2gobXAsIGlubyldKTsKPiAgIAlWTk9ERV9V
TkxPQ0soKTsKPiAgIAo+ICAgCSp2cHAgPSB2cDsKPiBAQCAtMjI4LDkgKzIyNSw4IEBAIHZnZXQo
c3RydWN0IG1vdW50ICptcCwgdWludDY0X3QgaW5vLCBzdHJ1Y3Qgdm5vZGUgKip2cHApCj4gICB2
b2lkCj4gICB2cHV0KHN0cnVjdCB2bm9kZSAqdnApCj4gICB7Cj4gLQlBU1NFUlQodnApOwo+IC0J
QVNTRVJUKHZwLT52X25ybG9ja3MgPiAwKTsKPiAtCUFTU0VSVCh2cC0+dl9yZWZjbnQgPiAwKTsK
PiArCVVLX0FTU0VSVCh2cCk7Cj4gKwlVS19BU1NFUlQodnAtPnZfcmVmY250ID4gMCk7Cj4gICAJ
RFBSSU5URihWRlNEQl9WTk9ERSwgKCJ2cHV0OiByZWY9JWQgJXNcbiIsIHZwLT52X3JlZmNudCwg
dm5fcGF0aCh2cCkpKTsKPiAgIAo+ICAgCVZOT0RFX0xPQ0soKTsKPiBAQCAtMjQwLDcgKzIzNiw3
IEBAIHZwdXQoc3RydWN0IHZub2RlICp2cCkKPiAgIAkJdm5fdW5sb2NrKHZwKTsKPiAgIAkJcmV0
dXJuOwo+ICAgCX0KPiAtCUxJU1RfUkVNT1ZFKHZwLCB2X2xpbmspOwo+ICsJdWtfbGlzdF9kZWwo
JnZwLT52X2xpbmspOwo+ICAgCVZOT0RFX1VOTE9DSygpOwo+ICAgCj4gICAJLyoKPiBAQCAtMjQ5
LDEwICsyNDUsOCBAQCB2cHV0KHN0cnVjdCB2bm9kZSAqdnApCj4gICAJaWYgKHZwLT52X29wLT52
b3BfaW5hY3RpdmUpCj4gICAJCVZPUF9JTkFDVElWRSh2cCk7Cj4gICAJdmZzX3VuYnVzeSh2cC0+
dl9tb3VudCk7Cj4gLQl2cC0+dl9ucmxvY2tzLS07Cj4gLQlBU1NFUlQodnAtPnZfbnJsb2NrcyA9
PSAwKTsKPiAtCW11dGV4X3VubG9jaygmdnAtPnZfbG9jayk7Cj4gLQlkZWxldGUgdnA7Cj4gKwl1
a19tdXRleF91bmxvY2soJnZwLT52X2xvY2spOwo+ICsJZnJlZSh2cCk7Cj4gICB9Cj4gICAKPiAg
IC8qCj4gQEAgLTI2MSw4ICsyNTUsOCBAQCB2cHV0KHN0cnVjdCB2bm9kZSAqdnApCj4gICB2b2lk
Cj4gICB2cmVmKHN0cnVjdCB2bm9kZSAqdnApCj4gICB7Cj4gLQlBU1NFUlQodnApOwo+IC0JQVNT
RVJUKHZwLT52X3JlZmNudCA+IDApOwkvKiBOZWVkIHZnZXQgKi8KPiArCVVLX0FTU0VSVCh2cCk7
Cj4gKwlVS19BU1NFUlQodnAtPnZfcmVmY250ID4gMCk7CS8qIE5lZWQgdmZzY29yZV92Z2V0ICov
Cj4gICAKPiAgIAlWTk9ERV9MT0NLKCk7Cj4gICAJRFBSSU5URihWRlNEQl9WTk9ERSwgKCJ2cmVm
OiByZWY9JWRcbiIsIHZwLT52X3JlZmNudCkpOwo+IEBAIC0yNzksOCArMjczLDggQEAgdnJlZihz
dHJ1Y3Qgdm5vZGUgKnZwKQo+ICAgdm9pZAo+ICAgdnJlbGUoc3RydWN0IHZub2RlICp2cCkKPiAg
IHsKPiAtCUFTU0VSVCh2cCk7Cj4gLQlBU1NFUlQodnAtPnZfcmVmY250ID4gMCk7Cj4gKwlVS19B
U1NFUlQodnApOwo+ICsJVUtfQVNTRVJUKHZwLT52X3JlZmNudCA+IDApOwo+ICAgCj4gICAJVk5P
REVfTE9DSygpOwo+ICAgCURQUklOVEYoVkZTREJfVk5PREUsICgidnJlbGU6IHJlZj0lZFxuIiwg
dnAtPnZfcmVmY250KSk7Cj4gQEAgLTI4OSw3ICsyODMsNyBAQCB2cmVsZShzdHJ1Y3Qgdm5vZGUg
KnZwKQo+ICAgCQlWTk9ERV9VTkxPQ0soKTsKPiAgIAkJcmV0dXJuOwo+ICAgCX0KPiAtCUxJU1Rf
UkVNT1ZFKHZwLCB2X2xpbmspOwo+ICsJdWtfbGlzdF9kZWwoJnZwLT52X2xpbmspOwo+ICAgCVZO
T0RFX1VOTE9DSygpOwo+ICAgCj4gICAJLyoKPiBAQCAtMjk3LDcgKzI5MSw3IEBAIHZyZWxlKHN0
cnVjdCB2bm9kZSAqdnApCj4gICAJICovCj4gICAJVk9QX0lOQUNUSVZFKHZwKTsKPiAgIAl2ZnNf
dW5idXN5KHZwLT52X21vdW50KTsKPiAtCWRlbGV0ZSB2cDsKPiArCWZyZWUodnApOwo+ICAgfQo+
ICAgCj4gICAvKgo+IEBAIC00NTYsMjEgKzQ1MCwyNSBAQCB2bm9kZV9kdW1wKHZvaWQpCj4gICAJ
CQkgICAiVkxOSyAiLCAiVlNPQ0siLCAiVkZJRk8iIH07Cj4gICAKPiAgIAlWTk9ERV9MT0NLKCk7
Cj4gLQlrcHJpbnRmKCJEdW1wIHZub2RlXG4iKTsKPiAtCWtwcmludGYoIiB2bm9kZSAgICBtb3Vu
dCAgICB0eXBlICByZWZjbnQgYmxrbm8gICAgcGF0aFxuIik7Cj4gLQlrcHJpbnRmKCIgLS0tLS0t
LS0gLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLVxuIik7Cj4gKwo+ICsJdWtfcHJfZGVidWcoIkR1bXAgdm5vZGVcbiIpOwo+ICsJdWtf
cHJfZGVidWcoIiB2bm9kZSAgICAgICAgICAgIG1vdW50ICAgICAgICAgICAgdHlwZSAgcmVmY250
IHBhdGhcbiIpOwo+ICsJdWtfcHJfZGVidWcoIiAtLS0tLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0t
LS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7Cj4g
ICAKPiAgIAlmb3IgKGkgPSAwOyBpIDwgVk5PREVfQlVDS0VUUzsgaSsrKSB7Cj4gLQkgICAgICAg
IExJU1RfRk9SRUFDSCh2cCwgJnZub2RlX3RhYmxlW2ldLCB2X2xpbmspIHsKPiArCQl1a19saXN0
X2Zvcl9lYWNoX2VudHJ5KHZwLCAmdm5vZGVfdGFibGVbaV0sIHZfbGluaykgewo+ICAgCQkJbXAg
PSB2cC0+dl9tb3VudDsKPiAgIAo+IC0JCQlrcHJpbnRmKCIgJTA4eCAlMDh4ICVzICU2ZCAlOGQg
JXMlc1xuIiwgKHVfbG9uZyl2cCwKPiAtCQkJCSh1X2xvbmcpbXAsIHR5cGVbdnAtPnZfdHlwZV0s
IHZwLT52X3JlZmNudCwKPiAtCQkJCShzdHJsZW4obXAtPm1fcGF0aCkgPT0gMSkgPyAiXDAiIDog
bXAtPm1fcGF0aCwKPiAtCQkJCXZuX3BhdGgodnApKTsKPiArCj4gKwkJCXVrX3ByX2RlYnVnKCIg
JTAxNmx4ICUwMTZseCAlcyAlNmQgJXMlc1xuIiwKPiArCQkJCSAgICAodW5zaWduZWQgbG9uZykg
dnAsCj4gKwkJCQkgICAgKHVuc2lnbmVkIGxvbmcpIG1wLCB0eXBlW3ZwLT52X3R5cGVdLAo+ICsJ
CQkJICAgIHZwLT52X3JlZmNudCwKPiArCQkJCSAgICAoc3RybGVuKG1wLT5tX3BhdGgpID09IDEp
ID8gIlwwIiA6IG1wLT5tX3BhdGgsCj4gKwkJCQkgICAgdm5fcGF0aCh2cCkpOwo+ICAgCQl9Cj4g
ICAJfQo+IC0Ja3ByaW50ZigiXG4iKTsKPiArCXVrX3ByX2RlYnVnKCJcbiIpOwo+ICAgCVZOT0RF
X1VOTE9DSygpOwo+ICAgfQo+ICAgI2VuZGlmCj4gQEAgLTUwOSwyMCArNTA3LDIyIEBAIHZub2Rl
X2luaXQodm9pZCkKPiAgIAlpbnQgaTsKPiAgIAo+ICAgCWZvciAoaSA9IDA7IGkgPCBWTk9ERV9C
VUNLRVRTOyBpKyspCj4gLQkJTElTVF9JTklUKCZ2bm9kZV90YWJsZVtpXSk7Cj4gKwkJVUtfSU5J
VF9MSVNUX0hFQUQoJnZub2RlX3RhYmxlW2ldKTsKPiAgIH0KPiAgIAo+ICAgdm9pZCB2bl9hZGRf
bmFtZShzdHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3QgZGVudHJ5ICpkcCkKPiAgIHsKPiAtCXZuX2xv
Y2sodnApOwo+IC0JTElTVF9JTlNFUlRfSEVBRCgmdnAtPnZfbmFtZXMsIGRwLCBkX25hbWVzX2xp
bmspOwo+IC0Jdm5fdW5sb2NrKHZwKTsKPiArCS8qIFRPRE86IFJlLWVuYWJsZSB0aGlzIGNoZWNr
IHdoZW4gcHJlZW1wdGlvbiBhbmQvb3Igc21wIGlzCj4gKwkgKiBoZXJlICovCj4gKwkvKiBVS19B
U1NFUlQodWtfbXV0ZXhfaXNfbG9ja2VkKCZ2cC0+dl9sb2NrKSk7ICovCj4gKwl1a19saXN0X2Fk
ZCgmZHAtPmRfbmFtZXNfbGluaywgJnZwLT52X25hbWVzKTsKPiAgIH0KPiAgIAo+ICAgdm9pZCB2
bl9kZWxfbmFtZShzdHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3QgZGVudHJ5ICpkcCkKPiAgIHsKPiAt
CXZuX2xvY2sodnApOwo+IC0JTElTVF9SRU1PVkUoZHAsIGRfbmFtZXNfbGluayk7Cj4gLQl2bl91
bmxvY2sodnApOwo+ICsJLyogVE9ETzogUmUtZW5hYmxlIHRoaXMgY2hlY2sgd2hlbiBwcmVlbXB0
aW9uIGFuZC9vciBzbXAgaXMKPiArCSAqIGhlcmUgKi8KPiArCS8qIFVLX0FTU0VSVCh1a19tdXRl
eF9pc19sb2NrZWQoJnZwLT52X2xvY2spKTsgKi8KPiArCXVrX2xpc3RfZGVsKCZkcC0+ZF9uYW1l
c19saW5rKTsKPiAgIH0KPiAgIAo+IAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlz
dHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xp
c3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Fri Feb 08 13:36:41 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 08 Feb 2019 13:36:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gs6Ke-0005MG-Mj; Fri, 08 Feb 2019 13:36:40 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=p2U7=QP=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1gs6Kd-0005MA-Ax
 for minios-devel@lists.xen.org; Fri, 08 Feb 2019 13:36:39 +0000
X-Inumbo-ID: 8d91c152-2ba6-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 8d91c152-2ba6-11e9-bc90-bc764e045a96;
 Fri, 08 Feb 2019 13:36:36 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 96648F2051;
 Fri,  8 Feb 2019 14:36:34 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id QmwO8bTlKF6d; Fri,  8 Feb 2019 14:36:34 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 5AEFCF200D
 for <minios-devel@lists.xen.org>; Fri,  8 Feb 2019 14:36:32 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 8 Feb 2019 14:36:32
 +0100
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
 <20190207135901.9122-11-yuri.volchkov@neclab.eu>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <ea37d6d2-b3c9-7ec4-9210-c882f612c058@neclab.eu>
Date: Fri, 8 Feb 2019 14:36:31 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190207135901.9122-11-yuri.volchkov@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v3 10/23] lib/vfscore: add
 utility funcs&defs to support imported
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8geXVyaSwKClRoZSBwYXRjaCBzZWVtcyBmdW5jdGlvbmFsbHkgZmluZS4KClRoZXJlIGFy
ZSBzb21lIG1pbm9yIGlzc3VlLiBQbGVhc2UgZmluZCB0aGVtIGlubGluZS4KClRoYW5rcyAmIFJl
Z2FyZHMKU2hhcmFuCgpPbiAyLzcvMTkgMjo1OCBQTSwgWXVyaSBWb2xjaGtvdiB3cm90ZToKPiBT
aWduZWQtb2ZmLWJ5OiBZdXJpIFZvbGNoa292IDx5dXJpLnZvbGNoa292QG5lY2xhYi5ldT4KPiAt
LS0KPiAgIGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9maWxlLmggIHwgIDIgKysKPiAgIGxp
Yi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9mcy5oICAgIHwgMjggKysrKysrKysrKysrKysrKysr
KysrKysrCj4gICBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUuaCB8IDIxICsrKysr
KysrKysrKysrKysrKwo+ICAgbGliL3Zmc2NvcmUvbWFpbi5jICAgICAgICAgICAgICAgICAgfCAz
MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICAgbGliL3Zmc2NvcmUvbW91bnQuYyAg
ICAgICAgICAgICAgICAgfCAxNyArKysrKysrKysrKysrKysKPiAgIGxpYi92ZnNjb3JlL3Zmcy5o
ICAgICAgICAgICAgICAgICAgIHwgIDkgKysrKysrKysKPiAgIGxpYi92ZnNjb3JlL3Zub2RlLmMg
ICAgICAgICAgICAgICAgIHwgIDIgKysKPiAgIDcgZmlsZXMgY2hhbmdlZCwgMTEyIGluc2VydGlv
bnMoKykKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUv
ZnMuaAo+IAo+IGRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZmlsZS5o
IGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2ZpbGUuaAo+IGluZGV4IDk5ODU3MDZmLi4z
ZDhkNjY3ZiAxMDA2NDQKPiAtLS0gYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZmlsZS5o
Cj4gKysrIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2ZpbGUuaAo+IEBAIC02MSw2ICs2
MSw4IEBAIHZvaWQgdmZzY29yZV9wdXRfZmQoaW50IGZkKTsKPiAgIHZvaWQgdmZzY29yZV9pbnN0
YWxsX2ZkKGludCBmZCwgc3RydWN0IHZmc2NvcmVfZmlsZSAqZmlsZSk7Cj4gICBzdHJ1Y3QgdmZz
Y29yZV9maWxlICp2ZnNjb3JlX2dldF9maWxlKGludCBmZCk7Cj4gICAKPiArI2RlZmluZSBGT0Zf
T0ZGU0VUICAweDA4MDAgICAgLyogVXNlIHRoZSBvZmZzZXQgaW4gdWlvIGFyZ3VtZW50ICovCj4g
Kwo+ICAgI2lmZGVmIF9fY3BsdXNwbHVzCj4gICB9Cj4gICAjZW5kaWYKPiBkaWZmIC0tZ2l0IGEv
bGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2ZzLmggYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zm
c2NvcmUvZnMuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAuLjFiYjRl
MjRkCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9m
cy5oCj4gQEAgLTAsMCArMSwyOCBAQAo+ICsjaWZuZGVmIF9WRlNDT1JFX0ZTX0hfCj4gKyNkZWZp
bmUgX1ZGU0NPUkVfRlNfSF8KPiArCj4gKyNpbmNsdWRlIDxmY250bC5oPgo+ICsvKgo+ICsgKiBL
ZXJuZWwgZW5jb2Rpbmcgb2Ygb3BlbiBtb2RlOyBzZXBhcmF0ZSByZWFkIGFuZCB3cml0ZSBiaXRz
IHRoYXQgYXJlCj4gKyAqIGluZGVwZW5kZW50bHkgdGVzdGFibGU6IDEgZ3JlYXRlciB0aGFuIHRo
ZSBhYm92ZS4KPiArICovCj4gKyNkZWZpbmUgRlJFQUQgICAgICAgICAgIDB4MDAwMDAwMDEKPiAr
I2RlZmluZSBGV1JJVEUgICAgICAgICAgMHgwMDAwMDAwMgo+ICsKPiArI2RlZmluZSBBTExQRVJN
UyAoU19JU1VJRHxTX0lTR0lEfFNfSVNWVFh8U19JUldYVXxTX0lSV1hHfFNfSVJXWE8pCj4gKwoK
VGFiIGluc3RlYWQgb2Ygc3BhY2VzLgo+ICtzdGF0aWMgaW5saW5lIGludCB2ZnNjb3JlX2ZmbGFn
cyhpbnQgb2ZsYWdzKQo+ICt7Cj4gKyAgICBpbnQgcncgPSBvZmxhZ3MgJiBPX0FDQ01PREU7Cj4g
KyAgICBvZmxhZ3MgJj0gfk9fQUNDTU9ERTsKPiArICAgIHJldHVybiAocncgKyAxKSB8IG9mbGFn
czsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSBpbnQgdmZzY29yZV9vZmxhZ3MoaW50IGZmbGFn
cykKPiArewo+ICsgICAgaW50IHJ3ID0gZmZsYWdzICYgKEZSRUFEfEZXUklURSk7Cj4gKyAgICBm
ZmxhZ3MgJj0gfihGUkVBRHxGV1JJVEUpOwo+ICsgICAgcmV0dXJuIChydyAtIDEpIHwgZmZsYWdz
Owo+ICt9Cj4gKwo+ICsjZW5kaWYgLyogX1ZGU0NPUkVfRlNfSF8gKi8KPiBkaWZmIC0tZ2l0IGEv
bGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Zub2RlLmggYi9saWIvdmZzY29yZS9pbmNsdWRl
L3Zmc2NvcmUvdm5vZGUuaAo+IGluZGV4IGE0ZGI5YzEzLi40MTU1YTdkYiAxMDA2NDQKPiAtLS0g
YS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUuaAo+ICsrKyBiL2xpYi92ZnNjb3Jl
L2luY2x1ZGUvdmZzY29yZS92bm9kZS5oCj4gQEAgLTEwOCw2ICsxMDgsMjcgQEAgc3RydWN0IHZh
dHRyIHsKPiAgIAlvZmZfdAkJdmFfc2l6ZTsKPiAgIH07Cj4gICAKPiArLyogc3RydWN0IHZhdHRy
IGlzIHVzZWQgdG8gY29uc29saWRhdGUgbXVsdGlwbGUgdHlwZXMgb2YgZmlsZQo+ICsgKiBhdHRy
aWJ1dGVzIGZvciBwYXNzaW5nIHRoZW0gYXMgZnVuY3Rpb24gcGFyYW1ldGVycy4gTWFjcm9zIGJl
bGxvdwo+ICsgKiBhcmUgc2VsZWN0b3JzLCBvZiB3aGF0IHR5cGVzIG9mIGF0dHJpYnV0ZXMgYXJl
IHZhbGlkIGluIHBhcnRpY3VsYXIKPiArICogc3RydWN0IHZhdHRyKi8KPiArI2RlZmluZQlBVF9U
WVBFCQkweDAwMDAxCj4gKyNkZWZpbmUJQVRfTU9ERQkJMHgwMDAwMgo+ICsjZGVmaW5lCUFUX1VJ
RAkJMHgwMDAwNAo+ICsjZGVmaW5lCUFUX0dJRAkJMHgwMDAwOAo+ICsjZGVmaW5lCUFUX0ZTSUQJ
CTB4MDAwMTAKPiArI2RlZmluZQlBVF9OT0RFSUQJMHgwMDAyMAo+ICsjZGVmaW5lCUFUX05MSU5L
CTB4MDAwNDAKPiArI2RlZmluZQlBVF9TSVpFCQkweDAwMDgwCj4gKyNkZWZpbmUJQVRfQVRJTUUJ
MHgwMDEwMAo+ICsjZGVmaW5lCUFUX01USU1FCTB4MDAyMDAKPiArI2RlZmluZQlBVF9DVElNRQkw
eDAwNDAwCj4gKyNkZWZpbmUJQVRfUkRFVgkJMHgwMDgwMAo+ICsjZGVmaW5lCUFUX0JMS1NJWkUJ
MHgwMTAwMAo+ICsjZGVmaW5lCUFUX05CTE9DS1MJMHgwMjAwMAo+ICsjZGVmaW5lCUFUX1NFUQkJ
MHgwODAwMAo+ICsjZGVmaW5lCUFUX1hWQVRUUgkweDEwMDAwCj4gKwo+ICAgLyoKPiAgICAqICBN
b2Rlcy4KPiAgICAqLwo+IGRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9tYWluLmMgYi9saWIvdmZz
Y29yZS9tYWluLmMKPiBpbmRleCA4MmU0NTkxNy4uMTE2NGIzMGIgMTAwNjQ0Cj4gLS0tIGEvbGli
L3Zmc2NvcmUvbWFpbi5jCj4gKysrIGIvbGliL3Zmc2NvcmUvbWFpbi5jCj4gQEAgLTUyLDggKzUy
LDQxIEBACj4gICBpbnQJdmZzX2RlYnVnID0gVkZTREJfRkxBR1M7Cj4gICAjZW5kaWYKPiAgIAo+
ICsvKiBUaGlzIG1hY3JvIGlzIGZvciBkZWZpbmluZyBhbiBhbGlhcyBvZiB0aGUgNjRiaXQgdmVy
c2lvbiBvZiBhCj4gKyAqIHN5c2NhbGwgdG8gdGhlIHJlZ3VsYXIgb25lLiBJdCBzZWFtcyB3ZSBj
YW4gbWFrZSB0aGUgbG9naWMgd2hpY2ggaXMKPiArICogY2hvb3NpbmcgdGhlIHJpZ2h0IGNhbGwg
c2ltcGxlciB0aGVuIGluIGNvbW1vbiBsaWJjLgo+ICsgKgo+ICsgKiBMZXQncyBrZWVwIExGUzY0
IGNhbGxzIGp1c3QgaW4gY2FzZSBpbiBmdXR1cmUgd2Ugd2lsbCBmaW5kIG91dCB0aGF0Cj4gKyAq
IHRoZXNlIGFsaWFzZXMgYXJlIG5lZWQuCj4gKyAqLwo+ICsjZGVmaW5lIExGUzY0KHgpCj4gKwo+
ICAgc3RhdGljIG1vZGVfdCBnbG9iYWxfdW1hc2sgPSBTX0lXR1JQIHwgU19JV09USDsKPiAgIAo+
ICsvKiBUT0RPOiB0aGVzZSBtYWNybyBkb2VzIG5vdCBiZWxvbmcgaGVyZQo+ICsgKiBOT1RFOiBi
b3Jyb3dlZCBmcm9tIE9Tdgo+ICsgKi8KPiArI2RlZmluZSBET19PTkNFKHRoaW5nKSBkbyB7CQkJ
CVwKPiArCXN0YXRpYyBpbnQgX3g7CQkJCQlcCj4gKwlpZiAoIV94KSB7CQkJCQlcCj4gKwkgICAg
X3ggPSAxOwkJCQkJXAo+ICsJICAgIHRoaW5nIDsJCQkJCVwKPiArCX0JCQkJCQlcCj4gK30gd2hp
bGUgKDApCj4gKyNkZWZpbmUgV0FSTl9TVFVCQkVEKCkgRE9fT05DRSh1a19wcl93YXJuKCIlcygp
IHN0dWJiZWRcbiIsIF9fZnVuY19fKSkKPiArCgpUaGlzIG1hY3JvIG1ha2VzIGFzc3VtcHRpb24g
b24gdGhlIHNpZ25hdHVyZSBvZiB0aGUgZnVuY3Rpb24uCkJ1dCBzaW5jZSB0aGlzIGlzIGFjY2Vz
c2libGUgb25seSB3aXRoaW4gdGhlIG1haW4uYyBpdCBpcyBmaW5lLgo+ICsjZGVmaW5lIE5PX1NZ
UyhkZWNsKSBkZWNsIHsJCQkJXAo+ICsgICAgRE9fT05DRSh1a19wcl93YXJuKCIlcyBub3QgaW1w
bGVtZW50ZWRcbiIsIF9fZnVuY19fKSk7CVwKPiArICAgIGVycm5vID0gRU5PU1lTOwkJCQkJXAo+
ICsgICAgcmV0dXJuIC0xOwkJCQkJCVwKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSBpbnQgbGli
Y19lcnJvcihpbnQgZXJyKQo+ICt7Cj4gKyAgICBlcnJubyA9IGVycjsKPiArICAgIHJldHVybiAt
MTsKPiArfQo+ICsKPiAgIHN0YXRpYyBpbmxpbmUgbW9kZV90IGFwcGx5X3VtYXNrKG1vZGVfdCBt
b2RlKQo+ICAgewo+ICAgCXJldHVybiBtb2RlICYgfnVrYXJjaF9sb2FkX24oJmdsb2JhbF91bWFz
ayk7Cj4gZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL21vdW50LmMgYi9saWIvdmZzY29yZS9tb3Vu
dC5jCj4gaW5kZXggN2QwODNkNmYuLmUxMmMwMDMzIDEwMDY0NAo+IC0tLSBhL2xpYi92ZnNjb3Jl
L21vdW50LmMKPiArKysgYi9saWIvdmZzY29yZS9tb3VudC5jCj4gQEAgLTc5LDYgKzc5LDIzIEBA
IGZzX2dldGZzKGNvbnN0IGNoYXIgKm5hbWUpCj4gICAJcmV0dXJuIGZzOwo+ICAgfQo+ICAgCj4g
K2ludCBkZXZpY2Vfb3Blbihjb25zdCBjaGFyICpuYW1lLCBpbnQgbW9kZSwgc3RydWN0IGRldmlj
ZSAqKmRldnApCj4gK3sKPiArCSh2b2lkKSBuYW1lOwo+ICsJKHZvaWQpIG1vZGU7Cj4gKwkodm9p
ZCkgZGV2cDsKV2UgdXNlIHRoZSBfX3VudXNlZCBhdHRyaWJ1dGUgZXZlcnl3aGVyZSBpbnN0ZWFk
IG9mICh2b2lkKS4KCj4gKwo+ICsJdWtfcHJfZXJyKCJkZXZpY2Ugb3BlbiBpcyBub3QgaW1wbGVt
ZW50ZWQgKCVzKVxuIiwgbmFtZSk7Cj4gKwlyZXR1cm4gMDsKU2hvdWxkbid0IHdlIHJlcG9ydCBh
biBlcnJvciBmb3Igbm90IGltcGxlbWVudGVkIGZ1bmN0aW9ucy4KCj4gK30KPiArCj4gK2ludCBk
ZXZpY2VfY2xvc2Uoc3RydWN0IGRldmljZSAqZGV2KQo+ICt7Cj4gKwkodm9pZCkgZGV2Owo+ICsJ
VUtfQ1JBU0goIm5vdCBpbXBsZW1lbnRlZCIpOwpXaHkgYXJlIGNyYXNoaW5nIGZvciBub3QgaW1w
bGVtZW50aW5nIGZ1bmN0aW9ucyBoZXJlPwoKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICAgaW50
Cj4gICBzeXNfbW91bnQoY29uc3QgY2hhciAqZGV2LCBjb25zdCBjaGFyICpkaXIsIGNvbnN0IGNo
YXIgKmZzbmFtZSwgaW50IGZsYWdzLCBjb25zdCB2b2lkICpkYXRhKQo+ICAgewo+IGRpZmYgLS1n
aXQgYS9saWIvdmZzY29yZS92ZnMuaCBiL2xpYi92ZnNjb3JlL3Zmcy5oCj4gaW5kZXggMTlmOGFj
ODcuLjYwOWRjMWY1IDEwMDY0NAo+IC0tLSBhL2xpYi92ZnNjb3JlL3Zmcy5oCj4gKysrIGIvbGli
L3Zmc2NvcmUvdmZzLmgKPiBAQCAtMTUxLDQgKzE1MSwxMyBAQCB2b2lkCSB2bm9kZV9kdW1wKHZv
aWQpOwo+ICAgdm9pZAkgbW91bnRfZHVtcCh2b2lkKTsKPiAgICNlbmRpZgo+ICAgCj4gK3N0YXRp
YyB2b2lkIF9fYXR0cmlidXRlX18oKHVudXNlZCkpIHVrX3Zmc2NvcmVfdHJhY2UoaW50IGZvbyBf
X3VudXNlZCwgLi4uKQo+ICt7Cj4gK30KPiArCj4gKyNkZWZpbmUgVFJBQ0VQT0lOVCh0cmFjZV9u
YW1lLCBmbXQsIC4uLikJCQlcCj4gKwlzdGF0aWMgdm9pZCB0cmFjZV9uYW1lKF9fVkFfQVJHU19f
ICkgX19hdHRyaWJ1dGVfXygodW51c2VkLCBhbGlhcygidWtfdmZzY29yZV90cmFjZSIpKSkKPiAr
Cj4gKwo+ICsKPiAgICNlbmRpZiAvKiAhX1ZGU19IICovCj4gZGlmZiAtLWdpdCBhL2xpYi92ZnNj
b3JlL3Zub2RlLmMgYi9saWIvdmZzY29yZS92bm9kZS5jCj4gaW5kZXggYTJmNDU1OTYuLjg2ZTZk
OWM3IDEwMDY0NAo+IC0tLSBhL2xpYi92ZnNjb3JlL3Zub2RlLmMKPiArKysgYi9saWIvdmZzY29y
ZS92bm9kZS5jCj4gQEAgLTQ4LDYgKzQ4LDggQEAKPiAgICNpbmNsdWRlIDx2ZnNjb3JlL3Zub2Rl
Lmg+Cj4gICAjaW5jbHVkZSAidmZzLmgiCj4gICAKPiArI2RlZmluZSBTX0JMS1NJWkUgNTEyCj4g
Kwo+ICAgZW51bSB2dHlwZSBpZnRvdnRfdGFiWzE2XSA9IHsKPiAgIAlWTk9OLCBWRklGTywgVkNI
UiwgVk5PTiwgVkRJUiwgVk5PTiwgVkJMSywgVk5PTiwKPiAgIAlWUkVHLCBWTk9OLCBWTE5LLCBW
Tk9OLCBWU09DSywgVk5PTiwgVk5PTiwgVkJBRCwKPiAKCl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9z
LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcv
bWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Fri Feb 08 14:03:18 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 08 Feb 2019 14:03:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gs6kP-0000Y7-B2; Fri, 08 Feb 2019 14:03:17 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=9frw=QP=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1gs6kO-0000Y2-3K
 for minios-devel@lists.xen.org; Fri, 08 Feb 2019 14:03:16 +0000
X-Inumbo-ID: 468b5e62-2baa-11e9-bc90-bc764e045a96
Received: from queen.nlehd.de (unknown [195.37.154.80])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id 468b5e62-2baa-11e9-bc90-bc764e045a96;
 Fri, 08 Feb 2019 14:03:14 +0000 (UTC)
Received: from c414.ant-net (c414.ant-net [192.168.0.156])
 by queen.nlehd.de (Postfix) with ESMTP id 3C5C440AE2;
 Fri,  8 Feb 2019 14:45:53 +0100 (CET)
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: minios-devel@lists.xen.org
Date: Fri,  8 Feb 2019 14:45:51 +0100
Message-Id: <20190208134551.18737-1-simon.kuenzer@neclab.eu>
X-Mailer: git-send-email 2.11.0
Subject: [Minios-devel] [UNIKRAFT PATCH] plat/xen: Grant table support as
 menu option
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Simon Kuenzer <simon.kuenzer@neclab.eu>, sharan.santhanam@neclab.eu,
 yuri.volchkov@neclab.eu
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SW50cm9kdWNlcyBhIG1lbnUgb3B0aW9uIHRvIGVuYWJsZSBvciBkaXNhYmxlIGdyYW50IHRhYmxl
IHN1cHBvcnQuClRoZSByZWFzb24gaXMgdGhhdCBvdXIgZ3JhbnQgdGFibGUgaW1wbGVtZW50YXRp
b24gZGVwZW5kcyBvbgpsaWJ1a2xvY2ssIGxpYnVrc2NoZWQsIGFuZCBsaWJ1a2FsbG9jLiBBIG1p
bmltYWwgcmVxdWlyZXMgdGhlc2UKbGlicmFyaWVzIHNlbGVjdGVkLCB0b28uIFRoaXMgbWF5IGJl
IGFuIG9ic3RhY2xlIHdoZW4gcnVubmluZyBkcml2ZXIKaW1wbGVtZW50YXRpb24gaW4gaGlnaGVy
LWxldmVsIGxhbmd1YWdlcy4gQWRkaXRpb25hbGx5LCBzb21lIG9mCnRoZXNlIGxpYnJhcmllcyBh
cmUgY3VycmVubHR5IG5vdCBzdXBwb3J0ZWQgb24gQXJtLiBJdCBpcwp3aXNlciB0byBnaXZlIGFu
IG9wdGlvbiBmb3IgZGlzYWJsaW5nIGdyYW50IHRhYmxlIHN1cHBvcnQuCgpTaWduZWQtb2ZmLWJ5
OiBTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4KLS0tCiBwbGF0L3hlbi9D
b25maWcudWsgICAgICAgICAgICAgICB8IDIwICsrKysrKysrKysrKysrKy0tLS0tCiBwbGF0L3hl
bi9NYWtlZmlsZS51ayAgICAgICAgICAgICB8ICAyICstCiBwbGF0L3hlbi9pbmNsdWRlL2NvbW1v
bi9nbnR0YWIuaCB8ICA2ICsrKysrKwogcGxhdC94ZW4vbWVtb3J5LmMgICAgICAgICAgICAgICAg
fCAgMiArKwogNCBmaWxlcyBjaGFuZ2VkLCAyNCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygt
KQoKZGlmZiAtLWdpdCBhL3BsYXQveGVuL0NvbmZpZy51ayBiL3BsYXQveGVuL0NvbmZpZy51awpp
bmRleCBkMDE0M2U5NS4uOWNmZTkwYTIgMTAwNjQ0Ci0tLSBhL3BsYXQveGVuL0NvbmZpZy51awor
KysgYi9wbGF0L3hlbi9Db25maWcudWsKQEAgLTMsOCArMyw2IEBAIG1lbnVjb25maWcgUExBVF9Y
RU4KICAgICAgICBkZWZhdWx0IG4KICAgICAgICBkZXBlbmRzIG9uIChBUkNIX1g4Nl8zMiB8fCBB
UkNIX1g4Nl82NCB8fCBBUkNIX0FSTV8zMikKICAgICAgICBzZWxlY3QgTElCVUtERUJVRwotICAg
ICAgIHNlbGVjdCBMSUJVS0xPQ0sKLSAgICAgICBzZWxlY3QgTElCVUtMT0NLX1NFTUFQSE9SRQog
ICAgICAgIHNlbGVjdCBMSUJOT0xJQkMgaWYgIUhBVkVfTElCQwogICAgICAgIHNlbGVjdCBMSUJG
RFQgaWYgQVJDSF9BUk1fMzIKICAgICAgICBzZWxlY3QgWEVOX0RCR0VNRVJHRU5DWSBpZiBBUkNI
X0FSTV8zMgpAQCAtMjEsMTEgKzE5LDIzIEBAIGlmIChQTEFUX1hFTikKIAkJb3B0aW9uIGlzIGVu
YWJsZWQgdGhlIGh5cGVydmlzb3IgY29uc29sZSBpcyB1c2VkCiAJCWZvciBrZXJuZWwgbWVzc2Fn
ZXMgb25seS4KIAorY29uZmlnIFhFTl9HTlRUQUIKKwlib29sICJHcmFudCB0YWJsZSBzdXBwb3J0
IgorCWRlZmF1bHQgeQorCWRlcGVuZHMgb24gKEFSQ0hfWDg2XzY0KQorCXNlbGVjdCBMSUJVS0FM
TE9DCisJc2VsZWN0IExJQlVLTE9DSworCXNlbGVjdCBMSUJVS0xPQ0tfU0VNQVBIT1JFCisJc2Vs
ZWN0IExJQlVLU0NIRUQKKwloZWxwCisJCVN1cHBvcnQgZ3JhbnQgdGFibGUgb3BlcmF0aW9ucwor
CiBtZW51Y29uZmlnIFhFTl9YRU5CVVMKLQlib29sICJYZW5idXMgRHJpdmVyIgorCWJvb2wgIlhl
bmJ1cy9YZW5TdG9yZSBkcml2ZXIiCiAJZGVmYXVsdCBuCi0JZGVwZW5kcyBvbiAoQVJDSF9YODZf
NjQpCisJZGVwZW5kcyBvbiBYRU5fR05UVEFCCiAJc2VsZWN0IExJQlVLQlVTCiAJaGVscAotCQlS
ZWdpc3RlciBhIFhlbmJ1cyBkcml2ZXIgYXMgdWtfYnVzCisJCVJlZ2lzdGVycyBYZW5idXMgYXMg
YnVzIGRyaXZlciB0byBsaWJ1a2J1cyBhbmQgcHJvdmlkZXMgYQorCQlYZW5TdG9yZSBjb21tdW5p
Y2F0aW9uIEFQSSBmb3IgWGVuIGRyaXZlcnMKIGVuZGlmCmRpZmYgLS1naXQgYS9wbGF0L3hlbi9N
YWtlZmlsZS51ayBiL3BsYXQveGVuL01ha2VmaWxlLnVrCmluZGV4IDM4YjUxMGFkLi5lNmQ1YmUw
ZSAxMDA2NDQKLS0tIGEvcGxhdC94ZW4vTWFrZWZpbGUudWsKKysrIGIvcGxhdC94ZW4vTWFrZWZp
bGUudWsKQEAgLTczLDcgKzczLDcgQEAgTElCWEVOUExBVF9TUkNTLXkgICAgICAgICAgICAgICs9
ICQoTElCWEVOUExBVF9CQVNFKS9sY3B1LmMKIExJQlhFTlBMQVRfU1JDUy15ICAgICAgICAgICAg
ICArPSAkKExJQlhFTlBMQVRfQkFTRSkvY29uc29sZS5jCiBMSUJYRU5QTEFUX1NSQ1MteSAgICAg
ICAgICAgICAgKz0gJChMSUJYRU5QTEFUX0JBU0UpL3NodXRkb3duLmMKIExJQlhFTlBMQVRfU1JD
Uy15ICAgICAgICAgICAgICArPSAkKExJQlhFTlBMQVRfQkFTRSkvZXZlbnRzLmMKLUxJQlhFTlBM
QVRfU1JDUy15ICAgICAgICAgICAgICArPSAkKExJQlhFTlBMQVRfQkFTRSkvZ250dGFiLmMKK0xJ
QlhFTlBMQVRfU1JDUy0kKENPTkZJR19YRU5fR05UVEFCKSArPSAkKExJQlhFTlBMQVRfQkFTRSkv
Z250dGFiLmMKIAogaWZlcSAoJChDT05GSUdfWEVOX1hFTkJVUykseSkKIExJQlhFTkJVU19FWFBP
UlRTICAgICAgICAgICAgICAgPSAkKExJQlhFTlBMQVRfQkFTRSkveGVuYnVzL2V4cG9ydHN5bXMu
dWsKZGlmZiAtLWdpdCBhL3BsYXQveGVuL2luY2x1ZGUvY29tbW9uL2dudHRhYi5oIGIvcGxhdC94
ZW4vaW5jbHVkZS9jb21tb24vZ250dGFiLmgKaW5kZXggZDRiYjQxNzIuLmY1Y2RlNWM1IDEwMDY0
NAotLS0gYS9wbGF0L3hlbi9pbmNsdWRlL2NvbW1vbi9nbnR0YWIuaAorKysgYi9wbGF0L3hlbi9p
bmNsdWRlL2NvbW1vbi9nbnR0YWIuaApAQCAtMjYsNiArMjYsMTAgQEAKICNpZm5kZWYgX19HTlRU
QUJfSF9fCiAjZGVmaW5lIF9fR05UVEFCX0hfXwogCisjaW5jbHVkZSA8dWsvY29uZmlnLmg+CisK
KyNpZmRlZiBDT05GSUdfWEVOX0dOVFRBQgorCiAjaW5jbHVkZSA8dWsvYWxsb2MuaD4KICNpbmNs
dWRlIDx4ZW4vZ3JhbnRfdGFibGUuaD4KIApAQCAtNDUsNCArNDksNiBAQCBjb25zdCBjaGFyICpn
bnR0YWJvcF9lcnJvcihfX3MxNiBzdGF0dXMpOwogCiBncmFudF9lbnRyeV92MV90ICpnbnR0YWJf
YXJjaF9pbml0KGludCBucl9ncmFudF9mcmFtZXMpOwogCisjZW5kaWYgLyogQ09ORklHX1hFTl9H
TlRUQUIgKi8KKwogI2VuZGlmIC8qICFfX0dOVFRBQl9IX18gKi8KZGlmZiAtLWdpdCBhL3BsYXQv
eGVuL21lbW9yeS5jIGIvcGxhdC94ZW4vbWVtb3J5LmMKaW5kZXggZjg0ZGNhNzEuLjFmNTU4ODdl
IDEwMDY0NAotLS0gYS9wbGF0L3hlbi9tZW1vcnkuYworKysgYi9wbGF0L3hlbi9tZW1vcnkuYwpA
QCAtMTIzLDYgKzEyMyw4IEBAIGludCB1a3BsYXRfbWVtcmVnaW9uX2dldChpbnQgaSwgc3RydWN0
IHVrcGxhdF9tZW1yZWdpb25fZGVzYyAqbSkKIAogaW50IF91a3BsYXRfbWVtX21hcHBpbmdzX2lu
aXQodm9pZCkKIHsKKyNpZmRlZiBDT05GSUdfWEVOX0dOVFRBQgogCWdudHRhYl9pbml0KCk7Cisj
ZW5kaWYKIAlyZXR1cm4gMDsKIH0KLS0gCjIuMTEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9z
LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcv
bWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Fri Feb 08 14:31:33 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 08 Feb 2019 14:31:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gs7Bk-0003C6-R8; Fri, 08 Feb 2019 14:31:32 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=PCXD=QP=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gs7Bj-0003BT-Qu
 for minios-devel@lists.xen.org; Fri, 08 Feb 2019 14:31:31 +0000
X-Inumbo-ID: 37ebc1c1-2bae-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 37ebc1c1-2bae-11e9-bc90-bc764e045a96;
 Fri, 08 Feb 2019 14:31:28 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 2EDBF104DBB;
 Fri,  8 Feb 2019 15:31:27 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id oGv2uEwB8No8; Fri,  8 Feb 2019 15:31:27 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 052ED104DBA
 for <minios-devel@lists.xen.org>; Fri,  8 Feb 2019 15:31:25 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Fri, 8 Feb 2019 15:31:24 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Fri, 8 Feb 2019 15:31:03 +0100
Message-ID: <20190208143108.27175-2-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190208143108.27175-1-yuri.volchkov@neclab.eu>
References: <20190208143108.27175-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 1/6] lib/ramfs: initial import
 from OSv
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Z2l0IHRhZzogdjAuNTIuMApjb21taXQ6IDAwMjk5MTkwNDE0ZTRjN2M1YjBmMmQ3NGNkMTE3NjNk
YWMzNGU1YjkKClNpZ25lZC1vZmYtYnk6IFl1cmkgVm9sY2hrb3YgPHl1cmkudm9sY2hrb3ZAbmVj
bGFiLmV1PgotLS0KIGxpYi9yYW1mcy9yYW1mcy5oICAgICAgICB8ICA2OCArKysrCiBsaWIvcmFt
ZnMvcmFtZnNfdmZzb3BzLmMgfCAgOTAgKysrKysrCiBsaWIvcmFtZnMvcmFtZnNfdm5vcHMuYyAg
fCA2NjkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNo
YW5nZWQsIDgyNyBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3JhbWZzL3Jh
bWZzLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvcmFtZnMvcmFtZnNfdmZzb3BzLmMKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBsaWIvcmFtZnMvcmFtZnNfdm5vcHMuYwoKZGlmZiAtLWdpdCBhL2xpYi9y
YW1mcy9yYW1mcy5oIGIvbGliL3JhbWZzL3JhbWZzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAuLjg4Y2NiZTcyCi0tLSAvZGV2L251bGwKKysrIGIvbGliL3JhbWZzL3JhbWZz
LmgKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwNi0yMDA3LCBLb2hz
dWtlIE9odGFuaQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRo
ZXIgdGhlIG5hbWUgb2YgdGhlIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGFueSBjby1jb250cmli
dXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQorICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBfUkFNRlNfSAorI2RlZmluZSBfUkFNRlNfSAorCisjaW5j
bHVkZSA8b3N2L3ByZXguaD4KKworLyogI2RlZmluZSBERUJVR19SQU1GUyAxICovCisKKyNpZmRl
ZiBERUJVR19SQU1GUworI2RlZmluZSBEUFJJTlRGKGEpCWRwcmludGYgYQorI2Vsc2UKKyNkZWZp
bmUgRFBSSU5URihhKSAgICBkbyB7fSB3aGlsZSAoMCkKKyNlbmRpZgorCisjZGVmaW5lIEFTU0VS
VChlKSAgICBhc3NlcnQoZSkKKworLyoKKyAqIEZpbGUvZGlyZWN0b3J5IG5vZGUgZm9yIFJBTUZT
CisgKi8KK3N0cnVjdCByYW1mc19ub2RlIHsKKyAgICBzdHJ1Y3QgcmFtZnNfbm9kZSAqcm5fbmV4
dDsgICAvKiBuZXh0IG5vZGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5ICovCisgICAgc3RydWN0IHJh
bWZzX25vZGUgKnJuX2NoaWxkOyAgLyogZmlyc3QgY2hpbGQgbm9kZSAqLworICAgIGludCBybl90
eXBlOyAgICAvKiBmaWxlIG9yIGRpcmVjdG9yeSAqLworICAgIGNoYXIgKnJuX25hbWU7ICAgIC8q
IG5hbWUgKG51bGwtdGVybWluYXRlZCkgKi8KKyAgICBzaXplX3Qgcm5fbmFtZWxlbjsgICAgLyog
bGVuZ3RoIG9mIG5hbWUgbm90IGluY2x1ZGluZyB0ZXJtaW5hdG9yICovCisgICAgc2l6ZV90IHJu
X3NpemU7ICAgIC8qIGZpbGUgc2l6ZSAqLworICAgIGNoYXIgKnJuX2J1ZjsgICAgLyogYnVmZmVy
IHRvIHRoZSBmaWxlIGRhdGEgKi8KKyAgICBzaXplX3Qgcm5fYnVmc2l6ZTsgICAgLyogYWxsb2Nh
dGVkIGJ1ZmZlciBzaXplICovCisgICAgc3RydWN0IHRpbWVzcGVjIHJuX2N0aW1lOworICAgIHN0
cnVjdCB0aW1lc3BlYyBybl9hdGltZTsKKyAgICBzdHJ1Y3QgdGltZXNwZWMgcm5fbXRpbWU7Cisg
ICAgaW50IHJuX21vZGU7CisgICAgYm9vbCBybl9vd25zX2J1ZjsKK307CisKK3N0cnVjdCByYW1m
c19ub2RlICpyYW1mc19hbGxvY2F0ZV9ub2RlKGNvbnN0IGNoYXIgKm5hbWUsIGludCB0eXBlKTsK
Kwordm9pZCByYW1mc19mcmVlX25vZGUoc3RydWN0IHJhbWZzX25vZGUgKm5vZGUpOworCisjZW5k
aWYgLyogIV9SQU1GU19IICovCmRpZmYgLS1naXQgYS9saWIvcmFtZnMvcmFtZnNfdmZzb3BzLmMg
Yi9saWIvcmFtZnMvcmFtZnNfdmZzb3BzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAuLjcyZmU3ZWRiCi0tLSAvZGV2L251bGwKKysrIGIvbGliL3JhbWZzL3JhbWZzX3Zmc29w
cy5jCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDYtMjAwNywgS29o
c3VrZSBPaHRhbmkKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0
aGVyIHRoZSBuYW1lIG9mIHRoZSBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBhbnkgY28tY29udHJp
YnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKKyAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlIDxlcnJuby5oPgorCisjaW5jbHVkZSA8b3N2L3Zub2Rl
Lmg+CisjaW5jbHVkZSA8b3N2L21vdW50Lmg+CisjaW5jbHVkZSA8b3N2L2RlbnRyeS5oPgorCisj
aW5jbHVkZSAicmFtZnMuaCIKKworZXh0ZXJuIHN0cnVjdCB2bm9wcyByYW1mc192bm9wczsKKwor
c3RhdGljIGludCByYW1mc19tb3VudChzdHJ1Y3QgbW91bnQgKm1wLCBjb25zdCBjaGFyICpkZXYs
IGludCBmbGFncywgY29uc3Qgdm9pZCAqZGF0YSk7CisKK3N0YXRpYyBpbnQgcmFtZnNfdW5tb3Vu
dChzdHJ1Y3QgbW91bnQgKm1wLCBpbnQgZmxhZ3MpOworCisjZGVmaW5lIHJhbWZzX3N5bmMgICAg
KCh2ZnNvcF9zeW5jX3QpdmZzX251bGxvcCkKKyNkZWZpbmUgcmFtZnNfdmdldCAgICAoKHZmc29w
X3ZnZXRfdCl2ZnNfbnVsbG9wKQorI2RlZmluZSByYW1mc19zdGF0ZnMgICAgKCh2ZnNvcF9zdGF0
ZnNfdCl2ZnNfbnVsbG9wKQorCisvKgorICogRmlsZSBzeXN0ZW0gb3BlcmF0aW9ucworICovCitz
dHJ1Y3QgdmZzb3BzIHJhbWZzX3Zmc29wcyA9IHsKKyAgICAgICAgcmFtZnNfbW91bnQsICAgICAg
IC8qIG1vdW50ICovCisgICAgICAgIHJhbWZzX3VubW91bnQsICAgICAvKiB1bm1vdW50ICovCisg
ICAgICAgIHJhbWZzX3N5bmMsICAgICAgICAvKiBzeW5jICovCisgICAgICAgIHJhbWZzX3ZnZXQs
ICAgICAgICAvKiB2Z2V0ICovCisgICAgICAgIHJhbWZzX3N0YXRmcywgICAgICAvKiBzdGF0ZnMg
Ki8KKyAgICAgICAgJnJhbWZzX3Zub3BzLCAgICAgIC8qIHZub3BzICovCit9OworCisvKgorICog
TW91bnQgYSBmaWxlIHN5c3RlbS4KKyAqLworc3RhdGljIGludAorcmFtZnNfbW91bnQoc3RydWN0
IG1vdW50ICptcCwgY29uc3QgY2hhciAqZGV2LCBpbnQgZmxhZ3MsIGNvbnN0IHZvaWQgKmRhdGEp
Cit7CisgICAgc3RydWN0IHJhbWZzX25vZGUgKm5wOworCisgICAgRFBSSU5URigoInJhbWZzX21v
dW50OiBkZXY9JXNcbiIsIGRldikpOworCisgICAgLyogQ3JlYXRlIGEgcm9vdCBub2RlICovCisg
ICAgbnAgPSByYW1mc19hbGxvY2F0ZV9ub2RlKCIvIiwgVkRJUik7CisgICAgaWYgKG5wID09IE5V
TEwpCisgICAgICAgIHJldHVybiBFTk9NRU07CisgICAgbXAtPm1fcm9vdC0+ZF92bm9kZS0+dl9k
YXRhID0gbnA7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qCisgKiBVbm1vdW50IGEgZmlsZSBzeXN0
ZW0uCisgKgorICogTk9URTogQ3VycmVudGx5LCB3ZSBkb24ndCBzdXBwb3J0IHVubW91bnRpbmcg
b2YgdGhlIFJBTUZTLiBUaGlzIGlzCisgKiAgICAgICBiZWNhdXNlIHdlIGhhdmUgdG8gZGVhbGxv
Y2F0ZSBhbGwgbm9kZXMgaW5jbHVkZWQgaW4gYWxsIHN1YgorICogICAgICAgZGlyZWN0b3JpZXMs
IGFuZCBpdCByZXF1aXJlcyBtb3JlIHdvcmsuLi4KKyAqLworc3RhdGljIGludAorcmFtZnNfdW5t
b3VudChzdHJ1Y3QgbW91bnQgKm1wLCBpbnQgZmxhZ3MpCit7CisgICAgcmVsZWFzZV9tcF9kZW50
cmllcyhtcCk7CisgICAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9saWIvcmFtZnMvcmFtZnNf
dm5vcHMuYyBiL2xpYi9yYW1mcy9yYW1mc192bm9wcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwLi45MjkxYTRlYwotLS0gL2Rldi9udWxsCisrKyBiL2xpYi9yYW1mcy9yYW1m
c192bm9wcy5jCkBAIC0wLDAgKzEsNjY5IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA2LTIw
MDcsIEtvaHN1a2UgT2h0YW5pCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICog
My4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgYW55IGNv
LWNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCisgKiAgICB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisg
KiBTVUNIIERBTUFHRS4KKyAqLworCisvKgorICogcm1hZnNfdm5vcHMuYyAtIHZub2RlIG9wZXJh
dGlvbnMgZm9yIFJBTSBmaWxlIHN5c3RlbS4KKyAqLworCisjaW5jbHVkZSA8c3lzL3N0YXQuaD4K
KyNpbmNsdWRlIDxkaXJlbnQuaD4KKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKworI2luY2x1ZGUg
PGVycm5vLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5j
bHVkZSA8ZmNudGwuaD4KKworI2luY2x1ZGUgPG9zdi9wcmV4Lmg+CisjaW5jbHVkZSA8b3N2L3Zu
b2RlLmg+CisjaW5jbHVkZSA8b3N2L2ZpbGUuaD4KKyNpbmNsdWRlIDxvc3YvbW91bnQuaD4KKyNp
bmNsdWRlIDxvc3Yvdm5vZGVfYXR0ci5oPgorCisjaW5jbHVkZSAicmFtZnMuaCIKKworc3RhdGlj
IG11dGV4X3QgcmFtZnNfbG9jayA9IE1VVEVYX0lOSVRJQUxJWkVSOworc3RhdGljIHVpbnQ2NF90
IGlub2RlX2NvdW50ID0gMTsgLyogaW5vZGUgMCBpcyByZXNlcnZlZCB0byByb290ICovCisKK3N0
YXRpYyB2b2lkCitzZXRfdGltZXNfdG9fbm93KHN0cnVjdCB0aW1lc3BlYyAqdGltZTEsIHN0cnVj
dCB0aW1lc3BlYyAqdGltZTIgPSBudWxscHRyLCBzdHJ1Y3QgdGltZXNwZWMgKnRpbWUzID0gbnVs
bHB0cikKK3sKKyAgICBzdHJ1Y3QgdGltZXNwZWMgbm93OworICAgIGNsb2NrX2dldHRpbWUoQ0xP
Q0tfUkVBTFRJTUUsICZub3cpOworICAgIGlmICh0aW1lMSkgeworICAgICAgICBtZW1jcHkodGlt
ZTEsICZub3csIHNpemVvZihzdHJ1Y3QgdGltZXNwZWMpKTsKKyAgICB9CisgICAgaWYgKHRpbWUy
KSB7CisgICAgICAgIG1lbWNweSh0aW1lMiwgJm5vdywgc2l6ZW9mKHN0cnVjdCB0aW1lc3BlYykp
OworICAgIH0KKyAgICBpZiAodGltZTMpIHsKKyAgICAgICAgbWVtY3B5KHRpbWUzLCAmbm93LCBz
aXplb2Yoc3RydWN0IHRpbWVzcGVjKSk7CisgICAgfQorfQorCitzdHJ1Y3QgcmFtZnNfbm9kZSAq
CityYW1mc19hbGxvY2F0ZV9ub2RlKGNvbnN0IGNoYXIgKm5hbWUsIGludCB0eXBlKQoreworICAg
IHN0cnVjdCByYW1mc19ub2RlICpucDsKKworICAgIG5wID0gKHJhbWZzX25vZGUgKikgbWFsbG9j
KHNpemVvZihzdHJ1Y3QgcmFtZnNfbm9kZSkpOworICAgIGlmIChucCA9PSBOVUxMKQorICAgICAg
ICByZXR1cm4gTlVMTDsKKyAgICBtZW1zZXQobnAsIDAsIHNpemVvZihzdHJ1Y3QgcmFtZnNfbm9k
ZSkpOworCisgICAgbnAtPnJuX25hbWVsZW4gPSBzdHJsZW4obmFtZSk7CisgICAgbnAtPnJuX25h
bWUgPSAoY2hhciAqKSBtYWxsb2MobnAtPnJuX25hbWVsZW4gKyAxKTsKKyAgICBpZiAobnAtPnJu
X25hbWUgPT0gTlVMTCkgeworICAgICAgICBmcmVlKG5wKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7
CisgICAgfQorICAgIHN0cmxjcHkobnAtPnJuX25hbWUsIG5hbWUsIG5wLT5ybl9uYW1lbGVuICsg
MSk7CisgICAgbnAtPnJuX3R5cGUgPSB0eXBlOworCisgICAgaWYgKHR5cGUgPT0gVkRJUikKKyAg
ICAgICAgbnAtPnJuX21vZGUgPSBTX0lGRElSfDA3Nzc7CisgICAgZWxzZSBpZiAodHlwZSA9PSBW
TE5LKQorICAgICAgICBucC0+cm5fbW9kZSA9IFNfSUZMTkt8MDc3NzsKKyAgICBlbHNlCisgICAg
ICAgIG5wLT5ybl9tb2RlID0gU19JRlJFR3wwNzc3OworCisgICAgc2V0X3RpbWVzX3RvX25vdygm
KG5wLT5ybl9jdGltZSksICYobnAtPnJuX2F0aW1lKSwgJihucC0+cm5fbXRpbWUpKTsKKyAgICBu
cC0+cm5fb3duc19idWYgPSB0cnVlOworCisgICAgcmV0dXJuIG5wOworfQorCit2b2lkCityYW1m
c19mcmVlX25vZGUoc3RydWN0IHJhbWZzX25vZGUgKm5wKQoreworICAgIGlmIChucC0+cm5fYnVm
ICE9IE5VTEwgJiYgbnAtPnJuX293bnNfYnVmKQorICAgICAgICBmcmVlKG5wLT5ybl9idWYpOwor
CisgICAgZnJlZShucC0+cm5fbmFtZSk7CisgICAgZnJlZShucCk7Cit9CisKK3N0YXRpYyBzdHJ1
Y3QgcmFtZnNfbm9kZSAqCityYW1mc19hZGRfbm9kZShzdHJ1Y3QgcmFtZnNfbm9kZSAqZG5wLCBj
aGFyICpuYW1lLCBpbnQgdHlwZSkKK3sKKyAgICBzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAsICpwcmV2
OworCisgICAgbnAgPSByYW1mc19hbGxvY2F0ZV9ub2RlKG5hbWUsIHR5cGUpOworICAgIGlmIChu
cCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIG11dGV4X2xvY2soJnJhbWZz
X2xvY2spOworCisgICAgLyogTGluayB0byB0aGUgZGlyZWN0b3J5IGxpc3QgKi8KKyAgICBpZiAo
ZG5wLT5ybl9jaGlsZCA9PSBOVUxMKSB7CisgICAgICAgIGRucC0+cm5fY2hpbGQgPSBucDsKKyAg
ICB9IGVsc2UgeworICAgICAgICBwcmV2ID0gZG5wLT5ybl9jaGlsZDsKKyAgICAgICAgd2hpbGUg
KHByZXYtPnJuX25leHQgIT0gTlVMTCkKKyAgICAgICAgICAgIHByZXYgPSBwcmV2LT5ybl9uZXh0
OworICAgICAgICBwcmV2LT5ybl9uZXh0ID0gbnA7CisgICAgfQorCisgICAgc2V0X3RpbWVzX3Rv
X25vdygmKGRucC0+cm5fbXRpbWUpLCAmKGRucC0+cm5fY3RpbWUpKTsKKworICAgIG11dGV4X3Vu
bG9jaygmcmFtZnNfbG9jayk7CisgICAgcmV0dXJuIG5wOworfQorCitzdGF0aWMgaW50CityYW1m
c19yZW1vdmVfbm9kZShzdHJ1Y3QgcmFtZnNfbm9kZSAqZG5wLCBzdHJ1Y3QgcmFtZnNfbm9kZSAq
bnApCit7CisgICAgc3RydWN0IHJhbWZzX25vZGUgKnByZXY7CisKKyAgICBpZiAoZG5wLT5ybl9j
aGlsZCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gRUJVU1k7CisKKyAgICBtdXRleF9sb2NrKCZy
YW1mc19sb2NrKTsKKworICAgIC8qIFVubGluayBmcm9tIHRoZSBkaXJlY3RvcnkgbGlzdCAqLwor
ICAgIGlmIChkbnAtPnJuX2NoaWxkID09IG5wKSB7CisgICAgICAgIGRucC0+cm5fY2hpbGQgPSBu
cC0+cm5fbmV4dDsKKyAgICB9IGVsc2UgeworICAgICAgICBmb3IgKHByZXYgPSBkbnAtPnJuX2No
aWxkOyBwcmV2LT5ybl9uZXh0ICE9IG5wOworICAgICAgICAgICAgIHByZXYgPSBwcmV2LT5ybl9u
ZXh0KSB7CisgICAgICAgICAgICBpZiAocHJldi0+cm5fbmV4dCA9PSBOVUxMKSB7CisgICAgICAg
ICAgICAgICAgbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gRU5PRU5UOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHByZXYtPnJuX25l
eHQgPSBucC0+cm5fbmV4dDsKKyAgICB9CisgICAgcmFtZnNfZnJlZV9ub2RlKG5wKTsKKworICAg
IHNldF90aW1lc190b19ub3coJihkbnAtPnJuX210aW1lKSwgJihkbnAtPnJuX2N0aW1lKSk7CisK
KyAgICBtdXRleF91bmxvY2soJnJhbWZzX2xvY2spOworICAgIHJldHVybiAwOworfQorCitzdGF0
aWMgaW50CityYW1mc19yZW5hbWVfbm9kZShzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAsIGNoYXIgKm5h
bWUpCit7CisgICAgc2l6ZV90IGxlbjsKKyAgICBjaGFyICp0bXA7CisKKyAgICBsZW4gPSBzdHJs
ZW4obmFtZSk7CisgICAgaWYgKGxlbiA+IE5BTUVfTUFYKSB7CisgICAgICAgIHJldHVybiBFTkFN
RVRPT0xPTkc7CisgICAgfQorICAgIGlmIChsZW4gPD0gbnAtPnJuX25hbWVsZW4pIHsKKyAgICAg
ICAgLyogUmV1c2UgY3VycmVudCBuYW1lIGJ1ZmZlciAqLworICAgICAgICBzdHJsY3B5KG5wLT5y
bl9uYW1lLCBuYW1lLCBucC0+cm5fbmFtZWxlbiArIDEpOworICAgIH0gZWxzZSB7CisgICAgICAg
IC8qIEV4cGFuZCBuYW1lIGJ1ZmZlciAqLworICAgICAgICB0bXAgPSAoY2hhciAqKSBtYWxsb2Mo
bGVuICsgMSk7CisgICAgICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBF
Tk9NRU07CisgICAgICAgIHN0cmxjcHkodG1wLCBuYW1lLCBsZW4gKyAxKTsKKyAgICAgICAgZnJl
ZShucC0+cm5fbmFtZSk7CisgICAgICAgIG5wLT5ybl9uYW1lID0gdG1wOworICAgIH0KKyAgICBu
cC0+cm5fbmFtZWxlbiA9IGxlbjsKKyAgICBzZXRfdGltZXNfdG9fbm93KCYobnAtPnJuX2N0aW1l
KSk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK3JhbWZzX2xvb2t1cChzdHJ1Y3Qg
dm5vZGUgKmR2cCwgY2hhciAqbmFtZSwgc3RydWN0IHZub2RlICoqdnBwKQoreworICAgIHN0cnVj
dCByYW1mc19ub2RlICpucCwgKmRucDsKKyAgICBzdHJ1Y3Qgdm5vZGUgKnZwOworICAgIHNpemVf
dCBsZW47CisgICAgaW50IGZvdW5kOworCisgICAgKnZwcCA9IE5VTEw7CisKKyAgICBpZiAoKm5h
bWUgPT0gJ1wwJykKKyAgICAgICAgcmV0dXJuIEVOT0VOVDsKKworICAgIG11dGV4X2xvY2soJnJh
bWZzX2xvY2spOworCisgICAgbGVuID0gc3RybGVuKG5hbWUpOworICAgIGRucCA9IChyYW1mc19u
b2RlICopIGR2cC0+dl9kYXRhOworICAgIGZvdW5kID0gMDsKKyAgICBmb3IgKG5wID0gZG5wLT5y
bl9jaGlsZDsgbnAgIT0gTlVMTDsgbnAgPSBucC0+cm5fbmV4dCkgeworICAgICAgICBpZiAobnAt
PnJuX25hbWVsZW4gPT0gbGVuICYmCisgICAgICAgICAgICBtZW1jbXAobmFtZSwgbnAtPnJuX25h
bWUsIGxlbikgPT0gMCkgeworICAgICAgICAgICAgZm91bmQgPSAxOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKGZvdW5kID09IDApIHsKKyAgICAgICAgbXV0
ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKKyAgICAgICAgcmV0dXJuIEVOT0VOVDsKKyAgICB9Cisg
ICAgaWYgKHZnZXQoZHZwLT52X21vdW50LCBpbm9kZV9jb3VudCsrLCAmdnApKSB7CisgICAgICAg
IC8qIGZvdW5kIGluIGNhY2hlICovCisgICAgICAgICp2cHAgPSB2cDsKKyAgICAgICAgbXV0ZXhf
dW5sb2NrKCZyYW1mc19sb2NrKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGlmICgh
dnApIHsKKyAgICAgICAgbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKKyAgICAgICAgcmV0dXJu
IEVOT01FTTsKKyAgICB9CisgICAgdnAtPnZfZGF0YSA9IG5wOworICAgIHZwLT52X21vZGUgPSBB
TExQRVJNUzsKKyAgICB2cC0+dl90eXBlID0gbnAtPnJuX3R5cGU7CisgICAgdnAtPnZfc2l6ZSA9
IG5wLT5ybl9zaXplOworCisgICAgbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKKworICAgICp2
cHAgPSB2cDsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CityYW1mc19ta2Rpcihz
dHJ1Y3Qgdm5vZGUgKmR2cCwgY2hhciAqbmFtZSwgbW9kZV90IG1vZGUpCit7CisgICAgc3RydWN0
IHJhbWZzX25vZGUgKm5wOworCisgICAgRFBSSU5URigoIm1rZGlyICVzXG4iLCBuYW1lKSk7Cisg
ICAgaWYgKHN0cmxlbihuYW1lKSA+IE5BTUVfTUFYKSB7CisgICAgICAgIHJldHVybiBFTkFNRVRP
T0xPTkc7CisgICAgfQorCisgICAgaWYgKCFTX0lTRElSKG1vZGUpKQorICAgICAgICByZXR1cm4g
RUlOVkFMOworCisgICAgbnAgPSAocmFtZnNfbm9kZSAqKSByYW1mc19hZGRfbm9kZSgocmFtZnNf
bm9kZSAqKSBkdnAtPnZfZGF0YSwgbmFtZSwgVkRJUik7CisgICAgaWYgKG5wID09IE5VTEwpCisg
ICAgICAgIHJldHVybiBFTk9NRU07CisgICAgbnAtPnJuX3NpemUgPSAwOworCisgICAgcmV0dXJu
IDA7Cit9CisKK3N0YXRpYyBpbnQKK3JhbWZzX3N5bWxpbmsoc3RydWN0IHZub2RlICpkdnAsIGNo
YXIgKm5hbWUsIGNoYXIgKmxpbmspCit7CisgICAgaWYgKHN0cmxlbihuYW1lKSA+IE5BTUVfTUFY
KSB7CisgICAgICAgIHJldHVybiBFTkFNRVRPT0xPTkc7CisgICAgfQorICAgIGF1dG8gbnAgPSBy
YW1mc19hZGRfbm9kZSgocmFtZnNfbm9kZSAqKSBkdnAtPnZfZGF0YSwgbmFtZSwgVkxOSyk7Cisg
ICAgaWYgKG5wID09IE5VTEwpCisgICAgICAgIHJldHVybiBFTk9NRU07CisgICAgLy8gU2F2ZSB0
aGUgbGluayB0YXJnZXQgd2l0aG91dCB0aGUgZmluYWwgbnVsbCwgYXMgcmVhZGxpbmsoKSB3YW50
cyBpdC4KKyAgICBzaXplX3QgbGVuID0gc3RybGVuKGxpbmspOworICAgIG5wLT5ybl9idWYgPSBz
dHJuZHVwKGxpbmssIGxlbik7CisgICAgbnAtPnJuX2J1ZnNpemUgPSBucC0+cm5fc2l6ZSA9IGxl
bjsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CityYW1mc19yZWFkbGluayhzdHJ1
Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3QgdWlvICp1aW8pCit7CisgICAgc3RydWN0IHJhbWZzX25vZGUg
Km5wID0gKHJhbWZzX25vZGUgKikgdnAtPnZfZGF0YTsKKyAgICBzaXplX3QgbGVuOworCisgICAg
aWYgKHZwLT52X3R5cGUgIT0gVkxOSykgeworICAgICAgICByZXR1cm4gRUlOVkFMOworICAgIH0K
KyAgICBpZiAodWlvLT51aW9fb2Zmc2V0IDwgMCkgeworICAgICAgICByZXR1cm4gRUlOVkFMOwor
ICAgIH0KKyAgICBpZiAodWlvLT51aW9fcmVzaWQgPT0gMCkgeworICAgICAgICByZXR1cm4gMDsK
KyAgICB9CisgICAgaWYgKHVpby0+dWlvX29mZnNldCA+PSAob2ZmX3QpIHZwLT52X3NpemUpCisg
ICAgICAgIHJldHVybiAwOworICAgIGlmICh2cC0+dl9zaXplIC0gdWlvLT51aW9fb2Zmc2V0IDwg
dWlvLT51aW9fcmVzaWQpCisgICAgICAgIGxlbiA9IHZwLT52X3NpemUgLSB1aW8tPnVpb19vZmZz
ZXQ7CisgICAgZWxzZQorICAgICAgICBsZW4gPSB1aW8tPnVpb19yZXNpZDsKKworICAgIHNldF90
aW1lc190b19ub3coICYobnAtPnJuX2F0aW1lKSk7CisgICAgcmV0dXJuIHVpb21vdmUobnAtPnJu
X2J1ZiArIHVpby0+dWlvX29mZnNldCwgbGVuLCB1aW8pOworfQorCisvKiBSZW1vdmUgYSBkaXJl
Y3RvcnkgKi8KK3N0YXRpYyBpbnQKK3JhbWZzX3JtZGlyKHN0cnVjdCB2bm9kZSAqZHZwLCBzdHJ1
Y3Qgdm5vZGUgKnZwLCBjaGFyICpuYW1lKQoreworICAgIHJldHVybiByYW1mc19yZW1vdmVfbm9k
ZSgocmFtZnNfbm9kZSAqKSBkdnAtPnZfZGF0YSwgKHJhbWZzX25vZGUgKikgdnAtPnZfZGF0YSk7
Cit9CisKKy8qIFJlbW92ZSBhIGZpbGUgKi8KK3N0YXRpYyBpbnQKK3JhbWZzX3JlbW92ZShzdHJ1
Y3Qgdm5vZGUgKmR2cCwgc3RydWN0IHZub2RlICp2cCwgY2hhciAqbmFtZSkKK3sKKyAgICBEUFJJ
TlRGKCgicmVtb3ZlICVzIGluICVzXG4iLCBuYW1lLCBkdnAtPnZfcGF0aCkpOworICAgIHJldHVy
biByYW1mc19yZW1vdmVfbm9kZSgocmFtZnNfbm9kZSAqKSBkdnAtPnZfZGF0YSwgKHJhbWZzX25v
ZGUgKikgdnAtPnZfZGF0YSk7Cit9CisKKy8qIFRydW5jYXRlIGZpbGUgKi8KK3N0YXRpYyBpbnQK
K3JhbWZzX3RydW5jYXRlKHN0cnVjdCB2bm9kZSAqdnAsIG9mZl90IGxlbmd0aCkKK3sKKyAgICBz
dHJ1Y3QgcmFtZnNfbm9kZSAqbnA7CisgICAgdm9pZCAqbmV3X2J1ZjsKKyAgICBzaXplX3QgbmV3
X3NpemU7CisKKyAgICBEUFJJTlRGKCgidHJ1bmNhdGUgJXMgbGVuZ3RoPSVkXG4iLCB2cC0+dl9w
YXRoLCBsZW5ndGgpKTsKKyAgICBucCA9IChyYW1mc19ub2RlICopIHZwLT52X2RhdGE7CisKKyAg
ICBpZiAobGVuZ3RoID09IDApIHsKKyAgICAgICAgaWYgKG5wLT5ybl9idWYgIT0gTlVMTCkgewor
ICAgICAgICAgICAgaWYobnAtPnJuX293bnNfYnVmKQorICAgICAgICAgICAgICAgIGZyZWUobnAt
PnJuX2J1Zik7CisgICAgICAgICAgICBucC0+cm5fYnVmID0gTlVMTDsKKyAgICAgICAgICAgIG5w
LT5ybl9idWZzaXplID0gMDsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoc2l6ZV90KGxlbmd0
aCkgPiBucC0+cm5fYnVmc2l6ZSkgeworICAgICAgICAvLyBYWFg6IHRoaXMgY291bGQgdXNlIGEg
cGFnZSBsZXZlbCBhbGxvY2F0b3IKKyAgICAgICAgbmV3X3NpemUgPSByb3VuZF9wYWdlKGxlbmd0
aCk7CisgICAgICAgIG5ld19idWYgPSBtYWxsb2MobmV3X3NpemUpOworICAgICAgICBpZiAoIW5l
d19idWYpCisgICAgICAgICAgICByZXR1cm4gRUlPOworICAgICAgICBpZiAobnAtPnJuX3NpemUg
IT0gMCkgeworICAgICAgICAgICAgbWVtY3B5KG5ld19idWYsIG5wLT5ybl9idWYsIHZwLT52X3Np
emUpOworICAgICAgICAgICAgaWYobnAtPnJuX293bnNfYnVmKQorICAgICAgICAgICAgICAgIGZy
ZWUobnAtPnJuX2J1Zik7CisgICAgICAgIH0KKyAgICAgICAgbnAtPnJuX2J1ZiA9IChjaGFyICop
IG5ld19idWY7CisgICAgICAgIG5wLT5ybl9idWZzaXplID0gbmV3X3NpemU7CisgICAgICAgIG5w
LT5ybl9vd25zX2J1ZiA9IHRydWU7CisgICAgfQorICAgIG5wLT5ybl9zaXplID0gbGVuZ3RoOwor
ICAgIHZwLT52X3NpemUgPSBsZW5ndGg7CisgICAgc2V0X3RpbWVzX3RvX25vdygmKG5wLT5ybl9t
dGltZSksICYobnAtPnJuX2N0aW1lKSk7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qCisgKiBDcmVh
dGUgZW1wdHkgZmlsZS4KKyAqLworc3RhdGljIGludAorcmFtZnNfY3JlYXRlKHN0cnVjdCB2bm9k
ZSAqZHZwLCBjaGFyICpuYW1lLCBtb2RlX3QgbW9kZSkKK3sKKyAgICBzdHJ1Y3QgcmFtZnNfbm9k
ZSAqbnA7CisKKyAgICBpZiAoc3RybGVuKG5hbWUpID4gTkFNRV9NQVgpIHsKKyAgICAgICAgcmV0
dXJuIEVOQU1FVE9PTE9ORzsKKyAgICB9CisKKyAgICBEUFJJTlRGKCgiY3JlYXRlICVzIGluICVz
XG4iLCBuYW1lLCBkdnAtPnZfcGF0aCkpOworICAgIGlmICghU19JU1JFRyhtb2RlKSkKKyAgICAg
ICAgcmV0dXJuIEVJTlZBTDsKKworICAgIG5wID0gcmFtZnNfYWRkX25vZGUoKHJhbWZzX25vZGUg
KikgZHZwLT52X2RhdGEsIG5hbWUsIFZSRUcpOworICAgIGlmIChucCA9PSBOVUxMKQorICAgICAg
ICByZXR1cm4gRU5PTUVNOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CityYW1mc19y
ZWFkKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCBmaWxlICpmcCwgc3RydWN0IHVpbyAqdWlvLCBp
bnQgaW9mbGFnKQoreworICAgIHN0cnVjdCByYW1mc19ub2RlICpucCA9IChyYW1mc19ub2RlICop
IHZwLT52X2RhdGE7CisgICAgc2l6ZV90IGxlbjsKKworICAgIGlmICh2cC0+dl90eXBlID09IFZE
SVIpIHsKKyAgICAgICAgcmV0dXJuIEVJU0RJUjsKKyAgICB9CisgICAgaWYgKHZwLT52X3R5cGUg
IT0gVlJFRykgeworICAgICAgICByZXR1cm4gRUlOVkFMOworICAgIH0KKyAgICBpZiAodWlvLT51
aW9fb2Zmc2V0IDwgMCkgeworICAgICAgICByZXR1cm4gRUlOVkFMOworICAgIH0KKyAgICBpZiAo
dWlvLT51aW9fcmVzaWQgPT0gMCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBp
ZiAodWlvLT51aW9fb2Zmc2V0ID49IChvZmZfdCkgdnAtPnZfc2l6ZSkKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICBpZiAodnAtPnZfc2l6ZSAtIHVpby0+dWlvX29mZnNldCA8IHVpby0+dWlvX3Jl
c2lkKQorICAgICAgICBsZW4gPSB2cC0+dl9zaXplIC0gdWlvLT51aW9fb2Zmc2V0OworICAgIGVs
c2UKKyAgICAgICAgbGVuID0gdWlvLT51aW9fcmVzaWQ7CisKKyAgICBzZXRfdGltZXNfdG9fbm93
KCYobnAtPnJuX2F0aW1lKSk7CisKKyAgICByZXR1cm4gdWlvbW92ZShucC0+cm5fYnVmICsgdWlv
LT51aW9fb2Zmc2V0LCBsZW4sIHVpbyk7Cit9CisKK2ludAorcmFtZnNfc2V0X2ZpbGVfZGF0YShz
dHJ1Y3Qgdm5vZGUgKnZwLCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSkKK3sKKyAgICBz
dHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSAocmFtZnNfbm9kZSAqKSB2cC0+dl9kYXRhOworCisgICAg
aWYgKHZwLT52X3R5cGUgPT0gVkRJUikgeworICAgICAgICByZXR1cm4gRUlTRElSOworICAgIH0K
KyAgICBpZiAodnAtPnZfdHlwZSAhPSBWUkVHKSB7CisgICAgICAgIHJldHVybiBFSU5WQUw7Cisg
ICAgfQorICAgIGlmIChucC0+cm5fYnVmKSB7CisgICAgICAgIHJldHVybiBFSU5WQUw7CisgICAg
fQorCisgICAgbnAtPnJuX2J1ZiA9IChjaGFyICopIGRhdGE7CisgICAgbnAtPnJuX2J1ZnNpemUg
PSBzaXplOworICAgIG5wLT5ybl9zaXplID0gc2l6ZTsKKyAgICB2cC0+dl9zaXplID0gc2l6ZTsK
KyAgICBucC0+cm5fb3duc19idWYgPSBmYWxzZTsKKworICAgIHJldHVybiAwOworfQorCitzdGF0
aWMgaW50CityYW1mc193cml0ZShzdHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3QgdWlvICp1aW8sIGlu
dCBpb2ZsYWcpCit7CisgICAgc3RydWN0IHJhbWZzX25vZGUgKm5wID0gKHJhbWZzX25vZGUgKikg
dnAtPnZfZGF0YTsKKworICAgIGlmICh2cC0+dl90eXBlID09IFZESVIpIHsKKyAgICAgICAgcmV0
dXJuIEVJU0RJUjsKKyAgICB9CisgICAgaWYgKHZwLT52X3R5cGUgIT0gVlJFRykgeworICAgICAg
ICByZXR1cm4gRUlOVkFMOworICAgIH0KKyAgICBpZiAodWlvLT51aW9fb2Zmc2V0IDwgMCkgewor
ICAgICAgICByZXR1cm4gRUlOVkFMOworICAgIH0KKyAgICBpZiAodWlvLT51aW9fb2Zmc2V0ID49
IExPTkdfTUFYKSB7CisgICAgICAgIHJldHVybiBFRkJJRzsKKyAgICB9CisgICAgaWYgKHVpby0+
dWlvX3Jlc2lkID09IDApIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYgKGlv
ZmxhZyAmIElPX0FQUEVORCkKKyAgICAgICAgdWlvLT51aW9fb2Zmc2V0ID0gbnAtPnJuX3NpemU7
CisKKyAgICBpZiAoc2l6ZV90KHVpby0+dWlvX29mZnNldCArIHVpby0+dWlvX3Jlc2lkKSA+IChz
aXplX3QpIHZwLT52X3NpemUpIHsKKyAgICAgICAgLyogRXhwYW5kIHRoZSBmaWxlIHNpemUgYmVm
b3JlIHdyaXRpbmcgdG8gaXQgKi8KKyAgICAgICAgb2ZmX3QgZW5kX3BvcyA9IHVpby0+dWlvX29m
ZnNldCArIHVpby0+dWlvX3Jlc2lkOworICAgICAgICBpZiAoZW5kX3BvcyA+IChvZmZfdCkgbnAt
PnJuX2J1ZnNpemUpIHsKKyAgICAgICAgICAgIC8vIFhYWDogdGhpcyBjb3VsZCB1c2UgYSBwYWdl
IGxldmVsIGFsbG9jYXRvcgorICAgICAgICAgICAgc2l6ZV90IG5ld19zaXplID0gcm91bmRfcGFn
ZShlbmRfcG9zKTsKKyAgICAgICAgICAgIHZvaWQgKm5ld19idWYgPSBtYWxsb2MobmV3X3NpemUp
OworICAgICAgICAgICAgaWYgKCFuZXdfYnVmKQorICAgICAgICAgICAgICAgIHJldHVybiBFSU87
CisgICAgICAgICAgICBpZiAobnAtPnJuX3NpemUgIT0gMCkgeworICAgICAgICAgICAgICAgIG1l
bWNweShuZXdfYnVmLCBucC0+cm5fYnVmLCB2cC0+dl9zaXplKTsKKyAgICAgICAgICAgICAgICBp
ZihucC0+cm5fb3duc19idWYpCisgICAgICAgICAgICAgICAgICAgIGZyZWUobnAtPnJuX2J1Zik7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBucC0+cm5fYnVmID0gKGNoYXIgKikgbmV3X2J1
ZjsKKyAgICAgICAgICAgIG5wLT5ybl9idWZzaXplID0gbmV3X3NpemU7CisgICAgICAgIH0KKyAg
ICAgICAgbnAtPnJuX3NpemUgPSBlbmRfcG9zOworICAgICAgICB2cC0+dl9zaXplID0gZW5kX3Bv
czsKKyAgICAgICAgbnAtPnJuX293bnNfYnVmID0gdHJ1ZTsKKyAgICB9CisKKyAgICBzZXRfdGlt
ZXNfdG9fbm93KCYobnAtPnJuX210aW1lKSwgJihucC0+cm5fY3RpbWUpKTsKKyAgICByZXR1cm4g
dWlvbW92ZShucC0+cm5fYnVmICsgdWlvLT51aW9fb2Zmc2V0LCB1aW8tPnVpb19yZXNpZCwgdWlv
KTsKK30KKworc3RhdGljIGludAorcmFtZnNfcmVuYW1lKHN0cnVjdCB2bm9kZSAqZHZwMSwgc3Ry
dWN0IHZub2RlICp2cDEsIGNoYXIgKm5hbWUxLAorICAgICAgICAgICAgIHN0cnVjdCB2bm9kZSAq
ZHZwMiwgc3RydWN0IHZub2RlICp2cDIsIGNoYXIgKm5hbWUyKQoreworICAgIHN0cnVjdCByYW1m
c19ub2RlICpucCwgKm9sZF9ucDsKKyAgICBpbnQgZXJyb3I7CisKKyAgICBpZiAodnAyKSB7Cisg
ICAgICAgIC8qIFJlbW92ZSBkZXN0aW5hdGlvbiBmaWxlLCBmaXJzdCAqLworICAgICAgICBlcnJv
ciA9IHJhbWZzX3JlbW92ZV9ub2RlKChyYW1mc19ub2RlICopIGR2cDItPnZfZGF0YSwgKHJhbWZz
X25vZGUgKikgdnAyLT52X2RhdGEpOworICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICBy
ZXR1cm4gZXJyb3I7CisgICAgfQorICAgIC8qIFNhbWUgZGlyZWN0b3J5ID8gKi8KKyAgICBpZiAo
ZHZwMSA9PSBkdnAyKSB7CisgICAgICAgIC8qIENoYW5nZSB0aGUgbmFtZSBvZiBleGlzdGluZyBm
aWxlICovCisgICAgICAgIGVycm9yID0gcmFtZnNfcmVuYW1lX25vZGUoKHJhbWZzX25vZGUgKikg
dnAxLT52X2RhdGEsIG5hbWUyKTsKKyAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgcmV0
dXJuIGVycm9yOworICAgIH0gZWxzZSB7CisgICAgICAgIC8qIENyZWF0ZSBuZXcgZmlsZSBvciBk
aXJlY3RvcnkgKi8KKyAgICAgICAgb2xkX25wID0gKHJhbWZzX25vZGUgKikgdnAxLT52X2RhdGE7
CisgICAgICAgIG5wID0gcmFtZnNfYWRkX25vZGUoKHJhbWZzX25vZGUgKikgZHZwMi0+dl9kYXRh
LCBuYW1lMiwgb2xkX25wLT5ybl90eXBlKTsKKyAgICAgICAgaWYgKG5wID09IE5VTEwpCisgICAg
ICAgICAgICByZXR1cm4gRU5PTUVNOworCisgICAgICAgIGlmIChvbGRfbnAtPnJuX2J1Zikgewor
ICAgICAgICAgICAgLyogQ29weSBmaWxlIGRhdGEgKi8KKyAgICAgICAgICAgIG5wLT5ybl9idWYg
PSBvbGRfbnAtPnJuX2J1ZjsKKyAgICAgICAgICAgIG5wLT5ybl9zaXplID0gb2xkX25wLT5ybl9z
aXplOworICAgICAgICAgICAgbnAtPnJuX2J1ZnNpemUgPSBvbGRfbnAtPnJuX2J1ZnNpemU7Cisg
ICAgICAgICAgICBvbGRfbnAtPnJuX2J1ZiA9IE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgLyog
UmVtb3ZlIHNvdXJjZSBmaWxlICovCisgICAgICAgIHJhbWZzX3JlbW92ZV9ub2RlKChyYW1mc19u
b2RlICopIGR2cDEtPnZfZGF0YSwgKHJhbWZzX25vZGUgKikgdnAxLT52X2RhdGEpOworICAgIH0K
KyAgICByZXR1cm4gMDsKK30KKworLyoKKyAqIEB2cDogdm5vZGUgb2YgdGhlIGRpcmVjdG9yeS4K
KyAqLworc3RhdGljIGludAorcmFtZnNfcmVhZGRpcihzdHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3Qg
ZmlsZSAqZnAsIHN0cnVjdCBkaXJlbnQgKmRpcikKK3sKKyAgICBzdHJ1Y3QgcmFtZnNfbm9kZSAq
bnAsICpkbnA7CisgICAgaW50IGk7CisKKyAgICBtdXRleF9sb2NrKCZyYW1mc19sb2NrKTsKKwor
ICAgIHNldF90aW1lc190b19ub3coJigoKHJhbWZzX25vZGUgKikgdnAtPnZfZGF0YSktPnJuX2F0
aW1lKSk7CisKKyAgICBpZiAoZnAtPmZfb2Zmc2V0ID09IDApIHsKKyAgICAgICAgZGlyLT5kX3R5
cGUgPSBEVF9ESVI7CisgICAgICAgIHN0cmxjcHkoKGNoYXIgKikgJmRpci0+ZF9uYW1lLCAiLiIs
IHNpemVvZihkaXItPmRfbmFtZSkpOworICAgIH0gZWxzZSBpZiAoZnAtPmZfb2Zmc2V0ID09IDEp
IHsKKyAgICAgICAgZGlyLT5kX3R5cGUgPSBEVF9ESVI7CisgICAgICAgIHN0cmxjcHkoKGNoYXIg
KikgJmRpci0+ZF9uYW1lLCAiLi4iLCBzaXplb2YoZGlyLT5kX25hbWUpKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBkbnAgPSAocmFtZnNfbm9kZSAqKSB2cC0+dl9kYXRhOworICAgICAgICBucCA9
IGRucC0+cm5fY2hpbGQ7CisgICAgICAgIGlmIChucCA9PSBOVUxMKSB7CisgICAgICAgICAgICBt
dXRleF91bmxvY2soJnJhbWZzX2xvY2spOworICAgICAgICAgICAgcmV0dXJuIEVOT0VOVDsKKyAg
ICAgICAgfQorCisgICAgICAgIGZvciAoaSA9IDA7IGkgIT0gKGZwLT5mX29mZnNldCAtIDIpOyBp
KyspIHsKKyAgICAgICAgICAgIG5wID0gbnAtPnJuX25leHQ7CisgICAgICAgICAgICBpZiAobnAg
PT0gTlVMTCkgeworICAgICAgICAgICAgICAgIG11dGV4X3VubG9jaygmcmFtZnNfbG9jayk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIEVOT0VOVDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICBpZiAobnAtPnJuX3R5cGUgPT0gVkRJUikKKyAgICAgICAgICAgIGRpci0+ZF90eXBl
ID0gRFRfRElSOworICAgICAgICBlbHNlIGlmIChucC0+cm5fdHlwZSA9PSBWTE5LKQorICAgICAg
ICAgICAgZGlyLT5kX3R5cGUgPSBEVF9MTks7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRp
ci0+ZF90eXBlID0gRFRfUkVHOworICAgICAgICBzdHJsY3B5KChjaGFyICopICZkaXItPmRfbmFt
ZSwgbnAtPnJuX25hbWUsCisgICAgICAgICAgICAgICAgc2l6ZW9mKGRpci0+ZF9uYW1lKSk7Cisg
ICAgfQorICAgIGRpci0+ZF9maWxlbm8gPSBmcC0+Zl9vZmZzZXQ7CisvLwlkaXItPmRfbmFtZWxl
biA9IHN0cmxlbihkaXItPmRfbmFtZSk7CisKKyAgICBmcC0+Zl9vZmZzZXQrKzsKKworICAgIG11
dGV4X3VubG9jaygmcmFtZnNfbG9jayk7CisgICAgcmV0dXJuIDA7Cit9CisKK2ludAorcmFtZnNf
aW5pdCh2b2lkKQoreworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CityYW1mc19nZXRh
dHRyKHN0cnVjdCB2bm9kZSAqdm5vZGUsIHN0cnVjdCB2YXR0ciAqYXR0cikKK3sKKyAgICBhdHRy
LT52YV9ub2RlaWQgPSB2bm9kZS0+dl9pbm87CisgICAgYXR0ci0+dmFfc2l6ZSA9IHZub2RlLT52
X3NpemU7CisKKyAgICBzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSAocmFtZnNfbm9kZSAqKSB2bm9k
ZS0+dl9kYXRhOworICAgIGF0dHItPnZhX3R5cGUgPSAodnR5cGUpIG5wLT5ybl90eXBlOworCisg
ICAgbWVtY3B5KCYoYXR0ci0+dmFfYXRpbWUpLCAmKG5wLT5ybl9hdGltZSksIHNpemVvZihzdHJ1
Y3QgdGltZXNwZWMpKTsKKyAgICBtZW1jcHkoJihhdHRyLT52YV9jdGltZSksICYobnAtPnJuX2N0
aW1lKSwgc2l6ZW9mKHN0cnVjdCB0aW1lc3BlYykpOworICAgIG1lbWNweSgmKGF0dHItPnZhX210
aW1lKSwgJihucC0+cm5fbXRpbWUpLCBzaXplb2Yoc3RydWN0IHRpbWVzcGVjKSk7CisKKyAgICBh
dHRyLT52YV9tb2RlID0gbnAtPnJuX21vZGU7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGlj
IGludAorcmFtZnNfc2V0YXR0cihzdHJ1Y3Qgdm5vZGUgKnZub2RlLCBzdHJ1Y3QgdmF0dHIgKmF0
dHIpIHsKKyAgICBzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSAocmFtZnNfbm9kZSAqKSB2bm9kZS0+
dl9kYXRhOworCisgICAgaWYgKGF0dHItPnZhX21hc2sgJiBBVF9BVElNRSkgeworICAgICAgICBt
ZW1jcHkoJihucC0+cm5fYXRpbWUpLCAmKGF0dHItPnZhX2F0aW1lKSwgc2l6ZW9mKHN0cnVjdCB0
aW1lc3BlYykpOworICAgIH0KKworICAgIGlmIChhdHRyLT52YV9tYXNrICYgQVRfQ1RJTUUpIHsK
KyAgICAgICAgbWVtY3B5KCYobnAtPnJuX2N0aW1lKSwgJihhdHRyLT52YV9jdGltZSksIHNpemVv
ZihzdHJ1Y3QgdGltZXNwZWMpKTsKKyAgICB9CisKKyAgICBpZiAoYXR0ci0+dmFfbWFzayAmIEFU
X01USU1FKSB7CisgICAgICAgIG1lbWNweSgmKG5wLT5ybl9tdGltZSksICYoYXR0ci0+dmFfbXRp
bWUpLCBzaXplb2Yoc3RydWN0IHRpbWVzcGVjKSk7CisgICAgfQorCisgICAgaWYgKGF0dHItPnZh
X21hc2sgJiBBVF9NT0RFKSB7CisgICAgICAgIG5wLT5ybl9tb2RlID0gYXR0ci0+dmFfbW9kZTsK
KyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworI2RlZmluZSByYW1mc19vcGVuICAgICAgKCh2
bm9wX29wZW5fdCl2b3BfbnVsbG9wKQorI2RlZmluZSByYW1mc19jbG9zZSAgICAgKCh2bm9wX2Ns
b3NlX3Qpdm9wX251bGxvcCkKKyNkZWZpbmUgcmFtZnNfc2VlayAgICAgICgodm5vcF9zZWVrX3Qp
dm9wX251bGxvcCkKKyNkZWZpbmUgcmFtZnNfaW9jdGwgICAgICgodm5vcF9pb2N0bF90KXZvcF9l
aW52YWwpCisjZGVmaW5lIHJhbWZzX2ZzeW5jICAgICAoKHZub3BfZnN5bmNfdCl2b3BfbnVsbG9w
KQorI2RlZmluZSByYW1mc19pbmFjdGl2ZSAgKCh2bm9wX2luYWN0aXZlX3Qpdm9wX251bGxvcCkK
KyNkZWZpbmUgcmFtZnNfbGluayAgICAgICgodm5vcF9saW5rX3Qpdm9wX2VwZXJtKQorI2RlZmlu
ZSByYW1mc19mYWxsb2NhdGUgKCh2bm9wX2ZhbGxvY2F0ZV90KXZvcF9udWxsb3ApCisKKy8qCisg
KiB2bm9kZSBvcGVyYXRpb25zCisgKi8KK3N0cnVjdCB2bm9wcyByYW1mc192bm9wcyA9IHsKKyAg
ICAgICAgcmFtZnNfb3BlbiwgICAgICAgICAgICAgLyogb3BlbiAqLworICAgICAgICByYW1mc19j
bG9zZSwgICAgICAgICAgICAvKiBjbG9zZSAqLworICAgICAgICByYW1mc19yZWFkLCAgICAgICAg
ICAgICAvKiByZWFkICovCisgICAgICAgIHJhbWZzX3dyaXRlLCAgICAgICAgICAgIC8qIHdyaXRl
ICovCisgICAgICAgIHJhbWZzX3NlZWssICAgICAgICAgICAgIC8qIHNlZWsgKi8KKyAgICAgICAg
cmFtZnNfaW9jdGwsICAgICAgICAgICAgLyogaW9jdGwgKi8KKyAgICAgICAgcmFtZnNfZnN5bmMs
ICAgICAgICAgICAgLyogZnN5bmMgKi8KKyAgICAgICAgcmFtZnNfcmVhZGRpciwgICAgICAgICAg
LyogcmVhZGRpciAqLworICAgICAgICByYW1mc19sb29rdXAsICAgICAgICAgICAvKiBsb29rdXAg
Ki8KKyAgICAgICAgcmFtZnNfY3JlYXRlLCAgICAgICAgICAgLyogY3JlYXRlICovCisgICAgICAg
IHJhbWZzX3JlbW92ZSwgICAgICAgICAgIC8qIHJlbW92ZSAqLworICAgICAgICByYW1mc19yZW5h
bWUsICAgICAgICAgICAvKiByZW1hbWUgKi8KKyAgICAgICAgcmFtZnNfbWtkaXIsICAgICAgICAg
ICAgLyogbWtkaXIgKi8KKyAgICAgICAgcmFtZnNfcm1kaXIsICAgICAgICAgICAgLyogcm1kaXIg
Ki8KKyAgICAgICAgcmFtZnNfZ2V0YXR0ciwgICAgICAgICAgLyogZ2V0YXR0ciAqLworICAgICAg
ICByYW1mc19zZXRhdHRyLCAgICAgICAgICAvKiBzZXRhdHRyICovCisgICAgICAgIHJhbWZzX2lu
YWN0aXZlLCAgICAgICAgIC8qIGluYWN0aXZlICovCisgICAgICAgIHJhbWZzX3RydW5jYXRlLCAg
ICAgICAgIC8qIHRydW5jYXRlICovCisgICAgICAgIHJhbWZzX2xpbmssICAgICAgICAgICAgIC8q
IGxpbmsgKi8KKyAgICAgICAgKHZub3BfY2FjaGVfdCkgbnVsbHB0ciwgLyogYXJjICovCisgICAg
ICAgIHJhbWZzX2ZhbGxvY2F0ZSwgICAgICAgIC8qIGZhbGxvY2F0ZSAqLworICAgICAgICByYW1m
c19yZWFkbGluaywgICAgICAgICAvKiByZWFkIGxpbmsgKi8KKyAgICAgICAgcmFtZnNfc3ltbGlu
aywgICAgICAgICAgLyogc3ltYm9saWMgbGluayAqLworfTsKKwotLSAKMi4xOS4yCgoKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1h
aWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0
cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Fri Feb 08 14:31:33 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 08 Feb 2019 14:31:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gs7Bj-0003BU-Pd; Fri, 08 Feb 2019 14:31:31 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=PCXD=QP=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gs7Bh-0003BN-Vc
 for minios-devel@lists.xen.org; Fri, 08 Feb 2019 14:31:29 +0000
X-Inumbo-ID: 36a3304a-2bae-11e9-b68e-83903847ad5e
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 36a3304a-2bae-11e9-b68e-83903847ad5e;
 Fri, 08 Feb 2019 14:31:26 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 7FB30F2051;
 Fri,  8 Feb 2019 15:31:24 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id kMPlPPiecyot; Fri,  8 Feb 2019 15:31:24 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 59E01F200D
 for <minios-devel@lists.xen.org>; Fri,  8 Feb 2019 15:31:22 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Fri, 8 Feb 2019 15:31:22 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Fri, 8 Feb 2019 15:31:02 +0100
Message-ID: <20190208143108.27175-1-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 0/6] Import ramfs from OSv
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2FtZSBhcyB3aXRoIHZmc2NvcmUgLSB0aGUgbWluaW1hbCBudW1iZXIgb2YgbW9kaWZpY2F0aW9u
cyB0byBtYWtlIGl0CndvcmtpbmcgaW4gVW5pa3JhZnQuIEZvcnR1bmF0ZWxseSByYW1mcyBpcyB2
ZXJ5IHNtYWxsLCBhbmQgYWxtb3N0IGRpZApub3QgaGF2ZSBjKysgcGllY2VzIG9mIGNvZGUuIFNv
IHRoaXMgdGltZSBJIGV2ZW4gaGFkIGEgcm9vbSB0byBmaXgKc3R5bGUgcHJvYmxlbXMsIGV4Y2Vw
dCBmZXcgb2YgdGhlbS4KCkRlcGVuZHMgb24gdmZzY29yZSBwYXRjaGVzLgoKY2hhZ2VzIHNpbmNl
IHYxOgogLSByZWJhc2Ugb24gdmZzY29yZSB2MwogLSBhZGQgZm9yZ290dGVuIE1ha2VmaWxlLnVr
IGFuZCBDb25maWcudWsKCll1cmkgVm9sY2hrb3YgKDYpOgogIGxpYi9yYW1mczogaW5pdGlhbCBp
bXBvcnQgZnJvbSBPU3YKICBsaWIvcmFtZnM6IHRhYmlmeSBpbXBvcnRlZCByYW1mcyBjb2RlCiAg
bGliL3JhbWZzOiB1cGRhdGUgbGljZW5zZSBoZWFkZXIgZm9yIGltcG9ydGVkIGZpbGVzCiAgbGli
L3JhbWZzOiBhZGFwdCBpbXBvcnRlZCByYW1mcyB0byBVbmlrcmFmdAogIGxpYi9yYW1mczogZml4
IGRlYnVnIHByaW50b3V0cwogIGxpYi9yYW1mczogZml4IHN0eWxlIGlzc3VlcwoKIGxpYi9Db25m
aWcudWsgICAgICAgICAgICB8ICAgMSArCiBsaWIvTWFrZWZpbGUudWsgICAgICAgICAgfCAgIDEg
KwogbGliL3JhbWZzL0NvbmZpZy51ayAgICAgIHwgICA0ICsKIGxpYi9yYW1mcy9NYWtlZmlsZS51
ayAgICB8ICAgNSArCiBsaWIvcmFtZnMvZXhwb3J0c3ltcy51ayAgfCAgIDEgKwogbGliL3JhbWZz
L3JhbWZzLmggICAgICAgIHwgIDczICsrKysrCiBsaWIvcmFtZnMvcmFtZnNfdmZzb3BzLmMgfCAx
MDQgKysrKysrCiBsaWIvcmFtZnMvcmFtZnNfdm5vcHMuYyAgfCA2NzUgKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrCiA4IGZpbGVzIGNoYW5nZWQsIDg2NCBpbnNlcnRpb25z
KCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3JhbWZzL0NvbmZpZy51awogY3JlYXRlIG1vZGUg
MTAwNjQ0IGxpYi9yYW1mcy9NYWtlZmlsZS51awogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9yYW1m
cy9leHBvcnRzeW1zLnVrCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3JhbWZzL3JhbWZzLmgKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBsaWIvcmFtZnMvcmFtZnNfdmZzb3BzLmMKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBsaWIvcmFtZnMvcmFtZnNfdm5vcHMuYwoKLS0gCjIuMTkuMgoKCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxp
c3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJv
amVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Fri Feb 08 14:31:35 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 08 Feb 2019 14:31:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gs7Bm-0003Cq-U9; Fri, 08 Feb 2019 14:31:34 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=PCXD=QP=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gs7Bl-0003CH-C7
 for minios-devel@lists.xen.org; Fri, 08 Feb 2019 14:31:33 +0000
X-Inumbo-ID: 3991c28f-2bae-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 3991c28f-2bae-11e9-bc90-bc764e045a96;
 Fri, 08 Feb 2019 14:31:30 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id E3EA2F2051;
 Fri,  8 Feb 2019 15:31:29 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id Pdv4Edw8zBWz; Fri,  8 Feb 2019 15:31:29 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id ACFCBF200D
 for <minios-devel@lists.xen.org>; Fri,  8 Feb 2019 15:31:27 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Fri, 8 Feb 2019 15:31:27 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Fri, 8 Feb 2019 15:31:04 +0100
Message-ID: <20190208143108.27175-3-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190208143108.27175-1-yuri.volchkov@neclab.eu>
References: <20190208143108.27175-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 2/6] lib/ramfs: tabify imported
 ramfs code
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VG8gY29tcGx5IHdpdGggVW5pa3JhZnQgY29kaW5nIHN0eWxlLCBpbmRlbnRzIG11c3QgYmUgdGFi
cywgbm90CnNwYWNlcy4gSW1wb3J0ZWQgY29kZSB3YXMgYSBtaXh0dXJlIG9mIGJvdGguCgpTaWdu
ZWQtb2ZmLWJ5OiBZdXJpIFZvbGNoa292IDx5dXJpLnZvbGNoa292QG5lY2xhYi5ldT4KLS0tCiBs
aWIvcmFtZnMvcmFtZnMuaCAgICAgICAgfCAgMjYgKy0KIGxpYi9yYW1mcy9yYW1mc192ZnNvcHMu
YyB8ICAzMiArLQogbGliL3JhbWZzL3JhbWZzX3Zub3BzLmMgIHwgOTE2ICsrKysrKysrKysrKysr
KysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCA0ODcgaW5zZXJ0aW9u
cygrKSwgNDg3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpYi9yYW1mcy9yYW1mcy5oIGIv
bGliL3JhbWZzL3JhbWZzLmgKaW5kZXggODhjY2JlNzIuLmU0ZWViNjVmIDEwMDY0NAotLS0gYS9s
aWIvcmFtZnMvcmFtZnMuaAorKysgYi9saWIvcmFtZnMvcmFtZnMuaApAQCAtNDYsMTkgKzQ2LDE5
IEBACiAgKiBGaWxlL2RpcmVjdG9yeSBub2RlIGZvciBSQU1GUwogICovCiBzdHJ1Y3QgcmFtZnNf
bm9kZSB7Ci0gICAgc3RydWN0IHJhbWZzX25vZGUgKnJuX25leHQ7ICAgLyogbmV4dCBub2RlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeSAqLwotICAgIHN0cnVjdCByYW1mc19ub2RlICpybl9jaGlsZDsg
IC8qIGZpcnN0IGNoaWxkIG5vZGUgKi8KLSAgICBpbnQgcm5fdHlwZTsgICAgLyogZmlsZSBvciBk
aXJlY3RvcnkgKi8KLSAgICBjaGFyICpybl9uYW1lOyAgICAvKiBuYW1lIChudWxsLXRlcm1pbmF0
ZWQpICovCi0gICAgc2l6ZV90IHJuX25hbWVsZW47ICAgIC8qIGxlbmd0aCBvZiBuYW1lIG5vdCBp
bmNsdWRpbmcgdGVybWluYXRvciAqLwotICAgIHNpemVfdCBybl9zaXplOyAgICAvKiBmaWxlIHNp
emUgKi8KLSAgICBjaGFyICpybl9idWY7ICAgIC8qIGJ1ZmZlciB0byB0aGUgZmlsZSBkYXRhICov
Ci0gICAgc2l6ZV90IHJuX2J1ZnNpemU7ICAgIC8qIGFsbG9jYXRlZCBidWZmZXIgc2l6ZSAqLwot
ICAgIHN0cnVjdCB0aW1lc3BlYyBybl9jdGltZTsKLSAgICBzdHJ1Y3QgdGltZXNwZWMgcm5fYXRp
bWU7Ci0gICAgc3RydWN0IHRpbWVzcGVjIHJuX210aW1lOwotICAgIGludCBybl9tb2RlOwotICAg
IGJvb2wgcm5fb3duc19idWY7CisJc3RydWN0IHJhbWZzX25vZGUgKnJuX25leHQ7ICAgLyogbmV4
dCBub2RlIGluIHRoZSBzYW1lIGRpcmVjdG9yeSAqLworCXN0cnVjdCByYW1mc19ub2RlICpybl9j
aGlsZDsgIC8qIGZpcnN0IGNoaWxkIG5vZGUgKi8KKwlpbnQgcm5fdHlwZTsgICAgLyogZmlsZSBv
ciBkaXJlY3RvcnkgKi8KKwljaGFyICpybl9uYW1lOyAgICAvKiBuYW1lIChudWxsLXRlcm1pbmF0
ZWQpICovCisJc2l6ZV90IHJuX25hbWVsZW47ICAgIC8qIGxlbmd0aCBvZiBuYW1lIG5vdCBpbmNs
dWRpbmcgdGVybWluYXRvciAqLworCXNpemVfdCBybl9zaXplOyAgICAvKiBmaWxlIHNpemUgKi8K
KwljaGFyICpybl9idWY7ICAgIC8qIGJ1ZmZlciB0byB0aGUgZmlsZSBkYXRhICovCisJc2l6ZV90
IHJuX2J1ZnNpemU7ICAgIC8qIGFsbG9jYXRlZCBidWZmZXIgc2l6ZSAqLworCXN0cnVjdCB0aW1l
c3BlYyBybl9jdGltZTsKKwlzdHJ1Y3QgdGltZXNwZWMgcm5fYXRpbWU7CisJc3RydWN0IHRpbWVz
cGVjIHJuX210aW1lOworCWludCBybl9tb2RlOworCWJvb2wgcm5fb3duc19idWY7CiB9OwogCiBz
dHJ1Y3QgcmFtZnNfbm9kZSAqcmFtZnNfYWxsb2NhdGVfbm9kZShjb25zdCBjaGFyICpuYW1lLCBp
bnQgdHlwZSk7CmRpZmYgLS1naXQgYS9saWIvcmFtZnMvcmFtZnNfdmZzb3BzLmMgYi9saWIvcmFt
ZnMvcmFtZnNfdmZzb3BzLmMKaW5kZXggNzJmZTdlZGIuLjUzYWU3NThhIDEwMDY0NAotLS0gYS9s
aWIvcmFtZnMvcmFtZnNfdmZzb3BzLmMKKysrIGIvbGliL3JhbWZzL3JhbWZzX3Zmc29wcy5jCkBA
IC00OSwxMiArNDksMTIgQEAgc3RhdGljIGludCByYW1mc191bm1vdW50KHN0cnVjdCBtb3VudCAq
bXAsIGludCBmbGFncyk7CiAgKiBGaWxlIHN5c3RlbSBvcGVyYXRpb25zCiAgKi8KIHN0cnVjdCB2
ZnNvcHMgcmFtZnNfdmZzb3BzID0gewotICAgICAgICByYW1mc19tb3VudCwgICAgICAgLyogbW91
bnQgKi8KLSAgICAgICAgcmFtZnNfdW5tb3VudCwgICAgIC8qIHVubW91bnQgKi8KLSAgICAgICAg
cmFtZnNfc3luYywgICAgICAgIC8qIHN5bmMgKi8KLSAgICAgICAgcmFtZnNfdmdldCwgICAgICAg
IC8qIHZnZXQgKi8KLSAgICAgICAgcmFtZnNfc3RhdGZzLCAgICAgIC8qIHN0YXRmcyAqLwotICAg
ICAgICAmcmFtZnNfdm5vcHMsICAgICAgLyogdm5vcHMgKi8KKwkJcmFtZnNfbW91bnQsICAgICAg
IC8qIG1vdW50ICovCisJCXJhbWZzX3VubW91bnQsICAgICAvKiB1bm1vdW50ICovCisJCXJhbWZz
X3N5bmMsICAgICAgICAvKiBzeW5jICovCisJCXJhbWZzX3ZnZXQsICAgICAgICAvKiB2Z2V0ICov
CisJCXJhbWZzX3N0YXRmcywgICAgICAvKiBzdGF0ZnMgKi8KKwkJJnJhbWZzX3Zub3BzLCAgICAg
IC8qIHZub3BzICovCiB9OwogCiAvKgpAQCAtNjMsMTYgKzYzLDE2IEBAIHN0cnVjdCB2ZnNvcHMg
cmFtZnNfdmZzb3BzID0gewogc3RhdGljIGludAogcmFtZnNfbW91bnQoc3RydWN0IG1vdW50ICpt
cCwgY29uc3QgY2hhciAqZGV2LCBpbnQgZmxhZ3MsIGNvbnN0IHZvaWQgKmRhdGEpCiB7Ci0gICAg
c3RydWN0IHJhbWZzX25vZGUgKm5wOworCXN0cnVjdCByYW1mc19ub2RlICpucDsKIAotICAgIERQ
UklOVEYoKCJyYW1mc19tb3VudDogZGV2PSVzXG4iLCBkZXYpKTsKKwlEUFJJTlRGKCgicmFtZnNf
bW91bnQ6IGRldj0lc1xuIiwgZGV2KSk7CiAKLSAgICAvKiBDcmVhdGUgYSByb290IG5vZGUgKi8K
LSAgICBucCA9IHJhbWZzX2FsbG9jYXRlX25vZGUoIi8iLCBWRElSKTsKLSAgICBpZiAobnAgPT0g
TlVMTCkKLSAgICAgICAgcmV0dXJuIEVOT01FTTsKLSAgICBtcC0+bV9yb290LT5kX3Zub2RlLT52
X2RhdGEgPSBucDsKLSAgICByZXR1cm4gMDsKKwkvKiBDcmVhdGUgYSByb290IG5vZGUgKi8KKwlu
cCA9IHJhbWZzX2FsbG9jYXRlX25vZGUoIi8iLCBWRElSKTsKKwlpZiAobnAgPT0gTlVMTCkKKwkJ
cmV0dXJuIEVOT01FTTsKKwltcC0+bV9yb290LT5kX3Zub2RlLT52X2RhdGEgPSBucDsKKwlyZXR1
cm4gMDsKIH0KIAogLyoKQEAgLTg1LDYgKzg1LDYgQEAgcmFtZnNfbW91bnQoc3RydWN0IG1vdW50
ICptcCwgY29uc3QgY2hhciAqZGV2LCBpbnQgZmxhZ3MsIGNvbnN0IHZvaWQgKmRhdGEpCiBzdGF0
aWMgaW50CiByYW1mc191bm1vdW50KHN0cnVjdCBtb3VudCAqbXAsIGludCBmbGFncykKIHsKLSAg
ICByZWxlYXNlX21wX2RlbnRyaWVzKG1wKTsKLSAgICByZXR1cm4gMDsKKwlyZWxlYXNlX21wX2Rl
bnRyaWVzKG1wKTsKKwlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2xpYi9yYW1mcy9yYW1mc192
bm9wcy5jIGIvbGliL3JhbWZzL3JhbWZzX3Zub3BzLmMKaW5kZXggOTI5MWE0ZWMuLjhiNTg2Zjg4
IDEwMDY0NAotLS0gYS9saWIvcmFtZnMvcmFtZnNfdm5vcHMuYworKysgYi9saWIvcmFtZnMvcmFt
ZnNfdm5vcHMuYwpAQCAtNTQsMzEzICs1NCwzMTMgQEAgc3RhdGljIHVpbnQ2NF90IGlub2RlX2Nv
dW50ID0gMTsgLyogaW5vZGUgMCBpcyByZXNlcnZlZCB0byByb290ICovCiBzdGF0aWMgdm9pZAog
c2V0X3RpbWVzX3RvX25vdyhzdHJ1Y3QgdGltZXNwZWMgKnRpbWUxLCBzdHJ1Y3QgdGltZXNwZWMg
KnRpbWUyID0gbnVsbHB0ciwgc3RydWN0IHRpbWVzcGVjICp0aW1lMyA9IG51bGxwdHIpCiB7Ci0g
ICAgc3RydWN0IHRpbWVzcGVjIG5vdzsKLSAgICBjbG9ja19nZXR0aW1lKENMT0NLX1JFQUxUSU1F
LCAmbm93KTsKLSAgICBpZiAodGltZTEpIHsKLSAgICAgICAgbWVtY3B5KHRpbWUxLCAmbm93LCBz
aXplb2Yoc3RydWN0IHRpbWVzcGVjKSk7Ci0gICAgfQotICAgIGlmICh0aW1lMikgewotICAgICAg
ICBtZW1jcHkodGltZTIsICZub3csIHNpemVvZihzdHJ1Y3QgdGltZXNwZWMpKTsKLSAgICB9Ci0g
ICAgaWYgKHRpbWUzKSB7Ci0gICAgICAgIG1lbWNweSh0aW1lMywgJm5vdywgc2l6ZW9mKHN0cnVj
dCB0aW1lc3BlYykpOwotICAgIH0KKwlzdHJ1Y3QgdGltZXNwZWMgbm93OworCWNsb2NrX2dldHRp
bWUoQ0xPQ0tfUkVBTFRJTUUsICZub3cpOworCWlmICh0aW1lMSkgeworCQltZW1jcHkodGltZTEs
ICZub3csIHNpemVvZihzdHJ1Y3QgdGltZXNwZWMpKTsKKwl9CisJaWYgKHRpbWUyKSB7CisJCW1l
bWNweSh0aW1lMiwgJm5vdywgc2l6ZW9mKHN0cnVjdCB0aW1lc3BlYykpOworCX0KKwlpZiAodGlt
ZTMpIHsKKwkJbWVtY3B5KHRpbWUzLCAmbm93LCBzaXplb2Yoc3RydWN0IHRpbWVzcGVjKSk7CisJ
fQogfQogCiBzdHJ1Y3QgcmFtZnNfbm9kZSAqCiByYW1mc19hbGxvY2F0ZV9ub2RlKGNvbnN0IGNo
YXIgKm5hbWUsIGludCB0eXBlKQogewotICAgIHN0cnVjdCByYW1mc19ub2RlICpucDsKLQotICAg
IG5wID0gKHJhbWZzX25vZGUgKikgbWFsbG9jKHNpemVvZihzdHJ1Y3QgcmFtZnNfbm9kZSkpOwot
ICAgIGlmIChucCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBtZW1zZXQobnAs
IDAsIHNpemVvZihzdHJ1Y3QgcmFtZnNfbm9kZSkpOwotCi0gICAgbnAtPnJuX25hbWVsZW4gPSBz
dHJsZW4obmFtZSk7Ci0gICAgbnAtPnJuX25hbWUgPSAoY2hhciAqKSBtYWxsb2MobnAtPnJuX25h
bWVsZW4gKyAxKTsKLSAgICBpZiAobnAtPnJuX25hbWUgPT0gTlVMTCkgewotICAgICAgICBmcmVl
KG5wKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHN0cmxjcHkobnAtPnJuX25h
bWUsIG5hbWUsIG5wLT5ybl9uYW1lbGVuICsgMSk7Ci0gICAgbnAtPnJuX3R5cGUgPSB0eXBlOwot
Ci0gICAgaWYgKHR5cGUgPT0gVkRJUikKLSAgICAgICAgbnAtPnJuX21vZGUgPSBTX0lGRElSfDA3
Nzc7Ci0gICAgZWxzZSBpZiAodHlwZSA9PSBWTE5LKQotICAgICAgICBucC0+cm5fbW9kZSA9IFNf
SUZMTkt8MDc3NzsKLSAgICBlbHNlCi0gICAgICAgIG5wLT5ybl9tb2RlID0gU19JRlJFR3wwNzc3
OwotCi0gICAgc2V0X3RpbWVzX3RvX25vdygmKG5wLT5ybl9jdGltZSksICYobnAtPnJuX2F0aW1l
KSwgJihucC0+cm5fbXRpbWUpKTsKLSAgICBucC0+cm5fb3duc19idWYgPSB0cnVlOwotCi0gICAg
cmV0dXJuIG5wOworCXN0cnVjdCByYW1mc19ub2RlICpucDsKKworCW5wID0gKHJhbWZzX25vZGUg
KikgbWFsbG9jKHNpemVvZihzdHJ1Y3QgcmFtZnNfbm9kZSkpOworCWlmIChucCA9PSBOVUxMKQor
CQlyZXR1cm4gTlVMTDsKKwltZW1zZXQobnAsIDAsIHNpemVvZihzdHJ1Y3QgcmFtZnNfbm9kZSkp
OworCisJbnAtPnJuX25hbWVsZW4gPSBzdHJsZW4obmFtZSk7CisJbnAtPnJuX25hbWUgPSAoY2hh
ciAqKSBtYWxsb2MobnAtPnJuX25hbWVsZW4gKyAxKTsKKwlpZiAobnAtPnJuX25hbWUgPT0gTlVM
TCkgeworCQlmcmVlKG5wKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCXN0cmxjcHkobnAtPnJuX25h
bWUsIG5hbWUsIG5wLT5ybl9uYW1lbGVuICsgMSk7CisJbnAtPnJuX3R5cGUgPSB0eXBlOworCisJ
aWYgKHR5cGUgPT0gVkRJUikKKwkJbnAtPnJuX21vZGUgPSBTX0lGRElSfDA3Nzc7CisJZWxzZSBp
ZiAodHlwZSA9PSBWTE5LKQorCQlucC0+cm5fbW9kZSA9IFNfSUZMTkt8MDc3NzsKKwllbHNlCisJ
CW5wLT5ybl9tb2RlID0gU19JRlJFR3wwNzc3OworCisJc2V0X3RpbWVzX3RvX25vdygmKG5wLT5y
bl9jdGltZSksICYobnAtPnJuX2F0aW1lKSwgJihucC0+cm5fbXRpbWUpKTsKKwlucC0+cm5fb3du
c19idWYgPSB0cnVlOworCisJcmV0dXJuIG5wOwogfQogCiB2b2lkCiByYW1mc19mcmVlX25vZGUo
c3RydWN0IHJhbWZzX25vZGUgKm5wKQogewotICAgIGlmIChucC0+cm5fYnVmICE9IE5VTEwgJiYg
bnAtPnJuX293bnNfYnVmKQotICAgICAgICBmcmVlKG5wLT5ybl9idWYpOworCWlmIChucC0+cm5f
YnVmICE9IE5VTEwgJiYgbnAtPnJuX293bnNfYnVmKQorCQlmcmVlKG5wLT5ybl9idWYpOwogCi0g
ICAgZnJlZShucC0+cm5fbmFtZSk7Ci0gICAgZnJlZShucCk7CisJZnJlZShucC0+cm5fbmFtZSk7
CisJZnJlZShucCk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgcmFtZnNfbm9kZSAqCiByYW1mc19hZGRf
bm9kZShzdHJ1Y3QgcmFtZnNfbm9kZSAqZG5wLCBjaGFyICpuYW1lLCBpbnQgdHlwZSkKIHsKLSAg
ICBzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAsICpwcmV2OworCXN0cnVjdCByYW1mc19ub2RlICpucCwg
KnByZXY7CiAKLSAgICBucCA9IHJhbWZzX2FsbG9jYXRlX25vZGUobmFtZSwgdHlwZSk7Ci0gICAg
aWYgKG5wID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOworCW5wID0gcmFtZnNfYWxsb2Nh
dGVfbm9kZShuYW1lLCB0eXBlKTsKKwlpZiAobnAgPT0gTlVMTCkKKwkJcmV0dXJuIE5VTEw7CiAK
LSAgICBtdXRleF9sb2NrKCZyYW1mc19sb2NrKTsKKwltdXRleF9sb2NrKCZyYW1mc19sb2NrKTsK
IAotICAgIC8qIExpbmsgdG8gdGhlIGRpcmVjdG9yeSBsaXN0ICovCi0gICAgaWYgKGRucC0+cm5f
Y2hpbGQgPT0gTlVMTCkgewotICAgICAgICBkbnAtPnJuX2NoaWxkID0gbnA7Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgcHJldiA9IGRucC0+cm5fY2hpbGQ7Ci0gICAgICAgIHdoaWxlIChwcmV2LT5y
bl9uZXh0ICE9IE5VTEwpCi0gICAgICAgICAgICBwcmV2ID0gcHJldi0+cm5fbmV4dDsKLSAgICAg
ICAgcHJldi0+cm5fbmV4dCA9IG5wOwotICAgIH0KKwkvKiBMaW5rIHRvIHRoZSBkaXJlY3Rvcnkg
bGlzdCAqLworCWlmIChkbnAtPnJuX2NoaWxkID09IE5VTEwpIHsKKwkJZG5wLT5ybl9jaGlsZCA9
IG5wOworCX0gZWxzZSB7CisJCXByZXYgPSBkbnAtPnJuX2NoaWxkOworCQl3aGlsZSAocHJldi0+
cm5fbmV4dCAhPSBOVUxMKQorCQkJcHJldiA9IHByZXYtPnJuX25leHQ7CisJCXByZXYtPnJuX25l
eHQgPSBucDsKKwl9CiAKLSAgICBzZXRfdGltZXNfdG9fbm93KCYoZG5wLT5ybl9tdGltZSksICYo
ZG5wLT5ybl9jdGltZSkpOworCXNldF90aW1lc190b19ub3coJihkbnAtPnJuX210aW1lKSwgJihk
bnAtPnJuX2N0aW1lKSk7CiAKLSAgICBtdXRleF91bmxvY2soJnJhbWZzX2xvY2spOwotICAgIHJl
dHVybiBucDsKKwltdXRleF91bmxvY2soJnJhbWZzX2xvY2spOworCXJldHVybiBucDsKIH0KIAog
c3RhdGljIGludAogcmFtZnNfcmVtb3ZlX25vZGUoc3RydWN0IHJhbWZzX25vZGUgKmRucCwgc3Ry
dWN0IHJhbWZzX25vZGUgKm5wKQogewotICAgIHN0cnVjdCByYW1mc19ub2RlICpwcmV2OwotCi0g
ICAgaWYgKGRucC0+cm5fY2hpbGQgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIEVCVVNZOwotCi0g
ICAgbXV0ZXhfbG9jaygmcmFtZnNfbG9jayk7Ci0KLSAgICAvKiBVbmxpbmsgZnJvbSB0aGUgZGly
ZWN0b3J5IGxpc3QgKi8KLSAgICBpZiAoZG5wLT5ybl9jaGlsZCA9PSBucCkgewotICAgICAgICBk
bnAtPnJuX2NoaWxkID0gbnAtPnJuX25leHQ7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZm9yIChw
cmV2ID0gZG5wLT5ybl9jaGlsZDsgcHJldi0+cm5fbmV4dCAhPSBucDsKLSAgICAgICAgICAgICBw
cmV2ID0gcHJldi0+cm5fbmV4dCkgewotICAgICAgICAgICAgaWYgKHByZXYtPnJuX25leHQgPT0g
TlVMTCkgewotICAgICAgICAgICAgICAgIG11dGV4X3VubG9jaygmcmFtZnNfbG9jayk7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIEVOT0VOVDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
ICAgICBwcmV2LT5ybl9uZXh0ID0gbnAtPnJuX25leHQ7Ci0gICAgfQotICAgIHJhbWZzX2ZyZWVf
bm9kZShucCk7Ci0KLSAgICBzZXRfdGltZXNfdG9fbm93KCYoZG5wLT5ybl9tdGltZSksICYoZG5w
LT5ybl9jdGltZSkpOwotCi0gICAgbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKLSAgICByZXR1
cm4gMDsKKwlzdHJ1Y3QgcmFtZnNfbm9kZSAqcHJldjsKKworCWlmIChkbnAtPnJuX2NoaWxkID09
IE5VTEwpCisJCXJldHVybiBFQlVTWTsKKworCW11dGV4X2xvY2soJnJhbWZzX2xvY2spOworCisJ
LyogVW5saW5rIGZyb20gdGhlIGRpcmVjdG9yeSBsaXN0ICovCisJaWYgKGRucC0+cm5fY2hpbGQg
PT0gbnApIHsKKwkJZG5wLT5ybl9jaGlsZCA9IG5wLT5ybl9uZXh0OworCX0gZWxzZSB7CisJCWZv
ciAocHJldiA9IGRucC0+cm5fY2hpbGQ7IHByZXYtPnJuX25leHQgIT0gbnA7CisJCQkgcHJldiA9
IHByZXYtPnJuX25leHQpIHsKKwkJCWlmIChwcmV2LT5ybl9uZXh0ID09IE5VTEwpIHsKKwkJCQlt
dXRleF91bmxvY2soJnJhbWZzX2xvY2spOworCQkJCXJldHVybiBFTk9FTlQ7CisJCQl9CisJCX0K
KwkJcHJldi0+cm5fbmV4dCA9IG5wLT5ybl9uZXh0OworCX0KKwlyYW1mc19mcmVlX25vZGUobnAp
OworCisJc2V0X3RpbWVzX3RvX25vdygmKGRucC0+cm5fbXRpbWUpLCAmKGRucC0+cm5fY3RpbWUp
KTsKKworCW11dGV4X3VubG9jaygmcmFtZnNfbG9jayk7CisJcmV0dXJuIDA7CiB9CiAKIHN0YXRp
YyBpbnQKIHJhbWZzX3JlbmFtZV9ub2RlKHN0cnVjdCByYW1mc19ub2RlICpucCwgY2hhciAqbmFt
ZSkKIHsKLSAgICBzaXplX3QgbGVuOwotICAgIGNoYXIgKnRtcDsKLQotICAgIGxlbiA9IHN0cmxl
bihuYW1lKTsKLSAgICBpZiAobGVuID4gTkFNRV9NQVgpIHsKLSAgICAgICAgcmV0dXJuIEVOQU1F
VE9PTE9ORzsKLSAgICB9Ci0gICAgaWYgKGxlbiA8PSBucC0+cm5fbmFtZWxlbikgewotICAgICAg
ICAvKiBSZXVzZSBjdXJyZW50IG5hbWUgYnVmZmVyICovCi0gICAgICAgIHN0cmxjcHkobnAtPnJu
X25hbWUsIG5hbWUsIG5wLT5ybl9uYW1lbGVuICsgMSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAg
LyogRXhwYW5kIG5hbWUgYnVmZmVyICovCi0gICAgICAgIHRtcCA9IChjaGFyICopIG1hbGxvYyhs
ZW4gKyAxKTsKLSAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIEVO
T01FTTsKLSAgICAgICAgc3RybGNweSh0bXAsIG5hbWUsIGxlbiArIDEpOwotICAgICAgICBmcmVl
KG5wLT5ybl9uYW1lKTsKLSAgICAgICAgbnAtPnJuX25hbWUgPSB0bXA7Ci0gICAgfQotICAgIG5w
LT5ybl9uYW1lbGVuID0gbGVuOwotICAgIHNldF90aW1lc190b19ub3coJihucC0+cm5fY3RpbWUp
KTsKLSAgICByZXR1cm4gMDsKKwlzaXplX3QgbGVuOworCWNoYXIgKnRtcDsKKworCWxlbiA9IHN0
cmxlbihuYW1lKTsKKwlpZiAobGVuID4gTkFNRV9NQVgpIHsKKwkJcmV0dXJuIEVOQU1FVE9PTE9O
RzsKKwl9CisJaWYgKGxlbiA8PSBucC0+cm5fbmFtZWxlbikgeworCQkvKiBSZXVzZSBjdXJyZW50
IG5hbWUgYnVmZmVyICovCisJCXN0cmxjcHkobnAtPnJuX25hbWUsIG5hbWUsIG5wLT5ybl9uYW1l
bGVuICsgMSk7CisJfSBlbHNlIHsKKwkJLyogRXhwYW5kIG5hbWUgYnVmZmVyICovCisJCXRtcCA9
IChjaGFyICopIG1hbGxvYyhsZW4gKyAxKTsKKwkJaWYgKHRtcCA9PSBOVUxMKQorCQkJcmV0dXJu
IEVOT01FTTsKKwkJc3RybGNweSh0bXAsIG5hbWUsIGxlbiArIDEpOworCQlmcmVlKG5wLT5ybl9u
YW1lKTsKKwkJbnAtPnJuX25hbWUgPSB0bXA7CisJfQorCW5wLT5ybl9uYW1lbGVuID0gbGVuOwor
CXNldF90aW1lc190b19ub3coJihucC0+cm5fY3RpbWUpKTsKKwlyZXR1cm4gMDsKIH0KIAogc3Rh
dGljIGludAogcmFtZnNfbG9va3VwKHN0cnVjdCB2bm9kZSAqZHZwLCBjaGFyICpuYW1lLCBzdHJ1
Y3Qgdm5vZGUgKip2cHApCiB7Ci0gICAgc3RydWN0IHJhbWZzX25vZGUgKm5wLCAqZG5wOwotICAg
IHN0cnVjdCB2bm9kZSAqdnA7Ci0gICAgc2l6ZV90IGxlbjsKLSAgICBpbnQgZm91bmQ7Ci0KLSAg
ICAqdnBwID0gTlVMTDsKLQotICAgIGlmICgqbmFtZSA9PSAnXDAnKQotICAgICAgICByZXR1cm4g
RU5PRU5UOwotCi0gICAgbXV0ZXhfbG9jaygmcmFtZnNfbG9jayk7Ci0KLSAgICBsZW4gPSBzdHJs
ZW4obmFtZSk7Ci0gICAgZG5wID0gKHJhbWZzX25vZGUgKikgZHZwLT52X2RhdGE7Ci0gICAgZm91
bmQgPSAwOwotICAgIGZvciAobnAgPSBkbnAtPnJuX2NoaWxkOyBucCAhPSBOVUxMOyBucCA9IG5w
LT5ybl9uZXh0KSB7Ci0gICAgICAgIGlmIChucC0+cm5fbmFtZWxlbiA9PSBsZW4gJiYKLSAgICAg
ICAgICAgIG1lbWNtcChuYW1lLCBucC0+cm5fbmFtZSwgbGVuKSA9PSAwKSB7Ci0gICAgICAgICAg
ICBmb3VuZCA9IDE7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICBp
ZiAoZm91bmQgPT0gMCkgewotICAgICAgICBtdXRleF91bmxvY2soJnJhbWZzX2xvY2spOwotICAg
ICAgICByZXR1cm4gRU5PRU5UOwotICAgIH0KLSAgICBpZiAodmdldChkdnAtPnZfbW91bnQsIGlu
b2RlX2NvdW50KyssICZ2cCkpIHsKLSAgICAgICAgLyogZm91bmQgaW4gY2FjaGUgKi8KLSAgICAg
ICAgKnZwcCA9IHZwOwotICAgICAgICBtdXRleF91bmxvY2soJnJhbWZzX2xvY2spOwotICAgICAg
ICByZXR1cm4gMDsKLSAgICB9Ci0gICAgaWYgKCF2cCkgewotICAgICAgICBtdXRleF91bmxvY2so
JnJhbWZzX2xvY2spOwotICAgICAgICByZXR1cm4gRU5PTUVNOwotICAgIH0KLSAgICB2cC0+dl9k
YXRhID0gbnA7Ci0gICAgdnAtPnZfbW9kZSA9IEFMTFBFUk1TOwotICAgIHZwLT52X3R5cGUgPSBu
cC0+cm5fdHlwZTsKLSAgICB2cC0+dl9zaXplID0gbnAtPnJuX3NpemU7Ci0KLSAgICBtdXRleF91
bmxvY2soJnJhbWZzX2xvY2spOwotCi0gICAgKnZwcCA9IHZwOwotCi0gICAgcmV0dXJuIDA7CisJ
c3RydWN0IHJhbWZzX25vZGUgKm5wLCAqZG5wOworCXN0cnVjdCB2bm9kZSAqdnA7CisJc2l6ZV90
IGxlbjsKKwlpbnQgZm91bmQ7CisKKwkqdnBwID0gTlVMTDsKKworCWlmICgqbmFtZSA9PSAnXDAn
KQorCQlyZXR1cm4gRU5PRU5UOworCisJbXV0ZXhfbG9jaygmcmFtZnNfbG9jayk7CisKKwlsZW4g
PSBzdHJsZW4obmFtZSk7CisJZG5wID0gKHJhbWZzX25vZGUgKikgZHZwLT52X2RhdGE7CisJZm91
bmQgPSAwOworCWZvciAobnAgPSBkbnAtPnJuX2NoaWxkOyBucCAhPSBOVUxMOyBucCA9IG5wLT5y
bl9uZXh0KSB7CisJCWlmIChucC0+cm5fbmFtZWxlbiA9PSBsZW4gJiYKKwkJCW1lbWNtcChuYW1l
LCBucC0+cm5fbmFtZSwgbGVuKSA9PSAwKSB7CisJCQlmb3VuZCA9IDE7CisJCQlicmVhazsKKwkJ
fQorCX0KKwlpZiAoZm91bmQgPT0gMCkgeworCQltdXRleF91bmxvY2soJnJhbWZzX2xvY2spOwor
CQlyZXR1cm4gRU5PRU5UOworCX0KKwlpZiAodmdldChkdnAtPnZfbW91bnQsIGlub2RlX2NvdW50
KyssICZ2cCkpIHsKKwkJLyogZm91bmQgaW4gY2FjaGUgKi8KKwkJKnZwcCA9IHZwOworCQltdXRl
eF91bmxvY2soJnJhbWZzX2xvY2spOworCQlyZXR1cm4gMDsKKwl9CisJaWYgKCF2cCkgeworCQlt
dXRleF91bmxvY2soJnJhbWZzX2xvY2spOworCQlyZXR1cm4gRU5PTUVNOworCX0KKwl2cC0+dl9k
YXRhID0gbnA7CisJdnAtPnZfbW9kZSA9IEFMTFBFUk1TOworCXZwLT52X3R5cGUgPSBucC0+cm5f
dHlwZTsKKwl2cC0+dl9zaXplID0gbnAtPnJuX3NpemU7CisKKwltdXRleF91bmxvY2soJnJhbWZz
X2xvY2spOworCisJKnZwcCA9IHZwOworCisJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQKIHJh
bWZzX21rZGlyKHN0cnVjdCB2bm9kZSAqZHZwLCBjaGFyICpuYW1lLCBtb2RlX3QgbW9kZSkKIHsK
LSAgICBzdHJ1Y3QgcmFtZnNfbm9kZSAqbnA7CisJc3RydWN0IHJhbWZzX25vZGUgKm5wOwogCi0g
ICAgRFBSSU5URigoIm1rZGlyICVzXG4iLCBuYW1lKSk7Ci0gICAgaWYgKHN0cmxlbihuYW1lKSA+
IE5BTUVfTUFYKSB7Ci0gICAgICAgIHJldHVybiBFTkFNRVRPT0xPTkc7Ci0gICAgfQorCURQUklO
VEYoKCJta2RpciAlc1xuIiwgbmFtZSkpOworCWlmIChzdHJsZW4obmFtZSkgPiBOQU1FX01BWCkg
eworCQlyZXR1cm4gRU5BTUVUT09MT05HOworCX0KIAotICAgIGlmICghU19JU0RJUihtb2RlKSkK
LSAgICAgICAgcmV0dXJuIEVJTlZBTDsKKwlpZiAoIVNfSVNESVIobW9kZSkpCisJCXJldHVybiBF
SU5WQUw7CiAKLSAgICBucCA9IChyYW1mc19ub2RlICopIHJhbWZzX2FkZF9ub2RlKChyYW1mc19u
b2RlICopIGR2cC0+dl9kYXRhLCBuYW1lLCBWRElSKTsKLSAgICBpZiAobnAgPT0gTlVMTCkKLSAg
ICAgICAgcmV0dXJuIEVOT01FTTsKLSAgICBucC0+cm5fc2l6ZSA9IDA7CisJbnAgPSAocmFtZnNf
bm9kZSAqKSByYW1mc19hZGRfbm9kZSgocmFtZnNfbm9kZSAqKSBkdnAtPnZfZGF0YSwgbmFtZSwg
VkRJUik7CisJaWYgKG5wID09IE5VTEwpCisJCXJldHVybiBFTk9NRU07CisJbnAtPnJuX3NpemUg
PSAwOwogCi0gICAgcmV0dXJuIDA7CisJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQKIHJhbWZz
X3N5bWxpbmsoc3RydWN0IHZub2RlICpkdnAsIGNoYXIgKm5hbWUsIGNoYXIgKmxpbmspCiB7Ci0g
ICAgaWYgKHN0cmxlbihuYW1lKSA+IE5BTUVfTUFYKSB7Ci0gICAgICAgIHJldHVybiBFTkFNRVRP
T0xPTkc7Ci0gICAgfQotICAgIGF1dG8gbnAgPSByYW1mc19hZGRfbm9kZSgocmFtZnNfbm9kZSAq
KSBkdnAtPnZfZGF0YSwgbmFtZSwgVkxOSyk7Ci0gICAgaWYgKG5wID09IE5VTEwpCi0gICAgICAg
IHJldHVybiBFTk9NRU07Ci0gICAgLy8gU2F2ZSB0aGUgbGluayB0YXJnZXQgd2l0aG91dCB0aGUg
ZmluYWwgbnVsbCwgYXMgcmVhZGxpbmsoKSB3YW50cyBpdC4KLSAgICBzaXplX3QgbGVuID0gc3Ry
bGVuKGxpbmspOwotICAgIG5wLT5ybl9idWYgPSBzdHJuZHVwKGxpbmssIGxlbik7Ci0gICAgbnAt
PnJuX2J1ZnNpemUgPSBucC0+cm5fc2l6ZSA9IGxlbjsKLQotICAgIHJldHVybiAwOworCWlmIChz
dHJsZW4obmFtZSkgPiBOQU1FX01BWCkgeworCQlyZXR1cm4gRU5BTUVUT09MT05HOworCX0KKwlh
dXRvIG5wID0gcmFtZnNfYWRkX25vZGUoKHJhbWZzX25vZGUgKikgZHZwLT52X2RhdGEsIG5hbWUs
IFZMTkspOworCWlmIChucCA9PSBOVUxMKQorCQlyZXR1cm4gRU5PTUVNOworCS8vIFNhdmUgdGhl
IGxpbmsgdGFyZ2V0IHdpdGhvdXQgdGhlIGZpbmFsIG51bGwsIGFzIHJlYWRsaW5rKCkgd2FudHMg
aXQuCisJc2l6ZV90IGxlbiA9IHN0cmxlbihsaW5rKTsKKwlucC0+cm5fYnVmID0gc3RybmR1cChs
aW5rLCBsZW4pOworCW5wLT5ybl9idWZzaXplID0gbnAtPnJuX3NpemUgPSBsZW47CisKKwlyZXR1
cm4gMDsKIH0KIAogc3RhdGljIGludAogcmFtZnNfcmVhZGxpbmsoc3RydWN0IHZub2RlICp2cCwg
c3RydWN0IHVpbyAqdWlvKQogewotICAgIHN0cnVjdCByYW1mc19ub2RlICpucCA9IChyYW1mc19u
b2RlICopIHZwLT52X2RhdGE7Ci0gICAgc2l6ZV90IGxlbjsKLQotICAgIGlmICh2cC0+dl90eXBl
ICE9IFZMTkspIHsKLSAgICAgICAgcmV0dXJuIEVJTlZBTDsKLSAgICB9Ci0gICAgaWYgKHVpby0+
dWlvX29mZnNldCA8IDApIHsKLSAgICAgICAgcmV0dXJuIEVJTlZBTDsKLSAgICB9Ci0gICAgaWYg
KHVpby0+dWlvX3Jlc2lkID09IDApIHsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIGlm
ICh1aW8tPnVpb19vZmZzZXQgPj0gKG9mZl90KSB2cC0+dl9zaXplKQotICAgICAgICByZXR1cm4g
MDsKLSAgICBpZiAodnAtPnZfc2l6ZSAtIHVpby0+dWlvX29mZnNldCA8IHVpby0+dWlvX3Jlc2lk
KQotICAgICAgICBsZW4gPSB2cC0+dl9zaXplIC0gdWlvLT51aW9fb2Zmc2V0OwotICAgIGVsc2UK
LSAgICAgICAgbGVuID0gdWlvLT51aW9fcmVzaWQ7Ci0KLSAgICBzZXRfdGltZXNfdG9fbm93KCAm
KG5wLT5ybl9hdGltZSkpOwotICAgIHJldHVybiB1aW9tb3ZlKG5wLT5ybl9idWYgKyB1aW8tPnVp
b19vZmZzZXQsIGxlbiwgdWlvKTsKKwlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSAocmFtZnNfbm9k
ZSAqKSB2cC0+dl9kYXRhOworCXNpemVfdCBsZW47CisKKwlpZiAodnAtPnZfdHlwZSAhPSBWTE5L
KSB7CisJCXJldHVybiBFSU5WQUw7CisJfQorCWlmICh1aW8tPnVpb19vZmZzZXQgPCAwKSB7CisJ
CXJldHVybiBFSU5WQUw7CisJfQorCWlmICh1aW8tPnVpb19yZXNpZCA9PSAwKSB7CisJCXJldHVy
biAwOworCX0KKwlpZiAodWlvLT51aW9fb2Zmc2V0ID49IChvZmZfdCkgdnAtPnZfc2l6ZSkKKwkJ
cmV0dXJuIDA7CisJaWYgKHZwLT52X3NpemUgLSB1aW8tPnVpb19vZmZzZXQgPCB1aW8tPnVpb19y
ZXNpZCkKKwkJbGVuID0gdnAtPnZfc2l6ZSAtIHVpby0+dWlvX29mZnNldDsKKwllbHNlCisJCWxl
biA9IHVpby0+dWlvX3Jlc2lkOworCisJc2V0X3RpbWVzX3RvX25vdyggJihucC0+cm5fYXRpbWUp
KTsKKwlyZXR1cm4gdWlvbW92ZShucC0+cm5fYnVmICsgdWlvLT51aW9fb2Zmc2V0LCBsZW4sIHVp
byk7CiB9CiAKIC8qIFJlbW92ZSBhIGRpcmVjdG9yeSAqLwogc3RhdGljIGludAogcmFtZnNfcm1k
aXIoc3RydWN0IHZub2RlICpkdnAsIHN0cnVjdCB2bm9kZSAqdnAsIGNoYXIgKm5hbWUpCiB7Ci0g
ICAgcmV0dXJuIHJhbWZzX3JlbW92ZV9ub2RlKChyYW1mc19ub2RlICopIGR2cC0+dl9kYXRhLCAo
cmFtZnNfbm9kZSAqKSB2cC0+dl9kYXRhKTsKKwlyZXR1cm4gcmFtZnNfcmVtb3ZlX25vZGUoKHJh
bWZzX25vZGUgKikgZHZwLT52X2RhdGEsIChyYW1mc19ub2RlICopIHZwLT52X2RhdGEpOwogfQog
CiAvKiBSZW1vdmUgYSBmaWxlICovCiBzdGF0aWMgaW50CiByYW1mc19yZW1vdmUoc3RydWN0IHZu
b2RlICpkdnAsIHN0cnVjdCB2bm9kZSAqdnAsIGNoYXIgKm5hbWUpCiB7Ci0gICAgRFBSSU5URigo
InJlbW92ZSAlcyBpbiAlc1xuIiwgbmFtZSwgZHZwLT52X3BhdGgpKTsKLSAgICByZXR1cm4gcmFt
ZnNfcmVtb3ZlX25vZGUoKHJhbWZzX25vZGUgKikgZHZwLT52X2RhdGEsIChyYW1mc19ub2RlICop
IHZwLT52X2RhdGEpOworCURQUklOVEYoKCJyZW1vdmUgJXMgaW4gJXNcbiIsIG5hbWUsIGR2cC0+
dl9wYXRoKSk7CisJcmV0dXJuIHJhbWZzX3JlbW92ZV9ub2RlKChyYW1mc19ub2RlICopIGR2cC0+
dl9kYXRhLCAocmFtZnNfbm9kZSAqKSB2cC0+dl9kYXRhKTsKIH0KIAogLyogVHJ1bmNhdGUgZmls
ZSAqLwogc3RhdGljIGludAogcmFtZnNfdHJ1bmNhdGUoc3RydWN0IHZub2RlICp2cCwgb2ZmX3Qg
bGVuZ3RoKQogewotICAgIHN0cnVjdCByYW1mc19ub2RlICpucDsKLSAgICB2b2lkICpuZXdfYnVm
OwotICAgIHNpemVfdCBuZXdfc2l6ZTsKLQotICAgIERQUklOVEYoKCJ0cnVuY2F0ZSAlcyBsZW5n
dGg9JWRcbiIsIHZwLT52X3BhdGgsIGxlbmd0aCkpOwotICAgIG5wID0gKHJhbWZzX25vZGUgKikg
dnAtPnZfZGF0YTsKLQotICAgIGlmIChsZW5ndGggPT0gMCkgewotICAgICAgICBpZiAobnAtPnJu
X2J1ZiAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBpZihucC0+cm5fb3duc19idWYpCi0gICAgICAg
ICAgICAgICAgZnJlZShucC0+cm5fYnVmKTsKLSAgICAgICAgICAgIG5wLT5ybl9idWYgPSBOVUxM
OwotICAgICAgICAgICAgbnAtPnJuX2J1ZnNpemUgPSAwOwotICAgICAgICB9Ci0gICAgfSBlbHNl
IGlmIChzaXplX3QobGVuZ3RoKSA+IG5wLT5ybl9idWZzaXplKSB7Ci0gICAgICAgIC8vIFhYWDog
dGhpcyBjb3VsZCB1c2UgYSBwYWdlIGxldmVsIGFsbG9jYXRvcgotICAgICAgICBuZXdfc2l6ZSA9
IHJvdW5kX3BhZ2UobGVuZ3RoKTsKLSAgICAgICAgbmV3X2J1ZiA9IG1hbGxvYyhuZXdfc2l6ZSk7
Ci0gICAgICAgIGlmICghbmV3X2J1ZikKLSAgICAgICAgICAgIHJldHVybiBFSU87Ci0gICAgICAg
IGlmIChucC0+cm5fc2l6ZSAhPSAwKSB7Ci0gICAgICAgICAgICBtZW1jcHkobmV3X2J1ZiwgbnAt
PnJuX2J1ZiwgdnAtPnZfc2l6ZSk7Ci0gICAgICAgICAgICBpZihucC0+cm5fb3duc19idWYpCi0g
ICAgICAgICAgICAgICAgZnJlZShucC0+cm5fYnVmKTsKLSAgICAgICAgfQotICAgICAgICBucC0+
cm5fYnVmID0gKGNoYXIgKikgbmV3X2J1ZjsKLSAgICAgICAgbnAtPnJuX2J1ZnNpemUgPSBuZXdf
c2l6ZTsKLSAgICAgICAgbnAtPnJuX293bnNfYnVmID0gdHJ1ZTsKLSAgICB9Ci0gICAgbnAtPnJu
X3NpemUgPSBsZW5ndGg7Ci0gICAgdnAtPnZfc2l6ZSA9IGxlbmd0aDsKLSAgICBzZXRfdGltZXNf
dG9fbm93KCYobnAtPnJuX210aW1lKSwgJihucC0+cm5fY3RpbWUpKTsKLSAgICByZXR1cm4gMDsK
KwlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnA7CisJdm9pZCAqbmV3X2J1ZjsKKwlzaXplX3QgbmV3X3Np
emU7CisKKwlEUFJJTlRGKCgidHJ1bmNhdGUgJXMgbGVuZ3RoPSVkXG4iLCB2cC0+dl9wYXRoLCBs
ZW5ndGgpKTsKKwlucCA9IChyYW1mc19ub2RlICopIHZwLT52X2RhdGE7CisKKwlpZiAobGVuZ3Ro
ID09IDApIHsKKwkJaWYgKG5wLT5ybl9idWYgIT0gTlVMTCkgeworCQkJaWYobnAtPnJuX293bnNf
YnVmKQorCQkJCWZyZWUobnAtPnJuX2J1Zik7CisJCQlucC0+cm5fYnVmID0gTlVMTDsKKwkJCW5w
LT5ybl9idWZzaXplID0gMDsKKwkJfQorCX0gZWxzZSBpZiAoc2l6ZV90KGxlbmd0aCkgPiBucC0+
cm5fYnVmc2l6ZSkgeworCQkvLyBYWFg6IHRoaXMgY291bGQgdXNlIGEgcGFnZSBsZXZlbCBhbGxv
Y2F0b3IKKwkJbmV3X3NpemUgPSByb3VuZF9wYWdlKGxlbmd0aCk7CisJCW5ld19idWYgPSBtYWxs
b2MobmV3X3NpemUpOworCQlpZiAoIW5ld19idWYpCisJCQlyZXR1cm4gRUlPOworCQlpZiAobnAt
PnJuX3NpemUgIT0gMCkgeworCQkJbWVtY3B5KG5ld19idWYsIG5wLT5ybl9idWYsIHZwLT52X3Np
emUpOworCQkJaWYobnAtPnJuX293bnNfYnVmKQorCQkJCWZyZWUobnAtPnJuX2J1Zik7CisJCX0K
KwkJbnAtPnJuX2J1ZiA9IChjaGFyICopIG5ld19idWY7CisJCW5wLT5ybl9idWZzaXplID0gbmV3
X3NpemU7CisJCW5wLT5ybl9vd25zX2J1ZiA9IHRydWU7CisJfQorCW5wLT5ybl9zaXplID0gbGVu
Z3RoOworCXZwLT52X3NpemUgPSBsZW5ndGg7CisJc2V0X3RpbWVzX3RvX25vdygmKG5wLT5ybl9t
dGltZSksICYobnAtPnJuX2N0aW1lKSk7CisJcmV0dXJuIDA7CiB9CiAKIC8qCkBAIC0zNjksMTY1
ICszNjksMTY1IEBAIHJhbWZzX3RydW5jYXRlKHN0cnVjdCB2bm9kZSAqdnAsIG9mZl90IGxlbmd0
aCkKIHN0YXRpYyBpbnQKIHJhbWZzX2NyZWF0ZShzdHJ1Y3Qgdm5vZGUgKmR2cCwgY2hhciAqbmFt
ZSwgbW9kZV90IG1vZGUpCiB7Ci0gICAgc3RydWN0IHJhbWZzX25vZGUgKm5wOworCXN0cnVjdCBy
YW1mc19ub2RlICpucDsKIAotICAgIGlmIChzdHJsZW4obmFtZSkgPiBOQU1FX01BWCkgewotICAg
ICAgICByZXR1cm4gRU5BTUVUT09MT05HOwotICAgIH0KKwlpZiAoc3RybGVuKG5hbWUpID4gTkFN
RV9NQVgpIHsKKwkJcmV0dXJuIEVOQU1FVE9PTE9ORzsKKwl9CiAKLSAgICBEUFJJTlRGKCgiY3Jl
YXRlICVzIGluICVzXG4iLCBuYW1lLCBkdnAtPnZfcGF0aCkpOwotICAgIGlmICghU19JU1JFRyht
b2RlKSkKLSAgICAgICAgcmV0dXJuIEVJTlZBTDsKKwlEUFJJTlRGKCgiY3JlYXRlICVzIGluICVz
XG4iLCBuYW1lLCBkdnAtPnZfcGF0aCkpOworCWlmICghU19JU1JFRyhtb2RlKSkKKwkJcmV0dXJu
IEVJTlZBTDsKIAotICAgIG5wID0gcmFtZnNfYWRkX25vZGUoKHJhbWZzX25vZGUgKikgZHZwLT52
X2RhdGEsIG5hbWUsIFZSRUcpOwotICAgIGlmIChucCA9PSBOVUxMKQotICAgICAgICByZXR1cm4g
RU5PTUVNOwotICAgIHJldHVybiAwOworCW5wID0gcmFtZnNfYWRkX25vZGUoKHJhbWZzX25vZGUg
KikgZHZwLT52X2RhdGEsIG5hbWUsIFZSRUcpOworCWlmIChucCA9PSBOVUxMKQorCQlyZXR1cm4g
RU5PTUVNOworCXJldHVybiAwOwogfQogCiBzdGF0aWMgaW50CiByYW1mc19yZWFkKHN0cnVjdCB2
bm9kZSAqdnAsIHN0cnVjdCBmaWxlICpmcCwgc3RydWN0IHVpbyAqdWlvLCBpbnQgaW9mbGFnKQog
ewotICAgIHN0cnVjdCByYW1mc19ub2RlICpucCA9IChyYW1mc19ub2RlICopIHZwLT52X2RhdGE7
Ci0gICAgc2l6ZV90IGxlbjsKLQotICAgIGlmICh2cC0+dl90eXBlID09IFZESVIpIHsKLSAgICAg
ICAgcmV0dXJuIEVJU0RJUjsKLSAgICB9Ci0gICAgaWYgKHZwLT52X3R5cGUgIT0gVlJFRykgewot
ICAgICAgICByZXR1cm4gRUlOVkFMOwotICAgIH0KLSAgICBpZiAodWlvLT51aW9fb2Zmc2V0IDwg
MCkgewotICAgICAgICByZXR1cm4gRUlOVkFMOwotICAgIH0KLSAgICBpZiAodWlvLT51aW9fcmVz
aWQgPT0gMCkgewotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBpZiAodWlvLT51aW9f
b2Zmc2V0ID49IChvZmZfdCkgdnAtPnZfc2l6ZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBp
ZiAodnAtPnZfc2l6ZSAtIHVpby0+dWlvX29mZnNldCA8IHVpby0+dWlvX3Jlc2lkKQotICAgICAg
ICBsZW4gPSB2cC0+dl9zaXplIC0gdWlvLT51aW9fb2Zmc2V0OwotICAgIGVsc2UKLSAgICAgICAg
bGVuID0gdWlvLT51aW9fcmVzaWQ7Ci0KLSAgICBzZXRfdGltZXNfdG9fbm93KCYobnAtPnJuX2F0
aW1lKSk7Ci0KLSAgICByZXR1cm4gdWlvbW92ZShucC0+cm5fYnVmICsgdWlvLT51aW9fb2Zmc2V0
LCBsZW4sIHVpbyk7CisJc3RydWN0IHJhbWZzX25vZGUgKm5wID0gKHJhbWZzX25vZGUgKikgdnAt
PnZfZGF0YTsKKwlzaXplX3QgbGVuOworCisJaWYgKHZwLT52X3R5cGUgPT0gVkRJUikgeworCQly
ZXR1cm4gRUlTRElSOworCX0KKwlpZiAodnAtPnZfdHlwZSAhPSBWUkVHKSB7CisJCXJldHVybiBF
SU5WQUw7CisJfQorCWlmICh1aW8tPnVpb19vZmZzZXQgPCAwKSB7CisJCXJldHVybiBFSU5WQUw7
CisJfQorCWlmICh1aW8tPnVpb19yZXNpZCA9PSAwKSB7CisJCXJldHVybiAwOworCX0KKworCWlm
ICh1aW8tPnVpb19vZmZzZXQgPj0gKG9mZl90KSB2cC0+dl9zaXplKQorCQlyZXR1cm4gMDsKKwor
CWlmICh2cC0+dl9zaXplIC0gdWlvLT51aW9fb2Zmc2V0IDwgdWlvLT51aW9fcmVzaWQpCisJCWxl
biA9IHZwLT52X3NpemUgLSB1aW8tPnVpb19vZmZzZXQ7CisJZWxzZQorCQlsZW4gPSB1aW8tPnVp
b19yZXNpZDsKKworCXNldF90aW1lc190b19ub3coJihucC0+cm5fYXRpbWUpKTsKKworCXJldHVy
biB1aW9tb3ZlKG5wLT5ybl9idWYgKyB1aW8tPnVpb19vZmZzZXQsIGxlbiwgdWlvKTsKIH0KIAog
aW50CiByYW1mc19zZXRfZmlsZV9kYXRhKHN0cnVjdCB2bm9kZSAqdnAsIGNvbnN0IHZvaWQgKmRh
dGEsIHNpemVfdCBzaXplKQogewotICAgIHN0cnVjdCByYW1mc19ub2RlICpucCA9IChyYW1mc19u
b2RlICopIHZwLT52X2RhdGE7Ci0KLSAgICBpZiAodnAtPnZfdHlwZSA9PSBWRElSKSB7Ci0gICAg
ICAgIHJldHVybiBFSVNESVI7Ci0gICAgfQotICAgIGlmICh2cC0+dl90eXBlICE9IFZSRUcpIHsK
LSAgICAgICAgcmV0dXJuIEVJTlZBTDsKLSAgICB9Ci0gICAgaWYgKG5wLT5ybl9idWYpIHsKLSAg
ICAgICAgcmV0dXJuIEVJTlZBTDsKLSAgICB9Ci0KLSAgICBucC0+cm5fYnVmID0gKGNoYXIgKikg
ZGF0YTsKLSAgICBucC0+cm5fYnVmc2l6ZSA9IHNpemU7Ci0gICAgbnAtPnJuX3NpemUgPSBzaXpl
OwotICAgIHZwLT52X3NpemUgPSBzaXplOwotICAgIG5wLT5ybl9vd25zX2J1ZiA9IGZhbHNlOwot
Ci0gICAgcmV0dXJuIDA7CisJc3RydWN0IHJhbWZzX25vZGUgKm5wID0gKHJhbWZzX25vZGUgKikg
dnAtPnZfZGF0YTsKKworCWlmICh2cC0+dl90eXBlID09IFZESVIpIHsKKwkJcmV0dXJuIEVJU0RJ
UjsKKwl9CisJaWYgKHZwLT52X3R5cGUgIT0gVlJFRykgeworCQlyZXR1cm4gRUlOVkFMOworCX0K
KwlpZiAobnAtPnJuX2J1ZikgeworCQlyZXR1cm4gRUlOVkFMOworCX0KKworCW5wLT5ybl9idWYg
PSAoY2hhciAqKSBkYXRhOworCW5wLT5ybl9idWZzaXplID0gc2l6ZTsKKwlucC0+cm5fc2l6ZSA9
IHNpemU7CisJdnAtPnZfc2l6ZSA9IHNpemU7CisJbnAtPnJuX293bnNfYnVmID0gZmFsc2U7CisK
KwlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGludAogcmFtZnNfd3JpdGUoc3RydWN0IHZub2RlICp2
cCwgc3RydWN0IHVpbyAqdWlvLCBpbnQgaW9mbGFnKQogewotICAgIHN0cnVjdCByYW1mc19ub2Rl
ICpucCA9IChyYW1mc19ub2RlICopIHZwLT52X2RhdGE7Ci0KLSAgICBpZiAodnAtPnZfdHlwZSA9
PSBWRElSKSB7Ci0gICAgICAgIHJldHVybiBFSVNESVI7Ci0gICAgfQotICAgIGlmICh2cC0+dl90
eXBlICE9IFZSRUcpIHsKLSAgICAgICAgcmV0dXJuIEVJTlZBTDsKLSAgICB9Ci0gICAgaWYgKHVp
by0+dWlvX29mZnNldCA8IDApIHsKLSAgICAgICAgcmV0dXJuIEVJTlZBTDsKLSAgICB9Ci0gICAg
aWYgKHVpby0+dWlvX29mZnNldCA+PSBMT05HX01BWCkgewotICAgICAgICByZXR1cm4gRUZCSUc7
Ci0gICAgfQotICAgIGlmICh1aW8tPnVpb19yZXNpZCA9PSAwKSB7Ci0gICAgICAgIHJldHVybiAw
OwotICAgIH0KLQotICAgIGlmIChpb2ZsYWcgJiBJT19BUFBFTkQpCi0gICAgICAgIHVpby0+dWlv
X29mZnNldCA9IG5wLT5ybl9zaXplOwotCi0gICAgaWYgKHNpemVfdCh1aW8tPnVpb19vZmZzZXQg
KyB1aW8tPnVpb19yZXNpZCkgPiAoc2l6ZV90KSB2cC0+dl9zaXplKSB7Ci0gICAgICAgIC8qIEV4
cGFuZCB0aGUgZmlsZSBzaXplIGJlZm9yZSB3cml0aW5nIHRvIGl0ICovCi0gICAgICAgIG9mZl90
IGVuZF9wb3MgPSB1aW8tPnVpb19vZmZzZXQgKyB1aW8tPnVpb19yZXNpZDsKLSAgICAgICAgaWYg
KGVuZF9wb3MgPiAob2ZmX3QpIG5wLT5ybl9idWZzaXplKSB7Ci0gICAgICAgICAgICAvLyBYWFg6
IHRoaXMgY291bGQgdXNlIGEgcGFnZSBsZXZlbCBhbGxvY2F0b3IKLSAgICAgICAgICAgIHNpemVf
dCBuZXdfc2l6ZSA9IHJvdW5kX3BhZ2UoZW5kX3Bvcyk7Ci0gICAgICAgICAgICB2b2lkICpuZXdf
YnVmID0gbWFsbG9jKG5ld19zaXplKTsKLSAgICAgICAgICAgIGlmICghbmV3X2J1ZikKLSAgICAg
ICAgICAgICAgICByZXR1cm4gRUlPOwotICAgICAgICAgICAgaWYgKG5wLT5ybl9zaXplICE9IDAp
IHsKLSAgICAgICAgICAgICAgICBtZW1jcHkobmV3X2J1ZiwgbnAtPnJuX2J1ZiwgdnAtPnZfc2l6
ZSk7Ci0gICAgICAgICAgICAgICAgaWYobnAtPnJuX293bnNfYnVmKQotICAgICAgICAgICAgICAg
ICAgICBmcmVlKG5wLT5ybl9idWYpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbnAtPnJu
X2J1ZiA9IChjaGFyICopIG5ld19idWY7Ci0gICAgICAgICAgICBucC0+cm5fYnVmc2l6ZSA9IG5l
d19zaXplOwotICAgICAgICB9Ci0gICAgICAgIG5wLT5ybl9zaXplID0gZW5kX3BvczsKLSAgICAg
ICAgdnAtPnZfc2l6ZSA9IGVuZF9wb3M7Ci0gICAgICAgIG5wLT5ybl9vd25zX2J1ZiA9IHRydWU7
Ci0gICAgfQotCi0gICAgc2V0X3RpbWVzX3RvX25vdygmKG5wLT5ybl9tdGltZSksICYobnAtPnJu
X2N0aW1lKSk7Ci0gICAgcmV0dXJuIHVpb21vdmUobnAtPnJuX2J1ZiArIHVpby0+dWlvX29mZnNl
dCwgdWlvLT51aW9fcmVzaWQsIHVpbyk7CisJc3RydWN0IHJhbWZzX25vZGUgKm5wID0gKHJhbWZz
X25vZGUgKikgdnAtPnZfZGF0YTsKKworCWlmICh2cC0+dl90eXBlID09IFZESVIpIHsKKwkJcmV0
dXJuIEVJU0RJUjsKKwl9CisJaWYgKHZwLT52X3R5cGUgIT0gVlJFRykgeworCQlyZXR1cm4gRUlO
VkFMOworCX0KKwlpZiAodWlvLT51aW9fb2Zmc2V0IDwgMCkgeworCQlyZXR1cm4gRUlOVkFMOwor
CX0KKwlpZiAodWlvLT51aW9fb2Zmc2V0ID49IExPTkdfTUFYKSB7CisJCXJldHVybiBFRkJJRzsK
Kwl9CisJaWYgKHVpby0+dWlvX3Jlc2lkID09IDApIHsKKwkJcmV0dXJuIDA7CisJfQorCisJaWYg
KGlvZmxhZyAmIElPX0FQUEVORCkKKwkJdWlvLT51aW9fb2Zmc2V0ID0gbnAtPnJuX3NpemU7CisK
KwlpZiAoc2l6ZV90KHVpby0+dWlvX29mZnNldCArIHVpby0+dWlvX3Jlc2lkKSA+IChzaXplX3Qp
IHZwLT52X3NpemUpIHsKKwkJLyogRXhwYW5kIHRoZSBmaWxlIHNpemUgYmVmb3JlIHdyaXRpbmcg
dG8gaXQgKi8KKwkJb2ZmX3QgZW5kX3BvcyA9IHVpby0+dWlvX29mZnNldCArIHVpby0+dWlvX3Jl
c2lkOworCQlpZiAoZW5kX3BvcyA+IChvZmZfdCkgbnAtPnJuX2J1ZnNpemUpIHsKKwkJCS8vIFhY
WDogdGhpcyBjb3VsZCB1c2UgYSBwYWdlIGxldmVsIGFsbG9jYXRvcgorCQkJc2l6ZV90IG5ld19z
aXplID0gcm91bmRfcGFnZShlbmRfcG9zKTsKKwkJCXZvaWQgKm5ld19idWYgPSBtYWxsb2MobmV3
X3NpemUpOworCQkJaWYgKCFuZXdfYnVmKQorCQkJCXJldHVybiBFSU87CisJCQlpZiAobnAtPnJu
X3NpemUgIT0gMCkgeworCQkJCW1lbWNweShuZXdfYnVmLCBucC0+cm5fYnVmLCB2cC0+dl9zaXpl
KTsKKwkJCQlpZihucC0+cm5fb3duc19idWYpCisJCQkJCWZyZWUobnAtPnJuX2J1Zik7CisJCQl9
CisJCQlucC0+cm5fYnVmID0gKGNoYXIgKikgbmV3X2J1ZjsKKwkJCW5wLT5ybl9idWZzaXplID0g
bmV3X3NpemU7CisJCX0KKwkJbnAtPnJuX3NpemUgPSBlbmRfcG9zOworCQl2cC0+dl9zaXplID0g
ZW5kX3BvczsKKwkJbnAtPnJuX293bnNfYnVmID0gdHJ1ZTsKKwl9CisKKwlzZXRfdGltZXNfdG9f
bm93KCYobnAtPnJuX210aW1lKSwgJihucC0+cm5fY3RpbWUpKTsKKwlyZXR1cm4gdWlvbW92ZShu
cC0+cm5fYnVmICsgdWlvLT51aW9fb2Zmc2V0LCB1aW8tPnVpb19yZXNpZCwgdWlvKTsKIH0KIAog
c3RhdGljIGludAogcmFtZnNfcmVuYW1lKHN0cnVjdCB2bm9kZSAqZHZwMSwgc3RydWN0IHZub2Rl
ICp2cDEsIGNoYXIgKm5hbWUxLAotICAgICAgICAgICAgIHN0cnVjdCB2bm9kZSAqZHZwMiwgc3Ry
dWN0IHZub2RlICp2cDIsIGNoYXIgKm5hbWUyKQorCQkJIHN0cnVjdCB2bm9kZSAqZHZwMiwgc3Ry
dWN0IHZub2RlICp2cDIsIGNoYXIgKm5hbWUyKQogewotICAgIHN0cnVjdCByYW1mc19ub2RlICpu
cCwgKm9sZF9ucDsKLSAgICBpbnQgZXJyb3I7Ci0KLSAgICBpZiAodnAyKSB7Ci0gICAgICAgIC8q
IFJlbW92ZSBkZXN0aW5hdGlvbiBmaWxlLCBmaXJzdCAqLwotICAgICAgICBlcnJvciA9IHJhbWZz
X3JlbW92ZV9ub2RlKChyYW1mc19ub2RlICopIGR2cDItPnZfZGF0YSwgKHJhbWZzX25vZGUgKikg
dnAyLT52X2RhdGEpOwotICAgICAgICBpZiAoZXJyb3IpCi0gICAgICAgICAgICByZXR1cm4gZXJy
b3I7Ci0gICAgfQotICAgIC8qIFNhbWUgZGlyZWN0b3J5ID8gKi8KLSAgICBpZiAoZHZwMSA9PSBk
dnAyKSB7Ci0gICAgICAgIC8qIENoYW5nZSB0aGUgbmFtZSBvZiBleGlzdGluZyBmaWxlICovCi0g
ICAgICAgIGVycm9yID0gcmFtZnNfcmVuYW1lX25vZGUoKHJhbWZzX25vZGUgKikgdnAxLT52X2Rh
dGEsIG5hbWUyKTsKLSAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAgICAgcmV0dXJuIGVycm9y
OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8qIENyZWF0ZSBuZXcgZmlsZSBvciBkaXJlY3Rvcnkg
Ki8KLSAgICAgICAgb2xkX25wID0gKHJhbWZzX25vZGUgKikgdnAxLT52X2RhdGE7Ci0gICAgICAg
IG5wID0gcmFtZnNfYWRkX25vZGUoKHJhbWZzX25vZGUgKikgZHZwMi0+dl9kYXRhLCBuYW1lMiwg
b2xkX25wLT5ybl90eXBlKTsKLSAgICAgICAgaWYgKG5wID09IE5VTEwpCi0gICAgICAgICAgICBy
ZXR1cm4gRU5PTUVNOwotCi0gICAgICAgIGlmIChvbGRfbnAtPnJuX2J1ZikgewotICAgICAgICAg
ICAgLyogQ29weSBmaWxlIGRhdGEgKi8KLSAgICAgICAgICAgIG5wLT5ybl9idWYgPSBvbGRfbnAt
PnJuX2J1ZjsKLSAgICAgICAgICAgIG5wLT5ybl9zaXplID0gb2xkX25wLT5ybl9zaXplOwotICAg
ICAgICAgICAgbnAtPnJuX2J1ZnNpemUgPSBvbGRfbnAtPnJuX2J1ZnNpemU7Ci0gICAgICAgICAg
ICBvbGRfbnAtPnJuX2J1ZiA9IE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgLyogUmVtb3ZlIHNv
dXJjZSBmaWxlICovCi0gICAgICAgIHJhbWZzX3JlbW92ZV9ub2RlKChyYW1mc19ub2RlICopIGR2
cDEtPnZfZGF0YSwgKHJhbWZzX25vZGUgKikgdnAxLT52X2RhdGEpOwotICAgIH0KLSAgICByZXR1
cm4gMDsKKwlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAsICpvbGRfbnA7CisJaW50IGVycm9yOworCisJ
aWYgKHZwMikgeworCQkvKiBSZW1vdmUgZGVzdGluYXRpb24gZmlsZSwgZmlyc3QgKi8KKwkJZXJy
b3IgPSByYW1mc19yZW1vdmVfbm9kZSgocmFtZnNfbm9kZSAqKSBkdnAyLT52X2RhdGEsIChyYW1m
c19ub2RlICopIHZwMi0+dl9kYXRhKTsKKwkJaWYgKGVycm9yKQorCQkJcmV0dXJuIGVycm9yOwor
CX0KKwkvKiBTYW1lIGRpcmVjdG9yeSA/ICovCisJaWYgKGR2cDEgPT0gZHZwMikgeworCQkvKiBD
aGFuZ2UgdGhlIG5hbWUgb2YgZXhpc3RpbmcgZmlsZSAqLworCQllcnJvciA9IHJhbWZzX3JlbmFt
ZV9ub2RlKChyYW1mc19ub2RlICopIHZwMS0+dl9kYXRhLCBuYW1lMik7CisJCWlmIChlcnJvcikK
KwkJCXJldHVybiBlcnJvcjsKKwl9IGVsc2UgeworCQkvKiBDcmVhdGUgbmV3IGZpbGUgb3IgZGly
ZWN0b3J5ICovCisJCW9sZF9ucCA9IChyYW1mc19ub2RlICopIHZwMS0+dl9kYXRhOworCQlucCA9
IHJhbWZzX2FkZF9ub2RlKChyYW1mc19ub2RlICopIGR2cDItPnZfZGF0YSwgbmFtZTIsIG9sZF9u
cC0+cm5fdHlwZSk7CisJCWlmIChucCA9PSBOVUxMKQorCQkJcmV0dXJuIEVOT01FTTsKKworCQlp
ZiAob2xkX25wLT5ybl9idWYpIHsKKwkJCS8qIENvcHkgZmlsZSBkYXRhICovCisJCQlucC0+cm5f
YnVmID0gb2xkX25wLT5ybl9idWY7CisJCQlucC0+cm5fc2l6ZSA9IG9sZF9ucC0+cm5fc2l6ZTsK
KwkJCW5wLT5ybl9idWZzaXplID0gb2xkX25wLT5ybl9idWZzaXplOworCQkJb2xkX25wLT5ybl9i
dWYgPSBOVUxMOworCQl9CisJCS8qIFJlbW92ZSBzb3VyY2UgZmlsZSAqLworCQlyYW1mc19yZW1v
dmVfbm9kZSgocmFtZnNfbm9kZSAqKSBkdnAxLT52X2RhdGEsIChyYW1mc19ub2RlICopIHZwMS0+
dl9kYXRhKTsKKwl9CisJcmV0dXJuIDA7CiB9CiAKIC8qCkBAIC01MzYsOTcgKzUzNiw5NyBAQCBy
YW1mc19yZW5hbWUoc3RydWN0IHZub2RlICpkdnAxLCBzdHJ1Y3Qgdm5vZGUgKnZwMSwgY2hhciAq
bmFtZTEsCiBzdGF0aWMgaW50CiByYW1mc19yZWFkZGlyKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVj
dCBmaWxlICpmcCwgc3RydWN0IGRpcmVudCAqZGlyKQogewotICAgIHN0cnVjdCByYW1mc19ub2Rl
ICpucCwgKmRucDsKLSAgICBpbnQgaTsKLQotICAgIG11dGV4X2xvY2soJnJhbWZzX2xvY2spOwot
Ci0gICAgc2V0X3RpbWVzX3RvX25vdygmKCgocmFtZnNfbm9kZSAqKSB2cC0+dl9kYXRhKS0+cm5f
YXRpbWUpKTsKLQotICAgIGlmIChmcC0+Zl9vZmZzZXQgPT0gMCkgewotICAgICAgICBkaXItPmRf
dHlwZSA9IERUX0RJUjsKLSAgICAgICAgc3RybGNweSgoY2hhciAqKSAmZGlyLT5kX25hbWUsICIu
Iiwgc2l6ZW9mKGRpci0+ZF9uYW1lKSk7Ci0gICAgfSBlbHNlIGlmIChmcC0+Zl9vZmZzZXQgPT0g
MSkgewotICAgICAgICBkaXItPmRfdHlwZSA9IERUX0RJUjsKLSAgICAgICAgc3RybGNweSgoY2hh
ciAqKSAmZGlyLT5kX25hbWUsICIuLiIsIHNpemVvZihkaXItPmRfbmFtZSkpOwotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIGRucCA9IChyYW1mc19ub2RlICopIHZwLT52X2RhdGE7Ci0gICAgICAgIG5w
ID0gZG5wLT5ybl9jaGlsZDsKLSAgICAgICAgaWYgKG5wID09IE5VTEwpIHsKLSAgICAgICAgICAg
IG11dGV4X3VubG9jaygmcmFtZnNfbG9jayk7Ci0gICAgICAgICAgICByZXR1cm4gRU5PRU5UOwot
ICAgICAgICB9Ci0KLSAgICAgICAgZm9yIChpID0gMDsgaSAhPSAoZnAtPmZfb2Zmc2V0IC0gMik7
IGkrKykgewotICAgICAgICAgICAgbnAgPSBucC0+cm5fbmV4dDsKLSAgICAgICAgICAgIGlmIChu
cCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsK
LSAgICAgICAgICAgICAgICByZXR1cm4gRU5PRU5UOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgICAgIGlmIChucC0+cm5fdHlwZSA9PSBWRElSKQotICAgICAgICAgICAgZGlyLT5kX3R5
cGUgPSBEVF9ESVI7Ci0gICAgICAgIGVsc2UgaWYgKG5wLT5ybl90eXBlID09IFZMTkspCi0gICAg
ICAgICAgICBkaXItPmRfdHlwZSA9IERUX0xOSzsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
ZGlyLT5kX3R5cGUgPSBEVF9SRUc7Ci0gICAgICAgIHN0cmxjcHkoKGNoYXIgKikgJmRpci0+ZF9u
YW1lLCBucC0+cm5fbmFtZSwKLSAgICAgICAgICAgICAgICBzaXplb2YoZGlyLT5kX25hbWUpKTsK
LSAgICB9Ci0gICAgZGlyLT5kX2ZpbGVubyA9IGZwLT5mX29mZnNldDsKKwlzdHJ1Y3QgcmFtZnNf
bm9kZSAqbnAsICpkbnA7CisJaW50IGk7CisKKwltdXRleF9sb2NrKCZyYW1mc19sb2NrKTsKKwor
CXNldF90aW1lc190b19ub3coJigoKHJhbWZzX25vZGUgKikgdnAtPnZfZGF0YSktPnJuX2F0aW1l
KSk7CisKKwlpZiAoZnAtPmZfb2Zmc2V0ID09IDApIHsKKwkJZGlyLT5kX3R5cGUgPSBEVF9ESVI7
CisJCXN0cmxjcHkoKGNoYXIgKikgJmRpci0+ZF9uYW1lLCAiLiIsIHNpemVvZihkaXItPmRfbmFt
ZSkpOworCX0gZWxzZSBpZiAoZnAtPmZfb2Zmc2V0ID09IDEpIHsKKwkJZGlyLT5kX3R5cGUgPSBE
VF9ESVI7CisJCXN0cmxjcHkoKGNoYXIgKikgJmRpci0+ZF9uYW1lLCAiLi4iLCBzaXplb2YoZGly
LT5kX25hbWUpKTsKKwl9IGVsc2UgeworCQlkbnAgPSAocmFtZnNfbm9kZSAqKSB2cC0+dl9kYXRh
OworCQlucCA9IGRucC0+cm5fY2hpbGQ7CisJCWlmIChucCA9PSBOVUxMKSB7CisJCQltdXRleF91
bmxvY2soJnJhbWZzX2xvY2spOworCQkJcmV0dXJuIEVOT0VOVDsKKwkJfQorCisJCWZvciAoaSA9
IDA7IGkgIT0gKGZwLT5mX29mZnNldCAtIDIpOyBpKyspIHsKKwkJCW5wID0gbnAtPnJuX25leHQ7
CisJCQlpZiAobnAgPT0gTlVMTCkgeworCQkJCW11dGV4X3VubG9jaygmcmFtZnNfbG9jayk7CisJ
CQkJcmV0dXJuIEVOT0VOVDsKKwkJCX0KKwkJfQorCQlpZiAobnAtPnJuX3R5cGUgPT0gVkRJUikK
KwkJCWRpci0+ZF90eXBlID0gRFRfRElSOworCQllbHNlIGlmIChucC0+cm5fdHlwZSA9PSBWTE5L
KQorCQkJZGlyLT5kX3R5cGUgPSBEVF9MTks7CisJCWVsc2UKKwkJCWRpci0+ZF90eXBlID0gRFRf
UkVHOworCQlzdHJsY3B5KChjaGFyICopICZkaXItPmRfbmFtZSwgbnAtPnJuX25hbWUsCisJCQkJ
c2l6ZW9mKGRpci0+ZF9uYW1lKSk7CisJfQorCWRpci0+ZF9maWxlbm8gPSBmcC0+Zl9vZmZzZXQ7
CiAvLwlkaXItPmRfbmFtZWxlbiA9IHN0cmxlbihkaXItPmRfbmFtZSk7CiAKLSAgICBmcC0+Zl9v
ZmZzZXQrKzsKKwlmcC0+Zl9vZmZzZXQrKzsKIAotICAgIG11dGV4X3VubG9jaygmcmFtZnNfbG9j
ayk7Ci0gICAgcmV0dXJuIDA7CisJbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKKwlyZXR1cm4g
MDsKIH0KIAogaW50CiByYW1mc19pbml0KHZvaWQpCiB7Ci0gICAgcmV0dXJuIDA7CisJcmV0dXJu
IDA7CiB9CiAKIHN0YXRpYyBpbnQKIHJhbWZzX2dldGF0dHIoc3RydWN0IHZub2RlICp2bm9kZSwg
c3RydWN0IHZhdHRyICphdHRyKQogewotICAgIGF0dHItPnZhX25vZGVpZCA9IHZub2RlLT52X2lu
bzsKLSAgICBhdHRyLT52YV9zaXplID0gdm5vZGUtPnZfc2l6ZTsKKwlhdHRyLT52YV9ub2RlaWQg
PSB2bm9kZS0+dl9pbm87CisJYXR0ci0+dmFfc2l6ZSA9IHZub2RlLT52X3NpemU7CiAKLSAgICBz
dHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSAocmFtZnNfbm9kZSAqKSB2bm9kZS0+dl9kYXRhOwotICAg
IGF0dHItPnZhX3R5cGUgPSAodnR5cGUpIG5wLT5ybl90eXBlOworCXN0cnVjdCByYW1mc19ub2Rl
ICpucCA9IChyYW1mc19ub2RlICopIHZub2RlLT52X2RhdGE7CisJYXR0ci0+dmFfdHlwZSA9ICh2
dHlwZSkgbnAtPnJuX3R5cGU7CiAKLSAgICBtZW1jcHkoJihhdHRyLT52YV9hdGltZSksICYobnAt
PnJuX2F0aW1lKSwgc2l6ZW9mKHN0cnVjdCB0aW1lc3BlYykpOwotICAgIG1lbWNweSgmKGF0dHIt
PnZhX2N0aW1lKSwgJihucC0+cm5fY3RpbWUpLCBzaXplb2Yoc3RydWN0IHRpbWVzcGVjKSk7Ci0g
ICAgbWVtY3B5KCYoYXR0ci0+dmFfbXRpbWUpLCAmKG5wLT5ybl9tdGltZSksIHNpemVvZihzdHJ1
Y3QgdGltZXNwZWMpKTsKKwltZW1jcHkoJihhdHRyLT52YV9hdGltZSksICYobnAtPnJuX2F0aW1l
KSwgc2l6ZW9mKHN0cnVjdCB0aW1lc3BlYykpOworCW1lbWNweSgmKGF0dHItPnZhX2N0aW1lKSwg
JihucC0+cm5fY3RpbWUpLCBzaXplb2Yoc3RydWN0IHRpbWVzcGVjKSk7CisJbWVtY3B5KCYoYXR0
ci0+dmFfbXRpbWUpLCAmKG5wLT5ybl9tdGltZSksIHNpemVvZihzdHJ1Y3QgdGltZXNwZWMpKTsK
IAotICAgIGF0dHItPnZhX21vZGUgPSBucC0+cm5fbW9kZTsKKwlhdHRyLT52YV9tb2RlID0gbnAt
PnJuX21vZGU7CiAKLSAgICByZXR1cm4gMDsKKwlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGludAog
cmFtZnNfc2V0YXR0cihzdHJ1Y3Qgdm5vZGUgKnZub2RlLCBzdHJ1Y3QgdmF0dHIgKmF0dHIpIHsK
LSAgICBzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSAocmFtZnNfbm9kZSAqKSB2bm9kZS0+dl9kYXRh
OworCXN0cnVjdCByYW1mc19ub2RlICpucCA9IChyYW1mc19ub2RlICopIHZub2RlLT52X2RhdGE7
CiAKLSAgICBpZiAoYXR0ci0+dmFfbWFzayAmIEFUX0FUSU1FKSB7Ci0gICAgICAgIG1lbWNweSgm
KG5wLT5ybl9hdGltZSksICYoYXR0ci0+dmFfYXRpbWUpLCBzaXplb2Yoc3RydWN0IHRpbWVzcGVj
KSk7Ci0gICAgfQorCWlmIChhdHRyLT52YV9tYXNrICYgQVRfQVRJTUUpIHsKKwkJbWVtY3B5KCYo
bnAtPnJuX2F0aW1lKSwgJihhdHRyLT52YV9hdGltZSksIHNpemVvZihzdHJ1Y3QgdGltZXNwZWMp
KTsKKwl9CiAKLSAgICBpZiAoYXR0ci0+dmFfbWFzayAmIEFUX0NUSU1FKSB7Ci0gICAgICAgIG1l
bWNweSgmKG5wLT5ybl9jdGltZSksICYoYXR0ci0+dmFfY3RpbWUpLCBzaXplb2Yoc3RydWN0IHRp
bWVzcGVjKSk7Ci0gICAgfQorCWlmIChhdHRyLT52YV9tYXNrICYgQVRfQ1RJTUUpIHsKKwkJbWVt
Y3B5KCYobnAtPnJuX2N0aW1lKSwgJihhdHRyLT52YV9jdGltZSksIHNpemVvZihzdHJ1Y3QgdGlt
ZXNwZWMpKTsKKwl9CiAKLSAgICBpZiAoYXR0ci0+dmFfbWFzayAmIEFUX01USU1FKSB7Ci0gICAg
ICAgIG1lbWNweSgmKG5wLT5ybl9tdGltZSksICYoYXR0ci0+dmFfbXRpbWUpLCBzaXplb2Yoc3Ry
dWN0IHRpbWVzcGVjKSk7Ci0gICAgfQorCWlmIChhdHRyLT52YV9tYXNrICYgQVRfTVRJTUUpIHsK
KwkJbWVtY3B5KCYobnAtPnJuX210aW1lKSwgJihhdHRyLT52YV9tdGltZSksIHNpemVvZihzdHJ1
Y3QgdGltZXNwZWMpKTsKKwl9CiAKLSAgICBpZiAoYXR0ci0+dmFfbWFzayAmIEFUX01PREUpIHsK
LSAgICAgICAgbnAtPnJuX21vZGUgPSBhdHRyLT52YV9tb2RlOwotICAgIH0KKwlpZiAoYXR0ci0+
dmFfbWFzayAmIEFUX01PREUpIHsKKwkJbnAtPnJuX21vZGUgPSBhdHRyLT52YV9tb2RlOworCX0K
IAotICAgIHJldHVybiAwOworCXJldHVybiAwOwogfQogCiAjZGVmaW5lIHJhbWZzX29wZW4gICAg
ICAoKHZub3Bfb3Blbl90KXZvcF9udWxsb3ApCkBAIC02NDIsMjggKzY0MiwyOCBAQCByYW1mc19z
ZXRhdHRyKHN0cnVjdCB2bm9kZSAqdm5vZGUsIHN0cnVjdCB2YXR0ciAqYXR0cikgewogICogdm5v
ZGUgb3BlcmF0aW9ucwogICovCiBzdHJ1Y3Qgdm5vcHMgcmFtZnNfdm5vcHMgPSB7Ci0gICAgICAg
IHJhbWZzX29wZW4sICAgICAgICAgICAgIC8qIG9wZW4gKi8KLSAgICAgICAgcmFtZnNfY2xvc2Us
ICAgICAgICAgICAgLyogY2xvc2UgKi8KLSAgICAgICAgcmFtZnNfcmVhZCwgICAgICAgICAgICAg
LyogcmVhZCAqLwotICAgICAgICByYW1mc193cml0ZSwgICAgICAgICAgICAvKiB3cml0ZSAqLwot
ICAgICAgICByYW1mc19zZWVrLCAgICAgICAgICAgICAvKiBzZWVrICovCi0gICAgICAgIHJhbWZz
X2lvY3RsLCAgICAgICAgICAgIC8qIGlvY3RsICovCi0gICAgICAgIHJhbWZzX2ZzeW5jLCAgICAg
ICAgICAgIC8qIGZzeW5jICovCi0gICAgICAgIHJhbWZzX3JlYWRkaXIsICAgICAgICAgIC8qIHJl
YWRkaXIgKi8KLSAgICAgICAgcmFtZnNfbG9va3VwLCAgICAgICAgICAgLyogbG9va3VwICovCi0g
ICAgICAgIHJhbWZzX2NyZWF0ZSwgICAgICAgICAgIC8qIGNyZWF0ZSAqLwotICAgICAgICByYW1m
c19yZW1vdmUsICAgICAgICAgICAvKiByZW1vdmUgKi8KLSAgICAgICAgcmFtZnNfcmVuYW1lLCAg
ICAgICAgICAgLyogcmVtYW1lICovCi0gICAgICAgIHJhbWZzX21rZGlyLCAgICAgICAgICAgIC8q
IG1rZGlyICovCi0gICAgICAgIHJhbWZzX3JtZGlyLCAgICAgICAgICAgIC8qIHJtZGlyICovCi0g
ICAgICAgIHJhbWZzX2dldGF0dHIsICAgICAgICAgIC8qIGdldGF0dHIgKi8KLSAgICAgICAgcmFt
ZnNfc2V0YXR0ciwgICAgICAgICAgLyogc2V0YXR0ciAqLwotICAgICAgICByYW1mc19pbmFjdGl2
ZSwgICAgICAgICAvKiBpbmFjdGl2ZSAqLwotICAgICAgICByYW1mc190cnVuY2F0ZSwgICAgICAg
ICAvKiB0cnVuY2F0ZSAqLwotICAgICAgICByYW1mc19saW5rLCAgICAgICAgICAgICAvKiBsaW5r
ICovCi0gICAgICAgICh2bm9wX2NhY2hlX3QpIG51bGxwdHIsIC8qIGFyYyAqLwotICAgICAgICBy
YW1mc19mYWxsb2NhdGUsICAgICAgICAvKiBmYWxsb2NhdGUgKi8KLSAgICAgICAgcmFtZnNfcmVh
ZGxpbmssICAgICAgICAgLyogcmVhZCBsaW5rICovCi0gICAgICAgIHJhbWZzX3N5bWxpbmssICAg
ICAgICAgIC8qIHN5bWJvbGljIGxpbmsgKi8KKwkJcmFtZnNfb3BlbiwgICAgICAgICAgICAgLyog
b3BlbiAqLworCQlyYW1mc19jbG9zZSwgICAgICAgICAgICAvKiBjbG9zZSAqLworCQlyYW1mc19y
ZWFkLCAgICAgICAgICAgICAvKiByZWFkICovCisJCXJhbWZzX3dyaXRlLCAgICAgICAgICAgIC8q
IHdyaXRlICovCisJCXJhbWZzX3NlZWssICAgICAgICAgICAgIC8qIHNlZWsgKi8KKwkJcmFtZnNf
aW9jdGwsICAgICAgICAgICAgLyogaW9jdGwgKi8KKwkJcmFtZnNfZnN5bmMsICAgICAgICAgICAg
LyogZnN5bmMgKi8KKwkJcmFtZnNfcmVhZGRpciwgICAgICAgICAgLyogcmVhZGRpciAqLworCQly
YW1mc19sb29rdXAsICAgICAgICAgICAvKiBsb29rdXAgKi8KKwkJcmFtZnNfY3JlYXRlLCAgICAg
ICAgICAgLyogY3JlYXRlICovCisJCXJhbWZzX3JlbW92ZSwgICAgICAgICAgIC8qIHJlbW92ZSAq
LworCQlyYW1mc19yZW5hbWUsICAgICAgICAgICAvKiByZW1hbWUgKi8KKwkJcmFtZnNfbWtkaXIs
ICAgICAgICAgICAgLyogbWtkaXIgKi8KKwkJcmFtZnNfcm1kaXIsICAgICAgICAgICAgLyogcm1k
aXIgKi8KKwkJcmFtZnNfZ2V0YXR0ciwgICAgICAgICAgLyogZ2V0YXR0ciAqLworCQlyYW1mc19z
ZXRhdHRyLCAgICAgICAgICAvKiBzZXRhdHRyICovCisJCXJhbWZzX2luYWN0aXZlLCAgICAgICAg
IC8qIGluYWN0aXZlICovCisJCXJhbWZzX3RydW5jYXRlLCAgICAgICAgIC8qIHRydW5jYXRlICov
CisJCXJhbWZzX2xpbmssICAgICAgICAgICAgIC8qIGxpbmsgKi8KKwkJKHZub3BfY2FjaGVfdCkg
bnVsbHB0ciwgLyogYXJjICovCisJCXJhbWZzX2ZhbGxvY2F0ZSwgICAgICAgIC8qIGZhbGxvY2F0
ZSAqLworCQlyYW1mc19yZWFkbGluaywgICAgICAgICAvKiByZWFkIGxpbmsgKi8KKwkJcmFtZnNf
c3ltbGluaywgICAgICAgICAgLyogc3ltYm9saWMgbGluayAqLwogfTsKIAotLSAKMi4xOS4yCgoK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRl
dmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Fri Feb 08 14:31:37 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 08 Feb 2019 14:31:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gs7Bp-0003DX-0O; Fri, 08 Feb 2019 14:31:37 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=PCXD=QP=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gs7Bm-0003Co-UJ
 for minios-devel@lists.xen.org; Fri, 08 Feb 2019 14:31:34 +0000
X-Inumbo-ID: 3b1d57e0-2bae-11e9-9728-4b312d60a8f7
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 3b1d57e0-2bae-11e9-9728-4b312d60a8f7;
 Fri, 08 Feb 2019 14:31:33 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 835BB104DBD;
 Fri,  8 Feb 2019 15:31:32 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id GtmTFGvHhPLn; Fri,  8 Feb 2019 15:31:32 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 5ECE4104DBB
 for <minios-devel@lists.xen.org>; Fri,  8 Feb 2019 15:31:30 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Fri, 8 Feb 2019 15:31:30 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Fri, 8 Feb 2019 15:31:05 +0100
Message-ID: <20190208143108.27175-4-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190208143108.27175-1-yuri.volchkov@neclab.eu>
References: <20190208143108.27175-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 3/6] lib/ramfs: update license
 header for imported files
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogbGliL3JhbWZzL3JhbWZzLmggICAgICAgIHwgMyArKysKIGxpYi9yYW1mcy9yYW1mc192ZnNv
cHMuYyB8IDMgKysrCiBsaWIvcmFtZnMvcmFtZnNfdm5vcHMuYyAgfCAzICsrKwogMyBmaWxlcyBj
aGFuZ2VkLCA5IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9saWIvcmFtZnMvcmFtZnMuaCBi
L2xpYi9yYW1mcy9yYW1mcy5oCmluZGV4IGU0ZWViNjVmLi4wMWU0ZGEwOSAxMDA2NDQKLS0tIGEv
bGliL3JhbWZzL3JhbWZzLmgKKysrIGIvbGliL3JhbWZzL3JhbWZzLmgKQEAgLTEsNSArMSw4IEBA
CisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCiAvKgogICogQ29w
eXJpZ2h0IChjKSAyMDA2LTIwMDcsIEtvaHN1a2UgT2h0YW5pCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQ2xvdWRpdXMgU3lzdGVtcywgTHRkLgorICogQ29weXJpZ2h0IChjKSAyMDE5LCBORUMgRXVy
b3BlIEx0ZC4sIE5FQyBDb3Jwb3JhdGlvbi4KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CmRpZmYgLS1naXQgYS9saWIvcmFtZnMvcmFtZnNfdmZzb3BzLmMgYi9saWIv
cmFtZnMvcmFtZnNfdmZzb3BzLmMKaW5kZXggNTNhZTc1OGEuLjRkZjU0YzVmIDEwMDY0NAotLS0g
YS9saWIvcmFtZnMvcmFtZnNfdmZzb3BzLmMKKysrIGIvbGliL3JhbWZzL3JhbWZzX3Zmc29wcy5j
CkBAIC0xLDUgKzEsOCBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVz
ZSAqLwogLyoKICAqIENvcHlyaWdodCAoYykgMjAwNi0yMDA3LCBLb2hzdWtlIE9odGFuaQorICog
Q29weXJpZ2h0IChDKSAyMDE0IENsb3VkaXVzIFN5c3RlbXMsIEx0ZC4KKyAqIENvcHlyaWdodCAo
YykgMjAxOSwgTkVDIEV1cm9wZSBMdGQuLCBORUMgQ29ycG9yYXRpb24uCiAgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApkaWZmIC0tZ2l0IGEvbGliL3JhbWZzL3JhbWZz
X3Zub3BzLmMgYi9saWIvcmFtZnMvcmFtZnNfdm5vcHMuYwppbmRleCA4YjU4NmY4OC4uNDUzOGU5
Y2IgMTAwNjQ0Ci0tLSBhL2xpYi9yYW1mcy9yYW1mc192bm9wcy5jCisrKyBiL2xpYi9yYW1mcy9y
YW1mc192bm9wcy5jCkBAIC0xLDUgKzEsOCBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6
IEJTRC0zLUNsYXVzZSAqLwogLyoKICAqIENvcHlyaWdodCAoYykgMjAwNi0yMDA3LCBLb2hzdWtl
IE9odGFuaQorICogQ29weXJpZ2h0IChDKSAyMDE0IENsb3VkaXVzIFN5c3RlbXMsIEx0ZC4KKyAq
IENvcHlyaWdodCAoYykgMjAxOSwgTkVDIEV1cm9wZSBMdGQuLCBORUMgQ29ycG9yYXRpb24uCiAg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLSAKMi4xOS4yCgoKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVs
IG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9s
aXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Fri Feb 08 14:31:41 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 08 Feb 2019 14:31:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gs7Bt-0003EW-1s; Fri, 08 Feb 2019 14:31:41 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=PCXD=QP=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gs7Br-0003E3-66
 for minios-devel@lists.xen.org; Fri, 08 Feb 2019 14:31:39 +0000
X-Inumbo-ID: 3e40094a-2bae-11e9-80d4-eb6bf557df90
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 3e40094a-2bae-11e9-80d4-eb6bf557df90;
 Fri, 08 Feb 2019 14:31:38 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id C29F3104DBB;
 Fri,  8 Feb 2019 15:31:37 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id l4nku3Dvpyfw; Fri,  8 Feb 2019 15:31:37 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id A35A1104DBA
 for <minios-devel@lists.xen.org>; Fri,  8 Feb 2019 15:31:35 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Fri, 8 Feb 2019 15:31:35 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Fri, 8 Feb 2019 15:31:07 +0100
Message-ID: <20190208143108.27175-6-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190208143108.27175-1-yuri.volchkov@neclab.eu>
References: <20190208143108.27175-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 5/6] lib/ramfs: fix debug
 printouts
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogbGliL3JhbWZzL3JhbWZzLmggICAgICAgfCAgNCArKystCiBsaWIvcmFtZnMvcmFtZnNfdm5v
cHMuYyB8IDEwICsrKysrKy0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCA1
IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpYi9yYW1mcy9yYW1mcy5oIGIvbGliL3JhbWZz
L3JhbWZzLmgKaW5kZXggOTFmYjU3OWMuLjQzZjJmMzZiIDEwMDY0NAotLS0gYS9saWIvcmFtZnMv
cmFtZnMuaAorKysgYi9saWIvcmFtZnMvcmFtZnMuaApAQCAtMzgsNyArMzgsNyBAQAogLyogI2Rl
ZmluZSBERUJVR19SQU1GUyAxICovCiAKICNpZmRlZiBERUJVR19SQU1GUwotI2RlZmluZSBEUFJJ
TlRGKGEpCWRwcmludGYgYQorI2RlZmluZSBEUFJJTlRGKGEpCXVrX3ByX2RlYnVnIGEKICNlbHNl
CiAjZGVmaW5lIERQUklOVEYoYSkgICAgZG8ge30gd2hpbGUgKDApCiAjZW5kaWYKQEAgLTY4LDQg
KzY4LDYgQEAgc3RydWN0IHJhbWZzX25vZGUgKnJhbWZzX2FsbG9jYXRlX25vZGUoY29uc3QgY2hh
ciAqbmFtZSwgaW50IHR5cGUpOwogCiB2b2lkIHJhbWZzX2ZyZWVfbm9kZShzdHJ1Y3QgcmFtZnNf
bm9kZSAqbm9kZSk7CiAKKyNkZWZpbmUgUkFNRlNfTk9ERSh2bm9kZSkgKChzdHJ1Y3QgcmFtZnNf
bm9kZSAqKSB2bm9kZS0+dl9kYXRhKQorCiAjZW5kaWYgLyogIV9SQU1GU19IICovCmRpZmYgLS1n
aXQgYS9saWIvcmFtZnMvcmFtZnNfdm5vcHMuYyBiL2xpYi9yYW1mcy9yYW1mc192bm9wcy5jCmlu
ZGV4IDY2YWI4YTY0Li4xZmFkZWQwNSAxMDA2NDQKLS0tIGEvbGliL3JhbWZzL3JhbWZzX3Zub3Bz
LmMKKysrIGIvbGliL3JhbWZzL3JhbWZzX3Zub3BzLmMKQEAgLTMyOCw5ICszMjgsMTAgQEAgcmFt
ZnNfcm1kaXIoc3RydWN0IHZub2RlICpkdnAsIHN0cnVjdCB2bm9kZSAqdnAsIGNoYXIgKm5hbWUg
X191bnVzZWQpCiAKIC8qIFJlbW92ZSBhIGZpbGUgKi8KIHN0YXRpYyBpbnQKLXJhbWZzX3JlbW92
ZShzdHJ1Y3Qgdm5vZGUgKmR2cCwgc3RydWN0IHZub2RlICp2cCwgY2hhciAqbmFtZSBfX3VudXNl
ZCkKK3JhbWZzX3JlbW92ZShzdHJ1Y3Qgdm5vZGUgKmR2cCwgc3RydWN0IHZub2RlICp2cCwgY2hh
ciAqbmFtZSBfX21heWJlX3VudXNlZCkKIHsKLQlEUFJJTlRGKCgicmVtb3ZlICVzIGluICVzXG4i
LCBuYW1lLCBkdnAtPnZfcGF0aCkpOworCURQUklOVEYoKCJyZW1vdmUgJXMgaW4gJXNcbiIsIG5h
bWUsCisJCSBSQU1GU19OT0RFKGR2cCktPnJuX25hbWUpKTsKIAlyZXR1cm4gcmFtZnNfcmVtb3Zl
X25vZGUoZHZwLT52X2RhdGEsIHZwLT52X2RhdGEpOwogfQogCkBAIC0zNDIsNyArMzQzLDggQEAg
cmFtZnNfdHJ1bmNhdGUoc3RydWN0IHZub2RlICp2cCwgb2ZmX3QgbGVuZ3RoKQogCXZvaWQgKm5l
d19idWY7CiAJc2l6ZV90IG5ld19zaXplOwogCi0JRFBSSU5URigoInRydW5jYXRlICVzIGxlbmd0
aD0lZFxuIiwgdnAtPnZfcGF0aCwgbGVuZ3RoKSk7CisJRFBSSU5URigoInRydW5jYXRlICVzIGxl
bmd0aD0lbGxkXG4iLCBSQU1GU19OT0RFKHZwKS0+cm5fbmFtZSwKKwkJIChsb25nIGxvbmcpIGxl
bmd0aCkpOwogCW5wID0gdnAtPnZfZGF0YTsKIAogCWlmIChsZW5ndGggPT0gMCkgewpAQCAtMzg1
LDcgKzM4Nyw3IEBAIHJhbWZzX2NyZWF0ZShzdHJ1Y3Qgdm5vZGUgKmR2cCwgY2hhciAqbmFtZSwg
bW9kZV90IG1vZGUpCiAJCXJldHVybiBFTkFNRVRPT0xPTkc7CiAJfQogCi0JRFBSSU5URigoImNy
ZWF0ZSAlcyBpbiAlc1xuIiwgbmFtZSwgZHZwLT52X3BhdGgpKTsKKwlEUFJJTlRGKCgiY3JlYXRl
ICVzIGluICVzXG4iLCBuYW1lLCBSQU1GU19OT0RFKGR2cCktPnJuX25hbWUpKTsKIAlpZiAoIVNf
SVNSRUcobW9kZSkpCiAJCXJldHVybiBFSU5WQUw7CiAKLS0gCjIuMTkuMgoKCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5n
IGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVu
cHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Fri Feb 08 14:31:42 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 08 Feb 2019 14:31:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gs7Bu-0003F1-3n; Fri, 08 Feb 2019 14:31:42 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=PCXD=QP=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gs7Bs-0003EK-E1
 for minios-devel@lists.xen.org; Fri, 08 Feb 2019 14:31:40 +0000
X-Inumbo-ID: 3cb38070-2bae-11e9-a168-bfc4613df207
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 3cb38070-2bae-11e9-a168-bfc4613df207;
 Fri, 08 Feb 2019 14:31:36 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 2FD55F2051;
 Fri,  8 Feb 2019 15:31:35 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id bk3ym6PIda0d; Fri,  8 Feb 2019 15:31:35 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id EDA09F200D
 for <minios-devel@lists.xen.org>; Fri,  8 Feb 2019 15:31:32 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Fri, 8 Feb 2019 15:31:32 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Fri, 8 Feb 2019 15:31:06 +0100
Message-ID: <20190208143108.27175-5-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190208143108.27175-1-yuri.volchkov@neclab.eu>
References: <20190208143108.27175-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 4/6] lib/ramfs: adapt imported
 ramfs to Unikraft
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogbGliL0NvbmZpZy51ayAgICAgICAgICAgIHwgICAxICsKIGxpYi9NYWtlZmlsZS51ayAgICAg
ICAgICB8ICAgMSArCiBsaWIvcmFtZnMvQ29uZmlnLnVrICAgICAgfCAgIDQgKwogbGliL3JhbWZz
L01ha2VmaWxlLnVrICAgIHwgICA1ICsrCiBsaWIvcmFtZnMvZXhwb3J0c3ltcy51ayAgfCAgIDEg
KwogbGliL3JhbWZzL3JhbWZzLmggICAgICAgIHwgICA0ICstCiBsaWIvcmFtZnMvcmFtZnNfdmZz
b3BzLmMgfCAgMjggKysrKy0tLQogbGliL3JhbWZzL3JhbWZzX3Zub3BzLmMgIHwgMTcxICsrKysr
KysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLQogOCBmaWxlcyBjaGFuZ2VkLCAxMjQg
aW5zZXJ0aW9ucygrKSwgOTEgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3Jh
bWZzL0NvbmZpZy51awogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9yYW1mcy9NYWtlZmlsZS51awog
Y3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9yYW1mcy9leHBvcnRzeW1zLnVrCgpkaWZmIC0tZ2l0IGEv
bGliL0NvbmZpZy51ayBiL2xpYi9Db25maWcudWsKaW5kZXggNWNkNzU4NTguLmQwMzIzNWE3IDEw
MDY0NAotLS0gYS9saWIvQ29uZmlnLnVrCisrKyBiL2xpYi9Db25maWcudWsKQEAgLTM0LDYgKzM0
LDcgQEAgc291cmNlICJsaWIvdWtzY2hlZC9Db25maWcudWsiCiBzb3VyY2UgImxpYi91a3NjaGVk
Y29vcC9Db25maWcudWsiCiBzb3VyY2UgImxpYi9mZHQvQ29uZmlnLnVrIgogc291cmNlICJsaWIv
dmZzY29yZS9Db25maWcudWsiCitzb3VyY2UgImxpYi9yYW1mcy9Db25maWcudWsiCiBzb3VyY2Ug
ImxpYi91a2xvY2svQ29uZmlnLnVrIgogc291cmNlICJsaWIvdWttcGkvQ29uZmlnLnVrIgogc291
cmNlICJsaWIvdWtzd3JhbmQvQ29uZmlnLnVrIgpkaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlLnVr
IGIvbGliL01ha2VmaWxlLnVrCmluZGV4IDRjMmNjODdkLi5kNjZjN2VlOSAxMDA2NDQKLS0tIGEv
bGliL01ha2VmaWxlLnVrCisrKyBiL2xpYi9NYWtlZmlsZS51awpAQCAtMTYsNiArMTYsNyBAQCAk
KGV2YWwgJChjYWxsIF9pbXBvcnRfbGliLCQoQ09ORklHX1VLX0JBU0UpL2xpYi91a3NjaGVkKSkK
ICQoZXZhbCAkKGNhbGwgX2ltcG9ydF9saWIsJChDT05GSUdfVUtfQkFTRSkvbGliL3Vrc2NoZWRj
b29wKSkKICQoZXZhbCAkKGNhbGwgX2ltcG9ydF9saWIsJChDT05GSUdfVUtfQkFTRSkvbGliL2Zk
dCkpCiAkKGV2YWwgJChjYWxsIF9pbXBvcnRfbGliLCQoQ09ORklHX1VLX0JBU0UpL2xpYi92ZnNj
b3JlKSkKKyQoZXZhbCAkKGNhbGwgX2ltcG9ydF9saWIsJChDT05GSUdfVUtfQkFTRSkvbGliL3Jh
bWZzKSkKICQoZXZhbCAkKGNhbGwgX2ltcG9ydF9saWIsJChDT05GSUdfVUtfQkFTRSkvbGliL3Vr
bG9jaykpCiAkKGV2YWwgJChjYWxsIF9pbXBvcnRfbGliLCQoQ09ORklHX1VLX0JBU0UpL2xpYi91
a21waSkpCiAkKGV2YWwgJChjYWxsIF9pbXBvcnRfbGliLCQoQ09ORklHX1VLX0JBU0UpL2xpYi91
a2J1cykpCmRpZmYgLS1naXQgYS9saWIvcmFtZnMvQ29uZmlnLnVrIGIvbGliL3JhbWZzL0NvbmZp
Zy51awpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uNTJlNDM4OGMKLS0tIC9k
ZXYvbnVsbAorKysgYi9saWIvcmFtZnMvQ29uZmlnLnVrCkBAIC0wLDAgKzEsNCBAQAorY29uZmln
IExJQlJBTUZTCisJYm9vbCAicmFtZnM6IHNpbXBsZSBSQU0gZmlsZSBzeXN0ZW0iCisJZGVmYXVs
dCBuCisJZGVwZW5kcyBvbiBMSUJWRlNDT1JFCmRpZmYgLS1naXQgYS9saWIvcmFtZnMvTWFrZWZp
bGUudWsgYi9saWIvcmFtZnMvTWFrZWZpbGUudWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAuLmNkNmRhZmQ1Ci0tLSAvZGV2L251bGwKKysrIGIvbGliL3JhbWZzL01ha2VmaWxl
LnVrCkBAIC0wLDAgKzEsNSBAQAorJChldmFsICQoY2FsbCBhZGRsaWJfcyxsaWJyYW1mcywkKENP
TkZJR19MSUJSQU1GUykpKQorCitMSUJSQU1GU19TUkNTLXkgKz0gJChMSUJSQU1GU19CQVNFKS9y
YW1mc192ZnNvcHMuYworTElCUkFNRlNfU1JDUy15ICs9ICQoTElCUkFNRlNfQkFTRSkvcmFtZnNf
dm5vcHMuYworTElCUkFNRlNfQ0ZMQUdTICs9IC1EREVCVUdfUkFNRlMgLURVS19ERUJVRwpkaWZm
IC0tZ2l0IGEvbGliL3JhbWZzL2V4cG9ydHN5bXMudWsgYi9saWIvcmFtZnMvZXhwb3J0c3ltcy51
awpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uYzg2YzNmMzUKLS0tIC9kZXYv
bnVsbAorKysgYi9saWIvcmFtZnMvZXhwb3J0c3ltcy51awpAQCAtMCwwICsxIEBACitub25lClwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbGliL3JhbWZzL3JhbWZzLmgg
Yi9saWIvcmFtZnMvcmFtZnMuaAppbmRleCAwMWU0ZGEwOS4uOTFmYjU3OWMgMTAwNjQ0Ci0tLSBh
L2xpYi9yYW1mcy9yYW1mcy5oCisrKyBiL2xpYi9yYW1mcy9yYW1mcy5oCkBAIC0zMyw3ICszMyw3
IEBACiAjaWZuZGVmIF9SQU1GU19ICiAjZGVmaW5lIF9SQU1GU19ICiAKLSNpbmNsdWRlIDxvc3Yv
cHJleC5oPgorI2luY2x1ZGUgPHZmc2NvcmUvcHJleC5oPgogCiAvKiAjZGVmaW5lIERFQlVHX1JB
TUZTIDEgKi8KIApAQCAtNjEsNyArNjEsNyBAQCBzdHJ1Y3QgcmFtZnNfbm9kZSB7CiAJc3RydWN0
IHRpbWVzcGVjIHJuX2F0aW1lOwogCXN0cnVjdCB0aW1lc3BlYyBybl9tdGltZTsKIAlpbnQgcm5f
bW9kZTsKLQlib29sIHJuX293bnNfYnVmOworCWludCBybl9vd25zX2J1ZjsKIH07CiAKIHN0cnVj
dCByYW1mc19ub2RlICpyYW1mc19hbGxvY2F0ZV9ub2RlKGNvbnN0IGNoYXIgKm5hbWUsIGludCB0
eXBlKTsKZGlmZiAtLWdpdCBhL2xpYi9yYW1mcy9yYW1mc192ZnNvcHMuYyBiL2xpYi9yYW1mcy9y
YW1mc192ZnNvcHMuYwppbmRleCA0ZGY1NGM1Zi4uM2I1YzA3NWMgMTAwNjQ0Ci0tLSBhL2xpYi9y
YW1mcy9yYW1mc192ZnNvcHMuYworKysgYi9saWIvcmFtZnMvcmFtZnNfdmZzb3BzLmMKQEAgLTMy
LDkgKzMyLDEwIEBACiAKICNpbmNsdWRlIDxlcnJuby5oPgogCi0jaW5jbHVkZSA8b3N2L3Zub2Rl
Lmg+Ci0jaW5jbHVkZSA8b3N2L21vdW50Lmg+Ci0jaW5jbHVkZSA8b3N2L2RlbnRyeS5oPgorI2Rl
ZmluZSBfQlNEX1NPVVJDRQorI2luY2x1ZGUgPHZmc2NvcmUvdm5vZGUuaD4KKyNpbmNsdWRlIDx2
ZnNjb3JlL21vdW50Lmg+CisjaW5jbHVkZSA8dmZzY29yZS9kZW50cnkuaD4KIAogI2luY2x1ZGUg
InJhbWZzLmgiCiAKQEAgLTQ0LDkgKzQ1LDkgQEAgc3RhdGljIGludCByYW1mc19tb3VudChzdHJ1
Y3QgbW91bnQgKm1wLCBjb25zdCBjaGFyICpkZXYsIGludCBmbGFncywgY29uc3Qgdm9pZAogCiBz
dGF0aWMgaW50IHJhbWZzX3VubW91bnQoc3RydWN0IG1vdW50ICptcCwgaW50IGZsYWdzKTsKIAot
I2RlZmluZSByYW1mc19zeW5jICAgICgodmZzb3Bfc3luY190KXZmc19udWxsb3ApCi0jZGVmaW5l
IHJhbWZzX3ZnZXQgICAgKCh2ZnNvcF92Z2V0X3QpdmZzX251bGxvcCkKLSNkZWZpbmUgcmFtZnNf
c3RhdGZzICAgICgodmZzb3Bfc3RhdGZzX3QpdmZzX251bGxvcCkKKyNkZWZpbmUgcmFtZnNfc3lu
YyAgICAoKHZmc29wX3N5bmNfdCl2ZnNjb3JlX251bGxvcCkKKyNkZWZpbmUgcmFtZnNfdmdldCAg
ICAoKHZmc29wX3ZnZXRfdCl2ZnNjb3JlX251bGxvcCkKKyNkZWZpbmUgcmFtZnNfc3RhdGZzICAg
ICgodmZzb3Bfc3RhdGZzX3QpdmZzY29yZV9udWxsb3ApCiAKIC8qCiAgKiBGaWxlIHN5c3RlbSBv
cGVyYXRpb25zCkBAIC02MCwxMSArNjEsMjAgQEAgc3RydWN0IHZmc29wcyByYW1mc192ZnNvcHMg
PSB7CiAJCSZyYW1mc192bm9wcywgICAgICAvKiB2bm9wcyAqLwogfTsKIAorc3RhdGljIHN0cnVj
dCB2ZnNjb3JlX2ZzX3R5cGUgZnNfcmFtZnMgPSB7CisJLnZzX25hbWUgPSAicmFtZnMiLAorCS52
c19pbml0ID0gTlVMTCwKKwkudnNfb3AgPSAmcmFtZnNfdmZzb3BzLAorfTsKKworVUtfRlNfUkVH
SVNURVIoZnNfcmFtZnMpOworCiAvKgogICogTW91bnQgYSBmaWxlIHN5c3RlbS4KICAqLwogc3Rh
dGljIGludAotcmFtZnNfbW91bnQoc3RydWN0IG1vdW50ICptcCwgY29uc3QgY2hhciAqZGV2LCBp
bnQgZmxhZ3MsIGNvbnN0IHZvaWQgKmRhdGEpCityYW1mc19tb3VudChzdHJ1Y3QgbW91bnQgKm1w
LCBjb25zdCBjaGFyICpkZXYgX191bnVzZWQsCisJICAgIGludCBmbGFncyBfX3VudXNlZCwgY29u
c3Qgdm9pZCAqZGF0YSBfX3VudXNlZCkKIHsKIAlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnA7CiAKQEAg
LTg2LDggKzk2LDggQEAgcmFtZnNfbW91bnQoc3RydWN0IG1vdW50ICptcCwgY29uc3QgY2hhciAq
ZGV2LCBpbnQgZmxhZ3MsIGNvbnN0IHZvaWQgKmRhdGEpCiAgKiAgICAgICBkaXJlY3Rvcmllcywg
YW5kIGl0IHJlcXVpcmVzIG1vcmUgd29yay4uLgogICovCiBzdGF0aWMgaW50Ci1yYW1mc191bm1v
dW50KHN0cnVjdCBtb3VudCAqbXAsIGludCBmbGFncykKK3JhbWZzX3VubW91bnQoc3RydWN0IG1v
dW50ICptcCwgaW50IGZsYWdzIF9fdW51c2VkKQogewotCXJlbGVhc2VfbXBfZGVudHJpZXMobXAp
OworCXZmc2NvcmVfcmVsZWFzZV9tcF9kZW50cmllcyhtcCk7CiAJcmV0dXJuIDA7CiB9CmRpZmYg
LS1naXQgYS9saWIvcmFtZnMvcmFtZnNfdm5vcHMuYyBiL2xpYi9yYW1mcy9yYW1mc192bm9wcy5j
CmluZGV4IDQ1MzhlOWNiLi42NmFiOGE2NCAxMDA2NDQKLS0tIGEvbGliL3JhbWZzL3JhbWZzX3Zu
b3BzLmMKKysrIGIvbGliL3JhbWZzL3JhbWZzX3Zub3BzLmMKQEAgLTMzLDcgKzMzLDkgQEAKIC8q
CiAgKiBybWFmc192bm9wcy5jIC0gdm5vZGUgb3BlcmF0aW9ucyBmb3IgUkFNIGZpbGUgc3lzdGVt
LgogICovCisjZGVmaW5lIF9HTlVfU09VUkNFCiAKKyNpbmNsdWRlIDx1ay9lc3NlbnRpYWxzLmg+
CiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KICNpbmNsdWRlIDxkaXJlbnQuaD4KICNpbmNsdWRlIDxz
eXMvcGFyYW0uaD4KQEAgLTQxLDI0ICs0MywyOSBAQAogI2luY2x1ZGUgPGVycm5vLmg+CiAjaW5j
bHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+Ci0jaW5jbHVkZSA8ZmNudGwuaD4K
IAotI2luY2x1ZGUgPG9zdi9wcmV4Lmg+Ci0jaW5jbHVkZSA8b3N2L3Zub2RlLmg+Ci0jaW5jbHVk
ZSA8b3N2L2ZpbGUuaD4KLSNpbmNsdWRlIDxvc3YvbW91bnQuaD4KLSNpbmNsdWRlIDxvc3Yvdm5v
ZGVfYXR0ci5oPgorI2luY2x1ZGUgPHZmc2NvcmUvcHJleC5oPgorI2luY2x1ZGUgPHZmc2NvcmUv
dm5vZGUuaD4KKyNpbmNsdWRlIDx2ZnNjb3JlL21vdW50Lmg+CisjaW5jbHVkZSA8dmZzY29yZS91
aW8uaD4KKyNpbmNsdWRlIDx2ZnNjb3JlL2ZpbGUuaD4KIAogI2luY2x1ZGUgInJhbWZzLmgiCisj
aW5jbHVkZSA8ZGlyZW50Lmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDx2ZnNjb3Jl
L2ZzLmg+CiAKLXN0YXRpYyBtdXRleF90IHJhbWZzX2xvY2sgPSBNVVRFWF9JTklUSUFMSVpFUjsK
K3N0YXRpYyBzdHJ1Y3QgdWtfbXV0ZXggcmFtZnNfbG9jayA9IFVLX01VVEVYX0lOSVRJQUxJWkVS
KHJhbWZzX2xvY2spOwogc3RhdGljIHVpbnQ2NF90IGlub2RlX2NvdW50ID0gMTsgLyogaW5vZGUg
MCBpcyByZXNlcnZlZCB0byByb290ICovCiAKIHN0YXRpYyB2b2lkCi1zZXRfdGltZXNfdG9fbm93
KHN0cnVjdCB0aW1lc3BlYyAqdGltZTEsIHN0cnVjdCB0aW1lc3BlYyAqdGltZTIgPSBudWxscHRy
LCBzdHJ1Y3QgdGltZXNwZWMgKnRpbWUzID0gbnVsbHB0cikKK3NldF90aW1lc190b19ub3coc3Ry
dWN0IHRpbWVzcGVjICp0aW1lMSwgc3RydWN0IHRpbWVzcGVjICp0aW1lMiwKKwkJIHN0cnVjdCB0
aW1lc3BlYyAqdGltZTMpCiB7Ci0Jc3RydWN0IHRpbWVzcGVjIG5vdzsKLQljbG9ja19nZXR0aW1l
KENMT0NLX1JFQUxUSU1FLCAmbm93KTsKKwlzdHJ1Y3QgdGltZXNwZWMgbm93ID0gezAsIDB9Owor
CisJLyogVE9ETzogaW1wbGVtZW50IHRoZSByZWFsIGNsb2NrX2dldHRpbWUgKi8KKwkvKiBjbG9j
a19nZXR0aW1lKENMT0NLX1JFQUxUSU1FLCAmbm93KTsgKi8KIAlpZiAodGltZTEpIHsKIAkJbWVt
Y3B5KHRpbWUxLCAmbm93LCBzaXplb2Yoc3RydWN0IHRpbWVzcGVjKSk7CiAJfQpAQCAtNzUsNyAr
ODIsNyBAQCByYW1mc19hbGxvY2F0ZV9ub2RlKGNvbnN0IGNoYXIgKm5hbWUsIGludCB0eXBlKQog
ewogCXN0cnVjdCByYW1mc19ub2RlICpucDsKIAotCW5wID0gKHJhbWZzX25vZGUgKikgbWFsbG9j
KHNpemVvZihzdHJ1Y3QgcmFtZnNfbm9kZSkpOworCW5wID0gbWFsbG9jKHNpemVvZihzdHJ1Y3Qg
cmFtZnNfbm9kZSkpOwogCWlmIChucCA9PSBOVUxMKQogCQlyZXR1cm4gTlVMTDsKIAltZW1zZXQo
bnAsIDAsIHNpemVvZihzdHJ1Y3QgcmFtZnNfbm9kZSkpOwpAQCAtOTcsNyArMTA0LDcgQEAgcmFt
ZnNfYWxsb2NhdGVfbm9kZShjb25zdCBjaGFyICpuYW1lLCBpbnQgdHlwZSkKIAkJbnAtPnJuX21v
ZGUgPSBTX0lGUkVHfDA3Nzc7CiAKIAlzZXRfdGltZXNfdG9fbm93KCYobnAtPnJuX2N0aW1lKSwg
JihucC0+cm5fYXRpbWUpLCAmKG5wLT5ybl9tdGltZSkpOwotCW5wLT5ybl9vd25zX2J1ZiA9IHRy
dWU7CisJbnAtPnJuX293bnNfYnVmID0gMTsKIAogCXJldHVybiBucDsKIH0KQEAgLTEyMSw3ICsx
MjgsNyBAQCByYW1mc19hZGRfbm9kZShzdHJ1Y3QgcmFtZnNfbm9kZSAqZG5wLCBjaGFyICpuYW1l
LCBpbnQgdHlwZSkKIAlpZiAobnAgPT0gTlVMTCkKIAkJcmV0dXJuIE5VTEw7CiAKLQltdXRleF9s
b2NrKCZyYW1mc19sb2NrKTsKKwl1a19tdXRleF9sb2NrKCZyYW1mc19sb2NrKTsKIAogCS8qIExp
bmsgdG8gdGhlIGRpcmVjdG9yeSBsaXN0ICovCiAJaWYgKGRucC0+cm5fY2hpbGQgPT0gTlVMTCkg
ewpAQCAtMTMzLDkgKzE0MCw5IEBAIHJhbWZzX2FkZF9ub2RlKHN0cnVjdCByYW1mc19ub2RlICpk
bnAsIGNoYXIgKm5hbWUsIGludCB0eXBlKQogCQlwcmV2LT5ybl9uZXh0ID0gbnA7CiAJfQogCi0J
c2V0X3RpbWVzX3RvX25vdygmKGRucC0+cm5fbXRpbWUpLCAmKGRucC0+cm5fY3RpbWUpKTsKKwlz
ZXRfdGltZXNfdG9fbm93KCYoZG5wLT5ybl9tdGltZSksICYoZG5wLT5ybl9jdGltZSksIE5VTEwp
OwogCi0JbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKKwl1a19tdXRleF91bmxvY2soJnJhbWZz
X2xvY2spOwogCXJldHVybiBucDsKIH0KIApAQCAtMTQ3LDcgKzE1NCw3IEBAIHJhbWZzX3JlbW92
ZV9ub2RlKHN0cnVjdCByYW1mc19ub2RlICpkbnAsIHN0cnVjdCByYW1mc19ub2RlICpucCkKIAlp
ZiAoZG5wLT5ybl9jaGlsZCA9PSBOVUxMKQogCQlyZXR1cm4gRUJVU1k7CiAKLQltdXRleF9sb2Nr
KCZyYW1mc19sb2NrKTsKKwl1a19tdXRleF9sb2NrKCZyYW1mc19sb2NrKTsKIAogCS8qIFVubGlu
ayBmcm9tIHRoZSBkaXJlY3RvcnkgbGlzdCAqLwogCWlmIChkbnAtPnJuX2NoaWxkID09IG5wKSB7
CkBAIC0xNTYsNyArMTYzLDcgQEAgcmFtZnNfcmVtb3ZlX25vZGUoc3RydWN0IHJhbWZzX25vZGUg
KmRucCwgc3RydWN0IHJhbWZzX25vZGUgKm5wKQogCQlmb3IgKHByZXYgPSBkbnAtPnJuX2NoaWxk
OyBwcmV2LT5ybl9uZXh0ICE9IG5wOwogCQkJIHByZXYgPSBwcmV2LT5ybl9uZXh0KSB7CiAJCQlp
ZiAocHJldi0+cm5fbmV4dCA9PSBOVUxMKSB7Ci0JCQkJbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2Nr
KTsKKwkJCQl1a19tdXRleF91bmxvY2soJnJhbWZzX2xvY2spOwogCQkJCXJldHVybiBFTk9FTlQ7
CiAJCQl9CiAJCX0KQEAgLTE2NCw5ICsxNzEsOSBAQCByYW1mc19yZW1vdmVfbm9kZShzdHJ1Y3Qg
cmFtZnNfbm9kZSAqZG5wLCBzdHJ1Y3QgcmFtZnNfbm9kZSAqbnApCiAJfQogCXJhbWZzX2ZyZWVf
bm9kZShucCk7CiAKLQlzZXRfdGltZXNfdG9fbm93KCYoZG5wLT5ybl9tdGltZSksICYoZG5wLT5y
bl9jdGltZSkpOworCXNldF90aW1lc190b19ub3coJihkbnAtPnJuX210aW1lKSwgJihkbnAtPnJu
X2N0aW1lKSwgTlVMTCk7CiAKLQltdXRleF91bmxvY2soJnJhbWZzX2xvY2spOworCXVrX211dGV4
X3VubG9jaygmcmFtZnNfbG9jayk7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTE5Myw3ICsyMDAsNyBA
QCByYW1mc19yZW5hbWVfbm9kZShzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAsIGNoYXIgKm5hbWUpCiAJ
CW5wLT5ybl9uYW1lID0gdG1wOwogCX0KIAlucC0+cm5fbmFtZWxlbiA9IGxlbjsKLQlzZXRfdGlt
ZXNfdG9fbm93KCYobnAtPnJuX2N0aW1lKSk7CisJc2V0X3RpbWVzX3RvX25vdygmKG5wLT5ybl9j
dGltZSksIE5VTEwsIE5VTEwpOwogCXJldHVybiAwOwogfQogCkBAIC0yMTAsMTAgKzIxNywxMCBA
QCByYW1mc19sb29rdXAoc3RydWN0IHZub2RlICpkdnAsIGNoYXIgKm5hbWUsIHN0cnVjdCB2bm9k
ZSAqKnZwcCkKIAlpZiAoKm5hbWUgPT0gJ1wwJykKIAkJcmV0dXJuIEVOT0VOVDsKIAotCW11dGV4
X2xvY2soJnJhbWZzX2xvY2spOworCXVrX211dGV4X2xvY2soJnJhbWZzX2xvY2spOwogCiAJbGVu
ID0gc3RybGVuKG5hbWUpOwotCWRucCA9IChyYW1mc19ub2RlICopIGR2cC0+dl9kYXRhOworCWRu
cCA9IGR2cC0+dl9kYXRhOwogCWZvdW5kID0gMDsKIAlmb3IgKG5wID0gZG5wLT5ybl9jaGlsZDsg
bnAgIT0gTlVMTDsgbnAgPSBucC0+cm5fbmV4dCkgewogCQlpZiAobnAtPnJuX25hbWVsZW4gPT0g
bGVuICYmCkBAIC0yMjMsMTcgKzIzMCwxNyBAQCByYW1mc19sb29rdXAoc3RydWN0IHZub2RlICpk
dnAsIGNoYXIgKm5hbWUsIHN0cnVjdCB2bm9kZSAqKnZwcCkKIAkJfQogCX0KIAlpZiAoZm91bmQg
PT0gMCkgewotCQltdXRleF91bmxvY2soJnJhbWZzX2xvY2spOworCQl1a19tdXRleF91bmxvY2so
JnJhbWZzX2xvY2spOwogCQlyZXR1cm4gRU5PRU5UOwogCX0KLQlpZiAodmdldChkdnAtPnZfbW91
bnQsIGlub2RlX2NvdW50KyssICZ2cCkpIHsKKwlpZiAodmZzY29yZV92Z2V0KGR2cC0+dl9tb3Vu
dCwgaW5vZGVfY291bnQrKywgJnZwKSkgewogCQkvKiBmb3VuZCBpbiBjYWNoZSAqLwogCQkqdnBw
ID0gdnA7Ci0JCW11dGV4X3VubG9jaygmcmFtZnNfbG9jayk7CisJCXVrX211dGV4X3VubG9jaygm
cmFtZnNfbG9jayk7CiAJCXJldHVybiAwOwogCX0KIAlpZiAoIXZwKSB7Ci0JCW11dGV4X3VubG9j
aygmcmFtZnNfbG9jayk7CisJCXVrX211dGV4X3VubG9jaygmcmFtZnNfbG9jayk7CiAJCXJldHVy
biBFTk9NRU07CiAJfQogCXZwLT52X2RhdGEgPSBucDsKQEAgLTI0MSw3ICsyNDgsNyBAQCByYW1m
c19sb29rdXAoc3RydWN0IHZub2RlICpkdnAsIGNoYXIgKm5hbWUsIHN0cnVjdCB2bm9kZSAqKnZw
cCkKIAl2cC0+dl90eXBlID0gbnAtPnJuX3R5cGU7CiAJdnAtPnZfc2l6ZSA9IG5wLT5ybl9zaXpl
OwogCi0JbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKKwl1a19tdXRleF91bmxvY2soJnJhbWZz
X2xvY2spOwogCiAJKnZwcCA9IHZwOwogCkBAIC0yNjEsNyArMjY4LDcgQEAgcmFtZnNfbWtkaXIo
c3RydWN0IHZub2RlICpkdnAsIGNoYXIgKm5hbWUsIG1vZGVfdCBtb2RlKQogCWlmICghU19JU0RJ
Uihtb2RlKSkKIAkJcmV0dXJuIEVJTlZBTDsKIAotCW5wID0gKHJhbWZzX25vZGUgKikgcmFtZnNf
YWRkX25vZGUoKHJhbWZzX25vZGUgKikgZHZwLT52X2RhdGEsIG5hbWUsIFZESVIpOworCW5wID0g
cmFtZnNfYWRkX25vZGUoZHZwLT52X2RhdGEsIG5hbWUsIFZESVIpOwogCWlmIChucCA9PSBOVUxM
KQogCQlyZXR1cm4gRU5PTUVNOwogCW5wLT5ybl9zaXplID0gMDsKQEAgLTI3NSw3ICsyODIsNyBA
QCByYW1mc19zeW1saW5rKHN0cnVjdCB2bm9kZSAqZHZwLCBjaGFyICpuYW1lLCBjaGFyICpsaW5r
KQogCWlmIChzdHJsZW4obmFtZSkgPiBOQU1FX01BWCkgewogCQlyZXR1cm4gRU5BTUVUT09MT05H
OwogCX0KLQlhdXRvIG5wID0gcmFtZnNfYWRkX25vZGUoKHJhbWZzX25vZGUgKikgZHZwLT52X2Rh
dGEsIG5hbWUsIFZMTkspOworCXN0cnVjdCByYW1mc19ub2RlICpucCA9IHJhbWZzX2FkZF9ub2Rl
KGR2cC0+dl9kYXRhLCBuYW1lLCBWTE5LKTsKIAlpZiAobnAgPT0gTlVMTCkKIAkJcmV0dXJuIEVO
T01FTTsKIAkvLyBTYXZlIHRoZSBsaW5rIHRhcmdldCB3aXRob3V0IHRoZSBmaW5hbCBudWxsLCBh
cyByZWFkbGluaygpIHdhbnRzIGl0LgpAQCAtMjg2LDEwICsyOTMsMTAgQEAgcmFtZnNfc3ltbGlu
ayhzdHJ1Y3Qgdm5vZGUgKmR2cCwgY2hhciAqbmFtZSwgY2hhciAqbGluaykKIAlyZXR1cm4gMDsK
IH0KIAotc3RhdGljIGludAorc3RhdGljIHNzaXplX3QKIHJhbWZzX3JlYWRsaW5rKHN0cnVjdCB2
bm9kZSAqdnAsIHN0cnVjdCB1aW8gKnVpbykKIHsKLQlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSAo
cmFtZnNfbm9kZSAqKSB2cC0+dl9kYXRhOworCXN0cnVjdCByYW1mc19ub2RlICpucCA9IHZwLT52
X2RhdGE7CiAJc2l6ZV90IGxlbjsKIAogCWlmICh2cC0+dl90eXBlICE9IFZMTkspIHsKQEAgLTMw
OCwyMyArMzE1LDIzIEBAIHJhbWZzX3JlYWRsaW5rKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCB1
aW8gKnVpbykKIAllbHNlCiAJCWxlbiA9IHVpby0+dWlvX3Jlc2lkOwogCi0Jc2V0X3RpbWVzX3Rv
X25vdyggJihucC0+cm5fYXRpbWUpKTsKLQlyZXR1cm4gdWlvbW92ZShucC0+cm5fYnVmICsgdWlv
LT51aW9fb2Zmc2V0LCBsZW4sIHVpbyk7CisJc2V0X3RpbWVzX3RvX25vdygmKG5wLT5ybl9hdGlt
ZSksIE5VTEwsIE5VTEwpOworCXJldHVybiB2ZnNjb3JlX3Vpb21vdmUobnAtPnJuX2J1ZiArIHVp
by0+dWlvX29mZnNldCwgbGVuLCB1aW8pOwogfQogCiAvKiBSZW1vdmUgYSBkaXJlY3RvcnkgKi8K
IHN0YXRpYyBpbnQKLXJhbWZzX3JtZGlyKHN0cnVjdCB2bm9kZSAqZHZwLCBzdHJ1Y3Qgdm5vZGUg
KnZwLCBjaGFyICpuYW1lKQorcmFtZnNfcm1kaXIoc3RydWN0IHZub2RlICpkdnAsIHN0cnVjdCB2
bm9kZSAqdnAsIGNoYXIgKm5hbWUgX191bnVzZWQpCiB7Ci0JcmV0dXJuIHJhbWZzX3JlbW92ZV9u
b2RlKChyYW1mc19ub2RlICopIGR2cC0+dl9kYXRhLCAocmFtZnNfbm9kZSAqKSB2cC0+dl9kYXRh
KTsKKwlyZXR1cm4gcmFtZnNfcmVtb3ZlX25vZGUoZHZwLT52X2RhdGEsIHZwLT52X2RhdGEpOwog
fQogCiAvKiBSZW1vdmUgYSBmaWxlICovCiBzdGF0aWMgaW50Ci1yYW1mc19yZW1vdmUoc3RydWN0
IHZub2RlICpkdnAsIHN0cnVjdCB2bm9kZSAqdnAsIGNoYXIgKm5hbWUpCityYW1mc19yZW1vdmUo
c3RydWN0IHZub2RlICpkdnAsIHN0cnVjdCB2bm9kZSAqdnAsIGNoYXIgKm5hbWUgX191bnVzZWQp
CiB7CiAJRFBSSU5URigoInJlbW92ZSAlcyBpbiAlc1xuIiwgbmFtZSwgZHZwLT52X3BhdGgpKTsK
LQlyZXR1cm4gcmFtZnNfcmVtb3ZlX25vZGUoKHJhbWZzX25vZGUgKikgZHZwLT52X2RhdGEsIChy
YW1mc19ub2RlICopIHZwLT52X2RhdGEpOworCXJldHVybiByYW1mc19yZW1vdmVfbm9kZShkdnAt
PnZfZGF0YSwgdnAtPnZfZGF0YSk7CiB9CiAKIC8qIFRydW5jYXRlIGZpbGUgKi8KQEAgLTMzNiw3
ICszNDMsNyBAQCByYW1mc190cnVuY2F0ZShzdHJ1Y3Qgdm5vZGUgKnZwLCBvZmZfdCBsZW5ndGgp
CiAJc2l6ZV90IG5ld19zaXplOwogCiAJRFBSSU5URigoInRydW5jYXRlICVzIGxlbmd0aD0lZFxu
IiwgdnAtPnZfcGF0aCwgbGVuZ3RoKSk7Ci0JbnAgPSAocmFtZnNfbm9kZSAqKSB2cC0+dl9kYXRh
OworCW5wID0gdnAtPnZfZGF0YTsKIAogCWlmIChsZW5ndGggPT0gMCkgewogCQlpZiAobnAtPnJu
X2J1ZiAhPSBOVUxMKSB7CkBAIC0zNDUsNyArMzUyLDcgQEAgcmFtZnNfdHJ1bmNhdGUoc3RydWN0
IHZub2RlICp2cCwgb2ZmX3QgbGVuZ3RoKQogCQkJbnAtPnJuX2J1ZiA9IE5VTEw7CiAJCQlucC0+
cm5fYnVmc2l6ZSA9IDA7CiAJCX0KLQl9IGVsc2UgaWYgKHNpemVfdChsZW5ndGgpID4gbnAtPnJu
X2J1ZnNpemUpIHsKKwl9IGVsc2UgaWYgKChzaXplX3QpIGxlbmd0aCA+IG5wLT5ybl9idWZzaXpl
KSB7CiAJCS8vIFhYWDogdGhpcyBjb3VsZCB1c2UgYSBwYWdlIGxldmVsIGFsbG9jYXRvcgogCQlu
ZXdfc2l6ZSA9IHJvdW5kX3BhZ2UobGVuZ3RoKTsKIAkJbmV3X2J1ZiA9IG1hbGxvYyhuZXdfc2l6
ZSk7CkBAIC0zNTgsMTEgKzM2NSwxMSBAQCByYW1mc190cnVuY2F0ZShzdHJ1Y3Qgdm5vZGUgKnZw
LCBvZmZfdCBsZW5ndGgpCiAJCX0KIAkJbnAtPnJuX2J1ZiA9IChjaGFyICopIG5ld19idWY7CiAJ
CW5wLT5ybl9idWZzaXplID0gbmV3X3NpemU7Ci0JCW5wLT5ybl9vd25zX2J1ZiA9IHRydWU7CisJ
CW5wLT5ybl9vd25zX2J1ZiA9IDE7CiAJfQogCW5wLT5ybl9zaXplID0gbGVuZ3RoOwogCXZwLT52
X3NpemUgPSBsZW5ndGg7Ci0Jc2V0X3RpbWVzX3RvX25vdygmKG5wLT5ybl9tdGltZSksICYobnAt
PnJuX2N0aW1lKSk7CisJc2V0X3RpbWVzX3RvX25vdygmKG5wLT5ybl9tdGltZSksICYobnAtPnJu
X2N0aW1lKSwgTlVMTCk7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTM4MiwxNiArMzg5LDE3IEBAIHJh
bWZzX2NyZWF0ZShzdHJ1Y3Qgdm5vZGUgKmR2cCwgY2hhciAqbmFtZSwgbW9kZV90IG1vZGUpCiAJ
aWYgKCFTX0lTUkVHKG1vZGUpKQogCQlyZXR1cm4gRUlOVkFMOwogCi0JbnAgPSByYW1mc19hZGRf
bm9kZSgocmFtZnNfbm9kZSAqKSBkdnAtPnZfZGF0YSwgbmFtZSwgVlJFRyk7CisJbnAgPSByYW1m
c19hZGRfbm9kZShkdnAtPnZfZGF0YSwgbmFtZSwgVlJFRyk7CiAJaWYgKG5wID09IE5VTEwpCiAJ
CXJldHVybiBFTk9NRU07CiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQKLXJhbWZzX3JlYWQo
c3RydWN0IHZub2RlICp2cCwgc3RydWN0IGZpbGUgKmZwLCBzdHJ1Y3QgdWlvICp1aW8sIGludCBp
b2ZsYWcpCitzdGF0aWMgc3NpemVfdAorcmFtZnNfcmVhZChzdHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1
Y3QgdmZzY29yZV9maWxlICpmcCBfX3VudXNlZCwKKwkgICBzdHJ1Y3QgdWlvICp1aW8sIGludCBp
b2ZsYWcgX191bnVzZWQpCiB7Ci0Jc3RydWN0IHJhbWZzX25vZGUgKm5wID0gKHJhbWZzX25vZGUg
KikgdnAtPnZfZGF0YTsKKwlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSAgdnAtPnZfZGF0YTsKIAlz
aXplX3QgbGVuOwogCiAJaWYgKHZwLT52X3R5cGUgPT0gVkRJUikgewpAQCAtNDE1LDE1ICs0MjMs
MTUgQEAgcmFtZnNfcmVhZChzdHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3QgZmlsZSAqZnAsIHN0cnVj
dCB1aW8gKnVpbywgaW50IGlvZmxhZykKIAllbHNlCiAJCWxlbiA9IHVpby0+dWlvX3Jlc2lkOwog
Ci0Jc2V0X3RpbWVzX3RvX25vdygmKG5wLT5ybl9hdGltZSkpOworCXNldF90aW1lc190b19ub3co
JihucC0+cm5fYXRpbWUpLCBOVUxMLCBOVUxMKTsKIAotCXJldHVybiB1aW9tb3ZlKG5wLT5ybl9i
dWYgKyB1aW8tPnVpb19vZmZzZXQsIGxlbiwgdWlvKTsKKwlyZXR1cm4gdmZzY29yZV91aW9tb3Zl
KG5wLT5ybl9idWYgKyB1aW8tPnVpb19vZmZzZXQsIGxlbiwgdWlvKTsKIH0KIAogaW50CiByYW1m
c19zZXRfZmlsZV9kYXRhKHN0cnVjdCB2bm9kZSAqdnAsIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVf
dCBzaXplKQogewotCXN0cnVjdCByYW1mc19ub2RlICpucCA9IChyYW1mc19ub2RlICopIHZwLT52
X2RhdGE7CisJc3RydWN0IHJhbWZzX25vZGUgKm5wID0gIHZwLT52X2RhdGE7CiAKIAlpZiAodnAt
PnZfdHlwZSA9PSBWRElSKSB7CiAJCXJldHVybiBFSVNESVI7CkBAIC00MzksMTUgKzQ0NywxNSBA
QCByYW1mc19zZXRfZmlsZV9kYXRhKHN0cnVjdCB2bm9kZSAqdnAsIGNvbnN0IHZvaWQgKmRhdGEs
IHNpemVfdCBzaXplKQogCW5wLT5ybl9idWZzaXplID0gc2l6ZTsKIAlucC0+cm5fc2l6ZSA9IHNp
emU7CiAJdnAtPnZfc2l6ZSA9IHNpemU7Ci0JbnAtPnJuX293bnNfYnVmID0gZmFsc2U7CisJbnAt
PnJuX293bnNfYnVmID0gMDsKIAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50CitzdGF0aWMg
c3NpemVfdAogcmFtZnNfd3JpdGUoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IHVpbyAqdWlvLCBp
bnQgaW9mbGFnKQogewotCXN0cnVjdCByYW1mc19ub2RlICpucCA9IChyYW1mc19ub2RlICopIHZw
LT52X2RhdGE7CisJc3RydWN0IHJhbWZzX25vZGUgKm5wID0gIHZwLT52X2RhdGE7CiAKIAlpZiAo
dnAtPnZfdHlwZSA9PSBWRElSKSB7CiAJCXJldHVybiBFSVNESVI7CkBAIC00NjgsNyArNDc2LDcg
QEAgcmFtZnNfd3JpdGUoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IHVpbyAqdWlvLCBpbnQgaW9m
bGFnKQogCWlmIChpb2ZsYWcgJiBJT19BUFBFTkQpCiAJCXVpby0+dWlvX29mZnNldCA9IG5wLT5y
bl9zaXplOwogCi0JaWYgKHNpemVfdCh1aW8tPnVpb19vZmZzZXQgKyB1aW8tPnVpb19yZXNpZCkg
PiAoc2l6ZV90KSB2cC0+dl9zaXplKSB7CisJaWYgKChzaXplX3QpIHVpby0+dWlvX29mZnNldCAr
IHVpby0+dWlvX3Jlc2lkID4gKHNpemVfdCkgdnAtPnZfc2l6ZSkgewogCQkvKiBFeHBhbmQgdGhl
IGZpbGUgc2l6ZSBiZWZvcmUgd3JpdGluZyB0byBpdCAqLwogCQlvZmZfdCBlbmRfcG9zID0gdWlv
LT51aW9fb2Zmc2V0ICsgdWlvLT51aW9fcmVzaWQ7CiAJCWlmIChlbmRfcG9zID4gKG9mZl90KSBu
cC0+cm5fYnVmc2l6ZSkgewpAQCAtNDg3LDE1ICs0OTUsMTYgQEAgcmFtZnNfd3JpdGUoc3RydWN0
IHZub2RlICp2cCwgc3RydWN0IHVpbyAqdWlvLCBpbnQgaW9mbGFnKQogCQl9CiAJCW5wLT5ybl9z
aXplID0gZW5kX3BvczsKIAkJdnAtPnZfc2l6ZSA9IGVuZF9wb3M7Ci0JCW5wLT5ybl9vd25zX2J1
ZiA9IHRydWU7CisJCW5wLT5ybl9vd25zX2J1ZiA9IDE7CiAJfQogCi0Jc2V0X3RpbWVzX3RvX25v
dygmKG5wLT5ybl9tdGltZSksICYobnAtPnJuX2N0aW1lKSk7Ci0JcmV0dXJuIHVpb21vdmUobnAt
PnJuX2J1ZiArIHVpby0+dWlvX29mZnNldCwgdWlvLT51aW9fcmVzaWQsIHVpbyk7CisJc2V0X3Rp
bWVzX3RvX25vdygmKG5wLT5ybl9tdGltZSksICYobnAtPnJuX2N0aW1lKSwgTlVMTCk7CisJcmV0
dXJuIHZmc2NvcmVfdWlvbW92ZShucC0+cm5fYnVmICsgdWlvLT51aW9fb2Zmc2V0LCB1aW8tPnVp
b19yZXNpZCwKKwkJCSAgICAgICB1aW8pOwogfQogCiBzdGF0aWMgaW50Ci1yYW1mc19yZW5hbWUo
c3RydWN0IHZub2RlICpkdnAxLCBzdHJ1Y3Qgdm5vZGUgKnZwMSwgY2hhciAqbmFtZTEsCityYW1m
c19yZW5hbWUoc3RydWN0IHZub2RlICpkdnAxLCBzdHJ1Y3Qgdm5vZGUgKnZwMSwgY2hhciAqbmFt
ZTEgX191bnVzZWQsCiAJCQkgc3RydWN0IHZub2RlICpkdnAyLCBzdHJ1Y3Qgdm5vZGUgKnZwMiwg
Y2hhciAqbmFtZTIpCiB7CiAJc3RydWN0IHJhbWZzX25vZGUgKm5wLCAqb2xkX25wOwpAQCAtNTAz
LDIwICs1MTIsMjAgQEAgcmFtZnNfcmVuYW1lKHN0cnVjdCB2bm9kZSAqZHZwMSwgc3RydWN0IHZu
b2RlICp2cDEsIGNoYXIgKm5hbWUxLAogCiAJaWYgKHZwMikgewogCQkvKiBSZW1vdmUgZGVzdGlu
YXRpb24gZmlsZSwgZmlyc3QgKi8KLQkJZXJyb3IgPSByYW1mc19yZW1vdmVfbm9kZSgocmFtZnNf
bm9kZSAqKSBkdnAyLT52X2RhdGEsIChyYW1mc19ub2RlICopIHZwMi0+dl9kYXRhKTsKKwkJZXJy
b3IgPSByYW1mc19yZW1vdmVfbm9kZShkdnAyLT52X2RhdGEsIHZwMi0+dl9kYXRhKTsKIAkJaWYg
KGVycm9yKQogCQkJcmV0dXJuIGVycm9yOwogCX0KIAkvKiBTYW1lIGRpcmVjdG9yeSA/ICovCiAJ
aWYgKGR2cDEgPT0gZHZwMikgewogCQkvKiBDaGFuZ2UgdGhlIG5hbWUgb2YgZXhpc3RpbmcgZmls
ZSAqLwotCQllcnJvciA9IHJhbWZzX3JlbmFtZV9ub2RlKChyYW1mc19ub2RlICopIHZwMS0+dl9k
YXRhLCBuYW1lMik7CisJCWVycm9yID0gcmFtZnNfcmVuYW1lX25vZGUodnAxLT52X2RhdGEsIG5h
bWUyKTsKIAkJaWYgKGVycm9yKQogCQkJcmV0dXJuIGVycm9yOwogCX0gZWxzZSB7CiAJCS8qIENy
ZWF0ZSBuZXcgZmlsZSBvciBkaXJlY3RvcnkgKi8KLQkJb2xkX25wID0gKHJhbWZzX25vZGUgKikg
dnAxLT52X2RhdGE7Ci0JCW5wID0gcmFtZnNfYWRkX25vZGUoKHJhbWZzX25vZGUgKikgZHZwMi0+
dl9kYXRhLCBuYW1lMiwgb2xkX25wLT5ybl90eXBlKTsKKwkJb2xkX25wID0gdnAxLT52X2RhdGE7
CisJCW5wID0gcmFtZnNfYWRkX25vZGUoZHZwMi0+dl9kYXRhLCBuYW1lMiwgb2xkX25wLT5ybl90
eXBlKTsKIAkJaWYgKG5wID09IE5VTEwpCiAJCQlyZXR1cm4gRU5PTUVNOwogCkBAIC01MjgsNyAr
NTM3LDcgQEAgcmFtZnNfcmVuYW1lKHN0cnVjdCB2bm9kZSAqZHZwMSwgc3RydWN0IHZub2RlICp2
cDEsIGNoYXIgKm5hbWUxLAogCQkJb2xkX25wLT5ybl9idWYgPSBOVUxMOwogCQl9CiAJCS8qIFJl
bW92ZSBzb3VyY2UgZmlsZSAqLwotCQlyYW1mc19yZW1vdmVfbm9kZSgocmFtZnNfbm9kZSAqKSBk
dnAxLT52X2RhdGEsIChyYW1mc19ub2RlICopIHZwMS0+dl9kYXRhKTsKKwkJcmFtZnNfcmVtb3Zl
X25vZGUoZHZwMS0+dl9kYXRhLCB2cDEtPnZfZGF0YSk7CiAJfQogCXJldHVybiAwOwogfQpAQCAt
NTM3LDE0ICs1NDYsMTUgQEAgcmFtZnNfcmVuYW1lKHN0cnVjdCB2bm9kZSAqZHZwMSwgc3RydWN0
IHZub2RlICp2cDEsIGNoYXIgKm5hbWUxLAogICogQHZwOiB2bm9kZSBvZiB0aGUgZGlyZWN0b3J5
LgogICovCiBzdGF0aWMgaW50Ci1yYW1mc19yZWFkZGlyKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVj
dCBmaWxlICpmcCwgc3RydWN0IGRpcmVudCAqZGlyKQorcmFtZnNfcmVhZGRpcihzdHJ1Y3Qgdm5v
ZGUgKnZwLCBzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCwgc3RydWN0IGRpcmVudCAqZGlyKQogewog
CXN0cnVjdCByYW1mc19ub2RlICpucCwgKmRucDsKIAlpbnQgaTsKIAotCW11dGV4X2xvY2soJnJh
bWZzX2xvY2spOworCXVrX211dGV4X2xvY2soJnJhbWZzX2xvY2spOwogCi0Jc2V0X3RpbWVzX3Rv
X25vdygmKCgocmFtZnNfbm9kZSAqKSB2cC0+dl9kYXRhKS0+cm5fYXRpbWUpKTsKKwlzZXRfdGlt
ZXNfdG9fbm93KCYoKChzdHJ1Y3QgcmFtZnNfbm9kZSAqKSB2cC0+dl9kYXRhKS0+cm5fYXRpbWUp
LAorCQkJIE5VTEwsIE5VTEwpOwogCiAJaWYgKGZwLT5mX29mZnNldCA9PSAwKSB7CiAJCWRpci0+
ZF90eXBlID0gRFRfRElSOwpAQCAtNTUzLDE3ICs1NjMsMTcgQEAgcmFtZnNfcmVhZGRpcihzdHJ1
Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3QgZmlsZSAqZnAsIHN0cnVjdCBkaXJlbnQgKmRpcikKIAkJZGly
LT5kX3R5cGUgPSBEVF9ESVI7CiAJCXN0cmxjcHkoKGNoYXIgKikgJmRpci0+ZF9uYW1lLCAiLi4i
LCBzaXplb2YoZGlyLT5kX25hbWUpKTsKIAl9IGVsc2UgewotCQlkbnAgPSAocmFtZnNfbm9kZSAq
KSB2cC0+dl9kYXRhOworCQlkbnAgPSB2cC0+dl9kYXRhOwogCQlucCA9IGRucC0+cm5fY2hpbGQ7
CiAJCWlmIChucCA9PSBOVUxMKSB7Ci0JCQltdXRleF91bmxvY2soJnJhbWZzX2xvY2spOworCQkJ
dWtfbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKIAkJCXJldHVybiBFTk9FTlQ7CiAJCX0KIAog
CQlmb3IgKGkgPSAwOyBpICE9IChmcC0+Zl9vZmZzZXQgLSAyKTsgaSsrKSB7CiAJCQlucCA9IG5w
LT5ybl9uZXh0OwogCQkJaWYgKG5wID09IE5VTEwpIHsKLQkJCQltdXRleF91bmxvY2soJnJhbWZz
X2xvY2spOworCQkJCXVrX211dGV4X3VubG9jaygmcmFtZnNfbG9jayk7CiAJCQkJcmV0dXJuIEVO
T0VOVDsKIAkJCX0KIAkJfQpAQCAtNTgxLDcgKzU5MSw3IEBAIHJhbWZzX3JlYWRkaXIoc3RydWN0
IHZub2RlICp2cCwgc3RydWN0IGZpbGUgKmZwLCBzdHJ1Y3QgZGlyZW50ICpkaXIpCiAKIAlmcC0+
Zl9vZmZzZXQrKzsKIAotCW11dGV4X3VubG9jaygmcmFtZnNfbG9jayk7CisJdWtfbXV0ZXhfdW5s
b2NrKCZyYW1mc19sb2NrKTsKIAlyZXR1cm4gMDsKIH0KIApAQCAtNTk0LDExICs2MDQsMTIgQEAg
cmFtZnNfaW5pdCh2b2lkKQogc3RhdGljIGludAogcmFtZnNfZ2V0YXR0cihzdHJ1Y3Qgdm5vZGUg
KnZub2RlLCBzdHJ1Y3QgdmF0dHIgKmF0dHIpCiB7CisJc3RydWN0IHJhbWZzX25vZGUgKm5wID0g
dm5vZGUtPnZfZGF0YTsKKwogCWF0dHItPnZhX25vZGVpZCA9IHZub2RlLT52X2lubzsKIAlhdHRy
LT52YV9zaXplID0gdm5vZGUtPnZfc2l6ZTsKIAotCXN0cnVjdCByYW1mc19ub2RlICpucCA9IChy
YW1mc19ub2RlICopIHZub2RlLT52X2RhdGE7Ci0JYXR0ci0+dmFfdHlwZSA9ICh2dHlwZSkgbnAt
PnJuX3R5cGU7CisJYXR0ci0+dmFfdHlwZSA9IG5wLT5ybl90eXBlOwogCiAJbWVtY3B5KCYoYXR0
ci0+dmFfYXRpbWUpLCAmKG5wLT5ybl9hdGltZSksIHNpemVvZihzdHJ1Y3QgdGltZXNwZWMpKTsK
IAltZW1jcHkoJihhdHRyLT52YV9jdGltZSksICYobnAtPnJuX2N0aW1lKSwgc2l6ZW9mKHN0cnVj
dCB0aW1lc3BlYykpOwpAQCAtNjExLDcgKzYyMiw3IEBAIHJhbWZzX2dldGF0dHIoc3RydWN0IHZu
b2RlICp2bm9kZSwgc3RydWN0IHZhdHRyICphdHRyKQogCiBzdGF0aWMgaW50CiByYW1mc19zZXRh
dHRyKHN0cnVjdCB2bm9kZSAqdm5vZGUsIHN0cnVjdCB2YXR0ciAqYXR0cikgewotCXN0cnVjdCBy
YW1mc19ub2RlICpucCA9IChyYW1mc19ub2RlICopIHZub2RlLT52X2RhdGE7CisJc3RydWN0IHJh
bWZzX25vZGUgKm5wID0gdm5vZGUtPnZfZGF0YTsKIAogCWlmIChhdHRyLT52YV9tYXNrICYgQVRf
QVRJTUUpIHsKIAkJbWVtY3B5KCYobnAtPnJuX2F0aW1lKSwgJihhdHRyLT52YV9hdGltZSksIHNp
emVvZihzdHJ1Y3QgdGltZXNwZWMpKTsKQEAgLTYzMiwxNCArNjQzLDE0IEBAIHJhbWZzX3NldGF0
dHIoc3RydWN0IHZub2RlICp2bm9kZSwgc3RydWN0IHZhdHRyICphdHRyKSB7CiAJcmV0dXJuIDA7
CiB9CiAKLSNkZWZpbmUgcmFtZnNfb3BlbiAgICAgICgodm5vcF9vcGVuX3Qpdm9wX251bGxvcCkK
LSNkZWZpbmUgcmFtZnNfY2xvc2UgICAgICgodm5vcF9jbG9zZV90KXZvcF9udWxsb3ApCi0jZGVm
aW5lIHJhbWZzX3NlZWsgICAgICAoKHZub3Bfc2Vla190KXZvcF9udWxsb3ApCi0jZGVmaW5lIHJh
bWZzX2lvY3RsICAgICAoKHZub3BfaW9jdGxfdCl2b3BfZWludmFsKQotI2RlZmluZSByYW1mc19m
c3luYyAgICAgKCh2bm9wX2ZzeW5jX3Qpdm9wX251bGxvcCkKLSNkZWZpbmUgcmFtZnNfaW5hY3Rp
dmUgICgodm5vcF9pbmFjdGl2ZV90KXZvcF9udWxsb3ApCi0jZGVmaW5lIHJhbWZzX2xpbmsgICAg
ICAoKHZub3BfbGlua190KXZvcF9lcGVybSkKLSNkZWZpbmUgcmFtZnNfZmFsbG9jYXRlICgodm5v
cF9mYWxsb2NhdGVfdCl2b3BfbnVsbG9wKQorI2RlZmluZSByYW1mc19vcGVuICAgICAgKCh2bm9w
X29wZW5fdCl2ZnNjb3JlX3ZvcF9udWxsb3ApCisjZGVmaW5lIHJhbWZzX2Nsb3NlICAgICAoKHZu
b3BfY2xvc2VfdCl2ZnNjb3JlX3ZvcF9udWxsb3ApCisjZGVmaW5lIHJhbWZzX3NlZWsgICAgICAo
KHZub3Bfc2Vla190KXZmc2NvcmVfdm9wX251bGxvcCkKKyNkZWZpbmUgcmFtZnNfaW9jdGwgICAg
ICgodm5vcF9pb2N0bF90KXZmc2NvcmVfdm9wX2VpbnZhbCkKKyNkZWZpbmUgcmFtZnNfZnN5bmMg
ICAgICgodm5vcF9mc3luY190KXZmc2NvcmVfdm9wX251bGxvcCkKKyNkZWZpbmUgcmFtZnNfaW5h
Y3RpdmUgICgodm5vcF9pbmFjdGl2ZV90KXZmc2NvcmVfdm9wX251bGxvcCkKKyNkZWZpbmUgcmFt
ZnNfbGluayAgICAgICgodm5vcF9saW5rX3QpdmZzY29yZV92b3BfZXBlcm0pCisjZGVmaW5lIHJh
bWZzX2ZhbGxvY2F0ZSAoKHZub3BfZmFsbG9jYXRlX3QpdmZzY29yZV92b3BfbnVsbG9wKQogCiAv
KgogICogdm5vZGUgb3BlcmF0aW9ucwpAQCAtNjY0LDcgKzY3NSw3IEBAIHN0cnVjdCB2bm9wcyBy
YW1mc192bm9wcyA9IHsKIAkJcmFtZnNfaW5hY3RpdmUsICAgICAgICAgLyogaW5hY3RpdmUgKi8K
IAkJcmFtZnNfdHJ1bmNhdGUsICAgICAgICAgLyogdHJ1bmNhdGUgKi8KIAkJcmFtZnNfbGluaywg
ICAgICAgICAgICAgLyogbGluayAqLwotCQkodm5vcF9jYWNoZV90KSBudWxscHRyLCAvKiBhcmMg
Ki8KKwkJKHZub3BfY2FjaGVfdCkgTlVMTCwgICAgLyogYXJjICovCiAJCXJhbWZzX2ZhbGxvY2F0
ZSwgICAgICAgIC8qIGZhbGxvY2F0ZSAqLwogCQlyYW1mc19yZWFkbGluaywgICAgICAgICAvKiBy
ZWFkIGxpbmsgKi8KIAkJcmFtZnNfc3ltbGluaywgICAgICAgICAgLyogc3ltYm9saWMgbGluayAq
LwotLSAKMi4xOS4yCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJv
amVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21p
bmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Fri Feb 08 14:31:46 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 08 Feb 2019 14:31:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gs7By-0003GU-6w; Fri, 08 Feb 2019 14:31:46 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=PCXD=QP=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gs7Bw-0003Fv-NB
 for minios-devel@lists.xen.org; Fri, 08 Feb 2019 14:31:44 +0000
X-Inumbo-ID: 3fe36242-2bae-11e9-8972-13def2dee08e
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 3fe36242-2bae-11e9-8972-13def2dee08e;
 Fri, 08 Feb 2019 14:31:41 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 7FDA5F2051;
 Fri,  8 Feb 2019 15:31:40 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id ej5lUdfayTao; Fri,  8 Feb 2019 15:31:40 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 513ADF200D
 for <minios-devel@lists.xen.org>; Fri,  8 Feb 2019 15:31:38 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Fri, 8 Feb 2019 15:31:38 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Fri, 8 Feb 2019 15:31:08 +0100
Message-ID: <20190208143108.27175-7-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190208143108.27175-1-yuri.volchkov@neclab.eu>
References: <20190208143108.27175-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 6/6] lib/ramfs: fix style issues
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhlIG5vbi1uZWdhdGl2ZSByZXR1cm4gY29kZXMgdHlwZXMgb2YgY2hlY2stcGF0Y2ggY29tcGxh
aW5zIGFyZQppZ25vcmVkIGZvciBub3csIGJlY2F1c2UgdGhpcyB3aWxsIGJyYWtlIGNvbXBhdGli
aWxpdHkgd2l0aCBjdXJyZW50CnZmc2NvcmUuCgpTaWduZWQtb2ZmLWJ5OiBZdXJpIFZvbGNoa292
IDx5dXJpLnZvbGNoa292QG5lY2xhYi5ldT4KLS0tCiBsaWIvcmFtZnMvcmFtZnNfdmZzb3BzLmMg
fCAgIDUgKy0KIGxpYi9yYW1mcy9yYW1mc192bm9wcy5jICB8IDEwMCArKysrKysrKysrKysrKysr
KystLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgNDggaW5zZXJ0aW9ucygr
KSwgNTcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliL3JhbWZzL3JhbWZzX3Zmc29wcy5j
IGIvbGliL3JhbWZzL3JhbWZzX3Zmc29wcy5jCmluZGV4IDNiNWMwNzVjLi5jNDUyNDVmZCAxMDA2
NDQKLS0tIGEvbGliL3JhbWZzL3JhbWZzX3Zmc29wcy5jCisrKyBiL2xpYi9yYW1mcy9yYW1mc192
ZnNvcHMuYwpAQCAtNDEsNyArNDEsOCBAQAogCiBleHRlcm4gc3RydWN0IHZub3BzIHJhbWZzX3Zu
b3BzOwogCi1zdGF0aWMgaW50IHJhbWZzX21vdW50KHN0cnVjdCBtb3VudCAqbXAsIGNvbnN0IGNo
YXIgKmRldiwgaW50IGZsYWdzLCBjb25zdCB2b2lkICpkYXRhKTsKK3N0YXRpYyBpbnQgcmFtZnNf
bW91bnQoc3RydWN0IG1vdW50ICptcCwgY29uc3QgY2hhciAqZGV2LCBpbnQgZmxhZ3MsCisJCSAg
ICAgICBjb25zdCB2b2lkICpkYXRhKTsKIAogc3RhdGljIGludCByYW1mc191bm1vdW50KHN0cnVj
dCBtb3VudCAqbXAsIGludCBmbGFncyk7CiAKQEAgLTc4LDcgKzc5LDcgQEAgcmFtZnNfbW91bnQo
c3RydWN0IG1vdW50ICptcCwgY29uc3QgY2hhciAqZGV2IF9fdW51c2VkLAogewogCXN0cnVjdCBy
YW1mc19ub2RlICpucDsKIAotCURQUklOVEYoKCJyYW1mc19tb3VudDogZGV2PSVzXG4iLCBkZXYp
KTsKKwlEUFJJTlRGKCgiJXM6IGRldj0lc1xuIiwgX19mdW5jX18sIGRldikpOwogCiAJLyogQ3Jl
YXRlIGEgcm9vdCBub2RlICovCiAJbnAgPSByYW1mc19hbGxvY2F0ZV9ub2RlKCIvIiwgVkRJUik7
CmRpZmYgLS1naXQgYS9saWIvcmFtZnMvcmFtZnNfdm5vcHMuYyBiL2xpYi9yYW1mcy9yYW1mc192
bm9wcy5jCmluZGV4IDFmYWRlZDA1Li43NGNlN2ZiZSAxMDA2NDQKLS0tIGEvbGliL3JhbWZzL3Jh
bWZzX3Zub3BzLmMKKysrIGIvbGliL3JhbWZzL3JhbWZzX3Zub3BzLmMKQEAgLTY2LDE1ICs2Niwx
MiBAQCBzZXRfdGltZXNfdG9fbm93KHN0cnVjdCB0aW1lc3BlYyAqdGltZTEsIHN0cnVjdCB0aW1l
c3BlYyAqdGltZTIsCiAKIAkvKiBUT0RPOiBpbXBsZW1lbnQgdGhlIHJlYWwgY2xvY2tfZ2V0dGlt
ZSAqLwogCS8qIGNsb2NrX2dldHRpbWUoQ0xPQ0tfUkVBTFRJTUUsICZub3cpOyAqLwotCWlmICh0
aW1lMSkgeworCWlmICh0aW1lMSkKIAkJbWVtY3B5KHRpbWUxLCAmbm93LCBzaXplb2Yoc3RydWN0
IHRpbWVzcGVjKSk7Ci0JfQotCWlmICh0aW1lMikgeworCWlmICh0aW1lMikKIAkJbWVtY3B5KHRp
bWUyLCAmbm93LCBzaXplb2Yoc3RydWN0IHRpbWVzcGVjKSk7Ci0JfQotCWlmICh0aW1lMykgewor
CWlmICh0aW1lMykKIAkJbWVtY3B5KHRpbWUzLCAmbm93LCBzaXplb2Yoc3RydWN0IHRpbWVzcGVj
KSk7Ci0JfQogfQogCiBzdHJ1Y3QgcmFtZnNfbm9kZSAqCkBAIC0xODQsOSArMTgxLDkgQEAgcmFt
ZnNfcmVuYW1lX25vZGUoc3RydWN0IHJhbWZzX25vZGUgKm5wLCBjaGFyICpuYW1lKQogCWNoYXIg
KnRtcDsKIAogCWxlbiA9IHN0cmxlbihuYW1lKTsKLQlpZiAobGVuID4gTkFNRV9NQVgpIHsKKwlp
ZiAobGVuID4gTkFNRV9NQVgpCiAJCXJldHVybiBFTkFNRVRPT0xPTkc7Ci0JfQorCiAJaWYgKGxl
biA8PSBucC0+cm5fbmFtZWxlbikgewogCQkvKiBSZXVzZSBjdXJyZW50IG5hbWUgYnVmZmVyICov
CiAJCXN0cmxjcHkobnAtPnJuX25hbWUsIG5hbWUsIG5wLT5ybl9uYW1lbGVuICsgMSk7CkBAIC0y
NjEsOSArMjU4LDggQEAgcmFtZnNfbWtkaXIoc3RydWN0IHZub2RlICpkdnAsIGNoYXIgKm5hbWUs
IG1vZGVfdCBtb2RlKQogCXN0cnVjdCByYW1mc19ub2RlICpucDsKIAogCURQUklOVEYoKCJta2Rp
ciAlc1xuIiwgbmFtZSkpOwotCWlmIChzdHJsZW4obmFtZSkgPiBOQU1FX01BWCkgeworCWlmIChz
dHJsZW4obmFtZSkgPiBOQU1FX01BWCkKIAkJcmV0dXJuIEVOQU1FVE9PTE9ORzsKLQl9CiAKIAlp
ZiAoIVNfSVNESVIobW9kZSkpCiAJCXJldHVybiBFSU5WQUw7CkBAIC0yNzksMTQgKzI3NSwxOSBA
QCByYW1mc19ta2RpcihzdHJ1Y3Qgdm5vZGUgKmR2cCwgY2hhciAqbmFtZSwgbW9kZV90IG1vZGUp
CiBzdGF0aWMgaW50CiByYW1mc19zeW1saW5rKHN0cnVjdCB2bm9kZSAqZHZwLCBjaGFyICpuYW1l
LCBjaGFyICpsaW5rKQogewotCWlmIChzdHJsZW4obmFtZSkgPiBOQU1FX01BWCkgeworCXN0cnVj
dCByYW1mc19ub2RlICpucDsKKwlzaXplX3QgbGVuOworCisJaWYgKHN0cmxlbihuYW1lKSA+IE5B
TUVfTUFYKQogCQlyZXR1cm4gRU5BTUVUT09MT05HOwotCX0KLQlzdHJ1Y3QgcmFtZnNfbm9kZSAq
bnAgPSByYW1mc19hZGRfbm9kZShkdnAtPnZfZGF0YSwgbmFtZSwgVkxOSyk7CisKKwlucCA9IHJh
bWZzX2FkZF9ub2RlKGR2cC0+dl9kYXRhLCBuYW1lLCBWTE5LKTsKKwogCWlmIChucCA9PSBOVUxM
KQogCQlyZXR1cm4gRU5PTUVNOwogCS8vIFNhdmUgdGhlIGxpbmsgdGFyZ2V0IHdpdGhvdXQgdGhl
IGZpbmFsIG51bGwsIGFzIHJlYWRsaW5rKCkgd2FudHMgaXQuCi0Jc2l6ZV90IGxlbiA9IHN0cmxl
bihsaW5rKTsKKwlsZW4gPSBzdHJsZW4obGluayk7CisKIAlucC0+cm5fYnVmID0gc3RybmR1cChs
aW5rLCBsZW4pOwogCW5wLT5ybl9idWZzaXplID0gbnAtPnJuX3NpemUgPSBsZW47CiAKQEAgLTI5
OSwxNSArMzAwLDEyIEBAIHJhbWZzX3JlYWRsaW5rKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCB1
aW8gKnVpbykKIAlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSB2cC0+dl9kYXRhOwogCXNpemVfdCBs
ZW47CiAKLQlpZiAodnAtPnZfdHlwZSAhPSBWTE5LKSB7CisJaWYgKHZwLT52X3R5cGUgIT0gVkxO
SykKIAkJcmV0dXJuIEVJTlZBTDsKLQl9Ci0JaWYgKHVpby0+dWlvX29mZnNldCA8IDApIHsKKwlp
ZiAodWlvLT51aW9fb2Zmc2V0IDwgMCkKIAkJcmV0dXJuIEVJTlZBTDsKLQl9Ci0JaWYgKHVpby0+
dWlvX3Jlc2lkID09IDApIHsKKwlpZiAodWlvLT51aW9fcmVzaWQgPT0gMCkKIAkJcmV0dXJuIDA7
Ci0JfQogCWlmICh1aW8tPnVpb19vZmZzZXQgPj0gKG9mZl90KSB2cC0+dl9zaXplKQogCQlyZXR1
cm4gMDsKIAlpZiAodnAtPnZfc2l6ZSAtIHVpby0+dWlvX29mZnNldCA8IHVpby0+dWlvX3Jlc2lk
KQpAQCAtMzQ5LDcgKzM0Nyw3IEBAIHJhbWZzX3RydW5jYXRlKHN0cnVjdCB2bm9kZSAqdnAsIG9m
Zl90IGxlbmd0aCkKIAogCWlmIChsZW5ndGggPT0gMCkgewogCQlpZiAobnAtPnJuX2J1ZiAhPSBO
VUxMKSB7Ci0JCQlpZihucC0+cm5fb3duc19idWYpCisJCQlpZiAobnAtPnJuX293bnNfYnVmKQog
CQkJCWZyZWUobnAtPnJuX2J1Zik7CiAJCQlucC0+cm5fYnVmID0gTlVMTDsKIAkJCW5wLT5ybl9i
dWZzaXplID0gMDsKQEAgLTM2Miw3ICszNjAsNyBAQCByYW1mc190cnVuY2F0ZShzdHJ1Y3Qgdm5v
ZGUgKnZwLCBvZmZfdCBsZW5ndGgpCiAJCQlyZXR1cm4gRUlPOwogCQlpZiAobnAtPnJuX3NpemUg
IT0gMCkgewogCQkJbWVtY3B5KG5ld19idWYsIG5wLT5ybl9idWYsIHZwLT52X3NpemUpOwotCQkJ
aWYobnAtPnJuX293bnNfYnVmKQorCQkJaWYgKG5wLT5ybl9vd25zX2J1ZikKIAkJCQlmcmVlKG5w
LT5ybl9idWYpOwogCQl9CiAJCW5wLT5ybl9idWYgPSAoY2hhciAqKSBuZXdfYnVmOwpAQCAtMzgz
LDkgKzM4MSw4IEBAIHJhbWZzX2NyZWF0ZShzdHJ1Y3Qgdm5vZGUgKmR2cCwgY2hhciAqbmFtZSwg
bW9kZV90IG1vZGUpCiB7CiAJc3RydWN0IHJhbWZzX25vZGUgKm5wOwogCi0JaWYgKHN0cmxlbihu
YW1lKSA+IE5BTUVfTUFYKSB7CisJaWYgKHN0cmxlbihuYW1lKSA+IE5BTUVfTUFYKQogCQlyZXR1
cm4gRU5BTUVUT09MT05HOwotCX0KIAogCURQUklOVEYoKCJjcmVhdGUgJXMgaW4gJXNcbiIsIG5h
bWUsIFJBTUZTX05PREUoZHZwKS0+cm5fbmFtZSkpOwogCWlmICghU19JU1JFRyhtb2RlKSkKQEAg
LTQwNCwxOCArNDAxLDE0IEBAIHJhbWZzX3JlYWQoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IHZm
c2NvcmVfZmlsZSAqZnAgX191bnVzZWQsCiAJc3RydWN0IHJhbWZzX25vZGUgKm5wID0gIHZwLT52
X2RhdGE7CiAJc2l6ZV90IGxlbjsKIAotCWlmICh2cC0+dl90eXBlID09IFZESVIpIHsKKwlpZiAo
dnAtPnZfdHlwZSA9PSBWRElSKQogCQlyZXR1cm4gRUlTRElSOwotCX0KLQlpZiAodnAtPnZfdHlw
ZSAhPSBWUkVHKSB7CisJaWYgKHZwLT52X3R5cGUgIT0gVlJFRykKIAkJcmV0dXJuIEVJTlZBTDsK
LQl9Ci0JaWYgKHVpby0+dWlvX29mZnNldCA8IDApIHsKKwlpZiAodWlvLT51aW9fb2Zmc2V0IDwg
MCkKIAkJcmV0dXJuIEVJTlZBTDsKLQl9Ci0JaWYgKHVpby0+dWlvX3Jlc2lkID09IDApIHsKKwlp
ZiAodWlvLT51aW9fcmVzaWQgPT0gMCkKIAkJcmV0dXJuIDA7Ci0JfQogCiAJaWYgKHVpby0+dWlv
X29mZnNldCA+PSAob2ZmX3QpIHZwLT52X3NpemUpCiAJCXJldHVybiAwOwpAQCAtNDM1LDE1ICs0
MjgsMTIgQEAgcmFtZnNfc2V0X2ZpbGVfZGF0YShzdHJ1Y3Qgdm5vZGUgKnZwLCBjb25zdCB2b2lk
ICpkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKIAlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSAgdnAtPnZf
ZGF0YTsKIAotCWlmICh2cC0+dl90eXBlID09IFZESVIpIHsKKwlpZiAodnAtPnZfdHlwZSA9PSBW
RElSKQogCQlyZXR1cm4gRUlTRElSOwotCX0KLQlpZiAodnAtPnZfdHlwZSAhPSBWUkVHKSB7CisJ
aWYgKHZwLT52X3R5cGUgIT0gVlJFRykKIAkJcmV0dXJuIEVJTlZBTDsKLQl9Ci0JaWYgKG5wLT5y
bl9idWYpIHsKKwlpZiAobnAtPnJuX2J1ZikKIAkJcmV0dXJuIEVJTlZBTDsKLQl9CiAKIAlucC0+
cm5fYnVmID0gKGNoYXIgKikgZGF0YTsKIAlucC0+cm5fYnVmc2l6ZSA9IHNpemU7CkBAIC00NTks
MjEgKzQ0OSwxNiBAQCByYW1mc193cml0ZShzdHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3QgdWlvICp1
aW8sIGludCBpb2ZsYWcpCiB7CiAJc3RydWN0IHJhbWZzX25vZGUgKm5wID0gIHZwLT52X2RhdGE7
CiAKLQlpZiAodnAtPnZfdHlwZSA9PSBWRElSKSB7CisJaWYgKHZwLT52X3R5cGUgPT0gVkRJUikK
IAkJcmV0dXJuIEVJU0RJUjsKLQl9Ci0JaWYgKHZwLT52X3R5cGUgIT0gVlJFRykgeworCWlmICh2
cC0+dl90eXBlICE9IFZSRUcpCiAJCXJldHVybiBFSU5WQUw7Ci0JfQotCWlmICh1aW8tPnVpb19v
ZmZzZXQgPCAwKSB7CisJaWYgKHVpby0+dWlvX29mZnNldCA8IDApCiAJCXJldHVybiBFSU5WQUw7
Ci0JfQotCWlmICh1aW8tPnVpb19vZmZzZXQgPj0gTE9OR19NQVgpIHsKKwlpZiAodWlvLT51aW9f
b2Zmc2V0ID49IExPTkdfTUFYKQogCQlyZXR1cm4gRUZCSUc7Ci0JfQotCWlmICh1aW8tPnVpb19y
ZXNpZCA9PSAwKSB7CisJaWYgKHVpby0+dWlvX3Jlc2lkID09IDApCiAJCXJldHVybiAwOwotCX0K
IAogCWlmIChpb2ZsYWcgJiBJT19BUFBFTkQpCiAJCXVpby0+dWlvX29mZnNldCA9IG5wLT5ybl9z
aXplOwpAQCAtNDgxLDE1ICs0NjYsMTcgQEAgcmFtZnNfd3JpdGUoc3RydWN0IHZub2RlICp2cCwg
c3RydWN0IHVpbyAqdWlvLCBpbnQgaW9mbGFnKQogCWlmICgoc2l6ZV90KSB1aW8tPnVpb19vZmZz
ZXQgKyB1aW8tPnVpb19yZXNpZCA+IChzaXplX3QpIHZwLT52X3NpemUpIHsKIAkJLyogRXhwYW5k
IHRoZSBmaWxlIHNpemUgYmVmb3JlIHdyaXRpbmcgdG8gaXQgKi8KIAkJb2ZmX3QgZW5kX3BvcyA9
IHVpby0+dWlvX29mZnNldCArIHVpby0+dWlvX3Jlc2lkOworCiAJCWlmIChlbmRfcG9zID4gKG9m
Zl90KSBucC0+cm5fYnVmc2l6ZSkgewogCQkJLy8gWFhYOiB0aGlzIGNvdWxkIHVzZSBhIHBhZ2Ug
bGV2ZWwgYWxsb2NhdG9yCiAJCQlzaXplX3QgbmV3X3NpemUgPSByb3VuZF9wYWdlKGVuZF9wb3Mp
OwogCQkJdm9pZCAqbmV3X2J1ZiA9IG1hbGxvYyhuZXdfc2l6ZSk7CisKIAkJCWlmICghbmV3X2J1
ZikKIAkJCQlyZXR1cm4gRUlPOwogCQkJaWYgKG5wLT5ybl9zaXplICE9IDApIHsKIAkJCQltZW1j
cHkobmV3X2J1ZiwgbnAtPnJuX2J1ZiwgdnAtPnZfc2l6ZSk7Ci0JCQkJaWYobnAtPnJuX293bnNf
YnVmKQorCQkJCWlmIChucC0+cm5fb3duc19idWYpCiAJCQkJCWZyZWUobnAtPnJuX2J1Zik7CiAJ
CQl9CiAJCQlucC0+cm5fYnVmID0gKGNoYXIgKikgbmV3X2J1ZjsKQEAgLTYyMywyNCArNjEwLDI3
IEBAIHJhbWZzX2dldGF0dHIoc3RydWN0IHZub2RlICp2bm9kZSwgc3RydWN0IHZhdHRyICphdHRy
KQogfQogCiBzdGF0aWMgaW50Ci1yYW1mc19zZXRhdHRyKHN0cnVjdCB2bm9kZSAqdm5vZGUsIHN0
cnVjdCB2YXR0ciAqYXR0cikgeworcmFtZnNfc2V0YXR0cihzdHJ1Y3Qgdm5vZGUgKnZub2RlLCBz
dHJ1Y3QgdmF0dHIgKmF0dHIpCit7CiAJc3RydWN0IHJhbWZzX25vZGUgKm5wID0gdm5vZGUtPnZf
ZGF0YTsKIAogCWlmIChhdHRyLT52YV9tYXNrICYgQVRfQVRJTUUpIHsKLQkJbWVtY3B5KCYobnAt
PnJuX2F0aW1lKSwgJihhdHRyLT52YV9hdGltZSksIHNpemVvZihzdHJ1Y3QgdGltZXNwZWMpKTsK
KwkJbWVtY3B5KCYobnAtPnJuX2F0aW1lKSwgJihhdHRyLT52YV9hdGltZSksCisJCSAgICAgICBz
aXplb2Yoc3RydWN0IHRpbWVzcGVjKSk7CiAJfQogCiAJaWYgKGF0dHItPnZhX21hc2sgJiBBVF9D
VElNRSkgewotCQltZW1jcHkoJihucC0+cm5fY3RpbWUpLCAmKGF0dHItPnZhX2N0aW1lKSwgc2l6
ZW9mKHN0cnVjdCB0aW1lc3BlYykpOworCQltZW1jcHkoJihucC0+cm5fY3RpbWUpLCAmKGF0dHIt
PnZhX2N0aW1lKSwKKwkJICAgICAgIHNpemVvZihzdHJ1Y3QgdGltZXNwZWMpKTsKIAl9CiAKIAlp
ZiAoYXR0ci0+dmFfbWFzayAmIEFUX01USU1FKSB7Ci0JCW1lbWNweSgmKG5wLT5ybl9tdGltZSks
ICYoYXR0ci0+dmFfbXRpbWUpLCBzaXplb2Yoc3RydWN0IHRpbWVzcGVjKSk7CisJCW1lbWNweSgm
KG5wLT5ybl9tdGltZSksICYoYXR0ci0+dmFfbXRpbWUpLAorCQkgICAgICAgc2l6ZW9mKHN0cnVj
dCB0aW1lc3BlYykpOwogCX0KIAotCWlmIChhdHRyLT52YV9tYXNrICYgQVRfTU9ERSkgeworCWlm
IChhdHRyLT52YV9tYXNrICYgQVRfTU9ERSkKIAkJbnAtPnJuX21vZGUgPSBhdHRyLT52YV9tb2Rl
OwotCX0KIAogCXJldHVybiAwOwogfQotLSAKMi4xOS4yCgoKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5p
b3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9y
Zy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Fri Feb 08 14:46:02 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 08 Feb 2019 14:46:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gs7Pl-0004OV-VZ; Fri, 08 Feb 2019 14:46:01 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=p2U7=QP=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1gs7Pl-0004OQ-4A
 for minios-devel@lists.xen.org; Fri, 08 Feb 2019 14:46:01 +0000
X-Inumbo-ID: 3e398aa0-2bb0-11e9-97f2-8fed04277ee1
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 3e398aa0-2bb0-11e9-97f2-8fed04277ee1;
 Fri, 08 Feb 2019 14:45:57 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id A0791F2051;
 Fri,  8 Feb 2019 15:45:56 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id JnljvWYSPiba; Fri,  8 Feb 2019 15:45:56 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 6F9E4F200D
 for <minios-devel@lists.xen.org>; Fri,  8 Feb 2019 15:45:54 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 8 Feb 2019 15:45:54
 +0100
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
 <20190207135901.9122-12-yuri.volchkov@neclab.eu>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <6e74cbfb-a256-eed1-d2a8-d74545bb075c@neclab.eu>
Date: Fri, 8 Feb 2019 15:45:53 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190207135901.9122-12-yuri.volchkov@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v3 11/23] lib/vfscore: introduce
 UK_FS_REGISTER
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gWXVyaSwKClRoaXMgcGF0Y2ggc2VlbXMgZmluZSBleHBlY3QgZm9yIG1pbm9yIGNvbW1l
bnQuCgoKClRoYW5rcyAmIFJlZ2FyZHMKU2hhcmFuCgpPbiAyLzcvMTkgMjo1OCBQTSwgWXVyaSBW
b2xjaGtvdiB3cm90ZToKPiBUaGUgbWFjcm8gcmVnaXN0ZXJzIHRoZSBmaWxlc3lzdGVtIGluIHRo
ZSBzdGF0aWMgYXJyYXkKPiAKPiBTaWduZWQtb2ZmLWJ5OiBZdXJpIFZvbGNoa292IDx5dXJpLnZv
bGNoa292QG5lY2xhYi5ldT4KPiAtLS0KPiAgIGxpYi92ZnNjb3JlL01ha2VmaWxlLnVrICAgICAg
ICAgICAgIHwgIDIgKysKPiAgIGxpYi92ZnNjb3JlL2V4dHJhLmxkICAgICAgICAgICAgICAgIHwg
IDkgKysrKysrKysrCj4gICBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvbW91bnQuaCB8ICA2
ICsrKysrLQo+ICAgbGliL3Zmc2NvcmUvbW91bnQuYyAgICAgICAgICAgICAgICAgfCAyNCArKysr
KysrKysrKysrKysrKystLS0tLS0KPiAgIDQgZmlsZXMgY2hhbmdlZCwgMzQgaW5zZXJ0aW9ucygr
KSwgNyBkZWxldGlvbnMoLSkKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdmZzY29yZS9leHRy
YS5sZAo+IAo+IGRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9NYWtlZmlsZS51ayBiL2xpYi92ZnNj
b3JlL01ha2VmaWxlLnVrCj4gaW5kZXggMTI0NmFlNTMuLjA2OTMzZDk2IDEwMDY0NAo+IC0tLSBh
L2xpYi92ZnNjb3JlL01ha2VmaWxlLnVrCj4gKysrIGIvbGliL3Zmc2NvcmUvTWFrZWZpbGUudWsK
PiBAQCAtNSwzICs1LDUgQEAgQ0lOQ0xVREVTLXkgKz0gLUkkKExJQlZGU0NPUkVfQkFTRSkvaW5j
bHVkZQo+ICAgTElCVkZTQ09SRV9TUkNTLXkgKz0gJChMSUJWRlNDT1JFX0JBU0UpL2ZkLmMKPiAg
IExJQlZGU0NPUkVfU1JDUy15ICs9ICQoTElCVkZTQ09SRV9CQVNFKS9maWxlLmMKPiAgIExJQlZG
U0NPUkVfU1JDUy15ICs9ICQoTElCVkZTQ09SRV9CQVNFKS9zdGRpby5jCj4gKwo+ICtFWFRSQV9M
RF9TQ1JJUFQtJChDT05GSUdfTElCVkZTQ09SRSkgKz0gJChMSUJWRlNDT1JFX0JBU0UpL2V4dHJh
LmxkCj4gXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCj4gZGlmZiAtLWdpdCBhL2xpYi92ZnNj
b3JlL2V4dHJhLmxkIGIvbGliL3Zmc2NvcmUvZXh0cmEubGQKPiBuZXcgZmlsZSBtb2RlIDEwMDY0
NAo+IGluZGV4IDAwMDAwMDAwLi4xNzNiMjM1MAo+IC0tLSAvZGV2L251bGwKPiArKysgYi9saWIv
dmZzY29yZS9leHRyYS5sZAo+IEBAIC0wLDAgKzEsOSBAQAo+ICtTRUNUSU9OUwo+ICt7Cj4gKwku
dWtfZnNfbGlzdCA6IHsKPiArCQlQUk9WSURFKHVrX2ZzbGlzdF9zdGFydCA9IC4pOwo+ICsJCUtF
RVAgKCooLnVrX2ZzX2xpc3QpKQo+ICsgICAgICAgICAgICAgICAgUFJPVklERSh1a19mc2xpc3Rf
ZW5kID0gLik7Cj4gKwl9Cj4gK30KPiArSU5TRVJUIEFGVEVSIC50ZXh0Owo+IGRpZmYgLS1naXQg
YS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvbW91bnQuaCBiL2xpYi92ZnNjb3JlL2luY2x1
ZGUvdmZzY29yZS9tb3VudC5oCj4gaW5kZXggN2E2MzhkYmUuLmI0YTA3MzIzIDEwMDY0NAo+IC0t
LSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9tb3VudC5oCj4gKysrIGIvbGliL3Zmc2Nv
cmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmgKPiBAQCAtMTAwLDEyICsxMDAsMTYgQEAgc3RydWN0
IG1vdW50IHsKPiAgIC8qCj4gICAgKiBGaWxlc3lzdGVtIHR5cGUgc3dpdGNoIHRhYmxlLgo+ICAg
ICovCj4gLXN0cnVjdCB2ZnNzdyB7Cj4gK3N0cnVjdCB2ZnNjb3JlX2ZzX3R5cGUgewo+ICAgCWNv
bnN0IGNoYXIgICAgICAqdnNfbmFtZTsJLyogbmFtZSBvZiBmaWxlIHN5c3RlbSAqLwo+ICAgCWlu
dAkJKCp2c19pbml0KSh2b2lkKTsgLyogaW5pdGlhbGl6ZSByb3V0aW5lICovCj4gICAJc3RydWN0
IHZmc29wcwkqdnNfb3A7CQkvKiBwb2ludGVyIHRvIHZmcyBvcGVyYXRpb24gKi8KPiAgIH07Cj4g
PiArI2RlZmluZSBVS19GU19SRUdJU1RFUihmc3N3KQkJCQkJXAo+ICsJc3RhdGljIHZvaWQgX19h
dHRyaWJ1dGUoKF9fc2VjdGlvbl9fKCIudWtfZnNfbGlzdCIpKSkJXAo+ICsJCSpfX3B0cl8jI2Zz
c3cgX191c2VkID0gJmZzc3c7CQkJCVwKPiArCldoeSBkbyB3ZSB1c2UgdGhlIHR5cGUgYXMgdm9p
ZCAqIGluc3RlYWQgb2Ygc3RydWN0IHZmc2NvcmVfZnNfdHlwZSo/CgoKPiAgIC8qCj4gICAgKiBP
cGVyYXRpb25zIHN1cHBvcnRlZCBvbiB2aXJ0dWFsIGZpbGUgc3lzdGVtLgo+ICAgICovCj4gZGlm
ZiAtLWdpdCBhL2xpYi92ZnNjb3JlL21vdW50LmMgYi9saWIvdmZzY29yZS9tb3VudC5jCj4gaW5k
ZXggZTEyYzAwMzMuLmRhZWQ4N2ZhIDEwMDY0NAo+IC0tLSBhL2xpYi92ZnNjb3JlL21vdW50LmMK
PiArKysgYi9saWIvdmZzY29yZS9tb3VudC5jCj4gQEAgLTYyLDIwICs2MiwzMiBAQCBVS19MSVNU
X0hFQUQobW91bnRfbGlzdCk7Cj4gICAgKi8KPiAgIHN0YXRpYyBzdHJ1Y3QgdWtfbXV0ZXggbW91
bnRfbG9jazsKPiAgIAo+ICtleHRlcm4gY29uc3Qgc3RydWN0IHZmc2NvcmVfZnNfdHlwZSAqdWtf
ZnNsaXN0X3N0YXJ0Owo+ICtleHRlcm4gY29uc3Qgc3RydWN0IHZmc2NvcmVfZnNfdHlwZSAqdWtf
ZnNsaXN0X2VuZDsKPiArCj4gKyNkZWZpbmUgZm9yX2VhY2hfZnMoaXRlcikJCQlcCj4gKwlmb3Ig
KGl0ZXIgPSAmdWtfZnNsaXN0X3N0YXJ0OwlcCj4gKwkgICAgIGl0ZXIgPCAmdWtfZnNsaXN0X2Vu
ZDsJCVwKPiArCSAgICAgaXRlcisrKQo+ICsKPiAgIC8qCj4gICAgKiBMb29rdXAgZmlsZSBzeXN0
ZW0uCj4gICAgKi8KPiAtc3RhdGljIGNvbnN0IHN0cnVjdCB2ZnNzdyAqCj4gK3N0YXRpYyBjb25z
dCBzdHJ1Y3QgdmZzY29yZV9mc190eXBlICoKPiAgIGZzX2dldGZzKGNvbnN0IGNoYXIgKm5hbWUp
Cj4gICB7Cj4gLQljb25zdCBzdHJ1Y3QgdmZzc3cgKmZzOwo+ICsJY29uc3Qgc3RydWN0IHZmc2Nv
cmVfZnNfdHlwZSAqZnMgPSBOVUxMLCAqKl9fZnM7Cj4gKwo+ICsJZm9yX2VhY2hfZnMoX19mcykg
ewo+ICsJCWZzID0gKl9fZnM7Cj4gKwkJaWYgKGZzID09IE5VTEwpCj4gKwkJCWNvbnRpbnVlOwo+
ICAgCj4gLQlmb3IgKGZzID0gdmZzc3c7IGZzLT52c19uYW1lOyBmcysrKSB7Cj4gICAJCWlmICgh
c3RybmNtcChuYW1lLCBmcy0+dnNfbmFtZSwgRlNNQVhOQU1FUykpCj4gICAJCQlicmVhazsKPiAg
IAl9Cj4gLQlpZiAoIWZzLT52c19uYW1lKQo+IC0JCXJldHVybiBudWxscHRyOwo+ICsJaWYgKCFm
cyB8fCAhZnMtPnZzX25hbWUpCj4gKwkJcmV0dXJuIE5VTEw7Cj4gICAJcmV0dXJuIGZzOwo+ICAg
fQo+ICAgCj4gQEAgLTk5LDcgKzExMSw3IEBAIGludCBkZXZpY2VfY2xvc2Uoc3RydWN0IGRldmlj
ZSAqZGV2KQo+ICAgaW50Cj4gICBzeXNfbW91bnQoY29uc3QgY2hhciAqZGV2LCBjb25zdCBjaGFy
ICpkaXIsIGNvbnN0IGNoYXIgKmZzbmFtZSwgaW50IGZsYWdzLCBjb25zdCB2b2lkICpkYXRhKQo+
ICAgewo+IC0JY29uc3Qgc3RydWN0IHZmc3N3ICpmczsKPiArCWNvbnN0IHN0cnVjdCB2ZnNjb3Jl
X2ZzX3R5cGUgKmZzOwo+ICAgCXN0cnVjdCBtb3VudCAqbXA7Cj4gICAJc3RydWN0IGRldmljZSAq
ZGV2aWNlOwo+ICAgCXN0cnVjdCBkZW50cnkgKmRwX2NvdmVyZWQgPSBOVUxMOwo+IAoKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1h
aWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0
cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Fri Feb 08 15:06:42 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 08 Feb 2019 15:06:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gs7jk-00066q-FV; Fri, 08 Feb 2019 15:06:40 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=p2U7=QP=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1gs7jj-00066l-3J
 for minios-devel@lists.xen.org; Fri, 08 Feb 2019 15:06:39 +0000
X-Inumbo-ID: 20699bb6-2bb3-11e9-ba54-ab4c912503d6
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 20699bb6-2bb3-11e9-ba54-ab4c912503d6;
 Fri, 08 Feb 2019 15:06:36 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 1B996F2051;
 Fri,  8 Feb 2019 16:06:35 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id lvXhoBCbxbJq; Fri,  8 Feb 2019 16:06:34 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id DFD73F200D
 for <minios-devel@lists.xen.org>; Fri,  8 Feb 2019 16:06:32 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 8 Feb 2019 16:06:32
 +0100
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
 <20190207135901.9122-13-yuri.volchkov@neclab.eu>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <6951dfdb-6bcf-e4fc-22cb-6ad46aaaaafa@neclab.eu>
Date: Fri, 8 Feb 2019 16:06:32 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190207135901.9122-13-yuri.volchkov@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v3 12/23] lib/vfscore: prefix
 exported functions
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gWXVyaSwKClRoaXMgcGF0Y2ggaXMgZmluZS4KClRoZXJlIGlzIGEgY29tbWVudCB3aGlj
aCBpcyB1bnJlbGF0ZWQgdG8gdGhpcyBwYXRjaC4gV2Ugd2lsbCBoYXZlIHRvIGZpeCBpdC4KClJl
dmlld2VkLWJ5OiBTaGFyYW4gU2FudGhhbmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xhYi5ldT4K
ClRoYW5rcyAmIFJlZ2FyZHMKU2hhcmFuCgoKT24gMi83LzE5IDI6NTggUE0sIFl1cmkgVm9sY2hr
b3Ygd3JvdGU6Cj4gU2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBu
ZWNsYWIuZXU+Cj4gLS0tCj4gICBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvbW91bnQuaCB8
ICA0ICsrLS0KPiAgIGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9wcmV4LmggIHwgIDYgKysr
LS0tCj4gICBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdWlvLmggICB8ICAyICstCj4gICBs
aWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUuaCB8IDEwICsrKysrLS0tLS0KPiAgIGxp
Yi92ZnNjb3JlL21vdW50LmMgICAgICAgICAgICAgICAgIHwgIDkgKysrKy0tLS0tCj4gICBsaWIv
dmZzY29yZS9zdWJyX3Vpby5jICAgICAgICAgICAgICB8ICAyICstCj4gICBsaWIvdmZzY29yZS92
ZnMuaCAgICAgICAgICAgICAgICAgICB8ICAyICstCj4gICBsaWIvdmZzY29yZS92bm9kZS5jICAg
ICAgICAgICAgICAgICB8IDEyICsrKysrKy0tLS0tLQo+ICAgOCBmaWxlcyBjaGFuZ2VkLCAyMyBp
bnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvbGliL3Zmc2Nv
cmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmggYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUv
bW91bnQuaAo+IGluZGV4IGI0YTA3MzIzLi5hMTIyN2NiZSAxMDA2NDQKPiAtLS0gYS9saWIvdmZz
Y29yZS9pbmNsdWRlL3Zmc2NvcmUvbW91bnQuaAo+ICsrKyBiL2xpYi92ZnNjb3JlL2luY2x1ZGUv
dmZzY29yZS9tb3VudC5oCj4gQEAgLTEzOSwxMiArMTM5LDEyIEBAIHR5cGVkZWYgaW50ICgqdmZz
b3Bfc3RhdGZzX3QpKHN0cnVjdCBtb3VudCAqLCBzdHJ1Y3Qgc3RhdGZzICopOwo+ICAgCj4gICAj
ZGVmaW5lIFZGU19OVUxMCQkgICAgKCh2b2lkICopdmZzX251bGwpCj4gICAKPiAtaW50CXZmc19u
dWxsb3Aodm9pZCk7Cj4gK2ludAl2ZnNjb3JlX251bGxvcCh2b2lkKTsKPiAgIGludAl2ZnNfZWlu
dmFsKHZvaWQpOwo+ICAgCj4gICB2b2lkCSB2ZnNfYnVzeShzdHJ1Y3QgbW91bnQgKm1wKTsKPiAg
IHZvaWQJIHZmc191bmJ1c3koc3RydWN0IG1vdW50ICptcCk7Cj4gICAKPiAtdm9pZAkgcmVsZWFz
ZV9tcF9kZW50cmllcyhzdHJ1Y3QgbW91bnQgKm1wKTsKPiArdm9pZAkgdmZzY29yZV9yZWxlYXNl
X21wX2RlbnRyaWVzKHN0cnVjdCBtb3VudCAqbXApOwo+ICAgCj4gICAjZW5kaWYJLyogIV9TWVNf
TU9VTlRfSF8gKi8KPiBkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3By
ZXguaCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9wcmV4LmgKPiBpbmRleCA4YTMwNmQ1
NC4uMjI2MWIyMTYgMTAwNjQ0Cj4gLS0tIGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3By
ZXguaAo+ICsrKyBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9wcmV4LmgKPiBAQCAtMzMs
OCArMzMsOCBAQAo+ICAgICogVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQgT1IgTU9E
SUZJRUQgSU4gQU5ZIFdBWS4KPiAgICAqLwo+ICAgCj4gLSNpZm5kZWYgX09TVl9QUkVYX0gKPiAt
I2RlZmluZSBfT1NWX1BSRVhfSCAxCj4gKyNpZm5kZWYgX1VLX1BSRVhfSAo+ICsjZGVmaW5lIF9V
S19QUkVYX0ggMQo+ICAgCkluIHRoaXMgZmlsZSwgd2UgZGVmaW5lIFBBR0VfU0laRSBhbmQgUEFH
RV9NQVNLLiBXZSBzaG91bGQgdXNlIGl0IGZyb20KV2UgYXJlIHNob3VsZCB1c2UgdGhlIGRlZmlu
aXRpb24gZnJvbSB1ay9hcmNoL2xpbWl0cy5oCgo+ICAgCj4gICAjaW5jbHVkZSA8dW5pc3RkLmg+
Cj4gQEAgLTUyLDQgKzUyLDQgQEAgc2l6ZV90IHN0cmxjcHkoY2hhciAqZHN0LCBjb25zdCBjaGFy
ICpzcmMsIHNpemVfdCBzaXopOwo+ICAgCj4gICB2b2lkIHN5c19wYW5pYyhjb25zdCBjaGFyICop
Owo+ICAgCj4gLSNlbmRpZiAvKiBfT1NWX1BSRVhfSCAqLwo+ICsjZW5kaWYgLyogX1VLX1BSRVhf
SCAqLwo+IGRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdWlvLmggYi9s
aWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdWlvLmgKPiBpbmRleCA4YWQxZTNmYi4uYzczNGZh
MTkgMTAwNjQ0Cj4gLS0tIGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Vpby5oCj4gKysr
IGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Vpby5oCj4gQEAgLTU3LDYgKzU3LDYgQEAg
c3RydWN0IHVpbyB7Cj4gICAJZW51bQl1aW9fcncgdWlvX3J3OwkJLyogb3BlcmF0aW9uICovCj4g
ICB9Owo+ICAgCj4gLWludAl1aW9tb3ZlKHZvaWQgKmNwLCBpbnQgbiwgc3RydWN0IHVpbyAqdWlv
KTsKPiAraW50CXZmc2NvcmVfdWlvbW92ZSh2b2lkICpjcCwgaW50IG4sIHN0cnVjdCB1aW8gKnVp
byk7Cj4gICAKPiAgICNlbmRpZiAvKiAhX1VJT19IXyAqLwo+IGRpZmYgLS1naXQgYS9saWIvdmZz
Y29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUuaCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29y
ZS92bm9kZS5oCj4gaW5kZXggNDE1NWE3ZGIuLjA4YjhlNTYyIDEwMDY0NAo+IC0tLSBhL2xpYi92
ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5oCj4gKysrIGIvbGliL3Zmc2NvcmUvaW5jbHVk
ZS92ZnNjb3JlL3Zub2RlLmgKPiBAQCAtMjI5LDEwICsyMjksMTAgQEAgc3RydWN0IHZub3BzIHsK
PiAgICNkZWZpbmUgVk9QX1JFQURMSU5LKFZQLCBVKSAgICAgICAgKChWUCktPnZfb3AtPnZvcF9y
ZWFkbGluaykoVlAsIFUpCj4gICAjZGVmaW5lIFZPUF9TWU1MSU5LKERWUCwgT1AsIE5QKSAgICgo
RFZQKS0+dl9vcC0+dm9wX3N5bWxpbmspKERWUCwgT1AsIE5QKQo+ICAgCj4gLWludAkgdm9wX251
bGxvcCh2b2lkKTsKPiAtaW50CSB2b3BfZWludmFsKHZvaWQpOwo+IC1pbnQJIHZvcF9lcGVybSh2
b2lkKTsKPiAtaW50CSB2b3BfZXJvZnModm9pZCk7Cj4gK2ludAkgdmZzY29yZV92b3BfbnVsbG9w
KHZvaWQpOwo+ICtpbnQJIHZmc2NvcmVfdm9wX2VpbnZhbCh2b2lkKTsKPiAraW50CSB2ZnNjb3Jl
X3ZvcF9lcGVybSh2b2lkKTsKPiAraW50CSB2ZnNjb3JlX3ZvcF9lcm9mcyh2b2lkKTsKPiAgIHN0
cnVjdCB2bm9kZSAqdm5fbG9va3VwKHN0cnVjdCBtb3VudCAqLCB1aW50NjRfdCk7Cj4gICB2b2lk
CSB2bl9sb2NrKHN0cnVjdCB2bm9kZSAqKTsKPiAgIHZvaWQJIHZuX3VubG9jayhzdHJ1Y3Qgdm5v
ZGUgKik7Cj4gQEAgLTI0MCw3ICsyNDAsNyBAQCBpbnQJIHZuX3N0YXQoc3RydWN0IHZub2RlICos
IHN0cnVjdCBzdGF0ICopOwo+ICAgaW50CSB2bl9zZXR0aW1lcyhzdHJ1Y3Qgdm5vZGUgKiwgc3Ry
dWN0IHRpbWVzcGVjWzJdKTsKPiAgIGludAkgdm5fc2V0bW9kZShzdHJ1Y3Qgdm5vZGUgKiwgbW9k
ZV90IG1vZGUpOwo+ICAgaW50CSB2bl9hY2Nlc3Moc3RydWN0IHZub2RlICosIGludCk7Cj4gLWlu
dAkgdmdldChzdHJ1Y3QgbW91bnQgKiwgdWludDY0X3QgaW5vLCBzdHJ1Y3Qgdm5vZGUgKip2cHAp
Owo+ICtpbnQJIHZmc2NvcmVfdmdldChzdHJ1Y3QgbW91bnQgKiwgdWludDY0X3QgaW5vLCBzdHJ1
Y3Qgdm5vZGUgKip2cHApOwo+ICAgdm9pZAkgdnB1dChzdHJ1Y3Qgdm5vZGUgKik7Cj4gICB2b2lk
CSB2cmVmKHN0cnVjdCB2bm9kZSAqKTsKPiAgIHZvaWQJIHZyZWxlKHN0cnVjdCB2bm9kZSAqKTsK
PiBkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvbW91bnQuYyBiL2xpYi92ZnNjb3JlL21vdW50LmMK
PiBpbmRleCBkYWVkODdmYS4uNjk0MTc1ZjEgMTAwNjQ0Cj4gLS0tIGEvbGliL3Zmc2NvcmUvbW91
bnQuYwo+ICsrKyBiL2xpYi92ZnNjb3JlL21vdW50LmMKPiBAQCAtMjQyLDcgKzI0Miw3IEBAIHN5
c19tb3VudChjb25zdCBjaGFyICpkZXYsIGNvbnN0IGNoYXIgKmRpciwgY29uc3QgY2hhciAqZnNu
YW1lLCBpbnQgZmxhZ3MsIGNvbnN0Cj4gICB9Cj4gICAKPiAgIHZvaWQKPiAtcmVsZWFzZV9tcF9k
ZW50cmllcyhzdHJ1Y3QgbW91bnQgKm1wKQo+ICt2ZnNjb3JlX3JlbGVhc2VfbXBfZGVudHJpZXMo
c3RydWN0IG1vdW50ICptcCkKPiAgIHsKPiAgIAkvKiBEZWNyZW1lbnQgcmVmZXJlY2UgY291bnQg
b2Ygcm9vdCB2bm9kZSAqLwo+ICAgCWlmIChtcC0+bV9jb3ZlcmVkKSB7Cj4gQEAgLTQ2Niw4ICs0
NjYsNyBAQCB2ZnNfdW5idXN5KHN0cnVjdCBtb3VudCAqbXApCj4gICAJdWthcmNoX2RlYygmbXAt
Pm1fY291bnQpOwo+ICAgfQo+ICAgCj4gLWludAo+IC12ZnNfbnVsbG9wKHZvaWQpCj4gK2ludCB2
ZnNjb3JlX251bGxvcCh2b2lkKQo+ICAgewo+ICAgCXJldHVybiAwOwo+ICAgfQo+IEBAIC00ODAs
MTIgKzQ3OSwxMiBAQCB2ZnNfZWludmFsKHZvaWQpCj4gICAKPiAgICNpZmRlZiBERUJVR19WRlMK
PiAgIHZvaWQKPiAtbW91bnRfZHVtcCh2b2lkKQo+ICt2ZnNjb3JlX21vdW50X2R1bXAodm9pZCkK
PiAgIHsKPiAgIAlzdHJ1Y3QgbW91bnQgKm1wOwo+ICAgCXVrX211dGV4X2xvY2soJm1vdW50X2xv
Y2spOwo+ICAgCj4gLQl1a19wcl9kZWJ1ZygibW91bnRfZHVtcFxuIik7Cj4gKwl1a19wcl9kZWJ1
ZygidmZzY29yZV9tb3VudF9kdW1wXG4iKTsKPiAgIAl1a19wcl9kZWJ1ZygiZGV2ICAgICAgY291
bnQgcm9vdFxuIik7Cj4gICAJdWtfcHJfZGVidWcoIi0tLS0tLS0tIC0tLS0tIC0tLS0tLS0tXG4i
KTsKPiAgIAo+IGRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9zdWJyX3Vpby5jIGIvbGliL3Zmc2Nv
cmUvc3Vicl91aW8uYwo+IGluZGV4IGQ4ZTlkMWJlLi5hYTE3NjA3NCAxMDA2NDQKPiAtLS0gYS9s
aWIvdmZzY29yZS9zdWJyX3Vpby5jCj4gKysrIGIvbGliL3Zmc2NvcmUvc3Vicl91aW8uYwo+IEBA
IC00Niw3ICs0Niw3IEBACj4gICAjaW5jbHVkZSA8dmZzY29yZS91aW8uaD4KPiAgIAo+ICAgaW50
Cj4gLXVpb21vdmUodm9pZCAqY3AsIGludCBuLCBzdHJ1Y3QgdWlvICp1aW8pCj4gK3Zmc2NvcmVf
dWlvbW92ZSh2b2lkICpjcCwgaW50IG4sIHN0cnVjdCB1aW8gKnVpbykKPiAgIHsKPiAgIAlVS19B
U1NFUlQodWlvLT51aW9fcncgPT0gVUlPX1JFQUQgfHwgdWlvLT51aW9fcncgPT0gVUlPX1dSSVRF
KTsKPiAgIAo+IGRpZmYgLS1naXQgYS9saWIvdmZzY29yZS92ZnMuaCBiL2xpYi92ZnNjb3JlL3Zm
cy5oCj4gaW5kZXggNjA5ZGMxZjUuLjk0ZmU4OWE1IDEwMDY0NAo+IC0tLSBhL2xpYi92ZnNjb3Jl
L3Zmcy5oCj4gKysrIGIvbGliL3Zmc2NvcmUvdmZzLmgKPiBAQCAtMTQ4LDcgKzE0OCw3IEBAIHZv
aWQgZGVudHJ5X2luaXQodm9pZCk7Cj4gICAKPiAgICNpZmRlZiBERUJVR19WRlMKPiAgIHZvaWQJ
IHZub2RlX2R1bXAodm9pZCk7Cj4gLXZvaWQJIG1vdW50X2R1bXAodm9pZCk7Cj4gK3ZvaWQJIHZm
c2NvcmVfbW91bnRfZHVtcCh2b2lkKTsKPiAgICNlbmRpZgo+ICAgCj4gICBzdGF0aWMgdm9pZCBf
X2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSB1a192ZnNjb3JlX3RyYWNlKGludCBmb28gX191bnVzZWQs
IC4uLikKPiBkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvdm5vZGUuYyBiL2xpYi92ZnNjb3JlL3Zu
b2RlLmMKPiBpbmRleCA4NmU2ZDljNy4uZTllMDQwYWEgMTAwNjQ0Cj4gLS0tIGEvbGliL3Zmc2Nv
cmUvdm5vZGUuYwo+ICsrKyBiL2xpYi92ZnNjb3JlL3Zub2RlLmMKPiBAQCAtNjYsNyArNjYsNyBA
QCBpbnQgdnR0b2lmX3RhYlsxMF0gPSB7Cj4gICAgKiAtLS0tLS0tLS0tIC0tLS0tLS0tLSAtLS0t
LS0tLS0tCj4gICAgKiB2bl9sb2NrICAgICAqICAgICAgICBMb2NrCj4gICAgKiB2bl91bmxvY2sg
ICAqICAgICAgICBVbmxvY2sKPiAtICogdmdldCAgICAgICAgMSAgICAgICAgTG9jawo+ICsgKiB2
ZnNjb3JlX3ZnZXQgICAgICAgIDEgICAgICAgIExvY2sKPiAgICAqIHZwdXQgICAgICAgLTEgICAg
ICAgIFVubG9jawo+ICAgICogdnJlZiAgICAgICArMSAgICAgICAgKgo+ICAgICogdnJlbGUgICAg
ICAtMSAgICAgICAgKgo+IEBAIC0xNzIsNyArMTcyLDcgQEAgdm5fdW5sb2NrKHN0cnVjdCB2bm9k
ZSAqdnApCj4gICAgKiBSZXR1cm5zIDEgaWYgdm5vZGUgd2FzIGZvdW5kIGluIGNhY2hlOyBvdGhl
cndpc2UgcmV0dXJucyAwLgo+ICAgICovCj4gICBpbnQKPiAtdmdldChzdHJ1Y3QgbW91bnQgKm1w
LCB1aW50NjRfdCBpbm8sIHN0cnVjdCB2bm9kZSAqKnZwcCkKPiArdmZzY29yZV92Z2V0KHN0cnVj
dCBtb3VudCAqbXAsIHVpbnQ2NF90IGlubywgc3RydWN0IHZub2RlICoqdnBwKQo+ICAgewo+ICAg
CXN0cnVjdCB2bm9kZSAqdnA7Cj4gICAJaW50IGVycm9yOwo+IEBAIC00NzYsMjUgKzQ3NiwyNSBA
QCB2bm9kZV9kdW1wKHZvaWQpCj4gICAjZW5kaWYKPiAgIAo+ICAgaW50Cj4gLXZvcF9udWxsb3Ao
dm9pZCkKPiArdmZzY29yZV92b3BfbnVsbG9wKHZvaWQpCj4gICB7Cj4gICAJcmV0dXJuIDA7Cj4g
ICB9Cj4gICAKPiAgIGludAo+IC12b3BfZWludmFsKHZvaWQpCj4gK3Zmc2NvcmVfdm9wX2VpbnZh
bCh2b2lkKQo+ICAgewo+ICAgCXJldHVybiBFSU5WQUw7Cj4gICB9Cj4gICAKPiAgIGludAo+IC12
b3BfZXBlcm0odm9pZCkKPiArdmZzY29yZV92b3BfZXBlcm0odm9pZCkKPiAgIHsKPiAgIAlyZXR1
cm4gRVBFUk07Cj4gICB9Cj4gICAKPiAgIGludAo+IC12b3BfZXJvZnModm9pZCkKPiArdmZzY29y
ZV92b3BfZXJvZnModm9pZCkKPiAgIHsKPiAgIAlyZXR1cm4gRVJPRlM7Cj4gICB9Cj4gCgpfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwg
bWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xp
c3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Fri Feb 08 15:19:38 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 08 Feb 2019 15:19:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gs7wH-0007De-OV; Fri, 08 Feb 2019 15:19:37 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=9frw=QP=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1gs7wH-0007DU-24
 for minios-devel@lists.xen.org; Fri, 08 Feb 2019 15:19:37 +0000
X-Inumbo-ID: eef91c9e-2bb4-11e9-a5bc-9fb505e4905a
Received: from queen.nlehd.de (unknown [195.37.154.80])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id eef91c9e-2bb4-11e9-a5bc-9fb505e4905a;
 Fri, 08 Feb 2019 15:19:31 +0000 (UTC)
Received: from c414.ant-net (c414.ant-net [192.168.0.156])
 by queen.nlehd.de (Postfix) with ESMTP id 4B27D43C8E;
 Fri,  8 Feb 2019 16:19:32 +0100 (CET)
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: minios-devel@lists.xen.org
Date: Fri,  8 Feb 2019 16:19:26 +0100
Message-Id: <20190208151926.29051-3-simon.kuenzer@neclab.eu>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190208151926.29051-1-simon.kuenzer@neclab.eu>
References: <20190208151926.29051-1-simon.kuenzer@neclab.eu>
Subject: [Minios-devel] [UNIKRAFT PATCH 2/2] plat/common: Add cpu.h for Arm32
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: dafna3@gmail.com, Simon Kuenzer <simon.kuenzer@neclab.eu>,
 sharan.santhanam@neclab.eu
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

QWRkcyBhIG1pbmltYWwgY3B1LmggZm9yIEFybTMyIHNvIHRoYXQgbGludXggdXNlciBzcGFjZQpj
YW4gYmUgYnVpbHQgYWdhaW4uCgpTaWduZWQtb2ZmLWJ5OiBTaW1vbiBLdWVuemVyIDxzaW1vbi5r
dWVuemVyQG5lY2xhYi5ldT4KLS0tCiBwbGF0L2NvbW1vbi9pbmNsdWRlL2FybS9hcm0vY3B1Lmgg
fCAzOSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHBsYXQvY29tbW9u
L2luY2x1ZGUvYXJtL2NwdS5oICAgICB8ICA0ICsrKy0KIHBsYXQvY29tbW9uL2luY2x1ZGUvY3B1
LmggICAgICAgICB8ICAyICstCiBwbGF0L2xpbnV4dS9zZXR1cC5jICAgICAgICAgICAgICAgfCAg
NCArLS0tCiA0IGZpbGVzIGNoYW5nZWQsIDQ0IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0p
CiBjcmVhdGUgbW9kZSAxMDA2NDQgcGxhdC9jb21tb24vaW5jbHVkZS9hcm0vYXJtL2NwdS5oCgpk
aWZmIC0tZ2l0IGEvcGxhdC9jb21tb24vaW5jbHVkZS9hcm0vYXJtL2NwdS5oIGIvcGxhdC9jb21t
b24vaW5jbHVkZS9hcm0vYXJtL2NwdS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwLi42OTdhMjBhMQotLS0gL2Rldi9udWxsCisrKyBiL3BsYXQvY29tbW9uL2luY2x1ZGUvYXJt
L2FybS9jcHUuaApAQCAtMCwwICsxLDM5IEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog
QlNELTMtQ2xhdXNlICovCisvKgorICogQXV0aG9yczogU2ltb24gS3VlbnplciA8c2ltb24ua3Vl
bnplckBuZWNsYWIuZXU+CisgKgorICoKKyAqIENvcHlyaWdodCAoYykgMjAxOSwgTkVDIExhYm9y
YXRvcmllcyBFdXJvcGUgR21iSCwgTkVDIENvcnBvcmF0aW9uLgorICogICAgICAgICAgICAgICAg
ICAgICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhl
IG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqICAg
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiAgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgorICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKKyAq
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqIFRISVMgSEVBREVSIE1BWSBOT1QgQkUg
RVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCisgKi8KKworc3RhdGljIGlubGluZSB2
b2lkIF9pbml0X2NwdWZlYXR1cmVzKHZvaWQpCit7Cit9CmRpZmYgLS1naXQgYS9wbGF0L2NvbW1v
bi9pbmNsdWRlL2FybS9jcHUuaCBiL3BsYXQvY29tbW9uL2luY2x1ZGUvYXJtL2NwdS5oCmluZGV4
IDFjMDY3MjE4Li41NTg5NDVmMyAxMDA2NDQKLS0tIGEvcGxhdC9jb21tb24vaW5jbHVkZS9hcm0v
Y3B1LmgKKysrIGIvcGxhdC9jb21tb24vaW5jbHVkZS9hcm0vY3B1LmgKQEAgLTM1LDcgKzM1LDkg
QEAKICNpZm5kZWYgX19QTEFUX0NNTl9BUk1fQ1BVX0hfXwogI2RlZmluZSBfX1BMQVRfQ01OX0FS
TV9DUFVfSF9fCiAKLSNpZiBkZWZpbmVkKF9fQVJNXzY0X18pCisjaWYgZGVmaW5lZChfX0FSTV8z
Ml9fKQorI2luY2x1ZGUgPGFybS9hcm0vY3B1Lmg+CisjZWxpZiBkZWZpbmVkKF9fQVJNXzY0X18p
CiAjaW5jbHVkZSA8YXJtL2FybTY0L2NwdS5oPgogI2Vsc2UKICNlcnJvciAiQWRkIGNwdS5oIGZv
ciBjdXJyZW50IGFyY2hpdGVjdHVyZS4iCmRpZmYgLS1naXQgYS9wbGF0L2NvbW1vbi9pbmNsdWRl
L2NwdS5oIGIvcGxhdC9jb21tb24vaW5jbHVkZS9jcHUuaAppbmRleCBjYTJlMTVlNS4uYWMyZjhm
ZTMgMTAwNjQ0Ci0tLSBhL3BsYXQvY29tbW9uL2luY2x1ZGUvY3B1LmgKKysrIGIvcGxhdC9jb21t
b24vaW5jbHVkZS9jcHUuaApAQCAtMzgsNyArMzgsNyBAQAogI2luY2x1ZGUgPHVrL2FyY2gvbGNw
dS5oPgogI2lmIGRlZmluZWQoX19YODZfNjRfXykKICNpbmNsdWRlIDx4ODYvY3B1Lmg+Ci0jZWxp
ZiBkZWZpbmVkKF9fQVJNXzY0X18pCisjZWxpZiBkZWZpbmVkKF9fQVJNXzMyX18pIHx8IGRlZmlu
ZWQoX19BUk1fNjRfXykKICNpbmNsdWRlIDxhcm0vY3B1Lmg+CiAjZWxzZQogI2Vycm9yICJBZGQg
Y3B1LmggZm9yIGN1cnJlbnQgYXJjaGl0ZWN0dXJlLiIKZGlmZiAtLWdpdCBhL3BsYXQvbGludXh1
L3NldHVwLmMgYi9wbGF0L2xpbnV4dS9zZXR1cC5jCmluZGV4IDc4NDlmNjgyLi41MDQ1NDQzNyAx
MDA2NDQKLS0tIGEvcGxhdC9saW51eHUvc2V0dXAuYworKysgYi9wbGF0L2xpbnV4dS9zZXR1cC5j
CkBAIC00NSw5ICs0NSw3IEBACiAjaW5jbHVkZSA8dWsvcGxhdC9ib290c3RyYXAuaD4KICNpbmNs
dWRlIDx1ay9hc3NlcnQuaD4KICNpbmNsdWRlIDx1ay9lcnJwdHIuaD4KLSNpZiBkZWZpbmVkIF9f
WDg2XzY0X18KLSNpbmNsdWRlIDx4ODYvY3B1Lmg+Ci0jZW5kaWYKKyNpbmNsdWRlIDxjcHUuaD4K
IAogc3RydWN0IGxpYmxpbnV4dXBsYXRfb3B0cyBfbGlibGludXh1cGxhdF9vcHRzID0geyAwIH07
CiAKLS0gCjIuMTEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnBy
b2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9t
aW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Fri Feb 08 15:19:38 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 08 Feb 2019 15:19:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gs7wH-0007Dj-Qo; Fri, 08 Feb 2019 15:19:37 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=9frw=QP=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1gs7wH-0007DV-1z
 for minios-devel@lists.xen.org; Fri, 08 Feb 2019 15:19:37 +0000
X-Inumbo-ID: eef52dbe-2bb4-11e9-b86f-9bcbe5f93a90
Received: from queen.nlehd.de (unknown [195.37.154.80])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id eef52dbe-2bb4-11e9-b86f-9bcbe5f93a90;
 Fri, 08 Feb 2019 15:19:31 +0000 (UTC)
Received: from c414.ant-net (c414.ant-net [192.168.0.156])
 by queen.nlehd.de (Postfix) with ESMTP id 40A61413FB;
 Fri,  8 Feb 2019 16:19:32 +0100 (CET)
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: minios-devel@lists.xen.org
Date: Fri,  8 Feb 2019 16:19:25 +0100
Message-Id: <20190208151926.29051-2-simon.kuenzer@neclab.eu>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190208151926.29051-1-simon.kuenzer@neclab.eu>
References: <20190208151926.29051-1-simon.kuenzer@neclab.eu>
Subject: [Minios-devel] [UNIKRAFT PATCH 1/2] arch/arm: Correct source paths
 in libarmmath
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: dafna3@gmail.com, sharan.santhanam@neclab.eu
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

RnJvbTogRGFmbmEgSGlyc2NoZmVsZCA8ZGFmbmEzQGdtYWlsLmNvbT4KClRoZSBzb3VyY2UgZmls
ZXMgb2YgbGliYXJtbWF0aCB3ZXJlIG1vdmVkIHRvIGEgc3ViZGlyZWN0b3J5CndpdGhvdXQgbW9k
aWZpeWluZyB0aGUgY29ycmVzcG9uZGluZyBNYWtlZmlsZS51ay4gVGhpcyBjYXVzZWQKY29tcGls
YXRpb24gZXJyb3MuCgpTaWduZWQtb2ZmLWJ5OiBEYWZuYSBIaXJzY2hmZWxkIDxkYWZuYTNAZ21h
aWwuY29tPgpSZXZpZXdlZC1ieTogU2ltb24gS3VlbnplciA8c2ltb24ua3VlbnplckBuZWNsYWIu
ZXU+Ci0tLQogYXJjaC9hcm0vYXJtL01ha2VmaWxlLnVrIHwgOCArKysrLS0tLQogMSBmaWxlIGNo
YW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9hcmNo
L2FybS9hcm0vTWFrZWZpbGUudWsgYi9hcmNoL2FybS9hcm0vTWFrZWZpbGUudWsKaW5kZXggM2M1
ZGQxZjYuLjI4ZTMzMTk3IDEwMDY0NAotLS0gYS9hcmNoL2FybS9hcm0vTWFrZWZpbGUudWsKKysr
IGIvYXJjaC9hcm0vYXJtL01ha2VmaWxlLnVrCkBAIC04Nyw3ICs4Nyw3IEBAIENYWEZMQUdTLSQo
Y2FsbCBnY2NfdmVyc2lvbl9nZSw0LDcpCSs9IC1tY3B1PWNvcnRleC1hNyAtbXR1bmU9Y29ydGV4
LWE3IC1tZnB1PXZmCiBlbmRpZgogCiAkKGV2YWwgJChjYWxsIGFkZGxpYixsaWJhcm1tYXRoKSkK
LUxJQkFSTU1BVEhfU1JDUy0kKENPTkZJR19BUkNIX0FSTV8zMikgKz0gJChDT05GSUdfVUtfQkFT
RSkvYXJjaC9hcm0vZGl2c2kzLlMKLUxJQkFSTU1BVEhfU1JDUy0kKENPTkZJR19BUkNIX0FSTV8z
MikgKz0gJChDT05GSUdfVUtfQkFTRSkvYXJjaC9hcm0vbGRpdm1vZC5TCi1MSUJBUk1NQVRIX1NS
Q1MtJChDT05GSUdfQVJDSF9BUk1fMzIpICs9ICQoQ09ORklHX1VLX0JBU0UpL2FyY2gvYXJtL2xk
aXZtb2RfaGVscGVyLmMKLUxJQkFSTU1BVEhfU1JDUy0kKENPTkZJR19BUkNIX0FSTV8zMikgKz0g
JChDT05GSUdfVUtfQkFTRSkvYXJjaC9hcm0vcWRpdnJlbS5jCitMSUJBUk1NQVRIX1NSQ1MtJChD
T05GSUdfQVJDSF9BUk1fMzIpICs9ICQoQ09ORklHX1VLX0JBU0UpL2FyY2gvYXJtL2FybS9kaXZz
aTMuUworTElCQVJNTUFUSF9TUkNTLSQoQ09ORklHX0FSQ0hfQVJNXzMyKSArPSAkKENPTkZJR19V
S19CQVNFKS9hcmNoL2FybS9hcm0vbGRpdm1vZC5TCitMSUJBUk1NQVRIX1NSQ1MtJChDT05GSUdf
QVJDSF9BUk1fMzIpICs9ICQoQ09ORklHX1VLX0JBU0UpL2FyY2gvYXJtL2FybS9sZGl2bW9kX2hl
bHBlci5jCitMSUJBUk1NQVRIX1NSQ1MtJChDT05GSUdfQVJDSF9BUk1fMzIpICs9ICQoQ09ORklH
X1VLX0JBU0UpL2FyY2gvYXJtL2FybS9xZGl2cmVtLmMKLS0gCjIuMTEuMAoKCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5n
IGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVu
cHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Fri Feb 08 15:19:38 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 08 Feb 2019 15:19:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gs7wG-0007DO-N6; Fri, 08 Feb 2019 15:19:36 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=9frw=QP=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1gs7wE-0007DJ-J3
 for minios-devel@lists.xen.org; Fri, 08 Feb 2019 15:19:34 +0000
X-Inumbo-ID: eefb40d7-2bb4-11e9-bc90-bc764e045a96
Received: from queen.nlehd.de (unknown [195.37.154.80])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id eefb40d7-2bb4-11e9-bc90-bc764e045a96;
 Fri, 08 Feb 2019 15:19:31 +0000 (UTC)
Received: from c414.ant-net (c414.ant-net [192.168.0.156])
 by queen.nlehd.de (Postfix) with ESMTP id 35C3840AE2;
 Fri,  8 Feb 2019 16:19:32 +0100 (CET)
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: minios-devel@lists.xen.org
Date: Fri,  8 Feb 2019 16:19:24 +0100
Message-Id: <20190208151926.29051-1-simon.kuenzer@neclab.eu>
X-Mailer: git-send-email 2.11.0
Subject: [Minios-devel] [UNIKRAFT PATCH 0/2] plat/linuxu: Make Arm32 build
 again.
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: dafna3@gmail.com, Simon Kuenzer <simon.kuenzer@neclab.eu>,
 sharan.santhanam@neclab.eu
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhpcyBwYXRjaCBzZXJpZXMgbWFrZXMgdGhlIGxpbnV4IHVzZXJzcGFjZSBwbGF0Zm9ybSBidWls
ZCBmb3IgQXJtMzIgYWdhaW4uCgpEYWZuYSBIaXJzY2hmZWxkICgxKToKICBhcmNoL2FybTogQ29y
cmVjdCBzb3VyY2UgcGF0aHMgaW4gbGliYXJtbWF0aAoKU2ltb24gS3VlbnplciAoMSk6CiAgcGxh
dC9jb21tb246IEFkZCBjcHUuaCBmb3IgQXJtMzIKCiBhcmNoL2FybS9hcm0vTWFrZWZpbGUudWsg
ICAgICAgICAgfCAgOCArKysrLS0tLQogcGxhdC9jb21tb24vaW5jbHVkZS9hcm0vYXJtL2NwdS5o
IHwgMzkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBwbGF0L2NvbW1v
bi9pbmNsdWRlL2FybS9jcHUuaCAgICAgfCAgNCArKystCiBwbGF0L2NvbW1vbi9pbmNsdWRlL2Nw
dS5oICAgICAgICAgfCAgMiArLQogcGxhdC9saW51eHUvc2V0dXAuYyAgICAgICAgICAgICAgIHwg
IDQgKy0tLQogNSBmaWxlcyBjaGFuZ2VkLCA0OCBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygt
KQogY3JlYXRlIG1vZGUgMTAwNjQ0IHBsYXQvY29tbW9uL2luY2x1ZGUvYXJtL2FybS9jcHUuaAoK
LS0gCjIuMTEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2pl
Y3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5p
b3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Fri Feb 08 17:51:56 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 08 Feb 2019 17:51:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gsAJf-0005F9-3x; Fri, 08 Feb 2019 17:51:55 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=p2U7=QP=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1gsAJe-0005F3-O0
 for minios-devel@lists.xen.org; Fri, 08 Feb 2019 17:51:54 +0000
X-Inumbo-ID: 34932dc0-2bca-11e9-b011-3fceb5623a9a
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 34932dc0-2bca-11e9-b011-3fceb5623a9a;
 Fri, 08 Feb 2019 17:51:48 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 70BAE104DB8;
 Fri,  8 Feb 2019 18:51:45 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id nMa_mLs7epdX; Fri,  8 Feb 2019 18:51:45 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 4C271104DAF
 for <minios-devel@lists.xen.org>; Fri,  8 Feb 2019 18:51:43 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 8 Feb 2019 18:51:43
 +0100
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
 <20190207135901.9122-14-yuri.volchkov@neclab.eu>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <1bc4bcf8-2a9f-7f72-bc16-1b1f563dd280@neclab.eu>
Date: Fri, 8 Feb 2019 18:51:42 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190207135901.9122-14-yuri.volchkov@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v3 13/23] lib/vfscore: introduce
 fget, fdrop, fdalloc
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gWXVyaSwKClBsZWFzZSBmaW5kIHRoZSBjb21tZW50IGlubGluZQoKVGhhbmtzICYgUmVn
YXJkcwpTaGFyYW4KCk9uIDIvNy8xOSAyOjU4IFBNLCBZdXJpIFZvbGNoa292IHdyb3RlOgo+IFRo
ZXNlIGZ1bmN0aW9ucyBhcmUgdXNlZCBpbiB0aGUgaW1wb3J0ZWQgY29kZSwgd2hpY2ggaXMgbm90
IGVuYWJsZWQKPiB5ZXQuIFRoaXMgcmVxdWlyZWQgdG8gZXhwYW5kIGZ1bmN0aW9uYWxpdHkgb2Yg
dmZzY29yZV9pbnN0YWxsX2ZkIGFuZAo+IGZyaWVuZHMgd2l0aCBsb2NraW5nIGFuZCByZWZlcmVu
Y2UgY291bnRpbmcuCj4gCj4gU2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xj
aGtvdkBuZWNsYWIuZXU+Cj4gLS0tCj4gICBsaWIvdmZzY29yZS9mZC5jICAgICAgICAgICAgICAg
ICAgIHwgNjcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCj4gICBsaWIvdmZzY29yZS9m
aWxlLmMgICAgICAgICAgICAgICAgIHwgMjIgKysrKysrKysrLQo+ICAgbGliL3Zmc2NvcmUvaW5j
bHVkZS92ZnNjb3JlL2ZpbGUuaCB8ICA5ICsrKy0KPiAgIDMgZmlsZXMgY2hhbmdlZCwgOTIgaW5z
ZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUv
ZmQuYyBiL2xpYi92ZnNjb3JlL2ZkLmMKPiBpbmRleCA2YzIyMDQyOC4uOWQyYWZlNWEgMTAwNjQ0
Cj4gLS0tIGEvbGliL3Zmc2NvcmUvZmQuYwo+ICsrKyBiL2xpYi92ZnNjb3JlL2ZkLmMKPiBAQCAt
NzQsMjAgKzc0LDQxIEBAIGV4aXQ6Cj4gICAKPiAgIHZvaWQgdmZzY29yZV9wdXRfZmQoaW50IGZk
KQo+ICAgewo+ICsJdW5zaWduZWQgbG9uZyBmbGFnczsKPiArCj4gICAJVUtfQVNTRVJUKGZkIDwg
KGludCkgRkRUQUJMRV9NQVhfRklMRVMpOwo+ICAgCS8qIEN1cnJlbnRseSBpdCBpcyBub3QgYWxs
b3dlZCB0byBmcmVlIHN0ZChpbnxvdXR8ZXJyKSAqLwo+ICAgCVVLX0FTU0VSVChmZCA+IDIpOwo+
ICAgCj4gLQlfX3VrX2NsZWFyX2JpdChmZCwgJmZkdGFibGUuYml0bWFwKTsKPiArCWZsYWdzID0g
dWtwbGF0X2xjcHVfc2F2ZV9pcnFmKCk7Cj4gKwlfX3VrX2NsZWFyX2JpdChmZCwgJmZkdGFibGUu
Yml0bWFwKTtcCj4gKwlmZHRhYmxlLmZpbGVzW2ZkXSA9IE5VTEw7Cj4gKwl1a3BsYXRfbGNwdV9y
ZXN0b3JlX2lycWYoZmxhZ3MpOwpTaG91bGRuJ3Qgd2UgaGF2ZSBhIGZkcm9wIG9uIHRoZSB2ZnNj
b3JlX2ZpbGUgZGVzY3JpcHRvcj8KCj4gICB9Cj4gICAKPiAtdm9pZCB2ZnNjb3JlX2luc3RhbGxf
ZmQoaW50IGZkLCBzdHJ1Y3QgdmZzY29yZV9maWxlICpmaWxlKQo+ICtpbnQgdmZzY29yZV9pbnN0
YWxsX2ZkKGludCBmZCwgc3RydWN0IHZmc2NvcmVfZmlsZSAqZmlsZSkKPiAgIHsKPiAtCVVLX0FT
U0VSVChmZCA8IChpbnQpIEZEVEFCTEVfTUFYX0ZJTEVTKTsKPiAtCVVLX0FTU0VSVChmaWxlKTsK
PiArCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gKwlzdHJ1Y3QgdmZzY29yZV9maWxlICpvcmlnOwo+
ICsKPiArCWlmICgoZmQgPj0gKGludCkgRkRUQUJMRV9NQVhfRklMRVMpIHx8ICghZmlsZSkpCj4g
KwkJcmV0dXJuIC1FQkFERjsKPiArCj4gKwlmaG9sZChmaWxlKTsKPiAgIAo+ICAgCWZpbGUtPmZk
ID0gZmQ7Cj4gKwo+ICsJZmxhZ3MgPSB1a3BsYXRfbGNwdV9zYXZlX2lycWYoKTsKClNob3VsZG4n
dCB3ZSBjaGVjayBpZiB0aGVyZSBhY3RpdmUgcmVmZXJlbmNlIHRvIHRoZSBvcmlnIGJlZm9yZSAK
aW5zdGFsbGluZyB0aGUgZmQ/Cj4gKwlvcmlnID0gZmR0YWJsZS5maWxlc1tmZF07Cj4gICAJZmR0
YWJsZS5maWxlc1tmZF0gPSBmaWxlOwo+ICsJdWtwbGF0X2xjcHVfcmVzdG9yZV9pcnFmKGZsYWdz
KTsKPiArCj4gKwlmZHJvcChmaWxlKTsKPiArCj4gKwlpZiAob3JpZykKVGhpcyByZWZlcmVuY2Ug
aGFzIHRvIGJlIGNsb3NlZCBhcyB0aGVyZSBjYW4gYmUgbm8gZnVydGhlciByZWZlcmVuY2UgdG8g
aXQuCj4gKwkJZmRyb3Aob3JpZyk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gICB9Cj4gICAKPiAgIHN0
cnVjdCB2ZnNjb3JlX2ZpbGUgKnZmc2NvcmVfZ2V0X2ZpbGUoaW50IGZkKQo+IEBAIC0xMDEsMTIg
KzEyMiw1MCBAQCBzdHJ1Y3QgdmZzY29yZV9maWxlICp2ZnNjb3JlX2dldF9maWxlKGludCBmZCkK
PiAgIAlpZiAoIShmZHRhYmxlLmJpdG1hcCAmICgodWludDY0X3QpIDEgPDwgZmQpKSkKPiAgIAkJ
Z290byBleGl0Owo+ICAgCXJldCA9IGZkdGFibGUuZmlsZXNbZmRdOwo+ICsJZmhvbGQocmV0KTsK
PiAgIAo+ICAgZXhpdDoKPiAgIAl1a3BsYXRfbGNwdV9yZXN0b3JlX2lycWYoZmxhZ3MpOwo+ICAg
CXJldHVybiByZXQ7Cj4gICB9Cj4gICAKPiAraW50IGZnZXQoaW50IGZkLCBzdHJ1Y3QgdmZzY29y
ZV9maWxlICoqb3V0X2ZwKQo+ICt7Cj4gKwlpbnQgcmV0ID0gMDsKPiArCXN0cnVjdCB2ZnNjb3Jl
X2ZpbGUgKmZwID0gdmZzY29yZV9nZXRfZmlsZShmZCk7Cj4gKwo+ICsJaWYgKCFmcCkKV2UgYXJl
IHVzaW5nIGJvdGggLXZlIGFuZCArdmUgZXJyb3Igd2l0aGluIHRoaXMgZmlsZS4gTWF5YmUgd2lz
ZSB0bwpzdGljayB0byBhIHNpbmdsZSBzY2hlbWUuIElzIGl0IGJlY2F1c2Ugb2YgaW50ZXJhY3Rp
b24gd2l0aCB0aGUgaW1wb3J0ZWQgCk9TdiBjb2RlPwoKPiArCQlyZXQgPSBFQkFERjsKPiArCWVs
c2UKPiArCQkqb3V0X2ZwID0gZnA7Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiAraW50
IGZkYWxsb2Moc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAsIGludCAqbmV3ZmQpCj4gK3sKPiArCWlu
dCBmZCwgcmV0ID0gMDsKPiArCj4gKwlmaG9sZChmcCk7Cj4gKwo+ICsJZmQgPSB2ZnNjb3JlX2Fs
bG9jX2ZkKCk7Cj4gKwlpZiAoZmQgPCAwKSB7ClNob3VsZG4ndCB3ZSBoYXZlIGFuIGZkcm9wIGhl
cmU/Cgo+ICsJCXJldCA9IGZkOwo+ICsJCWdvdG8gZXhpdDsKPiArCX0KPiArCj4gKwlyZXQgPSB2
ZnNjb3JlX2luc3RhbGxfZmQoZmQsIGZwKTsKPiArCWlmIChyZXQpCj4gKwkJZmRyb3AoZnApOwo+
ICsJZWxzZQo+ICsJCSpuZXdmZCA9IGZkOwo+ICsKPiArZXhpdDoKPiArCXJldHVybiByZXQ7Cj4g
K30KPiArCj4gKwo+ICsvKiBUT0RPOiBtb3ZlIHRoaXMgY29uc3RydWN0b3IgdG8gbWFpbi5jICov
Cj4gICBfX2NvbnN0cnVjdG9yIHN0YXRpYyB2b2lkIGZkdGFibGVfaW5pdCh2b2lkKQo+ICAgewo+
ICAgCW1lbXNldCgmZmR0YWJsZSwgMCwgc2l6ZW9mKGZkdGFibGUpKTsKPiBkaWZmIC0tZ2l0IGEv
bGliL3Zmc2NvcmUvZmlsZS5jIGIvbGliL3Zmc2NvcmUvZmlsZS5jCj4gaW5kZXggZTdhZGYxYTMu
LjBmNmRmYTkzIDEwMDY0NAo+IC0tLSBhL2xpYi92ZnNjb3JlL2ZpbGUuYwo+ICsrKyBiL2xpYi92
ZnNjb3JlL2ZpbGUuYwo+IEBAIC0zOCw3ICszOCw3IEBACj4gICAjaW5jbHVkZSA8dWsvcHJpbnQu
aD4KPiAgICNpbmNsdWRlIDx2ZnNjb3JlL2ZpbGUuaD4KPiAgICNpbmNsdWRlIDx1ay9hc3NlcnQu
aD4KPiAtCj4gKyNpbmNsdWRlIDx1ay9hcmNoL2F0b21pYy5oPgo+ICAgCj4gICBpbnQgY2xvc2Uo
aW50IGZkKQo+ICAgewo+IEBAIC05NSwzICs5NSwyMyBAQCBzc2l6ZV90IHJlYWQoaW50IGZkLCB2
b2lkICpidWYsIHNpemVfdCBjb3VudCkKPiAgIAo+ICAgCXJldHVybiBmaWxlLT5mb3BzLT5yZWFk
KGZpbGUsIGJ1ZiwgY291bnQpOwo+ICAgfQo+ICsKPiArLyogVE9ETzogcmVtb3ZlIHN0dWIgKi8K
PiArI2RlZmluZSB2ZnNfY2xvc2UoZnApICgwKQo+ICsKRm9yIHJlZmVyZW5jZSBjb3VudGluZyB3
ZSBjb3VsZCB1c2UgdGhlIDxpbmNsdWRlL3VrL3JlZmNvdW50Lmg+LiBBcyAKIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW50
aW9uZWQgCmluIHRoZSBwcmV2aW91cyBwYXRjaCBpdCBpcyBub3QgbmVjZXNzYXJ5IGZvciB0aGlz
IHBhdGNoIAogCgpzZXJpZXMuCj4gK2ludCBmZHJvcChzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCkK
PiArewo+ICsJaW50IHJldCA9IDA7Cj4gKwlpbnQgcHJldiA9IHVrYXJjaF9kZWMoJmZwLT5mX2Nv
dW50KTsKPiArCj4gKwlpZiAocHJldiA9PSAwKQo+ICsJCVVLX0NSQVNIKCJVbmJhbGFuY2VkIGZo
b2xkL2Zkcm9wIik7Cj4gKwo+ICsJaWYgKHByZXYgPT0gMSkKPiArCQlyZXQgPSB2ZnNfY2xvc2Uo
ZnApOwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICt2b2lkIGZob2xkKHN0cnVjdCB2ZnNjb3JlX2Zp
bGUgKmZwKQo+ICt7Cj4gKwl1a2FyY2hfaW5jKCZmcC0+Zl9jb3VudCk7Cj4gK30KPiBkaWZmIC0t
Z2l0IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2ZpbGUuaCBiL2xpYi92ZnNjb3JlL2lu
Y2x1ZGUvdmZzY29yZS9maWxlLmgKPiBpbmRleCAzZDhkNjY3Zi4uODRlYjM1ZDcgMTAwNjQ0Cj4g
LS0tIGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2ZpbGUuaAo+ICsrKyBiL2xpYi92ZnNj
b3JlL2luY2x1ZGUvdmZzY29yZS9maWxlLmgKPiBAQCAtNTMsMTQgKzUzLDIxIEBAIHN0cnVjdCB2
ZnNjb3JlX2ZvcHMgewo+ICAgCj4gICBzdHJ1Y3QgdmZzY29yZV9maWxlIHsKPiAgIAlpbnQgZmQ7
Cj4gKwlpbnQJCWZfY291bnQ7CS8qIHJlZmVyZW5jZSBjb3VudCAqLwo+ICAgCWNvbnN0IHN0cnVj
dCB2ZnNjb3JlX2ZvcHMgKmZvcHM7Cj4gICB9Owo+ICAgCj4gICBpbnQgdmZzY29yZV9hbGxvY19m
ZCh2b2lkKTsKPiAgIHZvaWQgdmZzY29yZV9wdXRfZmQoaW50IGZkKTsKPiAtdm9pZCB2ZnNjb3Jl
X2luc3RhbGxfZmQoaW50IGZkLCBzdHJ1Y3QgdmZzY29yZV9maWxlICpmaWxlKTsKPiAraW50IHZm
c2NvcmVfaW5zdGFsbF9mZChpbnQgZmQsIHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZpbGUpOwo+ICAg
c3RydWN0IHZmc2NvcmVfZmlsZSAqdmZzY29yZV9nZXRfZmlsZShpbnQgZmQpOwo+ICAgCj4gKy8q
Cj4gKyAqIEZpbGUgZGVzY3JpcHRvcnMgcmVmZXJlbmNlIGNvdW50Cj4gKyAqLwo+ICt2b2lkIGZo
b2xkKHN0cnVjdCB2ZnNjb3JlX2ZpbGUqIGZwKTsKPiAraW50IGZkcm9wKHN0cnVjdCB2ZnNjb3Jl
X2ZpbGUqIGZwKTsKPiArCj4gICAjZGVmaW5lIEZPRl9PRkZTRVQgIDB4MDgwMCAgICAvKiBVc2Ug
dGhlIG9mZnNldCBpbiB1aW8gYXJndW1lbnQgKi8KPiAgIAo+ICAgI2lmZGVmIF9fY3BsdXNwbHVz
Cj4gCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5p
b3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpo
dHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Feb 11 13:25:02 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 11 Feb 2019 13:25:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gtBa0-0006df-UA; Mon, 11 Feb 2019 13:25:00 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=ktH6=QS=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1gtBZy-0006dT-Vm
 for minios-devel@lists.xen.org; Mon, 11 Feb 2019 13:24:59 +0000
X-Inumbo-ID: 6b80380c-2e00-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 6b80380c-2e00-11e9-bc90-bc764e045a96;
 Mon, 11 Feb 2019 13:24:55 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 56486F2047;
 Mon, 11 Feb 2019 14:24:54 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id u34AWDf8_nEX; Mon, 11 Feb 2019 14:24:54 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 2CA2EF2046
 for <minios-devel@lists.xen.org>; Mon, 11 Feb 2019 14:24:52 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 11 Feb 2019 14:24:51
 +0100
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
 <20190207135901.9122-15-yuri.volchkov@neclab.eu>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <128a2689-c39a-63bb-0925-c9a63b9fb7ce@neclab.eu>
Date: Mon, 11 Feb 2019 14:24:43 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190207135901.9122-15-yuri.volchkov@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v3 14/23] lib/vfscore: keep
 vnode locked during drele call
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gWXVyaSwKClBsZWFzZSBmaW5kIHRoZSBjb21tZW50IGlubGluZQoKVGhhbmtzICYgUmVn
YXJkcwpTaGFyYW4KCk9uIDIvNy8xOSAyOjU4IFBNLCBZdXJpIFZvbGNoa292IHdyb3RlOgo+IFNp
Z25lZC1vZmYtYnk6IFl1cmkgVm9sY2hrb3YgPHl1cmkudm9sY2hrb3ZAbmVjbGFiLmV1Pgo+IC0t
LQo+ICAgbGliL3Zmc2NvcmUvbG9va3VwLmMgICB8IDIgKy0KPiAgIGxpYi92ZnNjb3JlL3N5c2Nh
bGxzLmMgfCAyICstCj4gICAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxl
dGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvbG9va3VwLmMgYi9saWIvdmZz
Y29yZS9sb29rdXAuYwo+IGluZGV4IDFlMmM0MDA1Li5jYmMwMmI1MiAxMDA2NDQKPiAtLS0gYS9s
aWIvdmZzY29yZS9sb29rdXAuYwo+ICsrKyBiL2xpYi92ZnNjb3JlL2xvb2t1cC5jCj4gQEAgLTE4
MSw4ICsxODEsOCBAQCBuYW1laShjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3QgZGVudHJ5ICoqZHBw
KQo+ICAgCQkJCS8qIEZpbmQgYSB2bm9kZSBpbiB0aGlzIGRpcmVjdG9yeS4gKi8KPiAgIAkJCQll
cnJvciA9IFZPUF9MT09LVVAoZHZwLCBuYW1lLCAmdnApOwo+ICAgCQkJCWlmIChlcnJvcikgewo+
IC0JCQkJCXZuX3VubG9jayhkdnApOwo+ICAgCQkJCQlkcmVsZShkZHApOwo+ICsJCQkJCXZuX3Vu
bG9jayhkdnApOwpXaHkgYXJlIHdlIGNoYW5naW5nIG9yZGVyIG9mIHVubG9ja2luZyBhbmQgcmVs
ZWFzaW5nIHRoZSBkZW50cnkgb24gdGhlIApsb29rdXAgYW5kIG5vdCB3aGVuIHRoZSBlbnRyeSBh
bGxvY2F0aW9uIGZhaWxzIGluIHRoZSBzdGF0ZW1lbnQgYmVsb3cgCml0LiBBIGNvbW1lbnQgZXhw
bGFpbmluZyB0aGUgcmVhc29uIHNob3VsZCBoZWxwCj4gICAJCQkJCXJldHVybiBlcnJvcjsKPiAg
IAkJCQl9Cj4gICAKPiBkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvc3lzY2FsbHMuYyBiL2xpYi92
ZnNjb3JlL3N5c2NhbGxzLmMKPiBpbmRleCBmYTA0OThlNy4uMzMwMDQ5NjAgMTAwNjQ0Cj4gLS0t
IGEvbGliL3Zmc2NvcmUvc3lzY2FsbHMuYwo+ICsrKyBiL2xpYi92ZnNjb3JlL3N5c2NhbGxzLmMK
PiBAQCAtMTMyLDggKzEzMiw4IEBAIHN5c19vcGVuKGNoYXIgKnBhdGgsIGludCBmbGFncywgbW9k
ZV90IG1vZGUsIHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKipmcHApCj4gICAJCQltb2RlICY9IH5TX0lG
TVQ7Cj4gICAJCQltb2RlIHw9IFNfSUZSRUc7Cj4gICAJCQllcnJvciA9IFZPUF9DUkVBVEUoZGRw
LT5kX3Zub2RlLCBmaWxlbmFtZSwgbW9kZSk7Cj4gLQkJCXZuX3VubG9jayhkZHAtPmRfdm5vZGUp
Owo+ICAgCQkJZHJlbGUoZGRwKTsKPiArCQkJdm5fdW5sb2NrKGRkcC0+ZF92bm9kZSk7CklmIHRo
ZSBWT1BfQ1JFQVRFIGhhcyB0byBtYWludGFpbiB0aGlzIG9yZGVyIHJlbGVhc2luZyB0aGUgcGFy
ZW50IApkaXJlY3RvcnkgZW50cnksIHNob3VsZG4ndCBWT1BfUkVNT1ZFIG9wZXJhdGlvbiBhbHNv
IGZvbGxvdyBhIHNpbWlsYXIgCnBhdHRlcm4/Cgo+ICAgCj4gICAJCQlpZiAoZXJyb3IpCj4gICAJ
CQkJcmV0dXJuIGVycm9yOwo+IAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMu
eGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3Rp
bmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Feb 11 14:06:29 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 11 Feb 2019 14:06:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gtCE8-00026W-IC; Mon, 11 Feb 2019 14:06:28 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=ktH6=QS=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1gtCE7-00026O-Qn
 for minios-devel@lists.xen.org; Mon, 11 Feb 2019 14:06:27 +0000
X-Inumbo-ID: 37e10f0d-2e06-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 37e10f0d-2e06-11e9-bc90-bc764e045a96;
 Mon, 11 Feb 2019 14:06:26 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 106CCF2048;
 Mon, 11 Feb 2019 15:06:25 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id p4lVEDYP6W0N; Mon, 11 Feb 2019 15:06:24 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id D29E8F2046
 for <minios-devel@lists.xen.org>; Mon, 11 Feb 2019 15:06:22 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 11 Feb 2019 15:06:22
 +0100
To: Simon Kuenzer <simon.kuenzer@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190207230035.29861-1-simon.kuenzer@neclab.eu>
 <20190207230035.29861-2-simon.kuenzer@neclab.eu>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <517fb01c-9ede-9583-ba59-29cc07d9b0be@neclab.eu>
Date: Mon, 11 Feb 2019 15:06:22 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190207230035.29861-2-simon.kuenzer@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT/LIBLWIP PATCH 1/5] Add .gitignore
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gU2ltb24sCgpUaGlzIHBhdGNoIHNlZW1zIGZ1bmN0aW9uYWxseSBmaW5lLgoKClJldmll
d2VkLWJ5OiBTaGFyYW4gU2FudGhhbmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xhYi5ldT4KCgpC
dXQgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb2YgbHdpcCBpcyBvdXQgb2Ygc3luYyB3aXRo
IHRoZSBVbmlrcmFmdCAKdHJlZSBhbmQgYXBwbHkgdGhpcyBwYXRjaCBmYWlscyBpbiBpc29sYXRp
b24gZmFpbHMgdG8gY29tcGlsZSB3aXRoIApVbmlrcmFmdCB3aGljaCBpcyBleHBlY3RlZC4KClRo
YW5rcyAmIFJlZ2FyZHMKU2hhcmFuCgpPbiAyLzgvMTkgMTI6MDAgQU0sIFNpbW9uIEt1ZW56ZXIg
d3JvdGU6Cj4gU2lnbmVkLW9mZi1ieTogU2ltb24gS3VlbnplciA8c2ltb24ua3VlbnplckBuZWNs
YWIuZXU+Cj4gLS0tCj4gICAuZ2l0aWdub3JlIHwgMjcgKysrKysrKysrKysrKysrKysrKysrKysr
KysrCj4gICAxIGZpbGUgY2hhbmdlZCwgMjcgaW5zZXJ0aW9ucygrKQo+ICAgY3JlYXRlIG1vZGUg
MTAwNjQ0IC5naXRpZ25vcmUKPiAKPiBkaWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBiLy5naXRpZ25v
cmUKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjc1ZDJmZDMKPiAtLS0g
L2Rldi9udWxsCj4gKysrIGIvLmdpdGlnbm9yZQo+IEBAIC0wLDAgKzEsMjcgQEAKPiArKi5kZXBl
bmQKPiArKi5vCj4gKyouYQo+ICsqLmQKPiArKi5zbwo+ICsqLm9yaWcKPiArKi5yZWoKPiArKi5i
YWsKPiArKi5zd3AKPiArKn4KPiArLCoKPiArXCMqXCMKPiArLlwjKgo+ICtcI18qXCMKPiArLlwj
XyoKPiArIS5naXRpZ25vcmUKPiArLioKPiArCj4gKyMgZ251IGdsb2JhbCBmaWxlcwo+ICtHUEFU
SAo+ICtHUlRBR1MKPiArR1NZTVMKPiArR1RBR1MKPiArCj4gKyMgY3Njb3BlIGZpbGVzCj4gK2Nz
Y29wZS4qCj4gK25jc2NvcGUuKgo+IAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlz
dHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xp
c3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Feb 11 14:48:10 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 11 Feb 2019 14:48:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gtCsT-0005aQ-JJ; Mon, 11 Feb 2019 14:48:09 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=tNxd=QS=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1gtCsR-0005aL-LG
 for minios-devel@lists.xen.org; Mon, 11 Feb 2019 14:48:07 +0000
X-Inumbo-ID: 090263b8-2e0c-11e9-bc90-bc764e045a96
Received: from queen.nlehd.de (unknown [195.37.154.80])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id 090263b8-2e0c-11e9-bc90-bc764e045a96;
 Mon, 11 Feb 2019 14:48:04 +0000 (UTC)
Received: from c414.ant-net (c414.ant-net [192.168.0.156])
 by queen.nlehd.de (Postfix) with ESMTP id 3E07C40AE2;
 Mon, 11 Feb 2019 15:48:04 +0100 (CET)
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: minios-devel@lists.xen.org
Date: Mon, 11 Feb 2019 15:48:01 +0100
Message-Id: <20190211144801.21270-1-simon.kuenzer@neclab.eu>
X-Mailer: git-send-email 2.11.0
Subject: [Minios-devel] [UNIKRAFT PATCH v2] plat/xen: Grant table support as
 menu option
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: florian.schmidt@neclab.eu, Simon Kuenzer <simon.kuenzer@neclab.eu>,
 sharan.santhanam@neclab.eu
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SW50cm9kdWNlcyBhIG1lbnUgb3B0aW9uIHRvIGVuYWJsZSBvciBkaXNhYmxlIGdyYW50IHRhYmxl
IHN1cHBvcnQuClRoZSByZWFzb24gaXMgdGhhdCBvdXIgZ3JhbnQgdGFibGUgaW1wbGVtZW50YXRp
b24gZGVwZW5kcyBvbgpsaWJ1a2xvY2ssIGxpYnVrc2NoZWQsIGFuZCBsaWJ1a2FsbG9jLiBBIG1p
bmltYWwgcmVxdWlyZXMgdGhlc2UKbGlicmFyaWVzIHNlbGVjdGVkLCB0b28uIFRoaXMgbWF5IGJl
IGFuIG9ic3RhY2xlIHdoZW4gcnVubmluZyBkcml2ZXIKaW1wbGVtZW50YXRpb24gaW4gaGlnaGVy
LWxldmVsIGxhbmd1YWdlcy4gQWRkaXRpb25hbGx5LCBzb21lIG9mCnRoZXNlIGxpYnJhcmllcyBh
cmUgY3VycmVubHR5IG5vdCBzdXBwb3J0ZWQgb24gQXJtLiBJdCBpcwp3aXNlciB0byBnaXZlIGFu
IG9wdGlvbiBmb3IgZGlzYWJsaW5nIGdyYW50IHRhYmxlIHN1cHBvcnQuCgpTaWduZWQtb2ZmLWJ5
OiBTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4KLS0tCiBwbGF0L3hlbi9D
b25maWcudWsgICAgICAgICAgICAgICB8IDIwICsrKysrKysrKysrKysrKy0tLS0tCiBwbGF0L3hl
bi9NYWtlZmlsZS51ayAgICAgICAgICAgICB8ICA1ICsrKystCiBwbGF0L3hlbi9pbmNsdWRlL2Nv
bW1vbi9nbnR0YWIuaCB8ICA2ICsrKysrKwogcGxhdC94ZW4vbWVtb3J5LmMgICAgICAgICAgICAg
ICAgfCAgMiArKwogNCBmaWxlcyBjaGFuZ2VkLCAyNyBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9u
cygtKQoKZGlmZiAtLWdpdCBhL3BsYXQveGVuL0NvbmZpZy51ayBiL3BsYXQveGVuL0NvbmZpZy51
awppbmRleCBkMDE0M2U5NS4uOWNmZTkwYTIgMTAwNjQ0Ci0tLSBhL3BsYXQveGVuL0NvbmZpZy51
aworKysgYi9wbGF0L3hlbi9Db25maWcudWsKQEAgLTMsOCArMyw2IEBAIG1lbnVjb25maWcgUExB
VF9YRU4KICAgICAgICBkZWZhdWx0IG4KICAgICAgICBkZXBlbmRzIG9uIChBUkNIX1g4Nl8zMiB8
fCBBUkNIX1g4Nl82NCB8fCBBUkNIX0FSTV8zMikKICAgICAgICBzZWxlY3QgTElCVUtERUJVRwot
ICAgICAgIHNlbGVjdCBMSUJVS0xPQ0sKLSAgICAgICBzZWxlY3QgTElCVUtMT0NLX1NFTUFQSE9S
RQogICAgICAgIHNlbGVjdCBMSUJOT0xJQkMgaWYgIUhBVkVfTElCQwogICAgICAgIHNlbGVjdCBM
SUJGRFQgaWYgQVJDSF9BUk1fMzIKICAgICAgICBzZWxlY3QgWEVOX0RCR0VNRVJHRU5DWSBpZiBB
UkNIX0FSTV8zMgpAQCAtMjEsMTEgKzE5LDIzIEBAIGlmIChQTEFUX1hFTikKIAkJb3B0aW9uIGlz
IGVuYWJsZWQgdGhlIGh5cGVydmlzb3IgY29uc29sZSBpcyB1c2VkCiAJCWZvciBrZXJuZWwgbWVz
c2FnZXMgb25seS4KIAorY29uZmlnIFhFTl9HTlRUQUIKKwlib29sICJHcmFudCB0YWJsZSBzdXBw
b3J0IgorCWRlZmF1bHQgeQorCWRlcGVuZHMgb24gKEFSQ0hfWDg2XzY0KQorCXNlbGVjdCBMSUJV
S0FMTE9DCisJc2VsZWN0IExJQlVLTE9DSworCXNlbGVjdCBMSUJVS0xPQ0tfU0VNQVBIT1JFCisJ
c2VsZWN0IExJQlVLU0NIRUQKKwloZWxwCisJCVN1cHBvcnQgZ3JhbnQgdGFibGUgb3BlcmF0aW9u
cworCiBtZW51Y29uZmlnIFhFTl9YRU5CVVMKLQlib29sICJYZW5idXMgRHJpdmVyIgorCWJvb2wg
IlhlbmJ1cy9YZW5TdG9yZSBkcml2ZXIiCiAJZGVmYXVsdCBuCi0JZGVwZW5kcyBvbiAoQVJDSF9Y
ODZfNjQpCisJZGVwZW5kcyBvbiBYRU5fR05UVEFCCiAJc2VsZWN0IExJQlVLQlVTCiAJaGVscAot
CQlSZWdpc3RlciBhIFhlbmJ1cyBkcml2ZXIgYXMgdWtfYnVzCisJCVJlZ2lzdGVycyBYZW5idXMg
YXMgYnVzIGRyaXZlciB0byBsaWJ1a2J1cyBhbmQgcHJvdmlkZXMgYQorCQlYZW5TdG9yZSBjb21t
dW5pY2F0aW9uIEFQSSBmb3IgWGVuIGRyaXZlcnMKIGVuZGlmCmRpZmYgLS1naXQgYS9wbGF0L3hl
bi9NYWtlZmlsZS51ayBiL3BsYXQveGVuL01ha2VmaWxlLnVrCmluZGV4IDM4YjUxMGFkLi4zNDM5
YTBkOSAxMDA2NDQKLS0tIGEvcGxhdC94ZW4vTWFrZWZpbGUudWsKKysrIGIvcGxhdC94ZW4vTWFr
ZWZpbGUudWsKQEAgLTQ1LDcgKzQ1LDYgQEAgTElCWEVOUExBVF9TUkNTLSQoQ09ORklHX0FSQ0hf
WDg2XzY0KSArPSAkKExJQlhFTlBMQVRfQkFTRSkveDg2L2VudHJ5NjQuUwogTElCWEVOUExBVF9T
UkNTLSQoQ09ORklHX0FSQ0hfWDg2XzY0KSArPSAkKExJQlhFTlBMQVRfQkFTRSkveDg2L21tLmMK
IExJQlhFTlBMQVRfU1JDUy0kKENPTkZJR19BUkNIX1g4Nl82NCkgKz0gJChMSUJYRU5QTEFUX0JB
U0UpL3g4Ni9hcmNoX2V2ZW50cy5jCiBMSUJYRU5QTEFUX1NSQ1MtJChDT05GSUdfQVJDSF9YODZf
NjQpICs9ICQoTElCWEVOUExBVF9CQVNFKS94ODYvYXJjaF90aW1lLmMKLUxJQlhFTlBMQVRfU1JD
Uy0kKENPTkZJR19BUkNIX1g4Nl82NCkgKz0gJChMSUJYRU5QTEFUX0JBU0UpL3g4Ni9nbnR0YWIu
Y3x4ODYKIAogaWZuZXEgKCQoWEVOX0hWTUxJVEUpLHkpCiBMSUJYRU5QTEFUX0FTRkxBR1MteSAg
ICAgICAgICAgKz0gLURDT05GSUdfUEFSQVZJUlQKQEAgLTczLDcgKzcyLDExIEBAIExJQlhFTlBM
QVRfU1JDUy15ICAgICAgICAgICAgICArPSAkKExJQlhFTlBMQVRfQkFTRSkvbGNwdS5jCiBMSUJY
RU5QTEFUX1NSQ1MteSAgICAgICAgICAgICAgKz0gJChMSUJYRU5QTEFUX0JBU0UpL2NvbnNvbGUu
YwogTElCWEVOUExBVF9TUkNTLXkgICAgICAgICAgICAgICs9ICQoTElCWEVOUExBVF9CQVNFKS9z
aHV0ZG93bi5jCiBMSUJYRU5QTEFUX1NSQ1MteSAgICAgICAgICAgICAgKz0gJChMSUJYRU5QTEFU
X0JBU0UpL2V2ZW50cy5jCisKK2lmZXEgKCQoQ09ORklHX1hFTl9HTlRUQUIpLHkpCiBMSUJYRU5Q
TEFUX1NSQ1MteSAgICAgICAgICAgICAgKz0gJChMSUJYRU5QTEFUX0JBU0UpL2dudHRhYi5jCitM
SUJYRU5QTEFUX1NSQ1MtJChDT05GSUdfQVJDSF9YODZfNjQpICs9ICQoTElCWEVOUExBVF9CQVNF
KS94ODYvZ250dGFiLmN8eDg2CitlbmRpZgogCiBpZmVxICgkKENPTkZJR19YRU5fWEVOQlVTKSx5
KQogTElCWEVOQlVTX0VYUE9SVFMgICAgICAgICAgICAgICA9ICQoTElCWEVOUExBVF9CQVNFKS94
ZW5idXMvZXhwb3J0c3ltcy51awpkaWZmIC0tZ2l0IGEvcGxhdC94ZW4vaW5jbHVkZS9jb21tb24v
Z250dGFiLmggYi9wbGF0L3hlbi9pbmNsdWRlL2NvbW1vbi9nbnR0YWIuaAppbmRleCBkNGJiNDE3
Mi4uZjVjZGU1YzUgMTAwNjQ0Ci0tLSBhL3BsYXQveGVuL2luY2x1ZGUvY29tbW9uL2dudHRhYi5o
CisrKyBiL3BsYXQveGVuL2luY2x1ZGUvY29tbW9uL2dudHRhYi5oCkBAIC0yNiw2ICsyNiwxMCBA
QAogI2lmbmRlZiBfX0dOVFRBQl9IX18KICNkZWZpbmUgX19HTlRUQUJfSF9fCiAKKyNpbmNsdWRl
IDx1ay9jb25maWcuaD4KKworI2lmZGVmIENPTkZJR19YRU5fR05UVEFCCisKICNpbmNsdWRlIDx1
ay9hbGxvYy5oPgogI2luY2x1ZGUgPHhlbi9ncmFudF90YWJsZS5oPgogCkBAIC00NSw0ICs0OSw2
IEBAIGNvbnN0IGNoYXIgKmdudHRhYm9wX2Vycm9yKF9fczE2IHN0YXR1cyk7CiAKIGdyYW50X2Vu
dHJ5X3YxX3QgKmdudHRhYl9hcmNoX2luaXQoaW50IG5yX2dyYW50X2ZyYW1lcyk7CiAKKyNlbmRp
ZiAvKiBDT05GSUdfWEVOX0dOVFRBQiAqLworCiAjZW5kaWYgLyogIV9fR05UVEFCX0hfXyAqLwpk
aWZmIC0tZ2l0IGEvcGxhdC94ZW4vbWVtb3J5LmMgYi9wbGF0L3hlbi9tZW1vcnkuYwppbmRleCBm
ODRkY2E3MS4uMWY1NTg4N2UgMTAwNjQ0Ci0tLSBhL3BsYXQveGVuL21lbW9yeS5jCisrKyBiL3Bs
YXQveGVuL21lbW9yeS5jCkBAIC0xMjMsNiArMTIzLDggQEAgaW50IHVrcGxhdF9tZW1yZWdpb25f
Z2V0KGludCBpLCBzdHJ1Y3QgdWtwbGF0X21lbXJlZ2lvbl9kZXNjICptKQogCiBpbnQgX3VrcGxh
dF9tZW1fbWFwcGluZ3NfaW5pdCh2b2lkKQogeworI2lmZGVmIENPTkZJR19YRU5fR05UVEFCCiAJ
Z250dGFiX2luaXQoKTsKKyNlbmRpZgogCXJldHVybiAwOwogfQotLSAKMi4xMS4wCgoKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1h
aWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0
cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Feb 11 14:53:32 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 11 Feb 2019 14:53:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gtCxf-0006De-0m; Mon, 11 Feb 2019 14:53:31 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=tNxd=QS=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1gtCxd-0006DV-SW
 for minios-devel@lists.xen.org; Mon, 11 Feb 2019 14:53:29 +0000
X-Inumbo-ID: ca828ae2-2e0c-11e9-bc90-bc764e045a96
Received: from queen.nlehd.de (unknown [195.37.154.80])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id ca828ae2-2e0c-11e9-bc90-bc764e045a96;
 Mon, 11 Feb 2019 14:53:28 +0000 (UTC)
Received: from c414.ant-net (c414.ant-net [192.168.0.156])
 by queen.nlehd.de (Postfix) with ESMTP id 500A340AE2;
 Mon, 11 Feb 2019 15:53:29 +0100 (CET)
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: minios-devel@lists.xen.org
Date: Mon, 11 Feb 2019 15:53:22 +0100
Message-Id: <20190211145324.21334-1-simon.kuenzer@neclab.eu>
X-Mailer: git-send-email 2.11.0
Subject: [Minios-devel] [UNIKRAFT PATCH 0/2] plat/xen: Make Arm32 build again
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: florian.schmidt@neclab.eu, Simon Kuenzer <simon.kuenzer@neclab.eu>,
 sharan.santhanam@neclab.eu
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhpcyBwYXRjaCBzZXJpZXMgbWFrZXMgdGhlIGxpbnV4IHVzZXJzcGFjZSBwbGF0Zm9ybSBidWls
ZCBmb3IgQXJtMzIgYWdhaW4uCkFzIGJlZm9yZSwgc2NoZWR1bGluZyAocGxhdGZvcm0gZmVhdHVy
ZXMgZm9yIEFybTMyIHN0aWxsIG1pc3NpbmcpIGFuZAptZW1vcnkgbWFuZ2VtZW50IChjcmFzaCkg
YXJlIG5vdCB3b3JraW5nIHlldC4KClNpbW9uIEt1ZW56ZXIgKDIpOgogIHBsYXQveGVuOiBTcGxp
dCBlbWVyZ2VuY3kgYW5kIGh5cGVydmlzb3IgY29uc29sZQogIHBsYXQveGVuOiBDUFUgZGVmaW5p
dGlvbiBmb3IgQXJtMzIKCiBwbGF0L2NvbW1vbi9pbmNsdWRlL2FybS9hcm0vY3B1LmggICAgIHwg
IDEyICstCiBwbGF0L3hlbi9Db25maWcudWsgICAgICAgICAgICAgICAgICAgIHwgIDM0ICsrKyst
CiBwbGF0L3hlbi9NYWtlZmlsZS51ayAgICAgICAgICAgICAgICAgIHwgIDEwICstCiBwbGF0L3hl
bi9jb25zb2xlLmMgICAgICAgICAgICAgICAgICAgIHwgMjU0ICsrKysrKy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KIHBsYXQveGVuL2VtZ19jb25zb2xlLmMgICAgICAgICAgICAgICAgfCAg
ODcgKysrKysrKysrKysrCiBwbGF0L3hlbi9odl9jb25zb2xlLmMgICAgICAgICAgICAgICAgIHwg
MjUyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogcGxhdC94ZW4vaW5jbHVkZS9j
b21tb24vY29uc29sZS5oICAgICB8ICAgOSArLQogcGxhdC94ZW4vaW5jbHVkZS9jb21tb24vZW1n
X2NvbnNvbGUuaCB8ICA0NSArKysrKysKIHBsYXQveGVuL2luY2x1ZGUvY29tbW9uL2h2X2NvbnNv
bGUuaCAgfCAgNDkgKysrKysrKwogcGxhdC94ZW4vc2h1dGRvd24uYyAgICAgICAgICAgICAgICAg
ICB8ICAgMiArLQogcGxhdC94ZW4veDg2L3NldHVwLmMgICAgICAgICAgICAgICAgICB8ICAgNCAr
LQogMTEgZmlsZXMgY2hhbmdlZCwgNTI3IGluc2VydGlvbnMoKyksIDIzMSBkZWxldGlvbnMoLSkK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBwbGF0L3hlbi9lbWdfY29uc29sZS5jCiBjcmVhdGUgbW9kZSAx
MDA2NDQgcGxhdC94ZW4vaHZfY29uc29sZS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgcGxhdC94ZW4v
aW5jbHVkZS9jb21tb24vZW1nX2NvbnNvbGUuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHBsYXQveGVu
L2luY2x1ZGUvY29tbW9uL2h2X2NvbnNvbGUuaAoKLS0gCjIuMTEuMAoKCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxp
c3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJv
amVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Feb 11 14:53:32 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 11 Feb 2019 14:53:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gtCxf-0006Dj-2N; Mon, 11 Feb 2019 14:53:31 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=tNxd=QS=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1gtCxd-0006DU-SW
 for minios-devel@lists.xen.org; Mon, 11 Feb 2019 14:53:29 +0000
X-Inumbo-ID: ca8afcf2-2e0c-11e9-bc90-bc764e045a96
Received: from queen.nlehd.de (unknown [195.37.154.80])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id ca8afcf2-2e0c-11e9-bc90-bc764e045a96;
 Mon, 11 Feb 2019 14:53:28 +0000 (UTC)
Received: from c414.ant-net (c414.ant-net [192.168.0.156])
 by queen.nlehd.de (Postfix) with ESMTP id 68A6A41C21;
 Mon, 11 Feb 2019 15:53:29 +0100 (CET)
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: minios-devel@lists.xen.org
Date: Mon, 11 Feb 2019 15:53:24 +0100
Message-Id: <20190211145324.21334-3-simon.kuenzer@neclab.eu>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190211145324.21334-1-simon.kuenzer@neclab.eu>
References: <20190211145324.21334-1-simon.kuenzer@neclab.eu>
Subject: [Minios-devel] [UNIKRAFT PATCH 2/2] plat/xen: CPU definition for
 Arm32
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: florian.schmidt@neclab.eu, Simon Kuenzer <simon.kuenzer@neclab.eu>,
 sharan.santhanam@neclab.eu
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SW50cm9kdWNlIG1pbmltYWwgQ1BVIGRlZmluaXRvbnMgdG8gZW5hYmxlIGNvbXBpbGluZyBmb3Ig
QXJtMzIuClRoaXMgY29tbWl0cyBhbHNvIHJlbW92ZXMgeDg2IHNwZWNpZmljIENQVSBmdW5jdGlv
bnMgZnJvbSB0aGUKQXJtMzIgYnVpbGQgdW5pdC4KClNpZ25lZC1vZmYtYnk6IFNpbW9uIEt1ZW56
ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1PgotLS0KIHBsYXQvY29tbW9uL2luY2x1ZGUvYXJt
L2FybS9jcHUuaCB8IDEyICsrKysrKysrKysrLQogcGxhdC94ZW4vTWFrZWZpbGUudWsgICAgICAg
ICAgICAgIHwgIDQgKystLQogMiBmaWxlcyBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCAzIGRl
bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3BsYXQvY29tbW9uL2luY2x1ZGUvYXJtL2FybS9jcHUu
aCBiL3BsYXQvY29tbW9uL2luY2x1ZGUvYXJtL2FybS9jcHUuaAppbmRleCA2OTdhMjBhMS4uYmM0
ZDQxM2MgMTAwNjQ0Ci0tLSBhL3BsYXQvY29tbW9uL2luY2x1ZGUvYXJtL2FybS9jcHUuaAorKysg
Yi9wbGF0L2NvbW1vbi9pbmNsdWRlL2FybS9hcm0vY3B1LmgKQEAgLTEsOCArMSw5IEBACiAvKiBT
UERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCiAvKgogICogQXV0aG9yczog
U2ltb24gS3VlbnplciA8c2ltb24ua3VlbnplckBuZWNsYWIuZXU+CisgKiBBdXRob3JzOiBXZWkg
Q2hlbiA8d2VpLmNoZW5AYXJtLmNvbT4KICAqCi0gKgorICogQ29weXJpZ2h0IChjKSAyMDE4LCBB
cm0gTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChjKSAyMDE5LCBORUMg
TGFib3JhdG9yaWVzIEV1cm9wZSBHbWJILCBORUMgQ29ycG9yYXRpb24uCiAgKiAgICAgICAgICAg
ICAgICAgICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtMzcsMyArMzgsMTIgQEAKIHN0
YXRpYyBpbmxpbmUgdm9pZCBfaW5pdF9jcHVmZWF0dXJlcyh2b2lkKQogewogfQorCisvKgorICog
SGFsdHMgdGhlIENQVSB1bnRpbCB0aGUgbmV4dCBleHRlcm5hbCBpbnRlcnJ1cHQgaXMgZmlyZWQu
IEZvciBBcm0sCisgKiB3ZSBjYW4gdXNlIFdGSSB0byBpbXBsZW1lbnQgdGhpcyBmZWF0dXJlLgor
ICovCitzdGF0aWMgaW5saW5lIHZvaWQgaGFsdCh2b2lkKQoreworCV9fYXNtX18gX192b2xhdGls
ZV9fKCJ3ZmkiKTsKK30KZGlmZiAtLWdpdCBhL3BsYXQveGVuL01ha2VmaWxlLnVrIGIvcGxhdC94
ZW4vTWFrZWZpbGUudWsKaW5kZXggN2EzZmNjOTMuLjViZGUyNWYzIDEwMDY0NAotLS0gYS9wbGF0
L3hlbi9NYWtlZmlsZS51aworKysgYi9wbGF0L3hlbi9NYWtlZmlsZS51awpAQCAtNDksOSArNDks
OSBAQCBMSUJYRU5QTEFUX1NSQ1MtJChDT05GSUdfQVJDSF9YODZfNjQpICs9ICQoTElCWEVOUExB
VF9CQVNFKS94ODYvYXJjaF90aW1lLmMKIGlmbmVxICgkKFhFTl9IVk1MSVRFKSx5KQogTElCWEVO
UExBVF9BU0ZMQUdTLXkgICAgICAgICAgICs9IC1EQ09ORklHX1BBUkFWSVJUCiBMSUJYRU5QTEFU
X0NGTEFHUy15ICAgICAgICAgICAgKz0gLURDT05GSUdfUEFSQVZJUlQKLUxJQlhFTlBMQVRfU1JD
Uy15ICAgICAgICAgICAgICArPSAkKExJQlhFTlBMQVRfQkFTRSkveDg2L2NwdV9wdi5jCitMSUJY
RU5QTEFUX1NSQ1MtJChDT05GSUdfQVJDSF9YODZfNjQpICs9ICQoTElCWEVOUExBVF9CQVNFKS94
ODYvY3B1X3B2LmMKIGVsc2UKLUxJQlhFTlBMQVRfU1JDUy15ICAgICAgICAgICAgICArPSAkKFVL
X1BMQVRfQ09NTU9OX0JBU0UpL3g4Ni9jcHVfbmF0aXZlLmMKK0xJQlhFTlBMQVRfU1JDUy0kKENP
TkZJR19BUkNIX1g4Nl82NCkgKz0gJChVS19QTEFUX0NPTU1PTl9CQVNFKS94ODYvY3B1X25hdGl2
ZS5jCiBlbmRpZgogCiBMSUJYRU5QTEFUX1NSQ1MtJChDT05GSUdfQVJDSF9BUk1fMzIpICs9ICQo
TElCWEVOUExBVF9CQVNFKS9hcm0vc2V0dXAuYwotLSAKMi4xMS4wCgoKX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlz
dApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9q
ZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Feb 11 14:53:37 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 11 Feb 2019 14:53:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gtCxl-0006F7-3x; Mon, 11 Feb 2019 14:53:37 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=tNxd=QS=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1gtCxj-0006Ex-T2
 for minios-devel@lists.xen.org; Mon, 11 Feb 2019 14:53:35 +0000
X-Inumbo-ID: ca815fac-2e0c-11e9-b5a4-4fb3da8533f7
Received: from queen.nlehd.de (unknown [195.37.154.80])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id ca815fac-2e0c-11e9-b5a4-4fb3da8533f7;
 Mon, 11 Feb 2019 14:53:28 +0000 (UTC)
Received: from c414.ant-net (c414.ant-net [192.168.0.156])
 by queen.nlehd.de (Postfix) with ESMTP id 5B127413FB;
 Mon, 11 Feb 2019 15:53:29 +0100 (CET)
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: minios-devel@lists.xen.org
Date: Mon, 11 Feb 2019 15:53:23 +0100
Message-Id: <20190211145324.21334-2-simon.kuenzer@neclab.eu>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190211145324.21334-1-simon.kuenzer@neclab.eu>
References: <20190211145324.21334-1-simon.kuenzer@neclab.eu>
Subject: [Minios-devel] [UNIKRAFT PATCH 1/2] plat/xen: Split emergency and
 hypervisor console
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: florian.schmidt@neclab.eu, Simon Kuenzer <simon.kuenzer@neclab.eu>,
 sharan.santhanam@neclab.eu
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U3BsaXRzIHRoZSB0d28gY29uc29sZSBpbXBsZW1ldGF0aW9ucyAoaHZjLCBlbWVyZ2VuY3kpIGZy
b20gZWFjaCBvdGhlci4KU2ltaWxhciB0byBwbGF0L2t2bSwgYSBjb25zb2xlIG9wdGlvbiBtZW51
IGlzIHBvcHVsYXRlZCBpbiB0aGUgcGxhdGZvcm0KY29uZmlndXJhdGlvbiB3aGVyZSBlYWNoIGNv
bnNvbGUgY2FuIGJlIGluZGl2aWR1YWxseSBzZWxlY3RlZCBhcyBvdXRwdXQKZm9yIGtlcm5lbCBv
ciBkZWJ1ZyBtZXNzYWdlcy4gQmVjYXVzZSBodmMgaXMgY3VycmVudGx5IG5vdCB5ZXQgc3VwcG9y
dGVkCm9uIEFybTMyLCB3ZSBzZXQgdGhlIGRlYnVnIGNvbnNvbGUgYXMgZGVmYXVsdCBvdXRwdXQg
b24gQXJtMzIuCgpTaWduZWQtb2ZmLWJ5OiBTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5l
Y2xhYi5ldT4KLS0tCiBwbGF0L3hlbi9Db25maWcudWsgICAgICAgICAgICAgICAgICAgIHwgIDM0
ICsrKystCiBwbGF0L3hlbi9NYWtlZmlsZS51ayAgICAgICAgICAgICAgICAgIHwgICA2ICsKIHBs
YXQveGVuL2NvbnNvbGUuYyAgICAgICAgICAgICAgICAgICAgfCAyNTQgKysrKysrLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogcGxhdC94ZW4vZW1nX2NvbnNvbGUuYyAgICAgICAgICAgICAg
ICB8ICA4NyArKysrKysrKysrKysKIHBsYXQveGVuL2h2X2NvbnNvbGUuYyAgICAgICAgICAgICAg
ICAgfCAyNTIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBwbGF0L3hlbi9pbmNs
dWRlL2NvbW1vbi9jb25zb2xlLmggICAgIHwgICA5ICstCiBwbGF0L3hlbi9pbmNsdWRlL2NvbW1v
bi9lbWdfY29uc29sZS5oIHwgIDQ1ICsrKysrKwogcGxhdC94ZW4vaW5jbHVkZS9jb21tb24vaHZf
Y29uc29sZS5oICB8ICA0OSArKysrKysrCiBwbGF0L3hlbi9zaHV0ZG93bi5jICAgICAgICAgICAg
ICAgICAgIHwgICAyICstCiBwbGF0L3hlbi94ODYvc2V0dXAuYyAgICAgICAgICAgICAgICAgIHwg
ICA0ICstCiAxMCBmaWxlcyBjaGFuZ2VkLCA1MTQgaW5zZXJ0aW9ucygrKSwgMjI4IGRlbGV0aW9u
cygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHBsYXQveGVuL2VtZ19jb25zb2xlLmMKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBwbGF0L3hlbi9odl9jb25zb2xlLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBwbGF0
L3hlbi9pbmNsdWRlL2NvbW1vbi9lbWdfY29uc29sZS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgcGxh
dC94ZW4vaW5jbHVkZS9jb21tb24vaHZfY29uc29sZS5oCgpkaWZmIC0tZ2l0IGEvcGxhdC94ZW4v
Q29uZmlnLnVrIGIvcGxhdC94ZW4vQ29uZmlnLnVrCmluZGV4IDljZmU5MGEyLi5hMjllMGZmOSAx
MDA2NDQKLS0tIGEvcGxhdC94ZW4vQ29uZmlnLnVrCisrKyBiL3BsYXQveGVuL0NvbmZpZy51awpA
QCAtMTAsMTQgKzEwLDM2IEBAIG1lbnVjb25maWcgUExBVF9YRU4KICAgICAgICAgICAgICAgICBD
cmVhdGUgYSBVbmlrcmFmdCBpbWFnZSB0aGF0IHJ1bnMgYXMgYSBYZW4gZ3Vlc3QKIAogaWYgKFBM
QVRfWEVOKQotCWNvbmZpZyBYRU5fREJHRU1FUkdFTkNZCi0JYm9vbCAiRW1lcmdlbmN5IGNvbnNv
bGUgZm9yIGRlYnVnIG91dHB1dCIKK21lbnUgIkNvbnNvbGUgT3B0aW9ucyIKKworY29uZmlnIFhF
Tl9LRVJORUxfSFZfQ09OU09MRQorCWJvb2wgIkh5cGVydmlzb3IgY29uc29sZSBmb3Iga2VybmVs
IHByaW50cyIKKwlkZWZhdWx0IHkKKwlkZXBlbmRzIG9uIEFSQ0hfWDg2XzY0CisJaGVscAorCQlT
ZW5kIGtlcm5lbCBtZXNzYWdlcyB0byB0aGUgaHlwZXJ2aXNvciBjb25zb2xlLgorCitjb25maWcg
WEVOX0tFUk5FTF9FTUdfQ09OU09MRQorCWJvb2wgIkVtZXJnZW5jeSBjb25zb2xlIGZvciBrZXJu
ZWwgcHJpbnRzIgorCWRlZmF1bHQgeSBpZiBBUkNIX0FSTV8zMgogCWRlZmF1bHQgbgogCWhlbHAK
LQkJU2VuZCBkZWJ1ZyBtZXNzYWdlcyB0byB0aGUgZW1lcmdlbmN5IGNvbnNvbGUKLQkJaW5zdGVh
ZCBvZiB0aGUgaHlwZXJ2aXNvciBjb25zb2xlLiBXaGVuIHRoaXMKLQkJb3B0aW9uIGlzIGVuYWJs
ZWQgdGhlIGh5cGVydmlzb3IgY29uc29sZSBpcyB1c2VkCi0JCWZvciBrZXJuZWwgbWVzc2FnZXMg
b25seS4KKwkJU2VuZCBrZXJuZWwgbWVzc2FnZXMgdG8gdGhlIGVtZXJnZW5jeSBjb25zb2xlLgor
Citjb25maWcgWEVOX0RFQlVHX0hWX0NPTlNPTEUKKwlib29sICJIeXBlcnZpc29yIGNvbnNvbGUg
Zm9yIGRlYnVnIHByaW50cyIKKwlkZWZhdWx0IHkKKwlkZXBlbmRzIG9uIEFSQ0hfWDg2XzY0CisJ
aGVscAorCQlTZW5kIGRlYnVnIG1lc3NhZ2VzIHRvIHRoZSBoeXBlcnZpc29yIGNvbnNvbGUuCisK
K2NvbmZpZyBYRU5fREVCVUdfRU1HX0NPTlNPTEUKKwlib29sICJFbWVyZ2VuY3kgY29uc29sZSBm
b3IgZGVidWcgcHJpbnRzIgorCWRlZmF1bHQgeSBpZiBBUkNIX0FSTV8zMgorCWRlZmF1bHQgbgor
ICAgICAgICBoZWxwCisJCVNlbmQgZGVidWcgbWVzc2FnZXMgdG8gdGhlIGVtZXJnZW5jeSBjb25z
b2xlLgorZW5kbWVudQogCiBjb25maWcgWEVOX0dOVFRBQgogCWJvb2wgIkdyYW50IHRhYmxlIHN1
cHBvcnQiCmRpZmYgLS1naXQgYS9wbGF0L3hlbi9NYWtlZmlsZS51ayBiL3BsYXQveGVuL01ha2Vm
aWxlLnVrCmluZGV4IDM0MzlhMGQ5Li43YTNmY2M5MyAxMDA2NDQKLS0tIGEvcGxhdC94ZW4vTWFr
ZWZpbGUudWsKKysrIGIvcGxhdC94ZW4vTWFrZWZpbGUudWsKQEAgLTcwLDYgKzcwLDEyIEBAIExJ
QlhFTlBMQVRfU1JDUy0kKENPTkZJR19BUkNIX0FSTV82NCkgKz0gJChMSUJYRU5QTEFUX0JBU0Up
L2FybS9oeXBlcmNhbGxzNjQuUwogCiBMSUJYRU5QTEFUX1NSQ1MteSAgICAgICAgICAgICAgKz0g
JChMSUJYRU5QTEFUX0JBU0UpL2xjcHUuYwogTElCWEVOUExBVF9TUkNTLXkgICAgICAgICAgICAg
ICs9ICQoTElCWEVOUExBVF9CQVNFKS9jb25zb2xlLmMKK2lmZXEgKCQoZmluZHN0cmluZyB5LCQo
Q09ORklHX1hFTl9LRVJORUxfSFZfQ09OU09MRSkgJChDT05GSUdfWEVOX0RFQlVHX0hWX0NPTlNP
TEUpKSx5KQorTElCWEVOUExBVF9TUkNTLXkgICAgICAgICAgICAgICs9ICQoTElCWEVOUExBVF9C
QVNFKS9odl9jb25zb2xlLmMKK2VuZGlmCitpZmVxICgkKGZpbmRzdHJpbmcgeSwkKENPTkZJR19Y
RU5fS0VSTkVMX0VNR19DT05TT0xFKSAkKENPTkZJR19YRU5fREVCVUdfRU1HX0NPTlNPTEUpKSx5
KQorTElCWEVOUExBVF9TUkNTLXkgICAgICAgICAgICAgICs9ICQoTElCWEVOUExBVF9CQVNFKS9l
bWdfY29uc29sZS5jCitlbmRpZgogTElCWEVOUExBVF9TUkNTLXkgICAgICAgICAgICAgICs9ICQo
TElCWEVOUExBVF9CQVNFKS9zaHV0ZG93bi5jCiBMSUJYRU5QTEFUX1NSQ1MteSAgICAgICAgICAg
ICAgKz0gJChMSUJYRU5QTEFUX0JBU0UpL2V2ZW50cy5jCiAKZGlmZiAtLWdpdCBhL3BsYXQveGVu
L2NvbnNvbGUuYyBiL3BsYXQveGVuL2NvbnNvbGUuYwppbmRleCBhNzBlYzVmZi4uZWQ1OTQwMDQg
MTAwNjQ0Ci0tLSBhL3BsYXQveGVuL2NvbnNvbGUuYworKysgYi9wbGF0L3hlbi9jb25zb2xlLmMK
QEAgLTIsNyArMiw4IEBACiAvKgogICogQXV0aG9yczogU2ltb24gS3VlbnplciA8c2ltb24ua3Vl
bnplckBuZWNsYWIuZXU+CiAgKgotICogQ29weXJpZ2h0IChjKSAyMDE3LCBORUMgRXVyb3BlIEx0
ZC4sIE5FQyBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
YykgMjAxOSwgTkVDIExhYm9yYXRvcmllcyBFdXJvcGUgR21iSCwgTkVDIENvcnBvcmF0aW9uLgor
ICogICAgICAgICAgICAgICAgICAgICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiwyMTAgKzMzLDM4IEBACiAgKiBUSElTIEhFQURFUiBN
QVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgogICovCiAKLS8qCi0g
KiBTb21lIG9mIHRoaXMgY29kZSB3YXMgcG9ydGVkIGZyb20gTWluaS1PUzoKLSAqICBjb25zb2xl
L3hlbmNvbnNfcmluZy5jIGFuZCBjb25zb2xlL2NvbnNvbGUuYwotICovCi0vKgotICoqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioKLSAqIChDKSAyMDA2IC0gR3J6ZWdvcnogTWlsb3MgLSBDYW1icmlkZ2UgVW5p
dmVyc2l0eQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqCi0gKiAgICAgICAgRmlsZTogY29uc29s
ZS5oCi0gKiAgICAgIEF1dGhvcjogR3J6ZWdvcnogTWlsb3MKLSAqICAgICBDaGFuZ2VzOgotICoK
LSAqICAgICAgICBEYXRlOiBNYXIgMjAwNgotICoKLSAqIEVudmlyb25tZW50OiBYZW4gTWluaW1h
bCBPUwotICogRGVzY3JpcHRpb246IENvbnNvbGUgaW50ZXJmYWNlLgotICoKLSAqIEhhbmRsZXMg
Y29uc29sZSBJL08uIERlZmluZXMgcHJpbnRrLgotICoKLSAqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0g
KiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBl
cnNvbiBvYnRhaW5pbmcgYSBjb3B5Ci0gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVk
IGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KLSAqIGRlYWwgaW4gdGhl
IFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRp
b24gdGhlCi0gKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBk
aXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKLSAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0
d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCi0gKiBm
dXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgot
ICoKLSAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90
aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCi0gKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBv
cnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLSAqCi0gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQg
IkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgotICogSU1Q
TElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFksCi0gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9O
SU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKLSAqIEFVVEhPUlMgT1IgQ09QWVJJ
R0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKLSAq
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RI
RVJXSVNFLCBBUklTSU5HCi0gKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRI
RSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCi0gKiBERUFMSU5HUyBJTiBUSEUgU09GVFdB
UkUuCi0gKi8KLQotI2luY2x1ZGUgPGludHR5cGVzLmg+Ci0jaW5jbHVkZSA8c3RyaW5nLmg+Cisj
aW5jbHVkZSA8dWsvY29uZmlnLmg+CiAjaW5jbHVkZSA8dWsvcGxhdC9jb25zb2xlLmg+CisjaW5j
bHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8dWsvYXJjaC9sY3B1Lmg+Ci0jaW5jbHVkZSA8dWsv
YXNzZXJ0Lmg+CiAjaW5jbHVkZSA8dWsvZXNzZW50aWFscy5oPgotI2luY2x1ZGUgPHVrL2NvbmZp
Zy5oPgotCi0jaW5jbHVkZSA8Y29tbW9uL2NvbnNvbGUuaD4KLSNpbmNsdWRlIDxjb21tb24vZXZl
bnRzLmg+Ci0jaW5jbHVkZSA8Y29tbW9uL2h5cGVydmlzb3IuaD4KLSNpbmNsdWRlIDx4ZW4veGVu
Lmg+CiAKLSNpZiAoZGVmaW5lZCBfX1g4Nl8zMl9fKSB8fCAoZGVmaW5lZCBfX1g4Nl82NF9fKQot
I2luY2x1ZGUgPHhlbi14ODYvc2V0dXAuaD4KLSNpbmNsdWRlIDx4ZW4teDg2L21tLmg+Ci0jaWYg
ZGVmaW5lZCBfX1g4Nl8zMl9fCi0jaW5jbHVkZSA8eGVuLXg4Ni9oeXBlcmNhbGwzMi5oPgotI2Vs
aWYgZGVmaW5lZCBfX1g4Nl82NF9fCi0jaW5jbHVkZSA8eGVuLXg4Ni9oeXBlcmNhbGw2NC5oPgor
I2lmIChDT05GSUdfWEVOX0tFUk5FTF9IVl9DT05TT0xFIHx8IENPTkZJR19YRU5fREVCVUdfSFZf
Q09OU09MRSkKKyNpbmNsdWRlIDxjb21tb24vaHZfY29uc29sZS5oPgogI2VuZGlmCi0jZWxpZiAo
ZGVmaW5lZCBfX0FSTV8zMl9fKSB8fCAoZGVmaW5lZCBfX0FSTV82NF9fKQotI2luY2x1ZGUgPHhl
bi1hcm0vbW0uaD4KLSNpbmNsdWRlIDx4ZW4tYXJtL2h5cGVyY2FsbC5oPgorI2lmIChDT05GSUdf
WEVOX0tFUk5FTF9FTUdfQ09OU09MRSB8fCBDT05GSUdfWEVOX0RFQlVHX0VNR19DT05TT0xFKQor
I2luY2x1ZGUgPGNvbW1vbi9lbWdfY29uc29sZS5oPgogI2VuZGlmCi0jaW5jbHVkZSA8eGVuL2lv
L2NvbnNvbGUuaD4KLSNpbmNsdWRlIDx4ZW4vaW8vcHJvdG9jb2xzLmg+Ci0jaW5jbHVkZSA8eGVu
L2lvL3JpbmcuaD4KLSNpZm5kZWYgQ09ORklHX1BBUkFWSVJUCi0jaW5jbHVkZSA8eGVuL2h2bS9w
YXJhbXMuaD4KLSNlbmRpZgotCi1zdGF0aWMgc3RydWN0IHhlbmNvbnNfaW50ZXJmYWNlICpjb25z
b2xlX3Jpbmc7Ci1zdGF0aWMgdWludDMyX3QgY29uc29sZV9ldnRjaG47Ci1zdGF0aWMgaW50IGNv
bnNvbGVfcmVhZHk7CiAKLSNpZmRlZiBDT05GSUdfUEFSQVZJUlQKLXZvaWQgX2xpYnhlbnBsYXRf
cHJlcGFyZV9jb25zb2xlKHZvaWQpCit2b2lkIHByZXBhcmVfY29uc29sZSh2b2lkKQogewotCWNv
bnNvbGVfcmluZyA9IG1mbl90b192aXJ0KEhZUEVSVklTT1Jfc3RhcnRfaW5mby0+Y29uc29sZS5k
b21VLm1mbik7Ci0JY29uc29sZV9ldnRjaG4gPSBIWVBFUlZJU09SX3N0YXJ0X2luZm8tPmNvbnNv
bGUuZG9tVS5ldnRjaG47Ci19Ci0jZWxzZQotdm9pZCBfbGlieGVucGxhdF9wcmVwYXJlX2NvbnNv
bGUodm9pZCkKLXsKLQkvKiBOT1QgSU1QTEVNRU5URUQgWUVUICovCi19CisjaWYgKENPTkZJR19Y
RU5fS0VSTkVMX0hWX0NPTlNPTEUgfHwgQ09ORklHX1hFTl9ERUJVR19IVl9DT05TT0xFKQorCWh2
X2NvbnNvbGVfcHJlcGFyZSgpOwogI2VuZGlmCi0KLSNpZiBDT05GSUdfWEVOX0RCR0VNRVJHRU5D
WQotc3RhdGljIGludCBlbWVyZ2VuY3lfb3V0cHV0KGNvbnN0IGNoYXIgKnN0ciwgdW5zaWduZWQg
aW50IGxlbikKLXsKLQlpbnQgcmM7Ci0KLQlyYyA9IEhZUEVSVklTT1JfY29uc29sZV9pbyhDT05T
T0xFSU9fd3JpdGUsIGxlbiwgREVDT05TVChjaGFyICosIHN0cikpOwotCWlmICh1bmxpa2VseShy
YyA8IDApKQotCQlyZXR1cm4gcmM7Ci0JcmV0dXJuIGxlbjsKLX0KLSNlbmRpZgotCi0vKgotICog
aHZjb25zb2xlX291dHB1dCBjYW4gb3BlcmF0ZSBpbiB0d28gbW9kZXM6IGJ1ZmZlcmVkIGFuZCBp
bml0aWFsaXplZC4KLSAqIFRoZSBidWZmZXJlZCBtb2RlIGlzIGF1dG9tYXRpY2FsbHkgYWN0aXZh
dGVkIGFmdGVyCi0gKiBfbGlieGVucGxhdF9wcmVwYXJlX2NvbnNvbGUoKSB3YXMgY2FsbGVkIGFu
ZCB3ZSBrbm93IHdoZXJlIHRoZSBjb25zb2xlIHJpbmcKLSAqIGlzLiBUaGUgb3V0cHV0IHN0cmlu
ZyBpcyBwdXQgdG8gdGhlIGNvbnNvbGUgcmluZyB1bnRpbCB0aGUgcmluZyBpcyBmdWxsLiBBbnkK
LSAqIGZ1cnRoZXIgY2hhcmFjdGVycyBhcmUgZGlzY2FyZGVkLiBTaW5jZSB0aGUgZXZlbnQgY2hh
bm5lbCBpcyBub3QgaW5pdGlhbGl6ZWQKLSAqIHlldCwgdGhlIGJhY2tlbmQgaXMgbm90IG5vdGlm
aWVkLiBUaGlzIG1vZGUgaXMgaW50cm9kdWNlZCB0byBzdXBwb3J0IGVhcmx5Ci0gKiBwcmludGlu
ZywgZXZlbiBiZWZvcmUgZXZlbnRzIGFyZSBub3QgaW5pdGlhbGl6ZWQuCi0gKiBfbGlieGVucGxh
dF9pbml0X2NvbnNvbGUoKSBmaW5hbGl6ZXMgdGhlIGluaXRpYWxpemF0aW9uIGFuZCBlbmFibGVz
Ci0gKiB0aGUgZXZlbnQgY2hhbm5lbC4gRnJvbSBub3cgb24sIHRoZSBjb25zb2xlIGJhY2tlbmQg
aXMgbm90aWZpZWQgd2hlbmV2ZXIKLSAqIHdlIHB1dCBjaGFyYWN0ZXJzIG9uIHRoZSBjb25zb2xl
IHJpbmcuIFdoZW5ldmVyIHRoaXMgcmluZyBpcyBmdWxsIGFuZCB0aGVyZQotICogYXJlIHN0aWxs
IGNoYXJhY3RlcnMgdGhhdCBzaG91bGQgYmUgcHJpbnRlZCwgd2UgYXJlIGVudGVyaW5nIGEgYnVz
eSBsb29wIGFuZAotICogd2FpdCBmb3IgdGhlIGJhY2tlbmQgdG8gbWFrZSB1cyBzcGFjZSBhZ2Fp
bi4gT2YgY291cnNlIHRoaXMgaXMgc2xvdzogZG8gbm90Ci0gKiBwcmludCBzbyBtdWNoISA7LSkK
LSAqLwotc3RhdGljIGludCBodmNvbnNvbGVfb3V0cHV0KGNvbnN0IGNoYXIgKnN0ciwgdW5zaWdu
ZWQgaW50IGxlbikKLXsKLQl1bnNpZ25lZCBpbnQgc2VudCA9IDA7Ci0JWEVOQ09OU19SSU5HX0lE
WCBjb25zLCBwcm9kOwotCi0JaWYgKHVubGlrZWx5KCFjb25zb2xlX3JpbmcpKQotCQlyZXR1cm4g
c2VudDsKLQotcmV0cnk6Ci0JY29ucyA9IGNvbnNvbGVfcmluZy0+b3V0X2NvbnM7Ci0JcHJvZCA9
IGNvbnNvbGVfcmluZy0+b3V0X3Byb2Q7Ci0KLQltYigpOyAvKiBtYWtlIHN1cmUgd2UgaGF2ZSBj
b25zICYgcHJvZCBiZWZvcmUgdG91Y2hpbmcgdGhlIHJpbmcgKi8KLQlVS19CVUdPTigocHJvZCAt
IGNvbnMpID4gc2l6ZW9mKGNvbnNvbGVfcmluZy0+b3V0KSk7Ci0KLQl3aGlsZSAoKHNlbnQgPCBs
ZW4pICYmICgocHJvZCAtIGNvbnMpIDwgc2l6ZW9mKGNvbnNvbGVfcmluZy0+b3V0KSkpIHsKLQkJ
aWYgKHN0cltzZW50XSA9PSAnXG4nKSB7Ci0JCQkvKiBwcmVwZW5kICdccicgZm9yIGNvbnZlcnRp
bmcgJ1xuJyB0byAnXHInJ1xuJyAqLwotCQkJaWYgKChwcm9kICsgMSAtIGNvbnMpID49IHNpemVv
Zihjb25zb2xlX3JpbmctPm91dCkpCi0JCQkJYnJlYWs7IC8qIG5vdCBlbm91Z2ggc3BhY2UgZm9y
ICdccicgYW5kICdcbichICovCi0KLQkJCWNvbnNvbGVfcmluZy0+b3V0W01BU0tfWEVOQ09OU19J
RFgocHJvZCsrLAotCQkJCQkJCSAgIGNvbnNvbGVfcmluZy0+b3V0KV0gPQotCQkJCSdccic7Ci0J
CX0KLQotCQljb25zb2xlX3JpbmctPm91dFtNQVNLX1hFTkNPTlNfSURYKHByb2QrKywgY29uc29s
ZV9yaW5nLT5vdXQpXSA9Ci0JCQlzdHJbc2VudF07Ci0JCXNlbnQrKzsKLQl9Ci0Jd21iKCk7IC8q
IGVuc3VyZSBjaGFyYWN0ZXJzIGFyZSB3cml0dGVuIGJlZm9yZSBpbmNyZWFzaW5nIG91dF9wcm9k
ICovCi0JY29uc29sZV9yaW5nLT5vdXRfcHJvZCA9IHByb2Q7Ci0KLQkvKiBJcyB0aGUgY29uc29s
ZSBmdWxseSBpbml0aWFsaXplZD8KLQkgKiBBcmUgd2UgYWJsZSB0byBub3RpZnkgdGhlIGJhY2tl
bmQ/Ci0JICovCi0JaWYgKGxpa2VseShjb25zb2xlX3JlYWR5ICYmIGNvbnNvbGVfZXZ0Y2huKSkg
ewotCQlub3RpZnlfcmVtb3RlX3ZpYV9ldnRjaG4oY29uc29sZV9ldnRjaG4pOwotCi0JCS8qIFRo
ZXJlIGFyZSBzdGlsbCBieXRlcyBsZWZ0IHRvIHNlbmQgb3V0PyBJZiB5ZXMsIGRvIG5vdAotCQkg
KiBkaXNjYXJkIHRoZW0sIHJldHJ5IHNlbmRpbmcgKGVudGVycyBidXN5IHdhaXRpbmcpCi0JCSAq
LwotCQlpZiAoc2VudCA8IGxlbikKLQkJCWdvdG8gcmV0cnk7Ci0JfQotCXJldHVybiBzZW50Owog
fQogCi1zdGF0aWMgdm9pZCBodmNvbnNvbGVfaW5wdXQoZXZ0Y2huX3BvcnRfdCBwb3J0IF9fdW51
c2VkLAotCQkJICAgIHN0cnVjdCBfX3JlZ3MgKnJlZ3MgX191bnVzZWQsCi0JCQkgICAgdm9pZCAq
ZGF0YSBfX3VudXNlZCkKK3ZvaWQgZmx1c2hfY29uc29sZSh2b2lkKQogewotCS8qIE5PVCBJTVBM
RU1FTlRFRCBZRVQgKi8KLX0KLQotdm9pZCBodmNvbnNvbGVfZmx1c2godm9pZCkKLXsKLQlzdHJ1
Y3QgeGVuY29uc19pbnRlcmZhY2UgKmludGY7Ci0KLQlpZiAoIWNvbnNvbGVfcmVhZHkpCi0JCXJl
dHVybjsKLQotCWludGYgPSBjb25zb2xlX3Jpbmc7Ci0JaWYgKHVubGlrZWx5KCFpbnRmKSkKLQkJ
cmV0dXJuOwotCi0Jd2hpbGUgKGludGYtPm91dF9jb25zIDwgaW50Zi0+b3V0X3Byb2QpCi0JCWJh
cnJpZXIoKTsKKyNpZiAoQ09ORklHX1hFTl9LRVJORUxfSFZfQ09OU09MRSB8fCBDT05GSUdfWEVO
X0RFQlVHX0hWX0NPTlNPTEUpCisJaHZfY29uc29sZV9mbHVzaCgpOworI2VuZGlmCiB9CiAKLXZv
aWQgX2xpYnhlbnBsYXRfaW5pdF9jb25zb2xlKHZvaWQpCit2b2lkIGluaXRfY29uc29sZSh2b2lk
KQogewotCWludCBlcnI7Ci0KLQlVS19BU1NFUlQoY29uc29sZV9yaW5nICE9IE5VTEwpOwotCi0J
dWtfcHJfZGVidWcoImh2Y29uc29sZSBAICVwIChldnRjaG46ICUiUFJJdTMyIilcbiIsCi0JCSAg
ICBjb25zb2xlX3JpbmcsIGNvbnNvbGVfZXZ0Y2huKTsKLQotCWVyciA9IGJpbmRfZXZ0Y2huKGNv
bnNvbGVfZXZ0Y2huLCBodmNvbnNvbGVfaW5wdXQsIE5VTEwpOwotCWlmIChlcnIgPD0gMCkKLQkJ
VUtfQ1JBU0goIkZhaWxlZCB0byBiaW5kIGV2ZW50IGNoYW5uZWwgZm9yIGh2Y29uc29sZTogJWlc
biIsCi0JCQkgZXJyKTsKLQl1bm1hc2tfZXZ0Y2huKGNvbnNvbGVfZXZ0Y2huKTsKLQotCWNvbnNv
bGVfcmVhZHkgPSAxOyAvKiBlbmFibGUgbm90aWZpY2F0aW9uIG9mIGJhY2tlbmQgKi8KLQkvKiBm
bHVzaCBxdWV1ZWQgb3V0cHV0ICovCi0Jbm90aWZ5X3JlbW90ZV92aWFfZXZ0Y2huKGNvbnNvbGVf
ZXZ0Y2huKTsKKyNpZiAoQ09ORklHX1hFTl9LRVJORUxfSFZfQ09OU09MRSB8fCBDT05GSUdfWEVO
X0RFQlVHX0hWX0NPTlNPTEUpCisJaHZfY29uc29sZV9pbml0KCk7CisjZW5kaWYKIH0KIAogaW50
IHVrcGxhdF9jb3V0ZChjb25zdCBjaGFyICpzdHIsIHVuc2lnbmVkIGludCBsZW4pCkBAIC0yNDMs
NDEgKzcyLDM2IEBAIGludCB1a3BsYXRfY291dGQoY29uc3QgY2hhciAqc3RyLCB1bnNpZ25lZCBp
bnQgbGVuKQogCWlmICh1bmxpa2VseShsZW4gPT0gMCkpCiAJCWxlbiA9IHN0cm5sZW4oc3RyLCBs
ZW4pOwogCi0jaWYgQ09ORklHX1hFTl9EQkdFTUVSR0VOQ1kKLQlyZXR1cm4gZW1lcmdlbmN5X291
dHB1dChzdHIsIGxlbik7Ci0jZWxzZQotCXJldHVybiBodmNvbnNvbGVfb3V0cHV0KHN0ciwgbGVu
KTsKKyNpZiBDT05GSUdfWEVOX0RFQlVHX0VNR19DT05TT0xFCisJZW1nX2NvbnNvbGVfb3V0cHV0
KHN0ciwgbGVuKTsKKyNlbmRpZgorI2lmIENPTkZJR19YRU5fREVCVUdfSFZfQ09OU09MRQorCWh2
X2NvbnNvbGVfb3V0cHV0KHN0ciwgbGVuKTsKICNlbmRpZgorCXJldHVybiBsZW47CiB9CiAKLWlu
dCB1a3BsYXRfY291dGsoY29uc3QgY2hhciAqc3RyIF9fdW51c2VkLCB1bnNpZ25lZCBpbnQgbGVu
IF9fdW51c2VkKQoraW50IHVrcGxhdF9jb3V0ayhjb25zdCBjaGFyICpzdHIsIHVuc2lnbmVkIGlu
dCBsZW4pCiB7CiAJaWYgKHVubGlrZWx5KGxlbiA9PSAwKSkKIAkJbGVuID0gc3RybmxlbihzdHIs
IGxlbik7CiAKLQlyZXR1cm4gaHZjb25zb2xlX291dHB1dChzdHIsIGxlbik7CisjaWYgQ09ORklH
X1hFTl9LRVJORUxfRU1HX0NPTlNPTEUKKwllbWdfY29uc29sZV9vdXRwdXQoc3RyLCBsZW4pOwor
I2VuZGlmCisjaWYgQ09ORklHX1hFTl9LRVJORUxfSFZfQ09OU09MRQorCWh2X2NvbnNvbGVfb3V0
cHV0KHN0ciwgbGVuKTsKKyNlbmRpZgorCXJldHVybiBsZW47CiB9CiAKLWludCB1a3BsYXRfY2lu
ayhjaGFyICpzdHIsIHVuc2lnbmVkIGludCBtYXhsZW4pCitpbnQgdWtwbGF0X2NpbmsoY2hhciAq
c3RyIF9fbWF5YmVfdW51c2VkLCB1bnNpZ25lZCBpbnQgbWF4bGVuIF9fbWF5YmVfdW51c2VkKQog
ewotCWludCByZWFkID0gMDsKLQlYRU5DT05TX1JJTkdfSURYIGNvbnMsIHByb2Q7CisJaW50IHJl
dCA9IDA7CiAKLQljb25zID0gY29uc29sZV9yaW5nLT5pbl9jb25zOwotCXByb2QgPSBjb25zb2xl
X3JpbmctPmluX3Byb2Q7Ci0Jcm1iKCk7IC8qIG1ha2Ugc3VyZSBpbl9jb25zLCBpbl9wcm9kIGFy
ZSByZWFkIGJlZm9yZSBlbnF1ZXVpbmcgKi8KLQlVS19CVUdPTigocHJvZCAtIGNvbnMpID4gc2l6
ZW9mKGNvbnNvbGVfcmluZy0+aW4pKTsKLQotCXdoaWxlIChjb25zICE9IHByb2QgJiYgbWF4bGVu
ID4gMCkgewotCQkqKHN0ciArIHJlYWQpID0gKihjb25zb2xlX3JpbmctPmluKwotCQkJCSAgTUFT
S19YRU5DT05TX0lEWChjb25zLCBjb25zb2xlX3JpbmctPmluKSk7Ci0JCXJlYWQrKzsKLQkJY29u
cysrOwotCQltYXhsZW4tLTsKLQl9Ci0KLQl3bWIoKTsgLyogZW5zdXJlIGZpbmlzaGVkIG9wZXJh
dGlvbiBiZWZvcmUgdXBkYXRpbmcgaW5fY29ucyAqLwotCWNvbnNvbGVfcmluZy0+aW5fY29ucyA9
IGNvbnM7CisjaWYgQ09ORklHX1hFTl9LRVJORUxfSFZfQ09OU09MRQorCXJldCA9IGh2X2NvbnNv
bGVfaW5wdXQoc3RyLCBtYXhsZW4pOworI2VuZGlmCiAKLQlyZXR1cm4gcmVhZDsKKwlyZXR1cm4g
cmV0OwogfQpkaWZmIC0tZ2l0IGEvcGxhdC94ZW4vZW1nX2NvbnNvbGUuYyBiL3BsYXQveGVuL2Vt
Z19jb25zb2xlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLmUyZTRkZjZl
Ci0tLSAvZGV2L251bGwKKysrIGIvcGxhdC94ZW4vZW1nX2NvbnNvbGUuYwpAQCAtMCwwICsxLDg3
IEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlIGFuZCBNSVQgKi8K
Ky8qCisgKiBBdXRob3JzOiBTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4K
KyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTksIE5FQyBMYWJvcmF0b3JpZXMgRXVyb3BlIEdtYkgs
IE5FQyBDb3Jwb3JhdGlvbi4KKyAqICAgICAgICAgICAgICAgICAgICAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmln
aHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiAgICBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogICAg
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqCisgKiBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklF
RCBJTiBBTlkgV0FZLgorICovCisKKy8qCisgKiBTb21lIG9mIHRoaXMgY29kZSB3YXMgcG9ydGVk
IGZyb20gTWluaS1PUzoKKyAqICBjb25zb2xlL3hlbmNvbnNfcmluZy5jIGFuZCBjb25zb2xlL2Nv
bnNvbGUuYworICovCisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIChDKSAyMDA2IC0gR3J6
ZWdvcnogTWlsb3MgLSBDYW1icmlkZ2UgVW5pdmVyc2l0eQorICoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK
KyAqCisgKiAgICAgICAgRmlsZTogY29uc29sZS5oCisgKiAgICAgIEF1dGhvcjogR3J6ZWdvcnog
TWlsb3MKKyAqICAgICBDaGFuZ2VzOgorICoKKyAqICAgICAgICBEYXRlOiBNYXIgMjAwNgorICoK
KyAqIEVudmlyb25tZW50OiBYZW4gTWluaW1hbCBPUworICogRGVzY3JpcHRpb246IENvbnNvbGUg
aW50ZXJmYWNlLgorICoKKyAqIEhhbmRsZXMgY29uc29sZSBJL08uIERlZmluZXMgcHJpbnRrLgor
ICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVk
LCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisgKiBvZiB0
aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29m
dHdhcmUiKSwgdG8KKyAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24s
IGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCisgKiByaWdodHMgdG8gdXNlLCBjb3B5
LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IK
KyAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRv
IHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8g
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90
aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBh
bGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisg
KiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBB
TlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRF
RCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUKKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkg
Q0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJ
T04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQg
T0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVS
CisgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKi8KKworI2luY2x1ZGUgPHVrL2Vzc2Vu
dGlhbHMuaD4KKyNpbmNsdWRlIDxjb21tb24vaHlwZXJ2aXNvci5oPgorCitpbnQgZW1nX2NvbnNv
bGVfb3V0cHV0KGNvbnN0IGNoYXIgKnN0ciwgdW5zaWduZWQgaW50IGxlbikKK3sKKwlpbnQgcmM7
CisKKwlyYyA9IEhZUEVSVklTT1JfY29uc29sZV9pbyhDT05TT0xFSU9fd3JpdGUsIGxlbiwgREVD
T05TVChjaGFyICosIHN0cikpOworCWlmICh1bmxpa2VseShyYyA8IDApKQorCQlyZXR1cm4gcmM7
CisJcmV0dXJuIGxlbjsKK30KZGlmZiAtLWdpdCBhL3BsYXQveGVuL2h2X2NvbnNvbGUuYyBiL3Bs
YXQveGVuL2h2X2NvbnNvbGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4u
MjhmODZmMjUKLS0tIC9kZXYvbnVsbAorKysgYi9wbGF0L3hlbi9odl9jb25zb2xlLmMKQEAgLTAs
MCArMSwyNTIgQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgYW5k
IE1JVCAqLworLyoKKyAqIEF1dGhvcnM6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVj
bGFiLmV1PgorICoKKyAqIENvcHlyaWdodCAoYykgMjAxOSwgTkVDIExhYm9yYXRvcmllcyBFdXJv
cGUgR21iSCwgTkVDIENvcnBvcmF0aW9uLgorICogICAgICAgICAgICAgICAgICAgICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhl
IGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqICAgIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiAgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICoKKyAqIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9S
IE1PRElGSUVEIElOIEFOWSBXQVkuCisgKi8KKworLyoKKyAqIFNvbWUgb2YgdGhpcyBjb2RlIHdh
cyBwb3J0ZWQgZnJvbSBNaW5pLU9TOgorICogIGNvbnNvbGUveGVuY29uc19yaW5nLmMgYW5kIGNv
bnNvbGUvY29uc29sZS5jCisgKi8KKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogKEMpIDIw
MDYgLSBHcnplZ29yeiBNaWxvcyAtIENhbWJyaWRnZSBVbml2ZXJzaXR5CisgKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKgorICoKKyAqICAgICAgICBGaWxlOiBjb25zb2xlLmgKKyAqICAgICAgQXV0aG9yOiBH
cnplZ29yeiBNaWxvcworICogICAgIENoYW5nZXM6CisgKgorICogICAgICAgIERhdGU6IE1hciAy
MDA2CisgKgorICogRW52aXJvbm1lbnQ6IFhlbiBNaW5pbWFsIE9TCisgKiBEZXNjcmlwdGlvbjog
Q29uc29sZSBpbnRlcmZhY2UuCisgKgorICogSGFuZGxlcyBjb25zb2xlIEkvTy4gRGVmaW5lcyBw
cmludGsuCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5
IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkK
KyAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAo
dGhlICJTb2Z0d2FyZSIpLCB0bworICogZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0
cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUKKyAqIHJpZ2h0cyB0byB1
c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2Us
IGFuZC9vcgorICogc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBl
cnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3Vi
amVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHly
aWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQg
aW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJl
LgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJB
TlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5P
VCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRQorICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUg
Rk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElO
IEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZS
T00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0Ug
T1IgT1RIRVIKKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqLworCisjaW5jbHVkZSA8
aW50dHlwZXMuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx1ay9wbGF0L2NvbnNv
bGUuaD4KKyNpbmNsdWRlIDx1ay9hcmNoL2xjcHUuaD4KKyNpbmNsdWRlIDx1ay9hc3NlcnQuaD4K
KyNpbmNsdWRlIDx1ay9lc3NlbnRpYWxzLmg+CisjaW5jbHVkZSA8dWsvY29uZmlnLmg+CisKKyNp
bmNsdWRlIDxjb21tb24vaHZfY29uc29sZS5oPgorI2luY2x1ZGUgPGNvbW1vbi9ldmVudHMuaD4K
KyNpbmNsdWRlIDxjb21tb24vaHlwZXJ2aXNvci5oPgorI2luY2x1ZGUgPHhlbi94ZW4uaD4KKwor
I2lmIChkZWZpbmVkIF9fWDg2XzMyX18pIHx8IChkZWZpbmVkIF9fWDg2XzY0X18pCisjaW5jbHVk
ZSA8eGVuLXg4Ni9zZXR1cC5oPgorI2luY2x1ZGUgPHhlbi14ODYvbW0uaD4KKyNpZiBkZWZpbmVk
IF9fWDg2XzMyX18KKyNpbmNsdWRlIDx4ZW4teDg2L2h5cGVyY2FsbDMyLmg+CisjZWxpZiBkZWZp
bmVkIF9fWDg2XzY0X18KKyNpbmNsdWRlIDx4ZW4teDg2L2h5cGVyY2FsbDY0Lmg+CisjZW5kaWYK
KyNlbGlmIChkZWZpbmVkIF9fQVJNXzMyX18pIHx8IChkZWZpbmVkIF9fQVJNXzY0X18pCisjaW5j
bHVkZSA8eGVuLWFybS9tbS5oPgorI2luY2x1ZGUgPHhlbi1hcm0vaHlwZXJjYWxsLmg+CisjZW5k
aWYKKyNpbmNsdWRlIDx4ZW4vaW8vY29uc29sZS5oPgorI2luY2x1ZGUgPHhlbi9pby9wcm90b2Nv
bHMuaD4KKyNpbmNsdWRlIDx4ZW4vaW8vcmluZy5oPgorI2lmbmRlZiBDT05GSUdfUEFSQVZJUlQK
KyNpbmNsdWRlIDx4ZW4vaHZtL3BhcmFtcy5oPgorI2VuZGlmCisKK3N0YXRpYyBzdHJ1Y3QgeGVu
Y29uc19pbnRlcmZhY2UgKmNvbnNvbGVfcmluZzsKK3N0YXRpYyB1aW50MzJfdCBjb25zb2xlX2V2
dGNobjsKK3N0YXRpYyBpbnQgY29uc29sZV9yZWFkeTsKKworI2lmZGVmIENPTkZJR19QQVJBVklS
VAordm9pZCBodl9jb25zb2xlX3ByZXBhcmUodm9pZCkKK3sKKwljb25zb2xlX3JpbmcgPSBtZm5f
dG9fdmlydChIWVBFUlZJU09SX3N0YXJ0X2luZm8tPmNvbnNvbGUuZG9tVS5tZm4pOworCWNvbnNv
bGVfZXZ0Y2huID0gSFlQRVJWSVNPUl9zdGFydF9pbmZvLT5jb25zb2xlLmRvbVUuZXZ0Y2huOwor
fQorI2Vsc2UKK3ZvaWQgaHZfY29uc29sZV9wcmVwYXJlKHZvaWQpCit7CisJLyogTk9UIElNUExF
TUVOVEVEIFlFVCAqLworfQorI2VuZGlmCisKKy8qCisgKiBodl9jb25zb2xlX291dHB1dCBvcGVy
YXRlcyBpbiB0d28gbW9kZXM6IGJ1ZmZlcmVkIGFuZCBpbml0aWFsaXplZC4KKyAqIFRoZSBidWZm
ZXJlZCBtb2RlIGlzIGF1dG9tYXRpY2FsbHkgYWN0aXZhdGVkIGFmdGVyCisgKiBfbGlieGVucGxh
dF9wcmVwYXJlX2NvbnNvbGUoKSB3YXMgY2FsbGVkIGFuZCB3ZSBrbm93IHdoZXJlIHRoZSBjb25z
b2xlIHJpbmcKKyAqIGlzLiBUaGUgb3V0cHV0IHN0cmluZyBpcyBwdXQgdG8gdGhlIGNvbnNvbGUg
cmluZyB1bnRpbCB0aGUgcmluZyBpcyBmdWxsLiBBbnkKKyAqIGZ1cnRoZXIgY2hhcmFjdGVycyBh
cmUgZGlzY2FyZGVkLiBTaW5jZSB0aGUgZXZlbnQgY2hhbm5lbCBpcyBub3QgaW5pdGlhbGl6ZWQK
KyAqIHlldCwgdGhlIGJhY2tlbmQgaXMgbm90IG5vdGlmaWVkLiBUaGlzIG1vZGUgaXMgaW50cm9k
dWNlZCB0byBzdXBwb3J0IGVhcmx5CisgKiBwcmludGluZywgZXZlbiBiZWZvcmUgZXZlbnRzIGFy
ZSBub3QgaW5pdGlhbGl6ZWQuCisgKiBfbGlieGVucGxhdF9pbml0X2NvbnNvbGUoKSBmaW5hbGl6
ZXMgdGhlIGluaXRpYWxpemF0aW9uIGFuZCBlbmFibGVzCisgKiB0aGUgZXZlbnQgY2hhbm5lbC4g
RnJvbSBub3cgb24sIHRoZSBjb25zb2xlIGJhY2tlbmQgaXMgbm90aWZpZWQgd2hlbmV2ZXIKKyAq
IHdlIHB1dCBjaGFyYWN0ZXJzIG9uIHRoZSBjb25zb2xlIHJpbmcuIFdoZW5ldmVyIHRoaXMgcmlu
ZyBpcyBmdWxsIGFuZCB0aGVyZQorICogYXJlIHN0aWxsIGNoYXJhY3RlcnMgdGhhdCBzaG91bGQg
YmUgcHJpbnRlZCwgd2UgYXJlIGVudGVyaW5nIGEgYnVzeSBsb29wIGFuZAorICogd2FpdCBmb3Ig
dGhlIGJhY2tlbmQgdG8gbWFrZSB1cyBzcGFjZSBhZ2Fpbi4gT2YgY291cnNlIHRoaXMgaXMgc2xv
dzogZG8gbm90CisgKiBwcmludCBzbyBtdWNoISA7LSkKKyAqLworaW50IGh2X2NvbnNvbGVfb3V0
cHV0KGNvbnN0IGNoYXIgKnN0ciwgdW5zaWduZWQgaW50IGxlbikKK3sKKwl1bnNpZ25lZCBpbnQg
c2VudCA9IDA7CisJWEVOQ09OU19SSU5HX0lEWCBjb25zLCBwcm9kOworCisJaWYgKHVubGlrZWx5
KCFjb25zb2xlX3JpbmcpKQorCQlyZXR1cm4gc2VudDsKKworcmV0cnk6CisJY29ucyA9IGNvbnNv
bGVfcmluZy0+b3V0X2NvbnM7CisJcHJvZCA9IGNvbnNvbGVfcmluZy0+b3V0X3Byb2Q7CisKKwlt
YigpOyAvKiBtYWtlIHN1cmUgd2UgaGF2ZSBjb25zICYgcHJvZCBiZWZvcmUgdG91Y2hpbmcgdGhl
IHJpbmcgKi8KKwlVS19CVUdPTigocHJvZCAtIGNvbnMpID4gc2l6ZW9mKGNvbnNvbGVfcmluZy0+
b3V0KSk7CisKKwl3aGlsZSAoKHNlbnQgPCBsZW4pICYmICgocHJvZCAtIGNvbnMpIDwgc2l6ZW9m
KGNvbnNvbGVfcmluZy0+b3V0KSkpIHsKKwkJaWYgKHN0cltzZW50XSA9PSAnXG4nKSB7CisJCQkv
KiBwcmVwZW5kICdccicgZm9yIGNvbnZlcnRpbmcgJ1xuJyB0byAnXHInJ1xuJyAqLworCQkJaWYg
KChwcm9kICsgMSAtIGNvbnMpID49IHNpemVvZihjb25zb2xlX3JpbmctPm91dCkpCisJCQkJYnJl
YWs7IC8qIG5vdCBlbm91Z2ggc3BhY2UgZm9yICdccicgYW5kICdcbichICovCisKKwkJCWNvbnNv
bGVfcmluZy0+b3V0W01BU0tfWEVOQ09OU19JRFgocHJvZCsrLAorCQkJCQkJCSAgIGNvbnNvbGVf
cmluZy0+b3V0KV0gPQorCQkJCSdccic7CisJCX0KKworCQljb25zb2xlX3JpbmctPm91dFtNQVNL
X1hFTkNPTlNfSURYKHByb2QrKywgY29uc29sZV9yaW5nLT5vdXQpXSA9CisJCQlzdHJbc2VudF07
CisJCXNlbnQrKzsKKwl9CisJd21iKCk7IC8qIGVuc3VyZSBjaGFyYWN0ZXJzIGFyZSB3cml0dGVu
IGJlZm9yZSBpbmNyZWFzaW5nIG91dF9wcm9kICovCisJY29uc29sZV9yaW5nLT5vdXRfcHJvZCA9
IHByb2Q7CisKKwkvKiBJcyB0aGUgY29uc29sZSBmdWxseSBpbml0aWFsaXplZD8KKwkgKiBBcmUg
d2UgYWJsZSB0byBub3RpZnkgdGhlIGJhY2tlbmQ/CisJICovCisJaWYgKGxpa2VseShjb25zb2xl
X3JlYWR5ICYmIGNvbnNvbGVfZXZ0Y2huKSkgeworCQlub3RpZnlfcmVtb3RlX3ZpYV9ldnRjaG4o
Y29uc29sZV9ldnRjaG4pOworCisJCS8qIFRoZXJlIGFyZSBzdGlsbCBieXRlcyBsZWZ0IHRvIHNl
bmQgb3V0PyBJZiB5ZXMsIGRvIG5vdAorCQkgKiBkaXNjYXJkIHRoZW0sIHJldHJ5IHNlbmRpbmcg
KGVudGVycyBidXN5IHdhaXRpbmcpCisJCSAqLworCQlpZiAoc2VudCA8IGxlbikKKwkJCWdvdG8g
cmV0cnk7CisJfQorCXJldHVybiBzZW50OworfQorCit2b2lkIGh2X2NvbnNvbGVfZmx1c2godm9p
ZCkKK3sKKwlzdHJ1Y3QgeGVuY29uc19pbnRlcmZhY2UgKmludGY7CisKKwlpZiAoIWNvbnNvbGVf
cmVhZHkpCisJCXJldHVybjsKKworCWludGYgPSBjb25zb2xlX3Jpbmc7CisJaWYgKHVubGlrZWx5
KCFpbnRmKSkKKwkJcmV0dXJuOworCisJd2hpbGUgKGludGYtPm91dF9jb25zIDwgaW50Zi0+b3V0
X3Byb2QpCisJCWJhcnJpZXIoKTsKK30KKworaW50IGh2X2NvbnNvbGVfaW5wdXQoY2hhciAqc3Ry
LCB1bnNpZ25lZCBpbnQgbWF4bGVuKQoreworCWludCByZWFkID0gMDsKKwlYRU5DT05TX1JJTkdf
SURYIGNvbnMsIHByb2Q7CisKKwljb25zID0gY29uc29sZV9yaW5nLT5pbl9jb25zOworCXByb2Qg
PSBjb25zb2xlX3JpbmctPmluX3Byb2Q7CisJcm1iKCk7IC8qIG1ha2Ugc3VyZSBpbl9jb25zLCBp
bl9wcm9kIGFyZSByZWFkIGJlZm9yZSBlbnF1ZXVpbmcgKi8KKwlVS19CVUdPTigocHJvZCAtIGNv
bnMpID4gc2l6ZW9mKGNvbnNvbGVfcmluZy0+aW4pKTsKKworCXdoaWxlIChjb25zICE9IHByb2Qg
JiYgbWF4bGVuID4gMCkgeworCQkqKHN0ciArIHJlYWQpID0gKihjb25zb2xlX3JpbmctPmluKwor
CQkJCSAgTUFTS19YRU5DT05TX0lEWChjb25zLCBjb25zb2xlX3JpbmctPmluKSk7CisJCXJlYWQr
KzsKKwkJY29ucysrOworCQltYXhsZW4tLTsKKwl9CisKKwl3bWIoKTsgLyogZW5zdXJlIGZpbmlz
aGVkIG9wZXJhdGlvbiBiZWZvcmUgdXBkYXRpbmcgaW5fY29ucyAqLworCWNvbnNvbGVfcmluZy0+
aW5fY29ucyA9IGNvbnM7CisKKwlyZXR1cm4gcmVhZDsKK30KKworc3RhdGljIHZvaWQgaHZfY29u
c29sZV9ldmVudChldnRjaG5fcG9ydF90IHBvcnQgX191bnVzZWQsCisJCQkgICAgIHN0cnVjdCBf
X3JlZ3MgKnJlZ3MgX191bnVzZWQsCisJCQkgICAgIHZvaWQgKmRhdGEgX191bnVzZWQpCit7CisJ
LyogTk9UIElNUExFTUVOVEVEIFlFVCAqLworfQorCit2b2lkIGh2X2NvbnNvbGVfaW5pdCh2b2lk
KQoreworCWludCBlcnI7CisKKwlVS19BU1NFUlQoY29uc29sZV9yaW5nICE9IE5VTEwpOworCisJ
dWtfcHJfZGVidWcoImh2X2NvbnNvbGUgQCAlcCAoZXZ0Y2huOiAlIlBSSXUzMiIpXG4iLAorCQkg
ICAgY29uc29sZV9yaW5nLCBjb25zb2xlX2V2dGNobik7CisKKwllcnIgPSBiaW5kX2V2dGNobihj
b25zb2xlX2V2dGNobiwgaHZfY29uc29sZV9ldmVudCwgTlVMTCk7CisJaWYgKGVyciA8PSAwKQor
CQlVS19DUkFTSCgiRmFpbGVkIHRvIGJpbmQgZXZlbnQgY2hhbm5lbCBmb3IgaHZfY29uc29sZTog
JWlcbiIsCisJCQkgZXJyKTsKKwl1bm1hc2tfZXZ0Y2huKGNvbnNvbGVfZXZ0Y2huKTsKKworCWNv
bnNvbGVfcmVhZHkgPSAxOyAvKiBlbmFibGUgbm90aWZpY2F0aW9uIG9mIGJhY2tlbmQgKi8KKwkv
KiBmbHVzaCBxdWV1ZWQgb3V0cHV0ICovCisJbm90aWZ5X3JlbW90ZV92aWFfZXZ0Y2huKGNvbnNv
bGVfZXZ0Y2huKTsKK30KZGlmZiAtLWdpdCBhL3BsYXQveGVuL2luY2x1ZGUvY29tbW9uL2NvbnNv
bGUuaCBiL3BsYXQveGVuL2luY2x1ZGUvY29tbW9uL2NvbnNvbGUuaAppbmRleCBiNGYxYjUxZS4u
MjNjNmIzMmUgMTAwNjQ0Ci0tLSBhL3BsYXQveGVuL2luY2x1ZGUvY29tbW9uL2NvbnNvbGUuaAor
KysgYi9wbGF0L3hlbi9pbmNsdWRlL2NvbW1vbi9jb25zb2xlLmgKQEAgLTIsNyArMiw4IEBACiAv
KgogICogQXV0aG9yczogU2ltb24gS3VlbnplciA8c2ltb24ua3VlbnplckBuZWNsYWIuZXU+CiAg
KgotICogQ29weXJpZ2h0IChjKSAyMDE3LCBORUMgRXVyb3BlIEx0ZC4sIE5FQyBDb3Jwb3JhdGlv
bi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoYykgMjAxOSwgTkVDIExhYm9y
YXRvcmllcyBFdXJvcGUgR21iSCwgTkVDIENvcnBvcmF0aW9uLgorICogICAgICAgICAgICAgICAg
ICAgICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0zOCwxNCArMzksMTQgQEAKIC8qIGtlZXBzIGJ1ZmZlcmluZyBjb25zb2xlIG1lc3NhZ2UK
ICAqIChvbiBQVjogc3RhcnRfaW5mbyBuZWVkIHRvIGJlIGxvYWRlZCkKICAqLwotdm9pZCBfbGli
eGVucGxhdF9wcmVwYXJlX2NvbnNvbGUodm9pZCk7Cit2b2lkIHByZXBhcmVfY29uc29sZSh2b2lk
KTsKIAogLyogaW5pdGlhbGl6ZXMgdGhlIGNvbnNvbGUsIHNlbmRzIG91dCBidWZmZXJlZCBtZXNz
YWdlcwogICogKGV2ZW50IHN5c3RlbSBoYXMgdG8gYmUgaW5pdGlhbGl6ZWQpCiAgKi8KLXZvaWQg
X2xpYnhlbnBsYXRfaW5pdF9jb25zb2xlKHZvaWQpOwordm9pZCBpbml0X2NvbnNvbGUodm9pZCk7
CiAKIAotdm9pZCBodmNvbnNvbGVfZmx1c2godm9pZCk7Cit2b2lkIGZsdXNoX2NvbnNvbGUodm9p
ZCk7CiAKICNlbmRpZiAvKiBfX0NPTlNPTEVfSF9fICovCmRpZmYgLS1naXQgYS9wbGF0L3hlbi9p
bmNsdWRlL2NvbW1vbi9lbWdfY29uc29sZS5oIGIvcGxhdC94ZW4vaW5jbHVkZS9jb21tb24vZW1n
X2NvbnNvbGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uYjkzMDkzMjEK
LS0tIC9kZXYvbnVsbAorKysgYi9wbGF0L3hlbi9pbmNsdWRlL2NvbW1vbi9lbWdfY29uc29sZS5o
CkBAIC0wLDAgKzEsNDUgQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1
c2UgKi8KKy8qCisgKiBBdXRob3JzOiBTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xh
Yi5ldT4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTksIE5FQyBMYWJvcmF0b3JpZXMgRXVyb3Bl
IEdtYkgsIE5FQyBDb3Jwb3JhdGlvbi4KKyAqICAgICAgICAgICAgICAgICAgICAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBj
b3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiAgICBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqCisgKiBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBN
T0RJRklFRCBJTiBBTlkgV0FZLgorICovCisKKyNpZm5kZWYgX19YRU5fRU1HQ09OU09MRV9IX18K
KyNkZWZpbmUgX19YRU5fRU1HQ09OU09MRV9IX18KKworLyoKKyAqIE5PVEU6IERvIG5vdCB1c2Ug
dGhlc2UgZnVuY3Rpb25zIGRpcmVjdGx5LiBUaGV5IGFyZSBmb3IgaW50ZXJuYWwgdXNlLgorICog
ICAgICAgVXNlIGRlZmludGlvbnMgaW4gY29uc29sZS5oIGluc3RlYWQuCisgKi8KK2ludCBlbWdf
Y29uc29sZV9vdXRwdXQoY29uc3QgY2hhciAqc3RyLCB1bnNpZ25lZCBpbnQgbGVuKTsKKworI2Vu
ZGlmIC8qIF9fWEVOX0VNR0NPTlNPTEVfSF9fICovCmRpZmYgLS1naXQgYS9wbGF0L3hlbi9pbmNs
dWRlL2NvbW1vbi9odl9jb25zb2xlLmggYi9wbGF0L3hlbi9pbmNsdWRlL2NvbW1vbi9odl9jb25z
b2xlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjEwZGU5MjcxCi0tLSAv
ZGV2L251bGwKKysrIGIvcGxhdC94ZW4vaW5jbHVkZS9jb21tb24vaHZfY29uc29sZS5oCkBAIC0w
LDAgKzEsNDkgQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8K
Ky8qCisgKiBBdXRob3JzOiBTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4K
KyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTksIE5FQyBMYWJvcmF0b3JpZXMgRXVyb3BlIEdtYkgs
IE5FQyBDb3Jwb3JhdGlvbi4KKyAqICAgICAgICAgICAgICAgICAgICAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmln
aHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiAgICBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogICAg
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqCisgKiBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklF
RCBJTiBBTlkgV0FZLgorICovCisKKyNpZm5kZWYgX19YRU5fSFZDT05TT0xFX0hfXworI2RlZmlu
ZSBfX1hFTl9IVkNPTlNPTEVfSF9fCisKKy8qCisgKiBOT1RFOiBEbyBub3QgdXNlIHRoZXNlIGZ1
bmN0aW9ucyBkaXJlY3RseS4gVGhleSBhcmUgZm9yIGludGVybmFsIHVzZS4KKyAqICAgICAgIFVz
ZSBkZWZpbnRpb25zIGluIGNvbnNvbGUuaCBpbnN0ZWFkLgorICovCit2b2lkIGh2X2NvbnNvbGVf
cHJlcGFyZSh2b2lkKTsKK3ZvaWQgaHZfY29uc29sZV9pbml0KHZvaWQpOworaW50IGh2X2NvbnNv
bGVfb3V0cHV0KGNvbnN0IGNoYXIgKnN0ciwgdW5zaWduZWQgaW50IGxlbik7Cit2b2lkIGh2X2Nv
bnNvbGVfZmx1c2godm9pZCk7CitpbnQgaHZfY29uc29sZV9pbnB1dChjaGFyICpzdHIsIHVuc2ln
bmVkIGludCBtYXhsZW4pOworCisjZW5kaWYgLyogX19YRU5fSFZDT05TT0xFX0hfXyAqLwpkaWZm
IC0tZ2l0IGEvcGxhdC94ZW4vc2h1dGRvd24uYyBiL3BsYXQveGVuL3NodXRkb3duLmMKaW5kZXgg
MjcyZWNlNDcuLmM3YmYxMmQ3IDEwMDY0NAotLS0gYS9wbGF0L3hlbi9zaHV0ZG93bi5jCisrKyBi
L3BsYXQveGVuL3NodXRkb3duLmMKQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCB1a3BsYXRfdGVybWlu
YXRlKGVudW0gdWtwbGF0X2dzdGF0ZSByZXF1ZXN0KQogCQlicmVhazsKIAl9CiAKLQlodmNvbnNv
bGVfZmx1c2goKTsKKwlmbHVzaF9jb25zb2xlKCk7CiAKIAlmb3IgKDs7KSB7CiAJCXN0cnVjdCBz
Y2hlZF9zaHV0ZG93biBzY2hlZF9zaHV0ZG93biA9IHsgLnJlYXNvbiA9IHJlYXNvbiB9OwpkaWZm
IC0tZ2l0IGEvcGxhdC94ZW4veDg2L3NldHVwLmMgYi9wbGF0L3hlbi94ODYvc2V0dXAuYwppbmRl
eCA2MGE5ZjllNi4uM2M1NjMxZDMgMTAwNjQ0Ci0tLSBhL3BsYXQveGVuL3g4Ni9zZXR1cC5jCisr
KyBiL3BsYXQveGVuL3g4Ni9zZXR1cC5jCkBAIC0xNzMsNyArMTczLDcgQEAgdm9pZCBfbGlieGVu
cGxhdF94ODZlbnRyeSh2b2lkICpzdGFydF9pbmZvKQogCV9pbml0X3RyYXBzKCk7CiAJX2luaXRf
Y3B1ZmVhdHVyZXMoKTsKIAlIWVBFUlZJU09SX3N0YXJ0X2luZm8gPSAoc3RhcnRfaW5mb190ICop
c3RhcnRfaW5mbzsKLQlfbGlieGVucGxhdF9wcmVwYXJlX2NvbnNvbGUoKTsgLyogZW5hYmxlcyBi
dWZmZXJpbmcgZm9yIGNvbnNvbGUgKi8KKwlwcmVwYXJlX2NvbnNvbGUoKTsgLyogZW5hYmxlcyBi
dWZmZXJpbmcgZm9yIGNvbnNvbGUgKi8KIAogCXVrX3ByX2luZm8oIkVudGVyaW5nIGZyb20gWGVu
ICh4ODYsIFBWKS4uLlxuIik7CiAKQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lkIF9saWJ4ZW5wbGF0
X3g4NmVudHJ5KHZvaWQgKnN0YXJ0X2luZm8pCiAKIAlfaW5pdF9tZW0oKTsKIAotCV9saWJ4ZW5w
bGF0X2luaXRfY29uc29sZSgpOworCWluaXRfY29uc29sZSgpOwogCiAJdWtwbGF0X2VudHJ5X2Fy
Z3AoQ09ORklHX1VLX05BTUUsIGNtZGxpbmUsIE1BWF9DTURMSU5FX1NJWkUpOwogfQotLSAKMi4x
MS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWlu
aW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcK
aHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZl
bA==

From minios-devel-bounces@lists.xenproject.org Mon Feb 11 14:59:00 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 11 Feb 2019 14:59:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gtD2x-0006Q8-Ix; Mon, 11 Feb 2019 14:58:59 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Dsjz=QS=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gtD2x-0006Q3-7S
 for minios-devel@lists.xen.org; Mon, 11 Feb 2019 14:58:59 +0000
X-Inumbo-ID: 8e99782a-2e0d-11e9-af0c-ef33d3285cd5
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 8e99782a-2e0d-11e9-af0c-ef33d3285cd5;
 Mon, 11 Feb 2019 14:58:58 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id A8D8DF2047;
 Mon, 11 Feb 2019 15:58:56 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id BBiwRLMI7oQb; Mon, 11 Feb 2019 15:58:56 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 79CD5F2046
 for <minios-devel@lists.xen.org>; Mon, 11 Feb 2019 15:58:54 +0100 (CET)
Received: from localhost (10.7.0.31) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 11 Feb 2019 15:58:54 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: Sharan Santhanam <sharan.santhanam@neclab.eu>, <minios-devel@lists.xen.org>
In-Reply-To: <ea37d6d2-b3c9-7ec4-9210-c882f612c058@neclab.eu>
Date: Mon, 11 Feb 2019 15:58:52 +0100
Message-ID: <tza4s2imxqv0b7.fsf@N-1128.office.hd>
MIME-Version: 1.0
X-Originating-IP: [10.7.0.31]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v3 10/23] lib/vfscore: add
 utility funcs&defs to support imported
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGksCgpTaGFyYW4gU2FudGhhbmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xhYi5ldT4gd3JpdGVz
OgoKPiBIZWxsbyB5dXJpLAo+Cj4gVGhlIHBhdGNoIHNlZW1zIGZ1bmN0aW9uYWxseSBmaW5lLgo+
Cj4gVGhlcmUgYXJlIHNvbWUgbWlub3IgaXNzdWUuIFBsZWFzZSBmaW5kIHRoZW0gaW5saW5lLgo+
Cj4gVGhhbmtzICYgUmVnYXJkcwo+IFNoYXJhbgo+Cj4gT24gMi83LzE5IDI6NTggUE0sIFl1cmkg
Vm9sY2hrb3Ygd3JvdGU6Cj4+IFNpZ25lZC1vZmYtYnk6IFl1cmkgVm9sY2hrb3YgPHl1cmkudm9s
Y2hrb3ZAbmVjbGFiLmV1Pgo+PiAtLS0KPj4gICBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUv
ZmlsZS5oICB8ICAyICsrCj4+ICAgbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2ZzLmggICAg
fCAyOCArKysrKysrKysrKysrKysrKysrKysrKysKPj4gICBsaWIvdmZzY29yZS9pbmNsdWRlL3Zm
c2NvcmUvdm5vZGUuaCB8IDIxICsrKysrKysrKysrKysrKysrKwo+PiAgIGxpYi92ZnNjb3JlL21h
aW4uYyAgICAgICAgICAgICAgICAgIHwgMzMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK
Pj4gICBsaWIvdmZzY29yZS9tb3VudC5jICAgICAgICAgICAgICAgICB8IDE3ICsrKysrKysrKysr
KysrKwo+PiAgIGxpYi92ZnNjb3JlL3Zmcy5oICAgICAgICAgICAgICAgICAgIHwgIDkgKysrKysr
KysKPj4gICBsaWIvdmZzY29yZS92bm9kZS5jICAgICAgICAgICAgICAgICB8ICAyICsrCj4+ICAg
NyBmaWxlcyBjaGFuZ2VkLCAxMTIgaW5zZXJ0aW9ucygrKQo+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0
NCBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZnMuaAo+PiAKCj4+IGRpZmYgLS1naXQgYS9s
aWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZnMuaCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZz
Y29yZS9mcy5oCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAwLi4xYmI0
ZTI0ZAo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29y
ZS9mcy5oCj4+IEBAIC0wLDAgKzEsMjggQEAKPj4gKyNpZm5kZWYgX1ZGU0NPUkVfRlNfSF8KPj4g
KyNkZWZpbmUgX1ZGU0NPUkVfRlNfSF8KPj4gKwo+PiArI2luY2x1ZGUgPGZjbnRsLmg+Cj4+ICsv
Kgo+PiArICogS2VybmVsIGVuY29kaW5nIG9mIG9wZW4gbW9kZTsgc2VwYXJhdGUgcmVhZCBhbmQg
d3JpdGUgYml0cyB0aGF0IGFyZQo+PiArICogaW5kZXBlbmRlbnRseSB0ZXN0YWJsZTogMSBncmVh
dGVyIHRoYW4gdGhlIGFib3ZlLgo+PiArICovCj4+ICsjZGVmaW5lIEZSRUFEICAgICAgICAgICAw
eDAwMDAwMDAxCj4+ICsjZGVmaW5lIEZXUklURSAgICAgICAgICAweDAwMDAwMDAyCj4+ICsKPj4g
KyNkZWZpbmUgQUxMUEVSTVMgKFNfSVNVSUR8U19JU0dJRHxTX0lTVlRYfFNfSVJXWFV8U19JUldY
R3xTX0lSV1hPKQo+PiArCj4KPiBUYWIgaW5zdGVhZCBvZiBzcGFjZXMuClNvcnJ5IEkgZG8gbm90
IGdldCB0aGUgY29tbWVudC4KCj4+IGRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9tYWluLmMgYi9s
aWIvdmZzY29yZS9tYWluLmMKPj4gaW5kZXggODJlNDU5MTcuLjExNjRiMzBiIDEwMDY0NAo+PiAt
LS0gYS9saWIvdmZzY29yZS9tYWluLmMKPj4gKysrIGIvbGliL3Zmc2NvcmUvbWFpbi5jCj4+IEBA
IC01Miw4ICs1Miw0MSBAQAo+PiAgIGludAl2ZnNfZGVidWcgPSBWRlNEQl9GTEFHUzsKPj4gICAj
ZW5kaWYKPj4gICAKPj4gKy8qIFRoaXMgbWFjcm8gaXMgZm9yIGRlZmluaW5nIGFuIGFsaWFzIG9m
IHRoZSA2NGJpdCB2ZXJzaW9uIG9mIGEKPj4gKyAqIHN5c2NhbGwgdG8gdGhlIHJlZ3VsYXIgb25l
LiBJdCBzZWFtcyB3ZSBjYW4gbWFrZSB0aGUgbG9naWMgd2hpY2ggaXMKPj4gKyAqIGNob29zaW5n
IHRoZSByaWdodCBjYWxsIHNpbXBsZXIgdGhlbiBpbiBjb21tb24gbGliYy4KPj4gKyAqCj4+ICsg
KiBMZXQncyBrZWVwIExGUzY0IGNhbGxzIGp1c3QgaW4gY2FzZSBpbiBmdXR1cmUgd2Ugd2lsbCBm
aW5kIG91dCB0aGF0Cj4+ICsgKiB0aGVzZSBhbGlhc2VzIGFyZSBuZWVkLgo+PiArICovCj4+ICsj
ZGVmaW5lIExGUzY0KHgpCj4+ICsKPj4gICBzdGF0aWMgbW9kZV90IGdsb2JhbF91bWFzayA9IFNf
SVdHUlAgfCBTX0lXT1RIOwo+PiAgIAo+PiArLyogVE9ETzogdGhlc2UgbWFjcm8gZG9lcyBub3Qg
YmVsb25nIGhlcmUKPj4gKyAqIE5PVEU6IGJvcnJvd2VkIGZyb20gT1N2Cj4+ICsgKi8KPj4gKyNk
ZWZpbmUgRE9fT05DRSh0aGluZykgZG8gewkJCQlcCj4+ICsJc3RhdGljIGludCBfeDsJCQkJCVwK
Pj4gKwlpZiAoIV94KSB7CQkJCQlcCj4+ICsJICAgIF94ID0gMTsJCQkJCVwKPj4gKwkgICAgdGhp
bmcgOwkJCQkJXAo+PiArCX0JCQkJCQlcCj4+ICt9IHdoaWxlICgwKQo+PiArI2RlZmluZSBXQVJO
X1NUVUJCRUQoKSBET19PTkNFKHVrX3ByX3dhcm4oIiVzKCkgc3R1YmJlZFxuIiwgX19mdW5jX18p
KQo+PiArCj4KPiBUaGlzIG1hY3JvIG1ha2VzIGFzc3VtcHRpb24gb24gdGhlIHNpZ25hdHVyZSBv
ZiB0aGUgZnVuY3Rpb24uCj4gQnV0IHNpbmNlIHRoaXMgaXMgYWNjZXNzaWJsZSBvbmx5IHdpdGhp
biB0aGUgbWFpbi5jIGl0IGlzIGZpbmUuCkNvcnJlY3QuIFRoaXMgaXMgcHVyZWx5IGludGVybmFs
IHRoaW5nIGZvciBtYWluLmMuIEFuZCBpdCBpcyBtYWRlCnNwZWNpZmljYWxseSBmb3Igc3R1YmJp
bmcgc3lzY2FsbHMsIHdoaWNoIGRvIGhhdmUgc2FtZSBzaWduYXR1cmUuCgo+PiBAQCAtNzksNiAr
NzksMjMgQEAgZnNfZ2V0ZnMoY29uc3QgY2hhciAqbmFtZSkKPj4gICAJcmV0dXJuIGZzOwo+PiAg
IH0KPj4gICAKPj4gK2ludCBkZXZpY2Vfb3Blbihjb25zdCBjaGFyICpuYW1lLCBpbnQgbW9kZSwg
c3RydWN0IGRldmljZSAqKmRldnApCj4+ICt7Cj4+ICsJKHZvaWQpIG5hbWU7Cj4+ICsJKHZvaWQp
IG1vZGU7Cj4+ICsJKHZvaWQpIGRldnA7Cj4gV2UgdXNlIHRoZSBfX3VudXNlZCBhdHRyaWJ1dGUg
ZXZlcnl3aGVyZSBpbnN0ZWFkIG9mICh2b2lkKS4KSSBkaWQgbm90IGxpa2UgX191bnVzZWQgYmVj
YXVzZSBpdCBpcyBwb2xsdXRpbmcgdGhlIGZ1bmN0aW9uCnBhcmFtZXRlcnMuIEJ1dCB5b3UgYXJl
IHJpZ2h0LCBJIHdpbGwgY2hhbmdlIHRoaXMgdG8gX191bnVzZWQgdG8ga2VlcAp0aGUgY29kZSBj
b25zaXN0ZW50Cgo+Cj4+ICsKPj4gKwl1a19wcl9lcnIoImRldmljZSBvcGVuIGlzIG5vdCBpbXBs
ZW1lbnRlZCAoJXMpXG4iLCBuYW1lKTsKPj4gKwlyZXR1cm4gMDsKPiBTaG91bGRuJ3Qgd2UgcmVw
b3J0IGFuIGVycm9yIGZvciBub3QgaW1wbGVtZW50ZWQgZnVuY3Rpb25zLgoKQW5zd2VyaW5nIHRv
IHRoaXMgYW5kIHRoZSBuZXh0IHF1ZXN0aW9uLCB0aGUgcmV0dXJuIHZhbHVlIG9mCmRldmljZV8o
b3BlbnxjbG9zZSkgaXMgbm90IGNoZWNrZWQgaW4gdGhlIGltcG9ydGVkIGNvZGUuIEkgZG9uJ3Qg
cmVhbGx5CndhbnQgdG8gbW9kaWZ5IHRoaXMsIGJlY2F1c2Ugd2UgZG8gbm90IGhhdmUgYSBjb25j
ZXB0IG9mIHRoZSBkZXZpY2VzCnlldCwgYW5kIHRoaXMgYnJhbmNoIG9mIHZmc2NvcmUganVzdCB5
ZXQgdG8gYmUgaW1wbGVtZW50ZWQuIFRvZ2V0aGVyCndpdGggdGhlIGRldmljZXMuCgpUaGF0IGlz
IHdoeSBJIHRoaW5rIGNyYXNoaW5nIGlzIHRoZSByaWdodCB0aGluZyB0byBkbywgc2luY2Ugd2Ug
ZG8gbm90CnJlYWxseSBrbm93IHdoYXQgdG8gZG8gaW4gc3VjaCBhIGNhc2UuCgo+Cj4+ICt9Cj4+
ICsKPj4gK2ludCBkZXZpY2VfY2xvc2Uoc3RydWN0IGRldmljZSAqZGV2KQo+PiArewo+PiArCSh2
b2lkKSBkZXY7Cj4+ICsJVUtfQ1JBU0goIm5vdCBpbXBsZW1lbnRlZCIpOwo+IFdoeSBhcmUgY3Jh
c2hpbmcgZm9yIG5vdCBpbXBsZW1lbnRpbmcgZnVuY3Rpb25zIGhlcmU/Cj4KPj4gKwlyZXR1cm4g
MDsKPj4gK30KPj4gKwo+PiAgIGludAo+PiAgIHN5c19tb3VudChjb25zdCBjaGFyICpkZXYsIGNv
bnN0IGNoYXIgKmRpciwgY29uc3QgY2hhciAqZnNuYW1lLCBpbnQgZmxhZ3MsIGNvbnN0IHZvaWQg
KmRhdGEpCj4+ICAgewo+PiBkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvdmZzLmggYi9saWIvdmZz
Y29yZS92ZnMuaAo+PiBpbmRleCAxOWY4YWM4Ny4uNjA5ZGMxZjUgMTAwNjQ0Cj4+IC0tLSBhL2xp
Yi92ZnNjb3JlL3Zmcy5oCj4+ICsrKyBiL2xpYi92ZnNjb3JlL3Zmcy5oCj4+IEBAIC0xNTEsNCAr
MTUxLDEzIEBAIHZvaWQJIHZub2RlX2R1bXAodm9pZCk7Cj4+ICAgdm9pZAkgbW91bnRfZHVtcCh2
b2lkKTsKPj4gICAjZW5kaWYKPj4gICAKPj4gK3N0YXRpYyB2b2lkIF9fYXR0cmlidXRlX18oKHVu
dXNlZCkpIHVrX3Zmc2NvcmVfdHJhY2UoaW50IGZvbyBfX3VudXNlZCwgLi4uKQo+PiArewo+PiAr
fQo+PiArCj4+ICsjZGVmaW5lIFRSQUNFUE9JTlQodHJhY2VfbmFtZSwgZm10LCAuLi4pCQkJXAo+
PiArCXN0YXRpYyB2b2lkIHRyYWNlX25hbWUoX19WQV9BUkdTX18gKSBfX2F0dHJpYnV0ZV9fKCh1
bnVzZWQsIGFsaWFzKCJ1a192ZnNjb3JlX3RyYWNlIikpKQo+PiArCj4+ICsKPj4gKwo+PiAgICNl
bmRpZiAvKiAhX1ZGU19IICovCj4+IGRpZmYgLS1naXQgYS9saWIvdmZzY29yZS92bm9kZS5jIGIv
bGliL3Zmc2NvcmUvdm5vZGUuYwo+PiBpbmRleCBhMmY0NTU5Ni4uODZlNmQ5YzcgMTAwNjQ0Cj4+
IC0tLSBhL2xpYi92ZnNjb3JlL3Zub2RlLmMKPj4gKysrIGIvbGliL3Zmc2NvcmUvdm5vZGUuYwo+
PiBAQCAtNDgsNiArNDgsOCBAQAo+PiAgICNpbmNsdWRlIDx2ZnNjb3JlL3Zub2RlLmg+Cj4+ICAg
I2luY2x1ZGUgInZmcy5oIgo+PiAgIAo+PiArI2RlZmluZSBTX0JMS1NJWkUgNTEyCj4+ICsKPj4g
ICBlbnVtIHZ0eXBlIGlmdG92dF90YWJbMTZdID0gewo+PiAgIAlWTk9OLCBWRklGTywgVkNIUiwg
Vk5PTiwgVkRJUiwgVk5PTiwgVkJMSywgVk5PTiwKPj4gICAJVlJFRywgVk5PTiwgVkxOSywgVk5P
TiwgVlNPQ0ssIFZOT04sIFZOT04sIFZCQUQsCj4+IAoKLS0gCll1cmkgVm9sY2hrb3YKU29mdHdh
cmUgU3BlY2lhbGlzdAoKTkVDIEV1cm9wZSBMdGQKS3VyZsO8cnN0ZW4tQW5sYWdlIDM2CkQtNjkx
MTUgSGVpZGVsYmVyZwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJv
amVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21p
bmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Feb 11 14:59:17 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 11 Feb 2019 14:59:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gtD3F-0006R2-L6; Mon, 11 Feb 2019 14:59:17 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Dsjz=QS=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gtD3E-0006Qx-QC
 for minios-devel@lists.xen.org; Mon, 11 Feb 2019 14:59:16 +0000
X-Inumbo-ID: 988bfcea-2e0d-11e9-b6ba-03f89bed60ff
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 988bfcea-2e0d-11e9-b6ba-03f89bed60ff;
 Mon, 11 Feb 2019 14:59:14 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id C1CE5104DBF;
 Mon, 11 Feb 2019 15:59:13 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id l3Iw9IAroQdc; Mon, 11 Feb 2019 15:59:13 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 9F3AB104C84
 for <minios-devel@lists.xen.org>; Mon, 11 Feb 2019 15:59:11 +0100 (CET)
Received: from localhost (10.7.0.31) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 11 Feb 2019 15:59:08 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: Sharan Santhanam <sharan.santhanam@neclab.eu>, <minios-devel@lists.xen.org>
In-Reply-To: <6e74cbfb-a256-eed1-d2a8-d74545bb075c@neclab.eu>
Date: Mon, 11 Feb 2019 15:59:06 +0100
Message-ID: <tza4s2h8dav0at.fsf@N-1128.office.hd>
MIME-Version: 1.0
X-Originating-IP: [10.7.0.31]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v3 11/23] lib/vfscore: introduce
 UK_FS_REGISTER
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGksCgpTaGFyYW4gU2FudGhhbmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xhYi5ldT4gd3JpdGVz
OgoKPiBIZWxsbyBZdXJpLAo+Cj4gVGhpcyBwYXRjaCBzZWVtcyBmaW5lIGV4cGVjdCBmb3IgbWlu
b3IgY29tbWVudC4KPgo+Cj4KPiBUaGFua3MgJiBSZWdhcmRzCj4gU2hhcmFuCj4KPiBPbiAyLzcv
MTkgMjo1OCBQTSwgWXVyaSBWb2xjaGtvdiB3cm90ZToKPj4gVGhlIG1hY3JvIHJlZ2lzdGVycyB0
aGUgZmlsZXN5c3RlbSBpbiB0aGUgc3RhdGljIGFycmF5Cj4+IAo+PiBTaWduZWQtb2ZmLWJ5OiBZ
dXJpIFZvbGNoa292IDx5dXJpLnZvbGNoa292QG5lY2xhYi5ldT4KPj4gLS0tCj4+ICAgbGliL3Zm
c2NvcmUvTWFrZWZpbGUudWsgICAgICAgICAgICAgfCAgMiArKwo+PiAgIGxpYi92ZnNjb3JlL2V4
dHJhLmxkICAgICAgICAgICAgICAgIHwgIDkgKysrKysrKysrCj4+ICAgbGliL3Zmc2NvcmUvaW5j
bHVkZS92ZnNjb3JlL21vdW50LmggfCAgNiArKysrKy0KPj4gICBsaWIvdmZzY29yZS9tb3VudC5j
ICAgICAgICAgICAgICAgICB8IDI0ICsrKysrKysrKysrKysrKysrKy0tLS0tLQo+PiAgIDQgZmls
ZXMgY2hhbmdlZCwgMzQgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKPj4gICBjcmVhdGUg
bW9kZSAxMDA2NDQgbGliL3Zmc2NvcmUvZXh0cmEubGQKPj4gCgo+PiBkaWZmIC0tZ2l0IGEvbGli
L3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmggYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zm
c2NvcmUvbW91bnQuaAo+PiBpbmRleCA3YTYzOGRiZS4uYjRhMDczMjMgMTAwNjQ0Cj4+IC0tLSBh
L2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9tb3VudC5oCj4+ICsrKyBiL2xpYi92ZnNjb3Jl
L2luY2x1ZGUvdmZzY29yZS9tb3VudC5oCj4+IEBAIC0xMDAsMTIgKzEwMCwxNiBAQCBzdHJ1Y3Qg
bW91bnQgewo+PiAgIC8qCj4+ICAgICogRmlsZXN5c3RlbSB0eXBlIHN3aXRjaCB0YWJsZS4KPj4g
ICAgKi8KPj4gLXN0cnVjdCB2ZnNzdyB7Cj4+ICtzdHJ1Y3QgdmZzY29yZV9mc190eXBlIHsKPj4g
ICAJY29uc3QgY2hhciAgICAgICp2c19uYW1lOwkvKiBuYW1lIG9mIGZpbGUgc3lzdGVtICovCj4+
ICAgCWludAkJKCp2c19pbml0KSh2b2lkKTsgLyogaW5pdGlhbGl6ZSByb3V0aW5lICovCj4+ICAg
CXN0cnVjdCB2ZnNvcHMJKnZzX29wOwkJLyogcG9pbnRlciB0byB2ZnMgb3BlcmF0aW9uICovCj4+
ICAgfTsKPj4gPiArI2RlZmluZSBVS19GU19SRUdJU1RFUihmc3N3KQkJCQkJXAo+PiArCXN0YXRp
YyB2b2lkIF9fYXR0cmlidXRlKChfX3NlY3Rpb25fXygiLnVrX2ZzX2xpc3QiKSkpCVwKPj4gKwkJ
Kl9fcHRyXyMjZnNzdyBfX3VzZWQgPSAmZnNzdzsJCQkJXAo+PiArCj4gV2h5IGRvIHdlIHVzZSB0
aGUgdHlwZSBhcyB2b2lkICogaW5zdGVhZCBvZiBzdHJ1Y3QgdmZzY29yZV9mc190eXBlKj8KCkkg
Z3Vlc3MgJ3ZvaWQgKicgaXMgc2hvcnRlciA6KS4gQW5kIGl0IGRvZXMgbm90IG1ha2UgYW55IGRp
ZmZlcmVuY2UgZm9yCnR5cGUgY2hlY2tpbmcgaW4gZ2NjLiBUaGF0IGlzIGp1c3QgYWRkaW5nIGEg
cG9pbnRlciBpbnRvIGEgc2VjdGlvbiwgYW5kCnRoaXMgZGVjbGFyYXRpb24gd2lsbCBuZXZlciBi
ZSB1c2VkIGRpcmVjdGx5LgoKQnV0IEkgZ3Vlc3MganVzdCB0byBtYWtlIGl0IGEgYml0IG1vcmUg
c3ludGFjdGljYWxseSBjb3JyZWN0IEkgd2lsbApjaGFuZ2UgdGhpcyB0byAndmZzY29yZV9mc190
eXBlIConLiBFdmVuIHRob3VnaCBpdCBkb2VzIG5vdCBjaGFuZ2UKYW55dGhpbmcgaW4gdGVybXMg
b2YgY29tcGlsaW5nLCBnY2Mgd2FybmluZ3Mgb3IgdHlwZSBjaGVja2luZy4KCi0tIApZdXJpIFZv
bGNoa292ClNvZnR3YXJlIFNwZWNpYWxpc3QKCk5FQyBFdXJvcGUgTHRkCkt1cmbDvHJzdGVuLUFu
bGFnZSAzNgpELTY5MTE1IEhlaWRlbGJlcmcKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVs
QGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1h
bi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Feb 11 14:59:41 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 11 Feb 2019 14:59:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gtD3d-0006SY-NK; Mon, 11 Feb 2019 14:59:41 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Dsjz=QS=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gtD3d-0006ST-99
 for minios-devel@lists.xen.org; Mon, 11 Feb 2019 14:59:41 +0000
X-Inumbo-ID: a72a5221-2e0d-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id a72a5221-2e0d-11e9-bc90-bc764e045a96;
 Mon, 11 Feb 2019 14:59:39 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 4D83FF2047;
 Mon, 11 Feb 2019 15:59:38 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id qUEZS7pNNSwM; Mon, 11 Feb 2019 15:59:38 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 19A76F2046
 for <minios-devel@lists.xen.org>; Mon, 11 Feb 2019 15:59:36 +0100 (CET)
Received: from localhost (10.7.0.31) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 11 Feb 2019 15:59:35 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: Sharan Santhanam <sharan.santhanam@neclab.eu>, <minios-devel@lists.xen.org>
In-Reply-To: <1bc4bcf8-2a9f-7f72-bc16-1b1f563dd280@neclab.eu>
Date: Mon, 11 Feb 2019 15:59:34 +0100
Message-ID: <tza4s2ftsuv0a1.fsf@N-1128.office.hd>
MIME-Version: 1.0
X-Originating-IP: [10.7.0.31]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v3 13/23] lib/vfscore: introduce
 fget, fdrop, fdalloc
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGksCgpTaGFyYW4gU2FudGhhbmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xhYi5ldT4gd3JpdGVz
OgoKPiBIZWxsbyBZdXJpLAo+Cj4gUGxlYXNlIGZpbmQgdGhlIGNvbW1lbnQgaW5saW5lCj4KPiBU
aGFua3MgJiBSZWdhcmRzCj4gU2hhcmFuCj4KPiBPbiAyLzcvMTkgMjo1OCBQTSwgWXVyaSBWb2xj
aGtvdiB3cm90ZToKPj4gVGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkIGluIHRoZSBpbXBvcnRlZCBj
b2RlLCB3aGljaCBpcyBub3QgZW5hYmxlZAo+PiB5ZXQuIFRoaXMgcmVxdWlyZWQgdG8gZXhwYW5k
IGZ1bmN0aW9uYWxpdHkgb2YgdmZzY29yZV9pbnN0YWxsX2ZkIGFuZAo+PiBmcmllbmRzIHdpdGgg
bG9ja2luZyBhbmQgcmVmZXJlbmNlIGNvdW50aW5nLgo+PiAKPj4gU2lnbmVkLW9mZi1ieTogWXVy
aSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Cj4+IC0tLQo+PiAgIGxpYi92ZnNj
b3JlL2ZkLmMgICAgICAgICAgICAgICAgICAgfCA2NyArKysrKysrKysrKysrKysrKysrKysrKysr
KysrLS0KPj4gICBsaWIvdmZzY29yZS9maWxlLmMgICAgICAgICAgICAgICAgIHwgMjIgKysrKysr
KysrLQo+PiAgIGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9maWxlLmggfCAgOSArKystCj4+
ICAgMyBmaWxlcyBjaGFuZ2VkLCA5MiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQo+PiBk
aWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvZmQuYyBiL2xpYi92ZnNjb3JlL2ZkLmMKPj4gaW5kZXgg
NmMyMjA0MjguLjlkMmFmZTVhIDEwMDY0NAo+PiAtLS0gYS9saWIvdmZzY29yZS9mZC5jCj4+ICsr
KyBiL2xpYi92ZnNjb3JlL2ZkLmMKPj4gQEAgLTc0LDIwICs3NCw0MSBAQCBleGl0Ogo+PiAgIAo+
PiAgIHZvaWQgdmZzY29yZV9wdXRfZmQoaW50IGZkKQo+PiAgIHsKPj4gKwl1bnNpZ25lZCBsb25n
IGZsYWdzOwo+PiArCj4+ICAgCVVLX0FTU0VSVChmZCA8IChpbnQpIEZEVEFCTEVfTUFYX0ZJTEVT
KTsKPj4gICAJLyogQ3VycmVudGx5IGl0IGlzIG5vdCBhbGxvd2VkIHRvIGZyZWUgc3RkKGlufG91
dHxlcnIpICovCj4+ICAgCVVLX0FTU0VSVChmZCA+IDIpOwo+PiAgIAo+PiAtCV9fdWtfY2xlYXJf
Yml0KGZkLCAmZmR0YWJsZS5iaXRtYXApOwo+PiArCWZsYWdzID0gdWtwbGF0X2xjcHVfc2F2ZV9p
cnFmKCk7Cj4+ICsJX191a19jbGVhcl9iaXQoZmQsICZmZHRhYmxlLmJpdG1hcCk7XAo+PiArCWZk
dGFibGUuZmlsZXNbZmRdID0gTlVMTDsKPj4gKwl1a3BsYXRfbGNwdV9yZXN0b3JlX2lycWYoZmxh
Z3MpOwo+IFNob3VsZG4ndCB3ZSBoYXZlIGEgZmRyb3Agb24gdGhlIHZmc2NvcmVfZmlsZSBkZXNj
cmlwdG9yPwpNYWtlcyBzZW5zZQoKPgo+PiAgIH0KPj4gICAKPj4gLXZvaWQgdmZzY29yZV9pbnN0
YWxsX2ZkKGludCBmZCwgc3RydWN0IHZmc2NvcmVfZmlsZSAqZmlsZSkKPj4gK2ludCB2ZnNjb3Jl
X2luc3RhbGxfZmQoaW50IGZkLCBzdHJ1Y3QgdmZzY29yZV9maWxlICpmaWxlKQo+PiAgIHsKPj4g
LQlVS19BU1NFUlQoZmQgPCAoaW50KSBGRFRBQkxFX01BWF9GSUxFUyk7Cj4+IC0JVUtfQVNTRVJU
KGZpbGUpOwo+PiArCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4+ICsJc3RydWN0IHZmc2NvcmVfZmls
ZSAqb3JpZzsKPj4gKwo+PiArCWlmICgoZmQgPj0gKGludCkgRkRUQUJMRV9NQVhfRklMRVMpIHx8
ICghZmlsZSkpCj4+ICsJCXJldHVybiAtRUJBREY7Cj4+ICsKPj4gKwlmaG9sZChmaWxlKTsKPj4g
ICAKPj4gICAJZmlsZS0+ZmQgPSBmZDsKPj4gKwo+PiArCWZsYWdzID0gdWtwbGF0X2xjcHVfc2F2
ZV9pcnFmKCk7Cj4KPiBTaG91bGRuJ3Qgd2UgY2hlY2sgaWYgdGhlcmUgYWN0aXZlIHJlZmVyZW5j
ZSB0byB0aGUgb3JpZyBiZWZvcmUgCj4gaW5zdGFsbGluZyB0aGUgZmQ/ClRoYXQgd2FzIGEgd2hv
bGUgcG9pbnQuIElmIHRoZXJlIHdhcyBzb21ldGhpbmcgYmVmb3JlLCBpdCBpcyBjbG9zZWQKc2ls
ZW50bHkuIFNlZSAnbWFuIGR1cDInLgoKPj4gKwlvcmlnID0gZmR0YWJsZS5maWxlc1tmZF07Cj4+
ICAgCWZkdGFibGUuZmlsZXNbZmRdID0gZmlsZTsKPj4gKwl1a3BsYXRfbGNwdV9yZXN0b3JlX2ly
cWYoZmxhZ3MpOwo+PiArCj4+ICsJZmRyb3AoZmlsZSk7Cj4+ICsKPj4gKwlpZiAob3JpZykKPiBU
aGlzIHJlZmVyZW5jZSBoYXMgdG8gYmUgY2xvc2VkIGFzIHRoZXJlIGNhbiBiZSBubyBmdXJ0aGVy
IHJlZmVyZW5jZSB0byBpdC4KTm90IHJlYWxseS4gVGhlIHNhbWUgZnAgY2FuIGhhdmUgbXVsdGlw
bGUgZmlsZSBkZXNjcmlwdG9ycy4gRm9yIGV4YW1wbGUKJ2R1cCcgY2FuIGNyZWF0ZSBzdWNoIGNv
bmRpdGlvbnMKCj4+ICsJCWZkcm9wKG9yaWcpOwo+PiArCj4+ICsJcmV0dXJuIDA7Cj4+ICAgfQo+
PiAgIAo+PiAgIHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKnZmc2NvcmVfZ2V0X2ZpbGUoaW50IGZkKQo+
PiBAQCAtMTAxLDEyICsxMjIsNTAgQEAgc3RydWN0IHZmc2NvcmVfZmlsZSAqdmZzY29yZV9nZXRf
ZmlsZShpbnQgZmQpCj4+ICAgCWlmICghKGZkdGFibGUuYml0bWFwICYgKCh1aW50NjRfdCkgMSA8
PCBmZCkpKQo+PiAgIAkJZ290byBleGl0Owo+PiAgIAlyZXQgPSBmZHRhYmxlLmZpbGVzW2ZkXTsK
Pj4gKwlmaG9sZChyZXQpOwo+PiAgIAo+PiAgIGV4aXQ6Cj4+ICAgCXVrcGxhdF9sY3B1X3Jlc3Rv
cmVfaXJxZihmbGFncyk7Cj4+ICAgCXJldHVybiByZXQ7Cj4+ICAgfQo+PiAgIAo+PiAraW50IGZn
ZXQoaW50IGZkLCBzdHJ1Y3QgdmZzY29yZV9maWxlICoqb3V0X2ZwKQo+PiArewo+PiArCWludCBy
ZXQgPSAwOwo+PiArCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwID0gdmZzY29yZV9nZXRfZmlsZShm
ZCk7Cj4+ICsKPj4gKwlpZiAoIWZwKQo+IFdlIGFyZSB1c2luZyBib3RoIC12ZSBhbmQgK3ZlIGVy
cm9yIHdpdGhpbiB0aGlzIGZpbGUuIE1heWJlIHdpc2UgdG8KPiBzdGljayB0byBhIHNpbmdsZSBz
Y2hlbWUuIElzIGl0IGJlY2F1c2Ugb2YgaW50ZXJhY3Rpb24gd2l0aCB0aGUgaW1wb3J0ZWQgCj4g
T1N2IGNvZGU/CgpZb3UgYXJlIHJpZ2h0LiBUaGlzIGlzIGJyb2tlbi4gRXhhY3RseSBiZWNhdXNl
IHRoaXMgd2FzIHRoZSB3YXkgaXQgd2FzCmltcGxlbWVudGVkIGluIFByZXgsIGFuZCBzdWJzZXF1
ZW50bHkgaW4gT1N2LiBDdXJyZW50bHkgaXQgaXMgc29ydCBvZgp3b3Jrcy4gQmVjYXVzZSBmb3Ig
LXZlIHNjaGVtZWQgZnVuY3Rpb24gcmV0dXJuIHZhbHVlIGlzIGNoZWNrIG9ubHkgZm9yCnplcm8u
CgpUaGUgaWRlYSB3YXMgdG8gY2hhbmdlIHRvIG5lZ2F0aXZlIGVycm9ycyBpbiB0aGUgZm9sbG93
dXBzLCBpZiB5b3UgZG8Kbm90IG1pbmQuIEFuZCBJIGFtIGEgYml0IHJlbHVjdGFudCB0byBjaGFu
Z2UgZnVuY3Rpb24gdXNpbmcgImNvcnJlY3QiCi12ZSBzY2hlbWUgIGZ1bmN0aW9uIHRvICJ3cm9u
ZyIgK3ZlIG9uIGluIHRoaXMgcGF0Y2gsIG9ubHkgdG8gY2hhbmdlCnRoZW0gYmFjayBhZ2FpbiBp
biB0aGUgZm9sbG93dXBzLgoKVGhpcyBpcyB0aGUgZmlyc3QgdGhpbmcgb24gbXkgcGxhdGUgdG8g
Zml4IGFmdGVyIHRoZSBzZXJpZXMgaXMKdXBzdHJlYW1lZC4KPgo+PiArCQlyZXQgPSBFQkFERjsK
Pj4gKwllbHNlCj4+ICsJCSpvdXRfZnAgPSBmcDsKPj4gKwo+PiArCXJldHVybiByZXQ7Cj4+ICt9
Cj4+ICsKPj4gK2ludCBmZGFsbG9jKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwLCBpbnQgKm5ld2Zk
KQo+PiArewo+PiArCWludCBmZCwgcmV0ID0gMDsKPj4gKwo+PiArCWZob2xkKGZwKTsKPj4gKwo+
PiArCWZkID0gdmZzY29yZV9hbGxvY19mZCgpOwo+PiArCWlmIChmZCA8IDApIHsKPiBTaG91bGRu
J3Qgd2UgaGF2ZSBhbiBmZHJvcCBoZXJlPwpObywgZmRhbGxvYyBzdXBwb3NlZCB0byBhbGxvY2F0
ZSBhIGxvY2tlZCBmcC4KCj4+IEBAIC05NSwzICs5NSwyMyBAQCBzc2l6ZV90IHJlYWQoaW50IGZk
LCB2b2lkICpidWYsIHNpemVfdCBjb3VudCkKPj4gICAKPj4gICAJcmV0dXJuIGZpbGUtPmZvcHMt
PnJlYWQoZmlsZSwgYnVmLCBjb3VudCk7Cj4+ICAgfQo+PiArCj4+ICsvKiBUT0RPOiByZW1vdmUg
c3R1YiAqLwo+PiArI2RlZmluZSB2ZnNfY2xvc2UoZnApICgwKQo+PiArCj4gRm9yIHJlZmVyZW5j
ZSBjb3VudGluZyB3ZSBjb3VsZCB1c2UgdGhlIDxpbmNsdWRlL3VrL3JlZmNvdW50Lmg+LiBBcyAK
PiAgCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbWVudGlvbmVkIAo+IGluIHRoZSBwcmV2aW91cyBwYXRjaCBpdCBpcyBub3Qg
bmVjZXNzYXJ5IGZvciB0aGlzIHBhdGNoIAo+ICAKPgoKLS0gCll1cmkgVm9sY2hrb3YKU29mdHdh
cmUgU3BlY2lhbGlzdAoKTkVDIEV1cm9wZSBMdGQKS3VyZsO8cnN0ZW4tQW5sYWdlIDM2CkQtNjkx
MTUgSGVpZGVsYmVyZwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJv
amVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21p
bmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Feb 11 16:09:38 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 11 Feb 2019 16:09:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gtE9I-00043z-8J; Mon, 11 Feb 2019 16:09:36 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=tNxd=QS=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1gtE9G-00043u-Lm
 for minios-devel@lists.xen.org; Mon, 11 Feb 2019 16:09:34 +0000
X-Inumbo-ID: 69c85b73-2e17-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 69c85b73-2e17-11e9-bc90-bc764e045a96;
 Mon, 11 Feb 2019 16:09:31 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 22C71104BB9;
 Mon, 11 Feb 2019 17:09:30 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id unn4gixHl5Dx; Mon, 11 Feb 2019 17:09:30 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 010E110465B
 for <minios-devel@lists.xen.org>; Mon, 11 Feb 2019 17:09:28 +0100 (CET)
Received: from PALLENE.office.hd ([169.254.1.223]) by METHONE.office.hd
 ([192.168.24.54]) with mapi id 14.03.0319.002; Mon, 11 Feb 2019 17:09:27
 +0100
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [Minios-devel] [UNIKRAFT PATCH] build: mark LTO as experimental
Thread-Index: AQHUvjcQYyfUUCTZckS8FZB6aIDZFaXay+MA
Date: Mon, 11 Feb 2019 16:09:26 +0000
Message-ID: <DBADFA10-5BFB-439D-8105-785CC3FDD97E@neclab.eu>
References: <20190206161404.11861-1-yuri.volchkov@neclab.eu>
In-Reply-To: <20190206161404.11861-1-yuri.volchkov@neclab.eu>
Accept-Language: en-GB, gl-ES, de-DE, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [10.1.99.239]
Content-ID: <F1E130ADBC16A84CB89D801657143A78@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT PATCH] build: mark LTO as experimental
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Sharan Santhanam <Sharan.Santhanam@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

WWVhaCwgSSBhZ3JlZS4gSXQgaXMgd2lzZXIgdG8gbWFyayBpdCBhcyBleHBlcmltZW50YWwuIFRo
YW5rcyBmb3IgZG9pbmcgaXQuDQoNClJldmlld2VkLWJ5OiBTaW1vbiBLdWVuemVyIDxzaW1vbi5r
dWVuemVyQG5lY2xhYi5ldT4NCg0K77u/T24gMDYuMDIuMTksIDE3OjE0LCAiTWluaW9zLWRldmVs
IG9uIGJlaGFsZiBvZiBZdXJpIFZvbGNoa292IiA8bWluaW9zLWRldmVsLWJvdW5jZXNAbGlzdHMu
eGVucHJvamVjdC5vcmcgb24gYmVoYWxmIG9mIHl1cmkudm9sY2hrb3ZAbmVjbGFiLmV1PiB3cm90
ZToNCg0KICAgIEN1cnJlbnRseSBMVE8gZHVyaW5nIGluY3JlbWVudGFsIGxpbmtpbmcgaXMgbm90
IHN1cHBvcnRlZCB3ZWxsIGVub3VnaA0KICAgIGJ5IGdjYy4NCiAgICANCiAgICBTaWduZWQtb2Zm
LWJ5OiBZdXJpIFZvbGNoa292IDx5dXJpLnZvbGNoa292QG5lY2xhYi5ldT4NCiAgICAtLS0NCiAg
ICAgQ29uZmlnLnVrIHwgMiArLQ0KICAgICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyks
IDEgZGVsZXRpb24oLSkNCiAgICANCiAgICBkaWZmIC0tZ2l0IGEvQ29uZmlnLnVrIGIvQ29uZmln
LnVrDQogICAgaW5kZXggMTU4ZjA5NmUuLmQwYmZhODIzIDEwMDY0NA0KICAgIC0tLSBhL0NvbmZp
Zy51aw0KICAgICsrKyBiL0NvbmZpZy51aw0KICAgIEBAIC03OSw3ICs3OSw3IEBAIGNvbW1lbnQg
IkhpbnQ6IEVuYWJsZSBkcm9wcGluZyBvZiB1bnVzZWQgY29kZSB0byBmdXJ0aGVyIHJlZHVjZSB0
YXJnZXQgaW1hZ2Ugc2l6DQogICAgIAlkZXBlbmRzIG9uIE9QVElNSVpFX1NJWkUgJiYgIU9QVElN
SVpFX0RFQURFTElNDQogICAgIA0KICAgICBjb25maWcgT1BUSU1JWkVfTFRPDQogICAgLQlib29s
ICJMaW5rIHRpbWUgb3B0aW1pemF0aW9ucyAoTFRPKSINCiAgICArCWJvb2wgIkxUTyAtIExpbmsg
dGltZSBvcHRpbWl6YXRpb25zIChFWFBFUklNRU5UQUwpIg0KICAgICAJZGVmYXVsdCBuDQogICAg
IAloZWxwDQogICAgIAkJRW5hYmxlcyBHQ0MgdG8gZG8gY29kZSBvcHRpbWl6YXRpb25zIGR1cmlu
ZyBsaW5raW5nLiBUaGlzIG9wdGlvbg0KICAgIC0tIA0KICAgIDIuMTkuMg0KICAgIA0KICAgIA0K
ICAgIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQogICAg
TWluaW9zLWRldmVsIG1haWxpbmcgbGlzdA0KICAgIE1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9q
ZWN0Lm9yZw0KICAgIGh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5m
by9taW5pb3MtZGV2ZWwNCg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVu
cHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZv
L21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Feb 11 16:16:24 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 11 Feb 2019 16:16:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gtEFr-0004ni-Pu; Mon, 11 Feb 2019 16:16:23 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=ktH6=QS=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1gtEFq-0004nd-ET
 for minios-devel@lists.xen.org; Mon, 11 Feb 2019 16:16:22 +0000
X-Inumbo-ID: 5d27e3de-2e18-11e9-bdaa-43f4789c8a1a
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 5d27e3de-2e18-11e9-bdaa-43f4789c8a1a;
 Mon, 11 Feb 2019 16:16:19 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 936DE104BB9;
 Mon, 11 Feb 2019 17:16:18 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id POqQqbz2F1hl; Mon, 11 Feb 2019 17:16:18 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 72D6C10465B
 for <minios-devel@lists.xen.org>; Mon, 11 Feb 2019 17:16:16 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 11 Feb 2019 17:16:16
 +0100
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190104161800.22622-1-yuri.volchkov@neclab.eu>
 <20190104161800.22622-3-yuri.volchkov@neclab.eu>
 <1315d350-86cc-9833-a047-087a2e0dd09f@neclab.eu>
 <tza4s2ef8kx58b.fsf@N-1128.office.hd>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <cabee59e-6c7c-1aeb-d245-518a4b4d8826@neclab.eu>
Date: Mon, 11 Feb 2019 17:16:15 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <tza4s2ef8kx58b.fsf@N-1128.office.hd>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 2/2] lib/ukboot: move weak main
 in separate sub-lib
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: florian.schmidt@neclab.eu, Simon.kuenzer@neclab.eu
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

UmV2aWV3ZWQtYnk6IFNoYXJhbiBTYW50aGFuYW0gPHNoYXJhbi5zYW50aGFuYW1AbmVjbGFiLmV1
PgoKT24gMi82LzE5IDU6MTYgUE0sIFl1cmkgVm9sY2hrb3Ygd3JvdGU6Cj4gSGksCj4gCj4gZ29v
ZCBwb2ludC4gSSBoYXZlIHNlbnQgYSBzZXBhcmF0ZSBwYXRjaCBmb3IgdGhhdC4KPiAKPiBDaGVl
cnMsIFl1cmkuCj4gCj4gU2hhcmFuIFNhbnRoYW5hbSA8c2hhcmFuLnNhbnRoYW5hbUBuZWNsYWIu
ZXU+IHdyaXRlczoKPiAKPj4gSGVsbG8gWXVyaSwKPj4KPj4gSSBhZ3JlZSB3aXRoIHRoZSBzb2x1
dGlvbi4KPj4KPj4gTWF5YmUgaXQgaXMgd2lzZSB0byBhZGQgYW4gIkVYUEVSSU1FTlRBTCIgdGFn
IGFyb3VuZCB0aGUgTFRPIENvbmZpZy51awo+PiBvcHRpb24uCj4+Cj4+IFRoYW5rcyAmIFJlZ2Fy
ZHMKPj4gU2hhcmFuCj4+Cj4gCj4gCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0
cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlz
dGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Feb 11 16:18:12 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 11 Feb 2019 16:18:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gtEHc-0004qE-15; Mon, 11 Feb 2019 16:18:12 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Dsjz=QS=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gtEHa-0004q9-8t
 for minios-devel@lists.xen.org; Mon, 11 Feb 2019 16:18:10 +0000
X-Inumbo-ID: 9e381da2-2e18-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 9e381da2-2e18-11e9-bc90-bc764e045a96;
 Mon, 11 Feb 2019 16:18:08 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id BAD2E104BB9;
 Mon, 11 Feb 2019 17:18:07 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id tcfyvAAW5rvO; Mon, 11 Feb 2019 17:18:07 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 9698310465B
 for <minios-devel@lists.xen.org>; Mon, 11 Feb 2019 17:18:05 +0100 (CET)
Received: from localhost (10.7.0.31) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 11 Feb 2019 17:18:04 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: Sharan Santhanam <sharan.santhanam@neclab.eu>, <minios-devel@lists.xen.org>
In-Reply-To: <128a2689-c39a-63bb-0925-c9a63b9fb7ce@neclab.eu>
References: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
 <20190207135901.9122-15-yuri.volchkov@neclab.eu>
 <128a2689-c39a-63bb-0925-c9a63b9fb7ce@neclab.eu>
Date: Mon, 11 Feb 2019 17:17:48 +0100
Message-ID: <tza4s2d0nyuwnn.fsf@N-1128.office.hd>
MIME-Version: 1.0
X-Originating-IP: [10.7.0.31]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v3 14/23] lib/vfscore: keep
 vnode locked during drele call
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGkgU2hhcmFuLAoKbGV0J3Mgc2tpcCB0aGlzIHBhdGNoIGF0IGFsbCBmb3Igbm93LiBUaGlzIGlz
IGEgcGFydCBvZiBhIGJpZ2dlciBmaWdodCwKd2hpY2ggSSB1bmZvcnR1bmF0ZWx5IHBvc3Rwb25l
ZCBmb3Igbm93LiBUaGF0IGlzIGFsc28gYSByZWFzb24gd2h5CnZuX2RlbF9uYW1lIGhhcyB0aGlz
IGNvbW1lbnQKCgkvKiBUT0RPOiBSZS1lbmFibGUgdGhpcyBjaGVjayB3aGVuIHByZWVtcHRpb24g
YW5kL29yIHNtcCBpcwoJICogaGVyZSAqLwoJLyogVUtfQVNTRVJUKHVrX211dGV4X2lzX2xvY2tl
ZCgmdnAtPnZfbG9jaykpOyAqLwoKVGhlIHByb2JsZW0gaGVyZSBpcyB0aGF0IE9TdiBpcyB1c2lu
ZyByZWN1cnNpdmUgbG9ja2luZywgd2hpY2ggd2UgZG8gbm90CnN1cHBvcnQuIEkgd2FzIGxlYW5p
bmcgdG93YXJkcyBmaXhpbmcgbG9ja2luZyBzY2hlbWUgaW4gYSB3YXkgdGhhdCB3ZSBkbwpub3Qg
bmVlZCBuZXN0ZWQgbG9ja3MsIHJhdGhlciB0aGVuIGltcGxlbWVudGluZyB0aGVtLiBCdXQgdGhh
dCB3b3VsZApyZXF1aXJlIGEgYml0IG9mIGVmZm9ydHMuCgpTaW5jZSB0aGlzIHRoZSBpbml0aWFs
IGltcG9ydCwgYW5kIHNvcnQgb2YgcHJlcGFyYXRpb25zIHRvd2FyZHMgYSBwcm9wZXIKdmZzY29y
ZSwgSSdkIHNheSB0aGlzIGZpZ2h0IGlzIG91dCBvZiB0aGUgc2NvcGUgb2YgdGhlIHNlcmllcy4g
QW5kIHRoaXMKcGF0Y2ggYWN0dWFsbHkgZG9lcyBub3QgYmVsb25nIHRvIGl0LgoKQlIsIFl1cmku
CgpTaGFyYW4gU2FudGhhbmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xhYi5ldT4gd3JpdGVzOgoK
PiBIZWxsbyBZdXJpLAo+Cj4gUGxlYXNlIGZpbmQgdGhlIGNvbW1lbnQgaW5saW5lCj4KPiBUaGFu
a3MgJiBSZWdhcmRzCj4gU2hhcmFuCj4KPiBPbiAyLzcvMTkgMjo1OCBQTSwgWXVyaSBWb2xjaGtv
diB3cm90ZToKPj4gU2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBu
ZWNsYWIuZXU+Cj4+IC0tLQo+PiAgIGxpYi92ZnNjb3JlL2xvb2t1cC5jICAgfCAyICstCj4+ICAg
bGliL3Zmc2NvcmUvc3lzY2FsbHMuYyB8IDIgKy0KPj4gICAyIGZpbGVzIGNoYW5nZWQsIDIgaW5z
ZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKPj4gCj4+IGRpZmYgLS1naXQgYS9saWIvdmZzY29y
ZS9sb29rdXAuYyBiL2xpYi92ZnNjb3JlL2xvb2t1cC5jCj4+IGluZGV4IDFlMmM0MDA1Li5jYmMw
MmI1MiAxMDA2NDQKPj4gLS0tIGEvbGliL3Zmc2NvcmUvbG9va3VwLmMKPj4gKysrIGIvbGliL3Zm
c2NvcmUvbG9va3VwLmMKPj4gQEAgLTE4MSw4ICsxODEsOCBAQCBuYW1laShjb25zdCBjaGFyICpw
YXRoLCBzdHJ1Y3QgZGVudHJ5ICoqZHBwKQo+PiAgIAkJCQkvKiBGaW5kIGEgdm5vZGUgaW4gdGhp
cyBkaXJlY3RvcnkuICovCj4+ICAgCQkJCWVycm9yID0gVk9QX0xPT0tVUChkdnAsIG5hbWUsICZ2
cCk7Cj4+ICAgCQkJCWlmIChlcnJvcikgewo+PiAtCQkJCQl2bl91bmxvY2soZHZwKTsKPj4gICAJ
CQkJCWRyZWxlKGRkcCk7Cj4+ICsJCQkJCXZuX3VubG9jayhkdnApOwo+IFdoeSBhcmUgd2UgY2hh
bmdpbmcgb3JkZXIgb2YgdW5sb2NraW5nIGFuZCByZWxlYXNpbmcgdGhlIGRlbnRyeSBvbiB0aGUg
Cj4gbG9va3VwIGFuZCBub3Qgd2hlbiB0aGUgZW50cnkgYWxsb2NhdGlvbiBmYWlscyBpbiB0aGUg
c3RhdGVtZW50IGJlbG93IAo+IGl0LiBBIGNvbW1lbnQgZXhwbGFpbmluZyB0aGUgcmVhc29uIHNo
b3VsZCBoZWxwCj4+ICAgCQkJCQlyZXR1cm4gZXJyb3I7Cj4+ICAgCQkJCX0KPj4gICAKPj4gZGlm
ZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3N5c2NhbGxzLmMgYi9saWIvdmZzY29yZS9zeXNjYWxscy5j
Cj4+IGluZGV4IGZhMDQ5OGU3Li4zMzAwNDk2MCAxMDA2NDQKPj4gLS0tIGEvbGliL3Zmc2NvcmUv
c3lzY2FsbHMuYwo+PiArKysgYi9saWIvdmZzY29yZS9zeXNjYWxscy5jCj4+IEBAIC0xMzIsOCAr
MTMyLDggQEAgc3lzX29wZW4oY2hhciAqcGF0aCwgaW50IGZsYWdzLCBtb2RlX3QgbW9kZSwgc3Ry
dWN0IHZmc2NvcmVfZmlsZSAqKmZwcCkKPj4gICAJCQltb2RlICY9IH5TX0lGTVQ7Cj4+ICAgCQkJ
bW9kZSB8PSBTX0lGUkVHOwo+PiAgIAkJCWVycm9yID0gVk9QX0NSRUFURShkZHAtPmRfdm5vZGUs
IGZpbGVuYW1lLCBtb2RlKTsKPj4gLQkJCXZuX3VubG9jayhkZHAtPmRfdm5vZGUpOwo+PiAgIAkJ
CWRyZWxlKGRkcCk7Cj4+ICsJCQl2bl91bmxvY2soZGRwLT5kX3Zub2RlKTsKPiBJZiB0aGUgVk9Q
X0NSRUFURSBoYXMgdG8gbWFpbnRhaW4gdGhpcyBvcmRlciByZWxlYXNpbmcgdGhlIHBhcmVudCAK
PiBkaXJlY3RvcnkgZW50cnksIHNob3VsZG4ndCBWT1BfUkVNT1ZFIG9wZXJhdGlvbiBhbHNvIGZv
bGxvdyBhIHNpbWlsYXIgCj4gcGF0dGVybj8KPgo+PiAgIAo+PiAgIAkJCWlmIChlcnJvcikKPj4g
ICAJCQkJcmV0dXJuIGVycm9yOwo+PiAKCi0tIApZdXJpIFZvbGNoa292ClNvZnR3YXJlIFNwZWNp
YWxpc3QKCk5FQyBFdXJvcGUgTHRkCkt1cmbDvHJzdGVuLUFubGFnZSAzNgpELTY5MTE1IEhlaWRl
bGJlcmcKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1p
bmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3Jn
Cmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2
ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Feb 11 16:29:58 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 11 Feb 2019 16:29:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gtESz-0005dr-0N; Mon, 11 Feb 2019 16:29:57 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=ktH6=QS=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1gtESx-0005dm-LB
 for minios-devel@lists.xen.org; Mon, 11 Feb 2019 16:29:55 +0000
X-Inumbo-ID: 3fc6b070-2e1a-11e9-a16e-afd4363ff936
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 3fc6b070-2e1a-11e9-a16e-afd4363ff936;
 Mon, 11 Feb 2019 16:29:49 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 16D1B104BB9;
 Mon, 11 Feb 2019 17:29:48 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id yVeU3wkdz0Iz; Mon, 11 Feb 2019 17:29:47 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id CBF4110465B
 for <minios-devel@lists.xen.org>; Mon, 11 Feb 2019 17:29:45 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 11 Feb 2019 17:29:45
 +0100
To: Simon Kuenzer <simon.kuenzer@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190207230035.29861-1-simon.kuenzer@neclab.eu>
 <20190207230035.29861-3-simon.kuenzer@neclab.eu>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <caf006c4-549f-3373-48c3-cd2a6a833287@neclab.eu>
Date: Mon, 11 Feb 2019 17:29:45 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190207230035.29861-3-simon.kuenzer@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT/LIBLWIP PATCH 2/5] Update to lwIP 2.1.2
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Florian Schmidt <florian.schmidt@neclab.eu>,
 Yuri Volchkov <yuri.volchkov@neclab.eu>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8sCgpUaGlzIHBhdGNoIHNlZW1zIGZ1bmN0aW9uYWxseSBmaW5lLgoKUmV2aWV3ZWQtYnk6
IFNoYXJhbiBTYW50aGFuYW0gPHNoYXJhbi5zYW50aGFuYW1AbmVjbGFiLmV1PgoKVGhlcmUgYXJl
IGEgY291cGxlIG1pbm9yIGNvbW1lbnQgd2UgbmVlZCB0byBhZGRyZXNzLgoKVGhhbmtzICYgUmVn
YXJkcwpTaGFyYW4KCk9uIDIvOC8xOSAxMjowMCBBTSwgU2ltb24gS3VlbnplciB3cm90ZToKPiBV
cGRhdGUgbHdJUCBmcm9tIDIuMC4zIHRvIHRoZSBsYXRlc3QgcmVsYXNlIDIuMS4yIGZyb20gRGVj
IDIwMTguIFdlCj4gdHJhbnNmb3JtIHRoZSByYXRoZXIgYmV0YSBzdGF0ZSBvZiBvdXIgZ2x1ZSBs
aWJyYXJ5IHRvIGEgbW9yZSBzdGFibGUKPiBpbXBsZW1lbnRhdGlvbiBiYXNlZCBvbiB0aGUgbGF0
ZXN0IHN0YWdpbmcgYnJhbmNoIG9mIFVuaWtyYWZ0IHRvd2FyZHMKPiByZWxlYXNlIDAuMy4KPiAK
PiBUaGlzIGNvbW1pdCBwcm92aWRlcyB0aGUgZm9sbG93aW5nIGZlYXR1cmVzIGFzIHNlbGVjdGFi
bGUgb3B0aW9ucyBmcm9tCj4gbHdJUDoKPiAtIFR3byBvcGVyYXRpb24gbW9kZXM6ICJ0aHJlYWRl
ZCIgb3IgYXMgKHBhcnQgb2YgYSkgIm1haW5sb29wIgo+IC0gSVB2NCBzdXBwb3J0Cj4gLSBFeHBl
cmltZW50YWwgSVB2NiBzdXBwb3J0IChpbmNvbXBsZXRlKQo+IC0gUHJvdG9jb2xzOiBVRFAsIFRD
UCwgSUNNUCwgSUdNUCwgU05NUAo+IC0gRE5TIHJlc29sdmVyCj4gLSBESENQdjQgY2xpZW50Cj4g
LSBTb2NrZXQgQVBJCj4gCj4gU2lnbmVkLW9mZi1ieTogU2ltb24gS3VlbnplciA8c2ltb24ua3Vl
bnplckBuZWNsYWIuZXU+Cj4gU2lnbmVkLW9mZi1ieTogRmxvcmlhbiBTY2htaWR0IDxmbG9yaWFu
LnNjaG1pZHRAbmVjbGFiLmV1Pgo+IFNpZ25lZC1vZmYtYnk6IFl1cmkgVm9sY2hrb3YgPHl1cmku
dm9sY2hrb3ZAbmVjbGFiLmV1Pgo+IC0tLQo+ICAgQ29uZmlnLnVrICAgICAgICAgICAgICAgICAg
fCAgOTUgKysrKysrKy0tLS0tLQo+ICAgTWFrZWZpbGUudWsgICAgICAgICAgICAgICAgfCAgNzcg
KystLS0tLS0tLQo+ICAgYWxsb2MuYyAgICAgICAgICAgICAgICAgICAgfCAgMzMgKysrKysKPiAg
IGluY2x1ZGUvYXJjaC9jYy5oICAgICAgICAgIHwgIDMzICsrLS0tCj4gICBpbmNsdWRlL2FyY2gv
c3lzX2FyY2guaCAgICB8ICA0MSArKysrKy0KPiAgIGluY2x1ZGUvYXJwYS9pbmV0LmggICAgICAg
IHwgICAxICsKPiAgIGluY2x1ZGUvbHdpcG9wdHMuaCAgICAgICAgIHwgMjgwICsrKysrKysrKysr
KysrKysrKysrKysrKystLS0tLS0tLS0tLS0KPiAgIGluY2x1ZGUvbmV0L2lmLmggICAgICAgICAg
IHwgICAxICsKPiAgIGluY2x1ZGUvbmV0ZGIuaCAgICAgICAgICAgIHwgICAxICsKPiAgIGluY2x1
ZGUvc3lzL3NvY2tldC5oICAgICAgIHwgIDY3ICsrKysrKysrLQo+ICAgaW5pdC5jICAgICAgICAg
ICAgICAgICAgICAgfCAgODkgKysrKysrKysrKy0tCj4gICBtYWlsYm94LmMgICAgICAgICAgICAg
ICAgICB8IDE1NSArKysrKysrKysrKysrLS0tLS0tLQo+ICAgbXV0ZXguYyAgICAgICAgICAgICAg
ICAgICAgfCAgNDMgKysrKystCj4gICBzZW1hcGhvcmUuYyAgICAgICAgICAgICAgICB8ICA1OCAr
KysrKystLQo+ICAgc29ja2V0X2dsdWUuYyA9PiBzb2NrZXRzLmMgfCAyMTMgKysrKysrKysrKysr
KysrKysrLS0tLS0tLS0tLQo+ICAgdGhyZWFkcy5jICAgICAgICAgICAgICAgICAgfCAgNTIgKysr
KystLQo+ICAgdGltZS5jICAgICAgICAgICAgICAgICAgICAgfCAgMzMgKysrKysKPiAgIDE3IGZp
bGVzIGNoYW5nZWQsIDg5MiBpbnNlcnRpb25zKCspLCAzODAgZGVsZXRpb25zKC0pCj4gICBjcmVh
dGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9hcnBhL2luZXQuaAo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0
IGluY2x1ZGUvbmV0L2lmLmgKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL25ldGRiLmgK
PiAgIHJlbmFtZSBzb2NrZXRfZ2x1ZS5jID0+IHNvY2tldHMuYyAoNjAlKQo+IAo+IGRpZmYgLS1n
aXQgYS9Db25maWcudWsgYi9Db25maWcudWsKPiBpbmRleCA0ZmNjNmRjLi5kY2U1NjA3IDEwMDY0
NAo+IC0tLSBhL0NvbmZpZy51awo+ICsrKyBiL0NvbmZpZy51awo+IEBAIC0zLDQ2ICszLDU0IEBA
IG1lbnVjb25maWcgTElCTFdJUAo+ICAgCWRlZmF1bHQgbgo+ICAgCXNlbGVjdCBMSUJOT0xJQkMg
aWYgIUhBVkVfTElCQwo+ICAgCXNlbGVjdCBMSUJVS0RFQlVHCj4gKwlzZWxlY3QgTElCVUtTV1JB
TkQKCiAgV2hlcmUgaXMgdGhpcyBIQVZFX05XX1NUQUNLIGRlZmluZWQ/IFRoaXMgcHJvYmFibHkg
aXMgbWlzc2luZyBpbiAKVW5pa3JhZnQgbWFpbmxpbmUKPiArCXNlbGVjdCBIQVZFX05XX1NUQUNL
Cj4gKwo+ICtpZiBMSUJMV0lQCj4gK2Nob2ljZQo+ICsJcHJvbXB0ICJPcGVyYXRpb24gbW9kZSIK
PiArCWRlZmF1bHQgTFdJUF9USFJFQURTCj4gKwo+ICtjb25maWcgTFdJUF9OT1RIUkVBRFMKPiAr
CWJvb2wgIk1haW5sb29wIChub24tdGhyZWFkZWQpIgo+ICsJaGVscAo+ICsJCU5vIHRocmVhZCBp
cyBjcmVhdGVkIHRvIG9wZXJhdGUgdGhlIHN0YWNrLiBUaGUgc3RhY2sgaGFzIHRvIGJlCj4gKwkJ
Y2FsbGVkIGZyb20gdGhlIHNhbWUgY29udGV4dCBhcyBhbGwgc3RhY2sgaW50ZXJhY3Rpb25zLiBU
aGlzCj4gKwkJaW5jbHVkZXMgcG9sbGluZyBuZXR3b3JrIGRldmljZXMuIFRoZSBTb2NrZXQgQVBJ
IGlzIHVuYXZhaWxhYmxlLgo+ICsKPiArY29uZmlnIExXSVBfVEhSRUFEUwo+ICsJYm9vbCAiVGhy
ZWFkZWQiCj4gKwlzZWxlY3QgTElCVUtTQ0hFRAo+ICAgCXNlbGVjdCBMSUJVS01QSQo+ICAgCXNl
bGVjdCBMSUJVS01QSV9NQk9YCj4gICAJc2VsZWN0IExJQlVLTE9DSwo+ICAgCXNlbGVjdCBMSUJV
S0xPQ0tfU0VNQVBIT1JFCj4gICAJc2VsZWN0IExJQlVLTE9DS19NVVRFWAo+IC0Jc2VsZWN0IExJ
QlVLU1dSQU5ECj4gLQlzZWxlY3QgTElCVUtTQ0hFRAo+IC0Jc2VsZWN0IEhBVkVfTldfU1RBQ0sK
PiAtCj4gLQlzZWxlY3QgTElCTFdJUF9IRUFQT05MWQo+ICsJaGVscAo+ICsJCUNyZWF0ZXMgYSBj
b3JlIHRocmVhZCBmb3IgdGhlIHN0YWNrLgo+ICtlbmRjaG9pY2UKPiAgIAo+IC1pZiBMSUJMV0lQ
Cj4gICBjaG9pY2UKPiAgIAlwcm9tcHQgIk1lbW9yeSBhbGxvY2F0aW9uIG1vZGUiCj4gICAJZGVm
YXVsdCBMV0lQX0hFQVAKPiAgIAo+ICAgY29uZmlnIExXSVBfSEVBUAo+ICAgCWJvb2wgIkhlYXAg
b25seSIKPiArCWhlbHAKPiArCQlVc2UgZGVmYXVsdCB1a2FsbG9jIGFsbG9jYXRvciBmb3IgYWxs
IG1lbW9yeSBhbGxvY2F0aW9uIHJlcXVlc3RzCj4gICAKPiAgICNjb25maWcgTFdJUF9QT09MUwo+
ICAgIwlib29sICJNZW1vcnkgcG9vbHMiCj4gICBlbmRjaG9pY2UKPiAgIAo+ICAgY29uZmlnIExX
SVBfSVBWNAo+IC0JYm9vbCAiSVB2NCIKPiArCWJvb2wgIklQdjQgc3VwcG9ydCIKPiAgIAlkZWZh
dWx0IHkKPiAgIAo+ICAgY29uZmlnIExXSVBfSVBWNgo+IC0JYm9vbCAiSVB2NiIKPiArCWJvb2wg
IklQdjYgc3VwcG9ydCIKPiAgIAlkZWZhdWx0IG4KPiAgIAo+IC0KPiAtY29uZmlnIExXSVBfUlhD
SEVDS1NVTQo+IC0JYm9vbCAiQ2hlY2sgY2hlY2tzdW0gb24gcmVjZXB0aW9uIgo+IC0JZGVmYXVs
dCBuCj4gLQo+IC1jb25maWcgTFdJUF9UWENIRUNLU1VNCj4gLQlib29sICJDYWxjdWxhdGUgY2hl
Y2tzdW0gb24gc2VuZGluZyIKPiAtCWRlZmF1bHQgeQo+IC0KPiAgIGNvbmZpZyBMV0lQX1VEUAo+
ICAgCWJvb2wgIlVEUCBzdXBwb3J0Igo+ICAgCWRlZmF1bHQgeQo+IEBAIC04NCwxNiArOTIsMTIg
QEAgY29uZmlnIExXSVBfU05NUAo+ICAgY29uZmlnIExXSVBfREhDUAo+ICAgCWJvb2wgIkRIQ1Ag
Y2xpZW50Igo+ICAgCWRlcGVuZHMgb24gTFdJUF9JUFY0Cj4gKwlzZWxlY3QgTFdJUF9VRFAKPiAg
IAlkZWZhdWx0IG4KPiAgIAloZWxwCj4gLQkJUXVlcnkgZGV2aWNlIElQIGFkZHJlc3MgZnJvbSBE
SENQIHNlcnZlciBvbiBuZXR3b3JrCj4gLQo+IC1jb25maWcgTFdJUF9BVVRPSVAKPiAtCWJvb2wg
IkF1dG9JUCIKPiAtCWRlcGVuZHMgb24gTFdJUF9JUFY0Cj4gLQlkZWZhdWx0IG4KPiAtCWhlbHAK
PiAtCQlEeW5hbWljIElQIGFkZHJlc3MgYXNzaWdubWVudCBhdCBkZXZpY2Ugb24gc3RhcnR1cAo+
ICsJCVdoZW4gTFdJUF9BVVRPSUZBQ0UgaXMgdXNlZCwgdGhlIGluaXRpYWxpemF0aW9uIHJvdXRp
bmUgd2lsbAo+ICsJCXF1ZXJ5IHRoZSBJUHY0IGFkZHJlc3NlcyBmb3IgdGhlIGZvdW5kIGRldmlj
ZXMgZnJvbSBhIERIQ1AKPiArCQlzZXJ2ZXIgb24gbmV0d29yay4KPiAgIAo+ICAgbWVudWNvbmZp
ZyBMV0lQX0ROUwo+ICAgCWJvb2wgIkROUyBSZXNvbHZlciIKPiBAQCAtMTA5LDU4ICsxMTMsNjkg
QEAgY29uZmlnIExXSVBfRE5TX1RBQkxFX1NJWkUKPiAgIAlkZWZhdWx0IDMyCj4gICBlbmRpZgo+
ICAgCj4gLWNvbmZpZyBMV0lQX1BQUAo+IC0JYm9vbCAiUG9pbnQtdG8tUG9pbnQgc3VwcG9ydCIK
PiAtCWRlZmF1bHQgbgo+IC0KPiAtY29uZmlnIExXSVBfU0xJUAo+IC0JYm9vbCAiU0xJUCBuZXRp
ZiIKPiAtCWRlZmF1bHQgbgo+IC0KPiAtY29uZmlnIExXSVBfNkxPV1BBTgo+IC0JYm9vbCAiNkxv
d1BBTiIKPiAtCWRlcGVuZHMgb24gTFdJUF9JUFY2Cj4gLQlkZWZhdWx0IG4KPiAtCj4gICBjb25m
aWcgTFdJUF9TT0NLRVQKPiAgIAlib29sICJTb2NrZXQgQVBJIgo+ICsJc2VsZWN0IExJQlZGU0NP
UkUKPiArCWRlcGVuZHMgb24gTFdJUF9USFJFQURTICYmIChMV0lQX1VEUCB8fCBMV0lQX1RDUCkK
PiAgIAlkZWZhdWx0IHkKPiAgIAo+ICAgbWVudWNvbmZpZyBMV0lQX0RFQlVHCj4gICAJYm9vbCAi
RGVidWcgbWVzc2FnZXMiCj4gICAJZGVmYXVsdCBuCj4gKwloZWxwCj4gKwkJRW5hYmxlcyBkZWJ1
ZyBtZXNzYWdlcyBvbiB0aGUgZGVidWcgY29uc29sZSBmb3Igc2VsZWN0ZWQgbHdJUAo+ICsJCW1l
c3NhZ2UgdHlwZXMuCj4gICAKPiAgIGlmIExXSVBfREVCVUcKPiAgIGNvbmZpZyBMV0lQX01BSU5M
T09QX0RFQlVHCj4gICAJYm9vbCAiTWFpbmxvb3AiCj4gICAJZGVmYXVsdCBuCj4gKwloZWxwCj4g
KwkJRW5hYmxlcyBUQ1BfSVBfREVCVUcsIFRJTUVSU19ERUJVRwo+ICAgCj4gICBjb25maWcgTFdJ
UF9JRl9ERUJVRwo+ICAgCWJvb2wgIk5ldGlmIgo+ICAgCWRlZmF1bHQgbgo+ICsJaGVscAo+ICsJ
CUVuYWJsZXMgRVRIQVJQX0RFQlVHLCBORVRJRl9ERUJVRwo+ICAgCj4gICBjb25maWcgTFdJUF9J
UF9ERUJVRwo+ICAgCWJvb2wgIklQIgo+ICAgCWRlZmF1bHQgbgo+ICsJaGVscAo+ICsJCUVuYWJs
ZXMgSVBfREVCVUcsIElQNl9ERUJVRywgSVBfUkVBU1NfREVCVUcKPiAgIAo+ICAgY29uZmlnIExX
SVBfVURQX0RFQlVHCj4gICAJYm9vbCAiVURQIgo+ICAgCWRlZmF1bHQgbgo+ICsJaGVscAo+ICsJ
CUVuYWJsZXMgVURQX0RFQlVHCj4gICAKPiAgIGNvbmZpZyBMV0lQX1RDUF9ERUJVRwo+ICAgCWJv
b2wgIlRDUCIKPiAgIAlkZWZhdWx0IG4KPiArCWhlbHAKPiArCQlFbmFibGVzIFRDUF9ERUJVRywg
VENQX0ZSX0RFQlVHLCBUQ1BfUlRPX0RFQlVHLCBUQ1BfQ1dORF9ERUJVRywKPiArCQlUQ1BfV05E
X0RFQlVHLCBUQ1BfUlNUX0RFQlVHLCBUQ1BfUUxFTl9ERUJVRywgVENQX09VVFBVVF9ERUJVRywK
PiArCQlUQ1BfSU5QVVRfREVCVUcKPiAgIAo+ICAgY29uZmlnIExXSVBfU1lTX0RFQlVHCj4gICAJ
Ym9vbCAiU3lzdGVtIgo+ICAgCWRlZmF1bHQgbgo+ICsJaGVscAo+ICsJCUVuYWJsZXMgU1lTX0RF
QlVHLCBQQlVGX0RFQlVHLCBNRU1fREVCVUcsIE1FTVBfREVCVUcKPiAgIAo+ICAgY29uZmlnIExX
SVBfQVBJX0RFQlVHCj4gLQlib29sICJBUEkiCj4gKwlib29sICJBUElzIgo+ICAgCWRlZmF1bHQg
bgo+ICsJaGVscAo+ICsJCUVuYWJsZXMgU09DS0VUU19ERUJVRywgUkFXX0RFQlVHLCBBUElfTVNH
X0RFQlVHLCBBUElfTElCX0RFQlVHCj4gICAKPiAgIGNvbmZpZyBMV0lQX1NFUlZJQ0VfREVCVUcK
PiAtCWJvb2wgIlNlcnZpY2UiCj4gKwlib29sICJTZXJ2aWNlcyIKPiAgIAlkZWZhdWx0IG4KPiAr
CWhlbHAKPiArCQlFbmFibGVzIEVUSEFSUF9ERUJVRywgRE5TX0RFQlVHLCBBVVRPSVBfREVCVUcs
IERIQ1BfREVCVUcsCj4gKwkJSUNNUF9ERUJVRywgU05NUF9ERUJVRywgU05NUF9NU0dfREVCVUcs
IFNOTVBfTUlCX0RFQlVHCj4gICBlbmRpZgo+ICAgZW5kaWYKPiBkaWZmIC0tZ2l0IGEvTWFrZWZp
bGUudWsgYi9NYWtlZmlsZS51awo+IGluZGV4IGRmNTQ3ODcuLmFlM2ZiZWEgMTAwNjQ0Cj4gLS0t
IGEvTWFrZWZpbGUudWsKPiArKysgYi9NYWtlZmlsZS51awo+IEBAIC00LDcgKzQsOCBAQAo+ICAg
IyAgICAgICAgICAgU2ltb24gS3VlbnplciA8c2ltb24ua3VlbnplckBuZWNsYWIuZXU+Cj4gICAj
Cj4gICAjCj4gLSMgIENvcHlyaWdodCAoYykgMjAxNywgTkVDIEV1cm9wZSBMdGQuLCBORUMgQ29y
cG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4gKyMgIENvcHlyaWdodCAoYykgMjAxNy0y
MDE5LCBORUMgRXVyb3BlIEx0ZC4sIE5FQyBDb3Jwb3JhdGlvbi4KPiArIyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4gICAjCj4gICAjICBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
PiAgICMgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwo+IEBAIC00Miw3ICs0Myw3IEBAICQoZXZhbCAkKGNhbGwgYWRkbGli
X3MsbGlibHdpcCwkKENPTkZJR19MSUJMV0lQKSkpCj4gICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
Iwo+ICAgIyBTb3VyY2VzCj4gICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwo+IC1MSUJMV0lQX1pJ
UE5BTUU9bHdpcC0yLjAuMwo+ICtMSUJMV0lQX1pJUE5BTUU9bHdpcC0yLjEuMgo+ICAgTElCTFdJ
UF9VUkw9aHR0cDovL2Rvd25sb2FkLnNhdmFubmFoLm5vbmdudS5vcmcvcmVsZWFzZXMvbHdpcC8k
KExJQkxXSVBfWklQTkFNRSkuemlwCj4gICBMSUJMV0lQX1BBVENIRElSPSQoTElCTFdJUF9CQVNF
KS9wYXRjaGVzCj4gICAkKGV2YWwgJChjYWxsIGZldGNoLGxpYmx3aXAsJChMSUJMV0lQX1VSTCkp
KQo+IEBAIC02MCwzMyArNjEsMjIgQEAgQ0lOQ0xVREVTLSQoQ09ORklHX0xJQkxXSVApICAgKz0g
LUkkKExJQkxXSVBfQkFTRSkvaW5jbHVkZSAtSSQoTElCTFdJUF9FWFRSQUNURUQKPiAgIENYWElO
Q0xVREVTLSQoQ09ORklHX0xJQkxXSVApICs9IC1JJChMSUJMV0lQX0JBU0UpL2luY2x1ZGUgLUkk
KExJQkxXSVBfRVhUUkFDVEVEKS9pbmNsdWRlCj4gICAKPiAgICMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjCj4gLSMgR2xvYmFsIGZsYWdzCj4gKyMgTGlicmFyeSBmbGFncwo+ICAgIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMKPiAtTElCTFdJUF9DRkxBR1MteSArPSAtRENPTkZJR19MV0lQX01JTklNQUwg
LVVMV0lQX1RJTUVWQUxfUFJJVkFURQo+IC0KPiAtIyBTdXBwcmVzcyBzb21lIHdhcm5pbmdzIHRv
IG1ha2UgdGhlIGJ1aWxkIHByb2Nlc3MgbG9vayBuZWF0ZXIKPiAtTElCTFdJUF9TVVBQUkVTU19D
RkxBR1MgKz0gLVduby11bnVzZWQtcGFyYW1ldGVyIC1Xbm8tdW51c2VkLXZhcmlhYmxlIFwKPiAt
LVduby11bnVzZWQtYnV0LXNldC12YXJpYWJsZSAtV25vLXVudXNlZC1sYWJlbCAtV25vLWNoYXIt
c3Vic2NyaXB0cyAgXAo+IC0tV25vLXVudXNlZC1mdW5jdGlvbiAtV25vLW1pc3NpbmctZmllbGQt
aW5pdGlhbGl6ZXJzICAgICAgICAgICAgICAgICBcCj4gLS1Xbm8tdW5pbml0aWFsaXplZCAtV25v
LWFycmF5LWJvdW5kcyAtV25vLW1heWJlLXVuaW5pdGlhbGl6ZWQgICAgICAgIFwKPiAtLVduby1w
b2ludGVyLXNpZ24gLVduby11bnVzZWQtdmFsdWUgLVduby11bnVzZWQtbWFjcm9zICAgICAgICAg
ICAgICAgXAo+IC0tV25vLXBhcmVudGhlc2VzIC1Xbm8taW1wbGljaXQtZnVuY3Rpb24tZGVjbGFy
YXRpb24gICAgICAgICAgICAgICAgICBcCj4gLS1Xbm8tc2hpZnQtbmVnYXRpdmUtdmFsdWUgLVdu
by1taXNzaW5nLWJyYWNlcyAtV25vLWVuZGlmLWxhYmVscyAgICAgIFwKPiAtLVduby11bnVzZWQt
YnV0LXNldC12YXJpYWJsZSAtV25vLWltcGxpY2l0LWZ1bmN0aW9uLWRlY2xhcmF0aW9uICAgICAg
XAo+IC0tV25vLXVudXNlZC1jb25zdC12YXJpYWJsZSAtV25vLXR5cGUtbGltaXRzIC1Xbm8tc2ln
bi1jb21wYXJlCj4gLUxJQkxXSVBfQ0ZMQUdTLXkgKz0gJChMSUJMV0lQX1NVUFBSRVNTX0NGTEFH
UykKPiArTElCTFdJUF9DRkxBR1MteSArPSAtV25vLXR5cGUtbGltaXRzIC1XdW51c2VkLXBhcmFt
ZXRlcgo+ICtMSUJMV0lQX0NGTEFHUy0kKENPTkZJR19MV0lQX0RFQlVHKSArPSAtRFVLX0RFQlVH
Cj4gICAKPiAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCj4gICAjIENvcmUKPiAgICMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjCj4gICBMSUJMV0lQX1NSQ1MteSArPSAkKExJQkxXSVBfQkFTRSkvYWxs
b2MuY3x1bmlrcmFmdAo+IC1MSUJMV0lQX1NSQ1MteSArPSAkKExJQkxXSVBfQkFTRSkvbXV0ZXgu
Y3x1bmlrcmFmdAo+IC1MSUJMV0lQX1NSQ1MteSArPSAkKExJQkxXSVBfQkFTRSkvc2VtYXBob3Jl
LmN8dW5pa3JhZnQKPiAtTElCTFdJUF9TUkNTLXkgKz0gJChMSUJMV0lQX0JBU0UpL21haWxib3gu
Y3x1bmlrcmFmdAo+ICtMSUJMV0lQX1NSQ1MtJChDT05GSUdfTFdJUF9USFJFQURTKSArPSAkKExJ
QkxXSVBfQkFTRSkvbXV0ZXguY3x1bmlrcmFmdAo+ICtMSUJMV0lQX1NSQ1MtJChDT05GSUdfTFdJ
UF9USFJFQURTKSArPSAkKExJQkxXSVBfQkFTRSkvc2VtYXBob3JlLmN8dW5pa3JhZnQKPiArTElC
TFdJUF9TUkNTLSQoQ09ORklHX0xXSVBfVEhSRUFEUykgKz0gJChMSUJMV0lQX0JBU0UpL21haWxi
b3guY3x1bmlrcmFmdAo+ICtMSUJMV0lQX1NSQ1MtJChDT05GSUdfTFdJUF9USFJFQURTKSArPSAk
KExJQkxXSVBfQkFTRSkvdGhyZWFkcy5jfHVuaWtyYWZ0Cj4gICBMSUJMV0lQX1NSQ1MteSArPSAk
KExJQkxXSVBfQkFTRSkvaW5pdC5jfHVuaWtyYWZ0Cj4gLUxJQkxXSVBfU1JDUy15ICs9ICQoTElC
TFdJUF9CQVNFKS90aHJlYWRzLmN8dW5pa3JhZnQKPiAgIExJQkxXSVBfU1JDUy15ICs9ICQoTElC
TFdJUF9CQVNFKS90aW1lLmN8dW5pa3JhZnQKPiAtTElCTFdJUF9TUkNTLXkgKz0gJChMSUJMV0lQ
X0JBU0UpL3NvY2tldF9nbHVlLmN8dW5pa3JhZnQKPiArTElCTFdJUF9TUkNTLSQoQ09ORklHX0xX
SVBfU09DS0VUKSArPSAkKExJQkxXSVBfQkFTRSkvc29ja2V0cy5jfHVuaWtyYWZ0Cj4gICBMSUJM
V0lQX1NSQ1MteSArPSAkKExJQkxXSVBfRVhUUkFDVEVEKS9jb3JlL2luaXQuYwo+ICAgTElCTFdJ
UF9TUkNTLXkgKz0gJChMSUJMV0lQX0VYVFJBQ1RFRCkvY29yZS9kZWYuYwo+ICAgTElCTFdJUF9T
UkNTLXkgKz0gJChMSUJMV0lQX0VYVFJBQ1RFRCkvY29yZS9pbmV0X2Noa3N1bS5jCj4gQEAgLTEx
OCwyMyArMTA4LDIwIEBAIExJQkxXSVBfU1JDUy15ICs9ICQoTElCTFdJUF9FWFRSQUNURUQpL2Fw
aS90Y3BpcC5jCj4gICBMSUJMV0lQX1NSQ1MtJChDT05GSUdfTFdJUF9TT0NLRVQpICs9ICQoTElC
TFdJUF9FWFRSQUNURUQpL2FwaS9zb2NrZXRzLmMKPiAgIAo+ICAgIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMKPiAtIyBORVRJRiBIZWxwZXJzCj4gKyMgTkVUSUZzCj4gICAjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIwo+ICAgTElCTFdJUF9TUkNTLXkgKz0gJChMSUJMV0lQX0VYVFJBQ1RFRCkvbmV0aWYv
ZXRoZXJuZXQuYwo+IC1MSUJMV0lQX1NSQ1MtJChDT05GSUdfTFdJUF9TTElQKSArPSAkKExJQkxX
SVBfRVhUUkFDVEVEKS9uZXRpZi9zbGlwaWYuYwo+IC1MSUJMV0lQX1NSQ1MteSArPSAkKExJQkxX
SVBfRVhUUkFDVEVEKS9uZXRpZi9sb3dwYW42LmMKPiAgIAo+ICAgIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMKPiAgICMgSVB2NAo+ICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKPiAtTElCTFdJUF9T
UkNTLSQoQ09ORklHX0xXSVBfQVVUT0lQKSAgKz0gJChMSUJMV0lQX0VYVFJBQ1RFRCkvY29yZS9p
cHY0L2F1dG9pcC5jCj4gLUxJQkxXSVBfU1JDUy0kKENPTkZJR19MV0lQX0RIQ1ApICAgICs9ICQo
TElCTFdJUF9FWFRSQUNURUQpL2NvcmUvaXB2NC9kaGNwLmMKPiAgIExJQkxXSVBfU1JDUy0kKENP
TkZJR19MV0lQX0lQVjQpICAgICs9ICQoTElCTFdJUF9FWFRSQUNURUQpL2NvcmUvaXB2NC9ldGhh
cnAuYwo+IC1MSUJMV0lQX1NSQ1MtJChDT05GSUdfTFdJUF9JUFY0KSAgICArPSAkKExJQkxXSVBf
RVhUUkFDVEVEKS9jb3JlL2lwdjQvaWNtcC5jCj4gLUxJQkxXSVBfU1JDUy0kKENPTkZJR19MV0lQ
X0lQVjQpICAgICs9ICQoTElCTFdJUF9FWFRSQUNURUQpL2NvcmUvaXB2NC9pZ21wLmMKPiAgIExJ
QkxXSVBfU1JDUy0kKENPTkZJR19MV0lQX0lQVjQpICAgICs9ICQoTElCTFdJUF9FWFRSQUNURUQp
L2NvcmUvaXB2NC9pcDRfZnJhZy5jCj4gICBMSUJMV0lQX1NSQ1MtJChDT05GSUdfTFdJUF9JUFY0
KSAgICArPSAkKExJQkxXSVBfRVhUUkFDVEVEKS9jb3JlL2lwdjQvaXA0LmMKPiAgIExJQkxXSVBf
U1JDUy0kKENPTkZJR19MV0lQX0lQVjQpICAgICs9ICQoTElCTFdJUF9FWFRSQUNURUQpL2NvcmUv
aXB2NC9pcDRfYWRkci5jCj4gK0xJQkxXSVBfU1JDUy0kKENPTkZJR19MV0lQX0lDTVApICAgICs9
ICQoTElCTFdJUF9FWFRSQUNURUQpL2NvcmUvaXB2NC9pY21wLmMKPiArTElCTFdJUF9TUkNTLSQo
Q09ORklHX0xXSVBfSUdNUCkgICAgKz0gJChMSUJMV0lQX0VYVFJBQ1RFRCkvY29yZS9pcHY0L2ln
bXAuYwo+ICtMSUJMV0lQX1NSQ1MtJChDT05GSUdfTFdJUF9ESENQKSAgICArPSAkKExJQkxXSVBf
RVhUUkFDVEVEKS9jb3JlL2lwdjQvZGhjcC5jCj4gICAKPiAgICMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjCj4gICAjIElQdjYKPiBAQCAtMTQ4LDM3ICsxMzUsMyBAQCBMSUJMV0lQX1NSQ1MtJChDT05G
SUdfTFdJUF9JUFY2KSArPSAkKExJQkxXSVBfRVhUUkFDVEVEKS9jb3JlL2lwdjYvaXA2X2FkZHIu
Ywo+ICAgTElCTFdJUF9TUkNTLSQoQ09ORklHX0xXSVBfSVBWNikgKz0gJChMSUJMV0lQX0VYVFJB
Q1RFRCkvY29yZS9pcHY2L2lwNl9mcmFnLmMKPiAgIExJQkxXSVBfU1JDUy0kKENPTkZJR19MV0lQ
X0lQVjYpICs9ICQoTElCTFdJUF9FWFRSQUNURUQpL2NvcmUvaXB2Ni9tbGQ2LmMKPiAgIExJQkxX
SVBfU1JDUy0kKENPTkZJR19MV0lQX0lQVjYpICs9ICQoTElCTFdJUF9FWFRSQUNURUQpL2NvcmUv
aXB2Ni9uZDYuYwo+IC0KPiAtIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKPiAtIyBMd2lwIGNvZGUg
LSBQUFAKPiAtIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKPiAtTElCTFdJUF9TUkNTLSQoQ09ORklH
X0xXSVBfUFBQKSArPSAkKExJQkxXSVBfRVhUUkFDVEVEKS9uZXRpZi9wcHAvYXV0aC5jCj4gLUxJ
QkxXSVBfU1JDUy0kKENPTkZJR19MV0lQX1BQUCkgKz0gJChMSUJMV0lQX0VYVFJBQ1RFRCkvbmV0
aWYvcHBwL2NjcC5jCj4gLUxJQkxXSVBfU1JDUy0kKENPTkZJR19MV0lQX1BQUCkgKz0gJChMSUJM
V0lQX0VYVFJBQ1RFRCkvbmV0aWYvcHBwL2NoYXAtbWQ1LmMKPiAtTElCTFdJUF9TUkNTLSQoQ09O
RklHX0xXSVBfUFBQKSArPSAkKExJQkxXSVBfRVhUUkFDVEVEKS9uZXRpZi9wcHAvY2hhcF9tcy5j
Cj4gLUxJQkxXSVBfU1JDUy0kKENPTkZJR19MV0lQX1BQUCkgKz0gJChMSUJMV0lQX0VYVFJBQ1RF
RCkvbmV0aWYvcHBwL2NoYXAtbmV3LmMKPiAtTElCTFdJUF9TUkNTLSQoQ09ORklHX0xXSVBfUFBQ
KSArPSAkKExJQkxXSVBfRVhUUkFDVEVEKS9uZXRpZi9wcHAvZGVtYW5kLmMKPiAtTElCTFdJUF9T
UkNTLSQoQ09ORklHX0xXSVBfUFBQKSArPSAkKExJQkxXSVBfRVhUUkFDVEVEKS9uZXRpZi9wcHAv
ZWFwLmMKPiAtTElCTFdJUF9TUkNTLSQoQ09ORklHX0xXSVBfUFBQKSArPSAkKExJQkxXSVBfRVhU
UkFDVEVEKS9uZXRpZi9wcHAvZWNwLmMKPiAtTElCTFdJUF9TUkNTLSQoQ09ORklHX0xXSVBfUFBQ
KSArPSAkKExJQkxXSVBfRVhUUkFDVEVEKS9uZXRpZi9wcHAvZXVpNjQuYwo+IC1MSUJMV0lQX1NS
Q1MtJChDT05GSUdfTFdJUF9QUFApICs9ICQoTElCTFdJUF9FWFRSQUNURUQpL25ldGlmL3BwcC9m
c20uYwo+IC1MSUJMV0lQX1NSQ1MtJChDT05GSUdfTFdJUF9QUFApICs9ICQoTElCTFdJUF9FWFRS
QUNURUQpL25ldGlmL3BwcC9pcGNwLmMKPiAtTElCTFdJUF9TUkNTLSQoQ09ORklHX0xXSVBfUFBQ
KSArPSAkKExJQkxXSVBfRVhUUkFDVEVEKS9uZXRpZi9wcHAvaXB2NmNwLmMKPiAtTElCTFdJUF9T
UkNTLSQoQ09ORklHX0xXSVBfUFBQKSArPSAkKExJQkxXSVBfRVhUUkFDVEVEKS9uZXRpZi9wcHAv
bGNwLmMKPiAtTElCTFdJUF9TUkNTLSQoQ09ORklHX0xXSVBfUFBQKSArPSAkKExJQkxXSVBfRVhU
UkFDVEVEKS9uZXRpZi9wcHAvbWFnaWMuYwo+IC1MSUJMV0lQX1NSQ1MtJChDT05GSUdfTFdJUF9Q
UFApICs9ICQoTElCTFdJUF9FWFRSQUNURUQpL25ldGlmL3BwcC9tcHBlLmMKPiAtTElCTFdJUF9T
UkNTLSQoQ09ORklHX0xXSVBfUFBQKSArPSAkKExJQkxXSVBfRVhUUkFDVEVEKS9uZXRpZi9wcHAv
bXVsdGlsaW5rLmMKPiAtTElCTFdJUF9TUkNTLSQoQ09ORklHX0xXSVBfUFBQKSArPSAkKExJQkxX
SVBfRVhUUkFDVEVEKS9uZXRpZi9wcHAvcHBwLmMKPiAtTElCTFdJUF9TUkNTLSQoQ09ORklHX0xX
SVBfUFBQKSArPSAkKExJQkxXSVBfRVhUUkFDVEVEKS9uZXRpZi9wcHAvcHBwYXBpLmMKPiAtTElC
TFdJUF9TUkNTLSQoQ09ORklHX0xXSVBfUFBQKSArPSAkKExJQkxXSVBfRVhUUkFDVEVEKS9uZXRp
Zi9wcHAvcHBwY3J5cHQuYwo+IC1MSUJMV0lQX1NSQ1MtJChDT05GSUdfTFdJUF9QUFApICs9ICQo
TElCTFdJUF9FWFRSQUNURUQpL25ldGlmL3BwcC9wcHBvZS5jCj4gLUxJQkxXSVBfU1JDUy0kKENP
TkZJR19MV0lQX1BQUCkgKz0gJChMSUJMV0lQX0VYVFJBQ1RFRCkvbmV0aWYvcHBwL3BwcG9sMnRw
LmMKPiAtTElCTFdJUF9TUkNTLSQoQ09ORklHX0xXSVBfUFBQKSArPSAkKExJQkxXSVBfRVhUUkFD
VEVEKS9uZXRpZi9wcHAvcHBwb3MuYwo+IC1MSUJMV0lQX1NSQ1MtJChDT05GSUdfTFdJUF9QUFAp
ICs9ICQoTElCTFdJUF9FWFRSQUNURUQpL25ldGlmL3BwcC91cGFwLmMKPiAtTElCTFdJUF9TUkNT
LSQoQ09ORklHX0xXSVBfUFBQKSArPSAkKExJQkxXSVBfRVhUUkFDVEVEKS9uZXRpZi9wcHAvdXRp
bHMuYwo+IC1MSUJMV0lQX1NSQ1MtJChDT05GSUdfTFdJUF9QUFApICs9ICQoTElCTFdJUF9FWFRS
QUNURUQpL25ldGlmL3BwcC92ai5jCj4gLUxJQkxXSVBfU1JDUy0kKENPTkZJR19MV0lQX1BQUCkg
Kz0gJChMSUJMV0lQX0VYVFJBQ1RFRCkvbmV0aWYvcHBwL3BvbGFyc3NsL2FyYzQuYwo+IC1MSUJM
V0lQX1NSQ1MtJChDT05GSUdfTFdJUF9QUFApICs9ICQoTElCTFdJUF9FWFRSQUNURUQpL25ldGlm
L3BwcC9wb2xhcnNzbC9kZXMuYwo+IC1MSUJMV0lQX1NSQ1MtJChDT05GSUdfTFdJUF9QUFApICs9
ICQoTElCTFdJUF9FWFRSQUNURUQpL25ldGlmL3BwcC9wb2xhcnNzbC9tZDQuYwo+IC1MSUJMV0lQ
X1NSQ1MtJChDT05GSUdfTFdJUF9QUFApICs9ICQoTElCTFdJUF9FWFRSQUNURUQpL25ldGlmL3Bw
cC9wb2xhcnNzbC9tZDUuYwo+IC1MSUJMV0lQX1NSQ1MtJChDT05GSUdfTFdJUF9QUFApICs9ICQo
TElCTFdJUF9FWFRSQUNURUQpL25ldGlmL3BwcC9wb2xhcnNzbC9zaGExLmMKPiBkaWZmIC0tZ2l0
IGEvYWxsb2MuYyBiL2FsbG9jLmMKPiBpbmRleCA4NmUwYzZiLi5hNWI0Mzc3IDEwMDY0NAo+IC0t
LSBhL2FsbG9jLmMKPiArKysgYi9hbGxvYy5jCj4gQEAgLTEsMyArMSwzNiBAQAo+ICsvKiBTUERY
LUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCj4gKy8qCj4gKyAqIENvcHlyaWdo
dCAoYykgMjAxOSwgTkVDIExhYm9yYXRvcmllcyBFdXJvcGUgR21iSCwgTkVDIENvcnBvcmF0aW9u
Lgo+ICsgKiAgICAgICAgICAgICAgICAgICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4gKyAqCj4g
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAo+ICsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKPiArICogYXJlIG1ldDoKPiArICoKPiArICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgo+ICsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCj4gKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCj4gKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhl
IGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKPiArICogICAgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KPiArICogICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KPiArICoKPiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCj4gKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKPiArICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKPiArICogQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRQo+
ICsgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCj4gKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCj4gKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwo+
ICsgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgo+ICsgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQo+ICsgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRQo+ICsgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KPiArICoKPiArICogVEhJ
UyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4KPiAr
ICovCj4gKwo+ICAgI2luY2x1ZGUgPHVrL2FsbG9jLmg+Cj4gICAKPiAgIHZvaWQgKnN5c19tYWxs
b2Moc2l6ZV90IHNpemUpCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXJjaC9jYy5oIGIvaW5jbHVk
ZS9hcmNoL2NjLmgKPiBpbmRleCAwOTljNGFjLi5hMWQwYzM0IDEwMDY0NAo+IC0tLSBhL2luY2x1
ZGUvYXJjaC9jYy5oCj4gKysrIGIvaW5jbHVkZS9hcmNoL2NjLmgKPiBAQCAtNjIsMjggKzYyLDI1
IEBACj4gICAjZGVmaW5lIFBBQ0tfU1RSVUNUX0JFR0lOCj4gICAjZGVmaW5lIFBBQ0tfU1RSVUNU
X0VORAo+ICAgCj4gLS8qIHBsYXRmb3JtIHNwZWNpZmljIGRpYWdub3N0aWMgb3V0cHV0ICovCj4g
ICAjZGVmaW5lIExXSVBfUExBVEZPUk1fRElBRyhfeCkgXAo+IC0JZG8gewkJCQkJIFwKPiAtCQlp
ZiAoRExWTF9JTkZPIDw9IERMVkxfTUFYKSB7CSBcCj4gLQkJCV9sd2lwX3BsYXRmb3JtX2RpYWcg
X3g7CSBcCj4gLQkJfQkJCQkgXAo+IC0JfSB3aGlsZSgwKQo+ICsJKHsgdWtfcHJfZGVidWcgX3g7
IH0pCj4gICAKPiAtc3RhdGljIGlubGluZSB2b2lkIF9sd2lwX3BsYXRmb3JtX2RpYWcoY29uc3Qg
Y2hhciAqZm10LCAuLi4pCj4gLXsKPiAtCXZhX2xpc3QgYXA7Cj4gKyNpZiBDT05GSUdfTElCVUtE
RUJVR19FTkFCTEVfQVNTRVJUCj4gKyNkZWZpbmUgTFdJUF9QTEFURk9STV9BU1NFUlQoX3gpIFwK
PiArCWRvIHsgdWtfcHJfY3JpdChfeCk7IFVLX0JVRygpOyB9IHdoaWxlICgwKQo+ICsjZWxzZQo+
ICsjZGVmaW5lIExXSVBfUExBVEZPUk1fQVNTRVJUKF94KSBcCj4gKwlkbyB7IH0gd2hpbGUgKDAp
Cj4gKyNlbmRpZiAvKiBDT05GSUdfTElCVUtERUJVR19FTkFCTEVfQVNTRVJUICovCj4gICAKPiAt
CXZhX3N0YXJ0KGFwLCBmbXQpOwo+IC0JdWtfdnByaW50ZChETFZMX0lORk8sIGZtdCwgYXApOwo+
IC0JdmFfZW5kKGFwKTsKPiAtfQo+ICsvKiBsaWdodHdlaWdodCBzeW5jaHJvbml6YXRpb24gbWVj
aGFuaXNtcyAqLwo+ICsjZGVmaW5lIFNZU19BUkNIX0RFQ0xfUFJPVEVDVChfeCkgXAo+ICsJdW5z
aWduZWQgbG9uZyAoX3gpCj4gICAKPiAtI2RlZmluZSBMV0lQX1BMQVRGT1JNX0FTU0VSVChfeCkg
VUtfQVNTRVJUKChfeCkpCj4gKyNkZWZpbmUgU1lTX0FSQ0hfUFJPVEVDVChfeCkgXAo+ICsJKHsg
KF94KSA9IHVrcGxhdF9sY3B1X3NhdmVfaXJxZigpOyB9KQo+ICAgCj4gLS8qIGxpZ2h0d2VpZ2h0
IHN5bmNocm9uaXphdGlvbiBtZWNoYW5pc21zICovCj4gLSNkZWZpbmUgU1lTX0FSQ0hfREVDTF9Q
Uk9URUNUKF94KSAgdW5zaWduZWQgbG9uZyAoX3gpCj4gLSNkZWZpbmUgU1lTX0FSQ0hfUFJPVEVD
VChfeCkgICAgICAgZG8geyAoX3gpID0gdWtwbGF0X2xjcHVfc2F2ZV9pcnFmKCk7IH0gd2hpbGUo
MCkKPiAtI2RlZmluZSBTWVNfQVJDSF9VTlBST1RFQ1QoX3gpICAgICB1a3BsYXRfbGNwdV9yZXN0
b3JlX2lycWYoKF94KSkKPiArI2RlZmluZSBTWVNfQVJDSF9VTlBST1RFQ1QoX3gpIFwKPiArCXVr
cGxhdF9sY3B1X3Jlc3RvcmVfaXJxZigoX3gpKQo+ICAgCj4gICAjZW5kaWYgLyogX19MV0lQX0FS
Q0hfQ0NfSF9fICovCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXJjaC9zeXNfYXJjaC5oIGIvaW5j
bHVkZS9hcmNoL3N5c19hcmNoLmgKPiBpbmRleCAzYjFmYmVmLi42MjUxMGVlIDEwMDY0NAo+IC0t
LSBhL2luY2x1ZGUvYXJjaC9zeXNfYXJjaC5oCj4gKysrIGIvaW5jbHVkZS9hcmNoL3N5c19hcmNo
LmgKPiBAQCAtMSwzICsxLDM1IEBACj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0Qt
My1DbGF1c2UgKi8KPiArLyoKPiArICogQ29weXJpZ2h0IChjKSAyMDE5LCBORUMgTGFib3JhdG9y
aWVzIEV1cm9wZSBHbWJILCBORUMgQ29ycG9yYXRpb24uCj4gKyAqICAgICAgICAgICAgICAgICAg
ICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiArICoKPiArICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cj4gKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwo+ICsgKiBhcmUgbWV0Ogo+ICsgKgo+ICsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCj4g
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKPiArICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
PiArICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhl
IG5hbWVzIG9mIGl0cwo+ICsgKiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQo+ICsgKiAgICB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgo+ICsgKgo+ICsgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTICJBUyBJUyIKPiArICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQo+ICsgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRQo+ICsgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFCj4gKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKPiArICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKPiArICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCj4gKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCj4gKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCj4gKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCj4gKyAqIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgo+ICsgKgo+ICsgKiBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJB
Q1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgo+ICsgKi8KPiAgIC8qCj4gICAgKiBsd2lwL2Fy
Y2gvc3lzX2FyY2guaAo+ICAgICoKPiBAQCAtMTYsOSArNDgsMTAgQEAKPiAgICNpbmNsdWRlIDx1
ay9tdXRleC5oPgo+ICAgI2luY2x1ZGUgPHVrL3NlbWFwaG9yZS5oPgo+ICAgI2luY2x1ZGUgPHVr
L21ib3guaD4KPiAtI2lmIENPTkZJR19MSUJVS1NDSEVECj4gKwo+ICsjaWYgQ09ORklHX0xXSVBf
VEhSRUFEUwo+ICAgI2luY2x1ZGUgPHVrL3RocmVhZC5oPgo+IC0jZW5kaWYgLyogQ09ORklHX0xJ
QlVLU0NIRUQgKi8KPiArI2VuZGlmIC8qIENPTkZJR19MV0lQX1RIUkVBRFMgKi8KPiAgIAo+ICAg
I2lmIENPTkZJR19MV0lQX1NPQ0tFVCAmJiBDT05GSUdfSEFWRV9MSUJDCj4gICAjaW5jbHVkZSA8
ZmNudGwuaD4KPiBAQCAtNDQsOSArNzcsOSBAQCB0eXBlZGVmIHN0cnVjdCB7Cj4gICAJaW50IHZh
bGlkOwo+ICAgfSBzeXNfbWJveF90Owo+ICAgCj4gLSNpZiBDT05GSUdfTElCVUtTQ0hFRAo+ICsj
aWYgQ09ORklHX0xXSVBfVEhSRUFEUwo+ICAgdHlwZWRlZiBzdHJ1Y3QgdWtfdGhyZWFkICpzeXNf
dGhyZWFkX3Q7Cj4gLSNlbmRpZiAvKiBDT05GSUdfTElCVUtTQ0hFRCAqLwo+ICsjZW5kaWYgLyog
Q09ORklHX0xXSVBfVEhSRUFEUyAqLwo+ICAgCj4gICB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgc3lz
X3Byb3RfdDsKPiAgIAo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2FycGEvaW5ldC5oIGIvaW5jbHVk
ZS9hcnBhL2luZXQuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uYzJm
YzZjMwo+IC0tLSAvZGV2L251bGwKPiArKysgYi9pbmNsdWRlL2FycGEvaW5ldC5oCj4gQEAgLTAs
MCArMSBAQAo+ICsjaW5jbHVkZSA8Y29tcGF0L3Bvc2l4L2FycGEvaW5ldC5oPgo+IGRpZmYgLS1n
aXQgYS9pbmNsdWRlL2x3aXBvcHRzLmggYi9pbmNsdWRlL2x3aXBvcHRzLmgKPiBpbmRleCBjNmNj
MGJjLi43NDliMmE5IDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvbHdpcG9wdHMuaAo+ICsrKyBiL2lu
Y2x1ZGUvbHdpcG9wdHMuaAo+IEBAIC00LDI0ICs0LDIwIEBACj4gICAgKiBDb25maWd1cmF0aW9u
IGZvciBsd0lQIHJ1bm5pbmcgb24gbWluaS1vcwo+ICAgICoKPiAgICAqIFRpbSBEZWVnYW4gPFRp
bS5EZWVnYW5AZXUuY2l0cml4Lm5ldD4sIEp1bHkgMjAwNwo+IC0gKiBTaW1vbiBLdWVuemVyIDxz
aW1vbi5rdWVuemVyQG5lY2xhYi5ldT4sIE9jdG9iZXIgMjAxMwo+ICsgKiBTaW1vbiBLdWVuemVy
IDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4sIDIwMTMtMjAxOQo+ICAgICovCj4gICAjaWZuZGVm
IF9fTFdJUF9MV0lQT1BUU19IX18KPiAgICNkZWZpbmUgX19MV0lQX0xXSVBPUFRTX0hfXwo+ICAg
Cj4gICAjaW5jbHVkZSA8aW50dHlwZXMuaD4KPiArI2luY2x1ZGUgPHN5cy90aW1lLmg+Cj4gICAj
aW5jbHVkZSA8dWsvY29uZmlnLmg+Cj4gICAKPiAtI2RlZmluZSBTT19SRVVTRSAxCj4gLQo+IC0v
Kgo+IC0gKiBHZW5lcmFsIG9wdGlvbnMvU3lzdGVtIHNldHRpbmdzCj4gKy8qKgo+ICsgKiBNZW1v
cnkgbW9kZQo+ICAgICovCj4gLS8qIGxpZ2h0d2VpZ2h0IHByb3RlY3Rpb24gKi8KPiAtI2RlZmlu
ZSBTWVNfTElHSFRXRUlHSFRfUFJPVCAxCj4gLQo+ICAgLyogcHJvdmlkZSBtYWxsb2MvZnJlZSBi
eSBVbmlrcmFmdCAqLwo+IC0jaWYgQ09ORklHX0xXSVBfSEVBUCAvKiBkZWZhdWx0ICovCj4gKyNp
ZiBDT05GSUdfTFdJUF9IRUFQCj4gICAgIC8qIE9ubHkgdXNlIG1hbGxvYy9mcmVlIGZvciBsd0lQ
Lgo+ICAgICAgKiBFdmVyeSBhbGxvY2F0aW9uIGlzIGRvbmUgYnkgdGhlIGhlYXAuCj4gICAgICAq
IE5vdGU6IFRoaXMgc2V0dGluZyByZXN1bHRzIGluIHRoZSBzbWFsbGVzdCBiaW5hcnkKPiBAQCAt
MjksMTAgKzI1LDkgQEAKPiAgICAgICogICAgICAgbmV0d29yayBwcm9jZXNzaW5nLgo+ICAgICAg
Ki8KPiAgICAgI2RlZmluZSBNRU1fTElCQ19NQUxMT0MgMSAvKiBlbmFibGUgaGVhcCAqLwo+IC0g
ICNkZWZpbmUgTUVNUF9NRU1fTUFMTE9DIDEgLyogcG9vbCBhbGxvY2F0aW9ucyB2aWEgbWFsbG9j
ICh0aHVzIG5vdCBmcm9tIHBvb2wgaW4gZGF0YSBzZWdtZW50KSAqLwo+ICsgICNkZWZpbmUgTUVN
UF9NRU1fTUFMTE9DIDEgLyogcG9vbCBhbGxvY2F0aW9ucyB2aWEgbWFsbG9jICovCj4gICAjZWxp
ZiBDT05GSUdfTFdJUF9QT09MUwo+IC0gIC8qIFRoaXMgaXMgdGhlIGRlZmF1bHQgY29uZmlndXJh
dGlvbiAobWl4ZWQpLgo+IC0gICAqIFBvb2xzIGFyZSB1c2VkIGZvciBwb29sIGFsbG9jYXRpb25z
IGFuZCB0aGUgaGVhcAo+ICsgIC8qIFBvb2xzIGFyZSB1c2VkIGZvciBwb29sIGFsbG9jYXRpb25z
IGFuZCB0aGUgaGVhcAo+ICAgICAgKiBpcyB1c2VkIGZvciBhbGwgdGhlIHJlc3Qgb2YgYWxsb2Nh
dGlvbnMuCj4gICAgICAqIE5vdGU6IFBlciBkZXNpZ24sIGx3SVAgYWxsb2NhdGVzIG91dGdvaW5n
IHBhY2tldCBidWZmZXJzCj4gICAgICAqICAgICAgIGZyb20gaGVhcCAodmlhIFBCVUZfUkFNKSBh
bmQgaW5jb21pbmcgZnJvbSBwb29scyAodmlhIFBCVUZfUE9PTCkKPiBAQCAtNDYsMTUgKzQxLDEw
IEBACj4gICAgI2Vycm9yIENvbmZpZ3VyYXRpb24gZXJyb3IhCj4gICAjZW5kaWYgLyogQ09ORklH
X0xXSVBfSEVBUF9PTkxZIC8gQ09ORklHX0xXSVBfUE9PTFNfT05MWSAqLwo+ICAgCj4gLSNkZWZp
bmUgTUVNUF9TRVBBUkFURV9QT09MUyAxIC8qIGZvciBlYWNoIHBvb2wgdXNlIGEgc2VwYXJhdGUg
YXJyYXkgaW4gZGF0YSBzZWdtZW50ICovCj4gLQo+IC0vLyNpZmRlZiBDT05GSUdfTFdJUF9QT09M
U19PTl9IRUFQIC8qIG5vdCBzdXBwb3J0ZWQgeWV0ICovCj4gLS8vI2RlZmluZSBNRU1QX1BPT0xT
X09OX0hFQVAgMSAvKiBhbGxvY2F0ZSBwb29scyBvbiBzeXN0ZW0ncyBoZWFwICovCj4gLS8vI2Vu
ZGlmCj4gLQo+IC0jZGVmaW5lIE1FTV9BTElHTk1FTlQgNAo+IC0KPiAgICNpZiBNRU1fTElCQ19N
QUxMT0MKPiArLyoKPiArICogYWxsb2MuYyBiaW5kaW5nIHRvIHRoZSBzdGFjawo+ICsgKi8KPiAg
ICNpbmNsdWRlIDxzdGRkZWYuaD4gLyogc2l6ZV90ICovCj4gICB2b2lkICpzeXNfbWFsbG9jKHNp
emVfdCBzaXplKTsKPiAgIHZvaWQgKnN5c19jYWxsb2MoaW50IG51bSwgc2l6ZV90IHNpemUpOwo+
IEBAIC02Niw1NiArNTYsOTIgQEAgdm9pZCBzeXNfZnJlZSh2b2lkICpwdHIpOwo+ICAgI2VuZGlm
IC8qIE1FTV9MSUJDX01BTExPQyAqLwo+ICAgCj4gICAjaWYgTUVNX1VTRV9QT09MUwo+IC0vKiBy
ZXF1aXJlcyBsd2lwcG9vbHMuaCAqLwo+IC0jZGVmaW5lIE1FTVBfVVNFX0NVU1RPTV9QT09MUyAw
Cj4gLSNlbmRpZiAvKiBNRU1fVVNFX1BPT0xTICovCj4gLQo+ICAgLyoKPiAtICogTW9zdCBmZWF0
dXJlcyBhcmUgc2VsZWN0ZWQgYnkgdWsvY29uZmlnLmgKPiArICogVXNlIGx3SVAncyBwb29scwo+
ICAgICovCj4gLSNkZWZpbmUgTFdJUF9ORVRJRl9SRU1PVkVfQ0FMTEJBQ0sgMQo+IC0jZGVmaW5l
IExXSVBfVElNRVZBTF9QUklWQVRFIDAKPiAtCj4gLS8qIGRpc2FibGUgQlNELXN0eWxlIHNvY2tl
dCAtIGxheWVyIGlzIHByb3ZpZGVkIGJ5IGxpYmMgKi8KPiAtI2RlZmluZSBMV0lQX0NPTVBBVF9T
T0NLRVRTIDAKPiArI2RlZmluZSBNRU1QX1VTRV9DVVNUT01fUE9PTFMgMAo+ICsvKiBmb3IgZWFj
aCBwb29sIHVzZSBhIHNlcGFyYXRlIGFycmF5IGluIGRhdGEgc2VnbWVudCAqLwo+ICsjZGVmaW5l
IE1FTVBfU0VQQVJBVEVfUE9PTFMgMQo+ICsjZW5kaWYgLyogTUVNX1VTRV9QT09MUyAqLwo+ICAg
Cj4gLS8qCj4gLSAqIFRocmVhZCBvcHRpb25zCj4gKy8qKgo+ICsgKiBPcGVyYXRpb24gbW9kZSAo
dGhyZWFkZWQsIG1haW5sb29wKQo+ICAgICovCj4gLSNpZm5kZWYgQ09ORklHX0xXSVBfTk9USFJF
QURTCj4gKyNpZiBDT05GSUdfTFdJUF9OT1RIUkVBRFMKPiArI2RlZmluZSBOT19TWVMgMQo+ICsj
ZWxzZSAgLyogQ09ORklHX0xXSVBfTk9USFJFQURTICovCj4gKyNkZWZpbmUgTk9fU1lTIDAKPiAr
LyogbGlnaHR3ZWlnaHQgcHJvdGVjdGlvbiAqLwo+ICsjZGVmaW5lIFNZU19MSUdIVFdFSUdIVF9Q
Uk9UIDEKPiAgICNkZWZpbmUgVENQSVBfVEhSRUFEX05BTUUgImx3aXAiCj4gICAjZGVmaW5lIFRD
UElQX01CT1hfU0laRSAyNTYKPiAtI2RlZmluZSBNRU1QX05VTV9UQ1BJUF9NU0dfSU5QS1QgMjU2
Cj4gICAjZW5kaWYgLyogQ09ORklHX0xXSVBfTk9USFJFQURTICovCj4gICAKPiAtLyoKPiArLyoq
Cj4gKyAqIFBidWYgb3B0aW9ucwo+ICsgKi8KPiArI2RlZmluZSBMV0lQX1NVUFBPUlRfQ1VTVE9N
X1BCVUYgMQo+ICsKPiArLyoqCj4gKyAqIE5ldGlmIG9wdGlvbnMKPiArICovCj4gKyNkZWZpbmUg
TFdJUF9ORVRJRl9SRU1PVkVfQ0FMTEJBQ0sgMQo+ICsjZGVmaW5lIExXSVBfVElNRVZBTF9QUklW
QVRFIDAKPiArI2RlZmluZSBMV0lQX05FVElGX1NUQVRVU19DQUxMQkFDSyAxCj4gKwo+ICsvKioK
PiAgICAqIEFSUCBvcHRpb25zCj4gICAgKi8KPiAgICNkZWZpbmUgTUVNUF9OVU1fQVJQX1FVRVVF
IDI1Ngo+ICAgI2RlZmluZSBFVEhBUlBfU1VQUE9SVF9TVEFUSUNfRU5UUklFUyAxCj4gICAKPiAt
LyoKPiArLyoqCj4gKyAqIElQIG9wdGlvbnMKPiArICovCj4gKyNpZiBDT05GSUdfTFdJUF9JUFY0
Cj4gKyNkZWZpbmUgTFdJUF9JUFY0IDEKPiArI2Vsc2UKPiArI2RlZmluZSBMV0lQX0lQVjQgMAo+
ICsjZW5kaWYKPiArCj4gKyNpZiBDT05GSUdfTFdJUF9JUFY2Cj4gKyNkZWZpbmUgTFdJUF9JUFY2
IDEKPiArI2RlZmluZSBJUFY2X0ZSQUdfQ09QWUhFQURFUiAxCj4gKwo+ICsjZWxzZQo+ICsjZGVm
aW5lIExXSVBfSVBWNiAwCj4gKyNlbmRpZgo+ICsKPiArI2lmICgoIUxXSVBfSVBWNCkgJiYgKCFM
V0lQX0lQVjYpKQo+ICsjZXJyb3IgTm8gSVAgcHJvdG9jb2wgd2FzIHNlbGVjdGVkISBQbGVhc2Ug
Y2hvb3NlIGF0IGxlYXN0IG9uZSBvZiBMV0lQX0lQVjQgYW5kIExXSVBfSVBWNgo+ICsjZW5kaWYK
PiArCj4gKy8qKgo+ICAgICogVURQIG9wdGlvbnMKPiAgICAqLwo+IC0vLyNkZWZpbmUgTUVNUF9O
VU1fVURQX1BDQiAxNgo+ICsjaWYgQ09ORklHX0xXSVBfVURQCj4gKyNkZWZpbmUgTFdJUF9VRFAg
MQo+ICsjZWxzZQo+ICsjZGVmaW5lIExXSVBfVURQIDAKPiArI2VuZGlmCj4gICAKPiAtLyoKPiAr
LyoqCj4gICAgKiBUQ1Agb3B0aW9ucwo+ICAgICovCj4gLSNkZWZpbmUgVENQX01TUyBDT05GSUdf
TFdJUF9UQ1BfTVNTCj4gLQo+ICsjaWYgQ09ORklHX0xXSVBfVENQCj4gKyNkZWZpbmUgTFdJUF9U
Q1AgMQo+ICsjZWxzZQo+ICsjZGVmaW5lIExXSVBfVENQIDAKPiArI2VuZGlmCj4gICAKPiArI2lm
IExXSVBfVENQCj4gKyNkZWZpbmUgVENQX01TUyBDT05GSUdfTFdJUF9UQ1BfTVNTCj4gICAjZGVm
aW5lIFRDUF9DQUxDVUxBVEVfRUZGX1NFTkRfTVNTIDEKPiAgICNkZWZpbmUgSVBfRlJBRyAwCj4g
ICAKPiAtCj4gLQo+ICAgI2lmIENPTkZJR19MV0lQX1dORF9TQ0FMRQo+ICAgLyoKPiAgICAqIE1h
eGltdW0gd2luZG93IGFuZCBzY2FsaW5nIGZhY3Rvcgo+IC0gKiBPcHRpbWFsIHNldHRpbmdzIGZv
ciBSWCBwZXJmb3JtYW5jZSBhcmU6Cj4gLSAqIAlUQ1BfV05ECQkyNjIxNDMKPiAtICogCVRDUF9S
Q1ZfU0NBTEUJNQo+ICAgICovCj4gICAjZGVmaW5lIExXSVBfV05EX1NDQUxFICAxCj4gICAjaWYg
ZGVmaW5lZCBDT05GSUdfTFdJUF9XTkRfU0NBTEVfRkFDVE9SICYmIENPTkZJR19MV0lQX1dORF9T
Q0FMRV9GQUNUT1IgPj0gMQo+IEBAIC0xMjgsMTEgKzE1NCwxMiBAQCB2b2lkIHN5c19mcmVlKHZv
aWQgKnB0cik7Cj4gICAKPiAgICNlbHNlIC8qIENPTkZJR19MV0lQX1dORF9TQ0FMRSAqLwo+ICAg
LyoKPiAtICogT3B0aW9ucyB3aGVuIG5vIHdpbmRvdyBzY2FsaW5nICBpcyBlbmFibGVkCj4gKyAq
IE9wdGlvbnMgd2hlbiBubyB3aW5kb3cgc2NhbGluZyBpcyBlbmFibGVkCj4gICAgKi8KPiArI2Rl
ZmluZSBMV0lQX1dORF9TQ0FMRSAwCj4gICAjZGVmaW5lIFRDUF9XTkQgMzI3NjYgLyogSWRlYWxs
eSwgVENQX1dORCBzaG91bGQgYmUgbGluayBiYW5kd2lkdGggbXVsdGlwbGllZCBieSBydHQgKi8K
PiAgICNkZWZpbmUgVENQX1NORF9CVUYgKFRDUF9XTkQgKyAoMiAqIFRDUF9NU1MpKQo+IC0jZW5k
aWYgLyogTFdJUF9XTkRfU0NBTEUgKi8KPiArI2VuZGlmIC8qIENPTkZJR19MV0lQX1dORF9TQ0FM
RSAqLwo+ICAgCj4gICAjZGVmaW5lIFRDUF9TTkRMT1dBVCAoNCAqIFRDUF9NU1MpCj4gICAjZGVm
aW5lIFRDUF9TTkRfUVVFVUVMRU4gKDIgKiAoVENQX1NORF9CVUYpIC8gKFRDUF9NU1MpKQo+IEBA
IC0xNDIsNzAgKzE2OSwxNTIgQEAgdm9pZCBzeXNfZnJlZSh2b2lkICpwdHIpOwo+ICAgCj4gICAj
ZGVmaW5lIE1FTVBfTlVNX1RDUF9QQ0IgQ09ORklHX0xXSVBfTlVNX1RDUENPTiAvKiBtYXggbnVt
IG9mIHNpbS4gVENQIGNvbm5lY3Rpb25zICovCj4gICAjZGVmaW5lIE1FTVBfTlVNX1RDUF9QQ0Jf
TElTVEVOIDMyIC8qIG1heCBudW0gb2Ygc2ltLiBUQ1AgbGlzdGVuZXJzICovCj4gKyNlbmRpZiAv
KiBMV0lQX1RDUCAqLwo+ICsKPiArLyoqCj4gKyAqIFNvY2tldCBvcHRpb25zCj4gKyAqLwo+ICsj
aWYgQ09ORklHX0xXSVBfU09DS0VUCj4gKyNkZWZpbmUgTFdJUF9TT0NLRVQgMQo+ICsjZWxzZQo+
ICsjZGVmaW5lIExXSVBfU09DS0VUIDAKPiArI2VuZGlmCj4gKwo+ICsjaWYgTFdJUF9TT0NLRVQK
PiArLyogU3RvcCBsd2lwIHRvIHByb3ZpZGUgZmRfc2V0ICovCj4gKyNpbmNsdWRlIDxzeXMvc2Vs
ZWN0Lmg+Cj4gKwo+ICsjaWZuZGVmIEZEX1NFVAo+ICsjZGVmaW5lIEZEX1NFVAo+ICsjZW5kaWYK
PiAgIAo+ICAgLyoKPiArICogZGlzYWJsZSBCU0Qtc3R5bGUgc29ja2V0IGludGVyZmFjZQo+ICsg
KiBXZSB3aWxsIHByb3ZpZGUgdGhlIGxheWVyIHdpdGggc29ja2V0LmN8dW5pa3JhZnQKPiArICov
Cj4gKyNkZWZpbmUgTFdJUF9DT01QQVRfU09DS0VUUyAwCj4gKwo+ICsvKiBlbmFibGUgU09fUkVV
U0VBRERSIG9wdGlvbiAqLwo+ICsjZGVmaW5lIFNPX1JFVVNFIDEKPiArI2VuZGlmIC8qIExXSVBf
U09DS0VUICovCj4gKwo+ICsvKioKPiAgICAqIEROUyBvcHRpb25zCj4gICAgKi8KPiArI2lmIENP
TkZJR19MV0lQX0ROUwo+ICsjZGVmaW5lIExXSVBfRE5TIDEKPiArI2Vsc2UKPiArI2RlZmluZSBM
V0lQX0ROUyAwCj4gKyNlbmRpZgo+ICsKPiArI2lmIExXSVBfRE5TCj4gICAjZGVmaW5lIEROU19N
QVhfU0VSVkVSUyBDT05GSUdfTFdJUF9ETlNfTUFYX1NFUlZFUlMKPiAgICNkZWZpbmUgRE5TX1RB
QkxFX1NJWkUgQ09ORklHX0xXSVBfRE5TX1RBQkxFX1NJWkUKPiAgICNkZWZpbmUgRE5TX0xPQ0FM
X0hPU1RfTElTVCAxCj4gICAjZGVmaW5lIEROU19MT0NBTF9IT1NUTElTVF9JU19EWU5BTUlDIDEK
PiArI2VuZGlmIC8qIExXSVBfRE5TICovCj4gICAKPiArLyoqCj4gKyAqIE1lbW9yeSBwb29sIHNp
emVzCj4gKyAqLwo+ICsjaWYgTUVNX1VTRV9QT09MUwo+ICAgLyoKPiAtICogUG9vbCBvcHRpb25z
Cj4gKyAqIFdlIGRpbWVuc2lvbiBwb29sIHNpemVzIG9uIHByZXZpb3VzIHN0YWNrIGNvbmZpZ3Vy
YXRpb25zIHNvIHdlIGhhdmUgdG8gZG8KPiArICogdGhpcyBhdCB0aGUgdmVyeSBsYXN0IHBvaW50
IGluIHRoaXMgY29uZmlndXJhdGlvbiBmaWxlLgo+ICAgICovCj4gLS8qIFBCVUYgcG9vbHMgKi8K
PiAgICNpZm5kZWYgUEJVRl9QT09MX1NJWkUKPiAgICNkZWZpbmUgUEJVRl9QT09MX1NJWkUgKChU
Q1BfV05EICsgVENQX01TUyAtIDEpIC8gVENQX01TUykKPiAgICNlbmRpZgo+IC0jaWZuZGVmIENP
TkZJR19ORVRGUk9OVF9QRVJTSVNURU5UX0dSQU5UUwo+IC0jZGVmaW5lIExXSVBfU1VQUE9SVF9D
VVNUT01fUEJVRiAxCj4gLSNlbmRpZgo+ICAgI2lmbmRlZiBNRU1QX05VTV9QQlVGCj4gICAjZGVm
aW5lIE1FTVBfTlVNX1BCVUYgKChNRU1QX05VTV9UQ1BfUENCICogKFRDUF9TTkRfUVVFVUVMRU4p
KSAvIDIpCj4gICAjZW5kaWYKPiArI2RlZmluZSBNRU1QX05VTV9UQ1BJUF9NU0dfSU5QS1QgVENQ
SVBfTUJPWF9TSVpFCj4gKyNlbmRpZiAvKiBNRU1fVVNFX1BPT0xTICovCj4gICAKPiAtLyoKPiAr
LyoqCj4gKyAqIEFkZGl0aW9uYWwgZmVhdHVyZXMKPiArICovCj4gKyNpZiBDT05GSUdfTFdJUF9J
Q01QCj4gKyNkZWZpbmUgTFdJUF9JQ01QIDEKPiArI2Vsc2UKPiArI2RlZmluZSBMV0lQX0lDTVAg
MAo+ICsjZW5kaWYKPiArCj4gKyNpZiBDT05GSUdfTFdJUF9JR01QCj4gKyNkZWZpbmUgTFdJUF9J
R01QIDEKPiArI2Vsc2UKPiArI2RlZmluZSBMV0lQX0lHTVAgMAo+ICsjZW5kaWYKPiArCj4gKyNp
ZiBDT05GSUdfTFdJUF9TTk1QCj4gKyNkZWZpbmUgTFdJUF9TTk1QIDEKPiArI2Vsc2UKPiArI2Rl
ZmluZSBMV0lQX1NOTVAgMAo+ICsjZW5kaWYKPiArCj4gKyNpZiBDT05GSUdfTFdJUF9ESENQCj4g
KyNkZWZpbmUgTFdJUF9ESENQIDEKPiArI2Vsc2UKPiArI2RlZmluZSBMV0lQX0RIQ1AgMAo+ICsj
ZW5kaWYKPiArCj4gKyNpZiBDT05GSUdfTFdJUF9OT1RIUkVBRFMKPiArI2RlZmluZSBMV0lQX05F
VENPTk4gMAo+ICsjZWxzZQo+ICsjZGVmaW5lIExXSVBfTkVUQ09OTiAxCj4gKyNlbmRpZgo+ICsK
PiArLyoqCj4gICAgKiBDaGVja3N1bSBvcHRpb25zCj4gICAgKi8KPiAtI2RlZmluZSBDSEVDS1NV
TV9HRU5fSVAgQ09ORklHX0xXSVBfVFhDSEVDS1NVTQo+IC0jZGVmaW5lIENIRUNLU1VNX0dFTl9J
UDYgQ09ORklHX0xXSVBfVFhDSEVDS1NVTQo+IC0jZGVmaW5lIENIRUNLU1VNX0dFTl9JQ01QIENP
TkZJR19MV0lQX1RYQ0hFQ0tTVU0KPiAtI2RlZmluZSBDSEVDS1NVTV9HRU5fSUNNUDYgQ09ORklH
X0xXSVBfVFhDSEVDS1NVTQo+IC0jZGVmaW5lIENIRUNLU1VNX0dFTl9VRFAgQ09ORklHX0xXSVBf
VFhDSEVDS1NVTQo+IC0jZGVmaW5lIENIRUNLU1VNX0dFTl9UQ1AgQ09ORklHX0xXSVBfVFhDSEVD
S1NVTQo+IC0jZGVmaW5lIExXSVBfQ0hFQ0tTVU1fT05fQ09QWSAxCj4gLQo+IC0vKiBDaGVja3N1
bSBjaGVja2luZyBpcyBvZmZsb2FkZWQgdG8gdGhlIGhvc3QgKGx3aXAtbmV0IGlzIGEgdmlydHVh
bCBpbnRlcmZhY2UpCj4gLSAqIFRPRE86IGJldHRlciBzb2x1dGlvbiBpcyB3aGVuIG5ldGZyb250
IGZvcndhcmRzIGNoZWNrc3VtIGZsYWdzIHRvIGx3SVAgKi8KPiAtI2RlZmluZSBDSEVDS1NVTV9D
SEVDS19JUCBDT05GSUdfTFdJUF9SWENIRUNLU1VNCj4gLSNkZWZpbmUgQ0hFQ0tTVU1fQ0hFQ0tf
VURQIENPTkZJR19MV0lQX1JYQ0hFQ0tTVU0KPiAtI2RlZmluZSBDSEVDS1NVTV9DSEVDS19UQ1Ag
Q09ORklHX0xXSVBfUlhDSEVDS1NVTQo+IC0jZGVmaW5lIENIRUNLU1VNX0NIRUNLX0lDTVAgQ09O
RklHX0xXSVBfUlhDSEVDS1NVTQo+IC0jZGVmaW5lIENIRUNLU1VNX0NIRUNLX0lDTVA2IENPTkZJ
R19MV0lQX1JYQ0hFQ0tTVU0KPiAtI2RlZmluZSBDSEVDS1NVTV9DSEVDS19UQ1AgQ09ORklHX0xX
SVBfUlhDSEVDS1NVTQo+IC0KPiAtI2lmZGVmIENPTkZJR19MV0lQX01BSU5MT09QX0RFQlVHCj4g
LSNkZWZpbmUgSVBfREVCVUcgICAgICAgICBMV0lQX0RCR19PTgo+ICsvKgo+ICsgKiBXZSBlbmFi
bGUgdGhlIG9wdGlvbiB0aGF0IGVhY2ggbmV0aWYgY2FuIGVuYWJsZSBhbmQgZGlzYWJsZQo+ICsg
KiBpbmRpdmlkdWFsbHkgd2hpY2ggY2hlY2tzdW1zIHNob3VsZCBiZSBjaGVja2VkL2NhbGN1bGF0
ZWQgYnkgdGhlIHN0YWNrCj4gKyAqLwo+ICsjZGVmaW5lIExXSVBfQ0hFQ0tTVU1fQ1RSTF9QRVJf
TkVUSUYgMQo+ICsKPiArI2RlZmluZSBDSEVDS1NVTV9HRU5fSVAgICAgICAxCj4gKyNkZWZpbmUg
Q0hFQ0tTVU1fR0VOX0lQNiAgICAgMQo+ICsjZGVmaW5lIENIRUNLU1VNX0dFTl9JQ01QICAgIDEK
PiArI2RlZmluZSBDSEVDS1NVTV9HRU5fSUNNUDYgICAxCj4gKyNkZWZpbmUgQ0hFQ0tTVU1fR0VO
X1VEUCAgICAgMQo+ICsjZGVmaW5lIENIRUNLU1VNX0dFTl9UQ1AgICAgIDEKPiArI2RlZmluZSBD
SEVDS1NVTV9DSEVDS19JUCAgICAxCj4gKyNkZWZpbmUgQ0hFQ0tTVU1fQ0hFQ0tfVURQICAgMQo+
ICsjZGVmaW5lIENIRUNLU1VNX0NIRUNLX1RDUCAgIDEKPiArI2RlZmluZSBDSEVDS1NVTV9DSEVD
S19JQ01QICAxCj4gKyNkZWZpbmUgQ0hFQ0tTVU1fQ0hFQ0tfSUNNUDYgMQo+ICsjZGVmaW5lIENI
RUNLU1VNX0NIRUNLX1RDUCAgIDEKPiArCj4gKy8qKgo+ICsgKiBEZWJ1Z2dpbmcgb3B0aW9ucwo+
ICsgKi8KPiArI2lmIENPTkZJR19MV0lQX0RFQlVHCj4gKyNkZWZpbmUgTFdJUF9ERUJVRwo+ICsj
ZGVmaW5lIExXSVBfREJHX01JTl9MRVZFTCAgIExXSVBfREJHX0xFVkVMX0FMTAo+ICsjZGVmaW5l
IExXSVBfREJHX1RZUEVTX09OICAgIExXSVBfREJHX09OCj4gKwo+ICsjaWYgQ09ORklHX0xXSVBf
TUFJTkxPT1BfREVCVUcKPiAgICNkZWZpbmUgVENQSVBfREVCVUcgICAgICBMV0lQX0RCR19PTgo+
ICAgI2RlZmluZSBUSU1FUlNfREVCVUcgICAgIExXSVBfREJHX09OCj4gICAjZW5kaWYgLyogQ09O
RklHX0xXSVBfTUFJTkxPT1BfREVCVUcgKi8KPiAgIAo+IC0jaWZkZWYgQ09ORklHX0xXSVBfSUZf
REVCVUcKPiArI2lmIENPTkZJR19MV0lQX0lGX0RFQlVHCj4gKyNkZWZpbmUgRVRIQVJQX0RFQlVH
ICAgICBMV0lQX0RCR19PTgo+ICAgI2RlZmluZSBORVRJRl9ERUJVRyAgICAgIExXSVBfREJHX09O
Cj4gICAjZW5kaWYgLyogQ09ORklHX0xXSVBfSUZfREVCVUcgKi8KPiAgIAo+IC0jaWZkZWYgQ09O
RklHX0xXSVBfSVBfREVCVUcKPiArI2lmIENPTkZJR19MV0lQX0lQX0RFQlVHCj4gICAjZGVmaW5l
IElQX0RFQlVHICAgICAgICAgTFdJUF9EQkdfT04KPiAgICNkZWZpbmUgSVA2X0RFQlVHICAgICAg
ICBMV0lQX0RCR19PTgo+ICAgI2RlZmluZSBJUF9SRUFTU19ERUJVRyAgIExXSVBfREJHX09OCj4g
ICAjZW5kaWYgLyogQ09ORklHX0xXSVBfSVBfREVCVUcgKi8KPiAgIAo+IC0jaWZkZWYgQ09ORklH
X0xXSVBfVURQX0RFQlVHCj4gKyNpZiBDT05GSUdfTFdJUF9VRFBfREVCVUcKPiAgICNkZWZpbmUg
VURQX0RFQlVHICAgICAgICBMV0lQX0RCR19PTgo+ICAgI2VuZGlmIC8qIENPTkZJR19MV0lQX1VE
UF9ERUJVRyAqLwo+ICAgCj4gLSNpZmRlZiBDT05GSUdfTFdJUF9UQ1BfREVCVUcKPiArI2lmIENP
TkZJR19MV0lQX1RDUF9ERUJVRwo+ICAgI2RlZmluZSBUQ1BfREVCVUcgICAgICAgIExXSVBfREJH
X09OCj4gICAjZGVmaW5lIFRDUF9GUl9ERUJVRyAgICAgTFdJUF9EQkdfT04KPiAgICNkZWZpbmUg
VENQX1JUT19ERUJVRyAgICBMV0lQX0RCR19PTgo+IEBAIC0yMTMsMjggKzMyMiwyOCBAQCB2b2lk
IHN5c19mcmVlKHZvaWQgKnB0cik7Cj4gICAjZGVmaW5lIFRDUF9XTkRfREVCVUcgICAgTFdJUF9E
QkdfT04KPiAgICNkZWZpbmUgVENQX1JTVF9ERUJVRyAgICBMV0lQX0RCR19PTgo+ICAgI2RlZmlu
ZSBUQ1BfUUxFTl9ERUJVRyAgIExXSVBfREJHX09OCj4gLS8vI2RlZmluZSBUQ1BfT1VUUFVUX0RF
QlVHIExXSVBfREJHX09OCj4gLS8vI2RlZmluZSBUQ1BfSU5QVVRfREVCVUcgTFdJUF9EQkdfT04K
PiArI2RlZmluZSBUQ1BfT1VUUFVUX0RFQlVHIExXSVBfREJHX09OCj4gKyNkZWZpbmUgVENQX0lO
UFVUX0RFQlVHIExXSVBfREJHX09OCj4gICAjaWYgTFdJUF9DSEVDS1NVTV9PTl9DT1BZCj4gICAj
ZGVmaW5lIFRDUF9DSEVDS1NVTV9PTl9DT1BZX1NBTklUWV9DSEVDSyAxCj4gICAjZW5kaWYKPiAg
ICNlbmRpZiAvKiBDT05GSUdfTFdJUF9UQ1BfREVCVUcgKi8KPiAgIAo+IC0jaWZkZWYgQ09ORklH
X0xXSVBfU1lTX0RFQlVHCj4gKyNpZiBDT05GSUdfTFdJUF9TWVNfREVCVUcKPiAgICNkZWZpbmUg
U1lTX0RFQlVHICAgICAgICBMV0lQX0RCR19PTgo+ICAgI2RlZmluZSBQQlVGX0RFQlVHICAgICAg
IExXSVBfREJHX09OCj4gICAjZGVmaW5lIE1FTV9ERUJVRyAgICAgICAgTFdJUF9EQkdfT04KPiAg
ICNkZWZpbmUgTUVNUF9ERUJVRyAgICAgICBMV0lQX0RCR19PTgo+IC0jZW5kaWYgLyogTFdJUF9T
WVNfREVCVUcgKi8KPiArI2VuZGlmIC8qIENPTkZJR19MV0lQX1NZU19ERUJVRyAqLwo+ICAgCj4g
LSNpZmRlZiBMV0lQX0FQSV9ERUJVRwo+ICsjaWYgQ09ORklHX0xXSVBfQVBJX0RFQlVHCj4gICAj
ZGVmaW5lIFNPQ0tFVFNfREVCVUcgICAgTFdJUF9EQkdfT04KPiAgICNkZWZpbmUgUkFXX0RFQlVH
ICAgICAgICBMV0lQX0RCR19PTgo+ICAgI2RlZmluZSBBUElfTVNHX0RFQlVHICAgIExXSVBfREJH
X09OCj4gICAjZGVmaW5lIEFQSV9MSUJfREVCVUcgICAgTFdJUF9EQkdfT04KPiAtI2VuZGlmIC8q
IExXSVBfQVBJX0RFQlVHICovCj4gKyNlbmRpZiAvKiBDT05GSUdfTFdJUF9BUElfREVCVUcgKi8K
PiAgIAo+IC0jaWZkZWYgTFdJUF9TRVJWSUNFX0RFQlVHCj4gKyNpZiBDT05GSUdfTFdJUF9TRVJW
SUNFX0RFQlVHCj4gICAjZGVmaW5lIEVUSEFSUF9ERUJVRyAgICAgTFdJUF9EQkdfT04KPiAgICNk
ZWZpbmUgRE5TX0RFQlVHICAgICAgICBMV0lQX0RCR19PTgo+ICAgI2RlZmluZSBBVVRPSVBfREVC
VUcgICAgIExXSVBfREJHX09OCj4gQEAgLTI0Myw4ICszNTIsNyBAQCB2b2lkIHN5c19mcmVlKHZv
aWQgKnB0cik7Cj4gICAjZGVmaW5lIFNOTVBfREVCVUcgICAgICAgTFdJUF9EQkdfT04KPiAgICNk
ZWZpbmUgU05NUF9NU0dfREVCVUcgICBMV0lQX0RCR19PTgo+ICAgI2RlZmluZSBTTk1QX01JQl9E
RUJVRyAgIExXSVBfREJHX09OCj4gLSNkZWZpbmUgUFBQX0RFQlVHICAgICAgICBMV0lQX0RCR19P
Tgo+IC0jZGVmaW5lIFNMSVBfREVCVUcgICAgICAgTFdJUF9EQkdfT04KPiAtI2VuZGlmIC8qIExX
SVBfU0VSVklDRV9ERUJVRyAqLwo+ICsjZW5kaWYgLyogQ09ORklHX0xXSVBfU0VSVklDRV9ERUJV
RyAqLwo+ICsjZW5kaWYgLyogQ09ORklHX0xXSVBfREVCVUcgKi8KPiAgIAo+ICAgI2VuZGlmIC8q
IF9fTFdJUF9MV0lQT1BUU19IX18gKi8KPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvaWYuaCBi
L2luY2x1ZGUvbmV0L2lmLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAu
LjNmYmZkZWMKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvaW5jbHVkZS9uZXQvaWYuaAo+IEBAIC0w
LDAgKzEgQEAKPiArI2luY2x1ZGUgPGNvbXBhdC9wb3NpeC9uZXQvaWYuaD4KPiBkaWZmIC0tZ2l0
IGEvaW5jbHVkZS9uZXRkYi5oIGIvaW5jbHVkZS9uZXRkYi5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2
NDQKPiBpbmRleCAwMDAwMDAwLi41ZTJlYjYwCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2luY2x1
ZGUvbmV0ZGIuaAo+IEBAIC0wLDAgKzEgQEAKPiArI2luY2x1ZGUgPGNvbXBhdC9wb3NpeC9uZXRk
Yi5oPgo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL3N5cy9zb2NrZXQuaCBiL2luY2x1ZGUvc3lzL3Nv
Y2tldC5oCj4gaW5kZXggNWY0OTZjYi4uMmEwMTg3NyAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL3N5
cy9zb2NrZXQuaAo+ICsrKyBiL2luY2x1ZGUvc3lzL3NvY2tldC5oCj4gQEAgLTEsMTMgKzEsNjgg
QEAKPiAtI2lmbmRlZiBVS19MV0lQX1NPQ0tFVF9ICj4gLSNpbmNsdWRlIDx1ay9jb25maWcuaD4K
PiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLwo+ICsvKgo+ICsg
KiBDb3B5cmlnaHQgKGMpIDIwMTksIE5FQyBMYWJvcmF0b3JpZXMgRXVyb3BlIEdtYkgsIE5FQyBD
b3Jwb3JhdGlvbi4KPiArICogICAgICAgICAgICAgICAgICAgICBBbGwgcmlnaHRzIHJlc2VydmVk
Lgo+ICsgKgo+ICsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKPiArICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCj4gKyAqIGFyZSBtZXQ6Cj4g
KyAqCj4gKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KPiArICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQo+ICsgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgo+ICsgKiAzLiBOZWl0aGVyIHRoZSBu
YW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzCj4gKyAqICAg
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCj4gKyAqICAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCj4gKyAqCj4gKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgo+ICsg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCj4gKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCj4gKyAqIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklC
VVRPUlMgQkUKPiArICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgo+ICsgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgo+ICsgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKPiArICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KPiArICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKPiArICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUKPiArICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCj4gKyAq
Cj4gKyAqIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFO
WSBXQVkuCj4gKyAqLwo+ICAgCj4gKyNpZm5kZWYgX1VLX0xXSVBfU09DS0VUX0hfCj4gICAKPiAt
I2lmIENPTkZJR19MSUJMV0lQCj4gLSNpbmNsdWRlIDxsd2lwL2luZXQuaD4KPiArI2luY2x1ZGUg
PHVrL2NvbmZpZy5oPgo+ICAgI2luY2x1ZGUgPGx3aXAvc29ja2V0cy5oPgo+IC0jZW5kaWYgLyog
Q09ORklHX0xJQkxXSVAgKi8KPiAgIAo+ICsjaWZuZGVmIFNPQ0tfQ0xPRVhFQwo+ICAgI2RlZmlu
ZSBTT0NLX0NMT0VYRUMgICAgMHgxMDAwMDAwMAo+ICsjZW5kaWYKPiArCj4gKyNpZm5kZWYgU09D
S19OT05CTE9DSwo+ICAgI2RlZmluZSBTT0NLX05PTkJMT0NLICAgMHgyMDAwMDAwMAo+ICsjZW5k
aWYKPiArCj4gKyNpZmRlZiBDT05GSUdfTElCTk9MSUJDCj4gK2ludCBzb2NrZXQoaW50IGRvbWFp
biwgaW50IHR5cGUsIGludCBwcm90b2NvbCk7Cj4gK2ludCBhY2NlcHQoaW50IHMsIHN0cnVjdCBz
b2NrYWRkciAqYWRkciwgc29ja2xlbl90ICphZGRybGVuKTsKPiAraW50IGJpbmQoaW50IHMsIGNv
bnN0IHN0cnVjdCBzb2NrYWRkciAqbmFtZSwgc29ja2xlbl90IG5hbWVsZW4pOwo+ICtpbnQgc2h1
dGRvd24oaW50IHMsIGludCBob3cpOwo+ICtpbnQgZ2V0cGVlcm5hbWUoaW50IHMsIHN0cnVjdCBz
b2NrYWRkciAqbmFtZSwgc29ja2xlbl90ICpuYW1lbGVuKTsKPiAraW50IGdldHNvY2tuYW1lKGlu
dCBzLCBzdHJ1Y3Qgc29ja2FkZHIgKm5hbWUsIHNvY2tsZW5fdCAqbmFtZWxlbik7Cj4gK2ludCBn
ZXRzb2Nrb3B0KGludCBzLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLCB2b2lkICpvcHR2YWwsIHNv
Y2tsZW5fdCAqb3B0bGVuKTsKPiAraW50IHNldHNvY2tvcHQoaW50IHMsIGludCBsZXZlbCwgaW50
IG9wdG5hbWUsIGNvbnN0IHZvaWQgKm9wdHZhbCwKPiArCSAgICAgICBzb2NrbGVuX3Qgb3B0bGVu
KTsKPiAraW50IGNvbm5lY3QoaW50IHMsIGNvbnN0IHN0cnVjdCBzb2NrYWRkciAqbmFtZSwgc29j
a2xlbl90IG5hbWVsZW4pOwo+ICtpbnQgbGlzdGVuKGludCBzLCBpbnQgYmFja2xvZyk7Cj4gK2lu
dCByZWN2KGludCBzLCB2b2lkICptZW0sIHNpemVfdCBsZW4sIGludCBmbGFncyk7Cj4gK2ludCBy
ZWN2ZnJvbShpbnQgcywgdm9pZCAqbWVtLCBzaXplX3QgbGVuLCBpbnQgZmxhZ3MsCj4gKwkgICAg
IHN0cnVjdCBzb2NrYWRkciAqZnJvbSwgc29ja2xlbl90ICpmcm9tbGVuKTsKPiAraW50IHNlbmQo
aW50IHMsIGNvbnN0IHZvaWQgKmRhdGFwdHIsIHNpemVfdCBzaXplLCBpbnQgZmxhZ3MpOwo+ICtp
bnQgc2VuZG1zZyhpbnQgcywgY29uc3Qgc3RydWN0IG1zZ2hkciAqbWVzc2FnZSwgaW50IGZsYWdz
KTsKPiAraW50IHNlbmR0byhpbnQgcywgY29uc3Qgdm9pZCAqZGF0YXB0ciwgc2l6ZV90IHNpemUs
IGludCBmbGFncywKPiArCSAgIGNvbnN0IHN0cnVjdCBzb2NrYWRkciAqdG8sIHNvY2tsZW5fdCB0
b2xlbik7Cj4gKyNlbmRpZiAvKiBDT05GSUdfTElCTk9MSUJDICovCj4gICAKPiAtI2VuZGlmIC8q
IFVLX0xXSVBfU09DS0VUX0ggKi8KPiArI2VuZGlmIC8qIF9VS19MV0lQX1NPQ0tFVF9IXyAqLwo+
IGRpZmYgLS1naXQgYS9pbml0LmMgYi9pbml0LmMKPiBpbmRleCAwMzI2NjYyLi5lY2UzNjNkIDEw
MDY0NAo+IC0tLSBhL2luaXQuYwo+ICsrKyBiL2luaXQuYwo+IEBAIC0xLDI3ICsxLDg2IEBACj4g
Ky8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8KPiArLyoKPiArICog
QXV0aG9yczogU2ltb24gS3VlbnplciA8c2ltb24ua3VlbnplckBuZWNsYWIuZXU+Cj4gKyAqCj4g
KyAqIENvcHlyaWdodCAoYykgMjAxOSwgTkVDIExhYm9yYXRvcmllcyBFdXJvcGUgR21iSCwgTkVD
IENvcnBvcmF0aW9uLgo+ICsgKiAgICAgICAgICAgICAgICAgICAgIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCj4gKyAqCj4gKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAo+ICsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKPiArICogYXJlIG1ldDoK
PiArICoKPiArICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgo+ICsgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCj4gKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCj4gKyAqIDMuIE5laXRoZXIgdGhl
IG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKPiArICog
ICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KPiArICogICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KPiArICoKPiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCj4g
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKPiArICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKPiArICogQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRS
SUJVVE9SUyBCRQo+ICsgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCj4gKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCj4gKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwo+ICsgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgo+ICsgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQo+ICsg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRQo+ICsgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KPiAr
ICoKPiArICogVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQgT1IgTU9ESUZJRUQgSU4g
QU5ZIFdBWS4KPiArICovCj4gKwo+ICAgI2luY2x1ZGUgPHVrL2NvbmZpZy5oPgo+IC0jaW5jbHVk
ZSA8bHdpcC90Y3BpcC5oPgo+IC0jaW5jbHVkZSA8bHdpcC9pbml0Lmg+Cj4gLSNpbmNsdWRlIDx1
ay9wbGF0L2N0b3JzLmg+Cj4gLQo+IC0vKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBiZWZvcmUg
dGhlIGFueSBvdGhlciBzeXNfYXJjaC1mdW5jdGlvbiBpcwo+IC0gKiBjYWxsZWQgYW5kIGlzIG1l
YW50IHRvIGJlIHVzZWQgdG8gaW5pdGlhbGl6ZSBhbnl0aGluZyB0aGF0IGhhcyB0bwo+IC0gKiBi
ZSB1cCBhbmQgcnVubmluZyBmb3IgdGhlIHJlc3Qgb2YgdGhlIGZ1bmN0aW9ucyB0byB3b3JrLiBm
b3IKPiAtICogZXhhbXBsZSB0byBzZXQgdXAgYSBwb29sIG9mIHNlbWFwaG9yZXMuICovCj4gKyNp
bmNsdWRlICJsd2lwL29wdC5oIgo+ICsjaW5jbHVkZSAibHdpcC90Y3BpcC5oIgo+ICsjaW5jbHVk
ZSAibHdpcC9pbml0LmgiCj4gKyNpbmNsdWRlICJsd2lwL2RoY3AuaCIKPiArI2lmIENPTkZJR19M
V0lQX05PVEhSRUFEUwo+ICsjaW5jbHVkZSAibHdpcC90aW1lb3V0cy5oIgo+ICsjZWxzZSAvKiBD
T05GSUdfTFdJUF9OT1RIUkVBRFMgKi8KPiArI2luY2x1ZGUgPHVrL3NlbWFwaG9yZS5oPgo+ICsj
ZW5kaWYgLyogQ09ORklHX0xXSVBfTk9USFJFQURTICovCj4gKwo+ICAgdm9pZCBzeXNfaW5pdCh2
b2lkKQo+ICAgewo+IC0gICAgcmV0dXJuOwo+ICsJLyoKPiArCSAqIFRoaXMgZnVuY3Rpb24gaXMg
Y2FsbGVkIGJlZm9yZSB0aGUgYW55IG90aGVyIHN5c19hcmNoLWZ1bmN0aW9uIGlzCj4gKwkgKiBj
YWxsZWQgYW5kIGlzIG1lYW50IHRvIGJlIHVzZWQgdG8gaW5pdGlhbGl6ZSBhbnl0aGluZyB0aGF0
IGhhcyB0bwo+ICsJICogYmUgdXAgYW5kIHJ1bm5pbmcgZm9yIHRoZSByZXN0IG9mIHRoZSBmdW5j
dGlvbnMgdG8gd29yay4gZm9yCj4gKwkgKiBleGFtcGxlIHRvIHNldCB1cCBhIHBvb2wgb2Ygc2Vt
YXBob3Jlcy4KPiArCSAqLwo+ICAgfQo+ICAgCj4gKyNpZiAhQ09ORklHX0xXSVBfTk9USFJFQURT
Cj4gK3N0YXRpYyBzdHJ1Y3QgdWtfc2VtYXBob3JlIF9sd2lwX2luaXRfc2VtOwo+ICsKPiArc3Rh
dGljIHZvaWQgX2x3aXBfaW5pdF9kb25lKHZvaWQgKmFyZyBfX3VudXNlZCkKPiArewo+ICsJdWtf
c2VtYXBob3JlX3VwKCZfbHdpcF9pbml0X3NlbSk7Cj4gK30KPiArI2VuZGlmIC8qICFDT05GSUdf
TFdJUF9OT1RIUkVBRFMgKi8KPiArCj4gICAvKgo+ICAgICogVGhpcyBmdW5jdGlvbiBpbml0aWFs
aXppbmcgdGhlIGx3aXAgbmV0d29yayBzdGFjawo+IC0gKgo+ICAgICovCj4gICBpbnQgbGlibHdp
cF9pbml0KHZvaWQpCj4gICB7Cj4gLSNpZiBDT05GSUdfTElCVUtTQ0hFRAo+IC0gICAgICAgIHRj
cGlwX2luaXQoTlVMTCwgTlVMTCk7Cj4gLSNlbHNlCj4gLSAgICAgICAgbHdpcF9pbml0KCk7Cj4g
LSNlbmRpZiAvKiBDT05GSUdfTElCVUtTQ0hFRCAqLwo+ICsKPiArI2lmICFDT05GSUdfTFdJUF9O
T1RIUkVBRFMKPiArCXVrX3NlbWFwaG9yZV9pbml0KCZfbHdpcF9pbml0X3NlbSwgMCk7Cj4gKyNl
bmRpZiAvKiAhQ09ORklHX0xXSVBfTk9USFJFQURTICovCj4gKwo+ICsjaWYgQ09ORklHX0xXSVBf
Tk9USFJFQURTCj4gKwlsd2lwX2luaXQoKTsKPiArI2Vsc2UgLyogQ09ORklHX0xXSVBfTk9USFJF
QURTICovCj4gKwl0Y3BpcF9pbml0KF9sd2lwX2luaXRfZG9uZSwgTlVMTCk7Cj4gKwo+ICsJLyog
V2FpdCB1bnRpbCBzdGFjayBpcyBib290ZWQgKi8KPiArCXVrX3NlbWFwaG9yZV9kb3duKCZfbHdp
cF9pbml0X3NlbSk7Cj4gKyNlbmRpZiAvKiBDT05GSUdfTFdJUF9OT1RIUkVBRFMgKi8KPiArCj4g
ICAJcmV0dXJuIDA7Cj4gICB9Cj4gZGlmZiAtLWdpdCBhL21haWxib3guYyBiL21haWxib3guYwo+
IGluZGV4IDhhNmNiMTMuLjZmYjVmZGEgMTAwNjQ0Cj4gLS0tIGEvbWFpbGJveC5jCj4gKysrIGIv
bWFpbGJveC5jCj4gQEAgLTEsMyArMSwzNiBAQAo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmll
cjogQlNELTMtQ2xhdXNlICovCj4gKy8qCj4gKyAqIENvcHlyaWdodCAoYykgMjAxOSwgTkVDIExh
Ym9yYXRvcmllcyBFdXJvcGUgR21iSCwgTkVDIENvcnBvcmF0aW9uLgo+ICsgKiAgICAgICAgICAg
ICAgICAgICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4gKyAqCj4gKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAo+ICsg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKPiArICogYXJlIG1ldDoKPiArICoKPiArICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgo+ICsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCj4gKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCj4gKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIg
bm9yIHRoZSBuYW1lcyBvZiBpdHMKPiArICogICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KPiArICogICAgdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KPiArICoK
PiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCj4gKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKPiArICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UKPiArICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRQo+ICsgKiBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCj4g
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCj4gKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwo+ICsgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
Tgo+ICsgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQo+ICsgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQo+ICsgKiBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KPiArICoKPiArICogVEhJUyBIRUFERVIgTUFZIE5PVCBC
RSBFWFRSQUNURUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4KPiArICovCj4gKwo+ICAgI2luY2x1
ZGUgPHVrL21ib3guaD4KPiAgICNpbmNsdWRlIDx1ay9hcmNoL3RpbWUuaD4KPiAgICNpbmNsdWRl
IDxsd2lwL3N5cy5oPgo+IEBAIC03LDY3ICs0MCw4MCBAQAo+ICAgLyogQ3JlYXRlcyBhbiBlbXB0
eSBtYWlsYm94LiAqLwo+ICAgZXJyX3Qgc3lzX21ib3hfbmV3KHN5c19tYm94X3QgKm1ib3gsIGlu
dCBzaXplKQo+ICAgewo+IC0gICAgaWYgKHNpemUgPD0gMCkKPiAtICAgICAgICBzaXplID0gMzI7
Cj4gLQo+IC0gICAgVUtfQVNTRVJUKG1ib3gpOwo+IC0gICAgbWJveC0+YSA9IHVrX2FsbG9jX2dl
dF9kZWZhdWx0KCk7Cj4gLSAgICBVS19BU1NFUlQobWJveC0+YSk7Cj4gLSAgICBtYm94LT5tYm94
ID0gdWtfbWJveF9jcmVhdGUobWJveC0+YSwgc2l6ZSk7Cj4gLSAgICBpZiAoIW1ib3gtPm1ib3gp
Cj4gLSAgICAgICAgcmV0dXJuIEVSUl9NRU07Cj4gLSAgICBtYm94LT52YWxpZCA9IDE7Cj4gLSAg
ICByZXR1cm4gRVJSX09LOwo+ICsJaWYgKHNpemUgPD0gMCkKPiArCQlzaXplID0gMzI7Cj4gKwo+
ICsJVUtfQVNTRVJUKG1ib3gpOwo+ICsJbWJveC0+YSA9IHVrX2FsbG9jX2dldF9kZWZhdWx0KCk7
Cj4gKwlVS19BU1NFUlQobWJveC0+YSk7Cj4gKwltYm94LT5tYm94ID0gdWtfbWJveF9jcmVhdGUo
bWJveC0+YSwgc2l6ZSk7Cj4gKwlpZiAoIW1ib3gtPm1ib3gpCj4gKwkJcmV0dXJuIEVSUl9NRU07
Cj4gKwltYm94LT52YWxpZCA9IDE7Cj4gKwlyZXR1cm4gRVJSX09LOwo+ICAgfQo+ICAgCj4gICBp
bnQgc3lzX21ib3hfdmFsaWQoc3lzX21ib3hfdCAqbWJveCkKPiAgIHsKPiAtICAgIGlmICghbWJv
eCkKPiAtICAgICAgICByZXR1cm4gMDsKPiAtICAgIHJldHVybiAobWJveC0+dmFsaWQgPT0gMSk7
Cj4gKwlpZiAoIW1ib3gpCj4gKwkJcmV0dXJuIDA7Cj4gKwlyZXR1cm4gKG1ib3gtPnZhbGlkID09
IDEpOwo+ICAgfQo+ICAgCj4gICB2b2lkIHN5c19tYm94X3NldF9pbnZhbGlkKHN5c19tYm94X3Qg
Km1ib3gpCj4gICB7Cj4gLSAgICBVS19BU1NFUlQobWJveCk7Cj4gLSAgICBtYm94LT52YWxpZCA9
IDA7Cj4gKwlVS19BU1NFUlQobWJveCk7Cj4gKwltYm94LT52YWxpZCA9IDA7Cj4gICB9Cj4gICAK
PiAtLyogRGVhbGxvY2F0ZXMgYSBtYWlsYm94LiBJZiB0aGVyZSBhcmUgbWVzc2FnZXMgc3RpbGwg
cHJlc2VudCBpbiB0aGUKPiArLyoqCj4gKyAqIERlYWxsb2NhdGVzIGEgbWFpbGJveC4gSWYgdGhl
cmUgYXJlIG1lc3NhZ2VzIHN0aWxsIHByZXNlbnQgaW4gdGhlCj4gICAgKiBtYWlsYm94IHdoZW4g
dGhlIG1haWxib3ggaXMgZGVhbGxvY2F0ZWQsIGl0IGlzIGFuIGluZGljYXRpb24gb2YgYQo+IC0g
KiBwcm9ncmFtbWluZyBlcnJvciBpbiBsd0lQIGFuZCB0aGUgZGV2ZWxvcGVyIHNob3VsZCBiZSBu
b3RpZmllZC4gKi8KPiArICogcHJvZ3JhbW1pbmcgZXJyb3IgaW4gbHdJUCBhbmQgdGhlIGRldmVs
b3BlciBzaG91bGQgYmUgbm90aWZpZWQuCj4gKyAqLwo+ICAgdm9pZCBzeXNfbWJveF9mcmVlKHN5
c19tYm94X3QgKm1ib3gpCj4gICB7Cj4gLSAgICBVS19BU1NFUlQoc3lzX21ib3hfdmFsaWQobWJv
eCkpOwo+ICsJVUtfQVNTRVJUKHN5c19tYm94X3ZhbGlkKG1ib3gpKTsKPiAgIAo+IC0gICAgdWtf
bWJveF9mcmVlKG1ib3gtPmEsIG1ib3gtPm1ib3gpOwo+IC0gICAgc3lzX21ib3hfc2V0X2ludmFs
aWQobWJveCk7Cj4gKwl1a19tYm94X2ZyZWUobWJveC0+YSwgbWJveC0+bWJveCk7Cj4gKwlzeXNf
bWJveF9zZXRfaW52YWxpZChtYm94KTsKPiAgIH0KPiAgIAo+IC0vKiBQb3N0cyB0aGUgIm1zZyIg
dG8gdGhlIG1haWxib3guICovCj4gKy8qIFBvc3RzICJtc2ciIHRvIHRoZSBtYWlsYm94LCBOVUxM
IG1zZydzIGFyZSBub3Qgc3VwcG9ydGVkICovCj4gICB2b2lkIHN5c19tYm94X3Bvc3Qoc3lzX21i
b3hfdCAqbWJveCwgdm9pZCAqbXNnKQo+ICAgewo+IC0gICAgVUtfQVNTRVJUKHN5c19tYm94X3Zh
bGlkKG1ib3gpKTsKPiArCVVLX0FTU0VSVChzeXNfbWJveF92YWxpZChtYm94KSk7Cj4gICAKPiAt
ICAgIGlmICghbXNnKSB7IC8qIEZJWE1FPyAqLwo+IC0gICAgICAgIHVrX3ByaW50ZChETFZMX1dB
Uk4sICJJZ25vcmUgcG9zdGluZyBOVUxMIG1lc3NhZ2UiKTsKPiAtCXJldHVybjsKPiAtICAgIH0K
PiArCWlmICghbXNnKSB7Cj4gKwkJdWtfcHJfZGVidWcoIklnbm9yZWQgcG9zdGluZyBOVUxMIG1l
c3NhZ2UiKTsKPiArCQlyZXR1cm47Cj4gKwl9Cj4gICAKPiAtICAgIHVrX21ib3hfcG9zdChtYm94
LT5tYm94LCBtc2cpOwo+ICsJdWtfbWJveF9wb3N0KG1ib3gtPm1ib3gsIG1zZyk7Cj4gICB9Cj4g
ICAKPiAtLyogVHJ5IHRvIHBvc3QgdGhlICJtc2ciIHRvIHRoZSBtYWlsYm94LiAqLwo+ICsvKiBU
cnkgdG8gcG9zdCAibXNnIiB0byB0aGUgbWFpbGJveC4gKi8KPiAgIGVycl90IHN5c19tYm94X3Ry
eXBvc3Qoc3lzX21ib3hfdCAqbWJveCwgdm9pZCAqbXNnKQo+ICAgewo+IC0gICAgVUtfQVNTRVJU
KHN5c19tYm94X3ZhbGlkKG1ib3gpKTsKPiArCVVLX0FTU0VSVChzeXNfbWJveF92YWxpZChtYm94
KSk7Cj4gICAKPiAtICAgIGlmICh1a19tYm94X3Bvc3RfdHJ5KG1ib3gtPm1ib3gsIG1zZykgPCAw
KQo+IC0gICAgICAgIHJldHVybiBFUlJfTUVNOwo+IC0gICAgcmV0dXJuIEVSUl9PSzsKPiArCWlm
ICh1a19tYm94X3Bvc3RfdHJ5KG1ib3gtPm1ib3gsIG1zZykgPCAwKQo+ICsJCXJldHVybiBFUlJf
TUVNOwo+ICsJcmV0dXJuIEVSUl9PSzsKPiAgIH0KPiAgIAo+IC0vKiBCbG9ja3MgdGhlIHRocmVh
ZCB1bnRpbCBhIG1lc3NhZ2UgYXJyaXZlcyBpbiB0aGUgbWFpbGJveCwgYnV0IGRvZXMKPiArLyog
VHJ5IHRvIHBvc3QgdGhlICJtc2ciIHRvIHRoZSBtYWlsYm94IGZyb20gSVNSIGNvbnRleHQuICov
Cj4gK2Vycl90IHN5c19tYm94X3RyeXBvc3RfZnJvbWlzcihzeXNfbWJveF90ICptYm94LCB2b2lk
ICptc2cpCj4gK3sKPiArCVVLX0FTU0VSVChzeXNfbWJveF92YWxpZChtYm94KSk7Cj4gKwo+ICsJ
aWYgKHVrX21ib3hfcG9zdF90cnkobWJveC0+bWJveCwgbXNnKSA8IDApCj4gKwkJcmV0dXJuIEVS
Ul9NRU07Cj4gKwlyZXR1cm4gRVJSX09LOwo+ICt9Cj4gKwo+ICsvKioKPiArICogQmxvY2tzIHRo
ZSB0aHJlYWQgdW50aWwgYSBtZXNzYWdlIGFycml2ZXMgaW4gdGhlIG1haWxib3gsIGJ1dCBkb2Vz
Cj4gICAgKiBub3QgYmxvY2sgdGhlIHRocmVhZCBsb25nZXIgdGhhbiAidGltZW91dCIgbWlsbGlz
ZWNvbmRzIChzaW1pbGFyIHRvCj4gICAgKiB0aGUgc3lzX2FyY2hfc2VtX3dhaXQoKSBmdW5jdGlv
bikuIFRoZSAibXNnIiBhcmd1bWVudCBpcyBhIHJlc3VsdAo+ICAgICogcGFyYW1ldGVyIHRoYXQg
aXMgc2V0IGJ5IHRoZSBmdW5jdGlvbiAoaS5lLiwgYnkgZG9pbmcgIiptc2cgPQo+IEBAIC03Niwy
MSArMTIyLDIzIEBAIGVycl90IHN5c19tYm94X3RyeXBvc3Qoc3lzX21ib3hfdCAqbWJveCwgdm9p
ZCAqbXNnKQo+ICAgICoKPiAgICAqIFRoZSByZXR1cm4gdmFsdWVzIGFyZSB0aGUgc2FtZSBhcyBm
b3IgdGhlIHN5c19hcmNoX3NlbV93YWl0KCkgZnVuY3Rpb246Cj4gICAgKiBOdW1iZXIgb2YgbWls
bGlzZWNvbmRzIHNwZW50IHdhaXRpbmcgb3IgU1lTX0FSQ0hfVElNRU9VVCBpZiB0aGVyZSB3YXMg
YQo+IC0gKiB0aW1lb3V0LiAqLwo+ICsgKiB0aW1lb3V0Lgo+ICsgKi8KPiAgIHUzMl90IHN5c19h
cmNoX21ib3hfZmV0Y2goc3lzX21ib3hfdCAqbWJveCwgdm9pZCAqKm1zZywgdTMyX3QgdGltZW91
dCkKPiAgIHsKPiAtICAgIF9fbnNlYyBuc3JldDsKPiArCV9fbnNlYyBuc3JldDsKPiAgIAo+IC0g
ICAgVUtfQVNTRVJUKHN5c19tYm94X3ZhbGlkKG1ib3gpKTsKPiArCVVLX0FTU0VSVChzeXNfbWJv
eF92YWxpZChtYm94KSk7Cj4gICAKPiAtICAgIG5zcmV0ID0gdWtfbWJveF9yZWN2X3RvKG1ib3gt
Pm1ib3gsIG1zZywKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVrYXJjaF90aW1l
X21zZWNfdG9fbnNlYygoX19uc2VjKSB0aW1lb3V0KSk7Cj4gLSAgICBpZiAodW5saWtlbHkobnNy
ZXQgPT0gX19OU0VDX01BWCkpCj4gLSAgICAgICAgcmV0dXJuIFNZU19BUkNIX1RJTUVPVVQ7Cj4g
LSAgICByZXR1cm4gKHUzMl90KSB1a2FyY2hfdGltZV9uc2VjX3RvX21zZWMobnNyZXQpOwo+ICsJ
bnNyZXQgPSB1a19tYm94X3JlY3ZfdG8obWJveC0+bWJveCwgbXNnLAo+ICsJCQkJdWthcmNoX3Rp
bWVfbXNlY190b19uc2VjKChfX25zZWMpIHRpbWVvdXQpKTsKPiArCWlmICh1bmxpa2VseShuc3Jl
dCA9PSBfX05TRUNfTUFYKSkKPiArCQlyZXR1cm4gU1lTX0FSQ0hfVElNRU9VVDsKPiArCXJldHVy
biAodTMyX3QpIHVrYXJjaF90aW1lX25zZWNfdG9fbXNlYyhuc3JldCk7Cj4gICB9Cj4gICAKPiAt
LyogVGhpcyBpcyBzaW1pbGFyIHRvIHN5c19hcmNoX21ib3hfZmV0Y2gsIGhvd2V2ZXIgaWYgYSBt
ZXNzYWdlIGlzIG5vdAo+ICsvKioKPiArICogVGhpcyBpcyBzaW1pbGFyIHRvIHN5c19hcmNoX21i
b3hfZmV0Y2gsIGhvd2V2ZXIgaWYgYSBtZXNzYWdlIGlzIG5vdAo+ICAgICogcHJlc2VudCBpbiB0
aGUgbWFpbGJveCwgaXQgaW1tZWRpYXRlbHkgcmV0dXJucyB3aXRoIHRoZSBjb2RlCj4gICAgKiBT
WVNfTUJPWF9FTVBUWS4gT24gc3VjY2VzcyAwIGlzIHJldHVybmVkLgo+ICAgICoKPiBAQCAtOTks
MTcgKzE0NywxOCBAQCB1MzJfdCBzeXNfYXJjaF9tYm94X2ZldGNoKHN5c19tYm94X3QgKm1ib3gs
IHZvaWQgKiptc2csIHUzMl90IHRpbWVvdXQpCj4gICAgKiBleGFtcGxlLCBhIG5haXZlIGltcGxl
bWVudGF0aW9uIGNvdWxkIGJlOgo+ICAgICogICAjZGVmaW5lIHN5c19hcmNoX21ib3hfdHJ5ZmV0
Y2gobWJveCxtc2cpIFwKPiAgICAqICAgICBzeXNfYXJjaF9tYm94X2ZldGNoKG1ib3gsbXNnLDEp
Cj4gLSAqIGFsdGhvdWdoIHRoaXMgd291bGQgaW50cm9kdWNlIHVubmVjZXNzYXJ5IGRlbGF5cy4g
Ki8KPiAtCj4gLXUzMl90IHN5c19hcmNoX21ib3hfdHJ5ZmV0Y2goc3lzX21ib3hfdCAqbWJveCwg
dm9pZCAqKm1zZykgewo+IC0gICAgdm9pZCAqcm1zZzsKPiArICogYWx0aG91Z2ggdGhpcyB3b3Vs
ZCBpbnRyb2R1Y2UgdW5uZWNlc3NhcnkgZGVsYXlzLgo+ICsgKi8KPiArdTMyX3Qgc3lzX2FyY2hf
bWJveF90cnlmZXRjaChzeXNfbWJveF90ICptYm94LCB2b2lkICoqbXNnKQo+ICt7Cj4gKwl2b2lk
ICpybXNnOwo+ICAgCj4gLSAgICBVS19BU1NFUlQoc3lzX21ib3hfdmFsaWQobWJveCkpOwo+ICsJ
VUtfQVNTRVJUKHN5c19tYm94X3ZhbGlkKG1ib3gpKTsKPiAgIAo+IC0gICAgaWYgKHVrX21ib3hf
cmVjdl90cnkobWJveC0+bWJveCwgJnJtc2cpIDwgMCkKPiAtCXJldHVybiBTWVNfTUJPWF9FTVBU
WTsKPiArCWlmICh1a19tYm94X3JlY3ZfdHJ5KG1ib3gtPm1ib3gsICZybXNnKSA8IDApCj4gKwkJ
cmV0dXJuIFNZU19NQk9YX0VNUFRZOwo+ICAgCj4gLSAgICBpZiAobXNnKQo+IC0gICAgICAgICpt
c2cgPSBybXNnOwo+IC0gICAgcmV0dXJuIDA7Cj4gKwlpZiAobXNnKQo+ICsJCSptc2cgPSBybXNn
Owo+ICsJcmV0dXJuIDA7Cj4gICB9Cj4gZGlmZiAtLWdpdCBhL211dGV4LmMgYi9tdXRleC5jCj4g
aW5kZXggYWFhMTA4NS4uMmY4ZDRjNSAxMDA2NDQKPiAtLS0gYS9tdXRleC5jCj4gKysrIGIvbXV0
ZXguYwo+IEBAIC0xLDExICsxLDQ2IEBACj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBC
U0QtMy1DbGF1c2UgKi8KPiArLyoKPiArICogQ29weXJpZ2h0IChjKSAyMDE5LCBORUMgTGFib3Jh
dG9yaWVzIEV1cm9wZSBHbWJILCBORUMgQ29ycG9yYXRpb24uCj4gKyAqICAgICAgICAgICAgICAg
ICAgICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiArICoKPiArICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cj4gKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwo+ICsgKiBhcmUgbWV0Ogo+ICsgKgo+ICsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Cj4gKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKPiArICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KPiArICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3Ig
dGhlIG5hbWVzIG9mIGl0cwo+ICsgKiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQo+ICsgKiAgICB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgo+ICsgKgo+ICsg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTICJBUyBJUyIKPiArICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQo+ICsgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRQo+ICsgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFCj4gKyAqIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKPiArICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKPiArICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCj4gKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCj4g
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCj4gKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCj4gKyAqIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgo+ICsgKgo+ICsgKiBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVY
VFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgo+ICsgKi8KPiArCj4gICAjaW5jbHVkZSA8
dWsvbXV0ZXguaD4KPiAgICNpbmNsdWRlIDx1ay9hcmNoL3RpbWUuaD4KPiAgICNpbmNsdWRlIDxs
d2lwL3N5cy5oPgo+ICAgCj4gICAjaW5jbHVkZSA8dWsvZXNzZW50aWFscy5oPgo+ICAgCj4gLS8q
IEluaXRpYWxpemVzIGEgbmV3IHNlbWFwaG9yZS4gVGhlICJjb3VudCIgYXJndW1lbnQgc3BlY2lm
aWVzCj4gLSAqIHRoZSBpbml0aWFsIHN0YXRlIG9mIHRoZSBzZW1hcGhvcmUuICovCj4gKy8qKgo+
ICsgKiBJbml0aWFsaXplcyBhIG5ldyBzZW1hcGhvcmUuIFRoZSAiY291bnQiIGFyZ3VtZW50IHNw
ZWNpZmllcwo+ICsgKiB0aGUgaW5pdGlhbCBzdGF0ZSBvZiB0aGUgc2VtYXBob3JlLgo+ICsgKi8K
PiAgIGVycl90IHN5c19tdXRleF9uZXcoc3lzX211dGV4X3QgKm10eCkKPiAgIHsKPiAgIAl1a19t
dXRleF9pbml0KCZtdHgtPm10eCk7Cj4gQEAgLTMxLDEwICs2NiwxMCBAQCB2b2lkIHN5c19tdXRl
eF9mcmVlKHN5c19tdXRleF90ICptdHgpCj4gICAvKiBTaWduYWxzIGEgbXR4YXBob3JlLiAqLwog
ICAgIHMvbXR4YXBob3JlL211dGV4Cj4gICB2b2lkIHN5c19tdXRleF9sb2NrKHN5c19tdXRleF90
ICptdHgpCj4gICB7Cj4gLQl1a19tdXRleF9ob2xkKCZtdHgtPm10eCk7Cj4gKwl1a19tdXRleF9s
b2NrKCZtdHgtPm10eCk7Cj4gICB9Cj4gICAKPiAgIHZvaWQgc3lzX211dGV4X3VubG9jayhzeXNf
bXV0ZXhfdCAqbXR4KQo+ICAgewo+IC0JdWtfbXV0ZXhfcmVsZWFzZSgmbXR4LT5tdHgpOwo+ICsJ
dWtfbXV0ZXhfdW5sb2NrKCZtdHgtPm10eCk7Cj4gICB9Cj4gZGlmZiAtLWdpdCBhL3NlbWFwaG9y
ZS5jIGIvc2VtYXBob3JlLmMKPiBpbmRleCA4YjFiMTVmLi4xNmRhMzE2IDEwMDY0NAo+IC0tLSBh
L3NlbWFwaG9yZS5jCj4gKysrIGIvc2VtYXBob3JlLmMKPiBAQCAtMSwxMSArMSw0NiBAQAo+ICsv
KiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCj4gKy8qCj4gKyAqIENv
cHlyaWdodCAoYykgMjAxOSwgTkVDIExhYm9yYXRvcmllcyBFdXJvcGUgR21iSCwgTkVDIENvcnBv
cmF0aW9uLgo+ICsgKiAgICAgICAgICAgICAgICAgICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4g
KyAqCj4gKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAo+ICsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKPiArICogYXJlIG1ldDoKPiArICoK
PiArICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgo+ICsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCj4gKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCj4gKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUg
b2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKPiArICogICAgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KPiArICogICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KPiArICoKPiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCj4gKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKPiArICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKPiArICogQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9S
UyBCRQo+ICsgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCj4gKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCj4gKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwo+ICsgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgo+ICsgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQo+ICsgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRQo+ICsgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KPiArICoKPiAr
ICogVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdB
WS4KPiArICovCj4gKwo+ICAgI2luY2x1ZGUgPHVrL3NlbWFwaG9yZS5oPgo+ICAgI2luY2x1ZGUg
PHVrL2FyY2gvdGltZS5oPgo+ICAgI2luY2x1ZGUgPGx3aXAvc3lzLmg+Cj4gICAKPiAgICNpbmNs
dWRlIDx1ay9lc3NlbnRpYWxzLmg+Cj4gICAKPiAtLyogSW5pdGlhbGl6ZXMgYSBuZXcgc2VtYXBo
b3JlLiBUaGUgImNvdW50IiBhcmd1bWVudCBzcGVjaWZpZXMKPiAtICogdGhlIGluaXRpYWwgc3Rh
dGUgb2YgdGhlIHNlbWFwaG9yZS4gKi8KPiArLyoqCj4gKyAqIEluaXRpYWxpemVzIGEgbmV3IHNl
bWFwaG9yZS4gVGhlICJjb3VudCIgYXJndW1lbnQgc3BlY2lmaWVzCj4gKyAqIHRoZSBpbml0aWFs
IHN0YXRlIG9mIHRoZSBzZW1hcGhvcmUuCj4gKyAqLwo+ICAgZXJyX3Qgc3lzX3NlbV9uZXcoc3lz
X3NlbV90ICpzZW0sIHU4X3QgY291bnQpCj4gICB7Cj4gICAJdWtfc2VtYXBob3JlX2luaXQoJnNl
bS0+c2VtLCAobG9uZykgY291bnQpOwo+IEBAIC0zNCw3ICs2OSw4IEBAIHZvaWQgc3lzX3NlbV9z
aWduYWwoc3lzX3NlbV90ICpzZW0pCj4gICAJdWtfc2VtYXBob3JlX3VwKCZzZW0tPnNlbSk7Cj4g
ICB9Cj4gICAKPiAtLyogQmxvY2tzIHRoZSB0aHJlYWQgd2hpbGUgd2FpdGluZyBmb3IgdGhlIHNl
bWFwaG9yZSB0byBiZQo+ICsvKioKPiArICogQmxvY2tzIHRoZSB0aHJlYWQgd2hpbGUgd2FpdGlu
ZyBmb3IgdGhlIHNlbWFwaG9yZSB0byBiZQo+ICAgICogc2lnbmFsZWQuIElmIHRoZSAidGltZW91
dCIgYXJndW1lbnQgaXMgbm9uLXplcm8sIHRoZSB0aHJlYWQgc2hvdWxkCj4gICAgKiBvbmx5IGJl
IGJsb2NrZWQgZm9yIHRoZSBzcGVjaWZpZWQgdGltZSAobWVhc3VyZWQgaW4KPiAgICAqIG1pbGxp
c2Vjb25kcykuCj4gQEAgLTQzLDE0ICs3OSwxNiBAQCB2b2lkIHN5c19zZW1fc2lnbmFsKHN5c19z
ZW1fdCAqc2VtKQo+ICAgICogbWlsbGlzZWNvbmRzIHNwZW50IHdhaXRpbmcgZm9yIHRoZSBzZW1h
cGhvcmUgdG8gYmUgc2lnbmFsZWQuIElmIHRoZQo+ICAgICogc2VtYXBob3JlIHdhc24ndCBzaWdu
YWxlZCB3aXRoaW4gdGhlIHNwZWNpZmllZCB0aW1lLCB0aGUgcmV0dXJuIHZhbHVlIGlzCj4gICAg
KiBTWVNfQVJDSF9USU1FT1VULiBJZiB0aGUgdGhyZWFkIGRpZG4ndCBoYXZlIHRvIHdhaXQgZm9y
IHRoZSBzZW1hcGhvcmUKPiAtICogKGkuZS4sIGl0IHdhcyBhbHJlYWR5IHNpZ25hbGVkKSwgdGhl
IGZ1bmN0aW9uIG1heSByZXR1cm4gemVyby4gKi8KPiArICogKGkuZS4sIGl0IHdhcyBhbHJlYWR5
IHNpZ25hbGVkKSwgdGhlIGZ1bmN0aW9uIG1heSByZXR1cm4gemVyby4KPiArICovCj4gICB1MzJf
dCBzeXNfYXJjaF9zZW1fd2FpdChzeXNfc2VtX3QgKnNlbSwgdTMyX3QgdGltZW91dCkKPiAgIHsK
PiAtICAgIF9fbnNlYyBuc3JldDsKPiArCV9fbnNlYyBuc3JldDsKPiAgIAo+IC0gICAgbnNyZXQg
PSB1a19zZW1hcGhvcmVfZG93bl90bygmc2VtLT5zZW0sCj4gLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVrYXJjaF90aW1lX21zZWNfdG9fbnNlYygoX19uc2VjKSB0aW1lb3V0
KSk7Cj4gLSAgICBpZiAodW5saWtlbHkobnNyZXQgPT0gX19OU0VDX01BWCkpCj4gLSAgICAgICAg
cmV0dXJuIFNZU19BUkNIX1RJTUVPVVQ7Cj4gLSAgICByZXR1cm4gKHUzMl90KSB1a2FyY2hfdGlt
ZV9uc2VjX3RvX21zZWMobnNyZXQpOwo+ICsJbnNyZXQgPSB1a19zZW1hcGhvcmVfZG93bl90bygm
c2VtLT5zZW0sCj4gKwkJCQkgICAgIHVrYXJjaF90aW1lX21zZWNfdG9fbnNlYygoX19uc2VjKQo+
ICsJCQkJCQkJICAgICAgdGltZW91dCkpOwo+ICsJaWYgKHVubGlrZWx5KG5zcmV0ID09IF9fTlNF
Q19NQVgpKQo+ICsJCXJldHVybiBTWVNfQVJDSF9USU1FT1VUOwo+ICsJcmV0dXJuICh1MzJfdCkg
dWthcmNoX3RpbWVfbnNlY190b19tc2VjKG5zcmV0KTsKPiAgIH0KPiBkaWZmIC0tZ2l0IGEvc29j
a2V0X2dsdWUuYyBiL3NvY2tldHMuYwo+IHNpbWlsYXJpdHkgaW5kZXggNjAlCj4gcmVuYW1lIGZy
b20gc29ja2V0X2dsdWUuYwo+IHJlbmFtZSB0byBzb2NrZXRzLmMKPiBpbmRleCBlN2RjMzNjLi5i
ZGYyMWFkIDEwMDY0NAo+IC0tLSBhL3NvY2tldF9nbHVlLmMKPiArKysgYi9zb2NrZXRzLmMKPiBA
QCAtMSwyMCArMSw1MCBAQAo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xh
dXNlICovCj4gKy8qCj4gKyAqIEF1dGhvcnM6IFNoYXJhbiBTYW50aGFuYW0gPHNoYXJhbi5zYW50
aGFuYW1AbmVjbGFiLmV1Pgo+ICsgKgo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTksIE5FQyBMYWJv
cmF0b3JpZXMgRXVyb3BlIEdtYkgsIE5FQyBDb3Jwb3JhdGlvbi4KPiArICogICAgICAgICAgICAg
ICAgICAgICBBbGwgcmlnaHRzIHJlc2VydmVkLgo+ICsgKgo+ICsgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKPiArICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCj4gKyAqIGFyZSBtZXQ6Cj4gKyAqCj4gKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KPiArICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQo+ICsgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgo+ICsgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCj4gKyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCj4gKyAqICAgIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCj4gKyAqCj4g
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMgIkFTIElTIgo+ICsgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCj4gKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFCj4gKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKPiArICogTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgo+ICsg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgo+ICsgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKPiArICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
PiArICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKPiArICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKPiArICogUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCj4gKyAqCj4gKyAqIFRISVMgSEVBREVSIE1BWSBOT1QgQkUg
RVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCj4gKyAqLwo+ICsKPiAgIC8qIG5ldHdv
cmsgc3R1YiBjYWxscyAqLwo+ICAgI2luY2x1ZGUgPHN5cy90aW1lLmg+Cj4gICAjaW5jbHVkZSA8
dmZzY29yZS9maWxlLmg+Cj4gICAjaW5jbHVkZSA8dWsvYWxsb2MuaD4KPiAgICNpbmNsdWRlIDx1
ay9lc3NlbnRpYWxzLmg+Cj4gLSNpbmNsdWRlIDx1ay9wcmludC5oPgo+ICAgI2luY2x1ZGUgPHVr
L2VycnB0ci5oPgo+ICAgI2luY2x1ZGUgPHN0ZGlvLmg+Cj4gICAjaW5jbHVkZSA8ZXJybm8uaD4K
PiAgICNpbmNsdWRlIDxsd2lwL3NvY2tldHMuaD4KPiAgIAo+IC0jZGVmaW5lICBORVRfTElCX05B
TUUgICAgICAgICAgImx3aXAtc29ja2V0Igo+IC0jZGVmaW5lICBTT0NLX05FVF9TRVRfRVJSTk8o
ZXJyY29kZSkgXAo+IC0JCQlkbyB7XAo+IC0JCQkJZXJybm8gPSAtKGVycmNvZGUpO1wKPiAtCQkJ
fSB3aGlsZSgwKQo+IC0KPiArI2RlZmluZSBTT0NLX05FVF9TRVRfRVJSTk8oZXJyY29kZSkgXAo+
ICsJKGVycm5vID0gLShlcnJjb2RlKSkKPiAgIAo+ICAgc3RydWN0IHNvY2tfbmV0X2ZpbGUgewo+
ICAgCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgdmZzY29yZV9maWxlOwo+IEBAIC0yNSw5ICs1NSwxMSBA
QCBzdGF0aWMgaW5saW5lIHN0cnVjdCBzb2NrX25ldF9maWxlICpzb2NrX25ldF9maWxlX2dldChp
bnQgZmQpCj4gICB7Cj4gICAJc3RydWN0IHNvY2tfbmV0X2ZpbGUgKmZpbGUgPSBOVUxMOwo+ICAg
CXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZvczsKPiArCj4gICAJZm9zICA9IHZmc2NvcmVfZ2V0X2Zp
bGUoZmQpOwo+IC0JaWYoTlVMTCA9PSBmb3MpIHsKPiAtCQl1a19wcmludGQoRExWTF9FUlIsImZh
aWxlZCB3aXRoIGludmFsaWQgZGVzY3JpcHRvclxuIik7Cj4gKwlpZiAoIWZvcykgewo+ICsJCUxX
SVBfREVCVUdGKFNPQ0tFVFNfREVCVUcsCj4gKwkJCSAgICAoImZhaWxlZCB3aXRoIGludmFsaWQg
ZGVzY3JpcHRvclxuIikpOwo+ICAgCQlmaWxlID0gRVJSMlBUUigtRUlOVkFMKTsKPiAgIAkJZ290
byBFWElUOwo+ICAgCX0KPiBAQCAtNDYsMjAgKzc4LDIyIEBAIHN0YXRpYyBpbnQgc29ja19mZF9h
bGxvYyhzdHJ1Y3QgdmZzY29yZV9mb3BzICpmb3BzLCBpbnQgc29ja19mZCkKPiAgIAl2ZnNfZmQg
PSB2ZnNjb3JlX2FsbG9jX2ZkKCk7Cj4gICAJaWYgKHZmc19mZCA8IDApIHsKPiAgIAkJcmV0ID0g
LUVORklMRTsKPiAtCQl1a19wcmludGQoRExWTF9FUlIsICJmYWlsZWQgdG8gYWxsb2NhdGUgc29j
a2V0IGZkXG4iKTsKPiArCQlMV0lQX0RFQlVHRihTT0NLRVRTX0RFQlVHLCAoImZhaWxlZCB0byBh
bGxvY2F0ZSBzb2NrZXQgZmRcbiIpKTsKPiAgIAkJZ290byBFWElUOwo+ICAgCX0KPiAgIAo+ICAg
CWZpbGUgPSB1a19tYWxsb2ModWtfYWxsb2NfZ2V0X2RlZmF1bHQoKSwgc2l6ZW9mKCpmaWxlKSk7
Cj4gICAJaWYgKCFmaWxlKSB7Cj4gICAJCXJldCA9IC1FTk9NRU07Cj4gLQkJdWtfcHJpbnRkKERM
VkxfRVJSLCAiZmFpbGVkIHRvIGFsbG9jYXRlIHNvY2tldCBmZCAtIG5vIG1lbVxuIik7Cj4gKwkJ
TFdJUF9ERUJVR0YoU09DS0VUU19ERUJVRywKPiArCQkJICAgICgiZmFpbGVkIHRvIGFsbG9jYXRl
IHNvY2tldCBmZDogbm8gbWVtXG4iKSk7Cj4gICAJCWdvdG8gVUtfTUVNX0FMTE9DX0VSUjsKPiAg
IAl9Cj4gICAJZmlsZS0+dmZzY29yZV9maWxlLmZvcHMgPSBmb3BzOwo+ICAgCWZpbGUtPnNvY2tf
ZmQgPSBzb2NrX2ZkOwo+IC0JdWtfcHJpbnRkKERMVkxfRVhUUkEsIE5FVF9MSUJfTkFNRSI6YWxs
b2NhdGVkIHNvY2tldCAlZCAoJXgpXG4iLAo+IC0JCQlmaWxlLT52ZnNjb3JlX2ZpbGUuZmQsIGZp
bGUtPnNvY2tfZmQpOwo+ICsJTFdJUF9ERUJVR0YoU09DS0VUU19ERUJVRywgKCJhbGxvY2F0ZWQg
c29ja2V0ICVkICgleClcbiIsCj4gKwkJCQkgICAgZmlsZS0+dmZzY29yZV9maWxlLmZkLAo+ICsJ
CQkJICAgIGZpbGUtPnNvY2tfZmQpKTsKPiAgIAkvKiBTdG9yaW5nIHRoZSBpbmZvcm1hdGlvbiB3
aXRoaW4gdGhlIHZmcyBzdHJ1Y3R1cmUgKi8KPiAgIAl2ZnNjb3JlX2luc3RhbGxfZmQodmZzX2Zk
LCAmZmlsZS0+dmZzY29yZV9maWxlKTsKPiAgIAlyZXQgPSB2ZnNfZmQ7Cj4gQEAgLTczLDEyICsx
MDcsMTQgQEAgVUtfTUVNX0FMTE9DX0VSUjoKPiAgIAo+ICAgc3RhdGljIGludCBzb2NrX25ldF9j
bG9zZShzdHJ1Y3QgdmZzY29yZV9maWxlICp2ZnNjb3JlX2ZpbGUpCj4gICB7Cj4gLQlpbnQgICAg
cmV0ID0gMDsKPiArCWludCByZXQgPSAwOwo+ICAgCXN0cnVjdCBzb2NrX25ldF9maWxlICpmaWxl
ID0gTlVMTDsKPiArCj4gICAJZmlsZSA9IF9fY29udGFpbmVyb2YodmZzY29yZV9maWxlLCBzdHJ1
Y3Qgc29ja19uZXRfZmlsZSwgdmZzY29yZV9maWxlKTsKPiAgIAo+IC0JdWtfcHJpbnRkKERMVkxf
RVhUUkEsIE5FVF9MSUJfTkFNRSI6IGNsb3NlKCkgJWQgKCV4KVxuIiwKPiAtCQkJZmlsZS0+dmZz
Y29yZV9maWxlLmZkLCBmaWxlLT5zb2NrX2ZkKTsKPiArCUxXSVBfREVCVUdGKFNPQ0tFVFNfREVC
VUcsICgiY2xvc2UgJWQgKCV4KVxuIiwKPiArCQkJCSAgICBmaWxlLT52ZnNjb3JlX2ZpbGUuZmQs
Cj4gKwkJCQkgICAgZmlsZS0+c29ja19mZCkpOwo+ICAgCj4gICAJLyogQ2xvc2UgYW5kIHJlbGVh
c2UgdGhlIGx3aXAgc29ja2V0ICovCj4gICAJcmV0ID0gbHdpcF9jbG9zZShmaWxlLT5zb2NrX2Zk
KTsKPiBAQCAtODksMTUgKzEyNSwxOCBAQCBzdGF0aWMgaW50IHNvY2tfbmV0X2Nsb3NlKHN0cnVj
dCB2ZnNjb3JlX2ZpbGUgKnZmc2NvcmVfZmlsZSkKPiAgIAlyZXR1cm4gcmV0Owo+ICAgfQo+ICAg
Cj4gLXN0YXRpYyBzc2l6ZV90IHNvY2tfbmV0X3dyaXRlKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKnZm
c2NvcmVfZmlsZSwgY29uc3Qgdm9pZCAqYnVmLAo+IC0JCQkgICAgIHNpemVfdCBjb3VudCkKPiAr
c3RhdGljIHNzaXplX3Qgc29ja19uZXRfd3JpdGUoc3RydWN0IHZmc2NvcmVfZmlsZSAqdmZzY29y
ZV9maWxlLAo+ICsJCQkgICAgICBjb25zdCB2b2lkICpidWYsIHNpemVfdCBjb3VudCkKPiAgIHsK
PiAgIAlpbnQgcmV0ID0gMDsKPiAgIAlzdHJ1Y3Qgc29ja19uZXRfZmlsZSAqZmlsZSA9IE5VTEw7
Cj4gKwo+ICAgCWZpbGUgPSBfX2NvbnRhaW5lcm9mKHZmc2NvcmVfZmlsZSwgc3RydWN0IHNvY2tf
bmV0X2ZpbGUsCj4gLQkJCQl2ZnNjb3JlX2ZpbGUpOwo+IC0JdWtfcHJpbnRkKERMVkxfRVhUUkEs
IE5FVF9MSUJfTkFNRSI6IHdyaXRlICVkICgleCk6JXNcbiIsCj4gLQkJCWZpbGUtPnZmc2NvcmVf
ZmlsZS5mZCwgZmlsZS0+c29ja19mZCwgKGNoYXIgKikgYnVmKTsKPiArCQkJICAgICB2ZnNjb3Jl
X2ZpbGUpOwo+ICsJTFdJUF9ERUJVR0YoU09DS0VUU19ERUJVRywgKCJ3cml0ZSAlZCAoJXgpOiVz
XG4iLAo+ICsJCQkJICAgIGZpbGUtPnZmc2NvcmVfZmlsZS5mZCwKPiArCQkJCSAgICBmaWxlLT5z
b2NrX2ZkLAo+ICsJCQkJICAgIChjaGFyICopIGJ1ZikpOwo+ICAgCXJldCA9IGx3aXBfd3JpdGUo
ZmlsZS0+c29ja19mZCwgYnVmLCBjb3VudCk7Cj4gICAJcmV0dXJuIHJldDsKPiAgIH0KPiBAQCAt
MTA3LDEwICsxNDYsMTMgQEAgc3RhdGljIHNzaXplX3Qgc29ja19uZXRfcmVhZChzdHJ1Y3QgdmZz
Y29yZV9maWxlICp2ZnNjb3JlX2ZpbGUsIHZvaWQgKmJ1ZiwKPiAgIHsKPiAgIAlpbnQgcmV0ID0g
MDsKPiAgIAlzdHJ1Y3Qgc29ja19uZXRfZmlsZSAqZmlsZSA9IE5VTEw7Cj4gKwo+ICAgCWZpbGUg
PSBfX2NvbnRhaW5lcm9mKHZmc2NvcmVfZmlsZSwgc3RydWN0IHNvY2tfbmV0X2ZpbGUsCj4gLQkJ
CQl2ZnNjb3JlX2ZpbGUpOwo+IC0JdWtfcHJpbnRkKERMVkxfRVhUUkEsIE5FVF9MSUJfTkFNRSI6
IHdyaXRlICVkICgleCk6JXNcbiIsCj4gLQkJCWZpbGUtPnZmc2NvcmVfZmlsZS5mZCwgZmlsZS0+
c29ja19mZCwgKGNoYXIgKikgYnVmKTsKPiArCQkJICAgICB2ZnNjb3JlX2ZpbGUpOwo+ICsJTFdJ
UF9ERUJVR0YoU09DS0VUU19ERUJVRywgKCJ3cml0ZSAlZCAoJXgpOiVzXG4iLAo+ICsJCQkJICAg
IGZpbGUtPnZmc2NvcmVfZmlsZS5mZCwKPiArCQkJCSAgICBmaWxlLT5zb2NrX2ZkLAo+ICsJCQkJ
ICAgIChjaGFyICopIGJ1ZikpOwo+ICAgCXJldCA9IGx3aXBfcmVhZChmaWxlLT5zb2NrX2ZkLCBi
dWYsIGNvdW50KTsKPiAgIAlyZXR1cm4gcmV0Owo+ICAgfQo+IEBAIC0xMjksMTYgKzE3MSwxOSBA
QCBpbnQgc29ja2V0KGludCBkb21haW4sIGludCB0eXBlLCBpbnQgcHJvdG9jb2wpCj4gICAKPiAg
IAkvKiBDcmVhdGUgbHdpcF9zb2NrZXQgKi8KPiAgIAlzb2NrX2ZkID0gbHdpcF9zb2NrZXQoZG9t
YWluLCB0eXBlLCBwcm90b2NvbCk7Cj4gLQlpZigwID4gc29ja19mZCkgewo+IC0JCXVrX3ByaW50
ZChETFZMX0VSUiwgImZhaWxlZCB0byBjcmVhdGUgc29ja2V0ICVkXG4iLCBlcnJubyk7Cj4gKwlp
ZiAoc29ja19mZCA8IDApIHsKPiArCQlMV0lQX0RFQlVHRihTT0NLRVRTX0RFQlVHLCAoImZhaWxl
ZCB0byBjcmVhdGUgc29ja2V0ICVkXG4iLAo+ICsJCQkJCSAgICBlcnJubykpOwo+ICAgCQlyZXQg
PSAtMTsKPiAgIAkJZ290byBFWElUOwo+ICAgCX0KPiAgIAo+ICAgCS8qIEFsbG9jYXRlIHRoZSBm
aWxlIGRlc2NyaXB0b3IgKi8KPiAgIAl2ZnNfZmQgPSBzb2NrX2ZkX2FsbG9jKCZzb2NrX25ldF9m
b3BzLCBzb2NrX2ZkKTsKPiAtCWlmKDAgPiB2ZnNfZmQpIHsKPiAtCQl1a19wcmludGQoRExWTF9F
UlIsICJmYWlsZWQgdG8gYWxsb2NhdGUgZGVzY3JpcHRvciAlZFxuIiwgZXJybm8pOwo+ICsJaWYg
KHZmc19mZCA8IDApIHsKPiArCQlMV0lQX0RFQlVHRihTT0NLRVRTX0RFQlVHLAo+ICsJCQkgICAg
KCJmYWlsZWQgdG8gYWxsb2NhdGUgZGVzY3JpcHRvciAlZFxuIiwKPiArCQkJICAgICBlcnJubykp
Owo+ICAgCQlyZXQgPSAtMTsKPiAgIAkJLyogU2V0dGluZyB0aGUgZXJybm8gKi8KPiAgIAkJU09D
S19ORVRfU0VUX0VSUk5PKHZmc19mZCk7Cj4gQEAgLTE2MCwyOCArMjA1LDMxIEBAIGludCBhY2Nl
cHQoaW50IHMsIHN0cnVjdCBzb2NrYWRkciAqYWRkciwgc29ja2xlbl90ICphZGRybGVuKQo+ICAg
CWludCByZXQgPSAwOwo+ICAgCXN0cnVjdCBzb2NrX25ldF9maWxlICpmaWxlOwo+ICAgCWludCBz
b2NrX2ZkLCB2ZnNfZmQ7Cj4gKwo+ICAgCWZpbGUgPSBzb2NrX25ldF9maWxlX2dldChzKTsKPiAt
CWlmKFBUUklTRVJSKGZpbGUpKSB7Cj4gLQkJdWtfcHJpbnRkKERMVkxfRVJSLCAiZmFpbGVkIHRv
IGFjY2VwdCBpbmNvbWluZ2kgY29ubmVjdGlvbiBcbiIpOwo+ICsJaWYgKFBUUklTRVJSKGZpbGUp
KSB7Cj4gKwkJTFdJUF9ERUJVR0YoU09DS0VUU19ERUJVRywKPiArCQkJICAgICgiZmFpbGVkIHRv
IGFjY2VwdCBpbmNvbWluZ2kgY29ubmVjdGlvblxuIikpOwo+ICAgCQlyZXQgPSAtMTsKPiAgIAkJ
LyogU2V0dGluZyB0aGUgZXJybm8gKi8KPiAgIAkJU09DS19ORVRfU0VUX0VSUk5PKFBUUjJFUlIo
ZmlsZSkpOwo+IC0JICAgICAgICBnb3RvIEVYSVQ7Cj4gKwkJZ290byBFWElUOwo+ICAgCX0KPiAg
IAo+ICAgCS8qIEFjY2VwdCBhbiBpbmNvbWluZyBjb25uZWN0aW9uICovCj4gICAJc29ja19mZCA9
IGx3aXBfYWNjZXB0KGZpbGUtPnNvY2tfZmQsIGFkZHIsIGFkZHJsZW4pOwo+IC0JaWYoMCA+IHNv
Y2tfZmQpIHsKPiAtCQl1a19wcmludGQoRExWTF9FUlIsICJmYWlsZWQgdG8gYWNjZXB0IGluY29t
aW5nIGNvbm5lY3Rpb24gXG4iKTsKPiArCWlmIChzb2NrX2ZkIDwgMCkgewo+ICsJCUxXSVBfREVC
VUdGKFNPQ0tFVFNfREVCVUcsCj4gKwkJCSAgICAoImZhaWxlZCB0byBhY2NlcHQgaW5jb21pbmcg
Y29ubmVjdGlvblxuIikpOwo+ICAgCQlyZXQgPSAtMTsKPiAgIAkJZ290byBFWElUOwo+ICAgCX0K
PiAgIAo+ICAgCS8qIEFsbG9jYXRlIHRoZSBmaWxlIGRlc2NyaXB0b3IgZm9yIHRoZSBhY2NlcHRl
ZCBjb25uZWN0aW9uICovCj4gICAJdmZzX2ZkID0gc29ja19mZF9hbGxvYygmc29ja19uZXRfZm9w
cywgc29ja19mZCk7Cj4gLQlpZigwID4gdmZzX2ZkKSB7Cj4gLQkJdWtfcHJpbnRkKERMVkxfRVJS
LCAiZmFpbGVkIHRvIGFsbG9jYXRlCWRlc2NyaXB0b3IgZm9yIHRoZSIKPiAtCQkJImFjY2VwdGVk
IGNvbm5lY3Rpb24gXG4iKTsKPiArCWlmICh2ZnNfZmQgPCAwKSB7Cj4gKwkJTFdJUF9ERUJVR0Yo
U09DS0VUU19ERUJVRywKPiArCQkJICAgICgiZmFpbGVkIHRvIGFsbG9jYXRlIGRlc2NyaXB0b3Ig
Zm9yIGFjY2VwdGVkIGNvbm5lY3Rpb25cbiIpKTsKPiAgIAkJcmV0ID0gLTE7Cj4gICAJCS8qIFNl
dHRpbmcgdGhlIGVycm5vICovCj4gICAJCVNPQ0tfTkVUX1NFVF9FUlJOTyh2ZnNfZmQpOwo+IEBA
IC0yMDAsOSArMjQ4LDExIEBAIGludCBiaW5kKGludCBzLCBjb25zdCBzdHJ1Y3Qgc29ja2FkZHIg
Km5hbWUsIHNvY2tsZW5fdCBuYW1lbGVuKQo+ICAgewo+ICAgCWludCByZXQgPSAwOwo+ICAgCXN0
cnVjdCBzb2NrX25ldF9maWxlICpmaWxlID0gTlVMTDsKPiArCj4gICAJZmlsZSA9IHNvY2tfbmV0
X2ZpbGVfZ2V0KHMpOwo+IC0JaWYoUFRSSVNFUlIoZmlsZSkpIHsKPiAtCQl1a19wcmludGQoRExW
TF9FUlIsICJmYWlsZWQgdG8gaWRlbnRpZnkgdGhlIHNvY2tldCBkZXNjcmlwdG9yIFxuIik7Cj4g
KwlpZiAoUFRSSVNFUlIoZmlsZSkpIHsKPiArCQlMV0lQX0RFQlVHRihTT0NLRVRTX0RFQlVHLAo+
ICsJCQkgICAgKCJmYWlsZWQgdG8gaWRlbnRpZnkgc29ja2V0IGRlc2NyaXB0b3JcbiIpKTsKPiAg
IAkJcmV0ID0gLTE7Cj4gICAJCS8qIFNldHRpbmcgdGhlIGVycm5vICovCj4gICAJCVNPQ0tfTkVU
X1NFVF9FUlJOTyhQVFIyRVJSKGZpbGUpKTsKPiBAQCAtMjEwLDggKzI2MCw5IEBAIGludCBiaW5k
KGludCBzLCBjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKm5hbWUsIHNvY2tsZW5fdCBuYW1lbGVuKQo+
ICAgCX0KPiAgIAkvKiBCaW5kIGFuIGluY29taW5nIGNvbm5lY3Rpb24gKi8KPiAgIAlyZXQgPSBs
d2lwX2JpbmQoZmlsZS0+c29ja19mZCwgbmFtZSwgbmFtZWxlbik7Cj4gLQlpZigwID4gcmV0KSB7
Cj4gLQkJdWtfcHJpbnRkKERMVkxfRVJSLCAiZmFpbGVkIHRvIGJpbmQgd2l0aCB0aGUgc29ja2V0
IFxuIik7Cj4gKwlpZiAocmV0IDwgMCkgewo+ICsJCUxXSVBfREVCVUdGKFNPQ0tFVFNfREVCVUcs
Cj4gKwkJCSAgICAoImZhaWxlZCB0byBiaW5kIHdpdGggc29ja2V0XG4iKSk7Cj4gICAJCXJldCA9
IC0xOwo+ICAgCQlnb3RvIEVYSVQ7Cj4gICAJfQo+IEBAIC0yMjMsOSArMjc0LDExIEBAIGludCBz
aHV0ZG93bihpbnQgcywgaW50IGhvdykKPiAgIHsKPiAgIAlpbnQgcmV0ID0gMDsKPiAgIAlzdHJ1
Y3Qgc29ja19uZXRfZmlsZSAqZmlsZSA9IE5VTEw7Cj4gKwo+ICAgCWZpbGUgPSBzb2NrX25ldF9m
aWxlX2dldChzKTsKPiAtCWlmKFBUUklTRVJSKGZpbGUpKSB7Cj4gLQkJdWtfcHJpbnRkKERMVkxf
RVJSLCAiZmFpbGVkIHRvIGlkZW50aWZ5IHRoZSBzb2NrZXQgZGVzY3JpcHRvciBcbiIpOwo+ICsJ
aWYgKFBUUklTRVJSKGZpbGUpKSB7Cj4gKwkJTFdJUF9ERUJVR0YoU09DS0VUU19ERUJVRywKPiAr
CQkJICAgICgiZmFpbGVkIHRvIGlkZW50aWZ5IHNvY2tldCBkZXNjcmlwdG9yXG4iKSk7Cj4gICAJ
CXJldCA9IC0xOwo+ICAgCQkvKiBTZXR0aW5nIHRoZSBlcnJubyAqLwo+ICAgCQlTT0NLX05FVF9T
RVRfRVJSTk8oUFRSMkVSUihmaWxlKSk7Cj4gQEAgLTI0MSw5ICsyOTQsMTAgQEAgaW50IGdldHBl
ZXJuYW1lKGludCBzLCBzdHJ1Y3Qgc29ja2FkZHIgKm5hbWUsIHNvY2tsZW5fdCAqbmFtZWxlbikK
PiAgIHsKPiAgIAlpbnQgcmV0ID0gMDsKPiAgIAlzdHJ1Y3Qgc29ja19uZXRfZmlsZSAqZmlsZSA9
IE5VTEw7Cj4gKwo+ICAgCWZpbGUgPSBzb2NrX25ldF9maWxlX2dldChzKTsKPiAtCWlmKFBUUklT
RVJSKGZpbGUpKSB7Cj4gLQkJdWtfcHJpbnRkKERMVkxfRVJSLCAiZmFpbGVkIHRvIGlkZW50aWZ5
IHRoZSBzb2NrZXRcbiIpOwo+ICsJaWYgKFBUUklTRVJSKGZpbGUpKSB7Cj4gKwkJTFdJUF9ERUJV
R0YoU09DS0VUU19ERUJVRywgKCJmYWlsZWQgdG8gaWRlbnRpZnkgc29ja2V0XG4iKSk7Cj4gICAJ
CXJldCA9IC0xOwo+ICAgCQlTT0NLX05FVF9TRVRfRVJSTk8oUFRSMkVSUihmaWxlKSk7Cj4gICAJ
CWdvdG8gRVhJVDsKPiBAQCAtMjU3LDkgKzMxMSwxMCBAQCBpbnQgZ2V0c29ja25hbWUoaW50IHMs
IHN0cnVjdCBzb2NrYWRkciAqbmFtZSwgc29ja2xlbl90ICpuYW1lbGVuKQo+ICAgewo+ICAgCWlu
dCByZXQgPSAwOwo+ICAgCXN0cnVjdCBzb2NrX25ldF9maWxlICpmaWxlID0gTlVMTDsKPiArCj4g
ICAJZmlsZSA9IHNvY2tfbmV0X2ZpbGVfZ2V0KHMpOwo+IC0JaWYoUFRSSVNFUlIoZmlsZSkpIHsK
PiAtCQl1a19wcmludGQoRExWTF9FUlIsICJmYWlsZWQgdG8gaWRlbnRpZnkgdGhlIHNvY2tldFxu
Iik7Cj4gKwlpZiAoUFRSSVNFUlIoZmlsZSkpIHsKPiArCQlMV0lQX0RFQlVHRihTT0NLRVRTX0RF
QlVHLCAoImZhaWxlZCB0byBpZGVudGlmeSBzb2NrZXRcbiIpKTsKPiAgIAkJcmV0ID0gLTE7Cj4g
ICAJCVNPQ0tfTkVUX1NFVF9FUlJOTyhQVFIyRVJSKGZpbGUpKTsKPiAgIAkJZ290byBFWElUOwo+
IEBAIC0yNzMsOSArMzI4LDExIEBAIGludCBnZXRzb2Nrb3B0KGludCBzLCBpbnQgbGV2ZWwsIGlu
dCBvcHRuYW1lLCB2b2lkICpvcHR2YWwsIHNvY2tsZW5fdCAqb3B0bGVuKQo+ICAgewo+ICAgCWlu
dCByZXQgPSAwOwo+ICAgCXN0cnVjdCBzb2NrX25ldF9maWxlICpmaWxlID0gTlVMTDsKPiArCj4g
ICAJZmlsZSA9IHNvY2tfbmV0X2ZpbGVfZ2V0KHMpOwo+IC0JaWYoUFRSSVNFUlIoZmlsZSkpIHsK
PiAtCQl1a19wcmludGQoRExWTF9FUlIsICJmYWlsZWQgdG8gaWRlbnRpZnkgdGhlIHNvY2tldCBk
ZXNjcmlwdG9yIFxuIik7Cj4gKwlpZiAoUFRSSVNFUlIoZmlsZSkpIHsKPiArCQlMV0lQX0RFQlVH
RihTT0NLRVRTX0RFQlVHLAo+ICsJCQkgICAgKCJmYWlsZWQgdG8gaWRlbnRpZnkgc29ja2V0IGRl
c2NyaXB0b3JcbiIpKTsKPiAgIAkJcmV0ID0gLTE7Cj4gICAJCVNPQ0tfTkVUX1NFVF9FUlJOTyhQ
VFIyRVJSKGZpbGUpKTsKPiAgIAkJZ290byBFWElUOwo+IEBAIC0yODUsMTQgKzM0MiwxNiBAQCBF
WElUOgo+ICAgCXJldHVybiByZXQ7Cj4gICB9Cj4gICAKPiAtaW50IHNldHNvY2tvcHQgKGludCBz
LCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLCBjb25zdCB2b2lkICpvcHR2YWwsCj4gLQkJc29ja2xl
bl90IG9wdGxlbikKPiAraW50IHNldHNvY2tvcHQoaW50IHMsIGludCBsZXZlbCwgaW50IG9wdG5h
bWUsIGNvbnN0IHZvaWQgKm9wdHZhbCwKPiArCSAgICAgICBzb2NrbGVuX3Qgb3B0bGVuKQo+ICAg
ewo+ICAgCWludCByZXQgPSAwOwo+ICAgCXN0cnVjdCBzb2NrX25ldF9maWxlICpmaWxlID0gTlVM
TDsKPiArCj4gICAJZmlsZSA9IHNvY2tfbmV0X2ZpbGVfZ2V0KHMpOwo+IC0JaWYoUFRSSVNFUlIo
ZmlsZSkpIHsKPiAtCQl1a19wcmludGQoRExWTF9FUlIsICJmYWlsZWQgdG8gaWRlbnRpZnkgdGhl
IHNvY2tldCBkZXNjcmlwdG9yIFxuIik7Cj4gKwlpZiAoUFRSSVNFUlIoZmlsZSkpIHsKPiArCQlM
V0lQX0RFQlVHRihTT0NLRVRTX0RFQlVHLAo+ICsJCQkgICAgKCJmYWlsZWQgdG8gaWRlbnRpZnkg
c29ja2V0IGRlc2NyaXB0b3JcbiIpKTsKPiAgIAkJcmV0ID0gLTE7Cj4gICAJCVNPQ0tfTkVUX1NF
VF9FUlJOTyhQVFIyRVJSKGZpbGUpKTsKPiAgIAkJZ290byBFWElUOwo+IEBAIC0zMDYsOSArMzY1
LDExIEBAIGludCBjb25uZWN0KGludCBzLCBjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKm5hbWUsIHNv
Y2tsZW5fdCBuYW1lbGVuKQo+ICAgewo+ICAgCWludCByZXQgPSAwOwo+ICAgCXN0cnVjdCBzb2Nr
X25ldF9maWxlICpmaWxlID0gTlVMTDsKPiArCj4gICAJZmlsZSA9IHNvY2tfbmV0X2ZpbGVfZ2V0
KHMpOwo+IC0JaWYoUFRSSVNFUlIoZmlsZSkpIHsKPiAtCQl1a19wcmludGQoRExWTF9FUlIsICJm
YWlsZWQgdG8gaWRlbnRpZnkgdGhlIHNvY2tldCBkZXNjcmlwdG9yIFxuIik7Cj4gKwlpZiAoUFRS
SVNFUlIoZmlsZSkpIHsKPiArCQlMV0lQX0RFQlVHRihTT0NLRVRTX0RFQlVHLAo+ICsJCQkgICAg
KCJmYWlsZWQgdG8gaWRlbnRpZnkgc29ja2V0IGRlc2NyaXB0b3JcbiIpKTsKPiAgIAkJcmV0ID0g
LTE7Cj4gICAJCVNPQ0tfTkVUX1NFVF9FUlJOTyhQVFIyRVJSKGZpbGUpKTsKPiAgIAkJZ290byBF
WElUOwo+IEBAIC0zMjIsOSArMzgzLDExIEBAIGludCBsaXN0ZW4oaW50IHMsIGludCBiYWNrbG9n
KQo+ICAgewo+ICAgCWludCByZXQgPSAwOwo+ICAgCXN0cnVjdCBzb2NrX25ldF9maWxlICpmaWxl
ID0gTlVMTDsKPiArCj4gICAJZmlsZSA9IHNvY2tfbmV0X2ZpbGVfZ2V0KHMpOwo+IC0JaWYoUFRS
SVNFUlIoZmlsZSkpIHsKPiAtCQl1a19wcmludGQoRExWTF9FUlIsICJmYWlsZWQgdG8gaWRlbnRp
ZnkgdGhlIHNvY2tldCBkZXNjcmlwdG9yIFxuIik7Cj4gKwlpZiAoUFRSSVNFUlIoZmlsZSkpIHsK
PiArCQlMV0lQX0RFQlVHRihTT0NLRVRTX0RFQlVHLAo+ICsJCQkgICAgKCJmYWlsZWQgdG8gaWRl
bnRpZnkgc29ja2V0IGRlc2NyaXB0b3JcbiIpKTsKPiAgIAkJcmV0ID0gLTE7Cj4gICAJCVNPQ0tf
TkVUX1NFVF9FUlJOTyhQVFIyRVJSKGZpbGUpKTsKPiAgIAkJZ290byBFWElUOwo+IEBAIC0zMzgs
OSArNDAxLDExIEBAIGludCByZWN2KGludCBzLCB2b2lkICptZW0sIHNpemVfdCBsZW4sIGludCBm
bGFncykKPiAgIHsKPiAgIAlpbnQgcmV0ID0gMDsKPiAgIAlzdHJ1Y3Qgc29ja19uZXRfZmlsZSAq
ZmlsZSA9IE5VTEw7Cj4gKwo+ICAgCWZpbGUgPSBzb2NrX25ldF9maWxlX2dldChzKTsKPiAtCWlm
KFBUUklTRVJSKGZpbGUpKSB7Cj4gLQkJdWtfcHJpbnRkKERMVkxfRVJSLCAiZmFpbGVkIHRvIGlk
ZW50aWZ5IHRoZSBzb2NrZXQgZGVzY3JpcHRvciBcbiIpOwo+ICsJaWYgKFBUUklTRVJSKGZpbGUp
KSB7Cj4gKwkJTFdJUF9ERUJVR0YoU09DS0VUU19ERUJVRywKPiArCQkJICAgICgiZmFpbGVkIHRv
IGlkZW50aWZ5IHNvY2tldCBkZXNjcmlwdG9yXG4iKSk7Cj4gICAJCXJldCA9IC0xOwo+ICAgCQlT
T0NLX05FVF9TRVRfRVJSTk8oUFRSMkVSUihmaWxlKSk7Cj4gICAJCWdvdG8gRVhJVDsKPiBAQCAt
MzU1LDkgKzQyMCwxMSBAQCBpbnQgcmVjdmZyb20oaW50IHMsIHZvaWQgKm1lbSwgc2l6ZV90IGxl
biwgaW50IGZsYWdzLAo+ICAgewo+ICAgCWludCByZXQgPSAwOwo+ICAgCXN0cnVjdCBzb2NrX25l
dF9maWxlICpmaWxlID0gTlVMTDsKPiArCj4gICAJZmlsZSA9IHNvY2tfbmV0X2ZpbGVfZ2V0KHMp
Owo+IC0JaWYoUFRSSVNFUlIoZmlsZSkpIHsKPiAtCQl1a19wcmludGQoRExWTF9FUlIsICJmYWls
ZWQgdG8gaWRlbnRpZnkgdGhlIHNvY2tldCBkZXNjcmlwdG9yIFxuIik7Cj4gKwlpZiAoUFRSSVNF
UlIoZmlsZSkpIHsKPiArCQlMV0lQX0RFQlVHRihTT0NLRVRTX0RFQlVHLAo+ICsJCQkgICAgKCJm
YWlsZWQgdG8gaWRlbnRpZnkgc29ja2V0IGRlc2NyaXB0b3JcbiIpKTsKPiAgIAkJcmV0ID0gLTE7
Cj4gICAJCVNPQ0tfTkVUX1NFVF9FUlJOTyhQVFIyRVJSKGZpbGUpKTsKPiAgIAkJZ290byBFWElU
Owo+IEBAIC0zNzEsOSArNDM4LDExIEBAIGludCBzZW5kKGludCBzLCBjb25zdCB2b2lkICpkYXRh
cHRyLCBzaXplX3Qgc2l6ZSwgaW50IGZsYWdzKQo+ICAgewo+ICAgCWludCByZXQgPSAwOwo+ICAg
CXN0cnVjdCBzb2NrX25ldF9maWxlICpmaWxlID0gTlVMTDsKPiArCj4gICAJZmlsZSA9IHNvY2tf
bmV0X2ZpbGVfZ2V0KHMpOwo+IC0JaWYoUFRSSVNFUlIoZmlsZSkpIHsKPiAtCQl1a19wcmludGQo
RExWTF9FUlIsICJmYWlsZWQgdG8gaWRlbnRpZnkgdGhlIHNvY2tldCBkZXNjcmlwdG9yIFxuIik7
Cj4gKwlpZiAoUFRSSVNFUlIoZmlsZSkpIHsKPiArCQlMV0lQX0RFQlVHRihTT0NLRVRTX0RFQlVH
LAo+ICsJCQkgICAgKCJmYWlsZWQgdG8gaWRlbnRpZnkgc29ja2V0IGRlc2NyaXB0b3JcbiIpKTsK
PiAgIAkJcmV0ID0gLTE7Cj4gICAJCVNPQ0tfTkVUX1NFVF9FUlJOTyhQVFIyRVJSKGZpbGUpKTsK
PiAgIAkJZ290byBFWElUOwo+IEBAIC0zODcsOSArNDU2LDExIEBAIGludCBzZW5kbXNnKGludCBz
LCBjb25zdCBzdHJ1Y3QgbXNnaGRyICptZXNzYWdlLCBpbnQgZmxhZ3MpCj4gICB7Cj4gICAJaW50
IHJldCA9IDA7Cj4gICAJc3RydWN0IHNvY2tfbmV0X2ZpbGUgKmZpbGUgPSBOVUxMOwo+ICsKPiAg
IAlmaWxlID0gc29ja19uZXRfZmlsZV9nZXQocyk7Cj4gLQlpZihQVFJJU0VSUihmaWxlKSkgewo+
IC0JCXVrX3ByaW50ZChETFZMX0VSUiwgImZhaWxlZCB0byBpZGVudGlmeSB0aGUgc29ja2V0IGRl
c2NyaXB0b3IgXG4iKTsKPiArCWlmIChQVFJJU0VSUihmaWxlKSkgewo+ICsJCUxXSVBfREVCVUdG
KFNPQ0tFVFNfREVCVUcsCj4gKwkJCSAgICAoImZhaWxlZCB0byBpZGVudGlmeSBzb2NrZXQgZGVz
Y3JpcHRvclxuIikpOwo+ICAgCQlyZXQgPSAtMTsKPiAgIAkJU09DS19ORVRfU0VUX0VSUk5PKFBU
UjJFUlIoZmlsZSkpOwo+ICAgCQlnb3RvIEVYSVQ7Cj4gQEAgLTQwNCw5ICs0NzUsMTEgQEAgaW50
IHNlbmR0byhpbnQgcywgY29uc3Qgdm9pZCAqZGF0YXB0ciwgc2l6ZV90IHNpemUsIGludCBmbGFn
cywKPiAgIHsKPiAgIAlpbnQgcmV0ID0gMDsKPiAgIAlzdHJ1Y3Qgc29ja19uZXRfZmlsZSAqZmls
ZSA9IE5VTEw7Cj4gKwo+ICAgCWZpbGUgPSBzb2NrX25ldF9maWxlX2dldChzKTsKPiAtCWlmKFBU
UklTRVJSKGZpbGUpKSB7Cj4gLQkJdWtfcHJpbnRkKERMVkxfRVJSLCAiZmFpbGVkIHRvIGlkZW50
aWZ5IHRoZSBzb2NrZXQgZGVzY3JpcHRvciBcbiIpOwo+ICsJaWYgKFBUUklTRVJSKGZpbGUpKSB7
Cj4gKwkJTFdJUF9ERUJVR0YoU09DS0VUU19ERUJVRywKPiArCQkJICAgICgiZmFpbGVkIHRvIGlk
ZW50aWZ5IHNvY2tldCBkZXNjcmlwdG9yXG4iKSk7Cj4gICAJCXJldCA9IC0xOwo+ICAgCQlTT0NL
X05FVF9TRVRfRVJSTk8oUFRSMkVSUihmaWxlKSk7Cj4gICAJCWdvdG8gRVhJVDsKPiBAQCAtNDE1
LDExICs0ODgsMyBAQCBpbnQgc2VuZHRvKGludCBzLCBjb25zdCB2b2lkICpkYXRhcHRyLCBzaXpl
X3Qgc2l6ZSwgaW50IGZsYWdzLAo+ICAgRVhJVDoKPiAgIAlyZXR1cm4gcmV0Owo+ICAgfQo+IC0K
PiAtaW50IHNlbGVjdChpbnQgbWF4ZmRwMSwgZmRfc2V0ICpyZWFkc2V0LCBmZF9zZXQgKndyaXRl
c2V0LCBmZF9zZXQKPiAtCQkqZXhjZXB0c2V0LCBzdHJ1Y3QgdGltZXZhbCAqdGltZW91dCkKPiAt
ewo+IC0JaW50IHJldCA9IC0xOwo+IC0JU09DS19ORVRfU0VUX0VSUk5PKC1FTk9UU1VQKTsKPiAt
CXJldHVybiByZXQ7Cj4gLX0KPiBkaWZmIC0tZ2l0IGEvdGhyZWFkcy5jIGIvdGhyZWFkcy5jCj4g
aW5kZXggMWU2YmU0ZC4uM2VjMDZmYSAxMDA2NDQKPiAtLS0gYS90aHJlYWRzLmMKPiArKysgYi90
aHJlYWRzLmMKPiBAQCAtMSwyMyArMSw1OSBAQAo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmll
cjogQlNELTMtQ2xhdXNlICovCj4gKy8qCj4gKyAqIENvcHlyaWdodCAoYykgMjAxOSwgTkVDIExh
Ym9yYXRvcmllcyBFdXJvcGUgR21iSCwgTkVDIENvcnBvcmF0aW9uLgo+ICsgKiAgICAgICAgICAg
ICAgICAgICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4gKyAqCj4gKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAo+ICsg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKPiArICogYXJlIG1ldDoKPiArICoKPiArICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgo+ICsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCj4gKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCj4gKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIg
bm9yIHRoZSBuYW1lcyBvZiBpdHMKPiArICogICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KPiArICogICAgdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KPiArICoK
PiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCj4gKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKPiArICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UKPiArICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRQo+ICsgKiBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCj4g
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCj4gKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwo+ICsgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
Tgo+ICsgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQo+ICsgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQo+ICsgKiBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KPiArICoKPiArICogVEhJUyBIRUFERVIgTUFZIE5PVCBC
RSBFWFRSQUNURUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4KPiArICovCj4gKwo+ICAgI2luY2x1
ZGUgPHVrL2FyY2gvbGltaXRzLmg+Cj4gICAjaW5jbHVkZSA8dWsvc2NoZWQuaD4KPiAgICNpbmNs
dWRlIDx1ay90aHJlYWQuaD4KPiAgICNpbmNsdWRlIDx1ay9wcmludC5oPgo+ICAgI2luY2x1ZGUg
PHVrL2Fzc2VydC5oPgo+ICAgI2luY2x1ZGUgPGx3aXAvc3lzLmg+Cj4gKyNpbmNsdWRlIDx1ay9l
c3NlbnRpYWxzLmg+Cj4gICAKPiAtLyogU3RhcnRzIGEgbmV3IHRocmVhZCB3aXRoIHByaW9yaXR5
ICJwcmlvIiB0aGF0IHdpbGwgYmVnaW4gaXRzIGV4ZWN1dGlvbiBpbiB0aGUKPiArLyoqCj4gKyAq
IFN0YXJ0cyBhIG5ldyB0aHJlYWQgd2l0aCBwcmlvcml0eSAicHJpbyIgdGhhdCB3aWxsIGJlZ2lu
IGl0cyBleGVjdXRpb24gaW4gdGhlCj4gICAgKiBmdW5jdGlvbiAidGhyZWFkKCkiLiBUaGUgImFy
ZyIgYXJndW1lbnQgd2lsbCBiZSBwYXNzZWQgYXMgYW4gYXJndW1lbnQgdG8gdGhlCj4gICAgKiB0
aHJlYWQoKSBmdW5jdGlvbi4gVGhlIGlkIG9mIHRoZSBuZXcgdGhyZWFkIGlzIHJldHVybmVkLiBC
b3RoIHRoZSBpZCBhbmQKPiAtICogdGhlIHByaW9yaXR5IGFyZSBzeXN0ZW0gZGVwZW5kZW50LiAq
Lwo+ICsgKiB0aGUgcHJpb3JpdHkgYXJlIHN5c3RlbSBkZXBlbmRlbnQuCj4gKyAqLwo+ICAgc3lz
X3RocmVhZF90IHN5c190aHJlYWRfbmV3KGNvbnN0IGNoYXIgKm5hbWUsIGx3aXBfdGhyZWFkX2Zu
IHRocmVhZCwgdm9pZCAqYXJnLAo+IC0JCQkJaW50IHN0YWNrc2l6ZSwgaW50IHByaW8pCj4gKwkJ
CSAgICBpbnQgc3RhY2tzaXplLCBpbnQgcHJpbyBfX3VudXNlZCkKPiAgIHsKPiAgIAlzdHJ1Y3Qg
dWtfdGhyZWFkICp0Owo+IC0JaWYgKHN0YWNrc2l6ZSA+IF9fU1RBQ0tfU0laRSkgewo+IC0JCXVr
X3ByaW50ZChETFZMX0NSSVQsICJDYW4ndCBjcmVhdGUgbHdJUCB0aHJlYWQ6IHN0YWNrIHNpemUg
JXUgaXMgdG9vIGxhcmdlICg+ICV1KVxuIiwKPiAtCQkJCQlzdGFja3NpemUsIF9fU1RBQ0tfU0la
RSk7Cj4gLQkJVUtfQ1JBU0goIkR5aW5nXG4iKTsKPiArCj4gKwlpZiAoc3RhY2tzaXplID4gKF9f
c3N6KSBfX1NUQUNLX1NJWkUpIHsKPiArCQlVS19DUkFTSCgiQ2FuJ3QgY3JlYXRlIGx3SVAgdGhy
ZWFkOiBzdGFjayBzaXplICV1IGlzIHRvbyBsYXJnZSAoPiAlbGx1KS4gRHlpbmcuLi5cbiIsCj4g
KwkJCSBzdGFja3NpemUsIF9fU1RBQ0tfU0laRSk7Cj4gICAJfQo+IC0JdCA9IHVrX3RocmVhZF9j
cmVhdGUoKGNoYXIgKikgbmFtZSwgdGhyZWFkLCBhcmcpOwo+ICsJdCA9IHVrX3RocmVhZF9jcmVh
dGUobmFtZSwgdGhyZWFkLCBhcmcpOwo+ICAgCXJldHVybiB0Owo+ICAgfQo+IGRpZmYgLS1naXQg
YS90aW1lLmMgYi90aW1lLmMKPiBpbmRleCBjYTZiZThmLi5mNmIxMDUwIDEwMDY0NAo+IC0tLSBh
L3RpbWUuYwo+ICsrKyBiL3RpbWUuYwo+IEBAIC0xLDMgKzEsMzYgQEAKPiArLyogU1BEWC1MaWNl
bnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLwo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgKGMp
IDIwMTksIE5FQyBMYWJvcmF0b3JpZXMgRXVyb3BlIEdtYkgsIE5FQyBDb3Jwb3JhdGlvbi4KPiAr
ICogICAgICAgICAgICAgICAgICAgICBBbGwgcmlnaHRzIHJlc2VydmVkLgo+ICsgKgo+ICsgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKPiArICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCj4gKyAqIGFyZSBtZXQ6Cj4gKyAqCj4gKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KPiArICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQo+
ICsgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgo+ICsgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5
cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzCj4gKyAqICAgIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCj4g
KyAqICAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCj4gKyAqCj4gKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgo+ICsgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCj4gKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCj4gKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKPiArICog
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgo+ICsgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgo+ICsgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKPiArICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KPiArICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKPiArICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUKPiArICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCj4gKyAqCj4gKyAqIFRISVMgSEVB
REVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCj4gKyAqLwo+
ICsKPiAgICNpbmNsdWRlIDx1ay9hcmNoL3RpbWUuaD4KPiAgICNpbmNsdWRlIDx1ay9wbGF0L3Rp
bWUuaD4KPiAgICNpbmNsdWRlIDxsd2lwL3N5cy5oPgo+IAoKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5p
b3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9y
Zy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Feb 11 16:43:53 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 11 Feb 2019 16:43:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gtEgS-00071a-8W; Mon, 11 Feb 2019 16:43:52 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=tNxd=QS=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1gtEgQ-00071V-R1
 for minios-devel@lists.xen.org; Mon, 11 Feb 2019 16:43:50 +0000
X-Inumbo-ID: 345decd7-2e1c-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 345decd7-2e1c-11e9-bc90-bc764e045a96;
 Mon, 11 Feb 2019 16:43:49 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 18A28F2047;
 Mon, 11 Feb 2019 17:43:47 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id auEEQ5ra0Yhs; Mon, 11 Feb 2019 17:43:46 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id E227EF2046
 for <minios-devel@lists.xen.org>; Mon, 11 Feb 2019 17:43:44 +0100 (CET)
Received: from PALLENE.office.hd ([169.254.1.223]) by METHONE.office.hd
 ([192.168.24.54]) with mapi id 14.03.0319.002; Mon, 11 Feb 2019 17:43:44
 +0100
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: Florian Schmidt <Florian.Schmidt@neclab.eu>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT PATCH] support: don't throw error message when not
 in a git repo
Thread-Index: AQHUrmG2VZKnEDCyG06Hxv/iFTjnjKXa9SKA
Date: Mon, 11 Feb 2019 16:43:43 +0000
Message-ID: <D398D873-967B-45C5-B250-55A5BD11DD18@neclab.eu>
References: <20190117123929.18256-1-florian.schmidt@neclab.eu>
In-Reply-To: <20190117123929.18256-1-florian.schmidt@neclab.eu>
Accept-Language: en-GB, gl-ES, de-DE, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [10.1.99.239]
Content-ID: <A27B9EA9F1FD6C4CA597C4BB778B68EC@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT PATCH] support: don't throw error
 message when not in a git repo
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhhbmtzIGZvciB0aGlzIGZpeCENCg0KUmV2aWV3ZWQtYnk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9u
Lmt1ZW56ZXJAbmVjbGFiLmV1Pg0KDQrvu79PbiAxNy4wMS4xOSwgMTM6MzksICJGbG9yaWFuIFNj
aG1pZHQiIDxGbG9yaWFuLlNjaG1pZHRAbmVjbGFiLmV1PiB3cm90ZToNCg0KICAgIFRoZSBnaXRz
aGExIHNjcmlwdCBpcyB1c2VkIHRvIGNyZWF0ZSBhIHZlcnNpb24gc3RyaW5nIGZvciB1bmlrcmFm
dCB0aGF0DQogICAgaW5jbHVkZXMgdGhlIGdpdCBoYXNoLiBIb3dldmVyLCBpZiB3ZSBhcmUgbm90
IGJ1aWxkaW5nIGZyb20gYSBnaXQgcmVwbw0KICAgIGNoZWNrb3V0LCBpdCB3aWxsIHRocm93IGVy
cm9yIG1lc3NhZ2VzIG9uIHRoZSBjb21tYW5kIGxpbmUuIFN1cHByZXNzDQogICAgdGhlc2UgYmVj
YXVzZSB0aGVyZSdzIGxpdHRsZSBnYWluIGluIHRoZW0uDQogICAgDQogICAgU2lnbmVkLW9mZi1i
eTogRmxvcmlhbiBTY2htaWR0IDxmbG9yaWFuLnNjaG1pZHRAbmVjbGFiLmV1Pg0KICAgIC0tLQ0K
ICAgICBzdXBwb3J0L3NjcmlwdHMvZ2l0c2hhMSB8IDQgKystLQ0KICAgICAxIGZpbGUgY2hhbmdl
ZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQ0KICAgIA0KICAgIGRpZmYgLS1naXQg
YS9zdXBwb3J0L3NjcmlwdHMvZ2l0c2hhMSBiL3N1cHBvcnQvc2NyaXB0cy9naXRzaGExDQogICAg
aW5kZXggZjRiNzdkN2IuLmI4NmU0YTc3IDEwMDc1NQ0KICAgIC0tLSBhL3N1cHBvcnQvc2NyaXB0
cy9naXRzaGExDQogICAgKysrIGIvc3VwcG9ydC9zY3JpcHRzL2dpdHNoYTENCiAgICBAQCAtMSw2
ICsxLDYgQEANCiAgICAgIyEvYmluL3NoDQogICAgLVY9YGdpdCByZXYtcGFyc2UgLS1zaG9ydCBI
RUFEYA0KICAgIC1EPWBnaXQgbHMtZmlsZXMgLW1gDQogICAgK1Y9YGdpdCByZXYtcGFyc2UgLS1z
aG9ydCBIRUFEIDI+L2Rldi9udWxsYA0KICAgICtEPWBnaXQgbHMtZmlsZXMgLW0gMj4vZGV2L251
bGxgDQogICAgIGlmIFsgInokViIgIT0gInoiIF0NCiAgICAgdGhlbg0KICAgICAJaWYgWyAieiRE
IiAhPSAieiIgXQ0KICAgIC0tIA0KICAgIDIuMjAuMQ0KICAgIA0KICAgIA0KDQpfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGlu
ZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhl
bnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Feb 11 17:01:15 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 11 Feb 2019 17:01:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gtExH-0000Xr-5T; Mon, 11 Feb 2019 17:01:15 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=tNxd=QS=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1gtExF-0000Xm-Sc
 for minios-devel@lists.xen.org; Mon, 11 Feb 2019 17:01:13 +0000
X-Inumbo-ID: a2713244-2e1e-11e9-bc90-bc764e045a96
Received: from queen.nlehd.de (unknown [195.37.154.80])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id a2713244-2e1e-11e9-bc90-bc764e045a96;
 Mon, 11 Feb 2019 17:01:12 +0000 (UTC)
Received: from c414.ant-net (c414.ant-net [192.168.0.156])
 by queen.nlehd.de (Postfix) with ESMTP id F26C440AE2;
 Mon, 11 Feb 2019 18:01:12 +0100 (CET)
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: minios-devel@lists.xen.org
Date: Mon, 11 Feb 2019 18:01:10 +0100
Message-Id: <20190211170110.27077-1-simon.kuenzer@neclab.eu>
X-Mailer: git-send-email 2.11.0
Subject: [Minios-devel] [UNIKRAFT PATCH] build: Notice user when to do `make
 clean`
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Simon Kuenzer <simon.kuenzer@neclab.eu>, sharan.santhanam@neclab.eu
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhlIGxpdHRsZSBoZWxwZXIgc2NyaXB0IGBjb25maWd1cGRhdGVgIGRpZCBub3QgZGV0ZWN0IGFu
eSBjb25maWcgY2hhbmdlcwp3aXRoIGAuY29uZmlnYCBhbnltb3JlIGJlY2F1c2UgaXQgZGlkIHBy
ZWZpeCBgQ09ORklHX2AgcHJlZml4IGZvciB0aGUKY29uZmlndXJhdGlvbiBzeW1ib2xzLgpUaGlz
IGNvbW1pdCBtYWtlcyBzdXJlIHRoYXQgYGNvbmZpZ3VwZGF0ZWAgY2FuIGRldGVjdCBjaGFuZ2Vz
CihlLmcuLCBDUFUgYXJjaGl0ZWN0dXJlLCBjb2RlIG9wdGltaXphdGlvbnMpIHRoYXQgcmVxdWly
ZXMgYG1ha2UgY2xlYW5gCmJlZm9yZSBjb250aW51aW5nLiBJdCBpcyBzdGlsbCBjYWxsZWQgYXV0
b21hdGljYWxseSBieSB0aGUgYnVpbGQgc3lzdGVtLgoKU2lnbmVkLW9mZi1ieTogU2ltb24gS3Vl
bnplciA8c2ltb24ua3VlbnplckBuZWNsYWIuZXU+Ci0tLQogc3VwcG9ydC9zY3JpcHRzL2NvbmZp
Z3VwZGF0ZSB8IDYgKysrLS0tCiAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRl
bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3N1cHBvcnQvc2NyaXB0cy9jb25maWd1cGRhdGUgYi9z
dXBwb3J0L3NjcmlwdHMvY29uZmlndXBkYXRlCmluZGV4IGZlZDE0NDMwLi5jZTVjZTk4NiAxMDA3
NTUKLS0tIGEvc3VwcG9ydC9zY3JpcHRzL2NvbmZpZ3VwZGF0ZQorKysgYi9zdXBwb3J0L3Njcmlw
dHMvY29uZmlndXBkYXRlCkBAIC0yMywxMyArMjMsMTMgQEAgTkw9JCdcbicKIFsgLXogIiR7VUtf
Q09ORklHX09MRH0iIC1vICEgLWUgIiR7VUtfQ09ORklHX09MRH0iIF0gJiYgZXhpdCAwCiAKICMg
Q2hhbmdlIG9mIGFyY2hpdGVjdHVyZT8KLV9jb21wYXJlc3ltICJBUkNIXyIgIiR7VUtfQ09ORklH
fSIgIiR7VUtfQ09ORklHX09MRH0iIHx8IFVQREFURVMrPSIqKiogIC0gQ1BVIGFyY2hpdGVjdHVy
ZSBjaGFuZ2VkJHtOTH0iCitfY29tcGFyZXN5bSAiQ09ORklHX0FSQ0hfIiAiJHtVS19DT05GSUd9
IiAiJHtVS19DT05GSUdfT0xEfSIgfHwgVVBEQVRFUys9IioqKiAtIENQVSBhcmNoaXRlY3R1cmUg
Y2hhbmdlZCR7Tkx9IgogCiAjIENoYW5nZSBvZiBDUFUgb3B0aW9ucz8KLV9jb21wYXJlc3ltICJN
QVJDSF8iICIke1VLX0NPTkZJR30iICIke1VLX0NPTkZJR19PTER9IiB8fCBVUERBVEVTKz0iKioq
ICAtIENQVSBvcHRpbWl6YXRpb24gY2hhbmdlZCR7Tkx9IgorX2NvbXBhcmVzeW0gIkNPTkZJR19N
QVJDSF8iICIke1VLX0NPTkZJR30iICIke1VLX0NPTkZJR19PTER9IiB8fCBVUERBVEVTKz0iKioq
IC0gQ1BVIG9wdGltaXphdGlvbiBjaGFuZ2VkJHtOTH0iCiAKICMgQ2hhbmdlIG9mIG9wdGltaXph
dGlvbnM/Ci1fY29tcGFyZXN5bSAiT1BUSU1JWkVfIiAiJHtVS19DT05GSUd9IiAiJHtVS19DT05G
SUdfT0xEfSIgfHwgVVBEQVRFUys9IioqKiAtIENvZGUgb3B0aW1pemF0aW9uIGNoYW5nZWQke05M
fSIKK19jb21wYXJlc3ltICJDT05GSUdfT1BUSU1JWkVfIiAiJHtVS19DT05GSUd9IiAiJHtVS19D
T05GSUdfT0xEfSIgfHwgVVBEQVRFUys9IioqKiAtIENvZGUgb3B0aW1pemF0aW9uIGNoYW5nZWQk
e05MfSIKIAogaWYgWyAhIC16ICIkVVBEQVRFUyIgXTsgdGhlbgogCWVjaG8gIioqKiBUaGUgZm9s
bG93aW5nIGNvbmZpZ3VyYXRpb24gY2hhbmdlcyB3ZXJlIGRldGVjdGVkOiIKLS0gCjIuMTEuMAoK
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1k
ZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBz
Oi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Feb 11 17:42:28 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 11 Feb 2019 17:42:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gtFb9-0003sj-3J; Mon, 11 Feb 2019 17:42:27 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=ktH6=QS=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1gtFb7-0003se-Qu
 for minios-devel@lists.xen.org; Mon, 11 Feb 2019 17:42:25 +0000
X-Inumbo-ID: 604792ec-2e24-11e9-be57-8fe8e28d2ef5
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 604792ec-2e24-11e9-be57-8fe8e28d2ef5;
 Mon, 11 Feb 2019 17:42:18 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 99A78104DBE;
 Mon, 11 Feb 2019 18:42:16 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id JN4gZ3o2oZDG; Mon, 11 Feb 2019 18:42:16 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 6DFAE104DBD
 for <minios-devel@lists.xen.org>; Mon, 11 Feb 2019 18:42:14 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 11 Feb 2019 18:42:14
 +0100
To: Simon Kuenzer <simon.kuenzer@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190207230035.29861-1-simon.kuenzer@neclab.eu>
 <20190207230035.29861-4-simon.kuenzer@neclab.eu>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <d5274f8f-695e-65da-6f94-8a9473e81efc@neclab.eu>
Date: Mon, 11 Feb 2019 18:42:13 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190207230035.29861-4-simon.kuenzer@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT/LIBLWIP PATCH 3/5] Netif driver for
 libuknetdev devices
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gU2ltb24sCgpQbGVhc2UgZmluZCB0aGUgcmV2aWV3IGNvbW1lbnRzIGlubGluZS4KCgpU
aGFua3MgJiBSZWdhcmRzClNoYXJhbgoKT24gMi84LzE5IDEyOjAwIEFNLCBTaW1vbiBLdWVuemVy
IHdyb3RlOgo+IEludHJvZHVjZXMgYSBuZXRpZiBkcml2ZXIgZm9yIGxpYnVrbmV0ZGV2IGRldmlj
ZXMuIFBhY2tldCBidWZmZXJzIGFyZQo+IGFsbG9jYXRlZCBvbiB0aGUgaGVhcCBmb3Igbm93LiBS
ZWNlaXZlIGludGVycnVwdHMgYXJlIHN1cHBvcnRlZCBhbmQKPiBlbmFibGVkIHdoZW4gbHdJUCBp
cyBvcGVyYXRlZCBpbiAidGhyZWFkZWQiIG1vZGUuIFplcm8tY29weSByZWNlaXZlIGlzCj4gaW1w
bGVtZW50ZWQgd2l0aCBwYWNrZXQgYnVmZmVycyBoYXZpbmcgdHdvIHBlcnNvbmFsaXRpZXM6IHBi
dWYgYW5kIG5ldGJ1Zi4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBTaW1vbiBLdWVuemVyIDxzaW1vbi5r
dWVuemVyQG5lY2xhYi5ldT4KPiAtLS0KPiAgIENvbmZpZy51ayAgICAgICAgICAgICAgICB8ICAx
NyArKwo+ICAgTWFrZWZpbGUudWsgICAgICAgICAgICAgIHwgICAyICsKPiAgIGluY2x1ZGUvbmV0
aWYvdWtuZXRkZXYuaCB8ICA4MCArKysrKwo+ICAgbmV0YnVmLmMgICAgICAgICAgICAgICAgIHwg
MTA0ICsrKysrKysKPiAgIG5ldGJ1Zi5oICAgICAgICAgICAgICAgICB8IDEwNyArKysrKysrCj4g
ICB1a25ldGRldi5jICAgICAgICAgICAgICAgfCA2MTEgKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrCj4gICA2IGZpbGVzIGNoYW5nZWQsIDkyMSBpbnNlcnRpb25zKCspCj4g
ICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9uZXRpZi91a25ldGRldi5oCj4gICBjcmVhdGUg
bW9kZSAxMDA2NDQgbmV0YnVmLmMKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBuZXRidWYuaAo+ICAg
Y3JlYXRlIG1vZGUgMTAwNjQ0IHVrbmV0ZGV2LmMKPiAKPiBkaWZmIC0tZ2l0IGEvQ29uZmlnLnVr
IGIvQ29uZmlnLnVrCj4gaW5kZXggZGNlNTYwNy4uMjM4MTNkZSAxMDA2NDQKPiAtLS0gYS9Db25m
aWcudWsKPiArKysgYi9Db25maWcudWsKPiBAQCAtNyw2ICs3LDIzIEBAIG1lbnVjb25maWcgTElC
TFdJUAo+ICAgCXNlbGVjdCBIQVZFX05XX1NUQUNLCj4gICAKPiAgIGlmIExJQkxXSVAKPiArbWVu
dSAiTmV0aWYgZHJpdmVycyIKPiArY29uZmlnIExXSVBfVUtORVRERVYKPiArCWJvb2wgIlVuaWty
YWZ0IE5ldGRldiBFdGhlcm5ldCAobGlidWtuZXRkZXYpIgo+ICsJZGVmYXVsdCB5Cj4gKwlzZWxl
Y3QgTElCVUtORVRERVYKPiArCXNlbGVjdCBMSUJVS05FVERFVl9ESVNQQVRDSEVSVEhSRUFEUyBp
ZiBMV0lQX1RIUkVBRFMKPiArCWhlbHAKPiArCQlBIGdlbmVyaWMgZHJpdmVyIHRoYXQgb3BlcmF0
ZXMgbmV0d29yayBkcml2ZXJzIHRocm91Z2gKPiArCQlsaWJ1a25ldGRldiBBUEkuCj4gKwkJTm90
ZTogV2hlbiBsd0lQIGlzIGNvbmZpZ3VyZWQgd2l0aCBtYWlubG9vcCBtb2RlLCByZWNlaXZlCj4g
KwkJaW50ZXJydXB0cyBhcmUgbm90IGVuYWJsZWQgYnkgdGhpcyBkcml2ZXIgKHRoZXJlIGlzIGFs
c28gbm8KPiArCQlyZWNlaXZlIGludGVycnVwdCBoYW5kbGVyIHJlZ2lzdGVyZWQpLgo+ICsJCUlu
IGNhc2UgdGhyZWFkZWQgbW9kZSBpcyBzZWxlY3RlZCBhbmQgdGhlIHVuZGVybHlpbmcgZGV2aWNl
Cj4gKwkJZHJpdmVyIGRvZXMgbm90IHN1cHBvcnQgcmVjZWl2ZSBpbnRlcnJ1cHRzIHRoZSBuZXR3
b3JrCj4gKwkJaW50ZXJmYWNlcyBoYXZlIHRvIGJlIHBvbGxlZCBtYW51YWxseSAodWtuZXRkZXZf
cG9sbCgpKS4KPiArZW5kbWVudQo+ICsKPiAgIGNob2ljZQo+ICAgCXByb21wdCAiT3BlcmF0aW9u
IG1vZGUiCj4gICAJZGVmYXVsdCBMV0lQX1RIUkVBRFMKPiBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUu
dWsgYi9NYWtlZmlsZS51awo+IGluZGV4IGFlM2ZiZWEuLmU3YjdjYzYgMTAwNjQ0Cj4gLS0tIGEv
TWFrZWZpbGUudWsKPiArKysgYi9NYWtlZmlsZS51awo+IEBAIC0xMTEsNiArMTExLDggQEAgTElC
TFdJUF9TUkNTLSQoQ09ORklHX0xXSVBfU09DS0VUKSArPSAkKExJQkxXSVBfRVhUUkFDVEVEKS9h
cGkvc29ja2V0cy5jCj4gICAjIE5FVElGcwo+ICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKPiAg
IExJQkxXSVBfU1JDUy15ICs9ICQoTElCTFdJUF9FWFRSQUNURUQpL25ldGlmL2V0aGVybmV0LmMK
PiArTElCTFdJUF9TUkNTLSQoQ09ORklHX0xXSVBfVUtORVRERVYpICs9ICQoTElCTFdJUF9CQVNF
KS9uZXRidWYuY3x1bmlrcmFmdAo+ICtMSUJMV0lQX1NSQ1MtJChDT05GSUdfTFdJUF9VS05FVERF
VikgKz0gJChMSUJMV0lQX0JBU0UpL3VrbmV0ZGV2LmN8dW5pa3JhZnQKPiAgIAo+ICAgIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMKPiAgICMgSVB2NAo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL25ldGlm
L3VrbmV0ZGV2LmggYi9pbmNsdWRlL25ldGlmL3VrbmV0ZGV2LmgKPiBuZXcgZmlsZSBtb2RlIDEw
MDY0NAo+IGluZGV4IDAwMDAwMDAuLjc3YWFhNmQKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvaW5j
bHVkZS9uZXRpZi91a25ldGRldi5oCj4gQEAgLTAsMCArMSw4MCBAQAo+ICsvKiBTUERYLUxpY2Vu
c2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCj4gKy8qCj4gKyAqIEF1dGhvcnM6IFNpbW9u
IEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1Pgo+ICsgKgo+ICsgKiBDb3B5cmlnaHQg
KGMpIDIwMTksIE5FQyBMYWJvcmF0b3JpZXMgRXVyb3BlIEdtYkgsIE5FQyBDb3Jwb3JhdGlvbi4K
PiArICogICAgICAgICAgICAgICAgICAgICBBbGwgcmlnaHRzIHJlc2VydmVkLgo+ICsgKgo+ICsg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKPiArICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCj4gKyAqIGFyZSBtZXQ6Cj4gKyAqCj4gKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KPiArICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQo+ICsgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgo+ICsgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBj
b3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzCj4gKyAqICAgIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
Cj4gKyAqICAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCj4gKyAqCj4gKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgo+ICsgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCj4gKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCj4gKyAqIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKPiAr
ICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgo+ICsgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgo+ICsgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKPiAr
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KPiArICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKPiArICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUKPiArICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCj4gKyAqCj4gKyAqIFRISVMg
SEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCj4gKyAq
Lwo+ICsKPiArI2lmbmRlZiBfTFdJUF9VS05FVERFVl8KPiArI2RlZmluZSBfTFdJUF9VS05FVERF
Vl8KPiArCj4gKyNpbmNsdWRlIDx1ay9jb25maWcuaD4KPiArI2luY2x1ZGUgImx3aXAvb3B0Lmgi
Cj4gKwo+ICsjaWYgQ09ORklHX0xXSVBfVUtORVRERVYgLyogZG8gbm90IGRlZmluZSBhbnl0aGlu
ZyBpZiBub3QgY29uZmlndXJlZCBmb3IgdXNlICovCj4gKwo+ICsjaW5jbHVkZSAibHdpcC9uZXRp
Zi5oIgo+ICsjaW5jbHVkZSAibHdpcC9pcF9hZGRyLmgiCj4gKyNpbmNsdWRlICJuZXRpZi9ldGhl
cm5ldC5oIgo+ICsjaW5jbHVkZSA8dWsvbmV0ZGV2Lmg+Cj4gKwo+ICsjaWZkZWYgX19jcGx1c3Bs
dXMKPiArZXh0ZXJuICJDIiB7Cj4gKyNlbmRpZgo+ICsKPiArLyogQ29uZmlndXJlcyBhbmQgYnJp
bmdzIHVwIG5ldCBkZXZpY2UgKi8KPiArZXJyX3QgdWtuZXRkZXZfaW5pdChzdHJ1Y3QgbmV0aWYg
Km5mKTsKPiArCj4gKy8qCj4gKyAqIE5vdGU6IFdoZW4gdGhyZWFkaW5nIG1vZGUgaXMgZW5hYmxl
ZCwgb25seSB1a25ldGRldiBuZXRpZnMgdGhhdCBkbyBub3QKPiArICogc3VwcG9ydCByZWNlaXZl
IGludGVycnVwdHMgc2hvdWxkIGJlIHBvbGxlZCBmb3IgcGFja2V0cy4KPiArICovCj4gK3ZvaWQg
dWtuZXRkZXZfcG9sbChzdHJ1Y3QgbmV0aWYgKm5mKTsKPiArCj4gKyNpZmRlZiBDT05GSUdfTFdJ
UF9OT1RIUkVBRFMKPiArdm9pZCB1a25ldGRldl9wb2xsX2FsbCh2b2lkKTsKPiArI2VuZGlmIC8q
IENPTkZJR19MV0lQX05PVEhSRUFEUyAqLwo+ICsKPiArc3RydWN0IG5ldGlmICp1a25ldGRldl9h
ZGRpZihzdHJ1Y3QgdWtfbmV0ZGV2ICpuCj4gKyNpZiBMV0lQX0lQVjQKPiArCQkJICAgICAsCj4g
KwkJCSAgICAgY29uc3QgaXA0X2FkZHJfdCAqaXBhZGRyLAo+ICsJCQkgICAgIGNvbnN0IGlwNF9h
ZGRyX3QgKm5ldG1hc2ssCj4gKwkJCSAgICAgY29uc3QgaXA0X2FkZHJfdCAqZ3cKPiArI2VuZGlm
IC8qIExXSVBfSVBWNCAqLwo+ICsJKTsKPiArCj4gKyNpZmRlZiBfX2NwbHVzcGx1cwo+ICt9Cj4g
KyNlbmRpZgo+ICsKPiArI2VuZGlmIC8qIENPTkZJR19MV0lQX1VLTkVUREVWICovCj4gKyNlbmRp
ZiAvKiBfTFdJUF9ORVRERVZfICovCj4gZGlmZiAtLWdpdCBhL25ldGJ1Zi5jIGIvbmV0YnVmLmMK
PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjQ4NzhmNzQKPiAtLS0gL2Rl
di9udWxsCj4gKysrIGIvbmV0YnVmLmMKPiBAQCAtMCwwICsxLDEwNCBAQAo+ICsvKiBTUERYLUxp
Y2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCj4gKy8qCj4gKyAqIEF1dGhvcnM6IFNp
bW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1Pgo+ICsgKgo+ICsgKiBDb3B5cmln
aHQgKGMpIDIwMTksIE5FQyBMYWJvcmF0b3JpZXMgRXVyb3BlIEdtYkgsIE5FQyBDb3Jwb3JhdGlv
bi4KPiArICogICAgICAgICAgICAgICAgICAgICBBbGwgcmlnaHRzIHJlc2VydmVkLgo+ICsgKgo+
ICsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKPiArICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCj4gKyAqIGFyZSBtZXQ6Cj4gKyAqCj4gKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KPiArICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQo+ICsgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgo+ICsgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRo
ZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzCj4gKyAqICAgIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCj4gKyAqICAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCj4gKyAqCj4gKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgo+ICsgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCj4gKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCj4gKyAqIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUK
PiArICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgo+ICsgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgo+ICsgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
PiArICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KPiArICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKPiArICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUKPiArICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCj4gKyAqCj4gKyAqIFRI
SVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCj4g
KyAqLwo+ICsKPiArI2luY2x1ZGUgIm5ldGJ1Zi5oIgo+ICsjaW5jbHVkZSA8c3RyaW5nLmg+Cj4g
Kwo+ICsvKioKPiArICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgbHdpcCB3aGVuIG91ciBw
YnVmIGlzIGZyZWUnZAo+ICsgKiBBdCB0aGlzIHBvaW50LCBsd2lwIHNob3VsZCBoYXZlIG5vIHJl
ZmVyZW5jZSB0byB0aGUgcGJ1Zgo+ICsgKiBhbnltb3JlLCBzbyB3ZSBjYW4ganVzdCByZWxlYXNl
IHRoZSBlbmNhcHN1bGF0aW5nIG5ldGJ1Zgo+ICsgKi8KPiArc3RhdGljIHZvaWQgX25ldGJ1Zl9m
cmVlKHN0cnVjdCBwYnVmICpwKQo+ICt7Cj4gKwlzdHJ1Y3QgdWtfbmV0YnVmICpuYjsKPiArCj4g
KwluYiA9IGx3aXBfcGJ1Zl90b19uZXRidWYocCk7Cj4gKwl1a19uZXRidWZfZnJlZV9zaW5nbGUo
bmIpOwo+ICt9Cj4gKwo+ICtzdHJ1Y3QgdWtfbmV0YnVmICpsd2lwX2FsbG9jX25ldGJ1ZihzdHJ1
Y3QgdWtfYWxsb2MgKmEsIHNpemVfdCBhbGxvY19zaXplLAo+ICsJCQkJICAgIHNpemVfdCBoZWFk
cm9vbSkKPiArewo+ICsJdm9pZCAqYWxsb2NhdGlvbjsKPiArCXN0cnVjdCB1a19uZXRidWYgKmI7
Cj4gKwlzdHJ1Y3QgX25ldGJ1Zl9wYnVmICpucDsKPiArCj4gKwlhbGxvY2F0aW9uID0gdWtfbWFs
bG9jKGEsIGFsbG9jX3NpemUpOwo+ICsJaWYgKHVubGlrZWx5KCFhbGxvY2F0aW9uKSkKPiArCQln
b3RvIGVycl9vdXQ7Cj4gKwo+ICsJYiA9IHVrX25ldGJ1Zl9wcmVwYXJlX2J1ZihhbGxvY2F0aW9u
LCBhbGxvY19zaXplLAo+ICsJCQkJICBoZWFkcm9vbSwgc2l6ZW9mKHN0cnVjdCBfbmV0YnVmX3Bi
dWYpLCBOVUxMKTsKPiArCWlmICh1bmxpa2VseSghYikpIHsKPiArCQlMV0lQX0RFQlVHRihQQlVG
X0RFQlVHLAo+ICsJCQkgICAgKCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBuZXRidWYgd2l0aCBlbmNh
cHN1bGF0ZWQgcGJ1ZjogcmVxdWVzdGVkIGhlYWRyb29tOiAlIl9fUFJJc3oiLCBhbGxvY19zaXpl
OiAlIl9fUFJJc3oiXG4iLAo+ICsJCQkgICAgIGhlYWRyb29tLCBhbGxvY19zaXplKSk7Cj4gKwkJ
Z290byBlcnJfZnJlZV9hbGxvY2F0aW9uOwo+ICsJfQo+ICsKPiArCS8qCj4gKwkgKiBSZWdpc3Rl
ciBhbGxvY2F0b3Igc28gdGhhdCB1a19uZXRidWZfZnJlZSgpIHdpbGwKPiArCSAqIHJldHVybiBv
dXIgbWVtb3J5IGJhY2sgdG8gdGhpcyBhbGxvY2F0b3Igd2hlbiBmcmVlJ2luZwo+ICsJICogdGhp
cyBuZXRidWYKPiArCSAqLwo+ICsJYi0+X2EgPSBhOwo+ICsKPiArCS8qIEZpbGwtb3V0IG1ldGEg
ZGF0YSAqLwo+ICsJbnAgPSAoc3RydWN0IF9uZXRidWZfcGJ1ZiAqKSB1a19uZXRidWZfZ2V0X3By
aXYoYik7Cj4gKwltZW1zZXQobnAsIDAsIHNpemVvZihzdHJ1Y3QgX25ldGJ1Zl9wYnVmKSk7Cj4g
KwlucC0+cGJ1Zl9jdXN0b20ucGJ1Zi50eXBlX2ludGVybmFsICAgPSBQQlVGX1JPTTsKPiArCW5w
LT5wYnVmX2N1c3RvbS5wYnVmLmZsYWdzICAgICAgICAgICA9IFBCVUZfRkxBR19JU19DVVNUT007
Cj4gKwlucC0+cGJ1Zl9jdXN0b20ucGJ1Zi5wYXlsb2FkICAgICAgICAgPSBiLT5kYXRhOwo+ICsJ
bnAtPnBidWZfY3VzdG9tLnBidWYucmVmICAgICAgICAgICAgID0gMTsKPiArCW5wLT5wYnVmX2N1
c3RvbS5jdXN0b21fZnJlZV9mdW5jdGlvbiA9IF9uZXRidWZfZnJlZTsKPiArCW5wLT5uZXRidWYg
PSBiOwo+ICsKPiArCS8qCj4gKwkgKiBTZXQgbGVuZ3RoIG9mIG5ldGJ1ZiB0byBhdmFpbGFibGUg
c3BhY2Ugc28gdGhhdCBpdAo+ICsJICogY2FuIGJlIHVzZWQgYXMgcmVjZWl2ZSBidWZmZXIKPiAr
CSAqLwo+ICsJYi0+bGVuID0gYi0+YnVmbGVuIC0gaGVhZHJvb207Cj4gKwo+ICsJTFdJUF9ERUJV
R0YoUEJVRl9ERUJVRywKPiArCQkgICAgKCJBbGxvY2F0ZWQgbmV0YnVmIHdpdGggZW5jYXBzdWxh
dGVkIHBidWYgJXAgKGJ1ZmxlbjogJSJfX1BSSXN6IiwgaGVhZHJvb206ICUiX19QUklzeiIpXG4i
LAo+ICsJCSAgICAgYiwgYi0+YnVmbGVuLCB1a19uZXRidWZfaGVhZHJvb20oYikpKTsKPiArCXJl
dHVybiBiOwo+ICsKPiArZXJyX2ZyZWVfYWxsb2NhdGlvbjoKPiArCXVrX2ZyZWUoYSwgYWxsb2Nh
dGlvbik7Cj4gK2Vycl9vdXQ6Cj4gKwlyZXR1cm4gTlVMTDsKPiArfQo+IGRpZmYgLS1naXQgYS9u
ZXRidWYuaCBiL25ldGJ1Zi5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAw
Li4xNDkyMDY1Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL25ldGJ1Zi5oCj4gQEAgLTAsMCArMSwx
MDcgQEAKPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLwo+ICsv
Kgo+ICsgKiBBdXRob3JzOiBTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4K
PiArICoKPiArICogQ29weXJpZ2h0IChjKSAyMDE5LCBORUMgTGFib3JhdG9yaWVzIEV1cm9wZSBH
bWJILCBORUMgQ29ycG9yYXRpb24uCj4gKyAqICAgICAgICAgICAgICAgICAgICAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KPiArICoKPiArICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cj4gKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwo+ICsgKiBh
cmUgbWV0Ogo+ICsgKgo+ICsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCj4gKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKPiArICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KPiArICogMy4gTmVp
dGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0
cwo+ICsgKiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQo+ICsgKiAgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgo+ICsgKgo+ICsgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJB
UyBJUyIKPiArICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQo+ICsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQo+ICsg
KiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIg
T1IgQ09OVFJJQlVUT1JTIEJFCj4gKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKPiArICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKPiAr
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCj4gKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCj4gKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCj4gKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCj4gKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgo+ICsgKgo+ICsgKiBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJ
RklFRCBJTiBBTlkgV0FZLgo+ICsgKi8KPiArCj4gKyNpZm5kZWYgX0xXSVBfTkVUQlVGXwo+ICsj
ZGVmaW5lIF9MV0lQX05FVEJVRl8KPiArCj4gKyNpbmNsdWRlIDx1ay9jb25maWcuaD4KPiArI2lu
Y2x1ZGUgImx3aXAvb3B0LmgiCj4gKwo+ICsjaWYgQ09ORklHX0xXSVBfVUtORVRERVYgLyogZG8g
bm90IGRlZmluZSBhbnl0aGluZyBpZiBub3QgY29uZmlndXJlZCBmb3IgdXNlICovCj4gKwo+ICsj
aW5jbHVkZSAibHdpcC9wYnVmLmgiCj4gKyNpbmNsdWRlIDx1ay9uZXRidWYuaD4KPiArI2luY2x1
ZGUgPHVrL2FsbG9jLmg+Cj4gKyNpbmNsdWRlIDx1ay9hc3NlcnQuaD4KPiArI2luY2x1ZGUgPHVr
L2Vzc2VudGlhbHMuaD4KPiArCj4gK3N0cnVjdCBfbmV0YnVmX3BidWYgewo+ICsJc3RydWN0IHBi
dWZfY3VzdG9tIHBidWZfY3VzdG9tOwo+ICsJc3RydWN0IHVrX25ldGJ1ZiAqbmV0YnVmOwo+ICt9
Owo+ICsKPiArLyoqCj4gKyAqIEFsbG9jYXRlcyBhIG5ldGJ1ZiB0aGF0IGVtYmVkcyBhIHBidWYu
IEJvdGggd2lsbCBwb2ludAo+ICsgKiB0byB0aGUgc2FtZSBwYWNrZXQgZGF0YSBidWZmZXIuCj4g
KyAqIFN1Y2ggYnVmZmVycyBhcmUgdXNlZCB0byBpbXBsZW1lbnQgemVyby1jb3B5IHJlY2VpdmUg
d2l0aCB0aGUKPiArICogdWtuZXRkZXYgQVBJLgo+ICsgKiBOT1RFOiBNYWtlIHN1cmUgdGhhdCBu
ZXRidWYgYW5kIHBidWYgbWV0YSBkYXRhIGFyZSBrZXB0IGluIHN5bmMKPiArICogYmVmb3JlIGhh
bmRpbmcgb3ZlciB0aGUgZW1iZWRkZWQgcGJ1ZiB0byB0aGUgbmV0d29yayBzdGFjay4KPiArICov
Cj4gK3N0cnVjdCB1a19uZXRidWYgKmx3aXBfYWxsb2NfbmV0YnVmKHN0cnVjdCB1a19hbGxvYyAq
YSwgc2l6ZV90IGFsbG9jX3NpemUsCj4gKwkJCQkgICAgc2l6ZV90IGhlYWRyb29tKTsKPiArCj4g
Ky8qKgo+ICsgKiBSZXR1cm5zIHRoZSByZWZlcmVuY2Ugb2YgdGhlIGVtYmVkZGVkIHBidWYgb2Yg
YSBuZXRidWYKPiArICovCj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IHBidWYgKmx3aXBfbmV0YnVm
X3RvX3BidWYoc3RydWN0IHVrX25ldGJ1ZiAqYikKPiArewo+ICsJc3RydWN0IF9uZXRidWZfcGJ1
ZiAqbnA7Cj4gKwo+ICsJVUtfQVNTRVJUKGIpOwo+ICsJbnAgPSAoc3RydWN0IF9uZXRidWZfcGJ1
ZiAqKSB1a19uZXRidWZfZ2V0X3ByaXYoYik7Cj4gKwlVS19BU1NFUlQobnApOwo+ICsKPiArCS8q
Cj4gKwkgKiBTYW5pdHkgY2hlY2s6IFdlIHVzZSB0aGUgUEJVRl9DVVNUT01fRkxBRyBhcyBhIHdh
eQo+ICsJICogdG8gaWRlbnRpZnkgbHdpcF9hbGxvY19uZXRidWYoKSB3YXMgYWxsb2NhdGluZyB0
aGlzIHBidWYuCj4gKwkgKiBXZSBrbm93IGl0IG1heSBmYWlsIGJ1dCBpdCBpcyBzdGlsbCBiZXR0
ZXIgdGhhbiBub3RoaW5nLgo+ICsJICovCj4gKwlVS19BU1NFUlQobnAtPnBidWZfY3VzdG9tLnBi
dWYuZmxhZ3MgJiBQQlVGX0ZMQUdfSVNfQ1VTVE9NKTsKPiArCj4gKwlyZXR1cm4gJm5wLT5wYnVm
X2N1c3RvbS5wYnVmOwo+ICt9Cj4gKwo+ICsvKioKPiArICogUmV0dXJucyB0aGUgcmVmZXJlbmNl
IG9mIHRoZSBlbmNhcHN1bGF0aW5nIG5ldGJ1ZiBvZiBhIHBidWYKPiArICovCj4gK3N0YXRpYyBp
bmxpbmUgc3RydWN0IHVrX25ldGJ1ZiAqbHdpcF9wYnVmX3RvX25ldGJ1ZihzdHJ1Y3QgcGJ1ZiAq
cCkKPiArewo+ICsJc3RydWN0IHBidWZfY3VzdG9tICpwYzsKPiArCXN0cnVjdCBfbmV0YnVmX3Bi
dWYgKm5wOwo+ICsKPiArCVVLX0FTU0VSVChwKTsKPiArCVVLX0FTU0VSVChwLT5mbGFncyAmIFBC
VUZfRkxBR19JU19DVVNUT00pOwo+ICsKPiArCXBjID0gKHN0cnVjdCBwYnVmX2N1c3RvbSAqKSBf
X2NvbnRhaW5lcm9mKHAsICBzdHJ1Y3QgcGJ1Zl9jdXN0b20sIHBidWYpOwo+ICsJVUtfQVNTRVJU
KHBjKTsKPiArCW5wID0gKHN0cnVjdCBfbmV0YnVmX3BidWYgKikgIF9fY29udGFpbmVyb2YocGMs
IHN0cnVjdCBfbmV0YnVmX3BidWYsCj4gKwkJCQkJCSAgICBwYnVmX2N1c3RvbSk7Cj4gKwlVS19B
U1NFUlQobnApOwo+ICsJcmV0dXJuIG5wLT5uZXRidWY7Cj4gK30KPiArCj4gKyNlbmRpZiAvKiBD
T05GSUdfTFdJUF9VS05FVERFViAqLwo+ICsjZW5kaWYgLyogX0xXSVBfTkVUQlVGXyAqLwo+IGRp
ZmYgLS1naXQgYS91a25ldGRldi5jIGIvdWtuZXRkZXYuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0
Cj4gaW5kZXggMDAwMDAwMC4uMWRlMjAyZAo+IC0tLSAvZGV2L251bGwKPiArKysgYi91a25ldGRl
di5jCj4gQEAgLTAsMCArMSw2MTEgQEAKPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJT
RC0zLUNsYXVzZSAqLwo+ICsvKgo+ICsgKiBBdXRob3JzOiBTaW1vbiBLdWVuemVyIDxzaW1vbi5r
dWVuemVyQG5lY2xhYi5ldT4KPiArICoKPiArICogQ29weXJpZ2h0IChjKSAyMDE5LCBORUMgTGFi
b3JhdG9yaWVzIEV1cm9wZSBHbWJILCBORUMgQ29ycG9yYXRpb24uCj4gKyAqICAgICAgICAgICAg
ICAgICAgICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiArICoKPiArICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cj4gKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwo+ICsgKiBhcmUgbWV0Ogo+ICsgKgo+ICsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCj4gKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKPiArICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KPiArICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBu
b3IgdGhlIG5hbWVzIG9mIGl0cwo+ICsgKiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQo+ICsgKiAgICB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgo+ICsgKgo+
ICsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKPiArICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQo+ICsgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRQo+ICsgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFCj4gKyAqIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKPiAr
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKPiArICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCj4gKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Cj4gKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCj4gKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCj4gKyAqIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgo+ICsgKgo+ICsgKiBUSElTIEhFQURFUiBNQVkgTk9UIEJF
IEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgo+ICsgKi8KPiArCj4gKyNpbmNsdWRl
IDx1ay9jb25maWcuaD4KPiArI2luY2x1ZGUgPHN0ZGlvLmg+Cj4gKyNpbmNsdWRlIDxzdHJpbmcu
aD4KPiArCj4gKyNpbmNsdWRlIDx1ay9hbGxvYy5oPgo+ICsjaW5jbHVkZSA8dWsvcHJpbnQuaD4K
PiArI2luY2x1ZGUgIm5ldGlmL3VrbmV0ZGV2LmgiCj4gKyNpbmNsdWRlICJuZXRidWYuaCIKPiAr
Cj4gKyNpbmNsdWRlICJsd2lwL29wdC5oIgo+ICsjaW5jbHVkZSAibHdpcC9kZWYuaCIKPiArI2lu
Y2x1ZGUgImx3aXAvcGJ1Zi5oIgo+ICsjaW5jbHVkZSAibHdpcC9zdGF0cy5oIgo+ICsjaW5jbHVk
ZSAibHdpcC9zbm1wLmgiCj4gKyNpbmNsdWRlICJsd2lwL3N5cy5oIgo+ICsjaW5jbHVkZSAibHdp
cC90Y3BpcC5oIgo+ICsjaW5jbHVkZSAibHdpcC9ldGhpcDYuaCIKPiArI2luY2x1ZGUgIm5ldGlm
L2V0aGFycC5oIgo+ICsjaW5jbHVkZSAibmV0aWYvZXRoZXJuZXQuaCIKPiArI2luY2x1ZGUgPHVr
L2FyY2gvYXRvbWljLmg+Cj4gKwo+ICsjaW5jbHVkZSA8dWsvZXNzZW50aWFscy5oPgo+ICsKPiAr
I2RlZmluZSBVS05FVERFVl9CUFMgMTAwMDAwMDAwMHUKPiArI2RlZmluZSBVS05FVERFVl9CVUZM
RU4gMjA0OAo+ICsKPiArI2RlZmluZSBVS05FVERFVl9ORVRJRl9OQU1FMCAnZScKPiArI2RlZmlu
ZSBVS05FVERFVl9ORVRJRl9OQU1FMSAnbicKPiArCj4gKy8qCj4gKyAqIEdsb2JhbCBoZWFkcm9v
bSBzZXR0aW5ncyBmb3IgYnVmZmVyIGFsbG9jYXRpb25zIHVzZWQgb24gcmVjZWl2ZQo+ICsgKiBh
bmQgdHJhbnNtaXQuIFdlIGFyZSB0YWtpbmcgdGhlIG1heGltdW0gb2YgYWxsIHVrbmV0ZGV2IGRl
dmljZXMgYXMKPiArICogc2ltcGxpZmljYXRpb24uCj4gKyAqIFRPRE86IEEgcGVyLWRldmljZSBz
ZXR0aW5nIG1pZ2h0IGJlIG1vcmUgZWZmaWNpZW50IGJ1dCByZXF1aXJlcyBtb3JlIGRhdGEKPiAr
ICogICAgICAgZmllbGRzIGZvciBgbmV0aWYtPnN0YXRlYC4gRm9yIG5vdyB3ZSBwb2ludCBkaXJl
Y3RseSB0byB0aGUgYWNjb3JkaW5nCj4gKyAqICAgICAgIGBzdHJ1Y3QgdWtfbmV0ZGV2YCBpbiBv
cmRlciB0byBhdm9pZCBhbm90aGVyIGFsbG9jYXRpb24gZm9yIHRoZXNlCj4gKyAqICAgICAgIHBl
ci1kZXZpY2UgZmllbGRzLgo+ICsgKi8KPiArc3RhdGljIHVpbnQxNl90IHJ4X2hlYWRyb29tID0g
RVRIX1BBRF9TSVpFOwo+ICtzdGF0aWMgdWludDE2X3QgdHhfaGVhZHJvb20gPSBFVEhfUEFEX1NJ
WkU7Cj4gKwo+ICsjZGVmaW5lIG5ldGlmX3RvX3VrbmV0ZGV2KG5mKSBcCj4gKwkoKHN0cnVjdCB1
a19uZXRkZXYgKikgKG5mKS0+c3RhdGUpCj4gKwo+ICtzdGF0aWMgdWludDE2X3QgbmV0aWZfYWxs
b2Nfcnhwa3RzKHZvaWQgKmFyZ3AsIHN0cnVjdCB1a19uZXRidWYgKm5iW10sCj4gKwkJCQkgICB1
aW50MTZfdCBjb3VudCkKPiArewo+ICsJc3RydWN0IHVrX2FsbG9jICphOwo+ICsJdWludDE2X3Qg
aTsKPiArCj4gKwlVS19BU1NFUlQoYXJncCk7Cj4gKwo+ICsJYSA9IChzdHJ1Y3QgdWtfYWxsb2Mg
KikgYXJncDsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewo+ICsJCW5iW2ld
ID0gbHdpcF9hbGxvY19uZXRidWYoYSwgVUtORVRERVZfQlVGTEVOLCByeF9oZWFkcm9vbSk7Cj4g
KwkJaWYgKCFuYltpXSkgewo+ICsJCQkvKiB3ZSBydW4gb3V0IG9mIG1lbW9yeSAqLwo+ICsJCQli
cmVhazsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIGk7Cj4gK30KPiArCj4gK3N0YXRpYyBl
cnJfdCB1a25ldGRldl9vdXRwdXQoc3RydWN0IG5ldGlmICpuZiwgc3RydWN0IHBidWYgKnApCj4g
K3sKPiArCXN0cnVjdCB1a19hbGxvYyAqYTsKPiArCXN0cnVjdCB1a19uZXRkZXYgKmRldjsKPiAr
CXN0cnVjdCBwYnVmICpxOwo+ICsJc3RydWN0IHVrX25ldGJ1ZiAqbmI7Cj4gKwl2b2lkICphbGxv
Y2F0aW9uOwo+ICsJY2hhciAqd3BvczsKPiArCWludCByZXQ7Cj4gKwo+ICsJVUtfQVNTRVJUKG5m
KTsKPiArCWRldiA9IG5ldGlmX3RvX3VrbmV0ZGV2KG5mKTsKPiArCVVLX0FTU0VSVChkZXYpOwo+
ICsKPiArCWEgPSB1a19hbGxvY19nZXRfZGVmYXVsdCgpOwo+ICsJaWYgKCFhKQo+ICsJCXJldHVy
biBFUlJfTUVNOwo+ICsKPiArCWFsbG9jYXRpb24gPSB1a19tYWxsb2MoYSwgVUtORVRERVZfQlVG
TEVOKTsKPiArCWlmICghYWxsb2NhdGlvbikKPiArCQlyZXR1cm4gRVJSX01FTTsKPiArCW5iID0g
dWtfbmV0YnVmX3ByZXBhcmVfYnVmKGFsbG9jYXRpb24sIFVLTkVUREVWX0JVRkxFTiwKPiArCQkJ
CSAgIHR4X2hlYWRyb29tLCAwLCBOVUxMKTsKPiArCVVLX0FTU0VSVChuYik7Cj4gKwluYi0+X2Eg
PSBhOyAvKiByZWdpc3RlciBhbGxvY2F0b3IgZm9yIGZyZWUgb3BlcmF0aW9uICovCj4gKwo+ICsJ
aWYgKHVubGlrZWx5KHAtPnRvdF9sZW4gPiB1a19uZXRidWZfdGFpbHJvb20obmIpKSkgewo+ICsJ
CUxXSVBfREVCVUdGKE5FVElGX0RFQlVHLAo+ICsJCQkgICAgKCIlczogJWMlYyV1OiBDYW5ub3Qg
c2VuZCAlIlBSSXUxNiIgYnl0ZXMsIHRvbyBiaWcgKD4gJSJfX1BSSXN6IilcbiIsCj4gKwkJCSAg
ICAgX19mdW5jX18sIG5mLT5uYW1lWzBdLCBuZi0+bmFtZVsxXSwgbmYtPm51bSwKPiArCQkJICAg
ICBwLT50b3RfbGVuLCB1a19uZXRidWZfdGFpbHJvb20obmIpKSk7Cj4gKwkJdWtfbmV0YnVmX2Zy
ZWVfc2luZ2xlKG5iKTsKPiArCQlyZXR1cm4gRVJSX01FTTsKPiArCX0KPiArCj4gKyNpZiBFVEhf
UEFEX1NJWkUKPiArCXBidWZfaGVhZGVyKHAsIC1FVEhfUEFEX1NJWkUpOyAvKiBkcm9wIHRoZSBw
YWRkaW5nIHdvcmQgKi8KPiArI2VuZGlmIC8qIEVUSF9QQURfU0laRSAqLwo+ICsJLyoKPiArCSAq
IENvcHkgcGJ1ZiB0byBuZXRidWYKPiArCSAqIE5PVEU6IFVuZm9ydHVuYXRlbHksIGx3SVAgc2Vl
bXMgbm90IHRvIHN1cHBvcnQgemVyby1jb3B5IHRyYW5zbWl0LAo+ICsJICogICAgICAgeWV0LiBB
cyBsb25nIGFzIHdlIGRvIG5vdCBoYXZlIHRoaXMsIHdlIGhhdmUgdG8gY29weS4KPiArCSAqLwo+
ICsJd3BvcyA9IG5iLT5kYXRhOwo+ICsJZm9yIChxID0gcDsgcSAhPSBOVUxMOyBxID0gcC0+bmV4
dCkgewo+ICsJCW1lbWNweSh3cG9zLCBxLT5wYXlsb2FkLCBxLT5sZW4pOwo+ICsJCXdwb3MgKz0g
cS0+bGVuOwo+ICsJfQo+ICsJbmItPmxlbiA9IHAtPnRvdF9sZW47Cj4gKyNpZiBFVEhfUEFEX1NJ
WkUKPiArCXBidWZfaGVhZGVyKHAsIEVUSF9QQURfU0laRSk7IC8qIHJlY2xhaW0gdGhlIHBhZGRp
bmcgd29yZCAqLwo+ICsjZW5kaWYgLyogRVRIX1BBRF9TSVpFICovCj4gKwo+ICsJLyogVHJhbnNt
aXQgcGFja2V0ICovCj4gKwlkbyB7Cj4gKwkJcmV0ID0gdWtfbmV0ZGV2X3R4X29uZShkZXYsIDAs
IG5iKTsKPiArCX0gd2hpbGUgKHVrX25ldGRldl9zdGF0dXNfbm90cmVhZHkocmV0KSk7Cj4gKwlp
ZiAodW5saWtlbHkocmV0IDwgMCkpIHsKPiArI2lmIEVUSF9QQURfU0laRQo+ICsJCUxXSVBfREVC
VUdGKE5FVElGX0RFQlVHLAo+ICsJCQkgICAgKCIlczogJWMlYyV1OiBGYWlsZWQgdG8gc2VuZCAl
IlBSSXUxNiIgYnl0ZXNcbiIsCj4gKwkJCSAgICAgX19mdW5jX18sIG5mLT5uYW1lWzBdLCBuZi0+
bmFtZVsxXSwgbmYtPm51bSwKPiArCQkJICAgICBwLT50b3RfbGVuIC0gRVRIX1BBRF9TSVpFKSk7
Cj4gKyNlbHNlIC8qIEVUSF9QQURfU0laRSAqLwo+ICsJCUxXSVBfREVCVUdGKE5FVElGX0RFQlVH
LAo+ICsJCQkgICAgKCIlczogJWMlYyV1OiBGYWlsZWQgdG8gc2VuZCAlIlBSSXUxNiIgYnl0ZXNc
biIsCj4gKwkJCSAgICAgX19mdW5jX18sIG5mLT5uYW1lWzBdLCBuZi0+bmFtZVsxXSwgbmYtPm51
bSwKPiArCQkJICAgICBwLT50b3RfbGVuKSk7Cj4gKyNlbmRpZiAvKiBFVEhfUEFEX1NJWkUgKi8K
PiArCQkvKgo+ICsJCSAqIERlY3JlYXNlIHJlZmNvdW50IGFnYWluIGJlY2F1c2UgaW4KPiArCQkg
KiB0aGUgZXJyb3IgY2FzZSB0aGUgbmV0ZGV2IGRpZCBub3QgY29uc3VtZSB0aGUgcGJ1Zgo+ICsJ
CSAqLwo+ICsJCXVrX25ldGJ1Zl9mcmVlX3NpbmdsZShuYik7Cj4gKwkJcmV0dXJuIEVSUl9JRjsK
PiArCX0KPiArI2lmIEVUSF9QQURfU0laRQo+ICsJTFdJUF9ERUJVR0YoTkVUSUZfREVCVUcsICgi
JXM6ICVjJWMldTogU2VudCAlIlBSSXUxNiIgYnl0ZXNcbiIsCj4gKwkJCQkgIF9fZnVuY19fLCBu
Zi0+bmFtZVswXSwgbmYtPm5hbWVbMV0sIG5mLT5udW0sCj4gKwkJCQkgIHAtPnRvdF9sZW4gLSBF
VEhfUEFEX1NJWkUpKTsKPiArI2Vsc2UgLyogRVRIX1BBRF9TSVpFICovCj4gKwlMV0lQX0RFQlVH
RihORVRJRl9ERUJVRywgKCIlczogJWMlYyV1OiBTZW50ICUiUFJJdTE2IiBieXRlc1xuIiwKPiAr
CQkJCSAgX19mdW5jX18sIG5mLT5uYW1lWzBdLCBuZi0+bmFtZVsxXSwgbmYtPm51bSwKPiArCQkJ
CSAgcC0+dG90X2xlbikpOwo+ICsjZW5kaWYgLyogRVRIX1BBRF9TSVpFICovCj4gKwo+ICsJcmV0
dXJuIEVSUl9PSzsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgdWtuZXRkZXZfaW5wdXQoc3RydWN0
IHVrX25ldGRldiAqZGV2LAo+ICsJCQkgICB1aW50MTZfdCBxdWV1ZV9pZCBfX3VudXNlZCwgdm9p
ZCAqYXJncCkKPiArewo+ICsJc3RydWN0IG5ldGlmICpuZiA9IChzdHJ1Y3QgbmV0aWYgKikgYXJn
cDsKPiArCXN0cnVjdCB1a19uZXRidWYgKm5iOwo+ICsJc3RydWN0IHBidWYgKnA7Cj4gKwlpbnQg
cmV0Owo+ICsKPiArCVVLX0FTU0VSVChkZXYpOwo+ICsJVUtfQVNTRVJUKG5mKTsKPiArCVVLX0FT
U0VSVChuZi0+aW5wdXQpOwo+ICsKPiArCUxXSVBfREVCVUdGKE5FVElGX0RFQlVHLCAoIiVzOiAl
YyVjJXU6IFBvbGwgcmVjZWl2ZSBxdWV1ZS4uLlxuIiwKPiArCQkJCSAgX19mdW5jX18sIG5mLT5u
YW1lWzBdLCBuZi0+bmFtZVsxXSwgbmYtPm51bSkpOwo+ICsJZG8gewo+ICsJCXJldCA9IHVrX25l
dGRldl9yeF9vbmUoZGV2LCAwLCAmbmIpOwo+ICsJCUxXSVBfREVCVUdGKE5FVElGX0RFQlVHLAo+
ICsJCQkgICAgKCIlczogJWMlYyV1OiBJbnB1dCBzdGF0dXMgJWQgKCVjJWMlYylcbiIsCj4gKwkJ
CSAgICAgX19mdW5jX18sIG5mLT5uYW1lWzBdLCBuZi0+bmFtZVsxXSwgbmYtPm51bSwgcmV0LAo+
ICsJCQkgICAgIHVrX25ldGRldl9zdGF0dXNfdGVzdF9zZXQocmV0LAo+ICsJCQkJCQkgICAgICAg
VUtfTkVUREVWX1NUQVRVU19TVUNDRVNTKQo+ICsJCQkgICAgID8gJ1MnIDogJy0nLAo+ICsJCQkg
ICAgIHVrX25ldGRldl9zdGF0dXNfdGVzdF9zZXQocmV0LAo+ICsJCQkJCQkgICAgICAgVUtfTkVU
REVWX1NUQVRVU19NT1JFKQo+ICsJCQkgICAgID8gJ00nIDogJy0nLAo+ICsJCQkgICAgIHVrX25l
dGRldl9zdGF0dXNfdGVzdF9zZXQocmV0LAo+ICsJCQkJCQkgICAgICBVS19ORVRERVZfU1RBVFVT
X1VOREVSUlVOKQo+ICsJCQkgICAgID8gJ1UnIDogJy0nKSk7Cj4gKwkJaWYgKHVubGlrZWx5KHJl
dCA8IDApKSB7Cj4gKwkJCS8qCj4gKwkJCSAqIE91Y2gsIGFuIGVycm9yIGhhcHBlbmVkLiBXZSBj
YW5ub3QgcmVjb3ZlciBmcm9tIGl0Cj4gKwkJCSAqIGN1cnJlbnRseSwgc28gd2Ugd2lsbCB0aHJv
dyBhbiBlcnJvciBtZXNzYWdlLCBicmluZwo+ICsJCQkgKiB0aGUgaW50ZXJmYWNlIGRvd24sIGFu
ZCBsZWF2ZSBvdXIgbG9vcC4KPiArCQkJICovCj4gKwkJCXVrX3ByX2NyaXQoIiVjJWMldTogUmVj
ZWl2ZSBlcnJvciAlZC4gU3RvcHBpbmcgaW50ZXJmYWNlLi4uXG4iLAo+ICsJCQkJICAgbmYtPm5h
bWVbMF0sIG5mLT5uYW1lWzFdLCBuZi0+bnVtLCByZXQpOwo+ICsJCQluZXRpZl9zZXRfZG93bihu
Zik7Cj4gKwkJCWJyZWFrOwo+ICsJCX0KPiArCQlpZiAodWtfbmV0ZGV2X3N0YXR1c19ub3RyZWFk
eShyZXQpKSB7Cj4gKwkJCS8qIE5vIChtb3JlKSBwYWNrZXRzIHJlY2VpdmVkICovCj4gKwkJCWJy
ZWFrOwo+ICsJCX0KPiArCj4gKwkJTFdJUF9ERUJVR0YoTkVUSUZfREVCVUcsCj4gKwkJCSAgICAo
IiVzOiAlYyVjJXU6IFJlY2VpdmVkICUiUFJJdTE2IiBieXRlc1xuIiwKPiArCQkJICAgICBfX2Z1
bmNfXywgbmYtPm5hbWVbMF0sIG5mLT5uYW1lWzFdLCBuZi0+bnVtLAo+ICsJCQkgICAgIG5iLT5s
ZW4pKTsKPiArCj4gKwkJLyogU2VuZCBwYWNrZXQgdG8gbHdpcCAqLwo+ICsjaWYgRVRIX1BBRF9T
SVpFCj4gKwkJdWtfbmV0YnVmX2hlYWRlcihuYiwgRVRIX1BBRF9TSVpFKTsKPiArI2VuZGlmIC8q
IEVUSF9QQURfU0laRSAqLwo+ICsJCXAgPSBsd2lwX25ldGJ1Zl90b19wYnVmKG5iKTsKPiArCQlw
LT5wYXlsb2FkID0gbmItPmRhdGE7Cj4gKwkJcC0+dG90X2xlbiA9IHAtPmxlbiA9IG5iLT5sZW47
Cj4gKwkJaWYgKHVubGlrZWx5KG5mLT5pbnB1dChwLCBuZikgIT0gRVJSX09LKSkgewo+ICsJCQkv
Kgo+ICsJCQkgKiBEcm9wIHRoZSBwYWNrZXQgdGhhdCB3ZSBjb3VsZCBub3Qgc2VuZCB0byB0aGUg
c3RhY2sKPiArCQkJICovCj4gKwkJCXVrX3ByX2VycigiJWMlYyV1OiBGYWlsZWQgdG8gZm9yd2Fy
ZCBwYWNrZXQgdG8gbHdJUFxuIiwKPiArCQkJCSAgbmYtPm5hbWVbMF0sIG5mLT5uYW1lWzFdLCBu
Zi0+bnVtKTsKPiArCQkJdWtfbmV0YnVmX2ZyZWVfc2luZ2xlKG5iKTsKPiArCQl9Cj4gKwl9IHdo
aWxlICh1a19uZXRkZXZfc3RhdHVzX21vcmUocmV0KSk7Cj4gK30KPiArCgpXb3VsZCBiZSBiZXR0
ZXIgaWYgcG9sbCBmdW5jdGlvbiByZXR1cm5zIGFuIGVycm9yLiBUaGUgdXNlciBvZiB0aGUgcG9s
bCAKYXMgb2Ygbm93IGlzIGJsaW5kIGluIGNhc2Ugcnhfb25lIGZhaWxzCj4gK3ZvaWQgdWtuZXRk
ZXZfcG9sbChzdHJ1Y3QgbmV0aWYgKm5mKQo+ICt7Cj4gKwlzdHJ1Y3QgdWtfbmV0ZGV2ICpkZXY7
Cj4gKwo+ICsJVUtfQVNTRVJUKG5mKTsKPiArCS8qCj4gKwkgKiBUT0RPOiBVbmZvcnR1bmF0ZWx5
LCBjaGVja2luZyB0aGUgaW50ZXJmYWNlIG5hbWUgaXMgYSB3ZWFrIHNhbml0eQo+ICsJICogY2hl
Y2sgdGhhdCB1a25ldGRldl9wb2xsKCkgaXMgY2FsbGVkIG9uIGEgbmV0aWYgdGhhdCBpcyBkcml2
ZW4gYnkKPiArCSAqIHRoaXMgZHJpdmVyLi4uCj4gKwkgKi8KPiArCVVLX0FTU0VSVChuZi0+bmFt
ZVswXSA9PSBVS05FVERFVl9ORVRJRl9OQU1FMCk7Cj4gKwlVS19BU1NFUlQobmYtPm5hbWVbMV0g
PT0gVUtORVRERVZfTkVUSUZfTkFNRTEpOwo+ICsKPiArCWRldiA9IG5ldGlmX3RvX3VrbmV0ZGV2
KG5mKTsKPiArCVVLX0FTU0VSVChkZXYpOwo+ICsKPiArCXVrbmV0ZGV2X2lucHV0KGRldiwgMCwg
bmYpOwo+ICt9Cj4gKwo+ICsjaWZkZWYgQ09ORklHX0xXSVBfTk9USFJFQURTCj4gK3ZvaWQgdWtu
ZXRkZXZfcG9sbF9hbGwodm9pZCkKPiArewo+ICsJc3RydWN0IG5ldGlmICpuZjsKPiArCj4gKwkv
Kgo+ICsJICogVE9ETzogV2UgYXJlIGdvaW5nIHRocm91Z2ggYWxsIG5ldGlmcyBhbmQgY2hlY2sg
dGhlIGludGVyZmFjZSBuYW1lLgo+ICsJICogVGhpcyB3YXkgd2UgYXJlIGZpZ3VyaW5nIG91dCB0
aGF0IHRoZSBuZXRpZiBpcyBwcm92aWRlZCBieSBvdXIKPiArCSAqIGRyaXZlci4gUHJvYmFibHkg
d2Ugc2hvdWxkIGZpbmQgYSBiZXR0ZXIgYW5kIG1vcmUgc3RhYmxlIHNvbHV0aW9uIGF0Cj4gKwkg
KiBzb21lIHBvaW50Li4uCj4gKwkgKi8KPiArCU5FVElGX0ZPUkVBQ0gobmYpIHsKPiArCQlpZiAo
bmYtPm5hbWVbMF0gPT0gVUtORVRERVZfTkVUSUZfTkFNRTAKPiArCQkgICAgJiYgbmYtPm5hbWVb
MV0gPT0gVUtORVRERVZfTkVUSUZfTkFNRTEpCj4gKwkJCXVrbmV0ZGV2X3BvbGwobmYpOwo+ICsJ
fQo+ICt9Cj4gKwo+ICsjZWxzZSAvKiBDT05GSUdfTFdJUF9OT1RIUkVBRFMgKi8KPiArCj4gK3N0
YXRpYyB2b2lkIHVrbmV0ZGV2X3VwZG93bihzdHJ1Y3QgbmV0aWYgKm5mKQo+ICt7Cj4gKwlzdHJ1
Y3QgdWtfbmV0ZGV2ICpkZXY7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCVVLX0FTU0VSVChuZik7Cj4g
KwlkZXYgPSBuZXRpZl90b191a25ldGRldihuZik7Cj4gKwlVS19BU1NFUlQoZGV2KTsKPiArCj4g
KwkvKiBFbmFibGUgYW5kIGRpc2FibGUgaW50ZXJydXB0cyBhY2NvcmRpbmcgdG8gbmV0aWYncyB1
cC9kb3duIHN0YXR1cyAqLwo+ICsJaWYgKG5mLT5mbGFncyAmIE5FVElGX0ZMQUdfVVApIHsKPiAr
CQlyZXQgPSB1a19uZXRkZXZfcnhxX2ludHJfZW5hYmxlKGRldiwgMCk7Cj4gKwkJaWYgKHJldCA8
IDApIHsKPiArCQkJTFdJUF9ERUJVR0YoTkVUSUZfREVCVUcsCj4gKwkJCQkgICAgKCIlczogJWMl
YyV1OiBGYWlsZWQgdG8gZW5hYmxlIHJ4IGludGVycnJ1cHQgbW9kZSBvbiBuZXRkZXYgJXVcbiIs
Cj4gKwkJCQkgICAgIF9fZnVuY19fLCBuZi0+bmFtZVswXSwgbmYtPm5hbWVbMV0sCj4gKwkJCQkg
ICAgIG5mLT5udW0sIHVrX25ldGRldl9pZF9nZXQoZGV2KSkpOwo+ICsJCX0gZWxzZSB7Cj4gKwkJ
CUxXSVBfREVCVUdGKE5FVElGX0RFQlVHLAo+ICsJCQkJICAgICgiJXM6ICVjJWMldTogRW5hYmxl
ZCByeCBpbnRlcnJ1cHQgbW9kZSBvbiBuZXRkZXYgJXVcbiIsCj4gKwkJCQkgICAgIF9fZnVuY19f
LCBuZi0+bmFtZVswXSwgbmYtPm5hbWVbMV0sCj4gKwkJCQkgICAgIG5mLT5udW0sIHVrX25ldGRl
dl9pZF9nZXQoZGV2KSkpOwo+ICsJCX0KPiArCj4gKwkJaWYgKHJldCA9PSAxKSB7Cj4gKwkJCS8q
Cj4gKwkJCSAqIHVrX25ldGRldl9yeHFfaW50cl9lbmFibGUoKSB0b2xkIHVzIHRoYXQgd2UgbmVl
ZCB0bwo+ICsJCQkgKiBmbHVzaCB0aGUgcmVjZWlldmUgcXVldWUgYmVmb3JlIGludGVycnVwdHMg
YXJlCj4gKwkJCSAqIGVuYWJsZWQuIEZvciB0aGlzIHB1cnBvc2Ugd2UgZG8gYW4gaW5pdGlhbCBw
b2xsLgo+ICsJCQkgKi8KPiArCQkJdWtuZXRkZXZfcG9sbChuZik7Cj4gKwkJfQo+ICsJfSBlbHNl
IHsKPiArCQl1a19uZXRkZXZfcnhxX2ludHJfZGlzYWJsZShkZXYsIDApOwo+ICsJCUxXSVBfREVC
VUdGKE5FVElGX0RFQlVHLAo+ICsJCQkgICAgKCIlczogJWMlYyV1OiBEaXNhYmxlZCByeCBpbnRl
cnJ1cHRzIG9uIG5ldGRldiAldVxuIiwKPiArCQkJICAgICBfX2Z1bmNfXywgbmYtPm5hbWVbMF0s
IG5mLT5uYW1lWzFdLAo+ICsJCQkgICAgIG5mLT5udW0sIHVrX25ldGRldl9pZF9nZXQoZGV2KSkp
Owo+ICsKPiArCX0KPiArfQo+ICsjZW5kaWYgLyogQ09ORklHX0xXSVBfTk9USFJFQURTICovCj4g
Kwo+ICtlcnJfdCB1a25ldGRldl9pbml0KHN0cnVjdCBuZXRpZiAqbmYpCj4gK3sKPiArCXN0cnVj
dCB1a19hbGxvYyAqYSA9IE5VTEw7Cj4gKwlzdHJ1Y3QgdWtfbmV0ZGV2ICpkZXY7Cj4gKwlzdHJ1
Y3QgdWtfbmV0ZGV2X2NvbmYgZGV2X2NvbmY7Cj4gKwlzdHJ1Y3QgdWtfbmV0ZGV2X3J4cXVldWVf
Y29uZiByeHFfY29uZjsKPiArCXN0cnVjdCB1a19uZXRkZXZfdHhxdWV1ZV9jb25mIHR4cV9jb25m
Owo+ICsJc3RydWN0IHVrX25ldGRldl9pbmZvIGluZm87Cj4gKwljb25zdCBzdHJ1Y3QgdWtfaHdh
ZGRyICpod2FkZHI7Cj4gKwl1bnNpZ25lZCBpbnQgaTsKPiArCWludCByZXQ7Cj4gKwo+ICsJVUtf
QVNTRVJUKG5mKTsKPiArCWRldiA9IG5ldGlmX3RvX3VrbmV0ZGV2KG5mKTsKPiArCVVLX0FTU0VS
VChkZXYpOwo+ICsKPiArCUxXSVBfQVNTRVJUKCJ1a25ldGRldiBuZWVkcyBhbiBpbnB1dCBjYWxs
YmFjayAobmV0aWZfaW5wdXQgb3IgdGNwaXBfaW5wdXQpIiwKPiArCQkgICAgbmYtPmlucHV0ICE9
IE5VTEwpOwo+ICsKPiArCS8qIE5ldGRldiBoYXMgdG8gYmUgaW4gdW5jb25maWd1cmVkIHN0YXRl
ICovCj4gKwlpZiAodWtfbmV0ZGV2X3N0YXRlX2dldChkZXYpICE9IFVLX05FVERFVl9VTkNPTkZJ
R1VSRUQpIHsKPiArCQlMV0lQX0RFQlVHRihORVRJRl9ERUJVRywKPiArCQkJICAgICgiJXM6IE5l
dGRldiAldSBub3QgaW4gdW5jb2ZpZ3VyZWQgc3RhdGVcbiIsCj4gKwkJCSAgICAgX19mdW5jX18s
IHVrX25ldGRldl9pZF9nZXQoZGV2KSkpOwo+ICsJCXJldHVybiBFUlJfSVNDT05OOwo+ICsJfQo+
ICsKPiArCS8qIEludGVyZmFjZSBuYW1lLCB0aGUgaW50ZXJmYWNlIG51bWJlciAobmYtPm51bSkg
aXMgYXNzaWduZWQgYnkgbHdpcCAqLwo+ICsJbmYtPm5hbWVbMF0gPSBVS05FVERFVl9ORVRJRl9O
QU1FMDsKPiArCW5mLT5uYW1lWzFdID0gVUtORVRERVZfTkVUSUZfTkFNRTE7Cj4gKwo+ICsJLyoK
PiArCSAqIEJyaW5nIHVwIHVrbmV0ZGV2Cj4gKwkgKiBOb3RlOiBXZSB1c2UgdGhlIGRlZmF1bHQg
YWxsb2NhdG9yIGZvciBzZXR0aW5nIHVwIHRoZSByeC90eCBxdWV1ZXMKPiArCSAqLwo+ICsJLyog
VE9ETzogSW4gY2FzZSB0aGUgZGV2aWNlIGluaXRpYWxpemF0aW9uIHNob3VsZCBoYXBwZW4gbWFu
dWFsbHkgYmVmb3JlCj4gKwkgKiAgICAgICBhdHRhY2hpbmcgdG8gbHdpcCwgd2UgcmVxdWlyZSBh
bm90aGVyIGluaXQgZnVuY3Rpb24gdGhhdCBza2lwcwo+ICsJICogICAgICAgdGhpcyBpbml0aWFs
aXphdGlvbiBzdGVwcy4KPiArCSAqLwo+ICsJYSA9IHVrX2FsbG9jX2dldF9kZWZhdWx0KCk7Cj4g
KwlpZiAoIWEpCj4gKwkJcmV0dXJuIEVSUl9NRU07Cj4gKwo+ICsJLyogR2V0IGRldmljZSBpbmZv
cm1hdGlvbiAqLwo+ICsJdWtfbmV0ZGV2X2luZm9fZ2V0KGRldiwgJmluZm8pOwo+ICsJaWYgKCFp
bmZvLm1heF9yeF9xdWV1ZXMgfHwgIWluZm8ubWF4X3R4X3F1ZXVlcykKPiArCQlyZXR1cm4gRVJS
X0lGOwo+ICsKPiArCS8qCj4gKwkgKiBVcGRhdGUgb3VyIGdsb2JhbCAocnh8dHgpX2hlYWRyb29t
IHNldHRpbmcgdGhhdCB3ZSB1c2UgZm9yCj4gKwkgKiBidWZmZXIgYWxsb2NhdGlvbnMKPiArCSAq
Lwo+ICsJcnhfaGVhZHJvb20gPSAocnhfaGVhZHJvb20gPCBpbmZvLm5iX2VuY2FwX3J4KQo+ICsJ
CSAgICAgID8gaW5mby5uYl9lbmNhcF9yeCA6IHJ4X2hlYWRyb29tOwo+ICsJdHhfaGVhZHJvb20g
PSAodHhfaGVhZHJvb20gPCBpbmZvLm5iX2VuY2FwX3R4KQo+ICsJCSAgICAgID8gaW5mby5uYl9l
bmNhcF90eCA6IHR4X2hlYWRyb29tOwo+ICsJTFdJUF9ERUJVR0YoTkVUSUZfREVCVUcsCj4gKwkJ
ICAgICgiJXM6ICVjJWMldTogTmVlZCBoZWFkcm9vbSByeDolIlBSSXUxNiIsIHR4OiUiUFJJdTE2
IlxuIiwKPiArCQkgICAgIF9fZnVuY19fLCBuZi0+bmFtZVswXSwgbmYtPm5hbWVbMV0sIG5mLT5u
dW0sCj4gKwkJICAgICBpbmZvLm5iX2VuY2FwX3J4LCBpbmZvLm5iX2VuY2FwX3R4KSk7Cj4gKwo+
ICsJLyoKPiArCSAqIERldmljZSBjb25maWd1cmF0aW9uLAo+ICsJICogd2Ugd2FudCB0byB1c2Ug
anVzdCBvbmUgcXVldWUgZm9yIGVhY2ggZGlyZWN0aW9uCj4gKwkgKi8KPiArCWRldl9jb25mLm5i
X3J4X3F1ZXVlcyA9IDE7Cj4gKwlkZXZfY29uZi5uYl90eF9xdWV1ZXMgPSAxOwo+ICsJcmV0ID0g
dWtfbmV0ZGV2X2NvbmZpZ3VyZShkZXYsICZkZXZfY29uZik7Cj4gKwlpZiAocmV0IDwgMCkgewo+
ICsJCUxXSVBfREVCVUdGKE5FVElGX0RFQlVHLAo+ICsJCQkgICAgKCIlczogJWMlYyV1OiBGYWls
ZWQgdG8gY29uZmlndXJlIG5ldGRldiAldVxuIiwKPiArCQkJICAgICBfX2Z1bmNfXywgbmYtPm5h
bWVbMF0sIG5mLT5uYW1lWzFdLCBuZi0+bnVtLAo+ICsJCQkgICAgIHVrX25ldGRldl9pZF9nZXQo
ZGV2KSkpOwo+ICsJCXJldHVybiBFUlJfSUY7Cj4gKwl9Cj4gKwo+ICsJLyoKPiArCSAqIFJlY2Vp
dmUgcXVldWUsCj4gKwkgKiB1c2UgZHJpdmVyIGRlZmF1bHQgZGVzY3JpcHRvcnMKPiArCSAqLwo+
ICsJcnhxX2NvbmYuYSA9IGE7Cj4gKwlyeHFfY29uZi5hbGxvY19yeHBrdHMgPSBuZXRpZl9hbGxv
Y19yeHBrdHM7Cj4gKwlyeHFfY29uZi5hbGxvY19yeHBrdHNfYXJncCA9IGE7Cj4gKyNpZmRlZiBD
T05GSUdfTFdJUF9OT1RIUkVBRFMKPiArCS8qCj4gKwkgKiBJbiBtYWlubG9vcCBtb2RlLCB3ZSB3
aWxsIG5vdCB1c2UgaW50ZXJydXB0cy4KPiArCSAqLwo+ICsJcnhxX2NvbmYuY2FsbGJhY2sgPSBO
VUxMOwo+ICsJcnhxX2NvbmYuY2FsbGJhY2tfY29va2llID0gTlVMTDsKPiArI2Vsc2UgIC8qIENP
TkZJR19MV0lQX05PVEhSRUFEUyAqLwo+ICsJcnhxX2NvbmYuY2FsbGJhY2sgPSB1a25ldGRldl9p
bnB1dDsKPiArCXJ4cV9jb25mLmNhbGxiYWNrX2Nvb2tpZSA9IG5mOwo+ICsjaWZkZWYgQ09ORklH
X0xJQlVLTkVUREVWX0RJU1BBVENIRVJUSFJFQURTCj4gKwlyeHFfY29uZi5zID0gdWtfc2NoZWRf
Z2V0X2RlZmF1bHQoKTsKPiArCWlmICghcnhxX2NvbmYucykKPiArCQlyZXR1cm4gRVJSX0lGOwo+
ICsKPiArI2VuZGlmIC8qIENPTkZJR19MSUJVS05FVERFVl9ESVNQQVRDSEVSVEhSRUFEUyAqLwo+
ICsjZW5kaWYgLyogQ09ORklHX0xXSVBfTk9USFJFQURTICovCj4gKwlyZXQgPSB1a19uZXRkZXZf
cnhxX2NvbmZpZ3VyZShkZXYsIDAsIDAsICZyeHFfY29uZik7Cj4gKwlpZiAocmV0IDwgMCkgewo+
ICsJCUxXSVBfREVCVUdGKE5FVElGX0RFQlVHLAo+ICsJCQkgICAgKCIlczogJWMlYyV1OiBGYWls
ZWQgdG8gY29uZmlndXJlIHJ4IHF1ZXVlIG9mIG5ldGRldiAldVxuIiwKPiArCQkJICAgICBfX2Z1
bmNfXywgbmYtPm5hbWVbMF0sIG5mLT5uYW1lWzFdLCBuZi0+bnVtLAo+ICsJCQkgICAgIHVrX25l
dGRldl9pZF9nZXQoZGV2KSkpOwo+ICsJCXJldHVybiBFUlJfSUY7Cj4gKwl9Cj4gKwo+ICsJLyoK
PiArCSAqIFRyYW5zbWl0IHF1ZXVlLAo+ICsJICogdXNlIGRyaXZlciBkZWZhdWx0IGRlc2NyaXB0
b3JzCj4gKwkgKi8KPiArCXR4cV9jb25mLmEgPSBhOwo+ICsJcmV0ID0gdWtfbmV0ZGV2X3R4cV9j
b25maWd1cmUoZGV2LCAwLCAwLCAmdHhxX2NvbmYpOwo+ICsJaWYgKHJldCA8IDApIHsKPiArCQlM
V0lQX0RFQlVHRihORVRJRl9ERUJVRywKPiArCQkJICAgICgiJXM6ICVjJWMldTogRmFpbGVkIHRv
IGNvbmZpZ3VyZSB0eCBxdWV1ZSBvZiBuZXRkZXYgJXVcbiIsCj4gKwkJCSAgICAgX19mdW5jX18s
IG5mLT5uYW1lWzBdLCBuZi0+bmFtZVsxXSwgbmYtPm51bSwKPiArCQkJICAgICB1a19uZXRkZXZf
aWRfZ2V0KGRldikpKTsKPiArCQlyZXR1cm4gRVJSX0lGOwo+ICsJfQo+ICsKPiArCS8qIFN0YXJ0
IGludGVyZmFjZSAqLwo+ICsJcmV0ID0gdWtfbmV0ZGV2X3N0YXJ0KGRldik7Cj4gKwlpZiAocmV0
IDwgMCkgewo+ICsJCUxXSVBfREVCVUdGKE5FVElGX0RFQlVHLAo+ICsJCQkgICAgKCIlczogJWMl
YyV1OiBGYWlsZWQgdG8gc3RhcnQgbmV0ZGV2ICV1XG4iLAo+ICsJCQkgICAgIF9fZnVuY19fLCBu
Zi0+bmFtZVswXSwgbmYtPm5hbWVbMV0sIG5mLT5udW0sCj4gKwkJCSAgICAgdWtfbmV0ZGV2X2lk
X2dldChkZXYpKSk7Cj4gKwkJcmV0dXJuIEVSUl9JRjsKPiArCX0KPiArCj4gKwkvKiBEcml2ZXIg
Y2FsbGJhY2tzICovCj4gKyNpZiBMV0lQX0lQVjQKPiArCW5mLT5vdXRwdXQgPSBldGhhcnBfb3V0
cHV0Owo+ICsjZW5kaWYgLyogTFdJUF9JUFY0ICovCj4gKyNpZiBMV0lQX0lQVjYKPiArCW5mLT5v
dXRwdXRfaXA2ID0gZXRoaXA2X291dHB1dDsKPiArI2VuZGlmIC8qIExXSVBfSVBWNiAqLwo+ICsJ
bmYtPmxpbmtvdXRwdXQgPSB1a25ldGRldl9vdXRwdXQ7Cj4gKwo+ICsJLyogVE9ETzogU2V0IHJl
bW92ZSBjYWxsYmFjayAqLwo+ICsKPiArCS8qIERldmljZSBjYXBhYmlsaXRpZXMgKi8KPiArCW5l
dGlmX3NldF9mbGFncyhuZiwgKE5FVElGX0ZMQUdfQlJPQURDQVNUCj4gKwkJCSAgICAgfCBORVRJ
Rl9GTEFHX0VUSEFSUAo+ICsJCQkgICAgIHwgTkVUSUZfRkxBR19MSU5LX1VQKSk7Cj4gKwlMV0lQ
X0RFQlVHRihORVRJRl9ERUJVRywKPiArCQkgICAgKCIlczogJWMlYyV1OiBmbGFnczogJSJQUkl4
OCJcbiIsCj4gKwkJICAgICBfX2Z1bmNfXywgbmYtPm5hbWVbMF0sIG5mLT5uYW1lWzFdLCBuZi0+
bnVtLCBuZi0+ZmxhZ3MpKTsKPiArCj4gKyNpZiBMV0lQX0NIRUNLU1VNX0NUUkxfUEVSX05FVElG
Cj4gKwkvKgo+ICsJICogQ2hlY2tzdW0gc2V0dGluZ3MKPiArCSAqIFRPRE86IGxpYnVrbmV0ZGV2
IGRvZXMgbm90IHN1cHBvcnQgY2hlY2tzdW0gY2FwYWJpbGl0aWVzIHlldC4KPiArCSAqICAgICAg
IEJlY2F1c2Ugb2YgdGhpcywgd2UgbmVlZCB0byBjYWxjdWxhdGUgdGhlIGNoZWNrc3VtIGZvciBl
dmVyeQo+ICsJICogICAgICAgb3V0Z29pbmcgcGFja2V0IGluIHNvZnR3YXJlLiBXZSBhc3N1bWUg
dGhhdCB3ZSByZWNlaXZlIHBhY2tldHMKPiArCSAqICAgICAgIGZyb20gYSB2aXJ0dWFsIGludGVy
ZmFjZSwgc28gdGhlIGhvc3Qgd2FzIGRvaW5nIGEgY2hlY2sgZm9yIHVzCj4gKwkgKiAgICAgICBh
bHJlYWR5LiBJbiBjYXNlIG9mIGd1ZXN0LXRvLWd1ZXN0IGNvbW11bmljYXRpb24sIHRoZSBjaGVj
a3N1bQo+ICsJICogICAgICAgZmllbGQgbWF5IGJlIGluY29ycmVjdCBiZWNhdXNlIHRoZSBvdGhl
ciBndWVzdCBleHBlY3RzIHRoYXQgdGhlCj4gKwkgKiAgICAgICBob3N0IGlzIG9mZmxvYWRpbmcg
dGhlIGNhbGN1bGF0aW9uIHRvIGhhcmR3YXJlIGFzIHNvb24gYXMgYQo+ICsJICogICAgICAgcGFj
a2V0IGxlYXZlcyB0aGUgcGh5c2ljYWwgaG9zdCBtYWNoaW5lLiBBdCB0aGlzIHBvaW50LCB0aGUK
PiArCSAqICAgICAgIGJlc3Qgd2UgY2FuIGRvIGlzIG5vdCB0byBjaGVjayBhbnkgY2hlY2tzdW1z
IG9uIGluY29taW5nCj4gKwkgKiAgICAgICB0cmFmZmljIGFuZCBhc3N1bWUgZXZlcnl0aGluZyBp
cyBmaW5lLgo+ICsJICovCj4gKwlORVRJRl9TRVRfQ0hFQ0tTVU1fQ1RSTChuZiwgKE5FVElGX0NI
RUNLU1VNX0dFTl9JUAo+ICsJCQkJICAgICB8IE5FVElGX0NIRUNLU1VNX0dFTl9VRFAKPiArCQkJ
CSAgICAgfCBORVRJRl9DSEVDS1NVTV9HRU5fVENQCj4gKwkJCQkgICAgIHwgTkVUSUZfQ0hFQ0tT
VU1fR0VOX0lDTVAKPiArCQkJCSAgICAgfCBORVRJRl9DSEVDS1NVTV9HRU5fSUNNUDYpKTsKPiAr
CUxXSVBfREVCVUdGKE5FVElGX0RFQlVHLAo+ICsJCSAgICAoIiVzOiAlYyVjJXU6IGNoa3N1bV9m
bGFnczogJSJQUkl4MTYiXG4iLAo+ICsJCSAgICAgX19mdW5jX18sIG5mLT5uYW1lWzBdLCBuZi0+
bmFtZVsxXSwgbmYtPm51bSwKPiArCQkgICAgIG5mLT5jaGtzdW1fZmxhZ3MpKTsKPiArI2VuZGlm
IC8qIExXSVBfQ0hFQ0tTVU1fQ1RSTF9QRVJfTkVUSUYgKi8KPiArCj4gKwkvKiBNQUMgYWRkcmVz
cyAqLwo+ICsJVUtfQVNTRVJUKE5FVElGX01BWF9IV0FERFJfTEVOID49IFVLX05FVERFVl9IV0FE
RFJfTEVOKTsKPiArCWh3YWRkciA9IHVrX25ldGRldl9od2FkZHJfZ2V0KGRldik7Cj4gKwlVS19B
U1NFUlQoaHdhZGRyKTsKPiArCW5mLT5od2FkZHJfbGVuID0gVUtfTkVUREVWX0hXQUREUl9MRU47
Cj4gKwlmb3IgKGkgPSAwOyBpIDwgVUtfTkVUREVWX0hXQUREUl9MRU47ICsraSkKPiArCQluZi0+
aHdhZGRyW2ldID0gaHdhZGRyLT5hZGRyX2J5dGVzW2ldOwo+ICsjaWYgVUtfTkVUREVWX0hXQURE
Ul9MRU4gPT0gNgo+ICsJTFdJUF9ERUJVR0YoTkVUSUZfREVCVUcsCj4gKwkJICAgICgiJXM6ICVj
JWMldTogSGFyZHdhcmUgYWRkcmVzczogJTAyIlBSSXg4IjolMDIiUFJJeDgiOiUwMiJQUkl4OCI6
JTAyIlBSSXg4IjolMDIiUFJJeDgiOiUwMiJQUkl4OCJcbiIsCj4gKwkJICAgICBfX2Z1bmNfXywg
bmYtPm5hbWVbMF0sIG5mLT5uYW1lWzFdLCBuZi0+bnVtLAo+ICsJCSAgICAgbmYtPmh3YWRkclsw
XSwgbmYtPmh3YWRkclsxXSwgbmYtPmh3YWRkclsyXSwKPiArCQkgICAgIG5mLT5od2FkZHJbM10s
IG5mLT5od2FkZHJbNF0sIG5mLT5od2FkZHJbNV0pKTsKPiArI2Vsc2UgLyogVUtfTkVUREVWX0hX
QUREUl9MRU4gKi8KPiArCUxXSVBfREVCVUdGKE5FVElGX0RFQlVHLAo+ICsJCSAgICAoIiVzOiAl
YyVjJXU6IEhhcmR3YXJlIGFkZHJlc3Mgc2V0XG4iLAo+ICsJCSAgICAgX19mdW5jX18sIG5mLT5u
YW1lWzBdLCBuZi0+bmFtZVsxXSwgbmYtPm51bSkpOwo+ICsjZW5kaWYgLyogVUtfTkVUREVWX0hX
QUREUl9MRU4gKi8KPiArCj4gKwkvKiBNYXhpbXVtIHRyYW5zZmVyIHVuaXQgKi8KPiArCW5mLT5t
dHUgPSB1a19uZXRkZXZfbXR1X2dldChkZXYpOwo+ICsJVUtfQVNTRVJUKG5mLT5tdHUpOwo+ICsJ
TFdJUF9ERUJVR0YoTkVUSUZfREVCVUcsCj4gKwkJICAgICgiJXM6ICVjJWMldTogTVRVOiAldVxu
IiwKPiArCQkgICAgIF9fZnVuY19fLCBuZi0+bmFtZVswXSwgbmYtPm5hbWVbMV0sIG5mLT5udW0s
Cj4gKwkJICAgICBuZi0+bXR1KSk7Cj4gKwo+ICsjaWZuZGVmIENPTkZJR19MV0lQX05PVEhSRUFE
Uwo+ICsJLyoKPiArCSAqIFdlIHdpbGwgdXNlIHRoZSBzdGF0dXMgdXBkYXRlIGNhbGxiYWNrIHRv
IGVuYWJsZSBhbmQgZGlzYWJsZWQKPiArCSAqIHJlY2VpdmUgcXVldWUgaW50ZXJydXB0cwo+ICsJ
ICovCj4gKwluZXRpZl9zZXRfc3RhdHVzX2NhbGxiYWNrKG5mLCB1a25ldGRldl91cGRvd24pOwo+
ICsjZW5kaWYgLyogIUNPTkZJR19MV0lQX05PVEhSRUFEUyAqLwo+ICsKPiArCS8qCj4gKwkgKiBJ
bml0aWFsaXplIHRoZSBzbm1wIHZhcmlhYmxlcyBhbmQgY291bnRlcnMgaW5zaWRlIHRoZSBzdHJ1
Y3QgbmV0aWYuCj4gKwkgKiBUaGUgbGFzdCBhcmd1bWVudCBpcyB0aGUgbGluayBzcGVlZCwgaW4g
dW5pdHMgb2YgYml0cyBwZXIgc2Vjb25kLgo+ICsJICovCj4gKwlORVRJRl9JTklUX1NOTVAobmYs
IHNubXBfaWZUeXBlX2V0aGVybmV0X2NzbWFjZCwgVUtORVRERVZfQlBTKTsKPiArCUxXSVBfREVC
VUdGKE5FVElGX0RFQlVHLAo+ICsJCSAgICAoIiVzOiAlYyVjJXU6IExpbmsgc3BlZWQ6ICUiUFJJ
dTMyIiBicHNcbiIsCj4gKwkJICAgICBfX2Z1bmNfXywgbmYtPm5hbWVbMF0sIG5mLT5uYW1lWzFd
LCBuZi0+bnVtLAo+ICsJCSAgICAgVUtORVRERVZfQlBTKSk7Cj4gKwo+ICsJcmV0dXJuIEVSUl9P
SzsKPiArfQo+ICsKPiArI2lmIENPTkZJR19MV0lQX05PVEhSRUFEUwo+ICsjZGVmaW5lIE5FVElG
X0lOUFVUIGV0aGVybmV0X2lucHV0Cj4gKyNlbHNlIC8qIENPTkZJR19MV0lQX05PVEhSRUFEUyAq
Lwo+ICsjZGVmaW5lIE5FVElGX0lOUFVUIHRjcGlwX2lucHV0Cj4gKyNlbmRpZiAvKkNPTkZJR19M
V0lQX05PVEhSRUFEUyAqLwo+ICsKPiArc3RydWN0IG5ldGlmICp1a25ldGRldl9hZGRpZihzdHJ1
Y3QgdWtfbmV0ZGV2ICpuCj4gKyNpZiBMV0lQX0lQVjQKPiArCQkJICAgICAsCj4gKwkJCSAgICAg
Y29uc3QgaXA0X2FkZHJfdCAqaXBhZGRyLAo+ICsJCQkgICAgIGNvbnN0IGlwNF9hZGRyX3QgKm5l
dG1hc2ssCj4gKwkJCSAgICAgY29uc3QgaXA0X2FkZHJfdCAqZ3cKPiArI2VuZGlmIC8qIExXSVBf
SVBWNCAqLwo+ICsJKQo+ICt7Cj4gKwkvKgo+ICsJICogVGhpcyBwb2ludGVyIGFuZCBVS19SRUFE
X09OQ0Ugb24gaXQgaXMgYW4gdWdseSB3b3JrYXJvdW5kCj4gKwkgKiBhZ2FpbnN0IGEgcHJldHR5
IHdlaXJkIHByb2JsZW0uIFdpdGhvdXQgaXQsIHRoZSBsYXN0Cj4gKwkgKiBwYXJhbWV0ZXIgb2Yg
bmV0aWZfYWRkIHBhc3NlZCBhcyBOVUxMLiBJdCBzZWVtcyB0byBiZSBhCj4gKwkgKiBidWlsZCB0
aW1lIHByb2JsZW0gYmVjYXVzZToKPiArCSAqCj4gKwkgKiAtIE1vdmluZyAiaW5wdXQiIHBhcmFt
ZXRlciB0byB0aGUgZmlyc3QgcG9zaXRpb25zIGhlbHBzCj4gKwkgKiAtIFJlbW92aW5nIG9uZSBw
YXJhbWV0ZXIgaGVscHMuIFNlZW1zIGRvZXMgbm90IG1hdHRlciB3aGljaAo+ICsJICogLSBBbiBl
eHRyYSBwYXJhbWV0ZXIgYWRkZWQgYWZ0ZXIgImlucHV0IiB3b3JrcyB3ZWxsLiBBbmQKPiArCSAq
ICAgaW5wdXQgaXMgc3RpbGwgTlVMTCBpbiB0aGlzIGNhc2UKPiArCSAqIC0gU3dhcHBpbmcgImlu
aXQiIGFuZCAiaW5wdXQiIGhlbHBzCj4gKwkgKi8KPiArCXN0YXRpYyBjb25zdCB2b2lkICpwZXRo
ZXJuZXRfaW5wdXQgPSBORVRJRl9JTlBVVDsKPiArCXN0cnVjdCBuZXRpZiAqbmY7Cj4gKwlzdHJ1
Y3QgbmV0aWYgKnJldDsKPiArCj4gKwluZiA9IG1lbV9jYWxsb2MoMSwgc2l6ZW9mKCpuZikpOwo+
ICsJaWYgKCFuZikKPiArCQlyZXR1cm4gTlVMTDsKPiArCj4gKwlyZXQgPSBuZXRpZl9hZGQobmYs
Cj4gKyNpZiBMV0lQX0lQVjQKPiArCQkJaXBhZGRyLCBuZXRtYXNrLCBndywKPiArI2VuZGlmIC8q
IExXSVBfSVBWNCAqLwo+ICsJCQluLCB1a25ldGRldl9pbml0LCBVS19SRUFEX09OQ0UocGV0aGVy
bmV0X2lucHV0KSk7Cj4gKwlVS19BU1NFUlQobmYtPmlucHV0KTsKPiArCj4gKwlpZiAoIXJldCkg
ewo+ICsJCW1lbV9mcmVlKG5mKTsKPiArCQlyZXR1cm4gTlVMTDsKPiArCX0KPiArCj4gKwlyZXR1
cm4gcmV0Owo+ICt9Cj4gCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5w
cm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8v
bWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Feb 11 17:56:53 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 11 Feb 2019 17:56:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gtFp5-0005ae-V9; Mon, 11 Feb 2019 17:56:51 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=ktH6=QS=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1gtFp5-0005aZ-9n
 for minios-devel@lists.xen.org; Mon, 11 Feb 2019 17:56:51 +0000
X-Inumbo-ID: 6686ff1f-2e26-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 6686ff1f-2e26-11e9-bc90-bc764e045a96;
 Mon, 11 Feb 2019 17:56:48 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id C426D104DBE;
 Mon, 11 Feb 2019 18:56:46 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id mO1SYYue2d_C; Mon, 11 Feb 2019 18:56:46 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 94489104DBD
 for <minios-devel@lists.xen.org>; Mon, 11 Feb 2019 18:56:44 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 11 Feb 2019 18:56:44
 +0100
To: Simon Kuenzer <simon.kuenzer@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190207230035.29861-1-simon.kuenzer@neclab.eu>
 <20190207230035.29861-5-simon.kuenzer@neclab.eu>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <c302967d-35e6-859e-0de7-b23737598a6a@neclab.eu>
Date: Mon, 11 Feb 2019 18:56:44 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190207230035.29861-5-simon.kuenzer@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT/LIBLWIP PATCH 4/5] Attach uknetdev
 netifs during boot
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gU2ltb24sCgpUaGlzIHBhdGNoIHNlZW1zIGZpbmUuCgpSZXZpZXdlZC1ieTogU2hhcmFu
IFNhbnRoYW5hbSA8c2hhcmFuLnNhbnRoYW5hbUBuZWNsYWIuZXU+CgpUaGFua3MgJiBSZWdhcmRz
ClNoYXJhbgoKT24gMi84LzE5IDEyOjAwIEFNLCBTaW1vbiBLdWVuemVyIHdyb3RlOgo+IFNjYW4g
Zm9yIHVrbmV0ZGV2IGRldmljZXMgYW5kIGF0dGFjaCB0aGVtIGF1dG9tYXRpY2FsbHkgdG8gdGhl
IGx3SVAKPiBzdGFjayBkdXJpbmcgaW5pdGlhbGl6YXRpb24uIElmIERIQ1Agc3VwcG9ydCBpcyBl
bmFibGVkLCB0aGUgc3RhY2sKPiB3aWxsIHF1ZXJ5IGZvciBhbiBhZGRyZXNzIG9uIHRoZSBpbnRl
cmZhY2VzLgo+IAo+IFNpZ25lZC1vZmYtYnk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJA
bmVjbGFiLmV1Pgo+IC0tLQo+ICAgQ29uZmlnLnVrIHwgIDcgKysrKysKPiAgIGluaXQuYyAgICB8
IDg4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysKPiAgIDIgZmlsZXMgY2hhbmdlZCwgOTUgaW5zZXJ0aW9ucygrKQo+IAo+IGRpZmYgLS1naXQg
YS9Db25maWcudWsgYi9Db25maWcudWsKPiBpbmRleCAyMzgxM2RlLi5hY2ZlM2VmIDEwMDY0NAo+
IC0tLSBhL0NvbmZpZy51awo+ICsrKyBiL0NvbmZpZy51awo+IEBAIC0yNCw2ICsyNCwxMyBAQCBj
b25maWcgTFdJUF9VS05FVERFVgo+ICAgCQlpbnRlcmZhY2VzIGhhdmUgdG8gYmUgcG9sbGVkIG1h
bnVhbGx5ICh1a25ldGRldl9wb2xsKCkpLgo+ICAgZW5kbWVudQo+ICAgCj4gK2NvbmZpZyBMV0lQ
X0FVVE9JRkFDRQo+ICsJYm9vbCAiQXV0b21hdGljYWxseSBhdHRhY2ggbmV0aWZzIgo+ICsJZGVm
YXVsdCB5Cj4gKwloZWxwCj4gKwkJQXV0b21hdGljYWxseSBhdHRhY2ggZm91bmQgbmV0d29yayBk
ZXZpY2VzIHRvIHRoZSBzdGFjawo+ICsJCWR1cmluZyBpbml0aWFsaXphdGlvbi4KPiArCj4gICBj
aG9pY2UKPiAgIAlwcm9tcHQgIk9wZXJhdGlvbiBtb2RlIgo+ICAgCWRlZmF1bHQgTFdJUF9USFJF
QURTCj4gZGlmZiAtLWdpdCBhL2luaXQuYyBiL2luaXQuYwo+IGluZGV4IGVjZTM2M2QuLjY1ZDU2
YjYgMTAwNjQ0Cj4gLS0tIGEvaW5pdC5jCj4gKysrIGIvaW5pdC5jCj4gQEAgLTQzLDYgKzQzLDcg
QEAKPiAgICNlbHNlIC8qIENPTkZJR19MV0lQX05PVEhSRUFEUyAqLwo+ICAgI2luY2x1ZGUgPHVr
L3NlbWFwaG9yZS5oPgo+ICAgI2VuZGlmIC8qIENPTkZJR19MV0lQX05PVEhSRUFEUyAqLwo+ICsj
aW5jbHVkZSAibmV0aWYvdWtuZXRkZXYuaCIKPiAgIAo+ICAgdm9pZCBzeXNfaW5pdCh2b2lkKQo+
ICAgewo+IEBAIC02OCw2ICs2OSwyMiBAQCBzdGF0aWMgdm9pZCBfbHdpcF9pbml0X2RvbmUodm9p
ZCAqYXJnIF9fdW51c2VkKQo+ICAgICovCj4gICBpbnQgbGlibHdpcF9pbml0KHZvaWQpCj4gICB7
Cj4gKyNpZiBDT05GSUdfTFdJUF9VS05FVERFViAmJiBDT05GSUdfTFdJUF9BVVRPSUZBQ0UKPiAr
CXVuc2lnbmVkIGludCBkZXZpZDsKPiArCXN0cnVjdCB1a19uZXRkZXYgKmRldjsKPiArCXN0cnVj
dCBuZXRpZiAqbmY7Cj4gKwljb25zdCBjaGFyICBfX21heWJlX3VudXNlZCAqc3RyY2ZnOwo+ICsJ
dWludDE2X3QgIF9fbWF5YmVfdW51c2VkIGludDE2Y2ZnOwo+ICsJaW50IGlzX2ZpcnN0X25mOwo+
ICsjaWYgTFdJUF9JUFY0Cj4gKwlpcDRfYWRkcl90IF9fbWF5YmVfdW51c2VkIGlwNDsKPiArCWlw
NF9hZGRyX3QgKmlwNF9hcmc7Cj4gKwlpcDRfYWRkcl90IF9fbWF5YmVfdW51c2VkIG1hc2s0Owo+
ICsJaXA0X2FkZHJfdCAqbWFzazRfYXJnOwo+ICsJaXA0X2FkZHJfdCBfX21heWJlX3VudXNlZCBn
dzQ7Cj4gKwlpcDRfYWRkcl90ICpndzRfYXJnOwo+ICsjZW5kaWYgLyogTFdJUF9JUFY0ICovCj4g
KyNlbmRpZiAvKiBDT05GSUdfTFdJUF9VS05FVERFViAmJiBDT05GSUdfTFdJUF9BVVRPSUZBQ0Ug
Ki8KPiAgIAo+ICAgI2lmICFDT05GSUdfTFdJUF9OT1RIUkVBRFMKPiAgIAl1a19zZW1hcGhvcmVf
aW5pdCgmX2x3aXBfaW5pdF9zZW0sIDApOwo+IEBAIC04Miw1ICs5OSw3NiBAQCBpbnQgbGlibHdp
cF9pbml0KHZvaWQpCj4gICAJdWtfc2VtYXBob3JlX2Rvd24oJl9sd2lwX2luaXRfc2VtKTsKPiAg
ICNlbmRpZiAvKiBDT05GSUdfTFdJUF9OT1RIUkVBRFMgKi8KPiAgIAo+ICsjaWYgQ09ORklHX0xX
SVBfVUtORVRERVYgJiYgQ09ORklHX0xXSVBfQVVUT0lGQUNFCj4gKwlpc19maXJzdF9uZiA9IDE7
Cj4gKwo+ICsJZm9yIChkZXZpZCA9IDA7IGRldmlkIDwgdWtfbmV0ZGV2X2NvdW50KCk7ICsrZGV2
aWQpIHsKPiArCQlkZXYgPSB1a19uZXRkZXZfZ2V0KGRldmlkKTsKPiArCQlpZiAoIWRldikKPiAr
CQkJY29udGludWU7Cj4gKwkJaWYgKHVrX25ldGRldl9zdGF0ZV9nZXQoZGV2KSAhPSBVS19ORVRE
RVZfVU5DT05GSUdVUkVEKSB7Cj4gKwkJCXVrX3ByX2luZm8oIlNraXBwaW5nIHRvIGFkZCBuZXR3
b3JrIGRldmljZSAldSB0byBsd0lQOiBOb3QgaW4gdW5jb25maWd1cmVkIHN0YXRlXG4iLAo+ICsJ
CQkJICAgIGRldmlkKTsKPiArCQkJY29udGludWU7Cj4gKwkJfQo+ICsKPiArCQl1a19wcl9pbmZv
KCJBdHRhY2ggbmV0d29yayBkZXZpY2UgJXUgdG8gbHdJUC4uLlxuIiwKPiArCQkJICAgZGV2aWQp
Owo+ICsKPiArI2lmIExXSVBfSVBWNAo+ICsJCWlwNF9hcmcgICA9IE5VTEw7Cj4gKwkJbWFzazRf
YXJnID0gTlVMTDsKPiArCQlndzRfYXJnICAgPSBOVUxMOwo+ICsKPiArCQkvKgo+ICsJCSAqIFRP
RE86IFRyeSB0byBnZXQgZGV2aWNlIGNvbmZpZ3VyYXRpb24gZnJvbQo+ICsJCSAqIG5ldGRldidz
IGVjb25mIGludGVyZmFjZToKPiArCQkgKgo+ICsJCSAqIFVLX05FVERFVl9JUFY0X0FERFJfTklO
VDE2Owo+ICsJCSAqIFVLX05FVERFVl9JUFY0X0FERFJfU1RSOwo+ICsJCSAqIFVLX05FVERFVl9J
UFY0X01BU0tfTklOVDE2Owo+ICsJCSAqIFVLX05FVERFVl9JUFY0X01BU0tfU1RSOwo+ICsJCSAq
IFVLX05FVERFVl9JUFY0X0dXX05JTlQxNjsKPiArCQkgKiBVS19ORVRERVZfSVBWNF9HV19TVFI7
Cj4gKwkJICoKPiArCQkgKiBXaGVuIHN1Y2Nlc3NmdWxseSBkb25lLCBzZXQKPiArCQkgKiAgaXBf
YXJnID0gJmlwOwo+ICsJCSAqICBtYXNrX2FyZyA9ICZtYXNrOwo+ICsJCSAqICBnd19hcmcgPSAm
Z3c7Cj4gKwkJICovCj4gKwo+ICsJCW5mID0gdWtuZXRkZXZfYWRkaWYoZGV2LCBpcDRfYXJnLCBt
YXNrNF9hcmcsIGd3NF9hcmcpOwo+ICsjZWxzZSAvKiBMV0lQX0lQVjQgKi8KPiArCQkvKgo+ICsJ
CSAqIFRPRE86IEFkZCBzdXBwb3J0IGZvciBJUHY2IGRldmljZSBjb25maWd1cmF0aW9uIGZyb20K
PiArCQkgKiBuZXRkZXYncyBlY29uZiBpbnRlcmZhY2UKPiArCQkgKi8KPiArCj4gKwkJbmYgPSB1
a25ldGRldl9hZGRpZihkZXYpOwo+ICsjZW5kaWYgLyogTFdJUF9JUFY0ICovCj4gKwkJaWYgKCFu
Zikgewo+ICsJCQl1a19wcl9lcnIoIkZhaWxlZCB0byBhdHRhY2ggbmV0d29yayBkZXZpY2UgJXUg
dG8gbHdJUFxuIiwKPiArCQkJCSAgZGV2aWQpOwo+ICsJCQljb250aW51ZTsKPiArCQl9Cj4gKwo+
ICsJCS8qIERlY2xhcmUgdGhlIGZpcnN0IG5ldHdvcmsgZGV2aWNlIGFzIGRlZmF1bHQgaW50ZXJm
YWNlICovCj4gKwkJaWYgKGlzX2ZpcnN0X25mKSB7Cj4gKwkJCXVrX3ByX2luZm8oIiVjJWMldTog
U2V0IGFzIGRlZmF1bHQgaW50ZXJmYWNlXG4iLAo+ICsJCQkJICAgbmYtPm5hbWVbMF0sIG5mLT5u
YW1lWzFdLCBuZi0+bnVtKTsKPiArCQkJbmV0aWZfc2V0X2RlZmF1bHQobmYpOwo+ICsJCQlpc19m
aXJzdF9uZiA9IDA7Cj4gKwkJfQo+ICsJCW5ldGlmX3NldF91cChuZik7Cj4gKwo+ICsjaWYgTFdJ
UF9JUFY0ICYmIExXSVBfREhDUAo+ICsJCWlmICghaXA0X2FyZykgewo+ICsJCQl1a19wcl9pbmZv
KCIlYyVjJXU6IERIQ1AgY29uZmlndXJhdGlvbiAoYmFja2dyb3VuZCkuLi5cbiIsCj4gKwkJCQkg
ICBuZi0+bmFtZVswXSwgbmYtPm5hbWVbMV0sIG5mLT5udW0pOwo+ICsJCQlkaGNwX3N0YXJ0KG5m
KTsKPiArCQl9Cj4gKyNlbmRpZiAvKiBMV0lQX0lQVjQgJiYgTFdJUF9ESENQICovCj4gKwl9Cj4g
KyNlbmRpZiAvKiBDT05GSUdfTFdJUF9VS05FVERFViAmJiBDT05GSUdfTFdJUF9BVVRPSUZBQ0Ug
Ki8KPiAgIAlyZXR1cm4gMDsKPiAgIH0KPiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVs
QGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1h
bi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Feb 11 18:02:30 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 11 Feb 2019 18:02:30 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gtFuX-0006Oc-Oz; Mon, 11 Feb 2019 18:02:29 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=tNxd=QS=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1gtFuW-0006OW-73
 for minios-devel@lists.xen.org; Mon, 11 Feb 2019 18:02:28 +0000
X-Inumbo-ID: 2f3c2037-2e27-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 2f3c2037-2e27-11e9-bc90-bc764e045a96;
 Mon, 11 Feb 2019 18:02:24 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 7D797F2049;
 Mon, 11 Feb 2019 19:02:23 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id RdIxIaYlV8PK; Mon, 11 Feb 2019 19:02:23 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 40945F2048
 for <minios-devel@lists.xen.org>; Mon, 11 Feb 2019 19:02:21 +0100 (CET)
Received: from PALLENE.office.hd ([169.254.1.223]) by ENCELADUS.office.hd
 ([192.168.24.52]) with mapi id 14.03.0319.002; Mon, 11 Feb 2019 19:02:20
 +0100
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: Sharan Santhanam <Sharan.Santhanam@neclab.eu>
Thread-Topic: [UNIKRAFT/LIBLWIP PATCH 3/5] Netif driver for libuknetdev devices
Thread-Index: AQHUvzkW5Gi7RWdCi0qaQ0wQF1lW9KXa0wiAgAAFnwA=
Date: Mon, 11 Feb 2019 18:02:20 +0000
Message-ID: <1B1F3ACB-5888-4553-AADD-25CFB1C58DA9@neclab.eu>
References: <20190207230035.29861-1-simon.kuenzer@neclab.eu>
 <20190207230035.29861-4-simon.kuenzer@neclab.eu>
 <d5274f8f-695e-65da-6f94-8a9473e81efc@neclab.eu>
In-Reply-To: <d5274f8f-695e-65da-6f94-8a9473e81efc@neclab.eu>
Accept-Language: en-GB, gl-ES, de-DE, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [10.1.99.239]
Content-ID: <202E3CB15FE2DE4E83C69472A9FF2849@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/LIBLWIP PATCH 3/5] Netif driver for
 libuknetdev devices
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGV5IFNoYXJhbiwNCg0KVGhhbmtzIGZvciBsb29raW5nIGF0IHRoaXMhDQoNCj4gT24gMTEuIEZl
YiAyMDE5LCBhdCAxODo0MiwgU2hhcmFuIFNhbnRoYW5hbSA8U2hhcmFuLlNhbnRoYW5hbUBuZWNs
YWIuZXU+IHdyb3RlOg0KPiANCj4gSGVsbG8gU2ltb24sDQo+IA0KPiBQbGVhc2UgZmluZCB0aGUg
cmV2aWV3IGNvbW1lbnRzIGlubGluZS4NCj4gDQo+IA0KPiBUaGFua3MgJiBSZWdhcmRzDQo+IFNo
YXJhbg0KPiANCj4gT24gMi84LzE5IDEyOjAwIEFNLCBTaW1vbiBLdWVuemVyIHdyb3RlOg0KPj4g
SW50cm9kdWNlcyBhIG5ldGlmIGRyaXZlciBmb3IgbGlidWtuZXRkZXYgZGV2aWNlcy4gUGFja2V0
IGJ1ZmZlcnMgYXJlDQo+PiBhbGxvY2F0ZWQgb24gdGhlIGhlYXAgZm9yIG5vdy4gUmVjZWl2ZSBp
bnRlcnJ1cHRzIGFyZSBzdXBwb3J0ZWQgYW5kDQo+PiBlbmFibGVkIHdoZW4gbHdJUCBpcyBvcGVy
YXRlZCBpbiAidGhyZWFkZWQiIG1vZGUuIFplcm8tY29weSByZWNlaXZlIGlzDQo+PiBpbXBsZW1l
bnRlZCB3aXRoIHBhY2tldCBidWZmZXJzIGhhdmluZyB0d28gcGVyc29uYWxpdGllczogcGJ1ZiBh
bmQgbmV0YnVmLg0KPj4gU2lnbmVkLW9mZi1ieTogU2ltb24gS3VlbnplciA8c2ltb24ua3Vlbnpl
ckBuZWNsYWIuZXU+DQo+PiAtLS0NCj4+ICBDb25maWcudWsgICAgICAgICAgICAgICAgfCAgMTcg
KysNCj4+ICBNYWtlZmlsZS51ayAgICAgICAgICAgICAgfCAgIDIgKw0KPj4gIGluY2x1ZGUvbmV0
aWYvdWtuZXRkZXYuaCB8ICA4MCArKysrKw0KPj4gIG5ldGJ1Zi5jICAgICAgICAgICAgICAgICB8
IDEwNCArKysrKysrDQo+PiAgbmV0YnVmLmggICAgICAgICAgICAgICAgIHwgMTA3ICsrKysrKysN
Cj4+ICB1a25ldGRldi5jICAgICAgICAgICAgICAgfCA2MTEgKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrDQo+PiAgNiBmaWxlcyBjaGFuZ2VkLCA5MjEgaW5zZXJ0aW9ucygr
KQ0KPj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL25ldGlmL3VrbmV0ZGV2LmgNCj4+ICBj
cmVhdGUgbW9kZSAxMDA2NDQgbmV0YnVmLmMNCj4+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbmV0YnVm
LmgNCj4+ICBjcmVhdGUgbW9kZSAxMDA2NDQgdWtuZXRkZXYuYw0KPj4gZGlmZiAtLWdpdCBhL0Nv
bmZpZy51ayBiL0NvbmZpZy51aw0KPj4gaW5kZXggZGNlNTYwNy4uMjM4MTNkZSAxMDA2NDQNCj4+
IC0tLSBhL0NvbmZpZy51aw0KPj4gKysrIGIvQ29uZmlnLnVrDQo+PiBAQCAtNyw2ICs3LDIzIEBA
IG1lbnVjb25maWcgTElCTFdJUA0KPj4gIAlzZWxlY3QgSEFWRV9OV19TVEFDSw0KPj4gICAgaWYg
TElCTFdJUA0KPj4gK21lbnUgIk5ldGlmIGRyaXZlcnMiDQo+PiArY29uZmlnIExXSVBfVUtORVRE
RVYNCj4+ICsJYm9vbCAiVW5pa3JhZnQgTmV0ZGV2IEV0aGVybmV0IChsaWJ1a25ldGRldikiDQo+
PiArCWRlZmF1bHQgeQ0KPj4gKwlzZWxlY3QgTElCVUtORVRERVYNCj4+ICsJc2VsZWN0IExJQlVL
TkVUREVWX0RJU1BBVENIRVJUSFJFQURTIGlmIExXSVBfVEhSRUFEUw0KPj4gKwloZWxwDQo+PiAr
CQlBIGdlbmVyaWMgZHJpdmVyIHRoYXQgb3BlcmF0ZXMgbmV0d29yayBkcml2ZXJzIHRocm91Z2gN
Cj4+ICsJCWxpYnVrbmV0ZGV2IEFQSS4NCj4+ICsJCU5vdGU6IFdoZW4gbHdJUCBpcyBjb25maWd1
cmVkIHdpdGggbWFpbmxvb3AgbW9kZSwgcmVjZWl2ZQ0KPj4gKwkJaW50ZXJydXB0cyBhcmUgbm90
IGVuYWJsZWQgYnkgdGhpcyBkcml2ZXIgKHRoZXJlIGlzIGFsc28gbm8NCj4+ICsJCXJlY2VpdmUg
aW50ZXJydXB0IGhhbmRsZXIgcmVnaXN0ZXJlZCkuDQo+PiArCQlJbiBjYXNlIHRocmVhZGVkIG1v
ZGUgaXMgc2VsZWN0ZWQgYW5kIHRoZSB1bmRlcmx5aW5nIGRldmljZQ0KPj4gKwkJZHJpdmVyIGRv
ZXMgbm90IHN1cHBvcnQgcmVjZWl2ZSBpbnRlcnJ1cHRzIHRoZSBuZXR3b3JrDQo+PiArCQlpbnRl
cmZhY2VzIGhhdmUgdG8gYmUgcG9sbGVkIG1hbnVhbGx5ICh1a25ldGRldl9wb2xsKCkpLg0KPj4g
K2VuZG1lbnUNCj4+ICsNCj4+ICBjaG9pY2UNCj4+ICAJcHJvbXB0ICJPcGVyYXRpb24gbW9kZSIN
Cj4+ICAJZGVmYXVsdCBMV0lQX1RIUkVBRFMNCj4+IGRpZmYgLS1naXQgYS9NYWtlZmlsZS51ayBi
L01ha2VmaWxlLnVrDQo+PiBpbmRleCBhZTNmYmVhLi5lN2I3Y2M2IDEwMDY0NA0KPj4gLS0tIGEv
TWFrZWZpbGUudWsNCj4+ICsrKyBiL01ha2VmaWxlLnVrDQo+PiBAQCAtMTExLDYgKzExMSw4IEBA
IExJQkxXSVBfU1JDUy0kKENPTkZJR19MV0lQX1NPQ0tFVCkgKz0gJChMSUJMV0lQX0VYVFJBQ1RF
RCkvYXBpL3NvY2tldHMuYw0KPj4gICMgTkVUSUZzDQo+PiAgIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMNCj4+ICBMSUJMV0lQX1NSQ1MteSArPSAkKExJQkxXSVBfRVhUUkFDVEVEKS9uZXRpZi9ldGhl
cm5ldC5jDQo+PiArTElCTFdJUF9TUkNTLSQoQ09ORklHX0xXSVBfVUtORVRERVYpICs9ICQoTElC
TFdJUF9CQVNFKS9uZXRidWYuY3x1bmlrcmFmdA0KPj4gK0xJQkxXSVBfU1JDUy0kKENPTkZJR19M
V0lQX1VLTkVUREVWKSArPSAkKExJQkxXSVBfQkFTRSkvdWtuZXRkZXYuY3x1bmlrcmFmdA0KPj4g
ICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCj4+ICAjIElQdjQNCj4+IGRpZmYgLS1naXQgYS9p
bmNsdWRlL25ldGlmL3VrbmV0ZGV2LmggYi9pbmNsdWRlL25ldGlmL3VrbmV0ZGV2LmgNCj4+IG5l
dyBmaWxlIG1vZGUgMTAwNjQ0DQo+PiBpbmRleCAwMDAwMDAwLi43N2FhYTZkDQo+PiAtLS0gL2Rl
di9udWxsDQo+PiArKysgYi9pbmNsdWRlL25ldGlmL3VrbmV0ZGV2LmgNCj4+IEBAIC0wLDAgKzEs
ODAgQEANCj4+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovDQo+
PiArLyoNCj4+ICsgKiBBdXRob3JzOiBTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xh
Yi5ldT4NCj4+ICsgKg0KPj4gKyAqIENvcHlyaWdodCAoYykgMjAxOSwgTkVDIExhYm9yYXRvcmll
cyBFdXJvcGUgR21iSCwgTkVDIENvcnBvcmF0aW9uLg0KPj4gKyAqICAgICAgICAgICAgICAgICAg
ICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4+ICsgKg0KPj4gKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KPj4gKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucw0KPj4gKyAqIGFyZSBtZXQ6DQo+PiArICoNCj4+ICsgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KPj4g
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4NCj4+ICsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodA0KPj4gKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUNCj4+
ICsgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLg0KPj4gKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNv
cHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMNCj4+ICsgKiAgICBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQ0KPj4gKyAqICAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uDQo+PiArICoNCj4+ICsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyINCj4+ICsgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFDQo+PiArICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UNCj4+ICsgKiBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJ
QlVUT1JTIEJFDQo+PiArICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUg0KPj4gKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GDQo+PiArICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTDQo+PiArICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4NCj4+ICsgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQ0KPj4gKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFDQo+PiArICogUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuDQo+PiArICoNCj4+ICsgKiBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RF
RCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLg0KPj4gKyAqLw0KPj4gKw0KPj4gKyNpZm5kZWYgX0xX
SVBfVUtORVRERVZfDQo+PiArI2RlZmluZSBfTFdJUF9VS05FVERFVl8NCj4+ICsNCj4+ICsjaW5j
bHVkZSA8dWsvY29uZmlnLmg+DQo+PiArI2luY2x1ZGUgImx3aXAvb3B0LmgiDQo+PiArDQo+PiAr
I2lmIENPTkZJR19MV0lQX1VLTkVUREVWIC8qIGRvIG5vdCBkZWZpbmUgYW55dGhpbmcgaWYgbm90
IGNvbmZpZ3VyZWQgZm9yIHVzZSAqLw0KPj4gKw0KPj4gKyNpbmNsdWRlICJsd2lwL25ldGlmLmgi
DQo+PiArI2luY2x1ZGUgImx3aXAvaXBfYWRkci5oIg0KPj4gKyNpbmNsdWRlICJuZXRpZi9ldGhl
cm5ldC5oIg0KPj4gKyNpbmNsdWRlIDx1ay9uZXRkZXYuaD4NCj4+ICsNCj4+ICsjaWZkZWYgX19j
cGx1c3BsdXMNCj4+ICtleHRlcm4gIkMiIHsNCj4+ICsjZW5kaWYNCj4+ICsNCj4+ICsvKiBDb25m
aWd1cmVzIGFuZCBicmluZ3MgdXAgbmV0IGRldmljZSAqLw0KPj4gK2Vycl90IHVrbmV0ZGV2X2lu
aXQoc3RydWN0IG5ldGlmICpuZik7DQo+PiArDQo+PiArLyoNCj4+ICsgKiBOb3RlOiBXaGVuIHRo
cmVhZGluZyBtb2RlIGlzIGVuYWJsZWQsIG9ubHkgdWtuZXRkZXYgbmV0aWZzIHRoYXQgZG8gbm90
DQo+PiArICogc3VwcG9ydCByZWNlaXZlIGludGVycnVwdHMgc2hvdWxkIGJlIHBvbGxlZCBmb3Ig
cGFja2V0cy4NCj4+ICsgKi8NCj4+ICt2b2lkIHVrbmV0ZGV2X3BvbGwoc3RydWN0IG5ldGlmICpu
Zik7DQo+PiArDQo+PiArI2lmZGVmIENPTkZJR19MV0lQX05PVEhSRUFEUw0KPj4gK3ZvaWQgdWtu
ZXRkZXZfcG9sbF9hbGwodm9pZCk7DQo+PiArI2VuZGlmIC8qIENPTkZJR19MV0lQX05PVEhSRUFE
UyAqLw0KPj4gKw0KPj4gK3N0cnVjdCBuZXRpZiAqdWtuZXRkZXZfYWRkaWYoc3RydWN0IHVrX25l
dGRldiAqbg0KPj4gKyNpZiBMV0lQX0lQVjQNCj4+ICsJCQkgICAgICwNCj4+ICsJCQkgICAgIGNv
bnN0IGlwNF9hZGRyX3QgKmlwYWRkciwNCj4+ICsJCQkgICAgIGNvbnN0IGlwNF9hZGRyX3QgKm5l
dG1hc2ssDQo+PiArCQkJICAgICBjb25zdCBpcDRfYWRkcl90ICpndw0KPj4gKyNlbmRpZiAvKiBM
V0lQX0lQVjQgKi8NCj4+ICsJKTsNCj4+ICsNCj4+ICsjaWZkZWYgX19jcGx1c3BsdXMNCj4+ICt9
DQo+PiArI2VuZGlmDQo+PiArDQo+PiArI2VuZGlmIC8qIENPTkZJR19MV0lQX1VLTkVUREVWICov
DQo+PiArI2VuZGlmIC8qIF9MV0lQX05FVERFVl8gKi8NCj4+IGRpZmYgLS1naXQgYS9uZXRidWYu
YyBiL25ldGJ1Zi5jDQo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPj4gaW5kZXggMDAwMDAwMC4u
NDg3OGY3NA0KPj4gLS0tIC9kZXYvbnVsbA0KPj4gKysrIGIvbmV0YnVmLmMNCj4+IEBAIC0wLDAg
KzEsMTA0IEBADQo+PiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAq
Lw0KPj4gKy8qDQo+PiArICogQXV0aG9yczogU2ltb24gS3VlbnplciA8c2ltb24ua3VlbnplckBu
ZWNsYWIuZXU+DQo+PiArICoNCj4+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTksIE5FQyBMYWJvcmF0
b3JpZXMgRXVyb3BlIEdtYkgsIE5FQyBDb3Jwb3JhdGlvbi4NCj4+ICsgKiAgICAgICAgICAgICAg
ICAgICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+PiArICoNCj4+ICsgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCj4+
ICsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMNCj4+ICsgKiBhcmUgbWV0Og0KPj4gKyAqDQo+PiArICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQN
Cj4+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuDQo+PiArICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQNCj4+ICsgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
DQo+PiArICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4NCj4+ICsgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRo
ZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzDQo+PiArICogICAgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20NCj4+ICsgKiAgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLg0KPj4gKyAqDQo+PiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiDQo+PiAr
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQ0KPj4gKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFDQo+PiArICogQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENP
TlRSSUJVVE9SUyBCRQ0KPj4gKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1INCj4+ICsgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRg0KPj4g
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUw0KPj4gKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElODQo+PiArICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkNCj4+ICsgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQ0KPj4gKyAqIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLg0KPj4gKyAqDQo+PiArICogVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRS
QUNURUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4NCj4+ICsgKi8NCj4+ICsNCj4+ICsjaW5jbHVk
ZSAibmV0YnVmLmgiDQo+PiArI2luY2x1ZGUgPHN0cmluZy5oPg0KPj4gKw0KPj4gKy8qKg0KPj4g
KyAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IGx3aXAgd2hlbiBvdXIgcGJ1ZiBpcyBmcmVl
J2QNCj4+ICsgKiBBdCB0aGlzIHBvaW50LCBsd2lwIHNob3VsZCBoYXZlIG5vIHJlZmVyZW5jZSB0
byB0aGUgcGJ1Zg0KPj4gKyAqIGFueW1vcmUsIHNvIHdlIGNhbiBqdXN0IHJlbGVhc2UgdGhlIGVu
Y2Fwc3VsYXRpbmcgbmV0YnVmDQo+PiArICovDQo+PiArc3RhdGljIHZvaWQgX25ldGJ1Zl9mcmVl
KHN0cnVjdCBwYnVmICpwKQ0KPj4gK3sNCj4+ICsJc3RydWN0IHVrX25ldGJ1ZiAqbmI7DQo+PiAr
DQo+PiArCW5iID0gbHdpcF9wYnVmX3RvX25ldGJ1ZihwKTsNCj4+ICsJdWtfbmV0YnVmX2ZyZWVf
c2luZ2xlKG5iKTsNCj4+ICt9DQo+PiArDQo+PiArc3RydWN0IHVrX25ldGJ1ZiAqbHdpcF9hbGxv
Y19uZXRidWYoc3RydWN0IHVrX2FsbG9jICphLCBzaXplX3QgYWxsb2Nfc2l6ZSwNCj4+ICsJCQkJ
ICAgIHNpemVfdCBoZWFkcm9vbSkNCj4+ICt7DQo+PiArCXZvaWQgKmFsbG9jYXRpb247DQo+PiAr
CXN0cnVjdCB1a19uZXRidWYgKmI7DQo+PiArCXN0cnVjdCBfbmV0YnVmX3BidWYgKm5wOw0KPj4g
Kw0KPj4gKwlhbGxvY2F0aW9uID0gdWtfbWFsbG9jKGEsIGFsbG9jX3NpemUpOw0KPj4gKwlpZiAo
dW5saWtlbHkoIWFsbG9jYXRpb24pKQ0KPj4gKwkJZ290byBlcnJfb3V0Ow0KPj4gKw0KPj4gKwli
ID0gdWtfbmV0YnVmX3ByZXBhcmVfYnVmKGFsbG9jYXRpb24sIGFsbG9jX3NpemUsDQo+PiArCQkJ
CSAgaGVhZHJvb20sIHNpemVvZihzdHJ1Y3QgX25ldGJ1Zl9wYnVmKSwgTlVMTCk7DQo+PiArCWlm
ICh1bmxpa2VseSghYikpIHsNCj4+ICsJCUxXSVBfREVCVUdGKFBCVUZfREVCVUcsDQo+PiArCQkJ
ICAgICgiRmFpbGVkIHRvIGluaXRpYWxpemUgbmV0YnVmIHdpdGggZW5jYXBzdWxhdGVkIHBidWY6
IHJlcXVlc3RlZCBoZWFkcm9vbTogJSJfX1BSSXN6IiwgYWxsb2Nfc2l6ZTogJSJfX1BSSXN6Ilxu
IiwNCj4+ICsJCQkgICAgIGhlYWRyb29tLCBhbGxvY19zaXplKSk7DQo+PiArCQlnb3RvIGVycl9m
cmVlX2FsbG9jYXRpb247DQo+PiArCX0NCj4+ICsNCj4+ICsJLyoNCj4+ICsJICogUmVnaXN0ZXIg
YWxsb2NhdG9yIHNvIHRoYXQgdWtfbmV0YnVmX2ZyZWUoKSB3aWxsDQo+PiArCSAqIHJldHVybiBv
dXIgbWVtb3J5IGJhY2sgdG8gdGhpcyBhbGxvY2F0b3Igd2hlbiBmcmVlJ2luZw0KPj4gKwkgKiB0
aGlzIG5ldGJ1Zg0KPj4gKwkgKi8NCj4+ICsJYi0+X2EgPSBhOw0KPj4gKw0KPj4gKwkvKiBGaWxs
LW91dCBtZXRhIGRhdGEgKi8NCj4+ICsJbnAgPSAoc3RydWN0IF9uZXRidWZfcGJ1ZiAqKSB1a19u
ZXRidWZfZ2V0X3ByaXYoYik7DQo+PiArCW1lbXNldChucCwgMCwgc2l6ZW9mKHN0cnVjdCBfbmV0
YnVmX3BidWYpKTsNCj4+ICsJbnAtPnBidWZfY3VzdG9tLnBidWYudHlwZV9pbnRlcm5hbCAgID0g
UEJVRl9ST007DQo+PiArCW5wLT5wYnVmX2N1c3RvbS5wYnVmLmZsYWdzICAgICAgICAgICA9IFBC
VUZfRkxBR19JU19DVVNUT007DQo+PiArCW5wLT5wYnVmX2N1c3RvbS5wYnVmLnBheWxvYWQgICAg
ICAgICA9IGItPmRhdGE7DQo+PiArCW5wLT5wYnVmX2N1c3RvbS5wYnVmLnJlZiAgICAgICAgICAg
ICA9IDE7DQo+PiArCW5wLT5wYnVmX2N1c3RvbS5jdXN0b21fZnJlZV9mdW5jdGlvbiA9IF9uZXRi
dWZfZnJlZTsNCj4+ICsJbnAtPm5ldGJ1ZiA9IGI7DQo+PiArDQo+PiArCS8qDQo+PiArCSAqIFNl
dCBsZW5ndGggb2YgbmV0YnVmIHRvIGF2YWlsYWJsZSBzcGFjZSBzbyB0aGF0IGl0DQo+PiArCSAq
IGNhbiBiZSB1c2VkIGFzIHJlY2VpdmUgYnVmZmVyDQo+PiArCSAqLw0KPj4gKwliLT5sZW4gPSBi
LT5idWZsZW4gLSBoZWFkcm9vbTsNCj4+ICsNCj4+ICsJTFdJUF9ERUJVR0YoUEJVRl9ERUJVRywN
Cj4+ICsJCSAgICAoIkFsbG9jYXRlZCBuZXRidWYgd2l0aCBlbmNhcHN1bGF0ZWQgcGJ1ZiAlcCAo
YnVmbGVuOiAlIl9fUFJJc3oiLCBoZWFkcm9vbTogJSJfX1BSSXN6IilcbiIsDQo+PiArCQkgICAg
IGIsIGItPmJ1ZmxlbiwgdWtfbmV0YnVmX2hlYWRyb29tKGIpKSk7DQo+PiArCXJldHVybiBiOw0K
Pj4gKw0KPj4gK2Vycl9mcmVlX2FsbG9jYXRpb246DQo+PiArCXVrX2ZyZWUoYSwgYWxsb2NhdGlv
bik7DQo+PiArZXJyX291dDoNCj4+ICsJcmV0dXJuIE5VTEw7DQo+PiArfQ0KPj4gZGlmZiAtLWdp
dCBhL25ldGJ1Zi5oIGIvbmV0YnVmLmgNCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+PiBpbmRl
eCAwMDAwMDAwLi4xNDkyMDY1DQo+PiAtLS0gL2Rldi9udWxsDQo+PiArKysgYi9uZXRidWYuaA0K
Pj4gQEAgLTAsMCArMSwxMDcgQEANCj4+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNE
LTMtQ2xhdXNlICovDQo+PiArLyoNCj4+ICsgKiBBdXRob3JzOiBTaW1vbiBLdWVuemVyIDxzaW1v
bi5rdWVuemVyQG5lY2xhYi5ldT4NCj4+ICsgKg0KPj4gKyAqIENvcHlyaWdodCAoYykgMjAxOSwg
TkVDIExhYm9yYXRvcmllcyBFdXJvcGUgR21iSCwgTkVDIENvcnBvcmF0aW9uLg0KPj4gKyAqICAg
ICAgICAgICAgICAgICAgICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4+ICsgKg0KPj4gKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dA0KPj4gKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KPj4gKyAqIGFyZSBtZXQ6DQo+PiArICoNCj4+ICsg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodA0KPj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCj4+ICsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodA0KPj4gKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUNCj4+ICsgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLg0KPj4gKyAqIDMuIE5laXRoZXIgdGhl
IG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMNCj4+ICsg
KiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQ0KPj4gKyAqICAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uDQo+PiArICoNCj4+ICsgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJB
UyBJUyINCj4+ICsgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFDQo+PiArICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UN
Cj4+ICsgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBI
T0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFDQo+PiArICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUg0KPj4gKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GDQo+PiArICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTDQo+PiArICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4NCj4+
ICsgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQ0KPj4gKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFDQo+PiArICogUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuDQo+PiArICoNCj4+ICsgKiBUSElTIEhFQURFUiBNQVkg
Tk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLg0KPj4gKyAqLw0KPj4gKw0K
Pj4gKyNpZm5kZWYgX0xXSVBfTkVUQlVGXw0KPj4gKyNkZWZpbmUgX0xXSVBfTkVUQlVGXw0KPj4g
Kw0KPj4gKyNpbmNsdWRlIDx1ay9jb25maWcuaD4NCj4+ICsjaW5jbHVkZSAibHdpcC9vcHQuaCIN
Cj4+ICsNCj4+ICsjaWYgQ09ORklHX0xXSVBfVUtORVRERVYgLyogZG8gbm90IGRlZmluZSBhbnl0
aGluZyBpZiBub3QgY29uZmlndXJlZCBmb3IgdXNlICovDQo+PiArDQo+PiArI2luY2x1ZGUgImx3
aXAvcGJ1Zi5oIg0KPj4gKyNpbmNsdWRlIDx1ay9uZXRidWYuaD4NCj4+ICsjaW5jbHVkZSA8dWsv
YWxsb2MuaD4NCj4+ICsjaW5jbHVkZSA8dWsvYXNzZXJ0Lmg+DQo+PiArI2luY2x1ZGUgPHVrL2Vz
c2VudGlhbHMuaD4NCj4+ICsNCj4+ICtzdHJ1Y3QgX25ldGJ1Zl9wYnVmIHsNCj4+ICsJc3RydWN0
IHBidWZfY3VzdG9tIHBidWZfY3VzdG9tOw0KPj4gKwlzdHJ1Y3QgdWtfbmV0YnVmICpuZXRidWY7
DQo+PiArfTsNCj4+ICsNCj4+ICsvKioNCj4+ICsgKiBBbGxvY2F0ZXMgYSBuZXRidWYgdGhhdCBl
bWJlZHMgYSBwYnVmLiBCb3RoIHdpbGwgcG9pbnQNCj4+ICsgKiB0byB0aGUgc2FtZSBwYWNrZXQg
ZGF0YSBidWZmZXIuDQo+PiArICogU3VjaCBidWZmZXJzIGFyZSB1c2VkIHRvIGltcGxlbWVudCB6
ZXJvLWNvcHkgcmVjZWl2ZSB3aXRoIHRoZQ0KPj4gKyAqIHVrbmV0ZGV2IEFQSS4NCj4+ICsgKiBO
T1RFOiBNYWtlIHN1cmUgdGhhdCBuZXRidWYgYW5kIHBidWYgbWV0YSBkYXRhIGFyZSBrZXB0IGlu
IHN5bmMNCj4+ICsgKiBiZWZvcmUgaGFuZGluZyBvdmVyIHRoZSBlbWJlZGRlZCBwYnVmIHRvIHRo
ZSBuZXR3b3JrIHN0YWNrLg0KPj4gKyAqLw0KPj4gK3N0cnVjdCB1a19uZXRidWYgKmx3aXBfYWxs
b2NfbmV0YnVmKHN0cnVjdCB1a19hbGxvYyAqYSwgc2l6ZV90IGFsbG9jX3NpemUsDQo+PiArCQkJ
CSAgICBzaXplX3QgaGVhZHJvb20pOw0KPj4gKw0KPj4gKy8qKg0KPj4gKyAqIFJldHVybnMgdGhl
IHJlZmVyZW5jZSBvZiB0aGUgZW1iZWRkZWQgcGJ1ZiBvZiBhIG5ldGJ1Zg0KPj4gKyAqLw0KPj4g
K3N0YXRpYyBpbmxpbmUgc3RydWN0IHBidWYgKmx3aXBfbmV0YnVmX3RvX3BidWYoc3RydWN0IHVr
X25ldGJ1ZiAqYikNCj4+ICt7DQo+PiArCXN0cnVjdCBfbmV0YnVmX3BidWYgKm5wOw0KPj4gKw0K
Pj4gKwlVS19BU1NFUlQoYik7DQo+PiArCW5wID0gKHN0cnVjdCBfbmV0YnVmX3BidWYgKikgdWtf
bmV0YnVmX2dldF9wcml2KGIpOw0KPj4gKwlVS19BU1NFUlQobnApOw0KPj4gKw0KPj4gKwkvKg0K
Pj4gKwkgKiBTYW5pdHkgY2hlY2s6IFdlIHVzZSB0aGUgUEJVRl9DVVNUT01fRkxBRyBhcyBhIHdh
eQ0KPj4gKwkgKiB0byBpZGVudGlmeSBsd2lwX2FsbG9jX25ldGJ1ZigpIHdhcyBhbGxvY2F0aW5n
IHRoaXMgcGJ1Zi4NCj4+ICsJICogV2Uga25vdyBpdCBtYXkgZmFpbCBidXQgaXQgaXMgc3RpbGwg
YmV0dGVyIHRoYW4gbm90aGluZy4NCj4+ICsJICovDQo+PiArCVVLX0FTU0VSVChucC0+cGJ1Zl9j
dXN0b20ucGJ1Zi5mbGFncyAmIFBCVUZfRkxBR19JU19DVVNUT00pOw0KPj4gKw0KPj4gKwlyZXR1
cm4gJm5wLT5wYnVmX2N1c3RvbS5wYnVmOw0KPj4gK30NCj4+ICsNCj4+ICsvKioNCj4+ICsgKiBS
ZXR1cm5zIHRoZSByZWZlcmVuY2Ugb2YgdGhlIGVuY2Fwc3VsYXRpbmcgbmV0YnVmIG9mIGEgcGJ1
Zg0KPj4gKyAqLw0KPj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IHVrX25ldGJ1ZiAqbHdpcF9wYnVm
X3RvX25ldGJ1ZihzdHJ1Y3QgcGJ1ZiAqcCkNCj4+ICt7DQo+PiArCXN0cnVjdCBwYnVmX2N1c3Rv
bSAqcGM7DQo+PiArCXN0cnVjdCBfbmV0YnVmX3BidWYgKm5wOw0KPj4gKw0KPj4gKwlVS19BU1NF
UlQocCk7DQo+PiArCVVLX0FTU0VSVChwLT5mbGFncyAmIFBCVUZfRkxBR19JU19DVVNUT00pOw0K
Pj4gKw0KPj4gKwlwYyA9IChzdHJ1Y3QgcGJ1Zl9jdXN0b20gKikgX19jb250YWluZXJvZihwLCAg
c3RydWN0IHBidWZfY3VzdG9tLCBwYnVmKTsNCj4+ICsJVUtfQVNTRVJUKHBjKTsNCj4+ICsJbnAg
PSAoc3RydWN0IF9uZXRidWZfcGJ1ZiAqKSAgX19jb250YWluZXJvZihwYywgc3RydWN0IF9uZXRi
dWZfcGJ1ZiwNCj4+ICsJCQkJCQkgICAgcGJ1Zl9jdXN0b20pOw0KPj4gKwlVS19BU1NFUlQobnAp
Ow0KPj4gKwlyZXR1cm4gbnAtPm5ldGJ1ZjsNCj4+ICt9DQo+PiArDQo+PiArI2VuZGlmIC8qIENP
TkZJR19MV0lQX1VLTkVUREVWICovDQo+PiArI2VuZGlmIC8qIF9MV0lQX05FVEJVRl8gKi8NCj4+
IGRpZmYgLS1naXQgYS91a25ldGRldi5jIGIvdWtuZXRkZXYuYw0KPj4gbmV3IGZpbGUgbW9kZSAx
MDA2NDQNCj4+IGluZGV4IDAwMDAwMDAuLjFkZTIwMmQNCj4+IC0tLSAvZGV2L251bGwNCj4+ICsr
KyBiL3VrbmV0ZGV2LmMNCj4+IEBAIC0wLDAgKzEsNjExIEBADQo+PiArLyogU1BEWC1MaWNlbnNl
LUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLw0KPj4gKy8qDQo+PiArICogQXV0aG9yczogU2lt
b24gS3VlbnplciA8c2ltb24ua3VlbnplckBuZWNsYWIuZXU+DQo+PiArICoNCj4+ICsgKiBDb3B5
cmlnaHQgKGMpIDIwMTksIE5FQyBMYWJvcmF0b3JpZXMgRXVyb3BlIEdtYkgsIE5FQyBDb3Jwb3Jh
dGlvbi4NCj4+ICsgKiAgICAgICAgICAgICAgICAgICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+
PiArICoNCj4+ICsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCj4+ICsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCj4+ICsgKiBhcmUgbWV0
Og0KPj4gKyAqDQo+PiArICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCj4+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQo+PiArICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQNCj4+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlDQo+PiArICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4NCj4+ICsg
KiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFt
ZXMgb2YgaXRzDQo+PiArICogICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20NCj4+ICsgKiAgICB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0KPj4gKyAqDQo+PiAr
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUyAiQVMgSVMiDQo+PiArICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQ0KPj4gKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFDQo+PiArICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRQ0KPj4gKyAqIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1INCj4+ICsgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRg0KPj4gKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUw0KPj4gKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElODQo+PiArICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkNCj4+ICsgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRQ0KPj4gKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KPj4gKyAqDQo+PiArICog
VEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4N
Cj4+ICsgKi8NCj4+ICsNCj4+ICsjaW5jbHVkZSA8dWsvY29uZmlnLmg+DQo+PiArI2luY2x1ZGUg
PHN0ZGlvLmg+DQo+PiArI2luY2x1ZGUgPHN0cmluZy5oPg0KPj4gKw0KPj4gKyNpbmNsdWRlIDx1
ay9hbGxvYy5oPg0KPj4gKyNpbmNsdWRlIDx1ay9wcmludC5oPg0KPj4gKyNpbmNsdWRlICJuZXRp
Zi91a25ldGRldi5oIg0KPj4gKyNpbmNsdWRlICJuZXRidWYuaCINCj4+ICsNCj4+ICsjaW5jbHVk
ZSAibHdpcC9vcHQuaCINCj4+ICsjaW5jbHVkZSAibHdpcC9kZWYuaCINCj4+ICsjaW5jbHVkZSAi
bHdpcC9wYnVmLmgiDQo+PiArI2luY2x1ZGUgImx3aXAvc3RhdHMuaCINCj4+ICsjaW5jbHVkZSAi
bHdpcC9zbm1wLmgiDQo+PiArI2luY2x1ZGUgImx3aXAvc3lzLmgiDQo+PiArI2luY2x1ZGUgImx3
aXAvdGNwaXAuaCINCj4+ICsjaW5jbHVkZSAibHdpcC9ldGhpcDYuaCINCj4+ICsjaW5jbHVkZSAi
bmV0aWYvZXRoYXJwLmgiDQo+PiArI2luY2x1ZGUgIm5ldGlmL2V0aGVybmV0LmgiDQo+PiArI2lu
Y2x1ZGUgPHVrL2FyY2gvYXRvbWljLmg+DQo+PiArDQo+PiArI2luY2x1ZGUgPHVrL2Vzc2VudGlh
bHMuaD4NCj4+ICsNCj4+ICsjZGVmaW5lIFVLTkVUREVWX0JQUyAxMDAwMDAwMDAwdQ0KPj4gKyNk
ZWZpbmUgVUtORVRERVZfQlVGTEVOIDIwNDgNCj4+ICsNCj4+ICsjZGVmaW5lIFVLTkVUREVWX05F
VElGX05BTUUwICdlJw0KPj4gKyNkZWZpbmUgVUtORVRERVZfTkVUSUZfTkFNRTEgJ24nDQo+PiAr
DQo+PiArLyoNCj4+ICsgKiBHbG9iYWwgaGVhZHJvb20gc2V0dGluZ3MgZm9yIGJ1ZmZlciBhbGxv
Y2F0aW9ucyB1c2VkIG9uIHJlY2VpdmUNCj4+ICsgKiBhbmQgdHJhbnNtaXQuIFdlIGFyZSB0YWtp
bmcgdGhlIG1heGltdW0gb2YgYWxsIHVrbmV0ZGV2IGRldmljZXMgYXMNCj4+ICsgKiBzaW1wbGlm
aWNhdGlvbi4NCj4+ICsgKiBUT0RPOiBBIHBlci1kZXZpY2Ugc2V0dGluZyBtaWdodCBiZSBtb3Jl
IGVmZmljaWVudCBidXQgcmVxdWlyZXMgbW9yZSBkYXRhDQo+PiArICogICAgICAgZmllbGRzIGZv
ciBgbmV0aWYtPnN0YXRlYC4gRm9yIG5vdyB3ZSBwb2ludCBkaXJlY3RseSB0byB0aGUgYWNjb3Jk
aW5nDQo+PiArICogICAgICAgYHN0cnVjdCB1a19uZXRkZXZgIGluIG9yZGVyIHRvIGF2b2lkIGFu
b3RoZXIgYWxsb2NhdGlvbiBmb3IgdGhlc2UNCj4+ICsgKiAgICAgICBwZXItZGV2aWNlIGZpZWxk
cy4NCj4+ICsgKi8NCj4+ICtzdGF0aWMgdWludDE2X3QgcnhfaGVhZHJvb20gPSBFVEhfUEFEX1NJ
WkU7DQo+PiArc3RhdGljIHVpbnQxNl90IHR4X2hlYWRyb29tID0gRVRIX1BBRF9TSVpFOw0KPj4g
Kw0KPj4gKyNkZWZpbmUgbmV0aWZfdG9fdWtuZXRkZXYobmYpIFwNCj4+ICsJKChzdHJ1Y3QgdWtf
bmV0ZGV2ICopIChuZiktPnN0YXRlKQ0KPj4gKw0KPj4gK3N0YXRpYyB1aW50MTZfdCBuZXRpZl9h
bGxvY19yeHBrdHModm9pZCAqYXJncCwgc3RydWN0IHVrX25ldGJ1ZiAqbmJbXSwNCj4+ICsJCQkJ
ICAgdWludDE2X3QgY291bnQpDQo+PiArew0KPj4gKwlzdHJ1Y3QgdWtfYWxsb2MgKmE7DQo+PiAr
CXVpbnQxNl90IGk7DQo+PiArDQo+PiArCVVLX0FTU0VSVChhcmdwKTsNCj4+ICsNCj4+ICsJYSA9
IChzdHJ1Y3QgdWtfYWxsb2MgKikgYXJncDsNCj4+ICsNCj4+ICsJZm9yIChpID0gMDsgaSA8IGNv
dW50OyArK2kpIHsNCj4+ICsJCW5iW2ldID0gbHdpcF9hbGxvY19uZXRidWYoYSwgVUtORVRERVZf
QlVGTEVOLCByeF9oZWFkcm9vbSk7DQo+PiArCQlpZiAoIW5iW2ldKSB7DQo+PiArCQkJLyogd2Ug
cnVuIG91dCBvZiBtZW1vcnkgKi8NCj4+ICsJCQlicmVhazsNCj4+ICsJCX0NCj4+ICsJfQ0KPj4g
Kw0KPj4gKwlyZXR1cm4gaTsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGVycl90IHVrbmV0ZGV2
X291dHB1dChzdHJ1Y3QgbmV0aWYgKm5mLCBzdHJ1Y3QgcGJ1ZiAqcCkNCj4+ICt7DQo+PiArCXN0
cnVjdCB1a19hbGxvYyAqYTsNCj4+ICsJc3RydWN0IHVrX25ldGRldiAqZGV2Ow0KPj4gKwlzdHJ1
Y3QgcGJ1ZiAqcTsNCj4+ICsJc3RydWN0IHVrX25ldGJ1ZiAqbmI7DQo+PiArCXZvaWQgKmFsbG9j
YXRpb247DQo+PiArCWNoYXIgKndwb3M7DQo+PiArCWludCByZXQ7DQo+PiArDQo+PiArCVVLX0FT
U0VSVChuZik7DQo+PiArCWRldiA9IG5ldGlmX3RvX3VrbmV0ZGV2KG5mKTsNCj4+ICsJVUtfQVNT
RVJUKGRldik7DQo+PiArDQo+PiArCWEgPSB1a19hbGxvY19nZXRfZGVmYXVsdCgpOw0KPj4gKwlp
ZiAoIWEpDQo+PiArCQlyZXR1cm4gRVJSX01FTTsNCj4+ICsNCj4+ICsJYWxsb2NhdGlvbiA9IHVr
X21hbGxvYyhhLCBVS05FVERFVl9CVUZMRU4pOw0KPj4gKwlpZiAoIWFsbG9jYXRpb24pDQo+PiAr
CQlyZXR1cm4gRVJSX01FTTsNCj4+ICsJbmIgPSB1a19uZXRidWZfcHJlcGFyZV9idWYoYWxsb2Nh
dGlvbiwgVUtORVRERVZfQlVGTEVOLA0KPj4gKwkJCQkgICB0eF9oZWFkcm9vbSwgMCwgTlVMTCk7
DQo+PiArCVVLX0FTU0VSVChuYik7DQo+PiArCW5iLT5fYSA9IGE7IC8qIHJlZ2lzdGVyIGFsbG9j
YXRvciBmb3IgZnJlZSBvcGVyYXRpb24gKi8NCj4+ICsNCj4+ICsJaWYgKHVubGlrZWx5KHAtPnRv
dF9sZW4gPiB1a19uZXRidWZfdGFpbHJvb20obmIpKSkgew0KPj4gKwkJTFdJUF9ERUJVR0YoTkVU
SUZfREVCVUcsDQo+PiArCQkJICAgICgiJXM6ICVjJWMldTogQ2Fubm90IHNlbmQgJSJQUkl1MTYi
IGJ5dGVzLCB0b28gYmlnICg+ICUiX19QUklzeiIpXG4iLA0KPj4gKwkJCSAgICAgX19mdW5jX18s
IG5mLT5uYW1lWzBdLCBuZi0+bmFtZVsxXSwgbmYtPm51bSwNCj4+ICsJCQkgICAgIHAtPnRvdF9s
ZW4sIHVrX25ldGJ1Zl90YWlscm9vbShuYikpKTsNCj4+ICsJCXVrX25ldGJ1Zl9mcmVlX3Npbmds
ZShuYik7DQo+PiArCQlyZXR1cm4gRVJSX01FTTsNCj4+ICsJfQ0KPj4gKw0KPj4gKyNpZiBFVEhf
UEFEX1NJWkUNCj4+ICsJcGJ1Zl9oZWFkZXIocCwgLUVUSF9QQURfU0laRSk7IC8qIGRyb3AgdGhl
IHBhZGRpbmcgd29yZCAqLw0KPj4gKyNlbmRpZiAvKiBFVEhfUEFEX1NJWkUgKi8NCj4+ICsJLyoN
Cj4+ICsJICogQ29weSBwYnVmIHRvIG5ldGJ1Zg0KPj4gKwkgKiBOT1RFOiBVbmZvcnR1bmF0ZWx5
LCBsd0lQIHNlZW1zIG5vdCB0byBzdXBwb3J0IHplcm8tY29weSB0cmFuc21pdCwNCj4+ICsJICog
ICAgICAgeWV0LiBBcyBsb25nIGFzIHdlIGRvIG5vdCBoYXZlIHRoaXMsIHdlIGhhdmUgdG8gY29w
eS4NCj4+ICsJICovDQo+PiArCXdwb3MgPSBuYi0+ZGF0YTsNCj4+ICsJZm9yIChxID0gcDsgcSAh
PSBOVUxMOyBxID0gcC0+bmV4dCkgew0KPj4gKwkJbWVtY3B5KHdwb3MsIHEtPnBheWxvYWQsIHEt
Pmxlbik7DQo+PiArCQl3cG9zICs9IHEtPmxlbjsNCj4+ICsJfQ0KPj4gKwluYi0+bGVuID0gcC0+
dG90X2xlbjsNCj4+ICsjaWYgRVRIX1BBRF9TSVpFDQo+PiArCXBidWZfaGVhZGVyKHAsIEVUSF9Q
QURfU0laRSk7IC8qIHJlY2xhaW0gdGhlIHBhZGRpbmcgd29yZCAqLw0KPj4gKyNlbmRpZiAvKiBF
VEhfUEFEX1NJWkUgKi8NCj4+ICsNCj4+ICsJLyogVHJhbnNtaXQgcGFja2V0ICovDQo+PiArCWRv
IHsNCj4+ICsJCXJldCA9IHVrX25ldGRldl90eF9vbmUoZGV2LCAwLCBuYik7DQo+PiArCX0gd2hp
bGUgKHVrX25ldGRldl9zdGF0dXNfbm90cmVhZHkocmV0KSk7DQo+PiArCWlmICh1bmxpa2VseShy
ZXQgPCAwKSkgew0KPj4gKyNpZiBFVEhfUEFEX1NJWkUNCj4+ICsJCUxXSVBfREVCVUdGKE5FVElG
X0RFQlVHLA0KPj4gKwkJCSAgICAoIiVzOiAlYyVjJXU6IEZhaWxlZCB0byBzZW5kICUiUFJJdTE2
IiBieXRlc1xuIiwNCj4+ICsJCQkgICAgIF9fZnVuY19fLCBuZi0+bmFtZVswXSwgbmYtPm5hbWVb
MV0sIG5mLT5udW0sDQo+PiArCQkJICAgICBwLT50b3RfbGVuIC0gRVRIX1BBRF9TSVpFKSk7DQo+
PiArI2Vsc2UgLyogRVRIX1BBRF9TSVpFICovDQo+PiArCQlMV0lQX0RFQlVHRihORVRJRl9ERUJV
RywNCj4+ICsJCQkgICAgKCIlczogJWMlYyV1OiBGYWlsZWQgdG8gc2VuZCAlIlBSSXUxNiIgYnl0
ZXNcbiIsDQo+PiArCQkJICAgICBfX2Z1bmNfXywgbmYtPm5hbWVbMF0sIG5mLT5uYW1lWzFdLCBu
Zi0+bnVtLA0KPj4gKwkJCSAgICAgcC0+dG90X2xlbikpOw0KPj4gKyNlbmRpZiAvKiBFVEhfUEFE
X1NJWkUgKi8NCj4+ICsJCS8qDQo+PiArCQkgKiBEZWNyZWFzZSByZWZjb3VudCBhZ2FpbiBiZWNh
dXNlIGluDQo+PiArCQkgKiB0aGUgZXJyb3IgY2FzZSB0aGUgbmV0ZGV2IGRpZCBub3QgY29uc3Vt
ZSB0aGUgcGJ1Zg0KPj4gKwkJICovDQo+PiArCQl1a19uZXRidWZfZnJlZV9zaW5nbGUobmIpOw0K
Pj4gKwkJcmV0dXJuIEVSUl9JRjsNCj4+ICsJfQ0KPj4gKyNpZiBFVEhfUEFEX1NJWkUNCj4+ICsJ
TFdJUF9ERUJVR0YoTkVUSUZfREVCVUcsICgiJXM6ICVjJWMldTogU2VudCAlIlBSSXUxNiIgYnl0
ZXNcbiIsDQo+PiArCQkJCSAgX19mdW5jX18sIG5mLT5uYW1lWzBdLCBuZi0+bmFtZVsxXSwgbmYt
Pm51bSwNCj4+ICsJCQkJICBwLT50b3RfbGVuIC0gRVRIX1BBRF9TSVpFKSk7DQo+PiArI2Vsc2Ug
LyogRVRIX1BBRF9TSVpFICovDQo+PiArCUxXSVBfREVCVUdGKE5FVElGX0RFQlVHLCAoIiVzOiAl
YyVjJXU6IFNlbnQgJSJQUkl1MTYiIGJ5dGVzXG4iLA0KPj4gKwkJCQkgIF9fZnVuY19fLCBuZi0+
bmFtZVswXSwgbmYtPm5hbWVbMV0sIG5mLT5udW0sDQo+PiArCQkJCSAgcC0+dG90X2xlbikpOw0K
Pj4gKyNlbmRpZiAvKiBFVEhfUEFEX1NJWkUgKi8NCj4+ICsNCj4+ICsJcmV0dXJuIEVSUl9PSzsN
Cj4+ICt9DQo+PiArDQo+PiArc3RhdGljIHZvaWQgdWtuZXRkZXZfaW5wdXQoc3RydWN0IHVrX25l
dGRldiAqZGV2LA0KPj4gKwkJCSAgIHVpbnQxNl90IHF1ZXVlX2lkIF9fdW51c2VkLCB2b2lkICph
cmdwKQ0KPj4gK3sNCj4+ICsJc3RydWN0IG5ldGlmICpuZiA9IChzdHJ1Y3QgbmV0aWYgKikgYXJn
cDsNCj4+ICsJc3RydWN0IHVrX25ldGJ1ZiAqbmI7DQo+PiArCXN0cnVjdCBwYnVmICpwOw0KPj4g
KwlpbnQgcmV0Ow0KPj4gKw0KPj4gKwlVS19BU1NFUlQoZGV2KTsNCj4+ICsJVUtfQVNTRVJUKG5m
KTsNCj4+ICsJVUtfQVNTRVJUKG5mLT5pbnB1dCk7DQo+PiArDQo+PiArCUxXSVBfREVCVUdGKE5F
VElGX0RFQlVHLCAoIiVzOiAlYyVjJXU6IFBvbGwgcmVjZWl2ZSBxdWV1ZS4uLlxuIiwNCj4+ICsJ
CQkJICBfX2Z1bmNfXywgbmYtPm5hbWVbMF0sIG5mLT5uYW1lWzFdLCBuZi0+bnVtKSk7DQo+PiAr
CWRvIHsNCj4+ICsJCXJldCA9IHVrX25ldGRldl9yeF9vbmUoZGV2LCAwLCAmbmIpOw0KPj4gKwkJ
TFdJUF9ERUJVR0YoTkVUSUZfREVCVUcsDQo+PiArCQkJICAgICgiJXM6ICVjJWMldTogSW5wdXQg
c3RhdHVzICVkICglYyVjJWMpXG4iLA0KPj4gKwkJCSAgICAgX19mdW5jX18sIG5mLT5uYW1lWzBd
LCBuZi0+bmFtZVsxXSwgbmYtPm51bSwgcmV0LA0KPj4gKwkJCSAgICAgdWtfbmV0ZGV2X3N0YXR1
c190ZXN0X3NldChyZXQsDQo+PiArCQkJCQkJICAgICAgIFVLX05FVERFVl9TVEFUVVNfU1VDQ0VT
UykNCj4+ICsJCQkgICAgID8gJ1MnIDogJy0nLA0KPj4gKwkJCSAgICAgdWtfbmV0ZGV2X3N0YXR1
c190ZXN0X3NldChyZXQsDQo+PiArCQkJCQkJICAgICAgIFVLX05FVERFVl9TVEFUVVNfTU9SRSkN
Cj4+ICsJCQkgICAgID8gJ00nIDogJy0nLA0KPj4gKwkJCSAgICAgdWtfbmV0ZGV2X3N0YXR1c190
ZXN0X3NldChyZXQsDQo+PiArCQkJCQkJICAgICAgVUtfTkVUREVWX1NUQVRVU19VTkRFUlJVTikN
Cj4+ICsJCQkgICAgID8gJ1UnIDogJy0nKSk7DQo+PiArCQlpZiAodW5saWtlbHkocmV0IDwgMCkp
IHsNCj4+ICsJCQkvKg0KPj4gKwkJCSAqIE91Y2gsIGFuIGVycm9yIGhhcHBlbmVkLiBXZSBjYW5u
b3QgcmVjb3ZlciBmcm9tIGl0DQo+PiArCQkJICogY3VycmVudGx5LCBzbyB3ZSB3aWxsIHRocm93
IGFuIGVycm9yIG1lc3NhZ2UsIGJyaW5nDQo+PiArCQkJICogdGhlIGludGVyZmFjZSBkb3duLCBh
bmQgbGVhdmUgb3VyIGxvb3AuDQo+PiArCQkJICovDQo+PiArCQkJdWtfcHJfY3JpdCgiJWMlYyV1
OiBSZWNlaXZlIGVycm9yICVkLiBTdG9wcGluZyBpbnRlcmZhY2UuLi5cbiIsDQo+PiArCQkJCSAg
IG5mLT5uYW1lWzBdLCBuZi0+bmFtZVsxXSwgbmYtPm51bSwgcmV0KTsNCj4+ICsJCQluZXRpZl9z
ZXRfZG93bihuZik7DQo+PiArCQkJYnJlYWs7DQo+PiArCQl9DQo+PiArCQlpZiAodWtfbmV0ZGV2
X3N0YXR1c19ub3RyZWFkeShyZXQpKSB7DQo+PiArCQkJLyogTm8gKG1vcmUpIHBhY2tldHMgcmVj
ZWl2ZWQgKi8NCj4+ICsJCQlicmVhazsNCj4+ICsJCX0NCj4+ICsNCj4+ICsJCUxXSVBfREVCVUdG
KE5FVElGX0RFQlVHLA0KPj4gKwkJCSAgICAoIiVzOiAlYyVjJXU6IFJlY2VpdmVkICUiUFJJdTE2
IiBieXRlc1xuIiwNCj4+ICsJCQkgICAgIF9fZnVuY19fLCBuZi0+bmFtZVswXSwgbmYtPm5hbWVb
MV0sIG5mLT5udW0sDQo+PiArCQkJICAgICBuYi0+bGVuKSk7DQo+PiArDQo+PiArCQkvKiBTZW5k
IHBhY2tldCB0byBsd2lwICovDQo+PiArI2lmIEVUSF9QQURfU0laRQ0KPj4gKwkJdWtfbmV0YnVm
X2hlYWRlcihuYiwgRVRIX1BBRF9TSVpFKTsNCj4+ICsjZW5kaWYgLyogRVRIX1BBRF9TSVpFICov
DQo+PiArCQlwID0gbHdpcF9uZXRidWZfdG9fcGJ1ZihuYik7DQo+PiArCQlwLT5wYXlsb2FkID0g
bmItPmRhdGE7DQo+PiArCQlwLT50b3RfbGVuID0gcC0+bGVuID0gbmItPmxlbjsNCj4+ICsJCWlm
ICh1bmxpa2VseShuZi0+aW5wdXQocCwgbmYpICE9IEVSUl9PSykpIHsNCj4+ICsJCQkvKg0KPj4g
KwkJCSAqIERyb3AgdGhlIHBhY2tldCB0aGF0IHdlIGNvdWxkIG5vdCBzZW5kIHRvIHRoZSBzdGFj
aw0KPj4gKwkJCSAqLw0KPj4gKwkJCXVrX3ByX2VycigiJWMlYyV1OiBGYWlsZWQgdG8gZm9yd2Fy
ZCBwYWNrZXQgdG8gbHdJUFxuIiwNCj4+ICsJCQkJICBuZi0+bmFtZVswXSwgbmYtPm5hbWVbMV0s
IG5mLT5udW0pOw0KPj4gKwkJCXVrX25ldGJ1Zl9mcmVlX3NpbmdsZShuYik7DQo+PiArCQl9DQo+
PiArCX0gd2hpbGUgKHVrX25ldGRldl9zdGF0dXNfbW9yZShyZXQpKTsNCj4+ICt9DQo+PiArDQo+
IA0KPiBXb3VsZCBiZSBiZXR0ZXIgaWYgcG9sbCBmdW5jdGlvbiByZXR1cm5zIGFuIGVycm9yLiBU
aGUgdXNlciBvZiB0aGUgcG9sbCBhcyBvZiBub3cgaXMgYmxpbmQgaW4gY2FzZSByeF9vbmUgZmFp
bHMNCg0KSHVtLi4uIEkgYWN0dWFsbHkgdG9vayB0aGUgc2FtZSBmdW5jdGlvbiBzaWduYXR1cmUg
Zm9yIHBvbGxpbmcgYXMgSSBzYXcgaXQgb24gbHdpcCBjb2RlOiBzbGlwaWZfcG9sbCgpIGFuZCBu
ZXRpZl9wb2xsKCkuIEluIHRoaXMgc2Vuc2UgaXQgaXMgaW5saW5lIHdpdGggd2hhdCBzb21lb25l
IHdvdWxkIGV4cGVjdCBmcm9tIGx3aXAuIEF0IHRoZSBzYW1lIHRpbWUsIGFzIGxvbmcgd2UgZG8g
bm90IGhhdmUgbmV0IGlmIHJlbW92ZSBzdXBwb3J0LCBhIHVzZXIgY2Fu4oCZdCByZWFsbHkgZG8g
bXVjaCBpbiBlcnJvciBjYXNlcy4NCkhvdyB3b3VsZCB5b3UgcHJvY2VlZD8NCg0KPj4gK3ZvaWQg
dWtuZXRkZXZfcG9sbChzdHJ1Y3QgbmV0aWYgKm5mKQ0KPj4gK3sNCj4+ICsJc3RydWN0IHVrX25l
dGRldiAqZGV2Ow0KPj4gKw0KPj4gKwlVS19BU1NFUlQobmYpOw0KPj4gKwkvKg0KPj4gKwkgKiBU
T0RPOiBVbmZvcnR1bmF0ZWx5LCBjaGVja2luZyB0aGUgaW50ZXJmYWNlIG5hbWUgaXMgYSB3ZWFr
IHNhbml0eQ0KPj4gKwkgKiBjaGVjayB0aGF0IHVrbmV0ZGV2X3BvbGwoKSBpcyBjYWxsZWQgb24g
YSBuZXRpZiB0aGF0IGlzIGRyaXZlbiBieQ0KPj4gKwkgKiB0aGlzIGRyaXZlci4uLg0KPj4gKwkg
Ki8NCj4+ICsJVUtfQVNTRVJUKG5mLT5uYW1lWzBdID09IFVLTkVUREVWX05FVElGX05BTUUwKTsN
Cj4+ICsJVUtfQVNTRVJUKG5mLT5uYW1lWzFdID09IFVLTkVUREVWX05FVElGX05BTUUxKTsNCj4+
ICsNCj4+ICsJZGV2ID0gbmV0aWZfdG9fdWtuZXRkZXYobmYpOw0KPj4gKwlVS19BU1NFUlQoZGV2
KTsNCj4+ICsNCj4+ICsJdWtuZXRkZXZfaW5wdXQoZGV2LCAwLCBuZik7DQo+PiArfQ0KPj4gKw0K
Pj4gKyNpZmRlZiBDT05GSUdfTFdJUF9OT1RIUkVBRFMNCj4+ICt2b2lkIHVrbmV0ZGV2X3BvbGxf
YWxsKHZvaWQpDQo+PiArew0KPj4gKwlzdHJ1Y3QgbmV0aWYgKm5mOw0KPj4gKw0KPj4gKwkvKg0K
Pj4gKwkgKiBUT0RPOiBXZSBhcmUgZ29pbmcgdGhyb3VnaCBhbGwgbmV0aWZzIGFuZCBjaGVjayB0
aGUgaW50ZXJmYWNlIG5hbWUuDQo+PiArCSAqIFRoaXMgd2F5IHdlIGFyZSBmaWd1cmluZyBvdXQg
dGhhdCB0aGUgbmV0aWYgaXMgcHJvdmlkZWQgYnkgb3VyDQo+PiArCSAqIGRyaXZlci4gUHJvYmFi
bHkgd2Ugc2hvdWxkIGZpbmQgYSBiZXR0ZXIgYW5kIG1vcmUgc3RhYmxlIHNvbHV0aW9uIGF0DQo+
PiArCSAqIHNvbWUgcG9pbnQuLi4NCj4+ICsJICovDQo+PiArCU5FVElGX0ZPUkVBQ0gobmYpIHsN
Cj4+ICsJCWlmIChuZi0+bmFtZVswXSA9PSBVS05FVERFVl9ORVRJRl9OQU1FMA0KPj4gKwkJICAg
ICYmIG5mLT5uYW1lWzFdID09IFVLTkVUREVWX05FVElGX05BTUUxKQ0KPj4gKwkJCXVrbmV0ZGV2
X3BvbGwobmYpOw0KPj4gKwl9DQo+PiArfQ0KPj4gKw0KPj4gKyNlbHNlIC8qIENPTkZJR19MV0lQ
X05PVEhSRUFEUyAqLw0KPj4gKw0KPj4gK3N0YXRpYyB2b2lkIHVrbmV0ZGV2X3VwZG93bihzdHJ1
Y3QgbmV0aWYgKm5mKQ0KPj4gK3sNCj4+ICsJc3RydWN0IHVrX25ldGRldiAqZGV2Ow0KPj4gKwlp
bnQgcmV0Ow0KPj4gKw0KPj4gKwlVS19BU1NFUlQobmYpOw0KPj4gKwlkZXYgPSBuZXRpZl90b191
a25ldGRldihuZik7DQo+PiArCVVLX0FTU0VSVChkZXYpOw0KPj4gKw0KPj4gKwkvKiBFbmFibGUg
YW5kIGRpc2FibGUgaW50ZXJydXB0cyBhY2NvcmRpbmcgdG8gbmV0aWYncyB1cC9kb3duIHN0YXR1
cyAqLw0KPj4gKwlpZiAobmYtPmZsYWdzICYgTkVUSUZfRkxBR19VUCkgew0KPj4gKwkJcmV0ID0g
dWtfbmV0ZGV2X3J4cV9pbnRyX2VuYWJsZShkZXYsIDApOw0KPj4gKwkJaWYgKHJldCA8IDApIHsN
Cj4+ICsJCQlMV0lQX0RFQlVHRihORVRJRl9ERUJVRywNCj4+ICsJCQkJICAgICgiJXM6ICVjJWMl
dTogRmFpbGVkIHRvIGVuYWJsZSByeCBpbnRlcnJydXB0IG1vZGUgb24gbmV0ZGV2ICV1XG4iLA0K
Pj4gKwkJCQkgICAgIF9fZnVuY19fLCBuZi0+bmFtZVswXSwgbmYtPm5hbWVbMV0sDQo+PiArCQkJ
CSAgICAgbmYtPm51bSwgdWtfbmV0ZGV2X2lkX2dldChkZXYpKSk7DQo+PiArCQl9IGVsc2Ugew0K
Pj4gKwkJCUxXSVBfREVCVUdGKE5FVElGX0RFQlVHLA0KPj4gKwkJCQkgICAgKCIlczogJWMlYyV1
OiBFbmFibGVkIHJ4IGludGVycnVwdCBtb2RlIG9uIG5ldGRldiAldVxuIiwNCj4+ICsJCQkJICAg
ICBfX2Z1bmNfXywgbmYtPm5hbWVbMF0sIG5mLT5uYW1lWzFdLA0KPj4gKwkJCQkgICAgIG5mLT5u
dW0sIHVrX25ldGRldl9pZF9nZXQoZGV2KSkpOw0KPj4gKwkJfQ0KPj4gKw0KPj4gKwkJaWYgKHJl
dCA9PSAxKSB7DQo+PiArCQkJLyoNCj4+ICsJCQkgKiB1a19uZXRkZXZfcnhxX2ludHJfZW5hYmxl
KCkgdG9sZCB1cyB0aGF0IHdlIG5lZWQgdG8NCj4+ICsJCQkgKiBmbHVzaCB0aGUgcmVjZWlldmUg
cXVldWUgYmVmb3JlIGludGVycnVwdHMgYXJlDQo+PiArCQkJICogZW5hYmxlZC4gRm9yIHRoaXMg
cHVycG9zZSB3ZSBkbyBhbiBpbml0aWFsIHBvbGwuDQo+PiArCQkJICovDQo+PiArCQkJdWtuZXRk
ZXZfcG9sbChuZik7DQo+PiArCQl9DQo+PiArCX0gZWxzZSB7DQo+PiArCQl1a19uZXRkZXZfcnhx
X2ludHJfZGlzYWJsZShkZXYsIDApOw0KPj4gKwkJTFdJUF9ERUJVR0YoTkVUSUZfREVCVUcsDQo+
PiArCQkJICAgICgiJXM6ICVjJWMldTogRGlzYWJsZWQgcnggaW50ZXJydXB0cyBvbiBuZXRkZXYg
JXVcbiIsDQo+PiArCQkJICAgICBfX2Z1bmNfXywgbmYtPm5hbWVbMF0sIG5mLT5uYW1lWzFdLA0K
Pj4gKwkJCSAgICAgbmYtPm51bSwgdWtfbmV0ZGV2X2lkX2dldChkZXYpKSk7DQo+PiArDQo+PiAr
CX0NCj4+ICt9DQo+PiArI2VuZGlmIC8qIENPTkZJR19MV0lQX05PVEhSRUFEUyAqLw0KPj4gKw0K
Pj4gK2Vycl90IHVrbmV0ZGV2X2luaXQoc3RydWN0IG5ldGlmICpuZikNCj4+ICt7DQo+PiArCXN0
cnVjdCB1a19hbGxvYyAqYSA9IE5VTEw7DQo+PiArCXN0cnVjdCB1a19uZXRkZXYgKmRldjsNCj4+
ICsJc3RydWN0IHVrX25ldGRldl9jb25mIGRldl9jb25mOw0KPj4gKwlzdHJ1Y3QgdWtfbmV0ZGV2
X3J4cXVldWVfY29uZiByeHFfY29uZjsNCj4+ICsJc3RydWN0IHVrX25ldGRldl90eHF1ZXVlX2Nv
bmYgdHhxX2NvbmY7DQo+PiArCXN0cnVjdCB1a19uZXRkZXZfaW5mbyBpbmZvOw0KPj4gKwljb25z
dCBzdHJ1Y3QgdWtfaHdhZGRyICpod2FkZHI7DQo+PiArCXVuc2lnbmVkIGludCBpOw0KPj4gKwlp
bnQgcmV0Ow0KPj4gKw0KPj4gKwlVS19BU1NFUlQobmYpOw0KPj4gKwlkZXYgPSBuZXRpZl90b191
a25ldGRldihuZik7DQo+PiArCVVLX0FTU0VSVChkZXYpOw0KPj4gKw0KPj4gKwlMV0lQX0FTU0VS
VCgidWtuZXRkZXYgbmVlZHMgYW4gaW5wdXQgY2FsbGJhY2sgKG5ldGlmX2lucHV0IG9yIHRjcGlw
X2lucHV0KSIsDQo+PiArCQkgICAgbmYtPmlucHV0ICE9IE5VTEwpOw0KPj4gKw0KPj4gKwkvKiBO
ZXRkZXYgaGFzIHRvIGJlIGluIHVuY29uZmlndXJlZCBzdGF0ZSAqLw0KPj4gKwlpZiAodWtfbmV0
ZGV2X3N0YXRlX2dldChkZXYpICE9IFVLX05FVERFVl9VTkNPTkZJR1VSRUQpIHsNCj4+ICsJCUxX
SVBfREVCVUdGKE5FVElGX0RFQlVHLA0KPj4gKwkJCSAgICAoIiVzOiBOZXRkZXYgJXUgbm90IGlu
IHVuY29maWd1cmVkIHN0YXRlXG4iLA0KPj4gKwkJCSAgICAgX19mdW5jX18sIHVrX25ldGRldl9p
ZF9nZXQoZGV2KSkpOw0KPj4gKwkJcmV0dXJuIEVSUl9JU0NPTk47DQo+PiArCX0NCj4+ICsNCj4+
ICsJLyogSW50ZXJmYWNlIG5hbWUsIHRoZSBpbnRlcmZhY2UgbnVtYmVyIChuZi0+bnVtKSBpcyBh
c3NpZ25lZCBieSBsd2lwICovDQo+PiArCW5mLT5uYW1lWzBdID0gVUtORVRERVZfTkVUSUZfTkFN
RTA7DQo+PiArCW5mLT5uYW1lWzFdID0gVUtORVRERVZfTkVUSUZfTkFNRTE7DQo+PiArDQo+PiAr
CS8qDQo+PiArCSAqIEJyaW5nIHVwIHVrbmV0ZGV2DQo+PiArCSAqIE5vdGU6IFdlIHVzZSB0aGUg
ZGVmYXVsdCBhbGxvY2F0b3IgZm9yIHNldHRpbmcgdXAgdGhlIHJ4L3R4IHF1ZXVlcw0KPj4gKwkg
Ki8NCj4+ICsJLyogVE9ETzogSW4gY2FzZSB0aGUgZGV2aWNlIGluaXRpYWxpemF0aW9uIHNob3Vs
ZCBoYXBwZW4gbWFudWFsbHkgYmVmb3JlDQo+PiArCSAqICAgICAgIGF0dGFjaGluZyB0byBsd2lw
LCB3ZSByZXF1aXJlIGFub3RoZXIgaW5pdCBmdW5jdGlvbiB0aGF0IHNraXBzDQo+PiArCSAqICAg
ICAgIHRoaXMgaW5pdGlhbGl6YXRpb24gc3RlcHMuDQo+PiArCSAqLw0KPj4gKwlhID0gdWtfYWxs
b2NfZ2V0X2RlZmF1bHQoKTsNCj4+ICsJaWYgKCFhKQ0KPj4gKwkJcmV0dXJuIEVSUl9NRU07DQo+
PiArDQo+PiArCS8qIEdldCBkZXZpY2UgaW5mb3JtYXRpb24gKi8NCj4+ICsJdWtfbmV0ZGV2X2lu
Zm9fZ2V0KGRldiwgJmluZm8pOw0KPj4gKwlpZiAoIWluZm8ubWF4X3J4X3F1ZXVlcyB8fCAhaW5m
by5tYXhfdHhfcXVldWVzKQ0KPj4gKwkJcmV0dXJuIEVSUl9JRjsNCj4+ICsNCj4+ICsJLyoNCj4+
ICsJICogVXBkYXRlIG91ciBnbG9iYWwgKHJ4fHR4KV9oZWFkcm9vbSBzZXR0aW5nIHRoYXQgd2Ug
dXNlIGZvcg0KPj4gKwkgKiBidWZmZXIgYWxsb2NhdGlvbnMNCj4+ICsJICovDQo+PiArCXJ4X2hl
YWRyb29tID0gKHJ4X2hlYWRyb29tIDwgaW5mby5uYl9lbmNhcF9yeCkNCj4+ICsJCSAgICAgID8g
aW5mby5uYl9lbmNhcF9yeCA6IHJ4X2hlYWRyb29tOw0KPj4gKwl0eF9oZWFkcm9vbSA9ICh0eF9o
ZWFkcm9vbSA8IGluZm8ubmJfZW5jYXBfdHgpDQo+PiArCQkgICAgICA/IGluZm8ubmJfZW5jYXBf
dHggOiB0eF9oZWFkcm9vbTsNCj4+ICsJTFdJUF9ERUJVR0YoTkVUSUZfREVCVUcsDQo+PiArCQkg
ICAgKCIlczogJWMlYyV1OiBOZWVkIGhlYWRyb29tIHJ4OiUiUFJJdTE2IiwgdHg6JSJQUkl1MTYi
XG4iLA0KPj4gKwkJICAgICBfX2Z1bmNfXywgbmYtPm5hbWVbMF0sIG5mLT5uYW1lWzFdLCBuZi0+
bnVtLA0KPj4gKwkJICAgICBpbmZvLm5iX2VuY2FwX3J4LCBpbmZvLm5iX2VuY2FwX3R4KSk7DQo+
PiArDQo+PiArCS8qDQo+PiArCSAqIERldmljZSBjb25maWd1cmF0aW9uLA0KPj4gKwkgKiB3ZSB3
YW50IHRvIHVzZSBqdXN0IG9uZSBxdWV1ZSBmb3IgZWFjaCBkaXJlY3Rpb24NCj4+ICsJICovDQo+
PiArCWRldl9jb25mLm5iX3J4X3F1ZXVlcyA9IDE7DQo+PiArCWRldl9jb25mLm5iX3R4X3F1ZXVl
cyA9IDE7DQo+PiArCXJldCA9IHVrX25ldGRldl9jb25maWd1cmUoZGV2LCAmZGV2X2NvbmYpOw0K
Pj4gKwlpZiAocmV0IDwgMCkgew0KPj4gKwkJTFdJUF9ERUJVR0YoTkVUSUZfREVCVUcsDQo+PiAr
CQkJICAgICgiJXM6ICVjJWMldTogRmFpbGVkIHRvIGNvbmZpZ3VyZSBuZXRkZXYgJXVcbiIsDQo+
PiArCQkJICAgICBfX2Z1bmNfXywgbmYtPm5hbWVbMF0sIG5mLT5uYW1lWzFdLCBuZi0+bnVtLA0K
Pj4gKwkJCSAgICAgdWtfbmV0ZGV2X2lkX2dldChkZXYpKSk7DQo+PiArCQlyZXR1cm4gRVJSX0lG
Ow0KPj4gKwl9DQo+PiArDQo+PiArCS8qDQo+PiArCSAqIFJlY2VpdmUgcXVldWUsDQo+PiArCSAq
IHVzZSBkcml2ZXIgZGVmYXVsdCBkZXNjcmlwdG9ycw0KPj4gKwkgKi8NCj4+ICsJcnhxX2NvbmYu
YSA9IGE7DQo+PiArCXJ4cV9jb25mLmFsbG9jX3J4cGt0cyA9IG5ldGlmX2FsbG9jX3J4cGt0czsN
Cj4+ICsJcnhxX2NvbmYuYWxsb2Nfcnhwa3RzX2FyZ3AgPSBhOw0KPj4gKyNpZmRlZiBDT05GSUdf
TFdJUF9OT1RIUkVBRFMNCj4+ICsJLyoNCj4+ICsJICogSW4gbWFpbmxvb3AgbW9kZSwgd2Ugd2ls
bCBub3QgdXNlIGludGVycnVwdHMuDQo+PiArCSAqLw0KPj4gKwlyeHFfY29uZi5jYWxsYmFjayA9
IE5VTEw7DQo+PiArCXJ4cV9jb25mLmNhbGxiYWNrX2Nvb2tpZSA9IE5VTEw7DQo+PiArI2Vsc2Ug
IC8qIENPTkZJR19MV0lQX05PVEhSRUFEUyAqLw0KPj4gKwlyeHFfY29uZi5jYWxsYmFjayA9IHVr
bmV0ZGV2X2lucHV0Ow0KPj4gKwlyeHFfY29uZi5jYWxsYmFja19jb29raWUgPSBuZjsNCj4+ICsj
aWZkZWYgQ09ORklHX0xJQlVLTkVUREVWX0RJU1BBVENIRVJUSFJFQURTDQo+PiArCXJ4cV9jb25m
LnMgPSB1a19zY2hlZF9nZXRfZGVmYXVsdCgpOw0KPj4gKwlpZiAoIXJ4cV9jb25mLnMpDQo+PiAr
CQlyZXR1cm4gRVJSX0lGOw0KPj4gKw0KPj4gKyNlbmRpZiAvKiBDT05GSUdfTElCVUtORVRERVZf
RElTUEFUQ0hFUlRIUkVBRFMgKi8NCj4+ICsjZW5kaWYgLyogQ09ORklHX0xXSVBfTk9USFJFQURT
ICovDQo+PiArCXJldCA9IHVrX25ldGRldl9yeHFfY29uZmlndXJlKGRldiwgMCwgMCwgJnJ4cV9j
b25mKTsNCj4+ICsJaWYgKHJldCA8IDApIHsNCj4+ICsJCUxXSVBfREVCVUdGKE5FVElGX0RFQlVH
LA0KPj4gKwkJCSAgICAoIiVzOiAlYyVjJXU6IEZhaWxlZCB0byBjb25maWd1cmUgcnggcXVldWUg
b2YgbmV0ZGV2ICV1XG4iLA0KPj4gKwkJCSAgICAgX19mdW5jX18sIG5mLT5uYW1lWzBdLCBuZi0+
bmFtZVsxXSwgbmYtPm51bSwNCj4+ICsJCQkgICAgIHVrX25ldGRldl9pZF9nZXQoZGV2KSkpOw0K
Pj4gKwkJcmV0dXJuIEVSUl9JRjsNCj4+ICsJfQ0KPj4gKw0KPj4gKwkvKg0KPj4gKwkgKiBUcmFu
c21pdCBxdWV1ZSwNCj4+ICsJICogdXNlIGRyaXZlciBkZWZhdWx0IGRlc2NyaXB0b3JzDQo+PiAr
CSAqLw0KPj4gKwl0eHFfY29uZi5hID0gYTsNCj4+ICsJcmV0ID0gdWtfbmV0ZGV2X3R4cV9jb25m
aWd1cmUoZGV2LCAwLCAwLCAmdHhxX2NvbmYpOw0KPj4gKwlpZiAocmV0IDwgMCkgew0KPj4gKwkJ
TFdJUF9ERUJVR0YoTkVUSUZfREVCVUcsDQo+PiArCQkJICAgICgiJXM6ICVjJWMldTogRmFpbGVk
IHRvIGNvbmZpZ3VyZSB0eCBxdWV1ZSBvZiBuZXRkZXYgJXVcbiIsDQo+PiArCQkJICAgICBfX2Z1
bmNfXywgbmYtPm5hbWVbMF0sIG5mLT5uYW1lWzFdLCBuZi0+bnVtLA0KPj4gKwkJCSAgICAgdWtf
bmV0ZGV2X2lkX2dldChkZXYpKSk7DQo+PiArCQlyZXR1cm4gRVJSX0lGOw0KPj4gKwl9DQo+PiAr
DQo+PiArCS8qIFN0YXJ0IGludGVyZmFjZSAqLw0KPj4gKwlyZXQgPSB1a19uZXRkZXZfc3RhcnQo
ZGV2KTsNCj4+ICsJaWYgKHJldCA8IDApIHsNCj4+ICsJCUxXSVBfREVCVUdGKE5FVElGX0RFQlVH
LA0KPj4gKwkJCSAgICAoIiVzOiAlYyVjJXU6IEZhaWxlZCB0byBzdGFydCBuZXRkZXYgJXVcbiIs
DQo+PiArCQkJICAgICBfX2Z1bmNfXywgbmYtPm5hbWVbMF0sIG5mLT5uYW1lWzFdLCBuZi0+bnVt
LA0KPj4gKwkJCSAgICAgdWtfbmV0ZGV2X2lkX2dldChkZXYpKSk7DQo+PiArCQlyZXR1cm4gRVJS
X0lGOw0KPj4gKwl9DQo+PiArDQo+PiArCS8qIERyaXZlciBjYWxsYmFja3MgKi8NCj4+ICsjaWYg
TFdJUF9JUFY0DQo+PiArCW5mLT5vdXRwdXQgPSBldGhhcnBfb3V0cHV0Ow0KPj4gKyNlbmRpZiAv
KiBMV0lQX0lQVjQgKi8NCj4+ICsjaWYgTFdJUF9JUFY2DQo+PiArCW5mLT5vdXRwdXRfaXA2ID0g
ZXRoaXA2X291dHB1dDsNCj4+ICsjZW5kaWYgLyogTFdJUF9JUFY2ICovDQo+PiArCW5mLT5saW5r
b3V0cHV0ID0gdWtuZXRkZXZfb3V0cHV0Ow0KPj4gKw0KPj4gKwkvKiBUT0RPOiBTZXQgcmVtb3Zl
IGNhbGxiYWNrICovDQo+PiArDQo+PiArCS8qIERldmljZSBjYXBhYmlsaXRpZXMgKi8NCj4+ICsJ
bmV0aWZfc2V0X2ZsYWdzKG5mLCAoTkVUSUZfRkxBR19CUk9BRENBU1QNCj4+ICsJCQkgICAgIHwg
TkVUSUZfRkxBR19FVEhBUlANCj4+ICsJCQkgICAgIHwgTkVUSUZfRkxBR19MSU5LX1VQKSk7DQo+
PiArCUxXSVBfREVCVUdGKE5FVElGX0RFQlVHLA0KPj4gKwkJICAgICgiJXM6ICVjJWMldTogZmxh
Z3M6ICUiUFJJeDgiXG4iLA0KPj4gKwkJICAgICBfX2Z1bmNfXywgbmYtPm5hbWVbMF0sIG5mLT5u
YW1lWzFdLCBuZi0+bnVtLCBuZi0+ZmxhZ3MpKTsNCj4+ICsNCj4+ICsjaWYgTFdJUF9DSEVDS1NV
TV9DVFJMX1BFUl9ORVRJRg0KPj4gKwkvKg0KPj4gKwkgKiBDaGVja3N1bSBzZXR0aW5ncw0KPj4g
KwkgKiBUT0RPOiBsaWJ1a25ldGRldiBkb2VzIG5vdCBzdXBwb3J0IGNoZWNrc3VtIGNhcGFiaWxp
dGllcyB5ZXQuDQo+PiArCSAqICAgICAgIEJlY2F1c2Ugb2YgdGhpcywgd2UgbmVlZCB0byBjYWxj
dWxhdGUgdGhlIGNoZWNrc3VtIGZvciBldmVyeQ0KPj4gKwkgKiAgICAgICBvdXRnb2luZyBwYWNr
ZXQgaW4gc29mdHdhcmUuIFdlIGFzc3VtZSB0aGF0IHdlIHJlY2VpdmUgcGFja2V0cw0KPj4gKwkg
KiAgICAgICBmcm9tIGEgdmlydHVhbCBpbnRlcmZhY2UsIHNvIHRoZSBob3N0IHdhcyBkb2luZyBh
IGNoZWNrIGZvciB1cw0KPj4gKwkgKiAgICAgICBhbHJlYWR5LiBJbiBjYXNlIG9mIGd1ZXN0LXRv
LWd1ZXN0IGNvbW11bmljYXRpb24sIHRoZSBjaGVja3N1bQ0KPj4gKwkgKiAgICAgICBmaWVsZCBt
YXkgYmUgaW5jb3JyZWN0IGJlY2F1c2UgdGhlIG90aGVyIGd1ZXN0IGV4cGVjdHMgdGhhdCB0aGUN
Cj4+ICsJICogICAgICAgaG9zdCBpcyBvZmZsb2FkaW5nIHRoZSBjYWxjdWxhdGlvbiB0byBoYXJk
d2FyZSBhcyBzb29uIGFzIGENCj4+ICsJICogICAgICAgcGFja2V0IGxlYXZlcyB0aGUgcGh5c2lj
YWwgaG9zdCBtYWNoaW5lLiBBdCB0aGlzIHBvaW50LCB0aGUNCj4+ICsJICogICAgICAgYmVzdCB3
ZSBjYW4gZG8gaXMgbm90IHRvIGNoZWNrIGFueSBjaGVja3N1bXMgb24gaW5jb21pbmcNCj4+ICsJ
ICogICAgICAgdHJhZmZpYyBhbmQgYXNzdW1lIGV2ZXJ5dGhpbmcgaXMgZmluZS4NCj4+ICsJICov
DQo+PiArCU5FVElGX1NFVF9DSEVDS1NVTV9DVFJMKG5mLCAoTkVUSUZfQ0hFQ0tTVU1fR0VOX0lQ
DQo+PiArCQkJCSAgICAgfCBORVRJRl9DSEVDS1NVTV9HRU5fVURQDQo+PiArCQkJCSAgICAgfCBO
RVRJRl9DSEVDS1NVTV9HRU5fVENQDQo+PiArCQkJCSAgICAgfCBORVRJRl9DSEVDS1NVTV9HRU5f
SUNNUA0KPj4gKwkJCQkgICAgIHwgTkVUSUZfQ0hFQ0tTVU1fR0VOX0lDTVA2KSk7DQo+PiArCUxX
SVBfREVCVUdGKE5FVElGX0RFQlVHLA0KPj4gKwkJICAgICgiJXM6ICVjJWMldTogY2hrc3VtX2Zs
YWdzOiAlIlBSSXgxNiJcbiIsDQo+PiArCQkgICAgIF9fZnVuY19fLCBuZi0+bmFtZVswXSwgbmYt
Pm5hbWVbMV0sIG5mLT5udW0sDQo+PiArCQkgICAgIG5mLT5jaGtzdW1fZmxhZ3MpKTsNCj4+ICsj
ZW5kaWYgLyogTFdJUF9DSEVDS1NVTV9DVFJMX1BFUl9ORVRJRiAqLw0KPj4gKw0KPj4gKwkvKiBN
QUMgYWRkcmVzcyAqLw0KPj4gKwlVS19BU1NFUlQoTkVUSUZfTUFYX0hXQUREUl9MRU4gPj0gVUtf
TkVUREVWX0hXQUREUl9MRU4pOw0KPj4gKwlod2FkZHIgPSB1a19uZXRkZXZfaHdhZGRyX2dldChk
ZXYpOw0KPj4gKwlVS19BU1NFUlQoaHdhZGRyKTsNCj4+ICsJbmYtPmh3YWRkcl9sZW4gPSBVS19O
RVRERVZfSFdBRERSX0xFTjsNCj4+ICsJZm9yIChpID0gMDsgaSA8IFVLX05FVERFVl9IV0FERFJf
TEVOOyArK2kpDQo+PiArCQluZi0+aHdhZGRyW2ldID0gaHdhZGRyLT5hZGRyX2J5dGVzW2ldOw0K
Pj4gKyNpZiBVS19ORVRERVZfSFdBRERSX0xFTiA9PSA2DQo+PiArCUxXSVBfREVCVUdGKE5FVElG
X0RFQlVHLA0KPj4gKwkJICAgICgiJXM6ICVjJWMldTogSGFyZHdhcmUgYWRkcmVzczogJTAyIlBS
SXg4IjolMDIiUFJJeDgiOiUwMiJQUkl4OCI6JTAyIlBSSXg4IjolMDIiUFJJeDgiOiUwMiJQUkl4
OCJcbiIsDQo+PiArCQkgICAgIF9fZnVuY19fLCBuZi0+bmFtZVswXSwgbmYtPm5hbWVbMV0sIG5m
LT5udW0sDQo+PiArCQkgICAgIG5mLT5od2FkZHJbMF0sIG5mLT5od2FkZHJbMV0sIG5mLT5od2Fk
ZHJbMl0sDQo+PiArCQkgICAgIG5mLT5od2FkZHJbM10sIG5mLT5od2FkZHJbNF0sIG5mLT5od2Fk
ZHJbNV0pKTsNCj4+ICsjZWxzZSAvKiBVS19ORVRERVZfSFdBRERSX0xFTiAqLw0KPj4gKwlMV0lQ
X0RFQlVHRihORVRJRl9ERUJVRywNCj4+ICsJCSAgICAoIiVzOiAlYyVjJXU6IEhhcmR3YXJlIGFk
ZHJlc3Mgc2V0XG4iLA0KPj4gKwkJICAgICBfX2Z1bmNfXywgbmYtPm5hbWVbMF0sIG5mLT5uYW1l
WzFdLCBuZi0+bnVtKSk7DQo+PiArI2VuZGlmIC8qIFVLX05FVERFVl9IV0FERFJfTEVOICovDQo+
PiArDQo+PiArCS8qIE1heGltdW0gdHJhbnNmZXIgdW5pdCAqLw0KPj4gKwluZi0+bXR1ID0gdWtf
bmV0ZGV2X210dV9nZXQoZGV2KTsNCj4+ICsJVUtfQVNTRVJUKG5mLT5tdHUpOw0KPj4gKwlMV0lQ
X0RFQlVHRihORVRJRl9ERUJVRywNCj4+ICsJCSAgICAoIiVzOiAlYyVjJXU6IE1UVTogJXVcbiIs
DQo+PiArCQkgICAgIF9fZnVuY19fLCBuZi0+bmFtZVswXSwgbmYtPm5hbWVbMV0sIG5mLT5udW0s
DQo+PiArCQkgICAgIG5mLT5tdHUpKTsNCj4+ICsNCj4+ICsjaWZuZGVmIENPTkZJR19MV0lQX05P
VEhSRUFEUw0KPj4gKwkvKg0KPj4gKwkgKiBXZSB3aWxsIHVzZSB0aGUgc3RhdHVzIHVwZGF0ZSBj
YWxsYmFjayB0byBlbmFibGUgYW5kIGRpc2FibGVkDQo+PiArCSAqIHJlY2VpdmUgcXVldWUgaW50
ZXJydXB0cw0KPj4gKwkgKi8NCj4+ICsJbmV0aWZfc2V0X3N0YXR1c19jYWxsYmFjayhuZiwgdWtu
ZXRkZXZfdXBkb3duKTsNCj4+ICsjZW5kaWYgLyogIUNPTkZJR19MV0lQX05PVEhSRUFEUyAqLw0K
Pj4gKw0KPj4gKwkvKg0KPj4gKwkgKiBJbml0aWFsaXplIHRoZSBzbm1wIHZhcmlhYmxlcyBhbmQg
Y291bnRlcnMgaW5zaWRlIHRoZSBzdHJ1Y3QgbmV0aWYuDQo+PiArCSAqIFRoZSBsYXN0IGFyZ3Vt
ZW50IGlzIHRoZSBsaW5rIHNwZWVkLCBpbiB1bml0cyBvZiBiaXRzIHBlciBzZWNvbmQuDQo+PiAr
CSAqLw0KPj4gKwlORVRJRl9JTklUX1NOTVAobmYsIHNubXBfaWZUeXBlX2V0aGVybmV0X2NzbWFj
ZCwgVUtORVRERVZfQlBTKTsNCj4+ICsJTFdJUF9ERUJVR0YoTkVUSUZfREVCVUcsDQo+PiArCQkg
ICAgKCIlczogJWMlYyV1OiBMaW5rIHNwZWVkOiAlIlBSSXUzMiIgYnBzXG4iLA0KPj4gKwkJICAg
ICBfX2Z1bmNfXywgbmYtPm5hbWVbMF0sIG5mLT5uYW1lWzFdLCBuZi0+bnVtLA0KPj4gKwkJICAg
ICBVS05FVERFVl9CUFMpKTsNCj4+ICsNCj4+ICsJcmV0dXJuIEVSUl9PSzsNCj4+ICt9DQo+PiAr
DQo+PiArI2lmIENPTkZJR19MV0lQX05PVEhSRUFEUw0KPj4gKyNkZWZpbmUgTkVUSUZfSU5QVVQg
ZXRoZXJuZXRfaW5wdXQNCj4+ICsjZWxzZSAvKiBDT05GSUdfTFdJUF9OT1RIUkVBRFMgKi8NCj4+
ICsjZGVmaW5lIE5FVElGX0lOUFVUIHRjcGlwX2lucHV0DQo+PiArI2VuZGlmIC8qQ09ORklHX0xX
SVBfTk9USFJFQURTICovDQo+PiArDQo+PiArc3RydWN0IG5ldGlmICp1a25ldGRldl9hZGRpZihz
dHJ1Y3QgdWtfbmV0ZGV2ICpuDQo+PiArI2lmIExXSVBfSVBWNA0KPj4gKwkJCSAgICAgLA0KPj4g
KwkJCSAgICAgY29uc3QgaXA0X2FkZHJfdCAqaXBhZGRyLA0KPj4gKwkJCSAgICAgY29uc3QgaXA0
X2FkZHJfdCAqbmV0bWFzaywNCj4+ICsJCQkgICAgIGNvbnN0IGlwNF9hZGRyX3QgKmd3DQo+PiAr
I2VuZGlmIC8qIExXSVBfSVBWNCAqLw0KPj4gKwkpDQo+PiArew0KPj4gKwkvKg0KPj4gKwkgKiBU
aGlzIHBvaW50ZXIgYW5kIFVLX1JFQURfT05DRSBvbiBpdCBpcyBhbiB1Z2x5IHdvcmthcm91bmQN
Cj4+ICsJICogYWdhaW5zdCBhIHByZXR0eSB3ZWlyZCBwcm9ibGVtLiBXaXRob3V0IGl0LCB0aGUg
bGFzdA0KPj4gKwkgKiBwYXJhbWV0ZXIgb2YgbmV0aWZfYWRkIHBhc3NlZCBhcyBOVUxMLiBJdCBz
ZWVtcyB0byBiZSBhDQo+PiArCSAqIGJ1aWxkIHRpbWUgcHJvYmxlbSBiZWNhdXNlOg0KPj4gKwkg
Kg0KPj4gKwkgKiAtIE1vdmluZyAiaW5wdXQiIHBhcmFtZXRlciB0byB0aGUgZmlyc3QgcG9zaXRp
b25zIGhlbHBzDQo+PiArCSAqIC0gUmVtb3Zpbmcgb25lIHBhcmFtZXRlciBoZWxwcy4gU2VlbXMg
ZG9lcyBub3QgbWF0dGVyIHdoaWNoDQo+PiArCSAqIC0gQW4gZXh0cmEgcGFyYW1ldGVyIGFkZGVk
IGFmdGVyICJpbnB1dCIgd29ya3Mgd2VsbC4gQW5kDQo+PiArCSAqICAgaW5wdXQgaXMgc3RpbGwg
TlVMTCBpbiB0aGlzIGNhc2UNCj4+ICsJICogLSBTd2FwcGluZyAiaW5pdCIgYW5kICJpbnB1dCIg
aGVscHMNCj4+ICsJICovDQo+PiArCXN0YXRpYyBjb25zdCB2b2lkICpwZXRoZXJuZXRfaW5wdXQg
PSBORVRJRl9JTlBVVDsNCj4+ICsJc3RydWN0IG5ldGlmICpuZjsNCj4+ICsJc3RydWN0IG5ldGlm
ICpyZXQ7DQo+PiArDQo+PiArCW5mID0gbWVtX2NhbGxvYygxLCBzaXplb2YoKm5mKSk7DQo+PiAr
CWlmICghbmYpDQo+PiArCQlyZXR1cm4gTlVMTDsNCj4+ICsNCj4+ICsJcmV0ID0gbmV0aWZfYWRk
KG5mLA0KPj4gKyNpZiBMV0lQX0lQVjQNCj4+ICsJCQlpcGFkZHIsIG5ldG1hc2ssIGd3LA0KPj4g
KyNlbmRpZiAvKiBMV0lQX0lQVjQgKi8NCj4+ICsJCQluLCB1a25ldGRldl9pbml0LCBVS19SRUFE
X09OQ0UocGV0aGVybmV0X2lucHV0KSk7DQo+PiArCVVLX0FTU0VSVChuZi0+aW5wdXQpOw0KPj4g
Kw0KPj4gKwlpZiAoIXJldCkgew0KPj4gKwkJbWVtX2ZyZWUobmYpOw0KPj4gKwkJcmV0dXJuIE5V
TEw7DQo+PiArCX0NCj4+ICsNCj4+ICsJcmV0dXJuIHJldDsNCj4+ICt9DQoNCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5n
IGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVu
cHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Feb 11 18:04:37 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 11 Feb 2019 18:04:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gtFwa-0006TQ-WE; Mon, 11 Feb 2019 18:04:36 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=ktH6=QS=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1gtFwa-0006TL-1G
 for minios-devel@lists.xen.org; Mon, 11 Feb 2019 18:04:36 +0000
X-Inumbo-ID: 7b5f1d22-2e27-11e9-bdb5-8bc7cad7cf65
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 7b5f1d22-2e27-11e9-bdb5-8bc7cad7cf65;
 Mon, 11 Feb 2019 18:04:32 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id C69C8104DBE;
 Mon, 11 Feb 2019 19:04:31 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id q9dSh4s6yVIy; Mon, 11 Feb 2019 19:04:31 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id A31E4104DBD
 for <minios-devel@lists.xen.org>; Mon, 11 Feb 2019 19:04:29 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 11 Feb 2019 19:04:29
 +0100
To: Simon Kuenzer <simon.kuenzer@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190207230035.29861-1-simon.kuenzer@neclab.eu>
 <20190207230035.29861-6-simon.kuenzer@neclab.eu>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <8e6f73c7-39be-e83c-02b0-54071690f9b4@neclab.eu>
Date: Mon, 11 Feb 2019 19:04:29 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190207230035.29861-6-simon.kuenzer@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT/LIBLWIP PATCH 5/5] Netif status print
 callback
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gU2ltb24sCgpUaGlzIHBhdGNoIHNlZW1zIGZpbmUuCgoKUmV2aWV3ZWQtYnk6IFNoYXJh
biBTYW50aGFuYW0gPHNoYXJhbi5zYW50aGFuYW1AbmVjbGFiLmV1PgoKVGhhbmtzICYgUmVnYXJk
cwpTaGFyYW4KCk9uIDIvOC8xOSAxMjowMCBBTSwgU2ltb24gS3VlbnplciB3cm90ZToKPiBJbnRy
b2R1Y2UgYSBzdGF0dXMgcHJpbnQgaG9vayB0byBhbGwgbmV0aWZzIG9wZXJhdGVkIGJ5IHRoZSBs
d0lQCj4gc3RhY2suIFN0YXRlIGNoYW5nZXMgKGUuZy4sIGFzc2lnbmluZyBvZiBhbiBJUCwgYnJp
bmdpbmcgZGV2aWNlIHVwIG9yCj4gZG93bikgYXJlIHByaW50ZWQgdG8gdGhlIHN0YW5kYXJkIGNv
bnNvbGUuIEJlY2F1c2UgdGhlIHN0YWNrIGlzIG5vdAo+IHByaW50aW5nIGFueSBtZXNzYWdlIHRv
IHRoZSBjb25zb2xlIHdpdGggdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiwgd2UKPiBlbmFibGUg
dGhpcyBwcmludCBob29rIGFzIGRlZmF1bHQuCj4gCj4gU2lnbmVkLW9mZi1ieTogU2ltb24gS3Vl
bnplciA8c2ltb24ua3VlbnplckBuZWNsYWIuZXU+Cj4gLS0tCj4gICBDb25maWcudWsgICAgICAg
ICAgfCAxMyArKysrKysrKysKPiAgIGluY2x1ZGUvbHdpcG9wdHMuaCB8ICA2ICsrKysrCj4gICBp
bml0LmMgICAgICAgICAgICAgfCA2NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrCj4gICAzIGZpbGVzIGNoYW5nZWQsIDg1IGluc2VydGlvbnMoKykKPiAKPiBk
aWZmIC0tZ2l0IGEvQ29uZmlnLnVrIGIvQ29uZmlnLnVrCj4gaW5kZXggYWNmZTNlZi4uYTBkYjQx
ZCAxMDA2NDQKPiAtLS0gYS9Db25maWcudWsKPiArKysgYi9Db25maWcudWsKPiBAQCAtNjcsNiAr
NjcsMTkgQEAgY29uZmlnIExXSVBfSEVBUAo+ICAgIwlib29sICJNZW1vcnkgcG9vbHMiCj4gICBl
bmRjaG9pY2UKPiAgIAo+ICtjb25maWcgTFdJUF9ORVRJRl9FWFRfU1RBVFVTX0NBTExCQUNLCj4g
Kwlib29sICJOZXRpZiBleHRlbmRlZCBzdGF0dXMgY2FsbGJhY2sgQVBJIgo+ICsJZGVmYXVsdCB5
Cj4gKwloZWxwCj4gKwkJU3VwcG9ydCBleHRlbmRlZCBzdGF0dXMgY2FsbGJhY2tzIHRvIG5ldGlm
IHJlbGF0ZWQgZXZlbnRzLgo+ICsKPiArY29uZmlnIExXSVBfTkVUSUZfU1RBVFVTX1BSSU5UCj4g
Kwlib29sICJQcmludCBuZXRpZiBzdGF0dXMgdXBkYXRlcyIKPiArCWRlcGVuZHMgb24gTFdJUF9O
RVRJRl9FWFRfU1RBVFVTX0NBTExCQUNLCj4gKwlkZWZhdWx0IHkKPiArCWhlbHAKPiArCQlQcmlu
dCBuZXRpZiBzdGF0dXMgY2hhbmdlcyB0byBzdGFuZGFyZCBjb25zb2xlCj4gKwo+ICAgY29uZmln
IExXSVBfSVBWNAo+ICAgCWJvb2wgIklQdjQgc3VwcG9ydCIKPiAgIAlkZWZhdWx0IHkKPiBkaWZm
IC0tZ2l0IGEvaW5jbHVkZS9sd2lwb3B0cy5oIGIvaW5jbHVkZS9sd2lwb3B0cy5oCj4gaW5kZXgg
NzQ5YjJhOS4uYzk0YzIzZCAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL2x3aXBvcHRzLmgKPiArKysg
Yi9pbmNsdWRlL2x3aXBvcHRzLmgKPiBAQCAtODksNiArODksMTIgQEAgdm9pZCBzeXNfZnJlZSh2
b2lkICpwdHIpOwo+ICAgI2RlZmluZSBMV0lQX1RJTUVWQUxfUFJJVkFURSAwCj4gICAjZGVmaW5l
IExXSVBfTkVUSUZfU1RBVFVTX0NBTExCQUNLIDEKPiAgIAo+ICsjaWYgQ09ORklHX0xXSVBfTkVU
SUZfRVhUX1NUQVRVU19DQUxMQkFDSwo+ICsjZGVmaW5lIExXSVBfTkVUSUZfRVhUX1NUQVRVU19D
QUxMQkFDSyAxCj4gKyNlbHNlCj4gKyNkZWZpbmUgTFdJUF9ORVRJRl9FWFRfU1RBVFVTX0NBTExC
QUNLIDAKPiArI2VuZGlmIC8qIENPTkZJR19MV0lQX05FVElGX0VYVF9TVEFUVVNfQ0FMTEJBQ0sg
Ki8KPiArCj4gICAvKioKPiAgICAqIEFSUCBvcHRpb25zCj4gICAgKi8KPiBkaWZmIC0tZ2l0IGEv
aW5pdC5jIGIvaW5pdC5jCj4gaW5kZXggNjVkNTZiNi4uYTU4NTRiOCAxMDA2NDQKPiAtLS0gYS9p
bml0LmMKPiArKysgYi9pbml0LmMKPiBAQCAtNDUsNiArNDUsNjcgQEAKPiAgICNlbmRpZiAvKiBD
T05GSUdfTFdJUF9OT1RIUkVBRFMgKi8KPiAgICNpbmNsdWRlICJuZXRpZi91a25ldGRldi5oIgo+
ICAgCj4gKyNpZiBMV0lQX05FVElGX0VYVF9TVEFUVVNfQ0FMTEJBQ0sgJiYgQ09ORklHX0xXSVBf
TkVUSUZfU1RBVFVTX1BSSU5UCj4gKyNpbmNsdWRlIDxzdGRpby5oPgo+ICsKPiArc3RhdGljIHZv
aWQgX25ldGlmX3N0YXR1c19wcmludChzdHJ1Y3QgbmV0aWYgKm5mLCBuZXRpZl9uc2NfcmVhc29u
X3QgcmVhc29uLAo+ICsJCQkJY29uc3QgbmV0aWZfZXh0X2NhbGxiYWNrX2FyZ3NfdCAqYXJncykK
PiArewo+ICsJaWYgKHJlYXNvbiAmIExXSVBfTlNDX05FVElGX0FEREVEKQo+ICsJCXByaW50Zigi
JWMlYyV1OiBBZGRlZFxuIiwKPiArCQkgICAgICAgbmYtPm5hbWVbMF0sIG5mLT5uYW1lWzFdLCBu
Zi0+bnVtKTsKPiArCWlmIChyZWFzb24gJiBMV0lQX05TQ19ORVRJRl9SRU1PVkVEKQo+ICsJCXBy
aW50ZigiJWMlYyV1OiBSZW1vdmVkXG4iLAo+ICsJCSAgICAgICBuZi0+bmFtZVswXSwgbmYtPm5h
bWVbMV0sIG5mLT5udW0pOwo+ICsJaWYgKHJlYXNvbiAmIExXSVBfTlNDX0xJTktfQ0hBTkdFRCkK
PiArCQlwcmludGYoIiVjJWMldTogTGluayBpcyAlc1xuIiwKPiArCQkgICAgICAgbmYtPm5hbWVb
MF0sIG5mLT5uYW1lWzFdLCBuZi0+bnVtLAo+ICsJCSAgICAgICBhcmdzLT5saW5rX2NoYW5nZWQu
c3RhdGUgPyAidXAiIDogImRvd24iKTsKPiArCWlmIChyZWFzb24gJiBMV0lQX05TQ19TVEFUVVNf
Q0hBTkdFRCkKPiArCQlwcmludGYoIiVjJWMldTogSW50ZXJmYWNlIGlzICVzXG4iLAo+ICsJCSAg
ICAgICBuZi0+bmFtZVswXSwgbmYtPm5hbWVbMV0sIG5mLT5udW0sCj4gKwkJICAgICAgIGFyZ3Mt
PnN0YXR1c19jaGFuZ2VkLnN0YXRlID8gInVwIiA6ICJkb3duIik7Cj4gKwo+ICsjaWYgTFdJUF9J
UFY0Cj4gKwlpZiAoKHJlYXNvbiAmIExXSVBfTlNDX0lQVjRfU0VUVElOR1NfQ0hBTkdFRCkKPiAr
CSAgICB8fCAocmVhc29uICYgTFdJUF9OU0NfSVBWNF9BRERSRVNTX0NIQU5HRUQpCj4gKwkgICAg
fHwgKHJlYXNvbiAmIExXSVBfTlNDX0lQVjRfTkVUTUFTS19DSEFOR0VEKQo+ICsJICAgIHx8IChy
ZWFzb24gJiBMV0lQX05TQ19JUFY0X0dBVEVXQVlfQ0hBTkdFRCkpIHsKPiArCQljaGFyIHN0cl9p
cDRfYWRkclsxN107Cj4gKwkJY2hhciBzdHJfaXA0X21hc2tbMTddOwo+ICsJCWNoYXIgc3RyX2lw
NF9nd1sxN107Cj4gKwo+ICsJCWlwYWRkcl9udG9hX3IoJm5mLT5pcF9hZGRyLCBzdHJfaXA0X2Fk
ZHIsIHNpemVvZihzdHJfaXA0X2FkZHIpKTsKPiArCQlpcGFkZHJfbnRvYV9yKCZuZi0+bmV0bWFz
aywgc3RyX2lwNF9tYXNrLCBzaXplb2Yoc3RyX2lwNF9tYXNrKSk7Cj4gKwkJaXBhZGRyX250b2Ff
cigmbmYtPmd3LCAgICAgIHN0cl9pcDRfZ3csICAgc2l6ZW9mKHN0cl9pcDRfZ3cpKTsKPiArCj4g
KwkJcHJpbnRmKCIlYyVjJXU6IFNldCBJUHY0IGFkZHJlc3MgJXMgbWFzayAlcyBndyAlc1xuIiwK
PiArCQkgICAgICAgbmYtPm5hbWVbMF0sIG5mLT5uYW1lWzFdLCBuZi0+bnVtLAo+ICsJCSAgICAg
ICBzdHJfaXA0X2FkZHIsIHN0cl9pcDRfbWFzaywgc3RyX2lwNF9ndyk7Cj4gKwl9Cj4gKyNlbmRp
ZiAvKiBMV0lQX0lQVjQgKi8KPiArCj4gKyNpZiBMV0lQX0lQVjYKPiArCWlmIChyZWFzb24gJiBM
V0lQX05TQ19JUFY2X1NFVCkKPiArCQlwcmludGYoIiVjJWMldTogU2V0IElQdjYgYWRkcmVzcyAl
Il9fUFJJczgiOiAlcyAoc3RhdGUgJSJfX1BSSXU4IilcbiIsCj4gKwkJICAgICAgIG5mLT5uYW1l
WzBdLCBuZi0+bmFtZVsxXSwgbmYtPm51bSwKPiArCQkgICAgICAgYXJncy0+aXB2Nl9zZXQuYWRk
cl9pbmRleCwKPiArCQkgICAgICAgaXBhZGRyX250b2EoJm5mLT5pcDZfYWRkclthcmdzLT5pcHY2
X3NldC5hZGRyX2luZGV4XSksCj4gKwkJICAgICAgIG5mLT5pcDZfYWRkcl9zdGF0ZVthcmdzLT5p
cHY2X3NldC5hZGRyX2luZGV4XSk7Cj4gKwlpZiAocmVhc29uICYgTFdJUF9OU0NfSVBWNl9BRERS
X1NUQVRFX0NIQU5HRUQpCj4gKwkJcHJpbnRmKCIlYyVjJXU6IFNldCBJUHY2IGFkZHJlc3MgJSJf
X1BSSXM4IjogJXMgKHN0YXRlICUiX19QUkl1OCIpXG4iLAo+ICsJCSAgICAgICBuZi0+bmFtZVsw
XSwgbmYtPm5hbWVbMV0sIG5mLT5udW0sCj4gKwkJICAgICAgIGFyZ3MtPmlwdjZfc2V0LmFkZHJf
aW5kZXgsCj4gKwkJICAgICAgIGlwYWRkcl9udG9hKCZuZi0+aXA2X2FkZHJbCj4gKwkJCQkgICAg
IGFyZ3MtPmlwdjZfYWRkcl9zdGF0ZV9jaGFuZ2VkLmFkZHJfaW5kZXhdKSwKPiArCQkgICAgICAg
bmYtPmlwNl9hZGRyX3N0YXRlWwo+ICsJCQkJICAgICBhcmdzLT5pcHY2X2FkZHJfc3RhdGVfY2hh
bmdlZC5hZGRyX2luZGV4XSk7Cj4gKyNlbmRpZiAvKiBMV0lQX0lQVjYgKi8KPiArfQo+ICsKPiAr
TkVUSUZfREVDTEFSRV9FWFRfQ0FMTEJBQ0sobmV0aWZfc3RhdHVzX3ByaW50KQo+ICsjZW5kaWYg
LyogTFdJUF9ORVRJRl9FWFRfU1RBVFVTX0NBTExCQUNLICYmIENPTkZJR19MV0lQX05FVElGX1NU
QVRVU19QUklOVCAqLwo+ICsKPiAgIHZvaWQgc3lzX2luaXQodm9pZCkKPiAgIHsKPiAgIAkvKgo+
IEBAIC05OSw2ICsxNjAsMTEgQEAgaW50IGxpYmx3aXBfaW5pdCh2b2lkKQo+ICAgCXVrX3NlbWFw
aG9yZV9kb3duKCZfbHdpcF9pbml0X3NlbSk7Cj4gICAjZW5kaWYgLyogQ09ORklHX0xXSVBfTk9U
SFJFQURTICovCj4gICAKPiArI2lmIExXSVBfTkVUSUZfRVhUX1NUQVRVU19DQUxMQkFDSyAmJiBD
T05GSUdfTFdJUF9ORVRJRl9TVEFUVVNfUFJJTlQKPiArCS8qIEFkZCBwcmludCBjYWxsYmFjayBm
b3IgbmV0aWYgc3RhdGUgY2hhbmdlcyAqLwo+ICsJbmV0aWZfYWRkX2V4dF9jYWxsYmFjaygmbmV0
aWZfc3RhdHVzX3ByaW50LCBfbmV0aWZfc3RhdHVzX3ByaW50KTsKPiArI2VuZGlmIC8qIExXSVBf
TkVUSUZfRVhUX1NUQVRVU19DQUxMQkFDSyAmJiBDT05GSUdfTFdJUF9ORVRJRl9TVEFUVVNfUFJJ
TlQgKi8KPiArCj4gICAjaWYgQ09ORklHX0xXSVBfVUtORVRERVYgJiYgQ09ORklHX0xXSVBfQVVU
T0lGQUNFCj4gICAJaXNfZmlyc3RfbmYgPSAxOwo+ICAgCj4gCgpfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1p
bmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qu
b3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Feb 11 18:05:25 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 11 Feb 2019 18:05:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gtFxN-0006VA-44; Mon, 11 Feb 2019 18:05:25 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=tNxd=QS=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1gtFxM-0006V5-3i
 for minios-devel@lists.xen.org; Mon, 11 Feb 2019 18:05:24 +0000
X-Inumbo-ID: 96f5a561-2e27-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 96f5a561-2e27-11e9-bc90-bc764e045a96;
 Mon, 11 Feb 2019 18:05:19 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id E6DDFF2049;
 Mon, 11 Feb 2019 19:05:17 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id GXVtjLzMfID0; Mon, 11 Feb 2019 19:05:17 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 99406F2048
 for <minios-devel@lists.xen.org>; Mon, 11 Feb 2019 19:05:15 +0100 (CET)
Received: from PALLENE.office.hd ([169.254.1.223]) by METHONE.office.hd
 ([192.168.24.54]) with mapi id 14.03.0319.002; Mon, 11 Feb 2019 19:05:15
 +0100
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: Sharan Santhanam <Sharan.Santhanam@neclab.eu>
Thread-Topic: [UNIKRAFT/LIBLWIP PATCH 2/5] Update to lwIP 2.1.2
Thread-Index: AQHUvzkUL9VoYCKznkuDZ6+00bNzTKXavsmAgAAarQA=
Date: Mon, 11 Feb 2019 18:05:14 +0000
Message-ID: <D5E4D167-4693-4A8B-A299-996115521951@neclab.eu>
References: <20190207230035.29861-1-simon.kuenzer@neclab.eu>
 <20190207230035.29861-3-simon.kuenzer@neclab.eu>
 <caf006c4-549f-3373-48c3-cd2a6a833287@neclab.eu>
In-Reply-To: <caf006c4-549f-3373-48c3-cd2a6a833287@neclab.eu>
Accept-Language: en-GB, gl-ES, de-DE, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [10.1.99.239]
Content-ID: <FCEEDDAB34A8B04CA264644E9ADEC69C@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/LIBLWIP PATCH 2/5] Update to lwIP 2.1.2
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Florian Schmidt <Florian.Schmidt@neclab.eu>,
 "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>,
 Yuri Volchkov <yuri.volchkov@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGV5LAoKPiBPbiAxMS4gRmViIDIwMTksIGF0IDE3OjI5LCBTaGFyYW4gU2FudGhhbmFtIDxTaGFy
YW4uU2FudGhhbmFtQG5lY2xhYi5ldT4gd3JvdGU6Cj4gCj4gSGVsbG8sCj4gCj4gVGhpcyBwYXRj
aCBzZWVtcyBmdW5jdGlvbmFsbHkgZmluZS4KPiAKPiBSZXZpZXdlZC1ieTogU2hhcmFuIFNhbnRo
YW5hbSA8c2hhcmFuLnNhbnRoYW5hbUBuZWNsYWIuZXU+Cj4gCj4gVGhlcmUgYXJlIGEgY291cGxl
IG1pbm9yIGNvbW1lbnQgd2UgbmVlZCB0byBhZGRyZXNzLgo+IAo+IFRoYW5rcyAmIFJlZ2FyZHMK
PiBTaGFyYW4KPiAKPiBPbiAyLzgvMTkgMTI6MDAgQU0sIFNpbW9uIEt1ZW56ZXIgd3JvdGU6Cj4+
IFVwZGF0ZSBsd0lQIGZyb20gMi4wLjMgdG8gdGhlIGxhdGVzdCByZWxhc2UgMi4xLjIgZnJvbSBE
ZWMgMjAxOC4gV2UKPj4gdHJhbnNmb3JtIHRoZSByYXRoZXIgYmV0YSBzdGF0ZSBvZiBvdXIgZ2x1
ZSBsaWJyYXJ5IHRvIGEgbW9yZSBzdGFibGUKPj4gaW1wbGVtZW50YXRpb24gYmFzZWQgb24gdGhl
IGxhdGVzdCBzdGFnaW5nIGJyYW5jaCBvZiBVbmlrcmFmdCB0b3dhcmRzCj4+IHJlbGVhc2UgMC4z
Lgo+PiBUaGlzIGNvbW1pdCBwcm92aWRlcyB0aGUgZm9sbG93aW5nIGZlYXR1cmVzIGFzIHNlbGVj
dGFibGUgb3B0aW9ucyBmcm9tCj4+IGx3SVA6Cj4+IC0gVHdvIG9wZXJhdGlvbiBtb2RlczogInRo
cmVhZGVkIiBvciBhcyAocGFydCBvZiBhKSAibWFpbmxvb3AiCj4+IC0gSVB2NCBzdXBwb3J0Cj4+
IC0gRXhwZXJpbWVudGFsIElQdjYgc3VwcG9ydCAoaW5jb21wbGV0ZSkKPj4gLSBQcm90b2NvbHM6
IFVEUCwgVENQLCBJQ01QLCBJR01QLCBTTk1QCj4+IC0gRE5TIHJlc29sdmVyCj4+IC0gREhDUHY0
IGNsaWVudAo+PiAtIFNvY2tldCBBUEkKPj4gU2lnbmVkLW9mZi1ieTogU2ltb24gS3VlbnplciA8
c2ltb24ua3VlbnplckBuZWNsYWIuZXU+Cj4+IFNpZ25lZC1vZmYtYnk6IEZsb3JpYW4gU2NobWlk
dCA8Zmxvcmlhbi5zY2htaWR0QG5lY2xhYi5ldT4KPj4gU2lnbmVkLW9mZi1ieTogWXVyaSBWb2xj
aGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Cj4+IC0tLQo+PiAgQ29uZmlnLnVrICAgICAg
ICAgICAgICAgICAgfCAgOTUgKysrKysrKy0tLS0tLQo+PiAgTWFrZWZpbGUudWsgICAgICAgICAg
ICAgICAgfCAgNzcgKystLS0tLS0tLQo+PiAgYWxsb2MuYyAgICAgICAgICAgICAgICAgICAgfCAg
MzMgKysrKysKPj4gIGluY2x1ZGUvYXJjaC9jYy5oICAgICAgICAgIHwgIDMzICsrLS0tCj4+ICBp
bmNsdWRlL2FyY2gvc3lzX2FyY2guaCAgICB8ICA0MSArKysrKy0KPj4gIGluY2x1ZGUvYXJwYS9p
bmV0LmggICAgICAgIHwgICAxICsKPj4gIGluY2x1ZGUvbHdpcG9wdHMuaCAgICAgICAgIHwgMjgw
ICsrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0KPj4gIGluY2x1ZGUvbmV0L2lm
LmggICAgICAgICAgIHwgICAxICsKPj4gIGluY2x1ZGUvbmV0ZGIuaCAgICAgICAgICAgIHwgICAx
ICsKPj4gIGluY2x1ZGUvc3lzL3NvY2tldC5oICAgICAgIHwgIDY3ICsrKysrKysrLQo+PiAgaW5p
dC5jICAgICAgICAgICAgICAgICAgICAgfCAgODkgKysrKysrKysrKy0tCj4+ICBtYWlsYm94LmMg
ICAgICAgICAgICAgICAgICB8IDE1NSArKysrKysrKysrKysrLS0tLS0tLQo+PiAgbXV0ZXguYyAg
ICAgICAgICAgICAgICAgICAgfCAgNDMgKysrKystCj4+ICBzZW1hcGhvcmUuYyAgICAgICAgICAg
ICAgICB8ICA1OCArKysrKystLQo+PiAgc29ja2V0X2dsdWUuYyA9PiBzb2NrZXRzLmMgfCAyMTMg
KysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQo+PiAgdGhyZWFkcy5jICAgICAgICAgICAgICAg
ICAgfCAgNTIgKysrKystLQo+PiAgdGltZS5jICAgICAgICAgICAgICAgICAgICAgfCAgMzMgKysr
KysKPj4gIDE3IGZpbGVzIGNoYW5nZWQsIDg5MiBpbnNlcnRpb25zKCspLCAzODAgZGVsZXRpb25z
KC0pCj4+ICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9hcnBhL2luZXQuaAo+PiAgY3JlYXRl
IG1vZGUgMTAwNjQ0IGluY2x1ZGUvbmV0L2lmLmgKPj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNs
dWRlL25ldGRiLmgKPj4gIHJlbmFtZSBzb2NrZXRfZ2x1ZS5jID0+IHNvY2tldHMuYyAoNjAlKQo+
PiBkaWZmIC0tZ2l0IGEvQ29uZmlnLnVrIGIvQ29uZmlnLnVrCj4+IGluZGV4IDRmY2M2ZGMuLmRj
ZTU2MDcgMTAwNjQ0Cj4+IC0tLSBhL0NvbmZpZy51awo+PiArKysgYi9Db25maWcudWsKPj4gQEAg
LTMsNDYgKzMsNTQgQEAgbWVudWNvbmZpZyBMSUJMV0lQCj4+ICAJZGVmYXVsdCBuCj4+ICAJc2Vs
ZWN0IExJQk5PTElCQyBpZiAhSEFWRV9MSUJDCj4+ICAJc2VsZWN0IExJQlVLREVCVUcKPj4gKwlz
ZWxlY3QgTElCVUtTV1JBTkQKPiAKPiBXaGVyZSBpcyB0aGlzIEhBVkVfTldfU1RBQ0sgZGVmaW5l
ZD8gVGhpcyBwcm9iYWJseSBpcyBtaXNzaW5nIGluIFVuaWtyYWZ0IG1haW5saW5lCgpPdWgsIHJp
Z2h0LiBJIHdpbGwgc2VuZCBhIHBhdGNoIHRvIFVuaWtyYWZ0LgoKPj4gKwlzZWxlY3QgSEFWRV9O
V19TVEFDSwo+PiArCj4+ICtpZiBMSUJMV0lQCj4+ICtjaG9pY2UKPj4gKwlwcm9tcHQgIk9wZXJh
dGlvbiBtb2RlIgo+PiArCWRlZmF1bHQgTFdJUF9USFJFQURTCj4+ICsKPj4gK2NvbmZpZyBMV0lQ
X05PVEhSRUFEUwo+PiArCWJvb2wgIk1haW5sb29wIChub24tdGhyZWFkZWQpIgo+PiArCWhlbHAK
Pj4gKwkJTm8gdGhyZWFkIGlzIGNyZWF0ZWQgdG8gb3BlcmF0ZSB0aGUgc3RhY2suIFRoZSBzdGFj
ayBoYXMgdG8gYmUKPj4gKwkJY2FsbGVkIGZyb20gdGhlIHNhbWUgY29udGV4dCBhcyBhbGwgc3Rh
Y2sgaW50ZXJhY3Rpb25zLiBUaGlzCj4+ICsJCWluY2x1ZGVzIHBvbGxpbmcgbmV0d29yayBkZXZp
Y2VzLiBUaGUgU29ja2V0IEFQSSBpcyB1bmF2YWlsYWJsZS4KPj4gKwo+PiArY29uZmlnIExXSVBf
VEhSRUFEUwo+PiArCWJvb2wgIlRocmVhZGVkIgo+PiArCXNlbGVjdCBMSUJVS1NDSEVECj4+ICAJ
c2VsZWN0IExJQlVLTVBJCj4+ICAJc2VsZWN0IExJQlVLTVBJX01CT1gKPj4gIAlzZWxlY3QgTElC
VUtMT0NLCj4+ICAJc2VsZWN0IExJQlVLTE9DS19TRU1BUEhPUkUKPj4gIAlzZWxlY3QgTElCVUtM
T0NLX01VVEVYCj4+IC0Jc2VsZWN0IExJQlVLU1dSQU5ECj4+IC0Jc2VsZWN0IExJQlVLU0NIRUQK
Pj4gLQlzZWxlY3QgSEFWRV9OV19TVEFDSwo+PiAtCj4+IC0Jc2VsZWN0IExJQkxXSVBfSEVBUE9O
TFkKPj4gKwloZWxwCj4+ICsJCUNyZWF0ZXMgYSBjb3JlIHRocmVhZCBmb3IgdGhlIHN0YWNrLgo+
PiArZW5kY2hvaWNlCj4+ICAtaWYgTElCTFdJUAo+PiAgY2hvaWNlCj4+ICAJcHJvbXB0ICJNZW1v
cnkgYWxsb2NhdGlvbiBtb2RlIgo+PiAgCWRlZmF1bHQgTFdJUF9IRUFQCj4+ICAgIGNvbmZpZyBM
V0lQX0hFQVAKPj4gIAlib29sICJIZWFwIG9ubHkiCj4+ICsJaGVscAo+PiArCQlVc2UgZGVmYXVs
dCB1a2FsbG9jIGFsbG9jYXRvciBmb3IgYWxsIG1lbW9yeSBhbGxvY2F0aW9uIHJlcXVlc3RzCj4+
ICAgICNjb25maWcgTFdJUF9QT09MUwo+PiAgIwlib29sICJNZW1vcnkgcG9vbHMiCj4+ICBlbmRj
aG9pY2UKPj4gICAgY29uZmlnIExXSVBfSVBWNAo+PiAtCWJvb2wgIklQdjQiCj4+ICsJYm9vbCAi
SVB2NCBzdXBwb3J0Igo+PiAgCWRlZmF1bHQgeQo+PiAgICBjb25maWcgTFdJUF9JUFY2Cj4+IC0J
Ym9vbCAiSVB2NiIKPj4gKwlib29sICJJUHY2IHN1cHBvcnQiCj4+ICAJZGVmYXVsdCBuCj4+ICAt
Cj4+IC1jb25maWcgTFdJUF9SWENIRUNLU1VNCj4+IC0JYm9vbCAiQ2hlY2sgY2hlY2tzdW0gb24g
cmVjZXB0aW9uIgo+PiAtCWRlZmF1bHQgbgo+PiAtCj4+IC1jb25maWcgTFdJUF9UWENIRUNLU1VN
Cj4+IC0JYm9vbCAiQ2FsY3VsYXRlIGNoZWNrc3VtIG9uIHNlbmRpbmciCj4+IC0JZGVmYXVsdCB5
Cj4+IC0KPj4gIGNvbmZpZyBMV0lQX1VEUAo+PiAgCWJvb2wgIlVEUCBzdXBwb3J0Igo+PiAgCWRl
ZmF1bHQgeQo+PiBAQCAtODQsMTYgKzkyLDEyIEBAIGNvbmZpZyBMV0lQX1NOTVAKPj4gIGNvbmZp
ZyBMV0lQX0RIQ1AKPj4gIAlib29sICJESENQIGNsaWVudCIKPj4gIAlkZXBlbmRzIG9uIExXSVBf
SVBWNAo+PiArCXNlbGVjdCBMV0lQX1VEUAo+PiAgCWRlZmF1bHQgbgo+PiAgCWhlbHAKPj4gLQkJ
UXVlcnkgZGV2aWNlIElQIGFkZHJlc3MgZnJvbSBESENQIHNlcnZlciBvbiBuZXR3b3JrCj4+IC0K
Pj4gLWNvbmZpZyBMV0lQX0FVVE9JUAo+PiAtCWJvb2wgIkF1dG9JUCIKPj4gLQlkZXBlbmRzIG9u
IExXSVBfSVBWNAo+PiAtCWRlZmF1bHQgbgo+PiAtCWhlbHAKPj4gLQkJRHluYW1pYyBJUCBhZGRy
ZXNzIGFzc2lnbm1lbnQgYXQgZGV2aWNlIG9uIHN0YXJ0dXAKPj4gKwkJV2hlbiBMV0lQX0FVVE9J
RkFDRSBpcyB1c2VkLCB0aGUgaW5pdGlhbGl6YXRpb24gcm91dGluZSB3aWxsCj4+ICsJCXF1ZXJ5
IHRoZSBJUHY0IGFkZHJlc3NlcyBmb3IgdGhlIGZvdW5kIGRldmljZXMgZnJvbSBhIERIQ1AKPj4g
KwkJc2VydmVyIG9uIG5ldHdvcmsuCj4+ICAgIG1lbnVjb25maWcgTFdJUF9ETlMKPj4gIAlib29s
ICJETlMgUmVzb2x2ZXIiCj4+IEBAIC0xMDksNTggKzExMyw2OSBAQCBjb25maWcgTFdJUF9ETlNf
VEFCTEVfU0laRQo+PiAgCWRlZmF1bHQgMzIKPj4gIGVuZGlmCj4+ICAtY29uZmlnIExXSVBfUFBQ
Cj4+IC0JYm9vbCAiUG9pbnQtdG8tUG9pbnQgc3VwcG9ydCIKPj4gLQlkZWZhdWx0IG4KPj4gLQo+
PiAtY29uZmlnIExXSVBfU0xJUAo+PiAtCWJvb2wgIlNMSVAgbmV0aWYiCj4+IC0JZGVmYXVsdCBu
Cj4+IC0KPj4gLWNvbmZpZyBMV0lQXzZMT1dQQU4KPj4gLQlib29sICI2TG93UEFOIgo+PiAtCWRl
cGVuZHMgb24gTFdJUF9JUFY2Cj4+IC0JZGVmYXVsdCBuCj4+IC0KPj4gIGNvbmZpZyBMV0lQX1NP
Q0tFVAo+PiAgCWJvb2wgIlNvY2tldCBBUEkiCj4+ICsJc2VsZWN0IExJQlZGU0NPUkUKPj4gKwlk
ZXBlbmRzIG9uIExXSVBfVEhSRUFEUyAmJiAoTFdJUF9VRFAgfHwgTFdJUF9UQ1ApCj4+ICAJZGVm
YXVsdCB5Cj4+ICAgIG1lbnVjb25maWcgTFdJUF9ERUJVRwo+PiAgCWJvb2wgIkRlYnVnIG1lc3Nh
Z2VzIgo+PiAgCWRlZmF1bHQgbgo+PiArCWhlbHAKPj4gKwkJRW5hYmxlcyBkZWJ1ZyBtZXNzYWdl
cyBvbiB0aGUgZGVidWcgY29uc29sZSBmb3Igc2VsZWN0ZWQgbHdJUAo+PiArCQltZXNzYWdlIHR5
cGVzLgo+PiAgICBpZiBMV0lQX0RFQlVHCj4+ICBjb25maWcgTFdJUF9NQUlOTE9PUF9ERUJVRwo+
PiAgCWJvb2wgIk1haW5sb29wIgo+PiAgCWRlZmF1bHQgbgo+PiArCWhlbHAKPj4gKwkJRW5hYmxl
cyBUQ1BfSVBfREVCVUcsIFRJTUVSU19ERUJVRwo+PiAgICBjb25maWcgTFdJUF9JRl9ERUJVRwo+
PiAgCWJvb2wgIk5ldGlmIgo+PiAgCWRlZmF1bHQgbgo+PiArCWhlbHAKPj4gKwkJRW5hYmxlcyBF
VEhBUlBfREVCVUcsIE5FVElGX0RFQlVHCj4+ICAgIGNvbmZpZyBMV0lQX0lQX0RFQlVHCj4+ICAJ
Ym9vbCAiSVAiCj4+ICAJZGVmYXVsdCBuCj4+ICsJaGVscAo+PiArCQlFbmFibGVzIElQX0RFQlVH
LCBJUDZfREVCVUcsIElQX1JFQVNTX0RFQlVHCj4+ICAgIGNvbmZpZyBMV0lQX1VEUF9ERUJVRwo+
PiAgCWJvb2wgIlVEUCIKPj4gIAlkZWZhdWx0IG4KPj4gKwloZWxwCj4+ICsJCUVuYWJsZXMgVURQ
X0RFQlVHCj4+ICAgIGNvbmZpZyBMV0lQX1RDUF9ERUJVRwo+PiAgCWJvb2wgIlRDUCIKPj4gIAlk
ZWZhdWx0IG4KPj4gKwloZWxwCj4+ICsJCUVuYWJsZXMgVENQX0RFQlVHLCBUQ1BfRlJfREVCVUcs
IFRDUF9SVE9fREVCVUcsIFRDUF9DV05EX0RFQlVHLAo+PiArCQlUQ1BfV05EX0RFQlVHLCBUQ1Bf
UlNUX0RFQlVHLCBUQ1BfUUxFTl9ERUJVRywgVENQX09VVFBVVF9ERUJVRywKPj4gKwkJVENQX0lO
UFVUX0RFQlVHCj4+ICAgIGNvbmZpZyBMV0lQX1NZU19ERUJVRwo+PiAgCWJvb2wgIlN5c3RlbSIK
Pj4gIAlkZWZhdWx0IG4KPj4gKwloZWxwCj4+ICsJCUVuYWJsZXMgU1lTX0RFQlVHLCBQQlVGX0RF
QlVHLCBNRU1fREVCVUcsIE1FTVBfREVCVUcKPj4gICAgY29uZmlnIExXSVBfQVBJX0RFQlVHCj4+
IC0JYm9vbCAiQVBJIgo+PiArCWJvb2wgIkFQSXMiCj4+ICAJZGVmYXVsdCBuCj4+ICsJaGVscAo+
PiArCQlFbmFibGVzIFNPQ0tFVFNfREVCVUcsIFJBV19ERUJVRywgQVBJX01TR19ERUJVRywgQVBJ
X0xJQl9ERUJVRwo+PiAgICBjb25maWcgTFdJUF9TRVJWSUNFX0RFQlVHCj4+IC0JYm9vbCAiU2Vy
dmljZSIKPj4gKwlib29sICJTZXJ2aWNlcyIKPj4gIAlkZWZhdWx0IG4KPj4gKwloZWxwCj4+ICsJ
CUVuYWJsZXMgRVRIQVJQX0RFQlVHLCBETlNfREVCVUcsIEFVVE9JUF9ERUJVRywgREhDUF9ERUJV
RywKPj4gKwkJSUNNUF9ERUJVRywgU05NUF9ERUJVRywgU05NUF9NU0dfREVCVUcsIFNOTVBfTUlC
X0RFQlVHCj4+ICBlbmRpZgo+PiAgZW5kaWYKPj4gZGlmZiAtLWdpdCBhL01ha2VmaWxlLnVrIGIv
TWFrZWZpbGUudWsKPj4gaW5kZXggZGY1NDc4Ny4uYWUzZmJlYSAxMDA2NDQKPj4gLS0tIGEvTWFr
ZWZpbGUudWsKPj4gKysrIGIvTWFrZWZpbGUudWsKPj4gQEAgLTQsNyArNCw4IEBACj4+ICAjICAg
ICAgICAgICBTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4KPj4gICMKPj4g
ICMKPj4gLSMgIENvcHlyaWdodCAoYykgMjAxNywgTkVDIEV1cm9wZSBMdGQuLCBORUMgQ29ycG9y
YXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4+ICsjICBDb3B5cmlnaHQgKGMpIDIwMTctMjAx
OSwgTkVDIEV1cm9wZSBMdGQuLCBORUMgQ29ycG9yYXRpb24uCj4+ICsjICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KPj4gICMKPj4gICMgIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAo+
PiAgIyAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCj4+IEBAIC00Miw3ICs0Myw3IEBAICQoZXZhbCAkKGNhbGwgYWRkbGli
X3MsbGlibHdpcCwkKENPTkZJR19MSUJMV0lQKSkpCj4+ICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
Iwo+PiAgIyBTb3VyY2VzCj4+ICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwo+PiAtTElCTFdJUF9a
SVBOQU1FPWx3aXAtMi4wLjMKPj4gK0xJQkxXSVBfWklQTkFNRT1sd2lwLTIuMS4yCj4+ICBMSUJM
V0lQX1VSTD1odHRwOi8vZG93bmxvYWQuc2F2YW5uYWgubm9uZ251Lm9yZy9yZWxlYXNlcy9sd2lw
LyQoTElCTFdJUF9aSVBOQU1FKS56aXAKPj4gIExJQkxXSVBfUEFUQ0hESVI9JChMSUJMV0lQX0JB
U0UpL3BhdGNoZXMKPj4gICQoZXZhbCAkKGNhbGwgZmV0Y2gsbGlibHdpcCwkKExJQkxXSVBfVVJM
KSkpCj4+IEBAIC02MCwzMyArNjEsMjIgQEAgQ0lOQ0xVREVTLSQoQ09ORklHX0xJQkxXSVApICAg
Kz0gLUkkKExJQkxXSVBfQkFTRSkvaW5jbHVkZSAtSSQoTElCTFdJUF9FWFRSQUNURUQKPj4gIENY
WElOQ0xVREVTLSQoQ09ORklHX0xJQkxXSVApICs9IC1JJChMSUJMV0lQX0JBU0UpL2luY2x1ZGUg
LUkkKExJQkxXSVBfRVhUUkFDVEVEKS9pbmNsdWRlCj4+ICAgICMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjCj4+IC0jIEdsb2JhbCBmbGFncwo+PiArIyBMaWJyYXJ5IGZsYWdzCj4+ICAjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIwo+PiAtTElCTFdJUF9DRkxBR1MteSArPSAtRENPTkZJR19MV0lQX01JTklN
QUwgLVVMV0lQX1RJTUVWQUxfUFJJVkFURQo+PiAtCj4+IC0jIFN1cHByZXNzIHNvbWUgd2Fybmlu
Z3MgdG8gbWFrZSB0aGUgYnVpbGQgcHJvY2VzcyBsb29rIG5lYXRlcgo+PiAtTElCTFdJUF9TVVBQ
UkVTU19DRkxBR1MgKz0gLVduby11bnVzZWQtcGFyYW1ldGVyIC1Xbm8tdW51c2VkLXZhcmlhYmxl
IFwKPj4gLS1Xbm8tdW51c2VkLWJ1dC1zZXQtdmFyaWFibGUgLVduby11bnVzZWQtbGFiZWwgLVdu
by1jaGFyLXN1YnNjcmlwdHMgIFwKPj4gLS1Xbm8tdW51c2VkLWZ1bmN0aW9uIC1Xbm8tbWlzc2lu
Zy1maWVsZC1pbml0aWFsaXplcnMgICAgICAgICAgICAgICAgIFwKPj4gLS1Xbm8tdW5pbml0aWFs
aXplZCAtV25vLWFycmF5LWJvdW5kcyAtV25vLW1heWJlLXVuaW5pdGlhbGl6ZWQgICAgICAgIFwK
Pj4gLS1Xbm8tcG9pbnRlci1zaWduIC1Xbm8tdW51c2VkLXZhbHVlIC1Xbm8tdW51c2VkLW1hY3Jv
cyAgICAgICAgICAgICAgIFwKPj4gLS1Xbm8tcGFyZW50aGVzZXMgLVduby1pbXBsaWNpdC1mdW5j
dGlvbi1kZWNsYXJhdGlvbiAgICAgICAgICAgICAgICAgIFwKPj4gLS1Xbm8tc2hpZnQtbmVnYXRp
dmUtdmFsdWUgLVduby1taXNzaW5nLWJyYWNlcyAtV25vLWVuZGlmLWxhYmVscyAgICAgIFwKPj4g
LS1Xbm8tdW51c2VkLWJ1dC1zZXQtdmFyaWFibGUgLVduby1pbXBsaWNpdC1mdW5jdGlvbi1kZWNs
YXJhdGlvbiAgICAgIFwKPj4gLS1Xbm8tdW51c2VkLWNvbnN0LXZhcmlhYmxlIC1Xbm8tdHlwZS1s
aW1pdHMgLVduby1zaWduLWNvbXBhcmUKPj4gLUxJQkxXSVBfQ0ZMQUdTLXkgKz0gJChMSUJMV0lQ
X1NVUFBSRVNTX0NGTEFHUykKPj4gK0xJQkxXSVBfQ0ZMQUdTLXkgKz0gLVduby10eXBlLWxpbWl0
cyAtV3VudXNlZC1wYXJhbWV0ZXIKPj4gK0xJQkxXSVBfQ0ZMQUdTLSQoQ09ORklHX0xXSVBfREVC
VUcpICs9IC1EVUtfREVCVUcKPj4gICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKPj4gICMgQ29y
ZQo+PiAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKPj4gIExJQkxXSVBfU1JDUy15ICs9ICQoTElC
TFdJUF9CQVNFKS9hbGxvYy5jfHVuaWtyYWZ0Cj4+IC1MSUJMV0lQX1NSQ1MteSArPSAkKExJQkxX
SVBfQkFTRSkvbXV0ZXguY3x1bmlrcmFmdAo+PiAtTElCTFdJUF9TUkNTLXkgKz0gJChMSUJMV0lQ
X0JBU0UpL3NlbWFwaG9yZS5jfHVuaWtyYWZ0Cj4+IC1MSUJMV0lQX1NSQ1MteSArPSAkKExJQkxX
SVBfQkFTRSkvbWFpbGJveC5jfHVuaWtyYWZ0Cj4+ICtMSUJMV0lQX1NSQ1MtJChDT05GSUdfTFdJ
UF9USFJFQURTKSArPSAkKExJQkxXSVBfQkFTRSkvbXV0ZXguY3x1bmlrcmFmdAo+PiArTElCTFdJ
UF9TUkNTLSQoQ09ORklHX0xXSVBfVEhSRUFEUykgKz0gJChMSUJMV0lQX0JBU0UpL3NlbWFwaG9y
ZS5jfHVuaWtyYWZ0Cj4+ICtMSUJMV0lQX1NSQ1MtJChDT05GSUdfTFdJUF9USFJFQURTKSArPSAk
KExJQkxXSVBfQkFTRSkvbWFpbGJveC5jfHVuaWtyYWZ0Cj4+ICtMSUJMV0lQX1NSQ1MtJChDT05G
SUdfTFdJUF9USFJFQURTKSArPSAkKExJQkxXSVBfQkFTRSkvdGhyZWFkcy5jfHVuaWtyYWZ0Cj4+
ICBMSUJMV0lQX1NSQ1MteSArPSAkKExJQkxXSVBfQkFTRSkvaW5pdC5jfHVuaWtyYWZ0Cj4+IC1M
SUJMV0lQX1NSQ1MteSArPSAkKExJQkxXSVBfQkFTRSkvdGhyZWFkcy5jfHVuaWtyYWZ0Cj4+ICBM
SUJMV0lQX1NSQ1MteSArPSAkKExJQkxXSVBfQkFTRSkvdGltZS5jfHVuaWtyYWZ0Cj4+IC1MSUJM
V0lQX1NSQ1MteSArPSAkKExJQkxXSVBfQkFTRSkvc29ja2V0X2dsdWUuY3x1bmlrcmFmdAo+PiAr
TElCTFdJUF9TUkNTLSQoQ09ORklHX0xXSVBfU09DS0VUKSArPSAkKExJQkxXSVBfQkFTRSkvc29j
a2V0cy5jfHVuaWtyYWZ0Cj4+ICBMSUJMV0lQX1NSQ1MteSArPSAkKExJQkxXSVBfRVhUUkFDVEVE
KS9jb3JlL2luaXQuYwo+PiAgTElCTFdJUF9TUkNTLXkgKz0gJChMSUJMV0lQX0VYVFJBQ1RFRCkv
Y29yZS9kZWYuYwo+PiAgTElCTFdJUF9TUkNTLXkgKz0gJChMSUJMV0lQX0VYVFJBQ1RFRCkvY29y
ZS9pbmV0X2Noa3N1bS5jCj4+IEBAIC0xMTgsMjMgKzEwOCwyMCBAQCBMSUJMV0lQX1NSQ1MteSAr
PSAkKExJQkxXSVBfRVhUUkFDVEVEKS9hcGkvdGNwaXAuYwo+PiAgTElCTFdJUF9TUkNTLSQoQ09O
RklHX0xXSVBfU09DS0VUKSArPSAkKExJQkxXSVBfRVhUUkFDVEVEKS9hcGkvc29ja2V0cy5jCj4+
ICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCj4+IC0jIE5FVElGIEhlbHBlcnMKPj4gKyMgTkVU
SUZzCj4+ICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwo+PiAgTElCTFdJUF9TUkNTLXkgKz0gJChM
SUJMV0lQX0VYVFJBQ1RFRCkvbmV0aWYvZXRoZXJuZXQuYwo+PiAtTElCTFdJUF9TUkNTLSQoQ09O
RklHX0xXSVBfU0xJUCkgKz0gJChMSUJMV0lQX0VYVFJBQ1RFRCkvbmV0aWYvc2xpcGlmLmMKPj4g
LUxJQkxXSVBfU1JDUy15ICs9ICQoTElCTFdJUF9FWFRSQUNURUQpL25ldGlmL2xvd3BhbjYuYwo+
PiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwo+PiAgIyBJUHY0Cj4+ICAjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIwo+PiAtTElCTFdJUF9TUkNTLSQoQ09ORklHX0xXSVBfQVVUT0lQKSAgKz0gJChM
SUJMV0lQX0VYVFJBQ1RFRCkvY29yZS9pcHY0L2F1dG9pcC5jCj4+IC1MSUJMV0lQX1NSQ1MtJChD
T05GSUdfTFdJUF9ESENQKSAgICArPSAkKExJQkxXSVBfRVhUUkFDVEVEKS9jb3JlL2lwdjQvZGhj
cC5jCj4+ICBMSUJMV0lQX1NSQ1MtJChDT05GSUdfTFdJUF9JUFY0KSAgICArPSAkKExJQkxXSVBf
RVhUUkFDVEVEKS9jb3JlL2lwdjQvZXRoYXJwLmMKPj4gLUxJQkxXSVBfU1JDUy0kKENPTkZJR19M
V0lQX0lQVjQpICAgICs9ICQoTElCTFdJUF9FWFRSQUNURUQpL2NvcmUvaXB2NC9pY21wLmMKPj4g
LUxJQkxXSVBfU1JDUy0kKENPTkZJR19MV0lQX0lQVjQpICAgICs9ICQoTElCTFdJUF9FWFRSQUNU
RUQpL2NvcmUvaXB2NC9pZ21wLmMKPj4gIExJQkxXSVBfU1JDUy0kKENPTkZJR19MV0lQX0lQVjQp
ICAgICs9ICQoTElCTFdJUF9FWFRSQUNURUQpL2NvcmUvaXB2NC9pcDRfZnJhZy5jCj4+ICBMSUJM
V0lQX1NSQ1MtJChDT05GSUdfTFdJUF9JUFY0KSAgICArPSAkKExJQkxXSVBfRVhUUkFDVEVEKS9j
b3JlL2lwdjQvaXA0LmMKPj4gIExJQkxXSVBfU1JDUy0kKENPTkZJR19MV0lQX0lQVjQpICAgICs9
ICQoTElCTFdJUF9FWFRSQUNURUQpL2NvcmUvaXB2NC9pcDRfYWRkci5jCj4+ICtMSUJMV0lQX1NS
Q1MtJChDT05GSUdfTFdJUF9JQ01QKSAgICArPSAkKExJQkxXSVBfRVhUUkFDVEVEKS9jb3JlL2lw
djQvaWNtcC5jCj4+ICtMSUJMV0lQX1NSQ1MtJChDT05GSUdfTFdJUF9JR01QKSAgICArPSAkKExJ
QkxXSVBfRVhUUkFDVEVEKS9jb3JlL2lwdjQvaWdtcC5jCj4+ICtMSUJMV0lQX1NSQ1MtJChDT05G
SUdfTFdJUF9ESENQKSAgICArPSAkKExJQkxXSVBfRVhUUkFDVEVEKS9jb3JlL2lwdjQvZGhjcC5j
Cj4+ICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCj4+ICAjIElQdjYKPj4gQEAgLTE0OCwzNyAr
MTM1LDMgQEAgTElCTFdJUF9TUkNTLSQoQ09ORklHX0xXSVBfSVBWNikgKz0gJChMSUJMV0lQX0VY
VFJBQ1RFRCkvY29yZS9pcHY2L2lwNl9hZGRyLmMKPj4gIExJQkxXSVBfU1JDUy0kKENPTkZJR19M
V0lQX0lQVjYpICs9ICQoTElCTFdJUF9FWFRSQUNURUQpL2NvcmUvaXB2Ni9pcDZfZnJhZy5jCj4+
ICBMSUJMV0lQX1NSQ1MtJChDT05GSUdfTFdJUF9JUFY2KSArPSAkKExJQkxXSVBfRVhUUkFDVEVE
KS9jb3JlL2lwdjYvbWxkNi5jCj4+ICBMSUJMV0lQX1NSQ1MtJChDT05GSUdfTFdJUF9JUFY2KSAr
PSAkKExJQkxXSVBfRVhUUkFDVEVEKS9jb3JlL2lwdjYvbmQ2LmMKPj4gLQo+PiAtIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMKPj4gLSMgTHdpcCBjb2RlIC0gUFBQCj4+IC0jIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIwo+PiAtTElCTFdJUF9TUkNTLSQoQ09ORklHX0xXSVBfUFBQKSArPSAkKExJQkxXSVBf
RVhUUkFDVEVEKS9uZXRpZi9wcHAvYXV0aC5jCj4+IC1MSUJMV0lQX1NSQ1MtJChDT05GSUdfTFdJ
UF9QUFApICs9ICQoTElCTFdJUF9FWFRSQUNURUQpL25ldGlmL3BwcC9jY3AuYwo+PiAtTElCTFdJ
UF9TUkNTLSQoQ09ORklHX0xXSVBfUFBQKSArPSAkKExJQkxXSVBfRVhUUkFDVEVEKS9uZXRpZi9w
cHAvY2hhcC1tZDUuYwo+PiAtTElCTFdJUF9TUkNTLSQoQ09ORklHX0xXSVBfUFBQKSArPSAkKExJ
QkxXSVBfRVhUUkFDVEVEKS9uZXRpZi9wcHAvY2hhcF9tcy5jCj4+IC1MSUJMV0lQX1NSQ1MtJChD
T05GSUdfTFdJUF9QUFApICs9ICQoTElCTFdJUF9FWFRSQUNURUQpL25ldGlmL3BwcC9jaGFwLW5l
dy5jCj4+IC1MSUJMV0lQX1NSQ1MtJChDT05GSUdfTFdJUF9QUFApICs9ICQoTElCTFdJUF9FWFRS
QUNURUQpL25ldGlmL3BwcC9kZW1hbmQuYwo+PiAtTElCTFdJUF9TUkNTLSQoQ09ORklHX0xXSVBf
UFBQKSArPSAkKExJQkxXSVBfRVhUUkFDVEVEKS9uZXRpZi9wcHAvZWFwLmMKPj4gLUxJQkxXSVBf
U1JDUy0kKENPTkZJR19MV0lQX1BQUCkgKz0gJChMSUJMV0lQX0VYVFJBQ1RFRCkvbmV0aWYvcHBw
L2VjcC5jCj4+IC1MSUJMV0lQX1NSQ1MtJChDT05GSUdfTFdJUF9QUFApICs9ICQoTElCTFdJUF9F
WFRSQUNURUQpL25ldGlmL3BwcC9ldWk2NC5jCj4+IC1MSUJMV0lQX1NSQ1MtJChDT05GSUdfTFdJ
UF9QUFApICs9ICQoTElCTFdJUF9FWFRSQUNURUQpL25ldGlmL3BwcC9mc20uYwo+PiAtTElCTFdJ
UF9TUkNTLSQoQ09ORklHX0xXSVBfUFBQKSArPSAkKExJQkxXSVBfRVhUUkFDVEVEKS9uZXRpZi9w
cHAvaXBjcC5jCj4+IC1MSUJMV0lQX1NSQ1MtJChDT05GSUdfTFdJUF9QUFApICs9ICQoTElCTFdJ
UF9FWFRSQUNURUQpL25ldGlmL3BwcC9pcHY2Y3AuYwo+PiAtTElCTFdJUF9TUkNTLSQoQ09ORklH
X0xXSVBfUFBQKSArPSAkKExJQkxXSVBfRVhUUkFDVEVEKS9uZXRpZi9wcHAvbGNwLmMKPj4gLUxJ
QkxXSVBfU1JDUy0kKENPTkZJR19MV0lQX1BQUCkgKz0gJChMSUJMV0lQX0VYVFJBQ1RFRCkvbmV0
aWYvcHBwL21hZ2ljLmMKPj4gLUxJQkxXSVBfU1JDUy0kKENPTkZJR19MV0lQX1BQUCkgKz0gJChM
SUJMV0lQX0VYVFJBQ1RFRCkvbmV0aWYvcHBwL21wcGUuYwo+PiAtTElCTFdJUF9TUkNTLSQoQ09O
RklHX0xXSVBfUFBQKSArPSAkKExJQkxXSVBfRVhUUkFDVEVEKS9uZXRpZi9wcHAvbXVsdGlsaW5r
LmMKPj4gLUxJQkxXSVBfU1JDUy0kKENPTkZJR19MV0lQX1BQUCkgKz0gJChMSUJMV0lQX0VYVFJB
Q1RFRCkvbmV0aWYvcHBwL3BwcC5jCj4+IC1MSUJMV0lQX1NSQ1MtJChDT05GSUdfTFdJUF9QUFAp
ICs9ICQoTElCTFdJUF9FWFRSQUNURUQpL25ldGlmL3BwcC9wcHBhcGkuYwo+PiAtTElCTFdJUF9T
UkNTLSQoQ09ORklHX0xXSVBfUFBQKSArPSAkKExJQkxXSVBfRVhUUkFDVEVEKS9uZXRpZi9wcHAv
cHBwY3J5cHQuYwo+PiAtTElCTFdJUF9TUkNTLSQoQ09ORklHX0xXSVBfUFBQKSArPSAkKExJQkxX
SVBfRVhUUkFDVEVEKS9uZXRpZi9wcHAvcHBwb2UuYwo+PiAtTElCTFdJUF9TUkNTLSQoQ09ORklH
X0xXSVBfUFBQKSArPSAkKExJQkxXSVBfRVhUUkFDVEVEKS9uZXRpZi9wcHAvcHBwb2wydHAuYwo+
PiAtTElCTFdJUF9TUkNTLSQoQ09ORklHX0xXSVBfUFBQKSArPSAkKExJQkxXSVBfRVhUUkFDVEVE
KS9uZXRpZi9wcHAvcHBwb3MuYwo+PiAtTElCTFdJUF9TUkNTLSQoQ09ORklHX0xXSVBfUFBQKSAr
PSAkKExJQkxXSVBfRVhUUkFDVEVEKS9uZXRpZi9wcHAvdXBhcC5jCj4+IC1MSUJMV0lQX1NSQ1Mt
JChDT05GSUdfTFdJUF9QUFApICs9ICQoTElCTFdJUF9FWFRSQUNURUQpL25ldGlmL3BwcC91dGls
cy5jCj4+IC1MSUJMV0lQX1NSQ1MtJChDT05GSUdfTFdJUF9QUFApICs9ICQoTElCTFdJUF9FWFRS
QUNURUQpL25ldGlmL3BwcC92ai5jCj4+IC1MSUJMV0lQX1NSQ1MtJChDT05GSUdfTFdJUF9QUFAp
ICs9ICQoTElCTFdJUF9FWFRSQUNURUQpL25ldGlmL3BwcC9wb2xhcnNzbC9hcmM0LmMKPj4gLUxJ
QkxXSVBfU1JDUy0kKENPTkZJR19MV0lQX1BQUCkgKz0gJChMSUJMV0lQX0VYVFJBQ1RFRCkvbmV0
aWYvcHBwL3BvbGFyc3NsL2Rlcy5jCj4+IC1MSUJMV0lQX1NSQ1MtJChDT05GSUdfTFdJUF9QUFAp
ICs9ICQoTElCTFdJUF9FWFRSQUNURUQpL25ldGlmL3BwcC9wb2xhcnNzbC9tZDQuYwo+PiAtTElC
TFdJUF9TUkNTLSQoQ09ORklHX0xXSVBfUFBQKSArPSAkKExJQkxXSVBfRVhUUkFDVEVEKS9uZXRp
Zi9wcHAvcG9sYXJzc2wvbWQ1LmMKPj4gLUxJQkxXSVBfU1JDUy0kKENPTkZJR19MV0lQX1BQUCkg
Kz0gJChMSUJMV0lQX0VYVFJBQ1RFRCkvbmV0aWYvcHBwL3BvbGFyc3NsL3NoYTEuYwo+PiBkaWZm
IC0tZ2l0IGEvYWxsb2MuYyBiL2FsbG9jLmMKPj4gaW5kZXggODZlMGM2Yi4uYTViNDM3NyAxMDA2
NDQKPj4gLS0tIGEvYWxsb2MuYwo+PiArKysgYi9hbGxvYy5jCj4+IEBAIC0xLDMgKzEsMzYgQEAK
Pj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8KPj4gKy8qCj4+
ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTksIE5FQyBMYWJvcmF0b3JpZXMgRXVyb3BlIEdtYkgsIE5F
QyBDb3Jwb3JhdGlvbi4KPj4gKyAqICAgICAgICAgICAgICAgICAgICAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KPj4gKyAqCj4+ICsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKPj4gKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwo+PiArICogYXJl
IG1ldDoKPj4gKyAqCj4+ICsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+PiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgo+PiArICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKPj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKPj4gKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCj4+ICsgKiAz
LiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMg
b2YgaXRzCj4+ICsgKiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQo+PiArICogICAgdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KPj4gKyAqCj4+ICsgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTICJBUyBJUyIKPj4gKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKPj4gKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFCj4+ICsgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFCj4+ICsgKiBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCj4+ICsgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgo+PiArICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCj4+ICsgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgo+
PiArICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKPj4gKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCj4+ICsgKiBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KPj4gKyAqCj4+ICsgKiBUSElTIEhFQURFUiBNQVkgTk9U
IEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgo+PiArICovCj4+ICsKPj4gICNp
bmNsdWRlIDx1ay9hbGxvYy5oPgo+PiAgICB2b2lkICpzeXNfbWFsbG9jKHNpemVfdCBzaXplKQo+
PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hcmNoL2NjLmggYi9pbmNsdWRlL2FyY2gvY2MuaAo+PiBp
bmRleCAwOTljNGFjLi5hMWQwYzM0IDEwMDY0NAo+PiAtLS0gYS9pbmNsdWRlL2FyY2gvY2MuaAo+
PiArKysgYi9pbmNsdWRlL2FyY2gvY2MuaAo+PiBAQCAtNjIsMjggKzYyLDI1IEBACj4+ICAjZGVm
aW5lIFBBQ0tfU1RSVUNUX0JFR0lOCj4+ICAjZGVmaW5lIFBBQ0tfU1RSVUNUX0VORAo+PiAgLS8q
IHBsYXRmb3JtIHNwZWNpZmljIGRpYWdub3N0aWMgb3V0cHV0ICovCj4+ICAjZGVmaW5lIExXSVBf
UExBVEZPUk1fRElBRyhfeCkgXAo+PiAtCWRvIHsJCQkJCSBcCj4+IC0JCWlmIChETFZMX0lORk8g
PD0gRExWTF9NQVgpIHsJIFwKPj4gLQkJCV9sd2lwX3BsYXRmb3JtX2RpYWcgX3g7CSBcCj4+IC0J
CX0JCQkJIFwKPj4gLQl9IHdoaWxlKDApCj4+ICsJKHsgdWtfcHJfZGVidWcgX3g7IH0pCj4+ICAt
c3RhdGljIGlubGluZSB2b2lkIF9sd2lwX3BsYXRmb3JtX2RpYWcoY29uc3QgY2hhciAqZm10LCAu
Li4pCj4+IC17Cj4+IC0JdmFfbGlzdCBhcDsKPj4gKyNpZiBDT05GSUdfTElCVUtERUJVR19FTkFC
TEVfQVNTRVJUCj4+ICsjZGVmaW5lIExXSVBfUExBVEZPUk1fQVNTRVJUKF94KSBcCj4+ICsJZG8g
eyB1a19wcl9jcml0KF94KTsgVUtfQlVHKCk7IH0gd2hpbGUgKDApCj4+ICsjZWxzZQo+PiArI2Rl
ZmluZSBMV0lQX1BMQVRGT1JNX0FTU0VSVChfeCkgXAo+PiArCWRvIHsgfSB3aGlsZSAoMCkKPj4g
KyNlbmRpZiAvKiBDT05GSUdfTElCVUtERUJVR19FTkFCTEVfQVNTRVJUICovCj4+ICAtCXZhX3N0
YXJ0KGFwLCBmbXQpOwo+PiAtCXVrX3ZwcmludGQoRExWTF9JTkZPLCBmbXQsIGFwKTsKPj4gLQl2
YV9lbmQoYXApOwo+PiAtfQo+PiArLyogbGlnaHR3ZWlnaHQgc3luY2hyb25pemF0aW9uIG1lY2hh
bmlzbXMgKi8KPj4gKyNkZWZpbmUgU1lTX0FSQ0hfREVDTF9QUk9URUNUKF94KSBcCj4+ICsJdW5z
aWduZWQgbG9uZyAoX3gpCj4+ICAtI2RlZmluZSBMV0lQX1BMQVRGT1JNX0FTU0VSVChfeCkgVUtf
QVNTRVJUKChfeCkpCj4+ICsjZGVmaW5lIFNZU19BUkNIX1BST1RFQ1QoX3gpIFwKPj4gKwkoeyAo
X3gpID0gdWtwbGF0X2xjcHVfc2F2ZV9pcnFmKCk7IH0pCj4+ICAtLyogbGlnaHR3ZWlnaHQgc3lu
Y2hyb25pemF0aW9uIG1lY2hhbmlzbXMgKi8KPj4gLSNkZWZpbmUgU1lTX0FSQ0hfREVDTF9QUk9U
RUNUKF94KSAgdW5zaWduZWQgbG9uZyAoX3gpCj4+IC0jZGVmaW5lIFNZU19BUkNIX1BST1RFQ1Qo
X3gpICAgICAgIGRvIHsgKF94KSA9IHVrcGxhdF9sY3B1X3NhdmVfaXJxZigpOyB9IHdoaWxlKDAp
Cj4+IC0jZGVmaW5lIFNZU19BUkNIX1VOUFJPVEVDVChfeCkgICAgIHVrcGxhdF9sY3B1X3Jlc3Rv
cmVfaXJxZigoX3gpKQo+PiArI2RlZmluZSBTWVNfQVJDSF9VTlBST1RFQ1QoX3gpIFwKPj4gKwl1
a3BsYXRfbGNwdV9yZXN0b3JlX2lycWYoKF94KSkKPj4gICAgI2VuZGlmIC8qIF9fTFdJUF9BUkNI
X0NDX0hfXyAqLwo+PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hcmNoL3N5c19hcmNoLmggYi9pbmNs
dWRlL2FyY2gvc3lzX2FyY2guaAo+PiBpbmRleCAzYjFmYmVmLi42MjUxMGVlIDEwMDY0NAo+PiAt
LS0gYS9pbmNsdWRlL2FyY2gvc3lzX2FyY2guaAo+PiArKysgYi9pbmNsdWRlL2FyY2gvc3lzX2Fy
Y2guaAo+PiBAQCAtMSwzICsxLDM1IEBACj4+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog
QlNELTMtQ2xhdXNlICovCj4+ICsvKgo+PiArICogQ29weXJpZ2h0IChjKSAyMDE5LCBORUMgTGFi
b3JhdG9yaWVzIEV1cm9wZSBHbWJILCBORUMgQ29ycG9yYXRpb24uCj4+ICsgKiAgICAgICAgICAg
ICAgICAgICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4+ICsgKgo+PiArICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cj4+
ICsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKPj4gKyAqIGFyZSBtZXQ6Cj4+ICsgKgo+PiArICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKPj4g
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KPj4gKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cj4+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCj4+ICsg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgo+PiArICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJp
Z2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cwo+PiArICogICAgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KPj4g
KyAqICAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCj4+ICsgKgo+PiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCj4+ICsgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCj4+ICsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQo+PiArICogQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRQo+
PiArICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgo+PiArICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKPj4gKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
Uwo+PiArICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KPj4gKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCj4+ICsgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRQo+PiArICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCj4+ICsgKgo+
PiArICogVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQgT1IgTU9ESUZJRUQgSU4gQU5Z
IFdBWS4KPj4gKyAqLwo+PiAgLyoKPj4gICAqIGx3aXAvYXJjaC9zeXNfYXJjaC5oCj4+ICAgKgo+
PiBAQCAtMTYsOSArNDgsMTAgQEAKPj4gICNpbmNsdWRlIDx1ay9tdXRleC5oPgo+PiAgI2luY2x1
ZGUgPHVrL3NlbWFwaG9yZS5oPgo+PiAgI2luY2x1ZGUgPHVrL21ib3guaD4KPj4gLSNpZiBDT05G
SUdfTElCVUtTQ0hFRAo+PiArCj4+ICsjaWYgQ09ORklHX0xXSVBfVEhSRUFEUwo+PiAgI2luY2x1
ZGUgPHVrL3RocmVhZC5oPgo+PiAtI2VuZGlmIC8qIENPTkZJR19MSUJVS1NDSEVEICovCj4+ICsj
ZW5kaWYgLyogQ09ORklHX0xXSVBfVEhSRUFEUyAqLwo+PiAgICAjaWYgQ09ORklHX0xXSVBfU09D
S0VUICYmIENPTkZJR19IQVZFX0xJQkMKPj4gICNpbmNsdWRlIDxmY250bC5oPgo+PiBAQCAtNDQs
OSArNzcsOSBAQCB0eXBlZGVmIHN0cnVjdCB7Cj4+ICAJaW50IHZhbGlkOwo+PiAgfSBzeXNfbWJv
eF90Owo+PiAgLSNpZiBDT05GSUdfTElCVUtTQ0hFRAo+PiArI2lmIENPTkZJR19MV0lQX1RIUkVB
RFMKPj4gIHR5cGVkZWYgc3RydWN0IHVrX3RocmVhZCAqc3lzX3RocmVhZF90Owo+PiAtI2VuZGlm
IC8qIENPTkZJR19MSUJVS1NDSEVEICovCj4+ICsjZW5kaWYgLyogQ09ORklHX0xXSVBfVEhSRUFE
UyAqLwo+PiAgICB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgc3lzX3Byb3RfdDsKPj4gIGRpZmYgLS1n
aXQgYS9pbmNsdWRlL2FycGEvaW5ldC5oIGIvaW5jbHVkZS9hcnBhL2luZXQuaAo+PiBuZXcgZmls
ZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAwMDAwMDAwLi5jMmZjNmMzCj4+IC0tLSAvZGV2L251bGwK
Pj4gKysrIGIvaW5jbHVkZS9hcnBhL2luZXQuaAo+PiBAQCAtMCwwICsxIEBACj4+ICsjaW5jbHVk
ZSA8Y29tcGF0L3Bvc2l4L2FycGEvaW5ldC5oPgo+PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9sd2lw
b3B0cy5oIGIvaW5jbHVkZS9sd2lwb3B0cy5oCj4+IGluZGV4IGM2Y2MwYmMuLjc0OWIyYTkgMTAw
NjQ0Cj4+IC0tLSBhL2luY2x1ZGUvbHdpcG9wdHMuaAo+PiArKysgYi9pbmNsdWRlL2x3aXBvcHRz
LmgKPj4gQEAgLTQsMjQgKzQsMjAgQEAKPj4gICAqIENvbmZpZ3VyYXRpb24gZm9yIGx3SVAgcnVu
bmluZyBvbiBtaW5pLW9zCj4+ICAgKgo+PiAgICogVGltIERlZWdhbiA8VGltLkRlZWdhbkBldS5j
aXRyaXgubmV0PiwgSnVseSAyMDA3Cj4+IC0gKiBTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVy
QG5lY2xhYi5ldT4sIE9jdG9iZXIgMjAxMwo+PiArICogU2ltb24gS3VlbnplciA8c2ltb24ua3Vl
bnplckBuZWNsYWIuZXU+LCAyMDEzLTIwMTkKPj4gICAqLwo+PiAgI2lmbmRlZiBfX0xXSVBfTFdJ
UE9QVFNfSF9fCj4+ICAjZGVmaW5lIF9fTFdJUF9MV0lQT1BUU19IX18KPj4gICAgI2luY2x1ZGUg
PGludHR5cGVzLmg+Cj4+ICsjaW5jbHVkZSA8c3lzL3RpbWUuaD4KPj4gICNpbmNsdWRlIDx1ay9j
b25maWcuaD4KPj4gIC0jZGVmaW5lIFNPX1JFVVNFIDEKPj4gLQo+PiAtLyoKPj4gLSAqIEdlbmVy
YWwgb3B0aW9ucy9TeXN0ZW0gc2V0dGluZ3MKPj4gKy8qKgo+PiArICogTWVtb3J5IG1vZGUKPj4g
ICAqLwo+PiAtLyogbGlnaHR3ZWlnaHQgcHJvdGVjdGlvbiAqLwo+PiAtI2RlZmluZSBTWVNfTElH
SFRXRUlHSFRfUFJPVCAxCj4+IC0KPj4gIC8qIHByb3ZpZGUgbWFsbG9jL2ZyZWUgYnkgVW5pa3Jh
ZnQgKi8KPj4gLSNpZiBDT05GSUdfTFdJUF9IRUFQIC8qIGRlZmF1bHQgKi8KPj4gKyNpZiBDT05G
SUdfTFdJUF9IRUFQCj4+ICAgIC8qIE9ubHkgdXNlIG1hbGxvYy9mcmVlIGZvciBsd0lQLgo+PiAg
ICAgKiBFdmVyeSBhbGxvY2F0aW9uIGlzIGRvbmUgYnkgdGhlIGhlYXAuCj4+ICAgICAqIE5vdGU6
IFRoaXMgc2V0dGluZyByZXN1bHRzIGluIHRoZSBzbWFsbGVzdCBiaW5hcnkKPj4gQEAgLTI5LDEw
ICsyNSw5IEBACj4+ICAgICAqICAgICAgIG5ldHdvcmsgcHJvY2Vzc2luZy4KPj4gICAgICovCj4+
ICAgICNkZWZpbmUgTUVNX0xJQkNfTUFMTE9DIDEgLyogZW5hYmxlIGhlYXAgKi8KPj4gLSAgI2Rl
ZmluZSBNRU1QX01FTV9NQUxMT0MgMSAvKiBwb29sIGFsbG9jYXRpb25zIHZpYSBtYWxsb2MgKHRo
dXMgbm90IGZyb20gcG9vbCBpbiBkYXRhIHNlZ21lbnQpICovCj4+ICsgICNkZWZpbmUgTUVNUF9N
RU1fTUFMTE9DIDEgLyogcG9vbCBhbGxvY2F0aW9ucyB2aWEgbWFsbG9jICovCj4+ICAjZWxpZiBD
T05GSUdfTFdJUF9QT09MUwo+PiAtICAvKiBUaGlzIGlzIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRp
b24gKG1peGVkKS4KPj4gLSAgICogUG9vbHMgYXJlIHVzZWQgZm9yIHBvb2wgYWxsb2NhdGlvbnMg
YW5kIHRoZSBoZWFwCj4+ICsgIC8qIFBvb2xzIGFyZSB1c2VkIGZvciBwb29sIGFsbG9jYXRpb25z
IGFuZCB0aGUgaGVhcAo+PiAgICAgKiBpcyB1c2VkIGZvciBhbGwgdGhlIHJlc3Qgb2YgYWxsb2Nh
dGlvbnMuCj4+ICAgICAqIE5vdGU6IFBlciBkZXNpZ24sIGx3SVAgYWxsb2NhdGVzIG91dGdvaW5n
IHBhY2tldCBidWZmZXJzCj4+ICAgICAqICAgICAgIGZyb20gaGVhcCAodmlhIFBCVUZfUkFNKSBh
bmQgaW5jb21pbmcgZnJvbSBwb29scyAodmlhIFBCVUZfUE9PTCkKPj4gQEAgLTQ2LDE1ICs0MSwx
MCBAQAo+PiAgICNlcnJvciBDb25maWd1cmF0aW9uIGVycm9yIQo+PiAgI2VuZGlmIC8qIENPTkZJ
R19MV0lQX0hFQVBfT05MWSAvIENPTkZJR19MV0lQX1BPT0xTX09OTFkgKi8KPj4gIC0jZGVmaW5l
IE1FTVBfU0VQQVJBVEVfUE9PTFMgMSAvKiBmb3IgZWFjaCBwb29sIHVzZSBhIHNlcGFyYXRlIGFy
cmF5IGluIGRhdGEgc2VnbWVudCAqLwo+PiAtCj4+IC0vLyNpZmRlZiBDT05GSUdfTFdJUF9QT09M
U19PTl9IRUFQIC8qIG5vdCBzdXBwb3J0ZWQgeWV0ICovCj4+IC0vLyNkZWZpbmUgTUVNUF9QT09M
U19PTl9IRUFQIDEgLyogYWxsb2NhdGUgcG9vbHMgb24gc3lzdGVtJ3MgaGVhcCAqLwo+PiAtLy8j
ZW5kaWYKPj4gLQo+PiAtI2RlZmluZSBNRU1fQUxJR05NRU5UIDQKPj4gLQo+PiAgI2lmIE1FTV9M
SUJDX01BTExPQwo+PiArLyoKPj4gKyAqIGFsbG9jLmMgYmluZGluZyB0byB0aGUgc3RhY2sKPj4g
KyAqLwo+PiAgI2luY2x1ZGUgPHN0ZGRlZi5oPiAvKiBzaXplX3QgKi8KPj4gIHZvaWQgKnN5c19t
YWxsb2Moc2l6ZV90IHNpemUpOwo+PiAgdm9pZCAqc3lzX2NhbGxvYyhpbnQgbnVtLCBzaXplX3Qg
c2l6ZSk7Cj4+IEBAIC02Niw1NiArNTYsOTIgQEAgdm9pZCBzeXNfZnJlZSh2b2lkICpwdHIpOwo+
PiAgI2VuZGlmIC8qIE1FTV9MSUJDX01BTExPQyAqLwo+PiAgICAjaWYgTUVNX1VTRV9QT09MUwo+
PiAtLyogcmVxdWlyZXMgbHdpcHBvb2xzLmggKi8KPj4gLSNkZWZpbmUgTUVNUF9VU0VfQ1VTVE9N
X1BPT0xTIDAKPj4gLSNlbmRpZiAvKiBNRU1fVVNFX1BPT0xTICovCj4+IC0KPj4gIC8qCj4+IC0g
KiBNb3N0IGZlYXR1cmVzIGFyZSBzZWxlY3RlZCBieSB1ay9jb25maWcuaAo+PiArICogVXNlIGx3
SVAncyBwb29scwo+PiAgICovCj4+IC0jZGVmaW5lIExXSVBfTkVUSUZfUkVNT1ZFX0NBTExCQUNL
IDEKPj4gLSNkZWZpbmUgTFdJUF9USU1FVkFMX1BSSVZBVEUgMAo+PiAtCj4+IC0vKiBkaXNhYmxl
IEJTRC1zdHlsZSBzb2NrZXQgLSBsYXllciBpcyBwcm92aWRlZCBieSBsaWJjICovCj4+IC0jZGVm
aW5lIExXSVBfQ09NUEFUX1NPQ0tFVFMgMAo+PiArI2RlZmluZSBNRU1QX1VTRV9DVVNUT01fUE9P
TFMgMAo+PiArLyogZm9yIGVhY2ggcG9vbCB1c2UgYSBzZXBhcmF0ZSBhcnJheSBpbiBkYXRhIHNl
Z21lbnQgKi8KPj4gKyNkZWZpbmUgTUVNUF9TRVBBUkFURV9QT09MUyAxCj4+ICsjZW5kaWYgLyog
TUVNX1VTRV9QT09MUyAqLwo+PiAgLS8qCj4+IC0gKiBUaHJlYWQgb3B0aW9ucwo+PiArLyoqCj4+
ICsgKiBPcGVyYXRpb24gbW9kZSAodGhyZWFkZWQsIG1haW5sb29wKQo+PiAgICovCj4+IC0jaWZu
ZGVmIENPTkZJR19MV0lQX05PVEhSRUFEUwo+PiArI2lmIENPTkZJR19MV0lQX05PVEhSRUFEUwo+
PiArI2RlZmluZSBOT19TWVMgMQo+PiArI2Vsc2UgIC8qIENPTkZJR19MV0lQX05PVEhSRUFEUyAq
Lwo+PiArI2RlZmluZSBOT19TWVMgMAo+PiArLyogbGlnaHR3ZWlnaHQgcHJvdGVjdGlvbiAqLwo+
PiArI2RlZmluZSBTWVNfTElHSFRXRUlHSFRfUFJPVCAxCj4+ICAjZGVmaW5lIFRDUElQX1RIUkVB
RF9OQU1FICJsd2lwIgo+PiAgI2RlZmluZSBUQ1BJUF9NQk9YX1NJWkUgMjU2Cj4+IC0jZGVmaW5l
IE1FTVBfTlVNX1RDUElQX01TR19JTlBLVCAyNTYKPj4gICNlbmRpZiAvKiBDT05GSUdfTFdJUF9O
T1RIUkVBRFMgKi8KPj4gIC0vKgo+PiArLyoqCj4+ICsgKiBQYnVmIG9wdGlvbnMKPj4gKyAqLwo+
PiArI2RlZmluZSBMV0lQX1NVUFBPUlRfQ1VTVE9NX1BCVUYgMQo+PiArCj4+ICsvKioKPj4gKyAq
IE5ldGlmIG9wdGlvbnMKPj4gKyAqLwo+PiArI2RlZmluZSBMV0lQX05FVElGX1JFTU9WRV9DQUxM
QkFDSyAxCj4+ICsjZGVmaW5lIExXSVBfVElNRVZBTF9QUklWQVRFIDAKPj4gKyNkZWZpbmUgTFdJ
UF9ORVRJRl9TVEFUVVNfQ0FMTEJBQ0sgMQo+PiArCj4+ICsvKioKPj4gICAqIEFSUCBvcHRpb25z
Cj4+ICAgKi8KPj4gICNkZWZpbmUgTUVNUF9OVU1fQVJQX1FVRVVFIDI1Ngo+PiAgI2RlZmluZSBF
VEhBUlBfU1VQUE9SVF9TVEFUSUNfRU5UUklFUyAxCj4+ICAtLyoKPj4gKy8qKgo+PiArICogSVAg
b3B0aW9ucwo+PiArICovCj4+ICsjaWYgQ09ORklHX0xXSVBfSVBWNAo+PiArI2RlZmluZSBMV0lQ
X0lQVjQgMQo+PiArI2Vsc2UKPj4gKyNkZWZpbmUgTFdJUF9JUFY0IDAKPj4gKyNlbmRpZgo+PiAr
Cj4+ICsjaWYgQ09ORklHX0xXSVBfSVBWNgo+PiArI2RlZmluZSBMV0lQX0lQVjYgMQo+PiArI2Rl
ZmluZSBJUFY2X0ZSQUdfQ09QWUhFQURFUiAxCj4+ICsKPj4gKyNlbHNlCj4+ICsjZGVmaW5lIExX
SVBfSVBWNiAwCj4+ICsjZW5kaWYKPj4gKwo+PiArI2lmICgoIUxXSVBfSVBWNCkgJiYgKCFMV0lQ
X0lQVjYpKQo+PiArI2Vycm9yIE5vIElQIHByb3RvY29sIHdhcyBzZWxlY3RlZCEgUGxlYXNlIGNo
b29zZSBhdCBsZWFzdCBvbmUgb2YgTFdJUF9JUFY0IGFuZCBMV0lQX0lQVjYKPj4gKyNlbmRpZgo+
PiArCj4+ICsvKioKPj4gICAqIFVEUCBvcHRpb25zCj4+ICAgKi8KPj4gLS8vI2RlZmluZSBNRU1Q
X05VTV9VRFBfUENCIDE2Cj4+ICsjaWYgQ09ORklHX0xXSVBfVURQCj4+ICsjZGVmaW5lIExXSVBf
VURQIDEKPj4gKyNlbHNlCj4+ICsjZGVmaW5lIExXSVBfVURQIDAKPj4gKyNlbmRpZgo+PiAgLS8q
Cj4+ICsvKioKPj4gICAqIFRDUCBvcHRpb25zCj4+ICAgKi8KPj4gLSNkZWZpbmUgVENQX01TUyBD
T05GSUdfTFdJUF9UQ1BfTVNTCj4+IC0KPj4gKyNpZiBDT05GSUdfTFdJUF9UQ1AKPj4gKyNkZWZp
bmUgTFdJUF9UQ1AgMQo+PiArI2Vsc2UKPj4gKyNkZWZpbmUgTFdJUF9UQ1AgMAo+PiArI2VuZGlm
Cj4+ICArI2lmIExXSVBfVENQCj4+ICsjZGVmaW5lIFRDUF9NU1MgQ09ORklHX0xXSVBfVENQX01T
Uwo+PiAgI2RlZmluZSBUQ1BfQ0FMQ1VMQVRFX0VGRl9TRU5EX01TUyAxCj4+ICAjZGVmaW5lIElQ
X0ZSQUcgMAo+PiAgLQo+PiAtCj4+ICAjaWYgQ09ORklHX0xXSVBfV05EX1NDQUxFCj4+ICAvKgo+
PiAgICogTWF4aW11bSB3aW5kb3cgYW5kIHNjYWxpbmcgZmFjdG9yCj4+IC0gKiBPcHRpbWFsIHNl
dHRpbmdzIGZvciBSWCBwZXJmb3JtYW5jZSBhcmU6Cj4+IC0gKiAJVENQX1dORAkJMjYyMTQzCj4+
IC0gKiAJVENQX1JDVl9TQ0FMRQk1Cj4+ICAgKi8KPj4gICNkZWZpbmUgTFdJUF9XTkRfU0NBTEUg
IDEKPj4gICNpZiBkZWZpbmVkIENPTkZJR19MV0lQX1dORF9TQ0FMRV9GQUNUT1IgJiYgQ09ORklH
X0xXSVBfV05EX1NDQUxFX0ZBQ1RPUiA+PSAxCj4+IEBAIC0xMjgsMTEgKzE1NCwxMiBAQCB2b2lk
IHN5c19mcmVlKHZvaWQgKnB0cik7Cj4+ICAgICNlbHNlIC8qIENPTkZJR19MV0lQX1dORF9TQ0FM
RSAqLwo+PiAgLyoKPj4gLSAqIE9wdGlvbnMgd2hlbiBubyB3aW5kb3cgc2NhbGluZyAgaXMgZW5h
YmxlZAo+PiArICogT3B0aW9ucyB3aGVuIG5vIHdpbmRvdyBzY2FsaW5nIGlzIGVuYWJsZWQKPj4g
ICAqLwo+PiArI2RlZmluZSBMV0lQX1dORF9TQ0FMRSAwCj4+ICAjZGVmaW5lIFRDUF9XTkQgMzI3
NjYgLyogSWRlYWxseSwgVENQX1dORCBzaG91bGQgYmUgbGluayBiYW5kd2lkdGggbXVsdGlwbGll
ZCBieSBydHQgKi8KPj4gICNkZWZpbmUgVENQX1NORF9CVUYgKFRDUF9XTkQgKyAoMiAqIFRDUF9N
U1MpKQo+PiAtI2VuZGlmIC8qIExXSVBfV05EX1NDQUxFICovCj4+ICsjZW5kaWYgLyogQ09ORklH
X0xXSVBfV05EX1NDQUxFICovCj4+ICAgICNkZWZpbmUgVENQX1NORExPV0FUICg0ICogVENQX01T
UykKPj4gICNkZWZpbmUgVENQX1NORF9RVUVVRUxFTiAoMiAqIChUQ1BfU05EX0JVRikgLyAoVENQ
X01TUykpCj4+IEBAIC0xNDIsNzAgKzE2OSwxNTIgQEAgdm9pZCBzeXNfZnJlZSh2b2lkICpwdHIp
Owo+PiAgICAjZGVmaW5lIE1FTVBfTlVNX1RDUF9QQ0IgQ09ORklHX0xXSVBfTlVNX1RDUENPTiAv
KiBtYXggbnVtIG9mIHNpbS4gVENQIGNvbm5lY3Rpb25zICovCj4+ICAjZGVmaW5lIE1FTVBfTlVN
X1RDUF9QQ0JfTElTVEVOIDMyIC8qIG1heCBudW0gb2Ygc2ltLiBUQ1AgbGlzdGVuZXJzICovCj4+
ICsjZW5kaWYgLyogTFdJUF9UQ1AgKi8KPj4gKwo+PiArLyoqCj4+ICsgKiBTb2NrZXQgb3B0aW9u
cwo+PiArICovCj4+ICsjaWYgQ09ORklHX0xXSVBfU09DS0VUCj4+ICsjZGVmaW5lIExXSVBfU09D
S0VUIDEKPj4gKyNlbHNlCj4+ICsjZGVmaW5lIExXSVBfU09DS0VUIDAKPj4gKyNlbmRpZgo+PiAr
Cj4+ICsjaWYgTFdJUF9TT0NLRVQKPj4gKy8qIFN0b3AgbHdpcCB0byBwcm92aWRlIGZkX3NldCAq
Lwo+PiArI2luY2x1ZGUgPHN5cy9zZWxlY3QuaD4KPj4gKwo+PiArI2lmbmRlZiBGRF9TRVQKPj4g
KyNkZWZpbmUgRkRfU0VUCj4+ICsjZW5kaWYKPj4gICAgLyoKPj4gKyAqIGRpc2FibGUgQlNELXN0
eWxlIHNvY2tldCBpbnRlcmZhY2UKPj4gKyAqIFdlIHdpbGwgcHJvdmlkZSB0aGUgbGF5ZXIgd2l0
aCBzb2NrZXQuY3x1bmlrcmFmdAo+PiArICovCj4+ICsjZGVmaW5lIExXSVBfQ09NUEFUX1NPQ0tF
VFMgMAo+PiArCj4+ICsvKiBlbmFibGUgU09fUkVVU0VBRERSIG9wdGlvbiAqLwo+PiArI2RlZmlu
ZSBTT19SRVVTRSAxCj4+ICsjZW5kaWYgLyogTFdJUF9TT0NLRVQgKi8KPj4gKwo+PiArLyoqCj4+
ICAgKiBETlMgb3B0aW9ucwo+PiAgICovCj4+ICsjaWYgQ09ORklHX0xXSVBfRE5TCj4+ICsjZGVm
aW5lIExXSVBfRE5TIDEKPj4gKyNlbHNlCj4+ICsjZGVmaW5lIExXSVBfRE5TIDAKPj4gKyNlbmRp
Zgo+PiArCj4+ICsjaWYgTFdJUF9ETlMKPj4gICNkZWZpbmUgRE5TX01BWF9TRVJWRVJTIENPTkZJ
R19MV0lQX0ROU19NQVhfU0VSVkVSUwo+PiAgI2RlZmluZSBETlNfVEFCTEVfU0laRSBDT05GSUdf
TFdJUF9ETlNfVEFCTEVfU0laRQo+PiAgI2RlZmluZSBETlNfTE9DQUxfSE9TVF9MSVNUIDEKPj4g
ICNkZWZpbmUgRE5TX0xPQ0FMX0hPU1RMSVNUX0lTX0RZTkFNSUMgMQo+PiArI2VuZGlmIC8qIExX
SVBfRE5TICovCj4+ICArLyoqCj4+ICsgKiBNZW1vcnkgcG9vbCBzaXplcwo+PiArICovCj4+ICsj
aWYgTUVNX1VTRV9QT09MUwo+PiAgLyoKPj4gLSAqIFBvb2wgb3B0aW9ucwo+PiArICogV2UgZGlt
ZW5zaW9uIHBvb2wgc2l6ZXMgb24gcHJldmlvdXMgc3RhY2sgY29uZmlndXJhdGlvbnMgc28gd2Ug
aGF2ZSB0byBkbwo+PiArICogdGhpcyBhdCB0aGUgdmVyeSBsYXN0IHBvaW50IGluIHRoaXMgY29u
ZmlndXJhdGlvbiBmaWxlLgo+PiAgICovCj4+IC0vKiBQQlVGIHBvb2xzICovCj4+ICAjaWZuZGVm
IFBCVUZfUE9PTF9TSVpFCj4+ICAjZGVmaW5lIFBCVUZfUE9PTF9TSVpFICgoVENQX1dORCArIFRD
UF9NU1MgLSAxKSAvIFRDUF9NU1MpCj4+ICAjZW5kaWYKPj4gLSNpZm5kZWYgQ09ORklHX05FVEZS
T05UX1BFUlNJU1RFTlRfR1JBTlRTCj4+IC0jZGVmaW5lIExXSVBfU1VQUE9SVF9DVVNUT01fUEJV
RiAxCj4+IC0jZW5kaWYKPj4gICNpZm5kZWYgTUVNUF9OVU1fUEJVRgo+PiAgI2RlZmluZSBNRU1Q
X05VTV9QQlVGICgoTUVNUF9OVU1fVENQX1BDQiAqIChUQ1BfU05EX1FVRVVFTEVOKSkgLyAyKQo+
PiAgI2VuZGlmCj4+ICsjZGVmaW5lIE1FTVBfTlVNX1RDUElQX01TR19JTlBLVCBUQ1BJUF9NQk9Y
X1NJWkUKPj4gKyNlbmRpZiAvKiBNRU1fVVNFX1BPT0xTICovCj4+ICAtLyoKPj4gKy8qKgo+PiAr
ICogQWRkaXRpb25hbCBmZWF0dXJlcwo+PiArICovCj4+ICsjaWYgQ09ORklHX0xXSVBfSUNNUAo+
PiArI2RlZmluZSBMV0lQX0lDTVAgMQo+PiArI2Vsc2UKPj4gKyNkZWZpbmUgTFdJUF9JQ01QIDAK
Pj4gKyNlbmRpZgo+PiArCj4+ICsjaWYgQ09ORklHX0xXSVBfSUdNUAo+PiArI2RlZmluZSBMV0lQ
X0lHTVAgMQo+PiArI2Vsc2UKPj4gKyNkZWZpbmUgTFdJUF9JR01QIDAKPj4gKyNlbmRpZgo+PiAr
Cj4+ICsjaWYgQ09ORklHX0xXSVBfU05NUAo+PiArI2RlZmluZSBMV0lQX1NOTVAgMQo+PiArI2Vs
c2UKPj4gKyNkZWZpbmUgTFdJUF9TTk1QIDAKPj4gKyNlbmRpZgo+PiArCj4+ICsjaWYgQ09ORklH
X0xXSVBfREhDUAo+PiArI2RlZmluZSBMV0lQX0RIQ1AgMQo+PiArI2Vsc2UKPj4gKyNkZWZpbmUg
TFdJUF9ESENQIDAKPj4gKyNlbmRpZgo+PiArCj4+ICsjaWYgQ09ORklHX0xXSVBfTk9USFJFQURT
Cj4+ICsjZGVmaW5lIExXSVBfTkVUQ09OTiAwCj4+ICsjZWxzZQo+PiArI2RlZmluZSBMV0lQX05F
VENPTk4gMQo+PiArI2VuZGlmCj4+ICsKPj4gKy8qKgo+PiAgICogQ2hlY2tzdW0gb3B0aW9ucwo+
PiAgICovCj4+IC0jZGVmaW5lIENIRUNLU1VNX0dFTl9JUCBDT05GSUdfTFdJUF9UWENIRUNLU1VN
Cj4+IC0jZGVmaW5lIENIRUNLU1VNX0dFTl9JUDYgQ09ORklHX0xXSVBfVFhDSEVDS1NVTQo+PiAt
I2RlZmluZSBDSEVDS1NVTV9HRU5fSUNNUCBDT05GSUdfTFdJUF9UWENIRUNLU1VNCj4+IC0jZGVm
aW5lIENIRUNLU1VNX0dFTl9JQ01QNiBDT05GSUdfTFdJUF9UWENIRUNLU1VNCj4+IC0jZGVmaW5l
IENIRUNLU1VNX0dFTl9VRFAgQ09ORklHX0xXSVBfVFhDSEVDS1NVTQo+PiAtI2RlZmluZSBDSEVD
S1NVTV9HRU5fVENQIENPTkZJR19MV0lQX1RYQ0hFQ0tTVU0KPj4gLSNkZWZpbmUgTFdJUF9DSEVD
S1NVTV9PTl9DT1BZIDEKPj4gLQo+PiAtLyogQ2hlY2tzdW0gY2hlY2tpbmcgaXMgb2ZmbG9hZGVk
IHRvIHRoZSBob3N0IChsd2lwLW5ldCBpcyBhIHZpcnR1YWwgaW50ZXJmYWNlKQo+PiAtICogVE9E
TzogYmV0dGVyIHNvbHV0aW9uIGlzIHdoZW4gbmV0ZnJvbnQgZm9yd2FyZHMgY2hlY2tzdW0gZmxh
Z3MgdG8gbHdJUCAqLwo+PiAtI2RlZmluZSBDSEVDS1NVTV9DSEVDS19JUCBDT05GSUdfTFdJUF9S
WENIRUNLU1VNCj4+IC0jZGVmaW5lIENIRUNLU1VNX0NIRUNLX1VEUCBDT05GSUdfTFdJUF9SWENI
RUNLU1VNCj4+IC0jZGVmaW5lIENIRUNLU1VNX0NIRUNLX1RDUCBDT05GSUdfTFdJUF9SWENIRUNL
U1VNCj4+IC0jZGVmaW5lIENIRUNLU1VNX0NIRUNLX0lDTVAgQ09ORklHX0xXSVBfUlhDSEVDS1NV
TQo+PiAtI2RlZmluZSBDSEVDS1NVTV9DSEVDS19JQ01QNiBDT05GSUdfTFdJUF9SWENIRUNLU1VN
Cj4+IC0jZGVmaW5lIENIRUNLU1VNX0NIRUNLX1RDUCBDT05GSUdfTFdJUF9SWENIRUNLU1VNCj4+
IC0KPj4gLSNpZmRlZiBDT05GSUdfTFdJUF9NQUlOTE9PUF9ERUJVRwo+PiAtI2RlZmluZSBJUF9E
RUJVRyAgICAgICAgIExXSVBfREJHX09OCj4+ICsvKgo+PiArICogV2UgZW5hYmxlIHRoZSBvcHRp
b24gdGhhdCBlYWNoIG5ldGlmIGNhbiBlbmFibGUgYW5kIGRpc2FibGUKPj4gKyAqIGluZGl2aWR1
YWxseSB3aGljaCBjaGVja3N1bXMgc2hvdWxkIGJlIGNoZWNrZWQvY2FsY3VsYXRlZCBieSB0aGUg
c3RhY2sKPj4gKyAqLwo+PiArI2RlZmluZSBMV0lQX0NIRUNLU1VNX0NUUkxfUEVSX05FVElGIDEK
Pj4gKwo+PiArI2RlZmluZSBDSEVDS1NVTV9HRU5fSVAgICAgICAxCj4+ICsjZGVmaW5lIENIRUNL
U1VNX0dFTl9JUDYgICAgIDEKPj4gKyNkZWZpbmUgQ0hFQ0tTVU1fR0VOX0lDTVAgICAgMQo+PiAr
I2RlZmluZSBDSEVDS1NVTV9HRU5fSUNNUDYgICAxCj4+ICsjZGVmaW5lIENIRUNLU1VNX0dFTl9V
RFAgICAgIDEKPj4gKyNkZWZpbmUgQ0hFQ0tTVU1fR0VOX1RDUCAgICAgMQo+PiArI2RlZmluZSBD
SEVDS1NVTV9DSEVDS19JUCAgICAxCj4+ICsjZGVmaW5lIENIRUNLU1VNX0NIRUNLX1VEUCAgIDEK
Pj4gKyNkZWZpbmUgQ0hFQ0tTVU1fQ0hFQ0tfVENQICAgMQo+PiArI2RlZmluZSBDSEVDS1NVTV9D
SEVDS19JQ01QICAxCj4+ICsjZGVmaW5lIENIRUNLU1VNX0NIRUNLX0lDTVA2IDEKPj4gKyNkZWZp
bmUgQ0hFQ0tTVU1fQ0hFQ0tfVENQICAgMQo+PiArCj4+ICsvKioKPj4gKyAqIERlYnVnZ2luZyBv
cHRpb25zCj4+ICsgKi8KPj4gKyNpZiBDT05GSUdfTFdJUF9ERUJVRwo+PiArI2RlZmluZSBMV0lQ
X0RFQlVHCj4+ICsjZGVmaW5lIExXSVBfREJHX01JTl9MRVZFTCAgIExXSVBfREJHX0xFVkVMX0FM
TAo+PiArI2RlZmluZSBMV0lQX0RCR19UWVBFU19PTiAgICBMV0lQX0RCR19PTgo+PiArCj4+ICsj
aWYgQ09ORklHX0xXSVBfTUFJTkxPT1BfREVCVUcKPj4gICNkZWZpbmUgVENQSVBfREVCVUcgICAg
ICBMV0lQX0RCR19PTgo+PiAgI2RlZmluZSBUSU1FUlNfREVCVUcgICAgIExXSVBfREJHX09OCj4+
ICAjZW5kaWYgLyogQ09ORklHX0xXSVBfTUFJTkxPT1BfREVCVUcgKi8KPj4gIC0jaWZkZWYgQ09O
RklHX0xXSVBfSUZfREVCVUcKPj4gKyNpZiBDT05GSUdfTFdJUF9JRl9ERUJVRwo+PiArI2RlZmlu
ZSBFVEhBUlBfREVCVUcgICAgIExXSVBfREJHX09OCj4+ICAjZGVmaW5lIE5FVElGX0RFQlVHICAg
ICAgTFdJUF9EQkdfT04KPj4gICNlbmRpZiAvKiBDT05GSUdfTFdJUF9JRl9ERUJVRyAqLwo+PiAg
LSNpZmRlZiBDT05GSUdfTFdJUF9JUF9ERUJVRwo+PiArI2lmIENPTkZJR19MV0lQX0lQX0RFQlVH
Cj4+ICAjZGVmaW5lIElQX0RFQlVHICAgICAgICAgTFdJUF9EQkdfT04KPj4gICNkZWZpbmUgSVA2
X0RFQlVHICAgICAgICBMV0lQX0RCR19PTgo+PiAgI2RlZmluZSBJUF9SRUFTU19ERUJVRyAgIExX
SVBfREJHX09OCj4+ICAjZW5kaWYgLyogQ09ORklHX0xXSVBfSVBfREVCVUcgKi8KPj4gIC0jaWZk
ZWYgQ09ORklHX0xXSVBfVURQX0RFQlVHCj4+ICsjaWYgQ09ORklHX0xXSVBfVURQX0RFQlVHCj4+
ICAjZGVmaW5lIFVEUF9ERUJVRyAgICAgICAgTFdJUF9EQkdfT04KPj4gICNlbmRpZiAvKiBDT05G
SUdfTFdJUF9VRFBfREVCVUcgKi8KPj4gIC0jaWZkZWYgQ09ORklHX0xXSVBfVENQX0RFQlVHCj4+
ICsjaWYgQ09ORklHX0xXSVBfVENQX0RFQlVHCj4+ICAjZGVmaW5lIFRDUF9ERUJVRyAgICAgICAg
TFdJUF9EQkdfT04KPj4gICNkZWZpbmUgVENQX0ZSX0RFQlVHICAgICBMV0lQX0RCR19PTgo+PiAg
I2RlZmluZSBUQ1BfUlRPX0RFQlVHICAgIExXSVBfREJHX09OCj4+IEBAIC0yMTMsMjggKzMyMiwy
OCBAQCB2b2lkIHN5c19mcmVlKHZvaWQgKnB0cik7Cj4+ICAjZGVmaW5lIFRDUF9XTkRfREVCVUcg
ICAgTFdJUF9EQkdfT04KPj4gICNkZWZpbmUgVENQX1JTVF9ERUJVRyAgICBMV0lQX0RCR19PTgo+
PiAgI2RlZmluZSBUQ1BfUUxFTl9ERUJVRyAgIExXSVBfREJHX09OCj4+IC0vLyNkZWZpbmUgVENQ
X09VVFBVVF9ERUJVRyBMV0lQX0RCR19PTgo+PiAtLy8jZGVmaW5lIFRDUF9JTlBVVF9ERUJVRyBM
V0lQX0RCR19PTgo+PiArI2RlZmluZSBUQ1BfT1VUUFVUX0RFQlVHIExXSVBfREJHX09OCj4+ICsj
ZGVmaW5lIFRDUF9JTlBVVF9ERUJVRyBMV0lQX0RCR19PTgo+PiAgI2lmIExXSVBfQ0hFQ0tTVU1f
T05fQ09QWQo+PiAgI2RlZmluZSBUQ1BfQ0hFQ0tTVU1fT05fQ09QWV9TQU5JVFlfQ0hFQ0sgMQo+
PiAgI2VuZGlmCj4+ICAjZW5kaWYgLyogQ09ORklHX0xXSVBfVENQX0RFQlVHICovCj4+ICAtI2lm
ZGVmIENPTkZJR19MV0lQX1NZU19ERUJVRwo+PiArI2lmIENPTkZJR19MV0lQX1NZU19ERUJVRwo+
PiAgI2RlZmluZSBTWVNfREVCVUcgICAgICAgIExXSVBfREJHX09OCj4+ICAjZGVmaW5lIFBCVUZf
REVCVUcgICAgICAgTFdJUF9EQkdfT04KPj4gICNkZWZpbmUgTUVNX0RFQlVHICAgICAgICBMV0lQ
X0RCR19PTgo+PiAgI2RlZmluZSBNRU1QX0RFQlVHICAgICAgIExXSVBfREJHX09OCj4+IC0jZW5k
aWYgLyogTFdJUF9TWVNfREVCVUcgKi8KPj4gKyNlbmRpZiAvKiBDT05GSUdfTFdJUF9TWVNfREVC
VUcgKi8KPj4gIC0jaWZkZWYgTFdJUF9BUElfREVCVUcKPj4gKyNpZiBDT05GSUdfTFdJUF9BUElf
REVCVUcKPj4gICNkZWZpbmUgU09DS0VUU19ERUJVRyAgICBMV0lQX0RCR19PTgo+PiAgI2RlZmlu
ZSBSQVdfREVCVUcgICAgICAgIExXSVBfREJHX09OCj4+ICAjZGVmaW5lIEFQSV9NU0dfREVCVUcg
ICAgTFdJUF9EQkdfT04KPj4gICNkZWZpbmUgQVBJX0xJQl9ERUJVRyAgICBMV0lQX0RCR19PTgo+
PiAtI2VuZGlmIC8qIExXSVBfQVBJX0RFQlVHICovCj4+ICsjZW5kaWYgLyogQ09ORklHX0xXSVBf
QVBJX0RFQlVHICovCj4+ICAtI2lmZGVmIExXSVBfU0VSVklDRV9ERUJVRwo+PiArI2lmIENPTkZJ
R19MV0lQX1NFUlZJQ0VfREVCVUcKPj4gICNkZWZpbmUgRVRIQVJQX0RFQlVHICAgICBMV0lQX0RC
R19PTgo+PiAgI2RlZmluZSBETlNfREVCVUcgICAgICAgIExXSVBfREJHX09OCj4+ICAjZGVmaW5l
IEFVVE9JUF9ERUJVRyAgICAgTFdJUF9EQkdfT04KPj4gQEAgLTI0Myw4ICszNTIsNyBAQCB2b2lk
IHN5c19mcmVlKHZvaWQgKnB0cik7Cj4+ICAjZGVmaW5lIFNOTVBfREVCVUcgICAgICAgTFdJUF9E
QkdfT04KPj4gICNkZWZpbmUgU05NUF9NU0dfREVCVUcgICBMV0lQX0RCR19PTgo+PiAgI2RlZmlu
ZSBTTk1QX01JQl9ERUJVRyAgIExXSVBfREJHX09OCj4+IC0jZGVmaW5lIFBQUF9ERUJVRyAgICAg
ICAgTFdJUF9EQkdfT04KPj4gLSNkZWZpbmUgU0xJUF9ERUJVRyAgICAgICBMV0lQX0RCR19PTgo+
PiAtI2VuZGlmIC8qIExXSVBfU0VSVklDRV9ERUJVRyAqLwo+PiArI2VuZGlmIC8qIENPTkZJR19M
V0lQX1NFUlZJQ0VfREVCVUcgKi8KPj4gKyNlbmRpZiAvKiBDT05GSUdfTFdJUF9ERUJVRyAqLwo+
PiAgICAjZW5kaWYgLyogX19MV0lQX0xXSVBPUFRTX0hfXyAqLwo+PiBkaWZmIC0tZ2l0IGEvaW5j
bHVkZS9uZXQvaWYuaCBiL2luY2x1ZGUvbmV0L2lmLmgKPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQK
Pj4gaW5kZXggMDAwMDAwMC4uM2ZiZmRlYwo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL2luY2x1
ZGUvbmV0L2lmLmgKPj4gQEAgLTAsMCArMSBAQAo+PiArI2luY2x1ZGUgPGNvbXBhdC9wb3NpeC9u
ZXQvaWYuaD4KPj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0ZGIuaCBiL2luY2x1ZGUvbmV0ZGIu
aAo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAwMDAwMDAwLi41ZTJlYjYwCj4+IC0t
LSAvZGV2L251bGwKPj4gKysrIGIvaW5jbHVkZS9uZXRkYi5oCj4+IEBAIC0wLDAgKzEgQEAKPj4g
KyNpbmNsdWRlIDxjb21wYXQvcG9zaXgvbmV0ZGIuaD4KPj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUv
c3lzL3NvY2tldC5oIGIvaW5jbHVkZS9zeXMvc29ja2V0LmgKPj4gaW5kZXggNWY0OTZjYi4uMmEw
MTg3NyAxMDA2NDQKPj4gLS0tIGEvaW5jbHVkZS9zeXMvc29ja2V0LmgKPj4gKysrIGIvaW5jbHVk
ZS9zeXMvc29ja2V0LmgKPj4gQEAgLTEsMTMgKzEsNjggQEAKPj4gLSNpZm5kZWYgVUtfTFdJUF9T
T0NLRVRfSAo+PiAtI2luY2x1ZGUgPHVrL2NvbmZpZy5oPgo+PiArLyogU1BEWC1MaWNlbnNlLUlk
ZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLwo+PiArLyoKPj4gKyAqIENvcHlyaWdodCAoYykgMjAx
OSwgTkVDIExhYm9yYXRvcmllcyBFdXJvcGUgR21iSCwgTkVDIENvcnBvcmF0aW9uLgo+PiArICog
ICAgICAgICAgICAgICAgICAgICBBbGwgcmlnaHRzIHJlc2VydmVkLgo+PiArICoKPj4gKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAo+PiArICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCj4+ICsgKiBhcmUgbWV0Ogo+PiArICoKPj4gKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Cj4+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCj4+ICsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAo+PiArICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQo+PiArICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KPj4gKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2Yg
dGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKPj4gKyAqICAgIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCj4+ICsgKiAgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgo+PiArICoKPj4gKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgo+PiArICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQo+PiArICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKPj4gKyAqIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklC
VVRPUlMgQkUKPj4gKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKPj4gKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCj4+ICsgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKPj4gKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCj4+ICsgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQo+
PiArICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKPj4gKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
Lgo+PiArICoKPj4gKyAqIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElG
SUVEIElOIEFOWSBXQVkuCj4+ICsgKi8KPj4gICsjaWZuZGVmIF9VS19MV0lQX1NPQ0tFVF9IXwo+
PiAgLSNpZiBDT05GSUdfTElCTFdJUAo+PiAtI2luY2x1ZGUgPGx3aXAvaW5ldC5oPgo+PiArI2lu
Y2x1ZGUgPHVrL2NvbmZpZy5oPgo+PiAgI2luY2x1ZGUgPGx3aXAvc29ja2V0cy5oPgo+PiAtI2Vu
ZGlmIC8qIENPTkZJR19MSUJMV0lQICovCj4+ICArI2lmbmRlZiBTT0NLX0NMT0VYRUMKPj4gICNk
ZWZpbmUgU09DS19DTE9FWEVDICAgIDB4MTAwMDAwMDAKPj4gKyNlbmRpZgo+PiArCj4+ICsjaWZu
ZGVmIFNPQ0tfTk9OQkxPQ0sKPj4gICNkZWZpbmUgU09DS19OT05CTE9DSyAgIDB4MjAwMDAwMDAK
Pj4gKyNlbmRpZgo+PiArCj4+ICsjaWZkZWYgQ09ORklHX0xJQk5PTElCQwo+PiAraW50IHNvY2tl
dChpbnQgZG9tYWluLCBpbnQgdHlwZSwgaW50IHByb3RvY29sKTsKPj4gK2ludCBhY2NlcHQoaW50
IHMsIHN0cnVjdCBzb2NrYWRkciAqYWRkciwgc29ja2xlbl90ICphZGRybGVuKTsKPj4gK2ludCBi
aW5kKGludCBzLCBjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKm5hbWUsIHNvY2tsZW5fdCBuYW1lbGVu
KTsKPj4gK2ludCBzaHV0ZG93bihpbnQgcywgaW50IGhvdyk7Cj4+ICtpbnQgZ2V0cGVlcm5hbWUo
aW50IHMsIHN0cnVjdCBzb2NrYWRkciAqbmFtZSwgc29ja2xlbl90ICpuYW1lbGVuKTsKPj4gK2lu
dCBnZXRzb2NrbmFtZShpbnQgcywgc3RydWN0IHNvY2thZGRyICpuYW1lLCBzb2NrbGVuX3QgKm5h
bWVsZW4pOwo+PiAraW50IGdldHNvY2tvcHQoaW50IHMsIGludCBsZXZlbCwgaW50IG9wdG5hbWUs
IHZvaWQgKm9wdHZhbCwgc29ja2xlbl90ICpvcHRsZW4pOwo+PiAraW50IHNldHNvY2tvcHQoaW50
IHMsIGludCBsZXZlbCwgaW50IG9wdG5hbWUsIGNvbnN0IHZvaWQgKm9wdHZhbCwKPj4gKwkgICAg
ICAgc29ja2xlbl90IG9wdGxlbik7Cj4+ICtpbnQgY29ubmVjdChpbnQgcywgY29uc3Qgc3RydWN0
IHNvY2thZGRyICpuYW1lLCBzb2NrbGVuX3QgbmFtZWxlbik7Cj4+ICtpbnQgbGlzdGVuKGludCBz
LCBpbnQgYmFja2xvZyk7Cj4+ICtpbnQgcmVjdihpbnQgcywgdm9pZCAqbWVtLCBzaXplX3QgbGVu
LCBpbnQgZmxhZ3MpOwo+PiAraW50IHJlY3Zmcm9tKGludCBzLCB2b2lkICptZW0sIHNpemVfdCBs
ZW4sIGludCBmbGFncywKPj4gKwkgICAgIHN0cnVjdCBzb2NrYWRkciAqZnJvbSwgc29ja2xlbl90
ICpmcm9tbGVuKTsKPj4gK2ludCBzZW5kKGludCBzLCBjb25zdCB2b2lkICpkYXRhcHRyLCBzaXpl
X3Qgc2l6ZSwgaW50IGZsYWdzKTsKPj4gK2ludCBzZW5kbXNnKGludCBzLCBjb25zdCBzdHJ1Y3Qg
bXNnaGRyICptZXNzYWdlLCBpbnQgZmxhZ3MpOwo+PiAraW50IHNlbmR0byhpbnQgcywgY29uc3Qg
dm9pZCAqZGF0YXB0ciwgc2l6ZV90IHNpemUsIGludCBmbGFncywKPj4gKwkgICBjb25zdCBzdHJ1
Y3Qgc29ja2FkZHIgKnRvLCBzb2NrbGVuX3QgdG9sZW4pOwo+PiArI2VuZGlmIC8qIENPTkZJR19M
SUJOT0xJQkMgKi8KPj4gIC0jZW5kaWYgLyogVUtfTFdJUF9TT0NLRVRfSCAqLwo+PiArI2VuZGlm
IC8qIF9VS19MV0lQX1NPQ0tFVF9IXyAqLwo+PiBkaWZmIC0tZ2l0IGEvaW5pdC5jIGIvaW5pdC5j
Cj4+IGluZGV4IDAzMjY2NjIuLmVjZTM2M2QgMTAwNjQ0Cj4+IC0tLSBhL2luaXQuYwo+PiArKysg
Yi9pbml0LmMKPj4gQEAgLTEsMjcgKzEsODYgQEAKPj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlm
aWVyOiBCU0QtMy1DbGF1c2UgKi8KPj4gKy8qCj4+ICsgKiBBdXRob3JzOiBTaW1vbiBLdWVuemVy
IDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4KPj4gKyAqCj4+ICsgKiBDb3B5cmlnaHQgKGMpIDIw
MTksIE5FQyBMYWJvcmF0b3JpZXMgRXVyb3BlIEdtYkgsIE5FQyBDb3Jwb3JhdGlvbi4KPj4gKyAq
ICAgICAgICAgICAgICAgICAgICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KPj4gKyAqCj4+ICsgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKPj4gKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwo+PiArICogYXJlIG1ldDoKPj4gKyAqCj4+ICsgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAo+PiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgo+PiArICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKPj4gKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKPj4gKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCj4+ICsgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9m
IHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzCj4+ICsgKiAgICBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQo+PiArICogICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KPj4gKyAqCj4+ICsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKPj4gKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKPj4gKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCj4+ICsgKiBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJ
QlVUT1JTIEJFCj4+ICsgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCj4+ICsgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgo+PiArICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCj4+ICsgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgo+PiArICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
Pj4gKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCj4+ICsgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KPj4gKyAqCj4+ICsgKiBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJ
RklFRCBJTiBBTlkgV0FZLgo+PiArICovCj4+ICsKPj4gICNpbmNsdWRlIDx1ay9jb25maWcuaD4K
Pj4gLSNpbmNsdWRlIDxsd2lwL3RjcGlwLmg+Cj4+IC0jaW5jbHVkZSA8bHdpcC9pbml0Lmg+Cj4+
IC0jaW5jbHVkZSA8dWsvcGxhdC9jdG9ycy5oPgo+PiAtCj4+IC0vKiBUaGlzIGZ1bmN0aW9uIGlz
IGNhbGxlZCBiZWZvcmUgdGhlIGFueSBvdGhlciBzeXNfYXJjaC1mdW5jdGlvbiBpcwo+PiAtICog
Y2FsbGVkIGFuZCBpcyBtZWFudCB0byBiZSB1c2VkIHRvIGluaXRpYWxpemUgYW55dGhpbmcgdGhh
dCBoYXMgdG8KPj4gLSAqIGJlIHVwIGFuZCBydW5uaW5nIGZvciB0aGUgcmVzdCBvZiB0aGUgZnVu
Y3Rpb25zIHRvIHdvcmsuIGZvcgo+PiAtICogZXhhbXBsZSB0byBzZXQgdXAgYSBwb29sIG9mIHNl
bWFwaG9yZXMuICovCj4+ICsjaW5jbHVkZSAibHdpcC9vcHQuaCIKPj4gKyNpbmNsdWRlICJsd2lw
L3RjcGlwLmgiCj4+ICsjaW5jbHVkZSAibHdpcC9pbml0LmgiCj4+ICsjaW5jbHVkZSAibHdpcC9k
aGNwLmgiCj4+ICsjaWYgQ09ORklHX0xXSVBfTk9USFJFQURTCj4+ICsjaW5jbHVkZSAibHdpcC90
aW1lb3V0cy5oIgo+PiArI2Vsc2UgLyogQ09ORklHX0xXSVBfTk9USFJFQURTICovCj4+ICsjaW5j
bHVkZSA8dWsvc2VtYXBob3JlLmg+Cj4+ICsjZW5kaWYgLyogQ09ORklHX0xXSVBfTk9USFJFQURT
ICovCj4+ICsKPj4gIHZvaWQgc3lzX2luaXQodm9pZCkKPj4gIHsKPj4gLSAgICByZXR1cm47Cj4+
ICsJLyoKPj4gKwkgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBiZWZvcmUgdGhlIGFueSBvdGhl
ciBzeXNfYXJjaC1mdW5jdGlvbiBpcwo+PiArCSAqIGNhbGxlZCBhbmQgaXMgbWVhbnQgdG8gYmUg
dXNlZCB0byBpbml0aWFsaXplIGFueXRoaW5nIHRoYXQgaGFzIHRvCj4+ICsJICogYmUgdXAgYW5k
IHJ1bm5pbmcgZm9yIHRoZSByZXN0IG9mIHRoZSBmdW5jdGlvbnMgdG8gd29yay4gZm9yCj4+ICsJ
ICogZXhhbXBsZSB0byBzZXQgdXAgYSBwb29sIG9mIHNlbWFwaG9yZXMuCj4+ICsJICovCj4+ICB9
Cj4+ICArI2lmICFDT05GSUdfTFdJUF9OT1RIUkVBRFMKPj4gK3N0YXRpYyBzdHJ1Y3QgdWtfc2Vt
YXBob3JlIF9sd2lwX2luaXRfc2VtOwo+PiArCj4+ICtzdGF0aWMgdm9pZCBfbHdpcF9pbml0X2Rv
bmUodm9pZCAqYXJnIF9fdW51c2VkKQo+PiArewo+PiArCXVrX3NlbWFwaG9yZV91cCgmX2x3aXBf
aW5pdF9zZW0pOwo+PiArfQo+PiArI2VuZGlmIC8qICFDT05GSUdfTFdJUF9OT1RIUkVBRFMgKi8K
Pj4gKwo+PiAgLyoKPj4gICAqIFRoaXMgZnVuY3Rpb24gaW5pdGlhbGl6aW5nIHRoZSBsd2lwIG5l
dHdvcmsgc3RhY2sKPj4gLSAqCj4+ICAgKi8KPj4gIGludCBsaWJsd2lwX2luaXQodm9pZCkKPj4g
IHsKPj4gLSNpZiBDT05GSUdfTElCVUtTQ0hFRAo+PiAtICAgICAgICB0Y3BpcF9pbml0KE5VTEws
IE5VTEwpOwo+PiAtI2Vsc2UKPj4gLSAgICAgICAgbHdpcF9pbml0KCk7Cj4+IC0jZW5kaWYgLyog
Q09ORklHX0xJQlVLU0NIRUQgKi8KPj4gKwo+PiArI2lmICFDT05GSUdfTFdJUF9OT1RIUkVBRFMK
Pj4gKwl1a19zZW1hcGhvcmVfaW5pdCgmX2x3aXBfaW5pdF9zZW0sIDApOwo+PiArI2VuZGlmIC8q
ICFDT05GSUdfTFdJUF9OT1RIUkVBRFMgKi8KPj4gKwo+PiArI2lmIENPTkZJR19MV0lQX05PVEhS
RUFEUwo+PiArCWx3aXBfaW5pdCgpOwo+PiArI2Vsc2UgLyogQ09ORklHX0xXSVBfTk9USFJFQURT
ICovCj4+ICsJdGNwaXBfaW5pdChfbHdpcF9pbml0X2RvbmUsIE5VTEwpOwo+PiArCj4+ICsJLyog
V2FpdCB1bnRpbCBzdGFjayBpcyBib290ZWQgKi8KPj4gKwl1a19zZW1hcGhvcmVfZG93bigmX2x3
aXBfaW5pdF9zZW0pOwo+PiArI2VuZGlmIC8qIENPTkZJR19MV0lQX05PVEhSRUFEUyAqLwo+PiAr
Cj4+ICAJcmV0dXJuIDA7Cj4+ICB9Cj4+IGRpZmYgLS1naXQgYS9tYWlsYm94LmMgYi9tYWlsYm94
LmMKPj4gaW5kZXggOGE2Y2IxMy4uNmZiNWZkYSAxMDA2NDQKPj4gLS0tIGEvbWFpbGJveC5jCj4+
ICsrKyBiL21haWxib3guYwo+PiBAQCAtMSwzICsxLDM2IEBACj4+ICsvKiBTUERYLUxpY2Vuc2Ut
SWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCj4+ICsvKgo+PiArICogQ29weXJpZ2h0IChjKSAy
MDE5LCBORUMgTGFib3JhdG9yaWVzIEV1cm9wZSBHbWJILCBORUMgQ29ycG9yYXRpb24uCj4+ICsg
KiAgICAgICAgICAgICAgICAgICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4+ICsgKgo+PiArICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Cj4+ICsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKPj4gKyAqIGFyZSBtZXQ6Cj4+ICsgKgo+PiArICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKPj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KPj4gKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cj4+ICsgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCj4+ICsgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgo+PiArICogMy4gTmVpdGhlciB0aGUgbmFtZSBv
ZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cwo+PiArICogICAgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KPj4gKyAqICAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCj4+ICsgKgo+PiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCj4+ICsg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCj4+ICsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQo+PiArICogQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRS
SUJVVE9SUyBCRQo+PiArICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgo+PiArICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKPj4gKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwo+PiArICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KPj4gKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Cj4+ICsgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQo+PiArICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCj4+ICsgKgo+PiArICogVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQgT1IgTU9E
SUZJRUQgSU4gQU5ZIFdBWS4KPj4gKyAqLwo+PiArCj4+ICAjaW5jbHVkZSA8dWsvbWJveC5oPgo+
PiAgI2luY2x1ZGUgPHVrL2FyY2gvdGltZS5oPgo+PiAgI2luY2x1ZGUgPGx3aXAvc3lzLmg+Cj4+
IEBAIC03LDY3ICs0MCw4MCBAQAo+PiAgLyogQ3JlYXRlcyBhbiBlbXB0eSBtYWlsYm94LiAqLwo+
PiAgZXJyX3Qgc3lzX21ib3hfbmV3KHN5c19tYm94X3QgKm1ib3gsIGludCBzaXplKQo+PiAgewo+
PiAtICAgIGlmIChzaXplIDw9IDApCj4+IC0gICAgICAgIHNpemUgPSAzMjsKPj4gLQo+PiAtICAg
IFVLX0FTU0VSVChtYm94KTsKPj4gLSAgICBtYm94LT5hID0gdWtfYWxsb2NfZ2V0X2RlZmF1bHQo
KTsKPj4gLSAgICBVS19BU1NFUlQobWJveC0+YSk7Cj4+IC0gICAgbWJveC0+bWJveCA9IHVrX21i
b3hfY3JlYXRlKG1ib3gtPmEsIHNpemUpOwo+PiAtICAgIGlmICghbWJveC0+bWJveCkKPj4gLSAg
ICAgICAgcmV0dXJuIEVSUl9NRU07Cj4+IC0gICAgbWJveC0+dmFsaWQgPSAxOwo+PiAtICAgIHJl
dHVybiBFUlJfT0s7Cj4+ICsJaWYgKHNpemUgPD0gMCkKPj4gKwkJc2l6ZSA9IDMyOwo+PiArCj4+
ICsJVUtfQVNTRVJUKG1ib3gpOwo+PiArCW1ib3gtPmEgPSB1a19hbGxvY19nZXRfZGVmYXVsdCgp
Owo+PiArCVVLX0FTU0VSVChtYm94LT5hKTsKPj4gKwltYm94LT5tYm94ID0gdWtfbWJveF9jcmVh
dGUobWJveC0+YSwgc2l6ZSk7Cj4+ICsJaWYgKCFtYm94LT5tYm94KQo+PiArCQlyZXR1cm4gRVJS
X01FTTsKPj4gKwltYm94LT52YWxpZCA9IDE7Cj4+ICsJcmV0dXJuIEVSUl9PSzsKPj4gIH0KPj4g
ICAgaW50IHN5c19tYm94X3ZhbGlkKHN5c19tYm94X3QgKm1ib3gpCj4+ICB7Cj4+IC0gICAgaWYg
KCFtYm94KQo+PiAtICAgICAgICByZXR1cm4gMDsKPj4gLSAgICByZXR1cm4gKG1ib3gtPnZhbGlk
ID09IDEpOwo+PiArCWlmICghbWJveCkKPj4gKwkJcmV0dXJuIDA7Cj4+ICsJcmV0dXJuIChtYm94
LT52YWxpZCA9PSAxKTsKPj4gIH0KPj4gICAgdm9pZCBzeXNfbWJveF9zZXRfaW52YWxpZChzeXNf
bWJveF90ICptYm94KQo+PiAgewo+PiAtICAgIFVLX0FTU0VSVChtYm94KTsKPj4gLSAgICBtYm94
LT52YWxpZCA9IDA7Cj4+ICsJVUtfQVNTRVJUKG1ib3gpOwo+PiArCW1ib3gtPnZhbGlkID0gMDsK
Pj4gIH0KPj4gIC0vKiBEZWFsbG9jYXRlcyBhIG1haWxib3guIElmIHRoZXJlIGFyZSBtZXNzYWdl
cyBzdGlsbCBwcmVzZW50IGluIHRoZQo+PiArLyoqCj4+ICsgKiBEZWFsbG9jYXRlcyBhIG1haWxi
b3guIElmIHRoZXJlIGFyZSBtZXNzYWdlcyBzdGlsbCBwcmVzZW50IGluIHRoZQo+PiAgICogbWFp
bGJveCB3aGVuIHRoZSBtYWlsYm94IGlzIGRlYWxsb2NhdGVkLCBpdCBpcyBhbiBpbmRpY2F0aW9u
IG9mIGEKPj4gLSAqIHByb2dyYW1taW5nIGVycm9yIGluIGx3SVAgYW5kIHRoZSBkZXZlbG9wZXIg
c2hvdWxkIGJlIG5vdGlmaWVkLiAqLwo+PiArICogcHJvZ3JhbW1pbmcgZXJyb3IgaW4gbHdJUCBh
bmQgdGhlIGRldmVsb3BlciBzaG91bGQgYmUgbm90aWZpZWQuCj4+ICsgKi8KPj4gIHZvaWQgc3lz
X21ib3hfZnJlZShzeXNfbWJveF90ICptYm94KQo+PiAgewo+PiAtICAgIFVLX0FTU0VSVChzeXNf
bWJveF92YWxpZChtYm94KSk7Cj4+ICsJVUtfQVNTRVJUKHN5c19tYm94X3ZhbGlkKG1ib3gpKTsK
Pj4gIC0gICAgdWtfbWJveF9mcmVlKG1ib3gtPmEsIG1ib3gtPm1ib3gpOwo+PiAtICAgIHN5c19t
Ym94X3NldF9pbnZhbGlkKG1ib3gpOwo+PiArCXVrX21ib3hfZnJlZShtYm94LT5hLCBtYm94LT5t
Ym94KTsKPj4gKwlzeXNfbWJveF9zZXRfaW52YWxpZChtYm94KTsKPj4gIH0KPj4gIC0vKiBQb3N0
cyB0aGUgIm1zZyIgdG8gdGhlIG1haWxib3guICovCj4+ICsvKiBQb3N0cyAibXNnIiB0byB0aGUg
bWFpbGJveCwgTlVMTCBtc2cncyBhcmUgbm90IHN1cHBvcnRlZCAqLwo+PiAgdm9pZCBzeXNfbWJv
eF9wb3N0KHN5c19tYm94X3QgKm1ib3gsIHZvaWQgKm1zZykKPj4gIHsKPj4gLSAgICBVS19BU1NF
UlQoc3lzX21ib3hfdmFsaWQobWJveCkpOwo+PiArCVVLX0FTU0VSVChzeXNfbWJveF92YWxpZCht
Ym94KSk7Cj4+ICAtICAgIGlmICghbXNnKSB7IC8qIEZJWE1FPyAqLwo+PiAtICAgICAgICB1a19w
cmludGQoRExWTF9XQVJOLCAiSWdub3JlIHBvc3RpbmcgTlVMTCBtZXNzYWdlIik7Cj4+IC0JcmV0
dXJuOwo+PiAtICAgIH0KPj4gKwlpZiAoIW1zZykgewo+PiArCQl1a19wcl9kZWJ1ZygiSWdub3Jl
ZCBwb3N0aW5nIE5VTEwgbWVzc2FnZSIpOwo+PiArCQlyZXR1cm47Cj4+ICsJfQo+PiAgLSAgICB1
a19tYm94X3Bvc3QobWJveC0+bWJveCwgbXNnKTsKPj4gKwl1a19tYm94X3Bvc3QobWJveC0+bWJv
eCwgbXNnKTsKPj4gIH0KPj4gIC0vKiBUcnkgdG8gcG9zdCB0aGUgIm1zZyIgdG8gdGhlIG1haWxi
b3guICovCj4+ICsvKiBUcnkgdG8gcG9zdCAibXNnIiB0byB0aGUgbWFpbGJveC4gKi8KPj4gIGVy
cl90IHN5c19tYm94X3RyeXBvc3Qoc3lzX21ib3hfdCAqbWJveCwgdm9pZCAqbXNnKQo+PiAgewo+
PiAtICAgIFVLX0FTU0VSVChzeXNfbWJveF92YWxpZChtYm94KSk7Cj4+ICsJVUtfQVNTRVJUKHN5
c19tYm94X3ZhbGlkKG1ib3gpKTsKPj4gIC0gICAgaWYgKHVrX21ib3hfcG9zdF90cnkobWJveC0+
bWJveCwgbXNnKSA8IDApCj4+IC0gICAgICAgIHJldHVybiBFUlJfTUVNOwo+PiAtICAgIHJldHVy
biBFUlJfT0s7Cj4+ICsJaWYgKHVrX21ib3hfcG9zdF90cnkobWJveC0+bWJveCwgbXNnKSA8IDAp
Cj4+ICsJCXJldHVybiBFUlJfTUVNOwo+PiArCXJldHVybiBFUlJfT0s7Cj4+ICB9Cj4+ICAtLyog
QmxvY2tzIHRoZSB0aHJlYWQgdW50aWwgYSBtZXNzYWdlIGFycml2ZXMgaW4gdGhlIG1haWxib3gs
IGJ1dCBkb2VzCj4+ICsvKiBUcnkgdG8gcG9zdCB0aGUgIm1zZyIgdG8gdGhlIG1haWxib3ggZnJv
bSBJU1IgY29udGV4dC4gKi8KPj4gK2Vycl90IHN5c19tYm94X3RyeXBvc3RfZnJvbWlzcihzeXNf
bWJveF90ICptYm94LCB2b2lkICptc2cpCj4+ICt7Cj4+ICsJVUtfQVNTRVJUKHN5c19tYm94X3Zh
bGlkKG1ib3gpKTsKPj4gKwo+PiArCWlmICh1a19tYm94X3Bvc3RfdHJ5KG1ib3gtPm1ib3gsIG1z
ZykgPCAwKQo+PiArCQlyZXR1cm4gRVJSX01FTTsKPj4gKwlyZXR1cm4gRVJSX09LOwo+PiArfQo+
PiArCj4+ICsvKioKPj4gKyAqIEJsb2NrcyB0aGUgdGhyZWFkIHVudGlsIGEgbWVzc2FnZSBhcnJp
dmVzIGluIHRoZSBtYWlsYm94LCBidXQgZG9lcwo+PiAgICogbm90IGJsb2NrIHRoZSB0aHJlYWQg
bG9uZ2VyIHRoYW4gInRpbWVvdXQiIG1pbGxpc2Vjb25kcyAoc2ltaWxhciB0bwo+PiAgICogdGhl
IHN5c19hcmNoX3NlbV93YWl0KCkgZnVuY3Rpb24pLiBUaGUgIm1zZyIgYXJndW1lbnQgaXMgYSBy
ZXN1bHQKPj4gICAqIHBhcmFtZXRlciB0aGF0IGlzIHNldCBieSB0aGUgZnVuY3Rpb24gKGkuZS4s
IGJ5IGRvaW5nICIqbXNnID0KPj4gQEAgLTc2LDIxICsxMjIsMjMgQEAgZXJyX3Qgc3lzX21ib3hf
dHJ5cG9zdChzeXNfbWJveF90ICptYm94LCB2b2lkICptc2cpCj4+ICAgKgo+PiAgICogVGhlIHJl
dHVybiB2YWx1ZXMgYXJlIHRoZSBzYW1lIGFzIGZvciB0aGUgc3lzX2FyY2hfc2VtX3dhaXQoKSBm
dW5jdGlvbjoKPj4gICAqIE51bWJlciBvZiBtaWxsaXNlY29uZHMgc3BlbnQgd2FpdGluZyBvciBT
WVNfQVJDSF9USU1FT1VUIGlmIHRoZXJlIHdhcyBhCj4+IC0gKiB0aW1lb3V0LiAqLwo+PiArICog
dGltZW91dC4KPj4gKyAqLwo+PiAgdTMyX3Qgc3lzX2FyY2hfbWJveF9mZXRjaChzeXNfbWJveF90
ICptYm94LCB2b2lkICoqbXNnLCB1MzJfdCB0aW1lb3V0KQo+PiAgewo+PiAtICAgIF9fbnNlYyBu
c3JldDsKPj4gKwlfX25zZWMgbnNyZXQ7Cj4+ICAtICAgIFVLX0FTU0VSVChzeXNfbWJveF92YWxp
ZChtYm94KSk7Cj4+ICsJVUtfQVNTRVJUKHN5c19tYm94X3ZhbGlkKG1ib3gpKTsKPj4gIC0gICAg
bnNyZXQgPSB1a19tYm94X3JlY3ZfdG8obWJveC0+bWJveCwgbXNnLAo+PiAtICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVrYXJjaF90aW1lX21zZWNfdG9fbnNlYygoX19uc2VjKSB0aW1l
b3V0KSk7Cj4+IC0gICAgaWYgKHVubGlrZWx5KG5zcmV0ID09IF9fTlNFQ19NQVgpKQo+PiAtICAg
ICAgICByZXR1cm4gU1lTX0FSQ0hfVElNRU9VVDsKPj4gLSAgICByZXR1cm4gKHUzMl90KSB1a2Fy
Y2hfdGltZV9uc2VjX3RvX21zZWMobnNyZXQpOwo+PiArCW5zcmV0ID0gdWtfbWJveF9yZWN2X3Rv
KG1ib3gtPm1ib3gsIG1zZywKPj4gKwkJCQl1a2FyY2hfdGltZV9tc2VjX3RvX25zZWMoKF9fbnNl
YykgdGltZW91dCkpOwo+PiArCWlmICh1bmxpa2VseShuc3JldCA9PSBfX05TRUNfTUFYKSkKPj4g
KwkJcmV0dXJuIFNZU19BUkNIX1RJTUVPVVQ7Cj4+ICsJcmV0dXJuICh1MzJfdCkgdWthcmNoX3Rp
bWVfbnNlY190b19tc2VjKG5zcmV0KTsKPj4gIH0KPj4gIC0vKiBUaGlzIGlzIHNpbWlsYXIgdG8g
c3lzX2FyY2hfbWJveF9mZXRjaCwgaG93ZXZlciBpZiBhIG1lc3NhZ2UgaXMgbm90Cj4+ICsvKioK
Pj4gKyAqIFRoaXMgaXMgc2ltaWxhciB0byBzeXNfYXJjaF9tYm94X2ZldGNoLCBob3dldmVyIGlm
IGEgbWVzc2FnZSBpcyBub3QKPj4gICAqIHByZXNlbnQgaW4gdGhlIG1haWxib3gsIGl0IGltbWVk
aWF0ZWx5IHJldHVybnMgd2l0aCB0aGUgY29kZQo+PiAgICogU1lTX01CT1hfRU1QVFkuIE9uIHN1
Y2Nlc3MgMCBpcyByZXR1cm5lZC4KPj4gICAqCj4+IEBAIC05OSwxNyArMTQ3LDE4IEBAIHUzMl90
IHN5c19hcmNoX21ib3hfZmV0Y2goc3lzX21ib3hfdCAqbWJveCwgdm9pZCAqKm1zZywgdTMyX3Qg
dGltZW91dCkKPj4gICAqIGV4YW1wbGUsIGEgbmFpdmUgaW1wbGVtZW50YXRpb24gY291bGQgYmU6
Cj4+ICAgKiAgICNkZWZpbmUgc3lzX2FyY2hfbWJveF90cnlmZXRjaChtYm94LG1zZykgXAo+PiAg
ICogICAgIHN5c19hcmNoX21ib3hfZmV0Y2gobWJveCxtc2csMSkKPj4gLSAqIGFsdGhvdWdoIHRo
aXMgd291bGQgaW50cm9kdWNlIHVubmVjZXNzYXJ5IGRlbGF5cy4gKi8KPj4gLQo+PiAtdTMyX3Qg
c3lzX2FyY2hfbWJveF90cnlmZXRjaChzeXNfbWJveF90ICptYm94LCB2b2lkICoqbXNnKSB7Cj4+
IC0gICAgdm9pZCAqcm1zZzsKPj4gKyAqIGFsdGhvdWdoIHRoaXMgd291bGQgaW50cm9kdWNlIHVu
bmVjZXNzYXJ5IGRlbGF5cy4KPj4gKyAqLwo+PiArdTMyX3Qgc3lzX2FyY2hfbWJveF90cnlmZXRj
aChzeXNfbWJveF90ICptYm94LCB2b2lkICoqbXNnKQo+PiArewo+PiArCXZvaWQgKnJtc2c7Cj4+
ICAtICAgIFVLX0FTU0VSVChzeXNfbWJveF92YWxpZChtYm94KSk7Cj4+ICsJVUtfQVNTRVJUKHN5
c19tYm94X3ZhbGlkKG1ib3gpKTsKPj4gIC0gICAgaWYgKHVrX21ib3hfcmVjdl90cnkobWJveC0+
bWJveCwgJnJtc2cpIDwgMCkKPj4gLQlyZXR1cm4gU1lTX01CT1hfRU1QVFk7Cj4+ICsJaWYgKHVr
X21ib3hfcmVjdl90cnkobWJveC0+bWJveCwgJnJtc2cpIDwgMCkKPj4gKwkJcmV0dXJuIFNZU19N
Qk9YX0VNUFRZOwo+PiAgLSAgICBpZiAobXNnKQo+PiAtICAgICAgICAqbXNnID0gcm1zZzsKPj4g
LSAgICByZXR1cm4gMDsKPj4gKwlpZiAobXNnKQo+PiArCQkqbXNnID0gcm1zZzsKPj4gKwlyZXR1
cm4gMDsKPj4gIH0KPj4gZGlmZiAtLWdpdCBhL211dGV4LmMgYi9tdXRleC5jCj4+IGluZGV4IGFh
YTEwODUuLjJmOGQ0YzUgMTAwNjQ0Cj4+IC0tLSBhL211dGV4LmMKPj4gKysrIGIvbXV0ZXguYwo+
PiBAQCAtMSwxMSArMSw0NiBAQAo+PiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0z
LUNsYXVzZSAqLwo+PiArLyoKPj4gKyAqIENvcHlyaWdodCAoYykgMjAxOSwgTkVDIExhYm9yYXRv
cmllcyBFdXJvcGUgR21iSCwgTkVDIENvcnBvcmF0aW9uLgo+PiArICogICAgICAgICAgICAgICAg
ICAgICBBbGwgcmlnaHRzIHJlc2VydmVkLgo+PiArICoKPj4gKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAo+PiArICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCj4+ICsgKiBhcmUgbWV0Ogo+PiArICoKPj4gKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cj4+ICsgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCj4+ICsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAo+PiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQo+PiArICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KPj4gKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBo
b2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKPj4gKyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCj4+ICsgKiAg
ICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
Lgo+PiArICoKPj4gKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgo+PiArICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQo+PiArICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKPj4gKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKPj4gKyAq
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKPj4gKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCj4+ICsgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKPj4g
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCj4+ICsgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQo+PiArICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUKPj4gKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgo+PiArICoKPj4gKyAq
IFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVku
Cj4+ICsgKi8KPj4gKwo+PiAgI2luY2x1ZGUgPHVrL211dGV4Lmg+Cj4+ICAjaW5jbHVkZSA8dWsv
YXJjaC90aW1lLmg+Cj4+ICAjaW5jbHVkZSA8bHdpcC9zeXMuaD4KPj4gICAgI2luY2x1ZGUgPHVr
L2Vzc2VudGlhbHMuaD4KPj4gIC0vKiBJbml0aWFsaXplcyBhIG5ldyBzZW1hcGhvcmUuIFRoZSAi
Y291bnQiIGFyZ3VtZW50IHNwZWNpZmllcwo+PiAtICogdGhlIGluaXRpYWwgc3RhdGUgb2YgdGhl
IHNlbWFwaG9yZS4gKi8KPj4gKy8qKgo+PiArICogSW5pdGlhbGl6ZXMgYSBuZXcgc2VtYXBob3Jl
LiBUaGUgImNvdW50IiBhcmd1bWVudCBzcGVjaWZpZXMKPj4gKyAqIHRoZSBpbml0aWFsIHN0YXRl
IG9mIHRoZSBzZW1hcGhvcmUuCj4+ICsgKi8KPj4gIGVycl90IHN5c19tdXRleF9uZXcoc3lzX211
dGV4X3QgKm10eCkKPj4gIHsKPj4gIAl1a19tdXRleF9pbml0KCZtdHgtPm10eCk7Cj4+IEBAIC0z
MSwxMCArNjYsMTAgQEAgdm9pZCBzeXNfbXV0ZXhfZnJlZShzeXNfbXV0ZXhfdCAqbXR4KQo+PiAg
LyogU2lnbmFscyBhIG10eGFwaG9yZS4gKi8KPiAgICBzL210eGFwaG9yZS9tdXRleAoKSSBhbSBn
dWVzc2luZyB5b3UgYXJlIGZpeGluZyB0aGlzIHR5cG8gd2hpbGUgdXBzdHJlYW1pbmcsIHJpZ2h0
PwoKPj4gIHZvaWQgc3lzX211dGV4X2xvY2soc3lzX211dGV4X3QgKm10eCkKPj4gIHsKPj4gLQl1
a19tdXRleF9ob2xkKCZtdHgtPm10eCk7Cj4+ICsJdWtfbXV0ZXhfbG9jaygmbXR4LT5tdHgpOwo+
PiAgfQo+PiAgICB2b2lkIHN5c19tdXRleF91bmxvY2soc3lzX211dGV4X3QgKm10eCkKPj4gIHsK
Pj4gLQl1a19tdXRleF9yZWxlYXNlKCZtdHgtPm10eCk7Cj4+ICsJdWtfbXV0ZXhfdW5sb2NrKCZt
dHgtPm10eCk7Cj4+ICB9Cj4+IGRpZmYgLS1naXQgYS9zZW1hcGhvcmUuYyBiL3NlbWFwaG9yZS5j
Cj4+IGluZGV4IDhiMWIxNWYuLjE2ZGEzMTYgMTAwNjQ0Cj4+IC0tLSBhL3NlbWFwaG9yZS5jCj4+
ICsrKyBiL3NlbWFwaG9yZS5jCj4+IEBAIC0xLDExICsxLDQ2IEBACj4+ICsvKiBTUERYLUxpY2Vu
c2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCj4+ICsvKgo+PiArICogQ29weXJpZ2h0IChj
KSAyMDE5LCBORUMgTGFib3JhdG9yaWVzIEV1cm9wZSBHbWJILCBORUMgQ29ycG9yYXRpb24uCj4+
ICsgKiAgICAgICAgICAgICAgICAgICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4+ICsgKgo+PiAr
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Cj4+ICsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKPj4gKyAqIGFyZSBtZXQ6Cj4+ICsgKgo+PiAr
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKPj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KPj4gKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cj4+ICsgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCj4+ICsgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgo+PiArICogMy4gTmVpdGhlciB0aGUgbmFt
ZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cwo+PiArICogICAg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KPj4gKyAqICAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCj4+ICsgKgo+PiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCj4+
ICsgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCj4+ICsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQo+PiArICogQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENP
TlRSSUJVVE9SUyBCRQo+PiArICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgo+PiArICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKPj4gKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwo+PiArICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KPj4gKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCj4+ICsgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQo+PiArICogUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCj4+ICsgKgo+PiArICogVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQgT1Ig
TU9ESUZJRUQgSU4gQU5ZIFdBWS4KPj4gKyAqLwo+PiArCj4+ICAjaW5jbHVkZSA8dWsvc2VtYXBo
b3JlLmg+Cj4+ICAjaW5jbHVkZSA8dWsvYXJjaC90aW1lLmg+Cj4+ICAjaW5jbHVkZSA8bHdpcC9z
eXMuaD4KPj4gICAgI2luY2x1ZGUgPHVrL2Vzc2VudGlhbHMuaD4KPj4gIC0vKiBJbml0aWFsaXpl
cyBhIG5ldyBzZW1hcGhvcmUuIFRoZSAiY291bnQiIGFyZ3VtZW50IHNwZWNpZmllcwo+PiAtICog
dGhlIGluaXRpYWwgc3RhdGUgb2YgdGhlIHNlbWFwaG9yZS4gKi8KPj4gKy8qKgo+PiArICogSW5p
dGlhbGl6ZXMgYSBuZXcgc2VtYXBob3JlLiBUaGUgImNvdW50IiBhcmd1bWVudCBzcGVjaWZpZXMK
Pj4gKyAqIHRoZSBpbml0aWFsIHN0YXRlIG9mIHRoZSBzZW1hcGhvcmUuCj4+ICsgKi8KPj4gIGVy
cl90IHN5c19zZW1fbmV3KHN5c19zZW1fdCAqc2VtLCB1OF90IGNvdW50KQo+PiAgewo+PiAgCXVr
X3NlbWFwaG9yZV9pbml0KCZzZW0tPnNlbSwgKGxvbmcpIGNvdW50KTsKPj4gQEAgLTM0LDcgKzY5
LDggQEAgdm9pZCBzeXNfc2VtX3NpZ25hbChzeXNfc2VtX3QgKnNlbSkKPj4gIAl1a19zZW1hcGhv
cmVfdXAoJnNlbS0+c2VtKTsKPj4gIH0KPj4gIC0vKiBCbG9ja3MgdGhlIHRocmVhZCB3aGlsZSB3
YWl0aW5nIGZvciB0aGUgc2VtYXBob3JlIHRvIGJlCj4+ICsvKioKPj4gKyAqIEJsb2NrcyB0aGUg
dGhyZWFkIHdoaWxlIHdhaXRpbmcgZm9yIHRoZSBzZW1hcGhvcmUgdG8gYmUKPj4gICAqIHNpZ25h
bGVkLiBJZiB0aGUgInRpbWVvdXQiIGFyZ3VtZW50IGlzIG5vbi16ZXJvLCB0aGUgdGhyZWFkIHNo
b3VsZAo+PiAgICogb25seSBiZSBibG9ja2VkIGZvciB0aGUgc3BlY2lmaWVkIHRpbWUgKG1lYXN1
cmVkIGluCj4+ICAgKiBtaWxsaXNlY29uZHMpLgo+PiBAQCAtNDMsMTQgKzc5LDE2IEBAIHZvaWQg
c3lzX3NlbV9zaWduYWwoc3lzX3NlbV90ICpzZW0pCj4+ICAgKiBtaWxsaXNlY29uZHMgc3BlbnQg
d2FpdGluZyBmb3IgdGhlIHNlbWFwaG9yZSB0byBiZSBzaWduYWxlZC4gSWYgdGhlCj4+ICAgKiBz
ZW1hcGhvcmUgd2Fzbid0IHNpZ25hbGVkIHdpdGhpbiB0aGUgc3BlY2lmaWVkIHRpbWUsIHRoZSBy
ZXR1cm4gdmFsdWUgaXMKPj4gICAqIFNZU19BUkNIX1RJTUVPVVQuIElmIHRoZSB0aHJlYWQgZGlk
bid0IGhhdmUgdG8gd2FpdCBmb3IgdGhlIHNlbWFwaG9yZQo+PiAtICogKGkuZS4sIGl0IHdhcyBh
bHJlYWR5IHNpZ25hbGVkKSwgdGhlIGZ1bmN0aW9uIG1heSByZXR1cm4gemVyby4gKi8KPj4gKyAq
IChpLmUuLCBpdCB3YXMgYWxyZWFkeSBzaWduYWxlZCksIHRoZSBmdW5jdGlvbiBtYXkgcmV0dXJu
IHplcm8uCj4+ICsgKi8KPj4gIHUzMl90IHN5c19hcmNoX3NlbV93YWl0KHN5c19zZW1fdCAqc2Vt
LCB1MzJfdCB0aW1lb3V0KQo+PiAgewo+PiAtICAgIF9fbnNlYyBuc3JldDsKPj4gKwlfX25zZWMg
bnNyZXQ7Cj4+ICAtICAgIG5zcmV0ID0gdWtfc2VtYXBob3JlX2Rvd25fdG8oJnNlbS0+c2VtLAo+
PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWthcmNoX3RpbWVfbXNlY190
b19uc2VjKChfX25zZWMpIHRpbWVvdXQpKTsKPj4gLSAgICBpZiAodW5saWtlbHkobnNyZXQgPT0g
X19OU0VDX01BWCkpCj4+IC0gICAgICAgIHJldHVybiBTWVNfQVJDSF9USU1FT1VUOwo+PiAtICAg
IHJldHVybiAodTMyX3QpIHVrYXJjaF90aW1lX25zZWNfdG9fbXNlYyhuc3JldCk7Cj4+ICsJbnNy
ZXQgPSB1a19zZW1hcGhvcmVfZG93bl90bygmc2VtLT5zZW0sCj4+ICsJCQkJICAgICB1a2FyY2hf
dGltZV9tc2VjX3RvX25zZWMoKF9fbnNlYykKPj4gKwkJCQkJCQkgICAgICB0aW1lb3V0KSk7Cj4+
ICsJaWYgKHVubGlrZWx5KG5zcmV0ID09IF9fTlNFQ19NQVgpKQo+PiArCQlyZXR1cm4gU1lTX0FS
Q0hfVElNRU9VVDsKPj4gKwlyZXR1cm4gKHUzMl90KSB1a2FyY2hfdGltZV9uc2VjX3RvX21zZWMo
bnNyZXQpOwo+PiAgfQo+PiBkaWZmIC0tZ2l0IGEvc29ja2V0X2dsdWUuYyBiL3NvY2tldHMuYwo+
PiBzaW1pbGFyaXR5IGluZGV4IDYwJQo+PiByZW5hbWUgZnJvbSBzb2NrZXRfZ2x1ZS5jCj4+IHJl
bmFtZSB0byBzb2NrZXRzLmMKPj4gaW5kZXggZTdkYzMzYy4uYmRmMjFhZCAxMDA2NDQKPj4gLS0t
IGEvc29ja2V0X2dsdWUuYwo+PiArKysgYi9zb2NrZXRzLmMKPj4gQEAgLTEsMjAgKzEsNTAgQEAK
Pj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8KPj4gKy8qCj4+
ICsgKiBBdXRob3JzOiBTaGFyYW4gU2FudGhhbmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xhYi5l
dT4KPj4gKyAqCj4+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTksIE5FQyBMYWJvcmF0b3JpZXMgRXVy
b3BlIEdtYkgsIE5FQyBDb3Jwb3JhdGlvbi4KPj4gKyAqICAgICAgICAgICAgICAgICAgICAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KPj4gKyAqCj4+ICsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKPj4gKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwo+PiArICogYXJlIG1ldDoKPj4gKyAqCj4+ICsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+PiArICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgo+
PiArICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKPj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKPj4gKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCj4+ICsgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCj4+ICsgKiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQo+PiArICogICAgdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KPj4gKyAq
Cj4+ICsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKPj4gKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKPj4gKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFCj4+ICsgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFCj4+ICsgKiBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCj4+ICsgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgo+PiArICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCj4+ICsgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgo+PiArICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKPj4gKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
Cj4+ICsgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KPj4gKyAqCj4+ICsgKiBUSElTIEhF
QURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgo+PiArICov
Cj4+ICsKPj4gIC8qIG5ldHdvcmsgc3R1YiBjYWxscyAqLwo+PiAgI2luY2x1ZGUgPHN5cy90aW1l
Lmg+Cj4+ICAjaW5jbHVkZSA8dmZzY29yZS9maWxlLmg+Cj4+ICAjaW5jbHVkZSA8dWsvYWxsb2Mu
aD4KPj4gICNpbmNsdWRlIDx1ay9lc3NlbnRpYWxzLmg+Cj4+IC0jaW5jbHVkZSA8dWsvcHJpbnQu
aD4KPj4gICNpbmNsdWRlIDx1ay9lcnJwdHIuaD4KPj4gICNpbmNsdWRlIDxzdGRpby5oPgo+PiAg
I2luY2x1ZGUgPGVycm5vLmg+Cj4+ICAjaW5jbHVkZSA8bHdpcC9zb2NrZXRzLmg+Cj4+ICAtI2Rl
ZmluZSAgTkVUX0xJQl9OQU1FICAgICAgICAgICJsd2lwLXNvY2tldCIKPj4gLSNkZWZpbmUgIFNP
Q0tfTkVUX1NFVF9FUlJOTyhlcnJjb2RlKSBcCj4+IC0JCQlkbyB7XAo+PiAtCQkJCWVycm5vID0g
LShlcnJjb2RlKTtcCj4+IC0JCQl9IHdoaWxlKDApCj4+IC0KPj4gKyNkZWZpbmUgU09DS19ORVRf
U0VUX0VSUk5PKGVycmNvZGUpIFwKPj4gKwkoZXJybm8gPSAtKGVycmNvZGUpKQo+PiAgICBzdHJ1
Y3Qgc29ja19uZXRfZmlsZSB7Cj4+ICAJc3RydWN0IHZmc2NvcmVfZmlsZSB2ZnNjb3JlX2ZpbGU7
Cj4+IEBAIC0yNSw5ICs1NSwxMSBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBzb2NrX25ldF9maWxl
ICpzb2NrX25ldF9maWxlX2dldChpbnQgZmQpCj4+ICB7Cj4+ICAJc3RydWN0IHNvY2tfbmV0X2Zp
bGUgKmZpbGUgPSBOVUxMOwo+PiAgCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZvczsKPj4gKwo+PiAg
CWZvcyAgPSB2ZnNjb3JlX2dldF9maWxlKGZkKTsKPj4gLQlpZihOVUxMID09IGZvcykgewo+PiAt
CQl1a19wcmludGQoRExWTF9FUlIsImZhaWxlZCB3aXRoIGludmFsaWQgZGVzY3JpcHRvclxuIik7
Cj4+ICsJaWYgKCFmb3MpIHsKPj4gKwkJTFdJUF9ERUJVR0YoU09DS0VUU19ERUJVRywKPj4gKwkJ
CSAgICAoImZhaWxlZCB3aXRoIGludmFsaWQgZGVzY3JpcHRvclxuIikpOwo+PiAgCQlmaWxlID0g
RVJSMlBUUigtRUlOVkFMKTsKPj4gIAkJZ290byBFWElUOwo+PiAgCX0KPj4gQEAgLTQ2LDIwICs3
OCwyMiBAQCBzdGF0aWMgaW50IHNvY2tfZmRfYWxsb2Moc3RydWN0IHZmc2NvcmVfZm9wcyAqZm9w
cywgaW50IHNvY2tfZmQpCj4+ICAJdmZzX2ZkID0gdmZzY29yZV9hbGxvY19mZCgpOwo+PiAgCWlm
ICh2ZnNfZmQgPCAwKSB7Cj4+ICAJCXJldCA9IC1FTkZJTEU7Cj4+IC0JCXVrX3ByaW50ZChETFZM
X0VSUiwgImZhaWxlZCB0byBhbGxvY2F0ZSBzb2NrZXQgZmRcbiIpOwo+PiArCQlMV0lQX0RFQlVH
RihTT0NLRVRTX0RFQlVHLCAoImZhaWxlZCB0byBhbGxvY2F0ZSBzb2NrZXQgZmRcbiIpKTsKPj4g
IAkJZ290byBFWElUOwo+PiAgCX0KPj4gICAgCWZpbGUgPSB1a19tYWxsb2ModWtfYWxsb2NfZ2V0
X2RlZmF1bHQoKSwgc2l6ZW9mKCpmaWxlKSk7Cj4+ICAJaWYgKCFmaWxlKSB7Cj4+ICAJCXJldCA9
IC1FTk9NRU07Cj4+IC0JCXVrX3ByaW50ZChETFZMX0VSUiwgImZhaWxlZCB0byBhbGxvY2F0ZSBz
b2NrZXQgZmQgLSBubyBtZW1cbiIpOwo+PiArCQlMV0lQX0RFQlVHRihTT0NLRVRTX0RFQlVHLAo+
PiArCQkJICAgICgiZmFpbGVkIHRvIGFsbG9jYXRlIHNvY2tldCBmZDogbm8gbWVtXG4iKSk7Cj4+
ICAJCWdvdG8gVUtfTUVNX0FMTE9DX0VSUjsKPj4gIAl9Cj4+ICAJZmlsZS0+dmZzY29yZV9maWxl
LmZvcHMgPSBmb3BzOwo+PiAgCWZpbGUtPnNvY2tfZmQgPSBzb2NrX2ZkOwo+PiAtCXVrX3ByaW50
ZChETFZMX0VYVFJBLCBORVRfTElCX05BTUUiOmFsbG9jYXRlZCBzb2NrZXQgJWQgKCV4KVxuIiwK
Pj4gLQkJCWZpbGUtPnZmc2NvcmVfZmlsZS5mZCwgZmlsZS0+c29ja19mZCk7Cj4+ICsJTFdJUF9E
RUJVR0YoU09DS0VUU19ERUJVRywgKCJhbGxvY2F0ZWQgc29ja2V0ICVkICgleClcbiIsCj4+ICsJ
CQkJICAgIGZpbGUtPnZmc2NvcmVfZmlsZS5mZCwKPj4gKwkJCQkgICAgZmlsZS0+c29ja19mZCkp
Owo+PiAgCS8qIFN0b3JpbmcgdGhlIGluZm9ybWF0aW9uIHdpdGhpbiB0aGUgdmZzIHN0cnVjdHVy
ZSAqLwo+PiAgCXZmc2NvcmVfaW5zdGFsbF9mZCh2ZnNfZmQsICZmaWxlLT52ZnNjb3JlX2ZpbGUp
Owo+PiAgCXJldCA9IHZmc19mZDsKPj4gQEAgLTczLDEyICsxMDcsMTQgQEAgVUtfTUVNX0FMTE9D
X0VSUjoKPj4gICAgc3RhdGljIGludCBzb2NrX25ldF9jbG9zZShzdHJ1Y3QgdmZzY29yZV9maWxl
ICp2ZnNjb3JlX2ZpbGUpCj4+ICB7Cj4+IC0JaW50ICAgIHJldCA9IDA7Cj4+ICsJaW50IHJldCA9
IDA7Cj4+ICAJc3RydWN0IHNvY2tfbmV0X2ZpbGUgKmZpbGUgPSBOVUxMOwo+PiArCj4+ICAJZmls
ZSA9IF9fY29udGFpbmVyb2YodmZzY29yZV9maWxlLCBzdHJ1Y3Qgc29ja19uZXRfZmlsZSwgdmZz
Y29yZV9maWxlKTsKPj4gIC0JdWtfcHJpbnRkKERMVkxfRVhUUkEsIE5FVF9MSUJfTkFNRSI6IGNs
b3NlKCkgJWQgKCV4KVxuIiwKPj4gLQkJCWZpbGUtPnZmc2NvcmVfZmlsZS5mZCwgZmlsZS0+c29j
a19mZCk7Cj4+ICsJTFdJUF9ERUJVR0YoU09DS0VUU19ERUJVRywgKCJjbG9zZSAlZCAoJXgpXG4i
LAo+PiArCQkJCSAgICBmaWxlLT52ZnNjb3JlX2ZpbGUuZmQsCj4+ICsJCQkJICAgIGZpbGUtPnNv
Y2tfZmQpKTsKPj4gICAgCS8qIENsb3NlIGFuZCByZWxlYXNlIHRoZSBsd2lwIHNvY2tldCAqLwo+
PiAgCXJldCA9IGx3aXBfY2xvc2UoZmlsZS0+c29ja19mZCk7Cj4+IEBAIC04OSwxNSArMTI1LDE4
IEBAIHN0YXRpYyBpbnQgc29ja19uZXRfY2xvc2Uoc3RydWN0IHZmc2NvcmVfZmlsZSAqdmZzY29y
ZV9maWxlKQo+PiAgCXJldHVybiByZXQ7Cj4+ICB9Cj4+ICAtc3RhdGljIHNzaXplX3Qgc29ja19u
ZXRfd3JpdGUoc3RydWN0IHZmc2NvcmVfZmlsZSAqdmZzY29yZV9maWxlLCBjb25zdCB2b2lkICpi
dWYsCj4+IC0JCQkgICAgIHNpemVfdCBjb3VudCkKPj4gK3N0YXRpYyBzc2l6ZV90IHNvY2tfbmV0
X3dyaXRlKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKnZmc2NvcmVfZmlsZSwKPj4gKwkJCSAgICAgIGNv
bnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGNvdW50KQo+PiAgewo+PiAgCWludCByZXQgPSAwOwo+PiAg
CXN0cnVjdCBzb2NrX25ldF9maWxlICpmaWxlID0gTlVMTDsKPj4gKwo+PiAgCWZpbGUgPSBfX2Nv
bnRhaW5lcm9mKHZmc2NvcmVfZmlsZSwgc3RydWN0IHNvY2tfbmV0X2ZpbGUsCj4+IC0JCQkJdmZz
Y29yZV9maWxlKTsKPj4gLQl1a19wcmludGQoRExWTF9FWFRSQSwgTkVUX0xJQl9OQU1FIjogd3Jp
dGUgJWQgKCV4KTolc1xuIiwKPj4gLQkJCWZpbGUtPnZmc2NvcmVfZmlsZS5mZCwgZmlsZS0+c29j
a19mZCwgKGNoYXIgKikgYnVmKTsKPj4gKwkJCSAgICAgdmZzY29yZV9maWxlKTsKPj4gKwlMV0lQ
X0RFQlVHRihTT0NLRVRTX0RFQlVHLCAoIndyaXRlICVkICgleCk6JXNcbiIsCj4+ICsJCQkJICAg
IGZpbGUtPnZmc2NvcmVfZmlsZS5mZCwKPj4gKwkJCQkgICAgZmlsZS0+c29ja19mZCwKPj4gKwkJ
CQkgICAgKGNoYXIgKikgYnVmKSk7Cj4+ICAJcmV0ID0gbHdpcF93cml0ZShmaWxlLT5zb2NrX2Zk
LCBidWYsIGNvdW50KTsKPj4gIAlyZXR1cm4gcmV0Owo+PiAgfQo+PiBAQCAtMTA3LDEwICsxNDYs
MTMgQEAgc3RhdGljIHNzaXplX3Qgc29ja19uZXRfcmVhZChzdHJ1Y3QgdmZzY29yZV9maWxlICp2
ZnNjb3JlX2ZpbGUsIHZvaWQgKmJ1ZiwKPj4gIHsKPj4gIAlpbnQgcmV0ID0gMDsKPj4gIAlzdHJ1
Y3Qgc29ja19uZXRfZmlsZSAqZmlsZSA9IE5VTEw7Cj4+ICsKPj4gIAlmaWxlID0gX19jb250YWlu
ZXJvZih2ZnNjb3JlX2ZpbGUsIHN0cnVjdCBzb2NrX25ldF9maWxlLAo+PiAtCQkJCXZmc2NvcmVf
ZmlsZSk7Cj4+IC0JdWtfcHJpbnRkKERMVkxfRVhUUkEsIE5FVF9MSUJfTkFNRSI6IHdyaXRlICVk
ICgleCk6JXNcbiIsCj4+IC0JCQlmaWxlLT52ZnNjb3JlX2ZpbGUuZmQsIGZpbGUtPnNvY2tfZmQs
IChjaGFyICopIGJ1Zik7Cj4+ICsJCQkgICAgIHZmc2NvcmVfZmlsZSk7Cj4+ICsJTFdJUF9ERUJV
R0YoU09DS0VUU19ERUJVRywgKCJ3cml0ZSAlZCAoJXgpOiVzXG4iLAo+PiArCQkJCSAgICBmaWxl
LT52ZnNjb3JlX2ZpbGUuZmQsCj4+ICsJCQkJICAgIGZpbGUtPnNvY2tfZmQsCj4+ICsJCQkJICAg
IChjaGFyICopIGJ1ZikpOwo+PiAgCXJldCA9IGx3aXBfcmVhZChmaWxlLT5zb2NrX2ZkLCBidWYs
IGNvdW50KTsKPj4gIAlyZXR1cm4gcmV0Owo+PiAgfQo+PiBAQCAtMTI5LDE2ICsxNzEsMTkgQEAg
aW50IHNvY2tldChpbnQgZG9tYWluLCBpbnQgdHlwZSwgaW50IHByb3RvY29sKQo+PiAgICAJLyog
Q3JlYXRlIGx3aXBfc29ja2V0ICovCj4+ICAJc29ja19mZCA9IGx3aXBfc29ja2V0KGRvbWFpbiwg
dHlwZSwgcHJvdG9jb2wpOwo+PiAtCWlmKDAgPiBzb2NrX2ZkKSB7Cj4+IC0JCXVrX3ByaW50ZChE
TFZMX0VSUiwgImZhaWxlZCB0byBjcmVhdGUgc29ja2V0ICVkXG4iLCBlcnJubyk7Cj4+ICsJaWYg
KHNvY2tfZmQgPCAwKSB7Cj4+ICsJCUxXSVBfREVCVUdGKFNPQ0tFVFNfREVCVUcsICgiZmFpbGVk
IHRvIGNyZWF0ZSBzb2NrZXQgJWRcbiIsCj4+ICsJCQkJCSAgICBlcnJubykpOwo+PiAgCQlyZXQg
PSAtMTsKPj4gIAkJZ290byBFWElUOwo+PiAgCX0KPj4gICAgCS8qIEFsbG9jYXRlIHRoZSBmaWxl
IGRlc2NyaXB0b3IgKi8KPj4gIAl2ZnNfZmQgPSBzb2NrX2ZkX2FsbG9jKCZzb2NrX25ldF9mb3Bz
LCBzb2NrX2ZkKTsKPj4gLQlpZigwID4gdmZzX2ZkKSB7Cj4+IC0JCXVrX3ByaW50ZChETFZMX0VS
UiwgImZhaWxlZCB0byBhbGxvY2F0ZSBkZXNjcmlwdG9yICVkXG4iLCBlcnJubyk7Cj4+ICsJaWYg
KHZmc19mZCA8IDApIHsKPj4gKwkJTFdJUF9ERUJVR0YoU09DS0VUU19ERUJVRywKPj4gKwkJCSAg
ICAoImZhaWxlZCB0byBhbGxvY2F0ZSBkZXNjcmlwdG9yICVkXG4iLAo+PiArCQkJICAgICBlcnJu
bykpOwo+PiAgCQlyZXQgPSAtMTsKPj4gIAkJLyogU2V0dGluZyB0aGUgZXJybm8gKi8KPj4gIAkJ
U09DS19ORVRfU0VUX0VSUk5PKHZmc19mZCk7Cj4+IEBAIC0xNjAsMjggKzIwNSwzMSBAQCBpbnQg
YWNjZXB0KGludCBzLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsIHNvY2tsZW5fdCAqYWRkcmxlbikK
Pj4gIAlpbnQgcmV0ID0gMDsKPj4gIAlzdHJ1Y3Qgc29ja19uZXRfZmlsZSAqZmlsZTsKPj4gIAlp
bnQgc29ja19mZCwgdmZzX2ZkOwo+PiArCj4+ICAJZmlsZSA9IHNvY2tfbmV0X2ZpbGVfZ2V0KHMp
Owo+PiAtCWlmKFBUUklTRVJSKGZpbGUpKSB7Cj4+IC0JCXVrX3ByaW50ZChETFZMX0VSUiwgImZh
aWxlZCB0byBhY2NlcHQgaW5jb21pbmdpIGNvbm5lY3Rpb24gXG4iKTsKPj4gKwlpZiAoUFRSSVNF
UlIoZmlsZSkpIHsKPj4gKwkJTFdJUF9ERUJVR0YoU09DS0VUU19ERUJVRywKPj4gKwkJCSAgICAo
ImZhaWxlZCB0byBhY2NlcHQgaW5jb21pbmdpIGNvbm5lY3Rpb25cbiIpKTsKPj4gIAkJcmV0ID0g
LTE7Cj4+ICAJCS8qIFNldHRpbmcgdGhlIGVycm5vICovCj4+ICAJCVNPQ0tfTkVUX1NFVF9FUlJO
TyhQVFIyRVJSKGZpbGUpKTsKPj4gLQkgICAgICAgIGdvdG8gRVhJVDsKPj4gKwkJZ290byBFWElU
Owo+PiAgCX0KPj4gICAgCS8qIEFjY2VwdCBhbiBpbmNvbWluZyBjb25uZWN0aW9uICovCj4+ICAJ
c29ja19mZCA9IGx3aXBfYWNjZXB0KGZpbGUtPnNvY2tfZmQsIGFkZHIsIGFkZHJsZW4pOwo+PiAt
CWlmKDAgPiBzb2NrX2ZkKSB7Cj4+IC0JCXVrX3ByaW50ZChETFZMX0VSUiwgImZhaWxlZCB0byBh
Y2NlcHQgaW5jb21pbmcgY29ubmVjdGlvbiBcbiIpOwo+PiArCWlmIChzb2NrX2ZkIDwgMCkgewo+
PiArCQlMV0lQX0RFQlVHRihTT0NLRVRTX0RFQlVHLAo+PiArCQkJICAgICgiZmFpbGVkIHRvIGFj
Y2VwdCBpbmNvbWluZyBjb25uZWN0aW9uXG4iKSk7Cj4+ICAJCXJldCA9IC0xOwo+PiAgCQlnb3Rv
IEVYSVQ7Cj4+ICAJfQo+PiAgICAJLyogQWxsb2NhdGUgdGhlIGZpbGUgZGVzY3JpcHRvciBmb3Ig
dGhlIGFjY2VwdGVkIGNvbm5lY3Rpb24gKi8KPj4gIAl2ZnNfZmQgPSBzb2NrX2ZkX2FsbG9jKCZz
b2NrX25ldF9mb3BzLCBzb2NrX2ZkKTsKPj4gLQlpZigwID4gdmZzX2ZkKSB7Cj4+IC0JCXVrX3By
aW50ZChETFZMX0VSUiwgImZhaWxlZCB0byBhbGxvY2F0ZQlkZXNjcmlwdG9yIGZvciB0aGUiCj4+
IC0JCQkiYWNjZXB0ZWQgY29ubmVjdGlvbiBcbiIpOwo+PiArCWlmICh2ZnNfZmQgPCAwKSB7Cj4+
ICsJCUxXSVBfREVCVUdGKFNPQ0tFVFNfREVCVUcsCj4+ICsJCQkgICAgKCJmYWlsZWQgdG8gYWxs
b2NhdGUgZGVzY3JpcHRvciBmb3IgYWNjZXB0ZWQgY29ubmVjdGlvblxuIikpOwo+PiAgCQlyZXQg
PSAtMTsKPj4gIAkJLyogU2V0dGluZyB0aGUgZXJybm8gKi8KPj4gIAkJU09DS19ORVRfU0VUX0VS
Uk5PKHZmc19mZCk7Cj4+IEBAIC0yMDAsOSArMjQ4LDExIEBAIGludCBiaW5kKGludCBzLCBjb25z
dCBzdHJ1Y3Qgc29ja2FkZHIgKm5hbWUsIHNvY2tsZW5fdCBuYW1lbGVuKQo+PiAgewo+PiAgCWlu
dCByZXQgPSAwOwo+PiAgCXN0cnVjdCBzb2NrX25ldF9maWxlICpmaWxlID0gTlVMTDsKPj4gKwo+
PiAgCWZpbGUgPSBzb2NrX25ldF9maWxlX2dldChzKTsKPj4gLQlpZihQVFJJU0VSUihmaWxlKSkg
ewo+PiAtCQl1a19wcmludGQoRExWTF9FUlIsICJmYWlsZWQgdG8gaWRlbnRpZnkgdGhlIHNvY2tl
dCBkZXNjcmlwdG9yIFxuIik7Cj4+ICsJaWYgKFBUUklTRVJSKGZpbGUpKSB7Cj4+ICsJCUxXSVBf
REVCVUdGKFNPQ0tFVFNfREVCVUcsCj4+ICsJCQkgICAgKCJmYWlsZWQgdG8gaWRlbnRpZnkgc29j
a2V0IGRlc2NyaXB0b3JcbiIpKTsKPj4gIAkJcmV0ID0gLTE7Cj4+ICAJCS8qIFNldHRpbmcgdGhl
IGVycm5vICovCj4+ICAJCVNPQ0tfTkVUX1NFVF9FUlJOTyhQVFIyRVJSKGZpbGUpKTsKPj4gQEAg
LTIxMCw4ICsyNjAsOSBAQCBpbnQgYmluZChpbnQgcywgY29uc3Qgc3RydWN0IHNvY2thZGRyICpu
YW1lLCBzb2NrbGVuX3QgbmFtZWxlbikKPj4gIAl9Cj4+ICAJLyogQmluZCBhbiBpbmNvbWluZyBj
b25uZWN0aW9uICovCj4+ICAJcmV0ID0gbHdpcF9iaW5kKGZpbGUtPnNvY2tfZmQsIG5hbWUsIG5h
bWVsZW4pOwo+PiAtCWlmKDAgPiByZXQpIHsKPj4gLQkJdWtfcHJpbnRkKERMVkxfRVJSLCAiZmFp
bGVkIHRvIGJpbmQgd2l0aCB0aGUgc29ja2V0IFxuIik7Cj4+ICsJaWYgKHJldCA8IDApIHsKPj4g
KwkJTFdJUF9ERUJVR0YoU09DS0VUU19ERUJVRywKPj4gKwkJCSAgICAoImZhaWxlZCB0byBiaW5k
IHdpdGggc29ja2V0XG4iKSk7Cj4+ICAJCXJldCA9IC0xOwo+PiAgCQlnb3RvIEVYSVQ7Cj4+ICAJ
fQo+PiBAQCAtMjIzLDkgKzI3NCwxMSBAQCBpbnQgc2h1dGRvd24oaW50IHMsIGludCBob3cpCj4+
ICB7Cj4+ICAJaW50IHJldCA9IDA7Cj4+ICAJc3RydWN0IHNvY2tfbmV0X2ZpbGUgKmZpbGUgPSBO
VUxMOwo+PiArCj4+ICAJZmlsZSA9IHNvY2tfbmV0X2ZpbGVfZ2V0KHMpOwo+PiAtCWlmKFBUUklT
RVJSKGZpbGUpKSB7Cj4+IC0JCXVrX3ByaW50ZChETFZMX0VSUiwgImZhaWxlZCB0byBpZGVudGlm
eSB0aGUgc29ja2V0IGRlc2NyaXB0b3IgXG4iKTsKPj4gKwlpZiAoUFRSSVNFUlIoZmlsZSkpIHsK
Pj4gKwkJTFdJUF9ERUJVR0YoU09DS0VUU19ERUJVRywKPj4gKwkJCSAgICAoImZhaWxlZCB0byBp
ZGVudGlmeSBzb2NrZXQgZGVzY3JpcHRvclxuIikpOwo+PiAgCQlyZXQgPSAtMTsKPj4gIAkJLyog
U2V0dGluZyB0aGUgZXJybm8gKi8KPj4gIAkJU09DS19ORVRfU0VUX0VSUk5PKFBUUjJFUlIoZmls
ZSkpOwo+PiBAQCAtMjQxLDkgKzI5NCwxMCBAQCBpbnQgZ2V0cGVlcm5hbWUoaW50IHMsIHN0cnVj
dCBzb2NrYWRkciAqbmFtZSwgc29ja2xlbl90ICpuYW1lbGVuKQo+PiAgewo+PiAgCWludCByZXQg
PSAwOwo+PiAgCXN0cnVjdCBzb2NrX25ldF9maWxlICpmaWxlID0gTlVMTDsKPj4gKwo+PiAgCWZp
bGUgPSBzb2NrX25ldF9maWxlX2dldChzKTsKPj4gLQlpZihQVFJJU0VSUihmaWxlKSkgewo+PiAt
CQl1a19wcmludGQoRExWTF9FUlIsICJmYWlsZWQgdG8gaWRlbnRpZnkgdGhlIHNvY2tldFxuIik7
Cj4+ICsJaWYgKFBUUklTRVJSKGZpbGUpKSB7Cj4+ICsJCUxXSVBfREVCVUdGKFNPQ0tFVFNfREVC
VUcsICgiZmFpbGVkIHRvIGlkZW50aWZ5IHNvY2tldFxuIikpOwo+PiAgCQlyZXQgPSAtMTsKPj4g
IAkJU09DS19ORVRfU0VUX0VSUk5PKFBUUjJFUlIoZmlsZSkpOwo+PiAgCQlnb3RvIEVYSVQ7Cj4+
IEBAIC0yNTcsOSArMzExLDEwIEBAIGludCBnZXRzb2NrbmFtZShpbnQgcywgc3RydWN0IHNvY2th
ZGRyICpuYW1lLCBzb2NrbGVuX3QgKm5hbWVsZW4pCj4+ICB7Cj4+ICAJaW50IHJldCA9IDA7Cj4+
ICAJc3RydWN0IHNvY2tfbmV0X2ZpbGUgKmZpbGUgPSBOVUxMOwo+PiArCj4+ICAJZmlsZSA9IHNv
Y2tfbmV0X2ZpbGVfZ2V0KHMpOwo+PiAtCWlmKFBUUklTRVJSKGZpbGUpKSB7Cj4+IC0JCXVrX3By
aW50ZChETFZMX0VSUiwgImZhaWxlZCB0byBpZGVudGlmeSB0aGUgc29ja2V0XG4iKTsKPj4gKwlp
ZiAoUFRSSVNFUlIoZmlsZSkpIHsKPj4gKwkJTFdJUF9ERUJVR0YoU09DS0VUU19ERUJVRywgKCJm
YWlsZWQgdG8gaWRlbnRpZnkgc29ja2V0XG4iKSk7Cj4+ICAJCXJldCA9IC0xOwo+PiAgCQlTT0NL
X05FVF9TRVRfRVJSTk8oUFRSMkVSUihmaWxlKSk7Cj4+ICAJCWdvdG8gRVhJVDsKPj4gQEAgLTI3
Myw5ICszMjgsMTEgQEAgaW50IGdldHNvY2tvcHQoaW50IHMsIGludCBsZXZlbCwgaW50IG9wdG5h
bWUsIHZvaWQgKm9wdHZhbCwgc29ja2xlbl90ICpvcHRsZW4pCj4+ICB7Cj4+ICAJaW50IHJldCA9
IDA7Cj4+ICAJc3RydWN0IHNvY2tfbmV0X2ZpbGUgKmZpbGUgPSBOVUxMOwo+PiArCj4+ICAJZmls
ZSA9IHNvY2tfbmV0X2ZpbGVfZ2V0KHMpOwo+PiAtCWlmKFBUUklTRVJSKGZpbGUpKSB7Cj4+IC0J
CXVrX3ByaW50ZChETFZMX0VSUiwgImZhaWxlZCB0byBpZGVudGlmeSB0aGUgc29ja2V0IGRlc2Ny
aXB0b3IgXG4iKTsKPj4gKwlpZiAoUFRSSVNFUlIoZmlsZSkpIHsKPj4gKwkJTFdJUF9ERUJVR0Yo
U09DS0VUU19ERUJVRywKPj4gKwkJCSAgICAoImZhaWxlZCB0byBpZGVudGlmeSBzb2NrZXQgZGVz
Y3JpcHRvclxuIikpOwo+PiAgCQlyZXQgPSAtMTsKPj4gIAkJU09DS19ORVRfU0VUX0VSUk5PKFBU
UjJFUlIoZmlsZSkpOwo+PiAgCQlnb3RvIEVYSVQ7Cj4+IEBAIC0yODUsMTQgKzM0MiwxNiBAQCBF
WElUOgo+PiAgCXJldHVybiByZXQ7Cj4+ICB9Cj4+ICAtaW50IHNldHNvY2tvcHQgKGludCBzLCBp
bnQgbGV2ZWwsIGludCBvcHRuYW1lLCBjb25zdCB2b2lkICpvcHR2YWwsCj4+IC0JCXNvY2tsZW5f
dCBvcHRsZW4pCj4+ICtpbnQgc2V0c29ja29wdChpbnQgcywgaW50IGxldmVsLCBpbnQgb3B0bmFt
ZSwgY29uc3Qgdm9pZCAqb3B0dmFsLAo+PiArCSAgICAgICBzb2NrbGVuX3Qgb3B0bGVuKQo+PiAg
ewo+PiAgCWludCByZXQgPSAwOwo+PiAgCXN0cnVjdCBzb2NrX25ldF9maWxlICpmaWxlID0gTlVM
TDsKPj4gKwo+PiAgCWZpbGUgPSBzb2NrX25ldF9maWxlX2dldChzKTsKPj4gLQlpZihQVFJJU0VS
UihmaWxlKSkgewo+PiAtCQl1a19wcmludGQoRExWTF9FUlIsICJmYWlsZWQgdG8gaWRlbnRpZnkg
dGhlIHNvY2tldCBkZXNjcmlwdG9yIFxuIik7Cj4+ICsJaWYgKFBUUklTRVJSKGZpbGUpKSB7Cj4+
ICsJCUxXSVBfREVCVUdGKFNPQ0tFVFNfREVCVUcsCj4+ICsJCQkgICAgKCJmYWlsZWQgdG8gaWRl
bnRpZnkgc29ja2V0IGRlc2NyaXB0b3JcbiIpKTsKPj4gIAkJcmV0ID0gLTE7Cj4+ICAJCVNPQ0tf
TkVUX1NFVF9FUlJOTyhQVFIyRVJSKGZpbGUpKTsKPj4gIAkJZ290byBFWElUOwo+PiBAQCAtMzA2
LDkgKzM2NSwxMSBAQCBpbnQgY29ubmVjdChpbnQgcywgY29uc3Qgc3RydWN0IHNvY2thZGRyICpu
YW1lLCBzb2NrbGVuX3QgbmFtZWxlbikKPj4gIHsKPj4gIAlpbnQgcmV0ID0gMDsKPj4gIAlzdHJ1
Y3Qgc29ja19uZXRfZmlsZSAqZmlsZSA9IE5VTEw7Cj4+ICsKPj4gIAlmaWxlID0gc29ja19uZXRf
ZmlsZV9nZXQocyk7Cj4+IC0JaWYoUFRSSVNFUlIoZmlsZSkpIHsKPj4gLQkJdWtfcHJpbnRkKERM
VkxfRVJSLCAiZmFpbGVkIHRvIGlkZW50aWZ5IHRoZSBzb2NrZXQgZGVzY3JpcHRvciBcbiIpOwo+
PiArCWlmIChQVFJJU0VSUihmaWxlKSkgewo+PiArCQlMV0lQX0RFQlVHRihTT0NLRVRTX0RFQlVH
LAo+PiArCQkJICAgICgiZmFpbGVkIHRvIGlkZW50aWZ5IHNvY2tldCBkZXNjcmlwdG9yXG4iKSk7
Cj4+ICAJCXJldCA9IC0xOwo+PiAgCQlTT0NLX05FVF9TRVRfRVJSTk8oUFRSMkVSUihmaWxlKSk7
Cj4+ICAJCWdvdG8gRVhJVDsKPj4gQEAgLTMyMiw5ICszODMsMTEgQEAgaW50IGxpc3RlbihpbnQg
cywgaW50IGJhY2tsb2cpCj4+ICB7Cj4+ICAJaW50IHJldCA9IDA7Cj4+ICAJc3RydWN0IHNvY2tf
bmV0X2ZpbGUgKmZpbGUgPSBOVUxMOwo+PiArCj4+ICAJZmlsZSA9IHNvY2tfbmV0X2ZpbGVfZ2V0
KHMpOwo+PiAtCWlmKFBUUklTRVJSKGZpbGUpKSB7Cj4+IC0JCXVrX3ByaW50ZChETFZMX0VSUiwg
ImZhaWxlZCB0byBpZGVudGlmeSB0aGUgc29ja2V0IGRlc2NyaXB0b3IgXG4iKTsKPj4gKwlpZiAo
UFRSSVNFUlIoZmlsZSkpIHsKPj4gKwkJTFdJUF9ERUJVR0YoU09DS0VUU19ERUJVRywKPj4gKwkJ
CSAgICAoImZhaWxlZCB0byBpZGVudGlmeSBzb2NrZXQgZGVzY3JpcHRvclxuIikpOwo+PiAgCQly
ZXQgPSAtMTsKPj4gIAkJU09DS19ORVRfU0VUX0VSUk5PKFBUUjJFUlIoZmlsZSkpOwo+PiAgCQln
b3RvIEVYSVQ7Cj4+IEBAIC0zMzgsOSArNDAxLDExIEBAIGludCByZWN2KGludCBzLCB2b2lkICpt
ZW0sIHNpemVfdCBsZW4sIGludCBmbGFncykKPj4gIHsKPj4gIAlpbnQgcmV0ID0gMDsKPj4gIAlz
dHJ1Y3Qgc29ja19uZXRfZmlsZSAqZmlsZSA9IE5VTEw7Cj4+ICsKPj4gIAlmaWxlID0gc29ja19u
ZXRfZmlsZV9nZXQocyk7Cj4+IC0JaWYoUFRSSVNFUlIoZmlsZSkpIHsKPj4gLQkJdWtfcHJpbnRk
KERMVkxfRVJSLCAiZmFpbGVkIHRvIGlkZW50aWZ5IHRoZSBzb2NrZXQgZGVzY3JpcHRvciBcbiIp
Owo+PiArCWlmIChQVFJJU0VSUihmaWxlKSkgewo+PiArCQlMV0lQX0RFQlVHRihTT0NLRVRTX0RF
QlVHLAo+PiArCQkJICAgICgiZmFpbGVkIHRvIGlkZW50aWZ5IHNvY2tldCBkZXNjcmlwdG9yXG4i
KSk7Cj4+ICAJCXJldCA9IC0xOwo+PiAgCQlTT0NLX05FVF9TRVRfRVJSTk8oUFRSMkVSUihmaWxl
KSk7Cj4+ICAJCWdvdG8gRVhJVDsKPj4gQEAgLTM1NSw5ICs0MjAsMTEgQEAgaW50IHJlY3Zmcm9t
KGludCBzLCB2b2lkICptZW0sIHNpemVfdCBsZW4sIGludCBmbGFncywKPj4gIHsKPj4gIAlpbnQg
cmV0ID0gMDsKPj4gIAlzdHJ1Y3Qgc29ja19uZXRfZmlsZSAqZmlsZSA9IE5VTEw7Cj4+ICsKPj4g
IAlmaWxlID0gc29ja19uZXRfZmlsZV9nZXQocyk7Cj4+IC0JaWYoUFRSSVNFUlIoZmlsZSkpIHsK
Pj4gLQkJdWtfcHJpbnRkKERMVkxfRVJSLCAiZmFpbGVkIHRvIGlkZW50aWZ5IHRoZSBzb2NrZXQg
ZGVzY3JpcHRvciBcbiIpOwo+PiArCWlmIChQVFJJU0VSUihmaWxlKSkgewo+PiArCQlMV0lQX0RF
QlVHRihTT0NLRVRTX0RFQlVHLAo+PiArCQkJICAgICgiZmFpbGVkIHRvIGlkZW50aWZ5IHNvY2tl
dCBkZXNjcmlwdG9yXG4iKSk7Cj4+ICAJCXJldCA9IC0xOwo+PiAgCQlTT0NLX05FVF9TRVRfRVJS
Tk8oUFRSMkVSUihmaWxlKSk7Cj4+ICAJCWdvdG8gRVhJVDsKPj4gQEAgLTM3MSw5ICs0MzgsMTEg
QEAgaW50IHNlbmQoaW50IHMsIGNvbnN0IHZvaWQgKmRhdGFwdHIsIHNpemVfdCBzaXplLCBpbnQg
ZmxhZ3MpCj4+ICB7Cj4+ICAJaW50IHJldCA9IDA7Cj4+ICAJc3RydWN0IHNvY2tfbmV0X2ZpbGUg
KmZpbGUgPSBOVUxMOwo+PiArCj4+ICAJZmlsZSA9IHNvY2tfbmV0X2ZpbGVfZ2V0KHMpOwo+PiAt
CWlmKFBUUklTRVJSKGZpbGUpKSB7Cj4+IC0JCXVrX3ByaW50ZChETFZMX0VSUiwgImZhaWxlZCB0
byBpZGVudGlmeSB0aGUgc29ja2V0IGRlc2NyaXB0b3IgXG4iKTsKPj4gKwlpZiAoUFRSSVNFUlIo
ZmlsZSkpIHsKPj4gKwkJTFdJUF9ERUJVR0YoU09DS0VUU19ERUJVRywKPj4gKwkJCSAgICAoImZh
aWxlZCB0byBpZGVudGlmeSBzb2NrZXQgZGVzY3JpcHRvclxuIikpOwo+PiAgCQlyZXQgPSAtMTsK
Pj4gIAkJU09DS19ORVRfU0VUX0VSUk5PKFBUUjJFUlIoZmlsZSkpOwo+PiAgCQlnb3RvIEVYSVQ7
Cj4+IEBAIC0zODcsOSArNDU2LDExIEBAIGludCBzZW5kbXNnKGludCBzLCBjb25zdCBzdHJ1Y3Qg
bXNnaGRyICptZXNzYWdlLCBpbnQgZmxhZ3MpCj4+ICB7Cj4+ICAJaW50IHJldCA9IDA7Cj4+ICAJ
c3RydWN0IHNvY2tfbmV0X2ZpbGUgKmZpbGUgPSBOVUxMOwo+PiArCj4+ICAJZmlsZSA9IHNvY2tf
bmV0X2ZpbGVfZ2V0KHMpOwo+PiAtCWlmKFBUUklTRVJSKGZpbGUpKSB7Cj4+IC0JCXVrX3ByaW50
ZChETFZMX0VSUiwgImZhaWxlZCB0byBpZGVudGlmeSB0aGUgc29ja2V0IGRlc2NyaXB0b3IgXG4i
KTsKPj4gKwlpZiAoUFRSSVNFUlIoZmlsZSkpIHsKPj4gKwkJTFdJUF9ERUJVR0YoU09DS0VUU19E
RUJVRywKPj4gKwkJCSAgICAoImZhaWxlZCB0byBpZGVudGlmeSBzb2NrZXQgZGVzY3JpcHRvclxu
IikpOwo+PiAgCQlyZXQgPSAtMTsKPj4gIAkJU09DS19ORVRfU0VUX0VSUk5PKFBUUjJFUlIoZmls
ZSkpOwo+PiAgCQlnb3RvIEVYSVQ7Cj4+IEBAIC00MDQsOSArNDc1LDExIEBAIGludCBzZW5kdG8o
aW50IHMsIGNvbnN0IHZvaWQgKmRhdGFwdHIsIHNpemVfdCBzaXplLCBpbnQgZmxhZ3MsCj4+ICB7
Cj4+ICAJaW50IHJldCA9IDA7Cj4+ICAJc3RydWN0IHNvY2tfbmV0X2ZpbGUgKmZpbGUgPSBOVUxM
Owo+PiArCj4+ICAJZmlsZSA9IHNvY2tfbmV0X2ZpbGVfZ2V0KHMpOwo+PiAtCWlmKFBUUklTRVJS
KGZpbGUpKSB7Cj4+IC0JCXVrX3ByaW50ZChETFZMX0VSUiwgImZhaWxlZCB0byBpZGVudGlmeSB0
aGUgc29ja2V0IGRlc2NyaXB0b3IgXG4iKTsKPj4gKwlpZiAoUFRSSVNFUlIoZmlsZSkpIHsKPj4g
KwkJTFdJUF9ERUJVR0YoU09DS0VUU19ERUJVRywKPj4gKwkJCSAgICAoImZhaWxlZCB0byBpZGVu
dGlmeSBzb2NrZXQgZGVzY3JpcHRvclxuIikpOwo+PiAgCQlyZXQgPSAtMTsKPj4gIAkJU09DS19O
RVRfU0VUX0VSUk5PKFBUUjJFUlIoZmlsZSkpOwo+PiAgCQlnb3RvIEVYSVQ7Cj4+IEBAIC00MTUs
MTEgKzQ4OCwzIEBAIGludCBzZW5kdG8oaW50IHMsIGNvbnN0IHZvaWQgKmRhdGFwdHIsIHNpemVf
dCBzaXplLCBpbnQgZmxhZ3MsCj4+ICBFWElUOgo+PiAgCXJldHVybiByZXQ7Cj4+ICB9Cj4+IC0K
Pj4gLWludCBzZWxlY3QoaW50IG1heGZkcDEsIGZkX3NldCAqcmVhZHNldCwgZmRfc2V0ICp3cml0
ZXNldCwgZmRfc2V0Cj4+IC0JCSpleGNlcHRzZXQsIHN0cnVjdCB0aW1ldmFsICp0aW1lb3V0KQo+
PiAtewo+PiAtCWludCByZXQgPSAtMTsKPj4gLQlTT0NLX05FVF9TRVRfRVJSTk8oLUVOT1RTVVAp
Owo+PiAtCXJldHVybiByZXQ7Cj4+IC19Cj4+IGRpZmYgLS1naXQgYS90aHJlYWRzLmMgYi90aHJl
YWRzLmMKPj4gaW5kZXggMWU2YmU0ZC4uM2VjMDZmYSAxMDA2NDQKPj4gLS0tIGEvdGhyZWFkcy5j
Cj4+ICsrKyBiL3RocmVhZHMuYwo+PiBAQCAtMSwyMyArMSw1OSBAQAo+PiArLyogU1BEWC1MaWNl
bnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLwo+PiArLyoKPj4gKyAqIENvcHlyaWdodCAo
YykgMjAxOSwgTkVDIExhYm9yYXRvcmllcyBFdXJvcGUgR21iSCwgTkVDIENvcnBvcmF0aW9uLgo+
PiArICogICAgICAgICAgICAgICAgICAgICBBbGwgcmlnaHRzIHJlc2VydmVkLgo+PiArICoKPj4g
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAo+PiArICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCj4+ICsgKiBhcmUgbWV0Ogo+PiArICoKPj4g
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Cj4+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCj4+ICsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAo+PiArICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQo+PiArICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KPj4gKyAqIDMuIE5laXRoZXIgdGhlIG5h
bWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKPj4gKyAqICAg
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCj4+ICsgKiAgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgo+PiArICoKPj4gKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgo+
PiArICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQo+PiArICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKPj4gKyAqIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBD
T05UUklCVVRPUlMgQkUKPj4gKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKPj4gKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCj4+ICsg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKPj4gKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCj4+ICsgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQo+PiArICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKPj4gKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgo+PiArICoKPj4gKyAqIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9S
IE1PRElGSUVEIElOIEFOWSBXQVkuCj4+ICsgKi8KPj4gKwo+PiAgI2luY2x1ZGUgPHVrL2FyY2gv
bGltaXRzLmg+Cj4+ICAjaW5jbHVkZSA8dWsvc2NoZWQuaD4KPj4gICNpbmNsdWRlIDx1ay90aHJl
YWQuaD4KPj4gICNpbmNsdWRlIDx1ay9wcmludC5oPgo+PiAgI2luY2x1ZGUgPHVrL2Fzc2VydC5o
Pgo+PiAgI2luY2x1ZGUgPGx3aXAvc3lzLmg+Cj4+ICsjaW5jbHVkZSA8dWsvZXNzZW50aWFscy5o
Pgo+PiAgLS8qIFN0YXJ0cyBhIG5ldyB0aHJlYWQgd2l0aCBwcmlvcml0eSAicHJpbyIgdGhhdCB3
aWxsIGJlZ2luIGl0cyBleGVjdXRpb24gaW4gdGhlCj4+ICsvKioKPj4gKyAqIFN0YXJ0cyBhIG5l
dyB0aHJlYWQgd2l0aCBwcmlvcml0eSAicHJpbyIgdGhhdCB3aWxsIGJlZ2luIGl0cyBleGVjdXRp
b24gaW4gdGhlCj4+ICAgKiBmdW5jdGlvbiAidGhyZWFkKCkiLiBUaGUgImFyZyIgYXJndW1lbnQg
d2lsbCBiZSBwYXNzZWQgYXMgYW4gYXJndW1lbnQgdG8gdGhlCj4+ICAgKiB0aHJlYWQoKSBmdW5j
dGlvbi4gVGhlIGlkIG9mIHRoZSBuZXcgdGhyZWFkIGlzIHJldHVybmVkLiBCb3RoIHRoZSBpZCBh
bmQKPj4gLSAqIHRoZSBwcmlvcml0eSBhcmUgc3lzdGVtIGRlcGVuZGVudC4gKi8KPj4gKyAqIHRo
ZSBwcmlvcml0eSBhcmUgc3lzdGVtIGRlcGVuZGVudC4KPj4gKyAqLwo+PiAgc3lzX3RocmVhZF90
IHN5c190aHJlYWRfbmV3KGNvbnN0IGNoYXIgKm5hbWUsIGx3aXBfdGhyZWFkX2ZuIHRocmVhZCwg
dm9pZCAqYXJnLAo+PiAtCQkJCWludCBzdGFja3NpemUsIGludCBwcmlvKQo+PiArCQkJICAgIGlu
dCBzdGFja3NpemUsIGludCBwcmlvIF9fdW51c2VkKQo+PiAgewo+PiAgCXN0cnVjdCB1a190aHJl
YWQgKnQ7Cj4+IC0JaWYgKHN0YWNrc2l6ZSA+IF9fU1RBQ0tfU0laRSkgewo+PiAtCQl1a19wcmlu
dGQoRExWTF9DUklULCAiQ2FuJ3QgY3JlYXRlIGx3SVAgdGhyZWFkOiBzdGFjayBzaXplICV1IGlz
IHRvbyBsYXJnZSAoPiAldSlcbiIsCj4+IC0JCQkJCXN0YWNrc2l6ZSwgX19TVEFDS19TSVpFKTsK
Pj4gLQkJVUtfQ1JBU0goIkR5aW5nXG4iKTsKPj4gKwo+PiArCWlmIChzdGFja3NpemUgPiAoX19z
c3opIF9fU1RBQ0tfU0laRSkgewo+PiArCQlVS19DUkFTSCgiQ2FuJ3QgY3JlYXRlIGx3SVAgdGhy
ZWFkOiBzdGFjayBzaXplICV1IGlzIHRvbyBsYXJnZSAoPiAlbGx1KS4gRHlpbmcuLi5cbiIsCj4+
ICsJCQkgc3RhY2tzaXplLCBfX1NUQUNLX1NJWkUpOwo+PiAgCX0KPj4gLQl0ID0gdWtfdGhyZWFk
X2NyZWF0ZSgoY2hhciAqKSBuYW1lLCB0aHJlYWQsIGFyZyk7Cj4+ICsJdCA9IHVrX3RocmVhZF9j
cmVhdGUobmFtZSwgdGhyZWFkLCBhcmcpOwo+PiAgCXJldHVybiB0Owo+PiAgfQo+PiBkaWZmIC0t
Z2l0IGEvdGltZS5jIGIvdGltZS5jCj4+IGluZGV4IGNhNmJlOGYuLmY2YjEwNTAgMTAwNjQ0Cj4+
IC0tLSBhL3RpbWUuYwo+PiArKysgYi90aW1lLmMKPj4gQEAgLTEsMyArMSwzNiBAQAo+PiArLyog
U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLwo+PiArLyoKPj4gKyAqIENv
cHlyaWdodCAoYykgMjAxOSwgTkVDIExhYm9yYXRvcmllcyBFdXJvcGUgR21iSCwgTkVDIENvcnBv
cmF0aW9uLgo+PiArICogICAgICAgICAgICAgICAgICAgICBBbGwgcmlnaHRzIHJlc2VydmVkLgo+
PiArICoKPj4gKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAo+PiArICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCj4+ICsgKiBhcmUgbWV0Ogo+
PiArICoKPj4gKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Cj4+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCj4+ICsgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAo+
PiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQo+PiArICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KPj4gKyAqIDMuIE5laXRo
ZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMK
Pj4gKyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCj4+ICsgKiAgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgo+PiArICoKPj4gKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMg
IkFTIElTIgo+PiArICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQo+PiArICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UK
Pj4gKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhP
TERFUiBPUiBDT05UUklCVVRPUlMgQkUKPj4gKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKPj4gKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCj4+ICsgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKPj4gKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCj4+ICsgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQo+PiArICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKPj4gKyAqIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgo+PiArICoKPj4gKyAqIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhU
UkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCj4+ICsgKi8KPj4gKwo+PiAgI2luY2x1ZGUg
PHVrL2FyY2gvdGltZS5oPgo+PiAgI2luY2x1ZGUgPHVrL3BsYXQvdGltZS5oPgo+PiAgI2luY2x1
ZGUgPGx3aXAvc3lzLmg+CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVu
cHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZv
L21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Feb 11 18:11:22 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 11 Feb 2019 18:11:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gtG37-0007Cw-MG; Mon, 11 Feb 2019 18:11:21 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=ktH6=QS=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1gtG36-0007Cr-GA
 for minios-devel@lists.xen.org; Mon, 11 Feb 2019 18:11:20 +0000
X-Inumbo-ID: 6c8aa08e-2e28-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 6c8aa08e-2e28-11e9-bc90-bc764e045a96;
 Mon, 11 Feb 2019 18:11:17 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id DBA2FF205A;
 Mon, 11 Feb 2019 19:11:15 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id ioZh7OhGx2OU; Mon, 11 Feb 2019 19:11:15 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id A6A6DF2048
 for <minios-devel@lists.xen.org>; Mon, 11 Feb 2019 19:11:13 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 11 Feb 2019 19:11:13
 +0100
To: Simon Kuenzer <simon.kuenzer@neclab.eu>
References: <20190207230035.29861-1-simon.kuenzer@neclab.eu>
 <20190207230035.29861-4-simon.kuenzer@neclab.eu>
 <d5274f8f-695e-65da-6f94-8a9473e81efc@neclab.eu>
 <1B1F3ACB-5888-4553-AADD-25CFB1C58DA9@neclab.eu>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <00d63ed6-6afe-6b67-30c5-45d324f03deb@neclab.eu>
Date: Mon, 11 Feb 2019 19:11:13 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <1B1F3ACB-5888-4553-AADD-25CFB1C58DA9@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT/LIBLWIP PATCH 3/5] Netif driver for
 libuknetdev devices
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gU2ltb24sCgpQbGVhc2UgZmluZCB0aGUgY29tbWVudCBpbmxpbmUuCgpSZXZpZXdlZC1i
eTogU2hhcmFuIFNhbnRoYW5hbSA8c2hhcmFuLnNhbnRoYW5hbUBuZWNsYWIuZXU+CgpUaGFua3Mg
JiBSZWdhcmRzClNoYXJhbgoKT24gMi8xMS8xOSA3OjAyIFBNLCBTaW1vbiBLdWVuemVyIHdyb3Rl
Ogo+IEhleSBTaGFyYW4sCj4gCj4gVGhhbmtzIGZvciBsb29raW5nIGF0IHRoaXMhCj4gCj4+IE9u
IDExLiBGZWIgMjAxOSwgYXQgMTg6NDIsIFNoYXJhbiBTYW50aGFuYW0gPFNoYXJhbi5TYW50aGFu
YW1AbmVjbGFiLmV1PiB3cm90ZToKPj4KPj4gSGVsbG8gU2ltb24sCj4+Cj4+IFBsZWFzZSBmaW5k
IHRoZSByZXZpZXcgY29tbWVudHMgaW5saW5lLgo+Pgo+Pgo+PiBUaGFua3MgJiBSZWdhcmRzCj4+
IFNoYXJhbgo+Pgo+PiBPbiAyLzgvMTkgMTI6MDAgQU0sIFNpbW9uIEt1ZW56ZXIgd3JvdGU6Cj4+
PiBJbnRyb2R1Y2VzIGEgbmV0aWYgZHJpdmVyIGZvciBsaWJ1a25ldGRldiBkZXZpY2VzLiBQYWNr
ZXQgYnVmZmVycyBhcmUKPj4+IGFsbG9jYXRlZCBvbiB0aGUgaGVhcCBmb3Igbm93LiBSZWNlaXZl
IGludGVycnVwdHMgYXJlIHN1cHBvcnRlZCBhbmQKPj4+IGVuYWJsZWQgd2hlbiBsd0lQIGlzIG9w
ZXJhdGVkIGluICJ0aHJlYWRlZCIgbW9kZS4gWmVyby1jb3B5IHJlY2VpdmUgaXMKPj4+IGltcGxl
bWVudGVkIHdpdGggcGFja2V0IGJ1ZmZlcnMgaGF2aW5nIHR3byBwZXJzb25hbGl0aWVzOiBwYnVm
IGFuZCBuZXRidWYuCj4+PiBTaWduZWQtb2ZmLWJ5OiBTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVu
emVyQG5lY2xhYi5ldT4KPj4+IC0tLQo+Pj4gICBDb25maWcudWsgICAgICAgICAgICAgICAgfCAg
MTcgKysKPj4+ICAgTWFrZWZpbGUudWsgICAgICAgICAgICAgIHwgICAyICsKPj4+ICAgaW5jbHVk
ZS9uZXRpZi91a25ldGRldi5oIHwgIDgwICsrKysrCj4+PiAgIG5ldGJ1Zi5jICAgICAgICAgICAg
ICAgICB8IDEwNCArKysrKysrCj4+PiAgIG5ldGJ1Zi5oICAgICAgICAgICAgICAgICB8IDEwNyAr
KysrKysrCj4+PiAgIHVrbmV0ZGV2LmMgICAgICAgICAgICAgICB8IDYxMSArKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysKPj4+ICAgNiBmaWxlcyBjaGFuZ2VkLCA5MjEgaW5z
ZXJ0aW9ucygrKQo+Pj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9uZXRpZi91a25ldGRl
di5oCj4+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBuZXRidWYuYwo+Pj4gICBjcmVhdGUgbW9kZSAx
MDA2NDQgbmV0YnVmLmgKPj4+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IHVrbmV0ZGV2LmMKPj4+IGRp
ZmYgLS1naXQgYS9Db25maWcudWsgYi9Db25maWcudWsKPj4+IGluZGV4IGRjZTU2MDcuLjIzODEz
ZGUgMTAwNjQ0Cj4+PiAtLS0gYS9Db25maWcudWsKPj4+ICsrKyBiL0NvbmZpZy51awo+Pj4gQEAg
LTcsNiArNywyMyBAQCBtZW51Y29uZmlnIExJQkxXSVAKPj4+ICAgCXNlbGVjdCBIQVZFX05XX1NU
QUNLCj4+PiAgICAgaWYgTElCTFdJUAo+Pj4gK21lbnUgIk5ldGlmIGRyaXZlcnMiCj4+PiArY29u
ZmlnIExXSVBfVUtORVRERVYKPj4+ICsJYm9vbCAiVW5pa3JhZnQgTmV0ZGV2IEV0aGVybmV0IChs
aWJ1a25ldGRldikiCj4+PiArCWRlZmF1bHQgeQo+Pj4gKwlzZWxlY3QgTElCVUtORVRERVYKPj4+
ICsJc2VsZWN0IExJQlVLTkVUREVWX0RJU1BBVENIRVJUSFJFQURTIGlmIExXSVBfVEhSRUFEUwo+
Pj4gKwloZWxwCj4+PiArCQlBIGdlbmVyaWMgZHJpdmVyIHRoYXQgb3BlcmF0ZXMgbmV0d29yayBk
cml2ZXJzIHRocm91Z2gKPj4+ICsJCWxpYnVrbmV0ZGV2IEFQSS4KPj4+ICsJCU5vdGU6IFdoZW4g
bHdJUCBpcyBjb25maWd1cmVkIHdpdGggbWFpbmxvb3AgbW9kZSwgcmVjZWl2ZQo+Pj4gKwkJaW50
ZXJydXB0cyBhcmUgbm90IGVuYWJsZWQgYnkgdGhpcyBkcml2ZXIgKHRoZXJlIGlzIGFsc28gbm8K
Pj4+ICsJCXJlY2VpdmUgaW50ZXJydXB0IGhhbmRsZXIgcmVnaXN0ZXJlZCkuCj4+PiArCQlJbiBj
YXNlIHRocmVhZGVkIG1vZGUgaXMgc2VsZWN0ZWQgYW5kIHRoZSB1bmRlcmx5aW5nIGRldmljZQo+
Pj4gKwkJZHJpdmVyIGRvZXMgbm90IHN1cHBvcnQgcmVjZWl2ZSBpbnRlcnJ1cHRzIHRoZSBuZXR3
b3JrCj4+PiArCQlpbnRlcmZhY2VzIGhhdmUgdG8gYmUgcG9sbGVkIG1hbnVhbGx5ICh1a25ldGRl
dl9wb2xsKCkpLgo+Pj4gK2VuZG1lbnUKPj4+ICsKPj4+ICAgY2hvaWNlCj4+PiAgIAlwcm9tcHQg
Ik9wZXJhdGlvbiBtb2RlIgo+Pj4gICAJZGVmYXVsdCBMV0lQX1RIUkVBRFMKPj4+IGRpZmYgLS1n
aXQgYS9NYWtlZmlsZS51ayBiL01ha2VmaWxlLnVrCj4+PiBpbmRleCBhZTNmYmVhLi5lN2I3Y2M2
IDEwMDY0NAo+Pj4gLS0tIGEvTWFrZWZpbGUudWsKPj4+ICsrKyBiL01ha2VmaWxlLnVrCj4+PiBA
QCAtMTExLDYgKzExMSw4IEBAIExJQkxXSVBfU1JDUy0kKENPTkZJR19MV0lQX1NPQ0tFVCkgKz0g
JChMSUJMV0lQX0VYVFJBQ1RFRCkvYXBpL3NvY2tldHMuYwo+Pj4gICAjIE5FVElGcwo+Pj4gICAj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIwo+Pj4gICBMSUJMV0lQX1NSQ1MteSArPSAkKExJQkxXSVBf
RVhUUkFDVEVEKS9uZXRpZi9ldGhlcm5ldC5jCj4+PiArTElCTFdJUF9TUkNTLSQoQ09ORklHX0xX
SVBfVUtORVRERVYpICs9ICQoTElCTFdJUF9CQVNFKS9uZXRidWYuY3x1bmlrcmFmdAo+Pj4gK0xJ
QkxXSVBfU1JDUy0kKENPTkZJR19MV0lQX1VLTkVUREVWKSArPSAkKExJQkxXSVBfQkFTRSkvdWtu
ZXRkZXYuY3x1bmlrcmFmdAo+Pj4gICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCj4+PiAgICMg
SVB2NAo+Pj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0aWYvdWtuZXRkZXYuaCBiL2luY2x1ZGUv
bmV0aWYvdWtuZXRkZXYuaAo+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4+IGluZGV4IDAwMDAw
MDAuLjc3YWFhNmQKPj4+IC0tLSAvZGV2L251bGwKPj4+ICsrKyBiL2luY2x1ZGUvbmV0aWYvdWtu
ZXRkZXYuaAo+Pj4gQEAgLTAsMCArMSw4MCBAQAo+Pj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlm
aWVyOiBCU0QtMy1DbGF1c2UgKi8KPj4+ICsvKgo+Pj4gKyAqIEF1dGhvcnM6IFNpbW9uIEt1ZW56
ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1Pgo+Pj4gKyAqCj4+PiArICogQ29weXJpZ2h0IChj
KSAyMDE5LCBORUMgTGFib3JhdG9yaWVzIEV1cm9wZSBHbWJILCBORUMgQ29ycG9yYXRpb24uCj4+
PiArICogICAgICAgICAgICAgICAgICAgICBBbGwgcmlnaHRzIHJlc2VydmVkLgo+Pj4gKyAqCj4+
PiArICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Cj4+PiArICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCj4+PiArICogYXJlIG1ldDoKPj4+ICsg
Kgo+Pj4gKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Cj4+PiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgo+Pj4gKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cj4+
PiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQo+Pj4gKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCj4+PiArICogMy4gTmVp
dGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0
cwo+Pj4gKyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCj4+PiArICogICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KPj4+ICsgKgo+Pj4gKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMgIkFTIElTIgo+Pj4gKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKPj4+ICsgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRQo+Pj4gKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKPj4+ICsgKiBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCj4+PiAr
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKPj4+ICsgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKPj4+ICsgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgo+Pj4gKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCj4+PiArICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKPj4+
ICsgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KPj4+ICsgKgo+Pj4gKyAqIFRISVMgSEVB
REVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCj4+PiArICov
Cj4+PiArCj4+PiArI2lmbmRlZiBfTFdJUF9VS05FVERFVl8KPj4+ICsjZGVmaW5lIF9MV0lQX1VL
TkVUREVWXwo+Pj4gKwo+Pj4gKyNpbmNsdWRlIDx1ay9jb25maWcuaD4KPj4+ICsjaW5jbHVkZSAi
bHdpcC9vcHQuaCIKPj4+ICsKPj4+ICsjaWYgQ09ORklHX0xXSVBfVUtORVRERVYgLyogZG8gbm90
IGRlZmluZSBhbnl0aGluZyBpZiBub3QgY29uZmlndXJlZCBmb3IgdXNlICovCj4+PiArCj4+PiAr
I2luY2x1ZGUgImx3aXAvbmV0aWYuaCIKPj4+ICsjaW5jbHVkZSAibHdpcC9pcF9hZGRyLmgiCj4+
PiArI2luY2x1ZGUgIm5ldGlmL2V0aGVybmV0LmgiCj4+PiArI2luY2x1ZGUgPHVrL25ldGRldi5o
Pgo+Pj4gKwo+Pj4gKyNpZmRlZiBfX2NwbHVzcGx1cwo+Pj4gK2V4dGVybiAiQyIgewo+Pj4gKyNl
bmRpZgo+Pj4gKwo+Pj4gKy8qIENvbmZpZ3VyZXMgYW5kIGJyaW5ncyB1cCBuZXQgZGV2aWNlICov
Cj4+PiArZXJyX3QgdWtuZXRkZXZfaW5pdChzdHJ1Y3QgbmV0aWYgKm5mKTsKPj4+ICsKPj4+ICsv
Kgo+Pj4gKyAqIE5vdGU6IFdoZW4gdGhyZWFkaW5nIG1vZGUgaXMgZW5hYmxlZCwgb25seSB1a25l
dGRldiBuZXRpZnMgdGhhdCBkbyBub3QKPj4+ICsgKiBzdXBwb3J0IHJlY2VpdmUgaW50ZXJydXB0
cyBzaG91bGQgYmUgcG9sbGVkIGZvciBwYWNrZXRzLgo+Pj4gKyAqLwo+Pj4gK3ZvaWQgdWtuZXRk
ZXZfcG9sbChzdHJ1Y3QgbmV0aWYgKm5mKTsKPj4+ICsKPj4+ICsjaWZkZWYgQ09ORklHX0xXSVBf
Tk9USFJFQURTCj4+PiArdm9pZCB1a25ldGRldl9wb2xsX2FsbCh2b2lkKTsKPj4+ICsjZW5kaWYg
LyogQ09ORklHX0xXSVBfTk9USFJFQURTICovCj4+PiArCj4+PiArc3RydWN0IG5ldGlmICp1a25l
dGRldl9hZGRpZihzdHJ1Y3QgdWtfbmV0ZGV2ICpuCj4+PiArI2lmIExXSVBfSVBWNAo+Pj4gKwkJ
CSAgICAgLAo+Pj4gKwkJCSAgICAgY29uc3QgaXA0X2FkZHJfdCAqaXBhZGRyLAo+Pj4gKwkJCSAg
ICAgY29uc3QgaXA0X2FkZHJfdCAqbmV0bWFzaywKPj4+ICsJCQkgICAgIGNvbnN0IGlwNF9hZGRy
X3QgKmd3Cj4+PiArI2VuZGlmIC8qIExXSVBfSVBWNCAqLwo+Pj4gKwkpOwo+Pj4gKwo+Pj4gKyNp
ZmRlZiBfX2NwbHVzcGx1cwo+Pj4gK30KPj4+ICsjZW5kaWYKPj4+ICsKPj4+ICsjZW5kaWYgLyog
Q09ORklHX0xXSVBfVUtORVRERVYgKi8KPj4+ICsjZW5kaWYgLyogX0xXSVBfTkVUREVWXyAqLwo+
Pj4gZGlmZiAtLWdpdCBhL25ldGJ1Zi5jIGIvbmV0YnVmLmMKPj4+IG5ldyBmaWxlIG1vZGUgMTAw
NjQ0Cj4+PiBpbmRleCAwMDAwMDAwLi40ODc4Zjc0Cj4+PiAtLS0gL2Rldi9udWxsCj4+PiArKysg
Yi9uZXRidWYuYwo+Pj4gQEAgLTAsMCArMSwxMDQgQEAKPj4+ICsvKiBTUERYLUxpY2Vuc2UtSWRl
bnRpZmllcjogQlNELTMtQ2xhdXNlICovCj4+PiArLyoKPj4+ICsgKiBBdXRob3JzOiBTaW1vbiBL
dWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4KPj4+ICsgKgo+Pj4gKyAqIENvcHlyaWdo
dCAoYykgMjAxOSwgTkVDIExhYm9yYXRvcmllcyBFdXJvcGUgR21iSCwgTkVDIENvcnBvcmF0aW9u
Lgo+Pj4gKyAqICAgICAgICAgICAgICAgICAgICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KPj4+ICsg
Kgo+Pj4gKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAo+Pj4gKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwo+Pj4gKyAqIGFyZSBtZXQ6Cj4+
PiArICoKPj4+ICsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+Pj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KPj4+ICsgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAo+Pj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKPj4+ICsgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgo+Pj4gKyAqIDMu
IE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKPj4+ICsgKiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQo+Pj4gKyAqICAgIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCj4+PiArICoKPj4+ICsgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTICJBUyBJUyIKPj4+ICsgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCj4+PiArICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UKPj4+ICsgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFCj4+PiArICogTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgo+
Pj4gKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCj4+PiArICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCj4+PiArICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KPj4+ICsgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQo+Pj4gKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
Cj4+PiArICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCj4+PiArICoKPj4+ICsgKiBUSElT
IEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgo+Pj4g
KyAqLwo+Pj4gKwo+Pj4gKyNpbmNsdWRlICJuZXRidWYuaCIKPj4+ICsjaW5jbHVkZSA8c3RyaW5n
Lmg+Cj4+PiArCj4+PiArLyoqCj4+PiArICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgbHdp
cCB3aGVuIG91ciBwYnVmIGlzIGZyZWUnZAo+Pj4gKyAqIEF0IHRoaXMgcG9pbnQsIGx3aXAgc2hv
dWxkIGhhdmUgbm8gcmVmZXJlbmNlIHRvIHRoZSBwYnVmCj4+PiArICogYW55bW9yZSwgc28gd2Ug
Y2FuIGp1c3QgcmVsZWFzZSB0aGUgZW5jYXBzdWxhdGluZyBuZXRidWYKPj4+ICsgKi8KPj4+ICtz
dGF0aWMgdm9pZCBfbmV0YnVmX2ZyZWUoc3RydWN0IHBidWYgKnApCj4+PiArewo+Pj4gKwlzdHJ1
Y3QgdWtfbmV0YnVmICpuYjsKPj4+ICsKPj4+ICsJbmIgPSBsd2lwX3BidWZfdG9fbmV0YnVmKHAp
Owo+Pj4gKwl1a19uZXRidWZfZnJlZV9zaW5nbGUobmIpOwo+Pj4gK30KPj4+ICsKPj4+ICtzdHJ1
Y3QgdWtfbmV0YnVmICpsd2lwX2FsbG9jX25ldGJ1ZihzdHJ1Y3QgdWtfYWxsb2MgKmEsIHNpemVf
dCBhbGxvY19zaXplLAo+Pj4gKwkJCQkgICAgc2l6ZV90IGhlYWRyb29tKQo+Pj4gK3sKPj4+ICsJ
dm9pZCAqYWxsb2NhdGlvbjsKPj4+ICsJc3RydWN0IHVrX25ldGJ1ZiAqYjsKPj4+ICsJc3RydWN0
IF9uZXRidWZfcGJ1ZiAqbnA7Cj4+PiArCj4+PiArCWFsbG9jYXRpb24gPSB1a19tYWxsb2MoYSwg
YWxsb2Nfc2l6ZSk7Cj4+PiArCWlmICh1bmxpa2VseSghYWxsb2NhdGlvbikpCj4+PiArCQlnb3Rv
IGVycl9vdXQ7Cj4+PiArCj4+PiArCWIgPSB1a19uZXRidWZfcHJlcGFyZV9idWYoYWxsb2NhdGlv
biwgYWxsb2Nfc2l6ZSwKPj4+ICsJCQkJICBoZWFkcm9vbSwgc2l6ZW9mKHN0cnVjdCBfbmV0YnVm
X3BidWYpLCBOVUxMKTsKPj4+ICsJaWYgKHVubGlrZWx5KCFiKSkgewo+Pj4gKwkJTFdJUF9ERUJV
R0YoUEJVRl9ERUJVRywKPj4+ICsJCQkgICAgKCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBuZXRidWYg
d2l0aCBlbmNhcHN1bGF0ZWQgcGJ1ZjogcmVxdWVzdGVkIGhlYWRyb29tOiAlIl9fUFJJc3oiLCBh
bGxvY19zaXplOiAlIl9fUFJJc3oiXG4iLAo+Pj4gKwkJCSAgICAgaGVhZHJvb20sIGFsbG9jX3Np
emUpKTsKPj4+ICsJCWdvdG8gZXJyX2ZyZWVfYWxsb2NhdGlvbjsKPj4+ICsJfQo+Pj4gKwo+Pj4g
KwkvKgo+Pj4gKwkgKiBSZWdpc3RlciBhbGxvY2F0b3Igc28gdGhhdCB1a19uZXRidWZfZnJlZSgp
IHdpbGwKPj4+ICsJICogcmV0dXJuIG91ciBtZW1vcnkgYmFjayB0byB0aGlzIGFsbG9jYXRvciB3
aGVuIGZyZWUnaW5nCj4+PiArCSAqIHRoaXMgbmV0YnVmCj4+PiArCSAqLwo+Pj4gKwliLT5fYSA9
IGE7Cj4+PiArCj4+PiArCS8qIEZpbGwtb3V0IG1ldGEgZGF0YSAqLwo+Pj4gKwlucCA9IChzdHJ1
Y3QgX25ldGJ1Zl9wYnVmICopIHVrX25ldGJ1Zl9nZXRfcHJpdihiKTsKPj4+ICsJbWVtc2V0KG5w
LCAwLCBzaXplb2Yoc3RydWN0IF9uZXRidWZfcGJ1ZikpOwo+Pj4gKwlucC0+cGJ1Zl9jdXN0b20u
cGJ1Zi50eXBlX2ludGVybmFsICAgPSBQQlVGX1JPTTsKPj4+ICsJbnAtPnBidWZfY3VzdG9tLnBi
dWYuZmxhZ3MgICAgICAgICAgID0gUEJVRl9GTEFHX0lTX0NVU1RPTTsKPj4+ICsJbnAtPnBidWZf
Y3VzdG9tLnBidWYucGF5bG9hZCAgICAgICAgID0gYi0+ZGF0YTsKPj4+ICsJbnAtPnBidWZfY3Vz
dG9tLnBidWYucmVmICAgICAgICAgICAgID0gMTsKPj4+ICsJbnAtPnBidWZfY3VzdG9tLmN1c3Rv
bV9mcmVlX2Z1bmN0aW9uID0gX25ldGJ1Zl9mcmVlOwo+Pj4gKwlucC0+bmV0YnVmID0gYjsKPj4+
ICsKPj4+ICsJLyoKPj4+ICsJICogU2V0IGxlbmd0aCBvZiBuZXRidWYgdG8gYXZhaWxhYmxlIHNw
YWNlIHNvIHRoYXQgaXQKPj4+ICsJICogY2FuIGJlIHVzZWQgYXMgcmVjZWl2ZSBidWZmZXIKPj4+
ICsJICovCj4+PiArCWItPmxlbiA9IGItPmJ1ZmxlbiAtIGhlYWRyb29tOwo+Pj4gKwo+Pj4gKwlM
V0lQX0RFQlVHRihQQlVGX0RFQlVHLAo+Pj4gKwkJICAgICgiQWxsb2NhdGVkIG5ldGJ1ZiB3aXRo
IGVuY2Fwc3VsYXRlZCBwYnVmICVwIChidWZsZW46ICUiX19QUklzeiIsIGhlYWRyb29tOiAlIl9f
UFJJc3oiKVxuIiwKPj4+ICsJCSAgICAgYiwgYi0+YnVmbGVuLCB1a19uZXRidWZfaGVhZHJvb20o
YikpKTsKPj4+ICsJcmV0dXJuIGI7Cj4+PiArCj4+PiArZXJyX2ZyZWVfYWxsb2NhdGlvbjoKPj4+
ICsJdWtfZnJlZShhLCBhbGxvY2F0aW9uKTsKPj4+ICtlcnJfb3V0Ogo+Pj4gKwlyZXR1cm4gTlVM
TDsKPj4+ICt9Cj4+PiBkaWZmIC0tZ2l0IGEvbmV0YnVmLmggYi9uZXRidWYuaAo+Pj4gbmV3IGZp
bGUgbW9kZSAxMDA2NDQKPj4+IGluZGV4IDAwMDAwMDAuLjE0OTIwNjUKPj4+IC0tLSAvZGV2L251
bGwKPj4+ICsrKyBiL25ldGJ1Zi5oCj4+PiBAQCAtMCwwICsxLDEwNyBAQAo+Pj4gKy8qIFNQRFgt
TGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8KPj4+ICsvKgo+Pj4gKyAqIEF1dGhv
cnM6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1Pgo+Pj4gKyAqCj4+PiAr
ICogQ29weXJpZ2h0IChjKSAyMDE5LCBORUMgTGFib3JhdG9yaWVzIEV1cm9wZSBHbWJILCBORUMg
Q29ycG9yYXRpb24uCj4+PiArICogICAgICAgICAgICAgICAgICAgICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgo+Pj4gKyAqCj4+PiArICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cj4+PiArICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCj4+PiArICog
YXJlIG1ldDoKPj4+ICsgKgo+Pj4gKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cj4+PiArICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgo+Pj4gKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Cj4+PiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQo+Pj4gKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Cj4+PiArICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3Ig
dGhlIG5hbWVzIG9mIGl0cwo+Pj4gKyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCj4+PiArICogICAgdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KPj4+ICsg
Kgo+Pj4gKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgo+Pj4gKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKPj4+
ICsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQo+Pj4gKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKPj4+ICsgKiBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCj4+PiArICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKPj4+ICsgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKPj4+
ICsgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgo+Pj4gKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCj4+PiArICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUKPj4+ICsgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KPj4+ICsgKgo+
Pj4gKyAqIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFO
WSBXQVkuCj4+PiArICovCj4+PiArCj4+PiArI2lmbmRlZiBfTFdJUF9ORVRCVUZfCj4+PiArI2Rl
ZmluZSBfTFdJUF9ORVRCVUZfCj4+PiArCj4+PiArI2luY2x1ZGUgPHVrL2NvbmZpZy5oPgo+Pj4g
KyNpbmNsdWRlICJsd2lwL29wdC5oIgo+Pj4gKwo+Pj4gKyNpZiBDT05GSUdfTFdJUF9VS05FVERF
ViAvKiBkbyBub3QgZGVmaW5lIGFueXRoaW5nIGlmIG5vdCBjb25maWd1cmVkIGZvciB1c2UgKi8K
Pj4+ICsKPj4+ICsjaW5jbHVkZSAibHdpcC9wYnVmLmgiCj4+PiArI2luY2x1ZGUgPHVrL25ldGJ1
Zi5oPgo+Pj4gKyNpbmNsdWRlIDx1ay9hbGxvYy5oPgo+Pj4gKyNpbmNsdWRlIDx1ay9hc3NlcnQu
aD4KPj4+ICsjaW5jbHVkZSA8dWsvZXNzZW50aWFscy5oPgo+Pj4gKwo+Pj4gK3N0cnVjdCBfbmV0
YnVmX3BidWYgewo+Pj4gKwlzdHJ1Y3QgcGJ1Zl9jdXN0b20gcGJ1Zl9jdXN0b207Cj4+PiArCXN0
cnVjdCB1a19uZXRidWYgKm5ldGJ1ZjsKPj4+ICt9Owo+Pj4gKwo+Pj4gKy8qKgo+Pj4gKyAqIEFs
bG9jYXRlcyBhIG5ldGJ1ZiB0aGF0IGVtYmVkcyBhIHBidWYuIEJvdGggd2lsbCBwb2ludAo+Pj4g
KyAqIHRvIHRoZSBzYW1lIHBhY2tldCBkYXRhIGJ1ZmZlci4KPj4+ICsgKiBTdWNoIGJ1ZmZlcnMg
YXJlIHVzZWQgdG8gaW1wbGVtZW50IHplcm8tY29weSByZWNlaXZlIHdpdGggdGhlCj4+PiArICog
dWtuZXRkZXYgQVBJLgo+Pj4gKyAqIE5PVEU6IE1ha2Ugc3VyZSB0aGF0IG5ldGJ1ZiBhbmQgcGJ1
ZiBtZXRhIGRhdGEgYXJlIGtlcHQgaW4gc3luYwo+Pj4gKyAqIGJlZm9yZSBoYW5kaW5nIG92ZXIg
dGhlIGVtYmVkZGVkIHBidWYgdG8gdGhlIG5ldHdvcmsgc3RhY2suCj4+PiArICovCj4+PiArc3Ry
dWN0IHVrX25ldGJ1ZiAqbHdpcF9hbGxvY19uZXRidWYoc3RydWN0IHVrX2FsbG9jICphLCBzaXpl
X3QgYWxsb2Nfc2l6ZSwKPj4+ICsJCQkJICAgIHNpemVfdCBoZWFkcm9vbSk7Cj4+PiArCj4+PiAr
LyoqCj4+PiArICogUmV0dXJucyB0aGUgcmVmZXJlbmNlIG9mIHRoZSBlbWJlZGRlZCBwYnVmIG9m
IGEgbmV0YnVmCj4+PiArICovCj4+PiArc3RhdGljIGlubGluZSBzdHJ1Y3QgcGJ1ZiAqbHdpcF9u
ZXRidWZfdG9fcGJ1ZihzdHJ1Y3QgdWtfbmV0YnVmICpiKQo+Pj4gK3sKPj4+ICsJc3RydWN0IF9u
ZXRidWZfcGJ1ZiAqbnA7Cj4+PiArCj4+PiArCVVLX0FTU0VSVChiKTsKPj4+ICsJbnAgPSAoc3Ry
dWN0IF9uZXRidWZfcGJ1ZiAqKSB1a19uZXRidWZfZ2V0X3ByaXYoYik7Cj4+PiArCVVLX0FTU0VS
VChucCk7Cj4+PiArCj4+PiArCS8qCj4+PiArCSAqIFNhbml0eSBjaGVjazogV2UgdXNlIHRoZSBQ
QlVGX0NVU1RPTV9GTEFHIGFzIGEgd2F5Cj4+PiArCSAqIHRvIGlkZW50aWZ5IGx3aXBfYWxsb2Nf
bmV0YnVmKCkgd2FzIGFsbG9jYXRpbmcgdGhpcyBwYnVmLgo+Pj4gKwkgKiBXZSBrbm93IGl0IG1h
eSBmYWlsIGJ1dCBpdCBpcyBzdGlsbCBiZXR0ZXIgdGhhbiBub3RoaW5nLgo+Pj4gKwkgKi8KPj4+
ICsJVUtfQVNTRVJUKG5wLT5wYnVmX2N1c3RvbS5wYnVmLmZsYWdzICYgUEJVRl9GTEFHX0lTX0NV
U1RPTSk7Cj4+PiArCj4+PiArCXJldHVybiAmbnAtPnBidWZfY3VzdG9tLnBidWY7Cj4+PiArfQo+
Pj4gKwo+Pj4gKy8qKgo+Pj4gKyAqIFJldHVybnMgdGhlIHJlZmVyZW5jZSBvZiB0aGUgZW5jYXBz
dWxhdGluZyBuZXRidWYgb2YgYSBwYnVmCj4+PiArICovCj4+PiArc3RhdGljIGlubGluZSBzdHJ1
Y3QgdWtfbmV0YnVmICpsd2lwX3BidWZfdG9fbmV0YnVmKHN0cnVjdCBwYnVmICpwKQo+Pj4gK3sK
Pj4+ICsJc3RydWN0IHBidWZfY3VzdG9tICpwYzsKPj4+ICsJc3RydWN0IF9uZXRidWZfcGJ1ZiAq
bnA7Cj4+PiArCj4+PiArCVVLX0FTU0VSVChwKTsKPj4+ICsJVUtfQVNTRVJUKHAtPmZsYWdzICYg
UEJVRl9GTEFHX0lTX0NVU1RPTSk7Cj4+PiArCj4+PiArCXBjID0gKHN0cnVjdCBwYnVmX2N1c3Rv
bSAqKSBfX2NvbnRhaW5lcm9mKHAsICBzdHJ1Y3QgcGJ1Zl9jdXN0b20sIHBidWYpOwo+Pj4gKwlV
S19BU1NFUlQocGMpOwo+Pj4gKwlucCA9IChzdHJ1Y3QgX25ldGJ1Zl9wYnVmICopICBfX2NvbnRh
aW5lcm9mKHBjLCBzdHJ1Y3QgX25ldGJ1Zl9wYnVmLAo+Pj4gKwkJCQkJCSAgICBwYnVmX2N1c3Rv
bSk7Cj4+PiArCVVLX0FTU0VSVChucCk7Cj4+PiArCXJldHVybiBucC0+bmV0YnVmOwo+Pj4gK30K
Pj4+ICsKPj4+ICsjZW5kaWYgLyogQ09ORklHX0xXSVBfVUtORVRERVYgKi8KPj4+ICsjZW5kaWYg
LyogX0xXSVBfTkVUQlVGXyAqLwo+Pj4gZGlmZiAtLWdpdCBhL3VrbmV0ZGV2LmMgYi91a25ldGRl
di5jCj4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+Pj4gaW5kZXggMDAwMDAwMC4uMWRlMjAyZAo+
Pj4gLS0tIC9kZXYvbnVsbAo+Pj4gKysrIGIvdWtuZXRkZXYuYwo+Pj4gQEAgLTAsMCArMSw2MTEg
QEAKPj4+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCj4+PiAr
LyoKPj4+ICsgKiBBdXRob3JzOiBTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5l
dT4KPj4+ICsgKgo+Pj4gKyAqIENvcHlyaWdodCAoYykgMjAxOSwgTkVDIExhYm9yYXRvcmllcyBF
dXJvcGUgR21iSCwgTkVDIENvcnBvcmF0aW9uLgo+Pj4gKyAqICAgICAgICAgICAgICAgICAgICAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KPj4+ICsgKgo+Pj4gKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAo+Pj4gKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwo+Pj4gKyAqIGFyZSBtZXQ6Cj4+PiArICoKPj4+ICsgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+Pj4gKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KPj4+ICsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAo+Pj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKPj4+ICsg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgo+Pj4gKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHly
aWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKPj4+ICsgKiAgICBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQo+
Pj4gKyAqICAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCj4+PiArICoKPj4+ICsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKPj4+ICsgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCj4+PiArICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKPj4+ICsgKiBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVU
T1JTIEJFCj4+PiArICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgo+Pj4gKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCj4+PiArICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCj4+PiArICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KPj4+ICsgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQo+Pj4gKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCj4+PiArICogUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCj4+PiArICoKPj4+ICsgKiBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBP
UiBNT0RJRklFRCBJTiBBTlkgV0FZLgo+Pj4gKyAqLwo+Pj4gKwo+Pj4gKyNpbmNsdWRlIDx1ay9j
b25maWcuaD4KPj4+ICsjaW5jbHVkZSA8c3RkaW8uaD4KPj4+ICsjaW5jbHVkZSA8c3RyaW5nLmg+
Cj4+PiArCj4+PiArI2luY2x1ZGUgPHVrL2FsbG9jLmg+Cj4+PiArI2luY2x1ZGUgPHVrL3ByaW50
Lmg+Cj4+PiArI2luY2x1ZGUgIm5ldGlmL3VrbmV0ZGV2LmgiCj4+PiArI2luY2x1ZGUgIm5ldGJ1
Zi5oIgo+Pj4gKwo+Pj4gKyNpbmNsdWRlICJsd2lwL29wdC5oIgo+Pj4gKyNpbmNsdWRlICJsd2lw
L2RlZi5oIgo+Pj4gKyNpbmNsdWRlICJsd2lwL3BidWYuaCIKPj4+ICsjaW5jbHVkZSAibHdpcC9z
dGF0cy5oIgo+Pj4gKyNpbmNsdWRlICJsd2lwL3NubXAuaCIKPj4+ICsjaW5jbHVkZSAibHdpcC9z
eXMuaCIKPj4+ICsjaW5jbHVkZSAibHdpcC90Y3BpcC5oIgo+Pj4gKyNpbmNsdWRlICJsd2lwL2V0
aGlwNi5oIgo+Pj4gKyNpbmNsdWRlICJuZXRpZi9ldGhhcnAuaCIKPj4+ICsjaW5jbHVkZSAibmV0
aWYvZXRoZXJuZXQuaCIKPj4+ICsjaW5jbHVkZSA8dWsvYXJjaC9hdG9taWMuaD4KPj4+ICsKPj4+
ICsjaW5jbHVkZSA8dWsvZXNzZW50aWFscy5oPgo+Pj4gKwo+Pj4gKyNkZWZpbmUgVUtORVRERVZf
QlBTIDEwMDAwMDAwMDB1Cj4+PiArI2RlZmluZSBVS05FVERFVl9CVUZMRU4gMjA0OAo+Pj4gKwo+
Pj4gKyNkZWZpbmUgVUtORVRERVZfTkVUSUZfTkFNRTAgJ2UnCj4+PiArI2RlZmluZSBVS05FVERF
Vl9ORVRJRl9OQU1FMSAnbicKPj4+ICsKPj4+ICsvKgo+Pj4gKyAqIEdsb2JhbCBoZWFkcm9vbSBz
ZXR0aW5ncyBmb3IgYnVmZmVyIGFsbG9jYXRpb25zIHVzZWQgb24gcmVjZWl2ZQo+Pj4gKyAqIGFu
ZCB0cmFuc21pdC4gV2UgYXJlIHRha2luZyB0aGUgbWF4aW11bSBvZiBhbGwgdWtuZXRkZXYgZGV2
aWNlcyBhcwo+Pj4gKyAqIHNpbXBsaWZpY2F0aW9uLgo+Pj4gKyAqIFRPRE86IEEgcGVyLWRldmlj
ZSBzZXR0aW5nIG1pZ2h0IGJlIG1vcmUgZWZmaWNpZW50IGJ1dCByZXF1aXJlcyBtb3JlIGRhdGEK
Pj4+ICsgKiAgICAgICBmaWVsZHMgZm9yIGBuZXRpZi0+c3RhdGVgLiBGb3Igbm93IHdlIHBvaW50
IGRpcmVjdGx5IHRvIHRoZSBhY2NvcmRpbmcKPj4+ICsgKiAgICAgICBgc3RydWN0IHVrX25ldGRl
dmAgaW4gb3JkZXIgdG8gYXZvaWQgYW5vdGhlciBhbGxvY2F0aW9uIGZvciB0aGVzZQo+Pj4gKyAq
ICAgICAgIHBlci1kZXZpY2UgZmllbGRzLgo+Pj4gKyAqLwo+Pj4gK3N0YXRpYyB1aW50MTZfdCBy
eF9oZWFkcm9vbSA9IEVUSF9QQURfU0laRTsKPj4+ICtzdGF0aWMgdWludDE2X3QgdHhfaGVhZHJv
b20gPSBFVEhfUEFEX1NJWkU7Cj4+PiArCj4+PiArI2RlZmluZSBuZXRpZl90b191a25ldGRldihu
ZikgXAo+Pj4gKwkoKHN0cnVjdCB1a19uZXRkZXYgKikgKG5mKS0+c3RhdGUpCj4+PiArCj4+PiAr
c3RhdGljIHVpbnQxNl90IG5ldGlmX2FsbG9jX3J4cGt0cyh2b2lkICphcmdwLCBzdHJ1Y3QgdWtf
bmV0YnVmICpuYltdLAo+Pj4gKwkJCQkgICB1aW50MTZfdCBjb3VudCkKPj4+ICt7Cj4+PiArCXN0
cnVjdCB1a19hbGxvYyAqYTsKPj4+ICsJdWludDE2X3QgaTsKPj4+ICsKPj4+ICsJVUtfQVNTRVJU
KGFyZ3ApOwo+Pj4gKwo+Pj4gKwlhID0gKHN0cnVjdCB1a19hbGxvYyAqKSBhcmdwOwo+Pj4gKwo+
Pj4gKwlmb3IgKGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewo+Pj4gKwkJbmJbaV0gPSBsd2lwX2Fs
bG9jX25ldGJ1ZihhLCBVS05FVERFVl9CVUZMRU4sIHJ4X2hlYWRyb29tKTsKPj4+ICsJCWlmICgh
bmJbaV0pIHsKPj4+ICsJCQkvKiB3ZSBydW4gb3V0IG9mIG1lbW9yeSAqLwo+Pj4gKwkJCWJyZWFr
Owo+Pj4gKwkJfQo+Pj4gKwl9Cj4+PiArCj4+PiArCXJldHVybiBpOwo+Pj4gK30KPj4+ICsKPj4+
ICtzdGF0aWMgZXJyX3QgdWtuZXRkZXZfb3V0cHV0KHN0cnVjdCBuZXRpZiAqbmYsIHN0cnVjdCBw
YnVmICpwKQo+Pj4gK3sKPj4+ICsJc3RydWN0IHVrX2FsbG9jICphOwo+Pj4gKwlzdHJ1Y3QgdWtf
bmV0ZGV2ICpkZXY7Cj4+PiArCXN0cnVjdCBwYnVmICpxOwo+Pj4gKwlzdHJ1Y3QgdWtfbmV0YnVm
ICpuYjsKPj4+ICsJdm9pZCAqYWxsb2NhdGlvbjsKPj4+ICsJY2hhciAqd3BvczsKPj4+ICsJaW50
IHJldDsKPj4+ICsKPj4+ICsJVUtfQVNTRVJUKG5mKTsKPj4+ICsJZGV2ID0gbmV0aWZfdG9fdWtu
ZXRkZXYobmYpOwo+Pj4gKwlVS19BU1NFUlQoZGV2KTsKPj4+ICsKPj4+ICsJYSA9IHVrX2FsbG9j
X2dldF9kZWZhdWx0KCk7Cj4+PiArCWlmICghYSkKPj4+ICsJCXJldHVybiBFUlJfTUVNOwo+Pj4g
Kwo+Pj4gKwlhbGxvY2F0aW9uID0gdWtfbWFsbG9jKGEsIFVLTkVUREVWX0JVRkxFTik7Cj4+PiAr
CWlmICghYWxsb2NhdGlvbikKPj4+ICsJCXJldHVybiBFUlJfTUVNOwo+Pj4gKwluYiA9IHVrX25l
dGJ1Zl9wcmVwYXJlX2J1ZihhbGxvY2F0aW9uLCBVS05FVERFVl9CVUZMRU4sCj4+PiArCQkJCSAg
IHR4X2hlYWRyb29tLCAwLCBOVUxMKTsKPj4+ICsJVUtfQVNTRVJUKG5iKTsKPj4+ICsJbmItPl9h
ID0gYTsgLyogcmVnaXN0ZXIgYWxsb2NhdG9yIGZvciBmcmVlIG9wZXJhdGlvbiAqLwo+Pj4gKwo+
Pj4gKwlpZiAodW5saWtlbHkocC0+dG90X2xlbiA+IHVrX25ldGJ1Zl90YWlscm9vbShuYikpKSB7
Cj4+PiArCQlMV0lQX0RFQlVHRihORVRJRl9ERUJVRywKPj4+ICsJCQkgICAgKCIlczogJWMlYyV1
OiBDYW5ub3Qgc2VuZCAlIlBSSXUxNiIgYnl0ZXMsIHRvbyBiaWcgKD4gJSJfX1BSSXN6IilcbiIs
Cj4+PiArCQkJICAgICBfX2Z1bmNfXywgbmYtPm5hbWVbMF0sIG5mLT5uYW1lWzFdLCBuZi0+bnVt
LAo+Pj4gKwkJCSAgICAgcC0+dG90X2xlbiwgdWtfbmV0YnVmX3RhaWxyb29tKG5iKSkpOwo+Pj4g
KwkJdWtfbmV0YnVmX2ZyZWVfc2luZ2xlKG5iKTsKPj4+ICsJCXJldHVybiBFUlJfTUVNOwo+Pj4g
Kwl9Cj4+PiArCj4+PiArI2lmIEVUSF9QQURfU0laRQo+Pj4gKwlwYnVmX2hlYWRlcihwLCAtRVRI
X1BBRF9TSVpFKTsgLyogZHJvcCB0aGUgcGFkZGluZyB3b3JkICovCj4+PiArI2VuZGlmIC8qIEVU
SF9QQURfU0laRSAqLwo+Pj4gKwkvKgo+Pj4gKwkgKiBDb3B5IHBidWYgdG8gbmV0YnVmCj4+PiAr
CSAqIE5PVEU6IFVuZm9ydHVuYXRlbHksIGx3SVAgc2VlbXMgbm90IHRvIHN1cHBvcnQgemVyby1j
b3B5IHRyYW5zbWl0LAo+Pj4gKwkgKiAgICAgICB5ZXQuIEFzIGxvbmcgYXMgd2UgZG8gbm90IGhh
dmUgdGhpcywgd2UgaGF2ZSB0byBjb3B5Lgo+Pj4gKwkgKi8KPj4+ICsJd3BvcyA9IG5iLT5kYXRh
Owo+Pj4gKwlmb3IgKHEgPSBwOyBxICE9IE5VTEw7IHEgPSBwLT5uZXh0KSB7Cj4+PiArCQltZW1j
cHkod3BvcywgcS0+cGF5bG9hZCwgcS0+bGVuKTsKPj4+ICsJCXdwb3MgKz0gcS0+bGVuOwo+Pj4g
Kwl9Cj4+PiArCW5iLT5sZW4gPSBwLT50b3RfbGVuOwo+Pj4gKyNpZiBFVEhfUEFEX1NJWkUKPj4+
ICsJcGJ1Zl9oZWFkZXIocCwgRVRIX1BBRF9TSVpFKTsgLyogcmVjbGFpbSB0aGUgcGFkZGluZyB3
b3JkICovCj4+PiArI2VuZGlmIC8qIEVUSF9QQURfU0laRSAqLwo+Pj4gKwo+Pj4gKwkvKiBUcmFu
c21pdCBwYWNrZXQgKi8KPj4+ICsJZG8gewo+Pj4gKwkJcmV0ID0gdWtfbmV0ZGV2X3R4X29uZShk
ZXYsIDAsIG5iKTsKPj4+ICsJfSB3aGlsZSAodWtfbmV0ZGV2X3N0YXR1c19ub3RyZWFkeShyZXQp
KTsKPj4+ICsJaWYgKHVubGlrZWx5KHJldCA8IDApKSB7Cj4+PiArI2lmIEVUSF9QQURfU0laRQo+
Pj4gKwkJTFdJUF9ERUJVR0YoTkVUSUZfREVCVUcsCj4+PiArCQkJICAgICgiJXM6ICVjJWMldTog
RmFpbGVkIHRvIHNlbmQgJSJQUkl1MTYiIGJ5dGVzXG4iLAo+Pj4gKwkJCSAgICAgX19mdW5jX18s
IG5mLT5uYW1lWzBdLCBuZi0+bmFtZVsxXSwgbmYtPm51bSwKPj4+ICsJCQkgICAgIHAtPnRvdF9s
ZW4gLSBFVEhfUEFEX1NJWkUpKTsKPj4+ICsjZWxzZSAvKiBFVEhfUEFEX1NJWkUgKi8KPj4+ICsJ
CUxXSVBfREVCVUdGKE5FVElGX0RFQlVHLAo+Pj4gKwkJCSAgICAoIiVzOiAlYyVjJXU6IEZhaWxl
ZCB0byBzZW5kICUiUFJJdTE2IiBieXRlc1xuIiwKPj4+ICsJCQkgICAgIF9fZnVuY19fLCBuZi0+
bmFtZVswXSwgbmYtPm5hbWVbMV0sIG5mLT5udW0sCj4+PiArCQkJICAgICBwLT50b3RfbGVuKSk7
Cj4+PiArI2VuZGlmIC8qIEVUSF9QQURfU0laRSAqLwo+Pj4gKwkJLyoKPj4+ICsJCSAqIERlY3Jl
YXNlIHJlZmNvdW50IGFnYWluIGJlY2F1c2UgaW4KPj4+ICsJCSAqIHRoZSBlcnJvciBjYXNlIHRo
ZSBuZXRkZXYgZGlkIG5vdCBjb25zdW1lIHRoZSBwYnVmCj4+PiArCQkgKi8KPj4+ICsJCXVrX25l
dGJ1Zl9mcmVlX3NpbmdsZShuYik7Cj4+PiArCQlyZXR1cm4gRVJSX0lGOwo+Pj4gKwl9Cj4+PiAr
I2lmIEVUSF9QQURfU0laRQo+Pj4gKwlMV0lQX0RFQlVHRihORVRJRl9ERUJVRywgKCIlczogJWMl
YyV1OiBTZW50ICUiUFJJdTE2IiBieXRlc1xuIiwKPj4+ICsJCQkJICBfX2Z1bmNfXywgbmYtPm5h
bWVbMF0sIG5mLT5uYW1lWzFdLCBuZi0+bnVtLAo+Pj4gKwkJCQkgIHAtPnRvdF9sZW4gLSBFVEhf
UEFEX1NJWkUpKTsKPj4+ICsjZWxzZSAvKiBFVEhfUEFEX1NJWkUgKi8KPj4+ICsJTFdJUF9ERUJV
R0YoTkVUSUZfREVCVUcsICgiJXM6ICVjJWMldTogU2VudCAlIlBSSXUxNiIgYnl0ZXNcbiIsCj4+
PiArCQkJCSAgX19mdW5jX18sIG5mLT5uYW1lWzBdLCBuZi0+bmFtZVsxXSwgbmYtPm51bSwKPj4+
ICsJCQkJICBwLT50b3RfbGVuKSk7Cj4+PiArI2VuZGlmIC8qIEVUSF9QQURfU0laRSAqLwo+Pj4g
Kwo+Pj4gKwlyZXR1cm4gRVJSX09LOwo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMgdm9pZCB1a25l
dGRldl9pbnB1dChzdHJ1Y3QgdWtfbmV0ZGV2ICpkZXYsCj4+PiArCQkJICAgdWludDE2X3QgcXVl
dWVfaWQgX191bnVzZWQsIHZvaWQgKmFyZ3ApCj4+PiArewo+Pj4gKwlzdHJ1Y3QgbmV0aWYgKm5m
ID0gKHN0cnVjdCBuZXRpZiAqKSBhcmdwOwo+Pj4gKwlzdHJ1Y3QgdWtfbmV0YnVmICpuYjsKPj4+
ICsJc3RydWN0IHBidWYgKnA7Cj4+PiArCWludCByZXQ7Cj4+PiArCj4+PiArCVVLX0FTU0VSVChk
ZXYpOwo+Pj4gKwlVS19BU1NFUlQobmYpOwo+Pj4gKwlVS19BU1NFUlQobmYtPmlucHV0KTsKPj4+
ICsKPj4+ICsJTFdJUF9ERUJVR0YoTkVUSUZfREVCVUcsICgiJXM6ICVjJWMldTogUG9sbCByZWNl
aXZlIHF1ZXVlLi4uXG4iLAo+Pj4gKwkJCQkgIF9fZnVuY19fLCBuZi0+bmFtZVswXSwgbmYtPm5h
bWVbMV0sIG5mLT5udW0pKTsKPj4+ICsJZG8gewo+Pj4gKwkJcmV0ID0gdWtfbmV0ZGV2X3J4X29u
ZShkZXYsIDAsICZuYik7Cj4+PiArCQlMV0lQX0RFQlVHRihORVRJRl9ERUJVRywKPj4+ICsJCQkg
ICAgKCIlczogJWMlYyV1OiBJbnB1dCBzdGF0dXMgJWQgKCVjJWMlYylcbiIsCj4+PiArCQkJICAg
ICBfX2Z1bmNfXywgbmYtPm5hbWVbMF0sIG5mLT5uYW1lWzFdLCBuZi0+bnVtLCByZXQsCj4+PiAr
CQkJICAgICB1a19uZXRkZXZfc3RhdHVzX3Rlc3Rfc2V0KHJldCwKPj4+ICsJCQkJCQkgICAgICAg
VUtfTkVUREVWX1NUQVRVU19TVUNDRVNTKQo+Pj4gKwkJCSAgICAgPyAnUycgOiAnLScsCj4+PiAr
CQkJICAgICB1a19uZXRkZXZfc3RhdHVzX3Rlc3Rfc2V0KHJldCwKPj4+ICsJCQkJCQkgICAgICAg
VUtfTkVUREVWX1NUQVRVU19NT1JFKQo+Pj4gKwkJCSAgICAgPyAnTScgOiAnLScsCj4+PiArCQkJ
ICAgICB1a19uZXRkZXZfc3RhdHVzX3Rlc3Rfc2V0KHJldCwKPj4+ICsJCQkJCQkgICAgICBVS19O
RVRERVZfU1RBVFVTX1VOREVSUlVOKQo+Pj4gKwkJCSAgICAgPyAnVScgOiAnLScpKTsKPj4+ICsJ
CWlmICh1bmxpa2VseShyZXQgPCAwKSkgewo+Pj4gKwkJCS8qCj4+PiArCQkJICogT3VjaCwgYW4g
ZXJyb3IgaGFwcGVuZWQuIFdlIGNhbm5vdCByZWNvdmVyIGZyb20gaXQKPj4+ICsJCQkgKiBjdXJy
ZW50bHksIHNvIHdlIHdpbGwgdGhyb3cgYW4gZXJyb3IgbWVzc2FnZSwgYnJpbmcKPj4+ICsJCQkg
KiB0aGUgaW50ZXJmYWNlIGRvd24sIGFuZCBsZWF2ZSBvdXIgbG9vcC4KPj4+ICsJCQkgKi8KPj4+
ICsJCQl1a19wcl9jcml0KCIlYyVjJXU6IFJlY2VpdmUgZXJyb3IgJWQuIFN0b3BwaW5nIGludGVy
ZmFjZS4uLlxuIiwKPj4+ICsJCQkJICAgbmYtPm5hbWVbMF0sIG5mLT5uYW1lWzFdLCBuZi0+bnVt
LCByZXQpOwo+Pj4gKwkJCW5ldGlmX3NldF9kb3duKG5mKTsKPj4+ICsJCQlicmVhazsKPj4+ICsJ
CX0KPj4+ICsJCWlmICh1a19uZXRkZXZfc3RhdHVzX25vdHJlYWR5KHJldCkpIHsKPj4+ICsJCQkv
KiBObyAobW9yZSkgcGFja2V0cyByZWNlaXZlZCAqLwo+Pj4gKwkJCWJyZWFrOwo+Pj4gKwkJfQo+
Pj4gKwo+Pj4gKwkJTFdJUF9ERUJVR0YoTkVUSUZfREVCVUcsCj4+PiArCQkJICAgICgiJXM6ICVj
JWMldTogUmVjZWl2ZWQgJSJQUkl1MTYiIGJ5dGVzXG4iLAo+Pj4gKwkJCSAgICAgX19mdW5jX18s
IG5mLT5uYW1lWzBdLCBuZi0+bmFtZVsxXSwgbmYtPm51bSwKPj4+ICsJCQkgICAgIG5iLT5sZW4p
KTsKPj4+ICsKPj4+ICsJCS8qIFNlbmQgcGFja2V0IHRvIGx3aXAgKi8KPj4+ICsjaWYgRVRIX1BB
RF9TSVpFCj4+PiArCQl1a19uZXRidWZfaGVhZGVyKG5iLCBFVEhfUEFEX1NJWkUpOwo+Pj4gKyNl
bmRpZiAvKiBFVEhfUEFEX1NJWkUgKi8KPj4+ICsJCXAgPSBsd2lwX25ldGJ1Zl90b19wYnVmKG5i
KTsKPj4+ICsJCXAtPnBheWxvYWQgPSBuYi0+ZGF0YTsKPj4+ICsJCXAtPnRvdF9sZW4gPSBwLT5s
ZW4gPSBuYi0+bGVuOwo+Pj4gKwkJaWYgKHVubGlrZWx5KG5mLT5pbnB1dChwLCBuZikgIT0gRVJS
X09LKSkgewo+Pj4gKwkJCS8qCj4+PiArCQkJICogRHJvcCB0aGUgcGFja2V0IHRoYXQgd2UgY291
bGQgbm90IHNlbmQgdG8gdGhlIHN0YWNrCj4+PiArCQkJICovCj4+PiArCQkJdWtfcHJfZXJyKCIl
YyVjJXU6IEZhaWxlZCB0byBmb3J3YXJkIHBhY2tldCB0byBsd0lQXG4iLAo+Pj4gKwkJCQkgIG5m
LT5uYW1lWzBdLCBuZi0+bmFtZVsxXSwgbmYtPm51bSk7Cj4+PiArCQkJdWtfbmV0YnVmX2ZyZWVf
c2luZ2xlKG5iKTsKPj4+ICsJCX0KPj4+ICsJfSB3aGlsZSAodWtfbmV0ZGV2X3N0YXR1c19tb3Jl
KHJldCkpOwo+Pj4gK30KPj4+ICsKPj4KPj4gV291bGQgYmUgYmV0dGVyIGlmIHBvbGwgZnVuY3Rp
b24gcmV0dXJucyBhbiBlcnJvci4gVGhlIHVzZXIgb2YgdGhlIHBvbGwgYXMgb2Ygbm93IGlzIGJs
aW5kIGluIGNhc2Ugcnhfb25lIGZhaWxzCj4gCj4gSHVtLi4uIEkgYWN0dWFsbHkgdG9vayB0aGUg
c2FtZSBmdW5jdGlvbiBzaWduYXR1cmUgZm9yIHBvbGxpbmcgYXMgSSBzYXcgaXQgb24gbHdpcCBj
b2RlOiBzbGlwaWZfcG9sbCgpIGFuZCBuZXRpZl9wb2xsKCkuIAoKT2ggeWVhaCB0aGF0IHRydWUu
CgoKSW4gdGhpcyBzZW5zZSBpdCBpcyBpbmxpbmUgd2l0aCB3aGF0IHNvbWVvbmUgd291bGQgZXhw
ZWN0IGZyb20gbHdpcC4gQXQgCnRoZSBzYW1lIHRpbWUsIGFzIGxvbmcgd2UgZG8gbm90IGhhdmUg
bmV0IGlmIHJlbW92ZSBzdXBwb3J0LCBhIHVzZXIgCmNhbuKAmXQgcmVhbGx5IGRvIG11Y2ggaW4g
ZXJyb3IgY2FzZXMuCj4gSG93IHdvdWxkIHlvdSBwcm9jZWVkPwpJIHN0aWxsIHByZWZlciBoYXZp
bmcgdG8gcmV0dXJuIGFuIGVycm9yIGNvZGUgdG8gdXNlciBhcyB0aGV5IHdvdWxkbid0IApjb250
aW51ZSBwb2xsaW5nIG9uIHRoZSBpbnRlcmZhY2UuIEJ1dCBzaW5jZSB3ZSBkb24ndCBwcm92aWRl
IGEgbmV0d29yayAKaW50ZXJmYWNlIG1hbmFnZW1lbnQgZnVuY3Rpb24sIHdlIGNhbiBhZGQgYSBj
b21tZW50IGluIHRoZSBjb2RlIHN0YXRpbmcgCnRoaXMgYW5kIHByb3ZpZGUgdGhlIGZ1bmN0aW9u
YWxpdHkgd2l0aCB0aGUgbmV0d29yayBpbnRlcmZhY2UgbWFuYWdlbWVudCAKZnVuY3Rpb25zLgoK
Cgo+IAo+Pj4gK3ZvaWQgdWtuZXRkZXZfcG9sbChzdHJ1Y3QgbmV0aWYgKm5mKQo+Pj4gK3sKPj4+
ICsJc3RydWN0IHVrX25ldGRldiAqZGV2Owo+Pj4gKwo+Pj4gKwlVS19BU1NFUlQobmYpOwo+Pj4g
KwkvKgo+Pj4gKwkgKiBUT0RPOiBVbmZvcnR1bmF0ZWx5LCBjaGVja2luZyB0aGUgaW50ZXJmYWNl
IG5hbWUgaXMgYSB3ZWFrIHNhbml0eQo+Pj4gKwkgKiBjaGVjayB0aGF0IHVrbmV0ZGV2X3BvbGwo
KSBpcyBjYWxsZWQgb24gYSBuZXRpZiB0aGF0IGlzIGRyaXZlbiBieQo+Pj4gKwkgKiB0aGlzIGRy
aXZlci4uLgo+Pj4gKwkgKi8KPj4+ICsJVUtfQVNTRVJUKG5mLT5uYW1lWzBdID09IFVLTkVUREVW
X05FVElGX05BTUUwKTsKPj4+ICsJVUtfQVNTRVJUKG5mLT5uYW1lWzFdID09IFVLTkVUREVWX05F
VElGX05BTUUxKTsKPj4+ICsKPj4+ICsJZGV2ID0gbmV0aWZfdG9fdWtuZXRkZXYobmYpOwo+Pj4g
KwlVS19BU1NFUlQoZGV2KTsKPj4+ICsKPj4+ICsJdWtuZXRkZXZfaW5wdXQoZGV2LCAwLCBuZik7
Cj4+PiArfQo+Pj4gKwo+Pj4gKyNpZmRlZiBDT05GSUdfTFdJUF9OT1RIUkVBRFMKPj4+ICt2b2lk
IHVrbmV0ZGV2X3BvbGxfYWxsKHZvaWQpCj4+PiArewo+Pj4gKwlzdHJ1Y3QgbmV0aWYgKm5mOwo+
Pj4gKwo+Pj4gKwkvKgo+Pj4gKwkgKiBUT0RPOiBXZSBhcmUgZ29pbmcgdGhyb3VnaCBhbGwgbmV0
aWZzIGFuZCBjaGVjayB0aGUgaW50ZXJmYWNlIG5hbWUuCj4+PiArCSAqIFRoaXMgd2F5IHdlIGFy
ZSBmaWd1cmluZyBvdXQgdGhhdCB0aGUgbmV0aWYgaXMgcHJvdmlkZWQgYnkgb3VyCj4+PiArCSAq
IGRyaXZlci4gUHJvYmFibHkgd2Ugc2hvdWxkIGZpbmQgYSBiZXR0ZXIgYW5kIG1vcmUgc3RhYmxl
IHNvbHV0aW9uIGF0Cj4+PiArCSAqIHNvbWUgcG9pbnQuLi4KPj4+ICsJICovCj4+PiArCU5FVElG
X0ZPUkVBQ0gobmYpIHsKPj4+ICsJCWlmIChuZi0+bmFtZVswXSA9PSBVS05FVERFVl9ORVRJRl9O
QU1FMAo+Pj4gKwkJICAgICYmIG5mLT5uYW1lWzFdID09IFVLTkVUREVWX05FVElGX05BTUUxKQo+
Pj4gKwkJCXVrbmV0ZGV2X3BvbGwobmYpOwo+Pj4gKwl9Cj4+PiArfQo+Pj4gKwo+Pj4gKyNlbHNl
IC8qIENPTkZJR19MV0lQX05PVEhSRUFEUyAqLwo+Pj4gKwo+Pj4gK3N0YXRpYyB2b2lkIHVrbmV0
ZGV2X3VwZG93bihzdHJ1Y3QgbmV0aWYgKm5mKQo+Pj4gK3sKPj4+ICsJc3RydWN0IHVrX25ldGRl
diAqZGV2Owo+Pj4gKwlpbnQgcmV0Owo+Pj4gKwo+Pj4gKwlVS19BU1NFUlQobmYpOwo+Pj4gKwlk
ZXYgPSBuZXRpZl90b191a25ldGRldihuZik7Cj4+PiArCVVLX0FTU0VSVChkZXYpOwo+Pj4gKwo+
Pj4gKwkvKiBFbmFibGUgYW5kIGRpc2FibGUgaW50ZXJydXB0cyBhY2NvcmRpbmcgdG8gbmV0aWYn
cyB1cC9kb3duIHN0YXR1cyAqLwo+Pj4gKwlpZiAobmYtPmZsYWdzICYgTkVUSUZfRkxBR19VUCkg
ewo+Pj4gKwkJcmV0ID0gdWtfbmV0ZGV2X3J4cV9pbnRyX2VuYWJsZShkZXYsIDApOwo+Pj4gKwkJ
aWYgKHJldCA8IDApIHsKPj4+ICsJCQlMV0lQX0RFQlVHRihORVRJRl9ERUJVRywKPj4+ICsJCQkJ
ICAgICgiJXM6ICVjJWMldTogRmFpbGVkIHRvIGVuYWJsZSByeCBpbnRlcnJydXB0IG1vZGUgb24g
bmV0ZGV2ICV1XG4iLAo+Pj4gKwkJCQkgICAgIF9fZnVuY19fLCBuZi0+bmFtZVswXSwgbmYtPm5h
bWVbMV0sCj4+PiArCQkJCSAgICAgbmYtPm51bSwgdWtfbmV0ZGV2X2lkX2dldChkZXYpKSk7Cj4+
PiArCQl9IGVsc2Ugewo+Pj4gKwkJCUxXSVBfREVCVUdGKE5FVElGX0RFQlVHLAo+Pj4gKwkJCQkg
ICAgKCIlczogJWMlYyV1OiBFbmFibGVkIHJ4IGludGVycnVwdCBtb2RlIG9uIG5ldGRldiAldVxu
IiwKPj4+ICsJCQkJICAgICBfX2Z1bmNfXywgbmYtPm5hbWVbMF0sIG5mLT5uYW1lWzFdLAo+Pj4g
KwkJCQkgICAgIG5mLT5udW0sIHVrX25ldGRldl9pZF9nZXQoZGV2KSkpOwo+Pj4gKwkJfQo+Pj4g
Kwo+Pj4gKwkJaWYgKHJldCA9PSAxKSB7Cj4+PiArCQkJLyoKPj4+ICsJCQkgKiB1a19uZXRkZXZf
cnhxX2ludHJfZW5hYmxlKCkgdG9sZCB1cyB0aGF0IHdlIG5lZWQgdG8KPj4+ICsJCQkgKiBmbHVz
aCB0aGUgcmVjZWlldmUgcXVldWUgYmVmb3JlIGludGVycnVwdHMgYXJlCj4+PiArCQkJICogZW5h
YmxlZC4gRm9yIHRoaXMgcHVycG9zZSB3ZSBkbyBhbiBpbml0aWFsIHBvbGwuCj4+PiArCQkJICov
Cj4+PiArCQkJdWtuZXRkZXZfcG9sbChuZik7Cj4+PiArCQl9Cj4+PiArCX0gZWxzZSB7Cj4+PiAr
CQl1a19uZXRkZXZfcnhxX2ludHJfZGlzYWJsZShkZXYsIDApOwo+Pj4gKwkJTFdJUF9ERUJVR0Yo
TkVUSUZfREVCVUcsCj4+PiArCQkJICAgICgiJXM6ICVjJWMldTogRGlzYWJsZWQgcnggaW50ZXJy
dXB0cyBvbiBuZXRkZXYgJXVcbiIsCj4+PiArCQkJICAgICBfX2Z1bmNfXywgbmYtPm5hbWVbMF0s
IG5mLT5uYW1lWzFdLAo+Pj4gKwkJCSAgICAgbmYtPm51bSwgdWtfbmV0ZGV2X2lkX2dldChkZXYp
KSk7Cj4+PiArCj4+PiArCX0KPj4+ICt9Cj4+PiArI2VuZGlmIC8qIENPTkZJR19MV0lQX05PVEhS
RUFEUyAqLwo+Pj4gKwo+Pj4gK2Vycl90IHVrbmV0ZGV2X2luaXQoc3RydWN0IG5ldGlmICpuZikK
Pj4+ICt7Cj4+PiArCXN0cnVjdCB1a19hbGxvYyAqYSA9IE5VTEw7Cj4+PiArCXN0cnVjdCB1a19u
ZXRkZXYgKmRldjsKPj4+ICsJc3RydWN0IHVrX25ldGRldl9jb25mIGRldl9jb25mOwo+Pj4gKwlz
dHJ1Y3QgdWtfbmV0ZGV2X3J4cXVldWVfY29uZiByeHFfY29uZjsKPj4+ICsJc3RydWN0IHVrX25l
dGRldl90eHF1ZXVlX2NvbmYgdHhxX2NvbmY7Cj4+PiArCXN0cnVjdCB1a19uZXRkZXZfaW5mbyBp
bmZvOwo+Pj4gKwljb25zdCBzdHJ1Y3QgdWtfaHdhZGRyICpod2FkZHI7Cj4+PiArCXVuc2lnbmVk
IGludCBpOwo+Pj4gKwlpbnQgcmV0Owo+Pj4gKwo+Pj4gKwlVS19BU1NFUlQobmYpOwo+Pj4gKwlk
ZXYgPSBuZXRpZl90b191a25ldGRldihuZik7Cj4+PiArCVVLX0FTU0VSVChkZXYpOwo+Pj4gKwo+
Pj4gKwlMV0lQX0FTU0VSVCgidWtuZXRkZXYgbmVlZHMgYW4gaW5wdXQgY2FsbGJhY2sgKG5ldGlm
X2lucHV0IG9yIHRjcGlwX2lucHV0KSIsCj4+PiArCQkgICAgbmYtPmlucHV0ICE9IE5VTEwpOwo+
Pj4gKwo+Pj4gKwkvKiBOZXRkZXYgaGFzIHRvIGJlIGluIHVuY29uZmlndXJlZCBzdGF0ZSAqLwo+
Pj4gKwlpZiAodWtfbmV0ZGV2X3N0YXRlX2dldChkZXYpICE9IFVLX05FVERFVl9VTkNPTkZJR1VS
RUQpIHsKPj4+ICsJCUxXSVBfREVCVUdGKE5FVElGX0RFQlVHLAo+Pj4gKwkJCSAgICAoIiVzOiBO
ZXRkZXYgJXUgbm90IGluIHVuY29maWd1cmVkIHN0YXRlXG4iLAo+Pj4gKwkJCSAgICAgX19mdW5j
X18sIHVrX25ldGRldl9pZF9nZXQoZGV2KSkpOwo+Pj4gKwkJcmV0dXJuIEVSUl9JU0NPTk47Cj4+
PiArCX0KPj4+ICsKPj4+ICsJLyogSW50ZXJmYWNlIG5hbWUsIHRoZSBpbnRlcmZhY2UgbnVtYmVy
IChuZi0+bnVtKSBpcyBhc3NpZ25lZCBieSBsd2lwICovCj4+PiArCW5mLT5uYW1lWzBdID0gVUtO
RVRERVZfTkVUSUZfTkFNRTA7Cj4+PiArCW5mLT5uYW1lWzFdID0gVUtORVRERVZfTkVUSUZfTkFN
RTE7Cj4+PiArCj4+PiArCS8qCj4+PiArCSAqIEJyaW5nIHVwIHVrbmV0ZGV2Cj4+PiArCSAqIE5v
dGU6IFdlIHVzZSB0aGUgZGVmYXVsdCBhbGxvY2F0b3IgZm9yIHNldHRpbmcgdXAgdGhlIHJ4L3R4
IHF1ZXVlcwo+Pj4gKwkgKi8KPj4+ICsJLyogVE9ETzogSW4gY2FzZSB0aGUgZGV2aWNlIGluaXRp
YWxpemF0aW9uIHNob3VsZCBoYXBwZW4gbWFudWFsbHkgYmVmb3JlCj4+PiArCSAqICAgICAgIGF0
dGFjaGluZyB0byBsd2lwLCB3ZSByZXF1aXJlIGFub3RoZXIgaW5pdCBmdW5jdGlvbiB0aGF0IHNr
aXBzCj4+PiArCSAqICAgICAgIHRoaXMgaW5pdGlhbGl6YXRpb24gc3RlcHMuCj4+PiArCSAqLwo+
Pj4gKwlhID0gdWtfYWxsb2NfZ2V0X2RlZmF1bHQoKTsKPj4+ICsJaWYgKCFhKQo+Pj4gKwkJcmV0
dXJuIEVSUl9NRU07Cj4+PiArCj4+PiArCS8qIEdldCBkZXZpY2UgaW5mb3JtYXRpb24gKi8KPj4+
ICsJdWtfbmV0ZGV2X2luZm9fZ2V0KGRldiwgJmluZm8pOwo+Pj4gKwlpZiAoIWluZm8ubWF4X3J4
X3F1ZXVlcyB8fCAhaW5mby5tYXhfdHhfcXVldWVzKQo+Pj4gKwkJcmV0dXJuIEVSUl9JRjsKPj4+
ICsKPj4+ICsJLyoKPj4+ICsJICogVXBkYXRlIG91ciBnbG9iYWwgKHJ4fHR4KV9oZWFkcm9vbSBz
ZXR0aW5nIHRoYXQgd2UgdXNlIGZvcgo+Pj4gKwkgKiBidWZmZXIgYWxsb2NhdGlvbnMKPj4+ICsJ
ICovCj4+PiArCXJ4X2hlYWRyb29tID0gKHJ4X2hlYWRyb29tIDwgaW5mby5uYl9lbmNhcF9yeCkK
Pj4+ICsJCSAgICAgID8gaW5mby5uYl9lbmNhcF9yeCA6IHJ4X2hlYWRyb29tOwo+Pj4gKwl0eF9o
ZWFkcm9vbSA9ICh0eF9oZWFkcm9vbSA8IGluZm8ubmJfZW5jYXBfdHgpCj4+PiArCQkgICAgICA/
IGluZm8ubmJfZW5jYXBfdHggOiB0eF9oZWFkcm9vbTsKPj4+ICsJTFdJUF9ERUJVR0YoTkVUSUZf
REVCVUcsCj4+PiArCQkgICAgKCIlczogJWMlYyV1OiBOZWVkIGhlYWRyb29tIHJ4OiUiUFJJdTE2
IiwgdHg6JSJQUkl1MTYiXG4iLAo+Pj4gKwkJICAgICBfX2Z1bmNfXywgbmYtPm5hbWVbMF0sIG5m
LT5uYW1lWzFdLCBuZi0+bnVtLAo+Pj4gKwkJICAgICBpbmZvLm5iX2VuY2FwX3J4LCBpbmZvLm5i
X2VuY2FwX3R4KSk7Cj4+PiArCj4+PiArCS8qCj4+PiArCSAqIERldmljZSBjb25maWd1cmF0aW9u
LAo+Pj4gKwkgKiB3ZSB3YW50IHRvIHVzZSBqdXN0IG9uZSBxdWV1ZSBmb3IgZWFjaCBkaXJlY3Rp
b24KPj4+ICsJICovCj4+PiArCWRldl9jb25mLm5iX3J4X3F1ZXVlcyA9IDE7Cj4+PiArCWRldl9j
b25mLm5iX3R4X3F1ZXVlcyA9IDE7Cj4+PiArCXJldCA9IHVrX25ldGRldl9jb25maWd1cmUoZGV2
LCAmZGV2X2NvbmYpOwo+Pj4gKwlpZiAocmV0IDwgMCkgewo+Pj4gKwkJTFdJUF9ERUJVR0YoTkVU
SUZfREVCVUcsCj4+PiArCQkJICAgICgiJXM6ICVjJWMldTogRmFpbGVkIHRvIGNvbmZpZ3VyZSBu
ZXRkZXYgJXVcbiIsCj4+PiArCQkJICAgICBfX2Z1bmNfXywgbmYtPm5hbWVbMF0sIG5mLT5uYW1l
WzFdLCBuZi0+bnVtLAo+Pj4gKwkJCSAgICAgdWtfbmV0ZGV2X2lkX2dldChkZXYpKSk7Cj4+PiAr
CQlyZXR1cm4gRVJSX0lGOwo+Pj4gKwl9Cj4+PiArCj4+PiArCS8qCj4+PiArCSAqIFJlY2VpdmUg
cXVldWUsCj4+PiArCSAqIHVzZSBkcml2ZXIgZGVmYXVsdCBkZXNjcmlwdG9ycwo+Pj4gKwkgKi8K
Pj4+ICsJcnhxX2NvbmYuYSA9IGE7Cj4+PiArCXJ4cV9jb25mLmFsbG9jX3J4cGt0cyA9IG5ldGlm
X2FsbG9jX3J4cGt0czsKPj4+ICsJcnhxX2NvbmYuYWxsb2Nfcnhwa3RzX2FyZ3AgPSBhOwo+Pj4g
KyNpZmRlZiBDT05GSUdfTFdJUF9OT1RIUkVBRFMKPj4+ICsJLyoKPj4+ICsJICogSW4gbWFpbmxv
b3AgbW9kZSwgd2Ugd2lsbCBub3QgdXNlIGludGVycnVwdHMuCj4+PiArCSAqLwo+Pj4gKwlyeHFf
Y29uZi5jYWxsYmFjayA9IE5VTEw7Cj4+PiArCXJ4cV9jb25mLmNhbGxiYWNrX2Nvb2tpZSA9IE5V
TEw7Cj4+PiArI2Vsc2UgIC8qIENPTkZJR19MV0lQX05PVEhSRUFEUyAqLwo+Pj4gKwlyeHFfY29u
Zi5jYWxsYmFjayA9IHVrbmV0ZGV2X2lucHV0Owo+Pj4gKwlyeHFfY29uZi5jYWxsYmFja19jb29r
aWUgPSBuZjsKPj4+ICsjaWZkZWYgQ09ORklHX0xJQlVLTkVUREVWX0RJU1BBVENIRVJUSFJFQURT
Cj4+PiArCXJ4cV9jb25mLnMgPSB1a19zY2hlZF9nZXRfZGVmYXVsdCgpOwo+Pj4gKwlpZiAoIXJ4
cV9jb25mLnMpCj4+PiArCQlyZXR1cm4gRVJSX0lGOwo+Pj4gKwo+Pj4gKyNlbmRpZiAvKiBDT05G
SUdfTElCVUtORVRERVZfRElTUEFUQ0hFUlRIUkVBRFMgKi8KPj4+ICsjZW5kaWYgLyogQ09ORklH
X0xXSVBfTk9USFJFQURTICovCj4+PiArCXJldCA9IHVrX25ldGRldl9yeHFfY29uZmlndXJlKGRl
diwgMCwgMCwgJnJ4cV9jb25mKTsKPj4+ICsJaWYgKHJldCA8IDApIHsKPj4+ICsJCUxXSVBfREVC
VUdGKE5FVElGX0RFQlVHLAo+Pj4gKwkJCSAgICAoIiVzOiAlYyVjJXU6IEZhaWxlZCB0byBjb25m
aWd1cmUgcnggcXVldWUgb2YgbmV0ZGV2ICV1XG4iLAo+Pj4gKwkJCSAgICAgX19mdW5jX18sIG5m
LT5uYW1lWzBdLCBuZi0+bmFtZVsxXSwgbmYtPm51bSwKPj4+ICsJCQkgICAgIHVrX25ldGRldl9p
ZF9nZXQoZGV2KSkpOwo+Pj4gKwkJcmV0dXJuIEVSUl9JRjsKPj4+ICsJfQo+Pj4gKwo+Pj4gKwkv
Kgo+Pj4gKwkgKiBUcmFuc21pdCBxdWV1ZSwKPj4+ICsJICogdXNlIGRyaXZlciBkZWZhdWx0IGRl
c2NyaXB0b3JzCj4+PiArCSAqLwo+Pj4gKwl0eHFfY29uZi5hID0gYTsKPj4+ICsJcmV0ID0gdWtf
bmV0ZGV2X3R4cV9jb25maWd1cmUoZGV2LCAwLCAwLCAmdHhxX2NvbmYpOwo+Pj4gKwlpZiAocmV0
IDwgMCkgewo+Pj4gKwkJTFdJUF9ERUJVR0YoTkVUSUZfREVCVUcsCj4+PiArCQkJICAgICgiJXM6
ICVjJWMldTogRmFpbGVkIHRvIGNvbmZpZ3VyZSB0eCBxdWV1ZSBvZiBuZXRkZXYgJXVcbiIsCj4+
PiArCQkJICAgICBfX2Z1bmNfXywgbmYtPm5hbWVbMF0sIG5mLT5uYW1lWzFdLCBuZi0+bnVtLAo+
Pj4gKwkJCSAgICAgdWtfbmV0ZGV2X2lkX2dldChkZXYpKSk7Cj4+PiArCQlyZXR1cm4gRVJSX0lG
Owo+Pj4gKwl9Cj4+PiArCj4+PiArCS8qIFN0YXJ0IGludGVyZmFjZSAqLwo+Pj4gKwlyZXQgPSB1
a19uZXRkZXZfc3RhcnQoZGV2KTsKPj4+ICsJaWYgKHJldCA8IDApIHsKPj4+ICsJCUxXSVBfREVC
VUdGKE5FVElGX0RFQlVHLAo+Pj4gKwkJCSAgICAoIiVzOiAlYyVjJXU6IEZhaWxlZCB0byBzdGFy
dCBuZXRkZXYgJXVcbiIsCj4+PiArCQkJICAgICBfX2Z1bmNfXywgbmYtPm5hbWVbMF0sIG5mLT5u
YW1lWzFdLCBuZi0+bnVtLAo+Pj4gKwkJCSAgICAgdWtfbmV0ZGV2X2lkX2dldChkZXYpKSk7Cj4+
PiArCQlyZXR1cm4gRVJSX0lGOwo+Pj4gKwl9Cj4+PiArCj4+PiArCS8qIERyaXZlciBjYWxsYmFj
a3MgKi8KPj4+ICsjaWYgTFdJUF9JUFY0Cj4+PiArCW5mLT5vdXRwdXQgPSBldGhhcnBfb3V0cHV0
Owo+Pj4gKyNlbmRpZiAvKiBMV0lQX0lQVjQgKi8KPj4+ICsjaWYgTFdJUF9JUFY2Cj4+PiArCW5m
LT5vdXRwdXRfaXA2ID0gZXRoaXA2X291dHB1dDsKPj4+ICsjZW5kaWYgLyogTFdJUF9JUFY2ICov
Cj4+PiArCW5mLT5saW5rb3V0cHV0ID0gdWtuZXRkZXZfb3V0cHV0Owo+Pj4gKwo+Pj4gKwkvKiBU
T0RPOiBTZXQgcmVtb3ZlIGNhbGxiYWNrICovCj4+PiArCj4+PiArCS8qIERldmljZSBjYXBhYmls
aXRpZXMgKi8KPj4+ICsJbmV0aWZfc2V0X2ZsYWdzKG5mLCAoTkVUSUZfRkxBR19CUk9BRENBU1QK
Pj4+ICsJCQkgICAgIHwgTkVUSUZfRkxBR19FVEhBUlAKPj4+ICsJCQkgICAgIHwgTkVUSUZfRkxB
R19MSU5LX1VQKSk7Cj4+PiArCUxXSVBfREVCVUdGKE5FVElGX0RFQlVHLAo+Pj4gKwkJICAgICgi
JXM6ICVjJWMldTogZmxhZ3M6ICUiUFJJeDgiXG4iLAo+Pj4gKwkJICAgICBfX2Z1bmNfXywgbmYt
Pm5hbWVbMF0sIG5mLT5uYW1lWzFdLCBuZi0+bnVtLCBuZi0+ZmxhZ3MpKTsKPj4+ICsKPj4+ICsj
aWYgTFdJUF9DSEVDS1NVTV9DVFJMX1BFUl9ORVRJRgo+Pj4gKwkvKgo+Pj4gKwkgKiBDaGVja3N1
bSBzZXR0aW5ncwo+Pj4gKwkgKiBUT0RPOiBsaWJ1a25ldGRldiBkb2VzIG5vdCBzdXBwb3J0IGNo
ZWNrc3VtIGNhcGFiaWxpdGllcyB5ZXQuCj4+PiArCSAqICAgICAgIEJlY2F1c2Ugb2YgdGhpcywg
d2UgbmVlZCB0byBjYWxjdWxhdGUgdGhlIGNoZWNrc3VtIGZvciBldmVyeQo+Pj4gKwkgKiAgICAg
ICBvdXRnb2luZyBwYWNrZXQgaW4gc29mdHdhcmUuIFdlIGFzc3VtZSB0aGF0IHdlIHJlY2VpdmUg
cGFja2V0cwo+Pj4gKwkgKiAgICAgICBmcm9tIGEgdmlydHVhbCBpbnRlcmZhY2UsIHNvIHRoZSBo
b3N0IHdhcyBkb2luZyBhIGNoZWNrIGZvciB1cwo+Pj4gKwkgKiAgICAgICBhbHJlYWR5LiBJbiBj
YXNlIG9mIGd1ZXN0LXRvLWd1ZXN0IGNvbW11bmljYXRpb24sIHRoZSBjaGVja3N1bQo+Pj4gKwkg
KiAgICAgICBmaWVsZCBtYXkgYmUgaW5jb3JyZWN0IGJlY2F1c2UgdGhlIG90aGVyIGd1ZXN0IGV4
cGVjdHMgdGhhdCB0aGUKPj4+ICsJICogICAgICAgaG9zdCBpcyBvZmZsb2FkaW5nIHRoZSBjYWxj
dWxhdGlvbiB0byBoYXJkd2FyZSBhcyBzb29uIGFzIGEKPj4+ICsJICogICAgICAgcGFja2V0IGxl
YXZlcyB0aGUgcGh5c2ljYWwgaG9zdCBtYWNoaW5lLiBBdCB0aGlzIHBvaW50LCB0aGUKPj4+ICsJ
ICogICAgICAgYmVzdCB3ZSBjYW4gZG8gaXMgbm90IHRvIGNoZWNrIGFueSBjaGVja3N1bXMgb24g
aW5jb21pbmcKPj4+ICsJICogICAgICAgdHJhZmZpYyBhbmQgYXNzdW1lIGV2ZXJ5dGhpbmcgaXMg
ZmluZS4KPj4+ICsJICovCj4+PiArCU5FVElGX1NFVF9DSEVDS1NVTV9DVFJMKG5mLCAoTkVUSUZf
Q0hFQ0tTVU1fR0VOX0lQCj4+PiArCQkJCSAgICAgfCBORVRJRl9DSEVDS1NVTV9HRU5fVURQCj4+
PiArCQkJCSAgICAgfCBORVRJRl9DSEVDS1NVTV9HRU5fVENQCj4+PiArCQkJCSAgICAgfCBORVRJ
Rl9DSEVDS1NVTV9HRU5fSUNNUAo+Pj4gKwkJCQkgICAgIHwgTkVUSUZfQ0hFQ0tTVU1fR0VOX0lD
TVA2KSk7Cj4+PiArCUxXSVBfREVCVUdGKE5FVElGX0RFQlVHLAo+Pj4gKwkJICAgICgiJXM6ICVj
JWMldTogY2hrc3VtX2ZsYWdzOiAlIlBSSXgxNiJcbiIsCj4+PiArCQkgICAgIF9fZnVuY19fLCBu
Zi0+bmFtZVswXSwgbmYtPm5hbWVbMV0sIG5mLT5udW0sCj4+PiArCQkgICAgIG5mLT5jaGtzdW1f
ZmxhZ3MpKTsKPj4+ICsjZW5kaWYgLyogTFdJUF9DSEVDS1NVTV9DVFJMX1BFUl9ORVRJRiAqLwo+
Pj4gKwo+Pj4gKwkvKiBNQUMgYWRkcmVzcyAqLwo+Pj4gKwlVS19BU1NFUlQoTkVUSUZfTUFYX0hX
QUREUl9MRU4gPj0gVUtfTkVUREVWX0hXQUREUl9MRU4pOwo+Pj4gKwlod2FkZHIgPSB1a19uZXRk
ZXZfaHdhZGRyX2dldChkZXYpOwo+Pj4gKwlVS19BU1NFUlQoaHdhZGRyKTsKPj4+ICsJbmYtPmh3
YWRkcl9sZW4gPSBVS19ORVRERVZfSFdBRERSX0xFTjsKPj4+ICsJZm9yIChpID0gMDsgaSA8IFVL
X05FVERFVl9IV0FERFJfTEVOOyArK2kpCj4+PiArCQluZi0+aHdhZGRyW2ldID0gaHdhZGRyLT5h
ZGRyX2J5dGVzW2ldOwo+Pj4gKyNpZiBVS19ORVRERVZfSFdBRERSX0xFTiA9PSA2Cj4+PiArCUxX
SVBfREVCVUdGKE5FVElGX0RFQlVHLAo+Pj4gKwkJICAgICgiJXM6ICVjJWMldTogSGFyZHdhcmUg
YWRkcmVzczogJTAyIlBSSXg4IjolMDIiUFJJeDgiOiUwMiJQUkl4OCI6JTAyIlBSSXg4IjolMDIi
UFJJeDgiOiUwMiJQUkl4OCJcbiIsCj4+PiArCQkgICAgIF9fZnVuY19fLCBuZi0+bmFtZVswXSwg
bmYtPm5hbWVbMV0sIG5mLT5udW0sCj4+PiArCQkgICAgIG5mLT5od2FkZHJbMF0sIG5mLT5od2Fk
ZHJbMV0sIG5mLT5od2FkZHJbMl0sCj4+PiArCQkgICAgIG5mLT5od2FkZHJbM10sIG5mLT5od2Fk
ZHJbNF0sIG5mLT5od2FkZHJbNV0pKTsKPj4+ICsjZWxzZSAvKiBVS19ORVRERVZfSFdBRERSX0xF
TiAqLwo+Pj4gKwlMV0lQX0RFQlVHRihORVRJRl9ERUJVRywKPj4+ICsJCSAgICAoIiVzOiAlYyVj
JXU6IEhhcmR3YXJlIGFkZHJlc3Mgc2V0XG4iLAo+Pj4gKwkJICAgICBfX2Z1bmNfXywgbmYtPm5h
bWVbMF0sIG5mLT5uYW1lWzFdLCBuZi0+bnVtKSk7Cj4+PiArI2VuZGlmIC8qIFVLX05FVERFVl9I
V0FERFJfTEVOICovCj4+PiArCj4+PiArCS8qIE1heGltdW0gdHJhbnNmZXIgdW5pdCAqLwo+Pj4g
KwluZi0+bXR1ID0gdWtfbmV0ZGV2X210dV9nZXQoZGV2KTsKPj4+ICsJVUtfQVNTRVJUKG5mLT5t
dHUpOwo+Pj4gKwlMV0lQX0RFQlVHRihORVRJRl9ERUJVRywKPj4+ICsJCSAgICAoIiVzOiAlYyVj
JXU6IE1UVTogJXVcbiIsCj4+PiArCQkgICAgIF9fZnVuY19fLCBuZi0+bmFtZVswXSwgbmYtPm5h
bWVbMV0sIG5mLT5udW0sCj4+PiArCQkgICAgIG5mLT5tdHUpKTsKPj4+ICsKPj4+ICsjaWZuZGVm
IENPTkZJR19MV0lQX05PVEhSRUFEUwo+Pj4gKwkvKgo+Pj4gKwkgKiBXZSB3aWxsIHVzZSB0aGUg
c3RhdHVzIHVwZGF0ZSBjYWxsYmFjayB0byBlbmFibGUgYW5kIGRpc2FibGVkCj4+PiArCSAqIHJl
Y2VpdmUgcXVldWUgaW50ZXJydXB0cwo+Pj4gKwkgKi8KPj4+ICsJbmV0aWZfc2V0X3N0YXR1c19j
YWxsYmFjayhuZiwgdWtuZXRkZXZfdXBkb3duKTsKPj4+ICsjZW5kaWYgLyogIUNPTkZJR19MV0lQ
X05PVEhSRUFEUyAqLwo+Pj4gKwo+Pj4gKwkvKgo+Pj4gKwkgKiBJbml0aWFsaXplIHRoZSBzbm1w
IHZhcmlhYmxlcyBhbmQgY291bnRlcnMgaW5zaWRlIHRoZSBzdHJ1Y3QgbmV0aWYuCj4+PiArCSAq
IFRoZSBsYXN0IGFyZ3VtZW50IGlzIHRoZSBsaW5rIHNwZWVkLCBpbiB1bml0cyBvZiBiaXRzIHBl
ciBzZWNvbmQuCj4+PiArCSAqLwo+Pj4gKwlORVRJRl9JTklUX1NOTVAobmYsIHNubXBfaWZUeXBl
X2V0aGVybmV0X2NzbWFjZCwgVUtORVRERVZfQlBTKTsKPj4+ICsJTFdJUF9ERUJVR0YoTkVUSUZf
REVCVUcsCj4+PiArCQkgICAgKCIlczogJWMlYyV1OiBMaW5rIHNwZWVkOiAlIlBSSXUzMiIgYnBz
XG4iLAo+Pj4gKwkJICAgICBfX2Z1bmNfXywgbmYtPm5hbWVbMF0sIG5mLT5uYW1lWzFdLCBuZi0+
bnVtLAo+Pj4gKwkJICAgICBVS05FVERFVl9CUFMpKTsKPj4+ICsKPj4+ICsJcmV0dXJuIEVSUl9P
SzsKPj4+ICt9Cj4+PiArCj4+PiArI2lmIENPTkZJR19MV0lQX05PVEhSRUFEUwo+Pj4gKyNkZWZp
bmUgTkVUSUZfSU5QVVQgZXRoZXJuZXRfaW5wdXQKPj4+ICsjZWxzZSAvKiBDT05GSUdfTFdJUF9O
T1RIUkVBRFMgKi8KPj4+ICsjZGVmaW5lIE5FVElGX0lOUFVUIHRjcGlwX2lucHV0Cj4+PiArI2Vu
ZGlmIC8qQ09ORklHX0xXSVBfTk9USFJFQURTICovCj4+PiArCj4+PiArc3RydWN0IG5ldGlmICp1
a25ldGRldl9hZGRpZihzdHJ1Y3QgdWtfbmV0ZGV2ICpuCj4+PiArI2lmIExXSVBfSVBWNAo+Pj4g
KwkJCSAgICAgLAo+Pj4gKwkJCSAgICAgY29uc3QgaXA0X2FkZHJfdCAqaXBhZGRyLAo+Pj4gKwkJ
CSAgICAgY29uc3QgaXA0X2FkZHJfdCAqbmV0bWFzaywKPj4+ICsJCQkgICAgIGNvbnN0IGlwNF9h
ZGRyX3QgKmd3Cj4+PiArI2VuZGlmIC8qIExXSVBfSVBWNCAqLwo+Pj4gKwkpCj4+PiArewo+Pj4g
KwkvKgo+Pj4gKwkgKiBUaGlzIHBvaW50ZXIgYW5kIFVLX1JFQURfT05DRSBvbiBpdCBpcyBhbiB1
Z2x5IHdvcmthcm91bmQKPj4+ICsJICogYWdhaW5zdCBhIHByZXR0eSB3ZWlyZCBwcm9ibGVtLiBX
aXRob3V0IGl0LCB0aGUgbGFzdAo+Pj4gKwkgKiBwYXJhbWV0ZXIgb2YgbmV0aWZfYWRkIHBhc3Nl
ZCBhcyBOVUxMLiBJdCBzZWVtcyB0byBiZSBhCj4+PiArCSAqIGJ1aWxkIHRpbWUgcHJvYmxlbSBi
ZWNhdXNlOgo+Pj4gKwkgKgo+Pj4gKwkgKiAtIE1vdmluZyAiaW5wdXQiIHBhcmFtZXRlciB0byB0
aGUgZmlyc3QgcG9zaXRpb25zIGhlbHBzCj4+PiArCSAqIC0gUmVtb3Zpbmcgb25lIHBhcmFtZXRl
ciBoZWxwcy4gU2VlbXMgZG9lcyBub3QgbWF0dGVyIHdoaWNoCj4+PiArCSAqIC0gQW4gZXh0cmEg
cGFyYW1ldGVyIGFkZGVkIGFmdGVyICJpbnB1dCIgd29ya3Mgd2VsbC4gQW5kCj4+PiArCSAqICAg
aW5wdXQgaXMgc3RpbGwgTlVMTCBpbiB0aGlzIGNhc2UKPj4+ICsJICogLSBTd2FwcGluZyAiaW5p
dCIgYW5kICJpbnB1dCIgaGVscHMKPj4+ICsJICovCj4+PiArCXN0YXRpYyBjb25zdCB2b2lkICpw
ZXRoZXJuZXRfaW5wdXQgPSBORVRJRl9JTlBVVDsKPj4+ICsJc3RydWN0IG5ldGlmICpuZjsKPj4+
ICsJc3RydWN0IG5ldGlmICpyZXQ7Cj4+PiArCj4+PiArCW5mID0gbWVtX2NhbGxvYygxLCBzaXpl
b2YoKm5mKSk7Cj4+PiArCWlmICghbmYpCj4+PiArCQlyZXR1cm4gTlVMTDsKPj4+ICsKPj4+ICsJ
cmV0ID0gbmV0aWZfYWRkKG5mLAo+Pj4gKyNpZiBMV0lQX0lQVjQKPj4+ICsJCQlpcGFkZHIsIG5l
dG1hc2ssIGd3LAo+Pj4gKyNlbmRpZiAvKiBMV0lQX0lQVjQgKi8KPj4+ICsJCQluLCB1a25ldGRl
dl9pbml0LCBVS19SRUFEX09OQ0UocGV0aGVybmV0X2lucHV0KSk7Cj4+PiArCVVLX0FTU0VSVChu
Zi0+aW5wdXQpOwo+Pj4gKwo+Pj4gKwlpZiAoIXJldCkgewo+Pj4gKwkJbWVtX2ZyZWUobmYpOwo+
Pj4gKwkJcmV0dXJuIE5VTEw7Cj4+PiArCX0KPj4+ICsKPj4+ICsJcmV0dXJuIHJldDsKPj4+ICt9
Cj4gCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5p
b3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpo
dHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Feb 11 18:30:28 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 11 Feb 2019 18:30:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gtGLa-0000Ig-2q; Mon, 11 Feb 2019 18:30:26 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=ktH6=QS=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1gtGLY-0000Hn-Gy
 for minios-devel@lists.xenproject.org; Mon, 11 Feb 2019 18:30:24 +0000
X-Inumbo-ID: 17097d7a-2e2b-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 17097d7a-2e2b-11e9-bc90-bc764e045a96;
 Mon, 11 Feb 2019 18:30:22 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 1AFB3104DBD;
 Mon, 11 Feb 2019 19:30:21 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 5QsNbgqgI1UR; Mon, 11 Feb 2019 19:30:20 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id DAB05104DBE
 for <minios-devel@lists.xenproject.org>; Mon, 11 Feb 2019 19:30:18 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 11 Feb 2019 19:30:18
 +0100
To: <minios-devel@lists.xenproject.org>
References: <20190208103808.42775-1-simon.kuenzer@neclab.eu>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <fa0bee3d-2b8b-bac3-53ee-66653791f567@neclab.eu>
Date: Mon, 11 Feb 2019 19:30:18 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190208103808.42775-1-simon.kuenzer@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH] plat/kvm: Disconnect console
 options from ukdebug
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gU2ltb24sCgpUaGlzIHBhdGNoIHNlZW1zIGZpbmUuCgoKUmV2aWV3ZWQtYnk6IFNoYXJh
biBTYW50aGFuYW0gPHNoYXJhbi5zYW50aGFuYW1AbmVjbGFiLmV1PgoKVGhhbmtzICYgUmVnYXJk
cwpTaGFyYW4KCk9uIDIvOC8xOSAxMTozOCBBTSwgU2ltb24gS3VlbnplciB3cm90ZToKPiBMaWtl
IG9uIHRoZSBvdGhlciBwbGF0Zm9ybXMsIHRoZSBjb25zb2xlIG9wdGlvbnMgZm9yIGRlYnVnZ2lu
Zwo+IG1lc3NhZ2VzIHNob3VsZCBub3QgYmUgaGlkZGVuIHdoZW4gZ2xvYmFsIGRlYnVnIG91dHB1
dCBpcyBub3QKPiBlbmFibGVkLiBPbmUgbWF5IHN0aWxsIHdhbnQgdG8gZW5hYmxlIGluZGl2aWR1
YWwgZGVidWdnaW5nIGZvciBhCj4gcGFydGljdWxhciBsaWJyYXJ5IG9yIGZpbGUuIFRoaXMgY29t
bWl0IG1ha2VzIHRoaXMgY29uZmlndXJhdGlvbgo+IG9wdGlvbiBpbmRlcGVuZGVudCBpbiB0aGUg
bWVudS4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5l
Y2xhYi5ldT4KPiAtLS0KPiAgIHBsYXQva3ZtL0NvbmZpZy51ayB8IDQgKystLQo+ICAgMSBmaWxl
IGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0
IGEvcGxhdC9rdm0vQ29uZmlnLnVrIGIvcGxhdC9rdm0vQ29uZmlnLnVrCj4gaW5kZXggNGEyMGEx
MGUuLjVhNmRmYzE0IDEwMDY0NAo+IC0tLSBhL3BsYXQva3ZtL0NvbmZpZy51awo+ICsrKyBiL3Bs
YXQva3ZtL0NvbmZpZy51awo+IEBAIC0zMSwxNCArMzEsMTQgQEAgY29uZmlnIEtWTV9LRVJORUxf
VkdBX0NPTlNPTEUKPiAgIGNvbmZpZyBLVk1fREVCVUdfU0VSSUFMX0NPTlNPTEUKPiAgICAgICAg
ICAgYm9vbCAiU2VyaWFsIGNvbnNvbGUgZm9yIHRoZSBkZWJ1ZyBwcmludHMiCj4gICAgICAgICAg
IGRlZmF1bHQgeQo+IC0gICAgICAgIGRlcGVuZHMgb24gKExJQlVLREVCVUdfUFJJTlREICYmIChB
UkNIX1g4Nl82NCB8fCBBUkNIX0FSTV82NCkpCj4gKyAgICAgICAgZGVwZW5kcyBvbiAoQVJDSF9Y
ODZfNjQgfHwgQVJDSF9BUk1fNjQpCj4gICAgICAgICAgIGhlbHAKPiAgICAgICAgICAgICBDaG9v
c2Ugc2VyaWFsIGNvbnNvbGUgZm9yIHRoZSBkZWJ1ZyBwcmludGluZwo+ICAgCj4gICBjb25maWcg
S1ZNX0RFQlVHX1ZHQV9DT05TT0xFCj4gICAgICAgICAgIGJvb2wgIlZHQSBjb25zb2xlIGZvciB0
aGUgZGVidWcgcHJpbnRzIgo+ICAgICAgICAgICBkZWZhdWx0IHkKPiAtICAgICAgICBkZXBlbmRz
IG9uIChMSUJVS0RFQlVHX1BSSU5URCAmJiBBUkNIX1g4Nl82NCkKPiArICAgICAgICBkZXBlbmRz
IG9uIEFSQ0hfWDg2XzY0Cj4gICAgICAgICAgIGhlbHAKPiAgICAgICAgICAgICBDaG9vc2UgVkdB
IGNvbnNvbGUgZm9yIHRoZSBkZWJ1ZyBwcmludGluZwo+ICAgZW5kbWVudQo+IAoKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxp
bmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54
ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Tue Feb 12 13:03:28 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 12 Feb 2019 13:03:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gtXif-0006sj-FU; Tue, 12 Feb 2019 13:03:25 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=WjiA=QT=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1gtXid-0006se-Vk
 for minios-devel@lists.xen.org; Tue, 12 Feb 2019 13:03:24 +0000
X-Inumbo-ID: 91cfb964-2ec6-11e9-b580-7fe166d81ce4
Received: from queen.nlehd.de (unknown [195.37.154.80])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id 91cfb964-2ec6-11e9-b580-7fe166d81ce4;
 Tue, 12 Feb 2019 13:03:19 +0000 (UTC)
Received: from c414.ant-net (c414.ant-net [192.168.0.156])
 by queen.nlehd.de (Postfix) with ESMTP id 9623A413FB;
 Tue, 12 Feb 2019 14:03:20 +0100 (CET)
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: minios-devel@lists.xen.org
Date: Tue, 12 Feb 2019 14:03:11 +0100
Message-Id: <20190212130311.24165-1-simon.kuenzer@neclab.eu>
X-Mailer: git-send-email 2.11.0
Subject: [Minios-devel] [UNIKRAFT PATCH v2] plat/xen: arm: Initialize the
 bss section to 0
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Dafna Hirschfeld <dafna3@gmail.com>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>, sharan.santhanam@neclab.eu
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

RnJvbTogRGFmbmEgSGlyc2NoZmVsZCA8ZGFmbmEzQGdtYWlsLmNvbT4KCkNsZWFyIHRoZSBic3Mg
c2VjdGlvbiBkdXJpbmcgYm9vdCBzbyB0aGF0IGl0IGlzIGluaXRpYWxpemVkIHdpdGggMC4KQWRk
aXRvbmFsbHksIHdlIG1ha2Ugc3VyZSB3aXRoIHRoZSBsaW5rZXIgc2NyaXB0IHRoYXQgYWxsCmJz
cy1yZWxhdGVkIHN5bWJvbHMgYXJlIHBsYWNlZCB3aXRoaW4gdGhlIGJzcyBhcmVhIG1hcmtlZCB3
aXRoCl9lbmQgYW5kIF9fYnNzX3N0YXJ0IHdoZW4gdGhlIGNvbXBpbGUgb3B0aW9uICJkcm9wcGlu
ZyBvZiB1bnVzZWQKc3ltYm9scyIgaXMgZW5hYmxlZC4KClNpZ25lZC1vZmYtYnk6IERhZm5hIEhp
cnNjaGZlbGQgPGRhZm5hM0BnbWFpbC5jb20+ClNpZ25lZC1vZmYtYnk6IFNpbW9uIEt1ZW56ZXIg
PHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1PgotLS0KIHBsYXQveGVuL2FybS9saW5rMzIubGRzIHwg
MiArLQogcGxhdC94ZW4vYXJtL3NldHVwLmMgICAgfCA3ICsrKysrKysKIDIgZmlsZXMgY2hhbmdl
ZCwgOCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvcGxhdC94ZW4v
YXJtL2xpbmszMi5sZHMgYi9wbGF0L3hlbi9hcm0vbGluazMyLmxkcwppbmRleCA0NTA4ZTA1ZC4u
YzVkODMwMDggMTAwNjQ0Ci0tLSBhL3BsYXQveGVuL2FybS9saW5rMzIubGRzCisrKyBiL3BsYXQv
eGVuL2FybS9saW5rMzIubGRzCkBAIC04Nyw3ICs4Nyw3IEBAIFNFQ1RJT05TCiAKIAkJX19ic3Nf
c3RhcnQgPSAuOwogCQkqKC5ic3MpCi0JCSooLmFwcC5ic3MpCisJCSooLmJzcy4qKQogCX0KIAlf
ZW5kID0gLiA7CiAKZGlmZiAtLWdpdCBhL3BsYXQveGVuL2FybS9zZXR1cC5jIGIvcGxhdC94ZW4v
YXJtL3NldHVwLmMKaW5kZXggNGI5ZWZlNTMuLmI5MWMwYmRiIDEwMDY0NAotLS0gYS9wbGF0L3hl
bi9hcm0vc2V0dXAuYworKysgYi9wbGF0L3hlbi9hcm0vc2V0dXAuYwpAQCAtMTkzLDYgKzE5Mywx
MyBAQCB2b2lkIF9saWJ4ZW5wbGF0X2FybWVudHJ5KHZvaWQgKmR0Yl9wb2ludGVyLCB1aW50MzJf
dCBwaHlzaWNhbF9vZmZzZXQpCiB7CiAJdWtfcHJfaW5mbygiRW50ZXJpbmcgZnJvbSBYZW4gKGFy
bSkuLi5cbiIpOwogCisJLyogWmVybydpbmcgb3V0IHRoZSBic3Mgc2VjdGlvbiAqLworCS8qCisJ
ICogVE9ETzogSXQgcHJvYmFibHkgbWFrZXMgc2Vuc2UgdG8gbW92ZSB0aGlzIHRvIHRoZSBlYXJs
eQorCSAqIHBsYXRmb3JtIGVudHJ5IGFzc2VtYmx5IGNvZGUuCisJICovCisJbWVtc2V0KCZfX2Jz
c19zdGFydCwgMCwgJl9lbmQgLSAmX19ic3Nfc3RhcnQpOworCiAJX2luaXRfZHRiKGR0Yl9wb2lu
dGVyKTsKIAlfZHRiX2luaXRfbWVtKHBoeXNpY2FsX29mZnNldCk7IC8qIHJlbG9jYXRlcyBkdGIg
Ki8KIAl1a19wcl9pbmZvKCIgICAgICAgICAgIGR0YjogJXBcbiIsIEhZUEVSVklTT1JfZHRiKTsK
LS0gCjIuMTEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2pl
Y3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5p
b3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Feb 12 14:21:49 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 12 Feb 2019 14:21:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gtYwV-000604-Lr; Tue, 12 Feb 2019 14:21:47 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=WjiA=QT=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1gtYwU-0005zz-Bz
 for minios-devel@lists.xen.org; Tue, 12 Feb 2019 14:21:46 +0000
X-Inumbo-ID: 8422fc94-2ed1-11e9-aeef-6bd8f4e11ebf
Received: from queen.nlehd.de (unknown [195.37.154.80])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id 8422fc94-2ed1-11e9-aeef-6bd8f4e11ebf;
 Tue, 12 Feb 2019 14:21:41 +0000 (UTC)
Received: from c414.ant-net (c414.ant-net [192.168.0.156])
 by queen.nlehd.de (Postfix) with ESMTP id 1A45B413FB;
 Tue, 12 Feb 2019 15:21:42 +0100 (CET)
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: minios-devel@lists.xen.org
Date: Tue, 12 Feb 2019 15:21:39 +0100
Message-Id: <20190212142139.28787-1-simon.kuenzer@neclab.eu>
X-Mailer: git-send-email 2.11.0
Subject: [Minios-devel] [UNIKRAFT PATCH] plat/xen: Arm32,
 x86_64: Unify linker scripts
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Simon Kuenzer <simon.kuenzer@neclab.eu>, sharan.santhanam@neclab.eu
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VW5pZnkgbGlua2VyIHNjcmlwdHMgb2YgYm90aCBhcmNoaXRlY3R1cmVzIG9mIHRoZSBYZW4gcGxh
dGZvcm0uCkZvciBzaW1wbGljaXR5LCB0aGUgbGF5b3V0IGFuZCBsaW5rZXItcHJvdmlkZWQgc3lt
Ym9scyBzaG91bGQKYmUgYXMgY2xvc2UgYXMgcG9zc2libGUuCgpTaWduZWQtb2ZmLWJ5OiBTaW1v
biBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4KLS0tCiBwbGF0L3hlbi9hcm0vbGlu
azMyLmxkcyB8IDIwICsrKysrKysrKysrKysrLS0tLS0tCiBwbGF0L3hlbi94ODYvbGluazY0Lmxk
cyB8IDE4ICsrKysrKysrKysrKystLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAyNyBpbnNlcnRpb25z
KCspLCAxMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9wbGF0L3hlbi9hcm0vbGluazMyLmxk
cyBiL3BsYXQveGVuL2FybS9saW5rMzIubGRzCmluZGV4IGM1ZDgzMDA4Li5jZTIwMGI2NyAxMDA2
NDQKLS0tIGEvcGxhdC94ZW4vYXJtL2xpbmszMi5sZHMKKysrIGIvcGxhdC94ZW4vYXJtL2xpbmsz
Mi5sZHMKQEAgLTcyLDMxICs3MiwzOSBAQCBTRUNUSU9OUwogCQlLRUVQICgqKC5pbml0X2FycmF5
IC5jdG9ycykpCiAJCVBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CiAJfQor
CS4gPSBBTElHTig0MDk2KTsKIAlfZWN0b3JzID0gLjsKIAotCS5kYXRhIDogewkJCS8qIERhdGEg
Ki8KLQkJX2RhdGEgPSAuOworCS8qIERhdGEgKi8KKwlfZGF0YSA9IC47CisJLmRhdGEgOiB7CiAJ
CSooLmRhdGEpCisJCSooLmRhdGEuKikKIAl9CisJX2VkYXRhID0gLjsgLyogRW5kIG9mIGRhdGEg
aW5jbHVkZWQgaW4gaW1hZ2UgKi8KIAotCS8qIE5vdGU6IGxpbmtlciB3aWxsIGluc2VydCBhbnkg
ZXh0cmEgc2VjdGlvbnMgaGVyZSwganVzdCBiZWZvcmUgLmJzcyAqLworCS8qCisJICogTk9URTog
bGlua2VyIHdpbGwgaW5zZXJ0IGFueSBleHRyYSBzZWN0aW9ucyBoZXJlLAorCSAqIGp1c3QgYmVm
b3JlIC5ic3MKKwkgKi8KIAogCS5ic3MgOiB7Ci0JCV9lZGF0YSA9IC47CQkvKiBFbmQgb2YgZGF0
YSBpbmNsdWRlZCBpbiBpbWFnZSAqLwotCQkvKiBOb3RoaW5nIGFmdGVyIGhlcmUgaXMgaW5jbHVk
ZWQgaW4gdGhlIHpJbWFnZSdzIHNpemUgKi8KLQogCQlfX2Jzc19zdGFydCA9IC47CiAJCSooLmJz
cykKIAkJKiguYnNzLiopCiAJfQorCS4gPSBBTElHTig0MDk2KTsKIAlfZW5kID0gLiA7CiAKKwog
CS8qIFNlY3Rpb25zIHRvIGJlIGRpc2NhcmRlZCAqLworCS8qIFRPRE86IFJldmlzaXQgd2hlbiB3
ZSBoYXZlIGEgc29sdXRpb24gZm9yIGRpc2NhcmRlZCBzZWN0aW9ucwogCS9ESVNDQVJELyA6IHsK
IAkJKigudGV4dC5leGl0KQogCQkqKC5kYXRhLmV4aXQpCiAJCSooLmV4aXRjYWxsLmV4aXQpCiAJ
fQorCSovCiAKIAkvKiBTdGFicyBkZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLwogCS5zdGFiIDAgOiB7
ICooLnN0YWIpIH0KZGlmZiAtLWdpdCBhL3BsYXQveGVuL3g4Ni9saW5rNjQubGRzIGIvcGxhdC94
ZW4veDg2L2xpbms2NC5sZHMKaW5kZXggNTM5MWRiZGEuLmRjZTBiYWYyIDEwMDY0NAotLS0gYS9w
bGF0L3hlbi94ODYvbGluazY0LmxkcworKysgYi9wbGF0L3hlbi94ODYvbGluazY0LmxkcwpAQCAt
NjIsMjQgKzYyLDMyIEBAIFNFQ1RJT05TCiAJCUtFRVAgKCooLmluaXRfYXJyYXkgLmN0b3JzKSkK
IAkJUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKIAl9CisJLiA9IEFMSUdO
KDQwOTYpOwogCV9lY3RvcnMgPSAuOwogCisJLyogRGF0YSAqLwogCV9kYXRhID0gLjsKLQkuZGF0
YSA6IHsJCQkvKiBEYXRhICovCisJLmRhdGEgOiB7CiAJCSooLmRhdGEpCisJCSooLmRhdGEuKikK
IAl9CisJX2VkYXRhID0gLjsgLyogRW5kIG9mIGRhdGEgaW5jbHVkZWQgaW4gaW1hZ2UgKi8KIAot
CV9lZGF0YSA9IC47CQkJLyogRW5kIG9mIGRhdGEgc2VjdGlvbiAqLworCS8qCisJICogTk9URTog
bGlua2VyIHdpbGwgaW5zZXJ0IGFueSBleHRyYSBzZWN0aW9ucyBoZXJlLAorCSAqIGp1c3QgYmVm
b3JlIC5ic3MKKwkgKi8KIAotCV9fYnNzX3N0YXJ0ID0gLjsJCS8qIEJTUyAqLwogCS5ic3MgOiB7
CisJCV9fYnNzX3N0YXJ0ID0gLjsKIAkJKiguYnNzKQotCQkuID0gQUxJR04oNDA5Nik7CisJCSoo
LmJzcy4qKQogCX0KKwkuID0gQUxJR04oNDA5Nik7CiAJX2VuZCA9IC4gOwogCiAJLyogU2VjdGlv
bnMgdG8gYmUgZGlzY2FyZGVkICovCi0JLyogVE9ETyByZXZpc2l0IHdoZW4gd2UgaGF2ZSBhIHJl
c29sdXRpb24gZm9yIGRpc2NhcmRlZCBzZWN0aW9ucworCS8qIFRPRE86IFJldmlzaXQgd2hlbiB3
ZSBoYXZlIGEgc29sdXRpb24gZm9yIGRpc2NhcmRlZCBzZWN0aW9ucwogCS9ESVNDQVJELyA6IHsK
IAkJKigudGV4dC5leGl0KQogCQkqKC5kYXRhLmV4aXQpCi0tIAoyLjExLjAKCgpfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGlu
ZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhl
bnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Feb 12 14:24:06 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 12 Feb 2019 14:24:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gtYyj-00063O-UR; Tue, 12 Feb 2019 14:24:05 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Qgoy=QT=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1gtYyi-00063J-PF
 for minios-devel@lists.xen.org; Tue, 12 Feb 2019 14:24:04 +0000
X-Inumbo-ID: d755e857-2ed1-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id d755e857-2ed1-11e9-bc90-bc764e045a96;
 Tue, 12 Feb 2019 14:24:01 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 650EC104DD6;
 Tue, 12 Feb 2019 15:24:00 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id N-_bXC8MuIHU; Tue, 12 Feb 2019 15:24:00 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 40FC4104DCA
 for <minios-devel@lists.xen.org>; Tue, 12 Feb 2019 15:23:58 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 12 Feb 2019 15:23:58
 +0100
To: Simon Kuenzer <simon.kuenzer@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190211144801.21270-1-simon.kuenzer@neclab.eu>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <c3fba70e-5274-2477-b87d-b237f4322dab@neclab.eu>
Date: Tue, 12 Feb 2019 15:23:57 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190211144801.21270-1-simon.kuenzer@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2] plat/xen: Grant table
 support as menu option
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: florian.schmidt@neclab.eu
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gU2ltb24sCgpQbGVhc2UgZmluZCB0aGUgY29tbWVudCBpbmxpbmUuCgpUaGFua3MgJiBS
ZWdhcmRzClNoYXJhbgoKT24gMi8xMS8xOSAzOjQ4IFBNLCBTaW1vbiBLdWVuemVyIHdyb3RlOgo+
IEludHJvZHVjZXMgYSBtZW51IG9wdGlvbiB0byBlbmFibGUgb3IgZGlzYWJsZSBncmFudCB0YWJs
ZSBzdXBwb3J0Lgo+IFRoZSByZWFzb24gaXMgdGhhdCBvdXIgZ3JhbnQgdGFibGUgaW1wbGVtZW50
YXRpb24gZGVwZW5kcyBvbgo+IGxpYnVrbG9jaywgbGlidWtzY2hlZCwgYW5kIGxpYnVrYWxsb2Mu
IEEgbWluaW1hbCByZXF1aXJlcyB0aGVzZQo+IGxpYnJhcmllcyBzZWxlY3RlZCwgdG9vLiBUaGlz
IG1heSBiZSBhbiBvYnN0YWNsZSB3aGVuIHJ1bm5pbmcgZHJpdmVyCj4gaW1wbGVtZW50YXRpb24g
aW4gaGlnaGVyLWxldmVsIGxhbmd1YWdlcy4gQWRkaXRpb25hbGx5LCBzb21lIG9mCj4gdGhlc2Ug
bGlicmFyaWVzIGFyZSBjdXJyZW5sdHkgbm90IHN1cHBvcnRlZCBvbiBBcm0uIEl0IGlzCj4gd2lz
ZXIgdG8gZ2l2ZSBhbiBvcHRpb24gZm9yIGRpc2FibGluZyBncmFudCB0YWJsZSBzdXBwb3J0Lgo+
IAo+IFNpZ25lZC1vZmYtYnk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1
Pgo+IC0tLQo+ICAgcGxhdC94ZW4vQ29uZmlnLnVrICAgICAgICAgICAgICAgfCAyMCArKysrKysr
KysrKysrKystLS0tLQo+ICAgcGxhdC94ZW4vTWFrZWZpbGUudWsgICAgICAgICAgICAgfCAgNSAr
KysrLQo+ICAgcGxhdC94ZW4vaW5jbHVkZS9jb21tb24vZ250dGFiLmggfCAgNiArKysrKysKPiAg
IHBsYXQveGVuL21lbW9yeS5jICAgICAgICAgICAgICAgIHwgIDIgKysKPiAgIDQgZmlsZXMgY2hh
bmdlZCwgMjcgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEv
cGxhdC94ZW4vQ29uZmlnLnVrIGIvcGxhdC94ZW4vQ29uZmlnLnVrCj4gaW5kZXggZDAxNDNlOTUu
LjljZmU5MGEyIDEwMDY0NAo+IC0tLSBhL3BsYXQveGVuL0NvbmZpZy51awo+ICsrKyBiL3BsYXQv
eGVuL0NvbmZpZy51awo+IEBAIC0zLDggKzMsNiBAQCBtZW51Y29uZmlnIFBMQVRfWEVOCj4gICAg
ICAgICAgZGVmYXVsdCBuCj4gICAgICAgICAgZGVwZW5kcyBvbiAoQVJDSF9YODZfMzIgfHwgQVJD
SF9YODZfNjQgfHwgQVJDSF9BUk1fMzIpCj4gICAgICAgICAgc2VsZWN0IExJQlVLREVCVUcKPiAt
ICAgICAgIHNlbGVjdCBMSUJVS0xPQ0sKPiAtICAgICAgIHNlbGVjdCBMSUJVS0xPQ0tfU0VNQVBI
T1JFCj4gICAgICAgICAgc2VsZWN0IExJQk5PTElCQyBpZiAhSEFWRV9MSUJDCj4gICAgICAgICAg
c2VsZWN0IExJQkZEVCBpZiBBUkNIX0FSTV8zMgo+ICAgICAgICAgIHNlbGVjdCBYRU5fREJHRU1F
UkdFTkNZIGlmIEFSQ0hfQVJNXzMyCj4gQEAgLTIxLDExICsxOSwyMyBAQCBpZiAoUExBVF9YRU4p
Cj4gICAJCW9wdGlvbiBpcyBlbmFibGVkIHRoZSBoeXBlcnZpc29yIGNvbnNvbGUgaXMgdXNlZAo+
ICAgCQlmb3Iga2VybmVsIG1lc3NhZ2VzIG9ubHkuCj4gICAKPiArY29uZmlnIFhFTl9HTlRUQUIK
PiArCWJvb2wgIkdyYW50IHRhYmxlIHN1cHBvcnQiCj4gKwlkZWZhdWx0IHkKPiArCWRlcGVuZHMg
b24gKEFSQ0hfWDg2XzY0KQo+ICsJc2VsZWN0IExJQlVLQUxMT0MKPiArCXNlbGVjdCBMSUJVS0xP
Q0sKPiArCXNlbGVjdCBMSUJVS0xPQ0tfU0VNQVBIT1JFCj4gKwlzZWxlY3QgTElCVUtTQ0hFRAo+
ICsJaGVscAo+ICsJCVN1cHBvcnQgZ3JhbnQgdGFibGUgb3BlcmF0aW9ucwo+ICsKPiAgIG1lbnVj
b25maWcgWEVOX1hFTkJVUwo+IC0JYm9vbCAiWGVuYnVzIERyaXZlciIKPiArCWJvb2wgIlhlbmJ1
cy9YZW5TdG9yZSBkcml2ZXIiCj4gICAJZGVmYXVsdCBuCj4gLQlkZXBlbmRzIG9uIChBUkNIX1g4
Nl82NCkKPiArCWRlcGVuZHMgb24gWEVOX0dOVFRBQgpXaHkgZG8gd2UgaW50cm9kdWNlIHRoZSBk
ZXBlbmRlbmN5IG9uIHRoZSBHcmFudCB0YWJsZS4gVGhlIHhlbmJ1cyBzZWVtcyAKdG8gaGF2ZSBh
IGRlcGVuZGVuY3kgb24gdGhlIExJQlVLQUxMT0MgYW5kIExJQlVLU0NIRUQuCgo+ICAgCXNlbGVj
dCBMSUJVS0JVUwo+ICAgCWhlbHAKPiAtCQlSZWdpc3RlciBhIFhlbmJ1cyBkcml2ZXIgYXMgdWtf
YnVzCj4gKwkJUmVnaXN0ZXJzIFhlbmJ1cyBhcyBidXMgZHJpdmVyIHRvIGxpYnVrYnVzIGFuZCBw
cm92aWRlcyBhCj4gKwkJWGVuU3RvcmUgY29tbXVuaWNhdGlvbiBBUEkgZm9yIFhlbiBkcml2ZXJz
Cj4gICBlbmRpZgo+IGRpZmYgLS1naXQgYS9wbGF0L3hlbi9NYWtlZmlsZS51ayBiL3BsYXQveGVu
L01ha2VmaWxlLnVrCj4gaW5kZXggMzhiNTEwYWQuLjM0MzlhMGQ5IDEwMDY0NAo+IC0tLSBhL3Bs
YXQveGVuL01ha2VmaWxlLnVrCj4gKysrIGIvcGxhdC94ZW4vTWFrZWZpbGUudWsKPiBAQCAtNDUs
NyArNDUsNiBAQCBMSUJYRU5QTEFUX1NSQ1MtJChDT05GSUdfQVJDSF9YODZfNjQpICs9ICQoTElC
WEVOUExBVF9CQVNFKS94ODYvZW50cnk2NC5TCj4gICBMSUJYRU5QTEFUX1NSQ1MtJChDT05GSUdf
QVJDSF9YODZfNjQpICs9ICQoTElCWEVOUExBVF9CQVNFKS94ODYvbW0uYwo+ICAgTElCWEVOUExB
VF9TUkNTLSQoQ09ORklHX0FSQ0hfWDg2XzY0KSArPSAkKExJQlhFTlBMQVRfQkFTRSkveDg2L2Fy
Y2hfZXZlbnRzLmMKPiAgIExJQlhFTlBMQVRfU1JDUy0kKENPTkZJR19BUkNIX1g4Nl82NCkgKz0g
JChMSUJYRU5QTEFUX0JBU0UpL3g4Ni9hcmNoX3RpbWUuYwo+IC1MSUJYRU5QTEFUX1NSQ1MtJChD
T05GSUdfQVJDSF9YODZfNjQpICs9ICQoTElCWEVOUExBVF9CQVNFKS94ODYvZ250dGFiLmN8eDg2
Cj4gICAKPiAgIGlmbmVxICgkKFhFTl9IVk1MSVRFKSx5KQo+ICAgTElCWEVOUExBVF9BU0ZMQUdT
LXkgICAgICAgICAgICs9IC1EQ09ORklHX1BBUkFWSVJUCj4gQEAgLTczLDcgKzcyLDExIEBAIExJ
QlhFTlBMQVRfU1JDUy15ICAgICAgICAgICAgICArPSAkKExJQlhFTlBMQVRfQkFTRSkvbGNwdS5j
Cj4gICBMSUJYRU5QTEFUX1NSQ1MteSAgICAgICAgICAgICAgKz0gJChMSUJYRU5QTEFUX0JBU0Up
L2NvbnNvbGUuYwo+ICAgTElCWEVOUExBVF9TUkNTLXkgICAgICAgICAgICAgICs9ICQoTElCWEVO
UExBVF9CQVNFKS9zaHV0ZG93bi5jCj4gICBMSUJYRU5QTEFUX1NSQ1MteSAgICAgICAgICAgICAg
Kz0gJChMSUJYRU5QTEFUX0JBU0UpL2V2ZW50cy5jCj4gKwo+ICtpZmVxICgkKENPTkZJR19YRU5f
R05UVEFCKSx5KQo+ICAgTElCWEVOUExBVF9TUkNTLXkgICAgICAgICAgICAgICs9ICQoTElCWEVO
UExBVF9CQVNFKS9nbnR0YWIuYwo+ICtMSUJYRU5QTEFUX1NSQ1MtJChDT05GSUdfQVJDSF9YODZf
NjQpICs9ICQoTElCWEVOUExBVF9CQVNFKS94ODYvZ250dGFiLmN8eDg2Cj4gK2VuZGlmCj4gICAK
PiAgIGlmZXEgKCQoQ09ORklHX1hFTl9YRU5CVVMpLHkpCj4gICBMSUJYRU5CVVNfRVhQT1JUUyAg
ICAgICAgICAgICAgID0gJChMSUJYRU5QTEFUX0JBU0UpL3hlbmJ1cy9leHBvcnRzeW1zLnVrCj4g
ZGlmZiAtLWdpdCBhL3BsYXQveGVuL2luY2x1ZGUvY29tbW9uL2dudHRhYi5oIGIvcGxhdC94ZW4v
aW5jbHVkZS9jb21tb24vZ250dGFiLmgKPiBpbmRleCBkNGJiNDE3Mi4uZjVjZGU1YzUgMTAwNjQ0
Cj4gLS0tIGEvcGxhdC94ZW4vaW5jbHVkZS9jb21tb24vZ250dGFiLmgKPiArKysgYi9wbGF0L3hl
bi9pbmNsdWRlL2NvbW1vbi9nbnR0YWIuaAo+IEBAIC0yNiw2ICsyNiwxMCBAQAo+ICAgI2lmbmRl
ZiBfX0dOVFRBQl9IX18KPiAgICNkZWZpbmUgX19HTlRUQUJfSF9fCj4gICAKPiArI2luY2x1ZGUg
PHVrL2NvbmZpZy5oPgo+ICsKPiArI2lmZGVmIENPTkZJR19YRU5fR05UVEFCCj4gKwo+ICAgI2lu
Y2x1ZGUgPHVrL2FsbG9jLmg+Cj4gICAjaW5jbHVkZSA8eGVuL2dyYW50X3RhYmxlLmg+Cj4gICAK
PiBAQCAtNDUsNCArNDksNiBAQCBjb25zdCBjaGFyICpnbnR0YWJvcF9lcnJvcihfX3MxNiBzdGF0
dXMpOwo+ICAgCj4gICBncmFudF9lbnRyeV92MV90ICpnbnR0YWJfYXJjaF9pbml0KGludCBucl9n
cmFudF9mcmFtZXMpOwo+ICAgCj4gKyNlbmRpZiAvKiBDT05GSUdfWEVOX0dOVFRBQiAqLwo+ICsK
PiAgICNlbmRpZiAvKiAhX19HTlRUQUJfSF9fICovCj4gZGlmZiAtLWdpdCBhL3BsYXQveGVuL21l
bW9yeS5jIGIvcGxhdC94ZW4vbWVtb3J5LmMKPiBpbmRleCBmODRkY2E3MS4uMWY1NTg4N2UgMTAw
NjQ0Cj4gLS0tIGEvcGxhdC94ZW4vbWVtb3J5LmMKPiArKysgYi9wbGF0L3hlbi9tZW1vcnkuYwo+
IEBAIC0xMjMsNiArMTIzLDggQEAgaW50IHVrcGxhdF9tZW1yZWdpb25fZ2V0KGludCBpLCBzdHJ1
Y3QgdWtwbGF0X21lbXJlZ2lvbl9kZXNjICptKQo+ICAgCj4gICBpbnQgX3VrcGxhdF9tZW1fbWFw
cGluZ3NfaW5pdCh2b2lkKQo+ICAgewo+ICsjaWZkZWYgQ09ORklHX1hFTl9HTlRUQUIKPiAgIAln
bnR0YWJfaW5pdCgpOwo+ICsjZW5kaWYKPiAgIAlyZXR1cm4gMDsKPiAgIH0KPiAKCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWls
aW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMu
eGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Feb 12 14:36:35 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 12 Feb 2019 14:36:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gtZAo-00079y-Kz; Tue, 12 Feb 2019 14:36:34 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=WjiA=QT=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1gtZAn-00079t-L2
 for minios-devel@lists.xen.org; Tue, 12 Feb 2019 14:36:33 +0000
X-Inumbo-ID: 96ce7132-2ed3-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 96ce7132-2ed3-11e9-bc90-bc764e045a96;
 Tue, 12 Feb 2019 14:36:32 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 32F1A104DD6;
 Tue, 12 Feb 2019 15:36:31 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id oQBi_or5ApNT; Tue, 12 Feb 2019 15:36:31 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 0F524104DCA
 for <minios-devel@lists.xen.org>; Tue, 12 Feb 2019 15:36:29 +0100 (CET)
Received: from PALLENE.office.hd ([169.254.1.223]) by ENCELADUS.office.hd
 ([192.168.24.52]) with mapi id 14.03.0319.002; Tue, 12 Feb 2019 15:36:28
 +0100
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: Sharan Santhanam <Sharan.Santhanam@neclab.eu>,
 "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT PATCH v2] plat/xen: Grant table support as menu option
Thread-Index: AQHUwhjPizoUorK5N0eySqdTZFgAGaXcKDiAgAAUQwA=
Date: Tue, 12 Feb 2019 14:36:28 +0000
Message-ID: <7941AB14-0393-4096-B3E8-B145B01DD773@neclab.eu>
References: <20190211144801.21270-1-simon.kuenzer@neclab.eu>
 <c3fba70e-5274-2477-b87d-b237f4322dab@neclab.eu>
In-Reply-To: <c3fba70e-5274-2477-b87d-b237f4322dab@neclab.eu>
Accept-Language: en-GB, gl-ES, de-DE, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [10.1.99.239]
Content-ID: <62D10525B87EF44D8D7FAEDD48AF98D9@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2] plat/xen: Grant table
 support as menu option
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Florian Schmidt <Florian.Schmidt@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

T24gMTIuMDIuMTksIDE1OjIzLCAiU2hhcmFuIFNhbnRoYW5hbSIgPFNoYXJhbi5TYW50aGFuYW1A
bmVjbGFiLmV1PiB3cm90ZToNCg0KICAgIEhlbGxvIFNpbW9uLA0KICAgIA0KICAgIFBsZWFzZSBm
aW5kIHRoZSBjb21tZW50IGlubGluZS4NCiAgICANCiAgICBUaGFua3MgJiBSZWdhcmRzDQogICAg
U2hhcmFuDQogICAgDQogICAgT24gMi8xMS8xOSAzOjQ4IFBNLCBTaW1vbiBLdWVuemVyIHdyb3Rl
Og0KICAgID4gSW50cm9kdWNlcyBhIG1lbnUgb3B0aW9uIHRvIGVuYWJsZSBvciBkaXNhYmxlIGdy
YW50IHRhYmxlIHN1cHBvcnQuDQogICAgPiBUaGUgcmVhc29uIGlzIHRoYXQgb3VyIGdyYW50IHRh
YmxlIGltcGxlbWVudGF0aW9uIGRlcGVuZHMgb24NCiAgICA+IGxpYnVrbG9jaywgbGlidWtzY2hl
ZCwgYW5kIGxpYnVrYWxsb2MuIEEgbWluaW1hbCByZXF1aXJlcyB0aGVzZQ0KICAgID4gbGlicmFy
aWVzIHNlbGVjdGVkLCB0b28uIFRoaXMgbWF5IGJlIGFuIG9ic3RhY2xlIHdoZW4gcnVubmluZyBk
cml2ZXINCiAgICA+IGltcGxlbWVudGF0aW9uIGluIGhpZ2hlci1sZXZlbCBsYW5ndWFnZXMuIEFk
ZGl0aW9uYWxseSwgc29tZSBvZg0KICAgID4gdGhlc2UgbGlicmFyaWVzIGFyZSBjdXJyZW5sdHkg
bm90IHN1cHBvcnRlZCBvbiBBcm0uIEl0IGlzDQogICAgPiB3aXNlciB0byBnaXZlIGFuIG9wdGlv
biBmb3IgZGlzYWJsaW5nIGdyYW50IHRhYmxlIHN1cHBvcnQuDQogICAgPiANCiAgICA+IFNpZ25l
ZC1vZmYtYnk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1Pg0KICAgID4g
LS0tDQogICAgPiAgIHBsYXQveGVuL0NvbmZpZy51ayAgICAgICAgICAgICAgIHwgMjAgKysrKysr
KysrKysrKysrLS0tLS0NCiAgICA+ICAgcGxhdC94ZW4vTWFrZWZpbGUudWsgICAgICAgICAgICAg
fCAgNSArKysrLQ0KICAgID4gICBwbGF0L3hlbi9pbmNsdWRlL2NvbW1vbi9nbnR0YWIuaCB8ICA2
ICsrKysrKw0KICAgID4gICBwbGF0L3hlbi9tZW1vcnkuYyAgICAgICAgICAgICAgICB8ICAyICsr
DQogICAgPiAgIDQgZmlsZXMgY2hhbmdlZCwgMjcgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMo
LSkNCiAgICA+IA0KICAgID4gZGlmZiAtLWdpdCBhL3BsYXQveGVuL0NvbmZpZy51ayBiL3BsYXQv
eGVuL0NvbmZpZy51aw0KICAgID4gaW5kZXggZDAxNDNlOTUuLjljZmU5MGEyIDEwMDY0NA0KICAg
ID4gLS0tIGEvcGxhdC94ZW4vQ29uZmlnLnVrDQogICAgPiArKysgYi9wbGF0L3hlbi9Db25maWcu
dWsNCiAgICA+IEBAIC0zLDggKzMsNiBAQCBtZW51Y29uZmlnIFBMQVRfWEVODQogICAgPiAgICAg
ICAgICBkZWZhdWx0IG4NCiAgICA+ICAgICAgICAgIGRlcGVuZHMgb24gKEFSQ0hfWDg2XzMyIHx8
IEFSQ0hfWDg2XzY0IHx8IEFSQ0hfQVJNXzMyKQ0KICAgID4gICAgICAgICAgc2VsZWN0IExJQlVL
REVCVUcNCiAgICA+IC0gICAgICAgc2VsZWN0IExJQlVLTE9DSw0KICAgID4gLSAgICAgICBzZWxl
Y3QgTElCVUtMT0NLX1NFTUFQSE9SRQ0KICAgID4gICAgICAgICAgc2VsZWN0IExJQk5PTElCQyBp
ZiAhSEFWRV9MSUJDDQogICAgPiAgICAgICAgICBzZWxlY3QgTElCRkRUIGlmIEFSQ0hfQVJNXzMy
DQogICAgPiAgICAgICAgICBzZWxlY3QgWEVOX0RCR0VNRVJHRU5DWSBpZiBBUkNIX0FSTV8zMg0K
ICAgID4gQEAgLTIxLDExICsxOSwyMyBAQCBpZiAoUExBVF9YRU4pDQogICAgPiAgIAkJb3B0aW9u
IGlzIGVuYWJsZWQgdGhlIGh5cGVydmlzb3IgY29uc29sZSBpcyB1c2VkDQogICAgPiAgIAkJZm9y
IGtlcm5lbCBtZXNzYWdlcyBvbmx5Lg0KICAgID4gICANCiAgICA+ICtjb25maWcgWEVOX0dOVFRB
Qg0KICAgID4gKwlib29sICJHcmFudCB0YWJsZSBzdXBwb3J0Ig0KICAgID4gKwlkZWZhdWx0IHkN
CiAgICA+ICsJZGVwZW5kcyBvbiAoQVJDSF9YODZfNjQpDQogICAgPiArCXNlbGVjdCBMSUJVS0FM
TE9DDQogICAgPiArCXNlbGVjdCBMSUJVS0xPQ0sNCiAgICA+ICsJc2VsZWN0IExJQlVLTE9DS19T
RU1BUEhPUkUNCiAgICA+ICsJc2VsZWN0IExJQlVLU0NIRUQNCiAgICA+ICsJaGVscA0KICAgID4g
KwkJU3VwcG9ydCBncmFudCB0YWJsZSBvcGVyYXRpb25zDQogICAgPiArDQogICAgPiAgIG1lbnVj
b25maWcgWEVOX1hFTkJVUw0KICAgID4gLQlib29sICJYZW5idXMgRHJpdmVyIg0KICAgID4gKwli
b29sICJYZW5idXMvWGVuU3RvcmUgZHJpdmVyIg0KICAgID4gICAJZGVmYXVsdCBuDQogICAgPiAt
CWRlcGVuZHMgb24gKEFSQ0hfWDg2XzY0KQ0KICAgID4gKwlkZXBlbmRzIG9uIFhFTl9HTlRUQUIN
CiAgICBXaHkgZG8gd2UgaW50cm9kdWNlIHRoZSBkZXBlbmRlbmN5IG9uIHRoZSBHcmFudCB0YWJs
ZS4gVGhlIHhlbmJ1cyBzZWVtcyANCiAgICB0byBoYXZlIGEgZGVwZW5kZW5jeSBvbiB0aGUgTElC
VUtBTExPQyBhbmQgTElCVUtTQ0hFRC4NCg0KWWVzIHlvdSBhcmUgcmlnaHQuIEkgYXNzdW1lZCBz
dWNoIGEgZGVwZW5kZW5jeSBidXQgaW4gZmFjdCB0aGVyZSBpc24ndCBvbmUuIEkgd2lsbCBmaXgg
dGhpcyB3aXRoIGEgdjIuDQoNCiAgICA+ICAgCXNlbGVjdCBMSUJVS0JVUw0KICAgID4gICAJaGVs
cA0KICAgID4gLQkJUmVnaXN0ZXIgYSBYZW5idXMgZHJpdmVyIGFzIHVrX2J1cw0KICAgID4gKwkJ
UmVnaXN0ZXJzIFhlbmJ1cyBhcyBidXMgZHJpdmVyIHRvIGxpYnVrYnVzIGFuZCBwcm92aWRlcyBh
DQogICAgPiArCQlYZW5TdG9yZSBjb21tdW5pY2F0aW9uIEFQSSBmb3IgWGVuIGRyaXZlcnMNCiAg
ICA+ICAgZW5kaWYNCiAgICA+IGRpZmYgLS1naXQgYS9wbGF0L3hlbi9NYWtlZmlsZS51ayBiL3Bs
YXQveGVuL01ha2VmaWxlLnVrDQogICAgPiBpbmRleCAzOGI1MTBhZC4uMzQzOWEwZDkgMTAwNjQ0
DQogICAgPiAtLS0gYS9wbGF0L3hlbi9NYWtlZmlsZS51aw0KICAgID4gKysrIGIvcGxhdC94ZW4v
TWFrZWZpbGUudWsNCiAgICA+IEBAIC00NSw3ICs0NSw2IEBAIExJQlhFTlBMQVRfU1JDUy0kKENP
TkZJR19BUkNIX1g4Nl82NCkgKz0gJChMSUJYRU5QTEFUX0JBU0UpL3g4Ni9lbnRyeTY0LlMNCiAg
ICA+ICAgTElCWEVOUExBVF9TUkNTLSQoQ09ORklHX0FSQ0hfWDg2XzY0KSArPSAkKExJQlhFTlBM
QVRfQkFTRSkveDg2L21tLmMNCiAgICA+ICAgTElCWEVOUExBVF9TUkNTLSQoQ09ORklHX0FSQ0hf
WDg2XzY0KSArPSAkKExJQlhFTlBMQVRfQkFTRSkveDg2L2FyY2hfZXZlbnRzLmMNCiAgICA+ICAg
TElCWEVOUExBVF9TUkNTLSQoQ09ORklHX0FSQ0hfWDg2XzY0KSArPSAkKExJQlhFTlBMQVRfQkFT
RSkveDg2L2FyY2hfdGltZS5jDQogICAgPiAtTElCWEVOUExBVF9TUkNTLSQoQ09ORklHX0FSQ0hf
WDg2XzY0KSArPSAkKExJQlhFTlBMQVRfQkFTRSkveDg2L2dudHRhYi5jfHg4Ng0KICAgID4gICAN
CiAgICA+ICAgaWZuZXEgKCQoWEVOX0hWTUxJVEUpLHkpDQogICAgPiAgIExJQlhFTlBMQVRfQVNG
TEFHUy15ICAgICAgICAgICArPSAtRENPTkZJR19QQVJBVklSVA0KICAgID4gQEAgLTczLDcgKzcy
LDExIEBAIExJQlhFTlBMQVRfU1JDUy15ICAgICAgICAgICAgICArPSAkKExJQlhFTlBMQVRfQkFT
RSkvbGNwdS5jDQogICAgPiAgIExJQlhFTlBMQVRfU1JDUy15ICAgICAgICAgICAgICArPSAkKExJ
QlhFTlBMQVRfQkFTRSkvY29uc29sZS5jDQogICAgPiAgIExJQlhFTlBMQVRfU1JDUy15ICAgICAg
ICAgICAgICArPSAkKExJQlhFTlBMQVRfQkFTRSkvc2h1dGRvd24uYw0KICAgID4gICBMSUJYRU5Q
TEFUX1NSQ1MteSAgICAgICAgICAgICAgKz0gJChMSUJYRU5QTEFUX0JBU0UpL2V2ZW50cy5jDQog
ICAgPiArDQogICAgPiAraWZlcSAoJChDT05GSUdfWEVOX0dOVFRBQikseSkNCiAgICA+ICAgTElC
WEVOUExBVF9TUkNTLXkgICAgICAgICAgICAgICs9ICQoTElCWEVOUExBVF9CQVNFKS9nbnR0YWIu
Yw0KICAgID4gK0xJQlhFTlBMQVRfU1JDUy0kKENPTkZJR19BUkNIX1g4Nl82NCkgKz0gJChMSUJY
RU5QTEFUX0JBU0UpL3g4Ni9nbnR0YWIuY3x4ODYNCiAgICA+ICtlbmRpZg0KICAgID4gICANCiAg
ICA+ICAgaWZlcSAoJChDT05GSUdfWEVOX1hFTkJVUykseSkNCiAgICA+ICAgTElCWEVOQlVTX0VY
UE9SVFMgICAgICAgICAgICAgICA9ICQoTElCWEVOUExBVF9CQVNFKS94ZW5idXMvZXhwb3J0c3lt
cy51aw0KICAgID4gZGlmZiAtLWdpdCBhL3BsYXQveGVuL2luY2x1ZGUvY29tbW9uL2dudHRhYi5o
IGIvcGxhdC94ZW4vaW5jbHVkZS9jb21tb24vZ250dGFiLmgNCiAgICA+IGluZGV4IGQ0YmI0MTcy
Li5mNWNkZTVjNSAxMDA2NDQNCiAgICA+IC0tLSBhL3BsYXQveGVuL2luY2x1ZGUvY29tbW9uL2du
dHRhYi5oDQogICAgPiArKysgYi9wbGF0L3hlbi9pbmNsdWRlL2NvbW1vbi9nbnR0YWIuaA0KICAg
ID4gQEAgLTI2LDYgKzI2LDEwIEBADQogICAgPiAgICNpZm5kZWYgX19HTlRUQUJfSF9fDQogICAg
PiAgICNkZWZpbmUgX19HTlRUQUJfSF9fDQogICAgPiAgIA0KICAgID4gKyNpbmNsdWRlIDx1ay9j
b25maWcuaD4NCiAgICA+ICsNCiAgICA+ICsjaWZkZWYgQ09ORklHX1hFTl9HTlRUQUINCiAgICA+
ICsNCiAgICA+ICAgI2luY2x1ZGUgPHVrL2FsbG9jLmg+DQogICAgPiAgICNpbmNsdWRlIDx4ZW4v
Z3JhbnRfdGFibGUuaD4NCiAgICA+ICAgDQogICAgPiBAQCAtNDUsNCArNDksNiBAQCBjb25zdCBj
aGFyICpnbnR0YWJvcF9lcnJvcihfX3MxNiBzdGF0dXMpOw0KICAgID4gICANCiAgICA+ICAgZ3Jh
bnRfZW50cnlfdjFfdCAqZ250dGFiX2FyY2hfaW5pdChpbnQgbnJfZ3JhbnRfZnJhbWVzKTsNCiAg
ICA+ICAgDQogICAgPiArI2VuZGlmIC8qIENPTkZJR19YRU5fR05UVEFCICovDQogICAgPiArDQog
ICAgPiAgICNlbmRpZiAvKiAhX19HTlRUQUJfSF9fICovDQogICAgPiBkaWZmIC0tZ2l0IGEvcGxh
dC94ZW4vbWVtb3J5LmMgYi9wbGF0L3hlbi9tZW1vcnkuYw0KICAgID4gaW5kZXggZjg0ZGNhNzEu
LjFmNTU4ODdlIDEwMDY0NA0KICAgID4gLS0tIGEvcGxhdC94ZW4vbWVtb3J5LmMNCiAgICA+ICsr
KyBiL3BsYXQveGVuL21lbW9yeS5jDQogICAgPiBAQCAtMTIzLDYgKzEyMyw4IEBAIGludCB1a3Bs
YXRfbWVtcmVnaW9uX2dldChpbnQgaSwgc3RydWN0IHVrcGxhdF9tZW1yZWdpb25fZGVzYyAqbSkN
CiAgICA+ICAgDQogICAgPiAgIGludCBfdWtwbGF0X21lbV9tYXBwaW5nc19pbml0KHZvaWQpDQog
ICAgPiAgIHsNCiAgICA+ICsjaWZkZWYgQ09ORklHX1hFTl9HTlRUQUINCiAgICA+ICAgCWdudHRh
Yl9pbml0KCk7DQogICAgPiArI2VuZGlmDQogICAgPiAgIAlyZXR1cm4gMDsNCiAgICA+ICAgfQ0K
ICAgID4gDQogICAgDQoNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnBy
b2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9t
aW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Feb 12 15:20:19 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 12 Feb 2019 15:20:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gtZr7-0002hd-Ll; Tue, 12 Feb 2019 15:20:17 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Qgoy=QT=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1gtZr7-0002hY-7B
 for minios-devel@lists.xen.org; Tue, 12 Feb 2019 15:20:17 +0000
X-Inumbo-ID: b1976b75-2ed9-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id b1976b75-2ed9-11e9-bc90-bc764e045a96;
 Tue, 12 Feb 2019 15:20:14 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 0431CF2027;
 Tue, 12 Feb 2019 16:20:13 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id y5aKAmE4xJfJ; Tue, 12 Feb 2019 16:20:12 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id CDDB8F2026;
 Tue, 12 Feb 2019 16:20:08 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 12 Feb 2019 16:20:08
 +0100
To: Simon Kuenzer <simon.kuenzer@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190208151926.29051-1-simon.kuenzer@neclab.eu>
 <20190208151926.29051-3-simon.kuenzer@neclab.eu>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <7c8c8760-eb11-e152-ae0d-4344704810a1@neclab.eu>
Date: Tue, 12 Feb 2019 16:20:08 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190208151926.29051-3-simon.kuenzer@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 2/2] plat/common: Add cpu.h for
 Arm32
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: dafna3@gmail.com
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gU2ltb24sCgpUaGlzIHBhdGNoIHNlZW1zIGZpbmUuClJldmlld2VkLWJ5OiBTaGFyYW4g
U2FudGhhbmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xhYi5ldT4KClRoYW5rcyAmIFJlZ2FyZHMK
U2hhcmFuCgpPbiAyLzgvMTkgNDoxOSBQTSwgU2ltb24gS3VlbnplciB3cm90ZToKPiBBZGRzIGEg
bWluaW1hbCBjcHUuaCBmb3IgQXJtMzIgc28gdGhhdCBsaW51eCB1c2VyIHNwYWNlCj4gY2FuIGJl
IGJ1aWx0IGFnYWluLgo+IAo+IFNpZ25lZC1vZmYtYnk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1
ZW56ZXJAbmVjbGFiLmV1Pgo+IC0tLQo+ICAgcGxhdC9jb21tb24vaW5jbHVkZS9hcm0vYXJtL2Nw
dS5oIHwgMzkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gICBwbGF0
L2NvbW1vbi9pbmNsdWRlL2FybS9jcHUuaCAgICAgfCAgNCArKystCj4gICBwbGF0L2NvbW1vbi9p
bmNsdWRlL2NwdS5oICAgICAgICAgfCAgMiArLQo+ICAgcGxhdC9saW51eHUvc2V0dXAuYyAgICAg
ICAgICAgICAgIHwgIDQgKy0tLQo+ICAgNCBmaWxlcyBjaGFuZ2VkLCA0NCBpbnNlcnRpb25zKCsp
LCA1IGRlbGV0aW9ucygtKQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IHBsYXQvY29tbW9uL2luY2x1
ZGUvYXJtL2FybS9jcHUuaAo+IAo+IGRpZmYgLS1naXQgYS9wbGF0L2NvbW1vbi9pbmNsdWRlL2Fy
bS9hcm0vY3B1LmggYi9wbGF0L2NvbW1vbi9pbmNsdWRlL2FybS9hcm0vY3B1LmgKPiBuZXcgZmls
ZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwLi42OTdhMjBhMQo+IC0tLSAvZGV2L251bGwK
PiArKysgYi9wbGF0L2NvbW1vbi9pbmNsdWRlL2FybS9hcm0vY3B1LmgKPiBAQCAtMCwwICsxLDM5
IEBACj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8KPiArLyoK
PiArICogQXV0aG9yczogU2ltb24gS3VlbnplciA8c2ltb24ua3VlbnplckBuZWNsYWIuZXU+Cj4g
KyAqCj4gKyAqCj4gKyAqIENvcHlyaWdodCAoYykgMjAxOSwgTkVDIExhYm9yYXRvcmllcyBFdXJv
cGUgR21iSCwgTkVDIENvcnBvcmF0aW9uLgo+ICsgKiAgICAgICAgICAgICAgICAgICAgIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCj4gKyAqCj4gKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAo+ICsgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKPiAr
ICogYXJlIG1ldDoKPiArICoKPiArICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgo+ICsgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCj4gKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCj4gKyAqIDMu
IE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKPiArICogICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KPiArICogICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KPiArICoKPiArICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UyAiQVMgSVMiCj4gKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKPiArICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UK
PiArICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9M
REVSIE9SIENPTlRSSUJVVE9SUyBCRQo+ICsgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCj4gKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Cj4gKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwo+ICsgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgo+ICsgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQo+ICsgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQo+ICsgKiBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KPiArICoKPiArICogVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQgT1Ig
TU9ESUZJRUQgSU4gQU5ZIFdBWS4KPiArICovCj4gKwo+ICtzdGF0aWMgaW5saW5lIHZvaWQgX2lu
aXRfY3B1ZmVhdHVyZXModm9pZCkKPiArewo+ICt9Cj4gZGlmZiAtLWdpdCBhL3BsYXQvY29tbW9u
L2luY2x1ZGUvYXJtL2NwdS5oIGIvcGxhdC9jb21tb24vaW5jbHVkZS9hcm0vY3B1LmgKPiBpbmRl
eCAxYzA2NzIxOC4uNTU4OTQ1ZjMgMTAwNjQ0Cj4gLS0tIGEvcGxhdC9jb21tb24vaW5jbHVkZS9h
cm0vY3B1LmgKPiArKysgYi9wbGF0L2NvbW1vbi9pbmNsdWRlL2FybS9jcHUuaAo+IEBAIC0zNSw3
ICszNSw5IEBACj4gICAjaWZuZGVmIF9fUExBVF9DTU5fQVJNX0NQVV9IX18KPiAgICNkZWZpbmUg
X19QTEFUX0NNTl9BUk1fQ1BVX0hfXwo+ICAgCj4gLSNpZiBkZWZpbmVkKF9fQVJNXzY0X18pCj4g
KyNpZiBkZWZpbmVkKF9fQVJNXzMyX18pCj4gKyNpbmNsdWRlIDxhcm0vYXJtL2NwdS5oPgo+ICsj
ZWxpZiBkZWZpbmVkKF9fQVJNXzY0X18pCj4gICAjaW5jbHVkZSA8YXJtL2FybTY0L2NwdS5oPgo+
ICAgI2Vsc2UKPiAgICNlcnJvciAiQWRkIGNwdS5oIGZvciBjdXJyZW50IGFyY2hpdGVjdHVyZS4i
Cj4gZGlmZiAtLWdpdCBhL3BsYXQvY29tbW9uL2luY2x1ZGUvY3B1LmggYi9wbGF0L2NvbW1vbi9p
bmNsdWRlL2NwdS5oCj4gaW5kZXggY2EyZTE1ZTUuLmFjMmY4ZmUzIDEwMDY0NAo+IC0tLSBhL3Bs
YXQvY29tbW9uL2luY2x1ZGUvY3B1LmgKPiArKysgYi9wbGF0L2NvbW1vbi9pbmNsdWRlL2NwdS5o
Cj4gQEAgLTM4LDcgKzM4LDcgQEAKPiAgICNpbmNsdWRlIDx1ay9hcmNoL2xjcHUuaD4KPiAgICNp
ZiBkZWZpbmVkKF9fWDg2XzY0X18pCj4gICAjaW5jbHVkZSA8eDg2L2NwdS5oPgo+IC0jZWxpZiBk
ZWZpbmVkKF9fQVJNXzY0X18pCj4gKyNlbGlmIGRlZmluZWQoX19BUk1fMzJfXykgfHwgZGVmaW5l
ZChfX0FSTV82NF9fKQo+ICAgI2luY2x1ZGUgPGFybS9jcHUuaD4KPiAgICNlbHNlCj4gICAjZXJy
b3IgIkFkZCBjcHUuaCBmb3IgY3VycmVudCBhcmNoaXRlY3R1cmUuIgo+IGRpZmYgLS1naXQgYS9w
bGF0L2xpbnV4dS9zZXR1cC5jIGIvcGxhdC9saW51eHUvc2V0dXAuYwo+IGluZGV4IDc4NDlmNjgy
Li41MDQ1NDQzNyAxMDA2NDQKPiAtLS0gYS9wbGF0L2xpbnV4dS9zZXR1cC5jCj4gKysrIGIvcGxh
dC9saW51eHUvc2V0dXAuYwo+IEBAIC00NSw5ICs0NSw3IEBACj4gICAjaW5jbHVkZSA8dWsvcGxh
dC9ib290c3RyYXAuaD4KPiAgICNpbmNsdWRlIDx1ay9hc3NlcnQuaD4KPiAgICNpbmNsdWRlIDx1
ay9lcnJwdHIuaD4KPiAtI2lmIGRlZmluZWQgX19YODZfNjRfXwo+IC0jaW5jbHVkZSA8eDg2L2Nw
dS5oPgo+IC0jZW5kaWYKPiArI2luY2x1ZGUgPGNwdS5oPgo+ICAgCj4gICBzdHJ1Y3QgbGlibGlu
dXh1cGxhdF9vcHRzIF9saWJsaW51eHVwbGF0X29wdHMgPSB7IDAgfTsKPiAgIAo+IAoKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1h
aWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0
cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Tue Feb 12 16:09:58 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 12 Feb 2019 16:09:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gtadB-0007HS-0f; Tue, 12 Feb 2019 16:09:57 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=WjiA=QT=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1gtadA-0007HN-52
 for minios-devel@lists.xen.org; Tue, 12 Feb 2019 16:09:56 +0000
X-Inumbo-ID: a070b486-2ee0-11e9-8de0-a3329af36445
Received: from queen.nlehd.de (unknown [195.37.154.80])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id a070b486-2ee0-11e9-8de0-a3329af36445;
 Tue, 12 Feb 2019 16:09:51 +0000 (UTC)
Received: from c414.ant-net (c414.ant-net [192.168.0.156])
 by queen.nlehd.de (Postfix) with ESMTP id 8CAD5413FB;
 Tue, 12 Feb 2019 17:09:51 +0100 (CET)
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: minios-devel@lists.xen.org
Date: Tue, 12 Feb 2019 17:09:49 +0100
Message-Id: <20190212160949.31772-1-simon.kuenzer@neclab.eu>
X-Mailer: git-send-email 2.11.0
Subject: [Minios-devel] [UNIKRAFT PATCH v2] plat/xen: Grant table support as
 menu option
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Simon Kuenzer <simon.kuenzer@neclab.eu>, sharan.santhanam@neclab.eu
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SW50cm9kdWNlcyBhIG1lbnUgb3B0aW9uIHRvIGVuYWJsZSBvciBkaXNhYmxlIGdyYW50IHRhYmxl
IHN1cHBvcnQuClRoZSByZWFzb24gaXMgdGhhdCBvdXIgZ3JhbnQgdGFibGUgaW1wbGVtZW50YXRp
b24gZGVwZW5kcyBvbgpsaWJ1a2xvY2ssIGxpYnVrc2NoZWQsIGFuZCBsaWJ1a2FsbG9jLiBBIG1p
bmltYWwgY29uZmlndXJhdGlvbgpyZXF1aXJlcyB0aGVzZSBsaWJyYXJpZXMgc2VsZWN0ZWQsIHRv
by4gVGhpcyBtYXkgYmUgYW4gb2JzdGFjbGUKd2hlbiBydW5uaW5nIGltcGxlbWVudGF0aW9uIHdy
aXR0ZW4gaW4gaGlnaGVyLWxldmVsIGxhbmd1YWdlcy4KQWRkaXRpb25hbGx5LCBzb21lIG9mIHRo
ZXNlIGxpYnJhcmllcyBhcmUgY3VycmVubHR5IG5vdCBzdXBwb3J0ZWQKb24gQXJtMzIuIEl0IGlz
IHdpc2VyIHRvIGdpdmUgYW4gb3B0aW9uIGZvciBkaXNhYmxpbmcgZ3JhbnQgdGFibGUKc3VwcG9y
dC4KClNpZ25lZC1vZmYtYnk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1
PgotLS0KIHBsYXQveGVuL0NvbmZpZy51ayAgICAgICAgICAgICAgIHwgMjAgKysrKysrKysrKysr
KysrKy0tLS0KIHBsYXQveGVuL01ha2VmaWxlLnVrICAgICAgICAgICAgIHwgIDUgKysrKy0KIHBs
YXQveGVuL2luY2x1ZGUvY29tbW9uL2dudHRhYi5oIHwgIDYgKysrKysrCiBwbGF0L3hlbi9tZW1v
cnkuYyAgICAgICAgICAgICAgICB8ICAyICsrCiA0IGZpbGVzIGNoYW5nZWQsIDI4IGluc2VydGlv
bnMoKyksIDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvcGxhdC94ZW4vQ29uZmlnLnVrIGIv
cGxhdC94ZW4vQ29uZmlnLnVrCmluZGV4IGQwMTQzZTk1Li5mYWZhYmYwNyAxMDA2NDQKLS0tIGEv
cGxhdC94ZW4vQ29uZmlnLnVrCisrKyBiL3BsYXQveGVuL0NvbmZpZy51awpAQCAtMyw4ICszLDYg
QEAgbWVudWNvbmZpZyBQTEFUX1hFTgogICAgICAgIGRlZmF1bHQgbgogICAgICAgIGRlcGVuZHMg
b24gKEFSQ0hfWDg2XzMyIHx8IEFSQ0hfWDg2XzY0IHx8IEFSQ0hfQVJNXzMyKQogICAgICAgIHNl
bGVjdCBMSUJVS0RFQlVHCi0gICAgICAgc2VsZWN0IExJQlVLTE9DSwotICAgICAgIHNlbGVjdCBM
SUJVS0xPQ0tfU0VNQVBIT1JFCiAgICAgICAgc2VsZWN0IExJQk5PTElCQyBpZiAhSEFWRV9MSUJD
CiAgICAgICAgc2VsZWN0IExJQkZEVCBpZiBBUkNIX0FSTV8zMgogICAgICAgIHNlbGVjdCBYRU5f
REJHRU1FUkdFTkNZIGlmIEFSQ0hfQVJNXzMyCkBAIC0yMSwxMSArMTksMjUgQEAgaWYgKFBMQVRf
WEVOKQogCQlvcHRpb24gaXMgZW5hYmxlZCB0aGUgaHlwZXJ2aXNvciBjb25zb2xlIGlzIHVzZWQK
IAkJZm9yIGtlcm5lbCBtZXNzYWdlcyBvbmx5LgogCitjb25maWcgWEVOX0dOVFRBQgorCWJvb2wg
IkdyYW50IHRhYmxlIHN1cHBvcnQiCisJZGVmYXVsdCB5CisJZGVwZW5kcyBvbiAoQVJDSF9YODZf
NjQpCisJc2VsZWN0IExJQlVLQUxMT0MKKwlzZWxlY3QgTElCVUtMT0NLCisJc2VsZWN0IExJQlVL
TE9DS19TRU1BUEhPUkUKKwlzZWxlY3QgTElCVUtTQ0hFRAorCWhlbHAKKwkJU3VwcG9ydCBncmFu
dCB0YWJsZSBvcGVyYXRpb25zCisKIG1lbnVjb25maWcgWEVOX1hFTkJVUwotCWJvb2wgIlhlbmJ1
cyBEcml2ZXIiCisJYm9vbCAiWGVuYnVzL1hlblN0b3JlIGRyaXZlciIKIAlkZWZhdWx0IG4KIAlk
ZXBlbmRzIG9uIChBUkNIX1g4Nl82NCkKKwlzZWxlY3QgTElCVUtBTExPQworCXNlbGVjdCBMSUJV
S1NDSEVECiAJc2VsZWN0IExJQlVLQlVTCiAJaGVscAotCQlSZWdpc3RlciBhIFhlbmJ1cyBkcml2
ZXIgYXMgdWtfYnVzCisJCVJlZ2lzdGVycyBYZW5idXMgYXMgYnVzIGRyaXZlciB0byBsaWJ1a2J1
cyBhbmQgcHJvdmlkZXMgYQorCQlYZW5TdG9yZSBjb21tdW5pY2F0aW9uIEFQSSBmb3IgWGVuIGRy
aXZlcnMKIGVuZGlmCmRpZmYgLS1naXQgYS9wbGF0L3hlbi9NYWtlZmlsZS51ayBiL3BsYXQveGVu
L01ha2VmaWxlLnVrCmluZGV4IDM4YjUxMGFkLi4zNDM5YTBkOSAxMDA2NDQKLS0tIGEvcGxhdC94
ZW4vTWFrZWZpbGUudWsKKysrIGIvcGxhdC94ZW4vTWFrZWZpbGUudWsKQEAgLTQ1LDcgKzQ1LDYg
QEAgTElCWEVOUExBVF9TUkNTLSQoQ09ORklHX0FSQ0hfWDg2XzY0KSArPSAkKExJQlhFTlBMQVRf
QkFTRSkveDg2L2VudHJ5NjQuUwogTElCWEVOUExBVF9TUkNTLSQoQ09ORklHX0FSQ0hfWDg2XzY0
KSArPSAkKExJQlhFTlBMQVRfQkFTRSkveDg2L21tLmMKIExJQlhFTlBMQVRfU1JDUy0kKENPTkZJ
R19BUkNIX1g4Nl82NCkgKz0gJChMSUJYRU5QTEFUX0JBU0UpL3g4Ni9hcmNoX2V2ZW50cy5jCiBM
SUJYRU5QTEFUX1NSQ1MtJChDT05GSUdfQVJDSF9YODZfNjQpICs9ICQoTElCWEVOUExBVF9CQVNF
KS94ODYvYXJjaF90aW1lLmMKLUxJQlhFTlBMQVRfU1JDUy0kKENPTkZJR19BUkNIX1g4Nl82NCkg
Kz0gJChMSUJYRU5QTEFUX0JBU0UpL3g4Ni9nbnR0YWIuY3x4ODYKIAogaWZuZXEgKCQoWEVOX0hW
TUxJVEUpLHkpCiBMSUJYRU5QTEFUX0FTRkxBR1MteSAgICAgICAgICAgKz0gLURDT05GSUdfUEFS
QVZJUlQKQEAgLTczLDcgKzcyLDExIEBAIExJQlhFTlBMQVRfU1JDUy15ICAgICAgICAgICAgICAr
PSAkKExJQlhFTlBMQVRfQkFTRSkvbGNwdS5jCiBMSUJYRU5QTEFUX1NSQ1MteSAgICAgICAgICAg
ICAgKz0gJChMSUJYRU5QTEFUX0JBU0UpL2NvbnNvbGUuYwogTElCWEVOUExBVF9TUkNTLXkgICAg
ICAgICAgICAgICs9ICQoTElCWEVOUExBVF9CQVNFKS9zaHV0ZG93bi5jCiBMSUJYRU5QTEFUX1NS
Q1MteSAgICAgICAgICAgICAgKz0gJChMSUJYRU5QTEFUX0JBU0UpL2V2ZW50cy5jCisKK2lmZXEg
KCQoQ09ORklHX1hFTl9HTlRUQUIpLHkpCiBMSUJYRU5QTEFUX1NSQ1MteSAgICAgICAgICAgICAg
Kz0gJChMSUJYRU5QTEFUX0JBU0UpL2dudHRhYi5jCitMSUJYRU5QTEFUX1NSQ1MtJChDT05GSUdf
QVJDSF9YODZfNjQpICs9ICQoTElCWEVOUExBVF9CQVNFKS94ODYvZ250dGFiLmN8eDg2CitlbmRp
ZgogCiBpZmVxICgkKENPTkZJR19YRU5fWEVOQlVTKSx5KQogTElCWEVOQlVTX0VYUE9SVFMgICAg
ICAgICAgICAgICA9ICQoTElCWEVOUExBVF9CQVNFKS94ZW5idXMvZXhwb3J0c3ltcy51awpkaWZm
IC0tZ2l0IGEvcGxhdC94ZW4vaW5jbHVkZS9jb21tb24vZ250dGFiLmggYi9wbGF0L3hlbi9pbmNs
dWRlL2NvbW1vbi9nbnR0YWIuaAppbmRleCBkNGJiNDE3Mi4uZjVjZGU1YzUgMTAwNjQ0Ci0tLSBh
L3BsYXQveGVuL2luY2x1ZGUvY29tbW9uL2dudHRhYi5oCisrKyBiL3BsYXQveGVuL2luY2x1ZGUv
Y29tbW9uL2dudHRhYi5oCkBAIC0yNiw2ICsyNiwxMCBAQAogI2lmbmRlZiBfX0dOVFRBQl9IX18K
ICNkZWZpbmUgX19HTlRUQUJfSF9fCiAKKyNpbmNsdWRlIDx1ay9jb25maWcuaD4KKworI2lmZGVm
IENPTkZJR19YRU5fR05UVEFCCisKICNpbmNsdWRlIDx1ay9hbGxvYy5oPgogI2luY2x1ZGUgPHhl
bi9ncmFudF90YWJsZS5oPgogCkBAIC00NSw0ICs0OSw2IEBAIGNvbnN0IGNoYXIgKmdudHRhYm9w
X2Vycm9yKF9fczE2IHN0YXR1cyk7CiAKIGdyYW50X2VudHJ5X3YxX3QgKmdudHRhYl9hcmNoX2lu
aXQoaW50IG5yX2dyYW50X2ZyYW1lcyk7CiAKKyNlbmRpZiAvKiBDT05GSUdfWEVOX0dOVFRBQiAq
LworCiAjZW5kaWYgLyogIV9fR05UVEFCX0hfXyAqLwpkaWZmIC0tZ2l0IGEvcGxhdC94ZW4vbWVt
b3J5LmMgYi9wbGF0L3hlbi9tZW1vcnkuYwppbmRleCBmODRkY2E3MS4uMWY1NTg4N2UgMTAwNjQ0
Ci0tLSBhL3BsYXQveGVuL21lbW9yeS5jCisrKyBiL3BsYXQveGVuL21lbW9yeS5jCkBAIC0xMjMs
NiArMTIzLDggQEAgaW50IHVrcGxhdF9tZW1yZWdpb25fZ2V0KGludCBpLCBzdHJ1Y3QgdWtwbGF0
X21lbXJlZ2lvbl9kZXNjICptKQogCiBpbnQgX3VrcGxhdF9tZW1fbWFwcGluZ3NfaW5pdCh2b2lk
KQogeworI2lmZGVmIENPTkZJR19YRU5fR05UVEFCCiAJZ250dGFiX2luaXQoKTsKKyNlbmRpZgog
CXJldHVybiAwOwogfQotLSAKMi4xMS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxA
bGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFu
L2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Tue Feb 12 17:07:57 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 12 Feb 2019 17:07:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gtbXI-0003nf-BJ; Tue, 12 Feb 2019 17:07:56 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=WjiA=QT=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1gtbXH-0003na-L7
 for minios-devel@lists.xen.org; Tue, 12 Feb 2019 17:07:55 +0000
X-Inumbo-ID: bb7dee0e-2ee8-11e9-bc90-bc764e045a96
Received: from queen.nlehd.de (unknown [195.37.154.80])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id bb7dee0e-2ee8-11e9-bc90-bc764e045a96;
 Tue, 12 Feb 2019 17:07:52 +0000 (UTC)
Received: from c414.ant-net (c414.ant-net [192.168.0.156])
 by queen.nlehd.de (Postfix) with ESMTP id 56D75413FB;
 Tue, 12 Feb 2019 18:07:53 +0100 (CET)
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: minios-devel@lists.xen.org
Date: Tue, 12 Feb 2019 18:07:49 +0100
Message-Id: <20190212170749.7143-1-simon.kuenzer@neclab.eu>
X-Mailer: git-send-email 2.11.0
Subject: [Minios-devel] [UNIKRAFT PATCH] lib/ukdebug: Align hexdump with
 print system
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Simon Kuenzer <simon.kuenzer@neclab.eu>, sharan.santhanam@neclab.eu,
 yuri.volchkov@neclab.eu
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

V2l0aCB0aGUgcmVjZW50IHVwZGF0ZSBvZiB0aGUgcHJpbnQgc3lzdGVtLCB0aGUgaGV4ZHVtcCBm
dW5jdGlvbmFsaXR5CndhcyBub3QgYWRvcHRlZC4gVGhpcyBtYWRlIHRoaXMgZnVuY3Rpb25hbGl0
eSB1c2VsZXNzLiBXaXRoIHRoaXMKY29tbWl0IGhleGR1bXAgaXMgYWxpZ24gd2l0aCB0aGUgcHJp
bnRpbmcgYWdhaW4gc3lzdGVtLiBGb3IgaW5zdGFuY2UsCnVrX2hleGR1bXBkKCkgaXMgb25seSBl
bmFibGVkIGluIHRoZSBjb2RlIHdoZW4gZWl0aGVyIFVLX0RFQlVHIGlzCmRlZmluZWQgZm9yIHRo
ZSBjb21waWxhdGlvbiB1bml0IG9yIGRlYnVnIG1lc3NhZ2VzIGFyZSBlbmFibGVkCmdsb2JhbGx5
LiB1a19oZXhkdW1waygpIGRlcGVuZHMgb24gaGF2aW5nIGtlcm5lbCBjb25zb2xlIGVuYWJsZWQg
YW5kCm9uIHRoZSBjb25maWd1cmVkIG1heGltdW0gbWVzc2FnZSBsZXZlbC4KClNpZ25lZC1vZmYt
Ynk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1PgotLS0KIGxpYi91a2Rl
YnVnL2V4cG9ydHN5bXMudWsgICAgICAgIHwgIDMgKystCiBsaWIvdWtkZWJ1Zy9oZXhkdW1wLmMg
ICAgICAgICAgICB8IDQ0ICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KIGxp
Yi91a2RlYnVnL2luY2x1ZGUvdWsvaGV4ZHVtcC5oIHwgNDcgKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKy0tLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCA2NCBpbnNlcnRpb25zKCspLCAz
MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9saWIvdWtkZWJ1Zy9leHBvcnRzeW1zLnVrIGIv
bGliL3VrZGVidWcvZXhwb3J0c3ltcy51awppbmRleCBkMzQ5NDMwMS4uY2I4ZDI0MDMgMTAwNjQ0
Ci0tLSBhL2xpYi91a2RlYnVnL2V4cG9ydHN5bXMudWsKKysrIGIvbGliL3VrZGVidWcvZXhwb3J0
c3ltcy51awpAQCAtNSw0ICs1LDUgQEAgX3VrX3ByaW50awogdWtfaGV4ZHVtcHNuCiB1a19oZXhk
dW1wZgogdWtfaGV4ZHVtcGQKLV91a19oZXhkdW1kaworX3VrX2hleGR1bXBkCitfdWtfaGV4ZHVt
cGsKZGlmZiAtLWdpdCBhL2xpYi91a2RlYnVnL2hleGR1bXAuYyBiL2xpYi91a2RlYnVnL2hleGR1
bXAuYwppbmRleCBjZDcwYzczNC4uZWI1MzNiZGIgMTAwNjQ0Ci0tLSBhL2xpYi91a2RlYnVnL2hl
eGR1bXAuYworKysgYi9saWIvdWtkZWJ1Zy9oZXhkdW1wLmMKQEAgLTYxLDE4ICs2MSwyMCBAQCBz
dHJ1Y3QgX2h4ZF9vdXRwdXQgewogCWVudW0gX2h4ZF9vdXRwdXRfdHlwZSB0eXBlOwogCiAJdW5p
b24gewotI2lmIENPTkZJR19MSUJVS0RFQlVHX1BSSU5USworCQkvKiBVS19IWERPVVRfS0VSTiwg
VUtfSFhET1VUX0RFQlVHICovCiAJCXN0cnVjdCB7Ci0JCQlpbnQgbHZsOworCQkJaW50IGx2bDsg
LyogVUtfSFhET1VUX0tFUk4gb25seSAqLwogCQkJY29uc3QgY2hhciAqbGlibmFtZTsKIAkJCWNv
bnN0IGNoYXIgKnNyY25hbWU7CiAJCQl1bnNpZ25lZCBpbnQgc3JjbGluZTsKLQkJfSBrZXJuOwot
I2VuZGlmCisJCX0gdWtwcmludDsKKworCQkvKiBVS19IWERPVVRfRklMRSAqLwogCQlzdHJ1Y3Qg
ewogCQkJRklMRSAqZnA7CiAJCX0gZmlsZTsKIAorCQkvKiBVS19IWERPVVRfQlVGRkVSICovCiAJ
CXN0cnVjdCB7CiAJCQljaGFyICpwb3M7CiAJCQlzaXplX3QgbGVmdDsKQEAgLTEwNSwxMiArMTA3
LDE1IEBAIHN0YXRpYyBpbnQgX2h4ZF9vdXRmKHN0cnVjdCBfaHhkX291dHB1dCAqbywgY29uc3Qg
Y2hhciAqZm10LCAuLi4pCiAJCX0KIAkJYnJlYWs7CiAJY2FzZSBVS19IWERPVVRfREVCVUc6Ci0J
CXVrX3ZwcmludGQoZm10LCBhcCk7CisJCV91a192cHJpbnRkKG8tPnVrcHJpbnQubGlibmFtZSwK
KwkJCSAgICBvLT51a3ByaW50LnNyY25hbWUsIG8tPnVrcHJpbnQuc3JjbGluZSwKKwkJCSAgICBm
bXQsIGFwKTsKIAkJYnJlYWs7CiAjaWYgQ09ORklHX0xJQlVLREVCVUdfUFJJTlRLCiAJY2FzZSBV
S19IWERPVVRfS0VSTjoKLQkJX3VrX3ZwcmludGsoby0+a2Vybi5sdmwsIG8tPmtlcm4ubGlibmFt
ZSwgby0+a2Vybi5zcmNuYW1lLAotCQkJICAgIG8tPmtlcm4uc3JjbGluZSwgZm10LCBhcCk7CisJ
CV91a192cHJpbnRrKG8tPnVrcHJpbnQubHZsLCBvLT51a3ByaW50LmxpYm5hbWUsCisJCQkgICAg
by0+dWtwcmludC5zcmNuYW1lLCBvLT51a3ByaW50LnNyY2xpbmUsCisJCQkgICAgZm10LCBhcCk7
CiAJCWJyZWFrOwogI2VuZGlmCiAJZGVmYXVsdDoKQEAgLTMxOSwxNiArMzI0LDE3IEBAIGludCB1
a19oZXhkdW1wZihGSUxFICpmcCwgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IGxlbiwgc2l6ZV90
IGFkZHIwLCBpbnQgZmxhZ3MsCiAJcmV0dXJuIF9oeGQoJm8sIGRhdGEsIGxlbiwgYWRkcjAsIGZs
YWdzLCBncnBzX3Blcl9saW5lLCBsaW5lX3ByZWZpeCk7CiB9CiAKLXZvaWQgdWtfaGV4ZHVtcGQo
Y29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IGxlbiwgaW50IGZsYWdzLAotCQkgdW5zaWduZWQgaW50
IGdycHNfcGVyX2xpbmUpCit2b2lkIF91a19oZXhkdW1wZChjb25zdCBjaGFyICpsaWJuYW1lLCBj
b25zdCBjaGFyICpzcmNuYW1lLAorCQkgIHVuc2lnbmVkIGludCBzcmNsaW5lLCBjb25zdCB2b2lk
ICpkYXRhLCBzaXplX3QgbGVuLAorCQkgIHNpemVfdCBhZGRyMCwgaW50IGZsYWdzLCB1bnNpZ25l
ZCBpbnQgZ3Jwc19wZXJfbGluZSwKKwkJICBjb25zdCBjaGFyICpsaW5lX3ByZWZpeCkKIHsKLSNp
ZiBDT05GSUdfTElCVUtERUJVR19QUklOVEQKLQlzdHJ1Y3QgX2h4ZF9vdXRwdXQgbyA9IHsudHlw
ZSA9IFVLX0hYRE9VVF9ERUJVR307CisJc3RydWN0IF9oeGRfb3V0cHV0IG8gPSB7LnR5cGUgPSBV
S19IWERPVVRfREVCVUcsCisJCQkJLnVrcHJpbnQubGlibmFtZSA9IGxpYm5hbWUsCisJCQkJLnVr
cHJpbnQuc3JjbmFtZSA9IHNyY25hbWUsCisJCQkJLnVrcHJpbnQuc3JjbGluZSA9IHNyY2xpbmV9
OwogCi0JX2h4ZCgmbywgZGF0YSwgbGVuLCAoc2l6ZV90KWRhdGEsIGZsYWdzLCBncnBzX3Blcl9s
aW5lLCAiIik7Ci0jZWxzZQotCXJldHVybjsKLSNlbmRpZgorCV9oeGQoJm8sIGRhdGEsIGxlbiwg
YWRkcjAsIGZsYWdzLCBncnBzX3Blcl9saW5lLCBsaW5lX3ByZWZpeCk7CiB9CiAKICNpZiBDT05G
SUdfTElCVUtERUJVR19QUklOVEsKQEAgLTMzOCwxMCArMzQ0LDEwIEBAIHZvaWQgX3VrX2hleGR1
bXBrKGludCBsdmwsIGNvbnN0IGNoYXIgKmxpYm5hbWUsIGNvbnN0IGNoYXIgKnNyY25hbWUsCiAJ
CSAgY29uc3QgY2hhciAqbGluZV9wcmVmaXgpCiB7CiAJc3RydWN0IF9oeGRfb3V0cHV0IG8gPSB7
LnR5cGUgPSBVS19IWERPVVRfS0VSTiwKLQkJCQkua2Vybi5sdmwgPSBsdmwsCi0JCQkJLmtlcm4u
bGlibmFtZSA9IGxpYm5hbWUsCi0JCQkJLmtlcm4uc3JjbmFtZSA9IHNyY25hbWUsCi0JCQkJLmtl
cm4uc3JjbGluZSA9IHNyY2xpbmV9OworCQkJCS51a3ByaW50Lmx2bCA9IGx2bCwKKwkJCQkudWtw
cmludC5saWJuYW1lID0gbGlibmFtZSwKKwkJCQkudWtwcmludC5zcmNuYW1lID0gc3JjbmFtZSwK
KwkJCQkudWtwcmludC5zcmNsaW5lID0gc3JjbGluZX07CiAKIAlfaHhkKCZvLCBkYXRhLCBsZW4s
IGFkZHIwLCBmbGFncywgZ3Jwc19wZXJfbGluZSwgbGluZV9wcmVmaXgpOwogfQpkaWZmIC0tZ2l0
IGEvbGliL3VrZGVidWcvaW5jbHVkZS91ay9oZXhkdW1wLmggYi9saWIvdWtkZWJ1Zy9pbmNsdWRl
L3VrL2hleGR1bXAuaAppbmRleCBjNzc3NDJjMC4uMmU5MWVkYjIgMTAwNjQ0Ci0tLSBhL2xpYi91
a2RlYnVnL2luY2x1ZGUvdWsvaGV4ZHVtcC5oCisrKyBiL2xpYi91a2RlYnVnL2luY2x1ZGUvdWsv
aGV4ZHVtcC5oCkBAIC01NSwxMSArNTUsMzQgQEAgZXh0ZXJuICJDIiB7CiAKICNkZWZpbmUgVUtf
SFhERl9DT01QUkVTUyAoNjQpIC8qIHN1cHByZXNzIHJlcGVhdGVkIGxpbmVzICovCiAKLSNpZiBk
ZWZpbmVkIFVLX0RFQlVHIHx8IENPTkZJR19MSUJVS0RFQlVHX1BSSU5URAorLyoKKyAqIEhFWERV
TVAgT04gREVCVUcgQ09OU09MRQorICovCisjaWZkZWYgX19JTl9MSUJVS0RFQlVHX18KKy8qCisg
KiBUaGlzIHJlZGVmaW5pdGlvbiBvZiBDT05GSUdfTElCVUtERUJVR19QUklOVEQgaXMgZG9pbmcg
dGhlIHRyaWNrIHRvCisgKiBzd2l0Y2ggb24gdGhlIGNvcnJlY3QgZGVjbGFyYXRpb24gb2YgdWtf
aGV4ZHVtcGQoKSB3aGVuIHdlIGFyZSBjb21waWxpbmcKKyAqIHRoaXMgbGlicmFyeSBhbmQgaGF2
ZSB0aGUgZ2xvYmFsIGRlYnVnIHN3aXRjaCBDT05GSUdfTElCVUtERUJVR19QUklOVEQKKyAqIG5v
dCBlbmFibGVkLgorICovCisjaWYgIWRlZmluZWQgQ09ORklHX0xJQlVLREVCVUdfUFJJTlREIHx8
ICFDT05GSUdfTElCVUtERUJVR19QUklOVEQKKyN1bmRlZiBDT05GSUdfTElCVUtERUJVR19QUklO
VEQKKyNkZWZpbmUgQ09ORklHX0xJQlVLREVCVUdfUFJJTlREIDEKKyNlbmRpZgorI2VuZGlmIC8q
IF9fSU5fTElCVUtERUJVR19fICovCisKKyNpZiAoZGVmaW5lZCBVS19ERUJVRykgfHwgQ09ORklH
X0xJQlVLREVCVUdfUFJJTlRECisvKiBQbGVhc2UgdXNlIHVrX2hleGR1bXBkKCkgaW5zdGVhZCAq
Lwordm9pZCBfdWtfaGV4ZHVtcGQoY29uc3QgY2hhciAqbGlibmFtZSwgY29uc3QgY2hhciAqc3Jj
bmFtZSwKKwkJICB1bnNpZ25lZCBpbnQgc3JjbGluZSwgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90
IGxlbiwKKwkJICBzaXplX3QgYWRkcjAsIGludCBmbGFncywgdW5zaWduZWQgaW50IGdycHNfcGVy
X2xpbmUsCisJCSAgY29uc3QgY2hhciAqbGluZV9wcmVmaXgpOworCiAvKioKLSAqIFBsb3RzIGFu
IGhleGR1bXAgZm9yIGEgZ2l2ZW4gZGF0YSByZWdpb24gdG8gZGVidWcgb3V0cHV0CisgKiBQbG90
cyBhbiBoZXhkdW1wIGZvciBhIGdpdmVuIGRhdGEgcmVnaW9uIHRvIGtlcm5lbCBvdXRwdXQKICAq
IFRoZSBhYnNvbHV0ZSBhZGRyZXNzIGlzIHBsb3R0ZWQgd2hlbiBVS19IWERGX0FERFIgaXMgc2V0
CiAgKgorICogQHBhcmFtIGx2bCBEZWJ1ZyBsZXZlbAogICogQHBhcmFtIGRhdGEgU3RhcnQgb2Yg
ZGF0YSByZWdpb24gdG8gcGxvdAogICogQHBhcmFtIGxlbiBMZW5ndGggb2YgZGF0YSByZWdpb24g
KG51bWJlciBvZiBieXRlcykKICAqIEBwYXJhbSBmbGFncyBGb3JtYXQgZmxhZ3MsIHNlZSBVS19I
WERGXyoKQEAgLTY3LDE2ICs5MCwyMCBAQCBleHRlcm4gIkMiIHsKICAqICAgICAgICBOdW1iZXIg
b2YgZ3JvdXBzIChVS19IWERGX0dSUCopIHNob3duIHBlciBsaW5lCiAgKiBAcmV0dXJuIFJldHVy
bnMgdGhlIG51bWJlciBvZiBwcmludGVkIGNoYXJhY3RlcnMgdG8gb3V0cHV0IGZwCiAgKi8KLXZv
aWQgdWtfaGV4ZHVtcGQoY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IGxlbiwgaW50IGZsYWdzLAot
CQkgdW5zaWduZWQgaW50IGdycHNfcGVyX2xpbmUpOwotI2Vsc2UKKyNkZWZpbmUgdWtfaGV4ZHVt
cGQoZGF0YSwgbGVuLCBmbGFncywgZ3Jwc19wZXJfbGluZSkJCQlcCisJX3VrX2hleGR1bXBkKF9f
U1RSX0xJQk5BTUVfXywgX19TVFJfQkFTRU5BTUVfXywJCQlcCisJCSAgICAgX19MSU5FX18sIChk
YXRhKSwgKGxlbiksCQkJCVwKKwkJICAgICAoKHNpemVfdCkoZGF0YSkpLCAoZmxhZ3MpLAkJCQlc
CisJCSAgICAgKGdycHNfcGVyX2xpbmUpLCBTVFJJTkdJRlkoZGF0YSkgIjogIikKKyNlbHNlIC8q
IChkZWZpbmVkIFVLX0RFQlVHKSB8fCBDT05GSUdfTElCVUtERUJVR19QUklOVEQgKi8KIHN0YXRp
YyBpbmxpbmUgdm9pZCB1a19oZXhkdW1wZChjb25zdCB2b2lkICpkYXRhIF9fdW51c2VkLCBzaXpl
X3QgbGVuIF9fdW51c2VkLAogCQkJICAgICAgIGludCBmbGFncyBfX3VudXNlZCwKIAkJCSAgICAg
ICB1bnNpZ25lZCBpbnQgZ3Jwc19wZXJfbGluZSBfX3VudXNlZCkKIHt9Ci0jZW5kaWYKKyNlbmRp
ZiAvKiAoZGVmaW5lZCBVS19ERUJVRykgfHwgQ09ORklHX0xJQlVLREVCVUdfUFJJTlREICovCiAK
ICNpZiBDT05GSUdfTElCVUtERUJVR19QUklOVEsKKy8qIFBsZWFzZSB1c2UgdWtfaGV4ZHVtcGso
KSBpbnN0ZWFkICovCiB2b2lkIF91a19oZXhkdW1wayhpbnQgbHZsLCBjb25zdCBjaGFyICpsaWJu
YW1lLCBjb25zdCBjaGFyICpzcmNuYW1lLAogCQkgIHVuc2lnbmVkIGludCBzcmNsaW5lLCBjb25z
dCB2b2lkICpkYXRhLCBzaXplX3QgbGVuLAogCQkgIHNpemVfdCBhZGRyMCwgaW50IGZsYWdzLCB1
bnNpZ25lZCBpbnQgZ3Jwc19wZXJfbGluZSwKQEAgLTk3LDE3ICsxMjQsMTcgQEAgdm9pZCBfdWtf
aGV4ZHVtcGsoaW50IGx2bCwgY29uc3QgY2hhciAqbGlibmFtZSwgY29uc3QgY2hhciAqc3JjbmFt
ZSwKICNkZWZpbmUgdWtfaGV4ZHVtcGsobHZsLCBkYXRhLCBsZW4sIGZsYWdzLCBncnBzX3Blcl9s
aW5lKSAgICAgICAgICAgICAgICAgICAgICBcCiAJZG8geyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAJCWlmICgobHZs
KSA8PSBLTFZMX01BWCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
LQkJCV91a19oZXhkdW1wZCgobHZsKSwgX19TVFJfTElCTkFNRV9fLCBfX1NUUl9CQVNFTkFNRV9f
LCBcCisJCQlfdWtfaGV4ZHVtcGsoKGx2bCksIF9fU1RSX0xJQk5BTUVfXywgX19TVFJfQkFTRU5B
TUVfXywgXAogCQkJCSAgICAgX19MSU5FX18sIChkYXRhKSwgKGxlbiksICAgICAgICAgICAgICAg
ICAgXAogCQkJCSAgICAgKChzaXplX3QpKGRhdGEpKSwgKGZsYWdzKSwgICAgICAgICAgICAgICAg
XAogCQkJCSAgICAgKGdycHNfcGVyX2xpbmUpLCBTVFJJTkdJRlkoZGF0YSkgIjogIik7ICAgXAog
CX0gd2hpbGUgKDApCi0jZWxzZQorI2Vsc2UgLyogQ09ORklHX0xJQlVLREVCVUdfUFJJTlRLICov
CiBzdGF0aWMgaW5saW5lIHZvaWQgdWtfaGV4ZHVtcGsoaW50IGx2bCBfX3VudXNlZCwgY29uc3Qg
dm9pZCAqZGF0YSBfX3VudXNlZCwKIAkJCSAgICAgICBzaXplX3QgbGVuIF9fdW51c2VkLCBpbnQg
ZmxhZ3MgX191bnVzZWQsCiAJCQkgICAgICAgdW5zaWduZWQgaW50IGdycHNfcGVyX2xpbmUgX191
bnVzZWQpCiB7fQotI2VuZGlmCisjZW5kaWYgLyogQ09ORklHX0xJQlVLREVCVUdfUFJJTlRLICov
CiAKIC8qKgogICogUGxvdHMgYW4gaGV4ZHVtcCBmb3IgYSBnaXZlbiBkYXRhIHJlZ2lvbiB0byBh
IGZpbGUgZGVzY3JpcHRvcgpAQCAtMjE0LDcgKzI0MSw3IEBAIGludCB1a19oZXhkdW1wc24oY2hh
ciAqc3RyLCBzaXplX3Qgc2l6ZSwgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IGxlbiwKIAkJICAg
IDIsIE5VTEwpCiAKICNkZWZpbmUgdWtfaGV4ZHVtcEMoZGF0YSwgbGVuKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0JdWtfaGV4ZHVtcGYoKGRhdGEp
LCAobGVuKSwgKChzaXplX3QpKGRhdGEpKSwgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJ
dWtfaGV4ZHVtcCgoZGF0YSksIChsZW4pLCAoKHNpemVfdCkoZGF0YSkpLAkJCSAgICAgICBcCiAJ
CSAgICAoVUtfSFhERl9BRERSIHwgVUtfSFhERl9BU0NJSVNFQyB8IFVLX0hYREZfR1JQUVdPUkQg
ICAgICAgIFwKIAkJICAgICB8IFVLX0hYREZfQ09NUFJFU1MpLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAogCQkgICAgMiwgTlVMTCkKLS0gCjIuMTEuMAoKCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWls
aW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMu
eGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Feb 12 17:27:18 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 12 Feb 2019 17:27:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gtbq1-0005R3-1o; Tue, 12 Feb 2019 17:27:17 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Qgoy=QT=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1gtbpz-0005Qy-AB
 for minios-devel@lists.xen.org; Tue, 12 Feb 2019 17:27:15 +0000
X-Inumbo-ID: 6f73521c-2eeb-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 6f73521c-2eeb-11e9-bc90-bc764e045a96;
 Tue, 12 Feb 2019 17:27:14 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 907CE104DD2;
 Tue, 12 Feb 2019 18:27:12 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id asngB8W47TqS; Tue, 12 Feb 2019 18:27:12 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 6B588104DCA;
 Tue, 12 Feb 2019 18:27:08 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 12 Feb 2019 18:27:08
 +0100
To: <minios-devel@lists.xen.org>
References: <20190212130311.24165-1-simon.kuenzer@neclab.eu>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <a169b06a-6cca-52d4-bc3e-26f11d44933d@neclab.eu>
Date: Tue, 12 Feb 2019 18:27:07 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190212130311.24165-1-simon.kuenzer@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2] plat/xen: arm: Initialize
 the bss section to 0
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Simon Kuenzer <simon.kuenzer@neclab.eu>,
 Dafna Hirschfeld <dafna3@gmail.com>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gU2ltb24sCgpUaGlzIHBhdGNoIHNlZW1zIGZpbmUuCgpSZXZpZXdlZC1ieTogU2hhcmFu
IFNhbnRoYW5hbSA8c2hhcmFuLnNhbnRoYW5hbUBuZWNsYWIuZXU+CgpUaGFua3MgJiBSZWdhcmRz
ClNoYXJhbgoKT24gMi8xMi8xOSAyOjAzIFBNLCBTaW1vbiBLdWVuemVyIHdyb3RlOgo+IEZyb206
IERhZm5hIEhpcnNjaGZlbGQgPGRhZm5hM0BnbWFpbC5jb20+Cj4gCj4gQ2xlYXIgdGhlIGJzcyBz
ZWN0aW9uIGR1cmluZyBib290IHNvIHRoYXQgaXQgaXMgaW5pdGlhbGl6ZWQgd2l0aCAwLgo+IEFk
ZGl0b25hbGx5LCB3ZSBtYWtlIHN1cmUgd2l0aCB0aGUgbGlua2VyIHNjcmlwdCB0aGF0IGFsbAo+
IGJzcy1yZWxhdGVkIHN5bWJvbHMgYXJlIHBsYWNlZCB3aXRoaW4gdGhlIGJzcyBhcmVhIG1hcmtl
ZCB3aXRoCj4gX2VuZCBhbmQgX19ic3Nfc3RhcnQgd2hlbiB0aGUgY29tcGlsZSBvcHRpb24gImRy
b3BwaW5nIG9mIHVudXNlZAo+IHN5bWJvbHMiIGlzIGVuYWJsZWQuCj4gCj4gU2lnbmVkLW9mZi1i
eTogRGFmbmEgSGlyc2NoZmVsZCA8ZGFmbmEzQGdtYWlsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBT
aW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4KPiAtLS0KPiAgIHBsYXQveGVu
L2FybS9saW5rMzIubGRzIHwgMiArLQo+ICAgcGxhdC94ZW4vYXJtL3NldHVwLmMgICAgfCA3ICsr
KysrKysKPiAgIDIgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0p
Cj4gCj4gZGlmZiAtLWdpdCBhL3BsYXQveGVuL2FybS9saW5rMzIubGRzIGIvcGxhdC94ZW4vYXJt
L2xpbmszMi5sZHMKPiBpbmRleCA0NTA4ZTA1ZC4uYzVkODMwMDggMTAwNjQ0Cj4gLS0tIGEvcGxh
dC94ZW4vYXJtL2xpbmszMi5sZHMKPiArKysgYi9wbGF0L3hlbi9hcm0vbGluazMyLmxkcwo+IEBA
IC04Nyw3ICs4Nyw3IEBAIFNFQ1RJT05TCj4gICAKPiAgIAkJX19ic3Nfc3RhcnQgPSAuOwo+ICAg
CQkqKC5ic3MpCj4gLQkJKiguYXBwLmJzcykKPiArCQkqKC5ic3MuKikKPiAgIAl9Cj4gICAJX2Vu
ZCA9IC4gOwo+ICAgCj4gZGlmZiAtLWdpdCBhL3BsYXQveGVuL2FybS9zZXR1cC5jIGIvcGxhdC94
ZW4vYXJtL3NldHVwLmMKPiBpbmRleCA0YjllZmU1My4uYjkxYzBiZGIgMTAwNjQ0Cj4gLS0tIGEv
cGxhdC94ZW4vYXJtL3NldHVwLmMKPiArKysgYi9wbGF0L3hlbi9hcm0vc2V0dXAuYwo+IEBAIC0x
OTMsNiArMTkzLDEzIEBAIHZvaWQgX2xpYnhlbnBsYXRfYXJtZW50cnkodm9pZCAqZHRiX3BvaW50
ZXIsIHVpbnQzMl90IHBoeXNpY2FsX29mZnNldCkKPiAgIHsKPiAgIAl1a19wcl9pbmZvKCJFbnRl
cmluZyBmcm9tIFhlbiAoYXJtKS4uLlxuIik7Cj4gICAKPiArCS8qIFplcm8naW5nIG91dCB0aGUg
YnNzIHNlY3Rpb24gKi8KPiArCS8qCj4gKwkgKiBUT0RPOiBJdCBwcm9iYWJseSBtYWtlcyBzZW5z
ZSB0byBtb3ZlIHRoaXMgdG8gdGhlIGVhcmx5Cj4gKwkgKiBwbGF0Zm9ybSBlbnRyeSBhc3NlbWJs
eSBjb2RlLgo+ICsJICovCj4gKwltZW1zZXQoJl9fYnNzX3N0YXJ0LCAwLCAmX2VuZCAtICZfX2Jz
c19zdGFydCk7Cj4gKwo+ICAgCV9pbml0X2R0YihkdGJfcG9pbnRlcik7Cj4gICAJX2R0Yl9pbml0
X21lbShwaHlzaWNhbF9vZmZzZXQpOyAvKiByZWxvY2F0ZXMgZHRiICovCj4gICAJdWtfcHJfaW5m
bygiICAgICAgICAgICBkdGI6ICVwXG4iLCBIWVBFUlZJU09SX2R0Yik7Cj4gCgpfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGlu
ZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhl
bnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Feb 12 17:31:29 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 12 Feb 2019 17:31:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gtbu5-00063p-Cz; Tue, 12 Feb 2019 17:31:29 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Qgoy=QT=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1gtbu3-00063k-QP
 for minios-devel@lists.xen.org; Tue, 12 Feb 2019 17:31:27 +0000
X-Inumbo-ID: 0402bbce-2eec-11e9-bc2c-3fcb508cd391
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 0402bbce-2eec-11e9-bc2c-3fcb508cd391;
 Tue, 12 Feb 2019 17:31:23 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 516D2F206B;
 Tue, 12 Feb 2019 18:31:22 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id gRnv1MPjakg0; Tue, 12 Feb 2019 18:31:22 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 2922DF2026
 for <minios-devel@lists.xen.org>; Tue, 12 Feb 2019 18:31:20 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 12 Feb 2019 18:31:19
 +0100
To: <minios-devel@lists.xen.org>
References: <20190211170110.27077-1-simon.kuenzer@neclab.eu>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <cd04b613-8607-6a5c-2bed-137a7dc51c6e@neclab.eu>
Date: Tue, 12 Feb 2019 18:31:19 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190211170110.27077-1-simon.kuenzer@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH] build: Notice user when to do
 `make clean`
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Simon Kuenzer <simon.kuenzer@neclab.eu>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gU2ltb24sCgpUaGlzIHBhdGNoIHNlZW1zIGZpbmUuCgoKUmV2aWV3ZWQtYnk6IFNoYXJh
biBTYW50aGFuYW0gPHNoYXJhbi5zYW50aGFuYW1AbmVjbGFiLmV1PgoKVGhhbmtzICYgUmVnYXJk
cwpTaGFyYW4KCk9uIDIvMTEvMTkgNjowMSBQTSwgU2ltb24gS3VlbnplciB3cm90ZToKPiBUaGUg
bGl0dGxlIGhlbHBlciBzY3JpcHQgYGNvbmZpZ3VwZGF0ZWAgZGlkIG5vdCBkZXRlY3QgYW55IGNv
bmZpZyBjaGFuZ2VzCj4gd2l0aCBgLmNvbmZpZ2AgYW55bW9yZSBiZWNhdXNlIGl0IGRpZCBwcmVm
aXggYENPTkZJR19gIHByZWZpeCBmb3IgdGhlCj4gY29uZmlndXJhdGlvbiBzeW1ib2xzLgo+IFRo
aXMgY29tbWl0IG1ha2VzIHN1cmUgdGhhdCBgY29uZmlndXBkYXRlYCBjYW4gZGV0ZWN0IGNoYW5n
ZXMKPiAoZS5nLiwgQ1BVIGFyY2hpdGVjdHVyZSwgY29kZSBvcHRpbWl6YXRpb25zKSB0aGF0IHJl
cXVpcmVzIGBtYWtlIGNsZWFuYAo+IGJlZm9yZSBjb250aW51aW5nLiBJdCBpcyBzdGlsbCBjYWxs
ZWQgYXV0b21hdGljYWxseSBieSB0aGUgYnVpbGQgc3lzdGVtLgo+IAo+IFNpZ25lZC1vZmYtYnk6
IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1Pgo+IC0tLQo+ICAgc3VwcG9y
dC9zY3JpcHRzL2NvbmZpZ3VwZGF0ZSB8IDYgKysrLS0tCj4gICAxIGZpbGUgY2hhbmdlZCwgMyBp
bnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9zdXBwb3J0L3Nj
cmlwdHMvY29uZmlndXBkYXRlIGIvc3VwcG9ydC9zY3JpcHRzL2NvbmZpZ3VwZGF0ZQo+IGluZGV4
IGZlZDE0NDMwLi5jZTVjZTk4NiAxMDA3NTUKPiAtLS0gYS9zdXBwb3J0L3NjcmlwdHMvY29uZmln
dXBkYXRlCj4gKysrIGIvc3VwcG9ydC9zY3JpcHRzL2NvbmZpZ3VwZGF0ZQo+IEBAIC0yMywxMyAr
MjMsMTMgQEAgTkw9JCdcbicKPiAgIFsgLXogIiR7VUtfQ09ORklHX09MRH0iIC1vICEgLWUgIiR7
VUtfQ09ORklHX09MRH0iIF0gJiYgZXhpdCAwCj4gICAKPiAgICMgQ2hhbmdlIG9mIGFyY2hpdGVj
dHVyZT8KPiAtX2NvbXBhcmVzeW0gIkFSQ0hfIiAiJHtVS19DT05GSUd9IiAiJHtVS19DT05GSUdf
T0xEfSIgfHwgVVBEQVRFUys9IioqKiAgLSBDUFUgYXJjaGl0ZWN0dXJlIGNoYW5nZWQke05MfSIK
PiArX2NvbXBhcmVzeW0gIkNPTkZJR19BUkNIXyIgIiR7VUtfQ09ORklHfSIgIiR7VUtfQ09ORklH
X09MRH0iIHx8IFVQREFURVMrPSIqKiogLSBDUFUgYXJjaGl0ZWN0dXJlIGNoYW5nZWQke05MfSIK
PiAgIAo+ICAgIyBDaGFuZ2Ugb2YgQ1BVIG9wdGlvbnM/Cj4gLV9jb21wYXJlc3ltICJNQVJDSF8i
ICIke1VLX0NPTkZJR30iICIke1VLX0NPTkZJR19PTER9IiB8fCBVUERBVEVTKz0iKioqICAtIENQ
VSBvcHRpbWl6YXRpb24gY2hhbmdlZCR7Tkx9Igo+ICtfY29tcGFyZXN5bSAiQ09ORklHX01BUkNI
XyIgIiR7VUtfQ09ORklHfSIgIiR7VUtfQ09ORklHX09MRH0iIHx8IFVQREFURVMrPSIqKiogLSBD
UFUgb3B0aW1pemF0aW9uIGNoYW5nZWQke05MfSIKPiAgIAo+ICAgIyBDaGFuZ2Ugb2Ygb3B0aW1p
emF0aW9ucz8KPiAtX2NvbXBhcmVzeW0gIk9QVElNSVpFXyIgIiR7VUtfQ09ORklHfSIgIiR7VUtf
Q09ORklHX09MRH0iIHx8IFVQREFURVMrPSIqKiogLSBDb2RlIG9wdGltaXphdGlvbiBjaGFuZ2Vk
JHtOTH0iCj4gK19jb21wYXJlc3ltICJDT05GSUdfT1BUSU1JWkVfIiAiJHtVS19DT05GSUd9IiAi
JHtVS19DT05GSUdfT0xEfSIgfHwgVVBEQVRFUys9IioqKiAtIENvZGUgb3B0aW1pemF0aW9uIGNo
YW5nZWQke05MfSIKPiAgIAo+ICAgaWYgWyAhIC16ICIkVVBEQVRFUyIgXTsgdGhlbgo+ICAgCWVj
aG8gIioqKiBUaGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb24gY2hhbmdlcyB3ZXJlIGRldGVjdGVk
OiIKPiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1p
bmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3Jn
Cmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2
ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Feb 12 17:36:55 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 12 Feb 2019 17:36:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gtbzK-0006Db-Qq; Tue, 12 Feb 2019 17:36:54 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Qgoy=QT=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1gtbzI-0006DW-RX
 for minios-devel@lists.xen.org; Tue, 12 Feb 2019 17:36:52 +0000
X-Inumbo-ID: c56f4142-2eec-11e9-8397-dfc86fcb7fb0
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id c56f4142-2eec-11e9-8397-dfc86fcb7fb0;
 Tue, 12 Feb 2019 17:36:47 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 908DE104DD2;
 Tue, 12 Feb 2019 18:36:46 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id K-cOenu7OB2o; Tue, 12 Feb 2019 18:36:46 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 6CD3E104DCA
 for <minios-devel@lists.xen.org>; Tue, 12 Feb 2019 18:36:44 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 12 Feb 2019 18:36:44
 +0100
To: Simon Kuenzer <simon.kuenzer@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190212160949.31772-1-simon.kuenzer@neclab.eu>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <9dfafba1-7d66-1784-35a8-6dd46879e82b@neclab.eu>
Date: Tue, 12 Feb 2019 18:36:43 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190212160949.31772-1-simon.kuenzer@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2] plat/xen: Grant table
 support as menu option
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gU2ltb24sCgpUaGlzIHBhdGNoIHNlZW1zIGZpbmUuCgoKUmV2aWV3ZWQtYnk6IFNoYXJh
biBTYW50aGFuYW0gPHNoYXJhbi5zYW50aGFuYW1AbmVjbGFiLmV1PgoKVGhhbmtzICYgUmVnYXJk
cwpTaGFyYW4KCk9uIDIvMTIvMTkgNTowOSBQTSwgU2ltb24gS3VlbnplciB3cm90ZToKPiBJbnRy
b2R1Y2VzIGEgbWVudSBvcHRpb24gdG8gZW5hYmxlIG9yIGRpc2FibGUgZ3JhbnQgdGFibGUgc3Vw
cG9ydC4KPiBUaGUgcmVhc29uIGlzIHRoYXQgb3VyIGdyYW50IHRhYmxlIGltcGxlbWVudGF0aW9u
IGRlcGVuZHMgb24KPiBsaWJ1a2xvY2ssIGxpYnVrc2NoZWQsIGFuZCBsaWJ1a2FsbG9jLiBBIG1p
bmltYWwgY29uZmlndXJhdGlvbgo+IHJlcXVpcmVzIHRoZXNlIGxpYnJhcmllcyBzZWxlY3RlZCwg
dG9vLiBUaGlzIG1heSBiZSBhbiBvYnN0YWNsZQo+IHdoZW4gcnVubmluZyBpbXBsZW1lbnRhdGlv
biB3cml0dGVuIGluIGhpZ2hlci1sZXZlbCBsYW5ndWFnZXMuCj4gQWRkaXRpb25hbGx5LCBzb21l
IG9mIHRoZXNlIGxpYnJhcmllcyBhcmUgY3VycmVubHR5IG5vdCBzdXBwb3J0ZWQKPiBvbiBBcm0z
Mi4gSXQgaXMgd2lzZXIgdG8gZ2l2ZSBhbiBvcHRpb24gZm9yIGRpc2FibGluZyBncmFudCB0YWJs
ZQo+IHN1cHBvcnQuCj4gCj4gU2lnbmVkLW9mZi1ieTogU2ltb24gS3VlbnplciA8c2ltb24ua3Vl
bnplckBuZWNsYWIuZXU+Cj4gLS0tCj4gICBwbGF0L3hlbi9Db25maWcudWsgICAgICAgICAgICAg
ICB8IDIwICsrKysrKysrKysrKysrKystLS0tCj4gICBwbGF0L3hlbi9NYWtlZmlsZS51ayAgICAg
ICAgICAgICB8ICA1ICsrKystCj4gICBwbGF0L3hlbi9pbmNsdWRlL2NvbW1vbi9nbnR0YWIuaCB8
ICA2ICsrKysrKwo+ICAgcGxhdC94ZW4vbWVtb3J5LmMgICAgICAgICAgICAgICAgfCAgMiArKwo+
ICAgNCBmaWxlcyBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQo+IAo+
IGRpZmYgLS1naXQgYS9wbGF0L3hlbi9Db25maWcudWsgYi9wbGF0L3hlbi9Db25maWcudWsKPiBp
bmRleCBkMDE0M2U5NS4uZmFmYWJmMDcgMTAwNjQ0Cj4gLS0tIGEvcGxhdC94ZW4vQ29uZmlnLnVr
Cj4gKysrIGIvcGxhdC94ZW4vQ29uZmlnLnVrCj4gQEAgLTMsOCArMyw2IEBAIG1lbnVjb25maWcg
UExBVF9YRU4KPiAgICAgICAgICBkZWZhdWx0IG4KPiAgICAgICAgICBkZXBlbmRzIG9uIChBUkNI
X1g4Nl8zMiB8fCBBUkNIX1g4Nl82NCB8fCBBUkNIX0FSTV8zMikKPiAgICAgICAgICBzZWxlY3Qg
TElCVUtERUJVRwo+IC0gICAgICAgc2VsZWN0IExJQlVLTE9DSwo+IC0gICAgICAgc2VsZWN0IExJ
QlVLTE9DS19TRU1BUEhPUkUKPiAgICAgICAgICBzZWxlY3QgTElCTk9MSUJDIGlmICFIQVZFX0xJ
QkMKPiAgICAgICAgICBzZWxlY3QgTElCRkRUIGlmIEFSQ0hfQVJNXzMyCj4gICAgICAgICAgc2Vs
ZWN0IFhFTl9EQkdFTUVSR0VOQ1kgaWYgQVJDSF9BUk1fMzIKPiBAQCAtMjEsMTEgKzE5LDI1IEBA
IGlmIChQTEFUX1hFTikKPiAgIAkJb3B0aW9uIGlzIGVuYWJsZWQgdGhlIGh5cGVydmlzb3IgY29u
c29sZSBpcyB1c2VkCj4gICAJCWZvciBrZXJuZWwgbWVzc2FnZXMgb25seS4KPiAgIAo+ICtjb25m
aWcgWEVOX0dOVFRBQgo+ICsJYm9vbCAiR3JhbnQgdGFibGUgc3VwcG9ydCIKPiArCWRlZmF1bHQg
eQo+ICsJZGVwZW5kcyBvbiAoQVJDSF9YODZfNjQpCj4gKwlzZWxlY3QgTElCVUtBTExPQwo+ICsJ
c2VsZWN0IExJQlVLTE9DSwo+ICsJc2VsZWN0IExJQlVLTE9DS19TRU1BUEhPUkUKPiArCXNlbGVj
dCBMSUJVS1NDSEVECj4gKwloZWxwCj4gKwkJU3VwcG9ydCBncmFudCB0YWJsZSBvcGVyYXRpb25z
Cj4gKwo+ICAgbWVudWNvbmZpZyBYRU5fWEVOQlVTCj4gLQlib29sICJYZW5idXMgRHJpdmVyIgo+
ICsJYm9vbCAiWGVuYnVzL1hlblN0b3JlIGRyaXZlciIKPiAgIAlkZWZhdWx0IG4KPiAgIAlkZXBl
bmRzIG9uIChBUkNIX1g4Nl82NCkKPiArCXNlbGVjdCBMSUJVS0FMTE9DCj4gKwlzZWxlY3QgTElC
VUtTQ0hFRAo+ICAgCXNlbGVjdCBMSUJVS0JVUwo+ICAgCWhlbHAKPiAtCQlSZWdpc3RlciBhIFhl
bmJ1cyBkcml2ZXIgYXMgdWtfYnVzCj4gKwkJUmVnaXN0ZXJzIFhlbmJ1cyBhcyBidXMgZHJpdmVy
IHRvIGxpYnVrYnVzIGFuZCBwcm92aWRlcyBhCj4gKwkJWGVuU3RvcmUgY29tbXVuaWNhdGlvbiBB
UEkgZm9yIFhlbiBkcml2ZXJzCj4gICBlbmRpZgo+IGRpZmYgLS1naXQgYS9wbGF0L3hlbi9NYWtl
ZmlsZS51ayBiL3BsYXQveGVuL01ha2VmaWxlLnVrCj4gaW5kZXggMzhiNTEwYWQuLjM0MzlhMGQ5
IDEwMDY0NAo+IC0tLSBhL3BsYXQveGVuL01ha2VmaWxlLnVrCj4gKysrIGIvcGxhdC94ZW4vTWFr
ZWZpbGUudWsKPiBAQCAtNDUsNyArNDUsNiBAQCBMSUJYRU5QTEFUX1NSQ1MtJChDT05GSUdfQVJD
SF9YODZfNjQpICs9ICQoTElCWEVOUExBVF9CQVNFKS94ODYvZW50cnk2NC5TCj4gICBMSUJYRU5Q
TEFUX1NSQ1MtJChDT05GSUdfQVJDSF9YODZfNjQpICs9ICQoTElCWEVOUExBVF9CQVNFKS94ODYv
bW0uYwo+ICAgTElCWEVOUExBVF9TUkNTLSQoQ09ORklHX0FSQ0hfWDg2XzY0KSArPSAkKExJQlhF
TlBMQVRfQkFTRSkveDg2L2FyY2hfZXZlbnRzLmMKPiAgIExJQlhFTlBMQVRfU1JDUy0kKENPTkZJ
R19BUkNIX1g4Nl82NCkgKz0gJChMSUJYRU5QTEFUX0JBU0UpL3g4Ni9hcmNoX3RpbWUuYwo+IC1M
SUJYRU5QTEFUX1NSQ1MtJChDT05GSUdfQVJDSF9YODZfNjQpICs9ICQoTElCWEVOUExBVF9CQVNF
KS94ODYvZ250dGFiLmN8eDg2Cj4gICAKPiAgIGlmbmVxICgkKFhFTl9IVk1MSVRFKSx5KQo+ICAg
TElCWEVOUExBVF9BU0ZMQUdTLXkgICAgICAgICAgICs9IC1EQ09ORklHX1BBUkFWSVJUCj4gQEAg
LTczLDcgKzcyLDExIEBAIExJQlhFTlBMQVRfU1JDUy15ICAgICAgICAgICAgICArPSAkKExJQlhF
TlBMQVRfQkFTRSkvbGNwdS5jCj4gICBMSUJYRU5QTEFUX1NSQ1MteSAgICAgICAgICAgICAgKz0g
JChMSUJYRU5QTEFUX0JBU0UpL2NvbnNvbGUuYwo+ICAgTElCWEVOUExBVF9TUkNTLXkgICAgICAg
ICAgICAgICs9ICQoTElCWEVOUExBVF9CQVNFKS9zaHV0ZG93bi5jCj4gICBMSUJYRU5QTEFUX1NS
Q1MteSAgICAgICAgICAgICAgKz0gJChMSUJYRU5QTEFUX0JBU0UpL2V2ZW50cy5jCj4gKwo+ICtp
ZmVxICgkKENPTkZJR19YRU5fR05UVEFCKSx5KQo+ICAgTElCWEVOUExBVF9TUkNTLXkgICAgICAg
ICAgICAgICs9ICQoTElCWEVOUExBVF9CQVNFKS9nbnR0YWIuYwo+ICtMSUJYRU5QTEFUX1NSQ1Mt
JChDT05GSUdfQVJDSF9YODZfNjQpICs9ICQoTElCWEVOUExBVF9CQVNFKS94ODYvZ250dGFiLmN8
eDg2Cj4gK2VuZGlmCj4gICAKPiAgIGlmZXEgKCQoQ09ORklHX1hFTl9YRU5CVVMpLHkpCj4gICBM
SUJYRU5CVVNfRVhQT1JUUyAgICAgICAgICAgICAgID0gJChMSUJYRU5QTEFUX0JBU0UpL3hlbmJ1
cy9leHBvcnRzeW1zLnVrCj4gZGlmZiAtLWdpdCBhL3BsYXQveGVuL2luY2x1ZGUvY29tbW9uL2du
dHRhYi5oIGIvcGxhdC94ZW4vaW5jbHVkZS9jb21tb24vZ250dGFiLmgKPiBpbmRleCBkNGJiNDE3
Mi4uZjVjZGU1YzUgMTAwNjQ0Cj4gLS0tIGEvcGxhdC94ZW4vaW5jbHVkZS9jb21tb24vZ250dGFi
LmgKPiArKysgYi9wbGF0L3hlbi9pbmNsdWRlL2NvbW1vbi9nbnR0YWIuaAo+IEBAIC0yNiw2ICsy
NiwxMCBAQAo+ICAgI2lmbmRlZiBfX0dOVFRBQl9IX18KPiAgICNkZWZpbmUgX19HTlRUQUJfSF9f
Cj4gICAKPiArI2luY2x1ZGUgPHVrL2NvbmZpZy5oPgo+ICsKPiArI2lmZGVmIENPTkZJR19YRU5f
R05UVEFCCj4gKwo+ICAgI2luY2x1ZGUgPHVrL2FsbG9jLmg+Cj4gICAjaW5jbHVkZSA8eGVuL2dy
YW50X3RhYmxlLmg+Cj4gICAKPiBAQCAtNDUsNCArNDksNiBAQCBjb25zdCBjaGFyICpnbnR0YWJv
cF9lcnJvcihfX3MxNiBzdGF0dXMpOwo+ICAgCj4gICBncmFudF9lbnRyeV92MV90ICpnbnR0YWJf
YXJjaF9pbml0KGludCBucl9ncmFudF9mcmFtZXMpOwo+ICAgCj4gKyNlbmRpZiAvKiBDT05GSUdf
WEVOX0dOVFRBQiAqLwo+ICsKPiAgICNlbmRpZiAvKiAhX19HTlRUQUJfSF9fICovCj4gZGlmZiAt
LWdpdCBhL3BsYXQveGVuL21lbW9yeS5jIGIvcGxhdC94ZW4vbWVtb3J5LmMKPiBpbmRleCBmODRk
Y2E3MS4uMWY1NTg4N2UgMTAwNjQ0Cj4gLS0tIGEvcGxhdC94ZW4vbWVtb3J5LmMKPiArKysgYi9w
bGF0L3hlbi9tZW1vcnkuYwo+IEBAIC0xMjMsNiArMTIzLDggQEAgaW50IHVrcGxhdF9tZW1yZWdp
b25fZ2V0KGludCBpLCBzdHJ1Y3QgdWtwbGF0X21lbXJlZ2lvbl9kZXNjICptKQo+ICAgCj4gICBp
bnQgX3VrcGxhdF9tZW1fbWFwcGluZ3NfaW5pdCh2b2lkKQo+ICAgewo+ICsjaWZkZWYgQ09ORklH
X1hFTl9HTlRUQUIKPiAgIAlnbnR0YWJfaW5pdCgpOwo+ICsjZW5kaWYKPiAgIAlyZXR1cm4gMDsK
PiAgIH0KPiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
Ck1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qu
b3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3Mt
ZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Feb 12 17:48:52 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 12 Feb 2019 17:48:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gtcAs-00071N-P3; Tue, 12 Feb 2019 17:48:50 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Qgoy=QT=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1gtcAq-00071I-PL
 for minios-devel@lists.xen.org; Tue, 12 Feb 2019 17:48:48 +0000
X-Inumbo-ID: 6ed1e284-2eee-11e9-9d23-cb193938df95
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 6ed1e284-2eee-11e9-9d23-cb193938df95;
 Tue, 12 Feb 2019 17:48:41 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 229DDF206B;
 Tue, 12 Feb 2019 18:48:40 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id rQGattKOjypk; Tue, 12 Feb 2019 18:48:39 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id E4059F2026
 for <minios-devel@lists.xen.org>; Tue, 12 Feb 2019 18:48:37 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 12 Feb 2019 18:48:37
 +0100
To: Simon Kuenzer <simon.kuenzer@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190211145324.21334-1-simon.kuenzer@neclab.eu>
 <20190211145324.21334-2-simon.kuenzer@neclab.eu>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <edeffab2-cffc-3be3-e6d6-c58232344da5@neclab.eu>
Date: Tue, 12 Feb 2019 18:48:37 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190211145324.21334-2-simon.kuenzer@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 1/2] plat/xen: Split emergency
 and hypervisor console
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: florian.schmidt@neclab.eu
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gU2ltb24sCgpQbGVhc2UgZmluZCB0aGUgY29tbWVudHMgaW5saW5lLgoKSSB0aGluayB0
aGUgY29uc29sZSBpbiB0aGUgeGVuIHBsYXRmb3JtIGlzIGluc3BpcmVkIGZyb20gdGhlIGt2bSAK
cGxhdGZvcm0uIFNvbWUgb2YgdGhlIGlzc3VlIHdlIGhhdmUgaGVyZSBtaWdodCBiZSBjb21tb24g
YWNyb3NzIGJvdGggdGhlIApwbGF0Zm9ybXMuIEkgd291bGRuJ3QgbWluZCBpZiB3ZSB3ZXJlIHRv
IHRha2UgdGhpcyBwYXRjaCBhcyBzdWNoIGFuZCBmaXggCnRoZSBjb25zb2xlIGludGVyZmFjZSBv
biB0aGUgYm90aCBwbGF0Zm9ybSBpbiBhIHNlcGFyYXRlIHNlcmllcy4KClRoYW5rcyAmIFJlZ2Fy
ZHMKU2hhcmFuCgpPbiAyLzExLzE5IDM6NTMgUE0sIFNpbW9uIEt1ZW56ZXIgd3JvdGU6Cj4gU3Bs
aXRzIHRoZSB0d28gY29uc29sZSBpbXBsZW1ldGF0aW9ucyAoaHZjLCBlbWVyZ2VuY3kpIGZyb20g
ZWFjaCBvdGhlci4KPiBTaW1pbGFyIHRvIHBsYXQva3ZtLCBhIGNvbnNvbGUgb3B0aW9uIG1lbnUg
aXMgcG9wdWxhdGVkIGluIHRoZSBwbGF0Zm9ybQo+IGNvbmZpZ3VyYXRpb24gd2hlcmUgZWFjaCBj
b25zb2xlIGNhbiBiZSBpbmRpdmlkdWFsbHkgc2VsZWN0ZWQgYXMgb3V0cHV0Cj4gZm9yIGtlcm5l
bCBvciBkZWJ1ZyBtZXNzYWdlcy4gQmVjYXVzZSBodmMgaXMgY3VycmVudGx5IG5vdCB5ZXQgc3Vw
cG9ydGVkCj4gb24gQXJtMzIsIHdlIHNldCB0aGUgZGVidWcgY29uc29sZSBhcyBkZWZhdWx0IG91
dHB1dCBvbiBBcm0zMi4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBTaW1vbiBLdWVuemVyIDxzaW1vbi5r
dWVuemVyQG5lY2xhYi5ldT4KPiAtLS0KPiAgIHBsYXQveGVuL0NvbmZpZy51ayAgICAgICAgICAg
ICAgICAgICAgfCAgMzQgKysrKy0KPiAgIHBsYXQveGVuL01ha2VmaWxlLnVrICAgICAgICAgICAg
ICAgICAgfCAgIDYgKwo+ICAgcGxhdC94ZW4vY29uc29sZS5jICAgICAgICAgICAgICAgICAgICB8
IDI1NCArKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gICBwbGF0L3hlbi9lbWdf
Y29uc29sZS5jICAgICAgICAgICAgICAgIHwgIDg3ICsrKysrKysrKysrKwo+ICAgcGxhdC94ZW4v
aHZfY29uc29sZS5jICAgICAgICAgICAgICAgICB8IDI1MiArKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysKPiAgIHBsYXQveGVuL2luY2x1ZGUvY29tbW9uL2NvbnNvbGUuaCAgICAgfCAg
IDkgKy0KPiAgIHBsYXQveGVuL2luY2x1ZGUvY29tbW9uL2VtZ19jb25zb2xlLmggfCAgNDUgKysr
KysrCj4gICBwbGF0L3hlbi9pbmNsdWRlL2NvbW1vbi9odl9jb25zb2xlLmggIHwgIDQ5ICsrKysr
KysKPiAgIHBsYXQveGVuL3NodXRkb3duLmMgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KPiAg
IHBsYXQveGVuL3g4Ni9zZXR1cC5jICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KPiAgIDEwIGZp
bGVzIGNoYW5nZWQsIDUxNCBpbnNlcnRpb25zKCspLCAyMjggZGVsZXRpb25zKC0pCj4gICBjcmVh
dGUgbW9kZSAxMDA2NDQgcGxhdC94ZW4vZW1nX2NvbnNvbGUuYwo+ICAgY3JlYXRlIG1vZGUgMTAw
NjQ0IHBsYXQveGVuL2h2X2NvbnNvbGUuYwo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IHBsYXQveGVu
L2luY2x1ZGUvY29tbW9uL2VtZ19jb25zb2xlLmgKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBwbGF0
L3hlbi9pbmNsdWRlL2NvbW1vbi9odl9jb25zb2xlLmgKPiAKPiBkaWZmIC0tZ2l0IGEvcGxhdC94
ZW4vQ29uZmlnLnVrIGIvcGxhdC94ZW4vQ29uZmlnLnVrCj4gaW5kZXggOWNmZTkwYTIuLmEyOWUw
ZmY5IDEwMDY0NAo+IC0tLSBhL3BsYXQveGVuL0NvbmZpZy51awo+ICsrKyBiL3BsYXQveGVuL0Nv
bmZpZy51awo+IEBAIC0xMCwxNCArMTAsMzYgQEAgbWVudWNvbmZpZyBQTEFUX1hFTgo+ICAgICAg
ICAgICAgICAgICAgIENyZWF0ZSBhIFVuaWtyYWZ0IGltYWdlIHRoYXQgcnVucyBhcyBhIFhlbiBn
dWVzdAo+ICAgCj4gICBpZiAoUExBVF9YRU4pCj4gLQljb25maWcgWEVOX0RCR0VNRVJHRU5DWQo+
IC0JYm9vbCAiRW1lcmdlbmN5IGNvbnNvbGUgZm9yIGRlYnVnIG91dHB1dCIKPiArbWVudSAiQ29u
c29sZSBPcHRpb25zIgo+ICsKPiArY29uZmlnIFhFTl9LRVJORUxfSFZfQ09OU09MRQo+ICsJYm9v
bCAiSHlwZXJ2aXNvciBjb25zb2xlIGZvciBrZXJuZWwgcHJpbnRzIgo+ICsJZGVmYXVsdCB5Cj4g
KwlkZXBlbmRzIG9uIEFSQ0hfWDg2XzY0Cj4gKwloZWxwCj4gKwkJU2VuZCBrZXJuZWwgbWVzc2Fn
ZXMgdG8gdGhlIGh5cGVydmlzb3IgY29uc29sZS4KPiArCj4gK2NvbmZpZyBYRU5fS0VSTkVMX0VN
R19DT05TT0xFCj4gKwlib29sICJFbWVyZ2VuY3kgY29uc29sZSBmb3Iga2VybmVsIHByaW50cyIK
PiArCWRlZmF1bHQgeSBpZiBBUkNIX0FSTV8zMgo+ICAgCWRlZmF1bHQgbgo+ICAgCWhlbHAKPiAt
CQlTZW5kIGRlYnVnIG1lc3NhZ2VzIHRvIHRoZSBlbWVyZ2VuY3kgY29uc29sZQo+IC0JCWluc3Rl
YWQgb2YgdGhlIGh5cGVydmlzb3IgY29uc29sZS4gV2hlbiB0aGlzCj4gLQkJb3B0aW9uIGlzIGVu
YWJsZWQgdGhlIGh5cGVydmlzb3IgY29uc29sZSBpcyB1c2VkCj4gLQkJZm9yIGtlcm5lbCBtZXNz
YWdlcyBvbmx5Lgo+ICsJCVNlbmQga2VybmVsIG1lc3NhZ2VzIHRvIHRoZSBlbWVyZ2VuY3kgY29u
c29sZS4KPiArCj4gK2NvbmZpZyBYRU5fREVCVUdfSFZfQ09OU09MRQo+ICsJYm9vbCAiSHlwZXJ2
aXNvciBjb25zb2xlIGZvciBkZWJ1ZyBwcmludHMiCj4gKwlkZWZhdWx0IHkKPiArCWRlcGVuZHMg
b24gQVJDSF9YODZfNjQKPiArCWhlbHAKPiArCQlTZW5kIGRlYnVnIG1lc3NhZ2VzIHRvIHRoZSBo
eXBlcnZpc29yIGNvbnNvbGUuCj4gKwo+ICtjb25maWcgWEVOX0RFQlVHX0VNR19DT05TT0xFCj4g
Kwlib29sICJFbWVyZ2VuY3kgY29uc29sZSBmb3IgZGVidWcgcHJpbnRzIgo+ICsJZGVmYXVsdCB5
IGlmIEFSQ0hfQVJNXzMyCj4gKwlkZWZhdWx0IG4KPiArICAgICAgICBoZWxwCj4gKwkJU2VuZCBk
ZWJ1ZyBtZXNzYWdlcyB0byB0aGUgZW1lcmdlbmN5IGNvbnNvbGUuCj4gK2VuZG1lbnUKPiAgIAo+
ICAgY29uZmlnIFhFTl9HTlRUQUIKPiAgIAlib29sICJHcmFudCB0YWJsZSBzdXBwb3J0Igo+IGRp
ZmYgLS1naXQgYS9wbGF0L3hlbi9NYWtlZmlsZS51ayBiL3BsYXQveGVuL01ha2VmaWxlLnVrCj4g
aW5kZXggMzQzOWEwZDkuLjdhM2ZjYzkzIDEwMDY0NAo+IC0tLSBhL3BsYXQveGVuL01ha2VmaWxl
LnVrCj4gKysrIGIvcGxhdC94ZW4vTWFrZWZpbGUudWsKPiBAQCAtNzAsNiArNzAsMTIgQEAgTElC
WEVOUExBVF9TUkNTLSQoQ09ORklHX0FSQ0hfQVJNXzY0KSArPSAkKExJQlhFTlBMQVRfQkFTRSkv
YXJtL2h5cGVyY2FsbHM2NC5TCj4gICAKPiAgIExJQlhFTlBMQVRfU1JDUy15ICAgICAgICAgICAg
ICArPSAkKExJQlhFTlBMQVRfQkFTRSkvbGNwdS5jCj4gICBMSUJYRU5QTEFUX1NSQ1MteSAgICAg
ICAgICAgICAgKz0gJChMSUJYRU5QTEFUX0JBU0UpL2NvbnNvbGUuYwo+ICtpZmVxICgkKGZpbmRz
dHJpbmcgeSwkKENPTkZJR19YRU5fS0VSTkVMX0hWX0NPTlNPTEUpICQoQ09ORklHX1hFTl9ERUJV
R19IVl9DT05TT0xFKSkseSkKPiArTElCWEVOUExBVF9TUkNTLXkgICAgICAgICAgICAgICs9ICQo
TElCWEVOUExBVF9CQVNFKS9odl9jb25zb2xlLmMKTElCWEVOUExBVF9TUkNTLSQoQ09ORklHX0FS
Q0hfWDg2XzY0KQoKPiArZW5kaWYKPiAraWZlcSAoJChmaW5kc3RyaW5nIHksJChDT05GSUdfWEVO
X0tFUk5FTF9FTUdfQ09OU09MRSkgJChDT05GSUdfWEVOX0RFQlVHX0VNR19DT05TT0xFKSkseSkK
PiArTElCWEVOUExBVF9TUkNTLXkgICAgICAgICAgICAgICs9ICQoTElCWEVOUExBVF9CQVNFKS9l
bWdfY29uc29sZS5jCj4gK2VuZGlmCj4gICBMSUJYRU5QTEFUX1NSQ1MteSAgICAgICAgICAgICAg
Kz0gJChMSUJYRU5QTEFUX0JBU0UpL3NodXRkb3duLmMKPiAgIExJQlhFTlBMQVRfU1JDUy15ICAg
ICAgICAgICAgICArPSAkKExJQlhFTlBMQVRfQkFTRSkvZXZlbnRzLmMKPiAgIAo+IGRpZmYgLS1n
aXQgYS9wbGF0L3hlbi9jb25zb2xlLmMgYi9wbGF0L3hlbi9jb25zb2xlLmMKPiBpbmRleCBhNzBl
YzVmZi4uZWQ1OTQwMDQgMTAwNjQ0Cj4gLS0tIGEvcGxhdC94ZW4vY29uc29sZS5jCj4gKysrIGIv
cGxhdC94ZW4vY29uc29sZS5jCj4gQEAgLTIsNyArMiw4IEBACj4gICAvKgo+ICAgICogQXV0aG9y
czogU2ltb24gS3VlbnplciA8c2ltb24ua3VlbnplckBuZWNsYWIuZXU+Cj4gICAgKgo+IC0gKiBD
b3B5cmlnaHQgKGMpIDIwMTcsIE5FQyBFdXJvcGUgTHRkLiwgTkVDIENvcnBvcmF0aW9uLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTksIE5FQyBMYWJvcmF0b3Jp
ZXMgRXVyb3BlIEdtYkgsIE5FQyBDb3Jwb3JhdGlvbi4KPiArICogICAgICAgICAgICAgICAgICAg
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgo+ICAgICoKPiAgICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAo+ICAgICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCj4gQEAgLTMyLDIxMCArMzMsMzggQEAKPiAgICAqIFRISVMgSEVBREVSIE1BWSBOT1Qg
QkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCj4gICAgKi8KPiAgIAo+IC0vKgo+
IC0gKiBTb21lIG9mIHRoaXMgY29kZSB3YXMgcG9ydGVkIGZyb20gTWluaS1PUzoKPiAtICogIGNv
bnNvbGUveGVuY29uc19yaW5nLmMgYW5kIGNvbnNvbGUvY29uc29sZS5jCj4gLSAqLwo+IC0vKgo+
IC0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKgo+IC0gKiAoQykgMjAwNiAtIEdyemVnb3J6IE1pbG9zIC0g
Q2FtYnJpZGdlIFVuaXZlcnNpdHkKPiAtICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPiAtICoKPiAtICog
ICAgICAgIEZpbGU6IGNvbnNvbGUuaAo+IC0gKiAgICAgIEF1dGhvcjogR3J6ZWdvcnogTWlsb3MK
PiAtICogICAgIENoYW5nZXM6Cj4gLSAqCj4gLSAqICAgICAgICBEYXRlOiBNYXIgMjAwNgo+IC0g
Kgo+IC0gKiBFbnZpcm9ubWVudDogWGVuIE1pbmltYWwgT1MKPiAtICogRGVzY3JpcHRpb246IENv
bnNvbGUgaW50ZXJmYWNlLgo+IC0gKgo+IC0gKiBIYW5kbGVzIGNvbnNvbGUgSS9PLiBEZWZpbmVz
IHByaW50ay4KPiAtICoKPiAtICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPiAtICogUGVybWlzc2lvbiBp
cyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5n
IGEgY29weQo+IC0gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRp
b24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KPiAtICogZGVhbCBpbiB0aGUgU29mdHdhcmUg
d2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUKPiAt
ICogcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0
ZSwgc3VibGljZW5zZSwgYW5kL29yCj4gLSAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwg
YW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCj4gLSAqIGZ1cm5p
c2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cj4gLSAq
Cj4gLSAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90
aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCj4gLSAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwg
cG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgo+IC0gKgo+IC0gKiBUSEUgU09GVFdBUkUgSVMgUFJP
VklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgo+
IC0gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSwKPiAtICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCj4gLSAqIEFVVEhP
UlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMg
T1IgT1RIRVIKPiAtICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFD
VCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKPiAtICogRlJPTSwgT1VUIE9GIE9SIElOIENP
Tk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgo+IC0gKiBERUFM
SU5HUyBJTiBUSEUgU09GVFdBUkUuCj4gLSAqLwo+IC0KPiAtI2luY2x1ZGUgPGludHR5cGVzLmg+
Cj4gLSNpbmNsdWRlIDxzdHJpbmcuaD4KPiArI2luY2x1ZGUgPHVrL2NvbmZpZy5oPgo+ICAgI2lu
Y2x1ZGUgPHVrL3BsYXQvY29uc29sZS5oPgo+ICsjaW5jbHVkZSA8c3RyaW5nLmg+Cj4gICAjaW5j
bHVkZSA8dWsvYXJjaC9sY3B1Lmg+Cj4gLSNpbmNsdWRlIDx1ay9hc3NlcnQuaD4KPiAgICNpbmNs
dWRlIDx1ay9lc3NlbnRpYWxzLmg+Cj4gLSNpbmNsdWRlIDx1ay9jb25maWcuaD4KPiAtCj4gLSNp
bmNsdWRlIDxjb21tb24vY29uc29sZS5oPgo+IC0jaW5jbHVkZSA8Y29tbW9uL2V2ZW50cy5oPgo+
IC0jaW5jbHVkZSA8Y29tbW9uL2h5cGVydmlzb3IuaD4KPiAtI2luY2x1ZGUgPHhlbi94ZW4uaD4K
PiAgIAo+IC0jaWYgKGRlZmluZWQgX19YODZfMzJfXykgfHwgKGRlZmluZWQgX19YODZfNjRfXykK
PiAtI2luY2x1ZGUgPHhlbi14ODYvc2V0dXAuaD4KPiAtI2luY2x1ZGUgPHhlbi14ODYvbW0uaD4K
PiAtI2lmIGRlZmluZWQgX19YODZfMzJfXwo+IC0jaW5jbHVkZSA8eGVuLXg4Ni9oeXBlcmNhbGwz
Mi5oPgo+IC0jZWxpZiBkZWZpbmVkIF9fWDg2XzY0X18KPiAtI2luY2x1ZGUgPHhlbi14ODYvaHlw
ZXJjYWxsNjQuaD4KPiArI2lmIChDT05GSUdfWEVOX0tFUk5FTF9IVl9DT05TT0xFIHx8IENPTkZJ
R19YRU5fREVCVUdfSFZfQ09OU09MRSkKPiArI2luY2x1ZGUgPGNvbW1vbi9odl9jb25zb2xlLmg+
Cj4gICAjZW5kaWYKPiAtI2VsaWYgKGRlZmluZWQgX19BUk1fMzJfXykgfHwgKGRlZmluZWQgX19B
Uk1fNjRfXykKPiAtI2luY2x1ZGUgPHhlbi1hcm0vbW0uaD4KPiAtI2luY2x1ZGUgPHhlbi1hcm0v
aHlwZXJjYWxsLmg+Cj4gKyNpZiAoQ09ORklHX1hFTl9LRVJORUxfRU1HX0NPTlNPTEUgfHwgQ09O
RklHX1hFTl9ERUJVR19FTUdfQ09OU09MRSkKPiArI2luY2x1ZGUgPGNvbW1vbi9lbWdfY29uc29s
ZS5oPgo+ICAgI2VuZGlmCj4gLSNpbmNsdWRlIDx4ZW4vaW8vY29uc29sZS5oPgo+IC0jaW5jbHVk
ZSA8eGVuL2lvL3Byb3RvY29scy5oPgo+IC0jaW5jbHVkZSA8eGVuL2lvL3JpbmcuaD4KPiAtI2lm
bmRlZiBDT05GSUdfUEFSQVZJUlQKPiAtI2luY2x1ZGUgPHhlbi9odm0vcGFyYW1zLmg+Cj4gLSNl
bmRpZgo+IC0KPiAtc3RhdGljIHN0cnVjdCB4ZW5jb25zX2ludGVyZmFjZSAqY29uc29sZV9yaW5n
Owo+IC1zdGF0aWMgdWludDMyX3QgY29uc29sZV9ldnRjaG47Cj4gLXN0YXRpYyBpbnQgY29uc29s
ZV9yZWFkeTsKPiAgIAo+IC0jaWZkZWYgQ09ORklHX1BBUkFWSVJUCj4gLXZvaWQgX2xpYnhlbnBs
YXRfcHJlcGFyZV9jb25zb2xlKHZvaWQpCj4gK3ZvaWQgcHJlcGFyZV9jb25zb2xlKHZvaWQpCj4g
ICB7Cj4gLQljb25zb2xlX3JpbmcgPSBtZm5fdG9fdmlydChIWVBFUlZJU09SX3N0YXJ0X2luZm8t
PmNvbnNvbGUuZG9tVS5tZm4pOwo+IC0JY29uc29sZV9ldnRjaG4gPSBIWVBFUlZJU09SX3N0YXJ0
X2luZm8tPmNvbnNvbGUuZG9tVS5ldnRjaG47Cj4gLX0KPiAtI2Vsc2UKPiAtdm9pZCBfbGlieGVu
cGxhdF9wcmVwYXJlX2NvbnNvbGUodm9pZCkKPiAtewo+IC0JLyogTk9UIElNUExFTUVOVEVEIFlF
VCAqLwo+IC19Cj4gKyNpZiAoQ09ORklHX1hFTl9LRVJORUxfSFZfQ09OU09MRSB8fCBDT05GSUdf
WEVOX0RFQlVHX0hWX0NPTlNPTEUpCj4gKwlodl9jb25zb2xlX3ByZXBhcmUoKTsKPiAgICNlbmRp
Zgo+IC0KPiAtI2lmIENPTkZJR19YRU5fREJHRU1FUkdFTkNZCj4gLXN0YXRpYyBpbnQgZW1lcmdl
bmN5X291dHB1dChjb25zdCBjaGFyICpzdHIsIHVuc2lnbmVkIGludCBsZW4pCj4gLXsKPiAtCWlu
dCByYzsKPiAtCj4gLQlyYyA9IEhZUEVSVklTT1JfY29uc29sZV9pbyhDT05TT0xFSU9fd3JpdGUs
IGxlbiwgREVDT05TVChjaGFyICosIHN0cikpOwo+IC0JaWYgKHVubGlrZWx5KHJjIDwgMCkpCj4g
LQkJcmV0dXJuIHJjOwo+IC0JcmV0dXJuIGxlbjsKPiAtfQo+IC0jZW5kaWYKPiAtCj4gLS8qCj4g
LSAqIGh2Y29uc29sZV9vdXRwdXQgY2FuIG9wZXJhdGUgaW4gdHdvIG1vZGVzOiBidWZmZXJlZCBh
bmQgaW5pdGlhbGl6ZWQuCj4gLSAqIFRoZSBidWZmZXJlZCBtb2RlIGlzIGF1dG9tYXRpY2FsbHkg
YWN0aXZhdGVkIGFmdGVyCj4gLSAqIF9saWJ4ZW5wbGF0X3ByZXBhcmVfY29uc29sZSgpIHdhcyBj
YWxsZWQgYW5kIHdlIGtub3cgd2hlcmUgdGhlIGNvbnNvbGUgcmluZwo+IC0gKiBpcy4gVGhlIG91
dHB1dCBzdHJpbmcgaXMgcHV0IHRvIHRoZSBjb25zb2xlIHJpbmcgdW50aWwgdGhlIHJpbmcgaXMg
ZnVsbC4gQW55Cj4gLSAqIGZ1cnRoZXIgY2hhcmFjdGVycyBhcmUgZGlzY2FyZGVkLiBTaW5jZSB0
aGUgZXZlbnQgY2hhbm5lbCBpcyBub3QgaW5pdGlhbGl6ZWQKPiAtICogeWV0LCB0aGUgYmFja2Vu
ZCBpcyBub3Qgbm90aWZpZWQuIFRoaXMgbW9kZSBpcyBpbnRyb2R1Y2VkIHRvIHN1cHBvcnQgZWFy
bHkKPiAtICogcHJpbnRpbmcsIGV2ZW4gYmVmb3JlIGV2ZW50cyBhcmUgbm90IGluaXRpYWxpemVk
Lgo+IC0gKiBfbGlieGVucGxhdF9pbml0X2NvbnNvbGUoKSBmaW5hbGl6ZXMgdGhlIGluaXRpYWxp
emF0aW9uIGFuZCBlbmFibGVzCj4gLSAqIHRoZSBldmVudCBjaGFubmVsLiBGcm9tIG5vdyBvbiwg
dGhlIGNvbnNvbGUgYmFja2VuZCBpcyBub3RpZmllZCB3aGVuZXZlcgo+IC0gKiB3ZSBwdXQgY2hh
cmFjdGVycyBvbiB0aGUgY29uc29sZSByaW5nLiBXaGVuZXZlciB0aGlzIHJpbmcgaXMgZnVsbCBh
bmQgdGhlcmUKPiAtICogYXJlIHN0aWxsIGNoYXJhY3RlcnMgdGhhdCBzaG91bGQgYmUgcHJpbnRl
ZCwgd2UgYXJlIGVudGVyaW5nIGEgYnVzeSBsb29wIGFuZAo+IC0gKiB3YWl0IGZvciB0aGUgYmFj
a2VuZCB0byBtYWtlIHVzIHNwYWNlIGFnYWluLiBPZiBjb3Vyc2UgdGhpcyBpcyBzbG93OiBkbyBu
b3QKPiAtICogcHJpbnQgc28gbXVjaCEgOy0pCj4gLSAqLwo+IC1zdGF0aWMgaW50IGh2Y29uc29s
ZV9vdXRwdXQoY29uc3QgY2hhciAqc3RyLCB1bnNpZ25lZCBpbnQgbGVuKQo+IC17Cj4gLQl1bnNp
Z25lZCBpbnQgc2VudCA9IDA7Cj4gLQlYRU5DT05TX1JJTkdfSURYIGNvbnMsIHByb2Q7Cj4gLQo+
IC0JaWYgKHVubGlrZWx5KCFjb25zb2xlX3JpbmcpKQo+IC0JCXJldHVybiBzZW50Owo+IC0KPiAt
cmV0cnk6Cj4gLQljb25zID0gY29uc29sZV9yaW5nLT5vdXRfY29uczsKPiAtCXByb2QgPSBjb25z
b2xlX3JpbmctPm91dF9wcm9kOwo+IC0KPiAtCW1iKCk7IC8qIG1ha2Ugc3VyZSB3ZSBoYXZlIGNv
bnMgJiBwcm9kIGJlZm9yZSB0b3VjaGluZyB0aGUgcmluZyAqLwo+IC0JVUtfQlVHT04oKHByb2Qg
LSBjb25zKSA+IHNpemVvZihjb25zb2xlX3JpbmctPm91dCkpOwo+IC0KPiAtCXdoaWxlICgoc2Vu
dCA8IGxlbikgJiYgKChwcm9kIC0gY29ucykgPCBzaXplb2YoY29uc29sZV9yaW5nLT5vdXQpKSkg
ewo+IC0JCWlmIChzdHJbc2VudF0gPT0gJ1xuJykgewo+IC0JCQkvKiBwcmVwZW5kICdccicgZm9y
IGNvbnZlcnRpbmcgJ1xuJyB0byAnXHInJ1xuJyAqLwo+IC0JCQlpZiAoKHByb2QgKyAxIC0gY29u
cykgPj0gc2l6ZW9mKGNvbnNvbGVfcmluZy0+b3V0KSkKPiAtCQkJCWJyZWFrOyAvKiBub3QgZW5v
dWdoIHNwYWNlIGZvciAnXHInIGFuZCAnXG4nISAqLwo+IC0KPiAtCQkJY29uc29sZV9yaW5nLT5v
dXRbTUFTS19YRU5DT05TX0lEWChwcm9kKyssCj4gLQkJCQkJCQkgICBjb25zb2xlX3JpbmctPm91
dCldID0KPiAtCQkJCSdccic7Cj4gLQkJfQo+IC0KPiAtCQljb25zb2xlX3JpbmctPm91dFtNQVNL
X1hFTkNPTlNfSURYKHByb2QrKywgY29uc29sZV9yaW5nLT5vdXQpXSA9Cj4gLQkJCXN0cltzZW50
XTsKPiAtCQlzZW50Kys7Cj4gLQl9Cj4gLQl3bWIoKTsgLyogZW5zdXJlIGNoYXJhY3RlcnMgYXJl
IHdyaXR0ZW4gYmVmb3JlIGluY3JlYXNpbmcgb3V0X3Byb2QgKi8KPiAtCWNvbnNvbGVfcmluZy0+
b3V0X3Byb2QgPSBwcm9kOwo+IC0KPiAtCS8qIElzIHRoZSBjb25zb2xlIGZ1bGx5IGluaXRpYWxp
emVkPwo+IC0JICogQXJlIHdlIGFibGUgdG8gbm90aWZ5IHRoZSBiYWNrZW5kPwo+IC0JICovCj4g
LQlpZiAobGlrZWx5KGNvbnNvbGVfcmVhZHkgJiYgY29uc29sZV9ldnRjaG4pKSB7Cj4gLQkJbm90
aWZ5X3JlbW90ZV92aWFfZXZ0Y2huKGNvbnNvbGVfZXZ0Y2huKTsKPiAtCj4gLQkJLyogVGhlcmUg
YXJlIHN0aWxsIGJ5dGVzIGxlZnQgdG8gc2VuZCBvdXQ/IElmIHllcywgZG8gbm90Cj4gLQkJICog
ZGlzY2FyZCB0aGVtLCByZXRyeSBzZW5kaW5nIChlbnRlcnMgYnVzeSB3YWl0aW5nKQo+IC0JCSAq
Lwo+IC0JCWlmIChzZW50IDwgbGVuKQo+IC0JCQlnb3RvIHJldHJ5Owo+IC0JfQo+IC0JcmV0dXJu
IHNlbnQ7Cj4gICB9Cj4gICAKPiAtc3RhdGljIHZvaWQgaHZjb25zb2xlX2lucHV0KGV2dGNobl9w
b3J0X3QgcG9ydCBfX3VudXNlZCwKPiAtCQkJICAgIHN0cnVjdCBfX3JlZ3MgKnJlZ3MgX191bnVz
ZWQsCj4gLQkJCSAgICB2b2lkICpkYXRhIF9fdW51c2VkKQo+ICt2b2lkIGZsdXNoX2NvbnNvbGUo
dm9pZCkKPiAgIHsKPiAtCS8qIE5PVCBJTVBMRU1FTlRFRCBZRVQgKi8KPiAtfQo+IC0KPiAtdm9p
ZCBodmNvbnNvbGVfZmx1c2godm9pZCkKPiAtewo+IC0Jc3RydWN0IHhlbmNvbnNfaW50ZXJmYWNl
ICppbnRmOwo+IC0KPiAtCWlmICghY29uc29sZV9yZWFkeSkKPiAtCQlyZXR1cm47Cj4gLQo+IC0J
aW50ZiA9IGNvbnNvbGVfcmluZzsKPiAtCWlmICh1bmxpa2VseSghaW50ZikpCj4gLQkJcmV0dXJu
Owo+IC0KPiAtCXdoaWxlIChpbnRmLT5vdXRfY29ucyA8IGludGYtPm91dF9wcm9kKQo+IC0JCWJh
cnJpZXIoKTsKPiArI2lmIChDT05GSUdfWEVOX0tFUk5FTF9IVl9DT05TT0xFIHx8IENPTkZJR19Y
RU5fREVCVUdfSFZfQ09OU09MRSkKPiArCWh2X2NvbnNvbGVfZmx1c2goKTsKPiArI2VuZGlmCj4g
ICB9Cj4gICAKPiAtdm9pZCBfbGlieGVucGxhdF9pbml0X2NvbnNvbGUodm9pZCkKPiArdm9pZCBp
bml0X2NvbnNvbGUodm9pZCkKPiAgIHsKPiAtCWludCBlcnI7Cj4gLQo+IC0JVUtfQVNTRVJUKGNv
bnNvbGVfcmluZyAhPSBOVUxMKTsKPiAtCj4gLQl1a19wcl9kZWJ1ZygiaHZjb25zb2xlIEAgJXAg
KGV2dGNobjogJSJQUkl1MzIiKVxuIiwKPiAtCQkgICAgY29uc29sZV9yaW5nLCBjb25zb2xlX2V2
dGNobik7Cj4gLQo+IC0JZXJyID0gYmluZF9ldnRjaG4oY29uc29sZV9ldnRjaG4sIGh2Y29uc29s
ZV9pbnB1dCwgTlVMTCk7Cj4gLQlpZiAoZXJyIDw9IDApCj4gLQkJVUtfQ1JBU0goIkZhaWxlZCB0
byBiaW5kIGV2ZW50IGNoYW5uZWwgZm9yIGh2Y29uc29sZTogJWlcbiIsCj4gLQkJCSBlcnIpOwo+
IC0JdW5tYXNrX2V2dGNobihjb25zb2xlX2V2dGNobik7Cj4gLQo+IC0JY29uc29sZV9yZWFkeSA9
IDE7IC8qIGVuYWJsZSBub3RpZmljYXRpb24gb2YgYmFja2VuZCAqLwo+IC0JLyogZmx1c2ggcXVl
dWVkIG91dHB1dCAqLwo+IC0Jbm90aWZ5X3JlbW90ZV92aWFfZXZ0Y2huKGNvbnNvbGVfZXZ0Y2hu
KTsKPiArI2lmIChDT05GSUdfWEVOX0tFUk5FTF9IVl9DT05TT0xFIHx8IENPTkZJR19YRU5fREVC
VUdfSFZfQ09OU09MRSkKPiArCWh2X2NvbnNvbGVfaW5pdCgpOwo+ICsjZW5kaWYKPiAgIH0KPiAg
IAo+ICAgaW50IHVrcGxhdF9jb3V0ZChjb25zdCBjaGFyICpzdHIsIHVuc2lnbmVkIGludCBsZW4p
Cj4gQEAgLTI0Myw0MSArNzIsMzYgQEAgaW50IHVrcGxhdF9jb3V0ZChjb25zdCBjaGFyICpzdHIs
IHVuc2lnbmVkIGludCBsZW4pCj4gICAJaWYgKHVubGlrZWx5KGxlbiA9PSAwKSkKPiAgIAkJbGVu
ID0gc3RybmxlbihzdHIsIGxlbik7Cj4gICAKPiAtI2lmIENPTkZJR19YRU5fREJHRU1FUkdFTkNZ
Cj4gLQlyZXR1cm4gZW1lcmdlbmN5X291dHB1dChzdHIsIGxlbik7Cj4gLSNlbHNlCj4gLQlyZXR1
cm4gaHZjb25zb2xlX291dHB1dChzdHIsIGxlbik7Cj4gKyNpZiBDT05GSUdfWEVOX0RFQlVHX0VN
R19DT05TT0xFCgpFcnJvciBjaGVjayBtaXNzaW5nIG9uIHRoZSBjb25zb2xlIGRyaXZlcgo+ICsJ
ZW1nX2NvbnNvbGVfb3V0cHV0KHN0ciwgbGVuKTsKPiArI2VuZGlmCj4gKyNpZiBDT05GSUdfWEVO
X0RFQlVHX0hWX0NPTlNPTEUKCkVycm9yIGNoZWNrIG1pc3Npbmcgb24gdGhlIGNvbnNvbGUgZHJp
dmVyCj4gKwlodl9jb25zb2xlX291dHB1dChzdHIsIGxlbik7Cj4gICAjZW5kaWYKPiArCXJldHVy
biBsZW47Cj4gICB9Cj4gICAKPiAtaW50IHVrcGxhdF9jb3V0ayhjb25zdCBjaGFyICpzdHIgX191
bnVzZWQsIHVuc2lnbmVkIGludCBsZW4gX191bnVzZWQpCj4gK2ludCB1a3BsYXRfY291dGsoY29u
c3QgY2hhciAqc3RyLCB1bnNpZ25lZCBpbnQgbGVuKQo+ICAgewo+ICAgCWlmICh1bmxpa2VseShs
ZW4gPT0gMCkpCj4gICAJCWxlbiA9IHN0cm5sZW4oc3RyLCBsZW4pOwo+ICAgCj4gLQlyZXR1cm4g
aHZjb25zb2xlX291dHB1dChzdHIsIGxlbik7Cj4gKyNpZiBDT05GSUdfWEVOX0tFUk5FTF9FTUdf
Q09OU09MRQoKRXJyb3IgY2hlY2sgbWlzc2luZyBvbiB0aGUgY29uc29sZSBkcml2ZXIKPiArCWVt
Z19jb25zb2xlX291dHB1dChzdHIsIGxlbik7Cj4gKyNlbmRpZgo+ICsjaWYgQ09ORklHX1hFTl9L
RVJORUxfSFZfQ09OU09MRQoKRXJyb3IgY2hlY2sgbWlzc2luZyBvbiB0aGUgY29uc29sZSBkcml2
ZXIKPiArCWh2X2NvbnNvbGVfb3V0cHV0KHN0ciwgbGVuKTsKPiArI2VuZGlmCj4gKwlyZXR1cm4g
bGVuOwo+ICAgfQo+ICAgCj4gLWludCB1a3BsYXRfY2luayhjaGFyICpzdHIsIHVuc2lnbmVkIGlu
dCBtYXhsZW4pCj4gK2ludCB1a3BsYXRfY2luayhjaGFyICpzdHIgX19tYXliZV91bnVzZWQsIHVu
c2lnbmVkIGludCBtYXhsZW4gX19tYXliZV91bnVzZWQpCj4gICB7Cj4gLQlpbnQgcmVhZCA9IDA7
Cj4gLQlYRU5DT05TX1JJTkdfSURYIGNvbnMsIHByb2Q7Cj4gKwlpbnQgcmV0ID0gMDsKaWYgd2Ug
ZG9uJ3Qgc3VwcG9ydCBIVl9DT05TT0xFIHNob3VsZCB3ZSBub3QgcmVwb3J0IGFuIGVycm9yCi1F
Tk9UU1VQLgo+ICAgCj4gLQljb25zID0gY29uc29sZV9yaW5nLT5pbl9jb25zOwo+IC0JcHJvZCA9
IGNvbnNvbGVfcmluZy0+aW5fcHJvZDsKPiAtCXJtYigpOyAvKiBtYWtlIHN1cmUgaW5fY29ucywg
aW5fcHJvZCBhcmUgcmVhZCBiZWZvcmUgZW5xdWV1aW5nICovCj4gLQlVS19CVUdPTigocHJvZCAt
IGNvbnMpID4gc2l6ZW9mKGNvbnNvbGVfcmluZy0+aW4pKTsKPiAtCj4gLQl3aGlsZSAoY29ucyAh
PSBwcm9kICYmIG1heGxlbiA+IDApIHsKPiAtCQkqKHN0ciArIHJlYWQpID0gKihjb25zb2xlX3Jp
bmctPmluKwo+IC0JCQkJICBNQVNLX1hFTkNPTlNfSURYKGNvbnMsIGNvbnNvbGVfcmluZy0+aW4p
KTsKPiAtCQlyZWFkKys7Cj4gLQkJY29ucysrOwo+IC0JCW1heGxlbi0tOwo+IC0JfQo+IC0KPiAt
CXdtYigpOyAvKiBlbnN1cmUgZmluaXNoZWQgb3BlcmF0aW9uIGJlZm9yZSB1cGRhdGluZyBpbl9j
b25zICovCj4gLQljb25zb2xlX3JpbmctPmluX2NvbnMgPSBjb25zOwo+ICsjaWYgQ09ORklHX1hF
Tl9LRVJORUxfSFZfQ09OU09MRQo+ICsJcmV0ID0gaHZfY29uc29sZV9pbnB1dChzdHIsIG1heGxl
bik7Cj4gKyNlbmRpZgo+ICAgCj4gLQlyZXR1cm4gcmVhZDsKPiArCXJldHVybiByZXQ7Cj4gICB9
Cj4gZGlmZiAtLWdpdCBhL3BsYXQveGVuL2VtZ19jb25zb2xlLmMgYi9wbGF0L3hlbi9lbWdfY29u
c29sZS5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMC4uZTJlNGRmNmUK
PiAtLS0gL2Rldi9udWxsCj4gKysrIGIvcGxhdC94ZW4vZW1nX2NvbnNvbGUuYwo+IEBAIC0wLDAg
KzEsODcgQEAKPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSBhbmQg
TUlUICovCj4gKy8qCj4gKyAqIEF1dGhvcnM6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJA
bmVjbGFiLmV1Pgo+ICsgKgo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTksIE5FQyBMYWJvcmF0b3Jp
ZXMgRXVyb3BlIEdtYkgsIE5FQyBDb3Jwb3JhdGlvbi4KPiArICogICAgICAgICAgICAgICAgICAg
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgo+ICsgKgo+ICsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKPiArICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCj4gKyAqIGFyZSBtZXQ6Cj4gKyAqCj4gKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KPiAr
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQo+ICsgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgo+
ICsgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUg
bmFtZXMgb2YgaXRzCj4gKyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCj4gKyAqICAgIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCj4gKyAqCj4gKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMgIkFTIElTIgo+ICsgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCj4gKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFCj4gKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKPiArICogTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgo+ICsgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgo+ICsgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKPiArICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KPiArICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKPiArICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKPiArICogUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCj4gKyAqCj4gKyAqIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFD
VEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCj4gKyAqLwo+ICsKPiArLyoKPiArICogU29tZSBv
ZiB0aGlzIGNvZGUgd2FzIHBvcnRlZCBmcm9tIE1pbmktT1M6Cj4gKyAqICBjb25zb2xlL3hlbmNv
bnNfcmluZy5jIGFuZCBjb25zb2xlL2NvbnNvbGUuYwo+ICsgKi8KPiArLyoKPiArICoqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioKPiArICogKEMpIDIwMDYgLSBHcnplZ29yeiBNaWxvcyAtIENhbWJyaWRnZSBV
bml2ZXJzaXR5Cj4gKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4gKyAqCj4gKyAqICAgICAgICBGaWxl
OiBjb25zb2xlLmgKPiArICogICAgICBBdXRob3I6IEdyemVnb3J6IE1pbG9zCj4gKyAqICAgICBD
aGFuZ2VzOgo+ICsgKgo+ICsgKiAgICAgICAgRGF0ZTogTWFyIDIwMDYKPiArICoKPiArICogRW52
aXJvbm1lbnQ6IFhlbiBNaW5pbWFsIE9TCj4gKyAqIERlc2NyaXB0aW9uOiBDb25zb2xlIGludGVy
ZmFjZS4KPiArICoKPiArICogSGFuZGxlcyBjb25zb2xlIEkvTy4gRGVmaW5lcyBwcmludGsuCj4g
KyAqCj4gKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqCj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdy
YW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKPiAr
ICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0
aGUgIlNvZnR3YXJlIiksIHRvCj4gKyAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVz
dHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCj4gKyAqIHJpZ2h0cyB0
byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vu
c2UsIGFuZC9vcgo+ICsgKiBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJt
aXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwo+ICsgKiBmdXJuaXNoZWQgdG8gZG8g
c28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+ICsgKgo+ICsgKiBUaGUg
YWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBi
ZSBpbmNsdWRlZCBpbgo+ICsgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9m
IHRoZSBTb2Z0d2FyZS4KPiArICoKPiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJ
UyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKPiArICogSU1QTElF
RCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFksCj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05J
TkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQo+ICsgKiBBVVRIT1JTIE9SIENPUFlS
SUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCj4g
KyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Ig
T1RIRVJXSVNFLCBBUklTSU5HCj4gKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJ
VEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKPiArICogREVBTElOR1MgSU4gVEhF
IFNPRlRXQVJFLgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDx1ay9lc3NlbnRpYWxzLmg+Cj4gKyNp
bmNsdWRlIDxjb21tb24vaHlwZXJ2aXNvci5oPgo+ICsKPiAraW50IGVtZ19jb25zb2xlX291dHB1
dChjb25zdCBjaGFyICpzdHIsIHVuc2lnbmVkIGludCBsZW4pCj4gK3sKPiArCWludCByYzsKPiAr
Cj4gKwlyYyA9IEhZUEVSVklTT1JfY29uc29sZV9pbyhDT05TT0xFSU9fd3JpdGUsIGxlbiwgREVD
T05TVChjaGFyICosIHN0cikpOwo+ICsJaWYgKHVubGlrZWx5KHJjIDwgMCkpCj4gKwkJcmV0dXJu
IHJjOwo+ICsJcmV0dXJuIGxlbjsKPiArfQo+IGRpZmYgLS1naXQgYS9wbGF0L3hlbi9odl9jb25z
b2xlLmMgYi9wbGF0L3hlbi9odl9jb25zb2xlLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGlu
ZGV4IDAwMDAwMDAwLi4yOGY4NmYyNQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9wbGF0L3hlbi9o
dl9jb25zb2xlLmMKPiBAQCAtMCwwICsxLDI1MiBAQAo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRp
ZmllcjogQlNELTMtQ2xhdXNlIGFuZCBNSVQgKi8KPiArLyoKPiArICogQXV0aG9yczogU2ltb24g
S3VlbnplciA8c2ltb24ua3VlbnplckBuZWNsYWIuZXU+Cj4gKyAqCj4gKyAqIENvcHlyaWdodCAo
YykgMjAxOSwgTkVDIExhYm9yYXRvcmllcyBFdXJvcGUgR21iSCwgTkVDIENvcnBvcmF0aW9uLgo+
ICsgKiAgICAgICAgICAgICAgICAgICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4gKyAqCj4gKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAo+ICsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKPiArICogYXJlIG1ldDoKPiArICoKPiArICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgo+ICsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Cj4gKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCj4gKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNv
cHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKPiArICogICAgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
PiArICogICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KPiArICoKPiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCj4gKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKPiArICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKPiArICogQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRQo+ICsg
KiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCj4gKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCj4gKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwo+ICsg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgo+ICsgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQo+ICsgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRQo+ICsgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KPiArICoKPiArICogVEhJUyBI
RUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4KPiArICov
Cj4gKwo+ICsvKgo+ICsgKiBTb21lIG9mIHRoaXMgY29kZSB3YXMgcG9ydGVkIGZyb20gTWluaS1P
UzoKPiArICogIGNvbnNvbGUveGVuY29uc19yaW5nLmMgYW5kIGNvbnNvbGUvY29uc29sZS5jCj4g
KyAqLwo+ICsvKgo+ICsgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+ICsgKiAoQykgMjAwNiAtIEdyemVn
b3J6IE1pbG9zIC0gQ2FtYnJpZGdlIFVuaXZlcnNpdHkKPiArICoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK
PiArICoKPiArICogICAgICAgIEZpbGU6IGNvbnNvbGUuaAo+ICsgKiAgICAgIEF1dGhvcjogR3J6
ZWdvcnogTWlsb3MKPiArICogICAgIENoYW5nZXM6Cj4gKyAqCj4gKyAqICAgICAgICBEYXRlOiBN
YXIgMjAwNgo+ICsgKgo+ICsgKiBFbnZpcm9ubWVudDogWGVuIE1pbmltYWwgT1MKPiArICogRGVz
Y3JpcHRpb246IENvbnNvbGUgaW50ZXJmYWNlLgo+ICsgKgo+ICsgKiBIYW5kbGVzIGNvbnNvbGUg
SS9PLiBEZWZpbmVzIHByaW50ay4KPiArICoKPiArICoqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPiArICog
UGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJz
b24gb2J0YWluaW5nIGEgY29weQo+ICsgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVk
IGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KPiArICogZGVhbCBpbiB0
aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRh
dGlvbiB0aGUKPiArICogcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlz
aCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yCj4gKyAqIHNlbGwgY29waWVzIG9mIHRo
ZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlz
Cj4gKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnM6Cj4gKyAqCj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBl
cm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCj4gKyAqIGFsbCBjb3BpZXMgb3Ig
c3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgo+ICsgKgo+ICsgKiBUSEUgU09G
VFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwg
RVhQUkVTUyBPUgo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRI
RSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiArICogRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
Cj4gKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xB
SU0sIERBTUFHRVMgT1IgT1RIRVIKPiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElP
TiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKPiArICogRlJPTSwgT1VU
IE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhF
Ugo+ICsgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUg
PGludHR5cGVzLmg+Cj4gKyNpbmNsdWRlIDxzdHJpbmcuaD4KPiArI2luY2x1ZGUgPHVrL3BsYXQv
Y29uc29sZS5oPgo+ICsjaW5jbHVkZSA8dWsvYXJjaC9sY3B1Lmg+Cj4gKyNpbmNsdWRlIDx1ay9h
c3NlcnQuaD4KPiArI2luY2x1ZGUgPHVrL2Vzc2VudGlhbHMuaD4KPiArI2luY2x1ZGUgPHVrL2Nv
bmZpZy5oPgo+ICsKPiArI2luY2x1ZGUgPGNvbW1vbi9odl9jb25zb2xlLmg+Cj4gKyNpbmNsdWRl
IDxjb21tb24vZXZlbnRzLmg+Cj4gKyNpbmNsdWRlIDxjb21tb24vaHlwZXJ2aXNvci5oPgo+ICsj
aW5jbHVkZSA8eGVuL3hlbi5oPgo+ICsKPiArI2lmIChkZWZpbmVkIF9fWDg2XzMyX18pIHx8IChk
ZWZpbmVkIF9fWDg2XzY0X18pCj4gKyNpbmNsdWRlIDx4ZW4teDg2L3NldHVwLmg+Cj4gKyNpbmNs
dWRlIDx4ZW4teDg2L21tLmg+Cj4gKyNpZiBkZWZpbmVkIF9fWDg2XzMyX18KPiArI2luY2x1ZGUg
PHhlbi14ODYvaHlwZXJjYWxsMzIuaD4KPiArI2VsaWYgZGVmaW5lZCBfX1g4Nl82NF9fCj4gKyNp
bmNsdWRlIDx4ZW4teDg2L2h5cGVyY2FsbDY0Lmg+Cj4gKyNlbmRpZgo+ICsjZWxpZiAoZGVmaW5l
ZCBfX0FSTV8zMl9fKSB8fCAoZGVmaW5lZCBfX0FSTV82NF9fKQo+ICsjaW5jbHVkZSA8eGVuLWFy
bS9tbS5oPgo+ICsjaW5jbHVkZSA8eGVuLWFybS9oeXBlcmNhbGwuaD4KPiArI2VuZGlmCj4gKyNp
bmNsdWRlIDx4ZW4vaW8vY29uc29sZS5oPgo+ICsjaW5jbHVkZSA8eGVuL2lvL3Byb3RvY29scy5o
Pgo+ICsjaW5jbHVkZSA8eGVuL2lvL3JpbmcuaD4KPiArI2lmbmRlZiBDT05GSUdfUEFSQVZJUlQK
PiArI2luY2x1ZGUgPHhlbi9odm0vcGFyYW1zLmg+Cj4gKyNlbmRpZgo+ICsKPiArc3RhdGljIHN0
cnVjdCB4ZW5jb25zX2ludGVyZmFjZSAqY29uc29sZV9yaW5nOwo+ICtzdGF0aWMgdWludDMyX3Qg
Y29uc29sZV9ldnRjaG47Cj4gK3N0YXRpYyBpbnQgY29uc29sZV9yZWFkeTsKPiArCj4gKyNpZmRl
ZiBDT05GSUdfUEFSQVZJUlQKPiArdm9pZCBodl9jb25zb2xlX3ByZXBhcmUodm9pZCkKPiArewo+
ICsJY29uc29sZV9yaW5nID0gbWZuX3RvX3ZpcnQoSFlQRVJWSVNPUl9zdGFydF9pbmZvLT5jb25z
b2xlLmRvbVUubWZuKTsKPiArCWNvbnNvbGVfZXZ0Y2huID0gSFlQRVJWSVNPUl9zdGFydF9pbmZv
LT5jb25zb2xlLmRvbVUuZXZ0Y2huOwo+ICt9Cj4gKyNlbHNlCj4gK3ZvaWQgaHZfY29uc29sZV9w
cmVwYXJlKHZvaWQpCj4gK3sKPiArCS8qIE5PVCBJTVBMRU1FTlRFRCBZRVQgKi8KPiArfQo+ICsj
ZW5kaWYKPiArCj4gKy8qCj4gKyAqIGh2X2NvbnNvbGVfb3V0cHV0IG9wZXJhdGVzIGluIHR3byBt
b2RlczogYnVmZmVyZWQgYW5kIGluaXRpYWxpemVkLgo+ICsgKiBUaGUgYnVmZmVyZWQgbW9kZSBp
cyBhdXRvbWF0aWNhbGx5IGFjdGl2YXRlZCBhZnRlcgo+ICsgKiBfbGlieGVucGxhdF9wcmVwYXJl
X2NvbnNvbGUoKSB3YXMgY2FsbGVkIGFuZCB3ZSBrbm93IHdoZXJlIHRoZSBjb25zb2xlIHJpbmcK
PiArICogaXMuIFRoZSBvdXRwdXQgc3RyaW5nIGlzIHB1dCB0byB0aGUgY29uc29sZSByaW5nIHVu
dGlsIHRoZSByaW5nIGlzIGZ1bGwuIEFueQo+ICsgKiBmdXJ0aGVyIGNoYXJhY3RlcnMgYXJlIGRp
c2NhcmRlZC4gU2luY2UgdGhlIGV2ZW50IGNoYW5uZWwgaXMgbm90IGluaXRpYWxpemVkCj4gKyAq
IHlldCwgdGhlIGJhY2tlbmQgaXMgbm90IG5vdGlmaWVkLiBUaGlzIG1vZGUgaXMgaW50cm9kdWNl
ZCB0byBzdXBwb3J0IGVhcmx5Cj4gKyAqIHByaW50aW5nLCBldmVuIGJlZm9yZSBldmVudHMgYXJl
IG5vdCBpbml0aWFsaXplZC4KPiArICogX2xpYnhlbnBsYXRfaW5pdF9jb25zb2xlKCkgZmluYWxp
emVzIHRoZSBpbml0aWFsaXphdGlvbiBhbmQgZW5hYmxlcwo+ICsgKiB0aGUgZXZlbnQgY2hhbm5l
bC4gRnJvbSBub3cgb24sIHRoZSBjb25zb2xlIGJhY2tlbmQgaXMgbm90aWZpZWQgd2hlbmV2ZXIK
PiArICogd2UgcHV0IGNoYXJhY3RlcnMgb24gdGhlIGNvbnNvbGUgcmluZy4gV2hlbmV2ZXIgdGhp
cyByaW5nIGlzIGZ1bGwgYW5kIHRoZXJlCj4gKyAqIGFyZSBzdGlsbCBjaGFyYWN0ZXJzIHRoYXQg
c2hvdWxkIGJlIHByaW50ZWQsIHdlIGFyZSBlbnRlcmluZyBhIGJ1c3kgbG9vcCBhbmQKPiArICog
d2FpdCBmb3IgdGhlIGJhY2tlbmQgdG8gbWFrZSB1cyBzcGFjZSBhZ2Fpbi4gT2YgY291cnNlIHRo
aXMgaXMgc2xvdzogZG8gbm90Cj4gKyAqIHByaW50IHNvIG11Y2ghIDstKQo+ICsgKi8KPiAraW50
IGh2X2NvbnNvbGVfb3V0cHV0KGNvbnN0IGNoYXIgKnN0ciwgdW5zaWduZWQgaW50IGxlbikKPiAr
ewo+ICsJdW5zaWduZWQgaW50IHNlbnQgPSAwOwo+ICsJWEVOQ09OU19SSU5HX0lEWCBjb25zLCBw
cm9kOwo+ICsKPiArCWlmICh1bmxpa2VseSghY29uc29sZV9yaW5nKSkKPiArCQlyZXR1cm4gc2Vu
dDsKPiArCj4gK3JldHJ5Ogo+ICsJY29ucyA9IGNvbnNvbGVfcmluZy0+b3V0X2NvbnM7Cj4gKwlw
cm9kID0gY29uc29sZV9yaW5nLT5vdXRfcHJvZDsKPiArCj4gKwltYigpOyAvKiBtYWtlIHN1cmUg
d2UgaGF2ZSBjb25zICYgcHJvZCBiZWZvcmUgdG91Y2hpbmcgdGhlIHJpbmcgKi8KPiArCVVLX0JV
R09OKChwcm9kIC0gY29ucykgPiBzaXplb2YoY29uc29sZV9yaW5nLT5vdXQpKTsKPiArCj4gKwl3
aGlsZSAoKHNlbnQgPCBsZW4pICYmICgocHJvZCAtIGNvbnMpIDwgc2l6ZW9mKGNvbnNvbGVfcmlu
Zy0+b3V0KSkpIHsKPiArCQlpZiAoc3RyW3NlbnRdID09ICdcbicpIHsKPiArCQkJLyogcHJlcGVu
ZCAnXHInIGZvciBjb252ZXJ0aW5nICdcbicgdG8gJ1xyJydcbicgKi8KPiArCQkJaWYgKChwcm9k
ICsgMSAtIGNvbnMpID49IHNpemVvZihjb25zb2xlX3JpbmctPm91dCkpCj4gKwkJCQlicmVhazsg
Lyogbm90IGVub3VnaCBzcGFjZSBmb3IgJ1xyJyBhbmQgJ1xuJyEgKi8KPiArCj4gKwkJCWNvbnNv
bGVfcmluZy0+b3V0W01BU0tfWEVOQ09OU19JRFgocHJvZCsrLAo+ICsJCQkJCQkJICAgY29uc29s
ZV9yaW5nLT5vdXQpXSA9Cj4gKwkJCQknXHInOwo+ICsJCX0KPiArCj4gKwkJY29uc29sZV9yaW5n
LT5vdXRbTUFTS19YRU5DT05TX0lEWChwcm9kKyssIGNvbnNvbGVfcmluZy0+b3V0KV0gPQo+ICsJ
CQlzdHJbc2VudF07Cj4gKwkJc2VudCsrOwo+ICsJfQo+ICsJd21iKCk7IC8qIGVuc3VyZSBjaGFy
YWN0ZXJzIGFyZSB3cml0dGVuIGJlZm9yZSBpbmNyZWFzaW5nIG91dF9wcm9kICovCj4gKwljb25z
b2xlX3JpbmctPm91dF9wcm9kID0gcHJvZDsKPiArCj4gKwkvKiBJcyB0aGUgY29uc29sZSBmdWxs
eSBpbml0aWFsaXplZD8KPiArCSAqIEFyZSB3ZSBhYmxlIHRvIG5vdGlmeSB0aGUgYmFja2VuZD8K
PiArCSAqLwo+ICsJaWYgKGxpa2VseShjb25zb2xlX3JlYWR5ICYmIGNvbnNvbGVfZXZ0Y2huKSkg
ewo+ICsJCW5vdGlmeV9yZW1vdGVfdmlhX2V2dGNobihjb25zb2xlX2V2dGNobik7Cj4gKwo+ICsJ
CS8qIFRoZXJlIGFyZSBzdGlsbCBieXRlcyBsZWZ0IHRvIHNlbmQgb3V0PyBJZiB5ZXMsIGRvIG5v
dAo+ICsJCSAqIGRpc2NhcmQgdGhlbSwgcmV0cnkgc2VuZGluZyAoZW50ZXJzIGJ1c3kgd2FpdGlu
ZykKPiArCQkgKi8KPiArCQlpZiAoc2VudCA8IGxlbikKPiArCQkJZ290byByZXRyeTsKPiArCX0K
PiArCXJldHVybiBzZW50Owo+ICt9Cj4gKwo+ICt2b2lkIGh2X2NvbnNvbGVfZmx1c2godm9pZCkK
PiArewo+ICsJc3RydWN0IHhlbmNvbnNfaW50ZXJmYWNlICppbnRmOwo+ICsKPiArCWlmICghY29u
c29sZV9yZWFkeSkKPiArCQlyZXR1cm47Cj4gKwo+ICsJaW50ZiA9IGNvbnNvbGVfcmluZzsKPiAr
CWlmICh1bmxpa2VseSghaW50ZikpCj4gKwkJcmV0dXJuOwo+ICsKPiArCXdoaWxlIChpbnRmLT5v
dXRfY29ucyA8IGludGYtPm91dF9wcm9kKQo+ICsJCWJhcnJpZXIoKTsKPiArfQo+ICsKPiAraW50
IGh2X2NvbnNvbGVfaW5wdXQoY2hhciAqc3RyLCB1bnNpZ25lZCBpbnQgbWF4bGVuKQo+ICt7Cj4g
KwlpbnQgcmVhZCA9IDA7Cj4gKwlYRU5DT05TX1JJTkdfSURYIGNvbnMsIHByb2Q7Cj4gKwo+ICsJ
Y29ucyA9IGNvbnNvbGVfcmluZy0+aW5fY29uczsKPiArCXByb2QgPSBjb25zb2xlX3JpbmctPmlu
X3Byb2Q7Cj4gKwlybWIoKTsgLyogbWFrZSBzdXJlIGluX2NvbnMsIGluX3Byb2QgYXJlIHJlYWQg
YmVmb3JlIGVucXVldWluZyAqLwo+ICsJVUtfQlVHT04oKHByb2QgLSBjb25zKSA+IHNpemVvZihj
b25zb2xlX3JpbmctPmluKSk7Cj4gKwo+ICsJd2hpbGUgKGNvbnMgIT0gcHJvZCAmJiBtYXhsZW4g
PiAwKSB7Cj4gKwkJKihzdHIgKyByZWFkKSA9ICooY29uc29sZV9yaW5nLT5pbisKPiArCQkJCSAg
TUFTS19YRU5DT05TX0lEWChjb25zLCBjb25zb2xlX3JpbmctPmluKSk7Cj4gKwkJcmVhZCsrOwo+
ICsJCWNvbnMrKzsKPiArCQltYXhsZW4tLTsKPiArCX0KPiArCj4gKwl3bWIoKTsgLyogZW5zdXJl
IGZpbmlzaGVkIG9wZXJhdGlvbiBiZWZvcmUgdXBkYXRpbmcgaW5fY29ucyAqLwo+ICsJY29uc29s
ZV9yaW5nLT5pbl9jb25zID0gY29uczsKPiArCj4gKwlyZXR1cm4gcmVhZDsKPiArfQo+ICsKPiAr
c3RhdGljIHZvaWQgaHZfY29uc29sZV9ldmVudChldnRjaG5fcG9ydF90IHBvcnQgX191bnVzZWQs
Cj4gKwkJCSAgICAgc3RydWN0IF9fcmVncyAqcmVncyBfX3VudXNlZCwKPiArCQkJICAgICB2b2lk
ICpkYXRhIF9fdW51c2VkKQo+ICt7Cj4gKwkvKiBOT1QgSU1QTEVNRU5URUQgWUVUICovCj4gK30K
PiArCj4gK3ZvaWQgaHZfY29uc29sZV9pbml0KHZvaWQpCj4gK3sKPiArCWludCBlcnI7Cj4gKwo+
ICsJVUtfQVNTRVJUKGNvbnNvbGVfcmluZyAhPSBOVUxMKTsKPiArCj4gKwl1a19wcl9kZWJ1Zygi
aHZfY29uc29sZSBAICVwIChldnRjaG46ICUiUFJJdTMyIilcbiIsCj4gKwkJICAgIGNvbnNvbGVf
cmluZywgY29uc29sZV9ldnRjaG4pOwo+ICsKPiArCWVyciA9IGJpbmRfZXZ0Y2huKGNvbnNvbGVf
ZXZ0Y2huLCBodl9jb25zb2xlX2V2ZW50LCBOVUxMKTsKPiArCWlmIChlcnIgPD0gMCkKPiArCQlV
S19DUkFTSCgiRmFpbGVkIHRvIGJpbmQgZXZlbnQgY2hhbm5lbCBmb3IgaHZfY29uc29sZTogJWlc
biIsCj4gKwkJCSBlcnIpOwo+ICsJdW5tYXNrX2V2dGNobihjb25zb2xlX2V2dGNobik7Cj4gKwo+
ICsJY29uc29sZV9yZWFkeSA9IDE7IC8qIGVuYWJsZSBub3RpZmljYXRpb24gb2YgYmFja2VuZCAq
Lwo+ICsJLyogZmx1c2ggcXVldWVkIG91dHB1dCAqLwo+ICsJbm90aWZ5X3JlbW90ZV92aWFfZXZ0
Y2huKGNvbnNvbGVfZXZ0Y2huKTsKPiArfQo+IGRpZmYgLS1naXQgYS9wbGF0L3hlbi9pbmNsdWRl
L2NvbW1vbi9jb25zb2xlLmggYi9wbGF0L3hlbi9pbmNsdWRlL2NvbW1vbi9jb25zb2xlLmgKPiBp
bmRleCBiNGYxYjUxZS4uMjNjNmIzMmUgMTAwNjQ0Cj4gLS0tIGEvcGxhdC94ZW4vaW5jbHVkZS9j
b21tb24vY29uc29sZS5oCj4gKysrIGIvcGxhdC94ZW4vaW5jbHVkZS9jb21tb24vY29uc29sZS5o
Cj4gQEAgLTIsNyArMiw4IEBACj4gICAvKgo+ICAgICogQXV0aG9yczogU2ltb24gS3VlbnplciA8
c2ltb24ua3VlbnplckBuZWNsYWIuZXU+Cj4gICAgKgo+IC0gKiBDb3B5cmlnaHQgKGMpIDIwMTcs
IE5FQyBFdXJvcGUgTHRkLiwgTkVDIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgo+
ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTksIE5FQyBMYWJvcmF0b3JpZXMgRXVyb3BlIEdtYkgsIE5F
QyBDb3Jwb3JhdGlvbi4KPiArICogICAgICAgICAgICAgICAgICAgICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgo+ICAgICoKPiAgICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAo+ICAgICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCj4gQEAgLTM4LDE0
ICszOSwxNCBAQAo+ICAgLyoga2VlcHMgYnVmZmVyaW5nIGNvbnNvbGUgbWVzc2FnZQo+ICAgICog
KG9uIFBWOiBzdGFydF9pbmZvIG5lZWQgdG8gYmUgbG9hZGVkKQo+ICAgICovCj4gLXZvaWQgX2xp
YnhlbnBsYXRfcHJlcGFyZV9jb25zb2xlKHZvaWQpOwo+ICt2b2lkIHByZXBhcmVfY29uc29sZSh2
b2lkKTsKPiAgIAo+ICAgLyogaW5pdGlhbGl6ZXMgdGhlIGNvbnNvbGUsIHNlbmRzIG91dCBidWZm
ZXJlZCBtZXNzYWdlcwo+ICAgICogKGV2ZW50IHN5c3RlbSBoYXMgdG8gYmUgaW5pdGlhbGl6ZWQp
Cj4gICAgKi8KPiAtdm9pZCBfbGlieGVucGxhdF9pbml0X2NvbnNvbGUodm9pZCk7Cj4gK3ZvaWQg
aW5pdF9jb25zb2xlKHZvaWQpOwo+ICAgCj4gICAKPiAtdm9pZCBodmNvbnNvbGVfZmx1c2godm9p
ZCk7Cj4gK3ZvaWQgZmx1c2hfY29uc29sZSh2b2lkKTsKPiAgIAo+ICAgI2VuZGlmIC8qIF9fQ09O
U09MRV9IX18gKi8KPiBkaWZmIC0tZ2l0IGEvcGxhdC94ZW4vaW5jbHVkZS9jb21tb24vZW1nX2Nv
bnNvbGUuaCBiL3BsYXQveGVuL2luY2x1ZGUvY29tbW9uL2VtZ19jb25zb2xlLmgKPiBuZXcgZmls
ZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwLi5iOTMwOTMyMQo+IC0tLSAvZGV2L251bGwK
PiArKysgYi9wbGF0L3hlbi9pbmNsdWRlL2NvbW1vbi9lbWdfY29uc29sZS5oCj4gQEAgLTAsMCAr
MSw0NSBAQAo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCj4g
Ky8qCj4gKyAqIEF1dGhvcnM6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1
Pgo+ICsgKgo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTksIE5FQyBMYWJvcmF0b3JpZXMgRXVyb3Bl
IEdtYkgsIE5FQyBDb3Jwb3JhdGlvbi4KPiArICogICAgICAgICAgICAgICAgICAgICBBbGwgcmln
aHRzIHJlc2VydmVkLgo+ICsgKgo+ICsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKPiArICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCj4gKyAq
IGFyZSBtZXQ6Cj4gKyAqCj4gKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KPiArICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQo+ICsgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgo+ICsgKiAzLiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCj4gKyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCj4gKyAqICAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCj4gKyAqCj4gKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMg
IkFTIElTIgo+ICsgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCj4gKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCj4g
KyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERF
UiBPUiBDT05UUklCVVRPUlMgQkUKPiArICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgo+ICsgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgo+
ICsgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKPiArICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KPiArICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKPiArICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKPiArICogUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCj4gKyAqCj4gKyAqIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1P
RElGSUVEIElOIEFOWSBXQVkuCj4gKyAqLwo+ICsKPiArI2lmbmRlZiBfX1hFTl9FTUdDT05TT0xF
X0hfXwo+ICsjZGVmaW5lIF9fWEVOX0VNR0NPTlNPTEVfSF9fCj4gKwo+ICsvKgo+ICsgKiBOT1RF
OiBEbyBub3QgdXNlIHRoZXNlIGZ1bmN0aW9ucyBkaXJlY3RseS4gVGhleSBhcmUgZm9yIGludGVy
bmFsIHVzZS4KPiArICogICAgICAgVXNlIGRlZmludGlvbnMgaW4gY29uc29sZS5oIGluc3RlYWQu
CnMvZGVmaW50aW9ucy9kZWZpbml0aW9ucwoKSSBwcmVmZXIgdG8gcmVwb3J0IGFuIGNvbXBpbGVy
IGVycm9yIHVzaW5nICNlcnJvciBpZiB0aGUgdXNlciB3ZXJlIHRvIAppbmNsdWRlIHRoZSBmaWxl
IGRpcmVjdGx5IHJhdGhlciB0aGFuIGEgbm90ZS4KCj4gKyAqLwo+ICtpbnQgZW1nX2NvbnNvbGVf
b3V0cHV0KGNvbnN0IGNoYXIgKnN0ciwgdW5zaWduZWQgaW50IGxlbik7Cj4gKwo+ICsjZW5kaWYg
LyogX19YRU5fRU1HQ09OU09MRV9IX18gKi8KPiBkaWZmIC0tZ2l0IGEvcGxhdC94ZW4vaW5jbHVk
ZS9jb21tb24vaHZfY29uc29sZS5oIGIvcGxhdC94ZW4vaW5jbHVkZS9jb21tb24vaHZfY29uc29s
ZS5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMC4uMTBkZTkyNzEKPiAt
LS0gL2Rldi9udWxsCj4gKysrIGIvcGxhdC94ZW4vaW5jbHVkZS9jb21tb24vaHZfY29uc29sZS5o
Cj4gQEAgLTAsMCArMSw0OSBAQAo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMt
Q2xhdXNlICovCj4gKy8qCj4gKyAqIEF1dGhvcnM6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56
ZXJAbmVjbGFiLmV1Pgo+ICsgKgo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTksIE5FQyBMYWJvcmF0
b3JpZXMgRXVyb3BlIEdtYkgsIE5FQyBDb3Jwb3JhdGlvbi4KPiArICogICAgICAgICAgICAgICAg
ICAgICBBbGwgcmlnaHRzIHJlc2VydmVkLgo+ICsgKgo+ICsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKPiArICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCj4gKyAqIGFyZSBtZXQ6Cj4gKyAqCj4gKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
PiArICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQo+ICsgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
Lgo+ICsgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0
aGUgbmFtZXMgb2YgaXRzCj4gKyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCj4gKyAqICAgIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCj4gKyAqCj4gKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMgIkFTIElTIgo+ICsgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCj4gKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFCj4gKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKPiArICogTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgo+ICsgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgo+ICsgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKPiArICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KPiAr
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKPiArICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKPiArICogUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCj4gKyAqCj4gKyAqIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhU
UkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCj4gKyAqLwo+ICsKPiArI2lmbmRlZiBfX1hF
Tl9IVkNPTlNPTEVfSF9fCj4gKyNkZWZpbmUgX19YRU5fSFZDT05TT0xFX0hfXwo+ICsKPiArLyoK
PiArICogTk9URTogRG8gbm90IHVzZSB0aGVzZSBmdW5jdGlvbnMgZGlyZWN0bHkuIFRoZXkgYXJl
IGZvciBpbnRlcm5hbCB1c2UuCj4gKyAqICAgICAgIFVzZSBkZWZpbnRpb25zIGluIGNvbnNvbGUu
aCBpbnN0ZWFkLgpzL2RlZmludGlvbnMvZGVmaW5pdGlvbnMKSSBwcmVmZXIgdG8gcmVwb3J0IGFu
IGNvbXBpbGVyIGVycm9yIHVzaW5nICNlcnJvciBpZiB0aGUgdXNlciB3ZXJlIHRvIAppbmNsdWRl
IHRoZSBmaWxlIGRpcmVjdGx5IHJhdGhlciB0aGFuIGEgbm90ZS4KCgo+ICsgKi8KPiArdm9pZCBo
dl9jb25zb2xlX3ByZXBhcmUodm9pZCk7Cj4gK3ZvaWQgaHZfY29uc29sZV9pbml0KHZvaWQpOwo+
ICtpbnQgaHZfY29uc29sZV9vdXRwdXQoY29uc3QgY2hhciAqc3RyLCB1bnNpZ25lZCBpbnQgbGVu
KTsKPiArdm9pZCBodl9jb25zb2xlX2ZsdXNoKHZvaWQpOwo+ICtpbnQgaHZfY29uc29sZV9pbnB1
dChjaGFyICpzdHIsIHVuc2lnbmVkIGludCBtYXhsZW4pOwo+ICsKPiArI2VuZGlmIC8qIF9fWEVO
X0hWQ09OU09MRV9IX18gKi8KPiBkaWZmIC0tZ2l0IGEvcGxhdC94ZW4vc2h1dGRvd24uYyBiL3Bs
YXQveGVuL3NodXRkb3duLmMKPiBpbmRleCAyNzJlY2U0Ny4uYzdiZjEyZDcgMTAwNjQ0Cj4gLS0t
IGEvcGxhdC94ZW4vc2h1dGRvd24uYwo+ICsrKyBiL3BsYXQveGVuL3NodXRkb3duLmMKPiBAQCAt
NjYsNyArNjYsNyBAQCB2b2lkIHVrcGxhdF90ZXJtaW5hdGUoZW51bSB1a3BsYXRfZ3N0YXRlIHJl
cXVlc3QpCj4gICAJCWJyZWFrOwo+ICAgCX0KPiAgIAo+IC0JaHZjb25zb2xlX2ZsdXNoKCk7Cj4g
KwlmbHVzaF9jb25zb2xlKCk7Cj4gICAKPiAgIAlmb3IgKDs7KSB7Cj4gICAJCXN0cnVjdCBzY2hl
ZF9zaHV0ZG93biBzY2hlZF9zaHV0ZG93biA9IHsgLnJlYXNvbiA9IHJlYXNvbiB9Owo+IGRpZmYg
LS1naXQgYS9wbGF0L3hlbi94ODYvc2V0dXAuYyBiL3BsYXQveGVuL3g4Ni9zZXR1cC5jCj4gaW5k
ZXggNjBhOWY5ZTYuLjNjNTYzMWQzIDEwMDY0NAo+IC0tLSBhL3BsYXQveGVuL3g4Ni9zZXR1cC5j
Cj4gKysrIGIvcGxhdC94ZW4veDg2L3NldHVwLmMKPiBAQCAtMTczLDcgKzE3Myw3IEBAIHZvaWQg
X2xpYnhlbnBsYXRfeDg2ZW50cnkodm9pZCAqc3RhcnRfaW5mbykKPiAgIAlfaW5pdF90cmFwcygp
Owo+ICAgCV9pbml0X2NwdWZlYXR1cmVzKCk7Cj4gICAJSFlQRVJWSVNPUl9zdGFydF9pbmZvID0g
KHN0YXJ0X2luZm9fdCAqKXN0YXJ0X2luZm87Cj4gLQlfbGlieGVucGxhdF9wcmVwYXJlX2NvbnNv
bGUoKTsgLyogZW5hYmxlcyBidWZmZXJpbmcgZm9yIGNvbnNvbGUgKi8KPiArCXByZXBhcmVfY29u
c29sZSgpOyAvKiBlbmFibGVzIGJ1ZmZlcmluZyBmb3IgY29uc29sZSAqLwo+ICAgCj4gICAJdWtf
cHJfaW5mbygiRW50ZXJpbmcgZnJvbSBYZW4gKHg4NiwgUFYpLi4uXG4iKTsKPiAgIAo+IEBAIC0x
OTEsNyArMTkxLDcgQEAgdm9pZCBfbGlieGVucGxhdF94ODZlbnRyeSh2b2lkICpzdGFydF9pbmZv
KQo+ICAgCj4gICAJX2luaXRfbWVtKCk7Cj4gICAKPiAtCV9saWJ4ZW5wbGF0X2luaXRfY29uc29s
ZSgpOwo+ICsJaW5pdF9jb25zb2xlKCk7Cj4gICAKPiAgIAl1a3BsYXRfZW50cnlfYXJncChDT05G
SUdfVUtfTkFNRSwgY21kbGluZSwgTUFYX0NNRExJTkVfU0laRSk7Cj4gICB9Cj4gCgpfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFp
bGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3Rz
LnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Feb 12 18:25:05 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 12 Feb 2019 18:25:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gtcjw-0002CC-22; Tue, 12 Feb 2019 18:25:04 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Qgoy=QT=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1gtcju-0002C7-GJ
 for minios-devel@lists.xen.org; Tue, 12 Feb 2019 18:25:02 +0000
X-Inumbo-ID: 815ff588-2ef3-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 815ff588-2ef3-11e9-bc90-bc764e045a96;
 Tue, 12 Feb 2019 18:25:00 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id D39A4F206B;
 Tue, 12 Feb 2019 19:24:58 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id JXYz5qkRIX9q; Tue, 12 Feb 2019 19:24:58 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id AC610F205F
 for <minios-devel@lists.xen.org>; Tue, 12 Feb 2019 19:24:56 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 12 Feb 2019 19:24:56
 +0100
To: Simon Kuenzer <simon.kuenzer@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190211145324.21334-1-simon.kuenzer@neclab.eu>
 <20190211145324.21334-3-simon.kuenzer@neclab.eu>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <442df4b3-af8a-399f-6b83-27f0820fbb86@neclab.eu>
Date: Tue, 12 Feb 2019 19:24:56 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190211145324.21334-3-simon.kuenzer@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 2/2] plat/xen: CPU definition
 for Arm32
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: florian.schmidt@neclab.eu
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gU2ltb24sCgpQbGVhc2UgZmluZCB0aGUgY29tbWVudCBpbmxpbmUuCgpUaGFua3MgJiBS
ZWdhcmRzClNoYXJhbgoKT24gMi8xMS8xOSAzOjUzIFBNLCBTaW1vbiBLdWVuemVyIHdyb3RlOgo+
IEludHJvZHVjZSBtaW5pbWFsIENQVSBkZWZpbml0b25zIHRvIGVuYWJsZSBjb21waWxpbmcgZm9y
IEFybTMyLgo+IFRoaXMgY29tbWl0cyBhbHNvIHJlbW92ZXMgeDg2IHNwZWNpZmljIENQVSBmdW5j
dGlvbnMgZnJvbSB0aGUKPiBBcm0zMiBidWlsZCB1bml0Lgo+IAo+IFNpZ25lZC1vZmYtYnk6IFNp
bW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1Pgo+IC0tLQo+ICAgcGxhdC9jb21t
b24vaW5jbHVkZS9hcm0vYXJtL2NwdS5oIHwgMTIgKysrKysrKysrKystCj4gICBwbGF0L3hlbi9N
YWtlZmlsZS51ayAgICAgICAgICAgICAgfCAgNCArKy0tCj4gICAyIGZpbGVzIGNoYW5nZWQsIDEz
IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL3BsYXQvY29t
bW9uL2luY2x1ZGUvYXJtL2FybS9jcHUuaCBiL3BsYXQvY29tbW9uL2luY2x1ZGUvYXJtL2FybS9j
cHUuaAo+IGluZGV4IDY5N2EyMGExLi5iYzRkNDEzYyAxMDA2NDQKPiAtLS0gYS9wbGF0L2NvbW1v
bi9pbmNsdWRlL2FybS9hcm0vY3B1LmgKPiArKysgYi9wbGF0L2NvbW1vbi9pbmNsdWRlL2FybS9h
cm0vY3B1LmgKPiBAQCAtMSw4ICsxLDkgQEAKPiAgIC8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy
OiBCU0QtMy1DbGF1c2UgKi8KPiAgIC8qCj4gICAgKiBBdXRob3JzOiBTaW1vbiBLdWVuemVyIDxz
aW1vbi5rdWVuemVyQG5lY2xhYi5ldT4KPiArICogQXV0aG9yczogV2VpIENoZW4gPHdlaS5jaGVu
QGFybS5jb20+Cj4gICAgKgo+IC0gKgo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTgsIEFybSBMdGQu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4gICAgKiBDb3B5cmlnaHQgKGMpIDIwMTksIE5FQyBMYWJv
cmF0b3JpZXMgRXVyb3BlIEdtYkgsIE5FQyBDb3Jwb3JhdGlvbi4KPiAgICAqICAgICAgICAgICAg
ICAgICAgICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiAgICAqCj4gQEAgLTM3LDMgKzM4LDEyIEBA
Cj4gICBzdGF0aWMgaW5saW5lIHZvaWQgX2luaXRfY3B1ZmVhdHVyZXModm9pZCkKPiAgIHsKPiAg
IH0KPiArCj4gKy8qCj4gKyAqIEhhbHRzIHRoZSBDUFUgdW50aWwgdGhlIG5leHQgZXh0ZXJuYWwg
aW50ZXJydXB0IGlzIGZpcmVkLiBGb3IgQXJtLAo+ICsgKiB3ZSBjYW4gdXNlIFdGSSB0byBpbXBs
ZW1lbnQgdGhpcyBmZWF0dXJlLgo+ICsgKi8KCkFyZW4ndCB3ZSBkdXBsaWNhdGluZyB0aGUgZnVu
Y3Rpb24gaGVyZS4KV2UgaGF2ZSBhIGhhbHQgZnVuY3Rpb24gZGVmaW5lZCBpbgpwbGF0L2NvbW1v
bi9hcm0vY3B1X25hdGl2ZS5jCgpBbnkgc3BlY2lmaWMgcmVhc29uIHdlIGFyZSBub3QgdXNpbmcg
aXQ/Cj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBoYWx0KHZvaWQpCj4gK3sKPiArCV9fYXNtX18gX192
b2xhdGlsZV9fKCJ3ZmkiKTsKPiArfQo+IGRpZmYgLS1naXQgYS9wbGF0L3hlbi9NYWtlZmlsZS51
ayBiL3BsYXQveGVuL01ha2VmaWxlLnVrCj4gaW5kZXggN2EzZmNjOTMuLjViZGUyNWYzIDEwMDY0
NAo+IC0tLSBhL3BsYXQveGVuL01ha2VmaWxlLnVrCj4gKysrIGIvcGxhdC94ZW4vTWFrZWZpbGUu
dWsKPiBAQCAtNDksOSArNDksOSBAQCBMSUJYRU5QTEFUX1NSQ1MtJChDT05GSUdfQVJDSF9YODZf
NjQpICs9ICQoTElCWEVOUExBVF9CQVNFKS94ODYvYXJjaF90aW1lLmMKPiAgIGlmbmVxICgkKFhF
Tl9IVk1MSVRFKSx5KQo+ICAgTElCWEVOUExBVF9BU0ZMQUdTLXkgICAgICAgICAgICs9IC1EQ09O
RklHX1BBUkFWSVJUCj4gICBMSUJYRU5QTEFUX0NGTEFHUy15ICAgICAgICAgICAgKz0gLURDT05G
SUdfUEFSQVZJUlQKPiAtTElCWEVOUExBVF9TUkNTLXkgICAgICAgICAgICAgICs9ICQoTElCWEVO
UExBVF9CQVNFKS94ODYvY3B1X3B2LmMKPiArTElCWEVOUExBVF9TUkNTLSQoQ09ORklHX0FSQ0hf
WDg2XzY0KSArPSAkKExJQlhFTlBMQVRfQkFTRSkveDg2L2NwdV9wdi5jCj4gICBlbHNlCj4gLUxJ
QlhFTlBMQVRfU1JDUy15ICAgICAgICAgICAgICArPSAkKFVLX1BMQVRfQ09NTU9OX0JBU0UpL3g4
Ni9jcHVfbmF0aXZlLmMKPiArTElCWEVOUExBVF9TUkNTLSQoQ09ORklHX0FSQ0hfWDg2XzY0KSAr
PSAkKFVLX1BMQVRfQ09NTU9OX0JBU0UpL3g4Ni9jcHVfbmF0aXZlLmMKPiAgIGVuZGlmCj4gICAK
PiAgIExJQlhFTlBMQVRfU1JDUy0kKENPTkZJR19BUkNIX0FSTV8zMikgKz0gJChMSUJYRU5QTEFU
X0JBU0UpL2FybS9zZXR1cC5jCj4gCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0
cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlz
dGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Feb 12 18:27:56 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 12 Feb 2019 18:27:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gtcmi-0002PP-2Y; Tue, 12 Feb 2019 18:27:56 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Qgoy=QT=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1gtcmh-0002PI-GQ
 for minios-devel@lists.xen.org; Tue, 12 Feb 2019 18:27:55 +0000
X-Inumbo-ID: e6c2ba48-2ef3-11e9-bdc3-5308c4ac96fb
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id e6c2ba48-2ef3-11e9-bdc3-5308c4ac96fb;
 Tue, 12 Feb 2019 18:27:50 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 45C32104DDA;
 Tue, 12 Feb 2019 19:27:49 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 0qns3DAuMN4S; Tue, 12 Feb 2019 19:27:49 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 210C3104DCA
 for <minios-devel@lists.xen.org>; Tue, 12 Feb 2019 19:27:47 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 12 Feb 2019 19:27:46
 +0100
To: Simon Kuenzer <simon.kuenzer@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190212142139.28787-1-simon.kuenzer@neclab.eu>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <6a89a810-695a-7667-8667-bc249830c14c@neclab.eu>
Date: Tue, 12 Feb 2019 19:27:46 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190212142139.28787-1-simon.kuenzer@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH] plat/xen: Arm32,
 x86_64: Unify linker scripts
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gU2ltb24sCgpUaGlzIHBhdGNoIHNlZW1zIGZpbmUuClJldmlld2VkLWJ5OiBTaGFyYW4g
U2FudGhhbmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xhYi5ldT4KClRoYW5rcyAmIFJlZ2FyZHMK
U2hhcmFuCgpPbiAyLzEyLzE5IDM6MjEgUE0sIFNpbW9uIEt1ZW56ZXIgd3JvdGU6Cj4gVW5pZnkg
bGlua2VyIHNjcmlwdHMgb2YgYm90aCBhcmNoaXRlY3R1cmVzIG9mIHRoZSBYZW4gcGxhdGZvcm0u
Cj4gRm9yIHNpbXBsaWNpdHksIHRoZSBsYXlvdXQgYW5kIGxpbmtlci1wcm92aWRlZCBzeW1ib2xz
IHNob3VsZAo+IGJlIGFzIGNsb3NlIGFzIHBvc3NpYmxlLgo+IAo+IFNpZ25lZC1vZmYtYnk6IFNp
bW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1Pgo+IC0tLQo+ICAgcGxhdC94ZW4v
YXJtL2xpbmszMi5sZHMgfCAyMCArKysrKysrKysrKysrKy0tLS0tLQo+ICAgcGxhdC94ZW4veDg2
L2xpbms2NC5sZHMgfCAxOCArKysrKysrKysrKysrLS0tLS0KPiAgIDIgZmlsZXMgY2hhbmdlZCwg
MjcgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL3BsYXQv
eGVuL2FybS9saW5rMzIubGRzIGIvcGxhdC94ZW4vYXJtL2xpbmszMi5sZHMKPiBpbmRleCBjNWQ4
MzAwOC4uY2UyMDBiNjcgMTAwNjQ0Cj4gLS0tIGEvcGxhdC94ZW4vYXJtL2xpbmszMi5sZHMKPiAr
KysgYi9wbGF0L3hlbi9hcm0vbGluazMyLmxkcwo+IEBAIC03MiwzMSArNzIsMzkgQEAgU0VDVElP
TlMKPiAgIAkJS0VFUCAoKiguaW5pdF9hcnJheSAuY3RvcnMpKQo+ICAgCQlQUk9WSURFX0hJRERF
TiAoX19pbml0X2FycmF5X2VuZCA9IC4pOwo+ICAgCX0KPiArCS4gPSBBTElHTig0MDk2KTsKPiAg
IAlfZWN0b3JzID0gLjsKPiAgIAo+IC0JLmRhdGEgOiB7CQkJLyogRGF0YSAqLwo+IC0JCV9kYXRh
ID0gLjsKPiArCS8qIERhdGEgKi8KPiArCV9kYXRhID0gLjsKPiArCS5kYXRhIDogewo+ICAgCQkq
KC5kYXRhKQo+ICsJCSooLmRhdGEuKikKPiAgIAl9Cj4gKwlfZWRhdGEgPSAuOyAvKiBFbmQgb2Yg
ZGF0YSBpbmNsdWRlZCBpbiBpbWFnZSAqLwo+ICAgCj4gLQkvKiBOb3RlOiBsaW5rZXIgd2lsbCBp
bnNlcnQgYW55IGV4dHJhIHNlY3Rpb25zIGhlcmUsIGp1c3QgYmVmb3JlIC5ic3MgKi8KPiArCS8q
Cj4gKwkgKiBOT1RFOiBsaW5rZXIgd2lsbCBpbnNlcnQgYW55IGV4dHJhIHNlY3Rpb25zIGhlcmUs
Cj4gKwkgKiBqdXN0IGJlZm9yZSAuYnNzCj4gKwkgKi8KPiAgIAo+ICAgCS5ic3MgOiB7Cj4gLQkJ
X2VkYXRhID0gLjsJCS8qIEVuZCBvZiBkYXRhIGluY2x1ZGVkIGluIGltYWdlICovCj4gLQkJLyog
Tm90aGluZyBhZnRlciBoZXJlIGlzIGluY2x1ZGVkIGluIHRoZSB6SW1hZ2UncyBzaXplICovCj4g
LQo+ICAgCQlfX2Jzc19zdGFydCA9IC47Cj4gICAJCSooLmJzcykKPiAgIAkJKiguYnNzLiopCj4g
ICAJfQo+ICsJLiA9IEFMSUdOKDQwOTYpOwo+ICAgCV9lbmQgPSAuIDsKPiAgIAo+ICsKPiAgIAkv
KiBTZWN0aW9ucyB0byBiZSBkaXNjYXJkZWQgKi8KPiArCS8qIFRPRE86IFJldmlzaXQgd2hlbiB3
ZSBoYXZlIGEgc29sdXRpb24gZm9yIGRpc2NhcmRlZCBzZWN0aW9ucwo+ICAgCS9ESVNDQVJELyA6
IHsKPiAgIAkJKigudGV4dC5leGl0KQo+ICAgCQkqKC5kYXRhLmV4aXQpCj4gICAJCSooLmV4aXRj
YWxsLmV4aXQpCj4gICAJfQo+ICsJKi8KPiAgIAo+ICAgCS8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0
aW9ucy4gICovCj4gICAJLnN0YWIgMCA6IHsgKiguc3RhYikgfQo+IGRpZmYgLS1naXQgYS9wbGF0
L3hlbi94ODYvbGluazY0LmxkcyBiL3BsYXQveGVuL3g4Ni9saW5rNjQubGRzCj4gaW5kZXggNTM5
MWRiZGEuLmRjZTBiYWYyIDEwMDY0NAo+IC0tLSBhL3BsYXQveGVuL3g4Ni9saW5rNjQubGRzCj4g
KysrIGIvcGxhdC94ZW4veDg2L2xpbms2NC5sZHMKPiBAQCAtNjIsMjQgKzYyLDMyIEBAIFNFQ1RJ
T05TCj4gICAJCUtFRVAgKCooLmluaXRfYXJyYXkgLmN0b3JzKSkKPiAgIAkJUFJPVklERV9ISURE
RU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKPiAgIAl9Cj4gKwkuID0gQUxJR04oNDA5Nik7Cj4g
ICAJX2VjdG9ycyA9IC47Cj4gICAKPiArCS8qIERhdGEgKi8KPiAgIAlfZGF0YSA9IC47Cj4gLQku
ZGF0YSA6IHsJCQkvKiBEYXRhICovCj4gKwkuZGF0YSA6IHsKPiAgIAkJKiguZGF0YSkKPiArCQkq
KC5kYXRhLiopCj4gICAJfQo+ICsJX2VkYXRhID0gLjsgLyogRW5kIG9mIGRhdGEgaW5jbHVkZWQg
aW4gaW1hZ2UgKi8KPiAgIAo+IC0JX2VkYXRhID0gLjsJCQkvKiBFbmQgb2YgZGF0YSBzZWN0aW9u
ICovCj4gKwkvKgo+ICsJICogTk9URTogbGlua2VyIHdpbGwgaW5zZXJ0IGFueSBleHRyYSBzZWN0
aW9ucyBoZXJlLAo+ICsJICoganVzdCBiZWZvcmUgLmJzcwo+ICsJICovCj4gICAKPiAtCV9fYnNz
X3N0YXJ0ID0gLjsJCS8qIEJTUyAqLwo+ICAgCS5ic3MgOiB7Cj4gKwkJX19ic3Nfc3RhcnQgPSAu
Owo+ICAgCQkqKC5ic3MpCj4gLQkJLiA9IEFMSUdOKDQwOTYpOwo+ICsJCSooLmJzcy4qKQo+ICAg
CX0KPiArCS4gPSBBTElHTig0MDk2KTsKPiAgIAlfZW5kID0gLiA7Cj4gICAKPiAgIAkvKiBTZWN0
aW9ucyB0byBiZSBkaXNjYXJkZWQgKi8KPiAtCS8qIFRPRE8gcmV2aXNpdCB3aGVuIHdlIGhhdmUg
YSByZXNvbHV0aW9uIGZvciBkaXNjYXJkZWQgc2VjdGlvbnMKPiArCS8qIFRPRE86IFJldmlzaXQg
d2hlbiB3ZSBoYXZlIGEgc29sdXRpb24gZm9yIGRpc2NhcmRlZCBzZWN0aW9ucwo+ICAgCS9ESVND
QVJELyA6IHsKPiAgIAkJKigudGV4dC5leGl0KQo+ICAgCQkqKC5kYXRhLmV4aXQpCj4gCgpfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwg
bWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xp
c3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Feb 12 22:14:32 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 12 Feb 2019 22:14:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gtgJy-0004Rh-Eh; Tue, 12 Feb 2019 22:14:30 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=WjiA=QT=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1gtgJx-0004NS-Bp
 for minios-devel@lists.xen.org; Tue, 12 Feb 2019 22:14:29 +0000
X-Inumbo-ID: 8e85b9a1-2f13-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 8e85b9a1-2f13-11e9-bc90-bc764e045a96;
 Tue, 12 Feb 2019 22:14:26 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id E912C104DCB;
 Tue, 12 Feb 2019 23:14:24 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id J9OjyAJ8dbHt; Tue, 12 Feb 2019 23:14:24 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id BC749104DC4
 for <minios-devel@lists.xen.org>; Tue, 12 Feb 2019 23:14:22 +0100 (CET)
Received: from PALLENE.office.hd ([169.254.1.223]) by ENCELADUS.office.hd
 ([192.168.24.52]) with mapi id 14.03.0319.002; Tue, 12 Feb 2019 23:14:21
 +0100
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: Sharan Santhanam <Sharan.Santhanam@neclab.eu>,
 "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT PATCH 2/2] plat/xen: CPU definition for Arm32
Thread-Index: AQHUwhmQI+0LfR0D/UK6gxKsUUTnJqXca4sAgABQ2oA=
Date: Tue, 12 Feb 2019 22:14:20 +0000
Message-ID: <700EB44B-BF5E-4233-B028-069E0F4609DA@neclab.eu>
References: <20190211145324.21334-1-simon.kuenzer@neclab.eu>
 <20190211145324.21334-3-simon.kuenzer@neclab.eu>
 <442df4b3-af8a-399f-6b83-27f0820fbb86@neclab.eu>
In-Reply-To: <442df4b3-af8a-399f-6b83-27f0820fbb86@neclab.eu>
Accept-Language: en-GB, gl-ES, de-DE, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [10.7.0.196]
Content-ID: <DE78CCC0015DBE4F8042BB01C9A6521E@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 2/2] plat/xen: CPU definition
 for Arm32
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Florian Schmidt <Florian.Schmidt@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

T24gMTIuMDIuMTksIDE5OjI0LCAiU2hhcmFuIFNhbnRoYW5hbSIgPFNoYXJhbi5TYW50aGFuYW1A
bmVjbGFiLmV1PiB3cm90ZToNCg0KICAgIEhlbGxvIFNpbW9uLA0KICAgIA0KICAgIFBsZWFzZSBm
aW5kIHRoZSBjb21tZW50IGlubGluZS4NCiAgICANCiAgICBUaGFua3MgJiBSZWdhcmRzDQogICAg
U2hhcmFuDQogICAgDQogICAgT24gMi8xMS8xOSAzOjUzIFBNLCBTaW1vbiBLdWVuemVyIHdyb3Rl
Og0KICAgID4gSW50cm9kdWNlIG1pbmltYWwgQ1BVIGRlZmluaXRvbnMgdG8gZW5hYmxlIGNvbXBp
bGluZyBmb3IgQXJtMzIuDQogICAgPiBUaGlzIGNvbW1pdHMgYWxzbyByZW1vdmVzIHg4NiBzcGVj
aWZpYyBDUFUgZnVuY3Rpb25zIGZyb20gdGhlDQogICAgPiBBcm0zMiBidWlsZCB1bml0Lg0KICAg
ID4gDQogICAgPiBTaWduZWQtb2ZmLWJ5OiBTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5l
Y2xhYi5ldT4NCiAgICA+IC0tLQ0KICAgID4gICBwbGF0L2NvbW1vbi9pbmNsdWRlL2FybS9hcm0v
Y3B1LmggfCAxMiArKysrKysrKysrKy0NCiAgICA+ICAgcGxhdC94ZW4vTWFrZWZpbGUudWsgICAg
ICAgICAgICAgIHwgIDQgKystLQ0KICAgID4gICAyIGZpbGVzIGNoYW5nZWQsIDEzIGluc2VydGlv
bnMoKyksIDMgZGVsZXRpb25zKC0pDQogICAgPiANCiAgICA+IGRpZmYgLS1naXQgYS9wbGF0L2Nv
bW1vbi9pbmNsdWRlL2FybS9hcm0vY3B1LmggYi9wbGF0L2NvbW1vbi9pbmNsdWRlL2FybS9hcm0v
Y3B1LmgNCiAgICA+IGluZGV4IDY5N2EyMGExLi5iYzRkNDEzYyAxMDA2NDQNCiAgICA+IC0tLSBh
L3BsYXQvY29tbW9uL2luY2x1ZGUvYXJtL2FybS9jcHUuaA0KICAgID4gKysrIGIvcGxhdC9jb21t
b24vaW5jbHVkZS9hcm0vYXJtL2NwdS5oDQogICAgPiBAQCAtMSw4ICsxLDkgQEANCiAgICA+ICAg
LyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLw0KICAgID4gICAvKg0K
ICAgID4gICAgKiBBdXRob3JzOiBTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5l
dT4NCiAgICA+ICsgKiBBdXRob3JzOiBXZWkgQ2hlbiA8d2VpLmNoZW5AYXJtLmNvbT4NCiAgICA+
ICAgICoNCiAgICA+IC0gKg0KICAgID4gKyAqIENvcHlyaWdodCAoYykgMjAxOCwgQXJtIEx0ZC4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAgICA+ICAgICogQ29weXJpZ2h0IChjKSAyMDE5LCBORUMg
TGFib3JhdG9yaWVzIEV1cm9wZSBHbWJILCBORUMgQ29ycG9yYXRpb24uDQogICAgPiAgICAqICAg
ICAgICAgICAgICAgICAgICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAgICA+ICAgICoNCiAgICA+
IEBAIC0zNywzICszOCwxMiBAQA0KICAgID4gICBzdGF0aWMgaW5saW5lIHZvaWQgX2luaXRfY3B1
ZmVhdHVyZXModm9pZCkNCiAgICA+ICAgew0KICAgID4gICB9DQogICAgPiArDQogICAgPiArLyoN
CiAgICA+ICsgKiBIYWx0cyB0aGUgQ1BVIHVudGlsIHRoZSBuZXh0IGV4dGVybmFsIGludGVycnVw
dCBpcyBmaXJlZC4gRm9yIEFybSwNCiAgICA+ICsgKiB3ZSBjYW4gdXNlIFdGSSB0byBpbXBsZW1l
bnQgdGhpcyBmZWF0dXJlLg0KICAgID4gKyAqLw0KICAgIA0KICAgIEFyZW4ndCB3ZSBkdXBsaWNh
dGluZyB0aGUgZnVuY3Rpb24gaGVyZS4NCiAgICBXZSBoYXZlIGEgaGFsdCBmdW5jdGlvbiBkZWZp
bmVkIGluDQogICAgcGxhdC9jb21tb24vYXJtL2NwdV9uYXRpdmUuYw0KICAgIA0KICAgIEFueSBz
cGVjaWZpYyByZWFzb24gd2UgYXJlIG5vdCB1c2luZyBpdD8NCg0KSXQgaXMgYmVjYXVzZSBjcHVf
bmF0aXZlIGlzIGRlZmluaW5nIG11Y2ggbW9yZSBzdHVmZiB3ZSBhcmVuJ3Qgc3VwcG9ydCByaWdo
dCBub3cgZm9yIEFybTMyLiBIb3dldmVyLCB3ZSBjb3VsZCBndWFyZCBpdCB3aXRoIG1hY3JvcyBp
bnN0ZWFkLiBNYXliZSB0aGF0IGlzIGEgYmV0dGVyIHNvbHV0aW9uLiBJIHdpbGwgc2VuZCBhIHYy
Lg0KDQogICAgPiArc3RhdGljIGlubGluZSB2b2lkIGhhbHQodm9pZCkNCiAgICA+ICt7DQogICAg
PiArCV9fYXNtX18gX192b2xhdGlsZV9fKCJ3ZmkiKTsNCiAgICA+ICt9DQogICAgPiBkaWZmIC0t
Z2l0IGEvcGxhdC94ZW4vTWFrZWZpbGUudWsgYi9wbGF0L3hlbi9NYWtlZmlsZS51aw0KICAgID4g
aW5kZXggN2EzZmNjOTMuLjViZGUyNWYzIDEwMDY0NA0KICAgID4gLS0tIGEvcGxhdC94ZW4vTWFr
ZWZpbGUudWsNCiAgICA+ICsrKyBiL3BsYXQveGVuL01ha2VmaWxlLnVrDQogICAgPiBAQCAtNDks
OSArNDksOSBAQCBMSUJYRU5QTEFUX1NSQ1MtJChDT05GSUdfQVJDSF9YODZfNjQpICs9ICQoTElC
WEVOUExBVF9CQVNFKS94ODYvYXJjaF90aW1lLmMNCiAgICA+ICAgaWZuZXEgKCQoWEVOX0hWTUxJ
VEUpLHkpDQogICAgPiAgIExJQlhFTlBMQVRfQVNGTEFHUy15ICAgICAgICAgICArPSAtRENPTkZJ
R19QQVJBVklSVA0KICAgID4gICBMSUJYRU5QTEFUX0NGTEFHUy15ICAgICAgICAgICAgKz0gLURD
T05GSUdfUEFSQVZJUlQNCiAgICA+IC1MSUJYRU5QTEFUX1NSQ1MteSAgICAgICAgICAgICAgKz0g
JChMSUJYRU5QTEFUX0JBU0UpL3g4Ni9jcHVfcHYuYw0KICAgID4gK0xJQlhFTlBMQVRfU1JDUy0k
KENPTkZJR19BUkNIX1g4Nl82NCkgKz0gJChMSUJYRU5QTEFUX0JBU0UpL3g4Ni9jcHVfcHYuYw0K
ICAgID4gICBlbHNlDQogICAgPiAtTElCWEVOUExBVF9TUkNTLXkgICAgICAgICAgICAgICs9ICQo
VUtfUExBVF9DT01NT05fQkFTRSkveDg2L2NwdV9uYXRpdmUuYw0KICAgID4gK0xJQlhFTlBMQVRf
U1JDUy0kKENPTkZJR19BUkNIX1g4Nl82NCkgKz0gJChVS19QTEFUX0NPTU1PTl9CQVNFKS94ODYv
Y3B1X25hdGl2ZS5jDQogICAgPiAgIGVuZGlmDQogICAgPiAgIA0KICAgID4gICBMSUJYRU5QTEFU
X1NSQ1MtJChDT05GSUdfQVJDSF9BUk1fMzIpICs9ICQoTElCWEVOUExBVF9CQVNFKS9hcm0vc2V0
dXAuYw0KICAgID4gDQogICAgDQoNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3Rz
LnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0
aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Feb 12 22:27:19 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 12 Feb 2019 22:27:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gtgWL-0005G0-Eg; Tue, 12 Feb 2019 22:27:17 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=cywF=QT=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gtgWJ-0005Fv-Ki
 for minios-devel@lists.xen.org; Tue, 12 Feb 2019 22:27:15 +0000
X-Inumbo-ID: 56eab9bc-2f15-11e9-8847-4f58bf0e9b6b
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 56eab9bc-2f15-11e9-8847-4f58bf0e9b6b;
 Tue, 12 Feb 2019 22:27:11 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 8AC85F207B;
 Tue, 12 Feb 2019 23:27:10 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id ZR9UuNHGh-9Q; Tue, 12 Feb 2019 23:27:10 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 62DD3F2021
 for <minios-devel@lists.xen.org>; Tue, 12 Feb 2019 23:27:08 +0100 (CET)
Received: from localhost (10.7.0.31) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Tue, 12 Feb 2019 23:27:08 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Tue, 12 Feb 2019 23:26:54 +0100
Message-ID: <20190212222654.17150-1-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
MIME-Version: 1.0
X-Originating-IP: [10.7.0.31]
Subject: [Minios-devel] [UNIKRAFT PATCH] lib/ukboot: include uk/essentials.h
 in weak_main
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SW4gY2FzZSBvZiBjb21waWxpbmcgd2l0aCBuZXdsaWIgZW5hYmxlZCwgZXNzZW50aWFscy5oIGlz
IG5vdCBnZXR0aW5nCmluY2x1ZGVkLiBCZWNhdXNlIG9mIHRoYXQsIGNvbXBpbGVyIGRvZXMgbm90
IGtub3cgd2hhdCAnX193ZWFrJyBtZWFucywKYW5kIHRoZSBjb21waWxhdGlvbiBmYWlscy4gTGV0
J3MgaW5jbHVkZSBlc3NlbnRpYWxzLmggZXhwbGljaXRseS4KClNpZ25lZC1vZmYtYnk6IFl1cmkg
Vm9sY2hrb3YgPHl1cmkudm9sY2hrb3ZAbmVjbGFiLmV1PgotLS0KIGxpYi91a2Jvb3Qvd2Vha19t
YWluLmMgfCAxICsKIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQoKZGlmZiAtLWdpdCBh
L2xpYi91a2Jvb3Qvd2Vha19tYWluLmMgYi9saWIvdWtib290L3dlYWtfbWFpbi5jCmluZGV4IDY5
NzcyMGMuLmRlYWUzZGIgMTAwNjQ0Ci0tLSBhL2xpYi91a2Jvb3Qvd2Vha19tYWluLmMKKysrIGIv
bGliL3VrYm9vdC93ZWFrX21haW4uYwpAQCAtMSw1ICsxLDYgQEAKICNpbmNsdWRlIDxzdGRpby5o
PgogI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8dWsvZXNzZW50aWFscy5oPgogCiAvKiBJ
bnRlcm5hbCBtYWluICovCiBpbnQgX193ZWFrIG1haW4oaW50IGFyZ2MgX191bnVzZWQsIGNoYXIg
KmFyZ3ZbXSBfX3VudXNlZCkKLS0gCjIuMTkuMgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRl
dmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFp
bG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Feb 12 22:35:33 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 12 Feb 2019 22:35:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gtgeL-00063H-GN; Tue, 12 Feb 2019 22:35:33 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=WjiA=QT=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1gtgeK-000639-Ka
 for minios-devel@lists.xen.org; Tue, 12 Feb 2019 22:35:32 +0000
X-Inumbo-ID: 7f8846c2-2f16-11e9-9e3a-bff12773da01
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 7f8846c2-2f16-11e9-9e3a-bff12773da01;
 Tue, 12 Feb 2019 22:35:29 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 36935F207B;
 Tue, 12 Feb 2019 23:35:28 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id TXq75FHu6Sit; Tue, 12 Feb 2019 23:35:28 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 03A68F2021
 for <minios-devel@lists.xen.org>; Tue, 12 Feb 2019 23:35:25 +0100 (CET)
Received: from PALLENE.office.hd ([169.254.1.223]) by METHONE.office.hd
 ([192.168.24.54]) with mapi id 14.03.0319.002; Tue, 12 Feb 2019 23:35:25
 +0100
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [Minios-devel] [UNIKRAFT PATCH] lib/ukboot: include
 uk/essentials.h in weak_main
Thread-Index: AQHUwyItDnNEcKbM30GC2Wog67RGsKXcwDgA
Date: Tue, 12 Feb 2019 22:35:25 +0000
Message-ID: <4AE79371-D56D-4AE3-8C98-1B33777F61FB@neclab.eu>
References: <20190212222654.17150-1-yuri.volchkov@neclab.eu>
In-Reply-To: <20190212222654.17150-1-yuri.volchkov@neclab.eu>
Accept-Language: en-GB, gl-ES, de-DE, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [10.7.0.212]
Content-ID: <A35F614AD5542F4A875961E015F24F8C@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT PATCH] lib/ukboot: include
 uk/essentials.h in weak_main
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Sharan Santhanam <Sharan.Santhanam@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

T2ggeWVzLCByaWdodC4gRXZlbiAnX191bnVzZWQnIHNob3VsZG4ndCBiZSBhdmFpbGFibGUgd2l0
aG91dCB0aGlzIGluY2x1ZGUuDQpUaGFua3MhDQoNClJldmlld2VkLWJ5OiBTaW1vbiBLdWVuemVy
IDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4NCg0K77u/T24gMTIuMDIuMTksIDIzOjI3LCAiTWlu
aW9zLWRldmVsIG9uIGJlaGFsZiBvZiBZdXJpIFZvbGNoa292IiA8bWluaW9zLWRldmVsLWJvdW5j
ZXNAbGlzdHMueGVucHJvamVjdC5vcmcgb24gYmVoYWxmIG9mIHl1cmkudm9sY2hrb3ZAbmVjbGFi
LmV1PiB3cm90ZToNCg0KICAgIEluIGNhc2Ugb2YgY29tcGlsaW5nIHdpdGggbmV3bGliIGVuYWJs
ZWQsIGVzc2VudGlhbHMuaCBpcyBub3QgZ2V0dGluZw0KICAgIGluY2x1ZGVkLiBCZWNhdXNlIG9m
IHRoYXQsIGNvbXBpbGVyIGRvZXMgbm90IGtub3cgd2hhdCAnX193ZWFrJyBtZWFucywNCiAgICBh
bmQgdGhlIGNvbXBpbGF0aW9uIGZhaWxzLiBMZXQncyBpbmNsdWRlIGVzc2VudGlhbHMuaCBleHBs
aWNpdGx5Lg0KICAgIA0KICAgIFNpZ25lZC1vZmYtYnk6IFl1cmkgVm9sY2hrb3YgPHl1cmkudm9s
Y2hrb3ZAbmVjbGFiLmV1Pg0KICAgIC0tLQ0KICAgICBsaWIvdWtib290L3dlYWtfbWFpbi5jIHwg
MSArDQogICAgIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQ0KICAgIA0KICAgIGRpZmYg
LS1naXQgYS9saWIvdWtib290L3dlYWtfbWFpbi5jIGIvbGliL3VrYm9vdC93ZWFrX21haW4uYw0K
ICAgIGluZGV4IDY5NzcyMGMuLmRlYWUzZGIgMTAwNjQ0DQogICAgLS0tIGEvbGliL3VrYm9vdC93
ZWFrX21haW4uYw0KICAgICsrKyBiL2xpYi91a2Jvb3Qvd2Vha19tYWluLmMNCiAgICBAQCAtMSw1
ICsxLDYgQEANCiAgICAgI2luY2x1ZGUgPHN0ZGlvLmg+DQogICAgICNpbmNsdWRlIDxlcnJuby5o
Pg0KICAgICsjaW5jbHVkZSA8dWsvZXNzZW50aWFscy5oPg0KICAgICANCiAgICAgLyogSW50ZXJu
YWwgbWFpbiAqLw0KICAgICBpbnQgX193ZWFrIG1haW4oaW50IGFyZ2MgX191bnVzZWQsIGNoYXIg
KmFyZ3ZbXSBfX3VudXNlZCkNCiAgICAtLSANCiAgICAyLjE5LjINCiAgICANCiAgICANCiAgICBf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KICAgIE1pbmlv
cy1kZXZlbCBtYWlsaW5nIGxpc3QNCiAgICBNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5v
cmcNCiAgICBodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWlu
aW9zLWRldmVsDQoNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2pl
Y3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5p
b3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Feb 12 22:43:59 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 12 Feb 2019 22:43:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gtgmU-0006nE-5w; Tue, 12 Feb 2019 22:43:58 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=WjiA=QT=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1gtgmT-0006n9-Dt
 for minios-devel@lists.xen.org; Tue, 12 Feb 2019 22:43:57 +0000
X-Inumbo-ID: ac7849bf-2f17-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id ac7849bf-2f17-11e9-bc90-bc764e045a96;
 Tue, 12 Feb 2019 22:43:54 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 2391C104DCF;
 Tue, 12 Feb 2019 23:43:53 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id vVFowfAtVktP; Tue, 12 Feb 2019 23:43:52 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id DE35A104DCA
 for <minios-devel@lists.xen.org>; Tue, 12 Feb 2019 23:43:50 +0100 (CET)
Received: from PALLENE.office.hd ([169.254.1.223]) by ENCELADUS.office.hd
 ([192.168.24.52]) with mapi id 14.03.0319.002; Tue, 12 Feb 2019 23:43:50
 +0100
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: Sharan Santhanam <Sharan.Santhanam@neclab.eu>,
 "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT PATCH 1/2] plat/xen: Split emergency and hypervisor
 console
Thread-Index: AQHUwhmSrmm/BSzjskWRec3RLgxiIqXcYWWAgABjPQA=
Date: Tue, 12 Feb 2019 22:43:49 +0000
Message-ID: <BFF4D7A1-A716-490A-BE33-7F55CA7B7272@neclab.eu>
References: <20190211145324.21334-1-simon.kuenzer@neclab.eu>
 <20190211145324.21334-2-simon.kuenzer@neclab.eu>
 <edeffab2-cffc-3be3-e6d6-c58232344da5@neclab.eu>
In-Reply-To: <edeffab2-cffc-3be3-e6d6-c58232344da5@neclab.eu>
Accept-Language: en-GB, gl-ES, de-DE, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [10.7.0.212]
Content-ID: <09701D9A0F226E49B691E88B15A5426B@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 1/2] plat/xen: Split emergency
 and hypervisor console
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Florian Schmidt <Florian.Schmidt@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGV5IFNoYXJhbiwNCg0K77u/T24gMTIuMDIuMTksIDE4OjQ4LCAiU2hhcmFuIFNhbnRoYW5hbSIg
PFNoYXJhbi5TYW50aGFuYW1AbmVjbGFiLmV1PiB3cm90ZToNCg0KICAgIEhlbGxvIFNpbW9uLA0K
ICAgIA0KICAgIFBsZWFzZSBmaW5kIHRoZSBjb21tZW50cyBpbmxpbmUuDQogICAgDQogICAgSSB0
aGluayB0aGUgY29uc29sZSBpbiB0aGUgeGVuIHBsYXRmb3JtIGlzIGluc3BpcmVkIGZyb20gdGhl
IGt2bSANCiAgICBwbGF0Zm9ybS4gU29tZSBvZiB0aGUgaXNzdWUgd2UgaGF2ZSBoZXJlIG1pZ2h0
IGJlIGNvbW1vbiBhY3Jvc3MgYm90aCB0aGUgDQogICAgcGxhdGZvcm1zLiBJIHdvdWxkbid0IG1p
bmQgaWYgd2Ugd2VyZSB0byB0YWtlIHRoaXMgcGF0Y2ggYXMgc3VjaCBhbmQgZml4IA0KICAgIHRo
ZSBjb25zb2xlIGludGVyZmFjZSBvbiB0aGUgYm90aCBwbGF0Zm9ybSBpbiBhIHNlcGFyYXRlIHNl
cmllcy4NCg0KWWVzLCBJIGFncmVlLiBJIGFjdHVhbGx5IHdhcyB1c2luZyB0aGUgc2FtZSBzdHls
ZSBhcyB3ZSBoYXZlIGZvciBLVk0sIGJ1dCBpdCBpcyBpbmRlZWQgbm90IHRoZSBiZXN0LiBJIHRo
aW5rIHRoaXMgaXMgbm90IGNyaXRpY2FsIGJ1dCBsZXQncyBkbyBpdC4gS1ZNIHdlIHNob3VsZCBm
aXggbGF0ZXIgYnkgdXNpbmcgdGhpcyBhcyBhbiBleGFtcGxlLg0KDQogICAgVGhhbmtzICYgUmVn
YXJkcw0KICAgIFNoYXJhbg0KDQpUaGFua3MsDQoNClNpbW9uDQogICAgDQogICAgT24gMi8xMS8x
OSAzOjUzIFBNLCBTaW1vbiBLdWVuemVyIHdyb3RlOg0KICAgID4gU3BsaXRzIHRoZSB0d28gY29u
c29sZSBpbXBsZW1ldGF0aW9ucyAoaHZjLCBlbWVyZ2VuY3kpIGZyb20gZWFjaCBvdGhlci4NCiAg
ICA+IFNpbWlsYXIgdG8gcGxhdC9rdm0sIGEgY29uc29sZSBvcHRpb24gbWVudSBpcyBwb3B1bGF0
ZWQgaW4gdGhlIHBsYXRmb3JtDQogICAgPiBjb25maWd1cmF0aW9uIHdoZXJlIGVhY2ggY29uc29s
ZSBjYW4gYmUgaW5kaXZpZHVhbGx5IHNlbGVjdGVkIGFzIG91dHB1dA0KICAgID4gZm9yIGtlcm5l
bCBvciBkZWJ1ZyBtZXNzYWdlcy4gQmVjYXVzZSBodmMgaXMgY3VycmVudGx5IG5vdCB5ZXQgc3Vw
cG9ydGVkDQogICAgPiBvbiBBcm0zMiwgd2Ugc2V0IHRoZSBkZWJ1ZyBjb25zb2xlIGFzIGRlZmF1
bHQgb3V0cHV0IG9uIEFybTMyLg0KICAgID4gDQogICAgPiBTaWduZWQtb2ZmLWJ5OiBTaW1vbiBL
dWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4NCiAgICA+IC0tLQ0KICAgID4gICBwbGF0
L3hlbi9Db25maWcudWsgICAgICAgICAgICAgICAgICAgIHwgIDM0ICsrKystDQogICAgPiAgIHBs
YXQveGVuL01ha2VmaWxlLnVrICAgICAgICAgICAgICAgICAgfCAgIDYgKw0KICAgID4gICBwbGF0
L3hlbi9jb25zb2xlLmMgICAgICAgICAgICAgICAgICAgIHwgMjU0ICsrKysrKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0NCiAgICA+ICAgcGxhdC94ZW4vZW1nX2NvbnNvbGUuYyAgICAgICAg
ICAgICAgICB8ICA4NyArKysrKysrKysrKysNCiAgICA+ICAgcGxhdC94ZW4vaHZfY29uc29sZS5j
ICAgICAgICAgICAgICAgICB8IDI1MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysN
CiAgICA+ICAgcGxhdC94ZW4vaW5jbHVkZS9jb21tb24vY29uc29sZS5oICAgICB8ICAgOSArLQ0K
ICAgID4gICBwbGF0L3hlbi9pbmNsdWRlL2NvbW1vbi9lbWdfY29uc29sZS5oIHwgIDQ1ICsrKysr
Kw0KICAgID4gICBwbGF0L3hlbi9pbmNsdWRlL2NvbW1vbi9odl9jb25zb2xlLmggIHwgIDQ5ICsr
KysrKysNCiAgICA+ICAgcGxhdC94ZW4vc2h1dGRvd24uYyAgICAgICAgICAgICAgICAgICB8ICAg
MiArLQ0KICAgID4gICBwbGF0L3hlbi94ODYvc2V0dXAuYyAgICAgICAgICAgICAgICAgIHwgICA0
ICstDQogICAgPiAgIDEwIGZpbGVzIGNoYW5nZWQsIDUxNCBpbnNlcnRpb25zKCspLCAyMjggZGVs
ZXRpb25zKC0pDQogICAgPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBwbGF0L3hlbi9lbWdfY29uc29s
ZS5jDQogICAgPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBwbGF0L3hlbi9odl9jb25zb2xlLmMNCiAg
ICA+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IHBsYXQveGVuL2luY2x1ZGUvY29tbW9uL2VtZ19jb25z
b2xlLmgNCiAgICA+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IHBsYXQveGVuL2luY2x1ZGUvY29tbW9u
L2h2X2NvbnNvbGUuaA0KICAgID4gDQogICAgPiBkaWZmIC0tZ2l0IGEvcGxhdC94ZW4vQ29uZmln
LnVrIGIvcGxhdC94ZW4vQ29uZmlnLnVrDQogICAgPiBpbmRleCA5Y2ZlOTBhMi4uYTI5ZTBmZjkg
MTAwNjQ0DQogICAgPiAtLS0gYS9wbGF0L3hlbi9Db25maWcudWsNCiAgICA+ICsrKyBiL3BsYXQv
eGVuL0NvbmZpZy51aw0KICAgID4gQEAgLTEwLDE0ICsxMCwzNiBAQCBtZW51Y29uZmlnIFBMQVRf
WEVODQogICAgPiAgICAgICAgICAgICAgICAgICBDcmVhdGUgYSBVbmlrcmFmdCBpbWFnZSB0aGF0
IHJ1bnMgYXMgYSBYZW4gZ3Vlc3QNCiAgICA+ICAgDQogICAgPiAgIGlmIChQTEFUX1hFTikNCiAg
ICA+IC0JY29uZmlnIFhFTl9EQkdFTUVSR0VOQ1kNCiAgICA+IC0JYm9vbCAiRW1lcmdlbmN5IGNv
bnNvbGUgZm9yIGRlYnVnIG91dHB1dCINCiAgICA+ICttZW51ICJDb25zb2xlIE9wdGlvbnMiDQog
ICAgPiArDQogICAgPiArY29uZmlnIFhFTl9LRVJORUxfSFZfQ09OU09MRQ0KICAgID4gKwlib29s
ICJIeXBlcnZpc29yIGNvbnNvbGUgZm9yIGtlcm5lbCBwcmludHMiDQogICAgPiArCWRlZmF1bHQg
eQ0KICAgID4gKwlkZXBlbmRzIG9uIEFSQ0hfWDg2XzY0DQogICAgPiArCWhlbHANCiAgICA+ICsJ
CVNlbmQga2VybmVsIG1lc3NhZ2VzIHRvIHRoZSBoeXBlcnZpc29yIGNvbnNvbGUuDQogICAgPiAr
DQogICAgPiArY29uZmlnIFhFTl9LRVJORUxfRU1HX0NPTlNPTEUNCiAgICA+ICsJYm9vbCAiRW1l
cmdlbmN5IGNvbnNvbGUgZm9yIGtlcm5lbCBwcmludHMiDQogICAgPiArCWRlZmF1bHQgeSBpZiBB
UkNIX0FSTV8zMg0KICAgID4gICAJZGVmYXVsdCBuDQogICAgPiAgIAloZWxwDQogICAgPiAtCQlT
ZW5kIGRlYnVnIG1lc3NhZ2VzIHRvIHRoZSBlbWVyZ2VuY3kgY29uc29sZQ0KICAgID4gLQkJaW5z
dGVhZCBvZiB0aGUgaHlwZXJ2aXNvciBjb25zb2xlLiBXaGVuIHRoaXMNCiAgICA+IC0JCW9wdGlv
biBpcyBlbmFibGVkIHRoZSBoeXBlcnZpc29yIGNvbnNvbGUgaXMgdXNlZA0KICAgID4gLQkJZm9y
IGtlcm5lbCBtZXNzYWdlcyBvbmx5Lg0KICAgID4gKwkJU2VuZCBrZXJuZWwgbWVzc2FnZXMgdG8g
dGhlIGVtZXJnZW5jeSBjb25zb2xlLg0KICAgID4gKw0KICAgID4gK2NvbmZpZyBYRU5fREVCVUdf
SFZfQ09OU09MRQ0KICAgID4gKwlib29sICJIeXBlcnZpc29yIGNvbnNvbGUgZm9yIGRlYnVnIHBy
aW50cyINCiAgICA+ICsJZGVmYXVsdCB5DQogICAgPiArCWRlcGVuZHMgb24gQVJDSF9YODZfNjQN
CiAgICA+ICsJaGVscA0KICAgID4gKwkJU2VuZCBkZWJ1ZyBtZXNzYWdlcyB0byB0aGUgaHlwZXJ2
aXNvciBjb25zb2xlLg0KICAgID4gKw0KICAgID4gK2NvbmZpZyBYRU5fREVCVUdfRU1HX0NPTlNP
TEUNCiAgICA+ICsJYm9vbCAiRW1lcmdlbmN5IGNvbnNvbGUgZm9yIGRlYnVnIHByaW50cyINCiAg
ICA+ICsJZGVmYXVsdCB5IGlmIEFSQ0hfQVJNXzMyDQogICAgPiArCWRlZmF1bHQgbg0KICAgID4g
KyAgICAgICAgaGVscA0KICAgID4gKwkJU2VuZCBkZWJ1ZyBtZXNzYWdlcyB0byB0aGUgZW1lcmdl
bmN5IGNvbnNvbGUuDQogICAgPiArZW5kbWVudQ0KICAgID4gICANCiAgICA+ICAgY29uZmlnIFhF
Tl9HTlRUQUINCiAgICA+ICAgCWJvb2wgIkdyYW50IHRhYmxlIHN1cHBvcnQiDQogICAgPiBkaWZm
IC0tZ2l0IGEvcGxhdC94ZW4vTWFrZWZpbGUudWsgYi9wbGF0L3hlbi9NYWtlZmlsZS51aw0KICAg
ID4gaW5kZXggMzQzOWEwZDkuLjdhM2ZjYzkzIDEwMDY0NA0KICAgID4gLS0tIGEvcGxhdC94ZW4v
TWFrZWZpbGUudWsNCiAgICA+ICsrKyBiL3BsYXQveGVuL01ha2VmaWxlLnVrDQogICAgPiBAQCAt
NzAsNiArNzAsMTIgQEAgTElCWEVOUExBVF9TUkNTLSQoQ09ORklHX0FSQ0hfQVJNXzY0KSArPSAk
KExJQlhFTlBMQVRfQkFTRSkvYXJtL2h5cGVyY2FsbHM2NC5TDQogICAgPiAgIA0KICAgID4gICBM
SUJYRU5QTEFUX1NSQ1MteSAgICAgICAgICAgICAgKz0gJChMSUJYRU5QTEFUX0JBU0UpL2xjcHUu
Yw0KICAgID4gICBMSUJYRU5QTEFUX1NSQ1MteSAgICAgICAgICAgICAgKz0gJChMSUJYRU5QTEFU
X0JBU0UpL2NvbnNvbGUuYw0KICAgID4gK2lmZXEgKCQoZmluZHN0cmluZyB5LCQoQ09ORklHX1hF
Tl9LRVJORUxfSFZfQ09OU09MRSkgJChDT05GSUdfWEVOX0RFQlVHX0hWX0NPTlNPTEUpKSx5KQ0K
ICAgID4gK0xJQlhFTlBMQVRfU1JDUy15ICAgICAgICAgICAgICArPSAkKExJQlhFTlBMQVRfQkFT
RSkvaHZfY29uc29sZS5jDQogICAgTElCWEVOUExBVF9TUkNTLSQoQ09ORklHX0FSQ0hfWDg2XzY0
KQ0KICAgIA0KICAgID4gK2VuZGlmDQogICAgPiAraWZlcSAoJChmaW5kc3RyaW5nIHksJChDT05G
SUdfWEVOX0tFUk5FTF9FTUdfQ09OU09MRSkgJChDT05GSUdfWEVOX0RFQlVHX0VNR19DT05TT0xF
KSkseSkNCiAgICA+ICtMSUJYRU5QTEFUX1NSQ1MteSAgICAgICAgICAgICAgKz0gJChMSUJYRU5Q
TEFUX0JBU0UpL2VtZ19jb25zb2xlLmMNCiAgICA+ICtlbmRpZg0KICAgID4gICBMSUJYRU5QTEFU
X1NSQ1MteSAgICAgICAgICAgICAgKz0gJChMSUJYRU5QTEFUX0JBU0UpL3NodXRkb3duLmMNCiAg
ICA+ICAgTElCWEVOUExBVF9TUkNTLXkgICAgICAgICAgICAgICs9ICQoTElCWEVOUExBVF9CQVNF
KS9ldmVudHMuYw0KICAgID4gICANCiAgICA+IGRpZmYgLS1naXQgYS9wbGF0L3hlbi9jb25zb2xl
LmMgYi9wbGF0L3hlbi9jb25zb2xlLmMNCiAgICA+IGluZGV4IGE3MGVjNWZmLi5lZDU5NDAwNCAx
MDA2NDQNCiAgICA+IC0tLSBhL3BsYXQveGVuL2NvbnNvbGUuYw0KICAgID4gKysrIGIvcGxhdC94
ZW4vY29uc29sZS5jDQogICAgPiBAQCAtMiw3ICsyLDggQEANCiAgICA+ICAgLyoNCiAgICA+ICAg
ICogQXV0aG9yczogU2ltb24gS3VlbnplciA8c2ltb24ua3VlbnplckBuZWNsYWIuZXU+DQogICAg
PiAgICAqDQogICAgPiAtICogQ29weXJpZ2h0IChjKSAyMDE3LCBORUMgRXVyb3BlIEx0ZC4sIE5F
QyBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAgICA+ICsgKiBDb3B5cmlnaHQg
KGMpIDIwMTksIE5FQyBMYWJvcmF0b3JpZXMgRXVyb3BlIEdtYkgsIE5FQyBDb3Jwb3JhdGlvbi4N
CiAgICA+ICsgKiAgICAgICAgICAgICAgICAgICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQogICAg
PiAgICAqDQogICAgPiAgICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KICAgID4gICAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCiAgICA+
IEBAIC0zMiwyMTAgKzMzLDM4IEBADQogICAgPiAgICAqIFRISVMgSEVBREVSIE1BWSBOT1QgQkUg
RVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuDQogICAgPiAgICAqLw0KICAgID4gICAN
CiAgICA+IC0vKg0KICAgID4gLSAqIFNvbWUgb2YgdGhpcyBjb2RlIHdhcyBwb3J0ZWQgZnJvbSBN
aW5pLU9TOg0KICAgID4gLSAqICBjb25zb2xlL3hlbmNvbnNfcmluZy5jIGFuZCBjb25zb2xlL2Nv
bnNvbGUuYw0KICAgID4gLSAqLw0KICAgID4gLS8qDQogICAgPiAtICoqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioNCiAgICA+IC0gKiAoQykgMjAwNiAtIEdyemVnb3J6IE1pbG9zIC0gQ2FtYnJpZGdlIFVuaXZl
cnNpdHkNCiAgICA+IC0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgID4gLSAqDQogICAgPiAtICog
ICAgICAgIEZpbGU6IGNvbnNvbGUuaA0KICAgID4gLSAqICAgICAgQXV0aG9yOiBHcnplZ29yeiBN
aWxvcw0KICAgID4gLSAqICAgICBDaGFuZ2VzOg0KICAgID4gLSAqDQogICAgPiAtICogICAgICAg
IERhdGU6IE1hciAyMDA2DQogICAgPiAtICoNCiAgICA+IC0gKiBFbnZpcm9ubWVudDogWGVuIE1p
bmltYWwgT1MNCiAgICA+IC0gKiBEZXNjcmlwdGlvbjogQ29uc29sZSBpbnRlcmZhY2UuDQogICAg
PiAtICoNCiAgICA+IC0gKiBIYW5kbGVzIGNvbnNvbGUgSS9PLiBEZWZpbmVzIHByaW50ay4NCiAg
ICA+IC0gKg0KICAgID4gLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICAgPiAtICogUGVybWlzc2lv
biBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWlu
aW5nIGEgY29weQ0KICAgID4gLSAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9j
dW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0bw0KICAgID4gLSAqIGRlYWwgaW4g
dGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0
YXRpb24gdGhlDQogICAgPiAtICogcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwg
cHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yDQogICAgPiAtICogc2VsbCBj
b3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUg
U29mdHdhcmUgaXMNCiAgICA+IC0gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zOg0KICAgID4gLSAqDQogICAgPiAtICogVGhlIGFib3ZlIGNv
cHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVk
ZWQgaW4NCiAgICA+IC0gKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRo
ZSBTb2Z0d2FyZS4NCiAgICA+IC0gKg0KICAgID4gLSAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURF
RCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQogICAg
PiAtICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFksDQogICAgPiAtICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFDQogICAg
PiAtICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJ
TSwgREFNQUdFUyBPUiBPVEhFUg0KICAgID4gLSAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBB
Q1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HDQogICAgPiAtICog
RlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVT
RSBPUiBPVEhFUg0KICAgID4gLSAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCiAgICA+IC0g
Ki8NCiAgICA+IC0NCiAgICA+IC0jaW5jbHVkZSA8aW50dHlwZXMuaD4NCiAgICA+IC0jaW5jbHVk
ZSA8c3RyaW5nLmg+DQogICAgPiArI2luY2x1ZGUgPHVrL2NvbmZpZy5oPg0KICAgID4gICAjaW5j
bHVkZSA8dWsvcGxhdC9jb25zb2xlLmg+DQogICAgPiArI2luY2x1ZGUgPHN0cmluZy5oPg0KICAg
ID4gICAjaW5jbHVkZSA8dWsvYXJjaC9sY3B1Lmg+DQogICAgPiAtI2luY2x1ZGUgPHVrL2Fzc2Vy
dC5oPg0KICAgID4gICAjaW5jbHVkZSA8dWsvZXNzZW50aWFscy5oPg0KICAgID4gLSNpbmNsdWRl
IDx1ay9jb25maWcuaD4NCiAgICA+IC0NCiAgICA+IC0jaW5jbHVkZSA8Y29tbW9uL2NvbnNvbGUu
aD4NCiAgICA+IC0jaW5jbHVkZSA8Y29tbW9uL2V2ZW50cy5oPg0KICAgID4gLSNpbmNsdWRlIDxj
b21tb24vaHlwZXJ2aXNvci5oPg0KICAgID4gLSNpbmNsdWRlIDx4ZW4veGVuLmg+DQogICAgPiAg
IA0KICAgID4gLSNpZiAoZGVmaW5lZCBfX1g4Nl8zMl9fKSB8fCAoZGVmaW5lZCBfX1g4Nl82NF9f
KQ0KICAgID4gLSNpbmNsdWRlIDx4ZW4teDg2L3NldHVwLmg+DQogICAgPiAtI2luY2x1ZGUgPHhl
bi14ODYvbW0uaD4NCiAgICA+IC0jaWYgZGVmaW5lZCBfX1g4Nl8zMl9fDQogICAgPiAtI2luY2x1
ZGUgPHhlbi14ODYvaHlwZXJjYWxsMzIuaD4NCiAgICA+IC0jZWxpZiBkZWZpbmVkIF9fWDg2XzY0
X18NCiAgICA+IC0jaW5jbHVkZSA8eGVuLXg4Ni9oeXBlcmNhbGw2NC5oPg0KICAgID4gKyNpZiAo
Q09ORklHX1hFTl9LRVJORUxfSFZfQ09OU09MRSB8fCBDT05GSUdfWEVOX0RFQlVHX0hWX0NPTlNP
TEUpDQogICAgPiArI2luY2x1ZGUgPGNvbW1vbi9odl9jb25zb2xlLmg+DQogICAgPiAgICNlbmRp
Zg0KICAgID4gLSNlbGlmIChkZWZpbmVkIF9fQVJNXzMyX18pIHx8IChkZWZpbmVkIF9fQVJNXzY0
X18pDQogICAgPiAtI2luY2x1ZGUgPHhlbi1hcm0vbW0uaD4NCiAgICA+IC0jaW5jbHVkZSA8eGVu
LWFybS9oeXBlcmNhbGwuaD4NCiAgICA+ICsjaWYgKENPTkZJR19YRU5fS0VSTkVMX0VNR19DT05T
T0xFIHx8IENPTkZJR19YRU5fREVCVUdfRU1HX0NPTlNPTEUpDQogICAgPiArI2luY2x1ZGUgPGNv
bW1vbi9lbWdfY29uc29sZS5oPg0KICAgID4gICAjZW5kaWYNCiAgICA+IC0jaW5jbHVkZSA8eGVu
L2lvL2NvbnNvbGUuaD4NCiAgICA+IC0jaW5jbHVkZSA8eGVuL2lvL3Byb3RvY29scy5oPg0KICAg
ID4gLSNpbmNsdWRlIDx4ZW4vaW8vcmluZy5oPg0KICAgID4gLSNpZm5kZWYgQ09ORklHX1BBUkFW
SVJUDQogICAgPiAtI2luY2x1ZGUgPHhlbi9odm0vcGFyYW1zLmg+DQogICAgPiAtI2VuZGlmDQog
ICAgPiAtDQogICAgPiAtc3RhdGljIHN0cnVjdCB4ZW5jb25zX2ludGVyZmFjZSAqY29uc29sZV9y
aW5nOw0KICAgID4gLXN0YXRpYyB1aW50MzJfdCBjb25zb2xlX2V2dGNobjsNCiAgICA+IC1zdGF0
aWMgaW50IGNvbnNvbGVfcmVhZHk7DQogICAgPiAgIA0KICAgID4gLSNpZmRlZiBDT05GSUdfUEFS
QVZJUlQNCiAgICA+IC12b2lkIF9saWJ4ZW5wbGF0X3ByZXBhcmVfY29uc29sZSh2b2lkKQ0KICAg
ID4gK3ZvaWQgcHJlcGFyZV9jb25zb2xlKHZvaWQpDQogICAgPiAgIHsNCiAgICA+IC0JY29uc29s
ZV9yaW5nID0gbWZuX3RvX3ZpcnQoSFlQRVJWSVNPUl9zdGFydF9pbmZvLT5jb25zb2xlLmRvbVUu
bWZuKTsNCiAgICA+IC0JY29uc29sZV9ldnRjaG4gPSBIWVBFUlZJU09SX3N0YXJ0X2luZm8tPmNv
bnNvbGUuZG9tVS5ldnRjaG47DQogICAgPiAtfQ0KICAgID4gLSNlbHNlDQogICAgPiAtdm9pZCBf
bGlieGVucGxhdF9wcmVwYXJlX2NvbnNvbGUodm9pZCkNCiAgICA+IC17DQogICAgPiAtCS8qIE5P
VCBJTVBMRU1FTlRFRCBZRVQgKi8NCiAgICA+IC19DQogICAgPiArI2lmIChDT05GSUdfWEVOX0tF
Uk5FTF9IVl9DT05TT0xFIHx8IENPTkZJR19YRU5fREVCVUdfSFZfQ09OU09MRSkNCiAgICA+ICsJ
aHZfY29uc29sZV9wcmVwYXJlKCk7DQogICAgPiAgICNlbmRpZg0KICAgID4gLQ0KICAgID4gLSNp
ZiBDT05GSUdfWEVOX0RCR0VNRVJHRU5DWQ0KICAgID4gLXN0YXRpYyBpbnQgZW1lcmdlbmN5X291
dHB1dChjb25zdCBjaGFyICpzdHIsIHVuc2lnbmVkIGludCBsZW4pDQogICAgPiAtew0KICAgID4g
LQlpbnQgcmM7DQogICAgPiAtDQogICAgPiAtCXJjID0gSFlQRVJWSVNPUl9jb25zb2xlX2lvKENP
TlNPTEVJT193cml0ZSwgbGVuLCBERUNPTlNUKGNoYXIgKiwgc3RyKSk7DQogICAgPiAtCWlmICh1
bmxpa2VseShyYyA8IDApKQ0KICAgID4gLQkJcmV0dXJuIHJjOw0KICAgID4gLQlyZXR1cm4gbGVu
Ow0KICAgID4gLX0NCiAgICA+IC0jZW5kaWYNCiAgICA+IC0NCiAgICA+IC0vKg0KICAgID4gLSAq
IGh2Y29uc29sZV9vdXRwdXQgY2FuIG9wZXJhdGUgaW4gdHdvIG1vZGVzOiBidWZmZXJlZCBhbmQg
aW5pdGlhbGl6ZWQuDQogICAgPiAtICogVGhlIGJ1ZmZlcmVkIG1vZGUgaXMgYXV0b21hdGljYWxs
eSBhY3RpdmF0ZWQgYWZ0ZXINCiAgICA+IC0gKiBfbGlieGVucGxhdF9wcmVwYXJlX2NvbnNvbGUo
KSB3YXMgY2FsbGVkIGFuZCB3ZSBrbm93IHdoZXJlIHRoZSBjb25zb2xlIHJpbmcNCiAgICA+IC0g
KiBpcy4gVGhlIG91dHB1dCBzdHJpbmcgaXMgcHV0IHRvIHRoZSBjb25zb2xlIHJpbmcgdW50aWwg
dGhlIHJpbmcgaXMgZnVsbC4gQW55DQogICAgPiAtICogZnVydGhlciBjaGFyYWN0ZXJzIGFyZSBk
aXNjYXJkZWQuIFNpbmNlIHRoZSBldmVudCBjaGFubmVsIGlzIG5vdCBpbml0aWFsaXplZA0KICAg
ID4gLSAqIHlldCwgdGhlIGJhY2tlbmQgaXMgbm90IG5vdGlmaWVkLiBUaGlzIG1vZGUgaXMgaW50
cm9kdWNlZCB0byBzdXBwb3J0IGVhcmx5DQogICAgPiAtICogcHJpbnRpbmcsIGV2ZW4gYmVmb3Jl
IGV2ZW50cyBhcmUgbm90IGluaXRpYWxpemVkLg0KICAgID4gLSAqIF9saWJ4ZW5wbGF0X2luaXRf
Y29uc29sZSgpIGZpbmFsaXplcyB0aGUgaW5pdGlhbGl6YXRpb24gYW5kIGVuYWJsZXMNCiAgICA+
IC0gKiB0aGUgZXZlbnQgY2hhbm5lbC4gRnJvbSBub3cgb24sIHRoZSBjb25zb2xlIGJhY2tlbmQg
aXMgbm90aWZpZWQgd2hlbmV2ZXINCiAgICA+IC0gKiB3ZSBwdXQgY2hhcmFjdGVycyBvbiB0aGUg
Y29uc29sZSByaW5nLiBXaGVuZXZlciB0aGlzIHJpbmcgaXMgZnVsbCBhbmQgdGhlcmUNCiAgICA+
IC0gKiBhcmUgc3RpbGwgY2hhcmFjdGVycyB0aGF0IHNob3VsZCBiZSBwcmludGVkLCB3ZSBhcmUg
ZW50ZXJpbmcgYSBidXN5IGxvb3AgYW5kDQogICAgPiAtICogd2FpdCBmb3IgdGhlIGJhY2tlbmQg
dG8gbWFrZSB1cyBzcGFjZSBhZ2Fpbi4gT2YgY291cnNlIHRoaXMgaXMgc2xvdzogZG8gbm90DQog
ICAgPiAtICogcHJpbnQgc28gbXVjaCEgOy0pDQogICAgPiAtICovDQogICAgPiAtc3RhdGljIGlu
dCBodmNvbnNvbGVfb3V0cHV0KGNvbnN0IGNoYXIgKnN0ciwgdW5zaWduZWQgaW50IGxlbikNCiAg
ICA+IC17DQogICAgPiAtCXVuc2lnbmVkIGludCBzZW50ID0gMDsNCiAgICA+IC0JWEVOQ09OU19S
SU5HX0lEWCBjb25zLCBwcm9kOw0KICAgID4gLQ0KICAgID4gLQlpZiAodW5saWtlbHkoIWNvbnNv
bGVfcmluZykpDQogICAgPiAtCQlyZXR1cm4gc2VudDsNCiAgICA+IC0NCiAgICA+IC1yZXRyeToN
CiAgICA+IC0JY29ucyA9IGNvbnNvbGVfcmluZy0+b3V0X2NvbnM7DQogICAgPiAtCXByb2QgPSBj
b25zb2xlX3JpbmctPm91dF9wcm9kOw0KICAgID4gLQ0KICAgID4gLQltYigpOyAvKiBtYWtlIHN1
cmUgd2UgaGF2ZSBjb25zICYgcHJvZCBiZWZvcmUgdG91Y2hpbmcgdGhlIHJpbmcgKi8NCiAgICA+
IC0JVUtfQlVHT04oKHByb2QgLSBjb25zKSA+IHNpemVvZihjb25zb2xlX3JpbmctPm91dCkpOw0K
ICAgID4gLQ0KICAgID4gLQl3aGlsZSAoKHNlbnQgPCBsZW4pICYmICgocHJvZCAtIGNvbnMpIDwg
c2l6ZW9mKGNvbnNvbGVfcmluZy0+b3V0KSkpIHsNCiAgICA+IC0JCWlmIChzdHJbc2VudF0gPT0g
J1xuJykgew0KICAgID4gLQkJCS8qIHByZXBlbmQgJ1xyJyBmb3IgY29udmVydGluZyAnXG4nIHRv
ICdccicnXG4nICovDQogICAgPiAtCQkJaWYgKChwcm9kICsgMSAtIGNvbnMpID49IHNpemVvZihj
b25zb2xlX3JpbmctPm91dCkpDQogICAgPiAtCQkJCWJyZWFrOyAvKiBub3QgZW5vdWdoIHNwYWNl
IGZvciAnXHInIGFuZCAnXG4nISAqLw0KICAgID4gLQ0KICAgID4gLQkJCWNvbnNvbGVfcmluZy0+
b3V0W01BU0tfWEVOQ09OU19JRFgocHJvZCsrLA0KICAgID4gLQkJCQkJCQkgICBjb25zb2xlX3Jp
bmctPm91dCldID0NCiAgICA+IC0JCQkJJ1xyJzsNCiAgICA+IC0JCX0NCiAgICA+IC0NCiAgICA+
IC0JCWNvbnNvbGVfcmluZy0+b3V0W01BU0tfWEVOQ09OU19JRFgocHJvZCsrLCBjb25zb2xlX3Jp
bmctPm91dCldID0NCiAgICA+IC0JCQlzdHJbc2VudF07DQogICAgPiAtCQlzZW50Kys7DQogICAg
PiAtCX0NCiAgICA+IC0Jd21iKCk7IC8qIGVuc3VyZSBjaGFyYWN0ZXJzIGFyZSB3cml0dGVuIGJl
Zm9yZSBpbmNyZWFzaW5nIG91dF9wcm9kICovDQogICAgPiAtCWNvbnNvbGVfcmluZy0+b3V0X3By
b2QgPSBwcm9kOw0KICAgID4gLQ0KICAgID4gLQkvKiBJcyB0aGUgY29uc29sZSBmdWxseSBpbml0
aWFsaXplZD8NCiAgICA+IC0JICogQXJlIHdlIGFibGUgdG8gbm90aWZ5IHRoZSBiYWNrZW5kPw0K
ICAgID4gLQkgKi8NCiAgICA+IC0JaWYgKGxpa2VseShjb25zb2xlX3JlYWR5ICYmIGNvbnNvbGVf
ZXZ0Y2huKSkgew0KICAgID4gLQkJbm90aWZ5X3JlbW90ZV92aWFfZXZ0Y2huKGNvbnNvbGVfZXZ0
Y2huKTsNCiAgICA+IC0NCiAgICA+IC0JCS8qIFRoZXJlIGFyZSBzdGlsbCBieXRlcyBsZWZ0IHRv
IHNlbmQgb3V0PyBJZiB5ZXMsIGRvIG5vdA0KICAgID4gLQkJICogZGlzY2FyZCB0aGVtLCByZXRy
eSBzZW5kaW5nIChlbnRlcnMgYnVzeSB3YWl0aW5nKQ0KICAgID4gLQkJICovDQogICAgPiAtCQlp
ZiAoc2VudCA8IGxlbikNCiAgICA+IC0JCQlnb3RvIHJldHJ5Ow0KICAgID4gLQl9DQogICAgPiAt
CXJldHVybiBzZW50Ow0KICAgID4gICB9DQogICAgPiAgIA0KICAgID4gLXN0YXRpYyB2b2lkIGh2
Y29uc29sZV9pbnB1dChldnRjaG5fcG9ydF90IHBvcnQgX191bnVzZWQsDQogICAgPiAtCQkJICAg
IHN0cnVjdCBfX3JlZ3MgKnJlZ3MgX191bnVzZWQsDQogICAgPiAtCQkJICAgIHZvaWQgKmRhdGEg
X191bnVzZWQpDQogICAgPiArdm9pZCBmbHVzaF9jb25zb2xlKHZvaWQpDQogICAgPiAgIHsNCiAg
ICA+IC0JLyogTk9UIElNUExFTUVOVEVEIFlFVCAqLw0KICAgID4gLX0NCiAgICA+IC0NCiAgICA+
IC12b2lkIGh2Y29uc29sZV9mbHVzaCh2b2lkKQ0KICAgID4gLXsNCiAgICA+IC0Jc3RydWN0IHhl
bmNvbnNfaW50ZXJmYWNlICppbnRmOw0KICAgID4gLQ0KICAgID4gLQlpZiAoIWNvbnNvbGVfcmVh
ZHkpDQogICAgPiAtCQlyZXR1cm47DQogICAgPiAtDQogICAgPiAtCWludGYgPSBjb25zb2xlX3Jp
bmc7DQogICAgPiAtCWlmICh1bmxpa2VseSghaW50ZikpDQogICAgPiAtCQlyZXR1cm47DQogICAg
PiAtDQogICAgPiAtCXdoaWxlIChpbnRmLT5vdXRfY29ucyA8IGludGYtPm91dF9wcm9kKQ0KICAg
ID4gLQkJYmFycmllcigpOw0KICAgID4gKyNpZiAoQ09ORklHX1hFTl9LRVJORUxfSFZfQ09OU09M
RSB8fCBDT05GSUdfWEVOX0RFQlVHX0hWX0NPTlNPTEUpDQogICAgPiArCWh2X2NvbnNvbGVfZmx1
c2goKTsNCiAgICA+ICsjZW5kaWYNCiAgICA+ICAgfQ0KICAgID4gICANCiAgICA+IC12b2lkIF9s
aWJ4ZW5wbGF0X2luaXRfY29uc29sZSh2b2lkKQ0KICAgID4gK3ZvaWQgaW5pdF9jb25zb2xlKHZv
aWQpDQogICAgPiAgIHsNCiAgICA+IC0JaW50IGVycjsNCiAgICA+IC0NCiAgICA+IC0JVUtfQVNT
RVJUKGNvbnNvbGVfcmluZyAhPSBOVUxMKTsNCiAgICA+IC0NCiAgICA+IC0JdWtfcHJfZGVidWco
Imh2Y29uc29sZSBAICVwIChldnRjaG46ICUiUFJJdTMyIilcbiIsDQogICAgPiAtCQkgICAgY29u
c29sZV9yaW5nLCBjb25zb2xlX2V2dGNobik7DQogICAgPiAtDQogICAgPiAtCWVyciA9IGJpbmRf
ZXZ0Y2huKGNvbnNvbGVfZXZ0Y2huLCBodmNvbnNvbGVfaW5wdXQsIE5VTEwpOw0KICAgID4gLQlp
ZiAoZXJyIDw9IDApDQogICAgPiAtCQlVS19DUkFTSCgiRmFpbGVkIHRvIGJpbmQgZXZlbnQgY2hh
bm5lbCBmb3IgaHZjb25zb2xlOiAlaVxuIiwNCiAgICA+IC0JCQkgZXJyKTsNCiAgICA+IC0JdW5t
YXNrX2V2dGNobihjb25zb2xlX2V2dGNobik7DQogICAgPiAtDQogICAgPiAtCWNvbnNvbGVfcmVh
ZHkgPSAxOyAvKiBlbmFibGUgbm90aWZpY2F0aW9uIG9mIGJhY2tlbmQgKi8NCiAgICA+IC0JLyog
Zmx1c2ggcXVldWVkIG91dHB1dCAqLw0KICAgID4gLQlub3RpZnlfcmVtb3RlX3ZpYV9ldnRjaG4o
Y29uc29sZV9ldnRjaG4pOw0KICAgID4gKyNpZiAoQ09ORklHX1hFTl9LRVJORUxfSFZfQ09OU09M
RSB8fCBDT05GSUdfWEVOX0RFQlVHX0hWX0NPTlNPTEUpDQogICAgPiArCWh2X2NvbnNvbGVfaW5p
dCgpOw0KICAgID4gKyNlbmRpZg0KICAgID4gICB9DQogICAgPiAgIA0KICAgID4gICBpbnQgdWtw
bGF0X2NvdXRkKGNvbnN0IGNoYXIgKnN0ciwgdW5zaWduZWQgaW50IGxlbikNCiAgICA+IEBAIC0y
NDMsNDEgKzcyLDM2IEBAIGludCB1a3BsYXRfY291dGQoY29uc3QgY2hhciAqc3RyLCB1bnNpZ25l
ZCBpbnQgbGVuKQ0KICAgID4gICAJaWYgKHVubGlrZWx5KGxlbiA9PSAwKSkNCiAgICA+ICAgCQls
ZW4gPSBzdHJubGVuKHN0ciwgbGVuKTsNCiAgICA+ICAgDQogICAgPiAtI2lmIENPTkZJR19YRU5f
REJHRU1FUkdFTkNZDQogICAgPiAtCXJldHVybiBlbWVyZ2VuY3lfb3V0cHV0KHN0ciwgbGVuKTsN
CiAgICA+IC0jZWxzZQ0KICAgID4gLQlyZXR1cm4gaHZjb25zb2xlX291dHB1dChzdHIsIGxlbik7
DQogICAgPiArI2lmIENPTkZJR19YRU5fREVCVUdfRU1HX0NPTlNPTEUNCiAgICANCiAgICBFcnJv
ciBjaGVjayBtaXNzaW5nIG9uIHRoZSBjb25zb2xlIGRyaXZlcg0KICAgID4gKwllbWdfY29uc29s
ZV9vdXRwdXQoc3RyLCBsZW4pOw0KICAgID4gKyNlbmRpZg0KICAgID4gKyNpZiBDT05GSUdfWEVO
X0RFQlVHX0hWX0NPTlNPTEUNCiAgICANCiAgICBFcnJvciBjaGVjayBtaXNzaW5nIG9uIHRoZSBj
b25zb2xlIGRyaXZlcg0KICAgID4gKwlodl9jb25zb2xlX291dHB1dChzdHIsIGxlbik7DQogICAg
PiAgICNlbmRpZg0KICAgID4gKwlyZXR1cm4gbGVuOw0KICAgID4gICB9DQogICAgPiAgIA0KICAg
ID4gLWludCB1a3BsYXRfY291dGsoY29uc3QgY2hhciAqc3RyIF9fdW51c2VkLCB1bnNpZ25lZCBp
bnQgbGVuIF9fdW51c2VkKQ0KICAgID4gK2ludCB1a3BsYXRfY291dGsoY29uc3QgY2hhciAqc3Ry
LCB1bnNpZ25lZCBpbnQgbGVuKQ0KICAgID4gICB7DQogICAgPiAgIAlpZiAodW5saWtlbHkobGVu
ID09IDApKQ0KICAgID4gICAJCWxlbiA9IHN0cm5sZW4oc3RyLCBsZW4pOw0KICAgID4gICANCiAg
ICA+IC0JcmV0dXJuIGh2Y29uc29sZV9vdXRwdXQoc3RyLCBsZW4pOw0KICAgID4gKyNpZiBDT05G
SUdfWEVOX0tFUk5FTF9FTUdfQ09OU09MRQ0KICAgIA0KICAgIEVycm9yIGNoZWNrIG1pc3Npbmcg
b24gdGhlIGNvbnNvbGUgZHJpdmVyDQogICAgPiArCWVtZ19jb25zb2xlX291dHB1dChzdHIsIGxl
bik7DQogICAgPiArI2VuZGlmDQogICAgPiArI2lmIENPTkZJR19YRU5fS0VSTkVMX0hWX0NPTlNP
TEUNCiAgICANCiAgICBFcnJvciBjaGVjayBtaXNzaW5nIG9uIHRoZSBjb25zb2xlIGRyaXZlcg0K
ICAgID4gKwlodl9jb25zb2xlX291dHB1dChzdHIsIGxlbik7DQogICAgPiArI2VuZGlmDQogICAg
PiArCXJldHVybiBsZW47DQogICAgPiAgIH0NCiAgICA+ICAgDQogICAgPiAtaW50IHVrcGxhdF9j
aW5rKGNoYXIgKnN0ciwgdW5zaWduZWQgaW50IG1heGxlbikNCiAgICA+ICtpbnQgdWtwbGF0X2Np
bmsoY2hhciAqc3RyIF9fbWF5YmVfdW51c2VkLCB1bnNpZ25lZCBpbnQgbWF4bGVuIF9fbWF5YmVf
dW51c2VkKQ0KICAgID4gICB7DQogICAgPiAtCWludCByZWFkID0gMDsNCiAgICA+IC0JWEVOQ09O
U19SSU5HX0lEWCBjb25zLCBwcm9kOw0KICAgID4gKwlpbnQgcmV0ID0gMDsNCiAgICBpZiB3ZSBk
b24ndCBzdXBwb3J0IEhWX0NPTlNPTEUgc2hvdWxkIHdlIG5vdCByZXBvcnQgYW4gZXJyb3INCiAg
ICAtRU5PVFNVUC4NCg0KVGhpcyBpcyBhY3R1YWxseSBhIGdvb2QgcG9pbnQuIFdlIHNob3VsZCBw
cm9iYWJseSBhZGQgdGhlIHNhbWUgdG8gdGhlIG90aGVyIGZ1bmN0aW9ucyB0b28uDQoNCiAgICA+
ICAgDQogICAgPiAtCWNvbnMgPSBjb25zb2xlX3JpbmctPmluX2NvbnM7DQogICAgPiAtCXByb2Qg
PSBjb25zb2xlX3JpbmctPmluX3Byb2Q7DQogICAgPiAtCXJtYigpOyAvKiBtYWtlIHN1cmUgaW5f
Y29ucywgaW5fcHJvZCBhcmUgcmVhZCBiZWZvcmUgZW5xdWV1aW5nICovDQogICAgPiAtCVVLX0JV
R09OKChwcm9kIC0gY29ucykgPiBzaXplb2YoY29uc29sZV9yaW5nLT5pbikpOw0KICAgID4gLQ0K
ICAgID4gLQl3aGlsZSAoY29ucyAhPSBwcm9kICYmIG1heGxlbiA+IDApIHsNCiAgICA+IC0JCSoo
c3RyICsgcmVhZCkgPSAqKGNvbnNvbGVfcmluZy0+aW4rDQogICAgPiAtCQkJCSAgTUFTS19YRU5D
T05TX0lEWChjb25zLCBjb25zb2xlX3JpbmctPmluKSk7DQogICAgPiAtCQlyZWFkKys7DQogICAg
PiAtCQljb25zKys7DQogICAgPiAtCQltYXhsZW4tLTsNCiAgICA+IC0JfQ0KICAgID4gLQ0KICAg
ID4gLQl3bWIoKTsgLyogZW5zdXJlIGZpbmlzaGVkIG9wZXJhdGlvbiBiZWZvcmUgdXBkYXRpbmcg
aW5fY29ucyAqLw0KICAgID4gLQljb25zb2xlX3JpbmctPmluX2NvbnMgPSBjb25zOw0KICAgID4g
KyNpZiBDT05GSUdfWEVOX0tFUk5FTF9IVl9DT05TT0xFDQogICAgPiArCXJldCA9IGh2X2NvbnNv
bGVfaW5wdXQoc3RyLCBtYXhsZW4pOw0KICAgID4gKyNlbmRpZg0KICAgID4gICANCiAgICA+IC0J
cmV0dXJuIHJlYWQ7DQogICAgPiArCXJldHVybiByZXQ7DQogICAgPiAgIH0NCiAgICA+IGRpZmYg
LS1naXQgYS9wbGF0L3hlbi9lbWdfY29uc29sZS5jIGIvcGxhdC94ZW4vZW1nX2NvbnNvbGUuYw0K
ICAgID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCiAgICA+IGluZGV4IDAwMDAwMDAwLi5lMmU0ZGY2
ZQ0KICAgID4gLS0tIC9kZXYvbnVsbA0KICAgID4gKysrIGIvcGxhdC94ZW4vZW1nX2NvbnNvbGUu
Yw0KICAgID4gQEAgLTAsMCArMSw4NyBAQA0KICAgID4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlm
aWVyOiBCU0QtMy1DbGF1c2UgYW5kIE1JVCAqLw0KICAgID4gKy8qDQogICAgPiArICogQXV0aG9y
czogU2ltb24gS3VlbnplciA8c2ltb24ua3VlbnplckBuZWNsYWIuZXU+DQogICAgPiArICoNCiAg
ICA+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTksIE5FQyBMYWJvcmF0b3JpZXMgRXVyb3BlIEdtYkgs
IE5FQyBDb3Jwb3JhdGlvbi4NCiAgICA+ICsgKiAgICAgICAgICAgICAgICAgICAgIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuDQogICAgPiArICoNCiAgICA+ICsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCiAgICA+ICsgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMNCiAgICA+ICsgKiBhcmUgbWV0Og0KICAgID4gKyAqDQogICAgPiArICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQNCiAgICA+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuDQogICAgPiArICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQNCiAgICA+ICsgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlDQogICAgPiArICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4NCiAgICA+ICsgKiAzLiBOZWl0
aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRz
DQogICAgPiArICogICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20NCiAgICA+ICsgKiAgICB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0KICAgID4gKyAqDQogICAg
PiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiDQogICAgPiArICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQ0KICAg
ID4gKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFDQogICAgPiArICogQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRQ0KICAg
ID4gKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1INCiAgICA+ICsgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRg0KICAgID4gKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUw0KICAgID4gKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElODQogICAgPiArICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkNCiAgICA+ICsgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQ0KICAgID4gKyAqIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLg0KICAgID4gKyAqDQogICAgPiArICogVEhJUyBIRUFERVIgTUFZIE5P
VCBCRSBFWFRSQUNURUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4NCiAgICA+ICsgKi8NCiAgICA+
ICsNCiAgICA+ICsvKg0KICAgID4gKyAqIFNvbWUgb2YgdGhpcyBjb2RlIHdhcyBwb3J0ZWQgZnJv
bSBNaW5pLU9TOg0KICAgID4gKyAqICBjb25zb2xlL3hlbmNvbnNfcmluZy5jIGFuZCBjb25zb2xl
L2NvbnNvbGUuYw0KICAgID4gKyAqLw0KICAgID4gKy8qDQogICAgPiArICoqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioNCiAgICA+ICsgKiAoQykgMjAwNiAtIEdyemVnb3J6IE1pbG9zIC0gQ2FtYnJpZGdlIFVu
aXZlcnNpdHkNCiAgICA+ICsgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgID4gKyAqDQogICAgPiAr
ICogICAgICAgIEZpbGU6IGNvbnNvbGUuaA0KICAgID4gKyAqICAgICAgQXV0aG9yOiBHcnplZ29y
eiBNaWxvcw0KICAgID4gKyAqICAgICBDaGFuZ2VzOg0KICAgID4gKyAqDQogICAgPiArICogICAg
ICAgIERhdGU6IE1hciAyMDA2DQogICAgPiArICoNCiAgICA+ICsgKiBFbnZpcm9ubWVudDogWGVu
IE1pbmltYWwgT1MNCiAgICA+ICsgKiBEZXNjcmlwdGlvbjogQ29uc29sZSBpbnRlcmZhY2UuDQog
ICAgPiArICoNCiAgICA+ICsgKiBIYW5kbGVzIGNvbnNvbGUgSS9PLiBEZWZpbmVzIHByaW50ay4N
CiAgICA+ICsgKg0KICAgID4gKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICAgPiArICogUGVybWlz
c2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0
YWluaW5nIGEgY29weQ0KICAgID4gKyAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQg
ZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0bw0KICAgID4gKyAqIGRlYWwg
aW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxp
bWl0YXRpb24gdGhlDQogICAgPiArICogcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJn
ZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yDQogICAgPiArICogc2Vs
bCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0
aGUgU29mdHdhcmUgaXMNCiAgICA+ICsgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8g
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KICAgID4gKyAqDQogICAgPiArICogVGhlIGFib3Zl
IGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5j
bHVkZWQgaW4NCiAgICA+ICsgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9m
IHRoZSBTb2Z0d2FyZS4NCiAgICA+ICsgKg0KICAgID4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9W
SURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQog
ICAgPiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFksDQogICAgPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFDQog
ICAgPiArICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBD
TEFJTSwgREFNQUdFUyBPUiBPVEhFUg0KICAgID4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBB
TiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HDQogICAgPiAr
ICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhF
IFVTRSBPUiBPVEhFUg0KICAgID4gKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCiAgICA+
ICsgKi8NCiAgICA+ICsNCiAgICA+ICsjaW5jbHVkZSA8dWsvZXNzZW50aWFscy5oPg0KICAgID4g
KyNpbmNsdWRlIDxjb21tb24vaHlwZXJ2aXNvci5oPg0KICAgID4gKw0KICAgID4gK2ludCBlbWdf
Y29uc29sZV9vdXRwdXQoY29uc3QgY2hhciAqc3RyLCB1bnNpZ25lZCBpbnQgbGVuKQ0KICAgID4g
K3sNCiAgICA+ICsJaW50IHJjOw0KICAgID4gKw0KICAgID4gKwlyYyA9IEhZUEVSVklTT1JfY29u
c29sZV9pbyhDT05TT0xFSU9fd3JpdGUsIGxlbiwgREVDT05TVChjaGFyICosIHN0cikpOw0KICAg
ID4gKwlpZiAodW5saWtlbHkocmMgPCAwKSkNCiAgICA+ICsJCXJldHVybiByYzsNCiAgICA+ICsJ
cmV0dXJuIGxlbjsNCiAgICA+ICt9DQogICAgPiBkaWZmIC0tZ2l0IGEvcGxhdC94ZW4vaHZfY29u
c29sZS5jIGIvcGxhdC94ZW4vaHZfY29uc29sZS5jDQogICAgPiBuZXcgZmlsZSBtb2RlIDEwMDY0
NA0KICAgID4gaW5kZXggMDAwMDAwMDAuLjI4Zjg2ZjI1DQogICAgPiAtLS0gL2Rldi9udWxsDQog
ICAgPiArKysgYi9wbGF0L3hlbi9odl9jb25zb2xlLmMNCiAgICA+IEBAIC0wLDAgKzEsMjUyIEBA
DQogICAgPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSBhbmQgTUlU
ICovDQogICAgPiArLyoNCiAgICA+ICsgKiBBdXRob3JzOiBTaW1vbiBLdWVuemVyIDxzaW1vbi5r
dWVuemVyQG5lY2xhYi5ldT4NCiAgICA+ICsgKg0KICAgID4gKyAqIENvcHlyaWdodCAoYykgMjAx
OSwgTkVDIExhYm9yYXRvcmllcyBFdXJvcGUgR21iSCwgTkVDIENvcnBvcmF0aW9uLg0KICAgID4g
KyAqICAgICAgICAgICAgICAgICAgICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAgICA+ICsgKg0K
ICAgID4gKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dA0KICAgID4gKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KICAgID4gKyAqIGFyZSBt
ZXQ6DQogICAgPiArICoNCiAgICA+ICsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KICAgID4gKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCiAg
ICA+ICsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodA0KICAgID4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUNCiAgICA+ICsgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLg0KICAgID4gKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHly
aWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMNCiAgICA+ICsgKiAgICBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQ0KICAgID4gKyAqICAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uDQogICAgPiArICoNCiAgICA+ICsgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIN
CiAgICA+ICsgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFDQogICAgPiArICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UN
CiAgICA+ICsgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFDQogICAgPiArICogTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUg0KICAgID4g
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GDQogICAgPiArICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTDQogICAgPiArICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4NCiAgICA+ICsgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQ0KICAgID4gKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFDQogICAgPiArICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuDQogICAgPiAr
ICoNCiAgICA+ICsgKiBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklF
RCBJTiBBTlkgV0FZLg0KICAgID4gKyAqLw0KICAgID4gKw0KICAgID4gKy8qDQogICAgPiArICog
U29tZSBvZiB0aGlzIGNvZGUgd2FzIHBvcnRlZCBmcm9tIE1pbmktT1M6DQogICAgPiArICogIGNv
bnNvbGUveGVuY29uc19yaW5nLmMgYW5kIGNvbnNvbGUvY29uc29sZS5jDQogICAgPiArICovDQog
ICAgPiArLyoNCiAgICA+ICsgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgID4gKyAqIChDKSAyMDA2
IC0gR3J6ZWdvcnogTWlsb3MgLSBDYW1icmlkZ2UgVW5pdmVyc2l0eQ0KICAgID4gKyAqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqDQogICAgPiArICoNCiAgICA+ICsgKiAgICAgICAgRmlsZTogY29uc29sZS5o
DQogICAgPiArICogICAgICBBdXRob3I6IEdyemVnb3J6IE1pbG9zDQogICAgPiArICogICAgIENo
YW5nZXM6DQogICAgPiArICoNCiAgICA+ICsgKiAgICAgICAgRGF0ZTogTWFyIDIwMDYNCiAgICA+
ICsgKg0KICAgID4gKyAqIEVudmlyb25tZW50OiBYZW4gTWluaW1hbCBPUw0KICAgID4gKyAqIERl
c2NyaXB0aW9uOiBDb25zb2xlIGludGVyZmFjZS4NCiAgICA+ICsgKg0KICAgID4gKyAqIEhhbmRs
ZXMgY29uc29sZSBJL08uIERlZmluZXMgcHJpbnRrLg0KICAgID4gKyAqDQogICAgPiArICoqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioNCiAgICA+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBm
cmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5DQogICAgPiArICog
b2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUg
IlNvZnR3YXJlIiksIHRvDQogICAgPiArICogZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCBy
ZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUNCiAgICA+ICsgKiBy
aWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBz
dWJsaWNlbnNlLCBhbmQvb3INCiAgICA+ICsgKiBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUs
IGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcw0KICAgID4gKyAq
IGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6
DQogICAgPiArICoNCiAgICA+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhp
cyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbg0KICAgID4gKyAqIGFsbCBj
b3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLg0KICAgID4gKyAq
DQogICAgPiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FS
UkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCiAgICA+ICsgKiBJTVBMSUVELCBJTkNMVURJ
TkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwN
CiAgICA+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklO
R0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUNCiAgICA+ICsgKiBBVVRIT1JTIE9SIENPUFlS
SUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSDQog
ICAgPiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9S
VCBPUiBPVEhFUldJU0UsIEFSSVNJTkcNCiAgICA+ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09O
TkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSDQogICAgPiArICog
REVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KICAgID4gKyAqLw0KICAgID4gKw0KICAgID4gKyNp
bmNsdWRlIDxpbnR0eXBlcy5oPg0KICAgID4gKyNpbmNsdWRlIDxzdHJpbmcuaD4NCiAgICA+ICsj
aW5jbHVkZSA8dWsvcGxhdC9jb25zb2xlLmg+DQogICAgPiArI2luY2x1ZGUgPHVrL2FyY2gvbGNw
dS5oPg0KICAgID4gKyNpbmNsdWRlIDx1ay9hc3NlcnQuaD4NCiAgICA+ICsjaW5jbHVkZSA8dWsv
ZXNzZW50aWFscy5oPg0KICAgID4gKyNpbmNsdWRlIDx1ay9jb25maWcuaD4NCiAgICA+ICsNCiAg
ICA+ICsjaW5jbHVkZSA8Y29tbW9uL2h2X2NvbnNvbGUuaD4NCiAgICA+ICsjaW5jbHVkZSA8Y29t
bW9uL2V2ZW50cy5oPg0KICAgID4gKyNpbmNsdWRlIDxjb21tb24vaHlwZXJ2aXNvci5oPg0KICAg
ID4gKyNpbmNsdWRlIDx4ZW4veGVuLmg+DQogICAgPiArDQogICAgPiArI2lmIChkZWZpbmVkIF9f
WDg2XzMyX18pIHx8IChkZWZpbmVkIF9fWDg2XzY0X18pDQogICAgPiArI2luY2x1ZGUgPHhlbi14
ODYvc2V0dXAuaD4NCiAgICA+ICsjaW5jbHVkZSA8eGVuLXg4Ni9tbS5oPg0KICAgID4gKyNpZiBk
ZWZpbmVkIF9fWDg2XzMyX18NCiAgICA+ICsjaW5jbHVkZSA8eGVuLXg4Ni9oeXBlcmNhbGwzMi5o
Pg0KICAgID4gKyNlbGlmIGRlZmluZWQgX19YODZfNjRfXw0KICAgID4gKyNpbmNsdWRlIDx4ZW4t
eDg2L2h5cGVyY2FsbDY0Lmg+DQogICAgPiArI2VuZGlmDQogICAgPiArI2VsaWYgKGRlZmluZWQg
X19BUk1fMzJfXykgfHwgKGRlZmluZWQgX19BUk1fNjRfXykNCiAgICA+ICsjaW5jbHVkZSA8eGVu
LWFybS9tbS5oPg0KICAgID4gKyNpbmNsdWRlIDx4ZW4tYXJtL2h5cGVyY2FsbC5oPg0KICAgID4g
KyNlbmRpZg0KICAgID4gKyNpbmNsdWRlIDx4ZW4vaW8vY29uc29sZS5oPg0KICAgID4gKyNpbmNs
dWRlIDx4ZW4vaW8vcHJvdG9jb2xzLmg+DQogICAgPiArI2luY2x1ZGUgPHhlbi9pby9yaW5nLmg+
DQogICAgPiArI2lmbmRlZiBDT05GSUdfUEFSQVZJUlQNCiAgICA+ICsjaW5jbHVkZSA8eGVuL2h2
bS9wYXJhbXMuaD4NCiAgICA+ICsjZW5kaWYNCiAgICA+ICsNCiAgICA+ICtzdGF0aWMgc3RydWN0
IHhlbmNvbnNfaW50ZXJmYWNlICpjb25zb2xlX3Jpbmc7DQogICAgPiArc3RhdGljIHVpbnQzMl90
IGNvbnNvbGVfZXZ0Y2huOw0KICAgID4gK3N0YXRpYyBpbnQgY29uc29sZV9yZWFkeTsNCiAgICA+
ICsNCiAgICA+ICsjaWZkZWYgQ09ORklHX1BBUkFWSVJUDQogICAgPiArdm9pZCBodl9jb25zb2xl
X3ByZXBhcmUodm9pZCkNCiAgICA+ICt7DQogICAgPiArCWNvbnNvbGVfcmluZyA9IG1mbl90b192
aXJ0KEhZUEVSVklTT1Jfc3RhcnRfaW5mby0+Y29uc29sZS5kb21VLm1mbik7DQogICAgPiArCWNv
bnNvbGVfZXZ0Y2huID0gSFlQRVJWSVNPUl9zdGFydF9pbmZvLT5jb25zb2xlLmRvbVUuZXZ0Y2hu
Ow0KICAgID4gK30NCiAgICA+ICsjZWxzZQ0KICAgID4gK3ZvaWQgaHZfY29uc29sZV9wcmVwYXJl
KHZvaWQpDQogICAgPiArew0KICAgID4gKwkvKiBOT1QgSU1QTEVNRU5URUQgWUVUICovDQogICAg
PiArfQ0KICAgID4gKyNlbmRpZg0KICAgID4gKw0KICAgID4gKy8qDQogICAgPiArICogaHZfY29u
c29sZV9vdXRwdXQgb3BlcmF0ZXMgaW4gdHdvIG1vZGVzOiBidWZmZXJlZCBhbmQgaW5pdGlhbGl6
ZWQuDQogICAgPiArICogVGhlIGJ1ZmZlcmVkIG1vZGUgaXMgYXV0b21hdGljYWxseSBhY3RpdmF0
ZWQgYWZ0ZXINCiAgICA+ICsgKiBfbGlieGVucGxhdF9wcmVwYXJlX2NvbnNvbGUoKSB3YXMgY2Fs
bGVkIGFuZCB3ZSBrbm93IHdoZXJlIHRoZSBjb25zb2xlIHJpbmcNCiAgICA+ICsgKiBpcy4gVGhl
IG91dHB1dCBzdHJpbmcgaXMgcHV0IHRvIHRoZSBjb25zb2xlIHJpbmcgdW50aWwgdGhlIHJpbmcg
aXMgZnVsbC4gQW55DQogICAgPiArICogZnVydGhlciBjaGFyYWN0ZXJzIGFyZSBkaXNjYXJkZWQu
IFNpbmNlIHRoZSBldmVudCBjaGFubmVsIGlzIG5vdCBpbml0aWFsaXplZA0KICAgID4gKyAqIHll
dCwgdGhlIGJhY2tlbmQgaXMgbm90IG5vdGlmaWVkLiBUaGlzIG1vZGUgaXMgaW50cm9kdWNlZCB0
byBzdXBwb3J0IGVhcmx5DQogICAgPiArICogcHJpbnRpbmcsIGV2ZW4gYmVmb3JlIGV2ZW50cyBh
cmUgbm90IGluaXRpYWxpemVkLg0KICAgID4gKyAqIF9saWJ4ZW5wbGF0X2luaXRfY29uc29sZSgp
IGZpbmFsaXplcyB0aGUgaW5pdGlhbGl6YXRpb24gYW5kIGVuYWJsZXMNCiAgICA+ICsgKiB0aGUg
ZXZlbnQgY2hhbm5lbC4gRnJvbSBub3cgb24sIHRoZSBjb25zb2xlIGJhY2tlbmQgaXMgbm90aWZp
ZWQgd2hlbmV2ZXINCiAgICA+ICsgKiB3ZSBwdXQgY2hhcmFjdGVycyBvbiB0aGUgY29uc29sZSBy
aW5nLiBXaGVuZXZlciB0aGlzIHJpbmcgaXMgZnVsbCBhbmQgdGhlcmUNCiAgICA+ICsgKiBhcmUg
c3RpbGwgY2hhcmFjdGVycyB0aGF0IHNob3VsZCBiZSBwcmludGVkLCB3ZSBhcmUgZW50ZXJpbmcg
YSBidXN5IGxvb3AgYW5kDQogICAgPiArICogd2FpdCBmb3IgdGhlIGJhY2tlbmQgdG8gbWFrZSB1
cyBzcGFjZSBhZ2Fpbi4gT2YgY291cnNlIHRoaXMgaXMgc2xvdzogZG8gbm90DQogICAgPiArICog
cHJpbnQgc28gbXVjaCEgOy0pDQogICAgPiArICovDQogICAgPiAraW50IGh2X2NvbnNvbGVfb3V0
cHV0KGNvbnN0IGNoYXIgKnN0ciwgdW5zaWduZWQgaW50IGxlbikNCiAgICA+ICt7DQogICAgPiAr
CXVuc2lnbmVkIGludCBzZW50ID0gMDsNCiAgICA+ICsJWEVOQ09OU19SSU5HX0lEWCBjb25zLCBw
cm9kOw0KICAgID4gKw0KICAgID4gKwlpZiAodW5saWtlbHkoIWNvbnNvbGVfcmluZykpDQogICAg
PiArCQlyZXR1cm4gc2VudDsNCiAgICA+ICsNCiAgICA+ICtyZXRyeToNCiAgICA+ICsJY29ucyA9
IGNvbnNvbGVfcmluZy0+b3V0X2NvbnM7DQogICAgPiArCXByb2QgPSBjb25zb2xlX3JpbmctPm91
dF9wcm9kOw0KICAgID4gKw0KICAgID4gKwltYigpOyAvKiBtYWtlIHN1cmUgd2UgaGF2ZSBjb25z
ICYgcHJvZCBiZWZvcmUgdG91Y2hpbmcgdGhlIHJpbmcgKi8NCiAgICA+ICsJVUtfQlVHT04oKHBy
b2QgLSBjb25zKSA+IHNpemVvZihjb25zb2xlX3JpbmctPm91dCkpOw0KICAgID4gKw0KICAgID4g
Kwl3aGlsZSAoKHNlbnQgPCBsZW4pICYmICgocHJvZCAtIGNvbnMpIDwgc2l6ZW9mKGNvbnNvbGVf
cmluZy0+b3V0KSkpIHsNCiAgICA+ICsJCWlmIChzdHJbc2VudF0gPT0gJ1xuJykgew0KICAgID4g
KwkJCS8qIHByZXBlbmQgJ1xyJyBmb3IgY29udmVydGluZyAnXG4nIHRvICdccicnXG4nICovDQog
ICAgPiArCQkJaWYgKChwcm9kICsgMSAtIGNvbnMpID49IHNpemVvZihjb25zb2xlX3JpbmctPm91
dCkpDQogICAgPiArCQkJCWJyZWFrOyAvKiBub3QgZW5vdWdoIHNwYWNlIGZvciAnXHInIGFuZCAn
XG4nISAqLw0KICAgID4gKw0KICAgID4gKwkJCWNvbnNvbGVfcmluZy0+b3V0W01BU0tfWEVOQ09O
U19JRFgocHJvZCsrLA0KICAgID4gKwkJCQkJCQkgICBjb25zb2xlX3JpbmctPm91dCldID0NCiAg
ICA+ICsJCQkJJ1xyJzsNCiAgICA+ICsJCX0NCiAgICA+ICsNCiAgICA+ICsJCWNvbnNvbGVfcmlu
Zy0+b3V0W01BU0tfWEVOQ09OU19JRFgocHJvZCsrLCBjb25zb2xlX3JpbmctPm91dCldID0NCiAg
ICA+ICsJCQlzdHJbc2VudF07DQogICAgPiArCQlzZW50Kys7DQogICAgPiArCX0NCiAgICA+ICsJ
d21iKCk7IC8qIGVuc3VyZSBjaGFyYWN0ZXJzIGFyZSB3cml0dGVuIGJlZm9yZSBpbmNyZWFzaW5n
IG91dF9wcm9kICovDQogICAgPiArCWNvbnNvbGVfcmluZy0+b3V0X3Byb2QgPSBwcm9kOw0KICAg
ID4gKw0KICAgID4gKwkvKiBJcyB0aGUgY29uc29sZSBmdWxseSBpbml0aWFsaXplZD8NCiAgICA+
ICsJICogQXJlIHdlIGFibGUgdG8gbm90aWZ5IHRoZSBiYWNrZW5kPw0KICAgID4gKwkgKi8NCiAg
ICA+ICsJaWYgKGxpa2VseShjb25zb2xlX3JlYWR5ICYmIGNvbnNvbGVfZXZ0Y2huKSkgew0KICAg
ID4gKwkJbm90aWZ5X3JlbW90ZV92aWFfZXZ0Y2huKGNvbnNvbGVfZXZ0Y2huKTsNCiAgICA+ICsN
CiAgICA+ICsJCS8qIFRoZXJlIGFyZSBzdGlsbCBieXRlcyBsZWZ0IHRvIHNlbmQgb3V0PyBJZiB5
ZXMsIGRvIG5vdA0KICAgID4gKwkJICogZGlzY2FyZCB0aGVtLCByZXRyeSBzZW5kaW5nIChlbnRl
cnMgYnVzeSB3YWl0aW5nKQ0KICAgID4gKwkJICovDQogICAgPiArCQlpZiAoc2VudCA8IGxlbikN
CiAgICA+ICsJCQlnb3RvIHJldHJ5Ow0KICAgID4gKwl9DQogICAgPiArCXJldHVybiBzZW50Ow0K
ICAgID4gK30NCiAgICA+ICsNCiAgICA+ICt2b2lkIGh2X2NvbnNvbGVfZmx1c2godm9pZCkNCiAg
ICA+ICt7DQogICAgPiArCXN0cnVjdCB4ZW5jb25zX2ludGVyZmFjZSAqaW50ZjsNCiAgICA+ICsN
CiAgICA+ICsJaWYgKCFjb25zb2xlX3JlYWR5KQ0KICAgID4gKwkJcmV0dXJuOw0KICAgID4gKw0K
ICAgID4gKwlpbnRmID0gY29uc29sZV9yaW5nOw0KICAgID4gKwlpZiAodW5saWtlbHkoIWludGYp
KQ0KICAgID4gKwkJcmV0dXJuOw0KICAgID4gKw0KICAgID4gKwl3aGlsZSAoaW50Zi0+b3V0X2Nv
bnMgPCBpbnRmLT5vdXRfcHJvZCkNCiAgICA+ICsJCWJhcnJpZXIoKTsNCiAgICA+ICt9DQogICAg
PiArDQogICAgPiAraW50IGh2X2NvbnNvbGVfaW5wdXQoY2hhciAqc3RyLCB1bnNpZ25lZCBpbnQg
bWF4bGVuKQ0KICAgID4gK3sNCiAgICA+ICsJaW50IHJlYWQgPSAwOw0KICAgID4gKwlYRU5DT05T
X1JJTkdfSURYIGNvbnMsIHByb2Q7DQogICAgPiArDQogICAgPiArCWNvbnMgPSBjb25zb2xlX3Jp
bmctPmluX2NvbnM7DQogICAgPiArCXByb2QgPSBjb25zb2xlX3JpbmctPmluX3Byb2Q7DQogICAg
PiArCXJtYigpOyAvKiBtYWtlIHN1cmUgaW5fY29ucywgaW5fcHJvZCBhcmUgcmVhZCBiZWZvcmUg
ZW5xdWV1aW5nICovDQogICAgPiArCVVLX0JVR09OKChwcm9kIC0gY29ucykgPiBzaXplb2YoY29u
c29sZV9yaW5nLT5pbikpOw0KICAgID4gKw0KICAgID4gKwl3aGlsZSAoY29ucyAhPSBwcm9kICYm
IG1heGxlbiA+IDApIHsNCiAgICA+ICsJCSooc3RyICsgcmVhZCkgPSAqKGNvbnNvbGVfcmluZy0+
aW4rDQogICAgPiArCQkJCSAgTUFTS19YRU5DT05TX0lEWChjb25zLCBjb25zb2xlX3JpbmctPmlu
KSk7DQogICAgPiArCQlyZWFkKys7DQogICAgPiArCQljb25zKys7DQogICAgPiArCQltYXhsZW4t
LTsNCiAgICA+ICsJfQ0KICAgID4gKw0KICAgID4gKwl3bWIoKTsgLyogZW5zdXJlIGZpbmlzaGVk
IG9wZXJhdGlvbiBiZWZvcmUgdXBkYXRpbmcgaW5fY29ucyAqLw0KICAgID4gKwljb25zb2xlX3Jp
bmctPmluX2NvbnMgPSBjb25zOw0KICAgID4gKw0KICAgID4gKwlyZXR1cm4gcmVhZDsNCiAgICA+
ICt9DQogICAgPiArDQogICAgPiArc3RhdGljIHZvaWQgaHZfY29uc29sZV9ldmVudChldnRjaG5f
cG9ydF90IHBvcnQgX191bnVzZWQsDQogICAgPiArCQkJICAgICBzdHJ1Y3QgX19yZWdzICpyZWdz
IF9fdW51c2VkLA0KICAgID4gKwkJCSAgICAgdm9pZCAqZGF0YSBfX3VudXNlZCkNCiAgICA+ICt7
DQogICAgPiArCS8qIE5PVCBJTVBMRU1FTlRFRCBZRVQgKi8NCiAgICA+ICt9DQogICAgPiArDQog
ICAgPiArdm9pZCBodl9jb25zb2xlX2luaXQodm9pZCkNCiAgICA+ICt7DQogICAgPiArCWludCBl
cnI7DQogICAgPiArDQogICAgPiArCVVLX0FTU0VSVChjb25zb2xlX3JpbmcgIT0gTlVMTCk7DQog
ICAgPiArDQogICAgPiArCXVrX3ByX2RlYnVnKCJodl9jb25zb2xlIEAgJXAgKGV2dGNobjogJSJQ
Ukl1MzIiKVxuIiwNCiAgICA+ICsJCSAgICBjb25zb2xlX3JpbmcsIGNvbnNvbGVfZXZ0Y2huKTsN
CiAgICA+ICsNCiAgICA+ICsJZXJyID0gYmluZF9ldnRjaG4oY29uc29sZV9ldnRjaG4sIGh2X2Nv
bnNvbGVfZXZlbnQsIE5VTEwpOw0KICAgID4gKwlpZiAoZXJyIDw9IDApDQogICAgPiArCQlVS19D
UkFTSCgiRmFpbGVkIHRvIGJpbmQgZXZlbnQgY2hhbm5lbCBmb3IgaHZfY29uc29sZTogJWlcbiIs
DQogICAgPiArCQkJIGVycik7DQogICAgPiArCXVubWFza19ldnRjaG4oY29uc29sZV9ldnRjaG4p
Ow0KICAgID4gKw0KICAgID4gKwljb25zb2xlX3JlYWR5ID0gMTsgLyogZW5hYmxlIG5vdGlmaWNh
dGlvbiBvZiBiYWNrZW5kICovDQogICAgPiArCS8qIGZsdXNoIHF1ZXVlZCBvdXRwdXQgKi8NCiAg
ICA+ICsJbm90aWZ5X3JlbW90ZV92aWFfZXZ0Y2huKGNvbnNvbGVfZXZ0Y2huKTsNCiAgICA+ICt9
DQogICAgPiBkaWZmIC0tZ2l0IGEvcGxhdC94ZW4vaW5jbHVkZS9jb21tb24vY29uc29sZS5oIGIv
cGxhdC94ZW4vaW5jbHVkZS9jb21tb24vY29uc29sZS5oDQogICAgPiBpbmRleCBiNGYxYjUxZS4u
MjNjNmIzMmUgMTAwNjQ0DQogICAgPiAtLS0gYS9wbGF0L3hlbi9pbmNsdWRlL2NvbW1vbi9jb25z
b2xlLmgNCiAgICA+ICsrKyBiL3BsYXQveGVuL2luY2x1ZGUvY29tbW9uL2NvbnNvbGUuaA0KICAg
ID4gQEAgLTIsNyArMiw4IEBADQogICAgPiAgIC8qDQogICAgPiAgICAqIEF1dGhvcnM6IFNpbW9u
IEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1Pg0KICAgID4gICAgKg0KICAgID4gLSAq
IENvcHlyaWdodCAoYykgMjAxNywgTkVDIEV1cm9wZSBMdGQuLCBORUMgQ29ycG9yYXRpb24uIEFs
bCByaWdodHMgcmVzZXJ2ZWQuDQogICAgPiArICogQ29weXJpZ2h0IChjKSAyMDE5LCBORUMgTGFi
b3JhdG9yaWVzIEV1cm9wZSBHbWJILCBORUMgQ29ycG9yYXRpb24uDQogICAgPiArICogICAgICAg
ICAgICAgICAgICAgICBBbGwgcmlnaHRzIHJlc2VydmVkLg0KICAgID4gICAgKg0KICAgID4gICAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQNCiAgICA+ICAgICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zDQogICAgPiBAQCAtMzgsMTQgKzM5LDE0
IEBADQogICAgPiAgIC8qIGtlZXBzIGJ1ZmZlcmluZyBjb25zb2xlIG1lc3NhZ2UNCiAgICA+ICAg
ICogKG9uIFBWOiBzdGFydF9pbmZvIG5lZWQgdG8gYmUgbG9hZGVkKQ0KICAgID4gICAgKi8NCiAg
ICA+IC12b2lkIF9saWJ4ZW5wbGF0X3ByZXBhcmVfY29uc29sZSh2b2lkKTsNCiAgICA+ICt2b2lk
IHByZXBhcmVfY29uc29sZSh2b2lkKTsNCiAgICA+ICAgDQogICAgPiAgIC8qIGluaXRpYWxpemVz
IHRoZSBjb25zb2xlLCBzZW5kcyBvdXQgYnVmZmVyZWQgbWVzc2FnZXMNCiAgICA+ICAgICogKGV2
ZW50IHN5c3RlbSBoYXMgdG8gYmUgaW5pdGlhbGl6ZWQpDQogICAgPiAgICAqLw0KICAgID4gLXZv
aWQgX2xpYnhlbnBsYXRfaW5pdF9jb25zb2xlKHZvaWQpOw0KICAgID4gK3ZvaWQgaW5pdF9jb25z
b2xlKHZvaWQpOw0KICAgID4gICANCiAgICA+ICAgDQogICAgPiAtdm9pZCBodmNvbnNvbGVfZmx1
c2godm9pZCk7DQogICAgPiArdm9pZCBmbHVzaF9jb25zb2xlKHZvaWQpOw0KICAgID4gICANCiAg
ICA+ICAgI2VuZGlmIC8qIF9fQ09OU09MRV9IX18gKi8NCiAgICA+IGRpZmYgLS1naXQgYS9wbGF0
L3hlbi9pbmNsdWRlL2NvbW1vbi9lbWdfY29uc29sZS5oIGIvcGxhdC94ZW4vaW5jbHVkZS9jb21t
b24vZW1nX2NvbnNvbGUuaA0KICAgID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCiAgICA+IGluZGV4
IDAwMDAwMDAwLi5iOTMwOTMyMQ0KICAgID4gLS0tIC9kZXYvbnVsbA0KICAgID4gKysrIGIvcGxh
dC94ZW4vaW5jbHVkZS9jb21tb24vZW1nX2NvbnNvbGUuaA0KICAgID4gQEAgLTAsMCArMSw0NSBA
QA0KICAgID4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8NCiAg
ICA+ICsvKg0KICAgID4gKyAqIEF1dGhvcnM6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJA
bmVjbGFiLmV1Pg0KICAgID4gKyAqDQogICAgPiArICogQ29weXJpZ2h0IChjKSAyMDE5LCBORUMg
TGFib3JhdG9yaWVzIEV1cm9wZSBHbWJILCBORUMgQ29ycG9yYXRpb24uDQogICAgPiArICogICAg
ICAgICAgICAgICAgICAgICBBbGwgcmlnaHRzIHJlc2VydmVkLg0KICAgID4gKyAqDQogICAgPiAr
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0DQogICAgPiArICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zDQogICAgPiArICogYXJlIG1ldDoNCiAg
ICA+ICsgKg0KICAgID4gKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQogICAgPiArICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KICAgID4gKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0DQogICAgPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQ0KICAgID4gKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uDQogICAgPiArICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhv
bGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cw0KICAgID4gKyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tDQogICAg
PiArICogICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4NCiAgICA+ICsgKg0KICAgID4gKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIg0KICAgID4g
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUNCiAgICA+ICsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQ0KICAgID4g
KyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERF
UiBPUiBDT05UUklCVVRPUlMgQkUNCiAgICA+ICsgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SDQogICAgPiArICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YNCiAgICA+ICsgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MNCiAgICA+ICsgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTg0KICAgID4gKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpDQogICAgPiArICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUNCiAgICA+ICsgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4NCiAgICA+ICsgKg0KICAg
ID4gKyAqIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFO
WSBXQVkuDQogICAgPiArICovDQogICAgPiArDQogICAgPiArI2lmbmRlZiBfX1hFTl9FTUdDT05T
T0xFX0hfXw0KICAgID4gKyNkZWZpbmUgX19YRU5fRU1HQ09OU09MRV9IX18NCiAgICA+ICsNCiAg
ICA+ICsvKg0KICAgID4gKyAqIE5PVEU6IERvIG5vdCB1c2UgdGhlc2UgZnVuY3Rpb25zIGRpcmVj
dGx5LiBUaGV5IGFyZSBmb3IgaW50ZXJuYWwgdXNlLg0KICAgID4gKyAqICAgICAgIFVzZSBkZWZp
bnRpb25zIGluIGNvbnNvbGUuaCBpbnN0ZWFkLg0KICAgIHMvZGVmaW50aW9ucy9kZWZpbml0aW9u
cw0KICAgIA0KICAgIEkgcHJlZmVyIHRvIHJlcG9ydCBhbiBjb21waWxlciBlcnJvciB1c2luZyAj
ZXJyb3IgaWYgdGhlIHVzZXIgd2VyZSB0byANCiAgICBpbmNsdWRlIHRoZSBmaWxlIGRpcmVjdGx5
IHJhdGhlciB0aGFuIGEgbm90ZS4NCg0KT2theSwgdGhpcyBpcyBmaW5lIHdpdGggbWUuIExldCdz
IGFsc28gbW92ZSBodl9jb25zb2xlLmggYW5kIGVtZ19jb25zb2xlLmggdG8gdGhlIGRpcmVjdG9y
eSB3aGVyZSB0aGUgZG90LWMgZmlsZXMgYXJlLiBUaGlzIHNob3VsZCBtaW5pbWl6ZSB0aGUgY29u
ZnVzaW9uLg0KICAgIA0KICAgID4gKyAqLw0KICAgID4gK2ludCBlbWdfY29uc29sZV9vdXRwdXQo
Y29uc3QgY2hhciAqc3RyLCB1bnNpZ25lZCBpbnQgbGVuKTsNCiAgICA+ICsNCiAgICA+ICsjZW5k
aWYgLyogX19YRU5fRU1HQ09OU09MRV9IX18gKi8NCiAgICA+IGRpZmYgLS1naXQgYS9wbGF0L3hl
bi9pbmNsdWRlL2NvbW1vbi9odl9jb25zb2xlLmggYi9wbGF0L3hlbi9pbmNsdWRlL2NvbW1vbi9o
dl9jb25zb2xlLmgNCiAgICA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQogICAgPiBpbmRleCAwMDAw
MDAwMC4uMTBkZTkyNzENCiAgICA+IC0tLSAvZGV2L251bGwNCiAgICA+ICsrKyBiL3BsYXQveGVu
L2luY2x1ZGUvY29tbW9uL2h2X2NvbnNvbGUuaA0KICAgID4gQEAgLTAsMCArMSw0OSBAQA0KICAg
ID4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8NCiAgICA+ICsv
Kg0KICAgID4gKyAqIEF1dGhvcnM6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFi
LmV1Pg0KICAgID4gKyAqDQogICAgPiArICogQ29weXJpZ2h0IChjKSAyMDE5LCBORUMgTGFib3Jh
dG9yaWVzIEV1cm9wZSBHbWJILCBORUMgQ29ycG9yYXRpb24uDQogICAgPiArICogICAgICAgICAg
ICAgICAgICAgICBBbGwgcmlnaHRzIHJlc2VydmVkLg0KICAgID4gKyAqDQogICAgPiArICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0DQogICAgPiArICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zDQogICAgPiArICogYXJlIG1ldDoNCiAgICA+ICsg
Kg0KICAgID4gKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0DQogICAgPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KICAgID4gKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0DQogICAgPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQ0KICAgID4gKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
DQogICAgPiArICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBu
b3IgdGhlIG5hbWVzIG9mIGl0cw0KICAgID4gKyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tDQogICAgPiArICog
ICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4NCiAgICA+ICsgKg0KICAgID4gKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIg0KICAgID4gKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUNCiAgICA+ICsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQ0KICAgID4gKyAqIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBD
T05UUklCVVRPUlMgQkUNCiAgICA+ICsgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SDQogICAgPiArICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YNCiAgICA+ICsgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MNCiAgICA+ICsgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTg0K
ICAgID4gKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpDQogICAgPiArICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUNCiAg
ICA+ICsgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4NCiAgICA+ICsgKg0KICAgID4gKyAq
IFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVku
DQogICAgPiArICovDQogICAgPiArDQogICAgPiArI2lmbmRlZiBfX1hFTl9IVkNPTlNPTEVfSF9f
DQogICAgPiArI2RlZmluZSBfX1hFTl9IVkNPTlNPTEVfSF9fDQogICAgPiArDQogICAgPiArLyoN
CiAgICA+ICsgKiBOT1RFOiBEbyBub3QgdXNlIHRoZXNlIGZ1bmN0aW9ucyBkaXJlY3RseS4gVGhl
eSBhcmUgZm9yIGludGVybmFsIHVzZS4NCiAgICA+ICsgKiAgICAgICBVc2UgZGVmaW50aW9ucyBp
biBjb25zb2xlLmggaW5zdGVhZC4NCiAgICBzL2RlZmludGlvbnMvZGVmaW5pdGlvbnMNCiAgICBJ
IHByZWZlciB0byByZXBvcnQgYW4gY29tcGlsZXIgZXJyb3IgdXNpbmcgI2Vycm9yIGlmIHRoZSB1
c2VyIHdlcmUgdG8gDQogICAgaW5jbHVkZSB0aGUgZmlsZSBkaXJlY3RseSByYXRoZXIgdGhhbiBh
IG5vdGUuDQogICAgDQogICAgPiArICovDQogICAgPiArdm9pZCBodl9jb25zb2xlX3ByZXBhcmUo
dm9pZCk7DQogICAgPiArdm9pZCBodl9jb25zb2xlX2luaXQodm9pZCk7DQogICAgPiAraW50IGh2
X2NvbnNvbGVfb3V0cHV0KGNvbnN0IGNoYXIgKnN0ciwgdW5zaWduZWQgaW50IGxlbik7DQogICAg
PiArdm9pZCBodl9jb25zb2xlX2ZsdXNoKHZvaWQpOw0KICAgID4gK2ludCBodl9jb25zb2xlX2lu
cHV0KGNoYXIgKnN0ciwgdW5zaWduZWQgaW50IG1heGxlbik7DQogICAgPiArDQogICAgPiArI2Vu
ZGlmIC8qIF9fWEVOX0hWQ09OU09MRV9IX18gKi8NCiAgICA+IGRpZmYgLS1naXQgYS9wbGF0L3hl
bi9zaHV0ZG93bi5jIGIvcGxhdC94ZW4vc2h1dGRvd24uYw0KICAgID4gaW5kZXggMjcyZWNlNDcu
LmM3YmYxMmQ3IDEwMDY0NA0KICAgID4gLS0tIGEvcGxhdC94ZW4vc2h1dGRvd24uYw0KICAgID4g
KysrIGIvcGxhdC94ZW4vc2h1dGRvd24uYw0KICAgID4gQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCB1
a3BsYXRfdGVybWluYXRlKGVudW0gdWtwbGF0X2dzdGF0ZSByZXF1ZXN0KQ0KICAgID4gICAJCWJy
ZWFrOw0KICAgID4gICAJfQ0KICAgID4gICANCiAgICA+IC0JaHZjb25zb2xlX2ZsdXNoKCk7DQog
ICAgPiArCWZsdXNoX2NvbnNvbGUoKTsNCiAgICA+ICAgDQogICAgPiAgIAlmb3IgKDs7KSB7DQog
ICAgPiAgIAkJc3RydWN0IHNjaGVkX3NodXRkb3duIHNjaGVkX3NodXRkb3duID0geyAucmVhc29u
ID0gcmVhc29uIH07DQogICAgPiBkaWZmIC0tZ2l0IGEvcGxhdC94ZW4veDg2L3NldHVwLmMgYi9w
bGF0L3hlbi94ODYvc2V0dXAuYw0KICAgID4gaW5kZXggNjBhOWY5ZTYuLjNjNTYzMWQzIDEwMDY0
NA0KICAgID4gLS0tIGEvcGxhdC94ZW4veDg2L3NldHVwLmMNCiAgICA+ICsrKyBiL3BsYXQveGVu
L3g4Ni9zZXR1cC5jDQogICAgPiBAQCAtMTczLDcgKzE3Myw3IEBAIHZvaWQgX2xpYnhlbnBsYXRf
eDg2ZW50cnkodm9pZCAqc3RhcnRfaW5mbykNCiAgICA+ICAgCV9pbml0X3RyYXBzKCk7DQogICAg
PiAgIAlfaW5pdF9jcHVmZWF0dXJlcygpOw0KICAgID4gICAJSFlQRVJWSVNPUl9zdGFydF9pbmZv
ID0gKHN0YXJ0X2luZm9fdCAqKXN0YXJ0X2luZm87DQogICAgPiAtCV9saWJ4ZW5wbGF0X3ByZXBh
cmVfY29uc29sZSgpOyAvKiBlbmFibGVzIGJ1ZmZlcmluZyBmb3IgY29uc29sZSAqLw0KICAgID4g
KwlwcmVwYXJlX2NvbnNvbGUoKTsgLyogZW5hYmxlcyBidWZmZXJpbmcgZm9yIGNvbnNvbGUgKi8N
CiAgICA+ICAgDQogICAgPiAgIAl1a19wcl9pbmZvKCJFbnRlcmluZyBmcm9tIFhlbiAoeDg2LCBQ
VikuLi5cbiIpOw0KICAgID4gICANCiAgICA+IEBAIC0xOTEsNyArMTkxLDcgQEAgdm9pZCBfbGli
eGVucGxhdF94ODZlbnRyeSh2b2lkICpzdGFydF9pbmZvKQ0KICAgID4gICANCiAgICA+ICAgCV9p
bml0X21lbSgpOw0KICAgID4gICANCiAgICA+IC0JX2xpYnhlbnBsYXRfaW5pdF9jb25zb2xlKCk7
DQogICAgPiArCWluaXRfY29uc29sZSgpOw0KICAgID4gICANCiAgICA+ICAgCXVrcGxhdF9lbnRy
eV9hcmdwKENPTkZJR19VS19OQU1FLCBjbWRsaW5lLCBNQVhfQ01ETElORV9TSVpFKTsNCiAgICA+
ICAgfQ0KICAgID4gDQogICAgDQoNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3Rz
LnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0
aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Feb 13 10:49:07 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 13 Feb 2019 10:49:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gts6D-00005p-P9; Wed, 13 Feb 2019 10:49:05 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=41kN=QU=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1gts6D-00005k-3T
 for minios-devel@lists.xen.org; Wed, 13 Feb 2019 10:49:05 +0000
X-Inumbo-ID: f87d8fe5-2f7c-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id f87d8fe5-2f7c-11e9-bc90-bc764e045a96;
 Wed, 13 Feb 2019 10:49:01 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id F1936104E05;
 Wed, 13 Feb 2019 11:48:59 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id DiTng69vd8af; Wed, 13 Feb 2019 11:48:59 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id CC14F104DD9
 for <minios-devel@lists.xen.org>; Wed, 13 Feb 2019 11:48:57 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 13 Feb 2019 11:48:57
 +0100
To: Simon Kuenzer <simon.kuenzer@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190212170749.7143-1-simon.kuenzer@neclab.eu>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <ad550be8-5fab-fdd1-a0ec-7ca376b9df2b@neclab.eu>
Date: Wed, 13 Feb 2019 11:48:57 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190212170749.7143-1-simon.kuenzer@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH] lib/ukdebug: Align hexdump with
 print system
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: yuri.volchkov@neclab.eu
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gU2ltb24sCgpUaGlzIHBhdGNoIHNlZW1zIGZpbmUuClJldmlld2VkLWJ5OiBTaGFyYW4g
U2FudGhhbmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xhYi5ldT4KClRoYW5rcyAmIFJlZ2FyZHMK
U2hhcmFuCgpPbiAyLzEyLzE5IDY6MDcgUE0sIFNpbW9uIEt1ZW56ZXIgd3JvdGU6Cj4gV2l0aCB0
aGUgcmVjZW50IHVwZGF0ZSBvZiB0aGUgcHJpbnQgc3lzdGVtLCB0aGUgaGV4ZHVtcCBmdW5jdGlv
bmFsaXR5Cj4gd2FzIG5vdCBhZG9wdGVkLiBUaGlzIG1hZGUgdGhpcyBmdW5jdGlvbmFsaXR5IHVz
ZWxlc3MuIFdpdGggdGhpcwo+IGNvbW1pdCBoZXhkdW1wIGlzIGFsaWduIHdpdGggdGhlIHByaW50
aW5nIGFnYWluIHN5c3RlbS4gRm9yIGluc3RhbmNlLAo+IHVrX2hleGR1bXBkKCkgaXMgb25seSBl
bmFibGVkIGluIHRoZSBjb2RlIHdoZW4gZWl0aGVyIFVLX0RFQlVHIGlzCj4gZGVmaW5lZCBmb3Ig
dGhlIGNvbXBpbGF0aW9uIHVuaXQgb3IgZGVidWcgbWVzc2FnZXMgYXJlIGVuYWJsZWQKPiBnbG9i
YWxseS4gdWtfaGV4ZHVtcGsoKSBkZXBlbmRzIG9uIGhhdmluZyBrZXJuZWwgY29uc29sZSBlbmFi
bGVkIGFuZAo+IG9uIHRoZSBjb25maWd1cmVkIG1heGltdW0gbWVzc2FnZSBsZXZlbC4KPiAKPiBT
aWduZWQtb2ZmLWJ5OiBTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4KPiAt
LS0KPiAgIGxpYi91a2RlYnVnL2V4cG9ydHN5bXMudWsgICAgICAgIHwgIDMgKystCj4gICBsaWIv
dWtkZWJ1Zy9oZXhkdW1wLmMgICAgICAgICAgICB8IDQ0ICsrKysrKysrKysrKysrKysrKysrKy0t
LS0tLS0tLS0tLS0tLS0KPiAgIGxpYi91a2RlYnVnL2luY2x1ZGUvdWsvaGV4ZHVtcC5oIHwgNDcg
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQo+ICAgMyBmaWxlcyBjaGFu
Z2VkLCA2NCBpbnNlcnRpb25zKCspLCAzMCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEv
bGliL3VrZGVidWcvZXhwb3J0c3ltcy51ayBiL2xpYi91a2RlYnVnL2V4cG9ydHN5bXMudWsKPiBp
bmRleCBkMzQ5NDMwMS4uY2I4ZDI0MDMgMTAwNjQ0Cj4gLS0tIGEvbGliL3VrZGVidWcvZXhwb3J0
c3ltcy51awo+ICsrKyBiL2xpYi91a2RlYnVnL2V4cG9ydHN5bXMudWsKPiBAQCAtNSw0ICs1LDUg
QEAgX3VrX3ByaW50awo+ICAgdWtfaGV4ZHVtcHNuCj4gICB1a19oZXhkdW1wZgo+ICAgdWtfaGV4
ZHVtcGQKPiAtX3VrX2hleGR1bWRrCj4gK191a19oZXhkdW1wZAo+ICtfdWtfaGV4ZHVtcGsKPiBk
aWZmIC0tZ2l0IGEvbGliL3VrZGVidWcvaGV4ZHVtcC5jIGIvbGliL3VrZGVidWcvaGV4ZHVtcC5j
Cj4gaW5kZXggY2Q3MGM3MzQuLmViNTMzYmRiIDEwMDY0NAo+IC0tLSBhL2xpYi91a2RlYnVnL2hl
eGR1bXAuYwo+ICsrKyBiL2xpYi91a2RlYnVnL2hleGR1bXAuYwo+IEBAIC02MSwxOCArNjEsMjAg
QEAgc3RydWN0IF9oeGRfb3V0cHV0IHsKPiAgIAllbnVtIF9oeGRfb3V0cHV0X3R5cGUgdHlwZTsK
PiAgIAo+ICAgCXVuaW9uIHsKPiAtI2lmIENPTkZJR19MSUJVS0RFQlVHX1BSSU5USwo+ICsJCS8q
IFVLX0hYRE9VVF9LRVJOLCBVS19IWERPVVRfREVCVUcgKi8KPiAgIAkJc3RydWN0IHsKPiAtCQkJ
aW50IGx2bDsKPiArCQkJaW50IGx2bDsgLyogVUtfSFhET1VUX0tFUk4gb25seSAqLwo+ICAgCQkJ
Y29uc3QgY2hhciAqbGlibmFtZTsKPiAgIAkJCWNvbnN0IGNoYXIgKnNyY25hbWU7Cj4gICAJCQl1
bnNpZ25lZCBpbnQgc3JjbGluZTsKPiAtCQl9IGtlcm47Cj4gLSNlbmRpZgo+ICsJCX0gdWtwcmlu
dDsKPiArCj4gKwkJLyogVUtfSFhET1VUX0ZJTEUgKi8KPiAgIAkJc3RydWN0IHsKPiAgIAkJCUZJ
TEUgKmZwOwo+ICAgCQl9IGZpbGU7Cj4gICAKPiArCQkvKiBVS19IWERPVVRfQlVGRkVSICovCj4g
ICAJCXN0cnVjdCB7Cj4gICAJCQljaGFyICpwb3M7Cj4gICAJCQlzaXplX3QgbGVmdDsKPiBAQCAt
MTA1LDEyICsxMDcsMTUgQEAgc3RhdGljIGludCBfaHhkX291dGYoc3RydWN0IF9oeGRfb3V0cHV0
ICpvLCBjb25zdCBjaGFyICpmbXQsIC4uLikKPiAgIAkJfQo+ICAgCQlicmVhazsKPiAgIAljYXNl
IFVLX0hYRE9VVF9ERUJVRzoKPiAtCQl1a192cHJpbnRkKGZtdCwgYXApOwo+ICsJCV91a192cHJp
bnRkKG8tPnVrcHJpbnQubGlibmFtZSwKPiArCQkJICAgIG8tPnVrcHJpbnQuc3JjbmFtZSwgby0+
dWtwcmludC5zcmNsaW5lLAo+ICsJCQkgICAgZm10LCBhcCk7Cj4gICAJCWJyZWFrOwo+ICAgI2lm
IENPTkZJR19MSUJVS0RFQlVHX1BSSU5USwo+ICAgCWNhc2UgVUtfSFhET1VUX0tFUk46Cj4gLQkJ
X3VrX3ZwcmludGsoby0+a2Vybi5sdmwsIG8tPmtlcm4ubGlibmFtZSwgby0+a2Vybi5zcmNuYW1l
LAo+IC0JCQkgICAgby0+a2Vybi5zcmNsaW5lLCBmbXQsIGFwKTsKPiArCQlfdWtfdnByaW50ayhv
LT51a3ByaW50Lmx2bCwgby0+dWtwcmludC5saWJuYW1lLAo+ICsJCQkgICAgby0+dWtwcmludC5z
cmNuYW1lLCBvLT51a3ByaW50LnNyY2xpbmUsCj4gKwkJCSAgICBmbXQsIGFwKTsKPiAgIAkJYnJl
YWs7Cj4gICAjZW5kaWYKPiAgIAlkZWZhdWx0Ogo+IEBAIC0zMTksMTYgKzMyNCwxNyBAQCBpbnQg
dWtfaGV4ZHVtcGYoRklMRSAqZnAsIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBsZW4sIHNpemVf
dCBhZGRyMCwgaW50IGZsYWdzLAo+ICAgCXJldHVybiBfaHhkKCZvLCBkYXRhLCBsZW4sIGFkZHIw
LCBmbGFncywgZ3Jwc19wZXJfbGluZSwgbGluZV9wcmVmaXgpOwo+ICAgfQo+ICAgCj4gLXZvaWQg
dWtfaGV4ZHVtcGQoY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IGxlbiwgaW50IGZsYWdzLAo+IC0J
CSB1bnNpZ25lZCBpbnQgZ3Jwc19wZXJfbGluZSkKPiArdm9pZCBfdWtfaGV4ZHVtcGQoY29uc3Qg
Y2hhciAqbGlibmFtZSwgY29uc3QgY2hhciAqc3JjbmFtZSwKPiArCQkgIHVuc2lnbmVkIGludCBz
cmNsaW5lLCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3QgbGVuLAo+ICsJCSAgc2l6ZV90IGFkZHIw
LCBpbnQgZmxhZ3MsIHVuc2lnbmVkIGludCBncnBzX3Blcl9saW5lLAo+ICsJCSAgY29uc3QgY2hh
ciAqbGluZV9wcmVmaXgpCj4gICB7Cj4gLSNpZiBDT05GSUdfTElCVUtERUJVR19QUklOVEQKPiAt
CXN0cnVjdCBfaHhkX291dHB1dCBvID0gey50eXBlID0gVUtfSFhET1VUX0RFQlVHfTsKPiArCXN0
cnVjdCBfaHhkX291dHB1dCBvID0gey50eXBlID0gVUtfSFhET1VUX0RFQlVHLAo+ICsJCQkJLnVr
cHJpbnQubGlibmFtZSA9IGxpYm5hbWUsCj4gKwkJCQkudWtwcmludC5zcmNuYW1lID0gc3JjbmFt
ZSwKPiArCQkJCS51a3ByaW50LnNyY2xpbmUgPSBzcmNsaW5lfTsKPiAgIAo+IC0JX2h4ZCgmbywg
ZGF0YSwgbGVuLCAoc2l6ZV90KWRhdGEsIGZsYWdzLCBncnBzX3Blcl9saW5lLCAiIik7Cj4gLSNl
bHNlCj4gLQlyZXR1cm47Cj4gLSNlbmRpZgo+ICsJX2h4ZCgmbywgZGF0YSwgbGVuLCBhZGRyMCwg
ZmxhZ3MsIGdycHNfcGVyX2xpbmUsIGxpbmVfcHJlZml4KTsKPiAgIH0KPiAgIAo+ICAgI2lmIENP
TkZJR19MSUJVS0RFQlVHX1BSSU5USwo+IEBAIC0zMzgsMTAgKzM0NCwxMCBAQCB2b2lkIF91a19o
ZXhkdW1wayhpbnQgbHZsLCBjb25zdCBjaGFyICpsaWJuYW1lLCBjb25zdCBjaGFyICpzcmNuYW1l
LAo+ICAgCQkgIGNvbnN0IGNoYXIgKmxpbmVfcHJlZml4KQo+ICAgewo+ICAgCXN0cnVjdCBfaHhk
X291dHB1dCBvID0gey50eXBlID0gVUtfSFhET1VUX0tFUk4sCj4gLQkJCQkua2Vybi5sdmwgPSBs
dmwsCj4gLQkJCQkua2Vybi5saWJuYW1lID0gbGlibmFtZSwKPiAtCQkJCS5rZXJuLnNyY25hbWUg
PSBzcmNuYW1lLAo+IC0JCQkJLmtlcm4uc3JjbGluZSA9IHNyY2xpbmV9Owo+ICsJCQkJLnVrcHJp
bnQubHZsID0gbHZsLAo+ICsJCQkJLnVrcHJpbnQubGlibmFtZSA9IGxpYm5hbWUsCj4gKwkJCQku
dWtwcmludC5zcmNuYW1lID0gc3JjbmFtZSwKPiArCQkJCS51a3ByaW50LnNyY2xpbmUgPSBzcmNs
aW5lfTsKPiAgIAo+ICAgCV9oeGQoJm8sIGRhdGEsIGxlbiwgYWRkcjAsIGZsYWdzLCBncnBzX3Bl
cl9saW5lLCBsaW5lX3ByZWZpeCk7Cj4gICB9Cj4gZGlmZiAtLWdpdCBhL2xpYi91a2RlYnVnL2lu
Y2x1ZGUvdWsvaGV4ZHVtcC5oIGIvbGliL3VrZGVidWcvaW5jbHVkZS91ay9oZXhkdW1wLmgKPiBp
bmRleCBjNzc3NDJjMC4uMmU5MWVkYjIgMTAwNjQ0Cj4gLS0tIGEvbGliL3VrZGVidWcvaW5jbHVk
ZS91ay9oZXhkdW1wLmgKPiArKysgYi9saWIvdWtkZWJ1Zy9pbmNsdWRlL3VrL2hleGR1bXAuaAo+
IEBAIC01NSwxMSArNTUsMzQgQEAgZXh0ZXJuICJDIiB7Cj4gICAKPiAgICNkZWZpbmUgVUtfSFhE
Rl9DT01QUkVTUyAoNjQpIC8qIHN1cHByZXNzIHJlcGVhdGVkIGxpbmVzICovCj4gICAKPiAtI2lm
IGRlZmluZWQgVUtfREVCVUcgfHwgQ09ORklHX0xJQlVLREVCVUdfUFJJTlRECj4gKy8qCj4gKyAq
IEhFWERVTVAgT04gREVCVUcgQ09OU09MRQo+ICsgKi8KPiArI2lmZGVmIF9fSU5fTElCVUtERUJV
R19fCj4gKy8qCj4gKyAqIFRoaXMgcmVkZWZpbml0aW9uIG9mIENPTkZJR19MSUJVS0RFQlVHX1BS
SU5URCBpcyBkb2luZyB0aGUgdHJpY2sgdG8KPiArICogc3dpdGNoIG9uIHRoZSBjb3JyZWN0IGRl
Y2xhcmF0aW9uIG9mIHVrX2hleGR1bXBkKCkgd2hlbiB3ZSBhcmUgY29tcGlsaW5nCj4gKyAqIHRo
aXMgbGlicmFyeSBhbmQgaGF2ZSB0aGUgZ2xvYmFsIGRlYnVnIHN3aXRjaCBDT05GSUdfTElCVUtE
RUJVR19QUklOVEQKPiArICogbm90IGVuYWJsZWQuCj4gKyAqLwo+ICsjaWYgIWRlZmluZWQgQ09O
RklHX0xJQlVLREVCVUdfUFJJTlREIHx8ICFDT05GSUdfTElCVUtERUJVR19QUklOVEQKPiArI3Vu
ZGVmIENPTkZJR19MSUJVS0RFQlVHX1BSSU5URAo+ICsjZGVmaW5lIENPTkZJR19MSUJVS0RFQlVH
X1BSSU5URCAxCj4gKyNlbmRpZgo+ICsjZW5kaWYgLyogX19JTl9MSUJVS0RFQlVHX18gKi8KPiAr
Cj4gKyNpZiAoZGVmaW5lZCBVS19ERUJVRykgfHwgQ09ORklHX0xJQlVLREVCVUdfUFJJTlRECj4g
Ky8qIFBsZWFzZSB1c2UgdWtfaGV4ZHVtcGQoKSBpbnN0ZWFkICovCj4gK3ZvaWQgX3VrX2hleGR1
bXBkKGNvbnN0IGNoYXIgKmxpYm5hbWUsIGNvbnN0IGNoYXIgKnNyY25hbWUsCj4gKwkJICB1bnNp
Z25lZCBpbnQgc3JjbGluZSwgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IGxlbiwKPiArCQkgIHNp
emVfdCBhZGRyMCwgaW50IGZsYWdzLCB1bnNpZ25lZCBpbnQgZ3Jwc19wZXJfbGluZSwKPiArCQkg
IGNvbnN0IGNoYXIgKmxpbmVfcHJlZml4KTsKPiArCj4gICAvKioKPiAtICogUGxvdHMgYW4gaGV4
ZHVtcCBmb3IgYSBnaXZlbiBkYXRhIHJlZ2lvbiB0byBkZWJ1ZyBvdXRwdXQKPiArICogUGxvdHMg
YW4gaGV4ZHVtcCBmb3IgYSBnaXZlbiBkYXRhIHJlZ2lvbiB0byBrZXJuZWwgb3V0cHV0Cj4gICAg
KiBUaGUgYWJzb2x1dGUgYWRkcmVzcyBpcyBwbG90dGVkIHdoZW4gVUtfSFhERl9BRERSIGlzIHNl
dAo+ICAgICoKPiArICogQHBhcmFtIGx2bCBEZWJ1ZyBsZXZlbAo+ICAgICogQHBhcmFtIGRhdGEg
U3RhcnQgb2YgZGF0YSByZWdpb24gdG8gcGxvdAo+ICAgICogQHBhcmFtIGxlbiBMZW5ndGggb2Yg
ZGF0YSByZWdpb24gKG51bWJlciBvZiBieXRlcykKPiAgICAqIEBwYXJhbSBmbGFncyBGb3JtYXQg
ZmxhZ3MsIHNlZSBVS19IWERGXyoKPiBAQCAtNjcsMTYgKzkwLDIwIEBAIGV4dGVybiAiQyIgewo+
ICAgICogICAgICAgIE51bWJlciBvZiBncm91cHMgKFVLX0hYREZfR1JQKikgc2hvd24gcGVyIGxp
bmUKPiAgICAqIEByZXR1cm4gUmV0dXJucyB0aGUgbnVtYmVyIG9mIHByaW50ZWQgY2hhcmFjdGVy
cyB0byBvdXRwdXQgZnAKPiAgICAqLwo+IC12b2lkIHVrX2hleGR1bXBkKGNvbnN0IHZvaWQgKmRh
dGEsIHNpemVfdCBsZW4sIGludCBmbGFncywKPiAtCQkgdW5zaWduZWQgaW50IGdycHNfcGVyX2xp
bmUpOwo+IC0jZWxzZQo+ICsjZGVmaW5lIHVrX2hleGR1bXBkKGRhdGEsIGxlbiwgZmxhZ3MsIGdy
cHNfcGVyX2xpbmUpCQkJXAo+ICsJX3VrX2hleGR1bXBkKF9fU1RSX0xJQk5BTUVfXywgX19TVFJf
QkFTRU5BTUVfXywJCQlcCj4gKwkJICAgICBfX0xJTkVfXywgKGRhdGEpLCAobGVuKSwJCQkJXAo+
ICsJCSAgICAgKChzaXplX3QpKGRhdGEpKSwgKGZsYWdzKSwJCQkJXAo+ICsJCSAgICAgKGdycHNf
cGVyX2xpbmUpLCBTVFJJTkdJRlkoZGF0YSkgIjogIikKPiArI2Vsc2UgLyogKGRlZmluZWQgVUtf
REVCVUcpIHx8IENPTkZJR19MSUJVS0RFQlVHX1BSSU5URCAqLwo+ICAgc3RhdGljIGlubGluZSB2
b2lkIHVrX2hleGR1bXBkKGNvbnN0IHZvaWQgKmRhdGEgX191bnVzZWQsIHNpemVfdCBsZW4gX191
bnVzZWQsCj4gICAJCQkgICAgICAgaW50IGZsYWdzIF9fdW51c2VkLAo+ICAgCQkJICAgICAgIHVu
c2lnbmVkIGludCBncnBzX3Blcl9saW5lIF9fdW51c2VkKQo+ICAge30KPiAtI2VuZGlmCj4gKyNl
bmRpZiAvKiAoZGVmaW5lZCBVS19ERUJVRykgfHwgQ09ORklHX0xJQlVLREVCVUdfUFJJTlREICov
Cj4gICAKPiAgICNpZiBDT05GSUdfTElCVUtERUJVR19QUklOVEsKPiArLyogUGxlYXNlIHVzZSB1
a19oZXhkdW1waygpIGluc3RlYWQgKi8KPiAgIHZvaWQgX3VrX2hleGR1bXBrKGludCBsdmwsIGNv
bnN0IGNoYXIgKmxpYm5hbWUsIGNvbnN0IGNoYXIgKnNyY25hbWUsCj4gICAJCSAgdW5zaWduZWQg
aW50IHNyY2xpbmUsIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBsZW4sCj4gICAJCSAgc2l6ZV90
IGFkZHIwLCBpbnQgZmxhZ3MsIHVuc2lnbmVkIGludCBncnBzX3Blcl9saW5lLAo+IEBAIC05Nywx
NyArMTI0LDE3IEBAIHZvaWQgX3VrX2hleGR1bXBrKGludCBsdmwsIGNvbnN0IGNoYXIgKmxpYm5h
bWUsIGNvbnN0IGNoYXIgKnNyY25hbWUsCj4gICAjZGVmaW5lIHVrX2hleGR1bXBrKGx2bCwgZGF0
YSwgbGVuLCBmbGFncywgZ3Jwc19wZXJfbGluZSkgICAgICAgICAgICAgICAgICAgICAgXAo+ICAg
CWRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAo+ICAgCQlpZiAoKGx2bCkgPD0gS0xWTF9NQVgpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gLQkJCV91a19oZXhkdW1wZCgobHZsKSwg
X19TVFJfTElCTkFNRV9fLCBfX1NUUl9CQVNFTkFNRV9fLCBcCj4gKwkJCV91a19oZXhkdW1waygo
bHZsKSwgX19TVFJfTElCTkFNRV9fLCBfX1NUUl9CQVNFTkFNRV9fLCBcCj4gICAJCQkJICAgICBf
X0xJTkVfXywgKGRhdGEpLCAobGVuKSwgICAgICAgICAgICAgICAgICBcCj4gICAJCQkJICAgICAo
KHNpemVfdCkoZGF0YSkpLCAoZmxhZ3MpLCAgICAgICAgICAgICAgICBcCj4gICAJCQkJICAgICAo
Z3Jwc19wZXJfbGluZSksIFNUUklOR0lGWShkYXRhKSAiOiAiKTsgICBcCj4gICAJfSB3aGlsZSAo
MCkKPiAtI2Vsc2UKPiArI2Vsc2UgLyogQ09ORklHX0xJQlVLREVCVUdfUFJJTlRLICovCj4gICBz
dGF0aWMgaW5saW5lIHZvaWQgdWtfaGV4ZHVtcGsoaW50IGx2bCBfX3VudXNlZCwgY29uc3Qgdm9p
ZCAqZGF0YSBfX3VudXNlZCwKPiAgIAkJCSAgICAgICBzaXplX3QgbGVuIF9fdW51c2VkLCBpbnQg
ZmxhZ3MgX191bnVzZWQsCj4gICAJCQkgICAgICAgdW5zaWduZWQgaW50IGdycHNfcGVyX2xpbmUg
X191bnVzZWQpCj4gICB7fQo+IC0jZW5kaWYKPiArI2VuZGlmIC8qIENPTkZJR19MSUJVS0RFQlVH
X1BSSU5USyAqLwo+ICAgCj4gICAvKioKPiAgICAqIFBsb3RzIGFuIGhleGR1bXAgZm9yIGEgZ2l2
ZW4gZGF0YSByZWdpb24gdG8gYSBmaWxlIGRlc2NyaXB0b3IKPiBAQCAtMjE0LDcgKzI0MSw3IEBA
IGludCB1a19oZXhkdW1wc24oY2hhciAqc3RyLCBzaXplX3Qgc2l6ZSwgY29uc3Qgdm9pZCAqZGF0
YSwgc2l6ZV90IGxlbiwKPiAgIAkJICAgIDIsIE5VTEwpCj4gICAKPiAgICNkZWZpbmUgdWtfaGV4
ZHVtcEMoZGF0YSwgbGVuKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCj4gLQl1a19oZXhkdW1wZigoZGF0YSksIChsZW4pLCAoKHNpemVfdCkoZGF0YSkp
LCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArCXVrX2hleGR1bXAoKGRhdGEpLCAobGVu
KSwgKChzaXplX3QpKGRhdGEpKSwJCQkgICAgICAgXAo+ICAgCQkgICAgKFVLX0hYREZfQUREUiB8
IFVLX0hYREZfQVNDSUlTRUMgfCBVS19IWERGX0dSUFFXT1JEICAgICAgICBcCj4gICAJCSAgICAg
fCBVS19IWERGX0NPTVBSRVNTKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKPiAgIAkJICAgIDIsIE5VTEwpCj4gCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBs
aXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4v
bGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Feb 13 12:26:35 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 13 Feb 2019 12:26:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gttcW-0008WT-UL; Wed, 13 Feb 2019 12:26:32 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=ZwM7=QU=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1gttcW-0008WO-9R
 for minios-devel@lists.xen.org; Wed, 13 Feb 2019 12:26:32 +0000
X-Inumbo-ID: 9537f6fa-2f8a-11e9-bc90-bc764e045a96
Received: from queen.nlehd.de (unknown [195.37.154.80])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id 9537f6fa-2f8a-11e9-bc90-bc764e045a96;
 Wed, 13 Feb 2019 12:26:27 +0000 (UTC)
Received: from c414.ant-net (c414.ant-net [192.168.0.156])
 by queen.nlehd.de (Postfix) with ESMTP id 958B4413FB;
 Wed, 13 Feb 2019 13:26:27 +0100 (CET)
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: minios-devel@lists.xen.org
Date: Wed, 13 Feb 2019 13:26:26 +0100
Message-Id: <20190213122626.20568-1-simon.kuenzer@neclab.eu>
X-Mailer: git-send-email 2.11.0
Subject: [Minios-devel] [UNIKRAFT PATCH v2] plat/xen: Split emergency and
 hypervisor console
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Simon Kuenzer <simon.kuenzer@neclab.eu>, sharan.santhanam@neclab.eu
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U3BsaXRzIHRoZSB0d28gY29uc29sZSBpbXBsZW1ldGF0aW9ucyAoaHZjLCBlbWVyZ2VuY3kpIGZy
b20gZWFjaCBvdGhlci4KU2ltaWxhciB0byBwbGF0L2t2bSwgYSBjb25zb2xlIG9wdGlvbiBtZW51
IGlzIHBvcHVsYXRlZCBpbiB0aGUgcGxhdGZvcm0KY29uZmlndXJhdGlvbiB3aGVyZSBlYWNoIGNv
bnNvbGUgY2FuIGJlIGluZGl2aWR1YWxseSBzZWxlY3RlZCBhcyBvdXRwdXQKZm9yIGtlcm5lbCBv
ciBkZWJ1ZyBtZXNzYWdlcy4gQmVjYXVzZSBodmMgaXMgY3VycmVudGx5IG5vdCB5ZXQgc3VwcG9y
dGVkCm9uIEFybTMyLCB3ZSBzZXQgdGhlIGRlYnVnIGNvbnNvbGUgYXMgZGVmYXVsdCBvdXRwdXQg
b24gQXJtMzIuCgpTaWduZWQtb2ZmLWJ5OiBTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5l
Y2xhYi5ldT4KLS0tCiBwbGF0L3hlbi9Db25maWcudWsgICAgICAgICAgICAgICAgfCAgMzQgKysr
Ky0KIHBsYXQveGVuL01ha2VmaWxlLnVrICAgICAgICAgICAgICB8ICAgNiArCiBwbGF0L3hlbi9j
b25zb2xlLmMgICAgICAgICAgICAgICAgfCAyNDggKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogcGxhdC94ZW4vZW1nX2NvbnNvbGUuYyAgICAgICAgICAgIHwgIDkwICsrKysr
KysrKysrKysrCiBwbGF0L3hlbi9lbWdfY29uc29sZS5oICAgICAgICAgICAgfCAgNjUgKysrKysr
KysrKwogcGxhdC94ZW4vaHZfY29uc29sZS5jICAgICAgICAgICAgIHwgMjU0ICsrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrCiBwbGF0L3hlbi9odl9jb25zb2xlLmggICAgICAg
ICAgICAgfCAgNzggKysrKysrKysrKysrCiBwbGF0L3hlbi9pbmNsdWRlL2NvbW1vbi9jb25zb2xl
LmggfCAgIDkgKy0KIHBsYXQveGVuL3NodXRkb3duLmMgICAgICAgICAgICAgICB8ICAgMiArLQog
cGxhdC94ZW4veDg2L3NldHVwLmMgICAgICAgICAgICAgIHwgICA0ICstCiAxMCBmaWxlcyBjaGFu
Z2VkLCA1NjEgaW5zZXJ0aW9ucygrKSwgMjI5IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAw
NjQ0IHBsYXQveGVuL2VtZ19jb25zb2xlLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBwbGF0L3hlbi9l
bWdfY29uc29sZS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgcGxhdC94ZW4vaHZfY29uc29sZS5jCiBj
cmVhdGUgbW9kZSAxMDA2NDQgcGxhdC94ZW4vaHZfY29uc29sZS5oCgpkaWZmIC0tZ2l0IGEvcGxh
dC94ZW4vQ29uZmlnLnVrIGIvcGxhdC94ZW4vQ29uZmlnLnVrCmluZGV4IGZhZmFiZjA3Li5lYmY3
NjZkZiAxMDA2NDQKLS0tIGEvcGxhdC94ZW4vQ29uZmlnLnVrCisrKyBiL3BsYXQveGVuL0NvbmZp
Zy51awpAQCAtMTAsMTQgKzEwLDM2IEBAIG1lbnVjb25maWcgUExBVF9YRU4KICAgICAgICAgICAg
ICAgICBDcmVhdGUgYSBVbmlrcmFmdCBpbWFnZSB0aGF0IHJ1bnMgYXMgYSBYZW4gZ3Vlc3QKIAog
aWYgKFBMQVRfWEVOKQotCWNvbmZpZyBYRU5fREJHRU1FUkdFTkNZCi0JYm9vbCAiRW1lcmdlbmN5
IGNvbnNvbGUgZm9yIGRlYnVnIG91dHB1dCIKK21lbnUgIkNvbnNvbGUgT3B0aW9ucyIKKworY29u
ZmlnIFhFTl9LRVJORUxfSFZfQ09OU09MRQorCWJvb2wgIkh5cGVydmlzb3IgY29uc29sZSBmb3Ig
a2VybmVsIHByaW50cyIKKwlkZWZhdWx0IHkKKwlkZXBlbmRzIG9uIEFSQ0hfWDg2XzY0CisJaGVs
cAorCQlTZW5kIGtlcm5lbCBtZXNzYWdlcyB0byB0aGUgaHlwZXJ2aXNvciBjb25zb2xlLgorCitj
b25maWcgWEVOX0tFUk5FTF9FTUdfQ09OU09MRQorCWJvb2wgIkVtZXJnZW5jeSBjb25zb2xlIGZv
ciBrZXJuZWwgcHJpbnRzIgorCWRlZmF1bHQgeSBpZiBBUkNIX0FSTV8zMgogCWRlZmF1bHQgbgog
CWhlbHAKLQkJU2VuZCBkZWJ1ZyBtZXNzYWdlcyB0byB0aGUgZW1lcmdlbmN5IGNvbnNvbGUKLQkJ
aW5zdGVhZCBvZiB0aGUgaHlwZXJ2aXNvciBjb25zb2xlLiBXaGVuIHRoaXMKLQkJb3B0aW9uIGlz
IGVuYWJsZWQgdGhlIGh5cGVydmlzb3IgY29uc29sZSBpcyB1c2VkCi0JCWZvciBrZXJuZWwgbWVz
c2FnZXMgb25seS4KKwkJU2VuZCBrZXJuZWwgbWVzc2FnZXMgdG8gdGhlIGVtZXJnZW5jeSBjb25z
b2xlLgorCitjb25maWcgWEVOX0RFQlVHX0hWX0NPTlNPTEUKKwlib29sICJIeXBlcnZpc29yIGNv
bnNvbGUgZm9yIGRlYnVnIHByaW50cyIKKwlkZWZhdWx0IHkKKwlkZXBlbmRzIG9uIEFSQ0hfWDg2
XzY0CisJaGVscAorCQlTZW5kIGRlYnVnIG1lc3NhZ2VzIHRvIHRoZSBoeXBlcnZpc29yIGNvbnNv
bGUuCisKK2NvbmZpZyBYRU5fREVCVUdfRU1HX0NPTlNPTEUKKwlib29sICJFbWVyZ2VuY3kgY29u
c29sZSBmb3IgZGVidWcgcHJpbnRzIgorCWRlZmF1bHQgeSBpZiBBUkNIX0FSTV8zMgorCWRlZmF1
bHQgbgorICAgICAgICBoZWxwCisJCVNlbmQgZGVidWcgbWVzc2FnZXMgdG8gdGhlIGVtZXJnZW5j
eSBjb25zb2xlLgorZW5kbWVudQogCiBjb25maWcgWEVOX0dOVFRBQgogCWJvb2wgIkdyYW50IHRh
YmxlIHN1cHBvcnQiCmRpZmYgLS1naXQgYS9wbGF0L3hlbi9NYWtlZmlsZS51ayBiL3BsYXQveGVu
L01ha2VmaWxlLnVrCmluZGV4IDM0MzlhMGQ5Li43YTNmY2M5MyAxMDA2NDQKLS0tIGEvcGxhdC94
ZW4vTWFrZWZpbGUudWsKKysrIGIvcGxhdC94ZW4vTWFrZWZpbGUudWsKQEAgLTcwLDYgKzcwLDEy
IEBAIExJQlhFTlBMQVRfU1JDUy0kKENPTkZJR19BUkNIX0FSTV82NCkgKz0gJChMSUJYRU5QTEFU
X0JBU0UpL2FybS9oeXBlcmNhbGxzNjQuUwogCiBMSUJYRU5QTEFUX1NSQ1MteSAgICAgICAgICAg
ICAgKz0gJChMSUJYRU5QTEFUX0JBU0UpL2xjcHUuYwogTElCWEVOUExBVF9TUkNTLXkgICAgICAg
ICAgICAgICs9ICQoTElCWEVOUExBVF9CQVNFKS9jb25zb2xlLmMKK2lmZXEgKCQoZmluZHN0cmlu
ZyB5LCQoQ09ORklHX1hFTl9LRVJORUxfSFZfQ09OU09MRSkgJChDT05GSUdfWEVOX0RFQlVHX0hW
X0NPTlNPTEUpKSx5KQorTElCWEVOUExBVF9TUkNTLXkgICAgICAgICAgICAgICs9ICQoTElCWEVO
UExBVF9CQVNFKS9odl9jb25zb2xlLmMKK2VuZGlmCitpZmVxICgkKGZpbmRzdHJpbmcgeSwkKENP
TkZJR19YRU5fS0VSTkVMX0VNR19DT05TT0xFKSAkKENPTkZJR19YRU5fREVCVUdfRU1HX0NPTlNP
TEUpKSx5KQorTElCWEVOUExBVF9TUkNTLXkgICAgICAgICAgICAgICs9ICQoTElCWEVOUExBVF9C
QVNFKS9lbWdfY29uc29sZS5jCitlbmRpZgogTElCWEVOUExBVF9TUkNTLXkgICAgICAgICAgICAg
ICs9ICQoTElCWEVOUExBVF9CQVNFKS9zaHV0ZG93bi5jCiBMSUJYRU5QTEFUX1NSQ1MteSAgICAg
ICAgICAgICAgKz0gJChMSUJYRU5QTEFUX0JBU0UpL2V2ZW50cy5jCiAKZGlmZiAtLWdpdCBhL3Bs
YXQveGVuL2NvbnNvbGUuYyBiL3BsYXQveGVuL2NvbnNvbGUuYwppbmRleCBhNzBlYzVmZi4uNDM3
ZTEyOGMgMTAwNjQ0Ci0tLSBhL3BsYXQveGVuL2NvbnNvbGUuYworKysgYi9wbGF0L3hlbi9jb25z
b2xlLmMKQEAgLTIsNyArMiw4IEBACiAvKgogICogQXV0aG9yczogU2ltb24gS3VlbnplciA8c2lt
b24ua3VlbnplckBuZWNsYWIuZXU+CiAgKgotICogQ29weXJpZ2h0IChjKSAyMDE3LCBORUMgRXVy
b3BlIEx0ZC4sIE5FQyBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoYykgMjAxOSwgTkVDIExhYm9yYXRvcmllcyBFdXJvcGUgR21iSCwgTkVDIENvcnBvcmF0
aW9uLgorICogICAgICAgICAgICAgICAgICAgICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiwyNTIgKzMzLDY3IEBACiAgKiBUSElTIEhF
QURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgogICovCiAK
LS8qCi0gKiBTb21lIG9mIHRoaXMgY29kZSB3YXMgcG9ydGVkIGZyb20gTWluaS1PUzoKLSAqICBj
b25zb2xlL3hlbmNvbnNfcmluZy5jIGFuZCBjb25zb2xlL2NvbnNvbGUuYwotICovCi0vKgotICoq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioKLSAqIChDKSAyMDA2IC0gR3J6ZWdvcnogTWlsb3MgLSBDYW1icmlk
Z2UgVW5pdmVyc2l0eQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqCi0gKiAgICAgICAgRmlsZTog
Y29uc29sZS5oCi0gKiAgICAgIEF1dGhvcjogR3J6ZWdvcnogTWlsb3MKLSAqICAgICBDaGFuZ2Vz
OgotICoKLSAqICAgICAgICBEYXRlOiBNYXIgMjAwNgotICoKLSAqIEVudmlyb25tZW50OiBYZW4g
TWluaW1hbCBPUwotICogRGVzY3JpcHRpb246IENvbnNvbGUgaW50ZXJmYWNlLgotICoKLSAqIEhh
bmRsZXMgY29uc29sZSBJL08uIERlZmluZXMgcHJpbnRrLgotICoKLSAqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqCi0gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8g
YW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Ci0gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3Nv
Y2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KLSAqIGRlYWwg
aW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxp
bWl0YXRpb24gdGhlCi0gKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJs
aXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKLSAqIHNlbGwgY29waWVzIG9mIHRo
ZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlz
Ci0gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zOgotICoKLSAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Np
b24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCi0gKiBhbGwgY29waWVzIG9yIHN1YnN0YW50
aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLSAqCi0gKiBUSEUgU09GVFdBUkUgSVMgUFJP
VklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgot
ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFksCi0gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
TkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKLSAqIEFVVEhPUlMgT1Ig
Q09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RI
RVIKLSAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQg
T1IgT1RIRVJXSVNFLCBBUklTSU5HCi0gKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBX
SVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCi0gKiBERUFMSU5HUyBJTiBUSEUg
U09GVFdBUkUuCi0gKi8KLQotI2luY2x1ZGUgPGludHR5cGVzLmg+Ci0jaW5jbHVkZSA8c3RyaW5n
Lmg+CisjaW5jbHVkZSA8dWsvY29uZmlnLmg+CiAjaW5jbHVkZSA8dWsvcGxhdC9jb25zb2xlLmg+
CisjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8dWsvYXJjaC9sY3B1Lmg+Ci0jaW5jbHVk
ZSA8dWsvYXNzZXJ0Lmg+CiAjaW5jbHVkZSA8dWsvZXNzZW50aWFscy5oPgotI2luY2x1ZGUgPHVr
L2NvbmZpZy5oPgotCi0jaW5jbHVkZSA8Y29tbW9uL2NvbnNvbGUuaD4KLSNpbmNsdWRlIDxjb21t
b24vZXZlbnRzLmg+Ci0jaW5jbHVkZSA8Y29tbW9uL2h5cGVydmlzb3IuaD4KLSNpbmNsdWRlIDx4
ZW4veGVuLmg+Ci0KLSNpZiAoZGVmaW5lZCBfX1g4Nl8zMl9fKSB8fCAoZGVmaW5lZCBfX1g4Nl82
NF9fKQotI2luY2x1ZGUgPHhlbi14ODYvc2V0dXAuaD4KLSNpbmNsdWRlIDx4ZW4teDg2L21tLmg+
Ci0jaWYgZGVmaW5lZCBfX1g4Nl8zMl9fCi0jaW5jbHVkZSA8eGVuLXg4Ni9oeXBlcmNhbGwzMi5o
PgotI2VsaWYgZGVmaW5lZCBfX1g4Nl82NF9fCi0jaW5jbHVkZSA8eGVuLXg4Ni9oeXBlcmNhbGw2
NC5oPgotI2VuZGlmCi0jZWxpZiAoZGVmaW5lZCBfX0FSTV8zMl9fKSB8fCAoZGVmaW5lZCBfX0FS
TV82NF9fKQotI2luY2x1ZGUgPHhlbi1hcm0vbW0uaD4KLSNpbmNsdWRlIDx4ZW4tYXJtL2h5cGVy
Y2FsbC5oPgotI2VuZGlmCi0jaW5jbHVkZSA8eGVuL2lvL2NvbnNvbGUuaD4KLSNpbmNsdWRlIDx4
ZW4vaW8vcHJvdG9jb2xzLmg+Ci0jaW5jbHVkZSA8eGVuL2lvL3JpbmcuaD4KLSNpZm5kZWYgQ09O
RklHX1BBUkFWSVJUCi0jaW5jbHVkZSA8eGVuL2h2bS9wYXJhbXMuaD4KLSNlbmRpZgotCi1zdGF0
aWMgc3RydWN0IHhlbmNvbnNfaW50ZXJmYWNlICpjb25zb2xlX3Jpbmc7Ci1zdGF0aWMgdWludDMy
X3QgY29uc29sZV9ldnRjaG47Ci1zdGF0aWMgaW50IGNvbnNvbGVfcmVhZHk7Ci0KLSNpZmRlZiBD
T05GSUdfUEFSQVZJUlQKLXZvaWQgX2xpYnhlbnBsYXRfcHJlcGFyZV9jb25zb2xlKHZvaWQpCi17
Ci0JY29uc29sZV9yaW5nID0gbWZuX3RvX3ZpcnQoSFlQRVJWSVNPUl9zdGFydF9pbmZvLT5jb25z
b2xlLmRvbVUubWZuKTsKLQljb25zb2xlX2V2dGNobiA9IEhZUEVSVklTT1Jfc3RhcnRfaW5mby0+
Y29uc29sZS5kb21VLmV2dGNobjsKLX0KLSNlbHNlCi12b2lkIF9saWJ4ZW5wbGF0X3ByZXBhcmVf
Y29uc29sZSh2b2lkKQotewotCS8qIE5PVCBJTVBMRU1FTlRFRCBZRVQgKi8KLX0KLSNlbmRpZgor
I2luY2x1ZGUgPGVycm5vLmg+CiAKLSNpZiBDT05GSUdfWEVOX0RCR0VNRVJHRU5DWQotc3RhdGlj
IGludCBlbWVyZ2VuY3lfb3V0cHV0KGNvbnN0IGNoYXIgKnN0ciwgdW5zaWduZWQgaW50IGxlbikK
LXsKLQlpbnQgcmM7Ci0KLQlyYyA9IEhZUEVSVklTT1JfY29uc29sZV9pbyhDT05TT0xFSU9fd3Jp
dGUsIGxlbiwgREVDT05TVChjaGFyICosIHN0cikpOwotCWlmICh1bmxpa2VseShyYyA8IDApKQot
CQlyZXR1cm4gcmM7Ci0JcmV0dXJuIGxlbjsKLX0KLSNlbmRpZgorI2RlZmluZSBfX1hFTl9DT05T
T0xFX0lNUExfXworI2luY2x1ZGUgImh2X2NvbnNvbGUuaCIKKyNpbmNsdWRlICJlbWdfY29uc29s
ZS5oIgogCiAvKgotICogaHZjb25zb2xlX291dHB1dCBjYW4gb3BlcmF0ZSBpbiB0d28gbW9kZXM6
IGJ1ZmZlcmVkIGFuZCBpbml0aWFsaXplZC4KLSAqIFRoZSBidWZmZXJlZCBtb2RlIGlzIGF1dG9t
YXRpY2FsbHkgYWN0aXZhdGVkIGFmdGVyCi0gKiBfbGlieGVucGxhdF9wcmVwYXJlX2NvbnNvbGUo
KSB3YXMgY2FsbGVkIGFuZCB3ZSBrbm93IHdoZXJlIHRoZSBjb25zb2xlIHJpbmcKLSAqIGlzLiBU
aGUgb3V0cHV0IHN0cmluZyBpcyBwdXQgdG8gdGhlIGNvbnNvbGUgcmluZyB1bnRpbCB0aGUgcmlu
ZyBpcyBmdWxsLiBBbnkKLSAqIGZ1cnRoZXIgY2hhcmFjdGVycyBhcmUgZGlzY2FyZGVkLiBTaW5j
ZSB0aGUgZXZlbnQgY2hhbm5lbCBpcyBub3QgaW5pdGlhbGl6ZWQKLSAqIHlldCwgdGhlIGJhY2tl
bmQgaXMgbm90IG5vdGlmaWVkLiBUaGlzIG1vZGUgaXMgaW50cm9kdWNlZCB0byBzdXBwb3J0IGVh
cmx5Ci0gKiBwcmludGluZywgZXZlbiBiZWZvcmUgZXZlbnRzIGFyZSBub3QgaW5pdGlhbGl6ZWQu
Ci0gKiBfbGlieGVucGxhdF9pbml0X2NvbnNvbGUoKSBmaW5hbGl6ZXMgdGhlIGluaXRpYWxpemF0
aW9uIGFuZCBlbmFibGVzCi0gKiB0aGUgZXZlbnQgY2hhbm5lbC4gRnJvbSBub3cgb24sIHRoZSBj
b25zb2xlIGJhY2tlbmQgaXMgbm90aWZpZWQgd2hlbmV2ZXIKLSAqIHdlIHB1dCBjaGFyYWN0ZXJz
IG9uIHRoZSBjb25zb2xlIHJpbmcuIFdoZW5ldmVyIHRoaXMgcmluZyBpcyBmdWxsIGFuZCB0aGVy
ZQotICogYXJlIHN0aWxsIGNoYXJhY3RlcnMgdGhhdCBzaG91bGQgYmUgcHJpbnRlZCwgd2UgYXJl
IGVudGVyaW5nIGEgYnVzeSBsb29wIGFuZAotICogd2FpdCBmb3IgdGhlIGJhY2tlbmQgdG8gbWFr
ZSB1cyBzcGFjZSBhZ2Fpbi4gT2YgY291cnNlIHRoaXMgaXMgc2xvdzogZG8gbm90Ci0gKiBwcmlu
dCBzbyBtdWNoISA7LSkKKyAqIFJldHVybiB0aGUgImJlc3QgY2FzZSIgb2YgdGhlIHR3byByZXR1
cm4gY29kZXMgcmV0IGFuZCByZXQyLgogICovCi1zdGF0aWMgaW50IGh2Y29uc29sZV9vdXRwdXQo
Y29uc3QgY2hhciAqc3RyLCB1bnNpZ25lZCBpbnQgbGVuKQorc3RhdGljIGlubGluZSBpbnQgcmV0
dXJuY29kZShpbnQgcmV0LCBpbnQgcmV0MikKIHsKLQl1bnNpZ25lZCBpbnQgc2VudCA9IDA7Ci0J
WEVOQ09OU19SSU5HX0lEWCBjb25zLCBwcm9kOwotCi0JaWYgKHVubGlrZWx5KCFjb25zb2xlX3Jp
bmcpKQotCQlyZXR1cm4gc2VudDsKLQotcmV0cnk6Ci0JY29ucyA9IGNvbnNvbGVfcmluZy0+b3V0
X2NvbnM7Ci0JcHJvZCA9IGNvbnNvbGVfcmluZy0+b3V0X3Byb2Q7Ci0KLQltYigpOyAvKiBtYWtl
IHN1cmUgd2UgaGF2ZSBjb25zICYgcHJvZCBiZWZvcmUgdG91Y2hpbmcgdGhlIHJpbmcgKi8KLQlV
S19CVUdPTigocHJvZCAtIGNvbnMpID4gc2l6ZW9mKGNvbnNvbGVfcmluZy0+b3V0KSk7Ci0KLQl3
aGlsZSAoKHNlbnQgPCBsZW4pICYmICgocHJvZCAtIGNvbnMpIDwgc2l6ZW9mKGNvbnNvbGVfcmlu
Zy0+b3V0KSkpIHsKLQkJaWYgKHN0cltzZW50XSA9PSAnXG4nKSB7Ci0JCQkvKiBwcmVwZW5kICdc
cicgZm9yIGNvbnZlcnRpbmcgJ1xuJyB0byAnXHInJ1xuJyAqLwotCQkJaWYgKChwcm9kICsgMSAt
IGNvbnMpID49IHNpemVvZihjb25zb2xlX3JpbmctPm91dCkpCi0JCQkJYnJlYWs7IC8qIG5vdCBl
bm91Z2ggc3BhY2UgZm9yICdccicgYW5kICdcbichICovCi0KLQkJCWNvbnNvbGVfcmluZy0+b3V0
W01BU0tfWEVOQ09OU19JRFgocHJvZCsrLAotCQkJCQkJCSAgIGNvbnNvbGVfcmluZy0+b3V0KV0g
PQotCQkJCSdccic7Ci0JCX0KLQotCQljb25zb2xlX3JpbmctPm91dFtNQVNLX1hFTkNPTlNfSURY
KHByb2QrKywgY29uc29sZV9yaW5nLT5vdXQpXSA9Ci0JCQlzdHJbc2VudF07Ci0JCXNlbnQrKzsK
LQl9Ci0Jd21iKCk7IC8qIGVuc3VyZSBjaGFyYWN0ZXJzIGFyZSB3cml0dGVuIGJlZm9yZSBpbmNy
ZWFzaW5nIG91dF9wcm9kICovCi0JY29uc29sZV9yaW5nLT5vdXRfcHJvZCA9IHByb2Q7Ci0KLQkv
KiBJcyB0aGUgY29uc29sZSBmdWxseSBpbml0aWFsaXplZD8KLQkgKiBBcmUgd2UgYWJsZSB0byBu
b3RpZnkgdGhlIGJhY2tlbmQ/Ci0JICovCi0JaWYgKGxpa2VseShjb25zb2xlX3JlYWR5ICYmIGNv
bnNvbGVfZXZ0Y2huKSkgewotCQlub3RpZnlfcmVtb3RlX3ZpYV9ldnRjaG4oY29uc29sZV9ldnRj
aG4pOwotCi0JCS8qIFRoZXJlIGFyZSBzdGlsbCBieXRlcyBsZWZ0IHRvIHNlbmQgb3V0PyBJZiB5
ZXMsIGRvIG5vdAotCQkgKiBkaXNjYXJkIHRoZW0sIHJldHJ5IHNlbmRpbmcgKGVudGVycyBidXN5
IHdhaXRpbmcpCi0JCSAqLwotCQlpZiAoc2VudCA8IGxlbikKLQkJCWdvdG8gcmV0cnk7Ci0JfQot
CXJldHVybiBzZW50OworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gKHJldDIgIT0gLUVOT1RTVVAp
ID8gcmV0MiA6IHJldDsKKwlyZXR1cm4gTUFYKChyZXQpLCAocmV0MikpOwogfQogCi1zdGF0aWMg
dm9pZCBodmNvbnNvbGVfaW5wdXQoZXZ0Y2huX3BvcnRfdCBwb3J0IF9fdW51c2VkLAotCQkJICAg
IHN0cnVjdCBfX3JlZ3MgKnJlZ3MgX191bnVzZWQsCi0JCQkgICAgdm9pZCAqZGF0YSBfX3VudXNl
ZCkKK3ZvaWQgcHJlcGFyZV9jb25zb2xlKHZvaWQpCiB7Ci0JLyogTk9UIElNUExFTUVOVEVEIFlF
VCAqLworCWh2X2NvbnNvbGVfcHJlcGFyZSgpOwogfQogCi12b2lkIGh2Y29uc29sZV9mbHVzaCh2
b2lkKQordm9pZCBmbHVzaF9jb25zb2xlKHZvaWQpCiB7Ci0Jc3RydWN0IHhlbmNvbnNfaW50ZXJm
YWNlICppbnRmOwotCi0JaWYgKCFjb25zb2xlX3JlYWR5KQotCQlyZXR1cm47Ci0KLQlpbnRmID0g
Y29uc29sZV9yaW5nOwotCWlmICh1bmxpa2VseSghaW50ZikpCi0JCXJldHVybjsKLQotCXdoaWxl
IChpbnRmLT5vdXRfY29ucyA8IGludGYtPm91dF9wcm9kKQotCQliYXJyaWVyKCk7CisJaHZfY29u
c29sZV9mbHVzaCgpOwogfQogCi12b2lkIF9saWJ4ZW5wbGF0X2luaXRfY29uc29sZSh2b2lkKQor
dm9pZCBpbml0X2NvbnNvbGUodm9pZCkKIHsKLQlpbnQgZXJyOwotCi0JVUtfQVNTRVJUKGNvbnNv
bGVfcmluZyAhPSBOVUxMKTsKLQotCXVrX3ByX2RlYnVnKCJodmNvbnNvbGUgQCAlcCAoZXZ0Y2hu
OiAlIlBSSXUzMiIpXG4iLAotCQkgICAgY29uc29sZV9yaW5nLCBjb25zb2xlX2V2dGNobik7Ci0K
LQllcnIgPSBiaW5kX2V2dGNobihjb25zb2xlX2V2dGNobiwgaHZjb25zb2xlX2lucHV0LCBOVUxM
KTsKLQlpZiAoZXJyIDw9IDApCi0JCVVLX0NSQVNIKCJGYWlsZWQgdG8gYmluZCBldmVudCBjaGFu
bmVsIGZvciBodmNvbnNvbGU6ICVpXG4iLAotCQkJIGVycik7Ci0JdW5tYXNrX2V2dGNobihjb25z
b2xlX2V2dGNobik7Ci0KLQljb25zb2xlX3JlYWR5ID0gMTsgLyogZW5hYmxlIG5vdGlmaWNhdGlv
biBvZiBiYWNrZW5kICovCi0JLyogZmx1c2ggcXVldWVkIG91dHB1dCAqLwotCW5vdGlmeV9yZW1v
dGVfdmlhX2V2dGNobihjb25zb2xlX2V2dGNobik7CisJaHZfY29uc29sZV9pbml0KCk7CiB9CiAK
IGludCB1a3BsYXRfY291dGQoY29uc3QgY2hhciAqc3RyLCB1bnNpZ25lZCBpbnQgbGVuKQogewor
CWludCByZXQsIHJldDI7CisKIAlpZiAodW5saWtlbHkobGVuID09IDApKQogCQlsZW4gPSBzdHJu
bGVuKHN0ciwgbGVuKTsKIAotI2lmIENPTkZJR19YRU5fREJHRU1FUkdFTkNZCi0JcmV0dXJuIGVt
ZXJnZW5jeV9vdXRwdXQoc3RyLCBsZW4pOwotI2Vsc2UKLQlyZXR1cm4gaHZjb25zb2xlX291dHB1
dChzdHIsIGxlbik7Ci0jZW5kaWYKKwlyZXQgID0gZW1nX2NvbnNvbGVfb3V0cHV0X2Qoc3RyLCBs
ZW4pOworCXJldDIgPSBodl9jb25zb2xlX291dHB1dF9kKHN0ciwgbGVuKTsKKwlyZXR1cm4gcmV0
dXJuY29kZShyZXQsIHJldDIpOwogfQogCi1pbnQgdWtwbGF0X2NvdXRrKGNvbnN0IGNoYXIgKnN0
ciBfX3VudXNlZCwgdW5zaWduZWQgaW50IGxlbiBfX3VudXNlZCkKK2ludCB1a3BsYXRfY291dGso
Y29uc3QgY2hhciAqc3RyLCB1bnNpZ25lZCBpbnQgbGVuKQogeworCWludCByZXQsIHJldDI7CisK
IAlpZiAodW5saWtlbHkobGVuID09IDApKQogCQlsZW4gPSBzdHJubGVuKHN0ciwgbGVuKTsKIAot
CXJldHVybiBodmNvbnNvbGVfb3V0cHV0KHN0ciwgbGVuKTsKKwlyZXQgID0gZW1nX2NvbnNvbGVf
b3V0cHV0X2soc3RyLCBsZW4pOworCXJldDIgPSBodl9jb25zb2xlX291dHB1dF9rKHN0ciwgbGVu
KTsKKwlyZXR1cm4gcmV0dXJuY29kZShyZXQsIHJldDIpOwogfQogCi1pbnQgdWtwbGF0X2Npbmso
Y2hhciAqc3RyLCB1bnNpZ25lZCBpbnQgbWF4bGVuKQoraW50IHVrcGxhdF9jaW5rKGNoYXIgKnN0
ciBfX21heWJlX3VudXNlZCwgdW5zaWduZWQgaW50IG1heGxlbiBfX21heWJlX3VudXNlZCkKIHsK
LQlpbnQgcmVhZCA9IDA7Ci0JWEVOQ09OU19SSU5HX0lEWCBjb25zLCBwcm9kOwotCi0JY29ucyA9
IGNvbnNvbGVfcmluZy0+aW5fY29uczsKLQlwcm9kID0gY29uc29sZV9yaW5nLT5pbl9wcm9kOwot
CXJtYigpOyAvKiBtYWtlIHN1cmUgaW5fY29ucywgaW5fcHJvZCBhcmUgcmVhZCBiZWZvcmUgZW5x
dWV1aW5nICovCi0JVUtfQlVHT04oKHByb2QgLSBjb25zKSA+IHNpemVvZihjb25zb2xlX3Jpbmct
PmluKSk7Ci0KLQl3aGlsZSAoY29ucyAhPSBwcm9kICYmIG1heGxlbiA+IDApIHsKLQkJKihzdHIg
KyByZWFkKSA9ICooY29uc29sZV9yaW5nLT5pbisKLQkJCQkgIE1BU0tfWEVOQ09OU19JRFgoY29u
cywgY29uc29sZV9yaW5nLT5pbikpOwotCQlyZWFkKys7Ci0JCWNvbnMrKzsKLQkJbWF4bGVuLS07
Ci0JfQotCi0Jd21iKCk7IC8qIGVuc3VyZSBmaW5pc2hlZCBvcGVyYXRpb24gYmVmb3JlIHVwZGF0
aW5nIGluX2NvbnMgKi8KLQljb25zb2xlX3JpbmctPmluX2NvbnMgPSBjb25zOwotCi0JcmV0dXJu
IHJlYWQ7CisJcmV0dXJuIGh2X2NvbnNvbGVfaW5wdXQoc3RyLCBtYXhsZW4pOwogfQpkaWZmIC0t
Z2l0IGEvcGxhdC94ZW4vZW1nX2NvbnNvbGUuYyBiL3BsYXQveGVuL2VtZ19jb25zb2xlLmMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjVjZDBkMjQ2Ci0tLSAvZGV2L251bGwK
KysrIGIvcGxhdC94ZW4vZW1nX2NvbnNvbGUuYwpAQCAtMCwwICsxLDkwIEBACisvKiBTUERYLUxp
Y2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlIGFuZCBNSVQgKi8KKy8qCisgKiBBdXRob3Jz
OiBTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4KKyAqCisgKiBDb3B5cmln
aHQgKGMpIDIwMTksIE5FQyBMYWJvcmF0b3JpZXMgRXVyb3BlIEdtYkgsIE5FQyBDb3Jwb3JhdGlv
bi4KKyAqICAgICAgICAgICAgICAgICAgICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogICAgdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTICJBUyBJUyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisg
KiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIg
T1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKiBU
SElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgor
ICovCisKKy8qCisgKiBTb21lIG9mIHRoaXMgY29kZSB3YXMgcG9ydGVkIGZyb20gTWluaS1PUzoK
KyAqICBjb25zb2xlL3hlbmNvbnNfcmluZy5jIGFuZCBjb25zb2xlL2NvbnNvbGUuYworICovCisv
KgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioKKyAqIChDKSAyMDA2IC0gR3J6ZWdvcnogTWlsb3MgLSBD
YW1icmlkZ2UgVW5pdmVyc2l0eQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAgICAgICAg
RmlsZTogY29uc29sZS5oCisgKiAgICAgIEF1dGhvcjogR3J6ZWdvcnogTWlsb3MKKyAqICAgICBD
aGFuZ2VzOgorICoKKyAqICAgICAgICBEYXRlOiBNYXIgMjAwNgorICoKKyAqIEVudmlyb25tZW50
OiBYZW4gTWluaW1hbCBPUworICogRGVzY3JpcHRpb246IENvbnNvbGUgaW50ZXJmYWNlLgorICoK
KyAqIEhhbmRsZXMgY29uc29sZSBJL08uIERlZmluZXMgcHJpbnRrLgorICoKKyAqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJn
ZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisgKiBvZiB0aGlzIHNvZnR3YXJlIGFu
ZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KKyAq
IGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRo
b3V0IGxpbWl0YXRpb24gdGhlCisgKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdl
LCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKKyAqIHNlbGwgY29waWVz
IG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3
YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBl
cm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9yIHN1
YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUg
SVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVT
UyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyAqIEFVVEhP
UlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMg
T1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1Qs
IFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVD
VElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCisgKiBERUFMSU5HUyBJ
TiBUSEUgU09GVFdBUkUuCisgKi8KKworI2luY2x1ZGUgPHVrL2Vzc2VudGlhbHMuaD4KKyNpbmNs
dWRlIDxjb21tb24vaHlwZXJ2aXNvci5oPgorCisjZGVmaW5lIF9fWEVOX0NPTlNPTEVfSU1QTF9f
CisjaW5jbHVkZSAiZW1nX2NvbnNvbGUuaCIKKworaW50IGVtZ19jb25zb2xlX291dHB1dChjb25z
dCBjaGFyICpzdHIsIHVuc2lnbmVkIGludCBsZW4pCit7CisJaW50IHJjOworCisJcmMgPSBIWVBF
UlZJU09SX2NvbnNvbGVfaW8oQ09OU09MRUlPX3dyaXRlLCBsZW4sIERFQ09OU1QoY2hhciAqLCBz
dHIpKTsKKwlpZiAodW5saWtlbHkocmMgPCAwKSkKKwkJcmV0dXJuIHJjOworCXJldHVybiBsZW47
Cit9CmRpZmYgLS1naXQgYS9wbGF0L3hlbi9lbWdfY29uc29sZS5oIGIvcGxhdC94ZW4vZW1nX2Nv
bnNvbGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uZDk4Mzg3NDgKLS0t
IC9kZXYvbnVsbAorKysgYi9wbGF0L3hlbi9lbWdfY29uc29sZS5oCkBAIC0wLDAgKzEsNjUgQEAK
Ky8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8KKy8qCisgKiBBdXRo
b3JzOiBTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4KKyAqCisgKiBDb3B5
cmlnaHQgKGMpIDIwMTksIE5FQyBMYWJvcmF0b3JpZXMgRXVyb3BlIEdtYkgsIE5FQyBDb3Jwb3Jh
dGlvbi4KKyAqICAgICAgICAgICAgICAgICAgICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogICAgdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTICJBUyBJUyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
CisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xE
RVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisg
KiBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZ
LgorICovCisKKyNpZm5kZWYgX19YRU5fRU1HX0NPTlNPTEVfSF9fCisjZGVmaW5lIF9fWEVOX0VN
R19DT05TT0xFX0hfXworCisjaW5jbHVkZSA8ZXJybm8uaD4KKworI2lmbmRlZiBfX1hFTl9DT05T
T0xFX0lNUExfXworI2Vycm9yIERvIG5vdCBpbmNsdWRlIHRoaXMgaGVhZGVyIGRpcmVjdGx5LCB1
c2UgPGNvbW1vbi9jb25zb2xlLmg+IGluc3RlYWQuCisjZW5kaWYgLyogIV9fWEVOX0NPTlNPTEVf
SU1QTF9fKi8KKworI2lmIChDT05GSUdfWEVOX0tFUk5FTF9FTUdfQ09OU09MRSB8fCBDT05GSUdf
WEVOX0RFQlVHX0VNR19DT05TT0xFKQoraW50IGVtZ19jb25zb2xlX291dHB1dChjb25zdCBjaGFy
ICpzdHIsIHVuc2lnbmVkIGludCBsZW4pOworI2VuZGlmIC8qIChDT05GSUdfWEVOX0tFUk5FTF9F
TUdfQ09OU09MRSB8fCBDT05GSUdfWEVOX0RFQlVHX0VNR19DT05TT0xFKSAqLworCisjaWYgQ09O
RklHX1hFTl9LRVJORUxfRU1HX0NPTlNPTEUKKyNkZWZpbmUgZW1nX2NvbnNvbGVfb3V0cHV0X2so
c3RyLCBsZW4pIFwKKwllbWdfY29uc29sZV9vdXRwdXQoKHN0ciksIChsZW4pKQorI2Vsc2UKKyNk
ZWZpbmUgZW1nX2NvbnNvbGVfb3V0cHV0X2soc3RyLCBsZW4pIFwKKwkoLUVOT1RTVVApCisjZW5k
aWYgLyogQ09ORklHX1hFTl9LRVJORUxfRU1HX0NPTlNPTEUgKi8KKworI2lmIENPTkZJR19YRU5f
REVCVUdfRU1HX0NPTlNPTEUKKyNkZWZpbmUgZW1nX2NvbnNvbGVfb3V0cHV0X2Qoc3RyLCBsZW4p
IFwKKwllbWdfY29uc29sZV9vdXRwdXQoKHN0ciksIChsZW4pKQorI2Vsc2UKKyNkZWZpbmUgZW1n
X2NvbnNvbGVfb3V0cHV0X2Qoc3RyLCBsZW4pIFwKKwkoLUVOT1RTVVApCisjZW5kaWYgLyogQ09O
RklHX1hFTl9ERUJVR19FTUdfQ09OU09MRSAqLworCisjZW5kaWYgLyogX19YRU5fRU1HX0NPTlNP
TEVfSF9fICovCmRpZmYgLS1naXQgYS9wbGF0L3hlbi9odl9jb25zb2xlLmMgYi9wbGF0L3hlbi9o
dl9jb25zb2xlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLmMzMmE0MTU3
Ci0tLSAvZGV2L251bGwKKysrIGIvcGxhdC94ZW4vaHZfY29uc29sZS5jCkBAIC0wLDAgKzEsMjU0
IEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlIGFuZCBNSVQgKi8K
Ky8qCisgKiBBdXRob3JzOiBTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4K
KyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTksIE5FQyBMYWJvcmF0b3JpZXMgRXVyb3BlIEdtYkgs
IE5FQyBDb3Jwb3JhdGlvbi4KKyAqICAgICAgICAgICAgICAgICAgICAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmln
aHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiAgICBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogICAg
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqCisgKiBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklF
RCBJTiBBTlkgV0FZLgorICovCisKKy8qCisgKiBTb21lIG9mIHRoaXMgY29kZSB3YXMgcG9ydGVk
IGZyb20gTWluaS1PUzoKKyAqICBjb25zb2xlL3hlbmNvbnNfcmluZy5jIGFuZCBjb25zb2xlL2Nv
bnNvbGUuYworICovCisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIChDKSAyMDA2IC0gR3J6
ZWdvcnogTWlsb3MgLSBDYW1icmlkZ2UgVW5pdmVyc2l0eQorICoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK
KyAqCisgKiAgICAgICAgRmlsZTogY29uc29sZS5oCisgKiAgICAgIEF1dGhvcjogR3J6ZWdvcnog
TWlsb3MKKyAqICAgICBDaGFuZ2VzOgorICoKKyAqICAgICAgICBEYXRlOiBNYXIgMjAwNgorICoK
KyAqIEVudmlyb25tZW50OiBYZW4gTWluaW1hbCBPUworICogRGVzY3JpcHRpb246IENvbnNvbGUg
aW50ZXJmYWNlLgorICoKKyAqIEhhbmRsZXMgY29uc29sZSBJL08uIERlZmluZXMgcHJpbnRrLgor
ICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVk
LCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisgKiBvZiB0
aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29m
dHdhcmUiKSwgdG8KKyAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24s
IGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCisgKiByaWdodHMgdG8gdXNlLCBjb3B5
LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IK
KyAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRv
IHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8g
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90
aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBh
bGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisg
KiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBB
TlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRF
RCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUKKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkg
Q0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJ
T04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQg
T0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVS
CisgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKi8KKworI2luY2x1ZGUgPGludHR5cGVz
Lmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8dWsvcGxhdC9jb25zb2xlLmg+Cisj
aW5jbHVkZSA8dWsvYXJjaC9sY3B1Lmg+CisjaW5jbHVkZSA8dWsvYXNzZXJ0Lmg+CisjaW5jbHVk
ZSA8dWsvZXNzZW50aWFscy5oPgorI2luY2x1ZGUgPHVrL2NvbmZpZy5oPgorCisjZGVmaW5lIF9f
WEVOX0NPTlNPTEVfSU1QTF9fCisjaW5jbHVkZSAiaHZfY29uc29sZS5oIgorCisjaW5jbHVkZSA8
Y29tbW9uL2V2ZW50cy5oPgorI2luY2x1ZGUgPGNvbW1vbi9oeXBlcnZpc29yLmg+CisjaW5jbHVk
ZSA8eGVuL3hlbi5oPgorCisjaWYgKGRlZmluZWQgX19YODZfMzJfXykgfHwgKGRlZmluZWQgX19Y
ODZfNjRfXykKKyNpbmNsdWRlIDx4ZW4teDg2L3NldHVwLmg+CisjaW5jbHVkZSA8eGVuLXg4Ni9t
bS5oPgorI2lmIGRlZmluZWQgX19YODZfMzJfXworI2luY2x1ZGUgPHhlbi14ODYvaHlwZXJjYWxs
MzIuaD4KKyNlbGlmIGRlZmluZWQgX19YODZfNjRfXworI2luY2x1ZGUgPHhlbi14ODYvaHlwZXJj
YWxsNjQuaD4KKyNlbmRpZgorI2VsaWYgKGRlZmluZWQgX19BUk1fMzJfXykgfHwgKGRlZmluZWQg
X19BUk1fNjRfXykKKyNpbmNsdWRlIDx4ZW4tYXJtL21tLmg+CisjaW5jbHVkZSA8eGVuLWFybS9o
eXBlcmNhbGwuaD4KKyNlbmRpZgorI2luY2x1ZGUgPHhlbi9pby9jb25zb2xlLmg+CisjaW5jbHVk
ZSA8eGVuL2lvL3Byb3RvY29scy5oPgorI2luY2x1ZGUgPHhlbi9pby9yaW5nLmg+CisjaWZuZGVm
IENPTkZJR19QQVJBVklSVAorI2luY2x1ZGUgPHhlbi9odm0vcGFyYW1zLmg+CisjZW5kaWYKKwor
c3RhdGljIHN0cnVjdCB4ZW5jb25zX2ludGVyZmFjZSAqY29uc29sZV9yaW5nOworc3RhdGljIHVp
bnQzMl90IGNvbnNvbGVfZXZ0Y2huOworc3RhdGljIGludCBjb25zb2xlX3JlYWR5OworCisjaWZk
ZWYgQ09ORklHX1BBUkFWSVJUCit2b2lkIGh2X2NvbnNvbGVfcHJlcGFyZSh2b2lkKQoreworCWNv
bnNvbGVfcmluZyA9IG1mbl90b192aXJ0KEhZUEVSVklTT1Jfc3RhcnRfaW5mby0+Y29uc29sZS5k
b21VLm1mbik7CisJY29uc29sZV9ldnRjaG4gPSBIWVBFUlZJU09SX3N0YXJ0X2luZm8tPmNvbnNv
bGUuZG9tVS5ldnRjaG47Cit9CisjZWxzZQordm9pZCBodl9jb25zb2xlX3ByZXBhcmUodm9pZCkK
K3sKKwkvKiBOT1QgSU1QTEVNRU5URUQgWUVUICovCit9CisjZW5kaWYKKworLyoKKyAqIGh2X2Nv
bnNvbGVfb3V0cHV0IG9wZXJhdGVzIGluIHR3byBtb2RlczogYnVmZmVyZWQgYW5kIGluaXRpYWxp
emVkLgorICogVGhlIGJ1ZmZlcmVkIG1vZGUgaXMgYXV0b21hdGljYWxseSBhY3RpdmF0ZWQgYWZ0
ZXIKKyAqIF9saWJ4ZW5wbGF0X3ByZXBhcmVfY29uc29sZSgpIHdhcyBjYWxsZWQgYW5kIHdlIGtu
b3cgd2hlcmUgdGhlIGNvbnNvbGUgcmluZworICogaXMuIFRoZSBvdXRwdXQgc3RyaW5nIGlzIHB1
dCB0byB0aGUgY29uc29sZSByaW5nIHVudGlsIHRoZSByaW5nIGlzIGZ1bGwuIEFueQorICogZnVy
dGhlciBjaGFyYWN0ZXJzIGFyZSBkaXNjYXJkZWQuIFNpbmNlIHRoZSBldmVudCBjaGFubmVsIGlz
IG5vdCBpbml0aWFsaXplZAorICogeWV0LCB0aGUgYmFja2VuZCBpcyBub3Qgbm90aWZpZWQuIFRo
aXMgbW9kZSBpcyBpbnRyb2R1Y2VkIHRvIHN1cHBvcnQgZWFybHkKKyAqIHByaW50aW5nLCBldmVu
IGJlZm9yZSBldmVudHMgYXJlIG5vdCBpbml0aWFsaXplZC4KKyAqIF9saWJ4ZW5wbGF0X2luaXRf
Y29uc29sZSgpIGZpbmFsaXplcyB0aGUgaW5pdGlhbGl6YXRpb24gYW5kIGVuYWJsZXMKKyAqIHRo
ZSBldmVudCBjaGFubmVsLiBGcm9tIG5vdyBvbiwgdGhlIGNvbnNvbGUgYmFja2VuZCBpcyBub3Rp
ZmllZCB3aGVuZXZlcgorICogd2UgcHV0IGNoYXJhY3RlcnMgb24gdGhlIGNvbnNvbGUgcmluZy4g
V2hlbmV2ZXIgdGhpcyByaW5nIGlzIGZ1bGwgYW5kIHRoZXJlCisgKiBhcmUgc3RpbGwgY2hhcmFj
dGVycyB0aGF0IHNob3VsZCBiZSBwcmludGVkLCB3ZSBhcmUgZW50ZXJpbmcgYSBidXN5IGxvb3Ag
YW5kCisgKiB3YWl0IGZvciB0aGUgYmFja2VuZCB0byBtYWtlIHVzIHNwYWNlIGFnYWluLiBPZiBj
b3Vyc2UgdGhpcyBpcyBzbG93OiBkbyBub3QKKyAqIHByaW50IHNvIG11Y2ghIDstKQorICovCitp
bnQgaHZfY29uc29sZV9vdXRwdXQoY29uc3QgY2hhciAqc3RyLCB1bnNpZ25lZCBpbnQgbGVuKQor
eworCXVuc2lnbmVkIGludCBzZW50ID0gMDsKKwlYRU5DT05TX1JJTkdfSURYIGNvbnMsIHByb2Q7
CisKKwlpZiAodW5saWtlbHkoIWNvbnNvbGVfcmluZykpCisJCXJldHVybiBzZW50OworCityZXRy
eToKKwljb25zID0gY29uc29sZV9yaW5nLT5vdXRfY29uczsKKwlwcm9kID0gY29uc29sZV9yaW5n
LT5vdXRfcHJvZDsKKworCW1iKCk7IC8qIG1ha2Ugc3VyZSB3ZSBoYXZlIGNvbnMgJiBwcm9kIGJl
Zm9yZSB0b3VjaGluZyB0aGUgcmluZyAqLworCVVLX0JVR09OKChwcm9kIC0gY29ucykgPiBzaXpl
b2YoY29uc29sZV9yaW5nLT5vdXQpKTsKKworCXdoaWxlICgoc2VudCA8IGxlbikgJiYgKChwcm9k
IC0gY29ucykgPCBzaXplb2YoY29uc29sZV9yaW5nLT5vdXQpKSkgeworCQlpZiAoc3RyW3NlbnRd
ID09ICdcbicpIHsKKwkJCS8qIHByZXBlbmQgJ1xyJyBmb3IgY29udmVydGluZyAnXG4nIHRvICdc
cicnXG4nICovCisJCQlpZiAoKHByb2QgKyAxIC0gY29ucykgPj0gc2l6ZW9mKGNvbnNvbGVfcmlu
Zy0+b3V0KSkKKwkJCQlicmVhazsgLyogbm90IGVub3VnaCBzcGFjZSBmb3IgJ1xyJyBhbmQgJ1xu
JyEgKi8KKworCQkJY29uc29sZV9yaW5nLT5vdXRbTUFTS19YRU5DT05TX0lEWChwcm9kKyssCisJ
CQkJCQkJICAgY29uc29sZV9yaW5nLT5vdXQpXSA9CisJCQkJJ1xyJzsKKwkJfQorCisJCWNvbnNv
bGVfcmluZy0+b3V0W01BU0tfWEVOQ09OU19JRFgocHJvZCsrLCBjb25zb2xlX3JpbmctPm91dCld
ID0KKwkJCXN0cltzZW50XTsKKwkJc2VudCsrOworCX0KKwl3bWIoKTsgLyogZW5zdXJlIGNoYXJh
Y3RlcnMgYXJlIHdyaXR0ZW4gYmVmb3JlIGluY3JlYXNpbmcgb3V0X3Byb2QgKi8KKwljb25zb2xl
X3JpbmctPm91dF9wcm9kID0gcHJvZDsKKworCS8qIElzIHRoZSBjb25zb2xlIGZ1bGx5IGluaXRp
YWxpemVkPworCSAqIEFyZSB3ZSBhYmxlIHRvIG5vdGlmeSB0aGUgYmFja2VuZD8KKwkgKi8KKwlp
ZiAobGlrZWx5KGNvbnNvbGVfcmVhZHkgJiYgY29uc29sZV9ldnRjaG4pKSB7CisJCW5vdGlmeV9y
ZW1vdGVfdmlhX2V2dGNobihjb25zb2xlX2V2dGNobik7CisKKwkJLyogVGhlcmUgYXJlIHN0aWxs
IGJ5dGVzIGxlZnQgdG8gc2VuZCBvdXQ/IElmIHllcywgZG8gbm90CisJCSAqIGRpc2NhcmQgdGhl
bSwgcmV0cnkgc2VuZGluZyAoZW50ZXJzIGJ1c3kgd2FpdGluZykKKwkJICovCisJCWlmIChzZW50
IDwgbGVuKQorCQkJZ290byByZXRyeTsKKwl9CisJcmV0dXJuIHNlbnQ7Cit9CisKK3ZvaWQgaHZf
Y29uc29sZV9mbHVzaCh2b2lkKQoreworCXN0cnVjdCB4ZW5jb25zX2ludGVyZmFjZSAqaW50ZjsK
KworCWlmICghY29uc29sZV9yZWFkeSkKKwkJcmV0dXJuOworCisJaW50ZiA9IGNvbnNvbGVfcmlu
ZzsKKwlpZiAodW5saWtlbHkoIWludGYpKQorCQlyZXR1cm47CisKKwl3aGlsZSAoaW50Zi0+b3V0
X2NvbnMgPCBpbnRmLT5vdXRfcHJvZCkKKwkJYmFycmllcigpOworfQorCitpbnQgaHZfY29uc29s
ZV9pbnB1dChjaGFyICpzdHIsIHVuc2lnbmVkIGludCBtYXhsZW4pCit7CisJaW50IHJlYWQgPSAw
OworCVhFTkNPTlNfUklOR19JRFggY29ucywgcHJvZDsKKworCWNvbnMgPSBjb25zb2xlX3Jpbmct
PmluX2NvbnM7CisJcHJvZCA9IGNvbnNvbGVfcmluZy0+aW5fcHJvZDsKKwlybWIoKTsgLyogbWFr
ZSBzdXJlIGluX2NvbnMsIGluX3Byb2QgYXJlIHJlYWQgYmVmb3JlIGVucXVldWluZyAqLworCVVL
X0JVR09OKChwcm9kIC0gY29ucykgPiBzaXplb2YoY29uc29sZV9yaW5nLT5pbikpOworCisJd2hp
bGUgKGNvbnMgIT0gcHJvZCAmJiBtYXhsZW4gPiAwKSB7CisJCSooc3RyICsgcmVhZCkgPSAqKGNv
bnNvbGVfcmluZy0+aW4rCisJCQkJICBNQVNLX1hFTkNPTlNfSURYKGNvbnMsIGNvbnNvbGVfcmlu
Zy0+aW4pKTsKKwkJcmVhZCsrOworCQljb25zKys7CisJCW1heGxlbi0tOworCX0KKworCXdtYigp
OyAvKiBlbnN1cmUgZmluaXNoZWQgb3BlcmF0aW9uIGJlZm9yZSB1cGRhdGluZyBpbl9jb25zICov
CisJY29uc29sZV9yaW5nLT5pbl9jb25zID0gY29uczsKKworCXJldHVybiByZWFkOworfQorCitz
dGF0aWMgdm9pZCBodl9jb25zb2xlX2V2ZW50KGV2dGNobl9wb3J0X3QgcG9ydCBfX3VudXNlZCwK
KwkJCSAgICAgc3RydWN0IF9fcmVncyAqcmVncyBfX3VudXNlZCwKKwkJCSAgICAgdm9pZCAqZGF0
YSBfX3VudXNlZCkKK3sKKwkvKiBOT1QgSU1QTEVNRU5URUQgWUVUICovCit9CisKK3ZvaWQgaHZf
Y29uc29sZV9pbml0KHZvaWQpCit7CisJaW50IGVycjsKKworCVVLX0FTU0VSVChjb25zb2xlX3Jp
bmcgIT0gTlVMTCk7CisKKwl1a19wcl9kZWJ1ZygiaHZfY29uc29sZSBAICVwIChldnRjaG46ICUi
UFJJdTMyIilcbiIsCisJCSAgICBjb25zb2xlX3JpbmcsIGNvbnNvbGVfZXZ0Y2huKTsKKworCWVy
ciA9IGJpbmRfZXZ0Y2huKGNvbnNvbGVfZXZ0Y2huLCBodl9jb25zb2xlX2V2ZW50LCBOVUxMKTsK
KwlpZiAoZXJyIDw9IDApCisJCVVLX0NSQVNIKCJGYWlsZWQgdG8gYmluZCBldmVudCBjaGFubmVs
IGZvciBodl9jb25zb2xlOiAlaVxuIiwKKwkJCSBlcnIpOworCXVubWFza19ldnRjaG4oY29uc29s
ZV9ldnRjaG4pOworCisJY29uc29sZV9yZWFkeSA9IDE7IC8qIGVuYWJsZSBub3RpZmljYXRpb24g
b2YgYmFja2VuZCAqLworCS8qIGZsdXNoIHF1ZXVlZCBvdXRwdXQgKi8KKwlub3RpZnlfcmVtb3Rl
X3ZpYV9ldnRjaG4oY29uc29sZV9ldnRjaG4pOworfQpkaWZmIC0tZ2l0IGEvcGxhdC94ZW4vaHZf
Y29uc29sZS5oIGIvcGxhdC94ZW4vaHZfY29uc29sZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwLi42OWJlMWVkZQotLS0gL2Rldi9udWxsCisrKyBiL3BsYXQveGVuL2h2X2Nv
bnNvbGUuaApAQCAtMCwwICsxLDc4IEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNE
LTMtQ2xhdXNlICovCisvKgorICogQXV0aG9yczogU2ltb24gS3VlbnplciA8c2ltb24ua3Vlbnpl
ckBuZWNsYWIuZXU+CisgKgorICogQ29weXJpZ2h0IChjKSAyMDE5LCBORUMgTGFib3JhdG9yaWVz
IEV1cm9wZSBHbWJILCBORUMgQ29ycG9yYXRpb24uCisgKiAgICAgICAgICAgICAgICAgICAgIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBv
ZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cworICogICAgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqICAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICogVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNU
RUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4KKyAqLworCisjaWZuZGVmIF9fWEVOX0hWX0NPTlNP
TEVfSF9fCisjZGVmaW5lIF9fWEVOX0hWX0NPTlNPTEVfSF9fCisKKyNpbmNsdWRlIDxlcnJuby5o
PgorCisjaWZuZGVmIF9fWEVOX0NPTlNPTEVfSU1QTF9fCisjZXJyb3IgRG8gbm90IGluY2x1ZGUg
dGhpcyBoZWFkZXIgZGlyZWN0bHksIHVzZSA8Y29tbW9uL2NvbnNvbGUuaD4gaW5zdGVhZAorI2Vu
ZGlmIC8qICFfX1hFTl9DT05TT0xFX0lNUExfXyovCisKKyNpZiAoQ09ORklHX1hFTl9LRVJORUxf
SFZfQ09OU09MRSB8fCBDT05GSUdfWEVOX0RFQlVHX0hWX0NPTlNPTEUpCit2b2lkIGh2X2NvbnNv
bGVfcHJlcGFyZSh2b2lkKTsKK3ZvaWQgaHZfY29uc29sZV9pbml0KHZvaWQpOworaW50IGh2X2Nv
bnNvbGVfb3V0cHV0KGNvbnN0IGNoYXIgKnN0ciwgdW5zaWduZWQgaW50IGxlbik7Cit2b2lkIGh2
X2NvbnNvbGVfZmx1c2godm9pZCk7CitpbnQgaHZfY29uc29sZV9pbnB1dChjaGFyICpzdHIsIHVu
c2lnbmVkIGludCBtYXhsZW4pOworI2Vsc2UgLyogKENPTkZJR19YRU5fS0VSTkVMX0hWX0NPTlNP
TEUgfHwgQ09ORklHX1hFTl9ERUJVR19IVl9DT05TT0xFKSAqLworI2RlZmluZSBodl9jb25zb2xl
X3ByZXBhcmUoKQkJCVwKKwlkbyB7fSB3aGlsZSAoMCkKKyNkZWZpbmUgaHZfY29uc29sZV9pbml0
KCkgXAorCWRvIHt9IHdoaWxlICgwKQorI2RlZmluZSBodl9jb25zb2xlX2ZsdXNoKCkgXAorCWRv
IHt9IHdoaWxlICgwKQorI2RlZmluZSBodl9jb25zb2xlX2lucHV0KHN0ciwgbWF4bGVuKSBcCisJ
KC1FTk9UU1VQKQorI2VuZGlmIC8qIChDT05GSUdfWEVOX0tFUk5FTF9IVl9DT05TT0xFIHx8IENP
TkZJR19YRU5fREVCVUdfSFZfQ09OU09MRSkgKi8KKworI2lmIENPTkZJR19YRU5fS0VSTkVMX0hW
X0NPTlNPTEUKKyNkZWZpbmUgaHZfY29uc29sZV9vdXRwdXRfayhzdHIsIGxlbikgXAorCWh2X2Nv
bnNvbGVfb3V0cHV0KChzdHIpLCAobGVuKSkKKyNlbHNlCisjZGVmaW5lIGh2X2NvbnNvbGVfb3V0
cHV0X2soc3RyLCBsZW4pIFwKKwkoLUVOT1RTVVApCisjZW5kaWYgLyogQ09ORklHX1hFTl9LRVJO
RUxfSFZfQ09OU09MRSAqLworCisjaWYgQ09ORklHX1hFTl9ERUJVR19IVl9DT05TT0xFCisjZGVm
aW5lIGh2X2NvbnNvbGVfb3V0cHV0X2Qoc3RyLCBsZW4pIFwKKwlodl9jb25zb2xlX291dHB1dCgo
c3RyKSwgKGxlbikpCisjZWxzZQorI2RlZmluZSBodl9jb25zb2xlX291dHB1dF9kKHN0ciwgbGVu
KSBcCisJKC1FTk9UU1VQKQorI2VuZGlmIC8qIENPTkZJR19YRU5fREVCVUdfSFZfQ09OU09MRSAq
LworCisjZW5kaWYgLyogX19YRU5fSFZfQ09OU09MRV9IX18gKi8KZGlmZiAtLWdpdCBhL3BsYXQv
eGVuL2luY2x1ZGUvY29tbW9uL2NvbnNvbGUuaCBiL3BsYXQveGVuL2luY2x1ZGUvY29tbW9uL2Nv
bnNvbGUuaAppbmRleCBiNGYxYjUxZS4uMjNjNmIzMmUgMTAwNjQ0Ci0tLSBhL3BsYXQveGVuL2lu
Y2x1ZGUvY29tbW9uL2NvbnNvbGUuaAorKysgYi9wbGF0L3hlbi9pbmNsdWRlL2NvbW1vbi9jb25z
b2xlLmgKQEAgLTIsNyArMiw4IEBACiAvKgogICogQXV0aG9yczogU2ltb24gS3VlbnplciA8c2lt
b24ua3VlbnplckBuZWNsYWIuZXU+CiAgKgotICogQ29weXJpZ2h0IChjKSAyMDE3LCBORUMgRXVy
b3BlIEx0ZC4sIE5FQyBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoYykgMjAxOSwgTkVDIExhYm9yYXRvcmllcyBFdXJvcGUgR21iSCwgTkVDIENvcnBvcmF0
aW9uLgorICogICAgICAgICAgICAgICAgICAgICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCwxNCArMzksMTQgQEAKIC8qIGtlZXBzIGJ1
ZmZlcmluZyBjb25zb2xlIG1lc3NhZ2UKICAqIChvbiBQVjogc3RhcnRfaW5mbyBuZWVkIHRvIGJl
IGxvYWRlZCkKICAqLwotdm9pZCBfbGlieGVucGxhdF9wcmVwYXJlX2NvbnNvbGUodm9pZCk7Cit2
b2lkIHByZXBhcmVfY29uc29sZSh2b2lkKTsKIAogLyogaW5pdGlhbGl6ZXMgdGhlIGNvbnNvbGUs
IHNlbmRzIG91dCBidWZmZXJlZCBtZXNzYWdlcwogICogKGV2ZW50IHN5c3RlbSBoYXMgdG8gYmUg
aW5pdGlhbGl6ZWQpCiAgKi8KLXZvaWQgX2xpYnhlbnBsYXRfaW5pdF9jb25zb2xlKHZvaWQpOwor
dm9pZCBpbml0X2NvbnNvbGUodm9pZCk7CiAKIAotdm9pZCBodmNvbnNvbGVfZmx1c2godm9pZCk7
Cit2b2lkIGZsdXNoX2NvbnNvbGUodm9pZCk7CiAKICNlbmRpZiAvKiBfX0NPTlNPTEVfSF9fICov
CmRpZmYgLS1naXQgYS9wbGF0L3hlbi9zaHV0ZG93bi5jIGIvcGxhdC94ZW4vc2h1dGRvd24uYwpp
bmRleCAyNzJlY2U0Ny4uYzdiZjEyZDcgMTAwNjQ0Ci0tLSBhL3BsYXQveGVuL3NodXRkb3duLmMK
KysrIGIvcGxhdC94ZW4vc2h1dGRvd24uYwpAQCAtNjYsNyArNjYsNyBAQCB2b2lkIHVrcGxhdF90
ZXJtaW5hdGUoZW51bSB1a3BsYXRfZ3N0YXRlIHJlcXVlc3QpCiAJCWJyZWFrOwogCX0KIAotCWh2
Y29uc29sZV9mbHVzaCgpOworCWZsdXNoX2NvbnNvbGUoKTsKIAogCWZvciAoOzspIHsKIAkJc3Ry
dWN0IHNjaGVkX3NodXRkb3duIHNjaGVkX3NodXRkb3duID0geyAucmVhc29uID0gcmVhc29uIH07
CmRpZmYgLS1naXQgYS9wbGF0L3hlbi94ODYvc2V0dXAuYyBiL3BsYXQveGVuL3g4Ni9zZXR1cC5j
CmluZGV4IDYwYTlmOWU2Li4zYzU2MzFkMyAxMDA2NDQKLS0tIGEvcGxhdC94ZW4veDg2L3NldHVw
LmMKKysrIGIvcGxhdC94ZW4veDg2L3NldHVwLmMKQEAgLTE3Myw3ICsxNzMsNyBAQCB2b2lkIF9s
aWJ4ZW5wbGF0X3g4NmVudHJ5KHZvaWQgKnN0YXJ0X2luZm8pCiAJX2luaXRfdHJhcHMoKTsKIAlf
aW5pdF9jcHVmZWF0dXJlcygpOwogCUhZUEVSVklTT1Jfc3RhcnRfaW5mbyA9IChzdGFydF9pbmZv
X3QgKilzdGFydF9pbmZvOwotCV9saWJ4ZW5wbGF0X3ByZXBhcmVfY29uc29sZSgpOyAvKiBlbmFi
bGVzIGJ1ZmZlcmluZyBmb3IgY29uc29sZSAqLworCXByZXBhcmVfY29uc29sZSgpOyAvKiBlbmFi
bGVzIGJ1ZmZlcmluZyBmb3IgY29uc29sZSAqLwogCiAJdWtfcHJfaW5mbygiRW50ZXJpbmcgZnJv
bSBYZW4gKHg4NiwgUFYpLi4uXG4iKTsKIApAQCAtMTkxLDcgKzE5MSw3IEBAIHZvaWQgX2xpYnhl
bnBsYXRfeDg2ZW50cnkodm9pZCAqc3RhcnRfaW5mbykKIAogCV9pbml0X21lbSgpOwogCi0JX2xp
YnhlbnBsYXRfaW5pdF9jb25zb2xlKCk7CisJaW5pdF9jb25zb2xlKCk7CiAKIAl1a3BsYXRfZW50
cnlfYXJncChDT05GSUdfVUtfTkFNRSwgY21kbGluZSwgTUFYX0NNRExJTkVfU0laRSk7CiB9Ci0t
IAoyLjExLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0
Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9z
LWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Feb 13 13:07:50 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 13 Feb 2019 13:07:50 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gtuGS-0003Re-Lc; Wed, 13 Feb 2019 13:07:48 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=ZwM7=QU=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1gtuGR-0003RZ-LV
 for minios-devel@lists.xen.org; Wed, 13 Feb 2019 13:07:47 +0000
X-Inumbo-ID: 58254aba-2f90-11e9-b501-ef825633ea4b
Received: from queen.nlehd.de (unknown [195.37.154.80])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id 58254aba-2f90-11e9-b501-ef825633ea4b;
 Wed, 13 Feb 2019 13:07:41 +0000 (UTC)
Received: from c414.ant-net (c414.ant-net [192.168.0.156])
 by queen.nlehd.de (Postfix) with ESMTP id 2B37E413FB;
 Wed, 13 Feb 2019 14:07:42 +0100 (CET)
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: minios-devel@lists.xen.org
Date: Wed, 13 Feb 2019 14:07:37 +0100
Message-Id: <20190213130737.30504-1-simon.kuenzer@neclab.eu>
X-Mailer: git-send-email 2.11.0
Subject: [Minios-devel] [UNIKRAFT PATCH v2] plat/xen: CPU definition for
 Arm32
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Simon Kuenzer <simon.kuenzer@neclab.eu>, sharan.santhanam@neclab.eu
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SW50cm9kdWNlIG1pbmltYWwgQ1BVIGRlZmluaXRvbnMgdG8gZW5hYmxlIGNvbXBpbGluZyBmb3Ig
QXJtMzIuClRoaXMgY29tbWl0cyBhbHNvIHJlbW92ZXMgeDg2IHNwZWNpZmljIENQVSBmdW5jdGlv
bnMgZnJvbSB0aGUKQXJtMzIgYnVpbGQgdW5pdCBhbmQgaW50cm9kdWNlcyBDT05GSUdfWE5fSFZN
TElURSBhcyBpbnZpc2libGUKbWVudSBjb25maWd1cmFpdG9uLiBJdHMgaW50ZW50aW9uIGlzIHRv
IHN1cHBvcnQgc3dpdGNoaW5nCmJldHdlZW4gUFYgYW5kIFBWSCBtb2RlIGxhdGVyLiBGb3Igbm93
LCB3ZSBzZXQgUFYgbW9kZSBmb3IgeDg2CmFuZCBQVkggbW9kZSBmb3IgQXJtLgoKU2lnbmVkLW9m
Zi1ieTogU2ltb24gS3VlbnplciA8c2ltb24ua3VlbnplckBuZWNsYWIuZXU+Ci0tLQogcGxhdC9j
b21tb24vYXJtL2NwdV9uYXRpdmUuYyAgICAgIHwgMTEgKysrKysrKysrKy0KIHBsYXQvY29tbW9u
L2luY2x1ZGUvYXJtL2FybS9jcHUuaCB8ICA5ICsrKysrKysrKwogcGxhdC94ZW4vQ29uZmlnLnVr
ICAgICAgICAgICAgICAgIHwgIDYgKysrKysrCiBwbGF0L3hlbi9NYWtlZmlsZS51ayAgICAgICAg
ICAgICAgfCAgNyArKysrLS0tCiA0IGZpbGVzIGNoYW5nZWQsIDI5IGluc2VydGlvbnMoKyksIDQg
ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvcGxhdC9jb21tb24vYXJtL2NwdV9uYXRpdmUuYyBi
L3BsYXQvY29tbW9uL2FybS9jcHVfbmF0aXZlLmMKaW5kZXggODk4YzQzNzUuLmQ5MzY0ODM1IDEw
MDY0NAotLS0gYS9wbGF0L2NvbW1vbi9hcm0vY3B1X25hdGl2ZS5jCisrKyBiL3BsYXQvY29tbW9u
L2FybS9jcHVfbmF0aXZlLmMKQEAgLTMxLDEwICszMSwxNCBAQAogICoKICAqIFRISVMgSEVBREVS
IE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCiAgKi8KKyNpbmNs
dWRlIDx1ay9jb25maWcuaD4KICNpbmNsdWRlIDxjcHUuaD4KKyNpZiAhQ09ORklHX0FSQ0hfQVJN
XzMyCisvKiBUT0RPOiBOb3QgeWV0IHN1cHBvcnRlZCBmb3IgQXJtMzIgKi8KICNpbmNsdWRlIDxp
cnEuaD4KLSNpbmNsdWRlIDx1ay9hc3NlcnQuaD4KICNpbmNsdWRlIDxhcm0vY3B1X2RlZnMuaD4K
KyNlbmRpZgorI2luY2x1ZGUgPHVrL2Fzc2VydC5oPgogCiAvKgogICogSGFsdHMgdGhlIENQVSB1
bnRpbCB0aGUgbmV4dCBleHRlcm5hbCBpbnRlcnJ1cHQgaXMgZmlyZWQuIEZvciBBcm0sCkBAIC00
NSw2ICs0OSwxMCBAQCB2b2lkIGhhbHQodm9pZCkKIAlfX2FzbV9fIF9fdm9sYXRpbGVfXygid2Zp
Iik7CiB9CiAKKyNpZiAhQ09ORklHX0FSQ0hfQVJNXzMyCisvKgorICogVE9ETzogUG9ydCB0aGUg
Zm9sbG93aW5nIGZ1bmN0aW9uYWxpdHkgdG8gQXJtMzIKKyAqLwogLyogU3lzdGVtcyBzdXBwb3J0
IFBTQ0kgPj0gMC4yIGNhbiBkbyBzeXN0ZW0gcmVzZXQgZnJvbSBQU0NJICovCiB2b2lkIHJlc2V0
KHZvaWQpCiB7CkBAIC03NCwzICs4Miw0IEBAIHZvaWQgc3lzdGVtX29mZih2b2lkKQogCiAJc21j
Y19wc2NpX2NhbGwoUFNDSV9GTklEX1NZU1RFTV9PRkYsIDAsIDAsIDApOwogfQorI2VuZGlmIC8q
ICFDT05GSUdfQVJDSF9BUk1fMzIgKi8KZGlmZiAtLWdpdCBhL3BsYXQvY29tbW9uL2luY2x1ZGUv
YXJtL2FybS9jcHUuaCBiL3BsYXQvY29tbW9uL2luY2x1ZGUvYXJtL2FybS9jcHUuaAppbmRleCA2
OTdhMjBhMS4uYzk2NmNiNDEgMTAwNjQ0Ci0tLSBhL3BsYXQvY29tbW9uL2luY2x1ZGUvYXJtL2Fy
bS9jcHUuaAorKysgYi9wbGF0L2NvbW1vbi9pbmNsdWRlL2FybS9hcm0vY3B1LmgKQEAgLTEsOCAr
MSwxMCBAQAogLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLwogLyoK
ICAqIEF1dGhvcnM6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1PgorICog
QXV0aG9yczogV2VpIENoZW4gPHdlaS5jaGVuQGFybS5jb20+CiAgKgogICoKKyAqIENvcHlyaWdo
dCAoYykgMjAxOCwgQXJtIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
YykgMjAxOSwgTkVDIExhYm9yYXRvcmllcyBFdXJvcGUgR21iSCwgTkVDIENvcnBvcmF0aW9uLgog
ICogICAgICAgICAgICAgICAgICAgICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTMzLDcg
KzM1LDE0IEBACiAgKgogICogVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQgT1IgTU9E
SUZJRUQgSU4gQU5ZIFdBWS4KICAqLworI2lmbmRlZiBfUExBVF9DT01NT05fQVJNX0FSTV9DUFVf
SF8KKyNkZWZpbmUgX1BMQVRfQ09NTU9OX0FSTV9BUk1fQ1BVX0hfCiAKIHN0YXRpYyBpbmxpbmUg
dm9pZCBfaW5pdF9jcHVmZWF0dXJlcyh2b2lkKQogewogfQorCisvKiBDUFUgbmF0aXZlIEFQSXMg
Ki8KK3ZvaWQgaGFsdCh2b2lkKTsKKworI2VuZGlmIC8qIF9QTEFUX0NPTU1PTl9BUk1fQVJNX0NQ
VV9IXyAqLwpkaWZmIC0tZ2l0IGEvcGxhdC94ZW4vQ29uZmlnLnVrIGIvcGxhdC94ZW4vQ29uZmln
LnVrCmluZGV4IGViZjc2NmRmLi4yM2JkZjM1YSAxMDA2NDQKLS0tIGEvcGxhdC94ZW4vQ29uZmln
LnVrCisrKyBiL3BsYXQveGVuL0NvbmZpZy51awpAQCAtMTAsNiArMTAsMTIgQEAgbWVudWNvbmZp
ZyBQTEFUX1hFTgogICAgICAgICAgICAgICAgIENyZWF0ZSBhIFVuaWtyYWZ0IGltYWdlIHRoYXQg
cnVucyBhcyBhIFhlbiBndWVzdAogCiBpZiAoUExBVF9YRU4pCisjIEludmlzaWJsZSBvcHRpb24g
dG8gc3dpdGNoIGJldHdlZW4gUFYgYW5kIFBWSCBtb2RlCitjb25maWcgWEVOX0hWTUxJVEUKKwli
b29sCisJZGVmYXVsdCBuIGlmIChBUkNIX1g4Nl82NCB8fCBBUkNIX1g4Nl8zMikKKwlkZWZhdWx0
IHkKKwogbWVudSAiQ29uc29sZSBPcHRpb25zIgogCiBjb25maWcgWEVOX0tFUk5FTF9IVl9DT05T
T0xFCmRpZmYgLS1naXQgYS9wbGF0L3hlbi9NYWtlZmlsZS51ayBiL3BsYXQveGVuL01ha2VmaWxl
LnVrCmluZGV4IDdhM2ZjYzkzLi4zNjQyYzViMiAxMDA2NDQKLS0tIGEvcGxhdC94ZW4vTWFrZWZp
bGUudWsKKysrIGIvcGxhdC94ZW4vTWFrZWZpbGUudWsKQEAgLTQ2LDEyICs0NiwxMyBAQCBMSUJY
RU5QTEFUX1NSQ1MtJChDT05GSUdfQVJDSF9YODZfNjQpICs9ICQoTElCWEVOUExBVF9CQVNFKS94
ODYvbW0uYwogTElCWEVOUExBVF9TUkNTLSQoQ09ORklHX0FSQ0hfWDg2XzY0KSArPSAkKExJQlhF
TlBMQVRfQkFTRSkveDg2L2FyY2hfZXZlbnRzLmMKIExJQlhFTlBMQVRfU1JDUy0kKENPTkZJR19B
UkNIX1g4Nl82NCkgKz0gJChMSUJYRU5QTEFUX0JBU0UpL3g4Ni9hcmNoX3RpbWUuYwogCi1pZm5l
cSAoJChYRU5fSFZNTElURSkseSkKK2lmbmVxICgkKENPTkZJR19YRU5fSFZNTElURSkseSkKIExJ
QlhFTlBMQVRfQVNGTEFHUy15ICAgICAgICAgICArPSAtRENPTkZJR19QQVJBVklSVAogTElCWEVO
UExBVF9DRkxBR1MteSAgICAgICAgICAgICs9IC1EQ09ORklHX1BBUkFWSVJUCi1MSUJYRU5QTEFU
X1NSQ1MteSAgICAgICAgICAgICAgKz0gJChMSUJYRU5QTEFUX0JBU0UpL3g4Ni9jcHVfcHYuYwor
TElCWEVOUExBVF9TUkNTLSQoQ09ORklHX0FSQ0hfWDg2XzY0KSArPSAkKExJQlhFTlBMQVRfQkFT
RSkveDg2L2NwdV9wdi5jCiBlbHNlCi1MSUJYRU5QTEFUX1NSQ1MteSAgICAgICAgICAgICAgKz0g
JChVS19QTEFUX0NPTU1PTl9CQVNFKS94ODYvY3B1X25hdGl2ZS5jCitMSUJYRU5QTEFUX1NSQ1Mt
JChDT05GSUdfQVJDSF9YODZfNjQpICs9ICQoVUtfUExBVF9DT01NT05fQkFTRSkveDg2L2NwdV9u
YXRpdmUuYworTElCWEVOUExBVF9TUkNTLSQoQ09ORklHX0FSQ0hfQVJNXzMyKSArPSAkKFVLX1BM
QVRfQ09NTU9OX0JBU0UpL2FybS9jcHVfbmF0aXZlLmMKIGVuZGlmCiAKIExJQlhFTlBMQVRfU1JD
Uy0kKENPTkZJR19BUkNIX0FSTV8zMikgKz0gJChMSUJYRU5QTEFUX0JBU0UpL2FybS9zZXR1cC5j
Ci0tIAoyLjExLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9q
ZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWlu
aW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Feb 13 13:07:52 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 13 Feb 2019 13:07:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gtuGW-0003Sj-ND; Wed, 13 Feb 2019 13:07:52 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=41kN=QU=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1gtuGV-0003Sa-MP
 for minios-devel@lists.xen.org; Wed, 13 Feb 2019 13:07:51 +0000
X-Inumbo-ID: 5b9354cc-2f90-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 5b9354cc-2f90-11e9-bc90-bc764e045a96;
 Wed, 13 Feb 2019 13:07:47 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 82547F2050;
 Wed, 13 Feb 2019 14:07:46 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 3-O2xGkkY0-A; Wed, 13 Feb 2019 14:07:46 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 47832F200A
 for <minios-devel@lists.xen.org>; Wed, 13 Feb 2019 14:07:44 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 13 Feb 2019 14:07:44
 +0100
To: Simon Kuenzer <simon.kuenzer@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190213122626.20568-1-simon.kuenzer@neclab.eu>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <20f95190-70ac-8e79-9774-141255d1426f@neclab.eu>
Date: Wed, 13 Feb 2019 14:07:43 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190213122626.20568-1-simon.kuenzer@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2] plat/xen: Split emergency
 and hypervisor console
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gU2ltb24sCgpUaGlzIHBhdGNoIHNlZW1zIGZpbmUuClJldmlld2VkLWJ5OiBTaGFyYW4g
U2FudGhhbmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xhYi5ldT4KClRoYW5rcyAmIFJlZ2FyZHMK
U2hhcmFuCgpPbiAyLzEzLzE5IDE6MjYgUE0sIFNpbW9uIEt1ZW56ZXIgd3JvdGU6Cj4gU3BsaXRz
IHRoZSB0d28gY29uc29sZSBpbXBsZW1ldGF0aW9ucyAoaHZjLCBlbWVyZ2VuY3kpIGZyb20gZWFj
aCBvdGhlci4KPiBTaW1pbGFyIHRvIHBsYXQva3ZtLCBhIGNvbnNvbGUgb3B0aW9uIG1lbnUgaXMg
cG9wdWxhdGVkIGluIHRoZSBwbGF0Zm9ybQo+IGNvbmZpZ3VyYXRpb24gd2hlcmUgZWFjaCBjb25z
b2xlIGNhbiBiZSBpbmRpdmlkdWFsbHkgc2VsZWN0ZWQgYXMgb3V0cHV0Cj4gZm9yIGtlcm5lbCBv
ciBkZWJ1ZyBtZXNzYWdlcy4gQmVjYXVzZSBodmMgaXMgY3VycmVudGx5IG5vdCB5ZXQgc3VwcG9y
dGVkCj4gb24gQXJtMzIsIHdlIHNldCB0aGUgZGVidWcgY29uc29sZSBhcyBkZWZhdWx0IG91dHB1
dCBvbiBBcm0zMi4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVu
emVyQG5lY2xhYi5ldT4KPiAtLS0KPiAgIHBsYXQveGVuL0NvbmZpZy51ayAgICAgICAgICAgICAg
ICB8ICAzNCArKysrLQo+ICAgcGxhdC94ZW4vTWFrZWZpbGUudWsgICAgICAgICAgICAgIHwgICA2
ICsKPiAgIHBsYXQveGVuL2NvbnNvbGUuYyAgICAgICAgICAgICAgICB8IDI0OCArKysrKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gICBwbGF0L3hlbi9lbWdfY29uc29sZS5jICAg
ICAgICAgICAgfCAgOTAgKysrKysrKysrKysrKysKPiAgIHBsYXQveGVuL2VtZ19jb25zb2xlLmgg
ICAgICAgICAgICB8ICA2NSArKysrKysrKysrCj4gICBwbGF0L3hlbi9odl9jb25zb2xlLmMgICAg
ICAgICAgICAgfCAyNTQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAg
IHBsYXQveGVuL2h2X2NvbnNvbGUuaCAgICAgICAgICAgICB8ICA3OCArKysrKysrKysrKysKPiAg
IHBsYXQveGVuL2luY2x1ZGUvY29tbW9uL2NvbnNvbGUuaCB8ICAgOSArLQo+ICAgcGxhdC94ZW4v
c2h1dGRvd24uYyAgICAgICAgICAgICAgIHwgICAyICstCj4gICBwbGF0L3hlbi94ODYvc2V0dXAu
YyAgICAgICAgICAgICAgfCAgIDQgKy0KPiAgIDEwIGZpbGVzIGNoYW5nZWQsIDU2MSBpbnNlcnRp
b25zKCspLCAyMjkgZGVsZXRpb25zKC0pCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgcGxhdC94ZW4v
ZW1nX2NvbnNvbGUuYwo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IHBsYXQveGVuL2VtZ19jb25zb2xl
LmgKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBwbGF0L3hlbi9odl9jb25zb2xlLmMKPiAgIGNyZWF0
ZSBtb2RlIDEwMDY0NCBwbGF0L3hlbi9odl9jb25zb2xlLmgKPiAKPiBkaWZmIC0tZ2l0IGEvcGxh
dC94ZW4vQ29uZmlnLnVrIGIvcGxhdC94ZW4vQ29uZmlnLnVrCj4gaW5kZXggZmFmYWJmMDcuLmVi
Zjc2NmRmIDEwMDY0NAo+IC0tLSBhL3BsYXQveGVuL0NvbmZpZy51awo+ICsrKyBiL3BsYXQveGVu
L0NvbmZpZy51awo+IEBAIC0xMCwxNCArMTAsMzYgQEAgbWVudWNvbmZpZyBQTEFUX1hFTgo+ICAg
ICAgICAgICAgICAgICAgIENyZWF0ZSBhIFVuaWtyYWZ0IGltYWdlIHRoYXQgcnVucyBhcyBhIFhl
biBndWVzdAo+ICAgCj4gICBpZiAoUExBVF9YRU4pCj4gLQljb25maWcgWEVOX0RCR0VNRVJHRU5D
WQo+IC0JYm9vbCAiRW1lcmdlbmN5IGNvbnNvbGUgZm9yIGRlYnVnIG91dHB1dCIKPiArbWVudSAi
Q29uc29sZSBPcHRpb25zIgo+ICsKPiArY29uZmlnIFhFTl9LRVJORUxfSFZfQ09OU09MRQo+ICsJ
Ym9vbCAiSHlwZXJ2aXNvciBjb25zb2xlIGZvciBrZXJuZWwgcHJpbnRzIgo+ICsJZGVmYXVsdCB5
Cj4gKwlkZXBlbmRzIG9uIEFSQ0hfWDg2XzY0Cj4gKwloZWxwCj4gKwkJU2VuZCBrZXJuZWwgbWVz
c2FnZXMgdG8gdGhlIGh5cGVydmlzb3IgY29uc29sZS4KPiArCj4gK2NvbmZpZyBYRU5fS0VSTkVM
X0VNR19DT05TT0xFCj4gKwlib29sICJFbWVyZ2VuY3kgY29uc29sZSBmb3Iga2VybmVsIHByaW50
cyIKPiArCWRlZmF1bHQgeSBpZiBBUkNIX0FSTV8zMgo+ICAgCWRlZmF1bHQgbgo+ICAgCWhlbHAK
PiAtCQlTZW5kIGRlYnVnIG1lc3NhZ2VzIHRvIHRoZSBlbWVyZ2VuY3kgY29uc29sZQo+IC0JCWlu
c3RlYWQgb2YgdGhlIGh5cGVydmlzb3IgY29uc29sZS4gV2hlbiB0aGlzCj4gLQkJb3B0aW9uIGlz
IGVuYWJsZWQgdGhlIGh5cGVydmlzb3IgY29uc29sZSBpcyB1c2VkCj4gLQkJZm9yIGtlcm5lbCBt
ZXNzYWdlcyBvbmx5Lgo+ICsJCVNlbmQga2VybmVsIG1lc3NhZ2VzIHRvIHRoZSBlbWVyZ2VuY3kg
Y29uc29sZS4KPiArCj4gK2NvbmZpZyBYRU5fREVCVUdfSFZfQ09OU09MRQo+ICsJYm9vbCAiSHlw
ZXJ2aXNvciBjb25zb2xlIGZvciBkZWJ1ZyBwcmludHMiCj4gKwlkZWZhdWx0IHkKPiArCWRlcGVu
ZHMgb24gQVJDSF9YODZfNjQKPiArCWhlbHAKPiArCQlTZW5kIGRlYnVnIG1lc3NhZ2VzIHRvIHRo
ZSBoeXBlcnZpc29yIGNvbnNvbGUuCj4gKwo+ICtjb25maWcgWEVOX0RFQlVHX0VNR19DT05TT0xF
Cj4gKwlib29sICJFbWVyZ2VuY3kgY29uc29sZSBmb3IgZGVidWcgcHJpbnRzIgo+ICsJZGVmYXVs
dCB5IGlmIEFSQ0hfQVJNXzMyCj4gKwlkZWZhdWx0IG4KPiArICAgICAgICBoZWxwCj4gKwkJU2Vu
ZCBkZWJ1ZyBtZXNzYWdlcyB0byB0aGUgZW1lcmdlbmN5IGNvbnNvbGUuCj4gK2VuZG1lbnUKPiAg
IAo+ICAgY29uZmlnIFhFTl9HTlRUQUIKPiAgIAlib29sICJHcmFudCB0YWJsZSBzdXBwb3J0Igo+
IGRpZmYgLS1naXQgYS9wbGF0L3hlbi9NYWtlZmlsZS51ayBiL3BsYXQveGVuL01ha2VmaWxlLnVr
Cj4gaW5kZXggMzQzOWEwZDkuLjdhM2ZjYzkzIDEwMDY0NAo+IC0tLSBhL3BsYXQveGVuL01ha2Vm
aWxlLnVrCj4gKysrIGIvcGxhdC94ZW4vTWFrZWZpbGUudWsKPiBAQCAtNzAsNiArNzAsMTIgQEAg
TElCWEVOUExBVF9TUkNTLSQoQ09ORklHX0FSQ0hfQVJNXzY0KSArPSAkKExJQlhFTlBMQVRfQkFT
RSkvYXJtL2h5cGVyY2FsbHM2NC5TCj4gICAKPiAgIExJQlhFTlBMQVRfU1JDUy15ICAgICAgICAg
ICAgICArPSAkKExJQlhFTlBMQVRfQkFTRSkvbGNwdS5jCj4gICBMSUJYRU5QTEFUX1NSQ1MteSAg
ICAgICAgICAgICAgKz0gJChMSUJYRU5QTEFUX0JBU0UpL2NvbnNvbGUuYwo+ICtpZmVxICgkKGZp
bmRzdHJpbmcgeSwkKENPTkZJR19YRU5fS0VSTkVMX0hWX0NPTlNPTEUpICQoQ09ORklHX1hFTl9E
RUJVR19IVl9DT05TT0xFKSkseSkKPiArTElCWEVOUExBVF9TUkNTLXkgICAgICAgICAgICAgICs9
ICQoTElCWEVOUExBVF9CQVNFKS9odl9jb25zb2xlLmMKPiArZW5kaWYKPiAraWZlcSAoJChmaW5k
c3RyaW5nIHksJChDT05GSUdfWEVOX0tFUk5FTF9FTUdfQ09OU09MRSkgJChDT05GSUdfWEVOX0RF
QlVHX0VNR19DT05TT0xFKSkseSkKPiArTElCWEVOUExBVF9TUkNTLXkgICAgICAgICAgICAgICs9
ICQoTElCWEVOUExBVF9CQVNFKS9lbWdfY29uc29sZS5jCj4gK2VuZGlmCj4gICBMSUJYRU5QTEFU
X1NSQ1MteSAgICAgICAgICAgICAgKz0gJChMSUJYRU5QTEFUX0JBU0UpL3NodXRkb3duLmMKPiAg
IExJQlhFTlBMQVRfU1JDUy15ICAgICAgICAgICAgICArPSAkKExJQlhFTlBMQVRfQkFTRSkvZXZl
bnRzLmMKPiAgIAo+IGRpZmYgLS1naXQgYS9wbGF0L3hlbi9jb25zb2xlLmMgYi9wbGF0L3hlbi9j
b25zb2xlLmMKPiBpbmRleCBhNzBlYzVmZi4uNDM3ZTEyOGMgMTAwNjQ0Cj4gLS0tIGEvcGxhdC94
ZW4vY29uc29sZS5jCj4gKysrIGIvcGxhdC94ZW4vY29uc29sZS5jCj4gQEAgLTIsNyArMiw4IEBA
Cj4gICAvKgo+ICAgICogQXV0aG9yczogU2ltb24gS3VlbnplciA8c2ltb24ua3VlbnplckBuZWNs
YWIuZXU+Cj4gICAgKgo+IC0gKiBDb3B5cmlnaHQgKGMpIDIwMTcsIE5FQyBFdXJvcGUgTHRkLiwg
TkVDIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgo+ICsgKiBDb3B5cmlnaHQgKGMp
IDIwMTksIE5FQyBMYWJvcmF0b3JpZXMgRXVyb3BlIEdtYkgsIE5FQyBDb3Jwb3JhdGlvbi4KPiAr
ICogICAgICAgICAgICAgICAgICAgICBBbGwgcmlnaHRzIHJlc2VydmVkLgo+ICAgICoKPiAgICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAo+ICAgICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCj4gQEAgLTMyLDI1MiArMzMsNjcgQEAKPiAgICAq
IFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVku
Cj4gICAgKi8KPiAgIAo+IC0vKgo+IC0gKiBTb21lIG9mIHRoaXMgY29kZSB3YXMgcG9ydGVkIGZy
b20gTWluaS1PUzoKPiAtICogIGNvbnNvbGUveGVuY29uc19yaW5nLmMgYW5kIGNvbnNvbGUvY29u
c29sZS5jCj4gLSAqLwo+IC0vKgo+IC0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+IC0gKiAoQykgMjAw
NiAtIEdyemVnb3J6IE1pbG9zIC0gQ2FtYnJpZGdlIFVuaXZlcnNpdHkKPiAtICoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioKPiAtICoKPiAtICogICAgICAgIEZpbGU6IGNvbnNvbGUuaAo+IC0gKiAgICAgIEF1
dGhvcjogR3J6ZWdvcnogTWlsb3MKPiAtICogICAgIENoYW5nZXM6Cj4gLSAqCj4gLSAqICAgICAg
ICBEYXRlOiBNYXIgMjAwNgo+IC0gKgo+IC0gKiBFbnZpcm9ubWVudDogWGVuIE1pbmltYWwgT1MK
PiAtICogRGVzY3JpcHRpb246IENvbnNvbGUgaW50ZXJmYWNlLgo+IC0gKgo+IC0gKiBIYW5kbGVz
IGNvbnNvbGUgSS9PLiBEZWZpbmVzIHByaW50ay4KPiAtICoKPiAtICoqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioKPiAtICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRv
IGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQo+IC0gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBh
c3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KPiAtICog
ZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhv
dXQgbGltaXRhdGlvbiB0aGUKPiAtICogcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJn
ZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yCj4gLSAqIHNlbGwgY29w
aWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNv
ZnR3YXJlIGlzCj4gLSAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnM6Cj4gLSAqCj4gLSAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFu
ZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCj4gLSAqIGFsbCBj
b3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgo+IC0gKgo+IC0g
KiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBB
TlkgS0lORCwgRVhQUkVTUyBPUgo+IC0gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1J
VEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiAtICogRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFCj4gLSAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZP
UiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKPiAtICogTElBQklMSVRZLCBXSEVUSEVSIElO
IEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKPiAtICog
RlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVT
RSBPUiBPVEhFUgo+IC0gKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCj4gLSAqLwo+IC0KPiAt
I2luY2x1ZGUgPGludHR5cGVzLmg+Cj4gLSNpbmNsdWRlIDxzdHJpbmcuaD4KPiArI2luY2x1ZGUg
PHVrL2NvbmZpZy5oPgo+ICAgI2luY2x1ZGUgPHVrL3BsYXQvY29uc29sZS5oPgo+ICsjaW5jbHVk
ZSA8c3RyaW5nLmg+Cj4gICAjaW5jbHVkZSA8dWsvYXJjaC9sY3B1Lmg+Cj4gLSNpbmNsdWRlIDx1
ay9hc3NlcnQuaD4KPiAgICNpbmNsdWRlIDx1ay9lc3NlbnRpYWxzLmg+Cj4gLSNpbmNsdWRlIDx1
ay9jb25maWcuaD4KPiAtCj4gLSNpbmNsdWRlIDxjb21tb24vY29uc29sZS5oPgo+IC0jaW5jbHVk
ZSA8Y29tbW9uL2V2ZW50cy5oPgo+IC0jaW5jbHVkZSA8Y29tbW9uL2h5cGVydmlzb3IuaD4KPiAt
I2luY2x1ZGUgPHhlbi94ZW4uaD4KPiAtCj4gLSNpZiAoZGVmaW5lZCBfX1g4Nl8zMl9fKSB8fCAo
ZGVmaW5lZCBfX1g4Nl82NF9fKQo+IC0jaW5jbHVkZSA8eGVuLXg4Ni9zZXR1cC5oPgo+IC0jaW5j
bHVkZSA8eGVuLXg4Ni9tbS5oPgo+IC0jaWYgZGVmaW5lZCBfX1g4Nl8zMl9fCj4gLSNpbmNsdWRl
IDx4ZW4teDg2L2h5cGVyY2FsbDMyLmg+Cj4gLSNlbGlmIGRlZmluZWQgX19YODZfNjRfXwo+IC0j
aW5jbHVkZSA8eGVuLXg4Ni9oeXBlcmNhbGw2NC5oPgo+IC0jZW5kaWYKPiAtI2VsaWYgKGRlZmlu
ZWQgX19BUk1fMzJfXykgfHwgKGRlZmluZWQgX19BUk1fNjRfXykKPiAtI2luY2x1ZGUgPHhlbi1h
cm0vbW0uaD4KPiAtI2luY2x1ZGUgPHhlbi1hcm0vaHlwZXJjYWxsLmg+Cj4gLSNlbmRpZgo+IC0j
aW5jbHVkZSA8eGVuL2lvL2NvbnNvbGUuaD4KPiAtI2luY2x1ZGUgPHhlbi9pby9wcm90b2NvbHMu
aD4KPiAtI2luY2x1ZGUgPHhlbi9pby9yaW5nLmg+Cj4gLSNpZm5kZWYgQ09ORklHX1BBUkFWSVJU
Cj4gLSNpbmNsdWRlIDx4ZW4vaHZtL3BhcmFtcy5oPgo+IC0jZW5kaWYKPiAtCj4gLXN0YXRpYyBz
dHJ1Y3QgeGVuY29uc19pbnRlcmZhY2UgKmNvbnNvbGVfcmluZzsKPiAtc3RhdGljIHVpbnQzMl90
IGNvbnNvbGVfZXZ0Y2huOwo+IC1zdGF0aWMgaW50IGNvbnNvbGVfcmVhZHk7Cj4gLQo+IC0jaWZk
ZWYgQ09ORklHX1BBUkFWSVJUCj4gLXZvaWQgX2xpYnhlbnBsYXRfcHJlcGFyZV9jb25zb2xlKHZv
aWQpCj4gLXsKPiAtCWNvbnNvbGVfcmluZyA9IG1mbl90b192aXJ0KEhZUEVSVklTT1Jfc3RhcnRf
aW5mby0+Y29uc29sZS5kb21VLm1mbik7Cj4gLQljb25zb2xlX2V2dGNobiA9IEhZUEVSVklTT1Jf
c3RhcnRfaW5mby0+Y29uc29sZS5kb21VLmV2dGNobjsKPiAtfQo+IC0jZWxzZQo+IC12b2lkIF9s
aWJ4ZW5wbGF0X3ByZXBhcmVfY29uc29sZSh2b2lkKQo+IC17Cj4gLQkvKiBOT1QgSU1QTEVNRU5U
RUQgWUVUICovCj4gLX0KPiAtI2VuZGlmCj4gKyNpbmNsdWRlIDxlcnJuby5oPgo+ICAgCj4gLSNp
ZiBDT05GSUdfWEVOX0RCR0VNRVJHRU5DWQo+IC1zdGF0aWMgaW50IGVtZXJnZW5jeV9vdXRwdXQo
Y29uc3QgY2hhciAqc3RyLCB1bnNpZ25lZCBpbnQgbGVuKQo+IC17Cj4gLQlpbnQgcmM7Cj4gLQo+
IC0JcmMgPSBIWVBFUlZJU09SX2NvbnNvbGVfaW8oQ09OU09MRUlPX3dyaXRlLCBsZW4sIERFQ09O
U1QoY2hhciAqLCBzdHIpKTsKPiAtCWlmICh1bmxpa2VseShyYyA8IDApKQo+IC0JCXJldHVybiBy
YzsKPiAtCXJldHVybiBsZW47Cj4gLX0KPiAtI2VuZGlmCj4gKyNkZWZpbmUgX19YRU5fQ09OU09M
RV9JTVBMX18KPiArI2luY2x1ZGUgImh2X2NvbnNvbGUuaCIKPiArI2luY2x1ZGUgImVtZ19jb25z
b2xlLmgiCj4gICAKPiAgIC8qCj4gLSAqIGh2Y29uc29sZV9vdXRwdXQgY2FuIG9wZXJhdGUgaW4g
dHdvIG1vZGVzOiBidWZmZXJlZCBhbmQgaW5pdGlhbGl6ZWQuCj4gLSAqIFRoZSBidWZmZXJlZCBt
b2RlIGlzIGF1dG9tYXRpY2FsbHkgYWN0aXZhdGVkIGFmdGVyCj4gLSAqIF9saWJ4ZW5wbGF0X3By
ZXBhcmVfY29uc29sZSgpIHdhcyBjYWxsZWQgYW5kIHdlIGtub3cgd2hlcmUgdGhlIGNvbnNvbGUg
cmluZwo+IC0gKiBpcy4gVGhlIG91dHB1dCBzdHJpbmcgaXMgcHV0IHRvIHRoZSBjb25zb2xlIHJp
bmcgdW50aWwgdGhlIHJpbmcgaXMgZnVsbC4gQW55Cj4gLSAqIGZ1cnRoZXIgY2hhcmFjdGVycyBh
cmUgZGlzY2FyZGVkLiBTaW5jZSB0aGUgZXZlbnQgY2hhbm5lbCBpcyBub3QgaW5pdGlhbGl6ZWQK
PiAtICogeWV0LCB0aGUgYmFja2VuZCBpcyBub3Qgbm90aWZpZWQuIFRoaXMgbW9kZSBpcyBpbnRy
b2R1Y2VkIHRvIHN1cHBvcnQgZWFybHkKPiAtICogcHJpbnRpbmcsIGV2ZW4gYmVmb3JlIGV2ZW50
cyBhcmUgbm90IGluaXRpYWxpemVkLgo+IC0gKiBfbGlieGVucGxhdF9pbml0X2NvbnNvbGUoKSBm
aW5hbGl6ZXMgdGhlIGluaXRpYWxpemF0aW9uIGFuZCBlbmFibGVzCj4gLSAqIHRoZSBldmVudCBj
aGFubmVsLiBGcm9tIG5vdyBvbiwgdGhlIGNvbnNvbGUgYmFja2VuZCBpcyBub3RpZmllZCB3aGVu
ZXZlcgo+IC0gKiB3ZSBwdXQgY2hhcmFjdGVycyBvbiB0aGUgY29uc29sZSByaW5nLiBXaGVuZXZl
ciB0aGlzIHJpbmcgaXMgZnVsbCBhbmQgdGhlcmUKPiAtICogYXJlIHN0aWxsIGNoYXJhY3RlcnMg
dGhhdCBzaG91bGQgYmUgcHJpbnRlZCwgd2UgYXJlIGVudGVyaW5nIGEgYnVzeSBsb29wIGFuZAo+
IC0gKiB3YWl0IGZvciB0aGUgYmFja2VuZCB0byBtYWtlIHVzIHNwYWNlIGFnYWluLiBPZiBjb3Vy
c2UgdGhpcyBpcyBzbG93OiBkbyBub3QKPiAtICogcHJpbnQgc28gbXVjaCEgOy0pCj4gKyAqIFJl
dHVybiB0aGUgImJlc3QgY2FzZSIgb2YgdGhlIHR3byByZXR1cm4gY29kZXMgcmV0IGFuZCByZXQy
Lgo+ICAgICovCj4gLXN0YXRpYyBpbnQgaHZjb25zb2xlX291dHB1dChjb25zdCBjaGFyICpzdHIs
IHVuc2lnbmVkIGludCBsZW4pCj4gK3N0YXRpYyBpbmxpbmUgaW50IHJldHVybmNvZGUoaW50IHJl
dCwgaW50IHJldDIpCj4gICB7Cj4gLQl1bnNpZ25lZCBpbnQgc2VudCA9IDA7Cj4gLQlYRU5DT05T
X1JJTkdfSURYIGNvbnMsIHByb2Q7Cj4gLQo+IC0JaWYgKHVubGlrZWx5KCFjb25zb2xlX3Jpbmcp
KQo+IC0JCXJldHVybiBzZW50Owo+IC0KPiAtcmV0cnk6Cj4gLQljb25zID0gY29uc29sZV9yaW5n
LT5vdXRfY29uczsKPiAtCXByb2QgPSBjb25zb2xlX3JpbmctPm91dF9wcm9kOwo+IC0KPiAtCW1i
KCk7IC8qIG1ha2Ugc3VyZSB3ZSBoYXZlIGNvbnMgJiBwcm9kIGJlZm9yZSB0b3VjaGluZyB0aGUg
cmluZyAqLwo+IC0JVUtfQlVHT04oKHByb2QgLSBjb25zKSA+IHNpemVvZihjb25zb2xlX3Jpbmct
Pm91dCkpOwo+IC0KPiAtCXdoaWxlICgoc2VudCA8IGxlbikgJiYgKChwcm9kIC0gY29ucykgPCBz
aXplb2YoY29uc29sZV9yaW5nLT5vdXQpKSkgewo+IC0JCWlmIChzdHJbc2VudF0gPT0gJ1xuJykg
ewo+IC0JCQkvKiBwcmVwZW5kICdccicgZm9yIGNvbnZlcnRpbmcgJ1xuJyB0byAnXHInJ1xuJyAq
Lwo+IC0JCQlpZiAoKHByb2QgKyAxIC0gY29ucykgPj0gc2l6ZW9mKGNvbnNvbGVfcmluZy0+b3V0
KSkKPiAtCQkJCWJyZWFrOyAvKiBub3QgZW5vdWdoIHNwYWNlIGZvciAnXHInIGFuZCAnXG4nISAq
Lwo+IC0KPiAtCQkJY29uc29sZV9yaW5nLT5vdXRbTUFTS19YRU5DT05TX0lEWChwcm9kKyssCj4g
LQkJCQkJCQkgICBjb25zb2xlX3JpbmctPm91dCldID0KPiAtCQkJCSdccic7Cj4gLQkJfQo+IC0K
PiAtCQljb25zb2xlX3JpbmctPm91dFtNQVNLX1hFTkNPTlNfSURYKHByb2QrKywgY29uc29sZV9y
aW5nLT5vdXQpXSA9Cj4gLQkJCXN0cltzZW50XTsKPiAtCQlzZW50Kys7Cj4gLQl9Cj4gLQl3bWIo
KTsgLyogZW5zdXJlIGNoYXJhY3RlcnMgYXJlIHdyaXR0ZW4gYmVmb3JlIGluY3JlYXNpbmcgb3V0
X3Byb2QgKi8KPiAtCWNvbnNvbGVfcmluZy0+b3V0X3Byb2QgPSBwcm9kOwo+IC0KPiAtCS8qIElz
IHRoZSBjb25zb2xlIGZ1bGx5IGluaXRpYWxpemVkPwo+IC0JICogQXJlIHdlIGFibGUgdG8gbm90
aWZ5IHRoZSBiYWNrZW5kPwo+IC0JICovCj4gLQlpZiAobGlrZWx5KGNvbnNvbGVfcmVhZHkgJiYg
Y29uc29sZV9ldnRjaG4pKSB7Cj4gLQkJbm90aWZ5X3JlbW90ZV92aWFfZXZ0Y2huKGNvbnNvbGVf
ZXZ0Y2huKTsKPiAtCj4gLQkJLyogVGhlcmUgYXJlIHN0aWxsIGJ5dGVzIGxlZnQgdG8gc2VuZCBv
dXQ/IElmIHllcywgZG8gbm90Cj4gLQkJICogZGlzY2FyZCB0aGVtLCByZXRyeSBzZW5kaW5nIChl
bnRlcnMgYnVzeSB3YWl0aW5nKQo+IC0JCSAqLwo+IC0JCWlmIChzZW50IDwgbGVuKQo+IC0JCQln
b3RvIHJldHJ5Owo+IC0JfQo+IC0JcmV0dXJuIHNlbnQ7Cj4gKwlpZiAocmV0IDwgMCkKPiArCQly
ZXR1cm4gKHJldDIgIT0gLUVOT1RTVVApID8gcmV0MiA6IHJldDsKPiArCXJldHVybiBNQVgoKHJl
dCksIChyZXQyKSk7Cj4gICB9Cj4gICAKPiAtc3RhdGljIHZvaWQgaHZjb25zb2xlX2lucHV0KGV2
dGNobl9wb3J0X3QgcG9ydCBfX3VudXNlZCwKPiAtCQkJICAgIHN0cnVjdCBfX3JlZ3MgKnJlZ3Mg
X191bnVzZWQsCj4gLQkJCSAgICB2b2lkICpkYXRhIF9fdW51c2VkKQo+ICt2b2lkIHByZXBhcmVf
Y29uc29sZSh2b2lkKQo+ICAgewo+IC0JLyogTk9UIElNUExFTUVOVEVEIFlFVCAqLwo+ICsJaHZf
Y29uc29sZV9wcmVwYXJlKCk7Cj4gICB9Cj4gICAKPiAtdm9pZCBodmNvbnNvbGVfZmx1c2godm9p
ZCkKPiArdm9pZCBmbHVzaF9jb25zb2xlKHZvaWQpCj4gICB7Cj4gLQlzdHJ1Y3QgeGVuY29uc19p
bnRlcmZhY2UgKmludGY7Cj4gLQo+IC0JaWYgKCFjb25zb2xlX3JlYWR5KQo+IC0JCXJldHVybjsK
PiAtCj4gLQlpbnRmID0gY29uc29sZV9yaW5nOwo+IC0JaWYgKHVubGlrZWx5KCFpbnRmKSkKPiAt
CQlyZXR1cm47Cj4gLQo+IC0Jd2hpbGUgKGludGYtPm91dF9jb25zIDwgaW50Zi0+b3V0X3Byb2Qp
Cj4gLQkJYmFycmllcigpOwo+ICsJaHZfY29uc29sZV9mbHVzaCgpOwo+ICAgfQo+ICAgCj4gLXZv
aWQgX2xpYnhlbnBsYXRfaW5pdF9jb25zb2xlKHZvaWQpCj4gK3ZvaWQgaW5pdF9jb25zb2xlKHZv
aWQpCj4gICB7Cj4gLQlpbnQgZXJyOwo+IC0KPiAtCVVLX0FTU0VSVChjb25zb2xlX3JpbmcgIT0g
TlVMTCk7Cj4gLQo+IC0JdWtfcHJfZGVidWcoImh2Y29uc29sZSBAICVwIChldnRjaG46ICUiUFJJ
dTMyIilcbiIsCj4gLQkJICAgIGNvbnNvbGVfcmluZywgY29uc29sZV9ldnRjaG4pOwo+IC0KPiAt
CWVyciA9IGJpbmRfZXZ0Y2huKGNvbnNvbGVfZXZ0Y2huLCBodmNvbnNvbGVfaW5wdXQsIE5VTEwp
Owo+IC0JaWYgKGVyciA8PSAwKQo+IC0JCVVLX0NSQVNIKCJGYWlsZWQgdG8gYmluZCBldmVudCBj
aGFubmVsIGZvciBodmNvbnNvbGU6ICVpXG4iLAo+IC0JCQkgZXJyKTsKPiAtCXVubWFza19ldnRj
aG4oY29uc29sZV9ldnRjaG4pOwo+IC0KPiAtCWNvbnNvbGVfcmVhZHkgPSAxOyAvKiBlbmFibGUg
bm90aWZpY2F0aW9uIG9mIGJhY2tlbmQgKi8KPiAtCS8qIGZsdXNoIHF1ZXVlZCBvdXRwdXQgKi8K
PiAtCW5vdGlmeV9yZW1vdGVfdmlhX2V2dGNobihjb25zb2xlX2V2dGNobik7Cj4gKwlodl9jb25z
b2xlX2luaXQoKTsKPiAgIH0KPiAgIAo+ICAgaW50IHVrcGxhdF9jb3V0ZChjb25zdCBjaGFyICpz
dHIsIHVuc2lnbmVkIGludCBsZW4pCj4gICB7Cj4gKwlpbnQgcmV0LCByZXQyOwo+ICsKPiAgIAlp
ZiAodW5saWtlbHkobGVuID09IDApKQo+ICAgCQlsZW4gPSBzdHJubGVuKHN0ciwgbGVuKTsKPiAg
IAo+IC0jaWYgQ09ORklHX1hFTl9EQkdFTUVSR0VOQ1kKPiAtCXJldHVybiBlbWVyZ2VuY3lfb3V0
cHV0KHN0ciwgbGVuKTsKPiAtI2Vsc2UKPiAtCXJldHVybiBodmNvbnNvbGVfb3V0cHV0KHN0ciwg
bGVuKTsKPiAtI2VuZGlmCj4gKwlyZXQgID0gZW1nX2NvbnNvbGVfb3V0cHV0X2Qoc3RyLCBsZW4p
Owo+ICsJcmV0MiA9IGh2X2NvbnNvbGVfb3V0cHV0X2Qoc3RyLCBsZW4pOwo+ICsJcmV0dXJuIHJl
dHVybmNvZGUocmV0LCByZXQyKTsKPiAgIH0KPiAgIAo+IC1pbnQgdWtwbGF0X2NvdXRrKGNvbnN0
IGNoYXIgKnN0ciBfX3VudXNlZCwgdW5zaWduZWQgaW50IGxlbiBfX3VudXNlZCkKPiAraW50IHVr
cGxhdF9jb3V0ayhjb25zdCBjaGFyICpzdHIsIHVuc2lnbmVkIGludCBsZW4pCj4gICB7Cj4gKwlp
bnQgcmV0LCByZXQyOwo+ICsKPiAgIAlpZiAodW5saWtlbHkobGVuID09IDApKQo+ICAgCQlsZW4g
PSBzdHJubGVuKHN0ciwgbGVuKTsKPiAgIAo+IC0JcmV0dXJuIGh2Y29uc29sZV9vdXRwdXQoc3Ry
LCBsZW4pOwo+ICsJcmV0ICA9IGVtZ19jb25zb2xlX291dHB1dF9rKHN0ciwgbGVuKTsKPiArCXJl
dDIgPSBodl9jb25zb2xlX291dHB1dF9rKHN0ciwgbGVuKTsKPiArCXJldHVybiByZXR1cm5jb2Rl
KHJldCwgcmV0Mik7Cj4gICB9Cj4gICAKPiAtaW50IHVrcGxhdF9jaW5rKGNoYXIgKnN0ciwgdW5z
aWduZWQgaW50IG1heGxlbikKPiAraW50IHVrcGxhdF9jaW5rKGNoYXIgKnN0ciBfX21heWJlX3Vu
dXNlZCwgdW5zaWduZWQgaW50IG1heGxlbiBfX21heWJlX3VudXNlZCkKPiAgIHsKPiAtCWludCBy
ZWFkID0gMDsKPiAtCVhFTkNPTlNfUklOR19JRFggY29ucywgcHJvZDsKPiAtCj4gLQljb25zID0g
Y29uc29sZV9yaW5nLT5pbl9jb25zOwo+IC0JcHJvZCA9IGNvbnNvbGVfcmluZy0+aW5fcHJvZDsK
PiAtCXJtYigpOyAvKiBtYWtlIHN1cmUgaW5fY29ucywgaW5fcHJvZCBhcmUgcmVhZCBiZWZvcmUg
ZW5xdWV1aW5nICovCj4gLQlVS19CVUdPTigocHJvZCAtIGNvbnMpID4gc2l6ZW9mKGNvbnNvbGVf
cmluZy0+aW4pKTsKPiAtCj4gLQl3aGlsZSAoY29ucyAhPSBwcm9kICYmIG1heGxlbiA+IDApIHsK
PiAtCQkqKHN0ciArIHJlYWQpID0gKihjb25zb2xlX3JpbmctPmluKwo+IC0JCQkJICBNQVNLX1hF
TkNPTlNfSURYKGNvbnMsIGNvbnNvbGVfcmluZy0+aW4pKTsKPiAtCQlyZWFkKys7Cj4gLQkJY29u
cysrOwo+IC0JCW1heGxlbi0tOwo+IC0JfQo+IC0KPiAtCXdtYigpOyAvKiBlbnN1cmUgZmluaXNo
ZWQgb3BlcmF0aW9uIGJlZm9yZSB1cGRhdGluZyBpbl9jb25zICovCj4gLQljb25zb2xlX3Jpbmct
PmluX2NvbnMgPSBjb25zOwo+IC0KPiAtCXJldHVybiByZWFkOwo+ICsJcmV0dXJuIGh2X2NvbnNv
bGVfaW5wdXQoc3RyLCBtYXhsZW4pOwo+ICAgfQo+IGRpZmYgLS1naXQgYS9wbGF0L3hlbi9lbWdf
Y29uc29sZS5jIGIvcGxhdC94ZW4vZW1nX2NvbnNvbGUuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0
Cj4gaW5kZXggMDAwMDAwMDAuLjVjZDBkMjQ2Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL3BsYXQv
eGVuL2VtZ19jb25zb2xlLmMKPiBAQCAtMCwwICsxLDkwIEBACj4gKy8qIFNQRFgtTGljZW5zZS1J
ZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgYW5kIE1JVCAqLwo+ICsvKgo+ICsgKiBBdXRob3JzOiBT
aW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4KPiArICoKPiArICogQ29weXJp
Z2h0IChjKSAyMDE5LCBORUMgTGFib3JhdG9yaWVzIEV1cm9wZSBHbWJILCBORUMgQ29ycG9yYXRp
b24uCj4gKyAqICAgICAgICAgICAgICAgICAgICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiArICoK
PiArICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Cj4gKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwo+ICsgKiBhcmUgbWV0Ogo+ICsgKgo+ICsg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCj4gKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKPiArICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KPiArICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0
aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cwo+ICsgKiAgICBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQo+ICsgKiAgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgo+ICsgKgo+ICsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKPiArICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQo+ICsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQo+ICsgKiBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJF
Cj4gKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKPiArICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKPiArICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Cj4gKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCj4gKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCj4gKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFCj4gKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgo+ICsgKgo+ICsgKiBU
SElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgo+
ICsgKi8KPiArCj4gKy8qCj4gKyAqIFNvbWUgb2YgdGhpcyBjb2RlIHdhcyBwb3J0ZWQgZnJvbSBN
aW5pLU9TOgo+ICsgKiAgY29uc29sZS94ZW5jb25zX3JpbmcuYyBhbmQgY29uc29sZS9jb25zb2xl
LmMKPiArICovCj4gKy8qCj4gKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4gKyAqIChDKSAyMDA2IC0g
R3J6ZWdvcnogTWlsb3MgLSBDYW1icmlkZ2UgVW5pdmVyc2l0eQo+ICsgKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKgo+ICsgKgo+ICsgKiAgICAgICAgRmlsZTogY29uc29sZS5oCj4gKyAqICAgICAgQXV0aG9y
OiBHcnplZ29yeiBNaWxvcwo+ICsgKiAgICAgQ2hhbmdlczoKPiArICoKPiArICogICAgICAgIERh
dGU6IE1hciAyMDA2Cj4gKyAqCj4gKyAqIEVudmlyb25tZW50OiBYZW4gTWluaW1hbCBPUwo+ICsg
KiBEZXNjcmlwdGlvbjogQ29uc29sZSBpbnRlcmZhY2UuCj4gKyAqCj4gKyAqIEhhbmRsZXMgY29u
c29sZSBJL08uIERlZmluZXMgcHJpbnRrLgo+ICsgKgo+ICsgKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+
ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55
IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Cj4gKyAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29j
aWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0bwo+ICsgKiBkZWFs
IGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBs
aW1pdGF0aW9uIHRoZQo+ICsgKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBw
dWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKPiArICogc2VsbCBjb3BpZXMg
b2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdh
cmUgaXMKPiArICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9uczoKPiArICoKPiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRo
aXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KPiArICogYWxsIGNvcGll
cyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCj4gKyAqCj4gKyAqIFRI
RSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBL
SU5ELCBFWFBSRVNTIE9SCj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQg
VE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+ICsgKiBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUKPiArICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFO
WSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgo+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4g
QUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwo+ICsgKiBGUk9N
LCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9S
IE9USEVSCj4gKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KPiArICovCj4gKwo+ICsjaW5j
bHVkZSA8dWsvZXNzZW50aWFscy5oPgo+ICsjaW5jbHVkZSA8Y29tbW9uL2h5cGVydmlzb3IuaD4K
PiArCj4gKyNkZWZpbmUgX19YRU5fQ09OU09MRV9JTVBMX18KPiArI2luY2x1ZGUgImVtZ19jb25z
b2xlLmgiCj4gKwo+ICtpbnQgZW1nX2NvbnNvbGVfb3V0cHV0KGNvbnN0IGNoYXIgKnN0ciwgdW5z
aWduZWQgaW50IGxlbikKPiArewo+ICsJaW50IHJjOwo+ICsKPiArCXJjID0gSFlQRVJWSVNPUl9j
b25zb2xlX2lvKENPTlNPTEVJT193cml0ZSwgbGVuLCBERUNPTlNUKGNoYXIgKiwgc3RyKSk7Cj4g
KwlpZiAodW5saWtlbHkocmMgPCAwKSkKPiArCQlyZXR1cm4gcmM7Cj4gKwlyZXR1cm4gbGVuOwo+
ICt9Cj4gZGlmZiAtLWdpdCBhL3BsYXQveGVuL2VtZ19jb25zb2xlLmggYi9wbGF0L3hlbi9lbWdf
Y29uc29sZS5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMC4uZDk4Mzg3
NDgKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvcGxhdC94ZW4vZW1nX2NvbnNvbGUuaAo+IEBAIC0w
LDAgKzEsNjUgQEAKPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAq
Lwo+ICsvKgo+ICsgKiBBdXRob3JzOiBTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xh
Yi5ldT4KPiArICoKPiArICogQ29weXJpZ2h0IChjKSAyMDE5LCBORUMgTGFib3JhdG9yaWVzIEV1
cm9wZSBHbWJILCBORUMgQ29ycG9yYXRpb24uCj4gKyAqICAgICAgICAgICAgICAgICAgICAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KPiArICoKPiArICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cj4gKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwo+
ICsgKiBhcmUgbWV0Ogo+ICsgKgo+ICsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCj4gKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKPiArICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KPiArICog
My4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5hbWVz
IG9mIGl0cwo+ICsgKiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQo+ICsgKiAgICB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgo+ICsgKgo+ICsgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTICJBUyBJUyIKPiArICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQo+ICsgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RQo+ICsgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBI
T0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFCj4gKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKPiArICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKPiArICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCj4gKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCj4gKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCj4gKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCj4gKyAqIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgo+ICsgKgo+ICsgKiBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBP
UiBNT0RJRklFRCBJTiBBTlkgV0FZLgo+ICsgKi8KPiArCj4gKyNpZm5kZWYgX19YRU5fRU1HX0NP
TlNPTEVfSF9fCj4gKyNkZWZpbmUgX19YRU5fRU1HX0NPTlNPTEVfSF9fCj4gKwo+ICsjaW5jbHVk
ZSA8ZXJybm8uaD4KPiArCj4gKyNpZm5kZWYgX19YRU5fQ09OU09MRV9JTVBMX18KPiArI2Vycm9y
IERvIG5vdCBpbmNsdWRlIHRoaXMgaGVhZGVyIGRpcmVjdGx5LCB1c2UgPGNvbW1vbi9jb25zb2xl
Lmg+IGluc3RlYWQuCj4gKyNlbmRpZiAvKiAhX19YRU5fQ09OU09MRV9JTVBMX18qLwo+ICsKPiAr
I2lmIChDT05GSUdfWEVOX0tFUk5FTF9FTUdfQ09OU09MRSB8fCBDT05GSUdfWEVOX0RFQlVHX0VN
R19DT05TT0xFKQo+ICtpbnQgZW1nX2NvbnNvbGVfb3V0cHV0KGNvbnN0IGNoYXIgKnN0ciwgdW5z
aWduZWQgaW50IGxlbik7Cj4gKyNlbmRpZiAvKiAoQ09ORklHX1hFTl9LRVJORUxfRU1HX0NPTlNP
TEUgfHwgQ09ORklHX1hFTl9ERUJVR19FTUdfQ09OU09MRSkgKi8KPiArCj4gKyNpZiBDT05GSUdf
WEVOX0tFUk5FTF9FTUdfQ09OU09MRQo+ICsjZGVmaW5lIGVtZ19jb25zb2xlX291dHB1dF9rKHN0
ciwgbGVuKSBcCj4gKwllbWdfY29uc29sZV9vdXRwdXQoKHN0ciksIChsZW4pKQo+ICsjZWxzZQo+
ICsjZGVmaW5lIGVtZ19jb25zb2xlX291dHB1dF9rKHN0ciwgbGVuKSBcCj4gKwkoLUVOT1RTVVAp
Cj4gKyNlbmRpZiAvKiBDT05GSUdfWEVOX0tFUk5FTF9FTUdfQ09OU09MRSAqLwo+ICsKPiArI2lm
IENPTkZJR19YRU5fREVCVUdfRU1HX0NPTlNPTEUKPiArI2RlZmluZSBlbWdfY29uc29sZV9vdXRw
dXRfZChzdHIsIGxlbikgXAo+ICsJZW1nX2NvbnNvbGVfb3V0cHV0KChzdHIpLCAobGVuKSkKPiAr
I2Vsc2UKPiArI2RlZmluZSBlbWdfY29uc29sZV9vdXRwdXRfZChzdHIsIGxlbikgXAo+ICsJKC1F
Tk9UU1VQKQo+ICsjZW5kaWYgLyogQ09ORklHX1hFTl9ERUJVR19FTUdfQ09OU09MRSAqLwo+ICsK
PiArI2VuZGlmIC8qIF9fWEVOX0VNR19DT05TT0xFX0hfXyAqLwo+IGRpZmYgLS1naXQgYS9wbGF0
L3hlbi9odl9jb25zb2xlLmMgYi9wbGF0L3hlbi9odl9jb25zb2xlLmMKPiBuZXcgZmlsZSBtb2Rl
IDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwLi5jMzJhNDE1Nwo+IC0tLSAvZGV2L251bGwKPiArKysg
Yi9wbGF0L3hlbi9odl9jb25zb2xlLmMKPiBAQCAtMCwwICsxLDI1NCBAQAo+ICsvKiBTUERYLUxp
Y2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlIGFuZCBNSVQgKi8KPiArLyoKPiArICogQXV0
aG9yczogU2ltb24gS3VlbnplciA8c2ltb24ua3VlbnplckBuZWNsYWIuZXU+Cj4gKyAqCj4gKyAq
IENvcHlyaWdodCAoYykgMjAxOSwgTkVDIExhYm9yYXRvcmllcyBFdXJvcGUgR21iSCwgTkVDIENv
cnBvcmF0aW9uLgo+ICsgKiAgICAgICAgICAgICAgICAgICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Cj4gKyAqCj4gKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAo+ICsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKPiArICogYXJlIG1ldDoKPiAr
ICoKPiArICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgo+ICsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCj4gKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCj4gKyAqIDMuIE5laXRoZXIgdGhlIG5h
bWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKPiArICogICAg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KPiArICogICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KPiArICoKPiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCj4gKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKPiArICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKPiArICogQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJV
VE9SUyBCRQo+ICsgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCj4gKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCj4gKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwo+ICsgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgo+ICsgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQo+ICsgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRQo+ICsgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KPiArICoK
PiArICogVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQgT1IgTU9ESUZJRUQgSU4gQU5Z
IFdBWS4KPiArICovCj4gKwo+ICsvKgo+ICsgKiBTb21lIG9mIHRoaXMgY29kZSB3YXMgcG9ydGVk
IGZyb20gTWluaS1PUzoKPiArICogIGNvbnNvbGUveGVuY29uc19yaW5nLmMgYW5kIGNvbnNvbGUv
Y29uc29sZS5jCj4gKyAqLwo+ICsvKgo+ICsgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+ICsgKiAoQykg
MjAwNiAtIEdyemVnb3J6IE1pbG9zIC0gQ2FtYnJpZGdlIFVuaXZlcnNpdHkKPiArICoqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioKPiArICoKPiArICogICAgICAgIEZpbGU6IGNvbnNvbGUuaAo+ICsgKiAgICAg
IEF1dGhvcjogR3J6ZWdvcnogTWlsb3MKPiArICogICAgIENoYW5nZXM6Cj4gKyAqCj4gKyAqICAg
ICAgICBEYXRlOiBNYXIgMjAwNgo+ICsgKgo+ICsgKiBFbnZpcm9ubWVudDogWGVuIE1pbmltYWwg
T1MKPiArICogRGVzY3JpcHRpb246IENvbnNvbGUgaW50ZXJmYWNlLgo+ICsgKgo+ICsgKiBIYW5k
bGVzIGNvbnNvbGUgSS9PLiBEZWZpbmVzIHByaW50ay4KPiArICoKPiArICoqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioKPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2Us
IHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQo+ICsgKiBvZiB0aGlzIHNvZnR3YXJlIGFu
ZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KPiAr
ICogZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdp
dGhvdXQgbGltaXRhdGlvbiB0aGUKPiArICogcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBt
ZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yCj4gKyAqIHNlbGwg
Y29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhl
IFNvZnR3YXJlIGlzCj4gKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnM6Cj4gKyAqCj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNl
IGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCj4gKyAqIGFs
bCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgo+ICsgKgo+
ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBP
RiBBTlkgS0lORCwgRVhQUkVTUyBPUgo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBM
SU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiArICogRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFCj4gKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxF
IEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKPiArICogTElBQklMSVRZLCBXSEVUSEVS
IElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKPiAr
ICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhF
IFVTRSBPUiBPVEhFUgo+ICsgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCj4gKyAqLwo+ICsK
PiArI2luY2x1ZGUgPGludHR5cGVzLmg+Cj4gKyNpbmNsdWRlIDxzdHJpbmcuaD4KPiArI2luY2x1
ZGUgPHVrL3BsYXQvY29uc29sZS5oPgo+ICsjaW5jbHVkZSA8dWsvYXJjaC9sY3B1Lmg+Cj4gKyNp
bmNsdWRlIDx1ay9hc3NlcnQuaD4KPiArI2luY2x1ZGUgPHVrL2Vzc2VudGlhbHMuaD4KPiArI2lu
Y2x1ZGUgPHVrL2NvbmZpZy5oPgo+ICsKPiArI2RlZmluZSBfX1hFTl9DT05TT0xFX0lNUExfXwo+
ICsjaW5jbHVkZSAiaHZfY29uc29sZS5oIgo+ICsKPiArI2luY2x1ZGUgPGNvbW1vbi9ldmVudHMu
aD4KPiArI2luY2x1ZGUgPGNvbW1vbi9oeXBlcnZpc29yLmg+Cj4gKyNpbmNsdWRlIDx4ZW4veGVu
Lmg+Cj4gKwo+ICsjaWYgKGRlZmluZWQgX19YODZfMzJfXykgfHwgKGRlZmluZWQgX19YODZfNjRf
XykKPiArI2luY2x1ZGUgPHhlbi14ODYvc2V0dXAuaD4KPiArI2luY2x1ZGUgPHhlbi14ODYvbW0u
aD4KPiArI2lmIGRlZmluZWQgX19YODZfMzJfXwo+ICsjaW5jbHVkZSA8eGVuLXg4Ni9oeXBlcmNh
bGwzMi5oPgo+ICsjZWxpZiBkZWZpbmVkIF9fWDg2XzY0X18KPiArI2luY2x1ZGUgPHhlbi14ODYv
aHlwZXJjYWxsNjQuaD4KPiArI2VuZGlmCj4gKyNlbGlmIChkZWZpbmVkIF9fQVJNXzMyX18pIHx8
IChkZWZpbmVkIF9fQVJNXzY0X18pCj4gKyNpbmNsdWRlIDx4ZW4tYXJtL21tLmg+Cj4gKyNpbmNs
dWRlIDx4ZW4tYXJtL2h5cGVyY2FsbC5oPgo+ICsjZW5kaWYKPiArI2luY2x1ZGUgPHhlbi9pby9j
b25zb2xlLmg+Cj4gKyNpbmNsdWRlIDx4ZW4vaW8vcHJvdG9jb2xzLmg+Cj4gKyNpbmNsdWRlIDx4
ZW4vaW8vcmluZy5oPgo+ICsjaWZuZGVmIENPTkZJR19QQVJBVklSVAo+ICsjaW5jbHVkZSA8eGVu
L2h2bS9wYXJhbXMuaD4KPiArI2VuZGlmCj4gKwo+ICtzdGF0aWMgc3RydWN0IHhlbmNvbnNfaW50
ZXJmYWNlICpjb25zb2xlX3Jpbmc7Cj4gK3N0YXRpYyB1aW50MzJfdCBjb25zb2xlX2V2dGNobjsK
PiArc3RhdGljIGludCBjb25zb2xlX3JlYWR5Owo+ICsKPiArI2lmZGVmIENPTkZJR19QQVJBVklS
VAo+ICt2b2lkIGh2X2NvbnNvbGVfcHJlcGFyZSh2b2lkKQo+ICt7Cj4gKwljb25zb2xlX3Jpbmcg
PSBtZm5fdG9fdmlydChIWVBFUlZJU09SX3N0YXJ0X2luZm8tPmNvbnNvbGUuZG9tVS5tZm4pOwo+
ICsJY29uc29sZV9ldnRjaG4gPSBIWVBFUlZJU09SX3N0YXJ0X2luZm8tPmNvbnNvbGUuZG9tVS5l
dnRjaG47Cj4gK30KPiArI2Vsc2UKPiArdm9pZCBodl9jb25zb2xlX3ByZXBhcmUodm9pZCkKPiAr
ewo+ICsJLyogTk9UIElNUExFTUVOVEVEIFlFVCAqLwo+ICt9Cj4gKyNlbmRpZgo+ICsKPiArLyoK
PiArICogaHZfY29uc29sZV9vdXRwdXQgb3BlcmF0ZXMgaW4gdHdvIG1vZGVzOiBidWZmZXJlZCBh
bmQgaW5pdGlhbGl6ZWQuCj4gKyAqIFRoZSBidWZmZXJlZCBtb2RlIGlzIGF1dG9tYXRpY2FsbHkg
YWN0aXZhdGVkIGFmdGVyCj4gKyAqIF9saWJ4ZW5wbGF0X3ByZXBhcmVfY29uc29sZSgpIHdhcyBj
YWxsZWQgYW5kIHdlIGtub3cgd2hlcmUgdGhlIGNvbnNvbGUgcmluZwo+ICsgKiBpcy4gVGhlIG91
dHB1dCBzdHJpbmcgaXMgcHV0IHRvIHRoZSBjb25zb2xlIHJpbmcgdW50aWwgdGhlIHJpbmcgaXMg
ZnVsbC4gQW55Cj4gKyAqIGZ1cnRoZXIgY2hhcmFjdGVycyBhcmUgZGlzY2FyZGVkLiBTaW5jZSB0
aGUgZXZlbnQgY2hhbm5lbCBpcyBub3QgaW5pdGlhbGl6ZWQKPiArICogeWV0LCB0aGUgYmFja2Vu
ZCBpcyBub3Qgbm90aWZpZWQuIFRoaXMgbW9kZSBpcyBpbnRyb2R1Y2VkIHRvIHN1cHBvcnQgZWFy
bHkKPiArICogcHJpbnRpbmcsIGV2ZW4gYmVmb3JlIGV2ZW50cyBhcmUgbm90IGluaXRpYWxpemVk
Lgo+ICsgKiBfbGlieGVucGxhdF9pbml0X2NvbnNvbGUoKSBmaW5hbGl6ZXMgdGhlIGluaXRpYWxp
emF0aW9uIGFuZCBlbmFibGVzCj4gKyAqIHRoZSBldmVudCBjaGFubmVsLiBGcm9tIG5vdyBvbiwg
dGhlIGNvbnNvbGUgYmFja2VuZCBpcyBub3RpZmllZCB3aGVuZXZlcgo+ICsgKiB3ZSBwdXQgY2hh
cmFjdGVycyBvbiB0aGUgY29uc29sZSByaW5nLiBXaGVuZXZlciB0aGlzIHJpbmcgaXMgZnVsbCBh
bmQgdGhlcmUKPiArICogYXJlIHN0aWxsIGNoYXJhY3RlcnMgdGhhdCBzaG91bGQgYmUgcHJpbnRl
ZCwgd2UgYXJlIGVudGVyaW5nIGEgYnVzeSBsb29wIGFuZAo+ICsgKiB3YWl0IGZvciB0aGUgYmFj
a2VuZCB0byBtYWtlIHVzIHNwYWNlIGFnYWluLiBPZiBjb3Vyc2UgdGhpcyBpcyBzbG93OiBkbyBu
b3QKPiArICogcHJpbnQgc28gbXVjaCEgOy0pCj4gKyAqLwo+ICtpbnQgaHZfY29uc29sZV9vdXRw
dXQoY29uc3QgY2hhciAqc3RyLCB1bnNpZ25lZCBpbnQgbGVuKQo+ICt7Cj4gKwl1bnNpZ25lZCBp
bnQgc2VudCA9IDA7Cj4gKwlYRU5DT05TX1JJTkdfSURYIGNvbnMsIHByb2Q7Cj4gKwo+ICsJaWYg
KHVubGlrZWx5KCFjb25zb2xlX3JpbmcpKQo+ICsJCXJldHVybiBzZW50Owo+ICsKPiArcmV0cnk6
Cj4gKwljb25zID0gY29uc29sZV9yaW5nLT5vdXRfY29uczsKPiArCXByb2QgPSBjb25zb2xlX3Jp
bmctPm91dF9wcm9kOwo+ICsKPiArCW1iKCk7IC8qIG1ha2Ugc3VyZSB3ZSBoYXZlIGNvbnMgJiBw
cm9kIGJlZm9yZSB0b3VjaGluZyB0aGUgcmluZyAqLwo+ICsJVUtfQlVHT04oKHByb2QgLSBjb25z
KSA+IHNpemVvZihjb25zb2xlX3JpbmctPm91dCkpOwo+ICsKPiArCXdoaWxlICgoc2VudCA8IGxl
bikgJiYgKChwcm9kIC0gY29ucykgPCBzaXplb2YoY29uc29sZV9yaW5nLT5vdXQpKSkgewo+ICsJ
CWlmIChzdHJbc2VudF0gPT0gJ1xuJykgewo+ICsJCQkvKiBwcmVwZW5kICdccicgZm9yIGNvbnZl
cnRpbmcgJ1xuJyB0byAnXHInJ1xuJyAqLwo+ICsJCQlpZiAoKHByb2QgKyAxIC0gY29ucykgPj0g
c2l6ZW9mKGNvbnNvbGVfcmluZy0+b3V0KSkKPiArCQkJCWJyZWFrOyAvKiBub3QgZW5vdWdoIHNw
YWNlIGZvciAnXHInIGFuZCAnXG4nISAqLwo+ICsKPiArCQkJY29uc29sZV9yaW5nLT5vdXRbTUFT
S19YRU5DT05TX0lEWChwcm9kKyssCj4gKwkJCQkJCQkgICBjb25zb2xlX3JpbmctPm91dCldID0K
PiArCQkJCSdccic7Cj4gKwkJfQo+ICsKPiArCQljb25zb2xlX3JpbmctPm91dFtNQVNLX1hFTkNP
TlNfSURYKHByb2QrKywgY29uc29sZV9yaW5nLT5vdXQpXSA9Cj4gKwkJCXN0cltzZW50XTsKPiAr
CQlzZW50Kys7Cj4gKwl9Cj4gKwl3bWIoKTsgLyogZW5zdXJlIGNoYXJhY3RlcnMgYXJlIHdyaXR0
ZW4gYmVmb3JlIGluY3JlYXNpbmcgb3V0X3Byb2QgKi8KPiArCWNvbnNvbGVfcmluZy0+b3V0X3By
b2QgPSBwcm9kOwo+ICsKPiArCS8qIElzIHRoZSBjb25zb2xlIGZ1bGx5IGluaXRpYWxpemVkPwo+
ICsJICogQXJlIHdlIGFibGUgdG8gbm90aWZ5IHRoZSBiYWNrZW5kPwo+ICsJICovCj4gKwlpZiAo
bGlrZWx5KGNvbnNvbGVfcmVhZHkgJiYgY29uc29sZV9ldnRjaG4pKSB7Cj4gKwkJbm90aWZ5X3Jl
bW90ZV92aWFfZXZ0Y2huKGNvbnNvbGVfZXZ0Y2huKTsKPiArCj4gKwkJLyogVGhlcmUgYXJlIHN0
aWxsIGJ5dGVzIGxlZnQgdG8gc2VuZCBvdXQ/IElmIHllcywgZG8gbm90Cj4gKwkJICogZGlzY2Fy
ZCB0aGVtLCByZXRyeSBzZW5kaW5nIChlbnRlcnMgYnVzeSB3YWl0aW5nKQo+ICsJCSAqLwo+ICsJ
CWlmIChzZW50IDwgbGVuKQo+ICsJCQlnb3RvIHJldHJ5Owo+ICsJfQo+ICsJcmV0dXJuIHNlbnQ7
Cj4gK30KPiArCj4gK3ZvaWQgaHZfY29uc29sZV9mbHVzaCh2b2lkKQo+ICt7Cj4gKwlzdHJ1Y3Qg
eGVuY29uc19pbnRlcmZhY2UgKmludGY7Cj4gKwo+ICsJaWYgKCFjb25zb2xlX3JlYWR5KQo+ICsJ
CXJldHVybjsKPiArCj4gKwlpbnRmID0gY29uc29sZV9yaW5nOwo+ICsJaWYgKHVubGlrZWx5KCFp
bnRmKSkKPiArCQlyZXR1cm47Cj4gKwo+ICsJd2hpbGUgKGludGYtPm91dF9jb25zIDwgaW50Zi0+
b3V0X3Byb2QpCj4gKwkJYmFycmllcigpOwo+ICt9Cj4gKwo+ICtpbnQgaHZfY29uc29sZV9pbnB1
dChjaGFyICpzdHIsIHVuc2lnbmVkIGludCBtYXhsZW4pCj4gK3sKPiArCWludCByZWFkID0gMDsK
PiArCVhFTkNPTlNfUklOR19JRFggY29ucywgcHJvZDsKPiArCj4gKwljb25zID0gY29uc29sZV9y
aW5nLT5pbl9jb25zOwo+ICsJcHJvZCA9IGNvbnNvbGVfcmluZy0+aW5fcHJvZDsKPiArCXJtYigp
OyAvKiBtYWtlIHN1cmUgaW5fY29ucywgaW5fcHJvZCBhcmUgcmVhZCBiZWZvcmUgZW5xdWV1aW5n
ICovCj4gKwlVS19CVUdPTigocHJvZCAtIGNvbnMpID4gc2l6ZW9mKGNvbnNvbGVfcmluZy0+aW4p
KTsKPiArCj4gKwl3aGlsZSAoY29ucyAhPSBwcm9kICYmIG1heGxlbiA+IDApIHsKPiArCQkqKHN0
ciArIHJlYWQpID0gKihjb25zb2xlX3JpbmctPmluKwo+ICsJCQkJICBNQVNLX1hFTkNPTlNfSURY
KGNvbnMsIGNvbnNvbGVfcmluZy0+aW4pKTsKPiArCQlyZWFkKys7Cj4gKwkJY29ucysrOwo+ICsJ
CW1heGxlbi0tOwo+ICsJfQo+ICsKPiArCXdtYigpOyAvKiBlbnN1cmUgZmluaXNoZWQgb3BlcmF0
aW9uIGJlZm9yZSB1cGRhdGluZyBpbl9jb25zICovCj4gKwljb25zb2xlX3JpbmctPmluX2NvbnMg
PSBjb25zOwo+ICsKPiArCXJldHVybiByZWFkOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBodl9j
b25zb2xlX2V2ZW50KGV2dGNobl9wb3J0X3QgcG9ydCBfX3VudXNlZCwKPiArCQkJICAgICBzdHJ1
Y3QgX19yZWdzICpyZWdzIF9fdW51c2VkLAo+ICsJCQkgICAgIHZvaWQgKmRhdGEgX191bnVzZWQp
Cj4gK3sKPiArCS8qIE5PVCBJTVBMRU1FTlRFRCBZRVQgKi8KPiArfQo+ICsKPiArdm9pZCBodl9j
b25zb2xlX2luaXQodm9pZCkKPiArewo+ICsJaW50IGVycjsKPiArCj4gKwlVS19BU1NFUlQoY29u
c29sZV9yaW5nICE9IE5VTEwpOwo+ICsKPiArCXVrX3ByX2RlYnVnKCJodl9jb25zb2xlIEAgJXAg
KGV2dGNobjogJSJQUkl1MzIiKVxuIiwKPiArCQkgICAgY29uc29sZV9yaW5nLCBjb25zb2xlX2V2
dGNobik7Cj4gKwo+ICsJZXJyID0gYmluZF9ldnRjaG4oY29uc29sZV9ldnRjaG4sIGh2X2NvbnNv
bGVfZXZlbnQsIE5VTEwpOwo+ICsJaWYgKGVyciA8PSAwKQo+ICsJCVVLX0NSQVNIKCJGYWlsZWQg
dG8gYmluZCBldmVudCBjaGFubmVsIGZvciBodl9jb25zb2xlOiAlaVxuIiwKPiArCQkJIGVycik7
Cj4gKwl1bm1hc2tfZXZ0Y2huKGNvbnNvbGVfZXZ0Y2huKTsKPiArCj4gKwljb25zb2xlX3JlYWR5
ID0gMTsgLyogZW5hYmxlIG5vdGlmaWNhdGlvbiBvZiBiYWNrZW5kICovCj4gKwkvKiBmbHVzaCBx
dWV1ZWQgb3V0cHV0ICovCj4gKwlub3RpZnlfcmVtb3RlX3ZpYV9ldnRjaG4oY29uc29sZV9ldnRj
aG4pOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL3BsYXQveGVuL2h2X2NvbnNvbGUuaCBiL3BsYXQveGVu
L2h2X2NvbnNvbGUuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAuLjY5
YmUxZWRlCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL3BsYXQveGVuL2h2X2NvbnNvbGUuaAo+IEBA
IC0wLDAgKzEsNzggQEAKPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVz
ZSAqLwo+ICsvKgo+ICsgKiBBdXRob3JzOiBTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5l
Y2xhYi5ldT4KPiArICoKPiArICogQ29weXJpZ2h0IChjKSAyMDE5LCBORUMgTGFib3JhdG9yaWVz
IEV1cm9wZSBHbWJILCBORUMgQ29ycG9yYXRpb24uCj4gKyAqICAgICAgICAgICAgICAgICAgICAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KPiArICoKPiArICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cj4gKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwo+ICsgKiBhcmUgbWV0Ogo+ICsgKgo+ICsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCj4gKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKPiArICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KPiAr
ICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5h
bWVzIG9mIGl0cwo+ICsgKiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQo+ICsgKiAgICB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgo+ICsgKgo+ICsgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTICJBUyBJUyIKPiArICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQo+ICsgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRQo+ICsgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFCj4gKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKPiArICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKPiArICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCj4gKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCj4gKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCj4gKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCj4gKyAqIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgo+ICsgKgo+ICsgKiBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RF
RCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgo+ICsgKi8KPiArCj4gKyNpZm5kZWYgX19YRU5fSFZf
Q09OU09MRV9IX18KPiArI2RlZmluZSBfX1hFTl9IVl9DT05TT0xFX0hfXwo+ICsKPiArI2luY2x1
ZGUgPGVycm5vLmg+Cj4gKwo+ICsjaWZuZGVmIF9fWEVOX0NPTlNPTEVfSU1QTF9fCj4gKyNlcnJv
ciBEbyBub3QgaW5jbHVkZSB0aGlzIGhlYWRlciBkaXJlY3RseSwgdXNlIDxjb21tb24vY29uc29s
ZS5oPiBpbnN0ZWFkCj4gKyNlbmRpZiAvKiAhX19YRU5fQ09OU09MRV9JTVBMX18qLwo+ICsKPiAr
I2lmIChDT05GSUdfWEVOX0tFUk5FTF9IVl9DT05TT0xFIHx8IENPTkZJR19YRU5fREVCVUdfSFZf
Q09OU09MRSkKPiArdm9pZCBodl9jb25zb2xlX3ByZXBhcmUodm9pZCk7Cj4gK3ZvaWQgaHZfY29u
c29sZV9pbml0KHZvaWQpOwo+ICtpbnQgaHZfY29uc29sZV9vdXRwdXQoY29uc3QgY2hhciAqc3Ry
LCB1bnNpZ25lZCBpbnQgbGVuKTsKPiArdm9pZCBodl9jb25zb2xlX2ZsdXNoKHZvaWQpOwo+ICtp
bnQgaHZfY29uc29sZV9pbnB1dChjaGFyICpzdHIsIHVuc2lnbmVkIGludCBtYXhsZW4pOwo+ICsj
ZWxzZSAvKiAoQ09ORklHX1hFTl9LRVJORUxfSFZfQ09OU09MRSB8fCBDT05GSUdfWEVOX0RFQlVH
X0hWX0NPTlNPTEUpICovCj4gKyNkZWZpbmUgaHZfY29uc29sZV9wcmVwYXJlKCkJCQlcCj4gKwlk
byB7fSB3aGlsZSAoMCkKPiArI2RlZmluZSBodl9jb25zb2xlX2luaXQoKSBcCj4gKwlkbyB7fSB3
aGlsZSAoMCkKPiArI2RlZmluZSBodl9jb25zb2xlX2ZsdXNoKCkgXAo+ICsJZG8ge30gd2hpbGUg
KDApCj4gKyNkZWZpbmUgaHZfY29uc29sZV9pbnB1dChzdHIsIG1heGxlbikgXAo+ICsJKC1FTk9U
U1VQKQo+ICsjZW5kaWYgLyogKENPTkZJR19YRU5fS0VSTkVMX0hWX0NPTlNPTEUgfHwgQ09ORklH
X1hFTl9ERUJVR19IVl9DT05TT0xFKSAqLwo+ICsKPiArI2lmIENPTkZJR19YRU5fS0VSTkVMX0hW
X0NPTlNPTEUKPiArI2RlZmluZSBodl9jb25zb2xlX291dHB1dF9rKHN0ciwgbGVuKSBcCj4gKwlo
dl9jb25zb2xlX291dHB1dCgoc3RyKSwgKGxlbikpCj4gKyNlbHNlCj4gKyNkZWZpbmUgaHZfY29u
c29sZV9vdXRwdXRfayhzdHIsIGxlbikgXAo+ICsJKC1FTk9UU1VQKQo+ICsjZW5kaWYgLyogQ09O
RklHX1hFTl9LRVJORUxfSFZfQ09OU09MRSAqLwo+ICsKPiArI2lmIENPTkZJR19YRU5fREVCVUdf
SFZfQ09OU09MRQo+ICsjZGVmaW5lIGh2X2NvbnNvbGVfb3V0cHV0X2Qoc3RyLCBsZW4pIFwKPiAr
CWh2X2NvbnNvbGVfb3V0cHV0KChzdHIpLCAobGVuKSkKPiArI2Vsc2UKPiArI2RlZmluZSBodl9j
b25zb2xlX291dHB1dF9kKHN0ciwgbGVuKSBcCj4gKwkoLUVOT1RTVVApCj4gKyNlbmRpZiAvKiBD
T05GSUdfWEVOX0RFQlVHX0hWX0NPTlNPTEUgKi8KPiArCj4gKyNlbmRpZiAvKiBfX1hFTl9IVl9D
T05TT0xFX0hfXyAqLwo+IGRpZmYgLS1naXQgYS9wbGF0L3hlbi9pbmNsdWRlL2NvbW1vbi9jb25z
b2xlLmggYi9wbGF0L3hlbi9pbmNsdWRlL2NvbW1vbi9jb25zb2xlLmgKPiBpbmRleCBiNGYxYjUx
ZS4uMjNjNmIzMmUgMTAwNjQ0Cj4gLS0tIGEvcGxhdC94ZW4vaW5jbHVkZS9jb21tb24vY29uc29s
ZS5oCj4gKysrIGIvcGxhdC94ZW4vaW5jbHVkZS9jb21tb24vY29uc29sZS5oCj4gQEAgLTIsNyAr
Miw4IEBACj4gICAvKgo+ICAgICogQXV0aG9yczogU2ltb24gS3VlbnplciA8c2ltb24ua3Vlbnpl
ckBuZWNsYWIuZXU+Cj4gICAgKgo+IC0gKiBDb3B5cmlnaHQgKGMpIDIwMTcsIE5FQyBFdXJvcGUg
THRkLiwgTkVDIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgo+ICsgKiBDb3B5cmln
aHQgKGMpIDIwMTksIE5FQyBMYWJvcmF0b3JpZXMgRXVyb3BlIEdtYkgsIE5FQyBDb3Jwb3JhdGlv
bi4KPiArICogICAgICAgICAgICAgICAgICAgICBBbGwgcmlnaHRzIHJlc2VydmVkLgo+ICAgICoK
PiAgICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAo+ICAgICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCj4gQEAgLTM4LDE0ICszOSwxNCBAQAo+
ICAgLyoga2VlcHMgYnVmZmVyaW5nIGNvbnNvbGUgbWVzc2FnZQo+ICAgICogKG9uIFBWOiBzdGFy
dF9pbmZvIG5lZWQgdG8gYmUgbG9hZGVkKQo+ICAgICovCj4gLXZvaWQgX2xpYnhlbnBsYXRfcHJl
cGFyZV9jb25zb2xlKHZvaWQpOwo+ICt2b2lkIHByZXBhcmVfY29uc29sZSh2b2lkKTsKPiAgIAo+
ICAgLyogaW5pdGlhbGl6ZXMgdGhlIGNvbnNvbGUsIHNlbmRzIG91dCBidWZmZXJlZCBtZXNzYWdl
cwo+ICAgICogKGV2ZW50IHN5c3RlbSBoYXMgdG8gYmUgaW5pdGlhbGl6ZWQpCj4gICAgKi8KPiAt
dm9pZCBfbGlieGVucGxhdF9pbml0X2NvbnNvbGUodm9pZCk7Cj4gK3ZvaWQgaW5pdF9jb25zb2xl
KHZvaWQpOwo+ICAgCj4gICAKPiAtdm9pZCBodmNvbnNvbGVfZmx1c2godm9pZCk7Cj4gK3ZvaWQg
Zmx1c2hfY29uc29sZSh2b2lkKTsKPiAgIAo+ICAgI2VuZGlmIC8qIF9fQ09OU09MRV9IX18gKi8K
PiBkaWZmIC0tZ2l0IGEvcGxhdC94ZW4vc2h1dGRvd24uYyBiL3BsYXQveGVuL3NodXRkb3duLmMK
PiBpbmRleCAyNzJlY2U0Ny4uYzdiZjEyZDcgMTAwNjQ0Cj4gLS0tIGEvcGxhdC94ZW4vc2h1dGRv
d24uYwo+ICsrKyBiL3BsYXQveGVuL3NodXRkb3duLmMKPiBAQCAtNjYsNyArNjYsNyBAQCB2b2lk
IHVrcGxhdF90ZXJtaW5hdGUoZW51bSB1a3BsYXRfZ3N0YXRlIHJlcXVlc3QpCj4gICAJCWJyZWFr
Owo+ICAgCX0KPiAgIAo+IC0JaHZjb25zb2xlX2ZsdXNoKCk7Cj4gKwlmbHVzaF9jb25zb2xlKCk7
Cj4gICAKPiAgIAlmb3IgKDs7KSB7Cj4gICAJCXN0cnVjdCBzY2hlZF9zaHV0ZG93biBzY2hlZF9z
aHV0ZG93biA9IHsgLnJlYXNvbiA9IHJlYXNvbiB9Owo+IGRpZmYgLS1naXQgYS9wbGF0L3hlbi94
ODYvc2V0dXAuYyBiL3BsYXQveGVuL3g4Ni9zZXR1cC5jCj4gaW5kZXggNjBhOWY5ZTYuLjNjNTYz
MWQzIDEwMDY0NAo+IC0tLSBhL3BsYXQveGVuL3g4Ni9zZXR1cC5jCj4gKysrIGIvcGxhdC94ZW4v
eDg2L3NldHVwLmMKPiBAQCAtMTczLDcgKzE3Myw3IEBAIHZvaWQgX2xpYnhlbnBsYXRfeDg2ZW50
cnkodm9pZCAqc3RhcnRfaW5mbykKPiAgIAlfaW5pdF90cmFwcygpOwo+ICAgCV9pbml0X2NwdWZl
YXR1cmVzKCk7Cj4gICAJSFlQRVJWSVNPUl9zdGFydF9pbmZvID0gKHN0YXJ0X2luZm9fdCAqKXN0
YXJ0X2luZm87Cj4gLQlfbGlieGVucGxhdF9wcmVwYXJlX2NvbnNvbGUoKTsgLyogZW5hYmxlcyBi
dWZmZXJpbmcgZm9yIGNvbnNvbGUgKi8KPiArCXByZXBhcmVfY29uc29sZSgpOyAvKiBlbmFibGVz
IGJ1ZmZlcmluZyBmb3IgY29uc29sZSAqLwo+ICAgCj4gICAJdWtfcHJfaW5mbygiRW50ZXJpbmcg
ZnJvbSBYZW4gKHg4NiwgUFYpLi4uXG4iKTsKPiAgIAo+IEBAIC0xOTEsNyArMTkxLDcgQEAgdm9p
ZCBfbGlieGVucGxhdF94ODZlbnRyeSh2b2lkICpzdGFydF9pbmZvKQo+ICAgCj4gICAJX2luaXRf
bWVtKCk7Cj4gICAKPiAtCV9saWJ4ZW5wbGF0X2luaXRfY29uc29sZSgpOwo+ICsJaW5pdF9jb25z
b2xlKCk7Cj4gICAKPiAgIAl1a3BsYXRfZW50cnlfYXJncChDT05GSUdfVUtfTkFNRSwgY21kbGlu
ZSwgTUFYX0NNRExJTkVfU0laRSk7Cj4gICB9Cj4gCgpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21h
aWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Feb 13 13:34:04 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 13 Feb 2019 13:34:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gtufq-0005j7-Sx; Wed, 13 Feb 2019 13:34:02 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=41kN=QU=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1gtufp-0005j2-LL
 for minios-devel@lists.xen.org; Wed, 13 Feb 2019 13:34:01 +0000
X-Inumbo-ID: 03ce9552-2f94-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 03ce9552-2f94-11e9-bc90-bc764e045a96;
 Wed, 13 Feb 2019 13:33:58 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 62D3D104E11;
 Wed, 13 Feb 2019 14:33:57 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 5ZKwYY9fpR28; Wed, 13 Feb 2019 14:33:57 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 3F40F104DF2
 for <minios-devel@lists.xen.org>; Wed, 13 Feb 2019 14:33:55 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 13 Feb 2019 14:33:54
 +0100
To: Simon Kuenzer <simon.kuenzer@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190213130737.30504-1-simon.kuenzer@neclab.eu>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <52e9cae6-37bf-b16c-8378-0ed9f12dd836@neclab.eu>
Date: Wed, 13 Feb 2019 14:33:54 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190213130737.30504-1-simon.kuenzer@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2] plat/xen: CPU definition for
 Arm32
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gU2ltb24sCgpUaGlzIHBhdGNoIHNlZW1zIGZpbmUuClJldmlld2VkLWJ5OiBTaGFyYW4g
U2FudGhhbmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xhYi5ldT4KClRoYW5rcyAmIFJlZ2FyZHMK
U2hhcmFuCgpPbiAyLzEzLzE5IDI6MDcgUE0sIFNpbW9uIEt1ZW56ZXIgd3JvdGU6Cj4gSW50cm9k
dWNlIG1pbmltYWwgQ1BVIGRlZmluaXRvbnMgdG8gZW5hYmxlIGNvbXBpbGluZyBmb3IgQXJtMzIu
Cj4gVGhpcyBjb21taXRzIGFsc28gcmVtb3ZlcyB4ODYgc3BlY2lmaWMgQ1BVIGZ1bmN0aW9ucyBm
cm9tIHRoZQo+IEFybTMyIGJ1aWxkIHVuaXQgYW5kIGludHJvZHVjZXMgQ09ORklHX1hOX0hWTUxJ
VEUgYXMgaW52aXNpYmxlCj4gbWVudSBjb25maWd1cmFpdG9uLiBJdHMgaW50ZW50aW9uIGlzIHRv
IHN1cHBvcnQgc3dpdGNoaW5nCj4gYmV0d2VlbiBQViBhbmQgUFZIIG1vZGUgbGF0ZXIuIEZvciBu
b3csIHdlIHNldCBQViBtb2RlIGZvciB4ODYKPiBhbmQgUFZIIG1vZGUgZm9yIEFybS4KPiAKPiBT
aWduZWQtb2ZmLWJ5OiBTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4KPiAt
LS0KPiAgIHBsYXQvY29tbW9uL2FybS9jcHVfbmF0aXZlLmMgICAgICB8IDExICsrKysrKysrKyst
Cj4gICBwbGF0L2NvbW1vbi9pbmNsdWRlL2FybS9hcm0vY3B1LmggfCAgOSArKysrKysrKysKPiAg
IHBsYXQveGVuL0NvbmZpZy51ayAgICAgICAgICAgICAgICB8ICA2ICsrKysrKwo+ICAgcGxhdC94
ZW4vTWFrZWZpbGUudWsgICAgICAgICAgICAgIHwgIDcgKysrKy0tLQo+ICAgNCBmaWxlcyBjaGFu
Z2VkLCAyOSBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9w
bGF0L2NvbW1vbi9hcm0vY3B1X25hdGl2ZS5jIGIvcGxhdC9jb21tb24vYXJtL2NwdV9uYXRpdmUu
Ywo+IGluZGV4IDg5OGM0Mzc1Li5kOTM2NDgzNSAxMDA2NDQKPiAtLS0gYS9wbGF0L2NvbW1vbi9h
cm0vY3B1X25hdGl2ZS5jCj4gKysrIGIvcGxhdC9jb21tb24vYXJtL2NwdV9uYXRpdmUuYwo+IEBA
IC0zMSwxMCArMzEsMTQgQEAKPiAgICAqCj4gICAgKiBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVY
VFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgo+ICAgICovCj4gKyNpbmNsdWRlIDx1ay9j
b25maWcuaD4KPiAgICNpbmNsdWRlIDxjcHUuaD4KPiArI2lmICFDT05GSUdfQVJDSF9BUk1fMzIK
PiArLyogVE9ETzogTm90IHlldCBzdXBwb3J0ZWQgZm9yIEFybTMyICovCj4gICAjaW5jbHVkZSA8
aXJxLmg+Cj4gLSNpbmNsdWRlIDx1ay9hc3NlcnQuaD4KPiAgICNpbmNsdWRlIDxhcm0vY3B1X2Rl
ZnMuaD4KPiArI2VuZGlmCj4gKyNpbmNsdWRlIDx1ay9hc3NlcnQuaD4KPiAgIAo+ICAgLyoKPiAg
ICAqIEhhbHRzIHRoZSBDUFUgdW50aWwgdGhlIG5leHQgZXh0ZXJuYWwgaW50ZXJydXB0IGlzIGZp
cmVkLiBGb3IgQXJtLAo+IEBAIC00NSw2ICs0OSwxMCBAQCB2b2lkIGhhbHQodm9pZCkKPiAgIAlf
X2FzbV9fIF9fdm9sYXRpbGVfXygid2ZpIik7Cj4gICB9Cj4gICAKPiArI2lmICFDT05GSUdfQVJD
SF9BUk1fMzIKPiArLyoKPiArICogVE9ETzogUG9ydCB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uYWxp
dHkgdG8gQXJtMzIKPiArICovCj4gICAvKiBTeXN0ZW1zIHN1cHBvcnQgUFNDSSA+PSAwLjIgY2Fu
IGRvIHN5c3RlbSByZXNldCBmcm9tIFBTQ0kgKi8KPiAgIHZvaWQgcmVzZXQodm9pZCkKPiAgIHsK
PiBAQCAtNzQsMyArODIsNCBAQCB2b2lkIHN5c3RlbV9vZmYodm9pZCkKPiAgIAo+ICAgCXNtY2Nf
cHNjaV9jYWxsKFBTQ0lfRk5JRF9TWVNURU1fT0ZGLCAwLCAwLCAwKTsKPiAgIH0KPiArI2VuZGlm
IC8qICFDT05GSUdfQVJDSF9BUk1fMzIgKi8KPiBkaWZmIC0tZ2l0IGEvcGxhdC9jb21tb24vaW5j
bHVkZS9hcm0vYXJtL2NwdS5oIGIvcGxhdC9jb21tb24vaW5jbHVkZS9hcm0vYXJtL2NwdS5oCj4g
aW5kZXggNjk3YTIwYTEuLmM5NjZjYjQxIDEwMDY0NAo+IC0tLSBhL3BsYXQvY29tbW9uL2luY2x1
ZGUvYXJtL2FybS9jcHUuaAo+ICsrKyBiL3BsYXQvY29tbW9uL2luY2x1ZGUvYXJtL2FybS9jcHUu
aAo+IEBAIC0xLDggKzEsMTAgQEAKPiAgIC8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0Qt
My1DbGF1c2UgKi8KPiAgIC8qCj4gICAgKiBBdXRob3JzOiBTaW1vbiBLdWVuemVyIDxzaW1vbi5r
dWVuemVyQG5lY2xhYi5ldT4KPiArICogQXV0aG9yczogV2VpIENoZW4gPHdlaS5jaGVuQGFybS5j
b20+Cj4gICAgKgo+ICAgICoKPiArICogQ29weXJpZ2h0IChjKSAyMDE4LCBBcm0gTHRkLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgo+ICAgICogQ29weXJpZ2h0IChjKSAyMDE5LCBORUMgTGFib3JhdG9y
aWVzIEV1cm9wZSBHbWJILCBORUMgQ29ycG9yYXRpb24uCj4gICAgKiAgICAgICAgICAgICAgICAg
ICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4gICAgKgo+IEBAIC0zMyw3ICszNSwxNCBAQAo+ICAg
ICoKPiAgICAqIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElO
IEFOWSBXQVkuCj4gICAgKi8KPiArI2lmbmRlZiBfUExBVF9DT01NT05fQVJNX0FSTV9DUFVfSF8K
PiArI2RlZmluZSBfUExBVF9DT01NT05fQVJNX0FSTV9DUFVfSF8KPiAgIAo+ICAgc3RhdGljIGlu
bGluZSB2b2lkIF9pbml0X2NwdWZlYXR1cmVzKHZvaWQpCj4gICB7Cj4gICB9Cj4gKwo+ICsvKiBD
UFUgbmF0aXZlIEFQSXMgKi8KPiArdm9pZCBoYWx0KHZvaWQpOwo+ICsKPiArI2VuZGlmIC8qIF9Q
TEFUX0NPTU1PTl9BUk1fQVJNX0NQVV9IXyAqLwo+IGRpZmYgLS1naXQgYS9wbGF0L3hlbi9Db25m
aWcudWsgYi9wbGF0L3hlbi9Db25maWcudWsKPiBpbmRleCBlYmY3NjZkZi4uMjNiZGYzNWEgMTAw
NjQ0Cj4gLS0tIGEvcGxhdC94ZW4vQ29uZmlnLnVrCj4gKysrIGIvcGxhdC94ZW4vQ29uZmlnLnVr
Cj4gQEAgLTEwLDYgKzEwLDEyIEBAIG1lbnVjb25maWcgUExBVF9YRU4KPiAgICAgICAgICAgICAg
ICAgICBDcmVhdGUgYSBVbmlrcmFmdCBpbWFnZSB0aGF0IHJ1bnMgYXMgYSBYZW4gZ3Vlc3QKPiAg
IAo+ICAgaWYgKFBMQVRfWEVOKQo+ICsjIEludmlzaWJsZSBvcHRpb24gdG8gc3dpdGNoIGJldHdl
ZW4gUFYgYW5kIFBWSCBtb2RlCj4gK2NvbmZpZyBYRU5fSFZNTElURQo+ICsJYm9vbAo+ICsJZGVm
YXVsdCBuIGlmIChBUkNIX1g4Nl82NCB8fCBBUkNIX1g4Nl8zMikKPiArCWRlZmF1bHQgeQo+ICsK
PiAgIG1lbnUgIkNvbnNvbGUgT3B0aW9ucyIKPiAgIAo+ICAgY29uZmlnIFhFTl9LRVJORUxfSFZf
Q09OU09MRQo+IGRpZmYgLS1naXQgYS9wbGF0L3hlbi9NYWtlZmlsZS51ayBiL3BsYXQveGVuL01h
a2VmaWxlLnVrCj4gaW5kZXggN2EzZmNjOTMuLjM2NDJjNWIyIDEwMDY0NAo+IC0tLSBhL3BsYXQv
eGVuL01ha2VmaWxlLnVrCj4gKysrIGIvcGxhdC94ZW4vTWFrZWZpbGUudWsKPiBAQCAtNDYsMTIg
KzQ2LDEzIEBAIExJQlhFTlBMQVRfU1JDUy0kKENPTkZJR19BUkNIX1g4Nl82NCkgKz0gJChMSUJY
RU5QTEFUX0JBU0UpL3g4Ni9tbS5jCj4gICBMSUJYRU5QTEFUX1NSQ1MtJChDT05GSUdfQVJDSF9Y
ODZfNjQpICs9ICQoTElCWEVOUExBVF9CQVNFKS94ODYvYXJjaF9ldmVudHMuYwo+ICAgTElCWEVO
UExBVF9TUkNTLSQoQ09ORklHX0FSQ0hfWDg2XzY0KSArPSAkKExJQlhFTlBMQVRfQkFTRSkveDg2
L2FyY2hfdGltZS5jCj4gICAKPiAtaWZuZXEgKCQoWEVOX0hWTUxJVEUpLHkpCj4gK2lmbmVxICgk
KENPTkZJR19YRU5fSFZNTElURSkseSkKPiAgIExJQlhFTlBMQVRfQVNGTEFHUy15ICAgICAgICAg
ICArPSAtRENPTkZJR19QQVJBVklSVAo+ICAgTElCWEVOUExBVF9DRkxBR1MteSAgICAgICAgICAg
ICs9IC1EQ09ORklHX1BBUkFWSVJUCj4gLUxJQlhFTlBMQVRfU1JDUy15ICAgICAgICAgICAgICAr
PSAkKExJQlhFTlBMQVRfQkFTRSkveDg2L2NwdV9wdi5jCj4gK0xJQlhFTlBMQVRfU1JDUy0kKENP
TkZJR19BUkNIX1g4Nl82NCkgKz0gJChMSUJYRU5QTEFUX0JBU0UpL3g4Ni9jcHVfcHYuYwo+ICAg
ZWxzZQo+IC1MSUJYRU5QTEFUX1NSQ1MteSAgICAgICAgICAgICAgKz0gJChVS19QTEFUX0NPTU1P
Tl9CQVNFKS94ODYvY3B1X25hdGl2ZS5jCj4gK0xJQlhFTlBMQVRfU1JDUy0kKENPTkZJR19BUkNI
X1g4Nl82NCkgKz0gJChVS19QTEFUX0NPTU1PTl9CQVNFKS94ODYvY3B1X25hdGl2ZS5jCj4gK0xJ
QlhFTlBMQVRfU1JDUy0kKENPTkZJR19BUkNIX0FSTV8zMikgKz0gJChVS19QTEFUX0NPTU1PTl9C
QVNFKS9hcm0vY3B1X25hdGl2ZS5jCj4gICBlbmRpZgo+ICAgCj4gICBMSUJYRU5QTEFUX1NSQ1Mt
JChDT05GSUdfQVJDSF9BUk1fMzIpICs9ICQoTElCWEVOUExBVF9CQVNFKS9hcm0vc2V0dXAuYwo+
IAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9z
LWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0
cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Feb 13 13:36:22 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 13 Feb 2019 13:36:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gtui5-0005xK-IY; Wed, 13 Feb 2019 13:36:21 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=ZwM7=QU=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1gtui4-0005xB-9C
 for minios-devel@lists.xen.org; Wed, 13 Feb 2019 13:36:20 +0000
X-Inumbo-ID: 576a7c32-2f94-11e9-bc90-bc764e045a96
Received: from queen.nlehd.de (unknown [195.37.154.80])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id 576a7c32-2f94-11e9-bc90-bc764e045a96;
 Wed, 13 Feb 2019 13:36:18 +0000 (UTC)
Received: from c414.ant-net (c414.ant-net [192.168.0.156])
 by queen.nlehd.de (Postfix) with ESMTP id 0322D413FB;
 Wed, 13 Feb 2019 14:36:19 +0100 (CET)
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: minios-devel@lists.xen.org
Date: Wed, 13 Feb 2019 14:36:17 +0100
Message-Id: <20190213133617.4251-1-simon.kuenzer@neclab.eu>
X-Mailer: git-send-email 2.11.0
Subject: [Minios-devel] [UNIKRAFT PATCH] build: Add HAVE_NW_STACK feature
 symbol
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Simon Kuenzer <simon.kuenzer@neclab.eu>, sharan.santhanam@neclab.eu
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

UHJvdmlkZSBIQVZFX05XX1NUQUNLIGZlYXR1cmUgc3ltYm9sIGluIGxpYi9Db25maWcudWsuCldo
ZW4gbGlibHdpcCBpcyB1c2VkLCBpdCBpcyBzZXQuCgpTaWduZWQtb2ZmLWJ5OiBTaW1vbiBLdWVu
emVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4KLS0tCiBsaWIvQ29uZmlnLnVrIHwgNCArKysr
CiAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvbGliL0NvbmZp
Zy51ayBiL2xpYi9Db25maWcudWsKaW5kZXggNWNkNzU4NTguLjQ1MzIxZWZlIDEwMDY0NAotLS0g
YS9saWIvQ29uZmlnLnVrCisrKyBiL2xpYi9Db25maWcudWsKQEAgLTE3LDYgKzE3LDEwIEBAIGNv
bmZpZyBIQVZFX1NDSEVECiAgICAgICAgYm9vbAogICAgICAgIGRlZmF1bHQgbgogCitjb25maWcg
SEFWRV9OV19TVEFDSworICAgICAgIGJvb2wKKyAgICAgICBkZWZhdWx0IG4KKwogCiAjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIwogIwotLSAKMi4xMS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3Mt
ZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9t
YWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Feb 13 13:37:08 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 13 Feb 2019 13:37:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gtuiq-000605-L3; Wed, 13 Feb 2019 13:37:08 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=41kN=QU=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1gtuio-0005zz-O1
 for minios-devel@lists.xen.org; Wed, 13 Feb 2019 13:37:06 +0000
X-Inumbo-ID: 737134e3-2f94-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 737134e3-2f94-11e9-bc90-bc764e045a96;
 Wed, 13 Feb 2019 13:37:05 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id AE517F2081;
 Wed, 13 Feb 2019 14:37:04 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id TPeKKXBzmlCJ; Wed, 13 Feb 2019 14:37:04 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 7D58CF200A
 for <minios-devel@lists.xen.org>; Wed, 13 Feb 2019 14:37:02 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 13 Feb 2019 14:37:02
 +0100
To: Simon Kuenzer <simon.kuenzer@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190213133617.4251-1-simon.kuenzer@neclab.eu>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <4c84c5e4-f8d0-e471-8cdc-e6b00e7b076c@neclab.eu>
Date: Wed, 13 Feb 2019 14:37:02 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190213133617.4251-1-simon.kuenzer@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH] build: Add HAVE_NW_STACK
 feature symbol
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gU2ltb24sCgpUaGlzIHBhdGNoIHNlZW1zIGZpbmUuClJldmlld2VkLWJ5OiBTaGFyYW4g
U2FudGhhbmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xhYi5ldT4KClRoYW5rcyAmIFJlZ2FyZHMK
U2hhcmFuCgpPbiAyLzEzLzE5IDI6MzYgUE0sIFNpbW9uIEt1ZW56ZXIgd3JvdGU6Cj4gUHJvdmlk
ZSBIQVZFX05XX1NUQUNLIGZlYXR1cmUgc3ltYm9sIGluIGxpYi9Db25maWcudWsuCj4gV2hlbiBs
aWJsd2lwIGlzIHVzZWQsIGl0IGlzIHNldC4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBTaW1vbiBLdWVu
emVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4KPiAtLS0KPiAgIGxpYi9Db25maWcudWsgfCA0
ICsrKysKPiAgIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKPiAKPiBkaWZmIC0tZ2l0
IGEvbGliL0NvbmZpZy51ayBiL2xpYi9Db25maWcudWsKPiBpbmRleCA1Y2Q3NTg1OC4uNDUzMjFl
ZmUgMTAwNjQ0Cj4gLS0tIGEvbGliL0NvbmZpZy51awo+ICsrKyBiL2xpYi9Db25maWcudWsKPiBA
QCAtMTcsNiArMTcsMTAgQEAgY29uZmlnIEhBVkVfU0NIRUQKPiAgICAgICAgICBib29sCj4gICAg
ICAgICAgZGVmYXVsdCBuCj4gICAKPiArY29uZmlnIEhBVkVfTldfU1RBQ0sKPiArICAgICAgIGJv
b2wKPiArICAgICAgIGRlZmF1bHQgbgo+ICsKPiAgIAo+ICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMKPiAgICMKPiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2pl
Y3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5p
b3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Sun Feb 17 18:47:15 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 17 Feb 2019 18:47:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gvRT6-0004SO-Dg; Sun, 17 Feb 2019 18:47:12 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=cTIL=QY=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1gvRT4-0004SJ-Ly
 for minios-devel@lists.xen.org; Sun, 17 Feb 2019 18:47:10 +0000
X-Inumbo-ID: 6b160554-32e4-11e9-babb-8b38e6805b42
Received: from queen.nlehd.de (unknown [195.37.154.80])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id 6b160554-32e4-11e9-babb-8b38e6805b42;
 Sun, 17 Feb 2019 18:47:04 +0000 (UTC)
Received: from c414.ant-net (c414.ant-net [192.168.0.156])
 by queen.nlehd.de (Postfix) with ESMTP id A8DB340B28;
 Sun, 17 Feb 2019 19:47:04 +0100 (CET)
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: minios-devel@lists.xen.org
Date: Sun, 17 Feb 2019 19:46:46 +0100
Message-Id: <20190217184646.12586-1-simon.kuenzer@neclab.eu>
X-Mailer: git-send-email 2.11.0
Subject: [Minios-devel] [UNIKRAFT PATCH] plat/kvm: Acknowledge all interrupts
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: yuri.volchkov@neclab.eu, Simon Kuenzer <simon.kuenzer@neclab.eu>,
 sharan.santhanam@neclab.eu, costin.lupu@cs.pub.ro
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

QWNrbm93bGVkZ2UgaW50ZXJydXB0cyBldmVuIGluIHRoZSBjYXNlIHdoZW4gdGhlcmUgd2FzIG5v
CmhhbmRsZXIgZm9yIGl0LiBXZSBkbyB0aGlzIHRvICgxKSBjb21wZW5zYXRlIHBvdGVudGlhbApz
cHVyaW91cyBpbnRlcnJ1cHRzIGxpa2UgY3VycmVudGx5IGhhcHBlbmluZyBvbiB2aXJ0aW8sCmFu
ZCAoMikgdG8gbWluaW1pemUgaW1wYWN0IG9uIGRldmljZSBkcml2ZXJzIHRoYXQgc2hhcmUKb25l
IGludGVycnVwdCBsaW5lIHRoYXQgZ290IHByZXZpb3VzbHkgZGlzYWJsZWQuIFdoZW5ldmVyCmFu
IGludGVycnVwdCB3YXMgdW5oYW5kbGVkIGEgY3JpdGljYWwgd2FybmluZyBpcyBzdGlsbApwcmlu
dGVkIHRvIHRoZSBrZXJuZWwgY29uc29sZS4KClNpZ25lZC1vZmYtYnk6IFNpbW9uIEt1ZW56ZXIg
PHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1PgotLS0KIHBsYXQva3ZtL2lycS5jIHwgMjIgKysrKysr
KysrKysrLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDEwIGRl
bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3BsYXQva3ZtL2lycS5jIGIvcGxhdC9rdm0vaXJxLmMK
aW5kZXggMGI3MzRmNjcuLmVmOTVhMDIyIDEwMDY0NAotLS0gYS9wbGF0L2t2bS9pcnEuYworKysg
Yi9wbGF0L2t2bS9pcnEuYwpAQCAtODAsNyArODAsNiBAQCBleHRlcm4gdW5zaWduZWQgbG9uZyBz
Y2hlZF9oYXZlX3BlbmRpbmdfZXZlbnRzOwogdm9pZCBfdWtwbGF0X2lycV9oYW5kbGUodW5zaWdu
ZWQgbG9uZyBpcnEpCiB7CiAJc3RydWN0IGlycV9oYW5kbGVyICpoOwotCWludCBoYW5kbGVkID0g
MDsKIAogCVVLX1NMSVNUX0ZPUkVBQ0goaCwgJmlycV9oYW5kbGVyc1tpcnFdLCBlbnRyaWVzKSB7
CiAJCS8qIFRPRE8gZGVmaW5lIHBsYXRmb3JtIHdpc2UgbWFjcm8gZm9yIHRpbWVyIElSUSBudW1i
ZXIgKi8KQEAgLTk3LDE2ICs5NiwxOSBAQCB2b2lkIF91a3BsYXRfaXJxX2hhbmRsZSh1bnNpZ25l
ZCBsb25nIGlycSkKIAkJCSAqLwogCQkJX191a190ZXN0X2FuZF9zZXRfYml0KDAsICZzY2hlZF9o
YXZlX3BlbmRpbmdfZXZlbnRzKTsKIAotCQlpZiAoaC0+ZnVuYyhoLT5hcmcpID09IDEpIHsKLQkJ
CWhhbmRsZWQgPSAxOwotCQkJYnJlYWs7Ci0JCX0KKwkJaWYgKGgtPmZ1bmMoaC0+YXJnKSA9PSAx
KQorCQkJZ290byBleGl0X2FjazsKIAl9Ci0KLQlpZiAoIWhhbmRsZWQpCi0JCXVrX3ByX2NyaXQo
IlVuaGFuZGxlZCBpcnE9JWx1XG4iLCBpcnEpOwotCWVsc2UKLQkJaW50Y3RybF9hY2tfaXJxKGly
cSk7CisJLyoKKwkgKiBBY2tub3dsZWRnZSBpbnRlcnJ1cHRzIGV2ZW4gaW4gdGhlIGNhc2Ugd2hl
biB0aGVyZSB3YXMgbm8gaGFuZGxlciBmb3IKKwkgKiBpdC4gV2UgZG8gdGhpcyB0byAoMSkgY29t
cGVuc2F0ZSBwb3RlbnRpYWwgc3B1cmlvdXMgaW50ZXJydXB0cyBvZgorCSAqIGRldmljZXMsIGFu
ZCAoMikgdG8gbWluaW1pemUgaW1wYWN0IG9uIGRyaXZlcnMgdGhhdCBzaGFyZSBvbmUKKwkgKiBp
bnRlcnJ1cHQgbGluZSB0aGF0IHdvdWxkIHRoZW4gc3RheSBkaXNhYmxlZC4KKwkgKi8KKwl1a19w
cl9jcml0KCJVbmhhbmRsZWQgaXJxPSVsdVxuIiwgaXJxKTsKKworZXhpdF9hY2s6CisJaW50Y3Ry
bF9hY2tfaXJxKGlycSk7CiB9CiAKIGludCB1a3BsYXRfaXJxX2luaXQoc3RydWN0IHVrX2FsbG9j
ICphKQotLSAKMi4xMS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVu
cHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZv
L21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Feb 18 09:30:48 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 18 Feb 2019 09:30:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gvfGA-0006Op-8N; Mon, 18 Feb 2019 09:30:46 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=P4Ch=QZ=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1gvfG9-0006Ok-2y
 for minios-devel@lists.xen.org; Mon, 18 Feb 2019 09:30:45 +0000
X-Inumbo-ID: da7986f2-335f-11e9-8147-1ff3b4f4816e
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id da7986f2-335f-11e9-8147-1ff3b4f4816e;
 Mon, 18 Feb 2019 09:30:39 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 7C9AB104E7E;
 Mon, 18 Feb 2019 10:30:38 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id gWUeTNRRVtJo; Mon, 18 Feb 2019 10:30:38 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 516F8104DD6
 for <minios-devel@lists.xen.org>; Mon, 18 Feb 2019 10:30:36 +0100 (CET)
Received: from vortex.office.hd (10.1.2.30) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 18 Feb
 2019 10:30:35 +0100
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Mon, 18 Feb 2019 10:30:26 +0100
Message-ID: <20190218093026.20058-1-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.20.1
MIME-Version: 1.0
X-Originating-IP: [10.1.2.30]
Subject: [Minios-devel] [UNIKRAFT/LWIP PATCH] uknetdev_output: Fix loop
 iterator
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Florian Schmidt <florian.schmidt@neclab.eu>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>,
 Sharan Santhanam <sharan.santhanam@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2V0dGluZyBxIHRvIHAtPm5leHQgbGVhZHMgdG8gYW4gaW5maW5pdGUgbG9vcCBpZiBwIGhhcyBh
dCBsZWFzdCB0d28Kc2VnbWVudHMuIFRoZSBjb3JyZWN0IHdheSBpcyB0byBpdGVyYXRlIG92ZXIg
cSBzbyB3ZSBhY3R1YWxseSBwcm9ncmVzcwp0aHJvdWdoIHRoZSBsaXN0LgoKU2lnbmVkLW9mZi1i
eTogRmxvcmlhbiBTY2htaWR0IDxmbG9yaWFuLnNjaG1pZHRAbmVjbGFiLmV1PgotLS0KIHVrbmV0
ZGV2LmMgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24o
LSkKCmRpZmYgLS1naXQgYS91a25ldGRldi5jIGIvdWtuZXRkZXYuYwppbmRleCAzNDM5NGZjLi40
N2QyZmIxIDEwMDY0NAotLS0gYS91a25ldGRldi5jCisrKyBiL3VrbmV0ZGV2LmMKQEAgLTE0Miw3
ICsxNDIsNyBAQCBzdGF0aWMgZXJyX3QgdWtuZXRkZXZfb3V0cHV0KHN0cnVjdCBuZXRpZiAqbmYs
IHN0cnVjdCBwYnVmICpwKQogCSAqICAgICAgIHlldC4gQXMgbG9uZyBhcyB3ZSBkbyBub3QgaGF2
ZSB0aGlzLCB3ZSBoYXZlIHRvIGNvcHkuCiAJICovCiAJd3BvcyA9IG5iLT5kYXRhOwotCWZvciAo
cSA9IHA7IHEgIT0gTlVMTDsgcSA9IHAtPm5leHQpIHsKKwlmb3IgKHEgPSBwOyBxICE9IE5VTEw7
IHEgPSBxLT5uZXh0KSB7CiAJCW1lbWNweSh3cG9zLCBxLT5wYXlsb2FkLCBxLT5sZW4pOwogCQl3
cG9zICs9IHEtPmxlbjsKIAl9Ci0tIAoyLjIwLjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21h
aWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Feb 18 12:19:16 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 18 Feb 2019 12:19:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gvhtD-0007Kw-QM; Mon, 18 Feb 2019 12:19:15 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=G8G1=QZ=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1gvhtC-0007Kq-71
 for minios-devel@lists.xen.org; Mon, 18 Feb 2019 12:19:14 +0000
X-Inumbo-ID: 64019c86-3377-11e9-bd63-7b3f585335d5
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 64019c86-3377-11e9-bd63-7b3f585335d5;
 Mon, 18 Feb 2019 12:19:09 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id E3336104DD2;
 Mon, 18 Feb 2019 13:19:07 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id fhsGh1xPGGFz; Mon, 18 Feb 2019 13:19:07 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id B8055104BE1
 for <minios-devel@lists.xen.org>; Mon, 18 Feb 2019 13:19:05 +0100 (CET)
Received: from HYDRA.office.hd ([169.254.4.179]) by METHONE.office.hd
 ([192.168.24.54]) with mapi id 14.03.0319.002; Mon, 18 Feb 2019 13:19:05
 +0100
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: Florian Schmidt <Florian.Schmidt@neclab.eu>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LWIP PATCH] uknetdev_output: Fix loop iterator
Thread-Index: AQHUx2yaL3aYUW9WbUCySpGxBnnfk6XleW0A
Date: Mon, 18 Feb 2019 12:19:04 +0000
Message-ID: <D526B7F0-0E39-4C65-9B80-3AA7F918A624@neclab.eu>
References: <20190218093026.20058-1-florian.schmidt@neclab.eu>
In-Reply-To: <20190218093026.20058-1-florian.schmidt@neclab.eu>
Accept-Language: en-GB, gl-ES, de-DE, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [10.1.2.186]
Content-ID: <43BAE36EB102644AA22477454FF0986E@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/LWIP PATCH] uknetdev_output: Fix loop
 iterator
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Sharan Santhanam <Sharan.Santhanam@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhhbmtzIGEgbG90IGZvciB0aGlzIGZpeCENCg0KU2ltb24NCg0KUmV2aWV3ZWQtYnk6IFNpbW9u
IEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1Pg0KDQrvu79PbiAxOC4wMi4xOSwgMTA6
MzAsICJGbG9yaWFuIFNjaG1pZHQiIDxGbG9yaWFuLlNjaG1pZHRAbmVjbGFiLmV1PiB3cm90ZToN
Cg0KICAgIFNldHRpbmcgcSB0byBwLT5uZXh0IGxlYWRzIHRvIGFuIGluZmluaXRlIGxvb3AgaWYg
cCBoYXMgYXQgbGVhc3QgdHdvDQogICAgc2VnbWVudHMuIFRoZSBjb3JyZWN0IHdheSBpcyB0byBp
dGVyYXRlIG92ZXIgcSBzbyB3ZSBhY3R1YWxseSBwcm9ncmVzcw0KICAgIHRocm91Z2ggdGhlIGxp
c3QuDQogICAgDQogICAgU2lnbmVkLW9mZi1ieTogRmxvcmlhbiBTY2htaWR0IDxmbG9yaWFuLnNj
aG1pZHRAbmVjbGFiLmV1Pg0KICAgIC0tLQ0KICAgICB1a25ldGRldi5jIHwgMiArLQ0KICAgICAx
IGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkNCiAgICANCiAgICBk
aWZmIC0tZ2l0IGEvdWtuZXRkZXYuYyBiL3VrbmV0ZGV2LmMNCiAgICBpbmRleCAzNDM5NGZjLi40
N2QyZmIxIDEwMDY0NA0KICAgIC0tLSBhL3VrbmV0ZGV2LmMNCiAgICArKysgYi91a25ldGRldi5j
DQogICAgQEAgLTE0Miw3ICsxNDIsNyBAQCBzdGF0aWMgZXJyX3QgdWtuZXRkZXZfb3V0cHV0KHN0
cnVjdCBuZXRpZiAqbmYsIHN0cnVjdCBwYnVmICpwKQ0KICAgICAJICogICAgICAgeWV0LiBBcyBs
b25nIGFzIHdlIGRvIG5vdCBoYXZlIHRoaXMsIHdlIGhhdmUgdG8gY29weS4NCiAgICAgCSAqLw0K
ICAgICAJd3BvcyA9IG5iLT5kYXRhOw0KICAgIC0JZm9yIChxID0gcDsgcSAhPSBOVUxMOyBxID0g
cC0+bmV4dCkgew0KICAgICsJZm9yIChxID0gcDsgcSAhPSBOVUxMOyBxID0gcS0+bmV4dCkgew0K
ICAgICAJCW1lbWNweSh3cG9zLCBxLT5wYXlsb2FkLCBxLT5sZW4pOw0KICAgICAJCXdwb3MgKz0g
cS0+bGVuOw0KICAgICAJfQ0KICAgIC0tIA0KICAgIDIuMjAuMQ0KICAgIA0KICAgIA0KDQpfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwg
bWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xp
c3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Feb 18 12:25:08 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 18 Feb 2019 12:25:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gvhyt-00082z-9H; Mon, 18 Feb 2019 12:25:07 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=G8G1=QZ=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1gvhys-00082u-9m
 for minios-devel@lists.xen.org; Mon, 18 Feb 2019 12:25:06 +0000
X-Inumbo-ID: 35b27002-3378-11e9-a392-43728447b274
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 35b27002-3378-11e9-a392-43728447b274;
 Mon, 18 Feb 2019 12:25:00 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 3496F104E83;
 Mon, 18 Feb 2019 13:24:33 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id gvW9EGKTjv7X; Mon, 18 Feb 2019 13:24:33 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 0EFF8104DD2
 for <minios-devel@lists.xen.org>; Mon, 18 Feb 2019 13:24:31 +0100 (CET)
Received: from HYDRA.office.hd ([169.254.4.179]) by ENCELADUS.office.hd
 ([192.168.24.52]) with mapi id 14.03.0319.002; Mon, 18 Feb 2019 13:24:30
 +0100
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [Minios-devel] [UNIKRAFT PATCH v3 15/23] lib/vfscore: add
 necessary field in vfscore_file
Thread-Index: AQHUvu2QSBnHd14V80qRbL9TEhugS6Xli+6A
Date: Mon, 18 Feb 2019 12:24:29 +0000
Message-ID: <2A97992D-E3C3-42E2-AA25-FD19A91FF547@neclab.eu>
References: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
 <20190207135901.9122-16-yuri.volchkov@neclab.eu>
In-Reply-To: <20190207135901.9122-16-yuri.volchkov@neclab.eu>
Accept-Language: en-GB, gl-ES, de-DE, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [10.1.2.186]
Content-ID: <575906FA84C3EF468ABF5E889847D8B5@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v3 15/23] lib/vfscore: add
 necessary field in vfscore_file
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Sharan Santhanam <Sharan.Santhanam@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

UmV2aWV3ZWQtYnk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1Pg0KDQrv
u79PbiAwNy4wMi4xOSwgMTU6MDEsICJNaW5pb3MtZGV2ZWwgb24gYmVoYWxmIG9mIFl1cmkgVm9s
Y2hrb3YiIDxtaW5pb3MtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZyBvbiBiZWhh
bGYgb2YgeXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+IHdyb3RlOg0KDQogICAgU2lnbmVkLW9mZi1i
eTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+DQogICAgLS0tDQogICAg
IGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9maWxlLmggfCA0ICsrKysNCiAgICAgMSBmaWxl
IGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQ0KICAgIA0KICAgIGRpZmYgLS1naXQgYS9saWIvdmZz
Y29yZS9pbmNsdWRlL3Zmc2NvcmUvZmlsZS5oIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3Jl
L2ZpbGUuaA0KICAgIGluZGV4IDg0ZWIzNWQ3Li5iNzMyMGNjMSAxMDA2NDQNCiAgICAtLS0gYS9s
aWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZmlsZS5oDQogICAgKysrIGIvbGliL3Zmc2NvcmUv
aW5jbHVkZS92ZnNjb3JlL2ZpbGUuaA0KICAgIEBAIC01Myw3ICs1MywxMSBAQCBzdHJ1Y3QgdmZz
Y29yZV9mb3BzIHsNCiAgICAgDQogICAgIHN0cnVjdCB2ZnNjb3JlX2ZpbGUgew0KICAgICAJaW50
IGZkOw0KICAgICsJaW50CQlmX2ZsYWdzOwkvKiBvcGVuIGZsYWdzICovDQogICAgIAlpbnQJCWZf
Y291bnQ7CS8qIHJlZmVyZW5jZSBjb3VudCAqLw0KICAgICsJb2ZmX3QJCWZfb2Zmc2V0OwkvKiBj
dXJyZW50IHBvc2l0aW9uIGluIGZpbGUgKi8NCiAgICArCXZvaWQJCSpmX2RhdGE7ICAgICAgICAv
KiBmaWxlIGRlc2NyaXB0b3Igc3BlY2lmaWMgZGF0YSAqLw0KICAgICsJc3RydWN0IGRlbnRyeSAg
ICpmX2RlbnRyeTsNCiAgICAgCWNvbnN0IHN0cnVjdCB2ZnNjb3JlX2ZvcHMgKmZvcHM7DQogICAg
IH07DQogICAgIA0KICAgIC0tIA0KICAgIDIuMTkuMg0KICAgIA0KICAgIA0KICAgIF9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQogICAgTWluaW9zLWRldmVs
IG1haWxpbmcgbGlzdA0KICAgIE1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KICAg
IGh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2
ZWwNCg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWlu
aW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcK
aHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZl
bA==

From minios-devel-bounces@lists.xenproject.org Mon Feb 18 12:25:16 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 18 Feb 2019 12:25:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gvhz2-00083b-Ax; Mon, 18 Feb 2019 12:25:16 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=G8G1=QZ=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1gvhz0-00083U-Hd
 for minios-devel@lists.xen.org; Mon, 18 Feb 2019 12:25:14 +0000
X-Inumbo-ID: 3b8a5ee0-3378-11e9-a215-cbfe4427e8d8
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 3b8a5ee0-3378-11e9-a215-cbfe4427e8d8;
 Mon, 18 Feb 2019 12:25:10 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id E02E6104DF4;
 Mon, 18 Feb 2019 13:24:59 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id WBX_2rZ42KAx; Mon, 18 Feb 2019 13:24:59 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id B8435104DD2
 for <minios-devel@lists.xen.org>; Mon, 18 Feb 2019 13:24:57 +0100 (CET)
Received: from HYDRA.office.hd ([169.254.4.179]) by METHONE.office.hd
 ([192.168.24.54]) with mapi id 14.03.0319.002; Mon, 18 Feb 2019 13:24:57
 +0100
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [Minios-devel] [UNIKRAFT PATCH v3 16/23] lib/vfscore: remove
 _KERNEL ifdefs
Thread-Index: AQHUvu2Te8X/juHQ7kSxChu23o2qdqXljA+A
Date: Mon, 18 Feb 2019 12:24:57 +0000
Message-ID: <79D99BCD-143E-4820-8116-C777078185B1@neclab.eu>
References: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
 <20190207135901.9122-17-yuri.volchkov@neclab.eu>
In-Reply-To: <20190207135901.9122-17-yuri.volchkov@neclab.eu>
Accept-Language: en-GB, gl-ES, de-DE, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [10.1.2.186]
Content-ID: <0121244BA018FB4184125516B062EB94@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v3 16/23] lib/vfscore: remove
 _KERNEL ifdefs
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Sharan Santhanam <Sharan.Santhanam@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

UmV2aWV3ZWQtYnk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1Pg0KDQrv
u79PbiAwNy4wMi4xOSwgMTU6MDEsICJNaW5pb3MtZGV2ZWwgb24gYmVoYWxmIG9mIFl1cmkgVm9s
Y2hrb3YiIDxtaW5pb3MtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZyBvbiBiZWhh
bGYgb2YgeXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+IHdyb3RlOg0KDQogICAgQWxsIHRoaXMgY29k
ZSBpcyBydW5uaW5nIGluIGtlcm5lbA0KICAgIA0KICAgIFNpZ25lZC1vZmYtYnk6IFl1cmkgVm9s
Y2hrb3YgPHl1cmkudm9sY2hrb3ZAbmVjbGFiLmV1Pg0KICAgIC0tLQ0KICAgICBsaWIvdmZzY29y
ZS9pbmNsdWRlL3Zmc2NvcmUvbW91bnQuaCB8IDUgLS0tLS0NCiAgICAgbGliL3Zmc2NvcmUvaW5j
bHVkZS92ZnNjb3JlL3Zub2RlLmggfCAzIC0tLQ0KICAgICAyIGZpbGVzIGNoYW5nZWQsIDggZGVs
ZXRpb25zKC0pDQogICAgDQogICAgZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZz
Y29yZS9tb3VudC5oIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmgNCiAgICBp
bmRleCBhMTIyN2NiZS4uZmFjN2Q5NTQgMTAwNjQ0DQogICAgLS0tIGEvbGliL3Zmc2NvcmUvaW5j
bHVkZS92ZnNjb3JlL21vdW50LmgNCiAgICArKysgYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2Nv
cmUvbW91bnQuaA0KICAgIEBAIC0zNyw4ICszNyw2IEBADQogICAgICNpbmNsdWRlIDx1ay9saXN0
Lmg+DQogICAgICNpbmNsdWRlIDx2ZnNjb3JlL3Zub2RlLmg+DQogICAgIA0KICAgIC0jaWZkZWYg
X0tFUk5FTA0KICAgIC0NCiAgICAgLyoNCiAgICAgICogTW91bnQgZGF0YQ0KICAgICAgKi8NCiAg
ICBAQCAtNTYsNyArNTQsNiBAQCBzdHJ1Y3QgbW91bnQgew0KICAgICAJZnNpZF90IAkJbV9mc2lk
OyAJLyogaWQgdGhhdCB1bmlxdWVseSBpZGVudGlmaWVzIHRoZSBmcyAqLw0KICAgICB9Ow0KICAg
ICANCiAgICAtI2VuZGlmDQogICAgIA0KICAgICAvKg0KICAgICAgKiBNb3VudCBmbGFncy4NCiAg
ICBAQCAtOTUsOCArOTIsNiBAQCBzdHJ1Y3QgbW91bnQgew0KICAgICAgKi8NCiAgICAgI2RlZmlu
ZQlNTlRfVklTRkxBR01BU0sJMHgwMDAwZmZmZg0KICAgICANCiAgICAtI2lmZGVmIF9LRVJORUwN
CiAgICAtDQogICAgIC8qDQogICAgICAqIEZpbGVzeXN0ZW0gdHlwZSBzd2l0Y2ggdGFibGUuDQog
ICAgICAqLw0KICAgIGRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5v
ZGUuaCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5oDQogICAgaW5kZXggMDhi
OGU1NjIuLmZlMTRiYzgyIDEwMDY0NA0KICAgIC0tLSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZz
Y29yZS92bm9kZS5oDQogICAgKysrIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Zub2Rl
LmgNCiAgICBAQCAtMzMsOCArMzMsNiBAQA0KICAgICAjaWZuZGVmIF9TWVNfVk5PREVfSF8NCiAg
ICAgI2RlZmluZSBfU1lTX1ZOT0RFX0hfDQogICAgIA0KICAgIC0jaWZkZWYgX0tFUk5FTA0KICAg
IC0NCiAgICAgI2luY2x1ZGUgPHN5cy9zdGF0Lmg+DQogICAgICNpbmNsdWRlIDxkaXJlbnQuaD4N
CiAgICAgDQogICAgQEAgLTI2MSw2ICsyNTksNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgdm5vZGVf
cGFnZXJfc2V0c2l6ZShzdHJ1Y3Qgdm5vZGUgKnZwLCBvZmZfdCBzaXplKQ0KICAgICAJdnAtPnZf
c2l6ZSA9IHNpemU7DQogICAgIH0NCiAgICAgDQogICAgLSNlbmRpZg0KICAgICANCiAgICAgI2Vu
ZGlmIC8qICFfU1lTX1ZOT0RFX0hfICovDQogICAgLS0gDQogICAgMi4xOS4yDQogICAgDQogICAg
DQogICAgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCiAg
ICBNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0DQogICAgTWluaW9zLWRldmVsQGxpc3RzLnhlbnBy
b2plY3Qub3JnDQogICAgaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3Rp
bmZvL21pbmlvcy1kZXZlbA0KDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54
ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGlu
Zm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Feb 18 12:25:36 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 18 Feb 2019 12:25:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gvhzM-00085l-D1; Mon, 18 Feb 2019 12:25:36 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=G8G1=QZ=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1gvhzL-00085g-HO
 for minios-devel@lists.xen.org; Mon, 18 Feb 2019 12:25:35 +0000
X-Inumbo-ID: 4850b746-3378-11e9-a3de-6f3a23424d70
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 4850b746-3378-11e9-a3de-6f3a23424d70;
 Mon, 18 Feb 2019 12:25:32 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 1BE51F205C;
 Mon, 18 Feb 2019 13:25:31 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id BtSoy5GLp-EP; Mon, 18 Feb 2019 13:25:30 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id E4A24F204E
 for <minios-devel@lists.xen.org>; Mon, 18 Feb 2019 13:25:28 +0100 (CET)
Received: from HYDRA.office.hd ([169.254.4.179]) by ENCELADUS.office.hd
 ([192.168.24.52]) with mapi id 14.03.0319.002; Mon, 18 Feb 2019 13:25:28
 +0100
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [Minios-devel] [UNIKRAFT PATCH v3 17/23] lib/vfscore:
 introduce fdclose
Thread-Index: AQHUvu2SrhCXf8pYUUasr3c7Ju2k6KXljDOA
Date: Mon, 18 Feb 2019 12:25:27 +0000
Message-ID: <D74C06AA-9639-4A91-9824-C043B852AF08@neclab.eu>
References: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
 <20190207135901.9122-18-yuri.volchkov@neclab.eu>
In-Reply-To: <20190207135901.9122-18-yuri.volchkov@neclab.eu>
Accept-Language: en-GB, gl-ES, de-DE, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [10.1.2.186]
Content-ID: <F9F771EE7B975C49B9428FE774D497B4@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v3 17/23] lib/vfscore: introduce
 fdclose
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Sharan Santhanam <Sharan.Santhanam@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

UmV2aWV3ZWQtYnk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1Pg0KDQrv
u79PbiAwNy4wMi4xOSwgMTU6MDEsICJNaW5pb3MtZGV2ZWwgb24gYmVoYWxmIG9mIFl1cmkgVm9s
Y2hrb3YiIDxtaW5pb3MtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZyBvbiBiZWhh
bGYgb2YgeXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+IHdyb3RlOg0KDQogICAgU2lnbmVkLW9mZi1i
eTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+DQogICAgLS0tDQogICAg
IGxpYi92ZnNjb3JlL21haW4uYyB8IDE5ICsrKysrKysrKysrKysrKysrKysNCiAgICAgMSBmaWxl
IGNoYW5nZWQsIDE5IGluc2VydGlvbnMoKykNCiAgICANCiAgICBkaWZmIC0tZ2l0IGEvbGliL3Zm
c2NvcmUvbWFpbi5jIGIvbGliL3Zmc2NvcmUvbWFpbi5jDQogICAgaW5kZXggMTE2NGIzMGIuLjBm
ZjhkMzkwIDEwMDY0NA0KICAgIC0tLSBhL2xpYi92ZnNjb3JlL21haW4uYw0KICAgICsrKyBiL2xp
Yi92ZnNjb3JlL21haW4uYw0KICAgIEBAIC0yMDUsNiArMjA1LDI1IEBAIFRSQUNFUE9JTlQodHJh
Y2VfdmZzX2Nsb3NlLCAiJWQiLCBpbnQpOw0KICAgICBUUkFDRVBPSU5UKHRyYWNlX3Zmc19jbG9z
ZV9yZXQsICIiKTsNCiAgICAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfY2xvc2VfZXJyLCAiJWQiLCBp
bnQpOw0KICAgICANCiAgICAraW50IGZkY2xvc2UoaW50IGZkKQ0KICAgICt7DQogICAgKwlzdHJ1
Y3QgdmZzY29yZV9maWxlICpmcDsNCiAgICArDQogICAgKwlmcCA9IHZmc2NvcmVfZ2V0X2ZpbGUo
ZmQpOw0KICAgICsJaWYgKCFmcCkNCiAgICArCQlyZXR1cm4gRUJBREY7DQogICAgKw0KICAgICsJ
dmZzY29yZV9wdXRfZmQoZmQpOw0KICAgICsJLyogdmZzY29yZV9nZXRfZmlsZSBpbmNyZWFzZXMg
dGhlIGZfY291bnQuIFRoZSBmaXJzdCBmZHJvcCBpcw0KICAgICsJICogdG8gZGVjcmVtZW50IGl0
IGJhY2suIFRoZSBzZWNvbmQgaXMgYW4gYWN0dWFsIHJlZHVjaW5nIHdlDQogICAgKwkgKiBhcmUg
c3VwcG9zZWQgdG8gZG8gd2hpbGUgcGVyZm9ybWluZyBmZGNsb3NlKCkNCiAgICArCSAqLw0KICAg
ICsJZmRyb3AoZnApOw0KICAgICsJZmRyb3AoZnApOw0KICAgICsNCiAgICArCXJldHVybiAwOw0K
ICAgICt9DQogICAgKw0KICAgICBpbnQgY2xvc2UoaW50IGZkKQ0KICAgICB7DQogICAgIAlpbnQg
ZXJyb3I7DQogICAgLS0gDQogICAgMi4xOS4yDQogICAgDQogICAgDQogICAgX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCiAgICBNaW5pb3MtZGV2ZWwgbWFp
bGluZyBsaXN0DQogICAgTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnDQogICAgaHR0
cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA0K
DQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3Mt
ZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRw
czovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Feb 18 12:26:15 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 18 Feb 2019 12:26:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gvhzz-000878-Fu; Mon, 18 Feb 2019 12:26:15 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=G8G1=QZ=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1gvhzx-000873-Qk
 for minios-devel@lists.xen.org; Mon, 18 Feb 2019 12:26:13 +0000
X-Inumbo-ID: 5f630085-3378-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 5f630085-3378-11e9-bc90-bc764e045a96;
 Mon, 18 Feb 2019 12:26:10 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id DA578104E86;
 Mon, 18 Feb 2019 13:26:09 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id XlSOzW4LRGmU; Mon, 18 Feb 2019 13:26:09 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id B5B18104DF4
 for <minios-devel@lists.xen.org>; Mon, 18 Feb 2019 13:26:07 +0100 (CET)
Received: from HYDRA.office.hd ([169.254.4.179]) by METHONE.office.hd
 ([192.168.24.54]) with mapi id 14.03.0319.002; Mon, 18 Feb 2019 13:26:07
 +0100
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [Minios-devel] [UNIKRAFT PATCH v3 18/23] lib/vfscore: add
 necessary internal prototypes
Thread-Index: AQHUvu2WhDWP8Yhc+EqnbwKcyuy8NaXljGOA
Date: Mon, 18 Feb 2019 12:26:07 +0000
Message-ID: <371AF47B-DD71-4354-AB08-5197BA0FAC24@neclab.eu>
References: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
 <20190207135901.9122-19-yuri.volchkov@neclab.eu>
In-Reply-To: <20190207135901.9122-19-yuri.volchkov@neclab.eu>
Accept-Language: en-GB, gl-ES, de-DE, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [10.1.2.186]
Content-ID: <0B59D97A2088DF44904C277844256339@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v3 18/23] lib/vfscore: add
 necessary internal prototypes
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Sharan Santhanam <Sharan.Santhanam@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

UmV2aWV3ZWQtYnk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1Pg0KDQrv
u79PbiAwNy4wMi4xOSwgMTU6MDEsICJNaW5pb3MtZGV2ZWwgb24gYmVoYWxmIG9mIFl1cmkgVm9s
Y2hrb3YiIDxtaW5pb3MtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZyBvbiBiZWhh
bGYgb2YgeXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+IHdyb3RlOg0KDQogICAgU2lnbmVkLW9mZi1i
eTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+DQogICAgLS0tDQogICAg
IGxpYi92ZnNjb3JlL3Zmcy5oIHwgOSArKysrKysrKysNCiAgICAgMSBmaWxlIGNoYW5nZWQsIDkg
aW5zZXJ0aW9ucygrKQ0KICAgIA0KICAgIGRpZmYgLS1naXQgYS9saWIvdmZzY29yZS92ZnMuaCBi
L2xpYi92ZnNjb3JlL3Zmcy5oDQogICAgaW5kZXggOTRmZTg5YTUuLjRhMWNmYTlmIDEwMDY0NA0K
ICAgIC0tLSBhL2xpYi92ZnNjb3JlL3Zmcy5oDQogICAgKysrIGIvbGliL3Zmc2NvcmUvdmZzLmgN
CiAgICBAQCAtMTQ2LDYgKzE0NiwxNSBAQCB2b2lkIGRyZWYoc3RydWN0IGRlbnRyeSAqZHApOw0K
ICAgICB2b2lkIGRyZWxlKHN0cnVjdCBkZW50cnkgKmRwKTsNCiAgICAgdm9pZCBkZW50cnlfaW5p
dCh2b2lkKTsNCiAgICAgDQogICAgK2ludCB2ZnNfY2xvc2Uoc3RydWN0IHZmc2NvcmVfZmlsZSAq
ZnApOw0KICAgICtpbnQgdmZzX3JlYWQoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAsIHN0cnVjdCB1
aW8gKnVpbywgaW50IGZsYWdzKTsNCiAgICAraW50IHZmc193cml0ZShzdHJ1Y3QgdmZzY29yZV9m
aWxlICpmcCwgc3RydWN0IHVpbyAqdWlvLCBpbnQgZmxhZ3MpOw0KICAgICtpbnQgdmZzX2lvY3Rs
KHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwLCB1bnNpZ25lZCBsb25nIGNvbSwgdm9pZCAqZGF0YSk7
DQogICAgK2ludCB2ZnNfc3RhdChzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCwgc3RydWN0IHN0YXQg
KnN0KTsNCiAgICArDQogICAgK2ludCBmZ2V0KGludCBmZCwgc3RydWN0IHZmc2NvcmVfZmlsZSAq
Km91dF9mcCk7DQogICAgK2ludCBmZGFsbG9jKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwLCBpbnQg
Km5ld2ZkKTsNCiAgICArDQogICAgICNpZmRlZiBERUJVR19WRlMNCiAgICAgdm9pZAkgdm5vZGVf
ZHVtcCh2b2lkKTsNCiAgICAgdm9pZAkgdmZzY29yZV9tb3VudF9kdW1wKHZvaWQpOw0KICAgIC0t
IA0KICAgIDIuMTkuMg0KICAgIA0KICAgIA0KICAgIF9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fDQogICAgTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdA0KICAg
IE1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KICAgIGh0dHBzOi8vbGlzdHMueGVu
cHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWwNCg0KX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcg
bGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5w
cm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Feb 18 12:26:17 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 18 Feb 2019 12:26:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gvi01-00087Z-Hc; Mon, 18 Feb 2019 12:26:17 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=G8G1=QZ=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1gvhzz-00087L-T6
 for minios-devel@lists.xen.org; Mon, 18 Feb 2019 12:26:15 +0000
X-Inumbo-ID: 60baf382-3378-11e9-84b9-d7eeeabb3c73
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 60baf382-3378-11e9-84b9-d7eeeabb3c73;
 Mon, 18 Feb 2019 12:26:12 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 2A2AF104E96;
 Mon, 18 Feb 2019 13:26:12 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id x2SnD7ZxFuSy; Mon, 18 Feb 2019 13:26:11 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id E9F90104E93
 for <minios-devel@lists.xen.org>; Mon, 18 Feb 2019 13:26:09 +0100 (CET)
Received: from HYDRA.office.hd ([169.254.4.179]) by ENCELADUS.office.hd
 ([192.168.24.52]) with mapi id 14.03.0319.002; Mon, 18 Feb 2019 13:26:09
 +0100
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [Minios-devel] [UNIKRAFT PATCH v3 19/23] lib/vfscore: fix
 compiler complains
Thread-Index: AQHUvu2W3spCPD3SO0+AcrB944IuWqXljGWA
Date: Mon, 18 Feb 2019 12:26:09 +0000
Message-ID: <CA74402F-0B80-46F4-932D-FE3F57EB1A69@neclab.eu>
References: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
 <20190207135901.9122-20-yuri.volchkov@neclab.eu>
In-Reply-To: <20190207135901.9122-20-yuri.volchkov@neclab.eu>
Accept-Language: en-GB, gl-ES, de-DE, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [10.1.2.186]
Content-ID: <C1B4EDE3501DD943A434993839AF0742@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v3 19/23] lib/vfscore: fix
 compiler complains
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Sharan Santhanam <Sharan.Santhanam@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

UmV2aWV3ZWQtYnk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1Pg0KDQrv
u79PbiAwNy4wMi4xOSwgMTU6MDEsICJNaW5pb3MtZGV2ZWwgb24gYmVoYWxmIG9mIFl1cmkgVm9s
Y2hrb3YiIDxtaW5pb3MtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZyBvbiBiZWhh
bGYgb2YgeXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+IHdyb3RlOg0KDQogICAgU2lnbmVkLW9mZi1i
eTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+DQogICAgLS0tDQogICAg
IGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5oIHwgIDIgKy0NCiAgICAgbGliL3Zm
c2NvcmUvbWFpbi5jICAgICAgICAgICAgICAgICAgfCAyNCArKysrKysrKysrKystLS0tLS0tLS0t
LS0NCiAgICAgbGliL3Zmc2NvcmUvc3lzY2FsbHMuYyAgICAgICAgICAgICAgfCAgOCArKysrLS0t
LQ0KICAgICBsaWIvdmZzY29yZS90YXNrLmMgICAgICAgICAgICAgICAgICB8ICAyICstDQogICAg
IGxpYi92ZnNjb3JlL3Zub2RlLmMgICAgICAgICAgICAgICAgIHwgIDggKysrKy0tLS0NCiAgICAg
NSBmaWxlcyBjaGFuZ2VkLCAyMiBpbnNlcnRpb25zKCspLCAyMiBkZWxldGlvbnMoLSkNCiAgICAN
CiAgICBkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Zub2RlLmggYi9s
aWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUuaA0KICAgIGluZGV4IGZlMTRiYzgyLi4x
MzQ4ZjU3OSAxMDA2NDQNCiAgICAtLS0gYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5v
ZGUuaA0KICAgICsrKyBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5oDQogICAg
QEAgLTE2Nyw3ICsxNjcsNyBAQCB0eXBlZGVmCWludCAoKnZub3BfdHJ1bmNhdGVfdCkJKHN0cnVj
dCB2bm9kZSAqLCBvZmZfdCk7DQogICAgIHR5cGVkZWYJaW50ICgqdm5vcF9saW5rX3QpICAgICAg
KHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3Qgdm5vZGUgKiwgY2hhciAqKTsNCiAgICAgdHlwZWRlZiBp
bnQgKCp2bm9wX2NhY2hlX3QpIChzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHZmc2NvcmVfZmlsZSAq
LCBzdHJ1Y3QgdWlvICopOw0KICAgICB0eXBlZGVmIGludCAoKnZub3BfZmFsbG9jYXRlX3QpIChz
dHJ1Y3Qgdm5vZGUgKiwgaW50LCBvZmZfdCwgb2ZmX3QpOw0KICAgIC10eXBlZGVmIGludCAoKnZu
b3BfcmVhZGxpbmtfdCkgIChzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHVpbyAqKTsNCiAgICArdHlw
ZWRlZiBzc2l6ZV90ICgqdm5vcF9yZWFkbGlua190KSAgKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3Qg
dWlvICopOw0KICAgICB0eXBlZGVmIGludCAoKnZub3Bfc3ltbGlua190KSAgIChzdHJ1Y3Qgdm5v
ZGUgKiwgY2hhciAqLCBjaGFyICopOw0KICAgICANCiAgICAgLyoNCiAgICBkaWZmIC0tZ2l0IGEv
bGliL3Zmc2NvcmUvbWFpbi5jIGIvbGliL3Zmc2NvcmUvbWFpbi5jDQogICAgaW5kZXggMGZmOGQz
OTAuLmQ3YWJhNzU2IDEwMDY0NA0KICAgIC0tLSBhL2xpYi92ZnNjb3JlL21haW4uYw0KICAgICsr
KyBiL2xpYi92ZnNjb3JlL21haW4uYw0KICAgIEBAIC0yNDYsOCArMjQ2LDcgQEAgVFJBQ0VQT0lO
VCh0cmFjZV92ZnNfbWtub2QsICJcIiVzXCIgMCUwbyAweCV4IiwgY29uc3QgY2hhciosIG1vZGVf
dCwgZGV2X3QpOw0KICAgICBUUkFDRVBPSU5UKHRyYWNlX3Zmc19ta25vZF9yZXQsICIiKTsNCiAg
ICAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbWtub2RfZXJyLCAiJWQiLCBpbnQpOw0KICAgICANCiAg
ICAtDQogICAgLWludCBfX3hta25vZChpbnQgdmVyLCBjb25zdCBjaGFyICpwYXRobmFtZSwgbW9k
ZV90IG1vZGUsIGRldl90ICpkZXYpDQogICAgK2ludCBfX3hta25vZChpbnQgdmVyLCBjb25zdCBj
aGFyICpwYXRobmFtZSwgbW9kZV90IG1vZGUsIGRldl90ICpkZXYgX191bnVzZWQpDQogICAgIHsN
CiAgICAgCVVLX0FTU0VSVCh2ZXIgPT0gMCk7IC8vIE9uIHg4Ni02NCBMaW51eCwgX01LTk9EX1ZF
Ul9MSU5VWCBpcyAwLg0KICAgICAJc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7DQogICAgQEAg
LTU0MSw3ICs1NDAsNyBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19mc3RhdCwgIiVkICVwIiwgaW50
LCBzdHJ1Y3Qgc3RhdCopOw0KICAgICBUUkFDRVBPSU5UKHRyYWNlX3Zmc19mc3RhdF9yZXQsICIi
KTsNCiAgICAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZnN0YXRfZXJyLCAiJWQiLCBpbnQpOw0KICAg
ICANCiAgICAtaW50IF9fZnhzdGF0KGludCB2ZXIsIGludCBmZCwgc3RydWN0IHN0YXQgKnN0KQ0K
ICAgICtpbnQgX19meHN0YXQoaW50IHZlciBfX3VudXNlZCwgaW50IGZkLCBzdHJ1Y3Qgc3RhdCAq
c3QpDQogICAgIHsNCiAgICAgCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwOw0KICAgICAJaW50IGVy
cm9yOw0KICAgIEBAIC01NjgsMTQgKzU2NywxNCBAQCBpbnQgX19meHN0YXQoaW50IHZlciwgaW50
IGZkLCBzdHJ1Y3Qgc3RhdCAqc3QpDQogICAgIA0KICAgICBMRlM2NChfX2Z4c3RhdCk7DQogICAg
IA0KICAgIC1pbnQgZnN0YXQoaW50IGZkLCBzdHJ1Y3Qgc3RhdCAqc3QpDQogICAgK2ludCBmc3Rh
dChpbnQgZmQgX191bnVzZWQsIHN0cnVjdCBzdGF0ICpzdCkNCiAgICAgew0KICAgICAJcmV0dXJu
IF9fZnhzdGF0KDEsIGZkLCBzdCk7DQogICAgIH0NCiAgICAgDQogICAgIExGUzY0KGZzdGF0KTsN
CiAgICAgDQogICAgLWludCBfX2Z4c3RhdGF0KGludCB2ZXIsIGludCBkaXJmZCwgY29uc3QgY2hh
ciAqcGF0aG5hbWUsIHN0cnVjdCBzdGF0ICpzdCwNCiAgICAraW50IF9fZnhzdGF0YXQoaW50IHZl
ciBfX3VudXNlZCwgaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwgc3RydWN0IHN0YXQg
KnN0LA0KICAgICAJCWludCBmbGFncykNCiAgICAgew0KICAgICAJaWYgKGZsYWdzICYgQVRfU1lN
TElOS19OT0ZPTExPVykgew0KICAgIEBAIC0xMTEzLDcgKzExMTIsNyBAQCBUUkFDRVBPSU5UKHRy
YWNlX3Zmc19zdGF0LCAiXCIlc1wiICVwIiwgY29uc3QgY2hhciosIHN0cnVjdCBzdGF0Kik7DQog
ICAgIFRSQUNFUE9JTlQodHJhY2VfdmZzX3N0YXRfcmV0LCAiIik7DQogICAgIFRSQUNFUE9JTlQo
dHJhY2VfdmZzX3N0YXRfZXJyLCAiJWQiLCBpbnQpOw0KICAgICANCiAgICAtaW50IF9feHN0YXQo
aW50IHZlciwgY29uc3QgY2hhciAqcGF0aG5hbWUsIHN0cnVjdCBzdGF0ICpzdCkNCiAgICAraW50
IF9feHN0YXQoaW50IHZlciBfX3VudXNlZCwgY29uc3QgY2hhciAqcGF0aG5hbWUsIHN0cnVjdCBz
dGF0ICpzdCkNCiAgICAgew0KICAgICAJc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7DQogICAg
IAljaGFyIHBhdGhbUEFUSF9NQVhdOw0KICAgIEBAIC0xMTQ5LDcgKzExNDgsOCBAQCBMRlM2NChz
dGF0KTsNCiAgICAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbHN0YXQsICJwYXRobmFtZT0lcywgc3Rh
dD0lcCIsIGNvbnN0IGNoYXIqLCBzdHJ1Y3Qgc3RhdCopOw0KICAgICBUUkFDRVBPSU5UKHRyYWNl
X3Zmc19sc3RhdF9yZXQsICIiKTsNCiAgICAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbHN0YXRfZXJy
LCAiZXJybm89JWQiLCBpbnQpOw0KICAgIC1pbnQgX19seHN0YXQoaW50IHZlciwgY29uc3QgY2hh
ciAqcGF0aG5hbWUsIHN0cnVjdCBzdGF0ICpzdCkNCiAgICArDQogICAgK2ludCBfX2x4c3RhdChp
bnQgdmVyIF9fdW51c2VkLCBjb25zdCBjaGFyICpwYXRobmFtZSwgc3RydWN0IHN0YXQgKnN0KQ0K
ICAgICB7DQogICAgIAlzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsNCiAgICAgCWNoYXIgcGF0
aFtQQVRIX01BWF07DQogICAgQEAgLTE5MjIsNyArMTkyMiw3IEBAIGludCBmY2htb2QoaW50IGZk
LCBtb2RlX3QgbW9kZSkNCiAgICAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZmNob3duLCAiXCIlZFwi
ICVkICVkIiwgaW50LCB1aWRfdCwgZ2lkX3QpOw0KICAgICBUUkFDRVBPSU5UKHRyYWNlX3Zmc19m
Y2hvd25fcmV0LCAiIik7DQogICAgIA0KICAgIC1pbnQgZmNob3duKGludCBmZCwgdWlkX3Qgb3du
ZXIsIGdpZF90IGdyb3VwKQ0KICAgICtpbnQgZmNob3duKGludCBmZCBfX3VudXNlZCwgdWlkX3Qg
b3duZXIgX191bnVzZWQsIGdpZF90IGdyb3VwIF9fdW51c2VkKQ0KICAgICB7DQogICAgIAl0cmFj
ZV92ZnNfZmNob3duKGZkLCBvd25lciwgZ3JvdXApOw0KICAgICAJV0FSTl9TVFVCQkVEKCk7DQog
ICAgQEAgLTE5MzAsMTMgKzE5MzAsMTMgQEAgaW50IGZjaG93bihpbnQgZmQsIHVpZF90IG93bmVy
LCBnaWRfdCBncm91cCkNCiAgICAgCXJldHVybiAwOw0KICAgICB9DQogICAgIA0KICAgIC1pbnQg
Y2hvd24oY29uc3QgY2hhciAqcGF0aCwgdWlkX3Qgb3duZXIsIGdpZF90IGdyb3VwKQ0KICAgICtp
bnQgY2hvd24oY29uc3QgY2hhciAqcGF0aCBfX3VudXNlZCwgdWlkX3Qgb3duZXIgX191bnVzZWQs
IGdpZF90IGdyb3VwIF9fdW51c2VkKQ0KICAgICB7DQogICAgIAlXQVJOX1NUVUJCRUQoKTsNCiAg
ICAgCXJldHVybiAwOw0KICAgICB9DQogICAgIA0KICAgIC1pbnQgbGNob3duKGNvbnN0IGNoYXIg
KnBhdGgsIHVpZF90IG93bmVyLCBnaWRfdCBncm91cCkNCiAgICAraW50IGxjaG93bihjb25zdCBj
aGFyICpwYXRoIF9fdW51c2VkLCB1aWRfdCBvd25lciBfX3VudXNlZCwgZ2lkX3QgZ3JvdXAgX191
bnVzZWQpDQogICAgIHsNCiAgICAgCVdBUk5fU1RVQkJFRCgpOw0KICAgICAJcmV0dXJuIDA7DQog
ICAgQEAgLTIwMjYsNyArMjAyNiw3IEBAIHNzaXplX3Qgc2VuZGZpbGUoaW50IG91dF9mZCwgaW50
IGluX2ZkLCBvZmZfdCAqX29mZnNldCwgc2l6ZV90IGNvdW50KQ0KICAgICBMRlM2NChzZW5kZmls
ZSk7DQogICAgICNlbmRpZg0KICAgICANCiAgICAtTk9fU1lTKGludCBmY2htb2RhdChpbnQgZGly
ZmQsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBtb2RlX3QgbW9kZSwgaW50IGZsYWdzKSk7DQogICAg
K05PX1NZUyhpbnQgZmNobW9kYXQoaW50IGRpcmZkIF9fdW51c2VkLCBjb25zdCBjaGFyICpwYXRo
bmFtZSBfX3VudXNlZCwgbW9kZV90IG1vZGUgX191bnVzZWQsIGludCBmbGFncyBfX3VudXNlZCkp
Ow0KICAgICANCiAgICAgbW9kZV90IHVtYXNrKG1vZGVfdCBuZXdtYXNrKQ0KICAgICB7DQogICAg
QEAgLTIwMzksNyArMjAzOSw3IEBAIGZzX25vb3Aodm9pZCkNCiAgICAgCXJldHVybiAwOw0KICAg
ICB9DQogICAgIA0KICAgIC1pbnQgY2hyb290KGNvbnN0IGNoYXIgKnBhdGgpDQogICAgK2ludCBj
aHJvb3QoY29uc3QgY2hhciAqcGF0aCBfX3VudXNlZCkNCiAgICAgew0KICAgICAJV0FSTl9TVFVC
QkVEKCk7DQogICAgIAllcnJubyA9IEVOT1NZUzsNCiAgICBkaWZmIC0tZ2l0IGEvbGliL3Zmc2Nv
cmUvc3lzY2FsbHMuYyBiL2xpYi92ZnNjb3JlL3N5c2NhbGxzLmMNCiAgICBpbmRleCAzMzAwNDk2
MC4uYmZlZDJjMjEgMTAwNjQ0DQogICAgLS0tIGEvbGliL3Zmc2NvcmUvc3lzY2FsbHMuYw0KICAg
ICsrKyBiL2xpYi92ZnNjb3JlL3N5c2NhbGxzLmMNCiAgICBAQCAtMzk0LDcgKzM5NCw3IEBAIHN5
c19mc3luYyhzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCkNCiAgICAgCXN0cnVjdCB2bm9kZSAqdnA7
DQogICAgIAlpbnQgZXJyb3I7DQogICAgIA0KICAgIC0JRFBSSU5URihWRlNEQl9TWVNDQUxMLCAo
InN5c19mc3luYzogZnA9JXhcbiIsIGZwKSk7DQogICAgKwlEUFJJTlRGKFZGU0RCX1NZU0NBTEws
ICgic3lzX2ZzeW5jOiBmcD0lcFxuIiwgZnApKTsNCiAgICAgDQogICAgIAlpZiAoIWZwLT5mX2Rl
bnRyeSkNCiAgICAgCQlyZXR1cm4gRUlOVkFMOw0KICAgIEBAIC00MTEsNyArNDExLDcgQEAgc3lz
X2ZzdGF0KHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwLCBzdHJ1Y3Qgc3RhdCAqc3QpDQogICAgIHsN
CiAgICAgCWludCBlcnJvciA9IDA7DQogICAgIA0KICAgIC0JRFBSSU5URihWRlNEQl9TWVNDQUxM
LCAoInN5c19mc3RhdDogZnA9JXhcbiIsIGZwKSk7DQogICAgKwlEUFJJTlRGKFZGU0RCX1NZU0NB
TEwsICgic3lzX2ZzdGF0OiBmcD0lcFxuIiwgZnApKTsNCiAgICAgDQogICAgIAllcnJvciA9IHZm
c19zdGF0KGZwLCBzdCk7DQogICAgIA0KICAgIEBAIC00NTgsNyArNDU4LDcgQEAgc3lzX3JlYWRk
aXIoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAsIHN0cnVjdCBkaXJlbnQgKmRpcikNCiAgICAgCXN0
cnVjdCB2bm9kZSAqZHZwOw0KICAgICAJaW50IGVycm9yOw0KICAgICANCiAgICAtCURQUklOVEYo
VkZTREJfU1lTQ0FMTCwgKCJzeXNfcmVhZGRpcjogZnA9JXhcbiIsIGZwKSk7DQogICAgKwlEUFJJ
TlRGKFZGU0RCX1NZU0NBTEwsICgic3lzX3JlYWRkaXI6IGZwPSVwXG4iLCBmcCkpOw0KICAgICAN
CiAgICAgCWlmICghZnAtPmZfZGVudHJ5KQ0KICAgICAJCXJldHVybiBFTk9URElSOw0KICAgIEBA
IC0xNDMzLDcgKzE0MzMsNyBAQCBzeXNfZmFsbG9jYXRlKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZw
LCBpbnQgbW9kZSwgb2ZmX3Qgb2Zmc2V0LCBvZmZfdCBsZW4pDQogICAgIAlpbnQgZXJyb3I7DQog
ICAgIAlzdHJ1Y3Qgdm5vZGUgKnZwOw0KICAgICANCiAgICAtCURQUklOVEYoVkZTREJfU1lTQ0FM
TCwgKCJzeXNfZmFsbG9jYXRlOiBmcD0leCIsIGZwKSk7DQogICAgKwlEUFJJTlRGKFZGU0RCX1NZ
U0NBTEwsICgic3lzX2ZhbGxvY2F0ZTogZnA9JXAiLCBmcCkpOw0KICAgICANCiAgICAgCWlmICgh
ZnAtPmZfZGVudHJ5IHx8ICEoZnAtPmZfZmxhZ3MgJiBGV1JJVEUpKSB7DQogICAgIAkJcmV0dXJu
IEVCQURGOw0KICAgIGRpZmYgLS1naXQgYS9saWIvdmZzY29yZS90YXNrLmMgYi9saWIvdmZzY29y
ZS90YXNrLmMNCiAgICBpbmRleCA3NjM1YmQ3YS4uZTY1OGJkYWEgMTAwNjQ0DQogICAgLS0tIGEv
bGliL3Zmc2NvcmUvdGFzay5jDQogICAgKysrIGIvbGliL3Zmc2NvcmUvdGFzay5jDQogICAgQEAg
LTEyOSw3ICsxMjksNyBAQCBwYXRoX2NvbnYoY2hhciAqd2QsIGNvbnN0IGNoYXIgKmNwYXRoLCBj
aGFyICpmdWxsKQ0KICAgICAgKiBAYWNjOiBhY2Nlc3MgbW9kZQ0KICAgICAgKi8NCiAgICAgaW50
DQogICAgLXRhc2tfY29udihzdHJ1Y3QgdGFzayAqdCwgY29uc3QgY2hhciAqY3BhdGgsIGludCBh
Y2MsIGNoYXIgKmZ1bGwpDQogICAgK3Rhc2tfY29udihzdHJ1Y3QgdGFzayAqdCwgY29uc3QgY2hh
ciAqY3BhdGgsIGludCBhY2MgX191bnVzZWQsIGNoYXIgKmZ1bGwpDQogICAgIHsNCiAgICAgCWlu
dCByYzsNCiAgICAgDQogICAgZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3Zub2RlLmMgYi9saWIv
dmZzY29yZS92bm9kZS5jDQogICAgaW5kZXggZTllMDQwYWEuLmQ3MDc0NmM5IDEwMDY0NA0KICAg
IC0tLSBhL2xpYi92ZnNjb3JlL3Zub2RlLmMNCiAgICArKysgYi9saWIvdmZzY29yZS92bm9kZS5j
DQogICAgQEAgLTE3OSw3ICsxNzksNyBAQCB2ZnNjb3JlX3ZnZXQoc3RydWN0IG1vdW50ICptcCwg
dWludDY0X3QgaW5vLCBzdHJ1Y3Qgdm5vZGUgKip2cHApDQogICAgIA0KICAgICAJKnZwcCA9IE5V
TEw7DQogICAgIA0KICAgIC0JRFBSSU5URihWRlNEQl9WTk9ERSwgKCJ2Z2V0ICVMTHVcbiIsIGlu
bykpOw0KICAgICsJRFBSSU5URihWRlNEQl9WTk9ERSwgKCJ2ZnNjb3JlX3ZnZXQgJWxsdVxuIiwg
KHVuc2lnbmVkIGxvbmcgbG9uZykgaW5vKSk7DQogICAgIA0KICAgICAJVk5PREVfTE9DSygpOw0K
ICAgICANCiAgICBAQCAtMzAwLDcgKzMwMCw3IEBAIHZyZWxlKHN0cnVjdCB2bm9kZSAqdnApDQog
ICAgICAqIFJlbW92ZSBhbGwgdm5vZGUgaW4gdGhlIHZub2RlIHRhYmxlIGZvciB1bm1vdW50Lg0K
ICAgICAgKi8NCiAgICAgdm9pZA0KICAgIC12Zmx1c2goc3RydWN0IG1vdW50ICptcCkNCiAgICAr
dmZsdXNoKHN0cnVjdCBtb3VudCAqbXAgX191bnVzZWQpDQogICAgIHsNCiAgICAgfQ0KICAgICAN
CiAgICBAQCAtNTEyLDcgKzUxMiw3IEBAIHZub2RlX2luaXQodm9pZCkNCiAgICAgCQlVS19JTklU
X0xJU1RfSEVBRCgmdm5vZGVfdGFibGVbaV0pOw0KICAgICB9DQogICAgIA0KICAgIC12b2lkIHZu
X2FkZF9uYW1lKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCBkZW50cnkgKmRwKQ0KICAgICt2b2lk
IHZuX2FkZF9uYW1lKHN0cnVjdCB2bm9kZSAqdnAgX191bnVzZWQsIHN0cnVjdCBkZW50cnkgKmRw
KQ0KICAgICB7DQogICAgIAkvKiBUT0RPOiBSZS1lbmFibGUgdGhpcyBjaGVjayB3aGVuIHByZWVt
cHRpb24gYW5kL29yIHNtcCBpcw0KICAgICAJICogaGVyZSAqLw0KICAgIEBAIC01MjAsNyArNTIw
LDcgQEAgdm9pZCB2bl9hZGRfbmFtZShzdHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3QgZGVudHJ5ICpk
cCkNCiAgICAgCXVrX2xpc3RfYWRkKCZkcC0+ZF9uYW1lc19saW5rLCAmdnAtPnZfbmFtZXMpOw0K
ICAgICB9DQogICAgIA0KICAgIC12b2lkIHZuX2RlbF9uYW1lKHN0cnVjdCB2bm9kZSAqdnAsIHN0
cnVjdCBkZW50cnkgKmRwKQ0KICAgICt2b2lkIHZuX2RlbF9uYW1lKHN0cnVjdCB2bm9kZSAqdnAg
X191bnVzZWQsIHN0cnVjdCBkZW50cnkgKmRwKQ0KICAgICB7DQogICAgIAkvKiBUT0RPOiBSZS1l
bmFibGUgdGhpcyBjaGVjayB3aGVuIHByZWVtcHRpb24gYW5kL29yIHNtcCBpcw0KICAgICAJICog
aGVyZSAqLw0KICAgIC0tIA0KICAgIDIuMTkuMg0KICAgIA0KICAgIA0KICAgIF9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQogICAgTWluaW9zLWRldmVsIG1h
aWxpbmcgbGlzdA0KICAgIE1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KICAgIGh0
dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWwN
Cg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9z
LWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0
cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Feb 18 12:39:17 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 18 Feb 2019 12:39:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gviCZ-0000ax-RZ; Mon, 18 Feb 2019 12:39:15 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=G8G1=QZ=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1gviCY-0000as-VM
 for minios-devel@lists.xen.org; Mon, 18 Feb 2019 12:39:15 +0000
X-Inumbo-ID: 31c59c4c-337a-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 31c59c4c-337a-11e9-bc90-bc764e045a96;
 Mon, 18 Feb 2019 12:39:13 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id D1562F205F;
 Mon, 18 Feb 2019 13:38:53 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id xVZTTcFx4w-d; Mon, 18 Feb 2019 13:38:53 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 9CFF9F204E
 for <minios-devel@lists.xen.org>; Mon, 18 Feb 2019 13:38:51 +0100 (CET)
Received: from HYDRA.office.hd ([169.254.4.179]) by METHONE.office.hd
 ([192.168.24.54]) with mapi id 14.03.0319.002; Mon, 18 Feb 2019 13:38:51
 +0100
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [Minios-devel] [UNIKRAFT PATCH v3 20/23] lib/vfscore: add main
 constructor
Thread-Index: AQHUvu2Xqtbs1MzfiUS7TJZyRGUXYqXlj/AA
Date: Mon, 18 Feb 2019 12:38:50 +0000
Message-ID: <22B72AC7-2701-49B3-BD98-A588AA1804CD@neclab.eu>
References: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
 <20190207135901.9122-21-yuri.volchkov@neclab.eu>
In-Reply-To: <20190207135901.9122-21-yuri.volchkov@neclab.eu>
Accept-Language: en-GB, gl-ES, de-DE, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [10.1.2.186]
Content-ID: <E0693FD8ED102F4FA0785A1704A4BF5D@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v3 20/23] lib/vfscore: add main
 constructor
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Sharan Santhanam <Sharan.Santhanam@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

UmV2aWV3ZWQtYnk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1Pg0KDQrv
u79PbiAwNy4wMi4xOSwgMTU6MDEsICJNaW5pb3MtZGV2ZWwgb24gYmVoYWxmIG9mIFl1cmkgVm9s
Y2hrb3YiIDxtaW5pb3MtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZyBvbiBiZWhh
bGYgb2YgeXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+IHdyb3RlOg0KDQogICAgU2lnbmVkLW9mZi1i
eTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+DQogICAgLS0tDQogICAg
IGxpYi92ZnNjb3JlL21haW4uYyB8IDExICsrKysrKysrKysrDQogICAgIDEgZmlsZSBjaGFuZ2Vk
LCAxMSBpbnNlcnRpb25zKCspDQogICAgDQogICAgZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL21h
aW4uYyBiL2xpYi92ZnNjb3JlL21haW4uYw0KICAgIGluZGV4IGQ3YWJhNzU2Li43YWNjZjkzMSAx
MDA2NDQNCiAgICAtLS0gYS9saWIvdmZzY29yZS9tYWluLmMNCiAgICArKysgYi9saWIvdmZzY29y
ZS9tYWluLmMNCiAgICBAQCAtMjA0NSwzICsyMDQ1LDE0IEBAIGludCBjaHJvb3QoY29uc3QgY2hh
ciAqcGF0aCBfX3VudXNlZCkNCiAgICAgCWVycm5vID0gRU5PU1lTOw0KICAgICAJcmV0dXJuIC0x
Ow0KICAgICB9DQogICAgKw0KICAgICtzdGF0aWMgc3RydWN0IHRhc2sgX21haW5fdGFza19pbXBs
Ow0KICAgICtfX2NvbnN0cnVjdG9yIHN0YXRpYyB2b2lkIHZmc2NvcmVfaW5pdCh2b2lkKQ0KICAg
ICt7DQogICAgKwltZW1zZXQoJl9tYWluX3Rhc2tfaW1wbCwgMCwgc2l6ZW9mKF9tYWluX3Rhc2tf
aW1wbCkpOw0KICAgICsJc3RyY3B5KF9tYWluX3Rhc2tfaW1wbC50X2N3ZCwgIi8iKTsNCiAgICAr
CW1haW5fdGFzayA9ICZfbWFpbl90YXNrX2ltcGw7DQogICAgKw0KICAgICsJdm5vZGVfaW5pdCgp
Ow0KICAgICsJbG9va3VwX2luaXQoKTsNCiAgICArfQ0KICAgIC0tIA0KICAgIDIuMTkuMg0KICAg
IA0KICAgIA0KICAgIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fDQogICAgTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdA0KICAgIE1pbmlvcy1kZXZlbEBsaXN0
cy54ZW5wcm9qZWN0Lm9yZw0KICAgIGh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1h
bi9saXN0aW5mby9taW5pb3MtZGV2ZWwNCg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxA
bGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFu
L2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Feb 18 12:40:43 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 18 Feb 2019 12:40:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gviDz-0001BY-00; Mon, 18 Feb 2019 12:40:42 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=G8G1=QZ=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1gviDy-0001BT-9g
 for minios-devel@lists.xen.org; Mon, 18 Feb 2019 12:40:42 +0000
X-Inumbo-ID: 66425fd6-337a-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 66425fd6-337a-11e9-bc90-bc764e045a96;
 Mon, 18 Feb 2019 12:40:41 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 3E7C6F205C;
 Mon, 18 Feb 2019 13:39:12 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id Ds0fOBD4ouRX; Mon, 18 Feb 2019 13:39:12 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 0FA58F204E
 for <minios-devel@lists.xen.org>; Mon, 18 Feb 2019 13:39:10 +0100 (CET)
Received: from HYDRA.office.hd ([169.254.4.179]) by ENCELADUS.office.hd
 ([192.168.24.52]) with mapi id 14.03.0319.002; Mon, 18 Feb 2019 13:39:09
 +0100
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [Minios-devel] [UNIKRAFT PATCH v3 21/23] lib/nolibc: add
 prototypes for functions from vfscore
Thread-Index: AQHUvu2WMllTV8pmiUKQaBrTy/JIFKXlkAYA
Date: Mon, 18 Feb 2019 12:39:08 +0000
Message-ID: <41477857-D114-4F49-8EB6-F0852335E2FE@neclab.eu>
References: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
 <20190207135901.9122-22-yuri.volchkov@neclab.eu>
In-Reply-To: <20190207135901.9122-22-yuri.volchkov@neclab.eu>
Accept-Language: en-GB, gl-ES, de-DE, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [10.1.2.186]
Content-ID: <58FC0D1346510B44AE72D68519721C7C@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v3 21/23] lib/nolibc: add
 prototypes for functions from vfscore
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Sharan Santhanam <Sharan.Santhanam@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

UmV2aWV3ZWQtYnk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1Pg0KDQrv
u79PbiAwNy4wMi4xOSwgMTU6MDEsICJNaW5pb3MtZGV2ZWwgb24gYmVoYWxmIG9mIFl1cmkgVm9s
Y2hrb3YiIDxtaW5pb3MtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZyBvbiBiZWhh
bGYgb2YgeXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+IHdyb3RlOg0KDQogICAgU2lnbmVkLW9mZi1i
eTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+DQogICAgLS0tDQogICAg
IGxpYi9ub2xpYmMvaW5jbHVkZS91bmlzdGQuaCB8IDUgKysrKysNCiAgICAgMSBmaWxlIGNoYW5n
ZWQsIDUgaW5zZXJ0aW9ucygrKQ0KICAgIA0KICAgIGRpZmYgLS1naXQgYS9saWIvbm9saWJjL2lu
Y2x1ZGUvdW5pc3RkLmggYi9saWIvbm9saWJjL2luY2x1ZGUvdW5pc3RkLmgNCiAgICBpbmRleCAw
OWU3ZDdhMS4uZTNjMDhhNzUgMTAwNjQ0DQogICAgLS0tIGEvbGliL25vbGliYy9pbmNsdWRlL3Vu
aXN0ZC5oDQogICAgKysrIGIvbGliL25vbGliYy9pbmNsdWRlL3VuaXN0ZC5oDQogICAgQEAgLTUx
LDYgKzUxLDExIEBAIGV4dGVybiAiQyIgew0KICAgICBpbnQgY2xvc2UoaW50IGZkKTsNCiAgICAg
c3NpemVfdCB3cml0ZShpbnQgZmQsIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGNvdW50KTsNCiAg
ICAgc3NpemVfdCByZWFkKGludCBmZCwgdm9pZCAqYnVmLCBzaXplX3QgY291bnQpOw0KICAgICtp
bnQgZnN5bmMoaW50IGZkKTsNCiAgICAraW50IGR1cChpbnQgb2xkZmQpOw0KICAgICtpbnQgZHVw
MihpbnQgb2xkZmQsIGludCBuZXdmZCk7DQogICAgK2ludCBkdXAzKGludCBvbGRmZCwgaW50IG5l
d2ZkLCBpbnQgZmxhZ3MpOw0KICAgICtpbnQgdW5saW5rKGNvbnN0IGNoYXIgKnBhdGhuYW1lKTsN
CiAgICAgI2VuZGlmDQogICAgIA0KICAgICAjaWZkZWYgX19jcGx1c3BsdXMNCiAgICAtLSANCiAg
ICAyLjE5LjINCiAgICANCiAgICANCiAgICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXw0KICAgIE1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QNCiAgICBNaW5p
b3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcNCiAgICBodHRwczovL2xpc3RzLnhlbnByb2pl
Y3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVsDQoNCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QK
TWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVj
dC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Feb 18 12:41:27 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 18 Feb 2019 12:41:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gviEh-0001Ek-BI; Mon, 18 Feb 2019 12:41:27 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=G8G1=QZ=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1gviEf-0001Ee-TX
 for minios-devel@lists.xen.org; Mon, 18 Feb 2019 12:41:25 +0000
X-Inumbo-ID: 7e2432a6-337a-11e9-b2c7-574ca2c4e975
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 7e2432a6-337a-11e9-b2c7-574ca2c4e975;
 Mon, 18 Feb 2019 12:41:21 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 7C749104E03;
 Mon, 18 Feb 2019 13:41:20 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id Tb4WQqHsP0JD; Mon, 18 Feb 2019 13:41:20 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 53EAF104DF4
 for <minios-devel@lists.xen.org>; Mon, 18 Feb 2019 13:41:18 +0100 (CET)
Received: from HYDRA.office.hd ([169.254.4.179]) by ENCELADUS.office.hd
 ([192.168.24.52]) with mapi id 14.03.0319.002; Mon, 18 Feb 2019 13:41:17
 +0100
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [Minios-devel] [UNIKRAFT PATCH v3 22/23] lib/vfscore:
 re-implement stdio and enable new code
Thread-Index: AQHUvu2ZNBITFg59sUip6646dqoRuaXlkKCA
Date: Mon, 18 Feb 2019 12:41:17 +0000
Message-ID: <C6DFB192-D5D1-4589-83B6-941AD79D21B8@neclab.eu>
References: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
 <20190207135901.9122-23-yuri.volchkov@neclab.eu>
In-Reply-To: <20190207135901.9122-23-yuri.volchkov@neclab.eu>
Accept-Language: en-GB, gl-ES, de-DE, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [10.1.2.186]
Content-ID: <E5A0A5F9BD20AE4BB3205A56EFEC220A@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v3 22/23] lib/vfscore:
 re-implement stdio and enable new code
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Sharan Santhanam <Sharan.Santhanam@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGV5IGxvb2tzIGdvb2QsIGJ1dCBvbmUgcXVlc3Rpb246IFdvdWxkIHlvdSBpbnRyb2R1Y2UgYSBz
aW1pbGFyIHNsaW0gdmVyc2lvbiBvZiB2ZnNjb3JlIHRoYXQgd2UgaGFkIGJlZm9yZSBiYWNrIGFn
YWluIChlLmcuLCB3aXRoIGEgY29uZmlndXJhdGlvbiBvcHRpb24pPyBJIHRoaW5rIHdlIHNob3Vs
ZCBrZWVwIHRoZSBhYmlsaXR5IHRvIGVhc2lseSBtaW5pbWl6ZSBvciByZWR1Y2UgZmVhdHVyZXMg
b24gbGlicmFyaWVzIHdoZW5ldmVyIG5lZWRlZC4NCg0KUmV2aWV3ZWQtYnk6IFNpbW9uIEt1ZW56
ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1Pg0KDQrvu79PbiAwNy4wMi4xOSwgMTU6MDEsICJN
aW5pb3MtZGV2ZWwgb24gYmVoYWxmIG9mIFl1cmkgVm9sY2hrb3YiIDxtaW5pb3MtZGV2ZWwtYm91
bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZyBvbiBiZWhhbGYgb2YgeXVyaS52b2xjaGtvdkBuZWNs
YWIuZXU+IHdyb3RlOg0KDQogICAgU2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52
b2xjaGtvdkBuZWNsYWIuZXU+DQogICAgLS0tDQogICAgIGxpYi92ZnNjb3JlL0NvbmZpZy51ayAg
ICAgICAgICAgICAgfCAgMSArDQogICAgIGxpYi92ZnNjb3JlL01ha2VmaWxlLnVrICAgICAgICAg
ICAgfCAgOSArKysrDQogICAgIGxpYi92ZnNjb3JlL2V4cG9ydHN5bXMudWsgICAgICAgICAgfCAy
NyArKysrKysrKysrKw0KICAgICBsaWIvdmZzY29yZS9maWxlLmMgICAgICAgICAgICAgICAgIHwg
NjEgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgICBsaWIvdmZzY29yZS9pbmNsdWRlL3Zm
c2NvcmUvZmlsZS5oIHwgIDIgKy0NCiAgICAgbGliL3Zmc2NvcmUvc3RkaW8uYyAgICAgICAgICAg
ICAgICB8IDczICsrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQ0KICAgICA2IGZpbGVzIGNo
YW5nZWQsIDg1IGluc2VydGlvbnMoKyksIDg4IGRlbGV0aW9ucygtKQ0KICAgIA0KICAgIGRpZmYg
LS1naXQgYS9saWIvdmZzY29yZS9Db25maWcudWsgYi9saWIvdmZzY29yZS9Db25maWcudWsNCiAg
ICBpbmRleCA0OWQ2ZGFhMS4uNmNmNmM2M2EgMTAwNjQ0DQogICAgLS0tIGEvbGliL3Zmc2NvcmUv
Q29uZmlnLnVrDQogICAgKysrIGIvbGliL3Zmc2NvcmUvQ29uZmlnLnVrDQogICAgQEAgLTMsMyAr
Myw0IEBAIGNvbmZpZyBMSUJWRlNDT1JFDQogICAgIAlkZWZhdWx0IG4NCiAgICAgCXNlbGVjdCBM
SUJOT0xJQkMgaWYgIUhBVkVfTElCQw0KICAgICAJc2VsZWN0IExJQlVLREVCVUcNCiAgICArCXNl
bGVjdCBMSUJVS0xPQ0sNCiAgICBkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvTWFrZWZpbGUudWsg
Yi9saWIvdmZzY29yZS9NYWtlZmlsZS51aw0KICAgIGluZGV4IDA2OTMzZDk2Li4xZmQzNTg1OCAx
MDA2NDQNCiAgICAtLS0gYS9saWIvdmZzY29yZS9NYWtlZmlsZS51aw0KICAgICsrKyBiL2xpYi92
ZnNjb3JlL01ha2VmaWxlLnVrDQogICAgQEAgLTUsNSArNSwxNCBAQCBDSU5DTFVERVMteSArPSAt
SSQoTElCVkZTQ09SRV9CQVNFKS9pbmNsdWRlDQogICAgIExJQlZGU0NPUkVfU1JDUy15ICs9ICQo
TElCVkZTQ09SRV9CQVNFKS9mZC5jDQogICAgIExJQlZGU0NPUkVfU1JDUy15ICs9ICQoTElCVkZT
Q09SRV9CQVNFKS9maWxlLmMNCiAgICAgTElCVkZTQ09SRV9TUkNTLXkgKz0gJChMSUJWRlNDT1JF
X0JBU0UpL3N0ZGlvLmMNCiAgICArTElCVkZTQ09SRV9TUkNTLXkgKz0gJChMSUJWRlNDT1JFX0JB
U0UpL21vdW50LmMNCiAgICArTElCVkZTQ09SRV9TUkNTLXkgKz0gJChMSUJWRlNDT1JFX0JBU0Up
L3Zub2RlLmMNCiAgICArTElCVkZTQ09SRV9TUkNTLXkgKz0gJChMSUJWRlNDT1JFX0JBU0UpL2Rl
bnRyeS5jDQogICAgK0xJQlZGU0NPUkVfU1JDUy15ICs9ICQoTElCVkZTQ09SRV9CQVNFKS9zeXNj
YWxscy5jDQogICAgK0xJQlZGU0NPUkVfU1JDUy15ICs9ICQoTElCVkZTQ09SRV9CQVNFKS9tYWlu
LmMNCiAgICArTElCVkZTQ09SRV9TUkNTLXkgKz0gJChMSUJWRlNDT1JFX0JBU0UpL3Rhc2suYw0K
ICAgICtMSUJWRlNDT1JFX1NSQ1MteSArPSAkKExJQlZGU0NPUkVfQkFTRSkvbG9va3VwLmMNCiAg
ICArTElCVkZTQ09SRV9TUkNTLXkgKz0gJChMSUJWRlNDT1JFX0JBU0UpL2ZvcHMuYw0KICAgICtM
SUJWRlNDT1JFX1NSQ1MteSArPSAkKExJQlZGU0NPUkVfQkFTRSkvc3Vicl91aW8uYw0KICAgICAN
CiAgICAgRVhUUkFfTERfU0NSSVBULSQoQ09ORklHX0xJQlZGU0NPUkUpICs9ICQoTElCVkZTQ09S
RV9CQVNFKS9leHRyYS5sZA0KICAgIFwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQ0KICAgIGRp
ZmYgLS1naXQgYS9saWIvdmZzY29yZS9leHBvcnRzeW1zLnVrIGIvbGliL3Zmc2NvcmUvZXhwb3J0
c3ltcy51aw0KICAgIGluZGV4IDllMjI5YTExLi41NDM4YTY0YyAxMDA2NDQNCiAgICAtLS0gYS9s
aWIvdmZzY29yZS9leHBvcnRzeW1zLnVrDQogICAgKysrIGIvbGliL3Zmc2NvcmUvZXhwb3J0c3lt
cy51aw0KICAgIEBAIC01LDMgKzUsMzAgQEAgdmZzY29yZV9nZXRfZmlsZQ0KICAgICBjbG9zZQ0K
ICAgICB3cml0ZQ0KICAgICByZWFkDQogICAgK3N5c19tb3VudA0KICAgICt2ZnNjb3JlX251bGxv
cA0KICAgICt2ZnNjb3JlX3JlbGVhc2VfbXBfZGVudHJpZXMNCiAgICArdmZzY29yZV92Z2V0DQog
ICAgK3Zmc2NvcmVfdWlvbW92ZQ0KICAgICt2ZnNjb3JlX3ZvcF9udWxsb3ANCiAgICArdmZzY29y
ZV92b3BfZWludmFsDQogICAgK3Zmc2NvcmVfdm9wX2VwZXJtDQogICAgK3Zmc2NvcmVfdm9wX2Vy
b2ZzDQogICAgK29wZW4NCiAgICArd3JpdGUNCiAgICArY2xvc2UNCiAgICArcmVhZA0KICAgICtt
a2Rpcg0KICAgICtmc3luYw0KICAgICtmc3RhdA0KICAgICtzdGF0DQogICAgK2NobW9kDQogICAg
K2R1cA0KICAgICtkdXAyDQogICAgK2R1cDMNCiAgICArdmZzY29yZV91aW9tb3ZlDQogICAgK3N5
c19zeW5jDQogICAgK3Zmc2NvcmVfbW91bnRfZHVtcA0KICAgICtzeXNfdW1vdW50DQogICAgK3N5
c191bW91bnQyDQogICAgK3VubGluaw0KICAgIGRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9maWxl
LmMgYi9saWIvdmZzY29yZS9maWxlLmMNCiAgICBpbmRleCAwZjZkZmE5My4uZTU2ZjE2ZGMgMTAw
NjQ0DQogICAgLS0tIGEvbGliL3Zmc2NvcmUvZmlsZS5jDQogICAgKysrIGIvbGliL3Zmc2NvcmUv
ZmlsZS5jDQogICAgQEAgLTM4LDY2ICszOCw3IEBADQogICAgICNpbmNsdWRlIDx1ay9wcmludC5o
Pg0KICAgICAjaW5jbHVkZSA8dmZzY29yZS9maWxlLmg+DQogICAgICNpbmNsdWRlIDx1ay9hc3Nl
cnQuaD4NCiAgICAtI2luY2x1ZGUgPHVrL2FyY2gvYXRvbWljLmg+DQogICAgLQ0KICAgIC1pbnQg
Y2xvc2UoaW50IGZkKQ0KICAgIC17DQogICAgLQlzdHJ1Y3QgdmZzY29yZV9maWxlICpmaWxlID0g
dmZzY29yZV9nZXRfZmlsZShmZCk7DQogICAgLQ0KICAgIC0JaWYgKCFmaWxlKSB7DQogICAgLQkJ
dWtfcHJfd2Fybigibm8gc3VjaCBmaWxlIGRlc2NyaXB0b3I6ICVkXG4iLCBmZCk7DQogICAgLQkJ
ZXJybm8gPSBFQkFERjsNCiAgICAtCQlyZXR1cm4gLTE7DQogICAgLQl9DQogICAgLQ0KICAgIC0J
aWYgKCFmaWxlLT5mb3BzLT5jbG9zZSkgew0KICAgIC0JCWVycm5vID0gRUlPOw0KICAgIC0JCXJl
dHVybiAtMTsNCiAgICAtCX0NCiAgICAtDQogICAgLQlyZXR1cm4gZmlsZS0+Zm9wcy0+Y2xvc2Uo
ZmlsZSk7DQogICAgLX0NCiAgICAtDQogICAgLXNzaXplX3Qgd3JpdGUoaW50IGZkLCBjb25zdCB2
b2lkICpidWYsIHNpemVfdCBjb3VudCkNCiAgICAtew0KICAgIC0Jc3RydWN0IHZmc2NvcmVfZmls
ZSAqZmlsZSA9IHZmc2NvcmVfZ2V0X2ZpbGUoZmQpOw0KICAgIC0NCiAgICAtCWlmICghZmlsZSkg
ew0KICAgIC0JCXVrX3ByX3dhcm4oIm5vIHN1Y2ggZmlsZSBkZXNjcmlwdG9yOiAlZFxuIiwgZmQp
Ow0KICAgIC0JCWVycm5vID0gRUJBREY7DQogICAgLQkJcmV0dXJuIC0xOw0KICAgIC0JfQ0KICAg
IC0NCiAgICAtCWlmICghZmlsZS0+Zm9wcy0+d3JpdGUpIHsNCiAgICAtCQl1a19wcl93YXJuKCJm
aWxlIGRvZXMgbm90IGhhdmUgd3JpdGUgb3A6ICVkXG4iLCBmZCk7DQogICAgLQkJZXJybm8gPSBF
SU5WQUw7DQogICAgLQkJcmV0dXJuIC0xOw0KICAgIC0JfQ0KICAgIC0NCiAgICAtCXJldHVybiBm
aWxlLT5mb3BzLT53cml0ZShmaWxlLCBidWYsIGNvdW50KTsNCiAgICAtfQ0KICAgIC0NCiAgICAt
c3NpemVfdCByZWFkKGludCBmZCwgdm9pZCAqYnVmLCBzaXplX3QgY291bnQpDQogICAgLXsNCiAg
ICAtCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZpbGUgPSB2ZnNjb3JlX2dldF9maWxlKGZkKTsNCiAg
ICAtDQogICAgLQlpZiAoIWZpbGUpIHsNCiAgICAtCQl1a19wcl93YXJuKCJubyBzdWNoIGZpbGUg
ZGVzY3JpcHRvcjogJWRcbiIsIGZkKTsNCiAgICAtCQllcnJubyA9IEVCQURGOw0KICAgIC0JCXJl
dHVybiAtMTsNCiAgICAtCX0NCiAgICAtDQogICAgLQlpZiAoIWZpbGUtPmZvcHMtPnJlYWQpIHsN
CiAgICAtCQl1a19wcl93YXJuKCJmaWxlIGRvZXMgbm90IGhhdmUgcmVhZCBvcDogJWRcbiIsIGZk
KTsNCiAgICAtCQllcnJubyA9IEVJTlZBTDsNCiAgICAtCQlyZXR1cm4gLTE7DQogICAgLQl9DQog
ICAgLQ0KICAgIC0JcmV0dXJuIGZpbGUtPmZvcHMtPnJlYWQoZmlsZSwgYnVmLCBjb3VudCk7DQog
ICAgLX0NCiAgICAtDQogICAgLS8qIFRPRE86IHJlbW92ZSBzdHViICovDQogICAgLSNkZWZpbmUg
dmZzX2Nsb3NlKGZwKSAoMCkNCiAgICArI2luY2x1ZGUgInZmcy5oIg0KICAgICANCiAgICAgaW50
IGZkcm9wKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwKQ0KICAgICB7DQogICAgZGlmZiAtLWdpdCBh
L2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9maWxlLmggYi9saWIvdmZzY29yZS9pbmNsdWRl
L3Zmc2NvcmUvZmlsZS5oDQogICAgaW5kZXggYjczMjBjYzEuLjdmNDVjYTc4IDEwMDY0NA0KICAg
IC0tLSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9maWxlLmgNCiAgICArKysgYi9saWIv
dmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZmlsZS5oDQogICAgQEAgLTM4LDYgKzM4LDcgQEANCiAg
ICAgDQogICAgICNpbmNsdWRlIDxzdGRpbnQuaD4NCiAgICAgI2luY2x1ZGUgPHN5cy90eXBlcy5o
Pg0KICAgICsjaW5jbHVkZSA8dmZzY29yZS9kZW50cnkuaD4NCiAgICAgDQogICAgICNpZmRlZiBf
X2NwbHVzcGx1cw0KICAgICBleHRlcm4gIkMiIHsNCiAgICBAQCAtNTgsNyArNTksNiBAQCBzdHJ1
Y3QgdmZzY29yZV9maWxlIHsNCiAgICAgCW9mZl90CQlmX29mZnNldDsJLyogY3VycmVudCBwb3Np
dGlvbiBpbiBmaWxlICovDQogICAgIAl2b2lkCQkqZl9kYXRhOyAgICAgICAgLyogZmlsZSBkZXNj
cmlwdG9yIHNwZWNpZmljIGRhdGEgKi8NCiAgICAgCXN0cnVjdCBkZW50cnkgICAqZl9kZW50cnk7
DQogICAgLQljb25zdCBzdHJ1Y3QgdmZzY29yZV9mb3BzICpmb3BzOw0KICAgICB9Ow0KICAgICAN
CiAgICAgaW50IHZmc2NvcmVfYWxsb2NfZmQodm9pZCk7DQogICAgZGlmZiAtLWdpdCBhL2xpYi92
ZnNjb3JlL3N0ZGlvLmMgYi9saWIvdmZzY29yZS9zdGRpby5jDQogICAgaW5kZXggYTliZGZkNjEu
LjVmMTVlZjJhIDEwMDY0NA0KICAgIC0tLSBhL2xpYi92ZnNjb3JlL3N0ZGlvLmMNCiAgICArKysg
Yi9saWIvdmZzY29yZS9zdGRpby5jDQogICAgQEAgLTM0LDIzICszNCwzNyBAQA0KICAgICAgKi8N
CiAgICAgDQogICAgICNpbmNsdWRlIDx2ZnNjb3JlL2ZpbGUuaD4NCiAgICArI2luY2x1ZGUgPHZm
c2NvcmUvZnMuaD4NCiAgICAgI2luY2x1ZGUgPHVrL3BsYXQvY29uc29sZS5oPg0KICAgICAjaW5j
bHVkZSA8dWsvZXNzZW50aWFscy5oPg0KICAgICAjaW5jbHVkZSA8dGVybWlvcy5oPg0KICAgICsj
aW5jbHVkZSA8dmZzY29yZS92bm9kZS5oPg0KICAgICsjaW5jbHVkZSA8dW5pc3RkLmg+DQogICAg
IA0KICAgICAvKiBPbmUgZnVuY3Rpb24gZm9yIHN0ZGVyciBhbmQgc3Rkb3V0ICovDQogICAgLXN0
YXRpYyBzc2l6ZV90IHN0ZG91dF93cml0ZShzdHJ1Y3QgdmZzY29yZV9maWxlICp2ZnNjb3JlX2Zp
bGUgX191bnVzZWQsDQogICAgLQkJCSAgICBjb25zdCB2b2lkICpidWYsIHNpemVfdCBjb3VudCkN
CiAgICArc3RhdGljIHNzaXplX3Qgc3RkaW9fd3JpdGUoc3RydWN0IHZub2RlICp2cCBfX3VudXNl
ZCwNCiAgICArCQkJICAgc3RydWN0IHVpbyAqdWlvLA0KICAgICsJCQkgICBpbnQgaW9mbGFnIF9f
dW51c2VkKQ0KICAgICB7DQogICAgLQlyZXR1cm4gdWtwbGF0X2NvdXRrKGJ1ZiwgY291bnQpOw0K
ICAgICsJVUtfQVNTRVJUKCF1aW8tPnVpb19vZmZzZXQpOw0KICAgICsJVUtfQVNTRVJUKHVpby0+
dWlvX2lvdmNudCA9PSAxKTsNCiAgICArCXJldHVybiB1a3BsYXRfY291dGsodWlvLT51aW9faW92
LT5pb3ZfYmFzZSwgdWlvLT51aW9faW92LT5pb3ZfbGVuKTsNCiAgICAgfQ0KICAgICANCiAgICAt
c3RhdGljIHNzaXplX3Qgc3RkaW5fcmVhZChzdHJ1Y3QgdmZzY29yZV9maWxlICp2ZnNjb3JlX2Zp
bGUgX191bnVzZWQsDQogICAgLQkJCSAgdm9pZCAqX2J1Ziwgc2l6ZV90IGNvdW50KQ0KICAgICtz
dGF0aWMgc3NpemVfdCBzdGRpb19yZWFkKHN0cnVjdCB2bm9kZSAqdnAgX191bnVzZWQsDQogICAg
KwkJICAgICAgc3RydWN0IHZmc2NvcmVfZmlsZSAqZmlsZSBfX3VudXNlZCwNCiAgICArCQkgICAg
ICBzdHJ1Y3QgdWlvICp1aW8sDQogICAgKwkJICAgICAgaW50IGlvZmxhZyBfX3VudXNlZCkNCiAg
ICAgew0KICAgICAJaW50IGJ5dGVzX3JlYWQ7DQogICAgLQlzaXplX3QgYnl0ZXNfdG90YWwgPSAw
Ow0KICAgIC0JY2hhciAqYnVmID0gKGNoYXIgKilfYnVmOw0KICAgICsJc2l6ZV90IGJ5dGVzX3Rv
dGFsID0gMCwgY291bnQ7DQogICAgKwljaGFyICpidWY7DQogICAgKw0KICAgICsJVUtfQVNTRVJU
KCF1aW8tPnVpb19vZmZzZXQpOw0KICAgICsJVUtfQVNTRVJUKHVpby0+dWlvX2lvdmNudCA9PSAx
KTsNCiAgICArDQogICAgKwlidWYgPSB1aW8tPnVpb19pb3YtPmlvdl9iYXNlOw0KICAgICsJY291
bnQgPSB1aW8tPnVpb19pb3YtPmlvdl9sZW47DQogICAgIA0KICAgICAJZG8gew0KICAgICAJCXdo
aWxlICgoYnl0ZXNfcmVhZCA9IHVrcGxhdF9jaW5rKGJ1ZiwNCiAgICBAQCAtNjEsOCArNzUsOCBA
QCBzdGF0aWMgc3NpemVfdCBzdGRpbl9yZWFkKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKnZmc2NvcmVf
ZmlsZSBfX3VudXNlZCwNCiAgICAgCQkqKGJ1ZiAtIDEpID0gKihidWYgLSAxKSA9PSAnXHInID8N
CiAgICAgCQkJCQknXG4nIDogKihidWYgLSAxKTsNCiAgICAgDQogICAgLQkJc3Rkb3V0X3dyaXRl
KHZmc2NvcmVfZmlsZSwgKGJ1ZiAtIGJ5dGVzX3JlYWQpLA0KICAgIC0JCQkJYnl0ZXNfcmVhZCk7
DQogICAgKwkJLyogRWNobyB0aGUgaW5wdXQgKi8NCiAgICArCQl1a3BsYXRfY291dGsoYnVmIC0g
Ynl0ZXNfcmVhZCwgYnl0ZXNfcmVhZCk7DQogICAgIAkJYnl0ZXNfdG90YWwgKz0gYnl0ZXNfcmVh
ZDsNCiAgICAgDQogICAgIAl9IHdoaWxlIChieXRlc190b3RhbCA8IGNvdW50ICYmICooYnVmIC0g
MSkgIT0gJ1xuJw0KICAgIEBAIC03MSwzMyArODUsMzggQEAgc3RhdGljIHNzaXplX3Qgc3RkaW5f
cmVhZChzdHJ1Y3QgdmZzY29yZV9maWxlICp2ZnNjb3JlX2ZpbGUgX191bnVzZWQsDQogICAgIAly
ZXR1cm4gYnl0ZXNfdG90YWw7DQogICAgIH0NCiAgICAgDQogICAgLXN0YXRpYyBzdHJ1Y3QgdmZz
Y29yZV9mb3BzIHN0ZGluX2ZvcHMgPSB7DQogICAgLQkucmVhZCA9IHN0ZGluX3JlYWQsDQogICAg
LX07DQogICAgIA0KICAgIC1zdGF0aWMgc3RydWN0IHZmc2NvcmVfZm9wcyBzdGRvdXRfZm9wcyA9
IHsNCiAgICAtCS53cml0ZSA9IHN0ZG91dF93cml0ZSwNCiAgICArc3RhdGljIHN0cnVjdCB2bm9w
cyBzdGRpb192bm9wcyA9IHsNCiAgICArCS52b3Bfd3JpdGUgPSBzdGRpb193cml0ZSwNCiAgICAr
CS52b3BfcmVhZCA9IHN0ZGlvX3JlYWQsDQogICAgIH07DQogICAgIA0KICAgIC1zdGF0aWMgc3Ry
dWN0IHZmc2NvcmVfZmlsZSAgc3RkaW5fZmlsZSA9IHsNCiAgICAtCS5mZCA9IDAsDQogICAgLQku
Zm9wcyA9ICZzdGRpbl9mb3BzLA0KICAgICtzdGF0aWMgc3RydWN0IHZub2RlIHN0ZGlvX3Zub2Rl
ID0gew0KICAgICsJLnZfaW5vID0gMSwNCiAgICArCS52X29wID0gJnN0ZGlvX3Zub3BzLA0KICAg
ICsJLnZfbG9jayA9IFVLX01VVEVYX0lOSVRJQUxJWkVSKHN0ZGlvX3Zub2RlLnZfbG9jayksDQog
ICAgKwkudl9yZWZjbnQgPSAxLA0KICAgICB9Ow0KICAgICANCiAgICAtc3RhdGljIHN0cnVjdCB2
ZnNjb3JlX2ZpbGUgIHN0ZG91dF9maWxlID0gew0KICAgIC0JLmZkID0gMSwNCiAgICAtCS5mb3Bz
ID0gJnN0ZG91dF9mb3BzLA0KICAgICtzdGF0aWMgc3RydWN0IGRlbnRyeSBzdGRpb19kZW50cnkg
PSB7DQogICAgKwkuZF92bm9kZSA9ICZzdGRpb192bm9kZSwNCiAgICAgfTsNCiAgICAgDQogICAg
LXN0YXRpYyBzdHJ1Y3QgdmZzY29yZV9maWxlICBzdGRlcnJfZmlsZSA9IHsNCiAgICAtCS5mZCA9
IDIsDQogICAgLQkuZm9wcyA9ICZzdGRvdXRfZm9wcywNCiAgICArc3RhdGljIHN0cnVjdCB2ZnNj
b3JlX2ZpbGUgIHN0ZGlvX2ZpbGUgPSB7DQogICAgKwkuZmQgPSAxLA0KICAgICsJLmZfZmxhZ3Mg
PSBGV1JJVEUgfCBGUkVBRCwNCiAgICArCS5mX2RlbnRyeSA9ICZzdGRpb19kZW50cnksDQogICAg
KwkvKiByZWZlcmVuY2UgY291bnQgaXMgMiBiZWNhdXNlIGNsb3NlKDApIGlzIGEgdmFsaWQNCiAg
ICArCSAqIG9wZXJhdGlvbi4gSG93ZXZlciBpdCBpcyBub3QgcHJvcGVybHkgaGFuZGxlZCBpbiB0
aGUNCiAgICArCSAqIGN1cnJlbnQgaW1wbGVtZW50YXRpb24uICovDQogICAgKwkuZl9jb3VudCA9
IDIsDQogICAgIH07DQogICAgIA0KICAgIC0NCiAgICAgdm9pZCBpbml0X3N0ZGlvKHZvaWQpDQog
ICAgIHsNCiAgICAtCXZmc2NvcmVfaW5zdGFsbF9mZCgwLCAmc3RkaW5fZmlsZSk7DQogICAgLQl2
ZnNjb3JlX2luc3RhbGxfZmQoMSwgJnN0ZG91dF9maWxlKTsNCiAgICAtCXZmc2NvcmVfaW5zdGFs
bF9mZCgyLCAmc3RkZXJyX2ZpbGUpOw0KICAgICsJdmZzY29yZV9pbnN0YWxsX2ZkKDAsICZzdGRp
b19maWxlKTsNCiAgICArCWlmIChkdXAyKDAsIDEpICE9IDEpDQogICAgKwkJdWtfcHJfZXJyKCJm
YWlsZWQgdG8gZHVwIHRvIHN0ZGluXG4iKTsNCiAgICArCWlmIChkdXAyKDAsIDIpICE9IDIpDQog
ICAgKwkJdWtfcHJfZXJyKCJmYWlsZWQgdG8gZHVwIHRvIHN0ZGVyclxuIik7DQogICAgIH0NCiAg
ICAtLSANCiAgICAyLjE5LjINCiAgICANCiAgICANCiAgICBfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXw0KICAgIE1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QN
CiAgICBNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcNCiAgICBodHRwczovL2xpc3Rz
LnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVsDQoNCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWls
aW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMu
eGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Feb 18 12:43:55 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 18 Feb 2019 12:43:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gviH4-0001Kr-IV; Mon, 18 Feb 2019 12:43:54 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=G8G1=QZ=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1gviH3-0001Kl-OR
 for minios-devel@lists.xen.org; Mon, 18 Feb 2019 12:43:53 +0000
X-Inumbo-ID: d5fa193c-337a-11e9-a239-f7f1ea3d22a9
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id d5fa193c-337a-11e9-a239-f7f1ea3d22a9;
 Mon, 18 Feb 2019 12:43:48 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id C1B08F205C;
 Mon, 18 Feb 2019 13:43:47 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id BHgNcA-SGtab; Mon, 18 Feb 2019 13:43:47 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 97C8FF204E
 for <minios-devel@lists.xen.org>; Mon, 18 Feb 2019 13:43:45 +0100 (CET)
Received: from HYDRA.office.hd ([169.254.4.179]) by METHONE.office.hd
 ([192.168.24.54]) with mapi id 14.03.0319.002; Mon, 18 Feb 2019 13:43:45
 +0100
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [Minios-devel] [UNIKRAFT PATCH v3 23/23] lib/vfscore: remove
 sys prefix from vfs api functions
Thread-Index: AQHUvu2YCQ2L7zAN50mFCweB3OxbkaXlkU8A
Date: Mon, 18 Feb 2019 12:43:45 +0000
Message-ID: <D8C21F5D-4A24-4485-BF93-606416B60E78@neclab.eu>
References: <20190207135901.9122-1-yuri.volchkov@neclab.eu>
 <20190207135901.9122-24-yuri.volchkov@neclab.eu>
In-Reply-To: <20190207135901.9122-24-yuri.volchkov@neclab.eu>
Accept-Language: en-GB, gl-ES, de-DE, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [10.1.2.186]
Content-ID: <ACB5B5D4707F1646BD32C6E83B48D33D@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v3 23/23] lib/vfscore: remove
 sys prefix from vfs api functions
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Sharan Santhanam <Sharan.Santhanam@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

UmV2aWV3ZWQtYnk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1Pg0KDQpJ
IHdpbGwgZml4IHRoZSB0eXBvIGluIHlvdXIgY29tbWl0IG1lc3NhZ2Ugd2hpbGUgdXBzdHJlYW1p
bmcuIF9fDQpCdHcsIEkgaGF2ZSB3b3JrZWQgb24gYWRvcHRpbmcgbHdpcCB0byB5b3VyIG5ldyB2
ZXJzaW9uIG9mIHZmc2NvcmUuIEkgd2lsbCBzZW5kIG91dCBhIHBhdGNoIGZvciBpdCBpbiBhIGJp
dC4NCg0KVGhhbmtzLA0KDQpTaW1vbg0KDQrvu79PbiAwNy4wMi4xOSwgMTU6MDEsICJNaW5pb3Mt
ZGV2ZWwgb24gYmVoYWxmIG9mIFl1cmkgVm9sY2hrb3YiIDxtaW5pb3MtZGV2ZWwtYm91bmNlc0Bs
aXN0cy54ZW5wcm9qZWN0Lm9yZyBvbiBiZWhhbGYgb2YgeXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+
IHdyb3RlOg0KDQogICAgRnVjbnRpb25zIHN5cyhtb3VudHx1bW91bnR8dW1vdW50MnxzeW5jKSBh
cmUgY29tcGxldGUgZnVuY3Rpb24NCiAgICBjYWxscy4gVXNlciBhcHBsaWNhdGlvbnMgc2hvdWxk
IHVzZSB0aGVtIGRpcmVjdGx5IGFueXdheXMuIExldCdzDQogICAgcmVuYW1lIHRoZW0gYWNjb3Jk
aW5nbHkuDQogICAgDQogICAgU2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xj
aGtvdkBuZWNsYWIuZXU+DQogICAgLS0tDQogICAgIGxpYi9ub2xpYmMvaW5jbHVkZS91bmlzdGQu
aCB8ICAxICsNCiAgICAgbGliL3Zmc2NvcmUvZXhwb3J0c3ltcy51ayAgIHwgIDggKysrKy0tLS0N
CiAgICAgbGliL3Zmc2NvcmUvbW91bnQuYyAgICAgICAgIHwgMTQgKysrKysrLS0tLS0tLS0NCiAg
ICAgbGliL3Zmc2NvcmUvdmZzLmggICAgICAgICAgIHwgIDUgKy0tLS0NCiAgICAgNCBmaWxlcyBj
aGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkNCiAgICANCiAgICBkaWZm
IC0tZ2l0IGEvbGliL25vbGliYy9pbmNsdWRlL3VuaXN0ZC5oIGIvbGliL25vbGliYy9pbmNsdWRl
L3VuaXN0ZC5oDQogICAgaW5kZXggZTNjMDhhNzUuLjk4ODFhYjViIDEwMDY0NA0KICAgIC0tLSBh
L2xpYi9ub2xpYmMvaW5jbHVkZS91bmlzdGQuaA0KICAgICsrKyBiL2xpYi9ub2xpYmMvaW5jbHVk
ZS91bmlzdGQuaA0KICAgIEBAIC01MSw2ICs1MSw3IEBAIGV4dGVybiAiQyIgew0KICAgICBpbnQg
Y2xvc2UoaW50IGZkKTsNCiAgICAgc3NpemVfdCB3cml0ZShpbnQgZmQsIGNvbnN0IHZvaWQgKmJ1
Ziwgc2l6ZV90IGNvdW50KTsNCiAgICAgc3NpemVfdCByZWFkKGludCBmZCwgdm9pZCAqYnVmLCBz
aXplX3QgY291bnQpOw0KICAgICt2b2lkIHN5bmModm9pZCk7DQogICAgIGludCBmc3luYyhpbnQg
ZmQpOw0KICAgICBpbnQgZHVwKGludCBvbGRmZCk7DQogICAgIGludCBkdXAyKGludCBvbGRmZCwg
aW50IG5ld2ZkKTsNCiAgICBkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvZXhwb3J0c3ltcy51ayBi
L2xpYi92ZnNjb3JlL2V4cG9ydHN5bXMudWsNCiAgICBpbmRleCA1NDM4YTY0Yy4uMTBmZWQ4MDYg
MTAwNjQ0DQogICAgLS0tIGEvbGliL3Zmc2NvcmUvZXhwb3J0c3ltcy51aw0KICAgICsrKyBiL2xp
Yi92ZnNjb3JlL2V4cG9ydHN5bXMudWsNCiAgICBAQCAtNSw3ICs1LDcgQEAgdmZzY29yZV9nZXRf
ZmlsZQ0KICAgICBjbG9zZQ0KICAgICB3cml0ZQ0KICAgICByZWFkDQogICAgLXN5c19tb3VudA0K
ICAgICttb3VudA0KICAgICB2ZnNjb3JlX251bGxvcA0KICAgICB2ZnNjb3JlX3JlbGVhc2VfbXBf
ZGVudHJpZXMNCiAgICAgdmZzY29yZV92Z2V0DQogICAgQEAgLTI3LDggKzI3LDggQEAgZHVwDQog
ICAgIGR1cDINCiAgICAgZHVwMw0KICAgICB2ZnNjb3JlX3Vpb21vdmUNCiAgICAtc3lzX3N5bmMN
CiAgICArc3luYw0KICAgICB2ZnNjb3JlX21vdW50X2R1bXANCiAgICAtc3lzX3Vtb3VudA0KICAg
IC1zeXNfdW1vdW50Mg0KICAgICt1bW91bnQNCiAgICArdW1vdW50Mg0KICAgICB1bmxpbmsNCiAg
ICBkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvbW91bnQuYyBiL2xpYi92ZnNjb3JlL21vdW50LmMN
CiAgICBpbmRleCA2OTQxNzVmMS4uMzlmMDA5YWMgMTAwNjQ0DQogICAgLS0tIGEvbGliL3Zmc2Nv
cmUvbW91bnQuYw0KICAgICsrKyBiL2xpYi92ZnNjb3JlL21vdW50LmMNCiAgICBAQCAtMTA5LDcg
KzEwOSw3IEBAIGludCBkZXZpY2VfY2xvc2Uoc3RydWN0IGRldmljZSAqZGV2KQ0KICAgICB9DQog
ICAgIA0KICAgICBpbnQNCiAgICAtc3lzX21vdW50KGNvbnN0IGNoYXIgKmRldiwgY29uc3QgY2hh
ciAqZGlyLCBjb25zdCBjaGFyICpmc25hbWUsIGludCBmbGFncywgY29uc3Qgdm9pZCAqZGF0YSkN
CiAgICArbW91bnQoY29uc3QgY2hhciAqZGV2LCBjb25zdCBjaGFyICpkaXIsIGNvbnN0IGNoYXIg
KmZzbmFtZSwgaW50IGZsYWdzLCBjb25zdCB2b2lkICpkYXRhKQ0KICAgICB7DQogICAgIAljb25z
dCBzdHJ1Y3QgdmZzY29yZV9mc190eXBlICpmczsNCiAgICAgCXN0cnVjdCBtb3VudCAqbXA7DQog
ICAgQEAgLTEzOCw3ICsxMzgsNyBAQCBzeXNfbW91bnQoY29uc3QgY2hhciAqZGV2LCBjb25zdCBj
aGFyICpkaXIsIGNvbnN0IGNoYXIgKmZzbmFtZSwgaW50IGZsYWdzLCBjb25zdA0KICAgICAJLy8g
V2UgbmVlZCB0byBhdm9pZCB0aGUgc2l0dWF0aW9uIHdoZXJlIGFmdGVyIHdlIGFscmVhZHkgdmVy
aWZpZWQgdGhhdA0KICAgICAJLy8gdGhlIG1vdW50IHBvaW50IGlzIGZyZWUsIGJ1dCBiZWZvcmUg
d2UgYWN0dWFsbHkgYWRkIGl0IHRvIG1vdW50X2xpc3QsDQogICAgIAkvLyBhbm90aGVyIGNvbmN1
cnJlbnQgbW91bnQgYWRkcyBpdC4gU28gd2UgdXNlIGEgbmV3IG11dGV4IHRvIGVuc3VyZQ0KICAg
IC0JLy8gdGhhdCBvbmx5IG9uZSBzeXNfbW91bnQoKSBydW5zIGF0IGEgdGltZS4gV2UgY2Fubm90
IHJldXNlIHRoZSBleGlzdGluZw0KICAgICsJLy8gdGhhdCBvbmx5IG9uZSBtb3VudCgpIHJ1bnMg
YXQgYSB0aW1lLiBXZSBjYW5ub3QgcmV1c2UgdGhlIGV4aXN0aW5nDQogICAgIAkvLyBtb3VudF9s
b2NrIGZvciB0aGlzIHB1cnBvc2U6IElmIHdlIHRha2UgbW91bnRfbG9jayBhbmQgdGhlbiBkbw0K
ICAgICAJLy8gbG9va3VwcywgdGhpcyBpcyBsb2NrIG9yZGVyIGludmVyc2lvbiBhbmQgY2FuIHJl
c3VsdCBpbiBkZWFkbG9jay4NCiAgICAgDQogICAgQEAgLTI1NCw3ICsyNTQsNyBAQCB2ZnNjb3Jl
X3JlbGVhc2VfbXBfZGVudHJpZXMoc3RydWN0IG1vdW50ICptcCkNCiAgICAgfQ0KICAgICANCiAg
ICAgaW50DQogICAgLXN5c191bW91bnQyKGNvbnN0IGNoYXIgKnBhdGgsIGludCBmbGFncykNCiAg
ICArdW1vdW50Mihjb25zdCBjaGFyICpwYXRoLCBpbnQgZmxhZ3MpDQogICAgIHsNCiAgICAgCXN0
cnVjdCBtb3VudCAqbXAsICp0bXA7DQogICAgIAlpbnQgZXJyb3IsIHBhdGhsZW47DQogICAgQEAg
LTMwNyw5ICszMDcsOSBAQCBmb3VuZDoNCiAgICAgfQ0KICAgICANCiAgICAgaW50DQogICAgLXN5
c191bW91bnQoY29uc3QgY2hhciAqcGF0aCkNCiAgICArdW1vdW50KGNvbnN0IGNoYXIgKnBhdGgp
DQogICAgIHsNCiAgICAtCXJldHVybiBzeXNfdW1vdW50MihwYXRoLCAwKTsNCiAgICArCXJldHVy
biB1bW91bnQyKHBhdGgsIDApOw0KICAgICB9DQogICAgIA0KICAgICAjaWYgMA0KICAgIEBAIC0z
NjIsOCArMzYyLDcgQEAgc3lzX3Bpdm90X3Jvb3QoY29uc3QgY2hhciAqbmV3X3Jvb3QsIGNvbnN0
IGNoYXIgKnB1dF9vbGQpDQogICAgIH0NCiAgICAgI2VuZGlmDQogICAgIA0KICAgIC1pbnQNCiAg
ICAtc3lzX3N5bmModm9pZCkNCiAgICArdm9pZCBzeW5jKHZvaWQpDQogICAgIHsNCiAgICAgCXN0
cnVjdCBtb3VudCAqbXA7DQogICAgIAl1a19tdXRleF9sb2NrKCZtb3VudF9sb2NrKTsNCiAgICBA
QCAtMzc1LDcgKzM3NCw2IEBAIHN5c19zeW5jKHZvaWQpDQogICAgICNpZmRlZiBIQVZFX0JVRkZF
UlMNCiAgICAgCWJpb19zeW5jKCk7DQogICAgICNlbmRpZg0KICAgIC0JcmV0dXJuIDA7DQogICAg
IH0NCiAgICAgDQogICAgIC8qDQogICAgZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3Zmcy5oIGIv
bGliL3Zmc2NvcmUvdmZzLmgNCiAgICBpbmRleCA0YTFjZmE5Zi4uODFhNjFkNzUgMTAwNjQ0DQog
ICAgLS0tIGEvbGliL3Zmc2NvcmUvdmZzLmgNCiAgICArKysgYi9saWIvdmZzY29yZS92ZnMuaA0K
ICAgIEBAIC0xMTEsMTEgKzExMSw4IEBAIGludCAgc3lzX3V0aW1lbnNhdChpbnQgZGlyZmQsIGNv
bnN0IGNoYXIgKnBhdGhuYW1lLA0KICAgICBpbnQgIHN5c19mdXRpbWVucyhpbnQgZmQsIGNvbnN0
IHN0cnVjdCB0aW1lc3BlYyB0aW1lc1syXSk7DQogICAgIGludCAgc3lzX2ZhbGxvY2F0ZShzdHJ1
Y3QgdmZzY29yZV9maWxlICpmcCwgaW50IG1vZGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4p
Ow0KICAgICANCiAgICAtaW50CSBzeXNfbW91bnQoY29uc3QgY2hhciAqZGV2LCBjb25zdCBjaGFy
ICpkaXIsIGNvbnN0IGNoYXIgKmZzbmFtZSwgaW50IGZsYWdzLCBjb25zdCB2b2lkICpkYXRhKTsN
CiAgICAtaW50CSBzeXNfdW1vdW50Mihjb25zdCBjaGFyICpwYXRoLCBpbnQgZmxhZ3MpOw0KICAg
IC1pbnQJIHN5c191bW91bnQoY29uc3QgY2hhciAqcGF0aCk7DQogICAgIGludAkgc3lzX3Bpdm90
X3Jvb3QoY29uc3QgY2hhciAqbmV3X3Jvb3QsIGNvbnN0IGNoYXIgKm9sZF9wdXQpOw0KICAgIC1p
bnQJIHN5c19zeW5jKHZvaWQpOw0KICAgICt2b2lkCSBzeW5jKHZvaWQpOw0KICAgICBpbnQJIHN5
c19jaG1vZChjb25zdCBjaGFyICpwYXRoLCBtb2RlX3QgbW9kZSk7DQogICAgIGludAkgc3lzX2Zj
aG1vZChpbnQgZmQsIG1vZGVfdCBtb2RlKTsNCiAgICAgDQogICAgLS0gDQogICAgMi4xOS4yDQog
ICAgDQogICAgDQogICAgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18NCiAgICBNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0DQogICAgTWluaW9zLWRldmVsQGxp
c3RzLnhlbnByb2plY3Qub3JnDQogICAgaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWls
bWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA0KDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZl
bEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxt
YW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Feb 18 12:52:25 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 18 Feb 2019 12:52:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gviPI-00026O-8E; Mon, 18 Feb 2019 12:52:24 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=9RzE=QZ=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1gviPG-00026J-RI
 for minios-devel@lists.xen.org; Mon, 18 Feb 2019 12:52:22 +0000
X-Inumbo-ID: 078ff9b3-337c-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 078ff9b3-337c-11e9-bc90-bc764e045a96;
 Mon, 18 Feb 2019 12:52:21 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 4EE03104DF4;
 Mon, 18 Feb 2019 13:52:20 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id Ec1z5jF1_6or; Mon, 18 Feb 2019 13:52:20 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 22C27104DEA;
 Mon, 18 Feb 2019 13:52:16 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 18 Feb 2019 13:52:15
 +0100
To: Simon Kuenzer <simon.kuenzer@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190217184646.12586-1-simon.kuenzer@neclab.eu>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <588fc7a1-755f-a221-93e3-f3a65aade818@neclab.eu>
Date: Mon, 18 Feb 2019 13:52:15 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190217184646.12586-1-simon.kuenzer@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH] plat/kvm: Acknowledge all
 interrupts
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: costin.lupu@cs.pub.ro, yuri.volchkov@neclab.eu
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gU2ltb24sCgpUaGlzIHBhdGNoIHNlZW1zIGZpbmUuCgpSZXZpZXdlZC1ieTogU2hhcmFu
IFNhbnRoYW5hbSA8c2hhcmFuLnNhbnRoYW5hbUBuZWNsYWIuZXU+CgoKQ3VycmVudGx5IGluIG91
ciBsaW51eHUgcGxhdGZvcm0sIHdlIGNyYXNoIGlmIHRoZXJlIGFyZSBub3QgaGFuZGxlZCAKaW50
ZXJydXB0cy4gSSB0aGluayBpdCB3b3VsZCBiZSB3aXNlIHRvIGhhdmUgdGhlIHR3byBiZWhhdmlv
cnMgY29uc2lzdGVudC4KClRoYW5rcyAmIFJlZ2FyZHMKU2hhcmFuCgpPbiAyLzE3LzE5IDc6NDYg
UE0sIFNpbW9uIEt1ZW56ZXIgd3JvdGU6Cj4gQWNrbm93bGVkZ2UgaW50ZXJydXB0cyBldmVuIGlu
IHRoZSBjYXNlIHdoZW4gdGhlcmUgd2FzIG5vCj4gaGFuZGxlciBmb3IgaXQuIFdlIGRvIHRoaXMg
dG8gKDEpIGNvbXBlbnNhdGUgcG90ZW50aWFsCj4gc3B1cmlvdXMgaW50ZXJydXB0cyBsaWtlIGN1
cnJlbnRseSBoYXBwZW5pbmcgb24gdmlydGlvLAo+IGFuZCAoMikgdG8gbWluaW1pemUgaW1wYWN0
IG9uIGRldmljZSBkcml2ZXJzIHRoYXQgc2hhcmUKPiBvbmUgaW50ZXJydXB0IGxpbmUgdGhhdCBn
b3QgcHJldmlvdXNseSBkaXNhYmxlZC4gV2hlbmV2ZXIKPiBhbiBpbnRlcnJ1cHQgd2FzIHVuaGFu
ZGxlZCBhIGNyaXRpY2FsIHdhcm5pbmcgaXMgc3RpbGwKPiBwcmludGVkIHRvIHRoZSBrZXJuZWwg
Y29uc29sZS4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVy
QG5lY2xhYi5ldT4KPiAtLS0KPiAgIHBsYXQva3ZtL2lycS5jIHwgMjIgKysrKysrKysrKysrLS0t
LS0tLS0tLQo+ICAgMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9u
cygtKQo+IAo+IGRpZmYgLS1naXQgYS9wbGF0L2t2bS9pcnEuYyBiL3BsYXQva3ZtL2lycS5jCj4g
aW5kZXggMGI3MzRmNjcuLmVmOTVhMDIyIDEwMDY0NAo+IC0tLSBhL3BsYXQva3ZtL2lycS5jCj4g
KysrIGIvcGxhdC9rdm0vaXJxLmMKPiBAQCAtODAsNyArODAsNiBAQCBleHRlcm4gdW5zaWduZWQg
bG9uZyBzY2hlZF9oYXZlX3BlbmRpbmdfZXZlbnRzOwo+ICAgdm9pZCBfdWtwbGF0X2lycV9oYW5k
bGUodW5zaWduZWQgbG9uZyBpcnEpCj4gICB7Cj4gICAJc3RydWN0IGlycV9oYW5kbGVyICpoOwo+
IC0JaW50IGhhbmRsZWQgPSAwOwo+ICAgCj4gICAJVUtfU0xJU1RfRk9SRUFDSChoLCAmaXJxX2hh
bmRsZXJzW2lycV0sIGVudHJpZXMpIHsKPiAgIAkJLyogVE9ETyBkZWZpbmUgcGxhdGZvcm0gd2lz
ZSBtYWNybyBmb3IgdGltZXIgSVJRIG51bWJlciAqLwo+IEBAIC05NywxNiArOTYsMTkgQEAgdm9p
ZCBfdWtwbGF0X2lycV9oYW5kbGUodW5zaWduZWQgbG9uZyBpcnEpCj4gICAJCQkgKi8KPiAgIAkJ
CV9fdWtfdGVzdF9hbmRfc2V0X2JpdCgwLCAmc2NoZWRfaGF2ZV9wZW5kaW5nX2V2ZW50cyk7Cj4g
ICAKPiAtCQlpZiAoaC0+ZnVuYyhoLT5hcmcpID09IDEpIHsKPiAtCQkJaGFuZGxlZCA9IDE7Cj4g
LQkJCWJyZWFrOwo+IC0JCX0KPiArCQlpZiAoaC0+ZnVuYyhoLT5hcmcpID09IDEpCj4gKwkJCWdv
dG8gZXhpdF9hY2s7Cj4gICAJfQo+IC0KPiAtCWlmICghaGFuZGxlZCkKPiAtCQl1a19wcl9jcml0
KCJVbmhhbmRsZWQgaXJxPSVsdVxuIiwgaXJxKTsKPiAtCWVsc2UKPiAtCQlpbnRjdHJsX2Fja19p
cnEoaXJxKTsKPiArCS8qCj4gKwkgKiBBY2tub3dsZWRnZSBpbnRlcnJ1cHRzIGV2ZW4gaW4gdGhl
IGNhc2Ugd2hlbiB0aGVyZSB3YXMgbm8gaGFuZGxlciBmb3IKPiArCSAqIGl0LiBXZSBkbyB0aGlz
IHRvICgxKSBjb21wZW5zYXRlIHBvdGVudGlhbCBzcHVyaW91cyBpbnRlcnJ1cHRzIG9mCj4gKwkg
KiBkZXZpY2VzLCBhbmQgKDIpIHRvIG1pbmltaXplIGltcGFjdCBvbiBkcml2ZXJzIHRoYXQgc2hh
cmUgb25lCj4gKwkgKiBpbnRlcnJ1cHQgbGluZSB0aGF0IHdvdWxkIHRoZW4gc3RheSBkaXNhYmxl
ZC4KPiArCSAqLwo+ICsJdWtfcHJfY3JpdCgiVW5oYW5kbGVkIGlycT0lbHVcbiIsIGlycSk7Cj4g
Kwo+ICtleGl0X2FjazoKPiArCWludGN0cmxfYWNrX2lycShpcnEpOwo+ICAgfQo+ICAgCj4gICBp
bnQgdWtwbGF0X2lycV9pbml0KHN0cnVjdCB1a19hbGxvYyAqYSkKPiAKCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxp
c3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJv
amVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Feb 18 12:58:25 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 18 Feb 2019 12:58:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gviV6-0002Zw-Mf; Mon, 18 Feb 2019 12:58:24 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=G8G1=QZ=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1gviV5-0002Zr-LN
 for minios-devel@lists.xen.org; Mon, 18 Feb 2019 12:58:23 +0000
X-Inumbo-ID: dd5b96fe-337c-11e9-9fce-5b9046240ee6
Received: from queen.nlehd.de (unknown [195.37.154.80])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id dd5b96fe-337c-11e9-9fce-5b9046240ee6;
 Mon, 18 Feb 2019 12:58:19 +0000 (UTC)
Received: from c414.ant-net (c414.ant-net [192.168.0.156])
 by queen.nlehd.de (Postfix) with ESMTP id 7681240B28;
 Mon, 18 Feb 2019 13:58:20 +0100 (CET)
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: minios-devel@lists.xen.org
Date: Mon, 18 Feb 2019 13:58:15 +0100
Message-Id: <20190218125815.16685-1-simon.kuenzer@neclab.eu>
X-Mailer: git-send-email 2.11.0
Subject: [Minios-devel] [UNIKRAFT PATCH] plat/linuxu: Acknowledge all
 interrupts on controller
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Simon Kuenzer <simon.kuenzer@neclab.eu>, sharan.santhanam@neclab.eu
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

TGlrZSBvbiBwbGF0L2t2bSwgd2UgYWNrbm93bGVkZ2UgaW50ZXJydXB0cyBldmVuIGluIHRoZQpj
YXNlIHdoZW4gdGhlcmUgd2FzIG5vIGhhbmRsZXIgZm9yIGl0LiBXZSBkbyB0aGlzIHRvIGdldApz
aW1pbGFyIHBsYXRmb3JtIGJlaGF2aW91ci4KClNpZ25lZC1vZmYtYnk6IFNpbW9uIEt1ZW56ZXIg
PHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1PgotLS0KIHBsYXQvbGludXh1L2lycS5jIHwgMTcgKysr
KysrKysrLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDggZGVsZXRp
b25zKC0pCgpkaWZmIC0tZ2l0IGEvcGxhdC9saW51eHUvaXJxLmMgYi9wbGF0L2xpbnV4dS9pcnEu
YwppbmRleCBlNzQzNWIzNC4uZjJiMThhODUgMTAwNjQ0Ci0tLSBhL3BsYXQvbGludXh1L2lycS5j
CisrKyBiL3BsYXQvbGludXh1L2lycS5jCkBAIC0xMjMsMTkgKzEyMywyMCBAQCBhc20oIl9fcmVz
dG9yZXI6bW92IHI3LCAjMHg3N1xuc3ZjIDB4MCIpOwogc3RhdGljIHZvaWQgX2lycV9oYW5kbGUo
aW50IGlycSkKIHsKIAlzdHJ1Y3QgaXJxX2hhbmRsZXIgKmg7Ci0JaW50IGhhbmRsZWQgPSAwOwog
CiAJVUtfQVNTRVJUKGlycSA+PSAwICYmIGlycSA8IElSUVNfTlVNKTsKIAogCVVLX1NMSVNUX0ZP
UkVBQ0goaCwgJmlycV9oYW5kbGVyc1tpcnFdLCBlbnRyaWVzKSB7Ci0JCWlmIChoLT5mdW5jKGgt
PmFyZykgPT0gMSkgewotCQkJaGFuZGxlZCA9IDE7Ci0JCQlicmVhazsKLQkJfQorCQlpZiAoaC0+
ZnVuYyhoLT5hcmcpID09IDEpCisJCQlyZXR1cm47CiAJfQotCi0JaWYgKCFoYW5kbGVkKQotCQlV
S19DUkFTSCgiVW5oYW5kbGVkIGlycT0lZFxuIiwgaXJxKTsKKwkvKgorCSAqIEp1c3Qgd2FybiBh
Ym91dCB1bmhhbmRsZWQgaW50ZXJydXB0cy4gV2UgZG8gdGhpcyB0bworCSAqICgxKSBjb21wZW5z
YXRlIHBvdGVudGlhbCBzcHVyaW91cyBpbnRlcnJ1cHRzIG9mCisJICogZGV2aWNlcywgYW5kICgy
KSB0byBtaW5pbWl6ZSBpbXBhY3Qgb24gZHJpdmVycyB0aGF0IHNoYXJlCisJICogb25lIGludGVy
cnVwdCBsaW5lIHRoYXQgd291bGQgdGhlbiBzdGF5IGRpc2FibGVkLgorCSAqLworCXVrX3ByX2Ny
aXQoIlVuaGFuZGxlZCBpcnE9JWRcbiIsIGlycSk7CiB9CiAKIGludCB1a3BsYXRfaXJxX3JlZ2lz
dGVyKHVuc2lnbmVkIGxvbmcgaXJxLCBpcnFfaGFuZGxlcl9mdW5jX3QgZnVuYywgdm9pZCAqYXJn
KQotLSAKMi4xMS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJv
amVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21p
bmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Feb 18 13:28:23 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 18 Feb 2019 13:28:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gviy5-0004tR-Rf; Mon, 18 Feb 2019 13:28:21 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=9RzE=QZ=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1gviy4-0004tK-OD
 for minios-devel@lists.xen.org; Mon, 18 Feb 2019 13:28:20 +0000
X-Inumbo-ID: 0caeb81d-3381-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 0caeb81d-3381-11e9-bc90-bc764e045a96;
 Mon, 18 Feb 2019 13:28:17 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 8D46F104DDB;
 Mon, 18 Feb 2019 14:28:16 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id DaPyuFavIcx3; Mon, 18 Feb 2019 14:28:16 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 67A75104D3F
 for <minios-devel@lists.xen.org>; Mon, 18 Feb 2019 14:28:14 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 18 Feb 2019 14:28:14
 +0100
To: Simon Kuenzer <simon.kuenzer@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190218125815.16685-1-simon.kuenzer@neclab.eu>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <4ed00bab-ab86-4126-f951-ef8ad1b4a981@neclab.eu>
Date: Mon, 18 Feb 2019 14:28:13 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190218125815.16685-1-simon.kuenzer@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH] plat/linuxu: Acknowledge all
 interrupts on controller
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gU2ltb24sCgpUaGlzIHBhdGNoIHNlZW1zIGZpbmUuCgpSZXZpZXdlZC1ieTogU2hhcmFu
IFNhbnRoYW5hbSA8c2hhcmFuLnNhbnRoYW5hbUBuZWNsYWIuZXU+CgpUaGFua3MgJiBSZWdhcmRz
ClNoYXJhbgoKT24gMi8xOC8xOSAxOjU4IFBNLCBTaW1vbiBLdWVuemVyIHdyb3RlOgo+IExpa2Ug
b24gcGxhdC9rdm0sIHdlIGFja25vd2xlZGdlIGludGVycnVwdHMgZXZlbiBpbiB0aGUKPiBjYXNl
IHdoZW4gdGhlcmUgd2FzIG5vIGhhbmRsZXIgZm9yIGl0LiBXZSBkbyB0aGlzIHRvIGdldAo+IHNp
bWlsYXIgcGxhdGZvcm0gYmVoYXZpb3VyLgo+IAo+IFNpZ25lZC1vZmYtYnk6IFNpbW9uIEt1ZW56
ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1Pgo+IC0tLQo+ICAgcGxhdC9saW51eHUvaXJxLmMg
fCAxNyArKysrKysrKystLS0tLS0tLQo+ICAgMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygr
KSwgOCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvcGxhdC9saW51eHUvaXJxLmMgYi9w
bGF0L2xpbnV4dS9pcnEuYwo+IGluZGV4IGU3NDM1YjM0Li5mMmIxOGE4NSAxMDA2NDQKPiAtLS0g
YS9wbGF0L2xpbnV4dS9pcnEuYwo+ICsrKyBiL3BsYXQvbGludXh1L2lycS5jCj4gQEAgLTEyMywx
OSArMTIzLDIwIEBAIGFzbSgiX19yZXN0b3Jlcjptb3YgcjcsICMweDc3XG5zdmMgMHgwIik7Cj4g
ICBzdGF0aWMgdm9pZCBfaXJxX2hhbmRsZShpbnQgaXJxKQo+ICAgewo+ICAgCXN0cnVjdCBpcnFf
aGFuZGxlciAqaDsKPiAtCWludCBoYW5kbGVkID0gMDsKPiAgIAo+ICAgCVVLX0FTU0VSVChpcnEg
Pj0gMCAmJiBpcnEgPCBJUlFTX05VTSk7Cj4gICAKPiAgIAlVS19TTElTVF9GT1JFQUNIKGgsICZp
cnFfaGFuZGxlcnNbaXJxXSwgZW50cmllcykgewo+IC0JCWlmIChoLT5mdW5jKGgtPmFyZykgPT0g
MSkgewo+IC0JCQloYW5kbGVkID0gMTsKPiAtCQkJYnJlYWs7Cj4gLQkJfQo+ICsJCWlmIChoLT5m
dW5jKGgtPmFyZykgPT0gMSkKPiArCQkJcmV0dXJuOwo+ICAgCX0KPiAtCj4gLQlpZiAoIWhhbmRs
ZWQpCj4gLQkJVUtfQ1JBU0goIlVuaGFuZGxlZCBpcnE9JWRcbiIsIGlycSk7Cj4gKwkvKgo+ICsJ
ICogSnVzdCB3YXJuIGFib3V0IHVuaGFuZGxlZCBpbnRlcnJ1cHRzLiBXZSBkbyB0aGlzIHRvCj4g
KwkgKiAoMSkgY29tcGVuc2F0ZSBwb3RlbnRpYWwgc3B1cmlvdXMgaW50ZXJydXB0cyBvZgo+ICsJ
ICogZGV2aWNlcywgYW5kICgyKSB0byBtaW5pbWl6ZSBpbXBhY3Qgb24gZHJpdmVycyB0aGF0IHNo
YXJlCj4gKwkgKiBvbmUgaW50ZXJydXB0IGxpbmUgdGhhdCB3b3VsZCB0aGVuIHN0YXkgZGlzYWJs
ZWQuCj4gKwkgKi8KPiArCXVrX3ByX2NyaXQoIlVuaGFuZGxlZCBpcnE9JWRcbiIsIGlycSk7Cj4g
ICB9Cj4gICAKPiAgIGludCB1a3BsYXRfaXJxX3JlZ2lzdGVyKHVuc2lnbmVkIGxvbmcgaXJxLCBp
cnFfaGFuZGxlcl9mdW5jX3QgZnVuYywgdm9pZCAqYXJnKQo+IAoKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApN
aW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0
Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Feb 18 14:32:29 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 18 Feb 2019 14:32:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gvjy8-0002TF-Vl; Mon, 18 Feb 2019 14:32:28 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=G8G1=QZ=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1gvjy7-0002TA-EI
 for minios-devel@lists.xen.org; Mon, 18 Feb 2019 14:32:27 +0000
X-Inumbo-ID: 01b46f6e-338a-11e9-bc90-bc764e045a96
Received: from queen.nlehd.de (unknown [195.37.154.80])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id 01b46f6e-338a-11e9-bc90-bc764e045a96;
 Mon, 18 Feb 2019 14:32:24 +0000 (UTC)
Received: from c414.ant-net (c414.ant-net [192.168.0.156])
 by queen.nlehd.de (Postfix) with ESMTP id E078640AE2;
 Mon, 18 Feb 2019 15:32:24 +0100 (CET)
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: minios-devel@lists.xen.org
Date: Mon, 18 Feb 2019 15:32:23 +0100
Message-Id: <20190218143223.23963-1-simon.kuenzer@neclab.eu>
X-Mailer: git-send-email 2.11.0
Subject: [Minios-devel] [UNIKRAFT/LWIP PATCH] sockets: Adopt to updated
 vfscore
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Simon Kuenzer <simon.kuenzer@neclab.eu>, yuri.volchkov@neclab.eu,
 sharan.santhanam@neclab.eu
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

QWRvcHRzIHRoZSBzb2NrZXRzIGdsdWUgaW1wbGVtZW50YXRpb24gdG8gdGhlIHVwZGF0ZWQgdmZz
Y29yZSBsaWJyYXJ5LgoKU2lnbmVkLW9mZi1ieTogU2ltb24gS3VlbnplciA8c2ltb24ua3Vlbnpl
ckBuZWNsYWIuZXU+Ci0tLQogaW5jbHVkZS9sd2lwb3B0cy5oIHwgIDEwICsrKysKIHNvY2tldHMu
YyAgICAgICAgICB8IDEzMiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0t
LS0tLS0tLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAxMDIgaW5zZXJ0aW9ucygrKSwgNDAgZGVs
ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9sd2lwb3B0cy5oIGIvaW5jbHVkZS9sd2lw
b3B0cy5oCmluZGV4IGM5NGMyM2QuLmM3MmMxNjEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbHdpcG9w
dHMuaAorKysgYi9pbmNsdWRlL2x3aXBvcHRzLmgKQEAgLTE5NCw2ICsxOTQsMTYgQEAgdm9pZCBz
eXNfZnJlZSh2b2lkICpwdHIpOwogI2RlZmluZSBGRF9TRVQKICNlbmRpZgogCisvKiBTdG9wIGx3
aXAgdG8gcHJvdmlkZSBpY292ZWMgKi8KKyNpbmNsdWRlIDxzeXMvdWlvLmg+CisKKy8qCisgKiBX
ZSBuZWVkIHRvIHN0b3AgbHdpcCBpbnRyb2R1Y2luZyBgc3RydWN0IGlvdmVjYCBiZWNhdXNlIGl0
IGlzIHByb3ZpZGVkIGJ5CisgKiBvdXIgbGliYyBhbHJlYWR5LiBUaGUgb25seSB3YXkgbHdpcCBh
bGxvd3MgdXMgdG8gZG8gdGhpcyBpcyB0byBkZWZpbmUgaW92ZWMKKyAqIGFzIGlvdmVjLiBUaGlz
IGtlZXBzIGRlcGVuZGluZyBkZWZpbml0aW9ucyBvZiBsd2lwIHN0aWxsIHdvcmtpbmcuCisgKi8K
KyNkZWZpbmUgaW92ZWMgaW92ZWMKKwogLyoKICAqIGRpc2FibGUgQlNELXN0eWxlIHNvY2tldCBp
bnRlcmZhY2UKICAqIFdlIHdpbGwgcHJvdmlkZSB0aGUgbGF5ZXIgd2l0aCBzb2NrZXQuY3x1bmlr
cmFmdApkaWZmIC0tZ2l0IGEvc29ja2V0cy5jIGIvc29ja2V0cy5jCmluZGV4IGJkZjIxYWQuLmZk
NmQ2MWEgMTAwNjQ0Ci0tLSBhL3NvY2tldHMuYworKysgYi9zb2NrZXRzLmMKQEAgLTM2LDYgKzM2
LDggQEAKIC8qIG5ldHdvcmsgc3R1YiBjYWxscyAqLwogI2luY2x1ZGUgPHN5cy90aW1lLmg+CiAj
aW5jbHVkZSA8dmZzY29yZS9maWxlLmg+CisjaW5jbHVkZSA8dmZzY29yZS9mcy5oPgorI2luY2x1
ZGUgPHZmc2NvcmUvdm5vZGUuaD4KICNpbmNsdWRlIDx1ay9hbGxvYy5oPgogI2luY2x1ZGUgPHVr
L2Vzc2VudGlhbHMuaD4KICNpbmNsdWRlIDx1ay9lcnJwdHIuaD4KQEAgLTY4LDk5ICs3MCwxNDkg
QEAgRVhJVDoKIAlyZXR1cm4gZmlsZTsKIH0KIAotc3RhdGljIGludCBzb2NrX2ZkX2FsbG9jKHN0
cnVjdCB2ZnNjb3JlX2ZvcHMgKmZvcHMsIGludCBzb2NrX2ZkKQorc3RhdGljIGludCBzb2NrX2Zk
X2FsbG9jKHN0cnVjdCB2bm9wcyAqdl9vcCwgaW50IHNvY2tfZmQpCiB7CiAJaW50IHJldCA9IDA7
CiAJaW50IHZmc19mZDsKIAlzdHJ1Y3Qgc29ja19uZXRfZmlsZSAqZmlsZSA9IE5VTEw7CisJc3Ry
dWN0IGRlbnRyeSAqc19kZW50cnk7CisJc3RydWN0IHZub2RlICpzX3Zub2RlOwogCi0JLyogQWxs
b2NhdGUgZmlsZSBkZXNjcmlwdG9yICovCisJLyogUmVzZXJ2ZSBmaWxlIGRlc2NyaXB0b3IgbnVt
YmVyICovCiAJdmZzX2ZkID0gdmZzY29yZV9hbGxvY19mZCgpOwogCWlmICh2ZnNfZmQgPCAwKSB7
CiAJCXJldCA9IC1FTkZJTEU7Ci0JCUxXSVBfREVCVUdGKFNPQ0tFVFNfREVCVUcsICgiZmFpbGVk
IHRvIGFsbG9jYXRlIHNvY2tldCBmZFxuIikpOwotCQlnb3RvIEVYSVQ7CisJCUxXSVBfREVCVUdG
KFNPQ0tFVFNfREVCVUcsCisJCQkgICAgKCJGYWlsZWQgdG8gYWxsb2NhdGUgZmlsZSBkZXNjcmlw
dG9yIG51bWJlclxuIikpOworCQlnb3RvIEVSUl9FWElUOwogCX0KIAotCWZpbGUgPSB1a19tYWxs
b2ModWtfYWxsb2NfZ2V0X2RlZmF1bHQoKSwgc2l6ZW9mKCpmaWxlKSk7CisJLyogQWxsb2NhdGUg
ZmlsZSwgZGVudHJ5LCBhbmQgdm5vZGUgKi8KKwlmaWxlID0gdWtfY2FsbG9jKHVrX2FsbG9jX2dl
dF9kZWZhdWx0KCksIDEsIHNpemVvZigqZmlsZSkpOwogCWlmICghZmlsZSkgewogCQlyZXQgPSAt
RU5PTUVNOwogCQlMV0lQX0RFQlVHRihTT0NLRVRTX0RFQlVHLAotCQkJICAgICgiZmFpbGVkIHRv
IGFsbG9jYXRlIHNvY2tldCBmZDogbm8gbWVtXG4iKSk7Ci0JCWdvdG8gVUtfTUVNX0FMTE9DX0VS
UjsKKwkJCSAgICAoIkZhaWxlZCB0byBhbGxvY2F0ZSBzb2NrZXQgZmlsZTogT3V0IG9mIG1lbW9y
eVxuIikpOworCQlnb3RvIEVSUl9NQUxMT0NfRklMRTsKIAl9Ci0JZmlsZS0+dmZzY29yZV9maWxl
LmZvcHMgPSBmb3BzOworCXNfZGVudHJ5ID0gdWtfY2FsbG9jKHVrX2FsbG9jX2dldF9kZWZhdWx0
KCksIDEsIHNpemVvZigqc19kZW50cnkpKTsKKwlpZiAoIXNfZGVudHJ5KSB7CisJCXJldCA9IC1F
Tk9NRU07CisJCUxXSVBfREVCVUdGKFNPQ0tFVFNfREVCVUcsCisJCQkgICAgKCJGYWlsZWQgdG8g
YWxsb2NhdGUgc29ja2V0IGRlbnRyeTogT3V0IG9mIG1lbW9yeVxuIikpOworCQlnb3RvIEVSUl9N
QUxMT0NfREVOVFJZOworCX0KKwlzX3Zub2RlID0gdWtfY2FsbG9jKHVrX2FsbG9jX2dldF9kZWZh
dWx0KCksIDEsIHNpemVvZigqc192bm9kZSkpOworCWlmICghc192bm9kZSkgeworCQlyZXQgPSAt
RU5PTUVNOworCQlMV0lQX0RFQlVHRihTT0NLRVRTX0RFQlVHLAorCQkJICAgICgiRmFpbGVkIHRv
IGFsbG9jYXRlIHNvY2tldCB2bm9kZTogT3V0IG9mIG1lbW9yeVxuIikpOworCQlnb3RvIEVSUl9N
QUxMT0NfVk5PREU7CisJfQorCisJLyogUHV0IHRoaW5ncyB0b2dldGhlciwgYW5kIGZpbGwgb3V0
IG5lY2Vzc2FyeSBmaWVsZHMgKi8KKwlmaWxlLT52ZnNjb3JlX2ZpbGUuZmQgPSB2ZnNfZmQ7CisJ
ZmlsZS0+dmZzY29yZV9maWxlLmZfZmxhZ3MgPSBGV1JJVEUgfCBGUkVBRDsKKwlmaWxlLT52ZnNj
b3JlX2ZpbGUuZl9jb3VudCA9IDE7CisJZmlsZS0+dmZzY29yZV9maWxlLmZfZGVudHJ5ID0gc19k
ZW50cnk7CisKKwlzX2RlbnRyeS0+ZF92bm9kZSA9IHNfdm5vZGU7CisKKwlzX3Zub2RlLT52X29w
ID0gdl9vcDsKKwl1a19tdXRleF9pbml0KCZzX3Zub2RlLT52X2xvY2spOworCXNfdm5vZGUtPnZf
cmVmY250ID0gMTsKKwlzX3Zub2RlLT52X2RhdGEgPSBmaWxlOworCiAJZmlsZS0+c29ja19mZCA9
IHNvY2tfZmQ7Ci0JTFdJUF9ERUJVR0YoU09DS0VUU19ERUJVRywgKCJhbGxvY2F0ZWQgc29ja2V0
ICVkICgleClcbiIsCisJTFdJUF9ERUJVR0YoU09DS0VUU19ERUJVRywgKCJBbGxvY2F0ZWQgc29j
a2V0ICVkICgleClcbiIsCiAJCQkJICAgIGZpbGUtPnZmc2NvcmVfZmlsZS5mZCwKIAkJCQkgICAg
ZmlsZS0+c29ja19mZCkpOworCiAJLyogU3RvcmluZyB0aGUgaW5mb3JtYXRpb24gd2l0aGluIHRo
ZSB2ZnMgc3RydWN0dXJlICovCi0JdmZzY29yZV9pbnN0YWxsX2ZkKHZmc19mZCwgJmZpbGUtPnZm
c2NvcmVfZmlsZSk7Ci0JcmV0ID0gdmZzX2ZkOwotRVhJVDoKLQlyZXR1cm4gcmV0OworCXJldCA9
IHZmc2NvcmVfaW5zdGFsbF9mZCh2ZnNfZmQsICZmaWxlLT52ZnNjb3JlX2ZpbGUpOworCWlmIChy
ZXQpIHsKKwkJTFdJUF9ERUJVR0YoU09DS0VUU19ERUJVRywKKwkJCSAgICAoIkZhaWxlZCB0byBp
bnN0YWxsIHNvY2tldCBmZFxuIikpOworCQlnb3RvIEVSUl9WRlNfSU5TVEFMTDsKKwl9CisKKwkv
KiBSZXR1cm4gZmlsZSBkZXNjcmlwdG9yIG9mIG91ciBzb2NrZXQgKi8KKwlyZXR1cm4gdmZzX2Zk
OwogCi1VS19NRU1fQUxMT0NfRVJSOgorRVJSX1ZGU19JTlNUQUxMOgorCXVrX2ZyZWUodWtfYWxs
b2NfZ2V0X2RlZmF1bHQoKSwgc192bm9kZSk7CitFUlJfTUFMTE9DX1ZOT0RFOgorCXVrX2ZyZWUo
dWtfYWxsb2NfZ2V0X2RlZmF1bHQoKSwgc19kZW50cnkpOworRVJSX01BTExPQ19ERU5UUlk6CisJ
dWtfZnJlZSh1a19hbGxvY19nZXRfZGVmYXVsdCgpLCBmaWxlKTsKK0VSUl9NQUxMT0NfRklMRToK
IAl2ZnNjb3JlX3B1dF9mZCh2ZnNfZmQpOwotCWdvdG8gRVhJVDsKK0VSUl9FWElUOgorCVVLX0FT
U0VSVChyZXQgPCAwKTsKKwlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgaW50IHNvY2tfbmV0X2Ns
b3NlKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKnZmc2NvcmVfZmlsZSkKK3N0YXRpYyBpbnQgc29ja19u
ZXRfY2xvc2Uoc3RydWN0IHZub2RlICpzX3Zub2RlLAorCQkJICBzdHJ1Y3QgdmZzY29yZV9maWxl
ICp2ZnNjb3JlX2ZpbGUgX19tYXliZV91bnVzZWQpCiB7CiAJaW50IHJldCA9IDA7CiAJc3RydWN0
IHNvY2tfbmV0X2ZpbGUgKmZpbGUgPSBOVUxMOwogCi0JZmlsZSA9IF9fY29udGFpbmVyb2YodmZz
Y29yZV9maWxlLCBzdHJ1Y3Qgc29ja19uZXRfZmlsZSwgdmZzY29yZV9maWxlKTsKLQorCWZpbGUg
PSBzX3Zub2RlLT52X2RhdGE7CiAJTFdJUF9ERUJVR0YoU09DS0VUU19ERUJVRywgKCJjbG9zZSAl
ZCAoJXgpXG4iLAogCQkJCSAgICBmaWxlLT52ZnNjb3JlX2ZpbGUuZmQsCiAJCQkJICAgIGZpbGUt
PnNvY2tfZmQpKTsKIAorCVVLX0FTU0VSVCh2ZnNjb3JlX2ZpbGUtPmZfZGVudHJ5LT5kX3Zub2Rl
ID09IHNfdm5vZGUpOworCiAJLyogQ2xvc2UgYW5kIHJlbGVhc2UgdGhlIGx3aXAgc29ja2V0ICov
CiAJcmV0ID0gbHdpcF9jbG9zZShmaWxlLT5zb2NrX2ZkKTsKLQkvKiBSZWxlYXNlIHRoZSBmaWxl
IGRlc2NyaXB0b3IgKi8KKwkvKiBSZWxlYXNlIHRoZSBmaWxlIGRlc2NyaXB0b3IgbnVtYmVyICov
CiAJdmZzY29yZV9wdXRfZmQoZmlsZS0+dmZzY29yZV9maWxlLmZkKTsKLQkvKiBGcmVlIHRoZSBz
b2NrIG5ldCBzdHJ1Y3R1cmUgKi8KKwkvKiBGcmVlIHNvY2tldCB2bm9kZSAqLworCXVrX2ZyZWUo
dWtfYWxsb2NfZ2V0X2RlZmF1bHQoKSwgZmlsZS0+dmZzY29yZV9maWxlLmZfZGVudHJ5LT5kX3Zu
b2RlKTsKKwkvKiBGcmVlIHNvY2tldCBkZW50cnkgKi8KKwl1a19mcmVlKHVrX2FsbG9jX2dldF9k
ZWZhdWx0KCksIGZpbGUtPnZmc2NvcmVfZmlsZS5mX2RlbnRyeSk7CisJLyogRnJlZSBzb2NrZXQg
ZmlsZSAqLwogCXVrX2ZyZWUodWtfYWxsb2NfZ2V0X2RlZmF1bHQoKSwgZmlsZSk7CiAJcmV0dXJu
IHJldDsKIH0KIAotc3RhdGljIHNzaXplX3Qgc29ja19uZXRfd3JpdGUoc3RydWN0IHZmc2NvcmVf
ZmlsZSAqdmZzY29yZV9maWxlLAotCQkJICAgICAgY29uc3Qgdm9pZCAqYnVmLCBzaXplX3QgY291
bnQpCitzdGF0aWMgc3NpemVfdCBzb2NrX25ldF93cml0ZShzdHJ1Y3Qgdm5vZGUgKnNfdm5vZGUs
CisJCQkgICAgICBzdHJ1Y3QgdWlvICpidWYsIGludCBpb2ZsYWcgX191bnVzZWQpCiB7CiAJaW50
IHJldCA9IDA7CiAJc3RydWN0IHNvY2tfbmV0X2ZpbGUgKmZpbGUgPSBOVUxMOwogCi0JZmlsZSA9
IF9fY29udGFpbmVyb2YodmZzY29yZV9maWxlLCBzdHJ1Y3Qgc29ja19uZXRfZmlsZSwKLQkJCSAg
ICAgdmZzY29yZV9maWxlKTsKLQlMV0lQX0RFQlVHRihTT0NLRVRTX0RFQlVHLCAoIndyaXRlICVk
ICgleCk6JXNcbiIsCisJZmlsZSA9IHNfdm5vZGUtPnZfZGF0YTsKKwlMV0lQX0RFQlVHRihTT0NL
RVRTX0RFQlVHLCAoIiVzIGZkOiVkIGx3aXBfZmQ6JWRcbiIsCisJCQkJICAgIF9fZnVuY19fLAog
CQkJCSAgICBmaWxlLT52ZnNjb3JlX2ZpbGUuZmQsCi0JCQkJICAgIGZpbGUtPnNvY2tfZmQsCi0J
CQkJICAgIChjaGFyICopIGJ1ZikpOwotCXJldCA9IGx3aXBfd3JpdGUoZmlsZS0+c29ja19mZCwg
YnVmLCBjb3VudCk7CisJCQkJICAgIGZpbGUtPnNvY2tfZmQpKTsKKwlyZXQgPSBsd2lwX3dyaXRl
dihmaWxlLT5zb2NrX2ZkLCBidWYtPnVpb19pb3YsIGJ1Zi0+dWlvX2lvdmNudCk7CiAJcmV0dXJu
IHJldDsKIH0KIAotc3RhdGljIHNzaXplX3Qgc29ja19uZXRfcmVhZChzdHJ1Y3QgdmZzY29yZV9m
aWxlICp2ZnNjb3JlX2ZpbGUsIHZvaWQgKmJ1ZiwKLQkJCSAgICBzaXplX3QgY291bnQpCitzdGF0
aWMgc3NpemVfdCBzb2NrX25ldF9yZWFkKHN0cnVjdCB2bm9kZSAqc192bm9kZSwKKwkJCSAgICAg
c3RydWN0IHZmc2NvcmVfZmlsZSAqdmZzY29yZV9maWxlIF9fdW51c2VkLAorCQkJICAgICBzdHJ1
Y3QgdWlvICpidWYsIGludCBpb2ZsYWcgX191bnVzZWQpCiB7CiAJaW50IHJldCA9IDA7CiAJc3Ry
dWN0IHNvY2tfbmV0X2ZpbGUgKmZpbGUgPSBOVUxMOwogCi0JZmlsZSA9IF9fY29udGFpbmVyb2Yo
dmZzY29yZV9maWxlLCBzdHJ1Y3Qgc29ja19uZXRfZmlsZSwKLQkJCSAgICAgdmZzY29yZV9maWxl
KTsKLQlMV0lQX0RFQlVHRihTT0NLRVRTX0RFQlVHLCAoIndyaXRlICVkICgleCk6JXNcbiIsCisJ
ZmlsZSA9IHNfdm5vZGUtPnZfZGF0YTsKKwlMV0lQX0RFQlVHRihTT0NLRVRTX0RFQlVHLCAoIiVz
IGZkOiVkIGx3aXBfZmQ6JWRcbiIsCisJCQkJICAgIF9fZnVuY19fLAogCQkJCSAgICBmaWxlLT52
ZnNjb3JlX2ZpbGUuZmQsCi0JCQkJICAgIGZpbGUtPnNvY2tfZmQsCi0JCQkJICAgIChjaGFyICop
IGJ1ZikpOwotCXJldCA9IGx3aXBfcmVhZChmaWxlLT5zb2NrX2ZkLCBidWYsIGNvdW50KTsKKwkJ
CQkgICAgZmlsZS0+c29ja19mZCkpOworCXJldCA9IGx3aXBfcmVhZHYoZmlsZS0+c29ja19mZCwg
YnVmLT51aW9faW92LCBidWYtPnVpb19pb3ZjbnQpOwogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRp
YyBzdHJ1Y3QgdmZzY29yZV9mb3BzIHNvY2tfbmV0X2ZvcHMgPSB7Ci0JLmNsb3NlID0gc29ja19u
ZXRfY2xvc2UsCi0JLndyaXRlID0gc29ja19uZXRfd3JpdGUsCi0JLnJlYWQgID0gc29ja19uZXRf
cmVhZCwKK3N0YXRpYyBzdHJ1Y3Qgdm5vcHMgc29ja19uZXRfZm9wcyA9IHsKKwkudm9wX2Nsb3Nl
ID0gc29ja19uZXRfY2xvc2UsCisJLnZvcF93cml0ZSA9IHNvY2tfbmV0X3dyaXRlLAorCS52b3Bf
cmVhZCAgPSBzb2NrX25ldF9yZWFkLAogfTsKIAogaW50IHNvY2tldChpbnQgZG9tYWluLCBpbnQg
dHlwZSwgaW50IHByb3RvY29sKQotLSAKMi4xMS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3Mt
ZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9t
YWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Feb 18 14:55:05 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 18 Feb 2019 14:55:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gvkJz-0004PC-ML; Mon, 18 Feb 2019 14:55:03 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=odxU=QZ=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gvkJy-0004P7-Io
 for minios-devel@lists.xen.org; Mon, 18 Feb 2019 14:55:02 +0000
X-Inumbo-ID: 2a871bce-338d-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 2a871bce-338d-11e9-bc90-bc764e045a96;
 Mon, 18 Feb 2019 14:55:01 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 9C774104E0C;
 Mon, 18 Feb 2019 15:55:00 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id i-etkoO_kIPj; Mon, 18 Feb 2019 15:55:00 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 7B76D104BE1
 for <minios-devel@lists.xen.org>; Mon, 18 Feb 2019 15:54:58 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 18 Feb 2019 15:54:58 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Mon, 18 Feb 2019 15:54:19 +0100
Message-ID: <20190218145440.30580-2-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190218145440.30580-1-yuri.volchkov@neclab.eu>
References: <20190218145440.30580-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v4 01/22] include/uk: introduce
 __weak_alias macro
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: simon.kuenzer@neclab.eu, sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+ClJl
dmlld2VkLWJ5OiBTaGFyYW4gU2FudGhhbmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xhYi5ldT4K
LS0tCiBpbmNsdWRlL3VrL2Vzc2VudGlhbHMuaCB8IDEwICsrKysrKysrKysKIDEgZmlsZSBjaGFu
Z2VkLCAxMCBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91ay9lc3NlbnRpYWxz
LmggYi9pbmNsdWRlL3VrL2Vzc2VudGlhbHMuaAppbmRleCAzYzE2ZTMwOC4uNDdlMDRmN2MgMTAw
NjQ0Ci0tLSBhL2luY2x1ZGUvdWsvZXNzZW50aWFscy5oCisrKyBiL2luY2x1ZGUvdWsvZXNzZW50
aWFscy5oCkBAIC03Niw2ICs3NiwxNiBAQCBleHRlcm4gIkMiIHsKICNpZm5kZWYgX19hbGlnbgog
I2RlZmluZSBfX2FsaWduKGJ5dGVzKSAgICAgICAgIF9fYXR0cmlidXRlX18oKGFsaWduZWQoYnl0
ZXMpKSkKICNlbmRpZgorLyogTk9URTogd2VhayBhbGlhc2luZyBkb2VzIG5vdCB3b3JrIHdlbGwg
d2l0aCBsaW5rLXRpbWUgb3B0aW1pemF0aW9uCisgKiBjdXJyZW50bHkuIEhvcGVmdWxseSB0aGlz
IHdpbGwgYmUgZml4ZWQgaW4gZ2NjIDkuIFRoZSBwcm9ibGVtIGlzLAorICogaWYgYSB3ZWFrIHN5
bWJvbCBpcyByZWZlcmVuY2VkIGluIHRoZSBsaWJyYXJ5LCBnY2MgcmVzb2x2ZXMgY2FsbHMKKyAq
IHRvIHRoYXQgd2VhayBzeW1ib2wgZHVyaW5nIHRoZSBmaXJzdCByb3VuZCBvZiBsaW5raW5nLiBF
dmVuIGlmIGEKKyAqIHN0cm9uZyBzeW1ib2wgaXMgcHJvdmlkZWQgaW4gdGhlIG90aGVyIGxpYnJh
cnkuCisgKi8KKyNpZm5kZWYgX193ZWFrX2FsaWFzCisjZGVmaW5lIF9fd2Vha19hbGlhcyhvbGQs
IG5ldykgXAorCWV4dGVybiBfX3R5cGVvZihvbGQpIG5ldyBfX2F0dHJpYnV0ZV9fKCh3ZWFrLCBh
bGlhcygjb2xkKSkpCisjZW5kaWYKIAogLyoqCiAgICogTWFyayBhIGZ1bmN0aW9uIGFzIGNvbnN0
cnVjdG9yCi0tIAoyLjE5LjIKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54
ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGlu
Zm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Feb 18 14:55:06 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 18 Feb 2019 14:55:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gvkK2-0004QI-Nu; Mon, 18 Feb 2019 14:55:06 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=odxU=QZ=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gvkK1-0004Px-QH
 for minios-devel@lists.xen.org; Mon, 18 Feb 2019 14:55:05 +0000
X-Inumbo-ID: 2c1e7a1c-338d-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 2c1e7a1c-338d-11e9-bc90-bc764e045a96;
 Mon, 18 Feb 2019 14:55:04 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 3829CF204F;
 Mon, 18 Feb 2019 15:55:03 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id tLRExYlE-OjM; Mon, 18 Feb 2019 15:55:03 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 0C1B5F202E
 for <minios-devel@lists.xen.org>; Mon, 18 Feb 2019 15:55:01 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 18 Feb 2019 15:55:00 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Mon, 18 Feb 2019 15:54:20 +0100
Message-ID: <20190218145440.30580-3-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190218145440.30580-1-yuri.volchkov@neclab.eu>
References: <20190218145440.30580-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v4 02/22] lib/nolibc: import mount.h
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: simon.kuenzer@neclab.eu, sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

dGFnOiB2MS4xLjIwCmNvbW1pdDogMGZhMWU2MzhlODdjZjI1N2U5Zjk2YjQwMTliMjA3NmFmZDY3
NGExOQoKU2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIu
ZXU+ClJldmlld2VkLWJ5OiBTaGFyYW4gU2FudGhhbmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xh
Yi5ldT4KLS0tCiBsaWIvbm9saWJjL2luY2x1ZGUvc3lzL21vdW50LmggfCA3NCArKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgNzQgaW5zZXJ0aW9ucygr
KQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9ub2xpYmMvaW5jbHVkZS9zeXMvbW91bnQuaAoKZGlm
ZiAtLWdpdCBhL2xpYi9ub2xpYmMvaW5jbHVkZS9zeXMvbW91bnQuaCBiL2xpYi9ub2xpYmMvaW5j
bHVkZS9zeXMvbW91bnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uNTdh
ODljMDkKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvbm9saWJjL2luY2x1ZGUvc3lzL21vdW50LmgK
QEAgLTAsMCArMSw3NCBAQAorI2lmbmRlZiBfU1lTX01PVU5UX0gKKyNkZWZpbmUgX1NZU19NT1VO
VF9ICisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworI2luY2x1
ZGUgPHN5cy9pb2N0bC5oPgorCisjZGVmaW5lIEJMS1JPU0VUICAgX0lPKDB4MTIsIDkzKQorI2Rl
ZmluZSBCTEtST0dFVCAgIF9JTygweDEyLCA5NCkKKyNkZWZpbmUgQkxLUlJQQVJUICBfSU8oMHgx
MiwgOTUpCisjZGVmaW5lIEJMS0dFVFNJWkUgX0lPKDB4MTIsIDk2KQorI2RlZmluZSBCTEtGTFNC
VUYgIF9JTygweDEyLCA5NykKKyNkZWZpbmUgQkxLUkFTRVQgICBfSU8oMHgxMiwgOTgpCisjZGVm
aW5lIEJMS1JBR0VUICAgX0lPKDB4MTIsIDk5KQorI2RlZmluZSBCTEtGUkFTRVQgIF9JTygweDEy
LDEwMCkKKyNkZWZpbmUgQkxLRlJBR0VUICBfSU8oMHgxMiwxMDEpCisjZGVmaW5lIEJMS1NFQ1RT
RVQgX0lPKDB4MTIsMTAyKQorI2RlZmluZSBCTEtTRUNUR0VUIF9JTygweDEyLDEwMykKKyNkZWZp
bmUgQkxLU1NaR0VUICBfSU8oMHgxMiwxMDQpCisjZGVmaW5lIEJMS0JTWkdFVCAgX0lPUigweDEy
LDExMixzaXplX3QpCisjZGVmaW5lIEJMS0JTWlNFVCAgX0lPVygweDEyLDExMyxzaXplX3QpCisj
ZGVmaW5lIEJMS0dFVFNJWkU2NCBfSU9SKDB4MTIsMTE0LHNpemVfdCkKKworI2RlZmluZSBNU19S
RE9OTFkgICAgICAxCisjZGVmaW5lIE1TX05PU1VJRCAgICAgIDIKKyNkZWZpbmUgTVNfTk9ERVYg
ICAgICAgNAorI2RlZmluZSBNU19OT0VYRUMgICAgICA4CisjZGVmaW5lIE1TX1NZTkNIUk9OT1VT
IDE2CisjZGVmaW5lIE1TX1JFTU9VTlQgICAgIDMyCisjZGVmaW5lIE1TX01BTkRMT0NLICAgIDY0
CisjZGVmaW5lIE1TX0RJUlNZTkMgICAgIDEyOAorI2RlZmluZSBNU19OT0FUSU1FICAgICAxMDI0
CisjZGVmaW5lIE1TX05PRElSQVRJTUUgIDIwNDgKKyNkZWZpbmUgTVNfQklORCAgICAgICAgNDA5
NgorI2RlZmluZSBNU19NT1ZFICAgICAgICA4MTkyCisjZGVmaW5lIE1TX1JFQyAgICAgICAgIDE2
Mzg0CisjZGVmaW5lIE1TX1NJTEVOVCAgICAgIDMyNzY4CisjZGVmaW5lIE1TX1BPU0lYQUNMICAg
ICgxPDwxNikKKyNkZWZpbmUgTVNfVU5CSU5EQUJMRSAgKDE8PDE3KQorI2RlZmluZSBNU19QUklW
QVRFICAgICAoMTw8MTgpCisjZGVmaW5lIE1TX1NMQVZFICAgICAgICgxPDwxOSkKKyNkZWZpbmUg
TVNfU0hBUkVEICAgICAgKDE8PDIwKQorI2RlZmluZSBNU19SRUxBVElNRSAgICAoMTw8MjEpCisj
ZGVmaW5lIE1TX0tFUk5NT1VOVCAgICgxPDwyMikKKyNkZWZpbmUgTVNfSV9WRVJTSU9OICAgKDE8
PDIzKQorI2RlZmluZSBNU19TVFJJQ1RBVElNRSAoMTw8MjQpCisjZGVmaW5lIE1TX0xBWllUSU1F
ICAgICgxPDwyNSkKKyNkZWZpbmUgTVNfTk9SRU1PVEVMT0NLICgxPDwyNykKKyNkZWZpbmUgTVNf
Tk9TRUMgICAgICAgKDE8PDI4KQorI2RlZmluZSBNU19CT1JOICAgICAgICAoMTw8MjkpCisjZGVm
aW5lIE1TX0FDVElWRSAgICAgICgxPDwzMCkKKyNkZWZpbmUgTVNfTk9VU0VSICAgICAgKDFVPDwz
MSkKKworI2RlZmluZSBNU19STVRfTUFTSyAoTVNfUkRPTkxZfE1TX1NZTkNIUk9OT1VTfE1TX01B
TkRMT0NLfE1TX0lfVkVSU0lPTnxNU19MQVpZVElNRSkKKworI2RlZmluZSBNU19NR0NfVkFMIDB4
YzBlZDAwMDAKKyNkZWZpbmUgTVNfTUdDX01TSyAweGZmZmYwMDAwCisKKyNkZWZpbmUgTU5UX0ZP
UkNFICAgICAgIDEKKyNkZWZpbmUgTU5UX0RFVEFDSCAgICAgIDIKKyNkZWZpbmUgTU5UX0VYUElS
RSAgICAgIDQKKyNkZWZpbmUgVU1PVU5UX05PRk9MTE9XIDgKKworaW50IG1vdW50KGNvbnN0IGNo
YXIgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIHVuc2lnbmVkIGxvbmcsIGNvbnN0IHZv
aWQgKik7CitpbnQgdW1vdW50KGNvbnN0IGNoYXIgKik7CitpbnQgdW1vdW50Mihjb25zdCBjaGFy
ICosIGludCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZgotLSAK
Mi4xOS4yCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
TWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5v
cmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1k
ZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Feb 18 14:55:06 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 18 Feb 2019 14:55:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gvkK2-0004QN-Pi; Mon, 18 Feb 2019 14:55:06 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=odxU=QZ=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gvkK1-0004Py-SJ
 for minios-devel@lists.xen.org; Mon, 18 Feb 2019 14:55:05 +0000
X-Inumbo-ID: 2927def2-338d-11e9-8504-f3fe7e60bd34
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 2927def2-338d-11e9-8504-f3fe7e60bd34;
 Mon, 18 Feb 2019 14:54:59 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 1D7FFF2050;
 Mon, 18 Feb 2019 15:54:58 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id IkI3T-JLySJQ; Mon, 18 Feb 2019 15:54:57 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id E33E5F204F
 for <minios-devel@lists.xen.org>; Mon, 18 Feb 2019 15:54:55 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 18 Feb 2019 15:54:55 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Mon, 18 Feb 2019 15:54:18 +0100
Message-ID: <20190218145440.30580-1-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v4 00/22] import vfs from OSv
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: simon.kuenzer@neclab.eu, sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhpcyBzZXJpZXMgaXMgYW4gaW5pdGlhbCBpbXBvcnQuIEkgdHJ5aWVkIHRvIGtlZXAgYW1tb3Vu
dCBvZgptb2RpZmljYXRpb25zIHNtYWxsLiBBbmQgZmFpbGVkLgoKU2VyaWVzIGhhcyBhIGxvdCBv
ZiBzdHlsZSBwcm9ibGVtcy4gQnV0IGZpeGluZyBzdHlsZSB3b3VsZCBibG93IGl0CmV2ZW4gbW9y
ZS4gSSB3aWxsIHByb3ZpZGUgZm9sbG93LXVwcyBjbGVhbmluZyB1cCB0aGlzIG1lc3MuCgpBbmQg
c29ycnkgZm9yIHRoZSBwYXRjaCBzaXplcy4gQXQgbGVhc3QgdGhlc2UgaHVnZSBwYXRjaGVzIGNv
bnRhaW4gb25seQptZWNoYW5pY2FsIG1vZGlmaWNhdGlvbnMgKGUuZy4gbmV3IC0+IG1hbGxvYywg
ZGVsZXRlIC0+IGZyZWUsCnJlcGxhY2luZyBPU3YgZnVuY3Rpb25zIHdpdGggVW5pa3JhZnQgYW5h
bG9ndWVzKS4gSSBob3BlIHRoaXMgaGVscHMuCgpDaGFuZ2VzIHNpbmNlIHYxOgogLSByZWJhc2Ug
dG8gdGhlIGN1cnJlbnQgInN0YWdpbmciIGJyYW5jaAogLSB1cGRhdGUgbGljZW5zZSBoZWFkZXJz
KioqIFNVQkpFQ1QgSEVSRSAqKioKCkNoYW5nZXMgc2luY2UgdjI6CiAtIGFkZCB1bmxpbmsgdG8g
ZXhwb3J0cyBhbmQgdG8gbm9saWJjIHByb3RvdHlwZXMKIC0gYWRkIG5vdGUgYWJvdXQgd2VhayBh
bGlhcyBhbmQgTFRPCiAtIGZpeCBjb21waWxhdGlvbiBwcm9ibGVtcyBpbiB0aGUgbWlkZGxlIG9m
IHRoZSBzZXJpZXMKCkNoYW5nZXMgc2luY2UgdjM6CiAtIGZpeCB1bml0aWFsaXplZCBtdXRleGVz
CiAtIGZpeCBmb3Jnb3R0ZW4gdG8gdW5sb2NrIG11dGV4CiAtIGRlY3Jlc3MgcmVjbnQgYXQgdmZz
Y29yZV9wdXRfZmQKIC0gY3Jhc2ggYXQgZGV2aWNlX29wZW4gYW5kIGRldmljZV9jbG9zZQogLSBy
ZW1vdmUgdGhlIHBhdGNoICJrZWVwIHZub2RlIGxvY2tlZCBkdXJpbmcgZHJlbGUgY2FsbCIKIApZ
dXJpIFZvbGNoa292ICgyMik6CiAgaW5jbHVkZS91azogaW50cm9kdWNlIF9fd2Vha19hbGlhcyBt
YWNybwogIGxpYi9ub2xpYmM6IGltcG9ydCBtb3VudC5oCiAgbGliL25vbGliYzogYWRhcHQgbW91
bnQuaCB0byBVbmlrcmFmdAogIGxpYi92ZnNjb3JlOiBJbml0aWFsIGltcG9ydCBvZiBPU3YgdmZz
CiAgbGliL3Zmc2NvcmU6IHRhYmlmeSBpbXBvcnRlZCB2ZnMgY29kZQogIGxpYi92ZnNjb3JlOiB1
cGRhdGUgbGljZW5zZSBoZWFkZXIgZm9yIGltcG9ydGVkIGZpbGVzCiAgbGliL3Zmc2NvcmU6IHJl
bW92ZSBvYnZpb3VzIGMrK2lzbXMgYW5kIGlycmVsZXZhbnQgY29kZQogIGxpYi92ZnNjb3JlOiB1
c2UgVW5pa3JhZnQgaW5jbHVkZXMKICBsaWIvdmZzY29yZTogdXNlIFVuaWtyYWZ0IHR5cGVzIGFu
ZCBmdW5jdGlvbnMKICBsaWIvdmZzY29yZTogYWRkIHV0aWxpdHkgZnVuY3MmZGVmcyB0byBzdXBw
b3J0IGltcG9ydGVkCiAgbGliL3Zmc2NvcmU6IGludHJvZHVjZSBVS19GU19SRUdJU1RFUgogIGxp
Yi92ZnNjb3JlOiBwcmVmaXggZXhwb3J0ZWQgZnVuY3Rpb25zCiAgbGliL3Zmc2NvcmU6IGludHJv
ZHVjZSBmZ2V0LCBmZHJvcCwgZmRhbGxvYwogIGxpYi92ZnNjb3JlOiBhZGQgbmVjZXNzYXJ5IGZp
ZWxkIGluIHZmc2NvcmVfZmlsZQogIGxpYi92ZnNjb3JlOiByZW1vdmUgX0tFUk5FTCBpZmRlZnMK
ICBsaWIvdmZzY29yZTogaW50cm9kdWNlIGZkY2xvc2UKICBsaWIvdmZzY29yZTogYWRkIG5lY2Vz
c2FyeSBpbnRlcm5hbCBwcm90b3R5cGVzCiAgbGliL3Zmc2NvcmU6IGZpeCBjb21waWxlciBjb21w
bGFpbnMKICBsaWIvdmZzY29yZTogYWRkIG1haW4gY29uc3RydWN0b3IKICBsaWIvbm9saWJjOiBh
ZGQgcHJvdG90eXBlcyBmb3IgZnVuY3Rpb25zIGZyb20gdmZzY29yZQogIGxpYi92ZnNjb3JlOiBy
ZS1pbXBsZW1lbnQgc3RkaW8gYW5kIGVuYWJsZSBuZXcgY29kZQogIGxpYi92ZnNjb3JlOiByZW1v
dmUgc3lzIHByZWZpeCBmcm9tIHZmcyBhcGkgZnVuY3Rpb25zCgogaW5jbHVkZS91ay9lc3NlbnRp
YWxzLmggICAgICAgICAgICAgICAgICAgICAgIHwgICAxMCArCiBsaWIvbm9saWJjL2luY2x1ZGUv
c3lzL21vdW50LmggICAgICAgICAgICAgICAgfCAgMTA5ICsKIGxpYi9ub2xpYmMvaW5jbHVkZS9z
eXMvdWlvLmggICAgICAgICAgICAgICAgICB8ICAgMzUgKwogbGliL25vbGliYy9pbmNsdWRlL3Vu
aXN0ZC5oICAgICAgICAgICAgICAgICAgIHwgICAgNiArCiBsaWIvdmZzY29yZS9Db25maWcudWsg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKIGxpYi92ZnNjb3JlL01ha2VmaWxlLnVr
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTEgKwogbGliL3Zmc2NvcmUvZGVudHJ5LmMgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgIDIzNiArKwogbGliL3Zmc2NvcmUvZXhwb3J0c3ltcy51
ayAgICAgICAgICAgICAgICAgICAgIHwgICAyNyArCiBsaWIvdmZzY29yZS9leHRyYS5sZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgICA5ICsKIGxpYi92ZnNjb3JlL2ZkLmMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgNzEgKy0KIGxpYi92ZnNjb3JlL2ZpbGUuYyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgNjEgKy0KIGxpYi92ZnNjb3JlL2ZvcHMuYyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAxNDAgKysKIC4uLi9pbmNsdWRlL3Zmc2NvcmUvZGVudHJ5
Lmh9ICAgICAgICAgICAgICAgICB8ICAgNDQgKy0KIGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29y
ZS9maWxlLmggICAgICAgICAgICB8ICAgMTcgKy0KIGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29y
ZS9mcy5oICAgICAgICAgICAgICB8ICAgMjggKwogbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3Jl
L21vdW50LmggICAgICAgICAgIHwgIDE0NSArKwogLi4uL2luY2x1ZGUvdmZzY29yZS9wcmV4Lmh9
ICAgICAgICAgICAgICAgICAgIHwgICAzOCArLQogbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3Jl
L3Vpby5oICAgICAgICAgICAgIHwgICA2MiArCiBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUv
dm5vZGUuaCAgICAgICAgICAgfCAgMjYzICsrKwogbGliL3Zmc2NvcmUvbG9va3VwLmMgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgIDM3NSArKysKIGxpYi92ZnNjb3JlL21haW4uYyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8IDIwNTMgKysrKysrKysrKysrKysrKysKIGxpYi92ZnNjb3Jl
L21vdW50LmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0OTMgKysrKwogbGliL3Zmc2Nv
cmUvc3RkaW8uYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA3MyArLQogbGliL3Zmc2Nv
cmUvc3Vicl91aW8uYyAgICAgICAgICAgICAgICAgICAgICAgIHwgICA3OCArCiBsaWIvdmZzY29y
ZS9zeXNjYWxscy5jICAgICAgICAgICAgICAgICAgICAgICAgfCAxNTEyICsrKysrKysrKysrKwog
bGliL3Zmc2NvcmUvdGFzay5jICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE1NCArKwog
bGliL3Zmc2NvcmUvdmZzLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE2OSArKwog
bGliL3Zmc2NvcmUvdm5vZGUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDUzMCArKysr
KwogMjggZmlsZXMgY2hhbmdlZCwgNjYyMiBpbnNlcnRpb25zKCspLCAxMjggZGVsZXRpb25zKC0p
CiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL25vbGliYy9pbmNsdWRlL3N5cy9tb3VudC5oCiBjcmVh
dGUgbW9kZSAxMDA2NDQgbGliL3Zmc2NvcmUvZGVudHJ5LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBs
aWIvdmZzY29yZS9leHRyYS5sZAogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi92ZnNjb3JlL2ZvcHMu
YwogY29weSBsaWIve25vbGliYy9pbmNsdWRlL3VuaXN0ZC5oID0+IHZmc2NvcmUvaW5jbHVkZS92
ZnNjb3JlL2RlbnRyeS5ofSAoNzAlKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi92ZnNjb3JlL2lu
Y2x1ZGUvdmZzY29yZS9mcy5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3Zmc2NvcmUvaW5jbHVk
ZS92ZnNjb3JlL21vdW50LmgKIGNvcHkgbGliL3tub2xpYmMvaW5jbHVkZS91bmlzdGQuaCA9PiB2
ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9wcmV4Lmh9ICg3NSUpCiBjcmVhdGUgbW9kZSAxMDA2NDQg
bGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Vpby5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGli
L3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Zub2RlLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIv
dmZzY29yZS9sb29rdXAuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi92ZnNjb3JlL21haW4uYwog
Y3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi92ZnNjb3JlL21vdW50LmMKIGNyZWF0ZSBtb2RlIDEwMDY0
NCBsaWIvdmZzY29yZS9zdWJyX3Vpby5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3Zmc2NvcmUv
c3lzY2FsbHMuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi92ZnNjb3JlL3Rhc2suYwogY3JlYXRl
IG1vZGUgMTAwNjQ0IGxpYi92ZnNjb3JlL3Zmcy5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3Zm
c2NvcmUvdm5vZGUuYwoKLS0gCjIuMTkuMgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVs
QGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1h
bi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Feb 18 14:55:09 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 18 Feb 2019 14:55:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gvkK5-0004RQ-Ro; Mon, 18 Feb 2019 14:55:09 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=odxU=QZ=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gvkK5-0004RG-5A
 for minios-devel@lists.xen.org; Mon, 18 Feb 2019 14:55:09 +0000
X-Inumbo-ID: 2d97bcfa-338d-11e9-a9bd-6b9ce2a6f511
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 2d97bcfa-338d-11e9-a9bd-6b9ce2a6f511;
 Mon, 18 Feb 2019 14:55:06 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id BF932104E83;
 Mon, 18 Feb 2019 15:55:05 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id qP6OWLQgB5FU; Mon, 18 Feb 2019 15:55:05 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 968A6104E55
 for <minios-devel@lists.xen.org>; Mon, 18 Feb 2019 15:55:03 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 18 Feb 2019 15:55:03 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Mon, 18 Feb 2019 15:54:21 +0100
Message-ID: <20190218145440.30580-4-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190218145440.30580-1-yuri.volchkov@neclab.eu>
References: <20190218145440.30580-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v4 03/22] lib/nolibc: adapt mount.h
 to Unikraft
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: simon.kuenzer@neclab.eu, sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U3R5bGUgcHJvYmxlbXMgYW5kIHByb3BlciBpbmNsdWRlcwoKU2lnbmVkLW9mZi1ieTogWXVyaSBW
b2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+ClJldmlld2VkLWJ5OiBTaGFyYW4gU2Fu
dGhhbmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xhYi5ldT4KLS0tCiBsaWIvbm9saWJjL2luY2x1
ZGUvc3lzL21vdW50LmggfCAzOCArKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCiAx
IGZpbGUgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCgpkaWZmIC0t
Z2l0IGEvbGliL25vbGliYy9pbmNsdWRlL3N5cy9tb3VudC5oIGIvbGliL25vbGliYy9pbmNsdWRl
L3N5cy9tb3VudC5oCmluZGV4IDU3YTg5YzA5Li5hZjg1NWQ2OSAxMDA2NDQKLS0tIGEvbGliL25v
bGliYy9pbmNsdWRlL3N5cy9tb3VudC5oCisrKyBiL2xpYi9ub2xpYmMvaW5jbHVkZS9zeXMvbW91
bnQuaApAQCAtNSwyMyArNSwyMiBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAotI2luY2x1ZGUg
PHN5cy9pb2N0bC5oPgogCi0jZGVmaW5lIEJMS1JPU0VUICAgX0lPKDB4MTIsIDkzKQotI2RlZmlu
ZSBCTEtST0dFVCAgIF9JTygweDEyLCA5NCkKLSNkZWZpbmUgQkxLUlJQQVJUICBfSU8oMHgxMiwg
OTUpCi0jZGVmaW5lIEJMS0dFVFNJWkUgX0lPKDB4MTIsIDk2KQotI2RlZmluZSBCTEtGTFNCVUYg
IF9JTygweDEyLCA5NykKLSNkZWZpbmUgQkxLUkFTRVQgICBfSU8oMHgxMiwgOTgpCi0jZGVmaW5l
IEJMS1JBR0VUICAgX0lPKDB4MTIsIDk5KQotI2RlZmluZSBCTEtGUkFTRVQgIF9JTygweDEyLDEw
MCkKLSNkZWZpbmUgQkxLRlJBR0VUICBfSU8oMHgxMiwxMDEpCi0jZGVmaW5lIEJMS1NFQ1RTRVQg
X0lPKDB4MTIsMTAyKQotI2RlZmluZSBCTEtTRUNUR0VUIF9JTygweDEyLDEwMykKLSNkZWZpbmUg
QkxLU1NaR0VUICBfSU8oMHgxMiwxMDQpCi0jZGVmaW5lIEJMS0JTWkdFVCAgX0lPUigweDEyLDEx
MixzaXplX3QpCi0jZGVmaW5lIEJMS0JTWlNFVCAgX0lPVygweDEyLDExMyxzaXplX3QpCi0jZGVm
aW5lIEJMS0dFVFNJWkU2NCBfSU9SKDB4MTIsMTE0LHNpemVfdCkKKyNkZWZpbmUgQkxLUk9TRVQg
ICAgICBfSU8oMHgxMiwgIDkzKQorI2RlZmluZSBCTEtST0dFVCAgICAgIF9JTygweDEyLCAgOTQp
CisjZGVmaW5lIEJMS1JSUEFSVCAgICAgX0lPKDB4MTIsICA5NSkKKyNkZWZpbmUgQkxLR0VUU0la
RSAgICBfSU8oMHgxMiwgIDk2KQorI2RlZmluZSBCTEtGTFNCVUYgICAgIF9JTygweDEyLCAgOTcp
CisjZGVmaW5lIEJMS1JBU0VUICAgICAgX0lPKDB4MTIsICA5OCkKKyNkZWZpbmUgQkxLUkFHRVQg
ICAgICBfSU8oMHgxMiwgIDk5KQorI2RlZmluZSBCTEtGUkFTRVQgICAgIF9JTygweDEyLCAxMDAp
CisjZGVmaW5lIEJMS0ZSQUdFVCAgICAgX0lPKDB4MTIsIDEwMSkKKyNkZWZpbmUgQkxLU0VDVFNF
VCAgICBfSU8oMHgxMiwgMTAyKQorI2RlZmluZSBCTEtTRUNUR0VUICAgIF9JTygweDEyLCAxMDMp
CisjZGVmaW5lIEJMS1NTWkdFVCAgICAgX0lPKDB4MTIsIDEwNCkKKyNkZWZpbmUgQkxLQlNaR0VU
ICAgIF9JT1IoMHgxMiwgMTEyLCBzaXplX3QpCisjZGVmaW5lIEJMS0JTWlNFVCAgICBfSU9XKDB4
MTIsIDExMywgc2l6ZV90KQorI2RlZmluZSBCTEtHRVRTSVpFNjQgX0lPUigweDEyLCAxMTQsIHNp
emVfdCkKIAogI2RlZmluZSBNU19SRE9OTFkgICAgICAxCiAjZGVmaW5lIE1TX05PU1VJRCAgICAg
IDIKQEAgLTYzLDkgKzYyLDEwIEBAIGV4dGVybiAiQyIgewogI2RlZmluZSBNTlRfRVhQSVJFICAg
ICAgNAogI2RlZmluZSBVTU9VTlRfTk9GT0xMT1cgOAogCi1pbnQgbW91bnQoY29uc3QgY2hhciAq
LCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgdW5zaWduZWQgbG9uZywgY29uc3Qgdm9pZCAq
KTsKLWludCB1bW91bnQoY29uc3QgY2hhciAqKTsKLWludCB1bW91bnQyKGNvbnN0IGNoYXIgKiwg
aW50KTsKK2ludCBtb3VudChjb25zdCBjaGFyICpkZXYsIGNvbnN0IGNoYXIgKmRpciwgY29uc3Qg
Y2hhciAqZnNuYW1lLAorCSAgdW5zaWduZWQgbG9uZyBmbGFncywgY29uc3Qgdm9pZCAqZGF0YSk7
CitpbnQgdW1vdW50KGNvbnN0IGNoYXIgKnBhdGgpOworaW50IHVtb3VudDIoY29uc3QgY2hhciAq
cGF0aCwgaW50IGZsYWdzKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9Ci0tIAoyLjE5LjIKCgpf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2
ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczov
L2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Feb 18 14:55:20 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 18 Feb 2019 14:55:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gvkKF-0004TD-UM; Mon, 18 Feb 2019 14:55:19 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=odxU=QZ=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gvkKE-0004Sz-Vf
 for minios-devel@lists.xen.org; Mon, 18 Feb 2019 14:55:19 +0000
X-Inumbo-ID: 2f64c0bb-338d-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 2f64c0bb-338d-11e9-bc90-bc764e045a96;
 Mon, 18 Feb 2019 14:55:09 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id A4116F204F;
 Mon, 18 Feb 2019 15:55:08 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id RmGD2opghmrn; Mon, 18 Feb 2019 15:55:08 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 32703F202E
 for <minios-devel@lists.xen.org>; Mon, 18 Feb 2019 15:55:06 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 18 Feb 2019 15:55:05 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Mon, 18 Feb 2019 15:54:22 +0100
Message-ID: <20190218145440.30580-5-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190218145440.30580-1-yuri.volchkov@neclab.eu>
References: <20190218145440.30580-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v4 04/22] lib/vfscore: Initial
 import of OSv vfs
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: simon.kuenzer@neclab.eu, sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhlIGNvZGUgaXMgaW1wb3J0ZWQgYXMgaXMuCgpDb21taXQgZjFmNDI5MTVhMzNiZWJlMTIwZTcw
YWYxZjMyYzFhNGQ5MmJhYzc4MAoKU2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52
b2xjaGtvdkBuZWNsYWIuZXU+ClJldmlld2VkLWJ5OiBTaGFyYW4gU2FudGhhbmFtIDxzaGFyYW4u
c2FudGhhbmFtQG5lY2xhYi5ldT4KLS0tCiBsaWIvdmZzY29yZS9kZW50cnkuYyAgICAgICAgICAg
ICAgICAgfCAgMjM0ICsrKwogbGliL3Zmc2NvcmUvZm9wcy5jICAgICAgICAgICAgICAgICAgIHwg
IDE4OSArKwogbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2RlbnRyeS5oIHwgICA0NSArCiBs
aWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvbW91bnQuaCAgfCAgMTcxICsrCiBsaWIvdmZzY29y
ZS9pbmNsdWRlL3Zmc2NvcmUvcHJleC5oICAgfCAgIDM0ICsKIGxpYi92ZnNjb3JlL2luY2x1ZGUv
dmZzY29yZS91aW8uaCAgICB8ICAgODkgKwogbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Zu
b2RlLmggIHwgIDI0NiArKysKIGxpYi92ZnNjb3JlL2xvb2t1cC5jICAgICAgICAgICAgICAgICB8
ICAzNzUgKysrKwogbGliL3Zmc2NvcmUvbWFpbi5jICAgICAgICAgICAgICAgICAgIHwgMjQxMyAr
KysrKysrKysrKysrKysrKysrKysrKysrKwogbGliL3Zmc2NvcmUvbW91bnQuYyAgICAgICAgICAg
ICAgICAgIHwgIDQ5MSArKysrKysKIGxpYi92ZnNjb3JlL3N1YnJfdWlvLmMgICAgICAgICAgICAg
ICB8ICAgNzMgKwogbGliL3Zmc2NvcmUvc3lzY2FsbHMuYyAgICAgICAgICAgICAgIHwgMTQ4NiAr
KysrKysrKysrKysrKysrCiBsaWIvdmZzY29yZS90YXNrLmMgICAgICAgICAgICAgICAgICAgfCAg
MTY3ICsrCiBsaWIvdmZzY29yZS92ZnMuaCAgICAgICAgICAgICAgICAgICAgfCAgMTg5ICsrCiBs
aWIvdmZzY29yZS92bm9kZS5jICAgICAgICAgICAgICAgICAgfCAgNTIyICsrKysrKwogMTUgZmls
ZXMgY2hhbmdlZCwgNjcyNCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3Zm
c2NvcmUvZGVudHJ5LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdmZzY29yZS9mb3BzLmMKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZGVudHJ5LmgKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvbW91bnQuaAogY3Jl
YXRlIG1vZGUgMTAwNjQ0IGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9wcmV4LmgKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdWlvLmgKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUuaAogY3JlYXRlIG1v
ZGUgMTAwNjQ0IGxpYi92ZnNjb3JlL2xvb2t1cC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3Zm
c2NvcmUvbWFpbi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3Zmc2NvcmUvbW91bnQuYwogY3Jl
YXRlIG1vZGUgMTAwNjQ0IGxpYi92ZnNjb3JlL3N1YnJfdWlvLmMKIGNyZWF0ZSBtb2RlIDEwMDY0
NCBsaWIvdmZzY29yZS9zeXNjYWxscy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3Zmc2NvcmUv
dGFzay5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3Zmc2NvcmUvdmZzLmgKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBsaWIvdmZzY29yZS92bm9kZS5jCgpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvZGVu
dHJ5LmMgYi9saWIvdmZzY29yZS9kZW50cnkuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMC4uZmFjZDllYWEKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvdmZzY29yZS9kZW50cnku
YwpAQCAtMCwwICsxLDIzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBDbG91ZGl1cyBT
eXN0ZW1zLCBMdGQuCisgKgorICogVGhpcyB3b3JrIGlzIG9wZW4gc291cmNlIHNvZnR3YXJlLCBs
aWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlCisgKiBCU0QgbGljZW5zZSBhcyBkZXNjcmli
ZWQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgdG9wLWxldmVsIGRpcmVjdG9yeS4KKyAqLwor
CisvKgorICogQ29weXJpZ2h0IChjKSAyMDA1LTIwMDcsIEtvaHN1a2UgT2h0YW5pCisgKiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUg
YXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgYW55IGNvLWNvbnRyaWJ1dG9ycworICogICAgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNv
ZnR3YXJlCisgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3lzL3BhcmFt
Lmg+CisKKyNpbmNsdWRlIDxvc3YvZGVudHJ5Lmg+CisjaW5jbHVkZSA8b3N2L3Zub2RlLmg+Cisj
aW5jbHVkZSAidmZzLmgiCisKKyNkZWZpbmUgREVOVFJZX0JVQ0tFVFMgMzIKKworc3RhdGljIExJ
U1RfSEVBRChkZW50cnlfaGFzaF9oZWFkLCBkZW50cnkpIGRlbnRyeV9oYXNoX3RhYmxlW0RFTlRS
WV9CVUNLRVRTXTsKK3N0YXRpYyBMSVNUX0hFQUQoZmFrZSwgZGVudHJ5KSBmYWtlOworc3RhdGlj
IG11dGV4IGRlbnRyeV9oYXNoX2xvY2s7CisKKy8qCisgKiBHZXQgdGhlIGhhc2ggdmFsdWUgZnJv
bSB0aGUgbW91bnQgcG9pbnQgYW5kIHBhdGggbmFtZS4KKyAqIFhYWDogcmVwbGFjZSB3aXRoIGEg
YmV0dGVyIGhhc2ggZm9yIDY0LWJpdCBwb2ludGVycy4KKyAqLworc3RhdGljIHVfaW50CitkZW50
cnlfaGFzaChzdHJ1Y3QgbW91bnQgKm1wLCBjb25zdCBjaGFyICpwYXRoKQoreworICAgIHVfaW50
IHZhbCA9IDA7CisKKyAgICBpZiAocGF0aCkgeworICAgICAgICB3aGlsZSAoKnBhdGgpIHsKKyAg
ICAgICAgICAgIHZhbCA9ICgodmFsIDw8IDUpICsgdmFsKSArICpwYXRoKys7CisgICAgICAgIH0K
KyAgICB9CisgICAgcmV0dXJuICh2YWwgXiAodW5zaWduZWQgbG9uZykgbXApICYgKERFTlRSWV9C
VUNLRVRTIC0gMSk7Cit9CisKKworc3RydWN0IGRlbnRyeSAqCitkZW50cnlfYWxsb2Moc3RydWN0
IGRlbnRyeSAqcGFyZW50X2RwLCBzdHJ1Y3Qgdm5vZGUgKnZwLCBjb25zdCBjaGFyICpwYXRoKQor
eworICAgIHN0cnVjdCBtb3VudCAqbXAgPSB2cC0+dl9tb3VudDsKKyAgICBzdHJ1Y3QgZGVudHJ5
ICpkcCA9IChkZW50cnkqKWNhbGxvYyhzaXplb2YoKmRwKSwgMSk7CisKKyAgICBpZiAoIWRwKSB7
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHZyZWYodnApOworCisgICAg
ZHAtPmRfcmVmY250ID0gMTsKKyAgICBkcC0+ZF92bm9kZSA9IHZwOworICAgIGRwLT5kX21vdW50
ID0gbXA7CisgICAgZHAtPmRfcGF0aCA9IHN0cmR1cChwYXRoKTsKKyAgICBMSVNUX0lOSVQoJmRw
LT5kX2NoaWxkcmVuKTsKKworICAgIGlmIChwYXJlbnRfZHApIHsKKyAgICAgICAgZHJlZihwYXJl
bnRfZHApOworICAgICAgICBXSVRIX0xPQ0socGFyZW50X2RwLT5kX2xvY2spIHsKKyAgICAgICAg
ICAgIC8vIEluc2VydCBkcCBpbnRvIGl0cyBwYXJlbnQncyBjaGlsZHJlbiBsaXN0LgorICAgICAg
ICAgICAgTElTVF9JTlNFUlRfSEVBRCgmcGFyZW50X2RwLT5kX2NoaWxkcmVuLCBkcCwgZF9jaGls
ZHJlbl9saW5rKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBkcC0+ZF9wYXJlbnQgPSBwYXJlbnRf
ZHA7CisKKyAgICB2bl9hZGRfbmFtZSh2cCwgZHApOworCisgICAgbXV0ZXhfbG9jaygmZGVudHJ5
X2hhc2hfbG9jayk7CisgICAgTElTVF9JTlNFUlRfSEVBRCgmZGVudHJ5X2hhc2hfdGFibGVbZGVu
dHJ5X2hhc2gobXAsIHBhdGgpXSwgZHAsIGRfbGluayk7CisgICAgbXV0ZXhfdW5sb2NrKCZkZW50
cnlfaGFzaF9sb2NrKTsKKyAgICByZXR1cm4gZHA7Cit9OworCitzdHJ1Y3QgZGVudHJ5ICoKK2Rl
bnRyeV9sb29rdXAoc3RydWN0IG1vdW50ICptcCwgY2hhciAqcGF0aCkKK3sKKyAgICBzdHJ1Y3Qg
ZGVudHJ5ICpkcDsKKworICAgIG11dGV4X2xvY2soJmRlbnRyeV9oYXNoX2xvY2spOworICAgIExJ
U1RfRk9SRUFDSChkcCwgJmRlbnRyeV9oYXNoX3RhYmxlW2RlbnRyeV9oYXNoKG1wLCBwYXRoKV0s
IGRfbGluaykgeworICAgICAgICBpZiAoZHAtPmRfbW91bnQgPT0gbXAgJiYgIXN0cm5jbXAoZHAt
PmRfcGF0aCwgcGF0aCwgUEFUSF9NQVgpKSB7CisgICAgICAgICAgICBkcC0+ZF9yZWZjbnQrKzsK
KyAgICAgICAgICAgIG11dGV4X3VubG9jaygmZGVudHJ5X2hhc2hfbG9jayk7CisgICAgICAgICAg
ICByZXR1cm4gZHA7CisgICAgICAgIH0KKyAgICB9CisgICAgbXV0ZXhfdW5sb2NrKCZkZW50cnlf
aGFzaF9sb2NrKTsKKyAgICByZXR1cm4gbnVsbHB0cjsgICAgICAgICAgICAgICAgLyogbm90IGZv
dW5kICovCit9CisKK3N0YXRpYyB2b2lkIGRlbnRyeV9jaGlsZHJlbl9yZW1vdmUoc3RydWN0IGRl
bnRyeSAqZHApCit7CisgICAgc3RydWN0IGRlbnRyeSAqZW50cnkgPSBudWxscHRyOworCisgICAg
V0lUSF9MT0NLKGRwLT5kX2xvY2spIHsKKyAgICAgICAgTElTVF9GT1JFQUNIKGVudHJ5LCAmZHAt
PmRfY2hpbGRyZW4sIGRfY2hpbGRyZW5fbGluaykgeworICAgICAgICAgICAgQVNTRVJUKGVudHJ5
KTsKKyAgICAgICAgICAgIEFTU0VSVChlbnRyeS0+ZF9yZWZjbnQgPiAwKTsKKyAgICAgICAgICAg
IExJU1RfUkVNT1ZFKGVudHJ5LCBkX2xpbmspOworICAgICAgICB9CisgICAgfQorfQorCit2b2lk
CitkZW50cnlfbW92ZShzdHJ1Y3QgZGVudHJ5ICpkcCwgc3RydWN0IGRlbnRyeSAqcGFyZW50X2Rw
LCBjaGFyICpwYXRoKQoreworICAgIHN0cnVjdCBkZW50cnkgKm9sZF9wZHAgPSBkcC0+ZF9wYXJl
bnQ7CisgICAgY2hhciAqb2xkX3BhdGggPSBkcC0+ZF9wYXRoOworCisgICAgaWYgKG9sZF9wZHAp
IHsKKyAgICAgICAgV0lUSF9MT0NLKG9sZF9wZHAtPmRfbG9jaykgeworICAgICAgICAgICAgLy8g
UmVtb3ZlIGRwIGZyb20gaXRzIG9sZCBwYXJlbnQncyBjaGlsZHJlbiBsaXN0LgorICAgICAgICAg
ICAgTElTVF9SRU1PVkUoZHAsIGRfY2hpbGRyZW5fbGluayk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBpZiAocGFyZW50X2RwKSB7CisgICAgICAgIGRyZWYocGFyZW50X2RwKTsKKyAgICAgICAg
V0lUSF9MT0NLKHBhcmVudF9kcC0+ZF9sb2NrKSB7CisgICAgICAgICAgICAvLyBJbnNlcnQgZHAg
aW50byBpdHMgbmV3IHBhcmVudCdzIGNoaWxkcmVuIGxpc3QuCisgICAgICAgICAgICBMSVNUX0lO
U0VSVF9IRUFEKCZwYXJlbnRfZHAtPmRfY2hpbGRyZW4sIGRwLCBkX2NoaWxkcmVuX2xpbmspOwor
ICAgICAgICB9CisgICAgfQorCisgICAgV0lUSF9MT0NLKGRlbnRyeV9oYXNoX2xvY2spIHsKKyAg
ICAgICAgLy8gUmVtb3ZlIGFsbCBkcCdzIGNoaWxkIGRlbnRyaWVzIGZyb20gdGhlIGhhc2h0YWJs
ZS4KKyAgICAgICAgZGVudHJ5X2NoaWxkcmVuX3JlbW92ZShkcCk7CisgICAgICAgIC8vIFJlbW92
ZSBkcCB3aXRoIG91dGRhdGVkIGhhc2ggaW5mbyBmcm9tIHRoZSBoYXNodGFibGUuCisgICAgICAg
IExJU1RfUkVNT1ZFKGRwLCBkX2xpbmspOworICAgICAgICAvLyBVcGRhdGUgZHAuCisgICAgICAg
IGRwLT5kX3BhdGggPSBzdHJkdXAocGF0aCk7CisgICAgICAgIGRwLT5kX3BhcmVudCA9IHBhcmVu
dF9kcDsKKyAgICAgICAgLy8gSW5zZXJ0IGRwIHVwZGF0ZWQgaGFzaCBpbmZvIGludG8gdGhlIGhh
c2h0YWJsZS4KKyAgICAgICAgTElTVF9JTlNFUlRfSEVBRCgmZGVudHJ5X2hhc2hfdGFibGVbZGVu
dHJ5X2hhc2goZHAtPmRfbW91bnQsIHBhdGgpXSwKKyAgICAgICAgICAgIGRwLCBkX2xpbmspOwor
ICAgIH0KKworICAgIGlmIChvbGRfcGRwKSB7CisgICAgICAgIGRyZWxlKG9sZF9wZHApOworICAg
IH0KKworICAgIGZyZWUob2xkX3BhdGgpOworfQorCit2b2lkCitkZW50cnlfcmVtb3ZlKHN0cnVj
dCBkZW50cnkgKmRwKQoreworICAgIG11dGV4X2xvY2soJmRlbnRyeV9oYXNoX2xvY2spOworICAg
IExJU1RfUkVNT1ZFKGRwLCBkX2xpbmspOworICAgIC8qIHB1dCBpdCBvbiBhIGZha2UgbGlzdCBm
b3IgZHJlbGUoKSB0byB3b3JrKi8KKyAgICBMSVNUX0lOU0VSVF9IRUFEKCZmYWtlLCBkcCwgZF9s
aW5rKTsKKyAgICBtdXRleF91bmxvY2soJmRlbnRyeV9oYXNoX2xvY2spOworfQorCit2b2lkCitk
cmVmKHN0cnVjdCBkZW50cnkgKmRwKQoreworICAgIEFTU0VSVChkcCk7CisgICAgQVNTRVJUKGRw
LT5kX3JlZmNudCA+IDApOworCisgICAgbXV0ZXhfbG9jaygmZGVudHJ5X2hhc2hfbG9jayk7Cisg
ICAgZHAtPmRfcmVmY250Kys7CisgICAgbXV0ZXhfdW5sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsK
K30KKwordm9pZAorZHJlbGUoc3RydWN0IGRlbnRyeSAqZHApCit7CisgICAgQVNTRVJUKGRwKTsK
KyAgICBBU1NFUlQoZHAtPmRfcmVmY250ID4gMCk7CisKKyAgICBtdXRleF9sb2NrKCZkZW50cnlf
aGFzaF9sb2NrKTsKKyAgICBpZiAoLS1kcC0+ZF9yZWZjbnQpIHsKKyAgICAgICAgbXV0ZXhfdW5s
b2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBMSVNU
X1JFTU9WRShkcCwgZF9saW5rKTsKKyAgICB2bl9kZWxfbmFtZShkcC0+ZF92bm9kZSwgZHApOwor
CisgICAgbXV0ZXhfdW5sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKKworICAgIGlmIChkcC0+ZF9w
YXJlbnQpIHsKKyAgICAgICAgV0lUSF9MT0NLKGRwLT5kX3BhcmVudC0+ZF9sb2NrKSB7CisgICAg
ICAgICAgICAvLyBSZW1vdmUgZHAgZnJvbSBpdHMgcGFyZW50J3MgY2hpbGRyZW4gbGlzdC4KKyAg
ICAgICAgICAgIExJU1RfUkVNT1ZFKGRwLCBkX2NoaWxkcmVuX2xpbmspOworICAgICAgICB9Cisg
ICAgICAgIGRyZWxlKGRwLT5kX3BhcmVudCk7CisgICAgfQorCisgICAgdnJlbGUoZHAtPmRfdm5v
ZGUpOworCisgICAgZnJlZShkcC0+ZF9wYXRoKTsKKyAgICBmcmVlKGRwKTsKK30KKwordm9pZAor
ZGVudHJ5X2luaXQodm9pZCkKK3sKKyAgICBpbnQgaTsKKworICAgIGZvciAoaSA9IDA7IGkgPCBE
RU5UUllfQlVDS0VUUzsgaSsrKSB7CisgICAgICAgIExJU1RfSU5JVCgmZGVudHJ5X2hhc2hfdGFi
bGVbaV0pOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2ZvcHMuYyBiL2xpYi92
ZnNjb3JlL2ZvcHMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uM2E4Zjk4
YjQKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvdmZzY29yZS9mb3BzLmMKQEAgLTAsMCArMSwxODkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQ2xvdWRpdXMgU3lzdGVtcywgTHRkLgorICoK
KyAqIFRoaXMgd29yayBpcyBvcGVuIHNvdXJjZSBzb2Z0d2FyZSwgbGljZW5zZWQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZQorICogQlNEIGxpY2Vuc2UgYXMgZGVzY3JpYmVkIGluIHRoZSBMSUNFTlNF
IGZpbGUgaW4gdGhlIHRvcC1sZXZlbCBkaXJlY3RvcnkuCisgKi8KKworCisjaW5jbHVkZSA8ZmNu
dGwuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPG9zdi9maWxlLmg+CisjaW5j
bHVkZSA8b3N2L3BvbGwuaD4KKyNpbmNsdWRlIDxmcy92ZnMvdmZzLmg+CisjaW5jbHVkZSA8b3N2
L3Zmc19maWxlLmhoPgorI2luY2x1ZGUgPG9zdi9tbXUuaGg+CisjaW5jbHVkZSA8b3N2L3BhZ2Vj
YWNoZS5oaD4KKwordmZzX2ZpbGU6OnZmc19maWxlKHVuc2lnbmVkIGZsYWdzKQorCTogZmlsZShm
bGFncywgRFRZUEVfVk5PREUpCit7Cit9CisKK2ludCB2ZnNfZmlsZTo6Y2xvc2UoKQoreworCWF1
dG8gZnAgPSB0aGlzOworCXN0cnVjdCB2bm9kZSAqdnAgPSBmcC0+Zl9kZW50cnktPmRfdm5vZGU7
CisJaW50IGVycm9yOworCisJdm5fbG9jayh2cCk7CisJZXJyb3IgPSBWT1BfQ0xPU0UodnAsIGZw
KTsKKwl2bl91bmxvY2sodnApOworCisJaWYgKGVycm9yKQorCQlyZXR1cm4gZXJyb3I7CisKKwlm
cC0+Zl9kZW50cnkucmVzZXQoKTsKKwlyZXR1cm4gMDsKK30KKworaW50IHZmc19maWxlOjpyZWFk
KHN0cnVjdCB1aW8gKnVpbywgaW50IGZsYWdzKQoreworCWF1dG8gZnAgPSB0aGlzOworCXN0cnVj
dCB2bm9kZSAqdnAgPSBmcC0+Zl9kZW50cnktPmRfdm5vZGU7CisJaW50IGVycm9yOworCXNpemVf
dCBjb3VudDsKKwlzc2l6ZV90IGJ5dGVzOworCisJYnl0ZXMgPSB1aW8tPnVpb19yZXNpZDsKKwor
CXZuX2xvY2sodnApOworCWlmICgoZmxhZ3MgJiBGT0ZfT0ZGU0VUKSA9PSAwKQorCQl1aW8tPnVp
b19vZmZzZXQgPSBmcC0+Zl9vZmZzZXQ7CisKKwllcnJvciA9IFZPUF9SRUFEKHZwLCBmcCwgdWlv
LCAwKTsKKwlpZiAoIWVycm9yKSB7CisJCWNvdW50ID0gYnl0ZXMgLSB1aW8tPnVpb19yZXNpZDsK
KwkJaWYgKChmbGFncyAmIEZPRl9PRkZTRVQpID09IDApCisJCQlmcC0+Zl9vZmZzZXQgKz0gY291
bnQ7CisJfQorCXZuX3VubG9jayh2cCk7CisKKwlyZXR1cm4gZXJyb3I7Cit9CisKKworaW50IHZm
c19maWxlOjp3cml0ZShzdHJ1Y3QgdWlvICp1aW8sIGludCBmbGFncykKK3sKKwlhdXRvIGZwID0g
dGhpczsKKwlzdHJ1Y3Qgdm5vZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOworCWludCBp
b2ZsYWdzID0gMDsKKwlpbnQgZXJyb3I7CisJc2l6ZV90IGNvdW50OworCXNzaXplX3QgYnl0ZXM7
CisKKwlieXRlcyA9IHVpby0+dWlvX3Jlc2lkOworCisJdm5fbG9jayh2cCk7CisKKwlpZiAoZnAt
PmZfZmxhZ3MgJiBPX0FQUEVORCkKKwkJaW9mbGFncyB8PSBJT19BUFBFTkQ7CisJaWYgKGZwLT5m
X2ZsYWdzICYgKE9fRFNZTkN8T19TWU5DKSkKKwkJaW9mbGFncyB8PSBJT19TWU5DOworCisJaWYg
KChmbGFncyAmIEZPRl9PRkZTRVQpID09IDApCisJICAgICAgICB1aW8tPnVpb19vZmZzZXQgPSBm
cC0+Zl9vZmZzZXQ7CisKKwllcnJvciA9IFZPUF9XUklURSh2cCwgdWlvLCBpb2ZsYWdzKTsKKwlp
ZiAoIWVycm9yKSB7CisJCWNvdW50ID0gYnl0ZXMgLSB1aW8tPnVpb19yZXNpZDsKKwkJaWYgKChm
bGFncyAmIEZPRl9PRkZTRVQpID09IDApCisJCQlmcC0+Zl9vZmZzZXQgKz0gY291bnQ7CisJfQor
CisJdm5fdW5sb2NrKHZwKTsKKwlyZXR1cm4gZXJyb3I7Cit9CisKK2ludCB2ZnNfZmlsZTo6aW9j
dGwodV9sb25nIGNvbSwgdm9pZCAqZGF0YSkKK3sKKwlhdXRvIGZwID0gdGhpczsKKwlzdHJ1Y3Qg
dm5vZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOworCWludCBlcnJvcjsKKworCXZuX2xv
Y2sodnApOworCWVycm9yID0gVk9QX0lPQ1RMKHZwLCBmcCwgY29tLCBkYXRhKTsKKwl2bl91bmxv
Y2sodnApOworCisJcmV0dXJuIGVycm9yOworfQorCitpbnQgdmZzX2ZpbGU6OnN0YXQoc3RydWN0
IHN0YXQgKnN0KQoreworCWF1dG8gZnAgPSB0aGlzOworCXN0cnVjdCB2bm9kZSAqdnAgPSBmcC0+
Zl9kZW50cnktPmRfdm5vZGU7CisJaW50IGVycm9yOworCisJdm5fbG9jayh2cCk7CisJZXJyb3Ig
PSB2bl9zdGF0KHZwLCBzdCk7CisJdm5fdW5sb2NrKHZwKTsKKworCXJldHVybiBlcnJvcjsKK30K
KworaW50IHZmc19maWxlOjpwb2xsKGludCBldmVudHMpCit7CisJcmV0dXJuIHBvbGxfbm9fcG9s
bChldmVudHMpOworfQorCitpbnQgdmZzX2ZpbGU6OnRydW5jYXRlKG9mZl90IGxlbikKK3sKKwkv
LyBzb21laG93IHRoaXMgaXMgaGFuZGxlZCBvdXRzaWRlIGZpbGUgb3BzCisJYWJvcnQoKTsKK30K
KworaW50IHZmc19maWxlOjpjaG1vZChtb2RlX3QgbW9kZSkKK3sKKwkvLyBzb21laG93IHRoaXMg
aXMgaGFuZGxlZCBvdXRzaWRlIGZpbGUgb3BzCisJYWJvcnQoKTsKK30KKworYm9vbCB2ZnNfZmls
ZTo6bWFwX3BhZ2UodWludHB0cl90IG9mZiwgbW11Ojpod19wdGVwPDA+IHB0ZXAsIG1tdTo6cHRf
ZWxlbWVudDwwPiBwdGUsIGJvb2wgd3JpdGUsIGJvb2wgc2hhcmVkKQoreworICAgIHJldHVybiBw
YWdlY2FjaGU6OmdldCh0aGlzLCBvZmYsIHB0ZXAsIHB0ZSwgd3JpdGUsIHNoYXJlZCk7Cit9CisK
K2Jvb2wgdmZzX2ZpbGU6OnB1dF9wYWdlKHZvaWQgKmFkZHIsIHVpbnRwdHJfdCBvZmYsIG1tdTo6
aHdfcHRlcDwwPiBwdGVwKQoreworICAgIHJldHVybiBwYWdlY2FjaGU6OnJlbGVhc2UodGhpcywg
YWRkciwgb2ZmLCBwdGVwKTsKK30KKwordm9pZCB2ZnNfZmlsZTo6c3luYyhvZmZfdCBzdGFydCwg
b2ZmX3QgZW5kKQoreworICAgIHBhZ2VjYWNoZTo6c3luYyh0aGlzLCBzdGFydCwgZW5kKTsKK30K
KworLy8gTG9ja2luZzogVk9QX0NBQ0hFIHdpbGwgY2FsbCBpbnRvIHRoZSBmaWxlc3lzdGVtLCBh
bmQgdGhhdCBjYW4gdHJpZ2dlciBhbgorLy8gZXZpY3Rpb24gdGhhdCB3aWxsIGhvbGQgdGhlIG1t
dS1zaWRlIGxvY2sgdGhhdCBwcm90ZWN0cyB0aGUgbWFwcGluZ3MKKy8vIEFsd2F5cyBmb2xsb3cg
dGhhdCBvcmRlci4gV2UgaG93ZXZlciBjYW4ndCBqdXN0IGdldCByaWQgb2YgdGhlIG1tdS1zaWRl
IGxvY2ssCisvLyBiZWNhdXNlIG5vdCBhbGwgaW52YWxpZGF0aW9ucyB3aWxsIGJlIHN5bmNocm9u
b3VzLgoraW50IHZmc19maWxlOjpnZXRfYXJjYnVmKHZvaWQqIGtleSwgb2ZmX3Qgb2Zmc2V0KQor
eworICAgIHN0cnVjdCB2bm9kZSAqdnAgPSBmX2RlbnRyeS0+ZF92bm9kZTsKKworICAgIGlvdmVj
IGlvWzFdOworCisgICAgaW9bMF0uaW92X2Jhc2UgPSBrZXk7CisgICAgdWlvIGRhdGE7CisgICAg
ZGF0YS51aW9faW92ID0gaW87CisgICAgZGF0YS51aW9faW92Y250ID0gMTsKKyAgICBkYXRhLnVp
b19vZmZzZXQgPSBvZmZzZXQ7CisgICAgZGF0YS51aW9fcmVzaWQgPSBtbXU6OnBhZ2Vfc2l6ZTsK
KyAgICBkYXRhLnVpb19ydyA9IFVJT19SRUFEOworCisgICAgdm5fbG9jayh2cCk7CisgICAgYXNz
ZXJ0KFZPUF9DQUNIRSh2cCwgdGhpcywgJmRhdGEpID09IDApOworICAgIHZuX3VubG9jayh2cCk7
CisKKyAgICByZXR1cm4gKGRhdGEudWlvX3Jlc2lkICE9IDApID8gLTEgOiAwOworfQorCitzdGQ6
OnVuaXF1ZV9wdHI8bW11OjpmaWxlX3ZtYT4gdmZzX2ZpbGU6Om1tYXAoYWRkcl9yYW5nZSByYW5n
ZSwgdW5zaWduZWQgZmxhZ3MsIHVuc2lnbmVkIHBlcm0sIG9mZl90IG9mZnNldCkKK3sKKwlhdXRv
IGZwID0gdGhpczsKKwlzdHJ1Y3Qgdm5vZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOwor
CWlmICghdnAtPnZfb3AtPnZvcF9jYWNoZSB8fCAodnAtPnZfc2l6ZSA8IChvZmZfdCltbXU6OnBh
Z2Vfc2l6ZSkpIHsKKwkJcmV0dXJuIG1tdTo6ZGVmYXVsdF9maWxlX21tYXAodGhpcywgcmFuZ2Us
IGZsYWdzLCBwZXJtLCBvZmZzZXQpOworCX0KKwlyZXR1cm4gbW11OjptYXBfZmlsZV9tbWFwKHRo
aXMsIHJhbmdlLCBmbGFncywgcGVybSwgb2Zmc2V0KTsKK30KZGlmZiAtLWdpdCBhL2xpYi92ZnNj
b3JlL2luY2x1ZGUvdmZzY29yZS9kZW50cnkuaCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29y
ZS9kZW50cnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uYTI1NDVhZjgK
LS0tIC9kZXYvbnVsbAorKysgYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZGVudHJ5LmgK
QEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBDbG91ZGl1cyBTeXN0
ZW1zLCBMdGQuCisgKgorICogVGhpcyB3b3JrIGlzIG9wZW4gc291cmNlIHNvZnR3YXJlLCBsaWNl
bnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlCisgKiBCU0QgbGljZW5zZSBhcyBkZXNjcmliZWQg
aW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgdG9wLWxldmVsIGRpcmVjdG9yeS4KKyAqLworCisj
aWZuZGVmIF9PU1ZfREVOVFJZX0gKKyNkZWZpbmUgX09TVl9ERU5UUllfSCAxCisKKyNpbmNsdWRl
IDxvc3YvbXV0ZXguaD4KKyNpbmNsdWRlIDxic2Qvc3lzL3N5cy9xdWV1ZS5oPgorCitzdHJ1Y3Qg
dm5vZGU7CisKK3N0cnVjdCBkZW50cnkgeworCUxJU1RfRU5UUlkoZGVudHJ5KSBkX2xpbms7CS8q
IGxpbmsgZm9yIGhhc2ggbGlzdCAqLworCWludAkJZF9yZWZjbnQ7CS8qIHJlZmVyZW5jZSBjb3Vu
dCAqLworCWNoYXIJCSpkX3BhdGg7CS8qIHBvaW50ZXIgdG8gcGF0aCBpbiBmcyAqLworCXN0cnVj
dCB2bm9kZQkqZF92bm9kZTsKKwlzdHJ1Y3QgbW91bnQJKmRfbW91bnQ7CisJc3RydWN0IGRlbnRy
eSAgICpkX3BhcmVudDsgLyogcG9pbnRlciB0byBwYXJlbnQgKi8KKwlMSVNUX0VOVFJZKGRlbnRy
eSkgZF9uYW1lc19saW5rOyAvKiBsaW5rIGZvIHZub2RlOjpkX25hbWVzICovCisJbXV0ZXhfdAkJ
ZF9sb2NrOworCUxJU1RfSEVBRCgsIGRlbnRyeSkgZF9jaGlsZHJlbjsKKwlMSVNUX0VOVFJZKGRl
bnRyeSkgZF9jaGlsZHJlbl9saW5rOworfTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCisKKyNpbmNs
dWRlIDxib29zdC9pbnRydXNpdmVfcHRyLmhwcD4KKwordXNpbmcgZGVudHJ5X3JlZiA9IGJvb3N0
OjppbnRydXNpdmVfcHRyPGRlbnRyeT47CisKK2V4dGVybiAiQyIgeworICAgIHZvaWQgZHJlZihz
dHJ1Y3QgZGVudHJ5KiBkcCk7CisgICAgdm9pZCBkcmVsZShzdHJ1Y3QgZGVudHJ5KiBkcCk7Cit9
OworCitpbmxpbmUgdm9pZCBpbnRydXNpdmVfcHRyX2FkZF9yZWYoZGVudHJ5KiBkcCkgeyBkcmVm
KGRwKTsgfQoraW5saW5lIHZvaWQgaW50cnVzaXZlX3B0cl9yZWxlYXNlKGRlbnRyeSogZHApIHsg
ZHJlbGUoZHApOyB9CisKKyNlbmRpZgorCisjZW5kaWYgLyogX09TVl9ERU5UUllfSCAqLwpkaWZm
IC0tZ2l0IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmggYi9saWIvdmZzY29y
ZS9pbmNsdWRlL3Zmc2NvcmUvbW91bnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMC4uNzI2OGQ4Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zm
c2NvcmUvbW91bnQuaApAQCAtMCwwICsxLDE3MSBAQAorLyotCisgKiBDb3B5cmlnaHQgKGMpIDE5
ODksIDE5OTEsIDE5OTMKKyAqCVRoZSBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlm
b3JuaWEuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUg
bmFtZSBvZiB0aGUgVW5pdmVyc2l0eSBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMK
KyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20gdGhpcyBzb2Z0d2FyZQorICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgUkVH
RU5UUyBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIFJFR0VOVFMgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFH
RS4KKyAqCisgKglAKCMpbW91bnQuaAk4LjIxIChCZXJrZWxleSkgNS8yMC85NQorICovCisKKyNp
Zm5kZWYgX1NZU19NT1VOVF9IXworI2RlZmluZSBfU1lTX01PVU5UX0hfCisKKyNpbmNsdWRlIDxz
eXMvY2RlZnMuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdGZzLmg+CisjaW5jbHVkZSA8b3N2L3Zub2Rl
Lmg+CisjaW5jbHVkZSA8YnNkL3N5cy9zeXMvcXVldWUuaD4KKworX19CRUdJTl9ERUNMUworCisj
aWZkZWYgX0tFUk5FTAorCisvKgorICogTW91bnQgZGF0YQorICovCitzdHJ1Y3QgbW91bnQgewor
CXN0cnVjdCB2ZnNvcHMJKm1fb3A7CQkvKiBwb2ludGVyIHRvIHZmcyBvcGVyYXRpb24gKi8KKwlp
bnQJCW1fZmxhZ3M7CS8qIG1vdW50IGZsYWcgKi8KKwlpbnQJCW1fY291bnQ7CS8qIHJlZmVyZW5j
ZSBjb3VudCAqLworCWNoYXIgICAgICAgICAgICBtX3BhdGhbUEFUSF9NQVhdOyAvKiBtb3VudGVk
IHBhdGggKi8KKwljaGFyICAgICAgICAgICAgbV9zcGVjaWFsW1BBVEhfTUFYXTsgLyogcmVzb3Vy
Y2UgKi8KKwlzdHJ1Y3QgZGV2aWNlCSptX2RldjsJCS8qIG1vdW50ZWQgZGV2aWNlICovCisJc3Ry
dWN0IGRlbnRyeQkqbV9yb290OwkvKiByb290IHZub2RlICovCisJc3RydWN0IGRlbnRyeQkqbV9j
b3ZlcmVkOwkvKiB2bm9kZSBjb3ZlcmVkIG9uIHBhcmVudCBmcyAqLworCXZvaWQJCSptX2RhdGE7
CS8qIHByaXZhdGUgZGF0YSBmb3IgZnMgKi8KKwlmc2lkX3QgCQltX2ZzaWQ7IAkvKiBpZCB0aGF0
IHVuaXF1ZWx5IGlkZW50aWZpZXMgdGhlIGZzICovCit9OworCisjZW5kaWYKKworLyoKKyAqIE1v
dW50IGZsYWdzLgorICovCisjZGVmaW5lCU1OVF9SRE9OTFkJMHgwMDAwMDAwMQkvKiByZWFkIG9u
bHkgZmlsZXN5c3RlbSAqLworI2RlZmluZQlNTlRfU1lOQ0hST05PVVMJMHgwMDAwMDAwMgkvKiBm
aWxlIHN5c3RlbSB3cml0dGVuIHN5bmNocm9ub3VzbHkgKi8KKyNkZWZpbmUJTU5UX05PRVhFQwkw
eDAwMDAwMDA0CS8qIGNhbid0IGV4ZWMgZnJvbSBmaWxlc3lzdGVtICovCisjZGVmaW5lCU1OVF9O
T1NVSUQJMHgwMDAwMDAwOAkvKiBkb24ndCBob25vciBzZXR1aWQgYml0cyBvbiBmcyAqLworI2Rl
ZmluZQlNTlRfTk9ERVYJMHgwMDAwMDAxMAkvKiBkb24ndCBpbnRlcnByZXQgc3BlY2lhbCBmaWxl
cyAqLworI2RlZmluZQlNTlRfVU5JT04JMHgwMDAwMDAyMAkvKiB1bmlvbiB3aXRoIHVuZGVybHlp
bmcgZmlsZXN5c3RlbSAqLworI2RlZmluZQlNTlRfQVNZTkMJMHgwMDAwMDA0MAkvKiBmaWxlIHN5
c3RlbSB3cml0dGVuIGFzeW5jaHJvbm91c2x5ICovCisKKy8qCisgKiBVbm1vdW50IGZsYWdzLgor
ICovCisjZGVmaW5lIE1OVF9GT1JDRQkweDAwMDAwMDAxCS8qIGZvcmNlZCB1bm1vdW50ICovCisK
Ky8qCisgKiBleHBvcnRlZCBtb3VudCBmbGFncy4KKyAqLworI2RlZmluZQlNTlRfRVhSRE9OTFkJ
MHgwMDAwMDA4MAkvKiBleHBvcnRlZCByZWFkIG9ubHkgKi8KKyNkZWZpbmUJTU5UX0VYUE9SVEVE
CTB4MDAwMDAxMDAJLyogZmlsZSBzeXN0ZW0gaXMgZXhwb3J0ZWQgKi8KKyNkZWZpbmUJTU5UX0RF
RkVYUE9SVEVECTB4MDAwMDAyMDAJLyogZXhwb3J0ZWQgdG8gdGhlIHdvcmxkICovCisjZGVmaW5l
CU1OVF9FWFBPUlRBTk9OCTB4MDAwMDA0MDAJLyogdXNlIGFub24gdWlkIG1hcHBpbmcgZm9yIGV2
ZXJ5b25lICovCisjZGVmaW5lCU1OVF9FWEtFUkIJMHgwMDAwMDgwMAkvKiBleHBvcnRlZCB3aXRo
IEtlcmJlcm9zIHVpZCBtYXBwaW5nICovCisKKy8qCisgKiBGbGFncyBzZXQgYnkgaW50ZXJuYWwg
b3BlcmF0aW9ucy4KKyAqLworI2RlZmluZQlNTlRfTE9DQUwJMHgwMDAwMTAwMAkvKiBmaWxlc3lz
dGVtIGlzIHN0b3JlZCBsb2NhbGx5ICovCisjZGVmaW5lCU1OVF9RVU9UQQkweDAwMDAyMDAwCS8q
IHF1b3RhcyBhcmUgZW5hYmxlZCBvbiBmaWxlc3lzdGVtICovCisjZGVmaW5lCU1OVF9ST09URlMJ
MHgwMDAwNDAwMAkvKiBpZGVudGlmaWVzIHRoZSByb290IGZpbGVzeXN0ZW0gKi8KKworLyoKKyAq
IE1hc2sgb2YgZmxhZ3MgdGhhdCBhcmUgdmlzaWJsZSB0byBzdGF0ZnMoKQorICovCisjZGVmaW5l
CU1OVF9WSVNGTEFHTUFTSwkweDAwMDBmZmZmCisKKyNpZmRlZiBfS0VSTkVMCisKKy8qCisgKiBG
aWxlc3lzdGVtIHR5cGUgc3dpdGNoIHRhYmxlLgorICovCitzdHJ1Y3QgdmZzc3cgeworCWNvbnN0
IGNoYXIgICAgICAqdnNfbmFtZTsJLyogbmFtZSBvZiBmaWxlIHN5c3RlbSAqLworCWludAkJKCp2
c19pbml0KSh2b2lkKTsgLyogaW5pdGlhbGl6ZSByb3V0aW5lICovCisJc3RydWN0IHZmc29wcwkq
dnNfb3A7CQkvKiBwb2ludGVyIHRvIHZmcyBvcGVyYXRpb24gKi8KK307CisKKy8qCisgKiBPcGVy
YXRpb25zIHN1cHBvcnRlZCBvbiB2aXJ0dWFsIGZpbGUgc3lzdGVtLgorICovCitzdHJ1Y3QgdmZz
b3BzIHsKKwlpbnQgKCp2ZnNfbW91bnQpCShzdHJ1Y3QgbW91bnQgKiwgY29uc3QgY2hhciAqLCBp
bnQsIGNvbnN0IHZvaWQgKik7CisJaW50ICgqdmZzX3VubW91bnQpCShzdHJ1Y3QgbW91bnQgKiwg
aW50IGZsYWdzKTsKKwlpbnQgKCp2ZnNfc3luYykJCShzdHJ1Y3QgbW91bnQgKik7CisJaW50ICgq
dmZzX3ZnZXQpCQkoc3RydWN0IG1vdW50ICosIHN0cnVjdCB2bm9kZSAqKTsKKwlpbnQgKCp2ZnNf
c3RhdGZzKQkoc3RydWN0IG1vdW50ICosIHN0cnVjdCBzdGF0ZnMgKik7CisJc3RydWN0IHZub3Bz
CSp2ZnNfdm5vcHM7Cit9OworCit0eXBlZGVmIGludCAoKnZmc29wX21vdW50X3QpKHN0cnVjdCBt
b3VudCAqLCBjb25zdCBjaGFyICosIGludCwgY29uc3Qgdm9pZCAqKTsKK3R5cGVkZWYgaW50ICgq
dmZzb3BfdW1vdW50X3QpKHN0cnVjdCBtb3VudCAqLCBpbnQgZmxhZ3MpOwordHlwZWRlZiBpbnQg
KCp2ZnNvcF9zeW5jX3QpKHN0cnVjdCBtb3VudCAqKTsKK3R5cGVkZWYgaW50ICgqdmZzb3Bfdmdl
dF90KShzdHJ1Y3QgbW91bnQgKiwgc3RydWN0IHZub2RlICopOwordHlwZWRlZiBpbnQgKCp2ZnNv
cF9zdGF0ZnNfdCkoc3RydWN0IG1vdW50ICosIHN0cnVjdCBzdGF0ZnMgKik7CisKKy8qCisgKiBW
RlMgaW50ZXJmYWNlCisgKi8KKyNkZWZpbmUgVkZTX01PVU5UKE1QLCBERVYsIEZMLCBEQVQpICgo
TVApLT5tX29wLT52ZnNfbW91bnQpKE1QLCBERVYsIEZMLCBEQVQpCisjZGVmaW5lIFZGU19VTk1P
VU5UKE1QLCBGTCkgICAgICAgICAoKE1QKS0+bV9vcC0+dmZzX3VubW91bnQpKE1QLCBGTCkKKyNk
ZWZpbmUgVkZTX1NZTkMoTVApICAgICAgICAgICAgICAgICgoTVApLT5tX29wLT52ZnNfc3luYyko
TVApCisjZGVmaW5lIFZGU19WR0VUKE1QLCBWUCkgICAgICAgICAgICAoKE1QKS0+bV9vcC0+dmZz
X3ZnZXQpKE1QLCBWUCkKKyNkZWZpbmUgVkZTX1NUQVRGUyhNUCwgU0ZQKSAgICAgICAgICgoTVAp
LT5tX29wLT52ZnNfc3RhdGZzKShNUCwgU0ZQKQorCisjZGVmaW5lIFZGU19OVUxMCQkgICAgKCh2
b2lkICopdmZzX251bGwpCisKK2ludAl2ZnNfbnVsbG9wKHZvaWQpOworaW50CXZmc19laW52YWwo
dm9pZCk7CisKK3ZvaWQJIHZmc19idXN5KHN0cnVjdCBtb3VudCAqbXApOwordm9pZAkgdmZzX3Vu
YnVzeShzdHJ1Y3QgbW91bnQgKm1wKTsKKwordm9pZAkgcmVsZWFzZV9tcF9kZW50cmllcyhzdHJ1
Y3QgbW91bnQgKm1wKTsKKworI2VuZGlmCisKK19fRU5EX0RFQ0xTCisKKyNpZmRlZiBfX2NwbHVz
cGx1cworCisjaW5jbHVkZSA8dmVjdG9yPgorI2luY2x1ZGUgPHN0cmluZz4KKworbmFtZXNwYWNl
IG9zdiB7CisKK3N0cnVjdCBtb3VudF9kZXNjIHsKKyAgICBzdGQ6OnN0cmluZyBzcGVjaWFsOwor
ICAgIHN0ZDo6c3RyaW5nIHBhdGg7CisgICAgc3RkOjpzdHJpbmcgdHlwZTsKKyAgICBzdGQ6OnN0
cmluZyBvcHRpb25zOworfTsKKworc3RkOjp2ZWN0b3I8bW91bnRfZGVzYz4gY3VycmVudF9tb3Vu
dHMoKTsKKworfQorCisjZW5kaWYKKworI2VuZGlmCS8qICFfU1lTX01PVU5UX0hfICovCmRpZmYg
LS1naXQgYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvcHJleC5oIGIvbGliL3Zmc2NvcmUv
aW5jbHVkZS92ZnNjb3JlL3ByZXguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MC4uNDM2NTAzNDAKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2Nv
cmUvcHJleC5oCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQ2xv
dWRpdXMgU3lzdGVtcywgTHRkLgorICoKKyAqIFRoaXMgd29yayBpcyBvcGVuIHNvdXJjZSBzb2Z0
d2FyZSwgbGljZW5zZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZQorICogQlNEIGxpY2Vuc2UgYXMg
ZGVzY3JpYmVkIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHRvcC1sZXZlbCBkaXJlY3Rvcnku
CisgKi8KKworI2lmbmRlZiBfT1NWX1BSRVhfSAorI2RlZmluZSBfT1NWX1BSRVhfSCAxCisKKwor
I2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPG9zdi9mY250bC5oPgorCitfX0JFR0lOX0RF
Q0xTCisKKyNkZWZpbmUgX19wYWNrZWQgICAgICAgIF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18p
KQorCisjZGVmaW5lCUJTSVpFCTUxMgkJLyogc2l6ZSBvZiBzZWNvbmRhcnkgYmxvY2sgKGJ5dGVz
KSAqLworCisjZGVmaW5lIERPX1JEV1IJCTB4MgorCisjZGVmaW5lIFBBR0VfU0laRQk0MDk2Cisj
ZGVmaW5lIFBBR0VfTUFTSwkoUEFHRV9TSVpFLTEpCisjZGVmaW5lIHJvdW5kX3BhZ2UoeCkJKCgo
eCkgKyBQQUdFX01BU0spICYgflBBR0VfTUFTSykKKworc2l6ZV90IHN0cmxjYXQoY2hhciAqZHN0
LCBjb25zdCBjaGFyICpzcmMsIHNpemVfdCBzaXopOworc2l6ZV90IHN0cmxjcHkoY2hhciAqZHN0
LCBjb25zdCBjaGFyICpzcmMsIHNpemVfdCBzaXopOworCit2b2lkIHN5c19wYW5pYyhjb25zdCBj
aGFyICopOworCitfX0VORF9ERUNMUworCisjZW5kaWYgLyogX09TVl9QUkVYX0ggKi8KZGlmZiAt
LWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS91aW8uaCBiL2xpYi92ZnNjb3JlL2lu
Y2x1ZGUvdmZzY29yZS91aW8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4u
Njk2YjAxY2YKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUv
dWlvLmgKQEAgLTAsMCArMSw4OSBAQAorLyotCisgKiBDb3B5cmlnaHQgKGMpIDE5ODIsIDE5ODYs
IDE5OTMsIDE5OTQKKyAqCVRoZSBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3Ju
aWEuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogNC4gTmVpdGhlciB0aGUgbmFt
ZSBvZiB0aGUgVW5pdmVyc2l0eSBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKKyAq
ICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20gdGhpcyBzb2Z0d2FyZQorICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgUkVHRU5U
UyBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IFJFR0VOVFMgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwK
KyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
CisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4K
KyAqCisgKglAKCMpdWlvLmgJOC41IChCZXJrZWxleSkgMi8yMi85NAorICogJEZyZWVCU0QkCisg
Ki8KKworI2lmbmRlZiBfVUlPX0hfCisjZGVmaW5lCV9VSU9fSF8KKworI2luY2x1ZGUgPHN5cy9j
ZGVmcy5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy91aW8uaD4KKyNp
bmNsdWRlIDxsaW1pdHMuaD4KKworX19CRUdJTl9ERUNMUworCitlbnVtCXVpb19ydyB7IFVJT19S
RUFELCBVSU9fV1JJVEUgfTsKKworLyoKKyAqIFNhZmUgZGVmYXVsdCB0byBwcmV2ZW50IHBvc3Np
YmxlIG92ZXJmbG93cyBpbiB1c2VyIGNvZGUsIG90aGVyd2lzZSBjb3VsZAorICogYmUgU1NJWkVf
VF9NQVguCisgKi8KKyNkZWZpbmUgSU9TSVpFX01BWCAgICAgIElOVF9NQVgKKworI2RlZmluZSBV
SU9fTUFYSU9WIDEwMjQKKworI2RlZmluZSBVSU9fU1lTU1BBQ0UgMAorCitzdHJ1Y3QgdWlvIHsK
KwlzdHJ1Y3QgaW92ZWMgKnVpb19pb3Y7CQkvKiBzY2F0dGVyL2dhdGhlciBsaXN0ICovCisJaW50
CXVpb19pb3ZjbnQ7CQkvKiBsZW5ndGggb2Ygc2NhdHRlci9nYXRoZXIgbGlzdCAqLworCW9mZl90
CXVpb19vZmZzZXQ7CQkvKiBvZmZzZXQgaW4gdGFyZ2V0IG9iamVjdCAqLworCXNzaXplX3QJdWlv
X3Jlc2lkOwkJLyogcmVtYWluaW5nIGJ5dGVzIHRvIHByb2Nlc3MgKi8KKwllbnVtCXVpb19ydyB1
aW9fcnc7CQkvKiBvcGVyYXRpb24gKi8KK307CisKK2ludAl1aW9tb3ZlKHZvaWQgKmNwLCBpbnQg
biwgc3RydWN0IHVpbyAqdWlvKTsKKworX19FTkRfREVDTFMKKworI2lmZGVmIF9fY3BsdXNwbHVz
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBGPgorc3RhdGljIGlubGluZSB2b2lkIGxpbmVhcml6ZV91
aW9fd3JpdGUoc3RydWN0IHVpbyAqdWlvLCBpbnQgaW9mbGFnLCBGIGYpCit7CisgICAgd2hpbGUg
KHVpby0+dWlvX3Jlc2lkID4gMCkgeworICAgICAgICBzdHJ1Y3QgaW92ZWMgKmlvdiA9IHVpby0+
dWlvX2lvdjsKKworICAgICAgICBpZiAoaW92LT5pb3ZfbGVuKSB7CisgICAgICAgICAgICBmKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhciAqPihpb3YtPmlvdl9iYXNlKSwKKyAgICAgICAgICAg
ICAgICBpb3YtPmlvdl9sZW4pOworICAgICAgICB9CisKKyAgICAgICAgdWlvLT51aW9faW92Kys7
CisgICAgICAgIHVpby0+dWlvX2lvdmNudC0tOworICAgICAgICB1aW8tPnVpb19yZXNpZCAtPSBp
b3YtPmlvdl9sZW47CisgICAgICAgIHVpby0+dWlvX29mZnNldCArPSBpb3YtPmlvdl9sZW47Cisg
ICAgfQorfQorCisjZW5kaWYKKworI2VuZGlmIC8qICFfVUlPX0hfICovCmRpZmYgLS1naXQgYS9s
aWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUuaCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUv
dmZzY29yZS92bm9kZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi5lMzVh
YTgzMAotLS0gL2Rldi9udWxsCisrKyBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9k
ZS5oCkBAIC0wLDAgKzEsMjQ2IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA1LTIwMDcsIEtv
aHN1a2UgT2h0YW5pCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gTmVp
dGhlciB0aGUgbmFtZSBvZiB0aGUgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgYW55IGNvLWNvbnRy
aWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCisgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIF9TWVNfVk5PREVfSF8KKyNkZWZpbmUgX1NZU19WTk9E
RV9IXworCisjaWZkZWYgX0tFUk5FTAorCisjaW5jbHVkZSA8c3lzL2NkZWZzLmg+CisjaW5jbHVk
ZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxvc3YvcHJleC5oPgorI2luY2x1ZGUgPG9zdi91aW8u
aD4KKyNpbmNsdWRlIDxvc3YvbXV0ZXguaD4KKyNpbmNsdWRlICJmaWxlLmgiCisjaW5jbHVkZSAi
ZGlyZW50LmgiCisKK19fQkVHSU5fREVDTFMKKworc3RydWN0IHZmc29wczsKK3N0cnVjdCB2bm9w
czsKK3N0cnVjdCB2bm9kZTsKK3N0cnVjdCBmaWxlOworCisvKgorICogVm5vZGUgdHlwZXMuCisg
Ki8KK2VudW0gdnR5cGUgeworCVZOT04sCSAgICAvKiBubyB0eXBlICovCisJVlJFRywJICAgIC8q
IHJlZ3VsYXIgZmlsZSAgKi8KKwlWRElSLAkgICAgLyogZGlyZWN0b3J5ICovCisJVkJMSywJICAg
IC8qIGJsb2NrIGRldmljZSAqLworCVZDSFIsCSAgICAvKiBjaGFyYWN0ZXIgZGV2aWNlICovCisJ
VkxOSywJICAgIC8qIHN5bWJvbGljIGxpbmsgKi8KKwlWU09DSywJICAgIC8qIHNvY2tzICovCisJ
VkZJRk8sCSAgICAvKiBGSUZPICovCisJVkJBRAorfTsKKworLyoKKyAqIFJlYWRpbmcgb3Igd3Jp
dGluZyBhbnkgb2YgdGhlc2UgaXRlbXMgcmVxdWlyZXMgaG9sZGluZyB0aGUKKyAqIGFwcHJvcHJp
YXRlIGxvY2suCisgKi8KK3N0cnVjdCB2bm9kZSB7CisJdWludDY0X3QJdl9pbm87CQkvKiBpbm9k
ZSBudW1iZXIgKi8KKwlMSVNUX0VOVFJZKHZub2RlKSB2X2xpbms7CS8qIGxpbmsgZm9yIGhhc2gg
bGlzdCAqLworCXN0cnVjdCBtb3VudAkqdl9tb3VudDsJLyogbW91bnRlZCB2ZnMgcG9pbnRlciAq
LworCXN0cnVjdCB2bm9wcwkqdl9vcDsJCS8qIHZub2RlIG9wZXJhdGlvbnMgKi8KKwlpbnQJCXZf
cmVmY250OwkvKiByZWZlcmVuY2UgY291bnQgKi8KKwlpbnQJCXZfdHlwZTsJCS8qIHZub2RlIHR5
cGUgKi8KKwlpbnQJCXZfZmxhZ3M7CS8qIHZub2RlIGZsYWcgKi8KKwltb2RlX3QJCXZfbW9kZTsJ
CS8qIGZpbGUgbW9kZSAqLworCW9mZl90CQl2X3NpemU7CQkvKiBmaWxlIHNpemUgKi8KKwltdXRl
eF90CQl2X2xvY2s7CQkvKiBsb2NrIGZvciB0aGlzIHZub2RlICovCisJTElTVF9IRUFEKCwgZGVu
dHJ5KSB2X25hbWVzOwkvKiBkaXJlY3RvcnkgZW50cmllcyBwb2ludGluZyBhdCB0aGlzICovCisJ
aW50CQl2X25ybG9ja3M7CS8qIGxvY2sgY291bnQgKGZvciBkZWJ1ZykgKi8KKwl2b2lkCQkqdl9k
YXRhOwkvKiBwcml2YXRlIGRhdGEgZm9yIGZzICovCit9OworCisvKiBmbGFncyBmb3Igdm5vZGUg
Ki8KKyNkZWZpbmUgVlJPT1QJCTB4MDAwMQkJLyogcm9vdCBvZiBpdHMgZmlsZSBzeXN0ZW0gKi8K
KyNkZWZpbmUgVklTVFRZCQkweDAwMDIJCS8qIGRldmljZSBpcyB0dHkgKi8KKyNkZWZpbmUgVlBS
T1RERVYJMHgwMDA0CQkvKiBwcm90ZWN0ZWQgZGV2aWNlICovCisKKy8qCisgKiBWbm9kZSBhdHRy
aWJ1dGUKKyAqLworc3RydWN0IHZhdHRyIHsKKwl1bnNpZ25lZCBpbnQJdmFfbWFzazsKKwllbnVt
IHZ0eXBlCXZhX3R5cGU7CS8qIHZub2RlIHR5cGUgKi8KKwltb2RlX3QJCXZhX21vZGU7CS8qIGZp
bGUgYWNjZXNzIG1vZGUgKi8KKwlubGlua190CQl2YV9ubGluazsKKwl1aWRfdAkJdmFfdWlkOwor
CWdpZF90CQl2YV9naWQ7CisJZGV2X3QgICAgICAgICAgIHZhX2ZzaWQ7ICAgICAgICAvKiBpZCBv
ZiB0aGUgdW5kZXJseWluZyBmaWxlc3lzdGVtICovCisJaW5vX3QJCXZhX25vZGVpZDsKKwlzdHJ1
Y3QgdGltZXNwZWMJdmFfYXRpbWU7CisJc3RydWN0IHRpbWVzcGVjCXZhX210aW1lOworCXN0cnVj
dCB0aW1lc3BlYwl2YV9jdGltZTsKKwlkZXZfdAkJdmFfcmRldjsKKwl1aW50NjRfdAl2YV9uYmxv
Y2tzOworCW9mZl90CQl2YV9zaXplOworfTsKKworLyoKKyAqICBNb2Rlcy4KKyAqLworI2RlZmlu
ZSBWQVBQRU5EIDAwMDEwCisjZGVmaW5lCVZSRUFECTAwMDA0CQkvKiByZWFkLCB3cml0ZSwgZXhl
Y3V0ZSBwZXJtaXNzaW9ucyAqLworI2RlZmluZQlWV1JJVEUJMDAwMDIKKyNkZWZpbmUJVkVYRUMJ
MDAwMDEKKworI2RlZmluZSBJT19BUFBFTkQJMHgwMDAxCisjZGVmaW5lIElPX1NZTkMJCTB4MDAw
MgorCisvKgorICogQVJDIGFjdGlvbnMKKyAqLworI2RlZmluZSBBUkNfQUNUSU9OX1FVRVJZICAg
IDAKKyNkZWZpbmUgQVJDX0FDVElPTl9IT0xEICAgICAxCisjZGVmaW5lIEFSQ19BQ1RJT05fUkVM
RUFTRSAgMgorCit0eXBlZGVmCWludCAoKnZub3Bfb3Blbl90KQkoc3RydWN0IGZpbGUgKik7Cit0
eXBlZGVmCWludCAoKnZub3BfY2xvc2VfdCkJKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgZmlsZSAq
KTsKK3R5cGVkZWYJaW50ICgqdm5vcF9yZWFkX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IGZp
bGUgKiwgc3RydWN0IHVpbyAqLCBpbnQpOwordHlwZWRlZglpbnQgKCp2bm9wX3dyaXRlX3QpCShz
dHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHVpbyAqLCBpbnQpOwordHlwZWRlZglpbnQgKCp2bm9wX3Nl
ZWtfdCkJKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgZmlsZSAqLCBvZmZfdCwgb2ZmX3QpOwordHlw
ZWRlZglpbnQgKCp2bm9wX2lvY3RsX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IGZpbGUgKiwg
dV9sb25nLCB2b2lkICopOwordHlwZWRlZglpbnQgKCp2bm9wX2ZzeW5jX3QpCShzdHJ1Y3Qgdm5v
ZGUgKiwgc3RydWN0IGZpbGUgKik7Cit0eXBlZGVmCWludCAoKnZub3BfcmVhZGRpcl90KQkoc3Ry
dWN0IHZub2RlICosIHN0cnVjdCBmaWxlICosIHN0cnVjdCBkaXJlbnQgKik7Cit0eXBlZGVmCWlu
dCAoKnZub3BfbG9va3VwX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgY2hhciAqLCBzdHJ1Y3Qgdm5vZGUg
KiopOwordHlwZWRlZglpbnQgKCp2bm9wX2NyZWF0ZV90KQkoc3RydWN0IHZub2RlICosIGNoYXIg
KiwgbW9kZV90KTsKK3R5cGVkZWYJaW50ICgqdm5vcF9yZW1vdmVfdCkJKHN0cnVjdCB2bm9kZSAq
LCBzdHJ1Y3Qgdm5vZGUgKiwgY2hhciAqKTsKK3R5cGVkZWYJaW50ICgqdm5vcF9yZW5hbWVfdCkJ
KHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3Qgdm5vZGUgKiwgY2hhciAqLAorCQkJCSBzdHJ1Y3Qgdm5v
ZGUgKiwgc3RydWN0IHZub2RlICosIGNoYXIgKik7Cit0eXBlZGVmCWludCAoKnZub3BfbWtkaXJf
dCkJKHN0cnVjdCB2bm9kZSAqLCBjaGFyICosIG1vZGVfdCk7Cit0eXBlZGVmCWludCAoKnZub3Bf
cm1kaXJfdCkJKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3Qgdm5vZGUgKiwgY2hhciAqKTsKK3R5cGVk
ZWYJaW50ICgqdm5vcF9nZXRhdHRyX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHZhdHRyICop
OwordHlwZWRlZglpbnQgKCp2bm9wX3NldGF0dHJfdCkJKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3Qg
dmF0dHIgKik7Cit0eXBlZGVmCWludCAoKnZub3BfaW5hY3RpdmVfdCkJKHN0cnVjdCB2bm9kZSAq
KTsKK3R5cGVkZWYJaW50ICgqdm5vcF90cnVuY2F0ZV90KQkoc3RydWN0IHZub2RlICosIG9mZl90
KTsKK3R5cGVkZWYJaW50ICgqdm5vcF9saW5rX3QpICAgICAgKHN0cnVjdCB2bm9kZSAqLCBzdHJ1
Y3Qgdm5vZGUgKiwgY2hhciAqKTsKK3R5cGVkZWYgaW50ICgqdm5vcF9jYWNoZV90KSAoc3RydWN0
IHZub2RlICosIHN0cnVjdCBmaWxlICosIHN0cnVjdCB1aW8gKik7Cit0eXBlZGVmIGludCAoKnZu
b3BfZmFsbG9jYXRlX3QpIChzdHJ1Y3Qgdm5vZGUgKiwgaW50LCBsb2ZmX3QsIGxvZmZfdCk7Cit0
eXBlZGVmIGludCAoKnZub3BfcmVhZGxpbmtfdCkgIChzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHVp
byAqKTsKK3R5cGVkZWYgaW50ICgqdm5vcF9zeW1saW5rX3QpICAgKHN0cnVjdCB2bm9kZSAqLCBj
aGFyICosIGNoYXIgKik7CisKKy8qCisgKiB2bm9kZSBvcGVyYXRpb25zCisgKi8KK3N0cnVjdCB2
bm9wcyB7CisJdm5vcF9vcGVuX3QJCXZvcF9vcGVuOworCXZub3BfY2xvc2VfdAkJdm9wX2Nsb3Nl
OworCXZub3BfcmVhZF90CQl2b3BfcmVhZDsKKwl2bm9wX3dyaXRlX3QJCXZvcF93cml0ZTsKKwl2
bm9wX3NlZWtfdAkJdm9wX3NlZWs7CisJdm5vcF9pb2N0bF90CQl2b3BfaW9jdGw7CisJdm5vcF9m
c3luY190CQl2b3BfZnN5bmM7CisJdm5vcF9yZWFkZGlyX3QJCXZvcF9yZWFkZGlyOworCXZub3Bf
bG9va3VwX3QJCXZvcF9sb29rdXA7CisJdm5vcF9jcmVhdGVfdAkJdm9wX2NyZWF0ZTsKKwl2bm9w
X3JlbW92ZV90CQl2b3BfcmVtb3ZlOworCXZub3BfcmVuYW1lX3QJCXZvcF9yZW5hbWU7CisJdm5v
cF9ta2Rpcl90CQl2b3BfbWtkaXI7CisJdm5vcF9ybWRpcl90CQl2b3Bfcm1kaXI7CisJdm5vcF9n
ZXRhdHRyX3QJCXZvcF9nZXRhdHRyOworCXZub3Bfc2V0YXR0cl90CQl2b3Bfc2V0YXR0cjsKKwl2
bm9wX2luYWN0aXZlX3QJCXZvcF9pbmFjdGl2ZTsKKwl2bm9wX3RydW5jYXRlX3QJCXZvcF90cnVu
Y2F0ZTsKKwl2bm9wX2xpbmtfdAkJdm9wX2xpbms7CisJdm5vcF9jYWNoZV90CQl2b3BfY2FjaGU7
CisJdm5vcF9mYWxsb2NhdGVfdAl2b3BfZmFsbG9jYXRlOworCXZub3BfcmVhZGxpbmtfdAkJdm9w
X3JlYWRsaW5rOworCXZub3Bfc3ltbGlua190CQl2b3Bfc3ltbGluazsKK307CisKKy8qCisgKiB2
bm9kZSBpbnRlcmZhY2UKKyAqLworI2RlZmluZSBWT1BfT1BFTihWUCwgRlApCSAgICgoVlApLT52
X29wLT52b3Bfb3BlbikoRlApCisjZGVmaW5lIFZPUF9DTE9TRShWUCwgRlApCSAgICgoVlApLT52
X29wLT52b3BfY2xvc2UpKFZQLCBGUCkKKyNkZWZpbmUgVk9QX1JFQUQoVlAsIEZQLCBVLCBGKQkg
ICAoKFZQKS0+dl9vcC0+dm9wX3JlYWQpKFZQLCBGUCwgVSwgRikKKyNkZWZpbmUgVk9QX0NBQ0hF
KFZQLCBGUCwgVSkJICAgKChWUCktPnZfb3AtPnZvcF9jYWNoZSkoVlAsIEZQLCBVKQorI2RlZmlu
ZSBWT1BfV1JJVEUoVlAsIFUsIEYpCSAgICgoVlApLT52X29wLT52b3Bfd3JpdGUpKFZQLCBVLCBG
KQorI2RlZmluZSBWT1BfU0VFSyhWUCwgRlAsIE9MRCwgTkVXKSAoKFZQKS0+dl9vcC0+dm9wX3Nl
ZWspKFZQLCBGUCwgT0xELCBORVcpCisjZGVmaW5lIFZPUF9JT0NUTChWUCwgRlAsIEMsIEEpCSAg
ICgoVlApLT52X29wLT52b3BfaW9jdGwpKFZQLCBGUCwgQywgQSkKKyNkZWZpbmUgVk9QX0ZTWU5D
KFZQLCBGUCkJICAgKChWUCktPnZfb3AtPnZvcF9mc3luYykoVlAsIEZQKQorI2RlZmluZSBWT1Bf
UkVBRERJUihWUCwgRlAsIERJUikgICAoKFZQKS0+dl9vcC0+dm9wX3JlYWRkaXIpKFZQLCBGUCwg
RElSKQorI2RlZmluZSBWT1BfTE9PS1VQKERWUCwgTiwgVlApCSAgICgoRFZQKS0+dl9vcC0+dm9w
X2xvb2t1cCkoRFZQLCBOLCBWUCkKKyNkZWZpbmUgVk9QX0NSRUFURShEVlAsIE4sIE0pCSAgICgo
RFZQKS0+dl9vcC0+dm9wX2NyZWF0ZSkoRFZQLCBOLCBNKQorI2RlZmluZSBWT1BfUkVNT1ZFKERW
UCwgVlAsIE4pCSAgICgoRFZQKS0+dl9vcC0+dm9wX3JlbW92ZSkoRFZQLCBWUCwgTikKKyNkZWZp
bmUgVk9QX1JFTkFNRShEVlAxLCBWUDEsIE4xLCBEVlAyLCBWUDIsIE4yKSBcCisJCQkgICAoKERW
UDEpLT52X29wLT52b3BfcmVuYW1lKShEVlAxLCBWUDEsIE4xLCBEVlAyLCBWUDIsIE4yKQorI2Rl
ZmluZSBWT1BfTUtESVIoRFZQLCBOLCBNKQkgICAoKERWUCktPnZfb3AtPnZvcF9ta2RpcikoRFZQ
LCBOLCBNKQorI2RlZmluZSBWT1BfUk1ESVIoRFZQLCBWUCwgTikJICAgKChEVlApLT52X29wLT52
b3Bfcm1kaXIpKERWUCwgVlAsIE4pCisjZGVmaW5lIFZPUF9HRVRBVFRSKFZQLCBWQVApCSAgICgo
VlApLT52X29wLT52b3BfZ2V0YXR0cikoVlAsIFZBUCkKKyNkZWZpbmUgVk9QX1NFVEFUVFIoVlAs
IFZBUCkJICAgKChWUCktPnZfb3AtPnZvcF9zZXRhdHRyKShWUCwgVkFQKQorI2RlZmluZSBWT1Bf
SU5BQ1RJVkUoVlApCSAgICgoVlApLT52X29wLT52b3BfaW5hY3RpdmUpKFZQKQorI2RlZmluZSBW
T1BfVFJVTkNBVEUoVlAsIE4pCSAgICgoVlApLT52X29wLT52b3BfdHJ1bmNhdGUpKFZQLCBOKQor
I2RlZmluZSBWT1BfTElOSyhEVlAsIFNWUCwgTikgCSAgICgoRFZQKS0+dl9vcC0+dm9wX2xpbmsp
KERWUCwgU1ZQLCBOKQorI2RlZmluZSBWT1BfRkFMTE9DQVRFKFZQLCBNLCBPRkYsIExFTikgKChW
UCktPnZfb3AtPnZvcF9mYWxsb2NhdGUpKFZQLCBNLCBPRkYsIExFTikKKyNkZWZpbmUgVk9QX1JF
QURMSU5LKFZQLCBVKSAgICAgICAgKChWUCktPnZfb3AtPnZvcF9yZWFkbGluaykoVlAsIFUpCisj
ZGVmaW5lIFZPUF9TWU1MSU5LKERWUCwgT1AsIE5QKSAgICgoRFZQKS0+dl9vcC0+dm9wX3N5bWxp
bmspKERWUCwgT1AsIE5QKQorCitpbnQJIHZvcF9udWxsb3Aodm9pZCk7CitpbnQJIHZvcF9laW52
YWwodm9pZCk7CitpbnQJIHZvcF9lcGVybSh2b2lkKTsKK2ludAkgdm9wX2Vyb2ZzKHZvaWQpOwor
c3RydWN0IHZub2RlICp2bl9sb29rdXAoc3RydWN0IG1vdW50ICosIHVpbnQ2NF90KTsKK3ZvaWQJ
IHZuX2xvY2soc3RydWN0IHZub2RlICopOwordm9pZAkgdm5fdW5sb2NrKHN0cnVjdCB2bm9kZSAq
KTsKK2ludAkgdm5fc3RhdChzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHN0YXQgKik7CitpbnQJIHZu
X3NldHRpbWVzKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgdGltZXNwZWNbMl0pOworaW50CSB2bl9z
ZXRtb2RlKHN0cnVjdCB2bm9kZSAqLCBtb2RlX3QgbW9kZSk7CitpbnQJIHZuX2FjY2VzcyhzdHJ1
Y3Qgdm5vZGUgKiwgaW50KTsKK2ludAkgdmdldChzdHJ1Y3QgbW91bnQgKiwgdWludDY0X3QgaW5v
LCBzdHJ1Y3Qgdm5vZGUgKip2cHApOwordm9pZAkgdnB1dChzdHJ1Y3Qgdm5vZGUgKik7Cit2b2lk
CSB2cmVmKHN0cnVjdCB2bm9kZSAqKTsKK3ZvaWQJIHZyZWxlKHN0cnVjdCB2bm9kZSAqKTsKK3Zv
aWQJIHZmbHVzaChzdHJ1Y3QgbW91bnQgKik7Cit2b2lkIHZuX2FkZF9uYW1lKHN0cnVjdCB2bm9k
ZSAqLCBzdHJ1Y3QgZGVudHJ5ICopOwordm9pZCB2bl9kZWxfbmFtZShzdHJ1Y3Qgdm5vZGUgKiwg
c3RydWN0IGRlbnRyeSAqKTsKKworZXh0ZXJuIGVudW0gdnR5cGUgaWZ0b3Z0X3RhYltdOworZXh0
ZXJuIGludCB2dHRvaWZfdGFiW107CisjZGVmaW5lIElGVE9WVChtb2RlKSAgICAoaWZ0b3Z0X3Rh
YlsoKG1vZGUpICYgU19JRk1UKSA+PiAxMl0pCisjZGVmaW5lIFZUVE9JRihpbmR4KQkodnR0b2lm
X3RhYlsoaW50KShpbmR4KV0pCisjZGVmaW5lIE1BS0VJTU9ERShpbmR4LCBtb2RlKSAgIChpbnQp
KFZUVE9JRihpbmR4KSB8IChtb2RlKSkKKworI2RlZmluZSBWQVRUUl9OVUxMKHZwKSAoKih2cCkg
PSAodmF0dHJfdCl7fSkKKworc3RhdGljIGlubGluZSB2b2lkIHZub2RlX3BhZ2VyX3NldHNpemUo
c3RydWN0IHZub2RlICp2cCwgb2ZmX3Qgc2l6ZSkKK3sKKwl2cC0+dl9zaXplID0gc2l6ZTsKK30K
KworX19FTkRfREVDTFMKKworI2VuZGlmCisKKyNlbmRpZiAvKiAhX1NZU19WTk9ERV9IXyAqLwpk
aWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvbG9va3VwLmMgYi9saWIvdmZzY29yZS9sb29rdXAuYwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uYWQwM2ZlMjUKLS0tIC9kZXYvbnVs
bAorKysgYi9saWIvdmZzY29yZS9sb29rdXAuYwpAQCAtMCwwICsxLDM3NSBAQAorLyoKKyAqIENv
cHlyaWdodCAoYykgMjAwNS0yMDA3LCBLb2hzdWtlIE9odGFuaQorICogQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGF1dGhvciBub3Ig
dGhlIG5hbWVzIG9mIGFueSBjby1jb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQorICog
ICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICog
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQor
ICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgPHVuaXN0
ZC5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8
c3RkbGliLmg+CisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisKKyNpbmNsdWRlIDxvc3YvZGVudHJ5
Lmg+CisjaW5jbHVkZSA8b3N2L3Zub2RlLmg+CisjaW5jbHVkZSAidmZzLmgiCisKK3N0YXRpYyBz
c2l6ZV90CityZWFkX2xpbmsoc3RydWN0IHZub2RlICp2cCwgY2hhciAqYnVmLCBzaXplX3QgYnVm
c3osIHNzaXplX3QgKnN6KQoreworICAgIHN0cnVjdCBpb3ZlYyBpb3YgPSB7YnVmLCBidWZzen07
CisgICAgc3RydWN0IHVpbyAgIHVpbyA9IHsmaW92LCAxLCAwLCAoc3NpemVfdCkgYnVmc3osIFVJ
T19SRUFEfTsKKyAgICBpbnQgcmM7CisKKyAgICAqc3ogPSAwOworICAgIHZuX2xvY2sodnApOwor
ICAgIHJjICA9IFZPUF9SRUFETElOSyh2cCwgJnVpbyk7CisgICAgdm5fdW5sb2NrKHZwKTsKKwor
ICAgIGlmIChyYyAhPSAwKSB7CisgICAgICAgIHJldHVybiAocmMpOworICAgIH0KKworICAgICpz
eiA9IGJ1ZnN6IC0gdWlvLnVpb19yZXNpZDsKKyAgICByZXR1cm4gKDApOworfQorCitpbnQKK25h
bWVpX2ZvbGxvd19saW5rKHN0cnVjdCBkZW50cnkgKmRwLCBjaGFyICpub2RlLCBjaGFyICpuYW1l
LCBjaGFyICpmcCwgc2l6ZV90IG1vdW50cG9pbnRfbGVuKQoreworICAgIHN0ZDo6dW5pcXVlX3B0
cjxjaGFyIFtdPiBsaW5rIChuZXcgY2hhcltQQVRIX01BWF0pOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxjaGFyIFtdPiB0IChuZXcgY2hhcltQQVRIX01BWF0pOworICAgIGNoYXIgICAgKmxwOworICAg
IGludCAgICAgZXJyb3I7CisgICAgc3NpemVfdCBzejsKKyAgICBjaGFyICAgICpwOworICAgIGlu
dCAgICAgYzsKKworICAgIGxwICAgID0gbGluay5nZXQoKTsKKyAgICBlcnJvciA9IHJlYWRfbGlu
ayhkcC0+ZF92bm9kZSwgbHAsIFBBVEhfTUFYLCAmc3opOworICAgIGlmIChlcnJvciAhPSAwKSB7
CisgICAgICAgIHJldHVybiAoZXJyb3IpOworICAgIH0KKyAgICBscFtzel0gPSAwOworCisgICAg
cCA9IGZwICsgbW91bnRwb2ludF9sZW4gKyBzdHJsZW4obm9kZSk7CisgICAgYyA9IHN0cmxlbihu
b2RlKSAtIHN0cmxlbihuYW1lKSAtIDE7CisgICAgbm9kZVtjXSA9IDA7CisKKyAgICBpZiAobHBb
MF0gPT0gJy8nKSB7CisgICAgICAgIHN0cmxjYXQobHAsIHAsIFBBVEhfTUFYKTsKKyAgICAgICAg
c3RybGNweShmcCwgbHAsIFBBVEhfTUFYKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzdHJsY3B5
KHQuZ2V0KCksIHAsIFBBVEhfTUFYKTsKKyAgICAgICAgc3RybGNweShub2RlLCBmcCwgbW91bnRw
b2ludF9sZW4gKyBjICsgMSk7CisgICAgICAgIHBhdGhfY29udihub2RlLCBscCwgZnApOworICAg
ICAgICBzdHJsY2F0KGZwLCB0LmdldCgpLCBQQVRIX01BWCk7CisgICAgfQorICAgIG5vZGVbMF0g
PSAwOworICAgIG5hbWVbMF0gPSAwOworICAgIHJldHVybiAoMCk7Cit9CisvKgorICogQ29udmVy
dCBhIHBhdGhuYW1lIGludG8gYSBwb2ludGVyIHRvIGEgZGVudHJ5CisgKgorICogQHBhdGg6IGZ1
bGwgcGF0aCBuYW1lLgorICogQGRwcDogIGRlbnRyeSB0byBiZSByZXR1cm5lZC4KKyAqLworaW50
CituYW1laShjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3QgZGVudHJ5ICoqZHBwKQoreworICAgIGNo
YXIgKnA7CisgICAgY2hhciBub2RlW1BBVEhfTUFYXTsKKyAgICBjaGFyIG5hbWVbUEFUSF9NQVhd
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxjaGFyIFtdPiBmcCAobmV3IGNoYXIgW1BBVEhfTUFYXSk7
CisgICAgc3RkOjp1bmlxdWVfcHRyPGNoYXIgW10+IHQgKG5ldyBjaGFyIFtQQVRIX01BWF0pOwor
ICAgIHN0cnVjdCBtb3VudCAqbXA7CisgICAgc3RydWN0IGRlbnRyeSAqZHAsICpkZHA7CisgICAg
c3RydWN0IHZub2RlICpkdnAsICp2cDsKKyAgICBpbnQgZXJyb3IsIGk7CisgICAgaW50IGxpbmtz
X2ZvbGxvd2VkOworICAgIGJvb2wgbmVlZF9jb250aW51ZTsKKworICAgIERQUklOVEYoVkZTREJf
Vk5PREUsICgibmFtZWk6IHBhdGg9JXNcbiIsIHBhdGgpKTsKKworICAgIGxpbmtzX2ZvbGxvd2Vk
ID0gMDsKKyAgICBzdHJsY3B5KGZwLmdldCgpLCBwYXRoLCBQQVRIX01BWCk7CisKKyAgICBkbyB7
CisgICAgICAgIG5lZWRfY29udGludWUgPSBmYWxzZTsKKyAgICAgICAgLyoKKyAgICAgICAgICog
Q29udmVydCBhIGZ1bGwgcGF0aCBuYW1lIHRvIGl0cyBtb3VudCBwb2ludCBhbmQKKyAgICAgICAg
ICogdGhlIGxvY2FsIG5vZGUgaW4gdGhlIGZpbGUgc3lzdGVtLgorICAgICAgICAgKi8KKyAgICAg
ICAgaWYgKHZmc19maW5kcm9vdChmcC5nZXQoKSwgJm1wLCAmcCkpIHsKKyAgICAgICAgICAgIHJl
dHVybiBFTk9URElSOworICAgICAgICB9CisgICAgICAgIGludCBtb3VudHBvaW50X2xlbiA9IHAg
LSBmcC5nZXQoKSAtIDE7CisgICAgICAgIHN0cmxjcHkobm9kZSwgIi8iLCBzaXplb2Yobm9kZSkp
OworICAgICAgICBzdHJsY2F0KG5vZGUsIHAsIHNpemVvZihub2RlKSk7CisgICAgICAgIGRwID0g
ZGVudHJ5X2xvb2t1cChtcCwgbm9kZSk7CisgICAgICAgIGlmIChkcCkgeworICAgICAgICAgICAg
Lyogdm5vZGUgaXMgYWxyZWFkeSBhY3RpdmUuICovCisgICAgICAgICAgICAqZHBwID0gZHA7Cisg
ICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICAvKgorICAgICAgICAgKiBG
aW5kIHRhcmdldCB2bm9kZSwgc3RhcnRlZCBmcm9tIHJvb3QgZGlyZWN0b3J5LgorICAgICAgICAg
KiBUaGlzIGlzIGRvbmUgdG8gYXR0YWNoIHRoZSBmcyBzcGVjaWZpYyBkYXRhIHRvCisgICAgICAg
ICAqIHRoZSB0YXJnZXQgdm5vZGUuCisgICAgICAgICAqLworICAgICAgICBkZHAgPSBtcC0+bV9y
b290OworICAgICAgICBpZiAoIWRkcCkgeworICAgICAgICAgICAgc3lzX3BhbmljKCJWRlM6IG5v
IHJvb3QiKTsKKyAgICAgICAgfQorICAgICAgICBkcmVmKGRkcCk7CisKKyAgICAgICAgbm9kZVsw
XSA9ICdcMCc7CisKKyAgICAgICAgd2hpbGUgKCpwICE9ICdcMCcpIHsKKyAgICAgICAgICAgIC8q
CisgICAgICAgICAgICAgKiBHZXQgbG93ZXIgZGlyZWN0b3J5L2ZpbGUgbmFtZS4KKyAgICAgICAg
ICAgICAqLworICAgICAgICAgICAgd2hpbGUgKCpwID09ICcvJykgeworICAgICAgICAgICAgICAg
IHArKzsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCpwID09ICdcMCcpIHsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZm9yIChp
ID0gMDsgaSA8IFBBVEhfTUFYOyBpKyspIHsKKyAgICAgICAgICAgICAgICBpZiAoKnAgPT0gJ1ww
JyB8fCAqcCA9PSAnLycpIHsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIG5hbWVbaV0gPSAqcCsrOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgbmFtZVtpXSA9ICdcMCc7CisKKyAgICAgICAgICAgIC8qCisgICAgICAgICAg
ICAgKiBHZXQgYSB2bm9kZSBmb3IgdGhlIHRhcmdldC4KKyAgICAgICAgICAgICAqLworICAgICAg
ICAgICAgc3RybGNhdChub2RlLCAiLyIsIHNpemVvZihub2RlKSk7CisgICAgICAgICAgICBzdHJs
Y2F0KG5vZGUsIG5hbWUsIHNpemVvZihub2RlKSk7CisgICAgICAgICAgICBkdnAgPSBkZHAtPmRf
dm5vZGU7CisgICAgICAgICAgICB2bl9sb2NrKGR2cCk7CisgICAgICAgICAgICBkcCA9IGRlbnRy
eV9sb29rdXAobXAsIG5vZGUpOworICAgICAgICAgICAgaWYgKGRwID09IG51bGxwdHIpIHsKKyAg
ICAgICAgICAgICAgICAvKiBGaW5kIGEgdm5vZGUgaW4gdGhpcyBkaXJlY3RvcnkuICovCisgICAg
ICAgICAgICAgICAgZXJyb3IgPSBWT1BfTE9PS1VQKGR2cCwgbmFtZSwgJnZwKTsKKyAgICAgICAg
ICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgICAgICAgICAgdm5fdW5sb2NrKGR2cCk7
CisgICAgICAgICAgICAgICAgICAgIGRyZWxlKGRkcCk7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBkcCA9IGRl
bnRyeV9hbGxvYyhkZHAsIHZwLCBub2RlKTsKKyAgICAgICAgICAgICAgICB2cHV0KHZwKTsKKwor
ICAgICAgICAgICAgICAgIGlmICghZHApIHsKKyAgICAgICAgICAgICAgICAgICAgdm5fdW5sb2Nr
KGR2cCk7CisgICAgICAgICAgICAgICAgICAgIGRyZWxlKGRkcCk7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBFTk9NRU07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICAgICAgdm5fdW5sb2NrKGR2cCk7CisgICAgICAgICAgICBkcmVsZShkZHApOworICAgICAg
ICAgICAgZGRwID0gZHA7CisKKyAgICAgICAgICAgIGlmIChkcC0+ZF92bm9kZS0+dl90eXBlID09
IFZMTkspIHsKKyAgICAgICAgICAgICAgICBlcnJvciA9IG5hbWVpX2ZvbGxvd19saW5rKGRwLCBu
b2RlLCBuYW1lLCBmcC5nZXQoKSwgbW91bnRwb2ludF9sZW4pOworICAgICAgICAgICAgICAgIGlm
IChlcnJvcikgeworICAgICAgICAgICAgICAgICAgICBkcmVsZShkcCk7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiAoZXJyb3IpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ICAgIGRyZWxlKGRwKTsKKworICAgICAgICAgICAgICAgIHAgICAgICAgPSBmcC5nZXQoKTsKKyAg
ICAgICAgICAgICAgICBkcCAgICAgID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICBkZHAgICAg
ID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICB2cCAgICAgID0gbnVsbHB0cjsKKyAgICAgICAg
ICAgICAgICBkdnAgICAgID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICBuYW1lWzBdID0gMDsK
KyAgICAgICAgICAgICAgICBub2RlWzBdID0gMDsKKworICAgICAgICAgICAgICAgIGlmICgrK2xp
bmtzX2ZvbGxvd2VkID49IE1BWFNZTUxJTktTKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biAoRUxPT1ApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBuZWVkX2NvbnRp
bnVlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgaWYgKCpwID09ICcvJyAmJiBkZHAtPmRfdm5vZGUtPnZfdHlwZSAhPSBWRElSKSB7
CisgICAgICAgICAgICAgICAgZHJlbGUoZGRwKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gRU5P
VERJUjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0gd2hpbGUgKG5lZWRfY29udGlu
dWUgPT0gdHJ1ZSk7CisKKyAgICAqZHBwID0gZHA7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qCisg
KiBDb252ZXJ0IGxhc3QgY29tcG9uZW50IGluIHRoZSBwYXRoIHRvIHBvaW50ZXIgdG8gZGVudHJ5
CisgKgorICogQHBhdGg6IGZ1bGwgcGF0aCBuYW1lCisgKiBAZGRwIDogcG9pbnRlciB0byBkZW50
cnkgb2YgcGFyZW50CisgKiBAZHBwIDogZGVudHJ5IHRvIGJlIHJldHVybmVkCisgKi8KK2ludAor
bmFtZWlfbGFzdF9ub2ZvbGxvdyhjaGFyICpwYXRoLCBzdHJ1Y3QgZGVudHJ5ICpkZHAsIHN0cnVj
dCBkZW50cnkgKipkcHApCit7CisgICAgY2hhciAgICAgICAgICAqbmFtZTsKKyAgICBpbnQgICAg
ICAgICAgIGVycm9yOworICAgIHN0cnVjdCBtb3VudCAgKm1wOworICAgIGNoYXIgICAgICAgICAg
KnA7CisgICAgc3RydWN0IGRlbnRyeSAqZHA7CisgICAgc3RydWN0IHZub2RlICAqZHZwOworICAg
IHN0cnVjdCB2bm9kZSAgKnZwOworICAgIHN0ZDo6dW5pcXVlX3B0cjxjaGFyIFtdPiBub2RlIChu
ZXcgY2hhcltQQVRIX01BWF0pOworCisgICAgZHZwICA9IG51bGxwdHI7CisKKyAgICBpZiAocGF0
aFswXSAhPSAnLycpIHsKKyAgICAgICAgcmV0dXJuIChFTk9URElSKTsKKyAgICB9CisKKyAgICBu
YW1lID0gc3RycmNocihwYXRoLCAnLycpOworICAgIGlmIChuYW1lID09IG51bGxwdHIpIHsKKyAg
ICAgICAgcmV0dXJuIChFTk9FTlQpOworICAgIH0KKyAgICBuYW1lKys7CisKKyAgICBlcnJvciA9
IHZmc19maW5kcm9vdChwYXRoLCAmbXAsICZwKTsKKyAgICBpZiAoZXJyb3IgIT0gMCkgeworICAg
ICAgICByZXR1cm4gKEVOT1RESVIpOworICAgIH0KKworICAgIHN0cmxjcHkobm9kZS5nZXQoKSwg
Ii8iLCBQQVRIX01BWCk7CisgICAgc3RybGNhdChub2RlLmdldCgpLCBwLCBQQVRIX01BWCk7CisK
KyAgICAvLyBXZSB3YW50IHRvIHRyZWF0IHRoaW5ncyBsaWtlIC90bXAvIHRoZSBzYW1lIGFzIC90
bXAuIEJlc3Qgd2F5IHRvIGRvIHRoYXQKKyAgICAvLyBpcyB0byBpZ25vcmUgdGhlIGxhc3QgY2hh
cmFjdGVyLCBleGNlcHQgd2hlbiB3ZSdyZSBzdGF0aW5nIHRoZSByb290LgorICAgIGF1dG8gbCA9
IHN0cmxlbihub2RlLmdldCgpKSAtIDE7CisgICAgaWYgKGwgJiYgbm9kZS5nZXQoKVtsXSA9PSAn
LycpIHsKKyAgICAgICAgbm9kZS5nZXQoKVtsXSA9ICdcMCc7CisgICAgfQorCisgICAgZHZwID0g
ZGRwLT5kX3Zub2RlOworICAgIHZuX2xvY2soZHZwKTsKKyAgICBkcCA9IGRlbnRyeV9sb29rdXAo
bXAsIG5vZGUuZ2V0KCkpOworICAgIGlmIChkcCA9PSBudWxscHRyKSB7CisgICAgICAgIGVycm9y
ID0gVk9QX0xPT0tVUChkdnAsIG5hbWUsICZ2cCk7CisgICAgICAgIGlmIChlcnJvciAhPSAwKSB7
CisgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgfQorCisgICAgICAgIGRwID0gZGVudHJ5
X2FsbG9jKGRkcCwgdnAsIG5vZGUuZ2V0KCkpOworICAgICAgICB2cHV0KHZwKTsKKworICAgICAg
ICBpZiAoZHAgPT0gbnVsbHB0cikgeworICAgICAgICAgICAgZXJyb3IgPSBFTk9NRU07CisgICAg
ICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgfQorICAgIH0KKworICAgICpkcHAgID0gZHA7Cisg
ICAgZXJyb3IgPSAwOworb3V0OgorICAgIGlmIChkdnAgIT0gbnVsbHB0cikgeworICAgICAgICB2
bl91bmxvY2soZHZwKTsKKyAgICB9CisgICAgcmV0dXJuIChlcnJvcik7Cit9CisKKy8qCisgKiBT
ZWFyY2ggYSBwYXRobmFtZS4KKyAqIFRoaXMgaXMgYSB2ZXJ5IGNlbnRyYWwgYnV0IG5vdCBzbyBj
b21wbGljYXRlZCByb3V0aW5lLiA7LVAKKyAqCisgKiBAcGF0aDogZnVsbCBwYXRoLgorICogQGRw
cDogIHBvaW50ZXIgdG8gZGVudHJ5IGZvciBkaXJlY3RvcnkuCisgKiBAbmFtZTogaWYgbm9uLW51
bGwsIHBvaW50ZXIgdG8gZmlsZSBuYW1lIGluIHBhdGguCisgKgorICogVGhpcyByb3V0aW5lIHJl
dHVybnMgYSBsb2NrZWQgZGlyZWN0b3J5IHZub2RlIGFuZCBmaWxlIG5hbWUuCisgKi8KK2ludAor
bG9va3VwKGNoYXIgKnBhdGgsIHN0cnVjdCBkZW50cnkgKipkcHAsIGNoYXIgKipuYW1lKQorewor
ICAgIGNoYXIgYnVmW1BBVEhfTUFYXTsKKyAgICBjaGFyIHJvb3RbXSA9ICIvIjsKKyAgICBjaGFy
ICpmaWxlLCAqZGlyOworICAgIHN0cnVjdCBkZW50cnkgKmRwOworICAgIGludCBlcnJvcjsKKwor
ICAgIERQUklOVEYoVkZTREJfVk5PREUsICgibG9va3VwOiBwYXRoPSVzXG4iLCBwYXRoKSk7CisK
KyAgICAvKgorICAgICAqIEdldCB0aGUgcGF0aCBmb3IgZGlyZWN0b3J5LgorICAgICAqLworICAg
IHN0cmxjcHkoYnVmLCBwYXRoLCBzaXplb2YoYnVmKSk7CisgICAgZmlsZSA9IHN0cnJjaHIoYnVm
LCAnLycpOworICAgIGlmICghYnVmWzBdKSB7CisgICAgICAgIHJldHVybiBFTk9URElSOworICAg
IH0KKyAgICBpZiAoZmlsZSA9PSBidWYpIHsKKyAgICAgICAgZGlyID0gcm9vdDsKKyAgICB9IGVs
c2UgeworICAgICAgICAqZmlsZSA9ICdcMCc7CisgICAgICAgIGRpciA9IGJ1ZjsKKyAgICB9Cisg
ICAgLyoKKyAgICAgKiBHZXQgdGhlIHZub2RlIGZvciBkaXJlY3RvcnkKKyAgICAgKi8KKyAgICBp
ZiAoKGVycm9yID0gbmFtZWkoZGlyLCAmZHApKSAhPSAwKSB7CisgICAgICAgIHJldHVybiBlcnJv
cjsKKyAgICB9CisgICAgaWYgKGRwLT5kX3Zub2RlLT52X3R5cGUgIT0gVkRJUikgeworICAgICAg
ICBkcmVsZShkcCk7CisgICAgICAgIHJldHVybiBFTk9URElSOworICAgIH0KKworICAgICpkcHAg
PSBkcDsKKworICAgIGlmIChuYW1lKSB7CisgICAgICAgIC8qCisgICAgICAgICAqIEdldCB0aGUg
ZmlsZSBuYW1lCisgICAgICAgICAqLworICAgICAgICAqbmFtZSA9IHN0cnJjaHIocGF0aCwgJy8n
KSArIDE7CisgICAgfQorICAgIHJldHVybiAwOworfQorCisvKgorICogdm5vZGVfaW5pdCgpIGlz
IGNhbGxlZCBvbmNlIChmcm9tIHZmc19pbml0KQorICogaW4gaW5pdGlhbGl6YXRpb24uCisgKi8K
K3ZvaWQKK2xvb2t1cF9pbml0KHZvaWQpCit7CisgICAgZGVudHJ5X2luaXQoKTsKK30KZGlmZiAt
LWdpdCBhL2xpYi92ZnNjb3JlL21haW4uYyBiL2xpYi92ZnNjb3JlL21haW4uYwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uY2QxNDExMTcKLS0tIC9kZXYvbnVsbAorKysgYi9s
aWIvdmZzY29yZS9tYWluLmMKQEAgLTAsMCArMSwyNDEzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEzIENsb3VkaXVzIFN5c3RlbXMsIEx0ZC4KKyAqCisgKiBUaGlzIHdvcmsgaXMgb3BlbiBz
b3VyY2Ugc29mdHdhcmUsIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUKKyAqIEJTRCBs
aWNlbnNlIGFzIGRlc2NyaWJlZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSB0b3AtbGV2ZWwg
ZGlyZWN0b3J5LgorICovCisKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDUtMjAwNywgS29oc3Vr
ZSBPaHRhbmkKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVy
IHRoZSBuYW1lIG9mIHRoZSBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBhbnkgY28tY29udHJpYnV0
b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKKyAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNpbmNsdWRlIDxzeXMvc3RhdHZm
cy5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyNpbmNs
dWRlIDxzeXMvc2VuZGZpbGUuaD4KKworI2luY2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUgPHVu
aXN0ZC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVk
ZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNp
bmNsdWRlIDxzaWduYWwuaD4KKyNkZWZpbmUgb3BlbiBfX29wZW5fdmFyaWFkaWMKKyNkZWZpbmUg
ZmNudGwgX19mY250bF92YXJpYWRpYworI2luY2x1ZGUgPGZjbnRsLmg+CisjdW5kZWYgb3Blbgor
I3VuZGVmIGZjbnRsCisKKyNpbmNsdWRlIDxvc3YvcHJleC5oPgorI2luY2x1ZGUgPG9zdi92bm9k
ZS5oPgorI2luY2x1ZGUgPG9zdi9zdHViYmluZy5oaD4KKyNpbmNsdWRlIDxvc3YvaW9jdGwuaD4K
KyNpbmNsdWRlIDxvc3YvdHJhY2UuaGg+CisjaW5jbHVkZSA8b3N2L3J1bi5oaD4KKyNpbmNsdWRl
IDxkcml2ZXJzL2NvbnNvbGUuaGg+CisKKyNpbmNsdWRlICJ2ZnMuaCIKKworI2luY2x1ZGUgImxp
YmMvaW50ZXJuYWwvbGliYy5oIgorCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPHVu
b3JkZXJlZF9tYXA+CisKKyNpbmNsdWRlIDxzeXMvZmlsZS5oPgorCisjaW5jbHVkZSAiZnMvZnMu
aGgiCisjaW5jbHVkZSAibGliYy9saWJjLmhoIgorCisjaW5jbHVkZSA8bW50ZW50Lmg+CisjaW5j
bHVkZSA8c3lzL21tYW4uaD4KKworI2luY2x1ZGUgPG9zdi9jbG9jay5oaD4KKyNpbmNsdWRlIDxh
cGkvdXRpbWUuaD4KKyNpbmNsdWRlIDxjaHJvbm8+CisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisK
KworI2lmZGVmIERFQlVHX1ZGUworaW50CXZmc19kZWJ1ZyA9IFZGU0RCX0ZMQUdTOworI2VuZGlm
CisKK3N0ZDo6YXRvbWljPG1vZGVfdD4gZ2xvYmFsX3VtYXNre1NfSVdHUlAgfCBTX0lXT1RIfTsK
Kworc3RhdGljIGlubGluZSBtb2RlX3QgYXBwbHlfdW1hc2sobW9kZV90IG1vZGUpCit7CisgICAg
cmV0dXJuIG1vZGUgJiB+Z2xvYmFsX3VtYXNrLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhl
ZCk7Cit9CisKK1RSQUNFUE9JTlQodHJhY2VfdmZzX29wZW4sICJcIiVzXCIgMHgleCAwJTBvIiwg
Y29uc3QgY2hhciosIGludCwgbW9kZV90KTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX29wZW5fcmV0
LCAiJWQiLCBpbnQpOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfb3Blbl9lcnIsICIlZCIsIGludCk7
CisKK3N0cnVjdCB0YXNrICptYWluX3Rhc2s7CS8qIHdlIG9ubHkgaGF2ZSBhIHNpbmdsZSBwcm9j
ZXNzICovCisKK2V4dGVybiAiQyIKK2ludCBvcGVuKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBpbnQg
ZmxhZ3MsIC4uLikKK3sKKyAgICBtb2RlX3QgbW9kZSA9IDA7CisgICAgaWYgKGZsYWdzICYgT19D
UkVBVCkgeworICAgICAgICB2YV9saXN0IGFwOworICAgICAgICB2YV9zdGFydChhcCwgZmxhZ3Mp
OworICAgICAgICBtb2RlID0gYXBwbHlfdW1hc2sodmFfYXJnKGFwLCBtb2RlX3QpKTsKKyAgICAg
ICAgdmFfZW5kKGFwKTsKKyAgICB9CisKKyAgICB0cmFjZV92ZnNfb3BlbihwYXRobmFtZSwgZmxh
Z3MsIG1vZGUpOworCisgICAgc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7CisgICAgY2hhciBw
YXRoW1BBVEhfTUFYXTsKKyAgICBzdHJ1Y3QgZmlsZSAqZnA7CisgICAgaW50IGZkLCBlcnJvcjsK
KyAgICBpbnQgYWNjOworCisgICAgYWNjID0gMDsKKyAgICBzd2l0Y2ggKGZsYWdzICYgT19BQ0NN
T0RFKSB7CisgICAgY2FzZSBPX1JET05MWToKKyAgICAgICAgYWNjID0gVlJFQUQ7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgT19XUk9OTFk6CisgICAgICAgIGFjYyA9IFZXUklURTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBPX1JEV1I6CisgICAgICAgIGFjYyA9IFZSRUFEIHwgVldSSVRF
OworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBlcnJvciA9IHRhc2tfY29udih0LCBwYXRo
bmFtZSwgYWNjLCBwYXRoKTsKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIGdvdG8gb3V0X2Vycm5v
OworCisgICAgZXJyb3IgPSBzeXNfb3BlbihwYXRoLCBmbGFncywgbW9kZSwgJmZwKTsKKyAgICBp
ZiAoZXJyb3IpCisgICAgICAgIGdvdG8gb3V0X2Vycm5vOworCisgICAgZXJyb3IgPSBmZGFsbG9j
KGZwLCAmZmQpOworICAgIGlmIChlcnJvcikKKyAgICAgICAgZ290byBvdXRfZnB1dDsKKyAgICBm
ZHJvcChmcCk7CisgICAgdHJhY2VfdmZzX29wZW5fcmV0KGZkKTsKKyAgICByZXR1cm4gZmQ7CisK
KyAgICBvdXRfZnB1dDoKKyAgICBmZHJvcChmcCk7CisgICAgb3V0X2Vycm5vOgorICAgIGVycm5v
ID0gZXJyb3I7CisgICAgdHJhY2VfdmZzX29wZW5fZXJyKGVycm9yKTsKKyAgICByZXR1cm4gLTE7
Cit9CisKK0xGUzY0KG9wZW4pOworCitpbnQgb3BlbmF0KGludCBkaXJmZCwgY29uc3QgY2hhciAq
cGF0aG5hbWUsIGludCBmbGFncywgLi4uKQoreworICAgIG1vZGVfdCBtb2RlID0gMDsKKyAgICBp
ZiAoZmxhZ3MgJiBPX0NSRUFUKSB7CisgICAgICAgIHZhX2xpc3QgYXA7CisgICAgICAgIHZhX3N0
YXJ0KGFwLCBmbGFncyk7CisgICAgICAgIG1vZGUgPSBhcHBseV91bWFzayh2YV9hcmcoYXAsIG1v
ZGVfdCkpOworICAgICAgICB2YV9lbmQoYXApOworICAgIH0KKworICAgIGlmIChwYXRobmFtZVsw
XSA9PSAnLycgfHwgZGlyZmQgPT0gQVRfRkRDV0QpIHsKKyAgICAgICAgcmV0dXJuIG9wZW4ocGF0
aG5hbWUsIGZsYWdzLCBtb2RlKTsKKyAgICB9CisKKyAgICBzdHJ1Y3QgZmlsZSAqZnA7CisgICAg
aW50IGVycm9yID0gZmdldChkaXJmZCwgJmZwKTsKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAg
ZXJybm8gPSBlcnJvcjsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIHN0cnVjdCB2
bm9kZSAqdnAgPSBmcC0+Zl9kZW50cnktPmRfdm5vZGU7CisgICAgdm5fbG9jayh2cCk7CisKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Y2hhciBbXT4gdXAgKG5ldyBjaGFyW1BBVEhfTUFYXSk7CisgICAg
Y2hhciAqcCA9IHVwLmdldCgpOworCisgICAgLyogYnVpbGQgYWJzb2x1dGUgcGF0aCAqLworICAg
IHN0cmxjcHkocCwgZnAtPmZfZGVudHJ5LT5kX21vdW50LT5tX3BhdGgsIFBBVEhfTUFYKTsKKyAg
ICBzdHJsY2F0KHAsIGZwLT5mX2RlbnRyeS0+ZF9wYXRoLCBQQVRIX01BWCk7CisgICAgc3RybGNh
dChwLCAiLyIsIFBBVEhfTUFYKTsKKyAgICBzdHJsY2F0KHAsIHBhdGhuYW1lLCBQQVRIX01BWCk7
CisKKyAgICBlcnJvciA9IG9wZW4ocCwgZmxhZ3MsIG1vZGUpOworCisgICAgdm5fdW5sb2NrKHZw
KTsKKyAgICBmZHJvcChmcCk7CisKKyAgICByZXR1cm4gZXJyb3I7Cit9CitMRlM2NChvcGVuYXQp
OworCisvLyBvcGVuKCkgaGFzIGFuIG9wdGlvbmFsIHRoaXJkIGFyZ3VtZW50LCAibW9kZSIsIHdo
aWNoIGlzIG9ubHkgbmVlZGVkIGluCisvLyBzb21lIGNhc2VzICh3aGVuIHRoZSBPX0NSRUFUIG1v
ZGUgaXMgdXNlZCkuIEFzIGEgc2FmZXR5IGZlYXR1cmUsIHJlY2VudAorLy8gdmVyc2lvbnMgb2Yg
R2xpYmMgYWRkIGEgZmVhdHVyZSB3aGVyZSBvcGVuKCkgd2l0aCB0d28gYXJndW1lbnRzIGlzIHJl
cGxhY2VkCisvLyBieSBhIGNhbGwgdG8gX19vcGVuXzIoKSwgd2hpY2ggdmVyaWZpZXMgaXQgaXNu
J3QgY2FsbGVkIHdpdGggT19DUkVBVEUuCitleHRlcm4gIkMiIGludCBfX29wZW5fMihjb25zdCBj
aGFyICpwYXRobmFtZSwgaW50IGZsYWdzKQoreworICAgIGFzc2VydCghKGZsYWdzICYgT19DUkVB
VCkpOworICAgIHJldHVybiBvcGVuKHBhdGhuYW1lLCBmbGFncywgMCk7Cit9CisKK2V4dGVybiAi
QyIgaW50IF9fb3BlbjY0XzIoY29uc3QgY2hhciAqZmlsZSwgaW50IGZsYWdzKQoreworICAgIGlm
IChmbGFncyAmIE9fQ1JFQVQpIHsKKyAgICAgICAgZXJybm8gPSBFSU5WQUw7CisgICAgICAgIHJl
dHVybiAtMTsKKyAgICB9CisKKyAgICByZXR1cm4gb3BlbjY0KGZpbGUsIGZsYWdzKTsKK30KKwor
aW50IGNyZWF0KGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBtb2RlX3QgbW9kZSkKK3sKKyAgICByZXR1
cm4gb3BlbihwYXRobmFtZSwgT19DUkVBVHxPX1dST05MWXxPX1RSVU5DLCBtb2RlKTsKK30KK0xG
UzY0KGNyZWF0KTsKKworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfY2xvc2UsICIlZCIsIGludCk7CitU
UkFDRVBPSU5UKHRyYWNlX3Zmc19jbG9zZV9yZXQsICIiKTsKK1RSQUNFUE9JTlQodHJhY2VfdmZz
X2Nsb3NlX2VyciwgIiVkIiwgaW50KTsKKworaW50IGNsb3NlKGludCBmZCkKK3sKKyAgICBpbnQg
ZXJyb3I7CisKKyAgICB0cmFjZV92ZnNfY2xvc2UoZmQpOworICAgIGVycm9yID0gZmRjbG9zZShm
ZCk7CisgICAgaWYgKGVycm9yKQorICAgICAgICBnb3RvIG91dF9lcnJubzsKKworICAgIHRyYWNl
X3Zmc19jbG9zZV9yZXQoKTsKKyAgICByZXR1cm4gMDsKKworICAgIG91dF9lcnJubzoKKyAgICB0
cmFjZV92ZnNfY2xvc2VfZXJyKGVycm9yKTsKKyAgICBlcnJubyA9IGVycm9yOworICAgIHJldHVy
biAtMTsKK30KKworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbWtub2QsICJcIiVzXCIgMCUwbyAweCV4
IiwgY29uc3QgY2hhciosIG1vZGVfdCwgZGV2X3QpOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbWtu
b2RfcmV0LCAiIik7CitUUkFDRVBPSU5UKHRyYWNlX3Zmc19ta25vZF9lcnIsICIlZCIsIGludCk7
CisKKworZXh0ZXJuICJDIgoraW50IF9feG1rbm9kKGludCB2ZXIsIGNvbnN0IGNoYXIgKnBhdGhu
YW1lLCBtb2RlX3QgbW9kZSwgZGV2X3QgKmRldikKK3sKKyAgICBhc3NlcnQodmVyID09IDApOyAv
LyBPbiB4ODYtNjQgTGludXgsIF9NS05PRF9WRVJfTElOVVggaXMgMC4KKyAgICBzdHJ1Y3QgdGFz
ayAqdCA9IG1haW5fdGFzazsKKyAgICBjaGFyIHBhdGhbUEFUSF9NQVhdOworICAgIGludCBlcnJv
cjsKKworICAgIHRyYWNlX3Zmc19ta25vZChwYXRobmFtZSwgbW9kZSwgKmRldik7CisgICAgaWYg
KChlcnJvciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwgVldSSVRFLCBwYXRoKSkgIT0gMCkKKyAg
ICAgICAgZ290byBvdXRfZXJybm87CisKKyAgICBlcnJvciA9IHN5c19ta25vZChwYXRoLCBtb2Rl
KTsKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIGdvdG8gb3V0X2Vycm5vOworCisgICAgdHJhY2Vf
dmZzX21rbm9kX3JldCgpOworICAgIHJldHVybiAwOworCisgICAgb3V0X2Vycm5vOgorICAgIHRy
YWNlX3Zmc19ta25vZF9lcnIoZXJyb3IpOworICAgIGVycm5vID0gZXJyb3I7CisgICAgcmV0dXJu
IC0xOworfQorCitpbnQgbWtub2QoY29uc3QgY2hhciAqcGF0aG5hbWUsIG1vZGVfdCBtb2RlLCBk
ZXZfdCBkZXYpCit7CisgICAgcmV0dXJuIF9feG1rbm9kKDAsIHBhdGhuYW1lLCBtb2RlLCAmZGV2
KTsKK30KKworCitUUkFDRVBPSU5UKHRyYWNlX3Zmc19sc2VlaywgIiVkIDB4JXggJWQiLCBpbnQs
IG9mZl90LCBpbnQpOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbHNlZWtfcmV0LCAiMHgleCIsIG9m
Zl90KTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX2xzZWVrX2VyciwgIiVkIiwgaW50KTsKKworb2Zm
X3QgbHNlZWsoaW50IGZkLCBvZmZfdCBvZmZzZXQsIGludCB3aGVuY2UpCit7CisgICAgc3RydWN0
IGZpbGUgKmZwOworICAgIG9mZl90IG9yZzsKKyAgICBpbnQgZXJyb3I7CisKKyAgICB0cmFjZV92
ZnNfbHNlZWsoZmQsIG9mZnNldCwgd2hlbmNlKTsKKyAgICBlcnJvciA9IGZnZXQoZmQsICZmcCk7
CisgICAgaWYgKGVycm9yKQorICAgICAgICBnb3RvIG91dF9lcnJubzsKKworICAgIGVycm9yID0g
c3lzX2xzZWVrKGZwLCBvZmZzZXQsIHdoZW5jZSwgJm9yZyk7CisgICAgZmRyb3AoZnApOworCisg
ICAgaWYgKGVycm9yKQorICAgICAgICBnb3RvIG91dF9lcnJubzsKKyAgICB0cmFjZV92ZnNfbHNl
ZWtfcmV0KG9yZyk7CisgICAgcmV0dXJuIG9yZzsKKworICAgIG91dF9lcnJubzoKKyAgICB0cmFj
ZV92ZnNfbHNlZWtfZXJyKGVycm9yKTsKKyAgICBlcnJubyA9IGVycm9yOworICAgIHJldHVybiAt
MTsKK30KKworTEZTNjQobHNlZWspOworCitUUkFDRVBPSU5UKHRyYWNlX3Zmc19wcmVhZCwgIiVk
ICVwIDB4JXggMHgleCIsIGludCwgdm9pZCosIHNpemVfdCwgb2ZmX3QpOworVFJBQ0VQT0lOVCh0
cmFjZV92ZnNfcHJlYWRfcmV0LCAiMHgleCIsIHNzaXplX3QpOworVFJBQ0VQT0lOVCh0cmFjZV92
ZnNfcHJlYWRfZXJyLCAiJWQiLCBpbnQpOworCisvLyBJbiBCU0QncyBpbnRlcm5hbCBpbXBsZW1l
bnRhdGlvbiBvZiByZWFkKCkgYW5kIHdyaXRlKCkgY29kZSwgZm9yIGV4YW1wbGUKKy8vIHNvc2Vu
ZF9nZW5lcmljKCksIGEgcGFydGlhbCByZWFkIG9yIHdyaXRlIHJldHVybnMgYm90aCBhbiBFV09V
TERCTE9DSyBlcnJvcgorLy8gKmFuZCogYSBub24temVybyBudW1iZXIgb2Ygd3JpdHRlbiBieXRl
cy4gSW4gdGhhdCBjYXNlLCB3ZSBuZWVkIHRvIHplcm8gdGhlCisvLyBlcnJvciwgc28gdGhlIHN5
c3RlbSBjYWxsIGFwcGVhciBhIHN1Y2Nlc3NmdWwgcGFydGlhbCByZWFkL3dyaXRlLgorLy8gSW4g
RnJlZUJTRCwgZG9maWxld3JpdGUoKSBhbmQgZG9maWxlcmVhZCgpIChzeXNfZ2VuZXJpYy5jKSBk
byB0aGlzIHRvby4KK3N0YXRpYyBpbmxpbmUgYm9vbCBoYXNfZXJyb3IoaW50IGVycm9yLCBpbnQg
Ynl0ZXMpCit7CisgICAgcmV0dXJuIGVycm9yICYmICgKKyAgICAgICAgICAgIChieXRlcyA9PSAw
KSB8fAorICAgICAgICAgICAgKGVycm9yICE9IEVXT1VMREJMT0NLICYmIGVycm9yICE9IEVJTlRS
ICYmIGVycm9yICE9IEVSRVNUQVJUKSk7Cit9CisKKworc3NpemVfdCBwcmVhZChpbnQgZmQsIHZv
aWQgKmJ1Ziwgc2l6ZV90IGNvdW50LCBvZmZfdCBvZmZzZXQpCit7CisgICAgdHJhY2VfdmZzX3By
ZWFkKGZkLCBidWYsIGNvdW50LCBvZmZzZXQpOworICAgIHN0cnVjdCBpb3ZlYyBpb3YgPSB7Cisg
ICAgICAgICAgICAuaW92X2Jhc2UJPSBidWYsCisgICAgICAgICAgICAuaW92X2xlbgk9IGNvdW50
LAorICAgIH07CisgICAgc3RydWN0IGZpbGUgKmZwOworICAgIHNpemVfdCBieXRlczsKKyAgICBp
bnQgZXJyb3I7CisKKyAgICBlcnJvciA9IGZnZXQoZmQsICZmcCk7CisgICAgaWYgKGVycm9yKQor
ICAgICAgICBnb3RvIG91dF9lcnJubzsKKworICAgIGVycm9yID0gc3lzX3JlYWQoZnAsICZpb3Ys
IDEsIG9mZnNldCwgJmJ5dGVzKTsKKyAgICBmZHJvcChmcCk7CisKKyAgICBpZiAoaGFzX2Vycm9y
KGVycm9yLCBieXRlcykpCisgICAgICAgIGdvdG8gb3V0X2Vycm5vOworICAgIHRyYWNlX3Zmc19w
cmVhZF9yZXQoYnl0ZXMpOworICAgIHJldHVybiBieXRlczsKKworICAgIG91dF9lcnJubzoKKyAg
ICB0cmFjZV92ZnNfcHJlYWRfZXJyKGVycm9yKTsKKyAgICBlcnJubyA9IGVycm9yOworICAgIHJl
dHVybiAtMTsKK30KKworTEZTNjQocHJlYWQpOworCitzc2l6ZV90IHJlYWQoaW50IGZkLCB2b2lk
ICpidWYsIHNpemVfdCBjb3VudCkKK3sKKyAgICByZXR1cm4gcHJlYWQoZmQsIGJ1ZiwgY291bnQs
IC0xKTsKK30KKworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfcHdyaXRlLCAiJWQgJXAgMHgleCAweCV4
IiwgaW50LCBjb25zdCB2b2lkKiwgc2l6ZV90LCBvZmZfdCk7CitUUkFDRVBPSU5UKHRyYWNlX3Zm
c19wd3JpdGVfcmV0LCAiMHgleCIsIHNzaXplX3QpOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfcHdy
aXRlX2VyciwgIiVkIiwgaW50KTsKKworc3NpemVfdCBwd3JpdGUoaW50IGZkLCBjb25zdCB2b2lk
ICpidWYsIHNpemVfdCBjb3VudCwgb2ZmX3Qgb2Zmc2V0KQoreworICAgIHRyYWNlX3Zmc19wd3Jp
dGUoZmQsIGJ1ZiwgY291bnQsIG9mZnNldCk7CisgICAgc3RydWN0IGlvdmVjIGlvdiA9IHsKKyAg
ICAgICAgICAgIC5pb3ZfYmFzZQk9ICh2b2lkICopYnVmLAorICAgICAgICAgICAgLmlvdl9sZW4J
PSBjb3VudCwKKyAgICB9OworICAgIHN0cnVjdCBmaWxlICpmcDsKKyAgICBzaXplX3QgYnl0ZXM7
CisgICAgaW50IGVycm9yOworCisgICAgZXJyb3IgPSBmZ2V0KGZkLCAmZnApOworICAgIGlmIChl
cnJvcikKKyAgICAgICAgZ290byBvdXRfZXJybm87CisKKyAgICBlcnJvciA9IHN5c193cml0ZShm
cCwgJmlvdiwgMSwgb2Zmc2V0LCAmYnl0ZXMpOworICAgIGZkcm9wKGZwKTsKKworICAgIGlmICho
YXNfZXJyb3IoZXJyb3IsIGJ5dGVzKSkKKyAgICAgICAgZ290byBvdXRfZXJybm87CisgICAgdHJh
Y2VfdmZzX3B3cml0ZV9yZXQoYnl0ZXMpOworICAgIHJldHVybiBieXRlczsKKworICAgIG91dF9l
cnJubzoKKyAgICB0cmFjZV92ZnNfcHdyaXRlX2VycihlcnJvcik7CisgICAgZXJybm8gPSBlcnJv
cjsKKyAgICByZXR1cm4gLTE7Cit9CisKK0xGUzY0KHB3cml0ZSk7CisKK3NzaXplX3Qgd3JpdGUo
aW50IGZkLCBjb25zdCB2b2lkICpidWYsIHNpemVfdCBjb3VudCkKK3sKKyAgICByZXR1cm4gcHdy
aXRlKGZkLCBidWYsIGNvdW50LCAtMSk7Cit9CisKK3NzaXplX3QgcHJlYWR2KGludCBmZCwgY29u
c3Qgc3RydWN0IGlvdmVjICppb3YsIGludCBpb3ZjbnQsIG9mZl90IG9mZnNldCkKK3sKKyAgICBz
dHJ1Y3QgZmlsZSAqZnA7CisgICAgc2l6ZV90IGJ5dGVzOworICAgIGludCBlcnJvcjsKKworICAg
IGVycm9yID0gZmdldChmZCwgJmZwKTsKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIGdvdG8gb3V0
X2Vycm5vOworCisgICAgZXJyb3IgPSBzeXNfcmVhZChmcCwgaW92LCBpb3ZjbnQsIG9mZnNldCwg
JmJ5dGVzKTsKKyAgICBmZHJvcChmcCk7CisKKyAgICBpZiAoaGFzX2Vycm9yKGVycm9yLCBieXRl
cykpCisgICAgICAgIGdvdG8gb3V0X2Vycm5vOworICAgIHJldHVybiBieXRlczsKKworICAgIG91
dF9lcnJubzoKKyAgICBlcnJubyA9IGVycm9yOworICAgIHJldHVybiAtMTsKK30KKworTEZTNjQo
cHJlYWR2KTsKKworc3NpemVfdCByZWFkdihpbnQgZmQsIGNvbnN0IHN0cnVjdCBpb3ZlYyAqaW92
LCBpbnQgaW92Y250KQoreworICAgIHJldHVybiBwcmVhZHYoZmQsIGlvdiwgaW92Y250LCAtMSk7
Cit9CisKK1RSQUNFUE9JTlQodHJhY2VfdmZzX3B3cml0ZXYsICIlZCAlcCAweCV4IDB4JXgiLCBp
bnQsIGNvbnN0IHN0cnVjdCBpb3ZlYyosIGludCwgb2ZmX3QpOworVFJBQ0VQT0lOVCh0cmFjZV92
ZnNfcHdyaXRldl9yZXQsICIweCV4Iiwgc3NpemVfdCk7CitUUkFDRVBPSU5UKHRyYWNlX3Zmc19w
d3JpdGV2X2VyciwgIiVkIiwgaW50KTsKKworc3NpemVfdCBwd3JpdGV2KGludCBmZCwgY29uc3Qg
c3RydWN0IGlvdmVjICppb3YsIGludCBpb3ZjbnQsIG9mZl90IG9mZnNldCkKK3sKKyAgICBzdHJ1
Y3QgZmlsZSAqZnA7CisgICAgc2l6ZV90IGJ5dGVzOworICAgIGludCBlcnJvcjsKKworICAgIHRy
YWNlX3Zmc19wd3JpdGV2KGZkLCBpb3YsIGlvdmNudCwgb2Zmc2V0KTsKKyAgICBlcnJvciA9IGZn
ZXQoZmQsICZmcCk7CisgICAgaWYgKGVycm9yKQorICAgICAgICBnb3RvIG91dF9lcnJubzsKKwor
ICAgIGVycm9yID0gc3lzX3dyaXRlKGZwLCBpb3YsIGlvdmNudCwgb2Zmc2V0LCAmYnl0ZXMpOwor
ICAgIGZkcm9wKGZwKTsKKworICAgIGlmIChoYXNfZXJyb3IoZXJyb3IsIGJ5dGVzKSkKKyAgICAg
ICAgZ290byBvdXRfZXJybm87CisgICAgdHJhY2VfdmZzX3B3cml0ZXZfcmV0KGJ5dGVzKTsKKyAg
ICByZXR1cm4gYnl0ZXM7CisKKyAgICBvdXRfZXJybm86CisgICAgdHJhY2VfdmZzX3B3cml0ZXZf
ZXJyKGVycm9yKTsKKyAgICBlcnJubyA9IGVycm9yOworICAgIHJldHVybiAtMTsKK30KK0xGUzY0
KHB3cml0ZXYpOworCitzc2l6ZV90IHdyaXRldihpbnQgZmQsIGNvbnN0IHN0cnVjdCBpb3ZlYyAq
aW92LCBpbnQgaW92Y250KQoreworICAgIHJldHVybiBwd3JpdGV2KGZkLCBpb3YsIGlvdmNudCwg
LTEpOworfQorCitUUkFDRVBPSU5UKHRyYWNlX3Zmc19pb2N0bCwgIiVkIDB4JXgiLCBpbnQsIHVu
c2lnbmVkIGxvbmcpOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfaW9jdGxfcmV0LCAiIik7CitUUkFD
RVBPSU5UKHRyYWNlX3Zmc19pb2N0bF9lcnIsICIlZCIsIGludCk7CisKK2ludCBpb2N0bChpbnQg
ZmQsIHVuc2lnbmVkIGxvbmcgaW50IHJlcXVlc3QsIC4uLikKK3sKKyAgICBzdHJ1Y3QgZmlsZSAq
ZnA7CisgICAgaW50IGVycm9yOworICAgIHZhX2xpc3QgYXA7CisgICAgdm9pZCogYXJnOworCisg
ICAgdHJhY2VfdmZzX2lvY3RsKGZkLCByZXF1ZXN0KTsKKyAgICAvKiBnbGliYyBBQkkgcHJvdmlk
ZXMgYSB2YXJpYWRpYyBwcm90b3R5cGUgZm9yIGlvY3RsIHNvIHdlIG5lZWQgdG8gYWdyZWUKKyAg
ICAgKiB3aXRoIGl0LCBzaW5jZSB3ZSBub3cgaW5jbHVkZSBzeXMvaW9jdGwuaAorICAgICAqIHJl
YWQgdGhlIGZpcnN0IGFyZ3VtZW50IGFuZCBwYXNzIGl0IHRvIHN5c19pb2N0bCgpICovCisgICAg
dmFfc3RhcnQoYXAsIHJlcXVlc3QpOworICAgIGFyZyA9IHZhX2FyZyhhcCwgdm9pZCopOworICAg
IHZhX2VuZChhcCk7CisKKyAgICBlcnJvciA9IGZnZXQoZmQsICZmcCk7CisgICAgaWYgKGVycm9y
KQorICAgICAgICBnb3RvIG91dF9lcnJubzsKKworICAgIGVycm9yID0gc3lzX2lvY3RsKGZwLCBy
ZXF1ZXN0LCBhcmcpOworICAgIGZkcm9wKGZwKTsKKworICAgIGlmIChlcnJvcikKKyAgICAgICAg
Z290byBvdXRfZXJybm87CisgICAgdHJhY2VfdmZzX2lvY3RsX3JldCgpOworICAgIHJldHVybiAw
OworCisgICAgb3V0X2Vycm5vOgorICAgIHRyYWNlX3Zmc19pb2N0bF9lcnIoZXJyb3IpOworICAg
IGVycm5vID0gZXJyb3I7CisgICAgcmV0dXJuIC0xOworfQorCitUUkFDRVBPSU5UKHRyYWNlX3Zm
c19mc3luYywgIiVkIiwgaW50KTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX2ZzeW5jX3JldCwgIiIp
OworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZnN5bmNfZXJyLCAiJWQiLCBpbnQpOworCitpbnQgZnN5
bmMoaW50IGZkKQoreworICAgIHN0cnVjdCBmaWxlICpmcDsKKyAgICBpbnQgZXJyb3I7CisKKyAg
ICB0cmFjZV92ZnNfZnN5bmMoZmQpOworICAgIGVycm9yID0gZmdldChmZCwgJmZwKTsKKyAgICBp
ZiAoZXJyb3IpCisgICAgICAgIGdvdG8gb3V0X2Vycm5vOworCisgICAgZXJyb3IgPSBzeXNfZnN5
bmMoZnApOworICAgIGZkcm9wKGZwKTsKKworICAgIGlmIChlcnJvcikKKyAgICAgICAgZ290byBv
dXRfZXJybm87CisgICAgdHJhY2VfdmZzX2ZzeW5jX3JldCgpOworICAgIHJldHVybiAwOworCisg
ICAgb3V0X2Vycm5vOgorICAgIHRyYWNlX3Zmc19mc3luY19lcnIoZXJyb3IpOworICAgIGVycm5v
ID0gZXJyb3I7CisgICAgcmV0dXJuIC0xOworfQorCitpbnQgZmRhdGFzeW5jKGludCBmZCkKK3sK
KyAgICAvLyBUT0RPOiBTZWUgaWYgd2UgY2FuIGRvIGxlc3MgdGhhbiBmc3luYygpLgorICAgIHJl
dHVybiBmc3luYyhmZCk7Cit9CisKK1RSQUNFUE9JTlQodHJhY2VfdmZzX2ZzdGF0LCAiJWQgJXAi
LCBpbnQsIHN0cnVjdCBzdGF0Kik7CitUUkFDRVBPSU5UKHRyYWNlX3Zmc19mc3RhdF9yZXQsICIi
KTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX2ZzdGF0X2VyciwgIiVkIiwgaW50KTsKKworZXh0ZXJu
ICJDIgoraW50IF9fZnhzdGF0KGludCB2ZXIsIGludCBmZCwgc3RydWN0IHN0YXQgKnN0KQorewor
ICAgIHN0cnVjdCBmaWxlICpmcDsKKyAgICBpbnQgZXJyb3I7CisKKyAgICB0cmFjZV92ZnNfZnN0
YXQoZmQsIHN0KTsKKworICAgIGVycm9yID0gZmdldChmZCwgJmZwKTsKKyAgICBpZiAoZXJyb3Ip
CisgICAgICAgIGdvdG8gb3V0X2Vycm5vOworCisgICAgZXJyb3IgPSBzeXNfZnN0YXQoZnAsIHN0
KTsKKyAgICBmZHJvcChmcCk7CisKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIGdvdG8gb3V0X2Vy
cm5vOworICAgIHRyYWNlX3Zmc19mc3RhdF9yZXQoKTsKKyAgICByZXR1cm4gMDsKKworICAgIG91
dF9lcnJubzoKKyAgICB0cmFjZV92ZnNfZnN0YXRfZXJyKGVycm9yKTsKKyAgICBlcnJubyA9IGVy
cm9yOworICAgIHJldHVybiAtMTsKK30KKworTEZTNjQoX19meHN0YXQpOworCitleHRlcm4gIkMi
CitpbnQgZnN0YXQoaW50IGZkLCBzdHJ1Y3Qgc3RhdCAqc3QpCit7CisgICAgcmV0dXJuIF9fZnhz
dGF0KDEsIGZkLCBzdCk7Cit9CisKK0xGUzY0KGZzdGF0KTsKKworZXh0ZXJuICJDIgoraW50IF9f
ZnhzdGF0YXQoaW50IHZlciwgaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwgc3RydWN0
IHN0YXQgKnN0LAorICAgICAgICBpbnQgZmxhZ3MpCit7CisgICAgaWYgKGZsYWdzICYgQVRfU1lN
TElOS19OT0ZPTExPVykgeworICAgICAgICBVTklNUExFTUVOVEVEKCJmc3RhdGF0KCkgd2l0aCBB
VF9TWU1MSU5LX05PRk9MTE9XIik7CisgICAgfQorCisgICAgaWYgKHBhdGhuYW1lWzBdID09ICcv
JyB8fCBkaXJmZCA9PSBBVF9GRENXRCkgeworICAgICAgICByZXR1cm4gc3RhdChwYXRobmFtZSwg
c3QpOworICAgIH0KKyAgICAvLyBJZiBBVF9FTVBUWV9QQVRIIGFuZCBwYXRobmFtZSBpcyBhbiBl
bXB0eSBzdHJpbmcsIGZzdGF0YXQoKSBvcGVyYXRlcyBvbgorICAgIC8vIGRpcmZkIGl0c2VsZiwg
YW5kIGluIHRoYXQgY2FzZSBpdCBkb2Vzbid0IGhhdmUgdG8gYmUgYSBkaXJlY3RvcnkuCisgICAg
aWYgKChmbGFncyAmIEFUX0VNUFRZX1BBVEgpICYmICFwYXRobmFtZVswXSkgeworICAgICAgICBy
ZXR1cm4gZnN0YXQoZGlyZmQsIHN0KTsKKyAgICB9CisKKyAgICBzdHJ1Y3QgZmlsZSAqZnA7Cisg
ICAgaW50IGVycm9yID0gZmdldChkaXJmZCwgJmZwKTsKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAg
ICAgZXJybm8gPSBlcnJvcjsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIHN0cnVj
dCB2bm9kZSAqdnAgPSBmcC0+Zl9kZW50cnktPmRfdm5vZGU7CisgICAgdm5fbG9jayh2cCk7CisK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8Y2hhciBbXT4gdXAgKG5ldyBjaGFyW1BBVEhfTUFYXSk7Cisg
ICAgY2hhciAqcCA9IHVwLmdldCgpOworICAgIC8qIGJ1aWxkIGFic29sdXRlIHBhdGggKi8KKyAg
ICBzdHJsY3B5KHAsIGZwLT5mX2RlbnRyeS0+ZF9tb3VudC0+bV9wYXRoLCBQQVRIX01BWCk7Cisg
ICAgc3RybGNhdChwLCBmcC0+Zl9kZW50cnktPmRfcGF0aCwgUEFUSF9NQVgpOworICAgIHN0cmxj
YXQocCwgIi8iLCBQQVRIX01BWCk7CisgICAgc3RybGNhdChwLCBwYXRobmFtZSwgUEFUSF9NQVgp
OworCisgICAgZXJyb3IgPSBzdGF0KHAsIHN0KTsKKworICAgIHZuX3VubG9jayh2cCk7CisgICAg
ZmRyb3AoZnApOworCisgICAgcmV0dXJuIGVycm9yOworfQorCitMRlM2NChfX2Z4c3RhdGF0KTsK
KworZXh0ZXJuICJDIgoraW50IGZzdGF0YXQoaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRoLCBz
dHJ1Y3Qgc3RhdCAqc3QsIGludCBmbGFncykKK3sKKyAgICByZXR1cm4gX19meHN0YXRhdCgxLCBk
aXJmZCwgcGF0aCwgc3QsIGZsYWdzKTsKK30KKworTEZTNjQoZnN0YXRhdCk7CisKK2V4dGVybiAi
QyIgaW50IGZsb2NrKGludCBmZCwgaW50IG9wZXJhdGlvbikKK3sKKyAgICBpZiAoIWZpbGVyZWZf
ZnJvbV9mZChmZCkpIHsKKyAgICAgICAgcmV0dXJuIGxpYmNfZXJyb3IoRUJBREYpOworICAgIH0K
KworICAgIHN3aXRjaCAob3BlcmF0aW9uKSB7CisgICAgY2FzZSBMT0NLX1NIOgorICAgIGNhc2Ug
TE9DS19TSCB8IExPQ0tfTkI6CisgICAgY2FzZSBMT0NLX0VYOgorICAgIGNhc2UgTE9DS19FWCB8
IExPQ0tfTkI6CisgICAgY2FzZSBMT0NLX1VOOgorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0
OgorICAgICAgICByZXR1cm4gbGliY19lcnJvcihFSU5WQUwpOworICAgIH0KKworICAgIHJldHVy
biAwOworfQorCitUUkFDRVBPSU5UKHRyYWNlX3Zmc19yZWFkZGlyLCAiJWQgJXAiLCBpbnQsIGRp
cmVudCopOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfcmVhZGRpcl9yZXQsICIiKTsKK1RSQUNFUE9J
TlQodHJhY2VfdmZzX3JlYWRkaXJfZXJyLCAiJWQiLCBpbnQpOworCitzdHJ1Y3QgX19kaXJzdHJl
YW0KK3sKKyAgICBpbnQgZmQ7Cit9OworCitESVIgKm9wZW5kaXIoY29uc3QgY2hhciAqcGF0aCkK
K3sKKyAgICBESVIgKmRpciA9IG5ldyBESVI7CisKKyAgICBpZiAoIWRpcikKKyAgICAgICAgcmV0
dXJuIGxpYmNfZXJyb3JfcHRyPERJUj4oRU5PTUVNKTsKKworICAgIGRpci0+ZmQgPSBvcGVuKHBh
dGgsIE9fUkRPTkxZKTsKKyAgICBpZiAoZGlyLT5mZCA8IDApIHsKKyAgICAgICAgZGVsZXRlIGRp
cjsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIHJldHVybiBkaXI7Cit9CisK
K0RJUiAqZmRvcGVuZGlyKGludCBmZCkKK3sKKyAgICBESVIgKmRpcjsKKyAgICBzdHJ1Y3Qgc3Rh
dCBzdDsKKyAgICBpZiAoZnN0YXQoZmQsICZzdCkgPCAwKSB7CisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIH0KKyAgICBpZiAoIVNfSVNESVIoc3Quc3RfbW9kZSkpIHsKKyAgICAgICAgZXJy
bm8gPSBFTk9URElSOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgZGlyID0g
bmV3IERJUjsKKyAgICBkaXItPmZkID0gZmQ7CisgICAgcmV0dXJuIGRpcjsKKworfQorCitpbnQg
ZGlyZmQoRElSICpkaXJwKQoreworICAgIGlmICghZGlycCkgeworICAgICAgICByZXR1cm4gbGli
Y19lcnJvcihFSU5WQUwpOworICAgIH0KKworICAgIHJldHVybiBkaXJwLT5mZDsKK30KKworaW50
IGNsb3NlZGlyKERJUiAqZGlyKQoreworICAgIGNsb3NlKGRpci0+ZmQpOworICAgIGRlbGV0ZSBk
aXI7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0cnVjdCBkaXJlbnQgKnJlYWRkaXIoRElSICpkaXIp
Cit7CisgICAgc3RhdGljIF9fdGhyZWFkIHN0cnVjdCBkaXJlbnQgZW50cnksICpyZXN1bHQ7Cisg
ICAgaW50IHJldDsKKworICAgIHJldCA9IHJlYWRkaXJfcihkaXIsICZlbnRyeSwgJnJlc3VsdCk7
CisgICAgaWYgKHJldCkKKyAgICAgICAgcmV0dXJuIGxpYmNfZXJyb3JfcHRyPHN0cnVjdCBkaXJl
bnQ+KHJldCk7CisKKyAgICBlcnJubyA9IDA7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworaW50
IHJlYWRkaXJfcihESVIgKmRpciwgc3RydWN0IGRpcmVudCAqZW50cnksIHN0cnVjdCBkaXJlbnQg
KipyZXN1bHQpCit7CisgICAgaW50IGVycm9yOworICAgIHN0cnVjdCBmaWxlICpmcDsKKworICAg
IHRyYWNlX3Zmc19yZWFkZGlyKGRpci0+ZmQsIGVudHJ5KTsKKyAgICBlcnJvciA9IGZnZXQoZGly
LT5mZCwgJmZwKTsKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgdHJhY2VfdmZzX3JlYWRkaXJf
ZXJyKGVycm9yKTsKKyAgICB9IGVsc2UgeworICAgICAgICBlcnJvciA9IHN5c19yZWFkZGlyKGZw
LCBlbnRyeSk7CisgICAgICAgIGZkcm9wKGZwKTsKKyAgICAgICAgaWYgKGVycm9yKSB7CisgICAg
ICAgICAgICB0cmFjZV92ZnNfcmVhZGRpcl9lcnIoZXJyb3IpOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgdHJhY2VfdmZzX3JlYWRkaXJfcmV0KCk7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgLy8gT3VyIGRpcmVudCBoYXMgKGxpa2UgTGludXgpIGEgZF9yZWNsZW4gZmllbGQsIGJ1dCBh
IGNvbnN0YW50IHNpemUuCisgICAgZW50cnktPmRfcmVjbGVuID0gc2l6ZW9mKCplbnRyeSk7CisK
KyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgKnJlc3VsdCA9IG51bGxwdHI7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgKnJlc3VsdCA9IGVudHJ5OworICAgIH0KKyAgICByZXR1cm4gZXJyb3IgPT0g
RU5PRU5UID8gMCA6IGVycm9yOworfQorCisvLyBGSVhNRTogaW4gNjRiaXQgZGlyZW50NjQgYW5k
IGRpcmVudCBhcmUgaWRlbnRpY2FsLCBzbyBpdCdzIHNhZmUgdG8gYWxpYXMKKyN1bmRlZiByZWFk
ZGlyNjRfcgorZXh0ZXJuICJDIiBpbnQgcmVhZGRpcjY0X3IoRElSICpkaXIsIHN0cnVjdCBkaXJl
bnQ2NCAqZW50cnksCisgICAgICAgIHN0cnVjdCBkaXJlbnQ2NCAqKnJlc3VsdCkKKyAgICAgICAg
X19hdHRyaWJ1dGVfXygoYWxpYXMoInJlYWRkaXJfciIpKSk7CisKKyN1bmRlZiByZWFkZGlyNjQK
K2V4dGVybiAiQyIgc3RydWN0IGRpcmVudCAqcmVhZGRpcjY0KERJUiAqZGlyKSBfX2F0dHJpYnV0
ZV9fKChhbGlhcygicmVhZGRpciIpKSk7CisKK3ZvaWQgcmV3aW5kZGlyKERJUiAqZGlycCkKK3sK
KyAgICBzdHJ1Y3QgZmlsZSAqZnA7CisKKyAgICBhdXRvIGVycm9yID0gZmdldChkaXJwLT5mZCwg
JmZwKTsKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgLy8gUE9TSVggc3BlY2lmaWVzIHRoYXQg
d2hhdCByZXdpbmRkaXIoKSBkb2VzIGluIHRoZSBjYXNlIG9mIGVycm9yCisgICAgICAgIC8vIGlz
IHVuZGVmaW5lZC4uLgorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3lzX3Jld2luZGRp
cihmcCk7CisgICAgLy8gQWdhaW4sIGVycm9yIGNvZGUgZnJvbSBzeXNfcmV3aW5kZGlyKCkgaXMg
aWdub3JlZC4KKyAgICBmZHJvcChmcCk7Cit9CisKK2xvbmcgdGVsbGRpcihESVIgKmRpcnApCit7
CisgICAgc3RydWN0IGZpbGUgKmZwOworICAgIGludCBlcnJvciA9IGZnZXQoZGlycC0+ZmQsICZm
cCk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIHJldHVybiBsaWJjX2Vycm9yKGVycm9yKTsK
KyAgICB9CisKKyAgICBsb25nIGxvYzsKKyAgICBlcnJvciA9IHN5c190ZWxsZGlyKGZwLCAmbG9j
KTsKKyAgICBmZHJvcChmcCk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIHJldHVybiBsaWJj
X2Vycm9yKGVycm9yKTsKKyAgICB9CisgICAgcmV0dXJuIGxvYzsKK30KKwordm9pZCBzZWVrZGly
KERJUiAqZGlycCwgbG9uZyBsb2MpCit7CisgICAgc3RydWN0IGZpbGUgKmZwOworICAgIGludCBl
cnJvciA9IGZnZXQoZGlycC0+ZmQsICZmcCk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIC8v
IFBPU0lYIHNwZWNpZmllcyBzZWVrZGlyKCkgY2Fubm90IHJldHVybiBlcnJvcnMuCisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgc3lzX3NlZWtkaXIoZnAsIGxvYyk7CisgICAgLy8gQWdhaW4s
IGVycm9yIGNvZGUgZnJvbSBzeXNfc2Vla2RpcigpIGlzIGlnbm9yZWQuCisgICAgZmRyb3AoZnAp
OworfQorCitUUkFDRVBPSU5UKHRyYWNlX3Zmc19ta2RpciwgIlwiJXNcIiAwJTBvIiwgY29uc3Qg
Y2hhciosIG1vZGVfdCk7CitUUkFDRVBPSU5UKHRyYWNlX3Zmc19ta2Rpcl9yZXQsICIiKTsKK1RS
QUNFUE9JTlQodHJhY2VfdmZzX21rZGlyX2VyciwgIiVkIiwgaW50KTsKKworaW50Citta2Rpcihj
b25zdCBjaGFyICpwYXRobmFtZSwgbW9kZV90IG1vZGUpCit7CisgICAgc3RydWN0IHRhc2sgKnQg
PSBtYWluX3Rhc2s7CisgICAgY2hhciBwYXRoW1BBVEhfTUFYXTsKKyAgICBpbnQgZXJyb3I7CisK
KyAgICBtb2RlID0gYXBwbHlfdW1hc2sobW9kZSk7CisKKyAgICB0cmFjZV92ZnNfbWtkaXIocGF0
aG5hbWUsIG1vZGUpOworICAgIGlmICgoZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5hbWUsIFZX
UklURSwgcGF0aCkpICE9IDApCisgICAgICAgIGdvdG8gb3V0X2Vycm5vOworCisgICAgZXJyb3Ig
PSBzeXNfbWtkaXIocGF0aCwgbW9kZSk7CisgICAgaWYgKGVycm9yKQorICAgICAgICBnb3RvIG91
dF9lcnJubzsKKyAgICB0cmFjZV92ZnNfbWtkaXJfcmV0KCk7CisgICAgcmV0dXJuIDA7CisgICAg
b3V0X2Vycm5vOgorICAgIHRyYWNlX3Zmc19ta2Rpcl9lcnIoZXJyb3IpOworICAgIGVycm5vID0g
ZXJyb3I7CisgICAgcmV0dXJuIC0xOworfQorCitUUkFDRVBPSU5UKHRyYWNlX3Zmc19ybWRpciwg
IlwiJXNcIiIsIGNvbnN0IGNoYXIqKTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX3JtZGlyX3JldCwg
IiIpOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfcm1kaXJfZXJyLCAiJWQiLCBpbnQpOworCitpbnQg
cm1kaXIoY29uc3QgY2hhciAqcGF0aG5hbWUpCit7CisgICAgc3RydWN0IHRhc2sgKnQgPSBtYWlu
X3Rhc2s7CisgICAgY2hhciBwYXRoW1BBVEhfTUFYXTsKKyAgICBpbnQgZXJyb3I7CisKKyAgICB0
cmFjZV92ZnNfcm1kaXIocGF0aG5hbWUpOworICAgIGVycm9yID0gRU5PRU5UOworICAgIGlmIChw
YXRobmFtZSA9PSBudWxscHRyKQorICAgICAgICBnb3RvIG91dF9lcnJubzsKKyAgICBpZiAoKGVy
cm9yID0gdGFza19jb252KHQsIHBhdGhuYW1lLCBWV1JJVEUsIHBhdGgpKSAhPSAwKQorICAgICAg
ICBnb3RvIG91dF9lcnJubzsKKworICAgIGVycm9yID0gc3lzX3JtZGlyKHBhdGgpOworICAgIGlm
IChlcnJvcikKKyAgICAgICAgZ290byBvdXRfZXJybm87CisgICAgdHJhY2VfdmZzX3JtZGlyX3Jl
dCgpOworICAgIHJldHVybiAwOworICAgIG91dF9lcnJubzoKKyAgICB0cmFjZV92ZnNfcm1kaXJf
ZXJyKGVycm9yKTsKKyAgICBlcnJubyA9IGVycm9yOworICAgIHJldHVybiAtMTsKK30KKworc3Rh
dGljIHZvaWQKK2dldF9sYXN0X2NvbXBvbmVudChjb25zdCBjaGFyICpwYXRoLCBjaGFyICpkc3Qp
Cit7CisgICAgaW50IHBvcyA9IHN0cmxlbihwYXRoKSAtIDE7CisKKyAgICB3aGlsZSAocG9zID49
IDAgJiYgcGF0aFtwb3NdID09ICcvJykKKyAgICAgICAgcG9zLS07CisKKyAgICBpbnQgY29tcG9u
ZW50X2VuZCA9IHBvczsKKworICAgIHdoaWxlIChwb3MgPj0gMCAmJiBwYXRoW3Bvc10gIT0gJy8n
KQorICAgICAgICBwb3MtLTsKKworICAgIGludCBjb21wb25lbnRfc3RhcnQgPSBwb3MgKyAxOwor
CisgICAgaW50IGxlbiA9IGNvbXBvbmVudF9lbmQgLSBjb21wb25lbnRfc3RhcnQgKyAxOworICAg
IG1lbWNweShkc3QsIHBhdGggKyBjb21wb25lbnRfc3RhcnQsIGxlbik7CisgICAgZHN0W2xlbl0g
PSAwOworfQorCitzdGF0aWMgYm9vbCBudWxsX29yX2VtcHR5KGNvbnN0IGNoYXIgKnN0cikKK3sK
KyAgICByZXR1cm4gc3RyID09IG51bGxwdHIgfHwgKnN0ciA9PSAnXDAnOworfQorCitUUkFDRVBP
SU5UKHRyYWNlX3Zmc19yZW5hbWUsICJcIiVzXCIgXCIlc1wiIiwgY29uc3QgY2hhciosIGNvbnN0
IGNoYXIqKTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX3JlbmFtZV9yZXQsICIiKTsKK1RSQUNFUE9J
TlQodHJhY2VfdmZzX3JlbmFtZV9lcnIsICIlZCIsIGludCk7CisKK2ludCByZW5hbWUoY29uc3Qg
Y2hhciAqb2xkcGF0aCwgY29uc3QgY2hhciAqbmV3cGF0aCkKK3sKKyAgICB0cmFjZV92ZnNfcmVu
YW1lKG9sZHBhdGgsIG5ld3BhdGgpOworICAgIHN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOwor
ICAgIGNoYXIgc3JjW1BBVEhfTUFYXTsKKyAgICBjaGFyIGRlc3RbUEFUSF9NQVhdOworICAgIGlu
dCBlcnJvcjsKKworICAgIGVycm9yID0gRU5PRU5UOworICAgIGlmIChudWxsX29yX2VtcHR5KG9s
ZHBhdGgpIHx8IG51bGxfb3JfZW1wdHkobmV3cGF0aCkpCisgICAgICAgIGdvdG8gb3V0X2Vycm5v
OworCisgICAgZ2V0X2xhc3RfY29tcG9uZW50KG9sZHBhdGgsIHNyYyk7CisgICAgaWYgKCFzdHJj
bXAoc3JjLCAiLiIpIHx8ICFzdHJjbXAoc3JjLCAiLi4iKSkgeworICAgICAgICBlcnJvciA9IEVJ
TlZBTDsKKyAgICAgICAgZ290byBvdXRfZXJybm87CisgICAgfQorCisgICAgZ2V0X2xhc3RfY29t
cG9uZW50KG5ld3BhdGgsIGRlc3QpOworICAgIGlmICghc3RyY21wKGRlc3QsICIuIikgfHwgIXN0
cmNtcChkZXN0LCAiLi4iKSkgeworICAgICAgICBlcnJvciA9IEVJTlZBTDsKKyAgICAgICAgZ290
byBvdXRfZXJybm87CisgICAgfQorCisgICAgaWYgKChlcnJvciA9IHRhc2tfY29udih0LCBvbGRw
YXRoLCBWUkVBRCwgc3JjKSkgIT0gMCkKKyAgICAgICAgZ290byBvdXRfZXJybm87CisKKyAgICBp
ZiAoKGVycm9yID0gdGFza19jb252KHQsIG5ld3BhdGgsIFZXUklURSwgZGVzdCkpICE9IDApCisg
ICAgICAgIGdvdG8gb3V0X2Vycm5vOworCisgICAgZXJyb3IgPSBzeXNfcmVuYW1lKHNyYywgZGVz
dCk7CisgICAgaWYgKGVycm9yKQorICAgICAgICBnb3RvIG91dF9lcnJubzsKKyAgICB0cmFjZV92
ZnNfcmVuYW1lX3JldCgpOworICAgIHJldHVybiAwOworICAgIG91dF9lcnJubzoKKyAgICB0cmFj
ZV92ZnNfcmVuYW1lX2VycihlcnJvcik7CisgICAgZXJybm8gPSBlcnJvcjsKKyAgICByZXR1cm4g
LTE7Cit9CisKK1RSQUNFUE9JTlQodHJhY2VfdmZzX2NoZGlyLCAiXCIlc1wiIiwgY29uc3QgY2hh
ciopOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfY2hkaXJfcmV0LCAiIik7CitUUkFDRVBPSU5UKHRy
YWNlX3Zmc19jaGRpcl9lcnIsICIlZCIsIGludCk7CisKK3N0YXRpYyBpbnQgcmVwbGFjZV9jd2Qo
c3RydWN0IHRhc2sgKnQsIHN0cnVjdCBmaWxlICpuZXdfY3dkZnAsCisgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6ZnVuY3Rpb248aW50ICh2b2lkKT4gY2hkaXJfZnVuYykKK3sKKyAgICBzdHJ1
Y3QgZmlsZSAqb2xkID0gbnVsbHB0cjsKKworICAgIGlmICghdCkgeworICAgICAgICByZXR1cm4g
MDsKKyAgICB9CisKKyAgICBpZiAodC0+dF9jd2RmcCkgeworICAgICAgICBvbGQgPSB0LT50X2N3
ZGZwOworICAgIH0KKworICAgIC8qIERvIHRoZSBhY3R1YWwgY2hkaXIgb3BlcmF0aW9uIGhlcmUg
Ki8KKyAgICBpbnQgZXJyb3IgPSBjaGRpcl9mdW5jKCk7CisKKyAgICB0LT50X2N3ZGZwID0gbmV3
X2N3ZGZwOworICAgIGlmIChvbGQpIHsKKyAgICAgICAgZmRyb3Aob2xkKTsKKyAgICB9CisKKyAg
ICByZXR1cm4gZXJyb3I7Cit9CisKK2ludCBjaGRpcihjb25zdCBjaGFyICpwYXRobmFtZSkKK3sK
KyAgICB0cmFjZV92ZnNfY2hkaXIocGF0aG5hbWUpOworICAgIHN0cnVjdCB0YXNrICp0ID0gbWFp
bl90YXNrOworICAgIGNoYXIgcGF0aFtQQVRIX01BWF07CisgICAgc3RydWN0IGZpbGUgKmZwOwor
ICAgIGludCBlcnJvcjsKKworICAgIGVycm9yID0gRU5PRU5UOworICAgIGlmIChwYXRobmFtZSA9
PSBudWxscHRyKQorICAgICAgICBnb3RvIG91dF9lcnJubzsKKworICAgIGlmICgoZXJyb3IgPSB0
YXNrX2NvbnYodCwgcGF0aG5hbWUsIFZSRUFELCBwYXRoKSkgIT0gMCkKKyAgICAgICAgZ290byBv
dXRfZXJybm87CisKKyAgICAvKiBDaGVjayBpZiBkaXJlY3RvcnkgZXhpdHMgKi8KKyAgICBlcnJv
ciA9IHN5c19vcGVuKHBhdGgsIE9fRElSRUNUT1JZLCAwLCAmZnApOworICAgIGlmIChlcnJvcikg
eworICAgICAgICBnb3RvIG91dF9lcnJubzsKKyAgICB9CisKKyAgICByZXBsYWNlX2N3ZCh0LCBm
cCwgWyZdKCkgeyBzdHJsY3B5KHQtPnRfY3dkLCBwYXRoLCBzaXplb2YodC0+dF9jd2QpKTsgcmV0
dXJuIDA7IH0pOworCisgICAgdHJhY2VfdmZzX2NoZGlyX3JldCgpOworICAgIHJldHVybiAwOwor
ICAgIG91dF9lcnJubzoKKyAgICBlcnJubyA9IGVycm9yOworICAgIHRyYWNlX3Zmc19jaGRpcl9l
cnIoZXJybm8pOworICAgIHJldHVybiAtMTsKK30KKworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZmNo
ZGlyLCAiJWQiLCBpbnQpOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZmNoZGlyX3JldCwgIiIpOwor
VFJBQ0VQT0lOVCh0cmFjZV92ZnNfZmNoZGlyX2VyciwgIiVkIiwgaW50KTsKKworaW50IGZjaGRp
cihpbnQgZmQpCit7CisgICAgdHJhY2VfdmZzX2ZjaGRpcihmZCk7CisgICAgc3RydWN0IHRhc2sg
KnQgPSBtYWluX3Rhc2s7CisgICAgc3RydWN0IGZpbGUgKmZwOworICAgIGludCBlcnJvcjsKKwor
ICAgIGVycm9yID0gZmdldChmZCwgJmZwKTsKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIGdvdG8g
b3V0X2Vycm5vOworCisgICAgZXJyb3IgPSByZXBsYWNlX2N3ZCh0LCBmcCwgWyZdKCkgeyByZXR1
cm4gc3lzX2ZjaGRpcihmcCwgdC0+dF9jd2QpOyB9KTsKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAg
ICAgZmRyb3AoZnApOworICAgICAgICBnb3RvIG91dF9lcnJubzsKKyAgICB9CisKKyAgICB0cmFj
ZV92ZnNfZmNoZGlyX3JldCgpOworICAgIHJldHVybiAwOworCisgICAgb3V0X2Vycm5vOgorICAg
IHRyYWNlX3Zmc19mY2hkaXJfZXJyKGVycm9yKTsKKyAgICBlcnJubyA9IGVycm9yOworICAgIHJl
dHVybiAtMTsKK30KKworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbGluaywgIlwiJXNcIiBcIiVzXCIi
LCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciopOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbGlua19y
ZXQsICIiKTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX2xpbmtfZXJyLCAiJWQiLCBpbnQpOworCitp
bnQgbGluayhjb25zdCBjaGFyICpvbGRwYXRoLCBjb25zdCBjaGFyICpuZXdwYXRoKQoreworICAg
IHN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOworICAgIGNoYXIgcGF0aDFbUEFUSF9NQVhdOwor
ICAgIGNoYXIgcGF0aDJbUEFUSF9NQVhdOworICAgIGludCBlcnJvcjsKKworICAgIHRyYWNlX3Zm
c19saW5rKG9sZHBhdGgsIG5ld3BhdGgpOworCisgICAgZXJyb3IgPSBFTk9FTlQ7CisgICAgaWYg
KG9sZHBhdGggPT0gbnVsbHB0ciB8fCBuZXdwYXRoID09IG51bGxwdHIpCisgICAgICAgIGdvdG8g
b3V0X2Vycm5vOworICAgIGlmICgoZXJyb3IgPSB0YXNrX2NvbnYodCwgb2xkcGF0aCwgVldSSVRF
LCBwYXRoMSkpICE9IDApCisgICAgICAgIGdvdG8gb3V0X2Vycm5vOworICAgIGlmICgoZXJyb3Ig
PSB0YXNrX2NvbnYodCwgbmV3cGF0aCwgVldSSVRFLCBwYXRoMikpICE9IDApCisgICAgICAgIGdv
dG8gb3V0X2Vycm5vOworCisgICAgZXJyb3IgPSBzeXNfbGluayhwYXRoMSwgcGF0aDIpOworICAg
IGlmIChlcnJvcikKKyAgICAgICAgZ290byBvdXRfZXJybm87CisgICAgdHJhY2VfdmZzX2xpbmtf
cmV0KCk7CisgICAgcmV0dXJuIDA7CisgICAgb3V0X2Vycm5vOgorICAgIHRyYWNlX3Zmc19saW5r
X2VycihlcnJvcik7CisgICAgZXJybm8gPSBlcnJvcjsKKyAgICByZXR1cm4gLTE7Cit9CisKKwor
VFJBQ0VQT0lOVCh0cmFjZV92ZnNfc3ltbGluaywgIm9sZHBhdGg9JXMsIG5ld3BhdGg9JXMiLCBj
b25zdCBjaGFyKiwgY29uc3QgY2hhciopOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfc3ltbGlua19y
ZXQsICIiKTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX3N5bWxpbmtfZXJyLCAiZXJybm89JWQiLCBp
bnQpOworCitpbnQgc3ltbGluayhjb25zdCBjaGFyICpvbGRwYXRoLCBjb25zdCBjaGFyICpuZXdw
YXRoKQoreworICAgIGludCBlcnJvcjsKKworICAgIHRyYWNlX3Zmc19zeW1saW5rKG9sZHBhdGgs
IG5ld3BhdGgpOworCisgICAgZXJyb3IgPSBFTk9FTlQ7CisgICAgaWYgKG9sZHBhdGggPT0gbnVs
bHB0ciB8fCBuZXdwYXRoID09IG51bGxwdHIpIHsKKyAgICAgICAgZXJybm8gPSBFTk9FTlQ7Cisg
ICAgICAgIHRyYWNlX3Zmc19zeW1saW5rX2VycihlcnJvcik7CisgICAgICAgIHJldHVybiAoLTEp
OworICAgIH0KKworICAgIGVycm9yID0gc3lzX3N5bWxpbmsob2xkcGF0aCwgbmV3cGF0aCk7Cisg
ICAgaWYgKGVycm9yKSB7CisgICAgICAgIGVycm5vID0gZXJyb3I7CisgICAgICAgIHRyYWNlX3Zm
c19zeW1saW5rX2VycihlcnJvcik7CisgICAgICAgIHJldHVybiAoLTEpOworICAgIH0KKworICAg
IHRyYWNlX3Zmc19zeW1saW5rX3JldCgpOworICAgIHJldHVybiAwOworfQorCitUUkFDRVBPSU5U
KHRyYWNlX3Zmc191bmxpbmssICJcIiVzXCIiLCBjb25zdCBjaGFyKik7CitUUkFDRVBPSU5UKHRy
YWNlX3Zmc191bmxpbmtfcmV0LCAiIik7CitUUkFDRVBPSU5UKHRyYWNlX3Zmc191bmxpbmtfZXJy
LCAiJWQiLCBpbnQpOworCitpbnQgdW5saW5rKGNvbnN0IGNoYXIgKnBhdGhuYW1lKQoreworICAg
IHRyYWNlX3Zmc191bmxpbmsocGF0aG5hbWUpOworICAgIHN0cnVjdCB0YXNrICp0ID0gbWFpbl90
YXNrOworICAgIGNoYXIgcGF0aFtQQVRIX01BWF07CisgICAgaW50IGVycm9yOworCisgICAgZXJy
b3IgPSBFTk9FTlQ7CisgICAgaWYgKHBhdGhuYW1lID09IG51bGxwdHIpCisgICAgICAgIGdvdG8g
b3V0X2Vycm5vOworICAgIGlmICgoZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5hbWUsIFZXUklU
RSwgcGF0aCkpICE9IDApCisgICAgICAgIGdvdG8gb3V0X2Vycm5vOworCisgICAgZXJyb3IgPSBz
eXNfdW5saW5rKHBhdGgpOworICAgIGlmIChlcnJvcikKKyAgICAgICAgZ290byBvdXRfZXJybm87
CisgICAgdHJhY2VfdmZzX3VubGlua19yZXQoKTsKKyAgICByZXR1cm4gMDsKKyAgICBvdXRfZXJy
bm86CisgICAgdHJhY2VfdmZzX3VubGlua19lcnIoZXJyb3IpOworICAgIGVycm5vID0gZXJyb3I7
CisgICAgcmV0dXJuIC0xOworfQorCitUUkFDRVBPSU5UKHRyYWNlX3Zmc19zdGF0LCAiXCIlc1wi
ICVwIiwgY29uc3QgY2hhciosIHN0cnVjdCBzdGF0Kik7CitUUkFDRVBPSU5UKHRyYWNlX3Zmc19z
dGF0X3JldCwgIiIpOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfc3RhdF9lcnIsICIlZCIsIGludCk7
CisKK2V4dGVybiAiQyIKK2ludCBfX3hzdGF0KGludCB2ZXIsIGNvbnN0IGNoYXIgKnBhdGhuYW1l
LCBzdHJ1Y3Qgc3RhdCAqc3QpCit7CisgICAgc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7Cisg
ICAgY2hhciBwYXRoW1BBVEhfTUFYXTsKKyAgICBpbnQgZXJyb3I7CisKKyAgICB0cmFjZV92ZnNf
c3RhdChwYXRobmFtZSwgc3QpOworCisgICAgZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5hbWUs
IDAsIHBhdGgpOworICAgIGlmIChlcnJvcikKKyAgICAgICAgZ290byBvdXRfZXJybm87CisKKyAg
ICBlcnJvciA9IHN5c19zdGF0KHBhdGgsIHN0KTsKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIGdv
dG8gb3V0X2Vycm5vOworICAgIHRyYWNlX3Zmc19zdGF0X3JldCgpOworICAgIHJldHVybiAwOwor
CisgICAgb3V0X2Vycm5vOgorICAgIHRyYWNlX3Zmc19zdGF0X2VycihlcnJvcik7CisgICAgZXJy
bm8gPSBlcnJvcjsKKyAgICByZXR1cm4gLTE7Cit9CisKK0xGUzY0KF9feHN0YXQpOworCitpbnQg
c3RhdChjb25zdCBjaGFyICpwYXRobmFtZSwgc3RydWN0IHN0YXQgKnN0KQoreworICAgIHJldHVy
biBfX3hzdGF0KDEsIHBhdGhuYW1lLCBzdCk7Cit9CisKK0xGUzY0KHN0YXQpOworCitUUkFDRVBP
SU5UKHRyYWNlX3Zmc19sc3RhdCwgInBhdGhuYW1lPSVzLCBzdGF0PSVwIiwgY29uc3QgY2hhcios
IHN0cnVjdCBzdGF0Kik7CitUUkFDRVBPSU5UKHRyYWNlX3Zmc19sc3RhdF9yZXQsICIiKTsKK1RS
QUNFUE9JTlQodHJhY2VfdmZzX2xzdGF0X2VyciwgImVycm5vPSVkIiwgaW50KTsKK2V4dGVybiAi
QyIKK2ludCBfX2x4c3RhdChpbnQgdmVyLCBjb25zdCBjaGFyICpwYXRobmFtZSwgc3RydWN0IHN0
YXQgKnN0KQoreworICAgIHN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOworICAgIGNoYXIgcGF0
aFtQQVRIX01BWF07CisgICAgaW50IGVycm9yOworCisgICAgdHJhY2VfdmZzX2xzdGF0KHBhdGhu
YW1lLCBzdCk7CisKKyAgICBlcnJvciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwgMCwgcGF0aCk7
CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIGVycm5vID0gZXJyb3I7CisgICAgICAgIHRyYWNl
X3Zmc19sc3RhdF9lcnIoZXJyb3IpOworICAgICAgICByZXR1cm4gKC0xKTsKKyAgICB9CisKKyAg
ICBlcnJvciA9IHN5c19sc3RhdChwYXRoLCBzdCk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAg
IGVycm5vID0gZXJyb3I7CisgICAgICAgIHRyYWNlX3Zmc19sc3RhdF9lcnIoZXJyb3IpOworICAg
ICAgICByZXR1cm4gKC0xKTsKKyAgICB9CisKKyAgICB0cmFjZV92ZnNfbHN0YXRfcmV0KCk7Cisg
ICAgcmV0dXJuIDA7Cit9CisKK0xGUzY0KF9fbHhzdGF0KTsKKworaW50IGxzdGF0KGNvbnN0IGNo
YXIgKnBhdGhuYW1lLCBzdHJ1Y3Qgc3RhdCAqc3QpCit7CisgICAgcmV0dXJuIF9fbHhzdGF0KDEs
IHBhdGhuYW1lLCBzdCk7Cit9CisKK0xGUzY0KGxzdGF0KTsKKworVFJBQ0VQT0lOVCh0cmFjZV92
ZnNfc3RhdGZzLCAiXCIlc1wiICVwIiwgY29uc3QgY2hhciosIHN0cnVjdCBzdGF0ZnMqKTsKK1RS
QUNFUE9JTlQodHJhY2VfdmZzX3N0YXRmc19yZXQsICIiKTsKK1RSQUNFUE9JTlQodHJhY2VfdmZz
X3N0YXRmc19lcnIsICIlZCIsIGludCk7CisKK2V4dGVybiAiQyIKK2ludCBfX3N0YXRmcyhjb25z
dCBjaGFyICpwYXRobmFtZSwgc3RydWN0IHN0YXRmcyAqYnVmKQoreworICAgIHRyYWNlX3Zmc19z
dGF0ZnMocGF0aG5hbWUsIGJ1Zik7CisgICAgc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7Cisg
ICAgY2hhciBwYXRoW1BBVEhfTUFYXTsKKyAgICBpbnQgZXJyb3I7CisKKyAgICBlcnJvciA9IHRh
c2tfY29udih0LCBwYXRobmFtZSwgMCwgcGF0aCk7CisgICAgaWYgKGVycm9yKQorICAgICAgICBn
b3RvIG91dF9lcnJubzsKKworICAgIGVycm9yID0gc3lzX3N0YXRmcyhwYXRoLCBidWYpOworICAg
IGlmIChlcnJvcikKKyAgICAgICAgZ290byBvdXRfZXJybm87CisgICAgdHJhY2VfdmZzX3N0YXRm
c19yZXQoKTsKKyAgICByZXR1cm4gMDsKKyAgICBvdXRfZXJybm86CisgICAgdHJhY2VfdmZzX3N0
YXRmc19lcnIoZXJyb3IpOworICAgIGVycm5vID0gZXJyb3I7CisgICAgcmV0dXJuIC0xOworfQor
d2Vha19hbGlhcyhfX3N0YXRmcywgc3RhdGZzKTsKKworTEZTNjQoc3RhdGZzKTsKKworVFJBQ0VQ
T0lOVCh0cmFjZV92ZnNfZnN0YXRmcywgIlwiJXNcIiAlcCIsIGludCwgc3RydWN0IHN0YXRmcyop
OworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZnN0YXRmc19yZXQsICIiKTsKK1RSQUNFUE9JTlQodHJh
Y2VfdmZzX2ZzdGF0ZnNfZXJyLCAiJWQiLCBpbnQpOworCitleHRlcm4gIkMiCitpbnQgX19mc3Rh
dGZzKGludCBmZCwgc3RydWN0IHN0YXRmcyAqYnVmKQoreworICAgIHN0cnVjdCBmaWxlICpmcDsK
KyAgICBpbnQgZXJyb3I7CisKKyAgICB0cmFjZV92ZnNfZnN0YXRmcyhmZCwgYnVmKTsKKyAgICBl
cnJvciA9IGZnZXQoZmQsICZmcCk7CisgICAgaWYgKGVycm9yKQorICAgICAgICBnb3RvIG91dF9l
cnJubzsKKworICAgIGVycm9yID0gc3lzX2ZzdGF0ZnMoZnAsIGJ1Zik7CisgICAgZmRyb3AoZnAp
OworCisgICAgaWYgKGVycm9yKQorICAgICAgICBnb3RvIG91dF9lcnJubzsKKyAgICB0cmFjZV92
ZnNfZnN0YXRmc19yZXQoKTsKKyAgICByZXR1cm4gMDsKKworICAgIG91dF9lcnJubzoKKyAgICB0
cmFjZV92ZnNfZnN0YXRmc19lcnIoZXJyb3IpOworICAgIGVycm5vID0gZXJyb3I7CisgICAgcmV0
dXJuIC0xOworfQord2Vha19hbGlhcyhfX2ZzdGF0ZnMsIGZzdGF0ZnMpOworCitMRlM2NChmc3Rh
dGZzKTsKKworc3RhdGljIGludAorc3RhdGZzX3RvX3N0YXR2ZnMoc3RydWN0IHN0YXR2ZnMgKmRz
dCwgc3RydWN0IHN0YXRmcyAqc3JjKQoreworICAgIGRzdC0+Zl9ic2l6ZSA9IHNyYy0+Zl9ic2l6
ZTsKKyAgICBkc3QtPmZfZnJzaXplID0gc3JjLT5mX2JzaXplOworICAgIGRzdC0+Zl9ibG9ja3Mg
PSBzcmMtPmZfYmxvY2tzOworICAgIGRzdC0+Zl9iZnJlZSA9IHNyYy0+Zl9iZnJlZTsKKyAgICBk
c3QtPmZfYmF2YWlsID0gc3JjLT5mX2JhdmFpbDsKKyAgICBkc3QtPmZfZmlsZXMgPSBzcmMtPmZf
ZmlsZXM7CisgICAgZHN0LT5mX2ZmcmVlID0gc3JjLT5mX2ZmcmVlOworICAgIGRzdC0+Zl9mYXZh
aWwgPSAwOworICAgIGRzdC0+Zl9mc2lkID0gc3JjLT5mX2ZzaWQuX192YWxbMF07CisgICAgZHN0
LT5mX2ZsYWcgPSBzcmMtPmZfZmxhZ3M7CisgICAgZHN0LT5mX25hbWVtYXggPSBzcmMtPmZfbmFt
ZWxlbjsKKyAgICByZXR1cm4gMDsKK30KKworaW50CitzdGF0dmZzKGNvbnN0IGNoYXIgKnBhdGhu
YW1lLCBzdHJ1Y3Qgc3RhdHZmcyAqYnVmKQoreworICAgIHN0cnVjdCBzdGF0ZnMgc3Q7CisKKyAg
ICBpZiAoX19zdGF0ZnMocGF0aG5hbWUsICZzdCkgPCAwKQorICAgICAgICByZXR1cm4gLTE7Cisg
ICAgcmV0dXJuIHN0YXRmc190b19zdGF0dmZzKGJ1ZiwgJnN0KTsKK30KKworTEZTNjQoc3RhdHZm
cyk7CisKK2ludAorZnN0YXR2ZnMoaW50IGZkLCBzdHJ1Y3Qgc3RhdHZmcyAqYnVmKQoreworICAg
IHN0cnVjdCBzdGF0ZnMgc3Q7CisKKyAgICBpZiAoX19mc3RhdGZzKGZkLCAmc3QpIDwgMCkKKyAg
ICAgICAgcmV0dXJuIC0xOworICAgIHJldHVybiBzdGF0ZnNfdG9fc3RhdHZmcyhidWYsICZzdCk7
Cit9CisKK0xGUzY0KGZzdGF0dmZzKTsKKworCitUUkFDRVBPSU5UKHRyYWNlX3Zmc19nZXRjd2Qs
ICIlcCAlZCIsIGNoYXIqLCBzaXplX3QpOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZ2V0Y3dkX3Jl
dCwgIlwiJXNcIiIsIGNvbnN0IGNoYXIqKTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX2dldGN3ZF9l
cnIsICIlZCIsIGludCk7CisKK2NoYXIgKmdldGN3ZChjaGFyICpwYXRoLCBzaXplX3Qgc2l6ZSkK
K3sKKyAgICB0cmFjZV92ZnNfZ2V0Y3dkKHBhdGgsIHNpemUpOworICAgIHN0cnVjdCB0YXNrICp0
ID0gbWFpbl90YXNrOworICAgIGludCBsZW4gPSBzdHJsZW4odC0+dF9jd2QpICsgMTsKKyAgICBp
bnQgZXJyb3I7CisKKyAgICBpZiAoIXBhdGgpIHsKKyAgICAgICAgaWYgKCFzaXplKQorICAgICAg
ICAgICAgc2l6ZSA9IGxlbjsKKyAgICAgICAgcGF0aCA9IChjaGFyKiltYWxsb2Moc2l6ZSk7Cisg
ICAgICAgIGlmICghcGF0aCkgeworICAgICAgICAgICAgZXJyb3IgPSBFTk9NRU07CisgICAgICAg
ICAgICBnb3RvIG91dF9lcnJubzsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlm
ICghc2l6ZSkgeworICAgICAgICAgICAgZXJyb3IgPSBFSU5WQUw7CisgICAgICAgICAgICBnb3Rv
IG91dF9lcnJubzsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChzaXplIDwgbGVuKSB7Cisg
ICAgICAgIGVycm9yID0gRVJBTkdFOworICAgICAgICBnb3RvIG91dF9lcnJubzsKKyAgICB9CisK
KyAgICBtZW1jcHkocGF0aCwgdC0+dF9jd2QsIGxlbik7CisgICAgdHJhY2VfdmZzX2dldGN3ZF9y
ZXQocGF0aCk7CisgICAgcmV0dXJuIHBhdGg7CisKKyAgICBvdXRfZXJybm86CisgICAgdHJhY2Vf
dmZzX2dldGN3ZF9lcnIoZXJyb3IpOworICAgIGVycm5vID0gZXJyb3I7CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKK1RSQUNFUE9JTlQodHJhY2VfdmZzX2R1cCwgIiVkIiwgaW50KTsKK1RSQUNF
UE9JTlQodHJhY2VfdmZzX2R1cF9yZXQsICJcIiVzXCIiLCBpbnQpOworVFJBQ0VQT0lOVCh0cmFj
ZV92ZnNfZHVwX2VyciwgIiVkIiwgaW50KTsKKy8qCisgKiBEdXBsaWNhdGUgYSBmaWxlIGRlc2Ny
aXB0b3IKKyAqLworaW50IGR1cChpbnQgb2xkZmQpCit7CisgICAgc3RydWN0IGZpbGUgKmZwOwor
ICAgIGludCBuZXdmZDsKKyAgICBpbnQgZXJyb3I7CisKKyAgICB0cmFjZV92ZnNfZHVwKG9sZGZk
KTsKKyAgICBlcnJvciA9IGZnZXQob2xkZmQsICZmcCk7CisgICAgaWYgKGVycm9yKQorICAgICAg
ICBnb3RvIG91dF9lcnJubzsKKworICAgIGVycm9yID0gZmRhbGxvYyhmcCwgJm5ld2ZkKTsKKyAg
ICBpZiAoZXJyb3IpCisgICAgICAgIGdvdG8gb3V0X2Zkcm9wOworCisgICAgZmRyb3AoZnApOwor
ICAgIHRyYWNlX3Zmc19kdXBfcmV0KG5ld2ZkKTsKKyAgICByZXR1cm4gbmV3ZmQ7CisKKyAgICBv
dXRfZmRyb3A6CisgICAgZmRyb3AoZnApOworICAgIG91dF9lcnJubzoKKyAgICB0cmFjZV92ZnNf
ZHVwX2VycihlcnJvcik7CisgICAgZXJybm8gPSBlcnJvcjsKKyAgICByZXR1cm4gLTE7Cit9CisK
K1RSQUNFUE9JTlQodHJhY2VfdmZzX2R1cDMsICIlZCAlZCAweCV4IiwgaW50LCBpbnQsIGludCk7
CitUUkFDRVBPSU5UKHRyYWNlX3Zmc19kdXAzX3JldCwgIiVkIiwgaW50KTsKK1RSQUNFUE9JTlQo
dHJhY2VfdmZzX2R1cDNfZXJyLCAiJWQiLCBpbnQpOworLyoKKyAqIER1cGxpY2F0ZSBhIGZpbGUg
ZGVzY3JpcHRvciB0byBhIHBhcnRpY3VsYXIgdmFsdWUuCisgKi8KK2ludCBkdXAzKGludCBvbGRm
ZCwgaW50IG5ld2ZkLCBpbnQgZmxhZ3MpCit7CisgICAgc3RydWN0IGZpbGUgKmZwOworICAgIGlu
dCBlcnJvcjsKKworICAgIHRyYWNlX3Zmc19kdXAzKG9sZGZkLCBuZXdmZCwgZmxhZ3MpOworICAg
IC8qCisgICAgICogRG9uJ3QgYWxsb3cgYW55IGFyZ3VtZW50IGJ1dCBPX0NMT0VYRUMuICBCdXQg
d2UgZXZlbiBpZ25vcmUKKyAgICAgKiB0aGF0IGFzIHdlIGRvbid0IHN1cHBvcnQgZXhlYygpIGFu
ZCB0aHVzIGRvbid0IGNhcmUuCisgICAgICovCisgICAgaWYgKChmbGFncyAmIH5PX0NMT0VYRUMp
ICE9IDApIHsKKyAgICAgICAgZXJyb3IgPSBFSU5WQUw7CisgICAgICAgIGdvdG8gb3V0X2Vycm5v
OworICAgIH0KKworICAgIGlmIChvbGRmZCA9PSBuZXdmZCkgeworICAgICAgICBlcnJvciA9IEVJ
TlZBTDsKKyAgICAgICAgZ290byBvdXRfZXJybm87CisgICAgfQorCisgICAgZXJyb3IgPSBmZ2V0
KG9sZGZkLCAmZnApOworICAgIGlmIChlcnJvcikKKyAgICAgICAgZ290byBvdXRfZXJybm87CisK
KyAgICBlcnJvciA9IGZkc2V0KG5ld2ZkLCBmcCk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAg
IGZkcm9wKGZwKTsKKyAgICAgICAgZ290byBvdXRfZXJybm87CisgICAgfQorCisgICAgZmRyb3Ao
ZnApOworICAgIHRyYWNlX3Zmc19kdXAzX3JldChuZXdmZCk7CisgICAgcmV0dXJuIG5ld2ZkOwor
CisgICAgb3V0X2Vycm5vOgorICAgIHRyYWNlX3Zmc19kdXAzX2VycihlcnJvcik7CisgICAgZXJy
bm8gPSBlcnJvcjsKKyAgICByZXR1cm4gLTE7Cit9CisKK2ludCBkdXAyKGludCBvbGRmZCwgaW50
IG5ld2ZkKQoreworICAgIGlmIChvbGRmZCA9PSBuZXdmZCkKKyAgICAgICAgcmV0dXJuIG5ld2Zk
OworCisgICAgcmV0dXJuIGR1cDMob2xkZmQsIG5ld2ZkLCAwKTsKK30KKworLyoKKyAqIFRoZSBm
aWxlIGNvbnRyb2wgc3lzdGVtIGNhbGwuCisgKi8KKyNkZWZpbmUgU0VURkwgKE9fQVBQRU5EIHwg
T19BU1lOQyB8IE9fRElSRUNUIHwgT19OT0FUSU1FIHwgT19OT05CTE9DSykKKworVFJBQ0VQT0lO
VCh0cmFjZV92ZnNfZmNudGwsICIlZCAlZCAweCV4IiwgaW50LCBpbnQsIGludCk7CitUUkFDRVBP
SU5UKHRyYWNlX3Zmc19mY250bF9yZXQsICJcIiVzXCIiLCBpbnQpOworVFJBQ0VQT0lOVCh0cmFj
ZV92ZnNfZmNudGxfZXJyLCAiJWQiLCBpbnQpOworCitleHRlcm4gIkMiCitpbnQgZmNudGwoaW50
IGZkLCBpbnQgY21kLCBpbnQgYXJnKQoreworICAgIHN0cnVjdCBmaWxlICpmcDsKKyAgICBpbnQg
cmV0ID0gMCwgZXJyb3I7CisgICAgaW50IHRtcDsKKworICAgIHRyYWNlX3Zmc19mY250bChmZCwg
Y21kLCBhcmcpOworICAgIGVycm9yID0gZmdldChmZCwgJmZwKTsKKyAgICBpZiAoZXJyb3IpCisg
ICAgICAgIGdvdG8gb3V0X2Vycm5vOworCisgICAgLy8gQW4gaW1wb3J0YW50IG5vdGUgYWJvdXQg
b3VyIGhhbmRsaW5nIG9mIEZEX0NMT0VYRUMgLyBPX0NMT0VYRUM6CisgICAgLy8gY2xvc2Utb24t
ZXhlYyBzaG91bGRuJ3QgaGF2ZSBiZWVuIGEgZmlsZSBmbGFnIChmcC0+Zl9mbGFncykgLSBpdCBp
cyBhCisgICAgLy8gZmlsZSBkZXNjcmlwdG9yIGZsYWcsIG1lYW5pbmcgdGhhdCB0aGF0IHR3byBk
dXAoKWVkIGZpbGUgZGVzY3JpcHRvcnMKKyAgICAvLyBjb3VsZCBoYXZlIGRpZmZlcmVudCB2YWx1
ZXMgZm9yIEZEX0NMT0VYRUMuIE91ciBjdXJyZW50IGltcGxlbWVudGF0aW9uCisgICAgLy8gKndy
b25nbHkqIG1ha2VzIGNsb3NlLW9uLWV4ZWMgYW4gZl9mbGFnICh1c2luZyB0aGUgYml0IE9fQ0xP
RVhFQykuCisgICAgLy8gVGhlcmUgaXMgbGl0dGxlIHByYWN0aWNhbCBkaWZmZXJlbmNlLCB0aG91
Z2gsIGJlY2F1c2UgdGhpcyBmbGFnIGlzCisgICAgLy8gaWdub3JlZCBpbiBPU3YgYW55d2F5LCBh
cyBpdCBkb2Vzbid0IHN1cHBvcnQgZXhlYygpLgorICAgIHN3aXRjaCAoY21kKSB7CisgICAgY2Fz
ZSBGX0RVUEZEOgorICAgICAgICBlcnJvciA9IF9mZGFsbG9jKGZwLCAmcmV0LCBhcmcpOworICAg
ICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICBnb3RvIG91dF9lcnJubzsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBGX0dFVEZEOgorICAgICAgICByZXQgPSAoZnAtPmZfZmxhZ3MgJiBPX0NM
T0VYRUMpID8gRkRfQ0xPRVhFQyA6IDA7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRl9TRVRG
RDoKKyAgICAgICAgRkRfTE9DSyhmcCk7CisgICAgICAgIGZwLT5mX2ZsYWdzID0gKGZwLT5mX2Zs
YWdzICYgfk9fQ0xPRVhFQykgfAorICAgICAgICAgICAgICAgICgoYXJnICYgRkRfQ0xPRVhFQykg
PyBPX0NMT0VYRUMgOiAwKTsKKyAgICAgICAgRkRfVU5MT0NLKGZwKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBGX0dFVEZMOgorICAgICAgICAvLyBBcyBleHBsYWluZWQgYWJvdmUsIHRoZSBP
X0NMT0VYRUMgc2hvdWxkIGhhdmUgYmVlbiBpbiBmX2ZsYWdzLAorICAgICAgICAvLyBhbmQgc2hv
dWxkbid0IGJlIHJldHVybmVkLiBMaW51eCBhbHdheXMgcmV0dXJucyAwMTAwMDAwICgidGhlCisg
ICAgICAgIC8vIGZsYWcgZm9ybWVybHkga25vd24gYXMgT19MQVJHRUZJTEUpIHNvIGxldCdzIGRv
IGl0IHRvby4KKyAgICAgICAgcmV0ID0gKG9mbGFncyhmcC0+Zl9mbGFncykgJiB+T19DTE9FWEVD
KSB8IDAxMDAwMDA7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRl9TRVRGTDoKKyAgICAgICAg
RkRfTE9DSyhmcCk7CisgICAgICAgIGZwLT5mX2ZsYWdzID0gZmZsYWdzKChvZmxhZ3MoZnAtPmZf
ZmxhZ3MpICYgflNFVEZMKSB8CisgICAgICAgICAgICAgICAgKGFyZyAmIFNFVEZMKSk7CisgICAg
ICAgIEZEX1VOTE9DSyhmcCk7CisKKyAgICAgICAgLyogU3luYyBub25ibG9ja2luZy9hc3luYyBz
dGF0ZSB3aXRoIGZpbGUgZmxhZ3MgKi8KKyAgICAgICAgdG1wID0gZnAtPmZfZmxhZ3MgJiBGTk9O
QkxPQ0s7CisgICAgICAgIGZwLT5pb2N0bChGSU9OQklPLCAmdG1wKTsKKyAgICAgICAgdG1wID0g
ZnAtPmZfZmxhZ3MgJiBGQVNZTkM7CisgICAgICAgIGZwLT5pb2N0bChGSU9BU1lOQywgJnRtcCk7
CisKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGX1NFVExLOgorICAgICAgICBXQVJOX09OQ0Uo
ImZjbnRsKEZfU0VUTEspIHN0dWJiZWRcbiIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZf
R0VUTEs6CisgICAgICAgIFdBUk5fT05DRSgiZmNudGwoRl9HRVRMSykgc3R1YmJlZFxuIik7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgRl9TRVRMS1c6CisgICAgICAgIFdBUk5fT05DRSgiZmNu
dGwoRl9TRVRMS1cpIHN0dWJiZWRcbiIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZfU0VU
T1dOOgorICAgICAgICBXQVJOX09OQ0UoImZjbnRsKEZfU0VUT1dOKSBzdHViYmVkXG4iKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAga3ByaW50ZigidW5zdXBwb3J0ZWQg
ZmNudGwgY21kIDB4JXhcbiIsIGNtZCk7CisgICAgICAgIGVycm9yID0gRUlOVkFMOworICAgIH0K
KworICAgIGZkcm9wKGZwKTsKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIGdvdG8gb3V0X2Vycm5v
OworICAgIHRyYWNlX3Zmc19mY250bF9yZXQocmV0KTsKKyAgICByZXR1cm4gcmV0OworCisgICAg
b3V0X2Vycm5vOgorICAgIHRyYWNlX3Zmc19mY250bF9lcnIoZXJyb3IpOworICAgIGVycm5vID0g
ZXJyb3I7CisgICAgcmV0dXJuIC0xOworfQorCitUUkFDRVBPSU5UKHRyYWNlX3Zmc19hY2Nlc3Ms
ICJcIiVzXCIgMCUwbyIsIGNvbnN0IGNoYXIqLCBpbnQpOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNf
YWNjZXNzX3JldCwgIiIpOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfYWNjZXNzX2VyciwgIiVkIiwg
aW50KTsKKworLyoKKyAqIENoZWNrIHBlcm1pc3Npb24gZm9yIGZpbGUgYWNjZXNzCisgKi8KK2lu
dCBhY2Nlc3MoY29uc3QgY2hhciAqcGF0aG5hbWUsIGludCBtb2RlKQoreworICAgIHRyYWNlX3Zm
c19hY2Nlc3MocGF0aG5hbWUsIG1vZGUpOworICAgIHN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNr
OworICAgIGNoYXIgcGF0aFtQQVRIX01BWF07CisgICAgaW50IGFjYywgZXJyb3IgPSAwOworCisg
ICAgYWNjID0gMDsKKyAgICBpZiAobW9kZSAmIFJfT0spCisgICAgICAgIGFjYyB8PSBWUkVBRDsK
KyAgICBpZiAobW9kZSAmIFdfT0spCisgICAgICAgIGFjYyB8PSBWV1JJVEU7CisKKyAgICBpZiAo
KGVycm9yID0gdGFza19jb252KHQsIHBhdGhuYW1lLCBhY2MsIHBhdGgpKSAhPSAwKQorICAgICAg
ICBnb3RvIG91dF9lcnJubzsKKworICAgIGVycm9yID0gc3lzX2FjY2VzcyhwYXRoLCBtb2RlKTsK
KyAgICBpZiAoZXJyb3IpCisgICAgICAgIGdvdG8gb3V0X2Vycm5vOworICAgIHRyYWNlX3Zmc19h
Y2Nlc3NfcmV0KCk7CisgICAgcmV0dXJuIDA7CisgICAgb3V0X2Vycm5vOgorICAgIGVycm5vID0g
ZXJyb3I7CisgICAgdHJhY2VfdmZzX2FjY2Vzc19lcnIoZXJyb3IpOworICAgIHJldHVybiAtMTsK
K30KKworaW50IGZhY2Nlc3NhdChpbnQgZGlyZmQsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBpbnQg
bW9kZSwgaW50IGZsYWdzKQoreworICAgIGlmIChmbGFncyAmIEFUX1NZTUxJTktfTk9GT0xMT1cp
IHsKKyAgICAgICAgVU5JTVBMRU1FTlRFRCgiZmFjY2Vzc2F0KCkgd2l0aCBBVF9TWU1MSU5LX05P
Rk9MTE9XIik7CisgICAgfQorCisgICAgaWYgKHBhdGhuYW1lWzBdID09ICcvJyB8fCBkaXJmZCA9
PSBBVF9GRENXRCkgeworICAgICAgICByZXR1cm4gYWNjZXNzKHBhdGhuYW1lLCBtb2RlKTsKKyAg
ICB9CisKKyAgICBzdHJ1Y3QgZmlsZSAqZnA7CisgICAgaW50IGVycm9yID0gZmdldChkaXJmZCwg
JmZwKTsKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgZXJybm8gPSBlcnJvcjsKKyAgICAgICAg
cmV0dXJuIC0xOworICAgIH0KKworICAgIHN0cnVjdCB2bm9kZSAqdnAgPSBmcC0+Zl9kZW50cnkt
PmRfdm5vZGU7CisgICAgdm5fbG9jayh2cCk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Y2hhciBb
XT4gdXAgKG5ldyBjaGFyW1BBVEhfTUFYXSk7CisgICAgY2hhciAqcCA9IHVwLmdldCgpOworCisg
ICAgLyogYnVpbGQgYWJzb2x1dGUgcGF0aCAqLworICAgIHN0cmxjcHkocCwgZnAtPmZfZGVudHJ5
LT5kX21vdW50LT5tX3BhdGgsIFBBVEhfTUFYKTsKKyAgICBzdHJsY2F0KHAsIGZwLT5mX2RlbnRy
eS0+ZF9wYXRoLCBQQVRIX01BWCk7CisgICAgc3RybGNhdChwLCAiLyIsIFBBVEhfTUFYKTsKKyAg
ICBzdHJsY2F0KHAsIHBhdGhuYW1lLCBQQVRIX01BWCk7CisKKyAgICBlcnJvciA9IGFjY2Vzcyhw
LCBtb2RlKTsKKworICAgIHZuX3VubG9jayh2cCk7CisgICAgZmRyb3AoZnApOworCisgICAgcmV0
dXJuIGVycm9yOworfQorCitleHRlcm4gIkMiIAoraW50IGV1aWRhY2Nlc3MoY29uc3QgY2hhciAq
cGF0aG5hbWUsIGludCBtb2RlKQoreworICAgIHJldHVybiBhY2Nlc3MocGF0aG5hbWUsIG1vZGUp
OworfQorCit3ZWFrX2FsaWFzKGV1aWRhY2Nlc3MsZWFjY2Vzcyk7CisKKyNpZiAwCitzdGF0aWMg
aW50Citmc19waXBlKHN0cnVjdCB0YXNrICp0LCBzdHJ1Y3QgbXNnICptc2cpCit7CisjaWZkZWYg
Q09ORklHX0ZJRk9GUworICAgIGNoYXIgcGF0aFtQQVRIX01BWF07CisgICAgZmlsZV90IHJmcCwg
d2ZwOworICAgIGludCBlcnJvciwgcmZkLCB3ZmQ7CisKKyAgICBEUFJJTlRGKFZGU0RCX0NPUkUs
ICgiZnNfcGlwZVxuIikpOworCisgICAgaWYgKChyZmQgPSB0YXNrX25ld2ZkKHQpKSA9PSAtMSkK
KyAgICAgICAgcmV0dXJuIEVNRklMRTsKKyAgICB0LT50X29maWxlW3JmZF0gPSAoZmlsZV90KTE7
IC8qIHRlbXAgKi8KKworICAgIGlmICgod2ZkID0gdGFza19uZXdmZCh0KSkgPT0gLTEpIHsKKyAg
ICAgICAgdC0+dF9vZmlsZVtyZmRdID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIEVNRklMRTsK
KyAgICB9CisgICAgc3ByaW50ZihwYXRoLCAiL21udC9maWZvL3BpcGUtJXgtJWQiLCAodV9pbnQp
dC0+dF90YXNraWQsIHJmZCk7CisKKyAgICBpZiAoKGVycm9yID0gc3lzX21rbm9kKHBhdGgsIFNf
SUZJRk8pKSAhPSAwKQorICAgICAgICBnb3RvIG91dDsKKyAgICBpZiAoKGVycm9yID0gc3lzX29w
ZW4ocGF0aCwgT19SRE9OTFkgfCBPX05PTkJMT0NLLCAwLCAmcmZwKSkgIT0gMCkgeworICAgICAg
ICBnb3RvIG91dDsKKyAgICB9CisgICAgaWYgKChlcnJvciA9IHN5c19vcGVuKHBhdGgsIE9fV1JP
TkxZIHwgT19OT05CTE9DSywgMCwgJndmcCkpICE9IDApIHsKKyAgICAgICAgZ290byBvdXQ7Cisg
ICAgfQorICAgIHQtPnRfb2ZpbGVbcmZkXSA9IHJmcDsKKyAgICB0LT50X29maWxlW3dmZF0gPSB3
ZnA7CisgICAgdC0+dF9ub3BlbnMgKz0gMjsKKyAgICBtc2ctPmRhdGFbMF0gPSByZmQ7CisgICAg
bXNnLT5kYXRhWzFdID0gd2ZkOworICAgIHJldHVybiAwOworICAgIG91dDoKKyAgICB0LT50X29m
aWxlW3JmZF0gPSBudWxscHRyOworICAgIHQtPnRfb2ZpbGVbd2ZkXSA9IG51bGxwdHI7CisgICAg
cmV0dXJuIGVycm9yOworI2Vsc2UKKyAgICByZXR1cm4gRU5PU1lTOworI2VuZGlmCit9CisjZW5k
aWYKKworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfaXNhdHR5LCAiJWQiLCBpbnQpOworVFJBQ0VQT0lO
VCh0cmFjZV92ZnNfaXNhdHR5X3JldCwgIiVkIiwgaW50KTsKK1RSQUNFUE9JTlQodHJhY2VfdmZz
X2lzYXR0eV9lcnIsICIlZCIsIGludCk7CisKKy8qCisgKiBSZXR1cm4gaWYgc3BlY2lmaWVkIGZp
bGUgaXMgYSB0dHkKKyAqLworaW50IGlzYXR0eShpbnQgZmQpCit7CisgICAgc3RydWN0IGZpbGUg
KmZwOworICAgIGludCBpc3R0eSA9IDA7CisKKyAgICB0cmFjZV92ZnNfaXNhdHR5KGZkKTsKKyAg
ICBmaWxlcmVmIGYoZmlsZXJlZl9mcm9tX2ZkKGZkKSk7CisgICAgaWYgKCFmKSB7CisgICAgICAg
IGVycm5vID0gRUJBREY7CisgICAgICAgIHRyYWNlX3Zmc19pc2F0dHlfZXJyKGVycm5vKTsKKyAg
ICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGZwID0gZi5nZXQoKTsKKyAgICBpZiAoZHlu
YW1pY19jYXN0PHR0eV9maWxlKj4oZnApIHx8CisgICAgICAgIChmcC0+Zl9kZW50cnkgJiYgZnAt
PmZfZGVudHJ5LT5kX3Zub2RlLT52X2ZsYWdzICYgVklTVFRZKSkgeworICAgICAgICBpc3R0eSA9
IDE7CisgICAgfQorCisgICAgdHJhY2VfdmZzX2lzYXR0eV9yZXQoaXN0dHkpOworICAgIHJldHVy
biBpc3R0eTsKK30KKworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfdHJ1bmNhdGUsICJcIiVzXCIgMHgl
eCIsIGNvbnN0IGNoYXIqLCBvZmZfdCk7CitUUkFDRVBPSU5UKHRyYWNlX3Zmc190cnVuY2F0ZV9y
ZXQsICIiKTsKK1RSQUNFUE9JTlQodHJhY2VfdmZzX3RydW5jYXRlX2VyciwgIiVkIiwgaW50KTsK
KworaW50IHRydW5jYXRlKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBvZmZfdCBsZW5ndGgpCit7Cisg
ICAgdHJhY2VfdmZzX3RydW5jYXRlKHBhdGhuYW1lLCBsZW5ndGgpOworICAgIHN0cnVjdCB0YXNr
ICp0ID0gbWFpbl90YXNrOworICAgIGNoYXIgcGF0aFtQQVRIX01BWF07CisgICAgaW50IGVycm9y
OworCisgICAgZXJyb3IgPSBFTk9FTlQ7CisgICAgaWYgKHBhdGhuYW1lID09IG51bGxwdHIpCisg
ICAgICAgIGdvdG8gb3V0X2Vycm5vOworICAgIGlmICgoZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0
aG5hbWUsIFZXUklURSwgcGF0aCkpICE9IDApCisgICAgICAgIGdvdG8gb3V0X2Vycm5vOworCisg
ICAgZXJyb3IgPSBzeXNfdHJ1bmNhdGUocGF0aCwgbGVuZ3RoKTsKKyAgICBpZiAoZXJyb3IpCisg
ICAgICAgIGdvdG8gb3V0X2Vycm5vOworICAgIHRyYWNlX3Zmc190cnVuY2F0ZV9yZXQoKTsKKyAg
ICByZXR1cm4gMDsKKyAgICBvdXRfZXJybm86CisgICAgZXJybm8gPSBlcnJvcjsKKyAgICB0cmFj
ZV92ZnNfdHJ1bmNhdGVfZXJyKGVycm9yKTsKKyAgICByZXR1cm4gLTE7Cit9CisKK0xGUzY0KHRy
dW5jYXRlKTsKKworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZnRydW5jYXRlLCAiJWQgMHgleCIsIGlu
dCwgb2ZmX3QpOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZnRydW5jYXRlX3JldCwgIiIpOworVFJB
Q0VQT0lOVCh0cmFjZV92ZnNfZnRydW5jYXRlX2VyciwgIiVkIiwgaW50KTsKKworaW50IGZ0cnVu
Y2F0ZShpbnQgZmQsIG9mZl90IGxlbmd0aCkKK3sKKyAgICB0cmFjZV92ZnNfZnRydW5jYXRlKGZk
LCBsZW5ndGgpOworICAgIHN0cnVjdCBmaWxlICpmcDsKKyAgICBpbnQgZXJyb3I7CisKKyAgICBl
cnJvciA9IGZnZXQoZmQsICZmcCk7CisgICAgaWYgKGVycm9yKQorICAgICAgICBnb3RvIG91dF9l
cnJubzsKKworICAgIGVycm9yID0gc3lzX2Z0cnVuY2F0ZShmcCwgbGVuZ3RoKTsKKyAgICBmZHJv
cChmcCk7CisKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIGdvdG8gb3V0X2Vycm5vOworICAgIHRy
YWNlX3Zmc19mdHJ1bmNhdGVfcmV0KCk7CisgICAgcmV0dXJuIDA7CisKKyAgICBvdXRfZXJybm86
CisgICAgZXJybm8gPSBlcnJvcjsKKyAgICB0cmFjZV92ZnNfZnRydW5jYXRlX2VycihlcnJvcik7
CisgICAgcmV0dXJuIC0xOworfQorCitMRlM2NChmdHJ1bmNhdGUpOworCitzc2l6ZV90IHJlYWRs
aW5rKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBjaGFyICpidWYsIHNpemVfdCBidWZzaXplKQorewor
ICAgIHN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOworICAgIGNoYXIgcGF0aFtQQVRIX01BWF07
CisgICAgaW50IGVycm9yOworICAgIHNzaXplX3Qgc2l6ZTsKKworICAgIGVycm9yID0gLUVJTlZB
TDsKKyAgICBpZiAoYnVmc2l6ZSA8PSAwKQorICAgICAgICBnb3RvIG91dF9lcnJubzsKKworICAg
IGVycm9yID0gRU5PRU5UOworICAgIGlmIChwYXRobmFtZSA9PSBudWxscHRyKQorICAgICAgICBn
b3RvIG91dF9lcnJubzsKKyAgICBlcnJvciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwgVldSSVRF
LCBwYXRoKTsKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIGdvdG8gb3V0X2Vycm5vOworCisgICAg
c2l6ZSAgPSAwOworICAgIGVycm9yID0gc3lzX3JlYWRsaW5rKHBhdGgsIGJ1ZiwgYnVmc2l6ZSwg
JnNpemUpOworCisgICAgaWYgKGVycm9yICE9IDApCisgICAgICAgIGdvdG8gb3V0X2Vycm5vOwor
CisgICAgcmV0dXJuIHNpemU7CisgICAgb3V0X2Vycm5vOgorICAgIGVycm5vID0gZXJyb3I7Cisg
ICAgcmV0dXJuIC0xOworfQorCitUUkFDRVBPSU5UKHRyYWNlX3Zmc19mYWxsb2NhdGUsICIlZCAl
ZCAweCV4IDB4JXgiLCBpbnQsIGludCwgbG9mZl90LCBsb2ZmX3QpOworVFJBQ0VQT0lOVCh0cmFj
ZV92ZnNfZmFsbG9jYXRlX3JldCwgIiIpOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZmFsbG9jYXRl
X2VyciwgIiVkIiwgaW50KTsKKworaW50IGZhbGxvY2F0ZShpbnQgZmQsIGludCBtb2RlLCBsb2Zm
X3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuKQoreworICAgIHN0cnVjdCBmaWxlICpmcDsKKyAgICBpbnQg
ZXJyb3I7CisKKyAgICB0cmFjZV92ZnNfZmFsbG9jYXRlKGZkLCBtb2RlLCBvZmZzZXQsIGxlbik7
CisgICAgZXJyb3IgPSBmZ2V0KGZkLCAmZnApOworICAgIGlmIChlcnJvcikKKyAgICAgICAgZ290
byBvdXRfZXJybm87CisKKyAgICBlcnJvciA9IHN5c19mYWxsb2NhdGUoZnAsIG1vZGUsIG9mZnNl
dCwgbGVuKTsKKyAgICBmZHJvcChmcCk7CisKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIGdvdG8g
b3V0X2Vycm5vOworICAgIHRyYWNlX3Zmc19mYWxsb2NhdGVfcmV0KCk7CisgICAgcmV0dXJuIDA7
CisKKyAgICBvdXRfZXJybm86CisgICAgdHJhY2VfdmZzX2ZhbGxvY2F0ZV9lcnIoZXJyb3IpOwor
ICAgIGVycm5vID0gZXJyb3I7CisgICAgcmV0dXJuIC0xOworfQorCitMRlM2NChmYWxsb2NhdGUp
OworCitUUkFDRVBPSU5UKHRyYWNlX3Zmc191dGltZXMsICJcIiVzXCIiLCBjb25zdCBjaGFyKik7
CitUUkFDRVBPSU5UKHRyYWNlX3Zmc191dGltZXNfcmV0LCAiIik7CitUUkFDRVBPSU5UKHRyYWNl
X3Zmc191dGltZXNfZXJyLCAiJWQiLCBpbnQpOworCitpbnQgZnV0aW1lcyhpbnQgZmQsIGNvbnN0
IHN0cnVjdCB0aW1ldmFsIHRpbWVzWzJdKQoreworICAgIHJldHVybiBmdXRpbWVzYXQoZmQsIG51
bGxwdHIsIHRpbWVzKTsKK30KKworaW50IGZ1dGltZXNhdChpbnQgZGlyZmQsIGNvbnN0IGNoYXIg
KnBhdGhuYW1lLCBjb25zdCBzdHJ1Y3QgdGltZXZhbCB0aW1lc1syXSkKK3sKKyAgICBzdHJ1Y3Qg
c3RhdCBzdDsKKyAgICBzdHJ1Y3QgZmlsZSAqZnA7CisgICAgaW50IGVycm9yOworICAgIGNoYXIg
KmFic29sdXRlX3BhdGg7CisKKyAgICBpZiAoKHBhdGhuYW1lICYmIHBhdGhuYW1lWzBdID09ICcv
JykgfHwgZGlyZmQgPT0gQVRfRkRDV0QpCisgICAgICAgIHJldHVybiB1dGltZXMocGF0aG5hbWUs
IHRpbWVzKTsKKworICAgIC8vIE5vdGU6IGlmIHBhdGhuYW1lID09IG51bGxwdHIsIGZ1dGltZXNh
dCBvcGVyYXRlcyBvbiBkaXJmZCBpdHNlbGYsIGFuZCBpbgorICAgIC8vIHRoYXQgY2FzZSBpdCBk
b2Vzbid0IGhhdmUgdG8gYmUgYSBkaXJlY3RvcnkuCisgICAgaWYgKHBhdGhuYW1lKSB7CisgICAg
ICAgIGVycm9yID0gZnN0YXQoZGlyZmQsICZzdCk7CisgICAgICAgIGlmIChlcnJvcikgeworICAg
ICAgICAgICAgZXJyb3IgPSBlcnJubzsKKyAgICAgICAgICAgIGdvdG8gb3V0X2Vycm5vOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKCFTX0lTRElSKHN0LnN0X21vZGUpKXsKKyAgICAgICAgICAg
IGVycm9yID0gRU5PVERJUjsKKyAgICAgICAgICAgIGdvdG8gb3V0X2Vycm5vOworICAgICAgICB9
CisgICAgfQorCisgICAgZXJyb3IgPSBmZ2V0KGRpcmZkLCAmZnApOworICAgIGlmIChlcnJvcikK
KyAgICAgICAgZ290byBvdXRfZXJybm87CisKKyAgICAvKiBidWlsZCBhYnNvbHV0ZSBwYXRoICov
CisgICAgYWJzb2x1dGVfcGF0aCA9IChjaGFyKiltYWxsb2MoUEFUSF9NQVgpOworICAgIHN0cmxj
cHkoYWJzb2x1dGVfcGF0aCwgZnAtPmZfZGVudHJ5LT5kX21vdW50LT5tX3BhdGgsIFBBVEhfTUFY
KTsKKyAgICBzdHJsY2F0KGFic29sdXRlX3BhdGgsIGZwLT5mX2RlbnRyeS0+ZF9wYXRoLCBQQVRI
X01BWCk7CisKKyAgICBpZiAocGF0aG5hbWUpIHsKKyAgICAgICAgc3RybGNhdChhYnNvbHV0ZV9w
YXRoLCAiLyIsIFBBVEhfTUFYKTsKKyAgICAgICAgc3RybGNhdChhYnNvbHV0ZV9wYXRoLCBwYXRo
bmFtZSwgUEFUSF9NQVgpOworICAgIH0KKworICAgIGVycm9yID0gdXRpbWVzKGFic29sdXRlX3Bh
dGgsIHRpbWVzKTsKKyAgICBmcmVlKGFic29sdXRlX3BhdGgpOworCisgICAgZmRyb3AoZnApOwor
CisgICAgaWYgKGVycm9yKQorICAgICAgICBnb3RvIG91dF9lcnJubzsKKyAgICByZXR1cm4gMDsK
KworICAgIG91dF9lcnJubzoKKyAgICBlcnJubyA9IGVycm9yOworICAgIHJldHVybiAtMTsKK30K
KworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfdXRpbWVuc2F0LCAiXCIlc1wiIiwgY29uc3QgY2hhciop
OworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfdXRpbWVuc2F0X3JldCwgIiIpOworVFJBQ0VQT0lOVCh0
cmFjZV92ZnNfdXRpbWVuc2F0X2VyciwgIiVkIiwgaW50KTsKKworZXh0ZXJuICJDIgoraW50IHV0
aW1lbnNhdChpbnQgZGlyZmQsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBjb25zdCBzdHJ1Y3QgdGlt
ZXNwZWMgdGltZXNbMl0sIGludCBmbGFncykKK3sKKyAgICB0cmFjZV92ZnNfdXRpbWVuc2F0KHBh
dGhuYW1lKTsKKworICAgIGF1dG8gZXJyb3IgPSBzeXNfdXRpbWVuc2F0KGRpcmZkLCBwYXRobmFt
ZSwgdGltZXMsIGZsYWdzKTsKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgdHJhY2VfdmZzX3V0
aW1lbnNhdF9lcnIoZXJyb3IpOworICAgICAgICBlcnJubyA9IGVycm9yOworICAgICAgICByZXR1
cm4gLTE7CisgICAgfQorCisgICAgdHJhY2VfdmZzX3V0aW1lbnNhdF9yZXQoKTsKKyAgICByZXR1
cm4gMDsKK30KKworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZnV0aW1lbnMsICIlZCIsIGludCk7CitU
UkFDRVBPSU5UKHRyYWNlX3Zmc19mdXRpbWVuc19yZXQsICIiKTsKK1RSQUNFUE9JTlQodHJhY2Vf
dmZzX2Z1dGltZW5zX2VyciwgIiVkIiwgaW50KTsKKworZXh0ZXJuICJDIgoraW50IGZ1dGltZW5z
KGludCBmZCwgY29uc3Qgc3RydWN0IHRpbWVzcGVjIHRpbWVzWzJdKQoreworICAgIHRyYWNlX3Zm
c19mdXRpbWVucyhmZCk7CisKKyAgICBhdXRvIGVycm9yID0gc3lzX2Z1dGltZW5zKGZkLCB0aW1l
cyk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIHRyYWNlX3Zmc19mdXRpbWVuc19lcnIoZXJy
b3IpOworICAgICAgICBlcnJubyA9IGVycm9yOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQor
CisgICAgdHJhY2VfdmZzX2Z1dGltZW5zX3JldCgpOworICAgIHJldHVybiAwOworfQorCitzdGF0
aWMgaW50IGRvX3V0aW1lcyhjb25zdCBjaGFyICpwYXRobmFtZSwgY29uc3Qgc3RydWN0IHRpbWV2
YWwgdGltZXNbMl0sIGludCBmbGFncykKK3sKKyAgICBzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFz
azsKKyAgICBjaGFyIHBhdGhbUEFUSF9NQVhdOworICAgIGludCBlcnJvcjsKKworICAgIHRyYWNl
X3Zmc191dGltZXMocGF0aG5hbWUpOworCisgICAgZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5h
bWUsIDAsIHBhdGgpOworICAgIGlmIChlcnJvcikgeworICAgICAgICB0cmFjZV92ZnNfdXRpbWVz
X2VycihlcnJvcik7CisgICAgICAgIHJldHVybiBsaWJjX2Vycm9yKGVycm9yKTsKKyAgICB9CisK
KyAgICBlcnJvciA9IHN5c191dGltZXMocGF0aCwgdGltZXMsIGZsYWdzKTsKKyAgICBpZiAoZXJy
b3IpIHsKKyAgICAgICAgdHJhY2VfdmZzX3V0aW1lc19lcnIoZXJyb3IpOworICAgICAgICByZXR1
cm4gbGliY19lcnJvcihlcnJvcik7CisgICAgfQorCisgICAgdHJhY2VfdmZzX3V0aW1lc19yZXQo
KTsKKyAgICByZXR1cm4gMDsKK30KKworZXh0ZXJuICJDIgoraW50IHV0aW1lcyhjb25zdCBjaGFy
ICpwYXRobmFtZSwgY29uc3Qgc3RydWN0IHRpbWV2YWwgdGltZXNbMl0pCit7CisgICAgcmV0dXJu
IGRvX3V0aW1lcyhwYXRobmFtZSwgdGltZXMsIDApOworfQorCitleHRlcm4gIkMiCitpbnQgbHV0
aW1lcyhjb25zdCBjaGFyICpwYXRobmFtZSwgY29uc3Qgc3RydWN0IHRpbWV2YWwgdGltZXNbMl0p
Cit7CisgICAgcmV0dXJuIGRvX3V0aW1lcyhwYXRobmFtZSwgdGltZXMsIEFUX1NZTUxJTktfTk9G
T0xMT1cpOworfQorCitleHRlcm4gIkMiCitpbnQgdXRpbWUoY29uc3QgY2hhciAqcGF0aG5hbWUs
IGNvbnN0IHN0cnVjdCB1dGltYnVmICp0KQoreworICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ6OmNo
cm9ubzsKKworICAgIHN0cnVjdCB0aW1ldmFsIHRpbWVzWzJdOworICAgIHRpbWVzWzBdLnR2X3Vz
ZWMgPSAwOworICAgIHRpbWVzWzFdLnR2X3VzZWMgPSAwOworICAgIGlmICghdCkgeworICAgICAg
ICBsb25nIGludCB0c2VjID0gZHVyYXRpb25fY2FzdDxzZWNvbmRzPihvc3Y6OmNsb2NrOjp3YWxs
Ojpub3coKS50aW1lX3NpbmNlX2Vwb2NoKCkpLmNvdW50KCk7CisgICAgICAgIHRpbWVzWzBdLnR2
X3NlYyA9IHRzZWM7CisgICAgICAgIHRpbWVzWzFdLnR2X3NlYyA9IHRzZWM7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgdGltZXNbMF0udHZfc2VjID0gdC0+YWN0aW1lOworICAgICAgICB0aW1lc1sx
XS50dl9zZWMgPSB0LT5tb2R0aW1lOworICAgIH0KKworICAgIHJldHVybiB1dGltZXMocGF0aG5h
bWUsIHRpbWVzKTsKK30KKworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfY2htb2QsICJcIiVzXCIgMCUw
byIsIGNvbnN0IGNoYXIqLCBtb2RlX3QpOworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfY2htb2RfcmV0
LCAiIik7CitUUkFDRVBPSU5UKHRyYWNlX3Zmc19jaG1vZF9lcnIsICIlZCIsIGludCk7CisKK2lu
dCBjaG1vZChjb25zdCBjaGFyICpwYXRobmFtZSwgbW9kZV90IG1vZGUpCit7CisgICAgdHJhY2Vf
dmZzX2NobW9kKHBhdGhuYW1lLCBtb2RlKTsKKyAgICBzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFz
azsKKyAgICBjaGFyIHBhdGhbUEFUSF9NQVhdOworICAgIGludCBlcnJvciA9IEVOT0VOVDsKKyAg
ICBpZiAocGF0aG5hbWUgPT0gbnVsbHB0cikKKyAgICAgICAgZ290byBvdXRfZXJybm87CisgICAg
aWYgKChlcnJvciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwgVldSSVRFLCBwYXRoKSkgIT0gMCkK
KyAgICAgICAgZ290byBvdXRfZXJybm87CisgICAgZXJyb3IgPSBzeXNfY2htb2QocGF0aCwgbW9k
ZSAmIEFMTFBFUk1TKTsKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIGdvdG8gb3V0X2Vycm5vOwor
ICAgIHRyYWNlX3Zmc19jaG1vZF9yZXQoKTsKKyAgICByZXR1cm4gMDsKK291dF9lcnJubzoKKyAg
ICB0cmFjZV92ZnNfY2htb2RfZXJyKGVycm9yKTsKKyAgICBlcnJubyA9IGVycm9yOworICAgIHJl
dHVybiAtMTsKK30KKworVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZmNobW9kLCAiXCIlZFwiIDAlMG8i
LCBpbnQsIG1vZGVfdCk7CitUUkFDRVBPSU5UKHRyYWNlX3Zmc19mY2htb2RfcmV0LCAiIik7CisK
K2ludCBmY2htb2QoaW50IGZkLCBtb2RlX3QgbW9kZSkKK3sKKyAgICB0cmFjZV92ZnNfZmNobW9k
KGZkLCBtb2RlKTsKKyAgICBhdXRvIGVycm9yID0gc3lzX2ZjaG1vZChmZCwgbW9kZSAmIEFMTFBF
Uk1TKTsKKyAgICB0cmFjZV92ZnNfZmNobW9kX3JldCgpOworICAgIGlmIChlcnJvcikgeworICAg
ICAgICBlcnJubyA9IGVycm9yOworICAgICAgICByZXR1cm4gLTE7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCitUUkFDRVBPSU5UKHRyYWNlX3Zmc19mY2hvd24s
ICJcIiVkXCIgJWQgJWQiLCBpbnQsIHVpZF90LCBnaWRfdCk7CitUUkFDRVBPSU5UKHRyYWNlX3Zm
c19mY2hvd25fcmV0LCAiIik7CisKK2ludCBmY2hvd24oaW50IGZkLCB1aWRfdCBvd25lciwgZ2lk
X3QgZ3JvdXApCit7CisgICAgdHJhY2VfdmZzX2ZjaG93bihmZCwgb3duZXIsIGdyb3VwKTsKKyAg
ICBXQVJOX1NUVUJCRUQoKTsKKyAgICB0cmFjZV92ZnNfZmNob3duX3JldCgpOworICAgIHJldHVy
biAwOworfQorCitpbnQgY2hvd24oY29uc3QgY2hhciAqcGF0aCwgdWlkX3Qgb3duZXIsIGdpZF90
IGdyb3VwKQoreworICAgIFdBUk5fU1RVQkJFRCgpOworICAgIHJldHVybiAwOworfQorCitpbnQg
bGNob3duKGNvbnN0IGNoYXIgKnBhdGgsIHVpZF90IG93bmVyLCBnaWRfdCBncm91cCkKK3sKKyAg
ICBXQVJOX1NUVUJCRUQoKTsKKyAgICByZXR1cm4gMDsKK30KKworCitzc2l6ZV90IHNlbmRmaWxl
KGludCBvdXRfZmQsIGludCBpbl9mZCwgb2ZmX3QgKl9vZmZzZXQsIHNpemVfdCBjb3VudCkKK3sK
KyAgICBzdHJ1Y3QgZmlsZSAqaW5fZnA7CisgICAgc3RydWN0IGZpbGUgKm91dF9mcDsKKyAgICBm
aWxlcmVmIGluX2Z7ZmlsZXJlZl9mcm9tX2ZkKGluX2ZkKX07CisgICAgZmlsZXJlZiBvdXRfZntm
aWxlcmVmX2Zyb21fZmQob3V0X2ZkKX07CisKKyAgICBpZiAoIWluX2YgfHwgIW91dF9mKSB7Cisg
ICAgICAgIHJldHVybiBsaWJjX2Vycm9yKEVCQURGKTsKKyAgICB9CisKKyAgICBpbl9mcCA9IGlu
X2YuZ2V0KCk7CisgICAgb3V0X2ZwID0gb3V0X2YuZ2V0KCk7CisKKyAgICBpZiAoIWluX2ZwLT5m
X2RlbnRyeSkgeworICAgICAgICByZXR1cm4gbGliY19lcnJvcihFQkFERik7CisgICAgfQorCisg
ICAgaWYgKCEoaW5fZnAtPmZfZmxhZ3MgJiBGUkVBRCkpIHsKKyAgICAgICAgcmV0dXJuIGxpYmNf
ZXJyb3IoRUJBREYpOworICAgIH0KKworICAgIGlmIChvdXRfZnAtPmZfdHlwZSAmIERUWVBFX1ZO
T0RFKSB7CisgICAgICAgIGlmICghb3V0X2ZwLT5mX2RlbnRyeSkgeworICAgICAgICAgICAgcmV0
dXJuIGxpYmNfZXJyb3IoRUJBREYpOworCX0gZWxzZSBpZiAoIShvdXRfZnAtPmZfZmxhZ3MgJiBG
V1JJVEUpKSB7CisgICAgICAgICAgICByZXR1cm4gbGliY19lcnJvcihFQkFERik7CisJfQorICAg
IH0KKworICAgIG9mZl90IG9mZnNldCA7CisKKyAgICBpZiAoX29mZnNldCAhPSBudWxscHRyKSB7
CisgICAgICAgIG9mZnNldCA9ICpfb2Zmc2V0OworICAgIH0gZWxzZSB7CisgICAgICAgIC8qIGlm
IF9vZmZzZXQgaXMgbnVsbHB0ciwgd2UgbmVlZCB0byByZWFkIGZyb20gdGhlIHByZXNlbnQgcG9z
aXRpb24gb2YgaW5fZmQgKi8KKyAgICAgICAgb2Zmc2V0ID0gbHNlZWsoaW5fZmQsIDAsIFNFRUtf
Q1VSKTsKKyAgICB9CisKKyAgICAvLyBDb25zdHJhaW4gY291bnQgdG8gdGhlIGV4dGVudCBvZiB0
aGUgZmlsZS4uLgorICAgIHN0cnVjdCBzdGF0IHN0OworICAgIGlmIChmc3RhdChpbl9mZCwgJnN0
KSA8IDApIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChv
ZmZzZXQgPj0gc3Quc3Rfc2l6ZSkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0g
ZWxzZSBpZiAoKG9mZnNldCArIGNvdW50KSA+PSBzdC5zdF9zaXplKSB7CisgICAgICAgICAgICBj
b3VudCA9IHN0LnN0X3NpemUgLSBvZmZzZXQ7CisgICAgICAgICAgICBpZiAoY291bnQgPT0gMCkg
eworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorCisgICAgc2l6ZV90IGJ5dGVzX3RvX21tYXAgPSBjb3VudCArIChvZmZzZXQgJSBtbXU6
OnBhZ2Vfc2l6ZSk7CisgICAgb2ZmX3Qgb2Zmc2V0X2Zvcl9tbWFwID0gIGFsaWduX2Rvd24ob2Zm
c2V0LCAob2ZmX3QpbW11OjpwYWdlX3NpemUpOworCisgICAgY2hhciAqc3JjID0gc3RhdGljX2Nh
c3Q8Y2hhciAqPihtbWFwKG51bGxwdHIsIGJ5dGVzX3RvX21tYXAsIFBST1RfUkVBRCwgTUFQX1NI
QVJFRCwgaW5fZmQsIG9mZnNldF9mb3JfbW1hcCkpOworCisgICAgaWYgKHNyYyA9PSBNQVBfRkFJ
TEVEKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBhdXRvIHJldCA9IHdyaXRl
KG91dF9mZCwgc3JjICsgKG9mZnNldCAlIFBBR0VTSVpFKSwgY291bnQpOworCisgICAgaWYgKHJl
dCA8IDApIHsKKyAgICAgICAgcmV0dXJuIGxpYmNfZXJyb3IoZXJybm8pOworICAgIH0gZWxzZSBp
Zihfb2Zmc2V0ID09IG51bGxwdHIpIHsKKyAgICAgICAgbHNlZWsoaW5fZmQsIHJldCwgU0VFS19D
VVIpOworICAgIH0gZWxzZSB7CisgICAgICAgICpfb2Zmc2V0ICs9IHJldDsKKyAgICB9CisKKyAg
ICBhc3NlcnQobXVubWFwKHNyYywgY291bnQpID09IDApOworCisgICAgcmV0dXJuIHJldDsKK30K
KworI3VuZGVmIHNlbmRmaWxlNjQKK0xGUzY0KHNlbmRmaWxlKTsKKworTk9fU1lTKGludCBmY2ht
b2RhdChpbnQgZGlyZmQsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBtb2RlX3QgbW9kZSwgaW50IGZs
YWdzKSk7CisKK21vZGVfdCB1bWFzayhtb2RlX3QgbmV3bWFzaykKK3sKKyAgICByZXR1cm4gZ2xv
YmFsX3VtYXNrLmV4Y2hhbmdlKG5ld21hc2ssIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOwor
fQorCitpbnQKK2ZzX25vb3Aodm9pZCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworaW50IGNocm9v
dChjb25zdCBjaGFyICpwYXRoKQoreworICAgIFdBUk5fU1RVQkJFRCgpOworICAgIGVycm5vID0g
RU5PU1lTOworICAgIHJldHVybiAtMTsKK30KKworLy8gdW5wYWNrX2Jvb3RmcygpIHVucGFja3Mg
YSBjb2xsZWN0aW9uIG9mIGZpbGVzIHN0b3JlZCBhcyBwYXJ0IG9mIHRoZSBPU3YKKy8vIGV4ZWN1
dGFibGUgKGluIG1lbW9yeSBsb2NhdGlvbiAiYm9vdGZzX3N0YXJ0IikgaW50byB0aGUgZmlsZSBz
eXN0ZW0sCisvLyBub3JtYWxseSB0aGUgaW4tbWVtb3J5IGZpbGVzeXN0ZW0gcmFtZnMuCisvLyBU
aGUgZmlsZXMgYXJlIHBhY2tlZCBpbiB0aGUgZXhlY3V0YWJsZSBpbiBhbiBhZC1ob2MgZm9ybWF0
IGRlZmluZWQgaGVyZS4KKy8vIENvZGUgaW4gc2NyaXB0cy9ta2Jvb3Rmcy5weSBwYWNrcyBmaWxl
cyBpbnRvIHRoaXMgZm9ybWF0LgorI2RlZmluZSBCT09URlNfUEFUSF9NQVggMTExCitlbnVtIGNs
YXNzIGJvb3Rmc19maWxlX3R5cGUgOiBjaGFyIHsgb3RoZXIgPSAwLCBzeW1saW5rID0gMSB9Owor
c3RydWN0IGJvb3Rmc19tZXRhZGF0YSB7CisgICAgdWludDY0X3Qgc2l6ZTsKKyAgICB1aW50NjRf
dCBvZmZzZXQ7CisgICAgLy8gVGhlIGZpbGUncyB0eXBlLiBDYW4gYmUgInN5bWxpbmsiIG9yICJv
dGhlciIuIEEgZGlyZWN0b3J5IGlzIGFuICJvdGhlciIKKyAgICAvLyBmaWxlIHdpdGggaXRzIG5h
bWUgZW5kaW5nIHdpdGggYSAiLyIgKGFuZCBubyBjb250ZW50KS4KKyAgICBib290ZnNfZmlsZV90
eXBlIHR5cGU7CisgICAgLy8gbmFtZSBtdXN0IGVuZCB3aXRoIGEgbnVsbC4gRm9yIHN5bWxpbmsg
ZmlsZXMsIHRoZSBjb250ZW50IG11c3QgZW5kCisgICAgLy8gd2l0aCBhIG51bGwgYXMgd2VsbC4K
KyAgICBjaGFyIG5hbWVbQk9PVEZTX1BBVEhfTUFYXTsKK307CisKK2V4dGVybiBjaGFyIGJvb3Rm
c19zdGFydDsKKworaW50IHJhbWZzX3NldF9maWxlX2RhdGEoc3RydWN0IHZub2RlICp2cCwgY29u
c3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUpOwordm9pZCB1bnBhY2tfYm9vdGZzKHZvaWQpCit7
CisgICAgc3RydWN0IGJvb3Rmc19tZXRhZGF0YSAqbWQgPSAoc3RydWN0IGJvb3Rmc19tZXRhZGF0
YSAqKSZib290ZnNfc3RhcnQ7CisgICAgaW50IGZkLCBpOworCisgICAgZm9yIChpID0gMDsgbWRb
aV0ubmFtZVswXTsgaSsrKSB7CisgICAgICAgIGludCByZXQ7CisgICAgICAgIGNoYXIgKnA7CisK
KyAgICAgICAgLy8gbWtkaXIoKSBkaXJlY3RvcmllcyBuZWVkZWQgZm9yIHRoaXMgcGF0aCBuYW1l
LCBhcyBuZWNlc3NhcnkKKyAgICAgICAgY2hhciB0bXBbQk9PVEZTX1BBVEhfTUFYXTsKKyAgICAg
ICAgc3RybGNweSh0bXAsIG1kW2ldLm5hbWUsIEJPT1RGU19QQVRIX01BWCk7CisgICAgICAgIGZv
ciAocCA9IHRtcDsgKnA7ICsrcCkgeworICAgICAgICAgICAgaWYgKCpwID09ICcvJykgeworICAg
ICAgICAgICAgICAgICpwID0gJ1wwJzsKKyAgICAgICAgICAgICAgICBta2Rpcih0bXAsIDA2NjYp
OyAgLy8gc2lsZW50bHkgaWdub3JlIGVycm9ycyBhbmQgZXhpc3RpbmcgZGlycworICAgICAgICAg
ICAgICAgICpwID0gJy8nOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYg
KG1kW2ldLnR5cGUgPT0gYm9vdGZzX2ZpbGVfdHlwZTo6c3ltbGluaykgeworICAgICAgICAgICAg
Ly8gVGhpcyBpcyBhIHN5bWJvbGljIGxpbmsgcmVjb3JkLiBUaGUgZmlsZSdzIGNvbnRlbnQgaXMg
dGhlCisgICAgICAgICAgICAvLyB0YXJnZXQgcGF0aCwgYW5kIHdlIGFzc3VtZSBlbmRzIHdpdGgg
YSBudWxsLgorICAgICAgICAgICAgaWYgKHN5bWxpbmsoJmJvb3Rmc19zdGFydCArIG1kW2ldLm9m
ZnNldCwgbWRbaV0ubmFtZSkgIT0gMCkgeworICAgICAgICAgICAgICAgIGtwcmludGYoImNvdWxk
bid0IHN5bWxpbmsgJXM6ICVkXG4iLCBtZFtpXS5uYW1lLCBlcnJubyk7CisgICAgICAgICAgICAg
ICAgc3lzX3BhbmljKCJ1bnBhY2tfYm9vdGZzIGZhaWxlZCIpOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCoocC0xKSA9PSAnLycg
JiYgbWRbaV0uc2l6ZSA9PSAwKSB7CisgICAgICAgICAgICAvLyBUaGlzIGlzIGRpcmVjdG9yeSBy
ZWNvcmQuIE5vdGhpbmcgZWxzZSB0byBkbworICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IH0KKworICAgICAgICBmZCA9IGNyZWF0KG1kW2ldLm5hbWUsIDA2NjYpOworICAgICAgICBpZiAo
ZmQgPCAwKSB7CisgICAgICAgICAgICBrcHJpbnRmKCJjb3VsZG4ndCBjcmVhdGUgJXM6ICVkXG4i
LAorICAgICAgICAgICAgICAgICAgICBtZFtpXS5uYW1lLCBlcnJubyk7CisgICAgICAgICAgICBz
eXNfcGFuaWMoInVucGFja19ib290ZnMgZmFpbGVkIik7CisgICAgICAgIH0KKworICAgICAgICBz
dHJ1Y3QgZmlsZSAqZnA7CisgICAgICAgIGludCBlcnJvciA9IGZnZXQoZmQsICZmcCk7CisgICAg
ICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAga3ByaW50ZigiY291bGRuJ3QgZmdldCAlczog
JWRcbiIsCisgICAgICAgICAgICAgICAgICAgIG1kW2ldLm5hbWUsIGVycm9yKTsKKyAgICAgICAg
ICAgIHN5c19wYW5pYygidW5wYWNrX2Jvb3RmcyBmYWlsZWQiKTsKKyAgICAgICAgfQorCisgICAg
ICAgIHN0cnVjdCB2bm9kZSAqdnAgPSBmcC0+Zl9kZW50cnktPmRfdm5vZGU7CisgICAgICAgIHJl
dCA9IHJhbWZzX3NldF9maWxlX2RhdGEodnAsICZib290ZnNfc3RhcnQgKyBtZFtpXS5vZmZzZXQs
IG1kW2ldLnNpemUpOworICAgICAgICBpZiAocmV0KSB7CisgICAgICAgICAgICBrcHJpbnRmKCJy
YW1mc19zZXRfZmlsZV9kYXRhIGZhaWxlZCwgcmV0ID0gJWRcbiIsIHJldCk7CisgICAgICAgICAg
ICBzeXNfcGFuaWMoInVucGFja19ib290ZnMgZmFpbGVkIik7CisgICAgICAgIH0KKworICAgICAg
ICBmZHJvcChmcCk7CisgICAgICAgIGNsb3NlKGZkKTsKKyAgICB9Cit9CisKK3ZvaWQgbW91bnRf
cm9vdGZzKHZvaWQpCit7CisgICAgaW50IHJldDsKKworICAgIHJldCA9IHN5c19tb3VudCgiIiwg
Ii8iLCAicmFtZnMiLCAwLCBudWxscHRyKTsKKyAgICBpZiAocmV0KQorICAgICAgICBrcHJpbnRm
KCJmYWlsZWQgdG8gbW91bnQgcm9vdGZzLCBlcnJvciA9ICVzXG4iLCBzdHJlcnJvcihyZXQpKTsK
KworICAgIGlmIChta2RpcigiL2RldiIsIDA3NTUpIDwgMCkKKyAgICAgICAga3ByaW50ZigiZmFp
bGVkIHRvIGNyZWF0ZSAvZGV2LCBlcnJvciA9ICVzXG4iLCBzdHJlcnJvcihlcnJubykpOworCisg
ICAgcmV0ID0gc3lzX21vdW50KCIiLCAiL2RldiIsICJkZXZmcyIsIDAsIG51bGxwdHIpOworICAg
IGlmIChyZXQpCisgICAgICAgIGtwcmludGYoImZhaWxlZCB0byBtb3VudCBkZXZmcywgZXJyb3Ig
PSAlc1xuIiwgc3RyZXJyb3IocmV0KSk7Cit9CisKK2V4dGVybiAiQyIKK2ludCBubW91bnQoc3Ry
dWN0IGlvdmVjICppb3YsIHVuc2lnbmVkIG5pb3YsIGludCBmbGFncykKK3sKKyAgICBzdHJ1Y3Qg
YXJncyB7CisgICAgICAgIGNoYXIqIGZzdHlwZSA9IG51bGxwdHI7CisgICAgICAgIGNoYXIqIGZz
cGF0aCA9IG51bGxwdHI7CisgICAgICAgIGNoYXIqIGZyb20gPSBudWxscHRyOworICAgIH07Cisg
ICAgc3RhdGljIHVub3JkZXJlZF9tYXA8c3RyaW5nLCBjaGFyKiBhcmdzOjoqPiBhcmdtYXAgewor
ICAgICAgICB7ICJmc3R5cGUiLCAmYXJnczo6ZnN0eXBlIH0sCisgICAgICAgIHsgImZzcGF0aCIs
ICZhcmdzOjpmc3BhdGggfSwKKyAgICAgICAgeyAiZnJvbSIsICZhcmdzOjpmcm9tIH0sCisgICAg
fTsKKyAgICBhcmdzIGE7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuaW92OyBpICs9IDIp
IHsKKyAgICAgICAgc3RkOjpzdHJpbmcgcyhzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oaW92W2ld
Lmlvdl9iYXNlKSk7CisgICAgICAgIGlmIChhcmdtYXAuY291bnQocykpIHsKKyAgICAgICAgICAg
IGEuKihhcmdtYXBbc10pID0gc3RhdGljX2Nhc3Q8Y2hhcio+KGlvdltpKzFdLmlvdl9iYXNlKTsK
KyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gc3lzX21vdW50KGEuZnJvbSwgYS5mc3BhdGgs
IGEuZnN0eXBlLCBmbGFncywgbnVsbHB0cik7Cit9CisKK3N0YXRpYyB2b2lkIGltcG9ydF9leHRy
YV96ZnNfcG9vbHModm9pZCkKK3sKKyAgICBzdHJ1Y3Qgc3RhdCBzdDsKKyAgICBpbnQgcmV0Owor
CisgICAgLy8gVGhlIGZpbGUgJy9ldGMvbW50dGFiJyBpcyBhIExpYlpGUyByZXF1aXJlbWVudCBh
bmQgd2lsbCBub3QKKyAgICAvLyBleGlzdCBkdXJpbmcgY3Bpb2QgcGhhc2UuIFRoZSBmdW5jdGlv
bmFsaXR5IHByb3ZpZGVkIGJ5IHRoaXMKKyAgICAvLyBmdW5jdGlvbiBpc24ndCBuZWVkZWQgZHVy
aW5nIHRoYXQgcGhhc2UsIHNvIGxldCdzIHNraXAgaXQuCisgICAgaWYgKHN0YXQoIi9ldGMvbW50
dGFiIiAsICZzdCkgIT0gMCkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gSW1w
b3J0IGV4dHJhIHBvb2xzIG1vdW50aW5nIGRhdGFzZXRzIHRoZXJlIGNvbnRhaW5lZC4KKyAgICAv
LyBEYXRhc2V0cyBmcm9tIG9zdiBwb29sIHdpbGwgbm90IGJlIG1vdW50ZWQgaGVyZS4KKyAgICBp
ZiAoYWNjZXNzKCJ6cG9vbC5zbyIsIFhfT0spICE9IDApIHsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICB2ZWN0b3I8c3RyaW5nPiB6cG9vbF9hcmdzID0geyJ6cG9vbCIsICJpbXBvcnQiLCAi
LWYiLCAiLWEiIH07CisgICAgYXV0byBvayA9IG9zdjo6cnVuKCJ6cG9vbC5zbyIsIHpwb29sX2Fy
Z3MsICZyZXQpOworICAgIGFzc2VydChvayk7CisKKyAgICBpZiAoIXJldCkgeworICAgICAgICBk
ZWJ1ZygiemZzOiBleHRyYSBaRlMgcG9vbChzKSBmb3VuZC5cbiIpOworICAgIH0KK30KKwordm9p
ZCBwaXZvdF9yb290ZnMoY29uc3QgY2hhciogcGF0aCkKK3sKKyAgICBpbnQgcmV0ID0gc3lzX3Bp
dm90X3Jvb3QocGF0aCwgIi8iKTsKKyAgICBpZiAocmV0KQorICAgICAgICBrcHJpbnRmKCJmYWls
ZWQgdG8gcGl2b3Qgcm9vdCwgZXJyb3IgPSAlc1xuIiwgc3RyZXJyb3IocmV0KSk7CisKKyAgICBh
dXRvIGVudCA9IHNldG1udGVudCgiL2V0Yy9mc3RhYiIsICJyIik7CisgICAgaWYgKCFlbnQpIHsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN0cnVjdCBtbnRlbnQgKm0gPSBudWxscHRy
OworICAgIHdoaWxlICgobSA9IGdldG1udGVudChlbnQpKSAhPSBudWxscHRyKSB7CisgICAgICAg
IGlmICghc3RyY21wKG0tPm1udF9kaXIsICIvIikpIHsKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKChtLT5tbnRfb3B0cyAhPSBudWxscHRyKSAmJiBzdHJj
bXAobS0+bW50X29wdHMsIE1OVE9QVF9ERUZBVUxUUykpIHsKKyAgICAgICAgICAgIHByaW50Zigi
V2FybmluZzogb3B0cyAlcywgaWdub3JlZCBmb3IgZnMgJXNcbiIsIG0tPm1udF9vcHRzLCBtLT5t
bnRfdHlwZSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBGSVhNRTogUmlnaHQgbm93LCBpZ25v
cmluZyBtbnRvcHMuIEluIHRoZSBmdXR1cmUgd2UgbWF5IGhhdmUgYW4gb3B0aW9uIHBhcnNlcgor
ICAgICAgICByZXQgPSBzeXNfbW91bnQobS0+bW50X2ZzbmFtZSwgbS0+bW50X2RpciwgbS0+bW50
X3R5cGUsIDAsIG51bGxwdHIpOworICAgICAgICBpZiAocmV0KSB7CisgICAgICAgICAgICBwcmlu
dGYoImZhaWxlZCB0byBtb3VudCAlcywgZXJyb3IgPSAlc1xuIiwgbS0+bW50X3R5cGUsIHN0cmVy
cm9yKHJldCkpOworICAgICAgICB9CisgICAgfQorICAgIGVuZG1udGVudChlbnQpOworfQorCitl
eHRlcm4gIkMiIHZvaWQgdW5tb3VudF9kZXZmcygpCit7CisgICAgaW50IHJldCA9IHN5c191bW91
bnQoIi9kZXYiKTsKKyAgICBpZiAocmV0KQorICAgICAgICBrcHJpbnRmKCJmYWlsZWQgdG8gdW5t
b3VudCAvZGV2LCBlcnJvciA9ICVzXG4iLCBzdHJlcnJvcihyZXQpKTsKK30KKworZXh0ZXJuICJD
IiBpbnQgbW91bnRfcm9mc19yb290ZnMoYm9vbCBwaXZvdF9yb290KQoreworICAgIGludCByZXQ7
CisKKyAgICBpZiAobWtkaXIoIi9yb2ZzIiwgMDc1NSkgPCAwKQorICAgICAgICBrcHJpbnRmKCJm
YWlsZWQgdG8gY3JlYXRlIC9yb2ZzLCBlcnJvciA9ICVzXG4iLCBzdHJlcnJvcihlcnJubykpOwor
CisgICAgcmV0ID0gc3lzX21vdW50KCIvZGV2L3ZibGswLjEiLCAiL3JvZnMiLCAicm9mcyIsIE1O
VF9SRE9OTFksIDApOworCisgICAgaWYgKHJldCkgeworICAgICAgICBrcHJpbnRmKCJmYWlsZWQg
dG8gbW91bnQgL3JvZnMsIGVycm9yID0gJXNcbiIsIHN0cmVycm9yKHJldCkpOworICAgICAgICBy
bWRpcigiL3JvZnMiKTsKKyAgICAgICAgcmV0dXJuIHJldDsKKyAgICB9CisKKyAgICBpZiAocGl2
b3Rfcm9vdCkgeworICAgICAgICBwaXZvdF9yb290ZnMoIi9yb2ZzIik7CisgICAgfQorCisgICAg
cmV0dXJuIDA7Cit9CisKK2V4dGVybiAiQyIgdm9pZCBtb3VudF96ZnNfcm9vdGZzKGJvb2wgcGl2
b3Rfcm9vdCkKK3sKKyAgICBpZiAobWtkaXIoIi96ZnMiLCAwNzU1KSA8IDApCisgICAgICAgIGtw
cmludGYoImZhaWxlZCB0byBjcmVhdGUgL3pmcywgZXJyb3IgPSAlc1xuIiwgc3RyZXJyb3IoZXJy
bm8pKTsKKworICAgIGludCByZXQgPSBzeXNfbW91bnQoIi9kZXYvdmJsazAuMSIsICIvemZzIiwg
InpmcyIsIDAsICh2b2lkICopIm9zdi96ZnMiKTsKKworICAgIGlmIChyZXQpCisgICAgICAgIGtw
cmludGYoImZhaWxlZCB0byBtb3VudCAvemZzLCBlcnJvciA9ICVzXG4iLCBzdHJlcnJvcihyZXQp
KTsKKworICAgIGlmICghcGl2b3Rfcm9vdCkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgcGl2b3Rfcm9vdGZzKCIvemZzIik7CisKKyAgICBpbXBvcnRfZXh0cmFfemZzX3Bvb2xzKCk7
Cit9CisKK2V4dGVybiAiQyIgdm9pZCB1bm1vdW50X3Jvb3Rmcyh2b2lkKQoreworICAgIGludCBy
ZXQ7CisKKyAgICBzeXNfdW1vdW50KCIvZGV2Iik7CisKKyAgICByZXQgPSBzeXNfdW1vdW50KCIv
cHJvYyIpOworICAgIGlmIChyZXQpIHsKKyAgICAgICAga3ByaW50ZigiV2FybmluZzogdW5tb3Vu
dF9yb290ZnM6IGZhaWxlZCB0byB1bm1vdW50IC9wcm9jLCAiCisgICAgICAgICAgICAiZXJyb3Ig
PSAlc1xuIiwgc3RyZXJyb3IocmV0KSk7CisgICAgfQorCisgICAgcmV0ID0gc3lzX3Vtb3VudDIo
Ii8iLCBNTlRfRk9SQ0UpOworICAgIGlmIChyZXQpIHsKKyAgICAgICAga3ByaW50ZigiV2Fybmlu
ZzogdW5tb3VudF9yb290ZnM6IGZhaWxlZCB0byB1bm1vdW50IC8sICIKKyAgICAgICAgICAgICJl
cnJvciA9ICVzXG4iLCBzdHJlcnJvcihyZXQpKTsKKyAgICB9Cit9CisKK2V4dGVybiAiQyIgdm9p
ZCBiaW9faW5pdCh2b2lkKTsKK2V4dGVybiAiQyIgdm9pZCBiaW9fc3luYyh2b2lkKTsKKworaW50
IHZmc19pbml0aWFsaXplZDsKKworZXh0ZXJuICJDIgordm9pZAordmZzX2luaXQodm9pZCkKK3sK
KyAgICBjb25zdCBzdHJ1Y3QgdmZzc3cgKmZzOworCisgICAgYmlvX2luaXQoKTsKKyAgICBsb29r
dXBfaW5pdCgpOworICAgIHZub2RlX2luaXQoKTsKKyAgICB0YXNrX2FsbG9jKCZtYWluX3Rhc2sp
OworCisgICAgLyoKKyAgICAgKiBJbml0aWFsaXplIGVhY2ggZmlsZSBzeXN0ZW0uCisgICAgICov
CisgICAgZm9yIChmcyA9IHZmc3N3OyBmcy0+dnNfbmFtZTsgZnMrKykgeworICAgICAgICBpZiAo
ZnMtPnZzX2luaXQpIHsKKyAgICAgICAgICAgIERQUklOVEYoVkZTREJfQ09SRSwgKCJWRlM6IGlu
aXRpYWxpemluZyAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgZnMtPnZzX25hbWUpKTsKKyAg
ICAgICAgICAgIGZzLT52c19pbml0KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtb3VudF9y
b290ZnMoKTsKKyAgICB1bnBhY2tfYm9vdGZzKCk7CisKKyAgICAvLwlpZiAob3BlbigiL2Rldi9j
b25zb2xlIiwgT19SRFdSLCAwKSAhPSAwKQorICAgIGlmIChjb25zb2xlOjpvcGVuKCkgIT0gMCkK
KyAgICAgICAga3ByaW50ZigiZmFpbGVkIHRvIG9wZW4gY29uc29sZSwgZXJyb3IgPSAlZFxuIiwg
ZXJybm8pOworICAgIGlmIChkdXAoMCkgIT0gMSkKKyAgICAgICAga3ByaW50ZigiZmFpbGVkIHRv
IGR1cCBjb25zb2xlICgxKVxuIik7CisgICAgaWYgKGR1cCgwKSAhPSAyKQorICAgICAgICBrcHJp
bnRmKCJmYWlsZWQgdG8gZHVwIGNvbnNvbGUgKDIpXG4iKTsKKyAgICB2ZnNfaW5pdGlhbGl6ZWQg
PSAxOworfQorCit2b2lkIHZmc19leGl0KHZvaWQpCit7CisgICAgLyogRnJlZSB1cCBtYWluX3Rh
c2sgKHN0b3JlcyBjd2QgZGF0YSkgcmVzb3VyY2VzICovCisgICAgcmVwbGFjZV9jd2QobWFpbl90
YXNrLCBudWxscHRyLCBbXSgpIHsgcmV0dXJuIDA7IH0pOworICAgIC8qIFVubW91bnQgYWxsIGZp
bGUgc3lzdGVtcyAqLworICAgIHVubW91bnRfcm9vdGZzKCk7CisgICAgLyogRmluaXNoIHdpdGgg
dGhlIGJpbyBsYXllciAqLworICAgIGJpb19zeW5jKCk7Cit9CisKK3ZvaWQgc3lzX3BhbmljKGNv
bnN0IGNoYXIgKnN0cikKK3sKKyAgICBhYm9ydCgicGFuaWM6ICVzIiwgc3RyKTsKK30KKwpkaWZm
IC0tZ2l0IGEvbGliL3Zmc2NvcmUvbW91bnQuYyBiL2xpYi92ZnNjb3JlL21vdW50LmMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLmRhYzRkMDljCi0tLSAvZGV2L251bGwKKysr
IGIvbGliL3Zmc2NvcmUvbW91bnQuYwpAQCAtMCwwICsxLDQ5MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoYykgMjAwNS0yMDA3LCBLb2hzdWtlIE9odGFuaQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGF1dGhvciBub3IgdGhlIG5h
bWVzIG9mIGFueSBjby1jb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQorICogICAgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworLyoKKyAqIHZmc19tb3VudC5jIC0g
bW91bnQgb3BlcmF0aW9ucworICovCisKKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUg
PHN5cy9wYXJhbS5oPgorI2luY2x1ZGUgPGRpcmVudC5oPgorCisjaW5jbHVkZSA8bGltaXRzLmg+
CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3Ry
aW5nLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUg
PGZjbnRsLmg+CisKKyNpbmNsdWRlIDxvc3YvcHJleC5oPgorI2luY2x1ZGUgPG9zdi92bm9kZS5o
PgorI2luY2x1ZGUgPG9zdi9kZXZpY2UuaD4KKyNpbmNsdWRlIDxvc3YvZGVidWcuaD4KKyNpbmNs
dWRlIDxvc3YvbXV0ZXguaD4KKyNpbmNsdWRlICJ2ZnMuaCIKKworI2luY2x1ZGUgPG1lbW9yeT4K
KyNpbmNsdWRlIDxsaXN0PgorCisvKgorICogTGlzdCBmb3IgVkZTIG1vdW50IHBvaW50cy4KKyAq
Lworc3RhdGljIHN0ZDo6bGlzdDxtb3VudCo+IG1vdW50X2xpc3Q7CisKKy8qCisgKiBHbG9iYWwg
bG9jayB0byBhY2Nlc3MgbW91bnQgcG9pbnQuCisgKi8KK3N0YXRpYyBtdXRleCBtb3VudF9sb2Nr
OworCisvKgorICogTG9va3VwIGZpbGUgc3lzdGVtLgorICovCitzdGF0aWMgY29uc3Qgc3RydWN0
IHZmc3N3ICoKK2ZzX2dldGZzKGNvbnN0IGNoYXIgKm5hbWUpCit7CisgICAgY29uc3Qgc3RydWN0
IHZmc3N3ICpmczsKKworICAgIGZvciAoZnMgPSB2ZnNzdzsgZnMtPnZzX25hbWU7IGZzKyspIHsK
KyAgICAgICAgaWYgKCFzdHJuY21wKG5hbWUsIGZzLT52c19uYW1lLCBGU01BWE5BTUVTKSkKKyAg
ICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBpZiAoIWZzLT52c19uYW1lKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gZnM7Cit9CisKK2NvbnN0IGNoYXIqCitmc19nZXRm
c25hbWUodmZzb3BzKiBvcHMpCit7CisgICAgZm9yIChhdXRvIGZzID0gdmZzc3c7IGZzLT52c19u
YW1lOyBmcysrKSB7CisgICAgICAgIGlmIChmcy0+dnNfb3AgPT0gb3BzKSB7CisgICAgICAgICAg
ICByZXR1cm4gZnMtPnZzX25hbWU7CisgICAgICAgIH0KKyAgICB9CisgICAgYWJvcnQoKTsKK30K
KworaW50CitzeXNfbW91bnQoY29uc3QgY2hhciAqZGV2LCBjb25zdCBjaGFyICpkaXIsIGNvbnN0
IGNoYXIgKmZzbmFtZSwgaW50IGZsYWdzLCBjb25zdCB2b2lkICpkYXRhKQoreworICAgIGNvbnN0
IHN0cnVjdCB2ZnNzdyAqZnM7CisgICAgc3RydWN0IG1vdW50ICptcDsKKyAgICBzdHJ1Y3QgZGV2
aWNlICpkZXZpY2U7CisgICAgc3RydWN0IGRlbnRyeSAqZHBfY292ZXJlZDsKKyAgICBzdHJ1Y3Qg
dm5vZGUgKnZwOworICAgIGludCBlcnJvcjsKKworICAgIGtwcmludGYoIlZGUzogbW91bnRpbmcg
JXMgYXQgJXNcbiIsIGZzbmFtZSwgZGlyKTsKKworICAgIGlmICghZGlyIHx8ICpkaXIgPT0gJ1ww
JykKKyAgICAgICAgcmV0dXJuIEVOT0VOVDsKKworICAgIC8qIEZpbmQgYSBmaWxlIHN5c3RlbS4g
Ki8KKyAgICBpZiAoIShmcyA9IGZzX2dldGZzKGZzbmFtZSkpKQorICAgICAgICByZXR1cm4gRU5P
REVWOyAgLyogTm8gc3VjaCBmaWxlIHN5c3RlbSAqLworCisgICAgLyogT3BlbiBkZXZpY2UuIG51
bGxwdHIgY2FuIGJlIHNwZWNpZmllZCBhcyBhIGRldmljZS4gKi8KKyAgICAvLyBBbGxvdyBkZXZp
Y2Vfb3BlbigpIHRvIGZhaWwsIGluIHdoaWNoIGNhc2UgZGV2IGlzIGludGVycHJldGVkCisgICAg
Ly8gYnkgdGhlIGZpbGUgc3lzdGVtIG1vdW50IHJvdXRpbmUgKGUuZyB6ZnMgcG9vbHMpCisgICAg
ZGV2aWNlID0gMDsKKyAgICBpZiAoZGV2ICYmIHN0cm5jbXAoZGV2LCAiL2Rldi8iLCA1KSA9PSAw
KQorICAgICAgICBkZXZpY2Vfb3BlbihkZXYgKyA1LCBET19SRFdSLCAmZGV2aWNlKTsKKworICAg
IC8qIENoZWNrIGlmIGRldmljZSBvciBkaXJlY3RvcnkgaGFzIGFscmVhZHkgYmVlbiBtb3VudGVk
LiAqLworICAgIC8vIFdlIG5lZWQgdG8gYXZvaWQgdGhlIHNpdHVhdGlvbiB3aGVyZSBhZnRlciB3
ZSBhbHJlYWR5IHZlcmlmaWVkIHRoYXQKKyAgICAvLyB0aGUgbW91bnQgcG9pbnQgaXMgZnJlZSwg
YnV0IGJlZm9yZSB3ZSBhY3R1YWxseSBhZGQgaXQgdG8gbW91bnRfbGlzdCwKKyAgICAvLyBhbm90
aGVyIGNvbmN1cnJlbnQgbW91bnQgYWRkcyBpdC4gU28gd2UgdXNlIGEgbmV3IG11dGV4IHRvIGVu
c3VyZQorICAgIC8vIHRoYXQgb25seSBvbmUgc3lzX21vdW50KCkgcnVucyBhdCBhIHRpbWUuIFdl
IGNhbm5vdCByZXVzZSB0aGUgZXhpc3RpbmcKKyAgICAvLyBtb3VudF9sb2NrIGZvciB0aGlzIHB1
cnBvc2U6IElmIHdlIHRha2UgbW91bnRfbG9jayBhbmQgdGhlbiBkbworICAgIC8vIGxvb2t1cHMs
IHRoaXMgaXMgbG9jayBvcmRlciBpbnZlcnNpb24gYW5kIGNhbiByZXN1bHQgaW4gZGVhZGxvY2su
CisgICAgc3RhdGljIG11dGV4IHN5c19tb3VudF9sb2NrOworICAgIFNDT1BFX0xPQ0soc3lzX21v
dW50X2xvY2spOworICAgIFdJVEhfTE9DSyhtb3VudF9sb2NrKSB7CisgICAgICAgIGZvciAoYXV0
byYmIG1wIDogbW91bnRfbGlzdCkgeworICAgICAgICAgICAgaWYgKCFzdHJjbXAobXAtPm1fcGF0
aCwgZGlyKSB8fAorICAgICAgICAgICAgICAgIChkZXZpY2UgJiYgbXAtPm1fZGV2ID09IGRldmlj
ZSkpIHsKKyAgICAgICAgICAgICAgICBlcnJvciA9IEVCVVNZOyAgLyogQWxyZWFkeSBtb3VudGVk
ICovCisgICAgICAgICAgICAgICAgZ290byBlcnIxOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorICAgIC8qCisgICAgICogQ3JlYXRlIFZGUyBtb3VudCBlbnRyeS4KKyAgICAgKi8K
KyAgICBpZiAoIShtcCA9IG5ldyBtb3VudCkpIHsKKyAgICAgICAgZXJyb3IgPSBFTk9NRU07Cisg
ICAgICAgIGdvdG8gZXJyMTsKKyAgICB9CisgICAgbXAtPm1fY291bnQgPSAwOworICAgIG1wLT5t
X29wID0gZnMtPnZzX29wOworICAgIG1wLT5tX2ZsYWdzID0gZmxhZ3M7CisgICAgbXAtPm1fZGV2
ID0gZGV2aWNlOworICAgIG1wLT5tX2RhdGEgPSBudWxscHRyOworICAgIHN0cmxjcHkobXAtPm1f
cGF0aCwgZGlyLCBzaXplb2YobXAtPm1fcGF0aCkpOworICAgIHN0cmxjcHkobXAtPm1fc3BlY2lh
bCwgZGV2LCBzaXplb2YobXAtPm1fc3BlY2lhbCkpOworCisgICAgLyoKKyAgICAgKiBHZXQgdm5v
ZGUgdG8gYmUgY292ZXJlZCBpbiB0aGUgdXBwZXIgZmlsZSBzeXN0ZW0uCisgICAgICovCisgICAg
aWYgKCpkaXIgPT0gJy8nICYmICooZGlyICsgMSkgPT0gJ1wwJykgeworICAgICAgICAvKiBJZ25v
cmUgaWYgaXQgbW91bnRzIHRvIGdsb2JhbCByb290IGRpcmVjdG9yeS4gKi8KKyAgICAgICAgZHBf
Y292ZXJlZCA9IG51bGxwdHI7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKChlcnJvciA9IG5h
bWVpKGRpciwgJmRwX2NvdmVyZWQpKSAhPSAwKSB7CisKKyAgICAgICAgICAgIGVycm9yID0gRU5P
RU5UOworICAgICAgICAgICAgZ290byBlcnIyOworICAgICAgICB9CisgICAgICAgIGlmIChkcF9j
b3ZlcmVkLT5kX3Zub2RlLT52X3R5cGUgIT0gVkRJUikgeworICAgICAgICAgICAgZXJyb3IgPSBF
Tk9URElSOworICAgICAgICAgICAgZ290byBlcnIzOworICAgICAgICB9CisgICAgfQorICAgIG1w
LT5tX2NvdmVyZWQgPSBkcF9jb3ZlcmVkOworCisgICAgLyoKKyAgICAgKiBDcmVhdGUgYSByb290
IHZub2RlIGZvciB0aGlzIGZpbGUgc3lzdGVtLgorICAgICAqLworICAgIHZnZXQobXAsIDAsICZ2
cCk7CisgICAgaWYgKHZwID09IG51bGxwdHIpIHsKKyAgICAgICAgZXJyb3IgPSBFTk9NRU07Cisg
ICAgICAgIGdvdG8gZXJyMzsKKyAgICB9CisgICAgdnAtPnZfdHlwZSA9IFZESVI7CisgICAgdnAt
PnZfZmxhZ3MgPSBWUk9PVDsKKyAgICB2cC0+dl9tb2RlID0gU19JRkRJUiB8IFNfSVJVU1IgfCBT
X0lXVVNSIHwgU19JWFVTUjsKKworICAgIG1wLT5tX3Jvb3QgPSBkZW50cnlfYWxsb2MobnVsbHB0
ciwgdnAsICIvIik7CisgICAgaWYgKCFtcC0+bV9yb290KSB7CisgICAgICAgIHZwdXQodnApOwor
ICAgICAgICBnb3RvIGVycjM7CisgICAgfQorICAgIHZwdXQodnApOworCisgICAgLyoKKyAgICAg
KiBDYWxsIGEgZmlsZSBzeXN0ZW0gc3BlY2lmaWMgcm91dGluZS4KKyAgICAgKi8KKyAgICBpZiAo
KGVycm9yID0gVkZTX01PVU5UKG1wLCBkZXYsIGZsYWdzLCBkYXRhKSkgIT0gMCkKKyAgICAgICAg
Z290byBlcnI0OworCisgICAgaWYgKG1wLT5tX2ZsYWdzICYgTU5UX1JET05MWSkKKyAgICAgICAg
dnAtPnZfbW9kZSAmPX5TX0lXVVNSOworCisgICAgLyoKKyAgICAgKiBJbnNlcnQgdG8gbW91bnQg
bGlzdAorICAgICAqLworICAgIFdJVEhfTE9DSyhtb3VudF9sb2NrKSB7CisgICAgICAgIG1vdW50
X2xpc3QucHVzaF9iYWNrKG1wKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsgICAvKiBzdWNjZXNz
ICovCisgZXJyNDoKKyAgICBkcmVsZShtcC0+bV9yb290KTsKKyBlcnIzOgorICAgIGlmIChkcF9j
b3ZlcmVkKQorICAgICAgICBkcmVsZShkcF9jb3ZlcmVkKTsKKyBlcnIyOgorICAgIGRlbGV0ZSBt
cDsKKyBlcnIxOgorICAgIGlmIChkZXZpY2UpCisgICAgICAgIGRldmljZV9jbG9zZShkZXZpY2Up
OworCisgICAgcmV0dXJuIGVycm9yOworfQorCit2b2lkCityZWxlYXNlX21wX2RlbnRyaWVzKHN0
cnVjdCBtb3VudCAqbXApCit7CisgICAgLyogRGVjcmVtZW50IHJlZmVyZWNlIGNvdW50IG9mIHJv
b3Qgdm5vZGUgKi8KKyAgICBpZiAobXAtPm1fY292ZXJlZCkgeworICAgICAgICBkcmVsZShtcC0+
bV9jb3ZlcmVkKTsKKyAgICB9CisKKyAgICAvKiBSZWxlYXNlIHJvb3QgZGVudHJ5ICovCisgICAg
ZHJlbGUobXAtPm1fcm9vdCk7Cit9CisKK2ludAorc3lzX3Vtb3VudDIoY29uc3QgY2hhciAqcGF0
aCwgaW50IGZsYWdzKQoreworICAgIHN0cnVjdCBtb3VudCAqbXA7CisgICAgaW50IGVycm9yLCBw
YXRobGVuOworCisgICAga3ByaW50ZigiVkZTOiB1bm1vdW50aW5nICVzXG4iLCBwYXRoKTsKKwor
ICAgIFNDT1BFX0xPQ0sobW91bnRfbG9jayk7CisKKyAgICBwYXRobGVuID0gc3RybGVuKHBhdGgp
OworICAgIGlmIChwYXRobGVuID49IE1BWFBBVEhMRU4pIHsKKyAgICAgICAgZXJyb3IgPSBFTkFN
RVRPT0xPTkc7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIC8qIEdldCBtb3VudCBl
bnRyeSAqLworICAgIGZvciAoYXV0byYmIHRtcCA6IG1vdW50X2xpc3QpIHsKKyAgICAgICAgaWYg
KCFzdHJjbXAocGF0aCwgdG1wLT5tX3BhdGgpKSB7CisgICAgICAgICAgICBtcCA9IHRtcDsKKyAg
ICAgICAgICAgIGdvdG8gZm91bmQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBlcnJvciA9IEVJ
TlZBTDsKKyAgICBnb3RvIG91dDsKKworZm91bmQ6CisgICAgLyoKKyAgICAgKiBSb290IGZzIGNh
biBub3QgYmUgdW5tb3VudGVkLgorICAgICAqLworICAgIGlmIChtcC0+bV9jb3ZlcmVkID09IG51
bGxwdHIgJiYgIShmbGFncyAmIE1OVF9GT1JDRSkpIHsKKyAgICAgICAgZXJyb3IgPSBFSU5WQUw7
CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIGlmICgoZXJyb3IgPSBWRlNfVU5NT1VO
VChtcCwgZmxhZ3MpKSAhPSAwKQorICAgICAgICBnb3RvIG91dDsKKyAgICBtb3VudF9saXN0LnJl
bW92ZShtcCk7CisKKyNpZmRlZiBIQVZFX0JVRkZFUlMKKyAgICAvKiBGbHVzaCBhbGwgYnVmZmVy
cyAqLworICAgIGJpbnZhbChtcC0+bV9kZXYpOworI2VuZGlmCisKKyAgICBpZiAobXAtPm1fZGV2
KQorICAgICAgICBkZXZpY2VfY2xvc2UobXAtPm1fZGV2KTsKKyAgICBkZWxldGUgbXA7Cisgb3V0
OgorICAgIHJldHVybiBlcnJvcjsKK30KKworaW50CitzeXNfdW1vdW50KGNvbnN0IGNoYXIgKnBh
dGgpCit7CisgICAgcmV0dXJuIHN5c191bW91bnQyKHBhdGgsIDApOworfQorCitpbnQKK3N5c19w
aXZvdF9yb290KGNvbnN0IGNoYXIgKm5ld19yb290LCBjb25zdCBjaGFyICpwdXRfb2xkKQorewor
ICAgIHN0cnVjdCBtb3VudCAqbmV3bXAgPSBudWxscHRyLCAqb2xkbXAgPSBudWxscHRyOworICAg
IGludCBlcnJvcjsKKworICAgIFdJVEhfTE9DSyhtb3VudF9sb2NrKSB7CisgICAgICAgIGZvciAo
YXV0byYmIG1wIDogbW91bnRfbGlzdCkgeworICAgICAgICAgICAgaWYgKCFzdHJjbXAobXAtPm1f
cGF0aCwgbmV3X3Jvb3QpKSB7CisgICAgICAgICAgICAgICAgbmV3bXAgPSBtcDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGlmICghc3RyY21wKG1wLT5tX3BhdGgsIHB1dF9vbGQpKSB7Cisg
ICAgICAgICAgICAgICAgb2xkbXAgPSBtcDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICBpZiAoIW5ld21wIHx8ICFvbGRtcCB8fCBuZXdtcCA9PSBvbGRtcCkgeworICAgICAgICAg
ICAgcmV0dXJuIEVJTlZBTDsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGF1dG8mJiBtcCA6IG1v
dW50X2xpc3QpIHsKKyAgICAgICAgICAgIGlmIChtcCA9PSBuZXdtcCB8fCBtcCA9PSBvbGRtcCkg
eworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
aWYgKCFzdHJuY21wKG1wLT5tX3BhdGgsIHB1dF9vbGQsIHN0cmxlbihwdXRfb2xkKSkpIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gRUJVU1k7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKChlcnJvciA9IFZGU19VTk1PVU5UKG9sZG1wLCAwKSkgIT0gMCkgeworICAgICAg
ICAgICAgcmV0dXJuIGVycm9yOworICAgICAgICB9CisgICAgICAgIG1vdW50X2xpc3QucmVtb3Zl
KG9sZG1wKTsKKworICAgICAgICBuZXdtcC0+bV9yb290LT5kX3Zub2RlLT52X21vdW50ID0gbmV3
bXA7CisKKyAgICAgICAgaWYgKG5ld21wLT5tX2NvdmVyZWQpIHsKKyAgICAgICAgICAgIGRyZWxl
KG5ld21wLT5tX2NvdmVyZWQpOworICAgICAgICB9CisgICAgICAgIG5ld21wLT5tX2NvdmVyZWQg
PSBudWxscHRyOworCisgICAgICAgIGlmIChuZXdtcC0+bV9yb290LT5kX3BhcmVudCkgeworICAg
ICAgICAgICAgZHJlbGUobmV3bXAtPm1fcm9vdC0+ZF9wYXJlbnQpOworICAgICAgICB9CisgICAg
ICAgIG5ld21wLT5tX3Jvb3QtPmRfcGFyZW50ID0gbnVsbHB0cjsKKworICAgICAgICBzdHJsY3B5
KG5ld21wLT5tX3BhdGgsICIvIiwgc2l6ZW9mKG5ld21wLT5tX3BhdGgpKTsKKyAgICB9CisgICAg
cmV0dXJuIDA7Cit9CisKK2ludAorc3lzX3N5bmModm9pZCkKK3sKKyAgICAvKiBDYWxsIGVhY2gg
bW91bnRlZCBmaWxlIHN5c3RlbS4gKi8KKyAgICBXSVRIX0xPQ0sobW91bnRfbG9jaykgeworICAg
ICAgICBmb3IgKGF1dG8mJiBtcCA6IG1vdW50X2xpc3QpIHsKKyAgICAgICAgICAgIFZGU19TWU5D
KG1wKTsKKyAgICAgICAgfQorICAgIH0KKyNpZmRlZiBIQVZFX0JVRkZFUlMKKyAgICBiaW9fc3lu
YygpOworI2VuZGlmCisgICAgcmV0dXJuIDA7Cit9CisKKy8qCisgKiBDb21wYXJlIHR3byBwYXRo
IHN0cmluZ3MuIFJldHVybiBtYXRjaGVkIGxlbmd0aC4KKyAqIEBwYXRoOiB0YXJnZXQgcGF0aC4K
KyAqIEByb290OiB2ZnMgcm9vdCBwYXRoIGFzIG1vdW50IHBvaW50LgorICovCitzdGF0aWMgc2l6
ZV90Citjb3VudF9tYXRjaChjb25zdCBjaGFyICpwYXRoLCBjaGFyICptb3VudF9yb290KQorewor
ICAgIHNpemVfdCBsZW4gPSAwOworCisgICAgd2hpbGUgKCpwYXRoICYmICptb3VudF9yb290KSB7
CisgICAgICAgIGlmICgqcGF0aCAhPSAqbW91bnRfcm9vdCkKKyAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgIHBhdGgrKzsKKyAgICAgICAgbW91bnRfcm9vdCsrOworICAgICAgICBsZW4rKzsK
KyAgICB9CisgICAgaWYgKCptb3VudF9yb290ICE9ICdcMCcpCisgICAgICAgIHJldHVybiAwOwor
CisgICAgaWYgKGxlbiA9PSAxICYmICoocGF0aCAtIDEpID09ICcvJykKKyAgICAgICAgcmV0dXJu
IDE7CisKKyAgICBpZiAoKnBhdGggPT0gJ1wwJyB8fCAqcGF0aCA9PSAnLycpCisgICAgICAgIHJl
dHVybiBsZW47CisgICAgcmV0dXJuIDA7Cit9CisKKy8qCisgKiBHZXQgdGhlIHJvb3QgZGlyZWN0
b3J5IGFuZCBtb3VudCBwb2ludCBmb3Igc3BlY2lmaWVkIHBhdGguCisgKiBAcGF0aDogZnVsbCBw
YXRoLgorICogQG1wOiBtb3VudCBwb2ludCB0byByZXR1cm4uCisgKiBAcm9vdDogcG9pbnRlciB0
byByb290IGRpcmVjdG9yeSBpbiBwYXRoLgorICovCitpbnQKK3Zmc19maW5kcm9vdChjb25zdCBj
aGFyICpwYXRoLCBzdHJ1Y3QgbW91bnQgKiptcCwgY2hhciAqKnJvb3QpCit7CisgICAgc3RydWN0
IG1vdW50ICptID0gbnVsbHB0cjsKKyAgICBzaXplX3QgbGVuLCBtYXhfbGVuID0gMDsKKworICAg
IGlmICghcGF0aCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgLyogRmluZCBtb3VudCBwb2lu
dCBmcm9tIG5lYXJlc3QgcGF0aCAqLworICAgIFNDT1BFX0xPQ0sobW91bnRfbG9jayk7CisgICAg
Zm9yIChhdXRvJiYgdG1wIDogbW91bnRfbGlzdCkgeworICAgICAgICBsZW4gPSBjb3VudF9tYXRj
aChwYXRoLCB0bXAtPm1fcGF0aCk7CisgICAgICAgIGlmIChsZW4gPiBtYXhfbGVuKSB7CisgICAg
ICAgICAgICBtYXhfbGVuID0gbGVuOworICAgICAgICAgICAgbSA9IHRtcDsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBpZiAobSA9PSBudWxscHRyKQorICAgICAgICByZXR1cm4gLTE7CisgICAgKnJv
b3QgPSAoY2hhciAqKShwYXRoICsgbWF4X2xlbik7CisgICAgaWYgKCoqcm9vdCA9PSAnLycpCisg
ICAgICAgICgqcm9vdCkrKzsKKyAgICAqbXAgPSBtOworICAgIHJldHVybiAwOworfQorCisvKgor
ICogTWFyayBhIG1vdW50IHBvaW50IGFzIGJ1c3kuCisgKi8KK3ZvaWQKK3Zmc19idXN5KHN0cnVj
dCBtb3VudCAqbXApCit7CisgICAgU0NPUEVfTE9DSyhtb3VudF9sb2NrKTsKKyAgICBtcC0+bV9j
b3VudCsrOworfQorCisKKy8qCisgKiBNYXJrIGEgbW91bnQgcG9pbnQgYXMgYnVzeS4KKyAqLwor
dm9pZAordmZzX3VuYnVzeShzdHJ1Y3QgbW91bnQgKm1wKQoreworICAgIFNDT1BFX0xPQ0sobW91
bnRfbG9jayk7CisgICAgbXAtPm1fY291bnQtLTsKK30KKworaW50Cit2ZnNfbnVsbG9wKHZvaWQp
Cit7CisgICAgcmV0dXJuIDA7Cit9CisKK2ludAordmZzX2VpbnZhbCh2b2lkKQoreworICAgIHJl
dHVybiBFSU5WQUw7Cit9CisKK25hbWVzcGFjZSBvc3YgeworCittb3VudF9kZXNjIHRvX21vdW50
X2Rlc2MobW91bnQqIG0pCit7CisgICAgbW91bnRfZGVzYyByZXQ7CisgICAgcmV0LnNwZWNpYWwg
PSBtLT5tX3NwZWNpYWw7CisgICAgcmV0LnBhdGggPSBtLT5tX3BhdGg7CisgICAgcmV0LnR5cGUg
PSBmc19nZXRmc25hbWUobS0+bV9vcCk7CisgICAgLy8gRklYTUU6IHJlY29yZCBvcHRpb25zCisg
ICAgcmV0Lm9wdGlvbnMgPSAiIjsKKyAgICByZXR1cm4gcmV0OworfQorCitzdGQ6OnZlY3Rvcjxt
b3VudF9kZXNjPgorY3VycmVudF9tb3VudHMoKQoreworICAgIFdJVEhfTE9DSyhtb3VudF9sb2Nr
KSB7CisgICAgICAgIHN0ZDo6dmVjdG9yPG1vdW50X2Rlc2M+IHJldDsKKyAgICAgICAgZm9yIChh
dXRvJiYgbXAgOiBtb3VudF9saXN0KSB7CisgICAgICAgICAgICByZXQucHVzaF9iYWNrKHRvX21v
dW50X2Rlc2MobXApKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmV0OworICAgIH0KK30K
KworfQorCisjaWZkZWYgREVCVUdfVkZTCit2b2lkCittb3VudF9kdW1wKHZvaWQpCit7CisgICAg
U0NPUEVfTE9DSyhtb3VudF9sb2NrKTsKKworICAgIGtwcmludGYoIm1vdW50X2R1bXBcbiIpOwor
ICAgIGtwcmludGYoImRldiAgICAgIGNvdW50IHJvb3RcbiIpOworICAgIGtwcmludGYoIi0tLS0t
LS0tIC0tLS0tIC0tLS0tLS0tXG4iKTsKKworICAgIGZvciAoYXV0byYmIG1wIDogbW91bnRfbGlz
dCkgeworICAgICAgICBrcHJpbnRmKCIlOHggJTVkICVzXG4iLCBtcC0+bV9kZXYsIG1wLT5tX2Nv
dW50LCBtcC0+bV9wYXRoKTsKKyAgICB9Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL2xpYi92ZnNj
b3JlL3N1YnJfdWlvLmMgYi9saWIvdmZzY29yZS9zdWJyX3Vpby5jCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwLi5iZjEzOGI4ZQotLS0gL2Rldi9udWxsCisrKyBiL2xpYi92ZnNj
b3JlL3N1YnJfdWlvLmMKQEAgLTAsMCArMSw3MyBAQAorLyotCisgKiBDb3B5cmlnaHQgKGMpIDE5
ODIsIDE5ODYsIDE5OTEsIDE5OTMKKyAqCVRoZSBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9m
IENhbGlmb3JuaWEuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogKGMpIFVOSVggU3lzdGVtIExh
Ym9yYXRvcmllcywgSW5jLgorICogQWxsIG9yIHNvbWUgcG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFy
ZSBkZXJpdmVkIGZyb20gbWF0ZXJpYWwgbGljZW5zZWQKKyAqIHRvIHRoZSBVbml2ZXJzaXR5IG9m
IENhbGlmb3JuaWEgYnkgQW1lcmljYW4gVGVsZXBob25lIGFuZCBUZWxlZ3JhcGgKKyAqIENvLiBv
ciBVbml4IFN5c3RlbSBMYWJvcmF0b3JpZXMsIEluYy4gYW5kIGFyZSByZXByb2R1Y2VkIGhlcmVp
biB3aXRoCisgKiB0aGUgcGVybWlzc2lvbiBvZiBVTklYIFN5c3RlbSBMYWJvcmF0b3JpZXMsIElu
Yy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqIDQuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIFVuaXZlcnNpdHkgbm9y
IHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKKyAqICAg
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIFJFR0VOVFMgQU5EIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBSRUdFTlRTIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICog
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQor
ICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKgorICoJQCgjKWtlcm5fc3Vici5j
CTguMyAoQmVya2VsZXkpIDEvMjEvOTQKKyAqLworCisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisjaW5j
bHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4K
KyNpbmNsdWRlIDxvc3YvdWlvLmg+CisKK2ludAordWlvbW92ZSh2b2lkICpjcCwgaW50IG4sIHN0
cnVjdCB1aW8gKnVpbykKK3sKKwlhc3NlcnQodWlvLT51aW9fcncgPT0gVUlPX1JFQUQgfHwgdWlv
LT51aW9fcncgPT0gVUlPX1dSSVRFKTsKKworCXdoaWxlIChuID4gMCAmJiB1aW8tPnVpb19yZXNp
ZCkgeworCQlzdHJ1Y3QgaW92ZWMgKmlvdiA9IHVpby0+dWlvX2lvdjsKKwkJaW50IGNudCA9IGlv
di0+aW92X2xlbjsKKwkJaWYgKGNudCA9PSAwKSB7CisJCQl1aW8tPnVpb19pb3YrKzsKKwkJCXVp
by0+dWlvX2lvdmNudC0tOworCQkJY29udGludWU7CisJCX0KKwkJaWYgKGNudCA+IG4pCisJCQlj
bnQgPSBuOworCisJCWlmICh1aW8tPnVpb19ydyA9PSBVSU9fUkVBRCkKKwkJCW1lbWNweShpb3Yt
Pmlvdl9iYXNlLCBjcCwgY250KTsKKwkJZWxzZQorCQkJbWVtY3B5KGNwLCBpb3YtPmlvdl9iYXNl
LCBjbnQpOworCisJCWlvdi0+aW92X2Jhc2UgPSAoY2hhciAqKWlvdi0+aW92X2Jhc2UgKyBjbnQ7
CisJCWlvdi0+aW92X2xlbiAtPSBjbnQ7CisJCXVpby0+dWlvX3Jlc2lkIC09IGNudDsKKwkJdWlv
LT51aW9fb2Zmc2V0ICs9IGNudDsKKwkJY3AgPSAoY2hhciAqKWNwICsgY250OworCQluIC09IGNu
dDsKKwl9CisKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3N5c2NhbGxz
LmMgYi9saWIvdmZzY29yZS9zeXNjYWxscy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwLi40ODdkNTcyOQotLS0gL2Rldi9udWxsCisrKyBiL2xpYi92ZnNjb3JlL3N5c2NhbGxz
LmMKQEAgLTAsMCArMSwxNDg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIENsb3VkaXVz
IFN5c3RlbXMsIEx0ZC4KKyAqCisgKiBUaGlzIHdvcmsgaXMgb3BlbiBzb3VyY2Ugc29mdHdhcmUs
IGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUKKyAqIEJTRCBsaWNlbnNlIGFzIGRlc2Ny
aWJlZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5LgorICov
CisKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDUtMjAwNywgS29oc3VrZSBPaHRhbmkKKyAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRo
ZSBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBhbnkgY28tY29udHJpYnV0b3JzCisgKiAgICBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMg
c29mdHdhcmUKKyAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKy8q
CisgKiB2ZnNfc3lzY2FsbHMuYyAtIGV2ZXJ5dGhpbmcgaW4gdGhpcyBmaWxlIGlzIGEgcm91dGlu
ZSBpbXBsZW1lbnRpbmcKKyAqICAgICAgICAgICAgICAgICAgYSBWRlMgc3lzdGVtIGNhbGwuCisg
Ki8KKworI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8ZGlyZW50Lmg+CisKKyNpbmNs
dWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4K
KyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPGVycm5v
Lmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKworI2luY2x1ZGUgPG9zdi9wcmV4Lmg+CisjaW5jbHVk
ZSA8b3N2L3Zub2RlLmg+CisjaW5jbHVkZSA8b3N2L3Zmc19maWxlLmhoPgorI2luY2x1ZGUgInZm
cy5oIgorI2luY2x1ZGUgPGZzL2ZzLmhoPgorCitleHRlcm4gc3RydWN0IHRhc2sgKm1haW5fdGFz
azsKKworc3RhdGljIGludAorb3Blbl9ub19mb2xsb3dfY2hrKGNoYXIgKnBhdGgpCit7CisJaW50
ICAgICAgICAgICBlcnJvcjsKKwlzdHJ1Y3QgZGVudHJ5ICpkZHA7CisJY2hhciAgICAgICAgICAq
bmFtZTsKKwlzdHJ1Y3QgZGVudHJ5ICpkcDsKKwlzdHJ1Y3Qgdm5vZGUgICp2cDsKKworCWRkcCA9
IG51bGxwdHI7CisJZHAgID0gbnVsbHB0cjsKKwl2cCAgPSBudWxscHRyOworCisJZXJyb3IgPSBs
b29rdXAocGF0aCwgJmRkcCwgJm5hbWUpOworCWlmIChlcnJvcikgeworCQlyZXR1cm4gKGVycm9y
KTsKKwl9CisKKwllcnJvciA9IG5hbWVpX2xhc3Rfbm9mb2xsb3cocGF0aCwgZGRwLCAmZHApOwor
CWlmIChlcnJvcikgeworCQlnb3RvIG91dDsKKwl9CisKKwl2cCA9IGRwLT5kX3Zub2RlOworCXZu
X2xvY2sodnApOworCWlmICh2cC0+dl90eXBlID09IFZMTkspIHsKKwkJZXJyb3IgPSBFTE9PUDsK
KwkJZ290byBvdXQ7CisJfQorCisJZXJyb3IgPSAwOworb3V0OgorCWlmICh2cCAhPSBudWxscHRy
KSB7CisJCXZuX3VubG9jayh2cCk7CisJfQorCisJaWYgKGRwICE9IG51bGxwdHIpIHsKKwkJZHJl
bGUoZHApOworCX0KKworCWlmIChkZHAgIT0gbnVsbHB0cikgeworCQlkcmVsZShkZHApOworCX0K
KworCXJldHVybiAoZXJyb3IpOworfQorCitpbnQKK3N5c19vcGVuKGNoYXIgKnBhdGgsIGludCBm
bGFncywgbW9kZV90IG1vZGUsIHN0cnVjdCBmaWxlICoqZnBwKQoreworCWZpbGUgKmZwOworCXN0
cnVjdCBkZW50cnkgKmRwLCAqZGRwOworCXN0cnVjdCB2bm9kZSAqdnA7CisJY2hhciAqZmlsZW5h
bWU7CisJaW50IGVycm9yOworCisJRFBSSU5URihWRlNEQl9TWVNDQUxMLCAoInN5c19vcGVuOiBw
YXRoPSVzIGZsYWdzPSV4IG1vZGU9JXhcbiIsCisJCQkJcGF0aCwgZmxhZ3MsIG1vZGUpKTsKKwor
CWZsYWdzID0gZmZsYWdzKGZsYWdzKTsKKwlpZiAoZmxhZ3MgJiBPX0NSRUFUKSB7CisJCWVycm9y
ID0gbmFtZWkocGF0aCwgJmRwKTsKKwkJaWYgKGVycm9yID09IEVOT0VOVCkgeworCQkJLyogQ3Jl
YXRlIG5ldyBmaWxlLiAqLworCQkJaWYgKChlcnJvciA9IGxvb2t1cChwYXRoLCAmZGRwLCAmZmls
ZW5hbWUpKSAhPSAwKQorCQkJCXJldHVybiBlcnJvcjsKKworCQkJdm5fbG9jayhkZHAtPmRfdm5v
ZGUpOworCQkJaWYgKChlcnJvciA9IHZuX2FjY2VzcyhkZHAtPmRfdm5vZGUsIFZXUklURSkpICE9
IDApIHsKKwkJCQl2bl91bmxvY2soZGRwLT5kX3Zub2RlKTsKKwkJCQlkcmVsZShkZHApOworCQkJ
CXJldHVybiBlcnJvcjsKKwkJCX0KKwkJCW1vZGUgJj0gflNfSUZNVDsKKwkJCW1vZGUgfD0gU19J
RlJFRzsKKwkJCWVycm9yID0gVk9QX0NSRUFURShkZHAtPmRfdm5vZGUsIGZpbGVuYW1lLCBtb2Rl
KTsKKwkJCXZuX3VubG9jayhkZHAtPmRfdm5vZGUpOworCQkJZHJlbGUoZGRwKTsKKworCQkJaWYg
KGVycm9yKQorCQkJCXJldHVybiBlcnJvcjsKKwkJCWlmICgoZXJyb3IgPSBuYW1laShwYXRoLCAm
ZHApKSAhPSAwKQorCQkJCXJldHVybiBlcnJvcjsKKworCQkJdnAgPSBkcC0+ZF92bm9kZTsKKwkJ
CWZsYWdzICY9IH5PX1RSVU5DOworCQl9IGVsc2UgaWYgKGVycm9yKSB7CisJCQlyZXR1cm4gZXJy
b3I7CisJCX0gZWxzZSB7CisJCQkvKiBGaWxlIGFscmVhZHkgZXhpdHMgKi8KKwkJCWlmIChmbGFn
cyAmIE9fRVhDTCkgeworCQkJCWVycm9yID0gRUVYSVNUOworCQkJCWdvdG8gb3V0X2RyZWxlOwor
CQkJfQorCQl9CisKKwkJdnAgPSBkcC0+ZF92bm9kZTsKKwkJZmxhZ3MgJj0gfk9fQ1JFQVQ7CisJ
fSBlbHNlIHsKKwkJLyogT3BlbiAqLworCQlpZiAoZmxhZ3MgJiBPX05PRk9MTE9XKSB7CisJCQll
cnJvciA9IG9wZW5fbm9fZm9sbG93X2NoayhwYXRoKTsKKwkJCWlmIChlcnJvciAhPSAwKSB7CisJ
CQkJcmV0dXJuIChlcnJvcik7CisJCQl9CisJCX0KKwkJZXJyb3IgPSBuYW1laShwYXRoLCAmZHAp
OworCQlpZiAoZXJyb3IpCisJCQlyZXR1cm4gZXJyb3I7CisKKwkJdnAgPSBkcC0+ZF92bm9kZTsK
KworCQlpZiAoZmxhZ3MgJiBGV1JJVEUgfHwgZmxhZ3MgJiBPX1RSVU5DKSB7CisJCQllcnJvciA9
IHZuX2FjY2Vzcyh2cCwgVldSSVRFKTsKKwkJCWlmIChlcnJvcikKKwkJCQlnb3RvIG91dF9kcmVs
ZTsKKworCQkJZXJyb3IgPSBFSVNESVI7CisJCQlpZiAodnAtPnZfdHlwZSA9PSBWRElSKQorCQkJ
CWdvdG8gb3V0X2RyZWxlOworCQl9CisJCWlmIChmbGFncyAmIE9fRElSRUNUT1JZKSB7CisJCSAg
ICBpZiAodnAtPnZfdHlwZSAhPSBWRElSKSB7CisJCSAgICAgICAgZXJyb3IgPSBFTk9URElSOwor
CQkgICAgICAgIGdvdG8gb3V0X2RyZWxlOworCQkgICAgfQorCQl9CisJfQorCisJdm5fbG9jayh2
cCk7CisJLyogUHJvY2VzcyB0cnVuY2F0ZSByZXF1ZXN0ICovCisJaWYgKGZsYWdzICYgT19UUlVO
QykgeworCQllcnJvciA9IEVJTlZBTDsKKwkJaWYgKCEoZmxhZ3MgJiBGV1JJVEUpIHx8IHZwLT52
X3R5cGUgPT0gVkRJUikKKwkJCWdvdG8gb3V0X3ZuX3VubG9jazsKKworCQllcnJvciA9IFZPUF9U
UlVOQ0FURSh2cCwgMCk7CisJCWlmIChlcnJvcikKKwkJCWdvdG8gb3V0X3ZuX3VubG9jazsKKwl9
CisKKwl0cnkgeworCSAgICBmaWxlcmVmIGYgPSBtYWtlX2ZpbGU8dmZzX2ZpbGU+KGZsYWdzKTsK
KwkgICAgZnAgPSBmLmdldCgpOworCSAgICBmaG9sZChmcCk7CisJfSBjYXRjaCAoaW50IGVycikg
eworCSAgICBlcnJvciA9IGVycjsKKwkgICAgZ290byBvdXRfdm5fdW5sb2NrOworCX0KKwkvLyBj
aGFuZ2UgdG8gc3RkOjptb3ZlIG9uY2UgZHAgaXMgYSBkZW50cnlfcmVmCisJZnAtPmZfZGVudHJ5
ID0gZGVudHJ5X3JlZihkcCwgZmFsc2UpOworCWRwID0gbnVsbHB0cjsKKworCWVycm9yID0gVk9Q
X09QRU4odnAsIGZwKTsKKwlpZiAoZXJyb3IpIHsKKwkJdm5fdW5sb2NrKHZwKTsKKwkJLy8gTm90
ZSBkaXJlY3QgZGVsZXRlIG9mIGZwIGluc3RlYWQgb2YgZmRyb3AoZnApLiBmcCB3YXMgbmV2ZXIK
KwkJLy8gcmV0dXJuZWQgc28gY2Fubm90IGJlIGluIHVzZSwgYW5kIGJlY2F1c2UgaXQgd2Fzbid0
IG9wZW5lZAorCQkvLyBpdCBjYW5ub3QgYmUgY2xvc2UoKWVkLgorCQlkZWxldGUgZnA7CisJCXJl
dHVybiBlcnJvcjsKKwl9CisJdm5fdW5sb2NrKHZwKTsKKworCSpmcHAgPSBmcDsKKwlyZXR1cm4g
MDsKKworb3V0X3ZuX3VubG9jazoKKwl2bl91bmxvY2sodnApOworb3V0X2RyZWxlOgorCWlmIChk
cCkgeworCQlkcmVsZShkcCk7CisJfQorCXJldHVybiBlcnJvcjsKK30KKworaW50CitzeXNfY2xv
c2Uoc3RydWN0IGZpbGUgKmZwKQoreworCisJcmV0dXJuIDA7Cit9CisKK2ludAorc3lzX3JlYWQo
c3RydWN0IGZpbGUgKmZwLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlvdiwgc2l6ZV90IG5pb3YsCisJ
CW9mZl90IG9mZnNldCwgc2l6ZV90ICpjb3VudCkKK3sKKyAgICBpZiAoKGZwLT5mX2ZsYWdzICYg
RlJFQUQpID09IDApCisgICAgICAgIHJldHVybiBFQkFERjsKKworICAgIHNpemVfdCBieXRlcyA9
IDA7CisgICAgYXV0byBpb3ZwID0gaW92OworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBu
aW92OyBpKyspIHsKKyAgICAgICAgaWYgKGlvdnAtPmlvdl9sZW4gPiBJT1NJWkVfTUFYIC0gYnl0
ZXMpIHsKKyAgICAgICAgICAgIHJldHVybiBFSU5WQUw7CisgICAgICAgIH0KKyAgICAgICAgYnl0
ZXMgKz0gaW92cC0+aW92X2xlbjsKKyAgICAgICAgaW92cCsrOworICAgIH0KKworICAgIGlmIChi
eXRlcyA9PSAwKSB7CisgICAgICAgICpjb3VudCA9IDA7CisgICAgICAgIHJldHVybiAwOworICAg
IH0KKworICAgIHN0cnVjdCB1aW8gdWlvOworICAgIC8vIFVuZm9ydHVuYXRlbHksIHRoZSBjdXJy
ZW50IGltcGxlbWVudGF0aW9uIG9mIGZwLT5yZWFkIHplcm9zIHRoZQorICAgIC8vIGlvdl9sZW4g
ZmllbGRzIHdoZW4gaXQgcmVhZHMgZnJvbSBkaXNrLCBzbyB3ZSBoYXZlIHRvIGNvcHkgaW92Lgor
ICAgIHN0ZDo6dmVjdG9yPGlvdmVjPiBjb3B5X2lvdihpb3YsIGlvdiArIG5pb3YpOworICAgIHVp
by51aW9faW92ID0gY29weV9pb3YuZGF0YSgpOworICAgIHVpby51aW9faW92Y250ID0gbmlvdjsK
KyAgICB1aW8udWlvX29mZnNldCA9IG9mZnNldDsKKyAgICB1aW8udWlvX3Jlc2lkID0gYnl0ZXM7
CisgICAgdWlvLnVpb19ydyA9IFVJT19SRUFEOworICAgIGF1dG8gZXJyb3IgPSBmcC0+cmVhZCgm
dWlvLCAob2Zmc2V0ID09IC0xKSA/IDAgOiBGT0ZfT0ZGU0VUKTsKKyAgICAqY291bnQgPSBieXRl
cyAtIHVpby51aW9fcmVzaWQ7CisgICAgcmV0dXJuIGVycm9yOworfQorCitpbnQKK3N5c193cml0
ZShzdHJ1Y3QgZmlsZSAqZnAsIGNvbnN0IHN0cnVjdCBpb3ZlYyAqaW92LCBzaXplX3QgbmlvdiwK
KwkJb2ZmX3Qgb2Zmc2V0LCBzaXplX3QgKmNvdW50KQoreworICAgIGlmICgoZnAtPmZfZmxhZ3Mg
JiBGV1JJVEUpID09IDApCisgICAgICAgIHJldHVybiBFQkFERjsKKworICAgIHNpemVfdCBieXRl
cyA9IDA7CisgICAgYXV0byBpb3ZwID0gaW92OworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBuaW92OyBpKyspIHsKKyAgICAgICAgaWYgKGlvdnAtPmlvdl9sZW4gPiBJT1NJWkVfTUFYIC0g
Ynl0ZXMpIHsKKyAgICAgICAgICAgIHJldHVybiBFSU5WQUw7CisgICAgICAgIH0KKyAgICAgICAg
Ynl0ZXMgKz0gaW92cC0+aW92X2xlbjsKKyAgICAgICAgaW92cCsrOworICAgIH0KKworICAgIGlm
IChieXRlcyA9PSAwKSB7CisgICAgICAgICpjb3VudCA9IDA7CisgICAgICAgIHJldHVybiAwOwor
ICAgIH0KKworICAgIHN0cnVjdCB1aW8gdWlvOworICAgIC8vIFVuZm9ydHVuYXRlbHksIHRoZSBj
dXJyZW50IGltcGxlbWVudGF0aW9uIG9mIGZwLT53cml0ZSB6ZXJvcyB0aGUKKyAgICAvLyBpb3Zf
bGVuIGZpZWxkcyB3aGVuIGl0IHdyaXRlcyB0byBkaXNrLCBzbyB3ZSBoYXZlIHRvIGNvcHkgaW92
LgorICAgIHN0ZDo6dmVjdG9yPGlvdmVjPiBjb3B5X2lvdihpb3YsIGlvdiArIG5pb3YpOworICAg
IHVpby51aW9faW92ID0gY29weV9pb3YuZGF0YSgpOworICAgIHVpby51aW9faW92Y250ID0gbmlv
djsKKyAgICB1aW8udWlvX29mZnNldCA9IG9mZnNldDsKKyAgICB1aW8udWlvX3Jlc2lkID0gYnl0
ZXM7CisgICAgdWlvLnVpb19ydyA9IFVJT19XUklURTsKKyAgICBhdXRvIGVycm9yID0gZnAtPndy
aXRlKCZ1aW8sIChvZmZzZXQgPT0gLTEpID8gMCA6IEZPRl9PRkZTRVQpOworICAgICpjb3VudCA9
IGJ5dGVzIC0gdWlvLnVpb19yZXNpZDsKKyAgICByZXR1cm4gZXJyb3I7Cit9CisKK2ludAorc3lz
X2xzZWVrKHN0cnVjdCBmaWxlICpmcCwgb2ZmX3Qgb2ZmLCBpbnQgdHlwZSwgb2ZmX3QgKm9yaWdp
bikKK3sKKwlzdHJ1Y3Qgdm5vZGUgKnZwOworCisJRFBSSU5URihWRlNEQl9TWVNDQUxMLCAoInN5
c19zZWVrOiBmcD0leCBvZmY9JWQgdHlwZT0lZFxuIiwKKwkJCQkodV9sb25nKWZwLCAodV9pbnQp
b2ZmLCB0eXBlKSk7CisKKwlpZiAoIWZwLT5mX2RlbnRyeSkgeworCSAgICAvLyBMaW51eCBkb2Vz
bid0IGltcGxlbWVudCBsc2VlaygpIG9uIHBpcGVzLCBzb2NrZXRzLCBvciB0dHlzLgorCSAgICAv
LyBJbiBPU1YsIHdlIG9ubHkgaW1wbGVtZW50IGxzZWVrKCkgb24gcmVndWxhciBmaWxlcywgYmFj
a2VkIGJ5IHZub2RlCisJICAgIHJldHVybiBFU1BJUEU7CisJfQorCisJdnAgPSBmcC0+Zl9kZW50
cnktPmRfdm5vZGU7CisJaW50IGVycm9yID0gRUlOVkFMOworCXZuX2xvY2sodnApOworCXN3aXRj
aCAodHlwZSkgeworCWNhc2UgU0VFS19DVVI6CisJCW9mZiA9IGZwLT5mX29mZnNldCArIG9mZjsK
KwkJYnJlYWs7CisJY2FzZSBTRUVLX0VORDoKKwkJb2ZmID0gdnAtPnZfc2l6ZSArIG9mZjsKKwkJ
YnJlYWs7CisJfQorCWlmIChvZmYgPj0gMCkgeworCQllcnJvciA9IFZPUF9TRUVLKHZwLCBmcCwg
ZnAtPmZfb2Zmc2V0LCBvZmYpOworCQlpZiAoIWVycm9yKSB7CisJCQkqb3JpZ2luICAgICAgPSBv
ZmY7CisJCQlmcC0+Zl9vZmZzZXQgPSBvZmY7CisJCX0KKwl9CisJdm5fdW5sb2NrKHZwKTsKKwly
ZXR1cm4gZXJyb3I7Cit9CisKK2ludAorc3lzX2lvY3RsKHN0cnVjdCBmaWxlICpmcCwgdV9sb25n
IHJlcXVlc3QsIHZvaWQgKmJ1ZikKK3sKKwlpbnQgZXJyb3I7CisKKwlEUFJJTlRGKFZGU0RCX1NZ
U0NBTEwsICgic3lzX2lvY3RsOiBmcD0leCByZXF1ZXN0PSV4XG4iLCBmcCwgcmVxdWVzdCkpOwor
CisJaWYgKChmcC0+Zl9mbGFncyAmIChGUkVBRCB8IEZXUklURSkpID09IDApCisJCXJldHVybiBF
QkFERjsKKworCWVycm9yID0gZnAtPmlvY3RsKHJlcXVlc3QsIGJ1Zik7CisKKwlEUFJJTlRGKFZG
U0RCX1NZU0NBTEwsICgic3lzX2lvY3RsOiBjb21wIGVycm9yPSVkXG4iLCBlcnJvcikpOworCXJl
dHVybiBlcnJvcjsKK30KKworaW50CitzeXNfZnN5bmMoc3RydWN0IGZpbGUgKmZwKQoreworCXN0
cnVjdCB2bm9kZSAqdnA7CisJaW50IGVycm9yOworCisJRFBSSU5URihWRlNEQl9TWVNDQUxMLCAo
InN5c19mc3luYzogZnA9JXhcbiIsIGZwKSk7CisKKwlpZiAoIWZwLT5mX2RlbnRyeSkKKwkJcmV0
dXJuIEVJTlZBTDsKKworCXZwID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOworCXZuX2xvY2sodnAp
OworCWVycm9yID0gVk9QX0ZTWU5DKHZwLCBmcCk7CisJdm5fdW5sb2NrKHZwKTsKKwlyZXR1cm4g
ZXJyb3I7Cit9CisKK2ludAorc3lzX2ZzdGF0KHN0cnVjdCBmaWxlICpmcCwgc3RydWN0IHN0YXQg
KnN0KQoreworCWludCBlcnJvciA9IDA7CisKKwlEUFJJTlRGKFZGU0RCX1NZU0NBTEwsICgic3lz
X2ZzdGF0OiBmcD0leFxuIiwgZnApKTsKKworCWVycm9yID0gZnAtPnN0YXQoc3QpOworCisJcmV0
dXJuIGVycm9yOworfQorCisvKgorICogUmV0dXJuIDAgaWYgZGlyZWN0b3J5IGlzIGVtcHR5Cisg
Ki8KK3N0YXRpYyBpbnQKK2NoZWNrX2Rpcl9lbXB0eShjaGFyICpwYXRoKQoreworCWludCBlcnJv
cjsKKwlzdHJ1Y3QgZmlsZSAqZnA7CisJc3RydWN0IGRpcmVudCBkaXI7CisKKwlEUFJJTlRGKFZG
U0RCX1NZU0NBTEwsICgiY2hlY2tfZGlyX2VtcHR5XG4iKSk7CisKKwllcnJvciA9IHN5c19vcGVu
KHBhdGgsIE9fUkRPTkxZLCAwLCAmZnApOworCWlmIChlcnJvcikKKwkJZ290byBvdXRfZXJyb3I7
CisKKwlkbyB7CisJCWVycm9yID0gc3lzX3JlYWRkaXIoZnAsICZkaXIpOworCQlpZiAoZXJyb3Ig
IT0gMCAmJiBlcnJvciAhPSBFQUNDRVMpCisJCQlicmVhazsKKwl9IHdoaWxlICghc3RyY21wKGRp
ci5kX25hbWUsICIuIikgfHwgIXN0cmNtcChkaXIuZF9uYW1lLCAiLi4iKSk7CisKKwlpZiAoZXJy
b3IgPT0gRU5PRU5UKQorCQllcnJvciA9IDA7CisJZWxzZSBpZiAoZXJyb3IgPT0gMCkgeworCSAg
ICAvLyBQb3NpeCBzcGVjaWZpZXMgdG8gcmV0dXJuIEVFWElTVCBpbiB0aGlzIGNhc2UgKHJtZGly
IG9mIG5vbi1lbXB0eQorCSAgICAvLyBkaXJlY3RvcnksIGJ1dCBMaW51eCBhY3R1YWxseSByZXR1
cm5zIEVOT1RFTVBUWSkuCisJCWVycm9yID0gRU5PVEVNUFRZOworCX0KKwlmZHJvcChmcCk7Citv
dXRfZXJyb3I6CisJcmV0dXJuIGVycm9yOworfQorCitpbnQKK3N5c19yZWFkZGlyKHN0cnVjdCBm
aWxlICpmcCwgc3RydWN0IGRpcmVudCAqZGlyKQoreworCXN0cnVjdCB2bm9kZSAqZHZwOworCWlu
dCBlcnJvcjsKKworCURQUklOVEYoVkZTREJfU1lTQ0FMTCwgKCJzeXNfcmVhZGRpcjogZnA9JXhc
biIsIGZwKSk7CisKKwlpZiAoIWZwLT5mX2RlbnRyeSkKKwkJcmV0dXJuIEVOT1RESVI7CisKKwlk
dnAgPSBmcC0+Zl9kZW50cnktPmRfdm5vZGU7CisJdm5fbG9jayhkdnApOworCWlmIChkdnAtPnZf
dHlwZSAhPSBWRElSKSB7CisJCXZuX3VubG9jayhkdnApOworCQlyZXR1cm4gRU5PVERJUjsKKwl9
CisJZXJyb3IgPSBWT1BfUkVBRERJUihkdnAsIGZwLCBkaXIpOworCURQUklOVEYoVkZTREJfU1lT
Q0FMTCwgKCJzeXNfcmVhZGRpcjogZXJyb3I9JWQgcGF0aD0lc1xuIiwKKwkJCQllcnJvciwgZGly
LT5kX25hbWUpKTsKKwl2bl91bmxvY2soZHZwKTsKKwlyZXR1cm4gZXJyb3I7Cit9CisKK2ludAor
c3lzX3Jld2luZGRpcihzdHJ1Y3QgZmlsZSAqZnApCit7CisJc3RydWN0IHZub2RlICpkdnA7CisK
KwlpZiAoIWZwLT5mX2RlbnRyeSkKKwkJcmV0dXJuIEVOT1RESVI7CisKKwlkdnAgPSBmcC0+Zl9k
ZW50cnktPmRfdm5vZGU7CisJdm5fbG9jayhkdnApOworCWlmIChkdnAtPnZfdHlwZSAhPSBWRElS
KSB7CisJCXZuX3VubG9jayhkdnApOworCQlyZXR1cm4gRUJBREY7CisJfQorCWZwLT5mX29mZnNl
dCA9IDA7CisJdm5fdW5sb2NrKGR2cCk7CisJcmV0dXJuIDA7Cit9CisKK2ludAorc3lzX3NlZWtk
aXIoc3RydWN0IGZpbGUgKmZwLCBsb25nIGxvYykKK3sKKwlzdHJ1Y3Qgdm5vZGUgKmR2cDsKKwor
CWlmICghZnAtPmZfZGVudHJ5KQorCQlyZXR1cm4gRU5PVERJUjsKKworCWR2cCA9IGZwLT5mX2Rl
bnRyeS0+ZF92bm9kZTsKKwl2bl9sb2NrKGR2cCk7CisJaWYgKGR2cC0+dl90eXBlICE9IFZESVIp
IHsKKwkJdm5fdW5sb2NrKGR2cCk7CisJCXJldHVybiBFQkFERjsKKwl9CisJZnAtPmZfb2Zmc2V0
ID0gKG9mZl90KWxvYzsKKwl2bl91bmxvY2soZHZwKTsKKwlyZXR1cm4gMDsKK30KKworaW50Citz
eXNfdGVsbGRpcihzdHJ1Y3QgZmlsZSAqZnAsIGxvbmcgKmxvYykKK3sKKwlzdHJ1Y3Qgdm5vZGUg
KmR2cDsKKworCWlmICghZnAtPmZfZGVudHJ5KQorCQlyZXR1cm4gRU5PVERJUjsKKworCWR2cCA9
IGZwLT5mX2RlbnRyeS0+ZF92bm9kZTsKKwl2bl9sb2NrKGR2cCk7CisJaWYgKGR2cC0+dl90eXBl
ICE9IFZESVIpIHsKKwkJdm5fdW5sb2NrKGR2cCk7CisJCXJldHVybiBFQkFERjsKKwl9CisJKmxv
YyA9IChsb25nKWZwLT5mX29mZnNldDsKKwl2bl91bmxvY2soZHZwKTsKKwlyZXR1cm4gMDsKK30K
KworaW50CitzeXNfbWtkaXIoY2hhciAqcGF0aCwgbW9kZV90IG1vZGUpCit7CisJY2hhciAqbmFt
ZTsKKwlzdHJ1Y3QgZGVudHJ5ICpkcCwgKmRkcDsKKwlpbnQgZXJyb3I7CisKKwlEUFJJTlRGKFZG
U0RCX1NZU0NBTEwsICgic3lzX21rZGlyOiBwYXRoPSVzIG1vZGU9JWRcbiIsCXBhdGgsIG1vZGUp
KTsKKworCWVycm9yID0gbmFtZWkocGF0aCwgJmRwKTsKKwlpZiAoIWVycm9yKSB7CisJCS8qIEZp
bGUgYWxyZWFkeSBleGlzdHMgKi8KKwkJZHJlbGUoZHApOworCQlyZXR1cm4gRUVYSVNUOworCX0K
KworCWlmICgoZXJyb3IgPSBsb29rdXAocGF0aCwgJmRkcCwgJm5hbWUpKSAhPSAwKSB7CisJCS8q
IERpcmVjdG9yeSBhbHJlYWR5IGV4aXN0cyAqLworCQlyZXR1cm4gZXJyb3I7CisJfQorCisJdm5f
bG9jayhkZHAtPmRfdm5vZGUpOworCWlmICgoZXJyb3IgPSB2bl9hY2Nlc3MoZGRwLT5kX3Zub2Rl
LCBWV1JJVEUpKSAhPSAwKQorCQlnb3RvIG91dDsKKwltb2RlICY9IH5TX0lGTVQ7CisJbW9kZSB8
PSBTX0lGRElSOworCisJZXJyb3IgPSBWT1BfTUtESVIoZGRwLT5kX3Zub2RlLCBuYW1lLCBtb2Rl
KTsKKyBvdXQ6CisJdm5fdW5sb2NrKGRkcC0+ZF92bm9kZSk7CisJZHJlbGUoZGRwKTsKKwlyZXR1
cm4gZXJyb3I7Cit9CisKK2ludAorc3lzX3JtZGlyKGNoYXIgKnBhdGgpCit7CisJc3RydWN0IGRl
bnRyeSAqZHAsICpkZHA7CisJc3RydWN0IHZub2RlICp2cDsKKwlpbnQgZXJyb3I7CisJY2hhciAq
bmFtZTsKKworCURQUklOVEYoVkZTREJfU1lTQ0FMTCwgKCJzeXNfcm1kaXI6IHBhdGg9JXNcbiIs
IHBhdGgpKTsKKworCWlmICgoZXJyb3IgPSBjaGVja19kaXJfZW1wdHkocGF0aCkpICE9IDApCisJ
CXJldHVybiBlcnJvcjsKKwllcnJvciA9IG5hbWVpKHBhdGgsICZkcCk7CisJaWYgKGVycm9yKQor
CQlyZXR1cm4gZXJyb3I7CisKKwl2cCA9IGRwLT5kX3Zub2RlOworCXZuX2xvY2sodnApOworCWlm
ICgoZXJyb3IgPSB2bl9hY2Nlc3ModnAsIFZXUklURSkpICE9IDApCisJCWdvdG8gb3V0OworCWlm
ICh2cC0+dl90eXBlICE9IFZESVIpIHsKKwkJZXJyb3IgPSBFTk9URElSOworCQlnb3RvIG91dDsK
Kwl9CisJaWYgKHZwLT52X2ZsYWdzICYgVlJPT1QgfHwgdnAtPnZfcmVmY250ID49IDIpIHsKKwkJ
ZXJyb3IgPSBFQlVTWTsKKwkJZ290byBvdXQ7CisJfQorCWlmICgoZXJyb3IgPSBsb29rdXAocGF0
aCwgJmRkcCwgJm5hbWUpKSAhPSAwKQorCQlnb3RvIG91dDsKKworCXZuX2xvY2soZGRwLT5kX3Zu
b2RlKTsKKwllcnJvciA9IFZPUF9STURJUihkZHAtPmRfdm5vZGUsIHZwLCBuYW1lKTsKKwl2bl91
bmxvY2soZGRwLT5kX3Zub2RlKTsKKworCXZuX3VubG9jayh2cCk7CisJZGVudHJ5X3JlbW92ZShk
cCk7CisJZHJlbGUoZGRwKTsKKwlkcmVsZShkcCk7CisJcmV0dXJuIGVycm9yOworCisgb3V0Ogor
CXZuX3VubG9jayh2cCk7CisJZHJlbGUoZHApOworCXJldHVybiBlcnJvcjsKK30KKworaW50Citz
eXNfbWtub2QoY2hhciAqcGF0aCwgbW9kZV90IG1vZGUpCit7CisJY2hhciAqbmFtZTsKKwlzdHJ1
Y3QgZGVudHJ5ICpkcCwgKmRkcDsKKwlpbnQgZXJyb3I7CisKKwlEUFJJTlRGKFZGU0RCX1NZU0NB
TEwsICgic3lzX21rbm9kOiBwYXRoPSVzIG1vZGU9JWRcbiIsCXBhdGgsIG1vZGUpKTsKKworCXN3
aXRjaCAobW9kZSAmIFNfSUZNVCkgeworCWNhc2UgU19JRlJFRzoKKwljYXNlIFNfSUZESVI6CisJ
Y2FzZSBTX0lGSUZPOgorCWNhc2UgU19JRlNPQ0s6CisJCS8qIE9LICovCisJCWJyZWFrOworCWRl
ZmF1bHQ6CisJCXJldHVybiBFSU5WQUw7CisJfQorCisJZXJyb3IgPSBuYW1laShwYXRoLCAmZHAp
OworCWlmICghZXJyb3IpIHsKKwkJZHJlbGUoZHApOworCQlyZXR1cm4gRUVYSVNUOworCX0KKwor
CWlmICgoZXJyb3IgPSBsb29rdXAocGF0aCwgJmRkcCwgJm5hbWUpKSAhPSAwKQorCQlyZXR1cm4g
ZXJyb3I7CisKKwl2bl9sb2NrKGRkcC0+ZF92bm9kZSk7CisJaWYgKChlcnJvciA9IHZuX2FjY2Vz
cyhkZHAtPmRfdm5vZGUsIFZXUklURSkpICE9IDApCisJCWdvdG8gb3V0OworCWlmIChTX0lTRElS
KG1vZGUpKQorCQllcnJvciA9IFZPUF9NS0RJUihkZHAtPmRfdm5vZGUsIG5hbWUsIG1vZGUpOwor
CWVsc2UKKwkJZXJyb3IgPSBWT1BfQ1JFQVRFKGRkcC0+ZF92bm9kZSwgbmFtZSwgbW9kZSk7Cisg
b3V0OgorCXZuX3VubG9jayhkZHAtPmRfdm5vZGUpOworCWRyZWxlKGRkcCk7CisJcmV0dXJuIGVy
cm9yOworfQorCisvKgorICogUmV0dXJucyB0cnVlIHdoZW4gQHBhcmVudCBwYXRoIGNvdWxkIHJl
cHJlc2VudCBwYXJlbnQgZGlyZWN0b3J5CisgKiBvZiBhIGZpbGUgb3IgZGlyZWN0b3J5IHJlcHJl
c2VudGVkIGJ5IEBjaGlsZCBwYXRoLgorICoKKyAqIEFzc3VtZXMgYm90aCBwYXRocyBkbyBub3Qg
aGF2ZSB0cmFpbGluZyBzbGFzaGVzLgorICovCitzdGF0aWMgYm9vbAoraXNfcGFyZW50KGNvbnN0
IGNoYXIgKnBhcmVudCwgY29uc3QgY2hhciAqY2hpbGQpCit7CisJc2l6ZV90IHBfbGVuID0gc3Ry
bGVuKHBhcmVudCk7CisJcmV0dXJuICFzdHJuY21wKHBhcmVudCwgY2hpbGQsIHBfbGVuKSAmJiAo
cGFyZW50W3BfbGVuLTFdID09ICcvJyB8fCBjaGlsZFtwX2xlbl0gPT0gJy8nKTsKK30KKworc3Rh
dGljIGJvb2wKK2hhc190cmFpbGluZyhjb25zdCBjaGFyICpwYXRoLCBjaGFyIGNoKQoreworCXNp
emVfdCBsZW4gPSBzdHJsZW4ocGF0aCk7CisJcmV0dXJuIGxlbiAmJiBwYXRoW2xlbiAtIDFdID09
IGNoOworfQorCitzdGF0aWMgdm9pZAorc3RyaXBfdHJhaWxpbmcoY2hhciAqcGF0aCwgY2hhciBj
aCkKK3sKKwlzaXplX3QgbGVuID0gc3RybGVuKHBhdGgpOworCisJd2hpbGUgKGxlbiAmJiBwYXRo
W2xlbiAtIDFdID09IGNoKQorCQlsZW4tLTsKKworCXBhdGhbbGVuXSA9ICdcMCc7Cit9CisKK2lu
dAorc3lzX3JlbmFtZShjaGFyICpzcmMsIGNoYXIgKmRlc3QpCit7CisJc3RydWN0IGRlbnRyeSAq
ZHAxLCAqZHAyID0gMCwgKmRkcDEsICpkZHAyOworCXN0cnVjdCB2bm9kZSAqdnAxLCAqdnAyID0g
MCwgKmR2cDEsICpkdnAyOworCWNoYXIgKnNuYW1lLCAqZG5hbWU7CisJaW50IGVycm9yOworCWNo
YXIgcm9vdFtdID0gIi8iOworCWJvb2wgdHM7IC8qIHRyYWlsaW5nIHNsYXNoICovCisKKwlEUFJJ
TlRGKFZGU0RCX1NZU0NBTEwsICgic3lzX3JlbmFtZTogc3JjPSVzIGRlc3Q9JXNcbiIsIHNyYywg
ZGVzdCkpOworCisJdHMgPSBmYWxzZTsKKwlpZiAoaGFzX3RyYWlsaW5nKHNyYywgJy8nKSA9PSB0
cnVlKSB7CisJCWlmIChzdHJsZW4oc3JjKSAhPSAxKSB7CisJCQkvKiByZW1vdmUgdHJhaWxpbmcg
c2xhc2ggaWZmIHBhdGggaXMgbm9uZSByb290ICovCisJCQlzdHJpcF90cmFpbGluZyhzcmMsICcv
Jyk7CisJCQl0cyA9IHRydWU7CisJCX0KKwl9CisKKwllcnJvciA9IGxvb2t1cChzcmMsICZkZHAx
LCAmc25hbWUpOworCWlmIChlcnJvciAhPSAwKSB7CisJCXJldHVybiAoZXJyb3IpOworCX0KKwor
CWVycm9yID0gbmFtZWlfbGFzdF9ub2ZvbGxvdyhzcmMsIGRkcDEsICZkcDEpOworCWlmIChlcnJv
ciAhPSAwKSB7CisJCWRyZWxlKGRkcDEpOworCQlyZXR1cm4gKGVycm9yKTsKKwl9CisKKwl2cDEg
PSBkcDEtPmRfdm5vZGU7CisJdm5fbG9jayh2cDEpOworCisJaWYgKHZwMS0+dl90eXBlICE9IFZE
SVIgJiYgdHMgPT0gdHJ1ZSkgeworCQllcnJvciA9IEVOT1RESVI7CisJCWdvdG8gZXJyMTsKKwl9
CisKKwl0cyA9IGZhbHNlOworCWlmIChoYXNfdHJhaWxpbmcoZGVzdCwgJy8nKSA9PSB0cnVlKSB7
CisJCWlmIChzdHJsZW4oZGVzdCkgIT0gMSkgeworCQkJLyogcmVtb3ZlIHRyYWlsaW5nIHNsYXNo
IGlmZiBwYXRoIGlzIG5vbmUgcm9vdCAqLworCQkJc3RyaXBfdHJhaWxpbmcoZGVzdCwgJy8nKTsK
KwkJCXRzID0gdHJ1ZTsKKwkJfQorCX0KKworCWVycm9yID0gbG9va3VwKGRlc3QsICZkZHAyLCAm
ZG5hbWUpOworCWlmIChlcnJvciAhPSAwKSB7CisJCWdvdG8gZXJyMTsKKwl9CisKKwllcnJvciA9
IG5hbWVpX2xhc3Rfbm9mb2xsb3coZGVzdCwgZGRwMiwgJmRwMik7CisJaWYgKGVycm9yID09IDAp
IHsKKwkJLyogdGFyZ2V0IGV4aXN0cyAqLworCisJCXZwMiA9IGRwMi0+ZF92bm9kZTsKKwkJdm5f
bG9jayh2cDIpOworCisJCWlmICh2cDItPnZfdHlwZSAhPSBWRElSICYmIHZwMi0+dl90eXBlICE9
IFZMTkspIHsKKwkJCWlmICh2cDEtPnZfdHlwZSA9PSBWRElSIHx8IHRzID09IHRydWUpIHsKKwkJ
CQllcnJvciA9IEVOT1RESVI7CisJCQkJZ290byBlcnIyOworCQkJfQorCQl9IGVsc2UgaWYgKHZw
MS0+dl90eXBlICE9IFZESVIgJiYgdnAyLT52X3R5cGUgPT0gVkRJUikgeworCQkJZXJyb3IgPSBF
SVNESVI7CisJCQlnb3RvIGVycjI7CisJCX0KKwkJaWYgKHZwMi0+dl90eXBlID09IFZESVIgJiYg
Y2hlY2tfZGlyX2VtcHR5KGRlc3QpKSB7CisJCQllcnJvciA9IEVFWElTVDsKKwkJCWdvdG8gZXJy
MjsKKwkJfQorCX0gZWxzZSBpZiAoZXJyb3IgPT0gRU5PRU5UKSB7CisJCWlmICh2cDEtPnZfdHlw
ZSAhPSBWRElSICYmIHRzID09IHRydWUpIHsKKwkJCWVycm9yID0gRU5PVERJUjsKKwkJCWdvdG8g
ZXJyMjsKKwkJfQorCX0gZWxzZSB7CisJCWdvdG8gZXJyMjsKKwl9CisKKwlpZiAoc3RyY21wKGRl
c3QsICIvIikpCisJCXN0cmlwX3RyYWlsaW5nKGRlc3QsICcvJyk7CisKKwlpZiAoc3RyY21wKHNy
YywgIi8iKSkKKwkJc3RyaXBfdHJhaWxpbmcoc3JjLCAnLycpOworCisJLyogSWYgc291cmNlIGFu
ZCBkZXN0IGFyZSB0aGUgc2FtZSwgZG8gbm90aGluZyAqLworCWlmICghc3RybmNtcChzcmMsIGRl
c3QsIFBBVEhfTUFYKSkKKwkJZ290byBlcnIyOworCisJLyogQ2hlY2sgaWYgdGFyZ2V0IGlzIGRp
cmVjdG9yeSBvZiBzb3VyY2UgKi8KKwlpZiAoaXNfcGFyZW50KHNyYywgZGVzdCkpIHsKKwkJZXJy
b3IgPSBFSU5WQUw7CisJCWdvdG8gZXJyMjsKKwl9CisKKwlkbmFtZSA9IHN0cnJjaHIoZGVzdCwg
Jy8nKTsKKwlpZiAoZG5hbWUgPT0gbnVsbHB0cikgeworCQllcnJvciA9IEVOT1RESVI7CisJCWdv
dG8gZXJyMjsKKwl9CisJaWYgKGRuYW1lID09IGRlc3QpCisJCWRlc3QgPSByb290OworCisJKmRu
YW1lID0gMDsKKwlkbmFtZSsrOworCisJZHZwMSA9IGRkcDEtPmRfdm5vZGU7CisJdm5fbG9jayhk
dnAxKTsKKworCWR2cDIgPSBkZHAyLT5kX3Zub2RlOworCXZuX2xvY2soZHZwMik7CisKKwkvKiBT
b3VyY2UgYW5kIGRlc3RpbmF0aW9uIGRpcmVjdGlvbnMgc2hvdWxkIGJlIHdyaXRhYmxlKSAqLwor
CWlmICgoZXJyb3IgPSB2bl9hY2Nlc3MoZHZwMSwgVldSSVRFKSkgIT0gMCkKKwkgICAgZ290byBl
cnIzOworCWlmICgoZXJyb3IgPSB2bl9hY2Nlc3MoZHZwMiwgVldSSVRFKSkgIT0gMCkKKwkgICAg
Z290byBlcnIzOworCisJLyogVGhlIHNvdXJjZSBhbmQgZGVzdCBtdXN0IGJlIHNhbWUgZmlsZSBz
eXN0ZW0gKi8KKwlpZiAoZHZwMS0+dl9tb3VudCAhPSBkdnAyLT52X21vdW50KSB7CisJCWVycm9y
ID0gRVhERVY7CisJCWdvdG8gZXJyMzsKKwl9CisKKwllcnJvciA9IFZPUF9SRU5BTUUoZHZwMSwg
dnAxLCBzbmFtZSwgZHZwMiwgdnAyLCBkbmFtZSk7CisKKwlkZW50cnlfbW92ZShkcDEsIGRkcDIs
IGRuYW1lKTsKKwlpZiAoZHAyKQorCQlkZW50cnlfcmVtb3ZlKGRwMik7CisKKyBlcnIzOgorCXZu
X3VubG9jayhkdnAyKTsKKwl2bl91bmxvY2soZHZwMSk7CisgZXJyMjoKKwlpZiAodnAyKSB7CisJ
CXZuX3VubG9jayh2cDIpOworCQlkcmVsZShkcDIpOworCX0KKwlkcmVsZShkZHAyKTsKKyBlcnIx
OgorCXZuX3VubG9jayh2cDEpOworCWRyZWxlKGRwMSk7CisJZHJlbGUoZGRwMSk7CisJcmV0dXJu
IGVycm9yOworfQorCitpbnQKK3N5c19zeW1saW5rKGNvbnN0IGNoYXIgKm9sZHBhdGgsIGNvbnN0
IGNoYXIgKm5ld3BhdGgpCit7CisJc3RydWN0IHRhc2sJKnQgPSBtYWluX3Rhc2s7CisJaW50CQll
cnJvcjsKKwlzdGQ6OnVuaXF1ZV9wdHI8Y2hhciBbXT4gdXBfb3AgKG5ldyBjaGFyW1BBVEhfTUFY
XSk7CisJY2hhcgkJKm9wID0gdXBfb3AuZ2V0KCk7CisJc3RkOjp1bmlxdWVfcHRyPGNoYXIgW10+
IHVwX25wIChuZXcgY2hhcltQQVRIX01BWF0pOworCWNoYXIJCSpucCA9IHVwX25wLmdldCgpOwor
CXN0cnVjdCBkZW50cnkJKm5ld2RwOworCXN0cnVjdCBkZW50cnkJKm5ld2RpcmRwOworCWNoYXIJ
CSpuYW1lOworCisJaWYgKG9sZHBhdGggPT0gbnVsbHB0ciB8fCBuZXdwYXRoID09IG51bGxwdHIp
IHsKKwkJcmV0dXJuIChFRkFVTFQpOworCX0KKworCURQUklOVEYoVkZTREJfU1lTQ0FMTCwgKCJz
eXNfbGluazogb2xkcGF0aD0lcyBuZXdwYXRoPSVzXG4iLAorCQkJCW9sZHBhdGgsIG5ld3BhdGgp
KTsKKworCW5ld2RwCQk9IG51bGxwdHI7CisJbmV3ZGlyZHAJPSBudWxscHRyOworCisJZXJyb3Ig
PSB0YXNrX2NvbnYodCwgbmV3cGF0aCwgVldSSVRFLCBucCk7CisJaWYgKGVycm9yICE9IDApIHsK
KwkJcmV0dXJuIChlcnJvcik7CisJfQorCisJLyogcGFyZW50IGRpcmVjdG9yeSBmb3IgbmV3IHBh
dGggbXVzdCBleGlzdCAqLworCWlmICgoZXJyb3IgPSBsb29rdXAobnAsICZuZXdkaXJkcCwgJm5h
bWUpKSAhPSAwKSB7CisJCWVycm9yID0gRU5PRU5UOworCQlnb3RvIG91dDsKKwl9CisJdm5fbG9j
ayhuZXdkaXJkcC0+ZF92bm9kZSk7CisKKwkvKiBuZXdwYXRoIHNob3VsZCBub3QgYWxyZWFkeSBl
eGlzdCAqLworCWlmIChuYW1laV9sYXN0X25vZm9sbG93KG5wLCBuZXdkaXJkcCwgJm5ld2RwKSA9
PSAwKSB7CisJCWRyZWxlKG5ld2RwKTsKKwkJZXJyb3IgPSBFRVhJU1Q7CisJCWdvdG8gb3V0Owor
CX0KKworCS8qIGNoZWNrIGZvciB3cml0ZSBhY2Nlc3MgYXQgbmV3cGF0aCAqLworCWlmICgoZXJy
b3IgPSB2bl9hY2Nlc3MobmV3ZGlyZHAtPmRfdm5vZGUsIFZXUklURSkpICE9IDApIHsKKwkJZ290
byBvdXQ7CisJfQorCisJLyogb2xkcGF0aCBtYXkgbm90IGJlIGNvbnN0IGNoYXIgKiB0byBWT1Bf
U1lNTElOSyAtIG5lZWQgdG8gY29weSAqLworCXNpemVfdCB0b2NvcHk7CisJdG9jb3B5ID0gc3Ry
bGNweShvcCwgb2xkcGF0aCwgUEFUSF9NQVgpOworCWlmICh0b2NvcHkgPj0gUEFUSF9NQVggLSAx
KSB7CisJCWVycm9yID0gRU5BTUVUT09MT05HOworCQlnb3RvIG91dDsKKwl9CisJZXJyb3IgPSBW
T1BfU1lNTElOSyhuZXdkaXJkcC0+ZF92bm9kZSwgbmFtZSwgb3ApOworCitvdXQ6CisJaWYgKG5l
d2RpcmRwICE9IG51bGxwdHIpIHsKKwkJdm5fdW5sb2NrKG5ld2RpcmRwLT5kX3Zub2RlKTsKKwkJ
ZHJlbGUobmV3ZGlyZHApOworCX0KKworCXJldHVybiAoZXJyb3IpOworfQorCitpbnQKK3N5c19s
aW5rKGNoYXIgKm9sZHBhdGgsIGNoYXIgKm5ld3BhdGgpCit7CisJc3RydWN0IGRlbnRyeSAqb2xk
ZHAsICpuZXdkcCwgKm5ld2RpcmRwOworCXN0cnVjdCB2bm9kZSAqdnA7CisJY2hhciAqbmFtZTsK
KwlpbnQgZXJyb3I7CisKKwlEUFJJTlRGKFZGU0RCX1NZU0NBTEwsICgic3lzX2xpbms6IG9sZHBh
dGg9JXMgbmV3cGF0aD0lc1xuIiwKKwkJCQlvbGRwYXRoLCBuZXdwYXRoKSk7CisKKwkvKiBGaWxl
IGZyb20gb2xkcGF0aCBtdXN0IGV4aXN0ICovCisJaWYgKChlcnJvciA9IG5hbWVpKG9sZHBhdGgs
ICZvbGRkcCkpICE9IDApCisJCXJldHVybiBlcnJvcjsKKworCXZwID0gb2xkZHAtPmRfdm5vZGU7
CisJdm5fbG9jayh2cCk7CisKKwlpZiAodnAtPnZfdHlwZSA9PSBWRElSKSB7CisJCWVycm9yID0g
RVBFUk07CisJCWdvdG8gb3V0OworCX0KKworCS8qIElmIG5ld3BhdGggZXhpc3RzLCBpdCBzaG91
bGRuJ3QgYmUgb3ZlcndyaXR0ZW4gKi8KKwlpZiAoIW5hbWVpKG5ld3BhdGgsICZuZXdkcCkpIHsK
KwkJZXJyb3IgPSBFRVhJU1Q7CisJCWdvdG8gb3V0OworCX0KKworCS8qIEdldCBwb2ludGVyIHRv
IHRoZSBwYXJlbnQgZGVudHJ5IG9mIG5ld3BhdGggKi8KKwlpZiAoKGVycm9yID0gbG9va3VwKG5l
d3BhdGgsICZuZXdkaXJkcCwgJm5hbWUpKSAhPSAwKQorCQlnb3RvIG91dDsKKworCXZuX2xvY2so
bmV3ZGlyZHAtPmRfdm5vZGUpOworCisJLyogQm90aCBmaWxlcyBtdXN0IHJlc2lkZSBvbiB0aGUg
c2FtZSBtb3VudGVkIGZpbGUgc3lzdGVtICovCisJaWYgKG9sZGRwLT5kX21vdW50ICE9IG5ld2Rp
cmRwLT5kX21vdW50KSB7CisJCWVycm9yID0gRVhERVY7CisJCWdvdG8gb3V0MTsKKwl9CisKKwkv
KiBXcml0ZSBhY2Nlc3MgdG8gdGhlIGRpciBjb250YWluaW5nIG5ld3BhdGggaXMgcmVxdWlyZWQg
Ki8KKwlpZiAoKGVycm9yID0gdm5fYWNjZXNzKG5ld2RpcmRwLT5kX3Zub2RlLCBWV1JJVEUpKSAh
PSAwKQorCQlnb3RvIG91dDE7CisKKwkvKiBNYXAgbmV3cGF0aCBpbnRvIGRlbnRyeSBoYXNoIHdp
dGggdGhlIHNhbWUgdm5vZGUgYXMgb2xkcGF0aCAqLworCWlmICghKG5ld2RwID0gZGVudHJ5X2Fs
bG9jKG5ld2RpcmRwLCB2cCwgbmV3cGF0aCkpKSB7CisJCWVycm9yID0gRU5PTUVNOworCQlnb3Rv
IG91dDE7CisJfQorCisJZXJyb3IgPSBWT1BfTElOSyhuZXdkaXJkcC0+ZF92bm9kZSwgdnAsIG5h
bWUpOworIG91dDE6CisJdm5fdW5sb2NrKG5ld2RpcmRwLT5kX3Zub2RlKTsKKwlkcmVsZShuZXdk
aXJkcCk7Cisgb3V0OgorCXZuX3VubG9jayh2cCk7CisJZHJlbGUob2xkZHApOworCWRyZWxlKG5l
d2RwKTsKKwlyZXR1cm4gZXJyb3I7Cit9CisKK2ludAorc3lzX3VubGluayhjaGFyICpwYXRoKQor
eworCWNoYXIgKm5hbWU7CisJc3RydWN0IGRlbnRyeSAqZHAsICpkZHA7CisJc3RydWN0IHZub2Rl
ICp2cDsKKwlpbnQgZXJyb3I7CisKKwlEUFJJTlRGKFZGU0RCX1NZU0NBTEwsICgic3lzX3VubGlu
azogcGF0aD0lc1xuIiwgcGF0aCkpOworCisJZGRwICAgPSBudWxscHRyOworCWRwICAgID0gbnVs
bHB0cjsKKwl2cCAgICA9IG51bGxwdHI7CisKKwllcnJvciA9IGxvb2t1cChwYXRoLCAmZGRwLCAm
bmFtZSk7CisJaWYgKGVycm9yICE9IDApIHsKKwkJcmV0dXJuIChlcnJvcik7CisJfQorCisJZXJy
b3IgPSBuYW1laV9sYXN0X25vZm9sbG93KHBhdGgsIGRkcCwgJmRwKTsKKwlpZiAoZXJyb3IgIT0g
MCkgeworCQlnb3RvIG91dDsKKwl9CisKKwl2cCA9IGRwLT5kX3Zub2RlOworCXZuX2xvY2sodnAp
OworCWlmICh2cC0+dl90eXBlID09IFZESVIpIHsKKwkgICAgLy8gUG9zaXggc3BlY2lmaWVzIHRo
YXQgd2Ugc2hvdWxkIHJldHVybiBFUEVSTSBoZXJlLCBidXQgTGludXgKKwkgICAgLy8gYWN0dWFs
bHkgcmV0dXJucyBFSVNESVIuCisJCWVycm9yID0gRUlTRElSOworCQlnb3RvIG91dDsKKwl9CisJ
aWYgKHZwLT52X2ZsYWdzICYgVlJPT1QpIHsKKwkJZXJyb3IgPSBFQlVTWTsKKwkJZ290byBvdXQ7
CisJfQorCisJdm5fbG9jayhkZHAtPmRfdm5vZGUpOworCWlmICgoZXJyb3IgPSB2bl9hY2Nlc3Mo
ZGRwLT5kX3Zub2RlLCBWV1JJVEUpKSAhPSAwKSB7CisJICAgIHZuX3VubG9jayhkZHAtPmRfdm5v
ZGUpOworCSAgICBnb3RvIG91dDsKKwl9CisJZXJyb3IgPSBWT1BfUkVNT1ZFKGRkcC0+ZF92bm9k
ZSwgdnAsIG5hbWUpOworCXZuX3VubG9jayhkZHAtPmRfdm5vZGUpOworCisJdm5fdW5sb2NrKHZw
KTsKKwlkZW50cnlfcmVtb3ZlKGRwKTsKKwlkcmVsZShkZHApOworCWRyZWxlKGRwKTsKKwlyZXR1
cm4gZXJyb3I7Cisgb3V0OgorCWlmICh2cCAhPSBudWxscHRyKSB7CisJCXZuX3VubG9jayh2cCk7
CisJfQorCisJaWYgKGRwICE9IG51bGxwdHIpIHsKKwkJZHJlbGUoZHApOworCX0KKworCWlmIChk
ZHAgIT0gbnVsbHB0cikgeworCQlkcmVsZShkZHApOworCX0KKwlyZXR1cm4gZXJyb3I7Cit9CisK
K2ludAorc3lzX2FjY2VzcyhjaGFyICpwYXRoLCBpbnQgbW9kZSkKK3sKKwlzdHJ1Y3QgZGVudHJ5
ICpkcDsKKwlpbnQgZXJyb3IsIGZsYWdzOworCisJRFBSSU5URihWRlNEQl9TWVNDQUxMLCAoInN5
c19hY2Nlc3M6IHBhdGg9JXMgbW9kZT0leFxuIiwgcGF0aCwgbW9kZSkpOworCisJLyogSWYgRl9P
SyBpcyBzZXQsIHdlIHJldHVybiBoZXJlIGlmIGZpbGUgaXMgbm90IGZvdW5kLiAqLworCWVycm9y
ID0gbmFtZWkocGF0aCwgJmRwKTsKKwlpZiAoZXJyb3IpCisJCXJldHVybiBlcnJvcjsKKworCWZs
YWdzID0gMDsKKwlpZiAobW9kZSAmIFJfT0spCisJCWZsYWdzIHw9IFZSRUFEOworCWlmIChtb2Rl
ICYgV19PSykKKwkJZmxhZ3MgfD0gVldSSVRFOworCWlmIChtb2RlICYgWF9PSykKKwkJZmxhZ3Mg
fD0gVkVYRUM7CisKKwllcnJvciA9IHZuX2FjY2VzcyhkcC0+ZF92bm9kZSwgZmxhZ3MpOworCisJ
ZHJlbGUoZHApOworCXJldHVybiBlcnJvcjsKK30KKworaW50CitzeXNfc3RhdChjaGFyICpwYXRo
LCBzdHJ1Y3Qgc3RhdCAqc3QpCit7CisJRFBSSU5URihWRlNEQl9TWVNDQUxMLCAoInN5c19zdGF0
OiBwYXRoPSVzXG4iLCBwYXRoKSk7CisKKwl0cnkgeworCQlkZW50cnlfcmVmIGRwID0gbmFtZWko
cGF0aCk7CisJCWlmICghZHApIHsKKwkJCXJldHVybiBFTk9FTlQ7CisJCX0KKwkJcmV0dXJuIHZu
X3N0YXQoZHAtPmRfdm5vZGUsIHN0KTsKKwl9IGNhdGNoIChlcnJvciBlKSB7CisJCXJldHVybiBl
LmdldCgpOworCX0KK30KKworaW50IHN5c19sc3RhdChjaGFyICpwYXRoLCBzdHJ1Y3Qgc3RhdCAq
c3QpCit7CisJaW50ICAgICAgICAgICBlcnJvcjsKKwlzdHJ1Y3QgZGVudHJ5ICpkZHA7CisJY2hh
ciAgICAgICAgICAqbmFtZTsKKwlzdHJ1Y3QgZGVudHJ5ICpkcDsKKworCURQUklOVEYoVkZTREJf
U1lTQ0FMTCwgKCJzeXNfbHN0YXQ6IHBhdGg9JXNcbiIsIHBhdGgpKTsKKworCWVycm9yID0gbG9v
a3VwKHBhdGgsICZkZHAsICZuYW1lKTsKKwlpZiAoZXJyb3IpIHsKKwkJcmV0dXJuIChlcnJvcik7
CisJfQorCisJZXJyb3IgPSBuYW1laV9sYXN0X25vZm9sbG93KHBhdGgsIGRkcCwgJmRwKTsKKwlp
ZiAoZXJyb3IpIHsKKwkJZHJlbGUoZGRwKTsKKwkJcmV0dXJuIGVycm9yOworCX0KKworCWVycm9y
ID0gdm5fc3RhdChkcC0+ZF92bm9kZSwgc3QpOworCWRyZWxlKGRwKTsKKwlkcmVsZShkZHApOwor
CXJldHVybiBlcnJvcjsKK30KKworaW50CitzeXNfc3RhdGZzKGNoYXIgKnBhdGgsIHN0cnVjdCBz
dGF0ZnMgKmJ1ZikKK3sKKwltZW1zZXQoYnVmLCAwLCBzaXplb2YoKmJ1ZikpOworCXRyeSB7CisJ
CWRlbnRyeV9yZWYgZHAgPSBuYW1laShwYXRoKTsKKwkJaWYgKCFkcCkgeworCQkJcmV0dXJuIEVO
T0VOVDsKKwkJfQorCQlyZXR1cm4gVkZTX1NUQVRGUyhkcC0+ZF9tb3VudCwgYnVmKTsKKwl9IGNh
dGNoIChlcnJvciBlKSB7CisJCXJldHVybiBlLmdldCgpOworCX0KK30KKworaW50CitzeXNfZnN0
YXRmcyhzdHJ1Y3QgZmlsZSAqZnAsIHN0cnVjdCBzdGF0ZnMgKmJ1ZikKK3sKKwlzdHJ1Y3Qgdm5v
ZGUgKnZwOworCWludCBlcnJvciA9IDA7CisKKwlpZiAoIWZwLT5mX2RlbnRyeSkKKwkJcmV0dXJu
IEVCQURGOworCisJdnAgPSBmcC0+Zl9kZW50cnktPmRfdm5vZGU7CisJbWVtc2V0KGJ1ZiwgMCwg
c2l6ZW9mKCpidWYpKTsKKworCXZuX2xvY2sodnApOworCWVycm9yID0gVkZTX1NUQVRGUyh2cC0+
dl9tb3VudCwgYnVmKTsKKwl2bl91bmxvY2sodnApOworCisJcmV0dXJuIGVycm9yOworfQorCitp
bnQKK3N5c190cnVuY2F0ZShjaGFyICpwYXRoLCBvZmZfdCBsZW5ndGgpCit7CisJc3RydWN0IGRl
bnRyeSAqZHA7CisJaW50IGVycm9yOworCisJZXJyb3IgPSBuYW1laShwYXRoLCAmZHApOworCWlm
IChlcnJvcikKKwkJcmV0dXJuIGVycm9yOworCisJdm5fbG9jayhkcC0+ZF92bm9kZSk7CisJZXJy
b3IgPSBWT1BfVFJVTkNBVEUoZHAtPmRfdm5vZGUsIGxlbmd0aCk7CisJdm5fdW5sb2NrKGRwLT5k
X3Zub2RlKTsKKworCWRyZWxlKGRwKTsKKwlyZXR1cm4gZXJyb3I7Cit9CisKK2ludAorc3lzX2Z0
cnVuY2F0ZShzdHJ1Y3QgZmlsZSAqZnAsIG9mZl90IGxlbmd0aCkKK3sKKwlzdHJ1Y3Qgdm5vZGUg
KnZwOworCWludCBlcnJvcjsKKworCWlmICghZnAtPmZfZGVudHJ5KQorCQlyZXR1cm4gRUJBREY7
CisKKwl2cCA9IGZwLT5mX2RlbnRyeS0+ZF92bm9kZTsKKwl2bl9sb2NrKHZwKTsKKwllcnJvciA9
IFZPUF9UUlVOQ0FURSh2cCwgbGVuZ3RoKTsKKwl2bl91bmxvY2sodnApOworCisJcmV0dXJuIGVy
cm9yOworfQorCitpbnQKK3N5c19mY2hkaXIoc3RydWN0IGZpbGUgKmZwLCBjaGFyICpjd2QpCit7
CisJc3RydWN0IHZub2RlICpkdnA7CisKKwlpZiAoIWZwLT5mX2RlbnRyeSkKKwkJcmV0dXJuIEVC
QURGOworCisJZHZwID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOworCXZuX2xvY2soZHZwKTsKKwlp
ZiAoZHZwLT52X3R5cGUgIT0gVkRJUikgeworCQl2bl91bmxvY2soZHZwKTsKKwkJcmV0dXJuIEVC
QURGOworCX0KKwlzdHJsY3B5KGN3ZCwgZnAtPmZfZGVudHJ5LT5kX3BhdGgsIFBBVEhfTUFYKTsK
Kwl2bl91bmxvY2soZHZwKTsKKwlyZXR1cm4gMDsKK30KKworaW50CitzeXNfcmVhZGxpbmsoY2hh
ciAqcGF0aCwgY2hhciAqYnVmLCBzaXplX3QgYnVmc2l6ZSwgc3NpemVfdCAqc2l6ZSkKK3sKKwlp
bnQJCWVycm9yOworCXN0cnVjdCBkZW50cnkJKmRkcDsKKwljaGFyCQkqbmFtZTsKKwlzdHJ1Y3Qg
ZGVudHJ5CSpkcDsKKwlzdHJ1Y3Qgdm5vZGUJKnZwOworCXN0cnVjdCBpb3ZlYwl2ZWM7CisJc3Ry
dWN0IHVpbwl1aW87CisKKwkqc2l6ZSA9IDA7CisJZXJyb3IgPSBsb29rdXAocGF0aCwgJmRkcCwg
Jm5hbWUpOworCWlmIChlcnJvcikgeworCQlyZXR1cm4gKGVycm9yKTsKKwl9CisKKwllcnJvciA9
IG5hbWVpX2xhc3Rfbm9mb2xsb3cocGF0aCwgZGRwLCAmZHApOworCWlmIChlcnJvcikgeworCQlk
cmVsZShkZHApOworCQlyZXR1cm4gKGVycm9yKTsKKwl9CisKKwlpZiAoZHAtPmRfdm5vZGUtPnZf
dHlwZSAhPSBWTE5LKSB7CisJCWRyZWxlKGRwKTsKKwkJZHJlbGUoZGRwKTsKKwkJcmV0dXJuIChF
SU5WQUwpOworCX0KKwl2ZWMuaW92X2Jhc2UJPSBidWY7CisJdmVjLmlvdl9sZW4JPSBidWZzaXpl
OworCisJdWlvLnVpb19pb3YJPSAmdmVjOworCXVpby51aW9faW92Y250CT0gMTsKKwl1aW8udWlv
X29mZnNldAk9IDA7CisJdWlvLnVpb19yZXNpZAk9IGJ1ZnNpemU7CisJdWlvLnVpb19ydwk9IFVJ
T19SRUFEOworCisJdnAgPSBkcC0+ZF92bm9kZTsKKwl2bl9sb2NrKHZwKTsKKwllcnJvciA9IFZP
UF9SRUFETElOSyh2cCwgJnVpbyk7CisJdm5fdW5sb2NrKHZwKTsKKworCWRyZWxlKGRwKTsKKwlk
cmVsZShkZHApOworCisJaWYgKGVycm9yKSB7CisJCXJldHVybiAoZXJyb3IpOworCX0KKworCSpz
aXplID0gYnVmc2l6ZSAtIHVpby51aW9fcmVzaWQ7CisJcmV0dXJuICgwKTsKK30KKworLyoKKyAq
IENoZWNrIHRoZSB2YWxpZGl0eSBvZiB0aGUgbWVtYmVycyBvZiBhIHN0cnVjdCB0aW1ldmFsLgor
ICovCitzdGF0aWMgYm9vbCBpc190aW1ldmFsX3ZhbGlkKGNvbnN0IHN0cnVjdCB0aW1ldmFsICp0
aW1lKQoreworICAgIHJldHVybiAodGltZS0+dHZfc2VjID49IDApICYmCisgICAgICAgICAgICh0
aW1lLT50dl91c2VjID49IDAgJiYgdGltZS0+dHZfdXNlYyA8IDEwMDAwMDApOworfQorCisvKgor
ICogQ29udmVydCBhIHRpbWV2YWwgc3RydWN0IHRvIGEgdGltZXNwZWMgb25lLgorICovCitzdGF0
aWMgdm9pZCBjb252ZXJ0X3RpbWV2YWwoc3RydWN0IHRpbWVzcGVjICZ0bywgY29uc3Qgc3RydWN0
IHRpbWV2YWwgKmZyb20pCit7CisgICAgaWYgKGZyb20pIHsKKyAgICAgICAgdG8udHZfc2VjID0g
ZnJvbS0+dHZfc2VjOworICAgICAgICB0by50dl9uc2VjID0gZnJvbS0+dHZfdXNlYyAqIDEwMDA7
IC8vIENvbnZlcnQgbWljcm9zZWNvbmRzIHRvIG5hbm9zZWNvbmRzCisgICAgfSBlbHNlIHsKKyAg
ICAgICAgY2xvY2tfZ2V0dGltZShDTE9DS19SRUFMVElNRSwgJnRvKTsKKyAgICB9Cit9CisKK2lu
dAorc3lzX3V0aW1lcyhjaGFyICpwYXRoLCBjb25zdCBzdHJ1Y3QgdGltZXZhbCB0aW1lc1syXSwg
aW50IGZsYWdzKQoreworICAgIGludCBlcnJvcjsKKyAgICBzdHJ1Y3QgZGVudHJ5ICpkcDsKKyAg
ICBzdHJ1Y3QgdGltZXNwZWMgdGltZXNwZWNfdGltZXNbMl07CisKKyAgICBEUFJJTlRGKFZGU0RC
X1NZU0NBTEwsICgic3lzX3V0aW1lczogcGF0aD0lc1xuIiwgcGF0aCkpOworCisgICAgaWYgKHRp
bWVzICYmICghaXNfdGltZXZhbF92YWxpZCgmdGltZXNbMF0pIHx8ICFpc190aW1ldmFsX3ZhbGlk
KCZ0aW1lc1sxXSkpKQorICAgICAgICByZXR1cm4gRUlOVkFMOworCisgICAgLy8gQ29udmVydCBl
YWNoIGVsZW1lbnQgb2YgdGltZXZhbCBhcnJheSB0byB0aGUgdGltZXNwZWMgdHlwZQorICAgIGNv
bnZlcnRfdGltZXZhbCh0aW1lc3BlY190aW1lc1swXSwgdGltZXMgPyB0aW1lcyArIDAgOiBudWxs
cHRyKTsKKyAgICBjb252ZXJ0X3RpbWV2YWwodGltZXNwZWNfdGltZXNbMV0sIHRpbWVzID8gdGlt
ZXMgKyAxIDogbnVsbHB0cik7CisKKyAgICBpZiAoZmxhZ3MgJiBBVF9TWU1MSU5LX05PRk9MTE9X
KSB7CisgICAgICAgIHN0cnVjdCBkZW50cnkgKmRkcDsKKyAgICAgICAgZXJyb3IgPSBsb29rdXAo
cGF0aCwgJmRkcCwgbnVsbHB0cik7CisgICAgICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAg
cmV0dXJuIGVycm9yOworICAgICAgICB9CisKKyAgICAgICAgZXJyb3IgPSBuYW1laV9sYXN0X25v
Zm9sbG93KHBhdGgsIGRkcCwgJmRwKTsKKyAgICAgICAgaWYgKGRkcCAhPSBudWxscHRyKSB7Cisg
ICAgICAgICAgICBkcmVsZShkZHApOworICAgICAgICB9CisgICAgICAgIGlmIChlcnJvcikgewor
ICAgICAgICAgICAgcmV0dXJuIGVycm9yOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgZXJyb3IgPSBuYW1laShwYXRoLCAmZHApOworICAgICAgICBpZiAoZXJyb3IpCisgICAgICAg
ICAgICByZXR1cm4gZXJyb3I7CisgICAgfQorCisgICAgaWYgKGRwLT5kX21vdW50LT5tX2ZsYWdz
ICYgTU5UX1JET05MWSkgeworICAgICAgICBlcnJvciA9IEVST0ZTOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIGVycm9yID0gdm5fc2V0dGltZXMoZHAtPmRfdm5vZGUsIHRpbWVzcGVjX3RpbWVzKTsK
KyAgICB9CisKKyAgICBkcmVsZShkcCk7CisgICAgcmV0dXJuIGVycm9yOworfQorCisvKgorICog
Q2hlY2sgdGhlIHZhbGlkaXR5IG9mIG1lbWJlcnMgb2YgYSBzdHJ1Y3QgdGltZXNwZWMKKyAqLwor
c3RhdGljIGJvb2wgaXNfdGltZXNwZWNfdmFsaWQoY29uc3Qgc3RydWN0IHRpbWVzcGVjICZ0aW1l
KQoreworICAgIHJldHVybiAodGltZS50dl9zZWMgPj0gMCkgJiYKKwkgICAoKHRpbWUudHZfbnNl
YyA+PSAwICYmIHRpbWUudHZfbnNlYyA8PSA5OTk5OTk5OTkpIHx8CisJICAgIHRpbWUudHZfbnNl
YyA9PSBVVElNRV9OT1cgfHwKKwkgICAgdGltZS50dl9uc2VjID09IFVUSU1FX09NSVQpOworfQor
Cit2b2lkIGluaXRfdGltZXNwZWMoc3RydWN0IHRpbWVzcGVjICZfdGltZXMsIGNvbnN0IHN0cnVj
dCB0aW1lc3BlYyAqdGltZXMpCit7CisgICAgaWYgKHRpbWVzID09IG51bGxwdHIgfHwgdGltZXMt
PnR2X25zZWMgPT0gVVRJTUVfTk9XKSB7CisgICAgICAgIGNsb2NrX2dldHRpbWUoQ0xPQ0tfUkVB
TFRJTUUsICZfdGltZXMpOworICAgIH0gZWxzZSB7CisgICAgICAgIF90aW1lcy50dl9zZWMgPSB0
aW1lcy0+dHZfc2VjOworICAgICAgICBfdGltZXMudHZfbnNlYyA9IHRpbWVzLT50dl9uc2VjOwor
ICAgIH0KKyAgICByZXR1cm47Cit9CisKK2ludAorc3lzX3V0aW1lbnNhdChpbnQgZGlyZmQsIGNv
bnN0IGNoYXIgKnBhdGhuYW1lLCBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgdGltZXNbMl0sIGludCBm
bGFncykKK3sKKyAgICBpbnQgZXJyb3I7CisgICAgc3RkOjpzdHJpbmcgYXA7CisgICAgc3RydWN0
IHRpbWVzcGVjIHRpbWVzcGVjX3RpbWVzWzJdOworICAgIGV4dGVybiBzdHJ1Y3QgdGFzayAqbWFp
bl90YXNrOworICAgIHN0cnVjdCBkZW50cnkgKmRwOworCisgICAgLyogdXRpbWVuc2F0IHNob3Vs
ZCByZXR1cm4gRU5PRU5UIHdoZW4gcGF0aG5hbWUgaXMgZW1wdHkgKi8KKyAgICBpZihwYXRobmFt
ZSAmJiBwYXRobmFtZVswXSA9PSAwKQorICAgICAgICByZXR1cm4gRU5PRU5UOworCisgICAgaWYg
KGZsYWdzICYmICEoZmxhZ3MgJiBBVF9TWU1MSU5LX05PRk9MTE9XKSkKKyAgICAgICAgcmV0dXJu
IEVJTlZBTDsKKworICAgIGlmICh0aW1lcyAmJiAoIWlzX3RpbWVzcGVjX3ZhbGlkKHRpbWVzWzBd
KSB8fCAhaXNfdGltZXNwZWNfdmFsaWQodGltZXNbMV0pKSkKKyAgICAgICAgcmV0dXJuIEVJTlZB
TDsKKworICAgIGluaXRfdGltZXNwZWModGltZXNwZWNfdGltZXNbMF0sIHRpbWVzID8gdGltZXMg
KyAwIDogbnVsbHB0cik7CisgICAgaW5pdF90aW1lc3BlYyh0aW1lc3BlY190aW1lc1sxXSwgdGlt
ZXMgPyB0aW1lcyArIDEgOiBudWxscHRyKTsKKworICAgIGlmIChwYXRobmFtZSAmJiBwYXRobmFt
ZVswXSA9PSAnLycpIHsKKwlhcCA9IHBhdGhuYW1lOworICAgIH0gZWxzZSBpZiAoZGlyZmQgPT0g
QVRfRkRDV0QpIHsKKwlpZiAoIXBhdGhuYW1lKQorCSAgICByZXR1cm4gRUZBVUxUOworCWFwID0g
c3RkOjpzdHJpbmcobWFpbl90YXNrLT50X2N3ZCkgKyAiLyIgKyBwYXRobmFtZTsKKyAgICB9IGVs
c2UgeworICAgICAgICBzdHJ1Y3QgZmlsZSAqZnA7CisgICAgICAgIGZpbGVyZWYgZihmaWxlcmVm
X2Zyb21fZmQoZGlyZmQpKTsKKworICAgICAgICBpZiAoIWYpCisJICAgIHJldHVybiBFQkFERjsK
KworCWZwID0gZi5nZXQoKTsKKworCWlmKCFmcC0+Zl9kZW50cnkpCisJICAgIHJldHVybiBFQkFE
RjsKKworCWlmICghKGZwLT5mX2RlbnRyeS0+ZF92bm9kZS0+dl90eXBlICYgVkRJUikpCisJICAg
IHJldHVybiBFTk9URElSOworCisJaWYgKHBhdGhuYW1lKQorCSAgICBhcCA9IHN0ZDo6c3RyaW5n
KGZwLT5mX2RlbnRyeS0+ZF9wYXRoKSArICIvIiArIHBhdGhuYW1lOworCWVsc2UKKwkgICAgYXAg
PSBmcC0+Zl9kZW50cnktPmRfcGF0aDsKKworCWFwID0gc3RkOjpzdHJpbmcoZnAtPmZfZGVudHJ5
LT5kX21vdW50LT5tX3BhdGgpICsgIi8iICsgYXA7CisgICAgfQorCisgICAgLyogRklYTUU6IEFk
ZCBzdXBwb3J0IGZvciBBVF9TWU1MSU5LX05PRk9MTE9XICovCisKKyAgICBlcnJvciA9IG5hbWVp
KGFwLmNfc3RyKCksICZkcCk7CisKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIHJldHVybiBlcnJv
cjsKKworICAgIGlmIChkcC0+ZF9tb3VudC0+bV9mbGFncyAmIE1OVF9SRE9OTFkpIHsKKyAgICAg
ICAgZXJyb3IgPSBFUk9GUzsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAodm5fYWNjZXNzKGRw
LT5kX3Zub2RlLCBWV1JJVEUpKSB7CisgICAgICAgICAgICByZXR1cm4gRUFDQ0VTOworICAgICAg
ICB9CisJICAgIGlmICh0aW1lcyAmJgorICAgICAgICAgICAgICAgKHRpbWVzWzBdLnR2X25zZWMg
IT0gVVRJTUVfTk9XIHx8IHRpbWVzWzFdLnR2X25zZWMgIT0gVVRJTUVfTk9XKSAmJgorICAgICAg
ICAgICAgICAgKHRpbWVzWzBdLnR2X25zZWMgIT0gVVRJTUVfT01JVCB8fCB0aW1lc1sxXS50dl9u
c2VjICE9IFVUSU1FX09NSVQpICYmCisJICAgICAgICghKGRwLT5kX3Zub2RlLT52X21vZGUgJiB+
VkFQUEVORCkpKQorCSAgICAgICAgcmV0dXJuIEVQRVJNOworICAgICAgICBlcnJvciA9IHZuX3Nl
dHRpbWVzKGRwLT5kX3Zub2RlLCB0aW1lc3BlY190aW1lcyk7CisgICAgfQorCisgICAgZHJlbGUo
ZHApOworICAgIHJldHVybiBlcnJvcjsKK30KKworaW50CitzeXNfZnV0aW1lbnMoaW50IGZkLCBj
b25zdCBzdHJ1Y3QgdGltZXNwZWMgdGltZXNbMl0pCit7CisgICAgc3RydWN0IGZpbGUgKmZwOwor
CisgICAgZmlsZXJlZiBmKGZpbGVyZWZfZnJvbV9mZChmZCkpOworICAgIGlmICghZikKKyAgICAg
ICAgcmV0dXJuIEVCQURGOworCisgICAgZnAgPSBmLmdldCgpOworCisgICAgaWYgKCFmcC0+Zl9k
ZW50cnkpCisgICAgICAgIHJldHVybiBFQkFERjsKKworICAgIHN0ZDo6c3RyaW5nIHBhdGhuYW1l
ID0gZnAtPmZfZGVudHJ5LT5kX3BhdGg7CisgICAgYXV0byBlcnJvciA9IHN5c191dGltZW5zYXQo
QVRfRkRDV0QsIHBhdGhuYW1lLmNfc3RyKCksIHRpbWVzLCAwKTsKKyAgICByZXR1cm4gZXJyb3I7
Cit9CisKK2ludAorc3lzX2ZhbGxvY2F0ZShzdHJ1Y3QgZmlsZSAqZnAsIGludCBtb2RlLCBsb2Zm
X3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuKQoreworICAgIGludCBlcnJvcjsKKyAgICBzdHJ1Y3Qgdm5v
ZGUgKnZwOworCisgICAgRFBSSU5URihWRlNEQl9TWVNDQUxMLCAoInN5c19mYWxsb2NhdGU6IGZw
PSV4IiwgZnApKTsKKworICAgIGlmICghZnAtPmZfZGVudHJ5IHx8ICEoZnAtPmZfZmxhZ3MgJiBG
V1JJVEUpKSB7CisgICAgICAgIHJldHVybiBFQkFERjsKKyAgICB9CisKKyAgICBpZiAob2Zmc2V0
IDwgMCB8fCBsZW4gPD0gMCkgeworICAgICAgICByZXR1cm4gRUlOVkFMOworICAgIH0KKworICAg
IC8vIFN0cmFuZ2UsIGJ1dCB0aGF0J3Mgd2hhdCBMaW51eCByZXR1cm5zLgorICAgIGlmICgobW9k
ZSAmIEZBTExPQ19GTF9QVU5DSF9IT0xFKSAmJiAhKG1vZGUgJiBGQUxMT0NfRkxfS0VFUF9TSVpF
KSkgeworICAgICAgICByZXR1cm4gRU5PVFNVUDsKKyAgICB9CisKKyAgICB2cCA9IGZwLT5mX2Rl
bnRyeS0+ZF92bm9kZTsKKyAgICB2bl9sb2NrKHZwKTsKKworICAgIC8vIE5PVEU6IEl0J3Mgbm90
IGRldGVjdGVkIGhlcmUgd2hldGhlciBvciBub3QgdGhlIGRldmljZSB1bmRlcmx5aW5nCisgICAg
Ly8gdGhlIGZzIGlzIGEgYmxvY2sgZGV2aWNlLiBJdCdzIHVwIHRvIHRoZSBmcyBpdHNlbGYgdGVs
bCB1cyB3aGV0aGVyCisgICAgLy8gb3Igbm90IGZhbGxvY2F0ZSBpcyBzdXBwb3J0ZWQuIFNlZSBi
ZWxvdzoKKyAgICBpZiAodnAtPnZfdHlwZSAhPSBWUkVHICYmIHZwLT52X3R5cGUgIT0gVkRJUikg
eworICAgICAgICBlcnJvciA9IEVOT0RFVjsKKyAgICAgICAgZ290byByZXQ7CisgICAgfQorCisg
ICAgLy8gRU9QTk9UU1VQUCBoZXJlIG1lYW5zIHRoYXQgdGhlIHVuZGVybHlpbmcgZmlsZSBzeXN0
ZW0KKyAgICAvLyByZWZlcnJlZCBieSB2cCBkb2Vzbid0IHN1cHBvcnQgZmFsbG9jYXRlLgorICAg
IGlmICghdnAtPnZfb3AtPnZvcF9mYWxsb2NhdGUpIHsKKyAgICAgICAgZXJyb3IgPSBFT1BOT1RT
VVBQOworICAgICAgICBnb3RvIHJldDsKKyAgICB9CisKKyAgICBlcnJvciA9IFZPUF9GQUxMT0NB
VEUodnAsIG1vZGUsIG9mZnNldCwgbGVuKTsKK3JldDoKKyAgICB2bl91bmxvY2sodnApOworICAg
IHJldHVybiBlcnJvcjsKK30KKworaW50CitzeXNfY2htb2QoY29uc3QgY2hhciAqcGF0aCwgbW9k
ZV90IG1vZGUpCit7CisgICAgaW50IGVycm9yOworICAgIHN0cnVjdCBkZW50cnkgKmRwOworICAg
IERQUklOVEYoVkZTREJfU1lTQ0FMTCwgKCJzeXNfY2htb2Q6IHBhdGg9JXNcbiIsIHBhdGgpKTsK
KyAgICBlcnJvciA9IG5hbWVpKHBhdGgsICZkcCk7CisgICAgaWYgKGVycm9yKQorICAgICAgICBy
ZXR1cm4gZXJyb3I7CisgICAgaWYgKGRwLT5kX21vdW50LT5tX2ZsYWdzICYgTU5UX1JET05MWSkg
eworICAgICAgICBlcnJvciA9IEVST0ZTOworICAgIH0gZWxzZSB7CisgICAgICAgIGVycm9yID0g
dm5fc2V0bW9kZShkcC0+ZF92bm9kZSwgbW9kZSk7CisgICAgfQorICAgIGRyZWxlKGRwKTsKKyAg
ICByZXR1cm4gZXJyb3I7Cit9CisKK2ludAorc3lzX2ZjaG1vZChpbnQgZmQsIG1vZGVfdCBtb2Rl
KQoreworICAgIGZpbGVyZWYgZihmaWxlcmVmX2Zyb21fZmQoZmQpKTsKKyAgICBpZiAoIWYpCisg
ICAgICAgIHJldHVybiBFQkFERjsKKyAgICAvLyBQb3NpeCBpcyBhbWJpdmFsZW50IG9uIHdoYXQg
ZmNobW9kKCkgc2hvdWxkIGRvIG9uIGFuIGZkIHRoYXQgZG9lcyBub3QKKyAgICAvLyByZWZlciB0
byBhIHJlYWwgZmlsZS4gSXQgc3VnZ2VzdHMgYW4gaW1wbGVtZW50YXRpb24gbWF5IChidXQgbm90
IG11c3QpCisgICAgLy8gZmFpbCBFSU5WQUwgb24gYSBwaXBlLCBjYW4gYmVoYXZlIGluIGFuICJ1
bnNwZWNpZmllZCIgbWFubmVyIG9uIGEKKyAgICAvLyBzb2NrZXQsIGFuZCBmb3IgYSBTVFJFQU0s
IGl0IG11c3Qgc3VjY2VlZCBhbmQgZG8gbm90aGluZy4gTGludXggc2VlbXMKKyAgICAvLyB0byBq
dXN0IGRvIHRoZSBsYXN0IHRoaW5nIChkbyBub3RoaW5nIGFuZCBzdWNjZWVkKS4KKyAgICBpZiAo
IWYtPmZfZGVudHJ5KSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBpZiAoZi0+Zl9k
ZW50cnktPmRfbW91bnQtPm1fZmxhZ3MgJiBNTlRfUkRPTkxZKSB7CisgICAgICAgIHJldHVybiBF
Uk9GUzsKKyAgICB9IGVsc2UgeworICAgICAgICByZXR1cm4gdm5fc2V0bW9kZShmLT5mX2RlbnRy
eS0+ZF92bm9kZSwgbW9kZSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvdGFz
ay5jIGIvbGliL3Zmc2NvcmUvdGFzay5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwLi43YTM1NTAzNAotLS0gL2Rldi9udWxsCisrKyBiL2xpYi92ZnNjb3JlL3Rhc2suYwpAQCAt
MCwwICsxLDE2NyBAQAorLyotCisgKiBDb3B5cmlnaHQgKGMpIDIwMDcsIEtvaHN1a2UgT2h0YW5p
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9m
IHRoZSBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBhbnkgY28tY29udHJpYnV0b3JzCisgKiAgICBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRo
aXMgc29mdHdhcmUKKyAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhP
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisK
Ky8qCisgKiB2ZnNfdGFzay5jIC0gUm91dGluZXMgdG8gbWFuYWdlIHRoZSBwZXIgdGFzayBkYXRh
LgorICovCisKKworI2luY2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2lu
Y2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4K
KworI2luY2x1ZGUgPG9zdi9wcmV4Lmg+CisjaW5jbHVkZSAidmZzLmgiCisKKy8qCisgKiBBbGxv
Y2F0ZSBuZXcgdGFzay4KKyAqLworaW50Cit0YXNrX2FsbG9jKHN0cnVjdCB0YXNrICoqcHQpCit7
CisJc3RydWN0IHRhc2sgKnQ7CisKKyAgICAvLyBGSVhNRTogd2hlcmUgZG8gd2UgZnJlZSB0YXNr
ID8KKwlpZiAoISh0ID0gbmV3IHRhc2spKQorCQlyZXR1cm4gRU5PTUVNOworCW1lbXNldCh0LCAw
LCBzaXplb2Yoc3RydWN0IHRhc2spKTsKKwlzdHJsY3B5KHQtPnRfY3dkLCAiLyIsIHNpemVvZih0
LT50X2N3ZCkpOworCisJKnB0ID0gdDsKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIENvbnZlcnQg
dG8gZnVsbCBwYXRoIGZyb20gdGhlIGN3ZCBvZiB0YXNrIGFuZCBwYXRoLgorICogQHdkOiAgIHdv
cmtpbmcgZGlyZWN0b3J5CisgKiBAcGF0aDogdGFyZ2V0IHBhdGgKKyAqIEBmdWxsOiBmdWxsIHBh
dGggdG8gYmUgcmV0dXJuZWQKKyAqLworaW50CitwYXRoX2NvbnYoY2hhciAqd2QsIGNvbnN0IGNo
YXIgKmNwYXRoLCBjaGFyICpmdWxsKQoreworCWNoYXIgcGF0aFtQQVRIX01BWF07CisJY2hhciAq
c3JjLCAqdGd0LCAqcCwgKmVuZDsKKwlzaXplX3QgbGVuID0gMDsKKworCXN0cmxjcHkocGF0aCwg
Y3BhdGgsIFBBVEhfTUFYKTsKKwlwYXRoW1BBVEhfTUFYIC0gMV0gPSAnXDAnOworCisJbGVuID0g
c3RybGVuKHBhdGgpOworCWlmIChsZW4gPj0gUEFUSF9NQVgpCisJCXJldHVybiBFTkFNRVRPT0xP
Tkc7CisJaWYgKHN0cmxlbih3ZCkgKyBsZW4gPj0gUEFUSF9NQVgpCisJCXJldHVybiBFTkFNRVRP
T0xPTkc7CisJc3JjID0gcGF0aDsKKwl0Z3QgPSBmdWxsOworCWVuZCA9IHNyYyArIGxlbjsKKwlp
ZiAocGF0aFswXSA9PSAnLycpIHsKKwkJKnRndCsrID0gKnNyYysrOworCQlsZW4gPSAxOworCX0g
ZWxzZSB7CisJCXN0cmxjcHkoZnVsbCwgd2QsIFBBVEhfTUFYKTsKKwkJbGVuID0gc3RybGVuKHdk
KTsKKwkJdGd0ICs9IGxlbjsKKwkJaWYgKGxlbiA+IDEgJiYgcGF0aFswXSAhPSAnLicpIHsKKwkJ
CSp0Z3QgPSAnLyc7CisJCQl0Z3QrKzsKKwkJCWxlbisrOworCQl9CisJfQorCXdoaWxlICgqc3Jj
KSB7CisJCXAgPSBzcmM7CisJCXdoaWxlICgqcCAhPSAnLycgJiYgKnAgIT0gJ1wwJykKKwkJCXAr
KzsKKwkJKnAgPSAnXDAnOworCQlpZiAoIXN0cmNtcChzcmMsICIuLiIpKSB7CisJCQlpZiAobGVu
ID49IDIpIHsKKwkJCQlsZW4gLT0gMjsKKwkJCQl0Z3QgLT0gMjsJLyogc2tpcCBwcmV2aW91cyAn
LycgKi8KKwkJCQl3aGlsZSAoKnRndCAhPSAnLycpIHsKKwkJCQkJdGd0LS07CisJCQkJCWxlbi0t
OworCQkJCX0KKwkJCQlpZiAobGVuID09IDApIHsKKwkJCQkJdGd0Kys7CisJCQkJCWxlbisrOwor
CQkJCX0KKwkJCX0KKwkJfSBlbHNlIGlmICghc3RyY21wKHNyYywgIi4iKSkgeworCQkJLyogSWdu
b3JlICIuIiAqLworCQl9IGVsc2UgeworCQkJd2hpbGUgKCpzcmMgIT0gJ1wwJykgeworCQkJCSp0
Z3QrKyA9ICpzcmMrKzsKKwkJCQlsZW4rKzsKKwkJCX0KKwkJfQorCQlpZiAocCA9PSBlbmQpCisJ
CQlicmVhazsKKwkJaWYgKGxlbiA+IDAgJiYgKih0Z3QgLSAxKSAhPSAnLycpIHsKKwkJCSp0Z3Qr
KyA9ICcvJzsKKwkJCWxlbisrOworCQl9CisJCXNyYyA9IHAgKyAxOworCX0KKwkqdGd0ID0gJ1ww
JzsKKworCXJldHVybiAoMCk7Cit9CisKKy8qCisgKiBDb252ZXJ0IHRvIGZ1bGwgcGF0aCBmcm9t
IHRoZSBjd2Qgb2YgdGFzayBhbmQgcGF0aC4KKyAqIEB0OiAgICB0YXNrIHN0cnVjdHVyZQorICog
QHBhdGg6IHRhcmdldCBwYXRoCisgKiBAZnVsbDogZnVsbCBwYXRoIHRvIGJlIHJldHVybmVkCisg
KiBAYWNjOiBhY2Nlc3MgbW9kZQorICovCitpbnQKK3Rhc2tfY29udihzdHJ1Y3QgdGFzayAqdCwg
Y29uc3QgY2hhciAqY3BhdGgsIGludCBhY2MsIGNoYXIgKmZ1bGwpCit7CisJaW50IHJjOworCisJ
cmMgPSBwYXRoX2NvbnYodC0+dF9jd2QsIGNwYXRoLCBmdWxsKTsKKwlpZiAocmMgIT0gMCkgewor
CQlyZXR1cm4gKHJjKTsKKwl9CisKKwkvKiBDaGVjayBpZiB0aGUgY2xpZW50IHRhc2sgaGFzIHJl
cXVpcmVkIHBlcm1pc3Npb24gKi8KKwlyZXR1cm4gKDApOyAvL3NlY19maWxlX3Blcm1pc3Npb24o
dC0+dF90YXNraWQsIGZ1bGwsIGFjYyk7Cit9CisKKy8qCisgKiBTYWZlIGNvcHlpbmcgZnVuY3Rp
b24gdGhhdCBjaGVja3MgZm9yIG92ZXJmbG93LgorICovCitpbnQgdmZzX2RuYW1lX2NvcHkoY2hh
ciAqZGVzdCwgY29uc3QgY2hhciAqc3JjLCBzaXplX3Qgc2l6ZSkKK3sKKyAgICBpZiAoc3RybGNw
eShkZXN0LCBzcmMsIHNpemUpID49IHNpemUpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0K
KyAgICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3Zmcy5oIGIvbGliL3Zm
c2NvcmUvdmZzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLmQ4NmVmOTU3
Ci0tLSAvZGV2L251bGwKKysrIGIvbGliL3Zmc2NvcmUvdmZzLmgKQEAgLTAsMCArMSwxODkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDUtMjAwNywgS29oc3VrZSBPaHRhbmkKKyAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBh
dXRob3Igbm9yIHRoZSBuYW1lcyBvZiBhbnkgY28tY29udHJpYnV0b3JzCisgKiAgICBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29m
dHdhcmUKKyAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgX1ZGU19ICisjZGVmaW5lIF9WRlNfSAorCisjaW5jbHVkZSA8c3lzL2NkZWZzLmg+CisjaW5j
bHVkZSA8YXNzZXJ0Lmg+CisjaW5jbHVkZSA8ZGlyZW50Lmg+CisjaW5jbHVkZSA8bGltaXRzLmg+
CisKKyNpbmNsdWRlIDxvc3YvcHJleC5oPgorI2luY2x1ZGUgPG9zdi9maWxlLmg+CisjaW5jbHVk
ZSA8b3N2L21vdW50Lmg+CisjaW5jbHVkZSA8b3N2L3Zub2RlLmg+CisjaW5jbHVkZSA8b3N2L2Rl
bnRyeS5oPgorI2luY2x1ZGUgPG9zdi9lcnJvci5oPgorCisvKgorICogSW1wb3J0IHZub2RlIGF0
dHJpYnV0ZXMgZmxhZ3MKKyAqLworI2luY2x1ZGUgPG9zdi92bm9kZV9hdHRyLmg+CisKKy8qICNk
ZWZpbmUgREVCVUdfVkZTIDEgKi8KKworLyoKKyAqIFR1bmFibGUgcGFyYW1ldGVycworICovCisj
ZGVmaW5lIEZTTUFYTkFNRVMJMTYJCS8qIG1heCBsZW5ndGggb2YgJ2ZpbGUgc3lzdGVtJyBuYW1l
ICovCisKKyNpZmRlZiBERUJVR19WRlMKKyNpbmNsdWRlIDxvc3YvZGVidWcuaD4KKworZXh0ZXJu
IGludCB2ZnNfZGVidWc7CisKKyNkZWZpbmUJVkZTREJfQ09SRQkweDAwMDAwMDAxCisjZGVmaW5l
CVZGU0RCX1NZU0NBTEwJMHgwMDAwMDAwMgorI2RlZmluZQlWRlNEQl9WTk9ERQkweDAwMDAwMDA0
CisjZGVmaW5lCVZGU0RCX0JJTwkweDAwMDAwMDA4CisjZGVmaW5lCVZGU0RCX0NBUAkweDAwMDAw
MDEwCisKKyNkZWZpbmUgVkZTREJfRkxBR1MJMHgwMDAwMDAxMworCisjZGVmaW5lCURQUklOVEYo
X20sWCkJaWYgKHZmc19kZWJ1ZyAmIChfbSkpIGtwcmludGYgWAorI2Vsc2UKKyNkZWZpbmUJRFBS
SU5URihfbSwgWCkKKyNlbmRpZgorCisjZGVmaW5lIEFTU0VSVChlKQlhc3NlcnQoZSkKKworI2Rl
ZmluZSBPUEVOX01BWAkyNTYKKworLyoKKyAqIHBlciB0YXNrIGRhdGEKKyAqLworc3RydWN0IHRh
c2sgeworCWNoYXIgCSAgICB0X2N3ZFtQQVRIX01BWF07CS8qIGN1cnJlbnQgd29ya2luZyBkaXJl
Y3RvcnkgKi8KKwlzdHJ1Y3QgZmlsZSAqdF9jd2RmcDsJCS8qIGRpcmVjdG9yeSBmb3IgY3dkICov
Cit9OworCitleHRlcm4gY29uc3Qgc3RydWN0IHZmc3N3IHZmc3N3W107CisKK19fQkVHSU5fREVD
TFMKK2ludAkgc3lzX29wZW4oY2hhciAqcGF0aCwgaW50IGZsYWdzLCBtb2RlX3QgbW9kZSwgc3Ry
dWN0IGZpbGUgKipmcCk7CitpbnQJIHN5c19yZWFkKHN0cnVjdCBmaWxlICpmcCwgY29uc3Qgc3Ry
dWN0IGlvdmVjICppb3YsIHNpemVfdCBuaW92LAorCQlvZmZfdCBvZmZzZXQsIHNpemVfdCAqY291
bnQpOworaW50CSBzeXNfd3JpdGUoc3RydWN0IGZpbGUgKmZwLCBjb25zdCBzdHJ1Y3QgaW92ZWMg
Kmlvdiwgc2l6ZV90IG5pb3YsCisJCW9mZl90IG9mZnNldCwgc2l6ZV90ICpjb3VudCk7CitpbnQJ
IHN5c19sc2VlayhzdHJ1Y3QgZmlsZSAqZnAsIG9mZl90IG9mZiwgaW50IHR5cGUsIG9mZl90ICog
Y3VyX29mZik7CitpbnQJIHN5c19pb2N0bChzdHJ1Y3QgZmlsZSAqZnAsIHVfbG9uZyByZXF1ZXN0
LCB2b2lkICpidWYpOworaW50CSBzeXNfZnN0YXQoc3RydWN0IGZpbGUgKmZwLCBzdHJ1Y3Qgc3Rh
dCAqc3QpOworaW50CSBzeXNfZnN0YXRmcyhzdHJ1Y3QgZmlsZSAqZnAsIHN0cnVjdCBzdGF0ZnMg
KmJ1Zik7CitpbnQJIHN5c19mc3luYyhzdHJ1Y3QgZmlsZSAqZnApOworaW50CSBzeXNfZnRydW5j
YXRlKHN0cnVjdCBmaWxlICpmcCwgb2ZmX3QgbGVuZ3RoKTsKKworaW50CSBzeXNfcmVhZGRpcihz
dHJ1Y3QgZmlsZSAqZnAsIHN0cnVjdCBkaXJlbnQgKmRpcmVudCk7CitpbnQJIHN5c19yZXdpbmRk
aXIoc3RydWN0IGZpbGUgKmZwKTsKK2ludAkgc3lzX3NlZWtkaXIoc3RydWN0IGZpbGUgKmZwLCBs
b25nIGxvYyk7CitpbnQJIHN5c190ZWxsZGlyKHN0cnVjdCBmaWxlICpmcCwgbG9uZyAqbG9jKTsK
K2ludAkgc3lzX2ZjaGRpcihzdHJ1Y3QgZmlsZSAqZnAsIGNoYXIgKnBhdGgpOworCitpbnQJIHN5
c19ta2RpcihjaGFyICpwYXRoLCBtb2RlX3QgbW9kZSk7CitpbnQJIHN5c19ybWRpcihjaGFyICpw
YXRoKTsKK2ludAkgc3lzX21rbm9kKGNoYXIgKnBhdGgsIG1vZGVfdCBtb2RlKTsKK2ludAkgc3lz
X3JlbmFtZShjaGFyICpzcmMsIGNoYXIgKmRlc3QpOworaW50CSBzeXNfbGluayhjaGFyICpvbGRw
YXRoLCBjaGFyICpuZXdwYXRoKTsKK2ludAkgc3lzX3VubGluayhjaGFyICpwYXRoKTsKK2ludAkg
c3lzX3N5bWxpbmsoY29uc3QgY2hhciAqb2xkcGF0aCwgY29uc3QgY2hhciAqbmV3cGF0aCk7Citp
bnQJIHN5c19hY2Nlc3MoY2hhciAqcGF0aCwgaW50IG1vZGUpOworaW50CSBzeXNfc3RhdChjaGFy
ICpwYXRoLCBzdHJ1Y3Qgc3RhdCAqc3QpOworaW50CSBzeXNfbHN0YXQoY2hhciAqcGF0aCwgc3Ry
dWN0IHN0YXQgKnN0KTsKK2ludAkgc3lzX3N0YXRmcyhjaGFyICpwYXRoLCBzdHJ1Y3Qgc3RhdGZz
ICpidWYpOworaW50CSBzeXNfdHJ1bmNhdGUoY2hhciAqcGF0aCwgb2ZmX3QgbGVuZ3RoKTsKK2lu
dAkgc3lzX3JlYWRsaW5rKGNoYXIgKnBhdGgsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnNpemUsIHNz
aXplX3QgKnNpemUpOworaW50ICBzeXNfdXRpbWVzKGNoYXIgKnBhdGgsIGNvbnN0IHN0cnVjdCB0
aW1ldmFsIHRpbWVzWzJdLCBpbnQgZmxhZ3MpOworaW50ICBzeXNfdXRpbWVuc2F0KGludCBkaXJm
ZCwgY29uc3QgY2hhciAqcGF0aG5hbWUsCisgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0
IHRpbWVzcGVjIHRpbWVzWzJdLCBpbnQgZmxhZ3MpOworaW50ICBzeXNfZnV0aW1lbnMoaW50IGZk
LCBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgdGltZXNbMl0pOworaW50ICBzeXNfZmFsbG9jYXRlKHN0
cnVjdCBmaWxlICpmcCwgaW50IG1vZGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4pOworCitp
bnQJIHN5c19tb3VudChjb25zdCBjaGFyICpkZXYsIGNvbnN0IGNoYXIgKmRpciwgY29uc3QgY2hh
ciAqZnNuYW1lLCBpbnQgZmxhZ3MsIGNvbnN0IHZvaWQgKmRhdGEpOworaW50CSBzeXNfdW1vdW50
Mihjb25zdCBjaGFyICpwYXRoLCBpbnQgZmxhZ3MpOworaW50CSBzeXNfdW1vdW50KGNvbnN0IGNo
YXIgKnBhdGgpOworaW50CSBzeXNfcGl2b3Rfcm9vdChjb25zdCBjaGFyICpuZXdfcm9vdCwgY29u
c3QgY2hhciAqb2xkX3B1dCk7CitpbnQJIHN5c19zeW5jKHZvaWQpOworaW50CSBzeXNfY2htb2Qo
Y29uc3QgY2hhciAqcGF0aCwgbW9kZV90IG1vZGUpOworaW50CSBzeXNfZmNobW9kKGludCBmZCwg
bW9kZV90IG1vZGUpOworCisKK2ludAkgdGFza19hbGxvYyhzdHJ1Y3QgdGFzayAqKnB0KTsKK2lu
dAkgdGFza19jb252KHN0cnVjdCB0YXNrICp0LCBjb25zdCBjaGFyICpwYXRoLCBpbnQgbW9kZSwg
Y2hhciAqZnVsbCk7CitpbnQJIHBhdGhfY29udihjaGFyICp3ZCwgY29uc3QgY2hhciAqY3BhdGgs
IGNoYXIgKmZ1bGwpOworCisvL2ludAkgc2VjX2ZpbGVfcGVybWlzc2lvbih0YXNrX3QgdGFzaywg
Y2hhciAqcGF0aCwgaW50IG1vZGUpOworaW50CSBzZWNfdm5vZGVfcGVybWlzc2lvbihjaGFyICpw
YXRoKTsKKworaW50ICAgICBuYW1laShjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3QgZGVudHJ5ICoq
ZHBwKTsKK2ludAkgbmFtZWlfbGFzdF9ub2ZvbGxvdyhjaGFyICpwYXRoLCBzdHJ1Y3QgZGVudHJ5
ICpkZHAsIHN0cnVjdCBkZW50cnkgKipkcCk7CitpbnQJIGxvb2t1cChjaGFyICpwYXRoLCBzdHJ1
Y3QgZGVudHJ5ICoqZHBwLCBjaGFyICoqbmFtZSk7Cit2b2lkCSB2bm9kZV9pbml0KHZvaWQpOwor
dm9pZAkgbG9va3VwX2luaXQodm9pZCk7CisKK2ludCAgICAgdmZzX2ZpbmRyb290KGNvbnN0IGNo
YXIgKnBhdGgsIHN0cnVjdCBtb3VudCAqKm1wLCBjaGFyICoqcm9vdCk7CitpbnQJIHZmc19kbmFt
ZV9jb3B5KGNoYXIgKmRlc3QsIGNvbnN0IGNoYXIgKnNyYywgc2l6ZV90IHNpemUpOworCitpbnQJ
IGZzX25vb3Aodm9pZCk7CisKK3N0cnVjdCBkZW50cnkgKmRlbnRyeV9hbGxvYyhzdHJ1Y3QgZGVu
dHJ5ICpwYXJlbnRfZHAsIHN0cnVjdCB2bm9kZSAqdnAsIGNvbnN0IGNoYXIgKnBhdGgpOworc3Ry
dWN0IGRlbnRyeSAqZGVudHJ5X2xvb2t1cChzdHJ1Y3QgbW91bnQgKm1wLCBjaGFyICpwYXRoKTsK
K3ZvaWQgZGVudHJ5X21vdmUoc3RydWN0IGRlbnRyeSAqZHAsIHN0cnVjdCBkZW50cnkgKnBhcmVu
dF9kcCwgY2hhciAqcGF0aCk7Cit2b2lkIGRlbnRyeV9yZW1vdmUoc3RydWN0IGRlbnRyeSAqZHAp
Owordm9pZCBkcmVmKHN0cnVjdCBkZW50cnkgKmRwKTsKK3ZvaWQgZHJlbGUoc3RydWN0IGRlbnRy
eSAqZHApOwordm9pZCBkZW50cnlfaW5pdCh2b2lkKTsKKworI2lmZGVmIERFQlVHX1ZGUwordm9p
ZAkgdm5vZGVfZHVtcCh2b2lkKTsKK3ZvaWQJIG1vdW50X2R1bXAodm9pZCk7CisjZW5kaWYKKwor
X19FTkRfREVDTFMKKworI2lmZGVmIF9fY3BsdXNwbHVzCisKKy8vIENvbnZlcnQgYSBwYXRoIHRv
IGEgZGVudHJ5X3JlZi4gIFJldHVybnMgYW4gZW1wdHkKKy8vIHJlZmVyZW5jZSBpZiBub3QgZm91
bmQgKEVOT0VOVCkgZm9yIGVmZmljaWVuY3ksIHRocm93cworLy8gYW4gZXJyb3Igb24gb3RoZXIg
ZXJyb3JzLgoraW5saW5lIGRlbnRyeV9yZWYgbmFtZWkoY2hhciogcGF0aCkKK3sKKwlkZW50cnkq
IGRwOworCWF1dG8gZXJyID0gbmFtZWkocGF0aCwgJmRwKTsKKwlpZiAoZXJyID09IEVOT0VOVCkg
eworCQlyZXR1cm4gZGVudHJ5X3JlZigpOworCX0gZWxzZSBpZiAoZXJyKSB7CisJCXRocm93IG1h
a2VfZXJyb3IoZXJyKTsKKwl9IGVsc2UgeworCQlyZXR1cm4gZGVudHJ5X3JlZihkcCwgZmFsc2Up
OworCX0KK30KKworI2VuZGlmCisKKyNlbmRpZiAvKiAhX1ZGU19IICovCmRpZmYgLS1naXQgYS9s
aWIvdmZzY29yZS92bm9kZS5jIGIvbGliL3Zmc2NvcmUvdm5vZGUuYwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMC4uYTI5MjM0NGYKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvdmZz
Y29yZS92bm9kZS5jCkBAIC0wLDAgKzEsNTIyIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA1
LTIwMDgsIEtvaHN1a2UgT2h0YW5pCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgYW55
IGNvLWNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCisgKiAgICB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICog
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAq
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
CisgKiBTVUNIIERBTUFHRS4KKyAqLworCisvKgorICogdmZzX3Zub2RlLmMgLSB2bm9kZSBzZXJ2
aWNlCisgKi8KKworI2luY2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2lu
Y2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+
CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorCisjaW5jbHVkZSA8
b3N2L3ByZXguaD4KKyNpbmNsdWRlIDxvc3Yvdm5vZGUuaD4KKyNpbmNsdWRlICJ2ZnMuaCIKKwor
ZW51bSB2dHlwZSBpZnRvdnRfdGFiWzE2XSA9IHsKKwlWTk9OLCBWRklGTywgVkNIUiwgVk5PTiwg
VkRJUiwgVk5PTiwgVkJMSywgVk5PTiwKKwlWUkVHLCBWTk9OLCBWTE5LLCBWTk9OLCBWU09DSywg
Vk5PTiwgVk5PTiwgVkJBRCwKK307CitpbnQgdnR0b2lmX3RhYlsxMF0gPSB7CisJMCwgU19JRlJF
RywgU19JRkRJUiwgU19JRkJMSywgU19JRkNIUiwgU19JRkxOSywKKwlTX0lGU09DSywgU19JRklG
TywgU19JRk1ULCBTX0lGTVQKK307CisKKy8qCisgKiBNZW1vOgorICoKKyAqIEZ1bmN0aW9uICAg
UmVmIGNvdW50IExvY2sKKyAqIC0tLS0tLS0tLS0gLS0tLS0tLS0tIC0tLS0tLS0tLS0KKyAqIHZu
X2xvY2sgICAgICogICAgICAgIExvY2sKKyAqIHZuX3VubG9jayAgICogICAgICAgIFVubG9jawor
ICogdmdldCAgICAgICAgMSAgICAgICAgTG9jaworICogdnB1dCAgICAgICAtMSAgICAgICAgVW5s
b2NrCisgKiB2cmVmICAgICAgICsxICAgICAgICAqCisgKiB2cmVsZSAgICAgIC0xICAgICAgICAq
CisgKi8KKworI2RlZmluZSBWTk9ERV9CVUNLRVRTIDMyCQkvKiBzaXplIG9mIHZub2RlIGhhc2gg
dGFibGUgKi8KKworLyoKKyAqIHZub2RlIHRhYmxlLgorICogQWxsIGFjdGl2ZSAob3BlbmVkKSB2
bm9kZXMgYXJlIHN0b3JlZCBvbiB0aGlzIGhhc2ggdGFibGUuCisgKiBUaGV5IGNhbiBiZSBhY2Nl
c3NlZCBieSBpdHMgcGF0aCBuYW1lLgorICovCitzdGF0aWMgTElTVF9IRUFEKHZub2RlX2hhc2hf
aGVhZCwgdm5vZGUpIHZub2RlX3RhYmxlW1ZOT0RFX0JVQ0tFVFNdOworCisvKgorICogR2xvYmFs
IGxvY2sgdG8gYWNjZXNzIGFsbCB2bm9kZXMgYW5kIHZub2RlIHRhYmxlLgorICogSWYgYSB2bm9k
ZSBpcyBhbHJlYWR5IGxvY2tlZCwgdGhlcmUgaXMgbm8gbmVlZCB0bworICogbG9jayB0aGlzIGds
b2JhbCBsb2NrIHRvIGFjY2VzcyBpbnRlcm5hbCBkYXRhLgorICovCitzdGF0aWMgbXV0ZXhfdCB2
bm9kZV9sb2NrID0gTVVURVhfSU5JVElBTElaRVI7CisjZGVmaW5lIFZOT0RFX0xPQ0soKQltdXRl
eF9sb2NrKCZ2bm9kZV9sb2NrKQorI2RlZmluZSBWTk9ERV9VTkxPQ0soKQltdXRleF91bmxvY2so
JnZub2RlX2xvY2spCisjZGVmaW5lIFZOT0RFX09XTkVEKCkJbXV0ZXhfb3duZWQoJnZub2RlX2xv
Y2spCisKKy8qCisgKiBHZXQgdGhlIGhhc2ggdmFsdWUgZnJvbSB0aGUgbW91bnQgcG9pbnQgYW5k
IHBhdGggbmFtZS4KKyAqIFhYWChoY2gpOiByZXBsYWNlIHdpdGggYSBiZXR0ZXIgaGFzaCBmb3Ig
NjQtYml0IHBvaW50ZXJzLgorICovCitzdGF0aWMgdV9pbnQKK3ZuX2hhc2goc3RydWN0IG1vdW50
ICptcCwgdWludDY0X3QgaW5vKQoreworCXJldHVybiAoaW5vIF4gKHVuc2lnbmVkIGxvbmcpbXAp
ICYgKFZOT0RFX0JVQ0tFVFMgLSAxKTsKK30KKworLyoKKyAqIFJldHVybnMgbG9ja2VkIHZub2Rl
IGZvciBzcGVjaWZpZWQgbW91bnQgcG9pbnQgYW5kIHBhdGguCisgKiB2bl9sb2NrKCkgd2lsbCBp
bmNyZW1lbnQgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiB2bm9kZS4KKyAqCisgKiBMb2NraW5nOiBW
Tk9ERV9MT0NLIG11c3QgYmUgaGVsZC4KKyAqLworc3RydWN0IHZub2RlICoKK3ZuX2xvb2t1cChz
dHJ1Y3QgbW91bnQgKm1wLCB1aW50NjRfdCBpbm8pCit7CisJc3RydWN0IHZub2RlICp2cDsKKwor
CWFzc2VydChWTk9ERV9PV05FRCgpKTsKKwlMSVNUX0ZPUkVBQ0godnAsICZ2bm9kZV90YWJsZVt2
bl9oYXNoKG1wLCBpbm8pXSwgdl9saW5rKSB7CisJCWlmICh2cC0+dl9tb3VudCA9PSBtcCAmJiB2
cC0+dl9pbm8gPT0gaW5vKSB7CisJCQl2cC0+dl9yZWZjbnQrKzsKKwkJCW11dGV4X2xvY2soJnZw
LT52X2xvY2spOworCQkJdnAtPnZfbnJsb2NrcysrOworCQkJcmV0dXJuIHZwOworCQl9CisJfQor
CXJldHVybiBudWxscHRyOwkJLyogbm90IGZvdW5kICovCit9CisKKyNpZmRlZiBERUJVR19WRlMK
K3N0YXRpYyBjb25zdCBjaGFyICoKK3ZuX3BhdGgoc3RydWN0IHZub2RlICp2cCkKK3sKKwlzdHJ1
Y3QgZGVudHJ5ICpkcDsKKworCWlmIChMSVNUX0VNUFRZKCZ2cC0+dl9uYW1lcykgPT0gMSkgewor
CQlyZXR1cm4gKCIgIik7CisJfQorCWRwID0gTElTVF9GSVJTVCgmdnAtPnZfbmFtZXMpOworCXJl
dHVybiAoZHAtPmRfcGF0aCk7Cit9CisjZW5kaWYKKworLyoKKyAqIExvY2sgdm5vZGUKKyAqLwor
dm9pZAordm5fbG9jayhzdHJ1Y3Qgdm5vZGUgKnZwKQoreworCUFTU0VSVCh2cCk7CisJQVNTRVJU
KHZwLT52X3JlZmNudCA+IDApOworCisJbXV0ZXhfbG9jaygmdnAtPnZfbG9jayk7CisJdnAtPnZf
bnJsb2NrcysrOworCURQUklOVEYoVkZTREJfVk5PREUsICgidm5fbG9jazogICAlc1xuIiwgdm5f
cGF0aCh2cCkpKTsKK30KKworLyoKKyAqIFVubG9jayB2bm9kZQorICovCit2b2lkCit2bl91bmxv
Y2soc3RydWN0IHZub2RlICp2cCkKK3sKKwlBU1NFUlQodnApOworCUFTU0VSVCh2cC0+dl9yZWZj
bnQgPiAwKTsKKwlBU1NFUlQodnAtPnZfbnJsb2NrcyA+IDApOworCisJdnAtPnZfbnJsb2Nrcy0t
OworCW11dGV4X3VubG9jaygmdnAtPnZfbG9jayk7CisJRFBSSU5URihWRlNEQl9WTk9ERSwgKCJ2
bl9sb2NrOiAgICVzXG4iLCB2bl9wYXRoKHZwKSkpOworfQorCisvKgorICogQWxsb2NhdGUgbmV3
IHZub2RlIGZvciBzcGVjaWZpZWQgcGF0aC4KKyAqIEluY3JlbWVudCBpdHMgcmVmZXJlbmNlIGNv
dW50IGFuZCBsb2NrIGl0LgorICogUmV0dXJucyAxIGlmIHZub2RlIHdhcyBmb3VuZCBpbiBjYWNo
ZTsgb3RoZXJ3aXNlIHJldHVybnMgMC4KKyAqLworaW50Cit2Z2V0KHN0cnVjdCBtb3VudCAqbXAs
IHVpbnQ2NF90IGlubywgc3RydWN0IHZub2RlICoqdnBwKQoreworCXN0cnVjdCB2bm9kZSAqdnA7
CisJaW50IGVycm9yOworCisJKnZwcCA9IG51bGxwdHI7CisKKwlEUFJJTlRGKFZGU0RCX1ZOT0RF
LCAoInZnZXQgJUxMdVxuIiwgaW5vKSk7CisKKwlWTk9ERV9MT0NLKCk7CisKKwl2cCA9IHZuX2xv
b2t1cChtcCwgaW5vKTsKKwlpZiAodnApIHsKKwkJVk5PREVfVU5MT0NLKCk7CisJCSp2cHAgPSB2
cDsKKwkJcmV0dXJuIDE7CisJfQorCisJaWYgKCEodnAgPSBuZXcgdm5vZGUoKSkpIHsKKwkJVk5P
REVfVU5MT0NLKCk7CisJCXJldHVybiAwOworCX0KKworCUxJU1RfSU5JVCgmdnAtPnZfbmFtZXMp
OworCXZwLT52X2lubyA9IGlubzsKKwl2cC0+dl9tb3VudCA9IG1wOworCXZwLT52X3JlZmNudCA9
IDE7CisJdnAtPnZfb3AgPSBtcC0+bV9vcC0+dmZzX3Zub3BzOworCXZwLT52X25ybG9ja3MgPSAw
OworCisJLyoKKwkgKiBSZXF1ZXN0IHRvIGFsbG9jYXRlIGZzIHNwZWNpZmljIGRhdGEgZm9yIHZu
b2RlLgorCSAqLworCWlmICgoZXJyb3IgPSBWRlNfVkdFVChtcCwgdnApKSAhPSAwKSB7CisJCVZO
T0RFX1VOTE9DSygpOworCQlkZWxldGUgdnA7CisJCXJldHVybiBlcnJvcjsKKwl9CisJdmZzX2J1
c3kodnAtPnZfbW91bnQpOworCW11dGV4X2xvY2soJnZwLT52X2xvY2spOworCXZwLT52X25ybG9j
a3MrKzsKKworCUxJU1RfSU5TRVJUX0hFQUQoJnZub2RlX3RhYmxlW3ZuX2hhc2gobXAsIGlubyld
LCB2cCwgdl9saW5rKTsKKwlWTk9ERV9VTkxPQ0soKTsKKworCSp2cHAgPSB2cDsKKworCXJldHVy
biAwOworfQorCisvKgorICogVW5sb2NrIHZub2RlIGFuZCBkZWNyZW1lbnQgaXRzIHJlZmVyZW5j
ZSBjb3VudC4KKyAqLwordm9pZAordnB1dChzdHJ1Y3Qgdm5vZGUgKnZwKQoreworCUFTU0VSVCh2
cCk7CisJQVNTRVJUKHZwLT52X25ybG9ja3MgPiAwKTsKKwlBU1NFUlQodnAtPnZfcmVmY250ID4g
MCk7CisJRFBSSU5URihWRlNEQl9WTk9ERSwgKCJ2cHV0OiByZWY9JWQgJXNcbiIsIHZwLT52X3Jl
ZmNudCwgdm5fcGF0aCh2cCkpKTsKKworCVZOT0RFX0xPQ0soKTsKKwl2cC0+dl9yZWZjbnQtLTsK
KwlpZiAodnAtPnZfcmVmY250ID4gMCkgeworCSAgICBWTk9ERV9VTkxPQ0soKTsKKwkJdm5fdW5s
b2NrKHZwKTsKKwkJcmV0dXJuOworCX0KKwlMSVNUX1JFTU9WRSh2cCwgdl9saW5rKTsKKwlWTk9E
RV9VTkxPQ0soKTsKKworCS8qCisJICogRGVhbGxvY2F0ZSBmcyBzcGVjaWZpYyB2bm9kZSBkYXRh
CisJICovCisJaWYgKHZwLT52X29wLT52b3BfaW5hY3RpdmUpCisJCVZPUF9JTkFDVElWRSh2cCk7
CisJdmZzX3VuYnVzeSh2cC0+dl9tb3VudCk7CisJdnAtPnZfbnJsb2Nrcy0tOworCUFTU0VSVCh2
cC0+dl9ucmxvY2tzID09IDApOworCW11dGV4X3VubG9jaygmdnAtPnZfbG9jayk7CisJZGVsZXRl
IHZwOworfQorCisvKgorICogSW5jcmVtZW50IHRoZSByZWZlcmVuY2UgY291bnQgb24gYW4gYWN0
aXZlIHZub2RlLgorICovCit2b2lkCit2cmVmKHN0cnVjdCB2bm9kZSAqdnApCit7CisJQVNTRVJU
KHZwKTsKKwlBU1NFUlQodnAtPnZfcmVmY250ID4gMCk7CS8qIE5lZWQgdmdldCAqLworCisJVk5P
REVfTE9DSygpOworCURQUklOVEYoVkZTREJfVk5PREUsICgidnJlZjogcmVmPSVkXG4iLCB2cC0+
dl9yZWZjbnQpKTsKKwl2cC0+dl9yZWZjbnQrKzsKKwlWTk9ERV9VTkxPQ0soKTsKK30KKworLyoK
KyAqIERlY3JlbWVudCB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIHRoZSB2bm9kZS4KKyAqIEFueSBj
b2RlIGluIHRoZSBzeXN0ZW0gd2hpY2ggaXMgdXNpbmcgdm5vZGUgc2hvdWxkIGNhbGwgdnJlbGUo
KQorICogd2hlbiBpdCBpcyBmaW5pc2hlZCB3aXRoIHRoZSB2bm9kZS4KKyAqIElmIGNvdW50IGRy
b3BzIHRvIHplcm8sIGNhbGwgaW5hY3RpdmUgcm91dGluZSBhbmQgcmV0dXJuIHRvIGZyZWVsaXN0
LgorICovCit2b2lkCit2cmVsZShzdHJ1Y3Qgdm5vZGUgKnZwKQoreworCUFTU0VSVCh2cCk7CisJ
QVNTRVJUKHZwLT52X3JlZmNudCA+IDApOworCisJVk5PREVfTE9DSygpOworCURQUklOVEYoVkZT
REJfVk5PREUsICgidnJlbGU6IHJlZj0lZFxuIiwgdnAtPnZfcmVmY250KSk7CisJdnAtPnZfcmVm
Y250LS07CisJaWYgKHZwLT52X3JlZmNudCA+IDApIHsKKwkJVk5PREVfVU5MT0NLKCk7CisJCXJl
dHVybjsKKwl9CisJTElTVF9SRU1PVkUodnAsIHZfbGluayk7CisJVk5PREVfVU5MT0NLKCk7CisK
KwkvKgorCSAqIERlYWxsb2NhdGUgZnMgc3BlY2lmaWMgdm5vZGUgZGF0YQorCSAqLworCVZPUF9J
TkFDVElWRSh2cCk7CisJdmZzX3VuYnVzeSh2cC0+dl9tb3VudCk7CisJZGVsZXRlIHZwOworfQor
CisvKgorICogUmVtb3ZlIGFsbCB2bm9kZSBpbiB0aGUgdm5vZGUgdGFibGUgZm9yIHVubW91bnQu
CisgKi8KK3ZvaWQKK3ZmbHVzaChzdHJ1Y3QgbW91bnQgKm1wKQoreworfQorCitpbnQKK3ZuX3N0
YXQoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IHN0YXQgKnN0KQoreworCXN0cnVjdCB2YXR0ciB2
YXR0cjsKKwlzdHJ1Y3QgdmF0dHIgKnZhcDsKKwltb2RlX3QgbW9kZTsKKwlpbnQgZXJyb3I7CisK
Kwl2YXAgPSAmdmF0dHI7CisKKwltZW1zZXQoc3QsIDAsIHNpemVvZihzdHJ1Y3Qgc3RhdCkpOwor
CisJbWVtc2V0KHZhcCwgMCwgc2l6ZW9mKHN0cnVjdCB2YXR0cikpOworCisJZXJyb3IgPSBWT1Bf
R0VUQVRUUih2cCwgdmFwKTsKKwlpZiAoZXJyb3IpCisJCXJldHVybiBlcnJvcjsKKworCXN0LT5z
dF9pbm8gPSAoaW5vX3QpdmFwLT52YV9ub2RlaWQ7CisJc3QtPnN0X3NpemUgPSB2YXAtPnZhX3Np
emU7CisJbW9kZSA9IHZhcC0+dmFfbW9kZTsKKwlzd2l0Y2ggKHZwLT52X3R5cGUpIHsKKwljYXNl
IFZSRUc6CisJCW1vZGUgfD0gU19JRlJFRzsKKwkJYnJlYWs7CisJY2FzZSBWRElSOgorCQltb2Rl
IHw9IFNfSUZESVI7CisJCWJyZWFrOworCWNhc2UgVkJMSzoKKwkJbW9kZSB8PSBTX0lGQkxLOwor
CQlicmVhazsKKwljYXNlIFZDSFI6CisJCW1vZGUgfD0gU19JRkNIUjsKKwkJYnJlYWs7CisJY2Fz
ZSBWTE5LOgorCQltb2RlIHw9IFNfSUZMTks7CisJCWJyZWFrOworCWNhc2UgVlNPQ0s6CisJCW1v
ZGUgfD0gU19JRlNPQ0s7CisJCWJyZWFrOworCWNhc2UgVkZJRk86CisJCW1vZGUgfD0gU19JRklG
TzsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcmV0dXJuIEVCQURGOworCX07CisJc3QtPnN0X21v
ZGUgPSBtb2RlOworCXN0LT5zdF9ubGluayA9IHZhcC0+dmFfbmxpbms7CisJc3QtPnN0X2Jsa3Np
emUgPSBCU0laRTsKKwlzdC0+c3RfYmxvY2tzID0gdmFwLT52YV9zaXplIC8gU19CTEtTSVpFOwor
CXN0LT5zdF91aWQgPSB2YXAtPnZhX3VpZDsKKwlzdC0+c3RfZ2lkID0gdmFwLT52YV9naWQ7CisJ
c3QtPnN0X2RldiA9IHZhcC0+dmFfZnNpZDsKKwlpZiAodnAtPnZfdHlwZSA9PSBWQ0hSIHx8IHZw
LT52X3R5cGUgPT0gVkJMSykKKwkJc3QtPnN0X3JkZXYgPSB2YXAtPnZhX3JkZXY7CisKKwlzdC0+
c3RfYXRpbSA9IHZhcC0+dmFfYXRpbWU7CisJc3QtPnN0X210aW0gPSB2YXAtPnZhX210aW1lOwor
CXN0LT5zdF9jdGltID0gdmFwLT52YV9jdGltZTsKKworCXJldHVybiAwOworfQorCisvKgorICog
U2V0IGFjY2VzcyBhbmQgbW9kaWZpY2F0aW9uIHRpbWVzIG9mIHRoZSB2bm9kZQorICovCitpbnQK
K3ZuX3NldHRpbWVzKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCB0aW1lc3BlYyB0aW1lc1syXSkK
K3sKKyAgICBzdHJ1Y3QgdmF0dHIgdmF0dHI7CisgICAgc3RydWN0IHZhdHRyICp2YXA7CisgICAg
aW50IGVycm9yOworCisgICAgdmFwID0gJnZhdHRyOworICAgIG1lbXNldCh2YXAsIDAsIHNpemVv
ZihzdHJ1Y3QgdmF0dHIpKTsKKworICAgIHZhcC0+dmFfYXRpbWUgPSB0aW1lc1swXTsKKyAgICB2
YXAtPnZhX210aW1lID0gdGltZXNbMV07CisgICAgdmFwLT52YV9tYXNrID0gKCh0aW1lc1swXS50
dl9uc2VjID09IFVUSU1FX09NSVQpID8gMCA6IEFUX0FUSU1FKQorICAgICAgICAgICAgICAgICAg
ICB8ICgodGltZXNbMV0udHZfbnNlYyA9PSBVVElNRV9PTUlUKSA/IDAgOiBBVF9NVElNRSk7Cisg
ICAgdm5fbG9jayh2cCk7CisgICAgZXJyb3IgPSBWT1BfU0VUQVRUUih2cCwgdmFwKTsKKyAgICB2
bl91bmxvY2sodnApOworCisgICAgcmV0dXJuIGVycm9yOworfQorCisvKgorICogU2V0IGNobW9k
IHBlcm1pc3Npb25zIG9uIHRoZSB2bm9kZS4KKyAqLworaW50Cit2bl9zZXRtb2RlKHN0cnVjdCB2
bm9kZSAqdnAsIG1vZGVfdCBuZXdfbW9kZSkKK3sKKyAgICBzdHJ1Y3QgdmF0dHIgdmF0dHI7Cisg
ICAgbWVtc2V0KCZ2YXR0ciwgMCwgc2l6ZW9mKHZhdHRyKSk7CisgICAgdmF0dHIudmFfbW9kZSA9
IG5ld19tb2RlOworICAgIHZhdHRyLnZhX21hc2sgPSBBVF9NT0RFOworICAgIHZuX2xvY2sodnAp
OworICAgIHZwLT52X21vZGUgPSBuZXdfbW9kZTsKKyAgICBpbnQgZXJyb3IgPSBWT1BfU0VUQVRU
Uih2cCwgJnZhdHRyKTsKKyAgICB2bl91bmxvY2sodnApOworICAgIHJldHVybiBlcnJvcjsKK30K
KworLyoKKyAqIENoZWNrIHBlcm1pc3Npb24gb24gdm5vZGUgcG9pbnRlci4KKyAqLworaW50Cit2
bl9hY2Nlc3Moc3RydWN0IHZub2RlICp2cCwgaW50IGZsYWdzKQoreworCWludCBlcnJvciA9IDA7
CisKKwlpZiAoKGZsYWdzICYgVkVYRUMpICYmICh2cC0+dl9tb2RlICYgMDExMSkgPT0gMCkgewor
CQllcnJvciA9IEVBQ0NFUzsKKwkJZ290byBvdXQ7CisJfQorCWlmICgoZmxhZ3MgJiBWUkVBRCkg
JiYgKHZwLT52X21vZGUgJiAwNDQ0KSA9PSAwKSB7CisJCWVycm9yID0gRUFDQ0VTOworCQlnb3Rv
IG91dDsKKwl9CisJaWYgKGZsYWdzICYgVldSSVRFKSB7CisJCWlmICh2cC0+dl9tb3VudC0+bV9m
bGFncyAmIE1OVF9SRE9OTFkpIHsKKwkJCWVycm9yID0gRVJPRlM7CisJCQlnb3RvIG91dDsKKwkJ
fQorCQlpZiAoKHZwLT52X21vZGUgJiAwMjIyKSA9PSAwKSB7CisJCQllcnJvciA9IEVBQ0NFUzsK
KwkJCWdvdG8gb3V0OworCQl9CisJfQorIG91dDoKKwlyZXR1cm4gZXJyb3I7Cit9CisKKyNpZmRl
ZiBERUJVR19WRlMKKy8qCisgKiBEdW1wIGFsbCBhbGwgdm5vZGUuCisgKi8KK3ZvaWQKK3Zub2Rl
X2R1bXAodm9pZCkKK3sKKwlpbnQgaTsKKwlzdHJ1Y3Qgdm5vZGUgKnZwOworCXN0cnVjdCBtb3Vu
dCAqbXA7CisJY2hhciB0eXBlW11bNl0gPSB7ICJWTk9OICIsICJWUkVHICIsICJWRElSICIsICJW
QkxLICIsICJWQ0hSICIsCisJCQkgICAiVkxOSyAiLCAiVlNPQ0siLCAiVkZJRk8iIH07CisKKwlW
Tk9ERV9MT0NLKCk7CisJa3ByaW50ZigiRHVtcCB2bm9kZVxuIik7CisJa3ByaW50ZigiIHZub2Rl
ICAgIG1vdW50ICAgIHR5cGUgIHJlZmNudCBibGtubyAgICBwYXRoXG4iKTsKKwlrcHJpbnRmKCIg
LS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLVxuIik7CisKKwlmb3IgKGkgPSAwOyBpIDwgVk5PREVfQlVDS0VUUzsgaSsr
KSB7CisJICAgICAgICBMSVNUX0ZPUkVBQ0godnAsICZ2bm9kZV90YWJsZVtpXSwgdl9saW5rKSB7
CisJCQltcCA9IHZwLT52X21vdW50OworCisJCQlrcHJpbnRmKCIgJTA4eCAlMDh4ICVzICU2ZCAl
OGQgJXMlc1xuIiwgKHVfbG9uZyl2cCwKKwkJCQkodV9sb25nKW1wLCB0eXBlW3ZwLT52X3R5cGVd
LCB2cC0+dl9yZWZjbnQsCisJCQkJKHN0cmxlbihtcC0+bV9wYXRoKSA9PSAxKSA/ICJcMCIgOiBt
cC0+bV9wYXRoLAorCQkJCXZuX3BhdGgodnApKTsKKwkJfQorCX0KKwlrcHJpbnRmKCJcbiIpOwor
CVZOT0RFX1VOTE9DSygpOworfQorI2VuZGlmCisKK2ludAordm9wX251bGxvcCh2b2lkKQorewor
CXJldHVybiAwOworfQorCitpbnQKK3ZvcF9laW52YWwodm9pZCkKK3sKKwlyZXR1cm4gRUlOVkFM
OworfQorCitpbnQKK3ZvcF9lcGVybSh2b2lkKQoreworCXJldHVybiBFUEVSTTsKK30KKworaW50
Cit2b3BfZXJvZnModm9pZCkKK3sKKwlyZXR1cm4gRVJPRlM7Cit9CisKKy8qCisgKiB2bm9kZV9p
bml0KCkgaXMgY2FsbGVkIG9uY2UgKGZyb20gdmZzX2luaXQpCisgKiBpbiBpbml0aWFsaXphdGlv
bi4KKyAqLwordm9pZAordm5vZGVfaW5pdCh2b2lkKQoreworCWludCBpOworCisJZm9yIChpID0g
MDsgaSA8IFZOT0RFX0JVQ0tFVFM7IGkrKykKKwkJTElTVF9JTklUKCZ2bm9kZV90YWJsZVtpXSk7
Cit9CisKK3ZvaWQgdm5fYWRkX25hbWUoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IGRlbnRyeSAq
ZHApCit7CisJdm5fbG9jayh2cCk7CisJTElTVF9JTlNFUlRfSEVBRCgmdnAtPnZfbmFtZXMsIGRw
LCBkX25hbWVzX2xpbmspOworCXZuX3VubG9jayh2cCk7Cit9CisKK3ZvaWQgdm5fZGVsX25hbWUo
c3RydWN0IHZub2RlICp2cCwgc3RydWN0IGRlbnRyeSAqZHApCit7CisJdm5fbG9jayh2cCk7CisJ
TElTVF9SRU1PVkUoZHAsIGRfbmFtZXNfbGluayk7CisJdm5fdW5sb2NrKHZwKTsKK30KKwotLSAK
Mi4xOS4yCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
TWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5v
cmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1k
ZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Feb 18 14:55:21 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 18 Feb 2019 14:55:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gvkKH-0004Tr-2v; Mon, 18 Feb 2019 14:55:21 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=odxU=QZ=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gvkKF-0004T6-Lo
 for minios-devel@lists.xen.org; Mon, 18 Feb 2019 14:55:19 +0000
X-Inumbo-ID: 324d276c-338d-11e9-bf1c-53659c20689b
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 324d276c-338d-11e9-bf1c-53659c20689b;
 Mon, 18 Feb 2019 14:55:14 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id A3448F2050;
 Mon, 18 Feb 2019 15:55:13 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id L1_woYU6hpnS; Mon, 18 Feb 2019 15:55:13 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 739CCF202E
 for <minios-devel@lists.xen.org>; Mon, 18 Feb 2019 15:55:11 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 18 Feb 2019 15:55:11 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Mon, 18 Feb 2019 15:54:24 +0100
Message-ID: <20190218145440.30580-7-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190218145440.30580-1-yuri.volchkov@neclab.eu>
References: <20190218145440.30580-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v4 06/22] lib/vfscore: update
 license header for imported files
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: simon.kuenzer@neclab.eu, sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+ClJl
dmlld2VkLWJ5OiBTaGFyYW4gU2FudGhhbmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xhYi5ldT4K
LS0tCiBsaWIvbm9saWJjL2luY2x1ZGUvc3lzL21vdW50LmggICAgICAgfCAzNSArKysrKysrKysr
KysrKysrKysrKysrKysrKysrCiBsaWIvbm9saWJjL2luY2x1ZGUvc3lzL3Vpby5oICAgICAgICAg
fCAzNSArKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBsaWIvdmZzY29yZS9kZW50cnkuYyAg
ICAgICAgICAgICAgICAgfCAxMCArKystLS0tLQogbGliL3Zmc2NvcmUvZm9wcy5jICAgICAgICAg
ICAgICAgICAgIHwgMzMgKysrKysrKysrKysrKysrKysrKysrKystLS0KIGxpYi92ZnNjb3JlL2lu
Y2x1ZGUvdmZzY29yZS9kZW50cnkuaCB8IDMyICsrKysrKysrKysrKysrKysrKysrKysrLS0KIGxp
Yi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9wcmV4LmggICB8IDMyICsrKysrKysrKysrKysrKysr
KysrKysrLS0KIGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5oICB8ICAzICsrKwog
bGliL3Zmc2NvcmUvbG9va3VwLmMgICAgICAgICAgICAgICAgIHwgIDMgKysrCiBsaWIvdmZzY29y
ZS9tYWluLmMgICAgICAgICAgICAgICAgICAgfCAxMCArKystLS0tLQogbGliL3Zmc2NvcmUvbW91
bnQuYyAgICAgICAgICAgICAgICAgIHwgIDMgKysrCiBsaWIvdmZzY29yZS9zdWJyX3Vpby5jICAg
ICAgICAgICAgICAgfCAgOSArKysrKy0tCiBsaWIvdmZzY29yZS9zeXNjYWxscy5jICAgICAgICAg
ICAgICAgfCAxMCArKystLS0tLQogbGliL3Zmc2NvcmUvdGFzay5jICAgICAgICAgICAgICAgICAg
IHwgIDggKysrKystLQogbGliL3Zmc2NvcmUvdmZzLmggICAgICAgICAgICAgICAgICAgIHwgIDMg
KysrCiBsaWIvdmZzY29yZS92bm9kZS5jICAgICAgICAgICAgICAgICAgfCAgMyArKysKIDE1IGZp
bGVzIGNoYW5nZWQsIDE5NyBpbnNlcnRpb25zKCspLCAzMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1n
aXQgYS9saWIvbm9saWJjL2luY2x1ZGUvc3lzL21vdW50LmggYi9saWIvbm9saWJjL2luY2x1ZGUv
c3lzL21vdW50LmgKaW5kZXggYWY4NTVkNjkuLmQ3YTk1YjM4IDEwMDY0NAotLS0gYS9saWIvbm9s
aWJjL2luY2x1ZGUvc3lzL21vdW50LmgKKysrIGIvbGliL25vbGliYy9pbmNsdWRlL3N5cy9tb3Vu
dC5oCkBAIC0xLDMgKzEsMzggQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1D
bGF1c2UgKi8KKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQ2xvdWRpdXMgU3lzdGVtcywgTHRk
LgorICogQ29weXJpZ2h0IChjKSAyMDE5LCBORUMgRXVyb3BlIEx0ZC4sIE5FQyBDb3Jwb3JhdGlv
bi4KKyAqCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRo
ZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiAgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgorICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMg
QkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUK
KyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqIFRISVMgSEVBREVSIE1BWSBO
T1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCisgKi8KKwogI2lmbmRlZiBf
U1lTX01PVU5UX0gKICNkZWZpbmUgX1NZU19NT1VOVF9ICiAKZGlmZiAtLWdpdCBhL2xpYi9ub2xp
YmMvaW5jbHVkZS9zeXMvdWlvLmggYi9saWIvbm9saWJjL2luY2x1ZGUvc3lzL3Vpby5oCmluZGV4
IDE4MjY2MDM4Li5jZGZiZWM5YiAxMDA2NDQKLS0tIGEvbGliL25vbGliYy9pbmNsdWRlL3N5cy91
aW8uaAorKysgYi9saWIvbm9saWJjL2luY2x1ZGUvc3lzL3Vpby5oCkBAIC0xLDMgKzEsMzggQEAK
Ky8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8KKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQ2xvdWRpdXMgU3lzdGVtcywgTHRkLgorICogQ29weXJpZ2h0IChjKSAy
MDE5LCBORUMgRXVyb3BlIEx0ZC4sIE5FQyBDb3Jwb3JhdGlvbi4KKyAqCisgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNv
cHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqICAgIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiAgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICoKKyAqIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1P
RElGSUVEIElOIEFOWSBXQVkuCisgKi8KKwogI2lmbmRlZiBfU1lTX1VJT19ICiAjZGVmaW5lIF9T
WVNfVUlPX0gKIApkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvZGVudHJ5LmMgYi9saWIvdmZzY29y
ZS9kZW50cnkuYwppbmRleCBjMmYyMDliMi4uZWZjMTBiZDYgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNj
b3JlL2RlbnRyeS5jCisrKyBiL2xpYi92ZnNjb3JlL2RlbnRyeS5jCkBAIC0xLDEyICsxLDggQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQ2xvdWRpdXMgU3lzdGVtcywgTHRkLgotICoKLSAq
IFRoaXMgd29yayBpcyBvcGVuIHNvdXJjZSBzb2Z0d2FyZSwgbGljZW5zZWQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZQotICogQlNEIGxpY2Vuc2UgYXMgZGVzY3JpYmVkIGluIHRoZSBMSUNFTlNFIGZp
bGUgaW4gdGhlIHRvcC1sZXZlbCBkaXJlY3RvcnkuCi0gKi8KLQorLyogU1BEWC1MaWNlbnNlLUlk
ZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLwogLyoKICAqIENvcHlyaWdodCAoYykgMjAwNS0yMDA3
LCBLb2hzdWtlIE9odGFuaQorICogQ29weXJpZ2h0IChDKSAyMDE0IENsb3VkaXVzIFN5c3RlbXMs
IEx0ZC4KKyAqIENvcHlyaWdodCAoYykgMjAxOSwgTkVDIEV1cm9wZSBMdGQuLCBORUMgQ29ycG9y
YXRpb24uCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApkaWZmIC0t
Z2l0IGEvbGliL3Zmc2NvcmUvZm9wcy5jIGIvbGliL3Zmc2NvcmUvZm9wcy5jCmluZGV4IGFiMWY4
Y2JiLi5hOTRjYTQ1MiAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvZm9wcy5jCisrKyBiL2xpYi92
ZnNjb3JlL2ZvcHMuYwpAQCAtMSwxMSArMSwzOCBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZp
ZXI6IEJTRC0zLUNsYXVzZSAqLwogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBDbG91ZGl1cyBT
eXN0ZW1zLCBMdGQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTksIE5FQyBFdXJvcGUgTHRkLiwgTkVD
IENvcnBvcmF0aW9uLgogICoKLSAqIFRoaXMgd29yayBpcyBvcGVuIHNvdXJjZSBzb2Z0d2FyZSwg
bGljZW5zZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZQotICogQlNEIGxpY2Vuc2UgYXMgZGVzY3Jp
YmVkIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHRvcC1sZXZlbCBkaXJlY3RvcnkuCisgKiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUg
b2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqICAgIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiAgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgorICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFD
VEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCiAgKi8KIAotCiAjaW5jbHVkZSA8ZmNudGwuaD4K
ICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogI2luY2x1ZGUgPG9zdi9maWxlLmg+CmRpZmYgLS1naXQg
YS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZGVudHJ5LmggYi9saWIvdmZzY29yZS9pbmNs
dWRlL3Zmc2NvcmUvZGVudHJ5LmgKaW5kZXggZjU4NTA3ODYuLjJkMmVhYTFiIDEwMDY0NAotLS0g
YS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZGVudHJ5LmgKKysrIGIvbGliL3Zmc2NvcmUv
aW5jbHVkZS92ZnNjb3JlL2RlbnRyeS5oCkBAIC0xLDggKzEsMzYgQEAKKy8qIFNQRFgtTGljZW5z
ZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8KIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTQg
Q2xvdWRpdXMgU3lzdGVtcywgTHRkLgorICogQ29weXJpZ2h0IChjKSAyMDE5LCBORUMgRXVyb3Bl
IEx0ZC4sIE5FQyBDb3Jwb3JhdGlvbi4KICAqCi0gKiBUaGlzIHdvcmsgaXMgb3BlbiBzb3VyY2Ug
c29mdHdhcmUsIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUKLSAqIEJTRCBsaWNlbnNl
IGFzIGRlc2NyaWJlZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSB0b3AtbGV2ZWwgZGlyZWN0
b3J5LgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVy
IHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJF
CisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisg
KiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKiBUSElTIEhFQURFUiBNQVkgTk9U
IEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgogICovCiAKICNpZm5kZWYgX09T
Vl9ERU5UUllfSApkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3ByZXgu
aCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9wcmV4LmgKaW5kZXggNDM2NTAzNDAuLjdi
MDUzMzE5IDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvcHJleC5oCisr
KyBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9wcmV4LmgKQEAgLTEsOCArMSwzNiBAQAor
LyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLwogLyoKICAqIENvcHly
aWdodCAoQykgMjAxMyBDbG91ZGl1cyBTeXN0ZW1zLCBMdGQuCisgKiBDb3B5cmlnaHQgKGMpIDIw
MTksIE5FQyBFdXJvcGUgTHRkLiwgTkVDIENvcnBvcmF0aW9uLgogICoKLSAqIFRoaXMgd29yayBp
cyBvcGVuIHNvdXJjZSBzb2Z0d2FyZSwgbGljZW5zZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZQot
ICogQlNEIGxpY2Vuc2UgYXMgZGVzY3JpYmVkIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHRv
cC1sZXZlbCBkaXJlY3RvcnkuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiAgICB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMg
IkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBD
T05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqIFRISVMg
SEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCiAgKi8K
IAogI2lmbmRlZiBfT1NWX1BSRVhfSApkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92
ZnNjb3JlL3Zub2RlLmggYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUuaAppbmRl
eCBlMzVhYTgzMC4uNDg3NGYxYjkgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZz
Y29yZS92bm9kZS5oCisrKyBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5oCkBA
IC0xLDUgKzEsOCBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAq
LwogLyoKICAqIENvcHlyaWdodCAoYykgMjAwNS0yMDA3LCBLb2hzdWtlIE9odGFuaQorICogQ29w
eXJpZ2h0IChDKSAyMDE0IENsb3VkaXVzIFN5c3RlbXMsIEx0ZC4KKyAqIENvcHlyaWdodCAoYykg
MjAxOSwgTkVDIEV1cm9wZSBMdGQuLCBORUMgQ29ycG9yYXRpb24uCiAgKiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvbG9va3Vw
LmMgYi9saWIvdmZzY29yZS9sb29rdXAuYwppbmRleCAzMDEzOWE4Ny4uMGFhNWNhM2IgMTAwNjQ0
Ci0tLSBhL2xpYi92ZnNjb3JlL2xvb2t1cC5jCisrKyBiL2xpYi92ZnNjb3JlL2xvb2t1cC5jCkBA
IC0xLDUgKzEsOCBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAq
LwogLyoKICAqIENvcHlyaWdodCAoYykgMjAwNS0yMDA3LCBLb2hzdWtlIE9odGFuaQorICogQ29w
eXJpZ2h0IChDKSAyMDE0IENsb3VkaXVzIFN5c3RlbXMsIEx0ZC4KKyAqIENvcHlyaWdodCAoYykg
MjAxOSwgTkVDIEV1cm9wZSBMdGQuLCBORUMgQ29ycG9yYXRpb24uCiAgKiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvbWFpbi5j
IGIvbGliL3Zmc2NvcmUvbWFpbi5jCmluZGV4IDhkOWRjMzNhLi5lMzAwNDU5NyAxMDA2NDQKLS0t
IGEvbGliL3Zmc2NvcmUvbWFpbi5jCisrKyBiL2xpYi92ZnNjb3JlL21haW4uYwpAQCAtMSwxMiAr
MSw4IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIENsb3VkaXVzIFN5c3RlbXMsIEx0ZC4K
LSAqCi0gKiBUaGlzIHdvcmsgaXMgb3BlbiBzb3VyY2Ugc29mdHdhcmUsIGxpY2Vuc2VkIHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUKLSAqIEJTRCBsaWNlbnNlIGFzIGRlc2NyaWJlZCBpbiB0aGUgTElD
RU5TRSBmaWxlIGluIHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5LgotICovCi0KKy8qIFNQRFgtTGlj
ZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8KIC8qCiAgKiBDb3B5cmlnaHQgKGMpIDIw
MDUtMjAwNywgS29oc3VrZSBPaHRhbmkKKyAqIENvcHlyaWdodCAoQykgMjAxMyBDbG91ZGl1cyBT
eXN0ZW1zLCBMdGQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTksIE5FQyBFdXJvcGUgTHRkLiwgTkVD
IENvcnBvcmF0aW9uLgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL21vdW50LmMgYi9saWIvdmZzY29yZS9tb3VudC5jCmlu
ZGV4IGI1MWIyN2E0Li43NmUyZTcwYyAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvbW91bnQuYwor
KysgYi9saWIvdmZzY29yZS9tb3VudC5jCkBAIC0xLDUgKzEsOCBAQAorLyogU1BEWC1MaWNlbnNl
LUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLwogLyoKICAqIENvcHlyaWdodCAoYykgMjAwNS0y
MDA3LCBLb2hzdWtlIE9odGFuaQorICogQ29weXJpZ2h0IChDKSAyMDE0IENsb3VkaXVzIFN5c3Rl
bXMsIEx0ZC4KKyAqIENvcHlyaWdodCAoYykgMjAxOSwgTkVDIEV1cm9wZSBMdGQuLCBORUMgQ29y
cG9yYXRpb24uCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApkaWZm
IC0tZ2l0IGEvbGliL3Zmc2NvcmUvc3Vicl91aW8uYyBiL2xpYi92ZnNjb3JlL3N1YnJfdWlvLmMK
aW5kZXggYmYxMzhiOGUuLjgyNzZkNmQ0IDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9zdWJyX3Vp
by5jCisrKyBiL2xpYi92ZnNjb3JlL3N1YnJfdWlvLmMKQEAgLTEsNyArMSwxMiBAQAotLyotCisv
KiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCisvKgogICogQ29weXJp
Z2h0IChjKSAxOTgyLCAxOTg2LCAxOTkxLCAxOTkzCi0gKglUaGUgUmVnZW50cyBvZiB0aGUgVW5p
dmVyc2l0eSBvZiBDYWxpZm9ybmlhLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICAgICBUaGUg
UmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgogICogKGMpIFVOSVggU3lz
dGVtIExhYm9yYXRvcmllcywgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDE0IENsb3VkaXVzIFN5
c3RlbXMsIEx0ZC4KKyAqIENvcHlyaWdodCAoYykgMjAxOSwgTkVDIEV1cm9wZSBMdGQuLCBORUMg
Q29ycG9yYXRpb24uCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKICAqIEFsbCBvciBzb21l
IHBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgZGVyaXZlZCBmcm9tIG1hdGVyaWFsIGxpY2Vuc2Vk
CiAgKiB0byB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhIGJ5IEFtZXJpY2FuIFRlbGVwaG9u
ZSBhbmQgVGVsZWdyYXBoCiAgKiBDby4gb3IgVW5peCBTeXN0ZW0gTGFib3JhdG9yaWVzLCBJbmMu
IGFuZCBhcmUgcmVwcm9kdWNlZCBoZXJlaW4gd2l0aApkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUv
c3lzY2FsbHMuYyBiL2xpYi92ZnNjb3JlL3N5c2NhbGxzLmMKaW5kZXggYjU0MzNlY2UuLjI5YjE0
MjIwIDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9zeXNjYWxscy5jCisrKyBiL2xpYi92ZnNjb3Jl
L3N5c2NhbGxzLmMKQEAgLTEsMTIgKzEsOCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBD
bG91ZGl1cyBTeXN0ZW1zLCBMdGQuCi0gKgotICogVGhpcyB3b3JrIGlzIG9wZW4gc291cmNlIHNv
ZnR3YXJlLCBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlCi0gKiBCU0QgbGljZW5zZSBh
cyBkZXNjcmliZWQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgdG9wLWxldmVsIGRpcmVjdG9y
eS4KLSAqLwotCisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCiAv
KgogICogQ29weXJpZ2h0IChjKSAyMDA1LTIwMDcsIEtvaHN1a2UgT2h0YW5pCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQgQ2xvdWRpdXMgU3lzdGVtcywgTHRkLgorICogQ29weXJpZ2h0IChjKSAyMDE5
LCBORUMgRXVyb3BlIEx0ZC4sIE5FQyBDb3Jwb3JhdGlvbi4KICAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS90YXNrLmMgYi9s
aWIvdmZzY29yZS90YXNrLmMKaW5kZXggYjJhMDI4YzYuLjJkMzRmMGRmIDEwMDY0NAotLS0gYS9s
aWIvdmZzY29yZS90YXNrLmMKKysrIGIvbGliL3Zmc2NvcmUvdGFzay5jCkBAIC0xLDUgKzEsOSBA
QAotLyotCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDcsIEtvaHN1a2UgT2h0YW5pIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCisv
KgorICogQ29weXJpZ2h0IChjKSAyMDA3LCBLb2hzdWtlIE9odGFuaQorICogQ29weXJpZ2h0IChD
KSAyMDE0IENsb3VkaXVzIFN5c3RlbXMsIEx0ZC4KKyAqIENvcHlyaWdodCAoYykgMjAxOSwgTkVD
IEV1cm9wZSBMdGQuLCBORUMgQ29ycG9yYXRpb24uCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS92
ZnMuaCBiL2xpYi92ZnNjb3JlL3Zmcy5oCmluZGV4IDJiODI1NTIxLi5jMTMwNTE3ZCAxMDA2NDQK
LS0tIGEvbGliL3Zmc2NvcmUvdmZzLmgKKysrIGIvbGliL3Zmc2NvcmUvdmZzLmgKQEAgLTEsNSAr
MSw4IEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCiAvKgog
ICogQ29weXJpZ2h0IChjKSAyMDA1LTIwMDcsIEtvaHN1a2UgT2h0YW5pCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQ2xvdWRpdXMgU3lzdGVtcywgTHRkLgorICogQ29weXJpZ2h0IChjKSAyMDE5LCBO
RUMgRXVyb3BlIEx0ZC4sIE5FQyBDb3Jwb3JhdGlvbi4KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS92bm9kZS5jIGIvbGli
L3Zmc2NvcmUvdm5vZGUuYwppbmRleCAxMTllZDg3MC4uMzQxMmM2ZmIgMTAwNjQ0Ci0tLSBhL2xp
Yi92ZnNjb3JlL3Zub2RlLmMKKysrIGIvbGliL3Zmc2NvcmUvdm5vZGUuYwpAQCAtMSw1ICsxLDgg
QEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8KIC8qCiAgKiBD
b3B5cmlnaHQgKGMpIDIwMDUtMjAwOCwgS29oc3VrZSBPaHRhbmkKKyAqIENvcHlyaWdodCAoQykg
MjAxNCBDbG91ZGl1cyBTeXN0ZW1zLCBMdGQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTksIE5FQyBF
dXJvcGUgTHRkLiwgTkVDIENvcnBvcmF0aW9uLgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLS0gCjIuMTkuMgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVs
QGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1h
bi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Feb 18 14:55:22 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 18 Feb 2019 14:55:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gvkKI-0004UP-4c; Mon, 18 Feb 2019 14:55:22 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=odxU=QZ=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gvkKG-0004Tf-T1
 for minios-devel@lists.xen.org; Mon, 18 Feb 2019 14:55:20 +0000
X-Inumbo-ID: 33ef987a-338d-11e9-9ed3-ef84b2c876af
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 33ef987a-338d-11e9-9ed3-ef84b2c876af;
 Mon, 18 Feb 2019 14:55:17 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 4D3F4104E55;
 Mon, 18 Feb 2019 15:55:16 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 8xE72VL92LRh; Mon, 18 Feb 2019 15:55:16 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 0D0B3104BE1
 for <minios-devel@lists.xen.org>; Mon, 18 Feb 2019 15:55:14 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 18 Feb 2019 15:55:13 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Mon, 18 Feb 2019 15:54:25 +0100
Message-ID: <20190218145440.30580-8-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190218145440.30580-1-yuri.volchkov@neclab.eu>
References: <20190218145440.30580-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v4 07/22] lib/vfscore: remove
 obvious c++isms and irrelevant code
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: simon.kuenzer@neclab.eu, sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U29tZSBjKytpc21zIGFyZSBrZWVwIGJlY2F1c2UgYmlnZ2VyIHBpZWNlcyBuZWVkZWQgdG8gYmUg
cmVkb25lIGFyb3VuZAp0aGVtLgoKU29tZSBjb2RlIGlzIGp1c3QgZGlzYWJsZWQgd2l0aCAjaWYg
MCwgYXMgd2Ugd2lsbCBtYWtlIHVzZSBvZiBpdCBsYXRlcgoKU2lnbmVkLW9mZi1ieTogWXVyaSBW
b2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+ClJldmlld2VkLWJ5OiBTaGFyYW4gU2Fu
dGhhbmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xhYi5ldT4KLS0tCiBsaWIvdmZzY29yZS9mb3Bz
LmMgICAgICAgICAgICAgICAgICAgfCAgOTEgKy0tLS0tCiBsaWIvdmZzY29yZS9pbmNsdWRlL3Zm
c2NvcmUvZGVudHJ5LmggfCAgMTYgLQogbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21vdW50
LmggIHwgIDI2IC0tCiBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvcHJleC5oICAgfCAgIDYg
LQogbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Vpby5oICAgIHwgIDI2IC0tCiBsaWIvdmZz
Y29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUuaCAgfCAgIDQgLQogbGliL3Zmc2NvcmUvbG9va3Vw
LmMgICAgICAgICAgICAgICAgIHwgIDUxICsrLQogbGliL3Zmc2NvcmUvbWFpbi5jICAgICAgICAg
ICAgICAgICAgIHwgNDY5ICsrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogbGliL3Zmc2NvcmUv
bW91bnQuYyAgICAgICAgICAgICAgICAgIHwgIDQ3ICstLQogbGliL3Zmc2NvcmUvc3lzY2FsbHMu
YyAgICAgICAgICAgICAgIHwgMTE4ICsrKystLS0KIGxpYi92ZnNjb3JlL3Rhc2suYyAgICAgICAg
ICAgICAgICAgICB8ICAxNyAtCiBsaWIvdmZzY29yZS92ZnMuaCAgICAgICAgICAgICAgICAgICAg
fCAgMjMgLS0KIGxpYi92ZnNjb3JlL3Zub2RlLmMgICAgICAgICAgICAgICAgICB8ICAgMyArLQog
MTMgZmlsZXMgY2hhbmdlZCwgMTU1IGluc2VydGlvbnMoKyksIDc0MiBkZWxldGlvbnMoLSkKCmRp
ZmYgLS1naXQgYS9saWIvdmZzY29yZS9mb3BzLmMgYi9saWIvdmZzY29yZS9mb3BzLmMKaW5kZXgg
YTk0Y2E0NTIuLmYxYzE2MWU3IDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9mb3BzLmMKKysrIGIv
bGliL3Zmc2NvcmUvZm9wcy5jCkBAIC00MiwxNCArNDIsOCBAQAogI2luY2x1ZGUgPG9zdi9tbXUu
aGg+CiAjaW5jbHVkZSA8b3N2L3BhZ2VjYWNoZS5oaD4KIAotdmZzX2ZpbGU6OnZmc19maWxlKHVu
c2lnbmVkIGZsYWdzKQotCTogZmlsZShmbGFncywgRFRZUEVfVk5PREUpCitpbnQgdmZzX2Nsb3Nl
KHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwKQogewotfQotCi1pbnQgdmZzX2ZpbGU6OmNsb3NlKCkK
LXsKLQlhdXRvIGZwID0gdGhpczsKIAlzdHJ1Y3Qgdm5vZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5k
X3Zub2RlOwogCWludCBlcnJvcjsKIApAQCAtNjAsMTMgKzU0LDE0IEBAIGludCB2ZnNfZmlsZTo6
Y2xvc2UoKQogCWlmIChlcnJvcikKIAkJcmV0dXJuIGVycm9yOwogCi0JZnAtPmZfZGVudHJ5LnJl
c2V0KCk7CisJLyogRGVudHJ5IHN0YXlzIGZvcmV2ZXIgaW4gdGhlIGRlbnRyeSBjYWNoZS4gVW5s
ZXNzIHRoZQorCSAqIGZpbGUvZGlyZWN0b3J5IGl0IHJlZmVycyB0byBnZXRzIGRlbGV0ZWQvcmVu
YW1lZCAqLworCWZwLT5mX2RlbnRyeSA9IE5VTEw7CiAJcmV0dXJuIDA7CiB9CiAKLWludCB2ZnNf
ZmlsZTo6cmVhZChzdHJ1Y3QgdWlvICp1aW8sIGludCBmbGFncykKK2ludCB2ZnNfcmVhZChzdHJ1
Y3QgdmZzY29yZV9maWxlICpmcCwgc3RydWN0IHVpbyAqdWlvLCBpbnQgZmxhZ3MpCiB7Ci0JYXV0
byBmcCA9IHRoaXM7CiAJc3RydWN0IHZub2RlICp2cCA9IGZwLT5mX2RlbnRyeS0+ZF92bm9kZTsK
IAlpbnQgZXJyb3I7CiAJc2l6ZV90IGNvdW50OwpAQCAtOTAsOSArODUsOCBAQCBpbnQgdmZzX2Zp
bGU6OnJlYWQoc3RydWN0IHVpbyAqdWlvLCBpbnQgZmxhZ3MpCiB9CiAKIAotaW50IHZmc19maWxl
Ojp3cml0ZShzdHJ1Y3QgdWlvICp1aW8sIGludCBmbGFncykKK2ludCB2ZnNfd3JpdGUoc3RydWN0
IHZmc2NvcmVfZmlsZSAqZnAsIHN0cnVjdCB1aW8gKnVpbywgaW50IGZsYWdzKQogewotCWF1dG8g
ZnAgPSB0aGlzOwogCXN0cnVjdCB2bm9kZSAqdnAgPSBmcC0+Zl9kZW50cnktPmRfdm5vZGU7CiAJ
aW50IGlvZmxhZ3MgPSAwOwogCWludCBlcnJvcjsKQEAgLTEyMiw5ICsxMTYsOCBAQCBpbnQgdmZz
X2ZpbGU6OndyaXRlKHN0cnVjdCB1aW8gKnVpbywgaW50IGZsYWdzKQogCXJldHVybiBlcnJvcjsK
IH0KIAotaW50IHZmc19maWxlOjppb2N0bCh1X2xvbmcgY29tLCB2b2lkICpkYXRhKQoraW50IHZm
c19pb2N0bChzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCwgdV9sb25nIGNvbSwgdm9pZCAqZGF0YSkK
IHsKLQlhdXRvIGZwID0gdGhpczsKIAlzdHJ1Y3Qgdm5vZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5k
X3Zub2RlOwogCWludCBlcnJvcjsKIApAQCAtMTM1LDkgKzEyOCw4IEBAIGludCB2ZnNfZmlsZTo6
aW9jdGwodV9sb25nIGNvbSwgdm9pZCAqZGF0YSkKIAlyZXR1cm4gZXJyb3I7CiB9CiAKLWludCB2
ZnNfZmlsZTo6c3RhdChzdHJ1Y3Qgc3RhdCAqc3QpCitpbnQgdmZzX3N0YXQoc3RydWN0IHZmc2Nv
cmVfZmlsZSAqZnAsIHN0cnVjdCBzdGF0ICpzdCkKIHsKLQlhdXRvIGZwID0gdGhpczsKIAlzdHJ1
Y3Qgdm5vZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOwogCWludCBlcnJvcjsKIApAQCAt
MTQ3LDcwICsxMzksMyBAQCBpbnQgdmZzX2ZpbGU6OnN0YXQoc3RydWN0IHN0YXQgKnN0KQogCiAJ
cmV0dXJuIGVycm9yOwogfQotCi1pbnQgdmZzX2ZpbGU6OnBvbGwoaW50IGV2ZW50cykKLXsKLQly
ZXR1cm4gcG9sbF9ub19wb2xsKGV2ZW50cyk7Ci19Ci0KLWludCB2ZnNfZmlsZTo6dHJ1bmNhdGUo
b2ZmX3QgbGVuKQotewotCS8vIHNvbWVob3cgdGhpcyBpcyBoYW5kbGVkIG91dHNpZGUgZmlsZSBv
cHMKLQlhYm9ydCgpOwotfQotCi1pbnQgdmZzX2ZpbGU6OmNobW9kKG1vZGVfdCBtb2RlKQotewot
CS8vIHNvbWVob3cgdGhpcyBpcyBoYW5kbGVkIG91dHNpZGUgZmlsZSBvcHMKLQlhYm9ydCgpOwot
fQotCi1ib29sIHZmc19maWxlOjptYXBfcGFnZSh1aW50cHRyX3Qgb2ZmLCBtbXU6Omh3X3B0ZXA8
MD4gcHRlcCwgbW11OjpwdF9lbGVtZW50PDA+IHB0ZSwgYm9vbCB3cml0ZSwgYm9vbCBzaGFyZWQp
Ci17Ci0JcmV0dXJuIHBhZ2VjYWNoZTo6Z2V0KHRoaXMsIG9mZiwgcHRlcCwgcHRlLCB3cml0ZSwg
c2hhcmVkKTsKLX0KLQotYm9vbCB2ZnNfZmlsZTo6cHV0X3BhZ2Uodm9pZCAqYWRkciwgdWludHB0
cl90IG9mZiwgbW11Ojpod19wdGVwPDA+IHB0ZXApCi17Ci0JcmV0dXJuIHBhZ2VjYWNoZTo6cmVs
ZWFzZSh0aGlzLCBhZGRyLCBvZmYsIHB0ZXApOwotfQotCi12b2lkIHZmc19maWxlOjpzeW5jKG9m
Zl90IHN0YXJ0LCBvZmZfdCBlbmQpCi17Ci0JcGFnZWNhY2hlOjpzeW5jKHRoaXMsIHN0YXJ0LCBl
bmQpOwotfQotCi0vLyBMb2NraW5nOiBWT1BfQ0FDSEUgd2lsbCBjYWxsIGludG8gdGhlIGZpbGVz
eXN0ZW0sIGFuZCB0aGF0IGNhbiB0cmlnZ2VyIGFuCi0vLyBldmljdGlvbiB0aGF0IHdpbGwgaG9s
ZCB0aGUgbW11LXNpZGUgbG9jayB0aGF0IHByb3RlY3RzIHRoZSBtYXBwaW5ncwotLy8gQWx3YXlz
IGZvbGxvdyB0aGF0IG9yZGVyLiBXZSBob3dldmVyIGNhbid0IGp1c3QgZ2V0IHJpZCBvZiB0aGUg
bW11LXNpZGUgbG9jaywKLS8vIGJlY2F1c2Ugbm90IGFsbCBpbnZhbGlkYXRpb25zIHdpbGwgYmUg
c3luY2hyb25vdXMuCi1pbnQgdmZzX2ZpbGU6OmdldF9hcmNidWYodm9pZCoga2V5LCBvZmZfdCBv
ZmZzZXQpCi17Ci0Jc3RydWN0IHZub2RlICp2cCA9IGZfZGVudHJ5LT5kX3Zub2RlOwotCi0JaW92
ZWMgaW9bMV07Ci0KLQlpb1swXS5pb3ZfYmFzZSA9IGtleTsKLQl1aW8gZGF0YTsKLQlkYXRhLnVp
b19pb3YgPSBpbzsKLQlkYXRhLnVpb19pb3ZjbnQgPSAxOwotCWRhdGEudWlvX29mZnNldCA9IG9m
ZnNldDsKLQlkYXRhLnVpb19yZXNpZCA9IG1tdTo6cGFnZV9zaXplOwotCWRhdGEudWlvX3J3ID0g
VUlPX1JFQUQ7Ci0KLQl2bl9sb2NrKHZwKTsKLQlhc3NlcnQoVk9QX0NBQ0hFKHZwLCB0aGlzLCAm
ZGF0YSkgPT0gMCk7Ci0Jdm5fdW5sb2NrKHZwKTsKLQotCXJldHVybiAoZGF0YS51aW9fcmVzaWQg
IT0gMCkgPyAtMSA6IDA7Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxtbXU6OmZpbGVfdm1hPiB2ZnNf
ZmlsZTo6bW1hcChhZGRyX3JhbmdlIHJhbmdlLCB1bnNpZ25lZCBmbGFncywgdW5zaWduZWQgcGVy
bSwgb2ZmX3Qgb2Zmc2V0KQotewotCWF1dG8gZnAgPSB0aGlzOwotCXN0cnVjdCB2bm9kZSAqdnAg
PSBmcC0+Zl9kZW50cnktPmRfdm5vZGU7Ci0JaWYgKCF2cC0+dl9vcC0+dm9wX2NhY2hlIHx8ICh2
cC0+dl9zaXplIDwgKG9mZl90KW1tdTo6cGFnZV9zaXplKSkgewotCQlyZXR1cm4gbW11OjpkZWZh
dWx0X2ZpbGVfbW1hcCh0aGlzLCByYW5nZSwgZmxhZ3MsIHBlcm0sIG9mZnNldCk7Ci0JfQotCXJl
dHVybiBtbXU6Om1hcF9maWxlX21tYXAodGhpcywgcmFuZ2UsIGZsYWdzLCBwZXJtLCBvZmZzZXQp
OwotfQpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2RlbnRyeS5oIGIv
bGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2RlbnRyeS5oCmluZGV4IDJkMmVhYTFiLi45Y2Zl
OGRhYyAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2RlbnRyeS5oCisr
KyBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9kZW50cnkuaApAQCAtNTQsMjAgKzU0LDQg
QEAgc3RydWN0IGRlbnRyeSB7CiAJTElTVF9FTlRSWShkZW50cnkpIGRfY2hpbGRyZW5fbGluazsK
IH07CiAKLSNpZmRlZiBfX2NwbHVzcGx1cwotCi0jaW5jbHVkZSA8Ym9vc3QvaW50cnVzaXZlX3B0
ci5ocHA+Ci0KLXVzaW5nIGRlbnRyeV9yZWYgPSBib29zdDo6aW50cnVzaXZlX3B0cjxkZW50cnk+
OwotCi1leHRlcm4gIkMiIHsKLQl2b2lkIGRyZWYoc3RydWN0IGRlbnRyeSogZHApOwotCXZvaWQg
ZHJlbGUoc3RydWN0IGRlbnRyeSogZHApOwotfTsKLQotaW5saW5lIHZvaWQgaW50cnVzaXZlX3B0
cl9hZGRfcmVmKGRlbnRyeSogZHApIHsgZHJlZihkcCk7IH0KLWlubGluZSB2b2lkIGludHJ1c2l2
ZV9wdHJfcmVsZWFzZShkZW50cnkqIGRwKSB7IGRyZWxlKGRwKTsgfQotCi0jZW5kaWYKLQogI2Vu
ZGlmIC8qIF9PU1ZfREVOVFJZX0ggKi8KZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUv
dmZzY29yZS9tb3VudC5oIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmgKaW5k
ZXggMGU3ODkyOWYuLmI2OGQzYzk4IDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zm
c2NvcmUvbW91bnQuaAorKysgYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvbW91bnQuaApA
QCAtMzcsOCArMzcsNiBAQAogI2luY2x1ZGUgPG9zdi92bm9kZS5oPgogI2luY2x1ZGUgPGJzZC9z
eXMvc3lzL3F1ZXVlLmg+CiAKLV9fQkVHSU5fREVDTFMKLQogI2lmZGVmIF9LRVJORUwKIAogLyoK
QEAgLTE0NCwyOCArMTQyLDQgQEAgdm9pZAkgdmZzX3VuYnVzeShzdHJ1Y3QgbW91bnQgKm1wKTsK
IAogdm9pZAkgcmVsZWFzZV9tcF9kZW50cmllcyhzdHJ1Y3QgbW91bnQgKm1wKTsKIAotI2VuZGlm
Ci0KLV9fRU5EX0RFQ0xTCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotCi0jaW5jbHVkZSA8dmVjdG9y
PgotI2luY2x1ZGUgPHN0cmluZz4KLQotbmFtZXNwYWNlIG9zdiB7Ci0KLXN0cnVjdCBtb3VudF9k
ZXNjIHsKLQlzdGQ6OnN0cmluZyBzcGVjaWFsOwotCXN0ZDo6c3RyaW5nIHBhdGg7Ci0Jc3RkOjpz
dHJpbmcgdHlwZTsKLQlzdGQ6OnN0cmluZyBvcHRpb25zOwotfTsKLQotc3RkOjp2ZWN0b3I8bW91
bnRfZGVzYz4gY3VycmVudF9tb3VudHMoKTsKLQotfQotCi0jZW5kaWYKLQogI2VuZGlmCS8qICFf
U1lTX01PVU5UX0hfICovCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUv
cHJleC5oIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3ByZXguaAppbmRleCA3YjA1MzMx
OS4uNmNiZTMxMzAgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9wcmV4
LmgKKysrIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3ByZXguaApAQCAtNDAsMTAgKzQw
LDYgQEAKICNpbmNsdWRlIDx1bmlzdGQuaD4KICNpbmNsdWRlIDxvc3YvZmNudGwuaD4KIAotX19C
RUdJTl9ERUNMUwotCi0jZGVmaW5lIF9fcGFja2VkICAgICAgICBfX2F0dHJpYnV0ZV9fKChfX3Bh
Y2tlZF9fKSkKLQogI2RlZmluZQlCU0laRQk1MTIJCS8qIHNpemUgb2Ygc2Vjb25kYXJ5IGJsb2Nr
IChieXRlcykgKi8KIAogI2RlZmluZSBET19SRFdSCQkweDIKQEAgLTU3LDYgKzUzLDQgQEAgc2l6
ZV90IHN0cmxjcHkoY2hhciAqZHN0LCBjb25zdCBjaGFyICpzcmMsIHNpemVfdCBzaXopOwogCiB2
b2lkIHN5c19wYW5pYyhjb25zdCBjaGFyICopOwogCi1fX0VORF9ERUNMUwotCiAjZW5kaWYgLyog
X09TVl9QUkVYX0ggKi8KZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS91
aW8uaCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS91aW8uaAppbmRleCA2OTZiMDFjZi4u
ZDdmN2ZjZTkgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS91aW8uaAor
KysgYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdWlvLmgKQEAgLTM4LDggKzM4LDYgQEAK
ICNpbmNsdWRlIDxzeXMvdWlvLmg+CiAjaW5jbHVkZSA8bGltaXRzLmg+CiAKLV9fQkVHSU5fREVD
TFMKLQogZW51bQl1aW9fcncgeyBVSU9fUkVBRCwgVUlPX1dSSVRFIH07CiAKIC8qCkBAIC02Miwy
OCArNjAsNCBAQCBzdHJ1Y3QgdWlvIHsKIAogaW50CXVpb21vdmUodm9pZCAqY3AsIGludCBuLCBz
dHJ1Y3QgdWlvICp1aW8pOwogCi1fX0VORF9ERUNMUwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLQot
dGVtcGxhdGUgPHR5cGVuYW1lIEY+Ci1zdGF0aWMgaW5saW5lIHZvaWQgbGluZWFyaXplX3Vpb193
cml0ZShzdHJ1Y3QgdWlvICp1aW8sIGludCBpb2ZsYWcsIEYgZikKLXsKLSAgICB3aGlsZSAodWlv
LT51aW9fcmVzaWQgPiAwKSB7Ci0gICAgICAgIHN0cnVjdCBpb3ZlYyAqaW92ID0gdWlvLT51aW9f
aW92OwotCi0gICAgICAgIGlmIChpb3YtPmlvdl9sZW4pIHsKLSAgICAgICAgICAgIGYocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBjaGFyICo+KGlvdi0+aW92X2Jhc2UpLAotICAgICAgICAgICAgICAg
IGlvdi0+aW92X2xlbik7Ci0gICAgICAgIH0KLQotICAgICAgICB1aW8tPnVpb19pb3YrKzsKLSAg
ICAgICAgdWlvLT51aW9faW92Y250LS07Ci0gICAgICAgIHVpby0+dWlvX3Jlc2lkIC09IGlvdi0+
aW92X2xlbjsKLSAgICAgICAgdWlvLT51aW9fb2Zmc2V0ICs9IGlvdi0+aW92X2xlbjsKLSAgICB9
Ci19Ci0KLSNlbmRpZgotCiAjZW5kaWYgLyogIV9VSU9fSF8gKi8KZGlmZiAtLWdpdCBhL2xpYi92
ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5oIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNj
b3JlL3Zub2RlLmgKaW5kZXggNDg3NGYxYjkuLmQzMGE5NDExIDEwMDY0NAotLS0gYS9saWIvdmZz
Y29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUuaAorKysgYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zm
c2NvcmUvdm5vZGUuaApAQCAtNDMsOCArNDMsNiBAQAogI2luY2x1ZGUgImZpbGUuaCIKICNpbmNs
dWRlICJkaXJlbnQuaCIKIAotX19CRUdJTl9ERUNMUwotCiBzdHJ1Y3QgdmZzb3BzOwogc3RydWN0
IHZub3BzOwogc3RydWN0IHZub2RlOwpAQCAtMjQyLDggKzI0MCw2IEBAIHN0YXRpYyBpbmxpbmUg
dm9pZCB2bm9kZV9wYWdlcl9zZXRzaXplKHN0cnVjdCB2bm9kZSAqdnAsIG9mZl90IHNpemUpCiAJ
dnAtPnZfc2l6ZSA9IHNpemU7CiB9CiAKLV9fRU5EX0RFQ0xTCi0KICNlbmRpZgogCiAjZW5kaWYg
LyogIV9TWVNfVk5PREVfSF8gKi8KZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2xvb2t1cC5jIGIv
bGliL3Zmc2NvcmUvbG9va3VwLmMKaW5kZXggMGFhNWNhM2IuLmY3YTM4YzRmIDEwMDY0NAotLS0g
YS9saWIvdmZzY29yZS9sb29rdXAuYworKysgYi9saWIvdmZzY29yZS9sb29rdXAuYwpAQCAtNjMs
MzMgKzYzLDMxIEBAIHJlYWRfbGluayhzdHJ1Y3Qgdm5vZGUgKnZwLCBjaGFyICpidWYsIHNpemVf
dCBidWZzeiwgc3NpemVfdCAqc3opCiBpbnQKIG5hbWVpX2ZvbGxvd19saW5rKHN0cnVjdCBkZW50
cnkgKmRwLCBjaGFyICpub2RlLCBjaGFyICpuYW1lLCBjaGFyICpmcCwgc2l6ZV90IG1vdW50cG9p
bnRfbGVuKQogewotCXN0ZDo6dW5pcXVlX3B0cjxjaGFyIFtdPiBsaW5rIChuZXcgY2hhcltQQVRI
X01BWF0pOwotCXN0ZDo6dW5pcXVlX3B0cjxjaGFyIFtdPiB0IChuZXcgY2hhcltQQVRIX01BWF0p
OwotCWNoYXIgICAgKmxwOworCWNoYXIgbGlua1tQQVRIX01BWF07CisJY2hhciB0W1BBVEhfTUFY
XTsKIAlpbnQgICAgIGVycm9yOwogCXNzaXplX3Qgc3o7CiAJY2hhciAgICAqcDsKIAlpbnQgICAg
IGM7CiAKLQlscCAgICA9IGxpbmsuZ2V0KCk7Ci0JZXJyb3IgPSByZWFkX2xpbmsoZHAtPmRfdm5v
ZGUsIGxwLCBQQVRIX01BWCwgJnN6KTsKKwllcnJvciA9IHJlYWRfbGluayhkcC0+ZF92bm9kZSwg
bGluaywgUEFUSF9NQVgsICZzeik7CiAJaWYgKGVycm9yICE9IDApIHsKIAkJcmV0dXJuIChlcnJv
cik7CiAJfQotCWxwW3N6XSA9IDA7CisJbGlua1tzel0gPSAwOwogCiAJcCA9IGZwICsgbW91bnRw
b2ludF9sZW4gKyBzdHJsZW4obm9kZSk7CiAJYyA9IHN0cmxlbihub2RlKSAtIHN0cmxlbihuYW1l
KSAtIDE7CiAJbm9kZVtjXSA9IDA7CiAKLQlpZiAobHBbMF0gPT0gJy8nKSB7Ci0JCXN0cmxjYXQo
bHAsIHAsIFBBVEhfTUFYKTsKLQkJc3RybGNweShmcCwgbHAsIFBBVEhfTUFYKTsKKwlpZiAobGlu
a1swXSA9PSAnLycpIHsKKwkJc3RybGNhdChsaW5rLCBwLCBQQVRIX01BWCk7CisJCXN0cmxjcHko
ZnAsIGxpbmssIFBBVEhfTUFYKTsKIAl9IGVsc2UgewotCQlzdHJsY3B5KHQuZ2V0KCksIHAsIFBB
VEhfTUFYKTsKKwkJc3RybGNweSh0LCBwLCBQQVRIX01BWCk7CiAJCXN0cmxjcHkobm9kZSwgZnAs
IG1vdW50cG9pbnRfbGVuICsgYyArIDEpOwotCQlwYXRoX2NvbnYobm9kZSwgbHAsIGZwKTsKLQkJ
c3RybGNhdChmcCwgdC5nZXQoKSwgUEFUSF9NQVgpOworCQlwYXRoX2NvbnYobm9kZSwgbGluaywg
ZnApOworCQlzdHJsY2F0KGZwLCB0LCBQQVRIX01BWCk7CiAJfQogCW5vZGVbMF0gPSAwOwogCW5h
bWVbMF0gPSAwOwpAQCAtMTA3LDggKzEwNSw3IEBAIG5hbWVpKGNvbnN0IGNoYXIgKnBhdGgsIHN0
cnVjdCBkZW50cnkgKipkcHApCiAJY2hhciAqcDsKIAljaGFyIG5vZGVbUEFUSF9NQVhdOwogCWNo
YXIgbmFtZVtQQVRIX01BWF07Ci0Jc3RkOjp1bmlxdWVfcHRyPGNoYXIgW10+IGZwIChuZXcgY2hh
ciBbUEFUSF9NQVhdKTsKLQlzdGQ6OnVuaXF1ZV9wdHI8Y2hhciBbXT4gdCAobmV3IGNoYXIgW1BB
VEhfTUFYXSk7CisJY2hhciBmcFtQQVRIX01BWF07CiAJc3RydWN0IG1vdW50ICptcDsKIAlzdHJ1
Y3QgZGVudHJ5ICpkcCwgKmRkcDsKIAlzdHJ1Y3Qgdm5vZGUgKmR2cCwgKnZwOwpAQCAtMTE5LDcg
KzExNiw3IEBAIG5hbWVpKGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBkZW50cnkgKipkcHApCiAJ
RFBSSU5URihWRlNEQl9WTk9ERSwgKCJuYW1laTogcGF0aD0lc1xuIiwgcGF0aCkpOwogCiAJbGlu
a3NfZm9sbG93ZWQgPSAwOwotCXN0cmxjcHkoZnAuZ2V0KCksIHBhdGgsIFBBVEhfTUFYKTsKKwlz
dHJsY3B5KGZwLCBwYXRoLCBQQVRIX01BWCk7CiAKIAlkbyB7CiAJCW5lZWRfY29udGludWUgPSBm
YWxzZTsKQEAgLTEyNywxMCArMTI0LDEwIEBAIG5hbWVpKGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVj
dCBkZW50cnkgKipkcHApCiAJCSAqIENvbnZlcnQgYSBmdWxsIHBhdGggbmFtZSB0byBpdHMgbW91
bnQgcG9pbnQgYW5kCiAJCSAqIHRoZSBsb2NhbCBub2RlIGluIHRoZSBmaWxlIHN5c3RlbS4KIAkJ
ICovCi0JCWlmICh2ZnNfZmluZHJvb3QoZnAuZ2V0KCksICZtcCwgJnApKSB7CisJCWlmICh2ZnNf
ZmluZHJvb3QoZnAsICZtcCwgJnApKSB7CiAJCQlyZXR1cm4gRU5PVERJUjsKIAkJfQotCQlpbnQg
bW91bnRwb2ludF9sZW4gPSBwIC0gZnAuZ2V0KCkgLSAxOworCQlpbnQgbW91bnRwb2ludF9sZW4g
PSBwIC0gZnAgLSAxOwogCQlzdHJsY3B5KG5vZGUsICIvIiwgc2l6ZW9mKG5vZGUpKTsKIAkJc3Ry
bGNhdChub2RlLCBwLCBzaXplb2Yobm9kZSkpOwogCQlkcCA9IGRlbnRyeV9sb29rdXAobXAsIG5v
ZGUpOwpAQCAtMjAzLDcgKzIwMCw3IEBAIG5hbWVpKGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBk
ZW50cnkgKipkcHApCiAJCQlkZHAgPSBkcDsKIAogCQkJaWYgKGRwLT5kX3Zub2RlLT52X3R5cGUg
PT0gVkxOSykgewotCQkJCWVycm9yID0gbmFtZWlfZm9sbG93X2xpbmsoZHAsIG5vZGUsIG5hbWUs
IGZwLmdldCgpLCBtb3VudHBvaW50X2xlbik7CisJCQkJZXJyb3IgPSBuYW1laV9mb2xsb3dfbGlu
ayhkcCwgbm9kZSwgbmFtZSwgZnAsIG1vdW50cG9pbnRfbGVuKTsKIAkJCQlpZiAoZXJyb3IpIHsK
IAkJCQkJZHJlbGUoZHApOwogCQkJCQlyZXR1cm4gKGVycm9yKTsKQEAgLTIxMSw3ICsyMDgsNyBA
QCBuYW1laShjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3QgZGVudHJ5ICoqZHBwKQogCiAJCQkJZHJl
bGUoZHApOwogCi0JCQkJcCAgICAgICA9IGZwLmdldCgpOworCQkJCXAgICAgICAgPSBmcDsKIAkJ
CQlkcCAgICAgID0gbnVsbHB0cjsKIAkJCQlkZHAgICAgID0gbnVsbHB0cjsKIAkJCQl2cCAgICAg
ID0gbnVsbHB0cjsKQEAgLTI1NCw3ICsyNTEsNyBAQCBuYW1laV9sYXN0X25vZm9sbG93KGNoYXIg
KnBhdGgsIHN0cnVjdCBkZW50cnkgKmRkcCwgc3RydWN0IGRlbnRyeSAqKmRwcCkKIAlzdHJ1Y3Qg
ZGVudHJ5ICpkcDsKIAlzdHJ1Y3Qgdm5vZGUgICpkdnA7CiAJc3RydWN0IHZub2RlICAqdnA7Ci0J
c3RkOjp1bmlxdWVfcHRyPGNoYXIgW10+IG5vZGUgKG5ldyBjaGFyW1BBVEhfTUFYXSk7CisJY2hh
ciBub2RlW1BBVEhfTUFYXTsKIAogCWR2cCAgPSBudWxscHRyOwogCkBAIC0yNzMsMjYgKzI3MCwy
NiBAQCBuYW1laV9sYXN0X25vZm9sbG93KGNoYXIgKnBhdGgsIHN0cnVjdCBkZW50cnkgKmRkcCwg
c3RydWN0IGRlbnRyeSAqKmRwcCkKIAkJcmV0dXJuIChFTk9URElSKTsKIAl9CiAKLQlzdHJsY3B5
KG5vZGUuZ2V0KCksICIvIiwgUEFUSF9NQVgpOwotCXN0cmxjYXQobm9kZS5nZXQoKSwgcCwgUEFU
SF9NQVgpOworCXN0cmxjcHkobm9kZSwgIi8iLCBQQVRIX01BWCk7CisJc3RybGNhdChub2RlLCBw
LCBQQVRIX01BWCk7CiAKIAkvLyBXZSB3YW50IHRvIHRyZWF0IHRoaW5ncyBsaWtlIC90bXAvIHRo
ZSBzYW1lIGFzIC90bXAuIEJlc3Qgd2F5IHRvIGRvIHRoYXQKIAkvLyBpcyB0byBpZ25vcmUgdGhl
IGxhc3QgY2hhcmFjdGVyLCBleGNlcHQgd2hlbiB3ZSdyZSBzdGF0aW5nIHRoZSByb290LgotCWF1
dG8gbCA9IHN0cmxlbihub2RlLmdldCgpKSAtIDE7Ci0JaWYgKGwgJiYgbm9kZS5nZXQoKVtsXSA9
PSAnLycpIHsKLQkJbm9kZS5nZXQoKVtsXSA9ICdcMCc7CisJaW50IGwgPSBzdHJsZW4obm9kZSkg
LSAxOworCWlmIChsICYmIG5vZGVbbF0gPT0gJy8nKSB7CisJCW5vZGVbbF0gPSAnXDAnOwogCX0K
IAogCWR2cCA9IGRkcC0+ZF92bm9kZTsKIAl2bl9sb2NrKGR2cCk7Ci0JZHAgPSBkZW50cnlfbG9v
a3VwKG1wLCBub2RlLmdldCgpKTsKKwlkcCA9IGRlbnRyeV9sb29rdXAobXAsIG5vZGUpOwogCWlm
IChkcCA9PSBudWxscHRyKSB7CiAJCWVycm9yID0gVk9QX0xPT0tVUChkdnAsIG5hbWUsICZ2cCk7
CiAJCWlmIChlcnJvciAhPSAwKSB7CiAJCQlnb3RvIG91dDsKIAkJfQogCi0JCWRwID0gZGVudHJ5
X2FsbG9jKGRkcCwgdnAsIG5vZGUuZ2V0KCkpOworCQlkcCA9IGRlbnRyeV9hbGxvYyhkZHAsIHZw
LCBub2RlKTsKIAkJdnB1dCh2cCk7CiAKIAkJaWYgKGRwID09IG51bGxwdHIpIHsKZGlmZiAtLWdp
dCBhL2xpYi92ZnNjb3JlL21haW4uYyBiL2xpYi92ZnNjb3JlL21haW4uYwppbmRleCBlMzAwNDU5
Ny4uNzQ4NzZkYzEgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL21haW4uYworKysgYi9saWIvdmZz
Y29yZS9tYWluLmMKQEAgLTc3LDE4ICs3NywxNiBAQAogI2luY2x1ZGUgPGFwaS91dGltZS5oPgog
I2luY2x1ZGUgPGNocm9ubz4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogCiAjaWZkZWYgREVC
VUdfVkZTCiBpbnQJdmZzX2RlYnVnID0gVkZTREJfRkxBR1M7CiAjZW5kaWYKIAotc3RkOjphdG9t
aWM8bW9kZV90PiBnbG9iYWxfdW1hc2t7U19JV0dSUCB8IFNfSVdPVEh9Oworc3RhdGljIG1vZGVf
dCBnbG9iYWxfdW1hc2sgPSBTX0lXR1JQIHwgU19JV09USDsKIAogc3RhdGljIGlubGluZSBtb2Rl
X3QgYXBwbHlfdW1hc2sobW9kZV90IG1vZGUpCiB7Ci0JcmV0dXJuIG1vZGUgJiB+Z2xvYmFsX3Vt
YXNrLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7CisJcmV0dXJuIG1vZGUgJiB+dWth
cmNoX2xvYWRfbigmZ2xvYmFsX3VtYXNrKTsKIH0KIAogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfb3Bl
biwgIlwiJXNcIiAweCV4IDAlMG8iLCBjb25zdCBjaGFyKiwgaW50LCBtb2RlX3QpOwpAQCAtOTcs
NyArOTUsNiBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19vcGVuX2VyciwgIiVkIiwgaW50KTsKIAog
c3RydWN0IHRhc2sgKm1haW5fdGFzazsJLyogd2Ugb25seSBoYXZlIGEgc2luZ2xlIHByb2Nlc3Mg
Ki8KIAotZXh0ZXJuICJDIgogaW50IG9wZW4oY29uc3QgY2hhciAqcGF0aG5hbWUsIGludCBmbGFn
cywgLi4uKQogewogCW1vZGVfdCBtb2RlID0gMDsKQEAgLTE3OCw4ICsxNzUsNyBAQCBpbnQgb3Bl
bmF0KGludCBkaXJmZCwgY29uc3QgY2hhciAqcGF0aG5hbWUsIGludCBmbGFncywgLi4uKQogCXN0
cnVjdCB2bm9kZSAqdnAgPSBmcC0+Zl9kZW50cnktPmRfdm5vZGU7CiAJdm5fbG9jayh2cCk7CiAK
LQlzdGQ6OnVuaXF1ZV9wdHI8Y2hhciBbXT4gdXAgKG5ldyBjaGFyW1BBVEhfTUFYXSk7Ci0JY2hh
ciAqcCA9IHVwLmdldCgpOworCWNoYXIgcFtQQVRIX01BWF07CiAKIAkvKiBidWlsZCBhYnNvbHV0
ZSBwYXRoICovCiAJc3RybGNweShwLCBmcC0+Zl9kZW50cnktPmRfbW91bnQtPm1fcGF0aCwgUEFU
SF9NQVgpOwpAQCAtMTk2LDI2ICsxOTIsNiBAQCBpbnQgb3BlbmF0KGludCBkaXJmZCwgY29uc3Qg
Y2hhciAqcGF0aG5hbWUsIGludCBmbGFncywgLi4uKQogfQogTEZTNjQob3BlbmF0KTsKIAotLy8g
b3BlbigpIGhhcyBhbiBvcHRpb25hbCB0aGlyZCBhcmd1bWVudCwgIm1vZGUiLCB3aGljaCBpcyBv
bmx5IG5lZWRlZCBpbgotLy8gc29tZSBjYXNlcyAod2hlbiB0aGUgT19DUkVBVCBtb2RlIGlzIHVz
ZWQpLiBBcyBhIHNhZmV0eSBmZWF0dXJlLCByZWNlbnQKLS8vIHZlcnNpb25zIG9mIEdsaWJjIGFk
ZCBhIGZlYXR1cmUgd2hlcmUgb3BlbigpIHdpdGggdHdvIGFyZ3VtZW50cyBpcyByZXBsYWNlZAot
Ly8gYnkgYSBjYWxsIHRvIF9fb3Blbl8yKCksIHdoaWNoIHZlcmlmaWVzIGl0IGlzbid0IGNhbGxl
ZCB3aXRoIE9fQ1JFQVRFLgotZXh0ZXJuICJDIiBpbnQgX19vcGVuXzIoY29uc3QgY2hhciAqcGF0
aG5hbWUsIGludCBmbGFncykKLXsKLQlhc3NlcnQoIShmbGFncyAmIE9fQ1JFQVQpKTsKLQlyZXR1
cm4gb3BlbihwYXRobmFtZSwgZmxhZ3MsIDApOwotfQotCi1leHRlcm4gIkMiIGludCBfX29wZW42
NF8yKGNvbnN0IGNoYXIgKmZpbGUsIGludCBmbGFncykKLXsKLQlpZiAoZmxhZ3MgJiBPX0NSRUFU
KSB7Ci0JCWVycm5vID0gRUlOVkFMOwotCQlyZXR1cm4gLTE7Ci0JfQotCi0JcmV0dXJuIG9wZW42
NChmaWxlLCBmbGFncyk7Ci19Ci0KIGludCBjcmVhdChjb25zdCBjaGFyICpwYXRobmFtZSwgbW9k
ZV90IG1vZGUpCiB7CiAJcmV0dXJuIG9wZW4ocGF0aG5hbWUsIE9fQ1JFQVR8T19XUk9OTFl8T19U
UlVOQywgbW9kZSk7CkBAIC0yNDksNyArMjI1LDYgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbWtu
b2RfcmV0LCAiIik7CiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19ta25vZF9lcnIsICIlZCIsIGludCk7
CiAKIAotZXh0ZXJuICJDIgogaW50IF9feG1rbm9kKGludCB2ZXIsIGNvbnN0IGNoYXIgKnBhdGhu
YW1lLCBtb2RlX3QgbW9kZSwgZGV2X3QgKmRldikKIHsKIAlhc3NlcnQodmVyID09IDApOyAvLyBP
biB4ODYtNjQgTGludXgsIF9NS05PRF9WRVJfTElOVVggaXMgMC4KQEAgLTU0Myw3ICs1MTgsNiBA
QCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19mc3RhdCwgIiVkICVwIiwgaW50LCBzdHJ1Y3Qgc3RhdCop
OwogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZnN0YXRfcmV0LCAiIik7CiBUUkFDRVBPSU5UKHRyYWNl
X3Zmc19mc3RhdF9lcnIsICIlZCIsIGludCk7CiAKLWV4dGVybiAiQyIKIGludCBfX2Z4c3RhdChp
bnQgdmVyLCBpbnQgZmQsIHN0cnVjdCBzdGF0ICpzdCkKIHsKIAlzdHJ1Y3QgZmlsZSAqZnA7CkBA
IC01NzEsNyArNTQ1LDYgQEAgaW50IF9fZnhzdGF0KGludCB2ZXIsIGludCBmZCwgc3RydWN0IHN0
YXQgKnN0KQogCiBMRlM2NChfX2Z4c3RhdCk7CiAKLWV4dGVybiAiQyIKIGludCBmc3RhdChpbnQg
ZmQsIHN0cnVjdCBzdGF0ICpzdCkKIHsKIAlyZXR1cm4gX19meHN0YXQoMSwgZmQsIHN0KTsKQEAg
LTU3OSw3ICs1NTIsNiBAQCBpbnQgZnN0YXQoaW50IGZkLCBzdHJ1Y3Qgc3RhdCAqc3QpCiAKIExG
UzY0KGZzdGF0KTsKIAotZXh0ZXJuICJDIgogaW50IF9fZnhzdGF0YXQoaW50IHZlciwgaW50IGRp
cmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwgc3RydWN0IHN0YXQgKnN0LAogCQlpbnQgZmxhZ3Mp
CiB7CkBAIC02MDYsOCArNTc4LDcgQEAgaW50IF9fZnhzdGF0YXQoaW50IHZlciwgaW50IGRpcmZk
LCBjb25zdCBjaGFyICpwYXRobmFtZSwgc3RydWN0IHN0YXQgKnN0LAogCXN0cnVjdCB2bm9kZSAq
dnAgPSBmcC0+Zl9kZW50cnktPmRfdm5vZGU7CiAJdm5fbG9jayh2cCk7CiAKLQlzdGQ6OnVuaXF1
ZV9wdHI8Y2hhciBbXT4gdXAgKG5ldyBjaGFyW1BBVEhfTUFYXSk7Ci0JY2hhciAqcCA9IHVwLmdl
dCgpOworCWNoYXIgcFtQQVRIX01BWF07CiAJLyogYnVpbGQgYWJzb2x1dGUgcGF0aCAqLwogCXN0
cmxjcHkocCwgZnAtPmZfZGVudHJ5LT5kX21vdW50LT5tX3BhdGgsIFBBVEhfTUFYKTsKIAlzdHJs
Y2F0KHAsIGZwLT5mX2RlbnRyeS0+ZF9wYXRoLCBQQVRIX01BWCk7CkBAIC02MjQsNyArNTk1LDYg
QEAgaW50IF9fZnhzdGF0YXQoaW50IHZlciwgaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFt
ZSwgc3RydWN0IHN0YXQgKnN0LAogCiBMRlM2NChfX2Z4c3RhdGF0KTsKIAotZXh0ZXJuICJDIgog
aW50IGZzdGF0YXQoaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3Qgc3RhdCAqc3Qs
IGludCBmbGFncykKIHsKIAlyZXR1cm4gX19meHN0YXRhdCgxLCBkaXJmZCwgcGF0aCwgc3QsIGZs
YWdzKTsKQEAgLTYzMiw3ICs2MDIsNyBAQCBpbnQgZnN0YXRhdChpbnQgZGlyZmQsIGNvbnN0IGNo
YXIgKnBhdGgsIHN0cnVjdCBzdGF0ICpzdCwgaW50IGZsYWdzKQogCiBMRlM2NChmc3RhdGF0KTsK
IAotZXh0ZXJuICJDIiBpbnQgZmxvY2soaW50IGZkLCBpbnQgb3BlcmF0aW9uKQoraW50IGZsb2Nr
KGludCBmZCwgaW50IG9wZXJhdGlvbikKIHsKIAlpZiAoIWZpbGVyZWZfZnJvbV9mZChmZCkpIHsK
IAkJcmV0dXJuIGxpYmNfZXJyb3IoRUJBREYpOwpAQCAtNjYzLDE0ICs2MzMsMTQgQEAgc3RydWN0
IF9fZGlyc3RyZWFtCiAKIERJUiAqb3BlbmRpcihjb25zdCBjaGFyICpwYXRoKQogewotCURJUiAq
ZGlyID0gbmV3IERJUjsKKwlESVIgKmRpciA9IG1hbGxvYyhzaXplb2YoKmRpcikpOwogCiAJaWYg
KCFkaXIpCi0JCXJldHVybiBsaWJjX2Vycm9yX3B0cjxESVI+KEVOT01FTSk7CisJCXJldHVybiBF
UlIyUFRSKC1FTk9NRU0pOwogCiAJZGlyLT5mZCA9IG9wZW4ocGF0aCwgT19SRE9OTFkpOwogCWlm
IChkaXItPmZkIDwgMCkgewotCQlkZWxldGUgZGlyOworCQlmcmVlKGRpcik7CiAJCXJldHVybiBu
dWxscHRyOwogCX0KIAlyZXR1cm4gZGlyOwpAQCAtNjg3LDcgKzY1NywxMSBAQCBESVIgKmZkb3Bl
bmRpcihpbnQgZmQpCiAJCWVycm5vID0gRU5PVERJUjsKIAkJcmV0dXJuIG51bGxwdHI7CiAJfQot
CWRpciA9IG5ldyBESVI7CisJZGlyID0gbWFsbG9jKHNpemVvZigqZGlyKSk7CisJaWYgKCFkaXIp
IHsKKwkJZXJybm8gPSBFTk9NRU07CisJCXJldHVybiBOVUxMOworCX0KIAlkaXItPmZkID0gZmQ7
CiAJcmV0dXJuIGRpcjsKIApAQCAtNzA1LDcgKzY3OSw3IEBAIGludCBkaXJmZChESVIgKmRpcnAp
CiBpbnQgY2xvc2VkaXIoRElSICpkaXIpCiB7CiAJY2xvc2UoZGlyLT5mZCk7Ci0JZGVsZXRlIGRp
cjsKKwlmcmVlKGRpcik7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTcxNiw3ICs2OTAsNyBAQCBzdHJ1
Y3QgZGlyZW50ICpyZWFkZGlyKERJUiAqZGlyKQogCiAJcmV0ID0gcmVhZGRpcl9yKGRpciwgJmVu
dHJ5LCAmcmVzdWx0KTsKIAlpZiAocmV0KQotCQlyZXR1cm4gbGliY19lcnJvcl9wdHI8c3RydWN0
IGRpcmVudD4ocmV0KTsKKwkJcmV0dXJuIEVSUjJQVFIoLXJldCk7CiAKIAllcnJubyA9IDA7CiAJ
cmV0dXJuIHJlc3VsdDsKQEAgLTc1MywxOCArNzI3LDE4IEBAIGludCByZWFkZGlyX3IoRElSICpk
aXIsIHN0cnVjdCBkaXJlbnQgKmVudHJ5LCBzdHJ1Y3QgZGlyZW50ICoqcmVzdWx0KQogCiAvLyBG
SVhNRTogaW4gNjRiaXQgZGlyZW50NjQgYW5kIGRpcmVudCBhcmUgaWRlbnRpY2FsLCBzbyBpdCdz
IHNhZmUgdG8gYWxpYXMKICN1bmRlZiByZWFkZGlyNjRfcgotZXh0ZXJuICJDIiBpbnQgcmVhZGRp
cjY0X3IoRElSICpkaXIsIHN0cnVjdCBkaXJlbnQ2NCAqZW50cnksCitpbnQgcmVhZGRpcjY0X3Io
RElSICpkaXIsIHN0cnVjdCBkaXJlbnQ2NCAqZW50cnksCiAJCXN0cnVjdCBkaXJlbnQ2NCAqKnJl
c3VsdCkKIAkJX19hdHRyaWJ1dGVfXygoYWxpYXMoInJlYWRkaXJfciIpKSk7CiAKICN1bmRlZiBy
ZWFkZGlyNjQKLWV4dGVybiAiQyIgc3RydWN0IGRpcmVudCAqcmVhZGRpcjY0KERJUiAqZGlyKSBf
X2F0dHJpYnV0ZV9fKChhbGlhcygicmVhZGRpciIpKSk7CitzdHJ1Y3QgZGlyZW50ICpyZWFkZGly
NjQoRElSICpkaXIpIF9fYXR0cmlidXRlX18oKGFsaWFzKCJyZWFkZGlyIikpKTsKIAogdm9pZCBy
ZXdpbmRkaXIoRElSICpkaXJwKQogewogCXN0cnVjdCBmaWxlICpmcDsKIAotCWF1dG8gZXJyb3Ig
PSBmZ2V0KGRpcnAtPmZkLCAmZnApOworCWludCBlcnJvciA9IGZnZXQoZGlycC0+ZmQsICZmcCk7
CiAJaWYgKGVycm9yKSB7CiAJCS8vIFBPU0lYIHNwZWNpZmllcyB0aGF0IHdoYXQgcmV3aW5kZGly
KCkgZG9lcyBpbiB0aGUgY2FzZSBvZiBlcnJvcgogCQkvLyBpcyB1bmRlZmluZWQuLi4KQEAgLTkz
NiwyMyArOTEwLDIxIEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2NoZGlyLCAiXCIlc1wiIiwgY29u
c3QgY2hhciopOwogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfY2hkaXJfcmV0LCAiIik7CiBUUkFDRVBP
SU5UKHRyYWNlX3Zmc19jaGRpcl9lcnIsICIlZCIsIGludCk7CiAKLXN0YXRpYyBpbnQgcmVwbGFj
ZV9jd2Qoc3RydWN0IHRhc2sgKnQsIHN0cnVjdCBmaWxlICpuZXdfY3dkZnAsCi0JCQkJCSAgIHN0
ZDo6ZnVuY3Rpb248aW50ICh2b2lkKT4gY2hkaXJfZnVuYykKK3N0YXRpYyBpbnQKK19fZG9fZmNo
ZGlyKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwLCBzdHJ1Y3QgdGFzayAqdCkKIHsKIAlzdHJ1Y3Qg
ZmlsZSAqb2xkID0gbnVsbHB0cjsKIAotCWlmICghdCkgewotCQlyZXR1cm4gMDsKLQl9CisJVUtf
QVNTRVJUKHQpOwogCiAJaWYgKHQtPnRfY3dkZnApIHsKIAkJb2xkID0gdC0+dF9jd2RmcDsKIAl9
CiAKIAkvKiBEbyB0aGUgYWN0dWFsIGNoZGlyIG9wZXJhdGlvbiBoZXJlICovCi0JaW50IGVycm9y
ID0gY2hkaXJfZnVuYygpOworCWludCBlcnJvciA9IHN5c19mY2hkaXIoZnAsIHQtPnRfY3dkKTsK
IAotCXQtPnRfY3dkZnAgPSBuZXdfY3dkZnA7CisJdC0+dF9jd2RmcCA9IGZwOwogCWlmIChvbGQp
IHsKIAkJZmRyb3Aob2xkKTsKIAl9CkBAIC05ODEsNyArOTUzLDExIEBAIGludCBjaGRpcihjb25z
dCBjaGFyICpwYXRobmFtZSkKIAkJZ290byBvdXRfZXJybm87CiAJfQogCi0JcmVwbGFjZV9jd2Qo
dCwgZnAsIFsmXSgpIHsgc3RybGNweSh0LT50X2N3ZCwgcGF0aCwgc2l6ZW9mKHQtPnRfY3dkKSk7
IHJldHVybiAwOyB9KTsKKwllcnJvciA9IF9fZG9fZmNoZGlyKGZwLCB0KTsKKwlpZiAoZXJyb3Ip
IHsKKwkJZmRyb3AoZnApOworCQlnb3RvIG91dF9lcnJubzsKKwl9CiAKIAl0cmFjZV92ZnNfY2hk
aXJfcmV0KCk7CiAJcmV0dXJuIDA7CkBAIC0xMDA2LDcgKzk4Miw3IEBAIGludCBmY2hkaXIoaW50
IGZkKQogCWlmIChlcnJvcikKIAkJZ290byBvdXRfZXJybm87CiAKLQllcnJvciA9IHJlcGxhY2Vf
Y3dkKHQsIGZwLCBbJl0oKSB7IHJldHVybiBzeXNfZmNoZGlyKGZwLCB0LT50X2N3ZCk7IH0pOwor
CWVycm9yID0gX19kb19mY2hkaXIoZnAsIHQpOwogCWlmIChlcnJvcikgewogCQlmZHJvcChmcCk7
CiAJCWdvdG8gb3V0X2Vycm5vOwpAQCAtMTExNCw3ICsxMDkwLDYgQEAgVFJBQ0VQT0lOVCh0cmFj
ZV92ZnNfc3RhdCwgIlwiJXNcIiAlcCIsIGNvbnN0IGNoYXIqLCBzdHJ1Y3Qgc3RhdCopOwogVFJB
Q0VQT0lOVCh0cmFjZV92ZnNfc3RhdF9yZXQsICIiKTsKIFRSQUNFUE9JTlQodHJhY2VfdmZzX3N0
YXRfZXJyLCAiJWQiLCBpbnQpOwogCi1leHRlcm4gIkMiCiBpbnQgX194c3RhdChpbnQgdmVyLCBj
b25zdCBjaGFyICpwYXRobmFtZSwgc3RydWN0IHN0YXQgKnN0KQogewogCXN0cnVjdCB0YXNrICp0
ID0gbWFpbl90YXNrOwpAQCAtMTE1MSw3ICsxMTI2LDYgQEAgTEZTNjQoc3RhdCk7CiBUUkFDRVBP
SU5UKHRyYWNlX3Zmc19sc3RhdCwgInBhdGhuYW1lPSVzLCBzdGF0PSVwIiwgY29uc3QgY2hhcios
IHN0cnVjdCBzdGF0Kik7CiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19sc3RhdF9yZXQsICIiKTsKIFRS
QUNFUE9JTlQodHJhY2VfdmZzX2xzdGF0X2VyciwgImVycm5vPSVkIiwgaW50KTsKLWV4dGVybiAi
QyIKIGludCBfX2x4c3RhdChpbnQgdmVyLCBjb25zdCBjaGFyICpwYXRobmFtZSwgc3RydWN0IHN0
YXQgKnN0KQogewogCXN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOwpAQCAtMTE5MSw3ICsxMTY1
LDYgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfc3RhdGZzLCAiXCIlc1wiICVwIiwgY29uc3QgY2hh
ciosIHN0cnVjdCBzdGF0ZnMqKTsKIFRSQUNFUE9JTlQodHJhY2VfdmZzX3N0YXRmc19yZXQsICIi
KTsKIFRSQUNFUE9JTlQodHJhY2VfdmZzX3N0YXRmc19lcnIsICIlZCIsIGludCk7CiAKLWV4dGVy
biAiQyIKIGludCBfX3N0YXRmcyhjb25zdCBjaGFyICpwYXRobmFtZSwgc3RydWN0IHN0YXRmcyAq
YnVmKQogewogCXRyYWNlX3Zmc19zdGF0ZnMocGF0aG5hbWUsIGJ1Zik7CkBAIC0xMjIxLDcgKzEx
OTQsNiBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19mc3RhdGZzLCAiXCIlc1wiICVwIiwgaW50LCBz
dHJ1Y3Qgc3RhdGZzKik7CiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19mc3RhdGZzX3JldCwgIiIpOwog
VFJBQ0VQT0lOVCh0cmFjZV92ZnNfZnN0YXRmc19lcnIsICIlZCIsIGludCk7CiAKLWV4dGVybiAi
QyIKIGludCBfX2ZzdGF0ZnMoaW50IGZkLCBzdHJ1Y3Qgc3RhdGZzICpidWYpCiB7CiAJc3RydWN0
IGZpbGUgKmZwOwpAQCAtMTQyNCwxMSArMTM5NiwxMSBAQCBpbnQgZHVwMihpbnQgb2xkZmQsIGlu
dCBuZXdmZCkKICAqLwogI2RlZmluZSBTRVRGTCAoT19BUFBFTkQgfCBPX0FTWU5DIHwgT19ESVJF
Q1QgfCBPX05PQVRJTUUgfCBPX05PTkJMT0NLKQogCisjaWYgMAogVFJBQ0VQT0lOVCh0cmFjZV92
ZnNfZmNudGwsICIlZCAlZCAweCV4IiwgaW50LCBpbnQsIGludCk7CiBUUkFDRVBPSU5UKHRyYWNl
X3Zmc19mY250bF9yZXQsICJcIiVzXCIiLCBpbnQpOwogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZmNu
dGxfZXJyLCAiJWQiLCBpbnQpOwogCi1leHRlcm4gIkMiCiBpbnQgZmNudGwoaW50IGZkLCBpbnQg
Y21kLCBpbnQgYXJnKQogewogCXN0cnVjdCBmaWxlICpmcDsKQEAgLTE1MDksNiArMTQ4MSw3IEBA
IGludCBmY250bChpbnQgZmQsIGludCBjbWQsIGludCBhcmcpCiAJZXJybm8gPSBlcnJvcjsKIAly
ZXR1cm4gLTE7CiB9CisjZW5kaWYKIAogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfYWNjZXNzLCAiXCIl
c1wiIDAlMG8iLCBjb25zdCBjaGFyKiwgaW50KTsKIFRSQUNFUE9JTlQodHJhY2VfdmZzX2FjY2Vz
c19yZXQsICIiKTsKQEAgLTE1NjQsOCArMTUzNyw3IEBAIGludCBmYWNjZXNzYXQoaW50IGRpcmZk
LCBjb25zdCBjaGFyICpwYXRobmFtZSwgaW50IG1vZGUsIGludCBmbGFncykKIAlzdHJ1Y3Qgdm5v
ZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOwogCXZuX2xvY2sodnApOwogCi0Jc3RkOjp1
bmlxdWVfcHRyPGNoYXIgW10+IHVwIChuZXcgY2hhcltQQVRIX01BWF0pOwotCWNoYXIgKnAgPSB1
cC5nZXQoKTsKKwljaGFyIHBbUEFUSF9NQVhdOwogCiAJLyogYnVpbGQgYWJzb2x1dGUgcGF0aCAq
LwogCXN0cmxjcHkocCwgZnAtPmZfZGVudHJ5LT5kX21vdW50LT5tX3BhdGgsIFBBVEhfTUFYKTsK
QEAgLTE1ODEsNyArMTU1Myw2IEBAIGludCBmYWNjZXNzYXQoaW50IGRpcmZkLCBjb25zdCBjaGFy
ICpwYXRobmFtZSwgaW50IG1vZGUsIGludCBmbGFncykKIAlyZXR1cm4gZXJyb3I7CiB9CiAKLWV4
dGVybiAiQyIgCiBpbnQgZXVpZGFjY2Vzcyhjb25zdCBjaGFyICpwYXRobmFtZSwgaW50IG1vZGUp
CiB7CiAJcmV0dXJuIGFjY2VzcyhwYXRobmFtZSwgbW9kZSk7CkBAIC0xNTkwLDU0ICsxNTYxLDYg
QEAgaW50IGV1aWRhY2Nlc3MoY29uc3QgY2hhciAqcGF0aG5hbWUsIGludCBtb2RlKQogd2Vha19h
bGlhcyhldWlkYWNjZXNzLGVhY2Nlc3MpOwogCiAjaWYgMAotc3RhdGljIGludAotZnNfcGlwZShz
dHJ1Y3QgdGFzayAqdCwgc3RydWN0IG1zZyAqbXNnKQotewotI2lmZGVmIENPTkZJR19GSUZPRlMK
LQljaGFyIHBhdGhbUEFUSF9NQVhdOwotCWZpbGVfdCByZnAsIHdmcDsKLQlpbnQgZXJyb3IsIHJm
ZCwgd2ZkOwotCi0JRFBSSU5URihWRlNEQl9DT1JFLCAoImZzX3BpcGVcbiIpKTsKLQotCWlmICgo
cmZkID0gdGFza19uZXdmZCh0KSkgPT0gLTEpCi0JCXJldHVybiBFTUZJTEU7Ci0JdC0+dF9vZmls
ZVtyZmRdID0gKGZpbGVfdCkxOyAvKiB0ZW1wICovCi0KLQlpZiAoKHdmZCA9IHRhc2tfbmV3ZmQo
dCkpID09IC0xKSB7Ci0JCXQtPnRfb2ZpbGVbcmZkXSA9IG51bGxwdHI7Ci0JCXJldHVybiBFTUZJ
TEU7Ci0JfQotCXNwcmludGYocGF0aCwgIi9tbnQvZmlmby9waXBlLSV4LSVkIiwgKHVfaW50KXQt
PnRfdGFza2lkLCByZmQpOwotCi0JaWYgKChlcnJvciA9IHN5c19ta25vZChwYXRoLCBTX0lGSUZP
KSkgIT0gMCkKLQkJZ290byBvdXQ7Ci0JaWYgKChlcnJvciA9IHN5c19vcGVuKHBhdGgsIE9fUkRP
TkxZIHwgT19OT05CTE9DSywgMCwgJnJmcCkpICE9IDApIHsKLQkJZ290byBvdXQ7Ci0JfQotCWlm
ICgoZXJyb3IgPSBzeXNfb3BlbihwYXRoLCBPX1dST05MWSB8IE9fTk9OQkxPQ0ssIDAsICZ3ZnAp
KSAhPSAwKSB7Ci0JCWdvdG8gb3V0OwotCX0KLQl0LT50X29maWxlW3JmZF0gPSByZnA7Ci0JdC0+
dF9vZmlsZVt3ZmRdID0gd2ZwOwotCXQtPnRfbm9wZW5zICs9IDI7Ci0JbXNnLT5kYXRhWzBdID0g
cmZkOwotCW1zZy0+ZGF0YVsxXSA9IHdmZDsKLQlyZXR1cm4gMDsKLQlvdXQ6Ci0JdC0+dF9vZmls
ZVtyZmRdID0gbnVsbHB0cjsKLQl0LT50X29maWxlW3dmZF0gPSBudWxscHRyOwotCXJldHVybiBl
cnJvcjsKLSNlbHNlCi0JcmV0dXJuIEVOT1NZUzsKLSNlbmRpZgotfQotI2VuZGlmCi0KLVRSQUNF
UE9JTlQodHJhY2VfdmZzX2lzYXR0eSwgIiVkIiwgaW50KTsKLVRSQUNFUE9JTlQodHJhY2VfdmZz
X2lzYXR0eV9yZXQsICIlZCIsIGludCk7Ci1UUkFDRVBPSU5UKHRyYWNlX3Zmc19pc2F0dHlfZXJy
LCAiJWQiLCBpbnQpOwotCiAvKgogICogUmV0dXJuIGlmIHNwZWNpZmllZCBmaWxlIGlzIGEgdHR5
CiAgKi8KQEAgLTE2NjMsNiArMTU4Niw3IEBAIGludCBpc2F0dHkoaW50IGZkKQogCXRyYWNlX3Zm
c19pc2F0dHlfcmV0KGlzdHR5KTsKIAlyZXR1cm4gaXN0dHk7CiB9CisjZW5kaWYKIAogVFJBQ0VQ
T0lOVCh0cmFjZV92ZnNfdHJ1bmNhdGUsICJcIiVzXCIgMHgleCIsIGNvbnN0IGNoYXIqLCBvZmZf
dCk7CiBUUkFDRVBPSU5UKHRyYWNlX3Zmc190cnVuY2F0ZV9yZXQsICIiKTsKQEAgLTE3ODQsMTUg
KzE3MDgsNyBAQCBpbnQgZmFsbG9jYXRlKGludCBmZCwgaW50IG1vZGUsIGxvZmZfdCBvZmZzZXQs
IGxvZmZfdCBsZW4pCiAKIExGUzY0KGZhbGxvY2F0ZSk7CiAKLVRSQUNFUE9JTlQodHJhY2VfdmZz
X3V0aW1lcywgIlwiJXNcIiIsIGNvbnN0IGNoYXIqKTsKLVRSQUNFUE9JTlQodHJhY2VfdmZzX3V0
aW1lc19yZXQsICIiKTsKLVRSQUNFUE9JTlQodHJhY2VfdmZzX3V0aW1lc19lcnIsICIlZCIsIGlu
dCk7Ci0KLWludCBmdXRpbWVzKGludCBmZCwgY29uc3Qgc3RydWN0IHRpbWV2YWwgdGltZXNbMl0p
Ci17Ci0JcmV0dXJuIGZ1dGltZXNhdChmZCwgbnVsbHB0ciwgdGltZXMpOwotfQotCisjaWYgMAog
aW50IGZ1dGltZXNhdChpbnQgZGlyZmQsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBjb25zdCBzdHJ1
Y3QgdGltZXZhbCB0aW1lc1syXSkKIHsKIAlzdHJ1Y3Qgc3RhdCBzdDsKQEAgLTE4NTAsMTIgKzE3
NjYsMTIgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfdXRpbWVuc2F0LCAiXCIlc1wiIiwgY29uc3Qg
Y2hhciopOwogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfdXRpbWVuc2F0X3JldCwgIiIpOwogVFJBQ0VQ
T0lOVCh0cmFjZV92ZnNfdXRpbWVuc2F0X2VyciwgIiVkIiwgaW50KTsKIAotZXh0ZXJuICJDIgog
aW50IHV0aW1lbnNhdChpbnQgZGlyZmQsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBjb25zdCBzdHJ1
Y3QgdGltZXNwZWMgdGltZXNbMl0sIGludCBmbGFncykKIHsKIAl0cmFjZV92ZnNfdXRpbWVuc2F0
KHBhdGhuYW1lKTsKIAogCWF1dG8gZXJyb3IgPSBzeXNfdXRpbWVuc2F0KGRpcmZkLCBwYXRobmFt
ZSwgdGltZXMsIGZsYWdzKTsKKwogCWlmIChlcnJvcikgewogCQl0cmFjZV92ZnNfdXRpbWVuc2F0
X2VycihlcnJvcik7CiAJCWVycm5vID0gZXJyb3I7CkBAIC0xODcwLDEyICsxNzg2LDExIEBAIFRS
QUNFUE9JTlQodHJhY2VfdmZzX2Z1dGltZW5zLCAiJWQiLCBpbnQpOwogVFJBQ0VQT0lOVCh0cmFj
ZV92ZnNfZnV0aW1lbnNfcmV0LCAiIik7CiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19mdXRpbWVuc19l
cnIsICIlZCIsIGludCk7CiAKLWV4dGVybiAiQyIKIGludCBmdXRpbWVucyhpbnQgZmQsIGNvbnN0
IHN0cnVjdCB0aW1lc3BlYyB0aW1lc1syXSkKIHsKIAl0cmFjZV92ZnNfZnV0aW1lbnMoZmQpOwog
Ci0JYXV0byBlcnJvciA9IHN5c19mdXRpbWVucyhmZCwgdGltZXMpOworCWludCBlcnJvciA9IHN5
c19mdXRpbWVucyhmZCwgdGltZXMpOwogCWlmIChlcnJvcikgewogCQl0cmFjZV92ZnNfZnV0aW1l
bnNfZXJyKGVycm9yKTsKIAkJZXJybm8gPSBlcnJvcjsKQEAgLTE5MTAsMTkgKzE4MjUsMTYgQEAg
c3RhdGljIGludCBkb191dGltZXMoY29uc3QgY2hhciAqcGF0aG5hbWUsIGNvbnN0IHN0cnVjdCB0
aW1ldmFsIHRpbWVzWzJdLCBpbnQgZmwKIAlyZXR1cm4gMDsKIH0KIAotZXh0ZXJuICJDIgogaW50
IHV0aW1lcyhjb25zdCBjaGFyICpwYXRobmFtZSwgY29uc3Qgc3RydWN0IHRpbWV2YWwgdGltZXNb
Ml0pCiB7CiAJcmV0dXJuIGRvX3V0aW1lcyhwYXRobmFtZSwgdGltZXMsIDApOwogfQogCi1leHRl
cm4gIkMiCiBpbnQgbHV0aW1lcyhjb25zdCBjaGFyICpwYXRobmFtZSwgY29uc3Qgc3RydWN0IHRp
bWV2YWwgdGltZXNbMl0pCiB7CiAJcmV0dXJuIGRvX3V0aW1lcyhwYXRobmFtZSwgdGltZXMsIEFU
X1NZTUxJTktfTk9GT0xMT1cpOwogfQogCi1leHRlcm4gIkMiCiBpbnQgdXRpbWUoY29uc3QgY2hh
ciAqcGF0aG5hbWUsIGNvbnN0IHN0cnVjdCB1dGltYnVmICp0KQogewogCXVzaW5nIG5hbWVzcGFj
ZSBzdGQ6OmNocm9ubzsKQEAgLTE5NDEsNiArMTg1Myw3IEBAIGludCB1dGltZShjb25zdCBjaGFy
ICpwYXRobmFtZSwgY29uc3Qgc3RydWN0IHV0aW1idWYgKnQpCiAKIAlyZXR1cm4gdXRpbWVzKHBh
dGhuYW1lLCB0aW1lcyk7CiB9CisjZW5kaWYKIAogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfY2htb2Qs
ICJcIiVzXCIgMCUwbyIsIGNvbnN0IGNoYXIqLCBtb2RlX3QpOwogVFJBQ0VQT0lOVCh0cmFjZV92
ZnNfY2htb2RfcmV0LCAiIik7CkBAIC0xOTczLDcgKzE4ODYsNyBAQCBUUkFDRVBPSU5UKHRyYWNl
X3Zmc19mY2htb2RfcmV0LCAiIik7CiBpbnQgZmNobW9kKGludCBmZCwgbW9kZV90IG1vZGUpCiB7
CiAJdHJhY2VfdmZzX2ZjaG1vZChmZCwgbW9kZSk7Ci0JYXV0byBlcnJvciA9IHN5c19mY2htb2Qo
ZmQsIG1vZGUgJiBBTExQRVJNUyk7CisJaW50IGVycm9yID0gc3lzX2ZjaG1vZChmZCwgbW9kZSAm
IEFMTFBFUk1TKTsKIAl0cmFjZV92ZnNfZmNobW9kX3JldCgpOwogCWlmIChlcnJvcikgewogCQll
cnJubyA9IGVycm9yOwpAQCAtMjAwNyw2ICsxOTIwLDcgQEAgaW50IGxjaG93bihjb25zdCBjaGFy
ICpwYXRoLCB1aWRfdCBvd25lciwgZ2lkX3QgZ3JvdXApCiB9CiAKIAorI2lmIDAKIHNzaXplX3Qg
c2VuZGZpbGUoaW50IG91dF9mZCwgaW50IGluX2ZkLCBvZmZfdCAqX29mZnNldCwgc2l6ZV90IGNv
dW50KQogewogCXN0cnVjdCBmaWxlICppbl9mcDsKQEAgLTIwNzAsNyArMTk4NCw3IEBAIHNzaXpl
X3Qgc2VuZGZpbGUoaW50IG91dF9mZCwgaW50IGluX2ZkLCBvZmZfdCAqX29mZnNldCwgc2l6ZV90
IGNvdW50KQogCQlyZXR1cm4gLTE7CiAJfQogCi0JYXV0byByZXQgPSB3cml0ZShvdXRfZmQsIHNy
YyArIChvZmZzZXQgJSBQQUdFU0laRSksIGNvdW50KTsKKwlpbnQgcmV0ID0gd3JpdGUob3V0X2Zk
LCBzcmMgKyAob2Zmc2V0ICUgUEFHRVNJWkUpLCBjb3VudCk7CiAKIAlpZiAocmV0IDwgMCkgewog
CQlyZXR1cm4gbGliY19lcnJvcihlcnJubyk7CkBAIC0yMDg3LDEyICsyMDAxLDEzIEBAIHNzaXpl
X3Qgc2VuZGZpbGUoaW50IG91dF9mZCwgaW50IGluX2ZkLCBvZmZfdCAqX29mZnNldCwgc2l6ZV90
IGNvdW50KQogCiAjdW5kZWYgc2VuZGZpbGU2NAogTEZTNjQoc2VuZGZpbGUpOworI2VuZGlmCiAK
IE5PX1NZUyhpbnQgZmNobW9kYXQoaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwgbW9k
ZV90IG1vZGUsIGludCBmbGFncykpOwogCiBtb2RlX3QgdW1hc2sobW9kZV90IG5ld21hc2spCiB7
Ci0JcmV0dXJuIGdsb2JhbF91bWFzay5leGNoYW5nZShuZXdtYXNrLCBzdGQ6Om1lbW9yeV9vcmRl
cl9yZWxheGVkKTsKKwlyZXR1cm4gdWthcmNoX2V4Y2hhbmdlX24oJmdsb2JhbF91bWFzaywgbmV3
bWFzayk7CiB9CiAKIGludApAQCAtMjEwNywzMDMgKzIwMjIsMyBAQCBpbnQgY2hyb290KGNvbnN0
IGNoYXIgKnBhdGgpCiAJZXJybm8gPSBFTk9TWVM7CiAJcmV0dXJuIC0xOwogfQotCi0vLyB1bnBh
Y2tfYm9vdGZzKCkgdW5wYWNrcyBhIGNvbGxlY3Rpb24gb2YgZmlsZXMgc3RvcmVkIGFzIHBhcnQg
b2YgdGhlIE9TdgotLy8gZXhlY3V0YWJsZSAoaW4gbWVtb3J5IGxvY2F0aW9uICJib290ZnNfc3Rh
cnQiKSBpbnRvIHRoZSBmaWxlIHN5c3RlbSwKLS8vIG5vcm1hbGx5IHRoZSBpbi1tZW1vcnkgZmls
ZXN5c3RlbSByYW1mcy4KLS8vIFRoZSBmaWxlcyBhcmUgcGFja2VkIGluIHRoZSBleGVjdXRhYmxl
IGluIGFuIGFkLWhvYyBmb3JtYXQgZGVmaW5lZCBoZXJlLgotLy8gQ29kZSBpbiBzY3JpcHRzL21r
Ym9vdGZzLnB5IHBhY2tzIGZpbGVzIGludG8gdGhpcyBmb3JtYXQuCi0jZGVmaW5lIEJPT1RGU19Q
QVRIX01BWCAxMTEKLWVudW0gY2xhc3MgYm9vdGZzX2ZpbGVfdHlwZSA6IGNoYXIgeyBvdGhlciA9
IDAsIHN5bWxpbmsgPSAxIH07Ci1zdHJ1Y3QgYm9vdGZzX21ldGFkYXRhIHsKLQl1aW50NjRfdCBz
aXplOwotCXVpbnQ2NF90IG9mZnNldDsKLQkvLyBUaGUgZmlsZSdzIHR5cGUuIENhbiBiZSAic3lt
bGluayIgb3IgIm90aGVyIi4gQSBkaXJlY3RvcnkgaXMgYW4gIm90aGVyIgotCS8vIGZpbGUgd2l0
aCBpdHMgbmFtZSBlbmRpbmcgd2l0aCBhICIvIiAoYW5kIG5vIGNvbnRlbnQpLgotCWJvb3Rmc19m
aWxlX3R5cGUgdHlwZTsKLQkvLyBuYW1lIG11c3QgZW5kIHdpdGggYSBudWxsLiBGb3Igc3ltbGlu
ayBmaWxlcywgdGhlIGNvbnRlbnQgbXVzdCBlbmQKLQkvLyB3aXRoIGEgbnVsbCBhcyB3ZWxsLgot
CWNoYXIgbmFtZVtCT09URlNfUEFUSF9NQVhdOwotfTsKLQotZXh0ZXJuIGNoYXIgYm9vdGZzX3N0
YXJ0OwotCi1pbnQgcmFtZnNfc2V0X2ZpbGVfZGF0YShzdHJ1Y3Qgdm5vZGUgKnZwLCBjb25zdCB2
b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSk7Ci12b2lkIHVucGFja19ib290ZnModm9pZCkKLXsKLQlz
dHJ1Y3QgYm9vdGZzX21ldGFkYXRhICptZCA9IChzdHJ1Y3QgYm9vdGZzX21ldGFkYXRhICopJmJv
b3Rmc19zdGFydDsKLQlpbnQgZmQsIGk7Ci0KLQlmb3IgKGkgPSAwOyBtZFtpXS5uYW1lWzBdOyBp
KyspIHsKLQkJaW50IHJldDsKLQkJY2hhciAqcDsKLQotCQkvLyBta2RpcigpIGRpcmVjdG9yaWVz
IG5lZWRlZCBmb3IgdGhpcyBwYXRoIG5hbWUsIGFzIG5lY2Vzc2FyeQotCQljaGFyIHRtcFtCT09U
RlNfUEFUSF9NQVhdOwotCQlzdHJsY3B5KHRtcCwgbWRbaV0ubmFtZSwgQk9PVEZTX1BBVEhfTUFY
KTsKLQkJZm9yIChwID0gdG1wOyAqcDsgKytwKSB7Ci0JCQlpZiAoKnAgPT0gJy8nKSB7Ci0JCQkJ
KnAgPSAnXDAnOwotCQkJCW1rZGlyKHRtcCwgMDY2Nik7ICAvLyBzaWxlbnRseSBpZ25vcmUgZXJy
b3JzIGFuZCBleGlzdGluZyBkaXJzCi0JCQkJKnAgPSAnLyc7Ci0JCQl9Ci0JCX0KLQotCQlpZiAo
bWRbaV0udHlwZSA9PSBib290ZnNfZmlsZV90eXBlOjpzeW1saW5rKSB7Ci0JCQkvLyBUaGlzIGlz
IGEgc3ltYm9saWMgbGluayByZWNvcmQuIFRoZSBmaWxlJ3MgY29udGVudCBpcyB0aGUKLQkJCS8v
IHRhcmdldCBwYXRoLCBhbmQgd2UgYXNzdW1lIGVuZHMgd2l0aCBhIG51bGwuCi0JCQlpZiAoc3lt
bGluaygmYm9vdGZzX3N0YXJ0ICsgbWRbaV0ub2Zmc2V0LCBtZFtpXS5uYW1lKSAhPSAwKSB7Ci0J
CQkJa3ByaW50ZigiY291bGRuJ3Qgc3ltbGluayAlczogJWRcbiIsIG1kW2ldLm5hbWUsIGVycm5v
KTsKLQkJCQlzeXNfcGFuaWMoInVucGFja19ib290ZnMgZmFpbGVkIik7Ci0JCQl9Ci0JCQljb250
aW51ZTsKLQkJfQotCQlpZiAoKihwLTEpID09ICcvJyAmJiBtZFtpXS5zaXplID09IDApIHsKLQkJ
CS8vIFRoaXMgaXMgZGlyZWN0b3J5IHJlY29yZC4gTm90aGluZyBlbHNlIHRvIGRvCi0JCQljb250
aW51ZTsKLQkJfQotCi0JCWZkID0gY3JlYXQobWRbaV0ubmFtZSwgMDY2Nik7Ci0JCWlmIChmZCA8
IDApIHsKLQkJCWtwcmludGYoImNvdWxkbid0IGNyZWF0ZSAlczogJWRcbiIsCi0JCQkJCW1kW2ld
Lm5hbWUsIGVycm5vKTsKLQkJCXN5c19wYW5pYygidW5wYWNrX2Jvb3RmcyBmYWlsZWQiKTsKLQkJ
fQotCi0JCXN0cnVjdCBmaWxlICpmcDsKLQkJaW50IGVycm9yID0gZmdldChmZCwgJmZwKTsKLQkJ
aWYgKGVycm9yKSB7Ci0JCQlrcHJpbnRmKCJjb3VsZG4ndCBmZ2V0ICVzOiAlZFxuIiwKLQkJCQkJ
bWRbaV0ubmFtZSwgZXJyb3IpOwotCQkJc3lzX3BhbmljKCJ1bnBhY2tfYm9vdGZzIGZhaWxlZCIp
OwotCQl9Ci0KLQkJc3RydWN0IHZub2RlICp2cCA9IGZwLT5mX2RlbnRyeS0+ZF92bm9kZTsKLQkJ
cmV0ID0gcmFtZnNfc2V0X2ZpbGVfZGF0YSh2cCwgJmJvb3Rmc19zdGFydCArIG1kW2ldLm9mZnNl
dCwgbWRbaV0uc2l6ZSk7Ci0JCWlmIChyZXQpIHsKLQkJCWtwcmludGYoInJhbWZzX3NldF9maWxl
X2RhdGEgZmFpbGVkLCByZXQgPSAlZFxuIiwgcmV0KTsKLQkJCXN5c19wYW5pYygidW5wYWNrX2Jv
b3RmcyBmYWlsZWQiKTsKLQkJfQotCi0JCWZkcm9wKGZwKTsKLQkJY2xvc2UoZmQpOwotCX0KLX0K
LQotdm9pZCBtb3VudF9yb290ZnModm9pZCkKLXsKLQlpbnQgcmV0OwotCi0JcmV0ID0gc3lzX21v
dW50KCIiLCAiLyIsICJyYW1mcyIsIDAsIG51bGxwdHIpOwotCWlmIChyZXQpCi0JCWtwcmludGYo
ImZhaWxlZCB0byBtb3VudCByb290ZnMsIGVycm9yID0gJXNcbiIsIHN0cmVycm9yKHJldCkpOwot
Ci0JaWYgKG1rZGlyKCIvZGV2IiwgMDc1NSkgPCAwKQotCQlrcHJpbnRmKCJmYWlsZWQgdG8gY3Jl
YXRlIC9kZXYsIGVycm9yID0gJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7Ci0KLQlyZXQgPSBzeXNf
bW91bnQoIiIsICIvZGV2IiwgImRldmZzIiwgMCwgbnVsbHB0cik7Ci0JaWYgKHJldCkKLQkJa3By
aW50ZigiZmFpbGVkIHRvIG1vdW50IGRldmZzLCBlcnJvciA9ICVzXG4iLCBzdHJlcnJvcihyZXQp
KTsKLX0KLQotZXh0ZXJuICJDIgotaW50IG5tb3VudChzdHJ1Y3QgaW92ZWMgKmlvdiwgdW5zaWdu
ZWQgbmlvdiwgaW50IGZsYWdzKQotewotCXN0cnVjdCBhcmdzIHsKLQkJY2hhciogZnN0eXBlID0g
bnVsbHB0cjsKLQkJY2hhciogZnNwYXRoID0gbnVsbHB0cjsKLQkJY2hhciogZnJvbSA9IG51bGxw
dHI7Ci0JfTsKLQlzdGF0aWMgdW5vcmRlcmVkX21hcDxzdHJpbmcsIGNoYXIqIGFyZ3M6Oio+IGFy
Z21hcCB7Ci0JCXsgImZzdHlwZSIsICZhcmdzOjpmc3R5cGUgfSwKLQkJeyAiZnNwYXRoIiwgJmFy
Z3M6OmZzcGF0aCB9LAotCQl7ICJmcm9tIiwgJmFyZ3M6OmZyb20gfSwKLQl9OwotCWFyZ3MgYTsK
LQlmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5pb3Y7IGkgKz0gMikgewotCQlzdGQ6OnN0cmluZyBz
KHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihpb3ZbaV0uaW92X2Jhc2UpKTsKLQkJaWYgKGFyZ21h
cC5jb3VudChzKSkgewotCQkJYS4qKGFyZ21hcFtzXSkgPSBzdGF0aWNfY2FzdDxjaGFyKj4oaW92
W2krMV0uaW92X2Jhc2UpOwotCQl9Ci0JfQotCXJldHVybiBzeXNfbW91bnQoYS5mcm9tLCBhLmZz
cGF0aCwgYS5mc3R5cGUsIGZsYWdzLCBudWxscHRyKTsKLX0KLQotc3RhdGljIHZvaWQgaW1wb3J0
X2V4dHJhX3pmc19wb29scyh2b2lkKQotewotCXN0cnVjdCBzdGF0IHN0OwotCWludCByZXQ7Ci0K
LQkvLyBUaGUgZmlsZSAnL2V0Yy9tbnR0YWInIGlzIGEgTGliWkZTIHJlcXVpcmVtZW50IGFuZCB3
aWxsIG5vdAotCS8vIGV4aXN0IGR1cmluZyBjcGlvZCBwaGFzZS4gVGhlIGZ1bmN0aW9uYWxpdHkg
cHJvdmlkZWQgYnkgdGhpcwotCS8vIGZ1bmN0aW9uIGlzbid0IG5lZWRlZCBkdXJpbmcgdGhhdCBw
aGFzZSwgc28gbGV0J3Mgc2tpcCBpdC4KLQlpZiAoc3RhdCgiL2V0Yy9tbnR0YWIiICwgJnN0KSAh
PSAwKSB7Ci0JCXJldHVybjsKLQl9Ci0KLQkvLyBJbXBvcnQgZXh0cmEgcG9vbHMgbW91bnRpbmcg
ZGF0YXNldHMgdGhlcmUgY29udGFpbmVkLgotCS8vIERhdGFzZXRzIGZyb20gb3N2IHBvb2wgd2ls
bCBub3QgYmUgbW91bnRlZCBoZXJlLgotCWlmIChhY2Nlc3MoInpwb29sLnNvIiwgWF9PSykgIT0g
MCkgewotCQlyZXR1cm47Ci0JfQotCXZlY3RvcjxzdHJpbmc+IHpwb29sX2FyZ3MgPSB7Inpwb29s
IiwgImltcG9ydCIsICItZiIsICItYSIgfTsKLQlhdXRvIG9rID0gb3N2OjpydW4oInpwb29sLnNv
IiwgenBvb2xfYXJncywgJnJldCk7Ci0JYXNzZXJ0KG9rKTsKLQotCWlmICghcmV0KSB7Ci0JCWRl
YnVnKCJ6ZnM6IGV4dHJhIFpGUyBwb29sKHMpIGZvdW5kLlxuIik7Ci0JfQotfQotCi12b2lkIHBp
dm90X3Jvb3Rmcyhjb25zdCBjaGFyKiBwYXRoKQotewotCWludCByZXQgPSBzeXNfcGl2b3Rfcm9v
dChwYXRoLCAiLyIpOwotCWlmIChyZXQpCi0JCWtwcmludGYoImZhaWxlZCB0byBwaXZvdCByb290
LCBlcnJvciA9ICVzXG4iLCBzdHJlcnJvcihyZXQpKTsKLQotCWF1dG8gZW50ID0gc2V0bW50ZW50
KCIvZXRjL2ZzdGFiIiwgInIiKTsKLQlpZiAoIWVudCkgewotCQlyZXR1cm47Ci0JfQotCi0Jc3Ry
dWN0IG1udGVudCAqbSA9IG51bGxwdHI7Ci0Jd2hpbGUgKChtID0gZ2V0bW50ZW50KGVudCkpICE9
IG51bGxwdHIpIHsKLQkJaWYgKCFzdHJjbXAobS0+bW50X2RpciwgIi8iKSkgewotCQkJY29udGlu
dWU7Ci0JCX0KLQotCQlpZiAoKG0tPm1udF9vcHRzICE9IG51bGxwdHIpICYmIHN0cmNtcChtLT5t
bnRfb3B0cywgTU5UT1BUX0RFRkFVTFRTKSkgewotCQkJcHJpbnRmKCJXYXJuaW5nOiBvcHRzICVz
LCBpZ25vcmVkIGZvciBmcyAlc1xuIiwgbS0+bW50X29wdHMsIG0tPm1udF90eXBlKTsKLQkJfQot
Ci0JCS8vIEZJWE1FOiBSaWdodCBub3csIGlnbm9yaW5nIG1udG9wcy4gSW4gdGhlIGZ1dHVyZSB3
ZSBtYXkgaGF2ZSBhbiBvcHRpb24gcGFyc2VyCi0JCXJldCA9IHN5c19tb3VudChtLT5tbnRfZnNu
YW1lLCBtLT5tbnRfZGlyLCBtLT5tbnRfdHlwZSwgMCwgbnVsbHB0cik7Ci0JCWlmIChyZXQpIHsK
LQkJCXByaW50ZigiZmFpbGVkIHRvIG1vdW50ICVzLCBlcnJvciA9ICVzXG4iLCBtLT5tbnRfdHlw
ZSwgc3RyZXJyb3IocmV0KSk7Ci0JCX0KLQl9Ci0JZW5kbW50ZW50KGVudCk7Ci19Ci0KLWV4dGVy
biAiQyIgdm9pZCB1bm1vdW50X2RldmZzKCkKLXsKLQlpbnQgcmV0ID0gc3lzX3Vtb3VudCgiL2Rl
diIpOwotCWlmIChyZXQpCi0JCWtwcmludGYoImZhaWxlZCB0byB1bm1vdW50IC9kZXYsIGVycm9y
ID0gJXNcbiIsIHN0cmVycm9yKHJldCkpOwotfQotCi1leHRlcm4gIkMiIGludCBtb3VudF9yb2Zz
X3Jvb3Rmcyhib29sIHBpdm90X3Jvb3QpCi17Ci0JaW50IHJldDsKLQotCWlmIChta2RpcigiL3Jv
ZnMiLCAwNzU1KSA8IDApCi0JCWtwcmludGYoImZhaWxlZCB0byBjcmVhdGUgL3JvZnMsIGVycm9y
ID0gJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7Ci0KLQlyZXQgPSBzeXNfbW91bnQoIi9kZXYvdmJs
azAuMSIsICIvcm9mcyIsICJyb2ZzIiwgTU5UX1JET05MWSwgMCk7Ci0KLQlpZiAocmV0KSB7Ci0J
CWtwcmludGYoImZhaWxlZCB0byBtb3VudCAvcm9mcywgZXJyb3IgPSAlc1xuIiwgc3RyZXJyb3Io
cmV0KSk7Ci0JCXJtZGlyKCIvcm9mcyIpOwotCQlyZXR1cm4gcmV0OwotCX0KLQotCWlmIChwaXZv
dF9yb290KSB7Ci0JCXBpdm90X3Jvb3RmcygiL3JvZnMiKTsKLQl9Ci0KLQlyZXR1cm4gMDsKLX0K
LQotZXh0ZXJuICJDIiB2b2lkIG1vdW50X3pmc19yb290ZnMoYm9vbCBwaXZvdF9yb290KQotewot
CWlmIChta2RpcigiL3pmcyIsIDA3NTUpIDwgMCkKLQkJa3ByaW50ZigiZmFpbGVkIHRvIGNyZWF0
ZSAvemZzLCBlcnJvciA9ICVzXG4iLCBzdHJlcnJvcihlcnJubykpOwotCi0JaW50IHJldCA9IHN5
c19tb3VudCgiL2Rldi92YmxrMC4xIiwgIi96ZnMiLCAiemZzIiwgMCwgKHZvaWQgKikib3N2L3pm
cyIpOwotCi0JaWYgKHJldCkKLQkJa3ByaW50ZigiZmFpbGVkIHRvIG1vdW50IC96ZnMsIGVycm9y
ID0gJXNcbiIsIHN0cmVycm9yKHJldCkpOwotCi0JaWYgKCFwaXZvdF9yb290KSB7Ci0JCXJldHVy
bjsKLQl9Ci0KLQlwaXZvdF9yb290ZnMoIi96ZnMiKTsKLQotCWltcG9ydF9leHRyYV96ZnNfcG9v
bHMoKTsKLX0KLQotZXh0ZXJuICJDIiB2b2lkIHVubW91bnRfcm9vdGZzKHZvaWQpCi17Ci0JaW50
IHJldDsKLQotCXN5c191bW91bnQoIi9kZXYiKTsKLQotCXJldCA9IHN5c191bW91bnQoIi9wcm9j
Iik7Ci0JaWYgKHJldCkgewotCQlrcHJpbnRmKCJXYXJuaW5nOiB1bm1vdW50X3Jvb3RmczogZmFp
bGVkIHRvIHVubW91bnQgL3Byb2MsICIKLQkJCSJlcnJvciA9ICVzXG4iLCBzdHJlcnJvcihyZXQp
KTsKLQl9Ci0KLQlyZXQgPSBzeXNfdW1vdW50MigiLyIsIE1OVF9GT1JDRSk7Ci0JaWYgKHJldCkg
ewotCQlrcHJpbnRmKCJXYXJuaW5nOiB1bm1vdW50X3Jvb3RmczogZmFpbGVkIHRvIHVubW91bnQg
LywgIgotCQkJImVycm9yID0gJXNcbiIsIHN0cmVycm9yKHJldCkpOwotCX0KLX0KLQotZXh0ZXJu
ICJDIiB2b2lkIGJpb19pbml0KHZvaWQpOwotZXh0ZXJuICJDIiB2b2lkIGJpb19zeW5jKHZvaWQp
OwotCi1pbnQgdmZzX2luaXRpYWxpemVkOwotCi1leHRlcm4gIkMiCi12b2lkCi12ZnNfaW5pdCh2
b2lkKQotewotCWNvbnN0IHN0cnVjdCB2ZnNzdyAqZnM7Ci0KLQliaW9faW5pdCgpOwotCWxvb2t1
cF9pbml0KCk7Ci0Jdm5vZGVfaW5pdCgpOwotCXRhc2tfYWxsb2MoJm1haW5fdGFzayk7Ci0KLQkv
KgotCSAqIEluaXRpYWxpemUgZWFjaCBmaWxlIHN5c3RlbS4KLQkgKi8KLQlmb3IgKGZzID0gdmZz
c3c7IGZzLT52c19uYW1lOyBmcysrKSB7Ci0JCWlmIChmcy0+dnNfaW5pdCkgewotCQkJRFBSSU5U
RihWRlNEQl9DT1JFLCAoIlZGUzogaW5pdGlhbGl6aW5nICVzXG4iLAotCQkJCQlmcy0+dnNfbmFt
ZSkpOwotCQkJZnMtPnZzX2luaXQoKTsKLQkJfQotCX0KLQotCW1vdW50X3Jvb3RmcygpOwotCXVu
cGFja19ib290ZnMoKTsKLQotCS8vCWlmIChvcGVuKCIvZGV2L2NvbnNvbGUiLCBPX1JEV1IsIDAp
ICE9IDApCi0JaWYgKGNvbnNvbGU6Om9wZW4oKSAhPSAwKQotCQlrcHJpbnRmKCJmYWlsZWQgdG8g
b3BlbiBjb25zb2xlLCBlcnJvciA9ICVkXG4iLCBlcnJubyk7Ci0JaWYgKGR1cCgwKSAhPSAxKQot
CQlrcHJpbnRmKCJmYWlsZWQgdG8gZHVwIGNvbnNvbGUgKDEpXG4iKTsKLQlpZiAoZHVwKDApICE9
IDIpCi0JCWtwcmludGYoImZhaWxlZCB0byBkdXAgY29uc29sZSAoMilcbiIpOwotCXZmc19pbml0
aWFsaXplZCA9IDE7Ci19Ci0KLXZvaWQgdmZzX2V4aXQodm9pZCkKLXsKLQkvKiBGcmVlIHVwIG1h
aW5fdGFzayAoc3RvcmVzIGN3ZCBkYXRhKSByZXNvdXJjZXMgKi8KLQlyZXBsYWNlX2N3ZChtYWlu
X3Rhc2ssIG51bGxwdHIsIFtdKCkgeyByZXR1cm4gMDsgfSk7Ci0JLyogVW5tb3VudCBhbGwgZmls
ZSBzeXN0ZW1zICovCi0JdW5tb3VudF9yb290ZnMoKTsKLQkvKiBGaW5pc2ggd2l0aCB0aGUgYmlv
IGxheWVyICovCi0JYmlvX3N5bmMoKTsKLX0KLQotdm9pZCBzeXNfcGFuaWMoY29uc3QgY2hhciAq
c3RyKQotewotCWFib3J0KCJwYW5pYzogJXMiLCBzdHIpOwotfQotCmRpZmYgLS1naXQgYS9saWIv
dmZzY29yZS9tb3VudC5jIGIvbGliL3Zmc2NvcmUvbW91bnQuYwppbmRleCA3NmUyZTcwYy4uMTBj
MjdmYWQgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL21vdW50LmMKKysrIGIvbGliL3Zmc2NvcmUv
bW91bnQuYwpAQCAtODMsMTcgKzgzLDYgQEAgZnNfZ2V0ZnMoY29uc3QgY2hhciAqbmFtZSkKIAly
ZXR1cm4gZnM7CiB9CiAKLWNvbnN0IGNoYXIqCi1mc19nZXRmc25hbWUodmZzb3BzKiBvcHMpCi17
Ci0JZm9yIChhdXRvIGZzID0gdmZzc3c7IGZzLT52c19uYW1lOyBmcysrKSB7Ci0JCWlmIChmcy0+
dnNfb3AgPT0gb3BzKSB7Ci0JCQlyZXR1cm4gZnMtPnZzX25hbWU7Ci0JCX0KLQl9Ci0JYWJvcnQo
KTsKLX0KLQogaW50CiBzeXNfbW91bnQoY29uc3QgY2hhciAqZGV2LCBjb25zdCBjaGFyICpkaXIs
IGNvbnN0IGNoYXIgKmZzbmFtZSwgaW50IGZsYWdzLCBjb25zdCB2b2lkICpkYXRhKQogewpAQCAt
MTQxLDcgKzEzMCw4IEBAIHN5c19tb3VudChjb25zdCBjaGFyICpkZXYsIGNvbnN0IGNoYXIgKmRp
ciwgY29uc3QgY2hhciAqZnNuYW1lLCBpbnQgZmxhZ3MsIGNvbnN0CiAJLyoKIAkgKiBDcmVhdGUg
VkZTIG1vdW50IGVudHJ5LgogCSAqLwotCWlmICghKG1wID0gbmV3IG1vdW50KSkgeworCW1wID0g
bWFsbG9jKHNpemVvZihzdHJ1Y3QgbW91bnQpKTsKKwlpZiAoIW1wKSB7CiAJCWVycm9yID0gRU5P
TUVNOwogCQlnb3RvIGVycjE7CiAJfQpAQCAtMjE0LDcgKzIwNCw3IEBAIHN5c19tb3VudChjb25z
dCBjaGFyICpkZXYsIGNvbnN0IGNoYXIgKmRpciwgY29uc3QgY2hhciAqZnNuYW1lLCBpbnQgZmxh
Z3MsIGNvbnN0CiAJaWYgKGRwX2NvdmVyZWQpCiAJCWRyZWxlKGRwX2NvdmVyZWQpOwogIGVycjI6
Ci0JZGVsZXRlIG1wOworCWZyZWUobXApOwogIGVycjE6CiAJaWYgKGRldmljZSkKIAkJZGV2aWNl
X2Nsb3NlKGRldmljZSk7CkBAIC0yODEsNyArMjcxLDcgQEAgZm91bmQ6CiAKIAlpZiAobXAtPm1f
ZGV2KQogCQlkZXZpY2VfY2xvc2UobXAtPm1fZGV2KTsKLQlkZWxldGUgbXA7CisJZnJlZShtcCk7
CiAgb3V0OgogCXJldHVybiBlcnJvcjsKIH0KQEAgLTI5Miw2ICsyODIsNyBAQCBzeXNfdW1vdW50
KGNvbnN0IGNoYXIgKnBhdGgpCiAJcmV0dXJuIHN5c191bW91bnQyKHBhdGgsIDApOwogfQogCisj
aWYgMAogaW50CiBzeXNfcGl2b3Rfcm9vdChjb25zdCBjaGFyICpuZXdfcm9vdCwgY29uc3QgY2hh
ciAqcHV0X29sZCkKIHsKQEAgLTMzOSw2ICszMzAsNyBAQCBzeXNfcGl2b3Rfcm9vdChjb25zdCBj
aGFyICpuZXdfcm9vdCwgY29uc3QgY2hhciAqcHV0X29sZCkKIAl9CiAJcmV0dXJuIDA7CiB9Cisj
ZW5kaWYKIAogaW50CiBzeXNfc3luYyh2b2lkKQpAQCAtNDUwLDMzICs0NDIsNiBAQCB2ZnNfZWlu
dmFsKHZvaWQpCiAJcmV0dXJuIEVJTlZBTDsKIH0KIAotbmFtZXNwYWNlIG9zdiB7Ci0KLW1vdW50
X2Rlc2MgdG9fbW91bnRfZGVzYyhtb3VudCogbSkKLXsKLQltb3VudF9kZXNjIHJldDsKLQlyZXQu
c3BlY2lhbCA9IG0tPm1fc3BlY2lhbDsKLQlyZXQucGF0aCA9IG0tPm1fcGF0aDsKLQlyZXQudHlw
ZSA9IGZzX2dldGZzbmFtZShtLT5tX29wKTsKLQkvLyBGSVhNRTogcmVjb3JkIG9wdGlvbnMKLQly
ZXQub3B0aW9ucyA9ICIiOwotCXJldHVybiByZXQ7Ci19Ci0KLXN0ZDo6dmVjdG9yPG1vdW50X2Rl
c2M+Ci1jdXJyZW50X21vdW50cygpCi17Ci0JV0lUSF9MT0NLKG1vdW50X2xvY2spIHsKLQkJc3Rk
Ojp2ZWN0b3I8bW91bnRfZGVzYz4gcmV0OwotCQlmb3IgKGF1dG8mJiBtcCA6IG1vdW50X2xpc3Qp
IHsKLQkJCXJldC5wdXNoX2JhY2sodG9fbW91bnRfZGVzYyhtcCkpOwotCQl9Ci0JCXJldHVybiBy
ZXQ7Ci0JfQotfQotCi19Ci0KICNpZmRlZiBERUJVR19WRlMKIHZvaWQKIG1vdW50X2R1bXAodm9p
ZCkKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3N5c2NhbGxzLmMgYi9saWIvdmZzY29yZS9zeXNj
YWxscy5jCmluZGV4IDI5YjE0MjIwLi40ZTU1MzM3ZiAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUv
c3lzY2FsbHMuYworKysgYi9saWIvdmZzY29yZS9zeXNjYWxscy5jCkBAIC0xOTUsMTcgKzE5NSwx
NyBAQCBzeXNfb3BlbihjaGFyICpwYXRoLCBpbnQgZmxhZ3MsIG1vZGVfdCBtb2RlLCBzdHJ1Y3Qg
ZmlsZSAqKmZwcCkKIAkJCWdvdG8gb3V0X3ZuX3VubG9jazsKIAl9CiAKLQl0cnkgewotCSAgICBm
aWxlcmVmIGYgPSBtYWtlX2ZpbGU8dmZzX2ZpbGU+KGZsYWdzKTsKLQkgICAgZnAgPSBmLmdldCgp
OwotCSAgICBmaG9sZChmcCk7Ci0JfSBjYXRjaCAoaW50IGVycikgewotCSAgICBlcnJvciA9IGVy
cjsKKwlmcCA9IGNhbGxvYyhzaXplb2Yoc3RydWN0IHZmc2NvcmVfZmlsZSksIDEpOworCWZob2xk
KGZwKTsKKwlpZiAoIWZwKSB7CisJICAgIGVycm9yID0gRU5PTUVNOwogCSAgICBnb3RvIG91dF92
bl91bmxvY2s7CiAJfQorCWZwLT5mX2ZsYWdzID0gZmxhZ3M7CisKIAkvLyBjaGFuZ2UgdG8gc3Rk
Ojptb3ZlIG9uY2UgZHAgaXMgYSBkZW50cnlfcmVmCi0JZnAtPmZfZGVudHJ5ID0gZGVudHJ5X3Jl
ZihkcCwgZmFsc2UpOwotCWRwID0gbnVsbHB0cjsKKwlmcC0+Zl9kZW50cnkgPSBkcDsKKwlkcCA9
IE5VTEw7CiAKIAllcnJvciA9IFZPUF9PUEVOKHZwLCBmcCk7CiAJaWYgKGVycm9yKSB7CkBAIC0y
MTMsNyArMjEzLDcgQEAgc3lzX29wZW4oY2hhciAqcGF0aCwgaW50IGZsYWdzLCBtb2RlX3QgbW9k
ZSwgc3RydWN0IGZpbGUgKipmcHApCiAJCS8vIE5vdGUgZGlyZWN0IGRlbGV0ZSBvZiBmcCBpbnN0
ZWFkIG9mIGZkcm9wKGZwKS4gZnAgd2FzIG5ldmVyCiAJCS8vIHJldHVybmVkIHNvIGNhbm5vdCBi
ZSBpbiB1c2UsIGFuZCBiZWNhdXNlIGl0IHdhc24ndCBvcGVuZWQKIAkJLy8gaXQgY2Fubm90IGJl
IGNsb3NlKCllZC4KLQkJZGVsZXRlIGZwOworCQlmcmVlKGZwKTsKIAkJcmV0dXJuIGVycm9yOwog
CX0KIAl2bl91bmxvY2sodnApOwpAQCAtMjQxLDExICsyNDEsMTQgQEAgaW50CiBzeXNfcmVhZChz
dHJ1Y3QgZmlsZSAqZnAsIGNvbnN0IHN0cnVjdCBpb3ZlYyAqaW92LCBzaXplX3QgbmlvdiwKIAkJ
b2ZmX3Qgb2Zmc2V0LCBzaXplX3QgKmNvdW50KQogeworCWludCBlcnJvciA9IDA7CisJc3RydWN0
IGlvdmVjICpjb3B5X2lvdjsKIAlpZiAoKGZwLT5mX2ZsYWdzICYgRlJFQUQpID09IDApCiAJCXJl
dHVybiBFQkFERjsKIAogCXNpemVfdCBieXRlcyA9IDA7Ci0JYXV0byBpb3ZwID0gaW92OworCWNv
bnN0IHN0cnVjdCBpb3ZlYyAqaW92cCA9IGlvdjsKKwogCWZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBuaW92OyBpKyspIHsKIAkJaWYgKGlvdnAtPmlvdl9sZW4gPiBJT1NJWkVfTUFYIC0gYnl0ZXMp
IHsKIAkJCXJldHVybiBFSU5WQUw7CkBAIC0yNjAsMTYgKzI2MywyNyBAQCBzeXNfcmVhZChzdHJ1
Y3QgZmlsZSAqZnAsIGNvbnN0IHN0cnVjdCBpb3ZlYyAqaW92LCBzaXplX3QgbmlvdiwKIAl9CiAK
IAlzdHJ1Y3QgdWlvIHVpbzsKLQkvLyBVbmZvcnR1bmF0ZWx5LCB0aGUgY3VycmVudCBpbXBsZW1l
bnRhdGlvbiBvZiBmcC0+cmVhZCB6ZXJvcyB0aGUKLQkvLyBpb3ZfbGVuIGZpZWxkcyB3aGVuIGl0
IHJlYWRzIGZyb20gZGlzaywgc28gd2UgaGF2ZSB0byBjb3B5IGlvdi4KLQlzdGQ6OnZlY3Rvcjxp
b3ZlYz4gY29weV9pb3YoaW92LCBpb3YgKyBuaW92KTsKLQl1aW8udWlvX2lvdiA9IGNvcHlfaW92
LmRhdGEoKTsKKwkvKiBUT0RPOiBpcyBpdCBuZWNlc3NhcnkgdG8gY29weSBpb3Ygd2l0aGluIFVu
aWtyYWZ0PworCSAqIE9TdiBkaWQgdGhpcywgbWVudGlvbmluZyB0aGlzIHJlYXNvbjoKKwkgKgor
CSAqICJVbmZvcnR1bmF0ZWx5LCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvZiBmcC0+cmVh
ZAorCSAqICB6ZXJvcyB0aGUgaW92X2xlbiBmaWVsZHMgd2hlbiBpdCByZWFkcyBmcm9tIGRpc2ss
IHNvIHdlCisJICogIGhhdmUgdG8gY29weSBpb3YuICIKKwkgKi8KKwljb3B5X2lvdiA9IGNhbGxv
YyhzaXplb2Yoc3RydWN0IGlvdmVjKSwgbmlvdik7CisJaWYgKCFjb3B5X2lvdikKKwkJcmV0dXJu
IEVOT01FTTsKKwltZW1jcHkoY29weV9pb3YsIGlvdiwgc2l6ZW9mKHN0cnVjdCBpb3ZlYykqbmlv
dik7CisKKwl1aW8udWlvX2lvdiA9IGNvcHlfaW92OwogCXVpby51aW9faW92Y250ID0gbmlvdjsK
IAl1aW8udWlvX29mZnNldCA9IG9mZnNldDsKIAl1aW8udWlvX3Jlc2lkID0gYnl0ZXM7CiAJdWlv
LnVpb19ydyA9IFVJT19SRUFEOwotCWF1dG8gZXJyb3IgPSBmcC0+cmVhZCgmdWlvLCAob2Zmc2V0
ID09IC0xKSA/IDAgOiBGT0ZfT0ZGU0VUKTsKKwllcnJvciA9IHZmc19yZWFkKGZwLCAmdWlvLCAo
b2Zmc2V0ID09IC0xKSA/IDAgOiBGT0ZfT0ZGU0VUKTsKIAkqY291bnQgPSBieXRlcyAtIHVpby51
aW9fcmVzaWQ7CisKKwlmcmVlKGNvcHlfaW92KTsKIAlyZXR1cm4gZXJyb3I7CiB9CiAKQEAgLTI3
NywxMSArMjkxLDEzIEBAIGludAogc3lzX3dyaXRlKHN0cnVjdCBmaWxlICpmcCwgY29uc3Qgc3Ry
dWN0IGlvdmVjICppb3YsIHNpemVfdCBuaW92LAogCQlvZmZfdCBvZmZzZXQsIHNpemVfdCAqY291
bnQpCiB7CisJc3RydWN0IGlvdmVjICpjb3B5X2lvdjsKKwlpbnQgZXJyb3IgPSAwOwogCWlmICgo
ZnAtPmZfZmxhZ3MgJiBGV1JJVEUpID09IDApCiAJCXJldHVybiBFQkFERjsKIAogCXNpemVfdCBi
eXRlcyA9IDA7Ci0JYXV0byBpb3ZwID0gaW92OworCWNvbnN0IHN0cnVjdCBpb3ZlYyAqaW92cCA9
IGlvdjsKIAlmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbmlvdjsgaSsrKSB7CiAJCWlmIChpb3Zw
LT5pb3ZfbGVuID4gSU9TSVpFX01BWCAtIGJ5dGVzKSB7CiAJCQlyZXR1cm4gRUlOVkFMOwpAQCAt
Mjk2LDE1ICszMTIsMjQgQEAgc3lzX3dyaXRlKHN0cnVjdCBmaWxlICpmcCwgY29uc3Qgc3RydWN0
IGlvdmVjICppb3YsIHNpemVfdCBuaW92LAogCX0KIAogCXN0cnVjdCB1aW8gdWlvOwotCS8vIFVu
Zm9ydHVuYXRlbHksIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9mIGZwLT53cml0ZSB6ZXJv
cyB0aGUKLQkvLyBpb3ZfbGVuIGZpZWxkcyB3aGVuIGl0IHdyaXRlcyB0byBkaXNrLCBzbyB3ZSBo
YXZlIHRvIGNvcHkgaW92LgotCXN0ZDo6dmVjdG9yPGlvdmVjPiBjb3B5X2lvdihpb3YsIGlvdiAr
IG5pb3YpOwotCXVpby51aW9faW92ID0gY29weV9pb3YuZGF0YSgpOworCisJLyogVE9ETzogc2Ft
ZSBub3RlIGFzIGluIHN5c19yZWFkLiBPcmlnaW5hbCBjb21tZW50OgorCSAqCisJICogIlVuZm9y
dHVuYXRlbHksIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9mIGZwLT53cml0ZSB6ZXJvcyB0
aGUKKwkgKiAgaW92X2xlbiBmaWVsZHMgd2hlbiBpdCB3cml0ZXMgdG8gZGlzaywgc28gd2UgaGF2
ZSB0byBjb3B5IGlvdi4KKwkgKi8KKwkvKiBzdGQ6OnZlY3Rvcjxpb3ZlYz4gY29weV9pb3YoaW92
LCBpb3YgKyBuaW92KTsgKi8KKwljb3B5X2lvdiA9IGNhbGxvYyhzaXplb2Yoc3RydWN0IGlvdmVj
KSwgbmlvdik7CisJaWYgKCFjb3B5X2lvdikKKwkJcmV0dXJuIEVOT01FTTsKKwltZW1jcHkoY29w
eV9pb3YsIGlvdiwgc2l6ZW9mKHN0cnVjdCBpb3ZlYykqbmlvdik7CisKKwl1aW8udWlvX2lvdiA9
IGNvcHlfaW92OwogCXVpby51aW9faW92Y250ID0gbmlvdjsKIAl1aW8udWlvX29mZnNldCA9IG9m
ZnNldDsKIAl1aW8udWlvX3Jlc2lkID0gYnl0ZXM7CiAJdWlvLnVpb19ydyA9IFVJT19XUklURTsK
LQlhdXRvIGVycm9yID0gZnAtPndyaXRlKCZ1aW8sIChvZmZzZXQgPT0gLTEpID8gMCA6IEZPRl9P
RkZTRVQpOworCXZmc193cml0ZShmcCwgJnVpbywgKG9mZnNldCA9PSAtMSkgPyAwIDogRk9GX09G
RlNFVCk7CiAJKmNvdW50ID0gYnl0ZXMgLSB1aW8udWlvX3Jlc2lkOwogCXJldHVybiBlcnJvcjsK
IH0KQEAgLTM1NSw3ICszODAsNyBAQCBzeXNfaW9jdGwoc3RydWN0IGZpbGUgKmZwLCB1X2xvbmcg
cmVxdWVzdCwgdm9pZCAqYnVmKQogCWlmICgoZnAtPmZfZmxhZ3MgJiAoRlJFQUQgfCBGV1JJVEUp
KSA9PSAwKQogCQlyZXR1cm4gRUJBREY7CiAKLQllcnJvciA9IGZwLT5pb2N0bChyZXF1ZXN0LCBi
dWYpOworCWVycm9yID0gdmZzX2lvY3RsKGZwLCByZXF1ZXN0LCBidWYpOwogCiAJRFBSSU5URihW
RlNEQl9TWVNDQUxMLCAoInN5c19pb2N0bDogY29tcCBlcnJvcj0lZFxuIiwgZXJyb3IpKTsKIAly
ZXR1cm4gZXJyb3I7CkBAIC0zODYsNyArNDExLDcgQEAgc3lzX2ZzdGF0KHN0cnVjdCBmaWxlICpm
cCwgc3RydWN0IHN0YXQgKnN0KQogCiAJRFBSSU5URihWRlNEQl9TWVNDQUxMLCAoInN5c19mc3Rh
dDogZnA9JXhcbiIsIGZwKSk7CiAKLQllcnJvciA9IGZwLT5zdGF0KHN0KTsKKwllcnJvciA9IHZm
c19zdGF0KGZwLCBzdCk7CiAKIAlyZXR1cm4gZXJyb3I7CiB9CkBAIC04MTUsMTAgKzg0MCw4IEBA
IHN5c19zeW1saW5rKGNvbnN0IGNoYXIgKm9sZHBhdGgsIGNvbnN0IGNoYXIgKm5ld3BhdGgpCiB7
CiAJc3RydWN0IHRhc2sJKnQgPSBtYWluX3Rhc2s7CiAJaW50CQllcnJvcjsKLQlzdGQ6OnVuaXF1
ZV9wdHI8Y2hhciBbXT4gdXBfb3AgKG5ldyBjaGFyW1BBVEhfTUFYXSk7Ci0JY2hhcgkJKm9wID0g
dXBfb3AuZ2V0KCk7Ci0Jc3RkOjp1bmlxdWVfcHRyPGNoYXIgW10+IHVwX25wIChuZXcgY2hhcltQ
QVRIX01BWF0pOwotCWNoYXIJCSpucCA9IHVwX25wLmdldCgpOworCWNoYXIJCW9wW1BBVEhfTUFY
XTsKKwljaGFyCQlucFtQQVRIX01BWF07CiAJc3RydWN0IGRlbnRyeQkqbmV3ZHA7CiAJc3RydWN0
IGRlbnRyeQkqbmV3ZGlyZHA7CiAJY2hhcgkJKm5hbWU7CkBAIC0xMDMyLDE3ICsxMDU1LDE3IEBA
IHN5c19hY2Nlc3MoY2hhciAqcGF0aCwgaW50IG1vZGUpCiBpbnQKIHN5c19zdGF0KGNoYXIgKnBh
dGgsIHN0cnVjdCBzdGF0ICpzdCkKIHsKKwlzdHJ1Y3QgZGVudHJ5ICpkcDsKKwlpbnQgZXJyb3I7
CisKIAlEUFJJTlRGKFZGU0RCX1NZU0NBTEwsICgic3lzX3N0YXQ6IHBhdGg9JXNcbiIsIHBhdGgp
KTsKIAotCXRyeSB7Ci0JCWRlbnRyeV9yZWYgZHAgPSBuYW1laShwYXRoKTsKLQkJaWYgKCFkcCkg
ewotCQkJcmV0dXJuIEVOT0VOVDsKLQkJfQotCQlyZXR1cm4gdm5fc3RhdChkcC0+ZF92bm9kZSwg
c3QpOwotCX0gY2F0Y2ggKGVycm9yIGUpIHsKLQkJcmV0dXJuIGUuZ2V0KCk7Ci0JfQorCWVycm9y
ID0gbmFtZWkocGF0aCwgJmRwKTsKKwlpZiAoZXJyb3IpCisJCXJldHVybiBlcnJvcjsKKwllcnJv
ciA9IHZuX3N0YXQoZHAtPmRfdm5vZGUsIHN0KTsKKwlkcmVsZShkcCk7CisJcmV0dXJuIGVycm9y
OwogfQogCiBpbnQgc3lzX2xzdGF0KGNoYXIgKnBhdGgsIHN0cnVjdCBzdGF0ICpzdCkKQEAgLTEw
NzQsMTYgKzEwOTcsMTkgQEAgaW50IHN5c19sc3RhdChjaGFyICpwYXRoLCBzdHJ1Y3Qgc3RhdCAq
c3QpCiBpbnQKIHN5c19zdGF0ZnMoY2hhciAqcGF0aCwgc3RydWN0IHN0YXRmcyAqYnVmKQogewor
CXN0cnVjdCBkZW50cnkgKmRwOworCWludCBlcnJvcjsKKwogCW1lbXNldChidWYsIDAsIHNpemVv
ZigqYnVmKSk7Ci0JdHJ5IHsKLQkJZGVudHJ5X3JlZiBkcCA9IG5hbWVpKHBhdGgpOwotCQlpZiAo
IWRwKSB7Ci0JCQlyZXR1cm4gRU5PRU5UOwotCQl9Ci0JCXJldHVybiBWRlNfU1RBVEZTKGRwLT5k
X21vdW50LCBidWYpOwotCX0gY2F0Y2ggKGVycm9yIGUpIHsKLQkJcmV0dXJuIGUuZ2V0KCk7Ci0J
fQorCisJZXJyb3IgPSBuYW1laShwYXRoLCAmZHApOworCWlmIChlcnJvcikKKwkJcmV0dXJuIGVy
cm9yOworCisJZXJyb3IgPSBWRlNfU1RBVEZTKGRwLT5kX21vdW50LCBidWYpOworCWRyZWxlKGRw
KTsKKworCXJldHVybiBlcnJvcjsKIH0KIAogaW50CkBAIC0xMjEyLDYgKzEyMzgsNyBAQCBzeXNf
cmVhZGxpbmsoY2hhciAqcGF0aCwgY2hhciAqYnVmLCBzaXplX3QgYnVmc2l6ZSwgc3NpemVfdCAq
c2l6ZSkKIAlyZXR1cm4gKDApOwogfQogCisjaWYgMAogLyoKICAqIENoZWNrIHRoZSB2YWxpZGl0
eSBvZiB0aGUgbWVtYmVycyBvZiBhIHN0cnVjdCB0aW1ldmFsLgogICovCkBAIC0xMzk2LDYgKzE0
MjMsNyBAQCBzeXNfZnV0aW1lbnMoaW50IGZkLCBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgdGltZXNb
Ml0pCiAJYXV0byBlcnJvciA9IHN5c191dGltZW5zYXQoQVRfRkRDV0QsIHBhdGhuYW1lLmNfc3Ry
KCksIHRpbWVzLCAwKTsKIAlyZXR1cm4gZXJyb3I7CiB9CisjZW5kaWYKIAogaW50CiBzeXNfZmFs
bG9jYXRlKHN0cnVjdCBmaWxlICpmcCwgaW50IG1vZGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBs
ZW4pCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS90YXNrLmMgYi9saWIvdmZzY29yZS90YXNrLmMK
aW5kZXggMmQzNGYwZGYuLjRjZWIxMjNiIDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS90YXNrLmMK
KysrIGIvbGliL3Zmc2NvcmUvdGFzay5jCkBAIC00NCwyMyArNDQsNiBAQAogI2luY2x1ZGUgPG9z
di9wcmV4Lmg+CiAjaW5jbHVkZSAidmZzLmgiCiAKLS8qCi0gKiBBbGxvY2F0ZSBuZXcgdGFzay4K
LSAqLwotaW50Ci10YXNrX2FsbG9jKHN0cnVjdCB0YXNrICoqcHQpCi17Ci0Jc3RydWN0IHRhc2sg
KnQ7Ci0KLQkvLyBGSVhNRTogd2hlcmUgZG8gd2UgZnJlZSB0YXNrID8KLQlpZiAoISh0ID0gbmV3
IHRhc2spKQotCQlyZXR1cm4gRU5PTUVNOwotCW1lbXNldCh0LCAwLCBzaXplb2Yoc3RydWN0IHRh
c2spKTsKLQlzdHJsY3B5KHQtPnRfY3dkLCAiLyIsIHNpemVvZih0LT50X2N3ZCkpOwotCi0JKnB0
ID0gdDsKLQlyZXR1cm4gMDsKLX0KIAogLyoKICAqIENvbnZlcnQgdG8gZnVsbCBwYXRoIGZyb20g
dGhlIGN3ZCBvZiB0YXNrIGFuZCBwYXRoLgpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvdmZzLmgg
Yi9saWIvdmZzY29yZS92ZnMuaAppbmRleCBjMTMwNTE3ZC4uY2Q5NDA5NzkgMTAwNjQ0Ci0tLSBh
L2xpYi92ZnNjb3JlL3Zmcy5oCisrKyBiL2xpYi92ZnNjb3JlL3Zmcy5oCkBAIC04OSw3ICs4OSw2
IEBAIHN0cnVjdCB0YXNrIHsKIAogZXh0ZXJuIGNvbnN0IHN0cnVjdCB2ZnNzdyB2ZnNzd1tdOwog
Ci1fX0JFR0lOX0RFQ0xTCiBpbnQJIHN5c19vcGVuKGNoYXIgKnBhdGgsIGludCBmbGFncywgbW9k
ZV90IG1vZGUsIHN0cnVjdCBmaWxlICoqZnApOwogaW50CSBzeXNfcmVhZChzdHJ1Y3QgZmlsZSAq
ZnAsIGNvbnN0IHN0cnVjdCBpb3ZlYyAqaW92LCBzaXplX3QgbmlvdiwKIAkJb2ZmX3Qgb2Zmc2V0
LCBzaXplX3QgKmNvdW50KTsKQEAgLTE2NywyNiArMTY2LDQgQEAgdm9pZAkgdm5vZGVfZHVtcCh2
b2lkKTsKIHZvaWQJIG1vdW50X2R1bXAodm9pZCk7CiAjZW5kaWYKIAotX19FTkRfREVDTFMKLQot
I2lmZGVmIF9fY3BsdXNwbHVzCi0KLS8vIENvbnZlcnQgYSBwYXRoIHRvIGEgZGVudHJ5X3JlZi4g
IFJldHVybnMgYW4gZW1wdHkKLS8vIHJlZmVyZW5jZSBpZiBub3QgZm91bmQgKEVOT0VOVCkgZm9y
IGVmZmljaWVuY3ksIHRocm93cwotLy8gYW4gZXJyb3Igb24gb3RoZXIgZXJyb3JzLgotaW5saW5l
IGRlbnRyeV9yZWYgbmFtZWkoY2hhciogcGF0aCkKLXsKLQlkZW50cnkqIGRwOwotCWF1dG8gZXJy
ID0gbmFtZWkocGF0aCwgJmRwKTsKLQlpZiAoZXJyID09IEVOT0VOVCkgewotCQlyZXR1cm4gZGVu
dHJ5X3JlZigpOwotCX0gZWxzZSBpZiAoZXJyKSB7Ci0JCXRocm93IG1ha2VfZXJyb3IoZXJyKTsK
LQl9IGVsc2UgewotCQlyZXR1cm4gZGVudHJ5X3JlZihkcCwgZmFsc2UpOwotCX0KLX0KLQotI2Vu
ZGlmCi0KICNlbmRpZiAvKiAhX1ZGU19IICovCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS92bm9k
ZS5jIGIvbGliL3Zmc2NvcmUvdm5vZGUuYwppbmRleCAzNDEyYzZmYi4uZjU2NDU3N2YgMTAwNjQ0
Ci0tLSBhL2xpYi92ZnNjb3JlL3Zub2RlLmMKKysrIGIvbGliL3Zmc2NvcmUvdm5vZGUuYwpAQCAt
MTg3LDcgKzE4Nyw4IEBAIHZnZXQoc3RydWN0IG1vdW50ICptcCwgdWludDY0X3QgaW5vLCBzdHJ1
Y3Qgdm5vZGUgKip2cHApCiAJCXJldHVybiAxOwogCX0KIAotCWlmICghKHZwID0gbmV3IHZub2Rl
KCkpKSB7CisJdnAgPSBtYWxsb2Moc2l6ZW9mKCp2cCkpOworCWlmICghdnApIHsKIAkJVk5PREVf
VU5MT0NLKCk7CiAJCXJldHVybiAwOwogCX0KLS0gCjIuMTkuMgoKCgpfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0
Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2pl
Y3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Feb 18 14:55:22 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 18 Feb 2019 14:55:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gvkKI-0004UU-76; Mon, 18 Feb 2019 14:55:22 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=odxU=QZ=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gvkKG-0004Tg-TR
 for minios-devel@lists.xen.org; Mon, 18 Feb 2019 14:55:21 +0000
X-Inumbo-ID: 30d8d098-338d-11e9-84ec-3b9b404beec5
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 30d8d098-338d-11e9-84ec-3b9b404beec5;
 Mon, 18 Feb 2019 14:55:12 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 328C5104E0C;
 Mon, 18 Feb 2019 15:55:11 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id sUmK2F64CO4w; Mon, 18 Feb 2019 15:55:10 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id D83D7104BE1
 for <minios-devel@lists.xen.org>; Mon, 18 Feb 2019 15:55:08 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 18 Feb 2019 15:55:08 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Mon, 18 Feb 2019 15:54:23 +0100
Message-ID: <20190218145440.30580-6-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190218145440.30580-1-yuri.volchkov@neclab.eu>
References: <20190218145440.30580-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v4 05/22] lib/vfscore: tabify
 imported vfs code
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: simon.kuenzer@neclab.eu, sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VG8gY29tcGx5IHdpdGggVW5pa3JhZnQgY29kaW5nIHN0eWxlLCBpbmRlbnRzIG11c3QgYmUgdGFi
cywgbm90CnNwYWNlcy4gSW1wb3J0ZWQgY29kZSB3YXMgYSBtaXh0dXJlIG9mIGJvdGguCgpTaWdu
ZWQtb2ZmLWJ5OiBZdXJpIFZvbGNoa292IDx5dXJpLnZvbGNoa292QG5lY2xhYi5ldT4KUmV2aWV3
ZWQtYnk6IFNoYXJhbiBTYW50aGFuYW0gPHNoYXJhbi5zYW50aGFuYW1AbmVjbGFiLmV1PgotLS0K
IGxpYi92ZnNjb3JlL2RlbnRyeS5jICAgICAgICAgICAgICAgICB8ICAyNjggKy0tCiBsaWIvdmZz
Y29yZS9mb3BzLmMgICAgICAgICAgICAgICAgICAgfCAgIDMyICstCiBsaWIvdmZzY29yZS9pbmNs
dWRlL3Zmc2NvcmUvZGVudHJ5LmggfCAgICA0ICstCiBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2Nv
cmUvbW91bnQuaCAgfCAgICA4ICstCiBsaWIvdmZzY29yZS9sb29rdXAuYyAgICAgICAgICAgICAg
ICAgfCAgNTU0ICsrLS0tCiBsaWIvdmZzY29yZS9tYWluLmMgICAgICAgICAgICAgICAgICAgfCAy
ODQ0ICsrKysrKysrKysrKystLS0tLS0tLS0tLS0tCiBsaWIvdmZzY29yZS9tb3VudC5jICAgICAg
ICAgICAgICAgICAgfCAgNTgwICsrKy0tLQogbGliL3Zmc2NvcmUvc3lzY2FsbHMuYyAgICAgICAg
ICAgICAgIHwgIDQ2NCArKy0tLQogbGliL3Zmc2NvcmUvdGFzay5jICAgICAgICAgICAgICAgICAg
IHwgICAxMCArLQogbGliL3Zmc2NvcmUvdmZzLmggICAgICAgICAgICAgICAgICAgIHwgICAgMiAr
LQogbGliL3Zmc2NvcmUvdm5vZGUuYyAgICAgICAgICAgICAgICAgIHwgICA1MCArLQogMTEgZmls
ZXMgY2hhbmdlZCwgMjQwOCBpbnNlcnRpb25zKCspLCAyNDA4IGRlbGV0aW9ucygtKQoKZGlmZiAt
LWdpdCBhL2xpYi92ZnNjb3JlL2RlbnRyeS5jIGIvbGliL3Zmc2NvcmUvZGVudHJ5LmMKaW5kZXgg
ZmFjZDllYWEuLmMyZjIwOWIyIDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9kZW50cnkuYworKysg
Yi9saWIvdmZzY29yZS9kZW50cnkuYwpAQCAtNTUsMTgwICs1NSwxODAgQEAgc3RhdGljIG11dGV4
IGRlbnRyeV9oYXNoX2xvY2s7CiBzdGF0aWMgdV9pbnQKIGRlbnRyeV9oYXNoKHN0cnVjdCBtb3Vu
dCAqbXAsIGNvbnN0IGNoYXIgKnBhdGgpCiB7Ci0gICAgdV9pbnQgdmFsID0gMDsKLQotICAgIGlm
IChwYXRoKSB7Ci0gICAgICAgIHdoaWxlICgqcGF0aCkgewotICAgICAgICAgICAgdmFsID0gKCh2
YWwgPDwgNSkgKyB2YWwpICsgKnBhdGgrKzsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4g
KHZhbCBeICh1bnNpZ25lZCBsb25nKSBtcCkgJiAoREVOVFJZX0JVQ0tFVFMgLSAxKTsKKwl1X2lu
dCB2YWwgPSAwOworCisJaWYgKHBhdGgpIHsKKwkJd2hpbGUgKCpwYXRoKSB7CisJCQl2YWwgPSAo
KHZhbCA8PCA1KSArIHZhbCkgKyAqcGF0aCsrOworCQl9CisJfQorCXJldHVybiAodmFsIF4gKHVu
c2lnbmVkIGxvbmcpIG1wKSAmIChERU5UUllfQlVDS0VUUyAtIDEpOwogfQogCiAKIHN0cnVjdCBk
ZW50cnkgKgogZGVudHJ5X2FsbG9jKHN0cnVjdCBkZW50cnkgKnBhcmVudF9kcCwgc3RydWN0IHZu
b2RlICp2cCwgY29uc3QgY2hhciAqcGF0aCkKIHsKLSAgICBzdHJ1Y3QgbW91bnQgKm1wID0gdnAt
PnZfbW91bnQ7Ci0gICAgc3RydWN0IGRlbnRyeSAqZHAgPSAoZGVudHJ5KiljYWxsb2Moc2l6ZW9m
KCpkcCksIDEpOwotCi0gICAgaWYgKCFkcCkgewotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICB9Ci0KLSAgICB2cmVmKHZwKTsKLQotICAgIGRwLT5kX3JlZmNudCA9IDE7Ci0gICAgZHAtPmRf
dm5vZGUgPSB2cDsKLSAgICBkcC0+ZF9tb3VudCA9IG1wOwotICAgIGRwLT5kX3BhdGggPSBzdHJk
dXAocGF0aCk7Ci0gICAgTElTVF9JTklUKCZkcC0+ZF9jaGlsZHJlbik7Ci0KLSAgICBpZiAocGFy
ZW50X2RwKSB7Ci0gICAgICAgIGRyZWYocGFyZW50X2RwKTsKLSAgICAgICAgV0lUSF9MT0NLKHBh
cmVudF9kcC0+ZF9sb2NrKSB7Ci0gICAgICAgICAgICAvLyBJbnNlcnQgZHAgaW50byBpdHMgcGFy
ZW50J3MgY2hpbGRyZW4gbGlzdC4KLSAgICAgICAgICAgIExJU1RfSU5TRVJUX0hFQUQoJnBhcmVu
dF9kcC0+ZF9jaGlsZHJlbiwgZHAsIGRfY2hpbGRyZW5fbGluayk7Ci0gICAgICAgIH0KLSAgICB9
Ci0gICAgZHAtPmRfcGFyZW50ID0gcGFyZW50X2RwOwotCi0gICAgdm5fYWRkX25hbWUodnAsIGRw
KTsKLQotICAgIG11dGV4X2xvY2soJmRlbnRyeV9oYXNoX2xvY2spOwotICAgIExJU1RfSU5TRVJU
X0hFQUQoJmRlbnRyeV9oYXNoX3RhYmxlW2RlbnRyeV9oYXNoKG1wLCBwYXRoKV0sIGRwLCBkX2xp
bmspOwotICAgIG11dGV4X3VubG9jaygmZGVudHJ5X2hhc2hfbG9jayk7Ci0gICAgcmV0dXJuIGRw
OworCXN0cnVjdCBtb3VudCAqbXAgPSB2cC0+dl9tb3VudDsKKwlzdHJ1Y3QgZGVudHJ5ICpkcCA9
IChkZW50cnkqKWNhbGxvYyhzaXplb2YoKmRwKSwgMSk7CisKKwlpZiAoIWRwKSB7CisJCXJldHVy
biBudWxscHRyOworCX0KKworCXZyZWYodnApOworCisJZHAtPmRfcmVmY250ID0gMTsKKwlkcC0+
ZF92bm9kZSA9IHZwOworCWRwLT5kX21vdW50ID0gbXA7CisJZHAtPmRfcGF0aCA9IHN0cmR1cChw
YXRoKTsKKwlMSVNUX0lOSVQoJmRwLT5kX2NoaWxkcmVuKTsKKworCWlmIChwYXJlbnRfZHApIHsK
KwkJZHJlZihwYXJlbnRfZHApOworCQlXSVRIX0xPQ0socGFyZW50X2RwLT5kX2xvY2spIHsKKwkJ
CS8vIEluc2VydCBkcCBpbnRvIGl0cyBwYXJlbnQncyBjaGlsZHJlbiBsaXN0LgorCQkJTElTVF9J
TlNFUlRfSEVBRCgmcGFyZW50X2RwLT5kX2NoaWxkcmVuLCBkcCwgZF9jaGlsZHJlbl9saW5rKTsK
KwkJfQorCX0KKwlkcC0+ZF9wYXJlbnQgPSBwYXJlbnRfZHA7CisKKwl2bl9hZGRfbmFtZSh2cCwg
ZHApOworCisJbXV0ZXhfbG9jaygmZGVudHJ5X2hhc2hfbG9jayk7CisJTElTVF9JTlNFUlRfSEVB
RCgmZGVudHJ5X2hhc2hfdGFibGVbZGVudHJ5X2hhc2gobXAsIHBhdGgpXSwgZHAsIGRfbGluayk7
CisJbXV0ZXhfdW5sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKKwlyZXR1cm4gZHA7CiB9OwogCiBz
dHJ1Y3QgZGVudHJ5ICoKIGRlbnRyeV9sb29rdXAoc3RydWN0IG1vdW50ICptcCwgY2hhciAqcGF0
aCkKIHsKLSAgICBzdHJ1Y3QgZGVudHJ5ICpkcDsKLQotICAgIG11dGV4X2xvY2soJmRlbnRyeV9o
YXNoX2xvY2spOwotICAgIExJU1RfRk9SRUFDSChkcCwgJmRlbnRyeV9oYXNoX3RhYmxlW2RlbnRy
eV9oYXNoKG1wLCBwYXRoKV0sIGRfbGluaykgewotICAgICAgICBpZiAoZHAtPmRfbW91bnQgPT0g
bXAgJiYgIXN0cm5jbXAoZHAtPmRfcGF0aCwgcGF0aCwgUEFUSF9NQVgpKSB7Ci0gICAgICAgICAg
ICBkcC0+ZF9yZWZjbnQrKzsKLSAgICAgICAgICAgIG11dGV4X3VubG9jaygmZGVudHJ5X2hhc2hf
bG9jayk7Ci0gICAgICAgICAgICByZXR1cm4gZHA7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgbXV0
ZXhfdW5sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKLSAgICByZXR1cm4gbnVsbHB0cjsgICAgICAg
ICAgICAgICAgLyogbm90IGZvdW5kICovCisJc3RydWN0IGRlbnRyeSAqZHA7CisKKwltdXRleF9s
b2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKKwlMSVNUX0ZPUkVBQ0goZHAsICZkZW50cnlfaGFzaF90
YWJsZVtkZW50cnlfaGFzaChtcCwgcGF0aCldLCBkX2xpbmspIHsKKwkJaWYgKGRwLT5kX21vdW50
ID09IG1wICYmICFzdHJuY21wKGRwLT5kX3BhdGgsIHBhdGgsIFBBVEhfTUFYKSkgeworCQkJZHAt
PmRfcmVmY250Kys7CisJCQltdXRleF91bmxvY2soJmRlbnRyeV9oYXNoX2xvY2spOworCQkJcmV0
dXJuIGRwOworCQl9CisJfQorCW11dGV4X3VubG9jaygmZGVudHJ5X2hhc2hfbG9jayk7CisJcmV0
dXJuIG51bGxwdHI7ICAgICAgICAgICAgICAgIC8qIG5vdCBmb3VuZCAqLwogfQogCiBzdGF0aWMg
dm9pZCBkZW50cnlfY2hpbGRyZW5fcmVtb3ZlKHN0cnVjdCBkZW50cnkgKmRwKQogewotICAgIHN0
cnVjdCBkZW50cnkgKmVudHJ5ID0gbnVsbHB0cjsKLQotICAgIFdJVEhfTE9DSyhkcC0+ZF9sb2Nr
KSB7Ci0gICAgICAgIExJU1RfRk9SRUFDSChlbnRyeSwgJmRwLT5kX2NoaWxkcmVuLCBkX2NoaWxk
cmVuX2xpbmspIHsKLSAgICAgICAgICAgIEFTU0VSVChlbnRyeSk7Ci0gICAgICAgICAgICBBU1NF
UlQoZW50cnktPmRfcmVmY250ID4gMCk7Ci0gICAgICAgICAgICBMSVNUX1JFTU9WRShlbnRyeSwg
ZF9saW5rKTsKLSAgICAgICAgfQotICAgIH0KKwlzdHJ1Y3QgZGVudHJ5ICplbnRyeSA9IG51bGxw
dHI7CisKKwlXSVRIX0xPQ0soZHAtPmRfbG9jaykgeworCQlMSVNUX0ZPUkVBQ0goZW50cnksICZk
cC0+ZF9jaGlsZHJlbiwgZF9jaGlsZHJlbl9saW5rKSB7CisJCQlBU1NFUlQoZW50cnkpOworCQkJ
QVNTRVJUKGVudHJ5LT5kX3JlZmNudCA+IDApOworCQkJTElTVF9SRU1PVkUoZW50cnksIGRfbGlu
ayk7CisJCX0KKwl9CiB9CiAKIHZvaWQKIGRlbnRyeV9tb3ZlKHN0cnVjdCBkZW50cnkgKmRwLCBz
dHJ1Y3QgZGVudHJ5ICpwYXJlbnRfZHAsIGNoYXIgKnBhdGgpCiB7Ci0gICAgc3RydWN0IGRlbnRy
eSAqb2xkX3BkcCA9IGRwLT5kX3BhcmVudDsKLSAgICBjaGFyICpvbGRfcGF0aCA9IGRwLT5kX3Bh
dGg7Ci0KLSAgICBpZiAob2xkX3BkcCkgewotICAgICAgICBXSVRIX0xPQ0sob2xkX3BkcC0+ZF9s
b2NrKSB7Ci0gICAgICAgICAgICAvLyBSZW1vdmUgZHAgZnJvbSBpdHMgb2xkIHBhcmVudCdzIGNo
aWxkcmVuIGxpc3QuCi0gICAgICAgICAgICBMSVNUX1JFTU9WRShkcCwgZF9jaGlsZHJlbl9saW5r
KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChwYXJlbnRfZHApIHsKLSAgICAgICAgZHJl
ZihwYXJlbnRfZHApOwotICAgICAgICBXSVRIX0xPQ0socGFyZW50X2RwLT5kX2xvY2spIHsKLSAg
ICAgICAgICAgIC8vIEluc2VydCBkcCBpbnRvIGl0cyBuZXcgcGFyZW50J3MgY2hpbGRyZW4gbGlz
dC4KLSAgICAgICAgICAgIExJU1RfSU5TRVJUX0hFQUQoJnBhcmVudF9kcC0+ZF9jaGlsZHJlbiwg
ZHAsIGRfY2hpbGRyZW5fbGluayk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBXSVRIX0xPQ0so
ZGVudHJ5X2hhc2hfbG9jaykgewotICAgICAgICAvLyBSZW1vdmUgYWxsIGRwJ3MgY2hpbGQgZGVu
dHJpZXMgZnJvbSB0aGUgaGFzaHRhYmxlLgotICAgICAgICBkZW50cnlfY2hpbGRyZW5fcmVtb3Zl
KGRwKTsKLSAgICAgICAgLy8gUmVtb3ZlIGRwIHdpdGggb3V0ZGF0ZWQgaGFzaCBpbmZvIGZyb20g
dGhlIGhhc2h0YWJsZS4KLSAgICAgICAgTElTVF9SRU1PVkUoZHAsIGRfbGluayk7Ci0gICAgICAg
IC8vIFVwZGF0ZSBkcC4KLSAgICAgICAgZHAtPmRfcGF0aCA9IHN0cmR1cChwYXRoKTsKLSAgICAg
ICAgZHAtPmRfcGFyZW50ID0gcGFyZW50X2RwOwotICAgICAgICAvLyBJbnNlcnQgZHAgdXBkYXRl
ZCBoYXNoIGluZm8gaW50byB0aGUgaGFzaHRhYmxlLgotICAgICAgICBMSVNUX0lOU0VSVF9IRUFE
KCZkZW50cnlfaGFzaF90YWJsZVtkZW50cnlfaGFzaChkcC0+ZF9tb3VudCwgcGF0aCldLAotICAg
ICAgICAgICAgZHAsIGRfbGluayk7Ci0gICAgfQotCi0gICAgaWYgKG9sZF9wZHApIHsKLSAgICAg
ICAgZHJlbGUob2xkX3BkcCk7Ci0gICAgfQotCi0gICAgZnJlZShvbGRfcGF0aCk7CisJc3RydWN0
IGRlbnRyeSAqb2xkX3BkcCA9IGRwLT5kX3BhcmVudDsKKwljaGFyICpvbGRfcGF0aCA9IGRwLT5k
X3BhdGg7CisKKwlpZiAob2xkX3BkcCkgeworCQlXSVRIX0xPQ0sob2xkX3BkcC0+ZF9sb2NrKSB7
CisJCQkvLyBSZW1vdmUgZHAgZnJvbSBpdHMgb2xkIHBhcmVudCdzIGNoaWxkcmVuIGxpc3QuCisJ
CQlMSVNUX1JFTU9WRShkcCwgZF9jaGlsZHJlbl9saW5rKTsKKwkJfQorCX0KKworCWlmIChwYXJl
bnRfZHApIHsKKwkJZHJlZihwYXJlbnRfZHApOworCQlXSVRIX0xPQ0socGFyZW50X2RwLT5kX2xv
Y2spIHsKKwkJCS8vIEluc2VydCBkcCBpbnRvIGl0cyBuZXcgcGFyZW50J3MgY2hpbGRyZW4gbGlz
dC4KKwkJCUxJU1RfSU5TRVJUX0hFQUQoJnBhcmVudF9kcC0+ZF9jaGlsZHJlbiwgZHAsIGRfY2hp
bGRyZW5fbGluayk7CisJCX0KKwl9CisKKwlXSVRIX0xPQ0soZGVudHJ5X2hhc2hfbG9jaykgewor
CQkvLyBSZW1vdmUgYWxsIGRwJ3MgY2hpbGQgZGVudHJpZXMgZnJvbSB0aGUgaGFzaHRhYmxlLgor
CQlkZW50cnlfY2hpbGRyZW5fcmVtb3ZlKGRwKTsKKwkJLy8gUmVtb3ZlIGRwIHdpdGggb3V0ZGF0
ZWQgaGFzaCBpbmZvIGZyb20gdGhlIGhhc2h0YWJsZS4KKwkJTElTVF9SRU1PVkUoZHAsIGRfbGlu
ayk7CisJCS8vIFVwZGF0ZSBkcC4KKwkJZHAtPmRfcGF0aCA9IHN0cmR1cChwYXRoKTsKKwkJZHAt
PmRfcGFyZW50ID0gcGFyZW50X2RwOworCQkvLyBJbnNlcnQgZHAgdXBkYXRlZCBoYXNoIGluZm8g
aW50byB0aGUgaGFzaHRhYmxlLgorCQlMSVNUX0lOU0VSVF9IRUFEKCZkZW50cnlfaGFzaF90YWJs
ZVtkZW50cnlfaGFzaChkcC0+ZF9tb3VudCwgcGF0aCldLAorCQkJZHAsIGRfbGluayk7CisJfQor
CisJaWYgKG9sZF9wZHApIHsKKwkJZHJlbGUob2xkX3BkcCk7CisJfQorCisJZnJlZShvbGRfcGF0
aCk7CiB9CiAKIHZvaWQKIGRlbnRyeV9yZW1vdmUoc3RydWN0IGRlbnRyeSAqZHApCiB7Ci0gICAg
bXV0ZXhfbG9jaygmZGVudHJ5X2hhc2hfbG9jayk7Ci0gICAgTElTVF9SRU1PVkUoZHAsIGRfbGlu
ayk7Ci0gICAgLyogcHV0IGl0IG9uIGEgZmFrZSBsaXN0IGZvciBkcmVsZSgpIHRvIHdvcmsqLwot
ICAgIExJU1RfSU5TRVJUX0hFQUQoJmZha2UsIGRwLCBkX2xpbmspOwotICAgIG11dGV4X3VubG9j
aygmZGVudHJ5X2hhc2hfbG9jayk7CisJbXV0ZXhfbG9jaygmZGVudHJ5X2hhc2hfbG9jayk7CisJ
TElTVF9SRU1PVkUoZHAsIGRfbGluayk7CisJLyogcHV0IGl0IG9uIGEgZmFrZSBsaXN0IGZvciBk
cmVsZSgpIHRvIHdvcmsqLworCUxJU1RfSU5TRVJUX0hFQUQoJmZha2UsIGRwLCBkX2xpbmspOwor
CW11dGV4X3VubG9jaygmZGVudHJ5X2hhc2hfbG9jayk7CiB9CiAKIHZvaWQKIGRyZWYoc3RydWN0
IGRlbnRyeSAqZHApCiB7Ci0gICAgQVNTRVJUKGRwKTsKLSAgICBBU1NFUlQoZHAtPmRfcmVmY250
ID4gMCk7CisJQVNTRVJUKGRwKTsKKwlBU1NFUlQoZHAtPmRfcmVmY250ID4gMCk7CiAKLSAgICBt
dXRleF9sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKLSAgICBkcC0+ZF9yZWZjbnQrKzsKLSAgICBt
dXRleF91bmxvY2soJmRlbnRyeV9oYXNoX2xvY2spOworCW11dGV4X2xvY2soJmRlbnRyeV9oYXNo
X2xvY2spOworCWRwLT5kX3JlZmNudCsrOworCW11dGV4X3VubG9jaygmZGVudHJ5X2hhc2hfbG9j
ayk7CiB9CiAKIHZvaWQKIGRyZWxlKHN0cnVjdCBkZW50cnkgKmRwKQogewotICAgIEFTU0VSVChk
cCk7Ci0gICAgQVNTRVJUKGRwLT5kX3JlZmNudCA+IDApOwotCi0gICAgbXV0ZXhfbG9jaygmZGVu
dHJ5X2hhc2hfbG9jayk7Ci0gICAgaWYgKC0tZHAtPmRfcmVmY250KSB7Ci0gICAgICAgIG11dGV4
X3VubG9jaygmZGVudHJ5X2hhc2hfbG9jayk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
TElTVF9SRU1PVkUoZHAsIGRfbGluayk7Ci0gICAgdm5fZGVsX25hbWUoZHAtPmRfdm5vZGUsIGRw
KTsKLQotICAgIG11dGV4X3VubG9jaygmZGVudHJ5X2hhc2hfbG9jayk7Ci0KLSAgICBpZiAoZHAt
PmRfcGFyZW50KSB7Ci0gICAgICAgIFdJVEhfTE9DSyhkcC0+ZF9wYXJlbnQtPmRfbG9jaykgewot
ICAgICAgICAgICAgLy8gUmVtb3ZlIGRwIGZyb20gaXRzIHBhcmVudCdzIGNoaWxkcmVuIGxpc3Qu
Ci0gICAgICAgICAgICBMSVNUX1JFTU9WRShkcCwgZF9jaGlsZHJlbl9saW5rKTsKLSAgICAgICAg
fQotICAgICAgICBkcmVsZShkcC0+ZF9wYXJlbnQpOwotICAgIH0KLQotICAgIHZyZWxlKGRwLT5k
X3Zub2RlKTsKLQotICAgIGZyZWUoZHAtPmRfcGF0aCk7Ci0gICAgZnJlZShkcCk7CisJQVNTRVJU
KGRwKTsKKwlBU1NFUlQoZHAtPmRfcmVmY250ID4gMCk7CisKKwltdXRleF9sb2NrKCZkZW50cnlf
aGFzaF9sb2NrKTsKKwlpZiAoLS1kcC0+ZF9yZWZjbnQpIHsKKwkJbXV0ZXhfdW5sb2NrKCZkZW50
cnlfaGFzaF9sb2NrKTsKKwkJcmV0dXJuOworCX0KKwlMSVNUX1JFTU9WRShkcCwgZF9saW5rKTsK
Kwl2bl9kZWxfbmFtZShkcC0+ZF92bm9kZSwgZHApOworCisJbXV0ZXhfdW5sb2NrKCZkZW50cnlf
aGFzaF9sb2NrKTsKKworCWlmIChkcC0+ZF9wYXJlbnQpIHsKKwkJV0lUSF9MT0NLKGRwLT5kX3Bh
cmVudC0+ZF9sb2NrKSB7CisJCQkvLyBSZW1vdmUgZHAgZnJvbSBpdHMgcGFyZW50J3MgY2hpbGRy
ZW4gbGlzdC4KKwkJCUxJU1RfUkVNT1ZFKGRwLCBkX2NoaWxkcmVuX2xpbmspOworCQl9CisJCWRy
ZWxlKGRwLT5kX3BhcmVudCk7CisJfQorCisJdnJlbGUoZHAtPmRfdm5vZGUpOworCisJZnJlZShk
cC0+ZF9wYXRoKTsKKwlmcmVlKGRwKTsKIH0KIAogdm9pZAogZGVudHJ5X2luaXQodm9pZCkKIHsK
LSAgICBpbnQgaTsKKwlpbnQgaTsKIAotICAgIGZvciAoaSA9IDA7IGkgPCBERU5UUllfQlVDS0VU
UzsgaSsrKSB7Ci0gICAgICAgIExJU1RfSU5JVCgmZGVudHJ5X2hhc2hfdGFibGVbaV0pOwotICAg
IH0KKwlmb3IgKGkgPSAwOyBpIDwgREVOVFJZX0JVQ0tFVFM7IGkrKykgeworCQlMSVNUX0lOSVQo
JmRlbnRyeV9oYXNoX3RhYmxlW2ldKTsKKwl9CiB9CmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9m
b3BzLmMgYi9saWIvdmZzY29yZS9mb3BzLmMKaW5kZXggM2E4Zjk4YjQuLmFiMWY4Y2JiIDEwMDY0
NAotLS0gYS9saWIvdmZzY29yZS9mb3BzLmMKKysrIGIvbGliL3Zmc2NvcmUvZm9wcy5jCkBAIC0x
NDAsMTcgKzE0MCwxNyBAQCBpbnQgdmZzX2ZpbGU6OmNobW9kKG1vZGVfdCBtb2RlKQogCiBib29s
IHZmc19maWxlOjptYXBfcGFnZSh1aW50cHRyX3Qgb2ZmLCBtbXU6Omh3X3B0ZXA8MD4gcHRlcCwg
bW11OjpwdF9lbGVtZW50PDA+IHB0ZSwgYm9vbCB3cml0ZSwgYm9vbCBzaGFyZWQpCiB7Ci0gICAg
cmV0dXJuIHBhZ2VjYWNoZTo6Z2V0KHRoaXMsIG9mZiwgcHRlcCwgcHRlLCB3cml0ZSwgc2hhcmVk
KTsKKwlyZXR1cm4gcGFnZWNhY2hlOjpnZXQodGhpcywgb2ZmLCBwdGVwLCBwdGUsIHdyaXRlLCBz
aGFyZWQpOwogfQogCiBib29sIHZmc19maWxlOjpwdXRfcGFnZSh2b2lkICphZGRyLCB1aW50cHRy
X3Qgb2ZmLCBtbXU6Omh3X3B0ZXA8MD4gcHRlcCkKIHsKLSAgICByZXR1cm4gcGFnZWNhY2hlOjpy
ZWxlYXNlKHRoaXMsIGFkZHIsIG9mZiwgcHRlcCk7CisJcmV0dXJuIHBhZ2VjYWNoZTo6cmVsZWFz
ZSh0aGlzLCBhZGRyLCBvZmYsIHB0ZXApOwogfQogCiB2b2lkIHZmc19maWxlOjpzeW5jKG9mZl90
IHN0YXJ0LCBvZmZfdCBlbmQpCiB7Ci0gICAgcGFnZWNhY2hlOjpzeW5jKHRoaXMsIHN0YXJ0LCBl
bmQpOworCXBhZ2VjYWNoZTo6c3luYyh0aGlzLCBzdGFydCwgZW5kKTsKIH0KIAogLy8gTG9ja2lu
ZzogVk9QX0NBQ0hFIHdpbGwgY2FsbCBpbnRvIHRoZSBmaWxlc3lzdGVtLCBhbmQgdGhhdCBjYW4g
dHJpZ2dlciBhbgpAQCAtMTU5LDIzICsxNTksMjMgQEAgdm9pZCB2ZnNfZmlsZTo6c3luYyhvZmZf
dCBzdGFydCwgb2ZmX3QgZW5kKQogLy8gYmVjYXVzZSBub3QgYWxsIGludmFsaWRhdGlvbnMgd2ls
bCBiZSBzeW5jaHJvbm91cy4KIGludCB2ZnNfZmlsZTo6Z2V0X2FyY2J1Zih2b2lkKiBrZXksIG9m
Zl90IG9mZnNldCkKIHsKLSAgICBzdHJ1Y3Qgdm5vZGUgKnZwID0gZl9kZW50cnktPmRfdm5vZGU7
CisJc3RydWN0IHZub2RlICp2cCA9IGZfZGVudHJ5LT5kX3Zub2RlOwogCi0gICAgaW92ZWMgaW9b
MV07CisJaW92ZWMgaW9bMV07CiAKLSAgICBpb1swXS5pb3ZfYmFzZSA9IGtleTsKLSAgICB1aW8g
ZGF0YTsKLSAgICBkYXRhLnVpb19pb3YgPSBpbzsKLSAgICBkYXRhLnVpb19pb3ZjbnQgPSAxOwot
ICAgIGRhdGEudWlvX29mZnNldCA9IG9mZnNldDsKLSAgICBkYXRhLnVpb19yZXNpZCA9IG1tdTo6
cGFnZV9zaXplOwotICAgIGRhdGEudWlvX3J3ID0gVUlPX1JFQUQ7CisJaW9bMF0uaW92X2Jhc2Ug
PSBrZXk7CisJdWlvIGRhdGE7CisJZGF0YS51aW9faW92ID0gaW87CisJZGF0YS51aW9faW92Y250
ID0gMTsKKwlkYXRhLnVpb19vZmZzZXQgPSBvZmZzZXQ7CisJZGF0YS51aW9fcmVzaWQgPSBtbXU6
OnBhZ2Vfc2l6ZTsKKwlkYXRhLnVpb19ydyA9IFVJT19SRUFEOwogCi0gICAgdm5fbG9jayh2cCk7
Ci0gICAgYXNzZXJ0KFZPUF9DQUNIRSh2cCwgdGhpcywgJmRhdGEpID09IDApOwotICAgIHZuX3Vu
bG9jayh2cCk7CisJdm5fbG9jayh2cCk7CisJYXNzZXJ0KFZPUF9DQUNIRSh2cCwgdGhpcywgJmRh
dGEpID09IDApOworCXZuX3VubG9jayh2cCk7CiAKLSAgICByZXR1cm4gKGRhdGEudWlvX3Jlc2lk
ICE9IDApID8gLTEgOiAwOworCXJldHVybiAoZGF0YS51aW9fcmVzaWQgIT0gMCkgPyAtMSA6IDA7
CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxtbXU6OmZpbGVfdm1hPiB2ZnNfZmlsZTo6bW1hcChhZGRy
X3JhbmdlIHJhbmdlLCB1bnNpZ25lZCBmbGFncywgdW5zaWduZWQgcGVybSwgb2ZmX3Qgb2Zmc2V0
KQpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2RlbnRyeS5oIGIvbGli
L3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2RlbnRyeS5oCmluZGV4IGEyNTQ1YWY4Li5mNTg1MDc4
NiAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2RlbnRyeS5oCisrKyBi
L2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9kZW50cnkuaApAQCAtMzMsOCArMzMsOCBAQCBz
dHJ1Y3QgZGVudHJ5IHsKIHVzaW5nIGRlbnRyeV9yZWYgPSBib29zdDo6aW50cnVzaXZlX3B0cjxk
ZW50cnk+OwogCiBleHRlcm4gIkMiIHsKLSAgICB2b2lkIGRyZWYoc3RydWN0IGRlbnRyeSogZHAp
OwotICAgIHZvaWQgZHJlbGUoc3RydWN0IGRlbnRyeSogZHApOworCXZvaWQgZHJlZihzdHJ1Y3Qg
ZGVudHJ5KiBkcCk7CisJdm9pZCBkcmVsZShzdHJ1Y3QgZGVudHJ5KiBkcCk7CiB9OwogCiBpbmxp
bmUgdm9pZCBpbnRydXNpdmVfcHRyX2FkZF9yZWYoZGVudHJ5KiBkcCkgeyBkcmVmKGRwKTsgfQpk
aWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmggYi9saWIvdmZz
Y29yZS9pbmNsdWRlL3Zmc2NvcmUvbW91bnQuaAppbmRleCA3MjY4ZDhjZS4uMGU3ODkyOWYgMTAw
NjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9tb3VudC5oCisrKyBiL2xpYi92
ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9tb3VudC5oCkBAIC0xNTYsMTAgKzE1NiwxMCBAQCBfX0VO
RF9ERUNMUwogbmFtZXNwYWNlIG9zdiB7CiAKIHN0cnVjdCBtb3VudF9kZXNjIHsKLSAgICBzdGQ6
OnN0cmluZyBzcGVjaWFsOwotICAgIHN0ZDo6c3RyaW5nIHBhdGg7Ci0gICAgc3RkOjpzdHJpbmcg
dHlwZTsKLSAgICBzdGQ6OnN0cmluZyBvcHRpb25zOworCXN0ZDo6c3RyaW5nIHNwZWNpYWw7CisJ
c3RkOjpzdHJpbmcgcGF0aDsKKwlzdGQ6OnN0cmluZyB0eXBlOworCXN0ZDo6c3RyaW5nIG9wdGlv
bnM7CiB9OwogCiBzdGQ6OnZlY3Rvcjxtb3VudF9kZXNjPiBjdXJyZW50X21vdW50cygpOwpkaWZm
IC0tZ2l0IGEvbGliL3Zmc2NvcmUvbG9va3VwLmMgYi9saWIvdmZzY29yZS9sb29rdXAuYwppbmRl
eCBhZDAzZmUyNS4uMzAxMzlhODcgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2xvb2t1cC5jCisr
KyBiL2xpYi92ZnNjb3JlL2xvb2t1cC5jCkBAIC00MCw1NyArNDAsNTcgQEAKIHN0YXRpYyBzc2l6
ZV90CiByZWFkX2xpbmsoc3RydWN0IHZub2RlICp2cCwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3os
IHNzaXplX3QgKnN6KQogewotICAgIHN0cnVjdCBpb3ZlYyBpb3YgPSB7YnVmLCBidWZzen07Ci0g
ICAgc3RydWN0IHVpbyAgIHVpbyA9IHsmaW92LCAxLCAwLCAoc3NpemVfdCkgYnVmc3osIFVJT19S
RUFEfTsKLSAgICBpbnQgcmM7CisJc3RydWN0IGlvdmVjIGlvdiA9IHtidWYsIGJ1ZnN6fTsKKwlz
dHJ1Y3QgdWlvICAgdWlvID0geyZpb3YsIDEsIDAsIChzc2l6ZV90KSBidWZzeiwgVUlPX1JFQUR9
OworCWludCByYzsKIAotICAgICpzeiA9IDA7Ci0gICAgdm5fbG9jayh2cCk7Ci0gICAgcmMgID0g
Vk9QX1JFQURMSU5LKHZwLCAmdWlvKTsKLSAgICB2bl91bmxvY2sodnApOworCSpzeiA9IDA7CisJ
dm5fbG9jayh2cCk7CisJcmMgID0gVk9QX1JFQURMSU5LKHZwLCAmdWlvKTsKKwl2bl91bmxvY2so
dnApOwogCi0gICAgaWYgKHJjICE9IDApIHsKLSAgICAgICAgcmV0dXJuIChyYyk7Ci0gICAgfQor
CWlmIChyYyAhPSAwKSB7CisJCXJldHVybiAocmMpOworCX0KIAotICAgICpzeiA9IGJ1ZnN6IC0g
dWlvLnVpb19yZXNpZDsKLSAgICByZXR1cm4gKDApOworCSpzeiA9IGJ1ZnN6IC0gdWlvLnVpb19y
ZXNpZDsKKwlyZXR1cm4gKDApOwogfQogCiBpbnQKIG5hbWVpX2ZvbGxvd19saW5rKHN0cnVjdCBk
ZW50cnkgKmRwLCBjaGFyICpub2RlLCBjaGFyICpuYW1lLCBjaGFyICpmcCwgc2l6ZV90IG1vdW50
cG9pbnRfbGVuKQogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxjaGFyIFtdPiBsaW5rIChuZXcgY2hh
cltQQVRIX01BWF0pOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxjaGFyIFtdPiB0IChuZXcgY2hhcltQ
QVRIX01BWF0pOwotICAgIGNoYXIgICAgKmxwOwotICAgIGludCAgICAgZXJyb3I7Ci0gICAgc3Np
emVfdCBzejsKLSAgICBjaGFyICAgICpwOwotICAgIGludCAgICAgYzsKLQotICAgIGxwICAgID0g
bGluay5nZXQoKTsKLSAgICBlcnJvciA9IHJlYWRfbGluayhkcC0+ZF92bm9kZSwgbHAsIFBBVEhf
TUFYLCAmc3opOwotICAgIGlmIChlcnJvciAhPSAwKSB7Ci0gICAgICAgIHJldHVybiAoZXJyb3Ip
OwotICAgIH0KLSAgICBscFtzel0gPSAwOwotCi0gICAgcCA9IGZwICsgbW91bnRwb2ludF9sZW4g
KyBzdHJsZW4obm9kZSk7Ci0gICAgYyA9IHN0cmxlbihub2RlKSAtIHN0cmxlbihuYW1lKSAtIDE7
Ci0gICAgbm9kZVtjXSA9IDA7Ci0KLSAgICBpZiAobHBbMF0gPT0gJy8nKSB7Ci0gICAgICAgIHN0
cmxjYXQobHAsIHAsIFBBVEhfTUFYKTsKLSAgICAgICAgc3RybGNweShmcCwgbHAsIFBBVEhfTUFY
KTsKLSAgICB9IGVsc2UgewotICAgICAgICBzdHJsY3B5KHQuZ2V0KCksIHAsIFBBVEhfTUFYKTsK
LSAgICAgICAgc3RybGNweShub2RlLCBmcCwgbW91bnRwb2ludF9sZW4gKyBjICsgMSk7Ci0gICAg
ICAgIHBhdGhfY29udihub2RlLCBscCwgZnApOwotICAgICAgICBzdHJsY2F0KGZwLCB0LmdldCgp
LCBQQVRIX01BWCk7Ci0gICAgfQotICAgIG5vZGVbMF0gPSAwOwotICAgIG5hbWVbMF0gPSAwOwot
ICAgIHJldHVybiAoMCk7CisJc3RkOjp1bmlxdWVfcHRyPGNoYXIgW10+IGxpbmsgKG5ldyBjaGFy
W1BBVEhfTUFYXSk7CisJc3RkOjp1bmlxdWVfcHRyPGNoYXIgW10+IHQgKG5ldyBjaGFyW1BBVEhf
TUFYXSk7CisJY2hhciAgICAqbHA7CisJaW50ICAgICBlcnJvcjsKKwlzc2l6ZV90IHN6OworCWNo
YXIgICAgKnA7CisJaW50ICAgICBjOworCisJbHAgICAgPSBsaW5rLmdldCgpOworCWVycm9yID0g
cmVhZF9saW5rKGRwLT5kX3Zub2RlLCBscCwgUEFUSF9NQVgsICZzeik7CisJaWYgKGVycm9yICE9
IDApIHsKKwkJcmV0dXJuIChlcnJvcik7CisJfQorCWxwW3N6XSA9IDA7CisKKwlwID0gZnAgKyBt
b3VudHBvaW50X2xlbiArIHN0cmxlbihub2RlKTsKKwljID0gc3RybGVuKG5vZGUpIC0gc3RybGVu
KG5hbWUpIC0gMTsKKwlub2RlW2NdID0gMDsKKworCWlmIChscFswXSA9PSAnLycpIHsKKwkJc3Ry
bGNhdChscCwgcCwgUEFUSF9NQVgpOworCQlzdHJsY3B5KGZwLCBscCwgUEFUSF9NQVgpOworCX0g
ZWxzZSB7CisJCXN0cmxjcHkodC5nZXQoKSwgcCwgUEFUSF9NQVgpOworCQlzdHJsY3B5KG5vZGUs
IGZwLCBtb3VudHBvaW50X2xlbiArIGMgKyAxKTsKKwkJcGF0aF9jb252KG5vZGUsIGxwLCBmcCk7
CisJCXN0cmxjYXQoZnAsIHQuZ2V0KCksIFBBVEhfTUFYKTsKKwl9CisJbm9kZVswXSA9IDA7CisJ
bmFtZVswXSA9IDA7CisJcmV0dXJuICgwKTsKIH0KIC8qCiAgKiBDb252ZXJ0IGEgcGF0aG5hbWUg
aW50byBhIHBvaW50ZXIgdG8gYSBkZW50cnkKQEAgLTEwMSwxMzcgKzEwMSwxMzcgQEAgbmFtZWlf
Zm9sbG93X2xpbmsoc3RydWN0IGRlbnRyeSAqZHAsIGNoYXIgKm5vZGUsIGNoYXIgKm5hbWUsIGNo
YXIgKmZwLCBzaXplX3QgbW8KIGludAogbmFtZWkoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IGRl
bnRyeSAqKmRwcCkKIHsKLSAgICBjaGFyICpwOwotICAgIGNoYXIgbm9kZVtQQVRIX01BWF07Ci0g
ICAgY2hhciBuYW1lW1BBVEhfTUFYXTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Y2hhciBbXT4gZnAg
KG5ldyBjaGFyIFtQQVRIX01BWF0pOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxjaGFyIFtdPiB0IChu
ZXcgY2hhciBbUEFUSF9NQVhdKTsKLSAgICBzdHJ1Y3QgbW91bnQgKm1wOwotICAgIHN0cnVjdCBk
ZW50cnkgKmRwLCAqZGRwOwotICAgIHN0cnVjdCB2bm9kZSAqZHZwLCAqdnA7Ci0gICAgaW50IGVy
cm9yLCBpOwotICAgIGludCBsaW5rc19mb2xsb3dlZDsKLSAgICBib29sIG5lZWRfY29udGludWU7
Ci0KLSAgICBEUFJJTlRGKFZGU0RCX1ZOT0RFLCAoIm5hbWVpOiBwYXRoPSVzXG4iLCBwYXRoKSk7
Ci0KLSAgICBsaW5rc19mb2xsb3dlZCA9IDA7Ci0gICAgc3RybGNweShmcC5nZXQoKSwgcGF0aCwg
UEFUSF9NQVgpOwotCi0gICAgZG8gewotICAgICAgICBuZWVkX2NvbnRpbnVlID0gZmFsc2U7Ci0g
ICAgICAgIC8qCi0gICAgICAgICAqIENvbnZlcnQgYSBmdWxsIHBhdGggbmFtZSB0byBpdHMgbW91
bnQgcG9pbnQgYW5kCi0gICAgICAgICAqIHRoZSBsb2NhbCBub2RlIGluIHRoZSBmaWxlIHN5c3Rl
bS4KLSAgICAgICAgICovCi0gICAgICAgIGlmICh2ZnNfZmluZHJvb3QoZnAuZ2V0KCksICZtcCwg
JnApKSB7Ci0gICAgICAgICAgICByZXR1cm4gRU5PVERJUjsKLSAgICAgICAgfQotICAgICAgICBp
bnQgbW91bnRwb2ludF9sZW4gPSBwIC0gZnAuZ2V0KCkgLSAxOwotICAgICAgICBzdHJsY3B5KG5v
ZGUsICIvIiwgc2l6ZW9mKG5vZGUpKTsKLSAgICAgICAgc3RybGNhdChub2RlLCBwLCBzaXplb2Yo
bm9kZSkpOwotICAgICAgICBkcCA9IGRlbnRyeV9sb29rdXAobXAsIG5vZGUpOwotICAgICAgICBp
ZiAoZHApIHsKLSAgICAgICAgICAgIC8qIHZub2RlIGlzIGFscmVhZHkgYWN0aXZlLiAqLwotICAg
ICAgICAgICAgKmRwcCA9IGRwOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAg
ICAgICAgLyoKLSAgICAgICAgICogRmluZCB0YXJnZXQgdm5vZGUsIHN0YXJ0ZWQgZnJvbSByb290
IGRpcmVjdG9yeS4KLSAgICAgICAgICogVGhpcyBpcyBkb25lIHRvIGF0dGFjaCB0aGUgZnMgc3Bl
Y2lmaWMgZGF0YSB0bwotICAgICAgICAgKiB0aGUgdGFyZ2V0IHZub2RlLgotICAgICAgICAgKi8K
LSAgICAgICAgZGRwID0gbXAtPm1fcm9vdDsKLSAgICAgICAgaWYgKCFkZHApIHsKLSAgICAgICAg
ICAgIHN5c19wYW5pYygiVkZTOiBubyByb290Iik7Ci0gICAgICAgIH0KLSAgICAgICAgZHJlZihk
ZHApOwotCi0gICAgICAgIG5vZGVbMF0gPSAnXDAnOwotCi0gICAgICAgIHdoaWxlICgqcCAhPSAn
XDAnKSB7Ci0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogR2V0IGxvd2VyIGRpcmVjdG9y
eS9maWxlIG5hbWUuCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIHdoaWxlICgqcCA9PSAn
LycpIHsKLSAgICAgICAgICAgICAgICBwKys7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IGlmICgqcCA9PSAnXDAnKSB7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBQQVRIX01BWDsgaSsrKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKCpwID09ICdcMCcgfHwgKnAgPT0gJy8nKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBuYW1lW2ldID0g
KnArKzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG5hbWVbaV0gPSAnXDAnOwotCi0gICAg
ICAgICAgICAvKgotICAgICAgICAgICAgICogR2V0IGEgdm5vZGUgZm9yIHRoZSB0YXJnZXQuCi0g
ICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIHN0cmxjYXQobm9kZSwgIi8iLCBzaXplb2Yobm9k
ZSkpOwotICAgICAgICAgICAgc3RybGNhdChub2RlLCBuYW1lLCBzaXplb2Yobm9kZSkpOwotICAg
ICAgICAgICAgZHZwID0gZGRwLT5kX3Zub2RlOwotICAgICAgICAgICAgdm5fbG9jayhkdnApOwot
ICAgICAgICAgICAgZHAgPSBkZW50cnlfbG9va3VwKG1wLCBub2RlKTsKLSAgICAgICAgICAgIGlm
IChkcCA9PSBudWxscHRyKSB7Ci0gICAgICAgICAgICAgICAgLyogRmluZCBhIHZub2RlIGluIHRo
aXMgZGlyZWN0b3J5LiAqLwotICAgICAgICAgICAgICAgIGVycm9yID0gVk9QX0xPT0tVUChkdnAs
IG5hbWUsICZ2cCk7Ci0gICAgICAgICAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHZuX3VubG9jayhkdnApOwotICAgICAgICAgICAgICAgICAgICBkcmVsZShkZHApOwot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAgICAgZHAgPSBkZW50cnlfYWxsb2MoZGRwLCB2cCwgbm9kZSk7Ci0gICAgICAg
ICAgICAgICAgdnB1dCh2cCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoIWRwKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHZuX3VubG9jayhkdnApOwotICAgICAgICAgICAgICAgICAgICBkcmVsZShk
ZHApOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gRU5PTUVNOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZuX3VubG9jayhkdnApOwotICAgICAgICAg
ICAgZHJlbGUoZGRwKTsKLSAgICAgICAgICAgIGRkcCA9IGRwOwotCi0gICAgICAgICAgICBpZiAo
ZHAtPmRfdm5vZGUtPnZfdHlwZSA9PSBWTE5LKSB7Ci0gICAgICAgICAgICAgICAgZXJyb3IgPSBu
YW1laV9mb2xsb3dfbGluayhkcCwgbm9kZSwgbmFtZSwgZnAuZ2V0KCksIG1vdW50cG9pbnRfbGVu
KTsKLSAgICAgICAgICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAgICAgICAgICAgZHJl
bGUoZHApOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGVycm9yKTsKLSAgICAgICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgICAgICBkcmVsZShkcCk7Ci0KLSAgICAgICAgICAgICAgICBw
ICAgICAgID0gZnAuZ2V0KCk7Ci0gICAgICAgICAgICAgICAgZHAgICAgICA9IG51bGxwdHI7Ci0g
ICAgICAgICAgICAgICAgZGRwICAgICA9IG51bGxwdHI7Ci0gICAgICAgICAgICAgICAgdnAgICAg
ICA9IG51bGxwdHI7Ci0gICAgICAgICAgICAgICAgZHZwICAgICA9IG51bGxwdHI7Ci0gICAgICAg
ICAgICAgICAgbmFtZVswXSA9IDA7Ci0gICAgICAgICAgICAgICAgbm9kZVswXSA9IDA7Ci0KLSAg
ICAgICAgICAgICAgICBpZiAoKytsaW5rc19mb2xsb3dlZCA+PSBNQVhTWU1MSU5LUykgewotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gKEVMT09QKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgbmVlZF9jb250aW51ZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICgqcCA9PSAnLycgJiYgZGRwLT5kX3Zu
b2RlLT52X3R5cGUgIT0gVkRJUikgewotICAgICAgICAgICAgICAgIGRyZWxlKGRkcCk7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIEVOT1RESVI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICB9IHdoaWxlIChuZWVkX2NvbnRpbnVlID09IHRydWUpOwotCi0gICAgKmRwcCA9IGRwOwotICAg
IHJldHVybiAwOworCWNoYXIgKnA7CisJY2hhciBub2RlW1BBVEhfTUFYXTsKKwljaGFyIG5hbWVb
UEFUSF9NQVhdOworCXN0ZDo6dW5pcXVlX3B0cjxjaGFyIFtdPiBmcCAobmV3IGNoYXIgW1BBVEhf
TUFYXSk7CisJc3RkOjp1bmlxdWVfcHRyPGNoYXIgW10+IHQgKG5ldyBjaGFyIFtQQVRIX01BWF0p
OworCXN0cnVjdCBtb3VudCAqbXA7CisJc3RydWN0IGRlbnRyeSAqZHAsICpkZHA7CisJc3RydWN0
IHZub2RlICpkdnAsICp2cDsKKwlpbnQgZXJyb3IsIGk7CisJaW50IGxpbmtzX2ZvbGxvd2VkOwor
CWJvb2wgbmVlZF9jb250aW51ZTsKKworCURQUklOVEYoVkZTREJfVk5PREUsICgibmFtZWk6IHBh
dGg9JXNcbiIsIHBhdGgpKTsKKworCWxpbmtzX2ZvbGxvd2VkID0gMDsKKwlzdHJsY3B5KGZwLmdl
dCgpLCBwYXRoLCBQQVRIX01BWCk7CisKKwlkbyB7CisJCW5lZWRfY29udGludWUgPSBmYWxzZTsK
KwkJLyoKKwkJICogQ29udmVydCBhIGZ1bGwgcGF0aCBuYW1lIHRvIGl0cyBtb3VudCBwb2ludCBh
bmQKKwkJICogdGhlIGxvY2FsIG5vZGUgaW4gdGhlIGZpbGUgc3lzdGVtLgorCQkgKi8KKwkJaWYg
KHZmc19maW5kcm9vdChmcC5nZXQoKSwgJm1wLCAmcCkpIHsKKwkJCXJldHVybiBFTk9URElSOwor
CQl9CisJCWludCBtb3VudHBvaW50X2xlbiA9IHAgLSBmcC5nZXQoKSAtIDE7CisJCXN0cmxjcHko
bm9kZSwgIi8iLCBzaXplb2Yobm9kZSkpOworCQlzdHJsY2F0KG5vZGUsIHAsIHNpemVvZihub2Rl
KSk7CisJCWRwID0gZGVudHJ5X2xvb2t1cChtcCwgbm9kZSk7CisJCWlmIChkcCkgeworCQkJLyog
dm5vZGUgaXMgYWxyZWFkeSBhY3RpdmUuICovCisJCQkqZHBwID0gZHA7CisJCQlyZXR1cm4gMDsK
KwkJfQorCQkvKgorCQkgKiBGaW5kIHRhcmdldCB2bm9kZSwgc3RhcnRlZCBmcm9tIHJvb3QgZGly
ZWN0b3J5LgorCQkgKiBUaGlzIGlzIGRvbmUgdG8gYXR0YWNoIHRoZSBmcyBzcGVjaWZpYyBkYXRh
IHRvCisJCSAqIHRoZSB0YXJnZXQgdm5vZGUuCisJCSAqLworCQlkZHAgPSBtcC0+bV9yb290Owor
CQlpZiAoIWRkcCkgeworCQkJc3lzX3BhbmljKCJWRlM6IG5vIHJvb3QiKTsKKwkJfQorCQlkcmVm
KGRkcCk7CisKKwkJbm9kZVswXSA9ICdcMCc7CisKKwkJd2hpbGUgKCpwICE9ICdcMCcpIHsKKwkJ
CS8qCisJCQkgKiBHZXQgbG93ZXIgZGlyZWN0b3J5L2ZpbGUgbmFtZS4KKwkJCSAqLworCQkJd2hp
bGUgKCpwID09ICcvJykgeworCQkJCXArKzsKKwkJCX0KKworCQkJaWYgKCpwID09ICdcMCcpIHsK
KwkJCQlicmVhazsKKwkJCX0KKworCQkJZm9yIChpID0gMDsgaSA8IFBBVEhfTUFYOyBpKyspIHsK
KwkJCQlpZiAoKnAgPT0gJ1wwJyB8fCAqcCA9PSAnLycpIHsKKwkJCQkJYnJlYWs7CisJCQkJfQor
CQkJCW5hbWVbaV0gPSAqcCsrOworCQkJfQorCQkJbmFtZVtpXSA9ICdcMCc7CisKKwkJCS8qCisJ
CQkgKiBHZXQgYSB2bm9kZSBmb3IgdGhlIHRhcmdldC4KKwkJCSAqLworCQkJc3RybGNhdChub2Rl
LCAiLyIsIHNpemVvZihub2RlKSk7CisJCQlzdHJsY2F0KG5vZGUsIG5hbWUsIHNpemVvZihub2Rl
KSk7CisJCQlkdnAgPSBkZHAtPmRfdm5vZGU7CisJCQl2bl9sb2NrKGR2cCk7CisJCQlkcCA9IGRl
bnRyeV9sb29rdXAobXAsIG5vZGUpOworCQkJaWYgKGRwID09IG51bGxwdHIpIHsKKwkJCQkvKiBG
aW5kIGEgdm5vZGUgaW4gdGhpcyBkaXJlY3RvcnkuICovCisJCQkJZXJyb3IgPSBWT1BfTE9PS1VQ
KGR2cCwgbmFtZSwgJnZwKTsKKwkJCQlpZiAoZXJyb3IpIHsKKwkJCQkJdm5fdW5sb2NrKGR2cCk7
CisJCQkJCWRyZWxlKGRkcCk7CisJCQkJCXJldHVybiBlcnJvcjsKKwkJCQl9CisKKwkJCQlkcCA9
IGRlbnRyeV9hbGxvYyhkZHAsIHZwLCBub2RlKTsKKwkJCQl2cHV0KHZwKTsKKworCQkJCWlmICgh
ZHApIHsKKwkJCQkJdm5fdW5sb2NrKGR2cCk7CisJCQkJCWRyZWxlKGRkcCk7CisJCQkJCXJldHVy
biBFTk9NRU07CisJCQkJfQorCQkJfQorCQkJdm5fdW5sb2NrKGR2cCk7CisJCQlkcmVsZShkZHAp
OworCQkJZGRwID0gZHA7CisKKwkJCWlmIChkcC0+ZF92bm9kZS0+dl90eXBlID09IFZMTkspIHsK
KwkJCQllcnJvciA9IG5hbWVpX2ZvbGxvd19saW5rKGRwLCBub2RlLCBuYW1lLCBmcC5nZXQoKSwg
bW91bnRwb2ludF9sZW4pOworCQkJCWlmIChlcnJvcikgeworCQkJCQlkcmVsZShkcCk7CisJCQkJ
CXJldHVybiAoZXJyb3IpOworCQkJCX0KKworCQkJCWRyZWxlKGRwKTsKKworCQkJCXAgICAgICAg
PSBmcC5nZXQoKTsKKwkJCQlkcCAgICAgID0gbnVsbHB0cjsKKwkJCQlkZHAgICAgID0gbnVsbHB0
cjsKKwkJCQl2cCAgICAgID0gbnVsbHB0cjsKKwkJCQlkdnAgICAgID0gbnVsbHB0cjsKKwkJCQlu
YW1lWzBdID0gMDsKKwkJCQlub2RlWzBdID0gMDsKKworCQkJCWlmICgrK2xpbmtzX2ZvbGxvd2Vk
ID49IE1BWFNZTUxJTktTKSB7CisJCQkJCXJldHVybiAoRUxPT1ApOworCQkJCX0KKwkJCQluZWVk
X2NvbnRpbnVlID0gdHJ1ZTsKKwkJCQlicmVhazsKKwkJCX0KKworCQkJaWYgKCpwID09ICcvJyAm
JiBkZHAtPmRfdm5vZGUtPnZfdHlwZSAhPSBWRElSKSB7CisJCQkJZHJlbGUoZGRwKTsKKwkJCQly
ZXR1cm4gRU5PVERJUjsKKwkJCX0KKwkJfQorCX0gd2hpbGUgKG5lZWRfY29udGludWUgPT0gdHJ1
ZSk7CisKKwkqZHBwID0gZHA7CisJcmV0dXJuIDA7CiB9CiAKIC8qCkBAIC0yNDQsNjcgKzI0NCw2
NyBAQCBuYW1laShjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3QgZGVudHJ5ICoqZHBwKQogaW50CiBu
YW1laV9sYXN0X25vZm9sbG93KGNoYXIgKnBhdGgsIHN0cnVjdCBkZW50cnkgKmRkcCwgc3RydWN0
IGRlbnRyeSAqKmRwcCkKIHsKLSAgICBjaGFyICAgICAgICAgICpuYW1lOwotICAgIGludCAgICAg
ICAgICAgZXJyb3I7Ci0gICAgc3RydWN0IG1vdW50ICAqbXA7Ci0gICAgY2hhciAgICAgICAgICAq
cDsKLSAgICBzdHJ1Y3QgZGVudHJ5ICpkcDsKLSAgICBzdHJ1Y3Qgdm5vZGUgICpkdnA7Ci0gICAg
c3RydWN0IHZub2RlICAqdnA7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPGNoYXIgW10+IG5vZGUgKG5l
dyBjaGFyW1BBVEhfTUFYXSk7Ci0KLSAgICBkdnAgID0gbnVsbHB0cjsKLQotICAgIGlmIChwYXRo
WzBdICE9ICcvJykgewotICAgICAgICByZXR1cm4gKEVOT1RESVIpOwotICAgIH0KLQotICAgIG5h
bWUgPSBzdHJyY2hyKHBhdGgsICcvJyk7Ci0gICAgaWYgKG5hbWUgPT0gbnVsbHB0cikgewotICAg
ICAgICByZXR1cm4gKEVOT0VOVCk7Ci0gICAgfQotICAgIG5hbWUrKzsKLQotICAgIGVycm9yID0g
dmZzX2ZpbmRyb290KHBhdGgsICZtcCwgJnApOwotICAgIGlmIChlcnJvciAhPSAwKSB7Ci0gICAg
ICAgIHJldHVybiAoRU5PVERJUik7Ci0gICAgfQotCi0gICAgc3RybGNweShub2RlLmdldCgpLCAi
LyIsIFBBVEhfTUFYKTsKLSAgICBzdHJsY2F0KG5vZGUuZ2V0KCksIHAsIFBBVEhfTUFYKTsKLQot
ICAgIC8vIFdlIHdhbnQgdG8gdHJlYXQgdGhpbmdzIGxpa2UgL3RtcC8gdGhlIHNhbWUgYXMgL3Rt
cC4gQmVzdCB3YXkgdG8gZG8gdGhhdAotICAgIC8vIGlzIHRvIGlnbm9yZSB0aGUgbGFzdCBjaGFy
YWN0ZXIsIGV4Y2VwdCB3aGVuIHdlJ3JlIHN0YXRpbmcgdGhlIHJvb3QuCi0gICAgYXV0byBsID0g
c3RybGVuKG5vZGUuZ2V0KCkpIC0gMTsKLSAgICBpZiAobCAmJiBub2RlLmdldCgpW2xdID09ICcv
JykgewotICAgICAgICBub2RlLmdldCgpW2xdID0gJ1wwJzsKLSAgICB9Ci0KLSAgICBkdnAgPSBk
ZHAtPmRfdm5vZGU7Ci0gICAgdm5fbG9jayhkdnApOwotICAgIGRwID0gZGVudHJ5X2xvb2t1cCht
cCwgbm9kZS5nZXQoKSk7Ci0gICAgaWYgKGRwID09IG51bGxwdHIpIHsKLSAgICAgICAgZXJyb3Ig
PSBWT1BfTE9PS1VQKGR2cCwgbmFtZSwgJnZwKTsKLSAgICAgICAgaWYgKGVycm9yICE9IDApIHsK
LSAgICAgICAgICAgIGdvdG8gb3V0OwotICAgICAgICB9Ci0KLSAgICAgICAgZHAgPSBkZW50cnlf
YWxsb2MoZGRwLCB2cCwgbm9kZS5nZXQoKSk7Ci0gICAgICAgIHZwdXQodnApOwotCi0gICAgICAg
IGlmIChkcCA9PSBudWxscHRyKSB7Ci0gICAgICAgICAgICBlcnJvciA9IEVOT01FTTsKLSAgICAg
ICAgICAgIGdvdG8gb3V0OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgKmRwcCAgPSBkcDsKLSAg
ICBlcnJvciA9IDA7CisJY2hhciAgICAgICAgICAqbmFtZTsKKwlpbnQgICAgICAgICAgIGVycm9y
OworCXN0cnVjdCBtb3VudCAgKm1wOworCWNoYXIgICAgICAgICAgKnA7CisJc3RydWN0IGRlbnRy
eSAqZHA7CisJc3RydWN0IHZub2RlICAqZHZwOworCXN0cnVjdCB2bm9kZSAgKnZwOworCXN0ZDo6
dW5pcXVlX3B0cjxjaGFyIFtdPiBub2RlIChuZXcgY2hhcltQQVRIX01BWF0pOworCisJZHZwICA9
IG51bGxwdHI7CisKKwlpZiAocGF0aFswXSAhPSAnLycpIHsKKwkJcmV0dXJuIChFTk9URElSKTsK
Kwl9CisKKwluYW1lID0gc3RycmNocihwYXRoLCAnLycpOworCWlmIChuYW1lID09IG51bGxwdHIp
IHsKKwkJcmV0dXJuIChFTk9FTlQpOworCX0KKwluYW1lKys7CisKKwllcnJvciA9IHZmc19maW5k
cm9vdChwYXRoLCAmbXAsICZwKTsKKwlpZiAoZXJyb3IgIT0gMCkgeworCQlyZXR1cm4gKEVOT1RE
SVIpOworCX0KKworCXN0cmxjcHkobm9kZS5nZXQoKSwgIi8iLCBQQVRIX01BWCk7CisJc3RybGNh
dChub2RlLmdldCgpLCBwLCBQQVRIX01BWCk7CisKKwkvLyBXZSB3YW50IHRvIHRyZWF0IHRoaW5n
cyBsaWtlIC90bXAvIHRoZSBzYW1lIGFzIC90bXAuIEJlc3Qgd2F5IHRvIGRvIHRoYXQKKwkvLyBp
cyB0byBpZ25vcmUgdGhlIGxhc3QgY2hhcmFjdGVyLCBleGNlcHQgd2hlbiB3ZSdyZSBzdGF0aW5n
IHRoZSByb290LgorCWF1dG8gbCA9IHN0cmxlbihub2RlLmdldCgpKSAtIDE7CisJaWYgKGwgJiYg
bm9kZS5nZXQoKVtsXSA9PSAnLycpIHsKKwkJbm9kZS5nZXQoKVtsXSA9ICdcMCc7CisJfQorCisJ
ZHZwID0gZGRwLT5kX3Zub2RlOworCXZuX2xvY2soZHZwKTsKKwlkcCA9IGRlbnRyeV9sb29rdXAo
bXAsIG5vZGUuZ2V0KCkpOworCWlmIChkcCA9PSBudWxscHRyKSB7CisJCWVycm9yID0gVk9QX0xP
T0tVUChkdnAsIG5hbWUsICZ2cCk7CisJCWlmIChlcnJvciAhPSAwKSB7CisJCQlnb3RvIG91dDsK
KwkJfQorCisJCWRwID0gZGVudHJ5X2FsbG9jKGRkcCwgdnAsIG5vZGUuZ2V0KCkpOworCQl2cHV0
KHZwKTsKKworCQlpZiAoZHAgPT0gbnVsbHB0cikgeworCQkJZXJyb3IgPSBFTk9NRU07CisJCQln
b3RvIG91dDsKKwkJfQorCX0KKworCSpkcHAgID0gZHA7CisJZXJyb3IgPSAwOwogb3V0OgotICAg
IGlmIChkdnAgIT0gbnVsbHB0cikgewotICAgICAgICB2bl91bmxvY2soZHZwKTsKLSAgICB9Ci0g
ICAgcmV0dXJuIChlcnJvcik7CisJaWYgKGR2cCAhPSBudWxscHRyKSB7CisJCXZuX3VubG9jayhk
dnApOworCX0KKwlyZXR1cm4gKGVycm9yKTsKIH0KIAogLyoKQEAgLTMyMCw0OCArMzIwLDQ4IEBA
IG91dDoKIGludAogbG9va3VwKGNoYXIgKnBhdGgsIHN0cnVjdCBkZW50cnkgKipkcHAsIGNoYXIg
KipuYW1lKQogewotICAgIGNoYXIgYnVmW1BBVEhfTUFYXTsKLSAgICBjaGFyIHJvb3RbXSA9ICIv
IjsKLSAgICBjaGFyICpmaWxlLCAqZGlyOwotICAgIHN0cnVjdCBkZW50cnkgKmRwOwotICAgIGlu
dCBlcnJvcjsKLQotICAgIERQUklOVEYoVkZTREJfVk5PREUsICgibG9va3VwOiBwYXRoPSVzXG4i
LCBwYXRoKSk7Ci0KLSAgICAvKgotICAgICAqIEdldCB0aGUgcGF0aCBmb3IgZGlyZWN0b3J5Lgot
ICAgICAqLwotICAgIHN0cmxjcHkoYnVmLCBwYXRoLCBzaXplb2YoYnVmKSk7Ci0gICAgZmlsZSA9
IHN0cnJjaHIoYnVmLCAnLycpOwotICAgIGlmICghYnVmWzBdKSB7Ci0gICAgICAgIHJldHVybiBF
Tk9URElSOwotICAgIH0KLSAgICBpZiAoZmlsZSA9PSBidWYpIHsKLSAgICAgICAgZGlyID0gcm9v
dDsKLSAgICB9IGVsc2UgewotICAgICAgICAqZmlsZSA9ICdcMCc7Ci0gICAgICAgIGRpciA9IGJ1
ZjsKLSAgICB9Ci0gICAgLyoKLSAgICAgKiBHZXQgdGhlIHZub2RlIGZvciBkaXJlY3RvcnkKLSAg
ICAgKi8KLSAgICBpZiAoKGVycm9yID0gbmFtZWkoZGlyLCAmZHApKSAhPSAwKSB7Ci0gICAgICAg
IHJldHVybiBlcnJvcjsKLSAgICB9Ci0gICAgaWYgKGRwLT5kX3Zub2RlLT52X3R5cGUgIT0gVkRJ
UikgewotICAgICAgICBkcmVsZShkcCk7Ci0gICAgICAgIHJldHVybiBFTk9URElSOwotICAgIH0K
LQotICAgICpkcHAgPSBkcDsKLQotICAgIGlmIChuYW1lKSB7Ci0gICAgICAgIC8qCi0gICAgICAg
ICAqIEdldCB0aGUgZmlsZSBuYW1lCi0gICAgICAgICAqLwotICAgICAgICAqbmFtZSA9IHN0cnJj
aHIocGF0aCwgJy8nKSArIDE7Ci0gICAgfQotICAgIHJldHVybiAwOworCWNoYXIgYnVmW1BBVEhf
TUFYXTsKKwljaGFyIHJvb3RbXSA9ICIvIjsKKwljaGFyICpmaWxlLCAqZGlyOworCXN0cnVjdCBk
ZW50cnkgKmRwOworCWludCBlcnJvcjsKKworCURQUklOVEYoVkZTREJfVk5PREUsICgibG9va3Vw
OiBwYXRoPSVzXG4iLCBwYXRoKSk7CisKKwkvKgorCSAqIEdldCB0aGUgcGF0aCBmb3IgZGlyZWN0
b3J5LgorCSAqLworCXN0cmxjcHkoYnVmLCBwYXRoLCBzaXplb2YoYnVmKSk7CisJZmlsZSA9IHN0
cnJjaHIoYnVmLCAnLycpOworCWlmICghYnVmWzBdKSB7CisJCXJldHVybiBFTk9URElSOworCX0K
KwlpZiAoZmlsZSA9PSBidWYpIHsKKwkJZGlyID0gcm9vdDsKKwl9IGVsc2UgeworCQkqZmlsZSA9
ICdcMCc7CisJCWRpciA9IGJ1ZjsKKwl9CisJLyoKKwkgKiBHZXQgdGhlIHZub2RlIGZvciBkaXJl
Y3RvcnkKKwkgKi8KKwlpZiAoKGVycm9yID0gbmFtZWkoZGlyLCAmZHApKSAhPSAwKSB7CisJCXJl
dHVybiBlcnJvcjsKKwl9CisJaWYgKGRwLT5kX3Zub2RlLT52X3R5cGUgIT0gVkRJUikgeworCQlk
cmVsZShkcCk7CisJCXJldHVybiBFTk9URElSOworCX0KKworCSpkcHAgPSBkcDsKKworCWlmIChu
YW1lKSB7CisJCS8qCisJCSAqIEdldCB0aGUgZmlsZSBuYW1lCisJCSAqLworCQkqbmFtZSA9IHN0
cnJjaHIocGF0aCwgJy8nKSArIDE7CisJfQorCXJldHVybiAwOwogfQogCiAvKgpAQCAtMzcxLDUg
KzM3MSw1IEBAIGxvb2t1cChjaGFyICpwYXRoLCBzdHJ1Y3QgZGVudHJ5ICoqZHBwLCBjaGFyICoq
bmFtZSkKIHZvaWQKIGxvb2t1cF9pbml0KHZvaWQpCiB7Ci0gICAgZGVudHJ5X2luaXQoKTsKKwlk
ZW50cnlfaW5pdCgpOwogfQpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvbWFpbi5jIGIvbGliL3Zm
c2NvcmUvbWFpbi5jCmluZGV4IGNkMTQxMTE3Li44ZDlkYzMzYSAxMDA2NDQKLS0tIGEvbGliL3Zm
c2NvcmUvbWFpbi5jCisrKyBiL2xpYi92ZnNjb3JlL21haW4uYwpAQCAtOTIsNyArOTIsNyBAQCBz
dGQ6OmF0b21pYzxtb2RlX3Q+IGdsb2JhbF91bWFza3tTX0lXR1JQIHwgU19JV09USH07CiAKIHN0
YXRpYyBpbmxpbmUgbW9kZV90IGFwcGx5X3VtYXNrKG1vZGVfdCBtb2RlKQogewotICAgIHJldHVy
biBtb2RlICYgfmdsb2JhbF91bWFzay5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOwor
CXJldHVybiBtb2RlICYgfmdsb2JhbF91bWFzay5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4
ZWQpOwogfQogCiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19vcGVuLCAiXCIlc1wiIDB4JXggMCUwbyIs
IGNvbnN0IGNoYXIqLCBpbnQsIG1vZGVfdCk7CkBAIC0xMDQsOTkgKzEwNCw5OSBAQCBzdHJ1Y3Qg
dGFzayAqbWFpbl90YXNrOwkvKiB3ZSBvbmx5IGhhdmUgYSBzaW5nbGUgcHJvY2VzcyAqLwogZXh0
ZXJuICJDIgogaW50IG9wZW4oY29uc3QgY2hhciAqcGF0aG5hbWUsIGludCBmbGFncywgLi4uKQog
ewotICAgIG1vZGVfdCBtb2RlID0gMDsKLSAgICBpZiAoZmxhZ3MgJiBPX0NSRUFUKSB7Ci0gICAg
ICAgIHZhX2xpc3QgYXA7Ci0gICAgICAgIHZhX3N0YXJ0KGFwLCBmbGFncyk7Ci0gICAgICAgIG1v
ZGUgPSBhcHBseV91bWFzayh2YV9hcmcoYXAsIG1vZGVfdCkpOwotICAgICAgICB2YV9lbmQoYXAp
OwotICAgIH0KLQotICAgIHRyYWNlX3Zmc19vcGVuKHBhdGhuYW1lLCBmbGFncywgbW9kZSk7Ci0K
LSAgICBzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKLSAgICBjaGFyIHBhdGhbUEFUSF9NQVhd
OwotICAgIHN0cnVjdCBmaWxlICpmcDsKLSAgICBpbnQgZmQsIGVycm9yOwotICAgIGludCBhY2M7
Ci0KLSAgICBhY2MgPSAwOwotICAgIHN3aXRjaCAoZmxhZ3MgJiBPX0FDQ01PREUpIHsKLSAgICBj
YXNlIE9fUkRPTkxZOgotICAgICAgICBhY2MgPSBWUkVBRDsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBPX1dST05MWToKLSAgICAgICAgYWNjID0gVldSSVRFOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIE9fUkRXUjoKLSAgICAgICAgYWNjID0gVlJFQUQgfCBWV1JJVEU7Ci0gICAgICAgIGJy
ZWFrOwotICAgIH0KLQotICAgIGVycm9yID0gdGFza19jb252KHQsIHBhdGhuYW1lLCBhY2MsIHBh
dGgpOwotICAgIGlmIChlcnJvcikKLSAgICAgICAgZ290byBvdXRfZXJybm87Ci0KLSAgICBlcnJv
ciA9IHN5c19vcGVuKHBhdGgsIGZsYWdzLCBtb2RlLCAmZnApOwotICAgIGlmIChlcnJvcikKLSAg
ICAgICAgZ290byBvdXRfZXJybm87Ci0KLSAgICBlcnJvciA9IGZkYWxsb2MoZnAsICZmZCk7Ci0g
ICAgaWYgKGVycm9yKQotICAgICAgICBnb3RvIG91dF9mcHV0OwotICAgIGZkcm9wKGZwKTsKLSAg
ICB0cmFjZV92ZnNfb3Blbl9yZXQoZmQpOwotICAgIHJldHVybiBmZDsKLQotICAgIG91dF9mcHV0
OgotICAgIGZkcm9wKGZwKTsKLSAgICBvdXRfZXJybm86Ci0gICAgZXJybm8gPSBlcnJvcjsKLSAg
ICB0cmFjZV92ZnNfb3Blbl9lcnIoZXJyb3IpOwotICAgIHJldHVybiAtMTsKKwltb2RlX3QgbW9k
ZSA9IDA7CisJaWYgKGZsYWdzICYgT19DUkVBVCkgeworCQl2YV9saXN0IGFwOworCQl2YV9zdGFy
dChhcCwgZmxhZ3MpOworCQltb2RlID0gYXBwbHlfdW1hc2sodmFfYXJnKGFwLCBtb2RlX3QpKTsK
KwkJdmFfZW5kKGFwKTsKKwl9CisKKwl0cmFjZV92ZnNfb3BlbihwYXRobmFtZSwgZmxhZ3MsIG1v
ZGUpOworCisJc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7CisJY2hhciBwYXRoW1BBVEhfTUFY
XTsKKwlzdHJ1Y3QgZmlsZSAqZnA7CisJaW50IGZkLCBlcnJvcjsKKwlpbnQgYWNjOworCisJYWNj
ID0gMDsKKwlzd2l0Y2ggKGZsYWdzICYgT19BQ0NNT0RFKSB7CisJY2FzZSBPX1JET05MWToKKwkJ
YWNjID0gVlJFQUQ7CisJCWJyZWFrOworCWNhc2UgT19XUk9OTFk6CisJCWFjYyA9IFZXUklURTsK
KwkJYnJlYWs7CisJY2FzZSBPX1JEV1I6CisJCWFjYyA9IFZSRUFEIHwgVldSSVRFOworCQlicmVh
azsKKwl9CisKKwllcnJvciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwgYWNjLCBwYXRoKTsKKwlp
ZiAoZXJyb3IpCisJCWdvdG8gb3V0X2Vycm5vOworCisJZXJyb3IgPSBzeXNfb3BlbihwYXRoLCBm
bGFncywgbW9kZSwgJmZwKTsKKwlpZiAoZXJyb3IpCisJCWdvdG8gb3V0X2Vycm5vOworCisJZXJy
b3IgPSBmZGFsbG9jKGZwLCAmZmQpOworCWlmIChlcnJvcikKKwkJZ290byBvdXRfZnB1dDsKKwlm
ZHJvcChmcCk7CisJdHJhY2VfdmZzX29wZW5fcmV0KGZkKTsKKwlyZXR1cm4gZmQ7CisKKwlvdXRf
ZnB1dDoKKwlmZHJvcChmcCk7CisJb3V0X2Vycm5vOgorCWVycm5vID0gZXJyb3I7CisJdHJhY2Vf
dmZzX29wZW5fZXJyKGVycm9yKTsKKwlyZXR1cm4gLTE7CiB9CiAKIExGUzY0KG9wZW4pOwogCiBp
bnQgb3BlbmF0KGludCBkaXJmZCwgY29uc3QgY2hhciAqcGF0aG5hbWUsIGludCBmbGFncywgLi4u
KQogewotICAgIG1vZGVfdCBtb2RlID0gMDsKLSAgICBpZiAoZmxhZ3MgJiBPX0NSRUFUKSB7Ci0g
ICAgICAgIHZhX2xpc3QgYXA7Ci0gICAgICAgIHZhX3N0YXJ0KGFwLCBmbGFncyk7Ci0gICAgICAg
IG1vZGUgPSBhcHBseV91bWFzayh2YV9hcmcoYXAsIG1vZGVfdCkpOwotICAgICAgICB2YV9lbmQo
YXApOwotICAgIH0KKwltb2RlX3QgbW9kZSA9IDA7CisJaWYgKGZsYWdzICYgT19DUkVBVCkgewor
CQl2YV9saXN0IGFwOworCQl2YV9zdGFydChhcCwgZmxhZ3MpOworCQltb2RlID0gYXBwbHlfdW1h
c2sodmFfYXJnKGFwLCBtb2RlX3QpKTsKKwkJdmFfZW5kKGFwKTsKKwl9CiAKLSAgICBpZiAocGF0
aG5hbWVbMF0gPT0gJy8nIHx8IGRpcmZkID09IEFUX0ZEQ1dEKSB7Ci0gICAgICAgIHJldHVybiBv
cGVuKHBhdGhuYW1lLCBmbGFncywgbW9kZSk7Ci0gICAgfQorCWlmIChwYXRobmFtZVswXSA9PSAn
LycgfHwgZGlyZmQgPT0gQVRfRkRDV0QpIHsKKwkJcmV0dXJuIG9wZW4ocGF0aG5hbWUsIGZsYWdz
LCBtb2RlKTsKKwl9CiAKLSAgICBzdHJ1Y3QgZmlsZSAqZnA7Ci0gICAgaW50IGVycm9yID0gZmdl
dChkaXJmZCwgJmZwKTsKLSAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgZXJybm8gPSBlcnJvcjsK
LSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KKwlzdHJ1Y3QgZmlsZSAqZnA7CisJaW50IGVycm9y
ID0gZmdldChkaXJmZCwgJmZwKTsKKwlpZiAoZXJyb3IpIHsKKwkJZXJybm8gPSBlcnJvcjsKKwkJ
cmV0dXJuIC0xOworCX0KIAotICAgIHN0cnVjdCB2bm9kZSAqdnAgPSBmcC0+Zl9kZW50cnktPmRf
dm5vZGU7Ci0gICAgdm5fbG9jayh2cCk7CisJc3RydWN0IHZub2RlICp2cCA9IGZwLT5mX2RlbnRy
eS0+ZF92bm9kZTsKKwl2bl9sb2NrKHZwKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxjaGFyIFtd
PiB1cCAobmV3IGNoYXJbUEFUSF9NQVhdKTsKLSAgICBjaGFyICpwID0gdXAuZ2V0KCk7CisJc3Rk
Ojp1bmlxdWVfcHRyPGNoYXIgW10+IHVwIChuZXcgY2hhcltQQVRIX01BWF0pOworCWNoYXIgKnAg
PSB1cC5nZXQoKTsKIAotICAgIC8qIGJ1aWxkIGFic29sdXRlIHBhdGggKi8KLSAgICBzdHJsY3B5
KHAsIGZwLT5mX2RlbnRyeS0+ZF9tb3VudC0+bV9wYXRoLCBQQVRIX01BWCk7Ci0gICAgc3RybGNh
dChwLCBmcC0+Zl9kZW50cnktPmRfcGF0aCwgUEFUSF9NQVgpOwotICAgIHN0cmxjYXQocCwgIi8i
LCBQQVRIX01BWCk7Ci0gICAgc3RybGNhdChwLCBwYXRobmFtZSwgUEFUSF9NQVgpOworCS8qIGJ1
aWxkIGFic29sdXRlIHBhdGggKi8KKwlzdHJsY3B5KHAsIGZwLT5mX2RlbnRyeS0+ZF9tb3VudC0+
bV9wYXRoLCBQQVRIX01BWCk7CisJc3RybGNhdChwLCBmcC0+Zl9kZW50cnktPmRfcGF0aCwgUEFU
SF9NQVgpOworCXN0cmxjYXQocCwgIi8iLCBQQVRIX01BWCk7CisJc3RybGNhdChwLCBwYXRobmFt
ZSwgUEFUSF9NQVgpOwogCi0gICAgZXJyb3IgPSBvcGVuKHAsIGZsYWdzLCBtb2RlKTsKKwllcnJv
ciA9IG9wZW4ocCwgZmxhZ3MsIG1vZGUpOwogCi0gICAgdm5fdW5sb2NrKHZwKTsKLSAgICBmZHJv
cChmcCk7CisJdm5fdW5sb2NrKHZwKTsKKwlmZHJvcChmcCk7CiAKLSAgICByZXR1cm4gZXJyb3I7
CisJcmV0dXJuIGVycm9yOwogfQogTEZTNjQob3BlbmF0KTsKIApAQCAtMjA2LDIzICsyMDYsMjMg
QEAgTEZTNjQob3BlbmF0KTsKIC8vIGJ5IGEgY2FsbCB0byBfX29wZW5fMigpLCB3aGljaCB2ZXJp
ZmllcyBpdCBpc24ndCBjYWxsZWQgd2l0aCBPX0NSRUFURS4KIGV4dGVybiAiQyIgaW50IF9fb3Bl
bl8yKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBpbnQgZmxhZ3MpCiB7Ci0gICAgYXNzZXJ0KCEoZmxh
Z3MgJiBPX0NSRUFUKSk7Ci0gICAgcmV0dXJuIG9wZW4ocGF0aG5hbWUsIGZsYWdzLCAwKTsKKwlh
c3NlcnQoIShmbGFncyAmIE9fQ1JFQVQpKTsKKwlyZXR1cm4gb3BlbihwYXRobmFtZSwgZmxhZ3Ms
IDApOwogfQogCiBleHRlcm4gIkMiIGludCBfX29wZW42NF8yKGNvbnN0IGNoYXIgKmZpbGUsIGlu
dCBmbGFncykKIHsKLSAgICBpZiAoZmxhZ3MgJiBPX0NSRUFUKSB7Ci0gICAgICAgIGVycm5vID0g
RUlOVkFMOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQorCWlmIChmbGFncyAmIE9fQ1JFQVQp
IHsKKwkJZXJybm8gPSBFSU5WQUw7CisJCXJldHVybiAtMTsKKwl9CiAKLSAgICByZXR1cm4gb3Bl
bjY0KGZpbGUsIGZsYWdzKTsKKwlyZXR1cm4gb3BlbjY0KGZpbGUsIGZsYWdzKTsKIH0KIAogaW50
IGNyZWF0KGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBtb2RlX3QgbW9kZSkKIHsKLSAgICByZXR1cm4g
b3BlbihwYXRobmFtZSwgT19DUkVBVHxPX1dST05MWXxPX1RSVU5DLCBtb2RlKTsKKwlyZXR1cm4g
b3BlbihwYXRobmFtZSwgT19DUkVBVHxPX1dST05MWXxPX1RSVU5DLCBtb2RlKTsKIH0KIExGUzY0
KGNyZWF0KTsKIApAQCAtMjMyLDIwICsyMzIsMjAgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfY2xv
c2VfZXJyLCAiJWQiLCBpbnQpOwogCiBpbnQgY2xvc2UoaW50IGZkKQogewotICAgIGludCBlcnJv
cjsKKwlpbnQgZXJyb3I7CiAKLSAgICB0cmFjZV92ZnNfY2xvc2UoZmQpOwotICAgIGVycm9yID0g
ZmRjbG9zZShmZCk7Ci0gICAgaWYgKGVycm9yKQotICAgICAgICBnb3RvIG91dF9lcnJubzsKKwl0
cmFjZV92ZnNfY2xvc2UoZmQpOworCWVycm9yID0gZmRjbG9zZShmZCk7CisJaWYgKGVycm9yKQor
CQlnb3RvIG91dF9lcnJubzsKIAotICAgIHRyYWNlX3Zmc19jbG9zZV9yZXQoKTsKLSAgICByZXR1
cm4gMDsKKwl0cmFjZV92ZnNfY2xvc2VfcmV0KCk7CisJcmV0dXJuIDA7CiAKLSAgICBvdXRfZXJy
bm86Ci0gICAgdHJhY2VfdmZzX2Nsb3NlX2VycihlcnJvcik7Ci0gICAgZXJybm8gPSBlcnJvcjsK
LSAgICByZXR1cm4gLTE7CisJb3V0X2Vycm5vOgorCXRyYWNlX3Zmc19jbG9zZV9lcnIoZXJyb3Ip
OworCWVycm5vID0gZXJyb3I7CisJcmV0dXJuIC0xOwogfQogCiBUUkFDRVBPSU5UKHRyYWNlX3Zm
c19ta25vZCwgIlwiJXNcIiAwJTBvIDB4JXgiLCBjb25zdCBjaGFyKiwgbW9kZV90LCBkZXZfdCk7
CkBAIC0yNTYsMzEgKzI1NiwzMSBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19ta25vZF9lcnIsICIl
ZCIsIGludCk7CiBleHRlcm4gIkMiCiBpbnQgX194bWtub2QoaW50IHZlciwgY29uc3QgY2hhciAq
cGF0aG5hbWUsIG1vZGVfdCBtb2RlLCBkZXZfdCAqZGV2KQogewotICAgIGFzc2VydCh2ZXIgPT0g
MCk7IC8vIE9uIHg4Ni02NCBMaW51eCwgX01LTk9EX1ZFUl9MSU5VWCBpcyAwLgotICAgIHN0cnVj
dCB0YXNrICp0ID0gbWFpbl90YXNrOwotICAgIGNoYXIgcGF0aFtQQVRIX01BWF07Ci0gICAgaW50
IGVycm9yOworCWFzc2VydCh2ZXIgPT0gMCk7IC8vIE9uIHg4Ni02NCBMaW51eCwgX01LTk9EX1ZF
Ul9MSU5VWCBpcyAwLgorCXN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOworCWNoYXIgcGF0aFtQ
QVRIX01BWF07CisJaW50IGVycm9yOwogCi0gICAgdHJhY2VfdmZzX21rbm9kKHBhdGhuYW1lLCBt
b2RlLCAqZGV2KTsKLSAgICBpZiAoKGVycm9yID0gdGFza19jb252KHQsIHBhdGhuYW1lLCBWV1JJ
VEUsIHBhdGgpKSAhPSAwKQotICAgICAgICBnb3RvIG91dF9lcnJubzsKKwl0cmFjZV92ZnNfbWtu
b2QocGF0aG5hbWUsIG1vZGUsICpkZXYpOworCWlmICgoZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0
aG5hbWUsIFZXUklURSwgcGF0aCkpICE9IDApCisJCWdvdG8gb3V0X2Vycm5vOwogCi0gICAgZXJy
b3IgPSBzeXNfbWtub2QocGF0aCwgbW9kZSk7Ci0gICAgaWYgKGVycm9yKQotICAgICAgICBnb3Rv
IG91dF9lcnJubzsKKwllcnJvciA9IHN5c19ta25vZChwYXRoLCBtb2RlKTsKKwlpZiAoZXJyb3Ip
CisJCWdvdG8gb3V0X2Vycm5vOwogCi0gICAgdHJhY2VfdmZzX21rbm9kX3JldCgpOwotICAgIHJl
dHVybiAwOworCXRyYWNlX3Zmc19ta25vZF9yZXQoKTsKKwlyZXR1cm4gMDsKIAotICAgIG91dF9l
cnJubzoKLSAgICB0cmFjZV92ZnNfbWtub2RfZXJyKGVycm9yKTsKLSAgICBlcnJubyA9IGVycm9y
OwotICAgIHJldHVybiAtMTsKKwlvdXRfZXJybm86CisJdHJhY2VfdmZzX21rbm9kX2VycihlcnJv
cik7CisJZXJybm8gPSBlcnJvcjsKKwlyZXR1cm4gLTE7CiB9CiAKIGludCBta25vZChjb25zdCBj
aGFyICpwYXRobmFtZSwgbW9kZV90IG1vZGUsIGRldl90IGRldikKIHsKLSAgICByZXR1cm4gX194
bWtub2QoMCwgcGF0aG5hbWUsIG1vZGUsICZkZXYpOworCXJldHVybiBfX3hta25vZCgwLCBwYXRo
bmFtZSwgbW9kZSwgJmRldik7CiB9CiAKIApAQCAtMjkwLDI3ICsyOTAsMjcgQEAgVFJBQ0VQT0lO
VCh0cmFjZV92ZnNfbHNlZWtfZXJyLCAiJWQiLCBpbnQpOwogCiBvZmZfdCBsc2VlayhpbnQgZmQs
IG9mZl90IG9mZnNldCwgaW50IHdoZW5jZSkKIHsKLSAgICBzdHJ1Y3QgZmlsZSAqZnA7Ci0gICAg
b2ZmX3Qgb3JnOwotICAgIGludCBlcnJvcjsKKwlzdHJ1Y3QgZmlsZSAqZnA7CisJb2ZmX3Qgb3Jn
OworCWludCBlcnJvcjsKIAotICAgIHRyYWNlX3Zmc19sc2VlayhmZCwgb2Zmc2V0LCB3aGVuY2Up
OwotICAgIGVycm9yID0gZmdldChmZCwgJmZwKTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIGdv
dG8gb3V0X2Vycm5vOworCXRyYWNlX3Zmc19sc2VlayhmZCwgb2Zmc2V0LCB3aGVuY2UpOworCWVy
cm9yID0gZmdldChmZCwgJmZwKTsKKwlpZiAoZXJyb3IpCisJCWdvdG8gb3V0X2Vycm5vOwogCi0g
ICAgZXJyb3IgPSBzeXNfbHNlZWsoZnAsIG9mZnNldCwgd2hlbmNlLCAmb3JnKTsKLSAgICBmZHJv
cChmcCk7CisJZXJyb3IgPSBzeXNfbHNlZWsoZnAsIG9mZnNldCwgd2hlbmNlLCAmb3JnKTsKKwlm
ZHJvcChmcCk7CiAKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwotICAg
IHRyYWNlX3Zmc19sc2Vla19yZXQob3JnKTsKLSAgICByZXR1cm4gb3JnOworCWlmIChlcnJvcikK
KwkJZ290byBvdXRfZXJybm87CisJdHJhY2VfdmZzX2xzZWVrX3JldChvcmcpOworCXJldHVybiBv
cmc7CiAKLSAgICBvdXRfZXJybm86Ci0gICAgdHJhY2VfdmZzX2xzZWVrX2VycihlcnJvcik7Ci0g
ICAgZXJybm8gPSBlcnJvcjsKLSAgICByZXR1cm4gLTE7CisJb3V0X2Vycm5vOgorCXRyYWNlX3Zm
c19sc2Vla19lcnIoZXJyb3IpOworCWVycm5vID0gZXJyb3I7CisJcmV0dXJuIC0xOwogfQogCiBM
RlM2NChsc2Vlayk7CkBAIC0zMjYsNDYgKzMyNiw0NiBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19w
cmVhZF9lcnIsICIlZCIsIGludCk7CiAvLyBJbiBGcmVlQlNELCBkb2ZpbGV3cml0ZSgpIGFuZCBk
b2ZpbGVyZWFkKCkgKHN5c19nZW5lcmljLmMpIGRvIHRoaXMgdG9vLgogc3RhdGljIGlubGluZSBi
b29sIGhhc19lcnJvcihpbnQgZXJyb3IsIGludCBieXRlcykKIHsKLSAgICByZXR1cm4gZXJyb3Ig
JiYgKAotICAgICAgICAgICAgKGJ5dGVzID09IDApIHx8Ci0gICAgICAgICAgICAoZXJyb3IgIT0g
RVdPVUxEQkxPQ0sgJiYgZXJyb3IgIT0gRUlOVFIgJiYgZXJyb3IgIT0gRVJFU1RBUlQpKTsKKwly
ZXR1cm4gZXJyb3IgJiYgKAorCQkJKGJ5dGVzID09IDApIHx8CisJCQkoZXJyb3IgIT0gRVdPVUxE
QkxPQ0sgJiYgZXJyb3IgIT0gRUlOVFIgJiYgZXJyb3IgIT0gRVJFU1RBUlQpKTsKIH0KIAogCiBz
c2l6ZV90IHByZWFkKGludCBmZCwgdm9pZCAqYnVmLCBzaXplX3QgY291bnQsIG9mZl90IG9mZnNl
dCkKIHsKLSAgICB0cmFjZV92ZnNfcHJlYWQoZmQsIGJ1ZiwgY291bnQsIG9mZnNldCk7Ci0gICAg
c3RydWN0IGlvdmVjIGlvdiA9IHsKLSAgICAgICAgICAgIC5pb3ZfYmFzZQk9IGJ1ZiwKLSAgICAg
ICAgICAgIC5pb3ZfbGVuCT0gY291bnQsCi0gICAgfTsKLSAgICBzdHJ1Y3QgZmlsZSAqZnA7Ci0g
ICAgc2l6ZV90IGJ5dGVzOwotICAgIGludCBlcnJvcjsKKwl0cmFjZV92ZnNfcHJlYWQoZmQsIGJ1
ZiwgY291bnQsIG9mZnNldCk7CisJc3RydWN0IGlvdmVjIGlvdiA9IHsKKwkJCS5pb3ZfYmFzZQk9
IGJ1ZiwKKwkJCS5pb3ZfbGVuCT0gY291bnQsCisJfTsKKwlzdHJ1Y3QgZmlsZSAqZnA7CisJc2l6
ZV90IGJ5dGVzOworCWludCBlcnJvcjsKIAotICAgIGVycm9yID0gZmdldChmZCwgJmZwKTsKLSAg
ICBpZiAoZXJyb3IpCi0gICAgICAgIGdvdG8gb3V0X2Vycm5vOworCWVycm9yID0gZmdldChmZCwg
JmZwKTsKKwlpZiAoZXJyb3IpCisJCWdvdG8gb3V0X2Vycm5vOwogCi0gICAgZXJyb3IgPSBzeXNf
cmVhZChmcCwgJmlvdiwgMSwgb2Zmc2V0LCAmYnl0ZXMpOwotICAgIGZkcm9wKGZwKTsKKwllcnJv
ciA9IHN5c19yZWFkKGZwLCAmaW92LCAxLCBvZmZzZXQsICZieXRlcyk7CisJZmRyb3AoZnApOwog
Ci0gICAgaWYgKGhhc19lcnJvcihlcnJvciwgYnl0ZXMpKQotICAgICAgICBnb3RvIG91dF9lcnJu
bzsKLSAgICB0cmFjZV92ZnNfcHJlYWRfcmV0KGJ5dGVzKTsKLSAgICByZXR1cm4gYnl0ZXM7CisJ
aWYgKGhhc19lcnJvcihlcnJvciwgYnl0ZXMpKQorCQlnb3RvIG91dF9lcnJubzsKKwl0cmFjZV92
ZnNfcHJlYWRfcmV0KGJ5dGVzKTsKKwlyZXR1cm4gYnl0ZXM7CiAKLSAgICBvdXRfZXJybm86Ci0g
ICAgdHJhY2VfdmZzX3ByZWFkX2VycihlcnJvcik7Ci0gICAgZXJybm8gPSBlcnJvcjsKLSAgICBy
ZXR1cm4gLTE7CisJb3V0X2Vycm5vOgorCXRyYWNlX3Zmc19wcmVhZF9lcnIoZXJyb3IpOworCWVy
cm5vID0gZXJyb3I7CisJcmV0dXJuIC0xOwogfQogCiBMRlM2NChwcmVhZCk7CiAKIHNzaXplX3Qg
cmVhZChpbnQgZmQsIHZvaWQgKmJ1Ziwgc2l6ZV90IGNvdW50KQogewotICAgIHJldHVybiBwcmVh
ZChmZCwgYnVmLCBjb3VudCwgLTEpOworCXJldHVybiBwcmVhZChmZCwgYnVmLCBjb3VudCwgLTEp
OwogfQogCiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19wd3JpdGUsICIlZCAlcCAweCV4IDB4JXgiLCBp
bnQsIGNvbnN0IHZvaWQqLCBzaXplX3QsIG9mZl90KTsKQEAgLTM3NCw2NyArMzc0LDY3IEBAIFRS
QUNFUE9JTlQodHJhY2VfdmZzX3B3cml0ZV9lcnIsICIlZCIsIGludCk7CiAKIHNzaXplX3QgcHdy
aXRlKGludCBmZCwgY29uc3Qgdm9pZCAqYnVmLCBzaXplX3QgY291bnQsIG9mZl90IG9mZnNldCkK
IHsKLSAgICB0cmFjZV92ZnNfcHdyaXRlKGZkLCBidWYsIGNvdW50LCBvZmZzZXQpOwotICAgIHN0
cnVjdCBpb3ZlYyBpb3YgPSB7Ci0gICAgICAgICAgICAuaW92X2Jhc2UJPSAodm9pZCAqKWJ1ZiwK
LSAgICAgICAgICAgIC5pb3ZfbGVuCT0gY291bnQsCi0gICAgfTsKLSAgICBzdHJ1Y3QgZmlsZSAq
ZnA7Ci0gICAgc2l6ZV90IGJ5dGVzOwotICAgIGludCBlcnJvcjsKKwl0cmFjZV92ZnNfcHdyaXRl
KGZkLCBidWYsIGNvdW50LCBvZmZzZXQpOworCXN0cnVjdCBpb3ZlYyBpb3YgPSB7CisJCQkuaW92
X2Jhc2UJPSAodm9pZCAqKWJ1ZiwKKwkJCS5pb3ZfbGVuCT0gY291bnQsCisJfTsKKwlzdHJ1Y3Qg
ZmlsZSAqZnA7CisJc2l6ZV90IGJ5dGVzOworCWludCBlcnJvcjsKIAotICAgIGVycm9yID0gZmdl
dChmZCwgJmZwKTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIGdvdG8gb3V0X2Vycm5vOworCWVy
cm9yID0gZmdldChmZCwgJmZwKTsKKwlpZiAoZXJyb3IpCisJCWdvdG8gb3V0X2Vycm5vOwogCi0g
ICAgZXJyb3IgPSBzeXNfd3JpdGUoZnAsICZpb3YsIDEsIG9mZnNldCwgJmJ5dGVzKTsKLSAgICBm
ZHJvcChmcCk7CisJZXJyb3IgPSBzeXNfd3JpdGUoZnAsICZpb3YsIDEsIG9mZnNldCwgJmJ5dGVz
KTsKKwlmZHJvcChmcCk7CiAKLSAgICBpZiAoaGFzX2Vycm9yKGVycm9yLCBieXRlcykpCi0gICAg
ICAgIGdvdG8gb3V0X2Vycm5vOwotICAgIHRyYWNlX3Zmc19wd3JpdGVfcmV0KGJ5dGVzKTsKLSAg
ICByZXR1cm4gYnl0ZXM7CisJaWYgKGhhc19lcnJvcihlcnJvciwgYnl0ZXMpKQorCQlnb3RvIG91
dF9lcnJubzsKKwl0cmFjZV92ZnNfcHdyaXRlX3JldChieXRlcyk7CisJcmV0dXJuIGJ5dGVzOwog
Ci0gICAgb3V0X2Vycm5vOgotICAgIHRyYWNlX3Zmc19wd3JpdGVfZXJyKGVycm9yKTsKLSAgICBl
cnJubyA9IGVycm9yOwotICAgIHJldHVybiAtMTsKKwlvdXRfZXJybm86CisJdHJhY2VfdmZzX3B3
cml0ZV9lcnIoZXJyb3IpOworCWVycm5vID0gZXJyb3I7CisJcmV0dXJuIC0xOwogfQogCiBMRlM2
NChwd3JpdGUpOwogCiBzc2l6ZV90IHdyaXRlKGludCBmZCwgY29uc3Qgdm9pZCAqYnVmLCBzaXpl
X3QgY291bnQpCiB7Ci0gICAgcmV0dXJuIHB3cml0ZShmZCwgYnVmLCBjb3VudCwgLTEpOworCXJl
dHVybiBwd3JpdGUoZmQsIGJ1ZiwgY291bnQsIC0xKTsKIH0KIAogc3NpemVfdCBwcmVhZHYoaW50
IGZkLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlvdiwgaW50IGlvdmNudCwgb2ZmX3Qgb2Zmc2V0KQog
ewotICAgIHN0cnVjdCBmaWxlICpmcDsKLSAgICBzaXplX3QgYnl0ZXM7Ci0gICAgaW50IGVycm9y
OworCXN0cnVjdCBmaWxlICpmcDsKKwlzaXplX3QgYnl0ZXM7CisJaW50IGVycm9yOwogCi0gICAg
ZXJyb3IgPSBmZ2V0KGZkLCAmZnApOwotICAgIGlmIChlcnJvcikKLSAgICAgICAgZ290byBvdXRf
ZXJybm87CisJZXJyb3IgPSBmZ2V0KGZkLCAmZnApOworCWlmIChlcnJvcikKKwkJZ290byBvdXRf
ZXJybm87CiAKLSAgICBlcnJvciA9IHN5c19yZWFkKGZwLCBpb3YsIGlvdmNudCwgb2Zmc2V0LCAm
Ynl0ZXMpOwotICAgIGZkcm9wKGZwKTsKKwllcnJvciA9IHN5c19yZWFkKGZwLCBpb3YsIGlvdmNu
dCwgb2Zmc2V0LCAmYnl0ZXMpOworCWZkcm9wKGZwKTsKIAotICAgIGlmIChoYXNfZXJyb3IoZXJy
b3IsIGJ5dGVzKSkKLSAgICAgICAgZ290byBvdXRfZXJybm87Ci0gICAgcmV0dXJuIGJ5dGVzOwor
CWlmIChoYXNfZXJyb3IoZXJyb3IsIGJ5dGVzKSkKKwkJZ290byBvdXRfZXJybm87CisJcmV0dXJu
IGJ5dGVzOwogCi0gICAgb3V0X2Vycm5vOgotICAgIGVycm5vID0gZXJyb3I7Ci0gICAgcmV0dXJu
IC0xOworCW91dF9lcnJubzoKKwllcnJubyA9IGVycm9yOworCXJldHVybiAtMTsKIH0KIAogTEZT
NjQocHJlYWR2KTsKIAogc3NpemVfdCByZWFkdihpbnQgZmQsIGNvbnN0IHN0cnVjdCBpb3ZlYyAq
aW92LCBpbnQgaW92Y250KQogewotICAgIHJldHVybiBwcmVhZHYoZmQsIGlvdiwgaW92Y250LCAt
MSk7CisJcmV0dXJuIHByZWFkdihmZCwgaW92LCBpb3ZjbnQsIC0xKTsKIH0KIAogVFJBQ0VQT0lO
VCh0cmFjZV92ZnNfcHdyaXRldiwgIiVkICVwIDB4JXggMHgleCIsIGludCwgY29uc3Qgc3RydWN0
IGlvdmVjKiwgaW50LCBvZmZfdCk7CkBAIC00NDMsMzMgKzQ0MywzMyBAQCBUUkFDRVBPSU5UKHRy
YWNlX3Zmc19wd3JpdGV2X2VyciwgIiVkIiwgaW50KTsKIAogc3NpemVfdCBwd3JpdGV2KGludCBm
ZCwgY29uc3Qgc3RydWN0IGlvdmVjICppb3YsIGludCBpb3ZjbnQsIG9mZl90IG9mZnNldCkKIHsK
LSAgICBzdHJ1Y3QgZmlsZSAqZnA7Ci0gICAgc2l6ZV90IGJ5dGVzOwotICAgIGludCBlcnJvcjsK
KwlzdHJ1Y3QgZmlsZSAqZnA7CisJc2l6ZV90IGJ5dGVzOworCWludCBlcnJvcjsKIAotICAgIHRy
YWNlX3Zmc19wd3JpdGV2KGZkLCBpb3YsIGlvdmNudCwgb2Zmc2V0KTsKLSAgICBlcnJvciA9IGZn
ZXQoZmQsICZmcCk7Ci0gICAgaWYgKGVycm9yKQotICAgICAgICBnb3RvIG91dF9lcnJubzsKKwl0
cmFjZV92ZnNfcHdyaXRldihmZCwgaW92LCBpb3ZjbnQsIG9mZnNldCk7CisJZXJyb3IgPSBmZ2V0
KGZkLCAmZnApOworCWlmIChlcnJvcikKKwkJZ290byBvdXRfZXJybm87CiAKLSAgICBlcnJvciA9
IHN5c193cml0ZShmcCwgaW92LCBpb3ZjbnQsIG9mZnNldCwgJmJ5dGVzKTsKLSAgICBmZHJvcChm
cCk7CisJZXJyb3IgPSBzeXNfd3JpdGUoZnAsIGlvdiwgaW92Y250LCBvZmZzZXQsICZieXRlcyk7
CisJZmRyb3AoZnApOwogCi0gICAgaWYgKGhhc19lcnJvcihlcnJvciwgYnl0ZXMpKQotICAgICAg
ICBnb3RvIG91dF9lcnJubzsKLSAgICB0cmFjZV92ZnNfcHdyaXRldl9yZXQoYnl0ZXMpOwotICAg
IHJldHVybiBieXRlczsKKwlpZiAoaGFzX2Vycm9yKGVycm9yLCBieXRlcykpCisJCWdvdG8gb3V0
X2Vycm5vOworCXRyYWNlX3Zmc19wd3JpdGV2X3JldChieXRlcyk7CisJcmV0dXJuIGJ5dGVzOwog
Ci0gICAgb3V0X2Vycm5vOgotICAgIHRyYWNlX3Zmc19wd3JpdGV2X2VycihlcnJvcik7Ci0gICAg
ZXJybm8gPSBlcnJvcjsKLSAgICByZXR1cm4gLTE7CisJb3V0X2Vycm5vOgorCXRyYWNlX3Zmc19w
d3JpdGV2X2VycihlcnJvcik7CisJZXJybm8gPSBlcnJvcjsKKwlyZXR1cm4gLTE7CiB9CiBMRlM2
NChwd3JpdGV2KTsKIAogc3NpemVfdCB3cml0ZXYoaW50IGZkLCBjb25zdCBzdHJ1Y3QgaW92ZWMg
KmlvdiwgaW50IGlvdmNudCkKIHsKLSAgICByZXR1cm4gcHdyaXRldihmZCwgaW92LCBpb3ZjbnQs
IC0xKTsKKwlyZXR1cm4gcHdyaXRldihmZCwgaW92LCBpb3ZjbnQsIC0xKTsKIH0KIAogVFJBQ0VQ
T0lOVCh0cmFjZV92ZnNfaW9jdGwsICIlZCAweCV4IiwgaW50LCB1bnNpZ25lZCBsb25nKTsKQEAg
LTQ3OCwzNSArNDc4LDM1IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2lvY3RsX2VyciwgIiVkIiwg
aW50KTsKIAogaW50IGlvY3RsKGludCBmZCwgdW5zaWduZWQgbG9uZyBpbnQgcmVxdWVzdCwgLi4u
KQogewotICAgIHN0cnVjdCBmaWxlICpmcDsKLSAgICBpbnQgZXJyb3I7Ci0gICAgdmFfbGlzdCBh
cDsKLSAgICB2b2lkKiBhcmc7CisJc3RydWN0IGZpbGUgKmZwOworCWludCBlcnJvcjsKKwl2YV9s
aXN0IGFwOworCXZvaWQqIGFyZzsKIAotICAgIHRyYWNlX3Zmc19pb2N0bChmZCwgcmVxdWVzdCk7
Ci0gICAgLyogZ2xpYmMgQUJJIHByb3ZpZGVzIGEgdmFyaWFkaWMgcHJvdG90eXBlIGZvciBpb2N0
bCBzbyB3ZSBuZWVkIHRvIGFncmVlCi0gICAgICogd2l0aCBpdCwgc2luY2Ugd2Ugbm93IGluY2x1
ZGUgc3lzL2lvY3RsLmgKLSAgICAgKiByZWFkIHRoZSBmaXJzdCBhcmd1bWVudCBhbmQgcGFzcyBp
dCB0byBzeXNfaW9jdGwoKSAqLwotICAgIHZhX3N0YXJ0KGFwLCByZXF1ZXN0KTsKLSAgICBhcmcg
PSB2YV9hcmcoYXAsIHZvaWQqKTsKLSAgICB2YV9lbmQoYXApOworCXRyYWNlX3Zmc19pb2N0bChm
ZCwgcmVxdWVzdCk7CisJLyogZ2xpYmMgQUJJIHByb3ZpZGVzIGEgdmFyaWFkaWMgcHJvdG90eXBl
IGZvciBpb2N0bCBzbyB3ZSBuZWVkIHRvIGFncmVlCisJICogd2l0aCBpdCwgc2luY2Ugd2Ugbm93
IGluY2x1ZGUgc3lzL2lvY3RsLmgKKwkgKiByZWFkIHRoZSBmaXJzdCBhcmd1bWVudCBhbmQgcGFz
cyBpdCB0byBzeXNfaW9jdGwoKSAqLworCXZhX3N0YXJ0KGFwLCByZXF1ZXN0KTsKKwlhcmcgPSB2
YV9hcmcoYXAsIHZvaWQqKTsKKwl2YV9lbmQoYXApOwogCi0gICAgZXJyb3IgPSBmZ2V0KGZkLCAm
ZnApOwotICAgIGlmIChlcnJvcikKLSAgICAgICAgZ290byBvdXRfZXJybm87CisJZXJyb3IgPSBm
Z2V0KGZkLCAmZnApOworCWlmIChlcnJvcikKKwkJZ290byBvdXRfZXJybm87CiAKLSAgICBlcnJv
ciA9IHN5c19pb2N0bChmcCwgcmVxdWVzdCwgYXJnKTsKLSAgICBmZHJvcChmcCk7CisJZXJyb3Ig
PSBzeXNfaW9jdGwoZnAsIHJlcXVlc3QsIGFyZyk7CisJZmRyb3AoZnApOwogCi0gICAgaWYgKGVy
cm9yKQotICAgICAgICBnb3RvIG91dF9lcnJubzsKLSAgICB0cmFjZV92ZnNfaW9jdGxfcmV0KCk7
Ci0gICAgcmV0dXJuIDA7CisJaWYgKGVycm9yKQorCQlnb3RvIG91dF9lcnJubzsKKwl0cmFjZV92
ZnNfaW9jdGxfcmV0KCk7CisJcmV0dXJuIDA7CiAKLSAgICBvdXRfZXJybm86Ci0gICAgdHJhY2Vf
dmZzX2lvY3RsX2VycihlcnJvcik7Ci0gICAgZXJybm8gPSBlcnJvcjsKLSAgICByZXR1cm4gLTE7
CisJb3V0X2Vycm5vOgorCXRyYWNlX3Zmc19pb2N0bF9lcnIoZXJyb3IpOworCWVycm5vID0gZXJy
b3I7CisJcmV0dXJuIC0xOwogfQogCiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19mc3luYywgIiVkIiwg
aW50KTsKQEAgLTUxNSwzMiArNTE1LDMyIEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2ZzeW5jX2Vy
ciwgIiVkIiwgaW50KTsKIAogaW50IGZzeW5jKGludCBmZCkKIHsKLSAgICBzdHJ1Y3QgZmlsZSAq
ZnA7Ci0gICAgaW50IGVycm9yOworCXN0cnVjdCBmaWxlICpmcDsKKwlpbnQgZXJyb3I7CiAKLSAg
ICB0cmFjZV92ZnNfZnN5bmMoZmQpOwotICAgIGVycm9yID0gZmdldChmZCwgJmZwKTsKLSAgICBp
ZiAoZXJyb3IpCi0gICAgICAgIGdvdG8gb3V0X2Vycm5vOworCXRyYWNlX3Zmc19mc3luYyhmZCk7
CisJZXJyb3IgPSBmZ2V0KGZkLCAmZnApOworCWlmIChlcnJvcikKKwkJZ290byBvdXRfZXJybm87
CiAKLSAgICBlcnJvciA9IHN5c19mc3luYyhmcCk7Ci0gICAgZmRyb3AoZnApOworCWVycm9yID0g
c3lzX2ZzeW5jKGZwKTsKKwlmZHJvcChmcCk7CiAKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIGdv
dG8gb3V0X2Vycm5vOwotICAgIHRyYWNlX3Zmc19mc3luY19yZXQoKTsKLSAgICByZXR1cm4gMDsK
KwlpZiAoZXJyb3IpCisJCWdvdG8gb3V0X2Vycm5vOworCXRyYWNlX3Zmc19mc3luY19yZXQoKTsK
KwlyZXR1cm4gMDsKIAotICAgIG91dF9lcnJubzoKLSAgICB0cmFjZV92ZnNfZnN5bmNfZXJyKGVy
cm9yKTsKLSAgICBlcnJubyA9IGVycm9yOwotICAgIHJldHVybiAtMTsKKwlvdXRfZXJybm86CisJ
dHJhY2VfdmZzX2ZzeW5jX2VycihlcnJvcik7CisJZXJybm8gPSBlcnJvcjsKKwlyZXR1cm4gLTE7
CiB9CiAKIGludCBmZGF0YXN5bmMoaW50IGZkKQogewotICAgIC8vIFRPRE86IFNlZSBpZiB3ZSBj
YW4gZG8gbGVzcyB0aGFuIGZzeW5jKCkuCi0gICAgcmV0dXJuIGZzeW5jKGZkKTsKKwkvLyBUT0RP
OiBTZWUgaWYgd2UgY2FuIGRvIGxlc3MgdGhhbiBmc3luYygpLgorCXJldHVybiBmc3luYyhmZCk7
CiB9CiAKIFRSQUNFUE9JTlQodHJhY2VfdmZzX2ZzdGF0LCAiJWQgJXAiLCBpbnQsIHN0cnVjdCBz
dGF0Kik7CkBAIC01NTAsMjcgKzU1MCwyNyBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19mc3RhdF9l
cnIsICIlZCIsIGludCk7CiBleHRlcm4gIkMiCiBpbnQgX19meHN0YXQoaW50IHZlciwgaW50IGZk
LCBzdHJ1Y3Qgc3RhdCAqc3QpCiB7Ci0gICAgc3RydWN0IGZpbGUgKmZwOwotICAgIGludCBlcnJv
cjsKKwlzdHJ1Y3QgZmlsZSAqZnA7CisJaW50IGVycm9yOwogCi0gICAgdHJhY2VfdmZzX2ZzdGF0
KGZkLCBzdCk7CisJdHJhY2VfdmZzX2ZzdGF0KGZkLCBzdCk7CiAKLSAgICBlcnJvciA9IGZnZXQo
ZmQsICZmcCk7Ci0gICAgaWYgKGVycm9yKQotICAgICAgICBnb3RvIG91dF9lcnJubzsKKwllcnJv
ciA9IGZnZXQoZmQsICZmcCk7CisJaWYgKGVycm9yKQorCQlnb3RvIG91dF9lcnJubzsKIAotICAg
IGVycm9yID0gc3lzX2ZzdGF0KGZwLCBzdCk7Ci0gICAgZmRyb3AoZnApOworCWVycm9yID0gc3lz
X2ZzdGF0KGZwLCBzdCk7CisJZmRyb3AoZnApOwogCi0gICAgaWYgKGVycm9yKQotICAgICAgICBn
b3RvIG91dF9lcnJubzsKLSAgICB0cmFjZV92ZnNfZnN0YXRfcmV0KCk7Ci0gICAgcmV0dXJuIDA7
CisJaWYgKGVycm9yKQorCQlnb3RvIG91dF9lcnJubzsKKwl0cmFjZV92ZnNfZnN0YXRfcmV0KCk7
CisJcmV0dXJuIDA7CiAKLSAgICBvdXRfZXJybm86Ci0gICAgdHJhY2VfdmZzX2ZzdGF0X2Vycihl
cnJvcik7Ci0gICAgZXJybm8gPSBlcnJvcjsKLSAgICByZXR1cm4gLTE7CisJb3V0X2Vycm5vOgor
CXRyYWNlX3Zmc19mc3RhdF9lcnIoZXJyb3IpOworCWVycm5vID0gZXJyb3I7CisJcmV0dXJuIC0x
OwogfQogCiBMRlM2NChfX2Z4c3RhdCk7CkBAIC01NzgsNTIgKzU3OCw1MiBAQCBMRlM2NChfX2Z4
c3RhdCk7CiBleHRlcm4gIkMiCiBpbnQgZnN0YXQoaW50IGZkLCBzdHJ1Y3Qgc3RhdCAqc3QpCiB7
Ci0gICAgcmV0dXJuIF9fZnhzdGF0KDEsIGZkLCBzdCk7CisJcmV0dXJuIF9fZnhzdGF0KDEsIGZk
LCBzdCk7CiB9CiAKIExGUzY0KGZzdGF0KTsKIAogZXh0ZXJuICJDIgogaW50IF9fZnhzdGF0YXQo
aW50IHZlciwgaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwgc3RydWN0IHN0YXQgKnN0
LAotICAgICAgICBpbnQgZmxhZ3MpCisJCWludCBmbGFncykKIHsKLSAgICBpZiAoZmxhZ3MgJiBB
VF9TWU1MSU5LX05PRk9MTE9XKSB7Ci0gICAgICAgIFVOSU1QTEVNRU5URUQoImZzdGF0YXQoKSB3
aXRoIEFUX1NZTUxJTktfTk9GT0xMT1ciKTsKLSAgICB9CisJaWYgKGZsYWdzICYgQVRfU1lNTElO
S19OT0ZPTExPVykgeworCQlVTklNUExFTUVOVEVEKCJmc3RhdGF0KCkgd2l0aCBBVF9TWU1MSU5L
X05PRk9MTE9XIik7CisJfQogCi0gICAgaWYgKHBhdGhuYW1lWzBdID09ICcvJyB8fCBkaXJmZCA9
PSBBVF9GRENXRCkgewotICAgICAgICByZXR1cm4gc3RhdChwYXRobmFtZSwgc3QpOwotICAgIH0K
LSAgICAvLyBJZiBBVF9FTVBUWV9QQVRIIGFuZCBwYXRobmFtZSBpcyBhbiBlbXB0eSBzdHJpbmcs
IGZzdGF0YXQoKSBvcGVyYXRlcyBvbgotICAgIC8vIGRpcmZkIGl0c2VsZiwgYW5kIGluIHRoYXQg
Y2FzZSBpdCBkb2Vzbid0IGhhdmUgdG8gYmUgYSBkaXJlY3RvcnkuCi0gICAgaWYgKChmbGFncyAm
IEFUX0VNUFRZX1BBVEgpICYmICFwYXRobmFtZVswXSkgewotICAgICAgICByZXR1cm4gZnN0YXQo
ZGlyZmQsIHN0KTsKLSAgICB9CisJaWYgKHBhdGhuYW1lWzBdID09ICcvJyB8fCBkaXJmZCA9PSBB
VF9GRENXRCkgeworCQlyZXR1cm4gc3RhdChwYXRobmFtZSwgc3QpOworCX0KKwkvLyBJZiBBVF9F
TVBUWV9QQVRIIGFuZCBwYXRobmFtZSBpcyBhbiBlbXB0eSBzdHJpbmcsIGZzdGF0YXQoKSBvcGVy
YXRlcyBvbgorCS8vIGRpcmZkIGl0c2VsZiwgYW5kIGluIHRoYXQgY2FzZSBpdCBkb2Vzbid0IGhh
dmUgdG8gYmUgYSBkaXJlY3RvcnkuCisJaWYgKChmbGFncyAmIEFUX0VNUFRZX1BBVEgpICYmICFw
YXRobmFtZVswXSkgeworCQlyZXR1cm4gZnN0YXQoZGlyZmQsIHN0KTsKKwl9CiAKLSAgICBzdHJ1
Y3QgZmlsZSAqZnA7Ci0gICAgaW50IGVycm9yID0gZmdldChkaXJmZCwgJmZwKTsKLSAgICBpZiAo
ZXJyb3IpIHsKLSAgICAgICAgZXJybm8gPSBlcnJvcjsKLSAgICAgICAgcmV0dXJuIC0xOwotICAg
IH0KKwlzdHJ1Y3QgZmlsZSAqZnA7CisJaW50IGVycm9yID0gZmdldChkaXJmZCwgJmZwKTsKKwlp
ZiAoZXJyb3IpIHsKKwkJZXJybm8gPSBlcnJvcjsKKwkJcmV0dXJuIC0xOworCX0KIAotICAgIHN0
cnVjdCB2bm9kZSAqdnAgPSBmcC0+Zl9kZW50cnktPmRfdm5vZGU7Ci0gICAgdm5fbG9jayh2cCk7
CisJc3RydWN0IHZub2RlICp2cCA9IGZwLT5mX2RlbnRyeS0+ZF92bm9kZTsKKwl2bl9sb2NrKHZw
KTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxjaGFyIFtdPiB1cCAobmV3IGNoYXJbUEFUSF9NQVhd
KTsKLSAgICBjaGFyICpwID0gdXAuZ2V0KCk7Ci0gICAgLyogYnVpbGQgYWJzb2x1dGUgcGF0aCAq
LwotICAgIHN0cmxjcHkocCwgZnAtPmZfZGVudHJ5LT5kX21vdW50LT5tX3BhdGgsIFBBVEhfTUFY
KTsKLSAgICBzdHJsY2F0KHAsIGZwLT5mX2RlbnRyeS0+ZF9wYXRoLCBQQVRIX01BWCk7Ci0gICAg
c3RybGNhdChwLCAiLyIsIFBBVEhfTUFYKTsKLSAgICBzdHJsY2F0KHAsIHBhdGhuYW1lLCBQQVRI
X01BWCk7CisJc3RkOjp1bmlxdWVfcHRyPGNoYXIgW10+IHVwIChuZXcgY2hhcltQQVRIX01BWF0p
OworCWNoYXIgKnAgPSB1cC5nZXQoKTsKKwkvKiBidWlsZCBhYnNvbHV0ZSBwYXRoICovCisJc3Ry
bGNweShwLCBmcC0+Zl9kZW50cnktPmRfbW91bnQtPm1fcGF0aCwgUEFUSF9NQVgpOworCXN0cmxj
YXQocCwgZnAtPmZfZGVudHJ5LT5kX3BhdGgsIFBBVEhfTUFYKTsKKwlzdHJsY2F0KHAsICIvIiwg
UEFUSF9NQVgpOworCXN0cmxjYXQocCwgcGF0aG5hbWUsIFBBVEhfTUFYKTsKIAotICAgIGVycm9y
ID0gc3RhdChwLCBzdCk7CisJZXJyb3IgPSBzdGF0KHAsIHN0KTsKIAotICAgIHZuX3VubG9jayh2
cCk7Ci0gICAgZmRyb3AoZnApOworCXZuX3VubG9jayh2cCk7CisJZmRyb3AoZnApOwogCi0gICAg
cmV0dXJuIGVycm9yOworCXJldHVybiBlcnJvcjsKIH0KIAogTEZTNjQoX19meHN0YXRhdCk7CkBA
IC02MzEsMjkgKzYzMSwyOSBAQCBMRlM2NChfX2Z4c3RhdGF0KTsKIGV4dGVybiAiQyIKIGludCBm
c3RhdGF0KGludCBkaXJmZCwgY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IHN0YXQgKnN0LCBpbnQg
ZmxhZ3MpCiB7Ci0gICAgcmV0dXJuIF9fZnhzdGF0YXQoMSwgZGlyZmQsIHBhdGgsIHN0LCBmbGFn
cyk7CisJcmV0dXJuIF9fZnhzdGF0YXQoMSwgZGlyZmQsIHBhdGgsIHN0LCBmbGFncyk7CiB9CiAK
IExGUzY0KGZzdGF0YXQpOwogCiBleHRlcm4gIkMiIGludCBmbG9jayhpbnQgZmQsIGludCBvcGVy
YXRpb24pCiB7Ci0gICAgaWYgKCFmaWxlcmVmX2Zyb21fZmQoZmQpKSB7Ci0gICAgICAgIHJldHVy
biBsaWJjX2Vycm9yKEVCQURGKTsKLSAgICB9CisJaWYgKCFmaWxlcmVmX2Zyb21fZmQoZmQpKSB7
CisJCXJldHVybiBsaWJjX2Vycm9yKEVCQURGKTsKKwl9CiAKLSAgICBzd2l0Y2ggKG9wZXJhdGlv
bikgewotICAgIGNhc2UgTE9DS19TSDoKLSAgICBjYXNlIExPQ0tfU0ggfCBMT0NLX05COgotICAg
IGNhc2UgTE9DS19FWDoKLSAgICBjYXNlIExPQ0tfRVggfCBMT0NLX05COgotICAgIGNhc2UgTE9D
S19VTjoKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGxpYmNf
ZXJyb3IoRUlOVkFMKTsKLSAgICB9CisJc3dpdGNoIChvcGVyYXRpb24pIHsKKwljYXNlIExPQ0tf
U0g6CisJY2FzZSBMT0NLX1NIIHwgTE9DS19OQjoKKwljYXNlIExPQ0tfRVg6CisJY2FzZSBMT0NL
X0VYIHwgTE9DS19OQjoKKwljYXNlIExPQ0tfVU46CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXJl
dHVybiBsaWJjX2Vycm9yKEVJTlZBTCk7CisJfQogCi0gICAgcmV0dXJuIDA7CisJcmV0dXJuIDA7
CiB9CiAKIFRSQUNFUE9JTlQodHJhY2VfdmZzX3JlYWRkaXIsICIlZCAlcCIsIGludCwgZGlyZW50
Kik7CkBAIC02NjIsMTUyICs2NjIsMTUyIEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX3JlYWRkaXJf
ZXJyLCAiJWQiLCBpbnQpOwogCiBzdHJ1Y3QgX19kaXJzdHJlYW0KIHsKLSAgICBpbnQgZmQ7CisJ
aW50IGZkOwogfTsKIAogRElSICpvcGVuZGlyKGNvbnN0IGNoYXIgKnBhdGgpCiB7Ci0gICAgRElS
ICpkaXIgPSBuZXcgRElSOworCURJUiAqZGlyID0gbmV3IERJUjsKIAotICAgIGlmICghZGlyKQot
ICAgICAgICByZXR1cm4gbGliY19lcnJvcl9wdHI8RElSPihFTk9NRU0pOworCWlmICghZGlyKQor
CQlyZXR1cm4gbGliY19lcnJvcl9wdHI8RElSPihFTk9NRU0pOwogCi0gICAgZGlyLT5mZCA9IG9w
ZW4ocGF0aCwgT19SRE9OTFkpOwotICAgIGlmIChkaXItPmZkIDwgMCkgewotICAgICAgICBkZWxl
dGUgZGlyOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0gICAgcmV0dXJuIGRpcjsK
KwlkaXItPmZkID0gb3BlbihwYXRoLCBPX1JET05MWSk7CisJaWYgKGRpci0+ZmQgPCAwKSB7CisJ
CWRlbGV0ZSBkaXI7CisJCXJldHVybiBudWxscHRyOworCX0KKwlyZXR1cm4gZGlyOwogfQogCiBE
SVIgKmZkb3BlbmRpcihpbnQgZmQpCiB7Ci0gICAgRElSICpkaXI7Ci0gICAgc3RydWN0IHN0YXQg
c3Q7Ci0gICAgaWYgKGZzdGF0KGZkLCAmc3QpIDwgMCkgewotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICB9Ci0gICAgaWYgKCFTX0lTRElSKHN0LnN0X21vZGUpKSB7Ci0gICAgICAgIGVycm5v
ID0gRU5PVERJUjsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotICAgIGRpciA9IG5l
dyBESVI7Ci0gICAgZGlyLT5mZCA9IGZkOwotICAgIHJldHVybiBkaXI7CisJRElSICpkaXI7CisJ
c3RydWN0IHN0YXQgc3Q7CisJaWYgKGZzdGF0KGZkLCAmc3QpIDwgMCkgeworCQlyZXR1cm4gbnVs
bHB0cjsKKwl9CisJaWYgKCFTX0lTRElSKHN0LnN0X21vZGUpKSB7CisJCWVycm5vID0gRU5PVERJ
UjsKKwkJcmV0dXJuIG51bGxwdHI7CisJfQorCWRpciA9IG5ldyBESVI7CisJZGlyLT5mZCA9IGZk
OworCXJldHVybiBkaXI7CiAKIH0KIAogaW50IGRpcmZkKERJUiAqZGlycCkKIHsKLSAgICBpZiAo
IWRpcnApIHsKLSAgICAgICAgcmV0dXJuIGxpYmNfZXJyb3IoRUlOVkFMKTsKLSAgICB9CisJaWYg
KCFkaXJwKSB7CisJCXJldHVybiBsaWJjX2Vycm9yKEVJTlZBTCk7CisJfQogCi0gICAgcmV0dXJu
IGRpcnAtPmZkOworCXJldHVybiBkaXJwLT5mZDsKIH0KIAogaW50IGNsb3NlZGlyKERJUiAqZGly
KQogewotICAgIGNsb3NlKGRpci0+ZmQpOwotICAgIGRlbGV0ZSBkaXI7Ci0gICAgcmV0dXJuIDA7
CisJY2xvc2UoZGlyLT5mZCk7CisJZGVsZXRlIGRpcjsKKwlyZXR1cm4gMDsKIH0KIAogc3RydWN0
IGRpcmVudCAqcmVhZGRpcihESVIgKmRpcikKIHsKLSAgICBzdGF0aWMgX190aHJlYWQgc3RydWN0
IGRpcmVudCBlbnRyeSwgKnJlc3VsdDsKLSAgICBpbnQgcmV0OworCXN0YXRpYyBfX3RocmVhZCBz
dHJ1Y3QgZGlyZW50IGVudHJ5LCAqcmVzdWx0OworCWludCByZXQ7CiAKLSAgICByZXQgPSByZWFk
ZGlyX3IoZGlyLCAmZW50cnksICZyZXN1bHQpOwotICAgIGlmIChyZXQpCi0gICAgICAgIHJldHVy
biBsaWJjX2Vycm9yX3B0cjxzdHJ1Y3QgZGlyZW50PihyZXQpOworCXJldCA9IHJlYWRkaXJfcihk
aXIsICZlbnRyeSwgJnJlc3VsdCk7CisJaWYgKHJldCkKKwkJcmV0dXJuIGxpYmNfZXJyb3JfcHRy
PHN0cnVjdCBkaXJlbnQ+KHJldCk7CiAKLSAgICBlcnJubyA9IDA7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKKwllcnJubyA9IDA7CisJcmV0dXJuIHJlc3VsdDsKIH0KIAogaW50IHJlYWRkaXJfcihESVIg
KmRpciwgc3RydWN0IGRpcmVudCAqZW50cnksIHN0cnVjdCBkaXJlbnQgKipyZXN1bHQpCiB7Ci0g
ICAgaW50IGVycm9yOwotICAgIHN0cnVjdCBmaWxlICpmcDsKLQotICAgIHRyYWNlX3Zmc19yZWFk
ZGlyKGRpci0+ZmQsIGVudHJ5KTsKLSAgICBlcnJvciA9IGZnZXQoZGlyLT5mZCwgJmZwKTsKLSAg
ICBpZiAoZXJyb3IpIHsKLSAgICAgICAgdHJhY2VfdmZzX3JlYWRkaXJfZXJyKGVycm9yKTsKLSAg
ICB9IGVsc2UgewotICAgICAgICBlcnJvciA9IHN5c19yZWFkZGlyKGZwLCBlbnRyeSk7Ci0gICAg
ICAgIGZkcm9wKGZwKTsKLSAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICB0cmFjZV92
ZnNfcmVhZGRpcl9lcnIoZXJyb3IpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdHJh
Y2VfdmZzX3JlYWRkaXJfcmV0KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgLy8gT3VyIGRpcmVu
dCBoYXMgKGxpa2UgTGludXgpIGEgZF9yZWNsZW4gZmllbGQsIGJ1dCBhIGNvbnN0YW50IHNpemUu
Ci0gICAgZW50cnktPmRfcmVjbGVuID0gc2l6ZW9mKCplbnRyeSk7Ci0KLSAgICBpZiAoZXJyb3Ip
IHsKLSAgICAgICAgKnJlc3VsdCA9IG51bGxwdHI7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgKnJl
c3VsdCA9IGVudHJ5OwotICAgIH0KLSAgICByZXR1cm4gZXJyb3IgPT0gRU5PRU5UID8gMCA6IGVy
cm9yOworCWludCBlcnJvcjsKKwlzdHJ1Y3QgZmlsZSAqZnA7CisKKwl0cmFjZV92ZnNfcmVhZGRp
cihkaXItPmZkLCBlbnRyeSk7CisJZXJyb3IgPSBmZ2V0KGRpci0+ZmQsICZmcCk7CisJaWYgKGVy
cm9yKSB7CisJCXRyYWNlX3Zmc19yZWFkZGlyX2VycihlcnJvcik7CisJfSBlbHNlIHsKKwkJZXJy
b3IgPSBzeXNfcmVhZGRpcihmcCwgZW50cnkpOworCQlmZHJvcChmcCk7CisJCWlmIChlcnJvcikg
eworCQkJdHJhY2VfdmZzX3JlYWRkaXJfZXJyKGVycm9yKTsKKwkJfSBlbHNlIHsKKwkJCXRyYWNl
X3Zmc19yZWFkZGlyX3JldCgpOworCQl9CisJfQorCS8vIE91ciBkaXJlbnQgaGFzIChsaWtlIExp
bnV4KSBhIGRfcmVjbGVuIGZpZWxkLCBidXQgYSBjb25zdGFudCBzaXplLgorCWVudHJ5LT5kX3Jl
Y2xlbiA9IHNpemVvZigqZW50cnkpOworCisJaWYgKGVycm9yKSB7CisJCSpyZXN1bHQgPSBudWxs
cHRyOworCX0gZWxzZSB7CisJCSpyZXN1bHQgPSBlbnRyeTsKKwl9CisJcmV0dXJuIGVycm9yID09
IEVOT0VOVCA/IDAgOiBlcnJvcjsKIH0KIAogLy8gRklYTUU6IGluIDY0Yml0IGRpcmVudDY0IGFu
ZCBkaXJlbnQgYXJlIGlkZW50aWNhbCwgc28gaXQncyBzYWZlIHRvIGFsaWFzCiAjdW5kZWYgcmVh
ZGRpcjY0X3IKIGV4dGVybiAiQyIgaW50IHJlYWRkaXI2NF9yKERJUiAqZGlyLCBzdHJ1Y3QgZGly
ZW50NjQgKmVudHJ5LAotICAgICAgICBzdHJ1Y3QgZGlyZW50NjQgKipyZXN1bHQpCi0gICAgICAg
IF9fYXR0cmlidXRlX18oKGFsaWFzKCJyZWFkZGlyX3IiKSkpOworCQlzdHJ1Y3QgZGlyZW50NjQg
KipyZXN1bHQpCisJCV9fYXR0cmlidXRlX18oKGFsaWFzKCJyZWFkZGlyX3IiKSkpOwogCiAjdW5k
ZWYgcmVhZGRpcjY0CiBleHRlcm4gIkMiIHN0cnVjdCBkaXJlbnQgKnJlYWRkaXI2NChESVIgKmRp
cikgX19hdHRyaWJ1dGVfXygoYWxpYXMoInJlYWRkaXIiKSkpOwogCiB2b2lkIHJld2luZGRpcihE
SVIgKmRpcnApCiB7Ci0gICAgc3RydWN0IGZpbGUgKmZwOworCXN0cnVjdCBmaWxlICpmcDsKIAot
ICAgIGF1dG8gZXJyb3IgPSBmZ2V0KGRpcnAtPmZkLCAmZnApOwotICAgIGlmIChlcnJvcikgewot
ICAgICAgICAvLyBQT1NJWCBzcGVjaWZpZXMgdGhhdCB3aGF0IHJld2luZGRpcigpIGRvZXMgaW4g
dGhlIGNhc2Ugb2YgZXJyb3IKLSAgICAgICAgLy8gaXMgdW5kZWZpbmVkLi4uCi0gICAgICAgIHJl
dHVybjsKLSAgICB9CisJYXV0byBlcnJvciA9IGZnZXQoZGlycC0+ZmQsICZmcCk7CisJaWYgKGVy
cm9yKSB7CisJCS8vIFBPU0lYIHNwZWNpZmllcyB0aGF0IHdoYXQgcmV3aW5kZGlyKCkgZG9lcyBp
biB0aGUgY2FzZSBvZiBlcnJvcgorCQkvLyBpcyB1bmRlZmluZWQuLi4KKwkJcmV0dXJuOworCX0K
IAotICAgIHN5c19yZXdpbmRkaXIoZnApOwotICAgIC8vIEFnYWluLCBlcnJvciBjb2RlIGZyb20g
c3lzX3Jld2luZGRpcigpIGlzIGlnbm9yZWQuCi0gICAgZmRyb3AoZnApOworCXN5c19yZXdpbmRk
aXIoZnApOworCS8vIEFnYWluLCBlcnJvciBjb2RlIGZyb20gc3lzX3Jld2luZGRpcigpIGlzIGln
bm9yZWQuCisJZmRyb3AoZnApOwogfQogCiBsb25nIHRlbGxkaXIoRElSICpkaXJwKQogewotICAg
IHN0cnVjdCBmaWxlICpmcDsKLSAgICBpbnQgZXJyb3IgPSBmZ2V0KGRpcnAtPmZkLCAmZnApOwot
ICAgIGlmIChlcnJvcikgewotICAgICAgICByZXR1cm4gbGliY19lcnJvcihlcnJvcik7Ci0gICAg
fQorCXN0cnVjdCBmaWxlICpmcDsKKwlpbnQgZXJyb3IgPSBmZ2V0KGRpcnAtPmZkLCAmZnApOwor
CWlmIChlcnJvcikgeworCQlyZXR1cm4gbGliY19lcnJvcihlcnJvcik7CisJfQogCi0gICAgbG9u
ZyBsb2M7Ci0gICAgZXJyb3IgPSBzeXNfdGVsbGRpcihmcCwgJmxvYyk7Ci0gICAgZmRyb3AoZnAp
OwotICAgIGlmIChlcnJvcikgewotICAgICAgICByZXR1cm4gbGliY19lcnJvcihlcnJvcik7Ci0g
ICAgfQotICAgIHJldHVybiBsb2M7CisJbG9uZyBsb2M7CisJZXJyb3IgPSBzeXNfdGVsbGRpcihm
cCwgJmxvYyk7CisJZmRyb3AoZnApOworCWlmIChlcnJvcikgeworCQlyZXR1cm4gbGliY19lcnJv
cihlcnJvcik7CisJfQorCXJldHVybiBsb2M7CiB9CiAKIHZvaWQgc2Vla2RpcihESVIgKmRpcnAs
IGxvbmcgbG9jKQogewotICAgIHN0cnVjdCBmaWxlICpmcDsKLSAgICBpbnQgZXJyb3IgPSBmZ2V0
KGRpcnAtPmZkLCAmZnApOwotICAgIGlmIChlcnJvcikgewotICAgICAgICAvLyBQT1NJWCBzcGVj
aWZpZXMgc2Vla2RpcigpIGNhbm5vdCByZXR1cm4gZXJyb3JzLgotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIHN5c19zZWVrZGlyKGZwLCBsb2MpOwotICAgIC8vIEFnYWluLCBlcnJvciBjb2Rl
IGZyb20gc3lzX3NlZWtkaXIoKSBpcyBpZ25vcmVkLgotICAgIGZkcm9wKGZwKTsKKwlzdHJ1Y3Qg
ZmlsZSAqZnA7CisJaW50IGVycm9yID0gZmdldChkaXJwLT5mZCwgJmZwKTsKKwlpZiAoZXJyb3Ip
IHsKKwkJLy8gUE9TSVggc3BlY2lmaWVzIHNlZWtkaXIoKSBjYW5ub3QgcmV0dXJuIGVycm9ycy4K
KwkJcmV0dXJuOworCX0KKwlzeXNfc2Vla2RpcihmcCwgbG9jKTsKKwkvLyBBZ2FpbiwgZXJyb3Ig
Y29kZSBmcm9tIHN5c19zZWVrZGlyKCkgaXMgaWdub3JlZC4KKwlmZHJvcChmcCk7CiB9CiAKIFRS
QUNFUE9JTlQodHJhY2VfdmZzX21rZGlyLCAiXCIlc1wiIDAlMG8iLCBjb25zdCBjaGFyKiwgbW9k
ZV90KTsKQEAgLTgxNywyNSArODE3LDI1IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX21rZGlyX2Vy
ciwgIiVkIiwgaW50KTsKIGludAogbWtkaXIoY29uc3QgY2hhciAqcGF0aG5hbWUsIG1vZGVfdCBt
b2RlKQogewotICAgIHN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOwotICAgIGNoYXIgcGF0aFtQ
QVRIX01BWF07Ci0gICAgaW50IGVycm9yOworCXN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOwor
CWNoYXIgcGF0aFtQQVRIX01BWF07CisJaW50IGVycm9yOwogCi0gICAgbW9kZSA9IGFwcGx5X3Vt
YXNrKG1vZGUpOworCW1vZGUgPSBhcHBseV91bWFzayhtb2RlKTsKIAotICAgIHRyYWNlX3Zmc19t
a2RpcihwYXRobmFtZSwgbW9kZSk7Ci0gICAgaWYgKChlcnJvciA9IHRhc2tfY29udih0LCBwYXRo
bmFtZSwgVldSSVRFLCBwYXRoKSkgIT0gMCkKLSAgICAgICAgZ290byBvdXRfZXJybm87CisJdHJh
Y2VfdmZzX21rZGlyKHBhdGhuYW1lLCBtb2RlKTsKKwlpZiAoKGVycm9yID0gdGFza19jb252KHQs
IHBhdGhuYW1lLCBWV1JJVEUsIHBhdGgpKSAhPSAwKQorCQlnb3RvIG91dF9lcnJubzsKIAotICAg
IGVycm9yID0gc3lzX21rZGlyKHBhdGgsIG1vZGUpOwotICAgIGlmIChlcnJvcikKLSAgICAgICAg
Z290byBvdXRfZXJybm87Ci0gICAgdHJhY2VfdmZzX21rZGlyX3JldCgpOwotICAgIHJldHVybiAw
OwotICAgIG91dF9lcnJubzoKLSAgICB0cmFjZV92ZnNfbWtkaXJfZXJyKGVycm9yKTsKLSAgICBl
cnJubyA9IGVycm9yOwotICAgIHJldHVybiAtMTsKKwllcnJvciA9IHN5c19ta2RpcihwYXRoLCBt
b2RlKTsKKwlpZiAoZXJyb3IpCisJCWdvdG8gb3V0X2Vycm5vOworCXRyYWNlX3Zmc19ta2Rpcl9y
ZXQoKTsKKwlyZXR1cm4gMDsKKwlvdXRfZXJybm86CisJdHJhY2VfdmZzX21rZGlyX2VycihlcnJv
cik7CisJZXJybm8gPSBlcnJvcjsKKwlyZXR1cm4gLTE7CiB9CiAKIFRSQUNFUE9JTlQodHJhY2Vf
dmZzX3JtZGlyLCAiXCIlc1wiIiwgY29uc3QgY2hhciopOwpAQCAtODQ0LDUxICs4NDQsNTEgQEAg
VFJBQ0VQT0lOVCh0cmFjZV92ZnNfcm1kaXJfZXJyLCAiJWQiLCBpbnQpOwogCiBpbnQgcm1kaXIo
Y29uc3QgY2hhciAqcGF0aG5hbWUpCiB7Ci0gICAgc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7
Ci0gICAgY2hhciBwYXRoW1BBVEhfTUFYXTsKLSAgICBpbnQgZXJyb3I7CisJc3RydWN0IHRhc2sg
KnQgPSBtYWluX3Rhc2s7CisJY2hhciBwYXRoW1BBVEhfTUFYXTsKKwlpbnQgZXJyb3I7CiAKLSAg
ICB0cmFjZV92ZnNfcm1kaXIocGF0aG5hbWUpOwotICAgIGVycm9yID0gRU5PRU5UOwotICAgIGlm
IChwYXRobmFtZSA9PSBudWxscHRyKQotICAgICAgICBnb3RvIG91dF9lcnJubzsKLSAgICBpZiAo
KGVycm9yID0gdGFza19jb252KHQsIHBhdGhuYW1lLCBWV1JJVEUsIHBhdGgpKSAhPSAwKQotICAg
ICAgICBnb3RvIG91dF9lcnJubzsKKwl0cmFjZV92ZnNfcm1kaXIocGF0aG5hbWUpOworCWVycm9y
ID0gRU5PRU5UOworCWlmIChwYXRobmFtZSA9PSBudWxscHRyKQorCQlnb3RvIG91dF9lcnJubzsK
KwlpZiAoKGVycm9yID0gdGFza19jb252KHQsIHBhdGhuYW1lLCBWV1JJVEUsIHBhdGgpKSAhPSAw
KQorCQlnb3RvIG91dF9lcnJubzsKIAotICAgIGVycm9yID0gc3lzX3JtZGlyKHBhdGgpOwotICAg
IGlmIChlcnJvcikKLSAgICAgICAgZ290byBvdXRfZXJybm87Ci0gICAgdHJhY2VfdmZzX3JtZGly
X3JldCgpOwotICAgIHJldHVybiAwOwotICAgIG91dF9lcnJubzoKLSAgICB0cmFjZV92ZnNfcm1k
aXJfZXJyKGVycm9yKTsKLSAgICBlcnJubyA9IGVycm9yOwotICAgIHJldHVybiAtMTsKKwllcnJv
ciA9IHN5c19ybWRpcihwYXRoKTsKKwlpZiAoZXJyb3IpCisJCWdvdG8gb3V0X2Vycm5vOworCXRy
YWNlX3Zmc19ybWRpcl9yZXQoKTsKKwlyZXR1cm4gMDsKKwlvdXRfZXJybm86CisJdHJhY2VfdmZz
X3JtZGlyX2VycihlcnJvcik7CisJZXJybm8gPSBlcnJvcjsKKwlyZXR1cm4gLTE7CiB9CiAKIHN0
YXRpYyB2b2lkCiBnZXRfbGFzdF9jb21wb25lbnQoY29uc3QgY2hhciAqcGF0aCwgY2hhciAqZHN0
KQogewotICAgIGludCBwb3MgPSBzdHJsZW4ocGF0aCkgLSAxOworCWludCBwb3MgPSBzdHJsZW4o
cGF0aCkgLSAxOwogCi0gICAgd2hpbGUgKHBvcyA+PSAwICYmIHBhdGhbcG9zXSA9PSAnLycpCi0g
ICAgICAgIHBvcy0tOworCXdoaWxlIChwb3MgPj0gMCAmJiBwYXRoW3Bvc10gPT0gJy8nKQorCQlw
b3MtLTsKIAotICAgIGludCBjb21wb25lbnRfZW5kID0gcG9zOworCWludCBjb21wb25lbnRfZW5k
ID0gcG9zOwogCi0gICAgd2hpbGUgKHBvcyA+PSAwICYmIHBhdGhbcG9zXSAhPSAnLycpCi0gICAg
ICAgIHBvcy0tOworCXdoaWxlIChwb3MgPj0gMCAmJiBwYXRoW3Bvc10gIT0gJy8nKQorCQlwb3Mt
LTsKIAotICAgIGludCBjb21wb25lbnRfc3RhcnQgPSBwb3MgKyAxOworCWludCBjb21wb25lbnRf
c3RhcnQgPSBwb3MgKyAxOwogCi0gICAgaW50IGxlbiA9IGNvbXBvbmVudF9lbmQgLSBjb21wb25l
bnRfc3RhcnQgKyAxOwotICAgIG1lbWNweShkc3QsIHBhdGggKyBjb21wb25lbnRfc3RhcnQsIGxl
bik7Ci0gICAgZHN0W2xlbl0gPSAwOworCWludCBsZW4gPSBjb21wb25lbnRfZW5kIC0gY29tcG9u
ZW50X3N0YXJ0ICsgMTsKKwltZW1jcHkoZHN0LCBwYXRoICsgY29tcG9uZW50X3N0YXJ0LCBsZW4p
OworCWRzdFtsZW5dID0gMDsKIH0KIAogc3RhdGljIGJvb2wgbnVsbF9vcl9lbXB0eShjb25zdCBj
aGFyICpzdHIpCiB7Ci0gICAgcmV0dXJuIHN0ciA9PSBudWxscHRyIHx8ICpzdHIgPT0gJ1wwJzsK
KwlyZXR1cm4gc3RyID09IG51bGxwdHIgfHwgKnN0ciA9PSAnXDAnOwogfQogCiBUUkFDRVBPSU5U
KHRyYWNlX3Zmc19yZW5hbWUsICJcIiVzXCIgXCIlc1wiIiwgY29uc3QgY2hhciosIGNvbnN0IGNo
YXIqKTsKQEAgLTg5Nyw0MyArODk3LDQzIEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX3JlbmFtZV9l
cnIsICIlZCIsIGludCk7CiAKIGludCByZW5hbWUoY29uc3QgY2hhciAqb2xkcGF0aCwgY29uc3Qg
Y2hhciAqbmV3cGF0aCkKIHsKLSAgICB0cmFjZV92ZnNfcmVuYW1lKG9sZHBhdGgsIG5ld3BhdGgp
OwotICAgIHN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOwotICAgIGNoYXIgc3JjW1BBVEhfTUFY
XTsKLSAgICBjaGFyIGRlc3RbUEFUSF9NQVhdOwotICAgIGludCBlcnJvcjsKLQotICAgIGVycm9y
ID0gRU5PRU5UOwotICAgIGlmIChudWxsX29yX2VtcHR5KG9sZHBhdGgpIHx8IG51bGxfb3JfZW1w
dHkobmV3cGF0aCkpCi0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwotCi0gICAgZ2V0X2xhc3RfY29t
cG9uZW50KG9sZHBhdGgsIHNyYyk7Ci0gICAgaWYgKCFzdHJjbXAoc3JjLCAiLiIpIHx8ICFzdHJj
bXAoc3JjLCAiLi4iKSkgewotICAgICAgICBlcnJvciA9IEVJTlZBTDsKLSAgICAgICAgZ290byBv
dXRfZXJybm87Ci0gICAgfQotCi0gICAgZ2V0X2xhc3RfY29tcG9uZW50KG5ld3BhdGgsIGRlc3Qp
OwotICAgIGlmICghc3RyY21wKGRlc3QsICIuIikgfHwgIXN0cmNtcChkZXN0LCAiLi4iKSkgewot
ICAgICAgICBlcnJvciA9IEVJTlZBTDsKLSAgICAgICAgZ290byBvdXRfZXJybm87Ci0gICAgfQot
Ci0gICAgaWYgKChlcnJvciA9IHRhc2tfY29udih0LCBvbGRwYXRoLCBWUkVBRCwgc3JjKSkgIT0g
MCkKLSAgICAgICAgZ290byBvdXRfZXJybm87Ci0KLSAgICBpZiAoKGVycm9yID0gdGFza19jb252
KHQsIG5ld3BhdGgsIFZXUklURSwgZGVzdCkpICE9IDApCi0gICAgICAgIGdvdG8gb3V0X2Vycm5v
OwotCi0gICAgZXJyb3IgPSBzeXNfcmVuYW1lKHNyYywgZGVzdCk7Ci0gICAgaWYgKGVycm9yKQot
ICAgICAgICBnb3RvIG91dF9lcnJubzsKLSAgICB0cmFjZV92ZnNfcmVuYW1lX3JldCgpOwotICAg
IHJldHVybiAwOwotICAgIG91dF9lcnJubzoKLSAgICB0cmFjZV92ZnNfcmVuYW1lX2VycihlcnJv
cik7Ci0gICAgZXJybm8gPSBlcnJvcjsKLSAgICByZXR1cm4gLTE7CisJdHJhY2VfdmZzX3JlbmFt
ZShvbGRwYXRoLCBuZXdwYXRoKTsKKwlzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKKwljaGFy
IHNyY1tQQVRIX01BWF07CisJY2hhciBkZXN0W1BBVEhfTUFYXTsKKwlpbnQgZXJyb3I7CisKKwll
cnJvciA9IEVOT0VOVDsKKwlpZiAobnVsbF9vcl9lbXB0eShvbGRwYXRoKSB8fCBudWxsX29yX2Vt
cHR5KG5ld3BhdGgpKQorCQlnb3RvIG91dF9lcnJubzsKKworCWdldF9sYXN0X2NvbXBvbmVudChv
bGRwYXRoLCBzcmMpOworCWlmICghc3RyY21wKHNyYywgIi4iKSB8fCAhc3RyY21wKHNyYywgIi4u
IikpIHsKKwkJZXJyb3IgPSBFSU5WQUw7CisJCWdvdG8gb3V0X2Vycm5vOworCX0KKworCWdldF9s
YXN0X2NvbXBvbmVudChuZXdwYXRoLCBkZXN0KTsKKwlpZiAoIXN0cmNtcChkZXN0LCAiLiIpIHx8
ICFzdHJjbXAoZGVzdCwgIi4uIikpIHsKKwkJZXJyb3IgPSBFSU5WQUw7CisJCWdvdG8gb3V0X2Vy
cm5vOworCX0KKworCWlmICgoZXJyb3IgPSB0YXNrX2NvbnYodCwgb2xkcGF0aCwgVlJFQUQsIHNy
YykpICE9IDApCisJCWdvdG8gb3V0X2Vycm5vOworCisJaWYgKChlcnJvciA9IHRhc2tfY29udih0
LCBuZXdwYXRoLCBWV1JJVEUsIGRlc3QpKSAhPSAwKQorCQlnb3RvIG91dF9lcnJubzsKKworCWVy
cm9yID0gc3lzX3JlbmFtZShzcmMsIGRlc3QpOworCWlmIChlcnJvcikKKwkJZ290byBvdXRfZXJy
bm87CisJdHJhY2VfdmZzX3JlbmFtZV9yZXQoKTsKKwlyZXR1cm4gMDsKKwlvdXRfZXJybm86CisJ
dHJhY2VfdmZzX3JlbmFtZV9lcnIoZXJyb3IpOworCWVycm5vID0gZXJyb3I7CisJcmV0dXJuIC0x
OwogfQogCiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19jaGRpciwgIlwiJXNcIiIsIGNvbnN0IGNoYXIq
KTsKQEAgLTk0MSw1OCArOTQxLDU4IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2NoZGlyX3JldCwg
IiIpOwogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfY2hkaXJfZXJyLCAiJWQiLCBpbnQpOwogCiBzdGF0
aWMgaW50IHJlcGxhY2VfY3dkKHN0cnVjdCB0YXNrICp0LCBzdHJ1Y3QgZmlsZSAqbmV3X2N3ZGZw
LAotICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmZ1bmN0aW9uPGludCAodm9pZCk+IGNoZGly
X2Z1bmMpCisJCQkJCSAgIHN0ZDo6ZnVuY3Rpb248aW50ICh2b2lkKT4gY2hkaXJfZnVuYykKIHsK
LSAgICBzdHJ1Y3QgZmlsZSAqb2xkID0gbnVsbHB0cjsKKwlzdHJ1Y3QgZmlsZSAqb2xkID0gbnVs
bHB0cjsKIAotICAgIGlmICghdCkgewotICAgICAgICByZXR1cm4gMDsKLSAgICB9CisJaWYgKCF0
KSB7CisJCXJldHVybiAwOworCX0KIAotICAgIGlmICh0LT50X2N3ZGZwKSB7Ci0gICAgICAgIG9s
ZCA9IHQtPnRfY3dkZnA7Ci0gICAgfQorCWlmICh0LT50X2N3ZGZwKSB7CisJCW9sZCA9IHQtPnRf
Y3dkZnA7CisJfQogCi0gICAgLyogRG8gdGhlIGFjdHVhbCBjaGRpciBvcGVyYXRpb24gaGVyZSAq
LwotICAgIGludCBlcnJvciA9IGNoZGlyX2Z1bmMoKTsKKwkvKiBEbyB0aGUgYWN0dWFsIGNoZGly
IG9wZXJhdGlvbiBoZXJlICovCisJaW50IGVycm9yID0gY2hkaXJfZnVuYygpOwogCi0gICAgdC0+
dF9jd2RmcCA9IG5ld19jd2RmcDsKLSAgICBpZiAob2xkKSB7Ci0gICAgICAgIGZkcm9wKG9sZCk7
Ci0gICAgfQorCXQtPnRfY3dkZnAgPSBuZXdfY3dkZnA7CisJaWYgKG9sZCkgeworCQlmZHJvcChv
bGQpOworCX0KIAotICAgIHJldHVybiBlcnJvcjsKKwlyZXR1cm4gZXJyb3I7CiB9CiAKIGludCBj
aGRpcihjb25zdCBjaGFyICpwYXRobmFtZSkKIHsKLSAgICB0cmFjZV92ZnNfY2hkaXIocGF0aG5h
bWUpOwotICAgIHN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOwotICAgIGNoYXIgcGF0aFtQQVRI
X01BWF07Ci0gICAgc3RydWN0IGZpbGUgKmZwOwotICAgIGludCBlcnJvcjsKKwl0cmFjZV92ZnNf
Y2hkaXIocGF0aG5hbWUpOworCXN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOworCWNoYXIgcGF0
aFtQQVRIX01BWF07CisJc3RydWN0IGZpbGUgKmZwOworCWludCBlcnJvcjsKIAotICAgIGVycm9y
ID0gRU5PRU5UOwotICAgIGlmIChwYXRobmFtZSA9PSBudWxscHRyKQotICAgICAgICBnb3RvIG91
dF9lcnJubzsKKwllcnJvciA9IEVOT0VOVDsKKwlpZiAocGF0aG5hbWUgPT0gbnVsbHB0cikKKwkJ
Z290byBvdXRfZXJybm87CiAKLSAgICBpZiAoKGVycm9yID0gdGFza19jb252KHQsIHBhdGhuYW1l
LCBWUkVBRCwgcGF0aCkpICE9IDApCi0gICAgICAgIGdvdG8gb3V0X2Vycm5vOworCWlmICgoZXJy
b3IgPSB0YXNrX2NvbnYodCwgcGF0aG5hbWUsIFZSRUFELCBwYXRoKSkgIT0gMCkKKwkJZ290byBv
dXRfZXJybm87CiAKLSAgICAvKiBDaGVjayBpZiBkaXJlY3RvcnkgZXhpdHMgKi8KLSAgICBlcnJv
ciA9IHN5c19vcGVuKHBhdGgsIE9fRElSRUNUT1JZLCAwLCAmZnApOwotICAgIGlmIChlcnJvcikg
ewotICAgICAgICBnb3RvIG91dF9lcnJubzsKLSAgICB9CisJLyogQ2hlY2sgaWYgZGlyZWN0b3J5
IGV4aXRzICovCisJZXJyb3IgPSBzeXNfb3BlbihwYXRoLCBPX0RJUkVDVE9SWSwgMCwgJmZwKTsK
KwlpZiAoZXJyb3IpIHsKKwkJZ290byBvdXRfZXJybm87CisJfQogCi0gICAgcmVwbGFjZV9jd2Qo
dCwgZnAsIFsmXSgpIHsgc3RybGNweSh0LT50X2N3ZCwgcGF0aCwgc2l6ZW9mKHQtPnRfY3dkKSk7
IHJldHVybiAwOyB9KTsKKwlyZXBsYWNlX2N3ZCh0LCBmcCwgWyZdKCkgeyBzdHJsY3B5KHQtPnRf
Y3dkLCBwYXRoLCBzaXplb2YodC0+dF9jd2QpKTsgcmV0dXJuIDA7IH0pOwogCi0gICAgdHJhY2Vf
dmZzX2NoZGlyX3JldCgpOwotICAgIHJldHVybiAwOwotICAgIG91dF9lcnJubzoKLSAgICBlcnJu
byA9IGVycm9yOwotICAgIHRyYWNlX3Zmc19jaGRpcl9lcnIoZXJybm8pOwotICAgIHJldHVybiAt
MTsKKwl0cmFjZV92ZnNfY2hkaXJfcmV0KCk7CisJcmV0dXJuIDA7CisJb3V0X2Vycm5vOgorCWVy
cm5vID0gZXJyb3I7CisJdHJhY2VfdmZzX2NoZGlyX2VycihlcnJubyk7CisJcmV0dXJuIC0xOwog
fQogCiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19mY2hkaXIsICIlZCIsIGludCk7CkBAIC0xMDAxLDI4
ICsxMDAxLDI4IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2ZjaGRpcl9lcnIsICIlZCIsIGludCk7
CiAKIGludCBmY2hkaXIoaW50IGZkKQogewotICAgIHRyYWNlX3Zmc19mY2hkaXIoZmQpOwotICAg
IHN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOwotICAgIHN0cnVjdCBmaWxlICpmcDsKLSAgICBp
bnQgZXJyb3I7CisJdHJhY2VfdmZzX2ZjaGRpcihmZCk7CisJc3RydWN0IHRhc2sgKnQgPSBtYWlu
X3Rhc2s7CisJc3RydWN0IGZpbGUgKmZwOworCWludCBlcnJvcjsKIAotICAgIGVycm9yID0gZmdl
dChmZCwgJmZwKTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIGdvdG8gb3V0X2Vycm5vOworCWVy
cm9yID0gZmdldChmZCwgJmZwKTsKKwlpZiAoZXJyb3IpCisJCWdvdG8gb3V0X2Vycm5vOwogCi0g
ICAgZXJyb3IgPSByZXBsYWNlX2N3ZCh0LCBmcCwgWyZdKCkgeyByZXR1cm4gc3lzX2ZjaGRpcihm
cCwgdC0+dF9jd2QpOyB9KTsKLSAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgZmRyb3AoZnApOwot
ICAgICAgICBnb3RvIG91dF9lcnJubzsKLSAgICB9CisJZXJyb3IgPSByZXBsYWNlX2N3ZCh0LCBm
cCwgWyZdKCkgeyByZXR1cm4gc3lzX2ZjaGRpcihmcCwgdC0+dF9jd2QpOyB9KTsKKwlpZiAoZXJy
b3IpIHsKKwkJZmRyb3AoZnApOworCQlnb3RvIG91dF9lcnJubzsKKwl9CiAKLSAgICB0cmFjZV92
ZnNfZmNoZGlyX3JldCgpOwotICAgIHJldHVybiAwOworCXRyYWNlX3Zmc19mY2hkaXJfcmV0KCk7
CisJcmV0dXJuIDA7CiAKLSAgICBvdXRfZXJybm86Ci0gICAgdHJhY2VfdmZzX2ZjaGRpcl9lcnIo
ZXJyb3IpOwotICAgIGVycm5vID0gZXJyb3I7Ci0gICAgcmV0dXJuIC0xOworCW91dF9lcnJubzoK
Kwl0cmFjZV92ZnNfZmNoZGlyX2VycihlcnJvcik7CisJZXJybm8gPSBlcnJvcjsKKwlyZXR1cm4g
LTE7CiB9CiAKIFRSQUNFUE9JTlQodHJhY2VfdmZzX2xpbmssICJcIiVzXCIgXCIlc1wiIiwgY29u
c3QgY2hhciosIGNvbnN0IGNoYXIqKTsKQEAgLTEwMzEsMzAgKzEwMzEsMzAgQEAgVFJBQ0VQT0lO
VCh0cmFjZV92ZnNfbGlua19lcnIsICIlZCIsIGludCk7CiAKIGludCBsaW5rKGNvbnN0IGNoYXIg
Km9sZHBhdGgsIGNvbnN0IGNoYXIgKm5ld3BhdGgpCiB7Ci0gICAgc3RydWN0IHRhc2sgKnQgPSBt
YWluX3Rhc2s7Ci0gICAgY2hhciBwYXRoMVtQQVRIX01BWF07Ci0gICAgY2hhciBwYXRoMltQQVRI
X01BWF07Ci0gICAgaW50IGVycm9yOworCXN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOworCWNo
YXIgcGF0aDFbUEFUSF9NQVhdOworCWNoYXIgcGF0aDJbUEFUSF9NQVhdOworCWludCBlcnJvcjsK
IAotICAgIHRyYWNlX3Zmc19saW5rKG9sZHBhdGgsIG5ld3BhdGgpOworCXRyYWNlX3Zmc19saW5r
KG9sZHBhdGgsIG5ld3BhdGgpOwogCi0gICAgZXJyb3IgPSBFTk9FTlQ7Ci0gICAgaWYgKG9sZHBh
dGggPT0gbnVsbHB0ciB8fCBuZXdwYXRoID09IG51bGxwdHIpCi0gICAgICAgIGdvdG8gb3V0X2Vy
cm5vOwotICAgIGlmICgoZXJyb3IgPSB0YXNrX2NvbnYodCwgb2xkcGF0aCwgVldSSVRFLCBwYXRo
MSkpICE9IDApCi0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwotICAgIGlmICgoZXJyb3IgPSB0YXNr
X2NvbnYodCwgbmV3cGF0aCwgVldSSVRFLCBwYXRoMikpICE9IDApCi0gICAgICAgIGdvdG8gb3V0
X2Vycm5vOworCWVycm9yID0gRU5PRU5UOworCWlmIChvbGRwYXRoID09IG51bGxwdHIgfHwgbmV3
cGF0aCA9PSBudWxscHRyKQorCQlnb3RvIG91dF9lcnJubzsKKwlpZiAoKGVycm9yID0gdGFza19j
b252KHQsIG9sZHBhdGgsIFZXUklURSwgcGF0aDEpKSAhPSAwKQorCQlnb3RvIG91dF9lcnJubzsK
KwlpZiAoKGVycm9yID0gdGFza19jb252KHQsIG5ld3BhdGgsIFZXUklURSwgcGF0aDIpKSAhPSAw
KQorCQlnb3RvIG91dF9lcnJubzsKIAotICAgIGVycm9yID0gc3lzX2xpbmsocGF0aDEsIHBhdGgy
KTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwotICAgIHRyYWNlX3Zm
c19saW5rX3JldCgpOwotICAgIHJldHVybiAwOwotICAgIG91dF9lcnJubzoKLSAgICB0cmFjZV92
ZnNfbGlua19lcnIoZXJyb3IpOwotICAgIGVycm5vID0gZXJyb3I7Ci0gICAgcmV0dXJuIC0xOwor
CWVycm9yID0gc3lzX2xpbmsocGF0aDEsIHBhdGgyKTsKKwlpZiAoZXJyb3IpCisJCWdvdG8gb3V0
X2Vycm5vOworCXRyYWNlX3Zmc19saW5rX3JldCgpOworCXJldHVybiAwOworCW91dF9lcnJubzoK
Kwl0cmFjZV92ZnNfbGlua19lcnIoZXJyb3IpOworCWVycm5vID0gZXJyb3I7CisJcmV0dXJuIC0x
OwogfQogCiAKQEAgLTEwNjQsMjYgKzEwNjQsMjYgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfc3lt
bGlua19lcnIsICJlcnJubz0lZCIsIGludCk7CiAKIGludCBzeW1saW5rKGNvbnN0IGNoYXIgKm9s
ZHBhdGgsIGNvbnN0IGNoYXIgKm5ld3BhdGgpCiB7Ci0gICAgaW50IGVycm9yOworCWludCBlcnJv
cjsKIAotICAgIHRyYWNlX3Zmc19zeW1saW5rKG9sZHBhdGgsIG5ld3BhdGgpOworCXRyYWNlX3Zm
c19zeW1saW5rKG9sZHBhdGgsIG5ld3BhdGgpOwogCi0gICAgZXJyb3IgPSBFTk9FTlQ7Ci0gICAg
aWYgKG9sZHBhdGggPT0gbnVsbHB0ciB8fCBuZXdwYXRoID09IG51bGxwdHIpIHsKLSAgICAgICAg
ZXJybm8gPSBFTk9FTlQ7Ci0gICAgICAgIHRyYWNlX3Zmc19zeW1saW5rX2VycihlcnJvcik7Ci0g
ICAgICAgIHJldHVybiAoLTEpOwotICAgIH0KKwllcnJvciA9IEVOT0VOVDsKKwlpZiAob2xkcGF0
aCA9PSBudWxscHRyIHx8IG5ld3BhdGggPT0gbnVsbHB0cikgeworCQllcnJubyA9IEVOT0VOVDsK
KwkJdHJhY2VfdmZzX3N5bWxpbmtfZXJyKGVycm9yKTsKKwkJcmV0dXJuICgtMSk7CisJfQogCi0g
ICAgZXJyb3IgPSBzeXNfc3ltbGluayhvbGRwYXRoLCBuZXdwYXRoKTsKLSAgICBpZiAoZXJyb3Ip
IHsKLSAgICAgICAgZXJybm8gPSBlcnJvcjsKLSAgICAgICAgdHJhY2VfdmZzX3N5bWxpbmtfZXJy
KGVycm9yKTsKLSAgICAgICAgcmV0dXJuICgtMSk7Ci0gICAgfQorCWVycm9yID0gc3lzX3N5bWxp
bmsob2xkcGF0aCwgbmV3cGF0aCk7CisJaWYgKGVycm9yKSB7CisJCWVycm5vID0gZXJyb3I7CisJ
CXRyYWNlX3Zmc19zeW1saW5rX2VycihlcnJvcik7CisJCXJldHVybiAoLTEpOworCX0KIAotICAg
IHRyYWNlX3Zmc19zeW1saW5rX3JldCgpOwotICAgIHJldHVybiAwOworCXRyYWNlX3Zmc19zeW1s
aW5rX3JldCgpOworCXJldHVybiAwOwogfQogCiBUUkFDRVBPSU5UKHRyYWNlX3Zmc191bmxpbmss
ICJcIiVzXCIiLCBjb25zdCBjaGFyKik7CkBAIC0xMDkyLDI2ICsxMDkyLDI2IEBAIFRSQUNFUE9J
TlQodHJhY2VfdmZzX3VubGlua19lcnIsICIlZCIsIGludCk7CiAKIGludCB1bmxpbmsoY29uc3Qg
Y2hhciAqcGF0aG5hbWUpCiB7Ci0gICAgdHJhY2VfdmZzX3VubGluayhwYXRobmFtZSk7Ci0gICAg
c3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7Ci0gICAgY2hhciBwYXRoW1BBVEhfTUFYXTsKLSAg
ICBpbnQgZXJyb3I7CisJdHJhY2VfdmZzX3VubGluayhwYXRobmFtZSk7CisJc3RydWN0IHRhc2sg
KnQgPSBtYWluX3Rhc2s7CisJY2hhciBwYXRoW1BBVEhfTUFYXTsKKwlpbnQgZXJyb3I7CiAKLSAg
ICBlcnJvciA9IEVOT0VOVDsKLSAgICBpZiAocGF0aG5hbWUgPT0gbnVsbHB0cikKLSAgICAgICAg
Z290byBvdXRfZXJybm87Ci0gICAgaWYgKChlcnJvciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwg
VldSSVRFLCBwYXRoKSkgIT0gMCkKLSAgICAgICAgZ290byBvdXRfZXJybm87CisJZXJyb3IgPSBF
Tk9FTlQ7CisJaWYgKHBhdGhuYW1lID09IG51bGxwdHIpCisJCWdvdG8gb3V0X2Vycm5vOworCWlm
ICgoZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5hbWUsIFZXUklURSwgcGF0aCkpICE9IDApCisJ
CWdvdG8gb3V0X2Vycm5vOwogCi0gICAgZXJyb3IgPSBzeXNfdW5saW5rKHBhdGgpOwotICAgIGlm
IChlcnJvcikKLSAgICAgICAgZ290byBvdXRfZXJybm87Ci0gICAgdHJhY2VfdmZzX3VubGlua19y
ZXQoKTsKLSAgICByZXR1cm4gMDsKLSAgICBvdXRfZXJybm86Ci0gICAgdHJhY2VfdmZzX3VubGlu
a19lcnIoZXJyb3IpOwotICAgIGVycm5vID0gZXJyb3I7Ci0gICAgcmV0dXJuIC0xOworCWVycm9y
ID0gc3lzX3VubGluayhwYXRoKTsKKwlpZiAoZXJyb3IpCisJCWdvdG8gb3V0X2Vycm5vOworCXRy
YWNlX3Zmc191bmxpbmtfcmV0KCk7CisJcmV0dXJuIDA7CisJb3V0X2Vycm5vOgorCXRyYWNlX3Zm
c191bmxpbmtfZXJyKGVycm9yKTsKKwllcnJubyA9IGVycm9yOworCXJldHVybiAtMTsKIH0KIAog
VFJBQ0VQT0lOVCh0cmFjZV92ZnNfc3RhdCwgIlwiJXNcIiAlcCIsIGNvbnN0IGNoYXIqLCBzdHJ1
Y3Qgc3RhdCopOwpAQCAtMTEyMSwzMyArMTEyMSwzMyBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19z
dGF0X2VyciwgIiVkIiwgaW50KTsKIGV4dGVybiAiQyIKIGludCBfX3hzdGF0KGludCB2ZXIsIGNv
bnN0IGNoYXIgKnBhdGhuYW1lLCBzdHJ1Y3Qgc3RhdCAqc3QpCiB7Ci0gICAgc3RydWN0IHRhc2sg
KnQgPSBtYWluX3Rhc2s7Ci0gICAgY2hhciBwYXRoW1BBVEhfTUFYXTsKLSAgICBpbnQgZXJyb3I7
CisJc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7CisJY2hhciBwYXRoW1BBVEhfTUFYXTsKKwlp
bnQgZXJyb3I7CiAKLSAgICB0cmFjZV92ZnNfc3RhdChwYXRobmFtZSwgc3QpOworCXRyYWNlX3Zm
c19zdGF0KHBhdGhuYW1lLCBzdCk7CiAKLSAgICBlcnJvciA9IHRhc2tfY29udih0LCBwYXRobmFt
ZSwgMCwgcGF0aCk7Ci0gICAgaWYgKGVycm9yKQotICAgICAgICBnb3RvIG91dF9lcnJubzsKKwll
cnJvciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwgMCwgcGF0aCk7CisJaWYgKGVycm9yKQorCQln
b3RvIG91dF9lcnJubzsKIAotICAgIGVycm9yID0gc3lzX3N0YXQocGF0aCwgc3QpOwotICAgIGlm
IChlcnJvcikKLSAgICAgICAgZ290byBvdXRfZXJybm87Ci0gICAgdHJhY2VfdmZzX3N0YXRfcmV0
KCk7Ci0gICAgcmV0dXJuIDA7CisJZXJyb3IgPSBzeXNfc3RhdChwYXRoLCBzdCk7CisJaWYgKGVy
cm9yKQorCQlnb3RvIG91dF9lcnJubzsKKwl0cmFjZV92ZnNfc3RhdF9yZXQoKTsKKwlyZXR1cm4g
MDsKIAotICAgIG91dF9lcnJubzoKLSAgICB0cmFjZV92ZnNfc3RhdF9lcnIoZXJyb3IpOwotICAg
IGVycm5vID0gZXJyb3I7Ci0gICAgcmV0dXJuIC0xOworCW91dF9lcnJubzoKKwl0cmFjZV92ZnNf
c3RhdF9lcnIoZXJyb3IpOworCWVycm5vID0gZXJyb3I7CisJcmV0dXJuIC0xOwogfQogCiBMRlM2
NChfX3hzdGF0KTsKIAogaW50IHN0YXQoY29uc3QgY2hhciAqcGF0aG5hbWUsIHN0cnVjdCBzdGF0
ICpzdCkKIHsKLSAgICByZXR1cm4gX194c3RhdCgxLCBwYXRobmFtZSwgc3QpOworCXJldHVybiBf
X3hzdGF0KDEsIHBhdGhuYW1lLCBzdCk7CiB9CiAKIExGUzY0KHN0YXQpOwpAQCAtMTE1OCwzNSAr
MTE1OCwzNSBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19sc3RhdF9lcnIsICJlcnJubz0lZCIsIGlu
dCk7CiBleHRlcm4gIkMiCiBpbnQgX19seHN0YXQoaW50IHZlciwgY29uc3QgY2hhciAqcGF0aG5h
bWUsIHN0cnVjdCBzdGF0ICpzdCkKIHsKLSAgICBzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsK
LSAgICBjaGFyIHBhdGhbUEFUSF9NQVhdOwotICAgIGludCBlcnJvcjsKKwlzdHJ1Y3QgdGFzayAq
dCA9IG1haW5fdGFzazsKKwljaGFyIHBhdGhbUEFUSF9NQVhdOworCWludCBlcnJvcjsKIAotICAg
IHRyYWNlX3Zmc19sc3RhdChwYXRobmFtZSwgc3QpOworCXRyYWNlX3Zmc19sc3RhdChwYXRobmFt
ZSwgc3QpOwogCi0gICAgZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5hbWUsIDAsIHBhdGgpOwot
ICAgIGlmIChlcnJvcikgewotICAgICAgICBlcnJubyA9IGVycm9yOwotICAgICAgICB0cmFjZV92
ZnNfbHN0YXRfZXJyKGVycm9yKTsKLSAgICAgICAgcmV0dXJuICgtMSk7Ci0gICAgfQorCWVycm9y
ID0gdGFza19jb252KHQsIHBhdGhuYW1lLCAwLCBwYXRoKTsKKwlpZiAoZXJyb3IpIHsKKwkJZXJy
bm8gPSBlcnJvcjsKKwkJdHJhY2VfdmZzX2xzdGF0X2VycihlcnJvcik7CisJCXJldHVybiAoLTEp
OworCX0KIAotICAgIGVycm9yID0gc3lzX2xzdGF0KHBhdGgsIHN0KTsKLSAgICBpZiAoZXJyb3Ip
IHsKLSAgICAgICAgZXJybm8gPSBlcnJvcjsKLSAgICAgICAgdHJhY2VfdmZzX2xzdGF0X2Vycihl
cnJvcik7Ci0gICAgICAgIHJldHVybiAoLTEpOwotICAgIH0KKwllcnJvciA9IHN5c19sc3RhdChw
YXRoLCBzdCk7CisJaWYgKGVycm9yKSB7CisJCWVycm5vID0gZXJyb3I7CisJCXRyYWNlX3Zmc19s
c3RhdF9lcnIoZXJyb3IpOworCQlyZXR1cm4gKC0xKTsKKwl9CiAKLSAgICB0cmFjZV92ZnNfbHN0
YXRfcmV0KCk7Ci0gICAgcmV0dXJuIDA7CisJdHJhY2VfdmZzX2xzdGF0X3JldCgpOworCXJldHVy
biAwOwogfQogCiBMRlM2NChfX2x4c3RhdCk7CiAKIGludCBsc3RhdChjb25zdCBjaGFyICpwYXRo
bmFtZSwgc3RydWN0IHN0YXQgKnN0KQogewotICAgIHJldHVybiBfX2x4c3RhdCgxLCBwYXRobmFt
ZSwgc3QpOworCXJldHVybiBfX2x4c3RhdCgxLCBwYXRobmFtZSwgc3QpOwogfQogCiBMRlM2NChs
c3RhdCk7CkBAIC0xMTk4LDI0ICsxMTk4LDI0IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX3N0YXRm
c19lcnIsICIlZCIsIGludCk7CiBleHRlcm4gIkMiCiBpbnQgX19zdGF0ZnMoY29uc3QgY2hhciAq
cGF0aG5hbWUsIHN0cnVjdCBzdGF0ZnMgKmJ1ZikKIHsKLSAgICB0cmFjZV92ZnNfc3RhdGZzKHBh
dGhuYW1lLCBidWYpOwotICAgIHN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOwotICAgIGNoYXIg
cGF0aFtQQVRIX01BWF07Ci0gICAgaW50IGVycm9yOwotCi0gICAgZXJyb3IgPSB0YXNrX2NvbnYo
dCwgcGF0aG5hbWUsIDAsIHBhdGgpOwotICAgIGlmIChlcnJvcikKLSAgICAgICAgZ290byBvdXRf
ZXJybm87Ci0KLSAgICBlcnJvciA9IHN5c19zdGF0ZnMocGF0aCwgYnVmKTsKLSAgICBpZiAoZXJy
b3IpCi0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwotICAgIHRyYWNlX3Zmc19zdGF0ZnNfcmV0KCk7
Ci0gICAgcmV0dXJuIDA7Ci0gICAgb3V0X2Vycm5vOgotICAgIHRyYWNlX3Zmc19zdGF0ZnNfZXJy
KGVycm9yKTsKLSAgICBlcnJubyA9IGVycm9yOwotICAgIHJldHVybiAtMTsKKwl0cmFjZV92ZnNf
c3RhdGZzKHBhdGhuYW1lLCBidWYpOworCXN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOworCWNo
YXIgcGF0aFtQQVRIX01BWF07CisJaW50IGVycm9yOworCisJZXJyb3IgPSB0YXNrX2NvbnYodCwg
cGF0aG5hbWUsIDAsIHBhdGgpOworCWlmIChlcnJvcikKKwkJZ290byBvdXRfZXJybm87CisKKwll
cnJvciA9IHN5c19zdGF0ZnMocGF0aCwgYnVmKTsKKwlpZiAoZXJyb3IpCisJCWdvdG8gb3V0X2Vy
cm5vOworCXRyYWNlX3Zmc19zdGF0ZnNfcmV0KCk7CisJcmV0dXJuIDA7CisJb3V0X2Vycm5vOgor
CXRyYWNlX3Zmc19zdGF0ZnNfZXJyKGVycm9yKTsKKwllcnJubyA9IGVycm9yOworCXJldHVybiAt
MTsKIH0KIHdlYWtfYWxpYXMoX19zdGF0ZnMsIHN0YXRmcyk7CiAKQEAgLTEyMjgsMjYgKzEyMjgs
MjYgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZnN0YXRmc19lcnIsICIlZCIsIGludCk7CiBleHRl
cm4gIkMiCiBpbnQgX19mc3RhdGZzKGludCBmZCwgc3RydWN0IHN0YXRmcyAqYnVmKQogewotICAg
IHN0cnVjdCBmaWxlICpmcDsKLSAgICBpbnQgZXJyb3I7CisJc3RydWN0IGZpbGUgKmZwOworCWlu
dCBlcnJvcjsKIAotICAgIHRyYWNlX3Zmc19mc3RhdGZzKGZkLCBidWYpOwotICAgIGVycm9yID0g
ZmdldChmZCwgJmZwKTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwor
CXRyYWNlX3Zmc19mc3RhdGZzKGZkLCBidWYpOworCWVycm9yID0gZmdldChmZCwgJmZwKTsKKwlp
ZiAoZXJyb3IpCisJCWdvdG8gb3V0X2Vycm5vOwogCi0gICAgZXJyb3IgPSBzeXNfZnN0YXRmcyhm
cCwgYnVmKTsKLSAgICBmZHJvcChmcCk7CisJZXJyb3IgPSBzeXNfZnN0YXRmcyhmcCwgYnVmKTsK
KwlmZHJvcChmcCk7CiAKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwot
ICAgIHRyYWNlX3Zmc19mc3RhdGZzX3JldCgpOwotICAgIHJldHVybiAwOworCWlmIChlcnJvcikK
KwkJZ290byBvdXRfZXJybm87CisJdHJhY2VfdmZzX2ZzdGF0ZnNfcmV0KCk7CisJcmV0dXJuIDA7
CiAKLSAgICBvdXRfZXJybm86Ci0gICAgdHJhY2VfdmZzX2ZzdGF0ZnNfZXJyKGVycm9yKTsKLSAg
ICBlcnJubyA9IGVycm9yOwotICAgIHJldHVybiAtMTsKKwlvdXRfZXJybm86CisJdHJhY2VfdmZz
X2ZzdGF0ZnNfZXJyKGVycm9yKTsKKwllcnJubyA9IGVycm9yOworCXJldHVybiAtMTsKIH0KIHdl
YWtfYWxpYXMoX19mc3RhdGZzLCBmc3RhdGZzKTsKIApAQCAtMTI1NiwyOCArMTI1NiwyOCBAQCBM
RlM2NChmc3RhdGZzKTsKIHN0YXRpYyBpbnQKIHN0YXRmc190b19zdGF0dmZzKHN0cnVjdCBzdGF0
dmZzICpkc3QsIHN0cnVjdCBzdGF0ZnMgKnNyYykKIHsKLSAgICBkc3QtPmZfYnNpemUgPSBzcmMt
PmZfYnNpemU7Ci0gICAgZHN0LT5mX2Zyc2l6ZSA9IHNyYy0+Zl9ic2l6ZTsKLSAgICBkc3QtPmZf
YmxvY2tzID0gc3JjLT5mX2Jsb2NrczsKLSAgICBkc3QtPmZfYmZyZWUgPSBzcmMtPmZfYmZyZWU7
Ci0gICAgZHN0LT5mX2JhdmFpbCA9IHNyYy0+Zl9iYXZhaWw7Ci0gICAgZHN0LT5mX2ZpbGVzID0g
c3JjLT5mX2ZpbGVzOwotICAgIGRzdC0+Zl9mZnJlZSA9IHNyYy0+Zl9mZnJlZTsKLSAgICBkc3Qt
PmZfZmF2YWlsID0gMDsKLSAgICBkc3QtPmZfZnNpZCA9IHNyYy0+Zl9mc2lkLl9fdmFsWzBdOwot
ICAgIGRzdC0+Zl9mbGFnID0gc3JjLT5mX2ZsYWdzOwotICAgIGRzdC0+Zl9uYW1lbWF4ID0gc3Jj
LT5mX25hbWVsZW47Ci0gICAgcmV0dXJuIDA7CisJZHN0LT5mX2JzaXplID0gc3JjLT5mX2JzaXpl
OworCWRzdC0+Zl9mcnNpemUgPSBzcmMtPmZfYnNpemU7CisJZHN0LT5mX2Jsb2NrcyA9IHNyYy0+
Zl9ibG9ja3M7CisJZHN0LT5mX2JmcmVlID0gc3JjLT5mX2JmcmVlOworCWRzdC0+Zl9iYXZhaWwg
PSBzcmMtPmZfYmF2YWlsOworCWRzdC0+Zl9maWxlcyA9IHNyYy0+Zl9maWxlczsKKwlkc3QtPmZf
ZmZyZWUgPSBzcmMtPmZfZmZyZWU7CisJZHN0LT5mX2ZhdmFpbCA9IDA7CisJZHN0LT5mX2ZzaWQg
PSBzcmMtPmZfZnNpZC5fX3ZhbFswXTsKKwlkc3QtPmZfZmxhZyA9IHNyYy0+Zl9mbGFnczsKKwlk
c3QtPmZfbmFtZW1heCA9IHNyYy0+Zl9uYW1lbGVuOworCXJldHVybiAwOwogfQogCiBpbnQKIHN0
YXR2ZnMoY29uc3QgY2hhciAqcGF0aG5hbWUsIHN0cnVjdCBzdGF0dmZzICpidWYpCiB7Ci0gICAg
c3RydWN0IHN0YXRmcyBzdDsKKwlzdHJ1Y3Qgc3RhdGZzIHN0OwogCi0gICAgaWYgKF9fc3RhdGZz
KHBhdGhuYW1lLCAmc3QpIDwgMCkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIHJldHVybiBzdGF0
ZnNfdG9fc3RhdHZmcyhidWYsICZzdCk7CisJaWYgKF9fc3RhdGZzKHBhdGhuYW1lLCAmc3QpIDwg
MCkKKwkJcmV0dXJuIC0xOworCXJldHVybiBzdGF0ZnNfdG9fc3RhdHZmcyhidWYsICZzdCk7CiB9
CiAKIExGUzY0KHN0YXR2ZnMpOwpAQCAtMTI4NSwxMSArMTI4NSwxMSBAQCBMRlM2NChzdGF0dmZz
KTsKIGludAogZnN0YXR2ZnMoaW50IGZkLCBzdHJ1Y3Qgc3RhdHZmcyAqYnVmKQogewotICAgIHN0
cnVjdCBzdGF0ZnMgc3Q7CisJc3RydWN0IHN0YXRmcyBzdDsKIAotICAgIGlmIChfX2ZzdGF0ZnMo
ZmQsICZzdCkgPCAwKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgcmV0dXJuIHN0YXRmc190b19z
dGF0dmZzKGJ1ZiwgJnN0KTsKKwlpZiAoX19mc3RhdGZzKGZkLCAmc3QpIDwgMCkKKwkJcmV0dXJu
IC0xOworCXJldHVybiBzdGF0ZnNfdG9fc3RhdHZmcyhidWYsICZzdCk7CiB9CiAKIExGUzY0KGZz
dGF0dmZzKTsKQEAgLTEzMDEsMzkgKzEzMDEsMzkgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZ2V0
Y3dkX2VyciwgIiVkIiwgaW50KTsKIAogY2hhciAqZ2V0Y3dkKGNoYXIgKnBhdGgsIHNpemVfdCBz
aXplKQogewotICAgIHRyYWNlX3Zmc19nZXRjd2QocGF0aCwgc2l6ZSk7Ci0gICAgc3RydWN0IHRh
c2sgKnQgPSBtYWluX3Rhc2s7Ci0gICAgaW50IGxlbiA9IHN0cmxlbih0LT50X2N3ZCkgKyAxOwot
ICAgIGludCBlcnJvcjsKLQotICAgIGlmICghcGF0aCkgewotICAgICAgICBpZiAoIXNpemUpCi0g
ICAgICAgICAgICBzaXplID0gbGVuOwotICAgICAgICBwYXRoID0gKGNoYXIqKW1hbGxvYyhzaXpl
KTsKLSAgICAgICAgaWYgKCFwYXRoKSB7Ci0gICAgICAgICAgICBlcnJvciA9IEVOT01FTTsKLSAg
ICAgICAgICAgIGdvdG8gb3V0X2Vycm5vOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAg
ICAgaWYgKCFzaXplKSB7Ci0gICAgICAgICAgICBlcnJvciA9IEVJTlZBTDsKLSAgICAgICAgICAg
IGdvdG8gb3V0X2Vycm5vOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKHNpemUgPCBsZW4p
IHsKLSAgICAgICAgZXJyb3IgPSBFUkFOR0U7Ci0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwotICAg
IH0KLQotICAgIG1lbWNweShwYXRoLCB0LT50X2N3ZCwgbGVuKTsKLSAgICB0cmFjZV92ZnNfZ2V0
Y3dkX3JldChwYXRoKTsKLSAgICByZXR1cm4gcGF0aDsKLQotICAgIG91dF9lcnJubzoKLSAgICB0
cmFjZV92ZnNfZ2V0Y3dkX2VycihlcnJvcik7Ci0gICAgZXJybm8gPSBlcnJvcjsKLSAgICByZXR1
cm4gbnVsbHB0cjsKKwl0cmFjZV92ZnNfZ2V0Y3dkKHBhdGgsIHNpemUpOworCXN0cnVjdCB0YXNr
ICp0ID0gbWFpbl90YXNrOworCWludCBsZW4gPSBzdHJsZW4odC0+dF9jd2QpICsgMTsKKwlpbnQg
ZXJyb3I7CisKKwlpZiAoIXBhdGgpIHsKKwkJaWYgKCFzaXplKQorCQkJc2l6ZSA9IGxlbjsKKwkJ
cGF0aCA9IChjaGFyKiltYWxsb2Moc2l6ZSk7CisJCWlmICghcGF0aCkgeworCQkJZXJyb3IgPSBF
Tk9NRU07CisJCQlnb3RvIG91dF9lcnJubzsKKwkJfQorCX0gZWxzZSB7CisJCWlmICghc2l6ZSkg
eworCQkJZXJyb3IgPSBFSU5WQUw7CisJCQlnb3RvIG91dF9lcnJubzsKKwkJfQorCX0KKworCWlm
IChzaXplIDwgbGVuKSB7CisJCWVycm9yID0gRVJBTkdFOworCQlnb3RvIG91dF9lcnJubzsKKwl9
CisKKwltZW1jcHkocGF0aCwgdC0+dF9jd2QsIGxlbik7CisJdHJhY2VfdmZzX2dldGN3ZF9yZXQo
cGF0aCk7CisJcmV0dXJuIHBhdGg7CisKKwlvdXRfZXJybm86CisJdHJhY2VfdmZzX2dldGN3ZF9l
cnIoZXJyb3IpOworCWVycm5vID0gZXJyb3I7CisJcmV0dXJuIG51bGxwdHI7CiB9CiAKIFRSQUNF
UE9JTlQodHJhY2VfdmZzX2R1cCwgIiVkIiwgaW50KTsKQEAgLTEzNDQsMjkgKzEzNDQsMjkgQEAg
VFJBQ0VQT0lOVCh0cmFjZV92ZnNfZHVwX2VyciwgIiVkIiwgaW50KTsKICAqLwogaW50IGR1cChp
bnQgb2xkZmQpCiB7Ci0gICAgc3RydWN0IGZpbGUgKmZwOwotICAgIGludCBuZXdmZDsKLSAgICBp
bnQgZXJyb3I7CisJc3RydWN0IGZpbGUgKmZwOworCWludCBuZXdmZDsKKwlpbnQgZXJyb3I7CiAK
LSAgICB0cmFjZV92ZnNfZHVwKG9sZGZkKTsKLSAgICBlcnJvciA9IGZnZXQob2xkZmQsICZmcCk7
Ci0gICAgaWYgKGVycm9yKQotICAgICAgICBnb3RvIG91dF9lcnJubzsKKwl0cmFjZV92ZnNfZHVw
KG9sZGZkKTsKKwllcnJvciA9IGZnZXQob2xkZmQsICZmcCk7CisJaWYgKGVycm9yKQorCQlnb3Rv
IG91dF9lcnJubzsKIAotICAgIGVycm9yID0gZmRhbGxvYyhmcCwgJm5ld2ZkKTsKLSAgICBpZiAo
ZXJyb3IpCi0gICAgICAgIGdvdG8gb3V0X2Zkcm9wOworCWVycm9yID0gZmRhbGxvYyhmcCwgJm5l
d2ZkKTsKKwlpZiAoZXJyb3IpCisJCWdvdG8gb3V0X2Zkcm9wOwogCi0gICAgZmRyb3AoZnApOwot
ICAgIHRyYWNlX3Zmc19kdXBfcmV0KG5ld2ZkKTsKLSAgICByZXR1cm4gbmV3ZmQ7CisJZmRyb3Ao
ZnApOworCXRyYWNlX3Zmc19kdXBfcmV0KG5ld2ZkKTsKKwlyZXR1cm4gbmV3ZmQ7CiAKLSAgICBv
dXRfZmRyb3A6Ci0gICAgZmRyb3AoZnApOwotICAgIG91dF9lcnJubzoKLSAgICB0cmFjZV92ZnNf
ZHVwX2VycihlcnJvcik7Ci0gICAgZXJybm8gPSBlcnJvcjsKLSAgICByZXR1cm4gLTE7CisJb3V0
X2Zkcm9wOgorCWZkcm9wKGZwKTsKKwlvdXRfZXJybm86CisJdHJhY2VfdmZzX2R1cF9lcnIoZXJy
b3IpOworCWVycm5vID0gZXJyb3I7CisJcmV0dXJuIC0xOwogfQogCiBUUkFDRVBPSU5UKHRyYWNl
X3Zmc19kdXAzLCAiJWQgJWQgMHgleCIsIGludCwgaW50LCBpbnQpOwpAQCAtMTM3Nyw1MCArMTM3
Nyw1MCBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19kdXAzX2VyciwgIiVkIiwgaW50KTsKICAqLwog
aW50IGR1cDMoaW50IG9sZGZkLCBpbnQgbmV3ZmQsIGludCBmbGFncykKIHsKLSAgICBzdHJ1Y3Qg
ZmlsZSAqZnA7Ci0gICAgaW50IGVycm9yOwotCi0gICAgdHJhY2VfdmZzX2R1cDMob2xkZmQsIG5l
d2ZkLCBmbGFncyk7Ci0gICAgLyoKLSAgICAgKiBEb24ndCBhbGxvdyBhbnkgYXJndW1lbnQgYnV0
IE9fQ0xPRVhFQy4gIEJ1dCB3ZSBldmVuIGlnbm9yZQotICAgICAqIHRoYXQgYXMgd2UgZG9uJ3Qg
c3VwcG9ydCBleGVjKCkgYW5kIHRodXMgZG9uJ3QgY2FyZS4KLSAgICAgKi8KLSAgICBpZiAoKGZs
YWdzICYgfk9fQ0xPRVhFQykgIT0gMCkgewotICAgICAgICBlcnJvciA9IEVJTlZBTDsKLSAgICAg
ICAgZ290byBvdXRfZXJybm87Ci0gICAgfQorCXN0cnVjdCBmaWxlICpmcDsKKwlpbnQgZXJyb3I7
CisKKwl0cmFjZV92ZnNfZHVwMyhvbGRmZCwgbmV3ZmQsIGZsYWdzKTsKKwkvKgorCSAqIERvbid0
IGFsbG93IGFueSBhcmd1bWVudCBidXQgT19DTE9FWEVDLiAgQnV0IHdlIGV2ZW4gaWdub3JlCisJ
ICogdGhhdCBhcyB3ZSBkb24ndCBzdXBwb3J0IGV4ZWMoKSBhbmQgdGh1cyBkb24ndCBjYXJlLgor
CSAqLworCWlmICgoZmxhZ3MgJiB+T19DTE9FWEVDKSAhPSAwKSB7CisJCWVycm9yID0gRUlOVkFM
OworCQlnb3RvIG91dF9lcnJubzsKKwl9CiAKLSAgICBpZiAob2xkZmQgPT0gbmV3ZmQpIHsKLSAg
ICAgICAgZXJyb3IgPSBFSU5WQUw7Ci0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwotICAgIH0KKwlp
ZiAob2xkZmQgPT0gbmV3ZmQpIHsKKwkJZXJyb3IgPSBFSU5WQUw7CisJCWdvdG8gb3V0X2Vycm5v
OworCX0KIAotICAgIGVycm9yID0gZmdldChvbGRmZCwgJmZwKTsKLSAgICBpZiAoZXJyb3IpCi0g
ICAgICAgIGdvdG8gb3V0X2Vycm5vOworCWVycm9yID0gZmdldChvbGRmZCwgJmZwKTsKKwlpZiAo
ZXJyb3IpCisJCWdvdG8gb3V0X2Vycm5vOwogCi0gICAgZXJyb3IgPSBmZHNldChuZXdmZCwgZnAp
OwotICAgIGlmIChlcnJvcikgewotICAgICAgICBmZHJvcChmcCk7Ci0gICAgICAgIGdvdG8gb3V0
X2Vycm5vOwotICAgIH0KKwllcnJvciA9IGZkc2V0KG5ld2ZkLCBmcCk7CisJaWYgKGVycm9yKSB7
CisJCWZkcm9wKGZwKTsKKwkJZ290byBvdXRfZXJybm87CisJfQogCi0gICAgZmRyb3AoZnApOwot
ICAgIHRyYWNlX3Zmc19kdXAzX3JldChuZXdmZCk7Ci0gICAgcmV0dXJuIG5ld2ZkOworCWZkcm9w
KGZwKTsKKwl0cmFjZV92ZnNfZHVwM19yZXQobmV3ZmQpOworCXJldHVybiBuZXdmZDsKIAotICAg
IG91dF9lcnJubzoKLSAgICB0cmFjZV92ZnNfZHVwM19lcnIoZXJyb3IpOwotICAgIGVycm5vID0g
ZXJyb3I7Ci0gICAgcmV0dXJuIC0xOworCW91dF9lcnJubzoKKwl0cmFjZV92ZnNfZHVwM19lcnIo
ZXJyb3IpOworCWVycm5vID0gZXJyb3I7CisJcmV0dXJuIC0xOwogfQogCiBpbnQgZHVwMihpbnQg
b2xkZmQsIGludCBuZXdmZCkKIHsKLSAgICBpZiAob2xkZmQgPT0gbmV3ZmQpCi0gICAgICAgIHJl
dHVybiBuZXdmZDsKKwlpZiAob2xkZmQgPT0gbmV3ZmQpCisJCXJldHVybiBuZXdmZDsKIAotICAg
IHJldHVybiBkdXAzKG9sZGZkLCBuZXdmZCwgMCk7CisJcmV0dXJuIGR1cDMob2xkZmQsIG5ld2Zk
LCAwKTsKIH0KIAogLyoKQEAgLTE0MzUsODMgKzE0MzUsODMgQEAgVFJBQ0VQT0lOVCh0cmFjZV92
ZnNfZmNudGxfZXJyLCAiJWQiLCBpbnQpOwogZXh0ZXJuICJDIgogaW50IGZjbnRsKGludCBmZCwg
aW50IGNtZCwgaW50IGFyZykKIHsKLSAgICBzdHJ1Y3QgZmlsZSAqZnA7Ci0gICAgaW50IHJldCA9
IDAsIGVycm9yOwotICAgIGludCB0bXA7Ci0KLSAgICB0cmFjZV92ZnNfZmNudGwoZmQsIGNtZCwg
YXJnKTsKLSAgICBlcnJvciA9IGZnZXQoZmQsICZmcCk7Ci0gICAgaWYgKGVycm9yKQotICAgICAg
ICBnb3RvIG91dF9lcnJubzsKLQotICAgIC8vIEFuIGltcG9ydGFudCBub3RlIGFib3V0IG91ciBo
YW5kbGluZyBvZiBGRF9DTE9FWEVDIC8gT19DTE9FWEVDOgotICAgIC8vIGNsb3NlLW9uLWV4ZWMg
c2hvdWxkbid0IGhhdmUgYmVlbiBhIGZpbGUgZmxhZyAoZnAtPmZfZmxhZ3MpIC0gaXQgaXMgYQot
ICAgIC8vIGZpbGUgZGVzY3JpcHRvciBmbGFnLCBtZWFuaW5nIHRoYXQgdGhhdCB0d28gZHVwKCll
ZCBmaWxlIGRlc2NyaXB0b3JzCi0gICAgLy8gY291bGQgaGF2ZSBkaWZmZXJlbnQgdmFsdWVzIGZv
ciBGRF9DTE9FWEVDLiBPdXIgY3VycmVudCBpbXBsZW1lbnRhdGlvbgotICAgIC8vICp3cm9uZ2x5
KiBtYWtlcyBjbG9zZS1vbi1leGVjIGFuIGZfZmxhZyAodXNpbmcgdGhlIGJpdCBPX0NMT0VYRUMp
LgotICAgIC8vIFRoZXJlIGlzIGxpdHRsZSBwcmFjdGljYWwgZGlmZmVyZW5jZSwgdGhvdWdoLCBi
ZWNhdXNlIHRoaXMgZmxhZyBpcwotICAgIC8vIGlnbm9yZWQgaW4gT1N2IGFueXdheSwgYXMgaXQg
ZG9lc24ndCBzdXBwb3J0IGV4ZWMoKS4KLSAgICBzd2l0Y2ggKGNtZCkgewotICAgIGNhc2UgRl9E
VVBGRDoKLSAgICAgICAgZXJyb3IgPSBfZmRhbGxvYyhmcCwgJnJldCwgYXJnKTsKLSAgICAgICAg
aWYgKGVycm9yKQotICAgICAgICAgICAgZ290byBvdXRfZXJybm87Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgRl9HRVRGRDoKLSAgICAgICAgcmV0ID0gKGZwLT5mX2ZsYWdzICYgT19DTE9FWEVD
KSA/IEZEX0NMT0VYRUMgOiAwOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZfU0VURkQ6Ci0g
ICAgICAgIEZEX0xPQ0soZnApOwotICAgICAgICBmcC0+Zl9mbGFncyA9IChmcC0+Zl9mbGFncyAm
IH5PX0NMT0VYRUMpIHwKLSAgICAgICAgICAgICAgICAoKGFyZyAmIEZEX0NMT0VYRUMpID8gT19D
TE9FWEVDIDogMCk7Ci0gICAgICAgIEZEX1VOTE9DSyhmcCk7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgRl9HRVRGTDoKLSAgICAgICAgLy8gQXMgZXhwbGFpbmVkIGFib3ZlLCB0aGUgT19DTE9F
WEVDIHNob3VsZCBoYXZlIGJlZW4gaW4gZl9mbGFncywKLSAgICAgICAgLy8gYW5kIHNob3VsZG4n
dCBiZSByZXR1cm5lZC4gTGludXggYWx3YXlzIHJldHVybnMgMDEwMDAwMCAoInRoZQotICAgICAg
ICAvLyBmbGFnIGZvcm1lcmx5IGtub3duIGFzIE9fTEFSR0VGSUxFKSBzbyBsZXQncyBkbyBpdCB0
b28uCi0gICAgICAgIHJldCA9IChvZmxhZ3MoZnAtPmZfZmxhZ3MpICYgfk9fQ0xPRVhFQykgfCAw
MTAwMDAwOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZfU0VURkw6Ci0gICAgICAgIEZEX0xP
Q0soZnApOwotICAgICAgICBmcC0+Zl9mbGFncyA9IGZmbGFncygob2ZsYWdzKGZwLT5mX2ZsYWdz
KSAmIH5TRVRGTCkgfAotICAgICAgICAgICAgICAgIChhcmcgJiBTRVRGTCkpOwotICAgICAgICBG
RF9VTkxPQ0soZnApOwotCi0gICAgICAgIC8qIFN5bmMgbm9uYmxvY2tpbmcvYXN5bmMgc3RhdGUg
d2l0aCBmaWxlIGZsYWdzICovCi0gICAgICAgIHRtcCA9IGZwLT5mX2ZsYWdzICYgRk5PTkJMT0NL
OwotICAgICAgICBmcC0+aW9jdGwoRklPTkJJTywgJnRtcCk7Ci0gICAgICAgIHRtcCA9IGZwLT5m
X2ZsYWdzICYgRkFTWU5DOwotICAgICAgICBmcC0+aW9jdGwoRklPQVNZTkMsICZ0bXApOwotCi0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgRl9TRVRMSzoKLSAgICAgICAgV0FSTl9PTkNFKCJmY250
bChGX1NFVExLKSBzdHViYmVkXG4iKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGX0dFVExL
OgotICAgICAgICBXQVJOX09OQ0UoImZjbnRsKEZfR0VUTEspIHN0dWJiZWRcbiIpOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEZfU0VUTEtXOgotICAgICAgICBXQVJOX09OQ0UoImZjbnRsKEZf
U0VUTEtXKSBzdHViYmVkXG4iKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGX1NFVE9XTjoK
LSAgICAgICAgV0FSTl9PTkNFKCJmY250bChGX1NFVE9XTikgc3R1YmJlZFxuIik7Ci0gICAgICAg
IGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIGtwcmludGYoInVuc3VwcG9ydGVkIGZjbnRs
IGNtZCAweCV4XG4iLCBjbWQpOwotICAgICAgICBlcnJvciA9IEVJTlZBTDsKLSAgICB9Ci0KLSAg
ICBmZHJvcChmcCk7Ci0gICAgaWYgKGVycm9yKQotICAgICAgICBnb3RvIG91dF9lcnJubzsKLSAg
ICB0cmFjZV92ZnNfZmNudGxfcmV0KHJldCk7Ci0gICAgcmV0dXJuIHJldDsKLQotICAgIG91dF9l
cnJubzoKLSAgICB0cmFjZV92ZnNfZmNudGxfZXJyKGVycm9yKTsKLSAgICBlcnJubyA9IGVycm9y
OwotICAgIHJldHVybiAtMTsKKwlzdHJ1Y3QgZmlsZSAqZnA7CisJaW50IHJldCA9IDAsIGVycm9y
OworCWludCB0bXA7CisKKwl0cmFjZV92ZnNfZmNudGwoZmQsIGNtZCwgYXJnKTsKKwllcnJvciA9
IGZnZXQoZmQsICZmcCk7CisJaWYgKGVycm9yKQorCQlnb3RvIG91dF9lcnJubzsKKworCS8vIEFu
IGltcG9ydGFudCBub3RlIGFib3V0IG91ciBoYW5kbGluZyBvZiBGRF9DTE9FWEVDIC8gT19DTE9F
WEVDOgorCS8vIGNsb3NlLW9uLWV4ZWMgc2hvdWxkbid0IGhhdmUgYmVlbiBhIGZpbGUgZmxhZyAo
ZnAtPmZfZmxhZ3MpIC0gaXQgaXMgYQorCS8vIGZpbGUgZGVzY3JpcHRvciBmbGFnLCBtZWFuaW5n
IHRoYXQgdGhhdCB0d28gZHVwKCllZCBmaWxlIGRlc2NyaXB0b3JzCisJLy8gY291bGQgaGF2ZSBk
aWZmZXJlbnQgdmFsdWVzIGZvciBGRF9DTE9FWEVDLiBPdXIgY3VycmVudCBpbXBsZW1lbnRhdGlv
bgorCS8vICp3cm9uZ2x5KiBtYWtlcyBjbG9zZS1vbi1leGVjIGFuIGZfZmxhZyAodXNpbmcgdGhl
IGJpdCBPX0NMT0VYRUMpLgorCS8vIFRoZXJlIGlzIGxpdHRsZSBwcmFjdGljYWwgZGlmZmVyZW5j
ZSwgdGhvdWdoLCBiZWNhdXNlIHRoaXMgZmxhZyBpcworCS8vIGlnbm9yZWQgaW4gT1N2IGFueXdh
eSwgYXMgaXQgZG9lc24ndCBzdXBwb3J0IGV4ZWMoKS4KKwlzd2l0Y2ggKGNtZCkgeworCWNhc2Ug
Rl9EVVBGRDoKKwkJZXJyb3IgPSBfZmRhbGxvYyhmcCwgJnJldCwgYXJnKTsKKwkJaWYgKGVycm9y
KQorCQkJZ290byBvdXRfZXJybm87CisJCWJyZWFrOworCWNhc2UgRl9HRVRGRDoKKwkJcmV0ID0g
KGZwLT5mX2ZsYWdzICYgT19DTE9FWEVDKSA/IEZEX0NMT0VYRUMgOiAwOworCQlicmVhazsKKwlj
YXNlIEZfU0VURkQ6CisJCUZEX0xPQ0soZnApOworCQlmcC0+Zl9mbGFncyA9IChmcC0+Zl9mbGFn
cyAmIH5PX0NMT0VYRUMpIHwKKwkJCQkoKGFyZyAmIEZEX0NMT0VYRUMpID8gT19DTE9FWEVDIDog
MCk7CisJCUZEX1VOTE9DSyhmcCk7CisJCWJyZWFrOworCWNhc2UgRl9HRVRGTDoKKwkJLy8gQXMg
ZXhwbGFpbmVkIGFib3ZlLCB0aGUgT19DTE9FWEVDIHNob3VsZCBoYXZlIGJlZW4gaW4gZl9mbGFn
cywKKwkJLy8gYW5kIHNob3VsZG4ndCBiZSByZXR1cm5lZC4gTGludXggYWx3YXlzIHJldHVybnMg
MDEwMDAwMCAoInRoZQorCQkvLyBmbGFnIGZvcm1lcmx5IGtub3duIGFzIE9fTEFSR0VGSUxFKSBz
byBsZXQncyBkbyBpdCB0b28uCisJCXJldCA9IChvZmxhZ3MoZnAtPmZfZmxhZ3MpICYgfk9fQ0xP
RVhFQykgfCAwMTAwMDAwOworCQlicmVhazsKKwljYXNlIEZfU0VURkw6CisJCUZEX0xPQ0soZnAp
OworCQlmcC0+Zl9mbGFncyA9IGZmbGFncygob2ZsYWdzKGZwLT5mX2ZsYWdzKSAmIH5TRVRGTCkg
fAorCQkJCShhcmcgJiBTRVRGTCkpOworCQlGRF9VTkxPQ0soZnApOworCisJCS8qIFN5bmMgbm9u
YmxvY2tpbmcvYXN5bmMgc3RhdGUgd2l0aCBmaWxlIGZsYWdzICovCisJCXRtcCA9IGZwLT5mX2Zs
YWdzICYgRk5PTkJMT0NLOworCQlmcC0+aW9jdGwoRklPTkJJTywgJnRtcCk7CisJCXRtcCA9IGZw
LT5mX2ZsYWdzICYgRkFTWU5DOworCQlmcC0+aW9jdGwoRklPQVNZTkMsICZ0bXApOworCisJCWJy
ZWFrOworCWNhc2UgRl9TRVRMSzoKKwkJV0FSTl9PTkNFKCJmY250bChGX1NFVExLKSBzdHViYmVk
XG4iKTsKKwkJYnJlYWs7CisJY2FzZSBGX0dFVExLOgorCQlXQVJOX09OQ0UoImZjbnRsKEZfR0VU
TEspIHN0dWJiZWRcbiIpOworCQlicmVhazsKKwljYXNlIEZfU0VUTEtXOgorCQlXQVJOX09OQ0Uo
ImZjbnRsKEZfU0VUTEtXKSBzdHViYmVkXG4iKTsKKwkJYnJlYWs7CisJY2FzZSBGX1NFVE9XTjoK
KwkJV0FSTl9PTkNFKCJmY250bChGX1NFVE9XTikgc3R1YmJlZFxuIik7CisJCWJyZWFrOworCWRl
ZmF1bHQ6CisJCWtwcmludGYoInVuc3VwcG9ydGVkIGZjbnRsIGNtZCAweCV4XG4iLCBjbWQpOwor
CQllcnJvciA9IEVJTlZBTDsKKwl9CisKKwlmZHJvcChmcCk7CisJaWYgKGVycm9yKQorCQlnb3Rv
IG91dF9lcnJubzsKKwl0cmFjZV92ZnNfZmNudGxfcmV0KHJldCk7CisJcmV0dXJuIHJldDsKKwor
CW91dF9lcnJubzoKKwl0cmFjZV92ZnNfZmNudGxfZXJyKGVycm9yKTsKKwllcnJubyA9IGVycm9y
OworCXJldHVybiAtMTsKIH0KIAogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfYWNjZXNzLCAiXCIlc1wi
IDAlMG8iLCBjb25zdCBjaGFyKiwgaW50KTsKQEAgLTE1MjMsNzIgKzE1MjMsNzIgQEAgVFJBQ0VQ
T0lOVCh0cmFjZV92ZnNfYWNjZXNzX2VyciwgIiVkIiwgaW50KTsKICAqLwogaW50IGFjY2Vzcyhj
b25zdCBjaGFyICpwYXRobmFtZSwgaW50IG1vZGUpCiB7Ci0gICAgdHJhY2VfdmZzX2FjY2Vzcyhw
YXRobmFtZSwgbW9kZSk7Ci0gICAgc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7Ci0gICAgY2hh
ciBwYXRoW1BBVEhfTUFYXTsKLSAgICBpbnQgYWNjLCBlcnJvciA9IDA7CisJdHJhY2VfdmZzX2Fj
Y2VzcyhwYXRobmFtZSwgbW9kZSk7CisJc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7CisJY2hh
ciBwYXRoW1BBVEhfTUFYXTsKKwlpbnQgYWNjLCBlcnJvciA9IDA7CiAKLSAgICBhY2MgPSAwOwot
ICAgIGlmIChtb2RlICYgUl9PSykKLSAgICAgICAgYWNjIHw9IFZSRUFEOwotICAgIGlmIChtb2Rl
ICYgV19PSykKLSAgICAgICAgYWNjIHw9IFZXUklURTsKKwlhY2MgPSAwOworCWlmIChtb2RlICYg
Ul9PSykKKwkJYWNjIHw9IFZSRUFEOworCWlmIChtb2RlICYgV19PSykKKwkJYWNjIHw9IFZXUklU
RTsKIAotICAgIGlmICgoZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5hbWUsIGFjYywgcGF0aCkp
ICE9IDApCi0gICAgICAgIGdvdG8gb3V0X2Vycm5vOworCWlmICgoZXJyb3IgPSB0YXNrX2NvbnYo
dCwgcGF0aG5hbWUsIGFjYywgcGF0aCkpICE9IDApCisJCWdvdG8gb3V0X2Vycm5vOwogCi0gICAg
ZXJyb3IgPSBzeXNfYWNjZXNzKHBhdGgsIG1vZGUpOwotICAgIGlmIChlcnJvcikKLSAgICAgICAg
Z290byBvdXRfZXJybm87Ci0gICAgdHJhY2VfdmZzX2FjY2Vzc19yZXQoKTsKLSAgICByZXR1cm4g
MDsKLSAgICBvdXRfZXJybm86Ci0gICAgZXJybm8gPSBlcnJvcjsKLSAgICB0cmFjZV92ZnNfYWNj
ZXNzX2VycihlcnJvcik7Ci0gICAgcmV0dXJuIC0xOworCWVycm9yID0gc3lzX2FjY2VzcyhwYXRo
LCBtb2RlKTsKKwlpZiAoZXJyb3IpCisJCWdvdG8gb3V0X2Vycm5vOworCXRyYWNlX3Zmc19hY2Nl
c3NfcmV0KCk7CisJcmV0dXJuIDA7CisJb3V0X2Vycm5vOgorCWVycm5vID0gZXJyb3I7CisJdHJh
Y2VfdmZzX2FjY2Vzc19lcnIoZXJyb3IpOworCXJldHVybiAtMTsKIH0KIAogaW50IGZhY2Nlc3Nh
dChpbnQgZGlyZmQsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBpbnQgbW9kZSwgaW50IGZsYWdzKQog
ewotICAgIGlmIChmbGFncyAmIEFUX1NZTUxJTktfTk9GT0xMT1cpIHsKLSAgICAgICAgVU5JTVBM
RU1FTlRFRCgiZmFjY2Vzc2F0KCkgd2l0aCBBVF9TWU1MSU5LX05PRk9MTE9XIik7Ci0gICAgfQor
CWlmIChmbGFncyAmIEFUX1NZTUxJTktfTk9GT0xMT1cpIHsKKwkJVU5JTVBMRU1FTlRFRCgiZmFj
Y2Vzc2F0KCkgd2l0aCBBVF9TWU1MSU5LX05PRk9MTE9XIik7CisJfQogCi0gICAgaWYgKHBhdGhu
YW1lWzBdID09ICcvJyB8fCBkaXJmZCA9PSBBVF9GRENXRCkgewotICAgICAgICByZXR1cm4gYWNj
ZXNzKHBhdGhuYW1lLCBtb2RlKTsKLSAgICB9CisJaWYgKHBhdGhuYW1lWzBdID09ICcvJyB8fCBk
aXJmZCA9PSBBVF9GRENXRCkgeworCQlyZXR1cm4gYWNjZXNzKHBhdGhuYW1lLCBtb2RlKTsKKwl9
CiAKLSAgICBzdHJ1Y3QgZmlsZSAqZnA7Ci0gICAgaW50IGVycm9yID0gZmdldChkaXJmZCwgJmZw
KTsKLSAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgZXJybm8gPSBlcnJvcjsKLSAgICAgICAgcmV0
dXJuIC0xOwotICAgIH0KKwlzdHJ1Y3QgZmlsZSAqZnA7CisJaW50IGVycm9yID0gZmdldChkaXJm
ZCwgJmZwKTsKKwlpZiAoZXJyb3IpIHsKKwkJZXJybm8gPSBlcnJvcjsKKwkJcmV0dXJuIC0xOwor
CX0KIAotICAgIHN0cnVjdCB2bm9kZSAqdnAgPSBmcC0+Zl9kZW50cnktPmRfdm5vZGU7Ci0gICAg
dm5fbG9jayh2cCk7CisJc3RydWN0IHZub2RlICp2cCA9IGZwLT5mX2RlbnRyeS0+ZF92bm9kZTsK
Kwl2bl9sb2NrKHZwKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxjaGFyIFtdPiB1cCAobmV3IGNo
YXJbUEFUSF9NQVhdKTsKLSAgICBjaGFyICpwID0gdXAuZ2V0KCk7CisJc3RkOjp1bmlxdWVfcHRy
PGNoYXIgW10+IHVwIChuZXcgY2hhcltQQVRIX01BWF0pOworCWNoYXIgKnAgPSB1cC5nZXQoKTsK
IAotICAgIC8qIGJ1aWxkIGFic29sdXRlIHBhdGggKi8KLSAgICBzdHJsY3B5KHAsIGZwLT5mX2Rl
bnRyeS0+ZF9tb3VudC0+bV9wYXRoLCBQQVRIX01BWCk7Ci0gICAgc3RybGNhdChwLCBmcC0+Zl9k
ZW50cnktPmRfcGF0aCwgUEFUSF9NQVgpOwotICAgIHN0cmxjYXQocCwgIi8iLCBQQVRIX01BWCk7
Ci0gICAgc3RybGNhdChwLCBwYXRobmFtZSwgUEFUSF9NQVgpOworCS8qIGJ1aWxkIGFic29sdXRl
IHBhdGggKi8KKwlzdHJsY3B5KHAsIGZwLT5mX2RlbnRyeS0+ZF9tb3VudC0+bV9wYXRoLCBQQVRI
X01BWCk7CisJc3RybGNhdChwLCBmcC0+Zl9kZW50cnktPmRfcGF0aCwgUEFUSF9NQVgpOworCXN0
cmxjYXQocCwgIi8iLCBQQVRIX01BWCk7CisJc3RybGNhdChwLCBwYXRobmFtZSwgUEFUSF9NQVgp
OwogCi0gICAgZXJyb3IgPSBhY2Nlc3MocCwgbW9kZSk7CisJZXJyb3IgPSBhY2Nlc3MocCwgbW9k
ZSk7CiAKLSAgICB2bl91bmxvY2sodnApOwotICAgIGZkcm9wKGZwKTsKKwl2bl91bmxvY2sodnAp
OworCWZkcm9wKGZwKTsKIAotICAgIHJldHVybiBlcnJvcjsKKwlyZXR1cm4gZXJyb3I7CiB9CiAK
IGV4dGVybiAiQyIgCiBpbnQgZXVpZGFjY2Vzcyhjb25zdCBjaGFyICpwYXRobmFtZSwgaW50IG1v
ZGUpCiB7Ci0gICAgcmV0dXJuIGFjY2VzcyhwYXRobmFtZSwgbW9kZSk7CisJcmV0dXJuIGFjY2Vz
cyhwYXRobmFtZSwgbW9kZSk7CiB9CiAKIHdlYWtfYWxpYXMoZXVpZGFjY2VzcyxlYWNjZXNzKTsK
QEAgLTE1OTgsNDIgKzE1OTgsNDIgQEAgc3RhdGljIGludAogZnNfcGlwZShzdHJ1Y3QgdGFzayAq
dCwgc3RydWN0IG1zZyAqbXNnKQogewogI2lmZGVmIENPTkZJR19GSUZPRlMKLSAgICBjaGFyIHBh
dGhbUEFUSF9NQVhdOwotICAgIGZpbGVfdCByZnAsIHdmcDsKLSAgICBpbnQgZXJyb3IsIHJmZCwg
d2ZkOwotCi0gICAgRFBSSU5URihWRlNEQl9DT1JFLCAoImZzX3BpcGVcbiIpKTsKLQotICAgIGlm
ICgocmZkID0gdGFza19uZXdmZCh0KSkgPT0gLTEpCi0gICAgICAgIHJldHVybiBFTUZJTEU7Ci0g
ICAgdC0+dF9vZmlsZVtyZmRdID0gKGZpbGVfdCkxOyAvKiB0ZW1wICovCi0KLSAgICBpZiAoKHdm
ZCA9IHRhc2tfbmV3ZmQodCkpID09IC0xKSB7Ci0gICAgICAgIHQtPnRfb2ZpbGVbcmZkXSA9IG51
bGxwdHI7Ci0gICAgICAgIHJldHVybiBFTUZJTEU7Ci0gICAgfQotICAgIHNwcmludGYocGF0aCwg
Ii9tbnQvZmlmby9waXBlLSV4LSVkIiwgKHVfaW50KXQtPnRfdGFza2lkLCByZmQpOwotCi0gICAg
aWYgKChlcnJvciA9IHN5c19ta25vZChwYXRoLCBTX0lGSUZPKSkgIT0gMCkKLSAgICAgICAgZ290
byBvdXQ7Ci0gICAgaWYgKChlcnJvciA9IHN5c19vcGVuKHBhdGgsIE9fUkRPTkxZIHwgT19OT05C
TE9DSywgMCwgJnJmcCkpICE9IDApIHsKLSAgICAgICAgZ290byBvdXQ7Ci0gICAgfQotICAgIGlm
ICgoZXJyb3IgPSBzeXNfb3BlbihwYXRoLCBPX1dST05MWSB8IE9fTk9OQkxPQ0ssIDAsICZ3ZnAp
KSAhPSAwKSB7Ci0gICAgICAgIGdvdG8gb3V0OwotICAgIH0KLSAgICB0LT50X29maWxlW3JmZF0g
PSByZnA7Ci0gICAgdC0+dF9vZmlsZVt3ZmRdID0gd2ZwOwotICAgIHQtPnRfbm9wZW5zICs9IDI7
Ci0gICAgbXNnLT5kYXRhWzBdID0gcmZkOwotICAgIG1zZy0+ZGF0YVsxXSA9IHdmZDsKLSAgICBy
ZXR1cm4gMDsKLSAgICBvdXQ6Ci0gICAgdC0+dF9vZmlsZVtyZmRdID0gbnVsbHB0cjsKLSAgICB0
LT50X29maWxlW3dmZF0gPSBudWxscHRyOwotICAgIHJldHVybiBlcnJvcjsKKwljaGFyIHBhdGhb
UEFUSF9NQVhdOworCWZpbGVfdCByZnAsIHdmcDsKKwlpbnQgZXJyb3IsIHJmZCwgd2ZkOworCisJ
RFBSSU5URihWRlNEQl9DT1JFLCAoImZzX3BpcGVcbiIpKTsKKworCWlmICgocmZkID0gdGFza19u
ZXdmZCh0KSkgPT0gLTEpCisJCXJldHVybiBFTUZJTEU7CisJdC0+dF9vZmlsZVtyZmRdID0gKGZp
bGVfdCkxOyAvKiB0ZW1wICovCisKKwlpZiAoKHdmZCA9IHRhc2tfbmV3ZmQodCkpID09IC0xKSB7
CisJCXQtPnRfb2ZpbGVbcmZkXSA9IG51bGxwdHI7CisJCXJldHVybiBFTUZJTEU7CisJfQorCXNw
cmludGYocGF0aCwgIi9tbnQvZmlmby9waXBlLSV4LSVkIiwgKHVfaW50KXQtPnRfdGFza2lkLCBy
ZmQpOworCisJaWYgKChlcnJvciA9IHN5c19ta25vZChwYXRoLCBTX0lGSUZPKSkgIT0gMCkKKwkJ
Z290byBvdXQ7CisJaWYgKChlcnJvciA9IHN5c19vcGVuKHBhdGgsIE9fUkRPTkxZIHwgT19OT05C
TE9DSywgMCwgJnJmcCkpICE9IDApIHsKKwkJZ290byBvdXQ7CisJfQorCWlmICgoZXJyb3IgPSBz
eXNfb3BlbihwYXRoLCBPX1dST05MWSB8IE9fTk9OQkxPQ0ssIDAsICZ3ZnApKSAhPSAwKSB7CisJ
CWdvdG8gb3V0OworCX0KKwl0LT50X29maWxlW3JmZF0gPSByZnA7CisJdC0+dF9vZmlsZVt3ZmRd
ID0gd2ZwOworCXQtPnRfbm9wZW5zICs9IDI7CisJbXNnLT5kYXRhWzBdID0gcmZkOworCW1zZy0+
ZGF0YVsxXSA9IHdmZDsKKwlyZXR1cm4gMDsKKwlvdXQ6CisJdC0+dF9vZmlsZVtyZmRdID0gbnVs
bHB0cjsKKwl0LT50X29maWxlW3dmZF0gPSBudWxscHRyOworCXJldHVybiBlcnJvcjsKICNlbHNl
Ci0gICAgcmV0dXJuIEVOT1NZUzsKKwlyZXR1cm4gRU5PU1lTOwogI2VuZGlmCiB9CiAjZW5kaWYK
QEAgLTE2NDcsMjUgKzE2NDcsMjUgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfaXNhdHR5X2Vyciwg
IiVkIiwgaW50KTsKICAqLwogaW50IGlzYXR0eShpbnQgZmQpCiB7Ci0gICAgc3RydWN0IGZpbGUg
KmZwOwotICAgIGludCBpc3R0eSA9IDA7CisJc3RydWN0IGZpbGUgKmZwOworCWludCBpc3R0eSA9
IDA7CiAKLSAgICB0cmFjZV92ZnNfaXNhdHR5KGZkKTsKLSAgICBmaWxlcmVmIGYoZmlsZXJlZl9m
cm9tX2ZkKGZkKSk7Ci0gICAgaWYgKCFmKSB7Ci0gICAgICAgIGVycm5vID0gRUJBREY7Ci0gICAg
ICAgIHRyYWNlX3Zmc19pc2F0dHlfZXJyKGVycm5vKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAg
IH0KKwl0cmFjZV92ZnNfaXNhdHR5KGZkKTsKKwlmaWxlcmVmIGYoZmlsZXJlZl9mcm9tX2ZkKGZk
KSk7CisJaWYgKCFmKSB7CisJCWVycm5vID0gRUJBREY7CisJCXRyYWNlX3Zmc19pc2F0dHlfZXJy
KGVycm5vKTsKKwkJcmV0dXJuIC0xOworCX0KIAotICAgIGZwID0gZi5nZXQoKTsKLSAgICBpZiAo
ZHluYW1pY19jYXN0PHR0eV9maWxlKj4oZnApIHx8Ci0gICAgICAgIChmcC0+Zl9kZW50cnkgJiYg
ZnAtPmZfZGVudHJ5LT5kX3Zub2RlLT52X2ZsYWdzICYgVklTVFRZKSkgewotICAgICAgICBpc3R0
eSA9IDE7Ci0gICAgfQorCWZwID0gZi5nZXQoKTsKKwlpZiAoZHluYW1pY19jYXN0PHR0eV9maWxl
Kj4oZnApIHx8CisJCShmcC0+Zl9kZW50cnkgJiYgZnAtPmZfZGVudHJ5LT5kX3Zub2RlLT52X2Zs
YWdzICYgVklTVFRZKSkgeworCQlpc3R0eSA9IDE7CisJfQogCi0gICAgdHJhY2VfdmZzX2lzYXR0
eV9yZXQoaXN0dHkpOwotICAgIHJldHVybiBpc3R0eTsKKwl0cmFjZV92ZnNfaXNhdHR5X3JldChp
c3R0eSk7CisJcmV0dXJuIGlzdHR5OwogfQogCiBUUkFDRVBPSU5UKHRyYWNlX3Zmc190cnVuY2F0
ZSwgIlwiJXNcIiAweCV4IiwgY29uc3QgY2hhciosIG9mZl90KTsKQEAgLTE2NzQsMjYgKzE2NzQs
MjYgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfdHJ1bmNhdGVfZXJyLCAiJWQiLCBpbnQpOwogCiBp
bnQgdHJ1bmNhdGUoY29uc3QgY2hhciAqcGF0aG5hbWUsIG9mZl90IGxlbmd0aCkKIHsKLSAgICB0
cmFjZV92ZnNfdHJ1bmNhdGUocGF0aG5hbWUsIGxlbmd0aCk7Ci0gICAgc3RydWN0IHRhc2sgKnQg
PSBtYWluX3Rhc2s7Ci0gICAgY2hhciBwYXRoW1BBVEhfTUFYXTsKLSAgICBpbnQgZXJyb3I7CisJ
dHJhY2VfdmZzX3RydW5jYXRlKHBhdGhuYW1lLCBsZW5ndGgpOworCXN0cnVjdCB0YXNrICp0ID0g
bWFpbl90YXNrOworCWNoYXIgcGF0aFtQQVRIX01BWF07CisJaW50IGVycm9yOwogCi0gICAgZXJy
b3IgPSBFTk9FTlQ7Ci0gICAgaWYgKHBhdGhuYW1lID09IG51bGxwdHIpCi0gICAgICAgIGdvdG8g
b3V0X2Vycm5vOwotICAgIGlmICgoZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0aG5hbWUsIFZXUklU
RSwgcGF0aCkpICE9IDApCi0gICAgICAgIGdvdG8gb3V0X2Vycm5vOworCWVycm9yID0gRU5PRU5U
OworCWlmIChwYXRobmFtZSA9PSBudWxscHRyKQorCQlnb3RvIG91dF9lcnJubzsKKwlpZiAoKGVy
cm9yID0gdGFza19jb252KHQsIHBhdGhuYW1lLCBWV1JJVEUsIHBhdGgpKSAhPSAwKQorCQlnb3Rv
IG91dF9lcnJubzsKIAotICAgIGVycm9yID0gc3lzX3RydW5jYXRlKHBhdGgsIGxlbmd0aCk7Ci0g
ICAgaWYgKGVycm9yKQotICAgICAgICBnb3RvIG91dF9lcnJubzsKLSAgICB0cmFjZV92ZnNfdHJ1
bmNhdGVfcmV0KCk7Ci0gICAgcmV0dXJuIDA7Ci0gICAgb3V0X2Vycm5vOgotICAgIGVycm5vID0g
ZXJyb3I7Ci0gICAgdHJhY2VfdmZzX3RydW5jYXRlX2VycihlcnJvcik7Ci0gICAgcmV0dXJuIC0x
OworCWVycm9yID0gc3lzX3RydW5jYXRlKHBhdGgsIGxlbmd0aCk7CisJaWYgKGVycm9yKQorCQln
b3RvIG91dF9lcnJubzsKKwl0cmFjZV92ZnNfdHJ1bmNhdGVfcmV0KCk7CisJcmV0dXJuIDA7CisJ
b3V0X2Vycm5vOgorCWVycm5vID0gZXJyb3I7CisJdHJhY2VfdmZzX3RydW5jYXRlX2VycihlcnJv
cik7CisJcmV0dXJuIC0xOwogfQogCiBMRlM2NCh0cnVuY2F0ZSk7CkBAIC0xNzA0LDU4ICsxNzA0
LDU4IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2Z0cnVuY2F0ZV9lcnIsICIlZCIsIGludCk7CiAK
IGludCBmdHJ1bmNhdGUoaW50IGZkLCBvZmZfdCBsZW5ndGgpCiB7Ci0gICAgdHJhY2VfdmZzX2Z0
cnVuY2F0ZShmZCwgbGVuZ3RoKTsKLSAgICBzdHJ1Y3QgZmlsZSAqZnA7Ci0gICAgaW50IGVycm9y
OworCXRyYWNlX3Zmc19mdHJ1bmNhdGUoZmQsIGxlbmd0aCk7CisJc3RydWN0IGZpbGUgKmZwOwor
CWludCBlcnJvcjsKIAotICAgIGVycm9yID0gZmdldChmZCwgJmZwKTsKLSAgICBpZiAoZXJyb3Ip
Ci0gICAgICAgIGdvdG8gb3V0X2Vycm5vOworCWVycm9yID0gZmdldChmZCwgJmZwKTsKKwlpZiAo
ZXJyb3IpCisJCWdvdG8gb3V0X2Vycm5vOwogCi0gICAgZXJyb3IgPSBzeXNfZnRydW5jYXRlKGZw
LCBsZW5ndGgpOwotICAgIGZkcm9wKGZwKTsKKwllcnJvciA9IHN5c19mdHJ1bmNhdGUoZnAsIGxl
bmd0aCk7CisJZmRyb3AoZnApOwogCi0gICAgaWYgKGVycm9yKQotICAgICAgICBnb3RvIG91dF9l
cnJubzsKLSAgICB0cmFjZV92ZnNfZnRydW5jYXRlX3JldCgpOwotICAgIHJldHVybiAwOworCWlm
IChlcnJvcikKKwkJZ290byBvdXRfZXJybm87CisJdHJhY2VfdmZzX2Z0cnVuY2F0ZV9yZXQoKTsK
KwlyZXR1cm4gMDsKIAotICAgIG91dF9lcnJubzoKLSAgICBlcnJubyA9IGVycm9yOwotICAgIHRy
YWNlX3Zmc19mdHJ1bmNhdGVfZXJyKGVycm9yKTsKLSAgICByZXR1cm4gLTE7CisJb3V0X2Vycm5v
OgorCWVycm5vID0gZXJyb3I7CisJdHJhY2VfdmZzX2Z0cnVuY2F0ZV9lcnIoZXJyb3IpOworCXJl
dHVybiAtMTsKIH0KIAogTEZTNjQoZnRydW5jYXRlKTsKIAogc3NpemVfdCByZWFkbGluayhjb25z
dCBjaGFyICpwYXRobmFtZSwgY2hhciAqYnVmLCBzaXplX3QgYnVmc2l6ZSkKIHsKLSAgICBzdHJ1
Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKLSAgICBjaGFyIHBhdGhbUEFUSF9NQVhdOwotICAgIGlu
dCBlcnJvcjsKLSAgICBzc2l6ZV90IHNpemU7CisJc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7
CisJY2hhciBwYXRoW1BBVEhfTUFYXTsKKwlpbnQgZXJyb3I7CisJc3NpemVfdCBzaXplOwogCi0g
ICAgZXJyb3IgPSAtRUlOVkFMOwotICAgIGlmIChidWZzaXplIDw9IDApCi0gICAgICAgIGdvdG8g
b3V0X2Vycm5vOworCWVycm9yID0gLUVJTlZBTDsKKwlpZiAoYnVmc2l6ZSA8PSAwKQorCQlnb3Rv
IG91dF9lcnJubzsKIAotICAgIGVycm9yID0gRU5PRU5UOwotICAgIGlmIChwYXRobmFtZSA9PSBu
dWxscHRyKQotICAgICAgICBnb3RvIG91dF9lcnJubzsKLSAgICBlcnJvciA9IHRhc2tfY29udih0
LCBwYXRobmFtZSwgVldSSVRFLCBwYXRoKTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIGdvdG8g
b3V0X2Vycm5vOworCWVycm9yID0gRU5PRU5UOworCWlmIChwYXRobmFtZSA9PSBudWxscHRyKQor
CQlnb3RvIG91dF9lcnJubzsKKwllcnJvciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwgVldSSVRF
LCBwYXRoKTsKKwlpZiAoZXJyb3IpCisJCWdvdG8gb3V0X2Vycm5vOwogCi0gICAgc2l6ZSAgPSAw
OwotICAgIGVycm9yID0gc3lzX3JlYWRsaW5rKHBhdGgsIGJ1ZiwgYnVmc2l6ZSwgJnNpemUpOwor
CXNpemUgID0gMDsKKwllcnJvciA9IHN5c19yZWFkbGluayhwYXRoLCBidWYsIGJ1ZnNpemUsICZz
aXplKTsKIAotICAgIGlmIChlcnJvciAhPSAwKQotICAgICAgICBnb3RvIG91dF9lcnJubzsKKwlp
ZiAoZXJyb3IgIT0gMCkKKwkJZ290byBvdXRfZXJybm87CiAKLSAgICByZXR1cm4gc2l6ZTsKLSAg
ICBvdXRfZXJybm86Ci0gICAgZXJybm8gPSBlcnJvcjsKLSAgICByZXR1cm4gLTE7CisJcmV0dXJu
IHNpemU7CisJb3V0X2Vycm5vOgorCWVycm5vID0gZXJyb3I7CisJcmV0dXJuIC0xOwogfQogCiBU
UkFDRVBPSU5UKHRyYWNlX3Zmc19mYWxsb2NhdGUsICIlZCAlZCAweCV4IDB4JXgiLCBpbnQsIGlu
dCwgbG9mZl90LCBsb2ZmX3QpOwpAQCAtMTc2NCwyNiArMTc2NCwyNiBAQCBUUkFDRVBPSU5UKHRy
YWNlX3Zmc19mYWxsb2NhdGVfZXJyLCAiJWQiLCBpbnQpOwogCiBpbnQgZmFsbG9jYXRlKGludCBm
ZCwgaW50IG1vZGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4pCiB7Ci0gICAgc3RydWN0IGZp
bGUgKmZwOwotICAgIGludCBlcnJvcjsKKwlzdHJ1Y3QgZmlsZSAqZnA7CisJaW50IGVycm9yOwog
Ci0gICAgdHJhY2VfdmZzX2ZhbGxvY2F0ZShmZCwgbW9kZSwgb2Zmc2V0LCBsZW4pOwotICAgIGVy
cm9yID0gZmdldChmZCwgJmZwKTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIGdvdG8gb3V0X2Vy
cm5vOworCXRyYWNlX3Zmc19mYWxsb2NhdGUoZmQsIG1vZGUsIG9mZnNldCwgbGVuKTsKKwllcnJv
ciA9IGZnZXQoZmQsICZmcCk7CisJaWYgKGVycm9yKQorCQlnb3RvIG91dF9lcnJubzsKIAotICAg
IGVycm9yID0gc3lzX2ZhbGxvY2F0ZShmcCwgbW9kZSwgb2Zmc2V0LCBsZW4pOwotICAgIGZkcm9w
KGZwKTsKKwllcnJvciA9IHN5c19mYWxsb2NhdGUoZnAsIG1vZGUsIG9mZnNldCwgbGVuKTsKKwlm
ZHJvcChmcCk7CiAKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwotICAg
IHRyYWNlX3Zmc19mYWxsb2NhdGVfcmV0KCk7Ci0gICAgcmV0dXJuIDA7CisJaWYgKGVycm9yKQor
CQlnb3RvIG91dF9lcnJubzsKKwl0cmFjZV92ZnNfZmFsbG9jYXRlX3JldCgpOworCXJldHVybiAw
OwogCi0gICAgb3V0X2Vycm5vOgotICAgIHRyYWNlX3Zmc19mYWxsb2NhdGVfZXJyKGVycm9yKTsK
LSAgICBlcnJubyA9IGVycm9yOwotICAgIHJldHVybiAtMTsKKwlvdXRfZXJybm86CisJdHJhY2Vf
dmZzX2ZhbGxvY2F0ZV9lcnIoZXJyb3IpOworCWVycm5vID0gZXJyb3I7CisJcmV0dXJuIC0xOwog
fQogCiBMRlM2NChmYWxsb2NhdGUpOwpAQCAtMTc5NCw2MCArMTc5NCw2MCBAQCBUUkFDRVBPSU5U
KHRyYWNlX3Zmc191dGltZXNfZXJyLCAiJWQiLCBpbnQpOwogCiBpbnQgZnV0aW1lcyhpbnQgZmQs
IGNvbnN0IHN0cnVjdCB0aW1ldmFsIHRpbWVzWzJdKQogewotICAgIHJldHVybiBmdXRpbWVzYXQo
ZmQsIG51bGxwdHIsIHRpbWVzKTsKKwlyZXR1cm4gZnV0aW1lc2F0KGZkLCBudWxscHRyLCB0aW1l
cyk7CiB9CiAKIGludCBmdXRpbWVzYXQoaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwg
Y29uc3Qgc3RydWN0IHRpbWV2YWwgdGltZXNbMl0pCiB7Ci0gICAgc3RydWN0IHN0YXQgc3Q7Ci0g
ICAgc3RydWN0IGZpbGUgKmZwOwotICAgIGludCBlcnJvcjsKLSAgICBjaGFyICphYnNvbHV0ZV9w
YXRoOwotCi0gICAgaWYgKChwYXRobmFtZSAmJiBwYXRobmFtZVswXSA9PSAnLycpIHx8IGRpcmZk
ID09IEFUX0ZEQ1dEKQotICAgICAgICByZXR1cm4gdXRpbWVzKHBhdGhuYW1lLCB0aW1lcyk7Ci0K
LSAgICAvLyBOb3RlOiBpZiBwYXRobmFtZSA9PSBudWxscHRyLCBmdXRpbWVzYXQgb3BlcmF0ZXMg
b24gZGlyZmQgaXRzZWxmLCBhbmQgaW4KLSAgICAvLyB0aGF0IGNhc2UgaXQgZG9lc24ndCBoYXZl
IHRvIGJlIGEgZGlyZWN0b3J5LgotICAgIGlmIChwYXRobmFtZSkgewotICAgICAgICBlcnJvciA9
IGZzdGF0KGRpcmZkLCAmc3QpOwotICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAgIGVy
cm9yID0gZXJybm87Ci0gICAgICAgICAgICBnb3RvIG91dF9lcnJubzsKLSAgICAgICAgfQotCi0g
ICAgICAgIGlmICghU19JU0RJUihzdC5zdF9tb2RlKSl7Ci0gICAgICAgICAgICBlcnJvciA9IEVO
T1RESVI7Ci0gICAgICAgICAgICBnb3RvIG91dF9lcnJubzsKLSAgICAgICAgfQotICAgIH0KKwlz
dHJ1Y3Qgc3RhdCBzdDsKKwlzdHJ1Y3QgZmlsZSAqZnA7CisJaW50IGVycm9yOworCWNoYXIgKmFi
c29sdXRlX3BhdGg7CisKKwlpZiAoKHBhdGhuYW1lICYmIHBhdGhuYW1lWzBdID09ICcvJykgfHwg
ZGlyZmQgPT0gQVRfRkRDV0QpCisJCXJldHVybiB1dGltZXMocGF0aG5hbWUsIHRpbWVzKTsKKwor
CS8vIE5vdGU6IGlmIHBhdGhuYW1lID09IG51bGxwdHIsIGZ1dGltZXNhdCBvcGVyYXRlcyBvbiBk
aXJmZCBpdHNlbGYsIGFuZCBpbgorCS8vIHRoYXQgY2FzZSBpdCBkb2Vzbid0IGhhdmUgdG8gYmUg
YSBkaXJlY3RvcnkuCisJaWYgKHBhdGhuYW1lKSB7CisJCWVycm9yID0gZnN0YXQoZGlyZmQsICZz
dCk7CisJCWlmIChlcnJvcikgeworCQkJZXJyb3IgPSBlcnJubzsKKwkJCWdvdG8gb3V0X2Vycm5v
OworCQl9CisKKwkJaWYgKCFTX0lTRElSKHN0LnN0X21vZGUpKXsKKwkJCWVycm9yID0gRU5PVERJ
UjsKKwkJCWdvdG8gb3V0X2Vycm5vOworCQl9CisJfQogCi0gICAgZXJyb3IgPSBmZ2V0KGRpcmZk
LCAmZnApOwotICAgIGlmIChlcnJvcikKLSAgICAgICAgZ290byBvdXRfZXJybm87CisJZXJyb3Ig
PSBmZ2V0KGRpcmZkLCAmZnApOworCWlmIChlcnJvcikKKwkJZ290byBvdXRfZXJybm87CiAKLSAg
ICAvKiBidWlsZCBhYnNvbHV0ZSBwYXRoICovCi0gICAgYWJzb2x1dGVfcGF0aCA9IChjaGFyKilt
YWxsb2MoUEFUSF9NQVgpOwotICAgIHN0cmxjcHkoYWJzb2x1dGVfcGF0aCwgZnAtPmZfZGVudHJ5
LT5kX21vdW50LT5tX3BhdGgsIFBBVEhfTUFYKTsKLSAgICBzdHJsY2F0KGFic29sdXRlX3BhdGgs
IGZwLT5mX2RlbnRyeS0+ZF9wYXRoLCBQQVRIX01BWCk7CisJLyogYnVpbGQgYWJzb2x1dGUgcGF0
aCAqLworCWFic29sdXRlX3BhdGggPSAoY2hhciopbWFsbG9jKFBBVEhfTUFYKTsKKwlzdHJsY3B5
KGFic29sdXRlX3BhdGgsIGZwLT5mX2RlbnRyeS0+ZF9tb3VudC0+bV9wYXRoLCBQQVRIX01BWCk7
CisJc3RybGNhdChhYnNvbHV0ZV9wYXRoLCBmcC0+Zl9kZW50cnktPmRfcGF0aCwgUEFUSF9NQVgp
OwogCi0gICAgaWYgKHBhdGhuYW1lKSB7Ci0gICAgICAgIHN0cmxjYXQoYWJzb2x1dGVfcGF0aCwg
Ii8iLCBQQVRIX01BWCk7Ci0gICAgICAgIHN0cmxjYXQoYWJzb2x1dGVfcGF0aCwgcGF0aG5hbWUs
IFBBVEhfTUFYKTsKLSAgICB9CisJaWYgKHBhdGhuYW1lKSB7CisJCXN0cmxjYXQoYWJzb2x1dGVf
cGF0aCwgIi8iLCBQQVRIX01BWCk7CisJCXN0cmxjYXQoYWJzb2x1dGVfcGF0aCwgcGF0aG5hbWUs
IFBBVEhfTUFYKTsKKwl9CiAKLSAgICBlcnJvciA9IHV0aW1lcyhhYnNvbHV0ZV9wYXRoLCB0aW1l
cyk7Ci0gICAgZnJlZShhYnNvbHV0ZV9wYXRoKTsKKwllcnJvciA9IHV0aW1lcyhhYnNvbHV0ZV9w
YXRoLCB0aW1lcyk7CisJZnJlZShhYnNvbHV0ZV9wYXRoKTsKIAotICAgIGZkcm9wKGZwKTsKKwlm
ZHJvcChmcCk7CiAKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIGdvdG8gb3V0X2Vycm5vOwotICAg
IHJldHVybiAwOworCWlmIChlcnJvcikKKwkJZ290byBvdXRfZXJybm87CisJcmV0dXJuIDA7CiAK
LSAgICBvdXRfZXJybm86Ci0gICAgZXJybm8gPSBlcnJvcjsKLSAgICByZXR1cm4gLTE7CisJb3V0
X2Vycm5vOgorCWVycm5vID0gZXJyb3I7CisJcmV0dXJuIC0xOwogfQogCiBUUkFDRVBPSU5UKHRy
YWNlX3Zmc191dGltZW5zYXQsICJcIiVzXCIiLCBjb25zdCBjaGFyKik7CkBAIC0xODU3LDE3ICsx
ODU3LDE3IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX3V0aW1lbnNhdF9lcnIsICIlZCIsIGludCk7
CiBleHRlcm4gIkMiCiBpbnQgdXRpbWVuc2F0KGludCBkaXJmZCwgY29uc3QgY2hhciAqcGF0aG5h
bWUsIGNvbnN0IHN0cnVjdCB0aW1lc3BlYyB0aW1lc1syXSwgaW50IGZsYWdzKQogewotICAgIHRy
YWNlX3Zmc191dGltZW5zYXQocGF0aG5hbWUpOworCXRyYWNlX3Zmc191dGltZW5zYXQocGF0aG5h
bWUpOwogCi0gICAgYXV0byBlcnJvciA9IHN5c191dGltZW5zYXQoZGlyZmQsIHBhdGhuYW1lLCB0
aW1lcywgZmxhZ3MpOwotICAgIGlmIChlcnJvcikgewotICAgICAgICB0cmFjZV92ZnNfdXRpbWVu
c2F0X2VycihlcnJvcik7Ci0gICAgICAgIGVycm5vID0gZXJyb3I7Ci0gICAgICAgIHJldHVybiAt
MTsKLSAgICB9CisJYXV0byBlcnJvciA9IHN5c191dGltZW5zYXQoZGlyZmQsIHBhdGhuYW1lLCB0
aW1lcywgZmxhZ3MpOworCWlmIChlcnJvcikgeworCQl0cmFjZV92ZnNfdXRpbWVuc2F0X2Vycihl
cnJvcik7CisJCWVycm5vID0gZXJyb3I7CisJCXJldHVybiAtMTsKKwl9CiAKLSAgICB0cmFjZV92
ZnNfdXRpbWVuc2F0X3JldCgpOwotICAgIHJldHVybiAwOworCXRyYWNlX3Zmc191dGltZW5zYXRf
cmV0KCk7CisJcmV0dXJuIDA7CiB9CiAKIFRSQUNFUE9JTlQodHJhY2VfdmZzX2Z1dGltZW5zLCAi
JWQiLCBpbnQpOwpAQCAtMTg3Nyw3MyArMTg3Nyw3MyBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19m
dXRpbWVuc19lcnIsICIlZCIsIGludCk7CiBleHRlcm4gIkMiCiBpbnQgZnV0aW1lbnMoaW50IGZk
LCBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgdGltZXNbMl0pCiB7Ci0gICAgdHJhY2VfdmZzX2Z1dGlt
ZW5zKGZkKTsKKwl0cmFjZV92ZnNfZnV0aW1lbnMoZmQpOwogCi0gICAgYXV0byBlcnJvciA9IHN5
c19mdXRpbWVucyhmZCwgdGltZXMpOwotICAgIGlmIChlcnJvcikgewotICAgICAgICB0cmFjZV92
ZnNfZnV0aW1lbnNfZXJyKGVycm9yKTsKLSAgICAgICAgZXJybm8gPSBlcnJvcjsKLSAgICAgICAg
cmV0dXJuIC0xOwotICAgIH0KKwlhdXRvIGVycm9yID0gc3lzX2Z1dGltZW5zKGZkLCB0aW1lcyk7
CisJaWYgKGVycm9yKSB7CisJCXRyYWNlX3Zmc19mdXRpbWVuc19lcnIoZXJyb3IpOworCQllcnJu
byA9IGVycm9yOworCQlyZXR1cm4gLTE7CisJfQogCi0gICAgdHJhY2VfdmZzX2Z1dGltZW5zX3Jl
dCgpOwotICAgIHJldHVybiAwOworCXRyYWNlX3Zmc19mdXRpbWVuc19yZXQoKTsKKwlyZXR1cm4g
MDsKIH0KIAogc3RhdGljIGludCBkb191dGltZXMoY29uc3QgY2hhciAqcGF0aG5hbWUsIGNvbnN0
IHN0cnVjdCB0aW1ldmFsIHRpbWVzWzJdLCBpbnQgZmxhZ3MpCiB7Ci0gICAgc3RydWN0IHRhc2sg
KnQgPSBtYWluX3Rhc2s7Ci0gICAgY2hhciBwYXRoW1BBVEhfTUFYXTsKLSAgICBpbnQgZXJyb3I7
CisJc3RydWN0IHRhc2sgKnQgPSBtYWluX3Rhc2s7CisJY2hhciBwYXRoW1BBVEhfTUFYXTsKKwlp
bnQgZXJyb3I7CiAKLSAgICB0cmFjZV92ZnNfdXRpbWVzKHBhdGhuYW1lKTsKKwl0cmFjZV92ZnNf
dXRpbWVzKHBhdGhuYW1lKTsKIAotICAgIGVycm9yID0gdGFza19jb252KHQsIHBhdGhuYW1lLCAw
LCBwYXRoKTsKLSAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgdHJhY2VfdmZzX3V0aW1lc19lcnIo
ZXJyb3IpOwotICAgICAgICByZXR1cm4gbGliY19lcnJvcihlcnJvcik7Ci0gICAgfQorCWVycm9y
ID0gdGFza19jb252KHQsIHBhdGhuYW1lLCAwLCBwYXRoKTsKKwlpZiAoZXJyb3IpIHsKKwkJdHJh
Y2VfdmZzX3V0aW1lc19lcnIoZXJyb3IpOworCQlyZXR1cm4gbGliY19lcnJvcihlcnJvcik7CisJ
fQogCi0gICAgZXJyb3IgPSBzeXNfdXRpbWVzKHBhdGgsIHRpbWVzLCBmbGFncyk7Ci0gICAgaWYg
KGVycm9yKSB7Ci0gICAgICAgIHRyYWNlX3Zmc191dGltZXNfZXJyKGVycm9yKTsKLSAgICAgICAg
cmV0dXJuIGxpYmNfZXJyb3IoZXJyb3IpOwotICAgIH0KKwllcnJvciA9IHN5c191dGltZXMocGF0
aCwgdGltZXMsIGZsYWdzKTsKKwlpZiAoZXJyb3IpIHsKKwkJdHJhY2VfdmZzX3V0aW1lc19lcnIo
ZXJyb3IpOworCQlyZXR1cm4gbGliY19lcnJvcihlcnJvcik7CisJfQogCi0gICAgdHJhY2VfdmZz
X3V0aW1lc19yZXQoKTsKLSAgICByZXR1cm4gMDsKKwl0cmFjZV92ZnNfdXRpbWVzX3JldCgpOwor
CXJldHVybiAwOwogfQogCiBleHRlcm4gIkMiCiBpbnQgdXRpbWVzKGNvbnN0IGNoYXIgKnBhdGhu
YW1lLCBjb25zdCBzdHJ1Y3QgdGltZXZhbCB0aW1lc1syXSkKIHsKLSAgICByZXR1cm4gZG9fdXRp
bWVzKHBhdGhuYW1lLCB0aW1lcywgMCk7CisJcmV0dXJuIGRvX3V0aW1lcyhwYXRobmFtZSwgdGlt
ZXMsIDApOwogfQogCiBleHRlcm4gIkMiCiBpbnQgbHV0aW1lcyhjb25zdCBjaGFyICpwYXRobmFt
ZSwgY29uc3Qgc3RydWN0IHRpbWV2YWwgdGltZXNbMl0pCiB7Ci0gICAgcmV0dXJuIGRvX3V0aW1l
cyhwYXRobmFtZSwgdGltZXMsIEFUX1NZTUxJTktfTk9GT0xMT1cpOworCXJldHVybiBkb191dGlt
ZXMocGF0aG5hbWUsIHRpbWVzLCBBVF9TWU1MSU5LX05PRk9MTE9XKTsKIH0KIAogZXh0ZXJuICJD
IgogaW50IHV0aW1lKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBjb25zdCBzdHJ1Y3QgdXRpbWJ1ZiAq
dCkKIHsKLSAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOjpjaHJvbm87Ci0KLSAgICBzdHJ1Y3QgdGlt
ZXZhbCB0aW1lc1syXTsKLSAgICB0aW1lc1swXS50dl91c2VjID0gMDsKLSAgICB0aW1lc1sxXS50
dl91c2VjID0gMDsKLSAgICBpZiAoIXQpIHsKLSAgICAgICAgbG9uZyBpbnQgdHNlYyA9IGR1cmF0
aW9uX2Nhc3Q8c2Vjb25kcz4ob3N2OjpjbG9jazo6d2FsbDo6bm93KCkudGltZV9zaW5jZV9lcG9j
aCgpKS5jb3VudCgpOwotICAgICAgICB0aW1lc1swXS50dl9zZWMgPSB0c2VjOwotICAgICAgICB0
aW1lc1sxXS50dl9zZWMgPSB0c2VjOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHRpbWVzWzBdLnR2
X3NlYyA9IHQtPmFjdGltZTsKLSAgICAgICAgdGltZXNbMV0udHZfc2VjID0gdC0+bW9kdGltZTsK
LSAgICB9CisJdXNpbmcgbmFtZXNwYWNlIHN0ZDo6Y2hyb25vOworCisJc3RydWN0IHRpbWV2YWwg
dGltZXNbMl07CisJdGltZXNbMF0udHZfdXNlYyA9IDA7CisJdGltZXNbMV0udHZfdXNlYyA9IDA7
CisJaWYgKCF0KSB7CisJCWxvbmcgaW50IHRzZWMgPSBkdXJhdGlvbl9jYXN0PHNlY29uZHM+KG9z
djo6Y2xvY2s6OndhbGw6Om5vdygpLnRpbWVfc2luY2VfZXBvY2goKSkuY291bnQoKTsKKwkJdGlt
ZXNbMF0udHZfc2VjID0gdHNlYzsKKwkJdGltZXNbMV0udHZfc2VjID0gdHNlYzsKKwl9IGVsc2Ug
eworCQl0aW1lc1swXS50dl9zZWMgPSB0LT5hY3RpbWU7CisJCXRpbWVzWzFdLnR2X3NlYyA9IHQt
Pm1vZHRpbWU7CisJfQogCi0gICAgcmV0dXJuIHV0aW1lcyhwYXRobmFtZSwgdGltZXMpOworCXJl
dHVybiB1dGltZXMocGF0aG5hbWUsIHRpbWVzKTsKIH0KIAogVFJBQ0VQT0lOVCh0cmFjZV92ZnNf
Y2htb2QsICJcIiVzXCIgMCUwbyIsIGNvbnN0IGNoYXIqLCBtb2RlX3QpOwpAQCAtMTk1MiwyMyAr
MTk1MiwyMyBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19jaG1vZF9lcnIsICIlZCIsIGludCk7CiAK
IGludCBjaG1vZChjb25zdCBjaGFyICpwYXRobmFtZSwgbW9kZV90IG1vZGUpCiB7Ci0gICAgdHJh
Y2VfdmZzX2NobW9kKHBhdGhuYW1lLCBtb2RlKTsKLSAgICBzdHJ1Y3QgdGFzayAqdCA9IG1haW5f
dGFzazsKLSAgICBjaGFyIHBhdGhbUEFUSF9NQVhdOwotICAgIGludCBlcnJvciA9IEVOT0VOVDsK
LSAgICBpZiAocGF0aG5hbWUgPT0gbnVsbHB0cikKLSAgICAgICAgZ290byBvdXRfZXJybm87Ci0g
ICAgaWYgKChlcnJvciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwgVldSSVRFLCBwYXRoKSkgIT0g
MCkKLSAgICAgICAgZ290byBvdXRfZXJybm87Ci0gICAgZXJyb3IgPSBzeXNfY2htb2QocGF0aCwg
bW9kZSAmIEFMTFBFUk1TKTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIGdvdG8gb3V0X2Vycm5v
OwotICAgIHRyYWNlX3Zmc19jaG1vZF9yZXQoKTsKLSAgICByZXR1cm4gMDsKKwl0cmFjZV92ZnNf
Y2htb2QocGF0aG5hbWUsIG1vZGUpOworCXN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOworCWNo
YXIgcGF0aFtQQVRIX01BWF07CisJaW50IGVycm9yID0gRU5PRU5UOworCWlmIChwYXRobmFtZSA9
PSBudWxscHRyKQorCQlnb3RvIG91dF9lcnJubzsKKwlpZiAoKGVycm9yID0gdGFza19jb252KHQs
IHBhdGhuYW1lLCBWV1JJVEUsIHBhdGgpKSAhPSAwKQorCQlnb3RvIG91dF9lcnJubzsKKwllcnJv
ciA9IHN5c19jaG1vZChwYXRoLCBtb2RlICYgQUxMUEVSTVMpOworCWlmIChlcnJvcikKKwkJZ290
byBvdXRfZXJybm87CisJdHJhY2VfdmZzX2NobW9kX3JldCgpOworCXJldHVybiAwOwogb3V0X2Vy
cm5vOgotICAgIHRyYWNlX3Zmc19jaG1vZF9lcnIoZXJyb3IpOwotICAgIGVycm5vID0gZXJyb3I7
Ci0gICAgcmV0dXJuIC0xOworCXRyYWNlX3Zmc19jaG1vZF9lcnIoZXJyb3IpOworCWVycm5vID0g
ZXJyb3I7CisJcmV0dXJuIC0xOwogfQogCiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19mY2htb2QsICJc
IiVkXCIgMCUwbyIsIGludCwgbW9kZV90KTsKQEAgLTE5NzYsMTUgKzE5NzYsMTUgQEAgVFJBQ0VQ
T0lOVCh0cmFjZV92ZnNfZmNobW9kX3JldCwgIiIpOwogCiBpbnQgZmNobW9kKGludCBmZCwgbW9k
ZV90IG1vZGUpCiB7Ci0gICAgdHJhY2VfdmZzX2ZjaG1vZChmZCwgbW9kZSk7Ci0gICAgYXV0byBl
cnJvciA9IHN5c19mY2htb2QoZmQsIG1vZGUgJiBBTExQRVJNUyk7Ci0gICAgdHJhY2VfdmZzX2Zj
aG1vZF9yZXQoKTsKLSAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgZXJybm8gPSBlcnJvcjsKLSAg
ICAgICAgcmV0dXJuIC0xOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0K
Kwl0cmFjZV92ZnNfZmNobW9kKGZkLCBtb2RlKTsKKwlhdXRvIGVycm9yID0gc3lzX2ZjaG1vZChm
ZCwgbW9kZSAmIEFMTFBFUk1TKTsKKwl0cmFjZV92ZnNfZmNobW9kX3JldCgpOworCWlmIChlcnJv
cikgeworCQllcnJubyA9IGVycm9yOworCQlyZXR1cm4gLTE7CisJfSBlbHNlIHsKKwkJcmV0dXJu
IDA7CisJfQogfQogCiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19mY2hvd24sICJcIiVkXCIgJWQgJWQi
LCBpbnQsIHVpZF90LCBnaWRfdCk7CkBAIC0xOTkyLDEwMSArMTk5MiwxMDEgQEAgVFJBQ0VQT0lO
VCh0cmFjZV92ZnNfZmNob3duX3JldCwgIiIpOwogCiBpbnQgZmNob3duKGludCBmZCwgdWlkX3Qg
b3duZXIsIGdpZF90IGdyb3VwKQogewotICAgIHRyYWNlX3Zmc19mY2hvd24oZmQsIG93bmVyLCBn
cm91cCk7Ci0gICAgV0FSTl9TVFVCQkVEKCk7Ci0gICAgdHJhY2VfdmZzX2ZjaG93bl9yZXQoKTsK
LSAgICByZXR1cm4gMDsKKwl0cmFjZV92ZnNfZmNob3duKGZkLCBvd25lciwgZ3JvdXApOworCVdB
Uk5fU1RVQkJFRCgpOworCXRyYWNlX3Zmc19mY2hvd25fcmV0KCk7CisJcmV0dXJuIDA7CiB9CiAK
IGludCBjaG93bihjb25zdCBjaGFyICpwYXRoLCB1aWRfdCBvd25lciwgZ2lkX3QgZ3JvdXApCiB7
Ci0gICAgV0FSTl9TVFVCQkVEKCk7Ci0gICAgcmV0dXJuIDA7CisJV0FSTl9TVFVCQkVEKCk7CisJ
cmV0dXJuIDA7CiB9CiAKIGludCBsY2hvd24oY29uc3QgY2hhciAqcGF0aCwgdWlkX3Qgb3duZXIs
IGdpZF90IGdyb3VwKQogewotICAgIFdBUk5fU1RVQkJFRCgpOwotICAgIHJldHVybiAwOworCVdB
Uk5fU1RVQkJFRCgpOworCXJldHVybiAwOwogfQogCiAKIHNzaXplX3Qgc2VuZGZpbGUoaW50IG91
dF9mZCwgaW50IGluX2ZkLCBvZmZfdCAqX29mZnNldCwgc2l6ZV90IGNvdW50KQogewotICAgIHN0
cnVjdCBmaWxlICppbl9mcDsKLSAgICBzdHJ1Y3QgZmlsZSAqb3V0X2ZwOwotICAgIGZpbGVyZWYg
aW5fZntmaWxlcmVmX2Zyb21fZmQoaW5fZmQpfTsKLSAgICBmaWxlcmVmIG91dF9me2ZpbGVyZWZf
ZnJvbV9mZChvdXRfZmQpfTsKKwlzdHJ1Y3QgZmlsZSAqaW5fZnA7CisJc3RydWN0IGZpbGUgKm91
dF9mcDsKKwlmaWxlcmVmIGluX2Z7ZmlsZXJlZl9mcm9tX2ZkKGluX2ZkKX07CisJZmlsZXJlZiBv
dXRfZntmaWxlcmVmX2Zyb21fZmQob3V0X2ZkKX07CiAKLSAgICBpZiAoIWluX2YgfHwgIW91dF9m
KSB7Ci0gICAgICAgIHJldHVybiBsaWJjX2Vycm9yKEVCQURGKTsKLSAgICB9CisJaWYgKCFpbl9m
IHx8ICFvdXRfZikgeworCQlyZXR1cm4gbGliY19lcnJvcihFQkFERik7CisJfQogCi0gICAgaW5f
ZnAgPSBpbl9mLmdldCgpOwotICAgIG91dF9mcCA9IG91dF9mLmdldCgpOworCWluX2ZwID0gaW5f
Zi5nZXQoKTsKKwlvdXRfZnAgPSBvdXRfZi5nZXQoKTsKIAotICAgIGlmICghaW5fZnAtPmZfZGVu
dHJ5KSB7Ci0gICAgICAgIHJldHVybiBsaWJjX2Vycm9yKEVCQURGKTsKLSAgICB9CisJaWYgKCFp
bl9mcC0+Zl9kZW50cnkpIHsKKwkJcmV0dXJuIGxpYmNfZXJyb3IoRUJBREYpOworCX0KIAotICAg
IGlmICghKGluX2ZwLT5mX2ZsYWdzICYgRlJFQUQpKSB7Ci0gICAgICAgIHJldHVybiBsaWJjX2Vy
cm9yKEVCQURGKTsKLSAgICB9CisJaWYgKCEoaW5fZnAtPmZfZmxhZ3MgJiBGUkVBRCkpIHsKKwkJ
cmV0dXJuIGxpYmNfZXJyb3IoRUJBREYpOworCX0KIAotICAgIGlmIChvdXRfZnAtPmZfdHlwZSAm
IERUWVBFX1ZOT0RFKSB7Ci0gICAgICAgIGlmICghb3V0X2ZwLT5mX2RlbnRyeSkgewotICAgICAg
ICAgICAgcmV0dXJuIGxpYmNfZXJyb3IoRUJBREYpOworCWlmIChvdXRfZnAtPmZfdHlwZSAmIERU
WVBFX1ZOT0RFKSB7CisJCWlmICghb3V0X2ZwLT5mX2RlbnRyeSkgeworCQkJcmV0dXJuIGxpYmNf
ZXJyb3IoRUJBREYpOwogCX0gZWxzZSBpZiAoIShvdXRfZnAtPmZfZmxhZ3MgJiBGV1JJVEUpKSB7
Ci0gICAgICAgICAgICByZXR1cm4gbGliY19lcnJvcihFQkFERik7CisJCQlyZXR1cm4gbGliY19l
cnJvcihFQkFERik7CisJfQogCX0KLSAgICB9CiAKLSAgICBvZmZfdCBvZmZzZXQgOworCW9mZl90
IG9mZnNldCA7CiAKLSAgICBpZiAoX29mZnNldCAhPSBudWxscHRyKSB7Ci0gICAgICAgIG9mZnNl
dCA9ICpfb2Zmc2V0OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8qIGlmIF9vZmZzZXQgaXMgbnVs
bHB0ciwgd2UgbmVlZCB0byByZWFkIGZyb20gdGhlIHByZXNlbnQgcG9zaXRpb24gb2YgaW5fZmQg
Ki8KLSAgICAgICAgb2Zmc2V0ID0gbHNlZWsoaW5fZmQsIDAsIFNFRUtfQ1VSKTsKLSAgICB9CisJ
aWYgKF9vZmZzZXQgIT0gbnVsbHB0cikgeworCQlvZmZzZXQgPSAqX29mZnNldDsKKwl9IGVsc2Ug
eworCQkvKiBpZiBfb2Zmc2V0IGlzIG51bGxwdHIsIHdlIG5lZWQgdG8gcmVhZCBmcm9tIHRoZSBw
cmVzZW50IHBvc2l0aW9uIG9mIGluX2ZkICovCisJCW9mZnNldCA9IGxzZWVrKGluX2ZkLCAwLCBT
RUVLX0NVUik7CisJfQogCi0gICAgLy8gQ29uc3RyYWluIGNvdW50IHRvIHRoZSBleHRlbnQgb2Yg
dGhlIGZpbGUuLi4KLSAgICBzdHJ1Y3Qgc3RhdCBzdDsKLSAgICBpZiAoZnN0YXQoaW5fZmQsICZz
dCkgPCAwKSB7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAo
b2Zmc2V0ID49IHN0LnN0X3NpemUpIHsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9
IGVsc2UgaWYgKChvZmZzZXQgKyBjb3VudCkgPj0gc3Quc3Rfc2l6ZSkgewotICAgICAgICAgICAg
Y291bnQgPSBzdC5zdF9zaXplIC0gb2Zmc2V0OwotICAgICAgICAgICAgaWYgKGNvdW50ID09IDAp
IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
ICAgIH0KKwkvLyBDb25zdHJhaW4gY291bnQgdG8gdGhlIGV4dGVudCBvZiB0aGUgZmlsZS4uLgor
CXN0cnVjdCBzdGF0IHN0OworCWlmIChmc3RhdChpbl9mZCwgJnN0KSA8IDApIHsKKwkJcmV0dXJu
IC0xOworCX0gZWxzZSB7CisJCWlmIChvZmZzZXQgPj0gc3Quc3Rfc2l6ZSkgeworCQkJcmV0dXJu
IDA7CisJCX0gZWxzZSBpZiAoKG9mZnNldCArIGNvdW50KSA+PSBzdC5zdF9zaXplKSB7CisJCQlj
b3VudCA9IHN0LnN0X3NpemUgLSBvZmZzZXQ7CisJCQlpZiAoY291bnQgPT0gMCkgeworCQkJCXJl
dHVybiAwOworCQkJfQorCQl9CisJfQogCi0gICAgc2l6ZV90IGJ5dGVzX3RvX21tYXAgPSBjb3Vu
dCArIChvZmZzZXQgJSBtbXU6OnBhZ2Vfc2l6ZSk7Ci0gICAgb2ZmX3Qgb2Zmc2V0X2Zvcl9tbWFw
ID0gIGFsaWduX2Rvd24ob2Zmc2V0LCAob2ZmX3QpbW11OjpwYWdlX3NpemUpOworCXNpemVfdCBi
eXRlc190b19tbWFwID0gY291bnQgKyAob2Zmc2V0ICUgbW11OjpwYWdlX3NpemUpOworCW9mZl90
IG9mZnNldF9mb3JfbW1hcCA9ICBhbGlnbl9kb3duKG9mZnNldCwgKG9mZl90KW1tdTo6cGFnZV9z
aXplKTsKIAotICAgIGNoYXIgKnNyYyA9IHN0YXRpY19jYXN0PGNoYXIgKj4obW1hcChudWxscHRy
LCBieXRlc190b19tbWFwLCBQUk9UX1JFQUQsIE1BUF9TSEFSRUQsIGluX2ZkLCBvZmZzZXRfZm9y
X21tYXApKTsKKwljaGFyICpzcmMgPSBzdGF0aWNfY2FzdDxjaGFyICo+KG1tYXAobnVsbHB0ciwg
Ynl0ZXNfdG9fbW1hcCwgUFJPVF9SRUFELCBNQVBfU0hBUkVELCBpbl9mZCwgb2Zmc2V0X2Zvcl9t
bWFwKSk7CiAKLSAgICBpZiAoc3JjID09IE1BUF9GQUlMRUQpIHsKLSAgICAgICAgcmV0dXJuIC0x
OwotICAgIH0KKwlpZiAoc3JjID09IE1BUF9GQUlMRUQpIHsKKwkJcmV0dXJuIC0xOworCX0KIAot
ICAgIGF1dG8gcmV0ID0gd3JpdGUob3V0X2ZkLCBzcmMgKyAob2Zmc2V0ICUgUEFHRVNJWkUpLCBj
b3VudCk7CisJYXV0byByZXQgPSB3cml0ZShvdXRfZmQsIHNyYyArIChvZmZzZXQgJSBQQUdFU0la
RSksIGNvdW50KTsKIAotICAgIGlmIChyZXQgPCAwKSB7Ci0gICAgICAgIHJldHVybiBsaWJjX2Vy
cm9yKGVycm5vKTsKLSAgICB9IGVsc2UgaWYoX29mZnNldCA9PSBudWxscHRyKSB7Ci0gICAgICAg
IGxzZWVrKGluX2ZkLCByZXQsIFNFRUtfQ1VSKTsKLSAgICB9IGVsc2UgewotICAgICAgICAqX29m
ZnNldCArPSByZXQ7Ci0gICAgfQorCWlmIChyZXQgPCAwKSB7CisJCXJldHVybiBsaWJjX2Vycm9y
KGVycm5vKTsKKwl9IGVsc2UgaWYoX29mZnNldCA9PSBudWxscHRyKSB7CisJCWxzZWVrKGluX2Zk
LCByZXQsIFNFRUtfQ1VSKTsKKwl9IGVsc2UgeworCQkqX29mZnNldCArPSByZXQ7CisJfQogCi0g
ICAgYXNzZXJ0KG11bm1hcChzcmMsIGNvdW50KSA9PSAwKTsKKwlhc3NlcnQobXVubWFwKHNyYywg
Y291bnQpID09IDApOwogCi0gICAgcmV0dXJuIHJldDsKKwlyZXR1cm4gcmV0OwogfQogCiAjdW5k
ZWYgc2VuZGZpbGU2NApAQCAtMjA5NiwyMCArMjA5NiwyMCBAQCBOT19TWVMoaW50IGZjaG1vZGF0
KGludCBkaXJmZCwgY29uc3QgY2hhciAqcGF0aG5hbWUsIG1vZGVfdCBtb2RlLCBpbnQgZmxhZ3Mp
KTsKIAogbW9kZV90IHVtYXNrKG1vZGVfdCBuZXdtYXNrKQogewotICAgIHJldHVybiBnbG9iYWxf
dW1hc2suZXhjaGFuZ2UobmV3bWFzaywgc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7CisJcmV0
dXJuIGdsb2JhbF91bWFzay5leGNoYW5nZShuZXdtYXNrLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxh
eGVkKTsKIH0KIAogaW50CiBmc19ub29wKHZvaWQpCiB7Ci0gICAgcmV0dXJuIDA7CisJcmV0dXJu
IDA7CiB9CiAKIGludCBjaHJvb3QoY29uc3QgY2hhciAqcGF0aCkKIHsKLSAgICBXQVJOX1NUVUJC
RUQoKTsKLSAgICBlcnJubyA9IEVOT1NZUzsKLSAgICByZXR1cm4gLTE7CisJV0FSTl9TVFVCQkVE
KCk7CisJZXJybm8gPSBFTk9TWVM7CisJcmV0dXJuIC0xOwogfQogCiAvLyB1bnBhY2tfYm9vdGZz
KCkgdW5wYWNrcyBhIGNvbGxlY3Rpb24gb2YgZmlsZXMgc3RvcmVkIGFzIHBhcnQgb2YgdGhlIE9T
dgpAQCAtMjEyMCwxNCArMjEyMCwxNCBAQCBpbnQgY2hyb290KGNvbnN0IGNoYXIgKnBhdGgpCiAj
ZGVmaW5lIEJPT1RGU19QQVRIX01BWCAxMTEKIGVudW0gY2xhc3MgYm9vdGZzX2ZpbGVfdHlwZSA6
IGNoYXIgeyBvdGhlciA9IDAsIHN5bWxpbmsgPSAxIH07CiBzdHJ1Y3QgYm9vdGZzX21ldGFkYXRh
IHsKLSAgICB1aW50NjRfdCBzaXplOwotICAgIHVpbnQ2NF90IG9mZnNldDsKLSAgICAvLyBUaGUg
ZmlsZSdzIHR5cGUuIENhbiBiZSAic3ltbGluayIgb3IgIm90aGVyIi4gQSBkaXJlY3RvcnkgaXMg
YW4gIm90aGVyIgotICAgIC8vIGZpbGUgd2l0aCBpdHMgbmFtZSBlbmRpbmcgd2l0aCBhICIvIiAo
YW5kIG5vIGNvbnRlbnQpLgotICAgIGJvb3Rmc19maWxlX3R5cGUgdHlwZTsKLSAgICAvLyBuYW1l
IG11c3QgZW5kIHdpdGggYSBudWxsLiBGb3Igc3ltbGluayBmaWxlcywgdGhlIGNvbnRlbnQgbXVz
dCBlbmQKLSAgICAvLyB3aXRoIGEgbnVsbCBhcyB3ZWxsLgotICAgIGNoYXIgbmFtZVtCT09URlNf
UEFUSF9NQVhdOworCXVpbnQ2NF90IHNpemU7CisJdWludDY0X3Qgb2Zmc2V0OworCS8vIFRoZSBm
aWxlJ3MgdHlwZS4gQ2FuIGJlICJzeW1saW5rIiBvciAib3RoZXIiLiBBIGRpcmVjdG9yeSBpcyBh
biAib3RoZXIiCisJLy8gZmlsZSB3aXRoIGl0cyBuYW1lIGVuZGluZyB3aXRoIGEgIi8iIChhbmQg
bm8gY29udGVudCkuCisJYm9vdGZzX2ZpbGVfdHlwZSB0eXBlOworCS8vIG5hbWUgbXVzdCBlbmQg
d2l0aCBhIG51bGwuIEZvciBzeW1saW5rIGZpbGVzLCB0aGUgY29udGVudCBtdXN0IGVuZAorCS8v
IHdpdGggYSBudWxsIGFzIHdlbGwuCisJY2hhciBuYW1lW0JPT1RGU19QQVRIX01BWF07CiB9Owog
CiBleHRlcm4gY2hhciBib290ZnNfc3RhcnQ7CkBAIC0yMTM1LDIyNSArMjEzNSwyMjUgQEAgZXh0
ZXJuIGNoYXIgYm9vdGZzX3N0YXJ0OwogaW50IHJhbWZzX3NldF9maWxlX2RhdGEoc3RydWN0IHZu
b2RlICp2cCwgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUpOwogdm9pZCB1bnBhY2tfYm9v
dGZzKHZvaWQpCiB7Ci0gICAgc3RydWN0IGJvb3Rmc19tZXRhZGF0YSAqbWQgPSAoc3RydWN0IGJv
b3Rmc19tZXRhZGF0YSAqKSZib290ZnNfc3RhcnQ7Ci0gICAgaW50IGZkLCBpOwotCi0gICAgZm9y
IChpID0gMDsgbWRbaV0ubmFtZVswXTsgaSsrKSB7Ci0gICAgICAgIGludCByZXQ7Ci0gICAgICAg
IGNoYXIgKnA7Ci0KLSAgICAgICAgLy8gbWtkaXIoKSBkaXJlY3RvcmllcyBuZWVkZWQgZm9yIHRo
aXMgcGF0aCBuYW1lLCBhcyBuZWNlc3NhcnkKLSAgICAgICAgY2hhciB0bXBbQk9PVEZTX1BBVEhf
TUFYXTsKLSAgICAgICAgc3RybGNweSh0bXAsIG1kW2ldLm5hbWUsIEJPT1RGU19QQVRIX01BWCk7
Ci0gICAgICAgIGZvciAocCA9IHRtcDsgKnA7ICsrcCkgewotICAgICAgICAgICAgaWYgKCpwID09
ICcvJykgewotICAgICAgICAgICAgICAgICpwID0gJ1wwJzsKLSAgICAgICAgICAgICAgICBta2Rp
cih0bXAsIDA2NjYpOyAgLy8gc2lsZW50bHkgaWdub3JlIGVycm9ycyBhbmQgZXhpc3RpbmcgZGly
cwotICAgICAgICAgICAgICAgICpwID0gJy8nOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0K
LSAgICAgICAgaWYgKG1kW2ldLnR5cGUgPT0gYm9vdGZzX2ZpbGVfdHlwZTo6c3ltbGluaykgewot
ICAgICAgICAgICAgLy8gVGhpcyBpcyBhIHN5bWJvbGljIGxpbmsgcmVjb3JkLiBUaGUgZmlsZSdz
IGNvbnRlbnQgaXMgdGhlCi0gICAgICAgICAgICAvLyB0YXJnZXQgcGF0aCwgYW5kIHdlIGFzc3Vt
ZSBlbmRzIHdpdGggYSBudWxsLgotICAgICAgICAgICAgaWYgKHN5bWxpbmsoJmJvb3Rmc19zdGFy
dCArIG1kW2ldLm9mZnNldCwgbWRbaV0ubmFtZSkgIT0gMCkgewotICAgICAgICAgICAgICAgIGtw
cmludGYoImNvdWxkbid0IHN5bWxpbmsgJXM6ICVkXG4iLCBtZFtpXS5uYW1lLCBlcnJubyk7Ci0g
ICAgICAgICAgICAgICAgc3lzX3BhbmljKCJ1bnBhY2tfYm9vdGZzIGZhaWxlZCIpOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCoo
cC0xKSA9PSAnLycgJiYgbWRbaV0uc2l6ZSA9PSAwKSB7Ci0gICAgICAgICAgICAvLyBUaGlzIGlz
IGRpcmVjdG9yeSByZWNvcmQuIE5vdGhpbmcgZWxzZSB0byBkbwotICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgIH0KLQotICAgICAgICBmZCA9IGNyZWF0KG1kW2ldLm5hbWUsIDA2NjYpOwot
ICAgICAgICBpZiAoZmQgPCAwKSB7Ci0gICAgICAgICAgICBrcHJpbnRmKCJjb3VsZG4ndCBjcmVh
dGUgJXM6ICVkXG4iLAotICAgICAgICAgICAgICAgICAgICBtZFtpXS5uYW1lLCBlcnJubyk7Ci0g
ICAgICAgICAgICBzeXNfcGFuaWMoInVucGFja19ib290ZnMgZmFpbGVkIik7Ci0gICAgICAgIH0K
LQotICAgICAgICBzdHJ1Y3QgZmlsZSAqZnA7Ci0gICAgICAgIGludCBlcnJvciA9IGZnZXQoZmQs
ICZmcCk7Ci0gICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAga3ByaW50ZigiY291bGRu
J3QgZmdldCAlczogJWRcbiIsCi0gICAgICAgICAgICAgICAgICAgIG1kW2ldLm5hbWUsIGVycm9y
KTsKLSAgICAgICAgICAgIHN5c19wYW5pYygidW5wYWNrX2Jvb3RmcyBmYWlsZWQiKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIHN0cnVjdCB2bm9kZSAqdnAgPSBmcC0+Zl9kZW50cnktPmRfdm5vZGU7
Ci0gICAgICAgIHJldCA9IHJhbWZzX3NldF9maWxlX2RhdGEodnAsICZib290ZnNfc3RhcnQgKyBt
ZFtpXS5vZmZzZXQsIG1kW2ldLnNpemUpOwotICAgICAgICBpZiAocmV0KSB7Ci0gICAgICAgICAg
ICBrcHJpbnRmKCJyYW1mc19zZXRfZmlsZV9kYXRhIGZhaWxlZCwgcmV0ID0gJWRcbiIsIHJldCk7
Ci0gICAgICAgICAgICBzeXNfcGFuaWMoInVucGFja19ib290ZnMgZmFpbGVkIik7Ci0gICAgICAg
IH0KLQotICAgICAgICBmZHJvcChmcCk7Ci0gICAgICAgIGNsb3NlKGZkKTsKLSAgICB9CisJc3Ry
dWN0IGJvb3Rmc19tZXRhZGF0YSAqbWQgPSAoc3RydWN0IGJvb3Rmc19tZXRhZGF0YSAqKSZib290
ZnNfc3RhcnQ7CisJaW50IGZkLCBpOworCisJZm9yIChpID0gMDsgbWRbaV0ubmFtZVswXTsgaSsr
KSB7CisJCWludCByZXQ7CisJCWNoYXIgKnA7CisKKwkJLy8gbWtkaXIoKSBkaXJlY3RvcmllcyBu
ZWVkZWQgZm9yIHRoaXMgcGF0aCBuYW1lLCBhcyBuZWNlc3NhcnkKKwkJY2hhciB0bXBbQk9PVEZT
X1BBVEhfTUFYXTsKKwkJc3RybGNweSh0bXAsIG1kW2ldLm5hbWUsIEJPT1RGU19QQVRIX01BWCk7
CisJCWZvciAocCA9IHRtcDsgKnA7ICsrcCkgeworCQkJaWYgKCpwID09ICcvJykgeworCQkJCSpw
ID0gJ1wwJzsKKwkJCQlta2Rpcih0bXAsIDA2NjYpOyAgLy8gc2lsZW50bHkgaWdub3JlIGVycm9y
cyBhbmQgZXhpc3RpbmcgZGlycworCQkJCSpwID0gJy8nOworCQkJfQorCQl9CisKKwkJaWYgKG1k
W2ldLnR5cGUgPT0gYm9vdGZzX2ZpbGVfdHlwZTo6c3ltbGluaykgeworCQkJLy8gVGhpcyBpcyBh
IHN5bWJvbGljIGxpbmsgcmVjb3JkLiBUaGUgZmlsZSdzIGNvbnRlbnQgaXMgdGhlCisJCQkvLyB0
YXJnZXQgcGF0aCwgYW5kIHdlIGFzc3VtZSBlbmRzIHdpdGggYSBudWxsLgorCQkJaWYgKHN5bWxp
bmsoJmJvb3Rmc19zdGFydCArIG1kW2ldLm9mZnNldCwgbWRbaV0ubmFtZSkgIT0gMCkgeworCQkJ
CWtwcmludGYoImNvdWxkbid0IHN5bWxpbmsgJXM6ICVkXG4iLCBtZFtpXS5uYW1lLCBlcnJubyk7
CisJCQkJc3lzX3BhbmljKCJ1bnBhY2tfYm9vdGZzIGZhaWxlZCIpOworCQkJfQorCQkJY29udGlu
dWU7CisJCX0KKwkJaWYgKCoocC0xKSA9PSAnLycgJiYgbWRbaV0uc2l6ZSA9PSAwKSB7CisJCQkv
LyBUaGlzIGlzIGRpcmVjdG9yeSByZWNvcmQuIE5vdGhpbmcgZWxzZSB0byBkbworCQkJY29udGlu
dWU7CisJCX0KKworCQlmZCA9IGNyZWF0KG1kW2ldLm5hbWUsIDA2NjYpOworCQlpZiAoZmQgPCAw
KSB7CisJCQlrcHJpbnRmKCJjb3VsZG4ndCBjcmVhdGUgJXM6ICVkXG4iLAorCQkJCQltZFtpXS5u
YW1lLCBlcnJubyk7CisJCQlzeXNfcGFuaWMoInVucGFja19ib290ZnMgZmFpbGVkIik7CisJCX0K
KworCQlzdHJ1Y3QgZmlsZSAqZnA7CisJCWludCBlcnJvciA9IGZnZXQoZmQsICZmcCk7CisJCWlm
IChlcnJvcikgeworCQkJa3ByaW50ZigiY291bGRuJ3QgZmdldCAlczogJWRcbiIsCisJCQkJCW1k
W2ldLm5hbWUsIGVycm9yKTsKKwkJCXN5c19wYW5pYygidW5wYWNrX2Jvb3RmcyBmYWlsZWQiKTsK
KwkJfQorCisJCXN0cnVjdCB2bm9kZSAqdnAgPSBmcC0+Zl9kZW50cnktPmRfdm5vZGU7CisJCXJl
dCA9IHJhbWZzX3NldF9maWxlX2RhdGEodnAsICZib290ZnNfc3RhcnQgKyBtZFtpXS5vZmZzZXQs
IG1kW2ldLnNpemUpOworCQlpZiAocmV0KSB7CisJCQlrcHJpbnRmKCJyYW1mc19zZXRfZmlsZV9k
YXRhIGZhaWxlZCwgcmV0ID0gJWRcbiIsIHJldCk7CisJCQlzeXNfcGFuaWMoInVucGFja19ib290
ZnMgZmFpbGVkIik7CisJCX0KKworCQlmZHJvcChmcCk7CisJCWNsb3NlKGZkKTsKKwl9CiB9CiAK
IHZvaWQgbW91bnRfcm9vdGZzKHZvaWQpCiB7Ci0gICAgaW50IHJldDsKKwlpbnQgcmV0OwogCi0g
ICAgcmV0ID0gc3lzX21vdW50KCIiLCAiLyIsICJyYW1mcyIsIDAsIG51bGxwdHIpOwotICAgIGlm
IChyZXQpCi0gICAgICAgIGtwcmludGYoImZhaWxlZCB0byBtb3VudCByb290ZnMsIGVycm9yID0g
JXNcbiIsIHN0cmVycm9yKHJldCkpOworCXJldCA9IHN5c19tb3VudCgiIiwgIi8iLCAicmFtZnMi
LCAwLCBudWxscHRyKTsKKwlpZiAocmV0KQorCQlrcHJpbnRmKCJmYWlsZWQgdG8gbW91bnQgcm9v
dGZzLCBlcnJvciA9ICVzXG4iLCBzdHJlcnJvcihyZXQpKTsKIAotICAgIGlmIChta2RpcigiL2Rl
diIsIDA3NTUpIDwgMCkKLSAgICAgICAga3ByaW50ZigiZmFpbGVkIHRvIGNyZWF0ZSAvZGV2LCBl
cnJvciA9ICVzXG4iLCBzdHJlcnJvcihlcnJubykpOworCWlmIChta2RpcigiL2RldiIsIDA3NTUp
IDwgMCkKKwkJa3ByaW50ZigiZmFpbGVkIHRvIGNyZWF0ZSAvZGV2LCBlcnJvciA9ICVzXG4iLCBz
dHJlcnJvcihlcnJubykpOwogCi0gICAgcmV0ID0gc3lzX21vdW50KCIiLCAiL2RldiIsICJkZXZm
cyIsIDAsIG51bGxwdHIpOwotICAgIGlmIChyZXQpCi0gICAgICAgIGtwcmludGYoImZhaWxlZCB0
byBtb3VudCBkZXZmcywgZXJyb3IgPSAlc1xuIiwgc3RyZXJyb3IocmV0KSk7CisJcmV0ID0gc3lz
X21vdW50KCIiLCAiL2RldiIsICJkZXZmcyIsIDAsIG51bGxwdHIpOworCWlmIChyZXQpCisJCWtw
cmludGYoImZhaWxlZCB0byBtb3VudCBkZXZmcywgZXJyb3IgPSAlc1xuIiwgc3RyZXJyb3IocmV0
KSk7CiB9CiAKIGV4dGVybiAiQyIKIGludCBubW91bnQoc3RydWN0IGlvdmVjICppb3YsIHVuc2ln
bmVkIG5pb3YsIGludCBmbGFncykKIHsKLSAgICBzdHJ1Y3QgYXJncyB7Ci0gICAgICAgIGNoYXIq
IGZzdHlwZSA9IG51bGxwdHI7Ci0gICAgICAgIGNoYXIqIGZzcGF0aCA9IG51bGxwdHI7Ci0gICAg
ICAgIGNoYXIqIGZyb20gPSBudWxscHRyOwotICAgIH07Ci0gICAgc3RhdGljIHVub3JkZXJlZF9t
YXA8c3RyaW5nLCBjaGFyKiBhcmdzOjoqPiBhcmdtYXAgewotICAgICAgICB7ICJmc3R5cGUiLCAm
YXJnczo6ZnN0eXBlIH0sCi0gICAgICAgIHsgImZzcGF0aCIsICZhcmdzOjpmc3BhdGggfSwKLSAg
ICAgICAgeyAiZnJvbSIsICZhcmdzOjpmcm9tIH0sCi0gICAgfTsKLSAgICBhcmdzIGE7Ci0gICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBuaW92OyBpICs9IDIpIHsKLSAgICAgICAgc3RkOjpzdHJp
bmcgcyhzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oaW92W2ldLmlvdl9iYXNlKSk7Ci0gICAgICAg
IGlmIChhcmdtYXAuY291bnQocykpIHsKLSAgICAgICAgICAgIGEuKihhcmdtYXBbc10pID0gc3Rh
dGljX2Nhc3Q8Y2hhcio+KGlvdltpKzFdLmlvdl9iYXNlKTsKLSAgICAgICAgfQotICAgIH0KLSAg
ICByZXR1cm4gc3lzX21vdW50KGEuZnJvbSwgYS5mc3BhdGgsIGEuZnN0eXBlLCBmbGFncywgbnVs
bHB0cik7CisJc3RydWN0IGFyZ3MgeworCQljaGFyKiBmc3R5cGUgPSBudWxscHRyOworCQljaGFy
KiBmc3BhdGggPSBudWxscHRyOworCQljaGFyKiBmcm9tID0gbnVsbHB0cjsKKwl9OworCXN0YXRp
YyB1bm9yZGVyZWRfbWFwPHN0cmluZywgY2hhciogYXJnczo6Kj4gYXJnbWFwIHsKKwkJeyAiZnN0
eXBlIiwgJmFyZ3M6OmZzdHlwZSB9LAorCQl7ICJmc3BhdGgiLCAmYXJnczo6ZnNwYXRoIH0sCisJ
CXsgImZyb20iLCAmYXJnczo6ZnJvbSB9LAorCX07CisJYXJncyBhOworCWZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbmlvdjsgaSArPSAyKSB7CisJCXN0ZDo6c3RyaW5nIHMoc3RhdGljX2Nhc3Q8Y29u
c3QgY2hhcio+KGlvdltpXS5pb3ZfYmFzZSkpOworCQlpZiAoYXJnbWFwLmNvdW50KHMpKSB7CisJ
CQlhLiooYXJnbWFwW3NdKSA9IHN0YXRpY19jYXN0PGNoYXIqPihpb3ZbaSsxXS5pb3ZfYmFzZSk7
CisJCX0KKwl9CisJcmV0dXJuIHN5c19tb3VudChhLmZyb20sIGEuZnNwYXRoLCBhLmZzdHlwZSwg
ZmxhZ3MsIG51bGxwdHIpOwogfQogCiBzdGF0aWMgdm9pZCBpbXBvcnRfZXh0cmFfemZzX3Bvb2xz
KHZvaWQpCiB7Ci0gICAgc3RydWN0IHN0YXQgc3Q7Ci0gICAgaW50IHJldDsKKwlzdHJ1Y3Qgc3Rh
dCBzdDsKKwlpbnQgcmV0OwogCi0gICAgLy8gVGhlIGZpbGUgJy9ldGMvbW50dGFiJyBpcyBhIExp
YlpGUyByZXF1aXJlbWVudCBhbmQgd2lsbCBub3QKLSAgICAvLyBleGlzdCBkdXJpbmcgY3Bpb2Qg
cGhhc2UuIFRoZSBmdW5jdGlvbmFsaXR5IHByb3ZpZGVkIGJ5IHRoaXMKLSAgICAvLyBmdW5jdGlv
biBpc24ndCBuZWVkZWQgZHVyaW5nIHRoYXQgcGhhc2UsIHNvIGxldCdzIHNraXAgaXQuCi0gICAg
aWYgKHN0YXQoIi9ldGMvbW50dGFiIiAsICZzdCkgIT0gMCkgewotICAgICAgICByZXR1cm47Ci0g
ICAgfQorCS8vIFRoZSBmaWxlICcvZXRjL21udHRhYicgaXMgYSBMaWJaRlMgcmVxdWlyZW1lbnQg
YW5kIHdpbGwgbm90CisJLy8gZXhpc3QgZHVyaW5nIGNwaW9kIHBoYXNlLiBUaGUgZnVuY3Rpb25h
bGl0eSBwcm92aWRlZCBieSB0aGlzCisJLy8gZnVuY3Rpb24gaXNuJ3QgbmVlZGVkIGR1cmluZyB0
aGF0IHBoYXNlLCBzbyBsZXQncyBza2lwIGl0LgorCWlmIChzdGF0KCIvZXRjL21udHRhYiIgLCAm
c3QpICE9IDApIHsKKwkJcmV0dXJuOworCX0KIAotICAgIC8vIEltcG9ydCBleHRyYSBwb29scyBt
b3VudGluZyBkYXRhc2V0cyB0aGVyZSBjb250YWluZWQuCi0gICAgLy8gRGF0YXNldHMgZnJvbSBv
c3YgcG9vbCB3aWxsIG5vdCBiZSBtb3VudGVkIGhlcmUuCi0gICAgaWYgKGFjY2VzcygienBvb2wu
c28iLCBYX09LKSAhPSAwKSB7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgdmVjdG9yPHN0
cmluZz4genBvb2xfYXJncyA9IHsienBvb2wiLCAiaW1wb3J0IiwgIi1mIiwgIi1hIiB9OwotICAg
IGF1dG8gb2sgPSBvc3Y6OnJ1bigienBvb2wuc28iLCB6cG9vbF9hcmdzLCAmcmV0KTsKLSAgICBh
c3NlcnQob2spOworCS8vIEltcG9ydCBleHRyYSBwb29scyBtb3VudGluZyBkYXRhc2V0cyB0aGVy
ZSBjb250YWluZWQuCisJLy8gRGF0YXNldHMgZnJvbSBvc3YgcG9vbCB3aWxsIG5vdCBiZSBtb3Vu
dGVkIGhlcmUuCisJaWYgKGFjY2VzcygienBvb2wuc28iLCBYX09LKSAhPSAwKSB7CisJCXJldHVy
bjsKKwl9CisJdmVjdG9yPHN0cmluZz4genBvb2xfYXJncyA9IHsienBvb2wiLCAiaW1wb3J0Iiwg
Ii1mIiwgIi1hIiB9OworCWF1dG8gb2sgPSBvc3Y6OnJ1bigienBvb2wuc28iLCB6cG9vbF9hcmdz
LCAmcmV0KTsKKwlhc3NlcnQob2spOwogCi0gICAgaWYgKCFyZXQpIHsKLSAgICAgICAgZGVidWco
InpmczogZXh0cmEgWkZTIHBvb2wocykgZm91bmQuXG4iKTsKLSAgICB9CisJaWYgKCFyZXQpIHsK
KwkJZGVidWcoInpmczogZXh0cmEgWkZTIHBvb2wocykgZm91bmQuXG4iKTsKKwl9CiB9CiAKIHZv
aWQgcGl2b3Rfcm9vdGZzKGNvbnN0IGNoYXIqIHBhdGgpCiB7Ci0gICAgaW50IHJldCA9IHN5c19w
aXZvdF9yb290KHBhdGgsICIvIik7Ci0gICAgaWYgKHJldCkKLSAgICAgICAga3ByaW50ZigiZmFp
bGVkIHRvIHBpdm90IHJvb3QsIGVycm9yID0gJXNcbiIsIHN0cmVycm9yKHJldCkpOwotCi0gICAg
YXV0byBlbnQgPSBzZXRtbnRlbnQoIi9ldGMvZnN0YWIiLCAiciIpOwotICAgIGlmICghZW50KSB7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisJaW50IHJldCA9IHN5c19waXZvdF9yb290KHBhdGgs
ICIvIik7CisJaWYgKHJldCkKKwkJa3ByaW50ZigiZmFpbGVkIHRvIHBpdm90IHJvb3QsIGVycm9y
ID0gJXNcbiIsIHN0cmVycm9yKHJldCkpOwogCi0gICAgc3RydWN0IG1udGVudCAqbSA9IG51bGxw
dHI7Ci0gICAgd2hpbGUgKChtID0gZ2V0bW50ZW50KGVudCkpICE9IG51bGxwdHIpIHsKLSAgICAg
ICAgaWYgKCFzdHJjbXAobS0+bW50X2RpciwgIi8iKSkgewotICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoKG0tPm1udF9vcHRzICE9IG51bGxwdHIpICYmIHN0
cmNtcChtLT5tbnRfb3B0cywgTU5UT1BUX0RFRkFVTFRTKSkgewotICAgICAgICAgICAgcHJpbnRm
KCJXYXJuaW5nOiBvcHRzICVzLCBpZ25vcmVkIGZvciBmcyAlc1xuIiwgbS0+bW50X29wdHMsIG0t
Pm1udF90eXBlKTsKLSAgICAgICAgfQorCWF1dG8gZW50ID0gc2V0bW50ZW50KCIvZXRjL2ZzdGFi
IiwgInIiKTsKKwlpZiAoIWVudCkgeworCQlyZXR1cm47CisJfQogCi0gICAgICAgIC8vIEZJWE1F
OiBSaWdodCBub3csIGlnbm9yaW5nIG1udG9wcy4gSW4gdGhlIGZ1dHVyZSB3ZSBtYXkgaGF2ZSBh
biBvcHRpb24gcGFyc2VyCi0gICAgICAgIHJldCA9IHN5c19tb3VudChtLT5tbnRfZnNuYW1lLCBt
LT5tbnRfZGlyLCBtLT5tbnRfdHlwZSwgMCwgbnVsbHB0cik7Ci0gICAgICAgIGlmIChyZXQpIHsK
LSAgICAgICAgICAgIHByaW50ZigiZmFpbGVkIHRvIG1vdW50ICVzLCBlcnJvciA9ICVzXG4iLCBt
LT5tbnRfdHlwZSwgc3RyZXJyb3IocmV0KSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZW5kbW50
ZW50KGVudCk7CisJc3RydWN0IG1udGVudCAqbSA9IG51bGxwdHI7CisJd2hpbGUgKChtID0gZ2V0
bW50ZW50KGVudCkpICE9IG51bGxwdHIpIHsKKwkJaWYgKCFzdHJjbXAobS0+bW50X2RpciwgIi8i
KSkgeworCQkJY29udGludWU7CisJCX0KKworCQlpZiAoKG0tPm1udF9vcHRzICE9IG51bGxwdHIp
ICYmIHN0cmNtcChtLT5tbnRfb3B0cywgTU5UT1BUX0RFRkFVTFRTKSkgeworCQkJcHJpbnRmKCJX
YXJuaW5nOiBvcHRzICVzLCBpZ25vcmVkIGZvciBmcyAlc1xuIiwgbS0+bW50X29wdHMsIG0tPm1u
dF90eXBlKTsKKwkJfQorCisJCS8vIEZJWE1FOiBSaWdodCBub3csIGlnbm9yaW5nIG1udG9wcy4g
SW4gdGhlIGZ1dHVyZSB3ZSBtYXkgaGF2ZSBhbiBvcHRpb24gcGFyc2VyCisJCXJldCA9IHN5c19t
b3VudChtLT5tbnRfZnNuYW1lLCBtLT5tbnRfZGlyLCBtLT5tbnRfdHlwZSwgMCwgbnVsbHB0cik7
CisJCWlmIChyZXQpIHsKKwkJCXByaW50ZigiZmFpbGVkIHRvIG1vdW50ICVzLCBlcnJvciA9ICVz
XG4iLCBtLT5tbnRfdHlwZSwgc3RyZXJyb3IocmV0KSk7CisJCX0KKwl9CisJZW5kbW50ZW50KGVu
dCk7CiB9CiAKIGV4dGVybiAiQyIgdm9pZCB1bm1vdW50X2RldmZzKCkKIHsKLSAgICBpbnQgcmV0
ID0gc3lzX3Vtb3VudCgiL2RldiIpOwotICAgIGlmIChyZXQpCi0gICAgICAgIGtwcmludGYoImZh
aWxlZCB0byB1bm1vdW50IC9kZXYsIGVycm9yID0gJXNcbiIsIHN0cmVycm9yKHJldCkpOworCWlu
dCByZXQgPSBzeXNfdW1vdW50KCIvZGV2Iik7CisJaWYgKHJldCkKKwkJa3ByaW50ZigiZmFpbGVk
IHRvIHVubW91bnQgL2RldiwgZXJyb3IgPSAlc1xuIiwgc3RyZXJyb3IocmV0KSk7CiB9CiAKIGV4
dGVybiAiQyIgaW50IG1vdW50X3JvZnNfcm9vdGZzKGJvb2wgcGl2b3Rfcm9vdCkKIHsKLSAgICBp
bnQgcmV0OworCWludCByZXQ7CiAKLSAgICBpZiAobWtkaXIoIi9yb2ZzIiwgMDc1NSkgPCAwKQot
ICAgICAgICBrcHJpbnRmKCJmYWlsZWQgdG8gY3JlYXRlIC9yb2ZzLCBlcnJvciA9ICVzXG4iLCBz
dHJlcnJvcihlcnJubykpOworCWlmIChta2RpcigiL3JvZnMiLCAwNzU1KSA8IDApCisJCWtwcmlu
dGYoImZhaWxlZCB0byBjcmVhdGUgL3JvZnMsIGVycm9yID0gJXNcbiIsIHN0cmVycm9yKGVycm5v
KSk7CiAKLSAgICByZXQgPSBzeXNfbW91bnQoIi9kZXYvdmJsazAuMSIsICIvcm9mcyIsICJyb2Zz
IiwgTU5UX1JET05MWSwgMCk7CisJcmV0ID0gc3lzX21vdW50KCIvZGV2L3ZibGswLjEiLCAiL3Jv
ZnMiLCAicm9mcyIsIE1OVF9SRE9OTFksIDApOwogCi0gICAgaWYgKHJldCkgewotICAgICAgICBr
cHJpbnRmKCJmYWlsZWQgdG8gbW91bnQgL3JvZnMsIGVycm9yID0gJXNcbiIsIHN0cmVycm9yKHJl
dCkpOwotICAgICAgICBybWRpcigiL3JvZnMiKTsKLSAgICAgICAgcmV0dXJuIHJldDsKLSAgICB9
CisJaWYgKHJldCkgeworCQlrcHJpbnRmKCJmYWlsZWQgdG8gbW91bnQgL3JvZnMsIGVycm9yID0g
JXNcbiIsIHN0cmVycm9yKHJldCkpOworCQlybWRpcigiL3JvZnMiKTsKKwkJcmV0dXJuIHJldDsK
Kwl9CiAKLSAgICBpZiAocGl2b3Rfcm9vdCkgewotICAgICAgICBwaXZvdF9yb290ZnMoIi9yb2Zz
Iik7Ci0gICAgfQorCWlmIChwaXZvdF9yb290KSB7CisJCXBpdm90X3Jvb3RmcygiL3JvZnMiKTsK
Kwl9CiAKLSAgICByZXR1cm4gMDsKKwlyZXR1cm4gMDsKIH0KIAogZXh0ZXJuICJDIiB2b2lkIG1v
dW50X3pmc19yb290ZnMoYm9vbCBwaXZvdF9yb290KQogewotICAgIGlmIChta2RpcigiL3pmcyIs
IDA3NTUpIDwgMCkKLSAgICAgICAga3ByaW50ZigiZmFpbGVkIHRvIGNyZWF0ZSAvemZzLCBlcnJv
ciA9ICVzXG4iLCBzdHJlcnJvcihlcnJubykpOworCWlmIChta2RpcigiL3pmcyIsIDA3NTUpIDwg
MCkKKwkJa3ByaW50ZigiZmFpbGVkIHRvIGNyZWF0ZSAvemZzLCBlcnJvciA9ICVzXG4iLCBzdHJl
cnJvcihlcnJubykpOwogCi0gICAgaW50IHJldCA9IHN5c19tb3VudCgiL2Rldi92YmxrMC4xIiwg
Ii96ZnMiLCAiemZzIiwgMCwgKHZvaWQgKikib3N2L3pmcyIpOworCWludCByZXQgPSBzeXNfbW91
bnQoIi9kZXYvdmJsazAuMSIsICIvemZzIiwgInpmcyIsIDAsICh2b2lkICopIm9zdi96ZnMiKTsK
IAotICAgIGlmIChyZXQpCi0gICAgICAgIGtwcmludGYoImZhaWxlZCB0byBtb3VudCAvemZzLCBl
cnJvciA9ICVzXG4iLCBzdHJlcnJvcihyZXQpKTsKKwlpZiAocmV0KQorCQlrcHJpbnRmKCJmYWls
ZWQgdG8gbW91bnQgL3pmcywgZXJyb3IgPSAlc1xuIiwgc3RyZXJyb3IocmV0KSk7CiAKLSAgICBp
ZiAoIXBpdm90X3Jvb3QpIHsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKwlpZiAoIXBpdm90X3Jv
b3QpIHsKKwkJcmV0dXJuOworCX0KIAotICAgIHBpdm90X3Jvb3RmcygiL3pmcyIpOworCXBpdm90
X3Jvb3RmcygiL3pmcyIpOwogCi0gICAgaW1wb3J0X2V4dHJhX3pmc19wb29scygpOworCWltcG9y
dF9leHRyYV96ZnNfcG9vbHMoKTsKIH0KIAogZXh0ZXJuICJDIiB2b2lkIHVubW91bnRfcm9vdGZz
KHZvaWQpCiB7Ci0gICAgaW50IHJldDsKKwlpbnQgcmV0OwogCi0gICAgc3lzX3Vtb3VudCgiL2Rl
diIpOworCXN5c191bW91bnQoIi9kZXYiKTsKIAotICAgIHJldCA9IHN5c191bW91bnQoIi9wcm9j
Iik7Ci0gICAgaWYgKHJldCkgewotICAgICAgICBrcHJpbnRmKCJXYXJuaW5nOiB1bm1vdW50X3Jv
b3RmczogZmFpbGVkIHRvIHVubW91bnQgL3Byb2MsICIKLSAgICAgICAgICAgICJlcnJvciA9ICVz
XG4iLCBzdHJlcnJvcihyZXQpKTsKLSAgICB9CisJcmV0ID0gc3lzX3Vtb3VudCgiL3Byb2MiKTsK
KwlpZiAocmV0KSB7CisJCWtwcmludGYoIldhcm5pbmc6IHVubW91bnRfcm9vdGZzOiBmYWlsZWQg
dG8gdW5tb3VudCAvcHJvYywgIgorCQkJImVycm9yID0gJXNcbiIsIHN0cmVycm9yKHJldCkpOwor
CX0KIAotICAgIHJldCA9IHN5c191bW91bnQyKCIvIiwgTU5UX0ZPUkNFKTsKLSAgICBpZiAocmV0
KSB7Ci0gICAgICAgIGtwcmludGYoIldhcm5pbmc6IHVubW91bnRfcm9vdGZzOiBmYWlsZWQgdG8g
dW5tb3VudCAvLCAiCi0gICAgICAgICAgICAiZXJyb3IgPSAlc1xuIiwgc3RyZXJyb3IocmV0KSk7
Ci0gICAgfQorCXJldCA9IHN5c191bW91bnQyKCIvIiwgTU5UX0ZPUkNFKTsKKwlpZiAocmV0KSB7
CisJCWtwcmludGYoIldhcm5pbmc6IHVubW91bnRfcm9vdGZzOiBmYWlsZWQgdG8gdW5tb3VudCAv
LCAiCisJCQkiZXJyb3IgPSAlc1xuIiwgc3RyZXJyb3IocmV0KSk7CisJfQogfQogCiBleHRlcm4g
IkMiIHZvaWQgYmlvX2luaXQodm9pZCk7CkBAIC0yMzY1LDQ5ICsyMzY1LDQ5IEBAIGV4dGVybiAi
QyIKIHZvaWQKIHZmc19pbml0KHZvaWQpCiB7Ci0gICAgY29uc3Qgc3RydWN0IHZmc3N3ICpmczsK
LQotICAgIGJpb19pbml0KCk7Ci0gICAgbG9va3VwX2luaXQoKTsKLSAgICB2bm9kZV9pbml0KCk7
Ci0gICAgdGFza19hbGxvYygmbWFpbl90YXNrKTsKLQotICAgIC8qCi0gICAgICogSW5pdGlhbGl6
ZSBlYWNoIGZpbGUgc3lzdGVtLgotICAgICAqLwotICAgIGZvciAoZnMgPSB2ZnNzdzsgZnMtPnZz
X25hbWU7IGZzKyspIHsKLSAgICAgICAgaWYgKGZzLT52c19pbml0KSB7Ci0gICAgICAgICAgICBE
UFJJTlRGKFZGU0RCX0NPUkUsICgiVkZTOiBpbml0aWFsaXppbmcgJXNcbiIsCi0gICAgICAgICAg
ICAgICAgICAgIGZzLT52c19uYW1lKSk7Ci0gICAgICAgICAgICBmcy0+dnNfaW5pdCgpOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgbW91bnRfcm9vdGZzKCk7Ci0gICAgdW5wYWNrX2Jvb3Rmcygp
OwotCi0gICAgLy8JaWYgKG9wZW4oIi9kZXYvY29uc29sZSIsIE9fUkRXUiwgMCkgIT0gMCkKLSAg
ICBpZiAoY29uc29sZTo6b3BlbigpICE9IDApCi0gICAgICAgIGtwcmludGYoImZhaWxlZCB0byBv
cGVuIGNvbnNvbGUsIGVycm9yID0gJWRcbiIsIGVycm5vKTsKLSAgICBpZiAoZHVwKDApICE9IDEp
Ci0gICAgICAgIGtwcmludGYoImZhaWxlZCB0byBkdXAgY29uc29sZSAoMSlcbiIpOwotICAgIGlm
IChkdXAoMCkgIT0gMikKLSAgICAgICAga3ByaW50ZigiZmFpbGVkIHRvIGR1cCBjb25zb2xlICgy
KVxuIik7Ci0gICAgdmZzX2luaXRpYWxpemVkID0gMTsKKwljb25zdCBzdHJ1Y3QgdmZzc3cgKmZz
OworCisJYmlvX2luaXQoKTsKKwlsb29rdXBfaW5pdCgpOworCXZub2RlX2luaXQoKTsKKwl0YXNr
X2FsbG9jKCZtYWluX3Rhc2spOworCisJLyoKKwkgKiBJbml0aWFsaXplIGVhY2ggZmlsZSBzeXN0
ZW0uCisJICovCisJZm9yIChmcyA9IHZmc3N3OyBmcy0+dnNfbmFtZTsgZnMrKykgeworCQlpZiAo
ZnMtPnZzX2luaXQpIHsKKwkJCURQUklOVEYoVkZTREJfQ09SRSwgKCJWRlM6IGluaXRpYWxpemlu
ZyAlc1xuIiwKKwkJCQkJZnMtPnZzX25hbWUpKTsKKwkJCWZzLT52c19pbml0KCk7CisJCX0KKwl9
CisKKwltb3VudF9yb290ZnMoKTsKKwl1bnBhY2tfYm9vdGZzKCk7CisKKwkvLwlpZiAob3Blbigi
L2Rldi9jb25zb2xlIiwgT19SRFdSLCAwKSAhPSAwKQorCWlmIChjb25zb2xlOjpvcGVuKCkgIT0g
MCkKKwkJa3ByaW50ZigiZmFpbGVkIHRvIG9wZW4gY29uc29sZSwgZXJyb3IgPSAlZFxuIiwgZXJy
bm8pOworCWlmIChkdXAoMCkgIT0gMSkKKwkJa3ByaW50ZigiZmFpbGVkIHRvIGR1cCBjb25zb2xl
ICgxKVxuIik7CisJaWYgKGR1cCgwKSAhPSAyKQorCQlrcHJpbnRmKCJmYWlsZWQgdG8gZHVwIGNv
bnNvbGUgKDIpXG4iKTsKKwl2ZnNfaW5pdGlhbGl6ZWQgPSAxOwogfQogCiB2b2lkIHZmc19leGl0
KHZvaWQpCiB7Ci0gICAgLyogRnJlZSB1cCBtYWluX3Rhc2sgKHN0b3JlcyBjd2QgZGF0YSkgcmVz
b3VyY2VzICovCi0gICAgcmVwbGFjZV9jd2QobWFpbl90YXNrLCBudWxscHRyLCBbXSgpIHsgcmV0
dXJuIDA7IH0pOwotICAgIC8qIFVubW91bnQgYWxsIGZpbGUgc3lzdGVtcyAqLwotICAgIHVubW91
bnRfcm9vdGZzKCk7Ci0gICAgLyogRmluaXNoIHdpdGggdGhlIGJpbyBsYXllciAqLwotICAgIGJp
b19zeW5jKCk7CisJLyogRnJlZSB1cCBtYWluX3Rhc2sgKHN0b3JlcyBjd2QgZGF0YSkgcmVzb3Vy
Y2VzICovCisJcmVwbGFjZV9jd2QobWFpbl90YXNrLCBudWxscHRyLCBbXSgpIHsgcmV0dXJuIDA7
IH0pOworCS8qIFVubW91bnQgYWxsIGZpbGUgc3lzdGVtcyAqLworCXVubW91bnRfcm9vdGZzKCk7
CisJLyogRmluaXNoIHdpdGggdGhlIGJpbyBsYXllciAqLworCWJpb19zeW5jKCk7CiB9CiAKIHZv
aWQgc3lzX3BhbmljKGNvbnN0IGNoYXIgKnN0cikKIHsKLSAgICBhYm9ydCgicGFuaWM6ICVzIiwg
c3RyKTsKKwlhYm9ydCgicGFuaWM6ICVzIiwgc3RyKTsKIH0KIApkaWZmIC0tZ2l0IGEvbGliL3Zm
c2NvcmUvbW91bnQuYyBiL2xpYi92ZnNjb3JlL21vdW50LmMKaW5kZXggZGFjNGQwOWMuLmI1MWIy
N2E0IDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9tb3VudC5jCisrKyBiL2xpYi92ZnNjb3JlL21v
dW50LmMKQEAgLTY5LDI4NyArNjksMjg3IEBAIHN0YXRpYyBtdXRleCBtb3VudF9sb2NrOwogc3Rh
dGljIGNvbnN0IHN0cnVjdCB2ZnNzdyAqCiBmc19nZXRmcyhjb25zdCBjaGFyICpuYW1lKQogewot
ICAgIGNvbnN0IHN0cnVjdCB2ZnNzdyAqZnM7Ci0KLSAgICBmb3IgKGZzID0gdmZzc3c7IGZzLT52
c19uYW1lOyBmcysrKSB7Ci0gICAgICAgIGlmICghc3RybmNtcChuYW1lLCBmcy0+dnNfbmFtZSwg
RlNNQVhOQU1FUykpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgaWYgKCFmcy0+dnNf
bmFtZSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGZzOworCWNvbnN0IHN0
cnVjdCB2ZnNzdyAqZnM7CisKKwlmb3IgKGZzID0gdmZzc3c7IGZzLT52c19uYW1lOyBmcysrKSB7
CisJCWlmICghc3RybmNtcChuYW1lLCBmcy0+dnNfbmFtZSwgRlNNQVhOQU1FUykpCisJCQlicmVh
azsKKwl9CisJaWYgKCFmcy0+dnNfbmFtZSkKKwkJcmV0dXJuIG51bGxwdHI7CisJcmV0dXJuIGZz
OwogfQogCiBjb25zdCBjaGFyKgogZnNfZ2V0ZnNuYW1lKHZmc29wcyogb3BzKQogewotICAgIGZv
ciAoYXV0byBmcyA9IHZmc3N3OyBmcy0+dnNfbmFtZTsgZnMrKykgewotICAgICAgICBpZiAoZnMt
PnZzX29wID09IG9wcykgewotICAgICAgICAgICAgcmV0dXJuIGZzLT52c19uYW1lOwotICAgICAg
ICB9Ci0gICAgfQotICAgIGFib3J0KCk7CisJZm9yIChhdXRvIGZzID0gdmZzc3c7IGZzLT52c19u
YW1lOyBmcysrKSB7CisJCWlmIChmcy0+dnNfb3AgPT0gb3BzKSB7CisJCQlyZXR1cm4gZnMtPnZz
X25hbWU7CisJCX0KKwl9CisJYWJvcnQoKTsKIH0KIAogaW50CiBzeXNfbW91bnQoY29uc3QgY2hh
ciAqZGV2LCBjb25zdCBjaGFyICpkaXIsIGNvbnN0IGNoYXIgKmZzbmFtZSwgaW50IGZsYWdzLCBj
b25zdCB2b2lkICpkYXRhKQogewotICAgIGNvbnN0IHN0cnVjdCB2ZnNzdyAqZnM7Ci0gICAgc3Ry
dWN0IG1vdW50ICptcDsKLSAgICBzdHJ1Y3QgZGV2aWNlICpkZXZpY2U7Ci0gICAgc3RydWN0IGRl
bnRyeSAqZHBfY292ZXJlZDsKLSAgICBzdHJ1Y3Qgdm5vZGUgKnZwOwotICAgIGludCBlcnJvcjsK
LQotICAgIGtwcmludGYoIlZGUzogbW91bnRpbmcgJXMgYXQgJXNcbiIsIGZzbmFtZSwgZGlyKTsK
LQotICAgIGlmICghZGlyIHx8ICpkaXIgPT0gJ1wwJykKLSAgICAgICAgcmV0dXJuIEVOT0VOVDsK
LQotICAgIC8qIEZpbmQgYSBmaWxlIHN5c3RlbS4gKi8KLSAgICBpZiAoIShmcyA9IGZzX2dldGZz
KGZzbmFtZSkpKQotICAgICAgICByZXR1cm4gRU5PREVWOyAgLyogTm8gc3VjaCBmaWxlIHN5c3Rl
bSAqLwotCi0gICAgLyogT3BlbiBkZXZpY2UuIG51bGxwdHIgY2FuIGJlIHNwZWNpZmllZCBhcyBh
IGRldmljZS4gKi8KLSAgICAvLyBBbGxvdyBkZXZpY2Vfb3BlbigpIHRvIGZhaWwsIGluIHdoaWNo
IGNhc2UgZGV2IGlzIGludGVycHJldGVkCi0gICAgLy8gYnkgdGhlIGZpbGUgc3lzdGVtIG1vdW50
IHJvdXRpbmUgKGUuZyB6ZnMgcG9vbHMpCi0gICAgZGV2aWNlID0gMDsKLSAgICBpZiAoZGV2ICYm
IHN0cm5jbXAoZGV2LCAiL2Rldi8iLCA1KSA9PSAwKQotICAgICAgICBkZXZpY2Vfb3BlbihkZXYg
KyA1LCBET19SRFdSLCAmZGV2aWNlKTsKLQotICAgIC8qIENoZWNrIGlmIGRldmljZSBvciBkaXJl
Y3RvcnkgaGFzIGFscmVhZHkgYmVlbiBtb3VudGVkLiAqLwotICAgIC8vIFdlIG5lZWQgdG8gYXZv
aWQgdGhlIHNpdHVhdGlvbiB3aGVyZSBhZnRlciB3ZSBhbHJlYWR5IHZlcmlmaWVkIHRoYXQKLSAg
ICAvLyB0aGUgbW91bnQgcG9pbnQgaXMgZnJlZSwgYnV0IGJlZm9yZSB3ZSBhY3R1YWxseSBhZGQg
aXQgdG8gbW91bnRfbGlzdCwKLSAgICAvLyBhbm90aGVyIGNvbmN1cnJlbnQgbW91bnQgYWRkcyBp
dC4gU28gd2UgdXNlIGEgbmV3IG11dGV4IHRvIGVuc3VyZQotICAgIC8vIHRoYXQgb25seSBvbmUg
c3lzX21vdW50KCkgcnVucyBhdCBhIHRpbWUuIFdlIGNhbm5vdCByZXVzZSB0aGUgZXhpc3RpbmcK
LSAgICAvLyBtb3VudF9sb2NrIGZvciB0aGlzIHB1cnBvc2U6IElmIHdlIHRha2UgbW91bnRfbG9j
ayBhbmQgdGhlbiBkbwotICAgIC8vIGxvb2t1cHMsIHRoaXMgaXMgbG9jayBvcmRlciBpbnZlcnNp
b24gYW5kIGNhbiByZXN1bHQgaW4gZGVhZGxvY2suCi0gICAgc3RhdGljIG11dGV4IHN5c19tb3Vu
dF9sb2NrOwotICAgIFNDT1BFX0xPQ0soc3lzX21vdW50X2xvY2spOwotICAgIFdJVEhfTE9DSyht
b3VudF9sb2NrKSB7Ci0gICAgICAgIGZvciAoYXV0byYmIG1wIDogbW91bnRfbGlzdCkgewotICAg
ICAgICAgICAgaWYgKCFzdHJjbXAobXAtPm1fcGF0aCwgZGlyKSB8fAotICAgICAgICAgICAgICAg
IChkZXZpY2UgJiYgbXAtPm1fZGV2ID09IGRldmljZSkpIHsKLSAgICAgICAgICAgICAgICBlcnJv
ciA9IEVCVVNZOyAgLyogQWxyZWFkeSBtb3VudGVkICovCi0gICAgICAgICAgICAgICAgZ290byBl
cnIxOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIC8qCi0gICAgICogQ3Jl
YXRlIFZGUyBtb3VudCBlbnRyeS4KLSAgICAgKi8KLSAgICBpZiAoIShtcCA9IG5ldyBtb3VudCkp
IHsKLSAgICAgICAgZXJyb3IgPSBFTk9NRU07Ci0gICAgICAgIGdvdG8gZXJyMTsKLSAgICB9Ci0g
ICAgbXAtPm1fY291bnQgPSAwOwotICAgIG1wLT5tX29wID0gZnMtPnZzX29wOwotICAgIG1wLT5t
X2ZsYWdzID0gZmxhZ3M7Ci0gICAgbXAtPm1fZGV2ID0gZGV2aWNlOwotICAgIG1wLT5tX2RhdGEg
PSBudWxscHRyOwotICAgIHN0cmxjcHkobXAtPm1fcGF0aCwgZGlyLCBzaXplb2YobXAtPm1fcGF0
aCkpOwotICAgIHN0cmxjcHkobXAtPm1fc3BlY2lhbCwgZGV2LCBzaXplb2YobXAtPm1fc3BlY2lh
bCkpOwotCi0gICAgLyoKLSAgICAgKiBHZXQgdm5vZGUgdG8gYmUgY292ZXJlZCBpbiB0aGUgdXBw
ZXIgZmlsZSBzeXN0ZW0uCi0gICAgICovCi0gICAgaWYgKCpkaXIgPT0gJy8nICYmICooZGlyICsg
MSkgPT0gJ1wwJykgewotICAgICAgICAvKiBJZ25vcmUgaWYgaXQgbW91bnRzIHRvIGdsb2JhbCBy
b290IGRpcmVjdG9yeS4gKi8KLSAgICAgICAgZHBfY292ZXJlZCA9IG51bGxwdHI7Ci0gICAgfSBl
bHNlIHsKLSAgICAgICAgaWYgKChlcnJvciA9IG5hbWVpKGRpciwgJmRwX2NvdmVyZWQpKSAhPSAw
KSB7Ci0KLSAgICAgICAgICAgIGVycm9yID0gRU5PRU5UOwotICAgICAgICAgICAgZ290byBlcnIy
OwotICAgICAgICB9Ci0gICAgICAgIGlmIChkcF9jb3ZlcmVkLT5kX3Zub2RlLT52X3R5cGUgIT0g
VkRJUikgewotICAgICAgICAgICAgZXJyb3IgPSBFTk9URElSOwotICAgICAgICAgICAgZ290byBl
cnIzOwotICAgICAgICB9Ci0gICAgfQotICAgIG1wLT5tX2NvdmVyZWQgPSBkcF9jb3ZlcmVkOwot
Ci0gICAgLyoKLSAgICAgKiBDcmVhdGUgYSByb290IHZub2RlIGZvciB0aGlzIGZpbGUgc3lzdGVt
LgotICAgICAqLwotICAgIHZnZXQobXAsIDAsICZ2cCk7Ci0gICAgaWYgKHZwID09IG51bGxwdHIp
IHsKLSAgICAgICAgZXJyb3IgPSBFTk9NRU07Ci0gICAgICAgIGdvdG8gZXJyMzsKLSAgICB9Ci0g
ICAgdnAtPnZfdHlwZSA9IFZESVI7Ci0gICAgdnAtPnZfZmxhZ3MgPSBWUk9PVDsKLSAgICB2cC0+
dl9tb2RlID0gU19JRkRJUiB8IFNfSVJVU1IgfCBTX0lXVVNSIHwgU19JWFVTUjsKLQotICAgIG1w
LT5tX3Jvb3QgPSBkZW50cnlfYWxsb2MobnVsbHB0ciwgdnAsICIvIik7Ci0gICAgaWYgKCFtcC0+
bV9yb290KSB7Ci0gICAgICAgIHZwdXQodnApOwotICAgICAgICBnb3RvIGVycjM7Ci0gICAgfQot
ICAgIHZwdXQodnApOwotCi0gICAgLyoKLSAgICAgKiBDYWxsIGEgZmlsZSBzeXN0ZW0gc3BlY2lm
aWMgcm91dGluZS4KLSAgICAgKi8KLSAgICBpZiAoKGVycm9yID0gVkZTX01PVU5UKG1wLCBkZXYs
IGZsYWdzLCBkYXRhKSkgIT0gMCkKLSAgICAgICAgZ290byBlcnI0OwotCi0gICAgaWYgKG1wLT5t
X2ZsYWdzICYgTU5UX1JET05MWSkKLSAgICAgICAgdnAtPnZfbW9kZSAmPX5TX0lXVVNSOwotCi0g
ICAgLyoKLSAgICAgKiBJbnNlcnQgdG8gbW91bnQgbGlzdAotICAgICAqLwotICAgIFdJVEhfTE9D
Syhtb3VudF9sb2NrKSB7Ci0gICAgICAgIG1vdW50X2xpc3QucHVzaF9iYWNrKG1wKTsKLSAgICB9
Ci0KLSAgICByZXR1cm4gMDsgICAvKiBzdWNjZXNzICovCisJY29uc3Qgc3RydWN0IHZmc3N3ICpm
czsKKwlzdHJ1Y3QgbW91bnQgKm1wOworCXN0cnVjdCBkZXZpY2UgKmRldmljZTsKKwlzdHJ1Y3Qg
ZGVudHJ5ICpkcF9jb3ZlcmVkOworCXN0cnVjdCB2bm9kZSAqdnA7CisJaW50IGVycm9yOworCisJ
a3ByaW50ZigiVkZTOiBtb3VudGluZyAlcyBhdCAlc1xuIiwgZnNuYW1lLCBkaXIpOworCisJaWYg
KCFkaXIgfHwgKmRpciA9PSAnXDAnKQorCQlyZXR1cm4gRU5PRU5UOworCisJLyogRmluZCBhIGZp
bGUgc3lzdGVtLiAqLworCWlmICghKGZzID0gZnNfZ2V0ZnMoZnNuYW1lKSkpCisJCXJldHVybiBF
Tk9ERVY7ICAvKiBObyBzdWNoIGZpbGUgc3lzdGVtICovCisKKwkvKiBPcGVuIGRldmljZS4gbnVs
bHB0ciBjYW4gYmUgc3BlY2lmaWVkIGFzIGEgZGV2aWNlLiAqLworCS8vIEFsbG93IGRldmljZV9v
cGVuKCkgdG8gZmFpbCwgaW4gd2hpY2ggY2FzZSBkZXYgaXMgaW50ZXJwcmV0ZWQKKwkvLyBieSB0
aGUgZmlsZSBzeXN0ZW0gbW91bnQgcm91dGluZSAoZS5nIHpmcyBwb29scykKKwlkZXZpY2UgPSAw
OworCWlmIChkZXYgJiYgc3RybmNtcChkZXYsICIvZGV2LyIsIDUpID09IDApCisJCWRldmljZV9v
cGVuKGRldiArIDUsIERPX1JEV1IsICZkZXZpY2UpOworCisJLyogQ2hlY2sgaWYgZGV2aWNlIG9y
IGRpcmVjdG9yeSBoYXMgYWxyZWFkeSBiZWVuIG1vdW50ZWQuICovCisJLy8gV2UgbmVlZCB0byBh
dm9pZCB0aGUgc2l0dWF0aW9uIHdoZXJlIGFmdGVyIHdlIGFscmVhZHkgdmVyaWZpZWQgdGhhdAor
CS8vIHRoZSBtb3VudCBwb2ludCBpcyBmcmVlLCBidXQgYmVmb3JlIHdlIGFjdHVhbGx5IGFkZCBp
dCB0byBtb3VudF9saXN0LAorCS8vIGFub3RoZXIgY29uY3VycmVudCBtb3VudCBhZGRzIGl0LiBT
byB3ZSB1c2UgYSBuZXcgbXV0ZXggdG8gZW5zdXJlCisJLy8gdGhhdCBvbmx5IG9uZSBzeXNfbW91
bnQoKSBydW5zIGF0IGEgdGltZS4gV2UgY2Fubm90IHJldXNlIHRoZSBleGlzdGluZworCS8vIG1v
dW50X2xvY2sgZm9yIHRoaXMgcHVycG9zZTogSWYgd2UgdGFrZSBtb3VudF9sb2NrIGFuZCB0aGVu
IGRvCisJLy8gbG9va3VwcywgdGhpcyBpcyBsb2NrIG9yZGVyIGludmVyc2lvbiBhbmQgY2FuIHJl
c3VsdCBpbiBkZWFkbG9jay4KKwlzdGF0aWMgbXV0ZXggc3lzX21vdW50X2xvY2s7CisJU0NPUEVf
TE9DSyhzeXNfbW91bnRfbG9jayk7CisJV0lUSF9MT0NLKG1vdW50X2xvY2spIHsKKwkJZm9yIChh
dXRvJiYgbXAgOiBtb3VudF9saXN0KSB7CisJCQlpZiAoIXN0cmNtcChtcC0+bV9wYXRoLCBkaXIp
IHx8CisJCQkJKGRldmljZSAmJiBtcC0+bV9kZXYgPT0gZGV2aWNlKSkgeworCQkJCWVycm9yID0g
RUJVU1k7ICAvKiBBbHJlYWR5IG1vdW50ZWQgKi8KKwkJCQlnb3RvIGVycjE7CisJCQl9CisJCX0K
Kwl9CisJLyoKKwkgKiBDcmVhdGUgVkZTIG1vdW50IGVudHJ5LgorCSAqLworCWlmICghKG1wID0g
bmV3IG1vdW50KSkgeworCQllcnJvciA9IEVOT01FTTsKKwkJZ290byBlcnIxOworCX0KKwltcC0+
bV9jb3VudCA9IDA7CisJbXAtPm1fb3AgPSBmcy0+dnNfb3A7CisJbXAtPm1fZmxhZ3MgPSBmbGFn
czsKKwltcC0+bV9kZXYgPSBkZXZpY2U7CisJbXAtPm1fZGF0YSA9IG51bGxwdHI7CisJc3RybGNw
eShtcC0+bV9wYXRoLCBkaXIsIHNpemVvZihtcC0+bV9wYXRoKSk7CisJc3RybGNweShtcC0+bV9z
cGVjaWFsLCBkZXYsIHNpemVvZihtcC0+bV9zcGVjaWFsKSk7CisKKwkvKgorCSAqIEdldCB2bm9k
ZSB0byBiZSBjb3ZlcmVkIGluIHRoZSB1cHBlciBmaWxlIHN5c3RlbS4KKwkgKi8KKwlpZiAoKmRp
ciA9PSAnLycgJiYgKihkaXIgKyAxKSA9PSAnXDAnKSB7CisJCS8qIElnbm9yZSBpZiBpdCBtb3Vu
dHMgdG8gZ2xvYmFsIHJvb3QgZGlyZWN0b3J5LiAqLworCQlkcF9jb3ZlcmVkID0gbnVsbHB0cjsK
Kwl9IGVsc2UgeworCQlpZiAoKGVycm9yID0gbmFtZWkoZGlyLCAmZHBfY292ZXJlZCkpICE9IDAp
IHsKKworCQkJZXJyb3IgPSBFTk9FTlQ7CisJCQlnb3RvIGVycjI7CisJCX0KKwkJaWYgKGRwX2Nv
dmVyZWQtPmRfdm5vZGUtPnZfdHlwZSAhPSBWRElSKSB7CisJCQllcnJvciA9IEVOT1RESVI7CisJ
CQlnb3RvIGVycjM7CisJCX0KKwl9CisJbXAtPm1fY292ZXJlZCA9IGRwX2NvdmVyZWQ7CisKKwkv
KgorCSAqIENyZWF0ZSBhIHJvb3Qgdm5vZGUgZm9yIHRoaXMgZmlsZSBzeXN0ZW0uCisJICovCisJ
dmdldChtcCwgMCwgJnZwKTsKKwlpZiAodnAgPT0gbnVsbHB0cikgeworCQllcnJvciA9IEVOT01F
TTsKKwkJZ290byBlcnIzOworCX0KKwl2cC0+dl90eXBlID0gVkRJUjsKKwl2cC0+dl9mbGFncyA9
IFZST09UOworCXZwLT52X21vZGUgPSBTX0lGRElSIHwgU19JUlVTUiB8IFNfSVdVU1IgfCBTX0lY
VVNSOworCisJbXAtPm1fcm9vdCA9IGRlbnRyeV9hbGxvYyhudWxscHRyLCB2cCwgIi8iKTsKKwlp
ZiAoIW1wLT5tX3Jvb3QpIHsKKwkJdnB1dCh2cCk7CisJCWdvdG8gZXJyMzsKKwl9CisJdnB1dCh2
cCk7CisKKwkvKgorCSAqIENhbGwgYSBmaWxlIHN5c3RlbSBzcGVjaWZpYyByb3V0aW5lLgorCSAq
LworCWlmICgoZXJyb3IgPSBWRlNfTU9VTlQobXAsIGRldiwgZmxhZ3MsIGRhdGEpKSAhPSAwKQor
CQlnb3RvIGVycjQ7CisKKwlpZiAobXAtPm1fZmxhZ3MgJiBNTlRfUkRPTkxZKQorCQl2cC0+dl9t
b2RlICY9flNfSVdVU1I7CisKKwkvKgorCSAqIEluc2VydCB0byBtb3VudCBsaXN0CisJICovCisJ
V0lUSF9MT0NLKG1vdW50X2xvY2spIHsKKwkJbW91bnRfbGlzdC5wdXNoX2JhY2sobXApOworCX0K
KworCXJldHVybiAwOyAgIC8qIHN1Y2Nlc3MgKi8KICBlcnI0OgotICAgIGRyZWxlKG1wLT5tX3Jv
b3QpOworCWRyZWxlKG1wLT5tX3Jvb3QpOwogIGVycjM6Ci0gICAgaWYgKGRwX2NvdmVyZWQpCi0g
ICAgICAgIGRyZWxlKGRwX2NvdmVyZWQpOworCWlmIChkcF9jb3ZlcmVkKQorCQlkcmVsZShkcF9j
b3ZlcmVkKTsKICBlcnIyOgotICAgIGRlbGV0ZSBtcDsKKwlkZWxldGUgbXA7CiAgZXJyMToKLSAg
ICBpZiAoZGV2aWNlKQotICAgICAgICBkZXZpY2VfY2xvc2UoZGV2aWNlKTsKKwlpZiAoZGV2aWNl
KQorCQlkZXZpY2VfY2xvc2UoZGV2aWNlKTsKIAotICAgIHJldHVybiBlcnJvcjsKKwlyZXR1cm4g
ZXJyb3I7CiB9CiAKIHZvaWQKIHJlbGVhc2VfbXBfZGVudHJpZXMoc3RydWN0IG1vdW50ICptcCkK
IHsKLSAgICAvKiBEZWNyZW1lbnQgcmVmZXJlY2UgY291bnQgb2Ygcm9vdCB2bm9kZSAqLwotICAg
IGlmIChtcC0+bV9jb3ZlcmVkKSB7Ci0gICAgICAgIGRyZWxlKG1wLT5tX2NvdmVyZWQpOwotICAg
IH0KKwkvKiBEZWNyZW1lbnQgcmVmZXJlY2UgY291bnQgb2Ygcm9vdCB2bm9kZSAqLworCWlmICht
cC0+bV9jb3ZlcmVkKSB7CisJCWRyZWxlKG1wLT5tX2NvdmVyZWQpOworCX0KIAotICAgIC8qIFJl
bGVhc2Ugcm9vdCBkZW50cnkgKi8KLSAgICBkcmVsZShtcC0+bV9yb290KTsKKwkvKiBSZWxlYXNl
IHJvb3QgZGVudHJ5ICovCisJZHJlbGUobXAtPm1fcm9vdCk7CiB9CiAKIGludAogc3lzX3Vtb3Vu
dDIoY29uc3QgY2hhciAqcGF0aCwgaW50IGZsYWdzKQogewotICAgIHN0cnVjdCBtb3VudCAqbXA7
Ci0gICAgaW50IGVycm9yLCBwYXRobGVuOworCXN0cnVjdCBtb3VudCAqbXA7CisJaW50IGVycm9y
LCBwYXRobGVuOwogCi0gICAga3ByaW50ZigiVkZTOiB1bm1vdW50aW5nICVzXG4iLCBwYXRoKTsK
KwlrcHJpbnRmKCJWRlM6IHVubW91bnRpbmcgJXNcbiIsIHBhdGgpOwogCi0gICAgU0NPUEVfTE9D
Syhtb3VudF9sb2NrKTsKKwlTQ09QRV9MT0NLKG1vdW50X2xvY2spOwogCi0gICAgcGF0aGxlbiA9
IHN0cmxlbihwYXRoKTsKLSAgICBpZiAocGF0aGxlbiA+PSBNQVhQQVRITEVOKSB7Ci0gICAgICAg
IGVycm9yID0gRU5BTUVUT09MT05HOwotICAgICAgICBnb3RvIG91dDsKLSAgICB9CisJcGF0aGxl
biA9IHN0cmxlbihwYXRoKTsKKwlpZiAocGF0aGxlbiA+PSBNQVhQQVRITEVOKSB7CisJCWVycm9y
ID0gRU5BTUVUT09MT05HOworCQlnb3RvIG91dDsKKwl9CiAKLSAgICAvKiBHZXQgbW91bnQgZW50
cnkgKi8KLSAgICBmb3IgKGF1dG8mJiB0bXAgOiBtb3VudF9saXN0KSB7Ci0gICAgICAgIGlmICgh
c3RyY21wKHBhdGgsIHRtcC0+bV9wYXRoKSkgewotICAgICAgICAgICAgbXAgPSB0bXA7Ci0gICAg
ICAgICAgICBnb3RvIGZvdW5kOwotICAgICAgICB9Ci0gICAgfQorCS8qIEdldCBtb3VudCBlbnRy
eSAqLworCWZvciAoYXV0byYmIHRtcCA6IG1vdW50X2xpc3QpIHsKKwkJaWYgKCFzdHJjbXAocGF0
aCwgdG1wLT5tX3BhdGgpKSB7CisJCQltcCA9IHRtcDsKKwkJCWdvdG8gZm91bmQ7CisJCX0KKwl9
CiAKLSAgICBlcnJvciA9IEVJTlZBTDsKLSAgICBnb3RvIG91dDsKKwllcnJvciA9IEVJTlZBTDsK
Kwlnb3RvIG91dDsKIAogZm91bmQ6Ci0gICAgLyoKLSAgICAgKiBSb290IGZzIGNhbiBub3QgYmUg
dW5tb3VudGVkLgotICAgICAqLwotICAgIGlmIChtcC0+bV9jb3ZlcmVkID09IG51bGxwdHIgJiYg
IShmbGFncyAmIE1OVF9GT1JDRSkpIHsKLSAgICAgICAgZXJyb3IgPSBFSU5WQUw7Ci0gICAgICAg
IGdvdG8gb3V0OwotICAgIH0KLQotICAgIGlmICgoZXJyb3IgPSBWRlNfVU5NT1VOVChtcCwgZmxh
Z3MpKSAhPSAwKQotICAgICAgICBnb3RvIG91dDsKLSAgICBtb3VudF9saXN0LnJlbW92ZShtcCk7
CisJLyoKKwkgKiBSb290IGZzIGNhbiBub3QgYmUgdW5tb3VudGVkLgorCSAqLworCWlmIChtcC0+
bV9jb3ZlcmVkID09IG51bGxwdHIgJiYgIShmbGFncyAmIE1OVF9GT1JDRSkpIHsKKwkJZXJyb3Ig
PSBFSU5WQUw7CisJCWdvdG8gb3V0OworCX0KKworCWlmICgoZXJyb3IgPSBWRlNfVU5NT1VOVCht
cCwgZmxhZ3MpKSAhPSAwKQorCQlnb3RvIG91dDsKKwltb3VudF9saXN0LnJlbW92ZShtcCk7CiAK
ICNpZmRlZiBIQVZFX0JVRkZFUlMKLSAgICAvKiBGbHVzaCBhbGwgYnVmZmVycyAqLwotICAgIGJp
bnZhbChtcC0+bV9kZXYpOworCS8qIEZsdXNoIGFsbCBidWZmZXJzICovCisJYmludmFsKG1wLT5t
X2Rldik7CiAjZW5kaWYKIAotICAgIGlmIChtcC0+bV9kZXYpCi0gICAgICAgIGRldmljZV9jbG9z
ZShtcC0+bV9kZXYpOwotICAgIGRlbGV0ZSBtcDsKKwlpZiAobXAtPm1fZGV2KQorCQlkZXZpY2Vf
Y2xvc2UobXAtPm1fZGV2KTsKKwlkZWxldGUgbXA7CiAgb3V0OgotICAgIHJldHVybiBlcnJvcjsK
KwlyZXR1cm4gZXJyb3I7CiB9CiAKIGludAogc3lzX3Vtb3VudChjb25zdCBjaGFyICpwYXRoKQog
ewotICAgIHJldHVybiBzeXNfdW1vdW50MihwYXRoLCAwKTsKKwlyZXR1cm4gc3lzX3Vtb3VudDIo
cGF0aCwgMCk7CiB9CiAKIGludAogc3lzX3Bpdm90X3Jvb3QoY29uc3QgY2hhciAqbmV3X3Jvb3Qs
IGNvbnN0IGNoYXIgKnB1dF9vbGQpCiB7Ci0gICAgc3RydWN0IG1vdW50ICpuZXdtcCA9IG51bGxw
dHIsICpvbGRtcCA9IG51bGxwdHI7Ci0gICAgaW50IGVycm9yOwotCi0gICAgV0lUSF9MT0NLKG1v
dW50X2xvY2spIHsKLSAgICAgICAgZm9yIChhdXRvJiYgbXAgOiBtb3VudF9saXN0KSB7Ci0gICAg
ICAgICAgICBpZiAoIXN0cmNtcChtcC0+bV9wYXRoLCBuZXdfcm9vdCkpIHsKLSAgICAgICAgICAg
ICAgICBuZXdtcCA9IG1wOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCFzdHJjbXAo
bXAtPm1fcGF0aCwgcHV0X29sZCkpIHsKLSAgICAgICAgICAgICAgICBvbGRtcCA9IG1wOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlmICghbmV3bXAgfHwgIW9sZG1wIHx8IG5l
d21wID09IG9sZG1wKSB7Ci0gICAgICAgICAgICByZXR1cm4gRUlOVkFMOwotICAgICAgICB9Ci0g
ICAgICAgIGZvciAoYXV0byYmIG1wIDogbW91bnRfbGlzdCkgewotICAgICAgICAgICAgaWYgKG1w
ID09IG5ld21wIHx8IG1wID09IG9sZG1wKSB7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoIXN0cm5jbXAobXAtPm1fcGF0aCwgcHV0X29s
ZCwgc3RybGVuKHB1dF9vbGQpKSkgewotICAgICAgICAgICAgICAgIHJldHVybiBFQlVTWTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoKGVycm9yID0gVkZTX1VOTU9VTlQo
b2xkbXAsIDApKSAhPSAwKSB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgIH0K
LSAgICAgICAgbW91bnRfbGlzdC5yZW1vdmUob2xkbXApOwotCi0gICAgICAgIG5ld21wLT5tX3Jv
b3QtPmRfdm5vZGUtPnZfbW91bnQgPSBuZXdtcDsKLQotICAgICAgICBpZiAobmV3bXAtPm1fY292
ZXJlZCkgewotICAgICAgICAgICAgZHJlbGUobmV3bXAtPm1fY292ZXJlZCk7Ci0gICAgICAgIH0K
LSAgICAgICAgbmV3bXAtPm1fY292ZXJlZCA9IG51bGxwdHI7Ci0KLSAgICAgICAgaWYgKG5ld21w
LT5tX3Jvb3QtPmRfcGFyZW50KSB7Ci0gICAgICAgICAgICBkcmVsZShuZXdtcC0+bV9yb290LT5k
X3BhcmVudCk7Ci0gICAgICAgIH0KLSAgICAgICAgbmV3bXAtPm1fcm9vdC0+ZF9wYXJlbnQgPSBu
dWxscHRyOwotCi0gICAgICAgIHN0cmxjcHkobmV3bXAtPm1fcGF0aCwgIi8iLCBzaXplb2YobmV3
bXAtPm1fcGF0aCkpOwotICAgIH0KLSAgICByZXR1cm4gMDsKKwlzdHJ1Y3QgbW91bnQgKm5ld21w
ID0gbnVsbHB0ciwgKm9sZG1wID0gbnVsbHB0cjsKKwlpbnQgZXJyb3I7CisKKwlXSVRIX0xPQ0so
bW91bnRfbG9jaykgeworCQlmb3IgKGF1dG8mJiBtcCA6IG1vdW50X2xpc3QpIHsKKwkJCWlmICgh
c3RyY21wKG1wLT5tX3BhdGgsIG5ld19yb290KSkgeworCQkJCW5ld21wID0gbXA7CisJCQl9CisJ
CQlpZiAoIXN0cmNtcChtcC0+bV9wYXRoLCBwdXRfb2xkKSkgeworCQkJCW9sZG1wID0gbXA7CisJ
CQl9CisJCX0KKwkJaWYgKCFuZXdtcCB8fCAhb2xkbXAgfHwgbmV3bXAgPT0gb2xkbXApIHsKKwkJ
CXJldHVybiBFSU5WQUw7CisJCX0KKwkJZm9yIChhdXRvJiYgbXAgOiBtb3VudF9saXN0KSB7CisJ
CQlpZiAobXAgPT0gbmV3bXAgfHwgbXAgPT0gb2xkbXApIHsKKwkJCQljb250aW51ZTsKKwkJCX0K
KwkJCWlmICghc3RybmNtcChtcC0+bV9wYXRoLCBwdXRfb2xkLCBzdHJsZW4ocHV0X29sZCkpKSB7
CisJCQkJcmV0dXJuIEVCVVNZOworCQkJfQorCQl9CisJCWlmICgoZXJyb3IgPSBWRlNfVU5NT1VO
VChvbGRtcCwgMCkpICE9IDApIHsKKwkJCXJldHVybiBlcnJvcjsKKwkJfQorCQltb3VudF9saXN0
LnJlbW92ZShvbGRtcCk7CisKKwkJbmV3bXAtPm1fcm9vdC0+ZF92bm9kZS0+dl9tb3VudCA9IG5l
d21wOworCisJCWlmIChuZXdtcC0+bV9jb3ZlcmVkKSB7CisJCQlkcmVsZShuZXdtcC0+bV9jb3Zl
cmVkKTsKKwkJfQorCQluZXdtcC0+bV9jb3ZlcmVkID0gbnVsbHB0cjsKKworCQlpZiAobmV3bXAt
Pm1fcm9vdC0+ZF9wYXJlbnQpIHsKKwkJCWRyZWxlKG5ld21wLT5tX3Jvb3QtPmRfcGFyZW50KTsK
KwkJfQorCQluZXdtcC0+bV9yb290LT5kX3BhcmVudCA9IG51bGxwdHI7CisKKwkJc3RybGNweShu
ZXdtcC0+bV9wYXRoLCAiLyIsIHNpemVvZihuZXdtcC0+bV9wYXRoKSk7CisJfQorCXJldHVybiAw
OwogfQogCiBpbnQKIHN5c19zeW5jKHZvaWQpCiB7Ci0gICAgLyogQ2FsbCBlYWNoIG1vdW50ZWQg
ZmlsZSBzeXN0ZW0uICovCi0gICAgV0lUSF9MT0NLKG1vdW50X2xvY2spIHsKLSAgICAgICAgZm9y
IChhdXRvJiYgbXAgOiBtb3VudF9saXN0KSB7Ci0gICAgICAgICAgICBWRlNfU1lOQyhtcCk7Ci0g
ICAgICAgIH0KLSAgICB9CisJLyogQ2FsbCBlYWNoIG1vdW50ZWQgZmlsZSBzeXN0ZW0uICovCisJ
V0lUSF9MT0NLKG1vdW50X2xvY2spIHsKKwkJZm9yIChhdXRvJiYgbXAgOiBtb3VudF9saXN0KSB7
CisJCQlWRlNfU1lOQyhtcCk7CisJCX0KKwl9CiAjaWZkZWYgSEFWRV9CVUZGRVJTCi0gICAgYmlv
X3N5bmMoKTsKKwliaW9fc3luYygpOwogI2VuZGlmCi0gICAgcmV0dXJuIDA7CisJcmV0dXJuIDA7
CiB9CiAKIC8qCkBAIC0zNjAsMjUgKzM2MCwyNSBAQCBzeXNfc3luYyh2b2lkKQogc3RhdGljIHNp
emVfdAogY291bnRfbWF0Y2goY29uc3QgY2hhciAqcGF0aCwgY2hhciAqbW91bnRfcm9vdCkKIHsK
LSAgICBzaXplX3QgbGVuID0gMDsKKwlzaXplX3QgbGVuID0gMDsKIAotICAgIHdoaWxlICgqcGF0
aCAmJiAqbW91bnRfcm9vdCkgewotICAgICAgICBpZiAoKnBhdGggIT0gKm1vdW50X3Jvb3QpCi0g
ICAgICAgICAgICBicmVhazsKKwl3aGlsZSAoKnBhdGggJiYgKm1vdW50X3Jvb3QpIHsKKwkJaWYg
KCpwYXRoICE9ICptb3VudF9yb290KQorCQkJYnJlYWs7CiAKLSAgICAgICAgcGF0aCsrOwotICAg
ICAgICBtb3VudF9yb290Kys7Ci0gICAgICAgIGxlbisrOwotICAgIH0KLSAgICBpZiAoKm1vdW50
X3Jvb3QgIT0gJ1wwJykKLSAgICAgICAgcmV0dXJuIDA7CisJCXBhdGgrKzsKKwkJbW91bnRfcm9v
dCsrOworCQlsZW4rKzsKKwl9CisJaWYgKCptb3VudF9yb290ICE9ICdcMCcpCisJCXJldHVybiAw
OwogCi0gICAgaWYgKGxlbiA9PSAxICYmICoocGF0aCAtIDEpID09ICcvJykKLSAgICAgICAgcmV0
dXJuIDE7CisJaWYgKGxlbiA9PSAxICYmICoocGF0aCAtIDEpID09ICcvJykKKwkJcmV0dXJuIDE7
CiAKLSAgICBpZiAoKnBhdGggPT0gJ1wwJyB8fCAqcGF0aCA9PSAnLycpCi0gICAgICAgIHJldHVy
biBsZW47Ci0gICAgcmV0dXJuIDA7CisJaWYgKCpwYXRoID09ICdcMCcgfHwgKnBhdGggPT0gJy8n
KQorCQlyZXR1cm4gbGVuOworCXJldHVybiAwOwogfQogCiAvKgpAQCAtMzkwLDI4ICszOTAsMjgg
QEAgY291bnRfbWF0Y2goY29uc3QgY2hhciAqcGF0aCwgY2hhciAqbW91bnRfcm9vdCkKIGludAog
dmZzX2ZpbmRyb290KGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBtb3VudCAqKm1wLCBjaGFyICoq
cm9vdCkKIHsKLSAgICBzdHJ1Y3QgbW91bnQgKm0gPSBudWxscHRyOwotICAgIHNpemVfdCBsZW4s
IG1heF9sZW4gPSAwOwotCi0gICAgaWYgKCFwYXRoKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAg
ICAvKiBGaW5kIG1vdW50IHBvaW50IGZyb20gbmVhcmVzdCBwYXRoICovCi0gICAgU0NPUEVfTE9D
Syhtb3VudF9sb2NrKTsKLSAgICBmb3IgKGF1dG8mJiB0bXAgOiBtb3VudF9saXN0KSB7Ci0gICAg
ICAgIGxlbiA9IGNvdW50X21hdGNoKHBhdGgsIHRtcC0+bV9wYXRoKTsKLSAgICAgICAgaWYgKGxl
biA+IG1heF9sZW4pIHsKLSAgICAgICAgICAgIG1heF9sZW4gPSBsZW47Ci0gICAgICAgICAgICBt
ID0gdG1wOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmIChtID09IG51bGxwdHIpCi0gICAgICAg
IHJldHVybiAtMTsKLSAgICAqcm9vdCA9IChjaGFyICopKHBhdGggKyBtYXhfbGVuKTsKLSAgICBp
ZiAoKipyb290ID09ICcvJykKLSAgICAgICAgKCpyb290KSsrOwotICAgICptcCA9IG07Ci0gICAg
cmV0dXJuIDA7CisJc3RydWN0IG1vdW50ICptID0gbnVsbHB0cjsKKwlzaXplX3QgbGVuLCBtYXhf
bGVuID0gMDsKKworCWlmICghcGF0aCkKKwkJcmV0dXJuIC0xOworCisJLyogRmluZCBtb3VudCBw
b2ludCBmcm9tIG5lYXJlc3QgcGF0aCAqLworCVNDT1BFX0xPQ0sobW91bnRfbG9jayk7CisJZm9y
IChhdXRvJiYgdG1wIDogbW91bnRfbGlzdCkgeworCQlsZW4gPSBjb3VudF9tYXRjaChwYXRoLCB0
bXAtPm1fcGF0aCk7CisJCWlmIChsZW4gPiBtYXhfbGVuKSB7CisJCQltYXhfbGVuID0gbGVuOwor
CQkJbSA9IHRtcDsKKwkJfQorCX0KKwlpZiAobSA9PSBudWxscHRyKQorCQlyZXR1cm4gLTE7CisJ
KnJvb3QgPSAoY2hhciAqKShwYXRoICsgbWF4X2xlbik7CisJaWYgKCoqcm9vdCA9PSAnLycpCisJ
CSgqcm9vdCkrKzsKKwkqbXAgPSBtOworCXJldHVybiAwOwogfQogCiAvKgpAQCAtNDIwLDggKzQy
MCw4IEBAIHZmc19maW5kcm9vdChjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3QgbW91bnQgKiptcCwg
Y2hhciAqKnJvb3QpCiB2b2lkCiB2ZnNfYnVzeShzdHJ1Y3QgbW91bnQgKm1wKQogewotICAgIFND
T1BFX0xPQ0sobW91bnRfbG9jayk7Ci0gICAgbXAtPm1fY291bnQrKzsKKwlTQ09QRV9MT0NLKG1v
dW50X2xvY2spOworCW1wLT5tX2NvdW50Kys7CiB9CiAKIApAQCAtNDMxLDQ1ICs0MzEsNDUgQEAg
dmZzX2J1c3koc3RydWN0IG1vdW50ICptcCkKIHZvaWQKIHZmc191bmJ1c3koc3RydWN0IG1vdW50
ICptcCkKIHsKLSAgICBTQ09QRV9MT0NLKG1vdW50X2xvY2spOwotICAgIG1wLT5tX2NvdW50LS07
CisJU0NPUEVfTE9DSyhtb3VudF9sb2NrKTsKKwltcC0+bV9jb3VudC0tOwogfQogCiBpbnQKIHZm
c19udWxsb3Aodm9pZCkKIHsKLSAgICByZXR1cm4gMDsKKwlyZXR1cm4gMDsKIH0KIAogaW50CiB2
ZnNfZWludmFsKHZvaWQpCiB7Ci0gICAgcmV0dXJuIEVJTlZBTDsKKwlyZXR1cm4gRUlOVkFMOwog
fQogCiBuYW1lc3BhY2Ugb3N2IHsKIAogbW91bnRfZGVzYyB0b19tb3VudF9kZXNjKG1vdW50KiBt
KQogewotICAgIG1vdW50X2Rlc2MgcmV0OwotICAgIHJldC5zcGVjaWFsID0gbS0+bV9zcGVjaWFs
OwotICAgIHJldC5wYXRoID0gbS0+bV9wYXRoOwotICAgIHJldC50eXBlID0gZnNfZ2V0ZnNuYW1l
KG0tPm1fb3ApOwotICAgIC8vIEZJWE1FOiByZWNvcmQgb3B0aW9ucwotICAgIHJldC5vcHRpb25z
ID0gIiI7Ci0gICAgcmV0dXJuIHJldDsKKwltb3VudF9kZXNjIHJldDsKKwlyZXQuc3BlY2lhbCA9
IG0tPm1fc3BlY2lhbDsKKwlyZXQucGF0aCA9IG0tPm1fcGF0aDsKKwlyZXQudHlwZSA9IGZzX2dl
dGZzbmFtZShtLT5tX29wKTsKKwkvLyBGSVhNRTogcmVjb3JkIG9wdGlvbnMKKwlyZXQub3B0aW9u
cyA9ICIiOworCXJldHVybiByZXQ7CiB9CiAKIHN0ZDo6dmVjdG9yPG1vdW50X2Rlc2M+CiBjdXJy
ZW50X21vdW50cygpCiB7Ci0gICAgV0lUSF9MT0NLKG1vdW50X2xvY2spIHsKLSAgICAgICAgc3Rk
Ojp2ZWN0b3I8bW91bnRfZGVzYz4gcmV0OwotICAgICAgICBmb3IgKGF1dG8mJiBtcCA6IG1vdW50
X2xpc3QpIHsKLSAgICAgICAgICAgIHJldC5wdXNoX2JhY2sodG9fbW91bnRfZGVzYyhtcCkpOwot
ICAgICAgICB9Ci0gICAgICAgIHJldHVybiByZXQ7Ci0gICAgfQorCVdJVEhfTE9DSyhtb3VudF9s
b2NrKSB7CisJCXN0ZDo6dmVjdG9yPG1vdW50X2Rlc2M+IHJldDsKKwkJZm9yIChhdXRvJiYgbXAg
OiBtb3VudF9saXN0KSB7CisJCQlyZXQucHVzaF9iYWNrKHRvX21vdW50X2Rlc2MobXApKTsKKwkJ
fQorCQlyZXR1cm4gcmV0OworCX0KIH0KIAogfQpAQCAtNDc4LDE0ICs0NzgsMTQgQEAgY3VycmVu
dF9tb3VudHMoKQogdm9pZAogbW91bnRfZHVtcCh2b2lkKQogewotICAgIFNDT1BFX0xPQ0sobW91
bnRfbG9jayk7CisJU0NPUEVfTE9DSyhtb3VudF9sb2NrKTsKIAotICAgIGtwcmludGYoIm1vdW50
X2R1bXBcbiIpOwotICAgIGtwcmludGYoImRldiAgICAgIGNvdW50IHJvb3RcbiIpOwotICAgIGtw
cmludGYoIi0tLS0tLS0tIC0tLS0tIC0tLS0tLS0tXG4iKTsKKwlrcHJpbnRmKCJtb3VudF9kdW1w
XG4iKTsKKwlrcHJpbnRmKCJkZXYgICAgICBjb3VudCByb290XG4iKTsKKwlrcHJpbnRmKCItLS0t
LS0tLSAtLS0tLSAtLS0tLS0tLVxuIik7CiAKLSAgICBmb3IgKGF1dG8mJiBtcCA6IG1vdW50X2xp
c3QpIHsKLSAgICAgICAga3ByaW50ZigiJTh4ICU1ZCAlc1xuIiwgbXAtPm1fZGV2LCBtcC0+bV9j
b3VudCwgbXAtPm1fcGF0aCk7Ci0gICAgfQorCWZvciAoYXV0byYmIG1wIDogbW91bnRfbGlzdCkg
eworCQlrcHJpbnRmKCIlOHggJTVkICVzXG4iLCBtcC0+bV9kZXYsIG1wLT5tX2NvdW50LCBtcC0+
bV9wYXRoKTsKKwl9CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3N5c2NhbGxz
LmMgYi9saWIvdmZzY29yZS9zeXNjYWxscy5jCmluZGV4IDQ4N2Q1NzI5Li5iNTQzM2VjZSAxMDA2
NDQKLS0tIGEvbGliL3Zmc2NvcmUvc3lzY2FsbHMuYworKysgYi9saWIvdmZzY29yZS9zeXNjYWxs
cy5jCkBAIC0yNDUsNzIgKzI0NSw3MiBAQCBpbnQKIHN5c19yZWFkKHN0cnVjdCBmaWxlICpmcCwg
Y29uc3Qgc3RydWN0IGlvdmVjICppb3YsIHNpemVfdCBuaW92LAogCQlvZmZfdCBvZmZzZXQsIHNp
emVfdCAqY291bnQpCiB7Ci0gICAgaWYgKChmcC0+Zl9mbGFncyAmIEZSRUFEKSA9PSAwKQotICAg
ICAgICByZXR1cm4gRUJBREY7Ci0KLSAgICBzaXplX3QgYnl0ZXMgPSAwOwotICAgIGF1dG8gaW92
cCA9IGlvdjsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbmlvdjsgaSsrKSB7Ci0gICAg
ICAgIGlmIChpb3ZwLT5pb3ZfbGVuID4gSU9TSVpFX01BWCAtIGJ5dGVzKSB7Ci0gICAgICAgICAg
ICByZXR1cm4gRUlOVkFMOwotICAgICAgICB9Ci0gICAgICAgIGJ5dGVzICs9IGlvdnAtPmlvdl9s
ZW47Ci0gICAgICAgIGlvdnArKzsKLSAgICB9Ci0KLSAgICBpZiAoYnl0ZXMgPT0gMCkgewotICAg
ICAgICAqY291bnQgPSAwOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBzdHJ1Y3Qg
dWlvIHVpbzsKLSAgICAvLyBVbmZvcnR1bmF0ZWx5LCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlv
biBvZiBmcC0+cmVhZCB6ZXJvcyB0aGUKLSAgICAvLyBpb3ZfbGVuIGZpZWxkcyB3aGVuIGl0IHJl
YWRzIGZyb20gZGlzaywgc28gd2UgaGF2ZSB0byBjb3B5IGlvdi4KLSAgICBzdGQ6OnZlY3Rvcjxp
b3ZlYz4gY29weV9pb3YoaW92LCBpb3YgKyBuaW92KTsKLSAgICB1aW8udWlvX2lvdiA9IGNvcHlf
aW92LmRhdGEoKTsKLSAgICB1aW8udWlvX2lvdmNudCA9IG5pb3Y7Ci0gICAgdWlvLnVpb19vZmZz
ZXQgPSBvZmZzZXQ7Ci0gICAgdWlvLnVpb19yZXNpZCA9IGJ5dGVzOwotICAgIHVpby51aW9fcncg
PSBVSU9fUkVBRDsKLSAgICBhdXRvIGVycm9yID0gZnAtPnJlYWQoJnVpbywgKG9mZnNldCA9PSAt
MSkgPyAwIDogRk9GX09GRlNFVCk7Ci0gICAgKmNvdW50ID0gYnl0ZXMgLSB1aW8udWlvX3Jlc2lk
OwotICAgIHJldHVybiBlcnJvcjsKKwlpZiAoKGZwLT5mX2ZsYWdzICYgRlJFQUQpID09IDApCisJ
CXJldHVybiBFQkFERjsKKworCXNpemVfdCBieXRlcyA9IDA7CisJYXV0byBpb3ZwID0gaW92Owor
CWZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBuaW92OyBpKyspIHsKKwkJaWYgKGlvdnAtPmlvdl9s
ZW4gPiBJT1NJWkVfTUFYIC0gYnl0ZXMpIHsKKwkJCXJldHVybiBFSU5WQUw7CisJCX0KKwkJYnl0
ZXMgKz0gaW92cC0+aW92X2xlbjsKKwkJaW92cCsrOworCX0KKworCWlmIChieXRlcyA9PSAwKSB7
CisJCSpjb3VudCA9IDA7CisJCXJldHVybiAwOworCX0KKworCXN0cnVjdCB1aW8gdWlvOworCS8v
IFVuZm9ydHVuYXRlbHksIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9mIGZwLT5yZWFkIHpl
cm9zIHRoZQorCS8vIGlvdl9sZW4gZmllbGRzIHdoZW4gaXQgcmVhZHMgZnJvbSBkaXNrLCBzbyB3
ZSBoYXZlIHRvIGNvcHkgaW92LgorCXN0ZDo6dmVjdG9yPGlvdmVjPiBjb3B5X2lvdihpb3YsIGlv
diArIG5pb3YpOworCXVpby51aW9faW92ID0gY29weV9pb3YuZGF0YSgpOworCXVpby51aW9faW92
Y250ID0gbmlvdjsKKwl1aW8udWlvX29mZnNldCA9IG9mZnNldDsKKwl1aW8udWlvX3Jlc2lkID0g
Ynl0ZXM7CisJdWlvLnVpb19ydyA9IFVJT19SRUFEOworCWF1dG8gZXJyb3IgPSBmcC0+cmVhZCgm
dWlvLCAob2Zmc2V0ID09IC0xKSA/IDAgOiBGT0ZfT0ZGU0VUKTsKKwkqY291bnQgPSBieXRlcyAt
IHVpby51aW9fcmVzaWQ7CisJcmV0dXJuIGVycm9yOwogfQogCiBpbnQKIHN5c193cml0ZShzdHJ1
Y3QgZmlsZSAqZnAsIGNvbnN0IHN0cnVjdCBpb3ZlYyAqaW92LCBzaXplX3QgbmlvdiwKIAkJb2Zm
X3Qgb2Zmc2V0LCBzaXplX3QgKmNvdW50KQogewotICAgIGlmICgoZnAtPmZfZmxhZ3MgJiBGV1JJ
VEUpID09IDApCi0gICAgICAgIHJldHVybiBFQkFERjsKLQotICAgIHNpemVfdCBieXRlcyA9IDA7
Ci0gICAgYXV0byBpb3ZwID0gaW92OwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBuaW92
OyBpKyspIHsKLSAgICAgICAgaWYgKGlvdnAtPmlvdl9sZW4gPiBJT1NJWkVfTUFYIC0gYnl0ZXMp
IHsKLSAgICAgICAgICAgIHJldHVybiBFSU5WQUw7Ci0gICAgICAgIH0KLSAgICAgICAgYnl0ZXMg
Kz0gaW92cC0+aW92X2xlbjsKLSAgICAgICAgaW92cCsrOwotICAgIH0KLQotICAgIGlmIChieXRl
cyA9PSAwKSB7Ci0gICAgICAgICpjb3VudCA9IDA7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0K
LQotICAgIHN0cnVjdCB1aW8gdWlvOwotICAgIC8vIFVuZm9ydHVuYXRlbHksIHRoZSBjdXJyZW50
IGltcGxlbWVudGF0aW9uIG9mIGZwLT53cml0ZSB6ZXJvcyB0aGUKLSAgICAvLyBpb3ZfbGVuIGZp
ZWxkcyB3aGVuIGl0IHdyaXRlcyB0byBkaXNrLCBzbyB3ZSBoYXZlIHRvIGNvcHkgaW92LgotICAg
IHN0ZDo6dmVjdG9yPGlvdmVjPiBjb3B5X2lvdihpb3YsIGlvdiArIG5pb3YpOwotICAgIHVpby51
aW9faW92ID0gY29weV9pb3YuZGF0YSgpOwotICAgIHVpby51aW9faW92Y250ID0gbmlvdjsKLSAg
ICB1aW8udWlvX29mZnNldCA9IG9mZnNldDsKLSAgICB1aW8udWlvX3Jlc2lkID0gYnl0ZXM7Ci0g
ICAgdWlvLnVpb19ydyA9IFVJT19XUklURTsKLSAgICBhdXRvIGVycm9yID0gZnAtPndyaXRlKCZ1
aW8sIChvZmZzZXQgPT0gLTEpID8gMCA6IEZPRl9PRkZTRVQpOwotICAgICpjb3VudCA9IGJ5dGVz
IC0gdWlvLnVpb19yZXNpZDsKLSAgICByZXR1cm4gZXJyb3I7CisJaWYgKChmcC0+Zl9mbGFncyAm
IEZXUklURSkgPT0gMCkKKwkJcmV0dXJuIEVCQURGOworCisJc2l6ZV90IGJ5dGVzID0gMDsKKwlh
dXRvIGlvdnAgPSBpb3Y7CisJZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG5pb3Y7IGkrKykgewor
CQlpZiAoaW92cC0+aW92X2xlbiA+IElPU0laRV9NQVggLSBieXRlcykgeworCQkJcmV0dXJuIEVJ
TlZBTDsKKwkJfQorCQlieXRlcyArPSBpb3ZwLT5pb3ZfbGVuOworCQlpb3ZwKys7CisJfQorCisJ
aWYgKGJ5dGVzID09IDApIHsKKwkJKmNvdW50ID0gMDsKKwkJcmV0dXJuIDA7CisJfQorCisJc3Ry
dWN0IHVpbyB1aW87CisJLy8gVW5mb3J0dW5hdGVseSwgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRp
b24gb2YgZnAtPndyaXRlIHplcm9zIHRoZQorCS8vIGlvdl9sZW4gZmllbGRzIHdoZW4gaXQgd3Jp
dGVzIHRvIGRpc2ssIHNvIHdlIGhhdmUgdG8gY29weSBpb3YuCisJc3RkOjp2ZWN0b3I8aW92ZWM+
IGNvcHlfaW92KGlvdiwgaW92ICsgbmlvdik7CisJdWlvLnVpb19pb3YgPSBjb3B5X2lvdi5kYXRh
KCk7CisJdWlvLnVpb19pb3ZjbnQgPSBuaW92OworCXVpby51aW9fb2Zmc2V0ID0gb2Zmc2V0Owor
CXVpby51aW9fcmVzaWQgPSBieXRlczsKKwl1aW8udWlvX3J3ID0gVUlPX1dSSVRFOworCWF1dG8g
ZXJyb3IgPSBmcC0+d3JpdGUoJnVpbywgKG9mZnNldCA9PSAtMSkgPyAwIDogRk9GX09GRlNFVCk7
CisJKmNvdW50ID0gYnl0ZXMgLSB1aW8udWlvX3Jlc2lkOworCXJldHVybiBlcnJvcjsKIH0KIAog
aW50CkBAIC0xMjIxLDggKzEyMjEsOCBAQCBzeXNfcmVhZGxpbmsoY2hhciAqcGF0aCwgY2hhciAq
YnVmLCBzaXplX3QgYnVmc2l6ZSwgc3NpemVfdCAqc2l6ZSkKICAqLwogc3RhdGljIGJvb2wgaXNf
dGltZXZhbF92YWxpZChjb25zdCBzdHJ1Y3QgdGltZXZhbCAqdGltZSkKIHsKLSAgICByZXR1cm4g
KHRpbWUtPnR2X3NlYyA+PSAwKSAmJgotICAgICAgICAgICAodGltZS0+dHZfdXNlYyA+PSAwICYm
IHRpbWUtPnR2X3VzZWMgPCAxMDAwMDAwKTsKKwlyZXR1cm4gKHRpbWUtPnR2X3NlYyA+PSAwKSAm
JgorCQkgICAodGltZS0+dHZfdXNlYyA+PSAwICYmIHRpbWUtPnR2X3VzZWMgPCAxMDAwMDAwKTsK
IH0KIAogLyoKQEAgLTEyMzAsNTggKzEyMzAsNTggQEAgc3RhdGljIGJvb2wgaXNfdGltZXZhbF92
YWxpZChjb25zdCBzdHJ1Y3QgdGltZXZhbCAqdGltZSkKICAqLwogc3RhdGljIHZvaWQgY29udmVy
dF90aW1ldmFsKHN0cnVjdCB0aW1lc3BlYyAmdG8sIGNvbnN0IHN0cnVjdCB0aW1ldmFsICpmcm9t
KQogewotICAgIGlmIChmcm9tKSB7Ci0gICAgICAgIHRvLnR2X3NlYyA9IGZyb20tPnR2X3NlYzsK
LSAgICAgICAgdG8udHZfbnNlYyA9IGZyb20tPnR2X3VzZWMgKiAxMDAwOyAvLyBDb252ZXJ0IG1p
Y3Jvc2Vjb25kcyB0byBuYW5vc2Vjb25kcwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGNsb2NrX2dl
dHRpbWUoQ0xPQ0tfUkVBTFRJTUUsICZ0byk7Ci0gICAgfQorCWlmIChmcm9tKSB7CisJCXRvLnR2
X3NlYyA9IGZyb20tPnR2X3NlYzsKKwkJdG8udHZfbnNlYyA9IGZyb20tPnR2X3VzZWMgKiAxMDAw
OyAvLyBDb252ZXJ0IG1pY3Jvc2Vjb25kcyB0byBuYW5vc2Vjb25kcworCX0gZWxzZSB7CisJCWNs
b2NrX2dldHRpbWUoQ0xPQ0tfUkVBTFRJTUUsICZ0byk7CisJfQogfQogCiBpbnQKIHN5c191dGlt
ZXMoY2hhciAqcGF0aCwgY29uc3Qgc3RydWN0IHRpbWV2YWwgdGltZXNbMl0sIGludCBmbGFncykK
IHsKLSAgICBpbnQgZXJyb3I7Ci0gICAgc3RydWN0IGRlbnRyeSAqZHA7Ci0gICAgc3RydWN0IHRp
bWVzcGVjIHRpbWVzcGVjX3RpbWVzWzJdOwotCi0gICAgRFBSSU5URihWRlNEQl9TWVNDQUxMLCAo
InN5c191dGltZXM6IHBhdGg9JXNcbiIsIHBhdGgpKTsKLQotICAgIGlmICh0aW1lcyAmJiAoIWlz
X3RpbWV2YWxfdmFsaWQoJnRpbWVzWzBdKSB8fCAhaXNfdGltZXZhbF92YWxpZCgmdGltZXNbMV0p
KSkKLSAgICAgICAgcmV0dXJuIEVJTlZBTDsKLQotICAgIC8vIENvbnZlcnQgZWFjaCBlbGVtZW50
IG9mIHRpbWV2YWwgYXJyYXkgdG8gdGhlIHRpbWVzcGVjIHR5cGUKLSAgICBjb252ZXJ0X3RpbWV2
YWwodGltZXNwZWNfdGltZXNbMF0sIHRpbWVzID8gdGltZXMgKyAwIDogbnVsbHB0cik7Ci0gICAg
Y29udmVydF90aW1ldmFsKHRpbWVzcGVjX3RpbWVzWzFdLCB0aW1lcyA/IHRpbWVzICsgMSA6IG51
bGxwdHIpOwotCi0gICAgaWYgKGZsYWdzICYgQVRfU1lNTElOS19OT0ZPTExPVykgewotICAgICAg
ICBzdHJ1Y3QgZGVudHJ5ICpkZHA7Ci0gICAgICAgIGVycm9yID0gbG9va3VwKHBhdGgsICZkZHAs
IG51bGxwdHIpOwotICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJv
cjsKLSAgICAgICAgfQotCi0gICAgICAgIGVycm9yID0gbmFtZWlfbGFzdF9ub2ZvbGxvdyhwYXRo
LCBkZHAsICZkcCk7Ci0gICAgICAgIGlmIChkZHAgIT0gbnVsbHB0cikgewotICAgICAgICAgICAg
ZHJlbGUoZGRwKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAg
IHJldHVybiBlcnJvcjsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGVycm9yID0g
bmFtZWkocGF0aCwgJmRwKTsKLSAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAgICAgcmV0dXJu
IGVycm9yOwotICAgIH0KLQotICAgIGlmIChkcC0+ZF9tb3VudC0+bV9mbGFncyAmIE1OVF9SRE9O
TFkpIHsKLSAgICAgICAgZXJyb3IgPSBFUk9GUzsKLSAgICB9IGVsc2UgewotICAgICAgICBlcnJv
ciA9IHZuX3NldHRpbWVzKGRwLT5kX3Zub2RlLCB0aW1lc3BlY190aW1lcyk7Ci0gICAgfQotCi0g
ICAgZHJlbGUoZHApOwotICAgIHJldHVybiBlcnJvcjsKKwlpbnQgZXJyb3I7CisJc3RydWN0IGRl
bnRyeSAqZHA7CisJc3RydWN0IHRpbWVzcGVjIHRpbWVzcGVjX3RpbWVzWzJdOworCisJRFBSSU5U
RihWRlNEQl9TWVNDQUxMLCAoInN5c191dGltZXM6IHBhdGg9JXNcbiIsIHBhdGgpKTsKKworCWlm
ICh0aW1lcyAmJiAoIWlzX3RpbWV2YWxfdmFsaWQoJnRpbWVzWzBdKSB8fCAhaXNfdGltZXZhbF92
YWxpZCgmdGltZXNbMV0pKSkKKwkJcmV0dXJuIEVJTlZBTDsKKworCS8vIENvbnZlcnQgZWFjaCBl
bGVtZW50IG9mIHRpbWV2YWwgYXJyYXkgdG8gdGhlIHRpbWVzcGVjIHR5cGUKKwljb252ZXJ0X3Rp
bWV2YWwodGltZXNwZWNfdGltZXNbMF0sIHRpbWVzID8gdGltZXMgKyAwIDogbnVsbHB0cik7CisJ
Y29udmVydF90aW1ldmFsKHRpbWVzcGVjX3RpbWVzWzFdLCB0aW1lcyA/IHRpbWVzICsgMSA6IG51
bGxwdHIpOworCisJaWYgKGZsYWdzICYgQVRfU1lNTElOS19OT0ZPTExPVykgeworCQlzdHJ1Y3Qg
ZGVudHJ5ICpkZHA7CisJCWVycm9yID0gbG9va3VwKHBhdGgsICZkZHAsIG51bGxwdHIpOworCQlp
ZiAoZXJyb3IpIHsKKwkJCXJldHVybiBlcnJvcjsKKwkJfQorCisJCWVycm9yID0gbmFtZWlfbGFz
dF9ub2ZvbGxvdyhwYXRoLCBkZHAsICZkcCk7CisJCWlmIChkZHAgIT0gbnVsbHB0cikgeworCQkJ
ZHJlbGUoZGRwKTsKKwkJfQorCQlpZiAoZXJyb3IpIHsKKwkJCXJldHVybiBlcnJvcjsKKwkJfQor
CX0gZWxzZSB7CisJCWVycm9yID0gbmFtZWkocGF0aCwgJmRwKTsKKwkJaWYgKGVycm9yKQorCQkJ
cmV0dXJuIGVycm9yOworCX0KKworCWlmIChkcC0+ZF9tb3VudC0+bV9mbGFncyAmIE1OVF9SRE9O
TFkpIHsKKwkJZXJyb3IgPSBFUk9GUzsKKwl9IGVsc2UgeworCQllcnJvciA9IHZuX3NldHRpbWVz
KGRwLT5kX3Zub2RlLCB0aW1lc3BlY190aW1lcyk7CisJfQorCisJZHJlbGUoZHApOworCXJldHVy
biBlcnJvcjsKIH0KIAogLyoKQEAgLTEyODksNyArMTI4OSw3IEBAIHN5c191dGltZXMoY2hhciAq
cGF0aCwgY29uc3Qgc3RydWN0IHRpbWV2YWwgdGltZXNbMl0sIGludCBmbGFncykKICAqLwogc3Rh
dGljIGJvb2wgaXNfdGltZXNwZWNfdmFsaWQoY29uc3Qgc3RydWN0IHRpbWVzcGVjICZ0aW1lKQog
ewotICAgIHJldHVybiAodGltZS50dl9zZWMgPj0gMCkgJiYKKwlyZXR1cm4gKHRpbWUudHZfc2Vj
ID49IDApICYmCiAJICAgKCh0aW1lLnR2X25zZWMgPj0gMCAmJiB0aW1lLnR2X25zZWMgPD0gOTk5
OTk5OTk5KSB8fAogCSAgICB0aW1lLnR2X25zZWMgPT0gVVRJTUVfTk9XIHx8CiAJICAgIHRpbWUu
dHZfbnNlYyA9PSBVVElNRV9PTUlUKTsKQEAgLTEyOTcsNDggKzEyOTcsNDggQEAgc3RhdGljIGJv
b2wgaXNfdGltZXNwZWNfdmFsaWQoY29uc3Qgc3RydWN0IHRpbWVzcGVjICZ0aW1lKQogCiB2b2lk
IGluaXRfdGltZXNwZWMoc3RydWN0IHRpbWVzcGVjICZfdGltZXMsIGNvbnN0IHN0cnVjdCB0aW1l
c3BlYyAqdGltZXMpCiB7Ci0gICAgaWYgKHRpbWVzID09IG51bGxwdHIgfHwgdGltZXMtPnR2X25z
ZWMgPT0gVVRJTUVfTk9XKSB7Ci0gICAgICAgIGNsb2NrX2dldHRpbWUoQ0xPQ0tfUkVBTFRJTUUs
ICZfdGltZXMpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIF90aW1lcy50dl9zZWMgPSB0aW1lcy0+
dHZfc2VjOwotICAgICAgICBfdGltZXMudHZfbnNlYyA9IHRpbWVzLT50dl9uc2VjOwotICAgIH0K
LSAgICByZXR1cm47CisJaWYgKHRpbWVzID09IG51bGxwdHIgfHwgdGltZXMtPnR2X25zZWMgPT0g
VVRJTUVfTk9XKSB7CisJCWNsb2NrX2dldHRpbWUoQ0xPQ0tfUkVBTFRJTUUsICZfdGltZXMpOwor
CX0gZWxzZSB7CisJCV90aW1lcy50dl9zZWMgPSB0aW1lcy0+dHZfc2VjOworCQlfdGltZXMudHZf
bnNlYyA9IHRpbWVzLT50dl9uc2VjOworCX0KKwlyZXR1cm47CiB9CiAKIGludAogc3lzX3V0aW1l
bnNhdChpbnQgZGlyZmQsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBjb25zdCBzdHJ1Y3QgdGltZXNw
ZWMgdGltZXNbMl0sIGludCBmbGFncykKIHsKLSAgICBpbnQgZXJyb3I7Ci0gICAgc3RkOjpzdHJp
bmcgYXA7Ci0gICAgc3RydWN0IHRpbWVzcGVjIHRpbWVzcGVjX3RpbWVzWzJdOwotICAgIGV4dGVy
biBzdHJ1Y3QgdGFzayAqbWFpbl90YXNrOwotICAgIHN0cnVjdCBkZW50cnkgKmRwOworCWludCBl
cnJvcjsKKwlzdGQ6OnN0cmluZyBhcDsKKwlzdHJ1Y3QgdGltZXNwZWMgdGltZXNwZWNfdGltZXNb
Ml07CisJZXh0ZXJuIHN0cnVjdCB0YXNrICptYWluX3Rhc2s7CisJc3RydWN0IGRlbnRyeSAqZHA7
CiAKLSAgICAvKiB1dGltZW5zYXQgc2hvdWxkIHJldHVybiBFTk9FTlQgd2hlbiBwYXRobmFtZSBp
cyBlbXB0eSAqLwotICAgIGlmKHBhdGhuYW1lICYmIHBhdGhuYW1lWzBdID09IDApCi0gICAgICAg
IHJldHVybiBFTk9FTlQ7CisJLyogdXRpbWVuc2F0IHNob3VsZCByZXR1cm4gRU5PRU5UIHdoZW4g
cGF0aG5hbWUgaXMgZW1wdHkgKi8KKwlpZihwYXRobmFtZSAmJiBwYXRobmFtZVswXSA9PSAwKQor
CQlyZXR1cm4gRU5PRU5UOwogCi0gICAgaWYgKGZsYWdzICYmICEoZmxhZ3MgJiBBVF9TWU1MSU5L
X05PRk9MTE9XKSkKLSAgICAgICAgcmV0dXJuIEVJTlZBTDsKKwlpZiAoZmxhZ3MgJiYgIShmbGFn
cyAmIEFUX1NZTUxJTktfTk9GT0xMT1cpKQorCQlyZXR1cm4gRUlOVkFMOwogCi0gICAgaWYgKHRp
bWVzICYmICghaXNfdGltZXNwZWNfdmFsaWQodGltZXNbMF0pIHx8ICFpc190aW1lc3BlY192YWxp
ZCh0aW1lc1sxXSkpKQotICAgICAgICByZXR1cm4gRUlOVkFMOworCWlmICh0aW1lcyAmJiAoIWlz
X3RpbWVzcGVjX3ZhbGlkKHRpbWVzWzBdKSB8fCAhaXNfdGltZXNwZWNfdmFsaWQodGltZXNbMV0p
KSkKKwkJcmV0dXJuIEVJTlZBTDsKIAotICAgIGluaXRfdGltZXNwZWModGltZXNwZWNfdGltZXNb
MF0sIHRpbWVzID8gdGltZXMgKyAwIDogbnVsbHB0cik7Ci0gICAgaW5pdF90aW1lc3BlYyh0aW1l
c3BlY190aW1lc1sxXSwgdGltZXMgPyB0aW1lcyArIDEgOiBudWxscHRyKTsKKwlpbml0X3RpbWVz
cGVjKHRpbWVzcGVjX3RpbWVzWzBdLCB0aW1lcyA/IHRpbWVzICsgMCA6IG51bGxwdHIpOworCWlu
aXRfdGltZXNwZWModGltZXNwZWNfdGltZXNbMV0sIHRpbWVzID8gdGltZXMgKyAxIDogbnVsbHB0
cik7CiAKLSAgICBpZiAocGF0aG5hbWUgJiYgcGF0aG5hbWVbMF0gPT0gJy8nKSB7CisJaWYgKHBh
dGhuYW1lICYmIHBhdGhuYW1lWzBdID09ICcvJykgewogCWFwID0gcGF0aG5hbWU7Ci0gICAgfSBl
bHNlIGlmIChkaXJmZCA9PSBBVF9GRENXRCkgeworCX0gZWxzZSBpZiAoZGlyZmQgPT0gQVRfRkRD
V0QpIHsKIAlpZiAoIXBhdGhuYW1lKQogCSAgICByZXR1cm4gRUZBVUxUOwogCWFwID0gc3RkOjpz
dHJpbmcobWFpbl90YXNrLT50X2N3ZCkgKyAiLyIgKyBwYXRobmFtZTsKLSAgICB9IGVsc2Ugewot
ICAgICAgICBzdHJ1Y3QgZmlsZSAqZnA7Ci0gICAgICAgIGZpbGVyZWYgZihmaWxlcmVmX2Zyb21f
ZmQoZGlyZmQpKTsKKwl9IGVsc2UgeworCQlzdHJ1Y3QgZmlsZSAqZnA7CisJCWZpbGVyZWYgZihm
aWxlcmVmX2Zyb21fZmQoZGlyZmQpKTsKIAotICAgICAgICBpZiAoIWYpCisJCWlmICghZikKIAkg
ICAgcmV0dXJuIEVCQURGOwogCiAJZnAgPSBmLmdldCgpOwpAQCAtMTM1NSwxMzIgKzEzNTUsMTMy
IEBAIHN5c191dGltZW5zYXQoaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwgY29uc3Qg
c3RydWN0IHRpbWVzcGVjIHRpbWVzWzJdLCBpCiAJICAgIGFwID0gZnAtPmZfZGVudHJ5LT5kX3Bh
dGg7CiAKIAlhcCA9IHN0ZDo6c3RyaW5nKGZwLT5mX2RlbnRyeS0+ZF9tb3VudC0+bV9wYXRoKSAr
ICIvIiArIGFwOwotICAgIH0KKwl9CiAKLSAgICAvKiBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIEFU
X1NZTUxJTktfTk9GT0xMT1cgKi8KKwkvKiBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIEFUX1NZTUxJ
TktfTk9GT0xMT1cgKi8KIAotICAgIGVycm9yID0gbmFtZWkoYXAuY19zdHIoKSwgJmRwKTsKKwll
cnJvciA9IG5hbWVpKGFwLmNfc3RyKCksICZkcCk7CiAKLSAgICBpZiAoZXJyb3IpCi0gICAgICAg
IHJldHVybiBlcnJvcjsKKwlpZiAoZXJyb3IpCisJCXJldHVybiBlcnJvcjsKIAotICAgIGlmIChk
cC0+ZF9tb3VudC0+bV9mbGFncyAmIE1OVF9SRE9OTFkpIHsKLSAgICAgICAgZXJyb3IgPSBFUk9G
UzsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAodm5fYWNjZXNzKGRwLT5kX3Zub2RlLCBWV1JJ
VEUpKSB7Ci0gICAgICAgICAgICByZXR1cm4gRUFDQ0VTOwotICAgICAgICB9CisJaWYgKGRwLT5k
X21vdW50LT5tX2ZsYWdzICYgTU5UX1JET05MWSkgeworCQllcnJvciA9IEVST0ZTOworCX0gZWxz
ZSB7CisJCWlmICh2bl9hY2Nlc3MoZHAtPmRfdm5vZGUsIFZXUklURSkpIHsKKwkJCXJldHVybiBF
QUNDRVM7CisJCX0KIAkgICAgaWYgKHRpbWVzICYmCi0gICAgICAgICAgICAgICAodGltZXNbMF0u
dHZfbnNlYyAhPSBVVElNRV9OT1cgfHwgdGltZXNbMV0udHZfbnNlYyAhPSBVVElNRV9OT1cpICYm
Ci0gICAgICAgICAgICAgICAodGltZXNbMF0udHZfbnNlYyAhPSBVVElNRV9PTUlUIHx8IHRpbWVz
WzFdLnR2X25zZWMgIT0gVVRJTUVfT01JVCkgJiYKKwkJCSAgICh0aW1lc1swXS50dl9uc2VjICE9
IFVUSU1FX05PVyB8fCB0aW1lc1sxXS50dl9uc2VjICE9IFVUSU1FX05PVykgJiYKKwkJCSAgICh0
aW1lc1swXS50dl9uc2VjICE9IFVUSU1FX09NSVQgfHwgdGltZXNbMV0udHZfbnNlYyAhPSBVVElN
RV9PTUlUKSAmJgogCSAgICAgICAoIShkcC0+ZF92bm9kZS0+dl9tb2RlICYgflZBUFBFTkQpKSkK
IAkgICAgICAgIHJldHVybiBFUEVSTTsKLSAgICAgICAgZXJyb3IgPSB2bl9zZXR0aW1lcyhkcC0+
ZF92bm9kZSwgdGltZXNwZWNfdGltZXMpOwotICAgIH0KKwkJZXJyb3IgPSB2bl9zZXR0aW1lcyhk
cC0+ZF92bm9kZSwgdGltZXNwZWNfdGltZXMpOworCX0KIAotICAgIGRyZWxlKGRwKTsKLSAgICBy
ZXR1cm4gZXJyb3I7CisJZHJlbGUoZHApOworCXJldHVybiBlcnJvcjsKIH0KIAogaW50CiBzeXNf
ZnV0aW1lbnMoaW50IGZkLCBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgdGltZXNbMl0pCiB7Ci0gICAg
c3RydWN0IGZpbGUgKmZwOworCXN0cnVjdCBmaWxlICpmcDsKIAotICAgIGZpbGVyZWYgZihmaWxl
cmVmX2Zyb21fZmQoZmQpKTsKLSAgICBpZiAoIWYpCi0gICAgICAgIHJldHVybiBFQkFERjsKKwlm
aWxlcmVmIGYoZmlsZXJlZl9mcm9tX2ZkKGZkKSk7CisJaWYgKCFmKQorCQlyZXR1cm4gRUJBREY7
CiAKLSAgICBmcCA9IGYuZ2V0KCk7CisJZnAgPSBmLmdldCgpOwogCi0gICAgaWYgKCFmcC0+Zl9k
ZW50cnkpCi0gICAgICAgIHJldHVybiBFQkFERjsKKwlpZiAoIWZwLT5mX2RlbnRyeSkKKwkJcmV0
dXJuIEVCQURGOwogCi0gICAgc3RkOjpzdHJpbmcgcGF0aG5hbWUgPSBmcC0+Zl9kZW50cnktPmRf
cGF0aDsKLSAgICBhdXRvIGVycm9yID0gc3lzX3V0aW1lbnNhdChBVF9GRENXRCwgcGF0aG5hbWUu
Y19zdHIoKSwgdGltZXMsIDApOwotICAgIHJldHVybiBlcnJvcjsKKwlzdGQ6OnN0cmluZyBwYXRo
bmFtZSA9IGZwLT5mX2RlbnRyeS0+ZF9wYXRoOworCWF1dG8gZXJyb3IgPSBzeXNfdXRpbWVuc2F0
KEFUX0ZEQ1dELCBwYXRobmFtZS5jX3N0cigpLCB0aW1lcywgMCk7CisJcmV0dXJuIGVycm9yOwog
fQogCiBpbnQKIHN5c19mYWxsb2NhdGUoc3RydWN0IGZpbGUgKmZwLCBpbnQgbW9kZSwgbG9mZl90
IG9mZnNldCwgbG9mZl90IGxlbikKIHsKLSAgICBpbnQgZXJyb3I7Ci0gICAgc3RydWN0IHZub2Rl
ICp2cDsKLQotICAgIERQUklOVEYoVkZTREJfU1lTQ0FMTCwgKCJzeXNfZmFsbG9jYXRlOiBmcD0l
eCIsIGZwKSk7Ci0KLSAgICBpZiAoIWZwLT5mX2RlbnRyeSB8fCAhKGZwLT5mX2ZsYWdzICYgRldS
SVRFKSkgewotICAgICAgICByZXR1cm4gRUJBREY7Ci0gICAgfQotCi0gICAgaWYgKG9mZnNldCA8
IDAgfHwgbGVuIDw9IDApIHsKLSAgICAgICAgcmV0dXJuIEVJTlZBTDsKLSAgICB9Ci0KLSAgICAv
LyBTdHJhbmdlLCBidXQgdGhhdCdzIHdoYXQgTGludXggcmV0dXJucy4KLSAgICBpZiAoKG1vZGUg
JiBGQUxMT0NfRkxfUFVOQ0hfSE9MRSkgJiYgIShtb2RlICYgRkFMTE9DX0ZMX0tFRVBfU0laRSkp
IHsKLSAgICAgICAgcmV0dXJuIEVOT1RTVVA7Ci0gICAgfQotCi0gICAgdnAgPSBmcC0+Zl9kZW50
cnktPmRfdm5vZGU7Ci0gICAgdm5fbG9jayh2cCk7Ci0KLSAgICAvLyBOT1RFOiBJdCdzIG5vdCBk
ZXRlY3RlZCBoZXJlIHdoZXRoZXIgb3Igbm90IHRoZSBkZXZpY2UgdW5kZXJseWluZwotICAgIC8v
IHRoZSBmcyBpcyBhIGJsb2NrIGRldmljZS4gSXQncyB1cCB0byB0aGUgZnMgaXRzZWxmIHRlbGwg
dXMgd2hldGhlcgotICAgIC8vIG9yIG5vdCBmYWxsb2NhdGUgaXMgc3VwcG9ydGVkLiBTZWUgYmVs
b3c6Ci0gICAgaWYgKHZwLT52X3R5cGUgIT0gVlJFRyAmJiB2cC0+dl90eXBlICE9IFZESVIpIHsK
LSAgICAgICAgZXJyb3IgPSBFTk9ERVY7Ci0gICAgICAgIGdvdG8gcmV0OwotICAgIH0KLQotICAg
IC8vIEVPUE5PVFNVUFAgaGVyZSBtZWFucyB0aGF0IHRoZSB1bmRlcmx5aW5nIGZpbGUgc3lzdGVt
Ci0gICAgLy8gcmVmZXJyZWQgYnkgdnAgZG9lc24ndCBzdXBwb3J0IGZhbGxvY2F0ZS4KLSAgICBp
ZiAoIXZwLT52X29wLT52b3BfZmFsbG9jYXRlKSB7Ci0gICAgICAgIGVycm9yID0gRU9QTk9UU1VQ
UDsKLSAgICAgICAgZ290byByZXQ7Ci0gICAgfQotCi0gICAgZXJyb3IgPSBWT1BfRkFMTE9DQVRF
KHZwLCBtb2RlLCBvZmZzZXQsIGxlbik7CisJaW50IGVycm9yOworCXN0cnVjdCB2bm9kZSAqdnA7
CisKKwlEUFJJTlRGKFZGU0RCX1NZU0NBTEwsICgic3lzX2ZhbGxvY2F0ZTogZnA9JXgiLCBmcCkp
OworCisJaWYgKCFmcC0+Zl9kZW50cnkgfHwgIShmcC0+Zl9mbGFncyAmIEZXUklURSkpIHsKKwkJ
cmV0dXJuIEVCQURGOworCX0KKworCWlmIChvZmZzZXQgPCAwIHx8IGxlbiA8PSAwKSB7CisJCXJl
dHVybiBFSU5WQUw7CisJfQorCisJLy8gU3RyYW5nZSwgYnV0IHRoYXQncyB3aGF0IExpbnV4IHJl
dHVybnMuCisJaWYgKChtb2RlICYgRkFMTE9DX0ZMX1BVTkNIX0hPTEUpICYmICEobW9kZSAmIEZB
TExPQ19GTF9LRUVQX1NJWkUpKSB7CisJCXJldHVybiBFTk9UU1VQOworCX0KKworCXZwID0gZnAt
PmZfZGVudHJ5LT5kX3Zub2RlOworCXZuX2xvY2sodnApOworCisJLy8gTk9URTogSXQncyBub3Qg
ZGV0ZWN0ZWQgaGVyZSB3aGV0aGVyIG9yIG5vdCB0aGUgZGV2aWNlIHVuZGVybHlpbmcKKwkvLyB0
aGUgZnMgaXMgYSBibG9jayBkZXZpY2UuIEl0J3MgdXAgdG8gdGhlIGZzIGl0c2VsZiB0ZWxsIHVz
IHdoZXRoZXIKKwkvLyBvciBub3QgZmFsbG9jYXRlIGlzIHN1cHBvcnRlZC4gU2VlIGJlbG93Ogor
CWlmICh2cC0+dl90eXBlICE9IFZSRUcgJiYgdnAtPnZfdHlwZSAhPSBWRElSKSB7CisJCWVycm9y
ID0gRU5PREVWOworCQlnb3RvIHJldDsKKwl9CisKKwkvLyBFT1BOT1RTVVBQIGhlcmUgbWVhbnMg
dGhhdCB0aGUgdW5kZXJseWluZyBmaWxlIHN5c3RlbQorCS8vIHJlZmVycmVkIGJ5IHZwIGRvZXNu
J3Qgc3VwcG9ydCBmYWxsb2NhdGUuCisJaWYgKCF2cC0+dl9vcC0+dm9wX2ZhbGxvY2F0ZSkgewor
CQllcnJvciA9IEVPUE5PVFNVUFA7CisJCWdvdG8gcmV0OworCX0KKworCWVycm9yID0gVk9QX0ZB
TExPQ0FURSh2cCwgbW9kZSwgb2Zmc2V0LCBsZW4pOwogcmV0OgotICAgIHZuX3VubG9jayh2cCk7
Ci0gICAgcmV0dXJuIGVycm9yOworCXZuX3VubG9jayh2cCk7CisJcmV0dXJuIGVycm9yOwogfQog
CiBpbnQKIHN5c19jaG1vZChjb25zdCBjaGFyICpwYXRoLCBtb2RlX3QgbW9kZSkKIHsKLSAgICBp
bnQgZXJyb3I7Ci0gICAgc3RydWN0IGRlbnRyeSAqZHA7Ci0gICAgRFBSSU5URihWRlNEQl9TWVND
QUxMLCAoInN5c19jaG1vZDogcGF0aD0lc1xuIiwgcGF0aCkpOwotICAgIGVycm9yID0gbmFtZWko
cGF0aCwgJmRwKTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICBp
ZiAoZHAtPmRfbW91bnQtPm1fZmxhZ3MgJiBNTlRfUkRPTkxZKSB7Ci0gICAgICAgIGVycm9yID0g
RVJPRlM7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZXJyb3IgPSB2bl9zZXRtb2RlKGRwLT5kX3Zu
b2RlLCBtb2RlKTsKLSAgICB9Ci0gICAgZHJlbGUoZHApOwotICAgIHJldHVybiBlcnJvcjsKKwlp
bnQgZXJyb3I7CisJc3RydWN0IGRlbnRyeSAqZHA7CisJRFBSSU5URihWRlNEQl9TWVNDQUxMLCAo
InN5c19jaG1vZDogcGF0aD0lc1xuIiwgcGF0aCkpOworCWVycm9yID0gbmFtZWkocGF0aCwgJmRw
KTsKKwlpZiAoZXJyb3IpCisJCXJldHVybiBlcnJvcjsKKwlpZiAoZHAtPmRfbW91bnQtPm1fZmxh
Z3MgJiBNTlRfUkRPTkxZKSB7CisJCWVycm9yID0gRVJPRlM7CisJfSBlbHNlIHsKKwkJZXJyb3Ig
PSB2bl9zZXRtb2RlKGRwLT5kX3Zub2RlLCBtb2RlKTsKKwl9CisJZHJlbGUoZHApOworCXJldHVy
biBlcnJvcjsKIH0KIAogaW50CiBzeXNfZmNobW9kKGludCBmZCwgbW9kZV90IG1vZGUpCiB7Ci0g
ICAgZmlsZXJlZiBmKGZpbGVyZWZfZnJvbV9mZChmZCkpOwotICAgIGlmICghZikKLSAgICAgICAg
cmV0dXJuIEVCQURGOwotICAgIC8vIFBvc2l4IGlzIGFtYml2YWxlbnQgb24gd2hhdCBmY2htb2Qo
KSBzaG91bGQgZG8gb24gYW4gZmQgdGhhdCBkb2VzIG5vdAotICAgIC8vIHJlZmVyIHRvIGEgcmVh
bCBmaWxlLiBJdCBzdWdnZXN0cyBhbiBpbXBsZW1lbnRhdGlvbiBtYXkgKGJ1dCBub3QgbXVzdCkK
LSAgICAvLyBmYWlsIEVJTlZBTCBvbiBhIHBpcGUsIGNhbiBiZWhhdmUgaW4gYW4gInVuc3BlY2lm
aWVkIiBtYW5uZXIgb24gYQotICAgIC8vIHNvY2tldCwgYW5kIGZvciBhIFNUUkVBTSwgaXQgbXVz
dCBzdWNjZWVkIGFuZCBkbyBub3RoaW5nLiBMaW51eCBzZWVtcwotICAgIC8vIHRvIGp1c3QgZG8g
dGhlIGxhc3QgdGhpbmcgKGRvIG5vdGhpbmcgYW5kIHN1Y2NlZWQpLgotICAgIGlmICghZi0+Zl9k
ZW50cnkpIHsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIGlmIChmLT5mX2RlbnRyeS0+
ZF9tb3VudC0+bV9mbGFncyAmIE1OVF9SRE9OTFkpIHsKLSAgICAgICAgcmV0dXJuIEVST0ZTOwot
ICAgIH0gZWxzZSB7Ci0gICAgICAgIHJldHVybiB2bl9zZXRtb2RlKGYtPmZfZGVudHJ5LT5kX3Zu
b2RlLCBtb2RlKTsKLSAgICB9CisJZmlsZXJlZiBmKGZpbGVyZWZfZnJvbV9mZChmZCkpOworCWlm
ICghZikKKwkJcmV0dXJuIEVCQURGOworCS8vIFBvc2l4IGlzIGFtYml2YWxlbnQgb24gd2hhdCBm
Y2htb2QoKSBzaG91bGQgZG8gb24gYW4gZmQgdGhhdCBkb2VzIG5vdAorCS8vIHJlZmVyIHRvIGEg
cmVhbCBmaWxlLiBJdCBzdWdnZXN0cyBhbiBpbXBsZW1lbnRhdGlvbiBtYXkgKGJ1dCBub3QgbXVz
dCkKKwkvLyBmYWlsIEVJTlZBTCBvbiBhIHBpcGUsIGNhbiBiZWhhdmUgaW4gYW4gInVuc3BlY2lm
aWVkIiBtYW5uZXIgb24gYQorCS8vIHNvY2tldCwgYW5kIGZvciBhIFNUUkVBTSwgaXQgbXVzdCBz
dWNjZWVkIGFuZCBkbyBub3RoaW5nLiBMaW51eCBzZWVtcworCS8vIHRvIGp1c3QgZG8gdGhlIGxh
c3QgdGhpbmcgKGRvIG5vdGhpbmcgYW5kIHN1Y2NlZWQpLgorCWlmICghZi0+Zl9kZW50cnkpIHsK
KwkJcmV0dXJuIDA7CisJfQorCWlmIChmLT5mX2RlbnRyeS0+ZF9tb3VudC0+bV9mbGFncyAmIE1O
VF9SRE9OTFkpIHsKKwkJcmV0dXJuIEVST0ZTOworCX0gZWxzZSB7CisJCXJldHVybiB2bl9zZXRt
b2RlKGYtPmZfZGVudHJ5LT5kX3Zub2RlLCBtb2RlKTsKKwl9CiB9CmRpZmYgLS1naXQgYS9saWIv
dmZzY29yZS90YXNrLmMgYi9saWIvdmZzY29yZS90YXNrLmMKaW5kZXggN2EzNTUwMzQuLmIyYTAy
OGM2IDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS90YXNrLmMKKysrIGIvbGliL3Zmc2NvcmUvdGFz
ay5jCkBAIC00OCw3ICs0OCw3IEBAIHRhc2tfYWxsb2Moc3RydWN0IHRhc2sgKipwdCkKIHsKIAlz
dHJ1Y3QgdGFzayAqdDsKIAotICAgIC8vIEZJWE1FOiB3aGVyZSBkbyB3ZSBmcmVlIHRhc2sgPwor
CS8vIEZJWE1FOiB3aGVyZSBkbyB3ZSBmcmVlIHRhc2sgPwogCWlmICghKHQgPSBuZXcgdGFzaykp
CiAJCXJldHVybiBFTk9NRU07CiAJbWVtc2V0KHQsIDAsIHNpemVvZihzdHJ1Y3QgdGFzaykpOwpA
QCAtMTYwLDggKzE2MCw4IEBAIHRhc2tfY29udihzdHJ1Y3QgdGFzayAqdCwgY29uc3QgY2hhciAq
Y3BhdGgsIGludCBhY2MsIGNoYXIgKmZ1bGwpCiAgKi8KIGludCB2ZnNfZG5hbWVfY29weShjaGFy
ICpkZXN0LCBjb25zdCBjaGFyICpzcmMsIHNpemVfdCBzaXplKQogewotICAgIGlmIChzdHJsY3B5
KGRlc3QsIHNyYywgc2l6ZSkgPj0gc2l6ZSkgewotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQot
ICAgIHJldHVybiAwOworCWlmIChzdHJsY3B5KGRlc3QsIHNyYywgc2l6ZSkgPj0gc2l6ZSkgewor
CQlyZXR1cm4gLTE7CisJfQorCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUv
dmZzLmggYi9saWIvdmZzY29yZS92ZnMuaAppbmRleCBkODZlZjk1Ny4uMmI4MjU1MjEgMTAwNjQ0
Ci0tLSBhL2xpYi92ZnNjb3JlL3Zmcy5oCisrKyBiL2xpYi92ZnNjb3JlL3Zmcy5oCkBAIC0xMjAs
NyArMTIwLDcgQEAgaW50CSBzeXNfdHJ1bmNhdGUoY2hhciAqcGF0aCwgb2ZmX3QgbGVuZ3RoKTsK
IGludAkgc3lzX3JlYWRsaW5rKGNoYXIgKnBhdGgsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnNpemUs
IHNzaXplX3QgKnNpemUpOwogaW50ICBzeXNfdXRpbWVzKGNoYXIgKnBhdGgsIGNvbnN0IHN0cnVj
dCB0aW1ldmFsIHRpbWVzWzJdLCBpbnQgZmxhZ3MpOwogaW50ICBzeXNfdXRpbWVuc2F0KGludCBk
aXJmZCwgY29uc3QgY2hhciAqcGF0aG5hbWUsCi0gICAgICAgICAgICAgICAgICAgY29uc3Qgc3Ry
dWN0IHRpbWVzcGVjIHRpbWVzWzJdLCBpbnQgZmxhZ3MpOworCQkJCSAgIGNvbnN0IHN0cnVjdCB0
aW1lc3BlYyB0aW1lc1syXSwgaW50IGZsYWdzKTsKIGludCAgc3lzX2Z1dGltZW5zKGludCBmZCwg
Y29uc3Qgc3RydWN0IHRpbWVzcGVjIHRpbWVzWzJdKTsKIGludCAgc3lzX2ZhbGxvY2F0ZShzdHJ1
Y3QgZmlsZSAqZnAsIGludCBtb2RlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuKTsKIApkaWZm
IC0tZ2l0IGEvbGliL3Zmc2NvcmUvdm5vZGUuYyBiL2xpYi92ZnNjb3JlL3Zub2RlLmMKaW5kZXgg
YTI5MjM0NGYuLjExOWVkODcwIDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS92bm9kZS5jCisrKyBi
L2xpYi92ZnNjb3JlL3Zub2RlLmMKQEAgLTM3MSwyMiArMzcxLDIyIEBAIHZuX3N0YXQoc3RydWN0
IHZub2RlICp2cCwgc3RydWN0IHN0YXQgKnN0KQogaW50CiB2bl9zZXR0aW1lcyhzdHJ1Y3Qgdm5v
ZGUgKnZwLCBzdHJ1Y3QgdGltZXNwZWMgdGltZXNbMl0pCiB7Ci0gICAgc3RydWN0IHZhdHRyIHZh
dHRyOwotICAgIHN0cnVjdCB2YXR0ciAqdmFwOwotICAgIGludCBlcnJvcjsKLQotICAgIHZhcCA9
ICZ2YXR0cjsKLSAgICBtZW1zZXQodmFwLCAwLCBzaXplb2Yoc3RydWN0IHZhdHRyKSk7Ci0KLSAg
ICB2YXAtPnZhX2F0aW1lID0gdGltZXNbMF07Ci0gICAgdmFwLT52YV9tdGltZSA9IHRpbWVzWzFd
OwotICAgIHZhcC0+dmFfbWFzayA9ICgodGltZXNbMF0udHZfbnNlYyA9PSBVVElNRV9PTUlUKSA/
IDAgOiBBVF9BVElNRSkKLSAgICAgICAgICAgICAgICAgICAgfCAoKHRpbWVzWzFdLnR2X25zZWMg
PT0gVVRJTUVfT01JVCkgPyAwIDogQVRfTVRJTUUpOwotICAgIHZuX2xvY2sodnApOwotICAgIGVy
cm9yID0gVk9QX1NFVEFUVFIodnAsIHZhcCk7Ci0gICAgdm5fdW5sb2NrKHZwKTsKLQotICAgIHJl
dHVybiBlcnJvcjsKKwlzdHJ1Y3QgdmF0dHIgdmF0dHI7CisJc3RydWN0IHZhdHRyICp2YXA7CisJ
aW50IGVycm9yOworCisJdmFwID0gJnZhdHRyOworCW1lbXNldCh2YXAsIDAsIHNpemVvZihzdHJ1
Y3QgdmF0dHIpKTsKKworCXZhcC0+dmFfYXRpbWUgPSB0aW1lc1swXTsKKwl2YXAtPnZhX210aW1l
ID0gdGltZXNbMV07CisJdmFwLT52YV9tYXNrID0gKCh0aW1lc1swXS50dl9uc2VjID09IFVUSU1F
X09NSVQpID8gMCA6IEFUX0FUSU1FKQorCQkJCQl8ICgodGltZXNbMV0udHZfbnNlYyA9PSBVVElN
RV9PTUlUKSA/IDAgOiBBVF9NVElNRSk7CisJdm5fbG9jayh2cCk7CisJZXJyb3IgPSBWT1BfU0VU
QVRUUih2cCwgdmFwKTsKKwl2bl91bmxvY2sodnApOworCisJcmV0dXJuIGVycm9yOwogfQogCiAv
KgpAQCAtMzk1LDE1ICszOTUsMTUgQEAgdm5fc2V0dGltZXMoc3RydWN0IHZub2RlICp2cCwgc3Ry
dWN0IHRpbWVzcGVjIHRpbWVzWzJdKQogaW50CiB2bl9zZXRtb2RlKHN0cnVjdCB2bm9kZSAqdnAs
IG1vZGVfdCBuZXdfbW9kZSkKIHsKLSAgICBzdHJ1Y3QgdmF0dHIgdmF0dHI7Ci0gICAgbWVtc2V0
KCZ2YXR0ciwgMCwgc2l6ZW9mKHZhdHRyKSk7Ci0gICAgdmF0dHIudmFfbW9kZSA9IG5ld19tb2Rl
OwotICAgIHZhdHRyLnZhX21hc2sgPSBBVF9NT0RFOwotICAgIHZuX2xvY2sodnApOwotICAgIHZw
LT52X21vZGUgPSBuZXdfbW9kZTsKLSAgICBpbnQgZXJyb3IgPSBWT1BfU0VUQVRUUih2cCwgJnZh
dHRyKTsKLSAgICB2bl91bmxvY2sodnApOwotICAgIHJldHVybiBlcnJvcjsKKwlzdHJ1Y3QgdmF0
dHIgdmF0dHI7CisJbWVtc2V0KCZ2YXR0ciwgMCwgc2l6ZW9mKHZhdHRyKSk7CisJdmF0dHIudmFf
bW9kZSA9IG5ld19tb2RlOworCXZhdHRyLnZhX21hc2sgPSBBVF9NT0RFOworCXZuX2xvY2sodnAp
OworCXZwLT52X21vZGUgPSBuZXdfbW9kZTsKKwlpbnQgZXJyb3IgPSBWT1BfU0VUQVRUUih2cCwg
JnZhdHRyKTsKKwl2bl91bmxvY2sodnApOworCXJldHVybiBlcnJvcjsKIH0KIAogLyoKLS0gCjIu
MTkuMgoKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpN
aW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9y
ZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRl
dmVs

From minios-devel-bounces@lists.xenproject.org Mon Feb 18 14:55:25 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 18 Feb 2019 14:55:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gvkKL-0004Vk-CK; Mon, 18 Feb 2019 14:55:25 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=odxU=QZ=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gvkKK-0004VX-7Y
 for minios-devel@lists.xen.org; Mon, 18 Feb 2019 14:55:24 +0000
X-Inumbo-ID: 35625dd2-338d-11e9-9e08-839fba9ac4c5
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 35625dd2-338d-11e9-9e08-839fba9ac4c5;
 Mon, 18 Feb 2019 14:55:19 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id BF977F204F;
 Mon, 18 Feb 2019 15:55:18 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id ypdZC5z9koQS; Mon, 18 Feb 2019 15:55:18 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 921B6F202E
 for <minios-devel@lists.xen.org>; Mon, 18 Feb 2019 15:55:16 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 18 Feb 2019 15:55:16 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Mon, 18 Feb 2019 15:54:26 +0100
Message-ID: <20190218145440.30580-9-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190218145440.30580-1-yuri.volchkov@neclab.eu>
References: <20190218145440.30580-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v4 08/22] lib/vfscore: use Unikraft
 includes
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: simon.kuenzer@neclab.eu, sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+ClJl
dmlld2VkLWJ5OiBTaGFyYW4gU2FudGhhbmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xhYi5ldT4K
LS0tCiBsaWIvdmZzY29yZS9kZW50cnkuYyAgICAgICAgICAgICAgICAgfCAgNyArKy0tCiBsaWIv
dmZzY29yZS9mb3BzLmMgICAgICAgICAgICAgICAgICAgfCAxMSArKystLS0tCiBsaWIvdmZzY29y
ZS9pbmNsdWRlL3Zmc2NvcmUvZGVudHJ5LmggfCAgNCArLS0KIGxpYi92ZnNjb3JlL2luY2x1ZGUv
dmZzY29yZS9tb3VudC5oICB8ICA2ICsrLS0KIGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9w
cmV4LmggICB8ICAxIC0KIGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS91aW8uaCAgICB8ICAx
IC0KIGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5oICB8IDEzICsrKystLS0tCiBs
aWIvdmZzY29yZS9sb29rdXAuYyAgICAgICAgICAgICAgICAgfCAgNCArLS0KIGxpYi92ZnNjb3Jl
L21haW4uYyAgICAgICAgICAgICAgICAgICB8IDQ4ICsrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIGxpYi92ZnNjb3JlL21vdW50LmMgICAgICAgICAgICAgICAgICB8IDIxICsrKysrLS0tLS0t
LQogbGliL3Zmc2NvcmUvc3Vicl91aW8uYyAgICAgICAgICAgICAgIHwgIDQgKy0tCiBsaWIvdmZz
Y29yZS9zeXNjYWxscy5jICAgICAgICAgICAgICAgfCAxMiArKysrLS0tCiBsaWIvdmZzY29yZS90
YXNrLmMgICAgICAgICAgICAgICAgICAgfCAgMiArLQogbGliL3Zmc2NvcmUvdmZzLmggICAgICAg
ICAgICAgICAgICAgIHwgMjMgKysrLS0tLS0tLS0tLQogbGliL3Zmc2NvcmUvdm5vZGUuYyAgICAg
ICAgICAgICAgICAgIHwgIDYgKystLQogMTUgZmlsZXMgY2hhbmdlZCwgNTkgaW5zZXJ0aW9ucygr
KSwgMTA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2RlbnRyeS5jIGIv
bGliL3Zmc2NvcmUvZGVudHJ5LmMKaW5kZXggZWZjMTBiZDYuLmNjY2UwN2QxIDEwMDY0NAotLS0g
YS9saWIvdmZzY29yZS9kZW50cnkuYworKysgYi9saWIvdmZzY29yZS9kZW50cnkuYwpAQCAtMzIs
MTAgKzMyLDExIEBACiAKICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4K
LSNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KIAotI2luY2x1ZGUgPG9zdi9kZW50cnkuaD4KLSNpbmNs
dWRlIDxvc3Yvdm5vZGUuaD4KKyNpbmNsdWRlIDx1ay9saXN0Lmg+CisjaW5jbHVkZSA8dmZzY29y
ZS9kZW50cnkuaD4KKyNpbmNsdWRlIDx2ZnNjb3JlL3Zub2RlLmg+CisjaW5jbHVkZSA8dWsvbXV0
ZXguaD4KICNpbmNsdWRlICJ2ZnMuaCIKIAogI2RlZmluZSBERU5UUllfQlVDS0VUUyAzMgpkaWZm
IC0tZ2l0IGEvbGliL3Zmc2NvcmUvZm9wcy5jIGIvbGliL3Zmc2NvcmUvZm9wcy5jCmluZGV4IGYx
YzE2MWU3Li5iNDU4M2QyMCAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvZm9wcy5jCisrKyBiL2xp
Yi92ZnNjb3JlL2ZvcHMuYwpAQCAtMzMsMTQgKzMzLDEzIEBACiAgKiBUSElTIEhFQURFUiBNQVkg
Tk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgogICovCiAKKyNkZWZpbmUg
X0dOVV9TT1VSQ0UKICNpbmNsdWRlIDxmY250bC5oPgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0j
aW5jbHVkZSA8b3N2L2ZpbGUuaD4KLSNpbmNsdWRlIDxvc3YvcG9sbC5oPgotI2luY2x1ZGUgPGZz
L3Zmcy92ZnMuaD4KLSNpbmNsdWRlIDxvc3YvdmZzX2ZpbGUuaGg+Ci0jaW5jbHVkZSA8b3N2L21t
dS5oaD4KLSNpbmNsdWRlIDxvc3YvcGFnZWNhY2hlLmhoPgorI2luY2x1ZGUgPHZmc2NvcmUvZmls
ZS5oPgorI2luY2x1ZGUgInZmcy5oIgorCisjaW5jbHVkZSA8dWsvYXNzZXJ0Lmg+CiAKIGludCB2
ZnNfY2xvc2Uoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnApCiB7CmRpZmYgLS1naXQgYS9saWIvdmZz
Y29yZS9pbmNsdWRlL3Zmc2NvcmUvZGVudHJ5LmggYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2Nv
cmUvZGVudHJ5LmgKaW5kZXggOWNmZThkYWMuLmJhMWMzNDU3IDEwMDY0NAotLS0gYS9saWIvdmZz
Y29yZS9pbmNsdWRlL3Zmc2NvcmUvZGVudHJ5LmgKKysrIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92
ZnNjb3JlL2RlbnRyeS5oCkBAIC0zNiw4ICszNiw4IEBACiAjaWZuZGVmIF9PU1ZfREVOVFJZX0gK
ICNkZWZpbmUgX09TVl9ERU5UUllfSCAxCiAKLSNpbmNsdWRlIDxvc3YvbXV0ZXguaD4KLSNpbmNs
dWRlIDxic2Qvc3lzL3N5cy9xdWV1ZS5oPgorI2luY2x1ZGUgPHVrL211dGV4Lmg+CisjaW5jbHVk
ZSA8dWsvbGlzdC5oPgogCiBzdHJ1Y3Qgdm5vZGU7CiAKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3Jl
L2luY2x1ZGUvdmZzY29yZS9tb3VudC5oIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21v
dW50LmgKaW5kZXggYjY4ZDNjOTguLmUxMmExMDM5IDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9p
bmNsdWRlL3Zmc2NvcmUvbW91bnQuaAorKysgYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUv
bW91bnQuaApAQCAtMzIsMTAgKzMyLDEwIEBACiAjaWZuZGVmIF9TWVNfTU9VTlRfSF8KICNkZWZp
bmUgX1NZU19NT1VOVF9IXwogCi0jaW5jbHVkZSA8c3lzL2NkZWZzLmg+CiAjaW5jbHVkZSA8c3lz
L3N0YXRmcy5oPgotI2luY2x1ZGUgPG9zdi92bm9kZS5oPgotI2luY2x1ZGUgPGJzZC9zeXMvc3lz
L3F1ZXVlLmg+CisjaW5jbHVkZSA8bGltaXRzLmg+CisjaW5jbHVkZSA8dWsvbGlzdC5oPgorI2lu
Y2x1ZGUgPHZmc2NvcmUvdm5vZGUuaD4KIAogI2lmZGVmIF9LRVJORUwKIApkaWZmIC0tZ2l0IGEv
bGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3ByZXguaCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUv
dmZzY29yZS9wcmV4LmgKaW5kZXggNmNiZTMxMzAuLjhhMzA2ZDU0IDEwMDY0NAotLS0gYS9saWIv
dmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvcHJleC5oCisrKyBiL2xpYi92ZnNjb3JlL2luY2x1ZGUv
dmZzY29yZS9wcmV4LmgKQEAgLTM4LDcgKzM4LDYgQEAKIAogCiAjaW5jbHVkZSA8dW5pc3RkLmg+
Ci0jaW5jbHVkZSA8b3N2L2ZjbnRsLmg+CiAKICNkZWZpbmUJQlNJWkUJNTEyCQkvKiBzaXplIG9m
IHNlY29uZGFyeSBibG9jayAoYnl0ZXMpICovCiAKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2lu
Y2x1ZGUvdmZzY29yZS91aW8uaCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS91aW8uaApp
bmRleCBkN2Y3ZmNlOS4uOGFkMWUzZmIgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUv
dmZzY29yZS91aW8uaAorKysgYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdWlvLmgKQEAg
LTMzLDcgKzMzLDYgQEAKICNpZm5kZWYgX1VJT19IXwogI2RlZmluZQlfVUlPX0hfCiAKLSNpbmNs
dWRlIDxzeXMvY2RlZnMuaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDxzeXMv
dWlvLmg+CiAjaW5jbHVkZSA8bGltaXRzLmg+CmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9pbmNs
dWRlL3Zmc2NvcmUvdm5vZGUuaCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5o
CmluZGV4IGQzMGE5NDExLi40OWZkNGQzNiAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvaW5jbHVk
ZS92ZnNjb3JlL3Zub2RlLmgKKysrIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Zub2Rl
LmgKQEAgLTM1LDEzICszNSwxNCBAQAogCiAjaWZkZWYgX0tFUk5FTAogCi0jaW5jbHVkZSA8c3lz
L2NkZWZzLmg+CiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSNpbmNsdWRlIDxvc3YvcHJleC5oPgot
I2luY2x1ZGUgPG9zdi91aW8uaD4KLSNpbmNsdWRlIDxvc3YvbXV0ZXguaD4KLSNpbmNsdWRlICJm
aWxlLmgiCi0jaW5jbHVkZSAiZGlyZW50LmgiCisjaW5jbHVkZSA8ZGlyZW50Lmg+CisKKyNpbmNs
dWRlIDx1ay9tdXRleC5oPgorI2luY2x1ZGUgPHVrL2xpc3QuaD4KKyNpbmNsdWRlIDx0aW1lLmg+
CisjaW5jbHVkZSA8dmZzY29yZS91aW8uaD4KKyNpbmNsdWRlIDx2ZnNjb3JlL2RlbnRyeS5oPgog
CiBzdHJ1Y3QgdmZzb3BzOwogc3RydWN0IHZub3BzOwpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUv
bG9va3VwLmMgYi9saWIvdmZzY29yZS9sb29rdXAuYwppbmRleCBmN2EzOGM0Zi4uOTgzN2U4MWYg
MTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2xvb2t1cC5jCisrKyBiL2xpYi92ZnNjb3JlL2xvb2t1
cC5jCkBAIC0zNiw4ICszNiw4IEBACiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8c3lz
L3BhcmFtLmg+CiAKLSNpbmNsdWRlIDxvc3YvZGVudHJ5Lmg+Ci0jaW5jbHVkZSA8b3N2L3Zub2Rl
Lmg+CisjaW5jbHVkZSA8dmZzY29yZS9kZW50cnkuaD4KKyNpbmNsdWRlIDx2ZnNjb3JlL3Zub2Rl
Lmg+CiAjaW5jbHVkZSAidmZzLmgiCiAKIHN0YXRpYyBzc2l6ZV90CmRpZmYgLS1naXQgYS9saWIv
dmZzY29yZS9tYWluLmMgYi9saWIvdmZzY29yZS9tYWluLmMKaW5kZXggNzQ4NzZkYzEuLjkwZGYz
ZDcxIDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9tYWluLmMKKysrIGIvbGliL3Zmc2NvcmUvbWFp
bi5jCkBAIC0zMCw1MyArMzAsMjMgQEAKICAqIFNVQ0ggREFNQUdFLgogICovCiAKLSNpbmNsdWRl
IDxzeXMvcGFyYW0uaD4KKyNkZWZpbmUgX0dOVV9TT1VSQ0UKKwogI2luY2x1ZGUgPHN5cy9zdGF0
dmZzLmg+CiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSNpbmNsdWRlIDxzeXMvdGltZS5oPgotI2lu
Y2x1ZGUgPHN5cy9zZW5kZmlsZS5oPgotCiAjaW5jbHVkZSA8bGltaXRzLmg+Ci0jaW5jbHVkZSA8
dW5pc3RkLmg+Ci0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDxzdGRpbnQuaD4KLSNpbmNs
dWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDxlcnJuby5oPgot
I2luY2x1ZGUgPHNpZ25hbC5oPgotI2RlZmluZSBvcGVuIF9fb3Blbl92YXJpYWRpYwotI2RlZmlu
ZSBmY250bCBfX2ZjbnRsX3ZhcmlhZGljCiAjaW5jbHVkZSA8ZmNudGwuaD4KLSN1bmRlZiBvcGVu
Ci0jdW5kZWYgZmNudGwKLQotI2luY2x1ZGUgPG9zdi9wcmV4Lmg+Ci0jaW5jbHVkZSA8b3N2L3Zu
b2RlLmg+Ci0jaW5jbHVkZSA8b3N2L3N0dWJiaW5nLmhoPgotI2luY2x1ZGUgPG9zdi9pb2N0bC5o
PgotI2luY2x1ZGUgPG9zdi90cmFjZS5oaD4KLSNpbmNsdWRlIDxvc3YvcnVuLmhoPgotI2luY2x1
ZGUgPGRyaXZlcnMvY29uc29sZS5oaD4KLQorI2luY2x1ZGUgPHZmc2NvcmUvcHJleC5oPgorI2lu
Y2x1ZGUgPHZmc2NvcmUvdm5vZGUuaD4KICNpbmNsdWRlICJ2ZnMuaCIKLQotI2luY2x1ZGUgImxp
YmMvaW50ZXJuYWwvbGliYy5oIgotCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUgPHVu
b3JkZXJlZF9tYXA+Ci0KICNpbmNsdWRlIDxzeXMvZmlsZS5oPgotCi0jaW5jbHVkZSAiZnMvZnMu
aGgiCi0jaW5jbHVkZSAibGliYy9saWJjLmhoIgotCi0jaW5jbHVkZSA8bW50ZW50Lmg+Ci0jaW5j
bHVkZSA8c3lzL21tYW4uaD4KLQotI2luY2x1ZGUgPG9zdi9jbG9jay5oaD4KLSNpbmNsdWRlIDxh
cGkvdXRpbWUuaD4KLSNpbmNsdWRlIDxjaHJvbm8+Ci0KKyNpbmNsdWRlIDxzdGRhcmcuaD4KKyNp
bmNsdWRlIDx2ZnNjb3JlL2ZpbGUuaD4KKyNpbmNsdWRlIDx2ZnNjb3JlL21vdW50Lmg+CisjaW5j
bHVkZSA8dmZzY29yZS9mcy5oPgorI2luY2x1ZGUgPHVrL2VycnB0ci5oPgogCiAjaWZkZWYgREVC
VUdfVkZTCiBpbnQJdmZzX2RlYnVnID0gVkZTREJfRkxBR1M7CmRpZmYgLS1naXQgYS9saWIvdmZz
Y29yZS9tb3VudC5jIGIvbGliL3Zmc2NvcmUvbW91bnQuYwppbmRleCAxMGMyN2ZhZC4uMDY5MjJm
ZmIgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL21vdW50LmMKKysrIGIvbGliL3Zmc2NvcmUvbW91
bnQuYwpAQCAtMzQsMjcgKzM0LDIyIEBACiAgKiB2ZnNfbW91bnQuYyAtIG1vdW50IG9wZXJhdGlv
bnMKICAqLwogCi0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4K
LSNpbmNsdWRlIDxkaXJlbnQuaD4KLQogI2luY2x1ZGUgPGxpbWl0cy5oPgogI2luY2x1ZGUgPHVu
aXN0ZC5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1
ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8ZXJybm8uaD4KLSNpbmNsdWRlIDxmY250bC5oPgotCi0j
aW5jbHVkZSA8b3N2L3ByZXguaD4KLSNpbmNsdWRlIDxvc3Yvdm5vZGUuaD4KLSNpbmNsdWRlIDxv
c3YvZGV2aWNlLmg+Ci0jaW5jbHVkZSA8b3N2L2RlYnVnLmg+Ci0jaW5jbHVkZSA8b3N2L211dGV4
Lmg+CiAjaW5jbHVkZSAidmZzLmgiCi0KLSNpbmNsdWRlIDxtZW1vcnk+Ci0jaW5jbHVkZSA8bGlz
dD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1
ZGUgPHRpbWUuaD4KKyNpbmNsdWRlIDx1ay9saXN0Lmg+CisjaW5jbHVkZSA8dWsvbXV0ZXguaD4K
KyNpbmNsdWRlIDx2ZnNjb3JlL3ByZXguaD4KKyNpbmNsdWRlIDx2ZnNjb3JlL2RlbnRyeS5oPgor
I2luY2x1ZGUgPHZmc2NvcmUvdm5vZGUuaD4KIAogLyoKICAqIExpc3QgZm9yIFZGUyBtb3VudCBw
b2ludHMuCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9zdWJyX3Vpby5jIGIvbGliL3Zmc2NvcmUv
c3Vicl91aW8uYwppbmRleCA4Mjc2ZDZkNC4uYmJjYTMzNjIgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNj
b3JlL3N1YnJfdWlvLmMKKysrIGIvbGliL3Zmc2NvcmUvc3Vicl91aW8uYwpAQCAtMzksMTEgKzM5
LDExIEBACiAgKglAKCMpa2Vybl9zdWJyLmMJOC4zIChCZXJrZWxleSkgMS8yMS85NAogICovCiAK
LSNpbmNsdWRlIDxhc3NlcnQuaD4KKyNpbmNsdWRlIDx1ay9hc3NlcnQuaD4KICNpbmNsdWRlIDxl
cnJuby5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgotI2luY2x1
ZGUgPG9zdi91aW8uaD4KKyNpbmNsdWRlIDx2ZnNjb3JlL3Vpby5oPgogCiBpbnQKIHVpb21vdmUo
dm9pZCAqY3AsIGludCBuLCBzdHJ1Y3QgdWlvICp1aW8pCmRpZmYgLS1naXQgYS9saWIvdmZzY29y
ZS9zeXNjYWxscy5jIGIvbGliL3Zmc2NvcmUvc3lzY2FsbHMuYwppbmRleCA0ZTU1MzM3Zi4uZjUw
ZmIzOGYgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL3N5c2NhbGxzLmMKKysrIGIvbGliL3Zmc2Nv
cmUvc3lzY2FsbHMuYwpAQCAtMzUsNyArMzUsOCBAQAogICogICAgICAgICAgICAgICAgICBhIFZG
UyBzeXN0ZW0gY2FsbC4KICAqLwogCi0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNkZWZpbmUgX0JT
RF9TT1VSQ0UKKyNkZWZpbmUgX0dOVV9TT1VSQ0UKICNpbmNsdWRlIDxkaXJlbnQuaD4KIAogI2lu
Y2x1ZGUgPGxpbWl0cy5oPgpAQCAtNDYsMTEgKzQ3LDEyIEBACiAjaW5jbHVkZSA8ZXJybm8uaD4K
ICNpbmNsdWRlIDxmY250bC5oPgogCi0jaW5jbHVkZSA8b3N2L3ByZXguaD4KLSNpbmNsdWRlIDxv
c3Yvdm5vZGUuaD4KLSNpbmNsdWRlIDxvc3YvdmZzX2ZpbGUuaGg+CisjaW5jbHVkZSA8dmZzY29y
ZS9wcmV4Lmg+CisjaW5jbHVkZSA8dmZzY29yZS92bm9kZS5oPgorI2luY2x1ZGUgPHZmc2NvcmUv
ZmlsZS5oPgorCiAjaW5jbHVkZSAidmZzLmgiCi0jaW5jbHVkZSA8ZnMvZnMuaGg+CisjaW5jbHVk
ZSA8dmZzY29yZS9mcy5oPgogCiBleHRlcm4gc3RydWN0IHRhc2sgKm1haW5fdGFzazsKIApkaWZm
IC0tZ2l0IGEvbGliL3Zmc2NvcmUvdGFzay5jIGIvbGliL3Zmc2NvcmUvdGFzay5jCmluZGV4IDRj
ZWIxMjNiLi43NjM1YmQ3YSAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvdGFzay5jCisrKyBiL2xp
Yi92ZnNjb3JlL3Rhc2suYwpAQCAtNDEsNyArNDEsNyBAQAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAj
aW5jbHVkZSA8ZXJybm8uaD4KIAotI2luY2x1ZGUgPG9zdi9wcmV4Lmg+CisjaW5jbHVkZSA8dmZz
Y29yZS9wcmV4Lmg+CiAjaW5jbHVkZSAidmZzLmgiCiAKIApkaWZmIC0tZ2l0IGEvbGliL3Zmc2Nv
cmUvdmZzLmggYi9saWIvdmZzY29yZS92ZnMuaAppbmRleCBjZDk0MDk3OS4uMjUzMWY3MzAgMTAw
NjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL3Zmcy5oCisrKyBiL2xpYi92ZnNjb3JlL3Zmcy5oCkBAIC0z
MywyNCArMzMsMTIgQEAKICNpZm5kZWYgX1ZGU19ICiAjZGVmaW5lIF9WRlNfSAogCi0jaW5jbHVk
ZSA8c3lzL2NkZWZzLmg+Ci0jaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0jaW5jbHVkZSA8ZGlyZW50Lmg+
Ci0jaW5jbHVkZSA8bGltaXRzLmg+Ci0KLSNpbmNsdWRlIDxvc3YvcHJleC5oPgotI2luY2x1ZGUg
PG9zdi9maWxlLmg+Ci0jaW5jbHVkZSA8b3N2L21vdW50Lmg+Ci0jaW5jbHVkZSA8b3N2L3Zub2Rl
Lmg+Ci0jaW5jbHVkZSA8b3N2L2RlbnRyeS5oPgotI2luY2x1ZGUgPG9zdi9lcnJvci5oPgotCi0v
KgotICogSW1wb3J0IHZub2RlIGF0dHJpYnV0ZXMgZmxhZ3MKLSAqLwotI2luY2x1ZGUgPG9zdi92
bm9kZV9hdHRyLmg+CisjZGVmaW5lIF9HTlVfU09VUkNFCisjaW5jbHVkZSA8dmZzY29yZS9tb3Vu
dC5oPgogCi0vKiAjZGVmaW5lIERFQlVHX1ZGUyAxICovCisjaW5jbHVkZSA8bGltaXRzLmg+Cisj
aW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdGZzLmg+CiAKIC8qCiAgKiBUdW5h
YmxlIHBhcmFtZXRlcnMKQEAgLTU4LDcgKzQ2LDYgQEAKICNkZWZpbmUgRlNNQVhOQU1FUwkxNgkJ
LyogbWF4IGxlbmd0aCBvZiAnZmlsZSBzeXN0ZW0nIG5hbWUgKi8KIAogI2lmZGVmIERFQlVHX1ZG
UwotI2luY2x1ZGUgPG9zdi9kZWJ1Zy5oPgogCiBleHRlcm4gaW50IHZmc19kZWJ1ZzsKIApkaWZm
IC0tZ2l0IGEvbGliL3Zmc2NvcmUvdm5vZGUuYyBiL2xpYi92ZnNjb3JlL3Zub2RlLmMKaW5kZXgg
ZjU2NDU3N2YuLjgxZjc4YmU4IDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS92bm9kZS5jCisrKyBi
L2xpYi92ZnNjb3JlL3Zub2RlLmMKQEAgLTM2LDE0ICszNiwxNiBAQAogCiAjaW5jbHVkZSA8bGlt
aXRzLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVk
ZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNp
bmNsdWRlIDxlcnJuby5oPgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAKLSNpbmNsdWRlIDxvc3Yv
cHJleC5oPgotI2luY2x1ZGUgPG9zdi92bm9kZS5oPgorI2luY2x1ZGUgPHZmc2NvcmUvcHJleC5o
PgorI2luY2x1ZGUgPHZmc2NvcmUvZGVudHJ5Lmg+CisjaW5jbHVkZSA8dmZzY29yZS92bm9kZS5o
PgogI2luY2x1ZGUgInZmcy5oIgogCiBlbnVtIHZ0eXBlIGlmdG92dF90YWJbMTZdID0gewotLSAK
Mi4xOS4yCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
TWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5v
cmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1k
ZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Feb 18 14:55:28 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 18 Feb 2019 14:55:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gvkKO-0004Xa-Du; Mon, 18 Feb 2019 14:55:28 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=odxU=QZ=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gvkKM-0004X0-Gl
 for minios-devel@lists.xen.org; Mon, 18 Feb 2019 14:55:26 +0000
X-Inumbo-ID: 3732333a-338d-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 3732333a-338d-11e9-bc90-bc764e045a96;
 Mon, 18 Feb 2019 14:55:22 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id C8B36104E91;
 Mon, 18 Feb 2019 15:55:21 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id NN4xyV4yuaUF; Mon, 18 Feb 2019 15:55:21 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 26D0E104E55
 for <minios-devel@lists.xen.org>; Mon, 18 Feb 2019 15:55:19 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 18 Feb 2019 15:55:18 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Mon, 18 Feb 2019 15:54:27 +0100
Message-ID: <20190218145440.30580-10-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190218145440.30580-1-yuri.volchkov@neclab.eu>
References: <20190218145440.30580-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v4 09/22] lib/vfscore: use Unikraft
 types and functions
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: simon.kuenzer@neclab.eu, sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogbGliL3Zmc2NvcmUvZGVudHJ5LmMgICAgICAgICAgICAgICAgIHwgMTM3ICsrKysrKysrKysr
KysrLS0tLS0tLS0tLS0tLQogbGliL3Zmc2NvcmUvZm9wcy5jICAgICAgICAgICAgICAgICAgIHwg
ICAyICstCiBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZGVudHJ5LmggfCAgMTAgKy0KIGxp
Yi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9tb3VudC5oICB8ICAgMSArCiBsaWIvdmZzY29yZS9p
bmNsdWRlL3Zmc2NvcmUvcHJleC5oICAgfCAgIDQgKy0KIGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZz
Y29yZS92bm9kZS5oICB8ICAyOSArKystLS0KIGxpYi92ZnNjb3JlL2xvb2t1cC5jICAgICAgICAg
ICAgICAgICB8ICAzMCArKystLS0KIGxpYi92ZnNjb3JlL21haW4uYyAgICAgICAgICAgICAgICAg
ICB8IDEyMSArKysrKysrKysrKy0tLS0tLS0tLS0tLQogbGliL3Zmc2NvcmUvbW91bnQuYyAgICAg
ICAgICAgICAgICAgIHwgMTE2ICsrKysrKysrKysrKystLS0tLS0tLS0tCiBsaWIvdmZzY29yZS9z
dWJyX3Vpby5jICAgICAgICAgICAgICAgfCAgIDIgKy0KIGxpYi92ZnNjb3JlL3N5c2NhbGxzLmMg
ICAgICAgICAgICAgICB8IDEyOCArKysrKysrKysrKystLS0tLS0tLS0tLS0tCiBsaWIvdmZzY29y
ZS92ZnMuaCAgICAgICAgICAgICAgICAgICAgfCAgMzggKysrKy0tLS0KIGxpYi92ZnNjb3JlL3Zu
b2RlLmMgICAgICAgICAgICAgICAgICB8IDEyMiArKysrKysrKysrKystLS0tLS0tLS0tLS0KIDEz
IGZpbGVzIGNoYW5nZWQsIDM3OSBpbnNlcnRpb25zKCspLCAzNjEgZGVsZXRpb25zKC0pCgpkaWZm
IC0tZ2l0IGEvbGliL3Zmc2NvcmUvZGVudHJ5LmMgYi9saWIvdmZzY29yZS9kZW50cnkuYwppbmRl
eCBjY2NlMDdkMS4uZGM5ZGIzNTIgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2RlbnRyeS5jCisr
KyBiL2xpYi92ZnNjb3JlL2RlbnRyeS5jCkBAIC00MSwxOCArNDEsMTggQEAKIAogI2RlZmluZSBE
RU5UUllfQlVDS0VUUyAzMgogCi1zdGF0aWMgTElTVF9IRUFEKGRlbnRyeV9oYXNoX2hlYWQsIGRl
bnRyeSkgZGVudHJ5X2hhc2hfdGFibGVbREVOVFJZX0JVQ0tFVFNdOwotc3RhdGljIExJU1RfSEVB
RChmYWtlLCBkZW50cnkpIGZha2U7Ci1zdGF0aWMgbXV0ZXggZGVudHJ5X2hhc2hfbG9jazsKK3N0
YXRpYyBzdHJ1Y3QgdWtfaGxpc3RfaGVhZCBkZW50cnlfaGFzaF90YWJsZVtERU5UUllfQlVDS0VU
U107CitzdGF0aWMgVUtfSExJU1RfSEVBRChmYWtlKTsKK3N0YXRpYyBzdHJ1Y3QgdWtfbXV0ZXgg
ZGVudHJ5X2hhc2hfbG9jayA9IFVLX01VVEVYX0lOSVRJQUxJWkVSKGRlbnRyeV9oYXNoX2xvY2sp
OwogCiAvKgogICogR2V0IHRoZSBoYXNoIHZhbHVlIGZyb20gdGhlIG1vdW50IHBvaW50IGFuZCBw
YXRoIG5hbWUuCiAgKiBYWFg6IHJlcGxhY2Ugd2l0aCBhIGJldHRlciBoYXNoIGZvciA2NC1iaXQg
cG9pbnRlcnMuCiAgKi8KLXN0YXRpYyB1X2ludAorc3RhdGljIHVuc2lnbmVkIGludAogZGVudHJ5
X2hhc2goc3RydWN0IG1vdW50ICptcCwgY29uc3QgY2hhciAqcGF0aCkKIHsKLQl1X2ludCB2YWwg
PSAwOworCXVuc2lnbmVkIGludCB2YWwgPSAwOwogCiAJaWYgKHBhdGgpIHsKIAkJd2hpbGUgKCpw
YXRoKSB7CkBAIC02NywxMCArNjcsMTAgQEAgc3RydWN0IGRlbnRyeSAqCiBkZW50cnlfYWxsb2Mo
c3RydWN0IGRlbnRyeSAqcGFyZW50X2RwLCBzdHJ1Y3Qgdm5vZGUgKnZwLCBjb25zdCBjaGFyICpw
YXRoKQogewogCXN0cnVjdCBtb3VudCAqbXAgPSB2cC0+dl9tb3VudDsKLQlzdHJ1Y3QgZGVudHJ5
ICpkcCA9IChkZW50cnkqKWNhbGxvYyhzaXplb2YoKmRwKSwgMSk7CisJc3RydWN0IGRlbnRyeSAq
ZHAgPSAoc3RydWN0IGRlbnRyeSopY2FsbG9jKHNpemVvZigqZHApLCAxKTsKIAogCWlmICghZHAp
IHsKLQkJcmV0dXJuIG51bGxwdHI7CisJCXJldHVybiBOVUxMOwogCX0KIAogCXZyZWYodnApOwpA
QCAtNzksMjIgKzc5LDI0IEBAIGRlbnRyeV9hbGxvYyhzdHJ1Y3QgZGVudHJ5ICpwYXJlbnRfZHAs
IHN0cnVjdCB2bm9kZSAqdnAsIGNvbnN0IGNoYXIgKnBhdGgpCiAJZHAtPmRfdm5vZGUgPSB2cDsK
IAlkcC0+ZF9tb3VudCA9IG1wOwogCWRwLT5kX3BhdGggPSBzdHJkdXAocGF0aCk7Ci0JTElTVF9J
TklUKCZkcC0+ZF9jaGlsZHJlbik7CisJVUtfSU5JVF9MSVNUX0hFQUQoJmRwLT5kX2NoaWxkX2xp
c3QpOwogCiAJaWYgKHBhcmVudF9kcCkgewogCQlkcmVmKHBhcmVudF9kcCk7Ci0JCVdJVEhfTE9D
SyhwYXJlbnRfZHAtPmRfbG9jaykgewotCQkJLy8gSW5zZXJ0IGRwIGludG8gaXRzIHBhcmVudCdz
IGNoaWxkcmVuIGxpc3QuCi0JCQlMSVNUX0lOU0VSVF9IRUFEKCZwYXJlbnRfZHAtPmRfY2hpbGRy
ZW4sIGRwLCBkX2NoaWxkcmVuX2xpbmspOwotCQl9CisKKwkJdWtfbXV0ZXhfbG9jaygmcGFyZW50
X2RwLT5kX2xvY2spOworCQkvLyBJbnNlcnQgZHAgaW50byBpdHMgcGFyZW50J3MgY2hpbGRyZW4g
bGlzdC4KKwkJdWtfbGlzdF9hZGQoJmRwLT5kX2NoaWxkX2xpbmssICZwYXJlbnRfZHAtPmRfY2hp
bGRfbGlzdCk7CisJCXVrX211dGV4X3VubG9jaygmcGFyZW50X2RwLT5kX2xvY2spOwogCX0KIAlk
cC0+ZF9wYXJlbnQgPSBwYXJlbnRfZHA7CiAKIAl2bl9hZGRfbmFtZSh2cCwgZHApOwogCi0JbXV0
ZXhfbG9jaygmZGVudHJ5X2hhc2hfbG9jayk7Ci0JTElTVF9JTlNFUlRfSEVBRCgmZGVudHJ5X2hh
c2hfdGFibGVbZGVudHJ5X2hhc2gobXAsIHBhdGgpXSwgZHAsIGRfbGluayk7Ci0JbXV0ZXhfdW5s
b2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKKwl1a19tdXRleF9sb2NrKCZkZW50cnlfaGFzaF9sb2Nr
KTsKKwl1a19obGlzdF9hZGRfaGVhZCgmZHAtPmRfbGluaywKKwkJCSAgJmRlbnRyeV9oYXNoX3Rh
YmxlW2RlbnRyeV9oYXNoKG1wLCBwYXRoKV0pOworCXVrX211dGV4X3VubG9jaygmZGVudHJ5X2hh
c2hfbG9jayk7CiAJcmV0dXJuIGRwOwogfTsKIApAQCAtMTAzLDI5ICsxMDUsMzAgQEAgZGVudHJ5
X2xvb2t1cChzdHJ1Y3QgbW91bnQgKm1wLCBjaGFyICpwYXRoKQogewogCXN0cnVjdCBkZW50cnkg
KmRwOwogCi0JbXV0ZXhfbG9jaygmZGVudHJ5X2hhc2hfbG9jayk7Ci0JTElTVF9GT1JFQUNIKGRw
LCAmZGVudHJ5X2hhc2hfdGFibGVbZGVudHJ5X2hhc2gobXAsIHBhdGgpXSwgZF9saW5rKSB7CisJ
dWtfbXV0ZXhfbG9jaygmZGVudHJ5X2hhc2hfbG9jayk7CisJdWtfaGxpc3RfZm9yX2VhY2hfZW50
cnkoZHAsICZkZW50cnlfaGFzaF90YWJsZVtkZW50cnlfaGFzaChtcCwgcGF0aCldLCBkX2xpbmsp
IHsKIAkJaWYgKGRwLT5kX21vdW50ID09IG1wICYmICFzdHJuY21wKGRwLT5kX3BhdGgsIHBhdGgs
IFBBVEhfTUFYKSkgewogCQkJZHAtPmRfcmVmY250Kys7Ci0JCQltdXRleF91bmxvY2soJmRlbnRy
eV9oYXNoX2xvY2spOworCQkJdWtfbXV0ZXhfdW5sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKIAkJ
CXJldHVybiBkcDsKIAkJfQogCX0KLQltdXRleF91bmxvY2soJmRlbnRyeV9oYXNoX2xvY2spOwot
CXJldHVybiBudWxscHRyOyAgICAgICAgICAgICAgICAvKiBub3QgZm91bmQgKi8KKwl1a19tdXRl
eF91bmxvY2soJmRlbnRyeV9oYXNoX2xvY2spOworCXJldHVybiBOVUxMOyAgICAgICAgICAgICAg
ICAvKiBub3QgZm91bmQgKi8KIH0KIAogc3RhdGljIHZvaWQgZGVudHJ5X2NoaWxkcmVuX3JlbW92
ZShzdHJ1Y3QgZGVudHJ5ICpkcCkKIHsKLQlzdHJ1Y3QgZGVudHJ5ICplbnRyeSA9IG51bGxwdHI7
CisJc3RydWN0IGRlbnRyeSAqZW50cnkgPSBOVUxMOwogCi0JV0lUSF9MT0NLKGRwLT5kX2xvY2sp
IHsKLQkJTElTVF9GT1JFQUNIKGVudHJ5LCAmZHAtPmRfY2hpbGRyZW4sIGRfY2hpbGRyZW5fbGlu
aykgewotCQkJQVNTRVJUKGVudHJ5KTsKLQkJCUFTU0VSVChlbnRyeS0+ZF9yZWZjbnQgPiAwKTsK
LQkJCUxJU1RfUkVNT1ZFKGVudHJ5LCBkX2xpbmspOwotCQl9CisJdWtfbXV0ZXhfbG9jaygmZHAt
PmRfbG9jayk7CisJdWtfbGlzdF9mb3JfZWFjaF9lbnRyeShlbnRyeSwgJmRwLT5kX2NoaWxkX2xp
c3QsIGRfY2hpbGRfbGluaykgeworCQlVS19BU1NFUlQoZW50cnkpOworCQlVS19BU1NFUlQoZW50
cnktPmRfcmVmY250ID4gMCk7CisJCXVrX2hsaXN0X2RlbCgmZW50cnktPmRfbGluayk7CiAJfQor
CXVrX211dGV4X3VubG9jaygmZHAtPmRfbG9jayk7CisKIH0KIAogdm9pZApAQCAtMTM1LDMzICsx
MzgsMzQgQEAgZGVudHJ5X21vdmUoc3RydWN0IGRlbnRyeSAqZHAsIHN0cnVjdCBkZW50cnkgKnBh
cmVudF9kcCwgY2hhciAqcGF0aCkKIAljaGFyICpvbGRfcGF0aCA9IGRwLT5kX3BhdGg7CiAKIAlp
ZiAob2xkX3BkcCkgewotCQlXSVRIX0xPQ0sob2xkX3BkcC0+ZF9sb2NrKSB7Ci0JCQkvLyBSZW1v
dmUgZHAgZnJvbSBpdHMgb2xkIHBhcmVudCdzIGNoaWxkcmVuIGxpc3QuCi0JCQlMSVNUX1JFTU9W
RShkcCwgZF9jaGlsZHJlbl9saW5rKTsKLQkJfQorCQl1a19tdXRleF9sb2NrKCZvbGRfcGRwLT5k
X2xvY2spOworCQkvLyBSZW1vdmUgZHAgZnJvbSBpdHMgb2xkIHBhcmVudCdzIGNoaWxkcmVuIGxp
c3QuCisJCXVrX2xpc3RfZGVsKCZkcC0+ZF9jaGlsZF9saW5rKTsKKwkJdWtfbXV0ZXhfdW5sb2Nr
KCZvbGRfcGRwLT5kX2xvY2spOwogCX0KIAogCWlmIChwYXJlbnRfZHApIHsKIAkJZHJlZihwYXJl
bnRfZHApOwotCQlXSVRIX0xPQ0socGFyZW50X2RwLT5kX2xvY2spIHsKLQkJCS8vIEluc2VydCBk
cCBpbnRvIGl0cyBuZXcgcGFyZW50J3MgY2hpbGRyZW4gbGlzdC4KLQkJCUxJU1RfSU5TRVJUX0hF
QUQoJnBhcmVudF9kcC0+ZF9jaGlsZHJlbiwgZHAsIGRfY2hpbGRyZW5fbGluayk7Ci0JCX0KLQl9
CiAKLQlXSVRIX0xPQ0soZGVudHJ5X2hhc2hfbG9jaykgewotCQkvLyBSZW1vdmUgYWxsIGRwJ3Mg
Y2hpbGQgZGVudHJpZXMgZnJvbSB0aGUgaGFzaHRhYmxlLgotCQlkZW50cnlfY2hpbGRyZW5fcmVt
b3ZlKGRwKTsKLQkJLy8gUmVtb3ZlIGRwIHdpdGggb3V0ZGF0ZWQgaGFzaCBpbmZvIGZyb20gdGhl
IGhhc2h0YWJsZS4KLQkJTElTVF9SRU1PVkUoZHAsIGRfbGluayk7Ci0JCS8vIFVwZGF0ZSBkcC4K
LQkJZHAtPmRfcGF0aCA9IHN0cmR1cChwYXRoKTsKLQkJZHAtPmRfcGFyZW50ID0gcGFyZW50X2Rw
OwotCQkvLyBJbnNlcnQgZHAgdXBkYXRlZCBoYXNoIGluZm8gaW50byB0aGUgaGFzaHRhYmxlLgot
CQlMSVNUX0lOU0VSVF9IRUFEKCZkZW50cnlfaGFzaF90YWJsZVtkZW50cnlfaGFzaChkcC0+ZF9t
b3VudCwgcGF0aCldLAotCQkJZHAsIGRfbGluayk7CisJCXVrX211dGV4X2xvY2soJnBhcmVudF9k
cC0+ZF9sb2NrKTsKKwkJLy8gSW5zZXJ0IGRwIGludG8gaXRzIG5ldyBwYXJlbnQncyBjaGlsZHJl
biBsaXN0LgorCQl1a19saXN0X2FkZCgmZHAtPmRfY2hpbGRfbGluaywgJnBhcmVudF9kcC0+ZF9j
aGlsZF9saXN0KTsKKwkJdWtfbXV0ZXhfdW5sb2NrKCZwYXJlbnRfZHAtPmRfbG9jayk7CiAJfQog
CisJdWtfbXV0ZXhfbG9jaygmZGVudHJ5X2hhc2hfbG9jayk7CisJLy8gUmVtb3ZlIGFsbCBkcCdz
IGNoaWxkIGRlbnRyaWVzIGZyb20gdGhlIGhhc2h0YWJsZS4KKwlkZW50cnlfY2hpbGRyZW5fcmVt
b3ZlKGRwKTsKKwkvLyBSZW1vdmUgZHAgd2l0aCBvdXRkYXRlZCBoYXNoIGluZm8gZnJvbSB0aGUg
aGFzaHRhYmxlLgorCXVrX2hsaXN0X2RlbCgmZHAtPmRfbGluayk7CisJLy8gVXBkYXRlIGRwLgor
CWRwLT5kX3BhdGggPSBzdHJkdXAocGF0aCk7CisJZHAtPmRfcGFyZW50ID0gcGFyZW50X2RwOwor
CS8vIEluc2VydCBkcCB1cGRhdGVkIGhhc2ggaW5mbyBpbnRvIHRoZSBoYXNodGFibGUuCisJdWtf
aGxpc3RfYWRkX2hlYWQoJmRwLT5kX2xpbmssCisJCQkgICZkZW50cnlfaGFzaF90YWJsZVtkZW50
cnlfaGFzaChkcC0+ZF9tb3VudCwgcGF0aCldKTsKKwl1a19tdXRleF91bmxvY2soJmRlbnRyeV9o
YXNoX2xvY2spOworCiAJaWYgKG9sZF9wZHApIHsKIAkJZHJlbGUob2xkX3BkcCk7CiAJfQpAQCAt
MTcyLDQ1ICsxNzYsNDYgQEAgZGVudHJ5X21vdmUoc3RydWN0IGRlbnRyeSAqZHAsIHN0cnVjdCBk
ZW50cnkgKnBhcmVudF9kcCwgY2hhciAqcGF0aCkKIHZvaWQKIGRlbnRyeV9yZW1vdmUoc3RydWN0
IGRlbnRyeSAqZHApCiB7Ci0JbXV0ZXhfbG9jaygmZGVudHJ5X2hhc2hfbG9jayk7Ci0JTElTVF9S
RU1PVkUoZHAsIGRfbGluayk7CisJdWtfbXV0ZXhfbG9jaygmZGVudHJ5X2hhc2hfbG9jayk7CisJ
dWtfaGxpc3RfZGVsKCZkcC0+ZF9saW5rKTsKIAkvKiBwdXQgaXQgb24gYSBmYWtlIGxpc3QgZm9y
IGRyZWxlKCkgdG8gd29yayovCi0JTElTVF9JTlNFUlRfSEVBRCgmZmFrZSwgZHAsIGRfbGluayk7
Ci0JbXV0ZXhfdW5sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKKwl1a19obGlzdF9hZGRfaGVhZCgm
ZHAtPmRfbGluaywgJmZha2UpOworCXVrX211dGV4X3VubG9jaygmZGVudHJ5X2hhc2hfbG9jayk7
CiB9CiAKIHZvaWQKIGRyZWYoc3RydWN0IGRlbnRyeSAqZHApCiB7Ci0JQVNTRVJUKGRwKTsKLQlB
U1NFUlQoZHAtPmRfcmVmY250ID4gMCk7CisJVUtfQVNTRVJUKGRwKTsKKwlVS19BU1NFUlQoZHAt
PmRfcmVmY250ID4gMCk7CiAKLQltdXRleF9sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKKwl1a19t
dXRleF9sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKIAlkcC0+ZF9yZWZjbnQrKzsKLQltdXRleF91
bmxvY2soJmRlbnRyeV9oYXNoX2xvY2spOworCXVrX211dGV4X3VubG9jaygmZGVudHJ5X2hhc2hf
bG9jayk7CiB9CiAKIHZvaWQKIGRyZWxlKHN0cnVjdCBkZW50cnkgKmRwKQogewotCUFTU0VSVChk
cCk7Ci0JQVNTRVJUKGRwLT5kX3JlZmNudCA+IDApOworCVVLX0FTU0VSVChkcCk7CisJVUtfQVNT
RVJUKGRwLT5kX3JlZmNudCA+IDApOwogCi0JbXV0ZXhfbG9jaygmZGVudHJ5X2hhc2hfbG9jayk7
CisJdWtfbXV0ZXhfbG9jaygmZGVudHJ5X2hhc2hfbG9jayk7CiAJaWYgKC0tZHAtPmRfcmVmY250
KSB7Ci0JCW11dGV4X3VubG9jaygmZGVudHJ5X2hhc2hfbG9jayk7CisJCXVrX211dGV4X3VubG9j
aygmZGVudHJ5X2hhc2hfbG9jayk7CiAJCXJldHVybjsKIAl9Ci0JTElTVF9SRU1PVkUoZHAsIGRf
bGluayk7CisJdWtfaGxpc3RfZGVsKCZkcC0+ZF9saW5rKTsKIAl2bl9kZWxfbmFtZShkcC0+ZF92
bm9kZSwgZHApOwogCi0JbXV0ZXhfdW5sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKKwl1a19tdXRl
eF91bmxvY2soJmRlbnRyeV9oYXNoX2xvY2spOwogCiAJaWYgKGRwLT5kX3BhcmVudCkgewotCQlX
SVRIX0xPQ0soZHAtPmRfcGFyZW50LT5kX2xvY2spIHsKLQkJCS8vIFJlbW92ZSBkcCBmcm9tIGl0
cyBwYXJlbnQncyBjaGlsZHJlbiBsaXN0LgotCQkJTElTVF9SRU1PVkUoZHAsIGRfY2hpbGRyZW5f
bGluayk7Ci0JCX0KKwkJdWtfbXV0ZXhfbG9jaygmZHAtPmRfcGFyZW50LT5kX2xvY2spOworCQkv
LyBSZW1vdmUgZHAgZnJvbSBpdHMgcGFyZW50J3MgY2hpbGRyZW4gbGlzdC4KKwkJdWtfbGlzdF9k
ZWwoJmRwLT5kX2NoaWxkX2xpbmspOworCQl1a19tdXRleF91bmxvY2soJmRwLT5kX3BhcmVudC0+
ZF9sb2NrKTsKKwogCQlkcmVsZShkcC0+ZF9wYXJlbnQpOwogCX0KIApAQCAtMjI2LDYgKzIzMSw2
IEBAIGRlbnRyeV9pbml0KHZvaWQpCiAJaW50IGk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgREVOVFJZ
X0JVQ0tFVFM7IGkrKykgewotCQlMSVNUX0lOSVQoJmRlbnRyeV9oYXNoX3RhYmxlW2ldKTsKKwkJ
VUtfSU5JVF9ITElTVF9IRUFEKCZkZW50cnlfaGFzaF90YWJsZVtpXSk7CiAJfQogfQpkaWZmIC0t
Z2l0IGEvbGliL3Zmc2NvcmUvZm9wcy5jIGIvbGliL3Zmc2NvcmUvZm9wcy5jCmluZGV4IGI0NTgz
ZDIwLi43OTExNGUyMSAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvZm9wcy5jCisrKyBiL2xpYi92
ZnNjb3JlL2ZvcHMuYwpAQCAtMTE1LDcgKzExNSw3IEBAIGludCB2ZnNfd3JpdGUoc3RydWN0IHZm
c2NvcmVfZmlsZSAqZnAsIHN0cnVjdCB1aW8gKnVpbywgaW50IGZsYWdzKQogCXJldHVybiBlcnJv
cjsKIH0KIAotaW50IHZmc19pb2N0bChzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCwgdV9sb25nIGNv
bSwgdm9pZCAqZGF0YSkKK2ludCB2ZnNfaW9jdGwoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAsIHVu
c2lnbmVkIGxvbmcgY29tLCB2b2lkICpkYXRhKQogewogCXN0cnVjdCB2bm9kZSAqdnAgPSBmcC0+
Zl9kZW50cnktPmRfdm5vZGU7CiAJaW50IGVycm9yOwpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUv
aW5jbHVkZS92ZnNjb3JlL2RlbnRyeS5oIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2Rl
bnRyeS5oCmluZGV4IGJhMWMzNDU3Li44NWYzN2FiNyAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUv
aW5jbHVkZS92ZnNjb3JlL2RlbnRyeS5oCisrKyBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29y
ZS9kZW50cnkuaApAQCAtNDIsMTYgKzQyLDE2IEBACiBzdHJ1Y3Qgdm5vZGU7CiAKIHN0cnVjdCBk
ZW50cnkgewotCUxJU1RfRU5UUlkoZGVudHJ5KSBkX2xpbms7CS8qIGxpbmsgZm9yIGhhc2ggbGlz
dCAqLworCXN0cnVjdCB1a19obGlzdF9ub2RlIGRfbGluazsJLyogbGluayBmb3IgaGFzaCBsaXN0
ICovCiAJaW50CQlkX3JlZmNudDsJLyogcmVmZXJlbmNlIGNvdW50ICovCiAJY2hhcgkJKmRfcGF0
aDsJLyogcG9pbnRlciB0byBwYXRoIGluIGZzICovCiAJc3RydWN0IHZub2RlCSpkX3Zub2RlOwog
CXN0cnVjdCBtb3VudAkqZF9tb3VudDsKIAlzdHJ1Y3QgZGVudHJ5ICAgKmRfcGFyZW50OyAvKiBw
b2ludGVyIHRvIHBhcmVudCAqLwotCUxJU1RfRU5UUlkoZGVudHJ5KSBkX25hbWVzX2xpbms7IC8q
IGxpbmsgZm8gdm5vZGU6OmRfbmFtZXMgKi8KLQltdXRleF90CQlkX2xvY2s7Ci0JTElTVF9IRUFE
KCwgZGVudHJ5KSBkX2NoaWxkcmVuOwotCUxJU1RfRU5UUlkoZGVudHJ5KSBkX2NoaWxkcmVuX2xp
bms7CisJc3RydWN0IHVrX2xpc3RfaGVhZCBkX25hbWVzX2xpbms7IC8qIGxpbmsgZm8gdm5vZGU6
OmRfbmFtZXMgKi8KKwlzdHJ1Y3QgdWtfbXV0ZXgJZF9sb2NrOworCXN0cnVjdCB1a19saXN0X2hl
YWQgZF9jaGlsZF9saXN0OworCXN0cnVjdCB1a19saXN0X2hlYWQgZF9jaGlsZF9saW5rOwogfTsK
IAogI2VuZGlmIC8qIF9PU1ZfREVOVFJZX0ggKi8KZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2lu
Y2x1ZGUvdmZzY29yZS9tb3VudC5oIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21vdW50
LmgKaW5kZXggZTEyYTEwMzkuLjdhNjM4ZGJlIDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9pbmNs
dWRlL3Zmc2NvcmUvbW91bnQuaAorKysgYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvbW91
bnQuaApAQCAtNTIsNiArNTIsNyBAQCBzdHJ1Y3QgbW91bnQgewogCXN0cnVjdCBkZW50cnkJKm1f
cm9vdDsJLyogcm9vdCB2bm9kZSAqLwogCXN0cnVjdCBkZW50cnkJKm1fY292ZXJlZDsJLyogdm5v
ZGUgY292ZXJlZCBvbiBwYXJlbnQgZnMgKi8KIAl2b2lkCQkqbV9kYXRhOwkvKiBwcml2YXRlIGRh
dGEgZm9yIGZzICovCisJc3RydWN0IHVrX2xpc3RfaGVhZCBtbnRfbGlzdDsKIAlmc2lkX3QgCQlt
X2ZzaWQ7IAkvKiBpZCB0aGF0IHVuaXF1ZWx5IGlkZW50aWZpZXMgdGhlIGZzICovCiB9OwogCmRp
ZmYgLS1naXQgYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvcHJleC5oIGIvbGliL3Zmc2Nv
cmUvaW5jbHVkZS92ZnNjb3JlL3ByZXguaAppbmRleCA4YTMwNmQ1NC4uOGVlZDllNGQgMTAwNjQ0
Ci0tLSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9wcmV4LmgKKysrIGIvbGliL3Zmc2Nv
cmUvaW5jbHVkZS92ZnNjb3JlL3ByZXguaApAQCAtNDMsOSArNDMsNyBAQAogCiAjZGVmaW5lIERP
X1JEV1IJCTB4MgogCi0jZGVmaW5lIFBBR0VfU0laRQk0MDk2Ci0jZGVmaW5lIFBBR0VfTUFTSwko
UEFHRV9TSVpFLTEpCi0jZGVmaW5lIHJvdW5kX3BhZ2UoeCkJKCgoeCkgKyBQQUdFX01BU0spICYg
flBBR0VfTUFTSykKKyNkZWZpbmUgcm91bmRfcGFnZSh4KQkoKCh4KSArIF9fUEFHRV9NQVNLKSAm
IH5fX1BBR0VfTUFTSykKIAogc2l6ZV90IHN0cmxjYXQoY2hhciAqZHN0LCBjb25zdCBjaGFyICpz
cmMsIHNpemVfdCBzaXopOwogc2l6ZV90IHN0cmxjcHkoY2hhciAqZHN0LCBjb25zdCBjaGFyICpz
cmMsIHNpemVfdCBzaXopOwpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3Jl
L3Zub2RlLmggYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUuaAppbmRleCA0OWZk
NGQzNi4uYTRkYjljMTMgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92
bm9kZS5oCisrKyBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5oCkBAIC00Nyw3
ICs0Nyw3IEBACiBzdHJ1Y3QgdmZzb3BzOwogc3RydWN0IHZub3BzOwogc3RydWN0IHZub2RlOwot
c3RydWN0IGZpbGU7CitzdHJ1Y3QgdmZzY29yZV9maWxlOwogCiAvKgogICogVm5vZGUgdHlwZXMu
CkBAIC03MCw3ICs3MCw3IEBAIGVudW0gdnR5cGUgewogICovCiBzdHJ1Y3Qgdm5vZGUgewogCXVp
bnQ2NF90CXZfaW5vOwkJLyogaW5vZGUgbnVtYmVyICovCi0JTElTVF9FTlRSWSh2bm9kZSkgdl9s
aW5rOwkvKiBsaW5rIGZvciBoYXNoIGxpc3QgKi8KKwlzdHJ1Y3QgdWtfbGlzdF9oZWFkIHZfbGlu
azsJLyogbGluayBmb3IgaGFzaCBsaXN0ICovCiAJc3RydWN0IG1vdW50CSp2X21vdW50OwkvKiBt
b3VudGVkIHZmcyBwb2ludGVyICovCiAJc3RydWN0IHZub3BzCSp2X29wOwkJLyogdm5vZGUgb3Bl
cmF0aW9ucyAqLwogCWludAkJdl9yZWZjbnQ7CS8qIHJlZmVyZW5jZSBjb3VudCAqLwpAQCAtNzgs
OSArNzgsOCBAQCBzdHJ1Y3Qgdm5vZGUgewogCWludAkJdl9mbGFnczsJLyogdm5vZGUgZmxhZyAq
LwogCW1vZGVfdAkJdl9tb2RlOwkJLyogZmlsZSBtb2RlICovCiAJb2ZmX3QJCXZfc2l6ZTsJCS8q
IGZpbGUgc2l6ZSAqLwotCW11dGV4X3QJCXZfbG9jazsJCS8qIGxvY2sgZm9yIHRoaXMgdm5vZGUg
Ki8KLQlMSVNUX0hFQUQoLCBkZW50cnkpIHZfbmFtZXM7CS8qIGRpcmVjdG9yeSBlbnRyaWVzIHBv
aW50aW5nIGF0IHRoaXMgKi8KLQlpbnQJCXZfbnJsb2NrczsJLyogbG9jayBjb3VudCAoZm9yIGRl
YnVnKSAqLworCXN0cnVjdCB1a19tdXRleAl2X2xvY2s7CQkvKiBsb2NrIGZvciB0aGlzIHZub2Rl
ICovCisJc3RydWN0IHVrX2xpc3RfaGVhZCB2X25hbWVzOwkvKiBkaXJlY3RvcnkgZW50cmllcyBw
b2ludGluZyBhdCB0aGlzICovCiAJdm9pZAkJKnZfZGF0YTsJLyogcHJpdmF0ZSBkYXRhIGZvciBm
cyAqLwogfTsKIApAQCAtMTI3LDE0ICsxMjYsMTQgQEAgc3RydWN0IHZhdHRyIHsKICNkZWZpbmUg
QVJDX0FDVElPTl9IT0xEICAgICAxCiAjZGVmaW5lIEFSQ19BQ1RJT05fUkVMRUFTRSAgMgogCi10
eXBlZGVmCWludCAoKnZub3Bfb3Blbl90KQkoc3RydWN0IGZpbGUgKik7Ci10eXBlZGVmCWludCAo
KnZub3BfY2xvc2VfdCkJKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTsKLXR5cGVkZWYJ
aW50ICgqdm5vcF9yZWFkX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IGZpbGUgKiwgc3RydWN0
IHVpbyAqLCBpbnQpOwotdHlwZWRlZglpbnQgKCp2bm9wX3dyaXRlX3QpCShzdHJ1Y3Qgdm5vZGUg
Kiwgc3RydWN0IHVpbyAqLCBpbnQpOwotdHlwZWRlZglpbnQgKCp2bm9wX3NlZWtfdCkJKHN0cnVj
dCB2bm9kZSAqLCBzdHJ1Y3QgZmlsZSAqLCBvZmZfdCwgb2ZmX3QpOwotdHlwZWRlZglpbnQgKCp2
bm9wX2lvY3RsX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IGZpbGUgKiwgdV9sb25nLCB2b2lk
ICopOwotdHlwZWRlZglpbnQgKCp2bm9wX2ZzeW5jX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0
IGZpbGUgKik7Ci10eXBlZGVmCWludCAoKnZub3BfcmVhZGRpcl90KQkoc3RydWN0IHZub2RlICos
IHN0cnVjdCBmaWxlICosIHN0cnVjdCBkaXJlbnQgKik7Cit0eXBlZGVmCWludCAoKnZub3Bfb3Bl
bl90KQkoc3RydWN0IHZmc2NvcmVfZmlsZSAqKTsKK3R5cGVkZWYJaW50ICgqdm5vcF9jbG9zZV90
KQkoc3RydWN0IHZub2RlICosIHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKik7Cit0eXBlZGVmCXNzaXpl
X3QgKCp2bm9wX3JlYWRfdCkJKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgdmZzY29yZV9maWxlICos
IHN0cnVjdCB1aW8gKiwgaW50KTsKK3R5cGVkZWYJc3NpemVfdCAoKnZub3Bfd3JpdGVfdCkJKHN0
cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgdWlvICosIGludCk7Cit0eXBlZGVmCW9mZl90ICgqdm5vcF9z
ZWVrX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHZmc2NvcmVfZmlsZSAqLCBvZmZfdCwgb2Zm
X3QpOwordHlwZWRlZglpbnQgKCp2bm9wX2lvY3RsX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0
IHZmc2NvcmVfZmlsZSAqLCB1bnNpZ25lZCBsb25nLCB2b2lkICopOwordHlwZWRlZglpbnQgKCp2
bm9wX2ZzeW5jX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHZmc2NvcmVfZmlsZSAqKTsKK3R5
cGVkZWYJaW50ICgqdm5vcF9yZWFkZGlyX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHZmc2Nv
cmVfZmlsZSAqLCBzdHJ1Y3QgZGlyZW50ICopOwogdHlwZWRlZglpbnQgKCp2bm9wX2xvb2t1cF90
KQkoc3RydWN0IHZub2RlICosIGNoYXIgKiwgc3RydWN0IHZub2RlICoqKTsKIHR5cGVkZWYJaW50
ICgqdm5vcF9jcmVhdGVfdCkJKHN0cnVjdCB2bm9kZSAqLCBjaGFyICosIG1vZGVfdCk7CiB0eXBl
ZGVmCWludCAoKnZub3BfcmVtb3ZlX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHZub2RlICos
IGNoYXIgKik7CkBAIC0xNDcsOCArMTQ2LDggQEAgdHlwZWRlZglpbnQgKCp2bm9wX3NldGF0dHJf
dCkJKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgdmF0dHIgKik7CiB0eXBlZGVmCWludCAoKnZub3Bf
aW5hY3RpdmVfdCkJKHN0cnVjdCB2bm9kZSAqKTsKIHR5cGVkZWYJaW50ICgqdm5vcF90cnVuY2F0
ZV90KQkoc3RydWN0IHZub2RlICosIG9mZl90KTsKIHR5cGVkZWYJaW50ICgqdm5vcF9saW5rX3Qp
ICAgICAgKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3Qgdm5vZGUgKiwgY2hhciAqKTsKLXR5cGVkZWYg
aW50ICgqdm5vcF9jYWNoZV90KSAoc3RydWN0IHZub2RlICosIHN0cnVjdCBmaWxlICosIHN0cnVj
dCB1aW8gKik7Ci10eXBlZGVmIGludCAoKnZub3BfZmFsbG9jYXRlX3QpIChzdHJ1Y3Qgdm5vZGUg
KiwgaW50LCBsb2ZmX3QsIGxvZmZfdCk7Cit0eXBlZGVmIGludCAoKnZub3BfY2FjaGVfdCkgKHN0
cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgdmZzY29yZV9maWxlICosIHN0cnVjdCB1aW8gKik7Cit0eXBl
ZGVmIGludCAoKnZub3BfZmFsbG9jYXRlX3QpIChzdHJ1Y3Qgdm5vZGUgKiwgaW50LCBvZmZfdCwg
b2ZmX3QpOwogdHlwZWRlZiBpbnQgKCp2bm9wX3JlYWRsaW5rX3QpICAoc3RydWN0IHZub2RlICos
IHN0cnVjdCB1aW8gKik7CiB0eXBlZGVmIGludCAoKnZub3Bfc3ltbGlua190KSAgIChzdHJ1Y3Qg
dm5vZGUgKiwgY2hhciAqLCBjaGFyICopOwogCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9sb29r
dXAuYyBiL2xpYi92ZnNjb3JlL2xvb2t1cC5jCmluZGV4IDk4MzdlODFmLi4xZTJjNDAwNSAxMDA2
NDQKLS0tIGEvbGliL3Zmc2NvcmUvbG9va3VwLmMKKysrIGIvbGliL3Zmc2NvcmUvbG9va3VwLmMK
QEAgLTExMSw3ICsxMTEsNyBAQCBuYW1laShjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3QgZGVudHJ5
ICoqZHBwKQogCXN0cnVjdCB2bm9kZSAqZHZwLCAqdnA7CiAJaW50IGVycm9yLCBpOwogCWludCBs
aW5rc19mb2xsb3dlZDsKLQlib29sIG5lZWRfY29udGludWU7CisJaW50IG5lZWRfY29udGludWU7
CiAKIAlEUFJJTlRGKFZGU0RCX1ZOT0RFLCAoIm5hbWVpOiBwYXRoPSVzXG4iLCBwYXRoKSk7CiAK
QEAgLTExOSw3ICsxMTksNyBAQCBuYW1laShjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3QgZGVudHJ5
ICoqZHBwKQogCXN0cmxjcHkoZnAsIHBhdGgsIFBBVEhfTUFYKTsKIAogCWRvIHsKLQkJbmVlZF9j
b250aW51ZSA9IGZhbHNlOworCQluZWVkX2NvbnRpbnVlID0gMDsKIAkJLyoKIAkJICogQ29udmVy
dCBhIGZ1bGwgcGF0aCBuYW1lIHRvIGl0cyBtb3VudCBwb2ludCBhbmQKIAkJICogdGhlIGxvY2Fs
IG5vZGUgaW4gdGhlIGZpbGUgc3lzdGVtLgpAQCAtMTQzLDcgKzE0Myw3IEBAIG5hbWVpKGNvbnN0
IGNoYXIgKnBhdGgsIHN0cnVjdCBkZW50cnkgKipkcHApCiAJCSAqLwogCQlkZHAgPSBtcC0+bV9y
b290OwogCQlpZiAoIWRkcCkgewotCQkJc3lzX3BhbmljKCJWRlM6IG5vIHJvb3QiKTsKKwkJCVVL
X0NSQVNIKCJWRlM6IG5vIHJvb3QiKTsKIAkJfQogCQlkcmVmKGRkcCk7CiAKQEAgLTE3Nyw3ICsx
NzcsNyBAQCBuYW1laShjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3QgZGVudHJ5ICoqZHBwKQogCQkJ
ZHZwID0gZGRwLT5kX3Zub2RlOwogCQkJdm5fbG9jayhkdnApOwogCQkJZHAgPSBkZW50cnlfbG9v
a3VwKG1wLCBub2RlKTsKLQkJCWlmIChkcCA9PSBudWxscHRyKSB7CisJCQlpZiAoZHAgPT0gTlVM
TCkgewogCQkJCS8qIEZpbmQgYSB2bm9kZSBpbiB0aGlzIGRpcmVjdG9yeS4gKi8KIAkJCQllcnJv
ciA9IFZPUF9MT09LVVAoZHZwLCBuYW1lLCAmdnApOwogCQkJCWlmIChlcnJvcikgewpAQCAtMjA5
LDE3ICsyMDksMTcgQEAgbmFtZWkoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IGRlbnRyeSAqKmRw
cCkKIAkJCQlkcmVsZShkcCk7CiAKIAkJCQlwICAgICAgID0gZnA7Ci0JCQkJZHAgICAgICA9IG51
bGxwdHI7Ci0JCQkJZGRwICAgICA9IG51bGxwdHI7Ci0JCQkJdnAgICAgICA9IG51bGxwdHI7Ci0J
CQkJZHZwICAgICA9IG51bGxwdHI7CisJCQkJZHAgICAgICA9IE5VTEw7CisJCQkJZGRwICAgICA9
IE5VTEw7CisJCQkJdnAgICAgICA9IE5VTEw7CisJCQkJZHZwICAgICA9IE5VTEw7CiAJCQkJbmFt
ZVswXSA9IDA7CiAJCQkJbm9kZVswXSA9IDA7CiAKIAkJCQlpZiAoKytsaW5rc19mb2xsb3dlZCA+
PSBNQVhTWU1MSU5LUykgewogCQkJCQlyZXR1cm4gKEVMT09QKTsKIAkJCQl9Ci0JCQkJbmVlZF9j
b250aW51ZSA9IHRydWU7CisJCQkJbmVlZF9jb250aW51ZSA9IDE7CiAJCQkJYnJlYWs7CiAJCQl9
CiAKQEAgLTIyOCw3ICsyMjgsNyBAQCBuYW1laShjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3QgZGVu
dHJ5ICoqZHBwKQogCQkJCXJldHVybiBFTk9URElSOwogCQkJfQogCQl9Ci0JfSB3aGlsZSAobmVl
ZF9jb250aW51ZSA9PSB0cnVlKTsKKwl9IHdoaWxlIChuZWVkX2NvbnRpbnVlKTsKIAogCSpkcHAg
PSBkcDsKIAlyZXR1cm4gMDsKQEAgLTI1MywxNCArMjUzLDE0IEBAIG5hbWVpX2xhc3Rfbm9mb2xs
b3coY2hhciAqcGF0aCwgc3RydWN0IGRlbnRyeSAqZGRwLCBzdHJ1Y3QgZGVudHJ5ICoqZHBwKQog
CXN0cnVjdCB2bm9kZSAgKnZwOwogCWNoYXIgbm9kZVtQQVRIX01BWF07CiAKLQlkdnAgID0gbnVs
bHB0cjsKKwlkdnAgID0gTlVMTDsKIAogCWlmIChwYXRoWzBdICE9ICcvJykgewogCQlyZXR1cm4g
KEVOT1RESVIpOwogCX0KIAogCW5hbWUgPSBzdHJyY2hyKHBhdGgsICcvJyk7Ci0JaWYgKG5hbWUg
PT0gbnVsbHB0cikgeworCWlmIChuYW1lID09IE5VTEwpIHsKIAkJcmV0dXJuIChFTk9FTlQpOwog
CX0KIAluYW1lKys7CkBAIC0yODMsNyArMjgzLDcgQEAgbmFtZWlfbGFzdF9ub2ZvbGxvdyhjaGFy
ICpwYXRoLCBzdHJ1Y3QgZGVudHJ5ICpkZHAsIHN0cnVjdCBkZW50cnkgKipkcHApCiAJZHZwID0g
ZGRwLT5kX3Zub2RlOwogCXZuX2xvY2soZHZwKTsKIAlkcCA9IGRlbnRyeV9sb29rdXAobXAsIG5v
ZGUpOwotCWlmIChkcCA9PSBudWxscHRyKSB7CisJaWYgKGRwID09IE5VTEwpIHsKIAkJZXJyb3Ig
PSBWT1BfTE9PS1VQKGR2cCwgbmFtZSwgJnZwKTsKIAkJaWYgKGVycm9yICE9IDApIHsKIAkJCWdv
dG8gb3V0OwpAQCAtMjkyLDcgKzI5Miw3IEBAIG5hbWVpX2xhc3Rfbm9mb2xsb3coY2hhciAqcGF0
aCwgc3RydWN0IGRlbnRyeSAqZGRwLCBzdHJ1Y3QgZGVudHJ5ICoqZHBwKQogCQlkcCA9IGRlbnRy
eV9hbGxvYyhkZHAsIHZwLCBub2RlKTsKIAkJdnB1dCh2cCk7CiAKLQkJaWYgKGRwID09IG51bGxw
dHIpIHsKKwkJaWYgKGRwID09IE5VTEwpIHsKIAkJCWVycm9yID0gRU5PTUVNOwogCQkJZ290byBv
dXQ7CiAJCX0KQEAgLTMwMSw3ICszMDEsNyBAQCBuYW1laV9sYXN0X25vZm9sbG93KGNoYXIgKnBh
dGgsIHN0cnVjdCBkZW50cnkgKmRkcCwgc3RydWN0IGRlbnRyeSAqKmRwcCkKIAkqZHBwICA9IGRw
OwogCWVycm9yID0gMDsKIG91dDoKLQlpZiAoZHZwICE9IG51bGxwdHIpIHsKKwlpZiAoZHZwICE9
IE5VTEwpIHsKIAkJdm5fdW5sb2NrKGR2cCk7CiAJfQogCXJldHVybiAoZXJyb3IpOwpkaWZmIC0t
Z2l0IGEvbGliL3Zmc2NvcmUvbWFpbi5jIGIvbGliL3Zmc2NvcmUvbWFpbi5jCmluZGV4IDkwZGYz
ZDcxLi44MmU0NTkxNyAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvbWFpbi5jCisrKyBiL2xpYi92
ZnNjb3JlL21haW4uYwpAQCAtNzksNyArNzksNyBAQCBpbnQgb3Blbihjb25zdCBjaGFyICpwYXRo
bmFtZSwgaW50IGZsYWdzLCAuLi4pCiAKIAlzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKIAlj
aGFyIHBhdGhbUEFUSF9NQVhdOwotCXN0cnVjdCBmaWxlICpmcDsKKwlzdHJ1Y3QgdmZzY29yZV9m
aWxlICpmcDsKIAlpbnQgZmQsIGVycm9yOwogCWludCBhY2M7CiAKQEAgLTEzNSw3ICsxMzUsNyBA
QCBpbnQgb3BlbmF0KGludCBkaXJmZCwgY29uc3QgY2hhciAqcGF0aG5hbWUsIGludCBmbGFncywg
Li4uKQogCQlyZXR1cm4gb3BlbihwYXRobmFtZSwgZmxhZ3MsIG1vZGUpOwogCX0KIAotCXN0cnVj
dCBmaWxlICpmcDsKKwlzdHJ1Y3QgdmZzY29yZV9maWxlICpmcDsKIAlpbnQgZXJyb3IgPSBmZ2V0
KGRpcmZkLCAmZnApOwogCWlmIChlcnJvcikgewogCQllcnJubyA9IGVycm9yOwpAQCAtMTk3LDcg
KzE5Nyw3IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX21rbm9kX2VyciwgIiVkIiwgaW50KTsKIAog
aW50IF9feG1rbm9kKGludCB2ZXIsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBtb2RlX3QgbW9kZSwg
ZGV2X3QgKmRldikKIHsKLQlhc3NlcnQodmVyID09IDApOyAvLyBPbiB4ODYtNjQgTGludXgsIF9N
S05PRF9WRVJfTElOVVggaXMgMC4KKwlVS19BU1NFUlQodmVyID09IDApOyAvLyBPbiB4ODYtNjQg
TGludXgsIF9NS05PRF9WRVJfTElOVVggaXMgMC4KIAlzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFz
azsKIAljaGFyIHBhdGhbUEFUSF9NQVhdOwogCWludCBlcnJvcjsKQEAgLTIzMSw3ICsyMzEsNyBA
QCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19sc2Vla19lcnIsICIlZCIsIGludCk7CiAKIG9mZl90IGxz
ZWVrKGludCBmZCwgb2ZmX3Qgb2Zmc2V0LCBpbnQgd2hlbmNlKQogewotCXN0cnVjdCBmaWxlICpm
cDsKKwlzdHJ1Y3QgdmZzY29yZV9maWxlICpmcDsKIAlvZmZfdCBvcmc7CiAJaW50IGVycm9yOwog
CkBAIC0yNjUsMTEgKzI2NSwxMiBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19wcmVhZF9lcnIsICIl
ZCIsIGludCk7CiAvLyAqYW5kKiBhIG5vbi16ZXJvIG51bWJlciBvZiB3cml0dGVuIGJ5dGVzLiBJ
biB0aGF0IGNhc2UsIHdlIG5lZWQgdG8gemVybyB0aGUKIC8vIGVycm9yLCBzbyB0aGUgc3lzdGVt
IGNhbGwgYXBwZWFyIGEgc3VjY2Vzc2Z1bCBwYXJ0aWFsIHJlYWQvd3JpdGUuCiAvLyBJbiBGcmVl
QlNELCBkb2ZpbGV3cml0ZSgpIGFuZCBkb2ZpbGVyZWFkKCkgKHN5c19nZW5lcmljLmMpIGRvIHRo
aXMgdG9vLgotc3RhdGljIGlubGluZSBib29sIGhhc19lcnJvcihpbnQgZXJyb3IsIGludCBieXRl
cykKK3N0YXRpYyBpbmxpbmUgaW50IGhhc19lcnJvcihpbnQgZXJyb3IsIGludCBieXRlcykKIHsK
KwkvKiBUT0RPOiBPU3YgY2hlY2tzIGFsc28gZm9yIEVSRVNUQVJUICovCiAJcmV0dXJuIGVycm9y
ICYmICgKIAkJCShieXRlcyA9PSAwKSB8fAotCQkJKGVycm9yICE9IEVXT1VMREJMT0NLICYmIGVy
cm9yICE9IEVJTlRSICYmIGVycm9yICE9IEVSRVNUQVJUKSk7CisJCQkoZXJyb3IgIT0gRVdPVUxE
QkxPQ0sgJiYgZXJyb3IgIT0gRUlOVFIpKTsKIH0KIAogCkBAIC0yODAsNyArMjgxLDcgQEAgc3Np
emVfdCBwcmVhZChpbnQgZmQsIHZvaWQgKmJ1Ziwgc2l6ZV90IGNvdW50LCBvZmZfdCBvZmZzZXQp
CiAJCQkuaW92X2Jhc2UJPSBidWYsCiAJCQkuaW92X2xlbgk9IGNvdW50LAogCX07Ci0Jc3RydWN0
IGZpbGUgKmZwOworCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwOwogCXNpemVfdCBieXRlczsKIAlp
bnQgZXJyb3I7CiAKQEAgLTMyMCw3ICszMjEsNyBAQCBzc2l6ZV90IHB3cml0ZShpbnQgZmQsIGNv
bnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGNvdW50LCBvZmZfdCBvZmZzZXQpCiAJCQkuaW92X2Jhc2UJ
PSAodm9pZCAqKWJ1ZiwKIAkJCS5pb3ZfbGVuCT0gY291bnQsCiAJfTsKLQlzdHJ1Y3QgZmlsZSAq
ZnA7CisJc3RydWN0IHZmc2NvcmVfZmlsZSAqZnA7CiAJc2l6ZV90IGJ5dGVzOwogCWludCBlcnJv
cjsKIApAQCAtMzUxLDcgKzM1Miw3IEBAIHNzaXplX3Qgd3JpdGUoaW50IGZkLCBjb25zdCB2b2lk
ICpidWYsIHNpemVfdCBjb3VudCkKIAogc3NpemVfdCBwcmVhZHYoaW50IGZkLCBjb25zdCBzdHJ1
Y3QgaW92ZWMgKmlvdiwgaW50IGlvdmNudCwgb2ZmX3Qgb2Zmc2V0KQogewotCXN0cnVjdCBmaWxl
ICpmcDsKKwlzdHJ1Y3QgdmZzY29yZV9maWxlICpmcDsKIAlzaXplX3QgYnl0ZXM7CiAJaW50IGVy
cm9yOwogCkBAIC0zODQsNyArMzg1LDcgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfcHdyaXRldl9l
cnIsICIlZCIsIGludCk7CiAKIHNzaXplX3QgcHdyaXRldihpbnQgZmQsIGNvbnN0IHN0cnVjdCBp
b3ZlYyAqaW92LCBpbnQgaW92Y250LCBvZmZfdCBvZmZzZXQpCiB7Ci0Jc3RydWN0IGZpbGUgKmZw
OworCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwOwogCXNpemVfdCBieXRlczsKIAlpbnQgZXJyb3I7
CiAKQEAgLTQxOSw3ICs0MjAsNyBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19pb2N0bF9lcnIsICIl
ZCIsIGludCk7CiAKIGludCBpb2N0bChpbnQgZmQsIHVuc2lnbmVkIGxvbmcgaW50IHJlcXVlc3Qs
IC4uLikKIHsKLQlzdHJ1Y3QgZmlsZSAqZnA7CisJc3RydWN0IHZmc2NvcmVfZmlsZSAqZnA7CiAJ
aW50IGVycm9yOwogCXZhX2xpc3QgYXA7CiAJdm9pZCogYXJnOwpAQCAtNDU2LDcgKzQ1Nyw3IEBA
IFRSQUNFUE9JTlQodHJhY2VfdmZzX2ZzeW5jX2VyciwgIiVkIiwgaW50KTsKIAogaW50IGZzeW5j
KGludCBmZCkKIHsKLQlzdHJ1Y3QgZmlsZSAqZnA7CisJc3RydWN0IHZmc2NvcmVfZmlsZSAqZnA7
CiAJaW50IGVycm9yOwogCiAJdHJhY2VfdmZzX2ZzeW5jKGZkKTsKQEAgLTQ5MCw3ICs0OTEsNyBA
QCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19mc3RhdF9lcnIsICIlZCIsIGludCk7CiAKIGludCBfX2Z4
c3RhdChpbnQgdmVyLCBpbnQgZmQsIHN0cnVjdCBzdGF0ICpzdCkKIHsKLQlzdHJ1Y3QgZmlsZSAq
ZnA7CisJc3RydWN0IHZmc2NvcmVfZmlsZSAqZnA7CiAJaW50IGVycm9yOwogCiAJdHJhY2VfdmZz
X2ZzdGF0KGZkLCBzdCk7CkBAIC01MjYsNyArNTI3LDcgQEAgaW50IF9fZnhzdGF0YXQoaW50IHZl
ciwgaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwgc3RydWN0IHN0YXQgKnN0LAogCQlp
bnQgZmxhZ3MpCiB7CiAJaWYgKGZsYWdzICYgQVRfU1lNTElOS19OT0ZPTExPVykgewotCQlVTklN
UExFTUVOVEVEKCJmc3RhdGF0KCkgd2l0aCBBVF9TWU1MSU5LX05PRk9MTE9XIik7CisJCVVLX0NS
QVNIKCJVTklNUExFTUVOVEVEOiBmc3RhdGF0KCkgd2l0aCBBVF9TWU1MSU5LX05PRk9MTE9XIik7
CiAJfQogCiAJaWYgKHBhdGhuYW1lWzBdID09ICcvJyB8fCBkaXJmZCA9PSBBVF9GRENXRCkgewpA
QCAtNTM4LDcgKzUzOSw3IEBAIGludCBfX2Z4c3RhdGF0KGludCB2ZXIsIGludCBkaXJmZCwgY29u
c3QgY2hhciAqcGF0aG5hbWUsIHN0cnVjdCBzdGF0ICpzdCwKIAkJcmV0dXJuIGZzdGF0KGRpcmZk
LCBzdCk7CiAJfQogCi0Jc3RydWN0IGZpbGUgKmZwOworCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZw
OwogCWludCBlcnJvciA9IGZnZXQoZGlyZmQsICZmcCk7CiAJaWYgKGVycm9yKSB7CiAJCWVycm5v
ID0gZXJyb3I7CkBAIC01NzQsNyArNTc1LDkgQEAgTEZTNjQoZnN0YXRhdCk7CiAKIGludCBmbG9j
ayhpbnQgZmQsIGludCBvcGVyYXRpb24pCiB7Ci0JaWYgKCFmaWxlcmVmX2Zyb21fZmQoZmQpKSB7
CisJc3RydWN0IHZmc2NvcmVfZmlsZSAqZmlsZTsKKworCWlmICghZmdldChmZCwgJmZpbGUpKSB7
CiAJCXJldHVybiBsaWJjX2Vycm9yKEVCQURGKTsKIAl9CiAKQEAgLTU5Miw3ICs1OTUsNyBAQCBp
bnQgZmxvY2soaW50IGZkLCBpbnQgb3BlcmF0aW9uKQogCXJldHVybiAwOwogfQogCi1UUkFDRVBP
SU5UKHRyYWNlX3Zmc19yZWFkZGlyLCAiJWQgJXAiLCBpbnQsIGRpcmVudCopOworVFJBQ0VQT0lO
VCh0cmFjZV92ZnNfcmVhZGRpciwgIiVkICVwIiwgaW50LCBzdHJ1Y3QgZGlyZW50Kik7CiBUUkFD
RVBPSU5UKHRyYWNlX3Zmc19yZWFkZGlyX3JldCwgIiIpOwogVFJBQ0VQT0lOVCh0cmFjZV92ZnNf
cmVhZGRpcl9lcnIsICIlZCIsIGludCk7CiAKQEAgLTYxMSw3ICs2MTQsNyBAQCBESVIgKm9wZW5k
aXIoY29uc3QgY2hhciAqcGF0aCkKIAlkaXItPmZkID0gb3BlbihwYXRoLCBPX1JET05MWSk7CiAJ
aWYgKGRpci0+ZmQgPCAwKSB7CiAJCWZyZWUoZGlyKTsKLQkJcmV0dXJuIG51bGxwdHI7CisJCXJl
dHVybiBOVUxMOwogCX0KIAlyZXR1cm4gZGlyOwogfQpAQCAtNjIxLDExICs2MjQsMTEgQEAgRElS
ICpmZG9wZW5kaXIoaW50IGZkKQogCURJUiAqZGlyOwogCXN0cnVjdCBzdGF0IHN0OwogCWlmIChm
c3RhdChmZCwgJnN0KSA8IDApIHsKLQkJcmV0dXJuIG51bGxwdHI7CisJCXJldHVybiBOVUxMOwog
CX0KIAlpZiAoIVNfSVNESVIoc3Quc3RfbW9kZSkpIHsKIAkJZXJybm8gPSBFTk9URElSOwotCQly
ZXR1cm4gbnVsbHB0cjsKKwkJcmV0dXJuIE5VTEw7CiAJfQogCWRpciA9IG1hbGxvYyhzaXplb2Yo
KmRpcikpOwogCWlmICghZGlyKSB7CkBAIC02NjksMTMgKzY3MiwxMSBAQCBzdHJ1Y3QgZGlyZW50
ICpyZWFkZGlyKERJUiAqZGlyKQogaW50IHJlYWRkaXJfcihESVIgKmRpciwgc3RydWN0IGRpcmVu
dCAqZW50cnksIHN0cnVjdCBkaXJlbnQgKipyZXN1bHQpCiB7CiAJaW50IGVycm9yOwotCXN0cnVj
dCBmaWxlICpmcDsKKwlzdHJ1Y3QgdmZzY29yZV9maWxlICpmcDsKIAogCXRyYWNlX3Zmc19yZWFk
ZGlyKGRpci0+ZmQsIGVudHJ5KTsKIAllcnJvciA9IGZnZXQoZGlyLT5mZCwgJmZwKTsKLQlpZiAo
ZXJyb3IpIHsKLQkJdHJhY2VfdmZzX3JlYWRkaXJfZXJyKGVycm9yKTsKLQl9IGVsc2UgeworCWlm
ICghZXJyb3IpIHsKIAkJZXJyb3IgPSBzeXNfcmVhZGRpcihmcCwgZW50cnkpOwogCQlmZHJvcChm
cCk7CiAJCWlmIChlcnJvcikgewpAQCAtNjg4LDcgKzY4OSw3IEBAIGludCByZWFkZGlyX3IoRElS
ICpkaXIsIHN0cnVjdCBkaXJlbnQgKmVudHJ5LCBzdHJ1Y3QgZGlyZW50ICoqcmVzdWx0KQogCWVu
dHJ5LT5kX3JlY2xlbiA9IHNpemVvZigqZW50cnkpOwogCiAJaWYgKGVycm9yKSB7Ci0JCSpyZXN1
bHQgPSBudWxscHRyOworCQkqcmVzdWx0ID0gTlVMTDsKIAl9IGVsc2UgewogCQkqcmVzdWx0ID0g
ZW50cnk7CiAJfQpAQCAtNzA2LDcgKzcwNyw3IEBAIHN0cnVjdCBkaXJlbnQgKnJlYWRkaXI2NChE
SVIgKmRpcikgX19hdHRyaWJ1dGVfXygoYWxpYXMoInJlYWRkaXIiKSkpOwogCiB2b2lkIHJld2lu
ZGRpcihESVIgKmRpcnApCiB7Ci0Jc3RydWN0IGZpbGUgKmZwOworCXN0cnVjdCB2ZnNjb3JlX2Zp
bGUgKmZwOwogCiAJaW50IGVycm9yID0gZmdldChkaXJwLT5mZCwgJmZwKTsKIAlpZiAoZXJyb3Ip
IHsKQEAgLTcyMiw3ICs3MjMsNyBAQCB2b2lkIHJld2luZGRpcihESVIgKmRpcnApCiAKIGxvbmcg
dGVsbGRpcihESVIgKmRpcnApCiB7Ci0Jc3RydWN0IGZpbGUgKmZwOworCXN0cnVjdCB2ZnNjb3Jl
X2ZpbGUgKmZwOwogCWludCBlcnJvciA9IGZnZXQoZGlycC0+ZmQsICZmcCk7CiAJaWYgKGVycm9y
KSB7CiAJCXJldHVybiBsaWJjX2Vycm9yKGVycm9yKTsKQEAgLTczOSw3ICs3NDAsNyBAQCBsb25n
IHRlbGxkaXIoRElSICpkaXJwKQogCiB2b2lkIHNlZWtkaXIoRElSICpkaXJwLCBsb25nIGxvYykK
IHsKLQlzdHJ1Y3QgZmlsZSAqZnA7CisJc3RydWN0IHZmc2NvcmVfZmlsZSAqZnA7CiAJaW50IGVy
cm9yID0gZmdldChkaXJwLT5mZCwgJmZwKTsKIAlpZiAoZXJyb3IpIHsKIAkJLy8gUE9TSVggc3Bl
Y2lmaWVzIHNlZWtkaXIoKSBjYW5ub3QgcmV0dXJuIGVycm9ycy4KQEAgLTc5MCw3ICs3OTEsNyBA
QCBpbnQgcm1kaXIoY29uc3QgY2hhciAqcGF0aG5hbWUpCiAKIAl0cmFjZV92ZnNfcm1kaXIocGF0
aG5hbWUpOwogCWVycm9yID0gRU5PRU5UOwotCWlmIChwYXRobmFtZSA9PSBudWxscHRyKQorCWlm
IChwYXRobmFtZSA9PSBOVUxMKQogCQlnb3RvIG91dF9lcnJubzsKIAlpZiAoKGVycm9yID0gdGFz
a19jb252KHQsIHBhdGhuYW1lLCBWV1JJVEUsIHBhdGgpKSAhPSAwKQogCQlnb3RvIG91dF9lcnJu
bzsKQEAgLTgyNiw5ICs4MjcsOSBAQCBnZXRfbGFzdF9jb21wb25lbnQoY29uc3QgY2hhciAqcGF0
aCwgY2hhciAqZHN0KQogCWRzdFtsZW5dID0gMDsKIH0KIAotc3RhdGljIGJvb2wgbnVsbF9vcl9l
bXB0eShjb25zdCBjaGFyICpzdHIpCitzdGF0aWMgaW50IG51bGxfb3JfZW1wdHkoY29uc3QgY2hh
ciAqc3RyKQogewotCXJldHVybiBzdHIgPT0gbnVsbHB0ciB8fCAqc3RyID09ICdcMCc7CisJcmV0
dXJuIHN0ciA9PSBOVUxMIHx8ICpzdHIgPT0gJ1wwJzsKIH0KIAogVFJBQ0VQT0lOVCh0cmFjZV92
ZnNfcmVuYW1lLCAiXCIlc1wiIFwiJXNcIiIsIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKik7CkBA
IC04ODMsNyArODg0LDcgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfY2hkaXJfZXJyLCAiJWQiLCBp
bnQpOwogc3RhdGljIGludAogX19kb19mY2hkaXIoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAsIHN0
cnVjdCB0YXNrICp0KQogewotCXN0cnVjdCBmaWxlICpvbGQgPSBudWxscHRyOworCXN0cnVjdCB2
ZnNjb3JlX2ZpbGUgKm9sZCA9IE5VTEw7CiAKIAlVS19BU1NFUlQodCk7CiAKQEAgLTkwNywxMSAr
OTA4LDExIEBAIGludCBjaGRpcihjb25zdCBjaGFyICpwYXRobmFtZSkKIAl0cmFjZV92ZnNfY2hk
aXIocGF0aG5hbWUpOwogCXN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOwogCWNoYXIgcGF0aFtQ
QVRIX01BWF07Ci0Jc3RydWN0IGZpbGUgKmZwOworCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwOwog
CWludCBlcnJvcjsKIAogCWVycm9yID0gRU5PRU5UOwotCWlmIChwYXRobmFtZSA9PSBudWxscHRy
KQorCWlmIChwYXRobmFtZSA9PSBOVUxMKQogCQlnb3RvIG91dF9lcnJubzsKIAogCWlmICgoZXJy
b3IgPSB0YXNrX2NvbnYodCwgcGF0aG5hbWUsIFZSRUFELCBwYXRoKSkgIT0gMCkKQEAgLTk0NSw3
ICs5NDYsNyBAQCBpbnQgZmNoZGlyKGludCBmZCkKIHsKIAl0cmFjZV92ZnNfZmNoZGlyKGZkKTsK
IAlzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKLQlzdHJ1Y3QgZmlsZSAqZnA7CisJc3RydWN0
IHZmc2NvcmVfZmlsZSAqZnA7CiAJaW50IGVycm9yOwogCiAJZXJyb3IgPSBmZ2V0KGZkLCAmZnAp
OwpAQCAtOTgxLDcgKzk4Miw3IEBAIGludCBsaW5rKGNvbnN0IGNoYXIgKm9sZHBhdGgsIGNvbnN0
IGNoYXIgKm5ld3BhdGgpCiAJdHJhY2VfdmZzX2xpbmsob2xkcGF0aCwgbmV3cGF0aCk7CiAKIAll
cnJvciA9IEVOT0VOVDsKLQlpZiAob2xkcGF0aCA9PSBudWxscHRyIHx8IG5ld3BhdGggPT0gbnVs
bHB0cikKKwlpZiAob2xkcGF0aCA9PSBOVUxMIHx8IG5ld3BhdGggPT0gTlVMTCkKIAkJZ290byBv
dXRfZXJybm87CiAJaWYgKChlcnJvciA9IHRhc2tfY29udih0LCBvbGRwYXRoLCBWV1JJVEUsIHBh
dGgxKSkgIT0gMCkKIAkJZ290byBvdXRfZXJybm87CkBAIC0xMDExLDcgKzEwMTIsNyBAQCBpbnQg
c3ltbGluayhjb25zdCBjaGFyICpvbGRwYXRoLCBjb25zdCBjaGFyICpuZXdwYXRoKQogCXRyYWNl
X3Zmc19zeW1saW5rKG9sZHBhdGgsIG5ld3BhdGgpOwogCiAJZXJyb3IgPSBFTk9FTlQ7Ci0JaWYg
KG9sZHBhdGggPT0gbnVsbHB0ciB8fCBuZXdwYXRoID09IG51bGxwdHIpIHsKKwlpZiAob2xkcGF0
aCA9PSBOVUxMIHx8IG5ld3BhdGggPT0gTlVMTCkgewogCQllcnJubyA9IEVOT0VOVDsKIAkJdHJh
Y2VfdmZzX3N5bWxpbmtfZXJyKGVycm9yKTsKIAkJcmV0dXJuICgtMSk7CkBAIC0xMDQwLDcgKzEw
NDEsNyBAQCBpbnQgdW5saW5rKGNvbnN0IGNoYXIgKnBhdGhuYW1lKQogCWludCBlcnJvcjsKIAog
CWVycm9yID0gRU5PRU5UOwotCWlmIChwYXRobmFtZSA9PSBudWxscHRyKQorCWlmIChwYXRobmFt
ZSA9PSBOVUxMKQogCQlnb3RvIG91dF9lcnJubzsKIAlpZiAoKGVycm9yID0gdGFza19jb252KHQs
IHBhdGhuYW1lLCBWV1JJVEUsIHBhdGgpKSAhPSAwKQogCQlnb3RvIG91dF9lcnJubzsKQEAgLTEx
NTYsNyArMTE1Nyw3IEBAIGludCBfX3N0YXRmcyhjb25zdCBjaGFyICpwYXRobmFtZSwgc3RydWN0
IHN0YXRmcyAqYnVmKQogCWVycm5vID0gZXJyb3I7CiAJcmV0dXJuIC0xOwogfQotd2Vha19hbGlh
cyhfX3N0YXRmcywgc3RhdGZzKTsKK19fd2Vha19hbGlhcyhfX3N0YXRmcywgc3RhdGZzKTsKIAog
TEZTNjQoc3RhdGZzKTsKIApAQCAtMTE2Niw3ICsxMTY3LDcgQEAgVFJBQ0VQT0lOVCh0cmFjZV92
ZnNfZnN0YXRmc19lcnIsICIlZCIsIGludCk7CiAKIGludCBfX2ZzdGF0ZnMoaW50IGZkLCBzdHJ1
Y3Qgc3RhdGZzICpidWYpCiB7Ci0Jc3RydWN0IGZpbGUgKmZwOworCXN0cnVjdCB2ZnNjb3JlX2Zp
bGUgKmZwOwogCWludCBlcnJvcjsKIAogCXRyYWNlX3Zmc19mc3RhdGZzKGZkLCBidWYpOwpAQCAt
MTE4Nyw3ICsxMTg4LDcgQEAgaW50IF9fZnN0YXRmcyhpbnQgZmQsIHN0cnVjdCBzdGF0ZnMgKmJ1
ZikKIAllcnJubyA9IGVycm9yOwogCXJldHVybiAtMTsKIH0KLXdlYWtfYWxpYXMoX19mc3RhdGZz
LCBmc3RhdGZzKTsKK19fd2Vha19hbGlhcyhfX2ZzdGF0ZnMsIGZzdGF0ZnMpOwogCiBMRlM2NChm
c3RhdGZzKTsKIApAQCAtMTI0MSw3ICsxMjQyLDcgQEAgY2hhciAqZ2V0Y3dkKGNoYXIgKnBhdGgs
IHNpemVfdCBzaXplKQogewogCXRyYWNlX3Zmc19nZXRjd2QocGF0aCwgc2l6ZSk7CiAJc3RydWN0
IHRhc2sgKnQgPSBtYWluX3Rhc2s7Ci0JaW50IGxlbiA9IHN0cmxlbih0LT50X2N3ZCkgKyAxOwor
CXNpemVfdCBsZW4gPSBzdHJsZW4odC0+dF9jd2QpICsgMTsKIAlpbnQgZXJyb3I7CiAKIAlpZiAo
IXBhdGgpIHsKQEAgLTEyNzEsNyArMTI3Miw3IEBAIGNoYXIgKmdldGN3ZChjaGFyICpwYXRoLCBz
aXplX3Qgc2l6ZSkKIAlvdXRfZXJybm86CiAJdHJhY2VfdmZzX2dldGN3ZF9lcnIoZXJyb3IpOwog
CWVycm5vID0gZXJyb3I7Ci0JcmV0dXJuIG51bGxwdHI7CisJcmV0dXJuIE5VTEw7CiB9CiAKIFRS
QUNFUE9JTlQodHJhY2VfdmZzX2R1cCwgIiVkIiwgaW50KTsKQEAgLTEyODIsNyArMTI4Myw3IEBA
IFRSQUNFUE9JTlQodHJhY2VfdmZzX2R1cF9lcnIsICIlZCIsIGludCk7CiAgKi8KIGludCBkdXAo
aW50IG9sZGZkKQogewotCXN0cnVjdCBmaWxlICpmcDsKKwlzdHJ1Y3QgdmZzY29yZV9maWxlICpm
cDsKIAlpbnQgbmV3ZmQ7CiAJaW50IGVycm9yOwogCkBAIC0xMzE1LDcgKzEzMTYsNyBAQCBUUkFD
RVBPSU5UKHRyYWNlX3Zmc19kdXAzX2VyciwgIiVkIiwgaW50KTsKICAqLwogaW50IGR1cDMoaW50
IG9sZGZkLCBpbnQgbmV3ZmQsIGludCBmbGFncykKIHsKLQlzdHJ1Y3QgZmlsZSAqZnA7CisJc3Ry
dWN0IHZmc2NvcmVfZmlsZSAqZnA7CiAJaW50IGVycm9yOwogCiAJdHJhY2VfdmZzX2R1cDMob2xk
ZmQsIG5ld2ZkLCBmbGFncyk7CkBAIC0xMzM3LDcgKzEzMzgsNyBAQCBpbnQgZHVwMyhpbnQgb2xk
ZmQsIGludCBuZXdmZCwgaW50IGZsYWdzKQogCWlmIChlcnJvcikKIAkJZ290byBvdXRfZXJybm87
CiAKLQllcnJvciA9IGZkc2V0KG5ld2ZkLCBmcCk7CisJZXJyb3IgPSB2ZnNjb3JlX2luc3RhbGxf
ZmQobmV3ZmQsIGZwKTsKIAlpZiAoZXJyb3IpIHsKIAkJZmRyb3AoZnApOwogCQlnb3RvIG91dF9l
cnJubzsKQEAgLTEzNzMsNyArMTM3NCw3IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2ZjbnRsX2Vy
ciwgIiVkIiwgaW50KTsKIAogaW50IGZjbnRsKGludCBmZCwgaW50IGNtZCwgaW50IGFyZykKIHsK
LQlzdHJ1Y3QgZmlsZSAqZnA7CisJc3RydWN0IHZmc2NvcmVfZmlsZSAqZnA7CiAJaW50IHJldCA9
IDAsIGVycm9yOwogCWludCB0bXA7CiAKQEAgLTE0OTAsMTQgKzE0OTEsMTQgQEAgaW50IGFjY2Vz
cyhjb25zdCBjaGFyICpwYXRobmFtZSwgaW50IG1vZGUpCiBpbnQgZmFjY2Vzc2F0KGludCBkaXJm
ZCwgY29uc3QgY2hhciAqcGF0aG5hbWUsIGludCBtb2RlLCBpbnQgZmxhZ3MpCiB7CiAJaWYgKGZs
YWdzICYgQVRfU1lNTElOS19OT0ZPTExPVykgewotCQlVTklNUExFTUVOVEVEKCJmYWNjZXNzYXQo
KSB3aXRoIEFUX1NZTUxJTktfTk9GT0xMT1ciKTsKKwkJVUtfQ1JBU0goIlVOSU1QTEVNRU5URUQ6
IGZhY2Nlc3NhdCgpIHdpdGggQVRfU1lNTElOS19OT0ZPTExPVyIpOwogCX0KIAogCWlmIChwYXRo
bmFtZVswXSA9PSAnLycgfHwgZGlyZmQgPT0gQVRfRkRDV0QpIHsKIAkJcmV0dXJuIGFjY2Vzcyhw
YXRobmFtZSwgbW9kZSk7CiAJfQogCi0Jc3RydWN0IGZpbGUgKmZwOworCXN0cnVjdCB2ZnNjb3Jl
X2ZpbGUgKmZwOwogCWludCBlcnJvciA9IGZnZXQoZGlyZmQsICZmcCk7CiAJaWYgKGVycm9yKSB7
CiAJCWVycm5vID0gZXJyb3I7CkBAIC0xNTI4LDcgKzE1MjksNyBAQCBpbnQgZXVpZGFjY2Vzcyhj
b25zdCBjaGFyICpwYXRobmFtZSwgaW50IG1vZGUpCiAJcmV0dXJuIGFjY2VzcyhwYXRobmFtZSwg
bW9kZSk7CiB9CiAKLXdlYWtfYWxpYXMoZXVpZGFjY2VzcyxlYWNjZXNzKTsKK19fd2Vha19hbGlh
cyhldWlkYWNjZXNzLGVhY2Nlc3MpOwogCiAjaWYgMAogLyoKQEAgLTE1MzYsNyArMTUzNyw3IEBA
IHdlYWtfYWxpYXMoZXVpZGFjY2VzcyxlYWNjZXNzKTsKICAqLwogaW50IGlzYXR0eShpbnQgZmQp
CiB7Ci0Jc3RydWN0IGZpbGUgKmZwOworCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwOwogCWludCBp
c3R0eSA9IDA7CiAKIAl0cmFjZV92ZnNfaXNhdHR5KGZkKTsKQEAgLTE1NzAsNyArMTU3MSw3IEBA
IGludCB0cnVuY2F0ZShjb25zdCBjaGFyICpwYXRobmFtZSwgb2ZmX3QgbGVuZ3RoKQogCWludCBl
cnJvcjsKIAogCWVycm9yID0gRU5PRU5UOwotCWlmIChwYXRobmFtZSA9PSBudWxscHRyKQorCWlm
IChwYXRobmFtZSA9PSBOVUxMKQogCQlnb3RvIG91dF9lcnJubzsKIAlpZiAoKGVycm9yID0gdGFz
a19jb252KHQsIHBhdGhuYW1lLCBWV1JJVEUsIHBhdGgpKSAhPSAwKQogCQlnb3RvIG91dF9lcnJu
bzsKQEAgLTE1OTUsNyArMTU5Niw3IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2Z0cnVuY2F0ZV9l
cnIsICIlZCIsIGludCk7CiBpbnQgZnRydW5jYXRlKGludCBmZCwgb2ZmX3QgbGVuZ3RoKQogewog
CXRyYWNlX3Zmc19mdHJ1bmNhdGUoZmQsIGxlbmd0aCk7Ci0Jc3RydWN0IGZpbGUgKmZwOworCXN0
cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwOwogCWludCBlcnJvcjsKIAogCWVycm9yID0gZmdldChmZCwg
JmZwKTsKQEAgLTE2MzAsNyArMTYzMSw3IEBAIHNzaXplX3QgcmVhZGxpbmsoY29uc3QgY2hhciAq
cGF0aG5hbWUsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnNpemUpCiAJCWdvdG8gb3V0X2Vycm5vOwog
CiAJZXJyb3IgPSBFTk9FTlQ7Ci0JaWYgKHBhdGhuYW1lID09IG51bGxwdHIpCisJaWYgKHBhdGhu
YW1lID09IE5VTEwpCiAJCWdvdG8gb3V0X2Vycm5vOwogCWVycm9yID0gdGFza19jb252KHQsIHBh
dGhuYW1lLCBWV1JJVEUsIHBhdGgpOwogCWlmIChlcnJvcikKQEAgLTE2NTQsNyArMTY1NSw3IEBA
IFRSQUNFUE9JTlQodHJhY2VfdmZzX2ZhbGxvY2F0ZV9lcnIsICIlZCIsIGludCk7CiAKIGludCBm
YWxsb2NhdGUoaW50IGZkLCBpbnQgbW9kZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbikKIHsK
LQlzdHJ1Y3QgZmlsZSAqZnA7CisJc3RydWN0IHZmc2NvcmVfZmlsZSAqZnA7CiAJaW50IGVycm9y
OwogCiAJdHJhY2VfdmZzX2ZhbGxvY2F0ZShmZCwgbW9kZSwgb2Zmc2V0LCBsZW4pOwpAQCAtMTY4
MiwxNCArMTY4MywxNCBAQCBMRlM2NChmYWxsb2NhdGUpOwogaW50IGZ1dGltZXNhdChpbnQgZGly
ZmQsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBjb25zdCBzdHJ1Y3QgdGltZXZhbCB0aW1lc1syXSkK
IHsKIAlzdHJ1Y3Qgc3RhdCBzdDsKLQlzdHJ1Y3QgZmlsZSAqZnA7CisJc3RydWN0IHZmc2NvcmVf
ZmlsZSAqZnA7CiAJaW50IGVycm9yOwogCWNoYXIgKmFic29sdXRlX3BhdGg7CiAKIAlpZiAoKHBh
dGhuYW1lICYmIHBhdGhuYW1lWzBdID09ICcvJykgfHwgZGlyZmQgPT0gQVRfRkRDV0QpCiAJCXJl
dHVybiB1dGltZXMocGF0aG5hbWUsIHRpbWVzKTsKIAotCS8vIE5vdGU6IGlmIHBhdGhuYW1lID09
IG51bGxwdHIsIGZ1dGltZXNhdCBvcGVyYXRlcyBvbiBkaXJmZCBpdHNlbGYsIGFuZCBpbgorCS8v
IE5vdGU6IGlmIHBhdGhuYW1lID09IE5VTEwsIGZ1dGltZXNhdCBvcGVyYXRlcyBvbiBkaXJmZCBp
dHNlbGYsIGFuZCBpbgogCS8vIHRoYXQgY2FzZSBpdCBkb2Vzbid0IGhhdmUgdG8gYmUgYSBkaXJl
Y3RvcnkuCiAJaWYgKHBhdGhuYW1lKSB7CiAJCWVycm9yID0gZnN0YXQoZGlyZmQsICZzdCk7CkBA
IC0xODM1LDcgKzE4MzYsNyBAQCBpbnQgY2htb2QoY29uc3QgY2hhciAqcGF0aG5hbWUsIG1vZGVf
dCBtb2RlKQogCXN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOwogCWNoYXIgcGF0aFtQQVRIX01B
WF07CiAJaW50IGVycm9yID0gRU5PRU5UOwotCWlmIChwYXRobmFtZSA9PSBudWxscHRyKQorCWlm
IChwYXRobmFtZSA9PSBOVUxMKQogCQlnb3RvIG91dF9lcnJubzsKIAlpZiAoKGVycm9yID0gdGFz
a19jb252KHQsIHBhdGhuYW1lLCBWV1JJVEUsIHBhdGgpKSAhPSAwKQogCQlnb3RvIG91dF9lcnJu
bzsKQEAgLTE4OTMsOCArMTg5NCw4IEBAIGludCBsY2hvd24oY29uc3QgY2hhciAqcGF0aCwgdWlk
X3Qgb3duZXIsIGdpZF90IGdyb3VwKQogI2lmIDAKIHNzaXplX3Qgc2VuZGZpbGUoaW50IG91dF9m
ZCwgaW50IGluX2ZkLCBvZmZfdCAqX29mZnNldCwgc2l6ZV90IGNvdW50KQogewotCXN0cnVjdCBm
aWxlICppbl9mcDsKLQlzdHJ1Y3QgZmlsZSAqb3V0X2ZwOworCXN0cnVjdCB2ZnNjb3JlX2ZpbGUg
KmluX2ZwOworCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKm91dF9mcDsKIAlmaWxlcmVmIGluX2Z7Zmls
ZXJlZl9mcm9tX2ZkKGluX2ZkKX07CiAJZmlsZXJlZiBvdXRfZntmaWxlcmVmX2Zyb21fZmQob3V0
X2ZkKX07CiAKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL21vdW50LmMgYi9saWIvdmZzY29yZS9t
b3VudC5jCmluZGV4IDA2OTIyZmZiLi5mYWQ0NzAyNiAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUv
bW91bnQuYworKysgYi9saWIvdmZzY29yZS9tb3VudC5jCkBAIC01NCwxMiArNTQsMTMgQEAKIC8q
CiAgKiBMaXN0IGZvciBWRlMgbW91bnQgcG9pbnRzLgogICovCi1zdGF0aWMgc3RkOjpsaXN0PG1v
dW50Kj4gbW91bnRfbGlzdDsKKworVUtfTElTVF9IRUFEKG1vdW50X2xpc3QpOwogCiAvKgogICog
R2xvYmFsIGxvY2sgdG8gYWNjZXNzIG1vdW50IHBvaW50LgogICovCi1zdGF0aWMgbXV0ZXggbW91
bnRfbG9jazsKK3N0YXRpYyBzdHJ1Y3QgdWtfbXV0ZXggbW91bnRfbG9jayA9IFVLX01VVEVYX0lO
SVRJQUxJWkVSKG1vdW50X2xvY2spOwogCiAvKgogICogTG9va3VwIGZpbGUgc3lzdGVtLgpAQCAt
ODQsMTEgKzg1LDExIEBAIHN5c19tb3VudChjb25zdCBjaGFyICpkZXYsIGNvbnN0IGNoYXIgKmRp
ciwgY29uc3QgY2hhciAqZnNuYW1lLCBpbnQgZmxhZ3MsIGNvbnN0CiAJY29uc3Qgc3RydWN0IHZm
c3N3ICpmczsKIAlzdHJ1Y3QgbW91bnQgKm1wOwogCXN0cnVjdCBkZXZpY2UgKmRldmljZTsKLQlz
dHJ1Y3QgZGVudHJ5ICpkcF9jb3ZlcmVkOwotCXN0cnVjdCB2bm9kZSAqdnA7CisJc3RydWN0IGRl
bnRyeSAqZHBfY292ZXJlZCA9IE5VTEw7CisJc3RydWN0IHZub2RlICp2cCA9IE5VTEw7CiAJaW50
IGVycm9yOwogCi0Ja3ByaW50ZigiVkZTOiBtb3VudGluZyAlcyBhdCAlc1xuIiwgZnNuYW1lLCBk
aXIpOworCXVrX3ByX2luZm8oIlZGUzogbW91bnRpbmcgJXMgYXQgJXNcbiIsIGZzbmFtZSwgZGly
KTsKIAogCWlmICghZGlyIHx8ICpkaXIgPT0gJ1wwJykKIAkJcmV0dXJuIEVOT0VOVDsKQEAgLTk3
LDcgKzk4LDcgQEAgc3lzX21vdW50KGNvbnN0IGNoYXIgKmRldiwgY29uc3QgY2hhciAqZGlyLCBj
b25zdCBjaGFyICpmc25hbWUsIGludCBmbGFncywgY29uc3QKIAlpZiAoIShmcyA9IGZzX2dldGZz
KGZzbmFtZSkpKQogCQlyZXR1cm4gRU5PREVWOyAgLyogTm8gc3VjaCBmaWxlIHN5c3RlbSAqLwog
Ci0JLyogT3BlbiBkZXZpY2UuIG51bGxwdHIgY2FuIGJlIHNwZWNpZmllZCBhcyBhIGRldmljZS4g
Ki8KKwkvKiBPcGVuIGRldmljZS4gTlVMTCBjYW4gYmUgc3BlY2lmaWVkIGFzIGEgZGV2aWNlLiAq
LwogCS8vIEFsbG93IGRldmljZV9vcGVuKCkgdG8gZmFpbCwgaW4gd2hpY2ggY2FzZSBkZXYgaXMg
aW50ZXJwcmV0ZWQKIAkvLyBieSB0aGUgZmlsZSBzeXN0ZW0gbW91bnQgcm91dGluZSAoZS5nIHpm
cyBwb29scykKIAlkZXZpY2UgPSAwOwpAQCAtMTExLDE3ICsxMTIsMjIgQEAgc3lzX21vdW50KGNv
bnN0IGNoYXIgKmRldiwgY29uc3QgY2hhciAqZGlyLCBjb25zdCBjaGFyICpmc25hbWUsIGludCBm
bGFncywgY29uc3QKIAkvLyB0aGF0IG9ubHkgb25lIHN5c19tb3VudCgpIHJ1bnMgYXQgYSB0aW1l
LiBXZSBjYW5ub3QgcmV1c2UgdGhlIGV4aXN0aW5nCiAJLy8gbW91bnRfbG9jayBmb3IgdGhpcyBw
dXJwb3NlOiBJZiB3ZSB0YWtlIG1vdW50X2xvY2sgYW5kIHRoZW4gZG8KIAkvLyBsb29rdXBzLCB0
aGlzIGlzIGxvY2sgb3JkZXIgaW52ZXJzaW9uIGFuZCBjYW4gcmVzdWx0IGluIGRlYWRsb2NrLgot
CXN0YXRpYyBtdXRleCBzeXNfbW91bnRfbG9jazsKLQlTQ09QRV9MT0NLKHN5c19tb3VudF9sb2Nr
KTsKLQlXSVRIX0xPQ0sobW91bnRfbG9jaykgewotCQlmb3IgKGF1dG8mJiBtcCA6IG1vdW50X2xp
c3QpIHsKLQkJCWlmICghc3RyY21wKG1wLT5tX3BhdGgsIGRpcikgfHwKLQkJCQkoZGV2aWNlICYm
IG1wLT5tX2RldiA9PSBkZXZpY2UpKSB7Ci0JCQkJZXJyb3IgPSBFQlVTWTsgIC8qIEFscmVhZHkg
bW91bnRlZCAqLwotCQkJCWdvdG8gZXJyMTsKLQkJCX0KKworCS8qIFRPRE86IHByb3RlY3QgdGhl
IGZ1bmN0aW9uIGZyb20gcmVlbnRyYW5jZSwgYXMgZGVzY3JpYmVkIGluCisJICogdGhlIGNvbW1l
bnQgYWJvdmUgKi8KKwkvKiBzdGF0aWMgbXV0ZXggc3lzX21vdW50X2xvY2s7ICovCisJLyogU0NP
UEVfTE9DSyhzeXNfbW91bnRfbG9jayk7ICovCisKKwl1a19tdXRleF9sb2NrKCZtb3VudF9sb2Nr
KTsKKwl1a19saXN0X2Zvcl9lYWNoX2VudHJ5KG1wLCAmbW91bnRfbGlzdCwgbW50X2xpc3QpIHsK
KwkJaWYgKCFzdHJjbXAobXAtPm1fcGF0aCwgZGlyKSB8fAorCQkgICAgKGRldmljZSAmJiBtcC0+
bV9kZXYgPT0gZGV2aWNlKSkgeworCQkJZXJyb3IgPSBFQlVTWTsgIC8qIEFscmVhZHkgbW91bnRl
ZCAqLworCQkJdWtfbXV0ZXhfdW5sb2NrKCZtb3VudF9sb2NrKTsKKwkJCWdvdG8gZXJyMTsKIAkJ
fQogCX0KKwl1a19tdXRleF91bmxvY2soJm1vdW50X2xvY2spOwogCS8qCiAJICogQ3JlYXRlIFZG
UyBtb3VudCBlbnRyeS4KIAkgKi8KQEAgLTEzNCw3ICsxNDAsNyBAQCBzeXNfbW91bnQoY29uc3Qg
Y2hhciAqZGV2LCBjb25zdCBjaGFyICpkaXIsIGNvbnN0IGNoYXIgKmZzbmFtZSwgaW50IGZsYWdz
LCBjb25zdAogCW1wLT5tX29wID0gZnMtPnZzX29wOwogCW1wLT5tX2ZsYWdzID0gZmxhZ3M7CiAJ
bXAtPm1fZGV2ID0gZGV2aWNlOwotCW1wLT5tX2RhdGEgPSBudWxscHRyOworCW1wLT5tX2RhdGEg
PSBOVUxMOwogCXN0cmxjcHkobXAtPm1fcGF0aCwgZGlyLCBzaXplb2YobXAtPm1fcGF0aCkpOwog
CXN0cmxjcHkobXAtPm1fc3BlY2lhbCwgZGV2LCBzaXplb2YobXAtPm1fc3BlY2lhbCkpOwogCkBA
IC0xNDMsNyArMTQ5LDcgQEAgc3lzX21vdW50KGNvbnN0IGNoYXIgKmRldiwgY29uc3QgY2hhciAq
ZGlyLCBjb25zdCBjaGFyICpmc25hbWUsIGludCBmbGFncywgY29uc3QKIAkgKi8KIAlpZiAoKmRp
ciA9PSAnLycgJiYgKihkaXIgKyAxKSA9PSAnXDAnKSB7CiAJCS8qIElnbm9yZSBpZiBpdCBtb3Vu
dHMgdG8gZ2xvYmFsIHJvb3QgZGlyZWN0b3J5LiAqLwotCQlkcF9jb3ZlcmVkID0gbnVsbHB0cjsK
KwkJZHBfY292ZXJlZCA9IE5VTEw7CiAJfSBlbHNlIHsKIAkJaWYgKChlcnJvciA9IG5hbWVpKGRp
ciwgJmRwX2NvdmVyZWQpKSAhPSAwKSB7CiAKQEAgLTE2MCw4ICsxNjYsOCBAQCBzeXNfbW91bnQo
Y29uc3QgY2hhciAqZGV2LCBjb25zdCBjaGFyICpkaXIsIGNvbnN0IGNoYXIgKmZzbmFtZSwgaW50
IGZsYWdzLCBjb25zdAogCS8qCiAJICogQ3JlYXRlIGEgcm9vdCB2bm9kZSBmb3IgdGhpcyBmaWxl
IHN5c3RlbS4KIAkgKi8KLQl2Z2V0KG1wLCAwLCAmdnApOwotCWlmICh2cCA9PSBudWxscHRyKSB7
CisJdmZzY29yZV92Z2V0KG1wLCAwLCAmdnApOworCWlmICh2cCA9PSBOVUxMKSB7CiAJCWVycm9y
ID0gRU5PTUVNOwogCQlnb3RvIGVycjM7CiAJfQpAQCAtMTY5LDcgKzE3NSw3IEBAIHN5c19tb3Vu
dChjb25zdCBjaGFyICpkZXYsIGNvbnN0IGNoYXIgKmRpciwgY29uc3QgY2hhciAqZnNuYW1lLCBp
bnQgZmxhZ3MsIGNvbnN0CiAJdnAtPnZfZmxhZ3MgPSBWUk9PVDsKIAl2cC0+dl9tb2RlID0gU19J
RkRJUiB8IFNfSVJVU1IgfCBTX0lXVVNSIHwgU19JWFVTUjsKIAotCW1wLT5tX3Jvb3QgPSBkZW50
cnlfYWxsb2MobnVsbHB0ciwgdnAsICIvIik7CisJbXAtPm1fcm9vdCA9IGRlbnRyeV9hbGxvYyhO
VUxMLCB2cCwgIi8iKTsKIAlpZiAoIW1wLT5tX3Jvb3QpIHsKIAkJdnB1dCh2cCk7CiAJCWdvdG8g
ZXJyMzsKQEAgLTE4OCw5ICsxOTQsOSBAQCBzeXNfbW91bnQoY29uc3QgY2hhciAqZGV2LCBjb25z
dCBjaGFyICpkaXIsIGNvbnN0IGNoYXIgKmZzbmFtZSwgaW50IGZsYWdzLCBjb25zdAogCS8qCiAJ
ICogSW5zZXJ0IHRvIG1vdW50IGxpc3QKIAkgKi8KLQlXSVRIX0xPQ0sobW91bnRfbG9jaykgewot
CQltb3VudF9saXN0LnB1c2hfYmFjayhtcCk7Ci0JfQorCXVrX211dGV4X2xvY2soJm1vdW50X2xv
Y2spOworCXVrX2xpc3RfYWRkX3RhaWwoJm1wLT5tbnRfbGlzdCwgJm1vdW50X2xpc3QpOworCXVr
X211dGV4X3VubG9jaygmbW91bnRfbG9jayk7CiAKIAlyZXR1cm4gMDsgICAvKiBzdWNjZXNzICov
CiAgZXJyNDoKQEAgLTIyMiwxMiArMjI4LDEyIEBAIHJlbGVhc2VfbXBfZGVudHJpZXMoc3RydWN0
IG1vdW50ICptcCkKIGludAogc3lzX3Vtb3VudDIoY29uc3QgY2hhciAqcGF0aCwgaW50IGZsYWdz
KQogewotCXN0cnVjdCBtb3VudCAqbXA7CisJc3RydWN0IG1vdW50ICptcCwgKnRtcDsKIAlpbnQg
ZXJyb3IsIHBhdGhsZW47CiAKLQlrcHJpbnRmKCJWRlM6IHVubW91bnRpbmcgJXNcbiIsIHBhdGgp
OworCXVrX3ByX2luZm8oIlZGUzogdW5tb3VudGluZyAlc1xuIiwgcGF0aCk7CiAKLQlTQ09QRV9M
T0NLKG1vdW50X2xvY2spOworCXVrX211dGV4X2xvY2soJm1vdW50X2xvY2spOwogCiAJcGF0aGxl
biA9IHN0cmxlbihwYXRoKTsKIAlpZiAocGF0aGxlbiA+PSBNQVhQQVRITEVOKSB7CkBAIC0yMzYs
NyArMjQyLDcgQEAgc3lzX3Vtb3VudDIoY29uc3QgY2hhciAqcGF0aCwgaW50IGZsYWdzKQogCX0K
IAogCS8qIEdldCBtb3VudCBlbnRyeSAqLwotCWZvciAoYXV0byYmIHRtcCA6IG1vdW50X2xpc3Qp
IHsKKwl1a19saXN0X2Zvcl9lYWNoX2VudHJ5KHRtcCwgJm1vdW50X2xpc3QsIG1udF9saXN0KSB7
CiAJCWlmICghc3RyY21wKHBhdGgsIHRtcC0+bV9wYXRoKSkgewogCQkJbXAgPSB0bXA7CiAJCQln
b3RvIGZvdW5kOwpAQCAtMjUwLDE0ICsyNTYsMTQgQEAgZm91bmQ6CiAJLyoKIAkgKiBSb290IGZz
IGNhbiBub3QgYmUgdW5tb3VudGVkLgogCSAqLwotCWlmIChtcC0+bV9jb3ZlcmVkID09IG51bGxw
dHIgJiYgIShmbGFncyAmIE1OVF9GT1JDRSkpIHsKKwlpZiAobXAtPm1fY292ZXJlZCA9PSBOVUxM
ICYmICEoZmxhZ3MgJiBNTlRfRk9SQ0UpKSB7CiAJCWVycm9yID0gRUlOVkFMOwogCQlnb3RvIG91
dDsKIAl9CiAKIAlpZiAoKGVycm9yID0gVkZTX1VOTU9VTlQobXAsIGZsYWdzKSkgIT0gMCkKIAkJ
Z290byBvdXQ7Ci0JbW91bnRfbGlzdC5yZW1vdmUobXApOworCXVrX2xpc3RfZGVsX2luaXQoJm1w
LT5tbnRfbGlzdCk7CiAKICNpZmRlZiBIQVZFX0JVRkZFUlMKIAkvKiBGbHVzaCBhbGwgYnVmZmVy
cyAqLwpAQCAtMjY4LDYgKzI3NCw3IEBAIGZvdW5kOgogCQlkZXZpY2VfY2xvc2UobXAtPm1fZGV2
KTsKIAlmcmVlKG1wKTsKICBvdXQ6CisJdWtfbXV0ZXhfdW5sb2NrKCZtb3VudF9sb2NrKTsKIAly
ZXR1cm4gZXJyb3I7CiB9CiAKQEAgLTI4MSw3ICsyODgsNyBAQCBzeXNfdW1vdW50KGNvbnN0IGNo
YXIgKnBhdGgpCiBpbnQKIHN5c19waXZvdF9yb290KGNvbnN0IGNoYXIgKm5ld19yb290LCBjb25z
dCBjaGFyICpwdXRfb2xkKQogewotCXN0cnVjdCBtb3VudCAqbmV3bXAgPSBudWxscHRyLCAqb2xk
bXAgPSBudWxscHRyOworCXN0cnVjdCBtb3VudCAqbmV3bXAgPSBOVUxMLCAqb2xkbXAgPSBOVUxM
OwogCWludCBlcnJvcjsKIAogCVdJVEhfTE9DSyhtb3VudF9sb2NrKSB7CkBAIC0zMTQsMTIgKzMy
MSwxMiBAQCBzeXNfcGl2b3Rfcm9vdChjb25zdCBjaGFyICpuZXdfcm9vdCwgY29uc3QgY2hhciAq
cHV0X29sZCkKIAkJaWYgKG5ld21wLT5tX2NvdmVyZWQpIHsKIAkJCWRyZWxlKG5ld21wLT5tX2Nv
dmVyZWQpOwogCQl9Ci0JCW5ld21wLT5tX2NvdmVyZWQgPSBudWxscHRyOworCQluZXdtcC0+bV9j
b3ZlcmVkID0gTlVMTDsKIAogCQlpZiAobmV3bXAtPm1fcm9vdC0+ZF9wYXJlbnQpIHsKIAkJCWRy
ZWxlKG5ld21wLT5tX3Jvb3QtPmRfcGFyZW50KTsKIAkJfQotCQluZXdtcC0+bV9yb290LT5kX3Bh
cmVudCA9IG51bGxwdHI7CisJCW5ld21wLT5tX3Jvb3QtPmRfcGFyZW50ID0gTlVMTDsKIAogCQlz
dHJsY3B5KG5ld21wLT5tX3BhdGgsICIvIiwgc2l6ZW9mKG5ld21wLT5tX3BhdGgpKTsKIAl9CkBA
IC0zMzAsMTUgKzMzNywxNyBAQCBzeXNfcGl2b3Rfcm9vdChjb25zdCBjaGFyICpuZXdfcm9vdCwg
Y29uc3QgY2hhciAqcHV0X29sZCkKIGludAogc3lzX3N5bmModm9pZCkKIHsKKwlzdHJ1Y3QgbW91
bnQgKm1wOworCXVrX211dGV4X2xvY2soJm1vdW50X2xvY2spOworCiAJLyogQ2FsbCBlYWNoIG1v
dW50ZWQgZmlsZSBzeXN0ZW0uICovCi0JV0lUSF9MT0NLKG1vdW50X2xvY2spIHsKLQkJZm9yIChh
dXRvJiYgbXAgOiBtb3VudF9saXN0KSB7Ci0JCQlWRlNfU1lOQyhtcCk7Ci0JCX0KKwl1a19saXN0
X2Zvcl9lYWNoX2VudHJ5KG1wLCAmbW91bnRfbGlzdCwgbW50X2xpc3QpIHsKKwkJVkZTX1NZTkMo
bXApOwogCX0KICNpZmRlZiBIQVZFX0JVRkZFUlMKIAliaW9fc3luYygpOwogI2VuZGlmCisJdWtf
bXV0ZXhfdW5sb2NrKCZtb3VudF9sb2NrKTsKIAlyZXR1cm4gMDsKIH0KIApAQCAtMzgwLDIyICsz
ODksMjMgQEAgY291bnRfbWF0Y2goY29uc3QgY2hhciAqcGF0aCwgY2hhciAqbW91bnRfcm9vdCkK
IGludAogdmZzX2ZpbmRyb290KGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBtb3VudCAqKm1wLCBj
aGFyICoqcm9vdCkKIHsKLQlzdHJ1Y3QgbW91bnQgKm0gPSBudWxscHRyOworCXN0cnVjdCBtb3Vu
dCAqbSA9IE5VTEwsICp0bXA7CiAJc2l6ZV90IGxlbiwgbWF4X2xlbiA9IDA7CiAKIAlpZiAoIXBh
dGgpCiAJCXJldHVybiAtMTsKIAogCS8qIEZpbmQgbW91bnQgcG9pbnQgZnJvbSBuZWFyZXN0IHBh
dGggKi8KLQlTQ09QRV9MT0NLKG1vdW50X2xvY2spOwotCWZvciAoYXV0byYmIHRtcCA6IG1vdW50
X2xpc3QpIHsKKwl1a19tdXRleF9sb2NrKCZtb3VudF9sb2NrKTsKKwl1a19saXN0X2Zvcl9lYWNo
X2VudHJ5KHRtcCwgJm1vdW50X2xpc3QsIG1udF9saXN0KSB7CiAJCWxlbiA9IGNvdW50X21hdGNo
KHBhdGgsIHRtcC0+bV9wYXRoKTsKIAkJaWYgKGxlbiA+IG1heF9sZW4pIHsKIAkJCW1heF9sZW4g
PSBsZW47CiAJCQltID0gdG1wOwogCQl9CiAJfQotCWlmIChtID09IG51bGxwdHIpCisJdWtfbXV0
ZXhfdW5sb2NrKCZtb3VudF9sb2NrKTsKKwlpZiAobSA9PSBOVUxMKQogCQlyZXR1cm4gLTE7CiAJ
KnJvb3QgPSAoY2hhciAqKShwYXRoICsgbWF4X2xlbik7CiAJaWYgKCoqcm9vdCA9PSAnLycpCkBA
IC00MTAsOCArNDIwLDEwIEBAIHZmc19maW5kcm9vdChjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3Qg
bW91bnQgKiptcCwgY2hhciAqKnJvb3QpCiB2b2lkCiB2ZnNfYnVzeShzdHJ1Y3QgbW91bnQgKm1w
KQogewotCVNDT1BFX0xPQ0sobW91bnRfbG9jayk7Ci0JbXAtPm1fY291bnQrKzsKKwkvKiBUaGUg
bV9jb3VudCBpcyBub3QgcmVhbGx5IGNoZWNrZWQgYW55d2hlcmUKKwkgKiBjdXJyZW50bHkuIEF0
b21pYyBpcyBlbm91Z2guIEJ1dCBpdCBjb3VsZCBiZSB0aGF0IG9idGFpbmluZworCSAqIG1vdW50
X2xvY2sgd2lsbCBiZSBuZWVkZWQgaW4gdGhlIGZ1dHVyZSAqLworCXVrYXJjaF9pbmMoJm1wLT5t
X2NvdW50KTsKIH0KIAogCkBAIC00MjEsOCArNDMzLDEwIEBAIHZmc19idXN5KHN0cnVjdCBtb3Vu
dCAqbXApCiB2b2lkCiB2ZnNfdW5idXN5KHN0cnVjdCBtb3VudCAqbXApCiB7Ci0JU0NPUEVfTE9D
Syhtb3VudF9sb2NrKTsKLQltcC0+bV9jb3VudC0tOworCS8qIFRoZSBtX2NvdW50IGlzIG5vdCBy
ZWFsbHkgY2hlY2tlZCBhbnl3aGVyZQorCSAqIGN1cnJlbnRseS4gQXRvbWljIGlzIGVub3VnaC4g
QnV0IGl0IGNvdWxkIGJlIHRoYXQgb2J0YWluaW5nCisJICogbW91bnRfbG9jayB3aWxsIGJlIG5l
ZWRlZCBpbiB0aGUgZnV0dXJlICovCisJdWthcmNoX2RlYygmbXAtPm1fY291bnQpOwogfQogCiBp
bnQKQEAgLTQ0MSwxNCArNDU1LDE2IEBAIHZmc19laW52YWwodm9pZCkKIHZvaWQKIG1vdW50X2R1
bXAodm9pZCkKIHsKLQlTQ09QRV9MT0NLKG1vdW50X2xvY2spOworCXN0cnVjdCBtb3VudCAqbXA7
CisJdWtfbXV0ZXhfbG9jaygmbW91bnRfbG9jayk7CiAKLQlrcHJpbnRmKCJtb3VudF9kdW1wXG4i
KTsKLQlrcHJpbnRmKCJkZXYgICAgICBjb3VudCByb290XG4iKTsKLQlrcHJpbnRmKCItLS0tLS0t
LSAtLS0tLSAtLS0tLS0tLVxuIik7CisJdWtfcHJfZGVidWcoIm1vdW50X2R1bXBcbiIpOworCXVr
X3ByX2RlYnVnKCJkZXYgICAgICBjb3VudCByb290XG4iKTsKKwl1a19wcl9kZWJ1ZygiLS0tLS0t
LS0gLS0tLS0gLS0tLS0tLS1cbiIpOwogCi0JZm9yIChhdXRvJiYgbXAgOiBtb3VudF9saXN0KSB7
Ci0JCWtwcmludGYoIiU4eCAlNWQgJXNcbiIsIG1wLT5tX2RldiwgbXAtPm1fY291bnQsIG1wLT5t
X3BhdGgpOworCXVrX2xpc3RfZm9yX2VhY2hfZW50cnkobXAsICZtb3VudF9saXN0LCBtbnRfbGlz
dCkgeworCQl1a19wcl9kZWJ1ZygiJThwICU1ZCAlc1xuIiwgbXAtPm1fZGV2LCBtcC0+bV9jb3Vu
dCwgbXAtPm1fcGF0aCk7CiAJfQorCXVrX211dGV4X3VubG9jaygmbW91bnRfbG9jayk7CiB9CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3N1YnJfdWlvLmMgYi9saWIvdmZzY29yZS9z
dWJyX3Vpby5jCmluZGV4IGJiY2EzMzYyLi5kOGU5ZDFiZSAxMDA2NDQKLS0tIGEvbGliL3Zmc2Nv
cmUvc3Vicl91aW8uYworKysgYi9saWIvdmZzY29yZS9zdWJyX3Vpby5jCkBAIC00OCw3ICs0OCw3
IEBACiBpbnQKIHVpb21vdmUodm9pZCAqY3AsIGludCBuLCBzdHJ1Y3QgdWlvICp1aW8pCiB7Ci0J
YXNzZXJ0KHVpby0+dWlvX3J3ID09IFVJT19SRUFEIHx8IHVpby0+dWlvX3J3ID09IFVJT19XUklU
RSk7CisJVUtfQVNTRVJUKHVpby0+dWlvX3J3ID09IFVJT19SRUFEIHx8IHVpby0+dWlvX3J3ID09
IFVJT19XUklURSk7CiAKIAl3aGlsZSAobiA+IDAgJiYgdWlvLT51aW9fcmVzaWQpIHsKIAkJc3Ry
dWN0IGlvdmVjICppb3YgPSB1aW8tPnVpb19pb3Y7CmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9z
eXNjYWxscy5jIGIvbGliL3Zmc2NvcmUvc3lzY2FsbHMuYwppbmRleCBmNTBmYjM4Zi4uZmEwNDk4
ZTcgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL3N5c2NhbGxzLmMKKysrIGIvbGliL3Zmc2NvcmUv
c3lzY2FsbHMuYwpAQCAtNjUsOSArNjUsOSBAQCBvcGVuX25vX2ZvbGxvd19jaGsoY2hhciAqcGF0
aCkKIAlzdHJ1Y3QgZGVudHJ5ICpkcDsKIAlzdHJ1Y3Qgdm5vZGUgICp2cDsKIAotCWRkcCA9IG51
bGxwdHI7Ci0JZHAgID0gbnVsbHB0cjsKLQl2cCAgPSBudWxscHRyOworCWRkcCA9IE5VTEw7CisJ
ZHAgID0gTlVMTDsKKwl2cCAgPSBOVUxMOwogCiAJZXJyb3IgPSBsb29rdXAocGF0aCwgJmRkcCwg
Jm5hbWUpOwogCWlmIChlcnJvcikgewpAQCAtODgsMTUgKzg4LDE1IEBAIG9wZW5fbm9fZm9sbG93
X2NoayhjaGFyICpwYXRoKQogCiAJZXJyb3IgPSAwOwogb3V0OgotCWlmICh2cCAhPSBudWxscHRy
KSB7CisJaWYgKHZwICE9IE5VTEwpIHsKIAkJdm5fdW5sb2NrKHZwKTsKIAl9CiAKLQlpZiAoZHAg
IT0gbnVsbHB0cikgeworCWlmIChkcCAhPSBOVUxMKSB7CiAJCWRyZWxlKGRwKTsKIAl9CiAKLQlp
ZiAoZGRwICE9IG51bGxwdHIpIHsKKwlpZiAoZGRwICE9IE5VTEwpIHsKIAkJZHJlbGUoZGRwKTsK
IAl9CiAKQEAgLTEwNCw5ICsxMDQsOSBAQCBvdXQ6CiB9CiAKIGludAotc3lzX29wZW4oY2hhciAq
cGF0aCwgaW50IGZsYWdzLCBtb2RlX3QgbW9kZSwgc3RydWN0IGZpbGUgKipmcHApCitzeXNfb3Bl
bihjaGFyICpwYXRoLCBpbnQgZmxhZ3MsIG1vZGVfdCBtb2RlLCBzdHJ1Y3QgdmZzY29yZV9maWxl
ICoqZnBwKQogewotCWZpbGUgKmZwOworCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwOwogCXN0cnVj
dCBkZW50cnkgKmRwLCAqZGRwOwogCXN0cnVjdCB2bm9kZSAqdnA7CiAJY2hhciAqZmlsZW5hbWU7
CkBAIC0xMTUsMTEgKzExNSwxMSBAQCBzeXNfb3BlbihjaGFyICpwYXRoLCBpbnQgZmxhZ3MsIG1v
ZGVfdCBtb2RlLCBzdHJ1Y3QgZmlsZSAqKmZwcCkKIAlEUFJJTlRGKFZGU0RCX1NZU0NBTEwsICgi
c3lzX29wZW46IHBhdGg9JXMgZmxhZ3M9JXggbW9kZT0leFxuIiwKIAkJCQlwYXRoLCBmbGFncywg
bW9kZSkpOwogCi0JZmxhZ3MgPSBmZmxhZ3MoZmxhZ3MpOworCWZsYWdzID0gdmZzY29yZV9mZmxh
Z3MoZmxhZ3MpOwogCWlmIChmbGFncyAmIE9fQ1JFQVQpIHsKIAkJZXJyb3IgPSBuYW1laShwYXRo
LCAmZHApOwogCQlpZiAoZXJyb3IgPT0gRU5PRU5UKSB7Ci0JCQkvKiBDcmVhdGUgbmV3IGZpbGUu
ICovCisJCQkvKiBDcmVhdGUgbmV3IHN0cnVjdCB2ZnNjb3JlX2ZpbGUuICovCiAJCQlpZiAoKGVy
cm9yID0gbG9va3VwKHBhdGgsICZkZHAsICZmaWxlbmFtZSkpICE9IDApCiAJCQkJcmV0dXJuIGVy
cm9yOwogCkBAIC0yMzMsMTQgKzIzMywxNCBAQCBvdXRfZHJlbGU6CiB9CiAKIGludAotc3lzX2Ns
b3NlKHN0cnVjdCBmaWxlICpmcCkKK3N5c19jbG9zZShzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCBf
X3VudXNlZCkKIHsKIAogCXJldHVybiAwOwogfQogCiBpbnQKLXN5c19yZWFkKHN0cnVjdCBmaWxl
ICpmcCwgY29uc3Qgc3RydWN0IGlvdmVjICppb3YsIHNpemVfdCBuaW92LAorc3lzX3JlYWQoc3Ry
dWN0IHZmc2NvcmVfZmlsZSAqZnAsIGNvbnN0IHN0cnVjdCBpb3ZlYyAqaW92LCBzaXplX3Qgbmlv
diwKIAkJb2ZmX3Qgb2Zmc2V0LCBzaXplX3QgKmNvdW50KQogewogCWludCBlcnJvciA9IDA7CkBA
IC0yOTAsNyArMjkwLDcgQEAgc3lzX3JlYWQoc3RydWN0IGZpbGUgKmZwLCBjb25zdCBzdHJ1Y3Qg
aW92ZWMgKmlvdiwgc2l6ZV90IG5pb3YsCiB9CiAKIGludAotc3lzX3dyaXRlKHN0cnVjdCBmaWxl
ICpmcCwgY29uc3Qgc3RydWN0IGlvdmVjICppb3YsIHNpemVfdCBuaW92LAorc3lzX3dyaXRlKHN0
cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlvdiwgc2l6ZV90IG5p
b3YsCiAJCW9mZl90IG9mZnNldCwgc2l6ZV90ICpjb3VudCkKIHsKIAlzdHJ1Y3QgaW92ZWMgKmNv
cHlfaW92OwpAQCAtMzM3LDEyICszMzcsMTIgQEAgc3lzX3dyaXRlKHN0cnVjdCBmaWxlICpmcCwg
Y29uc3Qgc3RydWN0IGlvdmVjICppb3YsIHNpemVfdCBuaW92LAogfQogCiBpbnQKLXN5c19sc2Vl
ayhzdHJ1Y3QgZmlsZSAqZnAsIG9mZl90IG9mZiwgaW50IHR5cGUsIG9mZl90ICpvcmlnaW4pCitz
eXNfbHNlZWsoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAsIG9mZl90IG9mZiwgaW50IHR5cGUsIG9m
Zl90ICpvcmlnaW4pCiB7CiAJc3RydWN0IHZub2RlICp2cDsKIAotCURQUklOVEYoVkZTREJfU1lT
Q0FMTCwgKCJzeXNfc2VlazogZnA9JXggb2ZmPSVkIHR5cGU9JWRcbiIsCi0JCQkJKHVfbG9uZylm
cCwgKHVfaW50KW9mZiwgdHlwZSkpOworCURQUklOVEYoVkZTREJfU1lTQ0FMTCwgKCJzeXNfc2Vl
azogZnA9JXAgb2ZmPSV1ZCB0eXBlPSVkXG4iLAorCQkJCWZwLCAodW5zaWduZWQgaW50KW9mZiwg
dHlwZSkpOwogCiAJaWYgKCFmcC0+Zl9kZW50cnkpIHsKIAkgICAgLy8gTGludXggZG9lc24ndCBp
bXBsZW1lbnQgbHNlZWsoKSBvbiBwaXBlcywgc29ja2V0cywgb3IgdHR5cy4KQEAgLTM3MywxMSAr
MzczLDExIEBAIHN5c19sc2VlayhzdHJ1Y3QgZmlsZSAqZnAsIG9mZl90IG9mZiwgaW50IHR5cGUs
IG9mZl90ICpvcmlnaW4pCiB9CiAKIGludAotc3lzX2lvY3RsKHN0cnVjdCBmaWxlICpmcCwgdV9s
b25nIHJlcXVlc3QsIHZvaWQgKmJ1ZikKK3N5c19pb2N0bChzdHJ1Y3QgdmZzY29yZV9maWxlICpm
cCwgdW5zaWduZWQgbG9uZyByZXF1ZXN0LCB2b2lkICpidWYpCiB7CiAJaW50IGVycm9yOwogCi0J
RFBSSU5URihWRlNEQl9TWVNDQUxMLCAoInN5c19pb2N0bDogZnA9JXggcmVxdWVzdD0leFxuIiwg
ZnAsIHJlcXVlc3QpKTsKKwlEUFJJTlRGKFZGU0RCX1NZU0NBTEwsICgic3lzX2lvY3RsOiBmcD0l
cCByZXF1ZXN0PSVsdXhcbiIsIGZwLCByZXF1ZXN0KSk7CiAKIAlpZiAoKGZwLT5mX2ZsYWdzICYg
KEZSRUFEIHwgRldSSVRFKSkgPT0gMCkKIAkJcmV0dXJuIEVCQURGOwpAQCAtMzg5LDcgKzM4OSw3
IEBAIHN5c19pb2N0bChzdHJ1Y3QgZmlsZSAqZnAsIHVfbG9uZyByZXF1ZXN0LCB2b2lkICpidWYp
CiB9CiAKIGludAotc3lzX2ZzeW5jKHN0cnVjdCBmaWxlICpmcCkKK3N5c19mc3luYyhzdHJ1Y3Qg
dmZzY29yZV9maWxlICpmcCkKIHsKIAlzdHJ1Y3Qgdm5vZGUgKnZwOwogCWludCBlcnJvcjsKQEAg
LTQwNyw3ICs0MDcsNyBAQCBzeXNfZnN5bmMoc3RydWN0IGZpbGUgKmZwKQogfQogCiBpbnQKLXN5
c19mc3RhdChzdHJ1Y3QgZmlsZSAqZnAsIHN0cnVjdCBzdGF0ICpzdCkKK3N5c19mc3RhdChzdHJ1
Y3QgdmZzY29yZV9maWxlICpmcCwgc3RydWN0IHN0YXQgKnN0KQogewogCWludCBlcnJvciA9IDA7
CiAKQEAgLTQyNSw3ICs0MjUsNyBAQCBzdGF0aWMgaW50CiBjaGVja19kaXJfZW1wdHkoY2hhciAq
cGF0aCkKIHsKIAlpbnQgZXJyb3I7Ci0Jc3RydWN0IGZpbGUgKmZwOworCXN0cnVjdCB2ZnNjb3Jl
X2ZpbGUgKmZwOwogCXN0cnVjdCBkaXJlbnQgZGlyOwogCiAJRFBSSU5URihWRlNEQl9TWVNDQUxM
LCAoImNoZWNrX2Rpcl9lbXB0eVxuIikpOwpAQCAtNDUzLDcgKzQ1Myw3IEBAIG91dF9lcnJvcjoK
IH0KIAogaW50Ci1zeXNfcmVhZGRpcihzdHJ1Y3QgZmlsZSAqZnAsIHN0cnVjdCBkaXJlbnQgKmRp
cikKK3N5c19yZWFkZGlyKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwLCBzdHJ1Y3QgZGlyZW50ICpk
aXIpCiB7CiAJc3RydWN0IHZub2RlICpkdnA7CiAJaW50IGVycm9yOwpAQCAtNDc3LDcgKzQ3Nyw3
IEBAIHN5c19yZWFkZGlyKHN0cnVjdCBmaWxlICpmcCwgc3RydWN0IGRpcmVudCAqZGlyKQogfQog
CiBpbnQKLXN5c19yZXdpbmRkaXIoc3RydWN0IGZpbGUgKmZwKQorc3lzX3Jld2luZGRpcihzdHJ1
Y3QgdmZzY29yZV9maWxlICpmcCkKIHsKIAlzdHJ1Y3Qgdm5vZGUgKmR2cDsKIApAQCAtNDk2LDcg
KzQ5Niw3IEBAIHN5c19yZXdpbmRkaXIoc3RydWN0IGZpbGUgKmZwKQogfQogCiBpbnQKLXN5c19z
ZWVrZGlyKHN0cnVjdCBmaWxlICpmcCwgbG9uZyBsb2MpCitzeXNfc2Vla2RpcihzdHJ1Y3QgdmZz
Y29yZV9maWxlICpmcCwgbG9uZyBsb2MpCiB7CiAJc3RydWN0IHZub2RlICpkdnA7CiAKQEAgLTUx
NSw3ICs1MTUsNyBAQCBzeXNfc2Vla2RpcihzdHJ1Y3QgZmlsZSAqZnAsIGxvbmcgbG9jKQogfQog
CiBpbnQKLXN5c190ZWxsZGlyKHN0cnVjdCBmaWxlICpmcCwgbG9uZyAqbG9jKQorc3lzX3RlbGxk
aXIoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAsIGxvbmcgKmxvYykKIHsKIAlzdHJ1Y3Qgdm5vZGUg
KmR2cDsKIApAQCAtNjYyLDE0ICs2NjIsMTQgQEAgc3lzX21rbm9kKGNoYXIgKnBhdGgsIG1vZGVf
dCBtb2RlKQogICoKICAqIEFzc3VtZXMgYm90aCBwYXRocyBkbyBub3QgaGF2ZSB0cmFpbGluZyBz
bGFzaGVzLgogICovCi1zdGF0aWMgYm9vbAorc3RhdGljIGludAogaXNfcGFyZW50KGNvbnN0IGNo
YXIgKnBhcmVudCwgY29uc3QgY2hhciAqY2hpbGQpCiB7CiAJc2l6ZV90IHBfbGVuID0gc3RybGVu
KHBhcmVudCk7CiAJcmV0dXJuICFzdHJuY21wKHBhcmVudCwgY2hpbGQsIHBfbGVuKSAmJiAocGFy
ZW50W3BfbGVuLTFdID09ICcvJyB8fCBjaGlsZFtwX2xlbl0gPT0gJy8nKTsKIH0KIAotc3RhdGlj
IGJvb2wKK3N0YXRpYyBpbnQKIGhhc190cmFpbGluZyhjb25zdCBjaGFyICpwYXRoLCBjaGFyIGNo
KQogewogCXNpemVfdCBsZW4gPSBzdHJsZW4ocGF0aCk7CkBAIC02OTUsMTYgKzY5NSwxNiBAQCBz
eXNfcmVuYW1lKGNoYXIgKnNyYywgY2hhciAqZGVzdCkKIAljaGFyICpzbmFtZSwgKmRuYW1lOwog
CWludCBlcnJvcjsKIAljaGFyIHJvb3RbXSA9ICIvIjsKLQlib29sIHRzOyAvKiB0cmFpbGluZyBz
bGFzaCAqLworCWludCB0czsgLyogdHJhaWxpbmcgc2xhc2ggKi8KIAogCURQUklOVEYoVkZTREJf
U1lTQ0FMTCwgKCJzeXNfcmVuYW1lOiBzcmM9JXMgZGVzdD0lc1xuIiwgc3JjLCBkZXN0KSk7CiAK
LQl0cyA9IGZhbHNlOwotCWlmIChoYXNfdHJhaWxpbmcoc3JjLCAnLycpID09IHRydWUpIHsKKwl0
cyA9IDA7CisJaWYgKGhhc190cmFpbGluZyhzcmMsICcvJykpIHsKIAkJaWYgKHN0cmxlbihzcmMp
ICE9IDEpIHsKIAkJCS8qIHJlbW92ZSB0cmFpbGluZyBzbGFzaCBpZmYgcGF0aCBpcyBub25lIHJv
b3QgKi8KIAkJCXN0cmlwX3RyYWlsaW5nKHNyYywgJy8nKTsKLQkJCXRzID0gdHJ1ZTsKKwkJCXRz
ID0gMTsKIAkJfQogCX0KIApAQCAtNzIyLDE3ICs3MjIsMTcgQEAgc3lzX3JlbmFtZShjaGFyICpz
cmMsIGNoYXIgKmRlc3QpCiAJdnAxID0gZHAxLT5kX3Zub2RlOwogCXZuX2xvY2sodnAxKTsKIAot
CWlmICh2cDEtPnZfdHlwZSAhPSBWRElSICYmIHRzID09IHRydWUpIHsKKwlpZiAodnAxLT52X3R5
cGUgIT0gVkRJUiAmJiB0cykgewogCQllcnJvciA9IEVOT1RESVI7CiAJCWdvdG8gZXJyMTsKIAl9
CiAKLQl0cyA9IGZhbHNlOwotCWlmIChoYXNfdHJhaWxpbmcoZGVzdCwgJy8nKSA9PSB0cnVlKSB7
CisJdHMgPSAwOworCWlmIChoYXNfdHJhaWxpbmcoZGVzdCwgJy8nKSkgewogCQlpZiAoc3RybGVu
KGRlc3QpICE9IDEpIHsKIAkJCS8qIHJlbW92ZSB0cmFpbGluZyBzbGFzaCBpZmYgcGF0aCBpcyBu
b25lIHJvb3QgKi8KIAkJCXN0cmlwX3RyYWlsaW5nKGRlc3QsICcvJyk7Ci0JCQl0cyA9IHRydWU7
CisJCQl0cyA9IDE7CiAJCX0KIAl9CiAKQEAgLTc0OSw3ICs3NDksNyBAQCBzeXNfcmVuYW1lKGNo
YXIgKnNyYywgY2hhciAqZGVzdCkKIAkJdm5fbG9jayh2cDIpOwogCiAJCWlmICh2cDItPnZfdHlw
ZSAhPSBWRElSICYmIHZwMi0+dl90eXBlICE9IFZMTkspIHsKLQkJCWlmICh2cDEtPnZfdHlwZSA9
PSBWRElSIHx8IHRzID09IHRydWUpIHsKKwkJCWlmICh2cDEtPnZfdHlwZSA9PSBWRElSIHx8IHRz
KSB7CiAJCQkJZXJyb3IgPSBFTk9URElSOwogCQkJCWdvdG8gZXJyMjsKIAkJCX0KQEAgLTc2Miw3
ICs3NjIsNyBAQCBzeXNfcmVuYW1lKGNoYXIgKnNyYywgY2hhciAqZGVzdCkKIAkJCWdvdG8gZXJy
MjsKIAkJfQogCX0gZWxzZSBpZiAoZXJyb3IgPT0gRU5PRU5UKSB7Ci0JCWlmICh2cDEtPnZfdHlw
ZSAhPSBWRElSICYmIHRzID09IHRydWUpIHsKKwkJaWYgKHZwMS0+dl90eXBlICE9IFZESVIgJiYg
dHMpIHsKIAkJCWVycm9yID0gRU5PVERJUjsKIAkJCWdvdG8gZXJyMjsKIAkJfQpAQCAtNzg3LDcg
Kzc4Nyw3IEBAIHN5c19yZW5hbWUoY2hhciAqc3JjLCBjaGFyICpkZXN0KQogCX0KIAogCWRuYW1l
ID0gc3RycmNocihkZXN0LCAnLycpOwotCWlmIChkbmFtZSA9PSBudWxscHRyKSB7CisJaWYgKGRu
YW1lID09IE5VTEwpIHsKIAkJZXJyb3IgPSBFTk9URElSOwogCQlnb3RvIGVycjI7CiAJfQpAQCAt
ODQ4LDE1ICs4NDgsMTUgQEAgc3lzX3N5bWxpbmsoY29uc3QgY2hhciAqb2xkcGF0aCwgY29uc3Qg
Y2hhciAqbmV3cGF0aCkKIAlzdHJ1Y3QgZGVudHJ5CSpuZXdkaXJkcDsKIAljaGFyCQkqbmFtZTsK
IAotCWlmIChvbGRwYXRoID09IG51bGxwdHIgfHwgbmV3cGF0aCA9PSBudWxscHRyKSB7CisJaWYg
KG9sZHBhdGggPT0gTlVMTCB8fCBuZXdwYXRoID09IE5VTEwpIHsKIAkJcmV0dXJuIChFRkFVTFQp
OwogCX0KIAogCURQUklOVEYoVkZTREJfU1lTQ0FMTCwgKCJzeXNfbGluazogb2xkcGF0aD0lcyBu
ZXdwYXRoPSVzXG4iLAogCQkJCW9sZHBhdGgsIG5ld3BhdGgpKTsKIAotCW5ld2RwCQk9IG51bGxw
dHI7Ci0JbmV3ZGlyZHAJPSBudWxscHRyOworCW5ld2RwCQk9IE5VTEw7CisJbmV3ZGlyZHAJPSBO
VUxMOwogCiAJZXJyb3IgPSB0YXNrX2NvbnYodCwgbmV3cGF0aCwgVldSSVRFLCBucCk7CiAJaWYg
KGVycm9yICE9IDApIHsKQEAgLTg5Miw3ICs4OTIsNyBAQCBzeXNfc3ltbGluayhjb25zdCBjaGFy
ICpvbGRwYXRoLCBjb25zdCBjaGFyICpuZXdwYXRoKQogCWVycm9yID0gVk9QX1NZTUxJTksobmV3
ZGlyZHAtPmRfdm5vZGUsIG5hbWUsIG9wKTsKIAogb3V0OgotCWlmIChuZXdkaXJkcCAhPSBudWxs
cHRyKSB7CisJaWYgKG5ld2RpcmRwICE9IE5VTEwpIHsKIAkJdm5fdW5sb2NrKG5ld2RpcmRwLT5k
X3Zub2RlKTsKIAkJZHJlbGUobmV3ZGlyZHApOwogCX0KQEAgLTk3Miw5ICs5NzIsOSBAQCBzeXNf
dW5saW5rKGNoYXIgKnBhdGgpCiAKIAlEUFJJTlRGKFZGU0RCX1NZU0NBTEwsICgic3lzX3VubGlu
azogcGF0aD0lc1xuIiwgcGF0aCkpOwogCi0JZGRwICAgPSBudWxscHRyOwotCWRwICAgID0gbnVs
bHB0cjsKLQl2cCAgICA9IG51bGxwdHI7CisJZGRwICAgPSBOVUxMOworCWRwICAgID0gTlVMTDsK
Kwl2cCAgICA9IE5VTEw7CiAKIAllcnJvciA9IGxvb2t1cChwYXRoLCAmZGRwLCAmbmFtZSk7CiAJ
aWYgKGVycm9yICE9IDApIHsKQEAgLTEwMTMsMTUgKzEwMTMsMTUgQEAgc3lzX3VubGluayhjaGFy
ICpwYXRoKQogCWRyZWxlKGRwKTsKIAlyZXR1cm4gZXJyb3I7CiAgb3V0OgotCWlmICh2cCAhPSBu
dWxscHRyKSB7CisJaWYgKHZwICE9IE5VTEwpIHsKIAkJdm5fdW5sb2NrKHZwKTsKIAl9CiAKLQlp
ZiAoZHAgIT0gbnVsbHB0cikgeworCWlmIChkcCAhPSBOVUxMKSB7CiAJCWRyZWxlKGRwKTsKIAl9
CiAKLQlpZiAoZGRwICE9IG51bGxwdHIpIHsKKwlpZiAoZGRwICE9IE5VTEwpIHsKIAkJZHJlbGUo
ZGRwKTsKIAl9CiAJcmV0dXJuIGVycm9yOwpAQCAtMTExNSw3ICsxMTE1LDcgQEAgc3lzX3N0YXRm
cyhjaGFyICpwYXRoLCBzdHJ1Y3Qgc3RhdGZzICpidWYpCiB9CiAKIGludAotc3lzX2ZzdGF0ZnMo
c3RydWN0IGZpbGUgKmZwLCBzdHJ1Y3Qgc3RhdGZzICpidWYpCitzeXNfZnN0YXRmcyhzdHJ1Y3Qg
dmZzY29yZV9maWxlICpmcCwgc3RydWN0IHN0YXRmcyAqYnVmKQogewogCXN0cnVjdCB2bm9kZSAq
dnA7CiAJaW50IGVycm9yID0gMDsKQEAgLTExNTIsNyArMTE1Miw3IEBAIHN5c190cnVuY2F0ZShj
aGFyICpwYXRoLCBvZmZfdCBsZW5ndGgpCiB9CiAKIGludAotc3lzX2Z0cnVuY2F0ZShzdHJ1Y3Qg
ZmlsZSAqZnAsIG9mZl90IGxlbmd0aCkKK3N5c19mdHJ1bmNhdGUoc3RydWN0IHZmc2NvcmVfZmls
ZSAqZnAsIG9mZl90IGxlbmd0aCkKIHsKIAlzdHJ1Y3Qgdm5vZGUgKnZwOwogCWludCBlcnJvcjsK
QEAgLTExNjksNyArMTE2OSw3IEBAIHN5c19mdHJ1bmNhdGUoc3RydWN0IGZpbGUgKmZwLCBvZmZf
dCBsZW5ndGgpCiB9CiAKIGludAotc3lzX2ZjaGRpcihzdHJ1Y3QgZmlsZSAqZnAsIGNoYXIgKmN3
ZCkKK3N5c19mY2hkaXIoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAsIGNoYXIgKmN3ZCkKIHsKIAlz
dHJ1Y3Qgdm5vZGUgKmR2cDsKIApAQCAtMTI0NCw3ICsxMjQ0LDcgQEAgc3lzX3JlYWRsaW5rKGNo
YXIgKnBhdGgsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnNpemUsIHNzaXplX3QgKnNpemUpCiAvKgog
ICogQ2hlY2sgdGhlIHZhbGlkaXR5IG9mIHRoZSBtZW1iZXJzIG9mIGEgc3RydWN0IHRpbWV2YWwu
CiAgKi8KLXN0YXRpYyBib29sIGlzX3RpbWV2YWxfdmFsaWQoY29uc3Qgc3RydWN0IHRpbWV2YWwg
KnRpbWUpCitzdGF0aWMgaW50IGlzX3RpbWV2YWxfdmFsaWQoY29uc3Qgc3RydWN0IHRpbWV2YWwg
KnRpbWUpCiB7CiAJcmV0dXJuICh0aW1lLT50dl9zZWMgPj0gMCkgJiYKIAkJICAgKHRpbWUtPnR2
X3VzZWMgPj0gMCAmJiB0aW1lLT50dl91c2VjIDwgMTAwMDAwMCk7CkBAIC0xMjc2LDE4ICsxMjc2
LDE4IEBAIHN5c191dGltZXMoY2hhciAqcGF0aCwgY29uc3Qgc3RydWN0IHRpbWV2YWwgdGltZXNb
Ml0sIGludCBmbGFncykKIAkJcmV0dXJuIEVJTlZBTDsKIAogCS8vIENvbnZlcnQgZWFjaCBlbGVt
ZW50IG9mIHRpbWV2YWwgYXJyYXkgdG8gdGhlIHRpbWVzcGVjIHR5cGUKLQljb252ZXJ0X3RpbWV2
YWwodGltZXNwZWNfdGltZXNbMF0sIHRpbWVzID8gdGltZXMgKyAwIDogbnVsbHB0cik7Ci0JY29u
dmVydF90aW1ldmFsKHRpbWVzcGVjX3RpbWVzWzFdLCB0aW1lcyA/IHRpbWVzICsgMSA6IG51bGxw
dHIpOworCWNvbnZlcnRfdGltZXZhbCh0aW1lc3BlY190aW1lc1swXSwgdGltZXMgPyB0aW1lcyAr
IDAgOiBOVUxMKTsKKwljb252ZXJ0X3RpbWV2YWwodGltZXNwZWNfdGltZXNbMV0sIHRpbWVzID8g
dGltZXMgKyAxIDogTlVMTCk7CiAKIAlpZiAoZmxhZ3MgJiBBVF9TWU1MSU5LX05PRk9MTE9XKSB7
CiAJCXN0cnVjdCBkZW50cnkgKmRkcDsKLQkJZXJyb3IgPSBsb29rdXAocGF0aCwgJmRkcCwgbnVs
bHB0cik7CisJCWVycm9yID0gbG9va3VwKHBhdGgsICZkZHAsIE5VTEwpOwogCQlpZiAoZXJyb3Ip
IHsKIAkJCXJldHVybiBlcnJvcjsKIAkJfQogCiAJCWVycm9yID0gbmFtZWlfbGFzdF9ub2ZvbGxv
dyhwYXRoLCBkZHAsICZkcCk7Ci0JCWlmIChkZHAgIT0gbnVsbHB0cikgeworCQlpZiAoZGRwICE9
IE5VTEwpIHsKIAkJCWRyZWxlKGRkcCk7CiAJCX0KIAkJaWYgKGVycm9yKSB7CkBAIC0xMzEyLDcg
KzEzMTIsNyBAQCBzeXNfdXRpbWVzKGNoYXIgKnBhdGgsIGNvbnN0IHN0cnVjdCB0aW1ldmFsIHRp
bWVzWzJdLCBpbnQgZmxhZ3MpCiAvKgogICogQ2hlY2sgdGhlIHZhbGlkaXR5IG9mIG1lbWJlcnMg
b2YgYSBzdHJ1Y3QgdGltZXNwZWMKICAqLwotc3RhdGljIGJvb2wgaXNfdGltZXNwZWNfdmFsaWQo
Y29uc3Qgc3RydWN0IHRpbWVzcGVjICZ0aW1lKQorc3RhdGljIGludCBpc190aW1lc3BlY192YWxp
ZChjb25zdCBzdHJ1Y3QgdGltZXNwZWMgJnRpbWUpCiB7CiAJcmV0dXJuICh0aW1lLnR2X3NlYyA+
PSAwKSAmJgogCSAgICgodGltZS50dl9uc2VjID49IDAgJiYgdGltZS50dl9uc2VjIDw9IDk5OTk5
OTk5OSkgfHwKQEAgLTEzMjIsNyArMTMyMiw3IEBAIHN0YXRpYyBib29sIGlzX3RpbWVzcGVjX3Zh
bGlkKGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAmdGltZSkKIAogdm9pZCBpbml0X3RpbWVzcGVjKHN0
cnVjdCB0aW1lc3BlYyAmX3RpbWVzLCBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKnRpbWVzKQogewot
CWlmICh0aW1lcyA9PSBudWxscHRyIHx8IHRpbWVzLT50dl9uc2VjID09IFVUSU1FX05PVykgewor
CWlmICh0aW1lcyA9PSBOVUxMIHx8IHRpbWVzLT50dl9uc2VjID09IFVUSU1FX05PVykgewogCQlj
bG9ja19nZXR0aW1lKENMT0NLX1JFQUxUSU1FLCAmX3RpbWVzKTsKIAl9IGVsc2UgewogCQlfdGlt
ZXMudHZfc2VjID0gdGltZXMtPnR2X3NlYzsKQEAgLTEzNTAsOCArMTM1MCw4IEBAIHN5c191dGlt
ZW5zYXQoaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwgY29uc3Qgc3RydWN0IHRpbWVz
cGVjIHRpbWVzWzJdLCBpCiAJaWYgKHRpbWVzICYmICghaXNfdGltZXNwZWNfdmFsaWQodGltZXNb
MF0pIHx8ICFpc190aW1lc3BlY192YWxpZCh0aW1lc1sxXSkpKQogCQlyZXR1cm4gRUlOVkFMOwog
Ci0JaW5pdF90aW1lc3BlYyh0aW1lc3BlY190aW1lc1swXSwgdGltZXMgPyB0aW1lcyArIDAgOiBu
dWxscHRyKTsKLQlpbml0X3RpbWVzcGVjKHRpbWVzcGVjX3RpbWVzWzFdLCB0aW1lcyA/IHRpbWVz
ICsgMSA6IG51bGxwdHIpOworCWluaXRfdGltZXNwZWModGltZXNwZWNfdGltZXNbMF0sIHRpbWVz
ID8gdGltZXMgKyAwIDogTlVMTCk7CisJaW5pdF90aW1lc3BlYyh0aW1lc3BlY190aW1lc1sxXSwg
dGltZXMgPyB0aW1lcyArIDEgOiBOVUxMKTsKIAogCWlmIChwYXRobmFtZSAmJiBwYXRobmFtZVsw
XSA9PSAnLycpIHsKIAlhcCA9IHBhdGhuYW1lOwpAQCAtMTM2MCw3ICsxMzYwLDcgQEAgc3lzX3V0
aW1lbnNhdChpbnQgZGlyZmQsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBjb25zdCBzdHJ1Y3QgdGlt
ZXNwZWMgdGltZXNbMl0sIGkKIAkgICAgcmV0dXJuIEVGQVVMVDsKIAlhcCA9IHN0ZDo6c3RyaW5n
KG1haW5fdGFzay0+dF9jd2QpICsgIi8iICsgcGF0aG5hbWU7CiAJfSBlbHNlIHsKLQkJc3RydWN0
IGZpbGUgKmZwOworCQlzdHJ1Y3QgdmZzY29yZV9maWxlICpmcDsKIAkJZmlsZXJlZiBmKGZpbGVy
ZWZfZnJvbV9mZChkaXJmZCkpOwogCiAJCWlmICghZikKQEAgLTE0MTAsNyArMTQxMCw3IEBAIHN5
c191dGltZW5zYXQoaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwgY29uc3Qgc3RydWN0
IHRpbWVzcGVjIHRpbWVzWzJdLCBpCiBpbnQKIHN5c19mdXRpbWVucyhpbnQgZmQsIGNvbnN0IHN0
cnVjdCB0aW1lc3BlYyB0aW1lc1syXSkKIHsKLQlzdHJ1Y3QgZmlsZSAqZnA7CisJc3RydWN0IHZm
c2NvcmVfZmlsZSAqZnA7CiAKIAlmaWxlcmVmIGYoZmlsZXJlZl9mcm9tX2ZkKGZkKSk7CiAJaWYg
KCFmKQpAQCAtMTQyOCw3ICsxNDI4LDcgQEAgc3lzX2Z1dGltZW5zKGludCBmZCwgY29uc3Qgc3Ry
dWN0IHRpbWVzcGVjIHRpbWVzWzJdKQogI2VuZGlmCiAKIGludAotc3lzX2ZhbGxvY2F0ZShzdHJ1
Y3QgZmlsZSAqZnAsIGludCBtb2RlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuKQorc3lzX2Zh
bGxvY2F0ZShzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCwgaW50IG1vZGUsIG9mZl90IG9mZnNldCwg
b2ZmX3QgbGVuKQogewogCWludCBlcnJvcjsKIAlzdHJ1Y3Qgdm5vZGUgKnZwOwpAQCAtMTQ5Myw3
ICsxNDkzLDcgQEAgc3lzX2NobW9kKGNvbnN0IGNoYXIgKnBhdGgsIG1vZGVfdCBtb2RlKQogaW50
CiBzeXNfZmNobW9kKGludCBmZCwgbW9kZV90IG1vZGUpCiB7Ci0JZmlsZXJlZiBmKGZpbGVyZWZf
ZnJvbV9mZChmZCkpOworCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmYgPSB2ZnNjb3JlX2dldF9maWxl
KGZkKTsKIAlpZiAoIWYpCiAJCXJldHVybiBFQkFERjsKIAkvLyBQb3NpeCBpcyBhbWJpdmFsZW50
IG9uIHdoYXQgZmNobW9kKCkgc2hvdWxkIGRvIG9uIGFuIGZkIHRoYXQgZG9lcyBub3QKZGlmZiAt
LWdpdCBhL2xpYi92ZnNjb3JlL3Zmcy5oIGIvbGliL3Zmc2NvcmUvdmZzLmgKaW5kZXggMjUzMWY3
MzAuLjE5ZjhhYzg3IDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS92ZnMuaAorKysgYi9saWIvdmZz
Y29yZS92ZnMuaApAQCAtNTcsNyArNTcsNyBAQCBleHRlcm4gaW50IHZmc19kZWJ1ZzsKIAogI2Rl
ZmluZSBWRlNEQl9GTEFHUwkweDAwMDAwMDEzCiAKLSNkZWZpbmUJRFBSSU5URihfbSxYKQlpZiAo
dmZzX2RlYnVnICYgKF9tKSkga3ByaW50ZiBYCisjZGVmaW5lCURQUklOVEYoX20sWCkJaWYgKHZm
c19kZWJ1ZyAmIChfbSkpIHVrX3ByX2RlYnVnIFgKICNlbHNlCiAjZGVmaW5lCURQUklOVEYoX20s
IFgpCiAjZW5kaWYKQEAgLTcxLDI4ICs3MSwyNiBAQCBleHRlcm4gaW50IHZmc19kZWJ1ZzsKICAq
Lwogc3RydWN0IHRhc2sgewogCWNoYXIgCSAgICB0X2N3ZFtQQVRIX01BWF07CS8qIGN1cnJlbnQg
d29ya2luZyBkaXJlY3RvcnkgKi8KLQlzdHJ1Y3QgZmlsZSAqdF9jd2RmcDsJCS8qIGRpcmVjdG9y
eSBmb3IgY3dkICovCisJc3RydWN0IHZmc2NvcmVfZmlsZSAqdF9jd2RmcDsJCS8qIGRpcmVjdG9y
eSBmb3IgY3dkICovCiB9OwogCi1leHRlcm4gY29uc3Qgc3RydWN0IHZmc3N3IHZmc3N3W107Ci0K
LWludAkgc3lzX29wZW4oY2hhciAqcGF0aCwgaW50IGZsYWdzLCBtb2RlX3QgbW9kZSwgc3RydWN0
IGZpbGUgKipmcCk7Ci1pbnQJIHN5c19yZWFkKHN0cnVjdCBmaWxlICpmcCwgY29uc3Qgc3RydWN0
IGlvdmVjICppb3YsIHNpemVfdCBuaW92LAoraW50CSBzeXNfb3BlbihjaGFyICpwYXRoLCBpbnQg
ZmxhZ3MsIG1vZGVfdCBtb2RlLCBzdHJ1Y3QgdmZzY29yZV9maWxlICoqZnApOworaW50CSBzeXNf
cmVhZChzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCwgY29uc3Qgc3RydWN0IGlvdmVjICppb3YsIHNp
emVfdCBuaW92LAogCQlvZmZfdCBvZmZzZXQsIHNpemVfdCAqY291bnQpOwotaW50CSBzeXNfd3Jp
dGUoc3RydWN0IGZpbGUgKmZwLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlvdiwgc2l6ZV90IG5pb3Ys
CitpbnQJIHN5c193cml0ZShzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCwgY29uc3Qgc3RydWN0IGlv
dmVjICppb3YsIHNpemVfdCBuaW92LAogCQlvZmZfdCBvZmZzZXQsIHNpemVfdCAqY291bnQpOwot
aW50CSBzeXNfbHNlZWsoc3RydWN0IGZpbGUgKmZwLCBvZmZfdCBvZmYsIGludCB0eXBlLCBvZmZf
dCAqIGN1cl9vZmYpOwotaW50CSBzeXNfaW9jdGwoc3RydWN0IGZpbGUgKmZwLCB1X2xvbmcgcmVx
dWVzdCwgdm9pZCAqYnVmKTsKLWludAkgc3lzX2ZzdGF0KHN0cnVjdCBmaWxlICpmcCwgc3RydWN0
IHN0YXQgKnN0KTsKLWludAkgc3lzX2ZzdGF0ZnMoc3RydWN0IGZpbGUgKmZwLCBzdHJ1Y3Qgc3Rh
dGZzICpidWYpOwotaW50CSBzeXNfZnN5bmMoc3RydWN0IGZpbGUgKmZwKTsKLWludAkgc3lzX2Z0
cnVuY2F0ZShzdHJ1Y3QgZmlsZSAqZnAsIG9mZl90IGxlbmd0aCk7Ci0KLWludAkgc3lzX3JlYWRk
aXIoc3RydWN0IGZpbGUgKmZwLCBzdHJ1Y3QgZGlyZW50ICpkaXJlbnQpOwotaW50CSBzeXNfcmV3
aW5kZGlyKHN0cnVjdCBmaWxlICpmcCk7Ci1pbnQJIHN5c19zZWVrZGlyKHN0cnVjdCBmaWxlICpm
cCwgbG9uZyBsb2MpOwotaW50CSBzeXNfdGVsbGRpcihzdHJ1Y3QgZmlsZSAqZnAsIGxvbmcgKmxv
Yyk7Ci1pbnQJIHN5c19mY2hkaXIoc3RydWN0IGZpbGUgKmZwLCBjaGFyICpwYXRoKTsKK2ludAkg
c3lzX2xzZWVrKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwLCBvZmZfdCBvZmYsIGludCB0eXBlLCBv
ZmZfdCAqIGN1cl9vZmYpOworaW50CSBzeXNfaW9jdGwoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAs
IHVuc2lnbmVkIGxvbmcgcmVxdWVzdCwgdm9pZCAqYnVmKTsKK2ludAkgc3lzX2ZzdGF0KHN0cnVj
dCB2ZnNjb3JlX2ZpbGUgKmZwLCBzdHJ1Y3Qgc3RhdCAqc3QpOworaW50CSBzeXNfZnN0YXRmcyhz
dHJ1Y3QgdmZzY29yZV9maWxlICpmcCwgc3RydWN0IHN0YXRmcyAqYnVmKTsKK2ludAkgc3lzX2Zz
eW5jKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwKTsKK2ludAkgc3lzX2Z0cnVuY2F0ZShzdHJ1Y3Qg
dmZzY29yZV9maWxlICpmcCwgb2ZmX3QgbGVuZ3RoKTsKKworaW50CSBzeXNfcmVhZGRpcihzdHJ1
Y3QgdmZzY29yZV9maWxlICpmcCwgc3RydWN0IGRpcmVudCAqZGlyZW50KTsKK2ludAkgc3lzX3Jl
d2luZGRpcihzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCk7CitpbnQJIHN5c19zZWVrZGlyKHN0cnVj
dCB2ZnNjb3JlX2ZpbGUgKmZwLCBsb25nIGxvYyk7CitpbnQJIHN5c190ZWxsZGlyKHN0cnVjdCB2
ZnNjb3JlX2ZpbGUgKmZwLCBsb25nICpsb2MpOworaW50CSBzeXNfZmNoZGlyKHN0cnVjdCB2ZnNj
b3JlX2ZpbGUgKmZwLCBjaGFyICpwYXRoKTsKIAogaW50CSBzeXNfbWtkaXIoY2hhciAqcGF0aCwg
bW9kZV90IG1vZGUpOwogaW50CSBzeXNfcm1kaXIoY2hhciAqcGF0aCk7CkBAIC0xMTEsNyArMTA5
LDcgQEAgaW50ICBzeXNfdXRpbWVzKGNoYXIgKnBhdGgsIGNvbnN0IHN0cnVjdCB0aW1ldmFsIHRp
bWVzWzJdLCBpbnQgZmxhZ3MpOwogaW50ICBzeXNfdXRpbWVuc2F0KGludCBkaXJmZCwgY29uc3Qg
Y2hhciAqcGF0aG5hbWUsCiAJCQkJICAgY29uc3Qgc3RydWN0IHRpbWVzcGVjIHRpbWVzWzJdLCBp
bnQgZmxhZ3MpOwogaW50ICBzeXNfZnV0aW1lbnMoaW50IGZkLCBjb25zdCBzdHJ1Y3QgdGltZXNw
ZWMgdGltZXNbMl0pOwotaW50ICBzeXNfZmFsbG9jYXRlKHN0cnVjdCBmaWxlICpmcCwgaW50IG1v
ZGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4pOworaW50ICBzeXNfZmFsbG9jYXRlKHN0cnVj
dCB2ZnNjb3JlX2ZpbGUgKmZwLCBpbnQgbW9kZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbik7
CiAKIGludAkgc3lzX21vdW50KGNvbnN0IGNoYXIgKmRldiwgY29uc3QgY2hhciAqZGlyLCBjb25z
dCBjaGFyICpmc25hbWUsIGludCBmbGFncywgY29uc3Qgdm9pZCAqZGF0YSk7CiBpbnQJIHN5c191
bW91bnQyKGNvbnN0IGNoYXIgKnBhdGgsIGludCBmbGFncyk7CmRpZmYgLS1naXQgYS9saWIvdmZz
Y29yZS92bm9kZS5jIGIvbGliL3Zmc2NvcmUvdm5vZGUuYwppbmRleCA4MWY3OGJlOC4uYTJmNDU1
OTYgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL3Zub2RlLmMKKysrIGIvbGliL3Zmc2NvcmUvdm5v
ZGUuYwpAQCAtNzcsMjQgKzc3LDI3IEBAIGludCB2dHRvaWZfdGFiWzEwXSA9IHsKICAqIEFsbCBh
Y3RpdmUgKG9wZW5lZCkgdm5vZGVzIGFyZSBzdG9yZWQgb24gdGhpcyBoYXNoIHRhYmxlLgogICog
VGhleSBjYW4gYmUgYWNjZXNzZWQgYnkgaXRzIHBhdGggbmFtZS4KICAqLwotc3RhdGljIExJU1Rf
SEVBRCh2bm9kZV9oYXNoX2hlYWQsIHZub2RlKSB2bm9kZV90YWJsZVtWTk9ERV9CVUNLRVRTXTsK
K3N0YXRpYyBzdHJ1Y3QgdWtfbGlzdF9oZWFkIHZub2RlX3RhYmxlW1ZOT0RFX0JVQ0tFVFNdOwog
CiAvKgogICogR2xvYmFsIGxvY2sgdG8gYWNjZXNzIGFsbCB2bm9kZXMgYW5kIHZub2RlIHRhYmxl
LgogICogSWYgYSB2bm9kZSBpcyBhbHJlYWR5IGxvY2tlZCwgdGhlcmUgaXMgbm8gbmVlZCB0bwog
ICogbG9jayB0aGlzIGdsb2JhbCBsb2NrIHRvIGFjY2VzcyBpbnRlcm5hbCBkYXRhLgogICovCi1z
dGF0aWMgbXV0ZXhfdCB2bm9kZV9sb2NrID0gTVVURVhfSU5JVElBTElaRVI7Ci0jZGVmaW5lIFZO
T0RFX0xPQ0soKQltdXRleF9sb2NrKCZ2bm9kZV9sb2NrKQotI2RlZmluZSBWTk9ERV9VTkxPQ0so
KQltdXRleF91bmxvY2soJnZub2RlX2xvY2spCi0jZGVmaW5lIFZOT0RFX09XTkVEKCkJbXV0ZXhf
b3duZWQoJnZub2RlX2xvY2spCitzdGF0aWMgc3RydWN0IHVrX211dGV4IHZub2RlX2xvY2sgPSBV
S19NVVRFWF9JTklUSUFMSVpFUih2bm9kZV9sb2NrKTsKKyNkZWZpbmUgVk5PREVfTE9DSygpCXVr
X211dGV4X2xvY2soJnZub2RlX2xvY2spCisjZGVmaW5lIFZOT0RFX1VOTE9DSygpCXVrX211dGV4
X3VubG9jaygmdm5vZGVfbG9jaykKKworLyogVE9ETzogaW1wbGVtZW50IG11dGV4X293bmVkICov
CisjZGVmaW5lIFZOT0RFX09XTkVEKCkJKDEpCisvKiAjZGVmaW5lIFZOT0RFX09XTkVEKCkJbXV0
ZXhfb3duZWQoJnZub2RlX2xvY2spICovCisKIAogLyoKICAqIEdldCB0aGUgaGFzaCB2YWx1ZSBm
cm9tIHRoZSBtb3VudCBwb2ludCBhbmQgcGF0aCBuYW1lLgogICogWFhYKGhjaCk6IHJlcGxhY2Ug
d2l0aCBhIGJldHRlciBoYXNoIGZvciA2NC1iaXQgcG9pbnRlcnMuCiAgKi8KLXN0YXRpYyB1X2lu
dAotdm5faGFzaChzdHJ1Y3QgbW91bnQgKm1wLCB1aW50NjRfdCBpbm8pCitzdGF0aWMgdW5zaWdu
ZWQgaW50IHZuX2hhc2goc3RydWN0IG1vdW50ICptcCwgdWludDY0X3QgaW5vKQogewogCXJldHVy
biAoaW5vIF4gKHVuc2lnbmVkIGxvbmcpbXApICYgKFZOT0RFX0JVQ0tFVFMgLSAxKTsKIH0KQEAg
LTExMCwxNiArMTEzLDE1IEBAIHZuX2xvb2t1cChzdHJ1Y3QgbW91bnQgKm1wLCB1aW50NjRfdCBp
bm8pCiB7CiAJc3RydWN0IHZub2RlICp2cDsKIAotCWFzc2VydChWTk9ERV9PV05FRCgpKTsKLQlM
SVNUX0ZPUkVBQ0godnAsICZ2bm9kZV90YWJsZVt2bl9oYXNoKG1wLCBpbm8pXSwgdl9saW5rKSB7
CisJVUtfQVNTRVJUKFZOT0RFX09XTkVEKCkpOworCXVrX2xpc3RfZm9yX2VhY2hfZW50cnkodnAs
ICZ2bm9kZV90YWJsZVt2bl9oYXNoKG1wLCBpbm8pXSwgdl9saW5rKSB7CiAJCWlmICh2cC0+dl9t
b3VudCA9PSBtcCAmJiB2cC0+dl9pbm8gPT0gaW5vKSB7CiAJCQl2cC0+dl9yZWZjbnQrKzsKLQkJ
CW11dGV4X2xvY2soJnZwLT52X2xvY2spOwotCQkJdnAtPnZfbnJsb2NrcysrOworCQkJdWtfbXV0
ZXhfbG9jaygmdnAtPnZfbG9jayk7CiAJCQlyZXR1cm4gdnA7CiAJCX0KIAl9Ci0JcmV0dXJuIG51
bGxwdHI7CQkvKiBub3QgZm91bmQgKi8KKwlyZXR1cm4gTlVMTDsJCS8qIG5vdCBmb3VuZCAqLwog
fQogCiAjaWZkZWYgREVCVUdfVkZTCkBAIC0xMjgsMTAgKzEzMCwxMCBAQCB2bl9wYXRoKHN0cnVj
dCB2bm9kZSAqdnApCiB7CiAJc3RydWN0IGRlbnRyeSAqZHA7CiAKLQlpZiAoTElTVF9FTVBUWSgm
dnAtPnZfbmFtZXMpID09IDEpIHsKKwlpZiAodWtfbGlzdF9lbXB0eSgmdnAtPnZfbmFtZXMpID09
IDEpIHsKIAkJcmV0dXJuICgiICIpOwogCX0KLQlkcCA9IExJU1RfRklSU1QoJnZwLT52X25hbWVz
KTsKKwlkcCA9IHVrX2xpc3RfZmlyc3RfZW50cnkoJnZwLT52X25hbWVzLCBzdHJ1Y3QgZGVudHJ5
LCBkX25hbWVzX2xpbmspOwogCXJldHVybiAoZHAtPmRfcGF0aCk7CiB9CiAjZW5kaWYKQEAgLTE0
MiwxMSArMTQ0LDEwIEBAIHZuX3BhdGgoc3RydWN0IHZub2RlICp2cCkKIHZvaWQKIHZuX2xvY2so
c3RydWN0IHZub2RlICp2cCkKIHsKLQlBU1NFUlQodnApOwotCUFTU0VSVCh2cC0+dl9yZWZjbnQg
PiAwKTsKKwlVS19BU1NFUlQodnApOworCVVLX0FTU0VSVCh2cC0+dl9yZWZjbnQgPiAwKTsKIAot
CW11dGV4X2xvY2soJnZwLT52X2xvY2spOwotCXZwLT52X25ybG9ja3MrKzsKKwl1a19tdXRleF9s
b2NrKCZ2cC0+dl9sb2NrKTsKIAlEUFJJTlRGKFZGU0RCX1ZOT0RFLCAoInZuX2xvY2s6ICAgJXNc
biIsIHZuX3BhdGgodnApKSk7CiB9CiAKQEAgLTE1NiwxMiArMTU3LDEwIEBAIHZuX2xvY2soc3Ry
dWN0IHZub2RlICp2cCkKIHZvaWQKIHZuX3VubG9jayhzdHJ1Y3Qgdm5vZGUgKnZwKQogewotCUFT
U0VSVCh2cCk7Ci0JQVNTRVJUKHZwLT52X3JlZmNudCA+IDApOwotCUFTU0VSVCh2cC0+dl9ucmxv
Y2tzID4gMCk7CisJVUtfQVNTRVJUKHZwKTsKKwlVS19BU1NFUlQodnAtPnZfcmVmY250ID49IDAp
OwogCi0JdnAtPnZfbnJsb2Nrcy0tOwotCW11dGV4X3VubG9jaygmdnAtPnZfbG9jayk7CisJdWtf
bXV0ZXhfdW5sb2NrKCZ2cC0+dl9sb2NrKTsKIAlEUFJJTlRGKFZGU0RCX1ZOT0RFLCAoInZuX2xv
Y2s6ICAgJXNcbiIsIHZuX3BhdGgodnApKSk7CiB9CiAKQEAgLTE3Niw3ICsxNzUsNyBAQCB2Z2V0
KHN0cnVjdCBtb3VudCAqbXAsIHVpbnQ2NF90IGlubywgc3RydWN0IHZub2RlICoqdnBwKQogCXN0
cnVjdCB2bm9kZSAqdnA7CiAJaW50IGVycm9yOwogCi0JKnZwcCA9IG51bGxwdHI7CisJKnZwcCA9
IE5VTEw7CiAKIAlEUFJJTlRGKFZGU0RCX1ZOT0RFLCAoInZnZXQgJUxMdVxuIiwgaW5vKSk7CiAK
QEAgLTE5NSwyNiArMTk0LDI0IEBAIHZnZXQoc3RydWN0IG1vdW50ICptcCwgdWludDY0X3QgaW5v
LCBzdHJ1Y3Qgdm5vZGUgKip2cHApCiAJCXJldHVybiAwOwogCX0KIAotCUxJU1RfSU5JVCgmdnAt
PnZfbmFtZXMpOworCVVLX0lOSVRfTElTVF9IRUFEKCZ2cC0+dl9uYW1lcyk7CiAJdnAtPnZfaW5v
ID0gaW5vOwogCXZwLT52X21vdW50ID0gbXA7CiAJdnAtPnZfcmVmY250ID0gMTsKIAl2cC0+dl9v
cCA9IG1wLT5tX29wLT52ZnNfdm5vcHM7Ci0JdnAtPnZfbnJsb2NrcyA9IDA7Ci0KKwl1a19tdXRl
eF9pbml0KCZ2cC0+dl9sb2NrKTsKIAkvKgogCSAqIFJlcXVlc3QgdG8gYWxsb2NhdGUgZnMgc3Bl
Y2lmaWMgZGF0YSBmb3Igdm5vZGUuCiAJICovCiAJaWYgKChlcnJvciA9IFZGU19WR0VUKG1wLCB2
cCkpICE9IDApIHsKIAkJVk5PREVfVU5MT0NLKCk7Ci0JCWRlbGV0ZSB2cDsKKwkJZnJlZSh2cCk7
CiAJCXJldHVybiBlcnJvcjsKIAl9CiAJdmZzX2J1c3kodnAtPnZfbW91bnQpOwotCW11dGV4X2xv
Y2soJnZwLT52X2xvY2spOwotCXZwLT52X25ybG9ja3MrKzsKKwl1a19tdXRleF9sb2NrKCZ2cC0+
dl9sb2NrKTsKIAotCUxJU1RfSU5TRVJUX0hFQUQoJnZub2RlX3RhYmxlW3ZuX2hhc2gobXAsIGlu
byldLCB2cCwgdl9saW5rKTsKKwl1a19saXN0X2FkZCgmdnAtPnZfbGluaywgJnZub2RlX3RhYmxl
W3ZuX2hhc2gobXAsIGlubyldKTsKIAlWTk9ERV9VTkxPQ0soKTsKIAogCSp2cHAgPSB2cDsKQEAg
LTIyOCw5ICsyMjUsOCBAQCB2Z2V0KHN0cnVjdCBtb3VudCAqbXAsIHVpbnQ2NF90IGlubywgc3Ry
dWN0IHZub2RlICoqdnBwKQogdm9pZAogdnB1dChzdHJ1Y3Qgdm5vZGUgKnZwKQogewotCUFTU0VS
VCh2cCk7Ci0JQVNTRVJUKHZwLT52X25ybG9ja3MgPiAwKTsKLQlBU1NFUlQodnAtPnZfcmVmY250
ID4gMCk7CisJVUtfQVNTRVJUKHZwKTsKKwlVS19BU1NFUlQodnAtPnZfcmVmY250ID4gMCk7CiAJ
RFBSSU5URihWRlNEQl9WTk9ERSwgKCJ2cHV0OiByZWY9JWQgJXNcbiIsIHZwLT52X3JlZmNudCwg
dm5fcGF0aCh2cCkpKTsKIAogCVZOT0RFX0xPQ0soKTsKQEAgLTI0MCw3ICsyMzYsNyBAQCB2cHV0
KHN0cnVjdCB2bm9kZSAqdnApCiAJCXZuX3VubG9jayh2cCk7CiAJCXJldHVybjsKIAl9Ci0JTElT
VF9SRU1PVkUodnAsIHZfbGluayk7CisJdWtfbGlzdF9kZWwoJnZwLT52X2xpbmspOwogCVZOT0RF
X1VOTE9DSygpOwogCiAJLyoKQEAgLTI0OSwxMCArMjQ1LDggQEAgdnB1dChzdHJ1Y3Qgdm5vZGUg
KnZwKQogCWlmICh2cC0+dl9vcC0+dm9wX2luYWN0aXZlKQogCQlWT1BfSU5BQ1RJVkUodnApOwog
CXZmc191bmJ1c3kodnAtPnZfbW91bnQpOwotCXZwLT52X25ybG9ja3MtLTsKLQlBU1NFUlQodnAt
PnZfbnJsb2NrcyA9PSAwKTsKLQltdXRleF91bmxvY2soJnZwLT52X2xvY2spOwotCWRlbGV0ZSB2
cDsKKwl1a19tdXRleF91bmxvY2soJnZwLT52X2xvY2spOworCWZyZWUodnApOwogfQogCiAvKgpA
QCAtMjYxLDggKzI1NSw4IEBAIHZwdXQoc3RydWN0IHZub2RlICp2cCkKIHZvaWQKIHZyZWYoc3Ry
dWN0IHZub2RlICp2cCkKIHsKLQlBU1NFUlQodnApOwotCUFTU0VSVCh2cC0+dl9yZWZjbnQgPiAw
KTsJLyogTmVlZCB2Z2V0ICovCisJVUtfQVNTRVJUKHZwKTsKKwlVS19BU1NFUlQodnAtPnZfcmVm
Y250ID4gMCk7CS8qIE5lZWQgdmZzY29yZV92Z2V0ICovCiAKIAlWTk9ERV9MT0NLKCk7CiAJRFBS
SU5URihWRlNEQl9WTk9ERSwgKCJ2cmVmOiByZWY9JWRcbiIsIHZwLT52X3JlZmNudCkpOwpAQCAt
Mjc5LDggKzI3Myw4IEBAIHZyZWYoc3RydWN0IHZub2RlICp2cCkKIHZvaWQKIHZyZWxlKHN0cnVj
dCB2bm9kZSAqdnApCiB7Ci0JQVNTRVJUKHZwKTsKLQlBU1NFUlQodnAtPnZfcmVmY250ID4gMCk7
CisJVUtfQVNTRVJUKHZwKTsKKwlVS19BU1NFUlQodnAtPnZfcmVmY250ID4gMCk7CiAKIAlWTk9E
RV9MT0NLKCk7CiAJRFBSSU5URihWRlNEQl9WTk9ERSwgKCJ2cmVsZTogcmVmPSVkXG4iLCB2cC0+
dl9yZWZjbnQpKTsKQEAgLTI4OSw3ICsyODMsNyBAQCB2cmVsZShzdHJ1Y3Qgdm5vZGUgKnZwKQog
CQlWTk9ERV9VTkxPQ0soKTsKIAkJcmV0dXJuOwogCX0KLQlMSVNUX1JFTU9WRSh2cCwgdl9saW5r
KTsKKwl1a19saXN0X2RlbCgmdnAtPnZfbGluayk7CiAJVk5PREVfVU5MT0NLKCk7CiAKIAkvKgpA
QCAtMjk3LDcgKzI5MSw3IEBAIHZyZWxlKHN0cnVjdCB2bm9kZSAqdnApCiAJICovCiAJVk9QX0lO
QUNUSVZFKHZwKTsKIAl2ZnNfdW5idXN5KHZwLT52X21vdW50KTsKLQlkZWxldGUgdnA7CisJZnJl
ZSh2cCk7CiB9CiAKIC8qCkBAIC00NTYsMjEgKzQ1MCwyNSBAQCB2bm9kZV9kdW1wKHZvaWQpCiAJ
CQkgICAiVkxOSyAiLCAiVlNPQ0siLCAiVkZJRk8iIH07CiAKIAlWTk9ERV9MT0NLKCk7Ci0Ja3By
aW50ZigiRHVtcCB2bm9kZVxuIik7Ci0Ja3ByaW50ZigiIHZub2RlICAgIG1vdW50ICAgIHR5cGUg
IHJlZmNudCBibGtubyAgICBwYXRoXG4iKTsKLQlrcHJpbnRmKCIgLS0tLS0tLS0gLS0tLS0tLS0g
LS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7
CisKKwl1a19wcl9kZWJ1ZygiRHVtcCB2bm9kZVxuIik7CisJdWtfcHJfZGVidWcoIiB2bm9kZSAg
ICAgICAgICAgIG1vdW50ICAgICAgICAgICAgdHlwZSAgcmVmY250IHBhdGhcbiIpOworCXVrX3By
X2RlYnVnKCIgLS0tLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOwogCiAJZm9yIChpID0gMDsgaSA8IFZO
T0RFX0JVQ0tFVFM7IGkrKykgewotCSAgICAgICAgTElTVF9GT1JFQUNIKHZwLCAmdm5vZGVfdGFi
bGVbaV0sIHZfbGluaykgeworCQl1a19saXN0X2Zvcl9lYWNoX2VudHJ5KHZwLCAmdm5vZGVfdGFi
bGVbaV0sIHZfbGluaykgewogCQkJbXAgPSB2cC0+dl9tb3VudDsKIAotCQkJa3ByaW50ZigiICUw
OHggJTA4eCAlcyAlNmQgJThkICVzJXNcbiIsICh1X2xvbmcpdnAsCi0JCQkJKHVfbG9uZyltcCwg
dHlwZVt2cC0+dl90eXBlXSwgdnAtPnZfcmVmY250LAotCQkJCShzdHJsZW4obXAtPm1fcGF0aCkg
PT0gMSkgPyAiXDAiIDogbXAtPm1fcGF0aCwKLQkJCQl2bl9wYXRoKHZwKSk7CisKKwkJCXVrX3By
X2RlYnVnKCIgJTAxNmx4ICUwMTZseCAlcyAlNmQgJXMlc1xuIiwKKwkJCQkgICAgKHVuc2lnbmVk
IGxvbmcpIHZwLAorCQkJCSAgICAodW5zaWduZWQgbG9uZykgbXAsIHR5cGVbdnAtPnZfdHlwZV0s
CisJCQkJICAgIHZwLT52X3JlZmNudCwKKwkJCQkgICAgKHN0cmxlbihtcC0+bV9wYXRoKSA9PSAx
KSA/ICJcMCIgOiBtcC0+bV9wYXRoLAorCQkJCSAgICB2bl9wYXRoKHZwKSk7CiAJCX0KIAl9Ci0J
a3ByaW50ZigiXG4iKTsKKwl1a19wcl9kZWJ1ZygiXG4iKTsKIAlWTk9ERV9VTkxPQ0soKTsKIH0K
ICNlbmRpZgpAQCAtNTA5LDIwICs1MDcsMjIgQEAgdm5vZGVfaW5pdCh2b2lkKQogCWludCBpOwog
CiAJZm9yIChpID0gMDsgaSA8IFZOT0RFX0JVQ0tFVFM7IGkrKykKLQkJTElTVF9JTklUKCZ2bm9k
ZV90YWJsZVtpXSk7CisJCVVLX0lOSVRfTElTVF9IRUFEKCZ2bm9kZV90YWJsZVtpXSk7CiB9CiAK
IHZvaWQgdm5fYWRkX25hbWUoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IGRlbnRyeSAqZHApCiB7
Ci0Jdm5fbG9jayh2cCk7Ci0JTElTVF9JTlNFUlRfSEVBRCgmdnAtPnZfbmFtZXMsIGRwLCBkX25h
bWVzX2xpbmspOwotCXZuX3VubG9jayh2cCk7CisJLyogVE9ETzogUmUtZW5hYmxlIHRoaXMgY2hl
Y2sgd2hlbiBwcmVlbXB0aW9uIGFuZC9vciBzbXAgaXMKKwkgKiBoZXJlICovCisJLyogVUtfQVNT
RVJUKHVrX211dGV4X2lzX2xvY2tlZCgmdnAtPnZfbG9jaykpOyAqLworCXVrX2xpc3RfYWRkKCZk
cC0+ZF9uYW1lc19saW5rLCAmdnAtPnZfbmFtZXMpOwogfQogCiB2b2lkIHZuX2RlbF9uYW1lKHN0
cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCBkZW50cnkgKmRwKQogewotCXZuX2xvY2sodnApOwotCUxJ
U1RfUkVNT1ZFKGRwLCBkX25hbWVzX2xpbmspOwotCXZuX3VubG9jayh2cCk7CisJLyogVE9ETzog
UmUtZW5hYmxlIHRoaXMgY2hlY2sgd2hlbiBwcmVlbXB0aW9uIGFuZC9vciBzbXAgaXMKKwkgKiBo
ZXJlICovCisJLyogVUtfQVNTRVJUKHVrX211dGV4X2lzX2xvY2tlZCgmdnAtPnZfbG9jaykpOyAq
LworCXVrX2xpc3RfZGVsKCZkcC0+ZF9uYW1lc19saW5rKTsKIH0KIAotLSAKMi4xOS4yCgoKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVs
IG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9s
aXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Feb 18 14:55:30 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 18 Feb 2019 14:55:30 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gvkKQ-0004YM-IW; Mon, 18 Feb 2019 14:55:30 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=odxU=QZ=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gvkKO-0004XZ-F6
 for minios-devel@lists.xen.org; Mon, 18 Feb 2019 14:55:28 +0000
X-Inumbo-ID: 38a8fd7a-338d-11e9-b08c-eb200ad0b4c9
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 38a8fd7a-338d-11e9-b08c-eb200ad0b4c9;
 Mon, 18 Feb 2019 14:55:25 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 5451BF204F;
 Mon, 18 Feb 2019 15:55:24 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id R04eC9J6jcpP; Mon, 18 Feb 2019 15:55:24 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 29CA1F202E
 for <minios-devel@lists.xen.org>; Mon, 18 Feb 2019 15:55:22 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 18 Feb 2019 15:55:21 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Mon, 18 Feb 2019 15:54:28 +0100
Message-ID: <20190218145440.30580-11-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190218145440.30580-1-yuri.volchkov@neclab.eu>
References: <20190218145440.30580-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v4 10/22] lib/vfscore: add utility
 funcs&defs to support imported
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: simon.kuenzer@neclab.eu, sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2ZpbGUuaCAgfCAgMiArKwogbGliL3Zmc2Nv
cmUvaW5jbHVkZS92ZnNjb3JlL2ZzLmggICAgfCAyOCArKysrKysrKysrKysrKysrKysrKysrKysK
IGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5oIHwgMjEgKysrKysrKysrKysrKysr
KysrCiBsaWIvdmZzY29yZS9tYWluLmMgICAgICAgICAgICAgICAgICB8IDMzICsrKysrKysrKysr
KysrKysrKysrKysrKysrKysrCiBsaWIvdmZzY29yZS9tb3VudC5jICAgICAgICAgICAgICAgICB8
IDE0ICsrKysrKysrKysrKwogbGliL3Zmc2NvcmUvdmZzLmggICAgICAgICAgICAgICAgICAgfCAg
OSArKysrKysrKwogbGliL3Zmc2NvcmUvdm5vZGUuYyAgICAgICAgICAgICAgICAgfCAgMiArKwog
NyBmaWxlcyBjaGFuZ2VkLCAxMDkgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxp
Yi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9mcy5oCgpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUv
aW5jbHVkZS92ZnNjb3JlL2ZpbGUuaCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9maWxl
LmgKaW5kZXggOTk4NTcwNmYuLjNkOGQ2NjdmIDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9pbmNs
dWRlL3Zmc2NvcmUvZmlsZS5oCisrKyBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9maWxl
LmgKQEAgLTYxLDYgKzYxLDggQEAgdm9pZCB2ZnNjb3JlX3B1dF9mZChpbnQgZmQpOwogdm9pZCB2
ZnNjb3JlX2luc3RhbGxfZmQoaW50IGZkLCBzdHJ1Y3QgdmZzY29yZV9maWxlICpmaWxlKTsKIHN0
cnVjdCB2ZnNjb3JlX2ZpbGUgKnZmc2NvcmVfZ2V0X2ZpbGUoaW50IGZkKTsKIAorI2RlZmluZSBG
T0ZfT0ZGU0VUICAweDA4MDAgICAgLyogVXNlIHRoZSBvZmZzZXQgaW4gdWlvIGFyZ3VtZW50ICov
CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9saWIvdmZzY29y
ZS9pbmNsdWRlL3Zmc2NvcmUvZnMuaCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9mcy5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi4xYmI0ZTI0ZAotLS0gL2Rldi9u
dWxsCisrKyBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9mcy5oCkBAIC0wLDAgKzEsMjgg
QEAKKyNpZm5kZWYgX1ZGU0NPUkVfRlNfSF8KKyNkZWZpbmUgX1ZGU0NPUkVfRlNfSF8KKworI2lu
Y2x1ZGUgPGZjbnRsLmg+CisvKgorICogS2VybmVsIGVuY29kaW5nIG9mIG9wZW4gbW9kZTsgc2Vw
YXJhdGUgcmVhZCBhbmQgd3JpdGUgYml0cyB0aGF0IGFyZQorICogaW5kZXBlbmRlbnRseSB0ZXN0
YWJsZTogMSBncmVhdGVyIHRoYW4gdGhlIGFib3ZlLgorICovCisjZGVmaW5lIEZSRUFEICAgICAg
ICAgICAweDAwMDAwMDAxCisjZGVmaW5lIEZXUklURSAgICAgICAgICAweDAwMDAwMDAyCisKKyNk
ZWZpbmUgQUxMUEVSTVMgKFNfSVNVSUR8U19JU0dJRHxTX0lTVlRYfFNfSVJXWFV8U19JUldYR3xT
X0lSV1hPKQorCitzdGF0aWMgaW5saW5lIGludCB2ZnNjb3JlX2ZmbGFncyhpbnQgb2ZsYWdzKQor
eworICAgIGludCBydyA9IG9mbGFncyAmIE9fQUNDTU9ERTsKKyAgICBvZmxhZ3MgJj0gfk9fQUND
TU9ERTsKKyAgICByZXR1cm4gKHJ3ICsgMSkgfCBvZmxhZ3M7Cit9CisKK3N0YXRpYyBpbmxpbmUg
aW50IHZmc2NvcmVfb2ZsYWdzKGludCBmZmxhZ3MpCit7CisgICAgaW50IHJ3ID0gZmZsYWdzICYg
KEZSRUFEfEZXUklURSk7CisgICAgZmZsYWdzICY9IH4oRlJFQUR8RldSSVRFKTsKKyAgICByZXR1
cm4gKHJ3IC0gMSkgfCBmZmxhZ3M7Cit9CisKKyNlbmRpZiAvKiBfVkZTQ09SRV9GU19IXyAqLwpk
aWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Zub2RlLmggYi9saWIvdmZz
Y29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUuaAppbmRleCBhNGRiOWMxMy4uNDE1NWE3ZGIgMTAw
NjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5oCisrKyBiL2xpYi92
ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5oCkBAIC0xMDgsNiArMTA4LDI3IEBAIHN0cnVj
dCB2YXR0ciB7CiAJb2ZmX3QJCXZhX3NpemU7CiB9OwogCisvKiBzdHJ1Y3QgdmF0dHIgaXMgdXNl
ZCB0byBjb25zb2xpZGF0ZSBtdWx0aXBsZSB0eXBlcyBvZiBmaWxlCisgKiBhdHRyaWJ1dGVzIGZv
ciBwYXNzaW5nIHRoZW0gYXMgZnVuY3Rpb24gcGFyYW1ldGVycy4gTWFjcm9zIGJlbGxvdworICog
YXJlIHNlbGVjdG9ycywgb2Ygd2hhdCB0eXBlcyBvZiBhdHRyaWJ1dGVzIGFyZSB2YWxpZCBpbiBw
YXJ0aWN1bGFyCisgKiBzdHJ1Y3QgdmF0dHIqLworI2RlZmluZQlBVF9UWVBFCQkweDAwMDAxCisj
ZGVmaW5lCUFUX01PREUJCTB4MDAwMDIKKyNkZWZpbmUJQVRfVUlECQkweDAwMDA0CisjZGVmaW5l
CUFUX0dJRAkJMHgwMDAwOAorI2RlZmluZQlBVF9GU0lECQkweDAwMDEwCisjZGVmaW5lCUFUX05P
REVJRAkweDAwMDIwCisjZGVmaW5lCUFUX05MSU5LCTB4MDAwNDAKKyNkZWZpbmUJQVRfU0laRQkJ
MHgwMDA4MAorI2RlZmluZQlBVF9BVElNRQkweDAwMTAwCisjZGVmaW5lCUFUX01USU1FCTB4MDAy
MDAKKyNkZWZpbmUJQVRfQ1RJTUUJMHgwMDQwMAorI2RlZmluZQlBVF9SREVWCQkweDAwODAwCisj
ZGVmaW5lCUFUX0JMS1NJWkUJMHgwMTAwMAorI2RlZmluZQlBVF9OQkxPQ0tTCTB4MDIwMDAKKyNk
ZWZpbmUJQVRfU0VRCQkweDA4MDAwCisjZGVmaW5lCUFUX1hWQVRUUgkweDEwMDAwCisKIC8qCiAg
KiAgTW9kZXMuCiAgKi8KZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL21haW4uYyBiL2xpYi92ZnNj
b3JlL21haW4uYwppbmRleCA4MmU0NTkxNy4uMTE2NGIzMGIgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNj
b3JlL21haW4uYworKysgYi9saWIvdmZzY29yZS9tYWluLmMKQEAgLTUyLDggKzUyLDQxIEBACiBp
bnQJdmZzX2RlYnVnID0gVkZTREJfRkxBR1M7CiAjZW5kaWYKIAorLyogVGhpcyBtYWNybyBpcyBm
b3IgZGVmaW5pbmcgYW4gYWxpYXMgb2YgdGhlIDY0Yml0IHZlcnNpb24gb2YgYQorICogc3lzY2Fs
bCB0byB0aGUgcmVndWxhciBvbmUuIEl0IHNlYW1zIHdlIGNhbiBtYWtlIHRoZSBsb2dpYyB3aGlj
aCBpcworICogY2hvb3NpbmcgdGhlIHJpZ2h0IGNhbGwgc2ltcGxlciB0aGVuIGluIGNvbW1vbiBs
aWJjLgorICoKKyAqIExldCdzIGtlZXAgTEZTNjQgY2FsbHMganVzdCBpbiBjYXNlIGluIGZ1dHVy
ZSB3ZSB3aWxsIGZpbmQgb3V0IHRoYXQKKyAqIHRoZXNlIGFsaWFzZXMgYXJlIG5lZWQuCisgKi8K
KyNkZWZpbmUgTEZTNjQoeCkKKwogc3RhdGljIG1vZGVfdCBnbG9iYWxfdW1hc2sgPSBTX0lXR1JQ
IHwgU19JV09USDsKIAorLyogVE9ETzogdGhlc2UgbWFjcm8gZG9lcyBub3QgYmVsb25nIGhlcmUK
KyAqIE5PVEU6IGJvcnJvd2VkIGZyb20gT1N2CisgKi8KKyNkZWZpbmUgRE9fT05DRSh0aGluZykg
ZG8gewkJCQlcCisJc3RhdGljIGludCBfeDsJCQkJCVwKKwlpZiAoIV94KSB7CQkJCQlcCisJICAg
IF94ID0gMTsJCQkJCVwKKwkgICAgdGhpbmcgOwkJCQkJXAorCX0JCQkJCQlcCit9IHdoaWxlICgw
KQorI2RlZmluZSBXQVJOX1NUVUJCRUQoKSBET19PTkNFKHVrX3ByX3dhcm4oIiVzKCkgc3R1YmJl
ZFxuIiwgX19mdW5jX18pKQorCisjZGVmaW5lIE5PX1NZUyhkZWNsKSBkZWNsIHsJCQkJXAorICAg
IERPX09OQ0UodWtfcHJfd2FybigiJXMgbm90IGltcGxlbWVudGVkXG4iLCBfX2Z1bmNfXykpOwlc
CisgICAgZXJybm8gPSBFTk9TWVM7CQkJCQlcCisgICAgcmV0dXJuIC0xOwkJCQkJCVwKK30KKwor
c3RhdGljIGlubGluZSBpbnQgbGliY19lcnJvcihpbnQgZXJyKQoreworICAgIGVycm5vID0gZXJy
OworICAgIHJldHVybiAtMTsKK30KKwogc3RhdGljIGlubGluZSBtb2RlX3QgYXBwbHlfdW1hc2so
bW9kZV90IG1vZGUpCiB7CiAJcmV0dXJuIG1vZGUgJiB+dWthcmNoX2xvYWRfbigmZ2xvYmFsX3Vt
YXNrKTsKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL21vdW50LmMgYi9saWIvdmZzY29yZS9tb3Vu
dC5jCmluZGV4IGZhZDQ3MDI2Li43MWM4NzZkMiAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvbW91
bnQuYworKysgYi9saWIvdmZzY29yZS9tb3VudC5jCkBAIC03OSw2ICs3OSwyMCBAQCBmc19nZXRm
cyhjb25zdCBjaGFyICpuYW1lKQogCXJldHVybiBmczsKIH0KIAoraW50IGRldmljZV9vcGVuKGNv
bnN0IGNoYXIgKm5hbWUgX191bnVzZWQsIGludCBtb2RlIF9fdW51c2VkLAorCQlzdHJ1Y3QgZGV2
aWNlICoqZGV2cCBfX3VudXNlZCkKK3sKKwlVS19DUkFTSCgiJXMgaXMgbm90IGltcGxlbWVudGVk
ICglcylcbiIsIF9fZnVuY19fLCBuYW1lKTsKKwlyZXR1cm4gMDsKK30KKworaW50IGRldmljZV9j
bG9zZShzdHJ1Y3QgZGV2aWNlICpkZXYpCit7CisJKHZvaWQpIGRldjsKKwlVS19DUkFTSCgiJXMg
bm90IGltcGxlbWVudGVkIiwgX19mdW5jX18pOworCXJldHVybiAwOworfQorCiBpbnQKIHN5c19t
b3VudChjb25zdCBjaGFyICpkZXYsIGNvbnN0IGNoYXIgKmRpciwgY29uc3QgY2hhciAqZnNuYW1l
LCBpbnQgZmxhZ3MsIGNvbnN0IHZvaWQgKmRhdGEpCiB7CmRpZmYgLS1naXQgYS9saWIvdmZzY29y
ZS92ZnMuaCBiL2xpYi92ZnNjb3JlL3Zmcy5oCmluZGV4IDE5ZjhhYzg3Li42MDlkYzFmNSAxMDA2
NDQKLS0tIGEvbGliL3Zmc2NvcmUvdmZzLmgKKysrIGIvbGliL3Zmc2NvcmUvdmZzLmgKQEAgLTE1
MSw0ICsxNTEsMTMgQEAgdm9pZAkgdm5vZGVfZHVtcCh2b2lkKTsKIHZvaWQJIG1vdW50X2R1bXAo
dm9pZCk7CiAjZW5kaWYKIAorc3RhdGljIHZvaWQgX19hdHRyaWJ1dGVfXygodW51c2VkKSkgdWtf
dmZzY29yZV90cmFjZShpbnQgZm9vIF9fdW51c2VkLCAuLi4pCit7Cit9CisKKyNkZWZpbmUgVFJB
Q0VQT0lOVCh0cmFjZV9uYW1lLCBmbXQsIC4uLikJCQlcCisJc3RhdGljIHZvaWQgdHJhY2VfbmFt
ZShfX1ZBX0FSR1NfXyApIF9fYXR0cmlidXRlX18oKHVudXNlZCwgYWxpYXMoInVrX3Zmc2NvcmVf
dHJhY2UiKSkpCisKKworCiAjZW5kaWYgLyogIV9WRlNfSCAqLwpkaWZmIC0tZ2l0IGEvbGliL3Zm
c2NvcmUvdm5vZGUuYyBiL2xpYi92ZnNjb3JlL3Zub2RlLmMKaW5kZXggYTJmNDU1OTYuLjg2ZTZk
OWM3IDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS92bm9kZS5jCisrKyBiL2xpYi92ZnNjb3JlL3Zu
b2RlLmMKQEAgLTQ4LDYgKzQ4LDggQEAKICNpbmNsdWRlIDx2ZnNjb3JlL3Zub2RlLmg+CiAjaW5j
bHVkZSAidmZzLmgiCiAKKyNkZWZpbmUgU19CTEtTSVpFIDUxMgorCiBlbnVtIHZ0eXBlIGlmdG92
dF90YWJbMTZdID0gewogCVZOT04sIFZGSUZPLCBWQ0hSLCBWTk9OLCBWRElSLCBWTk9OLCBWQkxL
LCBWTk9OLAogCVZSRUcsIFZOT04sIFZMTkssIFZOT04sIFZTT0NLLCBWTk9OLCBWTk9OLCBWQkFE
LAotLSAKMi4xOS4yCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJv
amVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21p
bmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Feb 18 14:55:32 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 18 Feb 2019 14:55:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gvkKS-0004ZA-KF; Mon, 18 Feb 2019 14:55:32 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=odxU=QZ=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gvkKQ-0004YQ-Mx
 for minios-devel@lists.xen.org; Mon, 18 Feb 2019 14:55:30 +0000
X-Inumbo-ID: 3a2af86a-338d-11e9-9ba1-8f58c48b8c46
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 3a2af86a-338d-11e9-9ba1-8f58c48b8c46;
 Mon, 18 Feb 2019 14:55:27 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id DE7DE104E85;
 Mon, 18 Feb 2019 15:55:26 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 7EQgMzKJnjeo; Mon, 18 Feb 2019 15:55:26 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id B7C5D104E84
 for <minios-devel@lists.xen.org>; Mon, 18 Feb 2019 15:55:24 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 18 Feb 2019 15:55:24 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Mon, 18 Feb 2019 15:54:29 +0100
Message-ID: <20190218145440.30580-12-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190218145440.30580-1-yuri.volchkov@neclab.eu>
References: <20190218145440.30580-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v4 11/22] lib/vfscore: introduce
 UK_FS_REGISTER
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: simon.kuenzer@neclab.eu, sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhlIG1hY3JvIHJlZ2lzdGVycyB0aGUgZmlsZXN5c3RlbSBpbiB0aGUgc3RhdGljIGFycmF5CgpT
aWduZWQtb2ZmLWJ5OiBZdXJpIFZvbGNoa292IDx5dXJpLnZvbGNoa292QG5lY2xhYi5ldT4KLS0t
CiBsaWIvdmZzY29yZS9NYWtlZmlsZS51ayAgICAgICAgICAgICB8ICAyICsrCiBsaWIvdmZzY29y
ZS9leHRyYS5sZCAgICAgICAgICAgICAgICB8ICA5ICsrKysrKysrKwogbGliL3Zmc2NvcmUvaW5j
bHVkZS92ZnNjb3JlL21vdW50LmggfCAgNiArKysrKy0KIGxpYi92ZnNjb3JlL21vdW50LmMgICAg
ICAgICAgICAgICAgIHwgMjQgKysrKysrKysrKysrKysrKysrLS0tLS0tCiA0IGZpbGVzIGNoYW5n
ZWQsIDM0IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQg
bGliL3Zmc2NvcmUvZXh0cmEubGQKCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9NYWtlZmlsZS51
ayBiL2xpYi92ZnNjb3JlL01ha2VmaWxlLnVrCmluZGV4IDEyNDZhZTUzLi4wNjkzM2Q5NiAxMDA2
NDQKLS0tIGEvbGliL3Zmc2NvcmUvTWFrZWZpbGUudWsKKysrIGIvbGliL3Zmc2NvcmUvTWFrZWZp
bGUudWsKQEAgLTUsMyArNSw1IEBAIENJTkNMVURFUy15ICs9IC1JJChMSUJWRlNDT1JFX0JBU0Up
L2luY2x1ZGUKIExJQlZGU0NPUkVfU1JDUy15ICs9ICQoTElCVkZTQ09SRV9CQVNFKS9mZC5jCiBM
SUJWRlNDT1JFX1NSQ1MteSArPSAkKExJQlZGU0NPUkVfQkFTRSkvZmlsZS5jCiBMSUJWRlNDT1JF
X1NSQ1MteSArPSAkKExJQlZGU0NPUkVfQkFTRSkvc3RkaW8uYworCitFWFRSQV9MRF9TQ1JJUFQt
JChDT05GSUdfTElCVkZTQ09SRSkgKz0gJChMSUJWRlNDT1JFX0JBU0UpL2V4dHJhLmxkClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvZXh0cmEubGQg
Yi9saWIvdmZzY29yZS9leHRyYS5sZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MC4uMTczYjIzNTAKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvdmZzY29yZS9leHRyYS5sZApAQCAt
MCwwICsxLDkgQEAKK1NFQ1RJT05TCit7CisJLnVrX2ZzX2xpc3QgOiB7CisJCVBST1ZJREUodWtf
ZnNsaXN0X3N0YXJ0ID0gLik7CisJCUtFRVAgKCooLnVrX2ZzX2xpc3QpKQorICAgICAgICAgICAg
ICAgIFBST1ZJREUodWtfZnNsaXN0X2VuZCA9IC4pOworCX0KK30KK0lOU0VSVCBBRlRFUiAudGV4
dDsKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9tb3VudC5oIGIvbGli
L3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmgKaW5kZXggN2E2MzhkYmUuLjVhMTk1N2Zi
IDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvbW91bnQuaAorKysgYi9s
aWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvbW91bnQuaApAQCAtMTAwLDEyICsxMDAsMTYgQEAg
c3RydWN0IG1vdW50IHsKIC8qCiAgKiBGaWxlc3lzdGVtIHR5cGUgc3dpdGNoIHRhYmxlLgogICov
Ci1zdHJ1Y3QgdmZzc3cgeworc3RydWN0IHZmc2NvcmVfZnNfdHlwZSB7CiAJY29uc3QgY2hhciAg
ICAgICp2c19uYW1lOwkvKiBuYW1lIG9mIGZpbGUgc3lzdGVtICovCiAJaW50CQkoKnZzX2luaXQp
KHZvaWQpOyAvKiBpbml0aWFsaXplIHJvdXRpbmUgKi8KIAlzdHJ1Y3QgdmZzb3BzCSp2c19vcDsJ
CS8qIHBvaW50ZXIgdG8gdmZzIG9wZXJhdGlvbiAqLwogfTsKIAorI2RlZmluZSBVS19GU19SRUdJ
U1RFUihmc3N3KSBzdGF0aWMgc3RydWN0IHZmc2NvcmVfZnNfdHlwZQlcCisJX19hdHRyaWJ1dGUo
KF9fc2VjdGlvbl9fKCIudWtfZnNfbGlzdCIpKSkJCVwKKwkqX19wdHJfIyNmc3N3IF9fdXNlZCA9
ICZmc3N3OwkJCQlcCisKIC8qCiAgKiBPcGVyYXRpb25zIHN1cHBvcnRlZCBvbiB2aXJ0dWFsIGZp
bGUgc3lzdGVtLgogICovCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9tb3VudC5jIGIvbGliL3Zm
c2NvcmUvbW91bnQuYwppbmRleCA3MWM4NzZkMi4uOTVlYjkwN2IgMTAwNjQ0Ci0tLSBhL2xpYi92
ZnNjb3JlL21vdW50LmMKKysrIGIvbGliL3Zmc2NvcmUvbW91bnQuYwpAQCAtNjIsMjAgKzYyLDMy
IEBAIFVLX0xJU1RfSEVBRChtb3VudF9saXN0KTsKICAqLwogc3RhdGljIHN0cnVjdCB1a19tdXRl
eCBtb3VudF9sb2NrID0gVUtfTVVURVhfSU5JVElBTElaRVIobW91bnRfbG9jayk7CiAKK2V4dGVy
biBjb25zdCBzdHJ1Y3QgdmZzY29yZV9mc190eXBlICp1a19mc2xpc3Rfc3RhcnQ7CitleHRlcm4g
Y29uc3Qgc3RydWN0IHZmc2NvcmVfZnNfdHlwZSAqdWtfZnNsaXN0X2VuZDsKKworI2RlZmluZSBm
b3JfZWFjaF9mcyhpdGVyKQkJCVwKKwlmb3IgKGl0ZXIgPSAmdWtfZnNsaXN0X3N0YXJ0OwlcCisJ
ICAgICBpdGVyIDwgJnVrX2ZzbGlzdF9lbmQ7CQlcCisJICAgICBpdGVyKyspCisKIC8qCiAgKiBM
b29rdXAgZmlsZSBzeXN0ZW0uCiAgKi8KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZzc3cgKgorc3Rh
dGljIGNvbnN0IHN0cnVjdCB2ZnNjb3JlX2ZzX3R5cGUgKgogZnNfZ2V0ZnMoY29uc3QgY2hhciAq
bmFtZSkKIHsKLQljb25zdCBzdHJ1Y3QgdmZzc3cgKmZzOworCWNvbnN0IHN0cnVjdCB2ZnNjb3Jl
X2ZzX3R5cGUgKmZzID0gTlVMTCwgKipfX2ZzOworCisJZm9yX2VhY2hfZnMoX19mcykgeworCQlm
cyA9ICpfX2ZzOworCQlpZiAoZnMgPT0gTlVMTCkKKwkJCWNvbnRpbnVlOwogCi0JZm9yIChmcyA9
IHZmc3N3OyBmcy0+dnNfbmFtZTsgZnMrKykgewogCQlpZiAoIXN0cm5jbXAobmFtZSwgZnMtPnZz
X25hbWUsIEZTTUFYTkFNRVMpKQogCQkJYnJlYWs7CiAJfQotCWlmICghZnMtPnZzX25hbWUpCi0J
CXJldHVybiBudWxscHRyOworCWlmICghZnMgfHwgIWZzLT52c19uYW1lKQorCQlyZXR1cm4gTlVM
TDsKIAlyZXR1cm4gZnM7CiB9CiAKQEAgLTk2LDcgKzEwOCw3IEBAIGludCBkZXZpY2VfY2xvc2Uo
c3RydWN0IGRldmljZSAqZGV2KQogaW50CiBzeXNfbW91bnQoY29uc3QgY2hhciAqZGV2LCBjb25z
dCBjaGFyICpkaXIsIGNvbnN0IGNoYXIgKmZzbmFtZSwgaW50IGZsYWdzLCBjb25zdCB2b2lkICpk
YXRhKQogewotCWNvbnN0IHN0cnVjdCB2ZnNzdyAqZnM7CisJY29uc3Qgc3RydWN0IHZmc2NvcmVf
ZnNfdHlwZSAqZnM7CiAJc3RydWN0IG1vdW50ICptcDsKIAlzdHJ1Y3QgZGV2aWNlICpkZXZpY2U7
CiAJc3RydWN0IGRlbnRyeSAqZHBfY292ZXJlZCA9IE5VTEw7Ci0tIAoyLjE5LjIKCgpfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFp
bGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3Rz
LnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Feb 18 14:55:35 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 18 Feb 2019 14:55:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gvkKV-0004aU-M0; Mon, 18 Feb 2019 14:55:35 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=odxU=QZ=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gvkKT-0004Zj-UL
 for minios-devel@lists.xen.org; Mon, 18 Feb 2019 14:55:33 +0000
X-Inumbo-ID: 3bc05f80-338d-11e9-aac9-93ab01509e41
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 3bc05f80-338d-11e9-aac9-93ab01509e41;
 Mon, 18 Feb 2019 14:55:30 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 8440FF204F;
 Mon, 18 Feb 2019 15:55:29 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id JPM1bDAvbMq4; Mon, 18 Feb 2019 15:55:29 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 5634EF202E
 for <minios-devel@lists.xen.org>; Mon, 18 Feb 2019 15:55:27 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 18 Feb 2019 15:55:27 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Mon, 18 Feb 2019 15:54:30 +0100
Message-ID: <20190218145440.30580-13-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190218145440.30580-1-yuri.volchkov@neclab.eu>
References: <20190218145440.30580-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v4 12/22] lib/vfscore: prefix
 exported functions
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: simon.kuenzer@neclab.eu, sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+ClJl
dmlld2VkLWJ5OiBTaGFyYW4gU2FudGhhbmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xhYi5ldT4K
LS0tCiBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvbW91bnQuaCB8ICA0ICsrLS0KIGxpYi92
ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9wcmV4LmggIHwgIDYgKysrLS0tCiBsaWIvdmZzY29yZS9p
bmNsdWRlL3Zmc2NvcmUvdWlvLmggICB8ICAyICstCiBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2Nv
cmUvdm5vZGUuaCB8IDEwICsrKysrLS0tLS0KIGxpYi92ZnNjb3JlL21vdW50LmMgICAgICAgICAg
ICAgICAgIHwgIDkgKysrKy0tLS0tCiBsaWIvdmZzY29yZS9zdWJyX3Vpby5jICAgICAgICAgICAg
ICB8ICAyICstCiBsaWIvdmZzY29yZS92ZnMuaCAgICAgICAgICAgICAgICAgICB8ICAyICstCiBs
aWIvdmZzY29yZS92bm9kZS5jICAgICAgICAgICAgICAgICB8IDEyICsrKysrKy0tLS0tLQogOCBm
aWxlcyBjaGFuZ2VkLCAyMyBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1n
aXQgYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvbW91bnQuaCBiL2xpYi92ZnNjb3JlL2lu
Y2x1ZGUvdmZzY29yZS9tb3VudC5oCmluZGV4IDVhMTk1N2ZiLi44ZTExMzRjNiAxMDA2NDQKLS0t
IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmgKKysrIGIvbGliL3Zmc2NvcmUv
aW5jbHVkZS92ZnNjb3JlL21vdW50LmgKQEAgLTEzOSwxMiArMTM5LDEyIEBAIHR5cGVkZWYgaW50
ICgqdmZzb3Bfc3RhdGZzX3QpKHN0cnVjdCBtb3VudCAqLCBzdHJ1Y3Qgc3RhdGZzICopOwogCiAj
ZGVmaW5lIFZGU19OVUxMCQkgICAgKCh2b2lkICopdmZzX251bGwpCiAKLWludAl2ZnNfbnVsbG9w
KHZvaWQpOworaW50CXZmc2NvcmVfbnVsbG9wKHZvaWQpOwogaW50CXZmc19laW52YWwodm9pZCk7
CiAKIHZvaWQJIHZmc19idXN5KHN0cnVjdCBtb3VudCAqbXApOwogdm9pZAkgdmZzX3VuYnVzeShz
dHJ1Y3QgbW91bnQgKm1wKTsKIAotdm9pZAkgcmVsZWFzZV9tcF9kZW50cmllcyhzdHJ1Y3QgbW91
bnQgKm1wKTsKK3ZvaWQJIHZmc2NvcmVfcmVsZWFzZV9tcF9kZW50cmllcyhzdHJ1Y3QgbW91bnQg
Km1wKTsKIAogI2VuZGlmCS8qICFfU1lTX01PVU5UX0hfICovCmRpZmYgLS1naXQgYS9saWIvdmZz
Y29yZS9pbmNsdWRlL3Zmc2NvcmUvcHJleC5oIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3Jl
L3ByZXguaAppbmRleCA4ZWVkOWU0ZC4uYmZhOTU2NTUgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3Jl
L2luY2x1ZGUvdmZzY29yZS9wcmV4LmgKKysrIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3Jl
L3ByZXguaApAQCAtMzMsOCArMzMsOCBAQAogICogVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRS
QUNURUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4KICAqLwogCi0jaWZuZGVmIF9PU1ZfUFJFWF9I
Ci0jZGVmaW5lIF9PU1ZfUFJFWF9IIDEKKyNpZm5kZWYgX1VLX1BSRVhfSAorI2RlZmluZSBfVUtf
UFJFWF9IIDEKIAogCiAjaW5jbHVkZSA8dW5pc3RkLmg+CkBAIC01MCw0ICs1MCw0IEBAIHNpemVf
dCBzdHJsY3B5KGNoYXIgKmRzdCwgY29uc3QgY2hhciAqc3JjLCBzaXplX3Qgc2l6KTsKIAogdm9p
ZCBzeXNfcGFuaWMoY29uc3QgY2hhciAqKTsKIAotI2VuZGlmIC8qIF9PU1ZfUFJFWF9IICovCisj
ZW5kaWYgLyogX1VLX1BSRVhfSCAqLwpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92
ZnNjb3JlL3Vpby5oIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Vpby5oCmluZGV4IDhh
ZDFlM2ZiLi5jNzM0ZmExOSAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3Jl
L3Vpby5oCisrKyBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS91aW8uaApAQCAtNTcsNiAr
NTcsNiBAQCBzdHJ1Y3QgdWlvIHsKIAllbnVtCXVpb19ydyB1aW9fcnc7CQkvKiBvcGVyYXRpb24g
Ki8KIH07CiAKLWludAl1aW9tb3ZlKHZvaWQgKmNwLCBpbnQgbiwgc3RydWN0IHVpbyAqdWlvKTsK
K2ludAl2ZnNjb3JlX3Vpb21vdmUodm9pZCAqY3AsIGludCBuLCBzdHJ1Y3QgdWlvICp1aW8pOwog
CiAjZW5kaWYgLyogIV9VSU9fSF8gKi8KZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUv
dmZzY29yZS92bm9kZS5oIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Zub2RlLmgKaW5k
ZXggNDE1NWE3ZGIuLjA4YjhlNTYyIDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zm
c2NvcmUvdm5vZGUuaAorKysgYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUuaApA
QCAtMjI5LDEwICsyMjksMTAgQEAgc3RydWN0IHZub3BzIHsKICNkZWZpbmUgVk9QX1JFQURMSU5L
KFZQLCBVKSAgICAgICAgKChWUCktPnZfb3AtPnZvcF9yZWFkbGluaykoVlAsIFUpCiAjZGVmaW5l
IFZPUF9TWU1MSU5LKERWUCwgT1AsIE5QKSAgICgoRFZQKS0+dl9vcC0+dm9wX3N5bWxpbmspKERW
UCwgT1AsIE5QKQogCi1pbnQJIHZvcF9udWxsb3Aodm9pZCk7Ci1pbnQJIHZvcF9laW52YWwodm9p
ZCk7Ci1pbnQJIHZvcF9lcGVybSh2b2lkKTsKLWludAkgdm9wX2Vyb2ZzKHZvaWQpOworaW50CSB2
ZnNjb3JlX3ZvcF9udWxsb3Aodm9pZCk7CitpbnQJIHZmc2NvcmVfdm9wX2VpbnZhbCh2b2lkKTsK
K2ludAkgdmZzY29yZV92b3BfZXBlcm0odm9pZCk7CitpbnQJIHZmc2NvcmVfdm9wX2Vyb2ZzKHZv
aWQpOwogc3RydWN0IHZub2RlICp2bl9sb29rdXAoc3RydWN0IG1vdW50ICosIHVpbnQ2NF90KTsK
IHZvaWQJIHZuX2xvY2soc3RydWN0IHZub2RlICopOwogdm9pZAkgdm5fdW5sb2NrKHN0cnVjdCB2
bm9kZSAqKTsKQEAgLTI0MCw3ICsyNDAsNyBAQCBpbnQJIHZuX3N0YXQoc3RydWN0IHZub2RlICos
IHN0cnVjdCBzdGF0ICopOwogaW50CSB2bl9zZXR0aW1lcyhzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0
IHRpbWVzcGVjWzJdKTsKIGludAkgdm5fc2V0bW9kZShzdHJ1Y3Qgdm5vZGUgKiwgbW9kZV90IG1v
ZGUpOwogaW50CSB2bl9hY2Nlc3Moc3RydWN0IHZub2RlICosIGludCk7Ci1pbnQJIHZnZXQoc3Ry
dWN0IG1vdW50ICosIHVpbnQ2NF90IGlubywgc3RydWN0IHZub2RlICoqdnBwKTsKK2ludAkgdmZz
Y29yZV92Z2V0KHN0cnVjdCBtb3VudCAqLCB1aW50NjRfdCBpbm8sIHN0cnVjdCB2bm9kZSAqKnZw
cCk7CiB2b2lkCSB2cHV0KHN0cnVjdCB2bm9kZSAqKTsKIHZvaWQJIHZyZWYoc3RydWN0IHZub2Rl
ICopOwogdm9pZAkgdnJlbGUoc3RydWN0IHZub2RlICopOwpkaWZmIC0tZ2l0IGEvbGliL3Zmc2Nv
cmUvbW91bnQuYyBiL2xpYi92ZnNjb3JlL21vdW50LmMKaW5kZXggOTVlYjkwN2IuLmQ2NzMyNmQz
IDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9tb3VudC5jCisrKyBiL2xpYi92ZnNjb3JlL21vdW50
LmMKQEAgLTI0MCw3ICsyNDAsNyBAQCBzeXNfbW91bnQoY29uc3QgY2hhciAqZGV2LCBjb25zdCBj
aGFyICpkaXIsIGNvbnN0IGNoYXIgKmZzbmFtZSwgaW50IGZsYWdzLCBjb25zdAogfQogCiB2b2lk
Ci1yZWxlYXNlX21wX2RlbnRyaWVzKHN0cnVjdCBtb3VudCAqbXApCit2ZnNjb3JlX3JlbGVhc2Vf
bXBfZGVudHJpZXMoc3RydWN0IG1vdW50ICptcCkKIHsKIAkvKiBEZWNyZW1lbnQgcmVmZXJlY2Ug
Y291bnQgb2Ygcm9vdCB2bm9kZSAqLwogCWlmIChtcC0+bV9jb3ZlcmVkKSB7CkBAIC00NjUsOCAr
NDY1LDcgQEAgdmZzX3VuYnVzeShzdHJ1Y3QgbW91bnQgKm1wKQogCXVrYXJjaF9kZWMoJm1wLT5t
X2NvdW50KTsKIH0KIAotaW50Ci12ZnNfbnVsbG9wKHZvaWQpCitpbnQgdmZzY29yZV9udWxsb3Ao
dm9pZCkKIHsKIAlyZXR1cm4gMDsKIH0KQEAgLTQ3OSwxMiArNDc4LDEyIEBAIHZmc19laW52YWwo
dm9pZCkKIAogI2lmZGVmIERFQlVHX1ZGUwogdm9pZAotbW91bnRfZHVtcCh2b2lkKQordmZzY29y
ZV9tb3VudF9kdW1wKHZvaWQpCiB7CiAJc3RydWN0IG1vdW50ICptcDsKIAl1a19tdXRleF9sb2Nr
KCZtb3VudF9sb2NrKTsKIAotCXVrX3ByX2RlYnVnKCJtb3VudF9kdW1wXG4iKTsKKwl1a19wcl9k
ZWJ1ZygidmZzY29yZV9tb3VudF9kdW1wXG4iKTsKIAl1a19wcl9kZWJ1ZygiZGV2ICAgICAgY291
bnQgcm9vdFxuIik7CiAJdWtfcHJfZGVidWcoIi0tLS0tLS0tIC0tLS0tIC0tLS0tLS0tXG4iKTsK
IApkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvc3Vicl91aW8uYyBiL2xpYi92ZnNjb3JlL3N1YnJf
dWlvLmMKaW5kZXggZDhlOWQxYmUuLmFhMTc2MDc0IDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9z
dWJyX3Vpby5jCisrKyBiL2xpYi92ZnNjb3JlL3N1YnJfdWlvLmMKQEAgLTQ2LDcgKzQ2LDcgQEAK
ICNpbmNsdWRlIDx2ZnNjb3JlL3Vpby5oPgogCiBpbnQKLXVpb21vdmUodm9pZCAqY3AsIGludCBu
LCBzdHJ1Y3QgdWlvICp1aW8pCit2ZnNjb3JlX3Vpb21vdmUodm9pZCAqY3AsIGludCBuLCBzdHJ1
Y3QgdWlvICp1aW8pCiB7CiAJVUtfQVNTRVJUKHVpby0+dWlvX3J3ID09IFVJT19SRUFEIHx8IHVp
by0+dWlvX3J3ID09IFVJT19XUklURSk7CiAKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3Zmcy5o
IGIvbGliL3Zmc2NvcmUvdmZzLmgKaW5kZXggNjA5ZGMxZjUuLjk0ZmU4OWE1IDEwMDY0NAotLS0g
YS9saWIvdmZzY29yZS92ZnMuaAorKysgYi9saWIvdmZzY29yZS92ZnMuaApAQCAtMTQ4LDcgKzE0
OCw3IEBAIHZvaWQgZGVudHJ5X2luaXQodm9pZCk7CiAKICNpZmRlZiBERUJVR19WRlMKIHZvaWQJ
IHZub2RlX2R1bXAodm9pZCk7Ci12b2lkCSBtb3VudF9kdW1wKHZvaWQpOwordm9pZAkgdmZzY29y
ZV9tb3VudF9kdW1wKHZvaWQpOwogI2VuZGlmCiAKIHN0YXRpYyB2b2lkIF9fYXR0cmlidXRlX18o
KHVudXNlZCkpIHVrX3Zmc2NvcmVfdHJhY2UoaW50IGZvbyBfX3VudXNlZCwgLi4uKQpkaWZmIC0t
Z2l0IGEvbGliL3Zmc2NvcmUvdm5vZGUuYyBiL2xpYi92ZnNjb3JlL3Zub2RlLmMKaW5kZXggODZl
NmQ5YzcuLmU5ZTA0MGFhIDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS92bm9kZS5jCisrKyBiL2xp
Yi92ZnNjb3JlL3Zub2RlLmMKQEAgLTY2LDcgKzY2LDcgQEAgaW50IHZ0dG9pZl90YWJbMTBdID0g
ewogICogLS0tLS0tLS0tLSAtLS0tLS0tLS0gLS0tLS0tLS0tLQogICogdm5fbG9jayAgICAgKiAg
ICAgICAgTG9jawogICogdm5fdW5sb2NrICAgKiAgICAgICAgVW5sb2NrCi0gKiB2Z2V0ICAgICAg
ICAxICAgICAgICBMb2NrCisgKiB2ZnNjb3JlX3ZnZXQgICAgICAgIDEgICAgICAgIExvY2sKICAq
IHZwdXQgICAgICAgLTEgICAgICAgIFVubG9jawogICogdnJlZiAgICAgICArMSAgICAgICAgKgog
ICogdnJlbGUgICAgICAtMSAgICAgICAgKgpAQCAtMTcyLDcgKzE3Miw3IEBAIHZuX3VubG9jayhz
dHJ1Y3Qgdm5vZGUgKnZwKQogICogUmV0dXJucyAxIGlmIHZub2RlIHdhcyBmb3VuZCBpbiBjYWNo
ZTsgb3RoZXJ3aXNlIHJldHVybnMgMC4KICAqLwogaW50Ci12Z2V0KHN0cnVjdCBtb3VudCAqbXAs
IHVpbnQ2NF90IGlubywgc3RydWN0IHZub2RlICoqdnBwKQordmZzY29yZV92Z2V0KHN0cnVjdCBt
b3VudCAqbXAsIHVpbnQ2NF90IGlubywgc3RydWN0IHZub2RlICoqdnBwKQogewogCXN0cnVjdCB2
bm9kZSAqdnA7CiAJaW50IGVycm9yOwpAQCAtNDc2LDI1ICs0NzYsMjUgQEAgdm5vZGVfZHVtcCh2
b2lkKQogI2VuZGlmCiAKIGludAotdm9wX251bGxvcCh2b2lkKQordmZzY29yZV92b3BfbnVsbG9w
KHZvaWQpCiB7CiAJcmV0dXJuIDA7CiB9CiAKIGludAotdm9wX2VpbnZhbCh2b2lkKQordmZzY29y
ZV92b3BfZWludmFsKHZvaWQpCiB7CiAJcmV0dXJuIEVJTlZBTDsKIH0KIAogaW50Ci12b3BfZXBl
cm0odm9pZCkKK3Zmc2NvcmVfdm9wX2VwZXJtKHZvaWQpCiB7CiAJcmV0dXJuIEVQRVJNOwogfQog
CiBpbnQKLXZvcF9lcm9mcyh2b2lkKQordmZzY29yZV92b3BfZXJvZnModm9pZCkKIHsKIAlyZXR1
cm4gRVJPRlM7CiB9Ci0tIAoyLjE5LjIKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBs
aXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4v
bGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Feb 18 14:55:35 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 18 Feb 2019 14:55:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gvkKV-0004aZ-O8; Mon, 18 Feb 2019 14:55:35 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=odxU=QZ=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gvkKV-0004aG-5s
 for minios-devel@lists.xen.org; Mon, 18 Feb 2019 14:55:35 +0000
X-Inumbo-ID: 3d3fcbb6-338d-11e9-a76c-5b17bbee43b3
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 3d3fcbb6-338d-11e9-a76c-5b17bbee43b3;
 Mon, 18 Feb 2019 14:55:32 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 149A6104E85;
 Mon, 18 Feb 2019 15:55:32 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id HwagStDmx4qI; Mon, 18 Feb 2019 15:55:31 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id DFA26104E84
 for <minios-devel@lists.xen.org>; Mon, 18 Feb 2019 15:55:29 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 18 Feb 2019 15:55:29 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Mon, 18 Feb 2019 15:54:31 +0100
Message-ID: <20190218145440.30580-14-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190218145440.30580-1-yuri.volchkov@neclab.eu>
References: <20190218145440.30580-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v4 13/22] lib/vfscore: introduce
 fget, fdrop, fdalloc
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: simon.kuenzer@neclab.eu, sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkIGluIHRoZSBpbXBvcnRlZCBjb2RlLCB3aGljaCBpcyBu
b3QgZW5hYmxlZAp5ZXQuIFRoaXMgcmVxdWlyZWQgdG8gZXhwYW5kIGZ1bmN0aW9uYWxpdHkgb2Yg
dmZzY29yZV9pbnN0YWxsX2ZkIGFuZApmcmllbmRzIHdpdGggbG9ja2luZyBhbmQgcmVmZXJlbmNl
IGNvdW50aW5nLgoKU2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBu
ZWNsYWIuZXU+Ci0tLQogbGliL3Zmc2NvcmUvZmQuYyAgICAgICAgICAgICAgICAgICB8IDcxICsr
KysrKysrKysrKysrKysrKysrKysrKysrKystLQogbGliL3Zmc2NvcmUvZmlsZS5jICAgICAgICAg
ICAgICAgICB8IDIyICsrKysrKysrLQogbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2ZpbGUu
aCB8ICA5ICsrKy0KIDMgZmlsZXMgY2hhbmdlZCwgOTYgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlv
bnMoLSkKCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9mZC5jIGIvbGliL3Zmc2NvcmUvZmQuYwpp
bmRleCA2YzIyMDQyOC4uNWFiZWQ5NjkgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2ZkLmMKKysr
IGIvbGliL3Zmc2NvcmUvZmQuYwpAQCAtNzQsMjAgKzc0LDQ1IEBAIGV4aXQ6CiAKIHZvaWQgdmZz
Y29yZV9wdXRfZmQoaW50IGZkKQogeworCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwOworCXVuc2ln
bmVkIGxvbmcgZmxhZ3M7CisKIAlVS19BU1NFUlQoZmQgPCAoaW50KSBGRFRBQkxFX01BWF9GSUxF
Uyk7CiAJLyogQ3VycmVudGx5IGl0IGlzIG5vdCBhbGxvd2VkIHRvIGZyZWUgc3RkKGlufG91dHxl
cnIpICovCiAJVUtfQVNTRVJUKGZkID4gMik7CiAKLQlfX3VrX2NsZWFyX2JpdChmZCwgJmZkdGFi
bGUuYml0bWFwKTsKKwlmbGFncyA9IHVrcGxhdF9sY3B1X3NhdmVfaXJxZigpOworCV9fdWtfY2xl
YXJfYml0KGZkLCAmZmR0YWJsZS5iaXRtYXApO1wKKwlmcCA9IGZkdGFibGUuZmlsZXNbZmRdOwor
CWZkdGFibGUuZmlsZXNbZmRdID0gTlVMTDsKKwl1a3BsYXRfbGNwdV9yZXN0b3JlX2lycWYoZmxh
Z3MpOworCisJZmRyb3AoZnApOwogfQogCi12b2lkIHZmc2NvcmVfaW5zdGFsbF9mZChpbnQgZmQs
IHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZpbGUpCitpbnQgdmZzY29yZV9pbnN0YWxsX2ZkKGludCBm
ZCwgc3RydWN0IHZmc2NvcmVfZmlsZSAqZmlsZSkKIHsKLQlVS19BU1NFUlQoZmQgPCAoaW50KSBG
RFRBQkxFX01BWF9GSUxFUyk7Ci0JVUtfQVNTRVJUKGZpbGUpOworCXVuc2lnbmVkIGxvbmcgZmxh
Z3M7CisJc3RydWN0IHZmc2NvcmVfZmlsZSAqb3JpZzsKKworCWlmICgoZmQgPj0gKGludCkgRkRU
QUJMRV9NQVhfRklMRVMpIHx8ICghZmlsZSkpCisJCXJldHVybiAtRUJBREY7CisKKwlmaG9sZChm
aWxlKTsKIAogCWZpbGUtPmZkID0gZmQ7CisKKwlmbGFncyA9IHVrcGxhdF9sY3B1X3NhdmVfaXJx
ZigpOworCW9yaWcgPSBmZHRhYmxlLmZpbGVzW2ZkXTsKIAlmZHRhYmxlLmZpbGVzW2ZkXSA9IGZp
bGU7CisJdWtwbGF0X2xjcHVfcmVzdG9yZV9pcnFmKGZsYWdzKTsKKworCWZkcm9wKGZpbGUpOwor
CisJaWYgKG9yaWcpCisJCWZkcm9wKG9yaWcpOworCisJcmV0dXJuIDA7CiB9CiAKIHN0cnVjdCB2
ZnNjb3JlX2ZpbGUgKnZmc2NvcmVfZ2V0X2ZpbGUoaW50IGZkKQpAQCAtMTAxLDEyICsxMjYsNTAg
QEAgc3RydWN0IHZmc2NvcmVfZmlsZSAqdmZzY29yZV9nZXRfZmlsZShpbnQgZmQpCiAJaWYgKCEo
ZmR0YWJsZS5iaXRtYXAgJiAoKHVpbnQ2NF90KSAxIDw8IGZkKSkpCiAJCWdvdG8gZXhpdDsKIAly
ZXQgPSBmZHRhYmxlLmZpbGVzW2ZkXTsKKwlmaG9sZChyZXQpOwogCiBleGl0OgogCXVrcGxhdF9s
Y3B1X3Jlc3RvcmVfaXJxZihmbGFncyk7CiAJcmV0dXJuIHJldDsKIH0KIAoraW50IGZnZXQoaW50
IGZkLCBzdHJ1Y3QgdmZzY29yZV9maWxlICoqb3V0X2ZwKQoreworCWludCByZXQgPSAwOworCXN0
cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwID0gdmZzY29yZV9nZXRfZmlsZShmZCk7CisKKwlpZiAoIWZw
KQorCQlyZXQgPSBFQkFERjsKKwllbHNlCisJCSpvdXRfZnAgPSBmcDsKKworCXJldHVybiByZXQ7
Cit9CisKK2ludCBmZGFsbG9jKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwLCBpbnQgKm5ld2ZkKQor
eworCWludCBmZCwgcmV0ID0gMDsKKworCWZob2xkKGZwKTsKKworCWZkID0gdmZzY29yZV9hbGxv
Y19mZCgpOworCWlmIChmZCA8IDApIHsKKwkJcmV0ID0gZmQ7CisJCWdvdG8gZXhpdDsKKwl9CisK
KwlyZXQgPSB2ZnNjb3JlX2luc3RhbGxfZmQoZmQsIGZwKTsKKwlpZiAocmV0KQorCQlmZHJvcChm
cCk7CisJZWxzZQorCQkqbmV3ZmQgPSBmZDsKKworZXhpdDoKKwlyZXR1cm4gcmV0OworfQorCisK
Ky8qIFRPRE86IG1vdmUgdGhpcyBjb25zdHJ1Y3RvciB0byBtYWluLmMgKi8KIF9fY29uc3RydWN0
b3Igc3RhdGljIHZvaWQgZmR0YWJsZV9pbml0KHZvaWQpCiB7CiAJbWVtc2V0KCZmZHRhYmxlLCAw
LCBzaXplb2YoZmR0YWJsZSkpOwpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvZmlsZS5jIGIvbGli
L3Zmc2NvcmUvZmlsZS5jCmluZGV4IGU3YWRmMWEzLi4wZjZkZmE5MyAxMDA2NDQKLS0tIGEvbGli
L3Zmc2NvcmUvZmlsZS5jCisrKyBiL2xpYi92ZnNjb3JlL2ZpbGUuYwpAQCAtMzgsNyArMzgsNyBA
QAogI2luY2x1ZGUgPHVrL3ByaW50Lmg+CiAjaW5jbHVkZSA8dmZzY29yZS9maWxlLmg+CiAjaW5j
bHVkZSA8dWsvYXNzZXJ0Lmg+Ci0KKyNpbmNsdWRlIDx1ay9hcmNoL2F0b21pYy5oPgogCiBpbnQg
Y2xvc2UoaW50IGZkKQogewpAQCAtOTUsMyArOTUsMjMgQEAgc3NpemVfdCByZWFkKGludCBmZCwg
dm9pZCAqYnVmLCBzaXplX3QgY291bnQpCiAKIAlyZXR1cm4gZmlsZS0+Zm9wcy0+cmVhZChmaWxl
LCBidWYsIGNvdW50KTsKIH0KKworLyogVE9ETzogcmVtb3ZlIHN0dWIgKi8KKyNkZWZpbmUgdmZz
X2Nsb3NlKGZwKSAoMCkKKworaW50IGZkcm9wKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwKQorewor
CWludCByZXQgPSAwOworCWludCBwcmV2ID0gdWthcmNoX2RlYygmZnAtPmZfY291bnQpOworCisJ
aWYgKHByZXYgPT0gMCkKKwkJVUtfQ1JBU0goIlVuYmFsYW5jZWQgZmhvbGQvZmRyb3AiKTsKKwor
CWlmIChwcmV2ID09IDEpCisJCXJldCA9IHZmc19jbG9zZShmcCk7CisJcmV0dXJuIHJldDsKK30K
K3ZvaWQgZmhvbGQoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnApCit7CisJdWthcmNoX2luYygmZnAt
PmZfY291bnQpOworfQpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2Zp
bGUuaCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9maWxlLmgKaW5kZXggM2Q4ZDY2N2Yu
Ljg0ZWIzNWQ3IDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZmlsZS5o
CisrKyBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9maWxlLmgKQEAgLTUzLDE0ICs1Mywy
MSBAQCBzdHJ1Y3QgdmZzY29yZV9mb3BzIHsKIAogc3RydWN0IHZmc2NvcmVfZmlsZSB7CiAJaW50
IGZkOworCWludAkJZl9jb3VudDsJLyogcmVmZXJlbmNlIGNvdW50ICovCiAJY29uc3Qgc3RydWN0
IHZmc2NvcmVfZm9wcyAqZm9wczsKIH07CiAKIGludCB2ZnNjb3JlX2FsbG9jX2ZkKHZvaWQpOwog
dm9pZCB2ZnNjb3JlX3B1dF9mZChpbnQgZmQpOwotdm9pZCB2ZnNjb3JlX2luc3RhbGxfZmQoaW50
IGZkLCBzdHJ1Y3QgdmZzY29yZV9maWxlICpmaWxlKTsKK2ludCB2ZnNjb3JlX2luc3RhbGxfZmQo
aW50IGZkLCBzdHJ1Y3QgdmZzY29yZV9maWxlICpmaWxlKTsKIHN0cnVjdCB2ZnNjb3JlX2ZpbGUg
KnZmc2NvcmVfZ2V0X2ZpbGUoaW50IGZkKTsKIAorLyoKKyAqIEZpbGUgZGVzY3JpcHRvcnMgcmVm
ZXJlbmNlIGNvdW50CisgKi8KK3ZvaWQgZmhvbGQoc3RydWN0IHZmc2NvcmVfZmlsZSogZnApOwor
aW50IGZkcm9wKHN0cnVjdCB2ZnNjb3JlX2ZpbGUqIGZwKTsKKwogI2RlZmluZSBGT0ZfT0ZGU0VU
ICAweDA4MDAgICAgLyogVXNlIHRoZSBvZmZzZXQgaW4gdWlvIGFyZ3VtZW50ICovCiAKICNpZmRl
ZiBfX2NwbHVzcGx1cwotLSAKMi4xOS4yCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxA
bGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFu
L2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Feb 18 14:55:37 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 18 Feb 2019 14:55:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gvkKX-0004bd-Pa; Mon, 18 Feb 2019 14:55:37 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=odxU=QZ=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gvkKX-0004bO-DA
 for minios-devel@lists.xen.org; Mon, 18 Feb 2019 14:55:37 +0000
X-Inumbo-ID: 3ede23f0-338d-11e9-92b6-83a2805da52b
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 3ede23f0-338d-11e9-92b6-83a2805da52b;
 Mon, 18 Feb 2019 14:55:35 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id BAA3DF204F;
 Mon, 18 Feb 2019 15:55:34 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 44wc5V8wVJw3; Mon, 18 Feb 2019 15:55:34 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 80162F202E
 for <minios-devel@lists.xen.org>; Mon, 18 Feb 2019 15:55:32 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 18 Feb 2019 15:55:32 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Mon, 18 Feb 2019 15:54:32 +0100
Message-ID: <20190218145440.30580-15-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190218145440.30580-1-yuri.volchkov@neclab.eu>
References: <20190218145440.30580-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v4 14/22] lib/vfscore: add necessary
 field in vfscore_file
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: simon.kuenzer@neclab.eu, sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+ClJl
dmlld2VkLWJ5OiBTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4KLS0tCiBs
aWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZmlsZS5oIHwgNCArKysrCiAxIGZpbGUgY2hhbmdl
ZCwgNCBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNj
b3JlL2ZpbGUuaCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9maWxlLmgKaW5kZXggODRl
YjM1ZDcuLmI3MzIwY2MxIDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUv
ZmlsZS5oCisrKyBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9maWxlLmgKQEAgLTUzLDcg
KzUzLDExIEBAIHN0cnVjdCB2ZnNjb3JlX2ZvcHMgewogCiBzdHJ1Y3QgdmZzY29yZV9maWxlIHsK
IAlpbnQgZmQ7CisJaW50CQlmX2ZsYWdzOwkvKiBvcGVuIGZsYWdzICovCiAJaW50CQlmX2NvdW50
OwkvKiByZWZlcmVuY2UgY291bnQgKi8KKwlvZmZfdAkJZl9vZmZzZXQ7CS8qIGN1cnJlbnQgcG9z
aXRpb24gaW4gZmlsZSAqLworCXZvaWQJCSpmX2RhdGE7ICAgICAgICAvKiBmaWxlIGRlc2NyaXB0
b3Igc3BlY2lmaWMgZGF0YSAqLworCXN0cnVjdCBkZW50cnkgICAqZl9kZW50cnk7CiAJY29uc3Qg
c3RydWN0IHZmc2NvcmVfZm9wcyAqZm9wczsKIH07CiAKLS0gCjIuMTkuMgoKCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5n
IGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVu
cHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Feb 18 14:55:43 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 18 Feb 2019 14:55:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gvkKd-0004dS-SA; Mon, 18 Feb 2019 14:55:43 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=odxU=QZ=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gvkKc-0004d1-NO
 for minios-devel@lists.xen.org; Mon, 18 Feb 2019 14:55:42 +0000
X-Inumbo-ID: 406779d8-338d-11e9-9999-dbb94f38a331
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 406779d8-338d-11e9-9999-dbb94f38a331;
 Mon, 18 Feb 2019 14:55:38 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 53D3B104E84;
 Mon, 18 Feb 2019 15:55:37 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id MYpgH3FaM6o0; Mon, 18 Feb 2019 15:55:37 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 29A03104E83
 for <minios-devel@lists.xen.org>; Mon, 18 Feb 2019 15:55:35 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 18 Feb 2019 15:55:34 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Mon, 18 Feb 2019 15:54:33 +0100
Message-ID: <20190218145440.30580-16-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190218145440.30580-1-yuri.volchkov@neclab.eu>
References: <20190218145440.30580-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v4 15/22] lib/vfscore: remove
 _KERNEL ifdefs
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: simon.kuenzer@neclab.eu, sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

QWxsIHRoaXMgY29kZSBpcyBydW5uaW5nIGluIGtlcm5lbAoKU2lnbmVkLW9mZi1ieTogWXVyaSBW
b2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+ClJldmlld2VkLWJ5OiBTaW1vbiBLdWVu
emVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4KLS0tCiBsaWIvdmZzY29yZS9pbmNsdWRlL3Zm
c2NvcmUvbW91bnQuaCB8IDUgLS0tLS0KIGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9k
ZS5oIHwgMyAtLS0KIDIgZmlsZXMgY2hhbmdlZCwgOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg
YS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvbW91bnQuaCBiL2xpYi92ZnNjb3JlL2luY2x1
ZGUvdmZzY29yZS9tb3VudC5oCmluZGV4IDhlMTEzNGM2Li5jNzJmNTM4YiAxMDA2NDQKLS0tIGEv
bGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmgKKysrIGIvbGliL3Zmc2NvcmUvaW5j
bHVkZS92ZnNjb3JlL21vdW50LmgKQEAgLTM3LDggKzM3LDYgQEAKICNpbmNsdWRlIDx1ay9saXN0
Lmg+CiAjaW5jbHVkZSA8dmZzY29yZS92bm9kZS5oPgogCi0jaWZkZWYgX0tFUk5FTAotCiAvKgog
ICogTW91bnQgZGF0YQogICovCkBAIC01Niw3ICs1NCw2IEBAIHN0cnVjdCBtb3VudCB7CiAJZnNp
ZF90IAkJbV9mc2lkOyAJLyogaWQgdGhhdCB1bmlxdWVseSBpZGVudGlmaWVzIHRoZSBmcyAqLwog
fTsKIAotI2VuZGlmCiAKIC8qCiAgKiBNb3VudCBmbGFncy4KQEAgLTk1LDggKzkyLDYgQEAgc3Ry
dWN0IG1vdW50IHsKICAqLwogI2RlZmluZQlNTlRfVklTRkxBR01BU0sJMHgwMDAwZmZmZgogCi0j
aWZkZWYgX0tFUk5FTAotCiAvKgogICogRmlsZXN5c3RlbSB0eXBlIHN3aXRjaCB0YWJsZS4KICAq
LwpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Zub2RlLmggYi9saWIv
dmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUuaAppbmRleCAwOGI4ZTU2Mi4uZmUxNGJjODIg
MTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5oCisrKyBiL2xp
Yi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5oCkBAIC0zMyw4ICszMyw2IEBACiAjaWZu
ZGVmIF9TWVNfVk5PREVfSF8KICNkZWZpbmUgX1NZU19WTk9ERV9IXwogCi0jaWZkZWYgX0tFUk5F
TAotCiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KICNpbmNsdWRlIDxkaXJlbnQuaD4KIApAQCAtMjYx
LDYgKzI1OSw1IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB2bm9kZV9wYWdlcl9zZXRzaXplKHN0cnVj
dCB2bm9kZSAqdnAsIG9mZl90IHNpemUpCiAJdnAtPnZfc2l6ZSA9IHNpemU7CiB9CiAKLSNlbmRp
ZgogCiAjZW5kaWYgLyogIV9TWVNfVk5PREVfSF8gKi8KLS0gCjIuMTkuMgoKCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5n
IGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVu
cHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Feb 18 14:55:44 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 18 Feb 2019 14:55:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gvkKd-0004dX-Tr; Mon, 18 Feb 2019 14:55:43 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=odxU=QZ=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gvkKc-0004d8-UQ
 for minios-devel@lists.xen.org; Mon, 18 Feb 2019 14:55:42 +0000
X-Inumbo-ID: 41f7fe08-338d-11e9-a853-93349fede4b7
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 41f7fe08-338d-11e9-a853-93349fede4b7;
 Mon, 18 Feb 2019 14:55:40 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id E0D6BF204F;
 Mon, 18 Feb 2019 15:55:39 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id BtgWwSdPaHH8; Mon, 18 Feb 2019 15:55:39 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id B511FF202E
 for <minios-devel@lists.xen.org>; Mon, 18 Feb 2019 15:55:37 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 18 Feb 2019 15:55:37 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Mon, 18 Feb 2019 15:54:34 +0100
Message-ID: <20190218145440.30580-17-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190218145440.30580-1-yuri.volchkov@neclab.eu>
References: <20190218145440.30580-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v4 16/22] lib/vfscore: introduce
 fdclose
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: simon.kuenzer@neclab.eu, sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+ClJl
dmlld2VkLWJ5OiBTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4KLS0tCiBs
aWIvdmZzY29yZS9tYWluLmMgfCAxNCArKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDE0
IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9tYWluLmMgYi9saWIvdmZz
Y29yZS9tYWluLmMKaW5kZXggMTE2NGIzMGIuLjRkM2Y4M2NjIDEwMDY0NAotLS0gYS9saWIvdmZz
Y29yZS9tYWluLmMKKysrIGIvbGliL3Zmc2NvcmUvbWFpbi5jCkBAIC0yMDUsNiArMjA1LDIwIEBA
IFRSQUNFUE9JTlQodHJhY2VfdmZzX2Nsb3NlLCAiJWQiLCBpbnQpOwogVFJBQ0VQT0lOVCh0cmFj
ZV92ZnNfY2xvc2VfcmV0LCAiIik7CiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19jbG9zZV9lcnIsICIl
ZCIsIGludCk7CiAKK2ludCBmZGNsb3NlKGludCBmZCkKK3sKKwlzdHJ1Y3QgdmZzY29yZV9maWxl
ICpmcDsKKworCWZwID0gdmZzY29yZV9nZXRfZmlsZShmZCk7CisJaWYgKCFmcCkKKwkJcmV0dXJu
IEVCQURGOworCisJdmZzY29yZV9wdXRfZmQoZmQpOworCWZkcm9wKGZwKTsKKworCXJldHVybiAw
OworfQorCiBpbnQgY2xvc2UoaW50IGZkKQogewogCWludCBlcnJvcjsKLS0gCjIuMTkuMgoKCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZl
bCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8v
bGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Feb 18 14:55:45 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 18 Feb 2019 14:55:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gvkKe-0004eF-VS; Mon, 18 Feb 2019 14:55:44 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=odxU=QZ=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gvkKe-0004di-2U
 for minios-devel@lists.xen.org; Mon, 18 Feb 2019 14:55:44 +0000
X-Inumbo-ID: 43728de3-338d-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 43728de3-338d-11e9-bc90-bc764e045a96;
 Mon, 18 Feb 2019 14:55:43 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 6E8FD104E84;
 Mon, 18 Feb 2019 15:55:42 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 1A_cRODmtSAn; Mon, 18 Feb 2019 15:55:42 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 4D3B8104E83
 for <minios-devel@lists.xen.org>; Mon, 18 Feb 2019 15:55:40 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 18 Feb 2019 15:55:40 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Mon, 18 Feb 2019 15:54:35 +0100
Message-ID: <20190218145440.30580-18-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190218145440.30580-1-yuri.volchkov@neclab.eu>
References: <20190218145440.30580-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v4 17/22] lib/vfscore: add necessary
 internal prototypes
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: simon.kuenzer@neclab.eu, sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+ClJl
dmlld2VkLWJ5OiBTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4KLS0tCiBs
aWIvdmZzY29yZS92ZnMuaCB8IDkgKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRp
b25zKCspCgpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvdmZzLmggYi9saWIvdmZzY29yZS92ZnMu
aAppbmRleCA5NGZlODlhNS4uNGExY2ZhOWYgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL3Zmcy5o
CisrKyBiL2xpYi92ZnNjb3JlL3Zmcy5oCkBAIC0xNDYsNiArMTQ2LDE1IEBAIHZvaWQgZHJlZihz
dHJ1Y3QgZGVudHJ5ICpkcCk7CiB2b2lkIGRyZWxlKHN0cnVjdCBkZW50cnkgKmRwKTsKIHZvaWQg
ZGVudHJ5X2luaXQodm9pZCk7CiAKK2ludCB2ZnNfY2xvc2Uoc3RydWN0IHZmc2NvcmVfZmlsZSAq
ZnApOworaW50IHZmc19yZWFkKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwLCBzdHJ1Y3QgdWlvICp1
aW8sIGludCBmbGFncyk7CitpbnQgdmZzX3dyaXRlKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwLCBz
dHJ1Y3QgdWlvICp1aW8sIGludCBmbGFncyk7CitpbnQgdmZzX2lvY3RsKHN0cnVjdCB2ZnNjb3Jl
X2ZpbGUgKmZwLCB1bnNpZ25lZCBsb25nIGNvbSwgdm9pZCAqZGF0YSk7CitpbnQgdmZzX3N0YXQo
c3RydWN0IHZmc2NvcmVfZmlsZSAqZnAsIHN0cnVjdCBzdGF0ICpzdCk7CisKK2ludCBmZ2V0KGlu
dCBmZCwgc3RydWN0IHZmc2NvcmVfZmlsZSAqKm91dF9mcCk7CitpbnQgZmRhbGxvYyhzdHJ1Y3Qg
dmZzY29yZV9maWxlICpmcCwgaW50ICpuZXdmZCk7CisKICNpZmRlZiBERUJVR19WRlMKIHZvaWQJ
IHZub2RlX2R1bXAodm9pZCk7CiB2b2lkCSB2ZnNjb3JlX21vdW50X2R1bXAodm9pZCk7Ci0tIAoy
LjE5LjIKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpN
aW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9y
ZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRl
dmVs

From minios-devel-bounces@lists.xenproject.org Mon Feb 18 14:55:48 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 18 Feb 2019 14:55:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gvkKi-0004fQ-0c; Mon, 18 Feb 2019 14:55:48 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=odxU=QZ=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gvkKh-0004fA-BU
 for minios-devel@lists.xen.org; Mon, 18 Feb 2019 14:55:47 +0000
X-Inumbo-ID: 4506ea85-338d-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 4506ea85-338d-11e9-bc90-bc764e045a96;
 Mon, 18 Feb 2019 14:55:45 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 0D437F204F;
 Mon, 18 Feb 2019 15:55:45 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id GC5dnLrsCu_5; Mon, 18 Feb 2019 15:55:44 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id D8E33F202E
 for <minios-devel@lists.xen.org>; Mon, 18 Feb 2019 15:55:42 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 18 Feb 2019 15:55:42 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Mon, 18 Feb 2019 15:54:36 +0100
Message-ID: <20190218145440.30580-19-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190218145440.30580-1-yuri.volchkov@neclab.eu>
References: <20190218145440.30580-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v4 18/22] lib/vfscore: fix compiler
 complains
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: simon.kuenzer@neclab.eu, sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+ClJl
dmlld2VkLWJ5OiBTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4KLS0tCiBs
aWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUuaCB8ICAyICstCiBsaWIvdmZzY29yZS9t
YWluLmMgICAgICAgICAgICAgICAgICB8IDI0ICsrKysrKysrKysrKy0tLS0tLS0tLS0tLQogbGli
L3Zmc2NvcmUvc3lzY2FsbHMuYyAgICAgICAgICAgICAgfCAgOCArKysrLS0tLQogbGliL3Zmc2Nv
cmUvdGFzay5jICAgICAgICAgICAgICAgICAgfCAgMiArLQogbGliL3Zmc2NvcmUvdm5vZGUuYyAg
ICAgICAgICAgICAgICAgfCAgOCArKysrLS0tLQogNSBmaWxlcyBjaGFuZ2VkLCAyMiBpbnNlcnRp
b25zKCspLCAyMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9pbmNsdWRl
L3Zmc2NvcmUvdm5vZGUuaCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5oCmlu
ZGV4IGZlMTRiYzgyLi4xMzQ4ZjU3OSAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92
ZnNjb3JlL3Zub2RlLmgKKysrIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Zub2RlLmgK
QEAgLTE2Nyw3ICsxNjcsNyBAQCB0eXBlZGVmCWludCAoKnZub3BfdHJ1bmNhdGVfdCkJKHN0cnVj
dCB2bm9kZSAqLCBvZmZfdCk7CiB0eXBlZGVmCWludCAoKnZub3BfbGlua190KSAgICAgIChzdHJ1
Y3Qgdm5vZGUgKiwgc3RydWN0IHZub2RlICosIGNoYXIgKik7CiB0eXBlZGVmIGludCAoKnZub3Bf
Y2FjaGVfdCkgKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgdmZzY29yZV9maWxlICosIHN0cnVjdCB1
aW8gKik7CiB0eXBlZGVmIGludCAoKnZub3BfZmFsbG9jYXRlX3QpIChzdHJ1Y3Qgdm5vZGUgKiwg
aW50LCBvZmZfdCwgb2ZmX3QpOwotdHlwZWRlZiBpbnQgKCp2bm9wX3JlYWRsaW5rX3QpICAoc3Ry
dWN0IHZub2RlICosIHN0cnVjdCB1aW8gKik7Cit0eXBlZGVmIHNzaXplX3QgKCp2bm9wX3JlYWRs
aW5rX3QpICAoc3RydWN0IHZub2RlICosIHN0cnVjdCB1aW8gKik7CiB0eXBlZGVmIGludCAoKnZu
b3Bfc3ltbGlua190KSAgIChzdHJ1Y3Qgdm5vZGUgKiwgY2hhciAqLCBjaGFyICopOwogCiAvKgpk
aWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvbWFpbi5jIGIvbGliL3Zmc2NvcmUvbWFpbi5jCmluZGV4
IDRkM2Y4M2NjLi5kYjUwZTRjZCAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvbWFpbi5jCisrKyBi
L2xpYi92ZnNjb3JlL21haW4uYwpAQCAtMjQxLDggKzI0MSw3IEBAIFRSQUNFUE9JTlQodHJhY2Vf
dmZzX21rbm9kLCAiXCIlc1wiIDAlMG8gMHgleCIsIGNvbnN0IGNoYXIqLCBtb2RlX3QsIGRldl90
KTsKIFRSQUNFUE9JTlQodHJhY2VfdmZzX21rbm9kX3JldCwgIiIpOwogVFJBQ0VQT0lOVCh0cmFj
ZV92ZnNfbWtub2RfZXJyLCAiJWQiLCBpbnQpOwogCi0KLWludCBfX3hta25vZChpbnQgdmVyLCBj
b25zdCBjaGFyICpwYXRobmFtZSwgbW9kZV90IG1vZGUsIGRldl90ICpkZXYpCitpbnQgX194bWtu
b2QoaW50IHZlciwgY29uc3QgY2hhciAqcGF0aG5hbWUsIG1vZGVfdCBtb2RlLCBkZXZfdCAqZGV2
IF9fdW51c2VkKQogewogCVVLX0FTU0VSVCh2ZXIgPT0gMCk7IC8vIE9uIHg4Ni02NCBMaW51eCwg
X01LTk9EX1ZFUl9MSU5VWCBpcyAwLgogCXN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOwpAQCAt
NTM2LDcgKzUzNSw3IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2ZzdGF0LCAiJWQgJXAiLCBpbnQs
IHN0cnVjdCBzdGF0Kik7CiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19mc3RhdF9yZXQsICIiKTsKIFRS
QUNFUE9JTlQodHJhY2VfdmZzX2ZzdGF0X2VyciwgIiVkIiwgaW50KTsKIAotaW50IF9fZnhzdGF0
KGludCB2ZXIsIGludCBmZCwgc3RydWN0IHN0YXQgKnN0KQoraW50IF9fZnhzdGF0KGludCB2ZXIg
X191bnVzZWQsIGludCBmZCwgc3RydWN0IHN0YXQgKnN0KQogewogCXN0cnVjdCB2ZnNjb3JlX2Zp
bGUgKmZwOwogCWludCBlcnJvcjsKQEAgLTU2MywxNCArNTYyLDE0IEBAIGludCBfX2Z4c3RhdChp
bnQgdmVyLCBpbnQgZmQsIHN0cnVjdCBzdGF0ICpzdCkKIAogTEZTNjQoX19meHN0YXQpOwogCi1p
bnQgZnN0YXQoaW50IGZkLCBzdHJ1Y3Qgc3RhdCAqc3QpCitpbnQgZnN0YXQoaW50IGZkIF9fdW51
c2VkLCBzdHJ1Y3Qgc3RhdCAqc3QpCiB7CiAJcmV0dXJuIF9fZnhzdGF0KDEsIGZkLCBzdCk7CiB9
CiAKIExGUzY0KGZzdGF0KTsKIAotaW50IF9fZnhzdGF0YXQoaW50IHZlciwgaW50IGRpcmZkLCBj
b25zdCBjaGFyICpwYXRobmFtZSwgc3RydWN0IHN0YXQgKnN0LAoraW50IF9fZnhzdGF0YXQoaW50
IHZlciBfX3VudXNlZCwgaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwgc3RydWN0IHN0
YXQgKnN0LAogCQlpbnQgZmxhZ3MpCiB7CiAJaWYgKGZsYWdzICYgQVRfU1lNTElOS19OT0ZPTExP
VykgewpAQCAtMTEwOCw3ICsxMTA3LDcgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfc3RhdCwgIlwi
JXNcIiAlcCIsIGNvbnN0IGNoYXIqLCBzdHJ1Y3Qgc3RhdCopOwogVFJBQ0VQT0lOVCh0cmFjZV92
ZnNfc3RhdF9yZXQsICIiKTsKIFRSQUNFUE9JTlQodHJhY2VfdmZzX3N0YXRfZXJyLCAiJWQiLCBp
bnQpOwogCi1pbnQgX194c3RhdChpbnQgdmVyLCBjb25zdCBjaGFyICpwYXRobmFtZSwgc3RydWN0
IHN0YXQgKnN0KQoraW50IF9feHN0YXQoaW50IHZlciBfX3VudXNlZCwgY29uc3QgY2hhciAqcGF0
aG5hbWUsIHN0cnVjdCBzdGF0ICpzdCkKIHsKIAlzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsK
IAljaGFyIHBhdGhbUEFUSF9NQVhdOwpAQCAtMTE0NCw3ICsxMTQzLDggQEAgTEZTNjQoc3RhdCk7
CiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19sc3RhdCwgInBhdGhuYW1lPSVzLCBzdGF0PSVwIiwgY29u
c3QgY2hhciosIHN0cnVjdCBzdGF0Kik7CiBUUkFDRVBPSU5UKHRyYWNlX3Zmc19sc3RhdF9yZXQs
ICIiKTsKIFRSQUNFUE9JTlQodHJhY2VfdmZzX2xzdGF0X2VyciwgImVycm5vPSVkIiwgaW50KTsK
LWludCBfX2x4c3RhdChpbnQgdmVyLCBjb25zdCBjaGFyICpwYXRobmFtZSwgc3RydWN0IHN0YXQg
KnN0KQorCitpbnQgX19seHN0YXQoaW50IHZlciBfX3VudXNlZCwgY29uc3QgY2hhciAqcGF0aG5h
bWUsIHN0cnVjdCBzdGF0ICpzdCkKIHsKIAlzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKIAlj
aGFyIHBhdGhbUEFUSF9NQVhdOwpAQCAtMTkxNyw3ICsxOTE3LDcgQEAgaW50IGZjaG1vZChpbnQg
ZmQsIG1vZGVfdCBtb2RlKQogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZmNob3duLCAiXCIlZFwiICVk
ICVkIiwgaW50LCB1aWRfdCwgZ2lkX3QpOwogVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZmNob3duX3Jl
dCwgIiIpOwogCi1pbnQgZmNob3duKGludCBmZCwgdWlkX3Qgb3duZXIsIGdpZF90IGdyb3VwKQor
aW50IGZjaG93bihpbnQgZmQgX191bnVzZWQsIHVpZF90IG93bmVyIF9fdW51c2VkLCBnaWRfdCBn
cm91cCBfX3VudXNlZCkKIHsKIAl0cmFjZV92ZnNfZmNob3duKGZkLCBvd25lciwgZ3JvdXApOwog
CVdBUk5fU1RVQkJFRCgpOwpAQCAtMTkyNSwxMyArMTkyNSwxMyBAQCBpbnQgZmNob3duKGludCBm
ZCwgdWlkX3Qgb3duZXIsIGdpZF90IGdyb3VwKQogCXJldHVybiAwOwogfQogCi1pbnQgY2hvd24o
Y29uc3QgY2hhciAqcGF0aCwgdWlkX3Qgb3duZXIsIGdpZF90IGdyb3VwKQoraW50IGNob3duKGNv
bnN0IGNoYXIgKnBhdGggX191bnVzZWQsIHVpZF90IG93bmVyIF9fdW51c2VkLCBnaWRfdCBncm91
cCBfX3VudXNlZCkKIHsKIAlXQVJOX1NUVUJCRUQoKTsKIAlyZXR1cm4gMDsKIH0KIAotaW50IGxj
aG93bihjb25zdCBjaGFyICpwYXRoLCB1aWRfdCBvd25lciwgZ2lkX3QgZ3JvdXApCitpbnQgbGNo
b3duKGNvbnN0IGNoYXIgKnBhdGggX191bnVzZWQsIHVpZF90IG93bmVyIF9fdW51c2VkLCBnaWRf
dCBncm91cCBfX3VudXNlZCkKIHsKIAlXQVJOX1NUVUJCRUQoKTsKIAlyZXR1cm4gMDsKQEAgLTIw
MjEsNyArMjAyMSw3IEBAIHNzaXplX3Qgc2VuZGZpbGUoaW50IG91dF9mZCwgaW50IGluX2ZkLCBv
ZmZfdCAqX29mZnNldCwgc2l6ZV90IGNvdW50KQogTEZTNjQoc2VuZGZpbGUpOwogI2VuZGlmCiAK
LU5PX1NZUyhpbnQgZmNobW9kYXQoaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwgbW9k
ZV90IG1vZGUsIGludCBmbGFncykpOworTk9fU1lTKGludCBmY2htb2RhdChpbnQgZGlyZmQgX191
bnVzZWQsIGNvbnN0IGNoYXIgKnBhdGhuYW1lIF9fdW51c2VkLCBtb2RlX3QgbW9kZSBfX3VudXNl
ZCwgaW50IGZsYWdzIF9fdW51c2VkKSk7CiAKIG1vZGVfdCB1bWFzayhtb2RlX3QgbmV3bWFzaykK
IHsKQEAgLTIwMzQsNyArMjAzNCw3IEBAIGZzX25vb3Aodm9pZCkKIAlyZXR1cm4gMDsKIH0KIAot
aW50IGNocm9vdChjb25zdCBjaGFyICpwYXRoKQoraW50IGNocm9vdChjb25zdCBjaGFyICpwYXRo
IF9fdW51c2VkKQogewogCVdBUk5fU1RVQkJFRCgpOwogCWVycm5vID0gRU5PU1lTOwpkaWZmIC0t
Z2l0IGEvbGliL3Zmc2NvcmUvc3lzY2FsbHMuYyBiL2xpYi92ZnNjb3JlL3N5c2NhbGxzLmMKaW5k
ZXggZmEwNDk4ZTcuLmVlN2Y3ZmRlIDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9zeXNjYWxscy5j
CisrKyBiL2xpYi92ZnNjb3JlL3N5c2NhbGxzLmMKQEAgLTM5NCw3ICszOTQsNyBAQCBzeXNfZnN5
bmMoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnApCiAJc3RydWN0IHZub2RlICp2cDsKIAlpbnQgZXJy
b3I7CiAKLQlEUFJJTlRGKFZGU0RCX1NZU0NBTEwsICgic3lzX2ZzeW5jOiBmcD0leFxuIiwgZnAp
KTsKKwlEUFJJTlRGKFZGU0RCX1NZU0NBTEwsICgic3lzX2ZzeW5jOiBmcD0lcFxuIiwgZnApKTsK
IAogCWlmICghZnAtPmZfZGVudHJ5KQogCQlyZXR1cm4gRUlOVkFMOwpAQCAtNDExLDcgKzQxMSw3
IEBAIHN5c19mc3RhdChzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCwgc3RydWN0IHN0YXQgKnN0KQog
ewogCWludCBlcnJvciA9IDA7CiAKLQlEUFJJTlRGKFZGU0RCX1NZU0NBTEwsICgic3lzX2ZzdGF0
OiBmcD0leFxuIiwgZnApKTsKKwlEUFJJTlRGKFZGU0RCX1NZU0NBTEwsICgic3lzX2ZzdGF0OiBm
cD0lcFxuIiwgZnApKTsKIAogCWVycm9yID0gdmZzX3N0YXQoZnAsIHN0KTsKIApAQCAtNDU4LDcg
KzQ1OCw3IEBAIHN5c19yZWFkZGlyKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwLCBzdHJ1Y3QgZGly
ZW50ICpkaXIpCiAJc3RydWN0IHZub2RlICpkdnA7CiAJaW50IGVycm9yOwogCi0JRFBSSU5URihW
RlNEQl9TWVNDQUxMLCAoInN5c19yZWFkZGlyOiBmcD0leFxuIiwgZnApKTsKKwlEUFJJTlRGKFZG
U0RCX1NZU0NBTEwsICgic3lzX3JlYWRkaXI6IGZwPSVwXG4iLCBmcCkpOwogCiAJaWYgKCFmcC0+
Zl9kZW50cnkpCiAJCXJldHVybiBFTk9URElSOwpAQCAtMTQzMyw3ICsxNDMzLDcgQEAgc3lzX2Zh
bGxvY2F0ZShzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCwgaW50IG1vZGUsIG9mZl90IG9mZnNldCwg
b2ZmX3QgbGVuKQogCWludCBlcnJvcjsKIAlzdHJ1Y3Qgdm5vZGUgKnZwOwogCi0JRFBSSU5URihW
RlNEQl9TWVNDQUxMLCAoInN5c19mYWxsb2NhdGU6IGZwPSV4IiwgZnApKTsKKwlEUFJJTlRGKFZG
U0RCX1NZU0NBTEwsICgic3lzX2ZhbGxvY2F0ZTogZnA9JXAiLCBmcCkpOwogCiAJaWYgKCFmcC0+
Zl9kZW50cnkgfHwgIShmcC0+Zl9mbGFncyAmIEZXUklURSkpIHsKIAkJcmV0dXJuIEVCQURGOwpk
aWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvdGFzay5jIGIvbGliL3Zmc2NvcmUvdGFzay5jCmluZGV4
IDc2MzViZDdhLi5lNjU4YmRhYSAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvdGFzay5jCisrKyBi
L2xpYi92ZnNjb3JlL3Rhc2suYwpAQCAtMTI5LDcgKzEyOSw3IEBAIHBhdGhfY29udihjaGFyICp3
ZCwgY29uc3QgY2hhciAqY3BhdGgsIGNoYXIgKmZ1bGwpCiAgKiBAYWNjOiBhY2Nlc3MgbW9kZQog
ICovCiBpbnQKLXRhc2tfY29udihzdHJ1Y3QgdGFzayAqdCwgY29uc3QgY2hhciAqY3BhdGgsIGlu
dCBhY2MsIGNoYXIgKmZ1bGwpCit0YXNrX2NvbnYoc3RydWN0IHRhc2sgKnQsIGNvbnN0IGNoYXIg
KmNwYXRoLCBpbnQgYWNjIF9fdW51c2VkLCBjaGFyICpmdWxsKQogewogCWludCByYzsKIApkaWZm
IC0tZ2l0IGEvbGliL3Zmc2NvcmUvdm5vZGUuYyBiL2xpYi92ZnNjb3JlL3Zub2RlLmMKaW5kZXgg
ZTllMDQwYWEuLmQ3MDc0NmM5IDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS92bm9kZS5jCisrKyBi
L2xpYi92ZnNjb3JlL3Zub2RlLmMKQEAgLTE3OSw3ICsxNzksNyBAQCB2ZnNjb3JlX3ZnZXQoc3Ry
dWN0IG1vdW50ICptcCwgdWludDY0X3QgaW5vLCBzdHJ1Y3Qgdm5vZGUgKip2cHApCiAKIAkqdnBw
ID0gTlVMTDsKIAotCURQUklOVEYoVkZTREJfVk5PREUsICgidmdldCAlTEx1XG4iLCBpbm8pKTsK
KwlEUFJJTlRGKFZGU0RCX1ZOT0RFLCAoInZmc2NvcmVfdmdldCAlbGx1XG4iLCAodW5zaWduZWQg
bG9uZyBsb25nKSBpbm8pKTsKIAogCVZOT0RFX0xPQ0soKTsKIApAQCAtMzAwLDcgKzMwMCw3IEBA
IHZyZWxlKHN0cnVjdCB2bm9kZSAqdnApCiAgKiBSZW1vdmUgYWxsIHZub2RlIGluIHRoZSB2bm9k
ZSB0YWJsZSBmb3IgdW5tb3VudC4KICAqLwogdm9pZAotdmZsdXNoKHN0cnVjdCBtb3VudCAqbXAp
Cit2Zmx1c2goc3RydWN0IG1vdW50ICptcCBfX3VudXNlZCkKIHsKIH0KIApAQCAtNTEyLDcgKzUx
Miw3IEBAIHZub2RlX2luaXQodm9pZCkKIAkJVUtfSU5JVF9MSVNUX0hFQUQoJnZub2RlX3RhYmxl
W2ldKTsKIH0KIAotdm9pZCB2bl9hZGRfbmFtZShzdHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3QgZGVu
dHJ5ICpkcCkKK3ZvaWQgdm5fYWRkX25hbWUoc3RydWN0IHZub2RlICp2cCBfX3VudXNlZCwgc3Ry
dWN0IGRlbnRyeSAqZHApCiB7CiAJLyogVE9ETzogUmUtZW5hYmxlIHRoaXMgY2hlY2sgd2hlbiBw
cmVlbXB0aW9uIGFuZC9vciBzbXAgaXMKIAkgKiBoZXJlICovCkBAIC01MjAsNyArNTIwLDcgQEAg
dm9pZCB2bl9hZGRfbmFtZShzdHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3QgZGVudHJ5ICpkcCkKIAl1
a19saXN0X2FkZCgmZHAtPmRfbmFtZXNfbGluaywgJnZwLT52X25hbWVzKTsKIH0KIAotdm9pZCB2
bl9kZWxfbmFtZShzdHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3QgZGVudHJ5ICpkcCkKK3ZvaWQgdm5f
ZGVsX25hbWUoc3RydWN0IHZub2RlICp2cCBfX3VudXNlZCwgc3RydWN0IGRlbnRyeSAqZHApCiB7
CiAJLyogVE9ETzogUmUtZW5hYmxlIHRoaXMgY2hlY2sgd2hlbiBwcmVlbXB0aW9uIGFuZC9vciBz
bXAgaXMKIAkgKiBoZXJlICovCi0tIAoyLjE5LjIKCgpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21h
aWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Feb 18 14:55:52 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 18 Feb 2019 14:55:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gvkKm-0004gU-2F; Mon, 18 Feb 2019 14:55:52 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=odxU=QZ=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gvkKk-0004gE-Qa
 for minios-devel@lists.xen.org; Mon, 18 Feb 2019 14:55:50 +0000
X-Inumbo-ID: 468c6896-338d-11e9-8ee7-9b682d8620b4
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 468c6896-338d-11e9-8ee7-9b682d8620b4;
 Mon, 18 Feb 2019 14:55:48 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id A3E89104E88;
 Mon, 18 Feb 2019 15:55:47 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id Xl6zHUFodpHU; Mon, 18 Feb 2019 15:55:47 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 7283C104E86
 for <minios-devel@lists.xen.org>; Mon, 18 Feb 2019 15:55:45 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 18 Feb 2019 15:55:45 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Mon, 18 Feb 2019 15:54:37 +0100
Message-ID: <20190218145440.30580-20-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190218145440.30580-1-yuri.volchkov@neclab.eu>
References: <20190218145440.30580-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v4 19/22] lib/vfscore: add main
 constructor
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: simon.kuenzer@neclab.eu, sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+ClJl
dmlld2VkLWJ5OiBTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4KLS0tCiBs
aWIvdmZzY29yZS9tYWluLmMgfCAxMSArKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDExIGlu
c2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9tYWluLmMgYi9saWIvdmZzY29y
ZS9tYWluLmMKaW5kZXggZGI1MGU0Y2QuLjI4NWRkYWYyIDEwMDY0NAotLS0gYS9saWIvdmZzY29y
ZS9tYWluLmMKKysrIGIvbGliL3Zmc2NvcmUvbWFpbi5jCkBAIC0yMDQwLDMgKzIwNDAsMTQgQEAg
aW50IGNocm9vdChjb25zdCBjaGFyICpwYXRoIF9fdW51c2VkKQogCWVycm5vID0gRU5PU1lTOwog
CXJldHVybiAtMTsKIH0KKworc3RhdGljIHN0cnVjdCB0YXNrIF9tYWluX3Rhc2tfaW1wbDsKK19f
Y29uc3RydWN0b3Igc3RhdGljIHZvaWQgdmZzY29yZV9pbml0KHZvaWQpCit7CisJbWVtc2V0KCZf
bWFpbl90YXNrX2ltcGwsIDAsIHNpemVvZihfbWFpbl90YXNrX2ltcGwpKTsKKwlzdHJjcHkoX21h
aW5fdGFza19pbXBsLnRfY3dkLCAiLyIpOworCW1haW5fdGFzayA9ICZfbWFpbl90YXNrX2ltcGw7
CisKKwl2bm9kZV9pbml0KCk7CisJbG9va3VwX2luaXQoKTsKK30KLS0gCjIuMTkuMgoKCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBt
YWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlz
dHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Feb 18 14:55:53 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 18 Feb 2019 14:55:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gvkKn-0004gz-3a; Mon, 18 Feb 2019 14:55:53 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=odxU=QZ=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gvkKm-0004gR-1F
 for minios-devel@lists.xen.org; Mon, 18 Feb 2019 14:55:52 +0000
X-Inumbo-ID: 48116ef0-338d-11e9-9a52-5b7a3ad5163d
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 48116ef0-338d-11e9-9a52-5b7a3ad5163d;
 Mon, 18 Feb 2019 14:55:51 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 274B9F204F;
 Mon, 18 Feb 2019 15:55:50 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id pS59rvDYq5a8; Mon, 18 Feb 2019 15:55:50 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id F38C0F202E
 for <minios-devel@lists.xen.org>; Mon, 18 Feb 2019 15:55:47 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 18 Feb 2019 15:55:47 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Mon, 18 Feb 2019 15:54:38 +0100
Message-ID: <20190218145440.30580-21-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190218145440.30580-1-yuri.volchkov@neclab.eu>
References: <20190218145440.30580-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v4 20/22] lib/nolibc: add prototypes
 for functions from vfscore
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: simon.kuenzer@neclab.eu, sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+ClJl
dmlld2VkLWJ5OiBTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4KLS0tCiBs
aWIvbm9saWJjL2luY2x1ZGUvdW5pc3RkLmggfCA1ICsrKysrCiAxIGZpbGUgY2hhbmdlZCwgNSBp
bnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvbGliL25vbGliYy9pbmNsdWRlL3VuaXN0ZC5oIGIv
bGliL25vbGliYy9pbmNsdWRlL3VuaXN0ZC5oCmluZGV4IDA5ZTdkN2ExLi5lM2MwOGE3NSAxMDA2
NDQKLS0tIGEvbGliL25vbGliYy9pbmNsdWRlL3VuaXN0ZC5oCisrKyBiL2xpYi9ub2xpYmMvaW5j
bHVkZS91bmlzdGQuaApAQCAtNTEsNiArNTEsMTEgQEAgZXh0ZXJuICJDIiB7CiBpbnQgY2xvc2Uo
aW50IGZkKTsKIHNzaXplX3Qgd3JpdGUoaW50IGZkLCBjb25zdCB2b2lkICpidWYsIHNpemVfdCBj
b3VudCk7CiBzc2l6ZV90IHJlYWQoaW50IGZkLCB2b2lkICpidWYsIHNpemVfdCBjb3VudCk7Citp
bnQgZnN5bmMoaW50IGZkKTsKK2ludCBkdXAoaW50IG9sZGZkKTsKK2ludCBkdXAyKGludCBvbGRm
ZCwgaW50IG5ld2ZkKTsKK2ludCBkdXAzKGludCBvbGRmZCwgaW50IG5ld2ZkLCBpbnQgZmxhZ3Mp
OworaW50IHVubGluayhjb25zdCBjaGFyICpwYXRobmFtZSk7CiAjZW5kaWYKIAogI2lmZGVmIF9f
Y3BsdXNwbHVzCi0tIAoyLjE5LjIKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0
cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlz
dGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Feb 18 14:55:56 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 18 Feb 2019 14:55:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gvkKq-0004i5-54; Mon, 18 Feb 2019 14:55:56 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=odxU=QZ=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gvkKp-0004hj-B5
 for minios-devel@lists.xen.org; Mon, 18 Feb 2019 14:55:55 +0000
X-Inumbo-ID: 49a8fe8c-338d-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 49a8fe8c-338d-11e9-bc90-bc764e045a96;
 Mon, 18 Feb 2019 14:55:53 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id D3504104E85;
 Mon, 18 Feb 2019 15:55:52 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id TLkf-Tvg0_zD; Mon, 18 Feb 2019 15:55:52 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 88D0B104BE1
 for <minios-devel@lists.xen.org>; Mon, 18 Feb 2019 15:55:50 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 18 Feb 2019 15:55:50 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Mon, 18 Feb 2019 15:54:39 +0100
Message-ID: <20190218145440.30580-22-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190218145440.30580-1-yuri.volchkov@neclab.eu>
References: <20190218145440.30580-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v4 21/22] lib/vfscore: re-implement
 stdio and enable new code
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: simon.kuenzer@neclab.eu, sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+ClJl
dmlld2VkLWJ5OiBTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4KLS0tCiBs
aWIvdmZzY29yZS9Db25maWcudWsgICAgICAgICAgICAgIHwgIDEgKwogbGliL3Zmc2NvcmUvTWFr
ZWZpbGUudWsgICAgICAgICAgICB8ICA5ICsrKysKIGxpYi92ZnNjb3JlL2V4cG9ydHN5bXMudWsg
ICAgICAgICAgfCAyNyArKysrKysrKysrKwogbGliL3Zmc2NvcmUvZmlsZS5jICAgICAgICAgICAg
ICAgICB8IDYxICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGxpYi92ZnNjb3JlL2luY2x1ZGUv
dmZzY29yZS9maWxlLmggfCAgMiArLQogbGliL3Zmc2NvcmUvc3RkaW8uYyAgICAgICAgICAgICAg
ICB8IDczICsrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQogNiBmaWxlcyBjaGFuZ2VkLCA4
NSBpbnNlcnRpb25zKCspLCA4OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9saWIvdmZzY29y
ZS9Db25maWcudWsgYi9saWIvdmZzY29yZS9Db25maWcudWsKaW5kZXggNDlkNmRhYTEuLjZjZjZj
NjNhIDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9Db25maWcudWsKKysrIGIvbGliL3Zmc2NvcmUv
Q29uZmlnLnVrCkBAIC0zLDMgKzMsNCBAQCBjb25maWcgTElCVkZTQ09SRQogCWRlZmF1bHQgbgog
CXNlbGVjdCBMSUJOT0xJQkMgaWYgIUhBVkVfTElCQwogCXNlbGVjdCBMSUJVS0RFQlVHCisJc2Vs
ZWN0IExJQlVLTE9DSwpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvTWFrZWZpbGUudWsgYi9saWIv
dmZzY29yZS9NYWtlZmlsZS51awppbmRleCAwNjkzM2Q5Ni4uMWZkMzU4NTggMTAwNjQ0Ci0tLSBh
L2xpYi92ZnNjb3JlL01ha2VmaWxlLnVrCisrKyBiL2xpYi92ZnNjb3JlL01ha2VmaWxlLnVrCkBA
IC01LDUgKzUsMTQgQEAgQ0lOQ0xVREVTLXkgKz0gLUkkKExJQlZGU0NPUkVfQkFTRSkvaW5jbHVk
ZQogTElCVkZTQ09SRV9TUkNTLXkgKz0gJChMSUJWRlNDT1JFX0JBU0UpL2ZkLmMKIExJQlZGU0NP
UkVfU1JDUy15ICs9ICQoTElCVkZTQ09SRV9CQVNFKS9maWxlLmMKIExJQlZGU0NPUkVfU1JDUy15
ICs9ICQoTElCVkZTQ09SRV9CQVNFKS9zdGRpby5jCitMSUJWRlNDT1JFX1NSQ1MteSArPSAkKExJ
QlZGU0NPUkVfQkFTRSkvbW91bnQuYworTElCVkZTQ09SRV9TUkNTLXkgKz0gJChMSUJWRlNDT1JF
X0JBU0UpL3Zub2RlLmMKK0xJQlZGU0NPUkVfU1JDUy15ICs9ICQoTElCVkZTQ09SRV9CQVNFKS9k
ZW50cnkuYworTElCVkZTQ09SRV9TUkNTLXkgKz0gJChMSUJWRlNDT1JFX0JBU0UpL3N5c2NhbGxz
LmMKK0xJQlZGU0NPUkVfU1JDUy15ICs9ICQoTElCVkZTQ09SRV9CQVNFKS9tYWluLmMKK0xJQlZG
U0NPUkVfU1JDUy15ICs9ICQoTElCVkZTQ09SRV9CQVNFKS90YXNrLmMKK0xJQlZGU0NPUkVfU1JD
Uy15ICs9ICQoTElCVkZTQ09SRV9CQVNFKS9sb29rdXAuYworTElCVkZTQ09SRV9TUkNTLXkgKz0g
JChMSUJWRlNDT1JFX0JBU0UpL2ZvcHMuYworTElCVkZTQ09SRV9TUkNTLXkgKz0gJChMSUJWRlND
T1JFX0JBU0UpL3N1YnJfdWlvLmMKIAogRVhUUkFfTERfU0NSSVBULSQoQ09ORklHX0xJQlZGU0NP
UkUpICs9ICQoTElCVkZTQ09SRV9CQVNFKS9leHRyYS5sZApcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2V4cG9ydHN5bXMudWsgYi9saWIvdmZzY29y
ZS9leHBvcnRzeW1zLnVrCmluZGV4IDllMjI5YTExLi41NDM4YTY0YyAxMDA2NDQKLS0tIGEvbGli
L3Zmc2NvcmUvZXhwb3J0c3ltcy51aworKysgYi9saWIvdmZzY29yZS9leHBvcnRzeW1zLnVrCkBA
IC01LDMgKzUsMzAgQEAgdmZzY29yZV9nZXRfZmlsZQogY2xvc2UKIHdyaXRlCiByZWFkCitzeXNf
bW91bnQKK3Zmc2NvcmVfbnVsbG9wCit2ZnNjb3JlX3JlbGVhc2VfbXBfZGVudHJpZXMKK3Zmc2Nv
cmVfdmdldAordmZzY29yZV91aW9tb3ZlCit2ZnNjb3JlX3ZvcF9udWxsb3AKK3Zmc2NvcmVfdm9w
X2VpbnZhbAordmZzY29yZV92b3BfZXBlcm0KK3Zmc2NvcmVfdm9wX2Vyb2ZzCitvcGVuCit3cml0
ZQorY2xvc2UKK3JlYWQKK21rZGlyCitmc3luYworZnN0YXQKK3N0YXQKK2NobW9kCitkdXAKK2R1
cDIKK2R1cDMKK3Zmc2NvcmVfdWlvbW92ZQorc3lzX3N5bmMKK3Zmc2NvcmVfbW91bnRfZHVtcAor
c3lzX3Vtb3VudAorc3lzX3Vtb3VudDIKK3VubGluawpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUv
ZmlsZS5jIGIvbGliL3Zmc2NvcmUvZmlsZS5jCmluZGV4IDBmNmRmYTkzLi5lNTZmMTZkYyAxMDA2
NDQKLS0tIGEvbGliL3Zmc2NvcmUvZmlsZS5jCisrKyBiL2xpYi92ZnNjb3JlL2ZpbGUuYwpAQCAt
MzgsNjYgKzM4LDcgQEAKICNpbmNsdWRlIDx1ay9wcmludC5oPgogI2luY2x1ZGUgPHZmc2NvcmUv
ZmlsZS5oPgogI2luY2x1ZGUgPHVrL2Fzc2VydC5oPgotI2luY2x1ZGUgPHVrL2FyY2gvYXRvbWlj
Lmg+Ci0KLWludCBjbG9zZShpbnQgZmQpCi17Ci0Jc3RydWN0IHZmc2NvcmVfZmlsZSAqZmlsZSA9
IHZmc2NvcmVfZ2V0X2ZpbGUoZmQpOwotCi0JaWYgKCFmaWxlKSB7Ci0JCXVrX3ByX3dhcm4oIm5v
IHN1Y2ggZmlsZSBkZXNjcmlwdG9yOiAlZFxuIiwgZmQpOwotCQllcnJubyA9IEVCQURGOwotCQly
ZXR1cm4gLTE7Ci0JfQotCi0JaWYgKCFmaWxlLT5mb3BzLT5jbG9zZSkgewotCQllcnJubyA9IEVJ
TzsKLQkJcmV0dXJuIC0xOwotCX0KLQotCXJldHVybiBmaWxlLT5mb3BzLT5jbG9zZShmaWxlKTsK
LX0KLQotc3NpemVfdCB3cml0ZShpbnQgZmQsIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGNvdW50
KQotewotCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZpbGUgPSB2ZnNjb3JlX2dldF9maWxlKGZkKTsK
LQotCWlmICghZmlsZSkgewotCQl1a19wcl93YXJuKCJubyBzdWNoIGZpbGUgZGVzY3JpcHRvcjog
JWRcbiIsIGZkKTsKLQkJZXJybm8gPSBFQkFERjsKLQkJcmV0dXJuIC0xOwotCX0KLQotCWlmICgh
ZmlsZS0+Zm9wcy0+d3JpdGUpIHsKLQkJdWtfcHJfd2FybigiZmlsZSBkb2VzIG5vdCBoYXZlIHdy
aXRlIG9wOiAlZFxuIiwgZmQpOwotCQllcnJubyA9IEVJTlZBTDsKLQkJcmV0dXJuIC0xOwotCX0K
LQotCXJldHVybiBmaWxlLT5mb3BzLT53cml0ZShmaWxlLCBidWYsIGNvdW50KTsKLX0KLQotc3Np
emVfdCByZWFkKGludCBmZCwgdm9pZCAqYnVmLCBzaXplX3QgY291bnQpCi17Ci0Jc3RydWN0IHZm
c2NvcmVfZmlsZSAqZmlsZSA9IHZmc2NvcmVfZ2V0X2ZpbGUoZmQpOwotCi0JaWYgKCFmaWxlKSB7
Ci0JCXVrX3ByX3dhcm4oIm5vIHN1Y2ggZmlsZSBkZXNjcmlwdG9yOiAlZFxuIiwgZmQpOwotCQll
cnJubyA9IEVCQURGOwotCQlyZXR1cm4gLTE7Ci0JfQotCi0JaWYgKCFmaWxlLT5mb3BzLT5yZWFk
KSB7Ci0JCXVrX3ByX3dhcm4oImZpbGUgZG9lcyBub3QgaGF2ZSByZWFkIG9wOiAlZFxuIiwgZmQp
OwotCQllcnJubyA9IEVJTlZBTDsKLQkJcmV0dXJuIC0xOwotCX0KLQotCXJldHVybiBmaWxlLT5m
b3BzLT5yZWFkKGZpbGUsIGJ1ZiwgY291bnQpOwotfQotCi0vKiBUT0RPOiByZW1vdmUgc3R1YiAq
LwotI2RlZmluZSB2ZnNfY2xvc2UoZnApICgwKQorI2luY2x1ZGUgInZmcy5oIgogCiBpbnQgZmRy
b3Aoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnApCiB7CmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9p
bmNsdWRlL3Zmc2NvcmUvZmlsZS5oIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2ZpbGUu
aAppbmRleCBiNzMyMGNjMS4uN2Y0NWNhNzggMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2luY2x1
ZGUvdmZzY29yZS9maWxlLmgKKysrIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2ZpbGUu
aApAQCAtMzgsNiArMzgsNyBAQAogCiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8c3lz
L3R5cGVzLmg+CisjaW5jbHVkZSA8dmZzY29yZS9kZW50cnkuaD4KIAogI2lmZGVmIF9fY3BsdXNw
bHVzCiBleHRlcm4gIkMiIHsKQEAgLTU4LDcgKzU5LDYgQEAgc3RydWN0IHZmc2NvcmVfZmlsZSB7
CiAJb2ZmX3QJCWZfb2Zmc2V0OwkvKiBjdXJyZW50IHBvc2l0aW9uIGluIGZpbGUgKi8KIAl2b2lk
CQkqZl9kYXRhOyAgICAgICAgLyogZmlsZSBkZXNjcmlwdG9yIHNwZWNpZmljIGRhdGEgKi8KIAlz
dHJ1Y3QgZGVudHJ5ICAgKmZfZGVudHJ5OwotCWNvbnN0IHN0cnVjdCB2ZnNjb3JlX2ZvcHMgKmZv
cHM7CiB9OwogCiBpbnQgdmZzY29yZV9hbGxvY19mZCh2b2lkKTsKZGlmZiAtLWdpdCBhL2xpYi92
ZnNjb3JlL3N0ZGlvLmMgYi9saWIvdmZzY29yZS9zdGRpby5jCmluZGV4IGE5YmRmZDYxLi41ZjE1
ZWYyYSAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvc3RkaW8uYworKysgYi9saWIvdmZzY29yZS9z
dGRpby5jCkBAIC0zNCwyMyArMzQsMzcgQEAKICAqLwogCiAjaW5jbHVkZSA8dmZzY29yZS9maWxl
Lmg+CisjaW5jbHVkZSA8dmZzY29yZS9mcy5oPgogI2luY2x1ZGUgPHVrL3BsYXQvY29uc29sZS5o
PgogI2luY2x1ZGUgPHVrL2Vzc2VudGlhbHMuaD4KICNpbmNsdWRlIDx0ZXJtaW9zLmg+CisjaW5j
bHVkZSA8dmZzY29yZS92bm9kZS5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgogCiAvKiBPbmUgZnVu
Y3Rpb24gZm9yIHN0ZGVyciBhbmQgc3Rkb3V0ICovCi1zdGF0aWMgc3NpemVfdCBzdGRvdXRfd3Jp
dGUoc3RydWN0IHZmc2NvcmVfZmlsZSAqdmZzY29yZV9maWxlIF9fdW51c2VkLAotCQkJICAgIGNv
bnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGNvdW50KQorc3RhdGljIHNzaXplX3Qgc3RkaW9fd3JpdGUo
c3RydWN0IHZub2RlICp2cCBfX3VudXNlZCwKKwkJCSAgIHN0cnVjdCB1aW8gKnVpbywKKwkJCSAg
IGludCBpb2ZsYWcgX191bnVzZWQpCiB7Ci0JcmV0dXJuIHVrcGxhdF9jb3V0ayhidWYsIGNvdW50
KTsKKwlVS19BU1NFUlQoIXVpby0+dWlvX29mZnNldCk7CisJVUtfQVNTRVJUKHVpby0+dWlvX2lv
dmNudCA9PSAxKTsKKwlyZXR1cm4gdWtwbGF0X2NvdXRrKHVpby0+dWlvX2lvdi0+aW92X2Jhc2Us
IHVpby0+dWlvX2lvdi0+aW92X2xlbik7CiB9CiAKLXN0YXRpYyBzc2l6ZV90IHN0ZGluX3JlYWQo
c3RydWN0IHZmc2NvcmVfZmlsZSAqdmZzY29yZV9maWxlIF9fdW51c2VkLAotCQkJICB2b2lkICpf
YnVmLCBzaXplX3QgY291bnQpCitzdGF0aWMgc3NpemVfdCBzdGRpb19yZWFkKHN0cnVjdCB2bm9k
ZSAqdnAgX191bnVzZWQsCisJCSAgICAgIHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZpbGUgX191bnVz
ZWQsCisJCSAgICAgIHN0cnVjdCB1aW8gKnVpbywKKwkJICAgICAgaW50IGlvZmxhZyBfX3VudXNl
ZCkKIHsKIAlpbnQgYnl0ZXNfcmVhZDsKLQlzaXplX3QgYnl0ZXNfdG90YWwgPSAwOwotCWNoYXIg
KmJ1ZiA9IChjaGFyICopX2J1ZjsKKwlzaXplX3QgYnl0ZXNfdG90YWwgPSAwLCBjb3VudDsKKwlj
aGFyICpidWY7CisKKwlVS19BU1NFUlQoIXVpby0+dWlvX29mZnNldCk7CisJVUtfQVNTRVJUKHVp
by0+dWlvX2lvdmNudCA9PSAxKTsKKworCWJ1ZiA9IHVpby0+dWlvX2lvdi0+aW92X2Jhc2U7CisJ
Y291bnQgPSB1aW8tPnVpb19pb3YtPmlvdl9sZW47CiAKIAlkbyB7CiAJCXdoaWxlICgoYnl0ZXNf
cmVhZCA9IHVrcGxhdF9jaW5rKGJ1ZiwKQEAgLTYxLDggKzc1LDggQEAgc3RhdGljIHNzaXplX3Qg
c3RkaW5fcmVhZChzdHJ1Y3QgdmZzY29yZV9maWxlICp2ZnNjb3JlX2ZpbGUgX191bnVzZWQsCiAJ
CSooYnVmIC0gMSkgPSAqKGJ1ZiAtIDEpID09ICdccicgPwogCQkJCQknXG4nIDogKihidWYgLSAx
KTsKIAotCQlzdGRvdXRfd3JpdGUodmZzY29yZV9maWxlLCAoYnVmIC0gYnl0ZXNfcmVhZCksCi0J
CQkJYnl0ZXNfcmVhZCk7CisJCS8qIEVjaG8gdGhlIGlucHV0ICovCisJCXVrcGxhdF9jb3V0ayhi
dWYgLSBieXRlc19yZWFkLCBieXRlc19yZWFkKTsKIAkJYnl0ZXNfdG90YWwgKz0gYnl0ZXNfcmVh
ZDsKIAogCX0gd2hpbGUgKGJ5dGVzX3RvdGFsIDwgY291bnQgJiYgKihidWYgLSAxKSAhPSAnXG4n
CkBAIC03MSwzMyArODUsMzggQEAgc3RhdGljIHNzaXplX3Qgc3RkaW5fcmVhZChzdHJ1Y3QgdmZz
Y29yZV9maWxlICp2ZnNjb3JlX2ZpbGUgX191bnVzZWQsCiAJcmV0dXJuIGJ5dGVzX3RvdGFsOwog
fQogCi1zdGF0aWMgc3RydWN0IHZmc2NvcmVfZm9wcyBzdGRpbl9mb3BzID0gewotCS5yZWFkID0g
c3RkaW5fcmVhZCwKLX07CiAKLXN0YXRpYyBzdHJ1Y3QgdmZzY29yZV9mb3BzIHN0ZG91dF9mb3Bz
ID0gewotCS53cml0ZSA9IHN0ZG91dF93cml0ZSwKK3N0YXRpYyBzdHJ1Y3Qgdm5vcHMgc3RkaW9f
dm5vcHMgPSB7CisJLnZvcF93cml0ZSA9IHN0ZGlvX3dyaXRlLAorCS52b3BfcmVhZCA9IHN0ZGlv
X3JlYWQsCiB9OwogCi1zdGF0aWMgc3RydWN0IHZmc2NvcmVfZmlsZSAgc3RkaW5fZmlsZSA9IHsK
LQkuZmQgPSAwLAotCS5mb3BzID0gJnN0ZGluX2ZvcHMsCitzdGF0aWMgc3RydWN0IHZub2RlIHN0
ZGlvX3Zub2RlID0geworCS52X2lubyA9IDEsCisJLnZfb3AgPSAmc3RkaW9fdm5vcHMsCisJLnZf
bG9jayA9IFVLX01VVEVYX0lOSVRJQUxJWkVSKHN0ZGlvX3Zub2RlLnZfbG9jayksCisJLnZfcmVm
Y250ID0gMSwKIH07CiAKLXN0YXRpYyBzdHJ1Y3QgdmZzY29yZV9maWxlICBzdGRvdXRfZmlsZSA9
IHsKLQkuZmQgPSAxLAotCS5mb3BzID0gJnN0ZG91dF9mb3BzLAorc3RhdGljIHN0cnVjdCBkZW50
cnkgc3RkaW9fZGVudHJ5ID0geworCS5kX3Zub2RlID0gJnN0ZGlvX3Zub2RlLAogfTsKIAotc3Rh
dGljIHN0cnVjdCB2ZnNjb3JlX2ZpbGUgIHN0ZGVycl9maWxlID0gewotCS5mZCA9IDIsCi0JLmZv
cHMgPSAmc3Rkb3V0X2ZvcHMsCitzdGF0aWMgc3RydWN0IHZmc2NvcmVfZmlsZSAgc3RkaW9fZmls
ZSA9IHsKKwkuZmQgPSAxLAorCS5mX2ZsYWdzID0gRldSSVRFIHwgRlJFQUQsCisJLmZfZGVudHJ5
ID0gJnN0ZGlvX2RlbnRyeSwKKwkvKiByZWZlcmVuY2UgY291bnQgaXMgMiBiZWNhdXNlIGNsb3Nl
KDApIGlzIGEgdmFsaWQKKwkgKiBvcGVyYXRpb24uIEhvd2V2ZXIgaXQgaXMgbm90IHByb3Blcmx5
IGhhbmRsZWQgaW4gdGhlCisJICogY3VycmVudCBpbXBsZW1lbnRhdGlvbi4gKi8KKwkuZl9jb3Vu
dCA9IDIsCiB9OwogCi0KIHZvaWQgaW5pdF9zdGRpbyh2b2lkKQogewotCXZmc2NvcmVfaW5zdGFs
bF9mZCgwLCAmc3RkaW5fZmlsZSk7Ci0JdmZzY29yZV9pbnN0YWxsX2ZkKDEsICZzdGRvdXRfZmls
ZSk7Ci0JdmZzY29yZV9pbnN0YWxsX2ZkKDIsICZzdGRlcnJfZmlsZSk7CisJdmZzY29yZV9pbnN0
YWxsX2ZkKDAsICZzdGRpb19maWxlKTsKKwlpZiAoZHVwMigwLCAxKSAhPSAxKQorCQl1a19wcl9l
cnIoImZhaWxlZCB0byBkdXAgdG8gc3RkaW5cbiIpOworCWlmIChkdXAyKDAsIDIpICE9IDIpCisJ
CXVrX3ByX2VycigiZmFpbGVkIHRvIGR1cCB0byBzdGRlcnJcbiIpOwogfQotLSAKMi4xOS4yCgoK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRl
dmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Feb 18 14:55:59 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 18 Feb 2019 14:55:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gvkKt-0004jN-8C; Mon, 18 Feb 2019 14:55:59 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=odxU=QZ=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gvkKs-0004j1-A0
 for minios-devel@lists.xen.org; Mon, 18 Feb 2019 14:55:58 +0000
X-Inumbo-ID: 4b1ea536-338d-11e9-97e0-4b0e667d1099
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 4b1ea536-338d-11e9-97e0-4b0e667d1099;
 Mon, 18 Feb 2019 14:55:56 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 4C300F204F;
 Mon, 18 Feb 2019 15:55:55 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id xB_kxhaIkBzn; Mon, 18 Feb 2019 15:55:55 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 22721F202E
 for <minios-devel@lists.xen.org>; Mon, 18 Feb 2019 15:55:53 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 18 Feb 2019 15:55:52 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Mon, 18 Feb 2019 15:54:40 +0100
Message-ID: <20190218145440.30580-23-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190218145440.30580-1-yuri.volchkov@neclab.eu>
References: <20190218145440.30580-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v4 22/22] lib/vfscore: remove sys
 prefix from vfs api functions
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: simon.kuenzer@neclab.eu, sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

RnVjbnRpb25zIHN5cyhtb3VudHx1bW91bnR8dW1vdW50MnxzeW5jKSBhcmUgY29tcGxldGUgZnVu
Y3Rpb24KY2FsbHMuIFVzZXIgYXBwbGljYXRpb25zIHNob3VsZCB1c2UgdGhlbSBkaXJlY3RseSBh
bnl3YXlzLiBMZXQncwpyZW5hbWUgdGhlbSBhY2NvcmRpbmdseS4KClNpZ25lZC1vZmYtYnk6IFl1
cmkgVm9sY2hrb3YgPHl1cmkudm9sY2hrb3ZAbmVjbGFiLmV1PgpSZXZpZXdlZC1ieTogU2ltb24g
S3VlbnplciA8c2ltb24ua3VlbnplckBuZWNsYWIuZXU+Ci0tLQogbGliL25vbGliYy9pbmNsdWRl
L3VuaXN0ZC5oIHwgIDEgKwogbGliL3Zmc2NvcmUvZXhwb3J0c3ltcy51ayAgIHwgIDggKysrKy0t
LS0KIGxpYi92ZnNjb3JlL21vdW50LmMgICAgICAgICB8IDE0ICsrKysrKy0tLS0tLS0tCiBsaWIv
dmZzY29yZS92ZnMuaCAgICAgICAgICAgfCAgNSArLS0tLQogNCBmaWxlcyBjaGFuZ2VkLCAxMiBp
bnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9saWIvbm9saWJjL2lu
Y2x1ZGUvdW5pc3RkLmggYi9saWIvbm9saWJjL2luY2x1ZGUvdW5pc3RkLmgKaW5kZXggZTNjMDhh
NzUuLjk4ODFhYjViIDEwMDY0NAotLS0gYS9saWIvbm9saWJjL2luY2x1ZGUvdW5pc3RkLmgKKysr
IGIvbGliL25vbGliYy9pbmNsdWRlL3VuaXN0ZC5oCkBAIC01MSw2ICs1MSw3IEBAIGV4dGVybiAi
QyIgewogaW50IGNsb3NlKGludCBmZCk7CiBzc2l6ZV90IHdyaXRlKGludCBmZCwgY29uc3Qgdm9p
ZCAqYnVmLCBzaXplX3QgY291bnQpOwogc3NpemVfdCByZWFkKGludCBmZCwgdm9pZCAqYnVmLCBz
aXplX3QgY291bnQpOwordm9pZCBzeW5jKHZvaWQpOwogaW50IGZzeW5jKGludCBmZCk7CiBpbnQg
ZHVwKGludCBvbGRmZCk7CiBpbnQgZHVwMihpbnQgb2xkZmQsIGludCBuZXdmZCk7CmRpZmYgLS1n
aXQgYS9saWIvdmZzY29yZS9leHBvcnRzeW1zLnVrIGIvbGliL3Zmc2NvcmUvZXhwb3J0c3ltcy51
awppbmRleCA1NDM4YTY0Yy4uMTBmZWQ4MDYgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2V4cG9y
dHN5bXMudWsKKysrIGIvbGliL3Zmc2NvcmUvZXhwb3J0c3ltcy51awpAQCAtNSw3ICs1LDcgQEAg
dmZzY29yZV9nZXRfZmlsZQogY2xvc2UKIHdyaXRlCiByZWFkCi1zeXNfbW91bnQKK21vdW50CiB2
ZnNjb3JlX251bGxvcAogdmZzY29yZV9yZWxlYXNlX21wX2RlbnRyaWVzCiB2ZnNjb3JlX3ZnZXQK
QEAgLTI3LDggKzI3LDggQEAgZHVwCiBkdXAyCiBkdXAzCiB2ZnNjb3JlX3Vpb21vdmUKLXN5c19z
eW5jCitzeW5jCiB2ZnNjb3JlX21vdW50X2R1bXAKLXN5c191bW91bnQKLXN5c191bW91bnQyCit1
bW91bnQKK3Vtb3VudDIKIHVubGluawpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvbW91bnQuYyBi
L2xpYi92ZnNjb3JlL21vdW50LmMKaW5kZXggZDY3MzI2ZDMuLjVkMWFmNTAzIDEwMDY0NAotLS0g
YS9saWIvdmZzY29yZS9tb3VudC5jCisrKyBiL2xpYi92ZnNjb3JlL21vdW50LmMKQEAgLTEwNiw3
ICsxMDYsNyBAQCBpbnQgZGV2aWNlX2Nsb3NlKHN0cnVjdCBkZXZpY2UgKmRldikKIH0KIAogaW50
Ci1zeXNfbW91bnQoY29uc3QgY2hhciAqZGV2LCBjb25zdCBjaGFyICpkaXIsIGNvbnN0IGNoYXIg
KmZzbmFtZSwgaW50IGZsYWdzLCBjb25zdCB2b2lkICpkYXRhKQorbW91bnQoY29uc3QgY2hhciAq
ZGV2LCBjb25zdCBjaGFyICpkaXIsIGNvbnN0IGNoYXIgKmZzbmFtZSwgaW50IGZsYWdzLCBjb25z
dCB2b2lkICpkYXRhKQogewogCWNvbnN0IHN0cnVjdCB2ZnNjb3JlX2ZzX3R5cGUgKmZzOwogCXN0
cnVjdCBtb3VudCAqbXA7CkBAIC0xMzUsNyArMTM1LDcgQEAgc3lzX21vdW50KGNvbnN0IGNoYXIg
KmRldiwgY29uc3QgY2hhciAqZGlyLCBjb25zdCBjaGFyICpmc25hbWUsIGludCBmbGFncywgY29u
c3QKIAkvLyBXZSBuZWVkIHRvIGF2b2lkIHRoZSBzaXR1YXRpb24gd2hlcmUgYWZ0ZXIgd2UgYWxy
ZWFkeSB2ZXJpZmllZCB0aGF0CiAJLy8gdGhlIG1vdW50IHBvaW50IGlzIGZyZWUsIGJ1dCBiZWZv
cmUgd2UgYWN0dWFsbHkgYWRkIGl0IHRvIG1vdW50X2xpc3QsCiAJLy8gYW5vdGhlciBjb25jdXJy
ZW50IG1vdW50IGFkZHMgaXQuIFNvIHdlIHVzZSBhIG5ldyBtdXRleCB0byBlbnN1cmUKLQkvLyB0
aGF0IG9ubHkgb25lIHN5c19tb3VudCgpIHJ1bnMgYXQgYSB0aW1lLiBXZSBjYW5ub3QgcmV1c2Ug
dGhlIGV4aXN0aW5nCisJLy8gdGhhdCBvbmx5IG9uZSBtb3VudCgpIHJ1bnMgYXQgYSB0aW1lLiBX
ZSBjYW5ub3QgcmV1c2UgdGhlIGV4aXN0aW5nCiAJLy8gbW91bnRfbG9jayBmb3IgdGhpcyBwdXJw
b3NlOiBJZiB3ZSB0YWtlIG1vdW50X2xvY2sgYW5kIHRoZW4gZG8KIAkvLyBsb29rdXBzLCB0aGlz
IGlzIGxvY2sgb3JkZXIgaW52ZXJzaW9uIGFuZCBjYW4gcmVzdWx0IGluIGRlYWRsb2NrLgogCkBA
IC0yNTIsNyArMjUyLDcgQEAgdmZzY29yZV9yZWxlYXNlX21wX2RlbnRyaWVzKHN0cnVjdCBtb3Vu
dCAqbXApCiB9CiAKIGludAotc3lzX3Vtb3VudDIoY29uc3QgY2hhciAqcGF0aCwgaW50IGZsYWdz
KQordW1vdW50Mihjb25zdCBjaGFyICpwYXRoLCBpbnQgZmxhZ3MpCiB7CiAJc3RydWN0IG1vdW50
ICptcCwgKnRtcDsKIAlpbnQgZXJyb3IsIHBhdGhsZW47CkBAIC0zMDUsOSArMzA1LDkgQEAgZm91
bmQ6CiB9CiAKIGludAotc3lzX3Vtb3VudChjb25zdCBjaGFyICpwYXRoKQordW1vdW50KGNvbnN0
IGNoYXIgKnBhdGgpCiB7Ci0JcmV0dXJuIHN5c191bW91bnQyKHBhdGgsIDApOworCXJldHVybiB1
bW91bnQyKHBhdGgsIDApOwogfQogCiAjaWYgMApAQCAtMzYwLDggKzM2MCw3IEBAIHN5c19waXZv
dF9yb290KGNvbnN0IGNoYXIgKm5ld19yb290LCBjb25zdCBjaGFyICpwdXRfb2xkKQogfQogI2Vu
ZGlmCiAKLWludAotc3lzX3N5bmModm9pZCkKK3ZvaWQgc3luYyh2b2lkKQogewogCXN0cnVjdCBt
b3VudCAqbXA7CiAJdWtfbXV0ZXhfbG9jaygmbW91bnRfbG9jayk7CkBAIC0zNzQsNyArMzczLDYg
QEAgc3lzX3N5bmModm9pZCkKIAliaW9fc3luYygpOwogI2VuZGlmCiAJdWtfbXV0ZXhfdW5sb2Nr
KCZtb3VudF9sb2NrKTsKLQlyZXR1cm4gMDsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL2xpYi92ZnNj
b3JlL3Zmcy5oIGIvbGliL3Zmc2NvcmUvdmZzLmgKaW5kZXggNGExY2ZhOWYuLjgxYTYxZDc1IDEw
MDY0NAotLS0gYS9saWIvdmZzY29yZS92ZnMuaAorKysgYi9saWIvdmZzY29yZS92ZnMuaApAQCAt
MTExLDExICsxMTEsOCBAQCBpbnQgIHN5c191dGltZW5zYXQoaW50IGRpcmZkLCBjb25zdCBjaGFy
ICpwYXRobmFtZSwKIGludCAgc3lzX2Z1dGltZW5zKGludCBmZCwgY29uc3Qgc3RydWN0IHRpbWVz
cGVjIHRpbWVzWzJdKTsKIGludCAgc3lzX2ZhbGxvY2F0ZShzdHJ1Y3QgdmZzY29yZV9maWxlICpm
cCwgaW50IG1vZGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4pOwogCi1pbnQJIHN5c19tb3Vu
dChjb25zdCBjaGFyICpkZXYsIGNvbnN0IGNoYXIgKmRpciwgY29uc3QgY2hhciAqZnNuYW1lLCBp
bnQgZmxhZ3MsIGNvbnN0IHZvaWQgKmRhdGEpOwotaW50CSBzeXNfdW1vdW50Mihjb25zdCBjaGFy
ICpwYXRoLCBpbnQgZmxhZ3MpOwotaW50CSBzeXNfdW1vdW50KGNvbnN0IGNoYXIgKnBhdGgpOwog
aW50CSBzeXNfcGl2b3Rfcm9vdChjb25zdCBjaGFyICpuZXdfcm9vdCwgY29uc3QgY2hhciAqb2xk
X3B1dCk7Ci1pbnQJIHN5c19zeW5jKHZvaWQpOwordm9pZAkgc3luYyh2b2lkKTsKIGludAkgc3lz
X2NobW9kKGNvbnN0IGNoYXIgKnBhdGgsIG1vZGVfdCBtb2RlKTsKIGludAkgc3lzX2ZjaG1vZChp
bnQgZmQsIG1vZGVfdCBtb2RlKTsKIAotLSAKMi4xOS4yCgoKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5p
b3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9y
Zy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Feb 18 15:04:24 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 18 Feb 2019 15:04:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gvkT1-0005Rs-TF; Mon, 18 Feb 2019 15:04:23 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=G8G1=QZ=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1gvkT0-0005Rn-E7
 for minios-devel@lists.xen.org; Mon, 18 Feb 2019 15:04:22 +0000
X-Inumbo-ID: 76a7c83a-338e-11e9-a24d-a306f4e150a9
Received: from queen.nlehd.de (unknown [195.37.154.80])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id 76a7c83a-338e-11e9-a24d-a306f4e150a9;
 Mon, 18 Feb 2019 15:04:18 +0000 (UTC)
Received: from c414.ant-net (c414.ant-net [192.168.0.156])
 by queen.nlehd.de (Postfix) with ESMTP id 2532840AE2;
 Mon, 18 Feb 2019 16:04:19 +0100 (CET)
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: minios-devel@lists.xen.org
Date: Mon, 18 Feb 2019 16:04:17 +0100
Message-Id: <20190218150417.1353-1-simon.kuenzer@neclab.eu>
X-Mailer: git-send-email 2.11.0
Subject: [Minios-devel] [UNIKRAFT PATCH] lib/nolibc: Provide stdbool.h
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: florian.schmidt@neclab.eu, Simon Kuenzer <simon.kuenzer@neclab.eu>,
 sharan.santhanam@neclab.eu, yuri.volchkov@neclab.eu
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SW50cm9kdWNlIGEgbWluaW1hbCBgc3RkYm9vbC5oYCBoZWFkZXIgdGhhdCBwcm92aWRlcyBkZWZp
bml0aW9ucwpvZiBgYm9vbGAsIGB0cnVlYCwgYW5kIGBmYWxzZWAuCgpTaWduZWQtb2ZmLWJ5OiBT
aW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4KLS0tCiBsaWIvbm9saWJjL2lu
Y2x1ZGUvc3RkYm9vbC5oIHwgNTUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCA1NSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAx
MDA2NDQgbGliL25vbGliYy9pbmNsdWRlL3N0ZGJvb2wuaAoKZGlmZiAtLWdpdCBhL2xpYi9ub2xp
YmMvaW5jbHVkZS9zdGRib29sLmggYi9saWIvbm9saWJjL2luY2x1ZGUvc3RkYm9vbC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi45YzdkZTU5OAotLS0gL2Rldi9udWxsCisr
KyBiL2xpYi9ub2xpYmMvaW5jbHVkZS9zdGRib29sLmgKQEAgLTAsMCArMSw1NSBAQAorLyogU1BE
WC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLworLyoKKyAqIEF1dGhvcnM6IFNp
bW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1PgorICoKKyAqCisgKiBDb3B5cmln
aHQgKGMpIDIwMTksIE5FQyBMYWJvcmF0b3JpZXMgRXVyb3BlIEdtYkgsIE5FQyBDb3Jwb3JhdGlv
bi4KKyAqICAgICAgICAgICAgICAgICAgICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogICAgdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTICJBUyBJUyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisg
KiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIg
T1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKiBU
SElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgor
ICovCisKKyNpZm5kZWYgX19TVERCT09MX0hfXworI2RlZmluZSBfX1NUREJPT0xfSF9fCisKKyNp
ZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworI2RlZmluZSBib29sIF9C
b29sCisKKyNkZWZpbmUgdHJ1ZSAoMSkKKyNkZWZpbmUgZmFsc2UgKDApCisKKyNkZWZpbmUgX19i
b29sX3RydWVfZmFsc2VfYXJlX2RlZmluZWQgKDEpCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQor
I2VuZGlmCisKKyNlbmRpZiAvKiBfX1NUREJPT0xfSF9fICovCi0tIAoyLjExLjAKCgpfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFp
bGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3Rz
LnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Feb 18 17:22:05 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 18 Feb 2019 17:22:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gvmcF-0001Uj-JD; Mon, 18 Feb 2019 17:22:03 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=9RzE=QZ=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1gvmcE-0001Ue-Nw
 for minios-devel@lists.xen.org; Mon, 18 Feb 2019 17:22:02 +0000
X-Inumbo-ID: b1bde127-33a1-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id b1bde127-33a1-11e9-bc90-bc764e045a96;
 Mon, 18 Feb 2019 17:21:58 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 50020104E5A;
 Mon, 18 Feb 2019 18:21:57 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id kR46oG9EccRV; Mon, 18 Feb 2019 18:21:57 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 1DB33104E1B
 for <minios-devel@lists.xen.org>; Mon, 18 Feb 2019 18:21:55 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 18 Feb 2019 18:21:54
 +0100
To: Simon Kuenzer <simon.kuenzer@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190218143223.23963-1-simon.kuenzer@neclab.eu>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <a6c4a069-be73-7da4-dd47-7d44afc225c6@neclab.eu>
Date: Mon, 18 Feb 2019 18:21:54 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190218143223.23963-1-simon.kuenzer@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT/LWIP PATCH] sockets: Adopt to updated
 vfscore
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: yuri.volchkov@neclab.eu
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gU2ltb24sCgpQbGVhc2UgZmluZCB0aGUgcmV2aWV3IGNvbW1lbnQgaW5saW5lLgoKVGhh
bmtzICYgUmVnYXJkcwpTaGFyYW4KCk9uIDIvMTgvMTkgMzozMiBQTSwgU2ltb24gS3VlbnplciB3
cm90ZToKPiBBZG9wdHMgdGhlIHNvY2tldHMgZ2x1ZSBpbXBsZW1lbnRhdGlvbiB0byB0aGUgdXBk
YXRlZCB2ZnNjb3JlIGxpYnJhcnkuCj4gCj4gU2lnbmVkLW9mZi1ieTogU2ltb24gS3VlbnplciA8
c2ltb24ua3VlbnplckBuZWNsYWIuZXU+Cj4gLS0tCj4gICBpbmNsdWRlL2x3aXBvcHRzLmggfCAg
MTAgKysrKwo+ICAgc29ja2V0cy5jICAgICAgICAgIHwgMTMyICsrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tCj4gICAyIGZpbGVzIGNoYW5nZWQsIDEw
MiBpbnNlcnRpb25zKCspLCA0MCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvaW5jbHVk
ZS9sd2lwb3B0cy5oIGIvaW5jbHVkZS9sd2lwb3B0cy5oCj4gaW5kZXggYzk0YzIzZC4uYzcyYzE2
MSAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL2x3aXBvcHRzLmgKPiArKysgYi9pbmNsdWRlL2x3aXBv
cHRzLmgKPiBAQCAtMTk0LDYgKzE5NCwxNiBAQCB2b2lkIHN5c19mcmVlKHZvaWQgKnB0cik7Cj4g
ICAjZGVmaW5lIEZEX1NFVAo+ICAgI2VuZGlmCj4gICAKPiArLyogU3RvcCBsd2lwIHRvIHByb3Zp
ZGUgaWNvdmVjICovCj4gKyNpbmNsdWRlIDxzeXMvdWlvLmg+Cj4gKwo+ICsvKgo+ICsgKiBXZSBu
ZWVkIHRvIHN0b3AgbHdpcCBpbnRyb2R1Y2luZyBgc3RydWN0IGlvdmVjYCBiZWNhdXNlIGl0IGlz
IHByb3ZpZGVkIGJ5Cj4gKyAqIG91ciBsaWJjIGFscmVhZHkuIFRoZSBvbmx5IHdheSBsd2lwIGFs
bG93cyB1cyB0byBkbyB0aGlzIGlzIHRvIGRlZmluZSBpb3ZlYwo+ICsgKiBhcyBpb3ZlYy4gVGhp
cyBrZWVwcyBkZXBlbmRpbmcgZGVmaW5pdGlvbnMgb2YgbHdpcCBzdGlsbCB3b3JraW5nLgo+ICsg
Ki8KPiArI2RlZmluZSBpb3ZlYyBpb3ZlYwo+ICsKPiAgIC8qCj4gICAgKiBkaXNhYmxlIEJTRC1z
dHlsZSBzb2NrZXQgaW50ZXJmYWNlCj4gICAgKiBXZSB3aWxsIHByb3ZpZGUgdGhlIGxheWVyIHdp
dGggc29ja2V0LmN8dW5pa3JhZnQKPiBkaWZmIC0tZ2l0IGEvc29ja2V0cy5jIGIvc29ja2V0cy5j
CkluIGZ1bmN0aW9uczogYWNjZXB0LCBiaW5kLCBzaHV0ZG93biwgZ2V0cGVlcm5hbWUsIGdldHNv
Y2tuYW1lLCAKZ2V0c29ja29wdCwgc2V0c29ja29wdCwgY29ubmVjdCwgbGlzdGVuLCByZWN2LCBy
ZWN2ZnJvbSwgc2VuZCwgc2VuZG1zZywKc2VuZHRvCgp3ZSB1c2UgdGhlIGZ1bmN0aW9uIGNhbGwg
dGhlIGZ1bmN0aW9uIHNvY2tfbmV0X2ZpbGVfZ2V0IHdoaWNoIHVzZXMgCnZmc2NvcmVfZ2V0X2Zp
bGUgdG8gb2J0YWluIHRoZSB2ZnNjb3JlX2ZpbGUuIFRoZSB2ZnNjb3JlX2dldF9maWxlIHVzZXMg
YSAKcmVmZXJlbmNlIGNvdW50aW5nIHRvIGluY3JlbWVudCB0aGUgdXNhZ2Ugb2YgdGhlIHZmc2Nv
cmUgZmlsZS4gU28gd2UgCndpbGwgaGF2ZSB0byByZWxlYXNlIHRoZSByZWZlcmVuY2UgY291bnRp
bmcgY29ycmVzcG9uZGluZyB0byBvdXIgdmZzIApmaWxlIGRlc2NyaXB0b3IgYXQgdGhlIGVuZCBv
ZiBhbGwgdGhlc2UgZnVuY3Rpb25zLiBQcm9iYWJseSB3ZSBuZWVkIHRvIAphZGQgYW4gZmRyb3Ag
Y2FsbCB0byB0aGVzZSBmdW5jdGlvbnMuIFRoaXMgaXMgcHJvYmFibHkgY2F1c2luZyBzb21lIApt
ZW1vcnkgbGVha3MuCgoKPiBpbmRleCBiZGYyMWFkLi5mZDZkNjFhIDEwMDY0NAo+IC0tLSBhL3Nv
Y2tldHMuYwo+ICsrKyBiL3NvY2tldHMuYwo+IEBAIC0zNiw2ICszNiw4IEBACj4gICAvKiBuZXR3
b3JrIHN0dWIgY2FsbHMgKi8KPiAgICNpbmNsdWRlIDxzeXMvdGltZS5oPgo+ICAgI2luY2x1ZGUg
PHZmc2NvcmUvZmlsZS5oPgo+ICsjaW5jbHVkZSA8dmZzY29yZS9mcy5oPgo+ICsjaW5jbHVkZSA8
dmZzY29yZS92bm9kZS5oPgo+ICAgI2luY2x1ZGUgPHVrL2FsbG9jLmg+Cj4gICAjaW5jbHVkZSA8
dWsvZXNzZW50aWFscy5oPgo+ICAgI2luY2x1ZGUgPHVrL2VycnB0ci5oPgo+IEBAIC02OCw5OSAr
NzAsMTQ5IEBAIEVYSVQ6Cj4gICAJcmV0dXJuIGZpbGU7Cj4gICB9Cj4gICAKPiAtc3RhdGljIGlu
dCBzb2NrX2ZkX2FsbG9jKHN0cnVjdCB2ZnNjb3JlX2ZvcHMgKmZvcHMsIGludCBzb2NrX2ZkKQo+
ICtzdGF0aWMgaW50IHNvY2tfZmRfYWxsb2Moc3RydWN0IHZub3BzICp2X29wLCBpbnQgc29ja19m
ZCkKPiAgIHsKPiAgIAlpbnQgcmV0ID0gMDsKPiAgIAlpbnQgdmZzX2ZkOwo+ICAgCXN0cnVjdCBz
b2NrX25ldF9maWxlICpmaWxlID0gTlVMTDsKPiArCXN0cnVjdCBkZW50cnkgKnNfZGVudHJ5Owo+
ICsJc3RydWN0IHZub2RlICpzX3Zub2RlOwo+ICAgCj4gLQkvKiBBbGxvY2F0ZSBmaWxlIGRlc2Ny
aXB0b3IgKi8KPiArCS8qIFJlc2VydmUgZmlsZSBkZXNjcmlwdG9yIG51bWJlciAqLwo+ICAgCXZm
c19mZCA9IHZmc2NvcmVfYWxsb2NfZmQoKTsKPiAgIAlpZiAodmZzX2ZkIDwgMCkgewo+ICAgCQly
ZXQgPSAtRU5GSUxFOwo+IC0JCUxXSVBfREVCVUdGKFNPQ0tFVFNfREVCVUcsICgiZmFpbGVkIHRv
IGFsbG9jYXRlIHNvY2tldCBmZFxuIikpOwo+IC0JCWdvdG8gRVhJVDsKPiArCQlMV0lQX0RFQlVH
RihTT0NLRVRTX0RFQlVHLAo+ICsJCQkgICAgKCJGYWlsZWQgdG8gYWxsb2NhdGUgZmlsZSBkZXNj
cmlwdG9yIG51bWJlclxuIikpOwo+ICsJCWdvdG8gRVJSX0VYSVQ7Cj4gICAJfQo+ICAgCj4gLQlm
aWxlID0gdWtfbWFsbG9jKHVrX2FsbG9jX2dldF9kZWZhdWx0KCksIHNpemVvZigqZmlsZSkpOwo+
ICsJLyogQWxsb2NhdGUgZmlsZSwgZGVudHJ5LCBhbmQgdm5vZGUgKi8KPiArCWZpbGUgPSB1a19j
YWxsb2ModWtfYWxsb2NfZ2V0X2RlZmF1bHQoKSwgMSwgc2l6ZW9mKCpmaWxlKSk7Cj4gICAJaWYg
KCFmaWxlKSB7Cj4gICAJCXJldCA9IC1FTk9NRU07Cj4gICAJCUxXSVBfREVCVUdGKFNPQ0tFVFNf
REVCVUcsCj4gLQkJCSAgICAoImZhaWxlZCB0byBhbGxvY2F0ZSBzb2NrZXQgZmQ6IG5vIG1lbVxu
IikpOwo+IC0JCWdvdG8gVUtfTUVNX0FMTE9DX0VSUjsKPiArCQkJICAgICgiRmFpbGVkIHRvIGFs
bG9jYXRlIHNvY2tldCBmaWxlOiBPdXQgb2YgbWVtb3J5XG4iKSk7Cj4gKwkJZ290byBFUlJfTUFM
TE9DX0ZJTEU7Cj4gICAJfQo+IC0JZmlsZS0+dmZzY29yZV9maWxlLmZvcHMgPSBmb3BzOwo+ICsJ
c19kZW50cnkgPSB1a19jYWxsb2ModWtfYWxsb2NfZ2V0X2RlZmF1bHQoKSwgMSwgc2l6ZW9mKCpz
X2RlbnRyeSkpOwo+ICsJaWYgKCFzX2RlbnRyeSkgewo+ICsJCXJldCA9IC1FTk9NRU07Cj4gKwkJ
TFdJUF9ERUJVR0YoU09DS0VUU19ERUJVRywKPiArCQkJICAgICgiRmFpbGVkIHRvIGFsbG9jYXRl
IHNvY2tldCBkZW50cnk6IE91dCBvZiBtZW1vcnlcbiIpKTsKPiArCQlnb3RvIEVSUl9NQUxMT0Nf
REVOVFJZOwo+ICsJfQo+ICsJc192bm9kZSA9IHVrX2NhbGxvYyh1a19hbGxvY19nZXRfZGVmYXVs
dCgpLCAxLCBzaXplb2YoKnNfdm5vZGUpKTsKPiArCWlmICghc192bm9kZSkgewo+ICsJCXJldCA9
IC1FTk9NRU07Cj4gKwkJTFdJUF9ERUJVR0YoU09DS0VUU19ERUJVRywKPiArCQkJICAgICgiRmFp
bGVkIHRvIGFsbG9jYXRlIHNvY2tldCB2bm9kZTogT3V0IG9mIG1lbW9yeVxuIikpOwo+ICsJCWdv
dG8gRVJSX01BTExPQ19WTk9ERTsKPiArCX0KPiArCj4gKwkvKiBQdXQgdGhpbmdzIHRvZ2V0aGVy
LCBhbmQgZmlsbCBvdXQgbmVjZXNzYXJ5IGZpZWxkcyAqLwo+ICsJZmlsZS0+dmZzY29yZV9maWxl
LmZkID0gdmZzX2ZkOwo+ICsJZmlsZS0+dmZzY29yZV9maWxlLmZfZmxhZ3MgPSBGV1JJVEUgfCBG
UkVBRDsKPiArCWZpbGUtPnZmc2NvcmVfZmlsZS5mX2NvdW50ID0gMTsKPiArCWZpbGUtPnZmc2Nv
cmVfZmlsZS5mX2RlbnRyeSA9IHNfZGVudHJ5Owo+ICsKPiArCXNfZGVudHJ5LT5kX3Zub2RlID0g
c192bm9kZTsKPiArCj4gKwlzX3Zub2RlLT52X29wID0gdl9vcDsKPiArCXVrX211dGV4X2luaXQo
JnNfdm5vZGUtPnZfbG9jayk7Cj4gKwlzX3Zub2RlLT52X3JlZmNudCA9IDE7Cj4gKwlzX3Zub2Rl
LT52X2RhdGEgPSBmaWxlOwo+ICsKPiAgIAlmaWxlLT5zb2NrX2ZkID0gc29ja19mZDsKPiAtCUxX
SVBfREVCVUdGKFNPQ0tFVFNfREVCVUcsICgiYWxsb2NhdGVkIHNvY2tldCAlZCAoJXgpXG4iLAo+
ICsJTFdJUF9ERUJVR0YoU09DS0VUU19ERUJVRywgKCJBbGxvY2F0ZWQgc29ja2V0ICVkICgleClc
biIsCj4gICAJCQkJICAgIGZpbGUtPnZmc2NvcmVfZmlsZS5mZCwKPiAgIAkJCQkgICAgZmlsZS0+
c29ja19mZCkpOwo+ICsKPiAgIAkvKiBTdG9yaW5nIHRoZSBpbmZvcm1hdGlvbiB3aXRoaW4gdGhl
IHZmcyBzdHJ1Y3R1cmUgKi8KPiAtCXZmc2NvcmVfaW5zdGFsbF9mZCh2ZnNfZmQsICZmaWxlLT52
ZnNjb3JlX2ZpbGUpOwo+IC0JcmV0ID0gdmZzX2ZkOwo+IC1FWElUOgo+IC0JcmV0dXJuIHJldDsK
PiArCXJldCA9IHZmc2NvcmVfaW5zdGFsbF9mZCh2ZnNfZmQsICZmaWxlLT52ZnNjb3JlX2ZpbGUp
Owo+ICsJaWYgKHJldCkgewo+ICsJCUxXSVBfREVCVUdGKFNPQ0tFVFNfREVCVUcsCj4gKwkJCSAg
ICAoIkZhaWxlZCB0byBpbnN0YWxsIHNvY2tldCBmZFxuIikpOwo+ICsJCWdvdG8gRVJSX1ZGU19J
TlNUQUxMOwo+ICsJfQo+ICsKPiArCS8qIFJldHVybiBmaWxlIGRlc2NyaXB0b3Igb2Ygb3VyIHNv
Y2tldCAqLwo+ICsJcmV0dXJuIHZmc19mZDsKPiAgIAo+IC1VS19NRU1fQUxMT0NfRVJSOgo+ICtF
UlJfVkZTX0lOU1RBTEw6Cj4gKwl1a19mcmVlKHVrX2FsbG9jX2dldF9kZWZhdWx0KCksIHNfdm5v
ZGUpOwo+ICtFUlJfTUFMTE9DX1ZOT0RFOgo+ICsJdWtfZnJlZSh1a19hbGxvY19nZXRfZGVmYXVs
dCgpLCBzX2RlbnRyeSk7Cj4gK0VSUl9NQUxMT0NfREVOVFJZOgo+ICsJdWtfZnJlZSh1a19hbGxv
Y19nZXRfZGVmYXVsdCgpLCBmaWxlKTsKPiArRVJSX01BTExPQ19GSUxFOgo+ICAgCXZmc2NvcmVf
cHV0X2ZkKHZmc19mZCk7Cj4gLQlnb3RvIEVYSVQ7Cj4gK0VSUl9FWElUOgo+ICsJVUtfQVNTRVJU
KHJldCA8IDApOwo+ICsJcmV0dXJuIHJldDsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgaW50IHNvY2tf
bmV0X2Nsb3NlKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKnZmc2NvcmVfZmlsZSkKPiArc3RhdGljIGlu
dCBzb2NrX25ldF9jbG9zZShzdHJ1Y3Qgdm5vZGUgKnNfdm5vZGUsCj4gKwkJCSAgc3RydWN0IHZm
c2NvcmVfZmlsZSAqdmZzY29yZV9maWxlIF9fbWF5YmVfdW51c2VkKQo+ICAgewo+ICAgCWludCBy
ZXQgPSAwOwo+ICAgCXN0cnVjdCBzb2NrX25ldF9maWxlICpmaWxlID0gTlVMTDsKPiAgIAo+IC0J
ZmlsZSA9IF9fY29udGFpbmVyb2YodmZzY29yZV9maWxlLCBzdHJ1Y3Qgc29ja19uZXRfZmlsZSwg
dmZzY29yZV9maWxlKTsKPiAtCj4gKwlmaWxlID0gc192bm9kZS0+dl9kYXRhOwo+ICAgCUxXSVBf
REVCVUdGKFNPQ0tFVFNfREVCVUcsICgiY2xvc2UgJWQgKCV4KVxuIiwKPiAgIAkJCQkgICAgZmls
ZS0+dmZzY29yZV9maWxlLmZkLAo+ICAgCQkJCSAgICBmaWxlLT5zb2NrX2ZkKSk7Cj4gICAKPiAr
CVVLX0FTU0VSVCh2ZnNjb3JlX2ZpbGUtPmZfZGVudHJ5LT5kX3Zub2RlID09IHNfdm5vZGUpOwo+
ICsKPiAgIAkvKiBDbG9zZSBhbmQgcmVsZWFzZSB0aGUgbHdpcCBzb2NrZXQgKi8KPiAgIAlyZXQg
PSBsd2lwX2Nsb3NlKGZpbGUtPnNvY2tfZmQpOwo+IC0JLyogUmVsZWFzZSB0aGUgZmlsZSBkZXNj
cmlwdG9yICovCj4gKwkvKiBSZWxlYXNlIHRoZSBmaWxlIGRlc2NyaXB0b3IgbnVtYmVyICovCj4g
ICAJdmZzY29yZV9wdXRfZmQoZmlsZS0+dmZzY29yZV9maWxlLmZkKTsKPiAtCS8qIEZyZWUgdGhl
IHNvY2sgbmV0IHN0cnVjdHVyZSAqLwo+ICsJLyogRnJlZSBzb2NrZXQgdm5vZGUgKi8KPiArCXVr
X2ZyZWUodWtfYWxsb2NfZ2V0X2RlZmF1bHQoKSwgZmlsZS0+dmZzY29yZV9maWxlLmZfZGVudHJ5
LT5kX3Zub2RlKTsKPiArCS8qIEZyZWUgc29ja2V0IGRlbnRyeSAqLwo+ICsJdWtfZnJlZSh1a19h
bGxvY19nZXRfZGVmYXVsdCgpLCBmaWxlLT52ZnNjb3JlX2ZpbGUuZl9kZW50cnkpOwo+ICsJLyog
RnJlZSBzb2NrZXQgZmlsZSAqLwo+ICAgCXVrX2ZyZWUodWtfYWxsb2NfZ2V0X2RlZmF1bHQoKSwg
ZmlsZSk7Cj4gICAJcmV0dXJuIHJldDsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgc3NpemVfdCBzb2Nr
X25ldF93cml0ZShzdHJ1Y3QgdmZzY29yZV9maWxlICp2ZnNjb3JlX2ZpbGUsCj4gLQkJCSAgICAg
IGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGNvdW50KQo+ICtzdGF0aWMgc3NpemVfdCBzb2NrX25l
dF93cml0ZShzdHJ1Y3Qgdm5vZGUgKnNfdm5vZGUsCj4gKwkJCSAgICAgIHN0cnVjdCB1aW8gKmJ1
ZiwgaW50IGlvZmxhZyBfX3VudXNlZCkKPiAgIHsKPiAgIAlpbnQgcmV0ID0gMDsKPiAgIAlzdHJ1
Y3Qgc29ja19uZXRfZmlsZSAqZmlsZSA9IE5VTEw7Cj4gICAKPiAtCWZpbGUgPSBfX2NvbnRhaW5l
cm9mKHZmc2NvcmVfZmlsZSwgc3RydWN0IHNvY2tfbmV0X2ZpbGUsCj4gLQkJCSAgICAgdmZzY29y
ZV9maWxlKTsKPiAtCUxXSVBfREVCVUdGKFNPQ0tFVFNfREVCVUcsICgid3JpdGUgJWQgKCV4KTol
c1xuIiwKPiArCWZpbGUgPSBzX3Zub2RlLT52X2RhdGE7Cj4gKwlMV0lQX0RFQlVHRihTT0NLRVRT
X0RFQlVHLCAoIiVzIGZkOiVkIGx3aXBfZmQ6JWRcbiIsCj4gKwkJCQkgICAgX19mdW5jX18sCj4g
ICAJCQkJICAgIGZpbGUtPnZmc2NvcmVfZmlsZS5mZCwKPiAtCQkJCSAgICBmaWxlLT5zb2NrX2Zk
LAo+IC0JCQkJICAgIChjaGFyICopIGJ1ZikpOwo+IC0JcmV0ID0gbHdpcF93cml0ZShmaWxlLT5z
b2NrX2ZkLCBidWYsIGNvdW50KTsKPiArCQkJCSAgICBmaWxlLT5zb2NrX2ZkKSk7Cj4gKwlyZXQg
PSBsd2lwX3dyaXRldihmaWxlLT5zb2NrX2ZkLCBidWYtPnVpb19pb3YsIGJ1Zi0+dWlvX2lvdmNu
dCk7Cj4gICAJcmV0dXJuIHJldDsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgc3NpemVfdCBzb2NrX25l
dF9yZWFkKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKnZmc2NvcmVfZmlsZSwgdm9pZCAqYnVmLAo+IC0J
CQkgICAgc2l6ZV90IGNvdW50KQo+ICtzdGF0aWMgc3NpemVfdCBzb2NrX25ldF9yZWFkKHN0cnVj
dCB2bm9kZSAqc192bm9kZSwKPiArCQkJICAgICBzdHJ1Y3QgdmZzY29yZV9maWxlICp2ZnNjb3Jl
X2ZpbGUgX191bnVzZWQsCj4gKwkJCSAgICAgc3RydWN0IHVpbyAqYnVmLCBpbnQgaW9mbGFnIF9f
dW51c2VkKQo+ICAgewo+ICAgCWludCByZXQgPSAwOwo+ICAgCXN0cnVjdCBzb2NrX25ldF9maWxl
ICpmaWxlID0gTlVMTDsKPiAgIAo+IC0JZmlsZSA9IF9fY29udGFpbmVyb2YodmZzY29yZV9maWxl
LCBzdHJ1Y3Qgc29ja19uZXRfZmlsZSwKPiAtCQkJICAgICB2ZnNjb3JlX2ZpbGUpOwo+IC0JTFdJ
UF9ERUJVR0YoU09DS0VUU19ERUJVRywgKCJ3cml0ZSAlZCAoJXgpOiVzXG4iLAo+ICsJZmlsZSA9
IHNfdm5vZGUtPnZfZGF0YTsKPiArCUxXSVBfREVCVUdGKFNPQ0tFVFNfREVCVUcsICgiJXMgZmQ6
JWQgbHdpcF9mZDolZFxuIiwKPiArCQkJCSAgICBfX2Z1bmNfXywKPiAgIAkJCQkgICAgZmlsZS0+
dmZzY29yZV9maWxlLmZkLAo+IC0JCQkJICAgIGZpbGUtPnNvY2tfZmQsCj4gLQkJCQkgICAgKGNo
YXIgKikgYnVmKSk7Cj4gLQlyZXQgPSBsd2lwX3JlYWQoZmlsZS0+c29ja19mZCwgYnVmLCBjb3Vu
dCk7Cj4gKwkJCQkgICAgZmlsZS0+c29ja19mZCkpOwo+ICsJcmV0ID0gbHdpcF9yZWFkdihmaWxl
LT5zb2NrX2ZkLCBidWYtPnVpb19pb3YsIGJ1Zi0+dWlvX2lvdmNudCk7Cj4gICAJcmV0dXJuIHJl
dDsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgc3RydWN0IHZmc2NvcmVfZm9wcyBzb2NrX25ldF9mb3Bz
ID0gewo+IC0JLmNsb3NlID0gc29ja19uZXRfY2xvc2UsCj4gLQkud3JpdGUgPSBzb2NrX25ldF93
cml0ZSwKPiAtCS5yZWFkICA9IHNvY2tfbmV0X3JlYWQsCj4gK3N0YXRpYyBzdHJ1Y3Qgdm5vcHMg
c29ja19uZXRfZm9wcyA9IHsKPiArCS52b3BfY2xvc2UgPSBzb2NrX25ldF9jbG9zZSwKPiArCS52
b3Bfd3JpdGUgPSBzb2NrX25ldF93cml0ZSwKPiArCS52b3BfcmVhZCAgPSBzb2NrX25ldF9yZWFk
LAo+ICAgfTsKPiAgIAo+ICAgaW50IHNvY2tldChpbnQgZG9tYWluLCBpbnQgdHlwZSwgaW50IHBy
b3RvY29sKQo+IAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVj
dC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlv
cy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Feb 18 18:01:19 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 18 Feb 2019 18:01:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gvnED-0005YB-7s; Mon, 18 Feb 2019 18:01:17 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=9RzE=QZ=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1gvnEB-0005Y6-EU
 for minios-devel@lists.xen.org; Mon, 18 Feb 2019 18:01:15 +0000
X-Inumbo-ID: 2b808540-33a7-11e9-93ec-232727fa887a
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 2b808540-33a7-11e9-93ec-232727fa887a;
 Mon, 18 Feb 2019 18:01:10 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 23213104E78;
 Mon, 18 Feb 2019 19:01:09 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 95o7EhYsoOyr; Mon, 18 Feb 2019 19:01:09 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id F0807104E72
 for <minios-devel@lists.xen.org>; Mon, 18 Feb 2019 19:01:06 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 18 Feb 2019 19:01:06
 +0100
To: Simon Kuenzer <simon.kuenzer@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190218150417.1353-1-simon.kuenzer@neclab.eu>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <bd822216-801e-0a76-7f03-e9cdd9a293c2@neclab.eu>
Date: Mon, 18 Feb 2019 19:01:06 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190218150417.1353-1-simon.kuenzer@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH] lib/nolibc: Provide stdbool.h
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: florian.schmidt@neclab.eu, yuri.volchkov@neclab.eu
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gU2ltb24sCgpQbGVhc2UgZmluZCB0aGUgY29tbWVudHMgaW5saW5lLgoKVGhhbmtzICYg
UmVnYXJkcwpTaGFyYW4KCk9uIDIvMTgvMTkgNDowNCBQTSwgU2ltb24gS3VlbnplciB3cm90ZToK
PiBJbnRyb2R1Y2UgYSBtaW5pbWFsIGBzdGRib29sLmhgIGhlYWRlciB0aGF0IHByb3ZpZGVzIGRl
ZmluaXRpb25zCj4gb2YgYGJvb2xgLCBgdHJ1ZWAsIGFuZCBgZmFsc2VgLgo+IAo+IFNpZ25lZC1v
ZmYtYnk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1Pgo+IC0tLQo+ICAg
bGliL25vbGliYy9pbmNsdWRlL3N0ZGJvb2wuaCB8IDU1ICsrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrCj4gICAxIGZpbGUgY2hhbmdlZCwgNTUgaW5zZXJ0aW9ucygr
KQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9ub2xpYmMvaW5jbHVkZS9zdGRib29sLmgKPiAK
PiBkaWZmIC0tZ2l0IGEvbGliL25vbGliYy9pbmNsdWRlL3N0ZGJvb2wuaCBiL2xpYi9ub2xpYmMv
aW5jbHVkZS9zdGRib29sLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAw
Li45YzdkZTU5OAo+IC0tLSAvZGV2L251bGwKPiArKysgYi9saWIvbm9saWJjL2luY2x1ZGUvc3Rk
Ym9vbC5oCj4gQEAgLTAsMCArMSw1NSBAQAo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog
QlNELTMtQ2xhdXNlICovCj4gKy8qCj4gKyAqIEF1dGhvcnM6IFNpbW9uIEt1ZW56ZXIgPHNpbW9u
Lmt1ZW56ZXJAbmVjbGFiLmV1Pgo+ICsgKgo+ICsgKgo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTks
IE5FQyBMYWJvcmF0b3JpZXMgRXVyb3BlIEdtYkgsIE5FQyBDb3Jwb3JhdGlvbi4KPiArICogICAg
ICAgICAgICAgICAgICAgICBBbGwgcmlnaHRzIHJlc2VydmVkLgo+ICsgKgo+ICsgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKPiArICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCj4gKyAqIGFyZSBtZXQ6Cj4gKyAqCj4gKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cj4g
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KPiArICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQo+ICsgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgo+ICsgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQg
aG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzCj4gKyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCj4gKyAqICAg
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Cj4gKyAqCj4gKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgo+ICsgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCj4g
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFCj4gKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKPiArICogTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgo+ICsgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgo+ICsgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKPiArICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KPiArICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKPiArICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKPiAr
ICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCj4gKyAqCj4gKyAqIFRISVMgSEVBREVSIE1B
WSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCj4gKyAqLwo+ICsKPiAr
I2lmbmRlZiBfX1NUREJPT0xfSF9fCj4gKyNkZWZpbmUgX19TVERCT09MX0hfXwo+ICsKPiArI2lm
ZGVmIF9fY3BsdXNwbHVzCj4gK2V4dGVybiAiQyIgewo+ICsjZW5kaWYKPiArCj4gKyNkZWZpbmUg
Ym9vbCBfQm9vbF9Cb29sIGlzIGEgR05VIGV4dGVuc2lvbiBpbiBDKysuIERvIHdlIHdhbnQgdG8g
dXNlIHRoaXMgaW4gQysrIGFzIHdlIApoYXZlIGEgbGFuZ3VhZ2UgcHJvdmlkZWQgYm9vbCBkYXRh
dHlwZS4gSWYgd2UgbXVzdCB1c2UgaXQgc2hvdWxkbid0IHdlIApjaGVjayBmb3IgX19HTlVDX18g
bWFjcm8gYXMgZGVzY3JpYmVkIGluIFsxXS4KClsxXSBodHRwOi8vdGlnY2MudGljYWxjLm9yZy9k
b2MvZ251ZXh0cy5odG1sCgo+ICsKPiArI2RlZmluZSB0cnVlICgxKQo+ICsjZGVmaW5lIGZhbHNl
ICgwKQo+ICsKPiArI2RlZmluZSBfX2Jvb2xfdHJ1ZV9mYWxzZV9hcmVfZGVmaW5lZCAoMSkKPiAr
Cj4gKyNpZmRlZiBfX2NwbHVzcGx1cwo+ICt9Cj4gKyNlbmRpZgo+ICsKPiArI2VuZGlmIC8qIF9f
U1REQk9PTF9IX18gKi8KPiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhl
bnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5m
by9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Feb 19 08:52:20 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 19 Feb 2019 08:52:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gw18U-00025x-Jf; Tue, 19 Feb 2019 08:52:18 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rpGb=Q2=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1gw18S-00025r-Vc
 for minios-devel@lists.xen.org; Tue, 19 Feb 2019 08:52:17 +0000
X-Inumbo-ID: a6860828-3423-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id a6860828-3423-11e9-bc90-bc764e045a96;
 Tue, 19 Feb 2019 08:52:14 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 16A9B104E09;
 Tue, 19 Feb 2019 09:52:13 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id TvihJG8eW_6m; Tue, 19 Feb 2019 09:52:12 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id DAC74104E05
 for <minios-devel@lists.xen.org>; Tue, 19 Feb 2019 09:52:10 +0100 (CET)
Received: from HYDRA.office.hd ([169.254.4.179]) by ENCELADUS.office.hd
 ([192.168.24.52]) with mapi id 14.03.0319.002; Tue, 19 Feb 2019 09:52:10
 +0100
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: Sharan Santhanam <Sharan.Santhanam@neclab.eu>,
 "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT PATCH] lib/nolibc: Provide stdbool.h
Thread-Index: AQHUx5s9OscUDeRbkEqY/sl0lGpcbqXlx9wAgAEJtwA=
Date: Tue, 19 Feb 2019 08:52:09 +0000
Message-ID: <50CCC6A1-5C66-4225-93A1-19A0C8528729@neclab.eu>
References: <20190218150417.1353-1-simon.kuenzer@neclab.eu>
 <bd822216-801e-0a76-7f03-e9cdd9a293c2@neclab.eu>
In-Reply-To: <bd822216-801e-0a76-7f03-e9cdd9a293c2@neclab.eu>
Accept-Language: en-GB, gl-ES, de-DE, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [10.1.99.239]
Content-ID: <67EC6BFA5610C941A4397BE06036B999@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT PATCH] lib/nolibc: Provide stdbool.h
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Florian Schmidt <Florian.Schmidt@neclab.eu>,
 Yuri Volchkov <yuri.volchkov@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

T24gMTguMDIuMTksIDE5OjAxLCAiU2hhcmFuIFNhbnRoYW5hbSIgPFNoYXJhbi5TYW50aGFuYW1A
bmVjbGFiLmV1PiB3cm90ZToNCg0KICAgIEhlbGxvIFNpbW9uLA0KICAgIA0KICAgIFBsZWFzZSBm
aW5kIHRoZSBjb21tZW50cyBpbmxpbmUuDQogICAgDQogICAgVGhhbmtzICYgUmVnYXJkcw0KICAg
IFNoYXJhbg0KICAgIA0KICAgIE9uIDIvMTgvMTkgNDowNCBQTSwgU2ltb24gS3VlbnplciB3cm90
ZToNCiAgICA+IEludHJvZHVjZSBhIG1pbmltYWwgYHN0ZGJvb2wuaGAgaGVhZGVyIHRoYXQgcHJv
dmlkZXMgZGVmaW5pdGlvbnMNCiAgICA+IG9mIGBib29sYCwgYHRydWVgLCBhbmQgYGZhbHNlYC4N
CiAgICA+IA0KICAgID4gU2lnbmVkLW9mZi1ieTogU2ltb24gS3VlbnplciA8c2ltb24ua3Vlbnpl
ckBuZWNsYWIuZXU+DQogICAgPiAtLS0NCiAgICA+ICAgbGliL25vbGliYy9pbmNsdWRlL3N0ZGJv
b2wuaCB8IDU1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQog
ICAgPiAgIDEgZmlsZSBjaGFuZ2VkLCA1NSBpbnNlcnRpb25zKCspDQogICAgPiAgIGNyZWF0ZSBt
b2RlIDEwMDY0NCBsaWIvbm9saWJjL2luY2x1ZGUvc3RkYm9vbC5oDQogICAgPiANCiAgICA+IGRp
ZmYgLS1naXQgYS9saWIvbm9saWJjL2luY2x1ZGUvc3RkYm9vbC5oIGIvbGliL25vbGliYy9pbmNs
dWRlL3N0ZGJvb2wuaA0KICAgID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCiAgICA+IGluZGV4IDAw
MDAwMDAwLi45YzdkZTU5OA0KICAgID4gLS0tIC9kZXYvbnVsbA0KICAgID4gKysrIGIvbGliL25v
bGliYy9pbmNsdWRlL3N0ZGJvb2wuaA0KICAgID4gQEAgLTAsMCArMSw1NSBAQA0KICAgID4gKy8q
IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8NCiAgICA+ICsvKg0KICAg
ID4gKyAqIEF1dGhvcnM6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1Pg0K
ICAgID4gKyAqDQogICAgPiArICoNCiAgICA+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTksIE5FQyBM
YWJvcmF0b3JpZXMgRXVyb3BlIEdtYkgsIE5FQyBDb3Jwb3JhdGlvbi4NCiAgICA+ICsgKiAgICAg
ICAgICAgICAgICAgICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQogICAgPiArICoNCiAgICA+ICsg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQNCiAgICA+ICsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCiAgICA+ICsgKiBhcmUgbWV0Og0KICAg
ID4gKyAqDQogICAgPiArICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCiAgICA+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQogICAgPiArICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQNCiAgICA+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlDQogICAgPiArICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4NCiAgICA+ICsgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9s
ZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzDQogICAgPiArICogICAgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20NCiAgICA+
ICsgKiAgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLg0KICAgID4gKyAqDQogICAgPiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiDQogICAgPiAr
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQ0KICAgID4gKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFDQogICAgPiAr
ICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVS
IE9SIENPTlRSSUJVVE9SUyBCRQ0KICAgID4gKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1INCiAgICA+ICsgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRg0KICAgID4gKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUw0KICAgID4gKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElODQogICAgPiArICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkNCiAgICA+ICsgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RQ0KICAgID4gKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KICAgID4gKyAqDQogICAg
PiArICogVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQgT1IgTU9ESUZJRUQgSU4gQU5Z
IFdBWS4NCiAgICA+ICsgKi8NCiAgICA+ICsNCiAgICA+ICsjaWZuZGVmIF9fU1REQk9PTF9IX18N
CiAgICA+ICsjZGVmaW5lIF9fU1REQk9PTF9IX18NCiAgICA+ICsNCiAgICA+ICsjaWZkZWYgX19j
cGx1c3BsdXMNCiAgICA+ICtleHRlcm4gIkMiIHsNCiAgICA+ICsjZW5kaWYNCiAgICA+ICsNCiAg
ICA+ICsjZGVmaW5lIGJvb2wgX0Jvb2xfQm9vbCBpcyBhIEdOVSBleHRlbnNpb24gaW4gQysrLiBE
byB3ZSB3YW50IHRvIHVzZSB0aGlzIGluIEMrKyBhcyB3ZSANCiAgICBoYXZlIGEgbGFuZ3VhZ2Ug
cHJvdmlkZWQgYm9vbCBkYXRhdHlwZS4gSWYgd2UgbXVzdCB1c2UgaXQgc2hvdWxkbid0IHdlIA0K
ICAgIGNoZWNrIGZvciBfX0dOVUNfXyBtYWNybyBhcyBkZXNjcmliZWQgaW4gWzFdLg0KICAgIA0K
ICAgIFsxXSBodHRwOi8vdGlnY2MudGljYWxjLm9yZy9kb2MvZ251ZXh0cy5odG1sDQoNCk5vIHBy
b2JsZW0sIEkgY2FuIGFkZCBzdWNoIGEgY2hlY2suIFRoYW5rcyENCg0KICAgIA0KICAgID4gKw0K
ICAgID4gKyNkZWZpbmUgdHJ1ZSAoMSkNCiAgICA+ICsjZGVmaW5lIGZhbHNlICgwKQ0KICAgID4g
Kw0KICAgID4gKyNkZWZpbmUgX19ib29sX3RydWVfZmFsc2VfYXJlX2RlZmluZWQgKDEpDQogICAg
PiArDQogICAgPiArI2lmZGVmIF9fY3BsdXNwbHVzDQogICAgPiArfQ0KICAgID4gKyNlbmRpZg0K
ICAgID4gKw0KICAgID4gKyNlbmRpZiAvKiBfX1NUREJPT0xfSF9fICovDQogICAgPiANCiAgICAN
Cg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9z
LWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0
cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Tue Feb 19 09:53:43 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 19 Feb 2019 09:53:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gw25t-0006uJ-55; Tue, 19 Feb 2019 09:53:41 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=cveD=Q2=gmail.com=lars.kurth.xen@srs-us1.protection.inumbo.net>)
 id 1gw25s-0006u1-6L
 for minios-devel@lists.xenproject.org; Tue, 19 Feb 2019 09:53:40 +0000
X-Inumbo-ID: 3a4ad51c-342c-11e9-bc90-bc764e045a96
Received: from mail-wr1-x42c.google.com (unknown [2a00:1450:4864:20::42c])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 3a4ad51c-342c-11e9-bc90-bc764e045a96;
 Tue, 19 Feb 2019 09:53:38 +0000 (UTC)
Received: by mail-wr1-x42c.google.com with SMTP id i16so13193590wrs.13;
 Tue, 19 Feb 2019 01:53:37 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:content-transfer-encoding:mime-version:subject:message-id:date
 :to; bh=07uznPLdDTNuavvmV0asSlwiU9Xd0ySjmjVXSjb/VNw=;
 b=c9D5hwerGBsDRbG7BFpcvsquZkr8FQD91HWNsddOHnPQ6tE0LzzdCvSjR6Qn7hNcbr
 SCz9ezS7a/nQlsAsrlh9s5k14KpuLErHZVSbuNCQQZ2cgXdeSXXgZOitkSV4E0NrBpHW
 kB0XAQf/1Wyfcpm9foXdiCiipOAi3pJZW1QhUPw/Np6IuE7n0P4tForNRBDMOSz+FbXO
 CrgPckZrKgQYb6CeLmdvz+RljqXVCV4f/miP0jQYay/Yq/hSO7qQzSipX07q8iE5UPAf
 Of46+Tuq1VlhLXF8ZcMSP2Lsshu53y4sjUknvB22scgth4rNDv+c7xBue82c9GPh7L5C
 Hcwg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:content-transfer-encoding:mime-version
 :subject:message-id:date:to;
 bh=07uznPLdDTNuavvmV0asSlwiU9Xd0ySjmjVXSjb/VNw=;
 b=TjnwLiklzuazav91IADmOu9N4ansfmBUnTWJqu8loJyBaOFxNIK1+f3mmUsHtMvSuk
 4lIiuUSNfBH7c3A1S4gIETvNZ5Ar9GpOd7rxdosPuow7Z7grkLNpV6Ds1RWwDj1llJH4
 BT0cj4DHg1fBimx27CY5X24QZWPSIEuqfpfGMEr9JmQQCYO/7/W7/66DjVZjekO1KdLH
 nfvVQkGXn5ex/ypCRf5F+CuxuqT+M2hh5DEz3wcOaJl+/X07j8BeBruXxVb48n10+QBD
 W7ZlmmDJDy8cgRSmbrufkHccaB/OmfGMoPG4ytITosGofTezZ2E1+glI5u9xtXFCGNaY
 8q+g==
X-Gm-Message-State: AHQUAuaA8Gt/majo/tS0yHcmLPf4rK6F1m6aqCW0Q3b6LxWk3gDEmVFi
 rmsllQustBin13RxqphxuSfOpGphttY=
X-Google-Smtp-Source: AHgI3IZFX+Oa/U3F1G/a9TZYahIuvA4ghIkoPBOXK2A+zqh6hmuy9vwosY9f49SbLwNzFnCKUXFl8w==
X-Received: by 2002:a5d:4e8c:: with SMTP id e12mr19545155wru.21.1550570016264; 
 Tue, 19 Feb 2019 01:53:36 -0800 (PST)
Received: from ?IPv6:2a02:c7f:ac18:da00:b4fb:f06a:eae7:554d?
 ([2a02:c7f:ac18:da00:b4fb:f06a:eae7:554d])
 by smtp.gmail.com with ESMTPSA id c129sm1824999wma.48.2019.02.19.01.53.35
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Tue, 19 Feb 2019 01:53:35 -0800 (PST)
From: Lars Kurth <lars.kurth.xen@gmail.com>
Mime-Version: 1.0 (Mac OS X Mail 11.5 \(3445.9.1\))
Message-Id: <E99B3E43-B4F5-4F16-AA22-27BB5F828E6F@gmail.com>
Date: Tue, 19 Feb 2019 09:53:34 +0000
To: xen-announce@lists.xenproject.org,
 xen-devel <xen-devel@lists.xenproject.org>, xen-users@lists.xenproject.org,
 xen-api@lists.xenproject.org,
 Minios-devel <minios-devel@lists.xenproject.org>,
 win-pv-devel@lists.xenproject.org, mirageos-devel@lists.xenproject.org
X-Mailer: Apple Mail (2.3445.9.1)
Subject: [Minios-devel] Changes to Xen Project websites: xenproject.org &
 blog.xenproject.org
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

RGVhciBDb21tdW5pdHkgbWVtYmVycywKCnRvZGF5IGFuZCB0b21vcnJvdywgd2UgYXJlIG1ha2lu
ZyBjaGFuZ2VzIHRvIFhlbiBQcm9qZWN0IHdlYiByZWFsLWVzdGF0ZS4gU3BlY2lmaWNhbGx5LCB0
aGUgWGVuIHByb2plY3Qgd2Vic2l0ZSBhdCB4ZW5wcm9qZWN0Lm9yZyBpcyByZXBsYWNlZCBieSBh
IG5ldyB3ZWJzaXRlIGFuZCB0aGUgY29udGVudCBvZiBibG9nLnhlbnByb2plY3Qub3JnIHdpbGwg
bW92ZSB0byB4ZW5wcm9qZWN0Lm9yZy9ibG9nIAoKV2hpbGUgd2UgZXhlY3V0ZSB0aGUgc3dpdGNo
LW92ZXIgdGhlcmUgbWF5IGJlIHNvbWUgaGl0Y2hlcywgZHVlIHRvIHRoZSB3b3JrIGJlaW5nIGV4
ZWN1dGVkIGluIGRpZmZlcmVudCB0aW1lLXpvbmVzLiBUaGlzIG1heSBtZWFuIHRoYXQgU1NMIGNl
cnRpZmljYXRlcyBtYXkgYmUgdGVtcG9yYXJpbHkgaW52YWxpZC4gUGxlYXNlIGJlYXIgd2l0aCB1
cywgd2hpbGUgd2UgY29tcGxldGUgdGhpcyB3b3JrLgoKQmVzdCBSZWdhcmRzCkxhcnMgIApfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwg
bWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xp
c3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Feb 19 12:22:03 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 19 Feb 2019 12:22:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gw4PR-000444-Uz; Tue, 19 Feb 2019 12:22:01 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=kXau=Q2=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1gw4PR-00043x-9N
 for minios-devel@lists.xen.org; Tue, 19 Feb 2019 12:22:01 +0000
X-Inumbo-ID: f1948868-3440-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id f1948868-3440-11e9-bc90-bc764e045a96;
 Tue, 19 Feb 2019 12:21:55 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 139D5104E8C;
 Tue, 19 Feb 2019 13:21:54 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id iLa55jfh_G09; Tue, 19 Feb 2019 13:21:53 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id C39BE104E67
 for <minios-devel@lists.xen.org>; Tue, 19 Feb 2019 13:21:51 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 19 Feb 2019 13:21:51
 +0100
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190218145440.30580-1-yuri.volchkov@neclab.eu>
 <20190218145440.30580-10-yuri.volchkov@neclab.eu>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <d68477be-7763-fa89-cebc-ec4a38bd5c53@neclab.eu>
Date: Tue, 19 Feb 2019 13:21:51 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190218145440.30580-10-yuri.volchkov@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v4 09/22] lib/vfscore: use
 Unikraft types and functions
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: simon.kuenzer@neclab.eu
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gWXVyaSwKClRoaXMgcGF0Y2ggc2VlbXMgZmluZS4KClJldmlld2VkLWJ5OiBTaGFyYW4g
U2FudGhhbmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xhYi5ldT4KClRoYW5rcyAmIFJlZ2FyZHMK
U2hhcmFuCgpPbiAyLzE4LzE5IDM6NTQgUE0sIFl1cmkgVm9sY2hrb3Ygd3JvdGU6Cj4gU2lnbmVk
LW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Cj4gLS0tCj4g
ICBsaWIvdmZzY29yZS9kZW50cnkuYyAgICAgICAgICAgICAgICAgfCAxMzcgKysrKysrKysrKysr
KystLS0tLS0tLS0tLS0tCj4gICBsaWIvdmZzY29yZS9mb3BzLmMgICAgICAgICAgICAgICAgICAg
fCAgIDIgKy0KPiAgIGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9kZW50cnkuaCB8ICAxMCAr
LQo+ICAgbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmggIHwgICAxICsKPiAgIGxp
Yi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9wcmV4LmggICB8ICAgNCArLQo+ICAgbGliL3Zmc2Nv
cmUvaW5jbHVkZS92ZnNjb3JlL3Zub2RlLmggIHwgIDI5ICsrKy0tLQo+ICAgbGliL3Zmc2NvcmUv
bG9va3VwLmMgICAgICAgICAgICAgICAgIHwgIDMwICsrKy0tLQo+ICAgbGliL3Zmc2NvcmUvbWFp
bi5jICAgICAgICAgICAgICAgICAgIHwgMTIxICsrKysrKysrKysrLS0tLS0tLS0tLS0tCj4gICBs
aWIvdmZzY29yZS9tb3VudC5jICAgICAgICAgICAgICAgICAgfCAxMTYgKysrKysrKysrKysrKy0t
LS0tLS0tLS0KPiAgIGxpYi92ZnNjb3JlL3N1YnJfdWlvLmMgICAgICAgICAgICAgICB8ICAgMiAr
LQo+ICAgbGliL3Zmc2NvcmUvc3lzY2FsbHMuYyAgICAgICAgICAgICAgIHwgMTI4ICsrKysrKysr
KysrKy0tLS0tLS0tLS0tLS0KPiAgIGxpYi92ZnNjb3JlL3Zmcy5oICAgICAgICAgICAgICAgICAg
ICB8ICAzOCArKysrLS0tLQo+ICAgbGliL3Zmc2NvcmUvdm5vZGUuYyAgICAgICAgICAgICAgICAg
IHwgMTIyICsrKysrKysrKysrKy0tLS0tLS0tLS0tLQo+ICAgMTMgZmlsZXMgY2hhbmdlZCwgMzc5
IGluc2VydGlvbnMoKyksIDM2MSBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvbGliL3Zm
c2NvcmUvZGVudHJ5LmMgYi9saWIvdmZzY29yZS9kZW50cnkuYwo+IGluZGV4IGNjY2UwN2QxLi5k
YzlkYjM1MiAxMDA2NDQKPiAtLS0gYS9saWIvdmZzY29yZS9kZW50cnkuYwo+ICsrKyBiL2xpYi92
ZnNjb3JlL2RlbnRyeS5jCj4gQEAgLTQxLDE4ICs0MSwxOCBAQAo+ICAgCj4gICAjZGVmaW5lIERF
TlRSWV9CVUNLRVRTIDMyCj4gICAKPiAtc3RhdGljIExJU1RfSEVBRChkZW50cnlfaGFzaF9oZWFk
LCBkZW50cnkpIGRlbnRyeV9oYXNoX3RhYmxlW0RFTlRSWV9CVUNLRVRTXTsKPiAtc3RhdGljIExJ
U1RfSEVBRChmYWtlLCBkZW50cnkpIGZha2U7Cj4gLXN0YXRpYyBtdXRleCBkZW50cnlfaGFzaF9s
b2NrOwo+ICtzdGF0aWMgc3RydWN0IHVrX2hsaXN0X2hlYWQgZGVudHJ5X2hhc2hfdGFibGVbREVO
VFJZX0JVQ0tFVFNdOwo+ICtzdGF0aWMgVUtfSExJU1RfSEVBRChmYWtlKTsKPiArc3RhdGljIHN0
cnVjdCB1a19tdXRleCBkZW50cnlfaGFzaF9sb2NrID0gVUtfTVVURVhfSU5JVElBTElaRVIoZGVu
dHJ5X2hhc2hfbG9jayk7Cj4gICAKPiAgIC8qCj4gICAgKiBHZXQgdGhlIGhhc2ggdmFsdWUgZnJv
bSB0aGUgbW91bnQgcG9pbnQgYW5kIHBhdGggbmFtZS4KPiAgICAqIFhYWDogcmVwbGFjZSB3aXRo
IGEgYmV0dGVyIGhhc2ggZm9yIDY0LWJpdCBwb2ludGVycy4KPiAgICAqLwo+IC1zdGF0aWMgdV9p
bnQKPiArc3RhdGljIHVuc2lnbmVkIGludAo+ICAgZGVudHJ5X2hhc2goc3RydWN0IG1vdW50ICpt
cCwgY29uc3QgY2hhciAqcGF0aCkKPiAgIHsKPiAtCXVfaW50IHZhbCA9IDA7Cj4gKwl1bnNpZ25l
ZCBpbnQgdmFsID0gMDsKPiAgIAo+ICAgCWlmIChwYXRoKSB7Cj4gICAJCXdoaWxlICgqcGF0aCkg
ewo+IEBAIC02NywxMCArNjcsMTAgQEAgc3RydWN0IGRlbnRyeSAqCj4gICBkZW50cnlfYWxsb2Mo
c3RydWN0IGRlbnRyeSAqcGFyZW50X2RwLCBzdHJ1Y3Qgdm5vZGUgKnZwLCBjb25zdCBjaGFyICpw
YXRoKQo+ICAgewo+ICAgCXN0cnVjdCBtb3VudCAqbXAgPSB2cC0+dl9tb3VudDsKPiAtCXN0cnVj
dCBkZW50cnkgKmRwID0gKGRlbnRyeSopY2FsbG9jKHNpemVvZigqZHApLCAxKTsKPiArCXN0cnVj
dCBkZW50cnkgKmRwID0gKHN0cnVjdCBkZW50cnkqKWNhbGxvYyhzaXplb2YoKmRwKSwgMSk7Cj4g
ICAKPiAgIAlpZiAoIWRwKSB7Cj4gLQkJcmV0dXJuIG51bGxwdHI7Cj4gKwkJcmV0dXJuIE5VTEw7
Cj4gICAJfQo+ICAgCj4gICAJdnJlZih2cCk7Cj4gQEAgLTc5LDIyICs3OSwyNCBAQCBkZW50cnlf
YWxsb2Moc3RydWN0IGRlbnRyeSAqcGFyZW50X2RwLCBzdHJ1Y3Qgdm5vZGUgKnZwLCBjb25zdCBj
aGFyICpwYXRoKQo+ICAgCWRwLT5kX3Zub2RlID0gdnA7Cj4gICAJZHAtPmRfbW91bnQgPSBtcDsK
PiAgIAlkcC0+ZF9wYXRoID0gc3RyZHVwKHBhdGgpOwo+IC0JTElTVF9JTklUKCZkcC0+ZF9jaGls
ZHJlbik7Cj4gKwlVS19JTklUX0xJU1RfSEVBRCgmZHAtPmRfY2hpbGRfbGlzdCk7Cj4gICAKPiAg
IAlpZiAocGFyZW50X2RwKSB7Cj4gICAJCWRyZWYocGFyZW50X2RwKTsKPiAtCQlXSVRIX0xPQ0so
cGFyZW50X2RwLT5kX2xvY2spIHsKPiAtCQkJLy8gSW5zZXJ0IGRwIGludG8gaXRzIHBhcmVudCdz
IGNoaWxkcmVuIGxpc3QuCj4gLQkJCUxJU1RfSU5TRVJUX0hFQUQoJnBhcmVudF9kcC0+ZF9jaGls
ZHJlbiwgZHAsIGRfY2hpbGRyZW5fbGluayk7Cj4gLQkJfQo+ICsKPiArCQl1a19tdXRleF9sb2Nr
KCZwYXJlbnRfZHAtPmRfbG9jayk7Cj4gKwkJLy8gSW5zZXJ0IGRwIGludG8gaXRzIHBhcmVudCdz
IGNoaWxkcmVuIGxpc3QuCj4gKwkJdWtfbGlzdF9hZGQoJmRwLT5kX2NoaWxkX2xpbmssICZwYXJl
bnRfZHAtPmRfY2hpbGRfbGlzdCk7Cj4gKwkJdWtfbXV0ZXhfdW5sb2NrKCZwYXJlbnRfZHAtPmRf
bG9jayk7Cj4gICAJfQo+ICAgCWRwLT5kX3BhcmVudCA9IHBhcmVudF9kcDsKPiAgIAo+ICAgCXZu
X2FkZF9uYW1lKHZwLCBkcCk7Cj4gICAKPiAtCW11dGV4X2xvY2soJmRlbnRyeV9oYXNoX2xvY2sp
Owo+IC0JTElTVF9JTlNFUlRfSEVBRCgmZGVudHJ5X2hhc2hfdGFibGVbZGVudHJ5X2hhc2gobXAs
IHBhdGgpXSwgZHAsIGRfbGluayk7Cj4gLQltdXRleF91bmxvY2soJmRlbnRyeV9oYXNoX2xvY2sp
Owo+ICsJdWtfbXV0ZXhfbG9jaygmZGVudHJ5X2hhc2hfbG9jayk7Cj4gKwl1a19obGlzdF9hZGRf
aGVhZCgmZHAtPmRfbGluaywKPiArCQkJICAmZGVudHJ5X2hhc2hfdGFibGVbZGVudHJ5X2hhc2go
bXAsIHBhdGgpXSk7Cj4gKwl1a19tdXRleF91bmxvY2soJmRlbnRyeV9oYXNoX2xvY2spOwo+ICAg
CXJldHVybiBkcDsKPiAgIH07Cj4gICAKPiBAQCAtMTAzLDI5ICsxMDUsMzAgQEAgZGVudHJ5X2xv
b2t1cChzdHJ1Y3QgbW91bnQgKm1wLCBjaGFyICpwYXRoKQo+ICAgewo+ICAgCXN0cnVjdCBkZW50
cnkgKmRwOwo+ICAgCj4gLQltdXRleF9sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKPiAtCUxJU1Rf
Rk9SRUFDSChkcCwgJmRlbnRyeV9oYXNoX3RhYmxlW2RlbnRyeV9oYXNoKG1wLCBwYXRoKV0sIGRf
bGluaykgewo+ICsJdWtfbXV0ZXhfbG9jaygmZGVudHJ5X2hhc2hfbG9jayk7Cj4gKwl1a19obGlz
dF9mb3JfZWFjaF9lbnRyeShkcCwgJmRlbnRyeV9oYXNoX3RhYmxlW2RlbnRyeV9oYXNoKG1wLCBw
YXRoKV0sIGRfbGluaykgewo+ICAgCQlpZiAoZHAtPmRfbW91bnQgPT0gbXAgJiYgIXN0cm5jbXAo
ZHAtPmRfcGF0aCwgcGF0aCwgUEFUSF9NQVgpKSB7Cj4gICAJCQlkcC0+ZF9yZWZjbnQrKzsKPiAt
CQkJbXV0ZXhfdW5sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKPiArCQkJdWtfbXV0ZXhfdW5sb2Nr
KCZkZW50cnlfaGFzaF9sb2NrKTsKPiAgIAkJCXJldHVybiBkcDsKPiAgIAkJfQo+ICAgCX0KPiAt
CW11dGV4X3VubG9jaygmZGVudHJ5X2hhc2hfbG9jayk7Cj4gLQlyZXR1cm4gbnVsbHB0cjsgICAg
ICAgICAgICAgICAgLyogbm90IGZvdW5kICovCj4gKwl1a19tdXRleF91bmxvY2soJmRlbnRyeV9o
YXNoX2xvY2spOwo+ICsJcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgIC8qIG5vdCBmb3VuZCAq
Lwo+ICAgfQo+ICAgCj4gICBzdGF0aWMgdm9pZCBkZW50cnlfY2hpbGRyZW5fcmVtb3ZlKHN0cnVj
dCBkZW50cnkgKmRwKQo+ICAgewo+IC0Jc3RydWN0IGRlbnRyeSAqZW50cnkgPSBudWxscHRyOwo+
ICsJc3RydWN0IGRlbnRyeSAqZW50cnkgPSBOVUxMOwo+ICAgCj4gLQlXSVRIX0xPQ0soZHAtPmRf
bG9jaykgewo+IC0JCUxJU1RfRk9SRUFDSChlbnRyeSwgJmRwLT5kX2NoaWxkcmVuLCBkX2NoaWxk
cmVuX2xpbmspIHsKPiAtCQkJQVNTRVJUKGVudHJ5KTsKPiAtCQkJQVNTRVJUKGVudHJ5LT5kX3Jl
ZmNudCA+IDApOwo+IC0JCQlMSVNUX1JFTU9WRShlbnRyeSwgZF9saW5rKTsKPiAtCQl9Cj4gKwl1
a19tdXRleF9sb2NrKCZkcC0+ZF9sb2NrKTsKPiArCXVrX2xpc3RfZm9yX2VhY2hfZW50cnkoZW50
cnksICZkcC0+ZF9jaGlsZF9saXN0LCBkX2NoaWxkX2xpbmspIHsKPiArCQlVS19BU1NFUlQoZW50
cnkpOwo+ICsJCVVLX0FTU0VSVChlbnRyeS0+ZF9yZWZjbnQgPiAwKTsKPiArCQl1a19obGlzdF9k
ZWwoJmVudHJ5LT5kX2xpbmspOwo+ICAgCX0KPiArCXVrX211dGV4X3VubG9jaygmZHAtPmRfbG9j
ayk7Cj4gKwo+ICAgfQo+ICAgCj4gICB2b2lkCj4gQEAgLTEzNSwzMyArMTM4LDM0IEBAIGRlbnRy
eV9tb3ZlKHN0cnVjdCBkZW50cnkgKmRwLCBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnRfZHAsIGNoYXIg
KnBhdGgpCj4gICAJY2hhciAqb2xkX3BhdGggPSBkcC0+ZF9wYXRoOwo+ICAgCj4gICAJaWYgKG9s
ZF9wZHApIHsKPiAtCQlXSVRIX0xPQ0sob2xkX3BkcC0+ZF9sb2NrKSB7Cj4gLQkJCS8vIFJlbW92
ZSBkcCBmcm9tIGl0cyBvbGQgcGFyZW50J3MgY2hpbGRyZW4gbGlzdC4KPiAtCQkJTElTVF9SRU1P
VkUoZHAsIGRfY2hpbGRyZW5fbGluayk7Cj4gLQkJfQo+ICsJCXVrX211dGV4X2xvY2soJm9sZF9w
ZHAtPmRfbG9jayk7Cj4gKwkJLy8gUmVtb3ZlIGRwIGZyb20gaXRzIG9sZCBwYXJlbnQncyBjaGls
ZHJlbiBsaXN0Lgo+ICsJCXVrX2xpc3RfZGVsKCZkcC0+ZF9jaGlsZF9saW5rKTsKPiArCQl1a19t
dXRleF91bmxvY2soJm9sZF9wZHAtPmRfbG9jayk7Cj4gICAJfQo+ICAgCj4gICAJaWYgKHBhcmVu
dF9kcCkgewo+ICAgCQlkcmVmKHBhcmVudF9kcCk7Cj4gLQkJV0lUSF9MT0NLKHBhcmVudF9kcC0+
ZF9sb2NrKSB7Cj4gLQkJCS8vIEluc2VydCBkcCBpbnRvIGl0cyBuZXcgcGFyZW50J3MgY2hpbGRy
ZW4gbGlzdC4KPiAtCQkJTElTVF9JTlNFUlRfSEVBRCgmcGFyZW50X2RwLT5kX2NoaWxkcmVuLCBk
cCwgZF9jaGlsZHJlbl9saW5rKTsKPiAtCQl9Cj4gLQl9Cj4gICAKPiAtCVdJVEhfTE9DSyhkZW50
cnlfaGFzaF9sb2NrKSB7Cj4gLQkJLy8gUmVtb3ZlIGFsbCBkcCdzIGNoaWxkIGRlbnRyaWVzIGZy
b20gdGhlIGhhc2h0YWJsZS4KPiAtCQlkZW50cnlfY2hpbGRyZW5fcmVtb3ZlKGRwKTsKPiAtCQkv
LyBSZW1vdmUgZHAgd2l0aCBvdXRkYXRlZCBoYXNoIGluZm8gZnJvbSB0aGUgaGFzaHRhYmxlLgo+
IC0JCUxJU1RfUkVNT1ZFKGRwLCBkX2xpbmspOwo+IC0JCS8vIFVwZGF0ZSBkcC4KPiAtCQlkcC0+
ZF9wYXRoID0gc3RyZHVwKHBhdGgpOwo+IC0JCWRwLT5kX3BhcmVudCA9IHBhcmVudF9kcDsKPiAt
CQkvLyBJbnNlcnQgZHAgdXBkYXRlZCBoYXNoIGluZm8gaW50byB0aGUgaGFzaHRhYmxlLgo+IC0J
CUxJU1RfSU5TRVJUX0hFQUQoJmRlbnRyeV9oYXNoX3RhYmxlW2RlbnRyeV9oYXNoKGRwLT5kX21v
dW50LCBwYXRoKV0sCj4gLQkJCWRwLCBkX2xpbmspOwo+ICsJCXVrX211dGV4X2xvY2soJnBhcmVu
dF9kcC0+ZF9sb2NrKTsKPiArCQkvLyBJbnNlcnQgZHAgaW50byBpdHMgbmV3IHBhcmVudCdzIGNo
aWxkcmVuIGxpc3QuCj4gKwkJdWtfbGlzdF9hZGQoJmRwLT5kX2NoaWxkX2xpbmssICZwYXJlbnRf
ZHAtPmRfY2hpbGRfbGlzdCk7Cj4gKwkJdWtfbXV0ZXhfdW5sb2NrKCZwYXJlbnRfZHAtPmRfbG9j
ayk7Cj4gICAJfQo+ICAgCj4gKwl1a19tdXRleF9sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKPiAr
CS8vIFJlbW92ZSBhbGwgZHAncyBjaGlsZCBkZW50cmllcyBmcm9tIHRoZSBoYXNodGFibGUuCj4g
KwlkZW50cnlfY2hpbGRyZW5fcmVtb3ZlKGRwKTsKPiArCS8vIFJlbW92ZSBkcCB3aXRoIG91dGRh
dGVkIGhhc2ggaW5mbyBmcm9tIHRoZSBoYXNodGFibGUuCj4gKwl1a19obGlzdF9kZWwoJmRwLT5k
X2xpbmspOwo+ICsJLy8gVXBkYXRlIGRwLgo+ICsJZHAtPmRfcGF0aCA9IHN0cmR1cChwYXRoKTsK
PiArCWRwLT5kX3BhcmVudCA9IHBhcmVudF9kcDsKPiArCS8vIEluc2VydCBkcCB1cGRhdGVkIGhh
c2ggaW5mbyBpbnRvIHRoZSBoYXNodGFibGUuCj4gKwl1a19obGlzdF9hZGRfaGVhZCgmZHAtPmRf
bGluaywKPiArCQkJICAmZGVudHJ5X2hhc2hfdGFibGVbZGVudHJ5X2hhc2goZHAtPmRfbW91bnQs
IHBhdGgpXSk7Cj4gKwl1a19tdXRleF91bmxvY2soJmRlbnRyeV9oYXNoX2xvY2spOwo+ICsKPiAg
IAlpZiAob2xkX3BkcCkgewo+ICAgCQlkcmVsZShvbGRfcGRwKTsKPiAgIAl9Cj4gQEAgLTE3Miw0
NSArMTc2LDQ2IEBAIGRlbnRyeV9tb3ZlKHN0cnVjdCBkZW50cnkgKmRwLCBzdHJ1Y3QgZGVudHJ5
ICpwYXJlbnRfZHAsIGNoYXIgKnBhdGgpCj4gICB2b2lkCj4gICBkZW50cnlfcmVtb3ZlKHN0cnVj
dCBkZW50cnkgKmRwKQo+ICAgewo+IC0JbXV0ZXhfbG9jaygmZGVudHJ5X2hhc2hfbG9jayk7Cj4g
LQlMSVNUX1JFTU9WRShkcCwgZF9saW5rKTsKPiArCXVrX211dGV4X2xvY2soJmRlbnRyeV9oYXNo
X2xvY2spOwo+ICsJdWtfaGxpc3RfZGVsKCZkcC0+ZF9saW5rKTsKPiAgIAkvKiBwdXQgaXQgb24g
YSBmYWtlIGxpc3QgZm9yIGRyZWxlKCkgdG8gd29yayovCj4gLQlMSVNUX0lOU0VSVF9IRUFEKCZm
YWtlLCBkcCwgZF9saW5rKTsKPiAtCW11dGV4X3VubG9jaygmZGVudHJ5X2hhc2hfbG9jayk7Cj4g
Kwl1a19obGlzdF9hZGRfaGVhZCgmZHAtPmRfbGluaywgJmZha2UpOwo+ICsJdWtfbXV0ZXhfdW5s
b2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKPiAgIH0KPiAgIAo+ICAgdm9pZAo+ICAgZHJlZihzdHJ1
Y3QgZGVudHJ5ICpkcCkKPiAgIHsKPiAtCUFTU0VSVChkcCk7Cj4gLQlBU1NFUlQoZHAtPmRfcmVm
Y250ID4gMCk7Cj4gKwlVS19BU1NFUlQoZHApOwo+ICsJVUtfQVNTRVJUKGRwLT5kX3JlZmNudCA+
IDApOwo+ICAgCj4gLQltdXRleF9sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKPiArCXVrX211dGV4
X2xvY2soJmRlbnRyeV9oYXNoX2xvY2spOwo+ICAgCWRwLT5kX3JlZmNudCsrOwo+IC0JbXV0ZXhf
dW5sb2NrKCZkZW50cnlfaGFzaF9sb2NrKTsKPiArCXVrX211dGV4X3VubG9jaygmZGVudHJ5X2hh
c2hfbG9jayk7Cj4gICB9Cj4gICAKPiAgIHZvaWQKPiAgIGRyZWxlKHN0cnVjdCBkZW50cnkgKmRw
KQo+ICAgewo+IC0JQVNTRVJUKGRwKTsKPiAtCUFTU0VSVChkcC0+ZF9yZWZjbnQgPiAwKTsKPiAr
CVVLX0FTU0VSVChkcCk7Cj4gKwlVS19BU1NFUlQoZHAtPmRfcmVmY250ID4gMCk7Cj4gICAKPiAt
CW11dGV4X2xvY2soJmRlbnRyeV9oYXNoX2xvY2spOwo+ICsJdWtfbXV0ZXhfbG9jaygmZGVudHJ5
X2hhc2hfbG9jayk7Cj4gICAJaWYgKC0tZHAtPmRfcmVmY250KSB7Cj4gLQkJbXV0ZXhfdW5sb2Nr
KCZkZW50cnlfaGFzaF9sb2NrKTsKPiArCQl1a19tdXRleF91bmxvY2soJmRlbnRyeV9oYXNoX2xv
Y2spOwo+ICAgCQlyZXR1cm47Cj4gICAJfQo+IC0JTElTVF9SRU1PVkUoZHAsIGRfbGluayk7Cj4g
Kwl1a19obGlzdF9kZWwoJmRwLT5kX2xpbmspOwo+ICAgCXZuX2RlbF9uYW1lKGRwLT5kX3Zub2Rl
LCBkcCk7Cj4gICAKPiAtCW11dGV4X3VubG9jaygmZGVudHJ5X2hhc2hfbG9jayk7Cj4gKwl1a19t
dXRleF91bmxvY2soJmRlbnRyeV9oYXNoX2xvY2spOwo+ICAgCj4gICAJaWYgKGRwLT5kX3BhcmVu
dCkgewo+IC0JCVdJVEhfTE9DSyhkcC0+ZF9wYXJlbnQtPmRfbG9jaykgewo+IC0JCQkvLyBSZW1v
dmUgZHAgZnJvbSBpdHMgcGFyZW50J3MgY2hpbGRyZW4gbGlzdC4KPiAtCQkJTElTVF9SRU1PVkUo
ZHAsIGRfY2hpbGRyZW5fbGluayk7Cj4gLQkJfQo+ICsJCXVrX211dGV4X2xvY2soJmRwLT5kX3Bh
cmVudC0+ZF9sb2NrKTsKPiArCQkvLyBSZW1vdmUgZHAgZnJvbSBpdHMgcGFyZW50J3MgY2hpbGRy
ZW4gbGlzdC4KPiArCQl1a19saXN0X2RlbCgmZHAtPmRfY2hpbGRfbGluayk7Cj4gKwkJdWtfbXV0
ZXhfdW5sb2NrKCZkcC0+ZF9wYXJlbnQtPmRfbG9jayk7Cj4gKwo+ICAgCQlkcmVsZShkcC0+ZF9w
YXJlbnQpOwo+ICAgCX0KPiAgIAo+IEBAIC0yMjYsNiArMjMxLDYgQEAgZGVudHJ5X2luaXQodm9p
ZCkKPiAgIAlpbnQgaTsKPiAgIAo+ICAgCWZvciAoaSA9IDA7IGkgPCBERU5UUllfQlVDS0VUUzsg
aSsrKSB7Cj4gLQkJTElTVF9JTklUKCZkZW50cnlfaGFzaF90YWJsZVtpXSk7Cj4gKwkJVUtfSU5J
VF9ITElTVF9IRUFEKCZkZW50cnlfaGFzaF90YWJsZVtpXSk7Cj4gICAJfQo+ICAgfQo+IGRpZmYg
LS1naXQgYS9saWIvdmZzY29yZS9mb3BzLmMgYi9saWIvdmZzY29yZS9mb3BzLmMKPiBpbmRleCBi
NDU4M2QyMC4uNzkxMTRlMjEgMTAwNjQ0Cj4gLS0tIGEvbGliL3Zmc2NvcmUvZm9wcy5jCj4gKysr
IGIvbGliL3Zmc2NvcmUvZm9wcy5jCj4gQEAgLTExNSw3ICsxMTUsNyBAQCBpbnQgdmZzX3dyaXRl
KHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwLCBzdHJ1Y3QgdWlvICp1aW8sIGludCBmbGFncykKPiAg
IAlyZXR1cm4gZXJyb3I7Cj4gICB9Cj4gICAKPiAtaW50IHZmc19pb2N0bChzdHJ1Y3QgdmZzY29y
ZV9maWxlICpmcCwgdV9sb25nIGNvbSwgdm9pZCAqZGF0YSkKPiAraW50IHZmc19pb2N0bChzdHJ1
Y3QgdmZzY29yZV9maWxlICpmcCwgdW5zaWduZWQgbG9uZyBjb20sIHZvaWQgKmRhdGEpCj4gICB7
Cj4gICAJc3RydWN0IHZub2RlICp2cCA9IGZwLT5mX2RlbnRyeS0+ZF92bm9kZTsKPiAgIAlpbnQg
ZXJyb3I7Cj4gZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9kZW50cnku
aCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9kZW50cnkuaAo+IGluZGV4IGJhMWMzNDU3
Li44NWYzN2FiNyAxMDA2NDQKPiAtLS0gYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZGVu
dHJ5LmgKPiArKysgYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZGVudHJ5LmgKPiBAQCAt
NDIsMTYgKzQyLDE2IEBACj4gICBzdHJ1Y3Qgdm5vZGU7Cj4gICAKPiAgIHN0cnVjdCBkZW50cnkg
ewo+IC0JTElTVF9FTlRSWShkZW50cnkpIGRfbGluazsJLyogbGluayBmb3IgaGFzaCBsaXN0ICov
Cj4gKwlzdHJ1Y3QgdWtfaGxpc3Rfbm9kZSBkX2xpbms7CS8qIGxpbmsgZm9yIGhhc2ggbGlzdCAq
Lwo+ICAgCWludAkJZF9yZWZjbnQ7CS8qIHJlZmVyZW5jZSBjb3VudCAqLwo+ICAgCWNoYXIJCSpk
X3BhdGg7CS8qIHBvaW50ZXIgdG8gcGF0aCBpbiBmcyAqLwo+ICAgCXN0cnVjdCB2bm9kZQkqZF92
bm9kZTsKPiAgIAlzdHJ1Y3QgbW91bnQJKmRfbW91bnQ7Cj4gICAJc3RydWN0IGRlbnRyeSAgICpk
X3BhcmVudDsgLyogcG9pbnRlciB0byBwYXJlbnQgKi8KPiAtCUxJU1RfRU5UUlkoZGVudHJ5KSBk
X25hbWVzX2xpbms7IC8qIGxpbmsgZm8gdm5vZGU6OmRfbmFtZXMgKi8KPiAtCW11dGV4X3QJCWRf
bG9jazsKPiAtCUxJU1RfSEVBRCgsIGRlbnRyeSkgZF9jaGlsZHJlbjsKPiAtCUxJU1RfRU5UUlko
ZGVudHJ5KSBkX2NoaWxkcmVuX2xpbms7Cj4gKwlzdHJ1Y3QgdWtfbGlzdF9oZWFkIGRfbmFtZXNf
bGluazsgLyogbGluayBmbyB2bm9kZTo6ZF9uYW1lcyAqLwo+ICsJc3RydWN0IHVrX211dGV4CWRf
bG9jazsKPiArCXN0cnVjdCB1a19saXN0X2hlYWQgZF9jaGlsZF9saXN0Owo+ICsJc3RydWN0IHVr
X2xpc3RfaGVhZCBkX2NoaWxkX2xpbms7Cj4gICB9Owo+ICAgCj4gICAjZW5kaWYgLyogX09TVl9E
RU5UUllfSCAqLwo+IGRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvbW91
bnQuaCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9tb3VudC5oCj4gaW5kZXggZTEyYTEw
MzkuLjdhNjM4ZGJlIDEwMDY0NAo+IC0tLSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9t
b3VudC5oCj4gKysrIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmgKPiBAQCAt
NTIsNiArNTIsNyBAQCBzdHJ1Y3QgbW91bnQgewo+ICAgCXN0cnVjdCBkZW50cnkJKm1fcm9vdDsJ
Lyogcm9vdCB2bm9kZSAqLwo+ICAgCXN0cnVjdCBkZW50cnkJKm1fY292ZXJlZDsJLyogdm5vZGUg
Y292ZXJlZCBvbiBwYXJlbnQgZnMgKi8KPiAgIAl2b2lkCQkqbV9kYXRhOwkvKiBwcml2YXRlIGRh
dGEgZm9yIGZzICovCj4gKwlzdHJ1Y3QgdWtfbGlzdF9oZWFkIG1udF9saXN0Owo+ICAgCWZzaWRf
dCAJCW1fZnNpZDsgCS8qIGlkIHRoYXQgdW5pcXVlbHkgaWRlbnRpZmllcyB0aGUgZnMgKi8KPiAg
IH07Cj4gICAKPiBkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3ByZXgu
aCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9wcmV4LmgKPiBpbmRleCA4YTMwNmQ1NC4u
OGVlZDllNGQgMTAwNjQ0Cj4gLS0tIGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3ByZXgu
aAo+ICsrKyBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9wcmV4LmgKPiBAQCAtNDMsOSAr
NDMsNyBAQAo+ICAgCj4gICAjZGVmaW5lIERPX1JEV1IJCTB4Mgo+ICAgCj4gLSNkZWZpbmUgUEFH
RV9TSVpFCTQwOTYKPiAtI2RlZmluZSBQQUdFX01BU0sJKFBBR0VfU0laRS0xKQo+IC0jZGVmaW5l
IHJvdW5kX3BhZ2UoeCkJKCgoeCkgKyBQQUdFX01BU0spICYgflBBR0VfTUFTSykKPiArI2RlZmlu
ZSByb3VuZF9wYWdlKHgpCSgoKHgpICsgX19QQUdFX01BU0spICYgfl9fUEFHRV9NQVNLKQo+ICAg
Cj4gICBzaXplX3Qgc3RybGNhdChjaGFyICpkc3QsIGNvbnN0IGNoYXIgKnNyYywgc2l6ZV90IHNp
eik7Cj4gICBzaXplX3Qgc3RybGNweShjaGFyICpkc3QsIGNvbnN0IGNoYXIgKnNyYywgc2l6ZV90
IHNpeik7Cj4gZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5o
IGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Zub2RlLmgKPiBpbmRleCA0OWZkNGQzNi4u
YTRkYjljMTMgMTAwNjQ0Cj4gLS0tIGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Zub2Rl
LmgKPiArKysgYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUuaAo+IEBAIC00Nyw3
ICs0Nyw3IEBACj4gICBzdHJ1Y3QgdmZzb3BzOwo+ICAgc3RydWN0IHZub3BzOwo+ICAgc3RydWN0
IHZub2RlOwo+IC1zdHJ1Y3QgZmlsZTsKPiArc3RydWN0IHZmc2NvcmVfZmlsZTsKPiAgIAo+ICAg
LyoKPiAgICAqIFZub2RlIHR5cGVzLgo+IEBAIC03MCw3ICs3MCw3IEBAIGVudW0gdnR5cGUgewo+
ICAgICovCj4gICBzdHJ1Y3Qgdm5vZGUgewo+ICAgCXVpbnQ2NF90CXZfaW5vOwkJLyogaW5vZGUg
bnVtYmVyICovCj4gLQlMSVNUX0VOVFJZKHZub2RlKSB2X2xpbms7CS8qIGxpbmsgZm9yIGhhc2gg
bGlzdCAqLwo+ICsJc3RydWN0IHVrX2xpc3RfaGVhZCB2X2xpbms7CS8qIGxpbmsgZm9yIGhhc2gg
bGlzdCAqLwo+ICAgCXN0cnVjdCBtb3VudAkqdl9tb3VudDsJLyogbW91bnRlZCB2ZnMgcG9pbnRl
ciAqLwo+ICAgCXN0cnVjdCB2bm9wcwkqdl9vcDsJCS8qIHZub2RlIG9wZXJhdGlvbnMgKi8KPiAg
IAlpbnQJCXZfcmVmY250OwkvKiByZWZlcmVuY2UgY291bnQgKi8KPiBAQCAtNzgsOSArNzgsOCBA
QCBzdHJ1Y3Qgdm5vZGUgewo+ICAgCWludAkJdl9mbGFnczsJLyogdm5vZGUgZmxhZyAqLwo+ICAg
CW1vZGVfdAkJdl9tb2RlOwkJLyogZmlsZSBtb2RlICovCj4gICAJb2ZmX3QJCXZfc2l6ZTsJCS8q
IGZpbGUgc2l6ZSAqLwo+IC0JbXV0ZXhfdAkJdl9sb2NrOwkJLyogbG9jayBmb3IgdGhpcyB2bm9k
ZSAqLwo+IC0JTElTVF9IRUFEKCwgZGVudHJ5KSB2X25hbWVzOwkvKiBkaXJlY3RvcnkgZW50cmll
cyBwb2ludGluZyBhdCB0aGlzICovCj4gLQlpbnQJCXZfbnJsb2NrczsJLyogbG9jayBjb3VudCAo
Zm9yIGRlYnVnKSAqLwo+ICsJc3RydWN0IHVrX211dGV4CXZfbG9jazsJCS8qIGxvY2sgZm9yIHRo
aXMgdm5vZGUgKi8KPiArCXN0cnVjdCB1a19saXN0X2hlYWQgdl9uYW1lczsJLyogZGlyZWN0b3J5
IGVudHJpZXMgcG9pbnRpbmcgYXQgdGhpcyAqLwo+ICAgCXZvaWQJCSp2X2RhdGE7CS8qIHByaXZh
dGUgZGF0YSBmb3IgZnMgKi8KPiAgIH07Cj4gICAKPiBAQCAtMTI3LDE0ICsxMjYsMTQgQEAgc3Ry
dWN0IHZhdHRyIHsKPiAgICNkZWZpbmUgQVJDX0FDVElPTl9IT0xEICAgICAxCj4gICAjZGVmaW5l
IEFSQ19BQ1RJT05fUkVMRUFTRSAgMgo+ICAgCj4gLXR5cGVkZWYJaW50ICgqdm5vcF9vcGVuX3Qp
CShzdHJ1Y3QgZmlsZSAqKTsKPiAtdHlwZWRlZglpbnQgKCp2bm9wX2Nsb3NlX3QpCShzdHJ1Y3Qg
dm5vZGUgKiwgc3RydWN0IGZpbGUgKik7Cj4gLXR5cGVkZWYJaW50ICgqdm5vcF9yZWFkX3QpCShz
dHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IGZpbGUgKiwgc3RydWN0IHVpbyAqLCBpbnQpOwo+IC10eXBl
ZGVmCWludCAoKnZub3Bfd3JpdGVfdCkJKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgdWlvICosIGlu
dCk7Cj4gLXR5cGVkZWYJaW50ICgqdm5vcF9zZWVrX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0
IGZpbGUgKiwgb2ZmX3QsIG9mZl90KTsKPiAtdHlwZWRlZglpbnQgKCp2bm9wX2lvY3RsX3QpCShz
dHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IGZpbGUgKiwgdV9sb25nLCB2b2lkICopOwo+IC10eXBlZGVm
CWludCAoKnZub3BfZnN5bmNfdCkJKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTsKPiAt
dHlwZWRlZglpbnQgKCp2bm9wX3JlYWRkaXJfdCkJKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgZmls
ZSAqLCBzdHJ1Y3QgZGlyZW50ICopOwo+ICt0eXBlZGVmCWludCAoKnZub3Bfb3Blbl90KQkoc3Ry
dWN0IHZmc2NvcmVfZmlsZSAqKTsKPiArdHlwZWRlZglpbnQgKCp2bm9wX2Nsb3NlX3QpCShzdHJ1
Y3Qgdm5vZGUgKiwgc3RydWN0IHZmc2NvcmVfZmlsZSAqKTsKPiArdHlwZWRlZglzc2l6ZV90ICgq
dm5vcF9yZWFkX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHZmc2NvcmVfZmlsZSAqLCBzdHJ1
Y3QgdWlvICosIGludCk7Cj4gK3R5cGVkZWYJc3NpemVfdCAoKnZub3Bfd3JpdGVfdCkJKHN0cnVj
dCB2bm9kZSAqLCBzdHJ1Y3QgdWlvICosIGludCk7Cj4gK3R5cGVkZWYJb2ZmX3QgKCp2bm9wX3Nl
ZWtfdCkJKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgdmZzY29yZV9maWxlICosIG9mZl90LCBvZmZf
dCk7Cj4gK3R5cGVkZWYJaW50ICgqdm5vcF9pb2N0bF90KQkoc3RydWN0IHZub2RlICosIHN0cnVj
dCB2ZnNjb3JlX2ZpbGUgKiwgdW5zaWduZWQgbG9uZywgdm9pZCAqKTsKPiArdHlwZWRlZglpbnQg
KCp2bm9wX2ZzeW5jX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHZmc2NvcmVfZmlsZSAqKTsK
PiArdHlwZWRlZglpbnQgKCp2bm9wX3JlYWRkaXJfdCkJKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3Qg
dmZzY29yZV9maWxlICosIHN0cnVjdCBkaXJlbnQgKik7Cj4gICB0eXBlZGVmCWludCAoKnZub3Bf
bG9va3VwX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgY2hhciAqLCBzdHJ1Y3Qgdm5vZGUgKiopOwo+ICAg
dHlwZWRlZglpbnQgKCp2bm9wX2NyZWF0ZV90KQkoc3RydWN0IHZub2RlICosIGNoYXIgKiwgbW9k
ZV90KTsKPiAgIHR5cGVkZWYJaW50ICgqdm5vcF9yZW1vdmVfdCkJKHN0cnVjdCB2bm9kZSAqLCBz
dHJ1Y3Qgdm5vZGUgKiwgY2hhciAqKTsKPiBAQCAtMTQ3LDggKzE0Niw4IEBAIHR5cGVkZWYJaW50
ICgqdm5vcF9zZXRhdHRyX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHZhdHRyICopOwo+ICAg
dHlwZWRlZglpbnQgKCp2bm9wX2luYWN0aXZlX3QpCShzdHJ1Y3Qgdm5vZGUgKik7Cj4gICB0eXBl
ZGVmCWludCAoKnZub3BfdHJ1bmNhdGVfdCkJKHN0cnVjdCB2bm9kZSAqLCBvZmZfdCk7Cj4gICB0
eXBlZGVmCWludCAoKnZub3BfbGlua190KSAgICAgIChzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHZu
b2RlICosIGNoYXIgKik7Cj4gLXR5cGVkZWYgaW50ICgqdm5vcF9jYWNoZV90KSAoc3RydWN0IHZu
b2RlICosIHN0cnVjdCBmaWxlICosIHN0cnVjdCB1aW8gKik7Cj4gLXR5cGVkZWYgaW50ICgqdm5v
cF9mYWxsb2NhdGVfdCkgKHN0cnVjdCB2bm9kZSAqLCBpbnQsIGxvZmZfdCwgbG9mZl90KTsKPiAr
dHlwZWRlZiBpbnQgKCp2bm9wX2NhY2hlX3QpIChzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHZmc2Nv
cmVfZmlsZSAqLCBzdHJ1Y3QgdWlvICopOwo+ICt0eXBlZGVmIGludCAoKnZub3BfZmFsbG9jYXRl
X3QpIChzdHJ1Y3Qgdm5vZGUgKiwgaW50LCBvZmZfdCwgb2ZmX3QpOwo+ICAgdHlwZWRlZiBpbnQg
KCp2bm9wX3JlYWRsaW5rX3QpICAoc3RydWN0IHZub2RlICosIHN0cnVjdCB1aW8gKik7Cj4gICB0
eXBlZGVmIGludCAoKnZub3Bfc3ltbGlua190KSAgIChzdHJ1Y3Qgdm5vZGUgKiwgY2hhciAqLCBj
aGFyICopOwo+ICAgCj4gZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2xvb2t1cC5jIGIvbGliL3Zm
c2NvcmUvbG9va3VwLmMKPiBpbmRleCA5ODM3ZTgxZi4uMWUyYzQwMDUgMTAwNjQ0Cj4gLS0tIGEv
bGliL3Zmc2NvcmUvbG9va3VwLmMKPiArKysgYi9saWIvdmZzY29yZS9sb29rdXAuYwo+IEBAIC0x
MTEsNyArMTExLDcgQEAgbmFtZWkoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IGRlbnRyeSAqKmRw
cCkKPiAgIAlzdHJ1Y3Qgdm5vZGUgKmR2cCwgKnZwOwo+ICAgCWludCBlcnJvciwgaTsKPiAgIAlp
bnQgbGlua3NfZm9sbG93ZWQ7Cj4gLQlib29sIG5lZWRfY29udGludWU7Cj4gKwlpbnQgbmVlZF9j
b250aW51ZTsKPiAgIAo+ICAgCURQUklOVEYoVkZTREJfVk5PREUsICgibmFtZWk6IHBhdGg9JXNc
biIsIHBhdGgpKTsKPiAgIAo+IEBAIC0xMTksNyArMTE5LDcgQEAgbmFtZWkoY29uc3QgY2hhciAq
cGF0aCwgc3RydWN0IGRlbnRyeSAqKmRwcCkKPiAgIAlzdHJsY3B5KGZwLCBwYXRoLCBQQVRIX01B
WCk7Cj4gICAKPiAgIAlkbyB7Cj4gLQkJbmVlZF9jb250aW51ZSA9IGZhbHNlOwo+ICsJCW5lZWRf
Y29udGludWUgPSAwOwo+ICAgCQkvKgo+ICAgCQkgKiBDb252ZXJ0IGEgZnVsbCBwYXRoIG5hbWUg
dG8gaXRzIG1vdW50IHBvaW50IGFuZAo+ICAgCQkgKiB0aGUgbG9jYWwgbm9kZSBpbiB0aGUgZmls
ZSBzeXN0ZW0uCj4gQEAgLTE0Myw3ICsxNDMsNyBAQCBuYW1laShjb25zdCBjaGFyICpwYXRoLCBz
dHJ1Y3QgZGVudHJ5ICoqZHBwKQo+ICAgCQkgKi8KPiAgIAkJZGRwID0gbXAtPm1fcm9vdDsKPiAg
IAkJaWYgKCFkZHApIHsKPiAtCQkJc3lzX3BhbmljKCJWRlM6IG5vIHJvb3QiKTsKPiArCQkJVUtf
Q1JBU0goIlZGUzogbm8gcm9vdCIpOwo+ICAgCQl9Cj4gICAJCWRyZWYoZGRwKTsKPiAgIAo+IEBA
IC0xNzcsNyArMTc3LDcgQEAgbmFtZWkoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IGRlbnRyeSAq
KmRwcCkKPiAgIAkJCWR2cCA9IGRkcC0+ZF92bm9kZTsKPiAgIAkJCXZuX2xvY2soZHZwKTsKPiAg
IAkJCWRwID0gZGVudHJ5X2xvb2t1cChtcCwgbm9kZSk7Cj4gLQkJCWlmIChkcCA9PSBudWxscHRy
KSB7Cj4gKwkJCWlmIChkcCA9PSBOVUxMKSB7Cj4gICAJCQkJLyogRmluZCBhIHZub2RlIGluIHRo
aXMgZGlyZWN0b3J5LiAqLwo+ICAgCQkJCWVycm9yID0gVk9QX0xPT0tVUChkdnAsIG5hbWUsICZ2
cCk7Cj4gICAJCQkJaWYgKGVycm9yKSB7Cj4gQEAgLTIwOSwxNyArMjA5LDE3IEBAIG5hbWVpKGNv
bnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBkZW50cnkgKipkcHApCj4gICAJCQkJZHJlbGUoZHApOwo+
ICAgCj4gICAJCQkJcCAgICAgICA9IGZwOwo+IC0JCQkJZHAgICAgICA9IG51bGxwdHI7Cj4gLQkJ
CQlkZHAgICAgID0gbnVsbHB0cjsKPiAtCQkJCXZwICAgICAgPSBudWxscHRyOwo+IC0JCQkJZHZw
ICAgICA9IG51bGxwdHI7Cj4gKwkJCQlkcCAgICAgID0gTlVMTDsKPiArCQkJCWRkcCAgICAgPSBO
VUxMOwo+ICsJCQkJdnAgICAgICA9IE5VTEw7Cj4gKwkJCQlkdnAgICAgID0gTlVMTDsKPiAgIAkJ
CQluYW1lWzBdID0gMDsKPiAgIAkJCQlub2RlWzBdID0gMDsKPiAgIAo+ICAgCQkJCWlmICgrK2xp
bmtzX2ZvbGxvd2VkID49IE1BWFNZTUxJTktTKSB7Cj4gICAJCQkJCXJldHVybiAoRUxPT1ApOwo+
ICAgCQkJCX0KPiAtCQkJCW5lZWRfY29udGludWUgPSB0cnVlOwo+ICsJCQkJbmVlZF9jb250aW51
ZSA9IDE7Cj4gICAJCQkJYnJlYWs7Cj4gICAJCQl9Cj4gICAKPiBAQCAtMjI4LDcgKzIyOCw3IEBA
IG5hbWVpKGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBkZW50cnkgKipkcHApCj4gICAJCQkJcmV0
dXJuIEVOT1RESVI7Cj4gICAJCQl9Cj4gICAJCX0KPiAtCX0gd2hpbGUgKG5lZWRfY29udGludWUg
PT0gdHJ1ZSk7Cj4gKwl9IHdoaWxlIChuZWVkX2NvbnRpbnVlKTsKPiAgIAo+ICAgCSpkcHAgPSBk
cDsKPiAgIAlyZXR1cm4gMDsKPiBAQCAtMjUzLDE0ICsyNTMsMTQgQEAgbmFtZWlfbGFzdF9ub2Zv
bGxvdyhjaGFyICpwYXRoLCBzdHJ1Y3QgZGVudHJ5ICpkZHAsIHN0cnVjdCBkZW50cnkgKipkcHAp
Cj4gICAJc3RydWN0IHZub2RlICAqdnA7Cj4gICAJY2hhciBub2RlW1BBVEhfTUFYXTsKPiAgIAo+
IC0JZHZwICA9IG51bGxwdHI7Cj4gKwlkdnAgID0gTlVMTDsKPiAgIAo+ICAgCWlmIChwYXRoWzBd
ICE9ICcvJykgewo+ICAgCQlyZXR1cm4gKEVOT1RESVIpOwo+ICAgCX0KPiAgIAo+ICAgCW5hbWUg
PSBzdHJyY2hyKHBhdGgsICcvJyk7Cj4gLQlpZiAobmFtZSA9PSBudWxscHRyKSB7Cj4gKwlpZiAo
bmFtZSA9PSBOVUxMKSB7Cj4gICAJCXJldHVybiAoRU5PRU5UKTsKPiAgIAl9Cj4gICAJbmFtZSsr
Owo+IEBAIC0yODMsNyArMjgzLDcgQEAgbmFtZWlfbGFzdF9ub2ZvbGxvdyhjaGFyICpwYXRoLCBz
dHJ1Y3QgZGVudHJ5ICpkZHAsIHN0cnVjdCBkZW50cnkgKipkcHApCj4gICAJZHZwID0gZGRwLT5k
X3Zub2RlOwo+ICAgCXZuX2xvY2soZHZwKTsKPiAgIAlkcCA9IGRlbnRyeV9sb29rdXAobXAsIG5v
ZGUpOwo+IC0JaWYgKGRwID09IG51bGxwdHIpIHsKPiArCWlmIChkcCA9PSBOVUxMKSB7Cj4gICAJ
CWVycm9yID0gVk9QX0xPT0tVUChkdnAsIG5hbWUsICZ2cCk7Cj4gICAJCWlmIChlcnJvciAhPSAw
KSB7Cj4gICAJCQlnb3RvIG91dDsKPiBAQCAtMjkyLDcgKzI5Miw3IEBAIG5hbWVpX2xhc3Rfbm9m
b2xsb3coY2hhciAqcGF0aCwgc3RydWN0IGRlbnRyeSAqZGRwLCBzdHJ1Y3QgZGVudHJ5ICoqZHBw
KQo+ICAgCQlkcCA9IGRlbnRyeV9hbGxvYyhkZHAsIHZwLCBub2RlKTsKPiAgIAkJdnB1dCh2cCk7
Cj4gICAKPiAtCQlpZiAoZHAgPT0gbnVsbHB0cikgewo+ICsJCWlmIChkcCA9PSBOVUxMKSB7Cj4g
ICAJCQllcnJvciA9IEVOT01FTTsKPiAgIAkJCWdvdG8gb3V0Owo+ICAgCQl9Cj4gQEAgLTMwMSw3
ICszMDEsNyBAQCBuYW1laV9sYXN0X25vZm9sbG93KGNoYXIgKnBhdGgsIHN0cnVjdCBkZW50cnkg
KmRkcCwgc3RydWN0IGRlbnRyeSAqKmRwcCkKPiAgIAkqZHBwICA9IGRwOwo+ICAgCWVycm9yID0g
MDsKPiAgIG91dDoKPiAtCWlmIChkdnAgIT0gbnVsbHB0cikgewo+ICsJaWYgKGR2cCAhPSBOVUxM
KSB7Cj4gICAJCXZuX3VubG9jayhkdnApOwo+ICAgCX0KPiAgIAlyZXR1cm4gKGVycm9yKTsKPiBk
aWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvbWFpbi5jIGIvbGliL3Zmc2NvcmUvbWFpbi5jCj4gaW5k
ZXggOTBkZjNkNzEuLjgyZTQ1OTE3IDEwMDY0NAo+IC0tLSBhL2xpYi92ZnNjb3JlL21haW4uYwo+
ICsrKyBiL2xpYi92ZnNjb3JlL21haW4uYwo+IEBAIC03OSw3ICs3OSw3IEBAIGludCBvcGVuKGNv
bnN0IGNoYXIgKnBhdGhuYW1lLCBpbnQgZmxhZ3MsIC4uLikKPiAgIAo+ICAgCXN0cnVjdCB0YXNr
ICp0ID0gbWFpbl90YXNrOwo+ICAgCWNoYXIgcGF0aFtQQVRIX01BWF07Cj4gLQlzdHJ1Y3QgZmls
ZSAqZnA7Cj4gKwlzdHJ1Y3QgdmZzY29yZV9maWxlICpmcDsKPiAgIAlpbnQgZmQsIGVycm9yOwo+
ICAgCWludCBhY2M7Cj4gICAKPiBAQCAtMTM1LDcgKzEzNSw3IEBAIGludCBvcGVuYXQoaW50IGRp
cmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwgaW50IGZsYWdzLCAuLi4pCj4gICAJCXJldHVybiBv
cGVuKHBhdGhuYW1lLCBmbGFncywgbW9kZSk7Cj4gICAJfQo+ICAgCj4gLQlzdHJ1Y3QgZmlsZSAq
ZnA7Cj4gKwlzdHJ1Y3QgdmZzY29yZV9maWxlICpmcDsKPiAgIAlpbnQgZXJyb3IgPSBmZ2V0KGRp
cmZkLCAmZnApOwo+ICAgCWlmIChlcnJvcikgewo+ICAgCQllcnJubyA9IGVycm9yOwo+IEBAIC0x
OTcsNyArMTk3LDcgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbWtub2RfZXJyLCAiJWQiLCBpbnQp
Owo+ICAgCj4gICBpbnQgX194bWtub2QoaW50IHZlciwgY29uc3QgY2hhciAqcGF0aG5hbWUsIG1v
ZGVfdCBtb2RlLCBkZXZfdCAqZGV2KQo+ICAgewo+IC0JYXNzZXJ0KHZlciA9PSAwKTsgLy8gT24g
eDg2LTY0IExpbnV4LCBfTUtOT0RfVkVSX0xJTlVYIGlzIDAuCj4gKwlVS19BU1NFUlQodmVyID09
IDApOyAvLyBPbiB4ODYtNjQgTGludXgsIF9NS05PRF9WRVJfTElOVVggaXMgMC4KPiAgIAlzdHJ1
Y3QgdGFzayAqdCA9IG1haW5fdGFzazsKPiAgIAljaGFyIHBhdGhbUEFUSF9NQVhdOwo+ICAgCWlu
dCBlcnJvcjsKPiBAQCAtMjMxLDcgKzIzMSw3IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2xzZWVr
X2VyciwgIiVkIiwgaW50KTsKPiAgIAo+ICAgb2ZmX3QgbHNlZWsoaW50IGZkLCBvZmZfdCBvZmZz
ZXQsIGludCB3aGVuY2UpCj4gICB7Cj4gLQlzdHJ1Y3QgZmlsZSAqZnA7Cj4gKwlzdHJ1Y3QgdmZz
Y29yZV9maWxlICpmcDsKPiAgIAlvZmZfdCBvcmc7Cj4gICAJaW50IGVycm9yOwo+ICAgCj4gQEAg
LTI2NSwxMSArMjY1LDEyIEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX3ByZWFkX2VyciwgIiVkIiwg
aW50KTsKPiAgIC8vICphbmQqIGEgbm9uLXplcm8gbnVtYmVyIG9mIHdyaXR0ZW4gYnl0ZXMuIElu
IHRoYXQgY2FzZSwgd2UgbmVlZCB0byB6ZXJvIHRoZQo+ICAgLy8gZXJyb3IsIHNvIHRoZSBzeXN0
ZW0gY2FsbCBhcHBlYXIgYSBzdWNjZXNzZnVsIHBhcnRpYWwgcmVhZC93cml0ZS4KPiAgIC8vIElu
IEZyZWVCU0QsIGRvZmlsZXdyaXRlKCkgYW5kIGRvZmlsZXJlYWQoKSAoc3lzX2dlbmVyaWMuYykg
ZG8gdGhpcyB0b28uCj4gLXN0YXRpYyBpbmxpbmUgYm9vbCBoYXNfZXJyb3IoaW50IGVycm9yLCBp
bnQgYnl0ZXMpCj4gK3N0YXRpYyBpbmxpbmUgaW50IGhhc19lcnJvcihpbnQgZXJyb3IsIGludCBi
eXRlcykKPiAgIHsKPiArCS8qIFRPRE86IE9TdiBjaGVja3MgYWxzbyBmb3IgRVJFU1RBUlQgKi8K
PiAgIAlyZXR1cm4gZXJyb3IgJiYgKAo+ICAgCQkJKGJ5dGVzID09IDApIHx8Cj4gLQkJCShlcnJv
ciAhPSBFV09VTERCTE9DSyAmJiBlcnJvciAhPSBFSU5UUiAmJiBlcnJvciAhPSBFUkVTVEFSVCkp
Owo+ICsJCQkoZXJyb3IgIT0gRVdPVUxEQkxPQ0sgJiYgZXJyb3IgIT0gRUlOVFIpKTsKPiAgIH0K
PiAgIAo+ICAgCj4gQEAgLTI4MCw3ICsyODEsNyBAQCBzc2l6ZV90IHByZWFkKGludCBmZCwgdm9p
ZCAqYnVmLCBzaXplX3QgY291bnQsIG9mZl90IG9mZnNldCkKPiAgIAkJCS5pb3ZfYmFzZQk9IGJ1
ZiwKPiAgIAkJCS5pb3ZfbGVuCT0gY291bnQsCj4gICAJfTsKPiAtCXN0cnVjdCBmaWxlICpmcDsK
PiArCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwOwo+ICAgCXNpemVfdCBieXRlczsKPiAgIAlpbnQg
ZXJyb3I7Cj4gICAKPiBAQCAtMzIwLDcgKzMyMSw3IEBAIHNzaXplX3QgcHdyaXRlKGludCBmZCwg
Y29uc3Qgdm9pZCAqYnVmLCBzaXplX3QgY291bnQsIG9mZl90IG9mZnNldCkKPiAgIAkJCS5pb3Zf
YmFzZQk9ICh2b2lkICopYnVmLAo+ICAgCQkJLmlvdl9sZW4JPSBjb3VudCwKPiAgIAl9Owo+IC0J
c3RydWN0IGZpbGUgKmZwOwo+ICsJc3RydWN0IHZmc2NvcmVfZmlsZSAqZnA7Cj4gICAJc2l6ZV90
IGJ5dGVzOwo+ICAgCWludCBlcnJvcjsKPiAgIAo+IEBAIC0zNTEsNyArMzUyLDcgQEAgc3NpemVf
dCB3cml0ZShpbnQgZmQsIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGNvdW50KQo+ICAgCj4gICBz
c2l6ZV90IHByZWFkdihpbnQgZmQsIGNvbnN0IHN0cnVjdCBpb3ZlYyAqaW92LCBpbnQgaW92Y250
LCBvZmZfdCBvZmZzZXQpCj4gICB7Cj4gLQlzdHJ1Y3QgZmlsZSAqZnA7Cj4gKwlzdHJ1Y3QgdmZz
Y29yZV9maWxlICpmcDsKPiAgIAlzaXplX3QgYnl0ZXM7Cj4gICAJaW50IGVycm9yOwo+ICAgCj4g
QEAgLTM4NCw3ICszODUsNyBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19wd3JpdGV2X2VyciwgIiVk
IiwgaW50KTsKPiAgIAo+ICAgc3NpemVfdCBwd3JpdGV2KGludCBmZCwgY29uc3Qgc3RydWN0IGlv
dmVjICppb3YsIGludCBpb3ZjbnQsIG9mZl90IG9mZnNldCkKPiAgIHsKPiAtCXN0cnVjdCBmaWxl
ICpmcDsKPiArCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwOwo+ICAgCXNpemVfdCBieXRlczsKPiAg
IAlpbnQgZXJyb3I7Cj4gICAKPiBAQCAtNDE5LDcgKzQyMCw3IEBAIFRSQUNFUE9JTlQodHJhY2Vf
dmZzX2lvY3RsX2VyciwgIiVkIiwgaW50KTsKPiAgIAo+ICAgaW50IGlvY3RsKGludCBmZCwgdW5z
aWduZWQgbG9uZyBpbnQgcmVxdWVzdCwgLi4uKQo+ICAgewo+IC0Jc3RydWN0IGZpbGUgKmZwOwo+
ICsJc3RydWN0IHZmc2NvcmVfZmlsZSAqZnA7Cj4gICAJaW50IGVycm9yOwo+ICAgCXZhX2xpc3Qg
YXA7Cj4gICAJdm9pZCogYXJnOwo+IEBAIC00NTYsNyArNDU3LDcgQEAgVFJBQ0VQT0lOVCh0cmFj
ZV92ZnNfZnN5bmNfZXJyLCAiJWQiLCBpbnQpOwo+ICAgCj4gICBpbnQgZnN5bmMoaW50IGZkKQo+
ICAgewo+IC0Jc3RydWN0IGZpbGUgKmZwOwo+ICsJc3RydWN0IHZmc2NvcmVfZmlsZSAqZnA7Cj4g
ICAJaW50IGVycm9yOwo+ICAgCj4gICAJdHJhY2VfdmZzX2ZzeW5jKGZkKTsKPiBAQCAtNDkwLDcg
KzQ5MSw3IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2ZzdGF0X2VyciwgIiVkIiwgaW50KTsKPiAg
IAo+ICAgaW50IF9fZnhzdGF0KGludCB2ZXIsIGludCBmZCwgc3RydWN0IHN0YXQgKnN0KQo+ICAg
ewo+IC0Jc3RydWN0IGZpbGUgKmZwOwo+ICsJc3RydWN0IHZmc2NvcmVfZmlsZSAqZnA7Cj4gICAJ
aW50IGVycm9yOwo+ICAgCj4gICAJdHJhY2VfdmZzX2ZzdGF0KGZkLCBzdCk7Cj4gQEAgLTUyNiw3
ICs1MjcsNyBAQCBpbnQgX19meHN0YXRhdChpbnQgdmVyLCBpbnQgZGlyZmQsIGNvbnN0IGNoYXIg
KnBhdGhuYW1lLCBzdHJ1Y3Qgc3RhdCAqc3QsCj4gICAJCWludCBmbGFncykKPiAgIHsKPiAgIAlp
ZiAoZmxhZ3MgJiBBVF9TWU1MSU5LX05PRk9MTE9XKSB7Cj4gLQkJVU5JTVBMRU1FTlRFRCgiZnN0
YXRhdCgpIHdpdGggQVRfU1lNTElOS19OT0ZPTExPVyIpOwo+ICsJCVVLX0NSQVNIKCJVTklNUExF
TUVOVEVEOiBmc3RhdGF0KCkgd2l0aCBBVF9TWU1MSU5LX05PRk9MTE9XIik7Cj4gICAJfQo+ICAg
Cj4gICAJaWYgKHBhdGhuYW1lWzBdID09ICcvJyB8fCBkaXJmZCA9PSBBVF9GRENXRCkgewo+IEBA
IC01MzgsNyArNTM5LDcgQEAgaW50IF9fZnhzdGF0YXQoaW50IHZlciwgaW50IGRpcmZkLCBjb25z
dCBjaGFyICpwYXRobmFtZSwgc3RydWN0IHN0YXQgKnN0LAo+ICAgCQlyZXR1cm4gZnN0YXQoZGly
ZmQsIHN0KTsKPiAgIAl9Cj4gICAKPiAtCXN0cnVjdCBmaWxlICpmcDsKPiArCXN0cnVjdCB2ZnNj
b3JlX2ZpbGUgKmZwOwo+ICAgCWludCBlcnJvciA9IGZnZXQoZGlyZmQsICZmcCk7Cj4gICAJaWYg
KGVycm9yKSB7Cj4gICAJCWVycm5vID0gZXJyb3I7Cj4gQEAgLTU3NCw3ICs1NzUsOSBAQCBMRlM2
NChmc3RhdGF0KTsKPiAgIAo+ICAgaW50IGZsb2NrKGludCBmZCwgaW50IG9wZXJhdGlvbikKPiAg
IHsKPiAtCWlmICghZmlsZXJlZl9mcm9tX2ZkKGZkKSkgewo+ICsJc3RydWN0IHZmc2NvcmVfZmls
ZSAqZmlsZTsKPiArCj4gKwlpZiAoIWZnZXQoZmQsICZmaWxlKSkgewo+ICAgCQlyZXR1cm4gbGli
Y19lcnJvcihFQkFERik7Cj4gICAJfQo+ICAgCj4gQEAgLTU5Miw3ICs1OTUsNyBAQCBpbnQgZmxv
Y2soaW50IGZkLCBpbnQgb3BlcmF0aW9uKQo+ICAgCXJldHVybiAwOwo+ICAgfQo+ICAgCj4gLVRS
QUNFUE9JTlQodHJhY2VfdmZzX3JlYWRkaXIsICIlZCAlcCIsIGludCwgZGlyZW50Kik7Cj4gK1RS
QUNFUE9JTlQodHJhY2VfdmZzX3JlYWRkaXIsICIlZCAlcCIsIGludCwgc3RydWN0IGRpcmVudCop
Owo+ICAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfcmVhZGRpcl9yZXQsICIiKTsKPiAgIFRSQUNFUE9J
TlQodHJhY2VfdmZzX3JlYWRkaXJfZXJyLCAiJWQiLCBpbnQpOwo+ICAgCj4gQEAgLTYxMSw3ICs2
MTQsNyBAQCBESVIgKm9wZW5kaXIoY29uc3QgY2hhciAqcGF0aCkKPiAgIAlkaXItPmZkID0gb3Bl
bihwYXRoLCBPX1JET05MWSk7Cj4gICAJaWYgKGRpci0+ZmQgPCAwKSB7Cj4gICAJCWZyZWUoZGly
KTsKPiAtCQlyZXR1cm4gbnVsbHB0cjsKPiArCQlyZXR1cm4gTlVMTDsKPiAgIAl9Cj4gICAJcmV0
dXJuIGRpcjsKPiAgIH0KPiBAQCAtNjIxLDExICs2MjQsMTEgQEAgRElSICpmZG9wZW5kaXIoaW50
IGZkKQo+ICAgCURJUiAqZGlyOwo+ICAgCXN0cnVjdCBzdGF0IHN0Owo+ICAgCWlmIChmc3RhdChm
ZCwgJnN0KSA8IDApIHsKPiAtCQlyZXR1cm4gbnVsbHB0cjsKPiArCQlyZXR1cm4gTlVMTDsKPiAg
IAl9Cj4gICAJaWYgKCFTX0lTRElSKHN0LnN0X21vZGUpKSB7Cj4gICAJCWVycm5vID0gRU5PVERJ
UjsKPiAtCQlyZXR1cm4gbnVsbHB0cjsKPiArCQlyZXR1cm4gTlVMTDsKPiAgIAl9Cj4gICAJZGly
ID0gbWFsbG9jKHNpemVvZigqZGlyKSk7Cj4gICAJaWYgKCFkaXIpIHsKPiBAQCAtNjY5LDEzICs2
NzIsMTEgQEAgc3RydWN0IGRpcmVudCAqcmVhZGRpcihESVIgKmRpcikKPiAgIGludCByZWFkZGly
X3IoRElSICpkaXIsIHN0cnVjdCBkaXJlbnQgKmVudHJ5LCBzdHJ1Y3QgZGlyZW50ICoqcmVzdWx0
KQo+ICAgewo+ICAgCWludCBlcnJvcjsKPiAtCXN0cnVjdCBmaWxlICpmcDsKPiArCXN0cnVjdCB2
ZnNjb3JlX2ZpbGUgKmZwOwo+ICAgCj4gICAJdHJhY2VfdmZzX3JlYWRkaXIoZGlyLT5mZCwgZW50
cnkpOwo+ICAgCWVycm9yID0gZmdldChkaXItPmZkLCAmZnApOwo+IC0JaWYgKGVycm9yKSB7Cj4g
LQkJdHJhY2VfdmZzX3JlYWRkaXJfZXJyKGVycm9yKTsKPiAtCX0gZWxzZSB7Cj4gKwlpZiAoIWVy
cm9yKSB7Cj4gICAJCWVycm9yID0gc3lzX3JlYWRkaXIoZnAsIGVudHJ5KTsKPiAgIAkJZmRyb3Ao
ZnApOwo+ICAgCQlpZiAoZXJyb3IpIHsKPiBAQCAtNjg4LDcgKzY4OSw3IEBAIGludCByZWFkZGly
X3IoRElSICpkaXIsIHN0cnVjdCBkaXJlbnQgKmVudHJ5LCBzdHJ1Y3QgZGlyZW50ICoqcmVzdWx0
KQo+ICAgCWVudHJ5LT5kX3JlY2xlbiA9IHNpemVvZigqZW50cnkpOwo+ICAgCj4gICAJaWYgKGVy
cm9yKSB7Cj4gLQkJKnJlc3VsdCA9IG51bGxwdHI7Cj4gKwkJKnJlc3VsdCA9IE5VTEw7Cj4gICAJ
fSBlbHNlIHsKPiAgIAkJKnJlc3VsdCA9IGVudHJ5Owo+ICAgCX0KPiBAQCAtNzA2LDcgKzcwNyw3
IEBAIHN0cnVjdCBkaXJlbnQgKnJlYWRkaXI2NChESVIgKmRpcikgX19hdHRyaWJ1dGVfXygoYWxp
YXMoInJlYWRkaXIiKSkpOwo+ICAgCj4gICB2b2lkIHJld2luZGRpcihESVIgKmRpcnApCj4gICB7
Cj4gLQlzdHJ1Y3QgZmlsZSAqZnA7Cj4gKwlzdHJ1Y3QgdmZzY29yZV9maWxlICpmcDsKPiAgIAo+
ICAgCWludCBlcnJvciA9IGZnZXQoZGlycC0+ZmQsICZmcCk7Cj4gICAJaWYgKGVycm9yKSB7Cj4g
QEAgLTcyMiw3ICs3MjMsNyBAQCB2b2lkIHJld2luZGRpcihESVIgKmRpcnApCj4gICAKPiAgIGxv
bmcgdGVsbGRpcihESVIgKmRpcnApCj4gICB7Cj4gLQlzdHJ1Y3QgZmlsZSAqZnA7Cj4gKwlzdHJ1
Y3QgdmZzY29yZV9maWxlICpmcDsKPiAgIAlpbnQgZXJyb3IgPSBmZ2V0KGRpcnAtPmZkLCAmZnAp
Owo+ICAgCWlmIChlcnJvcikgewo+ICAgCQlyZXR1cm4gbGliY19lcnJvcihlcnJvcik7Cj4gQEAg
LTczOSw3ICs3NDAsNyBAQCBsb25nIHRlbGxkaXIoRElSICpkaXJwKQo+ICAgCj4gICB2b2lkIHNl
ZWtkaXIoRElSICpkaXJwLCBsb25nIGxvYykKPiAgIHsKPiAtCXN0cnVjdCBmaWxlICpmcDsKPiAr
CXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwOwo+ICAgCWludCBlcnJvciA9IGZnZXQoZGlycC0+ZmQs
ICZmcCk7Cj4gICAJaWYgKGVycm9yKSB7Cj4gICAJCS8vIFBPU0lYIHNwZWNpZmllcyBzZWVrZGly
KCkgY2Fubm90IHJldHVybiBlcnJvcnMuCj4gQEAgLTc5MCw3ICs3OTEsNyBAQCBpbnQgcm1kaXIo
Y29uc3QgY2hhciAqcGF0aG5hbWUpCj4gICAKPiAgIAl0cmFjZV92ZnNfcm1kaXIocGF0aG5hbWUp
Owo+ICAgCWVycm9yID0gRU5PRU5UOwo+IC0JaWYgKHBhdGhuYW1lID09IG51bGxwdHIpCj4gKwlp
ZiAocGF0aG5hbWUgPT0gTlVMTCkKPiAgIAkJZ290byBvdXRfZXJybm87Cj4gICAJaWYgKChlcnJv
ciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwgVldSSVRFLCBwYXRoKSkgIT0gMCkKPiAgIAkJZ290
byBvdXRfZXJybm87Cj4gQEAgLTgyNiw5ICs4MjcsOSBAQCBnZXRfbGFzdF9jb21wb25lbnQoY29u
c3QgY2hhciAqcGF0aCwgY2hhciAqZHN0KQo+ICAgCWRzdFtsZW5dID0gMDsKPiAgIH0KPiAgIAo+
IC1zdGF0aWMgYm9vbCBudWxsX29yX2VtcHR5KGNvbnN0IGNoYXIgKnN0cikKPiArc3RhdGljIGlu
dCBudWxsX29yX2VtcHR5KGNvbnN0IGNoYXIgKnN0cikKPiAgIHsKPiAtCXJldHVybiBzdHIgPT0g
bnVsbHB0ciB8fCAqc3RyID09ICdcMCc7Cj4gKwlyZXR1cm4gc3RyID09IE5VTEwgfHwgKnN0ciA9
PSAnXDAnOwo+ICAgfQo+ICAgCj4gICBUUkFDRVBPSU5UKHRyYWNlX3Zmc19yZW5hbWUsICJcIiVz
XCIgXCIlc1wiIiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKTsKPiBAQCAtODgzLDcgKzg4NCw3
IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2NoZGlyX2VyciwgIiVkIiwgaW50KTsKPiAgIHN0YXRp
YyBpbnQKPiAgIF9fZG9fZmNoZGlyKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwLCBzdHJ1Y3QgdGFz
ayAqdCkKPiAgIHsKPiAtCXN0cnVjdCBmaWxlICpvbGQgPSBudWxscHRyOwo+ICsJc3RydWN0IHZm
c2NvcmVfZmlsZSAqb2xkID0gTlVMTDsKPiAgIAo+ICAgCVVLX0FTU0VSVCh0KTsKPiAgIAo+IEBA
IC05MDcsMTEgKzkwOCwxMSBAQCBpbnQgY2hkaXIoY29uc3QgY2hhciAqcGF0aG5hbWUpCj4gICAJ
dHJhY2VfdmZzX2NoZGlyKHBhdGhuYW1lKTsKPiAgIAlzdHJ1Y3QgdGFzayAqdCA9IG1haW5fdGFz
azsKPiAgIAljaGFyIHBhdGhbUEFUSF9NQVhdOwo+IC0Jc3RydWN0IGZpbGUgKmZwOwo+ICsJc3Ry
dWN0IHZmc2NvcmVfZmlsZSAqZnA7Cj4gICAJaW50IGVycm9yOwo+ICAgCj4gICAJZXJyb3IgPSBF
Tk9FTlQ7Cj4gLQlpZiAocGF0aG5hbWUgPT0gbnVsbHB0cikKPiArCWlmIChwYXRobmFtZSA9PSBO
VUxMKQo+ICAgCQlnb3RvIG91dF9lcnJubzsKPiAgIAo+ICAgCWlmICgoZXJyb3IgPSB0YXNrX2Nv
bnYodCwgcGF0aG5hbWUsIFZSRUFELCBwYXRoKSkgIT0gMCkKPiBAQCAtOTQ1LDcgKzk0Niw3IEBA
IGludCBmY2hkaXIoaW50IGZkKQo+ICAgewo+ICAgCXRyYWNlX3Zmc19mY2hkaXIoZmQpOwo+ICAg
CXN0cnVjdCB0YXNrICp0ID0gbWFpbl90YXNrOwo+IC0Jc3RydWN0IGZpbGUgKmZwOwo+ICsJc3Ry
dWN0IHZmc2NvcmVfZmlsZSAqZnA7Cj4gICAJaW50IGVycm9yOwo+ICAgCj4gICAJZXJyb3IgPSBm
Z2V0KGZkLCAmZnApOwo+IEBAIC05ODEsNyArOTgyLDcgQEAgaW50IGxpbmsoY29uc3QgY2hhciAq
b2xkcGF0aCwgY29uc3QgY2hhciAqbmV3cGF0aCkKPiAgIAl0cmFjZV92ZnNfbGluayhvbGRwYXRo
LCBuZXdwYXRoKTsKPiAgIAo+ICAgCWVycm9yID0gRU5PRU5UOwo+IC0JaWYgKG9sZHBhdGggPT0g
bnVsbHB0ciB8fCBuZXdwYXRoID09IG51bGxwdHIpCj4gKwlpZiAob2xkcGF0aCA9PSBOVUxMIHx8
IG5ld3BhdGggPT0gTlVMTCkKPiAgIAkJZ290byBvdXRfZXJybm87Cj4gICAJaWYgKChlcnJvciA9
IHRhc2tfY29udih0LCBvbGRwYXRoLCBWV1JJVEUsIHBhdGgxKSkgIT0gMCkKPiAgIAkJZ290byBv
dXRfZXJybm87Cj4gQEAgLTEwMTEsNyArMTAxMiw3IEBAIGludCBzeW1saW5rKGNvbnN0IGNoYXIg
Km9sZHBhdGgsIGNvbnN0IGNoYXIgKm5ld3BhdGgpCj4gICAJdHJhY2VfdmZzX3N5bWxpbmsob2xk
cGF0aCwgbmV3cGF0aCk7Cj4gICAKPiAgIAllcnJvciA9IEVOT0VOVDsKPiAtCWlmIChvbGRwYXRo
ID09IG51bGxwdHIgfHwgbmV3cGF0aCA9PSBudWxscHRyKSB7Cj4gKwlpZiAob2xkcGF0aCA9PSBO
VUxMIHx8IG5ld3BhdGggPT0gTlVMTCkgewo+ICAgCQllcnJubyA9IEVOT0VOVDsKPiAgIAkJdHJh
Y2VfdmZzX3N5bWxpbmtfZXJyKGVycm9yKTsKPiAgIAkJcmV0dXJuICgtMSk7Cj4gQEAgLTEwNDAs
NyArMTA0MSw3IEBAIGludCB1bmxpbmsoY29uc3QgY2hhciAqcGF0aG5hbWUpCj4gICAJaW50IGVy
cm9yOwo+ICAgCj4gICAJZXJyb3IgPSBFTk9FTlQ7Cj4gLQlpZiAocGF0aG5hbWUgPT0gbnVsbHB0
cikKPiArCWlmIChwYXRobmFtZSA9PSBOVUxMKQo+ICAgCQlnb3RvIG91dF9lcnJubzsKPiAgIAlp
ZiAoKGVycm9yID0gdGFza19jb252KHQsIHBhdGhuYW1lLCBWV1JJVEUsIHBhdGgpKSAhPSAwKQo+
ICAgCQlnb3RvIG91dF9lcnJubzsKPiBAQCAtMTE1Niw3ICsxMTU3LDcgQEAgaW50IF9fc3RhdGZz
KGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBzdHJ1Y3Qgc3RhdGZzICpidWYpCj4gICAJZXJybm8gPSBl
cnJvcjsKPiAgIAlyZXR1cm4gLTE7Cj4gICB9Cj4gLXdlYWtfYWxpYXMoX19zdGF0ZnMsIHN0YXRm
cyk7Cj4gK19fd2Vha19hbGlhcyhfX3N0YXRmcywgc3RhdGZzKTsKPiAgIAo+ICAgTEZTNjQoc3Rh
dGZzKTsKPiAgIAo+IEBAIC0xMTY2LDcgKzExNjcsNyBAQCBUUkFDRVBPSU5UKHRyYWNlX3Zmc19m
c3RhdGZzX2VyciwgIiVkIiwgaW50KTsKPiAgIAo+ICAgaW50IF9fZnN0YXRmcyhpbnQgZmQsIHN0
cnVjdCBzdGF0ZnMgKmJ1ZikKPiAgIHsKPiAtCXN0cnVjdCBmaWxlICpmcDsKPiArCXN0cnVjdCB2
ZnNjb3JlX2ZpbGUgKmZwOwo+ICAgCWludCBlcnJvcjsKPiAgIAo+ICAgCXRyYWNlX3Zmc19mc3Rh
dGZzKGZkLCBidWYpOwo+IEBAIC0xMTg3LDcgKzExODgsNyBAQCBpbnQgX19mc3RhdGZzKGludCBm
ZCwgc3RydWN0IHN0YXRmcyAqYnVmKQo+ICAgCWVycm5vID0gZXJyb3I7Cj4gICAJcmV0dXJuIC0x
Owo+ICAgfQo+IC13ZWFrX2FsaWFzKF9fZnN0YXRmcywgZnN0YXRmcyk7Cj4gK19fd2Vha19hbGlh
cyhfX2ZzdGF0ZnMsIGZzdGF0ZnMpOwo+ICAgCj4gICBMRlM2NChmc3RhdGZzKTsKPiAgIAo+IEBA
IC0xMjQxLDcgKzEyNDIsNyBAQCBjaGFyICpnZXRjd2QoY2hhciAqcGF0aCwgc2l6ZV90IHNpemUp
Cj4gICB7Cj4gICAJdHJhY2VfdmZzX2dldGN3ZChwYXRoLCBzaXplKTsKPiAgIAlzdHJ1Y3QgdGFz
ayAqdCA9IG1haW5fdGFzazsKPiAtCWludCBsZW4gPSBzdHJsZW4odC0+dF9jd2QpICsgMTsKPiAr
CXNpemVfdCBsZW4gPSBzdHJsZW4odC0+dF9jd2QpICsgMTsKPiAgIAlpbnQgZXJyb3I7Cj4gICAK
PiAgIAlpZiAoIXBhdGgpIHsKPiBAQCAtMTI3MSw3ICsxMjcyLDcgQEAgY2hhciAqZ2V0Y3dkKGNo
YXIgKnBhdGgsIHNpemVfdCBzaXplKQo+ICAgCW91dF9lcnJubzoKPiAgIAl0cmFjZV92ZnNfZ2V0
Y3dkX2VycihlcnJvcik7Cj4gICAJZXJybm8gPSBlcnJvcjsKPiAtCXJldHVybiBudWxscHRyOwo+
ICsJcmV0dXJuIE5VTEw7Cj4gICB9Cj4gICAKPiAgIFRSQUNFUE9JTlQodHJhY2VfdmZzX2R1cCwg
IiVkIiwgaW50KTsKPiBAQCAtMTI4Miw3ICsxMjgzLDcgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNf
ZHVwX2VyciwgIiVkIiwgaW50KTsKPiAgICAqLwo+ICAgaW50IGR1cChpbnQgb2xkZmQpCj4gICB7
Cj4gLQlzdHJ1Y3QgZmlsZSAqZnA7Cj4gKwlzdHJ1Y3QgdmZzY29yZV9maWxlICpmcDsKPiAgIAlp
bnQgbmV3ZmQ7Cj4gICAJaW50IGVycm9yOwo+ICAgCj4gQEAgLTEzMTUsNyArMTMxNiw3IEBAIFRS
QUNFUE9JTlQodHJhY2VfdmZzX2R1cDNfZXJyLCAiJWQiLCBpbnQpOwo+ICAgICovCj4gICBpbnQg
ZHVwMyhpbnQgb2xkZmQsIGludCBuZXdmZCwgaW50IGZsYWdzKQo+ICAgewo+IC0Jc3RydWN0IGZp
bGUgKmZwOwo+ICsJc3RydWN0IHZmc2NvcmVfZmlsZSAqZnA7Cj4gICAJaW50IGVycm9yOwo+ICAg
Cj4gICAJdHJhY2VfdmZzX2R1cDMob2xkZmQsIG5ld2ZkLCBmbGFncyk7Cj4gQEAgLTEzMzcsNyAr
MTMzOCw3IEBAIGludCBkdXAzKGludCBvbGRmZCwgaW50IG5ld2ZkLCBpbnQgZmxhZ3MpCj4gICAJ
aWYgKGVycm9yKQo+ICAgCQlnb3RvIG91dF9lcnJubzsKPiAgIAo+IC0JZXJyb3IgPSBmZHNldChu
ZXdmZCwgZnApOwo+ICsJZXJyb3IgPSB2ZnNjb3JlX2luc3RhbGxfZmQobmV3ZmQsIGZwKTsKPiAg
IAlpZiAoZXJyb3IpIHsKPiAgIAkJZmRyb3AoZnApOwo+ICAgCQlnb3RvIG91dF9lcnJubzsKPiBA
QCAtMTM3Myw3ICsxMzc0LDcgQEAgVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZmNudGxfZXJyLCAiJWQi
LCBpbnQpOwo+ICAgCj4gICBpbnQgZmNudGwoaW50IGZkLCBpbnQgY21kLCBpbnQgYXJnKQo+ICAg
ewo+IC0Jc3RydWN0IGZpbGUgKmZwOwo+ICsJc3RydWN0IHZmc2NvcmVfZmlsZSAqZnA7Cj4gICAJ
aW50IHJldCA9IDAsIGVycm9yOwo+ICAgCWludCB0bXA7Cj4gICAKPiBAQCAtMTQ5MCwxNCArMTQ5
MSwxNCBAQCBpbnQgYWNjZXNzKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBpbnQgbW9kZSkKPiAgIGlu
dCBmYWNjZXNzYXQoaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwgaW50IG1vZGUsIGlu
dCBmbGFncykKPiAgIHsKPiAgIAlpZiAoZmxhZ3MgJiBBVF9TWU1MSU5LX05PRk9MTE9XKSB7Cj4g
LQkJVU5JTVBMRU1FTlRFRCgiZmFjY2Vzc2F0KCkgd2l0aCBBVF9TWU1MSU5LX05PRk9MTE9XIik7
Cj4gKwkJVUtfQ1JBU0goIlVOSU1QTEVNRU5URUQ6IGZhY2Nlc3NhdCgpIHdpdGggQVRfU1lNTElO
S19OT0ZPTExPVyIpOwo+ICAgCX0KPiAgIAo+ICAgCWlmIChwYXRobmFtZVswXSA9PSAnLycgfHwg
ZGlyZmQgPT0gQVRfRkRDV0QpIHsKPiAgIAkJcmV0dXJuIGFjY2VzcyhwYXRobmFtZSwgbW9kZSk7
Cj4gICAJfQo+ICAgCj4gLQlzdHJ1Y3QgZmlsZSAqZnA7Cj4gKwlzdHJ1Y3QgdmZzY29yZV9maWxl
ICpmcDsKPiAgIAlpbnQgZXJyb3IgPSBmZ2V0KGRpcmZkLCAmZnApOwo+ICAgCWlmIChlcnJvcikg
ewo+ICAgCQllcnJubyA9IGVycm9yOwo+IEBAIC0xNTI4LDcgKzE1MjksNyBAQCBpbnQgZXVpZGFj
Y2Vzcyhjb25zdCBjaGFyICpwYXRobmFtZSwgaW50IG1vZGUpCj4gICAJcmV0dXJuIGFjY2Vzcyhw
YXRobmFtZSwgbW9kZSk7Cj4gICB9Cj4gICAKPiAtd2Vha19hbGlhcyhldWlkYWNjZXNzLGVhY2Nl
c3MpOwo+ICtfX3dlYWtfYWxpYXMoZXVpZGFjY2VzcyxlYWNjZXNzKTsKPiAgIAo+ICAgI2lmIDAK
PiAgIC8qCj4gQEAgLTE1MzYsNyArMTUzNyw3IEBAIHdlYWtfYWxpYXMoZXVpZGFjY2VzcyxlYWNj
ZXNzKTsKPiAgICAqLwo+ICAgaW50IGlzYXR0eShpbnQgZmQpCj4gICB7Cj4gLQlzdHJ1Y3QgZmls
ZSAqZnA7Cj4gKwlzdHJ1Y3QgdmZzY29yZV9maWxlICpmcDsKPiAgIAlpbnQgaXN0dHkgPSAwOwo+
ICAgCj4gICAJdHJhY2VfdmZzX2lzYXR0eShmZCk7Cj4gQEAgLTE1NzAsNyArMTU3MSw3IEBAIGlu
dCB0cnVuY2F0ZShjb25zdCBjaGFyICpwYXRobmFtZSwgb2ZmX3QgbGVuZ3RoKQo+ICAgCWludCBl
cnJvcjsKPiAgIAo+ICAgCWVycm9yID0gRU5PRU5UOwo+IC0JaWYgKHBhdGhuYW1lID09IG51bGxw
dHIpCj4gKwlpZiAocGF0aG5hbWUgPT0gTlVMTCkKPiAgIAkJZ290byBvdXRfZXJybm87Cj4gICAJ
aWYgKChlcnJvciA9IHRhc2tfY29udih0LCBwYXRobmFtZSwgVldSSVRFLCBwYXRoKSkgIT0gMCkK
PiAgIAkJZ290byBvdXRfZXJybm87Cj4gQEAgLTE1OTUsNyArMTU5Niw3IEBAIFRSQUNFUE9JTlQo
dHJhY2VfdmZzX2Z0cnVuY2F0ZV9lcnIsICIlZCIsIGludCk7Cj4gICBpbnQgZnRydW5jYXRlKGlu
dCBmZCwgb2ZmX3QgbGVuZ3RoKQo+ICAgewo+ICAgCXRyYWNlX3Zmc19mdHJ1bmNhdGUoZmQsIGxl
bmd0aCk7Cj4gLQlzdHJ1Y3QgZmlsZSAqZnA7Cj4gKwlzdHJ1Y3QgdmZzY29yZV9maWxlICpmcDsK
PiAgIAlpbnQgZXJyb3I7Cj4gICAKPiAgIAllcnJvciA9IGZnZXQoZmQsICZmcCk7Cj4gQEAgLTE2
MzAsNyArMTYzMSw3IEBAIHNzaXplX3QgcmVhZGxpbmsoY29uc3QgY2hhciAqcGF0aG5hbWUsIGNo
YXIgKmJ1Ziwgc2l6ZV90IGJ1ZnNpemUpCj4gICAJCWdvdG8gb3V0X2Vycm5vOwo+ICAgCj4gICAJ
ZXJyb3IgPSBFTk9FTlQ7Cj4gLQlpZiAocGF0aG5hbWUgPT0gbnVsbHB0cikKPiArCWlmIChwYXRo
bmFtZSA9PSBOVUxMKQo+ICAgCQlnb3RvIG91dF9lcnJubzsKPiAgIAllcnJvciA9IHRhc2tfY29u
dih0LCBwYXRobmFtZSwgVldSSVRFLCBwYXRoKTsKPiAgIAlpZiAoZXJyb3IpCj4gQEAgLTE2NTQs
NyArMTY1NSw3IEBAIFRSQUNFUE9JTlQodHJhY2VfdmZzX2ZhbGxvY2F0ZV9lcnIsICIlZCIsIGlu
dCk7Cj4gICAKPiAgIGludCBmYWxsb2NhdGUoaW50IGZkLCBpbnQgbW9kZSwgbG9mZl90IG9mZnNl
dCwgbG9mZl90IGxlbikKPiAgIHsKPiAtCXN0cnVjdCBmaWxlICpmcDsKPiArCXN0cnVjdCB2ZnNj
b3JlX2ZpbGUgKmZwOwo+ICAgCWludCBlcnJvcjsKPiAgIAo+ICAgCXRyYWNlX3Zmc19mYWxsb2Nh
dGUoZmQsIG1vZGUsIG9mZnNldCwgbGVuKTsKPiBAQCAtMTY4MiwxNCArMTY4MywxNCBAQCBMRlM2
NChmYWxsb2NhdGUpOwo+ICAgaW50IGZ1dGltZXNhdChpbnQgZGlyZmQsIGNvbnN0IGNoYXIgKnBh
dGhuYW1lLCBjb25zdCBzdHJ1Y3QgdGltZXZhbCB0aW1lc1syXSkKPiAgIHsKPiAgIAlzdHJ1Y3Qg
c3RhdCBzdDsKPiAtCXN0cnVjdCBmaWxlICpmcDsKPiArCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZw
Owo+ICAgCWludCBlcnJvcjsKPiAgIAljaGFyICphYnNvbHV0ZV9wYXRoOwo+ICAgCj4gICAJaWYg
KChwYXRobmFtZSAmJiBwYXRobmFtZVswXSA9PSAnLycpIHx8IGRpcmZkID09IEFUX0ZEQ1dEKQo+
ICAgCQlyZXR1cm4gdXRpbWVzKHBhdGhuYW1lLCB0aW1lcyk7Cj4gICAKPiAtCS8vIE5vdGU6IGlm
IHBhdGhuYW1lID09IG51bGxwdHIsIGZ1dGltZXNhdCBvcGVyYXRlcyBvbiBkaXJmZCBpdHNlbGYs
IGFuZCBpbgo+ICsJLy8gTm90ZTogaWYgcGF0aG5hbWUgPT0gTlVMTCwgZnV0aW1lc2F0IG9wZXJh
dGVzIG9uIGRpcmZkIGl0c2VsZiwgYW5kIGluCj4gICAJLy8gdGhhdCBjYXNlIGl0IGRvZXNuJ3Qg
aGF2ZSB0byBiZSBhIGRpcmVjdG9yeS4KPiAgIAlpZiAocGF0aG5hbWUpIHsKPiAgIAkJZXJyb3Ig
PSBmc3RhdChkaXJmZCwgJnN0KTsKPiBAQCAtMTgzNSw3ICsxODM2LDcgQEAgaW50IGNobW9kKGNv
bnN0IGNoYXIgKnBhdGhuYW1lLCBtb2RlX3QgbW9kZSkKPiAgIAlzdHJ1Y3QgdGFzayAqdCA9IG1h
aW5fdGFzazsKPiAgIAljaGFyIHBhdGhbUEFUSF9NQVhdOwo+ICAgCWludCBlcnJvciA9IEVOT0VO
VDsKPiAtCWlmIChwYXRobmFtZSA9PSBudWxscHRyKQo+ICsJaWYgKHBhdGhuYW1lID09IE5VTEwp
Cj4gICAJCWdvdG8gb3V0X2Vycm5vOwo+ICAgCWlmICgoZXJyb3IgPSB0YXNrX2NvbnYodCwgcGF0
aG5hbWUsIFZXUklURSwgcGF0aCkpICE9IDApCj4gICAJCWdvdG8gb3V0X2Vycm5vOwo+IEBAIC0x
ODkzLDggKzE4OTQsOCBAQCBpbnQgbGNob3duKGNvbnN0IGNoYXIgKnBhdGgsIHVpZF90IG93bmVy
LCBnaWRfdCBncm91cCkKPiAgICNpZiAwCj4gICBzc2l6ZV90IHNlbmRmaWxlKGludCBvdXRfZmQs
IGludCBpbl9mZCwgb2ZmX3QgKl9vZmZzZXQsIHNpemVfdCBjb3VudCkKPiAgIHsKPiAtCXN0cnVj
dCBmaWxlICppbl9mcDsKPiAtCXN0cnVjdCBmaWxlICpvdXRfZnA7Cj4gKwlzdHJ1Y3QgdmZzY29y
ZV9maWxlICppbl9mcDsKPiArCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKm91dF9mcDsKPiAgIAlmaWxl
cmVmIGluX2Z7ZmlsZXJlZl9mcm9tX2ZkKGluX2ZkKX07Cj4gICAJZmlsZXJlZiBvdXRfZntmaWxl
cmVmX2Zyb21fZmQob3V0X2ZkKX07Cj4gICAKPiBkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvbW91
bnQuYyBiL2xpYi92ZnNjb3JlL21vdW50LmMKPiBpbmRleCAwNjkyMmZmYi4uZmFkNDcwMjYgMTAw
NjQ0Cj4gLS0tIGEvbGliL3Zmc2NvcmUvbW91bnQuYwo+ICsrKyBiL2xpYi92ZnNjb3JlL21vdW50
LmMKPiBAQCAtNTQsMTIgKzU0LDEzIEBACj4gICAvKgo+ICAgICogTGlzdCBmb3IgVkZTIG1vdW50
IHBvaW50cy4KPiAgICAqLwo+IC1zdGF0aWMgc3RkOjpsaXN0PG1vdW50Kj4gbW91bnRfbGlzdDsK
PiArCj4gK1VLX0xJU1RfSEVBRChtb3VudF9saXN0KTsKPiAgIAo+ICAgLyoKPiAgICAqIEdsb2Jh
bCBsb2NrIHRvIGFjY2VzcyBtb3VudCBwb2ludC4KPiAgICAqLwo+IC1zdGF0aWMgbXV0ZXggbW91
bnRfbG9jazsKPiArc3RhdGljIHN0cnVjdCB1a19tdXRleCBtb3VudF9sb2NrID0gVUtfTVVURVhf
SU5JVElBTElaRVIobW91bnRfbG9jayk7Cj4gICAKPiAgIC8qCj4gICAgKiBMb29rdXAgZmlsZSBz
eXN0ZW0uCj4gQEAgLTg0LDExICs4NSwxMSBAQCBzeXNfbW91bnQoY29uc3QgY2hhciAqZGV2LCBj
b25zdCBjaGFyICpkaXIsIGNvbnN0IGNoYXIgKmZzbmFtZSwgaW50IGZsYWdzLCBjb25zdAo+ICAg
CWNvbnN0IHN0cnVjdCB2ZnNzdyAqZnM7Cj4gICAJc3RydWN0IG1vdW50ICptcDsKPiAgIAlzdHJ1
Y3QgZGV2aWNlICpkZXZpY2U7Cj4gLQlzdHJ1Y3QgZGVudHJ5ICpkcF9jb3ZlcmVkOwo+IC0Jc3Ry
dWN0IHZub2RlICp2cDsKPiArCXN0cnVjdCBkZW50cnkgKmRwX2NvdmVyZWQgPSBOVUxMOwo+ICsJ
c3RydWN0IHZub2RlICp2cCA9IE5VTEw7Cj4gICAJaW50IGVycm9yOwo+ICAgCj4gLQlrcHJpbnRm
KCJWRlM6IG1vdW50aW5nICVzIGF0ICVzXG4iLCBmc25hbWUsIGRpcik7Cj4gKwl1a19wcl9pbmZv
KCJWRlM6IG1vdW50aW5nICVzIGF0ICVzXG4iLCBmc25hbWUsIGRpcik7Cj4gICAKPiAgIAlpZiAo
IWRpciB8fCAqZGlyID09ICdcMCcpCj4gICAJCXJldHVybiBFTk9FTlQ7Cj4gQEAgLTk3LDcgKzk4
LDcgQEAgc3lzX21vdW50KGNvbnN0IGNoYXIgKmRldiwgY29uc3QgY2hhciAqZGlyLCBjb25zdCBj
aGFyICpmc25hbWUsIGludCBmbGFncywgY29uc3QKPiAgIAlpZiAoIShmcyA9IGZzX2dldGZzKGZz
bmFtZSkpKQo+ICAgCQlyZXR1cm4gRU5PREVWOyAgLyogTm8gc3VjaCBmaWxlIHN5c3RlbSAqLwo+
ICAgCj4gLQkvKiBPcGVuIGRldmljZS4gbnVsbHB0ciBjYW4gYmUgc3BlY2lmaWVkIGFzIGEgZGV2
aWNlLiAqLwo+ICsJLyogT3BlbiBkZXZpY2UuIE5VTEwgY2FuIGJlIHNwZWNpZmllZCBhcyBhIGRl
dmljZS4gKi8KPiAgIAkvLyBBbGxvdyBkZXZpY2Vfb3BlbigpIHRvIGZhaWwsIGluIHdoaWNoIGNh
c2UgZGV2IGlzIGludGVycHJldGVkCj4gICAJLy8gYnkgdGhlIGZpbGUgc3lzdGVtIG1vdW50IHJv
dXRpbmUgKGUuZyB6ZnMgcG9vbHMpCj4gICAJZGV2aWNlID0gMDsKPiBAQCAtMTExLDE3ICsxMTIs
MjIgQEAgc3lzX21vdW50KGNvbnN0IGNoYXIgKmRldiwgY29uc3QgY2hhciAqZGlyLCBjb25zdCBj
aGFyICpmc25hbWUsIGludCBmbGFncywgY29uc3QKPiAgIAkvLyB0aGF0IG9ubHkgb25lIHN5c19t
b3VudCgpIHJ1bnMgYXQgYSB0aW1lLiBXZSBjYW5ub3QgcmV1c2UgdGhlIGV4aXN0aW5nCj4gICAJ
Ly8gbW91bnRfbG9jayBmb3IgdGhpcyBwdXJwb3NlOiBJZiB3ZSB0YWtlIG1vdW50X2xvY2sgYW5k
IHRoZW4gZG8KPiAgIAkvLyBsb29rdXBzLCB0aGlzIGlzIGxvY2sgb3JkZXIgaW52ZXJzaW9uIGFu
ZCBjYW4gcmVzdWx0IGluIGRlYWRsb2NrLgo+IC0Jc3RhdGljIG11dGV4IHN5c19tb3VudF9sb2Nr
Owo+IC0JU0NPUEVfTE9DSyhzeXNfbW91bnRfbG9jayk7Cj4gLQlXSVRIX0xPQ0sobW91bnRfbG9j
aykgewo+IC0JCWZvciAoYXV0byYmIG1wIDogbW91bnRfbGlzdCkgewo+IC0JCQlpZiAoIXN0cmNt
cChtcC0+bV9wYXRoLCBkaXIpIHx8Cj4gLQkJCQkoZGV2aWNlICYmIG1wLT5tX2RldiA9PSBkZXZp
Y2UpKSB7Cj4gLQkJCQllcnJvciA9IEVCVVNZOyAgLyogQWxyZWFkeSBtb3VudGVkICovCj4gLQkJ
CQlnb3RvIGVycjE7Cj4gLQkJCX0KPiArCj4gKwkvKiBUT0RPOiBwcm90ZWN0IHRoZSBmdW5jdGlv
biBmcm9tIHJlZW50cmFuY2UsIGFzIGRlc2NyaWJlZCBpbgo+ICsJICogdGhlIGNvbW1lbnQgYWJv
dmUgKi8KPiArCS8qIHN0YXRpYyBtdXRleCBzeXNfbW91bnRfbG9jazsgKi8KPiArCS8qIFNDT1BF
X0xPQ0soc3lzX21vdW50X2xvY2spOyAqLwo+ICsKPiArCXVrX211dGV4X2xvY2soJm1vdW50X2xv
Y2spOwo+ICsJdWtfbGlzdF9mb3JfZWFjaF9lbnRyeShtcCwgJm1vdW50X2xpc3QsIG1udF9saXN0
KSB7Cj4gKwkJaWYgKCFzdHJjbXAobXAtPm1fcGF0aCwgZGlyKSB8fAo+ICsJCSAgICAoZGV2aWNl
ICYmIG1wLT5tX2RldiA9PSBkZXZpY2UpKSB7Cj4gKwkJCWVycm9yID0gRUJVU1k7ICAvKiBBbHJl
YWR5IG1vdW50ZWQgKi8KPiArCQkJdWtfbXV0ZXhfdW5sb2NrKCZtb3VudF9sb2NrKTsKPiArCQkJ
Z290byBlcnIxOwo+ICAgCQl9Cj4gICAJfQo+ICsJdWtfbXV0ZXhfdW5sb2NrKCZtb3VudF9sb2Nr
KTsKPiAgIAkvKgo+ICAgCSAqIENyZWF0ZSBWRlMgbW91bnQgZW50cnkuCj4gICAJICovCj4gQEAg
LTEzNCw3ICsxNDAsNyBAQCBzeXNfbW91bnQoY29uc3QgY2hhciAqZGV2LCBjb25zdCBjaGFyICpk
aXIsIGNvbnN0IGNoYXIgKmZzbmFtZSwgaW50IGZsYWdzLCBjb25zdAo+ICAgCW1wLT5tX29wID0g
ZnMtPnZzX29wOwo+ICAgCW1wLT5tX2ZsYWdzID0gZmxhZ3M7Cj4gICAJbXAtPm1fZGV2ID0gZGV2
aWNlOwo+IC0JbXAtPm1fZGF0YSA9IG51bGxwdHI7Cj4gKwltcC0+bV9kYXRhID0gTlVMTDsKPiAg
IAlzdHJsY3B5KG1wLT5tX3BhdGgsIGRpciwgc2l6ZW9mKG1wLT5tX3BhdGgpKTsKPiAgIAlzdHJs
Y3B5KG1wLT5tX3NwZWNpYWwsIGRldiwgc2l6ZW9mKG1wLT5tX3NwZWNpYWwpKTsKPiAgIAo+IEBA
IC0xNDMsNyArMTQ5LDcgQEAgc3lzX21vdW50KGNvbnN0IGNoYXIgKmRldiwgY29uc3QgY2hhciAq
ZGlyLCBjb25zdCBjaGFyICpmc25hbWUsIGludCBmbGFncywgY29uc3QKPiAgIAkgKi8KPiAgIAlp
ZiAoKmRpciA9PSAnLycgJiYgKihkaXIgKyAxKSA9PSAnXDAnKSB7Cj4gICAJCS8qIElnbm9yZSBp
ZiBpdCBtb3VudHMgdG8gZ2xvYmFsIHJvb3QgZGlyZWN0b3J5LiAqLwo+IC0JCWRwX2NvdmVyZWQg
PSBudWxscHRyOwo+ICsJCWRwX2NvdmVyZWQgPSBOVUxMOwo+ICAgCX0gZWxzZSB7Cj4gICAJCWlm
ICgoZXJyb3IgPSBuYW1laShkaXIsICZkcF9jb3ZlcmVkKSkgIT0gMCkgewo+ICAgCj4gQEAgLTE2
MCw4ICsxNjYsOCBAQCBzeXNfbW91bnQoY29uc3QgY2hhciAqZGV2LCBjb25zdCBjaGFyICpkaXIs
IGNvbnN0IGNoYXIgKmZzbmFtZSwgaW50IGZsYWdzLCBjb25zdAo+ICAgCS8qCj4gICAJICogQ3Jl
YXRlIGEgcm9vdCB2bm9kZSBmb3IgdGhpcyBmaWxlIHN5c3RlbS4KPiAgIAkgKi8KPiAtCXZnZXQo
bXAsIDAsICZ2cCk7Cj4gLQlpZiAodnAgPT0gbnVsbHB0cikgewo+ICsJdmZzY29yZV92Z2V0KG1w
LCAwLCAmdnApOwo+ICsJaWYgKHZwID09IE5VTEwpIHsKPiAgIAkJZXJyb3IgPSBFTk9NRU07Cj4g
ICAJCWdvdG8gZXJyMzsKPiAgIAl9Cj4gQEAgLTE2OSw3ICsxNzUsNyBAQCBzeXNfbW91bnQoY29u
c3QgY2hhciAqZGV2LCBjb25zdCBjaGFyICpkaXIsIGNvbnN0IGNoYXIgKmZzbmFtZSwgaW50IGZs
YWdzLCBjb25zdAo+ICAgCXZwLT52X2ZsYWdzID0gVlJPT1Q7Cj4gICAJdnAtPnZfbW9kZSA9IFNf
SUZESVIgfCBTX0lSVVNSIHwgU19JV1VTUiB8IFNfSVhVU1I7Cj4gICAKPiAtCW1wLT5tX3Jvb3Qg
PSBkZW50cnlfYWxsb2MobnVsbHB0ciwgdnAsICIvIik7Cj4gKwltcC0+bV9yb290ID0gZGVudHJ5
X2FsbG9jKE5VTEwsIHZwLCAiLyIpOwo+ICAgCWlmICghbXAtPm1fcm9vdCkgewo+ICAgCQl2cHV0
KHZwKTsKPiAgIAkJZ290byBlcnIzOwo+IEBAIC0xODgsOSArMTk0LDkgQEAgc3lzX21vdW50KGNv
bnN0IGNoYXIgKmRldiwgY29uc3QgY2hhciAqZGlyLCBjb25zdCBjaGFyICpmc25hbWUsIGludCBm
bGFncywgY29uc3QKPiAgIAkvKgo+ICAgCSAqIEluc2VydCB0byBtb3VudCBsaXN0Cj4gICAJICov
Cj4gLQlXSVRIX0xPQ0sobW91bnRfbG9jaykgewo+IC0JCW1vdW50X2xpc3QucHVzaF9iYWNrKG1w
KTsKPiAtCX0KPiArCXVrX211dGV4X2xvY2soJm1vdW50X2xvY2spOwo+ICsJdWtfbGlzdF9hZGRf
dGFpbCgmbXAtPm1udF9saXN0LCAmbW91bnRfbGlzdCk7Cj4gKwl1a19tdXRleF91bmxvY2soJm1v
dW50X2xvY2spOwo+ICAgCj4gICAJcmV0dXJuIDA7ICAgLyogc3VjY2VzcyAqLwo+ICAgIGVycjQ6
Cj4gQEAgLTIyMiwxMiArMjI4LDEyIEBAIHJlbGVhc2VfbXBfZGVudHJpZXMoc3RydWN0IG1vdW50
ICptcCkKPiAgIGludAo+ICAgc3lzX3Vtb3VudDIoY29uc3QgY2hhciAqcGF0aCwgaW50IGZsYWdz
KQo+ICAgewo+IC0Jc3RydWN0IG1vdW50ICptcDsKPiArCXN0cnVjdCBtb3VudCAqbXAsICp0bXA7
Cj4gICAJaW50IGVycm9yLCBwYXRobGVuOwo+ICAgCj4gLQlrcHJpbnRmKCJWRlM6IHVubW91bnRp
bmcgJXNcbiIsIHBhdGgpOwo+ICsJdWtfcHJfaW5mbygiVkZTOiB1bm1vdW50aW5nICVzXG4iLCBw
YXRoKTsKPiAgIAo+IC0JU0NPUEVfTE9DSyhtb3VudF9sb2NrKTsKPiArCXVrX211dGV4X2xvY2so
Jm1vdW50X2xvY2spOwo+ICAgCj4gICAJcGF0aGxlbiA9IHN0cmxlbihwYXRoKTsKPiAgIAlpZiAo
cGF0aGxlbiA+PSBNQVhQQVRITEVOKSB7Cj4gQEAgLTIzNiw3ICsyNDIsNyBAQCBzeXNfdW1vdW50
Mihjb25zdCBjaGFyICpwYXRoLCBpbnQgZmxhZ3MpCj4gICAJfQo+ICAgCj4gICAJLyogR2V0IG1v
dW50IGVudHJ5ICovCj4gLQlmb3IgKGF1dG8mJiB0bXAgOiBtb3VudF9saXN0KSB7Cj4gKwl1a19s
aXN0X2Zvcl9lYWNoX2VudHJ5KHRtcCwgJm1vdW50X2xpc3QsIG1udF9saXN0KSB7Cj4gICAJCWlm
ICghc3RyY21wKHBhdGgsIHRtcC0+bV9wYXRoKSkgewo+ICAgCQkJbXAgPSB0bXA7Cj4gICAJCQln
b3RvIGZvdW5kOwo+IEBAIC0yNTAsMTQgKzI1NiwxNCBAQCBmb3VuZDoKPiAgIAkvKgo+ICAgCSAq
IFJvb3QgZnMgY2FuIG5vdCBiZSB1bm1vdW50ZWQuCj4gICAJICovCj4gLQlpZiAobXAtPm1fY292
ZXJlZCA9PSBudWxscHRyICYmICEoZmxhZ3MgJiBNTlRfRk9SQ0UpKSB7Cj4gKwlpZiAobXAtPm1f
Y292ZXJlZCA9PSBOVUxMICYmICEoZmxhZ3MgJiBNTlRfRk9SQ0UpKSB7Cj4gICAJCWVycm9yID0g
RUlOVkFMOwo+ICAgCQlnb3RvIG91dDsKPiAgIAl9Cj4gICAKPiAgIAlpZiAoKGVycm9yID0gVkZT
X1VOTU9VTlQobXAsIGZsYWdzKSkgIT0gMCkKPiAgIAkJZ290byBvdXQ7Cj4gLQltb3VudF9saXN0
LnJlbW92ZShtcCk7Cj4gKwl1a19saXN0X2RlbF9pbml0KCZtcC0+bW50X2xpc3QpOwo+ICAgCj4g
ICAjaWZkZWYgSEFWRV9CVUZGRVJTCj4gICAJLyogRmx1c2ggYWxsIGJ1ZmZlcnMgKi8KPiBAQCAt
MjY4LDYgKzI3NCw3IEBAIGZvdW5kOgo+ICAgCQlkZXZpY2VfY2xvc2UobXAtPm1fZGV2KTsKPiAg
IAlmcmVlKG1wKTsKPiAgICBvdXQ6Cj4gKwl1a19tdXRleF91bmxvY2soJm1vdW50X2xvY2spOwo+
ICAgCXJldHVybiBlcnJvcjsKPiAgIH0KPiAgIAo+IEBAIC0yODEsNyArMjg4LDcgQEAgc3lzX3Vt
b3VudChjb25zdCBjaGFyICpwYXRoKQo+ICAgaW50Cj4gICBzeXNfcGl2b3Rfcm9vdChjb25zdCBj
aGFyICpuZXdfcm9vdCwgY29uc3QgY2hhciAqcHV0X29sZCkKPiAgIHsKPiAtCXN0cnVjdCBtb3Vu
dCAqbmV3bXAgPSBudWxscHRyLCAqb2xkbXAgPSBudWxscHRyOwo+ICsJc3RydWN0IG1vdW50ICpu
ZXdtcCA9IE5VTEwsICpvbGRtcCA9IE5VTEw7Cj4gICAJaW50IGVycm9yOwo+ICAgCj4gICAJV0lU
SF9MT0NLKG1vdW50X2xvY2spIHsKPiBAQCAtMzE0LDEyICszMjEsMTIgQEAgc3lzX3Bpdm90X3Jv
b3QoY29uc3QgY2hhciAqbmV3X3Jvb3QsIGNvbnN0IGNoYXIgKnB1dF9vbGQpCj4gICAJCWlmIChu
ZXdtcC0+bV9jb3ZlcmVkKSB7Cj4gICAJCQlkcmVsZShuZXdtcC0+bV9jb3ZlcmVkKTsKPiAgIAkJ
fQo+IC0JCW5ld21wLT5tX2NvdmVyZWQgPSBudWxscHRyOwo+ICsJCW5ld21wLT5tX2NvdmVyZWQg
PSBOVUxMOwo+ICAgCj4gICAJCWlmIChuZXdtcC0+bV9yb290LT5kX3BhcmVudCkgewo+ICAgCQkJ
ZHJlbGUobmV3bXAtPm1fcm9vdC0+ZF9wYXJlbnQpOwo+ICAgCQl9Cj4gLQkJbmV3bXAtPm1fcm9v
dC0+ZF9wYXJlbnQgPSBudWxscHRyOwo+ICsJCW5ld21wLT5tX3Jvb3QtPmRfcGFyZW50ID0gTlVM
TDsKPiAgIAo+ICAgCQlzdHJsY3B5KG5ld21wLT5tX3BhdGgsICIvIiwgc2l6ZW9mKG5ld21wLT5t
X3BhdGgpKTsKPiAgIAl9Cj4gQEAgLTMzMCwxNSArMzM3LDE3IEBAIHN5c19waXZvdF9yb290KGNv
bnN0IGNoYXIgKm5ld19yb290LCBjb25zdCBjaGFyICpwdXRfb2xkKQo+ICAgaW50Cj4gICBzeXNf
c3luYyh2b2lkKQo+ICAgewo+ICsJc3RydWN0IG1vdW50ICptcDsKPiArCXVrX211dGV4X2xvY2so
Jm1vdW50X2xvY2spOwo+ICsKPiAgIAkvKiBDYWxsIGVhY2ggbW91bnRlZCBmaWxlIHN5c3RlbS4g
Ki8KPiAtCVdJVEhfTE9DSyhtb3VudF9sb2NrKSB7Cj4gLQkJZm9yIChhdXRvJiYgbXAgOiBtb3Vu
dF9saXN0KSB7Cj4gLQkJCVZGU19TWU5DKG1wKTsKPiAtCQl9Cj4gKwl1a19saXN0X2Zvcl9lYWNo
X2VudHJ5KG1wLCAmbW91bnRfbGlzdCwgbW50X2xpc3QpIHsKPiArCQlWRlNfU1lOQyhtcCk7Cj4g
ICAJfQo+ICAgI2lmZGVmIEhBVkVfQlVGRkVSUwo+ICAgCWJpb19zeW5jKCk7Cj4gICAjZW5kaWYK
PiArCXVrX211dGV4X3VubG9jaygmbW91bnRfbG9jayk7Cj4gICAJcmV0dXJuIDA7Cj4gICB9Cj4g
ICAKPiBAQCAtMzgwLDIyICszODksMjMgQEAgY291bnRfbWF0Y2goY29uc3QgY2hhciAqcGF0aCwg
Y2hhciAqbW91bnRfcm9vdCkKPiAgIGludAo+ICAgdmZzX2ZpbmRyb290KGNvbnN0IGNoYXIgKnBh
dGgsIHN0cnVjdCBtb3VudCAqKm1wLCBjaGFyICoqcm9vdCkKPiAgIHsKPiAtCXN0cnVjdCBtb3Vu
dCAqbSA9IG51bGxwdHI7Cj4gKwlzdHJ1Y3QgbW91bnQgKm0gPSBOVUxMLCAqdG1wOwo+ICAgCXNp
emVfdCBsZW4sIG1heF9sZW4gPSAwOwo+ICAgCj4gICAJaWYgKCFwYXRoKQo+ICAgCQlyZXR1cm4g
LTE7Cj4gICAKPiAgIAkvKiBGaW5kIG1vdW50IHBvaW50IGZyb20gbmVhcmVzdCBwYXRoICovCj4g
LQlTQ09QRV9MT0NLKG1vdW50X2xvY2spOwo+IC0JZm9yIChhdXRvJiYgdG1wIDogbW91bnRfbGlz
dCkgewo+ICsJdWtfbXV0ZXhfbG9jaygmbW91bnRfbG9jayk7Cj4gKwl1a19saXN0X2Zvcl9lYWNo
X2VudHJ5KHRtcCwgJm1vdW50X2xpc3QsIG1udF9saXN0KSB7Cj4gICAJCWxlbiA9IGNvdW50X21h
dGNoKHBhdGgsIHRtcC0+bV9wYXRoKTsKPiAgIAkJaWYgKGxlbiA+IG1heF9sZW4pIHsKPiAgIAkJ
CW1heF9sZW4gPSBsZW47Cj4gICAJCQltID0gdG1wOwo+ICAgCQl9Cj4gICAJfQo+IC0JaWYgKG0g
PT0gbnVsbHB0cikKPiArCXVrX211dGV4X3VubG9jaygmbW91bnRfbG9jayk7Cj4gKwlpZiAobSA9
PSBOVUxMKQo+ICAgCQlyZXR1cm4gLTE7Cj4gICAJKnJvb3QgPSAoY2hhciAqKShwYXRoICsgbWF4
X2xlbik7Cj4gICAJaWYgKCoqcm9vdCA9PSAnLycpCj4gQEAgLTQxMCw4ICs0MjAsMTAgQEAgdmZz
X2ZpbmRyb290KGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBtb3VudCAqKm1wLCBjaGFyICoqcm9v
dCkKPiAgIHZvaWQKPiAgIHZmc19idXN5KHN0cnVjdCBtb3VudCAqbXApCj4gICB7Cj4gLQlTQ09Q
RV9MT0NLKG1vdW50X2xvY2spOwo+IC0JbXAtPm1fY291bnQrKzsKPiArCS8qIFRoZSBtX2NvdW50
IGlzIG5vdCByZWFsbHkgY2hlY2tlZCBhbnl3aGVyZQo+ICsJICogY3VycmVudGx5LiBBdG9taWMg
aXMgZW5vdWdoLiBCdXQgaXQgY291bGQgYmUgdGhhdCBvYnRhaW5pbmcKPiArCSAqIG1vdW50X2xv
Y2sgd2lsbCBiZSBuZWVkZWQgaW4gdGhlIGZ1dHVyZSAqLwo+ICsJdWthcmNoX2luYygmbXAtPm1f
Y291bnQpOwo+ICAgfQo+ICAgCj4gICAKPiBAQCAtNDIxLDggKzQzMywxMCBAQCB2ZnNfYnVzeShz
dHJ1Y3QgbW91bnQgKm1wKQo+ICAgdm9pZAo+ICAgdmZzX3VuYnVzeShzdHJ1Y3QgbW91bnQgKm1w
KQo+ICAgewo+IC0JU0NPUEVfTE9DSyhtb3VudF9sb2NrKTsKPiAtCW1wLT5tX2NvdW50LS07Cj4g
KwkvKiBUaGUgbV9jb3VudCBpcyBub3QgcmVhbGx5IGNoZWNrZWQgYW55d2hlcmUKPiArCSAqIGN1
cnJlbnRseS4gQXRvbWljIGlzIGVub3VnaC4gQnV0IGl0IGNvdWxkIGJlIHRoYXQgb2J0YWluaW5n
Cj4gKwkgKiBtb3VudF9sb2NrIHdpbGwgYmUgbmVlZGVkIGluIHRoZSBmdXR1cmUgKi8KPiArCXVr
YXJjaF9kZWMoJm1wLT5tX2NvdW50KTsKPiAgIH0KPiAgIAo+ICAgaW50Cj4gQEAgLTQ0MSwxNCAr
NDU1LDE2IEBAIHZmc19laW52YWwodm9pZCkKPiAgIHZvaWQKPiAgIG1vdW50X2R1bXAodm9pZCkK
PiAgIHsKPiAtCVNDT1BFX0xPQ0sobW91bnRfbG9jayk7Cj4gKwlzdHJ1Y3QgbW91bnQgKm1wOwo+
ICsJdWtfbXV0ZXhfbG9jaygmbW91bnRfbG9jayk7Cj4gICAKPiAtCWtwcmludGYoIm1vdW50X2R1
bXBcbiIpOwo+IC0Ja3ByaW50ZigiZGV2ICAgICAgY291bnQgcm9vdFxuIik7Cj4gLQlrcHJpbnRm
KCItLS0tLS0tLSAtLS0tLSAtLS0tLS0tLVxuIik7Cj4gKwl1a19wcl9kZWJ1ZygibW91bnRfZHVt
cFxuIik7Cj4gKwl1a19wcl9kZWJ1ZygiZGV2ICAgICAgY291bnQgcm9vdFxuIik7Cj4gKwl1a19w
cl9kZWJ1ZygiLS0tLS0tLS0gLS0tLS0gLS0tLS0tLS1cbiIpOwo+ICAgCj4gLQlmb3IgKGF1dG8m
JiBtcCA6IG1vdW50X2xpc3QpIHsKPiAtCQlrcHJpbnRmKCIlOHggJTVkICVzXG4iLCBtcC0+bV9k
ZXYsIG1wLT5tX2NvdW50LCBtcC0+bV9wYXRoKTsKPiArCXVrX2xpc3RfZm9yX2VhY2hfZW50cnko
bXAsICZtb3VudF9saXN0LCBtbnRfbGlzdCkgewo+ICsJCXVrX3ByX2RlYnVnKCIlOHAgJTVkICVz
XG4iLCBtcC0+bV9kZXYsIG1wLT5tX2NvdW50LCBtcC0+bV9wYXRoKTsKPiAgIAl9Cj4gKwl1a19t
dXRleF91bmxvY2soJm1vdW50X2xvY2spOwo+ICAgfQo+ICAgI2VuZGlmCj4gZGlmZiAtLWdpdCBh
L2xpYi92ZnNjb3JlL3N1YnJfdWlvLmMgYi9saWIvdmZzY29yZS9zdWJyX3Vpby5jCj4gaW5kZXgg
YmJjYTMzNjIuLmQ4ZTlkMWJlIDEwMDY0NAo+IC0tLSBhL2xpYi92ZnNjb3JlL3N1YnJfdWlvLmMK
PiArKysgYi9saWIvdmZzY29yZS9zdWJyX3Vpby5jCj4gQEAgLTQ4LDcgKzQ4LDcgQEAKPiAgIGlu
dAo+ICAgdWlvbW92ZSh2b2lkICpjcCwgaW50IG4sIHN0cnVjdCB1aW8gKnVpbykKPiAgIHsKPiAt
CWFzc2VydCh1aW8tPnVpb19ydyA9PSBVSU9fUkVBRCB8fCB1aW8tPnVpb19ydyA9PSBVSU9fV1JJ
VEUpOwo+ICsJVUtfQVNTRVJUKHVpby0+dWlvX3J3ID09IFVJT19SRUFEIHx8IHVpby0+dWlvX3J3
ID09IFVJT19XUklURSk7Cj4gICAKPiAgIAl3aGlsZSAobiA+IDAgJiYgdWlvLT51aW9fcmVzaWQp
IHsKPiAgIAkJc3RydWN0IGlvdmVjICppb3YgPSB1aW8tPnVpb19pb3Y7Cj4gZGlmZiAtLWdpdCBh
L2xpYi92ZnNjb3JlL3N5c2NhbGxzLmMgYi9saWIvdmZzY29yZS9zeXNjYWxscy5jCj4gaW5kZXgg
ZjUwZmIzOGYuLmZhMDQ5OGU3IDEwMDY0NAo+IC0tLSBhL2xpYi92ZnNjb3JlL3N5c2NhbGxzLmMK
PiArKysgYi9saWIvdmZzY29yZS9zeXNjYWxscy5jCj4gQEAgLTY1LDkgKzY1LDkgQEAgb3Blbl9u
b19mb2xsb3dfY2hrKGNoYXIgKnBhdGgpCj4gICAJc3RydWN0IGRlbnRyeSAqZHA7Cj4gICAJc3Ry
dWN0IHZub2RlICAqdnA7Cj4gICAKPiAtCWRkcCA9IG51bGxwdHI7Cj4gLQlkcCAgPSBudWxscHRy
Owo+IC0JdnAgID0gbnVsbHB0cjsKPiArCWRkcCA9IE5VTEw7Cj4gKwlkcCAgPSBOVUxMOwo+ICsJ
dnAgID0gTlVMTDsKPiAgIAo+ICAgCWVycm9yID0gbG9va3VwKHBhdGgsICZkZHAsICZuYW1lKTsK
PiAgIAlpZiAoZXJyb3IpIHsKPiBAQCAtODgsMTUgKzg4LDE1IEBAIG9wZW5fbm9fZm9sbG93X2No
ayhjaGFyICpwYXRoKQo+ICAgCj4gICAJZXJyb3IgPSAwOwo+ICAgb3V0Ogo+IC0JaWYgKHZwICE9
IG51bGxwdHIpIHsKPiArCWlmICh2cCAhPSBOVUxMKSB7Cj4gICAJCXZuX3VubG9jayh2cCk7Cj4g
ICAJfQo+ICAgCj4gLQlpZiAoZHAgIT0gbnVsbHB0cikgewo+ICsJaWYgKGRwICE9IE5VTEwpIHsK
PiAgIAkJZHJlbGUoZHApOwo+ICAgCX0KPiAgIAo+IC0JaWYgKGRkcCAhPSBudWxscHRyKSB7Cj4g
KwlpZiAoZGRwICE9IE5VTEwpIHsKPiAgIAkJZHJlbGUoZGRwKTsKPiAgIAl9Cj4gICAKPiBAQCAt
MTA0LDkgKzEwNCw5IEBAIG91dDoKPiAgIH0KPiAgIAo+ICAgaW50Cj4gLXN5c19vcGVuKGNoYXIg
KnBhdGgsIGludCBmbGFncywgbW9kZV90IG1vZGUsIHN0cnVjdCBmaWxlICoqZnBwKQo+ICtzeXNf
b3BlbihjaGFyICpwYXRoLCBpbnQgZmxhZ3MsIG1vZGVfdCBtb2RlLCBzdHJ1Y3QgdmZzY29yZV9m
aWxlICoqZnBwKQo+ICAgewo+IC0JZmlsZSAqZnA7Cj4gKwlzdHJ1Y3QgdmZzY29yZV9maWxlICpm
cDsKPiAgIAlzdHJ1Y3QgZGVudHJ5ICpkcCwgKmRkcDsKPiAgIAlzdHJ1Y3Qgdm5vZGUgKnZwOwo+
ICAgCWNoYXIgKmZpbGVuYW1lOwo+IEBAIC0xMTUsMTEgKzExNSwxMSBAQCBzeXNfb3BlbihjaGFy
ICpwYXRoLCBpbnQgZmxhZ3MsIG1vZGVfdCBtb2RlLCBzdHJ1Y3QgZmlsZSAqKmZwcCkKPiAgIAlE
UFJJTlRGKFZGU0RCX1NZU0NBTEwsICgic3lzX29wZW46IHBhdGg9JXMgZmxhZ3M9JXggbW9kZT0l
eFxuIiwKPiAgIAkJCQlwYXRoLCBmbGFncywgbW9kZSkpOwo+ICAgCj4gLQlmbGFncyA9IGZmbGFn
cyhmbGFncyk7Cj4gKwlmbGFncyA9IHZmc2NvcmVfZmZsYWdzKGZsYWdzKTsKPiAgIAlpZiAoZmxh
Z3MgJiBPX0NSRUFUKSB7Cj4gICAJCWVycm9yID0gbmFtZWkocGF0aCwgJmRwKTsKPiAgIAkJaWYg
KGVycm9yID09IEVOT0VOVCkgewo+IC0JCQkvKiBDcmVhdGUgbmV3IGZpbGUuICovCj4gKwkJCS8q
IENyZWF0ZSBuZXcgc3RydWN0IHZmc2NvcmVfZmlsZS4gKi8KPiAgIAkJCWlmICgoZXJyb3IgPSBs
b29rdXAocGF0aCwgJmRkcCwgJmZpbGVuYW1lKSkgIT0gMCkKPiAgIAkJCQlyZXR1cm4gZXJyb3I7
Cj4gICAKPiBAQCAtMjMzLDE0ICsyMzMsMTQgQEAgb3V0X2RyZWxlOgo+ICAgfQo+ICAgCj4gICBp
bnQKPiAtc3lzX2Nsb3NlKHN0cnVjdCBmaWxlICpmcCkKPiArc3lzX2Nsb3NlKHN0cnVjdCB2ZnNj
b3JlX2ZpbGUgKmZwIF9fdW51c2VkKQo+ICAgewo+ICAgCj4gICAJcmV0dXJuIDA7Cj4gICB9Cj4g
ICAKPiAgIGludAo+IC1zeXNfcmVhZChzdHJ1Y3QgZmlsZSAqZnAsIGNvbnN0IHN0cnVjdCBpb3Zl
YyAqaW92LCBzaXplX3QgbmlvdiwKPiArc3lzX3JlYWQoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAs
IGNvbnN0IHN0cnVjdCBpb3ZlYyAqaW92LCBzaXplX3QgbmlvdiwKPiAgIAkJb2ZmX3Qgb2Zmc2V0
LCBzaXplX3QgKmNvdW50KQo+ICAgewo+ICAgCWludCBlcnJvciA9IDA7Cj4gQEAgLTI5MCw3ICsy
OTAsNyBAQCBzeXNfcmVhZChzdHJ1Y3QgZmlsZSAqZnAsIGNvbnN0IHN0cnVjdCBpb3ZlYyAqaW92
LCBzaXplX3QgbmlvdiwKPiAgIH0KPiAgIAo+ICAgaW50Cj4gLXN5c193cml0ZShzdHJ1Y3QgZmls
ZSAqZnAsIGNvbnN0IHN0cnVjdCBpb3ZlYyAqaW92LCBzaXplX3QgbmlvdiwKPiArc3lzX3dyaXRl
KHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlvdiwgc2l6ZV90
IG5pb3YsCj4gICAJCW9mZl90IG9mZnNldCwgc2l6ZV90ICpjb3VudCkKPiAgIHsKPiAgIAlzdHJ1
Y3QgaW92ZWMgKmNvcHlfaW92Owo+IEBAIC0zMzcsMTIgKzMzNywxMiBAQCBzeXNfd3JpdGUoc3Ry
dWN0IGZpbGUgKmZwLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlvdiwgc2l6ZV90IG5pb3YsCj4gICB9
Cj4gICAKPiAgIGludAo+IC1zeXNfbHNlZWsoc3RydWN0IGZpbGUgKmZwLCBvZmZfdCBvZmYsIGlu
dCB0eXBlLCBvZmZfdCAqb3JpZ2luKQo+ICtzeXNfbHNlZWsoc3RydWN0IHZmc2NvcmVfZmlsZSAq
ZnAsIG9mZl90IG9mZiwgaW50IHR5cGUsIG9mZl90ICpvcmlnaW4pCj4gICB7Cj4gICAJc3RydWN0
IHZub2RlICp2cDsKPiAgIAo+IC0JRFBSSU5URihWRlNEQl9TWVNDQUxMLCAoInN5c19zZWVrOiBm
cD0leCBvZmY9JWQgdHlwZT0lZFxuIiwKPiAtCQkJCSh1X2xvbmcpZnAsICh1X2ludClvZmYsIHR5
cGUpKTsKPiArCURQUklOVEYoVkZTREJfU1lTQ0FMTCwgKCJzeXNfc2VlazogZnA9JXAgb2ZmPSV1
ZCB0eXBlPSVkXG4iLAo+ICsJCQkJZnAsICh1bnNpZ25lZCBpbnQpb2ZmLCB0eXBlKSk7Cj4gICAK
PiAgIAlpZiAoIWZwLT5mX2RlbnRyeSkgewo+ICAgCSAgICAvLyBMaW51eCBkb2Vzbid0IGltcGxl
bWVudCBsc2VlaygpIG9uIHBpcGVzLCBzb2NrZXRzLCBvciB0dHlzLgo+IEBAIC0zNzMsMTEgKzM3
MywxMSBAQCBzeXNfbHNlZWsoc3RydWN0IGZpbGUgKmZwLCBvZmZfdCBvZmYsIGludCB0eXBlLCBv
ZmZfdCAqb3JpZ2luKQo+ICAgfQo+ICAgCj4gICBpbnQKPiAtc3lzX2lvY3RsKHN0cnVjdCBmaWxl
ICpmcCwgdV9sb25nIHJlcXVlc3QsIHZvaWQgKmJ1ZikKPiArc3lzX2lvY3RsKHN0cnVjdCB2ZnNj
b3JlX2ZpbGUgKmZwLCB1bnNpZ25lZCBsb25nIHJlcXVlc3QsIHZvaWQgKmJ1ZikKPiAgIHsKPiAg
IAlpbnQgZXJyb3I7Cj4gICAKPiAtCURQUklOVEYoVkZTREJfU1lTQ0FMTCwgKCJzeXNfaW9jdGw6
IGZwPSV4IHJlcXVlc3Q9JXhcbiIsIGZwLCByZXF1ZXN0KSk7Cj4gKwlEUFJJTlRGKFZGU0RCX1NZ
U0NBTEwsICgic3lzX2lvY3RsOiBmcD0lcCByZXF1ZXN0PSVsdXhcbiIsIGZwLCByZXF1ZXN0KSk7
Cj4gICAKPiAgIAlpZiAoKGZwLT5mX2ZsYWdzICYgKEZSRUFEIHwgRldSSVRFKSkgPT0gMCkKPiAg
IAkJcmV0dXJuIEVCQURGOwo+IEBAIC0zODksNyArMzg5LDcgQEAgc3lzX2lvY3RsKHN0cnVjdCBm
aWxlICpmcCwgdV9sb25nIHJlcXVlc3QsIHZvaWQgKmJ1ZikKPiAgIH0KPiAgIAo+ICAgaW50Cj4g
LXN5c19mc3luYyhzdHJ1Y3QgZmlsZSAqZnApCj4gK3N5c19mc3luYyhzdHJ1Y3QgdmZzY29yZV9m
aWxlICpmcCkKPiAgIHsKPiAgIAlzdHJ1Y3Qgdm5vZGUgKnZwOwo+ICAgCWludCBlcnJvcjsKPiBA
QCAtNDA3LDcgKzQwNyw3IEBAIHN5c19mc3luYyhzdHJ1Y3QgZmlsZSAqZnApCj4gICB9Cj4gICAK
PiAgIGludAo+IC1zeXNfZnN0YXQoc3RydWN0IGZpbGUgKmZwLCBzdHJ1Y3Qgc3RhdCAqc3QpCj4g
K3N5c19mc3RhdChzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCwgc3RydWN0IHN0YXQgKnN0KQo+ICAg
ewo+ICAgCWludCBlcnJvciA9IDA7Cj4gICAKPiBAQCAtNDI1LDcgKzQyNSw3IEBAIHN0YXRpYyBp
bnQKPiAgIGNoZWNrX2Rpcl9lbXB0eShjaGFyICpwYXRoKQo+ICAgewo+ICAgCWludCBlcnJvcjsK
PiAtCXN0cnVjdCBmaWxlICpmcDsKPiArCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwOwo+ICAgCXN0
cnVjdCBkaXJlbnQgZGlyOwo+ICAgCj4gICAJRFBSSU5URihWRlNEQl9TWVNDQUxMLCAoImNoZWNr
X2Rpcl9lbXB0eVxuIikpOwo+IEBAIC00NTMsNyArNDUzLDcgQEAgb3V0X2Vycm9yOgo+ICAgfQo+
ICAgCj4gICBpbnQKPiAtc3lzX3JlYWRkaXIoc3RydWN0IGZpbGUgKmZwLCBzdHJ1Y3QgZGlyZW50
ICpkaXIpCj4gK3N5c19yZWFkZGlyKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwLCBzdHJ1Y3QgZGly
ZW50ICpkaXIpCj4gICB7Cj4gICAJc3RydWN0IHZub2RlICpkdnA7Cj4gICAJaW50IGVycm9yOwo+
IEBAIC00NzcsNyArNDc3LDcgQEAgc3lzX3JlYWRkaXIoc3RydWN0IGZpbGUgKmZwLCBzdHJ1Y3Qg
ZGlyZW50ICpkaXIpCj4gICB9Cj4gICAKPiAgIGludAo+IC1zeXNfcmV3aW5kZGlyKHN0cnVjdCBm
aWxlICpmcCkKPiArc3lzX3Jld2luZGRpcihzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCkKPiAgIHsK
PiAgIAlzdHJ1Y3Qgdm5vZGUgKmR2cDsKPiAgIAo+IEBAIC00OTYsNyArNDk2LDcgQEAgc3lzX3Jl
d2luZGRpcihzdHJ1Y3QgZmlsZSAqZnApCj4gICB9Cj4gICAKPiAgIGludAo+IC1zeXNfc2Vla2Rp
cihzdHJ1Y3QgZmlsZSAqZnAsIGxvbmcgbG9jKQo+ICtzeXNfc2Vla2RpcihzdHJ1Y3QgdmZzY29y
ZV9maWxlICpmcCwgbG9uZyBsb2MpCj4gICB7Cj4gICAJc3RydWN0IHZub2RlICpkdnA7Cj4gICAK
PiBAQCAtNTE1LDcgKzUxNSw3IEBAIHN5c19zZWVrZGlyKHN0cnVjdCBmaWxlICpmcCwgbG9uZyBs
b2MpCj4gICB9Cj4gICAKPiAgIGludAo+IC1zeXNfdGVsbGRpcihzdHJ1Y3QgZmlsZSAqZnAsIGxv
bmcgKmxvYykKPiArc3lzX3RlbGxkaXIoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAsIGxvbmcgKmxv
YykKPiAgIHsKPiAgIAlzdHJ1Y3Qgdm5vZGUgKmR2cDsKPiAgIAo+IEBAIC02NjIsMTQgKzY2Miwx
NCBAQCBzeXNfbWtub2QoY2hhciAqcGF0aCwgbW9kZV90IG1vZGUpCj4gICAgKgo+ICAgICogQXNz
dW1lcyBib3RoIHBhdGhzIGRvIG5vdCBoYXZlIHRyYWlsaW5nIHNsYXNoZXMuCj4gICAgKi8KPiAt
c3RhdGljIGJvb2wKPiArc3RhdGljIGludAo+ICAgaXNfcGFyZW50KGNvbnN0IGNoYXIgKnBhcmVu
dCwgY29uc3QgY2hhciAqY2hpbGQpCj4gICB7Cj4gICAJc2l6ZV90IHBfbGVuID0gc3RybGVuKHBh
cmVudCk7Cj4gICAJcmV0dXJuICFzdHJuY21wKHBhcmVudCwgY2hpbGQsIHBfbGVuKSAmJiAocGFy
ZW50W3BfbGVuLTFdID09ICcvJyB8fCBjaGlsZFtwX2xlbl0gPT0gJy8nKTsKPiAgIH0KPiAgIAo+
IC1zdGF0aWMgYm9vbAo+ICtzdGF0aWMgaW50Cj4gICBoYXNfdHJhaWxpbmcoY29uc3QgY2hhciAq
cGF0aCwgY2hhciBjaCkKPiAgIHsKPiAgIAlzaXplX3QgbGVuID0gc3RybGVuKHBhdGgpOwo+IEBA
IC02OTUsMTYgKzY5NSwxNiBAQCBzeXNfcmVuYW1lKGNoYXIgKnNyYywgY2hhciAqZGVzdCkKPiAg
IAljaGFyICpzbmFtZSwgKmRuYW1lOwo+ICAgCWludCBlcnJvcjsKPiAgIAljaGFyIHJvb3RbXSA9
ICIvIjsKPiAtCWJvb2wgdHM7IC8qIHRyYWlsaW5nIHNsYXNoICovCj4gKwlpbnQgdHM7IC8qIHRy
YWlsaW5nIHNsYXNoICovCj4gICAKPiAgIAlEUFJJTlRGKFZGU0RCX1NZU0NBTEwsICgic3lzX3Jl
bmFtZTogc3JjPSVzIGRlc3Q9JXNcbiIsIHNyYywgZGVzdCkpOwo+ICAgCj4gLQl0cyA9IGZhbHNl
Owo+IC0JaWYgKGhhc190cmFpbGluZyhzcmMsICcvJykgPT0gdHJ1ZSkgewo+ICsJdHMgPSAwOwo+
ICsJaWYgKGhhc190cmFpbGluZyhzcmMsICcvJykpIHsKPiAgIAkJaWYgKHN0cmxlbihzcmMpICE9
IDEpIHsKPiAgIAkJCS8qIHJlbW92ZSB0cmFpbGluZyBzbGFzaCBpZmYgcGF0aCBpcyBub25lIHJv
b3QgKi8KPiAgIAkJCXN0cmlwX3RyYWlsaW5nKHNyYywgJy8nKTsKPiAtCQkJdHMgPSB0cnVlOwo+
ICsJCQl0cyA9IDE7Cj4gICAJCX0KPiAgIAl9Cj4gICAKPiBAQCAtNzIyLDE3ICs3MjIsMTcgQEAg
c3lzX3JlbmFtZShjaGFyICpzcmMsIGNoYXIgKmRlc3QpCj4gICAJdnAxID0gZHAxLT5kX3Zub2Rl
Owo+ICAgCXZuX2xvY2sodnAxKTsKPiAgIAo+IC0JaWYgKHZwMS0+dl90eXBlICE9IFZESVIgJiYg
dHMgPT0gdHJ1ZSkgewo+ICsJaWYgKHZwMS0+dl90eXBlICE9IFZESVIgJiYgdHMpIHsKPiAgIAkJ
ZXJyb3IgPSBFTk9URElSOwo+ICAgCQlnb3RvIGVycjE7Cj4gICAJfQo+ICAgCj4gLQl0cyA9IGZh
bHNlOwo+IC0JaWYgKGhhc190cmFpbGluZyhkZXN0LCAnLycpID09IHRydWUpIHsKPiArCXRzID0g
MDsKPiArCWlmIChoYXNfdHJhaWxpbmcoZGVzdCwgJy8nKSkgewo+ICAgCQlpZiAoc3RybGVuKGRl
c3QpICE9IDEpIHsKPiAgIAkJCS8qIHJlbW92ZSB0cmFpbGluZyBzbGFzaCBpZmYgcGF0aCBpcyBu
b25lIHJvb3QgKi8KPiAgIAkJCXN0cmlwX3RyYWlsaW5nKGRlc3QsICcvJyk7Cj4gLQkJCXRzID0g
dHJ1ZTsKPiArCQkJdHMgPSAxOwo+ICAgCQl9Cj4gICAJfQo+ICAgCj4gQEAgLTc0OSw3ICs3NDks
NyBAQCBzeXNfcmVuYW1lKGNoYXIgKnNyYywgY2hhciAqZGVzdCkKPiAgIAkJdm5fbG9jayh2cDIp
Owo+ICAgCj4gICAJCWlmICh2cDItPnZfdHlwZSAhPSBWRElSICYmIHZwMi0+dl90eXBlICE9IFZM
TkspIHsKPiAtCQkJaWYgKHZwMS0+dl90eXBlID09IFZESVIgfHwgdHMgPT0gdHJ1ZSkgewo+ICsJ
CQlpZiAodnAxLT52X3R5cGUgPT0gVkRJUiB8fCB0cykgewo+ICAgCQkJCWVycm9yID0gRU5PVERJ
UjsKPiAgIAkJCQlnb3RvIGVycjI7Cj4gICAJCQl9Cj4gQEAgLTc2Miw3ICs3NjIsNyBAQCBzeXNf
cmVuYW1lKGNoYXIgKnNyYywgY2hhciAqZGVzdCkKPiAgIAkJCWdvdG8gZXJyMjsKPiAgIAkJfQo+
ICAgCX0gZWxzZSBpZiAoZXJyb3IgPT0gRU5PRU5UKSB7Cj4gLQkJaWYgKHZwMS0+dl90eXBlICE9
IFZESVIgJiYgdHMgPT0gdHJ1ZSkgewo+ICsJCWlmICh2cDEtPnZfdHlwZSAhPSBWRElSICYmIHRz
KSB7Cj4gICAJCQllcnJvciA9IEVOT1RESVI7Cj4gICAJCQlnb3RvIGVycjI7Cj4gICAJCX0KPiBA
QCAtNzg3LDcgKzc4Nyw3IEBAIHN5c19yZW5hbWUoY2hhciAqc3JjLCBjaGFyICpkZXN0KQo+ICAg
CX0KPiAgIAo+ICAgCWRuYW1lID0gc3RycmNocihkZXN0LCAnLycpOwo+IC0JaWYgKGRuYW1lID09
IG51bGxwdHIpIHsKPiArCWlmIChkbmFtZSA9PSBOVUxMKSB7Cj4gICAJCWVycm9yID0gRU5PVERJ
UjsKPiAgIAkJZ290byBlcnIyOwo+ICAgCX0KPiBAQCAtODQ4LDE1ICs4NDgsMTUgQEAgc3lzX3N5
bWxpbmsoY29uc3QgY2hhciAqb2xkcGF0aCwgY29uc3QgY2hhciAqbmV3cGF0aCkKPiAgIAlzdHJ1
Y3QgZGVudHJ5CSpuZXdkaXJkcDsKPiAgIAljaGFyCQkqbmFtZTsKPiAgIAo+IC0JaWYgKG9sZHBh
dGggPT0gbnVsbHB0ciB8fCBuZXdwYXRoID09IG51bGxwdHIpIHsKPiArCWlmIChvbGRwYXRoID09
IE5VTEwgfHwgbmV3cGF0aCA9PSBOVUxMKSB7Cj4gICAJCXJldHVybiAoRUZBVUxUKTsKPiAgIAl9
Cj4gICAKPiAgIAlEUFJJTlRGKFZGU0RCX1NZU0NBTEwsICgic3lzX2xpbms6IG9sZHBhdGg9JXMg
bmV3cGF0aD0lc1xuIiwKPiAgIAkJCQlvbGRwYXRoLCBuZXdwYXRoKSk7Cj4gICAKPiAtCW5ld2Rw
CQk9IG51bGxwdHI7Cj4gLQluZXdkaXJkcAk9IG51bGxwdHI7Cj4gKwluZXdkcAkJPSBOVUxMOwo+
ICsJbmV3ZGlyZHAJPSBOVUxMOwo+ICAgCj4gICAJZXJyb3IgPSB0YXNrX2NvbnYodCwgbmV3cGF0
aCwgVldSSVRFLCBucCk7Cj4gICAJaWYgKGVycm9yICE9IDApIHsKPiBAQCAtODkyLDcgKzg5Miw3
IEBAIHN5c19zeW1saW5rKGNvbnN0IGNoYXIgKm9sZHBhdGgsIGNvbnN0IGNoYXIgKm5ld3BhdGgp
Cj4gICAJZXJyb3IgPSBWT1BfU1lNTElOSyhuZXdkaXJkcC0+ZF92bm9kZSwgbmFtZSwgb3ApOwo+
ICAgCj4gICBvdXQ6Cj4gLQlpZiAobmV3ZGlyZHAgIT0gbnVsbHB0cikgewo+ICsJaWYgKG5ld2Rp
cmRwICE9IE5VTEwpIHsKPiAgIAkJdm5fdW5sb2NrKG5ld2RpcmRwLT5kX3Zub2RlKTsKPiAgIAkJ
ZHJlbGUobmV3ZGlyZHApOwo+ICAgCX0KPiBAQCAtOTcyLDkgKzk3Miw5IEBAIHN5c191bmxpbmso
Y2hhciAqcGF0aCkKPiAgIAo+ICAgCURQUklOVEYoVkZTREJfU1lTQ0FMTCwgKCJzeXNfdW5saW5r
OiBwYXRoPSVzXG4iLCBwYXRoKSk7Cj4gICAKPiAtCWRkcCAgID0gbnVsbHB0cjsKPiAtCWRwICAg
ID0gbnVsbHB0cjsKPiAtCXZwICAgID0gbnVsbHB0cjsKPiArCWRkcCAgID0gTlVMTDsKPiArCWRw
ICAgID0gTlVMTDsKPiArCXZwICAgID0gTlVMTDsKPiAgIAo+ICAgCWVycm9yID0gbG9va3VwKHBh
dGgsICZkZHAsICZuYW1lKTsKPiAgIAlpZiAoZXJyb3IgIT0gMCkgewo+IEBAIC0xMDEzLDE1ICsx
MDEzLDE1IEBAIHN5c191bmxpbmsoY2hhciAqcGF0aCkKPiAgIAlkcmVsZShkcCk7Cj4gICAJcmV0
dXJuIGVycm9yOwo+ICAgIG91dDoKPiAtCWlmICh2cCAhPSBudWxscHRyKSB7Cj4gKwlpZiAodnAg
IT0gTlVMTCkgewo+ICAgCQl2bl91bmxvY2sodnApOwo+ICAgCX0KPiAgIAo+IC0JaWYgKGRwICE9
IG51bGxwdHIpIHsKPiArCWlmIChkcCAhPSBOVUxMKSB7Cj4gICAJCWRyZWxlKGRwKTsKPiAgIAl9
Cj4gICAKPiAtCWlmIChkZHAgIT0gbnVsbHB0cikgewo+ICsJaWYgKGRkcCAhPSBOVUxMKSB7Cj4g
ICAJCWRyZWxlKGRkcCk7Cj4gICAJfQo+ICAgCXJldHVybiBlcnJvcjsKPiBAQCAtMTExNSw3ICsx
MTE1LDcgQEAgc3lzX3N0YXRmcyhjaGFyICpwYXRoLCBzdHJ1Y3Qgc3RhdGZzICpidWYpCj4gICB9
Cj4gICAKPiAgIGludAo+IC1zeXNfZnN0YXRmcyhzdHJ1Y3QgZmlsZSAqZnAsIHN0cnVjdCBzdGF0
ZnMgKmJ1ZikKPiArc3lzX2ZzdGF0ZnMoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAsIHN0cnVjdCBz
dGF0ZnMgKmJ1ZikKPiAgIHsKPiAgIAlzdHJ1Y3Qgdm5vZGUgKnZwOwo+ICAgCWludCBlcnJvciA9
IDA7Cj4gQEAgLTExNTIsNyArMTE1Miw3IEBAIHN5c190cnVuY2F0ZShjaGFyICpwYXRoLCBvZmZf
dCBsZW5ndGgpCj4gICB9Cj4gICAKPiAgIGludAo+IC1zeXNfZnRydW5jYXRlKHN0cnVjdCBmaWxl
ICpmcCwgb2ZmX3QgbGVuZ3RoKQo+ICtzeXNfZnRydW5jYXRlKHN0cnVjdCB2ZnNjb3JlX2ZpbGUg
KmZwLCBvZmZfdCBsZW5ndGgpCj4gICB7Cj4gICAJc3RydWN0IHZub2RlICp2cDsKPiAgIAlpbnQg
ZXJyb3I7Cj4gQEAgLTExNjksNyArMTE2OSw3IEBAIHN5c19mdHJ1bmNhdGUoc3RydWN0IGZpbGUg
KmZwLCBvZmZfdCBsZW5ndGgpCj4gICB9Cj4gICAKPiAgIGludAo+IC1zeXNfZmNoZGlyKHN0cnVj
dCBmaWxlICpmcCwgY2hhciAqY3dkKQo+ICtzeXNfZmNoZGlyKHN0cnVjdCB2ZnNjb3JlX2ZpbGUg
KmZwLCBjaGFyICpjd2QpCj4gICB7Cj4gICAJc3RydWN0IHZub2RlICpkdnA7Cj4gICAKPiBAQCAt
MTI0NCw3ICsxMjQ0LDcgQEAgc3lzX3JlYWRsaW5rKGNoYXIgKnBhdGgsIGNoYXIgKmJ1Ziwgc2l6
ZV90IGJ1ZnNpemUsIHNzaXplX3QgKnNpemUpCj4gICAvKgo+ICAgICogQ2hlY2sgdGhlIHZhbGlk
aXR5IG9mIHRoZSBtZW1iZXJzIG9mIGEgc3RydWN0IHRpbWV2YWwuCj4gICAgKi8KPiAtc3RhdGlj
IGJvb2wgaXNfdGltZXZhbF92YWxpZChjb25zdCBzdHJ1Y3QgdGltZXZhbCAqdGltZSkKPiArc3Rh
dGljIGludCBpc190aW1ldmFsX3ZhbGlkKGNvbnN0IHN0cnVjdCB0aW1ldmFsICp0aW1lKQo+ICAg
ewo+ICAgCXJldHVybiAodGltZS0+dHZfc2VjID49IDApICYmCj4gICAJCSAgICh0aW1lLT50dl91
c2VjID49IDAgJiYgdGltZS0+dHZfdXNlYyA8IDEwMDAwMDApOwo+IEBAIC0xMjc2LDE4ICsxMjc2
LDE4IEBAIHN5c191dGltZXMoY2hhciAqcGF0aCwgY29uc3Qgc3RydWN0IHRpbWV2YWwgdGltZXNb
Ml0sIGludCBmbGFncykKPiAgIAkJcmV0dXJuIEVJTlZBTDsKPiAgIAo+ICAgCS8vIENvbnZlcnQg
ZWFjaCBlbGVtZW50IG9mIHRpbWV2YWwgYXJyYXkgdG8gdGhlIHRpbWVzcGVjIHR5cGUKPiAtCWNv
bnZlcnRfdGltZXZhbCh0aW1lc3BlY190aW1lc1swXSwgdGltZXMgPyB0aW1lcyArIDAgOiBudWxs
cHRyKTsKPiAtCWNvbnZlcnRfdGltZXZhbCh0aW1lc3BlY190aW1lc1sxXSwgdGltZXMgPyB0aW1l
cyArIDEgOiBudWxscHRyKTsKPiArCWNvbnZlcnRfdGltZXZhbCh0aW1lc3BlY190aW1lc1swXSwg
dGltZXMgPyB0aW1lcyArIDAgOiBOVUxMKTsKPiArCWNvbnZlcnRfdGltZXZhbCh0aW1lc3BlY190
aW1lc1sxXSwgdGltZXMgPyB0aW1lcyArIDEgOiBOVUxMKTsKPiAgIAo+ICAgCWlmIChmbGFncyAm
IEFUX1NZTUxJTktfTk9GT0xMT1cpIHsKPiAgIAkJc3RydWN0IGRlbnRyeSAqZGRwOwo+IC0JCWVy
cm9yID0gbG9va3VwKHBhdGgsICZkZHAsIG51bGxwdHIpOwo+ICsJCWVycm9yID0gbG9va3VwKHBh
dGgsICZkZHAsIE5VTEwpOwo+ICAgCQlpZiAoZXJyb3IpIHsKPiAgIAkJCXJldHVybiBlcnJvcjsK
PiAgIAkJfQo+ICAgCj4gICAJCWVycm9yID0gbmFtZWlfbGFzdF9ub2ZvbGxvdyhwYXRoLCBkZHAs
ICZkcCk7Cj4gLQkJaWYgKGRkcCAhPSBudWxscHRyKSB7Cj4gKwkJaWYgKGRkcCAhPSBOVUxMKSB7
Cj4gICAJCQlkcmVsZShkZHApOwo+ICAgCQl9Cj4gICAJCWlmIChlcnJvcikgewo+IEBAIC0xMzEy
LDcgKzEzMTIsNyBAQCBzeXNfdXRpbWVzKGNoYXIgKnBhdGgsIGNvbnN0IHN0cnVjdCB0aW1ldmFs
IHRpbWVzWzJdLCBpbnQgZmxhZ3MpCj4gICAvKgo+ICAgICogQ2hlY2sgdGhlIHZhbGlkaXR5IG9m
IG1lbWJlcnMgb2YgYSBzdHJ1Y3QgdGltZXNwZWMKPiAgICAqLwo+IC1zdGF0aWMgYm9vbCBpc190
aW1lc3BlY192YWxpZChjb25zdCBzdHJ1Y3QgdGltZXNwZWMgJnRpbWUpCj4gK3N0YXRpYyBpbnQg
aXNfdGltZXNwZWNfdmFsaWQoY29uc3Qgc3RydWN0IHRpbWVzcGVjICZ0aW1lKQo+ICAgewo+ICAg
CXJldHVybiAodGltZS50dl9zZWMgPj0gMCkgJiYKPiAgIAkgICAoKHRpbWUudHZfbnNlYyA+PSAw
ICYmIHRpbWUudHZfbnNlYyA8PSA5OTk5OTk5OTkpIHx8Cj4gQEAgLTEzMjIsNyArMTMyMiw3IEBA
IHN0YXRpYyBib29sIGlzX3RpbWVzcGVjX3ZhbGlkKGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAmdGlt
ZSkKPiAgIAo+ICAgdm9pZCBpbml0X3RpbWVzcGVjKHN0cnVjdCB0aW1lc3BlYyAmX3RpbWVzLCBj
b25zdCBzdHJ1Y3QgdGltZXNwZWMgKnRpbWVzKQo+ICAgewo+IC0JaWYgKHRpbWVzID09IG51bGxw
dHIgfHwgdGltZXMtPnR2X25zZWMgPT0gVVRJTUVfTk9XKSB7Cj4gKwlpZiAodGltZXMgPT0gTlVM
TCB8fCB0aW1lcy0+dHZfbnNlYyA9PSBVVElNRV9OT1cpIHsKPiAgIAkJY2xvY2tfZ2V0dGltZShD
TE9DS19SRUFMVElNRSwgJl90aW1lcyk7Cj4gICAJfSBlbHNlIHsKPiAgIAkJX3RpbWVzLnR2X3Nl
YyA9IHRpbWVzLT50dl9zZWM7Cj4gQEAgLTEzNTAsOCArMTM1MCw4IEBAIHN5c191dGltZW5zYXQo
aW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwgY29uc3Qgc3RydWN0IHRpbWVzcGVjIHRp
bWVzWzJdLCBpCj4gICAJaWYgKHRpbWVzICYmICghaXNfdGltZXNwZWNfdmFsaWQodGltZXNbMF0p
IHx8ICFpc190aW1lc3BlY192YWxpZCh0aW1lc1sxXSkpKQo+ICAgCQlyZXR1cm4gRUlOVkFMOwo+
ICAgCj4gLQlpbml0X3RpbWVzcGVjKHRpbWVzcGVjX3RpbWVzWzBdLCB0aW1lcyA/IHRpbWVzICsg
MCA6IG51bGxwdHIpOwo+IC0JaW5pdF90aW1lc3BlYyh0aW1lc3BlY190aW1lc1sxXSwgdGltZXMg
PyB0aW1lcyArIDEgOiBudWxscHRyKTsKPiArCWluaXRfdGltZXNwZWModGltZXNwZWNfdGltZXNb
MF0sIHRpbWVzID8gdGltZXMgKyAwIDogTlVMTCk7Cj4gKwlpbml0X3RpbWVzcGVjKHRpbWVzcGVj
X3RpbWVzWzFdLCB0aW1lcyA/IHRpbWVzICsgMSA6IE5VTEwpOwo+ICAgCj4gICAJaWYgKHBhdGhu
YW1lICYmIHBhdGhuYW1lWzBdID09ICcvJykgewo+ICAgCWFwID0gcGF0aG5hbWU7Cj4gQEAgLTEz
NjAsNyArMTM2MCw3IEBAIHN5c191dGltZW5zYXQoaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRo
bmFtZSwgY29uc3Qgc3RydWN0IHRpbWVzcGVjIHRpbWVzWzJdLCBpCj4gICAJICAgIHJldHVybiBF
RkFVTFQ7Cj4gICAJYXAgPSBzdGQ6OnN0cmluZyhtYWluX3Rhc2stPnRfY3dkKSArICIvIiArIHBh
dGhuYW1lOwo+ICAgCX0gZWxzZSB7Cj4gLQkJc3RydWN0IGZpbGUgKmZwOwo+ICsJCXN0cnVjdCB2
ZnNjb3JlX2ZpbGUgKmZwOwo+ICAgCQlmaWxlcmVmIGYoZmlsZXJlZl9mcm9tX2ZkKGRpcmZkKSk7
Cj4gICAKPiAgIAkJaWYgKCFmKQo+IEBAIC0xNDEwLDcgKzE0MTAsNyBAQCBzeXNfdXRpbWVuc2F0
KGludCBkaXJmZCwgY29uc3QgY2hhciAqcGF0aG5hbWUsIGNvbnN0IHN0cnVjdCB0aW1lc3BlYyB0
aW1lc1syXSwgaQo+ICAgaW50Cj4gICBzeXNfZnV0aW1lbnMoaW50IGZkLCBjb25zdCBzdHJ1Y3Qg
dGltZXNwZWMgdGltZXNbMl0pCj4gICB7Cj4gLQlzdHJ1Y3QgZmlsZSAqZnA7Cj4gKwlzdHJ1Y3Qg
dmZzY29yZV9maWxlICpmcDsKPiAgIAo+ICAgCWZpbGVyZWYgZihmaWxlcmVmX2Zyb21fZmQoZmQp
KTsKPiAgIAlpZiAoIWYpCj4gQEAgLTE0MjgsNyArMTQyOCw3IEBAIHN5c19mdXRpbWVucyhpbnQg
ZmQsIGNvbnN0IHN0cnVjdCB0aW1lc3BlYyB0aW1lc1syXSkKPiAgICNlbmRpZgo+ICAgCj4gICBp
bnQKPiAtc3lzX2ZhbGxvY2F0ZShzdHJ1Y3QgZmlsZSAqZnAsIGludCBtb2RlLCBsb2ZmX3Qgb2Zm
c2V0LCBsb2ZmX3QgbGVuKQo+ICtzeXNfZmFsbG9jYXRlKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZw
LCBpbnQgbW9kZSwgb2ZmX3Qgb2Zmc2V0LCBvZmZfdCBsZW4pCj4gICB7Cj4gICAJaW50IGVycm9y
Owo+ICAgCXN0cnVjdCB2bm9kZSAqdnA7Cj4gQEAgLTE0OTMsNyArMTQ5Myw3IEBAIHN5c19jaG1v
ZChjb25zdCBjaGFyICpwYXRoLCBtb2RlX3QgbW9kZSkKPiAgIGludAo+ICAgc3lzX2ZjaG1vZChp
bnQgZmQsIG1vZGVfdCBtb2RlKQo+ICAgewo+IC0JZmlsZXJlZiBmKGZpbGVyZWZfZnJvbV9mZChm
ZCkpOwo+ICsJc3RydWN0IHZmc2NvcmVfZmlsZSAqZiA9IHZmc2NvcmVfZ2V0X2ZpbGUoZmQpOwo+
ICAgCWlmICghZikKPiAgIAkJcmV0dXJuIEVCQURGOwo+ICAgCS8vIFBvc2l4IGlzIGFtYml2YWxl
bnQgb24gd2hhdCBmY2htb2QoKSBzaG91bGQgZG8gb24gYW4gZmQgdGhhdCBkb2VzIG5vdAo+IGRp
ZmYgLS1naXQgYS9saWIvdmZzY29yZS92ZnMuaCBiL2xpYi92ZnNjb3JlL3Zmcy5oCj4gaW5kZXgg
MjUzMWY3MzAuLjE5ZjhhYzg3IDEwMDY0NAo+IC0tLSBhL2xpYi92ZnNjb3JlL3Zmcy5oCj4gKysr
IGIvbGliL3Zmc2NvcmUvdmZzLmgKPiBAQCAtNTcsNyArNTcsNyBAQCBleHRlcm4gaW50IHZmc19k
ZWJ1ZzsKPiAgIAo+ICAgI2RlZmluZSBWRlNEQl9GTEFHUwkweDAwMDAwMDEzCj4gICAKPiAtI2Rl
ZmluZQlEUFJJTlRGKF9tLFgpCWlmICh2ZnNfZGVidWcgJiAoX20pKSBrcHJpbnRmIFgKPiArI2Rl
ZmluZQlEUFJJTlRGKF9tLFgpCWlmICh2ZnNfZGVidWcgJiAoX20pKSB1a19wcl9kZWJ1ZyBYCj4g
ICAjZWxzZQo+ICAgI2RlZmluZQlEUFJJTlRGKF9tLCBYKQo+ICAgI2VuZGlmCj4gQEAgLTcxLDI4
ICs3MSwyNiBAQCBleHRlcm4gaW50IHZmc19kZWJ1ZzsKPiAgICAqLwo+ICAgc3RydWN0IHRhc2sg
ewo+ICAgCWNoYXIgCSAgICB0X2N3ZFtQQVRIX01BWF07CS8qIGN1cnJlbnQgd29ya2luZyBkaXJl
Y3RvcnkgKi8KPiAtCXN0cnVjdCBmaWxlICp0X2N3ZGZwOwkJLyogZGlyZWN0b3J5IGZvciBjd2Qg
Ki8KPiArCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKnRfY3dkZnA7CQkvKiBkaXJlY3RvcnkgZm9yIGN3
ZCAqLwo+ICAgfTsKPiAgIAo+IC1leHRlcm4gY29uc3Qgc3RydWN0IHZmc3N3IHZmc3N3W107Cj4g
LQo+IC1pbnQJIHN5c19vcGVuKGNoYXIgKnBhdGgsIGludCBmbGFncywgbW9kZV90IG1vZGUsIHN0
cnVjdCBmaWxlICoqZnApOwo+IC1pbnQJIHN5c19yZWFkKHN0cnVjdCBmaWxlICpmcCwgY29uc3Qg
c3RydWN0IGlvdmVjICppb3YsIHNpemVfdCBuaW92LAo+ICtpbnQJIHN5c19vcGVuKGNoYXIgKnBh
dGgsIGludCBmbGFncywgbW9kZV90IG1vZGUsIHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKipmcCk7Cj4g
K2ludAkgc3lzX3JlYWQoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAsIGNvbnN0IHN0cnVjdCBpb3Zl
YyAqaW92LCBzaXplX3QgbmlvdiwKPiAgIAkJb2ZmX3Qgb2Zmc2V0LCBzaXplX3QgKmNvdW50KTsK
PiAtaW50CSBzeXNfd3JpdGUoc3RydWN0IGZpbGUgKmZwLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlv
diwgc2l6ZV90IG5pb3YsCj4gK2ludAkgc3lzX3dyaXRlKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZw
LCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlvdiwgc2l6ZV90IG5pb3YsCj4gICAJCW9mZl90IG9mZnNl
dCwgc2l6ZV90ICpjb3VudCk7Cj4gLWludAkgc3lzX2xzZWVrKHN0cnVjdCBmaWxlICpmcCwgb2Zm
X3Qgb2ZmLCBpbnQgdHlwZSwgb2ZmX3QgKiBjdXJfb2ZmKTsKPiAtaW50CSBzeXNfaW9jdGwoc3Ry
dWN0IGZpbGUgKmZwLCB1X2xvbmcgcmVxdWVzdCwgdm9pZCAqYnVmKTsKPiAtaW50CSBzeXNfZnN0
YXQoc3RydWN0IGZpbGUgKmZwLCBzdHJ1Y3Qgc3RhdCAqc3QpOwo+IC1pbnQJIHN5c19mc3RhdGZz
KHN0cnVjdCBmaWxlICpmcCwgc3RydWN0IHN0YXRmcyAqYnVmKTsKPiAtaW50CSBzeXNfZnN5bmMo
c3RydWN0IGZpbGUgKmZwKTsKPiAtaW50CSBzeXNfZnRydW5jYXRlKHN0cnVjdCBmaWxlICpmcCwg
b2ZmX3QgbGVuZ3RoKTsKPiAtCj4gLWludAkgc3lzX3JlYWRkaXIoc3RydWN0IGZpbGUgKmZwLCBz
dHJ1Y3QgZGlyZW50ICpkaXJlbnQpOwo+IC1pbnQJIHN5c19yZXdpbmRkaXIoc3RydWN0IGZpbGUg
KmZwKTsKPiAtaW50CSBzeXNfc2Vla2RpcihzdHJ1Y3QgZmlsZSAqZnAsIGxvbmcgbG9jKTsKPiAt
aW50CSBzeXNfdGVsbGRpcihzdHJ1Y3QgZmlsZSAqZnAsIGxvbmcgKmxvYyk7Cj4gLWludAkgc3lz
X2ZjaGRpcihzdHJ1Y3QgZmlsZSAqZnAsIGNoYXIgKnBhdGgpOwo+ICtpbnQJIHN5c19sc2Vlayhz
dHJ1Y3QgdmZzY29yZV9maWxlICpmcCwgb2ZmX3Qgb2ZmLCBpbnQgdHlwZSwgb2ZmX3QgKiBjdXJf
b2ZmKTsKPiAraW50CSBzeXNfaW9jdGwoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAsIHVuc2lnbmVk
IGxvbmcgcmVxdWVzdCwgdm9pZCAqYnVmKTsKPiAraW50CSBzeXNfZnN0YXQoc3RydWN0IHZmc2Nv
cmVfZmlsZSAqZnAsIHN0cnVjdCBzdGF0ICpzdCk7Cj4gK2ludAkgc3lzX2ZzdGF0ZnMoc3RydWN0
IHZmc2NvcmVfZmlsZSAqZnAsIHN0cnVjdCBzdGF0ZnMgKmJ1Zik7Cj4gK2ludAkgc3lzX2ZzeW5j
KHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwKTsKPiAraW50CSBzeXNfZnRydW5jYXRlKHN0cnVjdCB2
ZnNjb3JlX2ZpbGUgKmZwLCBvZmZfdCBsZW5ndGgpOwo+ICsKPiAraW50CSBzeXNfcmVhZGRpcihz
dHJ1Y3QgdmZzY29yZV9maWxlICpmcCwgc3RydWN0IGRpcmVudCAqZGlyZW50KTsKPiAraW50CSBz
eXNfcmV3aW5kZGlyKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwKTsKPiAraW50CSBzeXNfc2Vla2Rp
cihzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCwgbG9uZyBsb2MpOwo+ICtpbnQJIHN5c190ZWxsZGly
KHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwLCBsb25nICpsb2MpOwo+ICtpbnQJIHN5c19mY2hkaXIo
c3RydWN0IHZmc2NvcmVfZmlsZSAqZnAsIGNoYXIgKnBhdGgpOwo+ICAgCj4gICBpbnQJIHN5c19t
a2RpcihjaGFyICpwYXRoLCBtb2RlX3QgbW9kZSk7Cj4gICBpbnQJIHN5c19ybWRpcihjaGFyICpw
YXRoKTsKPiBAQCAtMTExLDcgKzEwOSw3IEBAIGludCAgc3lzX3V0aW1lcyhjaGFyICpwYXRoLCBj
b25zdCBzdHJ1Y3QgdGltZXZhbCB0aW1lc1syXSwgaW50IGZsYWdzKTsKPiAgIGludCAgc3lzX3V0
aW1lbnNhdChpbnQgZGlyZmQsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLAo+ICAgCQkJCSAgIGNvbnN0
IHN0cnVjdCB0aW1lc3BlYyB0aW1lc1syXSwgaW50IGZsYWdzKTsKPiAgIGludCAgc3lzX2Z1dGlt
ZW5zKGludCBmZCwgY29uc3Qgc3RydWN0IHRpbWVzcGVjIHRpbWVzWzJdKTsKPiAtaW50ICBzeXNf
ZmFsbG9jYXRlKHN0cnVjdCBmaWxlICpmcCwgaW50IG1vZGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZf
dCBsZW4pOwo+ICtpbnQgIHN5c19mYWxsb2NhdGUoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAsIGlu
dCBtb2RlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuKTsKPiAgIAo+ICAgaW50CSBzeXNfbW91
bnQoY29uc3QgY2hhciAqZGV2LCBjb25zdCBjaGFyICpkaXIsIGNvbnN0IGNoYXIgKmZzbmFtZSwg
aW50IGZsYWdzLCBjb25zdCB2b2lkICpkYXRhKTsKPiAgIGludAkgc3lzX3Vtb3VudDIoY29uc3Qg
Y2hhciAqcGF0aCwgaW50IGZsYWdzKTsKPiBkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvdm5vZGUu
YyBiL2xpYi92ZnNjb3JlL3Zub2RlLmMKPiBpbmRleCA4MWY3OGJlOC4uYTJmNDU1OTYgMTAwNjQ0
Cj4gLS0tIGEvbGliL3Zmc2NvcmUvdm5vZGUuYwo+ICsrKyBiL2xpYi92ZnNjb3JlL3Zub2RlLmMK
PiBAQCAtNzcsMjQgKzc3LDI3IEBAIGludCB2dHRvaWZfdGFiWzEwXSA9IHsKPiAgICAqIEFsbCBh
Y3RpdmUgKG9wZW5lZCkgdm5vZGVzIGFyZSBzdG9yZWQgb24gdGhpcyBoYXNoIHRhYmxlLgo+ICAg
ICogVGhleSBjYW4gYmUgYWNjZXNzZWQgYnkgaXRzIHBhdGggbmFtZS4KPiAgICAqLwo+IC1zdGF0
aWMgTElTVF9IRUFEKHZub2RlX2hhc2hfaGVhZCwgdm5vZGUpIHZub2RlX3RhYmxlW1ZOT0RFX0JV
Q0tFVFNdOwo+ICtzdGF0aWMgc3RydWN0IHVrX2xpc3RfaGVhZCB2bm9kZV90YWJsZVtWTk9ERV9C
VUNLRVRTXTsKPiAgIAo+ICAgLyoKPiAgICAqIEdsb2JhbCBsb2NrIHRvIGFjY2VzcyBhbGwgdm5v
ZGVzIGFuZCB2bm9kZSB0YWJsZS4KPiAgICAqIElmIGEgdm5vZGUgaXMgYWxyZWFkeSBsb2NrZWQs
IHRoZXJlIGlzIG5vIG5lZWQgdG8KPiAgICAqIGxvY2sgdGhpcyBnbG9iYWwgbG9jayB0byBhY2Nl
c3MgaW50ZXJuYWwgZGF0YS4KPiAgICAqLwo+IC1zdGF0aWMgbXV0ZXhfdCB2bm9kZV9sb2NrID0g
TVVURVhfSU5JVElBTElaRVI7Cj4gLSNkZWZpbmUgVk5PREVfTE9DSygpCW11dGV4X2xvY2soJnZu
b2RlX2xvY2spCj4gLSNkZWZpbmUgVk5PREVfVU5MT0NLKCkJbXV0ZXhfdW5sb2NrKCZ2bm9kZV9s
b2NrKQo+IC0jZGVmaW5lIFZOT0RFX09XTkVEKCkJbXV0ZXhfb3duZWQoJnZub2RlX2xvY2spCj4g
K3N0YXRpYyBzdHJ1Y3QgdWtfbXV0ZXggdm5vZGVfbG9jayA9IFVLX01VVEVYX0lOSVRJQUxJWkVS
KHZub2RlX2xvY2spOwo+ICsjZGVmaW5lIFZOT0RFX0xPQ0soKQl1a19tdXRleF9sb2NrKCZ2bm9k
ZV9sb2NrKQo+ICsjZGVmaW5lIFZOT0RFX1VOTE9DSygpCXVrX211dGV4X3VubG9jaygmdm5vZGVf
bG9jaykKPiArCj4gKy8qIFRPRE86IGltcGxlbWVudCBtdXRleF9vd25lZCAqLwo+ICsjZGVmaW5l
IFZOT0RFX09XTkVEKCkJKDEpCj4gKy8qICNkZWZpbmUgVk5PREVfT1dORUQoKQltdXRleF9vd25l
ZCgmdm5vZGVfbG9jaykgKi8KPiArCj4gICAKPiAgIC8qCj4gICAgKiBHZXQgdGhlIGhhc2ggdmFs
dWUgZnJvbSB0aGUgbW91bnQgcG9pbnQgYW5kIHBhdGggbmFtZS4KPiAgICAqIFhYWChoY2gpOiBy
ZXBsYWNlIHdpdGggYSBiZXR0ZXIgaGFzaCBmb3IgNjQtYml0IHBvaW50ZXJzLgo+ICAgICovCj4g
LXN0YXRpYyB1X2ludAo+IC12bl9oYXNoKHN0cnVjdCBtb3VudCAqbXAsIHVpbnQ2NF90IGlubykK
PiArc3RhdGljIHVuc2lnbmVkIGludCB2bl9oYXNoKHN0cnVjdCBtb3VudCAqbXAsIHVpbnQ2NF90
IGlubykKPiAgIHsKPiAgIAlyZXR1cm4gKGlubyBeICh1bnNpZ25lZCBsb25nKW1wKSAmIChWTk9E
RV9CVUNLRVRTIC0gMSk7Cj4gICB9Cj4gQEAgLTExMCwxNiArMTEzLDE1IEBAIHZuX2xvb2t1cChz
dHJ1Y3QgbW91bnQgKm1wLCB1aW50NjRfdCBpbm8pCj4gICB7Cj4gICAJc3RydWN0IHZub2RlICp2
cDsKPiAgIAo+IC0JYXNzZXJ0KFZOT0RFX09XTkVEKCkpOwo+IC0JTElTVF9GT1JFQUNIKHZwLCAm
dm5vZGVfdGFibGVbdm5faGFzaChtcCwgaW5vKV0sIHZfbGluaykgewo+ICsJVUtfQVNTRVJUKFZO
T0RFX09XTkVEKCkpOwo+ICsJdWtfbGlzdF9mb3JfZWFjaF9lbnRyeSh2cCwgJnZub2RlX3RhYmxl
W3ZuX2hhc2gobXAsIGlubyldLCB2X2xpbmspIHsKPiAgIAkJaWYgKHZwLT52X21vdW50ID09IG1w
ICYmIHZwLT52X2lubyA9PSBpbm8pIHsKPiAgIAkJCXZwLT52X3JlZmNudCsrOwo+IC0JCQltdXRl
eF9sb2NrKCZ2cC0+dl9sb2NrKTsKPiAtCQkJdnAtPnZfbnJsb2NrcysrOwo+ICsJCQl1a19tdXRl
eF9sb2NrKCZ2cC0+dl9sb2NrKTsKPiAgIAkJCXJldHVybiB2cDsKPiAgIAkJfQo+ICAgCX0KPiAt
CXJldHVybiBudWxscHRyOwkJLyogbm90IGZvdW5kICovCj4gKwlyZXR1cm4gTlVMTDsJCS8qIG5v
dCBmb3VuZCAqLwo+ICAgfQo+ICAgCj4gICAjaWZkZWYgREVCVUdfVkZTCj4gQEAgLTEyOCwxMCAr
MTMwLDEwIEBAIHZuX3BhdGgoc3RydWN0IHZub2RlICp2cCkKPiAgIHsKPiAgIAlzdHJ1Y3QgZGVu
dHJ5ICpkcDsKPiAgIAo+IC0JaWYgKExJU1RfRU1QVFkoJnZwLT52X25hbWVzKSA9PSAxKSB7Cj4g
KwlpZiAodWtfbGlzdF9lbXB0eSgmdnAtPnZfbmFtZXMpID09IDEpIHsKPiAgIAkJcmV0dXJuICgi
ICIpOwo+ICAgCX0KPiAtCWRwID0gTElTVF9GSVJTVCgmdnAtPnZfbmFtZXMpOwo+ICsJZHAgPSB1
a19saXN0X2ZpcnN0X2VudHJ5KCZ2cC0+dl9uYW1lcywgc3RydWN0IGRlbnRyeSwgZF9uYW1lc19s
aW5rKTsKPiAgIAlyZXR1cm4gKGRwLT5kX3BhdGgpOwo+ICAgfQo+ICAgI2VuZGlmCj4gQEAgLTE0
MiwxMSArMTQ0LDEwIEBAIHZuX3BhdGgoc3RydWN0IHZub2RlICp2cCkKPiAgIHZvaWQKPiAgIHZu
X2xvY2soc3RydWN0IHZub2RlICp2cCkKPiAgIHsKPiAtCUFTU0VSVCh2cCk7Cj4gLQlBU1NFUlQo
dnAtPnZfcmVmY250ID4gMCk7Cj4gKwlVS19BU1NFUlQodnApOwo+ICsJVUtfQVNTRVJUKHZwLT52
X3JlZmNudCA+IDApOwo+ICAgCj4gLQltdXRleF9sb2NrKCZ2cC0+dl9sb2NrKTsKPiAtCXZwLT52
X25ybG9ja3MrKzsKPiArCXVrX211dGV4X2xvY2soJnZwLT52X2xvY2spOwo+ICAgCURQUklOVEYo
VkZTREJfVk5PREUsICgidm5fbG9jazogICAlc1xuIiwgdm5fcGF0aCh2cCkpKTsKPiAgIH0KPiAg
IAo+IEBAIC0xNTYsMTIgKzE1NywxMCBAQCB2bl9sb2NrKHN0cnVjdCB2bm9kZSAqdnApCj4gICB2
b2lkCj4gICB2bl91bmxvY2soc3RydWN0IHZub2RlICp2cCkKPiAgIHsKPiAtCUFTU0VSVCh2cCk7
Cj4gLQlBU1NFUlQodnAtPnZfcmVmY250ID4gMCk7Cj4gLQlBU1NFUlQodnAtPnZfbnJsb2NrcyA+
IDApOwo+ICsJVUtfQVNTRVJUKHZwKTsKPiArCVVLX0FTU0VSVCh2cC0+dl9yZWZjbnQgPj0gMCk7
Cj4gICAKPiAtCXZwLT52X25ybG9ja3MtLTsKPiAtCW11dGV4X3VubG9jaygmdnAtPnZfbG9jayk7
Cj4gKwl1a19tdXRleF91bmxvY2soJnZwLT52X2xvY2spOwo+ICAgCURQUklOVEYoVkZTREJfVk5P
REUsICgidm5fbG9jazogICAlc1xuIiwgdm5fcGF0aCh2cCkpKTsKPiAgIH0KPiAgIAo+IEBAIC0x
NzYsNyArMTc1LDcgQEAgdmdldChzdHJ1Y3QgbW91bnQgKm1wLCB1aW50NjRfdCBpbm8sIHN0cnVj
dCB2bm9kZSAqKnZwcCkKPiAgIAlzdHJ1Y3Qgdm5vZGUgKnZwOwo+ICAgCWludCBlcnJvcjsKPiAg
IAo+IC0JKnZwcCA9IG51bGxwdHI7Cj4gKwkqdnBwID0gTlVMTDsKPiAgIAo+ICAgCURQUklOVEYo
VkZTREJfVk5PREUsICgidmdldCAlTEx1XG4iLCBpbm8pKTsKPiAgIAo+IEBAIC0xOTUsMjYgKzE5
NCwyNCBAQCB2Z2V0KHN0cnVjdCBtb3VudCAqbXAsIHVpbnQ2NF90IGlubywgc3RydWN0IHZub2Rl
ICoqdnBwKQo+ICAgCQlyZXR1cm4gMDsKPiAgIAl9Cj4gICAKPiAtCUxJU1RfSU5JVCgmdnAtPnZf
bmFtZXMpOwo+ICsJVUtfSU5JVF9MSVNUX0hFQUQoJnZwLT52X25hbWVzKTsKPiAgIAl2cC0+dl9p
bm8gPSBpbm87Cj4gICAJdnAtPnZfbW91bnQgPSBtcDsKPiAgIAl2cC0+dl9yZWZjbnQgPSAxOwo+
ICAgCXZwLT52X29wID0gbXAtPm1fb3AtPnZmc192bm9wczsKPiAtCXZwLT52X25ybG9ja3MgPSAw
Owo+IC0KPiArCXVrX211dGV4X2luaXQoJnZwLT52X2xvY2spOwo+ICAgCS8qCj4gICAJICogUmVx
dWVzdCB0byBhbGxvY2F0ZSBmcyBzcGVjaWZpYyBkYXRhIGZvciB2bm9kZS4KPiAgIAkgKi8KPiAg
IAlpZiAoKGVycm9yID0gVkZTX1ZHRVQobXAsIHZwKSkgIT0gMCkgewo+ICAgCQlWTk9ERV9VTkxP
Q0soKTsKPiAtCQlkZWxldGUgdnA7Cj4gKwkJZnJlZSh2cCk7Cj4gICAJCXJldHVybiBlcnJvcjsK
PiAgIAl9Cj4gICAJdmZzX2J1c3kodnAtPnZfbW91bnQpOwo+IC0JbXV0ZXhfbG9jaygmdnAtPnZf
bG9jayk7Cj4gLQl2cC0+dl9ucmxvY2tzKys7Cj4gKwl1a19tdXRleF9sb2NrKCZ2cC0+dl9sb2Nr
KTsKPiAgIAo+IC0JTElTVF9JTlNFUlRfSEVBRCgmdm5vZGVfdGFibGVbdm5faGFzaChtcCwgaW5v
KV0sIHZwLCB2X2xpbmspOwo+ICsJdWtfbGlzdF9hZGQoJnZwLT52X2xpbmssICZ2bm9kZV90YWJs
ZVt2bl9oYXNoKG1wLCBpbm8pXSk7Cj4gICAJVk5PREVfVU5MT0NLKCk7Cj4gICAKPiAgIAkqdnBw
ID0gdnA7Cj4gQEAgLTIyOCw5ICsyMjUsOCBAQCB2Z2V0KHN0cnVjdCBtb3VudCAqbXAsIHVpbnQ2
NF90IGlubywgc3RydWN0IHZub2RlICoqdnBwKQo+ICAgdm9pZAo+ICAgdnB1dChzdHJ1Y3Qgdm5v
ZGUgKnZwKQo+ICAgewo+IC0JQVNTRVJUKHZwKTsKPiAtCUFTU0VSVCh2cC0+dl9ucmxvY2tzID4g
MCk7Cj4gLQlBU1NFUlQodnAtPnZfcmVmY250ID4gMCk7Cj4gKwlVS19BU1NFUlQodnApOwo+ICsJ
VUtfQVNTRVJUKHZwLT52X3JlZmNudCA+IDApOwo+ICAgCURQUklOVEYoVkZTREJfVk5PREUsICgi
dnB1dDogcmVmPSVkICVzXG4iLCB2cC0+dl9yZWZjbnQsIHZuX3BhdGgodnApKSk7Cj4gICAKPiAg
IAlWTk9ERV9MT0NLKCk7Cj4gQEAgLTI0MCw3ICsyMzYsNyBAQCB2cHV0KHN0cnVjdCB2bm9kZSAq
dnApCj4gICAJCXZuX3VubG9jayh2cCk7Cj4gICAJCXJldHVybjsKPiAgIAl9Cj4gLQlMSVNUX1JF
TU9WRSh2cCwgdl9saW5rKTsKPiArCXVrX2xpc3RfZGVsKCZ2cC0+dl9saW5rKTsKPiAgIAlWTk9E
RV9VTkxPQ0soKTsKPiAgIAo+ICAgCS8qCj4gQEAgLTI0OSwxMCArMjQ1LDggQEAgdnB1dChzdHJ1
Y3Qgdm5vZGUgKnZwKQo+ICAgCWlmICh2cC0+dl9vcC0+dm9wX2luYWN0aXZlKQo+ICAgCQlWT1Bf
SU5BQ1RJVkUodnApOwo+ICAgCXZmc191bmJ1c3kodnAtPnZfbW91bnQpOwo+IC0JdnAtPnZfbnJs
b2Nrcy0tOwo+IC0JQVNTRVJUKHZwLT52X25ybG9ja3MgPT0gMCk7Cj4gLQltdXRleF91bmxvY2so
JnZwLT52X2xvY2spOwo+IC0JZGVsZXRlIHZwOwo+ICsJdWtfbXV0ZXhfdW5sb2NrKCZ2cC0+dl9s
b2NrKTsKPiArCWZyZWUodnApOwo+ICAgfQo+ICAgCj4gICAvKgo+IEBAIC0yNjEsOCArMjU1LDgg
QEAgdnB1dChzdHJ1Y3Qgdm5vZGUgKnZwKQo+ICAgdm9pZAo+ICAgdnJlZihzdHJ1Y3Qgdm5vZGUg
KnZwKQo+ICAgewo+IC0JQVNTRVJUKHZwKTsKPiAtCUFTU0VSVCh2cC0+dl9yZWZjbnQgPiAwKTsJ
LyogTmVlZCB2Z2V0ICovCj4gKwlVS19BU1NFUlQodnApOwo+ICsJVUtfQVNTRVJUKHZwLT52X3Jl
ZmNudCA+IDApOwkvKiBOZWVkIHZmc2NvcmVfdmdldCAqLwo+ICAgCj4gICAJVk5PREVfTE9DSygp
Owo+ICAgCURQUklOVEYoVkZTREJfVk5PREUsICgidnJlZjogcmVmPSVkXG4iLCB2cC0+dl9yZWZj
bnQpKTsKPiBAQCAtMjc5LDggKzI3Myw4IEBAIHZyZWYoc3RydWN0IHZub2RlICp2cCkKPiAgIHZv
aWQKPiAgIHZyZWxlKHN0cnVjdCB2bm9kZSAqdnApCj4gICB7Cj4gLQlBU1NFUlQodnApOwo+IC0J
QVNTRVJUKHZwLT52X3JlZmNudCA+IDApOwo+ICsJVUtfQVNTRVJUKHZwKTsKPiArCVVLX0FTU0VS
VCh2cC0+dl9yZWZjbnQgPiAwKTsKPiAgIAo+ICAgCVZOT0RFX0xPQ0soKTsKPiAgIAlEUFJJTlRG
KFZGU0RCX1ZOT0RFLCAoInZyZWxlOiByZWY9JWRcbiIsIHZwLT52X3JlZmNudCkpOwo+IEBAIC0y
ODksNyArMjgzLDcgQEAgdnJlbGUoc3RydWN0IHZub2RlICp2cCkKPiAgIAkJVk5PREVfVU5MT0NL
KCk7Cj4gICAJCXJldHVybjsKPiAgIAl9Cj4gLQlMSVNUX1JFTU9WRSh2cCwgdl9saW5rKTsKPiAr
CXVrX2xpc3RfZGVsKCZ2cC0+dl9saW5rKTsKPiAgIAlWTk9ERV9VTkxPQ0soKTsKPiAgIAo+ICAg
CS8qCj4gQEAgLTI5Nyw3ICsyOTEsNyBAQCB2cmVsZShzdHJ1Y3Qgdm5vZGUgKnZwKQo+ICAgCSAq
Lwo+ICAgCVZPUF9JTkFDVElWRSh2cCk7Cj4gICAJdmZzX3VuYnVzeSh2cC0+dl9tb3VudCk7Cj4g
LQlkZWxldGUgdnA7Cj4gKwlmcmVlKHZwKTsKPiAgIH0KPiAgIAo+ICAgLyoKPiBAQCAtNDU2LDIx
ICs0NTAsMjUgQEAgdm5vZGVfZHVtcCh2b2lkKQo+ICAgCQkJICAgIlZMTksgIiwgIlZTT0NLIiwg
IlZGSUZPIiB9Owo+ICAgCj4gICAJVk5PREVfTE9DSygpOwo+IC0Ja3ByaW50ZigiRHVtcCB2bm9k
ZVxuIik7Cj4gLQlrcHJpbnRmKCIgdm5vZGUgICAgbW91bnQgICAgdHlwZSAgcmVmY250IGJsa25v
ICAgIHBhdGhcbiIpOwo+IC0Ja3ByaW50ZigiIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tIC0tLS0t
LSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOwo+ICsKPiArCXVr
X3ByX2RlYnVnKCJEdW1wIHZub2RlXG4iKTsKPiArCXVrX3ByX2RlYnVnKCIgdm5vZGUgICAgICAg
ICAgICBtb3VudCAgICAgICAgICAgIHR5cGUgIHJlZmNudCBwYXRoXG4iKTsKPiArCXVrX3ByX2Rl
YnVnKCIgLS0tLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOwo+ICAgCj4gICAJZm9yIChpID0gMDsgaSA8
IFZOT0RFX0JVQ0tFVFM7IGkrKykgewo+IC0JICAgICAgICBMSVNUX0ZPUkVBQ0godnAsICZ2bm9k
ZV90YWJsZVtpXSwgdl9saW5rKSB7Cj4gKwkJdWtfbGlzdF9mb3JfZWFjaF9lbnRyeSh2cCwgJnZu
b2RlX3RhYmxlW2ldLCB2X2xpbmspIHsKPiAgIAkJCW1wID0gdnAtPnZfbW91bnQ7Cj4gICAKPiAt
CQkJa3ByaW50ZigiICUwOHggJTA4eCAlcyAlNmQgJThkICVzJXNcbiIsICh1X2xvbmcpdnAsCj4g
LQkJCQkodV9sb25nKW1wLCB0eXBlW3ZwLT52X3R5cGVdLCB2cC0+dl9yZWZjbnQsCj4gLQkJCQko
c3RybGVuKG1wLT5tX3BhdGgpID09IDEpID8gIlwwIiA6IG1wLT5tX3BhdGgsCj4gLQkJCQl2bl9w
YXRoKHZwKSk7Cj4gKwo+ICsJCQl1a19wcl9kZWJ1ZygiICUwMTZseCAlMDE2bHggJXMgJTZkICVz
JXNcbiIsCj4gKwkJCQkgICAgKHVuc2lnbmVkIGxvbmcpIHZwLAo+ICsJCQkJICAgICh1bnNpZ25l
ZCBsb25nKSBtcCwgdHlwZVt2cC0+dl90eXBlXSwKPiArCQkJCSAgICB2cC0+dl9yZWZjbnQsCj4g
KwkJCQkgICAgKHN0cmxlbihtcC0+bV9wYXRoKSA9PSAxKSA/ICJcMCIgOiBtcC0+bV9wYXRoLAo+
ICsJCQkJICAgIHZuX3BhdGgodnApKTsKPiAgIAkJfQo+ICAgCX0KPiAtCWtwcmludGYoIlxuIik7
Cj4gKwl1a19wcl9kZWJ1ZygiXG4iKTsKPiAgIAlWTk9ERV9VTkxPQ0soKTsKPiAgIH0KPiAgICNl
bmRpZgo+IEBAIC01MDksMjAgKzUwNywyMiBAQCB2bm9kZV9pbml0KHZvaWQpCj4gICAJaW50IGk7
Cj4gICAKPiAgIAlmb3IgKGkgPSAwOyBpIDwgVk5PREVfQlVDS0VUUzsgaSsrKQo+IC0JCUxJU1Rf
SU5JVCgmdm5vZGVfdGFibGVbaV0pOwo+ICsJCVVLX0lOSVRfTElTVF9IRUFEKCZ2bm9kZV90YWJs
ZVtpXSk7Cj4gICB9Cj4gICAKPiAgIHZvaWQgdm5fYWRkX25hbWUoc3RydWN0IHZub2RlICp2cCwg
c3RydWN0IGRlbnRyeSAqZHApCj4gICB7Cj4gLQl2bl9sb2NrKHZwKTsKPiAtCUxJU1RfSU5TRVJU
X0hFQUQoJnZwLT52X25hbWVzLCBkcCwgZF9uYW1lc19saW5rKTsKPiAtCXZuX3VubG9jayh2cCk7
Cj4gKwkvKiBUT0RPOiBSZS1lbmFibGUgdGhpcyBjaGVjayB3aGVuIHByZWVtcHRpb24gYW5kL29y
IHNtcCBpcwo+ICsJICogaGVyZSAqLwo+ICsJLyogVUtfQVNTRVJUKHVrX211dGV4X2lzX2xvY2tl
ZCgmdnAtPnZfbG9jaykpOyAqLwo+ICsJdWtfbGlzdF9hZGQoJmRwLT5kX25hbWVzX2xpbmssICZ2
cC0+dl9uYW1lcyk7Cj4gICB9Cj4gICAKPiAgIHZvaWQgdm5fZGVsX25hbWUoc3RydWN0IHZub2Rl
ICp2cCwgc3RydWN0IGRlbnRyeSAqZHApCj4gICB7Cj4gLQl2bl9sb2NrKHZwKTsKPiAtCUxJU1Rf
UkVNT1ZFKGRwLCBkX25hbWVzX2xpbmspOwo+IC0Jdm5fdW5sb2NrKHZwKTsKPiArCS8qIFRPRE86
IFJlLWVuYWJsZSB0aGlzIGNoZWNrIHdoZW4gcHJlZW1wdGlvbiBhbmQvb3Igc21wIGlzCj4gKwkg
KiBoZXJlICovCj4gKwkvKiBVS19BU1NFUlQodWtfbXV0ZXhfaXNfbG9ja2VkKCZ2cC0+dl9sb2Nr
KSk7ICovCj4gKwl1a19saXN0X2RlbCgmZHAtPmRfbmFtZXNfbGluayk7Cj4gICB9Cj4gICAKPiAK
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1k
ZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBz
Oi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Feb 19 12:34:17 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 19 Feb 2019 12:34:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gw4bI-00054a-I6; Tue, 19 Feb 2019 12:34:16 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=kXau=Q2=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1gw4bG-00054R-NN
 for minios-devel@lists.xen.org; Tue, 19 Feb 2019 12:34:14 +0000
X-Inumbo-ID: a93f5661-3442-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id a93f5661-3442-11e9-bc90-bc764e045a96;
 Tue, 19 Feb 2019 12:34:13 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 10690F2030;
 Tue, 19 Feb 2019 13:34:12 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id FZb8zSRPvTTI; Tue, 19 Feb 2019 13:34:11 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id D2E9DF200A
 for <minios-devel@lists.xen.org>; Tue, 19 Feb 2019 13:34:09 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 19 Feb 2019 13:34:09
 +0100
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190218145440.30580-1-yuri.volchkov@neclab.eu>
 <20190218145440.30580-11-yuri.volchkov@neclab.eu>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <2460d314-9e9f-3649-35cb-a11e297502ca@neclab.eu>
Date: Tue, 19 Feb 2019 13:34:09 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190218145440.30580-11-yuri.volchkov@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v4 10/22] lib/vfscore: add
 utility funcs&defs to support imported
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: simon.kuenzer@neclab.eu
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gWXVyaSwKClRoaXMgcGF0Y2ggc2VlbXMgZmluZS4KClJldmlld2VkLWJ5OiBTaGFyYW4g
U2FudGhhbmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xhYi5ldT4KClRoZXJlIGFyZSBzb21lIG9m
IGNoZWNrcGF0Y2ggd2FybmluZy9lcnJvci4gUGxlYXNlIGZpbmQgdGhlbSBpbmxpbmUuIFdlIApj
YW4gZml4IHRoZW0gd2hpbGUgdXBzdHJlYW1pbmcKClRoYW5rcyAmIFJlZ2FyZHMKU2hhcmFuCgpP
biAyLzE4LzE5IDM6NTQgUE0sIFl1cmkgVm9sY2hrb3Ygd3JvdGU6Cj4gU2lnbmVkLW9mZi1ieTog
WXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Cj4gLS0tCj4gICBsaWIvdmZz
Y29yZS9pbmNsdWRlL3Zmc2NvcmUvZmlsZS5oICB8ICAyICsrCj4gICBsaWIvdmZzY29yZS9pbmNs
dWRlL3Zmc2NvcmUvZnMuaCAgICB8IDI4ICsrKysrKysrKysrKysrKysrKysrKysrKwo+ICAgbGli
L3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Zub2RlLmggfCAyMSArKysrKysrKysrKysrKysrKysK
PiAgIGxpYi92ZnNjb3JlL21haW4uYyAgICAgICAgICAgICAgICAgIHwgMzMgKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysKPiAgIGxpYi92ZnNjb3JlL21vdW50LmMgICAgICAgICAgICAgICAg
IHwgMTQgKysrKysrKysrKysrCj4gICBsaWIvdmZzY29yZS92ZnMuaCAgICAgICAgICAgICAgICAg
ICB8ICA5ICsrKysrKysrCj4gICBsaWIvdmZzY29yZS92bm9kZS5jICAgICAgICAgICAgICAgICB8
ICAyICsrCj4gICA3IGZpbGVzIGNoYW5nZWQsIDEwOSBpbnNlcnRpb25zKCspCj4gICBjcmVhdGUg
bW9kZSAxMDA2NDQgbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2ZzLmgKPiAKPiBkaWZmIC0t
Z2l0IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2ZpbGUuaCBiL2xpYi92ZnNjb3JlL2lu
Y2x1ZGUvdmZzY29yZS9maWxlLmgKPiBpbmRleCA5OTg1NzA2Zi4uM2Q4ZDY2N2YgMTAwNjQ0Cj4g
LS0tIGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2ZpbGUuaAo+ICsrKyBiL2xpYi92ZnNj
b3JlL2luY2x1ZGUvdmZzY29yZS9maWxlLmgKPiBAQCAtNjEsNiArNjEsOCBAQCB2b2lkIHZmc2Nv
cmVfcHV0X2ZkKGludCBmZCk7Cj4gICB2b2lkIHZmc2NvcmVfaW5zdGFsbF9mZChpbnQgZmQsIHN0
cnVjdCB2ZnNjb3JlX2ZpbGUgKmZpbGUpOwo+ICAgc3RydWN0IHZmc2NvcmVfZmlsZSAqdmZzY29y
ZV9nZXRfZmlsZShpbnQgZmQpOwo+ICAgCj4gKyNkZWZpbmUgRk9GX09GRlNFVCAgMHgwODAwICAg
IC8qIFVzZSB0aGUgb2Zmc2V0IGluIHVpbyBhcmd1bWVudCAqLwo+ICsKPiAgICNpZmRlZiBfX2Nw
bHVzcGx1cwo+ICAgfQo+ICAgI2VuZGlmCj4gZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1
ZGUvdmZzY29yZS9mcy5oIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2ZzLmgKPiBuZXcg
ZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwLi4xYmI0ZTI0ZAo+IC0tLSAvZGV2L251
bGwKPiArKysgYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZnMuaAo+IEBAIC0wLDAgKzEs
MjggQEAKPiArI2lmbmRlZiBfVkZTQ09SRV9GU19IXwo+ICsjZGVmaW5lIF9WRlNDT1JFX0ZTX0hf
Cj4gKwo+ICsjaW5jbHVkZSA8ZmNudGwuaD4KPiArLyoKPiArICogS2VybmVsIGVuY29kaW5nIG9m
IG9wZW4gbW9kZTsgc2VwYXJhdGUgcmVhZCBhbmQgd3JpdGUgYml0cyB0aGF0IGFyZQo+ICsgKiBp
bmRlcGVuZGVudGx5IHRlc3RhYmxlOiAxIGdyZWF0ZXIgdGhhbiB0aGUgYWJvdmUuCj4gKyAqLwo+
ICsjZGVmaW5lIEZSRUFEICAgICAgICAgICAweDAwMDAwMDAxCj4gKyNkZWZpbmUgRldSSVRFICAg
ICAgICAgIDB4MDAwMDAwMDIKPiArCj4gKyNkZWZpbmUgQUxMUEVSTVMgKFNfSVNVSUR8U19JU0dJ
RHxTX0lTVlRYfFNfSVJXWFV8U19JUldYR3xTX0lSV1hPKQo+ICsKCgpXQVJOSU5HOiBwbGVhc2Us
IG5vIHNwYWNlcyBhdCB0aGUgc3RhcnQgb2YgYSBsaW5lCiM0MzogRklMRTogbGliL3Zmc2NvcmUv
aW5jbHVkZS92ZnNjb3JlL2ZzLmg6MTY6CisgICAgaW50IHJ3ID0gb2ZsYWdzICYgT19BQ0NNT0RF
OyQKPiArc3RhdGljIGlubGluZSBpbnQgdmZzY29yZV9mZmxhZ3MoaW50IG9mbGFncykKPiArewo+
ICsgICAgaW50IHJ3ID0gb2ZsYWdzICYgT19BQ0NNT0RFOwo+ICsgICAgb2ZsYWdzICY9IH5PX0FD
Q01PREU7Cj4gKyAgICByZXR1cm4gKHJ3ICsgMSkgfCBvZmxhZ3M7Cj4gK30KPiArCj4gK3N0YXRp
YyBpbmxpbmUgaW50IHZmc2NvcmVfb2ZsYWdzKGludCBmZmxhZ3MpCj4gK3sKPiArICAgIGludCBy
dyA9IGZmbGFncyAmIChGUkVBRHxGV1JJVEUpOwo+ICsgICAgZmZsYWdzICY9IH4oRlJFQUR8RldS
SVRFKTsKPiArICAgIHJldHVybiAocncgLSAxKSB8IGZmbGFnczsKPiArfQo+ICsKPiArI2VuZGlm
IC8qIF9WRlNDT1JFX0ZTX0hfICovCj4gZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUv
dmZzY29yZS92bm9kZS5oIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Zub2RlLmgKPiBp
bmRleCBhNGRiOWMxMy4uNDE1NWE3ZGIgMTAwNjQ0Cj4gLS0tIGEvbGliL3Zmc2NvcmUvaW5jbHVk
ZS92ZnNjb3JlL3Zub2RlLmgKPiArKysgYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5v
ZGUuaAo+IEBAIC0xMDgsNiArMTA4LDI3IEBAIHN0cnVjdCB2YXR0ciB7Cj4gICAJb2ZmX3QJCXZh
X3NpemU7Cj4gICB9Owo+ICAgCj4gKy8qIHN0cnVjdCB2YXR0ciBpcyB1c2VkIHRvIGNvbnNvbGlk
YXRlIG11bHRpcGxlIHR5cGVzIG9mIGZpbGUKPiArICogYXR0cmlidXRlcyBmb3IgcGFzc2luZyB0
aGVtIGFzIGZ1bmN0aW9uIHBhcmFtZXRlcnMuIE1hY3JvcyBiZWxsb3cKPiArICogYXJlIHNlbGVj
dG9ycywgb2Ygd2hhdCB0eXBlcyBvZiBhdHRyaWJ1dGVzIGFyZSB2YWxpZCBpbiBwYXJ0aWN1bGFy
Cj4gKyAqIHN0cnVjdCB2YXR0ciovCj4gKyNkZWZpbmUJQVRfVFlQRQkJMHgwMDAwMQo+ICsjZGVm
aW5lCUFUX01PREUJCTB4MDAwMDIKPiArI2RlZmluZQlBVF9VSUQJCTB4MDAwMDQKPiArI2RlZmlu
ZQlBVF9HSUQJCTB4MDAwMDgKPiArI2RlZmluZQlBVF9GU0lECQkweDAwMDEwCj4gKyNkZWZpbmUJ
QVRfTk9ERUlECTB4MDAwMjAKPiArI2RlZmluZQlBVF9OTElOSwkweDAwMDQwCj4gKyNkZWZpbmUJ
QVRfU0laRQkJMHgwMDA4MAo+ICsjZGVmaW5lCUFUX0FUSU1FCTB4MDAxMDAKPiArI2RlZmluZQlB
VF9NVElNRQkweDAwMjAwCj4gKyNkZWZpbmUJQVRfQ1RJTUUJMHgwMDQwMAo+ICsjZGVmaW5lCUFU
X1JERVYJCTB4MDA4MDAKPiArI2RlZmluZQlBVF9CTEtTSVpFCTB4MDEwMDAKPiArI2RlZmluZQlB
VF9OQkxPQ0tTCTB4MDIwMDAKPiArI2RlZmluZQlBVF9TRVEJCTB4MDgwMDAKPiArI2RlZmluZQlB
VF9YVkFUVFIJMHgxMDAwMAo+ICsKPiAgIC8qCj4gICAgKiAgTW9kZXMuCj4gICAgKi8KPiBkaWZm
IC0tZ2l0IGEvbGliL3Zmc2NvcmUvbWFpbi5jIGIvbGliL3Zmc2NvcmUvbWFpbi5jCj4gaW5kZXgg
ODJlNDU5MTcuLjExNjRiMzBiIDEwMDY0NAo+IC0tLSBhL2xpYi92ZnNjb3JlL21haW4uYwo+ICsr
KyBiL2xpYi92ZnNjb3JlL21haW4uYwo+IEBAIC01Miw4ICs1Miw0MSBAQAo+ICAgaW50CXZmc19k
ZWJ1ZyA9IFZGU0RCX0ZMQUdTOwo+ICAgI2VuZGlmCj4gICAKPiArLyogVGhpcyBtYWNybyBpcyBm
b3IgZGVmaW5pbmcgYW4gYWxpYXMgb2YgdGhlIDY0Yml0IHZlcnNpb24gb2YgYQo+ICsgKiBzeXNj
YWxsIHRvIHRoZSByZWd1bGFyIG9uZS4gSXQgc2VhbXMgd2UgY2FuIG1ha2UgdGhlIGxvZ2ljIHdo
aWNoIGlzCj4gKyAqIGNob29zaW5nIHRoZSByaWdodCBjYWxsIHNpbXBsZXIgdGhlbiBpbiBjb21t
b24gbGliYy4KPiArICoKPiArICogTGV0J3Mga2VlcCBMRlM2NCBjYWxscyBqdXN0IGluIGNhc2Ug
aW4gZnV0dXJlIHdlIHdpbGwgZmluZCBvdXQgdGhhdAo+ICsgKiB0aGVzZSBhbGlhc2VzIGFyZSBu
ZWVkLgo+ICsgKi8KPiArI2RlZmluZSBMRlM2NCh4KQo+ICsKPiAgIHN0YXRpYyBtb2RlX3QgZ2xv
YmFsX3VtYXNrID0gU19JV0dSUCB8IFNfSVdPVEg7Cj4gICAKPiArLyogVE9ETzogdGhlc2UgbWFj
cm8gZG9lcyBub3QgYmVsb25nIGhlcmUKPiArICogTk9URTogYm9ycm93ZWQgZnJvbSBPU3YKPiAr
ICovCj4gKyNkZWZpbmUgRE9fT05DRSh0aGluZykgZG8gewkJCQlcCj4gKwlzdGF0aWMgaW50IF94
OwkJCQkJXAo+ICsJaWYgKCFfeCkgewkJCQkJXAo+ICsJICAgIF94ID0gMTsJCQkJCVwKPiArCSAg
ICB0aGluZyA7CQkJCQlcCj4gKwl9CQkJCQkJXAo+ICt9IHdoaWxlICgwKQo+ICsjZGVmaW5lIFdB
Uk5fU1RVQkJFRCgpIERPX09OQ0UodWtfcHJfd2FybigiJXMoKSBzdHViYmVkXG4iLCBfX2Z1bmNf
XykpCj4gKwoKV0FSTklORzogcGxlYXNlLCBubyBzcGFjZXMgYXQgdGhlIHN0YXJ0IG9mIGEgbGlu
ZQojMTIxOiBGSUxFOiBsaWIvdmZzY29yZS9tYWluLmM6ODA6Cj4gKyNkZWZpbmUgTk9fU1lTKGRl
Y2wpIGRlY2wgewkJCQlcCj4gKyAgICBET19PTkNFKHVrX3ByX3dhcm4oIiVzIG5vdCBpbXBsZW1l
bnRlZFxuIiwgX19mdW5jX18pKTsJXAo+ICsgICAgZXJybm8gPSBFTk9TWVM7CQkJCQlcCj4gKyAg
ICByZXR1cm4gLTE7CQkJCQkJXAo+ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIGludCBsaWJjX2Vy
cm9yKGludCBlcnIpCj4gK3sKPiArICAgIGVycm5vID0gZXJyOwo+ICsgICAgcmV0dXJuIC0xOwo+
ICt9Cj4gKwo+ICAgc3RhdGljIGlubGluZSBtb2RlX3QgYXBwbHlfdW1hc2sobW9kZV90IG1vZGUp
Cj4gICB7Cj4gICAJcmV0dXJuIG1vZGUgJiB+dWthcmNoX2xvYWRfbigmZ2xvYmFsX3VtYXNrKTsK
PiBkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvbW91bnQuYyBiL2xpYi92ZnNjb3JlL21vdW50LmMK
PiBpbmRleCBmYWQ0NzAyNi4uNzFjODc2ZDIgMTAwNjQ0Cj4gLS0tIGEvbGliL3Zmc2NvcmUvbW91
bnQuYwo+ICsrKyBiL2xpYi92ZnNjb3JlL21vdW50LmMKPiBAQCAtNzksNiArNzksMjAgQEAgZnNf
Z2V0ZnMoY29uc3QgY2hhciAqbmFtZSkKPiAgIAlyZXR1cm4gZnM7Cj4gICB9Cj4gICAKPiAraW50
IGRldmljZV9vcGVuKGNvbnN0IGNoYXIgKm5hbWUgX191bnVzZWQsIGludCBtb2RlIF9fdW51c2Vk
LAo+ICsJCXN0cnVjdCBkZXZpY2UgKipkZXZwIF9fdW51c2VkKQo+ICt7Cj4gKwlVS19DUkFTSCgi
JXMgaXMgbm90IGltcGxlbWVudGVkICglcylcbiIsIF9fZnVuY19fLCBuYW1lKTsKPiArCXJldHVy
biAwOwo+ICt9Cj4gKwo+ICtpbnQgZGV2aWNlX2Nsb3NlKHN0cnVjdCBkZXZpY2UgKmRldikKPiAr
ewo+ICsJKHZvaWQpIGRldjsKPiArCVVLX0NSQVNIKCIlcyBub3QgaW1wbGVtZW50ZWQiLCBfX2Z1
bmNfXyk7Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiAgIGludAo+ICAgc3lzX21vdW50KGNvbnN0
IGNoYXIgKmRldiwgY29uc3QgY2hhciAqZGlyLCBjb25zdCBjaGFyICpmc25hbWUsIGludCBmbGFn
cywgY29uc3Qgdm9pZCAqZGF0YSkKPiAgIHsKPiBkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvdmZz
LmggYi9saWIvdmZzY29yZS92ZnMuaAo+IGluZGV4IDE5ZjhhYzg3Li42MDlkYzFmNSAxMDA2NDQK
PiAtLS0gYS9saWIvdmZzY29yZS92ZnMuaAo+ICsrKyBiL2xpYi92ZnNjb3JlL3Zmcy5oCj4gQEAg
LTE1MSw0ICsxNTEsMTMgQEAgdm9pZAkgdm5vZGVfZHVtcCh2b2lkKTsKPiAgIHZvaWQJIG1vdW50
X2R1bXAodm9pZCk7Cj4gICAjZW5kaWYKPiAgIAo+ICtzdGF0aWMgdm9pZCBfX2F0dHJpYnV0ZV9f
KCh1bnVzZWQpKSB1a192ZnNjb3JlX3RyYWNlKGludCBmb28gX191bnVzZWQsIC4uLikKPiArewo+
ICt9Cj4gKwoKRVJST1I6IHNwYWNlIHByb2hpYml0ZWQgYmVmb3JlIHRoYXQgY2xvc2UgcGFyZW50
aGVzaXMgJyknCiMxNzI6IEZJTEU6IGxpYi92ZnNjb3JlL3Zmcy5oOjE1OToKKyAgICAgICBzdGF0
aWMgdm9pZCB0cmFjZV9uYW1lKF9fVkFfQVJHU19fICkgX19hdHRyaWJ1dGVfXygodW51c2VkLCAK
YWxpYXMoInVrX3Zmc2NvcmVfdHJhY2UiKSkpCj4gKyNkZWZpbmUgVFJBQ0VQT0lOVCh0cmFjZV9u
YW1lLCBmbXQsIC4uLikJCQlcCj4gKwlzdGF0aWMgdm9pZCB0cmFjZV9uYW1lKF9fVkFfQVJHU19f
ICkgX19hdHRyaWJ1dGVfXygodW51c2VkLCBhbGlhcygidWtfdmZzY29yZV90cmFjZSIpKSkKPiAr
Cj4gKwo+ICsKPiAgICNlbmRpZiAvKiAhX1ZGU19IICovCj4gZGlmZiAtLWdpdCBhL2xpYi92ZnNj
b3JlL3Zub2RlLmMgYi9saWIvdmZzY29yZS92bm9kZS5jCj4gaW5kZXggYTJmNDU1OTYuLjg2ZTZk
OWM3IDEwMDY0NAo+IC0tLSBhL2xpYi92ZnNjb3JlL3Zub2RlLmMKPiArKysgYi9saWIvdmZzY29y
ZS92bm9kZS5jCj4gQEAgLTQ4LDYgKzQ4LDggQEAKPiAgICNpbmNsdWRlIDx2ZnNjb3JlL3Zub2Rl
Lmg+Cj4gICAjaW5jbHVkZSAidmZzLmgiCj4gICAKPiArI2RlZmluZSBTX0JMS1NJWkUgNTEyCj4g
Kwo+ICAgZW51bSB2dHlwZSBpZnRvdnRfdGFiWzE2XSA9IHsKPiAgIAlWTk9OLCBWRklGTywgVkNI
UiwgVk5PTiwgVkRJUiwgVk5PTiwgVkJMSywgVk5PTiwKPiAgIAlWUkVHLCBWTk9OLCBWTE5LLCBW
Tk9OLCBWU09DSywgVk5PTiwgVk5PTiwgVkJBRCwKPiAKCl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9z
LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcv
bWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Feb 19 12:44:53 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 19 Feb 2019 12:44:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gw4lZ-0005wU-QI; Tue, 19 Feb 2019 12:44:53 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=kXau=Q2=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1gw4lY-0005wM-Ns
 for minios-devel@lists.xen.org; Tue, 19 Feb 2019 12:44:52 +0000
X-Inumbo-ID: 25a73f72-3444-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 25a73f72-3444-11e9-bc90-bc764e045a96;
 Tue, 19 Feb 2019 12:44:51 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 3E079104E7C;
 Tue, 19 Feb 2019 13:42:40 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id bjndnyV0bJW5; Tue, 19 Feb 2019 13:42:40 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 16622104E67
 for <minios-devel@lists.xen.org>; Tue, 19 Feb 2019 13:42:38 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 19 Feb 2019 13:42:36
 +0100
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190218145440.30580-1-yuri.volchkov@neclab.eu>
 <20190218145440.30580-12-yuri.volchkov@neclab.eu>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <b199ac8c-6092-c54c-2c91-cad154448333@neclab.eu>
Date: Tue, 19 Feb 2019 13:42:36 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190218145440.30580-12-yuri.volchkov@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v4 11/22] lib/vfscore: introduce
 UK_FS_REGISTER
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: simon.kuenzer@neclab.eu
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gWXVyaSwKClRoaXMgcGF0Y2ggc2VlbXMgZmluZS4KClJldmlld2VkLWJ5OiBTaGFyYW4g
U2FudGhhbmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xhYi5ldT4KClRoZXJlIGlzIGEgY2hlY2tw
YXRjaCB3YXJuaW5nIHdlIGNhbiBmaXggd2hpbGUgdXBzdHJlYW1pbmcuCgpUaGFua3MgJiBSZWdh
cmRzClNoYXJhbgoKT24gMi8xOC8xOSAzOjU0IFBNLCBZdXJpIFZvbGNoa292IHdyb3RlOgo+IFRo
ZSBtYWNybyByZWdpc3RlcnMgdGhlIGZpbGVzeXN0ZW0gaW4gdGhlIHN0YXRpYyBhcnJheQo+IAo+
IFNpZ25lZC1vZmYtYnk6IFl1cmkgVm9sY2hrb3YgPHl1cmkudm9sY2hrb3ZAbmVjbGFiLmV1Pgo+
IC0tLQo+ICAgbGliL3Zmc2NvcmUvTWFrZWZpbGUudWsgICAgICAgICAgICAgfCAgMiArKwo+ICAg
bGliL3Zmc2NvcmUvZXh0cmEubGQgICAgICAgICAgICAgICAgfCAgOSArKysrKysrKysKPiAgIGxp
Yi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9tb3VudC5oIHwgIDYgKysrKystCj4gICBsaWIvdmZz
Y29yZS9tb3VudC5jICAgICAgICAgICAgICAgICB8IDI0ICsrKysrKysrKysrKysrKysrKy0tLS0t
LQo+ICAgNCBmaWxlcyBjaGFuZ2VkLCAzNCBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQo+
ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi92ZnNjb3JlL2V4dHJhLmxkCj4gCj4gZGlmZiAtLWdp
dCBhL2xpYi92ZnNjb3JlL01ha2VmaWxlLnVrIGIvbGliL3Zmc2NvcmUvTWFrZWZpbGUudWsKPiBp
bmRleCAxMjQ2YWU1My4uMDY5MzNkOTYgMTAwNjQ0Cj4gLS0tIGEvbGliL3Zmc2NvcmUvTWFrZWZp
bGUudWsKPiArKysgYi9saWIvdmZzY29yZS9NYWtlZmlsZS51awo+IEBAIC01LDMgKzUsNSBAQCBD
SU5DTFVERVMteSArPSAtSSQoTElCVkZTQ09SRV9CQVNFKS9pbmNsdWRlCj4gICBMSUJWRlNDT1JF
X1NSQ1MteSArPSAkKExJQlZGU0NPUkVfQkFTRSkvZmQuYwo+ICAgTElCVkZTQ09SRV9TUkNTLXkg
Kz0gJChMSUJWRlNDT1JFX0JBU0UpL2ZpbGUuYwo+ICAgTElCVkZTQ09SRV9TUkNTLXkgKz0gJChM
SUJWRlNDT1JFX0JBU0UpL3N0ZGlvLmMKPiArCj4gK0VYVFJBX0xEX1NDUklQVC0kKENPTkZJR19M
SUJWRlNDT1JFKSArPSAkKExJQlZGU0NPUkVfQkFTRSkvZXh0cmEubGQKPiBcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKPiBkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvZXh0cmEubGQgYi9saWIv
dmZzY29yZS9leHRyYS5sZAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAu
LjE3M2IyMzUwCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2xpYi92ZnNjb3JlL2V4dHJhLmxkCj4g
QEAgLTAsMCArMSw5IEBACj4gK1NFQ1RJT05TCj4gK3sKPiArCS51a19mc19saXN0IDogewo+ICsJ
CVBST1ZJREUodWtfZnNsaXN0X3N0YXJ0ID0gLik7Cj4gKwkJS0VFUCAoKigudWtfZnNfbGlzdCkp
Cj4gKyAgICAgICAgICAgICAgICBQUk9WSURFKHVrX2ZzbGlzdF9lbmQgPSAuKTsKPiArCX0KPiAr
fQo+ICtJTlNFUlQgQUZURVIgLnRleHQ7Cj4gZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1
ZGUvdmZzY29yZS9tb3VudC5oIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmgK
PiBpbmRleCA3YTYzOGRiZS4uNWExOTU3ZmIgMTAwNjQ0Cj4gLS0tIGEvbGliL3Zmc2NvcmUvaW5j
bHVkZS92ZnNjb3JlL21vdW50LmgKPiArKysgYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUv
bW91bnQuaAo+IEBAIC0xMDAsMTIgKzEwMCwxNiBAQCBzdHJ1Y3QgbW91bnQgewo+ICAgLyoKPiAg
ICAqIEZpbGVzeXN0ZW0gdHlwZSBzd2l0Y2ggdGFibGUuCj4gICAgKi8KPiAtc3RydWN0IHZmc3N3
IHsKPiArc3RydWN0IHZmc2NvcmVfZnNfdHlwZSB7Cj4gICAJY29uc3QgY2hhciAgICAgICp2c19u
YW1lOwkvKiBuYW1lIG9mIGZpbGUgc3lzdGVtICovCj4gICAJaW50CQkoKnZzX2luaXQpKHZvaWQp
OyAvKiBpbml0aWFsaXplIHJvdXRpbmUgKi8KPiAgIAlzdHJ1Y3QgdmZzb3BzCSp2c19vcDsJCS8q
IHBvaW50ZXIgdG8gdmZzIG9wZXJhdGlvbiAqLwo+ICAgfTsKPiAgIAoKV0FSTklORzogbWFjcm9z
IHNob3VsZCBub3QgdXNlIGEgdHJhaWxpbmcgc2VtaWNvbG9uCiM1MjogRklMRTogbGliL3Zmc2Nv
cmUvaW5jbHVkZS92ZnNjb3JlL21vdW50Lmg6MTA5OgorI2RlZmluZSBVS19GU19SRUdJU1RFUihm
c3N3KSBzdGF0aWMgc3RydWN0IHZmc2NvcmVfZnNfdHlwZSAgICAgXAorICAgICAgIF9fYXR0cmli
dXRlKChfX3NlY3Rpb25fXygiLnVrX2ZzX2xpc3QiKSkpICAgICAgICAgICAgICAgXAorICAgICAg
ICpfX3B0cl8jI2Zzc3cgX191c2VkID0gJmZzc3c7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorCj4gKyNkZWZpbmUgVUtfRlNfUkVHSVNURVIoZnNzdykgc3RhdGljIHN0cnVjdCB2ZnNjb3Jl
X2ZzX3R5cGUJXAo+ICsJX19hdHRyaWJ1dGUoKF9fc2VjdGlvbl9fKCIudWtfZnNfbGlzdCIpKSkJ
CVwKPiArCSpfX3B0cl8jI2Zzc3cgX191c2VkID0gJmZzc3c7CQkJCVwKPiArCj4gICAvKgo+ICAg
ICogT3BlcmF0aW9ucyBzdXBwb3J0ZWQgb24gdmlydHVhbCBmaWxlIHN5c3RlbS4KPiAgICAqLwo+
IGRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9tb3VudC5jIGIvbGliL3Zmc2NvcmUvbW91bnQuYwo+
IGluZGV4IDcxYzg3NmQyLi45NWViOTA3YiAxMDA2NDQKPiAtLS0gYS9saWIvdmZzY29yZS9tb3Vu
dC5jCj4gKysrIGIvbGliL3Zmc2NvcmUvbW91bnQuYwo+IEBAIC02MiwyMCArNjIsMzIgQEAgVUtf
TElTVF9IRUFEKG1vdW50X2xpc3QpOwo+ICAgICovCj4gICBzdGF0aWMgc3RydWN0IHVrX211dGV4
IG1vdW50X2xvY2sgPSBVS19NVVRFWF9JTklUSUFMSVpFUihtb3VudF9sb2NrKTsKPiAgIAo+ICtl
eHRlcm4gY29uc3Qgc3RydWN0IHZmc2NvcmVfZnNfdHlwZSAqdWtfZnNsaXN0X3N0YXJ0Owo+ICtl
eHRlcm4gY29uc3Qgc3RydWN0IHZmc2NvcmVfZnNfdHlwZSAqdWtfZnNsaXN0X2VuZDsKPiArCj4g
KyNkZWZpbmUgZm9yX2VhY2hfZnMoaXRlcikJCQlcCj4gKwlmb3IgKGl0ZXIgPSAmdWtfZnNsaXN0
X3N0YXJ0OwlcCj4gKwkgICAgIGl0ZXIgPCAmdWtfZnNsaXN0X2VuZDsJCVwKPiArCSAgICAgaXRl
cisrKQo+ICsKPiAgIC8qCj4gICAgKiBMb29rdXAgZmlsZSBzeXN0ZW0uCj4gICAgKi8KPiAtc3Rh
dGljIGNvbnN0IHN0cnVjdCB2ZnNzdyAqCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgdmZzY29yZV9m
c190eXBlICoKPiAgIGZzX2dldGZzKGNvbnN0IGNoYXIgKm5hbWUpCj4gICB7Cj4gLQljb25zdCBz
dHJ1Y3QgdmZzc3cgKmZzOwo+ICsJY29uc3Qgc3RydWN0IHZmc2NvcmVfZnNfdHlwZSAqZnMgPSBO
VUxMLCAqKl9fZnM7Cj4gKwo+ICsJZm9yX2VhY2hfZnMoX19mcykgewo+ICsJCWZzID0gKl9fZnM7
Cj4gKwkJaWYgKGZzID09IE5VTEwpCj4gKwkJCWNvbnRpbnVlOwo+ICAgCj4gLQlmb3IgKGZzID0g
dmZzc3c7IGZzLT52c19uYW1lOyBmcysrKSB7Cj4gICAJCWlmICghc3RybmNtcChuYW1lLCBmcy0+
dnNfbmFtZSwgRlNNQVhOQU1FUykpCj4gICAJCQlicmVhazsKPiAgIAl9Cj4gLQlpZiAoIWZzLT52
c19uYW1lKQo+IC0JCXJldHVybiBudWxscHRyOwo+ICsJaWYgKCFmcyB8fCAhZnMtPnZzX25hbWUp
Cj4gKwkJcmV0dXJuIE5VTEw7Cj4gICAJcmV0dXJuIGZzOwo+ICAgfQo+ICAgCj4gQEAgLTk2LDcg
KzEwOCw3IEBAIGludCBkZXZpY2VfY2xvc2Uoc3RydWN0IGRldmljZSAqZGV2KQo+ICAgaW50Cj4g
ICBzeXNfbW91bnQoY29uc3QgY2hhciAqZGV2LCBjb25zdCBjaGFyICpkaXIsIGNvbnN0IGNoYXIg
KmZzbmFtZSwgaW50IGZsYWdzLCBjb25zdCB2b2lkICpkYXRhKQo+ICAgewo+IC0JY29uc3Qgc3Ry
dWN0IHZmc3N3ICpmczsKPiArCWNvbnN0IHN0cnVjdCB2ZnNjb3JlX2ZzX3R5cGUgKmZzOwo+ICAg
CXN0cnVjdCBtb3VudCAqbXA7Cj4gICAJc3RydWN0IGRldmljZSAqZGV2aWNlOwo+ICAgCXN0cnVj
dCBkZW50cnkgKmRwX2NvdmVyZWQgPSBOVUxMOwo+IAoKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3Mt
ZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9t
YWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Tue Feb 19 12:59:41 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 19 Feb 2019 12:59:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gw4zr-0006t8-UP; Tue, 19 Feb 2019 12:59:39 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=kXau=Q2=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1gw4zr-0006t3-BP
 for minios-devel@lists.xen.org; Tue, 19 Feb 2019 12:59:39 +0000
X-Inumbo-ID: 35e5835d-3446-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 35e5835d-3446-11e9-bc90-bc764e045a96;
 Tue, 19 Feb 2019 12:59:37 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 7CA3AF200A;
 Tue, 19 Feb 2019 13:59:36 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id GUI0uDCB4Dcp; Tue, 19 Feb 2019 13:59:36 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 48846F2008
 for <minios-devel@lists.xen.org>; Tue, 19 Feb 2019 13:59:34 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 19 Feb 2019 13:59:34
 +0100
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190218145440.30580-1-yuri.volchkov@neclab.eu>
 <20190218145440.30580-14-yuri.volchkov@neclab.eu>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <dd7e49d1-d6b9-57be-4a6b-df9b7bf274e1@neclab.eu>
Date: Tue, 19 Feb 2019 13:59:33 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190218145440.30580-14-yuri.volchkov@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v4 13/22] lib/vfscore: introduce
 fget, fdrop, fdalloc
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: simon.kuenzer@neclab.eu
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gWXVyaSwKClRoaXMgcGF0Y2ggc2VlbXMgZmluZS4KClJldmlld2VkLWJ5OiBTaGFyYW4g
U2FudGhhbmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xhYi5ldT4KClRoZXJlIGlzIGEgY2hlY2tw
YXRjaCBlcnJvciB3ZSBjYW4gZml4IGl0IHdoaWxlIHVwc3RyZWFtaW5nLgoKVGhhbmtzICYgUmVn
YXJkcwpTaGFyYW4KCk9uIDIvMTgvMTkgMzo1NCBQTSwgWXVyaSBWb2xjaGtvdiB3cm90ZToKPiBU
aGVzZSBmdW5jdGlvbnMgYXJlIHVzZWQgaW4gdGhlIGltcG9ydGVkIGNvZGUsIHdoaWNoIGlzIG5v
dCBlbmFibGVkCj4geWV0LiBUaGlzIHJlcXVpcmVkIHRvIGV4cGFuZCBmdW5jdGlvbmFsaXR5IG9m
IHZmc2NvcmVfaW5zdGFsbF9mZCBhbmQKPiBmcmllbmRzIHdpdGggbG9ja2luZyBhbmQgcmVmZXJl
bmNlIGNvdW50aW5nLgo+IAo+IFNpZ25lZC1vZmYtYnk6IFl1cmkgVm9sY2hrb3YgPHl1cmkudm9s
Y2hrb3ZAbmVjbGFiLmV1Pgo+IC0tLQo+ICAgbGliL3Zmc2NvcmUvZmQuYyAgICAgICAgICAgICAg
ICAgICB8IDcxICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLQo+ICAgbGliL3Zmc2NvcmUv
ZmlsZS5jICAgICAgICAgICAgICAgICB8IDIyICsrKysrKysrLQo+ICAgbGliL3Zmc2NvcmUvaW5j
bHVkZS92ZnNjb3JlL2ZpbGUuaCB8ICA5ICsrKy0KPiAgIDMgZmlsZXMgY2hhbmdlZCwgOTYgaW5z
ZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUv
ZmQuYyBiL2xpYi92ZnNjb3JlL2ZkLmMKPiBpbmRleCA2YzIyMDQyOC4uNWFiZWQ5NjkgMTAwNjQ0
Cj4gLS0tIGEvbGliL3Zmc2NvcmUvZmQuYwo+ICsrKyBiL2xpYi92ZnNjb3JlL2ZkLmMKPiBAQCAt
NzQsMjAgKzc0LDQ1IEBAIGV4aXQ6Cj4gICAKPiAgIHZvaWQgdmZzY29yZV9wdXRfZmQoaW50IGZk
KQo+ICAgewo+ICsJc3RydWN0IHZmc2NvcmVfZmlsZSAqZnA7Cj4gKwl1bnNpZ25lZCBsb25nIGZs
YWdzOwo+ICsKPiAgIAlVS19BU1NFUlQoZmQgPCAoaW50KSBGRFRBQkxFX01BWF9GSUxFUyk7Cj4g
ICAJLyogQ3VycmVudGx5IGl0IGlzIG5vdCBhbGxvd2VkIHRvIGZyZWUgc3RkKGlufG91dHxlcnIp
ICovCj4gICAJVUtfQVNTRVJUKGZkID4gMik7Cj4gICAKPiAtCV9fdWtfY2xlYXJfYml0KGZkLCAm
ZmR0YWJsZS5iaXRtYXApOwo+ICsJZmxhZ3MgPSB1a3BsYXRfbGNwdV9zYXZlX2lycWYoKTsKPiAr
CV9fdWtfY2xlYXJfYml0KGZkLCAmZmR0YWJsZS5iaXRtYXApO1wKPiArCWZwID0gZmR0YWJsZS5m
aWxlc1tmZF07Cj4gKwlmZHRhYmxlLmZpbGVzW2ZkXSA9IE5VTEw7Cj4gKwl1a3BsYXRfbGNwdV9y
ZXN0b3JlX2lycWYoZmxhZ3MpOwo+ICsKPiArCWZkcm9wKGZwKTsKPiAgIH0KPiAgIAo+IC12b2lk
IHZmc2NvcmVfaW5zdGFsbF9mZChpbnQgZmQsIHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZpbGUpCj4g
K2ludCB2ZnNjb3JlX2luc3RhbGxfZmQoaW50IGZkLCBzdHJ1Y3QgdmZzY29yZV9maWxlICpmaWxl
KQo+ICAgewo+IC0JVUtfQVNTRVJUKGZkIDwgKGludCkgRkRUQUJMRV9NQVhfRklMRVMpOwo+IC0J
VUtfQVNTRVJUKGZpbGUpOwo+ICsJdW5zaWduZWQgbG9uZyBmbGFnczsKPiArCXN0cnVjdCB2ZnNj
b3JlX2ZpbGUgKm9yaWc7Cj4gKwo+ICsJaWYgKChmZCA+PSAoaW50KSBGRFRBQkxFX01BWF9GSUxF
UykgfHwgKCFmaWxlKSkKPiArCQlyZXR1cm4gLUVCQURGOwo+ICsKPiArCWZob2xkKGZpbGUpOwo+
ICAgCj4gICAJZmlsZS0+ZmQgPSBmZDsKPiArCj4gKwlmbGFncyA9IHVrcGxhdF9sY3B1X3NhdmVf
aXJxZigpOwo+ICsJb3JpZyA9IGZkdGFibGUuZmlsZXNbZmRdOwo+ICAgCWZkdGFibGUuZmlsZXNb
ZmRdID0gZmlsZTsKPiArCXVrcGxhdF9sY3B1X3Jlc3RvcmVfaXJxZihmbGFncyk7Cj4gKwo+ICsJ
ZmRyb3AoZmlsZSk7Cj4gKwo+ICsJaWYgKG9yaWcpCj4gKwkJZmRyb3Aob3JpZyk7Cj4gKwo+ICsJ
cmV0dXJuIDA7Cj4gICB9Cj4gICAKPiAgIHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKnZmc2NvcmVfZ2V0
X2ZpbGUoaW50IGZkKQo+IEBAIC0xMDEsMTIgKzEyNiw1MCBAQCBzdHJ1Y3QgdmZzY29yZV9maWxl
ICp2ZnNjb3JlX2dldF9maWxlKGludCBmZCkKPiAgIAlpZiAoIShmZHRhYmxlLmJpdG1hcCAmICgo
dWludDY0X3QpIDEgPDwgZmQpKSkKPiAgIAkJZ290byBleGl0Owo+ICAgCXJldCA9IGZkdGFibGUu
ZmlsZXNbZmRdOwo+ICsJZmhvbGQocmV0KTsKPiAgIAo+ICAgZXhpdDoKPiAgIAl1a3BsYXRfbGNw
dV9yZXN0b3JlX2lycWYoZmxhZ3MpOwo+ICAgCXJldHVybiByZXQ7Cj4gICB9Cj4gICAKPiAraW50
IGZnZXQoaW50IGZkLCBzdHJ1Y3QgdmZzY29yZV9maWxlICoqb3V0X2ZwKQo+ICt7Cj4gKwlpbnQg
cmV0ID0gMDsKPiArCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwID0gdmZzY29yZV9nZXRfZmlsZShm
ZCk7Cj4gKwo+ICsJaWYgKCFmcCkKPiArCQlyZXQgPSBFQkFERjsKPiArCWVsc2UKPiArCQkqb3V0
X2ZwID0gZnA7Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiAraW50IGZkYWxsb2Moc3Ry
dWN0IHZmc2NvcmVfZmlsZSAqZnAsIGludCAqbmV3ZmQpCj4gK3sKPiArCWludCBmZCwgcmV0ID0g
MDsKPiArCj4gKwlmaG9sZChmcCk7Cj4gKwo+ICsJZmQgPSB2ZnNjb3JlX2FsbG9jX2ZkKCk7Cj4g
KwlpZiAoZmQgPCAwKSB7Cj4gKwkJcmV0ID0gZmQ7Cj4gKwkJZ290byBleGl0Owo+ICsJfQo+ICsK
PiArCXJldCA9IHZmc2NvcmVfaW5zdGFsbF9mZChmZCwgZnApOwo+ICsJaWYgKHJldCkKPiArCQlm
ZHJvcChmcCk7Cj4gKwllbHNlCj4gKwkJKm5ld2ZkID0gZmQ7Cj4gKwo+ICtleGl0Ogo+ICsJcmV0
dXJuIHJldDsKPiArfQo+ICsKPiArCj4gKy8qIFRPRE86IG1vdmUgdGhpcyBjb25zdHJ1Y3RvciB0
byBtYWluLmMgKi8KPiAgIF9fY29uc3RydWN0b3Igc3RhdGljIHZvaWQgZmR0YWJsZV9pbml0KHZv
aWQpCj4gICB7Cj4gICAJbWVtc2V0KCZmZHRhYmxlLCAwLCBzaXplb2YoZmR0YWJsZSkpOwo+IGRp
ZmYgLS1naXQgYS9saWIvdmZzY29yZS9maWxlLmMgYi9saWIvdmZzY29yZS9maWxlLmMKPiBpbmRl
eCBlN2FkZjFhMy4uMGY2ZGZhOTMgMTAwNjQ0Cj4gLS0tIGEvbGliL3Zmc2NvcmUvZmlsZS5jCj4g
KysrIGIvbGliL3Zmc2NvcmUvZmlsZS5jCj4gQEAgLTM4LDcgKzM4LDcgQEAKPiAgICNpbmNsdWRl
IDx1ay9wcmludC5oPgo+ICAgI2luY2x1ZGUgPHZmc2NvcmUvZmlsZS5oPgo+ICAgI2luY2x1ZGUg
PHVrL2Fzc2VydC5oPgo+IC0KPiArI2luY2x1ZGUgPHVrL2FyY2gvYXRvbWljLmg+Cj4gICAKPiAg
IGludCBjbG9zZShpbnQgZmQpCj4gICB7Cj4gQEAgLTk1LDMgKzk1LDIzIEBAIHNzaXplX3QgcmVh
ZChpbnQgZmQsIHZvaWQgKmJ1Ziwgc2l6ZV90IGNvdW50KQo+ICAgCj4gICAJcmV0dXJuIGZpbGUt
PmZvcHMtPnJlYWQoZmlsZSwgYnVmLCBjb3VudCk7Cj4gICB9Cj4gKwo+ICsvKiBUT0RPOiByZW1v
dmUgc3R1YiAqLwo+ICsjZGVmaW5lIHZmc19jbG9zZShmcCkgKDApCj4gKwo+ICtpbnQgZmRyb3Ao
c3RydWN0IHZmc2NvcmVfZmlsZSAqZnApCj4gK3sKPiArCWludCByZXQgPSAwOwo+ICsJaW50IHBy
ZXYgPSB1a2FyY2hfZGVjKCZmcC0+Zl9jb3VudCk7Cj4gKwo+ICsJaWYgKHByZXYgPT0gMCkKPiAr
CQlVS19DUkFTSCgiVW5iYWxhbmNlZCBmaG9sZC9mZHJvcCIpOwo+ICsKPiArCWlmIChwcmV2ID09
IDEpCj4gKwkJcmV0ID0gdmZzX2Nsb3NlKGZwKTsKPiArCXJldHVybiByZXQ7Cj4gK30KPiArdm9p
ZCBmaG9sZChzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCkKPiArewo+ICsJdWthcmNoX2luYygmZnAt
PmZfY291bnQpOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29y
ZS9maWxlLmggYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZmlsZS5oCj4gaW5kZXggM2Q4
ZDY2N2YuLjg0ZWIzNWQ3IDEwMDY0NAo+IC0tLSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29y
ZS9maWxlLmgKPiArKysgYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZmlsZS5oCj4gQEAg
LTUzLDE0ICs1MywyMSBAQCBzdHJ1Y3QgdmZzY29yZV9mb3BzIHsKPiAgIAo+ICAgc3RydWN0IHZm
c2NvcmVfZmlsZSB7Cj4gICAJaW50IGZkOwo+ICsJaW50CQlmX2NvdW50OwkvKiByZWZlcmVuY2Ug
Y291bnQgKi8KPiAgIAljb25zdCBzdHJ1Y3QgdmZzY29yZV9mb3BzICpmb3BzOwo+ICAgfTsKPiAg
IAo+ICAgaW50IHZmc2NvcmVfYWxsb2NfZmQodm9pZCk7Cj4gICB2b2lkIHZmc2NvcmVfcHV0X2Zk
KGludCBmZCk7Cj4gLXZvaWQgdmZzY29yZV9pbnN0YWxsX2ZkKGludCBmZCwgc3RydWN0IHZmc2Nv
cmVfZmlsZSAqZmlsZSk7Cj4gK2ludCB2ZnNjb3JlX2luc3RhbGxfZmQoaW50IGZkLCBzdHJ1Y3Qg
dmZzY29yZV9maWxlICpmaWxlKTsKPiAgIHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKnZmc2NvcmVfZ2V0
X2ZpbGUoaW50IGZkKTsKPiAgIAo+ICsvKgo+ICsgKiBGaWxlIGRlc2NyaXB0b3JzIHJlZmVyZW5j
ZSBjb3VudAo+ICsgKi8KCgpFUlJPUjogImZvbyogYmFyIiBzaG91bGQgYmUgImZvbyAqYmFyIgoj
MTc2OiBGSUxFOiBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZmlsZS5oOjY4Ogordm9pZCBm
aG9sZChzdHJ1Y3QgdmZzY29yZV9maWxlKiBmcCk7Cj4gK3ZvaWQgZmhvbGQoc3RydWN0IHZmc2Nv
cmVfZmlsZSogZnApOwo+ICtpbnQgZmRyb3Aoc3RydWN0IHZmc2NvcmVfZmlsZSogZnApOwo+ICsK
PiAgICNkZWZpbmUgRk9GX09GRlNFVCAgMHgwODAwICAgIC8qIFVzZSB0aGUgb2Zmc2V0IGluIHVp
byBhcmd1bWVudCAqLwo+ICAgCj4gICAjaWZkZWYgX19jcGx1c3BsdXMKPiAKCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5n
IGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVu
cHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Feb 19 15:50:35 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 19 Feb 2019 15:50:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gw7fF-0004Sf-PP; Tue, 19 Feb 2019 15:50:33 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rpGb=Q2=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1gw7fE-0004SX-IK
 for minios-devel@lists.xen.org; Tue, 19 Feb 2019 15:50:32 +0000
X-Inumbo-ID: 15167145-345e-11e9-bc90-bc764e045a96
Received: from queen.nlehd.de (unknown [195.37.154.80])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id 15167145-345e-11e9-bc90-bc764e045a96;
 Tue, 19 Feb 2019 15:50:29 +0000 (UTC)
Received: from c414.ant-net (c414.ant-net [192.168.0.156])
 by queen.nlehd.de (Postfix) with ESMTP id 771364102F;
 Tue, 19 Feb 2019 16:50:30 +0100 (CET)
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: minios-devel@lists.xen.org
Date: Tue, 19 Feb 2019 16:50:29 +0100
Message-Id: <20190219155029.6847-1-simon.kuenzer@neclab.eu>
X-Mailer: git-send-email 2.11.0
Subject: [Minios-devel] [UNIKRAFT PATCH v2] lib/nolibc: Provide stdbool.h
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Simon Kuenzer <simon.kuenzer@neclab.eu>, sharan.santhanam@neclab.eu
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SW50cm9kdWNlIGEgbWluaW1hbCBgc3RkYm9vbC5oYCBoZWFkZXIgdGhhdCBwcm92aWRlcyBkZWZp
bml0aW9ucwpvZiBgYm9vbGAsIGB0cnVlYCwgYW5kIGBmYWxzZWAuClRoZSBmaWxlIGlzIGNvcGll
ZCBmcm9tIExMVk0gQ2xhbmcgNy4wLjEgKGh0dHBzOi8vY2xhbmcubGx2bS5vcmcvKS4KClNpZ25l
ZC1vZmYtYnk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1PgotLS0KIGxp
Yi9ub2xpYmMvaW5jbHVkZS9zdGRib29sLmggfCA0OSArKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDQ5IGluc2VydGlvbnMoKykKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBsaWIvbm9saWJjL2luY2x1ZGUvc3RkYm9vbC5oCgpkaWZmIC0tZ2l0
IGEvbGliL25vbGliYy9pbmNsdWRlL3N0ZGJvb2wuaCBiL2xpYi9ub2xpYmMvaW5jbHVkZS9zdGRi
b29sLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjllYzkyNzU0Ci0tLSAv
ZGV2L251bGwKKysrIGIvbGliL25vbGliYy9pbmNsdWRlL3N0ZGJvb2wuaApAQCAtMCwwICsxLDQ5
IEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUICovCisvKj09PS0tLS0gc3RkYm9v
bC5oIC0gU3RhbmRhcmQgaGVhZGVyIGZvciBib29sZWFucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tPT09CisgKgorICogQ29weXJpZ2h0IChjKSAyMDA4IEVsaSBGcmllZG1hbgorICoKKyAqIFBl
cm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29u
IG9idGFpbmluZyBhIGNvcHkKKyAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9j
dW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCisgKiBpbiB0aGUgU29m
dHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0
aGUgcmlnaHRzCisgKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3Ry
aWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJl
LCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAqIGZ1cm5p
c2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgor
ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ug
c2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlv
bnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMg
SVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVE
LCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZS
SU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorICogQVVUSE9SUyBPUiBDT1BZUklHSFQg
SE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElB
QklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJ
U0UsIEFSSVNJTkcgRlJPTSwKKyAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNP
RlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4KKyAqIFRIRSBTT0ZUV0FSRS4K
KyAqCisgKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09CisgKi8KKy8qIFJldHJpZXZlZCBmcm9tIExMVk0g
Q2xhbmcgNy4wLjE6IGxpYi9IZWFkZXJzL3N0ZGJvb2wuaCAqLworCisjaWZuZGVmIF9fU1REQk9P
TF9ICisjZGVmaW5lIF9fU1REQk9PTF9ICisKKy8qIERvbid0IGRlZmluZSBib29sLCB0cnVlLCBh
bmQgZmFsc2UgaW4gQysrLCBleGNlcHQgYXMgYSBHTlUgZXh0ZW5zaW9uLiAqLworI2lmbmRlZiBf
X2NwbHVzcGx1cworI2RlZmluZSBib29sIF9Cb29sCisjZGVmaW5lIHRydWUgMQorI2RlZmluZSBm
YWxzZSAwCisjZWxpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVmaW5lZChfX1NUUklDVF9BTlNJ
X18pCisvKiBEZWZpbmUgX0Jvb2wgYXMgYSBHTlUgZXh0ZW5zaW9uLiAqLworI2RlZmluZSBfQm9v
bCBib29sCisjaWYgX19jcGx1c3BsdXMgPCAyMDExMDNMCisvKiBGb3IgQysrOTgsIGRlZmluZSBi
b29sLCBmYWxzZSwgdHJ1ZSBhcyBhIEdOVSBleHRlbnNpb24uICovCisjZGVmaW5lIGJvb2wgIGJv
b2wKKyNkZWZpbmUgZmFsc2UgZmFsc2UKKyNkZWZpbmUgdHJ1ZSAgdHJ1ZQorI2VuZGlmCisjZW5k
aWYKKworI2RlZmluZSBfX2Jvb2xfdHJ1ZV9mYWxzZV9hcmVfZGVmaW5lZCAxCisKKyNlbmRpZiAv
KiBfX1NUREJPT0xfSCAqLwotLSAKMi4xMS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2
ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWls
bWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Tue Feb 19 18:04:14 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 19 Feb 2019 18:04:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gw9ka-0008AA-IQ; Tue, 19 Feb 2019 18:04:12 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=kXau=Q2=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1gw9kZ-0008A5-Fh
 for minios-devel@lists.xen.org; Tue, 19 Feb 2019 18:04:11 +0000
X-Inumbo-ID: c05222ca-3470-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id c05222ca-3470-11e9-bc90-bc764e045a96;
 Tue, 19 Feb 2019 18:04:08 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 902E8F207D;
 Tue, 19 Feb 2019 19:04:07 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 00VrN0MUwQ-O; Tue, 19 Feb 2019 19:04:07 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 5907EF2008
 for <minios-devel@lists.xen.org>; Tue, 19 Feb 2019 19:04:05 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 19 Feb 2019 19:04:05
 +0100
To: Simon Kuenzer <simon.kuenzer@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190219155029.6847-1-simon.kuenzer@neclab.eu>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <4dcdd128-3ef2-3e3d-981e-2de599e8fda3@neclab.eu>
Date: Tue, 19 Feb 2019 19:04:04 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190219155029.6847-1-simon.kuenzer@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2] lib/nolibc: Provide stdbool.h
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

ClJldmlld2VkLWJ5OiBTaGFyYW4gU2FudGhhbmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xhYi5l
dT4KCk9uIDIvMTkvMTkgNDo1MCBQTSwgU2ltb24gS3VlbnplciB3cm90ZToKPiBJbnRyb2R1Y2Ug
YSBtaW5pbWFsIGBzdGRib29sLmhgIGhlYWRlciB0aGF0IHByb3ZpZGVzIGRlZmluaXRpb25zCj4g
b2YgYGJvb2xgLCBgdHJ1ZWAsIGFuZCBgZmFsc2VgLgo+IFRoZSBmaWxlIGlzIGNvcGllZCBmcm9t
IExMVk0gQ2xhbmcgNy4wLjEgKGh0dHBzOi8vY2xhbmcubGx2bS5vcmcvKS4KPiAKPiBTaWduZWQt
b2ZmLWJ5OiBTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4KPiAtLS0KPiAg
IGxpYi9ub2xpYmMvaW5jbHVkZS9zdGRib29sLmggfCA0OSArKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKwo+ICAgMSBmaWxlIGNoYW5nZWQsIDQ5IGluc2VydGlvbnMo
KykKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvbm9saWJjL2luY2x1ZGUvc3RkYm9vbC5oCj4g
Cj4gZGlmZiAtLWdpdCBhL2xpYi9ub2xpYmMvaW5jbHVkZS9zdGRib29sLmggYi9saWIvbm9saWJj
L2luY2x1ZGUvc3RkYm9vbC5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAw
MC4uOWVjOTI3NTQKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvbGliL25vbGliYy9pbmNsdWRlL3N0
ZGJvb2wuaAo+IEBAIC0wLDAgKzEsNDkgQEAKPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6
IE1JVCAqLwo+ICsvKj09PS0tLS0gc3RkYm9vbC5oIC0gU3RhbmRhcmQgaGVhZGVyIGZvciBib29s
ZWFucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Cj4gKyAqCj4gKyAqIENvcHlyaWdodCAo
YykgMjAwOCBFbGkgRnJpZWRtYW4KPiArICoKPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3Jh
bnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQo+ICsg
KiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRo
ZSAiU29mdHdhcmUiKSwgdG8gZGVhbAo+ICsgKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0
cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCj4gKyAqIHRv
IHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5z
ZSwgYW5kL29yIHNlbGwKPiArICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1p
dCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCj4gKyAqIGZ1cm5pc2hlZCB0byBkbyBz
bywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cj4gKyAqCj4gKyAqIFRoZSBh
Ym92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJl
IGluY2x1ZGVkIGluCj4gKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2Yg
dGhlIFNvZnR3YXJlLgo+ICsgKgo+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElT
IiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgo+ICsgKiBJTVBMSUVE
LCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSwKPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklO
RlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCj4gKyAqIEFVVEhPUlMgT1IgQ09QWVJJ
R0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKPiAr
ICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBP
VEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKPiArICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lU
SCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgo+ICsgKiBUSEUg
U09GVFdBUkUuCj4gKyAqCj4gKyAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KPiArICovCj4gKy8qIFJl
dHJpZXZlZCBmcm9tIExMVk0gQ2xhbmcgNy4wLjE6IGxpYi9IZWFkZXJzL3N0ZGJvb2wuaCAqLwo+
ICsKPiArI2lmbmRlZiBfX1NUREJPT0xfSAo+ICsjZGVmaW5lIF9fU1REQk9PTF9ICj4gKwo+ICsv
KiBEb24ndCBkZWZpbmUgYm9vbCwgdHJ1ZSwgYW5kIGZhbHNlIGluIEMrKywgZXhjZXB0IGFzIGEg
R05VIGV4dGVuc2lvbi4gKi8KPiArI2lmbmRlZiBfX2NwbHVzcGx1cwo+ICsjZGVmaW5lIGJvb2wg
X0Jvb2wKPiArI2RlZmluZSB0cnVlIDEKPiArI2RlZmluZSBmYWxzZSAwCj4gKyNlbGlmIGRlZmlu
ZWQoX19HTlVDX18pICYmICFkZWZpbmVkKF9fU1RSSUNUX0FOU0lfXykKPiArLyogRGVmaW5lIF9C
b29sIGFzIGEgR05VIGV4dGVuc2lvbi4gKi8KPiArI2RlZmluZSBfQm9vbCBib29sCj4gKyNpZiBf
X2NwbHVzcGx1cyA8IDIwMTEwM0wKPiArLyogRm9yIEMrKzk4LCBkZWZpbmUgYm9vbCwgZmFsc2Us
IHRydWUgYXMgYSBHTlUgZXh0ZW5zaW9uLiAqLwo+ICsjZGVmaW5lIGJvb2wgIGJvb2wKPiArI2Rl
ZmluZSBmYWxzZSBmYWxzZQo+ICsjZGVmaW5lIHRydWUgIHRydWUKPiArI2VuZGlmCj4gKyNlbmRp
Zgo+ICsKPiArI2RlZmluZSBfX2Jvb2xfdHJ1ZV9mYWxzZV9hcmVfZGVmaW5lZCAxCj4gKwo+ICsj
ZW5kaWYgLyogX19TVERCT09MX0ggKi8KPiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVs
QGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1h
bi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Feb 20 11:52:33 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 20 Feb 2019 11:52:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gwQQQ-0001Ly-Md; Wed, 20 Feb 2019 11:52:30 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=F56m=Q3=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1gwQQQ-0001Lt-5r
 for minios-devel@lists.xenproject.org; Wed, 20 Feb 2019 11:52:30 +0000
X-Inumbo-ID: fdacb652-3505-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id fdacb652-3505-11e9-bc90-bc764e045a96;
 Wed, 20 Feb 2019 11:52:26 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 08DED104DFB;
 Wed, 20 Feb 2019 12:50:15 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id AerRxFM7iD5f; Wed, 20 Feb 2019 12:50:14 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id D03AE104DEC
 for <minios-devel@lists.xenproject.org>; Wed, 20 Feb 2019 12:50:12 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 20 Feb 2019 12:50:12
 +0100
To: <minios-devel@lists.xenproject.org>
References: <20190129031056.142151-1-justin.he@arm.com>
 <20190129031056.142151-5-justin.he@arm.com>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <7c9f6790-c468-f552-26e2-77f9fb2b8d3f@neclab.eu>
Date: Wed, 20 Feb 2019 12:50:12 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190129031056.142151-5-justin.he@arm.com>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCHv5 04/23] plat: Clean up kernel
 image symbols
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gSmlhIEhlLAoKUGxlYXNlIGZpbmQgdGhlIGNvbW1lbnRzIGlubGluZS4gVGhpcyBwYXRj
aCBkb2VzIG5vdCBjb21waWxlIG9uIHhlbiAKcGxhdGZvcm0gZm9yIHg4Ni4gRmFpbHMgd2l0aCB0
aGUgZm9sbG93aW5nIGVycm9yOgoKSW4gZmlsZSBpbmNsdWRlZCBmcm9tIAovbW50L2ZpbGVzeXN0
ZW1zL3JvYW1pbmcvd29ya3NwYWNlL1Byb2plY3QvVW5pa3JhZnRfUmV2aWV3L1VuaWtyYWZ0L3Bs
YXQveGVuL2luY2x1ZGUveGVuLXg4Ni9tbS5oOjQ2OjAsCiAgICAgICAgICAgICAgICAgIGZyb20g
Ci9tbnQvZmlsZXN5c3RlbXMvcm9hbWluZy93b3Jrc3BhY2UvUHJvamVjdC9VbmlrcmFmdF9SZXZp
ZXcvVW5pa3JhZnQvcGxhdC94ZW4vaW8uYzozNzoKL21udC9maWxlc3lzdGVtcy9yb2FtaW5nL3dv
cmtzcGFjZS9Qcm9qZWN0L1VuaWtyYWZ0X1Jldmlldy9VbmlrcmFmdC9wbGF0L3hlbi9pby5jOiAK
SW4gZnVuY3Rpb24g4oCYdWtwbGF0X3ZpcnRfdG9fcGh5c+KAmToKL21udC9maWxlc3lzdGVtcy9y
b2FtaW5nL3dvcmtzcGFjZS9Qcm9qZWN0L1VuaWtyYWZ0X1Jldmlldy9VbmlrcmFmdC9wbGF0L3hl
bi9pbmNsdWRlL3hlbi14ODYvbW0uaDoyNDM6NTU6IAplcnJvcjogaW52YWxpZCBvcGVyYW5kcyB0
byBiaW5hcnkgLSAoaGF2ZSDigJhsb25nIHVuc2lnbmVkIGludOKAmSBhbmQg4oCYY2hhciAq4oCZ
KQogICNkZWZpbmUgdG9fcGh5cyh4KSAgICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBsb25nKSh4
KS1WSVJUX1NUQVJUKQoKUGxlYXNlIGZpbmQgaW5saW5lIHRoZSBwb3NzaWJsZSBmaXguCgoKClRo
YW5rcyAmIFJlZ2FyZHMKU2hhcmFuCgpPbiAxLzI5LzE5IDQ6MTAgQU0sIEppYSBIZSB3cm90ZToK
PiBGcm9tOiBXZWkgQ2hlbiA8d2VpLmNoZW5AYXJtLmNvbT4KPiAKPiBUaGVyZSBpcyBhIHBvdGVu
dGlhbCB1bmRlZmluZWQgYmVoYXZpb3VyIGZvciBwb2ludGVyIGNvbXBhcmlzaW9uLgo+IEhvdyB0
byBhdm9pZCB0aGlzIGdjYyBvcHRpbWl6YXRpb24gaXMgdW5kZXIgZGlzY3Vzc2luZy4gU2luY2Ug
aXQKPiBpcyBub3QgYSBibG9jayBpc3N1ZS4gSSB3aWxsIGZvbGxvdyBpdCB1cCBpbiB0aGUgZnV0
dXJlLgo+IFByb3ZpZGUgbWFjcm8gZGVmaW5pdGlvbnMgZm9yIHRleHQsYnNzLGRhdGEuLi4gaXMg
dGhlIHByZWNvbmRpdGlvbgo+IGZvciBmdXR1cmUgc29sdXRpb24uCj4gCj4gU2lnbmVkLW9mZi1i
eTogV2VpIENoZW4gPHdlaS5jaGVuQGFybS5jb20+Cj4gU2lnbmVkLW9mZi1ieTogSmlhIEhlIDxq
dXN0aW4uaGVAYXJtLmNvbT4KPiBSZXZpZXdlZC1ieTogU2hhcmFuIFNhbnRoYW5hbSA8c2hhcmFu
LnNhbnRoYW5hbUBuZWNsYWIuZXU+Cj4gLS0tCj4gdjQtPnY1OiBGaXggY29tcGlsYXRpb24gZXJy
b3IKPiAKPiAgIHBsYXQvY29tbW9uL2luY2x1ZGUvc2VjdGlvbnMuaCB8IDE0ICsrKysrKysrKysr
KysrCj4gICBwbGF0L2t2bS9hcm0vc2V0dXAuYyAgICAgICAgICAgfCAgNyArKystLS0tCj4gICBw
bGF0L2t2bS9tZW1vcnkuYyAgICAgICAgICAgICAgfCAyMyArKysrKysrKysrKy0tLS0tLS0tLS0t
LQo+ICAgcGxhdC9rdm0veDg2L3NldHVwLmMgICAgICAgICAgIHwgIDYgKysrLS0tCj4gICBwbGF0
L3hlbi9hcm0vc2V0dXAuYyAgICAgICAgICAgfCAgNiArKystLS0KPiAgIHBsYXQveGVuL2luY2x1
ZGUveGVuLWFybS9tbS5oICB8ICAzICstLQo+ICAgcGxhdC94ZW4vaW5jbHVkZS94ZW4teDg2L21t
LmggIHwgMjEgKysrKysrKysrKystLS0tLS0tLS0tCj4gICBwbGF0L3hlbi9tZW1vcnkuYyAgICAg
ICAgICAgICAgfCAyMiArKysrKysrKysrKy0tLS0tLS0tLS0tCj4gICBwbGF0L3hlbi94ODYvbW0u
YyAgICAgICAgICAgICAgfCAxNyArKysrKysrKy0tLS0tLS0tLQo+ICAgcGxhdC94ZW4veDg2L3Nl
dHVwLmMgICAgICAgICAgIHwgIDIgKy0KPiAgIDEwIGZpbGVzIGNoYW5nZWQsIDY2IGluc2VydGlv
bnMoKyksIDU1IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9wbGF0L2NvbW1vbi9pbmNs
dWRlL3NlY3Rpb25zLmggYi9wbGF0L2NvbW1vbi9pbmNsdWRlL3NlY3Rpb25zLmgKPiBpbmRleCA0
MmY0MWQyLi43YzE1NDI4IDEwMDY0NAo+IC0tLSBhL3BsYXQvY29tbW9uL2luY2x1ZGUvc2VjdGlv
bnMuaAo+ICsrKyBiL3BsYXQvY29tbW9uL2luY2x1ZGUvc2VjdGlvbnMuaAo+IEBAIC02Miw0ICs2
MiwxOCBAQCBleHRlcm4gY2hhciBfX2Jzc19zdGFydFtdOwo+ICAgLyogX2VuZDogZW5kIG9mIGtl
cm5lbCBpbWFnZSAqLwo+ICAgZXh0ZXJuIGNoYXIgX2VuZFtdOwo+ICAgCj4gKyNkZWZpbmUgX191
a19pbWFnZV9zeW1ib2woYWRkcikgICAgKGFkZHIpCj4gKwo+ICsjZGVmaW5lIF9fRFRCICAgICAg
X191a19pbWFnZV9zeW1ib2woX2R0YikKPiArI2RlZmluZSBfX1RFWFQgICAgIF9fdWtfaW1hZ2Vf
c3ltYm9sKF90ZXh0KQo+ICsjZGVmaW5lIF9fRVRFWFQgICAgICAgIF9fdWtfaW1hZ2Vfc3ltYm9s
KF9ldGV4dCkKPiArI2RlZmluZSBfX1JPREFUQSAgIF9fdWtfaW1hZ2Vfc3ltYm9sKF9yb2RhdGEp
Cj4gKyNkZWZpbmUgX19FUk9EQVRBICBfX3VrX2ltYWdlX3N5bWJvbChfZXJvZGF0YSkKPiArI2Rl
ZmluZSBfX0RBVEEgICAgIF9fdWtfaW1hZ2Vfc3ltYm9sKF9kYXRhKQo+ICsjZGVmaW5lIF9fRURB
VEEgICAgICAgIF9fdWtfaW1hZ2Vfc3ltYm9sKF9lZGF0YSkKPiArI2RlZmluZSBfX0NUT1JTICAg
ICAgICBfX3VrX2ltYWdlX3N5bWJvbChfY3RvcnMpCj4gKyNkZWZpbmUgX19FQ1RPUlMgICBfX3Vr
X2ltYWdlX3N5bWJvbChfZWN0b3JzKQo+ICsjZGVmaW5lIF9fQlNTX1NUQVJUICAgIF9fdWtfaW1h
Z2Vfc3ltYm9sKF9fYnNzX3N0YXJ0KQo+ICsjZGVmaW5lIF9fRU5EICAgICAgX191a19pbWFnZV9z
eW1ib2woX2VuZCkKPiArCj4gICAjZW5kaWYgLyogX19QTEFUX0NNTl9TRUNUSU9OU19IX18gKi8K
PiBkaWZmIC0tZ2l0IGEvcGxhdC9rdm0vYXJtL3NldHVwLmMgYi9wbGF0L2t2bS9hcm0vc2V0dXAu
Ywo+IGluZGV4IDA5NTMwYmIuLmM0YTFmNzggMTAwNjQ0Cj4gLS0tIGEvcGxhdC9rdm0vYXJtL3Nl
dHVwLmMKPiArKysgYi9wbGF0L2t2bS9hcm0vc2V0dXAuYwo+IEBAIC0xOSw2ICsxOSw3IEBACj4g
ICAgKiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRX
QVJFLgo+ICAgICovCj4gICAjaW5jbHVkZSA8bGliZmR0Lmg+Cj4gKyNpbmNsdWRlIDxzZWN0aW9u
cy5oPgo+ICAgI2luY2x1ZGUgPGt2bS9jb25zb2xlLmg+Cj4gICAjaW5jbHVkZSA8dWsvYXNzZXJ0
Lmg+Cj4gICAjaW5jbHVkZSA8a3ZtLWFybS9tbS5oPgo+IEBAIC05NSw4ICs5Niw2IEBAIGVub21l
dGhvZDoKPiAgIAo+ICAgc3RhdGljIHZvaWQgX2luaXRfZHRiX21lbSh2b2lkKQo+ICAgewo+IC0J
ZXh0ZXJuIGNoYXIgX3RleHRbXTsKPiAtCWV4dGVybiBjaGFyIF9lbmRbXTsKPiAgIAlpbnQgZmR0
X21lbSwgcHJvcF9sZW4gPSAwLCBwcm9wX21pbl9sZW47Cj4gICAJaW50IG5hZGRyLCBuc2l6ZTsK
PiAgIAljb25zdCB1aW50NjRfdCAqcmVnczsKPiBAQCAtMTQyLDExICsxNDEsMTEgQEAgc3RhdGlj
IHZvaWQgX2luaXRfZHRiX21lbSh2b2lkKQo+ICAgCj4gICAJbWVtX2Jhc2UgPSBmZHQ2NF90b19j
cHUocmVnc1swXSk7Cj4gICAJbWVtX3NpemUgPSBmZHQ2NF90b19jcHUocmVnc1sxXSk7Cj4gLQlp
ZiAobWVtX2Jhc2UgPiAodWludDY0X3QpJl90ZXh0KQo+ICsJaWYgKG1lbV9iYXNlID4gX19URVhU
KQo+ICAgCQlVS19DUkFTSCgiRmF0YWw6IEltYWdlIG91dHNpZGUgb2YgUkFNXG4iKTsKPiAgIAo+
ICAgCW1heF9hZGRyID0gbWVtX2Jhc2UgKyBtZW1fc2l6ZTsKPiAtCV9saWJrdm1wbGF0X3BhZ2V0
YWJsZSA9KHZvaWQgKikgQUxJR05fRE9XTigoc2l6ZV90KSZfZW5kLCBfX1BBR0VfU0laRSk7Cj4g
KwlfbGlia3ZtcGxhdF9wYWdldGFibGUgPSAodm9pZCAqKSBBTElHTl9ET1dOKChzaXplX3QpX19F
TkQsIF9fUEFHRV9TSVpFKTsKPiAgIAlfbGlia3ZtcGxhdF9oZWFwX3N0YXJ0ID0gX2xpYmt2bXBs
YXRfcGFnZXRhYmxlICsgUEFHRV9UQUJMRV9TSVpFOwo+ICAgCV9saWJrdm1wbGF0X21lbV9lbmQg
PSAodm9pZCAqKSBtYXhfYWRkcjsKPiAgIAo+IGRpZmYgLS1naXQgYS9wbGF0L2t2bS9tZW1vcnku
YyBiL3BsYXQva3ZtL21lbW9yeS5jCj4gaW5kZXggMTFjOTkzZC4uYTdiNGQ1ZSAxMDA2NDQKPiAt
LS0gYS9wbGF0L2t2bS9tZW1vcnkuYwo+ICsrKyBiL3BsYXQva3ZtL21lbW9yeS5jCj4gQEAgLTE5
LDYgKzE5LDcgQEAKPiAgICAqIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNF
IE9GIFRISVMgU09GVFdBUkUuCj4gICAgKi8KPiAgIAo+ICsjaW5jbHVkZSA8c2VjdGlvbnMuaD4K
PiAgICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KPiAgICNpbmNsdWRlIDx1ay9wbGF0L21lbW9yeS5o
Pgo+ICAgI2luY2x1ZGUgPHVrL2Fzc2VydC5oPgo+IEBAIC0zNywxNiArMzgsMTQgQEAgaW50IHVr
cGxhdF9tZW1yZWdpb25fY291bnQodm9pZCkKPiAgIAo+ICAgaW50IHVrcGxhdF9tZW1yZWdpb25f
Z2V0KGludCBpLCBzdHJ1Y3QgdWtwbGF0X21lbXJlZ2lvbl9kZXNjICptKQo+ICAgewo+IC0JZXh0
ZXJuIGNoYXIgX3RleHQsIF9ldGV4dCwgX2RhdGEsIF9lZGF0YSwgX3JvZGF0YSwgX2Vyb2RhdGEs
Cj4gLQkJICAgIF9jdG9ycywgX2VjdG9ycywgX19ic3Nfc3RhcnQsIF9lbmQ7Cj4gICAJaW50IHJl
dDsKPiAgIAo+ICAgCVVLX0FTU0VSVChtKTsKPiAgIAo+ICAgCXN3aXRjaCAoaSkgewo+ICAgCWNh
c2UgMDogLyogdGV4dCAqLwo+IC0JCW0tPmJhc2UgID0gJl90ZXh0Owo+IC0JCW0tPmxlbiAgID0g
KHNpemVfdCkgJl9ldGV4dCAtIChzaXplX3QpICZfdGV4dDsKPiArCQltLT5iYXNlICA9ICh2b2lk
ICopIF9fVEVYVDsKPiArCQltLT5sZW4gICA9IChzaXplX3QpIF9fRVRFWFQgLSAoc2l6ZV90KSBf
X1RFWFQ7Cj4gICAJCW0tPmZsYWdzID0gKFVLUExBVF9NRU1SRl9SRVNFUlZFRAo+ICAgCQkJICAg
IHwgVUtQTEFUX01FTVJGX1JFQURBQkxFKTsKPiAgICNpZiBDT05GSUdfVUtQTEFUX01FTVJOQU1F
Cj4gQEAgLTU1LDggKzU0LDggQEAgaW50IHVrcGxhdF9tZW1yZWdpb25fZ2V0KGludCBpLCBzdHJ1
Y3QgdWtwbGF0X21lbXJlZ2lvbl9kZXNjICptKQo+ICAgCQlyZXQgPSAwOwo+ICAgCQlicmVhazsK
PiAgIAljYXNlIDE6IC8qIHJvZGF0YSAqLwo+IC0JCW0tPmJhc2UgID0gJl9yb2RhdGE7Cj4gLQkJ
bS0+bGVuICAgPSAoc2l6ZV90KSAmX2Vyb2RhdGEgLSAoc2l6ZV90KSAmX3JvZGF0YTsKPiArCQlt
LT5iYXNlICA9ICh2b2lkICopIF9fUk9EQVRBOwo+ICsJCW0tPmxlbiAgID0gKHNpemVfdCkgX19F
Uk9EQVRBIC0gKHNpemVfdCkgX19ST0RBVEE7Cj4gICAJCW0tPmZsYWdzID0gKFVLUExBVF9NRU1S
Rl9SRVNFUlZFRAo+ICAgCQkJICAgIHwgVUtQTEFUX01FTVJGX1JFQURBQkxFKTsKPiAgICNpZiBD
T05GSUdfVUtQTEFUX01FTVJOQU1FCj4gQEAgLTY1LDggKzY0LDggQEAgaW50IHVrcGxhdF9tZW1y
ZWdpb25fZ2V0KGludCBpLCBzdHJ1Y3QgdWtwbGF0X21lbXJlZ2lvbl9kZXNjICptKQo+ICAgCQly
ZXQgPSAwOwo+ICAgCQlicmVhazsKPiAgIAljYXNlIDI6IC8qIGN0b3JzICovCj4gLQkJbS0+YmFz
ZSAgPSAmX2N0b3JzOwo+IC0JCW0tPmxlbiAgID0gKHNpemVfdCkgJl9lY3RvcnMgLSAoc2l6ZV90
KSAmX2N0b3JzOwo+ICsJCW0tPmJhc2UgID0gKHZvaWQgKikgX19DVE9SUzsKPiArCQltLT5sZW4g
ICA9IChzaXplX3QpIF9fRUNUT1JTIC0gKHNpemVfdCkgX19DVE9SUzsKPiAgIAkJbS0+ZmxhZ3Mg
PSAoVUtQTEFUX01FTVJGX1JFU0VSVkVECj4gICAJCQkgICAgfCBVS1BMQVRfTUVNUkZfUkVBREFC
TEUpOwo+ICAgI2lmIENPTkZJR19VS1BMQVRfTUVNUk5BTUUKPiBAQCAtNzUsOCArNzQsOCBAQCBp
bnQgdWtwbGF0X21lbXJlZ2lvbl9nZXQoaW50IGksIHN0cnVjdCB1a3BsYXRfbWVtcmVnaW9uX2Rl
c2MgKm0pCj4gICAJCXJldCA9IDA7Cj4gICAJCWJyZWFrOwo+ICAgCWNhc2UgMzogLyogZGF0YSAq
Lwo+IC0JCW0tPmJhc2UgID0gJl9kYXRhOwo+IC0JCW0tPmxlbiAgID0gKHNpemVfdCkgJl9lZGF0
YSAtIChzaXplX3QpICZfZGF0YTsKPiArCQltLT5iYXNlICA9ICh2b2lkICopIF9fREFUQTsKPiAr
CQltLT5sZW4gICA9IChzaXplX3QpIF9fRURBVEEgLSAoc2l6ZV90KSBfX0RBVEE7Cj4gICAJCW0t
PmZsYWdzID0gKFVLUExBVF9NRU1SRl9SRVNFUlZFRAo+ICAgCQkJICAgIHwgVUtQTEFUX01FTVJG
X1JFQURBQkxFCj4gICAJCQkgICAgfCBVS1BMQVRfTUVNUkZfV1JJVEFCTEUpOwo+IEBAIC04Niw4
ICs4NSw4IEBAIGludCB1a3BsYXRfbWVtcmVnaW9uX2dldChpbnQgaSwgc3RydWN0IHVrcGxhdF9t
ZW1yZWdpb25fZGVzYyAqbSkKPiAgIAkJcmV0ID0gMDsKPiAgIAkJYnJlYWs7Cj4gICAJY2FzZSA0
OiAvKiBic3MgKi8KPiAtCQltLT5iYXNlICA9ICZfX2Jzc19zdGFydDsKPiAtCQltLT5sZW4gICA9
IChzaXplX3QpICZfZW5kIC0gKHNpemVfdCkgJl9fYnNzX3N0YXJ0Owo+ICsJCW0tPmJhc2UgID0g
KHZvaWQgKikgX19CU1NfU1RBUlQ7Cj4gKwkJbS0+bGVuICAgPSAoc2l6ZV90KSBfX0VORCAtIChz
aXplX3QpIF9fQlNTX1NUQVJUOwo+ICAgCQltLT5mbGFncyA9IChVS1BMQVRfTUVNUkZfUkVTRVJW
RUQKPiAgIAkJCSAgICB8IFVLUExBVF9NRU1SRl9SRUFEQUJMRQo+ICAgCQkJICAgIHwgVUtQTEFU
X01FTVJGX1dSSVRBQkxFKTsKPiBkaWZmIC0tZ2l0IGEvcGxhdC9rdm0veDg2L3NldHVwLmMgYi9w
bGF0L2t2bS94ODYvc2V0dXAuYwo+IGluZGV4IGUwMjg4NmQuLmE2ZjMxZGQgMTAwNjQ0Cj4gLS0t
IGEvcGxhdC9rdm0veDg2L3NldHVwLmMKPiArKysgYi9wbGF0L2t2bS94ODYvc2V0dXAuYwo+IEBA
IC0yNyw2ICsyNyw3IEBACj4gICAgKi8KPiAgIAo+ICAgI2luY2x1ZGUgPHN0cmluZy5oPgo+ICsj
aW5jbHVkZSA8c2VjdGlvbnMuaD4KPiAgICNpbmNsdWRlIDx4ODYvdHJhcHMuaD4KPiAgICNpbmNs
dWRlIDxrdm0vY29uc29sZS5oPgo+ICAgI2luY2x1ZGUgPGt2bS9pbnRjdHJsLmg+Cj4gQEAgLTc4
LDcgKzc5LDYgQEAgc3RhdGljIGlubGluZSB2b2lkIF9tYl9nZXRfY21kbGluZShzdHJ1Y3QgbXVs
dGlib290X2luZm8gKm1pLCBjaGFyICpjbWRsaW5lLAo+ICAgCj4gICBzdGF0aWMgaW5saW5lIHZv
aWQgX21iX2luaXRfbWVtKHN0cnVjdCBtdWx0aWJvb3RfaW5mbyAqbWkpCj4gICB7Cj4gLQlleHRl
cm4gY2hhciBfZW5kOwo+ICAgCW11bHRpYm9vdF9tZW1vcnlfbWFwX3QgKm07Cj4gICAJc2l6ZV90
IG9mZnNldCwgbWF4X2FkZHI7Cj4gICAKPiBAQCAtMTAyLDkgKzEwMiw5IEBAIHN0YXRpYyBpbmxp
bmUgdm9pZCBfbWJfaW5pdF9tZW0oc3RydWN0IG11bHRpYm9vdF9pbmZvICptaSkKPiAgIAltYXhf
YWRkciA9IG0tPmFkZHIgKyBtLT5sZW47Cj4gICAJaWYgKG1heF9hZGRyID4gUExBVEZPUk1fTUFY
X01FTV9BRERSKQo+ICAgCQltYXhfYWRkciA9IFBMQVRGT1JNX01BWF9NRU1fQUREUjsKPiAtCVVL
X0FTU0VSVCgoc2l6ZV90KSZfZW5kIDw9IG1heF9hZGRyKTsKPiArCVVLX0FTU0VSVCgoc2l6ZV90
KV9fRU5EIDw9IG1heF9hZGRyKTsKPiAgIAo+IC0JX2xpYmt2bXBsYXRfaGVhcF9zdGFydCA9ICh2
b2lkICopIEFMSUdOX1VQKChzaXplX3QpJl9lbmQsIF9fUEFHRV9TSVpFKTsKPiArCV9saWJrdm1w
bGF0X2hlYXBfc3RhcnQgPSAodm9pZCAqKSBBTElHTl9VUCgoc2l6ZV90KV9fRU5ELCBfX1BBR0Vf
U0laRSk7Cj4gICAJX2xpYmt2bXBsYXRfbWVtX2VuZCAgICA9ICh2b2lkICopIG1heF9hZGRyOwo+
ICAgCV9saWJrdm1wbGF0X3N0YWNrX3RvcCAgPSAodm9pZCAqKSAobWF4X2FkZHIgLSBfX1NUQUNL
X1NJWkUpOwo+ICAgfQo+IGRpZmYgLS1naXQgYS9wbGF0L3hlbi9hcm0vc2V0dXAuYyBiL3BsYXQv
eGVuL2FybS9zZXR1cC5jCj4gaW5kZXggNGI5ZWZlNS4uZDg1NGZhMCAxMDA2NDQKPiAtLS0gYS9w
bGF0L3hlbi9hcm0vc2V0dXAuYwo+ICsrKyBiL3BsYXQveGVuL2FybS9zZXR1cC5jCj4gQEAgLTI1
LDcgKzI1LDcgQEAKPiAgIC8qIFBvcnRlZCBmcm9tIE1pbmktT1MgKi8KPiAgIAo+ICAgI2luY2x1
ZGUgPHN0cmluZy5oPgo+IC0KPiArI2luY2x1ZGUgPHNlY3Rpb25zLmg+Cj4gICAjaW5jbHVkZSA8
eGVuLWFybS9vcy5oPgo+ICAgI2luY2x1ZGUgPHhlbi1hcm0vbW0uaD4KPiAgICNpbmNsdWRlIDx4
ZW4veGVuLmg+Cj4gQEAgLTE0MiwxMCArMTQyLDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfZHRi
X2luaXRfbWVtKHVpbnQzMl90IHBoeXNpY2FsX29mZnNldCkKPiAgIAlpZiAocmVncyA9PSBOVUxM
ICYmIHByb3BfbGVuIDwgMTYpCj4gICAJCVVLX0NSQVNIKCJCYWQgJ3JlZycgcHJvcGVydHk6ICVw
ICVkXG4iLCByZWdzLCBwcm9wX2xlbik7Cj4gICAKPiAtCWVuZCA9ICh1aW50cHRyX3QpICZfZW5k
Owo+ICsJZW5kID0gKHVpbnRwdHJfdCkgX19FTkQ7Cj4gICAJbWVtX2Jhc2UgPSBmZHQ2NF90b19j
cHUocmVnc1swXSk7Cj4gICAJbWVtX3NpemUgPSBmZHQ2NF90b19jcHUocmVnc1sxXSk7Cj4gLQlp
ZiAodG9fdmlydChtZW1fYmFzZSkgPiAodm9pZCAqKSZfdGV4dCkKPiArCWlmICh0b192aXJ0KG1l
bV9iYXNlKSA+ICh2b2lkICopX19URVhUKQo+ICAgCQlVS19DUkFTSCgiRmF0YWw6IEltYWdlIG91
dHNpZGUgb2YgUkFNXG4iKTsKPiAgIAo+ICAgCXN0YXJ0X3Bmbl9wID0gUEZOX1VQKHRvX3BoeXMo
ZW5kKSk7Cj4gZGlmZiAtLWdpdCBhL3BsYXQveGVuL2luY2x1ZGUveGVuLWFybS9tbS5oIGIvcGxh
dC94ZW4vaW5jbHVkZS94ZW4tYXJtL21tLmgKPiBpbmRleCA5YjhlYTg1Li4wZjVjOGY1IDEwMDY0
NAo+IC0tLSBhL3BsYXQveGVuL2luY2x1ZGUveGVuLWFybS9tbS5oCj4gKysrIGIvcGxhdC94ZW4v
aW5jbHVkZS94ZW4tYXJtL21tLmgKPiBAQCAtMjgsMTEgKzI4LDEwIEBACj4gICAjZGVmaW5lIF9B
UkNIX01NX0hfCj4gICAKPiAgICNpbmNsdWRlIDxzdGRpbnQuaD4KPiArI2luY2x1ZGUgPHNlY3Rp
b25zLmg+Cj4gICAjaW5jbHVkZSA8dWsvYXJjaC9saW1pdHMuaD4KPiAgIAo+ICAgdHlwZWRlZiB1
aW50NjRfdCBwYWRkcl90Owo+IC0KPiAtZXh0ZXJuIGNoYXIgX3RleHQsIF9ldGV4dCwgX2RhdGEs
IF9lZGF0YSwgX3JvZGF0YSwgX2Vyb2RhdGEsIF9lbmQsIF9fYnNzX3N0YXJ0Owo+ICAgZXh0ZXJu
IGludCBfYm9vdF9zdGFja1tdOwo+ICAgZXh0ZXJuIGludCBfYm9vdF9zdGFja19lbmRbXTsKPiAg
IC8qIEFkZCB0aGlzIHRvIGEgdmlydHVhbCBhZGRyZXNzIHRvIGdldCB0aGUgcGh5c2ljYWwgYWRk
cmVzcyAod3JhcHMgYXQgNEdCKSAqLwo+IGRpZmYgLS1naXQgYS9wbGF0L3hlbi9pbmNsdWRlL3hl
bi14ODYvbW0uaCBiL3BsYXQveGVuL2luY2x1ZGUveGVuLXg4Ni9tbS5oCj4gaW5kZXggMGU1OTc5
Ni4uZGMzNmI1OSAxMDA2NDQKPiAtLS0gYS9wbGF0L3hlbi9pbmNsdWRlL3hlbi14ODYvbW0uaAo+
ICsrKyBiL3BsYXQveGVuL2luY2x1ZGUveGVuLXg4Ni9tbS5oCj4gQEAgLTksMjIgKzksMjMgQEAK
PiAgICAqIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3Ry
aWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vcgo+ICAgICogc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3
YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKPiAgICAq
IGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6
Cj4gLSAqCj4gKyAqCj4gICAgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBw
ZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgo+ICAgICogYWxsIGNvcGllcyBv
ciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCj4gLSAqCj4gLSAqIFRIRSBT
T0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5E
LCBFWFBSRVNTIE9SCj4gLSAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8g
VEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+IC0gKiBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUKPiAtICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBD
TEFJTSwgREFNQUdFUyBPUiBPVEhFUgo+IC0gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNU
SU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwo+IC0gKiBGUk9NLCBP
VVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9U
SEVSCj4gKyAqCj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VU
IFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCj4gKyAqIElNUExJRUQsIElOQ0xVRElO
RyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+
ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5U
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKPiArICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVS
UyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgo+ICsgKiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwg
QVJJU0lORwo+ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZU
V0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCj4gICAgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUu
Cj4gICAgKi8KPiAgIAo+ICAgI2lmbmRlZiBfQVJDSF9NTV9IXwo+ICAgI2RlZmluZSBfQVJDSF9N
TV9IXwo+ICAgCj4gKyNpbmNsdWRlIDxzZWN0aW9ucy5oPgo+ICAgI2lmbmRlZiBfX0FTU0VNQkxZ
X18KPiAgICNpbmNsdWRlIDx4ZW4veGVuLmg+Cj4gICAjaWYgZGVmaW5lZChfX2kzODZfXykKPiBA
QCAtMjIxLDcgKzIyMiw3IEBAIGV4dGVybiB1bnNpZ25lZCBsb25nICpwaHlzX3RvX21hY2hpbmVf
bWFwcGluZzsKPiAgICNlbHNlCj4gICBleHRlcm4gcGdlbnRyeV90IHBhZ2VfdGFibGVfYmFzZVtd
Owo+ICAgI2VuZGlmCj4gLWV4dGVybiBjaGFyIF90ZXh0LCBfZXRleHQsIF9lcm9kYXRhLCBfZWRh
dGEsIF9lbmQ7Cj4gKwo+ICAgZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbWZuX3plcm87Cj4gICBzdGF0
aWMgX19pbmxpbmVfXyBtYWRkcl90IHBoeXNfdG9fbWFjaGluZShwYWRkcl90IHBoeXMpCj4gICB7
Cj4gQEAgLTIzNyw3ICsyMzgsNyBAQCBzdGF0aWMgX19pbmxpbmVfXyBwYWRkcl90IG1hY2hpbmVf
dG9fcGh5cyhtYWRkcl90IG1hY2hpbmUpCj4gICAJcmV0dXJuIHBoeXM7Cj4gICB9Cj4gICAKCgpJ
IHRoaW5rIHRoaXMgc2hvdWxkIHN0aWxsIGJlICh1bnNpZ25lZCBsb25nKV9fVEVYVAo+IC0jZGVm
aW5lIFZJUlRfU1RBUlQgICAgICAgICAgICAgICAgICgodW5zaWduZWQgbG9uZykmX3RleHQpCj4g
KyNkZWZpbmUgVklSVF9TVEFSVCAgICAgICAgICAgICAgICAgKF9fVEVYVCkKPiAgIAo+ICAgI2Rl
ZmluZSB0b19waHlzKHgpICAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIGxvbmcpKHgpLVZJUlRf
U1RBUlQpCj4gICAjZGVmaW5lIHRvX3ZpcnQoeCkgICAgICAgICAgICAgICAgICgodm9pZCAqKSgo
dW5zaWduZWQgbG9uZykoeCkrVklSVF9TVEFSVCkpCj4gZGlmZiAtLWdpdCBhL3BsYXQveGVuL21l
bW9yeS5jIGIvcGxhdC94ZW4vbWVtb3J5LmMKPiBpbmRleCBmODRkY2E3Li5jYjhlM2I4IDEwMDY0
NAo+IC0tLSBhL3BsYXQveGVuL21lbW9yeS5jCj4gKysrIGIvcGxhdC94ZW4vbWVtb3J5LmMKPiBA
QCAtMzQsNiArMzQsNyBAQAo+ICAgICovCj4gICAKPiAgICNpbmNsdWRlIDxzdHJpbmcuaD4KPiAr
I2luY2x1ZGUgPHNlY3Rpb25zLmg+Cj4gICAKPiAgICNpbmNsdWRlIDxjb21tb24vZ250dGFiLmg+
Cj4gICAjaWYgKGRlZmluZWQgX19YODZfMzJfXykgfHwgKGRlZmluZWQgX19YODZfNjRfXykKPiBA
QCAtNTEsMTQgKzUyLDEzIEBAIGludCB1a3BsYXRfbWVtcmVnaW9uX2NvdW50KHZvaWQpCj4gICAK
PiAgIGludCB1a3BsYXRfbWVtcmVnaW9uX2dldChpbnQgaSwgc3RydWN0IHVrcGxhdF9tZW1yZWdp
b25fZGVzYyAqbSkKPiAgIHsKPiAtCWV4dGVybiBjaGFyIF90ZXh0LCBfZXRleHQsIF9kYXRhLCBf
ZWRhdGEsIF9yb2RhdGEsIF9lcm9kYXRhLCBfY3RvcnMsIF9lY3RvcnMsIF9lbmQsIF9fYnNzX3N0
YXJ0Owo+ICAgCj4gICAJVUtfQVNTRVJUKG0pOwo+ICAgCj4gICAJc3dpdGNoKGkpIHsKPiAgIAlj
YXNlIDA6IC8qIHRleHQgKi8KPiAtCQltLT5iYXNlICAgICA9ICZfdGV4dDsKPiAtCQltLT5sZW4g
ICA9IChzaXplX3QpICZfZXRleHQgLSAoc2l6ZV90KSAmX3RleHQ7Cj4gKwkJbS0+YmFzZSAgPSAo
dm9pZCAqKSBfX1RFWFQ7Cj4gKwkJbS0+bGVuICAgPSAoc2l6ZV90KSBfX0VURVhUIC0gKHNpemVf
dCkgX19URVhUOwo+ICAgCQltLT5mbGFncyA9IChVS1BMQVRfTUVNUkZfUkVTRVJWRUQKPiAgIAkJ
CSAgICB8IFVLUExBVF9NRU1SRl9SRUFEQUJMRSk7Cj4gICAjaWYgQ09ORklHX1VLUExBVF9NRU1S
TkFNRQo+IEBAIC02Niw4ICs2Niw4IEBAIGludCB1a3BsYXRfbWVtcmVnaW9uX2dldChpbnQgaSwg
c3RydWN0IHVrcGxhdF9tZW1yZWdpb25fZGVzYyAqbSkKPiAgICNlbmRpZgo+ICAgCQlicmVhazsK
PiAgIAljYXNlIDE6CS8qIHJvIGRhdGEgKi8KPiAtCQltLT5iYXNlICA9ICZfcm9kYXRhOwo+IC0J
CW0tPmxlbiAgID0gKHNpemVfdCkgJl9lcm9kYXRhIC0gKHNpemVfdCkgJl9yb2RhdGE7Cj4gKwkJ
bS0+YmFzZSAgPSAodm9pZCAqKSBfX1JPREFUQTsKPiArCQltLT5sZW4gICA9IChzaXplX3QpIF9f
RVJPREFUQSAtIChzaXplX3QpIF9fUk9EQVRBOwo+ICAgCQltLT5mbGFncyA9IChVS1BMQVRfTUVN
UkZfUkVTRVJWRUQKPiAgIAkJCSAgICAgICB8IFVLUExBVF9NRU1SRl9SRUFEQUJMRSk7Cj4gICAj
aWYgQ09ORklHX1VLUExBVF9NRU1STkFNRQo+IEBAIC03NSw4ICs3NSw4IEBAIGludCB1a3BsYXRf
bWVtcmVnaW9uX2dldChpbnQgaSwgc3RydWN0IHVrcGxhdF9tZW1yZWdpb25fZGVzYyAqbSkKPiAg
ICNlbmRpZgo+ICAgCQlicmVhazsKPiAgIAljYXNlIDI6IC8qIGN0b3JzICovCj4gLQkJbS0+YmFz
ZSAgPSAmX2N0b3JzOwo+IC0JCW0tPmxlbiAgID0gKHNpemVfdCkgJl9lY3RvcnMgLSAoc2l6ZV90
KSAmX2N0b3JzOwo+ICsJCW0tPmJhc2UgID0gKHZvaWQgKikgX19DVE9SUzsKPiArCQltLT5sZW4g
ICA9IChzaXplX3QpIF9fRUNUT1JTIC0gKHNpemVfdCkgX19DVE9SUzsKPiAgIAkJbS0+ZmxhZ3Mg
PSAoVUtQTEFUX01FTVJGX1JFU0VSVkVECj4gICAJCQkgICAgfCBVS1BMQVRfTUVNUkZfUkVBREFC
TEUpOwo+ICAgI2lmIENPTkZJR19VS1BMQVRfTUVNUk5BTUUKPiBAQCAtODQsOCArODQsOCBAQCBp
bnQgdWtwbGF0X21lbXJlZ2lvbl9nZXQoaW50IGksIHN0cnVjdCB1a3BsYXRfbWVtcmVnaW9uX2Rl
c2MgKm0pCj4gICAjZW5kaWYKPiAgIAkJYnJlYWs7Cj4gICAJY2FzZSAzOiAvKiBkYXRhICovCj4g
LQkJbS0+YmFzZSAgPSAmX2RhdGE7Cj4gLQkJbS0+bGVuICAgPSAoc2l6ZV90KSAmX2VkYXRhIC0g
KHNpemVfdCkgJl9kYXRhOwo+ICsJCW0tPmJhc2UgID0gKHZvaWQgKikgX19EQVRBOwo+ICsJCW0t
PmxlbiAgID0gKHNpemVfdCkgX19FREFUQSAtIChzaXplX3QpIF9fREFUQTsKPiAgIAkJbS0+Zmxh
Z3MgPSAoVUtQTEFUX01FTVJGX1JFU0VSVkVECj4gICAJCQkgICAgfCBVS1BMQVRfTUVNUkZfUkVB
REFCTEUKPiAgIAkJCSAgICB8IFVLUExBVF9NRU1SRl9XUklUQUJMRSk7Cj4gQEAgLTk0LDggKzk0
LDggQEAgaW50IHVrcGxhdF9tZW1yZWdpb25fZ2V0KGludCBpLCBzdHJ1Y3QgdWtwbGF0X21lbXJl
Z2lvbl9kZXNjICptKQo+ICAgI2VuZGlmCj4gICAJCWJyZWFrOwo+ICAgCWNhc2UgNDogLyogYnNz
ICovCj4gLQkJbS0+YmFzZSAgPSAmX19ic3Nfc3RhcnQ7Cj4gLQkJbS0+bGVuICAgPSAoc2l6ZV90
KSAmX2VuZCAtIChzaXplX3QpICZfX2Jzc19zdGFydDsKPiArCQltLT5iYXNlICA9ICh2b2lkICop
IF9fQlNTX1NUQVJUOwo+ICsJCW0tPmxlbiAgID0gKHNpemVfdCkgX19FTkQgLSAoc2l6ZV90KSBf
X0JTU19TVEFSVDsKPiAgIAkJbS0+ZmxhZ3MgPSAoVUtQTEFUX01FTVJGX1JFU0VSVkVECj4gICAJ
CQkgICAgfCBVS1BMQVRfTUVNUkZfUkVBREFCTEUKPiAgIAkJCSAgICB8IFVLUExBVF9NRU1SRl9X
UklUQUJMRSk7Cj4gZGlmZiAtLWdpdCBhL3BsYXQveGVuL3g4Ni9tbS5jIGIvcGxhdC94ZW4veDg2
L21tLmMKPiBpbmRleCBiODkzODRmLi4yZjIzODU1IDEwMDY0NAo+IC0tLSBhL3BsYXQveGVuL3g4
Ni9tbS5jCj4gKysrIGIvcGxhdC94ZW4veDg2L21tLmMKPiBAQCAtMzYsNiArMzYsNyBAQAo+ICAg
ICovCj4gICAKPiAgICNpbmNsdWRlIDxzdHJpbmcuaD4KPiArI2luY2x1ZGUgPHNlY3Rpb25zLmg+
Cj4gICAjaW5jbHVkZSA8ZXJybm8uaD4KPiAgICNpbmNsdWRlIDx1ay9hbGxvYy5oPgo+ICAgI2lu
Y2x1ZGUgPHVrL3BsYXQvY29uZmlnLmg+Cj4gQEAgLTE0MiwxMiArMTQzLDEwIEBAIHZvaWQgX2lu
aXRfbWVtX2J1aWxkX3BhZ2V0YWJsZSh1bnNpZ25lZCBsb25nICpzdGFydF9wZm4sIHVuc2lnbmVk
IGxvbmcgKm1heF9wZm4pCj4gICAgICAgewo+ICAgCSAgICB1a19wcl93YXJuKCJUcnlpbmcgdG8g
dXNlIFhlbiB2aXJ0dWFsIHNwYWNlLiAiCj4gICAJCSAgICAgICAiVHJ1bmNhdGluZyBtZW1vcnkg
ZnJvbSAlbHVNQiB0byAiLAo+IC0JCSAgICAgICAoKHVuc2lnbmVkIGxvbmcpcGZuX3RvX3ZpcnQo
Km1heF9wZm4pIC0KPiAtCQkJKHVuc2lnbmVkIGxvbmcpJl90ZXh0KT4+MjApOwo+ICsJCSAgICAg
ICAoKHVuc2lnbmVkIGxvbmcpcGZuX3RvX3ZpcnQoKm1heF9wZm4pIC0gX19URVhUKT4+MjApOwo+
ICAgCSAgICAqbWF4X3BmbiA9IHZpcnRfdG9fcGZuKEhZUEVSVklTT1JfVklSVF9TVEFSVCAtIFBB
R0VfU0laRSk7Cj4gICAJICAgIHVrX3ByX3dhcm4oIiVsdU1CXG4iLAo+IC0JCSAgICAgICAoKHVu
c2lnbmVkIGxvbmcpcGZuX3RvX3ZpcnQoKm1heF9wZm4pIC0KPiAtCQkJKHVuc2lnbmVkIGxvbmcp
Jl90ZXh0KT4+MjApOwo+ICsJCSAgICAgICAoKHVuc2lnbmVkIGxvbmcpcGZuX3RvX3ZpcnQoKm1h
eF9wZm4pIC0gX19URVhUKT4+MjApOwo+ICAgICAgIH0KPiAgICNlbHNlCj4gICAgICAgLyogUm91
bmQgdXAgdG8gbmV4dCAyTUIgYm91bmRhcnkgYXMgd2UgYXJlIHVzaW5nIDJNQiBwYWdlcyBvbiBI
Vk1saXRlLiAqLwo+IEBAIC02NzAsMTggKzY2OSwxOCBAQCB2b2lkIF9pbml0X21lbV9jbGVhcl9i
b290c3RyYXAodm9pZCkKPiAgICAgICBwZ2VudHJ5X3QgKnBndDsKPiAgICNlbmRpZgo+ICAgCj4g
LSAgICB1a19wcl9kZWJ1ZygiQ2xlYXIgYm9vdHN0cmFwcGluZyBtZW1vcnk6ICVwXG4iLCAmX3Rl
eHQpOwo+ICsJdWtfcHJfZGVidWcoIkNsZWFyIGJvb3RzdHJhcHBpbmcgbWVtb3J5OiAlcFxuIiwg
KHZvaWQgKilfX1RFWFQpOwo+ICAgCj4gICAgICAgLyogVXNlIGZpcnN0IHBhZ2UgYXMgdGhlIENv
VyB6ZXJvIHBhZ2UgKi8KPiAtICAgIG1lbXNldCgmX3RleHQsIDAsIFBBR0VfU0laRSk7Cj4gLSAg
ICBtZm5femVybyA9IHZpcnRfdG9fbWZuKCh1bnNpZ25lZCBsb25nKSAmX3RleHQpOwo+ICsJbWVt
c2V0KCh2b2lkICopX19URVhULCAwLCBQQUdFX1NJWkUpOwo+ICsJbWZuX3plcm8gPSB2aXJ0X3Rv
X21mbihfX1RFWFQpOwo+ICAgI2lmZGVmIENPTkZJR19QQVJBVklSVAo+ICAgICAgIGlmICggKHJj
ID0gSFlQRVJWSVNPUl91cGRhdGVfdmFfbWFwcGluZygwLCBudWxscHRlLCBVVk1GX0lOVkxQRykp
ICkKPiAgIAkgICAgdWtfcHJfZXJyKCJVbmFibGUgdG8gdW5tYXAgTlVMTCBwYWdlLiByYz0lZFxu
IiwgcmMpOwo+ICAgI2Vsc2UKPiAtICAgIHBndCA9IGdldF9wZ3QoKHVuc2lnbmVkIGxvbmcpJl90
ZXh0KTsKPiArCXBndCA9IGdldF9wZ3QoX19URVhUKTsKPiAgICAgICAqcGd0ID0gMDsKPiAtICAg
IGludmxwZygodW5zaWduZWQgbG9uZykmX3RleHQpOwo+ICsJaW52bHBnKF9fVEVYVCk7Cj4gICAj
ZW5kaWYKPiAgIH0KPiAgIAo+IGRpZmYgLS1naXQgYS9wbGF0L3hlbi94ODYvc2V0dXAuYyBiL3Bs
YXQveGVuL3g4Ni9zZXR1cC5jCj4gaW5kZXggMzVmZGQzNS4uODA5MjdmYSAxMDA2NDQKPiAtLS0g
YS9wbGF0L3hlbi94ODYvc2V0dXAuYwo+ICsrKyBiL3BsYXQveGVuL3g4Ni9zZXR1cC5jCj4gQEAg
LTE1NCw3ICsxNTQsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX2luaXRfbWVtKHZvaWQpCj4gICAK
PiAgIAlfaW5pdF9tZW1fYnVpbGRfcGFnZXRhYmxlKCZzdGFydF9wZm4sICZtYXhfcGZuKTsKPiAg
IAlfaW5pdF9tZW1fY2xlYXJfYm9vdHN0cmFwKCk7Cj4gLQlfaW5pdF9tZW1fc2V0X3JlYWRvbmx5
KCZfdGV4dCwgJl9lcm9kYXRhKTsKPiArCV9pbml0X21lbV9zZXRfcmVhZG9ubHkoKHZvaWQgKilf
X1RFWFQsICh2b2lkICopX19FUk9EQVRBKTsKPiAgIAo+ICAgCS8qIEZpbGwgb3V0IG1yZCBhcnJh
eSAqLwo+ICAgCS8qIGhlYXAgKi8KPiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxp
c3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9s
aXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Feb 20 11:58:26 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 20 Feb 2019 11:58:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gwQWA-0001Z5-86; Wed, 20 Feb 2019 11:58:26 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=F56m=Q3=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1gwQW9-0001Z0-2s
 for minios-devel@lists.xenproject.org; Wed, 20 Feb 2019 11:58:25 +0000
X-Inumbo-ID: d0116ded-3506-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id d0116ded-3506-11e9-bc90-bc764e045a96;
 Wed, 20 Feb 2019 11:58:22 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 792FBF2039;
 Wed, 20 Feb 2019 12:58:18 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id j5izooUkkQ4c; Wed, 20 Feb 2019 12:58:18 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 40D3EF2007
 for <minios-devel@lists.xenproject.org>; Wed, 20 Feb 2019 12:58:16 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 20 Feb 2019 12:58:16
 +0100
To: <minios-devel@lists.xenproject.org>
References: <20190129031056.142151-1-justin.he@arm.com>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <cfcb66df-31a9-3534-1da7-62d82ece539c@neclab.eu>
Date: Wed, 20 Feb 2019 12:58:15 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190129031056.142151-1-justin.he@arm.com>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCHv5 00/23] Follow up patches for
 Arm64 support series#1/5
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gSmlhIEhlLAoKVGhpcyBwYXRjaCBkb2VzIG5vdCBhcHBseSBjbGVhbmx5LiBPbiB0aGUg
cGF0Y2gKInBsYXQvY29tbW9uOiBNb3ZlIGdsb2JhbCB2YXJpYWJsZXMgZGVmaW5lZCBpbiBsaW5r
IHNjcmlwdHMgdG8gYSBoZWFkZXIiCnRoZXJlIGlzIGEgY29uZmxpY3Qgb24KcGxhdC9rdm0veDg2
L3NldHVwLmMKClBsZWFzZSBjYW4geW91IHJlYmFzZSB5b3VyIGNoYW5nZXMgb24gdGhlIGxhdGVz
dCBjaGFuZ2VzIGZyb20gdGhlIHN0YWdpbmcuCgpUaGFua3MgJiBSZWdhcmRzClNoYXJhbgoKCk9u
IDEvMjkvMTkgNDoxMCBBTSwgSmlhIEhlIHdyb3RlOgo+IFRoaXMgc2VyaWVzIGFkZHJlc3MgZm9s
bG93aW5nIGNvbW1lbnRzOgo+IDAxOiBSZW1vdmUgdGhlIGNoZWNrIG9mICctLWVuYWJsZS1kZWZh
dWx0LXBpZScgaW4gTWFrZWZpbGUudWssCj4gMDI6IFVzZSBtYWNyby1lZCBoZWxwZXIgdG8gc2lt
cGxpZnkgaW9yZWdfcmVhZC93cml0ZSwKPiAwMzogVXNlIHRoZSBzYW1lIGRlY2xhcmF0aW9uIGZv
ciBfdGV4dCBhbmQgX2VuZCwKPiAwNDogQWRkcmVzcyBjb21tZW50cyBmb3IgRC1DYWNoZSBvcGVy
YXRpb24gZnVuY3Rpb24sCj4gMDU6IEdldCB2aXJ0dWFsIGFkZHJlc3MgYml0cyBmcm9tIGlkX2Fh
NjRtbWZyMF9lbDEuUEFSYW5nZSwKPiAwNjogRW5zdXJlIHN0YWNrIGFsaWdubWVudCBmb3IgZXhj
ZXB0aW9ucyBmcm9tIEVMMSwKPiAwNzogSW52YWxpZGF0ZSBELUNhY2hlIGZvciBtb2RpZmllZCBh
cmVhIG9ubHksCj4gMDg6IERpc2FibGUgRC1DYWNoZSBiZWZvcmUgZG9pbmcgYW55IGNoYW5nZSwK
PiAwOTogQ2FsY3VsYXRlIEwzIHRhYmxlIGFuZCBwYWdlIHRhYmxlIHNpemUgYnkgaW1hZ2Ugc2l6
ZSwKPiAxMDogUmVtb3ZlIGEgLVdzdHJpbmdvcC1vdmVyZmxvdyB3YXJuaW5nIGZvciBzdHJuY3B5
LAo+IDExOiBSZW1vdmUgdXNlbGVzcyBibGFuayBsaW5lLAo+IAo+IFNvbWUgY29tbWVudHMgdGhh
dCBoYXZlbid0IGJlZW4gYWRkcmVzc2VkOgo+IDAxOiBDaGVjayB0aGUgTUlEUiBhbmQgYXZvaWQg
dGhlIGVycmF0dW0gb24gYWZmZWN0ZWQgcGxhdGZvcm0KPiAgICAgICB2aWEgYW4gYWx0ZXJuYXRp
dmUgb3IganVtcCB0YWJsZS4gLS0gVGhpcyBlcnJldGEgZnJhbWV3b3JrCj4gICAgICAgaXMgbm90
IG9ubHkgZm9yIEFybSBidXQgYWxzbyBmb3IgeDg2LiBJIHRoaW5rIHdlJ2QgYmV0dGVyCj4gICAg
ICAgdG8gZGlzY3VzcyBpbiBjb21tdW5pdHkuCj4gMDI6IEVuYWJsZSBGSUZPIHN1cHBvcnQgZm9y
IFBMMDExLgo+IDAzOiBDb21wYXJlIHRoZSBwb2ludGVycyBvZiBkaWZmZXJlbnQgdHlwZSBpcyBi
ZWhhdmlvdXIgdW5kZWZpbmVkCj4gCj4gSWYgSSBmb3Jnb3QgYW55dGhpbmcgcGxlYXNlIHJlbWlu
ZCBtZS4KPiAKPiBZb3UgY2FuIGdldCB0aGUgMXN0IHNlcmllcyBieToKPiBnaXQgY2xvbmUgaHR0
cHM6Ly9naXRodWIuY29tL2hlamlhbmV0L1VuaWtyYWZ0X2FybTY0LmdpdCAtYiBcCj4gCXdlaV8x
c3Rfc2VyaWVzX3Y1Cj4gCj4gLS0tCj4gdjQgLT4gdjU6IGZpeCBjb21waWxhdGlvbiBlcnJvcgo+
IHYzIC0+IHY0Ogo+ICAgIDEuIERyb3AgMDQgYW5kIDI0IHBhdGNoZXMgaW4gdjMuIHBhdGNoIDA0
IGlzIGdjYyBjb21waWxlcgo+ICAgIG9wdGltaXphdGlvbiByZWxhdGVkLCBub3QgYSBibG9ja2lu
ZyBpc3N1ZS4gVGhlIHJlc29sdXRpb24gaXMKPiAgICB1bmRlciBkaXNjdXNzaW9uLiBQYXRjaCAy
NCBpcyBub3QgY29uY2VybmVkIGJ5IFNoYXJhbi4KPiAgICAyLiBSZXN0b3JlIHgxOCx4MTkgYWZ0
ZXIgdXNpbmcgdGhlbS4KPiAgICAzLiBGaXggSU1BR0VfUk9VTkRVUF9TSElGVCBmcm9tIDIwIHRv
IDIxLgo+ICAgIDQuIGxvdHMgb2YgY2hlY2twYXRjaCB3YXJuaW5nLgo+IHYyIC0+IHYzOiBSZWJh
c2UgdG8gdGhlIGxhdGVzdCB1cHN0cmVhbSBiYXNlLgo+IAo+IHYxIC0+IHYyOgo+ICAgIDEuIEFk
ZCBVUkwgbGluayBmb3IgIlVzZSBtYWNyby1lZCBoZWxwZXIgdG8gc2ltcGxpZnkgaW9yZWdfcmVh
ZC93cml0ZSIsCj4gICAgMi4gSW52YWxpZGF0ZSAmIGNsZWFuIENhY2hlIGZvciBtZW1vcnkgdGhh
dCB3b3VsZCBiZSB1c2VkLAo+ICAgIDMuIEltcHJvdmUgY29kZSBhbmQgY29tbWl0IGNvbW1lbnRz
IGZvciBjYWxjdWxhdGUgcGFnZWJhYmxlIHNpemUsCj4gICAgNC4gVXNlIG1hY3JvcyB0byByZXBs
YWNlIGhhcmRjb2RlIHZhbHVlcywKPiAgICA1LiBVc2UgbHNyL2xzbCB0byBzaW1wbGlmeSAyTUIg
cm91bmQgdXAsCj4gICAgNi4gRG8gb2JmdXNjYXRlcyBhcml0aG1ldGljIGZvciBrZXJuZWwgaW1h
Z2Ugc3ltYm9scywKPiAgICA3LiBDbGVhbiB1cCBrZXJuZWwgaW1hZ2Ugc3ltYm9scyBmb3IgQyBm
aWxlcy4KPiAKPiBKaWEgSGUgKDIzKToKPiAgICBidWlsZDogUmVtb3ZlIHRoZSBjaGVjayBvZiAn
LS1lbmFibGUtZGVmYXVsdC1waWUnIGluIE1ha2VmaWxlLnVrCj4gICAgcGxhdC9pbmNsdWRlOiBV
c2UgbWFjcm8tZWQgaGVscGVyIHRvIHNpbXBsaWZ5IGlvcmVnX3JlYWQvd3JpdGUgZm9yCj4gICAg
ICBBcm02NAo+ICAgIHBsYXQvY29tbW9uOiBNb3ZlIGdsb2JhbCB2YXJpYWJsZXMgZGVmaW5lZCBp
biBsaW5rIHNjcmlwdHMgdG8gYSBoZWFkZXIKPiAgICBwbGF0OiBDbGVhbiB1cCBrZXJuZWwgaW1h
Z2Ugc3ltYm9scwo+ICAgIHBsYXQvY29tbW9uOiBSZW1vdmUgZWFybHljbG9iZXJyIGZyb20gU1lT
UkVHX1JFQUQzMiBmb3IgQXJtNjQKPiAgICBwbGF0L2NvbW1vbjogQ2xlYW4gYW5kIGludmFsaWRh
dGUgRC1DYWNoZSBvbmx5IHdoZW4gYm9vdCBmb3IgQXJtNjQKPiAgICBwbGF0L2NvbW1vbjogVXNl
IGNvcnJlY3QgZHNiIG9wZXJhdGlvbiBmbGFnIGZvciBBcm02NAo+ICAgIHBsYXQvY29tbW9uOiBB
ZGQgcmVmZXJyZWQgc291cmNlIGNvZGUgVVJMIGZvciBjYWNoZSBvcGVyYXRpb24KPiAgICBwbGF0
L2t2bTogQ29ycmVjdCBpbnZhbGlkIGluZGVudCBjaGFyYWN0ZXIgZm9yIEFybTY0Cj4gICAgcGxh
dC9rdm06IEdldCBWSVJUX0JJVFMgZnJvbSBpZF9hYTY0bW1mcjBfZWwxLlBBUmFuZ2UgZm9yIEFy
bTY0Cj4gICAgYXJjaC9pbmNsdWRlOiBBZGQgYSBfcmVncyBtZW1iZXIgdG8gc2F2ZSBvcmlnaWFs
IHN0YWNrIHBvaW50ZXIKPiAgICBwbGF0L2t2bTogQWRkIF9fVFJBUF9TVEFDS19TSVpFIGZvciBz
dGFjayBwb2ludGVyIHdoaWxlIGV4aXRpbmcgdHJhcAo+ICAgIHBsYXQva3ZtOiBSZW1vdmUgcmVk
dW5kYW50IHNwYWNlIHdoaWxlIGVudGVyaW5nIHRyYXAgZm9yIEFybQo+ICAgIHBsYXQva3ZtOiBG
b3JjZSBhbGlnbiB0aGUgc3RhY2sgcG9pbnRlciBmb3IgQXJtNjQgRUwxIGV4Y2VwdGlvbnMKPiAg
ICBwbGF0L2t2bTogUmVuYW1lIHBhZ2V0YWJsZS5TIHRvIHBhZ2V0YWJsZTY0LlMgZm9yIEFybTY0
Cj4gICAgcGxhdC9rdm06IEludmFsaWRhdGUgRC1DYWNoZSB0aGF0IG1heSBoYXZlIGJlZW4gbW9k
aWZpZWQgZm9yIEFybTY0Cj4gICAgcGxhdC9rdm06IGFybTY0OiBDbGVhciBwYWdldGFibGUgbWVt
b3J5IHdpdGggYm9vdCBzdGFjawo+ICAgIHBsYXQva3ZtOiBhcm02NDogQ2FsY3VsYXRlIHBhZ2V0
YWJsZSBzaXplIGR5bmFtaWNhbGx5IGJ5IGltYWdlIHNpemUKPiAgICBwbGF0L2t2bTogYXJtNjQ6
IEJ1aWxkIEwzIHBhZ2UgdGFibGUgZm9yIHJhbmdlIGdyZWF0ZXIgdGhhbiAyTUIKPiAgICBwbGF0
L2t2bTogYXJtNjQ6IFN1cHBvcnQgYnVpbGQgTDMgdGFibGUgZm9yIGxhcmdlIGltYWdlIHNpemUK
PiAgICBwbGF0L2t2bTogYXJtNjQ6IFJlbW92ZSBuZWVkbGVzcyBzZW1pY29sb25zIGluIGFzc2Vt
Ymx5Cj4gICAgcGxhdC9rdm06IGFybTY0OiBFbnN1cmUgdGhlcmUgaXMgbm8gc3RhbGwgZGF0YSBp
biBjYWNoZSB3aGVuIGJvb3QKPiAgICBwbGF0L2t2bTogYXJtNjQ6IFJlbW92ZSBzdXBlcmZsdW91
cyBibGFuayBsaW5lCj4gCj4gICBNYWtlZmlsZS51ayAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgICA4ICstCj4gICBhcmNoL2FybS9hcm02NC9pbmNsdWRlL3VrL2FzbS9sY3B1Lmgg
ICAgICAgIHwgIDE2ICsrLQo+ICAgcGxhdC9jb21tb24vYXJtL2NhY2hlNjQuUyAgICAgICAgICAg
ICAgICAgICB8ICAzMSArKy0tLS0KPiAgIHBsYXQvY29tbW9uL2luY2x1ZGUvYXJtL2FybTY0L2Nw
dS5oICAgICAgICAgfCAgNTggKysrKy0tLS0tLQo+ICAgcGxhdC9jb21tb24vaW5jbHVkZS9hcm0v
YXJtNjQvY3B1X2RlZnMuaCAgICB8ICAxNiArKy0KPiAgIHBsYXQvY29tbW9uL2luY2x1ZGUvc2Vj
dGlvbnMuaCAgICAgICAgICAgICAgfCAxMTAgKysrKysrKysrKysrKysrKysrKwo+ICAgcGxhdC9r
dm0vTWFrZWZpbGUudWsgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQo+ICAgcGxhdC9r
dm0vYXJtL2VudHJ5NjQuUyAgICAgICAgICAgICAgICAgICAgICB8ICA3NyArKysrKysrKystLS0t
Cj4gICBwbGF0L2t2bS9hcm0vZXhjZXB0aW9ucy5TICAgICAgICAgICAgICAgICAgIHwgIDczICsr
KysrKysrKystLS0KPiAgIHBsYXQva3ZtL2FybS97cGFnZXRhYmxlLlMgPT4gcGFnZXRhYmxlNjQu
U30gfCAxMTUgKysrKysrKysrKysrKy0tLS0tLS0KPiAgIHBsYXQva3ZtL2FybS9zZXR1cC5jICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgMTIgKy0KPiAgIHBsYXQva3ZtL2luY2x1ZGUva3ZtLWFy
bS9hcm02NC9tbS5oICAgICAgICAgfCAgMTQgKystCj4gICBwbGF0L2t2bS9tZW1vcnkuYyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgIDIzICsrLS0KPiAgIHBsYXQva3ZtL3g4Ni9zZXR1cC5j
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDYgKy0KPiAgIHBsYXQveGVuL2FybS9zZXR1cC5j
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDYgKy0KPiAgIHBsYXQveGVuL2luY2x1ZGUveGVu
LWFybS9tbS5oICAgICAgICAgICAgICAgfCAgIDMgKy0KPiAgIHBsYXQveGVuL2luY2x1ZGUveGVu
LXg4Ni9tbS5oICAgICAgICAgICAgICAgfCAgMjEgKystLQo+ICAgcGxhdC94ZW4vbWVtb3J5LmMg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyMiArKy0tCj4gICBwbGF0L3hlbi94ODYvbW0u
YyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE3ICsrLQo+ICAgcGxhdC94ZW4veDg2L3Nl
dHVwLmMgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQo+ICAgMjAgZmlsZXMgY2hhbmdl
ZCwgNDE5IGluc2VydGlvbnMoKyksIDIxMyBkZWxldGlvbnMoLSkKPiAgIGNyZWF0ZSBtb2RlIDEw
MDY0NCBwbGF0L2NvbW1vbi9pbmNsdWRlL3NlY3Rpb25zLmgKPiAgIHJlbmFtZSBwbGF0L2t2bS9h
cm0ve3BhZ2V0YWJsZS5TID0+IHBhZ2V0YWJsZTY0LlN9ICg4NCUpCj4gCgpfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBs
aXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnBy
b2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Feb 20 13:34:37 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 20 Feb 2019 13:34:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gwS1E-00020u-Th; Wed, 20 Feb 2019 13:34:36 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=MYmH=Q3=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1gwS1D-00020o-Vy
 for minios-devel@lists.xen.org; Wed, 20 Feb 2019 13:34:36 +0000
X-Inumbo-ID: 41717c7f-3514-11e9-bc90-bc764e045a96
Received: from queen.nlehd.de (unknown [195.37.154.80])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id 41717c7f-3514-11e9-bc90-bc764e045a96;
 Wed, 20 Feb 2019 13:34:32 +0000 (UTC)
Received: from c414.ant-net (c414.ant-net [192.168.0.156])
 by queen.nlehd.de (Postfix) with ESMTP id 8F00640B28;
 Wed, 20 Feb 2019 14:34:03 +0100 (CET)
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: minios-devel@lists.xen.org
Date: Wed, 20 Feb 2019 14:34:02 +0100
Message-Id: <20190220133402.32619-1-simon.kuenzer@neclab.eu>
X-Mailer: git-send-email 2.11.0
Subject: [Minios-devel] [UNIKRAFT PATCH] lib/vfscore: Introduce
 `vfscore_put_file`
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Simon Kuenzer <simon.kuenzer@neclab.eu>, yuri.volchkov@neclab.eu,
 sharan.santhanam@neclab.eu
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

QXMgY291bnRlcnBhcnQgdG8gYHZmc2NvcmVfZ2V0X2ZpbGVgLCB3ZSBleHBvcnQgYHZmc2NvcmVf
cHV0X2ZpbGVgCmFzIGEgd2F5IHRvIHJlbGVhc2UgdGhlIHJlZmNvdW50IG9uIGEgZmlsZS4KClNp
Z25lZC1vZmYtYnk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1PgotLS0K
IGxpYi92ZnNjb3JlL2V4cG9ydHN5bXMudWsgICAgICAgICAgfCAxICsKIGxpYi92ZnNjb3JlL2Zk
LmMgICAgICAgICAgICAgICAgICAgfCA1ICsrKysrCiBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2Nv
cmUvZmlsZS5oIHwgMSArCiAzIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKQoKZGlmZiAt
LWdpdCBhL2xpYi92ZnNjb3JlL2V4cG9ydHN5bXMudWsgYi9saWIvdmZzY29yZS9leHBvcnRzeW1z
LnVrCmluZGV4IDEwZmVkODA2Li5lMmFmYWZhNyAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvZXhw
b3J0c3ltcy51aworKysgYi9saWIvdmZzY29yZS9leHBvcnRzeW1zLnVrCkBAIC0yLDYgKzIsNyBA
QCB2ZnNjb3JlX2FsbG9jX2ZkCiB2ZnNjb3JlX3B1dF9mZAogdmZzY29yZV9pbnN0YWxsX2ZkCiB2
ZnNjb3JlX2dldF9maWxlCit2ZnNjb3JlX3B1dF9maWxlCiBjbG9zZQogd3JpdGUKIHJlYWQKZGlm
ZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2ZkLmMgYi9saWIvdmZzY29yZS9mZC5jCmluZGV4IDVhYmVk
OTY5Li4xMTFiMDIyOSAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvZmQuYworKysgYi9saWIvdmZz
Y29yZS9mZC5jCkBAIC0xMzMsNiArMTMzLDExIEBAIGV4aXQ6CiAJcmV0dXJuIHJldDsKIH0KIAor
dm9pZCB2ZnNjb3JlX3B1dF9maWxlKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZpbGUpCit7CisJZmRy
b3AoZmlsZSk7Cit9CisKIGludCBmZ2V0KGludCBmZCwgc3RydWN0IHZmc2NvcmVfZmlsZSAqKm91
dF9mcCkKIHsKIAlpbnQgcmV0ID0gMDsKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUv
dmZzY29yZS9maWxlLmggYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZmlsZS5oCmluZGV4
IDdmNDVjYTc4Li44MDg0NWI3OSAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNj
b3JlL2ZpbGUuaAorKysgYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZmlsZS5oCkBAIC02
NSw2ICs2NSw3IEBAIGludCB2ZnNjb3JlX2FsbG9jX2ZkKHZvaWQpOwogdm9pZCB2ZnNjb3JlX3B1
dF9mZChpbnQgZmQpOwogaW50IHZmc2NvcmVfaW5zdGFsbF9mZChpbnQgZmQsIHN0cnVjdCB2ZnNj
b3JlX2ZpbGUgKmZpbGUpOwogc3RydWN0IHZmc2NvcmVfZmlsZSAqdmZzY29yZV9nZXRfZmlsZShp
bnQgZmQpOwordm9pZCB2ZnNjb3JlX3B1dF9maWxlKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZpbGUp
OwogCiAvKgogICogRmlsZSBkZXNjcmlwdG9ycyByZWZlcmVuY2UgY291bnQKLS0gCjIuMTEuMAoK
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1k
ZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBz
Oi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Feb 20 13:39:25 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 20 Feb 2019 13:39:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gwS5s-0002CA-KT; Wed, 20 Feb 2019 13:39:24 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=MYmH=Q3=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1gwS5r-0002C4-FS
 for minios-devel@lists.xen.org; Wed, 20 Feb 2019 13:39:23 +0000
X-Inumbo-ID: edc41be4-3514-11e9-bc90-bc764e045a96
Received: from queen.nlehd.de (unknown [195.37.154.80])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id edc41be4-3514-11e9-bc90-bc764e045a96;
 Wed, 20 Feb 2019 13:39:21 +0000 (UTC)
Received: from c414.ant-net (c414.ant-net [192.168.0.156])
 by queen.nlehd.de (Postfix) with ESMTP id C40D740B28;
 Wed, 20 Feb 2019 14:38:52 +0100 (CET)
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: minios-devel@lists.xen.org
Date: Wed, 20 Feb 2019 14:38:51 +0100
Message-Id: <20190220133851.3347-1-simon.kuenzer@neclab.eu>
X-Mailer: git-send-email 2.11.0
Subject: [Minios-devel] [UNIKRAFT/LWIP PATCH v2] sockets: Adopt to updated
 vfscore
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Simon Kuenzer <simon.kuenzer@neclab.eu>, sharan.santhanam@neclab.eu
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

QWRvcHRzIHRoZSBzb2NrZXRzIGdsdWUgaW1wbGVtZW50YXRpb24gdG8gdGhlIHVwZGF0ZWQgdmZz
Y29yZSBsaWJyYXJ5LgoKU2lnbmVkLW9mZi1ieTogU2ltb24gS3VlbnplciA8c2ltb24ua3Vlbnpl
ckBuZWNsYWIuZXU+Ci0tLQogaW5jbHVkZS9sd2lwb3B0cy5oIHwgIDEwICsrKysKIHNvY2tldHMu
YyAgICAgICAgICB8IDE2MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0t
LS0tLS0tLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAxMjUgaW5zZXJ0aW9ucygrKSwgNDUgZGVs
ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9sd2lwb3B0cy5oIGIvaW5jbHVkZS9sd2lw
b3B0cy5oCmluZGV4IGM5NGMyM2QuLmM3MmMxNjEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbHdpcG9w
dHMuaAorKysgYi9pbmNsdWRlL2x3aXBvcHRzLmgKQEAgLTE5NCw2ICsxOTQsMTYgQEAgdm9pZCBz
eXNfZnJlZSh2b2lkICpwdHIpOwogI2RlZmluZSBGRF9TRVQKICNlbmRpZgogCisvKiBTdG9wIGx3
aXAgdG8gcHJvdmlkZSBpY292ZWMgKi8KKyNpbmNsdWRlIDxzeXMvdWlvLmg+CisKKy8qCisgKiBX
ZSBuZWVkIHRvIHN0b3AgbHdpcCBpbnRyb2R1Y2luZyBgc3RydWN0IGlvdmVjYCBiZWNhdXNlIGl0
IGlzIHByb3ZpZGVkIGJ5CisgKiBvdXIgbGliYyBhbHJlYWR5LiBUaGUgb25seSB3YXkgbHdpcCBh
bGxvd3MgdXMgdG8gZG8gdGhpcyBpcyB0byBkZWZpbmUgaW92ZWMKKyAqIGFzIGlvdmVjLiBUaGlz
IGtlZXBzIGRlcGVuZGluZyBkZWZpbml0aW9ucyBvZiBsd2lwIHN0aWxsIHdvcmtpbmcuCisgKi8K
KyNkZWZpbmUgaW92ZWMgaW92ZWMKKwogLyoKICAqIGRpc2FibGUgQlNELXN0eWxlIHNvY2tldCBp
bnRlcmZhY2UKICAqIFdlIHdpbGwgcHJvdmlkZSB0aGUgbGF5ZXIgd2l0aCBzb2NrZXQuY3x1bmlr
cmFmdApkaWZmIC0tZ2l0IGEvc29ja2V0cy5jIGIvc29ja2V0cy5jCmluZGV4IGJkZjIxYWQuLjNh
MmFhOWUgMTAwNjQ0Ci0tLSBhL3NvY2tldHMuYworKysgYi9zb2NrZXRzLmMKQEAgLTM2LDYgKzM2
LDggQEAKIC8qIG5ldHdvcmsgc3R1YiBjYWxscyAqLwogI2luY2x1ZGUgPHN5cy90aW1lLmg+CiAj
aW5jbHVkZSA8dmZzY29yZS9maWxlLmg+CisjaW5jbHVkZSA8dmZzY29yZS9mcy5oPgorI2luY2x1
ZGUgPHZmc2NvcmUvdm5vZGUuaD4KICNpbmNsdWRlIDx1ay9hbGxvYy5oPgogI2luY2x1ZGUgPHVr
L2Vzc2VudGlhbHMuaD4KICNpbmNsdWRlIDx1ay9lcnJwdHIuaD4KQEAgLTY4LDk5ICs3MCwxNTEg
QEAgRVhJVDoKIAlyZXR1cm4gZmlsZTsKIH0KIAotc3RhdGljIGludCBzb2NrX2ZkX2FsbG9jKHN0
cnVjdCB2ZnNjb3JlX2ZvcHMgKmZvcHMsIGludCBzb2NrX2ZkKQorc3RhdGljIGludCBzb2NrX2Zk
X2FsbG9jKHN0cnVjdCB2bm9wcyAqdl9vcCwgaW50IHNvY2tfZmQpCiB7CiAJaW50IHJldCA9IDA7
CiAJaW50IHZmc19mZDsKIAlzdHJ1Y3Qgc29ja19uZXRfZmlsZSAqZmlsZSA9IE5VTEw7CisJc3Ry
dWN0IGRlbnRyeSAqc19kZW50cnk7CisJc3RydWN0IHZub2RlICpzX3Zub2RlOwogCi0JLyogQWxs
b2NhdGUgZmlsZSBkZXNjcmlwdG9yICovCisJLyogUmVzZXJ2ZSBmaWxlIGRlc2NyaXB0b3IgbnVt
YmVyICovCiAJdmZzX2ZkID0gdmZzY29yZV9hbGxvY19mZCgpOwogCWlmICh2ZnNfZmQgPCAwKSB7
CiAJCXJldCA9IC1FTkZJTEU7Ci0JCUxXSVBfREVCVUdGKFNPQ0tFVFNfREVCVUcsICgiZmFpbGVk
IHRvIGFsbG9jYXRlIHNvY2tldCBmZFxuIikpOwotCQlnb3RvIEVYSVQ7CisJCUxXSVBfREVCVUdG
KFNPQ0tFVFNfREVCVUcsCisJCQkgICAgKCJGYWlsZWQgdG8gYWxsb2NhdGUgZmlsZSBkZXNjcmlw
dG9yIG51bWJlclxuIikpOworCQlnb3RvIEVSUl9FWElUOwogCX0KIAotCWZpbGUgPSB1a19tYWxs
b2ModWtfYWxsb2NfZ2V0X2RlZmF1bHQoKSwgc2l6ZW9mKCpmaWxlKSk7CisJLyogQWxsb2NhdGUg
ZmlsZSwgZGVudHJ5LCBhbmQgdm5vZGUgKi8KKwlmaWxlID0gdWtfY2FsbG9jKHVrX2FsbG9jX2dl
dF9kZWZhdWx0KCksIDEsIHNpemVvZigqZmlsZSkpOwogCWlmICghZmlsZSkgewogCQlyZXQgPSAt
RU5PTUVNOwogCQlMV0lQX0RFQlVHRihTT0NLRVRTX0RFQlVHLAotCQkJICAgICgiZmFpbGVkIHRv
IGFsbG9jYXRlIHNvY2tldCBmZDogbm8gbWVtXG4iKSk7Ci0JCWdvdG8gVUtfTUVNX0FMTE9DX0VS
UjsKKwkJCSAgICAoIkZhaWxlZCB0byBhbGxvY2F0ZSBzb2NrZXQgZmlsZTogT3V0IG9mIG1lbW9y
eVxuIikpOworCQlnb3RvIEVSUl9NQUxMT0NfRklMRTsKKwl9CisJc19kZW50cnkgPSB1a19jYWxs
b2ModWtfYWxsb2NfZ2V0X2RlZmF1bHQoKSwgMSwgc2l6ZW9mKCpzX2RlbnRyeSkpOworCWlmICgh
c19kZW50cnkpIHsKKwkJcmV0ID0gLUVOT01FTTsKKwkJTFdJUF9ERUJVR0YoU09DS0VUU19ERUJV
RywKKwkJCSAgICAoIkZhaWxlZCB0byBhbGxvY2F0ZSBzb2NrZXQgZGVudHJ5OiBPdXQgb2YgbWVt
b3J5XG4iKSk7CisJCWdvdG8gRVJSX01BTExPQ19ERU5UUlk7CisJfQorCXNfdm5vZGUgPSB1a19j
YWxsb2ModWtfYWxsb2NfZ2V0X2RlZmF1bHQoKSwgMSwgc2l6ZW9mKCpzX3Zub2RlKSk7CisJaWYg
KCFzX3Zub2RlKSB7CisJCXJldCA9IC1FTk9NRU07CisJCUxXSVBfREVCVUdGKFNPQ0tFVFNfREVC
VUcsCisJCQkgICAgKCJGYWlsZWQgdG8gYWxsb2NhdGUgc29ja2V0IHZub2RlOiBPdXQgb2YgbWVt
b3J5XG4iKSk7CisJCWdvdG8gRVJSX01BTExPQ19WTk9ERTsKIAl9Ci0JZmlsZS0+dmZzY29yZV9m
aWxlLmZvcHMgPSBmb3BzOworCisJLyogUHV0IHRoaW5ncyB0b2dldGhlciwgYW5kIGZpbGwgb3V0
IG5lY2Vzc2FyeSBmaWVsZHMgKi8KKwlmaWxlLT52ZnNjb3JlX2ZpbGUuZmQgPSB2ZnNfZmQ7CisJ
ZmlsZS0+dmZzY29yZV9maWxlLmZfZmxhZ3MgPSBGV1JJVEUgfCBGUkVBRDsKKwlmaWxlLT52ZnNj
b3JlX2ZpbGUuZl9jb3VudCA9IDE7CisJZmlsZS0+dmZzY29yZV9maWxlLmZfZGVudHJ5ID0gc19k
ZW50cnk7CisKKwlzX2RlbnRyeS0+ZF92bm9kZSA9IHNfdm5vZGU7CisKKwlzX3Zub2RlLT52X29w
ID0gdl9vcDsKKwl1a19tdXRleF9pbml0KCZzX3Zub2RlLT52X2xvY2spOworCXNfdm5vZGUtPnZf
cmVmY250ID0gMTsKKwlzX3Zub2RlLT52X2RhdGEgPSBmaWxlOworCiAJZmlsZS0+c29ja19mZCA9
IHNvY2tfZmQ7Ci0JTFdJUF9ERUJVR0YoU09DS0VUU19ERUJVRywgKCJhbGxvY2F0ZWQgc29ja2V0
ICVkICgleClcbiIsCisJTFdJUF9ERUJVR0YoU09DS0VUU19ERUJVRywgKCJBbGxvY2F0ZWQgc29j
a2V0ICVkICgleClcbiIsCiAJCQkJICAgIGZpbGUtPnZmc2NvcmVfZmlsZS5mZCwKIAkJCQkgICAg
ZmlsZS0+c29ja19mZCkpOworCiAJLyogU3RvcmluZyB0aGUgaW5mb3JtYXRpb24gd2l0aGluIHRo
ZSB2ZnMgc3RydWN0dXJlICovCi0JdmZzY29yZV9pbnN0YWxsX2ZkKHZmc19mZCwgJmZpbGUtPnZm
c2NvcmVfZmlsZSk7Ci0JcmV0ID0gdmZzX2ZkOwotRVhJVDoKLQlyZXR1cm4gcmV0OworCXJldCA9
IHZmc2NvcmVfaW5zdGFsbF9mZCh2ZnNfZmQsICZmaWxlLT52ZnNjb3JlX2ZpbGUpOworCWlmIChy
ZXQpIHsKKwkJTFdJUF9ERUJVR0YoU09DS0VUU19ERUJVRywKKwkJCSAgICAoIkZhaWxlZCB0byBp
bnN0YWxsIHNvY2tldCBmZFxuIikpOworCQlnb3RvIEVSUl9WRlNfSU5TVEFMTDsKKwl9CisKKwkv
KiBSZXR1cm4gZmlsZSBkZXNjcmlwdG9yIG9mIG91ciBzb2NrZXQgKi8KKwlyZXR1cm4gdmZzX2Zk
OwogCi1VS19NRU1fQUxMT0NfRVJSOgorRVJSX1ZGU19JTlNUQUxMOgorCXVrX2ZyZWUodWtfYWxs
b2NfZ2V0X2RlZmF1bHQoKSwgc192bm9kZSk7CitFUlJfTUFMTE9DX1ZOT0RFOgorCXVrX2ZyZWUo
dWtfYWxsb2NfZ2V0X2RlZmF1bHQoKSwgc19kZW50cnkpOworRVJSX01BTExPQ19ERU5UUlk6CisJ
dWtfZnJlZSh1a19hbGxvY19nZXRfZGVmYXVsdCgpLCBmaWxlKTsKK0VSUl9NQUxMT0NfRklMRToK
IAl2ZnNjb3JlX3B1dF9mZCh2ZnNfZmQpOwotCWdvdG8gRVhJVDsKK0VSUl9FWElUOgorCVVLX0FT
U0VSVChyZXQgPCAwKTsKKwlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgaW50IHNvY2tfbmV0X2Ns
b3NlKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKnZmc2NvcmVfZmlsZSkKK3N0YXRpYyBpbnQgc29ja19u
ZXRfY2xvc2Uoc3RydWN0IHZub2RlICpzX3Zub2RlLAorCQkJICBzdHJ1Y3QgdmZzY29yZV9maWxl
ICp2ZnNjb3JlX2ZpbGUgX19tYXliZV91bnVzZWQpCiB7CiAJaW50IHJldCA9IDA7CiAJc3RydWN0
IHNvY2tfbmV0X2ZpbGUgKmZpbGUgPSBOVUxMOwogCi0JZmlsZSA9IF9fY29udGFpbmVyb2YodmZz
Y29yZV9maWxlLCBzdHJ1Y3Qgc29ja19uZXRfZmlsZSwgdmZzY29yZV9maWxlKTsKLQotCUxXSVBf
REVCVUdGKFNPQ0tFVFNfREVCVUcsICgiY2xvc2UgJWQgKCV4KVxuIiwKKwlmaWxlID0gc192bm9k
ZS0+dl9kYXRhOworCUxXSVBfREVCVUdGKFNPQ0tFVFNfREVCVUcsICgiJXMgZmQ6JWQgbHdpcF9m
ZDolZFxuIiwKKwkJCQkgICAgX19mdW5jX18sCiAJCQkJICAgIGZpbGUtPnZmc2NvcmVfZmlsZS5m
ZCwKIAkJCQkgICAgZmlsZS0+c29ja19mZCkpOwogCisJVUtfQVNTRVJUKHZmc2NvcmVfZmlsZS0+
Zl9kZW50cnktPmRfdm5vZGUgPT0gc192bm9kZSk7CisJVUtfQVNTRVJUKHNfdm5vZGUtPnZfcmVm
Y250ID09IDEpOworCiAJLyogQ2xvc2UgYW5kIHJlbGVhc2UgdGhlIGx3aXAgc29ja2V0ICovCiAJ
cmV0ID0gbHdpcF9jbG9zZShmaWxlLT5zb2NrX2ZkKTsKLQkvKiBSZWxlYXNlIHRoZSBmaWxlIGRl
c2NyaXB0b3IgKi8KKwkvKiBSZWxlYXNlIHRoZSBmaWxlIGRlc2NyaXB0b3IgbnVtYmVyICovCiAJ
dmZzY29yZV9wdXRfZmQoZmlsZS0+dmZzY29yZV9maWxlLmZkKTsKLQkvKiBGcmVlIHRoZSBzb2Nr
IG5ldCBzdHJ1Y3R1cmUgKi8KKwkvKiBGcmVlIHNvY2tldCB2bm9kZSAqLworCXVrX2ZyZWUodWtf
YWxsb2NfZ2V0X2RlZmF1bHQoKSwgZmlsZS0+dmZzY29yZV9maWxlLmZfZGVudHJ5LT5kX3Zub2Rl
KTsKKwkvKiBGcmVlIHNvY2tldCBkZW50cnkgKi8KKwl1a19mcmVlKHVrX2FsbG9jX2dldF9kZWZh
dWx0KCksIGZpbGUtPnZmc2NvcmVfZmlsZS5mX2RlbnRyeSk7CisJLyogRnJlZSBzb2NrZXQgZmls
ZSAqLwogCXVrX2ZyZWUodWtfYWxsb2NfZ2V0X2RlZmF1bHQoKSwgZmlsZSk7CiAJcmV0dXJuIHJl
dDsKIH0KIAotc3RhdGljIHNzaXplX3Qgc29ja19uZXRfd3JpdGUoc3RydWN0IHZmc2NvcmVfZmls
ZSAqdmZzY29yZV9maWxlLAotCQkJICAgICAgY29uc3Qgdm9pZCAqYnVmLCBzaXplX3QgY291bnQp
CitzdGF0aWMgc3NpemVfdCBzb2NrX25ldF93cml0ZShzdHJ1Y3Qgdm5vZGUgKnNfdm5vZGUsCisJ
CQkgICAgICBzdHJ1Y3QgdWlvICpidWYsIGludCBpb2ZsYWcgX191bnVzZWQpCiB7CiAJaW50IHJl
dCA9IDA7CiAJc3RydWN0IHNvY2tfbmV0X2ZpbGUgKmZpbGUgPSBOVUxMOwogCi0JZmlsZSA9IF9f
Y29udGFpbmVyb2YodmZzY29yZV9maWxlLCBzdHJ1Y3Qgc29ja19uZXRfZmlsZSwKLQkJCSAgICAg
dmZzY29yZV9maWxlKTsKLQlMV0lQX0RFQlVHRihTT0NLRVRTX0RFQlVHLCAoIndyaXRlICVkICgl
eCk6JXNcbiIsCisJZmlsZSA9IHNfdm5vZGUtPnZfZGF0YTsKKwlMV0lQX0RFQlVHRihTT0NLRVRT
X0RFQlVHLCAoIiVzIGZkOiVkIGx3aXBfZmQ6JWRcbiIsCisJCQkJICAgIF9fZnVuY19fLAogCQkJ
CSAgICBmaWxlLT52ZnNjb3JlX2ZpbGUuZmQsCi0JCQkJICAgIGZpbGUtPnNvY2tfZmQsCi0JCQkJ
ICAgIChjaGFyICopIGJ1ZikpOwotCXJldCA9IGx3aXBfd3JpdGUoZmlsZS0+c29ja19mZCwgYnVm
LCBjb3VudCk7CisJCQkJICAgIGZpbGUtPnNvY2tfZmQpKTsKKwlyZXQgPSBsd2lwX3dyaXRldihm
aWxlLT5zb2NrX2ZkLCBidWYtPnVpb19pb3YsIGJ1Zi0+dWlvX2lvdmNudCk7CiAJcmV0dXJuIHJl
dDsKIH0KIAotc3RhdGljIHNzaXplX3Qgc29ja19uZXRfcmVhZChzdHJ1Y3QgdmZzY29yZV9maWxl
ICp2ZnNjb3JlX2ZpbGUsIHZvaWQgKmJ1ZiwKLQkJCSAgICBzaXplX3QgY291bnQpCitzdGF0aWMg
c3NpemVfdCBzb2NrX25ldF9yZWFkKHN0cnVjdCB2bm9kZSAqc192bm9kZSwKKwkJCSAgICAgc3Ry
dWN0IHZmc2NvcmVfZmlsZSAqdmZzY29yZV9maWxlIF9fdW51c2VkLAorCQkJICAgICBzdHJ1Y3Qg
dWlvICpidWYsIGludCBpb2ZsYWcgX191bnVzZWQpCiB7CiAJaW50IHJldCA9IDA7CiAJc3RydWN0
IHNvY2tfbmV0X2ZpbGUgKmZpbGUgPSBOVUxMOwogCi0JZmlsZSA9IF9fY29udGFpbmVyb2YodmZz
Y29yZV9maWxlLCBzdHJ1Y3Qgc29ja19uZXRfZmlsZSwKLQkJCSAgICAgdmZzY29yZV9maWxlKTsK
LQlMV0lQX0RFQlVHRihTT0NLRVRTX0RFQlVHLCAoIndyaXRlICVkICgleCk6JXNcbiIsCisJZmls
ZSA9IHNfdm5vZGUtPnZfZGF0YTsKKwlMV0lQX0RFQlVHRihTT0NLRVRTX0RFQlVHLCAoIiVzIGZk
OiVkIGx3aXBfZmQ6JWRcbiIsCisJCQkJICAgIF9fZnVuY19fLAogCQkJCSAgICBmaWxlLT52ZnNj
b3JlX2ZpbGUuZmQsCi0JCQkJICAgIGZpbGUtPnNvY2tfZmQsCi0JCQkJICAgIChjaGFyICopIGJ1
ZikpOwotCXJldCA9IGx3aXBfcmVhZChmaWxlLT5zb2NrX2ZkLCBidWYsIGNvdW50KTsKKwkJCQkg
ICAgZmlsZS0+c29ja19mZCkpOworCXJldCA9IGx3aXBfcmVhZHYoZmlsZS0+c29ja19mZCwgYnVm
LT51aW9faW92LCBidWYtPnVpb19pb3ZjbnQpOwogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBz
dHJ1Y3QgdmZzY29yZV9mb3BzIHNvY2tfbmV0X2ZvcHMgPSB7Ci0JLmNsb3NlID0gc29ja19uZXRf
Y2xvc2UsCi0JLndyaXRlID0gc29ja19uZXRfd3JpdGUsCi0JLnJlYWQgID0gc29ja19uZXRfcmVh
ZCwKK3N0YXRpYyBzdHJ1Y3Qgdm5vcHMgc29ja19uZXRfZm9wcyA9IHsKKwkudm9wX2Nsb3NlID0g
c29ja19uZXRfY2xvc2UsCisJLnZvcF93cml0ZSA9IHNvY2tfbmV0X3dyaXRlLAorCS52b3BfcmVh
ZCAgPSBzb2NrX25ldF9yZWFkLAogfTsKIAogaW50IHNvY2tldChpbnQgZG9tYWluLCBpbnQgdHlw
ZSwgaW50IHByb3RvY29sKQpAQCAtMjA5LDcgKzI2Myw3IEBAIGludCBhY2NlcHQoaW50IHMsIHN0
cnVjdCBzb2NrYWRkciAqYWRkciwgc29ja2xlbl90ICphZGRybGVuKQogCWZpbGUgPSBzb2NrX25l
dF9maWxlX2dldChzKTsKIAlpZiAoUFRSSVNFUlIoZmlsZSkpIHsKIAkJTFdJUF9ERUJVR0YoU09D
S0VUU19ERUJVRywKLQkJCSAgICAoImZhaWxlZCB0byBhY2NlcHQgaW5jb21pbmdpIGNvbm5lY3Rp
b25cbiIpKTsKKwkJCSAgICAoImZhaWxlZCB0byBhY2NlcHQgaW5jb21pbmcgY29ubmVjdGlvblxu
IikpOwogCQlyZXQgPSAtMTsKIAkJLyogU2V0dGluZyB0aGUgZXJybm8gKi8KIAkJU09DS19ORVRf
U0VUX0VSUk5PKFBUUjJFUlIoZmlsZSkpOwpAQCAtMjIyLDcgKzI3Niw3IEBAIGludCBhY2NlcHQo
aW50IHMsIHN0cnVjdCBzb2NrYWRkciAqYWRkciwgc29ja2xlbl90ICphZGRybGVuKQogCQlMV0lQ
X0RFQlVHRihTT0NLRVRTX0RFQlVHLAogCQkJICAgICgiZmFpbGVkIHRvIGFjY2VwdCBpbmNvbWlu
ZyBjb25uZWN0aW9uXG4iKSk7CiAJCXJldCA9IC0xOwotCQlnb3RvIEVYSVQ7CisJCWdvdG8gRVhJ
VF9GRFJPUDsKIAl9CiAKIAkvKiBBbGxvY2F0ZSB0aGUgZmlsZSBkZXNjcmlwdG9yIGZvciB0aGUg
YWNjZXB0ZWQgY29ubmVjdGlvbiAqLwpAQCAtMjM2LDEyICsyOTAsMTQgQEAgaW50IGFjY2VwdChp
bnQgcywgc3RydWN0IHNvY2thZGRyICphZGRyLCBzb2NrbGVuX3QgKmFkZHJsZW4pCiAJCWdvdG8g
TFdJUF9TT0NLRVRfQ0xFQU5VUDsKIAl9CiAJcmV0ID0gdmZzX2ZkOworRVhJVF9GRFJPUDoKKwl2
ZnNjb3JlX3B1dF9maWxlKCZmaWxlLT52ZnNjb3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNvdW50
ICovCiBFWElUOgogCXJldHVybiByZXQ7CiAKIExXSVBfU09DS0VUX0NMRUFOVVA6CiAJbHdpcF9j
bG9zZShzb2NrX2ZkKTsKLQlnb3RvIEVYSVQ7CisJZ290byBFWElUX0ZEUk9QOwogfQogCiBpbnQg
YmluZChpbnQgcywgY29uc3Qgc3RydWN0IHNvY2thZGRyICpuYW1lLCBzb2NrbGVuX3QgbmFtZWxl
bikKQEAgLTI2NCw4ICszMjAsMTAgQEAgaW50IGJpbmQoaW50IHMsIGNvbnN0IHN0cnVjdCBzb2Nr
YWRkciAqbmFtZSwgc29ja2xlbl90IG5hbWVsZW4pCiAJCUxXSVBfREVCVUdGKFNPQ0tFVFNfREVC
VUcsCiAJCQkgICAgKCJmYWlsZWQgdG8gYmluZCB3aXRoIHNvY2tldFxuIikpOwogCQlyZXQgPSAt
MTsKLQkJZ290byBFWElUOworCQlnb3RvIEVYSVRfRkRST1A7CiAJfQorRVhJVF9GRFJPUDoKKwl2
ZnNjb3JlX3B1dF9maWxlKCZmaWxlLT52ZnNjb3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNvdW50
ICovCiBFWElUOgogCXJldHVybiByZXQ7CiB9CkBAIC0yODYsNiArMzQ0LDcgQEAgaW50IHNodXRk
b3duKGludCBzLCBpbnQgaG93KQogCX0KIAkvKiBTaHV0ZG93biBvZiB0aGUgZGVzY3JpcHRvciAq
LwogCXJldCA9IGx3aXBfc2h1dGRvd24oZmlsZS0+c29ja19mZCwgaG93KTsKKwl2ZnNjb3JlX3B1
dF9maWxlKCZmaWxlLT52ZnNjb3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNvdW50ICovCiBFWElU
OgogCXJldHVybiByZXQ7CiB9CkBAIC0zMDMsNiArMzYyLDcgQEAgaW50IGdldHBlZXJuYW1lKGlu
dCBzLCBzdHJ1Y3Qgc29ja2FkZHIgKm5hbWUsIHNvY2tsZW5fdCAqbmFtZWxlbikKIAkJZ290byBF
WElUOwogCX0KIAlyZXQgPSBsd2lwX2dldHBlZXJuYW1lKGZpbGUtPnNvY2tfZmQsIG5hbWUsIG5h
bWVsZW4pOworCXZmc2NvcmVfcHV0X2ZpbGUoJmZpbGUtPnZmc2NvcmVfZmlsZSk7IC8qIHJlbGVh
c2UgcmVmY291bnQgKi8KIEVYSVQ6CiAJcmV0dXJuIHJldDsKIH0KQEAgLTMyMCw2ICszODAsNyBA
QCBpbnQgZ2V0c29ja25hbWUoaW50IHMsIHN0cnVjdCBzb2NrYWRkciAqbmFtZSwgc29ja2xlbl90
ICpuYW1lbGVuKQogCQlnb3RvIEVYSVQ7CiAJfQogCXJldCA9IGx3aXBfZ2V0c29ja25hbWUoZmls
ZS0+c29ja19mZCwgbmFtZSwgbmFtZWxlbik7CisJdmZzY29yZV9wdXRfZmlsZSgmZmlsZS0+dmZz
Y29yZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLwogRVhJVDoKIAlyZXR1cm4gcmV0Owog
fQpAQCAtMzM4LDYgKzM5OSw3IEBAIGludCBnZXRzb2Nrb3B0KGludCBzLCBpbnQgbGV2ZWwsIGlu
dCBvcHRuYW1lLCB2b2lkICpvcHR2YWwsIHNvY2tsZW5fdCAqb3B0bGVuKQogCQlnb3RvIEVYSVQ7
CiAJfQogCXJldCA9IGx3aXBfZ2V0c29ja29wdChmaWxlLT5zb2NrX2ZkLCBsZXZlbCwgb3B0bmFt
ZSwgb3B0dmFsLCBvcHRsZW4pOworCXZmc2NvcmVfcHV0X2ZpbGUoJmZpbGUtPnZmc2NvcmVfZmls
ZSk7IC8qIHJlbGVhc2UgcmVmY291bnQgKi8KIEVYSVQ6CiAJcmV0dXJuIHJldDsKIH0KQEAgLTM1
Nyw2ICs0MTksNyBAQCBpbnQgc2V0c29ja29wdChpbnQgcywgaW50IGxldmVsLCBpbnQgb3B0bmFt
ZSwgY29uc3Qgdm9pZCAqb3B0dmFsLAogCQlnb3RvIEVYSVQ7CiAJfQogCXJldCA9IGx3aXBfc2V0
c29ja29wdChmaWxlLT5zb2NrX2ZkLCBsZXZlbCwgb3B0bmFtZSwgb3B0dmFsLCBvcHRsZW4pOwor
CXZmc2NvcmVfcHV0X2ZpbGUoJmZpbGUtPnZmc2NvcmVfZmlsZSk7IC8qIHJlbGVhc2UgcmVmY291
bnQgKi8KIEVYSVQ6CiAJcmV0dXJuIHJldDsKIH0KQEAgLTM3NSw2ICs0MzgsNyBAQCBpbnQgY29u
bmVjdChpbnQgcywgY29uc3Qgc3RydWN0IHNvY2thZGRyICpuYW1lLCBzb2NrbGVuX3QgbmFtZWxl
bikKIAkJZ290byBFWElUOwogCX0KIAlyZXQgPSBsd2lwX2Nvbm5lY3QoZmlsZS0+c29ja19mZCwg
bmFtZSwgbmFtZWxlbik7CisJdmZzY29yZV9wdXRfZmlsZSgmZmlsZS0+dmZzY29yZV9maWxlKTsg
LyogcmVsZWFzZSByZWZjb3VudCAqLwogRVhJVDoKIAlyZXR1cm4gcmV0OwogfQpAQCAtMzkzLDYg
KzQ1Nyw3IEBAIGludCBsaXN0ZW4oaW50IHMsIGludCBiYWNrbG9nKQogCQlnb3RvIEVYSVQ7CiAJ
fQogCXJldCA9IGx3aXBfbGlzdGVuKGZpbGUtPnNvY2tfZmQsIGJhY2tsb2cpOworCXZmc2NvcmVf
cHV0X2ZpbGUoJmZpbGUtPnZmc2NvcmVfZmlsZSk7IC8qIHJlbGVhc2UgcmVmY291bnQgKi8KIEVY
SVQ6CiAJcmV0dXJuIHJldDsKIH0KQEAgLTQxMSw2ICs0NzYsNyBAQCBpbnQgcmVjdihpbnQgcywg
dm9pZCAqbWVtLCBzaXplX3QgbGVuLCBpbnQgZmxhZ3MpCiAJCWdvdG8gRVhJVDsKIAl9CiAJcmV0
ID0gbHdpcF9yZWN2KGZpbGUtPnNvY2tfZmQsIG1lbSwgbGVuLCBmbGFncyk7CisJdmZzY29yZV9w
dXRfZmlsZSgmZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLwogRVhJ
VDoKIAlyZXR1cm4gcmV0OwogfQpAQCAtNDMwLDYgKzQ5Niw3IEBAIGludCByZWN2ZnJvbShpbnQg
cywgdm9pZCAqbWVtLCBzaXplX3QgbGVuLCBpbnQgZmxhZ3MsCiAJCWdvdG8gRVhJVDsKIAl9CiAJ
cmV0ID0gbHdpcF9yZWN2ZnJvbShmaWxlLT5zb2NrX2ZkLCBtZW0sIGxlbiwgZmxhZ3MsIGZyb20s
IGZyb21sZW4pOworCXZmc2NvcmVfcHV0X2ZpbGUoJmZpbGUtPnZmc2NvcmVfZmlsZSk7IC8qIHJl
bGVhc2UgcmVmY291bnQgKi8KIEVYSVQ6CiAJcmV0dXJuIHJldDsKIH0KQEAgLTQ0OCw2ICs1MTUs
NyBAQCBpbnQgc2VuZChpbnQgcywgY29uc3Qgdm9pZCAqZGF0YXB0ciwgc2l6ZV90IHNpemUsIGlu
dCBmbGFncykKIAkJZ290byBFWElUOwogCX0KIAlyZXQgPSBsd2lwX3NlbmQoZmlsZS0+c29ja19m
ZCwgZGF0YXB0ciwgc2l6ZSwgZmxhZ3MpOworCXZmc2NvcmVfcHV0X2ZpbGUoJmZpbGUtPnZmc2Nv
cmVfZmlsZSk7IC8qIHJlbGVhc2UgcmVmY291bnQgKi8KIEVYSVQ6CiAJcmV0dXJuIHJldDsKIH0K
QEAgLTQ2Niw2ICs1MzQsNyBAQCBpbnQgc2VuZG1zZyhpbnQgcywgY29uc3Qgc3RydWN0IG1zZ2hk
ciAqbWVzc2FnZSwgaW50IGZsYWdzKQogCQlnb3RvIEVYSVQ7CiAJfQogCXJldCA9IGx3aXBfc2Vu
ZG1zZyhmaWxlLT5zb2NrX2ZkLCBtZXNzYWdlLCBmbGFncyk7CisJdmZzY29yZV9wdXRfZmlsZSgm
ZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLwogRVhJVDoKIAlyZXR1
cm4gcmV0OwogfQpAQCAtNDg1LDYgKzU1NCw3IEBAIGludCBzZW5kdG8oaW50IHMsIGNvbnN0IHZv
aWQgKmRhdGFwdHIsIHNpemVfdCBzaXplLCBpbnQgZmxhZ3MsCiAJCWdvdG8gRVhJVDsKIAl9CiAJ
cmV0ID0gbHdpcF9zZW5kdG8oZmlsZS0+c29ja19mZCwgZGF0YXB0ciwgc2l6ZSwgZmxhZ3MsIHRv
LCB0b2xlbik7CisJdmZzY29yZV9wdXRfZmlsZSgmZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVs
ZWFzZSByZWZjb3VudCAqLwogRVhJVDoKIAlyZXR1cm4gcmV0OwogfQotLSAKMi4xMS4wCgoKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVs
IG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9s
aXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Feb 20 14:00:14 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 20 Feb 2019 14:00:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gwSQ1-0004ks-2V; Wed, 20 Feb 2019 14:00:13 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=F56m=Q3=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1gwSQ0-0004kn-4W
 for minios-devel@lists.xen.org; Wed, 20 Feb 2019 14:00:12 +0000
X-Inumbo-ID: d5c00436-3517-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id d5c00436-3517-11e9-bc90-bc764e045a96;
 Wed, 20 Feb 2019 14:00:10 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 76B4F104E4B;
 Wed, 20 Feb 2019 15:00:09 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id laK_8AWWQtBX; Wed, 20 Feb 2019 15:00:09 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 417FE104E36
 for <minios-devel@lists.xen.org>; Wed, 20 Feb 2019 15:00:07 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 20 Feb 2019 15:00:07
 +0100
To: Simon Kuenzer <simon.kuenzer@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190220133851.3347-1-simon.kuenzer@neclab.eu>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <81da5499-d4aa-a7fa-3ffc-2df84c338f3d@neclab.eu>
Date: Wed, 20 Feb 2019 15:00:06 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190220133851.3347-1-simon.kuenzer@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT/LWIP PATCH v2] sockets: Adopt to
 updated vfscore
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gU2ltb24sCgpUaGlzIHBhdGNoIHNlZW1zIGZpbmUuCgoKUmV2aWV3ZWQtYnk6IFNoYXJh
biBTYW50aGFuYW0gPHNoYXJhbi5zYW50aGFuYW1AbmVjbGFiLmV1PgoKVGhlcmUgaXMgYSB0eXBv
IHdoaWNoIGNhbiBiZSBmaXhlZCB3aGlsZSB1cHN0cmVhbS4gUGxlYXNlIGZpbmQgaXQgaW5saW5l
LgoKVGhhbmtzICYgUmVnYXJkcwpTaGFyYW4KCk9uIDIvMjAvMTkgMjozOCBQTSwgU2ltb24gS3Vl
bnplciB3cm90ZToKPiBBZG9wdHMgdGhlIHNvY2tldHMgZ2x1ZSBpbXBsZW1lbnRhdGlvbiB0byB0
aGUgdXBkYXRlZCB2ZnNjb3JlIGxpYnJhcnkuCj4gCj4gU2lnbmVkLW9mZi1ieTogU2ltb24gS3Vl
bnplciA8c2ltb24ua3VlbnplckBuZWNsYWIuZXU+Cj4gLS0tCj4gICBpbmNsdWRlL2x3aXBvcHRz
LmggfCAgMTAgKysrKwo+ICAgc29ja2V0cy5jICAgICAgICAgIHwgMTYwICsrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCj4gICAyIGZpbGVzIGNoYW5n
ZWQsIDEyNSBpbnNlcnRpb25zKCspLCA0NSBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEv
aW5jbHVkZS9sd2lwb3B0cy5oIGIvaW5jbHVkZS9sd2lwb3B0cy5oCj4gaW5kZXggYzk0YzIzZC4u
YzcyYzE2MSAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL2x3aXBvcHRzLmgKPiArKysgYi9pbmNsdWRl
L2x3aXBvcHRzLmgKPiBAQCAtMTk0LDYgKzE5NCwxNiBAQCB2b2lkIHN5c19mcmVlKHZvaWQgKnB0
cik7Cj4gICAjZGVmaW5lIEZEX1NFVAo+ICAgI2VuZGlmCj4gICAKCnMvaWNvdmVjL2lvdmVjLwo+
ICsvKiBTdG9wIGx3aXAgdG8gcHJvdmlkZSBpY292ZWMgKi8KPiArI2luY2x1ZGUgPHN5cy91aW8u
aD4KPiArCj4gKy8qCj4gKyAqIFdlIG5lZWQgdG8gc3RvcCBsd2lwIGludHJvZHVjaW5nIGBzdHJ1
Y3QgaW92ZWNgIGJlY2F1c2UgaXQgaXMgcHJvdmlkZWQgYnkKPiArICogb3VyIGxpYmMgYWxyZWFk
eS4gVGhlIG9ubHkgd2F5IGx3aXAgYWxsb3dzIHVzIHRvIGRvIHRoaXMgaXMgdG8gZGVmaW5lIGlv
dmVjCj4gKyAqIGFzIGlvdmVjLiBUaGlzIGtlZXBzIGRlcGVuZGluZyBkZWZpbml0aW9ucyBvZiBs
d2lwIHN0aWxsIHdvcmtpbmcuCj4gKyAqLwo+ICsjZGVmaW5lIGlvdmVjIGlvdmVjCj4gKwo+ICAg
LyoKPiAgICAqIGRpc2FibGUgQlNELXN0eWxlIHNvY2tldCBpbnRlcmZhY2UKPiAgICAqIFdlIHdp
bGwgcHJvdmlkZSB0aGUgbGF5ZXIgd2l0aCBzb2NrZXQuY3x1bmlrcmFmdAo+IGRpZmYgLS1naXQg
YS9zb2NrZXRzLmMgYi9zb2NrZXRzLmMKPiBpbmRleCBiZGYyMWFkLi4zYTJhYTllIDEwMDY0NAo+
IC0tLSBhL3NvY2tldHMuYwo+ICsrKyBiL3NvY2tldHMuYwo+IEBAIC0zNiw2ICszNiw4IEBACj4g
ICAvKiBuZXR3b3JrIHN0dWIgY2FsbHMgKi8KPiAgICNpbmNsdWRlIDxzeXMvdGltZS5oPgo+ICAg
I2luY2x1ZGUgPHZmc2NvcmUvZmlsZS5oPgo+ICsjaW5jbHVkZSA8dmZzY29yZS9mcy5oPgo+ICsj
aW5jbHVkZSA8dmZzY29yZS92bm9kZS5oPgo+ICAgI2luY2x1ZGUgPHVrL2FsbG9jLmg+Cj4gICAj
aW5jbHVkZSA8dWsvZXNzZW50aWFscy5oPgo+ICAgI2luY2x1ZGUgPHVrL2VycnB0ci5oPgo+IEBA
IC02OCw5OSArNzAsMTUxIEBAIEVYSVQ6Cj4gICAJcmV0dXJuIGZpbGU7Cj4gICB9Cj4gICAKPiAt
c3RhdGljIGludCBzb2NrX2ZkX2FsbG9jKHN0cnVjdCB2ZnNjb3JlX2ZvcHMgKmZvcHMsIGludCBz
b2NrX2ZkKQo+ICtzdGF0aWMgaW50IHNvY2tfZmRfYWxsb2Moc3RydWN0IHZub3BzICp2X29wLCBp
bnQgc29ja19mZCkKPiAgIHsKPiAgIAlpbnQgcmV0ID0gMDsKPiAgIAlpbnQgdmZzX2ZkOwo+ICAg
CXN0cnVjdCBzb2NrX25ldF9maWxlICpmaWxlID0gTlVMTDsKPiArCXN0cnVjdCBkZW50cnkgKnNf
ZGVudHJ5Owo+ICsJc3RydWN0IHZub2RlICpzX3Zub2RlOwo+ICAgCj4gLQkvKiBBbGxvY2F0ZSBm
aWxlIGRlc2NyaXB0b3IgKi8KPiArCS8qIFJlc2VydmUgZmlsZSBkZXNjcmlwdG9yIG51bWJlciAq
Lwo+ICAgCXZmc19mZCA9IHZmc2NvcmVfYWxsb2NfZmQoKTsKPiAgIAlpZiAodmZzX2ZkIDwgMCkg
ewo+ICAgCQlyZXQgPSAtRU5GSUxFOwo+IC0JCUxXSVBfREVCVUdGKFNPQ0tFVFNfREVCVUcsICgi
ZmFpbGVkIHRvIGFsbG9jYXRlIHNvY2tldCBmZFxuIikpOwo+IC0JCWdvdG8gRVhJVDsKPiArCQlM
V0lQX0RFQlVHRihTT0NLRVRTX0RFQlVHLAo+ICsJCQkgICAgKCJGYWlsZWQgdG8gYWxsb2NhdGUg
ZmlsZSBkZXNjcmlwdG9yIG51bWJlclxuIikpOwo+ICsJCWdvdG8gRVJSX0VYSVQ7Cj4gICAJfQo+
ICAgCj4gLQlmaWxlID0gdWtfbWFsbG9jKHVrX2FsbG9jX2dldF9kZWZhdWx0KCksIHNpemVvZigq
ZmlsZSkpOwo+ICsJLyogQWxsb2NhdGUgZmlsZSwgZGVudHJ5LCBhbmQgdm5vZGUgKi8KPiArCWZp
bGUgPSB1a19jYWxsb2ModWtfYWxsb2NfZ2V0X2RlZmF1bHQoKSwgMSwgc2l6ZW9mKCpmaWxlKSk7
Cj4gICAJaWYgKCFmaWxlKSB7Cj4gICAJCXJldCA9IC1FTk9NRU07Cj4gICAJCUxXSVBfREVCVUdG
KFNPQ0tFVFNfREVCVUcsCj4gLQkJCSAgICAoImZhaWxlZCB0byBhbGxvY2F0ZSBzb2NrZXQgZmQ6
IG5vIG1lbVxuIikpOwo+IC0JCWdvdG8gVUtfTUVNX0FMTE9DX0VSUjsKPiArCQkJICAgICgiRmFp
bGVkIHRvIGFsbG9jYXRlIHNvY2tldCBmaWxlOiBPdXQgb2YgbWVtb3J5XG4iKSk7Cj4gKwkJZ290
byBFUlJfTUFMTE9DX0ZJTEU7Cj4gKwl9Cj4gKwlzX2RlbnRyeSA9IHVrX2NhbGxvYyh1a19hbGxv
Y19nZXRfZGVmYXVsdCgpLCAxLCBzaXplb2YoKnNfZGVudHJ5KSk7Cj4gKwlpZiAoIXNfZGVudHJ5
KSB7Cj4gKwkJcmV0ID0gLUVOT01FTTsKPiArCQlMV0lQX0RFQlVHRihTT0NLRVRTX0RFQlVHLAo+
ICsJCQkgICAgKCJGYWlsZWQgdG8gYWxsb2NhdGUgc29ja2V0IGRlbnRyeTogT3V0IG9mIG1lbW9y
eVxuIikpOwo+ICsJCWdvdG8gRVJSX01BTExPQ19ERU5UUlk7Cj4gKwl9Cj4gKwlzX3Zub2RlID0g
dWtfY2FsbG9jKHVrX2FsbG9jX2dldF9kZWZhdWx0KCksIDEsIHNpemVvZigqc192bm9kZSkpOwo+
ICsJaWYgKCFzX3Zub2RlKSB7Cj4gKwkJcmV0ID0gLUVOT01FTTsKPiArCQlMV0lQX0RFQlVHRihT
T0NLRVRTX0RFQlVHLAo+ICsJCQkgICAgKCJGYWlsZWQgdG8gYWxsb2NhdGUgc29ja2V0IHZub2Rl
OiBPdXQgb2YgbWVtb3J5XG4iKSk7Cj4gKwkJZ290byBFUlJfTUFMTE9DX1ZOT0RFOwo+ICAgCX0K
PiAtCWZpbGUtPnZmc2NvcmVfZmlsZS5mb3BzID0gZm9wczsKPiArCj4gKwkvKiBQdXQgdGhpbmdz
IHRvZ2V0aGVyLCBhbmQgZmlsbCBvdXQgbmVjZXNzYXJ5IGZpZWxkcyAqLwo+ICsJZmlsZS0+dmZz
Y29yZV9maWxlLmZkID0gdmZzX2ZkOwo+ICsJZmlsZS0+dmZzY29yZV9maWxlLmZfZmxhZ3MgPSBG
V1JJVEUgfCBGUkVBRDsKPiArCWZpbGUtPnZmc2NvcmVfZmlsZS5mX2NvdW50ID0gMTsKPiArCWZp
bGUtPnZmc2NvcmVfZmlsZS5mX2RlbnRyeSA9IHNfZGVudHJ5Owo+ICsKPiArCXNfZGVudHJ5LT5k
X3Zub2RlID0gc192bm9kZTsKPiArCj4gKwlzX3Zub2RlLT52X29wID0gdl9vcDsKPiArCXVrX211
dGV4X2luaXQoJnNfdm5vZGUtPnZfbG9jayk7Cj4gKwlzX3Zub2RlLT52X3JlZmNudCA9IDE7Cj4g
KwlzX3Zub2RlLT52X2RhdGEgPSBmaWxlOwo+ICsKPiAgIAlmaWxlLT5zb2NrX2ZkID0gc29ja19m
ZDsKPiAtCUxXSVBfREVCVUdGKFNPQ0tFVFNfREVCVUcsICgiYWxsb2NhdGVkIHNvY2tldCAlZCAo
JXgpXG4iLAo+ICsJTFdJUF9ERUJVR0YoU09DS0VUU19ERUJVRywgKCJBbGxvY2F0ZWQgc29ja2V0
ICVkICgleClcbiIsCj4gICAJCQkJICAgIGZpbGUtPnZmc2NvcmVfZmlsZS5mZCwKPiAgIAkJCQkg
ICAgZmlsZS0+c29ja19mZCkpOwo+ICsKPiAgIAkvKiBTdG9yaW5nIHRoZSBpbmZvcm1hdGlvbiB3
aXRoaW4gdGhlIHZmcyBzdHJ1Y3R1cmUgKi8KPiAtCXZmc2NvcmVfaW5zdGFsbF9mZCh2ZnNfZmQs
ICZmaWxlLT52ZnNjb3JlX2ZpbGUpOwo+IC0JcmV0ID0gdmZzX2ZkOwo+IC1FWElUOgo+IC0JcmV0
dXJuIHJldDsKPiArCXJldCA9IHZmc2NvcmVfaW5zdGFsbF9mZCh2ZnNfZmQsICZmaWxlLT52ZnNj
b3JlX2ZpbGUpOwo+ICsJaWYgKHJldCkgewo+ICsJCUxXSVBfREVCVUdGKFNPQ0tFVFNfREVCVUcs
Cj4gKwkJCSAgICAoIkZhaWxlZCB0byBpbnN0YWxsIHNvY2tldCBmZFxuIikpOwo+ICsJCWdvdG8g
RVJSX1ZGU19JTlNUQUxMOwo+ICsJfQo+ICsKPiArCS8qIFJldHVybiBmaWxlIGRlc2NyaXB0b3Ig
b2Ygb3VyIHNvY2tldCAqLwo+ICsJcmV0dXJuIHZmc19mZDsKPiAgIAo+IC1VS19NRU1fQUxMT0Nf
RVJSOgo+ICtFUlJfVkZTX0lOU1RBTEw6Cj4gKwl1a19mcmVlKHVrX2FsbG9jX2dldF9kZWZhdWx0
KCksIHNfdm5vZGUpOwo+ICtFUlJfTUFMTE9DX1ZOT0RFOgo+ICsJdWtfZnJlZSh1a19hbGxvY19n
ZXRfZGVmYXVsdCgpLCBzX2RlbnRyeSk7Cj4gK0VSUl9NQUxMT0NfREVOVFJZOgo+ICsJdWtfZnJl
ZSh1a19hbGxvY19nZXRfZGVmYXVsdCgpLCBmaWxlKTsKPiArRVJSX01BTExPQ19GSUxFOgo+ICAg
CXZmc2NvcmVfcHV0X2ZkKHZmc19mZCk7Cj4gLQlnb3RvIEVYSVQ7Cj4gK0VSUl9FWElUOgo+ICsJ
VUtfQVNTRVJUKHJldCA8IDApOwo+ICsJcmV0dXJuIHJldDsKPiAgIH0KPiAgIAo+IC1zdGF0aWMg
aW50IHNvY2tfbmV0X2Nsb3NlKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKnZmc2NvcmVfZmlsZSkKPiAr
c3RhdGljIGludCBzb2NrX25ldF9jbG9zZShzdHJ1Y3Qgdm5vZGUgKnNfdm5vZGUsCj4gKwkJCSAg
c3RydWN0IHZmc2NvcmVfZmlsZSAqdmZzY29yZV9maWxlIF9fbWF5YmVfdW51c2VkKQo+ICAgewo+
ICAgCWludCByZXQgPSAwOwo+ICAgCXN0cnVjdCBzb2NrX25ldF9maWxlICpmaWxlID0gTlVMTDsK
PiAgIAo+IC0JZmlsZSA9IF9fY29udGFpbmVyb2YodmZzY29yZV9maWxlLCBzdHJ1Y3Qgc29ja19u
ZXRfZmlsZSwgdmZzY29yZV9maWxlKTsKPiAtCj4gLQlMV0lQX0RFQlVHRihTT0NLRVRTX0RFQlVH
LCAoImNsb3NlICVkICgleClcbiIsCj4gKwlmaWxlID0gc192bm9kZS0+dl9kYXRhOwo+ICsJTFdJ
UF9ERUJVR0YoU09DS0VUU19ERUJVRywgKCIlcyBmZDolZCBsd2lwX2ZkOiVkXG4iLAo+ICsJCQkJ
ICAgIF9fZnVuY19fLAo+ICAgCQkJCSAgICBmaWxlLT52ZnNjb3JlX2ZpbGUuZmQsCj4gICAJCQkJ
ICAgIGZpbGUtPnNvY2tfZmQpKTsKPiAgIAo+ICsJVUtfQVNTRVJUKHZmc2NvcmVfZmlsZS0+Zl9k
ZW50cnktPmRfdm5vZGUgPT0gc192bm9kZSk7Cj4gKwlVS19BU1NFUlQoc192bm9kZS0+dl9yZWZj
bnQgPT0gMSk7Cj4gKwo+ICAgCS8qIENsb3NlIGFuZCByZWxlYXNlIHRoZSBsd2lwIHNvY2tldCAq
Lwo+ICAgCXJldCA9IGx3aXBfY2xvc2UoZmlsZS0+c29ja19mZCk7Cj4gLQkvKiBSZWxlYXNlIHRo
ZSBmaWxlIGRlc2NyaXB0b3IgKi8KPiArCS8qIFJlbGVhc2UgdGhlIGZpbGUgZGVzY3JpcHRvciBu
dW1iZXIgKi8KPiAgIAl2ZnNjb3JlX3B1dF9mZChmaWxlLT52ZnNjb3JlX2ZpbGUuZmQpOwo+IC0J
LyogRnJlZSB0aGUgc29jayBuZXQgc3RydWN0dXJlICovCj4gKwkvKiBGcmVlIHNvY2tldCB2bm9k
ZSAqLwo+ICsJdWtfZnJlZSh1a19hbGxvY19nZXRfZGVmYXVsdCgpLCBmaWxlLT52ZnNjb3JlX2Zp
bGUuZl9kZW50cnktPmRfdm5vZGUpOwo+ICsJLyogRnJlZSBzb2NrZXQgZGVudHJ5ICovCj4gKwl1
a19mcmVlKHVrX2FsbG9jX2dldF9kZWZhdWx0KCksIGZpbGUtPnZmc2NvcmVfZmlsZS5mX2RlbnRy
eSk7Cj4gKwkvKiBGcmVlIHNvY2tldCBmaWxlICovCj4gICAJdWtfZnJlZSh1a19hbGxvY19nZXRf
ZGVmYXVsdCgpLCBmaWxlKTsKPiAgIAlyZXR1cm4gcmV0Owo+ICAgfQo+ICAgCj4gLXN0YXRpYyBz
c2l6ZV90IHNvY2tfbmV0X3dyaXRlKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKnZmc2NvcmVfZmlsZSwK
PiAtCQkJICAgICAgY29uc3Qgdm9pZCAqYnVmLCBzaXplX3QgY291bnQpCj4gK3N0YXRpYyBzc2l6
ZV90IHNvY2tfbmV0X3dyaXRlKHN0cnVjdCB2bm9kZSAqc192bm9kZSwKPiArCQkJICAgICAgc3Ry
dWN0IHVpbyAqYnVmLCBpbnQgaW9mbGFnIF9fdW51c2VkKQo+ICAgewo+ICAgCWludCByZXQgPSAw
Owo+ICAgCXN0cnVjdCBzb2NrX25ldF9maWxlICpmaWxlID0gTlVMTDsKPiAgIAo+IC0JZmlsZSA9
IF9fY29udGFpbmVyb2YodmZzY29yZV9maWxlLCBzdHJ1Y3Qgc29ja19uZXRfZmlsZSwKPiAtCQkJ
ICAgICB2ZnNjb3JlX2ZpbGUpOwo+IC0JTFdJUF9ERUJVR0YoU09DS0VUU19ERUJVRywgKCJ3cml0
ZSAlZCAoJXgpOiVzXG4iLAo+ICsJZmlsZSA9IHNfdm5vZGUtPnZfZGF0YTsKPiArCUxXSVBfREVC
VUdGKFNPQ0tFVFNfREVCVUcsICgiJXMgZmQ6JWQgbHdpcF9mZDolZFxuIiwKPiArCQkJCSAgICBf
X2Z1bmNfXywKPiAgIAkJCQkgICAgZmlsZS0+dmZzY29yZV9maWxlLmZkLAo+IC0JCQkJICAgIGZp
bGUtPnNvY2tfZmQsCj4gLQkJCQkgICAgKGNoYXIgKikgYnVmKSk7Cj4gLQlyZXQgPSBsd2lwX3dy
aXRlKGZpbGUtPnNvY2tfZmQsIGJ1ZiwgY291bnQpOwo+ICsJCQkJICAgIGZpbGUtPnNvY2tfZmQp
KTsKPiArCXJldCA9IGx3aXBfd3JpdGV2KGZpbGUtPnNvY2tfZmQsIGJ1Zi0+dWlvX2lvdiwgYnVm
LT51aW9faW92Y250KTsKPiAgIAlyZXR1cm4gcmV0Owo+ICAgfQo+ICAgCj4gLXN0YXRpYyBzc2l6
ZV90IHNvY2tfbmV0X3JlYWQoc3RydWN0IHZmc2NvcmVfZmlsZSAqdmZzY29yZV9maWxlLCB2b2lk
ICpidWYsCj4gLQkJCSAgICBzaXplX3QgY291bnQpCj4gK3N0YXRpYyBzc2l6ZV90IHNvY2tfbmV0
X3JlYWQoc3RydWN0IHZub2RlICpzX3Zub2RlLAo+ICsJCQkgICAgIHN0cnVjdCB2ZnNjb3JlX2Zp
bGUgKnZmc2NvcmVfZmlsZSBfX3VudXNlZCwKPiArCQkJICAgICBzdHJ1Y3QgdWlvICpidWYsIGlu
dCBpb2ZsYWcgX191bnVzZWQpCj4gICB7Cj4gICAJaW50IHJldCA9IDA7Cj4gICAJc3RydWN0IHNv
Y2tfbmV0X2ZpbGUgKmZpbGUgPSBOVUxMOwo+ICAgCj4gLQlmaWxlID0gX19jb250YWluZXJvZih2
ZnNjb3JlX2ZpbGUsIHN0cnVjdCBzb2NrX25ldF9maWxlLAo+IC0JCQkgICAgIHZmc2NvcmVfZmls
ZSk7Cj4gLQlMV0lQX0RFQlVHRihTT0NLRVRTX0RFQlVHLCAoIndyaXRlICVkICgleCk6JXNcbiIs
Cj4gKwlmaWxlID0gc192bm9kZS0+dl9kYXRhOwo+ICsJTFdJUF9ERUJVR0YoU09DS0VUU19ERUJV
RywgKCIlcyBmZDolZCBsd2lwX2ZkOiVkXG4iLAo+ICsJCQkJICAgIF9fZnVuY19fLAo+ICAgCQkJ
CSAgICBmaWxlLT52ZnNjb3JlX2ZpbGUuZmQsCj4gLQkJCQkgICAgZmlsZS0+c29ja19mZCwKPiAt
CQkJCSAgICAoY2hhciAqKSBidWYpKTsKPiAtCXJldCA9IGx3aXBfcmVhZChmaWxlLT5zb2NrX2Zk
LCBidWYsIGNvdW50KTsKPiArCQkJCSAgICBmaWxlLT5zb2NrX2ZkKSk7Cj4gKwlyZXQgPSBsd2lw
X3JlYWR2KGZpbGUtPnNvY2tfZmQsIGJ1Zi0+dWlvX2lvdiwgYnVmLT51aW9faW92Y250KTsKPiAg
IAlyZXR1cm4gcmV0Owo+ICAgfQo+ICAgCj4gLXN0YXRpYyBzdHJ1Y3QgdmZzY29yZV9mb3BzIHNv
Y2tfbmV0X2ZvcHMgPSB7Cj4gLQkuY2xvc2UgPSBzb2NrX25ldF9jbG9zZSwKPiAtCS53cml0ZSA9
IHNvY2tfbmV0X3dyaXRlLAo+IC0JLnJlYWQgID0gc29ja19uZXRfcmVhZCwKPiArc3RhdGljIHN0
cnVjdCB2bm9wcyBzb2NrX25ldF9mb3BzID0gewo+ICsJLnZvcF9jbG9zZSA9IHNvY2tfbmV0X2Ns
b3NlLAo+ICsJLnZvcF93cml0ZSA9IHNvY2tfbmV0X3dyaXRlLAo+ICsJLnZvcF9yZWFkICA9IHNv
Y2tfbmV0X3JlYWQsCj4gICB9Owo+ICAgCj4gICBpbnQgc29ja2V0KGludCBkb21haW4sIGludCB0
eXBlLCBpbnQgcHJvdG9jb2wpCj4gQEAgLTIwOSw3ICsyNjMsNyBAQCBpbnQgYWNjZXB0KGludCBz
LCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsIHNvY2tsZW5fdCAqYWRkcmxlbikKPiAgIAlmaWxlID0g
c29ja19uZXRfZmlsZV9nZXQocyk7Cj4gICAJaWYgKFBUUklTRVJSKGZpbGUpKSB7Cj4gICAJCUxX
SVBfREVCVUdGKFNPQ0tFVFNfREVCVUcsCj4gLQkJCSAgICAoImZhaWxlZCB0byBhY2NlcHQgaW5j
b21pbmdpIGNvbm5lY3Rpb25cbiIpKTsKPiArCQkJICAgICgiZmFpbGVkIHRvIGFjY2VwdCBpbmNv
bWluZyBjb25uZWN0aW9uXG4iKSk7Cj4gICAJCXJldCA9IC0xOwo+ICAgCQkvKiBTZXR0aW5nIHRo
ZSBlcnJubyAqLwo+ICAgCQlTT0NLX05FVF9TRVRfRVJSTk8oUFRSMkVSUihmaWxlKSk7Cj4gQEAg
LTIyMiw3ICsyNzYsNyBAQCBpbnQgYWNjZXB0KGludCBzLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIs
IHNvY2tsZW5fdCAqYWRkcmxlbikKPiAgIAkJTFdJUF9ERUJVR0YoU09DS0VUU19ERUJVRywKPiAg
IAkJCSAgICAoImZhaWxlZCB0byBhY2NlcHQgaW5jb21pbmcgY29ubmVjdGlvblxuIikpOwo+ICAg
CQlyZXQgPSAtMTsKPiAtCQlnb3RvIEVYSVQ7Cj4gKwkJZ290byBFWElUX0ZEUk9QOwo+ICAgCX0K
PiAgIAo+ICAgCS8qIEFsbG9jYXRlIHRoZSBmaWxlIGRlc2NyaXB0b3IgZm9yIHRoZSBhY2NlcHRl
ZCBjb25uZWN0aW9uICovCj4gQEAgLTIzNiwxMiArMjkwLDE0IEBAIGludCBhY2NlcHQoaW50IHMs
IHN0cnVjdCBzb2NrYWRkciAqYWRkciwgc29ja2xlbl90ICphZGRybGVuKQo+ICAgCQlnb3RvIExX
SVBfU09DS0VUX0NMRUFOVVA7Cj4gICAJfQo+ICAgCXJldCA9IHZmc19mZDsKPiArRVhJVF9GRFJP
UDoKPiArCXZmc2NvcmVfcHV0X2ZpbGUoJmZpbGUtPnZmc2NvcmVfZmlsZSk7IC8qIHJlbGVhc2Ug
cmVmY291bnQgKi8KPiAgIEVYSVQ6Cj4gICAJcmV0dXJuIHJldDsKPiAgIAo+ICAgTFdJUF9TT0NL
RVRfQ0xFQU5VUDoKPiAgIAlsd2lwX2Nsb3NlKHNvY2tfZmQpOwo+IC0JZ290byBFWElUOwo+ICsJ
Z290byBFWElUX0ZEUk9QOwo+ICAgfQo+ICAgCj4gICBpbnQgYmluZChpbnQgcywgY29uc3Qgc3Ry
dWN0IHNvY2thZGRyICpuYW1lLCBzb2NrbGVuX3QgbmFtZWxlbikKPiBAQCAtMjY0LDggKzMyMCwx
MCBAQCBpbnQgYmluZChpbnQgcywgY29uc3Qgc3RydWN0IHNvY2thZGRyICpuYW1lLCBzb2NrbGVu
X3QgbmFtZWxlbikKPiAgIAkJTFdJUF9ERUJVR0YoU09DS0VUU19ERUJVRywKPiAgIAkJCSAgICAo
ImZhaWxlZCB0byBiaW5kIHdpdGggc29ja2V0XG4iKSk7Cj4gICAJCXJldCA9IC0xOwo+IC0JCWdv
dG8gRVhJVDsKPiArCQlnb3RvIEVYSVRfRkRST1A7Cj4gICAJfQo+ICtFWElUX0ZEUk9QOgo+ICsJ
dmZzY29yZV9wdXRfZmlsZSgmZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3Vu
dCAqLwo+ICAgRVhJVDoKPiAgIAlyZXR1cm4gcmV0Owo+ICAgfQo+IEBAIC0yODYsNiArMzQ0LDcg
QEAgaW50IHNodXRkb3duKGludCBzLCBpbnQgaG93KQo+ICAgCX0KPiAgIAkvKiBTaHV0ZG93biBv
ZiB0aGUgZGVzY3JpcHRvciAqLwo+ICAgCXJldCA9IGx3aXBfc2h1dGRvd24oZmlsZS0+c29ja19m
ZCwgaG93KTsKPiArCXZmc2NvcmVfcHV0X2ZpbGUoJmZpbGUtPnZmc2NvcmVfZmlsZSk7IC8qIHJl
bGVhc2UgcmVmY291bnQgKi8KPiAgIEVYSVQ6Cj4gICAJcmV0dXJuIHJldDsKPiAgIH0KPiBAQCAt
MzAzLDYgKzM2Miw3IEBAIGludCBnZXRwZWVybmFtZShpbnQgcywgc3RydWN0IHNvY2thZGRyICpu
YW1lLCBzb2NrbGVuX3QgKm5hbWVsZW4pCj4gICAJCWdvdG8gRVhJVDsKPiAgIAl9Cj4gICAJcmV0
ID0gbHdpcF9nZXRwZWVybmFtZShmaWxlLT5zb2NrX2ZkLCBuYW1lLCBuYW1lbGVuKTsKPiArCXZm
c2NvcmVfcHV0X2ZpbGUoJmZpbGUtPnZmc2NvcmVfZmlsZSk7IC8qIHJlbGVhc2UgcmVmY291bnQg
Ki8KPiAgIEVYSVQ6Cj4gICAJcmV0dXJuIHJldDsKPiAgIH0KPiBAQCAtMzIwLDYgKzM4MCw3IEBA
IGludCBnZXRzb2NrbmFtZShpbnQgcywgc3RydWN0IHNvY2thZGRyICpuYW1lLCBzb2NrbGVuX3Qg
Km5hbWVsZW4pCj4gICAJCWdvdG8gRVhJVDsKPiAgIAl9Cj4gICAJcmV0ID0gbHdpcF9nZXRzb2Nr
bmFtZShmaWxlLT5zb2NrX2ZkLCBuYW1lLCBuYW1lbGVuKTsKPiArCXZmc2NvcmVfcHV0X2ZpbGUo
JmZpbGUtPnZmc2NvcmVfZmlsZSk7IC8qIHJlbGVhc2UgcmVmY291bnQgKi8KPiAgIEVYSVQ6Cj4g
ICAJcmV0dXJuIHJldDsKPiAgIH0KPiBAQCAtMzM4LDYgKzM5OSw3IEBAIGludCBnZXRzb2Nrb3B0
KGludCBzLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLCB2b2lkICpvcHR2YWwsIHNvY2tsZW5fdCAq
b3B0bGVuKQo+ICAgCQlnb3RvIEVYSVQ7Cj4gICAJfQo+ICAgCXJldCA9IGx3aXBfZ2V0c29ja29w
dChmaWxlLT5zb2NrX2ZkLCBsZXZlbCwgb3B0bmFtZSwgb3B0dmFsLCBvcHRsZW4pOwo+ICsJdmZz
Y29yZV9wdXRfZmlsZSgmZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAq
Lwo+ICAgRVhJVDoKPiAgIAlyZXR1cm4gcmV0Owo+ICAgfQo+IEBAIC0zNTcsNiArNDE5LDcgQEAg
aW50IHNldHNvY2tvcHQoaW50IHMsIGludCBsZXZlbCwgaW50IG9wdG5hbWUsIGNvbnN0IHZvaWQg
Km9wdHZhbCwKPiAgIAkJZ290byBFWElUOwo+ICAgCX0KPiAgIAlyZXQgPSBsd2lwX3NldHNvY2tv
cHQoZmlsZS0+c29ja19mZCwgbGV2ZWwsIG9wdG5hbWUsIG9wdHZhbCwgb3B0bGVuKTsKPiArCXZm
c2NvcmVfcHV0X2ZpbGUoJmZpbGUtPnZmc2NvcmVfZmlsZSk7IC8qIHJlbGVhc2UgcmVmY291bnQg
Ki8KPiAgIEVYSVQ6Cj4gICAJcmV0dXJuIHJldDsKPiAgIH0KPiBAQCAtMzc1LDYgKzQzOCw3IEBA
IGludCBjb25uZWN0KGludCBzLCBjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKm5hbWUsIHNvY2tsZW5f
dCBuYW1lbGVuKQo+ICAgCQlnb3RvIEVYSVQ7Cj4gICAJfQo+ICAgCXJldCA9IGx3aXBfY29ubmVj
dChmaWxlLT5zb2NrX2ZkLCBuYW1lLCBuYW1lbGVuKTsKPiArCXZmc2NvcmVfcHV0X2ZpbGUoJmZp
bGUtPnZmc2NvcmVfZmlsZSk7IC8qIHJlbGVhc2UgcmVmY291bnQgKi8KPiAgIEVYSVQ6Cj4gICAJ
cmV0dXJuIHJldDsKPiAgIH0KPiBAQCAtMzkzLDYgKzQ1Nyw3IEBAIGludCBsaXN0ZW4oaW50IHMs
IGludCBiYWNrbG9nKQo+ICAgCQlnb3RvIEVYSVQ7Cj4gICAJfQo+ICAgCXJldCA9IGx3aXBfbGlz
dGVuKGZpbGUtPnNvY2tfZmQsIGJhY2tsb2cpOwo+ICsJdmZzY29yZV9wdXRfZmlsZSgmZmlsZS0+
dmZzY29yZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLwo+ICAgRVhJVDoKPiAgIAlyZXR1
cm4gcmV0Owo+ICAgfQo+IEBAIC00MTEsNiArNDc2LDcgQEAgaW50IHJlY3YoaW50IHMsIHZvaWQg
Km1lbSwgc2l6ZV90IGxlbiwgaW50IGZsYWdzKQo+ICAgCQlnb3RvIEVYSVQ7Cj4gICAJfQo+ICAg
CXJldCA9IGx3aXBfcmVjdihmaWxlLT5zb2NrX2ZkLCBtZW0sIGxlbiwgZmxhZ3MpOwo+ICsJdmZz
Y29yZV9wdXRfZmlsZSgmZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAq
Lwo+ICAgRVhJVDoKPiAgIAlyZXR1cm4gcmV0Owo+ICAgfQo+IEBAIC00MzAsNiArNDk2LDcgQEAg
aW50IHJlY3Zmcm9tKGludCBzLCB2b2lkICptZW0sIHNpemVfdCBsZW4sIGludCBmbGFncywKPiAg
IAkJZ290byBFWElUOwo+ICAgCX0KPiAgIAlyZXQgPSBsd2lwX3JlY3Zmcm9tKGZpbGUtPnNvY2tf
ZmQsIG1lbSwgbGVuLCBmbGFncywgZnJvbSwgZnJvbWxlbik7Cj4gKwl2ZnNjb3JlX3B1dF9maWxl
KCZmaWxlLT52ZnNjb3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNvdW50ICovCj4gICBFWElUOgo+
ICAgCXJldHVybiByZXQ7Cj4gICB9Cj4gQEAgLTQ0OCw2ICs1MTUsNyBAQCBpbnQgc2VuZChpbnQg
cywgY29uc3Qgdm9pZCAqZGF0YXB0ciwgc2l6ZV90IHNpemUsIGludCBmbGFncykKPiAgIAkJZ290
byBFWElUOwo+ICAgCX0KPiAgIAlyZXQgPSBsd2lwX3NlbmQoZmlsZS0+c29ja19mZCwgZGF0YXB0
ciwgc2l6ZSwgZmxhZ3MpOwo+ICsJdmZzY29yZV9wdXRfZmlsZSgmZmlsZS0+dmZzY29yZV9maWxl
KTsgLyogcmVsZWFzZSByZWZjb3VudCAqLwo+ICAgRVhJVDoKPiAgIAlyZXR1cm4gcmV0Owo+ICAg
fQo+IEBAIC00NjYsNiArNTM0LDcgQEAgaW50IHNlbmRtc2coaW50IHMsIGNvbnN0IHN0cnVjdCBt
c2doZHIgKm1lc3NhZ2UsIGludCBmbGFncykKPiAgIAkJZ290byBFWElUOwo+ICAgCX0KPiAgIAly
ZXQgPSBsd2lwX3NlbmRtc2coZmlsZS0+c29ja19mZCwgbWVzc2FnZSwgZmxhZ3MpOwo+ICsJdmZz
Y29yZV9wdXRfZmlsZSgmZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAq
Lwo+ICAgRVhJVDoKPiAgIAlyZXR1cm4gcmV0Owo+ICAgfQo+IEBAIC00ODUsNiArNTU0LDcgQEAg
aW50IHNlbmR0byhpbnQgcywgY29uc3Qgdm9pZCAqZGF0YXB0ciwgc2l6ZV90IHNpemUsIGludCBm
bGFncywKPiAgIAkJZ290byBFWElUOwo+ICAgCX0KPiAgIAlyZXQgPSBsd2lwX3NlbmR0byhmaWxl
LT5zb2NrX2ZkLCBkYXRhcHRyLCBzaXplLCBmbGFncywgdG8sIHRvbGVuKTsKPiArCXZmc2NvcmVf
cHV0X2ZpbGUoJmZpbGUtPnZmc2NvcmVfZmlsZSk7IC8qIHJlbGVhc2UgcmVmY291bnQgKi8KPiAg
IEVYSVQ6Cj4gICAJcmV0dXJuIHJldDsKPiAgIH0KPiAKCl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9z
LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcv
bWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Feb 20 14:20:30 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 20 Feb 2019 14:20:30 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gwSjc-0006hX-M9; Wed, 20 Feb 2019 14:20:28 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=MYmH=Q3=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1gwSjb-0006hS-CV
 for minios-devel@lists.xen.org; Wed, 20 Feb 2019 14:20:27 +0000
X-Inumbo-ID: a9670f5e-351a-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id a9670f5e-351a-11e9-bc90-bc764e045a96;
 Wed, 20 Feb 2019 14:20:24 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 84808F2039;
 Wed, 20 Feb 2019 15:20:23 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id xHEh7ar3mNB5; Wed, 20 Feb 2019 15:20:23 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 4F976F2004
 for <minios-devel@lists.xen.org>; Wed, 20 Feb 2019 15:20:21 +0100 (CET)
Received: from PALLENE.office.hd ([169.254.1.27]) by ENCELADUS.office.hd
 ([192.168.24.52]) with mapi id 14.03.0319.002; Wed, 20 Feb 2019 15:20:20
 +0100
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: Yuri Volchkov <yuri.volchkov@neclab.eu>
Thread-Topic: [Minios-devel] [UNIKRAFT PATCH v2 1/6] lib/ramfs: initial
 import from OSv
Thread-Index: AQHUv7sP1ob9iWmSn0eNwnMeZkDWRKXovpaA
Date: Wed, 20 Feb 2019 14:20:20 +0000
Message-ID: <5C7A7D1E-3AE3-4A0B-BC09-7473CB2785E6@neclab.eu>
References: <20190208143108.27175-1-yuri.volchkov@neclab.eu>
 <20190208143108.27175-2-yuri.volchkov@neclab.eu>
In-Reply-To: <20190208143108.27175-2-yuri.volchkov@neclab.eu>
Accept-Language: en-GB, gl-ES, de-DE, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [10.1.2.186]
Content-ID: <BDA098146B9D8E448418FD1F3C7E451C@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 1/6] lib/ramfs: initial
 import from OSv
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>, Sharan
 Santhanam <Sharan.Santhanam@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

UmV2aWV3ZWQtYnk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1PgoKPiBP
biA4LiBGZWIgMjAxOSwgYXQgMTU6MzEsIFl1cmkgVm9sY2hrb3YgPHl1cmkudm9sY2hrb3ZAbmVj
bGFiLmV1PiB3cm90ZToKPiAKPiBnaXQgdGFnOiB2MC41Mi4wCj4gY29tbWl0OiAwMDI5OTE5MDQx
NGU0YzdjNWIwZjJkNzRjZDExNzYzZGFjMzRlNWI5Cj4gCj4gU2lnbmVkLW9mZi1ieTogWXVyaSBW
b2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Cj4gLS0tCj4gbGliL3JhbWZzL3JhbWZz
LmggICAgICAgIHwgIDY4ICsrKysKPiBsaWIvcmFtZnMvcmFtZnNfdmZzb3BzLmMgfCAgOTAgKysr
KysrCj4gbGliL3JhbWZzL3JhbWZzX3Zub3BzLmMgIHwgNjY5ICsrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKwo+IDMgZmlsZXMgY2hhbmdlZCwgODI3IGluc2VydGlvbnMoKykK
PiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3JhbWZzL3JhbWZzLmgKPiBjcmVhdGUgbW9kZSAxMDA2
NDQgbGliL3JhbWZzL3JhbWZzX3Zmc29wcy5jCj4gY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9yYW1m
cy9yYW1mc192bm9wcy5jCj4gCj4gZGlmZiAtLWdpdCBhL2xpYi9yYW1mcy9yYW1mcy5oIGIvbGli
L3JhbWZzL3JhbWZzLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwLi44
OGNjYmU3Mgo+IC0tLSAvZGV2L251bGwKPiArKysgYi9saWIvcmFtZnMvcmFtZnMuaAo+IEBAIC0w
LDAgKzEsNjggQEAKPiArLyoKPiArICogQ29weXJpZ2h0IChjKSAyMDA2LTIwMDcsIEtvaHN1a2Ug
T2h0YW5pCj4gKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4gKyAqCj4gKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAo+
ICsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKPiArICogYXJlIG1ldDoKPiArICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Lgo+ICsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCj4gKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCj4gKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGF1dGhvciBub3IgdGhlIG5hbWVz
IG9mIGFueSBjby1jb250cmlidXRvcnMKPiArICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCj4gKyAqICAgIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgo+ICsgKgo+ICsgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5ECj4gKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQo+ICsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQo+ICsg
KiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRQo+ICsgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAo+ICsgKiBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUwo+ICsgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikKPiArICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKPiArICogTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWQo+ICsgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCj4gKyAqIFNVQ0ggREFNQUdFLgo+ICsg
Ki8KPiArCj4gKyNpZm5kZWYgX1JBTUZTX0gKPiArI2RlZmluZSBfUkFNRlNfSAo+ICsKPiArI2lu
Y2x1ZGUgPG9zdi9wcmV4Lmg+Cj4gKwo+ICsvKiAjZGVmaW5lIERFQlVHX1JBTUZTIDEgKi8KPiAr
Cj4gKyNpZmRlZiBERUJVR19SQU1GUwo+ICsjZGVmaW5lIERQUklOVEYoYSkJZHByaW50ZiBhCj4g
KyNlbHNlCj4gKyNkZWZpbmUgRFBSSU5URihhKSAgICBkbyB7fSB3aGlsZSAoMCkKPiArI2VuZGlm
Cj4gKwo+ICsjZGVmaW5lIEFTU0VSVChlKSAgICBhc3NlcnQoZSkKPiArCj4gKy8qCj4gKyAqIEZp
bGUvZGlyZWN0b3J5IG5vZGUgZm9yIFJBTUZTCj4gKyAqLwo+ICtzdHJ1Y3QgcmFtZnNfbm9kZSB7
Cj4gKyAgICBzdHJ1Y3QgcmFtZnNfbm9kZSAqcm5fbmV4dDsgICAvKiBuZXh0IG5vZGUgaW4gdGhl
IHNhbWUgZGlyZWN0b3J5ICovCj4gKyAgICBzdHJ1Y3QgcmFtZnNfbm9kZSAqcm5fY2hpbGQ7ICAv
KiBmaXJzdCBjaGlsZCBub2RlICovCj4gKyAgICBpbnQgcm5fdHlwZTsgICAgLyogZmlsZSBvciBk
aXJlY3RvcnkgKi8KPiArICAgIGNoYXIgKnJuX25hbWU7ICAgIC8qIG5hbWUgKG51bGwtdGVybWlu
YXRlZCkgKi8KPiArICAgIHNpemVfdCBybl9uYW1lbGVuOyAgICAvKiBsZW5ndGggb2YgbmFtZSBu
b3QgaW5jbHVkaW5nIHRlcm1pbmF0b3IgKi8KPiArICAgIHNpemVfdCBybl9zaXplOyAgICAvKiBm
aWxlIHNpemUgKi8KPiArICAgIGNoYXIgKnJuX2J1ZjsgICAgLyogYnVmZmVyIHRvIHRoZSBmaWxl
IGRhdGEgKi8KPiArICAgIHNpemVfdCBybl9idWZzaXplOyAgICAvKiBhbGxvY2F0ZWQgYnVmZmVy
IHNpemUgKi8KPiArICAgIHN0cnVjdCB0aW1lc3BlYyBybl9jdGltZTsKPiArICAgIHN0cnVjdCB0
aW1lc3BlYyBybl9hdGltZTsKPiArICAgIHN0cnVjdCB0aW1lc3BlYyBybl9tdGltZTsKPiArICAg
IGludCBybl9tb2RlOwo+ICsgICAgYm9vbCBybl9vd25zX2J1ZjsKPiArfTsKPiArCj4gK3N0cnVj
dCByYW1mc19ub2RlICpyYW1mc19hbGxvY2F0ZV9ub2RlKGNvbnN0IGNoYXIgKm5hbWUsIGludCB0
eXBlKTsKPiArCj4gK3ZvaWQgcmFtZnNfZnJlZV9ub2RlKHN0cnVjdCByYW1mc19ub2RlICpub2Rl
KTsKPiArCj4gKyNlbmRpZiAvKiAhX1JBTUZTX0ggKi8KPiBkaWZmIC0tZ2l0IGEvbGliL3JhbWZz
L3JhbWZzX3Zmc29wcy5jIGIvbGliL3JhbWZzL3JhbWZzX3Zmc29wcy5jCj4gbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMC4uNzJmZTdlZGIKPiAtLS0gL2Rldi9udWxsCj4gKysr
IGIvbGliL3JhbWZzL3JhbWZzX3Zmc29wcy5jCj4gQEAgLTAsMCArMSw5MCBAQAo+ICsvKgo+ICsg
KiBDb3B5cmlnaHQgKGMpIDIwMDYtMjAwNywgS29oc3VrZSBPaHRhbmkKPiArICogQWxsIHJpZ2h0
cyByZXNlcnZlZC4KPiArICoKPiArICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cj4gKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwo+ICsgKiBh
cmUgbWV0Ogo+ICsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCj4gKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cj4g
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKPiArICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KPiArICogMy4gTmVpdGhlciB0
aGUgbmFtZSBvZiB0aGUgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgYW55IGNvLWNvbnRyaWJ1dG9y
cwo+ICsgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKPiArICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCj4gKyAqCj4gKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKPiArICogQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCj4gKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCj4gKyAqIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCj4gKyAq
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMCj4gKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCj4gKyAqIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KQo+ICsgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAo+ICsgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCj4gKyAqIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YKPiArICogU1VDSCBEQU1BR0UuCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPGVy
cm5vLmg+Cj4gKwo+ICsjaW5jbHVkZSA8b3N2L3Zub2RlLmg+Cj4gKyNpbmNsdWRlIDxvc3YvbW91
bnQuaD4KPiArI2luY2x1ZGUgPG9zdi9kZW50cnkuaD4KPiArCj4gKyNpbmNsdWRlICJyYW1mcy5o
Igo+ICsKPiArZXh0ZXJuIHN0cnVjdCB2bm9wcyByYW1mc192bm9wczsKPiArCj4gK3N0YXRpYyBp
bnQgcmFtZnNfbW91bnQoc3RydWN0IG1vdW50ICptcCwgY29uc3QgY2hhciAqZGV2LCBpbnQgZmxh
Z3MsIGNvbnN0IHZvaWQgKmRhdGEpOwo+ICsKPiArc3RhdGljIGludCByYW1mc191bm1vdW50KHN0
cnVjdCBtb3VudCAqbXAsIGludCBmbGFncyk7Cj4gKwo+ICsjZGVmaW5lIHJhbWZzX3N5bmMgICAg
KCh2ZnNvcF9zeW5jX3QpdmZzX251bGxvcCkKPiArI2RlZmluZSByYW1mc192Z2V0ICAgICgodmZz
b3BfdmdldF90KXZmc19udWxsb3ApCj4gKyNkZWZpbmUgcmFtZnNfc3RhdGZzICAgICgodmZzb3Bf
c3RhdGZzX3QpdmZzX251bGxvcCkKPiArCj4gKy8qCj4gKyAqIEZpbGUgc3lzdGVtIG9wZXJhdGlv
bnMKPiArICovCj4gK3N0cnVjdCB2ZnNvcHMgcmFtZnNfdmZzb3BzID0gewo+ICsgICAgICAgIHJh
bWZzX21vdW50LCAgICAgICAvKiBtb3VudCAqLwo+ICsgICAgICAgIHJhbWZzX3VubW91bnQsICAg
ICAvKiB1bm1vdW50ICovCj4gKyAgICAgICAgcmFtZnNfc3luYywgICAgICAgIC8qIHN5bmMgKi8K
PiArICAgICAgICByYW1mc192Z2V0LCAgICAgICAgLyogdmdldCAqLwo+ICsgICAgICAgIHJhbWZz
X3N0YXRmcywgICAgICAvKiBzdGF0ZnMgKi8KPiArICAgICAgICAmcmFtZnNfdm5vcHMsICAgICAg
Lyogdm5vcHMgKi8KPiArfTsKPiArCj4gKy8qCj4gKyAqIE1vdW50IGEgZmlsZSBzeXN0ZW0uCj4g
KyAqLwo+ICtzdGF0aWMgaW50Cj4gK3JhbWZzX21vdW50KHN0cnVjdCBtb3VudCAqbXAsIGNvbnN0
IGNoYXIgKmRldiwgaW50IGZsYWdzLCBjb25zdCB2b2lkICpkYXRhKQo+ICt7Cj4gKyAgICBzdHJ1
Y3QgcmFtZnNfbm9kZSAqbnA7Cj4gKwo+ICsgICAgRFBSSU5URigoInJhbWZzX21vdW50OiBkZXY9
JXNcbiIsIGRldikpOwo+ICsKPiArICAgIC8qIENyZWF0ZSBhIHJvb3Qgbm9kZSAqLwo+ICsgICAg
bnAgPSByYW1mc19hbGxvY2F0ZV9ub2RlKCIvIiwgVkRJUik7Cj4gKyAgICBpZiAobnAgPT0gTlVM
TCkKPiArICAgICAgICByZXR1cm4gRU5PTUVNOwo+ICsgICAgbXAtPm1fcm9vdC0+ZF92bm9kZS0+
dl9kYXRhID0gbnA7Cj4gKyAgICByZXR1cm4gMDsKPiArfQo+ICsKPiArLyoKPiArICogVW5tb3Vu
dCBhIGZpbGUgc3lzdGVtLgo+ICsgKgo+ICsgKiBOT1RFOiBDdXJyZW50bHksIHdlIGRvbid0IHN1
cHBvcnQgdW5tb3VudGluZyBvZiB0aGUgUkFNRlMuIFRoaXMgaXMKPiArICogICAgICAgYmVjYXVz
ZSB3ZSBoYXZlIHRvIGRlYWxsb2NhdGUgYWxsIG5vZGVzIGluY2x1ZGVkIGluIGFsbCBzdWIKPiAr
ICogICAgICAgZGlyZWN0b3JpZXMsIGFuZCBpdCByZXF1aXJlcyBtb3JlIHdvcmsuLi4KPiArICov
Cj4gK3N0YXRpYyBpbnQKPiArcmFtZnNfdW5tb3VudChzdHJ1Y3QgbW91bnQgKm1wLCBpbnQgZmxh
Z3MpCj4gK3sKPiArICAgIHJlbGVhc2VfbXBfZGVudHJpZXMobXApOwo+ICsgICAgcmV0dXJuIDA7
Cj4gK30KPiBkaWZmIC0tZ2l0IGEvbGliL3JhbWZzL3JhbWZzX3Zub3BzLmMgYi9saWIvcmFtZnMv
cmFtZnNfdm5vcHMuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAuLjky
OTFhNGVjCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2xpYi9yYW1mcy9yYW1mc192bm9wcy5jCj4g
QEAgLTAsMCArMSw2NjkgQEAKPiArLyoKPiArICogQ29weXJpZ2h0IChjKSAyMDA2LTIwMDcsIEtv
aHN1a2UgT2h0YW5pCj4gKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4gKyAqCj4gKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAo+ICsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKPiArICogYXJlIG1ldDoKPiArICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgo+ICsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCj4gKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCj4gKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGF1dGhvciBub3IgdGhl
IG5hbWVzIG9mIGFueSBjby1jb250cmlidXRvcnMKPiArICogICAgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCj4gKyAq
ICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgo+ICsgKgo+ICsg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5ECj4gKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQo+ICsgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RQo+ICsgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRQo+ICsgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAo+ICsgKiBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUwo+ICsgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKPiArICogSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKPiAr
ICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWQo+ICsgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCj4gKyAqIFNVQ0ggREFNQUdF
Lgo+ICsgKi8KPiArCj4gKy8qCj4gKyAqIHJtYWZzX3Zub3BzLmMgLSB2bm9kZSBvcGVyYXRpb25z
IGZvciBSQU0gZmlsZSBzeXN0ZW0uCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPHN5cy9zdGF0Lmg+
Cj4gKyNpbmNsdWRlIDxkaXJlbnQuaD4KPiArI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgo+ICsKPiAr
I2luY2x1ZGUgPGVycm5vLmg+Cj4gKyNpbmNsdWRlIDxzdHJpbmcuaD4KPiArI2luY2x1ZGUgPHN0
ZGxpYi5oPgo+ICsjaW5jbHVkZSA8ZmNudGwuaD4KPiArCj4gKyNpbmNsdWRlIDxvc3YvcHJleC5o
Pgo+ICsjaW5jbHVkZSA8b3N2L3Zub2RlLmg+Cj4gKyNpbmNsdWRlIDxvc3YvZmlsZS5oPgo+ICsj
aW5jbHVkZSA8b3N2L21vdW50Lmg+Cj4gKyNpbmNsdWRlIDxvc3Yvdm5vZGVfYXR0ci5oPgo+ICsK
PiArI2luY2x1ZGUgInJhbWZzLmgiCj4gKwo+ICtzdGF0aWMgbXV0ZXhfdCByYW1mc19sb2NrID0g
TVVURVhfSU5JVElBTElaRVI7Cj4gK3N0YXRpYyB1aW50NjRfdCBpbm9kZV9jb3VudCA9IDE7IC8q
IGlub2RlIDAgaXMgcmVzZXJ2ZWQgdG8gcm9vdCAqLwo+ICsKPiArc3RhdGljIHZvaWQKPiArc2V0
X3RpbWVzX3RvX25vdyhzdHJ1Y3QgdGltZXNwZWMgKnRpbWUxLCBzdHJ1Y3QgdGltZXNwZWMgKnRp
bWUyID0gbnVsbHB0ciwgc3RydWN0IHRpbWVzcGVjICp0aW1lMyA9IG51bGxwdHIpCj4gK3sKPiAr
ICAgIHN0cnVjdCB0aW1lc3BlYyBub3c7Cj4gKyAgICBjbG9ja19nZXR0aW1lKENMT0NLX1JFQUxU
SU1FLCAmbm93KTsKPiArICAgIGlmICh0aW1lMSkgewo+ICsgICAgICAgIG1lbWNweSh0aW1lMSwg
Jm5vdywgc2l6ZW9mKHN0cnVjdCB0aW1lc3BlYykpOwo+ICsgICAgfQo+ICsgICAgaWYgKHRpbWUy
KSB7Cj4gKyAgICAgICAgbWVtY3B5KHRpbWUyLCAmbm93LCBzaXplb2Yoc3RydWN0IHRpbWVzcGVj
KSk7Cj4gKyAgICB9Cj4gKyAgICBpZiAodGltZTMpIHsKPiArICAgICAgICBtZW1jcHkodGltZTMs
ICZub3csIHNpemVvZihzdHJ1Y3QgdGltZXNwZWMpKTsKPiArICAgIH0KPiArfQo+ICsKPiArc3Ry
dWN0IHJhbWZzX25vZGUgKgo+ICtyYW1mc19hbGxvY2F0ZV9ub2RlKGNvbnN0IGNoYXIgKm5hbWUs
IGludCB0eXBlKQo+ICt7Cj4gKyAgICBzdHJ1Y3QgcmFtZnNfbm9kZSAqbnA7Cj4gKwo+ICsgICAg
bnAgPSAocmFtZnNfbm9kZSAqKSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCByYW1mc19ub2RlKSk7Cj4g
KyAgICBpZiAobnAgPT0gTlVMTCkKPiArICAgICAgICByZXR1cm4gTlVMTDsKPiArICAgIG1lbXNl
dChucCwgMCwgc2l6ZW9mKHN0cnVjdCByYW1mc19ub2RlKSk7Cj4gKwo+ICsgICAgbnAtPnJuX25h
bWVsZW4gPSBzdHJsZW4obmFtZSk7Cj4gKyAgICBucC0+cm5fbmFtZSA9IChjaGFyICopIG1hbGxv
YyhucC0+cm5fbmFtZWxlbiArIDEpOwo+ICsgICAgaWYgKG5wLT5ybl9uYW1lID09IE5VTEwpIHsK
PiArICAgICAgICBmcmVlKG5wKTsKPiArICAgICAgICByZXR1cm4gTlVMTDsKPiArICAgIH0KPiAr
ICAgIHN0cmxjcHkobnAtPnJuX25hbWUsIG5hbWUsIG5wLT5ybl9uYW1lbGVuICsgMSk7Cj4gKyAg
ICBucC0+cm5fdHlwZSA9IHR5cGU7Cj4gKwo+ICsgICAgaWYgKHR5cGUgPT0gVkRJUikKPiArICAg
ICAgICBucC0+cm5fbW9kZSA9IFNfSUZESVJ8MDc3NzsKPiArICAgIGVsc2UgaWYgKHR5cGUgPT0g
VkxOSykKPiArICAgICAgICBucC0+cm5fbW9kZSA9IFNfSUZMTkt8MDc3NzsKPiArICAgIGVsc2UK
PiArICAgICAgICBucC0+cm5fbW9kZSA9IFNfSUZSRUd8MDc3NzsKPiArCj4gKyAgICBzZXRfdGlt
ZXNfdG9fbm93KCYobnAtPnJuX2N0aW1lKSwgJihucC0+cm5fYXRpbWUpLCAmKG5wLT5ybl9tdGlt
ZSkpOwo+ICsgICAgbnAtPnJuX293bnNfYnVmID0gdHJ1ZTsKPiArCj4gKyAgICByZXR1cm4gbnA7
Cj4gK30KPiArCj4gK3ZvaWQKPiArcmFtZnNfZnJlZV9ub2RlKHN0cnVjdCByYW1mc19ub2RlICpu
cCkKPiArewo+ICsgICAgaWYgKG5wLT5ybl9idWYgIT0gTlVMTCAmJiBucC0+cm5fb3duc19idWYp
Cj4gKyAgICAgICAgZnJlZShucC0+cm5fYnVmKTsKPiArCj4gKyAgICBmcmVlKG5wLT5ybl9uYW1l
KTsKPiArICAgIGZyZWUobnApOwo+ICt9Cj4gKwo+ICtzdGF0aWMgc3RydWN0IHJhbWZzX25vZGUg
Kgo+ICtyYW1mc19hZGRfbm9kZShzdHJ1Y3QgcmFtZnNfbm9kZSAqZG5wLCBjaGFyICpuYW1lLCBp
bnQgdHlwZSkKPiArewo+ICsgICAgc3RydWN0IHJhbWZzX25vZGUgKm5wLCAqcHJldjsKPiArCj4g
KyAgICBucCA9IHJhbWZzX2FsbG9jYXRlX25vZGUobmFtZSwgdHlwZSk7Cj4gKyAgICBpZiAobnAg
PT0gTlVMTCkKPiArICAgICAgICByZXR1cm4gTlVMTDsKPiArCj4gKyAgICBtdXRleF9sb2NrKCZy
YW1mc19sb2NrKTsKPiArCj4gKyAgICAvKiBMaW5rIHRvIHRoZSBkaXJlY3RvcnkgbGlzdCAqLwo+
ICsgICAgaWYgKGRucC0+cm5fY2hpbGQgPT0gTlVMTCkgewo+ICsgICAgICAgIGRucC0+cm5fY2hp
bGQgPSBucDsKPiArICAgIH0gZWxzZSB7Cj4gKyAgICAgICAgcHJldiA9IGRucC0+cm5fY2hpbGQ7
Cj4gKyAgICAgICAgd2hpbGUgKHByZXYtPnJuX25leHQgIT0gTlVMTCkKPiArICAgICAgICAgICAg
cHJldiA9IHByZXYtPnJuX25leHQ7Cj4gKyAgICAgICAgcHJldi0+cm5fbmV4dCA9IG5wOwo+ICsg
ICAgfQo+ICsKPiArICAgIHNldF90aW1lc190b19ub3coJihkbnAtPnJuX210aW1lKSwgJihkbnAt
PnJuX2N0aW1lKSk7Cj4gKwo+ICsgICAgbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKPiArICAg
IHJldHVybiBucDsKPiArfQo+ICsKPiArc3RhdGljIGludAo+ICtyYW1mc19yZW1vdmVfbm9kZShz
dHJ1Y3QgcmFtZnNfbm9kZSAqZG5wLCBzdHJ1Y3QgcmFtZnNfbm9kZSAqbnApCj4gK3sKPiArICAg
IHN0cnVjdCByYW1mc19ub2RlICpwcmV2Owo+ICsKPiArICAgIGlmIChkbnAtPnJuX2NoaWxkID09
IE5VTEwpCj4gKyAgICAgICAgcmV0dXJuIEVCVVNZOwo+ICsKPiArICAgIG11dGV4X2xvY2soJnJh
bWZzX2xvY2spOwo+ICsKPiArICAgIC8qIFVubGluayBmcm9tIHRoZSBkaXJlY3RvcnkgbGlzdCAq
Lwo+ICsgICAgaWYgKGRucC0+cm5fY2hpbGQgPT0gbnApIHsKPiArICAgICAgICBkbnAtPnJuX2No
aWxkID0gbnAtPnJuX25leHQ7Cj4gKyAgICB9IGVsc2Ugewo+ICsgICAgICAgIGZvciAocHJldiA9
IGRucC0+cm5fY2hpbGQ7IHByZXYtPnJuX25leHQgIT0gbnA7Cj4gKyAgICAgICAgICAgICBwcmV2
ID0gcHJldi0+cm5fbmV4dCkgewo+ICsgICAgICAgICAgICBpZiAocHJldi0+cm5fbmV4dCA9PSBO
VUxMKSB7Cj4gKyAgICAgICAgICAgICAgICBtdXRleF91bmxvY2soJnJhbWZzX2xvY2spOwo+ICsg
ICAgICAgICAgICAgICAgcmV0dXJuIEVOT0VOVDsKPiArICAgICAgICAgICAgfQo+ICsgICAgICAg
IH0KPiArICAgICAgICBwcmV2LT5ybl9uZXh0ID0gbnAtPnJuX25leHQ7Cj4gKyAgICB9Cj4gKyAg
ICByYW1mc19mcmVlX25vZGUobnApOwo+ICsKPiArICAgIHNldF90aW1lc190b19ub3coJihkbnAt
PnJuX210aW1lKSwgJihkbnAtPnJuX2N0aW1lKSk7Cj4gKwo+ICsgICAgbXV0ZXhfdW5sb2NrKCZy
YW1mc19sb2NrKTsKPiArICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50Cj4gK3Jh
bWZzX3JlbmFtZV9ub2RlKHN0cnVjdCByYW1mc19ub2RlICpucCwgY2hhciAqbmFtZSkKPiArewo+
ICsgICAgc2l6ZV90IGxlbjsKPiArICAgIGNoYXIgKnRtcDsKPiArCj4gKyAgICBsZW4gPSBzdHJs
ZW4obmFtZSk7Cj4gKyAgICBpZiAobGVuID4gTkFNRV9NQVgpIHsKPiArICAgICAgICByZXR1cm4g
RU5BTUVUT09MT05HOwo+ICsgICAgfQo+ICsgICAgaWYgKGxlbiA8PSBucC0+cm5fbmFtZWxlbikg
ewo+ICsgICAgICAgIC8qIFJldXNlIGN1cnJlbnQgbmFtZSBidWZmZXIgKi8KPiArICAgICAgICBz
dHJsY3B5KG5wLT5ybl9uYW1lLCBuYW1lLCBucC0+cm5fbmFtZWxlbiArIDEpOwo+ICsgICAgfSBl
bHNlIHsKPiArICAgICAgICAvKiBFeHBhbmQgbmFtZSBidWZmZXIgKi8KPiArICAgICAgICB0bXAg
PSAoY2hhciAqKSBtYWxsb2MobGVuICsgMSk7Cj4gKyAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQo+
ICsgICAgICAgICAgICByZXR1cm4gRU5PTUVNOwo+ICsgICAgICAgIHN0cmxjcHkodG1wLCBuYW1l
LCBsZW4gKyAxKTsKPiArICAgICAgICBmcmVlKG5wLT5ybl9uYW1lKTsKPiArICAgICAgICBucC0+
cm5fbmFtZSA9IHRtcDsKPiArICAgIH0KPiArICAgIG5wLT5ybl9uYW1lbGVuID0gbGVuOwo+ICsg
ICAgc2V0X3RpbWVzX3RvX25vdygmKG5wLT5ybl9jdGltZSkpOwo+ICsgICAgcmV0dXJuIDA7Cj4g
K30KPiArCj4gK3N0YXRpYyBpbnQKPiArcmFtZnNfbG9va3VwKHN0cnVjdCB2bm9kZSAqZHZwLCBj
aGFyICpuYW1lLCBzdHJ1Y3Qgdm5vZGUgKip2cHApCj4gK3sKPiArICAgIHN0cnVjdCByYW1mc19u
b2RlICpucCwgKmRucDsKPiArICAgIHN0cnVjdCB2bm9kZSAqdnA7Cj4gKyAgICBzaXplX3QgbGVu
Owo+ICsgICAgaW50IGZvdW5kOwo+ICsKPiArICAgICp2cHAgPSBOVUxMOwo+ICsKPiArICAgIGlm
ICgqbmFtZSA9PSAnXDAnKQo+ICsgICAgICAgIHJldHVybiBFTk9FTlQ7Cj4gKwo+ICsgICAgbXV0
ZXhfbG9jaygmcmFtZnNfbG9jayk7Cj4gKwo+ICsgICAgbGVuID0gc3RybGVuKG5hbWUpOwo+ICsg
ICAgZG5wID0gKHJhbWZzX25vZGUgKikgZHZwLT52X2RhdGE7Cj4gKyAgICBmb3VuZCA9IDA7Cj4g
KyAgICBmb3IgKG5wID0gZG5wLT5ybl9jaGlsZDsgbnAgIT0gTlVMTDsgbnAgPSBucC0+cm5fbmV4
dCkgewo+ICsgICAgICAgIGlmIChucC0+cm5fbmFtZWxlbiA9PSBsZW4gJiYKPiArICAgICAgICAg
ICAgbWVtY21wKG5hbWUsIG5wLT5ybl9uYW1lLCBsZW4pID09IDApIHsKPiArICAgICAgICAgICAg
Zm91bmQgPSAxOwo+ICsgICAgICAgICAgICBicmVhazsKPiArICAgICAgICB9Cj4gKyAgICB9Cj4g
KyAgICBpZiAoZm91bmQgPT0gMCkgewo+ICsgICAgICAgIG11dGV4X3VubG9jaygmcmFtZnNfbG9j
ayk7Cj4gKyAgICAgICAgcmV0dXJuIEVOT0VOVDsKPiArICAgIH0KPiArICAgIGlmICh2Z2V0KGR2
cC0+dl9tb3VudCwgaW5vZGVfY291bnQrKywgJnZwKSkgewo+ICsgICAgICAgIC8qIGZvdW5kIGlu
IGNhY2hlICovCj4gKyAgICAgICAgKnZwcCA9IHZwOwo+ICsgICAgICAgIG11dGV4X3VubG9jaygm
cmFtZnNfbG9jayk7Cj4gKyAgICAgICAgcmV0dXJuIDA7Cj4gKyAgICB9Cj4gKyAgICBpZiAoIXZw
KSB7Cj4gKyAgICAgICAgbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKPiArICAgICAgICByZXR1
cm4gRU5PTUVNOwo+ICsgICAgfQo+ICsgICAgdnAtPnZfZGF0YSA9IG5wOwo+ICsgICAgdnAtPnZf
bW9kZSA9IEFMTFBFUk1TOwo+ICsgICAgdnAtPnZfdHlwZSA9IG5wLT5ybl90eXBlOwo+ICsgICAg
dnAtPnZfc2l6ZSA9IG5wLT5ybl9zaXplOwo+ICsKPiArICAgIG11dGV4X3VubG9jaygmcmFtZnNf
bG9jayk7Cj4gKwo+ICsgICAgKnZwcCA9IHZwOwo+ICsKPiArICAgIHJldHVybiAwOwo+ICt9Cj4g
Kwo+ICtzdGF0aWMgaW50Cj4gK3JhbWZzX21rZGlyKHN0cnVjdCB2bm9kZSAqZHZwLCBjaGFyICpu
YW1lLCBtb2RlX3QgbW9kZSkKPiArewo+ICsgICAgc3RydWN0IHJhbWZzX25vZGUgKm5wOwo+ICsK
PiArICAgIERQUklOVEYoKCJta2RpciAlc1xuIiwgbmFtZSkpOwo+ICsgICAgaWYgKHN0cmxlbihu
YW1lKSA+IE5BTUVfTUFYKSB7Cj4gKyAgICAgICAgcmV0dXJuIEVOQU1FVE9PTE9ORzsKPiArICAg
IH0KPiArCj4gKyAgICBpZiAoIVNfSVNESVIobW9kZSkpCj4gKyAgICAgICAgcmV0dXJuIEVJTlZB
TDsKPiArCj4gKyAgICBucCA9IChyYW1mc19ub2RlICopIHJhbWZzX2FkZF9ub2RlKChyYW1mc19u
b2RlICopIGR2cC0+dl9kYXRhLCBuYW1lLCBWRElSKTsKPiArICAgIGlmIChucCA9PSBOVUxMKQo+
ICsgICAgICAgIHJldHVybiBFTk9NRU07Cj4gKyAgICBucC0+cm5fc2l6ZSA9IDA7Cj4gKwo+ICsg
ICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQKPiArcmFtZnNfc3ltbGluayhzdHJ1
Y3Qgdm5vZGUgKmR2cCwgY2hhciAqbmFtZSwgY2hhciAqbGluaykKPiArewo+ICsgICAgaWYgKHN0
cmxlbihuYW1lKSA+IE5BTUVfTUFYKSB7Cj4gKyAgICAgICAgcmV0dXJuIEVOQU1FVE9PTE9ORzsK
PiArICAgIH0KPiArICAgIGF1dG8gbnAgPSByYW1mc19hZGRfbm9kZSgocmFtZnNfbm9kZSAqKSBk
dnAtPnZfZGF0YSwgbmFtZSwgVkxOSyk7Cj4gKyAgICBpZiAobnAgPT0gTlVMTCkKPiArICAgICAg
ICByZXR1cm4gRU5PTUVNOwo+ICsgICAgLy8gU2F2ZSB0aGUgbGluayB0YXJnZXQgd2l0aG91dCB0
aGUgZmluYWwgbnVsbCwgYXMgcmVhZGxpbmsoKSB3YW50cyBpdC4KPiArICAgIHNpemVfdCBsZW4g
PSBzdHJsZW4obGluayk7Cj4gKyAgICBucC0+cm5fYnVmID0gc3RybmR1cChsaW5rLCBsZW4pOwo+
ICsgICAgbnAtPnJuX2J1ZnNpemUgPSBucC0+cm5fc2l6ZSA9IGxlbjsKPiArCj4gKyAgICByZXR1
cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludAo+ICtyYW1mc19yZWFkbGluayhzdHJ1Y3Qgdm5v
ZGUgKnZwLCBzdHJ1Y3QgdWlvICp1aW8pCj4gK3sKPiArICAgIHN0cnVjdCByYW1mc19ub2RlICpu
cCA9IChyYW1mc19ub2RlICopIHZwLT52X2RhdGE7Cj4gKyAgICBzaXplX3QgbGVuOwo+ICsKPiAr
ICAgIGlmICh2cC0+dl90eXBlICE9IFZMTkspIHsKPiArICAgICAgICByZXR1cm4gRUlOVkFMOwo+
ICsgICAgfQo+ICsgICAgaWYgKHVpby0+dWlvX29mZnNldCA8IDApIHsKPiArICAgICAgICByZXR1
cm4gRUlOVkFMOwo+ICsgICAgfQo+ICsgICAgaWYgKHVpby0+dWlvX3Jlc2lkID09IDApIHsKPiAr
ICAgICAgICByZXR1cm4gMDsKPiArICAgIH0KPiArICAgIGlmICh1aW8tPnVpb19vZmZzZXQgPj0g
KG9mZl90KSB2cC0+dl9zaXplKQo+ICsgICAgICAgIHJldHVybiAwOwo+ICsgICAgaWYgKHZwLT52
X3NpemUgLSB1aW8tPnVpb19vZmZzZXQgPCB1aW8tPnVpb19yZXNpZCkKPiArICAgICAgICBsZW4g
PSB2cC0+dl9zaXplIC0gdWlvLT51aW9fb2Zmc2V0Owo+ICsgICAgZWxzZQo+ICsgICAgICAgIGxl
biA9IHVpby0+dWlvX3Jlc2lkOwo+ICsKPiArICAgIHNldF90aW1lc190b19ub3coICYobnAtPnJu
X2F0aW1lKSk7Cj4gKyAgICByZXR1cm4gdWlvbW92ZShucC0+cm5fYnVmICsgdWlvLT51aW9fb2Zm
c2V0LCBsZW4sIHVpbyk7Cj4gK30KPiArCj4gKy8qIFJlbW92ZSBhIGRpcmVjdG9yeSAqLwo+ICtz
dGF0aWMgaW50Cj4gK3JhbWZzX3JtZGlyKHN0cnVjdCB2bm9kZSAqZHZwLCBzdHJ1Y3Qgdm5vZGUg
KnZwLCBjaGFyICpuYW1lKQo+ICt7Cj4gKyAgICByZXR1cm4gcmFtZnNfcmVtb3ZlX25vZGUoKHJh
bWZzX25vZGUgKikgZHZwLT52X2RhdGEsIChyYW1mc19ub2RlICopIHZwLT52X2RhdGEpOwo+ICt9
Cj4gKwo+ICsvKiBSZW1vdmUgYSBmaWxlICovCj4gK3N0YXRpYyBpbnQKPiArcmFtZnNfcmVtb3Zl
KHN0cnVjdCB2bm9kZSAqZHZwLCBzdHJ1Y3Qgdm5vZGUgKnZwLCBjaGFyICpuYW1lKQo+ICt7Cj4g
KyAgICBEUFJJTlRGKCgicmVtb3ZlICVzIGluICVzXG4iLCBuYW1lLCBkdnAtPnZfcGF0aCkpOwo+
ICsgICAgcmV0dXJuIHJhbWZzX3JlbW92ZV9ub2RlKChyYW1mc19ub2RlICopIGR2cC0+dl9kYXRh
LCAocmFtZnNfbm9kZSAqKSB2cC0+dl9kYXRhKTsKPiArfQo+ICsKPiArLyogVHJ1bmNhdGUgZmls
ZSAqLwo+ICtzdGF0aWMgaW50Cj4gK3JhbWZzX3RydW5jYXRlKHN0cnVjdCB2bm9kZSAqdnAsIG9m
Zl90IGxlbmd0aCkKPiArewo+ICsgICAgc3RydWN0IHJhbWZzX25vZGUgKm5wOwo+ICsgICAgdm9p
ZCAqbmV3X2J1ZjsKPiArICAgIHNpemVfdCBuZXdfc2l6ZTsKPiArCj4gKyAgICBEUFJJTlRGKCgi
dHJ1bmNhdGUgJXMgbGVuZ3RoPSVkXG4iLCB2cC0+dl9wYXRoLCBsZW5ndGgpKTsKPiArICAgIG5w
ID0gKHJhbWZzX25vZGUgKikgdnAtPnZfZGF0YTsKPiArCj4gKyAgICBpZiAobGVuZ3RoID09IDAp
IHsKPiArICAgICAgICBpZiAobnAtPnJuX2J1ZiAhPSBOVUxMKSB7Cj4gKyAgICAgICAgICAgIGlm
KG5wLT5ybl9vd25zX2J1ZikKPiArICAgICAgICAgICAgICAgIGZyZWUobnAtPnJuX2J1Zik7Cj4g
KyAgICAgICAgICAgIG5wLT5ybl9idWYgPSBOVUxMOwo+ICsgICAgICAgICAgICBucC0+cm5fYnVm
c2l6ZSA9IDA7Cj4gKyAgICAgICAgfQo+ICsgICAgfSBlbHNlIGlmIChzaXplX3QobGVuZ3RoKSA+
IG5wLT5ybl9idWZzaXplKSB7Cj4gKyAgICAgICAgLy8gWFhYOiB0aGlzIGNvdWxkIHVzZSBhIHBh
Z2UgbGV2ZWwgYWxsb2NhdG9yCj4gKyAgICAgICAgbmV3X3NpemUgPSByb3VuZF9wYWdlKGxlbmd0
aCk7Cj4gKyAgICAgICAgbmV3X2J1ZiA9IG1hbGxvYyhuZXdfc2l6ZSk7Cj4gKyAgICAgICAgaWYg
KCFuZXdfYnVmKQo+ICsgICAgICAgICAgICByZXR1cm4gRUlPOwo+ICsgICAgICAgIGlmIChucC0+
cm5fc2l6ZSAhPSAwKSB7Cj4gKyAgICAgICAgICAgIG1lbWNweShuZXdfYnVmLCBucC0+cm5fYnVm
LCB2cC0+dl9zaXplKTsKPiArICAgICAgICAgICAgaWYobnAtPnJuX293bnNfYnVmKQo+ICsgICAg
ICAgICAgICAgICAgZnJlZShucC0+cm5fYnVmKTsKPiArICAgICAgICB9Cj4gKyAgICAgICAgbnAt
PnJuX2J1ZiA9IChjaGFyICopIG5ld19idWY7Cj4gKyAgICAgICAgbnAtPnJuX2J1ZnNpemUgPSBu
ZXdfc2l6ZTsKPiArICAgICAgICBucC0+cm5fb3duc19idWYgPSB0cnVlOwo+ICsgICAgfQo+ICsg
ICAgbnAtPnJuX3NpemUgPSBsZW5ndGg7Cj4gKyAgICB2cC0+dl9zaXplID0gbGVuZ3RoOwo+ICsg
ICAgc2V0X3RpbWVzX3RvX25vdygmKG5wLT5ybl9tdGltZSksICYobnAtPnJuX2N0aW1lKSk7Cj4g
KyAgICByZXR1cm4gMDsKPiArfQo+ICsKPiArLyoKPiArICogQ3JlYXRlIGVtcHR5IGZpbGUuCj4g
KyAqLwo+ICtzdGF0aWMgaW50Cj4gK3JhbWZzX2NyZWF0ZShzdHJ1Y3Qgdm5vZGUgKmR2cCwgY2hh
ciAqbmFtZSwgbW9kZV90IG1vZGUpCj4gK3sKPiArICAgIHN0cnVjdCByYW1mc19ub2RlICpucDsK
PiArCj4gKyAgICBpZiAoc3RybGVuKG5hbWUpID4gTkFNRV9NQVgpIHsKPiArICAgICAgICByZXR1
cm4gRU5BTUVUT09MT05HOwo+ICsgICAgfQo+ICsKPiArICAgIERQUklOVEYoKCJjcmVhdGUgJXMg
aW4gJXNcbiIsIG5hbWUsIGR2cC0+dl9wYXRoKSk7Cj4gKyAgICBpZiAoIVNfSVNSRUcobW9kZSkp
Cj4gKyAgICAgICAgcmV0dXJuIEVJTlZBTDsKPiArCj4gKyAgICBucCA9IHJhbWZzX2FkZF9ub2Rl
KChyYW1mc19ub2RlICopIGR2cC0+dl9kYXRhLCBuYW1lLCBWUkVHKTsKPiArICAgIGlmIChucCA9
PSBOVUxMKQo+ICsgICAgICAgIHJldHVybiBFTk9NRU07Cj4gKyAgICByZXR1cm4gMDsKPiArfQo+
ICsKPiArc3RhdGljIGludAo+ICtyYW1mc19yZWFkKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCBm
aWxlICpmcCwgc3RydWN0IHVpbyAqdWlvLCBpbnQgaW9mbGFnKQo+ICt7Cj4gKyAgICBzdHJ1Y3Qg
cmFtZnNfbm9kZSAqbnAgPSAocmFtZnNfbm9kZSAqKSB2cC0+dl9kYXRhOwo+ICsgICAgc2l6ZV90
IGxlbjsKPiArCj4gKyAgICBpZiAodnAtPnZfdHlwZSA9PSBWRElSKSB7Cj4gKyAgICAgICAgcmV0
dXJuIEVJU0RJUjsKPiArICAgIH0KPiArICAgIGlmICh2cC0+dl90eXBlICE9IFZSRUcpIHsKPiAr
ICAgICAgICByZXR1cm4gRUlOVkFMOwo+ICsgICAgfQo+ICsgICAgaWYgKHVpby0+dWlvX29mZnNl
dCA8IDApIHsKPiArICAgICAgICByZXR1cm4gRUlOVkFMOwo+ICsgICAgfQo+ICsgICAgaWYgKHVp
by0+dWlvX3Jlc2lkID09IDApIHsKPiArICAgICAgICByZXR1cm4gMDsKPiArICAgIH0KPiArCj4g
KyAgICBpZiAodWlvLT51aW9fb2Zmc2V0ID49IChvZmZfdCkgdnAtPnZfc2l6ZSkKPiArICAgICAg
ICByZXR1cm4gMDsKPiArCj4gKyAgICBpZiAodnAtPnZfc2l6ZSAtIHVpby0+dWlvX29mZnNldCA8
IHVpby0+dWlvX3Jlc2lkKQo+ICsgICAgICAgIGxlbiA9IHZwLT52X3NpemUgLSB1aW8tPnVpb19v
ZmZzZXQ7Cj4gKyAgICBlbHNlCj4gKyAgICAgICAgbGVuID0gdWlvLT51aW9fcmVzaWQ7Cj4gKwo+
ICsgICAgc2V0X3RpbWVzX3RvX25vdygmKG5wLT5ybl9hdGltZSkpOwo+ICsKPiArICAgIHJldHVy
biB1aW9tb3ZlKG5wLT5ybl9idWYgKyB1aW8tPnVpb19vZmZzZXQsIGxlbiwgdWlvKTsKPiArfQo+
ICsKPiAraW50Cj4gK3JhbWZzX3NldF9maWxlX2RhdGEoc3RydWN0IHZub2RlICp2cCwgY29uc3Qg
dm9pZCAqZGF0YSwgc2l6ZV90IHNpemUpCj4gK3sKPiArICAgIHN0cnVjdCByYW1mc19ub2RlICpu
cCA9IChyYW1mc19ub2RlICopIHZwLT52X2RhdGE7Cj4gKwo+ICsgICAgaWYgKHZwLT52X3R5cGUg
PT0gVkRJUikgewo+ICsgICAgICAgIHJldHVybiBFSVNESVI7Cj4gKyAgICB9Cj4gKyAgICBpZiAo
dnAtPnZfdHlwZSAhPSBWUkVHKSB7Cj4gKyAgICAgICAgcmV0dXJuIEVJTlZBTDsKPiArICAgIH0K
PiArICAgIGlmIChucC0+cm5fYnVmKSB7Cj4gKyAgICAgICAgcmV0dXJuIEVJTlZBTDsKPiArICAg
IH0KPiArCj4gKyAgICBucC0+cm5fYnVmID0gKGNoYXIgKikgZGF0YTsKPiArICAgIG5wLT5ybl9i
dWZzaXplID0gc2l6ZTsKPiArICAgIG5wLT5ybl9zaXplID0gc2l6ZTsKPiArICAgIHZwLT52X3Np
emUgPSBzaXplOwo+ICsgICAgbnAtPnJuX293bnNfYnVmID0gZmFsc2U7Cj4gKwo+ICsgICAgcmV0
dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQKPiArcmFtZnNfd3JpdGUoc3RydWN0IHZub2Rl
ICp2cCwgc3RydWN0IHVpbyAqdWlvLCBpbnQgaW9mbGFnKQo+ICt7Cj4gKyAgICBzdHJ1Y3QgcmFt
ZnNfbm9kZSAqbnAgPSAocmFtZnNfbm9kZSAqKSB2cC0+dl9kYXRhOwo+ICsKPiArICAgIGlmICh2
cC0+dl90eXBlID09IFZESVIpIHsKPiArICAgICAgICByZXR1cm4gRUlTRElSOwo+ICsgICAgfQo+
ICsgICAgaWYgKHZwLT52X3R5cGUgIT0gVlJFRykgewo+ICsgICAgICAgIHJldHVybiBFSU5WQUw7
Cj4gKyAgICB9Cj4gKyAgICBpZiAodWlvLT51aW9fb2Zmc2V0IDwgMCkgewo+ICsgICAgICAgIHJl
dHVybiBFSU5WQUw7Cj4gKyAgICB9Cj4gKyAgICBpZiAodWlvLT51aW9fb2Zmc2V0ID49IExPTkdf
TUFYKSB7Cj4gKyAgICAgICAgcmV0dXJuIEVGQklHOwo+ICsgICAgfQo+ICsgICAgaWYgKHVpby0+
dWlvX3Jlc2lkID09IDApIHsKPiArICAgICAgICByZXR1cm4gMDsKPiArICAgIH0KPiArCj4gKyAg
ICBpZiAoaW9mbGFnICYgSU9fQVBQRU5EKQo+ICsgICAgICAgIHVpby0+dWlvX29mZnNldCA9IG5w
LT5ybl9zaXplOwo+ICsKPiArICAgIGlmIChzaXplX3QodWlvLT51aW9fb2Zmc2V0ICsgdWlvLT51
aW9fcmVzaWQpID4gKHNpemVfdCkgdnAtPnZfc2l6ZSkgewo+ICsgICAgICAgIC8qIEV4cGFuZCB0
aGUgZmlsZSBzaXplIGJlZm9yZSB3cml0aW5nIHRvIGl0ICovCj4gKyAgICAgICAgb2ZmX3QgZW5k
X3BvcyA9IHVpby0+dWlvX29mZnNldCArIHVpby0+dWlvX3Jlc2lkOwo+ICsgICAgICAgIGlmIChl
bmRfcG9zID4gKG9mZl90KSBucC0+cm5fYnVmc2l6ZSkgewo+ICsgICAgICAgICAgICAvLyBYWFg6
IHRoaXMgY291bGQgdXNlIGEgcGFnZSBsZXZlbCBhbGxvY2F0b3IKPiArICAgICAgICAgICAgc2l6
ZV90IG5ld19zaXplID0gcm91bmRfcGFnZShlbmRfcG9zKTsKPiArICAgICAgICAgICAgdm9pZCAq
bmV3X2J1ZiA9IG1hbGxvYyhuZXdfc2l6ZSk7Cj4gKyAgICAgICAgICAgIGlmICghbmV3X2J1ZikK
PiArICAgICAgICAgICAgICAgIHJldHVybiBFSU87Cj4gKyAgICAgICAgICAgIGlmIChucC0+cm5f
c2l6ZSAhPSAwKSB7Cj4gKyAgICAgICAgICAgICAgICBtZW1jcHkobmV3X2J1ZiwgbnAtPnJuX2J1
ZiwgdnAtPnZfc2l6ZSk7Cj4gKyAgICAgICAgICAgICAgICBpZihucC0+cm5fb3duc19idWYpCj4g
KyAgICAgICAgICAgICAgICAgICAgZnJlZShucC0+cm5fYnVmKTsKPiArICAgICAgICAgICAgfQo+
ICsgICAgICAgICAgICBucC0+cm5fYnVmID0gKGNoYXIgKikgbmV3X2J1ZjsKPiArICAgICAgICAg
ICAgbnAtPnJuX2J1ZnNpemUgPSBuZXdfc2l6ZTsKPiArICAgICAgICB9Cj4gKyAgICAgICAgbnAt
PnJuX3NpemUgPSBlbmRfcG9zOwo+ICsgICAgICAgIHZwLT52X3NpemUgPSBlbmRfcG9zOwo+ICsg
ICAgICAgIG5wLT5ybl9vd25zX2J1ZiA9IHRydWU7Cj4gKyAgICB9Cj4gKwo+ICsgICAgc2V0X3Rp
bWVzX3RvX25vdygmKG5wLT5ybl9tdGltZSksICYobnAtPnJuX2N0aW1lKSk7Cj4gKyAgICByZXR1
cm4gdWlvbW92ZShucC0+cm5fYnVmICsgdWlvLT51aW9fb2Zmc2V0LCB1aW8tPnVpb19yZXNpZCwg
dWlvKTsKPiArfQo+ICsKPiArc3RhdGljIGludAo+ICtyYW1mc19yZW5hbWUoc3RydWN0IHZub2Rl
ICpkdnAxLCBzdHJ1Y3Qgdm5vZGUgKnZwMSwgY2hhciAqbmFtZTEsCj4gKyAgICAgICAgICAgICBz
dHJ1Y3Qgdm5vZGUgKmR2cDIsIHN0cnVjdCB2bm9kZSAqdnAyLCBjaGFyICpuYW1lMikKPiArewo+
ICsgICAgc3RydWN0IHJhbWZzX25vZGUgKm5wLCAqb2xkX25wOwo+ICsgICAgaW50IGVycm9yOwo+
ICsKPiArICAgIGlmICh2cDIpIHsKPiArICAgICAgICAvKiBSZW1vdmUgZGVzdGluYXRpb24gZmls
ZSwgZmlyc3QgKi8KPiArICAgICAgICBlcnJvciA9IHJhbWZzX3JlbW92ZV9ub2RlKChyYW1mc19u
b2RlICopIGR2cDItPnZfZGF0YSwgKHJhbWZzX25vZGUgKikgdnAyLT52X2RhdGEpOwo+ICsgICAg
ICAgIGlmIChlcnJvcikKPiArICAgICAgICAgICAgcmV0dXJuIGVycm9yOwo+ICsgICAgfQo+ICsg
ICAgLyogU2FtZSBkaXJlY3RvcnkgPyAqLwo+ICsgICAgaWYgKGR2cDEgPT0gZHZwMikgewo+ICsg
ICAgICAgIC8qIENoYW5nZSB0aGUgbmFtZSBvZiBleGlzdGluZyBmaWxlICovCj4gKyAgICAgICAg
ZXJyb3IgPSByYW1mc19yZW5hbWVfbm9kZSgocmFtZnNfbm9kZSAqKSB2cDEtPnZfZGF0YSwgbmFt
ZTIpOwo+ICsgICAgICAgIGlmIChlcnJvcikKPiArICAgICAgICAgICAgcmV0dXJuIGVycm9yOwo+
ICsgICAgfSBlbHNlIHsKPiArICAgICAgICAvKiBDcmVhdGUgbmV3IGZpbGUgb3IgZGlyZWN0b3J5
ICovCj4gKyAgICAgICAgb2xkX25wID0gKHJhbWZzX25vZGUgKikgdnAxLT52X2RhdGE7Cj4gKyAg
ICAgICAgbnAgPSByYW1mc19hZGRfbm9kZSgocmFtZnNfbm9kZSAqKSBkdnAyLT52X2RhdGEsIG5h
bWUyLCBvbGRfbnAtPnJuX3R5cGUpOwo+ICsgICAgICAgIGlmIChucCA9PSBOVUxMKQo+ICsgICAg
ICAgICAgICByZXR1cm4gRU5PTUVNOwo+ICsKPiArICAgICAgICBpZiAob2xkX25wLT5ybl9idWYp
IHsKPiArICAgICAgICAgICAgLyogQ29weSBmaWxlIGRhdGEgKi8KPiArICAgICAgICAgICAgbnAt
PnJuX2J1ZiA9IG9sZF9ucC0+cm5fYnVmOwo+ICsgICAgICAgICAgICBucC0+cm5fc2l6ZSA9IG9s
ZF9ucC0+cm5fc2l6ZTsKPiArICAgICAgICAgICAgbnAtPnJuX2J1ZnNpemUgPSBvbGRfbnAtPnJu
X2J1ZnNpemU7Cj4gKyAgICAgICAgICAgIG9sZF9ucC0+cm5fYnVmID0gTlVMTDsKPiArICAgICAg
ICB9Cj4gKyAgICAgICAgLyogUmVtb3ZlIHNvdXJjZSBmaWxlICovCj4gKyAgICAgICAgcmFtZnNf
cmVtb3ZlX25vZGUoKHJhbWZzX25vZGUgKikgZHZwMS0+dl9kYXRhLCAocmFtZnNfbm9kZSAqKSB2
cDEtPnZfZGF0YSk7Cj4gKyAgICB9Cj4gKyAgICByZXR1cm4gMDsKPiArfQo+ICsKPiArLyoKPiAr
ICogQHZwOiB2bm9kZSBvZiB0aGUgZGlyZWN0b3J5Lgo+ICsgKi8KPiArc3RhdGljIGludAo+ICty
YW1mc19yZWFkZGlyKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCBmaWxlICpmcCwgc3RydWN0IGRp
cmVudCAqZGlyKQo+ICt7Cj4gKyAgICBzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAsICpkbnA7Cj4gKyAg
ICBpbnQgaTsKPiArCj4gKyAgICBtdXRleF9sb2NrKCZyYW1mc19sb2NrKTsKPiArCj4gKyAgICBz
ZXRfdGltZXNfdG9fbm93KCYoKChyYW1mc19ub2RlICopIHZwLT52X2RhdGEpLT5ybl9hdGltZSkp
Owo+ICsKPiArICAgIGlmIChmcC0+Zl9vZmZzZXQgPT0gMCkgewo+ICsgICAgICAgIGRpci0+ZF90
eXBlID0gRFRfRElSOwo+ICsgICAgICAgIHN0cmxjcHkoKGNoYXIgKikgJmRpci0+ZF9uYW1lLCAi
LiIsIHNpemVvZihkaXItPmRfbmFtZSkpOwo+ICsgICAgfSBlbHNlIGlmIChmcC0+Zl9vZmZzZXQg
PT0gMSkgewo+ICsgICAgICAgIGRpci0+ZF90eXBlID0gRFRfRElSOwo+ICsgICAgICAgIHN0cmxj
cHkoKGNoYXIgKikgJmRpci0+ZF9uYW1lLCAiLi4iLCBzaXplb2YoZGlyLT5kX25hbWUpKTsKPiAr
ICAgIH0gZWxzZSB7Cj4gKyAgICAgICAgZG5wID0gKHJhbWZzX25vZGUgKikgdnAtPnZfZGF0YTsK
PiArICAgICAgICBucCA9IGRucC0+cm5fY2hpbGQ7Cj4gKyAgICAgICAgaWYgKG5wID09IE5VTEwp
IHsKPiArICAgICAgICAgICAgbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKPiArICAgICAgICAg
ICAgcmV0dXJuIEVOT0VOVDsKPiArICAgICAgICB9Cj4gKwo+ICsgICAgICAgIGZvciAoaSA9IDA7
IGkgIT0gKGZwLT5mX29mZnNldCAtIDIpOyBpKyspIHsKPiArICAgICAgICAgICAgbnAgPSBucC0+
cm5fbmV4dDsKPiArICAgICAgICAgICAgaWYgKG5wID09IE5VTEwpIHsKPiArICAgICAgICAgICAg
ICAgIG11dGV4X3VubG9jaygmcmFtZnNfbG9jayk7Cj4gKyAgICAgICAgICAgICAgICByZXR1cm4g
RU5PRU5UOwo+ICsgICAgICAgICAgICB9Cj4gKyAgICAgICAgfQo+ICsgICAgICAgIGlmIChucC0+
cm5fdHlwZSA9PSBWRElSKQo+ICsgICAgICAgICAgICBkaXItPmRfdHlwZSA9IERUX0RJUjsKPiAr
ICAgICAgICBlbHNlIGlmIChucC0+cm5fdHlwZSA9PSBWTE5LKQo+ICsgICAgICAgICAgICBkaXIt
PmRfdHlwZSA9IERUX0xOSzsKPiArICAgICAgICBlbHNlCj4gKyAgICAgICAgICAgIGRpci0+ZF90
eXBlID0gRFRfUkVHOwo+ICsgICAgICAgIHN0cmxjcHkoKGNoYXIgKikgJmRpci0+ZF9uYW1lLCBu
cC0+cm5fbmFtZSwKPiArICAgICAgICAgICAgICAgIHNpemVvZihkaXItPmRfbmFtZSkpOwo+ICsg
ICAgfQo+ICsgICAgZGlyLT5kX2ZpbGVubyA9IGZwLT5mX29mZnNldDsKPiArLy8JZGlyLT5kX25h
bWVsZW4gPSBzdHJsZW4oZGlyLT5kX25hbWUpOwo+ICsKPiArICAgIGZwLT5mX29mZnNldCsrOwo+
ICsKPiArICAgIG11dGV4X3VubG9jaygmcmFtZnNfbG9jayk7Cj4gKyAgICByZXR1cm4gMDsKPiAr
fQo+ICsKPiAraW50Cj4gK3JhbWZzX2luaXQodm9pZCkKPiArewo+ICsgICAgcmV0dXJuIDA7Cj4g
K30KPiArCj4gK3N0YXRpYyBpbnQKPiArcmFtZnNfZ2V0YXR0cihzdHJ1Y3Qgdm5vZGUgKnZub2Rl
LCBzdHJ1Y3QgdmF0dHIgKmF0dHIpCj4gK3sKPiArICAgIGF0dHItPnZhX25vZGVpZCA9IHZub2Rl
LT52X2lubzsKPiArICAgIGF0dHItPnZhX3NpemUgPSB2bm9kZS0+dl9zaXplOwo+ICsKPiArICAg
IHN0cnVjdCByYW1mc19ub2RlICpucCA9IChyYW1mc19ub2RlICopIHZub2RlLT52X2RhdGE7Cj4g
KyAgICBhdHRyLT52YV90eXBlID0gKHZ0eXBlKSBucC0+cm5fdHlwZTsKPiArCj4gKyAgICBtZW1j
cHkoJihhdHRyLT52YV9hdGltZSksICYobnAtPnJuX2F0aW1lKSwgc2l6ZW9mKHN0cnVjdCB0aW1l
c3BlYykpOwo+ICsgICAgbWVtY3B5KCYoYXR0ci0+dmFfY3RpbWUpLCAmKG5wLT5ybl9jdGltZSks
IHNpemVvZihzdHJ1Y3QgdGltZXNwZWMpKTsKPiArICAgIG1lbWNweSgmKGF0dHItPnZhX210aW1l
KSwgJihucC0+cm5fbXRpbWUpLCBzaXplb2Yoc3RydWN0IHRpbWVzcGVjKSk7Cj4gKwo+ICsgICAg
YXR0ci0+dmFfbW9kZSA9IG5wLT5ybl9tb2RlOwo+ICsKPiArICAgIHJldHVybiAwOwo+ICt9Cj4g
Kwo+ICtzdGF0aWMgaW50Cj4gK3JhbWZzX3NldGF0dHIoc3RydWN0IHZub2RlICp2bm9kZSwgc3Ry
dWN0IHZhdHRyICphdHRyKSB7Cj4gKyAgICBzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSAocmFtZnNf
bm9kZSAqKSB2bm9kZS0+dl9kYXRhOwo+ICsKPiArICAgIGlmIChhdHRyLT52YV9tYXNrICYgQVRf
QVRJTUUpIHsKPiArICAgICAgICBtZW1jcHkoJihucC0+cm5fYXRpbWUpLCAmKGF0dHItPnZhX2F0
aW1lKSwgc2l6ZW9mKHN0cnVjdCB0aW1lc3BlYykpOwo+ICsgICAgfQo+ICsKPiArICAgIGlmIChh
dHRyLT52YV9tYXNrICYgQVRfQ1RJTUUpIHsKPiArICAgICAgICBtZW1jcHkoJihucC0+cm5fY3Rp
bWUpLCAmKGF0dHItPnZhX2N0aW1lKSwgc2l6ZW9mKHN0cnVjdCB0aW1lc3BlYykpOwo+ICsgICAg
fQo+ICsKPiArICAgIGlmIChhdHRyLT52YV9tYXNrICYgQVRfTVRJTUUpIHsKPiArICAgICAgICBt
ZW1jcHkoJihucC0+cm5fbXRpbWUpLCAmKGF0dHItPnZhX210aW1lKSwgc2l6ZW9mKHN0cnVjdCB0
aW1lc3BlYykpOwo+ICsgICAgfQo+ICsKPiArICAgIGlmIChhdHRyLT52YV9tYXNrICYgQVRfTU9E
RSkgewo+ICsgICAgICAgIG5wLT5ybl9tb2RlID0gYXR0ci0+dmFfbW9kZTsKPiArICAgIH0KPiAr
Cj4gKyAgICByZXR1cm4gMDsKPiArfQo+ICsKPiArI2RlZmluZSByYW1mc19vcGVuICAgICAgKCh2
bm9wX29wZW5fdCl2b3BfbnVsbG9wKQo+ICsjZGVmaW5lIHJhbWZzX2Nsb3NlICAgICAoKHZub3Bf
Y2xvc2VfdCl2b3BfbnVsbG9wKQo+ICsjZGVmaW5lIHJhbWZzX3NlZWsgICAgICAoKHZub3Bfc2Vl
a190KXZvcF9udWxsb3ApCj4gKyNkZWZpbmUgcmFtZnNfaW9jdGwgICAgICgodm5vcF9pb2N0bF90
KXZvcF9laW52YWwpCj4gKyNkZWZpbmUgcmFtZnNfZnN5bmMgICAgICgodm5vcF9mc3luY190KXZv
cF9udWxsb3ApCj4gKyNkZWZpbmUgcmFtZnNfaW5hY3RpdmUgICgodm5vcF9pbmFjdGl2ZV90KXZv
cF9udWxsb3ApCj4gKyNkZWZpbmUgcmFtZnNfbGluayAgICAgICgodm5vcF9saW5rX3Qpdm9wX2Vw
ZXJtKQo+ICsjZGVmaW5lIHJhbWZzX2ZhbGxvY2F0ZSAoKHZub3BfZmFsbG9jYXRlX3Qpdm9wX251
bGxvcCkKPiArCj4gKy8qCj4gKyAqIHZub2RlIG9wZXJhdGlvbnMKPiArICovCj4gK3N0cnVjdCB2
bm9wcyByYW1mc192bm9wcyA9IHsKPiArICAgICAgICByYW1mc19vcGVuLCAgICAgICAgICAgICAv
KiBvcGVuICovCj4gKyAgICAgICAgcmFtZnNfY2xvc2UsICAgICAgICAgICAgLyogY2xvc2UgKi8K
PiArICAgICAgICByYW1mc19yZWFkLCAgICAgICAgICAgICAvKiByZWFkICovCj4gKyAgICAgICAg
cmFtZnNfd3JpdGUsICAgICAgICAgICAgLyogd3JpdGUgKi8KPiArICAgICAgICByYW1mc19zZWVr
LCAgICAgICAgICAgICAvKiBzZWVrICovCj4gKyAgICAgICAgcmFtZnNfaW9jdGwsICAgICAgICAg
ICAgLyogaW9jdGwgKi8KPiArICAgICAgICByYW1mc19mc3luYywgICAgICAgICAgICAvKiBmc3lu
YyAqLwo+ICsgICAgICAgIHJhbWZzX3JlYWRkaXIsICAgICAgICAgIC8qIHJlYWRkaXIgKi8KPiAr
ICAgICAgICByYW1mc19sb29rdXAsICAgICAgICAgICAvKiBsb29rdXAgKi8KPiArICAgICAgICBy
YW1mc19jcmVhdGUsICAgICAgICAgICAvKiBjcmVhdGUgKi8KPiArICAgICAgICByYW1mc19yZW1v
dmUsICAgICAgICAgICAvKiByZW1vdmUgKi8KPiArICAgICAgICByYW1mc19yZW5hbWUsICAgICAg
ICAgICAvKiByZW1hbWUgKi8KPiArICAgICAgICByYW1mc19ta2RpciwgICAgICAgICAgICAvKiBt
a2RpciAqLwo+ICsgICAgICAgIHJhbWZzX3JtZGlyLCAgICAgICAgICAgIC8qIHJtZGlyICovCj4g
KyAgICAgICAgcmFtZnNfZ2V0YXR0ciwgICAgICAgICAgLyogZ2V0YXR0ciAqLwo+ICsgICAgICAg
IHJhbWZzX3NldGF0dHIsICAgICAgICAgIC8qIHNldGF0dHIgKi8KPiArICAgICAgICByYW1mc19p
bmFjdGl2ZSwgICAgICAgICAvKiBpbmFjdGl2ZSAqLwo+ICsgICAgICAgIHJhbWZzX3RydW5jYXRl
LCAgICAgICAgIC8qIHRydW5jYXRlICovCj4gKyAgICAgICAgcmFtZnNfbGluaywgICAgICAgICAg
ICAgLyogbGluayAqLwo+ICsgICAgICAgICh2bm9wX2NhY2hlX3QpIG51bGxwdHIsIC8qIGFyYyAq
Lwo+ICsgICAgICAgIHJhbWZzX2ZhbGxvY2F0ZSwgICAgICAgIC8qIGZhbGxvY2F0ZSAqLwo+ICsg
ICAgICAgIHJhbWZzX3JlYWRsaW5rLCAgICAgICAgIC8qIHJlYWQgbGluayAqLwo+ICsgICAgICAg
IHJhbWZzX3N5bWxpbmssICAgICAgICAgIC8qIHN5bWJvbGljIGxpbmsgKi8KPiArfTsKPiArCj4g
LS0gCj4gMi4xOS4yCj4gCj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KPiBNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Cj4gTWluaW9zLWRldmVsQGxp
c3RzLnhlbnByb2plY3Qub3JnCj4gaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFu
L2xpc3RpbmZvL21pbmlvcy1kZXZlbAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxp
c3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9s
aXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Feb 20 14:22:54 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 20 Feb 2019 14:22:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gwSly-0006nt-6k; Wed, 20 Feb 2019 14:22:54 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=MYmH=Q3=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1gwSlw-0006nm-Et
 for minios-devel@lists.xen.org; Wed, 20 Feb 2019 14:22:52 +0000
X-Inumbo-ID: ffdd5ba8-351a-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id ffdd5ba8-351a-11e9-bc90-bc764e045a96;
 Wed, 20 Feb 2019 14:22:49 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id A6AE1104E49;
 Wed, 20 Feb 2019 15:22:48 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id gXM4KIOsHqf0; Wed, 20 Feb 2019 15:22:48 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 615E9104DEC
 for <minios-devel@lists.xen.org>; Wed, 20 Feb 2019 15:22:46 +0100 (CET)
Received: from PALLENE.office.hd ([169.254.1.27]) by ENCELADUS.office.hd
 ([192.168.24.52]) with mapi id 14.03.0319.002; Wed, 20 Feb 2019 15:22:45
 +0100
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: Yuri Volchkov <yuri.volchkov@neclab.eu>
Thread-Topic: [Minios-devel] [UNIKRAFT PATCH v2 2/6] lib/ramfs: tabify
 imported ramfs code
Thread-Index: AQHUv7sQl4vQD6MntUOp6/BRDxKMWqXov0SA
Date: Wed, 20 Feb 2019 14:22:45 +0000
Message-ID: <A4F0D08D-D529-4319-BA25-815BE2D28467@neclab.eu>
References: <20190208143108.27175-1-yuri.volchkov@neclab.eu>
 <20190208143108.27175-3-yuri.volchkov@neclab.eu>
In-Reply-To: <20190208143108.27175-3-yuri.volchkov@neclab.eu>
Accept-Language: en-GB, gl-ES, de-DE, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [10.1.2.186]
Content-ID: <D29AF7AF4B23A340A730B85A0460771A@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 2/6] lib/ramfs: tabify
 imported ramfs code
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>, Sharan
 Santhanam <Sharan.Santhanam@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

UmV2aWV3ZWQtYnk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1PgoKPiBP
biA4LiBGZWIgMjAxOSwgYXQgMTU6MzEsIFl1cmkgVm9sY2hrb3YgPHl1cmkudm9sY2hrb3ZAbmVj
bGFiLmV1PiB3cm90ZToKPiAKPiBUbyBjb21wbHkgd2l0aCBVbmlrcmFmdCBjb2Rpbmcgc3R5bGUs
IGluZGVudHMgbXVzdCBiZSB0YWJzLCBub3QKPiBzcGFjZXMuIEltcG9ydGVkIGNvZGUgd2FzIGEg
bWl4dHVyZSBvZiBib3RoLgo+IAo+IFNpZ25lZC1vZmYtYnk6IFl1cmkgVm9sY2hrb3YgPHl1cmku
dm9sY2hrb3ZAbmVjbGFiLmV1Pgo+IC0tLQo+IGxpYi9yYW1mcy9yYW1mcy5oICAgICAgICB8ICAy
NiArLQo+IGxpYi9yYW1mcy9yYW1mc192ZnNvcHMuYyB8ICAzMiArLQo+IGxpYi9yYW1mcy9yYW1m
c192bm9wcy5jICB8IDkxNiArKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0K
PiAzIGZpbGVzIGNoYW5nZWQsIDQ4NyBpbnNlcnRpb25zKCspLCA0ODcgZGVsZXRpb25zKC0pCj4g
Cj4gZGlmZiAtLWdpdCBhL2xpYi9yYW1mcy9yYW1mcy5oIGIvbGliL3JhbWZzL3JhbWZzLmgKPiBp
bmRleCA4OGNjYmU3Mi4uZTRlZWI2NWYgMTAwNjQ0Cj4gLS0tIGEvbGliL3JhbWZzL3JhbWZzLmgK
PiArKysgYi9saWIvcmFtZnMvcmFtZnMuaAo+IEBAIC00NiwxOSArNDYsMTkgQEAKPiAgKiBGaWxl
L2RpcmVjdG9yeSBub2RlIGZvciBSQU1GUwo+ICAqLwo+IHN0cnVjdCByYW1mc19ub2RlIHsKPiAt
ICAgIHN0cnVjdCByYW1mc19ub2RlICpybl9uZXh0OyAgIC8qIG5leHQgbm9kZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkgKi8KPiAtICAgIHN0cnVjdCByYW1mc19ub2RlICpybl9jaGlsZDsgIC8qIGZp
cnN0IGNoaWxkIG5vZGUgKi8KPiAtICAgIGludCBybl90eXBlOyAgICAvKiBmaWxlIG9yIGRpcmVj
dG9yeSAqLwo+IC0gICAgY2hhciAqcm5fbmFtZTsgICAgLyogbmFtZSAobnVsbC10ZXJtaW5hdGVk
KSAqLwo+IC0gICAgc2l6ZV90IHJuX25hbWVsZW47ICAgIC8qIGxlbmd0aCBvZiBuYW1lIG5vdCBp
bmNsdWRpbmcgdGVybWluYXRvciAqLwo+IC0gICAgc2l6ZV90IHJuX3NpemU7ICAgIC8qIGZpbGUg
c2l6ZSAqLwo+IC0gICAgY2hhciAqcm5fYnVmOyAgICAvKiBidWZmZXIgdG8gdGhlIGZpbGUgZGF0
YSAqLwo+IC0gICAgc2l6ZV90IHJuX2J1ZnNpemU7ICAgIC8qIGFsbG9jYXRlZCBidWZmZXIgc2l6
ZSAqLwo+IC0gICAgc3RydWN0IHRpbWVzcGVjIHJuX2N0aW1lOwo+IC0gICAgc3RydWN0IHRpbWVz
cGVjIHJuX2F0aW1lOwo+IC0gICAgc3RydWN0IHRpbWVzcGVjIHJuX210aW1lOwo+IC0gICAgaW50
IHJuX21vZGU7Cj4gLSAgICBib29sIHJuX293bnNfYnVmOwo+ICsJc3RydWN0IHJhbWZzX25vZGUg
KnJuX25leHQ7ICAgLyogbmV4dCBub2RlIGluIHRoZSBzYW1lIGRpcmVjdG9yeSAqLwo+ICsJc3Ry
dWN0IHJhbWZzX25vZGUgKnJuX2NoaWxkOyAgLyogZmlyc3QgY2hpbGQgbm9kZSAqLwo+ICsJaW50
IHJuX3R5cGU7ICAgIC8qIGZpbGUgb3IgZGlyZWN0b3J5ICovCj4gKwljaGFyICpybl9uYW1lOyAg
ICAvKiBuYW1lIChudWxsLXRlcm1pbmF0ZWQpICovCj4gKwlzaXplX3Qgcm5fbmFtZWxlbjsgICAg
LyogbGVuZ3RoIG9mIG5hbWUgbm90IGluY2x1ZGluZyB0ZXJtaW5hdG9yICovCj4gKwlzaXplX3Qg
cm5fc2l6ZTsgICAgLyogZmlsZSBzaXplICovCj4gKwljaGFyICpybl9idWY7ICAgIC8qIGJ1ZmZl
ciB0byB0aGUgZmlsZSBkYXRhICovCj4gKwlzaXplX3Qgcm5fYnVmc2l6ZTsgICAgLyogYWxsb2Nh
dGVkIGJ1ZmZlciBzaXplICovCj4gKwlzdHJ1Y3QgdGltZXNwZWMgcm5fY3RpbWU7Cj4gKwlzdHJ1
Y3QgdGltZXNwZWMgcm5fYXRpbWU7Cj4gKwlzdHJ1Y3QgdGltZXNwZWMgcm5fbXRpbWU7Cj4gKwlp
bnQgcm5fbW9kZTsKPiArCWJvb2wgcm5fb3duc19idWY7Cj4gfTsKPiAKPiBzdHJ1Y3QgcmFtZnNf
bm9kZSAqcmFtZnNfYWxsb2NhdGVfbm9kZShjb25zdCBjaGFyICpuYW1lLCBpbnQgdHlwZSk7Cj4g
ZGlmZiAtLWdpdCBhL2xpYi9yYW1mcy9yYW1mc192ZnNvcHMuYyBiL2xpYi9yYW1mcy9yYW1mc192
ZnNvcHMuYwo+IGluZGV4IDcyZmU3ZWRiLi41M2FlNzU4YSAxMDA2NDQKPiAtLS0gYS9saWIvcmFt
ZnMvcmFtZnNfdmZzb3BzLmMKPiArKysgYi9saWIvcmFtZnMvcmFtZnNfdmZzb3BzLmMKPiBAQCAt
NDksMTIgKzQ5LDEyIEBAIHN0YXRpYyBpbnQgcmFtZnNfdW5tb3VudChzdHJ1Y3QgbW91bnQgKm1w
LCBpbnQgZmxhZ3MpOwo+ICAqIEZpbGUgc3lzdGVtIG9wZXJhdGlvbnMKPiAgKi8KPiBzdHJ1Y3Qg
dmZzb3BzIHJhbWZzX3Zmc29wcyA9IHsKPiAtICAgICAgICByYW1mc19tb3VudCwgICAgICAgLyog
bW91bnQgKi8KPiAtICAgICAgICByYW1mc191bm1vdW50LCAgICAgLyogdW5tb3VudCAqLwo+IC0g
ICAgICAgIHJhbWZzX3N5bmMsICAgICAgICAvKiBzeW5jICovCj4gLSAgICAgICAgcmFtZnNfdmdl
dCwgICAgICAgIC8qIHZnZXQgKi8KPiAtICAgICAgICByYW1mc19zdGF0ZnMsICAgICAgLyogc3Rh
dGZzICovCj4gLSAgICAgICAgJnJhbWZzX3Zub3BzLCAgICAgIC8qIHZub3BzICovCj4gKwkJcmFt
ZnNfbW91bnQsICAgICAgIC8qIG1vdW50ICovCj4gKwkJcmFtZnNfdW5tb3VudCwgICAgIC8qIHVu
bW91bnQgKi8KPiArCQlyYW1mc19zeW5jLCAgICAgICAgLyogc3luYyAqLwo+ICsJCXJhbWZzX3Zn
ZXQsICAgICAgICAvKiB2Z2V0ICovCj4gKwkJcmFtZnNfc3RhdGZzLCAgICAgIC8qIHN0YXRmcyAq
Lwo+ICsJCSZyYW1mc192bm9wcywgICAgICAvKiB2bm9wcyAqLwo+IH07Cj4gCj4gLyoKPiBAQCAt
NjMsMTYgKzYzLDE2IEBAIHN0cnVjdCB2ZnNvcHMgcmFtZnNfdmZzb3BzID0gewo+IHN0YXRpYyBp
bnQKPiByYW1mc19tb3VudChzdHJ1Y3QgbW91bnQgKm1wLCBjb25zdCBjaGFyICpkZXYsIGludCBm
bGFncywgY29uc3Qgdm9pZCAqZGF0YSkKPiB7Cj4gLSAgICBzdHJ1Y3QgcmFtZnNfbm9kZSAqbnA7
Cj4gKwlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnA7Cj4gCj4gLSAgICBEUFJJTlRGKCgicmFtZnNfbW91
bnQ6IGRldj0lc1xuIiwgZGV2KSk7Cj4gKwlEUFJJTlRGKCgicmFtZnNfbW91bnQ6IGRldj0lc1xu
IiwgZGV2KSk7Cj4gCj4gLSAgICAvKiBDcmVhdGUgYSByb290IG5vZGUgKi8KPiAtICAgIG5wID0g
cmFtZnNfYWxsb2NhdGVfbm9kZSgiLyIsIFZESVIpOwo+IC0gICAgaWYgKG5wID09IE5VTEwpCj4g
LSAgICAgICAgcmV0dXJuIEVOT01FTTsKPiAtICAgIG1wLT5tX3Jvb3QtPmRfdm5vZGUtPnZfZGF0
YSA9IG5wOwo+IC0gICAgcmV0dXJuIDA7Cj4gKwkvKiBDcmVhdGUgYSByb290IG5vZGUgKi8KPiAr
CW5wID0gcmFtZnNfYWxsb2NhdGVfbm9kZSgiLyIsIFZESVIpOwo+ICsJaWYgKG5wID09IE5VTEwp
Cj4gKwkJcmV0dXJuIEVOT01FTTsKPiArCW1wLT5tX3Jvb3QtPmRfdm5vZGUtPnZfZGF0YSA9IG5w
Owo+ICsJcmV0dXJuIDA7Cj4gfQo+IAo+IC8qCj4gQEAgLTg1LDYgKzg1LDYgQEAgcmFtZnNfbW91
bnQoc3RydWN0IG1vdW50ICptcCwgY29uc3QgY2hhciAqZGV2LCBpbnQgZmxhZ3MsIGNvbnN0IHZv
aWQgKmRhdGEpCj4gc3RhdGljIGludAo+IHJhbWZzX3VubW91bnQoc3RydWN0IG1vdW50ICptcCwg
aW50IGZsYWdzKQo+IHsKPiAtICAgIHJlbGVhc2VfbXBfZGVudHJpZXMobXApOwo+IC0gICAgcmV0
dXJuIDA7Cj4gKwlyZWxlYXNlX21wX2RlbnRyaWVzKG1wKTsKPiArCXJldHVybiAwOwo+IH0KPiBk
aWZmIC0tZ2l0IGEvbGliL3JhbWZzL3JhbWZzX3Zub3BzLmMgYi9saWIvcmFtZnMvcmFtZnNfdm5v
cHMuYwo+IGluZGV4IDkyOTFhNGVjLi44YjU4NmY4OCAxMDA2NDQKPiAtLS0gYS9saWIvcmFtZnMv
cmFtZnNfdm5vcHMuYwo+ICsrKyBiL2xpYi9yYW1mcy9yYW1mc192bm9wcy5jCj4gQEAgLTU0LDMx
MyArNTQsMzEzIEBAIHN0YXRpYyB1aW50NjRfdCBpbm9kZV9jb3VudCA9IDE7IC8qIGlub2RlIDAg
aXMgcmVzZXJ2ZWQgdG8gcm9vdCAqLwo+IHN0YXRpYyB2b2lkCj4gc2V0X3RpbWVzX3RvX25vdyhz
dHJ1Y3QgdGltZXNwZWMgKnRpbWUxLCBzdHJ1Y3QgdGltZXNwZWMgKnRpbWUyID0gbnVsbHB0ciwg
c3RydWN0IHRpbWVzcGVjICp0aW1lMyA9IG51bGxwdHIpCj4gewo+IC0gICAgc3RydWN0IHRpbWVz
cGVjIG5vdzsKPiAtICAgIGNsb2NrX2dldHRpbWUoQ0xPQ0tfUkVBTFRJTUUsICZub3cpOwo+IC0g
ICAgaWYgKHRpbWUxKSB7Cj4gLSAgICAgICAgbWVtY3B5KHRpbWUxLCAmbm93LCBzaXplb2Yoc3Ry
dWN0IHRpbWVzcGVjKSk7Cj4gLSAgICB9Cj4gLSAgICBpZiAodGltZTIpIHsKPiAtICAgICAgICBt
ZW1jcHkodGltZTIsICZub3csIHNpemVvZihzdHJ1Y3QgdGltZXNwZWMpKTsKPiAtICAgIH0KPiAt
ICAgIGlmICh0aW1lMykgewo+IC0gICAgICAgIG1lbWNweSh0aW1lMywgJm5vdywgc2l6ZW9mKHN0
cnVjdCB0aW1lc3BlYykpOwo+IC0gICAgfQo+ICsJc3RydWN0IHRpbWVzcGVjIG5vdzsKPiArCWNs
b2NrX2dldHRpbWUoQ0xPQ0tfUkVBTFRJTUUsICZub3cpOwo+ICsJaWYgKHRpbWUxKSB7Cj4gKwkJ
bWVtY3B5KHRpbWUxLCAmbm93LCBzaXplb2Yoc3RydWN0IHRpbWVzcGVjKSk7Cj4gKwl9Cj4gKwlp
ZiAodGltZTIpIHsKPiArCQltZW1jcHkodGltZTIsICZub3csIHNpemVvZihzdHJ1Y3QgdGltZXNw
ZWMpKTsKPiArCX0KPiArCWlmICh0aW1lMykgewo+ICsJCW1lbWNweSh0aW1lMywgJm5vdywgc2l6
ZW9mKHN0cnVjdCB0aW1lc3BlYykpOwo+ICsJfQo+IH0KPiAKPiBzdHJ1Y3QgcmFtZnNfbm9kZSAq
Cj4gcmFtZnNfYWxsb2NhdGVfbm9kZShjb25zdCBjaGFyICpuYW1lLCBpbnQgdHlwZSkKPiB7Cj4g
LSAgICBzdHJ1Y3QgcmFtZnNfbm9kZSAqbnA7Cj4gLQo+IC0gICAgbnAgPSAocmFtZnNfbm9kZSAq
KSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCByYW1mc19ub2RlKSk7Cj4gLSAgICBpZiAobnAgPT0gTlVM
TCkKPiAtICAgICAgICByZXR1cm4gTlVMTDsKPiAtICAgIG1lbXNldChucCwgMCwgc2l6ZW9mKHN0
cnVjdCByYW1mc19ub2RlKSk7Cj4gLQo+IC0gICAgbnAtPnJuX25hbWVsZW4gPSBzdHJsZW4obmFt
ZSk7Cj4gLSAgICBucC0+cm5fbmFtZSA9IChjaGFyICopIG1hbGxvYyhucC0+cm5fbmFtZWxlbiAr
IDEpOwo+IC0gICAgaWYgKG5wLT5ybl9uYW1lID09IE5VTEwpIHsKPiAtICAgICAgICBmcmVlKG5w
KTsKPiAtICAgICAgICByZXR1cm4gTlVMTDsKPiAtICAgIH0KPiAtICAgIHN0cmxjcHkobnAtPnJu
X25hbWUsIG5hbWUsIG5wLT5ybl9uYW1lbGVuICsgMSk7Cj4gLSAgICBucC0+cm5fdHlwZSA9IHR5
cGU7Cj4gLQo+IC0gICAgaWYgKHR5cGUgPT0gVkRJUikKPiAtICAgICAgICBucC0+cm5fbW9kZSA9
IFNfSUZESVJ8MDc3NzsKPiAtICAgIGVsc2UgaWYgKHR5cGUgPT0gVkxOSykKPiAtICAgICAgICBu
cC0+cm5fbW9kZSA9IFNfSUZMTkt8MDc3NzsKPiAtICAgIGVsc2UKPiAtICAgICAgICBucC0+cm5f
bW9kZSA9IFNfSUZSRUd8MDc3NzsKPiAtCj4gLSAgICBzZXRfdGltZXNfdG9fbm93KCYobnAtPnJu
X2N0aW1lKSwgJihucC0+cm5fYXRpbWUpLCAmKG5wLT5ybl9tdGltZSkpOwo+IC0gICAgbnAtPnJu
X293bnNfYnVmID0gdHJ1ZTsKPiAtCj4gLSAgICByZXR1cm4gbnA7Cj4gKwlzdHJ1Y3QgcmFtZnNf
bm9kZSAqbnA7Cj4gKwo+ICsJbnAgPSAocmFtZnNfbm9kZSAqKSBtYWxsb2Moc2l6ZW9mKHN0cnVj
dCByYW1mc19ub2RlKSk7Cj4gKwlpZiAobnAgPT0gTlVMTCkKPiArCQlyZXR1cm4gTlVMTDsKPiAr
CW1lbXNldChucCwgMCwgc2l6ZW9mKHN0cnVjdCByYW1mc19ub2RlKSk7Cj4gKwo+ICsJbnAtPnJu
X25hbWVsZW4gPSBzdHJsZW4obmFtZSk7Cj4gKwlucC0+cm5fbmFtZSA9IChjaGFyICopIG1hbGxv
YyhucC0+cm5fbmFtZWxlbiArIDEpOwo+ICsJaWYgKG5wLT5ybl9uYW1lID09IE5VTEwpIHsKPiAr
CQlmcmVlKG5wKTsKPiArCQlyZXR1cm4gTlVMTDsKPiArCX0KPiArCXN0cmxjcHkobnAtPnJuX25h
bWUsIG5hbWUsIG5wLT5ybl9uYW1lbGVuICsgMSk7Cj4gKwlucC0+cm5fdHlwZSA9IHR5cGU7Cj4g
Kwo+ICsJaWYgKHR5cGUgPT0gVkRJUikKPiArCQlucC0+cm5fbW9kZSA9IFNfSUZESVJ8MDc3NzsK
PiArCWVsc2UgaWYgKHR5cGUgPT0gVkxOSykKPiArCQlucC0+cm5fbW9kZSA9IFNfSUZMTkt8MDc3
NzsKPiArCWVsc2UKPiArCQlucC0+cm5fbW9kZSA9IFNfSUZSRUd8MDc3NzsKPiArCj4gKwlzZXRf
dGltZXNfdG9fbm93KCYobnAtPnJuX2N0aW1lKSwgJihucC0+cm5fYXRpbWUpLCAmKG5wLT5ybl9t
dGltZSkpOwo+ICsJbnAtPnJuX293bnNfYnVmID0gdHJ1ZTsKPiArCj4gKwlyZXR1cm4gbnA7Cj4g
fQo+IAo+IHZvaWQKPiByYW1mc19mcmVlX25vZGUoc3RydWN0IHJhbWZzX25vZGUgKm5wKQo+IHsK
PiAtICAgIGlmIChucC0+cm5fYnVmICE9IE5VTEwgJiYgbnAtPnJuX293bnNfYnVmKQo+IC0gICAg
ICAgIGZyZWUobnAtPnJuX2J1Zik7Cj4gKwlpZiAobnAtPnJuX2J1ZiAhPSBOVUxMICYmIG5wLT5y
bl9vd25zX2J1ZikKPiArCQlmcmVlKG5wLT5ybl9idWYpOwo+IAo+IC0gICAgZnJlZShucC0+cm5f
bmFtZSk7Cj4gLSAgICBmcmVlKG5wKTsKPiArCWZyZWUobnAtPnJuX25hbWUpOwo+ICsJZnJlZShu
cCk7Cj4gfQo+IAo+IHN0YXRpYyBzdHJ1Y3QgcmFtZnNfbm9kZSAqCj4gcmFtZnNfYWRkX25vZGUo
c3RydWN0IHJhbWZzX25vZGUgKmRucCwgY2hhciAqbmFtZSwgaW50IHR5cGUpCj4gewo+IC0gICAg
c3RydWN0IHJhbWZzX25vZGUgKm5wLCAqcHJldjsKPiArCXN0cnVjdCByYW1mc19ub2RlICpucCwg
KnByZXY7Cj4gCj4gLSAgICBucCA9IHJhbWZzX2FsbG9jYXRlX25vZGUobmFtZSwgdHlwZSk7Cj4g
LSAgICBpZiAobnAgPT0gTlVMTCkKPiAtICAgICAgICByZXR1cm4gTlVMTDsKPiArCW5wID0gcmFt
ZnNfYWxsb2NhdGVfbm9kZShuYW1lLCB0eXBlKTsKPiArCWlmIChucCA9PSBOVUxMKQo+ICsJCXJl
dHVybiBOVUxMOwo+IAo+IC0gICAgbXV0ZXhfbG9jaygmcmFtZnNfbG9jayk7Cj4gKwltdXRleF9s
b2NrKCZyYW1mc19sb2NrKTsKPiAKPiAtICAgIC8qIExpbmsgdG8gdGhlIGRpcmVjdG9yeSBsaXN0
ICovCj4gLSAgICBpZiAoZG5wLT5ybl9jaGlsZCA9PSBOVUxMKSB7Cj4gLSAgICAgICAgZG5wLT5y
bl9jaGlsZCA9IG5wOwo+IC0gICAgfSBlbHNlIHsKPiAtICAgICAgICBwcmV2ID0gZG5wLT5ybl9j
aGlsZDsKPiAtICAgICAgICB3aGlsZSAocHJldi0+cm5fbmV4dCAhPSBOVUxMKQo+IC0gICAgICAg
ICAgICBwcmV2ID0gcHJldi0+cm5fbmV4dDsKPiAtICAgICAgICBwcmV2LT5ybl9uZXh0ID0gbnA7
Cj4gLSAgICB9Cj4gKwkvKiBMaW5rIHRvIHRoZSBkaXJlY3RvcnkgbGlzdCAqLwo+ICsJaWYgKGRu
cC0+cm5fY2hpbGQgPT0gTlVMTCkgewo+ICsJCWRucC0+cm5fY2hpbGQgPSBucDsKPiArCX0gZWxz
ZSB7Cj4gKwkJcHJldiA9IGRucC0+cm5fY2hpbGQ7Cj4gKwkJd2hpbGUgKHByZXYtPnJuX25leHQg
IT0gTlVMTCkKPiArCQkJcHJldiA9IHByZXYtPnJuX25leHQ7Cj4gKwkJcHJldi0+cm5fbmV4dCA9
IG5wOwo+ICsJfQo+IAo+IC0gICAgc2V0X3RpbWVzX3RvX25vdygmKGRucC0+cm5fbXRpbWUpLCAm
KGRucC0+cm5fY3RpbWUpKTsKPiArCXNldF90aW1lc190b19ub3coJihkbnAtPnJuX210aW1lKSwg
JihkbnAtPnJuX2N0aW1lKSk7Cj4gCj4gLSAgICBtdXRleF91bmxvY2soJnJhbWZzX2xvY2spOwo+
IC0gICAgcmV0dXJuIG5wOwo+ICsJbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKPiArCXJldHVy
biBucDsKPiB9Cj4gCj4gc3RhdGljIGludAo+IHJhbWZzX3JlbW92ZV9ub2RlKHN0cnVjdCByYW1m
c19ub2RlICpkbnAsIHN0cnVjdCByYW1mc19ub2RlICpucCkKPiB7Cj4gLSAgICBzdHJ1Y3QgcmFt
ZnNfbm9kZSAqcHJldjsKPiAtCj4gLSAgICBpZiAoZG5wLT5ybl9jaGlsZCA9PSBOVUxMKQo+IC0g
ICAgICAgIHJldHVybiBFQlVTWTsKPiAtCj4gLSAgICBtdXRleF9sb2NrKCZyYW1mc19sb2NrKTsK
PiAtCj4gLSAgICAvKiBVbmxpbmsgZnJvbSB0aGUgZGlyZWN0b3J5IGxpc3QgKi8KPiAtICAgIGlm
IChkbnAtPnJuX2NoaWxkID09IG5wKSB7Cj4gLSAgICAgICAgZG5wLT5ybl9jaGlsZCA9IG5wLT5y
bl9uZXh0Owo+IC0gICAgfSBlbHNlIHsKPiAtICAgICAgICBmb3IgKHByZXYgPSBkbnAtPnJuX2No
aWxkOyBwcmV2LT5ybl9uZXh0ICE9IG5wOwo+IC0gICAgICAgICAgICAgcHJldiA9IHByZXYtPnJu
X25leHQpIHsKPiAtICAgICAgICAgICAgaWYgKHByZXYtPnJuX25leHQgPT0gTlVMTCkgewo+IC0g
ICAgICAgICAgICAgICAgbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKPiAtICAgICAgICAgICAg
ICAgIHJldHVybiBFTk9FTlQ7Cj4gLSAgICAgICAgICAgIH0KPiAtICAgICAgICB9Cj4gLSAgICAg
ICAgcHJldi0+cm5fbmV4dCA9IG5wLT5ybl9uZXh0Owo+IC0gICAgfQo+IC0gICAgcmFtZnNfZnJl
ZV9ub2RlKG5wKTsKPiAtCj4gLSAgICBzZXRfdGltZXNfdG9fbm93KCYoZG5wLT5ybl9tdGltZSks
ICYoZG5wLT5ybl9jdGltZSkpOwo+IC0KPiAtICAgIG11dGV4X3VubG9jaygmcmFtZnNfbG9jayk7
Cj4gLSAgICByZXR1cm4gMDsKPiArCXN0cnVjdCByYW1mc19ub2RlICpwcmV2Owo+ICsKPiArCWlm
IChkbnAtPnJuX2NoaWxkID09IE5VTEwpCj4gKwkJcmV0dXJuIEVCVVNZOwo+ICsKPiArCW11dGV4
X2xvY2soJnJhbWZzX2xvY2spOwo+ICsKPiArCS8qIFVubGluayBmcm9tIHRoZSBkaXJlY3Rvcnkg
bGlzdCAqLwo+ICsJaWYgKGRucC0+cm5fY2hpbGQgPT0gbnApIHsKPiArCQlkbnAtPnJuX2NoaWxk
ID0gbnAtPnJuX25leHQ7Cj4gKwl9IGVsc2Ugewo+ICsJCWZvciAocHJldiA9IGRucC0+cm5fY2hp
bGQ7IHByZXYtPnJuX25leHQgIT0gbnA7Cj4gKwkJCSBwcmV2ID0gcHJldi0+cm5fbmV4dCkgewo+
ICsJCQlpZiAocHJldi0+cm5fbmV4dCA9PSBOVUxMKSB7Cj4gKwkJCQltdXRleF91bmxvY2soJnJh
bWZzX2xvY2spOwo+ICsJCQkJcmV0dXJuIEVOT0VOVDsKPiArCQkJfQo+ICsJCX0KPiArCQlwcmV2
LT5ybl9uZXh0ID0gbnAtPnJuX25leHQ7Cj4gKwl9Cj4gKwlyYW1mc19mcmVlX25vZGUobnApOwo+
ICsKPiArCXNldF90aW1lc190b19ub3coJihkbnAtPnJuX210aW1lKSwgJihkbnAtPnJuX2N0aW1l
KSk7Cj4gKwo+ICsJbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKPiArCXJldHVybiAwOwo+IH0K
PiAKPiBzdGF0aWMgaW50Cj4gcmFtZnNfcmVuYW1lX25vZGUoc3RydWN0IHJhbWZzX25vZGUgKm5w
LCBjaGFyICpuYW1lKQo+IHsKPiAtICAgIHNpemVfdCBsZW47Cj4gLSAgICBjaGFyICp0bXA7Cj4g
LQo+IC0gICAgbGVuID0gc3RybGVuKG5hbWUpOwo+IC0gICAgaWYgKGxlbiA+IE5BTUVfTUFYKSB7
Cj4gLSAgICAgICAgcmV0dXJuIEVOQU1FVE9PTE9ORzsKPiAtICAgIH0KPiAtICAgIGlmIChsZW4g
PD0gbnAtPnJuX25hbWVsZW4pIHsKPiAtICAgICAgICAvKiBSZXVzZSBjdXJyZW50IG5hbWUgYnVm
ZmVyICovCj4gLSAgICAgICAgc3RybGNweShucC0+cm5fbmFtZSwgbmFtZSwgbnAtPnJuX25hbWVs
ZW4gKyAxKTsKPiAtICAgIH0gZWxzZSB7Cj4gLSAgICAgICAgLyogRXhwYW5kIG5hbWUgYnVmZmVy
ICovCj4gLSAgICAgICAgdG1wID0gKGNoYXIgKikgbWFsbG9jKGxlbiArIDEpOwo+IC0gICAgICAg
IGlmICh0bXAgPT0gTlVMTCkKPiAtICAgICAgICAgICAgcmV0dXJuIEVOT01FTTsKPiAtICAgICAg
ICBzdHJsY3B5KHRtcCwgbmFtZSwgbGVuICsgMSk7Cj4gLSAgICAgICAgZnJlZShucC0+cm5fbmFt
ZSk7Cj4gLSAgICAgICAgbnAtPnJuX25hbWUgPSB0bXA7Cj4gLSAgICB9Cj4gLSAgICBucC0+cm5f
bmFtZWxlbiA9IGxlbjsKPiAtICAgIHNldF90aW1lc190b19ub3coJihucC0+cm5fY3RpbWUpKTsK
PiAtICAgIHJldHVybiAwOwo+ICsJc2l6ZV90IGxlbjsKPiArCWNoYXIgKnRtcDsKPiArCj4gKwls
ZW4gPSBzdHJsZW4obmFtZSk7Cj4gKwlpZiAobGVuID4gTkFNRV9NQVgpIHsKPiArCQlyZXR1cm4g
RU5BTUVUT09MT05HOwo+ICsJfQo+ICsJaWYgKGxlbiA8PSBucC0+cm5fbmFtZWxlbikgewo+ICsJ
CS8qIFJldXNlIGN1cnJlbnQgbmFtZSBidWZmZXIgKi8KPiArCQlzdHJsY3B5KG5wLT5ybl9uYW1l
LCBuYW1lLCBucC0+cm5fbmFtZWxlbiArIDEpOwo+ICsJfSBlbHNlIHsKPiArCQkvKiBFeHBhbmQg
bmFtZSBidWZmZXIgKi8KPiArCQl0bXAgPSAoY2hhciAqKSBtYWxsb2MobGVuICsgMSk7Cj4gKwkJ
aWYgKHRtcCA9PSBOVUxMKQo+ICsJCQlyZXR1cm4gRU5PTUVNOwo+ICsJCXN0cmxjcHkodG1wLCBu
YW1lLCBsZW4gKyAxKTsKPiArCQlmcmVlKG5wLT5ybl9uYW1lKTsKPiArCQlucC0+cm5fbmFtZSA9
IHRtcDsKPiArCX0KPiArCW5wLT5ybl9uYW1lbGVuID0gbGVuOwo+ICsJc2V0X3RpbWVzX3RvX25v
dygmKG5wLT5ybl9jdGltZSkpOwo+ICsJcmV0dXJuIDA7Cj4gfQo+IAo+IHN0YXRpYyBpbnQKPiBy
YW1mc19sb29rdXAoc3RydWN0IHZub2RlICpkdnAsIGNoYXIgKm5hbWUsIHN0cnVjdCB2bm9kZSAq
KnZwcCkKPiB7Cj4gLSAgICBzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAsICpkbnA7Cj4gLSAgICBzdHJ1
Y3Qgdm5vZGUgKnZwOwo+IC0gICAgc2l6ZV90IGxlbjsKPiAtICAgIGludCBmb3VuZDsKPiAtCj4g
LSAgICAqdnBwID0gTlVMTDsKPiAtCj4gLSAgICBpZiAoKm5hbWUgPT0gJ1wwJykKPiAtICAgICAg
ICByZXR1cm4gRU5PRU5UOwo+IC0KPiAtICAgIG11dGV4X2xvY2soJnJhbWZzX2xvY2spOwo+IC0K
PiAtICAgIGxlbiA9IHN0cmxlbihuYW1lKTsKPiAtICAgIGRucCA9IChyYW1mc19ub2RlICopIGR2
cC0+dl9kYXRhOwo+IC0gICAgZm91bmQgPSAwOwo+IC0gICAgZm9yIChucCA9IGRucC0+cm5fY2hp
bGQ7IG5wICE9IE5VTEw7IG5wID0gbnAtPnJuX25leHQpIHsKPiAtICAgICAgICBpZiAobnAtPnJu
X25hbWVsZW4gPT0gbGVuICYmCj4gLSAgICAgICAgICAgIG1lbWNtcChuYW1lLCBucC0+cm5fbmFt
ZSwgbGVuKSA9PSAwKSB7Cj4gLSAgICAgICAgICAgIGZvdW5kID0gMTsKPiAtICAgICAgICAgICAg
YnJlYWs7Cj4gLSAgICAgICAgfQo+IC0gICAgfQo+IC0gICAgaWYgKGZvdW5kID09IDApIHsKPiAt
ICAgICAgICBtdXRleF91bmxvY2soJnJhbWZzX2xvY2spOwo+IC0gICAgICAgIHJldHVybiBFTk9F
TlQ7Cj4gLSAgICB9Cj4gLSAgICBpZiAodmdldChkdnAtPnZfbW91bnQsIGlub2RlX2NvdW50Kyss
ICZ2cCkpIHsKPiAtICAgICAgICAvKiBmb3VuZCBpbiBjYWNoZSAqLwo+IC0gICAgICAgICp2cHAg
PSB2cDsKPiAtICAgICAgICBtdXRleF91bmxvY2soJnJhbWZzX2xvY2spOwo+IC0gICAgICAgIHJl
dHVybiAwOwo+IC0gICAgfQo+IC0gICAgaWYgKCF2cCkgewo+IC0gICAgICAgIG11dGV4X3VubG9j
aygmcmFtZnNfbG9jayk7Cj4gLSAgICAgICAgcmV0dXJuIEVOT01FTTsKPiAtICAgIH0KPiAtICAg
IHZwLT52X2RhdGEgPSBucDsKPiAtICAgIHZwLT52X21vZGUgPSBBTExQRVJNUzsKPiAtICAgIHZw
LT52X3R5cGUgPSBucC0+cm5fdHlwZTsKPiAtICAgIHZwLT52X3NpemUgPSBucC0+cm5fc2l6ZTsK
PiAtCj4gLSAgICBtdXRleF91bmxvY2soJnJhbWZzX2xvY2spOwo+IC0KPiAtICAgICp2cHAgPSB2
cDsKPiAtCj4gLSAgICByZXR1cm4gMDsKPiArCXN0cnVjdCByYW1mc19ub2RlICpucCwgKmRucDsK
PiArCXN0cnVjdCB2bm9kZSAqdnA7Cj4gKwlzaXplX3QgbGVuOwo+ICsJaW50IGZvdW5kOwo+ICsK
PiArCSp2cHAgPSBOVUxMOwo+ICsKPiArCWlmICgqbmFtZSA9PSAnXDAnKQo+ICsJCXJldHVybiBF
Tk9FTlQ7Cj4gKwo+ICsJbXV0ZXhfbG9jaygmcmFtZnNfbG9jayk7Cj4gKwo+ICsJbGVuID0gc3Ry
bGVuKG5hbWUpOwo+ICsJZG5wID0gKHJhbWZzX25vZGUgKikgZHZwLT52X2RhdGE7Cj4gKwlmb3Vu
ZCA9IDA7Cj4gKwlmb3IgKG5wID0gZG5wLT5ybl9jaGlsZDsgbnAgIT0gTlVMTDsgbnAgPSBucC0+
cm5fbmV4dCkgewo+ICsJCWlmIChucC0+cm5fbmFtZWxlbiA9PSBsZW4gJiYKPiArCQkJbWVtY21w
KG5hbWUsIG5wLT5ybl9uYW1lLCBsZW4pID09IDApIHsKPiArCQkJZm91bmQgPSAxOwo+ICsJCQli
cmVhazsKPiArCQl9Cj4gKwl9Cj4gKwlpZiAoZm91bmQgPT0gMCkgewo+ICsJCW11dGV4X3VubG9j
aygmcmFtZnNfbG9jayk7Cj4gKwkJcmV0dXJuIEVOT0VOVDsKPiArCX0KPiArCWlmICh2Z2V0KGR2
cC0+dl9tb3VudCwgaW5vZGVfY291bnQrKywgJnZwKSkgewo+ICsJCS8qIGZvdW5kIGluIGNhY2hl
ICovCj4gKwkJKnZwcCA9IHZwOwo+ICsJCW11dGV4X3VubG9jaygmcmFtZnNfbG9jayk7Cj4gKwkJ
cmV0dXJuIDA7Cj4gKwl9Cj4gKwlpZiAoIXZwKSB7Cj4gKwkJbXV0ZXhfdW5sb2NrKCZyYW1mc19s
b2NrKTsKPiArCQlyZXR1cm4gRU5PTUVNOwo+ICsJfQo+ICsJdnAtPnZfZGF0YSA9IG5wOwo+ICsJ
dnAtPnZfbW9kZSA9IEFMTFBFUk1TOwo+ICsJdnAtPnZfdHlwZSA9IG5wLT5ybl90eXBlOwo+ICsJ
dnAtPnZfc2l6ZSA9IG5wLT5ybl9zaXplOwo+ICsKPiArCW11dGV4X3VubG9jaygmcmFtZnNfbG9j
ayk7Cj4gKwo+ICsJKnZwcCA9IHZwOwo+ICsKPiArCXJldHVybiAwOwo+IH0KPiAKPiBzdGF0aWMg
aW50Cj4gcmFtZnNfbWtkaXIoc3RydWN0IHZub2RlICpkdnAsIGNoYXIgKm5hbWUsIG1vZGVfdCBt
b2RlKQo+IHsKPiAtICAgIHN0cnVjdCByYW1mc19ub2RlICpucDsKPiArCXN0cnVjdCByYW1mc19u
b2RlICpucDsKPiAKPiAtICAgIERQUklOVEYoKCJta2RpciAlc1xuIiwgbmFtZSkpOwo+IC0gICAg
aWYgKHN0cmxlbihuYW1lKSA+IE5BTUVfTUFYKSB7Cj4gLSAgICAgICAgcmV0dXJuIEVOQU1FVE9P
TE9ORzsKPiAtICAgIH0KPiArCURQUklOVEYoKCJta2RpciAlc1xuIiwgbmFtZSkpOwo+ICsJaWYg
KHN0cmxlbihuYW1lKSA+IE5BTUVfTUFYKSB7Cj4gKwkJcmV0dXJuIEVOQU1FVE9PTE9ORzsKPiAr
CX0KPiAKPiAtICAgIGlmICghU19JU0RJUihtb2RlKSkKPiAtICAgICAgICByZXR1cm4gRUlOVkFM
Owo+ICsJaWYgKCFTX0lTRElSKG1vZGUpKQo+ICsJCXJldHVybiBFSU5WQUw7Cj4gCj4gLSAgICBu
cCA9IChyYW1mc19ub2RlICopIHJhbWZzX2FkZF9ub2RlKChyYW1mc19ub2RlICopIGR2cC0+dl9k
YXRhLCBuYW1lLCBWRElSKTsKPiAtICAgIGlmIChucCA9PSBOVUxMKQo+IC0gICAgICAgIHJldHVy
biBFTk9NRU07Cj4gLSAgICBucC0+cm5fc2l6ZSA9IDA7Cj4gKwlucCA9IChyYW1mc19ub2RlICop
IHJhbWZzX2FkZF9ub2RlKChyYW1mc19ub2RlICopIGR2cC0+dl9kYXRhLCBuYW1lLCBWRElSKTsK
PiArCWlmIChucCA9PSBOVUxMKQo+ICsJCXJldHVybiBFTk9NRU07Cj4gKwlucC0+cm5fc2l6ZSA9
IDA7Cj4gCj4gLSAgICByZXR1cm4gMDsKPiArCXJldHVybiAwOwo+IH0KPiAKPiBzdGF0aWMgaW50
Cj4gcmFtZnNfc3ltbGluayhzdHJ1Y3Qgdm5vZGUgKmR2cCwgY2hhciAqbmFtZSwgY2hhciAqbGlu
aykKPiB7Cj4gLSAgICBpZiAoc3RybGVuKG5hbWUpID4gTkFNRV9NQVgpIHsKPiAtICAgICAgICBy
ZXR1cm4gRU5BTUVUT09MT05HOwo+IC0gICAgfQo+IC0gICAgYXV0byBucCA9IHJhbWZzX2FkZF9u
b2RlKChyYW1mc19ub2RlICopIGR2cC0+dl9kYXRhLCBuYW1lLCBWTE5LKTsKPiAtICAgIGlmIChu
cCA9PSBOVUxMKQo+IC0gICAgICAgIHJldHVybiBFTk9NRU07Cj4gLSAgICAvLyBTYXZlIHRoZSBs
aW5rIHRhcmdldCB3aXRob3V0IHRoZSBmaW5hbCBudWxsLCBhcyByZWFkbGluaygpIHdhbnRzIGl0
Lgo+IC0gICAgc2l6ZV90IGxlbiA9IHN0cmxlbihsaW5rKTsKPiAtICAgIG5wLT5ybl9idWYgPSBz
dHJuZHVwKGxpbmssIGxlbik7Cj4gLSAgICBucC0+cm5fYnVmc2l6ZSA9IG5wLT5ybl9zaXplID0g
bGVuOwo+IC0KPiAtICAgIHJldHVybiAwOwo+ICsJaWYgKHN0cmxlbihuYW1lKSA+IE5BTUVfTUFY
KSB7Cj4gKwkJcmV0dXJuIEVOQU1FVE9PTE9ORzsKPiArCX0KPiArCWF1dG8gbnAgPSByYW1mc19h
ZGRfbm9kZSgocmFtZnNfbm9kZSAqKSBkdnAtPnZfZGF0YSwgbmFtZSwgVkxOSyk7Cj4gKwlpZiAo
bnAgPT0gTlVMTCkKPiArCQlyZXR1cm4gRU5PTUVNOwo+ICsJLy8gU2F2ZSB0aGUgbGluayB0YXJn
ZXQgd2l0aG91dCB0aGUgZmluYWwgbnVsbCwgYXMgcmVhZGxpbmsoKSB3YW50cyBpdC4KPiArCXNp
emVfdCBsZW4gPSBzdHJsZW4obGluayk7Cj4gKwlucC0+cm5fYnVmID0gc3RybmR1cChsaW5rLCBs
ZW4pOwo+ICsJbnAtPnJuX2J1ZnNpemUgPSBucC0+cm5fc2l6ZSA9IGxlbjsKPiArCj4gKwlyZXR1
cm4gMDsKPiB9Cj4gCj4gc3RhdGljIGludAo+IHJhbWZzX3JlYWRsaW5rKHN0cnVjdCB2bm9kZSAq
dnAsIHN0cnVjdCB1aW8gKnVpbykKPiB7Cj4gLSAgICBzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSAo
cmFtZnNfbm9kZSAqKSB2cC0+dl9kYXRhOwo+IC0gICAgc2l6ZV90IGxlbjsKPiAtCj4gLSAgICBp
ZiAodnAtPnZfdHlwZSAhPSBWTE5LKSB7Cj4gLSAgICAgICAgcmV0dXJuIEVJTlZBTDsKPiAtICAg
IH0KPiAtICAgIGlmICh1aW8tPnVpb19vZmZzZXQgPCAwKSB7Cj4gLSAgICAgICAgcmV0dXJuIEVJ
TlZBTDsKPiAtICAgIH0KPiAtICAgIGlmICh1aW8tPnVpb19yZXNpZCA9PSAwKSB7Cj4gLSAgICAg
ICAgcmV0dXJuIDA7Cj4gLSAgICB9Cj4gLSAgICBpZiAodWlvLT51aW9fb2Zmc2V0ID49IChvZmZf
dCkgdnAtPnZfc2l6ZSkKPiAtICAgICAgICByZXR1cm4gMDsKPiAtICAgIGlmICh2cC0+dl9zaXpl
IC0gdWlvLT51aW9fb2Zmc2V0IDwgdWlvLT51aW9fcmVzaWQpCj4gLSAgICAgICAgbGVuID0gdnAt
PnZfc2l6ZSAtIHVpby0+dWlvX29mZnNldDsKPiAtICAgIGVsc2UKPiAtICAgICAgICBsZW4gPSB1
aW8tPnVpb19yZXNpZDsKPiAtCj4gLSAgICBzZXRfdGltZXNfdG9fbm93KCAmKG5wLT5ybl9hdGlt
ZSkpOwo+IC0gICAgcmV0dXJuIHVpb21vdmUobnAtPnJuX2J1ZiArIHVpby0+dWlvX29mZnNldCwg
bGVuLCB1aW8pOwo+ICsJc3RydWN0IHJhbWZzX25vZGUgKm5wID0gKHJhbWZzX25vZGUgKikgdnAt
PnZfZGF0YTsKPiArCXNpemVfdCBsZW47Cj4gKwo+ICsJaWYgKHZwLT52X3R5cGUgIT0gVkxOSykg
ewo+ICsJCXJldHVybiBFSU5WQUw7Cj4gKwl9Cj4gKwlpZiAodWlvLT51aW9fb2Zmc2V0IDwgMCkg
ewo+ICsJCXJldHVybiBFSU5WQUw7Cj4gKwl9Cj4gKwlpZiAodWlvLT51aW9fcmVzaWQgPT0gMCkg
ewo+ICsJCXJldHVybiAwOwo+ICsJfQo+ICsJaWYgKHVpby0+dWlvX29mZnNldCA+PSAob2ZmX3Qp
IHZwLT52X3NpemUpCj4gKwkJcmV0dXJuIDA7Cj4gKwlpZiAodnAtPnZfc2l6ZSAtIHVpby0+dWlv
X29mZnNldCA8IHVpby0+dWlvX3Jlc2lkKQo+ICsJCWxlbiA9IHZwLT52X3NpemUgLSB1aW8tPnVp
b19vZmZzZXQ7Cj4gKwllbHNlCj4gKwkJbGVuID0gdWlvLT51aW9fcmVzaWQ7Cj4gKwo+ICsJc2V0
X3RpbWVzX3RvX25vdyggJihucC0+cm5fYXRpbWUpKTsKPiArCXJldHVybiB1aW9tb3ZlKG5wLT5y
bl9idWYgKyB1aW8tPnVpb19vZmZzZXQsIGxlbiwgdWlvKTsKPiB9Cj4gCj4gLyogUmVtb3ZlIGEg
ZGlyZWN0b3J5ICovCj4gc3RhdGljIGludAo+IHJhbWZzX3JtZGlyKHN0cnVjdCB2bm9kZSAqZHZw
LCBzdHJ1Y3Qgdm5vZGUgKnZwLCBjaGFyICpuYW1lKQo+IHsKPiAtICAgIHJldHVybiByYW1mc19y
ZW1vdmVfbm9kZSgocmFtZnNfbm9kZSAqKSBkdnAtPnZfZGF0YSwgKHJhbWZzX25vZGUgKikgdnAt
PnZfZGF0YSk7Cj4gKwlyZXR1cm4gcmFtZnNfcmVtb3ZlX25vZGUoKHJhbWZzX25vZGUgKikgZHZw
LT52X2RhdGEsIChyYW1mc19ub2RlICopIHZwLT52X2RhdGEpOwo+IH0KPiAKPiAvKiBSZW1vdmUg
YSBmaWxlICovCj4gc3RhdGljIGludAo+IHJhbWZzX3JlbW92ZShzdHJ1Y3Qgdm5vZGUgKmR2cCwg
c3RydWN0IHZub2RlICp2cCwgY2hhciAqbmFtZSkKPiB7Cj4gLSAgICBEUFJJTlRGKCgicmVtb3Zl
ICVzIGluICVzXG4iLCBuYW1lLCBkdnAtPnZfcGF0aCkpOwo+IC0gICAgcmV0dXJuIHJhbWZzX3Jl
bW92ZV9ub2RlKChyYW1mc19ub2RlICopIGR2cC0+dl9kYXRhLCAocmFtZnNfbm9kZSAqKSB2cC0+
dl9kYXRhKTsKPiArCURQUklOVEYoKCJyZW1vdmUgJXMgaW4gJXNcbiIsIG5hbWUsIGR2cC0+dl9w
YXRoKSk7Cj4gKwlyZXR1cm4gcmFtZnNfcmVtb3ZlX25vZGUoKHJhbWZzX25vZGUgKikgZHZwLT52
X2RhdGEsIChyYW1mc19ub2RlICopIHZwLT52X2RhdGEpOwo+IH0KPiAKPiAvKiBUcnVuY2F0ZSBm
aWxlICovCj4gc3RhdGljIGludAo+IHJhbWZzX3RydW5jYXRlKHN0cnVjdCB2bm9kZSAqdnAsIG9m
Zl90IGxlbmd0aCkKPiB7Cj4gLSAgICBzdHJ1Y3QgcmFtZnNfbm9kZSAqbnA7Cj4gLSAgICB2b2lk
ICpuZXdfYnVmOwo+IC0gICAgc2l6ZV90IG5ld19zaXplOwo+IC0KPiAtICAgIERQUklOVEYoKCJ0
cnVuY2F0ZSAlcyBsZW5ndGg9JWRcbiIsIHZwLT52X3BhdGgsIGxlbmd0aCkpOwo+IC0gICAgbnAg
PSAocmFtZnNfbm9kZSAqKSB2cC0+dl9kYXRhOwo+IC0KPiAtICAgIGlmIChsZW5ndGggPT0gMCkg
ewo+IC0gICAgICAgIGlmIChucC0+cm5fYnVmICE9IE5VTEwpIHsKPiAtICAgICAgICAgICAgaWYo
bnAtPnJuX293bnNfYnVmKQo+IC0gICAgICAgICAgICAgICAgZnJlZShucC0+cm5fYnVmKTsKPiAt
ICAgICAgICAgICAgbnAtPnJuX2J1ZiA9IE5VTEw7Cj4gLSAgICAgICAgICAgIG5wLT5ybl9idWZz
aXplID0gMDsKPiAtICAgICAgICB9Cj4gLSAgICB9IGVsc2UgaWYgKHNpemVfdChsZW5ndGgpID4g
bnAtPnJuX2J1ZnNpemUpIHsKPiAtICAgICAgICAvLyBYWFg6IHRoaXMgY291bGQgdXNlIGEgcGFn
ZSBsZXZlbCBhbGxvY2F0b3IKPiAtICAgICAgICBuZXdfc2l6ZSA9IHJvdW5kX3BhZ2UobGVuZ3Ro
KTsKPiAtICAgICAgICBuZXdfYnVmID0gbWFsbG9jKG5ld19zaXplKTsKPiAtICAgICAgICBpZiAo
IW5ld19idWYpCj4gLSAgICAgICAgICAgIHJldHVybiBFSU87Cj4gLSAgICAgICAgaWYgKG5wLT5y
bl9zaXplICE9IDApIHsKPiAtICAgICAgICAgICAgbWVtY3B5KG5ld19idWYsIG5wLT5ybl9idWYs
IHZwLT52X3NpemUpOwo+IC0gICAgICAgICAgICBpZihucC0+cm5fb3duc19idWYpCj4gLSAgICAg
ICAgICAgICAgICBmcmVlKG5wLT5ybl9idWYpOwo+IC0gICAgICAgIH0KPiAtICAgICAgICBucC0+
cm5fYnVmID0gKGNoYXIgKikgbmV3X2J1ZjsKPiAtICAgICAgICBucC0+cm5fYnVmc2l6ZSA9IG5l
d19zaXplOwo+IC0gICAgICAgIG5wLT5ybl9vd25zX2J1ZiA9IHRydWU7Cj4gLSAgICB9Cj4gLSAg
ICBucC0+cm5fc2l6ZSA9IGxlbmd0aDsKPiAtICAgIHZwLT52X3NpemUgPSBsZW5ndGg7Cj4gLSAg
ICBzZXRfdGltZXNfdG9fbm93KCYobnAtPnJuX210aW1lKSwgJihucC0+cm5fY3RpbWUpKTsKPiAt
ICAgIHJldHVybiAwOwo+ICsJc3RydWN0IHJhbWZzX25vZGUgKm5wOwo+ICsJdm9pZCAqbmV3X2J1
ZjsKPiArCXNpemVfdCBuZXdfc2l6ZTsKPiArCj4gKwlEUFJJTlRGKCgidHJ1bmNhdGUgJXMgbGVu
Z3RoPSVkXG4iLCB2cC0+dl9wYXRoLCBsZW5ndGgpKTsKPiArCW5wID0gKHJhbWZzX25vZGUgKikg
dnAtPnZfZGF0YTsKPiArCj4gKwlpZiAobGVuZ3RoID09IDApIHsKPiArCQlpZiAobnAtPnJuX2J1
ZiAhPSBOVUxMKSB7Cj4gKwkJCWlmKG5wLT5ybl9vd25zX2J1ZikKPiArCQkJCWZyZWUobnAtPnJu
X2J1Zik7Cj4gKwkJCW5wLT5ybl9idWYgPSBOVUxMOwo+ICsJCQlucC0+cm5fYnVmc2l6ZSA9IDA7
Cj4gKwkJfQo+ICsJfSBlbHNlIGlmIChzaXplX3QobGVuZ3RoKSA+IG5wLT5ybl9idWZzaXplKSB7
Cj4gKwkJLy8gWFhYOiB0aGlzIGNvdWxkIHVzZSBhIHBhZ2UgbGV2ZWwgYWxsb2NhdG9yCj4gKwkJ
bmV3X3NpemUgPSByb3VuZF9wYWdlKGxlbmd0aCk7Cj4gKwkJbmV3X2J1ZiA9IG1hbGxvYyhuZXdf
c2l6ZSk7Cj4gKwkJaWYgKCFuZXdfYnVmKQo+ICsJCQlyZXR1cm4gRUlPOwo+ICsJCWlmIChucC0+
cm5fc2l6ZSAhPSAwKSB7Cj4gKwkJCW1lbWNweShuZXdfYnVmLCBucC0+cm5fYnVmLCB2cC0+dl9z
aXplKTsKPiArCQkJaWYobnAtPnJuX293bnNfYnVmKQo+ICsJCQkJZnJlZShucC0+cm5fYnVmKTsK
PiArCQl9Cj4gKwkJbnAtPnJuX2J1ZiA9IChjaGFyICopIG5ld19idWY7Cj4gKwkJbnAtPnJuX2J1
ZnNpemUgPSBuZXdfc2l6ZTsKPiArCQlucC0+cm5fb3duc19idWYgPSB0cnVlOwo+ICsJfQo+ICsJ
bnAtPnJuX3NpemUgPSBsZW5ndGg7Cj4gKwl2cC0+dl9zaXplID0gbGVuZ3RoOwo+ICsJc2V0X3Rp
bWVzX3RvX25vdygmKG5wLT5ybl9tdGltZSksICYobnAtPnJuX2N0aW1lKSk7Cj4gKwlyZXR1cm4g
MDsKPiB9Cj4gCj4gLyoKPiBAQCAtMzY5LDE2NSArMzY5LDE2NSBAQCByYW1mc190cnVuY2F0ZShz
dHJ1Y3Qgdm5vZGUgKnZwLCBvZmZfdCBsZW5ndGgpCj4gc3RhdGljIGludAo+IHJhbWZzX2NyZWF0
ZShzdHJ1Y3Qgdm5vZGUgKmR2cCwgY2hhciAqbmFtZSwgbW9kZV90IG1vZGUpCj4gewo+IC0gICAg
c3RydWN0IHJhbWZzX25vZGUgKm5wOwo+ICsJc3RydWN0IHJhbWZzX25vZGUgKm5wOwo+IAo+IC0g
ICAgaWYgKHN0cmxlbihuYW1lKSA+IE5BTUVfTUFYKSB7Cj4gLSAgICAgICAgcmV0dXJuIEVOQU1F
VE9PTE9ORzsKPiAtICAgIH0KPiArCWlmIChzdHJsZW4obmFtZSkgPiBOQU1FX01BWCkgewo+ICsJ
CXJldHVybiBFTkFNRVRPT0xPTkc7Cj4gKwl9Cj4gCj4gLSAgICBEUFJJTlRGKCgiY3JlYXRlICVz
IGluICVzXG4iLCBuYW1lLCBkdnAtPnZfcGF0aCkpOwo+IC0gICAgaWYgKCFTX0lTUkVHKG1vZGUp
KQo+IC0gICAgICAgIHJldHVybiBFSU5WQUw7Cj4gKwlEUFJJTlRGKCgiY3JlYXRlICVzIGluICVz
XG4iLCBuYW1lLCBkdnAtPnZfcGF0aCkpOwo+ICsJaWYgKCFTX0lTUkVHKG1vZGUpKQo+ICsJCXJl
dHVybiBFSU5WQUw7Cj4gCj4gLSAgICBucCA9IHJhbWZzX2FkZF9ub2RlKChyYW1mc19ub2RlICop
IGR2cC0+dl9kYXRhLCBuYW1lLCBWUkVHKTsKPiAtICAgIGlmIChucCA9PSBOVUxMKQo+IC0gICAg
ICAgIHJldHVybiBFTk9NRU07Cj4gLSAgICByZXR1cm4gMDsKPiArCW5wID0gcmFtZnNfYWRkX25v
ZGUoKHJhbWZzX25vZGUgKikgZHZwLT52X2RhdGEsIG5hbWUsIFZSRUcpOwo+ICsJaWYgKG5wID09
IE5VTEwpCj4gKwkJcmV0dXJuIEVOT01FTTsKPiArCXJldHVybiAwOwo+IH0KPiAKPiBzdGF0aWMg
aW50Cj4gcmFtZnNfcmVhZChzdHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3QgZmlsZSAqZnAsIHN0cnVj
dCB1aW8gKnVpbywgaW50IGlvZmxhZykKPiB7Cj4gLSAgICBzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAg
PSAocmFtZnNfbm9kZSAqKSB2cC0+dl9kYXRhOwo+IC0gICAgc2l6ZV90IGxlbjsKPiAtCj4gLSAg
ICBpZiAodnAtPnZfdHlwZSA9PSBWRElSKSB7Cj4gLSAgICAgICAgcmV0dXJuIEVJU0RJUjsKPiAt
ICAgIH0KPiAtICAgIGlmICh2cC0+dl90eXBlICE9IFZSRUcpIHsKPiAtICAgICAgICByZXR1cm4g
RUlOVkFMOwo+IC0gICAgfQo+IC0gICAgaWYgKHVpby0+dWlvX29mZnNldCA8IDApIHsKPiAtICAg
ICAgICByZXR1cm4gRUlOVkFMOwo+IC0gICAgfQo+IC0gICAgaWYgKHVpby0+dWlvX3Jlc2lkID09
IDApIHsKPiAtICAgICAgICByZXR1cm4gMDsKPiAtICAgIH0KPiAtCj4gLSAgICBpZiAodWlvLT51
aW9fb2Zmc2V0ID49IChvZmZfdCkgdnAtPnZfc2l6ZSkKPiAtICAgICAgICByZXR1cm4gMDsKPiAt
Cj4gLSAgICBpZiAodnAtPnZfc2l6ZSAtIHVpby0+dWlvX29mZnNldCA8IHVpby0+dWlvX3Jlc2lk
KQo+IC0gICAgICAgIGxlbiA9IHZwLT52X3NpemUgLSB1aW8tPnVpb19vZmZzZXQ7Cj4gLSAgICBl
bHNlCj4gLSAgICAgICAgbGVuID0gdWlvLT51aW9fcmVzaWQ7Cj4gLQo+IC0gICAgc2V0X3RpbWVz
X3RvX25vdygmKG5wLT5ybl9hdGltZSkpOwo+IC0KPiAtICAgIHJldHVybiB1aW9tb3ZlKG5wLT5y
bl9idWYgKyB1aW8tPnVpb19vZmZzZXQsIGxlbiwgdWlvKTsKPiArCXN0cnVjdCByYW1mc19ub2Rl
ICpucCA9IChyYW1mc19ub2RlICopIHZwLT52X2RhdGE7Cj4gKwlzaXplX3QgbGVuOwo+ICsKPiAr
CWlmICh2cC0+dl90eXBlID09IFZESVIpIHsKPiArCQlyZXR1cm4gRUlTRElSOwo+ICsJfQo+ICsJ
aWYgKHZwLT52X3R5cGUgIT0gVlJFRykgewo+ICsJCXJldHVybiBFSU5WQUw7Cj4gKwl9Cj4gKwlp
ZiAodWlvLT51aW9fb2Zmc2V0IDwgMCkgewo+ICsJCXJldHVybiBFSU5WQUw7Cj4gKwl9Cj4gKwlp
ZiAodWlvLT51aW9fcmVzaWQgPT0gMCkgewo+ICsJCXJldHVybiAwOwo+ICsJfQo+ICsKPiArCWlm
ICh1aW8tPnVpb19vZmZzZXQgPj0gKG9mZl90KSB2cC0+dl9zaXplKQo+ICsJCXJldHVybiAwOwo+
ICsKPiArCWlmICh2cC0+dl9zaXplIC0gdWlvLT51aW9fb2Zmc2V0IDwgdWlvLT51aW9fcmVzaWQp
Cj4gKwkJbGVuID0gdnAtPnZfc2l6ZSAtIHVpby0+dWlvX29mZnNldDsKPiArCWVsc2UKPiArCQls
ZW4gPSB1aW8tPnVpb19yZXNpZDsKPiArCj4gKwlzZXRfdGltZXNfdG9fbm93KCYobnAtPnJuX2F0
aW1lKSk7Cj4gKwo+ICsJcmV0dXJuIHVpb21vdmUobnAtPnJuX2J1ZiArIHVpby0+dWlvX29mZnNl
dCwgbGVuLCB1aW8pOwo+IH0KPiAKPiBpbnQKPiByYW1mc19zZXRfZmlsZV9kYXRhKHN0cnVjdCB2
bm9kZSAqdnAsIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBzaXplKQo+IHsKPiAtICAgIHN0cnVj
dCByYW1mc19ub2RlICpucCA9IChyYW1mc19ub2RlICopIHZwLT52X2RhdGE7Cj4gLQo+IC0gICAg
aWYgKHZwLT52X3R5cGUgPT0gVkRJUikgewo+IC0gICAgICAgIHJldHVybiBFSVNESVI7Cj4gLSAg
ICB9Cj4gLSAgICBpZiAodnAtPnZfdHlwZSAhPSBWUkVHKSB7Cj4gLSAgICAgICAgcmV0dXJuIEVJ
TlZBTDsKPiAtICAgIH0KPiAtICAgIGlmIChucC0+cm5fYnVmKSB7Cj4gLSAgICAgICAgcmV0dXJu
IEVJTlZBTDsKPiAtICAgIH0KPiAtCj4gLSAgICBucC0+cm5fYnVmID0gKGNoYXIgKikgZGF0YTsK
PiAtICAgIG5wLT5ybl9idWZzaXplID0gc2l6ZTsKPiAtICAgIG5wLT5ybl9zaXplID0gc2l6ZTsK
PiAtICAgIHZwLT52X3NpemUgPSBzaXplOwo+IC0gICAgbnAtPnJuX293bnNfYnVmID0gZmFsc2U7
Cj4gLQo+IC0gICAgcmV0dXJuIDA7Cj4gKwlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSAocmFtZnNf
bm9kZSAqKSB2cC0+dl9kYXRhOwo+ICsKPiArCWlmICh2cC0+dl90eXBlID09IFZESVIpIHsKPiAr
CQlyZXR1cm4gRUlTRElSOwo+ICsJfQo+ICsJaWYgKHZwLT52X3R5cGUgIT0gVlJFRykgewo+ICsJ
CXJldHVybiBFSU5WQUw7Cj4gKwl9Cj4gKwlpZiAobnAtPnJuX2J1Zikgewo+ICsJCXJldHVybiBF
SU5WQUw7Cj4gKwl9Cj4gKwo+ICsJbnAtPnJuX2J1ZiA9IChjaGFyICopIGRhdGE7Cj4gKwlucC0+
cm5fYnVmc2l6ZSA9IHNpemU7Cj4gKwlucC0+cm5fc2l6ZSA9IHNpemU7Cj4gKwl2cC0+dl9zaXpl
ID0gc2l6ZTsKPiArCW5wLT5ybl9vd25zX2J1ZiA9IGZhbHNlOwo+ICsKPiArCXJldHVybiAwOwo+
IH0KPiAKPiBzdGF0aWMgaW50Cj4gcmFtZnNfd3JpdGUoc3RydWN0IHZub2RlICp2cCwgc3RydWN0
IHVpbyAqdWlvLCBpbnQgaW9mbGFnKQo+IHsKPiAtICAgIHN0cnVjdCByYW1mc19ub2RlICpucCA9
IChyYW1mc19ub2RlICopIHZwLT52X2RhdGE7Cj4gLQo+IC0gICAgaWYgKHZwLT52X3R5cGUgPT0g
VkRJUikgewo+IC0gICAgICAgIHJldHVybiBFSVNESVI7Cj4gLSAgICB9Cj4gLSAgICBpZiAodnAt
PnZfdHlwZSAhPSBWUkVHKSB7Cj4gLSAgICAgICAgcmV0dXJuIEVJTlZBTDsKPiAtICAgIH0KPiAt
ICAgIGlmICh1aW8tPnVpb19vZmZzZXQgPCAwKSB7Cj4gLSAgICAgICAgcmV0dXJuIEVJTlZBTDsK
PiAtICAgIH0KPiAtICAgIGlmICh1aW8tPnVpb19vZmZzZXQgPj0gTE9OR19NQVgpIHsKPiAtICAg
ICAgICByZXR1cm4gRUZCSUc7Cj4gLSAgICB9Cj4gLSAgICBpZiAodWlvLT51aW9fcmVzaWQgPT0g
MCkgewo+IC0gICAgICAgIHJldHVybiAwOwo+IC0gICAgfQo+IC0KPiAtICAgIGlmIChpb2ZsYWcg
JiBJT19BUFBFTkQpCj4gLSAgICAgICAgdWlvLT51aW9fb2Zmc2V0ID0gbnAtPnJuX3NpemU7Cj4g
LQo+IC0gICAgaWYgKHNpemVfdCh1aW8tPnVpb19vZmZzZXQgKyB1aW8tPnVpb19yZXNpZCkgPiAo
c2l6ZV90KSB2cC0+dl9zaXplKSB7Cj4gLSAgICAgICAgLyogRXhwYW5kIHRoZSBmaWxlIHNpemUg
YmVmb3JlIHdyaXRpbmcgdG8gaXQgKi8KPiAtICAgICAgICBvZmZfdCBlbmRfcG9zID0gdWlvLT51
aW9fb2Zmc2V0ICsgdWlvLT51aW9fcmVzaWQ7Cj4gLSAgICAgICAgaWYgKGVuZF9wb3MgPiAob2Zm
X3QpIG5wLT5ybl9idWZzaXplKSB7Cj4gLSAgICAgICAgICAgIC8vIFhYWDogdGhpcyBjb3VsZCB1
c2UgYSBwYWdlIGxldmVsIGFsbG9jYXRvcgo+IC0gICAgICAgICAgICBzaXplX3QgbmV3X3NpemUg
PSByb3VuZF9wYWdlKGVuZF9wb3MpOwo+IC0gICAgICAgICAgICB2b2lkICpuZXdfYnVmID0gbWFs
bG9jKG5ld19zaXplKTsKPiAtICAgICAgICAgICAgaWYgKCFuZXdfYnVmKQo+IC0gICAgICAgICAg
ICAgICAgcmV0dXJuIEVJTzsKPiAtICAgICAgICAgICAgaWYgKG5wLT5ybl9zaXplICE9IDApIHsK
PiAtICAgICAgICAgICAgICAgIG1lbWNweShuZXdfYnVmLCBucC0+cm5fYnVmLCB2cC0+dl9zaXpl
KTsKPiAtICAgICAgICAgICAgICAgIGlmKG5wLT5ybl9vd25zX2J1ZikKPiAtICAgICAgICAgICAg
ICAgICAgICBmcmVlKG5wLT5ybl9idWYpOwo+IC0gICAgICAgICAgICB9Cj4gLSAgICAgICAgICAg
IG5wLT5ybl9idWYgPSAoY2hhciAqKSBuZXdfYnVmOwo+IC0gICAgICAgICAgICBucC0+cm5fYnVm
c2l6ZSA9IG5ld19zaXplOwo+IC0gICAgICAgIH0KPiAtICAgICAgICBucC0+cm5fc2l6ZSA9IGVu
ZF9wb3M7Cj4gLSAgICAgICAgdnAtPnZfc2l6ZSA9IGVuZF9wb3M7Cj4gLSAgICAgICAgbnAtPnJu
X293bnNfYnVmID0gdHJ1ZTsKPiAtICAgIH0KPiAtCj4gLSAgICBzZXRfdGltZXNfdG9fbm93KCYo
bnAtPnJuX210aW1lKSwgJihucC0+cm5fY3RpbWUpKTsKPiAtICAgIHJldHVybiB1aW9tb3ZlKG5w
LT5ybl9idWYgKyB1aW8tPnVpb19vZmZzZXQsIHVpby0+dWlvX3Jlc2lkLCB1aW8pOwo+ICsJc3Ry
dWN0IHJhbWZzX25vZGUgKm5wID0gKHJhbWZzX25vZGUgKikgdnAtPnZfZGF0YTsKPiArCj4gKwlp
ZiAodnAtPnZfdHlwZSA9PSBWRElSKSB7Cj4gKwkJcmV0dXJuIEVJU0RJUjsKPiArCX0KPiArCWlm
ICh2cC0+dl90eXBlICE9IFZSRUcpIHsKPiArCQlyZXR1cm4gRUlOVkFMOwo+ICsJfQo+ICsJaWYg
KHVpby0+dWlvX29mZnNldCA8IDApIHsKPiArCQlyZXR1cm4gRUlOVkFMOwo+ICsJfQo+ICsJaWYg
KHVpby0+dWlvX29mZnNldCA+PSBMT05HX01BWCkgewo+ICsJCXJldHVybiBFRkJJRzsKPiArCX0K
PiArCWlmICh1aW8tPnVpb19yZXNpZCA9PSAwKSB7Cj4gKwkJcmV0dXJuIDA7Cj4gKwl9Cj4gKwo+
ICsJaWYgKGlvZmxhZyAmIElPX0FQUEVORCkKPiArCQl1aW8tPnVpb19vZmZzZXQgPSBucC0+cm5f
c2l6ZTsKPiArCj4gKwlpZiAoc2l6ZV90KHVpby0+dWlvX29mZnNldCArIHVpby0+dWlvX3Jlc2lk
KSA+IChzaXplX3QpIHZwLT52X3NpemUpIHsKPiArCQkvKiBFeHBhbmQgdGhlIGZpbGUgc2l6ZSBi
ZWZvcmUgd3JpdGluZyB0byBpdCAqLwo+ICsJCW9mZl90IGVuZF9wb3MgPSB1aW8tPnVpb19vZmZz
ZXQgKyB1aW8tPnVpb19yZXNpZDsKPiArCQlpZiAoZW5kX3BvcyA+IChvZmZfdCkgbnAtPnJuX2J1
ZnNpemUpIHsKPiArCQkJLy8gWFhYOiB0aGlzIGNvdWxkIHVzZSBhIHBhZ2UgbGV2ZWwgYWxsb2Nh
dG9yCj4gKwkJCXNpemVfdCBuZXdfc2l6ZSA9IHJvdW5kX3BhZ2UoZW5kX3Bvcyk7Cj4gKwkJCXZv
aWQgKm5ld19idWYgPSBtYWxsb2MobmV3X3NpemUpOwo+ICsJCQlpZiAoIW5ld19idWYpCj4gKwkJ
CQlyZXR1cm4gRUlPOwo+ICsJCQlpZiAobnAtPnJuX3NpemUgIT0gMCkgewo+ICsJCQkJbWVtY3B5
KG5ld19idWYsIG5wLT5ybl9idWYsIHZwLT52X3NpemUpOwo+ICsJCQkJaWYobnAtPnJuX293bnNf
YnVmKQo+ICsJCQkJCWZyZWUobnAtPnJuX2J1Zik7Cj4gKwkJCX0KPiArCQkJbnAtPnJuX2J1ZiA9
IChjaGFyICopIG5ld19idWY7Cj4gKwkJCW5wLT5ybl9idWZzaXplID0gbmV3X3NpemU7Cj4gKwkJ
fQo+ICsJCW5wLT5ybl9zaXplID0gZW5kX3BvczsKPiArCQl2cC0+dl9zaXplID0gZW5kX3BvczsK
PiArCQlucC0+cm5fb3duc19idWYgPSB0cnVlOwo+ICsJfQo+ICsKPiArCXNldF90aW1lc190b19u
b3coJihucC0+cm5fbXRpbWUpLCAmKG5wLT5ybl9jdGltZSkpOwo+ICsJcmV0dXJuIHVpb21vdmUo
bnAtPnJuX2J1ZiArIHVpby0+dWlvX29mZnNldCwgdWlvLT51aW9fcmVzaWQsIHVpbyk7Cj4gfQo+
IAo+IHN0YXRpYyBpbnQKPiByYW1mc19yZW5hbWUoc3RydWN0IHZub2RlICpkdnAxLCBzdHJ1Y3Qg
dm5vZGUgKnZwMSwgY2hhciAqbmFtZTEsCj4gLSAgICAgICAgICAgICBzdHJ1Y3Qgdm5vZGUgKmR2
cDIsIHN0cnVjdCB2bm9kZSAqdnAyLCBjaGFyICpuYW1lMikKPiArCQkJIHN0cnVjdCB2bm9kZSAq
ZHZwMiwgc3RydWN0IHZub2RlICp2cDIsIGNoYXIgKm5hbWUyKQo+IHsKPiAtICAgIHN0cnVjdCBy
YW1mc19ub2RlICpucCwgKm9sZF9ucDsKPiAtICAgIGludCBlcnJvcjsKPiAtCj4gLSAgICBpZiAo
dnAyKSB7Cj4gLSAgICAgICAgLyogUmVtb3ZlIGRlc3RpbmF0aW9uIGZpbGUsIGZpcnN0ICovCj4g
LSAgICAgICAgZXJyb3IgPSByYW1mc19yZW1vdmVfbm9kZSgocmFtZnNfbm9kZSAqKSBkdnAyLT52
X2RhdGEsIChyYW1mc19ub2RlICopIHZwMi0+dl9kYXRhKTsKPiAtICAgICAgICBpZiAoZXJyb3Ip
Cj4gLSAgICAgICAgICAgIHJldHVybiBlcnJvcjsKPiAtICAgIH0KPiAtICAgIC8qIFNhbWUgZGly
ZWN0b3J5ID8gKi8KPiAtICAgIGlmIChkdnAxID09IGR2cDIpIHsKPiAtICAgICAgICAvKiBDaGFu
Z2UgdGhlIG5hbWUgb2YgZXhpc3RpbmcgZmlsZSAqLwo+IC0gICAgICAgIGVycm9yID0gcmFtZnNf
cmVuYW1lX25vZGUoKHJhbWZzX25vZGUgKikgdnAxLT52X2RhdGEsIG5hbWUyKTsKPiAtICAgICAg
ICBpZiAoZXJyb3IpCj4gLSAgICAgICAgICAgIHJldHVybiBlcnJvcjsKPiAtICAgIH0gZWxzZSB7
Cj4gLSAgICAgICAgLyogQ3JlYXRlIG5ldyBmaWxlIG9yIGRpcmVjdG9yeSAqLwo+IC0gICAgICAg
IG9sZF9ucCA9IChyYW1mc19ub2RlICopIHZwMS0+dl9kYXRhOwo+IC0gICAgICAgIG5wID0gcmFt
ZnNfYWRkX25vZGUoKHJhbWZzX25vZGUgKikgZHZwMi0+dl9kYXRhLCBuYW1lMiwgb2xkX25wLT5y
bl90eXBlKTsKPiAtICAgICAgICBpZiAobnAgPT0gTlVMTCkKPiAtICAgICAgICAgICAgcmV0dXJu
IEVOT01FTTsKPiAtCj4gLSAgICAgICAgaWYgKG9sZF9ucC0+cm5fYnVmKSB7Cj4gLSAgICAgICAg
ICAgIC8qIENvcHkgZmlsZSBkYXRhICovCj4gLSAgICAgICAgICAgIG5wLT5ybl9idWYgPSBvbGRf
bnAtPnJuX2J1ZjsKPiAtICAgICAgICAgICAgbnAtPnJuX3NpemUgPSBvbGRfbnAtPnJuX3NpemU7
Cj4gLSAgICAgICAgICAgIG5wLT5ybl9idWZzaXplID0gb2xkX25wLT5ybl9idWZzaXplOwo+IC0g
ICAgICAgICAgICBvbGRfbnAtPnJuX2J1ZiA9IE5VTEw7Cj4gLSAgICAgICAgfQo+IC0gICAgICAg
IC8qIFJlbW92ZSBzb3VyY2UgZmlsZSAqLwo+IC0gICAgICAgIHJhbWZzX3JlbW92ZV9ub2RlKChy
YW1mc19ub2RlICopIGR2cDEtPnZfZGF0YSwgKHJhbWZzX25vZGUgKikgdnAxLT52X2RhdGEpOwo+
IC0gICAgfQo+IC0gICAgcmV0dXJuIDA7Cj4gKwlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAsICpvbGRf
bnA7Cj4gKwlpbnQgZXJyb3I7Cj4gKwo+ICsJaWYgKHZwMikgewo+ICsJCS8qIFJlbW92ZSBkZXN0
aW5hdGlvbiBmaWxlLCBmaXJzdCAqLwo+ICsJCWVycm9yID0gcmFtZnNfcmVtb3ZlX25vZGUoKHJh
bWZzX25vZGUgKikgZHZwMi0+dl9kYXRhLCAocmFtZnNfbm9kZSAqKSB2cDItPnZfZGF0YSk7Cj4g
KwkJaWYgKGVycm9yKQo+ICsJCQlyZXR1cm4gZXJyb3I7Cj4gKwl9Cj4gKwkvKiBTYW1lIGRpcmVj
dG9yeSA/ICovCj4gKwlpZiAoZHZwMSA9PSBkdnAyKSB7Cj4gKwkJLyogQ2hhbmdlIHRoZSBuYW1l
IG9mIGV4aXN0aW5nIGZpbGUgKi8KPiArCQllcnJvciA9IHJhbWZzX3JlbmFtZV9ub2RlKChyYW1m
c19ub2RlICopIHZwMS0+dl9kYXRhLCBuYW1lMik7Cj4gKwkJaWYgKGVycm9yKQo+ICsJCQlyZXR1
cm4gZXJyb3I7Cj4gKwl9IGVsc2Ugewo+ICsJCS8qIENyZWF0ZSBuZXcgZmlsZSBvciBkaXJlY3Rv
cnkgKi8KPiArCQlvbGRfbnAgPSAocmFtZnNfbm9kZSAqKSB2cDEtPnZfZGF0YTsKPiArCQlucCA9
IHJhbWZzX2FkZF9ub2RlKChyYW1mc19ub2RlICopIGR2cDItPnZfZGF0YSwgbmFtZTIsIG9sZF9u
cC0+cm5fdHlwZSk7Cj4gKwkJaWYgKG5wID09IE5VTEwpCj4gKwkJCXJldHVybiBFTk9NRU07Cj4g
Kwo+ICsJCWlmIChvbGRfbnAtPnJuX2J1Zikgewo+ICsJCQkvKiBDb3B5IGZpbGUgZGF0YSAqLwo+
ICsJCQlucC0+cm5fYnVmID0gb2xkX25wLT5ybl9idWY7Cj4gKwkJCW5wLT5ybl9zaXplID0gb2xk
X25wLT5ybl9zaXplOwo+ICsJCQlucC0+cm5fYnVmc2l6ZSA9IG9sZF9ucC0+cm5fYnVmc2l6ZTsK
PiArCQkJb2xkX25wLT5ybl9idWYgPSBOVUxMOwo+ICsJCX0KPiArCQkvKiBSZW1vdmUgc291cmNl
IGZpbGUgKi8KPiArCQlyYW1mc19yZW1vdmVfbm9kZSgocmFtZnNfbm9kZSAqKSBkdnAxLT52X2Rh
dGEsIChyYW1mc19ub2RlICopIHZwMS0+dl9kYXRhKTsKPiArCX0KPiArCXJldHVybiAwOwo+IH0K
PiAKPiAvKgo+IEBAIC01MzYsOTcgKzUzNiw5NyBAQCByYW1mc19yZW5hbWUoc3RydWN0IHZub2Rl
ICpkdnAxLCBzdHJ1Y3Qgdm5vZGUgKnZwMSwgY2hhciAqbmFtZTEsCj4gc3RhdGljIGludAo+IHJh
bWZzX3JlYWRkaXIoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IGZpbGUgKmZwLCBzdHJ1Y3QgZGly
ZW50ICpkaXIpCj4gewo+IC0gICAgc3RydWN0IHJhbWZzX25vZGUgKm5wLCAqZG5wOwo+IC0gICAg
aW50IGk7Cj4gLQo+IC0gICAgbXV0ZXhfbG9jaygmcmFtZnNfbG9jayk7Cj4gLQo+IC0gICAgc2V0
X3RpbWVzX3RvX25vdygmKCgocmFtZnNfbm9kZSAqKSB2cC0+dl9kYXRhKS0+cm5fYXRpbWUpKTsK
PiAtCj4gLSAgICBpZiAoZnAtPmZfb2Zmc2V0ID09IDApIHsKPiAtICAgICAgICBkaXItPmRfdHlw
ZSA9IERUX0RJUjsKPiAtICAgICAgICBzdHJsY3B5KChjaGFyICopICZkaXItPmRfbmFtZSwgIi4i
LCBzaXplb2YoZGlyLT5kX25hbWUpKTsKPiAtICAgIH0gZWxzZSBpZiAoZnAtPmZfb2Zmc2V0ID09
IDEpIHsKPiAtICAgICAgICBkaXItPmRfdHlwZSA9IERUX0RJUjsKPiAtICAgICAgICBzdHJsY3B5
KChjaGFyICopICZkaXItPmRfbmFtZSwgIi4uIiwgc2l6ZW9mKGRpci0+ZF9uYW1lKSk7Cj4gLSAg
ICB9IGVsc2Ugewo+IC0gICAgICAgIGRucCA9IChyYW1mc19ub2RlICopIHZwLT52X2RhdGE7Cj4g
LSAgICAgICAgbnAgPSBkbnAtPnJuX2NoaWxkOwo+IC0gICAgICAgIGlmIChucCA9PSBOVUxMKSB7
Cj4gLSAgICAgICAgICAgIG11dGV4X3VubG9jaygmcmFtZnNfbG9jayk7Cj4gLSAgICAgICAgICAg
IHJldHVybiBFTk9FTlQ7Cj4gLSAgICAgICAgfQo+IC0KPiAtICAgICAgICBmb3IgKGkgPSAwOyBp
ICE9IChmcC0+Zl9vZmZzZXQgLSAyKTsgaSsrKSB7Cj4gLSAgICAgICAgICAgIG5wID0gbnAtPnJu
X25leHQ7Cj4gLSAgICAgICAgICAgIGlmIChucCA9PSBOVUxMKSB7Cj4gLSAgICAgICAgICAgICAg
ICBtdXRleF91bmxvY2soJnJhbWZzX2xvY2spOwo+IC0gICAgICAgICAgICAgICAgcmV0dXJuIEVO
T0VOVDsKPiAtICAgICAgICAgICAgfQo+IC0gICAgICAgIH0KPiAtICAgICAgICBpZiAobnAtPnJu
X3R5cGUgPT0gVkRJUikKPiAtICAgICAgICAgICAgZGlyLT5kX3R5cGUgPSBEVF9ESVI7Cj4gLSAg
ICAgICAgZWxzZSBpZiAobnAtPnJuX3R5cGUgPT0gVkxOSykKPiAtICAgICAgICAgICAgZGlyLT5k
X3R5cGUgPSBEVF9MTks7Cj4gLSAgICAgICAgZWxzZQo+IC0gICAgICAgICAgICBkaXItPmRfdHlw
ZSA9IERUX1JFRzsKPiAtICAgICAgICBzdHJsY3B5KChjaGFyICopICZkaXItPmRfbmFtZSwgbnAt
PnJuX25hbWUsCj4gLSAgICAgICAgICAgICAgICBzaXplb2YoZGlyLT5kX25hbWUpKTsKPiAtICAg
IH0KPiAtICAgIGRpci0+ZF9maWxlbm8gPSBmcC0+Zl9vZmZzZXQ7Cj4gKwlzdHJ1Y3QgcmFtZnNf
bm9kZSAqbnAsICpkbnA7Cj4gKwlpbnQgaTsKPiArCj4gKwltdXRleF9sb2NrKCZyYW1mc19sb2Nr
KTsKPiArCj4gKwlzZXRfdGltZXNfdG9fbm93KCYoKChyYW1mc19ub2RlICopIHZwLT52X2RhdGEp
LT5ybl9hdGltZSkpOwo+ICsKPiArCWlmIChmcC0+Zl9vZmZzZXQgPT0gMCkgewo+ICsJCWRpci0+
ZF90eXBlID0gRFRfRElSOwo+ICsJCXN0cmxjcHkoKGNoYXIgKikgJmRpci0+ZF9uYW1lLCAiLiIs
IHNpemVvZihkaXItPmRfbmFtZSkpOwo+ICsJfSBlbHNlIGlmIChmcC0+Zl9vZmZzZXQgPT0gMSkg
ewo+ICsJCWRpci0+ZF90eXBlID0gRFRfRElSOwo+ICsJCXN0cmxjcHkoKGNoYXIgKikgJmRpci0+
ZF9uYW1lLCAiLi4iLCBzaXplb2YoZGlyLT5kX25hbWUpKTsKPiArCX0gZWxzZSB7Cj4gKwkJZG5w
ID0gKHJhbWZzX25vZGUgKikgdnAtPnZfZGF0YTsKPiArCQlucCA9IGRucC0+cm5fY2hpbGQ7Cj4g
KwkJaWYgKG5wID09IE5VTEwpIHsKPiArCQkJbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKPiAr
CQkJcmV0dXJuIEVOT0VOVDsKPiArCQl9Cj4gKwo+ICsJCWZvciAoaSA9IDA7IGkgIT0gKGZwLT5m
X29mZnNldCAtIDIpOyBpKyspIHsKPiArCQkJbnAgPSBucC0+cm5fbmV4dDsKPiArCQkJaWYgKG5w
ID09IE5VTEwpIHsKPiArCQkJCW11dGV4X3VubG9jaygmcmFtZnNfbG9jayk7Cj4gKwkJCQlyZXR1
cm4gRU5PRU5UOwo+ICsJCQl9Cj4gKwkJfQo+ICsJCWlmIChucC0+cm5fdHlwZSA9PSBWRElSKQo+
ICsJCQlkaXItPmRfdHlwZSA9IERUX0RJUjsKPiArCQllbHNlIGlmIChucC0+cm5fdHlwZSA9PSBW
TE5LKQo+ICsJCQlkaXItPmRfdHlwZSA9IERUX0xOSzsKPiArCQllbHNlCj4gKwkJCWRpci0+ZF90
eXBlID0gRFRfUkVHOwo+ICsJCXN0cmxjcHkoKGNoYXIgKikgJmRpci0+ZF9uYW1lLCBucC0+cm5f
bmFtZSwKPiArCQkJCXNpemVvZihkaXItPmRfbmFtZSkpOwo+ICsJfQo+ICsJZGlyLT5kX2ZpbGVu
byA9IGZwLT5mX29mZnNldDsKPiAvLwlkaXItPmRfbmFtZWxlbiA9IHN0cmxlbihkaXItPmRfbmFt
ZSk7Cj4gCj4gLSAgICBmcC0+Zl9vZmZzZXQrKzsKPiArCWZwLT5mX29mZnNldCsrOwo+IAo+IC0g
ICAgbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKPiAtICAgIHJldHVybiAwOwo+ICsJbXV0ZXhf
dW5sb2NrKCZyYW1mc19sb2NrKTsKPiArCXJldHVybiAwOwo+IH0KPiAKPiBpbnQKPiByYW1mc19p
bml0KHZvaWQpCj4gewo+IC0gICAgcmV0dXJuIDA7Cj4gKwlyZXR1cm4gMDsKPiB9Cj4gCj4gc3Rh
dGljIGludAo+IHJhbWZzX2dldGF0dHIoc3RydWN0IHZub2RlICp2bm9kZSwgc3RydWN0IHZhdHRy
ICphdHRyKQo+IHsKPiAtICAgIGF0dHItPnZhX25vZGVpZCA9IHZub2RlLT52X2lubzsKPiAtICAg
IGF0dHItPnZhX3NpemUgPSB2bm9kZS0+dl9zaXplOwo+ICsJYXR0ci0+dmFfbm9kZWlkID0gdm5v
ZGUtPnZfaW5vOwo+ICsJYXR0ci0+dmFfc2l6ZSA9IHZub2RlLT52X3NpemU7Cj4gCj4gLSAgICBz
dHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSAocmFtZnNfbm9kZSAqKSB2bm9kZS0+dl9kYXRhOwo+IC0g
ICAgYXR0ci0+dmFfdHlwZSA9ICh2dHlwZSkgbnAtPnJuX3R5cGU7Cj4gKwlzdHJ1Y3QgcmFtZnNf
bm9kZSAqbnAgPSAocmFtZnNfbm9kZSAqKSB2bm9kZS0+dl9kYXRhOwo+ICsJYXR0ci0+dmFfdHlw
ZSA9ICh2dHlwZSkgbnAtPnJuX3R5cGU7Cj4gCj4gLSAgICBtZW1jcHkoJihhdHRyLT52YV9hdGlt
ZSksICYobnAtPnJuX2F0aW1lKSwgc2l6ZW9mKHN0cnVjdCB0aW1lc3BlYykpOwo+IC0gICAgbWVt
Y3B5KCYoYXR0ci0+dmFfY3RpbWUpLCAmKG5wLT5ybl9jdGltZSksIHNpemVvZihzdHJ1Y3QgdGlt
ZXNwZWMpKTsKPiAtICAgIG1lbWNweSgmKGF0dHItPnZhX210aW1lKSwgJihucC0+cm5fbXRpbWUp
LCBzaXplb2Yoc3RydWN0IHRpbWVzcGVjKSk7Cj4gKwltZW1jcHkoJihhdHRyLT52YV9hdGltZSks
ICYobnAtPnJuX2F0aW1lKSwgc2l6ZW9mKHN0cnVjdCB0aW1lc3BlYykpOwo+ICsJbWVtY3B5KCYo
YXR0ci0+dmFfY3RpbWUpLCAmKG5wLT5ybl9jdGltZSksIHNpemVvZihzdHJ1Y3QgdGltZXNwZWMp
KTsKPiArCW1lbWNweSgmKGF0dHItPnZhX210aW1lKSwgJihucC0+cm5fbXRpbWUpLCBzaXplb2Yo
c3RydWN0IHRpbWVzcGVjKSk7Cj4gCj4gLSAgICBhdHRyLT52YV9tb2RlID0gbnAtPnJuX21vZGU7
Cj4gKwlhdHRyLT52YV9tb2RlID0gbnAtPnJuX21vZGU7Cj4gCj4gLSAgICByZXR1cm4gMDsKPiAr
CXJldHVybiAwOwo+IH0KPiAKPiBzdGF0aWMgaW50Cj4gcmFtZnNfc2V0YXR0cihzdHJ1Y3Qgdm5v
ZGUgKnZub2RlLCBzdHJ1Y3QgdmF0dHIgKmF0dHIpIHsKPiAtICAgIHN0cnVjdCByYW1mc19ub2Rl
ICpucCA9IChyYW1mc19ub2RlICopIHZub2RlLT52X2RhdGE7Cj4gKwlzdHJ1Y3QgcmFtZnNfbm9k
ZSAqbnAgPSAocmFtZnNfbm9kZSAqKSB2bm9kZS0+dl9kYXRhOwo+IAo+IC0gICAgaWYgKGF0dHIt
PnZhX21hc2sgJiBBVF9BVElNRSkgewo+IC0gICAgICAgIG1lbWNweSgmKG5wLT5ybl9hdGltZSks
ICYoYXR0ci0+dmFfYXRpbWUpLCBzaXplb2Yoc3RydWN0IHRpbWVzcGVjKSk7Cj4gLSAgICB9Cj4g
KwlpZiAoYXR0ci0+dmFfbWFzayAmIEFUX0FUSU1FKSB7Cj4gKwkJbWVtY3B5KCYobnAtPnJuX2F0
aW1lKSwgJihhdHRyLT52YV9hdGltZSksIHNpemVvZihzdHJ1Y3QgdGltZXNwZWMpKTsKPiArCX0K
PiAKPiAtICAgIGlmIChhdHRyLT52YV9tYXNrICYgQVRfQ1RJTUUpIHsKPiAtICAgICAgICBtZW1j
cHkoJihucC0+cm5fY3RpbWUpLCAmKGF0dHItPnZhX2N0aW1lKSwgc2l6ZW9mKHN0cnVjdCB0aW1l
c3BlYykpOwo+IC0gICAgfQo+ICsJaWYgKGF0dHItPnZhX21hc2sgJiBBVF9DVElNRSkgewo+ICsJ
CW1lbWNweSgmKG5wLT5ybl9jdGltZSksICYoYXR0ci0+dmFfY3RpbWUpLCBzaXplb2Yoc3RydWN0
IHRpbWVzcGVjKSk7Cj4gKwl9Cj4gCj4gLSAgICBpZiAoYXR0ci0+dmFfbWFzayAmIEFUX01USU1F
KSB7Cj4gLSAgICAgICAgbWVtY3B5KCYobnAtPnJuX210aW1lKSwgJihhdHRyLT52YV9tdGltZSks
IHNpemVvZihzdHJ1Y3QgdGltZXNwZWMpKTsKPiAtICAgIH0KPiArCWlmIChhdHRyLT52YV9tYXNr
ICYgQVRfTVRJTUUpIHsKPiArCQltZW1jcHkoJihucC0+cm5fbXRpbWUpLCAmKGF0dHItPnZhX210
aW1lKSwgc2l6ZW9mKHN0cnVjdCB0aW1lc3BlYykpOwo+ICsJfQo+IAo+IC0gICAgaWYgKGF0dHIt
PnZhX21hc2sgJiBBVF9NT0RFKSB7Cj4gLSAgICAgICAgbnAtPnJuX21vZGUgPSBhdHRyLT52YV9t
b2RlOwo+IC0gICAgfQo+ICsJaWYgKGF0dHItPnZhX21hc2sgJiBBVF9NT0RFKSB7Cj4gKwkJbnAt
PnJuX21vZGUgPSBhdHRyLT52YV9tb2RlOwo+ICsJfQo+IAo+IC0gICAgcmV0dXJuIDA7Cj4gKwly
ZXR1cm4gMDsKPiB9Cj4gCj4gI2RlZmluZSByYW1mc19vcGVuICAgICAgKCh2bm9wX29wZW5fdCl2
b3BfbnVsbG9wKQo+IEBAIC02NDIsMjggKzY0MiwyOCBAQCByYW1mc19zZXRhdHRyKHN0cnVjdCB2
bm9kZSAqdm5vZGUsIHN0cnVjdCB2YXR0ciAqYXR0cikgewo+ICAqIHZub2RlIG9wZXJhdGlvbnMK
PiAgKi8KPiBzdHJ1Y3Qgdm5vcHMgcmFtZnNfdm5vcHMgPSB7Cj4gLSAgICAgICAgcmFtZnNfb3Bl
biwgICAgICAgICAgICAgLyogb3BlbiAqLwo+IC0gICAgICAgIHJhbWZzX2Nsb3NlLCAgICAgICAg
ICAgIC8qIGNsb3NlICovCj4gLSAgICAgICAgcmFtZnNfcmVhZCwgICAgICAgICAgICAgLyogcmVh
ZCAqLwo+IC0gICAgICAgIHJhbWZzX3dyaXRlLCAgICAgICAgICAgIC8qIHdyaXRlICovCj4gLSAg
ICAgICAgcmFtZnNfc2VlaywgICAgICAgICAgICAgLyogc2VlayAqLwo+IC0gICAgICAgIHJhbWZz
X2lvY3RsLCAgICAgICAgICAgIC8qIGlvY3RsICovCj4gLSAgICAgICAgcmFtZnNfZnN5bmMsICAg
ICAgICAgICAgLyogZnN5bmMgKi8KPiAtICAgICAgICByYW1mc19yZWFkZGlyLCAgICAgICAgICAv
KiByZWFkZGlyICovCj4gLSAgICAgICAgcmFtZnNfbG9va3VwLCAgICAgICAgICAgLyogbG9va3Vw
ICovCj4gLSAgICAgICAgcmFtZnNfY3JlYXRlLCAgICAgICAgICAgLyogY3JlYXRlICovCj4gLSAg
ICAgICAgcmFtZnNfcmVtb3ZlLCAgICAgICAgICAgLyogcmVtb3ZlICovCj4gLSAgICAgICAgcmFt
ZnNfcmVuYW1lLCAgICAgICAgICAgLyogcmVtYW1lICovCj4gLSAgICAgICAgcmFtZnNfbWtkaXIs
ICAgICAgICAgICAgLyogbWtkaXIgKi8KPiAtICAgICAgICByYW1mc19ybWRpciwgICAgICAgICAg
ICAvKiBybWRpciAqLwo+IC0gICAgICAgIHJhbWZzX2dldGF0dHIsICAgICAgICAgIC8qIGdldGF0
dHIgKi8KPiAtICAgICAgICByYW1mc19zZXRhdHRyLCAgICAgICAgICAvKiBzZXRhdHRyICovCj4g
LSAgICAgICAgcmFtZnNfaW5hY3RpdmUsICAgICAgICAgLyogaW5hY3RpdmUgKi8KPiAtICAgICAg
ICByYW1mc190cnVuY2F0ZSwgICAgICAgICAvKiB0cnVuY2F0ZSAqLwo+IC0gICAgICAgIHJhbWZz
X2xpbmssICAgICAgICAgICAgIC8qIGxpbmsgKi8KPiAtICAgICAgICAodm5vcF9jYWNoZV90KSBu
dWxscHRyLCAvKiBhcmMgKi8KPiAtICAgICAgICByYW1mc19mYWxsb2NhdGUsICAgICAgICAvKiBm
YWxsb2NhdGUgKi8KPiAtICAgICAgICByYW1mc19yZWFkbGluaywgICAgICAgICAvKiByZWFkIGxp
bmsgKi8KPiAtICAgICAgICByYW1mc19zeW1saW5rLCAgICAgICAgICAvKiBzeW1ib2xpYyBsaW5r
ICovCj4gKwkJcmFtZnNfb3BlbiwgICAgICAgICAgICAgLyogb3BlbiAqLwo+ICsJCXJhbWZzX2Ns
b3NlLCAgICAgICAgICAgIC8qIGNsb3NlICovCj4gKwkJcmFtZnNfcmVhZCwgICAgICAgICAgICAg
LyogcmVhZCAqLwo+ICsJCXJhbWZzX3dyaXRlLCAgICAgICAgICAgIC8qIHdyaXRlICovCj4gKwkJ
cmFtZnNfc2VlaywgICAgICAgICAgICAgLyogc2VlayAqLwo+ICsJCXJhbWZzX2lvY3RsLCAgICAg
ICAgICAgIC8qIGlvY3RsICovCj4gKwkJcmFtZnNfZnN5bmMsICAgICAgICAgICAgLyogZnN5bmMg
Ki8KPiArCQlyYW1mc19yZWFkZGlyLCAgICAgICAgICAvKiByZWFkZGlyICovCj4gKwkJcmFtZnNf
bG9va3VwLCAgICAgICAgICAgLyogbG9va3VwICovCj4gKwkJcmFtZnNfY3JlYXRlLCAgICAgICAg
ICAgLyogY3JlYXRlICovCj4gKwkJcmFtZnNfcmVtb3ZlLCAgICAgICAgICAgLyogcmVtb3ZlICov
Cj4gKwkJcmFtZnNfcmVuYW1lLCAgICAgICAgICAgLyogcmVtYW1lICovCj4gKwkJcmFtZnNfbWtk
aXIsICAgICAgICAgICAgLyogbWtkaXIgKi8KPiArCQlyYW1mc19ybWRpciwgICAgICAgICAgICAv
KiBybWRpciAqLwo+ICsJCXJhbWZzX2dldGF0dHIsICAgICAgICAgIC8qIGdldGF0dHIgKi8KPiAr
CQlyYW1mc19zZXRhdHRyLCAgICAgICAgICAvKiBzZXRhdHRyICovCj4gKwkJcmFtZnNfaW5hY3Rp
dmUsICAgICAgICAgLyogaW5hY3RpdmUgKi8KPiArCQlyYW1mc190cnVuY2F0ZSwgICAgICAgICAv
KiB0cnVuY2F0ZSAqLwo+ICsJCXJhbWZzX2xpbmssICAgICAgICAgICAgIC8qIGxpbmsgKi8KPiAr
CQkodm5vcF9jYWNoZV90KSBudWxscHRyLCAvKiBhcmMgKi8KPiArCQlyYW1mc19mYWxsb2NhdGUs
ICAgICAgICAvKiBmYWxsb2NhdGUgKi8KPiArCQlyYW1mc19yZWFkbGluaywgICAgICAgICAvKiBy
ZWFkIGxpbmsgKi8KPiArCQlyYW1mc19zeW1saW5rLCAgICAgICAgICAvKiBzeW1ib2xpYyBsaW5r
ICovCj4gfTsKPiAKPiAtLSAKPiAyLjE5LjIKPiAKPiAKPiBfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwo+IE1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKPiBN
aW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKPiBodHRwczovL2xpc3RzLnhlbnByb2pl
Y3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVsCgoKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApN
aW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0
Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Feb 20 14:23:03 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 20 Feb 2019 14:23:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gwSm7-0006op-9k; Wed, 20 Feb 2019 14:23:03 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=MYmH=Q3=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1gwSm6-0006oi-3E
 for minios-devel@lists.xen.org; Wed, 20 Feb 2019 14:23:02 +0000
X-Inumbo-ID: 064b9af1-351b-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 064b9af1-351b-11e9-bc90-bc764e045a96;
 Wed, 20 Feb 2019 14:23:00 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 73A76F2039;
 Wed, 20 Feb 2019 15:22:59 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id L1zQChuntq4P; Wed, 20 Feb 2019 15:22:59 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 42FA0F2004
 for <minios-devel@lists.xen.org>; Wed, 20 Feb 2019 15:22:57 +0100 (CET)
Received: from PALLENE.office.hd ([169.254.1.27]) by ENCELADUS.office.hd
 ([192.168.24.52]) with mapi id 14.03.0319.002; Wed, 20 Feb 2019 15:22:56
 +0100
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: Yuri Volchkov <yuri.volchkov@neclab.eu>
Thread-Topic: [Minios-devel] [UNIKRAFT PATCH v2 3/6] lib/ramfs: update
 license header for imported files
Thread-Index: AQHUv7sNt3wYCrnxrUm/0L34l81hOqXov0yA
Date: Wed, 20 Feb 2019 14:22:56 +0000
Message-ID: <F191ED46-43F5-4882-A797-29F2024EBAA5@neclab.eu>
References: <20190208143108.27175-1-yuri.volchkov@neclab.eu>
 <20190208143108.27175-4-yuri.volchkov@neclab.eu>
In-Reply-To: <20190208143108.27175-4-yuri.volchkov@neclab.eu>
Accept-Language: en-GB, gl-ES, de-DE, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [10.1.2.186]
Content-ID: <76BC72DB8ACB7F4FBC155B3E3CC75C86@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 3/6] lib/ramfs: update
 license header for imported files
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>, Sharan
 Santhanam <Sharan.Santhanam@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

UmV2aWV3ZWQtYnk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1PgoKPiBP
biA4LiBGZWIgMjAxOSwgYXQgMTU6MzEsIFl1cmkgVm9sY2hrb3YgPHl1cmkudm9sY2hrb3ZAbmVj
bGFiLmV1PiB3cm90ZToKPiAKPiBTaWduZWQtb2ZmLWJ5OiBZdXJpIFZvbGNoa292IDx5dXJpLnZv
bGNoa292QG5lY2xhYi5ldT4KPiAtLS0KPiBsaWIvcmFtZnMvcmFtZnMuaCAgICAgICAgfCAzICsr
Kwo+IGxpYi9yYW1mcy9yYW1mc192ZnNvcHMuYyB8IDMgKysrCj4gbGliL3JhbWZzL3JhbWZzX3Zu
b3BzLmMgIHwgMyArKysKPiAzIGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKQo+IAo+IGRp
ZmYgLS1naXQgYS9saWIvcmFtZnMvcmFtZnMuaCBiL2xpYi9yYW1mcy9yYW1mcy5oCj4gaW5kZXgg
ZTRlZWI2NWYuLjAxZTRkYTA5IDEwMDY0NAo+IC0tLSBhL2xpYi9yYW1mcy9yYW1mcy5oCj4gKysr
IGIvbGliL3JhbWZzL3JhbWZzLmgKPiBAQCAtMSw1ICsxLDggQEAKPiArLyogU1BEWC1MaWNlbnNl
LUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLwo+IC8qCj4gICogQ29weXJpZ2h0IChjKSAyMDA2
LTIwMDcsIEtvaHN1a2UgT2h0YW5pCj4gKyAqIENvcHlyaWdodCAoQykgMjAxMyBDbG91ZGl1cyBT
eXN0ZW1zLCBMdGQuCj4gKyAqIENvcHlyaWdodCAoYykgMjAxOSwgTkVDIEV1cm9wZSBMdGQuLCBO
RUMgQ29ycG9yYXRpb24uCj4gICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiAgKgo+ICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAo+IGRpZmYgLS1naXQgYS9saWIvcmFtZnMvcmFtZnNfdmZzb3BzLmMgYi9saWIvcmFtZnMv
cmFtZnNfdmZzb3BzLmMKPiBpbmRleCA1M2FlNzU4YS4uNGRmNTRjNWYgMTAwNjQ0Cj4gLS0tIGEv
bGliL3JhbWZzL3JhbWZzX3Zmc29wcy5jCj4gKysrIGIvbGliL3JhbWZzL3JhbWZzX3Zmc29wcy5j
Cj4gQEAgLTEsNSArMSw4IEBACj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1D
bGF1c2UgKi8KPiAvKgo+ICAqIENvcHlyaWdodCAoYykgMjAwNi0yMDA3LCBLb2hzdWtlIE9odGFu
aQo+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQ2xvdWRpdXMgU3lzdGVtcywgTHRkLgo+ICsgKiBD
b3B5cmlnaHQgKGMpIDIwMTksIE5FQyBFdXJvcGUgTHRkLiwgTkVDIENvcnBvcmF0aW9uLgo+ICAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4gICoKPiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKPiBkaWZmIC0tZ2l0IGEv
bGliL3JhbWZzL3JhbWZzX3Zub3BzLmMgYi9saWIvcmFtZnMvcmFtZnNfdm5vcHMuYwo+IGluZGV4
IDhiNTg2Zjg4Li40NTM4ZTljYiAxMDA2NDQKPiAtLS0gYS9saWIvcmFtZnMvcmFtZnNfdm5vcHMu
Ywo+ICsrKyBiL2xpYi9yYW1mcy9yYW1mc192bm9wcy5jCj4gQEAgLTEsNSArMSw4IEBACj4gKy8q
IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8KPiAvKgo+ICAqIENvcHly
aWdodCAoYykgMjAwNi0yMDA3LCBLb2hzdWtlIE9odGFuaQo+ICsgKiBDb3B5cmlnaHQgKEMpIDIw
MTQgQ2xvdWRpdXMgU3lzdGVtcywgTHRkLgo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTksIE5FQyBF
dXJvcGUgTHRkLiwgTkVDIENvcnBvcmF0aW9uLgo+ICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4g
ICoKPiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKPiAtLSAKPiAyLjE5LjIKPiAKPiAKPiBfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IE1pbmlvcy1kZXZlbCBtYWlsaW5nIGxp
c3QKPiBNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKPiBodHRwczovL2xpc3RzLnhl
bnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVsCgoKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcg
bGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5w
cm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Feb 20 14:32:12 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 20 Feb 2019 14:32:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gwSuw-0007ea-Vy; Wed, 20 Feb 2019 14:32:10 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=MYmH=Q3=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1gwSuv-0007eV-PE
 for minios-devel@lists.xen.org; Wed, 20 Feb 2019 14:32:09 +0000
X-Inumbo-ID: 4c55dd1e-351c-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 4c55dd1e-351c-11e9-bc90-bc764e045a96;
 Wed, 20 Feb 2019 14:32:07 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 84465104DFB;
 Wed, 20 Feb 2019 15:32:06 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id GRsqmjdoULK4; Wed, 20 Feb 2019 15:32:06 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 5ECC0104DEC
 for <minios-devel@lists.xen.org>; Wed, 20 Feb 2019 15:32:04 +0100 (CET)
Received: from PALLENE.office.hd ([169.254.1.27]) by METHONE.office.hd
 ([192.168.24.54]) with mapi id 14.03.0319.002; Wed, 20 Feb 2019 15:32:04
 +0100
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: Yuri Volchkov <yuri.volchkov@neclab.eu>
Thread-Topic: [Minios-devel] [UNIKRAFT PATCH v2 5/6] lib/ramfs: fix debug
 printouts
Thread-Index: AQHUv7sVt6Qi3ukKQEut0gCqqT3aa6XowdwA
Date: Wed, 20 Feb 2019 14:32:02 +0000
Message-ID: <0DC62807-6FD4-47FC-B46B-30299B26BBD2@neclab.eu>
References: <20190208143108.27175-1-yuri.volchkov@neclab.eu>
 <20190208143108.27175-6-yuri.volchkov@neclab.eu>
In-Reply-To: <20190208143108.27175-6-yuri.volchkov@neclab.eu>
Accept-Language: en-GB, gl-ES, de-DE, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [10.1.2.186]
Content-ID: <FDC8B9AE575B3F4D8582E97521097DB8@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 5/6] lib/ramfs: fix debug
 printouts
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>, Sharan
 Santhanam <Sharan.Santhanam@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Cj4gT24gOC4gRmViIDIwMTksIGF0IDE1OjMxLCBZdXJpIFZvbGNoa292IDx5dXJpLnZvbGNoa292
QG5lY2xhYi5ldT4gd3JvdGU6Cj4gCj4gU2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVy
aS52b2xjaGtvdkBuZWNsYWIuZXU+Cj4gLS0tCj4gbGliL3JhbWZzL3JhbWZzLmggICAgICAgfCAg
NCArKystCj4gbGliL3JhbWZzL3JhbWZzX3Zub3BzLmMgfCAxMCArKysrKystLS0tCj4gMiBmaWxl
cyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdp
dCBhL2xpYi9yYW1mcy9yYW1mcy5oIGIvbGliL3JhbWZzL3JhbWZzLmgKPiBpbmRleCA5MWZiNTc5
Yy4uNDNmMmYzNmIgMTAwNjQ0Cj4gLS0tIGEvbGliL3JhbWZzL3JhbWZzLmgKPiArKysgYi9saWIv
cmFtZnMvcmFtZnMuaAo+IEBAIC0zOCw3ICszOCw3IEBACj4gLyogI2RlZmluZSBERUJVR19SQU1G
UyAxICovCj4gCj4gI2lmZGVmIERFQlVHX1JBTUZTCj4gLSNkZWZpbmUgRFBSSU5URihhKQlkcHJp
bnRmIGEKPiArI2RlZmluZSBEUFJJTlRGKGEpCXVrX3ByX2RlYnVnIGEKPiAjZWxzZQo+ICNkZWZp
bmUgRFBSSU5URihhKSAgICBkbyB7fSB3aGlsZSAoMCkKPiAjZW5kaWYKPiBAQCAtNjgsNCArNjgs
NiBAQCBzdHJ1Y3QgcmFtZnNfbm9kZSAqcmFtZnNfYWxsb2NhdGVfbm9kZShjb25zdCBjaGFyICpu
YW1lLCBpbnQgdHlwZSk7CgpJIGFtIHdvbmRlcmluZyBpZiB3ZSBjb3VsZCBnZXQgcmlkIG9mIHRo
aXMgaWZkZWYgc3RhdGVtZW50IGNvbXBsZXRlbHkgYmVjYXVzZSB1a19wcl9kZWJ1ZyBpcyBkb2lu
ZyBlbmFibGluZy9kaXNhYmxpbmcgYWxyZWFkeSBmb3IgdXMuIEkgc2F3IHRoYXQgeW91IGhhZCB0
aGlzIG9uIHZmc2NvcmUsIHRvby4gSSB3b3VsZCBhbHNvIHByZWZlciBpZiB3ZSByZW1vdmUgdGhl
IGVxdWl2YWxlbnQgaWYgc3RhdGVtZW50IHRoZXJlLCB0b28uCkp1c3QgZG86ICNkZWZpbmUgRFBS
SU5URihhKSB1a19wcl9kZWJ1ZyBhCgo+IAo+IHZvaWQgcmFtZnNfZnJlZV9ub2RlKHN0cnVjdCBy
YW1mc19ub2RlICpub2RlKTsKPiAKPiArI2RlZmluZSBSQU1GU19OT0RFKHZub2RlKSAoKHN0cnVj
dCByYW1mc19ub2RlICopIHZub2RlLT52X2RhdGEpCj4gKwo+ICNlbmRpZiAvKiAhX1JBTUZTX0gg
Ki8KPiBkaWZmIC0tZ2l0IGEvbGliL3JhbWZzL3JhbWZzX3Zub3BzLmMgYi9saWIvcmFtZnMvcmFt
ZnNfdm5vcHMuYwo+IGluZGV4IDY2YWI4YTY0Li4xZmFkZWQwNSAxMDA2NDQKPiAtLS0gYS9saWIv
cmFtZnMvcmFtZnNfdm5vcHMuYwo+ICsrKyBiL2xpYi9yYW1mcy9yYW1mc192bm9wcy5jCj4gQEAg
LTMyOCw5ICszMjgsMTAgQEAgcmFtZnNfcm1kaXIoc3RydWN0IHZub2RlICpkdnAsIHN0cnVjdCB2
bm9kZSAqdnAsIGNoYXIgKm5hbWUgX191bnVzZWQpCj4gCj4gLyogUmVtb3ZlIGEgZmlsZSAqLwo+
IHN0YXRpYyBpbnQKPiAtcmFtZnNfcmVtb3ZlKHN0cnVjdCB2bm9kZSAqZHZwLCBzdHJ1Y3Qgdm5v
ZGUgKnZwLCBjaGFyICpuYW1lIF9fdW51c2VkKQo+ICtyYW1mc19yZW1vdmUoc3RydWN0IHZub2Rl
ICpkdnAsIHN0cnVjdCB2bm9kZSAqdnAsIGNoYXIgKm5hbWUgX19tYXliZV91bnVzZWQpCj4gewo+
IC0JRFBSSU5URigoInJlbW92ZSAlcyBpbiAlc1xuIiwgbmFtZSwgZHZwLT52X3BhdGgpKTsKPiAr
CURQUklOVEYoKCJyZW1vdmUgJXMgaW4gJXNcbiIsIG5hbWUsCj4gKwkJIFJBTUZTX05PREUoZHZw
KS0+cm5fbmFtZSkpOwo+IAlyZXR1cm4gcmFtZnNfcmVtb3ZlX25vZGUoZHZwLT52X2RhdGEsIHZw
LT52X2RhdGEpOwo+IH0KPiAKPiBAQCAtMzQyLDcgKzM0Myw4IEBAIHJhbWZzX3RydW5jYXRlKHN0
cnVjdCB2bm9kZSAqdnAsIG9mZl90IGxlbmd0aCkKPiAJdm9pZCAqbmV3X2J1ZjsKPiAJc2l6ZV90
IG5ld19zaXplOwo+IAo+IC0JRFBSSU5URigoInRydW5jYXRlICVzIGxlbmd0aD0lZFxuIiwgdnAt
PnZfcGF0aCwgbGVuZ3RoKSk7Cj4gKwlEUFJJTlRGKCgidHJ1bmNhdGUgJXMgbGVuZ3RoPSVsbGRc
biIsIFJBTUZTX05PREUodnApLT5ybl9uYW1lLAo+ICsJCSAobG9uZyBsb25nKSBsZW5ndGgpKTsK
PiAJbnAgPSB2cC0+dl9kYXRhOwo+IAo+IAlpZiAobGVuZ3RoID09IDApIHsKPiBAQCAtMzg1LDcg
KzM4Nyw3IEBAIHJhbWZzX2NyZWF0ZShzdHJ1Y3Qgdm5vZGUgKmR2cCwgY2hhciAqbmFtZSwgbW9k
ZV90IG1vZGUpCj4gCQlyZXR1cm4gRU5BTUVUT09MT05HOwo+IAl9Cj4gCj4gLQlEUFJJTlRGKCgi
Y3JlYXRlICVzIGluICVzXG4iLCBuYW1lLCBkdnAtPnZfcGF0aCkpOwo+ICsJRFBSSU5URigoImNy
ZWF0ZSAlcyBpbiAlc1xuIiwgbmFtZSwgUkFNRlNfTk9ERShkdnApLT5ybl9uYW1lKSk7Cj4gCWlm
ICghU19JU1JFRyhtb2RlKSkKPiAJCXJldHVybiBFSU5WQUw7Cj4gCj4gLS0gCj4gMi4xOS4yCj4g
Cj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBN
aW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Cj4gTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qu
b3JnCj4gaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlv
cy1kZXZlbAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
Ck1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qu
b3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3Mt
ZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Feb 20 14:32:26 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 20 Feb 2019 14:32:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gwSvC-0007g3-26; Wed, 20 Feb 2019 14:32:26 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=VbZN=Q3=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gwSvB-0007fx-AO
 for minios-devel@lists.xen.org; Wed, 20 Feb 2019 14:32:25 +0000
X-Inumbo-ID: 56350694-351c-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 56350694-351c-11e9-bc90-bc764e045a96;
 Wed, 20 Feb 2019 14:32:24 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 07294F203D;
 Wed, 20 Feb 2019 15:32:23 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id Vq7F9bjz8IHP; Wed, 20 Feb 2019 15:32:22 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id C99D4F2004
 for <minios-devel@lists.xen.org>; Wed, 20 Feb 2019 15:32:20 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Wed, 20 Feb 2019 15:32:20 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: Simon Kuenzer <simon.kuenzer@neclab.eu>, <minios-devel@lists.xen.org>
In-Reply-To: <20190220133402.32619-1-simon.kuenzer@neclab.eu>
References: <20190220133402.32619-1-simon.kuenzer@neclab.eu>
Date: Wed, 20 Feb 2019 15:32:19 +0100
Message-ID: <tza4s2ef82msy4.fsf@N-1128.office.hd>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH] lib/vfscore: Introduce
 `vfscore_put_file`
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Simon Kuenzer <simon.kuenzer@neclab.eu>, sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGksCgpsb29rcyBnb29kIHRvIG1lCgpSZXZpZXdlZC1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52
b2xjaGtvdkBuZWNsYWIuZXU+CgotWXVyaS4KClNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJA
bmVjbGFiLmV1PiB3cml0ZXM6Cgo+IEFzIGNvdW50ZXJwYXJ0IHRvIGB2ZnNjb3JlX2dldF9maWxl
YCwgd2UgZXhwb3J0IGB2ZnNjb3JlX3B1dF9maWxlYAo+IGFzIGEgd2F5IHRvIHJlbGVhc2UgdGhl
IHJlZmNvdW50IG9uIGEgZmlsZS4KPgo+IFNpZ25lZC1vZmYtYnk6IFNpbW9uIEt1ZW56ZXIgPHNp
bW9uLmt1ZW56ZXJAbmVjbGFiLmV1Pgo+IC0tLQo+ICBsaWIvdmZzY29yZS9leHBvcnRzeW1zLnVr
ICAgICAgICAgIHwgMSArCj4gIGxpYi92ZnNjb3JlL2ZkLmMgICAgICAgICAgICAgICAgICAgfCA1
ICsrKysrCj4gIGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9maWxlLmggfCAxICsKPiAgMyBm
aWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKykKPgo+IGRpZmYgLS1naXQgYS9saWIvdmZzY29y
ZS9leHBvcnRzeW1zLnVrIGIvbGliL3Zmc2NvcmUvZXhwb3J0c3ltcy51awo+IGluZGV4IDEwZmVk
ODA2Li5lMmFmYWZhNyAxMDA2NDQKPiAtLS0gYS9saWIvdmZzY29yZS9leHBvcnRzeW1zLnVrCj4g
KysrIGIvbGliL3Zmc2NvcmUvZXhwb3J0c3ltcy51awo+IEBAIC0yLDYgKzIsNyBAQCB2ZnNjb3Jl
X2FsbG9jX2ZkCj4gIHZmc2NvcmVfcHV0X2ZkCj4gIHZmc2NvcmVfaW5zdGFsbF9mZAo+ICB2ZnNj
b3JlX2dldF9maWxlCj4gK3Zmc2NvcmVfcHV0X2ZpbGUKPiAgY2xvc2UKPiAgd3JpdGUKPiAgcmVh
ZAo+IGRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9mZC5jIGIvbGliL3Zmc2NvcmUvZmQuYwo+IGlu
ZGV4IDVhYmVkOTY5Li4xMTFiMDIyOSAxMDA2NDQKPiAtLS0gYS9saWIvdmZzY29yZS9mZC5jCj4g
KysrIGIvbGliL3Zmc2NvcmUvZmQuYwo+IEBAIC0xMzMsNiArMTMzLDExIEBAIGV4aXQ6Cj4gIAly
ZXR1cm4gcmV0Owo+ICB9Cj4gIAo+ICt2b2lkIHZmc2NvcmVfcHV0X2ZpbGUoc3RydWN0IHZmc2Nv
cmVfZmlsZSAqZmlsZSkKPiArewo+ICsJZmRyb3AoZmlsZSk7Cj4gK30KPiArCj4gIGludCBmZ2V0
KGludCBmZCwgc3RydWN0IHZmc2NvcmVfZmlsZSAqKm91dF9mcCkKPiAgewo+ICAJaW50IHJldCA9
IDA7Cj4gZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9maWxlLmggYi9s
aWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZmlsZS5oCj4gaW5kZXggN2Y0NWNhNzguLjgwODQ1
Yjc5IDEwMDY0NAo+IC0tLSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9maWxlLmgKPiAr
KysgYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZmlsZS5oCj4gQEAgLTY1LDYgKzY1LDcg
QEAgaW50IHZmc2NvcmVfYWxsb2NfZmQodm9pZCk7Cj4gIHZvaWQgdmZzY29yZV9wdXRfZmQoaW50
IGZkKTsKPiAgaW50IHZmc2NvcmVfaW5zdGFsbF9mZChpbnQgZmQsIHN0cnVjdCB2ZnNjb3JlX2Zp
bGUgKmZpbGUpOwo+ICBzdHJ1Y3QgdmZzY29yZV9maWxlICp2ZnNjb3JlX2dldF9maWxlKGludCBm
ZCk7Cj4gK3ZvaWQgdmZzY29yZV9wdXRfZmlsZShzdHJ1Y3QgdmZzY29yZV9maWxlICpmaWxlKTsK
PiAgCj4gIC8qCj4gICAqIEZpbGUgZGVzY3JpcHRvcnMgcmVmZXJlbmNlIGNvdW50Cj4gLS0gCj4g
Mi4xMS4wCj4KCi0tIApZdXJpIFZvbGNoa292ClNvZnR3YXJlIFNwZWNpYWxpc3QKCk5FQyBFdXJv
cGUgTHRkCkt1cmbDvHJzdGVuLUFubGFnZSAzNgpELTY5MTE1IEhlaWRlbGJlcmcKCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWls
aW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMu
eGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Feb 20 14:33:26 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 20 Feb 2019 14:33:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gwSwA-0007iM-FT; Wed, 20 Feb 2019 14:33:26 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=MYmH=Q3=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1gwSw9-0007iH-PX
 for minios-devel@lists.xen.org; Wed, 20 Feb 2019 14:33:25 +0000
X-Inumbo-ID: 79988e08-351c-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 79988e08-351c-11e9-bc90-bc764e045a96;
 Wed, 20 Feb 2019 14:33:23 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 8E4D0F2039;
 Wed, 20 Feb 2019 15:31:11 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id rAvzy8ZE6a9Z; Wed, 20 Feb 2019 15:31:11 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 5BDBBF2004
 for <minios-devel@lists.xen.org>; Wed, 20 Feb 2019 15:31:09 +0100 (CET)
Received: from PALLENE.office.hd ([169.254.1.27]) by METHONE.office.hd
 ([192.168.24.54]) with mapi id 14.03.0319.002; Wed, 20 Feb 2019 15:31:09
 +0100
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: Yuri Volchkov <yuri.volchkov@neclab.eu>
Thread-Topic: [Minios-devel] [UNIKRAFT PATCH v2 4/6] lib/ramfs: adapt
 imported ramfs to Unikraft
Thread-Index: AQHUv7sUR6LmAwA95EqEmz6/j1MtdKXowZwA
Date: Wed, 20 Feb 2019 14:31:08 +0000
Message-ID: <1355DE4D-8B7A-43E0-B46B-4851A11FF7E5@neclab.eu>
References: <20190208143108.27175-1-yuri.volchkov@neclab.eu>
 <20190208143108.27175-5-yuri.volchkov@neclab.eu>
In-Reply-To: <20190208143108.27175-5-yuri.volchkov@neclab.eu>
Accept-Language: en-GB, gl-ES, de-DE, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [10.1.2.186]
Content-ID: <3897CEC428EFB245994F841C43F9CC49@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 4/6] lib/ramfs: adapt
 imported ramfs to Unikraft
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>, Sharan
 Santhanam <Sharan.Santhanam@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGV5IFl1cmksCgpwbGVhc2UgZmluZCBteSBjb21tZW50cyBpbmxpbmUuCgpUaGFua3MsCgpTaW1v
bgoKPiBPbiA4LiBGZWIgMjAxOSwgYXQgMTU6MzEsIFl1cmkgVm9sY2hrb3YgPHl1cmkudm9sY2hr
b3ZAbmVjbGFiLmV1PiB3cm90ZToKPiAKPiBTaWduZWQtb2ZmLWJ5OiBZdXJpIFZvbGNoa292IDx5
dXJpLnZvbGNoa292QG5lY2xhYi5ldT4KPiAtLS0KPiBsaWIvQ29uZmlnLnVrICAgICAgICAgICAg
fCAgIDEgKwo+IGxpYi9NYWtlZmlsZS51ayAgICAgICAgICB8ICAgMSArCj4gbGliL3JhbWZzL0Nv
bmZpZy51ayAgICAgIHwgICA0ICsKPiBsaWIvcmFtZnMvTWFrZWZpbGUudWsgICAgfCAgIDUgKysK
PiBsaWIvcmFtZnMvZXhwb3J0c3ltcy51ayAgfCAgIDEgKwo+IGxpYi9yYW1mcy9yYW1mcy5oICAg
ICAgICB8ICAgNCArLQo+IGxpYi9yYW1mcy9yYW1mc192ZnNvcHMuYyB8ICAyOCArKysrLS0tCj4g
bGliL3JhbWZzL3JhbWZzX3Zub3BzLmMgIHwgMTcxICsrKysrKysrKysrKysrKysrKysrKy0tLS0t
LS0tLS0tLS0tLS0tLQo+IDggZmlsZXMgY2hhbmdlZCwgMTI0IGluc2VydGlvbnMoKyksIDkxIGRl
bGV0aW9ucygtKQo+IGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvcmFtZnMvQ29uZmlnLnVrCj4gY3Jl
YXRlIG1vZGUgMTAwNjQ0IGxpYi9yYW1mcy9NYWtlZmlsZS51awo+IGNyZWF0ZSBtb2RlIDEwMDY0
NCBsaWIvcmFtZnMvZXhwb3J0c3ltcy51awo+IAo+IGRpZmYgLS1naXQgYS9saWIvQ29uZmlnLnVr
IGIvbGliL0NvbmZpZy51awo+IGluZGV4IDVjZDc1ODU4Li5kMDMyMzVhNyAxMDA2NDQKPiAtLS0g
YS9saWIvQ29uZmlnLnVrCj4gKysrIGIvbGliL0NvbmZpZy51awo+IEBAIC0zNCw2ICszNCw3IEBA
IHNvdXJjZSAibGliL3Vrc2NoZWQvQ29uZmlnLnVrIgo+IHNvdXJjZSAibGliL3Vrc2NoZWRjb29w
L0NvbmZpZy51ayIKPiBzb3VyY2UgImxpYi9mZHQvQ29uZmlnLnVrIgo+IHNvdXJjZSAibGliL3Zm
c2NvcmUvQ29uZmlnLnVrIgo+ICtzb3VyY2UgImxpYi9yYW1mcy9Db25maWcudWsiCj4gc291cmNl
ICJsaWIvdWtsb2NrL0NvbmZpZy51ayIKPiBzb3VyY2UgImxpYi91a21waS9Db25maWcudWsiCj4g
c291cmNlICJsaWIvdWtzd3JhbmQvQ29uZmlnLnVrIgo+IGRpZmYgLS1naXQgYS9saWIvTWFrZWZp
bGUudWsgYi9saWIvTWFrZWZpbGUudWsKPiBpbmRleCA0YzJjYzg3ZC4uZDY2YzdlZTkgMTAwNjQ0
Cj4gLS0tIGEvbGliL01ha2VmaWxlLnVrCj4gKysrIGIvbGliL01ha2VmaWxlLnVrCj4gQEAgLTE2
LDYgKzE2LDcgQEAgJChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENPTkZJR19VS19CQVNFKS9s
aWIvdWtzY2hlZCkpCj4gJChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENPTkZJR19VS19CQVNF
KS9saWIvdWtzY2hlZGNvb3ApKQo+ICQoZXZhbCAkKGNhbGwgX2ltcG9ydF9saWIsJChDT05GSUdf
VUtfQkFTRSkvbGliL2ZkdCkpCj4gJChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENPTkZJR19V
S19CQVNFKS9saWIvdmZzY29yZSkpCj4gKyQoZXZhbCAkKGNhbGwgX2ltcG9ydF9saWIsJChDT05G
SUdfVUtfQkFTRSkvbGliL3JhbWZzKSkKPiAkKGV2YWwgJChjYWxsIF9pbXBvcnRfbGliLCQoQ09O
RklHX1VLX0JBU0UpL2xpYi91a2xvY2spKQo+ICQoZXZhbCAkKGNhbGwgX2ltcG9ydF9saWIsJChD
T05GSUdfVUtfQkFTRSkvbGliL3VrbXBpKSkKPiAkKGV2YWwgJChjYWxsIF9pbXBvcnRfbGliLCQo
Q09ORklHX1VLX0JBU0UpL2xpYi91a2J1cykpCj4gZGlmZiAtLWdpdCBhL2xpYi9yYW1mcy9Db25m
aWcudWsgYi9saWIvcmFtZnMvQ29uZmlnLnVrCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRl
eCAwMDAwMDAwMC4uNTJlNDM4OGMKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvbGliL3JhbWZzL0Nv
bmZpZy51awo+IEBAIC0wLDAgKzEsNCBAQAo+ICtjb25maWcgTElCUkFNRlMKPiArCWJvb2wgInJh
bWZzOiBzaW1wbGUgUkFNIGZpbGUgc3lzdGVtIgo+ICsJZGVmYXVsdCBuCj4gKwlkZXBlbmRzIG9u
IExJQlZGU0NPUkUKPiBkaWZmIC0tZ2l0IGEvbGliL3JhbWZzL01ha2VmaWxlLnVrIGIvbGliL3Jh
bWZzL01ha2VmaWxlLnVrCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMC4u
Y2Q2ZGFmZDUKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvbGliL3JhbWZzL01ha2VmaWxlLnVrCj4g
QEAgLTAsMCArMSw1IEBACj4gKyQoZXZhbCAkKGNhbGwgYWRkbGliX3MsbGlicmFtZnMsJChDT05G
SUdfTElCUkFNRlMpKSkKPiArCj4gK0xJQlJBTUZTX1NSQ1MteSArPSAkKExJQlJBTUZTX0JBU0Up
L3JhbWZzX3Zmc29wcy5jCj4gK0xJQlJBTUZTX1NSQ1MteSArPSAkKExJQlJBTUZTX0JBU0UpL3Jh
bWZzX3Zub3BzLmMKPiArTElCUkFNRlNfQ0ZMQUdTICs9IC1EREVCVUdfUkFNRlMgLURVS19ERUJV
RwoKSSB3b3VsZCBub3QgaGFuZG92ZXIgVUtfREVCVUcgYWx3YXlzLiBTZWUgYWxzbyBteSBjb21t
ZW50cyBvbiBwYXRjaCA1LgpBIG1lbnUgb3B0aW9uIGluIENvbmZpZy51ayBjb3VsZCBiZSBhZGRl
ZCB0byBpbnRyb2R1Y2UgdGhpcyBmbGFnIHdoZW4gc2VsZWN0ZWQuIAoKPiBkaWZmIC0tZ2l0IGEv
bGliL3JhbWZzL2V4cG9ydHN5bXMudWsgYi9saWIvcmFtZnMvZXhwb3J0c3ltcy51awo+IG5ldyBm
aWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAuLmM4NmMzZjM1Cj4gLS0tIC9kZXYvbnVs
bAo+ICsrKyBiL2xpYi9yYW1mcy9leHBvcnRzeW1zLnVrCj4gQEAgLTAsMCArMSBAQAo+ICtub25l
Cj4gXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCj4gZGlmZiAtLWdpdCBhL2xpYi9yYW1mcy9y
YW1mcy5oIGIvbGliL3JhbWZzL3JhbWZzLmgKPiBpbmRleCAwMWU0ZGEwOS4uOTFmYjU3OWMgMTAw
NjQ0Cj4gLS0tIGEvbGliL3JhbWZzL3JhbWZzLmgKPiArKysgYi9saWIvcmFtZnMvcmFtZnMuaAo+
IEBAIC0zMyw3ICszMyw3IEBACj4gI2lmbmRlZiBfUkFNRlNfSAo+ICNkZWZpbmUgX1JBTUZTX0gK
PiAKPiAtI2luY2x1ZGUgPG9zdi9wcmV4Lmg+Cj4gKyNpbmNsdWRlIDx2ZnNjb3JlL3ByZXguaD4K
PiAKPiAvKiAjZGVmaW5lIERFQlVHX1JBTUZTIDEgKi8KPiAKPiBAQCAtNjEsNyArNjEsNyBAQCBz
dHJ1Y3QgcmFtZnNfbm9kZSB7Cj4gCXN0cnVjdCB0aW1lc3BlYyBybl9hdGltZTsKPiAJc3RydWN0
IHRpbWVzcGVjIHJuX210aW1lOwo+IAlpbnQgcm5fbW9kZTsKPiAtCWJvb2wgcm5fb3duc19idWY7
Cj4gKwlpbnQgcm5fb3duc19idWY7CgpXZSBoYXZlIGBzdGRib29sLmhgIGluIHRoZSBtZWFudGlt
ZS4gWW91IGRvIG5vdCBuZWVkIHRvIHJlcGxhY2UgdGhlIGJvb2wgZGF0YXR5cGUgYW55bW9yZS4K
Cj4gfTsKPiAKPiBzdHJ1Y3QgcmFtZnNfbm9kZSAqcmFtZnNfYWxsb2NhdGVfbm9kZShjb25zdCBj
aGFyICpuYW1lLCBpbnQgdHlwZSk7Cj4gZGlmZiAtLWdpdCBhL2xpYi9yYW1mcy9yYW1mc192ZnNv
cHMuYyBiL2xpYi9yYW1mcy9yYW1mc192ZnNvcHMuYwo+IGluZGV4IDRkZjU0YzVmLi4zYjVjMDc1
YyAxMDA2NDQKPiAtLS0gYS9saWIvcmFtZnMvcmFtZnNfdmZzb3BzLmMKPiArKysgYi9saWIvcmFt
ZnMvcmFtZnNfdmZzb3BzLmMKPiBAQCAtMzIsOSArMzIsMTAgQEAKPiAKPiAjaW5jbHVkZSA8ZXJy
bm8uaD4KPiAKPiAtI2luY2x1ZGUgPG9zdi92bm9kZS5oPgo+IC0jaW5jbHVkZSA8b3N2L21vdW50
Lmg+Cj4gLSNpbmNsdWRlIDxvc3YvZGVudHJ5Lmg+Cj4gKyNkZWZpbmUgX0JTRF9TT1VSQ0UKPiAr
I2luY2x1ZGUgPHZmc2NvcmUvdm5vZGUuaD4KPiArI2luY2x1ZGUgPHZmc2NvcmUvbW91bnQuaD4K
PiArI2luY2x1ZGUgPHZmc2NvcmUvZGVudHJ5Lmg+Cj4gCj4gI2luY2x1ZGUgInJhbWZzLmgiCj4g
Cj4gQEAgLTQ0LDkgKzQ1LDkgQEAgc3RhdGljIGludCByYW1mc19tb3VudChzdHJ1Y3QgbW91bnQg
Km1wLCBjb25zdCBjaGFyICpkZXYsIGludCBmbGFncywgY29uc3Qgdm9pZAo+IAo+IHN0YXRpYyBp
bnQgcmFtZnNfdW5tb3VudChzdHJ1Y3QgbW91bnQgKm1wLCBpbnQgZmxhZ3MpOwo+IAo+IC0jZGVm
aW5lIHJhbWZzX3N5bmMgICAgKCh2ZnNvcF9zeW5jX3QpdmZzX251bGxvcCkKPiAtI2RlZmluZSBy
YW1mc192Z2V0ICAgICgodmZzb3BfdmdldF90KXZmc19udWxsb3ApCj4gLSNkZWZpbmUgcmFtZnNf
c3RhdGZzICAgICgodmZzb3Bfc3RhdGZzX3QpdmZzX251bGxvcCkKPiArI2RlZmluZSByYW1mc19z
eW5jICAgICgodmZzb3Bfc3luY190KXZmc2NvcmVfbnVsbG9wKQo+ICsjZGVmaW5lIHJhbWZzX3Zn
ZXQgICAgKCh2ZnNvcF92Z2V0X3QpdmZzY29yZV9udWxsb3ApCj4gKyNkZWZpbmUgcmFtZnNfc3Rh
dGZzICAgICgodmZzb3Bfc3RhdGZzX3QpdmZzY29yZV9udWxsb3ApCj4gCj4gLyoKPiAgKiBGaWxl
IHN5c3RlbSBvcGVyYXRpb25zCj4gQEAgLTYwLDExICs2MSwyMCBAQCBzdHJ1Y3QgdmZzb3BzIHJh
bWZzX3Zmc29wcyA9IHsKPiAJCSZyYW1mc192bm9wcywgICAgICAvKiB2bm9wcyAqLwo+IH07Cj4g
Cj4gK3N0YXRpYyBzdHJ1Y3QgdmZzY29yZV9mc190eXBlIGZzX3JhbWZzID0gewo+ICsJLnZzX25h
bWUgPSAicmFtZnMiLAo+ICsJLnZzX2luaXQgPSBOVUxMLAo+ICsJLnZzX29wID0gJnJhbWZzX3Zm
c29wcywKPiArfTsKPiArCj4gK1VLX0ZTX1JFR0lTVEVSKGZzX3JhbWZzKTsKPiArCj4gLyoKPiAg
KiBNb3VudCBhIGZpbGUgc3lzdGVtLgo+ICAqLwo+IHN0YXRpYyBpbnQKPiAtcmFtZnNfbW91bnQo
c3RydWN0IG1vdW50ICptcCwgY29uc3QgY2hhciAqZGV2LCBpbnQgZmxhZ3MsIGNvbnN0IHZvaWQg
KmRhdGEpCj4gK3JhbWZzX21vdW50KHN0cnVjdCBtb3VudCAqbXAsIGNvbnN0IGNoYXIgKmRldiBf
X3VudXNlZCwKPiArCSAgICBpbnQgZmxhZ3MgX191bnVzZWQsIGNvbnN0IHZvaWQgKmRhdGEgX191
bnVzZWQpCj4gewo+IAlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnA7Cj4gCj4gQEAgLTg2LDggKzk2LDgg
QEAgcmFtZnNfbW91bnQoc3RydWN0IG1vdW50ICptcCwgY29uc3QgY2hhciAqZGV2LCBpbnQgZmxh
Z3MsIGNvbnN0IHZvaWQgKmRhdGEpCj4gICogICAgICAgZGlyZWN0b3JpZXMsIGFuZCBpdCByZXF1
aXJlcyBtb3JlIHdvcmsuLi4KPiAgKi8KPiBzdGF0aWMgaW50Cj4gLXJhbWZzX3VubW91bnQoc3Ry
dWN0IG1vdW50ICptcCwgaW50IGZsYWdzKQo+ICtyYW1mc191bm1vdW50KHN0cnVjdCBtb3VudCAq
bXAsIGludCBmbGFncyBfX3VudXNlZCkKPiB7Cj4gLQlyZWxlYXNlX21wX2RlbnRyaWVzKG1wKTsK
PiArCXZmc2NvcmVfcmVsZWFzZV9tcF9kZW50cmllcyhtcCk7Cj4gCXJldHVybiAwOwo+IH0KPiBk
aWZmIC0tZ2l0IGEvbGliL3JhbWZzL3JhbWZzX3Zub3BzLmMgYi9saWIvcmFtZnMvcmFtZnNfdm5v
cHMuYwo+IGluZGV4IDQ1MzhlOWNiLi42NmFiOGE2NCAxMDA2NDQKPiAtLS0gYS9saWIvcmFtZnMv
cmFtZnNfdm5vcHMuYwo+ICsrKyBiL2xpYi9yYW1mcy9yYW1mc192bm9wcy5jCj4gQEAgLTMzLDcg
KzMzLDkgQEAKPiAvKgo+ICAqIHJtYWZzX3Zub3BzLmMgLSB2bm9kZSBvcGVyYXRpb25zIGZvciBS
QU0gZmlsZSBzeXN0ZW0uCj4gICovCj4gKyNkZWZpbmUgX0dOVV9TT1VSQ0UKPiAKPiArI2luY2x1
ZGUgPHVrL2Vzc2VudGlhbHMuaD4KPiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KPiAjaW5jbHVkZSA8
ZGlyZW50Lmg+Cj4gI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgo+IEBAIC00MSwyNCArNDMsMjkgQEAK
PiAjaW5jbHVkZSA8ZXJybm8uaD4KPiAjaW5jbHVkZSA8c3RyaW5nLmg+Cj4gI2luY2x1ZGUgPHN0
ZGxpYi5oPgo+IC0jaW5jbHVkZSA8ZmNudGwuaD4KPiAKPiAtI2luY2x1ZGUgPG9zdi9wcmV4Lmg+
Cj4gLSNpbmNsdWRlIDxvc3Yvdm5vZGUuaD4KPiAtI2luY2x1ZGUgPG9zdi9maWxlLmg+Cj4gLSNp
bmNsdWRlIDxvc3YvbW91bnQuaD4KPiAtI2luY2x1ZGUgPG9zdi92bm9kZV9hdHRyLmg+Cj4gKyNp
bmNsdWRlIDx2ZnNjb3JlL3ByZXguaD4KPiArI2luY2x1ZGUgPHZmc2NvcmUvdm5vZGUuaD4KPiAr
I2luY2x1ZGUgPHZmc2NvcmUvbW91bnQuaD4KPiArI2luY2x1ZGUgPHZmc2NvcmUvdWlvLmg+Cj4g
KyNpbmNsdWRlIDx2ZnNjb3JlL2ZpbGUuaD4KPiAKPiAjaW5jbHVkZSAicmFtZnMuaCIKPiArI2lu
Y2x1ZGUgPGRpcmVudC5oPgo+ICsjaW5jbHVkZSA8ZmNudGwuaD4KPiArI2luY2x1ZGUgPHZmc2Nv
cmUvZnMuaD4KPiAKPiAtc3RhdGljIG11dGV4X3QgcmFtZnNfbG9jayA9IE1VVEVYX0lOSVRJQUxJ
WkVSOwo+ICtzdGF0aWMgc3RydWN0IHVrX211dGV4IHJhbWZzX2xvY2sgPSBVS19NVVRFWF9JTklU
SUFMSVpFUihyYW1mc19sb2NrKTsKPiBzdGF0aWMgdWludDY0X3QgaW5vZGVfY291bnQgPSAxOyAv
KiBpbm9kZSAwIGlzIHJlc2VydmVkIHRvIHJvb3QgKi8KPiAKPiBzdGF0aWMgdm9pZAo+IC1zZXRf
dGltZXNfdG9fbm93KHN0cnVjdCB0aW1lc3BlYyAqdGltZTEsIHN0cnVjdCB0aW1lc3BlYyAqdGlt
ZTIgPSBudWxscHRyLCBzdHJ1Y3QgdGltZXNwZWMgKnRpbWUzID0gbnVsbHB0cikKPiArc2V0X3Rp
bWVzX3RvX25vdyhzdHJ1Y3QgdGltZXNwZWMgKnRpbWUxLCBzdHJ1Y3QgdGltZXNwZWMgKnRpbWUy
LAo+ICsJCSBzdHJ1Y3QgdGltZXNwZWMgKnRpbWUzKQo+IHsKPiAtCXN0cnVjdCB0aW1lc3BlYyBu
b3c7Cj4gLQljbG9ja19nZXR0aW1lKENMT0NLX1JFQUxUSU1FLCAmbm93KTsKPiArCXN0cnVjdCB0
aW1lc3BlYyBub3cgPSB7MCwgMH07Cj4gKwo+ICsJLyogVE9ETzogaW1wbGVtZW50IHRoZSByZWFs
IGNsb2NrX2dldHRpbWUgKi8KPiArCS8qIGNsb2NrX2dldHRpbWUoQ0xPQ0tfUkVBTFRJTUUsICZu
b3cpOyAqLwo+IAlpZiAodGltZTEpIHsKPiAJCW1lbWNweSh0aW1lMSwgJm5vdywgc2l6ZW9mKHN0
cnVjdCB0aW1lc3BlYykpOwo+IAl9Cj4gQEAgLTc1LDcgKzgyLDcgQEAgcmFtZnNfYWxsb2NhdGVf
bm9kZShjb25zdCBjaGFyICpuYW1lLCBpbnQgdHlwZSkKPiB7Cj4gCXN0cnVjdCByYW1mc19ub2Rl
ICpucDsKPiAKPiAtCW5wID0gKHJhbWZzX25vZGUgKikgbWFsbG9jKHNpemVvZihzdHJ1Y3QgcmFt
ZnNfbm9kZSkpOwo+ICsJbnAgPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCByYW1mc19ub2RlKSk7Cj4g
CWlmIChucCA9PSBOVUxMKQo+IAkJcmV0dXJuIE5VTEw7Cj4gCW1lbXNldChucCwgMCwgc2l6ZW9m
KHN0cnVjdCByYW1mc19ub2RlKSk7Cj4gQEAgLTk3LDcgKzEwNCw3IEBAIHJhbWZzX2FsbG9jYXRl
X25vZGUoY29uc3QgY2hhciAqbmFtZSwgaW50IHR5cGUpCj4gCQlucC0+cm5fbW9kZSA9IFNfSUZS
RUd8MDc3NzsKPiAKPiAJc2V0X3RpbWVzX3RvX25vdygmKG5wLT5ybl9jdGltZSksICYobnAtPnJu
X2F0aW1lKSwgJihucC0+cm5fbXRpbWUpKTsKPiAtCW5wLT5ybl9vd25zX2J1ZiA9IHRydWU7Cj4g
KwlucC0+cm5fb3duc19idWYgPSAxOwo+IAo+IAlyZXR1cm4gbnA7Cj4gfQo+IEBAIC0xMjEsNyAr
MTI4LDcgQEAgcmFtZnNfYWRkX25vZGUoc3RydWN0IHJhbWZzX25vZGUgKmRucCwgY2hhciAqbmFt
ZSwgaW50IHR5cGUpCj4gCWlmIChucCA9PSBOVUxMKQo+IAkJcmV0dXJuIE5VTEw7Cj4gCj4gLQlt
dXRleF9sb2NrKCZyYW1mc19sb2NrKTsKPiArCXVrX211dGV4X2xvY2soJnJhbWZzX2xvY2spOwo+
IAo+IAkvKiBMaW5rIHRvIHRoZSBkaXJlY3RvcnkgbGlzdCAqLwo+IAlpZiAoZG5wLT5ybl9jaGls
ZCA9PSBOVUxMKSB7Cj4gQEAgLTEzMyw5ICsxNDAsOSBAQCByYW1mc19hZGRfbm9kZShzdHJ1Y3Qg
cmFtZnNfbm9kZSAqZG5wLCBjaGFyICpuYW1lLCBpbnQgdHlwZSkKPiAJCXByZXYtPnJuX25leHQg
PSBucDsKPiAJfQo+IAo+IC0Jc2V0X3RpbWVzX3RvX25vdygmKGRucC0+cm5fbXRpbWUpLCAmKGRu
cC0+cm5fY3RpbWUpKTsKPiArCXNldF90aW1lc190b19ub3coJihkbnAtPnJuX210aW1lKSwgJihk
bnAtPnJuX2N0aW1lKSwgTlVMTCk7Cj4gCj4gLQltdXRleF91bmxvY2soJnJhbWZzX2xvY2spOwo+
ICsJdWtfbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKPiAJcmV0dXJuIG5wOwo+IH0KPiAKPiBA
QCAtMTQ3LDcgKzE1NCw3IEBAIHJhbWZzX3JlbW92ZV9ub2RlKHN0cnVjdCByYW1mc19ub2RlICpk
bnAsIHN0cnVjdCByYW1mc19ub2RlICpucCkKPiAJaWYgKGRucC0+cm5fY2hpbGQgPT0gTlVMTCkK
PiAJCXJldHVybiBFQlVTWTsKPiAKPiAtCW11dGV4X2xvY2soJnJhbWZzX2xvY2spOwo+ICsJdWtf
bXV0ZXhfbG9jaygmcmFtZnNfbG9jayk7Cj4gCj4gCS8qIFVubGluayBmcm9tIHRoZSBkaXJlY3Rv
cnkgbGlzdCAqLwo+IAlpZiAoZG5wLT5ybl9jaGlsZCA9PSBucCkgewo+IEBAIC0xNTYsNyArMTYz
LDcgQEAgcmFtZnNfcmVtb3ZlX25vZGUoc3RydWN0IHJhbWZzX25vZGUgKmRucCwgc3RydWN0IHJh
bWZzX25vZGUgKm5wKQo+IAkJZm9yIChwcmV2ID0gZG5wLT5ybl9jaGlsZDsgcHJldi0+cm5fbmV4
dCAhPSBucDsKPiAJCQkgcHJldiA9IHByZXYtPnJuX25leHQpIHsKPiAJCQlpZiAocHJldi0+cm5f
bmV4dCA9PSBOVUxMKSB7Cj4gLQkJCQltdXRleF91bmxvY2soJnJhbWZzX2xvY2spOwo+ICsJCQkJ
dWtfbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKPiAJCQkJcmV0dXJuIEVOT0VOVDsKPiAJCQl9
Cj4gCQl9Cj4gQEAgLTE2NCw5ICsxNzEsOSBAQCByYW1mc19yZW1vdmVfbm9kZShzdHJ1Y3QgcmFt
ZnNfbm9kZSAqZG5wLCBzdHJ1Y3QgcmFtZnNfbm9kZSAqbnApCj4gCX0KPiAJcmFtZnNfZnJlZV9u
b2RlKG5wKTsKPiAKPiAtCXNldF90aW1lc190b19ub3coJihkbnAtPnJuX210aW1lKSwgJihkbnAt
PnJuX2N0aW1lKSk7Cj4gKwlzZXRfdGltZXNfdG9fbm93KCYoZG5wLT5ybl9tdGltZSksICYoZG5w
LT5ybl9jdGltZSksIE5VTEwpOwo+IAo+IC0JbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKPiAr
CXVrX211dGV4X3VubG9jaygmcmFtZnNfbG9jayk7Cj4gCXJldHVybiAwOwo+IH0KPiAKPiBAQCAt
MTkzLDcgKzIwMCw3IEBAIHJhbWZzX3JlbmFtZV9ub2RlKHN0cnVjdCByYW1mc19ub2RlICpucCwg
Y2hhciAqbmFtZSkKPiAJCW5wLT5ybl9uYW1lID0gdG1wOwo+IAl9Cj4gCW5wLT5ybl9uYW1lbGVu
ID0gbGVuOwo+IC0Jc2V0X3RpbWVzX3RvX25vdygmKG5wLT5ybl9jdGltZSkpOwo+ICsJc2V0X3Rp
bWVzX3RvX25vdygmKG5wLT5ybl9jdGltZSksIE5VTEwsIE5VTEwpOwo+IAlyZXR1cm4gMDsKPiB9
Cj4gCj4gQEAgLTIxMCwxMCArMjE3LDEwIEBAIHJhbWZzX2xvb2t1cChzdHJ1Y3Qgdm5vZGUgKmR2
cCwgY2hhciAqbmFtZSwgc3RydWN0IHZub2RlICoqdnBwKQo+IAlpZiAoKm5hbWUgPT0gJ1wwJykK
PiAJCXJldHVybiBFTk9FTlQ7Cj4gCj4gLQltdXRleF9sb2NrKCZyYW1mc19sb2NrKTsKPiArCXVr
X211dGV4X2xvY2soJnJhbWZzX2xvY2spOwo+IAo+IAlsZW4gPSBzdHJsZW4obmFtZSk7Cj4gLQlk
bnAgPSAocmFtZnNfbm9kZSAqKSBkdnAtPnZfZGF0YTsKPiArCWRucCA9IGR2cC0+dl9kYXRhOwo+
IAlmb3VuZCA9IDA7Cj4gCWZvciAobnAgPSBkbnAtPnJuX2NoaWxkOyBucCAhPSBOVUxMOyBucCA9
IG5wLT5ybl9uZXh0KSB7Cj4gCQlpZiAobnAtPnJuX25hbWVsZW4gPT0gbGVuICYmCj4gQEAgLTIy
MywxNyArMjMwLDE3IEBAIHJhbWZzX2xvb2t1cChzdHJ1Y3Qgdm5vZGUgKmR2cCwgY2hhciAqbmFt
ZSwgc3RydWN0IHZub2RlICoqdnBwKQo+IAkJfQo+IAl9Cj4gCWlmIChmb3VuZCA9PSAwKSB7Cj4g
LQkJbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKPiArCQl1a19tdXRleF91bmxvY2soJnJhbWZz
X2xvY2spOwo+IAkJcmV0dXJuIEVOT0VOVDsKPiAJfQo+IC0JaWYgKHZnZXQoZHZwLT52X21vdW50
LCBpbm9kZV9jb3VudCsrLCAmdnApKSB7Cj4gKwlpZiAodmZzY29yZV92Z2V0KGR2cC0+dl9tb3Vu
dCwgaW5vZGVfY291bnQrKywgJnZwKSkgewo+IAkJLyogZm91bmQgaW4gY2FjaGUgKi8KPiAJCSp2
cHAgPSB2cDsKPiAtCQltdXRleF91bmxvY2soJnJhbWZzX2xvY2spOwo+ICsJCXVrX211dGV4X3Vu
bG9jaygmcmFtZnNfbG9jayk7Cj4gCQlyZXR1cm4gMDsKPiAJfQo+IAlpZiAoIXZwKSB7Cj4gLQkJ
bXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKPiArCQl1a19tdXRleF91bmxvY2soJnJhbWZzX2xv
Y2spOwo+IAkJcmV0dXJuIEVOT01FTTsKPiAJfQo+IAl2cC0+dl9kYXRhID0gbnA7Cj4gQEAgLTI0
MSw3ICsyNDgsNyBAQCByYW1mc19sb29rdXAoc3RydWN0IHZub2RlICpkdnAsIGNoYXIgKm5hbWUs
IHN0cnVjdCB2bm9kZSAqKnZwcCkKPiAJdnAtPnZfdHlwZSA9IG5wLT5ybl90eXBlOwo+IAl2cC0+
dl9zaXplID0gbnAtPnJuX3NpemU7Cj4gCj4gLQltdXRleF91bmxvY2soJnJhbWZzX2xvY2spOwo+
ICsJdWtfbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKPiAKPiAJKnZwcCA9IHZwOwo+IAo+IEBA
IC0yNjEsNyArMjY4LDcgQEAgcmFtZnNfbWtkaXIoc3RydWN0IHZub2RlICpkdnAsIGNoYXIgKm5h
bWUsIG1vZGVfdCBtb2RlKQo+IAlpZiAoIVNfSVNESVIobW9kZSkpCj4gCQlyZXR1cm4gRUlOVkFM
Owo+IAo+IC0JbnAgPSAocmFtZnNfbm9kZSAqKSByYW1mc19hZGRfbm9kZSgocmFtZnNfbm9kZSAq
KSBkdnAtPnZfZGF0YSwgbmFtZSwgVkRJUik7Cj4gKwlucCA9IHJhbWZzX2FkZF9ub2RlKGR2cC0+
dl9kYXRhLCBuYW1lLCBWRElSKTsKPiAJaWYgKG5wID09IE5VTEwpCj4gCQlyZXR1cm4gRU5PTUVN
Owo+IAlucC0+cm5fc2l6ZSA9IDA7Cj4gQEAgLTI3NSw3ICsyODIsNyBAQCByYW1mc19zeW1saW5r
KHN0cnVjdCB2bm9kZSAqZHZwLCBjaGFyICpuYW1lLCBjaGFyICpsaW5rKQo+IAlpZiAoc3RybGVu
KG5hbWUpID4gTkFNRV9NQVgpIHsKPiAJCXJldHVybiBFTkFNRVRPT0xPTkc7Cj4gCX0KPiAtCWF1
dG8gbnAgPSByYW1mc19hZGRfbm9kZSgocmFtZnNfbm9kZSAqKSBkdnAtPnZfZGF0YSwgbmFtZSwg
VkxOSyk7Cj4gKwlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSByYW1mc19hZGRfbm9kZShkdnAtPnZf
ZGF0YSwgbmFtZSwgVkxOSyk7Cj4gCWlmIChucCA9PSBOVUxMKQo+IAkJcmV0dXJuIEVOT01FTTsK
PiAJLy8gU2F2ZSB0aGUgbGluayB0YXJnZXQgd2l0aG91dCB0aGUgZmluYWwgbnVsbCwgYXMgcmVh
ZGxpbmsoKSB3YW50cyBpdC4KPiBAQCAtMjg2LDEwICsyOTMsMTAgQEAgcmFtZnNfc3ltbGluayhz
dHJ1Y3Qgdm5vZGUgKmR2cCwgY2hhciAqbmFtZSwgY2hhciAqbGluaykKPiAJcmV0dXJuIDA7Cj4g
fQo+IAo+IC1zdGF0aWMgaW50Cj4gK3N0YXRpYyBzc2l6ZV90Cj4gcmFtZnNfcmVhZGxpbmsoc3Ry
dWN0IHZub2RlICp2cCwgc3RydWN0IHVpbyAqdWlvKQo+IHsKPiAtCXN0cnVjdCByYW1mc19ub2Rl
ICpucCA9IChyYW1mc19ub2RlICopIHZwLT52X2RhdGE7Cj4gKwlzdHJ1Y3QgcmFtZnNfbm9kZSAq
bnAgPSB2cC0+dl9kYXRhOwo+IAlzaXplX3QgbGVuOwo+IAo+IAlpZiAodnAtPnZfdHlwZSAhPSBW
TE5LKSB7Cj4gQEAgLTMwOCwyMyArMzE1LDIzIEBAIHJhbWZzX3JlYWRsaW5rKHN0cnVjdCB2bm9k
ZSAqdnAsIHN0cnVjdCB1aW8gKnVpbykKPiAJZWxzZQo+IAkJbGVuID0gdWlvLT51aW9fcmVzaWQ7
Cj4gCj4gLQlzZXRfdGltZXNfdG9fbm93KCAmKG5wLT5ybl9hdGltZSkpOwo+IC0JcmV0dXJuIHVp
b21vdmUobnAtPnJuX2J1ZiArIHVpby0+dWlvX29mZnNldCwgbGVuLCB1aW8pOwo+ICsJc2V0X3Rp
bWVzX3RvX25vdygmKG5wLT5ybl9hdGltZSksIE5VTEwsIE5VTEwpOwo+ICsJcmV0dXJuIHZmc2Nv
cmVfdWlvbW92ZShucC0+cm5fYnVmICsgdWlvLT51aW9fb2Zmc2V0LCBsZW4sIHVpbyk7Cj4gfQo+
IAo+IC8qIFJlbW92ZSBhIGRpcmVjdG9yeSAqLwo+IHN0YXRpYyBpbnQKPiAtcmFtZnNfcm1kaXIo
c3RydWN0IHZub2RlICpkdnAsIHN0cnVjdCB2bm9kZSAqdnAsIGNoYXIgKm5hbWUpCj4gK3JhbWZz
X3JtZGlyKHN0cnVjdCB2bm9kZSAqZHZwLCBzdHJ1Y3Qgdm5vZGUgKnZwLCBjaGFyICpuYW1lIF9f
dW51c2VkKQo+IHsKPiAtCXJldHVybiByYW1mc19yZW1vdmVfbm9kZSgocmFtZnNfbm9kZSAqKSBk
dnAtPnZfZGF0YSwgKHJhbWZzX25vZGUgKikgdnAtPnZfZGF0YSk7Cj4gKwlyZXR1cm4gcmFtZnNf
cmVtb3ZlX25vZGUoZHZwLT52X2RhdGEsIHZwLT52X2RhdGEpOwo+IH0KPiAKPiAvKiBSZW1vdmUg
YSBmaWxlICovCj4gc3RhdGljIGludAo+IC1yYW1mc19yZW1vdmUoc3RydWN0IHZub2RlICpkdnAs
IHN0cnVjdCB2bm9kZSAqdnAsIGNoYXIgKm5hbWUpCj4gK3JhbWZzX3JlbW92ZShzdHJ1Y3Qgdm5v
ZGUgKmR2cCwgc3RydWN0IHZub2RlICp2cCwgY2hhciAqbmFtZSBfX3VudXNlZCkKPiB7Cj4gCURQ
UklOVEYoKCJyZW1vdmUgJXMgaW4gJXNcbiIsIG5hbWUsIGR2cC0+dl9wYXRoKSk7Cj4gLQlyZXR1
cm4gcmFtZnNfcmVtb3ZlX25vZGUoKHJhbWZzX25vZGUgKikgZHZwLT52X2RhdGEsIChyYW1mc19u
b2RlICopIHZwLT52X2RhdGEpOwo+ICsJcmV0dXJuIHJhbWZzX3JlbW92ZV9ub2RlKGR2cC0+dl9k
YXRhLCB2cC0+dl9kYXRhKTsKPiB9Cj4gCj4gLyogVHJ1bmNhdGUgZmlsZSAqLwo+IEBAIC0zMzYs
NyArMzQzLDcgQEAgcmFtZnNfdHJ1bmNhdGUoc3RydWN0IHZub2RlICp2cCwgb2ZmX3QgbGVuZ3Ro
KQo+IAlzaXplX3QgbmV3X3NpemU7Cj4gCj4gCURQUklOVEYoKCJ0cnVuY2F0ZSAlcyBsZW5ndGg9
JWRcbiIsIHZwLT52X3BhdGgsIGxlbmd0aCkpOwo+IC0JbnAgPSAocmFtZnNfbm9kZSAqKSB2cC0+
dl9kYXRhOwo+ICsJbnAgPSB2cC0+dl9kYXRhOwo+IAo+IAlpZiAobGVuZ3RoID09IDApIHsKPiAJ
CWlmIChucC0+cm5fYnVmICE9IE5VTEwpIHsKPiBAQCAtMzQ1LDcgKzM1Miw3IEBAIHJhbWZzX3Ry
dW5jYXRlKHN0cnVjdCB2bm9kZSAqdnAsIG9mZl90IGxlbmd0aCkKPiAJCQlucC0+cm5fYnVmID0g
TlVMTDsKPiAJCQlucC0+cm5fYnVmc2l6ZSA9IDA7Cj4gCQl9Cj4gLQl9IGVsc2UgaWYgKHNpemVf
dChsZW5ndGgpID4gbnAtPnJuX2J1ZnNpemUpIHsKPiArCX0gZWxzZSBpZiAoKHNpemVfdCkgbGVu
Z3RoID4gbnAtPnJuX2J1ZnNpemUpIHsKPiAJCS8vIFhYWDogdGhpcyBjb3VsZCB1c2UgYSBwYWdl
IGxldmVsIGFsbG9jYXRvcgoKWW91IGNvdWxkIGNvbnZlcnQgdGhpcyBYWFggY29tbWVudCB0byBh
IFRPRE8uIFdlIGhhdmUgYWN0dWFsbHkgYSBwYWdlIGxldmVsIGFsbG9jYXRvciBpbnRlcmZhY2Ug
dGhhdCB3ZSBjb3VsZCB1c2UgaW4gdGhlIGZ1dHVyZS4KCj4gCQluZXdfc2l6ZSA9IHJvdW5kX3Bh
Z2UobGVuZ3RoKTsKPiAJCW5ld19idWYgPSBtYWxsb2MobmV3X3NpemUpOwo+IEBAIC0zNTgsMTEg
KzM2NSwxMSBAQCByYW1mc190cnVuY2F0ZShzdHJ1Y3Qgdm5vZGUgKnZwLCBvZmZfdCBsZW5ndGgp
Cj4gCQl9Cj4gCQlucC0+cm5fYnVmID0gKGNoYXIgKikgbmV3X2J1ZjsKPiAJCW5wLT5ybl9idWZz
aXplID0gbmV3X3NpemU7Cj4gLQkJbnAtPnJuX293bnNfYnVmID0gdHJ1ZTsKPiArCQlucC0+cm5f
b3duc19idWYgPSAxOwo+IAl9Cj4gCW5wLT5ybl9zaXplID0gbGVuZ3RoOwo+IAl2cC0+dl9zaXpl
ID0gbGVuZ3RoOwo+IC0Jc2V0X3RpbWVzX3RvX25vdygmKG5wLT5ybl9tdGltZSksICYobnAtPnJu
X2N0aW1lKSk7Cj4gKwlzZXRfdGltZXNfdG9fbm93KCYobnAtPnJuX210aW1lKSwgJihucC0+cm5f
Y3RpbWUpLCBOVUxMKTsKPiAJcmV0dXJuIDA7Cj4gfQo+IAo+IEBAIC0zODIsMTYgKzM4OSwxNyBA
QCByYW1mc19jcmVhdGUoc3RydWN0IHZub2RlICpkdnAsIGNoYXIgKm5hbWUsIG1vZGVfdCBtb2Rl
KQo+IAlpZiAoIVNfSVNSRUcobW9kZSkpCj4gCQlyZXR1cm4gRUlOVkFMOwo+IAo+IC0JbnAgPSBy
YW1mc19hZGRfbm9kZSgocmFtZnNfbm9kZSAqKSBkdnAtPnZfZGF0YSwgbmFtZSwgVlJFRyk7Cj4g
KwlucCA9IHJhbWZzX2FkZF9ub2RlKGR2cC0+dl9kYXRhLCBuYW1lLCBWUkVHKTsKPiAJaWYgKG5w
ID09IE5VTEwpCj4gCQlyZXR1cm4gRU5PTUVNOwo+IAlyZXR1cm4gMDsKPiB9Cj4gCj4gLXN0YXRp
YyBpbnQKPiAtcmFtZnNfcmVhZChzdHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3QgZmlsZSAqZnAsIHN0
cnVjdCB1aW8gKnVpbywgaW50IGlvZmxhZykKPiArc3RhdGljIHNzaXplX3QKPiArcmFtZnNfcmVh
ZChzdHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCBfX3VudXNlZCwKPiAr
CSAgIHN0cnVjdCB1aW8gKnVpbywgaW50IGlvZmxhZyBfX3VudXNlZCkKPiB7Cj4gLQlzdHJ1Y3Qg
cmFtZnNfbm9kZSAqbnAgPSAocmFtZnNfbm9kZSAqKSB2cC0+dl9kYXRhOwo+ICsJc3RydWN0IHJh
bWZzX25vZGUgKm5wID0gIHZwLT52X2RhdGE7Cj4gCXNpemVfdCBsZW47Cj4gCj4gCWlmICh2cC0+
dl90eXBlID09IFZESVIpIHsKPiBAQCAtNDE1LDE1ICs0MjMsMTUgQEAgcmFtZnNfcmVhZChzdHJ1
Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3QgZmlsZSAqZnAsIHN0cnVjdCB1aW8gKnVpbywgaW50IGlvZmxh
ZykKPiAJZWxzZQo+IAkJbGVuID0gdWlvLT51aW9fcmVzaWQ7Cj4gCj4gLQlzZXRfdGltZXNfdG9f
bm93KCYobnAtPnJuX2F0aW1lKSk7Cj4gKwlzZXRfdGltZXNfdG9fbm93KCYobnAtPnJuX2F0aW1l
KSwgTlVMTCwgTlVMTCk7Cj4gCj4gLQlyZXR1cm4gdWlvbW92ZShucC0+cm5fYnVmICsgdWlvLT51
aW9fb2Zmc2V0LCBsZW4sIHVpbyk7Cj4gKwlyZXR1cm4gdmZzY29yZV91aW9tb3ZlKG5wLT5ybl9i
dWYgKyB1aW8tPnVpb19vZmZzZXQsIGxlbiwgdWlvKTsKPiB9Cj4gCj4gaW50Cj4gcmFtZnNfc2V0
X2ZpbGVfZGF0YShzdHJ1Y3Qgdm5vZGUgKnZwLCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6
ZSkKPiB7Cj4gLQlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSAocmFtZnNfbm9kZSAqKSB2cC0+dl9k
YXRhOwo+ICsJc3RydWN0IHJhbWZzX25vZGUgKm5wID0gIHZwLT52X2RhdGE7Cj4gCj4gCWlmICh2
cC0+dl90eXBlID09IFZESVIpIHsKPiAJCXJldHVybiBFSVNESVI7Cj4gQEAgLTQzOSwxNSArNDQ3
LDE1IEBAIHJhbWZzX3NldF9maWxlX2RhdGEoc3RydWN0IHZub2RlICp2cCwgY29uc3Qgdm9pZCAq
ZGF0YSwgc2l6ZV90IHNpemUpCj4gCW5wLT5ybl9idWZzaXplID0gc2l6ZTsKPiAJbnAtPnJuX3Np
emUgPSBzaXplOwo+IAl2cC0+dl9zaXplID0gc2l6ZTsKPiAtCW5wLT5ybl9vd25zX2J1ZiA9IGZh
bHNlOwo+ICsJbnAtPnJuX293bnNfYnVmID0gMDsKPiAKPiAJcmV0dXJuIDA7Cj4gfQo+IAo+IC1z
dGF0aWMgaW50Cj4gK3N0YXRpYyBzc2l6ZV90Cj4gcmFtZnNfd3JpdGUoc3RydWN0IHZub2RlICp2
cCwgc3RydWN0IHVpbyAqdWlvLCBpbnQgaW9mbGFnKQo+IHsKPiAtCXN0cnVjdCByYW1mc19ub2Rl
ICpucCA9IChyYW1mc19ub2RlICopIHZwLT52X2RhdGE7Cj4gKwlzdHJ1Y3QgcmFtZnNfbm9kZSAq
bnAgPSAgdnAtPnZfZGF0YTsKPiAKPiAJaWYgKHZwLT52X3R5cGUgPT0gVkRJUikgewo+IAkJcmV0
dXJuIEVJU0RJUjsKPiBAQCAtNDY4LDcgKzQ3Niw3IEBAIHJhbWZzX3dyaXRlKHN0cnVjdCB2bm9k
ZSAqdnAsIHN0cnVjdCB1aW8gKnVpbywgaW50IGlvZmxhZykKPiAJaWYgKGlvZmxhZyAmIElPX0FQ
UEVORCkKPiAJCXVpby0+dWlvX29mZnNldCA9IG5wLT5ybl9zaXplOwo+IAo+IC0JaWYgKHNpemVf
dCh1aW8tPnVpb19vZmZzZXQgKyB1aW8tPnVpb19yZXNpZCkgPiAoc2l6ZV90KSB2cC0+dl9zaXpl
KSB7Cj4gKwlpZiAoKHNpemVfdCkgdWlvLT51aW9fb2Zmc2V0ICsgdWlvLT51aW9fcmVzaWQgPiAo
c2l6ZV90KSB2cC0+dl9zaXplKSB7Cj4gCQkvKiBFeHBhbmQgdGhlIGZpbGUgc2l6ZSBiZWZvcmUg
d3JpdGluZyB0byBpdCAqLwo+IAkJb2ZmX3QgZW5kX3BvcyA9IHVpby0+dWlvX29mZnNldCArIHVp
by0+dWlvX3Jlc2lkOwo+IAkJaWYgKGVuZF9wb3MgPiAob2ZmX3QpIG5wLT5ybl9idWZzaXplKSB7
Cj4gQEAgLTQ4NywxNSArNDk1LDE2IEBAIHJhbWZzX3dyaXRlKHN0cnVjdCB2bm9kZSAqdnAsIHN0
cnVjdCB1aW8gKnVpbywgaW50IGlvZmxhZykKPiAJCX0KPiAJCW5wLT5ybl9zaXplID0gZW5kX3Bv
czsKPiAJCXZwLT52X3NpemUgPSBlbmRfcG9zOwo+IC0JCW5wLT5ybl9vd25zX2J1ZiA9IHRydWU7
Cj4gKwkJbnAtPnJuX293bnNfYnVmID0gMTsKPiAJfQo+IAo+IC0Jc2V0X3RpbWVzX3RvX25vdygm
KG5wLT5ybl9tdGltZSksICYobnAtPnJuX2N0aW1lKSk7Cj4gLQlyZXR1cm4gdWlvbW92ZShucC0+
cm5fYnVmICsgdWlvLT51aW9fb2Zmc2V0LCB1aW8tPnVpb19yZXNpZCwgdWlvKTsKPiArCXNldF90
aW1lc190b19ub3coJihucC0+cm5fbXRpbWUpLCAmKG5wLT5ybl9jdGltZSksIE5VTEwpOwo+ICsJ
cmV0dXJuIHZmc2NvcmVfdWlvbW92ZShucC0+cm5fYnVmICsgdWlvLT51aW9fb2Zmc2V0LCB1aW8t
PnVpb19yZXNpZCwKPiArCQkJICAgICAgIHVpbyk7Cj4gfQo+IAo+IHN0YXRpYyBpbnQKPiAtcmFt
ZnNfcmVuYW1lKHN0cnVjdCB2bm9kZSAqZHZwMSwgc3RydWN0IHZub2RlICp2cDEsIGNoYXIgKm5h
bWUxLAo+ICtyYW1mc19yZW5hbWUoc3RydWN0IHZub2RlICpkdnAxLCBzdHJ1Y3Qgdm5vZGUgKnZw
MSwgY2hhciAqbmFtZTEgX191bnVzZWQsCj4gCQkJIHN0cnVjdCB2bm9kZSAqZHZwMiwgc3RydWN0
IHZub2RlICp2cDIsIGNoYXIgKm5hbWUyKQo+IHsKPiAJc3RydWN0IHJhbWZzX25vZGUgKm5wLCAq
b2xkX25wOwo+IEBAIC01MDMsMjAgKzUxMiwyMCBAQCByYW1mc19yZW5hbWUoc3RydWN0IHZub2Rl
ICpkdnAxLCBzdHJ1Y3Qgdm5vZGUgKnZwMSwgY2hhciAqbmFtZTEsCj4gCj4gCWlmICh2cDIpIHsK
PiAJCS8qIFJlbW92ZSBkZXN0aW5hdGlvbiBmaWxlLCBmaXJzdCAqLwo+IC0JCWVycm9yID0gcmFt
ZnNfcmVtb3ZlX25vZGUoKHJhbWZzX25vZGUgKikgZHZwMi0+dl9kYXRhLCAocmFtZnNfbm9kZSAq
KSB2cDItPnZfZGF0YSk7Cj4gKwkJZXJyb3IgPSByYW1mc19yZW1vdmVfbm9kZShkdnAyLT52X2Rh
dGEsIHZwMi0+dl9kYXRhKTsKPiAJCWlmIChlcnJvcikKPiAJCQlyZXR1cm4gZXJyb3I7Cj4gCX0K
PiAJLyogU2FtZSBkaXJlY3RvcnkgPyAqLwo+IAlpZiAoZHZwMSA9PSBkdnAyKSB7Cj4gCQkvKiBD
aGFuZ2UgdGhlIG5hbWUgb2YgZXhpc3RpbmcgZmlsZSAqLwo+IC0JCWVycm9yID0gcmFtZnNfcmVu
YW1lX25vZGUoKHJhbWZzX25vZGUgKikgdnAxLT52X2RhdGEsIG5hbWUyKTsKPiArCQllcnJvciA9
IHJhbWZzX3JlbmFtZV9ub2RlKHZwMS0+dl9kYXRhLCBuYW1lMik7Cj4gCQlpZiAoZXJyb3IpCj4g
CQkJcmV0dXJuIGVycm9yOwo+IAl9IGVsc2Ugewo+IAkJLyogQ3JlYXRlIG5ldyBmaWxlIG9yIGRp
cmVjdG9yeSAqLwo+IC0JCW9sZF9ucCA9IChyYW1mc19ub2RlICopIHZwMS0+dl9kYXRhOwo+IC0J
CW5wID0gcmFtZnNfYWRkX25vZGUoKHJhbWZzX25vZGUgKikgZHZwMi0+dl9kYXRhLCBuYW1lMiwg
b2xkX25wLT5ybl90eXBlKTsKPiArCQlvbGRfbnAgPSB2cDEtPnZfZGF0YTsKPiArCQlucCA9IHJh
bWZzX2FkZF9ub2RlKGR2cDItPnZfZGF0YSwgbmFtZTIsIG9sZF9ucC0+cm5fdHlwZSk7Cj4gCQlp
ZiAobnAgPT0gTlVMTCkKPiAJCQlyZXR1cm4gRU5PTUVNOwo+IAo+IEBAIC01MjgsNyArNTM3LDcg
QEAgcmFtZnNfcmVuYW1lKHN0cnVjdCB2bm9kZSAqZHZwMSwgc3RydWN0IHZub2RlICp2cDEsIGNo
YXIgKm5hbWUxLAo+IAkJCW9sZF9ucC0+cm5fYnVmID0gTlVMTDsKPiAJCX0KPiAJCS8qIFJlbW92
ZSBzb3VyY2UgZmlsZSAqLwo+IC0JCXJhbWZzX3JlbW92ZV9ub2RlKChyYW1mc19ub2RlICopIGR2
cDEtPnZfZGF0YSwgKHJhbWZzX25vZGUgKikgdnAxLT52X2RhdGEpOwo+ICsJCXJhbWZzX3JlbW92
ZV9ub2RlKGR2cDEtPnZfZGF0YSwgdnAxLT52X2RhdGEpOwo+IAl9Cj4gCXJldHVybiAwOwo+IH0K
PiBAQCAtNTM3LDE0ICs1NDYsMTUgQEAgcmFtZnNfcmVuYW1lKHN0cnVjdCB2bm9kZSAqZHZwMSwg
c3RydWN0IHZub2RlICp2cDEsIGNoYXIgKm5hbWUxLAo+ICAqIEB2cDogdm5vZGUgb2YgdGhlIGRp
cmVjdG9yeS4KPiAgKi8KPiBzdGF0aWMgaW50Cj4gLXJhbWZzX3JlYWRkaXIoc3RydWN0IHZub2Rl
ICp2cCwgc3RydWN0IGZpbGUgKmZwLCBzdHJ1Y3QgZGlyZW50ICpkaXIpCj4gK3JhbWZzX3JlYWRk
aXIoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAsIHN0cnVjdCBkaXJl
bnQgKmRpcikKPiB7Cj4gCXN0cnVjdCByYW1mc19ub2RlICpucCwgKmRucDsKPiAJaW50IGk7Cj4g
Cj4gLQltdXRleF9sb2NrKCZyYW1mc19sb2NrKTsKPiArCXVrX211dGV4X2xvY2soJnJhbWZzX2xv
Y2spOwo+IAo+IC0Jc2V0X3RpbWVzX3RvX25vdygmKCgocmFtZnNfbm9kZSAqKSB2cC0+dl9kYXRh
KS0+cm5fYXRpbWUpKTsKPiArCXNldF90aW1lc190b19ub3coJigoKHN0cnVjdCByYW1mc19ub2Rl
ICopIHZwLT52X2RhdGEpLT5ybl9hdGltZSksCj4gKwkJCSBOVUxMLCBOVUxMKTsKPiAKPiAJaWYg
KGZwLT5mX29mZnNldCA9PSAwKSB7Cj4gCQlkaXItPmRfdHlwZSA9IERUX0RJUjsKPiBAQCAtNTUz
LDE3ICs1NjMsMTcgQEAgcmFtZnNfcmVhZGRpcihzdHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3QgZmls
ZSAqZnAsIHN0cnVjdCBkaXJlbnQgKmRpcikKPiAJCWRpci0+ZF90eXBlID0gRFRfRElSOwo+IAkJ
c3RybGNweSgoY2hhciAqKSAmZGlyLT5kX25hbWUsICIuLiIsIHNpemVvZihkaXItPmRfbmFtZSkp
Owo+IAl9IGVsc2Ugewo+IC0JCWRucCA9IChyYW1mc19ub2RlICopIHZwLT52X2RhdGE7Cj4gKwkJ
ZG5wID0gdnAtPnZfZGF0YTsKPiAJCW5wID0gZG5wLT5ybl9jaGlsZDsKPiAJCWlmIChucCA9PSBO
VUxMKSB7Cj4gLQkJCW11dGV4X3VubG9jaygmcmFtZnNfbG9jayk7Cj4gKwkJCXVrX211dGV4X3Vu
bG9jaygmcmFtZnNfbG9jayk7Cj4gCQkJcmV0dXJuIEVOT0VOVDsKPiAJCX0KPiAKPiAJCWZvciAo
aSA9IDA7IGkgIT0gKGZwLT5mX29mZnNldCAtIDIpOyBpKyspIHsKPiAJCQlucCA9IG5wLT5ybl9u
ZXh0Owo+IAkJCWlmIChucCA9PSBOVUxMKSB7Cj4gLQkJCQltdXRleF91bmxvY2soJnJhbWZzX2xv
Y2spOwo+ICsJCQkJdWtfbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKPiAJCQkJcmV0dXJuIEVO
T0VOVDsKPiAJCQl9Cj4gCQl9Cj4gQEAgLTU4MSw3ICs1OTEsNyBAQCByYW1mc19yZWFkZGlyKHN0
cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCBmaWxlICpmcCwgc3RydWN0IGRpcmVudCAqZGlyKQo+IAo+
IAlmcC0+Zl9vZmZzZXQrKzsKPiAKPiAtCW11dGV4X3VubG9jaygmcmFtZnNfbG9jayk7Cj4gKwl1
a19tdXRleF91bmxvY2soJnJhbWZzX2xvY2spOwo+IAlyZXR1cm4gMDsKPiB9Cj4gCj4gQEAgLTU5
NCwxMSArNjA0LDEyIEBAIHJhbWZzX2luaXQodm9pZCkKPiBzdGF0aWMgaW50Cj4gcmFtZnNfZ2V0
YXR0cihzdHJ1Y3Qgdm5vZGUgKnZub2RlLCBzdHJ1Y3QgdmF0dHIgKmF0dHIpCj4gewo+ICsJc3Ry
dWN0IHJhbWZzX25vZGUgKm5wID0gdm5vZGUtPnZfZGF0YTsKPiArCj4gCWF0dHItPnZhX25vZGVp
ZCA9IHZub2RlLT52X2lubzsKPiAJYXR0ci0+dmFfc2l6ZSA9IHZub2RlLT52X3NpemU7Cj4gCj4g
LQlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSAocmFtZnNfbm9kZSAqKSB2bm9kZS0+dl9kYXRhOwo+
IC0JYXR0ci0+dmFfdHlwZSA9ICh2dHlwZSkgbnAtPnJuX3R5cGU7Cj4gKwlhdHRyLT52YV90eXBl
ID0gbnAtPnJuX3R5cGU7Cj4gCj4gCW1lbWNweSgmKGF0dHItPnZhX2F0aW1lKSwgJihucC0+cm5f
YXRpbWUpLCBzaXplb2Yoc3RydWN0IHRpbWVzcGVjKSk7Cj4gCW1lbWNweSgmKGF0dHItPnZhX2N0
aW1lKSwgJihucC0+cm5fY3RpbWUpLCBzaXplb2Yoc3RydWN0IHRpbWVzcGVjKSk7Cj4gQEAgLTYx
MSw3ICs2MjIsNyBAQCByYW1mc19nZXRhdHRyKHN0cnVjdCB2bm9kZSAqdm5vZGUsIHN0cnVjdCB2
YXR0ciAqYXR0cikKPiAKPiBzdGF0aWMgaW50Cj4gcmFtZnNfc2V0YXR0cihzdHJ1Y3Qgdm5vZGUg
KnZub2RlLCBzdHJ1Y3QgdmF0dHIgKmF0dHIpIHsKPiAtCXN0cnVjdCByYW1mc19ub2RlICpucCA9
IChyYW1mc19ub2RlICopIHZub2RlLT52X2RhdGE7Cj4gKwlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAg
PSB2bm9kZS0+dl9kYXRhOwo+IAo+IAlpZiAoYXR0ci0+dmFfbWFzayAmIEFUX0FUSU1FKSB7Cj4g
CQltZW1jcHkoJihucC0+cm5fYXRpbWUpLCAmKGF0dHItPnZhX2F0aW1lKSwgc2l6ZW9mKHN0cnVj
dCB0aW1lc3BlYykpOwo+IEBAIC02MzIsMTQgKzY0MywxNCBAQCByYW1mc19zZXRhdHRyKHN0cnVj
dCB2bm9kZSAqdm5vZGUsIHN0cnVjdCB2YXR0ciAqYXR0cikgewo+IAlyZXR1cm4gMDsKPiB9Cj4g
Cj4gLSNkZWZpbmUgcmFtZnNfb3BlbiAgICAgICgodm5vcF9vcGVuX3Qpdm9wX251bGxvcCkKPiAt
I2RlZmluZSByYW1mc19jbG9zZSAgICAgKCh2bm9wX2Nsb3NlX3Qpdm9wX251bGxvcCkKPiAtI2Rl
ZmluZSByYW1mc19zZWVrICAgICAgKCh2bm9wX3NlZWtfdCl2b3BfbnVsbG9wKQo+IC0jZGVmaW5l
IHJhbWZzX2lvY3RsICAgICAoKHZub3BfaW9jdGxfdCl2b3BfZWludmFsKQo+IC0jZGVmaW5lIHJh
bWZzX2ZzeW5jICAgICAoKHZub3BfZnN5bmNfdCl2b3BfbnVsbG9wKQo+IC0jZGVmaW5lIHJhbWZz
X2luYWN0aXZlICAoKHZub3BfaW5hY3RpdmVfdCl2b3BfbnVsbG9wKQo+IC0jZGVmaW5lIHJhbWZz
X2xpbmsgICAgICAoKHZub3BfbGlua190KXZvcF9lcGVybSkKPiAtI2RlZmluZSByYW1mc19mYWxs
b2NhdGUgKCh2bm9wX2ZhbGxvY2F0ZV90KXZvcF9udWxsb3ApCj4gKyNkZWZpbmUgcmFtZnNfb3Bl
biAgICAgICgodm5vcF9vcGVuX3QpdmZzY29yZV92b3BfbnVsbG9wKQo+ICsjZGVmaW5lIHJhbWZz
X2Nsb3NlICAgICAoKHZub3BfY2xvc2VfdCl2ZnNjb3JlX3ZvcF9udWxsb3ApCj4gKyNkZWZpbmUg
cmFtZnNfc2VlayAgICAgICgodm5vcF9zZWVrX3QpdmZzY29yZV92b3BfbnVsbG9wKQo+ICsjZGVm
aW5lIHJhbWZzX2lvY3RsICAgICAoKHZub3BfaW9jdGxfdCl2ZnNjb3JlX3ZvcF9laW52YWwpCj4g
KyNkZWZpbmUgcmFtZnNfZnN5bmMgICAgICgodm5vcF9mc3luY190KXZmc2NvcmVfdm9wX251bGxv
cCkKPiArI2RlZmluZSByYW1mc19pbmFjdGl2ZSAgKCh2bm9wX2luYWN0aXZlX3QpdmZzY29yZV92
b3BfbnVsbG9wKQo+ICsjZGVmaW5lIHJhbWZzX2xpbmsgICAgICAoKHZub3BfbGlua190KXZmc2Nv
cmVfdm9wX2VwZXJtKQo+ICsjZGVmaW5lIHJhbWZzX2ZhbGxvY2F0ZSAoKHZub3BfZmFsbG9jYXRl
X3QpdmZzY29yZV92b3BfbnVsbG9wKQo+IAo+IC8qCj4gICogdm5vZGUgb3BlcmF0aW9ucwo+IEBA
IC02NjQsNyArNjc1LDcgQEAgc3RydWN0IHZub3BzIHJhbWZzX3Zub3BzID0gewo+IAkJcmFtZnNf
aW5hY3RpdmUsICAgICAgICAgLyogaW5hY3RpdmUgKi8KPiAJCXJhbWZzX3RydW5jYXRlLCAgICAg
ICAgIC8qIHRydW5jYXRlICovCj4gCQlyYW1mc19saW5rLCAgICAgICAgICAgICAvKiBsaW5rICov
Cj4gLQkJKHZub3BfY2FjaGVfdCkgbnVsbHB0ciwgLyogYXJjICovCj4gKwkJKHZub3BfY2FjaGVf
dCkgTlVMTCwgICAgLyogYXJjICovCj4gCQlyYW1mc19mYWxsb2NhdGUsICAgICAgICAvKiBmYWxs
b2NhdGUgKi8KPiAJCXJhbWZzX3JlYWRsaW5rLCAgICAgICAgIC8qIHJlYWQgbGluayAqLwo+IAkJ
cmFtZnNfc3ltbGluaywgICAgICAgICAgLyogc3ltYm9saWMgbGluayAqLwo+IC0tIAo+IDIuMTku
Mgo+IAo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
Cj4gTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdAo+IE1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9q
ZWN0Lm9yZwo+IGh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9t
aW5pb3MtZGV2ZWwKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9q
ZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWlu
aW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Feb 20 14:33:36 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 20 Feb 2019 14:33:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gwSwK-0007jM-Ij; Wed, 20 Feb 2019 14:33:36 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=MYmH=Q3=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1gwSwJ-0007jE-GY
 for minios-devel@lists.xen.org; Wed, 20 Feb 2019 14:33:35 +0000
X-Inumbo-ID: 7fd64649-351c-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 7fd64649-351c-11e9-bc90-bc764e045a96;
 Wed, 20 Feb 2019 14:33:33 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id DD43DF203D;
 Wed, 20 Feb 2019 15:33:32 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id qlZ2ajPQBEgw; Wed, 20 Feb 2019 15:33:32 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id AD4BEF2039
 for <minios-devel@lists.xen.org>; Wed, 20 Feb 2019 15:33:30 +0100 (CET)
Received: from PALLENE.office.hd ([169.254.1.27]) by ENCELADUS.office.hd
 ([192.168.24.52]) with mapi id 14.03.0319.002; Wed, 20 Feb 2019 15:33:29
 +0100
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: Yuri Volchkov <yuri.volchkov@neclab.eu>
Thread-Topic: [Minios-devel] [UNIKRAFT PATCH v2 6/6] lib/ramfs: fix style
 issues
Thread-Index: AQHUv7sXBYt6xSSHwEmxRM+RzP9azaXowkSA
Date: Wed, 20 Feb 2019 14:33:29 +0000
Message-ID: <62030425-58F2-4BC9-97D5-BAD74AC96F0B@neclab.eu>
References: <20190208143108.27175-1-yuri.volchkov@neclab.eu>
 <20190208143108.27175-7-yuri.volchkov@neclab.eu>
In-Reply-To: <20190208143108.27175-7-yuri.volchkov@neclab.eu>
Accept-Language: en-GB, gl-ES, de-DE, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [10.1.2.186]
Content-ID: <4535D87670BB054B9501C158F97F3C2A@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 6/6] lib/ramfs: fix style
 issues
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>, Sharan
 Santhanam <Sharan.Santhanam@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

TG9va3MgZmluZS4KClJldmlld2VkLWJ5OiBTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5l
Y2xhYi5ldT4KCj4gT24gOC4gRmViIDIwMTksIGF0IDE1OjMxLCBZdXJpIFZvbGNoa292IDx5dXJp
LnZvbGNoa292QG5lY2xhYi5ldT4gd3JvdGU6Cj4gCj4gVGhlIG5vbi1uZWdhdGl2ZSByZXR1cm4g
Y29kZXMgdHlwZXMgb2YgY2hlY2stcGF0Y2ggY29tcGxhaW5zIGFyZQo+IGlnbm9yZWQgZm9yIG5v
dywgYmVjYXVzZSB0aGlzIHdpbGwgYnJha2UgY29tcGF0aWJpbGl0eSB3aXRoIGN1cnJlbnQKPiB2
ZnNjb3JlLgo+IAo+IFNpZ25lZC1vZmYtYnk6IFl1cmkgVm9sY2hrb3YgPHl1cmkudm9sY2hrb3ZA
bmVjbGFiLmV1Pgo+IC0tLQo+IGxpYi9yYW1mcy9yYW1mc192ZnNvcHMuYyB8ICAgNSArLQo+IGxp
Yi9yYW1mcy9yYW1mc192bm9wcy5jICB8IDEwMCArKysrKysrKysrKysrKysrKystLS0tLS0tLS0t
LS0tLS0tLS0tLS0KPiAyIGZpbGVzIGNoYW5nZWQsIDQ4IGluc2VydGlvbnMoKyksIDU3IGRlbGV0
aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9saWIvcmFtZnMvcmFtZnNfdmZzb3BzLmMgYi9saWIv
cmFtZnMvcmFtZnNfdmZzb3BzLmMKPiBpbmRleCAzYjVjMDc1Yy4uYzQ1MjQ1ZmQgMTAwNjQ0Cj4g
LS0tIGEvbGliL3JhbWZzL3JhbWZzX3Zmc29wcy5jCj4gKysrIGIvbGliL3JhbWZzL3JhbWZzX3Zm
c29wcy5jCj4gQEAgLTQxLDcgKzQxLDggQEAKPiAKPiBleHRlcm4gc3RydWN0IHZub3BzIHJhbWZz
X3Zub3BzOwo+IAo+IC1zdGF0aWMgaW50IHJhbWZzX21vdW50KHN0cnVjdCBtb3VudCAqbXAsIGNv
bnN0IGNoYXIgKmRldiwgaW50IGZsYWdzLCBjb25zdCB2b2lkICpkYXRhKTsKPiArc3RhdGljIGlu
dCByYW1mc19tb3VudChzdHJ1Y3QgbW91bnQgKm1wLCBjb25zdCBjaGFyICpkZXYsIGludCBmbGFn
cywKPiArCQkgICAgICAgY29uc3Qgdm9pZCAqZGF0YSk7Cj4gCj4gc3RhdGljIGludCByYW1mc191
bm1vdW50KHN0cnVjdCBtb3VudCAqbXAsIGludCBmbGFncyk7Cj4gCj4gQEAgLTc4LDcgKzc5LDcg
QEAgcmFtZnNfbW91bnQoc3RydWN0IG1vdW50ICptcCwgY29uc3QgY2hhciAqZGV2IF9fdW51c2Vk
LAo+IHsKPiAJc3RydWN0IHJhbWZzX25vZGUgKm5wOwo+IAo+IC0JRFBSSU5URigoInJhbWZzX21v
dW50OiBkZXY9JXNcbiIsIGRldikpOwo+ICsJRFBSSU5URigoIiVzOiBkZXY9JXNcbiIsIF9fZnVu
Y19fLCBkZXYpKTsKPiAKPiAJLyogQ3JlYXRlIGEgcm9vdCBub2RlICovCj4gCW5wID0gcmFtZnNf
YWxsb2NhdGVfbm9kZSgiLyIsIFZESVIpOwo+IGRpZmYgLS1naXQgYS9saWIvcmFtZnMvcmFtZnNf
dm5vcHMuYyBiL2xpYi9yYW1mcy9yYW1mc192bm9wcy5jCj4gaW5kZXggMWZhZGVkMDUuLjc0Y2U3
ZmJlIDEwMDY0NAo+IC0tLSBhL2xpYi9yYW1mcy9yYW1mc192bm9wcy5jCj4gKysrIGIvbGliL3Jh
bWZzL3JhbWZzX3Zub3BzLmMKPiBAQCAtNjYsMTUgKzY2LDEyIEBAIHNldF90aW1lc190b19ub3co
c3RydWN0IHRpbWVzcGVjICp0aW1lMSwgc3RydWN0IHRpbWVzcGVjICp0aW1lMiwKPiAKPiAJLyog
VE9ETzogaW1wbGVtZW50IHRoZSByZWFsIGNsb2NrX2dldHRpbWUgKi8KPiAJLyogY2xvY2tfZ2V0
dGltZShDTE9DS19SRUFMVElNRSwgJm5vdyk7ICovCj4gLQlpZiAodGltZTEpIHsKPiArCWlmICh0
aW1lMSkKPiAJCW1lbWNweSh0aW1lMSwgJm5vdywgc2l6ZW9mKHN0cnVjdCB0aW1lc3BlYykpOwo+
IC0JfQo+IC0JaWYgKHRpbWUyKSB7Cj4gKwlpZiAodGltZTIpCj4gCQltZW1jcHkodGltZTIsICZu
b3csIHNpemVvZihzdHJ1Y3QgdGltZXNwZWMpKTsKPiAtCX0KPiAtCWlmICh0aW1lMykgewo+ICsJ
aWYgKHRpbWUzKQo+IAkJbWVtY3B5KHRpbWUzLCAmbm93LCBzaXplb2Yoc3RydWN0IHRpbWVzcGVj
KSk7Cj4gLQl9Cj4gfQo+IAo+IHN0cnVjdCByYW1mc19ub2RlICoKPiBAQCAtMTg0LDkgKzE4MSw5
IEBAIHJhbWZzX3JlbmFtZV9ub2RlKHN0cnVjdCByYW1mc19ub2RlICpucCwgY2hhciAqbmFtZSkK
PiAJY2hhciAqdG1wOwo+IAo+IAlsZW4gPSBzdHJsZW4obmFtZSk7Cj4gLQlpZiAobGVuID4gTkFN
RV9NQVgpIHsKPiArCWlmIChsZW4gPiBOQU1FX01BWCkKPiAJCXJldHVybiBFTkFNRVRPT0xPTkc7
Cj4gLQl9Cj4gKwo+IAlpZiAobGVuIDw9IG5wLT5ybl9uYW1lbGVuKSB7Cj4gCQkvKiBSZXVzZSBj
dXJyZW50IG5hbWUgYnVmZmVyICovCj4gCQlzdHJsY3B5KG5wLT5ybl9uYW1lLCBuYW1lLCBucC0+
cm5fbmFtZWxlbiArIDEpOwo+IEBAIC0yNjEsOSArMjU4LDggQEAgcmFtZnNfbWtkaXIoc3RydWN0
IHZub2RlICpkdnAsIGNoYXIgKm5hbWUsIG1vZGVfdCBtb2RlKQo+IAlzdHJ1Y3QgcmFtZnNfbm9k
ZSAqbnA7Cj4gCj4gCURQUklOVEYoKCJta2RpciAlc1xuIiwgbmFtZSkpOwo+IC0JaWYgKHN0cmxl
bihuYW1lKSA+IE5BTUVfTUFYKSB7Cj4gKwlpZiAoc3RybGVuKG5hbWUpID4gTkFNRV9NQVgpCj4g
CQlyZXR1cm4gRU5BTUVUT09MT05HOwo+IC0JfQo+IAo+IAlpZiAoIVNfSVNESVIobW9kZSkpCj4g
CQlyZXR1cm4gRUlOVkFMOwo+IEBAIC0yNzksMTQgKzI3NSwxOSBAQCByYW1mc19ta2RpcihzdHJ1
Y3Qgdm5vZGUgKmR2cCwgY2hhciAqbmFtZSwgbW9kZV90IG1vZGUpCj4gc3RhdGljIGludAo+IHJh
bWZzX3N5bWxpbmsoc3RydWN0IHZub2RlICpkdnAsIGNoYXIgKm5hbWUsIGNoYXIgKmxpbmspCj4g
ewo+IC0JaWYgKHN0cmxlbihuYW1lKSA+IE5BTUVfTUFYKSB7Cj4gKwlzdHJ1Y3QgcmFtZnNfbm9k
ZSAqbnA7Cj4gKwlzaXplX3QgbGVuOwo+ICsKPiArCWlmIChzdHJsZW4obmFtZSkgPiBOQU1FX01B
WCkKPiAJCXJldHVybiBFTkFNRVRPT0xPTkc7Cj4gLQl9Cj4gLQlzdHJ1Y3QgcmFtZnNfbm9kZSAq
bnAgPSByYW1mc19hZGRfbm9kZShkdnAtPnZfZGF0YSwgbmFtZSwgVkxOSyk7Cj4gKwo+ICsJbnAg
PSByYW1mc19hZGRfbm9kZShkdnAtPnZfZGF0YSwgbmFtZSwgVkxOSyk7Cj4gKwo+IAlpZiAobnAg
PT0gTlVMTCkKPiAJCXJldHVybiBFTk9NRU07Cj4gCS8vIFNhdmUgdGhlIGxpbmsgdGFyZ2V0IHdp
dGhvdXQgdGhlIGZpbmFsIG51bGwsIGFzIHJlYWRsaW5rKCkgd2FudHMgaXQuCj4gLQlzaXplX3Qg
bGVuID0gc3RybGVuKGxpbmspOwo+ICsJbGVuID0gc3RybGVuKGxpbmspOwo+ICsKPiAJbnAtPnJu
X2J1ZiA9IHN0cm5kdXAobGluaywgbGVuKTsKPiAJbnAtPnJuX2J1ZnNpemUgPSBucC0+cm5fc2l6
ZSA9IGxlbjsKPiAKPiBAQCAtMjk5LDE1ICszMDAsMTIgQEAgcmFtZnNfcmVhZGxpbmsoc3RydWN0
IHZub2RlICp2cCwgc3RydWN0IHVpbyAqdWlvKQo+IAlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSB2
cC0+dl9kYXRhOwo+IAlzaXplX3QgbGVuOwo+IAo+IC0JaWYgKHZwLT52X3R5cGUgIT0gVkxOSykg
ewo+ICsJaWYgKHZwLT52X3R5cGUgIT0gVkxOSykKPiAJCXJldHVybiBFSU5WQUw7Cj4gLQl9Cj4g
LQlpZiAodWlvLT51aW9fb2Zmc2V0IDwgMCkgewo+ICsJaWYgKHVpby0+dWlvX29mZnNldCA8IDAp
Cj4gCQlyZXR1cm4gRUlOVkFMOwo+IC0JfQo+IC0JaWYgKHVpby0+dWlvX3Jlc2lkID09IDApIHsK
PiArCWlmICh1aW8tPnVpb19yZXNpZCA9PSAwKQo+IAkJcmV0dXJuIDA7Cj4gLQl9Cj4gCWlmICh1
aW8tPnVpb19vZmZzZXQgPj0gKG9mZl90KSB2cC0+dl9zaXplKQo+IAkJcmV0dXJuIDA7Cj4gCWlm
ICh2cC0+dl9zaXplIC0gdWlvLT51aW9fb2Zmc2V0IDwgdWlvLT51aW9fcmVzaWQpCj4gQEAgLTM0
OSw3ICszNDcsNyBAQCByYW1mc190cnVuY2F0ZShzdHJ1Y3Qgdm5vZGUgKnZwLCBvZmZfdCBsZW5n
dGgpCj4gCj4gCWlmIChsZW5ndGggPT0gMCkgewo+IAkJaWYgKG5wLT5ybl9idWYgIT0gTlVMTCkg
ewo+IC0JCQlpZihucC0+cm5fb3duc19idWYpCj4gKwkJCWlmIChucC0+cm5fb3duc19idWYpCj4g
CQkJCWZyZWUobnAtPnJuX2J1Zik7Cj4gCQkJbnAtPnJuX2J1ZiA9IE5VTEw7Cj4gCQkJbnAtPnJu
X2J1ZnNpemUgPSAwOwo+IEBAIC0zNjIsNyArMzYwLDcgQEAgcmFtZnNfdHJ1bmNhdGUoc3RydWN0
IHZub2RlICp2cCwgb2ZmX3QgbGVuZ3RoKQo+IAkJCXJldHVybiBFSU87Cj4gCQlpZiAobnAtPnJu
X3NpemUgIT0gMCkgewo+IAkJCW1lbWNweShuZXdfYnVmLCBucC0+cm5fYnVmLCB2cC0+dl9zaXpl
KTsKPiAtCQkJaWYobnAtPnJuX293bnNfYnVmKQo+ICsJCQlpZiAobnAtPnJuX293bnNfYnVmKQo+
IAkJCQlmcmVlKG5wLT5ybl9idWYpOwo+IAkJfQo+IAkJbnAtPnJuX2J1ZiA9IChjaGFyICopIG5l
d19idWY7Cj4gQEAgLTM4Myw5ICszODEsOCBAQCByYW1mc19jcmVhdGUoc3RydWN0IHZub2RlICpk
dnAsIGNoYXIgKm5hbWUsIG1vZGVfdCBtb2RlKQo+IHsKPiAJc3RydWN0IHJhbWZzX25vZGUgKm5w
Owo+IAo+IC0JaWYgKHN0cmxlbihuYW1lKSA+IE5BTUVfTUFYKSB7Cj4gKwlpZiAoc3RybGVuKG5h
bWUpID4gTkFNRV9NQVgpCj4gCQlyZXR1cm4gRU5BTUVUT09MT05HOwo+IC0JfQo+IAo+IAlEUFJJ
TlRGKCgiY3JlYXRlICVzIGluICVzXG4iLCBuYW1lLCBSQU1GU19OT0RFKGR2cCktPnJuX25hbWUp
KTsKPiAJaWYgKCFTX0lTUkVHKG1vZGUpKQo+IEBAIC00MDQsMTggKzQwMSwxNCBAQCByYW1mc19y
ZWFkKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwIF9fdW51c2VkLAo+
IAlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSAgdnAtPnZfZGF0YTsKPiAJc2l6ZV90IGxlbjsKPiAK
PiAtCWlmICh2cC0+dl90eXBlID09IFZESVIpIHsKPiArCWlmICh2cC0+dl90eXBlID09IFZESVIp
Cj4gCQlyZXR1cm4gRUlTRElSOwo+IC0JfQo+IC0JaWYgKHZwLT52X3R5cGUgIT0gVlJFRykgewo+
ICsJaWYgKHZwLT52X3R5cGUgIT0gVlJFRykKPiAJCXJldHVybiBFSU5WQUw7Cj4gLQl9Cj4gLQlp
ZiAodWlvLT51aW9fb2Zmc2V0IDwgMCkgewo+ICsJaWYgKHVpby0+dWlvX29mZnNldCA8IDApCj4g
CQlyZXR1cm4gRUlOVkFMOwo+IC0JfQo+IC0JaWYgKHVpby0+dWlvX3Jlc2lkID09IDApIHsKPiAr
CWlmICh1aW8tPnVpb19yZXNpZCA9PSAwKQo+IAkJcmV0dXJuIDA7Cj4gLQl9Cj4gCj4gCWlmICh1
aW8tPnVpb19vZmZzZXQgPj0gKG9mZl90KSB2cC0+dl9zaXplKQo+IAkJcmV0dXJuIDA7Cj4gQEAg
LTQzNSwxNSArNDI4LDEyIEBAIHJhbWZzX3NldF9maWxlX2RhdGEoc3RydWN0IHZub2RlICp2cCwg
Y29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUpCj4gewo+IAlzdHJ1Y3QgcmFtZnNfbm9kZSAq
bnAgPSAgdnAtPnZfZGF0YTsKPiAKPiAtCWlmICh2cC0+dl90eXBlID09IFZESVIpIHsKPiArCWlm
ICh2cC0+dl90eXBlID09IFZESVIpCj4gCQlyZXR1cm4gRUlTRElSOwo+IC0JfQo+IC0JaWYgKHZw
LT52X3R5cGUgIT0gVlJFRykgewo+ICsJaWYgKHZwLT52X3R5cGUgIT0gVlJFRykKPiAJCXJldHVy
biBFSU5WQUw7Cj4gLQl9Cj4gLQlpZiAobnAtPnJuX2J1Zikgewo+ICsJaWYgKG5wLT5ybl9idWYp
Cj4gCQlyZXR1cm4gRUlOVkFMOwo+IC0JfQo+IAo+IAlucC0+cm5fYnVmID0gKGNoYXIgKikgZGF0
YTsKPiAJbnAtPnJuX2J1ZnNpemUgPSBzaXplOwo+IEBAIC00NTksMjEgKzQ0OSwxNiBAQCByYW1m
c193cml0ZShzdHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3QgdWlvICp1aW8sIGludCBpb2ZsYWcpCj4g
ewo+IAlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSAgdnAtPnZfZGF0YTsKPiAKPiAtCWlmICh2cC0+
dl90eXBlID09IFZESVIpIHsKPiArCWlmICh2cC0+dl90eXBlID09IFZESVIpCj4gCQlyZXR1cm4g
RUlTRElSOwo+IC0JfQo+IC0JaWYgKHZwLT52X3R5cGUgIT0gVlJFRykgewo+ICsJaWYgKHZwLT52
X3R5cGUgIT0gVlJFRykKPiAJCXJldHVybiBFSU5WQUw7Cj4gLQl9Cj4gLQlpZiAodWlvLT51aW9f
b2Zmc2V0IDwgMCkgewo+ICsJaWYgKHVpby0+dWlvX29mZnNldCA8IDApCj4gCQlyZXR1cm4gRUlO
VkFMOwo+IC0JfQo+IC0JaWYgKHVpby0+dWlvX29mZnNldCA+PSBMT05HX01BWCkgewo+ICsJaWYg
KHVpby0+dWlvX29mZnNldCA+PSBMT05HX01BWCkKPiAJCXJldHVybiBFRkJJRzsKPiAtCX0KPiAt
CWlmICh1aW8tPnVpb19yZXNpZCA9PSAwKSB7Cj4gKwlpZiAodWlvLT51aW9fcmVzaWQgPT0gMCkK
PiAJCXJldHVybiAwOwo+IC0JfQo+IAo+IAlpZiAoaW9mbGFnICYgSU9fQVBQRU5EKQo+IAkJdWlv
LT51aW9fb2Zmc2V0ID0gbnAtPnJuX3NpemU7Cj4gQEAgLTQ4MSwxNSArNDY2LDE3IEBAIHJhbWZz
X3dyaXRlKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCB1aW8gKnVpbywgaW50IGlvZmxhZykKPiAJ
aWYgKChzaXplX3QpIHVpby0+dWlvX29mZnNldCArIHVpby0+dWlvX3Jlc2lkID4gKHNpemVfdCkg
dnAtPnZfc2l6ZSkgewo+IAkJLyogRXhwYW5kIHRoZSBmaWxlIHNpemUgYmVmb3JlIHdyaXRpbmcg
dG8gaXQgKi8KPiAJCW9mZl90IGVuZF9wb3MgPSB1aW8tPnVpb19vZmZzZXQgKyB1aW8tPnVpb19y
ZXNpZDsKPiArCj4gCQlpZiAoZW5kX3BvcyA+IChvZmZfdCkgbnAtPnJuX2J1ZnNpemUpIHsKPiAJ
CQkvLyBYWFg6IHRoaXMgY291bGQgdXNlIGEgcGFnZSBsZXZlbCBhbGxvY2F0b3IKPiAJCQlzaXpl
X3QgbmV3X3NpemUgPSByb3VuZF9wYWdlKGVuZF9wb3MpOwo+IAkJCXZvaWQgKm5ld19idWYgPSBt
YWxsb2MobmV3X3NpemUpOwo+ICsKPiAJCQlpZiAoIW5ld19idWYpCj4gCQkJCXJldHVybiBFSU87
Cj4gCQkJaWYgKG5wLT5ybl9zaXplICE9IDApIHsKPiAJCQkJbWVtY3B5KG5ld19idWYsIG5wLT5y
bl9idWYsIHZwLT52X3NpemUpOwo+IC0JCQkJaWYobnAtPnJuX293bnNfYnVmKQo+ICsJCQkJaWYg
KG5wLT5ybl9vd25zX2J1ZikKPiAJCQkJCWZyZWUobnAtPnJuX2J1Zik7Cj4gCQkJfQo+IAkJCW5w
LT5ybl9idWYgPSAoY2hhciAqKSBuZXdfYnVmOwo+IEBAIC02MjMsMjQgKzYxMCwyNyBAQCByYW1m
c19nZXRhdHRyKHN0cnVjdCB2bm9kZSAqdm5vZGUsIHN0cnVjdCB2YXR0ciAqYXR0cikKPiB9Cj4g
Cj4gc3RhdGljIGludAo+IC1yYW1mc19zZXRhdHRyKHN0cnVjdCB2bm9kZSAqdm5vZGUsIHN0cnVj
dCB2YXR0ciAqYXR0cikgewo+ICtyYW1mc19zZXRhdHRyKHN0cnVjdCB2bm9kZSAqdm5vZGUsIHN0
cnVjdCB2YXR0ciAqYXR0cikKPiArewo+IAlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSB2bm9kZS0+
dl9kYXRhOwo+IAo+IAlpZiAoYXR0ci0+dmFfbWFzayAmIEFUX0FUSU1FKSB7Cj4gLQkJbWVtY3B5
KCYobnAtPnJuX2F0aW1lKSwgJihhdHRyLT52YV9hdGltZSksIHNpemVvZihzdHJ1Y3QgdGltZXNw
ZWMpKTsKPiArCQltZW1jcHkoJihucC0+cm5fYXRpbWUpLCAmKGF0dHItPnZhX2F0aW1lKSwKPiAr
CQkgICAgICAgc2l6ZW9mKHN0cnVjdCB0aW1lc3BlYykpOwo+IAl9Cj4gCj4gCWlmIChhdHRyLT52
YV9tYXNrICYgQVRfQ1RJTUUpIHsKPiAtCQltZW1jcHkoJihucC0+cm5fY3RpbWUpLCAmKGF0dHIt
PnZhX2N0aW1lKSwgc2l6ZW9mKHN0cnVjdCB0aW1lc3BlYykpOwo+ICsJCW1lbWNweSgmKG5wLT5y
bl9jdGltZSksICYoYXR0ci0+dmFfY3RpbWUpLAo+ICsJCSAgICAgICBzaXplb2Yoc3RydWN0IHRp
bWVzcGVjKSk7Cj4gCX0KPiAKPiAJaWYgKGF0dHItPnZhX21hc2sgJiBBVF9NVElNRSkgewo+IC0J
CW1lbWNweSgmKG5wLT5ybl9tdGltZSksICYoYXR0ci0+dmFfbXRpbWUpLCBzaXplb2Yoc3RydWN0
IHRpbWVzcGVjKSk7Cj4gKwkJbWVtY3B5KCYobnAtPnJuX210aW1lKSwgJihhdHRyLT52YV9tdGlt
ZSksCj4gKwkJICAgICAgIHNpemVvZihzdHJ1Y3QgdGltZXNwZWMpKTsKPiAJfQo+IAo+IC0JaWYg
KGF0dHItPnZhX21hc2sgJiBBVF9NT0RFKSB7Cj4gKwlpZiAoYXR0ci0+dmFfbWFzayAmIEFUX01P
REUpCj4gCQlucC0+cm5fbW9kZSA9IGF0dHItPnZhX21vZGU7Cj4gLQl9Cj4gCj4gCXJldHVybiAw
Owo+IH0KPiAtLSAKPiAyLjE5LjIKPiAKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwo+IE1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKPiBNaW5pb3Mt
ZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKPiBodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3Jn
L21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVsCgoKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3Mt
ZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9t
YWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Feb 20 15:25:17 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 20 Feb 2019 15:25:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gwTkJ-00045i-R5; Wed, 20 Feb 2019 15:25:15 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=VbZN=Q3=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gwTkI-00045b-KI
 for minios-devel@lists.xen.org; Wed, 20 Feb 2019 15:25:14 +0000
X-Inumbo-ID: b69e54e0-3523-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id b69e54e0-3523-11e9-bc90-bc764e045a96;
 Wed, 20 Feb 2019 15:25:12 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 5FCEBF2017;
 Wed, 20 Feb 2019 16:23:01 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id xx3mlguoNQGB; Wed, 20 Feb 2019 16:23:01 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 339B5F2004
 for <minios-devel@lists.xen.org>; Wed, 20 Feb 2019 16:22:59 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Wed, 20 Feb 2019 16:22:59 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: Simon Kuenzer <simon.kuenzer@neclab.eu>
In-Reply-To: <1355DE4D-8B7A-43E0-B46B-4851A11FF7E5@neclab.eu>
References: <20190208143108.27175-1-yuri.volchkov@neclab.eu>
 <20190208143108.27175-5-yuri.volchkov@neclab.eu>
 <1355DE4D-8B7A-43E0-B46B-4851A11FF7E5@neclab.eu>
Date: Wed, 20 Feb 2019 16:22:56 +0100
Message-ID: <tza4s2bm36mqlr.fsf@N-1128.office.hd>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 4/6] lib/ramfs: adapt
 imported ramfs to Unikraft
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>,
 Sharan Santhanam <Sharan.Santhanam@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGkgU2ltb24sCgoKU2ltb24gS3VlbnplciA8c2ltb24ua3VlbnplckBuZWNsYWIuZXU+IHdyaXRl
czoKCj4gSGV5IFl1cmksCj4KPiBwbGVhc2UgZmluZCBteSBjb21tZW50cyBpbmxpbmUuCj4KPiBU
aGFua3MsCj4KPiBTaW1vbgo+Cj4+IE9uIDguIEZlYiAyMDE5LCBhdCAxNTozMSwgWXVyaSBWb2xj
aGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+IHdyb3RlOgo+PiAKPj4gU2lnbmVkLW9mZi1i
eTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Cj4+IC0tLQo+PiBsaWIv
Q29uZmlnLnVrICAgICAgICAgICAgfCAgIDEgKwo+PiBsaWIvTWFrZWZpbGUudWsgICAgICAgICAg
fCAgIDEgKwo+PiBsaWIvcmFtZnMvQ29uZmlnLnVrICAgICAgfCAgIDQgKwo+PiBsaWIvcmFtZnMv
TWFrZWZpbGUudWsgICAgfCAgIDUgKysKPj4gbGliL3JhbWZzL2V4cG9ydHN5bXMudWsgIHwgICAx
ICsKPj4gbGliL3JhbWZzL3JhbWZzLmggICAgICAgIHwgICA0ICstCj4+IGxpYi9yYW1mcy9yYW1m
c192ZnNvcHMuYyB8ICAyOCArKysrLS0tCj4+IGxpYi9yYW1mcy9yYW1mc192bm9wcy5jICB8IDE3
MSArKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0KPj4gOCBmaWxlcyBjaGFu
Z2VkLCAxMjQgaW5zZXJ0aW9ucygrKSwgOTEgZGVsZXRpb25zKC0pCj4+IGNyZWF0ZSBtb2RlIDEw
MDY0NCBsaWIvcmFtZnMvQ29uZmlnLnVrCj4+IGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvcmFtZnMv
TWFrZWZpbGUudWsKPj4gY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9yYW1mcy9leHBvcnRzeW1zLnVr
Cj4+IAo+PiBkaWZmIC0tZ2l0IGEvbGliL3JhbWZzL0NvbmZpZy51ayBiL2xpYi9yYW1mcy9Db25m
aWcudWsKPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4gaW5kZXggMDAwMDAwMDAuLjUyZTQzODhj
Cj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIvbGliL3JhbWZzL0NvbmZpZy51awo+PiBAQCAtMCww
ICsxLDQgQEAKPj4gK2NvbmZpZyBMSUJSQU1GUwo+PiArCWJvb2wgInJhbWZzOiBzaW1wbGUgUkFN
IGZpbGUgc3lzdGVtIgo+PiArCWRlZmF1bHQgbgo+PiArCWRlcGVuZHMgb24gTElCVkZTQ09SRQo+
PiBkaWZmIC0tZ2l0IGEvbGliL3JhbWZzL01ha2VmaWxlLnVrIGIvbGliL3JhbWZzL01ha2VmaWxl
LnVrCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAwLi5jZDZkYWZkNQo+
PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL2xpYi9yYW1mcy9NYWtlZmlsZS51awo+PiBAQCAtMCww
ICsxLDUgQEAKPj4gKyQoZXZhbCAkKGNhbGwgYWRkbGliX3MsbGlicmFtZnMsJChDT05GSUdfTElC
UkFNRlMpKSkKPj4gKwo+PiArTElCUkFNRlNfU1JDUy15ICs9ICQoTElCUkFNRlNfQkFTRSkvcmFt
ZnNfdmZzb3BzLmMKPj4gK0xJQlJBTUZTX1NSQ1MteSArPSAkKExJQlJBTUZTX0JBU0UpL3JhbWZz
X3Zub3BzLmMKPj4gK0xJQlJBTUZTX0NGTEFHUyArPSAtRERFQlVHX1JBTUZTIC1EVUtfREVCVUcK
Pgo+IEkgd291bGQgbm90IGhhbmRvdmVyIFVLX0RFQlVHIGFsd2F5cy4gU2VlIGFsc28gbXkgY29t
bWVudHMgb24gcGF0Y2ggNS4KPiBBIG1lbnUgb3B0aW9uIGluIENvbmZpZy51ayBjb3VsZCBiZSBh
ZGRlZCB0byBpbnRyb2R1Y2UgdGhpcyBmbGFnIHdoZW4gc2VsZWN0ZWQuIApUaGF0IGlzIGEgbWlz
dGFrZS4gSXQgaGFzIHNuZWFrZWQgZnJvbSB0aGUgZGVidWcgY29kZS4gSSBhbSBraWxsaW5nIHRo
aXMKbGluZSBpbiB0aGUgdjMuIEFzIGZvciBtZW51IG9wdGlvbiwgbGV0J3MgY29uc2lkZXIgaXQg
bGF0ZXIsIHdoZW4KRFBSSU5URiBpcyBzZXR0bGVkLgoKPgo+PiBkaWZmIC0tZ2l0IGEvbGliL3Jh
bWZzL2V4cG9ydHN5bXMudWsgYi9saWIvcmFtZnMvZXhwb3J0c3ltcy51awo+PiBuZXcgZmlsZSBt
b2RlIDEwMDY0NAo+PiBpbmRleCAwMDAwMDAwMC4uYzg2YzNmMzUKPj4gLS0tIC9kZXYvbnVsbAo+
PiArKysgYi9saWIvcmFtZnMvZXhwb3J0c3ltcy51awo+PiBAQCAtMCwwICsxIEBACj4+ICtub25l
Cj4+IFwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo+PiBkaWZmIC0tZ2l0IGEvbGliL3JhbWZz
L3JhbWZzLmggYi9saWIvcmFtZnMvcmFtZnMuaAo+PiBpbmRleCAwMWU0ZGEwOS4uOTFmYjU3OWMg
MTAwNjQ0Cj4+IC0tLSBhL2xpYi9yYW1mcy9yYW1mcy5oCj4+ICsrKyBiL2xpYi9yYW1mcy9yYW1m
cy5oCj4+IEBAIC0zMyw3ICszMyw3IEBACj4+ICNpZm5kZWYgX1JBTUZTX0gKPj4gI2RlZmluZSBf
UkFNRlNfSAo+PiAKPj4gLSNpbmNsdWRlIDxvc3YvcHJleC5oPgo+PiArI2luY2x1ZGUgPHZmc2Nv
cmUvcHJleC5oPgo+PiAKPj4gLyogI2RlZmluZSBERUJVR19SQU1GUyAxICovCj4+IAo+PiBAQCAt
NjEsNyArNjEsNyBAQCBzdHJ1Y3QgcmFtZnNfbm9kZSB7Cj4+IAlzdHJ1Y3QgdGltZXNwZWMgcm5f
YXRpbWU7Cj4+IAlzdHJ1Y3QgdGltZXNwZWMgcm5fbXRpbWU7Cj4+IAlpbnQgcm5fbW9kZTsKPj4g
LQlib29sIHJuX293bnNfYnVmOwo+PiArCWludCBybl9vd25zX2J1ZjsKPgo+IFdlIGhhdmUgYHN0
ZGJvb2wuaGAgaW4gdGhlIG1lYW50aW1lLiBZb3UgZG8gbm90IG5lZWQgdG8gcmVwbGFjZSB0aGUg
Ym9vbCBkYXRhdHlwZSBhbnltb3JlLgpPaywgSSByZXN0b3JlZCB0aGUgb3JpZ2luYWwgYm9vbGlh
biBjb2RlIGZvciByYW1mcy4KCj4+IH07Cj4+IAo+PiBzdHJ1Y3QgcmFtZnNfbm9kZSAqcmFtZnNf
YWxsb2NhdGVfbm9kZShjb25zdCBjaGFyICpuYW1lLCBpbnQgdHlwZSk7Cj4+IEBAIC0zNDUsNyAr
MzUyLDcgQEAgcmFtZnNfdHJ1bmNhdGUoc3RydWN0IHZub2RlICp2cCwgb2ZmX3QgbGVuZ3RoKQo+
PiAJCQlucC0+cm5fYnVmID0gTlVMTDsKPj4gCQkJbnAtPnJuX2J1ZnNpemUgPSAwOwo+PiAJCX0K
Pj4gLQl9IGVsc2UgaWYgKHNpemVfdChsZW5ndGgpID4gbnAtPnJuX2J1ZnNpemUpIHsKPj4gKwl9
IGVsc2UgaWYgKChzaXplX3QpIGxlbmd0aCA+IG5wLT5ybl9idWZzaXplKSB7Cj4+IAkJLy8gWFhY
OiB0aGlzIGNvdWxkIHVzZSBhIHBhZ2UgbGV2ZWwgYWxsb2NhdG9yCj4KPiBZb3UgY291bGQgY29u
dmVydCB0aGlzIFhYWCBjb21tZW50IHRvIGEgVE9ETy4gV2UgaGF2ZSBhY3R1YWxseSBhIHBhZ2Ug
bGV2ZWwgYWxsb2NhdG9yIGludGVyZmFjZSB0aGF0IHdlIGNvdWxkIHVzZSBpbiB0aGUgZnV0dXJl
LgpYWFggbWVhbnMgc2FtZSBhcyBUT0RPLiBCdXQgb2ssIEkgY2FuIGNoYW5nZSB0aGF0LgoKPgo+
PiAJCW5ld19zaXplID0gcm91bmRfcGFnZShsZW5ndGgpOwo+PiAJCW5ld19idWYgPSBtYWxsb2Mo
bmV3X3NpemUpOwo+CgotLSAKWXVyaSBWb2xjaGtvdgpTb2Z0d2FyZSBTcGVjaWFsaXN0CgpORUMg
RXVyb3BlIEx0ZApLdXJmw7xyc3Rlbi1BbmxhZ2UgMzYKRC02OTExNSBIZWlkZWxiZXJnCgpfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwg
bWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xp
c3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Feb 20 15:58:35 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 20 Feb 2019 15:58:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gwUGX-0006Ze-6z; Wed, 20 Feb 2019 15:58:33 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=VbZN=Q3=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gwUGV-0006ZZ-QL
 for minios-devel@lists.xen.org; Wed, 20 Feb 2019 15:58:31 +0000
X-Inumbo-ID: 5d8a4023-3528-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 5d8a4023-3528-11e9-bc90-bc764e045a96;
 Wed, 20 Feb 2019 15:58:30 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 3C428F2039;
 Wed, 20 Feb 2019 16:58:29 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id wv8HnIexySjJ; Wed, 20 Feb 2019 16:58:29 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 0F83BF2017
 for <minios-devel@lists.xen.org>; Wed, 20 Feb 2019 16:58:27 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Wed, 20 Feb 2019 16:58:26 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 20 Feb 2019 16:58:06 +0100
Message-ID: <20190220155812.29546-1-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v3 0/6] Import ramfs from OSv
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: simon.kuenzer@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2FtZSBhcyB3aXRoIHZmc2NvcmUgLSB0aGUgbWluaW1hbCBudW1iZXIgb2YgbW9kaWZpY2F0aW9u
cyB0byBtYWtlIGl0CndvcmtpbmcgaW4gVW5pa3JhZnQuIEZvcnR1bmF0ZWxseSByYW1mcyBpcyB2
ZXJ5IHNtYWxsLCBhbmQgYWxtb3N0IGRpZApub3QgaGF2ZSBjKysgcGllY2VzIG9mIGNvZGUuIFNv
IHRoaXMgdGltZSBJIGV2ZW4gaGFkIGEgcm9vbSB0byBmaXgKc3R5bGUgcHJvYmxlbXMsIGV4Y2Vw
dCBmZXcgb2YgdGhlbS4KCkRlcGVuZHMgb24gdmZzY29yZSBwYXRjaGVzLgoKY2hhZ2VzIHNpbmNl
IHYxOgogLSByZWJhc2Ugb24gdmZzY29yZSB2MwogLSBhZGQgZm9yZ290dGVuIE1ha2VmaWxlLnVr
IGFuZCBDb25maWcudWsKCmNoYW5nZXMgc2luY2UgdjI6CiAtIGRvIG5vdCBidWlsZCBpbiBkZWJ1
ZyBtb2RlIGJ5IGRlZmF1bHQKIC0gZ2V0IHJpZCBvZiBBU1NFUlQoKSBtYWNybwogLSBub3csIHNp
bmNlIFVuaWtyYWZ0IGhhcyBzdGRib29sLCBubyBuZWVkIHRvIHJlcGxhY2UgYm9vbGlhbnMgd2l0
aAogICBhbiBpbnRlZ2VyCiAtIHJlcGxhY2UgRFBSSU5URiB3aXRoIHVrX3ByX2RlYnVnCgpZdXJp
IFZvbGNoa292ICg2KToKICBsaWIvcmFtZnM6IGluaXRpYWwgaW1wb3J0IGZyb20gT1N2CiAgbGli
L3JhbWZzOiB0YWJpZnkgaW1wb3J0ZWQgcmFtZnMgY29kZQogIGxpYi9yYW1mczogdXBkYXRlIGxp
Y2Vuc2UgaGVhZGVyIGZvciBpbXBvcnRlZCBmaWxlcwogIGxpYi9yYW1mczogYWRhcHQgaW1wb3J0
ZWQgcmFtZnMgdG8gVW5pa3JhZnQKICBsaWIvcmFtZnM6IGZpeCBkZWJ1ZyBwcmludG91dHMKICBs
aWIvcmFtZnM6IGZpeCBzdHlsZSBpc3N1ZXMKCiBsaWIvQ29uZmlnLnVrICAgICAgICAgICAgfCAg
IDEgKwogbGliL01ha2VmaWxlLnVrICAgICAgICAgIHwgICAxICsKIGxpYi9yYW1mcy9Db25maWcu
dWsgICAgICB8ICAgNCArCiBsaWIvcmFtZnMvTWFrZWZpbGUudWsgICAgfCAgIDQgKwogbGliL3Jh
bWZzL2V4cG9ydHN5bXMudWsgIHwgICAxICsKIGxpYi9yYW1mcy9yYW1mcy5oICAgICAgICB8ICA2
NCArKysrCiBsaWIvcmFtZnMvcmFtZnNfdmZzb3BzLmMgfCAxMDQgKysrKysrCiBsaWIvcmFtZnMv
cmFtZnNfdm5vcHMuYyAgfCA2NzUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrCiA4IGZpbGVzIGNoYW5nZWQsIDg1NCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2
NDQgbGliL3JhbWZzL0NvbmZpZy51awogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9yYW1mcy9NYWtl
ZmlsZS51awogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9yYW1mcy9leHBvcnRzeW1zLnVrCiBjcmVh
dGUgbW9kZSAxMDA2NDQgbGliL3JhbWZzL3JhbWZzLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIv
cmFtZnMvcmFtZnNfdmZzb3BzLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvcmFtZnMvcmFtZnNf
dm5vcHMuYwoKLS0gCjIuMTkuMgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3Rz
LnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0
aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Feb 20 15:58:37 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 20 Feb 2019 15:58:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gwUGb-0006a0-9B; Wed, 20 Feb 2019 15:58:37 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=VbZN=Q3=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gwUGZ-0006Zt-LG
 for minios-devel@lists.xen.org; Wed, 20 Feb 2019 15:58:35 +0000
X-Inumbo-ID: 5f0955af-3528-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 5f0955af-3528-11e9-bc90-bc764e045a96;
 Wed, 20 Feb 2019 15:58:32 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id CD814104E36;
 Wed, 20 Feb 2019 16:58:31 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id BWfvxhDZf_t6; Wed, 20 Feb 2019 16:58:31 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id A4888104DEC
 for <minios-devel@lists.xen.org>; Wed, 20 Feb 2019 16:58:29 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Wed, 20 Feb 2019 16:58:29 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 20 Feb 2019 16:58:07 +0100
Message-ID: <20190220155812.29546-2-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190220155812.29546-1-yuri.volchkov@neclab.eu>
References: <20190220155812.29546-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v3 1/6] lib/ramfs: initial import
 from OSv
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: simon.kuenzer@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Z2l0IHRhZzogdjAuNTIuMApjb21taXQ6IDAwMjk5MTkwNDE0ZTRjN2M1YjBmMmQ3NGNkMTE3NjNk
YWMzNGU1YjkKClNpZ25lZC1vZmYtYnk6IFl1cmkgVm9sY2hrb3YgPHl1cmkudm9sY2hrb3ZAbmVj
bGFiLmV1PgpSZXZpZXdlZC1ieTogU2ltb24gS3VlbnplciA8c2ltb24ua3VlbnplckBuZWNsYWIu
ZXU+Ci0tLQogbGliL3JhbWZzL3JhbWZzLmggICAgICAgIHwgIDY4ICsrKysKIGxpYi9yYW1mcy9y
YW1mc192ZnNvcHMuYyB8ICA5MCArKysrKysKIGxpYi9yYW1mcy9yYW1mc192bm9wcy5jICB8IDY2
OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdl
ZCwgODI3IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvcmFtZnMvcmFtZnMu
aAogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9yYW1mcy9yYW1mc192ZnNvcHMuYwogY3JlYXRlIG1v
ZGUgMTAwNjQ0IGxpYi9yYW1mcy9yYW1mc192bm9wcy5jCgpkaWZmIC0tZ2l0IGEvbGliL3JhbWZz
L3JhbWZzLmggYi9saWIvcmFtZnMvcmFtZnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMC4uODhjY2JlNzIKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvcmFtZnMvcmFtZnMuaApA
QCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA2LTIwMDcsIEtvaHN1a2Ug
T2h0YW5pCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0
aGUgbmFtZSBvZiB0aGUgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgYW55IGNvLWNvbnRyaWJ1dG9y
cworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCisgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBB
VVRIT1IgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIF9SQU1GU19ICisjZGVmaW5lIF9SQU1GU19ICisKKyNpbmNsdWRl
IDxvc3YvcHJleC5oPgorCisvKiAjZGVmaW5lIERFQlVHX1JBTUZTIDEgKi8KKworI2lmZGVmIERF
QlVHX1JBTUZTCisjZGVmaW5lIERQUklOVEYoYSkJZHByaW50ZiBhCisjZWxzZQorI2RlZmluZSBE
UFJJTlRGKGEpICAgIGRvIHt9IHdoaWxlICgwKQorI2VuZGlmCisKKyNkZWZpbmUgQVNTRVJUKGUp
ICAgIGFzc2VydChlKQorCisvKgorICogRmlsZS9kaXJlY3Rvcnkgbm9kZSBmb3IgUkFNRlMKKyAq
Lworc3RydWN0IHJhbWZzX25vZGUgeworICAgIHN0cnVjdCByYW1mc19ub2RlICpybl9uZXh0OyAg
IC8qIG5leHQgbm9kZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkgKi8KKyAgICBzdHJ1Y3QgcmFtZnNf
bm9kZSAqcm5fY2hpbGQ7ICAvKiBmaXJzdCBjaGlsZCBub2RlICovCisgICAgaW50IHJuX3R5cGU7
ICAgIC8qIGZpbGUgb3IgZGlyZWN0b3J5ICovCisgICAgY2hhciAqcm5fbmFtZTsgICAgLyogbmFt
ZSAobnVsbC10ZXJtaW5hdGVkKSAqLworICAgIHNpemVfdCBybl9uYW1lbGVuOyAgICAvKiBsZW5n
dGggb2YgbmFtZSBub3QgaW5jbHVkaW5nIHRlcm1pbmF0b3IgKi8KKyAgICBzaXplX3Qgcm5fc2l6
ZTsgICAgLyogZmlsZSBzaXplICovCisgICAgY2hhciAqcm5fYnVmOyAgICAvKiBidWZmZXIgdG8g
dGhlIGZpbGUgZGF0YSAqLworICAgIHNpemVfdCBybl9idWZzaXplOyAgICAvKiBhbGxvY2F0ZWQg
YnVmZmVyIHNpemUgKi8KKyAgICBzdHJ1Y3QgdGltZXNwZWMgcm5fY3RpbWU7CisgICAgc3RydWN0
IHRpbWVzcGVjIHJuX2F0aW1lOworICAgIHN0cnVjdCB0aW1lc3BlYyBybl9tdGltZTsKKyAgICBp
bnQgcm5fbW9kZTsKKyAgICBib29sIHJuX293bnNfYnVmOworfTsKKworc3RydWN0IHJhbWZzX25v
ZGUgKnJhbWZzX2FsbG9jYXRlX25vZGUoY29uc3QgY2hhciAqbmFtZSwgaW50IHR5cGUpOworCit2
b2lkIHJhbWZzX2ZyZWVfbm9kZShzdHJ1Y3QgcmFtZnNfbm9kZSAqbm9kZSk7CisKKyNlbmRpZiAv
KiAhX1JBTUZTX0ggKi8KZGlmZiAtLWdpdCBhL2xpYi9yYW1mcy9yYW1mc192ZnNvcHMuYyBiL2xp
Yi9yYW1mcy9yYW1mc192ZnNvcHMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MC4uNzJmZTdlZGIKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvcmFtZnMvcmFtZnNfdmZzb3BzLmMK
QEAgLTAsMCArMSw5MCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwNi0yMDA3LCBLb2hzdWtl
IE9odGFuaQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIg
dGhlIG5hbWUgb2YgdGhlIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGFueSBjby1jb250cmlidXRv
cnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20gdGhpcyBzb2Z0d2FyZQorICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
QVVUSE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgPGVycm5vLmg+CisKKyNpbmNsdWRlIDxvc3Yvdm5vZGUuaD4K
KyNpbmNsdWRlIDxvc3YvbW91bnQuaD4KKyNpbmNsdWRlIDxvc3YvZGVudHJ5Lmg+CisKKyNpbmNs
dWRlICJyYW1mcy5oIgorCitleHRlcm4gc3RydWN0IHZub3BzIHJhbWZzX3Zub3BzOworCitzdGF0
aWMgaW50IHJhbWZzX21vdW50KHN0cnVjdCBtb3VudCAqbXAsIGNvbnN0IGNoYXIgKmRldiwgaW50
IGZsYWdzLCBjb25zdCB2b2lkICpkYXRhKTsKKworc3RhdGljIGludCByYW1mc191bm1vdW50KHN0
cnVjdCBtb3VudCAqbXAsIGludCBmbGFncyk7CisKKyNkZWZpbmUgcmFtZnNfc3luYyAgICAoKHZm
c29wX3N5bmNfdCl2ZnNfbnVsbG9wKQorI2RlZmluZSByYW1mc192Z2V0ICAgICgodmZzb3Bfdmdl
dF90KXZmc19udWxsb3ApCisjZGVmaW5lIHJhbWZzX3N0YXRmcyAgICAoKHZmc29wX3N0YXRmc190
KXZmc19udWxsb3ApCisKKy8qCisgKiBGaWxlIHN5c3RlbSBvcGVyYXRpb25zCisgKi8KK3N0cnVj
dCB2ZnNvcHMgcmFtZnNfdmZzb3BzID0geworICAgICAgICByYW1mc19tb3VudCwgICAgICAgLyog
bW91bnQgKi8KKyAgICAgICAgcmFtZnNfdW5tb3VudCwgICAgIC8qIHVubW91bnQgKi8KKyAgICAg
ICAgcmFtZnNfc3luYywgICAgICAgIC8qIHN5bmMgKi8KKyAgICAgICAgcmFtZnNfdmdldCwgICAg
ICAgIC8qIHZnZXQgKi8KKyAgICAgICAgcmFtZnNfc3RhdGZzLCAgICAgIC8qIHN0YXRmcyAqLwor
ICAgICAgICAmcmFtZnNfdm5vcHMsICAgICAgLyogdm5vcHMgKi8KK307CisKKy8qCisgKiBNb3Vu
dCBhIGZpbGUgc3lzdGVtLgorICovCitzdGF0aWMgaW50CityYW1mc19tb3VudChzdHJ1Y3QgbW91
bnQgKm1wLCBjb25zdCBjaGFyICpkZXYsIGludCBmbGFncywgY29uc3Qgdm9pZCAqZGF0YSkKK3sK
KyAgICBzdHJ1Y3QgcmFtZnNfbm9kZSAqbnA7CisKKyAgICBEUFJJTlRGKCgicmFtZnNfbW91bnQ6
IGRldj0lc1xuIiwgZGV2KSk7CisKKyAgICAvKiBDcmVhdGUgYSByb290IG5vZGUgKi8KKyAgICBu
cCA9IHJhbWZzX2FsbG9jYXRlX25vZGUoIi8iLCBWRElSKTsKKyAgICBpZiAobnAgPT0gTlVMTCkK
KyAgICAgICAgcmV0dXJuIEVOT01FTTsKKyAgICBtcC0+bV9yb290LT5kX3Zub2RlLT52X2RhdGEg
PSBucDsKKyAgICByZXR1cm4gMDsKK30KKworLyoKKyAqIFVubW91bnQgYSBmaWxlIHN5c3RlbS4K
KyAqCisgKiBOT1RFOiBDdXJyZW50bHksIHdlIGRvbid0IHN1cHBvcnQgdW5tb3VudGluZyBvZiB0
aGUgUkFNRlMuIFRoaXMgaXMKKyAqICAgICAgIGJlY2F1c2Ugd2UgaGF2ZSB0byBkZWFsbG9jYXRl
IGFsbCBub2RlcyBpbmNsdWRlZCBpbiBhbGwgc3ViCisgKiAgICAgICBkaXJlY3RvcmllcywgYW5k
IGl0IHJlcXVpcmVzIG1vcmUgd29yay4uLgorICovCitzdGF0aWMgaW50CityYW1mc191bm1vdW50
KHN0cnVjdCBtb3VudCAqbXAsIGludCBmbGFncykKK3sKKyAgICByZWxlYXNlX21wX2RlbnRyaWVz
KG1wKTsKKyAgICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2xpYi9yYW1mcy9yYW1mc192bm9w
cy5jIGIvbGliL3JhbWZzL3JhbWZzX3Zub3BzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAuLjkyOTFhNGVjCi0tLSAvZGV2L251bGwKKysrIGIvbGliL3JhbWZzL3JhbWZzX3Zu
b3BzLmMKQEAgLTAsMCArMSw2NjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDYtMjAwNywg
S29oc3VrZSBPaHRhbmkKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBhbnkgY28tY29u
dHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKKyAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNV
Q0ggREFNQUdFLgorICovCisKKy8qCisgKiBybWFmc192bm9wcy5jIC0gdm5vZGUgb3BlcmF0aW9u
cyBmb3IgUkFNIGZpbGUgc3lzdGVtLgorICovCisKKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2lu
Y2x1ZGUgPGRpcmVudC5oPgorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorCisjaW5jbHVkZSA8ZXJy
bm8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRl
IDxmY250bC5oPgorCisjaW5jbHVkZSA8b3N2L3ByZXguaD4KKyNpbmNsdWRlIDxvc3Yvdm5vZGUu
aD4KKyNpbmNsdWRlIDxvc3YvZmlsZS5oPgorI2luY2x1ZGUgPG9zdi9tb3VudC5oPgorI2luY2x1
ZGUgPG9zdi92bm9kZV9hdHRyLmg+CisKKyNpbmNsdWRlICJyYW1mcy5oIgorCitzdGF0aWMgbXV0
ZXhfdCByYW1mc19sb2NrID0gTVVURVhfSU5JVElBTElaRVI7CitzdGF0aWMgdWludDY0X3QgaW5v
ZGVfY291bnQgPSAxOyAvKiBpbm9kZSAwIGlzIHJlc2VydmVkIHRvIHJvb3QgKi8KKworc3RhdGlj
IHZvaWQKK3NldF90aW1lc190b19ub3coc3RydWN0IHRpbWVzcGVjICp0aW1lMSwgc3RydWN0IHRp
bWVzcGVjICp0aW1lMiA9IG51bGxwdHIsIHN0cnVjdCB0aW1lc3BlYyAqdGltZTMgPSBudWxscHRy
KQoreworICAgIHN0cnVjdCB0aW1lc3BlYyBub3c7CisgICAgY2xvY2tfZ2V0dGltZShDTE9DS19S
RUFMVElNRSwgJm5vdyk7CisgICAgaWYgKHRpbWUxKSB7CisgICAgICAgIG1lbWNweSh0aW1lMSwg
Jm5vdywgc2l6ZW9mKHN0cnVjdCB0aW1lc3BlYykpOworICAgIH0KKyAgICBpZiAodGltZTIpIHsK
KyAgICAgICAgbWVtY3B5KHRpbWUyLCAmbm93LCBzaXplb2Yoc3RydWN0IHRpbWVzcGVjKSk7Cisg
ICAgfQorICAgIGlmICh0aW1lMykgeworICAgICAgICBtZW1jcHkodGltZTMsICZub3csIHNpemVv
ZihzdHJ1Y3QgdGltZXNwZWMpKTsKKyAgICB9Cit9CisKK3N0cnVjdCByYW1mc19ub2RlICoKK3Jh
bWZzX2FsbG9jYXRlX25vZGUoY29uc3QgY2hhciAqbmFtZSwgaW50IHR5cGUpCit7CisgICAgc3Ry
dWN0IHJhbWZzX25vZGUgKm5wOworCisgICAgbnAgPSAocmFtZnNfbm9kZSAqKSBtYWxsb2Moc2l6
ZW9mKHN0cnVjdCByYW1mc19ub2RlKSk7CisgICAgaWYgKG5wID09IE5VTEwpCisgICAgICAgIHJl
dHVybiBOVUxMOworICAgIG1lbXNldChucCwgMCwgc2l6ZW9mKHN0cnVjdCByYW1mc19ub2RlKSk7
CisKKyAgICBucC0+cm5fbmFtZWxlbiA9IHN0cmxlbihuYW1lKTsKKyAgICBucC0+cm5fbmFtZSA9
IChjaGFyICopIG1hbGxvYyhucC0+cm5fbmFtZWxlbiArIDEpOworICAgIGlmIChucC0+cm5fbmFt
ZSA9PSBOVUxMKSB7CisgICAgICAgIGZyZWUobnApOworICAgICAgICByZXR1cm4gTlVMTDsKKyAg
ICB9CisgICAgc3RybGNweShucC0+cm5fbmFtZSwgbmFtZSwgbnAtPnJuX25hbWVsZW4gKyAxKTsK
KyAgICBucC0+cm5fdHlwZSA9IHR5cGU7CisKKyAgICBpZiAodHlwZSA9PSBWRElSKQorICAgICAg
ICBucC0+cm5fbW9kZSA9IFNfSUZESVJ8MDc3NzsKKyAgICBlbHNlIGlmICh0eXBlID09IFZMTksp
CisgICAgICAgIG5wLT5ybl9tb2RlID0gU19JRkxOS3wwNzc3OworICAgIGVsc2UKKyAgICAgICAg
bnAtPnJuX21vZGUgPSBTX0lGUkVHfDA3Nzc7CisKKyAgICBzZXRfdGltZXNfdG9fbm93KCYobnAt
PnJuX2N0aW1lKSwgJihucC0+cm5fYXRpbWUpLCAmKG5wLT5ybl9tdGltZSkpOworICAgIG5wLT5y
bl9vd25zX2J1ZiA9IHRydWU7CisKKyAgICByZXR1cm4gbnA7Cit9CisKK3ZvaWQKK3JhbWZzX2Zy
ZWVfbm9kZShzdHJ1Y3QgcmFtZnNfbm9kZSAqbnApCit7CisgICAgaWYgKG5wLT5ybl9idWYgIT0g
TlVMTCAmJiBucC0+cm5fb3duc19idWYpCisgICAgICAgIGZyZWUobnAtPnJuX2J1Zik7CisKKyAg
ICBmcmVlKG5wLT5ybl9uYW1lKTsKKyAgICBmcmVlKG5wKTsKK30KKworc3RhdGljIHN0cnVjdCBy
YW1mc19ub2RlICoKK3JhbWZzX2FkZF9ub2RlKHN0cnVjdCByYW1mc19ub2RlICpkbnAsIGNoYXIg
Km5hbWUsIGludCB0eXBlKQoreworICAgIHN0cnVjdCByYW1mc19ub2RlICpucCwgKnByZXY7CisK
KyAgICBucCA9IHJhbWZzX2FsbG9jYXRlX25vZGUobmFtZSwgdHlwZSk7CisgICAgaWYgKG5wID09
IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgbXV0ZXhfbG9jaygmcmFtZnNfbG9j
ayk7CisKKyAgICAvKiBMaW5rIHRvIHRoZSBkaXJlY3RvcnkgbGlzdCAqLworICAgIGlmIChkbnAt
PnJuX2NoaWxkID09IE5VTEwpIHsKKyAgICAgICAgZG5wLT5ybl9jaGlsZCA9IG5wOworICAgIH0g
ZWxzZSB7CisgICAgICAgIHByZXYgPSBkbnAtPnJuX2NoaWxkOworICAgICAgICB3aGlsZSAocHJl
di0+cm5fbmV4dCAhPSBOVUxMKQorICAgICAgICAgICAgcHJldiA9IHByZXYtPnJuX25leHQ7Cisg
ICAgICAgIHByZXYtPnJuX25leHQgPSBucDsKKyAgICB9CisKKyAgICBzZXRfdGltZXNfdG9fbm93
KCYoZG5wLT5ybl9tdGltZSksICYoZG5wLT5ybl9jdGltZSkpOworCisgICAgbXV0ZXhfdW5sb2Nr
KCZyYW1mc19sb2NrKTsKKyAgICByZXR1cm4gbnA7Cit9CisKK3N0YXRpYyBpbnQKK3JhbWZzX3Jl
bW92ZV9ub2RlKHN0cnVjdCByYW1mc19ub2RlICpkbnAsIHN0cnVjdCByYW1mc19ub2RlICpucCkK
K3sKKyAgICBzdHJ1Y3QgcmFtZnNfbm9kZSAqcHJldjsKKworICAgIGlmIChkbnAtPnJuX2NoaWxk
ID09IE5VTEwpCisgICAgICAgIHJldHVybiBFQlVTWTsKKworICAgIG11dGV4X2xvY2soJnJhbWZz
X2xvY2spOworCisgICAgLyogVW5saW5rIGZyb20gdGhlIGRpcmVjdG9yeSBsaXN0ICovCisgICAg
aWYgKGRucC0+cm5fY2hpbGQgPT0gbnApIHsKKyAgICAgICAgZG5wLT5ybl9jaGlsZCA9IG5wLT5y
bl9uZXh0OworICAgIH0gZWxzZSB7CisgICAgICAgIGZvciAocHJldiA9IGRucC0+cm5fY2hpbGQ7
IHByZXYtPnJuX25leHQgIT0gbnA7CisgICAgICAgICAgICAgcHJldiA9IHByZXYtPnJuX25leHQp
IHsKKyAgICAgICAgICAgIGlmIChwcmV2LT5ybl9uZXh0ID09IE5VTEwpIHsKKyAgICAgICAgICAg
ICAgICBtdXRleF91bmxvY2soJnJhbWZzX2xvY2spOworICAgICAgICAgICAgICAgIHJldHVybiBF
Tk9FTlQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcHJldi0+cm5fbmV4dCA9
IG5wLT5ybl9uZXh0OworICAgIH0KKyAgICByYW1mc19mcmVlX25vZGUobnApOworCisgICAgc2V0
X3RpbWVzX3RvX25vdygmKGRucC0+cm5fbXRpbWUpLCAmKGRucC0+cm5fY3RpbWUpKTsKKworICAg
IG11dGV4X3VubG9jaygmcmFtZnNfbG9jayk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBp
bnQKK3JhbWZzX3JlbmFtZV9ub2RlKHN0cnVjdCByYW1mc19ub2RlICpucCwgY2hhciAqbmFtZSkK
K3sKKyAgICBzaXplX3QgbGVuOworICAgIGNoYXIgKnRtcDsKKworICAgIGxlbiA9IHN0cmxlbihu
YW1lKTsKKyAgICBpZiAobGVuID4gTkFNRV9NQVgpIHsKKyAgICAgICAgcmV0dXJuIEVOQU1FVE9P
TE9ORzsKKyAgICB9CisgICAgaWYgKGxlbiA8PSBucC0+cm5fbmFtZWxlbikgeworICAgICAgICAv
KiBSZXVzZSBjdXJyZW50IG5hbWUgYnVmZmVyICovCisgICAgICAgIHN0cmxjcHkobnAtPnJuX25h
bWUsIG5hbWUsIG5wLT5ybl9uYW1lbGVuICsgMSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLyog
RXhwYW5kIG5hbWUgYnVmZmVyICovCisgICAgICAgIHRtcCA9IChjaGFyICopIG1hbGxvYyhsZW4g
KyAxKTsKKyAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIEVOT01F
TTsKKyAgICAgICAgc3RybGNweSh0bXAsIG5hbWUsIGxlbiArIDEpOworICAgICAgICBmcmVlKG5w
LT5ybl9uYW1lKTsKKyAgICAgICAgbnAtPnJuX25hbWUgPSB0bXA7CisgICAgfQorICAgIG5wLT5y
bl9uYW1lbGVuID0gbGVuOworICAgIHNldF90aW1lc190b19ub3coJihucC0+cm5fY3RpbWUpKTsK
KyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorcmFtZnNfbG9va3VwKHN0cnVjdCB2bm9k
ZSAqZHZwLCBjaGFyICpuYW1lLCBzdHJ1Y3Qgdm5vZGUgKip2cHApCit7CisgICAgc3RydWN0IHJh
bWZzX25vZGUgKm5wLCAqZG5wOworICAgIHN0cnVjdCB2bm9kZSAqdnA7CisgICAgc2l6ZV90IGxl
bjsKKyAgICBpbnQgZm91bmQ7CisKKyAgICAqdnBwID0gTlVMTDsKKworICAgIGlmICgqbmFtZSA9
PSAnXDAnKQorICAgICAgICByZXR1cm4gRU5PRU5UOworCisgICAgbXV0ZXhfbG9jaygmcmFtZnNf
bG9jayk7CisKKyAgICBsZW4gPSBzdHJsZW4obmFtZSk7CisgICAgZG5wID0gKHJhbWZzX25vZGUg
KikgZHZwLT52X2RhdGE7CisgICAgZm91bmQgPSAwOworICAgIGZvciAobnAgPSBkbnAtPnJuX2No
aWxkOyBucCAhPSBOVUxMOyBucCA9IG5wLT5ybl9uZXh0KSB7CisgICAgICAgIGlmIChucC0+cm5f
bmFtZWxlbiA9PSBsZW4gJiYKKyAgICAgICAgICAgIG1lbWNtcChuYW1lLCBucC0+cm5fbmFtZSwg
bGVuKSA9PSAwKSB7CisgICAgICAgICAgICBmb3VuZCA9IDE7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoZm91bmQgPT0gMCkgeworICAgICAgICBtdXRleF91
bmxvY2soJnJhbWZzX2xvY2spOworICAgICAgICByZXR1cm4gRU5PRU5UOworICAgIH0KKyAgICBp
ZiAodmdldChkdnAtPnZfbW91bnQsIGlub2RlX2NvdW50KyssICZ2cCkpIHsKKyAgICAgICAgLyog
Zm91bmQgaW4gY2FjaGUgKi8KKyAgICAgICAgKnZwcCA9IHZwOworICAgICAgICBtdXRleF91bmxv
Y2soJnJhbWZzX2xvY2spOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgaWYgKCF2cCkg
eworICAgICAgICBtdXRleF91bmxvY2soJnJhbWZzX2xvY2spOworICAgICAgICByZXR1cm4gRU5P
TUVNOworICAgIH0KKyAgICB2cC0+dl9kYXRhID0gbnA7CisgICAgdnAtPnZfbW9kZSA9IEFMTFBF
Uk1TOworICAgIHZwLT52X3R5cGUgPSBucC0+cm5fdHlwZTsKKyAgICB2cC0+dl9zaXplID0gbnAt
PnJuX3NpemU7CisKKyAgICBtdXRleF91bmxvY2soJnJhbWZzX2xvY2spOworCisgICAgKnZwcCA9
IHZwOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK3JhbWZzX21rZGlyKHN0cnVj
dCB2bm9kZSAqZHZwLCBjaGFyICpuYW1lLCBtb2RlX3QgbW9kZSkKK3sKKyAgICBzdHJ1Y3QgcmFt
ZnNfbm9kZSAqbnA7CisKKyAgICBEUFJJTlRGKCgibWtkaXIgJXNcbiIsIG5hbWUpKTsKKyAgICBp
ZiAoc3RybGVuKG5hbWUpID4gTkFNRV9NQVgpIHsKKyAgICAgICAgcmV0dXJuIEVOQU1FVE9PTE9O
RzsKKyAgICB9CisKKyAgICBpZiAoIVNfSVNESVIobW9kZSkpCisgICAgICAgIHJldHVybiBFSU5W
QUw7CisKKyAgICBucCA9IChyYW1mc19ub2RlICopIHJhbWZzX2FkZF9ub2RlKChyYW1mc19ub2Rl
ICopIGR2cC0+dl9kYXRhLCBuYW1lLCBWRElSKTsKKyAgICBpZiAobnAgPT0gTlVMTCkKKyAgICAg
ICAgcmV0dXJuIEVOT01FTTsKKyAgICBucC0+cm5fc2l6ZSA9IDA7CisKKyAgICByZXR1cm4gMDsK
K30KKworc3RhdGljIGludAorcmFtZnNfc3ltbGluayhzdHJ1Y3Qgdm5vZGUgKmR2cCwgY2hhciAq
bmFtZSwgY2hhciAqbGluaykKK3sKKyAgICBpZiAoc3RybGVuKG5hbWUpID4gTkFNRV9NQVgpIHsK
KyAgICAgICAgcmV0dXJuIEVOQU1FVE9PTE9ORzsKKyAgICB9CisgICAgYXV0byBucCA9IHJhbWZz
X2FkZF9ub2RlKChyYW1mc19ub2RlICopIGR2cC0+dl9kYXRhLCBuYW1lLCBWTE5LKTsKKyAgICBp
ZiAobnAgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIEVOT01FTTsKKyAgICAvLyBTYXZlIHRoZSBs
aW5rIHRhcmdldCB3aXRob3V0IHRoZSBmaW5hbCBudWxsLCBhcyByZWFkbGluaygpIHdhbnRzIGl0
LgorICAgIHNpemVfdCBsZW4gPSBzdHJsZW4obGluayk7CisgICAgbnAtPnJuX2J1ZiA9IHN0cm5k
dXAobGluaywgbGVuKTsKKyAgICBucC0+cm5fYnVmc2l6ZSA9IG5wLT5ybl9zaXplID0gbGVuOwor
CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK3JhbWZzX3JlYWRsaW5rKHN0cnVjdCB2
bm9kZSAqdnAsIHN0cnVjdCB1aW8gKnVpbykKK3sKKyAgICBzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAg
PSAocmFtZnNfbm9kZSAqKSB2cC0+dl9kYXRhOworICAgIHNpemVfdCBsZW47CisKKyAgICBpZiAo
dnAtPnZfdHlwZSAhPSBWTE5LKSB7CisgICAgICAgIHJldHVybiBFSU5WQUw7CisgICAgfQorICAg
IGlmICh1aW8tPnVpb19vZmZzZXQgPCAwKSB7CisgICAgICAgIHJldHVybiBFSU5WQUw7CisgICAg
fQorICAgIGlmICh1aW8tPnVpb19yZXNpZCA9PSAwKSB7CisgICAgICAgIHJldHVybiAwOworICAg
IH0KKyAgICBpZiAodWlvLT51aW9fb2Zmc2V0ID49IChvZmZfdCkgdnAtPnZfc2l6ZSkKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgaWYgKHZwLT52X3NpemUgLSB1aW8tPnVpb19vZmZzZXQgPCB1aW8t
PnVpb19yZXNpZCkKKyAgICAgICAgbGVuID0gdnAtPnZfc2l6ZSAtIHVpby0+dWlvX29mZnNldDsK
KyAgICBlbHNlCisgICAgICAgIGxlbiA9IHVpby0+dWlvX3Jlc2lkOworCisgICAgc2V0X3RpbWVz
X3RvX25vdyggJihucC0+cm5fYXRpbWUpKTsKKyAgICByZXR1cm4gdWlvbW92ZShucC0+cm5fYnVm
ICsgdWlvLT51aW9fb2Zmc2V0LCBsZW4sIHVpbyk7Cit9CisKKy8qIFJlbW92ZSBhIGRpcmVjdG9y
eSAqLworc3RhdGljIGludAorcmFtZnNfcm1kaXIoc3RydWN0IHZub2RlICpkdnAsIHN0cnVjdCB2
bm9kZSAqdnAsIGNoYXIgKm5hbWUpCit7CisgICAgcmV0dXJuIHJhbWZzX3JlbW92ZV9ub2RlKChy
YW1mc19ub2RlICopIGR2cC0+dl9kYXRhLCAocmFtZnNfbm9kZSAqKSB2cC0+dl9kYXRhKTsKK30K
KworLyogUmVtb3ZlIGEgZmlsZSAqLworc3RhdGljIGludAorcmFtZnNfcmVtb3ZlKHN0cnVjdCB2
bm9kZSAqZHZwLCBzdHJ1Y3Qgdm5vZGUgKnZwLCBjaGFyICpuYW1lKQoreworICAgIERQUklOVEYo
KCJyZW1vdmUgJXMgaW4gJXNcbiIsIG5hbWUsIGR2cC0+dl9wYXRoKSk7CisgICAgcmV0dXJuIHJh
bWZzX3JlbW92ZV9ub2RlKChyYW1mc19ub2RlICopIGR2cC0+dl9kYXRhLCAocmFtZnNfbm9kZSAq
KSB2cC0+dl9kYXRhKTsKK30KKworLyogVHJ1bmNhdGUgZmlsZSAqLworc3RhdGljIGludAorcmFt
ZnNfdHJ1bmNhdGUoc3RydWN0IHZub2RlICp2cCwgb2ZmX3QgbGVuZ3RoKQoreworICAgIHN0cnVj
dCByYW1mc19ub2RlICpucDsKKyAgICB2b2lkICpuZXdfYnVmOworICAgIHNpemVfdCBuZXdfc2l6
ZTsKKworICAgIERQUklOVEYoKCJ0cnVuY2F0ZSAlcyBsZW5ndGg9JWRcbiIsIHZwLT52X3BhdGgs
IGxlbmd0aCkpOworICAgIG5wID0gKHJhbWZzX25vZGUgKikgdnAtPnZfZGF0YTsKKworICAgIGlm
IChsZW5ndGggPT0gMCkgeworICAgICAgICBpZiAobnAtPnJuX2J1ZiAhPSBOVUxMKSB7CisgICAg
ICAgICAgICBpZihucC0+cm5fb3duc19idWYpCisgICAgICAgICAgICAgICAgZnJlZShucC0+cm5f
YnVmKTsKKyAgICAgICAgICAgIG5wLT5ybl9idWYgPSBOVUxMOworICAgICAgICAgICAgbnAtPnJu
X2J1ZnNpemUgPSAwOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChzaXplX3QobGVuZ3RoKSA+
IG5wLT5ybl9idWZzaXplKSB7CisgICAgICAgIC8vIFhYWDogdGhpcyBjb3VsZCB1c2UgYSBwYWdl
IGxldmVsIGFsbG9jYXRvcgorICAgICAgICBuZXdfc2l6ZSA9IHJvdW5kX3BhZ2UobGVuZ3RoKTsK
KyAgICAgICAgbmV3X2J1ZiA9IG1hbGxvYyhuZXdfc2l6ZSk7CisgICAgICAgIGlmICghbmV3X2J1
ZikKKyAgICAgICAgICAgIHJldHVybiBFSU87CisgICAgICAgIGlmIChucC0+cm5fc2l6ZSAhPSAw
KSB7CisgICAgICAgICAgICBtZW1jcHkobmV3X2J1ZiwgbnAtPnJuX2J1ZiwgdnAtPnZfc2l6ZSk7
CisgICAgICAgICAgICBpZihucC0+cm5fb3duc19idWYpCisgICAgICAgICAgICAgICAgZnJlZShu
cC0+cm5fYnVmKTsKKyAgICAgICAgfQorICAgICAgICBucC0+cm5fYnVmID0gKGNoYXIgKikgbmV3
X2J1ZjsKKyAgICAgICAgbnAtPnJuX2J1ZnNpemUgPSBuZXdfc2l6ZTsKKyAgICAgICAgbnAtPnJu
X293bnNfYnVmID0gdHJ1ZTsKKyAgICB9CisgICAgbnAtPnJuX3NpemUgPSBsZW5ndGg7CisgICAg
dnAtPnZfc2l6ZSA9IGxlbmd0aDsKKyAgICBzZXRfdGltZXNfdG9fbm93KCYobnAtPnJuX210aW1l
KSwgJihucC0+cm5fY3RpbWUpKTsKKyAgICByZXR1cm4gMDsKK30KKworLyoKKyAqIENyZWF0ZSBl
bXB0eSBmaWxlLgorICovCitzdGF0aWMgaW50CityYW1mc19jcmVhdGUoc3RydWN0IHZub2RlICpk
dnAsIGNoYXIgKm5hbWUsIG1vZGVfdCBtb2RlKQoreworICAgIHN0cnVjdCByYW1mc19ub2RlICpu
cDsKKworICAgIGlmIChzdHJsZW4obmFtZSkgPiBOQU1FX01BWCkgeworICAgICAgICByZXR1cm4g
RU5BTUVUT09MT05HOworICAgIH0KKworICAgIERQUklOVEYoKCJjcmVhdGUgJXMgaW4gJXNcbiIs
IG5hbWUsIGR2cC0+dl9wYXRoKSk7CisgICAgaWYgKCFTX0lTUkVHKG1vZGUpKQorICAgICAgICBy
ZXR1cm4gRUlOVkFMOworCisgICAgbnAgPSByYW1mc19hZGRfbm9kZSgocmFtZnNfbm9kZSAqKSBk
dnAtPnZfZGF0YSwgbmFtZSwgVlJFRyk7CisgICAgaWYgKG5wID09IE5VTEwpCisgICAgICAgIHJl
dHVybiBFTk9NRU07CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK3JhbWZzX3JlYWQo
c3RydWN0IHZub2RlICp2cCwgc3RydWN0IGZpbGUgKmZwLCBzdHJ1Y3QgdWlvICp1aW8sIGludCBp
b2ZsYWcpCit7CisgICAgc3RydWN0IHJhbWZzX25vZGUgKm5wID0gKHJhbWZzX25vZGUgKikgdnAt
PnZfZGF0YTsKKyAgICBzaXplX3QgbGVuOworCisgICAgaWYgKHZwLT52X3R5cGUgPT0gVkRJUikg
eworICAgICAgICByZXR1cm4gRUlTRElSOworICAgIH0KKyAgICBpZiAodnAtPnZfdHlwZSAhPSBW
UkVHKSB7CisgICAgICAgIHJldHVybiBFSU5WQUw7CisgICAgfQorICAgIGlmICh1aW8tPnVpb19v
ZmZzZXQgPCAwKSB7CisgICAgICAgIHJldHVybiBFSU5WQUw7CisgICAgfQorICAgIGlmICh1aW8t
PnVpb19yZXNpZCA9PSAwKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGlmICh1
aW8tPnVpb19vZmZzZXQgPj0gKG9mZl90KSB2cC0+dl9zaXplKQorICAgICAgICByZXR1cm4gMDsK
KworICAgIGlmICh2cC0+dl9zaXplIC0gdWlvLT51aW9fb2Zmc2V0IDwgdWlvLT51aW9fcmVzaWQp
CisgICAgICAgIGxlbiA9IHZwLT52X3NpemUgLSB1aW8tPnVpb19vZmZzZXQ7CisgICAgZWxzZQor
ICAgICAgICBsZW4gPSB1aW8tPnVpb19yZXNpZDsKKworICAgIHNldF90aW1lc190b19ub3coJihu
cC0+cm5fYXRpbWUpKTsKKworICAgIHJldHVybiB1aW9tb3ZlKG5wLT5ybl9idWYgKyB1aW8tPnVp
b19vZmZzZXQsIGxlbiwgdWlvKTsKK30KKworaW50CityYW1mc19zZXRfZmlsZV9kYXRhKHN0cnVj
dCB2bm9kZSAqdnAsIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBzaXplKQoreworICAgIHN0cnVj
dCByYW1mc19ub2RlICpucCA9IChyYW1mc19ub2RlICopIHZwLT52X2RhdGE7CisKKyAgICBpZiAo
dnAtPnZfdHlwZSA9PSBWRElSKSB7CisgICAgICAgIHJldHVybiBFSVNESVI7CisgICAgfQorICAg
IGlmICh2cC0+dl90eXBlICE9IFZSRUcpIHsKKyAgICAgICAgcmV0dXJuIEVJTlZBTDsKKyAgICB9
CisgICAgaWYgKG5wLT5ybl9idWYpIHsKKyAgICAgICAgcmV0dXJuIEVJTlZBTDsKKyAgICB9CisK
KyAgICBucC0+cm5fYnVmID0gKGNoYXIgKikgZGF0YTsKKyAgICBucC0+cm5fYnVmc2l6ZSA9IHNp
emU7CisgICAgbnAtPnJuX3NpemUgPSBzaXplOworICAgIHZwLT52X3NpemUgPSBzaXplOworICAg
IG5wLT5ybl9vd25zX2J1ZiA9IGZhbHNlOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBp
bnQKK3JhbWZzX3dyaXRlKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCB1aW8gKnVpbywgaW50IGlv
ZmxhZykKK3sKKyAgICBzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSAocmFtZnNfbm9kZSAqKSB2cC0+
dl9kYXRhOworCisgICAgaWYgKHZwLT52X3R5cGUgPT0gVkRJUikgeworICAgICAgICByZXR1cm4g
RUlTRElSOworICAgIH0KKyAgICBpZiAodnAtPnZfdHlwZSAhPSBWUkVHKSB7CisgICAgICAgIHJl
dHVybiBFSU5WQUw7CisgICAgfQorICAgIGlmICh1aW8tPnVpb19vZmZzZXQgPCAwKSB7CisgICAg
ICAgIHJldHVybiBFSU5WQUw7CisgICAgfQorICAgIGlmICh1aW8tPnVpb19vZmZzZXQgPj0gTE9O
R19NQVgpIHsKKyAgICAgICAgcmV0dXJuIEVGQklHOworICAgIH0KKyAgICBpZiAodWlvLT51aW9f
cmVzaWQgPT0gMCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpZiAoaW9mbGFn
ICYgSU9fQVBQRU5EKQorICAgICAgICB1aW8tPnVpb19vZmZzZXQgPSBucC0+cm5fc2l6ZTsKKwor
ICAgIGlmIChzaXplX3QodWlvLT51aW9fb2Zmc2V0ICsgdWlvLT51aW9fcmVzaWQpID4gKHNpemVf
dCkgdnAtPnZfc2l6ZSkgeworICAgICAgICAvKiBFeHBhbmQgdGhlIGZpbGUgc2l6ZSBiZWZvcmUg
d3JpdGluZyB0byBpdCAqLworICAgICAgICBvZmZfdCBlbmRfcG9zID0gdWlvLT51aW9fb2Zmc2V0
ICsgdWlvLT51aW9fcmVzaWQ7CisgICAgICAgIGlmIChlbmRfcG9zID4gKG9mZl90KSBucC0+cm5f
YnVmc2l6ZSkgeworICAgICAgICAgICAgLy8gWFhYOiB0aGlzIGNvdWxkIHVzZSBhIHBhZ2UgbGV2
ZWwgYWxsb2NhdG9yCisgICAgICAgICAgICBzaXplX3QgbmV3X3NpemUgPSByb3VuZF9wYWdlKGVu
ZF9wb3MpOworICAgICAgICAgICAgdm9pZCAqbmV3X2J1ZiA9IG1hbGxvYyhuZXdfc2l6ZSk7Cisg
ICAgICAgICAgICBpZiAoIW5ld19idWYpCisgICAgICAgICAgICAgICAgcmV0dXJuIEVJTzsKKyAg
ICAgICAgICAgIGlmIChucC0+cm5fc2l6ZSAhPSAwKSB7CisgICAgICAgICAgICAgICAgbWVtY3B5
KG5ld19idWYsIG5wLT5ybl9idWYsIHZwLT52X3NpemUpOworICAgICAgICAgICAgICAgIGlmKG5w
LT5ybl9vd25zX2J1ZikKKyAgICAgICAgICAgICAgICAgICAgZnJlZShucC0+cm5fYnVmKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIG5wLT5ybl9idWYgPSAoY2hhciAqKSBuZXdfYnVmOwor
ICAgICAgICAgICAgbnAtPnJuX2J1ZnNpemUgPSBuZXdfc2l6ZTsKKyAgICAgICAgfQorICAgICAg
ICBucC0+cm5fc2l6ZSA9IGVuZF9wb3M7CisgICAgICAgIHZwLT52X3NpemUgPSBlbmRfcG9zOwor
ICAgICAgICBucC0+cm5fb3duc19idWYgPSB0cnVlOworICAgIH0KKworICAgIHNldF90aW1lc190
b19ub3coJihucC0+cm5fbXRpbWUpLCAmKG5wLT5ybl9jdGltZSkpOworICAgIHJldHVybiB1aW9t
b3ZlKG5wLT5ybl9idWYgKyB1aW8tPnVpb19vZmZzZXQsIHVpby0+dWlvX3Jlc2lkLCB1aW8pOwor
fQorCitzdGF0aWMgaW50CityYW1mc19yZW5hbWUoc3RydWN0IHZub2RlICpkdnAxLCBzdHJ1Y3Qg
dm5vZGUgKnZwMSwgY2hhciAqbmFtZTEsCisgICAgICAgICAgICAgc3RydWN0IHZub2RlICpkdnAy
LCBzdHJ1Y3Qgdm5vZGUgKnZwMiwgY2hhciAqbmFtZTIpCit7CisgICAgc3RydWN0IHJhbWZzX25v
ZGUgKm5wLCAqb2xkX25wOworICAgIGludCBlcnJvcjsKKworICAgIGlmICh2cDIpIHsKKyAgICAg
ICAgLyogUmVtb3ZlIGRlc3RpbmF0aW9uIGZpbGUsIGZpcnN0ICovCisgICAgICAgIGVycm9yID0g
cmFtZnNfcmVtb3ZlX25vZGUoKHJhbWZzX25vZGUgKikgZHZwMi0+dl9kYXRhLCAocmFtZnNfbm9k
ZSAqKSB2cDItPnZfZGF0YSk7CisgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgIHJldHVy
biBlcnJvcjsKKyAgICB9CisgICAgLyogU2FtZSBkaXJlY3RvcnkgPyAqLworICAgIGlmIChkdnAx
ID09IGR2cDIpIHsKKyAgICAgICAgLyogQ2hhbmdlIHRoZSBuYW1lIG9mIGV4aXN0aW5nIGZpbGUg
Ki8KKyAgICAgICAgZXJyb3IgPSByYW1mc19yZW5hbWVfbm9kZSgocmFtZnNfbm9kZSAqKSB2cDEt
PnZfZGF0YSwgbmFtZTIpOworICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICByZXR1cm4g
ZXJyb3I7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLyogQ3JlYXRlIG5ldyBmaWxlIG9yIGRpcmVj
dG9yeSAqLworICAgICAgICBvbGRfbnAgPSAocmFtZnNfbm9kZSAqKSB2cDEtPnZfZGF0YTsKKyAg
ICAgICAgbnAgPSByYW1mc19hZGRfbm9kZSgocmFtZnNfbm9kZSAqKSBkdnAyLT52X2RhdGEsIG5h
bWUyLCBvbGRfbnAtPnJuX3R5cGUpOworICAgICAgICBpZiAobnAgPT0gTlVMTCkKKyAgICAgICAg
ICAgIHJldHVybiBFTk9NRU07CisKKyAgICAgICAgaWYgKG9sZF9ucC0+cm5fYnVmKSB7CisgICAg
ICAgICAgICAvKiBDb3B5IGZpbGUgZGF0YSAqLworICAgICAgICAgICAgbnAtPnJuX2J1ZiA9IG9s
ZF9ucC0+cm5fYnVmOworICAgICAgICAgICAgbnAtPnJuX3NpemUgPSBvbGRfbnAtPnJuX3NpemU7
CisgICAgICAgICAgICBucC0+cm5fYnVmc2l6ZSA9IG9sZF9ucC0+cm5fYnVmc2l6ZTsKKyAgICAg
ICAgICAgIG9sZF9ucC0+cm5fYnVmID0gTlVMTDsKKyAgICAgICAgfQorICAgICAgICAvKiBSZW1v
dmUgc291cmNlIGZpbGUgKi8KKyAgICAgICAgcmFtZnNfcmVtb3ZlX25vZGUoKHJhbWZzX25vZGUg
KikgZHZwMS0+dl9kYXRhLCAocmFtZnNfbm9kZSAqKSB2cDEtPnZfZGF0YSk7CisgICAgfQorICAg
IHJldHVybiAwOworfQorCisvKgorICogQHZwOiB2bm9kZSBvZiB0aGUgZGlyZWN0b3J5LgorICov
CitzdGF0aWMgaW50CityYW1mc19yZWFkZGlyKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCBmaWxl
ICpmcCwgc3RydWN0IGRpcmVudCAqZGlyKQoreworICAgIHN0cnVjdCByYW1mc19ub2RlICpucCwg
KmRucDsKKyAgICBpbnQgaTsKKworICAgIG11dGV4X2xvY2soJnJhbWZzX2xvY2spOworCisgICAg
c2V0X3RpbWVzX3RvX25vdygmKCgocmFtZnNfbm9kZSAqKSB2cC0+dl9kYXRhKS0+cm5fYXRpbWUp
KTsKKworICAgIGlmIChmcC0+Zl9vZmZzZXQgPT0gMCkgeworICAgICAgICBkaXItPmRfdHlwZSA9
IERUX0RJUjsKKyAgICAgICAgc3RybGNweSgoY2hhciAqKSAmZGlyLT5kX25hbWUsICIuIiwgc2l6
ZW9mKGRpci0+ZF9uYW1lKSk7CisgICAgfSBlbHNlIGlmIChmcC0+Zl9vZmZzZXQgPT0gMSkgewor
ICAgICAgICBkaXItPmRfdHlwZSA9IERUX0RJUjsKKyAgICAgICAgc3RybGNweSgoY2hhciAqKSAm
ZGlyLT5kX25hbWUsICIuLiIsIHNpemVvZihkaXItPmRfbmFtZSkpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIGRucCA9IChyYW1mc19ub2RlICopIHZwLT52X2RhdGE7CisgICAgICAgIG5wID0gZG5w
LT5ybl9jaGlsZDsKKyAgICAgICAgaWYgKG5wID09IE5VTEwpIHsKKyAgICAgICAgICAgIG11dGV4
X3VubG9jaygmcmFtZnNfbG9jayk7CisgICAgICAgICAgICByZXR1cm4gRU5PRU5UOworICAgICAg
ICB9CisKKyAgICAgICAgZm9yIChpID0gMDsgaSAhPSAoZnAtPmZfb2Zmc2V0IC0gMik7IGkrKykg
eworICAgICAgICAgICAgbnAgPSBucC0+cm5fbmV4dDsKKyAgICAgICAgICAgIGlmIChucCA9PSBO
VUxMKSB7CisgICAgICAgICAgICAgICAgbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gRU5PRU5UOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIGlmIChucC0+cm5fdHlwZSA9PSBWRElSKQorICAgICAgICAgICAgZGlyLT5kX3R5cGUgPSBE
VF9ESVI7CisgICAgICAgIGVsc2UgaWYgKG5wLT5ybl90eXBlID09IFZMTkspCisgICAgICAgICAg
ICBkaXItPmRfdHlwZSA9IERUX0xOSzsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZGlyLT5k
X3R5cGUgPSBEVF9SRUc7CisgICAgICAgIHN0cmxjcHkoKGNoYXIgKikgJmRpci0+ZF9uYW1lLCBu
cC0+cm5fbmFtZSwKKyAgICAgICAgICAgICAgICBzaXplb2YoZGlyLT5kX25hbWUpKTsKKyAgICB9
CisgICAgZGlyLT5kX2ZpbGVubyA9IGZwLT5mX29mZnNldDsKKy8vCWRpci0+ZF9uYW1lbGVuID0g
c3RybGVuKGRpci0+ZF9uYW1lKTsKKworICAgIGZwLT5mX29mZnNldCsrOworCisgICAgbXV0ZXhf
dW5sb2NrKCZyYW1mc19sb2NrKTsKKyAgICByZXR1cm4gMDsKK30KKworaW50CityYW1mc19pbml0
KHZvaWQpCit7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK3JhbWZzX2dldGF0dHIo
c3RydWN0IHZub2RlICp2bm9kZSwgc3RydWN0IHZhdHRyICphdHRyKQoreworICAgIGF0dHItPnZh
X25vZGVpZCA9IHZub2RlLT52X2lubzsKKyAgICBhdHRyLT52YV9zaXplID0gdm5vZGUtPnZfc2l6
ZTsKKworICAgIHN0cnVjdCByYW1mc19ub2RlICpucCA9IChyYW1mc19ub2RlICopIHZub2RlLT52
X2RhdGE7CisgICAgYXR0ci0+dmFfdHlwZSA9ICh2dHlwZSkgbnAtPnJuX3R5cGU7CisKKyAgICBt
ZW1jcHkoJihhdHRyLT52YV9hdGltZSksICYobnAtPnJuX2F0aW1lKSwgc2l6ZW9mKHN0cnVjdCB0
aW1lc3BlYykpOworICAgIG1lbWNweSgmKGF0dHItPnZhX2N0aW1lKSwgJihucC0+cm5fY3RpbWUp
LCBzaXplb2Yoc3RydWN0IHRpbWVzcGVjKSk7CisgICAgbWVtY3B5KCYoYXR0ci0+dmFfbXRpbWUp
LCAmKG5wLT5ybl9tdGltZSksIHNpemVvZihzdHJ1Y3QgdGltZXNwZWMpKTsKKworICAgIGF0dHIt
PnZhX21vZGUgPSBucC0+cm5fbW9kZTsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50
CityYW1mc19zZXRhdHRyKHN0cnVjdCB2bm9kZSAqdm5vZGUsIHN0cnVjdCB2YXR0ciAqYXR0cikg
eworICAgIHN0cnVjdCByYW1mc19ub2RlICpucCA9IChyYW1mc19ub2RlICopIHZub2RlLT52X2Rh
dGE7CisKKyAgICBpZiAoYXR0ci0+dmFfbWFzayAmIEFUX0FUSU1FKSB7CisgICAgICAgIG1lbWNw
eSgmKG5wLT5ybl9hdGltZSksICYoYXR0ci0+dmFfYXRpbWUpLCBzaXplb2Yoc3RydWN0IHRpbWVz
cGVjKSk7CisgICAgfQorCisgICAgaWYgKGF0dHItPnZhX21hc2sgJiBBVF9DVElNRSkgeworICAg
ICAgICBtZW1jcHkoJihucC0+cm5fY3RpbWUpLCAmKGF0dHItPnZhX2N0aW1lKSwgc2l6ZW9mKHN0
cnVjdCB0aW1lc3BlYykpOworICAgIH0KKworICAgIGlmIChhdHRyLT52YV9tYXNrICYgQVRfTVRJ
TUUpIHsKKyAgICAgICAgbWVtY3B5KCYobnAtPnJuX210aW1lKSwgJihhdHRyLT52YV9tdGltZSks
IHNpemVvZihzdHJ1Y3QgdGltZXNwZWMpKTsKKyAgICB9CisKKyAgICBpZiAoYXR0ci0+dmFfbWFz
ayAmIEFUX01PREUpIHsKKyAgICAgICAgbnAtPnJuX21vZGUgPSBhdHRyLT52YV9tb2RlOworICAg
IH0KKworICAgIHJldHVybiAwOworfQorCisjZGVmaW5lIHJhbWZzX29wZW4gICAgICAoKHZub3Bf
b3Blbl90KXZvcF9udWxsb3ApCisjZGVmaW5lIHJhbWZzX2Nsb3NlICAgICAoKHZub3BfY2xvc2Vf
dCl2b3BfbnVsbG9wKQorI2RlZmluZSByYW1mc19zZWVrICAgICAgKCh2bm9wX3NlZWtfdCl2b3Bf
bnVsbG9wKQorI2RlZmluZSByYW1mc19pb2N0bCAgICAgKCh2bm9wX2lvY3RsX3Qpdm9wX2VpbnZh
bCkKKyNkZWZpbmUgcmFtZnNfZnN5bmMgICAgICgodm5vcF9mc3luY190KXZvcF9udWxsb3ApCisj
ZGVmaW5lIHJhbWZzX2luYWN0aXZlICAoKHZub3BfaW5hY3RpdmVfdCl2b3BfbnVsbG9wKQorI2Rl
ZmluZSByYW1mc19saW5rICAgICAgKCh2bm9wX2xpbmtfdCl2b3BfZXBlcm0pCisjZGVmaW5lIHJh
bWZzX2ZhbGxvY2F0ZSAoKHZub3BfZmFsbG9jYXRlX3Qpdm9wX251bGxvcCkKKworLyoKKyAqIHZu
b2RlIG9wZXJhdGlvbnMKKyAqLworc3RydWN0IHZub3BzIHJhbWZzX3Zub3BzID0geworICAgICAg
ICByYW1mc19vcGVuLCAgICAgICAgICAgICAvKiBvcGVuICovCisgICAgICAgIHJhbWZzX2Nsb3Nl
LCAgICAgICAgICAgIC8qIGNsb3NlICovCisgICAgICAgIHJhbWZzX3JlYWQsICAgICAgICAgICAg
IC8qIHJlYWQgKi8KKyAgICAgICAgcmFtZnNfd3JpdGUsICAgICAgICAgICAgLyogd3JpdGUgKi8K
KyAgICAgICAgcmFtZnNfc2VlaywgICAgICAgICAgICAgLyogc2VlayAqLworICAgICAgICByYW1m
c19pb2N0bCwgICAgICAgICAgICAvKiBpb2N0bCAqLworICAgICAgICByYW1mc19mc3luYywgICAg
ICAgICAgICAvKiBmc3luYyAqLworICAgICAgICByYW1mc19yZWFkZGlyLCAgICAgICAgICAvKiBy
ZWFkZGlyICovCisgICAgICAgIHJhbWZzX2xvb2t1cCwgICAgICAgICAgIC8qIGxvb2t1cCAqLwor
ICAgICAgICByYW1mc19jcmVhdGUsICAgICAgICAgICAvKiBjcmVhdGUgKi8KKyAgICAgICAgcmFt
ZnNfcmVtb3ZlLCAgICAgICAgICAgLyogcmVtb3ZlICovCisgICAgICAgIHJhbWZzX3JlbmFtZSwg
ICAgICAgICAgIC8qIHJlbWFtZSAqLworICAgICAgICByYW1mc19ta2RpciwgICAgICAgICAgICAv
KiBta2RpciAqLworICAgICAgICByYW1mc19ybWRpciwgICAgICAgICAgICAvKiBybWRpciAqLwor
ICAgICAgICByYW1mc19nZXRhdHRyLCAgICAgICAgICAvKiBnZXRhdHRyICovCisgICAgICAgIHJh
bWZzX3NldGF0dHIsICAgICAgICAgIC8qIHNldGF0dHIgKi8KKyAgICAgICAgcmFtZnNfaW5hY3Rp
dmUsICAgICAgICAgLyogaW5hY3RpdmUgKi8KKyAgICAgICAgcmFtZnNfdHJ1bmNhdGUsICAgICAg
ICAgLyogdHJ1bmNhdGUgKi8KKyAgICAgICAgcmFtZnNfbGluaywgICAgICAgICAgICAgLyogbGlu
ayAqLworICAgICAgICAodm5vcF9jYWNoZV90KSBudWxscHRyLCAvKiBhcmMgKi8KKyAgICAgICAg
cmFtZnNfZmFsbG9jYXRlLCAgICAgICAgLyogZmFsbG9jYXRlICovCisgICAgICAgIHJhbWZzX3Jl
YWRsaW5rLCAgICAgICAgIC8qIHJlYWQgbGluayAqLworICAgICAgICByYW1mc19zeW1saW5rLCAg
ICAgICAgICAvKiBzeW1ib2xpYyBsaW5rICovCit9OworCi0tIAoyLjE5LjIKCgpfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGlu
ZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhl
bnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Feb 20 15:58:39 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 20 Feb 2019 15:58:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gwUGd-0006aj-CC; Wed, 20 Feb 2019 15:58:39 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=VbZN=Q3=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gwUGb-0006aO-S4
 for minios-devel@lists.xen.org; Wed, 20 Feb 2019 15:58:37 +0000
X-Inumbo-ID: 60aa56e2-3528-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 60aa56e2-3528-11e9-bc90-bc764e045a96;
 Wed, 20 Feb 2019 15:58:35 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 8B6BBF2039;
 Wed, 20 Feb 2019 16:58:34 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id sNEMk2V-2pfd; Wed, 20 Feb 2019 16:58:34 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 59416F2017
 for <minios-devel@lists.xen.org>; Wed, 20 Feb 2019 16:58:32 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Wed, 20 Feb 2019 16:58:32 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 20 Feb 2019 16:58:08 +0100
Message-ID: <20190220155812.29546-3-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190220155812.29546-1-yuri.volchkov@neclab.eu>
References: <20190220155812.29546-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v3 2/6] lib/ramfs: tabify imported
 ramfs code
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: simon.kuenzer@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VG8gY29tcGx5IHdpdGggVW5pa3JhZnQgY29kaW5nIHN0eWxlLCBpbmRlbnRzIG11c3QgYmUgdGFi
cywgbm90CnNwYWNlcy4gSW1wb3J0ZWQgY29kZSB3YXMgYSBtaXh0dXJlIG9mIGJvdGguCgpTaWdu
ZWQtb2ZmLWJ5OiBZdXJpIFZvbGNoa292IDx5dXJpLnZvbGNoa292QG5lY2xhYi5ldT4KUmV2aWV3
ZWQtYnk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1PgotLS0KIGxpYi9y
YW1mcy9yYW1mcy5oICAgICAgICB8ICAyNiArLQogbGliL3JhbWZzL3JhbWZzX3Zmc29wcy5jIHwg
IDMyICstCiBsaWIvcmFtZnMvcmFtZnNfdm5vcHMuYyAgfCA5MTYgKysrKysrKysrKysrKysrKysr
Ky0tLS0tLS0tLS0tLS0tLS0tLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDQ4NyBpbnNlcnRpb25zKCsp
LCA0ODcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliL3JhbWZzL3JhbWZzLmggYi9saWIv
cmFtZnMvcmFtZnMuaAppbmRleCA4OGNjYmU3Mi4uZTRlZWI2NWYgMTAwNjQ0Ci0tLSBhL2xpYi9y
YW1mcy9yYW1mcy5oCisrKyBiL2xpYi9yYW1mcy9yYW1mcy5oCkBAIC00NiwxOSArNDYsMTkgQEAK
ICAqIEZpbGUvZGlyZWN0b3J5IG5vZGUgZm9yIFJBTUZTCiAgKi8KIHN0cnVjdCByYW1mc19ub2Rl
IHsKLSAgICBzdHJ1Y3QgcmFtZnNfbm9kZSAqcm5fbmV4dDsgICAvKiBuZXh0IG5vZGUgaW4gdGhl
IHNhbWUgZGlyZWN0b3J5ICovCi0gICAgc3RydWN0IHJhbWZzX25vZGUgKnJuX2NoaWxkOyAgLyog
Zmlyc3QgY2hpbGQgbm9kZSAqLwotICAgIGludCBybl90eXBlOyAgICAvKiBmaWxlIG9yIGRpcmVj
dG9yeSAqLwotICAgIGNoYXIgKnJuX25hbWU7ICAgIC8qIG5hbWUgKG51bGwtdGVybWluYXRlZCkg
Ki8KLSAgICBzaXplX3Qgcm5fbmFtZWxlbjsgICAgLyogbGVuZ3RoIG9mIG5hbWUgbm90IGluY2x1
ZGluZyB0ZXJtaW5hdG9yICovCi0gICAgc2l6ZV90IHJuX3NpemU7ICAgIC8qIGZpbGUgc2l6ZSAq
LwotICAgIGNoYXIgKnJuX2J1ZjsgICAgLyogYnVmZmVyIHRvIHRoZSBmaWxlIGRhdGEgKi8KLSAg
ICBzaXplX3Qgcm5fYnVmc2l6ZTsgICAgLyogYWxsb2NhdGVkIGJ1ZmZlciBzaXplICovCi0gICAg
c3RydWN0IHRpbWVzcGVjIHJuX2N0aW1lOwotICAgIHN0cnVjdCB0aW1lc3BlYyBybl9hdGltZTsK
LSAgICBzdHJ1Y3QgdGltZXNwZWMgcm5fbXRpbWU7Ci0gICAgaW50IHJuX21vZGU7Ci0gICAgYm9v
bCBybl9vd25zX2J1ZjsKKwlzdHJ1Y3QgcmFtZnNfbm9kZSAqcm5fbmV4dDsgICAvKiBuZXh0IG5v
ZGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5ICovCisJc3RydWN0IHJhbWZzX25vZGUgKnJuX2NoaWxk
OyAgLyogZmlyc3QgY2hpbGQgbm9kZSAqLworCWludCBybl90eXBlOyAgICAvKiBmaWxlIG9yIGRp
cmVjdG9yeSAqLworCWNoYXIgKnJuX25hbWU7ICAgIC8qIG5hbWUgKG51bGwtdGVybWluYXRlZCkg
Ki8KKwlzaXplX3Qgcm5fbmFtZWxlbjsgICAgLyogbGVuZ3RoIG9mIG5hbWUgbm90IGluY2x1ZGlu
ZyB0ZXJtaW5hdG9yICovCisJc2l6ZV90IHJuX3NpemU7ICAgIC8qIGZpbGUgc2l6ZSAqLworCWNo
YXIgKnJuX2J1ZjsgICAgLyogYnVmZmVyIHRvIHRoZSBmaWxlIGRhdGEgKi8KKwlzaXplX3Qgcm5f
YnVmc2l6ZTsgICAgLyogYWxsb2NhdGVkIGJ1ZmZlciBzaXplICovCisJc3RydWN0IHRpbWVzcGVj
IHJuX2N0aW1lOworCXN0cnVjdCB0aW1lc3BlYyBybl9hdGltZTsKKwlzdHJ1Y3QgdGltZXNwZWMg
cm5fbXRpbWU7CisJaW50IHJuX21vZGU7CisJYm9vbCBybl9vd25zX2J1ZjsKIH07CiAKIHN0cnVj
dCByYW1mc19ub2RlICpyYW1mc19hbGxvY2F0ZV9ub2RlKGNvbnN0IGNoYXIgKm5hbWUsIGludCB0
eXBlKTsKZGlmZiAtLWdpdCBhL2xpYi9yYW1mcy9yYW1mc192ZnNvcHMuYyBiL2xpYi9yYW1mcy9y
YW1mc192ZnNvcHMuYwppbmRleCA3MmZlN2VkYi4uNTNhZTc1OGEgMTAwNjQ0Ci0tLSBhL2xpYi9y
YW1mcy9yYW1mc192ZnNvcHMuYworKysgYi9saWIvcmFtZnMvcmFtZnNfdmZzb3BzLmMKQEAgLTQ5
LDEyICs0OSwxMiBAQCBzdGF0aWMgaW50IHJhbWZzX3VubW91bnQoc3RydWN0IG1vdW50ICptcCwg
aW50IGZsYWdzKTsKICAqIEZpbGUgc3lzdGVtIG9wZXJhdGlvbnMKICAqLwogc3RydWN0IHZmc29w
cyByYW1mc192ZnNvcHMgPSB7Ci0gICAgICAgIHJhbWZzX21vdW50LCAgICAgICAvKiBtb3VudCAq
LwotICAgICAgICByYW1mc191bm1vdW50LCAgICAgLyogdW5tb3VudCAqLwotICAgICAgICByYW1m
c19zeW5jLCAgICAgICAgLyogc3luYyAqLwotICAgICAgICByYW1mc192Z2V0LCAgICAgICAgLyog
dmdldCAqLwotICAgICAgICByYW1mc19zdGF0ZnMsICAgICAgLyogc3RhdGZzICovCi0gICAgICAg
ICZyYW1mc192bm9wcywgICAgICAvKiB2bm9wcyAqLworCQlyYW1mc19tb3VudCwgICAgICAgLyog
bW91bnQgKi8KKwkJcmFtZnNfdW5tb3VudCwgICAgIC8qIHVubW91bnQgKi8KKwkJcmFtZnNfc3lu
YywgICAgICAgIC8qIHN5bmMgKi8KKwkJcmFtZnNfdmdldCwgICAgICAgIC8qIHZnZXQgKi8KKwkJ
cmFtZnNfc3RhdGZzLCAgICAgIC8qIHN0YXRmcyAqLworCQkmcmFtZnNfdm5vcHMsICAgICAgLyog
dm5vcHMgKi8KIH07CiAKIC8qCkBAIC02MywxNiArNjMsMTYgQEAgc3RydWN0IHZmc29wcyByYW1m
c192ZnNvcHMgPSB7CiBzdGF0aWMgaW50CiByYW1mc19tb3VudChzdHJ1Y3QgbW91bnQgKm1wLCBj
b25zdCBjaGFyICpkZXYsIGludCBmbGFncywgY29uc3Qgdm9pZCAqZGF0YSkKIHsKLSAgICBzdHJ1
Y3QgcmFtZnNfbm9kZSAqbnA7CisJc3RydWN0IHJhbWZzX25vZGUgKm5wOwogCi0gICAgRFBSSU5U
RigoInJhbWZzX21vdW50OiBkZXY9JXNcbiIsIGRldikpOworCURQUklOVEYoKCJyYW1mc19tb3Vu
dDogZGV2PSVzXG4iLCBkZXYpKTsKIAotICAgIC8qIENyZWF0ZSBhIHJvb3Qgbm9kZSAqLwotICAg
IG5wID0gcmFtZnNfYWxsb2NhdGVfbm9kZSgiLyIsIFZESVIpOwotICAgIGlmIChucCA9PSBOVUxM
KQotICAgICAgICByZXR1cm4gRU5PTUVNOwotICAgIG1wLT5tX3Jvb3QtPmRfdm5vZGUtPnZfZGF0
YSA9IG5wOwotICAgIHJldHVybiAwOworCS8qIENyZWF0ZSBhIHJvb3Qgbm9kZSAqLworCW5wID0g
cmFtZnNfYWxsb2NhdGVfbm9kZSgiLyIsIFZESVIpOworCWlmIChucCA9PSBOVUxMKQorCQlyZXR1
cm4gRU5PTUVNOworCW1wLT5tX3Jvb3QtPmRfdm5vZGUtPnZfZGF0YSA9IG5wOworCXJldHVybiAw
OwogfQogCiAvKgpAQCAtODUsNiArODUsNiBAQCByYW1mc19tb3VudChzdHJ1Y3QgbW91bnQgKm1w
LCBjb25zdCBjaGFyICpkZXYsIGludCBmbGFncywgY29uc3Qgdm9pZCAqZGF0YSkKIHN0YXRpYyBp
bnQKIHJhbWZzX3VubW91bnQoc3RydWN0IG1vdW50ICptcCwgaW50IGZsYWdzKQogewotICAgIHJl
bGVhc2VfbXBfZGVudHJpZXMobXApOwotICAgIHJldHVybiAwOworCXJlbGVhc2VfbXBfZGVudHJp
ZXMobXApOworCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvbGliL3JhbWZzL3JhbWZzX3Zub3Bz
LmMgYi9saWIvcmFtZnMvcmFtZnNfdm5vcHMuYwppbmRleCA5MjkxYTRlYy4uOGI1ODZmODggMTAw
NjQ0Ci0tLSBhL2xpYi9yYW1mcy9yYW1mc192bm9wcy5jCisrKyBiL2xpYi9yYW1mcy9yYW1mc192
bm9wcy5jCkBAIC01NCwzMTMgKzU0LDMxMyBAQCBzdGF0aWMgdWludDY0X3QgaW5vZGVfY291bnQg
PSAxOyAvKiBpbm9kZSAwIGlzIHJlc2VydmVkIHRvIHJvb3QgKi8KIHN0YXRpYyB2b2lkCiBzZXRf
dGltZXNfdG9fbm93KHN0cnVjdCB0aW1lc3BlYyAqdGltZTEsIHN0cnVjdCB0aW1lc3BlYyAqdGlt
ZTIgPSBudWxscHRyLCBzdHJ1Y3QgdGltZXNwZWMgKnRpbWUzID0gbnVsbHB0cikKIHsKLSAgICBz
dHJ1Y3QgdGltZXNwZWMgbm93OwotICAgIGNsb2NrX2dldHRpbWUoQ0xPQ0tfUkVBTFRJTUUsICZu
b3cpOwotICAgIGlmICh0aW1lMSkgewotICAgICAgICBtZW1jcHkodGltZTEsICZub3csIHNpemVv
ZihzdHJ1Y3QgdGltZXNwZWMpKTsKLSAgICB9Ci0gICAgaWYgKHRpbWUyKSB7Ci0gICAgICAgIG1l
bWNweSh0aW1lMiwgJm5vdywgc2l6ZW9mKHN0cnVjdCB0aW1lc3BlYykpOwotICAgIH0KLSAgICBp
ZiAodGltZTMpIHsKLSAgICAgICAgbWVtY3B5KHRpbWUzLCAmbm93LCBzaXplb2Yoc3RydWN0IHRp
bWVzcGVjKSk7Ci0gICAgfQorCXN0cnVjdCB0aW1lc3BlYyBub3c7CisJY2xvY2tfZ2V0dGltZShD
TE9DS19SRUFMVElNRSwgJm5vdyk7CisJaWYgKHRpbWUxKSB7CisJCW1lbWNweSh0aW1lMSwgJm5v
dywgc2l6ZW9mKHN0cnVjdCB0aW1lc3BlYykpOworCX0KKwlpZiAodGltZTIpIHsKKwkJbWVtY3B5
KHRpbWUyLCAmbm93LCBzaXplb2Yoc3RydWN0IHRpbWVzcGVjKSk7CisJfQorCWlmICh0aW1lMykg
eworCQltZW1jcHkodGltZTMsICZub3csIHNpemVvZihzdHJ1Y3QgdGltZXNwZWMpKTsKKwl9CiB9
CiAKIHN0cnVjdCByYW1mc19ub2RlICoKIHJhbWZzX2FsbG9jYXRlX25vZGUoY29uc3QgY2hhciAq
bmFtZSwgaW50IHR5cGUpCiB7Ci0gICAgc3RydWN0IHJhbWZzX25vZGUgKm5wOwotCi0gICAgbnAg
PSAocmFtZnNfbm9kZSAqKSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCByYW1mc19ub2RlKSk7Ci0gICAg
aWYgKG5wID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIG1lbXNldChucCwgMCwg
c2l6ZW9mKHN0cnVjdCByYW1mc19ub2RlKSk7Ci0KLSAgICBucC0+cm5fbmFtZWxlbiA9IHN0cmxl
bihuYW1lKTsKLSAgICBucC0+cm5fbmFtZSA9IChjaGFyICopIG1hbGxvYyhucC0+cm5fbmFtZWxl
biArIDEpOwotICAgIGlmIChucC0+cm5fbmFtZSA9PSBOVUxMKSB7Ci0gICAgICAgIGZyZWUobnAp
OwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgc3RybGNweShucC0+cm5fbmFtZSwg
bmFtZSwgbnAtPnJuX25hbWVsZW4gKyAxKTsKLSAgICBucC0+cm5fdHlwZSA9IHR5cGU7Ci0KLSAg
ICBpZiAodHlwZSA9PSBWRElSKQotICAgICAgICBucC0+cm5fbW9kZSA9IFNfSUZESVJ8MDc3NzsK
LSAgICBlbHNlIGlmICh0eXBlID09IFZMTkspCi0gICAgICAgIG5wLT5ybl9tb2RlID0gU19JRkxO
S3wwNzc3OwotICAgIGVsc2UKLSAgICAgICAgbnAtPnJuX21vZGUgPSBTX0lGUkVHfDA3Nzc7Ci0K
LSAgICBzZXRfdGltZXNfdG9fbm93KCYobnAtPnJuX2N0aW1lKSwgJihucC0+cm5fYXRpbWUpLCAm
KG5wLT5ybl9tdGltZSkpOwotICAgIG5wLT5ybl9vd25zX2J1ZiA9IHRydWU7Ci0KLSAgICByZXR1
cm4gbnA7CisJc3RydWN0IHJhbWZzX25vZGUgKm5wOworCisJbnAgPSAocmFtZnNfbm9kZSAqKSBt
YWxsb2Moc2l6ZW9mKHN0cnVjdCByYW1mc19ub2RlKSk7CisJaWYgKG5wID09IE5VTEwpCisJCXJl
dHVybiBOVUxMOworCW1lbXNldChucCwgMCwgc2l6ZW9mKHN0cnVjdCByYW1mc19ub2RlKSk7CisK
KwlucC0+cm5fbmFtZWxlbiA9IHN0cmxlbihuYW1lKTsKKwlucC0+cm5fbmFtZSA9IChjaGFyICop
IG1hbGxvYyhucC0+cm5fbmFtZWxlbiArIDEpOworCWlmIChucC0+cm5fbmFtZSA9PSBOVUxMKSB7
CisJCWZyZWUobnApOworCQlyZXR1cm4gTlVMTDsKKwl9CisJc3RybGNweShucC0+cm5fbmFtZSwg
bmFtZSwgbnAtPnJuX25hbWVsZW4gKyAxKTsKKwlucC0+cm5fdHlwZSA9IHR5cGU7CisKKwlpZiAo
dHlwZSA9PSBWRElSKQorCQlucC0+cm5fbW9kZSA9IFNfSUZESVJ8MDc3NzsKKwllbHNlIGlmICh0
eXBlID09IFZMTkspCisJCW5wLT5ybl9tb2RlID0gU19JRkxOS3wwNzc3OworCWVsc2UKKwkJbnAt
PnJuX21vZGUgPSBTX0lGUkVHfDA3Nzc7CisKKwlzZXRfdGltZXNfdG9fbm93KCYobnAtPnJuX2N0
aW1lKSwgJihucC0+cm5fYXRpbWUpLCAmKG5wLT5ybl9tdGltZSkpOworCW5wLT5ybl9vd25zX2J1
ZiA9IHRydWU7CisKKwlyZXR1cm4gbnA7CiB9CiAKIHZvaWQKIHJhbWZzX2ZyZWVfbm9kZShzdHJ1
Y3QgcmFtZnNfbm9kZSAqbnApCiB7Ci0gICAgaWYgKG5wLT5ybl9idWYgIT0gTlVMTCAmJiBucC0+
cm5fb3duc19idWYpCi0gICAgICAgIGZyZWUobnAtPnJuX2J1Zik7CisJaWYgKG5wLT5ybl9idWYg
IT0gTlVMTCAmJiBucC0+cm5fb3duc19idWYpCisJCWZyZWUobnAtPnJuX2J1Zik7CiAKLSAgICBm
cmVlKG5wLT5ybl9uYW1lKTsKLSAgICBmcmVlKG5wKTsKKwlmcmVlKG5wLT5ybl9uYW1lKTsKKwlm
cmVlKG5wKTsKIH0KIAogc3RhdGljIHN0cnVjdCByYW1mc19ub2RlICoKIHJhbWZzX2FkZF9ub2Rl
KHN0cnVjdCByYW1mc19ub2RlICpkbnAsIGNoYXIgKm5hbWUsIGludCB0eXBlKQogewotICAgIHN0
cnVjdCByYW1mc19ub2RlICpucCwgKnByZXY7CisJc3RydWN0IHJhbWZzX25vZGUgKm5wLCAqcHJl
djsKIAotICAgIG5wID0gcmFtZnNfYWxsb2NhdGVfbm9kZShuYW1lLCB0eXBlKTsKLSAgICBpZiAo
bnAgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisJbnAgPSByYW1mc19hbGxvY2F0ZV9u
b2RlKG5hbWUsIHR5cGUpOworCWlmIChucCA9PSBOVUxMKQorCQlyZXR1cm4gTlVMTDsKIAotICAg
IG11dGV4X2xvY2soJnJhbWZzX2xvY2spOworCW11dGV4X2xvY2soJnJhbWZzX2xvY2spOwogCi0g
ICAgLyogTGluayB0byB0aGUgZGlyZWN0b3J5IGxpc3QgKi8KLSAgICBpZiAoZG5wLT5ybl9jaGls
ZCA9PSBOVUxMKSB7Ci0gICAgICAgIGRucC0+cm5fY2hpbGQgPSBucDsKLSAgICB9IGVsc2Ugewot
ICAgICAgICBwcmV2ID0gZG5wLT5ybl9jaGlsZDsKLSAgICAgICAgd2hpbGUgKHByZXYtPnJuX25l
eHQgIT0gTlVMTCkKLSAgICAgICAgICAgIHByZXYgPSBwcmV2LT5ybl9uZXh0OwotICAgICAgICBw
cmV2LT5ybl9uZXh0ID0gbnA7Ci0gICAgfQorCS8qIExpbmsgdG8gdGhlIGRpcmVjdG9yeSBsaXN0
ICovCisJaWYgKGRucC0+cm5fY2hpbGQgPT0gTlVMTCkgeworCQlkbnAtPnJuX2NoaWxkID0gbnA7
CisJfSBlbHNlIHsKKwkJcHJldiA9IGRucC0+cm5fY2hpbGQ7CisJCXdoaWxlIChwcmV2LT5ybl9u
ZXh0ICE9IE5VTEwpCisJCQlwcmV2ID0gcHJldi0+cm5fbmV4dDsKKwkJcHJldi0+cm5fbmV4dCA9
IG5wOworCX0KIAotICAgIHNldF90aW1lc190b19ub3coJihkbnAtPnJuX210aW1lKSwgJihkbnAt
PnJuX2N0aW1lKSk7CisJc2V0X3RpbWVzX3RvX25vdygmKGRucC0+cm5fbXRpbWUpLCAmKGRucC0+
cm5fY3RpbWUpKTsKIAotICAgIG11dGV4X3VubG9jaygmcmFtZnNfbG9jayk7Ci0gICAgcmV0dXJu
IG5wOworCW11dGV4X3VubG9jaygmcmFtZnNfbG9jayk7CisJcmV0dXJuIG5wOwogfQogCiBzdGF0
aWMgaW50CiByYW1mc19yZW1vdmVfbm9kZShzdHJ1Y3QgcmFtZnNfbm9kZSAqZG5wLCBzdHJ1Y3Qg
cmFtZnNfbm9kZSAqbnApCiB7Ci0gICAgc3RydWN0IHJhbWZzX25vZGUgKnByZXY7Ci0KLSAgICBp
ZiAoZG5wLT5ybl9jaGlsZCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gRUJVU1k7Ci0KLSAgICBt
dXRleF9sb2NrKCZyYW1mc19sb2NrKTsKLQotICAgIC8qIFVubGluayBmcm9tIHRoZSBkaXJlY3Rv
cnkgbGlzdCAqLwotICAgIGlmIChkbnAtPnJuX2NoaWxkID09IG5wKSB7Ci0gICAgICAgIGRucC0+
cm5fY2hpbGQgPSBucC0+cm5fbmV4dDsKLSAgICB9IGVsc2UgewotICAgICAgICBmb3IgKHByZXYg
PSBkbnAtPnJuX2NoaWxkOyBwcmV2LT5ybl9uZXh0ICE9IG5wOwotICAgICAgICAgICAgIHByZXYg
PSBwcmV2LT5ybl9uZXh0KSB7Ci0gICAgICAgICAgICBpZiAocHJldi0+cm5fbmV4dCA9PSBOVUxM
KSB7Ci0gICAgICAgICAgICAgICAgbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gRU5PRU5UOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAg
IHByZXYtPnJuX25leHQgPSBucC0+cm5fbmV4dDsKLSAgICB9Ci0gICAgcmFtZnNfZnJlZV9ub2Rl
KG5wKTsKLQotICAgIHNldF90aW1lc190b19ub3coJihkbnAtPnJuX210aW1lKSwgJihkbnAtPnJu
X2N0aW1lKSk7Ci0KLSAgICBtdXRleF91bmxvY2soJnJhbWZzX2xvY2spOwotICAgIHJldHVybiAw
OworCXN0cnVjdCByYW1mc19ub2RlICpwcmV2OworCisJaWYgKGRucC0+cm5fY2hpbGQgPT0gTlVM
TCkKKwkJcmV0dXJuIEVCVVNZOworCisJbXV0ZXhfbG9jaygmcmFtZnNfbG9jayk7CisKKwkvKiBV
bmxpbmsgZnJvbSB0aGUgZGlyZWN0b3J5IGxpc3QgKi8KKwlpZiAoZG5wLT5ybl9jaGlsZCA9PSBu
cCkgeworCQlkbnAtPnJuX2NoaWxkID0gbnAtPnJuX25leHQ7CisJfSBlbHNlIHsKKwkJZm9yIChw
cmV2ID0gZG5wLT5ybl9jaGlsZDsgcHJldi0+cm5fbmV4dCAhPSBucDsKKwkJCSBwcmV2ID0gcHJl
di0+cm5fbmV4dCkgeworCQkJaWYgKHByZXYtPnJuX25leHQgPT0gTlVMTCkgeworCQkJCW11dGV4
X3VubG9jaygmcmFtZnNfbG9jayk7CisJCQkJcmV0dXJuIEVOT0VOVDsKKwkJCX0KKwkJfQorCQlw
cmV2LT5ybl9uZXh0ID0gbnAtPnJuX25leHQ7CisJfQorCXJhbWZzX2ZyZWVfbm9kZShucCk7CisK
KwlzZXRfdGltZXNfdG9fbm93KCYoZG5wLT5ybl9tdGltZSksICYoZG5wLT5ybl9jdGltZSkpOwor
CisJbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKKwlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGlu
dAogcmFtZnNfcmVuYW1lX25vZGUoc3RydWN0IHJhbWZzX25vZGUgKm5wLCBjaGFyICpuYW1lKQog
ewotICAgIHNpemVfdCBsZW47Ci0gICAgY2hhciAqdG1wOwotCi0gICAgbGVuID0gc3RybGVuKG5h
bWUpOwotICAgIGlmIChsZW4gPiBOQU1FX01BWCkgewotICAgICAgICByZXR1cm4gRU5BTUVUT09M
T05HOwotICAgIH0KLSAgICBpZiAobGVuIDw9IG5wLT5ybl9uYW1lbGVuKSB7Ci0gICAgICAgIC8q
IFJldXNlIGN1cnJlbnQgbmFtZSBidWZmZXIgKi8KLSAgICAgICAgc3RybGNweShucC0+cm5fbmFt
ZSwgbmFtZSwgbnAtPnJuX25hbWVsZW4gKyAxKTsKLSAgICB9IGVsc2UgewotICAgICAgICAvKiBF
eHBhbmQgbmFtZSBidWZmZXIgKi8KLSAgICAgICAgdG1wID0gKGNoYXIgKikgbWFsbG9jKGxlbiAr
IDEpOwotICAgICAgICBpZiAodG1wID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gRU5PTUVN
OwotICAgICAgICBzdHJsY3B5KHRtcCwgbmFtZSwgbGVuICsgMSk7Ci0gICAgICAgIGZyZWUobnAt
PnJuX25hbWUpOwotICAgICAgICBucC0+cm5fbmFtZSA9IHRtcDsKLSAgICB9Ci0gICAgbnAtPnJu
X25hbWVsZW4gPSBsZW47Ci0gICAgc2V0X3RpbWVzX3RvX25vdygmKG5wLT5ybl9jdGltZSkpOwot
ICAgIHJldHVybiAwOworCXNpemVfdCBsZW47CisJY2hhciAqdG1wOworCisJbGVuID0gc3RybGVu
KG5hbWUpOworCWlmIChsZW4gPiBOQU1FX01BWCkgeworCQlyZXR1cm4gRU5BTUVUT09MT05HOwor
CX0KKwlpZiAobGVuIDw9IG5wLT5ybl9uYW1lbGVuKSB7CisJCS8qIFJldXNlIGN1cnJlbnQgbmFt
ZSBidWZmZXIgKi8KKwkJc3RybGNweShucC0+cm5fbmFtZSwgbmFtZSwgbnAtPnJuX25hbWVsZW4g
KyAxKTsKKwl9IGVsc2UgeworCQkvKiBFeHBhbmQgbmFtZSBidWZmZXIgKi8KKwkJdG1wID0gKGNo
YXIgKikgbWFsbG9jKGxlbiArIDEpOworCQlpZiAodG1wID09IE5VTEwpCisJCQlyZXR1cm4gRU5P
TUVNOworCQlzdHJsY3B5KHRtcCwgbmFtZSwgbGVuICsgMSk7CisJCWZyZWUobnAtPnJuX25hbWUp
OworCQlucC0+cm5fbmFtZSA9IHRtcDsKKwl9CisJbnAtPnJuX25hbWVsZW4gPSBsZW47CisJc2V0
X3RpbWVzX3RvX25vdygmKG5wLT5ybl9jdGltZSkpOworCXJldHVybiAwOwogfQogCiBzdGF0aWMg
aW50CiByYW1mc19sb29rdXAoc3RydWN0IHZub2RlICpkdnAsIGNoYXIgKm5hbWUsIHN0cnVjdCB2
bm9kZSAqKnZwcCkKIHsKLSAgICBzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAsICpkbnA7Ci0gICAgc3Ry
dWN0IHZub2RlICp2cDsKLSAgICBzaXplX3QgbGVuOwotICAgIGludCBmb3VuZDsKLQotICAgICp2
cHAgPSBOVUxMOwotCi0gICAgaWYgKCpuYW1lID09ICdcMCcpCi0gICAgICAgIHJldHVybiBFTk9F
TlQ7Ci0KLSAgICBtdXRleF9sb2NrKCZyYW1mc19sb2NrKTsKLQotICAgIGxlbiA9IHN0cmxlbihu
YW1lKTsKLSAgICBkbnAgPSAocmFtZnNfbm9kZSAqKSBkdnAtPnZfZGF0YTsKLSAgICBmb3VuZCA9
IDA7Ci0gICAgZm9yIChucCA9IGRucC0+cm5fY2hpbGQ7IG5wICE9IE5VTEw7IG5wID0gbnAtPnJu
X25leHQpIHsKLSAgICAgICAgaWYgKG5wLT5ybl9uYW1lbGVuID09IGxlbiAmJgotICAgICAgICAg
ICAgbWVtY21wKG5hbWUsIG5wLT5ybl9uYW1lLCBsZW4pID09IDApIHsKLSAgICAgICAgICAgIGZv
dW5kID0gMTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmIChm
b3VuZCA9PSAwKSB7Ci0gICAgICAgIG11dGV4X3VubG9jaygmcmFtZnNfbG9jayk7Ci0gICAgICAg
IHJldHVybiBFTk9FTlQ7Ci0gICAgfQotICAgIGlmICh2Z2V0KGR2cC0+dl9tb3VudCwgaW5vZGVf
Y291bnQrKywgJnZwKSkgewotICAgICAgICAvKiBmb3VuZCBpbiBjYWNoZSAqLwotICAgICAgICAq
dnBwID0gdnA7Ci0gICAgICAgIG11dGV4X3VubG9jaygmcmFtZnNfbG9jayk7Ci0gICAgICAgIHJl
dHVybiAwOwotICAgIH0KLSAgICBpZiAoIXZwKSB7Ci0gICAgICAgIG11dGV4X3VubG9jaygmcmFt
ZnNfbG9jayk7Ci0gICAgICAgIHJldHVybiBFTk9NRU07Ci0gICAgfQotICAgIHZwLT52X2RhdGEg
PSBucDsKLSAgICB2cC0+dl9tb2RlID0gQUxMUEVSTVM7Ci0gICAgdnAtPnZfdHlwZSA9IG5wLT5y
bl90eXBlOwotICAgIHZwLT52X3NpemUgPSBucC0+cm5fc2l6ZTsKLQotICAgIG11dGV4X3VubG9j
aygmcmFtZnNfbG9jayk7Ci0KLSAgICAqdnBwID0gdnA7Ci0KLSAgICByZXR1cm4gMDsKKwlzdHJ1
Y3QgcmFtZnNfbm9kZSAqbnAsICpkbnA7CisJc3RydWN0IHZub2RlICp2cDsKKwlzaXplX3QgbGVu
OworCWludCBmb3VuZDsKKworCSp2cHAgPSBOVUxMOworCisJaWYgKCpuYW1lID09ICdcMCcpCisJ
CXJldHVybiBFTk9FTlQ7CisKKwltdXRleF9sb2NrKCZyYW1mc19sb2NrKTsKKworCWxlbiA9IHN0
cmxlbihuYW1lKTsKKwlkbnAgPSAocmFtZnNfbm9kZSAqKSBkdnAtPnZfZGF0YTsKKwlmb3VuZCA9
IDA7CisJZm9yIChucCA9IGRucC0+cm5fY2hpbGQ7IG5wICE9IE5VTEw7IG5wID0gbnAtPnJuX25l
eHQpIHsKKwkJaWYgKG5wLT5ybl9uYW1lbGVuID09IGxlbiAmJgorCQkJbWVtY21wKG5hbWUsIG5w
LT5ybl9uYW1lLCBsZW4pID09IDApIHsKKwkJCWZvdW5kID0gMTsKKwkJCWJyZWFrOworCQl9CisJ
fQorCWlmIChmb3VuZCA9PSAwKSB7CisJCW11dGV4X3VubG9jaygmcmFtZnNfbG9jayk7CisJCXJl
dHVybiBFTk9FTlQ7CisJfQorCWlmICh2Z2V0KGR2cC0+dl9tb3VudCwgaW5vZGVfY291bnQrKywg
JnZwKSkgeworCQkvKiBmb3VuZCBpbiBjYWNoZSAqLworCQkqdnBwID0gdnA7CisJCW11dGV4X3Vu
bG9jaygmcmFtZnNfbG9jayk7CisJCXJldHVybiAwOworCX0KKwlpZiAoIXZwKSB7CisJCW11dGV4
X3VubG9jaygmcmFtZnNfbG9jayk7CisJCXJldHVybiBFTk9NRU07CisJfQorCXZwLT52X2RhdGEg
PSBucDsKKwl2cC0+dl9tb2RlID0gQUxMUEVSTVM7CisJdnAtPnZfdHlwZSA9IG5wLT5ybl90eXBl
OworCXZwLT52X3NpemUgPSBucC0+cm5fc2l6ZTsKKworCW11dGV4X3VubG9jaygmcmFtZnNfbG9j
ayk7CisKKwkqdnBwID0gdnA7CisKKwlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGludAogcmFtZnNf
bWtkaXIoc3RydWN0IHZub2RlICpkdnAsIGNoYXIgKm5hbWUsIG1vZGVfdCBtb2RlKQogewotICAg
IHN0cnVjdCByYW1mc19ub2RlICpucDsKKwlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnA7CiAKLSAgICBE
UFJJTlRGKCgibWtkaXIgJXNcbiIsIG5hbWUpKTsKLSAgICBpZiAoc3RybGVuKG5hbWUpID4gTkFN
RV9NQVgpIHsKLSAgICAgICAgcmV0dXJuIEVOQU1FVE9PTE9ORzsKLSAgICB9CisJRFBSSU5URigo
Im1rZGlyICVzXG4iLCBuYW1lKSk7CisJaWYgKHN0cmxlbihuYW1lKSA+IE5BTUVfTUFYKSB7CisJ
CXJldHVybiBFTkFNRVRPT0xPTkc7CisJfQogCi0gICAgaWYgKCFTX0lTRElSKG1vZGUpKQotICAg
ICAgICByZXR1cm4gRUlOVkFMOworCWlmICghU19JU0RJUihtb2RlKSkKKwkJcmV0dXJuIEVJTlZB
TDsKIAotICAgIG5wID0gKHJhbWZzX25vZGUgKikgcmFtZnNfYWRkX25vZGUoKHJhbWZzX25vZGUg
KikgZHZwLT52X2RhdGEsIG5hbWUsIFZESVIpOwotICAgIGlmIChucCA9PSBOVUxMKQotICAgICAg
ICByZXR1cm4gRU5PTUVNOwotICAgIG5wLT5ybl9zaXplID0gMDsKKwlucCA9IChyYW1mc19ub2Rl
ICopIHJhbWZzX2FkZF9ub2RlKChyYW1mc19ub2RlICopIGR2cC0+dl9kYXRhLCBuYW1lLCBWRElS
KTsKKwlpZiAobnAgPT0gTlVMTCkKKwkJcmV0dXJuIEVOT01FTTsKKwlucC0+cm5fc2l6ZSA9IDA7
CiAKLSAgICByZXR1cm4gMDsKKwlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGludAogcmFtZnNfc3lt
bGluayhzdHJ1Y3Qgdm5vZGUgKmR2cCwgY2hhciAqbmFtZSwgY2hhciAqbGluaykKIHsKLSAgICBp
ZiAoc3RybGVuKG5hbWUpID4gTkFNRV9NQVgpIHsKLSAgICAgICAgcmV0dXJuIEVOQU1FVE9PTE9O
RzsKLSAgICB9Ci0gICAgYXV0byBucCA9IHJhbWZzX2FkZF9ub2RlKChyYW1mc19ub2RlICopIGR2
cC0+dl9kYXRhLCBuYW1lLCBWTE5LKTsKLSAgICBpZiAobnAgPT0gTlVMTCkKLSAgICAgICAgcmV0
dXJuIEVOT01FTTsKLSAgICAvLyBTYXZlIHRoZSBsaW5rIHRhcmdldCB3aXRob3V0IHRoZSBmaW5h
bCBudWxsLCBhcyByZWFkbGluaygpIHdhbnRzIGl0LgotICAgIHNpemVfdCBsZW4gPSBzdHJsZW4o
bGluayk7Ci0gICAgbnAtPnJuX2J1ZiA9IHN0cm5kdXAobGluaywgbGVuKTsKLSAgICBucC0+cm5f
YnVmc2l6ZSA9IG5wLT5ybl9zaXplID0gbGVuOwotCi0gICAgcmV0dXJuIDA7CisJaWYgKHN0cmxl
bihuYW1lKSA+IE5BTUVfTUFYKSB7CisJCXJldHVybiBFTkFNRVRPT0xPTkc7CisJfQorCWF1dG8g
bnAgPSByYW1mc19hZGRfbm9kZSgocmFtZnNfbm9kZSAqKSBkdnAtPnZfZGF0YSwgbmFtZSwgVkxO
Syk7CisJaWYgKG5wID09IE5VTEwpCisJCXJldHVybiBFTk9NRU07CisJLy8gU2F2ZSB0aGUgbGlu
ayB0YXJnZXQgd2l0aG91dCB0aGUgZmluYWwgbnVsbCwgYXMgcmVhZGxpbmsoKSB3YW50cyBpdC4K
KwlzaXplX3QgbGVuID0gc3RybGVuKGxpbmspOworCW5wLT5ybl9idWYgPSBzdHJuZHVwKGxpbmss
IGxlbik7CisJbnAtPnJuX2J1ZnNpemUgPSBucC0+cm5fc2l6ZSA9IGxlbjsKKworCXJldHVybiAw
OwogfQogCiBzdGF0aWMgaW50CiByYW1mc19yZWFkbGluayhzdHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1
Y3QgdWlvICp1aW8pCiB7Ci0gICAgc3RydWN0IHJhbWZzX25vZGUgKm5wID0gKHJhbWZzX25vZGUg
KikgdnAtPnZfZGF0YTsKLSAgICBzaXplX3QgbGVuOwotCi0gICAgaWYgKHZwLT52X3R5cGUgIT0g
VkxOSykgewotICAgICAgICByZXR1cm4gRUlOVkFMOwotICAgIH0KLSAgICBpZiAodWlvLT51aW9f
b2Zmc2V0IDwgMCkgewotICAgICAgICByZXR1cm4gRUlOVkFMOwotICAgIH0KLSAgICBpZiAodWlv
LT51aW9fcmVzaWQgPT0gMCkgewotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgaWYgKHVp
by0+dWlvX29mZnNldCA+PSAob2ZmX3QpIHZwLT52X3NpemUpCi0gICAgICAgIHJldHVybiAwOwot
ICAgIGlmICh2cC0+dl9zaXplIC0gdWlvLT51aW9fb2Zmc2V0IDwgdWlvLT51aW9fcmVzaWQpCi0g
ICAgICAgIGxlbiA9IHZwLT52X3NpemUgLSB1aW8tPnVpb19vZmZzZXQ7Ci0gICAgZWxzZQotICAg
ICAgICBsZW4gPSB1aW8tPnVpb19yZXNpZDsKLQotICAgIHNldF90aW1lc190b19ub3coICYobnAt
PnJuX2F0aW1lKSk7Ci0gICAgcmV0dXJuIHVpb21vdmUobnAtPnJuX2J1ZiArIHVpby0+dWlvX29m
ZnNldCwgbGVuLCB1aW8pOworCXN0cnVjdCByYW1mc19ub2RlICpucCA9IChyYW1mc19ub2RlICop
IHZwLT52X2RhdGE7CisJc2l6ZV90IGxlbjsKKworCWlmICh2cC0+dl90eXBlICE9IFZMTkspIHsK
KwkJcmV0dXJuIEVJTlZBTDsKKwl9CisJaWYgKHVpby0+dWlvX29mZnNldCA8IDApIHsKKwkJcmV0
dXJuIEVJTlZBTDsKKwl9CisJaWYgKHVpby0+dWlvX3Jlc2lkID09IDApIHsKKwkJcmV0dXJuIDA7
CisJfQorCWlmICh1aW8tPnVpb19vZmZzZXQgPj0gKG9mZl90KSB2cC0+dl9zaXplKQorCQlyZXR1
cm4gMDsKKwlpZiAodnAtPnZfc2l6ZSAtIHVpby0+dWlvX29mZnNldCA8IHVpby0+dWlvX3Jlc2lk
KQorCQlsZW4gPSB2cC0+dl9zaXplIC0gdWlvLT51aW9fb2Zmc2V0OworCWVsc2UKKwkJbGVuID0g
dWlvLT51aW9fcmVzaWQ7CisKKwlzZXRfdGltZXNfdG9fbm93KCAmKG5wLT5ybl9hdGltZSkpOwor
CXJldHVybiB1aW9tb3ZlKG5wLT5ybl9idWYgKyB1aW8tPnVpb19vZmZzZXQsIGxlbiwgdWlvKTsK
IH0KIAogLyogUmVtb3ZlIGEgZGlyZWN0b3J5ICovCiBzdGF0aWMgaW50CiByYW1mc19ybWRpcihz
dHJ1Y3Qgdm5vZGUgKmR2cCwgc3RydWN0IHZub2RlICp2cCwgY2hhciAqbmFtZSkKIHsKLSAgICBy
ZXR1cm4gcmFtZnNfcmVtb3ZlX25vZGUoKHJhbWZzX25vZGUgKikgZHZwLT52X2RhdGEsIChyYW1m
c19ub2RlICopIHZwLT52X2RhdGEpOworCXJldHVybiByYW1mc19yZW1vdmVfbm9kZSgocmFtZnNf
bm9kZSAqKSBkdnAtPnZfZGF0YSwgKHJhbWZzX25vZGUgKikgdnAtPnZfZGF0YSk7CiB9CiAKIC8q
IFJlbW92ZSBhIGZpbGUgKi8KIHN0YXRpYyBpbnQKIHJhbWZzX3JlbW92ZShzdHJ1Y3Qgdm5vZGUg
KmR2cCwgc3RydWN0IHZub2RlICp2cCwgY2hhciAqbmFtZSkKIHsKLSAgICBEUFJJTlRGKCgicmVt
b3ZlICVzIGluICVzXG4iLCBuYW1lLCBkdnAtPnZfcGF0aCkpOwotICAgIHJldHVybiByYW1mc19y
ZW1vdmVfbm9kZSgocmFtZnNfbm9kZSAqKSBkdnAtPnZfZGF0YSwgKHJhbWZzX25vZGUgKikgdnAt
PnZfZGF0YSk7CisJRFBSSU5URigoInJlbW92ZSAlcyBpbiAlc1xuIiwgbmFtZSwgZHZwLT52X3Bh
dGgpKTsKKwlyZXR1cm4gcmFtZnNfcmVtb3ZlX25vZGUoKHJhbWZzX25vZGUgKikgZHZwLT52X2Rh
dGEsIChyYW1mc19ub2RlICopIHZwLT52X2RhdGEpOwogfQogCiAvKiBUcnVuY2F0ZSBmaWxlICov
CiBzdGF0aWMgaW50CiByYW1mc190cnVuY2F0ZShzdHJ1Y3Qgdm5vZGUgKnZwLCBvZmZfdCBsZW5n
dGgpCiB7Ci0gICAgc3RydWN0IHJhbWZzX25vZGUgKm5wOwotICAgIHZvaWQgKm5ld19idWY7Ci0g
ICAgc2l6ZV90IG5ld19zaXplOwotCi0gICAgRFBSSU5URigoInRydW5jYXRlICVzIGxlbmd0aD0l
ZFxuIiwgdnAtPnZfcGF0aCwgbGVuZ3RoKSk7Ci0gICAgbnAgPSAocmFtZnNfbm9kZSAqKSB2cC0+
dl9kYXRhOwotCi0gICAgaWYgKGxlbmd0aCA9PSAwKSB7Ci0gICAgICAgIGlmIChucC0+cm5fYnVm
ICE9IE5VTEwpIHsKLSAgICAgICAgICAgIGlmKG5wLT5ybl9vd25zX2J1ZikKLSAgICAgICAgICAg
ICAgICBmcmVlKG5wLT5ybl9idWYpOwotICAgICAgICAgICAgbnAtPnJuX2J1ZiA9IE5VTEw7Ci0g
ICAgICAgICAgICBucC0+cm5fYnVmc2l6ZSA9IDA7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYg
KHNpemVfdChsZW5ndGgpID4gbnAtPnJuX2J1ZnNpemUpIHsKLSAgICAgICAgLy8gWFhYOiB0aGlz
IGNvdWxkIHVzZSBhIHBhZ2UgbGV2ZWwgYWxsb2NhdG9yCi0gICAgICAgIG5ld19zaXplID0gcm91
bmRfcGFnZShsZW5ndGgpOwotICAgICAgICBuZXdfYnVmID0gbWFsbG9jKG5ld19zaXplKTsKLSAg
ICAgICAgaWYgKCFuZXdfYnVmKQotICAgICAgICAgICAgcmV0dXJuIEVJTzsKLSAgICAgICAgaWYg
KG5wLT5ybl9zaXplICE9IDApIHsKLSAgICAgICAgICAgIG1lbWNweShuZXdfYnVmLCBucC0+cm5f
YnVmLCB2cC0+dl9zaXplKTsKLSAgICAgICAgICAgIGlmKG5wLT5ybl9vd25zX2J1ZikKLSAgICAg
ICAgICAgICAgICBmcmVlKG5wLT5ybl9idWYpOwotICAgICAgICB9Ci0gICAgICAgIG5wLT5ybl9i
dWYgPSAoY2hhciAqKSBuZXdfYnVmOwotICAgICAgICBucC0+cm5fYnVmc2l6ZSA9IG5ld19zaXpl
OwotICAgICAgICBucC0+cm5fb3duc19idWYgPSB0cnVlOwotICAgIH0KLSAgICBucC0+cm5fc2l6
ZSA9IGxlbmd0aDsKLSAgICB2cC0+dl9zaXplID0gbGVuZ3RoOwotICAgIHNldF90aW1lc190b19u
b3coJihucC0+cm5fbXRpbWUpLCAmKG5wLT5ybl9jdGltZSkpOwotICAgIHJldHVybiAwOworCXN0
cnVjdCByYW1mc19ub2RlICpucDsKKwl2b2lkICpuZXdfYnVmOworCXNpemVfdCBuZXdfc2l6ZTsK
KworCURQUklOVEYoKCJ0cnVuY2F0ZSAlcyBsZW5ndGg9JWRcbiIsIHZwLT52X3BhdGgsIGxlbmd0
aCkpOworCW5wID0gKHJhbWZzX25vZGUgKikgdnAtPnZfZGF0YTsKKworCWlmIChsZW5ndGggPT0g
MCkgeworCQlpZiAobnAtPnJuX2J1ZiAhPSBOVUxMKSB7CisJCQlpZihucC0+cm5fb3duc19idWYp
CisJCQkJZnJlZShucC0+cm5fYnVmKTsKKwkJCW5wLT5ybl9idWYgPSBOVUxMOworCQkJbnAtPnJu
X2J1ZnNpemUgPSAwOworCQl9CisJfSBlbHNlIGlmIChzaXplX3QobGVuZ3RoKSA+IG5wLT5ybl9i
dWZzaXplKSB7CisJCS8vIFhYWDogdGhpcyBjb3VsZCB1c2UgYSBwYWdlIGxldmVsIGFsbG9jYXRv
cgorCQluZXdfc2l6ZSA9IHJvdW5kX3BhZ2UobGVuZ3RoKTsKKwkJbmV3X2J1ZiA9IG1hbGxvYyhu
ZXdfc2l6ZSk7CisJCWlmICghbmV3X2J1ZikKKwkJCXJldHVybiBFSU87CisJCWlmIChucC0+cm5f
c2l6ZSAhPSAwKSB7CisJCQltZW1jcHkobmV3X2J1ZiwgbnAtPnJuX2J1ZiwgdnAtPnZfc2l6ZSk7
CisJCQlpZihucC0+cm5fb3duc19idWYpCisJCQkJZnJlZShucC0+cm5fYnVmKTsKKwkJfQorCQlu
cC0+cm5fYnVmID0gKGNoYXIgKikgbmV3X2J1ZjsKKwkJbnAtPnJuX2J1ZnNpemUgPSBuZXdfc2l6
ZTsKKwkJbnAtPnJuX293bnNfYnVmID0gdHJ1ZTsKKwl9CisJbnAtPnJuX3NpemUgPSBsZW5ndGg7
CisJdnAtPnZfc2l6ZSA9IGxlbmd0aDsKKwlzZXRfdGltZXNfdG9fbm93KCYobnAtPnJuX210aW1l
KSwgJihucC0+cm5fY3RpbWUpKTsKKwlyZXR1cm4gMDsKIH0KIAogLyoKQEAgLTM2OSwxNjUgKzM2
OSwxNjUgQEAgcmFtZnNfdHJ1bmNhdGUoc3RydWN0IHZub2RlICp2cCwgb2ZmX3QgbGVuZ3RoKQog
c3RhdGljIGludAogcmFtZnNfY3JlYXRlKHN0cnVjdCB2bm9kZSAqZHZwLCBjaGFyICpuYW1lLCBt
b2RlX3QgbW9kZSkKIHsKLSAgICBzdHJ1Y3QgcmFtZnNfbm9kZSAqbnA7CisJc3RydWN0IHJhbWZz
X25vZGUgKm5wOwogCi0gICAgaWYgKHN0cmxlbihuYW1lKSA+IE5BTUVfTUFYKSB7Ci0gICAgICAg
IHJldHVybiBFTkFNRVRPT0xPTkc7Ci0gICAgfQorCWlmIChzdHJsZW4obmFtZSkgPiBOQU1FX01B
WCkgeworCQlyZXR1cm4gRU5BTUVUT09MT05HOworCX0KIAotICAgIERQUklOVEYoKCJjcmVhdGUg
JXMgaW4gJXNcbiIsIG5hbWUsIGR2cC0+dl9wYXRoKSk7Ci0gICAgaWYgKCFTX0lTUkVHKG1vZGUp
KQotICAgICAgICByZXR1cm4gRUlOVkFMOworCURQUklOVEYoKCJjcmVhdGUgJXMgaW4gJXNcbiIs
IG5hbWUsIGR2cC0+dl9wYXRoKSk7CisJaWYgKCFTX0lTUkVHKG1vZGUpKQorCQlyZXR1cm4gRUlO
VkFMOwogCi0gICAgbnAgPSByYW1mc19hZGRfbm9kZSgocmFtZnNfbm9kZSAqKSBkdnAtPnZfZGF0
YSwgbmFtZSwgVlJFRyk7Ci0gICAgaWYgKG5wID09IE5VTEwpCi0gICAgICAgIHJldHVybiBFTk9N
RU07Ci0gICAgcmV0dXJuIDA7CisJbnAgPSByYW1mc19hZGRfbm9kZSgocmFtZnNfbm9kZSAqKSBk
dnAtPnZfZGF0YSwgbmFtZSwgVlJFRyk7CisJaWYgKG5wID09IE5VTEwpCisJCXJldHVybiBFTk9N
RU07CisJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQKIHJhbWZzX3JlYWQoc3RydWN0IHZub2Rl
ICp2cCwgc3RydWN0IGZpbGUgKmZwLCBzdHJ1Y3QgdWlvICp1aW8sIGludCBpb2ZsYWcpCiB7Ci0g
ICAgc3RydWN0IHJhbWZzX25vZGUgKm5wID0gKHJhbWZzX25vZGUgKikgdnAtPnZfZGF0YTsKLSAg
ICBzaXplX3QgbGVuOwotCi0gICAgaWYgKHZwLT52X3R5cGUgPT0gVkRJUikgewotICAgICAgICBy
ZXR1cm4gRUlTRElSOwotICAgIH0KLSAgICBpZiAodnAtPnZfdHlwZSAhPSBWUkVHKSB7Ci0gICAg
ICAgIHJldHVybiBFSU5WQUw7Ci0gICAgfQotICAgIGlmICh1aW8tPnVpb19vZmZzZXQgPCAwKSB7
Ci0gICAgICAgIHJldHVybiBFSU5WQUw7Ci0gICAgfQotICAgIGlmICh1aW8tPnVpb19yZXNpZCA9
PSAwKSB7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIGlmICh1aW8tPnVpb19vZmZz
ZXQgPj0gKG9mZl90KSB2cC0+dl9zaXplKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGlmICh2
cC0+dl9zaXplIC0gdWlvLT51aW9fb2Zmc2V0IDwgdWlvLT51aW9fcmVzaWQpCi0gICAgICAgIGxl
biA9IHZwLT52X3NpemUgLSB1aW8tPnVpb19vZmZzZXQ7Ci0gICAgZWxzZQotICAgICAgICBsZW4g
PSB1aW8tPnVpb19yZXNpZDsKLQotICAgIHNldF90aW1lc190b19ub3coJihucC0+cm5fYXRpbWUp
KTsKLQotICAgIHJldHVybiB1aW9tb3ZlKG5wLT5ybl9idWYgKyB1aW8tPnVpb19vZmZzZXQsIGxl
biwgdWlvKTsKKwlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSAocmFtZnNfbm9kZSAqKSB2cC0+dl9k
YXRhOworCXNpemVfdCBsZW47CisKKwlpZiAodnAtPnZfdHlwZSA9PSBWRElSKSB7CisJCXJldHVy
biBFSVNESVI7CisJfQorCWlmICh2cC0+dl90eXBlICE9IFZSRUcpIHsKKwkJcmV0dXJuIEVJTlZB
TDsKKwl9CisJaWYgKHVpby0+dWlvX29mZnNldCA8IDApIHsKKwkJcmV0dXJuIEVJTlZBTDsKKwl9
CisJaWYgKHVpby0+dWlvX3Jlc2lkID09IDApIHsKKwkJcmV0dXJuIDA7CisJfQorCisJaWYgKHVp
by0+dWlvX29mZnNldCA+PSAob2ZmX3QpIHZwLT52X3NpemUpCisJCXJldHVybiAwOworCisJaWYg
KHZwLT52X3NpemUgLSB1aW8tPnVpb19vZmZzZXQgPCB1aW8tPnVpb19yZXNpZCkKKwkJbGVuID0g
dnAtPnZfc2l6ZSAtIHVpby0+dWlvX29mZnNldDsKKwllbHNlCisJCWxlbiA9IHVpby0+dWlvX3Jl
c2lkOworCisJc2V0X3RpbWVzX3RvX25vdygmKG5wLT5ybl9hdGltZSkpOworCisJcmV0dXJuIHVp
b21vdmUobnAtPnJuX2J1ZiArIHVpby0+dWlvX29mZnNldCwgbGVuLCB1aW8pOwogfQogCiBpbnQK
IHJhbWZzX3NldF9maWxlX2RhdGEoc3RydWN0IHZub2RlICp2cCwgY29uc3Qgdm9pZCAqZGF0YSwg
c2l6ZV90IHNpemUpCiB7Ci0gICAgc3RydWN0IHJhbWZzX25vZGUgKm5wID0gKHJhbWZzX25vZGUg
KikgdnAtPnZfZGF0YTsKLQotICAgIGlmICh2cC0+dl90eXBlID09IFZESVIpIHsKLSAgICAgICAg
cmV0dXJuIEVJU0RJUjsKLSAgICB9Ci0gICAgaWYgKHZwLT52X3R5cGUgIT0gVlJFRykgewotICAg
ICAgICByZXR1cm4gRUlOVkFMOwotICAgIH0KLSAgICBpZiAobnAtPnJuX2J1ZikgewotICAgICAg
ICByZXR1cm4gRUlOVkFMOwotICAgIH0KLQotICAgIG5wLT5ybl9idWYgPSAoY2hhciAqKSBkYXRh
OwotICAgIG5wLT5ybl9idWZzaXplID0gc2l6ZTsKLSAgICBucC0+cm5fc2l6ZSA9IHNpemU7Ci0g
ICAgdnAtPnZfc2l6ZSA9IHNpemU7Ci0gICAgbnAtPnJuX293bnNfYnVmID0gZmFsc2U7Ci0KLSAg
ICByZXR1cm4gMDsKKwlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSAocmFtZnNfbm9kZSAqKSB2cC0+
dl9kYXRhOworCisJaWYgKHZwLT52X3R5cGUgPT0gVkRJUikgeworCQlyZXR1cm4gRUlTRElSOwor
CX0KKwlpZiAodnAtPnZfdHlwZSAhPSBWUkVHKSB7CisJCXJldHVybiBFSU5WQUw7CisJfQorCWlm
IChucC0+cm5fYnVmKSB7CisJCXJldHVybiBFSU5WQUw7CisJfQorCisJbnAtPnJuX2J1ZiA9IChj
aGFyICopIGRhdGE7CisJbnAtPnJuX2J1ZnNpemUgPSBzaXplOworCW5wLT5ybl9zaXplID0gc2l6
ZTsKKwl2cC0+dl9zaXplID0gc2l6ZTsKKwlucC0+cm5fb3duc19idWYgPSBmYWxzZTsKKworCXJl
dHVybiAwOwogfQogCiBzdGF0aWMgaW50CiByYW1mc193cml0ZShzdHJ1Y3Qgdm5vZGUgKnZwLCBz
dHJ1Y3QgdWlvICp1aW8sIGludCBpb2ZsYWcpCiB7Ci0gICAgc3RydWN0IHJhbWZzX25vZGUgKm5w
ID0gKHJhbWZzX25vZGUgKikgdnAtPnZfZGF0YTsKLQotICAgIGlmICh2cC0+dl90eXBlID09IFZE
SVIpIHsKLSAgICAgICAgcmV0dXJuIEVJU0RJUjsKLSAgICB9Ci0gICAgaWYgKHZwLT52X3R5cGUg
IT0gVlJFRykgewotICAgICAgICByZXR1cm4gRUlOVkFMOwotICAgIH0KLSAgICBpZiAodWlvLT51
aW9fb2Zmc2V0IDwgMCkgewotICAgICAgICByZXR1cm4gRUlOVkFMOwotICAgIH0KLSAgICBpZiAo
dWlvLT51aW9fb2Zmc2V0ID49IExPTkdfTUFYKSB7Ci0gICAgICAgIHJldHVybiBFRkJJRzsKLSAg
ICB9Ci0gICAgaWYgKHVpby0+dWlvX3Jlc2lkID09IDApIHsKLSAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgfQotCi0gICAgaWYgKGlvZmxhZyAmIElPX0FQUEVORCkKLSAgICAgICAgdWlvLT51aW9fb2Zm
c2V0ID0gbnAtPnJuX3NpemU7Ci0KLSAgICBpZiAoc2l6ZV90KHVpby0+dWlvX29mZnNldCArIHVp
by0+dWlvX3Jlc2lkKSA+IChzaXplX3QpIHZwLT52X3NpemUpIHsKLSAgICAgICAgLyogRXhwYW5k
IHRoZSBmaWxlIHNpemUgYmVmb3JlIHdyaXRpbmcgdG8gaXQgKi8KLSAgICAgICAgb2ZmX3QgZW5k
X3BvcyA9IHVpby0+dWlvX29mZnNldCArIHVpby0+dWlvX3Jlc2lkOwotICAgICAgICBpZiAoZW5k
X3BvcyA+IChvZmZfdCkgbnAtPnJuX2J1ZnNpemUpIHsKLSAgICAgICAgICAgIC8vIFhYWDogdGhp
cyBjb3VsZCB1c2UgYSBwYWdlIGxldmVsIGFsbG9jYXRvcgotICAgICAgICAgICAgc2l6ZV90IG5l
d19zaXplID0gcm91bmRfcGFnZShlbmRfcG9zKTsKLSAgICAgICAgICAgIHZvaWQgKm5ld19idWYg
PSBtYWxsb2MobmV3X3NpemUpOwotICAgICAgICAgICAgaWYgKCFuZXdfYnVmKQotICAgICAgICAg
ICAgICAgIHJldHVybiBFSU87Ci0gICAgICAgICAgICBpZiAobnAtPnJuX3NpemUgIT0gMCkgewot
ICAgICAgICAgICAgICAgIG1lbWNweShuZXdfYnVmLCBucC0+cm5fYnVmLCB2cC0+dl9zaXplKTsK
LSAgICAgICAgICAgICAgICBpZihucC0+cm5fb3duc19idWYpCi0gICAgICAgICAgICAgICAgICAg
IGZyZWUobnAtPnJuX2J1Zik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBucC0+cm5fYnVm
ID0gKGNoYXIgKikgbmV3X2J1ZjsKLSAgICAgICAgICAgIG5wLT5ybl9idWZzaXplID0gbmV3X3Np
emU7Ci0gICAgICAgIH0KLSAgICAgICAgbnAtPnJuX3NpemUgPSBlbmRfcG9zOwotICAgICAgICB2
cC0+dl9zaXplID0gZW5kX3BvczsKLSAgICAgICAgbnAtPnJuX293bnNfYnVmID0gdHJ1ZTsKLSAg
ICB9Ci0KLSAgICBzZXRfdGltZXNfdG9fbm93KCYobnAtPnJuX210aW1lKSwgJihucC0+cm5fY3Rp
bWUpKTsKLSAgICByZXR1cm4gdWlvbW92ZShucC0+cm5fYnVmICsgdWlvLT51aW9fb2Zmc2V0LCB1
aW8tPnVpb19yZXNpZCwgdWlvKTsKKwlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSAocmFtZnNfbm9k
ZSAqKSB2cC0+dl9kYXRhOworCisJaWYgKHZwLT52X3R5cGUgPT0gVkRJUikgeworCQlyZXR1cm4g
RUlTRElSOworCX0KKwlpZiAodnAtPnZfdHlwZSAhPSBWUkVHKSB7CisJCXJldHVybiBFSU5WQUw7
CisJfQorCWlmICh1aW8tPnVpb19vZmZzZXQgPCAwKSB7CisJCXJldHVybiBFSU5WQUw7CisJfQor
CWlmICh1aW8tPnVpb19vZmZzZXQgPj0gTE9OR19NQVgpIHsKKwkJcmV0dXJuIEVGQklHOworCX0K
KwlpZiAodWlvLT51aW9fcmVzaWQgPT0gMCkgeworCQlyZXR1cm4gMDsKKwl9CisKKwlpZiAoaW9m
bGFnICYgSU9fQVBQRU5EKQorCQl1aW8tPnVpb19vZmZzZXQgPSBucC0+cm5fc2l6ZTsKKworCWlm
IChzaXplX3QodWlvLT51aW9fb2Zmc2V0ICsgdWlvLT51aW9fcmVzaWQpID4gKHNpemVfdCkgdnAt
PnZfc2l6ZSkgeworCQkvKiBFeHBhbmQgdGhlIGZpbGUgc2l6ZSBiZWZvcmUgd3JpdGluZyB0byBp
dCAqLworCQlvZmZfdCBlbmRfcG9zID0gdWlvLT51aW9fb2Zmc2V0ICsgdWlvLT51aW9fcmVzaWQ7
CisJCWlmIChlbmRfcG9zID4gKG9mZl90KSBucC0+cm5fYnVmc2l6ZSkgeworCQkJLy8gWFhYOiB0
aGlzIGNvdWxkIHVzZSBhIHBhZ2UgbGV2ZWwgYWxsb2NhdG9yCisJCQlzaXplX3QgbmV3X3NpemUg
PSByb3VuZF9wYWdlKGVuZF9wb3MpOworCQkJdm9pZCAqbmV3X2J1ZiA9IG1hbGxvYyhuZXdfc2l6
ZSk7CisJCQlpZiAoIW5ld19idWYpCisJCQkJcmV0dXJuIEVJTzsKKwkJCWlmIChucC0+cm5fc2l6
ZSAhPSAwKSB7CisJCQkJbWVtY3B5KG5ld19idWYsIG5wLT5ybl9idWYsIHZwLT52X3NpemUpOwor
CQkJCWlmKG5wLT5ybl9vd25zX2J1ZikKKwkJCQkJZnJlZShucC0+cm5fYnVmKTsKKwkJCX0KKwkJ
CW5wLT5ybl9idWYgPSAoY2hhciAqKSBuZXdfYnVmOworCQkJbnAtPnJuX2J1ZnNpemUgPSBuZXdf
c2l6ZTsKKwkJfQorCQlucC0+cm5fc2l6ZSA9IGVuZF9wb3M7CisJCXZwLT52X3NpemUgPSBlbmRf
cG9zOworCQlucC0+cm5fb3duc19idWYgPSB0cnVlOworCX0KKworCXNldF90aW1lc190b19ub3co
JihucC0+cm5fbXRpbWUpLCAmKG5wLT5ybl9jdGltZSkpOworCXJldHVybiB1aW9tb3ZlKG5wLT5y
bl9idWYgKyB1aW8tPnVpb19vZmZzZXQsIHVpby0+dWlvX3Jlc2lkLCB1aW8pOwogfQogCiBzdGF0
aWMgaW50CiByYW1mc19yZW5hbWUoc3RydWN0IHZub2RlICpkdnAxLCBzdHJ1Y3Qgdm5vZGUgKnZw
MSwgY2hhciAqbmFtZTEsCi0gICAgICAgICAgICAgc3RydWN0IHZub2RlICpkdnAyLCBzdHJ1Y3Qg
dm5vZGUgKnZwMiwgY2hhciAqbmFtZTIpCisJCQkgc3RydWN0IHZub2RlICpkdnAyLCBzdHJ1Y3Qg
dm5vZGUgKnZwMiwgY2hhciAqbmFtZTIpCiB7Ci0gICAgc3RydWN0IHJhbWZzX25vZGUgKm5wLCAq
b2xkX25wOwotICAgIGludCBlcnJvcjsKLQotICAgIGlmICh2cDIpIHsKLSAgICAgICAgLyogUmVt
b3ZlIGRlc3RpbmF0aW9uIGZpbGUsIGZpcnN0ICovCi0gICAgICAgIGVycm9yID0gcmFtZnNfcmVt
b3ZlX25vZGUoKHJhbWZzX25vZGUgKikgZHZwMi0+dl9kYXRhLCAocmFtZnNfbm9kZSAqKSB2cDIt
PnZfZGF0YSk7Ci0gICAgICAgIGlmIChlcnJvcikKLSAgICAgICAgICAgIHJldHVybiBlcnJvcjsK
LSAgICB9Ci0gICAgLyogU2FtZSBkaXJlY3RvcnkgPyAqLwotICAgIGlmIChkdnAxID09IGR2cDIp
IHsKLSAgICAgICAgLyogQ2hhbmdlIHRoZSBuYW1lIG9mIGV4aXN0aW5nIGZpbGUgKi8KLSAgICAg
ICAgZXJyb3IgPSByYW1mc19yZW5hbWVfbm9kZSgocmFtZnNfbm9kZSAqKSB2cDEtPnZfZGF0YSwg
bmFtZTIpOwotICAgICAgICBpZiAoZXJyb3IpCi0gICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0g
ICAgfSBlbHNlIHsKLSAgICAgICAgLyogQ3JlYXRlIG5ldyBmaWxlIG9yIGRpcmVjdG9yeSAqLwot
ICAgICAgICBvbGRfbnAgPSAocmFtZnNfbm9kZSAqKSB2cDEtPnZfZGF0YTsKLSAgICAgICAgbnAg
PSByYW1mc19hZGRfbm9kZSgocmFtZnNfbm9kZSAqKSBkdnAyLT52X2RhdGEsIG5hbWUyLCBvbGRf
bnAtPnJuX3R5cGUpOwotICAgICAgICBpZiAobnAgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVy
biBFTk9NRU07Ci0KLSAgICAgICAgaWYgKG9sZF9ucC0+cm5fYnVmKSB7Ci0gICAgICAgICAgICAv
KiBDb3B5IGZpbGUgZGF0YSAqLwotICAgICAgICAgICAgbnAtPnJuX2J1ZiA9IG9sZF9ucC0+cm5f
YnVmOwotICAgICAgICAgICAgbnAtPnJuX3NpemUgPSBvbGRfbnAtPnJuX3NpemU7Ci0gICAgICAg
ICAgICBucC0+cm5fYnVmc2l6ZSA9IG9sZF9ucC0+cm5fYnVmc2l6ZTsKLSAgICAgICAgICAgIG9s
ZF9ucC0+cm5fYnVmID0gTlVMTDsKLSAgICAgICAgfQotICAgICAgICAvKiBSZW1vdmUgc291cmNl
IGZpbGUgKi8KLSAgICAgICAgcmFtZnNfcmVtb3ZlX25vZGUoKHJhbWZzX25vZGUgKikgZHZwMS0+
dl9kYXRhLCAocmFtZnNfbm9kZSAqKSB2cDEtPnZfZGF0YSk7Ci0gICAgfQotICAgIHJldHVybiAw
OworCXN0cnVjdCByYW1mc19ub2RlICpucCwgKm9sZF9ucDsKKwlpbnQgZXJyb3I7CisKKwlpZiAo
dnAyKSB7CisJCS8qIFJlbW92ZSBkZXN0aW5hdGlvbiBmaWxlLCBmaXJzdCAqLworCQllcnJvciA9
IHJhbWZzX3JlbW92ZV9ub2RlKChyYW1mc19ub2RlICopIGR2cDItPnZfZGF0YSwgKHJhbWZzX25v
ZGUgKikgdnAyLT52X2RhdGEpOworCQlpZiAoZXJyb3IpCisJCQlyZXR1cm4gZXJyb3I7CisJfQor
CS8qIFNhbWUgZGlyZWN0b3J5ID8gKi8KKwlpZiAoZHZwMSA9PSBkdnAyKSB7CisJCS8qIENoYW5n
ZSB0aGUgbmFtZSBvZiBleGlzdGluZyBmaWxlICovCisJCWVycm9yID0gcmFtZnNfcmVuYW1lX25v
ZGUoKHJhbWZzX25vZGUgKikgdnAxLT52X2RhdGEsIG5hbWUyKTsKKwkJaWYgKGVycm9yKQorCQkJ
cmV0dXJuIGVycm9yOworCX0gZWxzZSB7CisJCS8qIENyZWF0ZSBuZXcgZmlsZSBvciBkaXJlY3Rv
cnkgKi8KKwkJb2xkX25wID0gKHJhbWZzX25vZGUgKikgdnAxLT52X2RhdGE7CisJCW5wID0gcmFt
ZnNfYWRkX25vZGUoKHJhbWZzX25vZGUgKikgZHZwMi0+dl9kYXRhLCBuYW1lMiwgb2xkX25wLT5y
bl90eXBlKTsKKwkJaWYgKG5wID09IE5VTEwpCisJCQlyZXR1cm4gRU5PTUVNOworCisJCWlmIChv
bGRfbnAtPnJuX2J1ZikgeworCQkJLyogQ29weSBmaWxlIGRhdGEgKi8KKwkJCW5wLT5ybl9idWYg
PSBvbGRfbnAtPnJuX2J1ZjsKKwkJCW5wLT5ybl9zaXplID0gb2xkX25wLT5ybl9zaXplOworCQkJ
bnAtPnJuX2J1ZnNpemUgPSBvbGRfbnAtPnJuX2J1ZnNpemU7CisJCQlvbGRfbnAtPnJuX2J1ZiA9
IE5VTEw7CisJCX0KKwkJLyogUmVtb3ZlIHNvdXJjZSBmaWxlICovCisJCXJhbWZzX3JlbW92ZV9u
b2RlKChyYW1mc19ub2RlICopIGR2cDEtPnZfZGF0YSwgKHJhbWZzX25vZGUgKikgdnAxLT52X2Rh
dGEpOworCX0KKwlyZXR1cm4gMDsKIH0KIAogLyoKQEAgLTUzNiw5NyArNTM2LDk3IEBAIHJhbWZz
X3JlbmFtZShzdHJ1Y3Qgdm5vZGUgKmR2cDEsIHN0cnVjdCB2bm9kZSAqdnAxLCBjaGFyICpuYW1l
MSwKIHN0YXRpYyBpbnQKIHJhbWZzX3JlYWRkaXIoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IGZp
bGUgKmZwLCBzdHJ1Y3QgZGlyZW50ICpkaXIpCiB7Ci0gICAgc3RydWN0IHJhbWZzX25vZGUgKm5w
LCAqZG5wOwotICAgIGludCBpOwotCi0gICAgbXV0ZXhfbG9jaygmcmFtZnNfbG9jayk7Ci0KLSAg
ICBzZXRfdGltZXNfdG9fbm93KCYoKChyYW1mc19ub2RlICopIHZwLT52X2RhdGEpLT5ybl9hdGlt
ZSkpOwotCi0gICAgaWYgKGZwLT5mX29mZnNldCA9PSAwKSB7Ci0gICAgICAgIGRpci0+ZF90eXBl
ID0gRFRfRElSOwotICAgICAgICBzdHJsY3B5KChjaGFyICopICZkaXItPmRfbmFtZSwgIi4iLCBz
aXplb2YoZGlyLT5kX25hbWUpKTsKLSAgICB9IGVsc2UgaWYgKGZwLT5mX29mZnNldCA9PSAxKSB7
Ci0gICAgICAgIGRpci0+ZF90eXBlID0gRFRfRElSOwotICAgICAgICBzdHJsY3B5KChjaGFyICop
ICZkaXItPmRfbmFtZSwgIi4uIiwgc2l6ZW9mKGRpci0+ZF9uYW1lKSk7Ci0gICAgfSBlbHNlIHsK
LSAgICAgICAgZG5wID0gKHJhbWZzX25vZGUgKikgdnAtPnZfZGF0YTsKLSAgICAgICAgbnAgPSBk
bnAtPnJuX2NoaWxkOwotICAgICAgICBpZiAobnAgPT0gTlVMTCkgewotICAgICAgICAgICAgbXV0
ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKLSAgICAgICAgICAgIHJldHVybiBFTk9FTlQ7Ci0gICAg
ICAgIH0KLQotICAgICAgICBmb3IgKGkgPSAwOyBpICE9IChmcC0+Zl9vZmZzZXQgLSAyKTsgaSsr
KSB7Ci0gICAgICAgICAgICBucCA9IG5wLT5ybl9uZXh0OwotICAgICAgICAgICAgaWYgKG5wID09
IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBtdXRleF91bmxvY2soJnJhbWZzX2xvY2spOwotICAg
ICAgICAgICAgICAgIHJldHVybiBFTk9FTlQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICAgICAgaWYgKG5wLT5ybl90eXBlID09IFZESVIpCi0gICAgICAgICAgICBkaXItPmRfdHlwZSA9
IERUX0RJUjsKLSAgICAgICAgZWxzZSBpZiAobnAtPnJuX3R5cGUgPT0gVkxOSykKLSAgICAgICAg
ICAgIGRpci0+ZF90eXBlID0gRFRfTE5LOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBkaXIt
PmRfdHlwZSA9IERUX1JFRzsKLSAgICAgICAgc3RybGNweSgoY2hhciAqKSAmZGlyLT5kX25hbWUs
IG5wLT5ybl9uYW1lLAotICAgICAgICAgICAgICAgIHNpemVvZihkaXItPmRfbmFtZSkpOwotICAg
IH0KLSAgICBkaXItPmRfZmlsZW5vID0gZnAtPmZfb2Zmc2V0OworCXN0cnVjdCByYW1mc19ub2Rl
ICpucCwgKmRucDsKKwlpbnQgaTsKKworCW11dGV4X2xvY2soJnJhbWZzX2xvY2spOworCisJc2V0
X3RpbWVzX3RvX25vdygmKCgocmFtZnNfbm9kZSAqKSB2cC0+dl9kYXRhKS0+cm5fYXRpbWUpKTsK
KworCWlmIChmcC0+Zl9vZmZzZXQgPT0gMCkgeworCQlkaXItPmRfdHlwZSA9IERUX0RJUjsKKwkJ
c3RybGNweSgoY2hhciAqKSAmZGlyLT5kX25hbWUsICIuIiwgc2l6ZW9mKGRpci0+ZF9uYW1lKSk7
CisJfSBlbHNlIGlmIChmcC0+Zl9vZmZzZXQgPT0gMSkgeworCQlkaXItPmRfdHlwZSA9IERUX0RJ
UjsKKwkJc3RybGNweSgoY2hhciAqKSAmZGlyLT5kX25hbWUsICIuLiIsIHNpemVvZihkaXItPmRf
bmFtZSkpOworCX0gZWxzZSB7CisJCWRucCA9IChyYW1mc19ub2RlICopIHZwLT52X2RhdGE7CisJ
CW5wID0gZG5wLT5ybl9jaGlsZDsKKwkJaWYgKG5wID09IE5VTEwpIHsKKwkJCW11dGV4X3VubG9j
aygmcmFtZnNfbG9jayk7CisJCQlyZXR1cm4gRU5PRU5UOworCQl9CisKKwkJZm9yIChpID0gMDsg
aSAhPSAoZnAtPmZfb2Zmc2V0IC0gMik7IGkrKykgeworCQkJbnAgPSBucC0+cm5fbmV4dDsKKwkJ
CWlmIChucCA9PSBOVUxMKSB7CisJCQkJbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKKwkJCQly
ZXR1cm4gRU5PRU5UOworCQkJfQorCQl9CisJCWlmIChucC0+cm5fdHlwZSA9PSBWRElSKQorCQkJ
ZGlyLT5kX3R5cGUgPSBEVF9ESVI7CisJCWVsc2UgaWYgKG5wLT5ybl90eXBlID09IFZMTkspCisJ
CQlkaXItPmRfdHlwZSA9IERUX0xOSzsKKwkJZWxzZQorCQkJZGlyLT5kX3R5cGUgPSBEVF9SRUc7
CisJCXN0cmxjcHkoKGNoYXIgKikgJmRpci0+ZF9uYW1lLCBucC0+cm5fbmFtZSwKKwkJCQlzaXpl
b2YoZGlyLT5kX25hbWUpKTsKKwl9CisJZGlyLT5kX2ZpbGVubyA9IGZwLT5mX29mZnNldDsKIC8v
CWRpci0+ZF9uYW1lbGVuID0gc3RybGVuKGRpci0+ZF9uYW1lKTsKIAotICAgIGZwLT5mX29mZnNl
dCsrOworCWZwLT5mX29mZnNldCsrOwogCi0gICAgbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsK
LSAgICByZXR1cm4gMDsKKwltdXRleF91bmxvY2soJnJhbWZzX2xvY2spOworCXJldHVybiAwOwog
fQogCiBpbnQKIHJhbWZzX2luaXQodm9pZCkKIHsKLSAgICByZXR1cm4gMDsKKwlyZXR1cm4gMDsK
IH0KIAogc3RhdGljIGludAogcmFtZnNfZ2V0YXR0cihzdHJ1Y3Qgdm5vZGUgKnZub2RlLCBzdHJ1
Y3QgdmF0dHIgKmF0dHIpCiB7Ci0gICAgYXR0ci0+dmFfbm9kZWlkID0gdm5vZGUtPnZfaW5vOwot
ICAgIGF0dHItPnZhX3NpemUgPSB2bm9kZS0+dl9zaXplOworCWF0dHItPnZhX25vZGVpZCA9IHZu
b2RlLT52X2lubzsKKwlhdHRyLT52YV9zaXplID0gdm5vZGUtPnZfc2l6ZTsKIAotICAgIHN0cnVj
dCByYW1mc19ub2RlICpucCA9IChyYW1mc19ub2RlICopIHZub2RlLT52X2RhdGE7Ci0gICAgYXR0
ci0+dmFfdHlwZSA9ICh2dHlwZSkgbnAtPnJuX3R5cGU7CisJc3RydWN0IHJhbWZzX25vZGUgKm5w
ID0gKHJhbWZzX25vZGUgKikgdm5vZGUtPnZfZGF0YTsKKwlhdHRyLT52YV90eXBlID0gKHZ0eXBl
KSBucC0+cm5fdHlwZTsKIAotICAgIG1lbWNweSgmKGF0dHItPnZhX2F0aW1lKSwgJihucC0+cm5f
YXRpbWUpLCBzaXplb2Yoc3RydWN0IHRpbWVzcGVjKSk7Ci0gICAgbWVtY3B5KCYoYXR0ci0+dmFf
Y3RpbWUpLCAmKG5wLT5ybl9jdGltZSksIHNpemVvZihzdHJ1Y3QgdGltZXNwZWMpKTsKLSAgICBt
ZW1jcHkoJihhdHRyLT52YV9tdGltZSksICYobnAtPnJuX210aW1lKSwgc2l6ZW9mKHN0cnVjdCB0
aW1lc3BlYykpOworCW1lbWNweSgmKGF0dHItPnZhX2F0aW1lKSwgJihucC0+cm5fYXRpbWUpLCBz
aXplb2Yoc3RydWN0IHRpbWVzcGVjKSk7CisJbWVtY3B5KCYoYXR0ci0+dmFfY3RpbWUpLCAmKG5w
LT5ybl9jdGltZSksIHNpemVvZihzdHJ1Y3QgdGltZXNwZWMpKTsKKwltZW1jcHkoJihhdHRyLT52
YV9tdGltZSksICYobnAtPnJuX210aW1lKSwgc2l6ZW9mKHN0cnVjdCB0aW1lc3BlYykpOwogCi0g
ICAgYXR0ci0+dmFfbW9kZSA9IG5wLT5ybl9tb2RlOworCWF0dHItPnZhX21vZGUgPSBucC0+cm5f
bW9kZTsKIAotICAgIHJldHVybiAwOworCXJldHVybiAwOwogfQogCiBzdGF0aWMgaW50CiByYW1m
c19zZXRhdHRyKHN0cnVjdCB2bm9kZSAqdm5vZGUsIHN0cnVjdCB2YXR0ciAqYXR0cikgewotICAg
IHN0cnVjdCByYW1mc19ub2RlICpucCA9IChyYW1mc19ub2RlICopIHZub2RlLT52X2RhdGE7CisJ
c3RydWN0IHJhbWZzX25vZGUgKm5wID0gKHJhbWZzX25vZGUgKikgdm5vZGUtPnZfZGF0YTsKIAot
ICAgIGlmIChhdHRyLT52YV9tYXNrICYgQVRfQVRJTUUpIHsKLSAgICAgICAgbWVtY3B5KCYobnAt
PnJuX2F0aW1lKSwgJihhdHRyLT52YV9hdGltZSksIHNpemVvZihzdHJ1Y3QgdGltZXNwZWMpKTsK
LSAgICB9CisJaWYgKGF0dHItPnZhX21hc2sgJiBBVF9BVElNRSkgeworCQltZW1jcHkoJihucC0+
cm5fYXRpbWUpLCAmKGF0dHItPnZhX2F0aW1lKSwgc2l6ZW9mKHN0cnVjdCB0aW1lc3BlYykpOwor
CX0KIAotICAgIGlmIChhdHRyLT52YV9tYXNrICYgQVRfQ1RJTUUpIHsKLSAgICAgICAgbWVtY3B5
KCYobnAtPnJuX2N0aW1lKSwgJihhdHRyLT52YV9jdGltZSksIHNpemVvZihzdHJ1Y3QgdGltZXNw
ZWMpKTsKLSAgICB9CisJaWYgKGF0dHItPnZhX21hc2sgJiBBVF9DVElNRSkgeworCQltZW1jcHko
JihucC0+cm5fY3RpbWUpLCAmKGF0dHItPnZhX2N0aW1lKSwgc2l6ZW9mKHN0cnVjdCB0aW1lc3Bl
YykpOworCX0KIAotICAgIGlmIChhdHRyLT52YV9tYXNrICYgQVRfTVRJTUUpIHsKLSAgICAgICAg
bWVtY3B5KCYobnAtPnJuX210aW1lKSwgJihhdHRyLT52YV9tdGltZSksIHNpemVvZihzdHJ1Y3Qg
dGltZXNwZWMpKTsKLSAgICB9CisJaWYgKGF0dHItPnZhX21hc2sgJiBBVF9NVElNRSkgeworCQlt
ZW1jcHkoJihucC0+cm5fbXRpbWUpLCAmKGF0dHItPnZhX210aW1lKSwgc2l6ZW9mKHN0cnVjdCB0
aW1lc3BlYykpOworCX0KIAotICAgIGlmIChhdHRyLT52YV9tYXNrICYgQVRfTU9ERSkgewotICAg
ICAgICBucC0+cm5fbW9kZSA9IGF0dHItPnZhX21vZGU7Ci0gICAgfQorCWlmIChhdHRyLT52YV9t
YXNrICYgQVRfTU9ERSkgeworCQlucC0+cm5fbW9kZSA9IGF0dHItPnZhX21vZGU7CisJfQogCi0g
ICAgcmV0dXJuIDA7CisJcmV0dXJuIDA7CiB9CiAKICNkZWZpbmUgcmFtZnNfb3BlbiAgICAgICgo
dm5vcF9vcGVuX3Qpdm9wX251bGxvcCkKQEAgLTY0MiwyOCArNjQyLDI4IEBAIHJhbWZzX3NldGF0
dHIoc3RydWN0IHZub2RlICp2bm9kZSwgc3RydWN0IHZhdHRyICphdHRyKSB7CiAgKiB2bm9kZSBv
cGVyYXRpb25zCiAgKi8KIHN0cnVjdCB2bm9wcyByYW1mc192bm9wcyA9IHsKLSAgICAgICAgcmFt
ZnNfb3BlbiwgICAgICAgICAgICAgLyogb3BlbiAqLwotICAgICAgICByYW1mc19jbG9zZSwgICAg
ICAgICAgICAvKiBjbG9zZSAqLwotICAgICAgICByYW1mc19yZWFkLCAgICAgICAgICAgICAvKiBy
ZWFkICovCi0gICAgICAgIHJhbWZzX3dyaXRlLCAgICAgICAgICAgIC8qIHdyaXRlICovCi0gICAg
ICAgIHJhbWZzX3NlZWssICAgICAgICAgICAgIC8qIHNlZWsgKi8KLSAgICAgICAgcmFtZnNfaW9j
dGwsICAgICAgICAgICAgLyogaW9jdGwgKi8KLSAgICAgICAgcmFtZnNfZnN5bmMsICAgICAgICAg
ICAgLyogZnN5bmMgKi8KLSAgICAgICAgcmFtZnNfcmVhZGRpciwgICAgICAgICAgLyogcmVhZGRp
ciAqLwotICAgICAgICByYW1mc19sb29rdXAsICAgICAgICAgICAvKiBsb29rdXAgKi8KLSAgICAg
ICAgcmFtZnNfY3JlYXRlLCAgICAgICAgICAgLyogY3JlYXRlICovCi0gICAgICAgIHJhbWZzX3Jl
bW92ZSwgICAgICAgICAgIC8qIHJlbW92ZSAqLwotICAgICAgICByYW1mc19yZW5hbWUsICAgICAg
ICAgICAvKiByZW1hbWUgKi8KLSAgICAgICAgcmFtZnNfbWtkaXIsICAgICAgICAgICAgLyogbWtk
aXIgKi8KLSAgICAgICAgcmFtZnNfcm1kaXIsICAgICAgICAgICAgLyogcm1kaXIgKi8KLSAgICAg
ICAgcmFtZnNfZ2V0YXR0ciwgICAgICAgICAgLyogZ2V0YXR0ciAqLwotICAgICAgICByYW1mc19z
ZXRhdHRyLCAgICAgICAgICAvKiBzZXRhdHRyICovCi0gICAgICAgIHJhbWZzX2luYWN0aXZlLCAg
ICAgICAgIC8qIGluYWN0aXZlICovCi0gICAgICAgIHJhbWZzX3RydW5jYXRlLCAgICAgICAgIC8q
IHRydW5jYXRlICovCi0gICAgICAgIHJhbWZzX2xpbmssICAgICAgICAgICAgIC8qIGxpbmsgKi8K
LSAgICAgICAgKHZub3BfY2FjaGVfdCkgbnVsbHB0ciwgLyogYXJjICovCi0gICAgICAgIHJhbWZz
X2ZhbGxvY2F0ZSwgICAgICAgIC8qIGZhbGxvY2F0ZSAqLwotICAgICAgICByYW1mc19yZWFkbGlu
aywgICAgICAgICAvKiByZWFkIGxpbmsgKi8KLSAgICAgICAgcmFtZnNfc3ltbGluaywgICAgICAg
ICAgLyogc3ltYm9saWMgbGluayAqLworCQlyYW1mc19vcGVuLCAgICAgICAgICAgICAvKiBvcGVu
ICovCisJCXJhbWZzX2Nsb3NlLCAgICAgICAgICAgIC8qIGNsb3NlICovCisJCXJhbWZzX3JlYWQs
ICAgICAgICAgICAgIC8qIHJlYWQgKi8KKwkJcmFtZnNfd3JpdGUsICAgICAgICAgICAgLyogd3Jp
dGUgKi8KKwkJcmFtZnNfc2VlaywgICAgICAgICAgICAgLyogc2VlayAqLworCQlyYW1mc19pb2N0
bCwgICAgICAgICAgICAvKiBpb2N0bCAqLworCQlyYW1mc19mc3luYywgICAgICAgICAgICAvKiBm
c3luYyAqLworCQlyYW1mc19yZWFkZGlyLCAgICAgICAgICAvKiByZWFkZGlyICovCisJCXJhbWZz
X2xvb2t1cCwgICAgICAgICAgIC8qIGxvb2t1cCAqLworCQlyYW1mc19jcmVhdGUsICAgICAgICAg
ICAvKiBjcmVhdGUgKi8KKwkJcmFtZnNfcmVtb3ZlLCAgICAgICAgICAgLyogcmVtb3ZlICovCisJ
CXJhbWZzX3JlbmFtZSwgICAgICAgICAgIC8qIHJlbWFtZSAqLworCQlyYW1mc19ta2RpciwgICAg
ICAgICAgICAvKiBta2RpciAqLworCQlyYW1mc19ybWRpciwgICAgICAgICAgICAvKiBybWRpciAq
LworCQlyYW1mc19nZXRhdHRyLCAgICAgICAgICAvKiBnZXRhdHRyICovCisJCXJhbWZzX3NldGF0
dHIsICAgICAgICAgIC8qIHNldGF0dHIgKi8KKwkJcmFtZnNfaW5hY3RpdmUsICAgICAgICAgLyog
aW5hY3RpdmUgKi8KKwkJcmFtZnNfdHJ1bmNhdGUsICAgICAgICAgLyogdHJ1bmNhdGUgKi8KKwkJ
cmFtZnNfbGluaywgICAgICAgICAgICAgLyogbGluayAqLworCQkodm5vcF9jYWNoZV90KSBudWxs
cHRyLCAvKiBhcmMgKi8KKwkJcmFtZnNfZmFsbG9jYXRlLCAgICAgICAgLyogZmFsbG9jYXRlICov
CisJCXJhbWZzX3JlYWRsaW5rLCAgICAgICAgIC8qIHJlYWQgbGluayAqLworCQlyYW1mc19zeW1s
aW5rLCAgICAgICAgICAvKiBzeW1ib2xpYyBsaW5rICovCiB9OwogCi0tIAoyLjE5LjIKCgpfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwg
bWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xp
c3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Feb 20 15:58:39 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 20 Feb 2019 15:58:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gwUGd-0006av-G9; Wed, 20 Feb 2019 15:58:39 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=VbZN=Q3=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gwUGd-0006ad-2D
 for minios-devel@lists.xen.org; Wed, 20 Feb 2019 15:58:39 +0000
X-Inumbo-ID: 622aa141-3528-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 622aa141-3528-11e9-bc90-bc764e045a96;
 Wed, 20 Feb 2019 15:58:38 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 2295A104E36;
 Wed, 20 Feb 2019 16:58:37 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id qiJ_5nuBCKUe; Wed, 20 Feb 2019 16:58:37 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 01427104DEC
 for <minios-devel@lists.xen.org>; Wed, 20 Feb 2019 16:58:35 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Wed, 20 Feb 2019 16:58:34 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 20 Feb 2019 16:58:09 +0100
Message-ID: <20190220155812.29546-4-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190220155812.29546-1-yuri.volchkov@neclab.eu>
References: <20190220155812.29546-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v3 3/6] lib/ramfs: update license
 header for imported files
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: simon.kuenzer@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+ClJl
dmlld2VkLWJ5OiBTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4KLS0tCiBs
aWIvcmFtZnMvcmFtZnMuaCAgICAgICAgfCAzICsrKwogbGliL3JhbWZzL3JhbWZzX3Zmc29wcy5j
IHwgMyArKysKIGxpYi9yYW1mcy9yYW1mc192bm9wcy5jICB8IDMgKysrCiAzIGZpbGVzIGNoYW5n
ZWQsIDkgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2xpYi9yYW1mcy9yYW1mcy5oIGIvbGli
L3JhbWZzL3JhbWZzLmgKaW5kZXggZTRlZWI2NWYuLjAxZTRkYTA5IDEwMDY0NAotLS0gYS9saWIv
cmFtZnMvcmFtZnMuaAorKysgYi9saWIvcmFtZnMvcmFtZnMuaApAQCAtMSw1ICsxLDggQEAKKy8q
IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8KIC8qCiAgKiBDb3B5cmln
aHQgKGMpIDIwMDYtMjAwNywgS29oc3VrZSBPaHRhbmkKKyAqIENvcHlyaWdodCAoQykgMjAxMyBD
bG91ZGl1cyBTeXN0ZW1zLCBMdGQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTksIE5FQyBFdXJvcGUg
THRkLiwgTkVDIENvcnBvcmF0aW9uLgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKZGlmZiAtLWdpdCBhL2xpYi9yYW1mcy9yYW1mc192ZnNvcHMuYyBiL2xpYi9yYW1m
cy9yYW1mc192ZnNvcHMuYwppbmRleCA1M2FlNzU4YS4uNGRmNTRjNWYgMTAwNjQ0Ci0tLSBhL2xp
Yi9yYW1mcy9yYW1mc192ZnNvcHMuYworKysgYi9saWIvcmFtZnMvcmFtZnNfdmZzb3BzLmMKQEAg
LTEsNSArMSw4IEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICov
CiAvKgogICogQ29weXJpZ2h0IChjKSAyMDA2LTIwMDcsIEtvaHN1a2UgT2h0YW5pCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTQgQ2xvdWRpdXMgU3lzdGVtcywgTHRkLgorICogQ29weXJpZ2h0IChjKSAy
MDE5LCBORUMgRXVyb3BlIEx0ZC4sIE5FQyBDb3Jwb3JhdGlvbi4KICAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CmRpZmYgLS1naXQgYS9saWIvcmFtZnMvcmFtZnNfdm5v
cHMuYyBiL2xpYi9yYW1mcy9yYW1mc192bm9wcy5jCmluZGV4IDhiNTg2Zjg4Li40NTM4ZTljYiAx
MDA2NDQKLS0tIGEvbGliL3JhbWZzL3JhbWZzX3Zub3BzLmMKKysrIGIvbGliL3JhbWZzL3JhbWZz
X3Zub3BzLmMKQEAgLTEsNSArMSw4IEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNE
LTMtQ2xhdXNlICovCiAvKgogICogQ29weXJpZ2h0IChjKSAyMDA2LTIwMDcsIEtvaHN1a2UgT2h0
YW5pCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQ2xvdWRpdXMgU3lzdGVtcywgTHRkLgorICogQ29w
eXJpZ2h0IChjKSAyMDE5LCBORUMgRXVyb3BlIEx0ZC4sIE5FQyBDb3Jwb3JhdGlvbi4KICAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0tIAoyLjE5LjIKCgpfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFp
bGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3Rz
LnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Feb 20 15:58:45 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 20 Feb 2019 15:58:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gwUGj-0006cL-Hk; Wed, 20 Feb 2019 15:58:45 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=VbZN=Q3=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gwUGi-0006c6-9o
 for minios-devel@lists.xen.org; Wed, 20 Feb 2019 15:58:44 +0000
X-Inumbo-ID: 6553792e-3528-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 6553792e-3528-11e9-bc90-bc764e045a96;
 Wed, 20 Feb 2019 15:58:43 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 6B1A1104E36;
 Wed, 20 Feb 2019 16:58:42 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id iur98mHrSC_A; Wed, 20 Feb 2019 16:58:42 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 486B3104DEC
 for <minios-devel@lists.xen.org>; Wed, 20 Feb 2019 16:58:40 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Wed, 20 Feb 2019 16:58:40 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 20 Feb 2019 16:58:11 +0100
Message-ID: <20190220155812.29546-6-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190220155812.29546-1-yuri.volchkov@neclab.eu>
References: <20190220155812.29546-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v3 5/6] lib/ramfs: fix debug
 printouts
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: simon.kuenzer@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogbGliL3JhbWZzL3JhbWZzLmggICAgICAgIHwgMTAgKystLS0tLS0tLQogbGliL3JhbWZzL3Jh
bWZzX3Zmc29wcy5jIHwgIDIgKy0KIGxpYi9yYW1mcy9yYW1mc192bm9wcy5jICB8IDEyICsrKysr
KystLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMo
LSkKCmRpZmYgLS1naXQgYS9saWIvcmFtZnMvcmFtZnMuaCBiL2xpYi9yYW1mcy9yYW1mcy5oCmlu
ZGV4IDYxZmYzNWQyLi45MGNiZWUyMCAxMDA2NDQKLS0tIGEvbGliL3JhbWZzL3JhbWZzLmgKKysr
IGIvbGliL3JhbWZzL3JhbWZzLmgKQEAgLTM2LDE0ICszNiw2IEBACiAjaW5jbHVkZSA8dmZzY29y
ZS9wcmV4Lmg+CiAjaW5jbHVkZSA8c3RkYm9vbC5oPgogCi0vKiAjZGVmaW5lIERFQlVHX1JBTUZT
IDEgKi8KLQotI2lmZGVmIERFQlVHX1JBTUZTCi0jZGVmaW5lIERQUklOVEYoYSkJZHByaW50ZiBh
Ci0jZWxzZQotI2RlZmluZSBEUFJJTlRGKGEpICAgIGRvIHt9IHdoaWxlICgwKQotI2VuZGlmCi0K
IC8qCiAgKiBGaWxlL2RpcmVjdG9yeSBub2RlIGZvciBSQU1GUwogICovCkBAIC02Nyw0ICs1OSw2
IEBAIHN0cnVjdCByYW1mc19ub2RlICpyYW1mc19hbGxvY2F0ZV9ub2RlKGNvbnN0IGNoYXIgKm5h
bWUsIGludCB0eXBlKTsKIAogdm9pZCByYW1mc19mcmVlX25vZGUoc3RydWN0IHJhbWZzX25vZGUg
Km5vZGUpOwogCisjZGVmaW5lIFJBTUZTX05PREUodm5vZGUpICgoc3RydWN0IHJhbWZzX25vZGUg
Kikgdm5vZGUtPnZfZGF0YSkKKwogI2VuZGlmIC8qICFfUkFNRlNfSCAqLwpkaWZmIC0tZ2l0IGEv
bGliL3JhbWZzL3JhbWZzX3Zmc29wcy5jIGIvbGliL3JhbWZzL3JhbWZzX3Zmc29wcy5jCmluZGV4
IDNiNWMwNzVjLi41ZTBlYzRiOSAxMDA2NDQKLS0tIGEvbGliL3JhbWZzL3JhbWZzX3Zmc29wcy5j
CisrKyBiL2xpYi9yYW1mcy9yYW1mc192ZnNvcHMuYwpAQCAtNzgsNyArNzgsNyBAQCByYW1mc19t
b3VudChzdHJ1Y3QgbW91bnQgKm1wLCBjb25zdCBjaGFyICpkZXYgX191bnVzZWQsCiB7CiAJc3Ry
dWN0IHJhbWZzX25vZGUgKm5wOwogCi0JRFBSSU5URigoInJhbWZzX21vdW50OiBkZXY9JXNcbiIs
IGRldikpOworCXVrX3ByX2RlYnVnKCJyYW1mc19tb3VudDogZGV2PSVzXG4iLCBkZXYpOwogCiAJ
LyogQ3JlYXRlIGEgcm9vdCBub2RlICovCiAJbnAgPSByYW1mc19hbGxvY2F0ZV9ub2RlKCIvIiwg
VkRJUik7CmRpZmYgLS1naXQgYS9saWIvcmFtZnMvcmFtZnNfdm5vcHMuYyBiL2xpYi9yYW1mcy9y
YW1mc192bm9wcy5jCmluZGV4IDQ3NjE0ZmQzLi5iMTY2YjRhOSAxMDA2NDQKLS0tIGEvbGliL3Jh
bWZzL3JhbWZzX3Zub3BzLmMKKysrIGIvbGliL3JhbWZzL3JhbWZzX3Zub3BzLmMKQEAgLTI2MCw3
ICsyNjAsNyBAQCByYW1mc19ta2RpcihzdHJ1Y3Qgdm5vZGUgKmR2cCwgY2hhciAqbmFtZSwgbW9k
ZV90IG1vZGUpCiB7CiAJc3RydWN0IHJhbWZzX25vZGUgKm5wOwogCi0JRFBSSU5URigoIm1rZGly
ICVzXG4iLCBuYW1lKSk7CisJdWtfcHJfZGVidWcoIm1rZGlyICVzXG4iLCBuYW1lKTsKIAlpZiAo
c3RybGVuKG5hbWUpID4gTkFNRV9NQVgpIHsKIAkJcmV0dXJuIEVOQU1FVE9PTE9ORzsKIAl9CkBA
IC0zMjgsOSArMzI4LDEwIEBAIHJhbWZzX3JtZGlyKHN0cnVjdCB2bm9kZSAqZHZwLCBzdHJ1Y3Qg
dm5vZGUgKnZwLCBjaGFyICpuYW1lIF9fdW51c2VkKQogCiAvKiBSZW1vdmUgYSBmaWxlICovCiBz
dGF0aWMgaW50Ci1yYW1mc19yZW1vdmUoc3RydWN0IHZub2RlICpkdnAsIHN0cnVjdCB2bm9kZSAq
dnAsIGNoYXIgKm5hbWUgX191bnVzZWQpCityYW1mc19yZW1vdmUoc3RydWN0IHZub2RlICpkdnAs
IHN0cnVjdCB2bm9kZSAqdnAsIGNoYXIgKm5hbWUgX19tYXliZV91bnVzZWQpCiB7Ci0JRFBSSU5U
RigoInJlbW92ZSAlcyBpbiAlc1xuIiwgbmFtZSwgZHZwLT52X3BhdGgpKTsKKwl1a19wcl9kZWJ1
ZygicmVtb3ZlICVzIGluICVzXG4iLCBuYW1lLAorCQkgUkFNRlNfTk9ERShkdnApLT5ybl9uYW1l
KTsKIAlyZXR1cm4gcmFtZnNfcmVtb3ZlX25vZGUoZHZwLT52X2RhdGEsIHZwLT52X2RhdGEpOwog
fQogCkBAIC0zNDIsNyArMzQzLDggQEAgcmFtZnNfdHJ1bmNhdGUoc3RydWN0IHZub2RlICp2cCwg
b2ZmX3QgbGVuZ3RoKQogCXZvaWQgKm5ld19idWY7CiAJc2l6ZV90IG5ld19zaXplOwogCi0JRFBS
SU5URigoInRydW5jYXRlICVzIGxlbmd0aD0lZFxuIiwgdnAtPnZfcGF0aCwgbGVuZ3RoKSk7CisJ
dWtfcHJfZGVidWcoInRydW5jYXRlICVzIGxlbmd0aD0lbGxkXG4iLCBSQU1GU19OT0RFKHZwKS0+
cm5fbmFtZSwKKwkJIChsb25nIGxvbmcpIGxlbmd0aCk7CiAJbnAgPSB2cC0+dl9kYXRhOwogCiAJ
aWYgKGxlbmd0aCA9PSAwKSB7CkBAIC0zODUsNyArMzg3LDcgQEAgcmFtZnNfY3JlYXRlKHN0cnVj
dCB2bm9kZSAqZHZwLCBjaGFyICpuYW1lLCBtb2RlX3QgbW9kZSkKIAkJcmV0dXJuIEVOQU1FVE9P
TE9ORzsKIAl9CiAKLQlEUFJJTlRGKCgiY3JlYXRlICVzIGluICVzXG4iLCBuYW1lLCBkdnAtPnZf
cGF0aCkpOworCXVrX3ByX2RlYnVnKCJjcmVhdGUgJXMgaW4gJXNcbiIsIG5hbWUsIFJBTUZTX05P
REUoZHZwKS0+cm5fbmFtZSk7CiAJaWYgKCFTX0lTUkVHKG1vZGUpKQogCQlyZXR1cm4gRUlOVkFM
OwogCi0tIAoyLjE5LjIKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5w
cm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8v
bWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Feb 20 16:00:54 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 20 Feb 2019 16:00:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gwUIn-0007ks-Nz; Wed, 20 Feb 2019 16:00:53 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=VbZN=Q3=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gwUIm-0007kn-EF
 for minios-devel@lists.xen.org; Wed, 20 Feb 2019 16:00:52 +0000
X-Inumbo-ID: b1088193-3528-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id b1088193-3528-11e9-bc90-bc764e045a96;
 Wed, 20 Feb 2019 16:00:50 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id D0084F2039;
 Wed, 20 Feb 2019 16:58:39 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id ixtHUJNB9wTq; Wed, 20 Feb 2019 16:58:39 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 9E300F2017
 for <minios-devel@lists.xen.org>; Wed, 20 Feb 2019 16:58:37 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Wed, 20 Feb 2019 16:58:37 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 20 Feb 2019 16:58:10 +0100
Message-ID: <20190220155812.29546-5-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190220155812.29546-1-yuri.volchkov@neclab.eu>
References: <20190220155812.29546-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v3 4/6] lib/ramfs: adapt imported
 ramfs to Unikraft
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: simon.kuenzer@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogbGliL0NvbmZpZy51ayAgICAgICAgICAgIHwgICAxICsKIGxpYi9NYWtlZmlsZS51ayAgICAg
ICAgICB8ICAgMSArCiBsaWIvcmFtZnMvQ29uZmlnLnVrICAgICAgfCAgIDQgKwogbGliL3JhbWZz
L01ha2VmaWxlLnVrICAgIHwgICA0ICsKIGxpYi9yYW1mcy9leHBvcnRzeW1zLnVrICB8ICAgMSAr
CiBsaWIvcmFtZnMvcmFtZnMuaCAgICAgICAgfCAgIDUgKy0KIGxpYi9yYW1mcy9yYW1mc192ZnNv
cHMuYyB8ICAyOCArKysrLS0tCiBsaWIvcmFtZnMvcmFtZnNfdm5vcHMuYyAgfCAxNjUgKysrKysr
KysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCiA4IGZpbGVzIGNoYW5nZWQsIDEyMCBp
bnNlcnRpb25zKCspLCA4OSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvcmFt
ZnMvQ29uZmlnLnVrCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3JhbWZzL01ha2VmaWxlLnVrCiBj
cmVhdGUgbW9kZSAxMDA2NDQgbGliL3JhbWZzL2V4cG9ydHN5bXMudWsKCmRpZmYgLS1naXQgYS9s
aWIvQ29uZmlnLnVrIGIvbGliL0NvbmZpZy51awppbmRleCA0NTMyMWVmZS4uN2Q4NmY3NmMgMTAw
NjQ0Ci0tLSBhL2xpYi9Db25maWcudWsKKysrIGIvbGliL0NvbmZpZy51awpAQCAtMzgsNiArMzgs
NyBAQCBzb3VyY2UgImxpYi91a3NjaGVkL0NvbmZpZy51ayIKIHNvdXJjZSAibGliL3Vrc2NoZWRj
b29wL0NvbmZpZy51ayIKIHNvdXJjZSAibGliL2ZkdC9Db25maWcudWsiCiBzb3VyY2UgImxpYi92
ZnNjb3JlL0NvbmZpZy51ayIKK3NvdXJjZSAibGliL3JhbWZzL0NvbmZpZy51ayIKIHNvdXJjZSAi
bGliL3VrbG9jay9Db25maWcudWsiCiBzb3VyY2UgImxpYi91a21waS9Db25maWcudWsiCiBzb3Vy
Y2UgImxpYi91a3N3cmFuZC9Db25maWcudWsiCmRpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUudWsg
Yi9saWIvTWFrZWZpbGUudWsKaW5kZXggNGMyY2M4N2QuLmQ2NmM3ZWU5IDEwMDY0NAotLS0gYS9s
aWIvTWFrZWZpbGUudWsKKysrIGIvbGliL01ha2VmaWxlLnVrCkBAIC0xNiw2ICsxNiw3IEBAICQo
ZXZhbCAkKGNhbGwgX2ltcG9ydF9saWIsJChDT05GSUdfVUtfQkFTRSkvbGliL3Vrc2NoZWQpKQog
JChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENPTkZJR19VS19CQVNFKS9saWIvdWtzY2hlZGNv
b3ApKQogJChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENPTkZJR19VS19CQVNFKS9saWIvZmR0
KSkKICQoZXZhbCAkKGNhbGwgX2ltcG9ydF9saWIsJChDT05GSUdfVUtfQkFTRSkvbGliL3Zmc2Nv
cmUpKQorJChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENPTkZJR19VS19CQVNFKS9saWIvcmFt
ZnMpKQogJChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENPTkZJR19VS19CQVNFKS9saWIvdWts
b2NrKSkKICQoZXZhbCAkKGNhbGwgX2ltcG9ydF9saWIsJChDT05GSUdfVUtfQkFTRSkvbGliL3Vr
bXBpKSkKICQoZXZhbCAkKGNhbGwgX2ltcG9ydF9saWIsJChDT05GSUdfVUtfQkFTRSkvbGliL3Vr
YnVzKSkKZGlmZiAtLWdpdCBhL2xpYi9yYW1mcy9Db25maWcudWsgYi9saWIvcmFtZnMvQ29uZmln
LnVrCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi41MmU0Mzg4YwotLS0gL2Rl
di9udWxsCisrKyBiL2xpYi9yYW1mcy9Db25maWcudWsKQEAgLTAsMCArMSw0IEBACitjb25maWcg
TElCUkFNRlMKKwlib29sICJyYW1mczogc2ltcGxlIFJBTSBmaWxlIHN5c3RlbSIKKwlkZWZhdWx0
IG4KKwlkZXBlbmRzIG9uIExJQlZGU0NPUkUKZGlmZiAtLWdpdCBhL2xpYi9yYW1mcy9NYWtlZmls
ZS51ayBiL2xpYi9yYW1mcy9NYWtlZmlsZS51awpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMC4uOWE0NDMzNTgKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvcmFtZnMvTWFrZWZpbGUu
dWsKQEAgLTAsMCArMSw0IEBACiskKGV2YWwgJChjYWxsIGFkZGxpYl9zLGxpYnJhbWZzLCQoQ09O
RklHX0xJQlJBTUZTKSkpCisKK0xJQlJBTUZTX1NSQ1MteSArPSAkKExJQlJBTUZTX0JBU0UpL3Jh
bWZzX3Zmc29wcy5jCitMSUJSQU1GU19TUkNTLXkgKz0gJChMSUJSQU1GU19CQVNFKS9yYW1mc192
bm9wcy5jCmRpZmYgLS1naXQgYS9saWIvcmFtZnMvZXhwb3J0c3ltcy51ayBiL2xpYi9yYW1mcy9l
eHBvcnRzeW1zLnVrCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi5jODZjM2Yz
NQotLS0gL2Rldi9udWxsCisrKyBiL2xpYi9yYW1mcy9leHBvcnRzeW1zLnVrCkBAIC0wLDAgKzEg
QEAKK25vbmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9saWIvcmFt
ZnMvcmFtZnMuaCBiL2xpYi9yYW1mcy9yYW1mcy5oCmluZGV4IDAxZTRkYTA5Li42MWZmMzVkMiAx
MDA2NDQKLS0tIGEvbGliL3JhbWZzL3JhbWZzLmgKKysrIGIvbGliL3JhbWZzL3JhbWZzLmgKQEAg
LTMzLDcgKzMzLDggQEAKICNpZm5kZWYgX1JBTUZTX0gKICNkZWZpbmUgX1JBTUZTX0gKIAotI2lu
Y2x1ZGUgPG9zdi9wcmV4Lmg+CisjaW5jbHVkZSA8dmZzY29yZS9wcmV4Lmg+CisjaW5jbHVkZSA8
c3RkYm9vbC5oPgogCiAvKiAjZGVmaW5lIERFQlVHX1JBTUZTIDEgKi8KIApAQCAtNDMsOCArNDQs
NiBAQAogI2RlZmluZSBEUFJJTlRGKGEpICAgIGRvIHt9IHdoaWxlICgwKQogI2VuZGlmCiAKLSNk
ZWZpbmUgQVNTRVJUKGUpICAgIGFzc2VydChlKQotCiAvKgogICogRmlsZS9kaXJlY3Rvcnkgbm9k
ZSBmb3IgUkFNRlMKICAqLwpkaWZmIC0tZ2l0IGEvbGliL3JhbWZzL3JhbWZzX3Zmc29wcy5jIGIv
bGliL3JhbWZzL3JhbWZzX3Zmc29wcy5jCmluZGV4IDRkZjU0YzVmLi4zYjVjMDc1YyAxMDA2NDQK
LS0tIGEvbGliL3JhbWZzL3JhbWZzX3Zmc29wcy5jCisrKyBiL2xpYi9yYW1mcy9yYW1mc192ZnNv
cHMuYwpAQCAtMzIsOSArMzIsMTAgQEAKIAogI2luY2x1ZGUgPGVycm5vLmg+CiAKLSNpbmNsdWRl
IDxvc3Yvdm5vZGUuaD4KLSNpbmNsdWRlIDxvc3YvbW91bnQuaD4KLSNpbmNsdWRlIDxvc3YvZGVu
dHJ5Lmg+CisjZGVmaW5lIF9CU0RfU09VUkNFCisjaW5jbHVkZSA8dmZzY29yZS92bm9kZS5oPgor
I2luY2x1ZGUgPHZmc2NvcmUvbW91bnQuaD4KKyNpbmNsdWRlIDx2ZnNjb3JlL2RlbnRyeS5oPgog
CiAjaW5jbHVkZSAicmFtZnMuaCIKIApAQCAtNDQsOSArNDUsOSBAQCBzdGF0aWMgaW50IHJhbWZz
X21vdW50KHN0cnVjdCBtb3VudCAqbXAsIGNvbnN0IGNoYXIgKmRldiwgaW50IGZsYWdzLCBjb25z
dCB2b2lkCiAKIHN0YXRpYyBpbnQgcmFtZnNfdW5tb3VudChzdHJ1Y3QgbW91bnQgKm1wLCBpbnQg
ZmxhZ3MpOwogCi0jZGVmaW5lIHJhbWZzX3N5bmMgICAgKCh2ZnNvcF9zeW5jX3QpdmZzX251bGxv
cCkKLSNkZWZpbmUgcmFtZnNfdmdldCAgICAoKHZmc29wX3ZnZXRfdCl2ZnNfbnVsbG9wKQotI2Rl
ZmluZSByYW1mc19zdGF0ZnMgICAgKCh2ZnNvcF9zdGF0ZnNfdCl2ZnNfbnVsbG9wKQorI2RlZmlu
ZSByYW1mc19zeW5jICAgICgodmZzb3Bfc3luY190KXZmc2NvcmVfbnVsbG9wKQorI2RlZmluZSBy
YW1mc192Z2V0ICAgICgodmZzb3BfdmdldF90KXZmc2NvcmVfbnVsbG9wKQorI2RlZmluZSByYW1m
c19zdGF0ZnMgICAgKCh2ZnNvcF9zdGF0ZnNfdCl2ZnNjb3JlX251bGxvcCkKIAogLyoKICAqIEZp
bGUgc3lzdGVtIG9wZXJhdGlvbnMKQEAgLTYwLDExICs2MSwyMCBAQCBzdHJ1Y3QgdmZzb3BzIHJh
bWZzX3Zmc29wcyA9IHsKIAkJJnJhbWZzX3Zub3BzLCAgICAgIC8qIHZub3BzICovCiB9OwogCitz
dGF0aWMgc3RydWN0IHZmc2NvcmVfZnNfdHlwZSBmc19yYW1mcyA9IHsKKwkudnNfbmFtZSA9ICJy
YW1mcyIsCisJLnZzX2luaXQgPSBOVUxMLAorCS52c19vcCA9ICZyYW1mc192ZnNvcHMsCit9Owor
CitVS19GU19SRUdJU1RFUihmc19yYW1mcyk7CisKIC8qCiAgKiBNb3VudCBhIGZpbGUgc3lzdGVt
LgogICovCiBzdGF0aWMgaW50Ci1yYW1mc19tb3VudChzdHJ1Y3QgbW91bnQgKm1wLCBjb25zdCBj
aGFyICpkZXYsIGludCBmbGFncywgY29uc3Qgdm9pZCAqZGF0YSkKK3JhbWZzX21vdW50KHN0cnVj
dCBtb3VudCAqbXAsIGNvbnN0IGNoYXIgKmRldiBfX3VudXNlZCwKKwkgICAgaW50IGZsYWdzIF9f
dW51c2VkLCBjb25zdCB2b2lkICpkYXRhIF9fdW51c2VkKQogewogCXN0cnVjdCByYW1mc19ub2Rl
ICpucDsKIApAQCAtODYsOCArOTYsOCBAQCByYW1mc19tb3VudChzdHJ1Y3QgbW91bnQgKm1wLCBj
b25zdCBjaGFyICpkZXYsIGludCBmbGFncywgY29uc3Qgdm9pZCAqZGF0YSkKICAqICAgICAgIGRp
cmVjdG9yaWVzLCBhbmQgaXQgcmVxdWlyZXMgbW9yZSB3b3JrLi4uCiAgKi8KIHN0YXRpYyBpbnQK
LXJhbWZzX3VubW91bnQoc3RydWN0IG1vdW50ICptcCwgaW50IGZsYWdzKQorcmFtZnNfdW5tb3Vu
dChzdHJ1Y3QgbW91bnQgKm1wLCBpbnQgZmxhZ3MgX191bnVzZWQpCiB7Ci0JcmVsZWFzZV9tcF9k
ZW50cmllcyhtcCk7CisJdmZzY29yZV9yZWxlYXNlX21wX2RlbnRyaWVzKG1wKTsKIAlyZXR1cm4g
MDsKIH0KZGlmZiAtLWdpdCBhL2xpYi9yYW1mcy9yYW1mc192bm9wcy5jIGIvbGliL3JhbWZzL3Jh
bWZzX3Zub3BzLmMKaW5kZXggNDUzOGU5Y2IuLjQ3NjE0ZmQzIDEwMDY0NAotLS0gYS9saWIvcmFt
ZnMvcmFtZnNfdm5vcHMuYworKysgYi9saWIvcmFtZnMvcmFtZnNfdm5vcHMuYwpAQCAtMzMsNyAr
MzMsOSBAQAogLyoKICAqIHJtYWZzX3Zub3BzLmMgLSB2bm9kZSBvcGVyYXRpb25zIGZvciBSQU0g
ZmlsZSBzeXN0ZW0uCiAgKi8KKyNkZWZpbmUgX0dOVV9TT1VSQ0UKIAorI2luY2x1ZGUgPHVrL2Vz
c2VudGlhbHMuaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogI2luY2x1ZGUgPGRpcmVudC5oPgog
I2luY2x1ZGUgPHN5cy9wYXJhbS5oPgpAQCAtNDEsMjQgKzQzLDI5IEBACiAjaW5jbHVkZSA8ZXJy
bm8uaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRl
IDxmY250bC5oPgogCi0jaW5jbHVkZSA8b3N2L3ByZXguaD4KLSNpbmNsdWRlIDxvc3Yvdm5vZGUu
aD4KLSNpbmNsdWRlIDxvc3YvZmlsZS5oPgotI2luY2x1ZGUgPG9zdi9tb3VudC5oPgotI2luY2x1
ZGUgPG9zdi92bm9kZV9hdHRyLmg+CisjaW5jbHVkZSA8dmZzY29yZS9wcmV4Lmg+CisjaW5jbHVk
ZSA8dmZzY29yZS92bm9kZS5oPgorI2luY2x1ZGUgPHZmc2NvcmUvbW91bnQuaD4KKyNpbmNsdWRl
IDx2ZnNjb3JlL3Vpby5oPgorI2luY2x1ZGUgPHZmc2NvcmUvZmlsZS5oPgogCiAjaW5jbHVkZSAi
cmFtZnMuaCIKKyNpbmNsdWRlIDxkaXJlbnQuaD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1
ZGUgPHZmc2NvcmUvZnMuaD4KIAotc3RhdGljIG11dGV4X3QgcmFtZnNfbG9jayA9IE1VVEVYX0lO
SVRJQUxJWkVSOworc3RhdGljIHN0cnVjdCB1a19tdXRleCByYW1mc19sb2NrID0gVUtfTVVURVhf
SU5JVElBTElaRVIocmFtZnNfbG9jayk7CiBzdGF0aWMgdWludDY0X3QgaW5vZGVfY291bnQgPSAx
OyAvKiBpbm9kZSAwIGlzIHJlc2VydmVkIHRvIHJvb3QgKi8KIAogc3RhdGljIHZvaWQKLXNldF90
aW1lc190b19ub3coc3RydWN0IHRpbWVzcGVjICp0aW1lMSwgc3RydWN0IHRpbWVzcGVjICp0aW1l
MiA9IG51bGxwdHIsIHN0cnVjdCB0aW1lc3BlYyAqdGltZTMgPSBudWxscHRyKQorc2V0X3RpbWVz
X3RvX25vdyhzdHJ1Y3QgdGltZXNwZWMgKnRpbWUxLCBzdHJ1Y3QgdGltZXNwZWMgKnRpbWUyLAor
CQkgc3RydWN0IHRpbWVzcGVjICp0aW1lMykKIHsKLQlzdHJ1Y3QgdGltZXNwZWMgbm93OwotCWNs
b2NrX2dldHRpbWUoQ0xPQ0tfUkVBTFRJTUUsICZub3cpOworCXN0cnVjdCB0aW1lc3BlYyBub3cg
PSB7MCwgMH07CisKKwkvKiBUT0RPOiBpbXBsZW1lbnQgdGhlIHJlYWwgY2xvY2tfZ2V0dGltZSAq
LworCS8qIGNsb2NrX2dldHRpbWUoQ0xPQ0tfUkVBTFRJTUUsICZub3cpOyAqLwogCWlmICh0aW1l
MSkgewogCQltZW1jcHkodGltZTEsICZub3csIHNpemVvZihzdHJ1Y3QgdGltZXNwZWMpKTsKIAl9
CkBAIC03NSw3ICs4Miw3IEBAIHJhbWZzX2FsbG9jYXRlX25vZGUoY29uc3QgY2hhciAqbmFtZSwg
aW50IHR5cGUpCiB7CiAJc3RydWN0IHJhbWZzX25vZGUgKm5wOwogCi0JbnAgPSAocmFtZnNfbm9k
ZSAqKSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCByYW1mc19ub2RlKSk7CisJbnAgPSBtYWxsb2Moc2l6
ZW9mKHN0cnVjdCByYW1mc19ub2RlKSk7CiAJaWYgKG5wID09IE5VTEwpCiAJCXJldHVybiBOVUxM
OwogCW1lbXNldChucCwgMCwgc2l6ZW9mKHN0cnVjdCByYW1mc19ub2RlKSk7CkBAIC0xMjEsNyAr
MTI4LDcgQEAgcmFtZnNfYWRkX25vZGUoc3RydWN0IHJhbWZzX25vZGUgKmRucCwgY2hhciAqbmFt
ZSwgaW50IHR5cGUpCiAJaWYgKG5wID09IE5VTEwpCiAJCXJldHVybiBOVUxMOwogCi0JbXV0ZXhf
bG9jaygmcmFtZnNfbG9jayk7CisJdWtfbXV0ZXhfbG9jaygmcmFtZnNfbG9jayk7CiAKIAkvKiBM
aW5rIHRvIHRoZSBkaXJlY3RvcnkgbGlzdCAqLwogCWlmIChkbnAtPnJuX2NoaWxkID09IE5VTEwp
IHsKQEAgLTEzMyw5ICsxNDAsOSBAQCByYW1mc19hZGRfbm9kZShzdHJ1Y3QgcmFtZnNfbm9kZSAq
ZG5wLCBjaGFyICpuYW1lLCBpbnQgdHlwZSkKIAkJcHJldi0+cm5fbmV4dCA9IG5wOwogCX0KIAot
CXNldF90aW1lc190b19ub3coJihkbnAtPnJuX210aW1lKSwgJihkbnAtPnJuX2N0aW1lKSk7CisJ
c2V0X3RpbWVzX3RvX25vdygmKGRucC0+cm5fbXRpbWUpLCAmKGRucC0+cm5fY3RpbWUpLCBOVUxM
KTsKIAotCW11dGV4X3VubG9jaygmcmFtZnNfbG9jayk7CisJdWtfbXV0ZXhfdW5sb2NrKCZyYW1m
c19sb2NrKTsKIAlyZXR1cm4gbnA7CiB9CiAKQEAgLTE0Nyw3ICsxNTQsNyBAQCByYW1mc19yZW1v
dmVfbm9kZShzdHJ1Y3QgcmFtZnNfbm9kZSAqZG5wLCBzdHJ1Y3QgcmFtZnNfbm9kZSAqbnApCiAJ
aWYgKGRucC0+cm5fY2hpbGQgPT0gTlVMTCkKIAkJcmV0dXJuIEVCVVNZOwogCi0JbXV0ZXhfbG9j
aygmcmFtZnNfbG9jayk7CisJdWtfbXV0ZXhfbG9jaygmcmFtZnNfbG9jayk7CiAKIAkvKiBVbmxp
bmsgZnJvbSB0aGUgZGlyZWN0b3J5IGxpc3QgKi8KIAlpZiAoZG5wLT5ybl9jaGlsZCA9PSBucCkg
ewpAQCAtMTU2LDcgKzE2Myw3IEBAIHJhbWZzX3JlbW92ZV9ub2RlKHN0cnVjdCByYW1mc19ub2Rl
ICpkbnAsIHN0cnVjdCByYW1mc19ub2RlICpucCkKIAkJZm9yIChwcmV2ID0gZG5wLT5ybl9jaGls
ZDsgcHJldi0+cm5fbmV4dCAhPSBucDsKIAkJCSBwcmV2ID0gcHJldi0+cm5fbmV4dCkgewogCQkJ
aWYgKHByZXYtPnJuX25leHQgPT0gTlVMTCkgewotCQkJCW11dGV4X3VubG9jaygmcmFtZnNfbG9j
ayk7CisJCQkJdWtfbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKIAkJCQlyZXR1cm4gRU5PRU5U
OwogCQkJfQogCQl9CkBAIC0xNjQsOSArMTcxLDkgQEAgcmFtZnNfcmVtb3ZlX25vZGUoc3RydWN0
IHJhbWZzX25vZGUgKmRucCwgc3RydWN0IHJhbWZzX25vZGUgKm5wKQogCX0KIAlyYW1mc19mcmVl
X25vZGUobnApOwogCi0Jc2V0X3RpbWVzX3RvX25vdygmKGRucC0+cm5fbXRpbWUpLCAmKGRucC0+
cm5fY3RpbWUpKTsKKwlzZXRfdGltZXNfdG9fbm93KCYoZG5wLT5ybl9tdGltZSksICYoZG5wLT5y
bl9jdGltZSksIE5VTEwpOwogCi0JbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKKwl1a19tdXRl
eF91bmxvY2soJnJhbWZzX2xvY2spOwogCXJldHVybiAwOwogfQogCkBAIC0xOTMsNyArMjAwLDcg
QEAgcmFtZnNfcmVuYW1lX25vZGUoc3RydWN0IHJhbWZzX25vZGUgKm5wLCBjaGFyICpuYW1lKQog
CQlucC0+cm5fbmFtZSA9IHRtcDsKIAl9CiAJbnAtPnJuX25hbWVsZW4gPSBsZW47Ci0Jc2V0X3Rp
bWVzX3RvX25vdygmKG5wLT5ybl9jdGltZSkpOworCXNldF90aW1lc190b19ub3coJihucC0+cm5f
Y3RpbWUpLCBOVUxMLCBOVUxMKTsKIAlyZXR1cm4gMDsKIH0KIApAQCAtMjEwLDEwICsyMTcsMTAg
QEAgcmFtZnNfbG9va3VwKHN0cnVjdCB2bm9kZSAqZHZwLCBjaGFyICpuYW1lLCBzdHJ1Y3Qgdm5v
ZGUgKip2cHApCiAJaWYgKCpuYW1lID09ICdcMCcpCiAJCXJldHVybiBFTk9FTlQ7CiAKLQltdXRl
eF9sb2NrKCZyYW1mc19sb2NrKTsKKwl1a19tdXRleF9sb2NrKCZyYW1mc19sb2NrKTsKIAogCWxl
biA9IHN0cmxlbihuYW1lKTsKLQlkbnAgPSAocmFtZnNfbm9kZSAqKSBkdnAtPnZfZGF0YTsKKwlk
bnAgPSBkdnAtPnZfZGF0YTsKIAlmb3VuZCA9IDA7CiAJZm9yIChucCA9IGRucC0+cm5fY2hpbGQ7
IG5wICE9IE5VTEw7IG5wID0gbnAtPnJuX25leHQpIHsKIAkJaWYgKG5wLT5ybl9uYW1lbGVuID09
IGxlbiAmJgpAQCAtMjIzLDE3ICsyMzAsMTcgQEAgcmFtZnNfbG9va3VwKHN0cnVjdCB2bm9kZSAq
ZHZwLCBjaGFyICpuYW1lLCBzdHJ1Y3Qgdm5vZGUgKip2cHApCiAJCX0KIAl9CiAJaWYgKGZvdW5k
ID09IDApIHsKLQkJbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKKwkJdWtfbXV0ZXhfdW5sb2Nr
KCZyYW1mc19sb2NrKTsKIAkJcmV0dXJuIEVOT0VOVDsKIAl9Ci0JaWYgKHZnZXQoZHZwLT52X21v
dW50LCBpbm9kZV9jb3VudCsrLCAmdnApKSB7CisJaWYgKHZmc2NvcmVfdmdldChkdnAtPnZfbW91
bnQsIGlub2RlX2NvdW50KyssICZ2cCkpIHsKIAkJLyogZm91bmQgaW4gY2FjaGUgKi8KIAkJKnZw
cCA9IHZwOwotCQltdXRleF91bmxvY2soJnJhbWZzX2xvY2spOworCQl1a19tdXRleF91bmxvY2so
JnJhbWZzX2xvY2spOwogCQlyZXR1cm4gMDsKIAl9CiAJaWYgKCF2cCkgewotCQltdXRleF91bmxv
Y2soJnJhbWZzX2xvY2spOworCQl1a19tdXRleF91bmxvY2soJnJhbWZzX2xvY2spOwogCQlyZXR1
cm4gRU5PTUVNOwogCX0KIAl2cC0+dl9kYXRhID0gbnA7CkBAIC0yNDEsNyArMjQ4LDcgQEAgcmFt
ZnNfbG9va3VwKHN0cnVjdCB2bm9kZSAqZHZwLCBjaGFyICpuYW1lLCBzdHJ1Y3Qgdm5vZGUgKip2
cHApCiAJdnAtPnZfdHlwZSA9IG5wLT5ybl90eXBlOwogCXZwLT52X3NpemUgPSBucC0+cm5fc2l6
ZTsKIAotCW11dGV4X3VubG9jaygmcmFtZnNfbG9jayk7CisJdWtfbXV0ZXhfdW5sb2NrKCZyYW1m
c19sb2NrKTsKIAogCSp2cHAgPSB2cDsKIApAQCAtMjYxLDcgKzI2OCw3IEBAIHJhbWZzX21rZGly
KHN0cnVjdCB2bm9kZSAqZHZwLCBjaGFyICpuYW1lLCBtb2RlX3QgbW9kZSkKIAlpZiAoIVNfSVNE
SVIobW9kZSkpCiAJCXJldHVybiBFSU5WQUw7CiAKLQlucCA9IChyYW1mc19ub2RlICopIHJhbWZz
X2FkZF9ub2RlKChyYW1mc19ub2RlICopIGR2cC0+dl9kYXRhLCBuYW1lLCBWRElSKTsKKwlucCA9
IHJhbWZzX2FkZF9ub2RlKGR2cC0+dl9kYXRhLCBuYW1lLCBWRElSKTsKIAlpZiAobnAgPT0gTlVM
TCkKIAkJcmV0dXJuIEVOT01FTTsKIAlucC0+cm5fc2l6ZSA9IDA7CkBAIC0yNzUsNyArMjgyLDcg
QEAgcmFtZnNfc3ltbGluayhzdHJ1Y3Qgdm5vZGUgKmR2cCwgY2hhciAqbmFtZSwgY2hhciAqbGlu
aykKIAlpZiAoc3RybGVuKG5hbWUpID4gTkFNRV9NQVgpIHsKIAkJcmV0dXJuIEVOQU1FVE9PTE9O
RzsKIAl9Ci0JYXV0byBucCA9IHJhbWZzX2FkZF9ub2RlKChyYW1mc19ub2RlICopIGR2cC0+dl9k
YXRhLCBuYW1lLCBWTE5LKTsKKwlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSByYW1mc19hZGRfbm9k
ZShkdnAtPnZfZGF0YSwgbmFtZSwgVkxOSyk7CiAJaWYgKG5wID09IE5VTEwpCiAJCXJldHVybiBF
Tk9NRU07CiAJLy8gU2F2ZSB0aGUgbGluayB0YXJnZXQgd2l0aG91dCB0aGUgZmluYWwgbnVsbCwg
YXMgcmVhZGxpbmsoKSB3YW50cyBpdC4KQEAgLTI4NiwxMCArMjkzLDEwIEBAIHJhbWZzX3N5bWxp
bmsoc3RydWN0IHZub2RlICpkdnAsIGNoYXIgKm5hbWUsIGNoYXIgKmxpbmspCiAJcmV0dXJuIDA7
CiB9CiAKLXN0YXRpYyBpbnQKK3N0YXRpYyBzc2l6ZV90CiByYW1mc19yZWFkbGluayhzdHJ1Y3Qg
dm5vZGUgKnZwLCBzdHJ1Y3QgdWlvICp1aW8pCiB7Ci0Jc3RydWN0IHJhbWZzX25vZGUgKm5wID0g
KHJhbWZzX25vZGUgKikgdnAtPnZfZGF0YTsKKwlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSB2cC0+
dl9kYXRhOwogCXNpemVfdCBsZW47CiAKIAlpZiAodnAtPnZfdHlwZSAhPSBWTE5LKSB7CkBAIC0z
MDgsMjMgKzMxNSwyMyBAQCByYW1mc19yZWFkbGluayhzdHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3Qg
dWlvICp1aW8pCiAJZWxzZQogCQlsZW4gPSB1aW8tPnVpb19yZXNpZDsKIAotCXNldF90aW1lc190
b19ub3coICYobnAtPnJuX2F0aW1lKSk7Ci0JcmV0dXJuIHVpb21vdmUobnAtPnJuX2J1ZiArIHVp
by0+dWlvX29mZnNldCwgbGVuLCB1aW8pOworCXNldF90aW1lc190b19ub3coJihucC0+cm5fYXRp
bWUpLCBOVUxMLCBOVUxMKTsKKwlyZXR1cm4gdmZzY29yZV91aW9tb3ZlKG5wLT5ybl9idWYgKyB1
aW8tPnVpb19vZmZzZXQsIGxlbiwgdWlvKTsKIH0KIAogLyogUmVtb3ZlIGEgZGlyZWN0b3J5ICov
CiBzdGF0aWMgaW50Ci1yYW1mc19ybWRpcihzdHJ1Y3Qgdm5vZGUgKmR2cCwgc3RydWN0IHZub2Rl
ICp2cCwgY2hhciAqbmFtZSkKK3JhbWZzX3JtZGlyKHN0cnVjdCB2bm9kZSAqZHZwLCBzdHJ1Y3Qg
dm5vZGUgKnZwLCBjaGFyICpuYW1lIF9fdW51c2VkKQogewotCXJldHVybiByYW1mc19yZW1vdmVf
bm9kZSgocmFtZnNfbm9kZSAqKSBkdnAtPnZfZGF0YSwgKHJhbWZzX25vZGUgKikgdnAtPnZfZGF0
YSk7CisJcmV0dXJuIHJhbWZzX3JlbW92ZV9ub2RlKGR2cC0+dl9kYXRhLCB2cC0+dl9kYXRhKTsK
IH0KIAogLyogUmVtb3ZlIGEgZmlsZSAqLwogc3RhdGljIGludAotcmFtZnNfcmVtb3ZlKHN0cnVj
dCB2bm9kZSAqZHZwLCBzdHJ1Y3Qgdm5vZGUgKnZwLCBjaGFyICpuYW1lKQorcmFtZnNfcmVtb3Zl
KHN0cnVjdCB2bm9kZSAqZHZwLCBzdHJ1Y3Qgdm5vZGUgKnZwLCBjaGFyICpuYW1lIF9fdW51c2Vk
KQogewogCURQUklOVEYoKCJyZW1vdmUgJXMgaW4gJXNcbiIsIG5hbWUsIGR2cC0+dl9wYXRoKSk7
Ci0JcmV0dXJuIHJhbWZzX3JlbW92ZV9ub2RlKChyYW1mc19ub2RlICopIGR2cC0+dl9kYXRhLCAo
cmFtZnNfbm9kZSAqKSB2cC0+dl9kYXRhKTsKKwlyZXR1cm4gcmFtZnNfcmVtb3ZlX25vZGUoZHZw
LT52X2RhdGEsIHZwLT52X2RhdGEpOwogfQogCiAvKiBUcnVuY2F0ZSBmaWxlICovCkBAIC0zMzYs
NyArMzQzLDcgQEAgcmFtZnNfdHJ1bmNhdGUoc3RydWN0IHZub2RlICp2cCwgb2ZmX3QgbGVuZ3Ro
KQogCXNpemVfdCBuZXdfc2l6ZTsKIAogCURQUklOVEYoKCJ0cnVuY2F0ZSAlcyBsZW5ndGg9JWRc
biIsIHZwLT52X3BhdGgsIGxlbmd0aCkpOwotCW5wID0gKHJhbWZzX25vZGUgKikgdnAtPnZfZGF0
YTsKKwlucCA9IHZwLT52X2RhdGE7CiAKIAlpZiAobGVuZ3RoID09IDApIHsKIAkJaWYgKG5wLT5y
bl9idWYgIT0gTlVMTCkgewpAQCAtMzQ1LDggKzM1Miw4IEBAIHJhbWZzX3RydW5jYXRlKHN0cnVj
dCB2bm9kZSAqdnAsIG9mZl90IGxlbmd0aCkKIAkJCW5wLT5ybl9idWYgPSBOVUxMOwogCQkJbnAt
PnJuX2J1ZnNpemUgPSAwOwogCQl9Ci0JfSBlbHNlIGlmIChzaXplX3QobGVuZ3RoKSA+IG5wLT5y
bl9idWZzaXplKSB7Ci0JCS8vIFhYWDogdGhpcyBjb3VsZCB1c2UgYSBwYWdlIGxldmVsIGFsbG9j
YXRvcgorCX0gZWxzZSBpZiAoKHNpemVfdCkgbGVuZ3RoID4gbnAtPnJuX2J1ZnNpemUpIHsKKwkJ
LyogVE9ETzogdGhpcyBjb3VsZCB1c2UgYSBwYWdlIGxldmVsIGFsbG9jYXRvciAqLwogCQluZXdf
c2l6ZSA9IHJvdW5kX3BhZ2UobGVuZ3RoKTsKIAkJbmV3X2J1ZiA9IG1hbGxvYyhuZXdfc2l6ZSk7
CiAJCWlmICghbmV3X2J1ZikKQEAgLTM2Miw3ICszNjksNyBAQCByYW1mc190cnVuY2F0ZShzdHJ1
Y3Qgdm5vZGUgKnZwLCBvZmZfdCBsZW5ndGgpCiAJfQogCW5wLT5ybl9zaXplID0gbGVuZ3RoOwog
CXZwLT52X3NpemUgPSBsZW5ndGg7Ci0Jc2V0X3RpbWVzX3RvX25vdygmKG5wLT5ybl9tdGltZSks
ICYobnAtPnJuX2N0aW1lKSk7CisJc2V0X3RpbWVzX3RvX25vdygmKG5wLT5ybl9tdGltZSksICYo
bnAtPnJuX2N0aW1lKSwgTlVMTCk7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTM4MiwxNiArMzg5LDE3
IEBAIHJhbWZzX2NyZWF0ZShzdHJ1Y3Qgdm5vZGUgKmR2cCwgY2hhciAqbmFtZSwgbW9kZV90IG1v
ZGUpCiAJaWYgKCFTX0lTUkVHKG1vZGUpKQogCQlyZXR1cm4gRUlOVkFMOwogCi0JbnAgPSByYW1m
c19hZGRfbm9kZSgocmFtZnNfbm9kZSAqKSBkdnAtPnZfZGF0YSwgbmFtZSwgVlJFRyk7CisJbnAg
PSByYW1mc19hZGRfbm9kZShkdnAtPnZfZGF0YSwgbmFtZSwgVlJFRyk7CiAJaWYgKG5wID09IE5V
TEwpCiAJCXJldHVybiBFTk9NRU07CiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQKLXJhbWZz
X3JlYWQoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IGZpbGUgKmZwLCBzdHJ1Y3QgdWlvICp1aW8s
IGludCBpb2ZsYWcpCitzdGF0aWMgc3NpemVfdAorcmFtZnNfcmVhZChzdHJ1Y3Qgdm5vZGUgKnZw
LCBzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCBfX3VudXNlZCwKKwkgICBzdHJ1Y3QgdWlvICp1aW8s
IGludCBpb2ZsYWcgX191bnVzZWQpCiB7Ci0Jc3RydWN0IHJhbWZzX25vZGUgKm5wID0gKHJhbWZz
X25vZGUgKikgdnAtPnZfZGF0YTsKKwlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSAgdnAtPnZfZGF0
YTsKIAlzaXplX3QgbGVuOwogCiAJaWYgKHZwLT52X3R5cGUgPT0gVkRJUikgewpAQCAtNDE1LDE1
ICs0MjMsMTUgQEAgcmFtZnNfcmVhZChzdHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3QgZmlsZSAqZnAs
IHN0cnVjdCB1aW8gKnVpbywgaW50IGlvZmxhZykKIAllbHNlCiAJCWxlbiA9IHVpby0+dWlvX3Jl
c2lkOwogCi0Jc2V0X3RpbWVzX3RvX25vdygmKG5wLT5ybl9hdGltZSkpOworCXNldF90aW1lc190
b19ub3coJihucC0+cm5fYXRpbWUpLCBOVUxMLCBOVUxMKTsKIAotCXJldHVybiB1aW9tb3ZlKG5w
LT5ybl9idWYgKyB1aW8tPnVpb19vZmZzZXQsIGxlbiwgdWlvKTsKKwlyZXR1cm4gdmZzY29yZV91
aW9tb3ZlKG5wLT5ybl9idWYgKyB1aW8tPnVpb19vZmZzZXQsIGxlbiwgdWlvKTsKIH0KIAogaW50
CiByYW1mc19zZXRfZmlsZV9kYXRhKHN0cnVjdCB2bm9kZSAqdnAsIGNvbnN0IHZvaWQgKmRhdGEs
IHNpemVfdCBzaXplKQogewotCXN0cnVjdCByYW1mc19ub2RlICpucCA9IChyYW1mc19ub2RlICop
IHZwLT52X2RhdGE7CisJc3RydWN0IHJhbWZzX25vZGUgKm5wID0gIHZwLT52X2RhdGE7CiAKIAlp
ZiAodnAtPnZfdHlwZSA9PSBWRElSKSB7CiAJCXJldHVybiBFSVNESVI7CkBAIC00NDQsMTAgKzQ1
MiwxMCBAQCByYW1mc19zZXRfZmlsZV9kYXRhKHN0cnVjdCB2bm9kZSAqdnAsIGNvbnN0IHZvaWQg
KmRhdGEsIHNpemVfdCBzaXplKQogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50CitzdGF0aWMg
c3NpemVfdAogcmFtZnNfd3JpdGUoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IHVpbyAqdWlvLCBp
bnQgaW9mbGFnKQogewotCXN0cnVjdCByYW1mc19ub2RlICpucCA9IChyYW1mc19ub2RlICopIHZw
LT52X2RhdGE7CisJc3RydWN0IHJhbWZzX25vZGUgKm5wID0gIHZwLT52X2RhdGE7CiAKIAlpZiAo
dnAtPnZfdHlwZSA9PSBWRElSKSB7CiAJCXJldHVybiBFSVNESVI7CkBAIC00NjgsNyArNDc2LDcg
QEAgcmFtZnNfd3JpdGUoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IHVpbyAqdWlvLCBpbnQgaW9m
bGFnKQogCWlmIChpb2ZsYWcgJiBJT19BUFBFTkQpCiAJCXVpby0+dWlvX29mZnNldCA9IG5wLT5y
bl9zaXplOwogCi0JaWYgKHNpemVfdCh1aW8tPnVpb19vZmZzZXQgKyB1aW8tPnVpb19yZXNpZCkg
PiAoc2l6ZV90KSB2cC0+dl9zaXplKSB7CisJaWYgKChzaXplX3QpIHVpby0+dWlvX29mZnNldCAr
IHVpby0+dWlvX3Jlc2lkID4gKHNpemVfdCkgdnAtPnZfc2l6ZSkgewogCQkvKiBFeHBhbmQgdGhl
IGZpbGUgc2l6ZSBiZWZvcmUgd3JpdGluZyB0byBpdCAqLwogCQlvZmZfdCBlbmRfcG9zID0gdWlv
LT51aW9fb2Zmc2V0ICsgdWlvLT51aW9fcmVzaWQ7CiAJCWlmIChlbmRfcG9zID4gKG9mZl90KSBu
cC0+cm5fYnVmc2l6ZSkgewpAQCAtNDkwLDEyICs0OTgsMTMgQEAgcmFtZnNfd3JpdGUoc3RydWN0
IHZub2RlICp2cCwgc3RydWN0IHVpbyAqdWlvLCBpbnQgaW9mbGFnKQogCQlucC0+cm5fb3duc19i
dWYgPSB0cnVlOwogCX0KIAotCXNldF90aW1lc190b19ub3coJihucC0+cm5fbXRpbWUpLCAmKG5w
LT5ybl9jdGltZSkpOwotCXJldHVybiB1aW9tb3ZlKG5wLT5ybl9idWYgKyB1aW8tPnVpb19vZmZz
ZXQsIHVpby0+dWlvX3Jlc2lkLCB1aW8pOworCXNldF90aW1lc190b19ub3coJihucC0+cm5fbXRp
bWUpLCAmKG5wLT5ybl9jdGltZSksIE5VTEwpOworCXJldHVybiB2ZnNjb3JlX3Vpb21vdmUobnAt
PnJuX2J1ZiArIHVpby0+dWlvX29mZnNldCwgdWlvLT51aW9fcmVzaWQsCisJCQkgICAgICAgdWlv
KTsKIH0KIAogc3RhdGljIGludAotcmFtZnNfcmVuYW1lKHN0cnVjdCB2bm9kZSAqZHZwMSwgc3Ry
dWN0IHZub2RlICp2cDEsIGNoYXIgKm5hbWUxLAorcmFtZnNfcmVuYW1lKHN0cnVjdCB2bm9kZSAq
ZHZwMSwgc3RydWN0IHZub2RlICp2cDEsIGNoYXIgKm5hbWUxIF9fdW51c2VkLAogCQkJIHN0cnVj
dCB2bm9kZSAqZHZwMiwgc3RydWN0IHZub2RlICp2cDIsIGNoYXIgKm5hbWUyKQogewogCXN0cnVj
dCByYW1mc19ub2RlICpucCwgKm9sZF9ucDsKQEAgLTUwMywyMCArNTEyLDIwIEBAIHJhbWZzX3Jl
bmFtZShzdHJ1Y3Qgdm5vZGUgKmR2cDEsIHN0cnVjdCB2bm9kZSAqdnAxLCBjaGFyICpuYW1lMSwK
IAogCWlmICh2cDIpIHsKIAkJLyogUmVtb3ZlIGRlc3RpbmF0aW9uIGZpbGUsIGZpcnN0ICovCi0J
CWVycm9yID0gcmFtZnNfcmVtb3ZlX25vZGUoKHJhbWZzX25vZGUgKikgZHZwMi0+dl9kYXRhLCAo
cmFtZnNfbm9kZSAqKSB2cDItPnZfZGF0YSk7CisJCWVycm9yID0gcmFtZnNfcmVtb3ZlX25vZGUo
ZHZwMi0+dl9kYXRhLCB2cDItPnZfZGF0YSk7CiAJCWlmIChlcnJvcikKIAkJCXJldHVybiBlcnJv
cjsKIAl9CiAJLyogU2FtZSBkaXJlY3RvcnkgPyAqLwogCWlmIChkdnAxID09IGR2cDIpIHsKIAkJ
LyogQ2hhbmdlIHRoZSBuYW1lIG9mIGV4aXN0aW5nIGZpbGUgKi8KLQkJZXJyb3IgPSByYW1mc19y
ZW5hbWVfbm9kZSgocmFtZnNfbm9kZSAqKSB2cDEtPnZfZGF0YSwgbmFtZTIpOworCQllcnJvciA9
IHJhbWZzX3JlbmFtZV9ub2RlKHZwMS0+dl9kYXRhLCBuYW1lMik7CiAJCWlmIChlcnJvcikKIAkJ
CXJldHVybiBlcnJvcjsKIAl9IGVsc2UgewogCQkvKiBDcmVhdGUgbmV3IGZpbGUgb3IgZGlyZWN0
b3J5ICovCi0JCW9sZF9ucCA9IChyYW1mc19ub2RlICopIHZwMS0+dl9kYXRhOwotCQlucCA9IHJh
bWZzX2FkZF9ub2RlKChyYW1mc19ub2RlICopIGR2cDItPnZfZGF0YSwgbmFtZTIsIG9sZF9ucC0+
cm5fdHlwZSk7CisJCW9sZF9ucCA9IHZwMS0+dl9kYXRhOworCQlucCA9IHJhbWZzX2FkZF9ub2Rl
KGR2cDItPnZfZGF0YSwgbmFtZTIsIG9sZF9ucC0+cm5fdHlwZSk7CiAJCWlmIChucCA9PSBOVUxM
KQogCQkJcmV0dXJuIEVOT01FTTsKIApAQCAtNTI4LDcgKzUzNyw3IEBAIHJhbWZzX3JlbmFtZShz
dHJ1Y3Qgdm5vZGUgKmR2cDEsIHN0cnVjdCB2bm9kZSAqdnAxLCBjaGFyICpuYW1lMSwKIAkJCW9s
ZF9ucC0+cm5fYnVmID0gTlVMTDsKIAkJfQogCQkvKiBSZW1vdmUgc291cmNlIGZpbGUgKi8KLQkJ
cmFtZnNfcmVtb3ZlX25vZGUoKHJhbWZzX25vZGUgKikgZHZwMS0+dl9kYXRhLCAocmFtZnNfbm9k
ZSAqKSB2cDEtPnZfZGF0YSk7CisJCXJhbWZzX3JlbW92ZV9ub2RlKGR2cDEtPnZfZGF0YSwgdnAx
LT52X2RhdGEpOwogCX0KIAlyZXR1cm4gMDsKIH0KQEAgLTUzNywxNCArNTQ2LDE1IEBAIHJhbWZz
X3JlbmFtZShzdHJ1Y3Qgdm5vZGUgKmR2cDEsIHN0cnVjdCB2bm9kZSAqdnAxLCBjaGFyICpuYW1l
MSwKICAqIEB2cDogdm5vZGUgb2YgdGhlIGRpcmVjdG9yeS4KICAqLwogc3RhdGljIGludAotcmFt
ZnNfcmVhZGRpcihzdHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3QgZmlsZSAqZnAsIHN0cnVjdCBkaXJl
bnQgKmRpcikKK3JhbWZzX3JlYWRkaXIoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IHZmc2NvcmVf
ZmlsZSAqZnAsIHN0cnVjdCBkaXJlbnQgKmRpcikKIHsKIAlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAs
ICpkbnA7CiAJaW50IGk7CiAKLQltdXRleF9sb2NrKCZyYW1mc19sb2NrKTsKKwl1a19tdXRleF9s
b2NrKCZyYW1mc19sb2NrKTsKIAotCXNldF90aW1lc190b19ub3coJigoKHJhbWZzX25vZGUgKikg
dnAtPnZfZGF0YSktPnJuX2F0aW1lKSk7CisJc2V0X3RpbWVzX3RvX25vdygmKCgoc3RydWN0IHJh
bWZzX25vZGUgKikgdnAtPnZfZGF0YSktPnJuX2F0aW1lKSwKKwkJCSBOVUxMLCBOVUxMKTsKIAog
CWlmIChmcC0+Zl9vZmZzZXQgPT0gMCkgewogCQlkaXItPmRfdHlwZSA9IERUX0RJUjsKQEAgLTU1
MywxNyArNTYzLDE3IEBAIHJhbWZzX3JlYWRkaXIoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IGZp
bGUgKmZwLCBzdHJ1Y3QgZGlyZW50ICpkaXIpCiAJCWRpci0+ZF90eXBlID0gRFRfRElSOwogCQlz
dHJsY3B5KChjaGFyICopICZkaXItPmRfbmFtZSwgIi4uIiwgc2l6ZW9mKGRpci0+ZF9uYW1lKSk7
CiAJfSBlbHNlIHsKLQkJZG5wID0gKHJhbWZzX25vZGUgKikgdnAtPnZfZGF0YTsKKwkJZG5wID0g
dnAtPnZfZGF0YTsKIAkJbnAgPSBkbnAtPnJuX2NoaWxkOwogCQlpZiAobnAgPT0gTlVMTCkgewot
CQkJbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKKwkJCXVrX211dGV4X3VubG9jaygmcmFtZnNf
bG9jayk7CiAJCQlyZXR1cm4gRU5PRU5UOwogCQl9CiAKIAkJZm9yIChpID0gMDsgaSAhPSAoZnAt
PmZfb2Zmc2V0IC0gMik7IGkrKykgewogCQkJbnAgPSBucC0+cm5fbmV4dDsKIAkJCWlmIChucCA9
PSBOVUxMKSB7Ci0JCQkJbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKKwkJCQl1a19tdXRleF91
bmxvY2soJnJhbWZzX2xvY2spOwogCQkJCXJldHVybiBFTk9FTlQ7CiAJCQl9CiAJCX0KQEAgLTU4
MSw3ICs1OTEsNyBAQCByYW1mc19yZWFkZGlyKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCBmaWxl
ICpmcCwgc3RydWN0IGRpcmVudCAqZGlyKQogCiAJZnAtPmZfb2Zmc2V0Kys7CiAKLQltdXRleF91
bmxvY2soJnJhbWZzX2xvY2spOworCXVrX211dGV4X3VubG9jaygmcmFtZnNfbG9jayk7CiAJcmV0
dXJuIDA7CiB9CiAKQEAgLTU5NCwxMSArNjA0LDEyIEBAIHJhbWZzX2luaXQodm9pZCkKIHN0YXRp
YyBpbnQKIHJhbWZzX2dldGF0dHIoc3RydWN0IHZub2RlICp2bm9kZSwgc3RydWN0IHZhdHRyICph
dHRyKQogeworCXN0cnVjdCByYW1mc19ub2RlICpucCA9IHZub2RlLT52X2RhdGE7CisKIAlhdHRy
LT52YV9ub2RlaWQgPSB2bm9kZS0+dl9pbm87CiAJYXR0ci0+dmFfc2l6ZSA9IHZub2RlLT52X3Np
emU7CiAKLQlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSAocmFtZnNfbm9kZSAqKSB2bm9kZS0+dl9k
YXRhOwotCWF0dHItPnZhX3R5cGUgPSAodnR5cGUpIG5wLT5ybl90eXBlOworCWF0dHItPnZhX3R5
cGUgPSBucC0+cm5fdHlwZTsKIAogCW1lbWNweSgmKGF0dHItPnZhX2F0aW1lKSwgJihucC0+cm5f
YXRpbWUpLCBzaXplb2Yoc3RydWN0IHRpbWVzcGVjKSk7CiAJbWVtY3B5KCYoYXR0ci0+dmFfY3Rp
bWUpLCAmKG5wLT5ybl9jdGltZSksIHNpemVvZihzdHJ1Y3QgdGltZXNwZWMpKTsKQEAgLTYxMSw3
ICs2MjIsNyBAQCByYW1mc19nZXRhdHRyKHN0cnVjdCB2bm9kZSAqdm5vZGUsIHN0cnVjdCB2YXR0
ciAqYXR0cikKIAogc3RhdGljIGludAogcmFtZnNfc2V0YXR0cihzdHJ1Y3Qgdm5vZGUgKnZub2Rl
LCBzdHJ1Y3QgdmF0dHIgKmF0dHIpIHsKLQlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSAocmFtZnNf
bm9kZSAqKSB2bm9kZS0+dl9kYXRhOworCXN0cnVjdCByYW1mc19ub2RlICpucCA9IHZub2RlLT52
X2RhdGE7CiAKIAlpZiAoYXR0ci0+dmFfbWFzayAmIEFUX0FUSU1FKSB7CiAJCW1lbWNweSgmKG5w
LT5ybl9hdGltZSksICYoYXR0ci0+dmFfYXRpbWUpLCBzaXplb2Yoc3RydWN0IHRpbWVzcGVjKSk7
CkBAIC02MzIsMTQgKzY0MywxNCBAQCByYW1mc19zZXRhdHRyKHN0cnVjdCB2bm9kZSAqdm5vZGUs
IHN0cnVjdCB2YXR0ciAqYXR0cikgewogCXJldHVybiAwOwogfQogCi0jZGVmaW5lIHJhbWZzX29w
ZW4gICAgICAoKHZub3Bfb3Blbl90KXZvcF9udWxsb3ApCi0jZGVmaW5lIHJhbWZzX2Nsb3NlICAg
ICAoKHZub3BfY2xvc2VfdCl2b3BfbnVsbG9wKQotI2RlZmluZSByYW1mc19zZWVrICAgICAgKCh2
bm9wX3NlZWtfdCl2b3BfbnVsbG9wKQotI2RlZmluZSByYW1mc19pb2N0bCAgICAgKCh2bm9wX2lv
Y3RsX3Qpdm9wX2VpbnZhbCkKLSNkZWZpbmUgcmFtZnNfZnN5bmMgICAgICgodm5vcF9mc3luY190
KXZvcF9udWxsb3ApCi0jZGVmaW5lIHJhbWZzX2luYWN0aXZlICAoKHZub3BfaW5hY3RpdmVfdCl2
b3BfbnVsbG9wKQotI2RlZmluZSByYW1mc19saW5rICAgICAgKCh2bm9wX2xpbmtfdCl2b3BfZXBl
cm0pCi0jZGVmaW5lIHJhbWZzX2ZhbGxvY2F0ZSAoKHZub3BfZmFsbG9jYXRlX3Qpdm9wX251bGxv
cCkKKyNkZWZpbmUgcmFtZnNfb3BlbiAgICAgICgodm5vcF9vcGVuX3QpdmZzY29yZV92b3BfbnVs
bG9wKQorI2RlZmluZSByYW1mc19jbG9zZSAgICAgKCh2bm9wX2Nsb3NlX3QpdmZzY29yZV92b3Bf
bnVsbG9wKQorI2RlZmluZSByYW1mc19zZWVrICAgICAgKCh2bm9wX3NlZWtfdCl2ZnNjb3JlX3Zv
cF9udWxsb3ApCisjZGVmaW5lIHJhbWZzX2lvY3RsICAgICAoKHZub3BfaW9jdGxfdCl2ZnNjb3Jl
X3ZvcF9laW52YWwpCisjZGVmaW5lIHJhbWZzX2ZzeW5jICAgICAoKHZub3BfZnN5bmNfdCl2ZnNj
b3JlX3ZvcF9udWxsb3ApCisjZGVmaW5lIHJhbWZzX2luYWN0aXZlICAoKHZub3BfaW5hY3RpdmVf
dCl2ZnNjb3JlX3ZvcF9udWxsb3ApCisjZGVmaW5lIHJhbWZzX2xpbmsgICAgICAoKHZub3BfbGlu
a190KXZmc2NvcmVfdm9wX2VwZXJtKQorI2RlZmluZSByYW1mc19mYWxsb2NhdGUgKCh2bm9wX2Zh
bGxvY2F0ZV90KXZmc2NvcmVfdm9wX251bGxvcCkKIAogLyoKICAqIHZub2RlIG9wZXJhdGlvbnMK
QEAgLTY2NCw3ICs2NzUsNyBAQCBzdHJ1Y3Qgdm5vcHMgcmFtZnNfdm5vcHMgPSB7CiAJCXJhbWZz
X2luYWN0aXZlLCAgICAgICAgIC8qIGluYWN0aXZlICovCiAJCXJhbWZzX3RydW5jYXRlLCAgICAg
ICAgIC8qIHRydW5jYXRlICovCiAJCXJhbWZzX2xpbmssICAgICAgICAgICAgIC8qIGxpbmsgKi8K
LQkJKHZub3BfY2FjaGVfdCkgbnVsbHB0ciwgLyogYXJjICovCisJCSh2bm9wX2NhY2hlX3QpIE5V
TEwsICAgIC8qIGFyYyAqLwogCQlyYW1mc19mYWxsb2NhdGUsICAgICAgICAvKiBmYWxsb2NhdGUg
Ki8KIAkJcmFtZnNfcmVhZGxpbmssICAgICAgICAgLyogcmVhZCBsaW5rICovCiAJCXJhbWZzX3N5
bWxpbmssICAgICAgICAgIC8qIHN5bWJvbGljIGxpbmsgKi8KLS0gCjIuMTkuMgoKCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWls
aW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMu
eGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Feb 20 16:00:58 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 20 Feb 2019 16:00:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gwUIs-0007lU-Rn; Wed, 20 Feb 2019 16:00:58 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=VbZN=Q3=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gwUIr-0007lN-Lb
 for minios-devel@lists.xen.org; Wed, 20 Feb 2019 16:00:57 +0000
X-Inumbo-ID: b4b2084b-3528-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id b4b2084b-3528-11e9-bc90-bc764e045a96;
 Wed, 20 Feb 2019 16:00:56 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 201F4F203D;
 Wed, 20 Feb 2019 16:58:45 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id wMOkvG3c6VR2; Wed, 20 Feb 2019 16:58:45 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id E4FB6F2017
 for <minios-devel@lists.xen.org>; Wed, 20 Feb 2019 16:58:42 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Wed, 20 Feb 2019 16:58:42 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 20 Feb 2019 16:58:12 +0100
Message-ID: <20190220155812.29546-7-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190220155812.29546-1-yuri.volchkov@neclab.eu>
References: <20190220155812.29546-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v3 6/6] lib/ramfs: fix style issues
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: simon.kuenzer@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhlIG5vbi1uZWdhdGl2ZSByZXR1cm4gY29kZXMgdHlwZXMgb2YgY2hlY2stcGF0Y2ggY29tcGxh
aW5zIGFyZQppZ25vcmVkIGZvciBub3csIGJlY2F1c2UgdGhpcyB3aWxsIGJyYWtlIGNvbXBhdGli
aWxpdHkgd2l0aCBjdXJyZW50CnZmc2NvcmUuCgpTaWduZWQtb2ZmLWJ5OiBZdXJpIFZvbGNoa292
IDx5dXJpLnZvbGNoa292QG5lY2xhYi5ldT4KUmV2aWV3ZWQtYnk6IFNpbW9uIEt1ZW56ZXIgPHNp
bW9uLmt1ZW56ZXJAbmVjbGFiLmV1PgotLS0KIGxpYi9yYW1mcy9yYW1mc192ZnNvcHMuYyB8ICAg
NSArLQogbGliL3JhbWZzL3JhbWZzX3Zub3BzLmMgIHwgMTAwICsrKysrKysrKysrKysrKysrKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCA0OCBpbnNlcnRpb25zKCspLCA1
NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9saWIvcmFtZnMvcmFtZnNfdmZzb3BzLmMgYi9s
aWIvcmFtZnMvcmFtZnNfdmZzb3BzLmMKaW5kZXggNWUwZWM0YjkuLjE1YmU4Y2UyIDEwMDY0NAot
LS0gYS9saWIvcmFtZnMvcmFtZnNfdmZzb3BzLmMKKysrIGIvbGliL3JhbWZzL3JhbWZzX3Zmc29w
cy5jCkBAIC00MSw3ICs0MSw4IEBACiAKIGV4dGVybiBzdHJ1Y3Qgdm5vcHMgcmFtZnNfdm5vcHM7
CiAKLXN0YXRpYyBpbnQgcmFtZnNfbW91bnQoc3RydWN0IG1vdW50ICptcCwgY29uc3QgY2hhciAq
ZGV2LCBpbnQgZmxhZ3MsIGNvbnN0IHZvaWQgKmRhdGEpOworc3RhdGljIGludCByYW1mc19tb3Vu
dChzdHJ1Y3QgbW91bnQgKm1wLCBjb25zdCBjaGFyICpkZXYsIGludCBmbGFncywKKwkJICAgICAg
IGNvbnN0IHZvaWQgKmRhdGEpOwogCiBzdGF0aWMgaW50IHJhbWZzX3VubW91bnQoc3RydWN0IG1v
dW50ICptcCwgaW50IGZsYWdzKTsKIApAQCAtNzgsNyArNzksNyBAQCByYW1mc19tb3VudChzdHJ1
Y3QgbW91bnQgKm1wLCBjb25zdCBjaGFyICpkZXYgX191bnVzZWQsCiB7CiAJc3RydWN0IHJhbWZz
X25vZGUgKm5wOwogCi0JdWtfcHJfZGVidWcoInJhbWZzX21vdW50OiBkZXY9JXNcbiIsIGRldik7
CisJdWtfcHJfZGVidWcoIiVzOiBkZXY9JXNcbiIsIF9fZnVuY19fLCBkZXYpOwogCiAJLyogQ3Jl
YXRlIGEgcm9vdCBub2RlICovCiAJbnAgPSByYW1mc19hbGxvY2F0ZV9ub2RlKCIvIiwgVkRJUik7
CmRpZmYgLS1naXQgYS9saWIvcmFtZnMvcmFtZnNfdm5vcHMuYyBiL2xpYi9yYW1mcy9yYW1mc192
bm9wcy5jCmluZGV4IGIxNjZiNGE5Li4zYzU1ZGJlMCAxMDA2NDQKLS0tIGEvbGliL3JhbWZzL3Jh
bWZzX3Zub3BzLmMKKysrIGIvbGliL3JhbWZzL3JhbWZzX3Zub3BzLmMKQEAgLTY2LDE1ICs2Niwx
MiBAQCBzZXRfdGltZXNfdG9fbm93KHN0cnVjdCB0aW1lc3BlYyAqdGltZTEsIHN0cnVjdCB0aW1l
c3BlYyAqdGltZTIsCiAKIAkvKiBUT0RPOiBpbXBsZW1lbnQgdGhlIHJlYWwgY2xvY2tfZ2V0dGlt
ZSAqLwogCS8qIGNsb2NrX2dldHRpbWUoQ0xPQ0tfUkVBTFRJTUUsICZub3cpOyAqLwotCWlmICh0
aW1lMSkgeworCWlmICh0aW1lMSkKIAkJbWVtY3B5KHRpbWUxLCAmbm93LCBzaXplb2Yoc3RydWN0
IHRpbWVzcGVjKSk7Ci0JfQotCWlmICh0aW1lMikgeworCWlmICh0aW1lMikKIAkJbWVtY3B5KHRp
bWUyLCAmbm93LCBzaXplb2Yoc3RydWN0IHRpbWVzcGVjKSk7Ci0JfQotCWlmICh0aW1lMykgewor
CWlmICh0aW1lMykKIAkJbWVtY3B5KHRpbWUzLCAmbm93LCBzaXplb2Yoc3RydWN0IHRpbWVzcGVj
KSk7Ci0JfQogfQogCiBzdHJ1Y3QgcmFtZnNfbm9kZSAqCkBAIC0xODQsOSArMTgxLDkgQEAgcmFt
ZnNfcmVuYW1lX25vZGUoc3RydWN0IHJhbWZzX25vZGUgKm5wLCBjaGFyICpuYW1lKQogCWNoYXIg
KnRtcDsKIAogCWxlbiA9IHN0cmxlbihuYW1lKTsKLQlpZiAobGVuID4gTkFNRV9NQVgpIHsKKwlp
ZiAobGVuID4gTkFNRV9NQVgpCiAJCXJldHVybiBFTkFNRVRPT0xPTkc7Ci0JfQorCiAJaWYgKGxl
biA8PSBucC0+cm5fbmFtZWxlbikgewogCQkvKiBSZXVzZSBjdXJyZW50IG5hbWUgYnVmZmVyICov
CiAJCXN0cmxjcHkobnAtPnJuX25hbWUsIG5hbWUsIG5wLT5ybl9uYW1lbGVuICsgMSk7CkBAIC0y
NjEsOSArMjU4LDggQEAgcmFtZnNfbWtkaXIoc3RydWN0IHZub2RlICpkdnAsIGNoYXIgKm5hbWUs
IG1vZGVfdCBtb2RlKQogCXN0cnVjdCByYW1mc19ub2RlICpucDsKIAogCXVrX3ByX2RlYnVnKCJt
a2RpciAlc1xuIiwgbmFtZSk7Ci0JaWYgKHN0cmxlbihuYW1lKSA+IE5BTUVfTUFYKSB7CisJaWYg
KHN0cmxlbihuYW1lKSA+IE5BTUVfTUFYKQogCQlyZXR1cm4gRU5BTUVUT09MT05HOwotCX0KIAog
CWlmICghU19JU0RJUihtb2RlKSkKIAkJcmV0dXJuIEVJTlZBTDsKQEAgLTI3OSwxNCArMjc1LDE5
IEBAIHJhbWZzX21rZGlyKHN0cnVjdCB2bm9kZSAqZHZwLCBjaGFyICpuYW1lLCBtb2RlX3QgbW9k
ZSkKIHN0YXRpYyBpbnQKIHJhbWZzX3N5bWxpbmsoc3RydWN0IHZub2RlICpkdnAsIGNoYXIgKm5h
bWUsIGNoYXIgKmxpbmspCiB7Ci0JaWYgKHN0cmxlbihuYW1lKSA+IE5BTUVfTUFYKSB7CisJc3Ry
dWN0IHJhbWZzX25vZGUgKm5wOworCXNpemVfdCBsZW47CisKKwlpZiAoc3RybGVuKG5hbWUpID4g
TkFNRV9NQVgpCiAJCXJldHVybiBFTkFNRVRPT0xPTkc7Ci0JfQotCXN0cnVjdCByYW1mc19ub2Rl
ICpucCA9IHJhbWZzX2FkZF9ub2RlKGR2cC0+dl9kYXRhLCBuYW1lLCBWTE5LKTsKKworCW5wID0g
cmFtZnNfYWRkX25vZGUoZHZwLT52X2RhdGEsIG5hbWUsIFZMTkspOworCiAJaWYgKG5wID09IE5V
TEwpCiAJCXJldHVybiBFTk9NRU07CiAJLy8gU2F2ZSB0aGUgbGluayB0YXJnZXQgd2l0aG91dCB0
aGUgZmluYWwgbnVsbCwgYXMgcmVhZGxpbmsoKSB3YW50cyBpdC4KLQlzaXplX3QgbGVuID0gc3Ry
bGVuKGxpbmspOworCWxlbiA9IHN0cmxlbihsaW5rKTsKKwogCW5wLT5ybl9idWYgPSBzdHJuZHVw
KGxpbmssIGxlbik7CiAJbnAtPnJuX2J1ZnNpemUgPSBucC0+cm5fc2l6ZSA9IGxlbjsKIApAQCAt
Mjk5LDE1ICszMDAsMTIgQEAgcmFtZnNfcmVhZGxpbmsoc3RydWN0IHZub2RlICp2cCwgc3RydWN0
IHVpbyAqdWlvKQogCXN0cnVjdCByYW1mc19ub2RlICpucCA9IHZwLT52X2RhdGE7CiAJc2l6ZV90
IGxlbjsKIAotCWlmICh2cC0+dl90eXBlICE9IFZMTkspIHsKKwlpZiAodnAtPnZfdHlwZSAhPSBW
TE5LKQogCQlyZXR1cm4gRUlOVkFMOwotCX0KLQlpZiAodWlvLT51aW9fb2Zmc2V0IDwgMCkgewor
CWlmICh1aW8tPnVpb19vZmZzZXQgPCAwKQogCQlyZXR1cm4gRUlOVkFMOwotCX0KLQlpZiAodWlv
LT51aW9fcmVzaWQgPT0gMCkgeworCWlmICh1aW8tPnVpb19yZXNpZCA9PSAwKQogCQlyZXR1cm4g
MDsKLQl9CiAJaWYgKHVpby0+dWlvX29mZnNldCA+PSAob2ZmX3QpIHZwLT52X3NpemUpCiAJCXJl
dHVybiAwOwogCWlmICh2cC0+dl9zaXplIC0gdWlvLT51aW9fb2Zmc2V0IDwgdWlvLT51aW9fcmVz
aWQpCkBAIC0zNDksNyArMzQ3LDcgQEAgcmFtZnNfdHJ1bmNhdGUoc3RydWN0IHZub2RlICp2cCwg
b2ZmX3QgbGVuZ3RoKQogCiAJaWYgKGxlbmd0aCA9PSAwKSB7CiAJCWlmIChucC0+cm5fYnVmICE9
IE5VTEwpIHsKLQkJCWlmKG5wLT5ybl9vd25zX2J1ZikKKwkJCWlmIChucC0+cm5fb3duc19idWYp
CiAJCQkJZnJlZShucC0+cm5fYnVmKTsKIAkJCW5wLT5ybl9idWYgPSBOVUxMOwogCQkJbnAtPnJu
X2J1ZnNpemUgPSAwOwpAQCAtMzYyLDcgKzM2MCw3IEBAIHJhbWZzX3RydW5jYXRlKHN0cnVjdCB2
bm9kZSAqdnAsIG9mZl90IGxlbmd0aCkKIAkJCXJldHVybiBFSU87CiAJCWlmIChucC0+cm5fc2l6
ZSAhPSAwKSB7CiAJCQltZW1jcHkobmV3X2J1ZiwgbnAtPnJuX2J1ZiwgdnAtPnZfc2l6ZSk7Ci0J
CQlpZihucC0+cm5fb3duc19idWYpCisJCQlpZiAobnAtPnJuX293bnNfYnVmKQogCQkJCWZyZWUo
bnAtPnJuX2J1Zik7CiAJCX0KIAkJbnAtPnJuX2J1ZiA9IChjaGFyICopIG5ld19idWY7CkBAIC0z
ODMsOSArMzgxLDggQEAgcmFtZnNfY3JlYXRlKHN0cnVjdCB2bm9kZSAqZHZwLCBjaGFyICpuYW1l
LCBtb2RlX3QgbW9kZSkKIHsKIAlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnA7CiAKLQlpZiAoc3RybGVu
KG5hbWUpID4gTkFNRV9NQVgpIHsKKwlpZiAoc3RybGVuKG5hbWUpID4gTkFNRV9NQVgpCiAJCXJl
dHVybiBFTkFNRVRPT0xPTkc7Ci0JfQogCiAJdWtfcHJfZGVidWcoImNyZWF0ZSAlcyBpbiAlc1xu
IiwgbmFtZSwgUkFNRlNfTk9ERShkdnApLT5ybl9uYW1lKTsKIAlpZiAoIVNfSVNSRUcobW9kZSkp
CkBAIC00MDQsMTggKzQwMSwxNCBAQCByYW1mc19yZWFkKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVj
dCB2ZnNjb3JlX2ZpbGUgKmZwIF9fdW51c2VkLAogCXN0cnVjdCByYW1mc19ub2RlICpucCA9ICB2
cC0+dl9kYXRhOwogCXNpemVfdCBsZW47CiAKLQlpZiAodnAtPnZfdHlwZSA9PSBWRElSKSB7CisJ
aWYgKHZwLT52X3R5cGUgPT0gVkRJUikKIAkJcmV0dXJuIEVJU0RJUjsKLQl9Ci0JaWYgKHZwLT52
X3R5cGUgIT0gVlJFRykgeworCWlmICh2cC0+dl90eXBlICE9IFZSRUcpCiAJCXJldHVybiBFSU5W
QUw7Ci0JfQotCWlmICh1aW8tPnVpb19vZmZzZXQgPCAwKSB7CisJaWYgKHVpby0+dWlvX29mZnNl
dCA8IDApCiAJCXJldHVybiBFSU5WQUw7Ci0JfQotCWlmICh1aW8tPnVpb19yZXNpZCA9PSAwKSB7
CisJaWYgKHVpby0+dWlvX3Jlc2lkID09IDApCiAJCXJldHVybiAwOwotCX0KIAogCWlmICh1aW8t
PnVpb19vZmZzZXQgPj0gKG9mZl90KSB2cC0+dl9zaXplKQogCQlyZXR1cm4gMDsKQEAgLTQzNSwx
NSArNDI4LDEyIEBAIHJhbWZzX3NldF9maWxlX2RhdGEoc3RydWN0IHZub2RlICp2cCwgY29uc3Qg
dm9pZCAqZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAJc3RydWN0IHJhbWZzX25vZGUgKm5wID0gIHZw
LT52X2RhdGE7CiAKLQlpZiAodnAtPnZfdHlwZSA9PSBWRElSKSB7CisJaWYgKHZwLT52X3R5cGUg
PT0gVkRJUikKIAkJcmV0dXJuIEVJU0RJUjsKLQl9Ci0JaWYgKHZwLT52X3R5cGUgIT0gVlJFRykg
eworCWlmICh2cC0+dl90eXBlICE9IFZSRUcpCiAJCXJldHVybiBFSU5WQUw7Ci0JfQotCWlmIChu
cC0+cm5fYnVmKSB7CisJaWYgKG5wLT5ybl9idWYpCiAJCXJldHVybiBFSU5WQUw7Ci0JfQogCiAJ
bnAtPnJuX2J1ZiA9IChjaGFyICopIGRhdGE7CiAJbnAtPnJuX2J1ZnNpemUgPSBzaXplOwpAQCAt
NDU5LDIxICs0NDksMTYgQEAgcmFtZnNfd3JpdGUoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IHVp
byAqdWlvLCBpbnQgaW9mbGFnKQogewogCXN0cnVjdCByYW1mc19ub2RlICpucCA9ICB2cC0+dl9k
YXRhOwogCi0JaWYgKHZwLT52X3R5cGUgPT0gVkRJUikgeworCWlmICh2cC0+dl90eXBlID09IFZE
SVIpCiAJCXJldHVybiBFSVNESVI7Ci0JfQotCWlmICh2cC0+dl90eXBlICE9IFZSRUcpIHsKKwlp
ZiAodnAtPnZfdHlwZSAhPSBWUkVHKQogCQlyZXR1cm4gRUlOVkFMOwotCX0KLQlpZiAodWlvLT51
aW9fb2Zmc2V0IDwgMCkgeworCWlmICh1aW8tPnVpb19vZmZzZXQgPCAwKQogCQlyZXR1cm4gRUlO
VkFMOwotCX0KLQlpZiAodWlvLT51aW9fb2Zmc2V0ID49IExPTkdfTUFYKSB7CisJaWYgKHVpby0+
dWlvX29mZnNldCA+PSBMT05HX01BWCkKIAkJcmV0dXJuIEVGQklHOwotCX0KLQlpZiAodWlvLT51
aW9fcmVzaWQgPT0gMCkgeworCWlmICh1aW8tPnVpb19yZXNpZCA9PSAwKQogCQlyZXR1cm4gMDsK
LQl9CiAKIAlpZiAoaW9mbGFnICYgSU9fQVBQRU5EKQogCQl1aW8tPnVpb19vZmZzZXQgPSBucC0+
cm5fc2l6ZTsKQEAgLTQ4MSwxNSArNDY2LDE3IEBAIHJhbWZzX3dyaXRlKHN0cnVjdCB2bm9kZSAq
dnAsIHN0cnVjdCB1aW8gKnVpbywgaW50IGlvZmxhZykKIAlpZiAoKHNpemVfdCkgdWlvLT51aW9f
b2Zmc2V0ICsgdWlvLT51aW9fcmVzaWQgPiAoc2l6ZV90KSB2cC0+dl9zaXplKSB7CiAJCS8qIEV4
cGFuZCB0aGUgZmlsZSBzaXplIGJlZm9yZSB3cml0aW5nIHRvIGl0ICovCiAJCW9mZl90IGVuZF9w
b3MgPSB1aW8tPnVpb19vZmZzZXQgKyB1aW8tPnVpb19yZXNpZDsKKwogCQlpZiAoZW5kX3BvcyA+
IChvZmZfdCkgbnAtPnJuX2J1ZnNpemUpIHsKIAkJCS8vIFhYWDogdGhpcyBjb3VsZCB1c2UgYSBw
YWdlIGxldmVsIGFsbG9jYXRvcgogCQkJc2l6ZV90IG5ld19zaXplID0gcm91bmRfcGFnZShlbmRf
cG9zKTsKIAkJCXZvaWQgKm5ld19idWYgPSBtYWxsb2MobmV3X3NpemUpOworCiAJCQlpZiAoIW5l
d19idWYpCiAJCQkJcmV0dXJuIEVJTzsKIAkJCWlmIChucC0+cm5fc2l6ZSAhPSAwKSB7CiAJCQkJ
bWVtY3B5KG5ld19idWYsIG5wLT5ybl9idWYsIHZwLT52X3NpemUpOwotCQkJCWlmKG5wLT5ybl9v
d25zX2J1ZikKKwkJCQlpZiAobnAtPnJuX293bnNfYnVmKQogCQkJCQlmcmVlKG5wLT5ybl9idWYp
OwogCQkJfQogCQkJbnAtPnJuX2J1ZiA9IChjaGFyICopIG5ld19idWY7CkBAIC02MjMsMjQgKzYx
MCwyNyBAQCByYW1mc19nZXRhdHRyKHN0cnVjdCB2bm9kZSAqdm5vZGUsIHN0cnVjdCB2YXR0ciAq
YXR0cikKIH0KIAogc3RhdGljIGludAotcmFtZnNfc2V0YXR0cihzdHJ1Y3Qgdm5vZGUgKnZub2Rl
LCBzdHJ1Y3QgdmF0dHIgKmF0dHIpIHsKK3JhbWZzX3NldGF0dHIoc3RydWN0IHZub2RlICp2bm9k
ZSwgc3RydWN0IHZhdHRyICphdHRyKQorewogCXN0cnVjdCByYW1mc19ub2RlICpucCA9IHZub2Rl
LT52X2RhdGE7CiAKIAlpZiAoYXR0ci0+dmFfbWFzayAmIEFUX0FUSU1FKSB7Ci0JCW1lbWNweSgm
KG5wLT5ybl9hdGltZSksICYoYXR0ci0+dmFfYXRpbWUpLCBzaXplb2Yoc3RydWN0IHRpbWVzcGVj
KSk7CisJCW1lbWNweSgmKG5wLT5ybl9hdGltZSksICYoYXR0ci0+dmFfYXRpbWUpLAorCQkgICAg
ICAgc2l6ZW9mKHN0cnVjdCB0aW1lc3BlYykpOwogCX0KIAogCWlmIChhdHRyLT52YV9tYXNrICYg
QVRfQ1RJTUUpIHsKLQkJbWVtY3B5KCYobnAtPnJuX2N0aW1lKSwgJihhdHRyLT52YV9jdGltZSks
IHNpemVvZihzdHJ1Y3QgdGltZXNwZWMpKTsKKwkJbWVtY3B5KCYobnAtPnJuX2N0aW1lKSwgJihh
dHRyLT52YV9jdGltZSksCisJCSAgICAgICBzaXplb2Yoc3RydWN0IHRpbWVzcGVjKSk7CiAJfQog
CiAJaWYgKGF0dHItPnZhX21hc2sgJiBBVF9NVElNRSkgewotCQltZW1jcHkoJihucC0+cm5fbXRp
bWUpLCAmKGF0dHItPnZhX210aW1lKSwgc2l6ZW9mKHN0cnVjdCB0aW1lc3BlYykpOworCQltZW1j
cHkoJihucC0+cm5fbXRpbWUpLCAmKGF0dHItPnZhX210aW1lKSwKKwkJICAgICAgIHNpemVvZihz
dHJ1Y3QgdGltZXNwZWMpKTsKIAl9CiAKLQlpZiAoYXR0ci0+dmFfbWFzayAmIEFUX01PREUpIHsK
KwlpZiAoYXR0ci0+dmFfbWFzayAmIEFUX01PREUpCiAJCW5wLT5ybl9tb2RlID0gYXR0ci0+dmFf
bW9kZTsKLQl9CiAKIAlyZXR1cm4gMDsKIH0KLS0gCjIuMTkuMgoKCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QK
TWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVj
dC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Feb 20 17:32:12 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 20 Feb 2019 17:32:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gwVj8-0007ot-Nh; Wed, 20 Feb 2019 17:32:10 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=VbZN=Q3=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gwVj6-0007oZ-QI
 for minios-devel@lists.xen.org; Wed, 20 Feb 2019 17:32:08 +0000
X-Inumbo-ID: 70e537ec-3535-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 70e537ec-3535-11e9-bc90-bc764e045a96;
 Wed, 20 Feb 2019 17:32:06 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 39A27104E1F;
 Wed, 20 Feb 2019 18:29:55 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id oR9wn4bWHCv4; Wed, 20 Feb 2019 18:29:55 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 14958104DEC
 for <minios-devel@lists.xen.org>; Wed, 20 Feb 2019 18:29:53 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Wed, 20 Feb 2019 18:29:52 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: Simon Kuenzer <simon.kuenzer@neclab.eu>
In-Reply-To: <0DC62807-6FD4-47FC-B46B-30299B26BBD2@neclab.eu>
References: <20190208143108.27175-1-yuri.volchkov@neclab.eu>
 <20190208143108.27175-6-yuri.volchkov@neclab.eu>
 <0DC62807-6FD4-47FC-B46B-30299B26BBD2@neclab.eu>
Date: Wed, 20 Feb 2019 18:29:47 +0100
Message-ID: <tza4s28syamkqc.fsf@N-1128.office.hd>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 5/6] lib/ramfs: fix debug
 printouts
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>,
 Sharan Santhanam <Sharan.Santhanam@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGksCgpTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4gd3JpdGVzOgoKPj4g
T24gOC4gRmViIDIwMTksIGF0IDE1OjMxLCBZdXJpIFZvbGNoa292IDx5dXJpLnZvbGNoa292QG5l
Y2xhYi5ldT4gd3JvdGU6Cj4+IAo+PiBTaWduZWQtb2ZmLWJ5OiBZdXJpIFZvbGNoa292IDx5dXJp
LnZvbGNoa292QG5lY2xhYi5ldT4KPj4gLS0tCj4+IGxpYi9yYW1mcy9yYW1mcy5oICAgICAgIHwg
IDQgKysrLQo+PiBsaWIvcmFtZnMvcmFtZnNfdm5vcHMuYyB8IDEwICsrKysrKy0tLS0KPj4gMiBm
aWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCj4+IAo+PiBkaWZm
IC0tZ2l0IGEvbGliL3JhbWZzL3JhbWZzLmggYi9saWIvcmFtZnMvcmFtZnMuaAo+PiBpbmRleCA5
MWZiNTc5Yy4uNDNmMmYzNmIgMTAwNjQ0Cj4+IC0tLSBhL2xpYi9yYW1mcy9yYW1mcy5oCj4+ICsr
KyBiL2xpYi9yYW1mcy9yYW1mcy5oCj4+IEBAIC0zOCw3ICszOCw3IEBACj4+IC8qICNkZWZpbmUg
REVCVUdfUkFNRlMgMSAqLwo+PiAKPj4gI2lmZGVmIERFQlVHX1JBTUZTCj4+IC0jZGVmaW5lIERQ
UklOVEYoYSkJZHByaW50ZiBhCj4+ICsjZGVmaW5lIERQUklOVEYoYSkJdWtfcHJfZGVidWcgYQo+
PiAjZWxzZQo+PiAjZGVmaW5lIERQUklOVEYoYSkgICAgZG8ge30gd2hpbGUgKDApCj4+ICNlbmRp
Zgo+PiBAQCAtNjgsNCArNjgsNiBAQCBzdHJ1Y3QgcmFtZnNfbm9kZSAqcmFtZnNfYWxsb2NhdGVf
bm9kZShjb25zdCBjaGFyICpuYW1lLCBpbnQgdHlwZSk7Cj4KPiBJIGFtIHdvbmRlcmluZyBpZiB3
ZSBjb3VsZCBnZXQgcmlkIG9mIHRoaXMgaWZkZWYgc3RhdGVtZW50IGNvbXBsZXRlbHkgYmVjYXVz
ZSB1a19wcl9kZWJ1ZyBpcyBkb2luZyBlbmFibGluZy9kaXNhYmxpbmcgYWxyZWFkeSBmb3IgdXMu
IEkgc2F3IHRoYXQgeW91IGhhZCB0aGlzIG9uIHZmc2NvcmUsIHRvby4gSSB3b3VsZCBhbHNvIHBy
ZWZlciBpZiB3ZSByZW1vdmUgdGhlIGVxdWl2YWxlbnQgaWYgc3RhdGVtZW50IHRoZXJlLCB0b28u
Cj4gSnVzdCBkbzogI2RlZmluZSBEUFJJTlRGKGEpIHVrX3ByX2RlYnVnIGEKT2ssIGZvciByYW1m
cyBpdCBhY3R1YWxseSBtYWtlcyBzZW5zZSB0byBjaGFuZ2UgaXQgbm93LCBzaW5jZSB0aGUKc2ln
bmF0dXJlIG9mIGEgZnVuY3Rpb24gbWF0Y2hlcyB1a19wcl9kZWJ1Zy4KCj4KPj4gCj4+IHZvaWQg
cmFtZnNfZnJlZV9ub2RlKHN0cnVjdCByYW1mc19ub2RlICpub2RlKTsKPj4gCj4+ICsjZGVmaW5l
IFJBTUZTX05PREUodm5vZGUpICgoc3RydWN0IHJhbWZzX25vZGUgKikgdm5vZGUtPnZfZGF0YSkK
Pj4gKwo+PiAjZW5kaWYgLyogIV9SQU1GU19IICovCgotLSAKWXVyaSBWb2xjaGtvdgpTb2Z0d2Fy
ZSBTcGVjaWFsaXN0CgpORUMgRXVyb3BlIEx0ZApLdXJmw7xyc3Rlbi1BbmxhZ2UgMzYKRC02OTEx
NSBIZWlkZWxiZXJnCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9q
ZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWlu
aW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Feb 20 17:40:29 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 20 Feb 2019 17:40:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gwVrA-0000IX-E3; Wed, 20 Feb 2019 17:40:28 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=VbZN=Q3=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1gwVr8-0000IL-AV
 for minios-devel@lists.xen.org; Wed, 20 Feb 2019 17:40:26 +0000
X-Inumbo-ID: 99d301e6-3536-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 99d301e6-3536-11e9-bc90-bc764e045a96;
 Wed, 20 Feb 2019 17:40:24 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 29D8BF203D;
 Wed, 20 Feb 2019 18:38:12 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id qPCojnl5b6jk; Wed, 20 Feb 2019 18:38:12 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 03E65F2017
 for <minios-devel@lists.xen.org>; Wed, 20 Feb 2019 18:38:10 +0100 (CET)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Wed, 20 Feb 2019 18:38:09 +0100
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 20 Feb 2019 18:38:01 +0100
Message-ID: <20190220173801.6037-1-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH] lib/vfscore: fix memory leak at
 sys_write
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: simon.kuenzer@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogbGliL3Zmc2NvcmUvc3lzY2FsbHMuYyB8IDIgKysKIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2Vy
dGlvbnMoKykKCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9zeXNjYWxscy5jIGIvbGliL3Zmc2Nv
cmUvc3lzY2FsbHMuYwppbmRleCBlZTdmN2ZkZS4uNzkzMWQzNGIgMTAwNjQ0Ci0tLSBhL2xpYi92
ZnNjb3JlL3N5c2NhbGxzLmMKKysrIGIvbGliL3Zmc2NvcmUvc3lzY2FsbHMuYwpAQCAtMzMzLDYg
KzMzMyw4IEBAIHN5c193cml0ZShzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCwgY29uc3Qgc3RydWN0
IGlvdmVjICppb3YsIHNpemVfdCBuaW92LAogCXVpby51aW9fcncgPSBVSU9fV1JJVEU7CiAJdmZz
X3dyaXRlKGZwLCAmdWlvLCAob2Zmc2V0ID09IC0xKSA/IDAgOiBGT0ZfT0ZGU0VUKTsKIAkqY291
bnQgPSBieXRlcyAtIHVpby51aW9fcmVzaWQ7CisKKwlmcmVlKGNvcHlfaW92KTsKIAlyZXR1cm4g
ZXJyb3I7CiB9CiAKLS0gCjIuMTkuMgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxp
c3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9s
aXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Feb 20 17:42:06 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 20 Feb 2019 17:42:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gwVsk-0000Ky-JJ; Wed, 20 Feb 2019 17:42:06 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=MYmH=Q3=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1gwVsj-0000Ko-Jg
 for minios-devel@lists.xen.org; Wed, 20 Feb 2019 17:42:05 +0000
X-Inumbo-ID: d528f603-3536-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id d528f603-3536-11e9-bc90-bc764e045a96;
 Wed, 20 Feb 2019 17:42:03 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id EEC83104E1F;
 Wed, 20 Feb 2019 18:42:02 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id Bcz3sDHKlPzB; Wed, 20 Feb 2019 18:42:02 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id C915C104DEC
 for <minios-devel@lists.xen.org>; Wed, 20 Feb 2019 18:42:00 +0100 (CET)
Received: from PALLENE.office.hd ([169.254.1.27]) by METHONE.office.hd
 ([192.168.24.54]) with mapi id 14.03.0319.002; Wed, 20 Feb 2019 18:42:00
 +0100
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: Yuri Volchkov <yuri.volchkov@neclab.eu>
Thread-Topic: [UNIKRAFT PATCH] lib/vfscore: fix memory leak at sys_write
Thread-Index: AQHUyUMLOAgB2XyUSE2AqfPUdNMFHqXo49+A
Date: Wed, 20 Feb 2019 17:42:00 +0000
Message-ID: <51AC2556-A95E-4EA6-AAE5-E9B3D6404DA5@neclab.eu>
References: <20190220173801.6037-1-yuri.volchkov@neclab.eu>
In-Reply-To: <20190220173801.6037-1-yuri.volchkov@neclab.eu>
Accept-Language: en-GB, gl-ES, de-DE, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [10.1.2.186]
Content-ID: <5B7583C1BD3FF74B8A33C0ACD2106EA4@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT PATCH] lib/vfscore: fix memory leak at
 sys_write
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhhbmtzIGZvciB0aGUgcGF0Y2guIEdvb2QgY2F0Y2guCgpSZXZpZXdlZC1ieTogU2ltb24gS3Vl
bnplciA8c2ltb24ua3VlbnplckBuZWNsYWIuZXU+Cgo+IE9uIDIwLiBGZWIgMjAxOSwgYXQgMTg6
MzgsIFl1cmkgVm9sY2hrb3YgPHl1cmkudm9sY2hrb3ZAbmVjbGFiLmV1PiB3cm90ZToKPiAKPiBT
aWduZWQtb2ZmLWJ5OiBZdXJpIFZvbGNoa292IDx5dXJpLnZvbGNoa292QG5lY2xhYi5ldT4KPiAt
LS0KPiBsaWIvdmZzY29yZS9zeXNjYWxscy5jIHwgMiArKwo+IDEgZmlsZSBjaGFuZ2VkLCAyIGlu
c2VydGlvbnMoKykKPiAKPiBkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvc3lzY2FsbHMuYyBiL2xp
Yi92ZnNjb3JlL3N5c2NhbGxzLmMKPiBpbmRleCBlZTdmN2ZkZS4uNzkzMWQzNGIgMTAwNjQ0Cj4g
LS0tIGEvbGliL3Zmc2NvcmUvc3lzY2FsbHMuYwo+ICsrKyBiL2xpYi92ZnNjb3JlL3N5c2NhbGxz
LmMKPiBAQCAtMzMzLDYgKzMzMyw4IEBAIHN5c193cml0ZShzdHJ1Y3QgdmZzY29yZV9maWxlICpm
cCwgY29uc3Qgc3RydWN0IGlvdmVjICppb3YsIHNpemVfdCBuaW92LAo+IAl1aW8udWlvX3J3ID0g
VUlPX1dSSVRFOwo+IAl2ZnNfd3JpdGUoZnAsICZ1aW8sIChvZmZzZXQgPT0gLTEpID8gMCA6IEZP
Rl9PRkZTRVQpOwo+IAkqY291bnQgPSBieXRlcyAtIHVpby51aW9fcmVzaWQ7Cj4gKwo+ICsJZnJl
ZShjb3B5X2lvdik7Cj4gCXJldHVybiBlcnJvcjsKPiB9Cj4gCj4gLS0gCj4gMi4xOS4yCj4gCgoK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRl
dmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Feb 20 17:47:00 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 20 Feb 2019 17:47:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gwVxT-0000Uj-15; Wed, 20 Feb 2019 17:46:59 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=MYmH=Q3=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1gwVxR-0000UZ-RT
 for minios-devel@lists.xen.org; Wed, 20 Feb 2019 17:46:57 +0000
X-Inumbo-ID: 8345fe09-3537-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 8345fe09-3537-11e9-bc90-bc764e045a96;
 Wed, 20 Feb 2019 17:46:56 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 01387F203D;
 Wed, 20 Feb 2019 18:46:55 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 41RtwBXTbgfa; Wed, 20 Feb 2019 18:46:54 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id B16E7F2017
 for <minios-devel@lists.xen.org>; Wed, 20 Feb 2019 18:46:52 +0100 (CET)
Received: from PALLENE.office.hd ([169.254.1.27]) by ENCELADUS.office.hd
 ([192.168.24.52]) with mapi id 14.03.0319.002; Wed, 20 Feb 2019 18:46:52
 +0100
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: Yuri Volchkov <yuri.volchkov@neclab.eu>
Thread-Topic: [UNIKRAFT PATCH v3 4/6] lib/ramfs: adapt imported ramfs to
 Unikraft
Thread-Index: AQHUyTUkjiTCcbfMvEScrpSxqYe1F6Xo5VeA
Date: Wed, 20 Feb 2019 17:46:51 +0000
Message-ID: <E5BBE126-65EF-4EFC-83F3-2ED8C18BCA64@neclab.eu>
References: <20190220155812.29546-1-yuri.volchkov@neclab.eu>
 <20190220155812.29546-5-yuri.volchkov@neclab.eu>
In-Reply-To: <20190220155812.29546-5-yuri.volchkov@neclab.eu>
Accept-Language: en-GB, gl-ES, de-DE, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [10.1.2.186]
Content-ID: <45139E89CCDBCB4D8736DCF7F202A320@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v3 4/6] lib/ramfs: adapt
 imported ramfs to Unikraft
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Tm8gbWVudSBvcHRpb24gZm9yIGVuYWJsaW5nIGRlYnVnZ2luZyBub3c/IDstKSBJdCBpcyBmaW5l
LCB3ZSBjYW4gYWRkIGl0IGxhdGVyLiBBbHNvIGFsbCBvdGhlciBsaWJyYXJpZXMgKGV4Y2VwdCBs
d2lwKSBkbyBub3QgaGF2ZSB0aGlzIHlldC4gVGhhbmtzIGZvciB0aGUgdXBkYXRlIQoKUmV2aWV3
ZWQtYnk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1PgoKPiBPbiAyMC4g
RmViIDIwMTksIGF0IDE2OjU4LCBZdXJpIFZvbGNoa292IDx5dXJpLnZvbGNoa292QG5lY2xhYi5l
dT4gd3JvdGU6Cj4gCj4gU2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtv
dkBuZWNsYWIuZXU+Cj4gLS0tCj4gbGliL0NvbmZpZy51ayAgICAgICAgICAgIHwgICAxICsKPiBs
aWIvTWFrZWZpbGUudWsgICAgICAgICAgfCAgIDEgKwo+IGxpYi9yYW1mcy9Db25maWcudWsgICAg
ICB8ICAgNCArCj4gbGliL3JhbWZzL01ha2VmaWxlLnVrICAgIHwgICA0ICsKPiBsaWIvcmFtZnMv
ZXhwb3J0c3ltcy51ayAgfCAgIDEgKwo+IGxpYi9yYW1mcy9yYW1mcy5oICAgICAgICB8ICAgNSAr
LQo+IGxpYi9yYW1mcy9yYW1mc192ZnNvcHMuYyB8ICAyOCArKysrLS0tCj4gbGliL3JhbWZzL3Jh
bWZzX3Zub3BzLmMgIHwgMTY1ICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0t
LQo+IDggZmlsZXMgY2hhbmdlZCwgMTIwIGluc2VydGlvbnMoKyksIDg5IGRlbGV0aW9ucygtKQo+
IGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvcmFtZnMvQ29uZmlnLnVrCj4gY3JlYXRlIG1vZGUgMTAw
NjQ0IGxpYi9yYW1mcy9NYWtlZmlsZS51awo+IGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvcmFtZnMv
ZXhwb3J0c3ltcy51awo+IAo+IGRpZmYgLS1naXQgYS9saWIvQ29uZmlnLnVrIGIvbGliL0NvbmZp
Zy51awo+IGluZGV4IDQ1MzIxZWZlLi43ZDg2Zjc2YyAxMDA2NDQKPiAtLS0gYS9saWIvQ29uZmln
LnVrCj4gKysrIGIvbGliL0NvbmZpZy51awo+IEBAIC0zOCw2ICszOCw3IEBAIHNvdXJjZSAibGli
L3Vrc2NoZWQvQ29uZmlnLnVrIgo+IHNvdXJjZSAibGliL3Vrc2NoZWRjb29wL0NvbmZpZy51ayIK
PiBzb3VyY2UgImxpYi9mZHQvQ29uZmlnLnVrIgo+IHNvdXJjZSAibGliL3Zmc2NvcmUvQ29uZmln
LnVrIgo+ICtzb3VyY2UgImxpYi9yYW1mcy9Db25maWcudWsiCj4gc291cmNlICJsaWIvdWtsb2Nr
L0NvbmZpZy51ayIKPiBzb3VyY2UgImxpYi91a21waS9Db25maWcudWsiCj4gc291cmNlICJsaWIv
dWtzd3JhbmQvQ29uZmlnLnVrIgo+IGRpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUudWsgYi9saWIv
TWFrZWZpbGUudWsKPiBpbmRleCA0YzJjYzg3ZC4uZDY2YzdlZTkgMTAwNjQ0Cj4gLS0tIGEvbGli
L01ha2VmaWxlLnVrCj4gKysrIGIvbGliL01ha2VmaWxlLnVrCj4gQEAgLTE2LDYgKzE2LDcgQEAg
JChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENPTkZJR19VS19CQVNFKS9saWIvdWtzY2hlZCkp
Cj4gJChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENPTkZJR19VS19CQVNFKS9saWIvdWtzY2hl
ZGNvb3ApKQo+ICQoZXZhbCAkKGNhbGwgX2ltcG9ydF9saWIsJChDT05GSUdfVUtfQkFTRSkvbGli
L2ZkdCkpCj4gJChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENPTkZJR19VS19CQVNFKS9saWIv
dmZzY29yZSkpCj4gKyQoZXZhbCAkKGNhbGwgX2ltcG9ydF9saWIsJChDT05GSUdfVUtfQkFTRSkv
bGliL3JhbWZzKSkKPiAkKGV2YWwgJChjYWxsIF9pbXBvcnRfbGliLCQoQ09ORklHX1VLX0JBU0Up
L2xpYi91a2xvY2spKQo+ICQoZXZhbCAkKGNhbGwgX2ltcG9ydF9saWIsJChDT05GSUdfVUtfQkFT
RSkvbGliL3VrbXBpKSkKPiAkKGV2YWwgJChjYWxsIF9pbXBvcnRfbGliLCQoQ09ORklHX1VLX0JB
U0UpL2xpYi91a2J1cykpCj4gZGlmZiAtLWdpdCBhL2xpYi9yYW1mcy9Db25maWcudWsgYi9saWIv
cmFtZnMvQ29uZmlnLnVrCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMC4u
NTJlNDM4OGMKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvbGliL3JhbWZzL0NvbmZpZy51awo+IEBA
IC0wLDAgKzEsNCBAQAo+ICtjb25maWcgTElCUkFNRlMKPiArCWJvb2wgInJhbWZzOiBzaW1wbGUg
UkFNIGZpbGUgc3lzdGVtIgo+ICsJZGVmYXVsdCBuCj4gKwlkZXBlbmRzIG9uIExJQlZGU0NPUkUK
PiBkaWZmIC0tZ2l0IGEvbGliL3JhbWZzL01ha2VmaWxlLnVrIGIvbGliL3JhbWZzL01ha2VmaWxl
LnVrCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMC4uOWE0NDMzNTgKPiAt
LS0gL2Rldi9udWxsCj4gKysrIGIvbGliL3JhbWZzL01ha2VmaWxlLnVrCj4gQEAgLTAsMCArMSw0
IEBACj4gKyQoZXZhbCAkKGNhbGwgYWRkbGliX3MsbGlicmFtZnMsJChDT05GSUdfTElCUkFNRlMp
KSkKPiArCj4gK0xJQlJBTUZTX1NSQ1MteSArPSAkKExJQlJBTUZTX0JBU0UpL3JhbWZzX3Zmc29w
cy5jCj4gK0xJQlJBTUZTX1NSQ1MteSArPSAkKExJQlJBTUZTX0JBU0UpL3JhbWZzX3Zub3BzLmMK
PiBkaWZmIC0tZ2l0IGEvbGliL3JhbWZzL2V4cG9ydHN5bXMudWsgYi9saWIvcmFtZnMvZXhwb3J0
c3ltcy51awo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAuLmM4NmMzZjM1
Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2xpYi9yYW1mcy9leHBvcnRzeW1zLnVrCj4gQEAgLTAs
MCArMSBAQAo+ICtub25lCj4gXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCj4gZGlmZiAtLWdp
dCBhL2xpYi9yYW1mcy9yYW1mcy5oIGIvbGliL3JhbWZzL3JhbWZzLmgKPiBpbmRleCAwMWU0ZGEw
OS4uNjFmZjM1ZDIgMTAwNjQ0Cj4gLS0tIGEvbGliL3JhbWZzL3JhbWZzLmgKPiArKysgYi9saWIv
cmFtZnMvcmFtZnMuaAo+IEBAIC0zMyw3ICszMyw4IEBACj4gI2lmbmRlZiBfUkFNRlNfSAo+ICNk
ZWZpbmUgX1JBTUZTX0gKPiAKPiAtI2luY2x1ZGUgPG9zdi9wcmV4Lmg+Cj4gKyNpbmNsdWRlIDx2
ZnNjb3JlL3ByZXguaD4KPiArI2luY2x1ZGUgPHN0ZGJvb2wuaD4KPiAKPiAvKiAjZGVmaW5lIERF
QlVHX1JBTUZTIDEgKi8KPiAKPiBAQCAtNDMsOCArNDQsNiBAQAo+ICNkZWZpbmUgRFBSSU5URihh
KSAgICBkbyB7fSB3aGlsZSAoMCkKPiAjZW5kaWYKPiAKPiAtI2RlZmluZSBBU1NFUlQoZSkgICAg
YXNzZXJ0KGUpCj4gLQo+IC8qCj4gICogRmlsZS9kaXJlY3Rvcnkgbm9kZSBmb3IgUkFNRlMKPiAg
Ki8KPiBkaWZmIC0tZ2l0IGEvbGliL3JhbWZzL3JhbWZzX3Zmc29wcy5jIGIvbGliL3JhbWZzL3Jh
bWZzX3Zmc29wcy5jCj4gaW5kZXggNGRmNTRjNWYuLjNiNWMwNzVjIDEwMDY0NAo+IC0tLSBhL2xp
Yi9yYW1mcy9yYW1mc192ZnNvcHMuYwo+ICsrKyBiL2xpYi9yYW1mcy9yYW1mc192ZnNvcHMuYwo+
IEBAIC0zMiw5ICszMiwxMCBAQAo+IAo+ICNpbmNsdWRlIDxlcnJuby5oPgo+IAo+IC0jaW5jbHVk
ZSA8b3N2L3Zub2RlLmg+Cj4gLSNpbmNsdWRlIDxvc3YvbW91bnQuaD4KPiAtI2luY2x1ZGUgPG9z
di9kZW50cnkuaD4KPiArI2RlZmluZSBfQlNEX1NPVVJDRQo+ICsjaW5jbHVkZSA8dmZzY29yZS92
bm9kZS5oPgo+ICsjaW5jbHVkZSA8dmZzY29yZS9tb3VudC5oPgo+ICsjaW5jbHVkZSA8dmZzY29y
ZS9kZW50cnkuaD4KPiAKPiAjaW5jbHVkZSAicmFtZnMuaCIKPiAKPiBAQCAtNDQsOSArNDUsOSBA
QCBzdGF0aWMgaW50IHJhbWZzX21vdW50KHN0cnVjdCBtb3VudCAqbXAsIGNvbnN0IGNoYXIgKmRl
diwgaW50IGZsYWdzLCBjb25zdCB2b2lkCj4gCj4gc3RhdGljIGludCByYW1mc191bm1vdW50KHN0
cnVjdCBtb3VudCAqbXAsIGludCBmbGFncyk7Cj4gCj4gLSNkZWZpbmUgcmFtZnNfc3luYyAgICAo
KHZmc29wX3N5bmNfdCl2ZnNfbnVsbG9wKQo+IC0jZGVmaW5lIHJhbWZzX3ZnZXQgICAgKCh2ZnNv
cF92Z2V0X3QpdmZzX251bGxvcCkKPiAtI2RlZmluZSByYW1mc19zdGF0ZnMgICAgKCh2ZnNvcF9z
dGF0ZnNfdCl2ZnNfbnVsbG9wKQo+ICsjZGVmaW5lIHJhbWZzX3N5bmMgICAgKCh2ZnNvcF9zeW5j
X3QpdmZzY29yZV9udWxsb3ApCj4gKyNkZWZpbmUgcmFtZnNfdmdldCAgICAoKHZmc29wX3ZnZXRf
dCl2ZnNjb3JlX251bGxvcCkKPiArI2RlZmluZSByYW1mc19zdGF0ZnMgICAgKCh2ZnNvcF9zdGF0
ZnNfdCl2ZnNjb3JlX251bGxvcCkKPiAKPiAvKgo+ICAqIEZpbGUgc3lzdGVtIG9wZXJhdGlvbnMK
PiBAQCAtNjAsMTEgKzYxLDIwIEBAIHN0cnVjdCB2ZnNvcHMgcmFtZnNfdmZzb3BzID0gewo+IAkJ
JnJhbWZzX3Zub3BzLCAgICAgIC8qIHZub3BzICovCj4gfTsKPiAKPiArc3RhdGljIHN0cnVjdCB2
ZnNjb3JlX2ZzX3R5cGUgZnNfcmFtZnMgPSB7Cj4gKwkudnNfbmFtZSA9ICJyYW1mcyIsCj4gKwku
dnNfaW5pdCA9IE5VTEwsCj4gKwkudnNfb3AgPSAmcmFtZnNfdmZzb3BzLAo+ICt9Owo+ICsKPiAr
VUtfRlNfUkVHSVNURVIoZnNfcmFtZnMpOwo+ICsKPiAvKgo+ICAqIE1vdW50IGEgZmlsZSBzeXN0
ZW0uCj4gICovCj4gc3RhdGljIGludAo+IC1yYW1mc19tb3VudChzdHJ1Y3QgbW91bnQgKm1wLCBj
b25zdCBjaGFyICpkZXYsIGludCBmbGFncywgY29uc3Qgdm9pZCAqZGF0YSkKPiArcmFtZnNfbW91
bnQoc3RydWN0IG1vdW50ICptcCwgY29uc3QgY2hhciAqZGV2IF9fdW51c2VkLAo+ICsJICAgIGlu
dCBmbGFncyBfX3VudXNlZCwgY29uc3Qgdm9pZCAqZGF0YSBfX3VudXNlZCkKPiB7Cj4gCXN0cnVj
dCByYW1mc19ub2RlICpucDsKPiAKPiBAQCAtODYsOCArOTYsOCBAQCByYW1mc19tb3VudChzdHJ1
Y3QgbW91bnQgKm1wLCBjb25zdCBjaGFyICpkZXYsIGludCBmbGFncywgY29uc3Qgdm9pZCAqZGF0
YSkKPiAgKiAgICAgICBkaXJlY3RvcmllcywgYW5kIGl0IHJlcXVpcmVzIG1vcmUgd29yay4uLgo+
ICAqLwo+IHN0YXRpYyBpbnQKPiAtcmFtZnNfdW5tb3VudChzdHJ1Y3QgbW91bnQgKm1wLCBpbnQg
ZmxhZ3MpCj4gK3JhbWZzX3VubW91bnQoc3RydWN0IG1vdW50ICptcCwgaW50IGZsYWdzIF9fdW51
c2VkKQo+IHsKPiAtCXJlbGVhc2VfbXBfZGVudHJpZXMobXApOwo+ICsJdmZzY29yZV9yZWxlYXNl
X21wX2RlbnRyaWVzKG1wKTsKPiAJcmV0dXJuIDA7Cj4gfQo+IGRpZmYgLS1naXQgYS9saWIvcmFt
ZnMvcmFtZnNfdm5vcHMuYyBiL2xpYi9yYW1mcy9yYW1mc192bm9wcy5jCj4gaW5kZXggNDUzOGU5
Y2IuLjQ3NjE0ZmQzIDEwMDY0NAo+IC0tLSBhL2xpYi9yYW1mcy9yYW1mc192bm9wcy5jCj4gKysr
IGIvbGliL3JhbWZzL3JhbWZzX3Zub3BzLmMKPiBAQCAtMzMsNyArMzMsOSBAQAo+IC8qCj4gICog
cm1hZnNfdm5vcHMuYyAtIHZub2RlIG9wZXJhdGlvbnMgZm9yIFJBTSBmaWxlIHN5c3RlbS4KPiAg
Ki8KPiArI2RlZmluZSBfR05VX1NPVVJDRQo+IAo+ICsjaW5jbHVkZSA8dWsvZXNzZW50aWFscy5o
Pgo+ICNpbmNsdWRlIDxzeXMvc3RhdC5oPgo+ICNpbmNsdWRlIDxkaXJlbnQuaD4KPiAjaW5jbHVk
ZSA8c3lzL3BhcmFtLmg+Cj4gQEAgLTQxLDI0ICs0MywyOSBAQAo+ICNpbmNsdWRlIDxlcnJuby5o
Pgo+ICNpbmNsdWRlIDxzdHJpbmcuaD4KPiAjaW5jbHVkZSA8c3RkbGliLmg+Cj4gLSNpbmNsdWRl
IDxmY250bC5oPgo+IAo+IC0jaW5jbHVkZSA8b3N2L3ByZXguaD4KPiAtI2luY2x1ZGUgPG9zdi92
bm9kZS5oPgo+IC0jaW5jbHVkZSA8b3N2L2ZpbGUuaD4KPiAtI2luY2x1ZGUgPG9zdi9tb3VudC5o
Pgo+IC0jaW5jbHVkZSA8b3N2L3Zub2RlX2F0dHIuaD4KPiArI2luY2x1ZGUgPHZmc2NvcmUvcHJl
eC5oPgo+ICsjaW5jbHVkZSA8dmZzY29yZS92bm9kZS5oPgo+ICsjaW5jbHVkZSA8dmZzY29yZS9t
b3VudC5oPgo+ICsjaW5jbHVkZSA8dmZzY29yZS91aW8uaD4KPiArI2luY2x1ZGUgPHZmc2NvcmUv
ZmlsZS5oPgo+IAo+ICNpbmNsdWRlICJyYW1mcy5oIgo+ICsjaW5jbHVkZSA8ZGlyZW50Lmg+Cj4g
KyNpbmNsdWRlIDxmY250bC5oPgo+ICsjaW5jbHVkZSA8dmZzY29yZS9mcy5oPgo+IAo+IC1zdGF0
aWMgbXV0ZXhfdCByYW1mc19sb2NrID0gTVVURVhfSU5JVElBTElaRVI7Cj4gK3N0YXRpYyBzdHJ1
Y3QgdWtfbXV0ZXggcmFtZnNfbG9jayA9IFVLX01VVEVYX0lOSVRJQUxJWkVSKHJhbWZzX2xvY2sp
Owo+IHN0YXRpYyB1aW50NjRfdCBpbm9kZV9jb3VudCA9IDE7IC8qIGlub2RlIDAgaXMgcmVzZXJ2
ZWQgdG8gcm9vdCAqLwo+IAo+IHN0YXRpYyB2b2lkCj4gLXNldF90aW1lc190b19ub3coc3RydWN0
IHRpbWVzcGVjICp0aW1lMSwgc3RydWN0IHRpbWVzcGVjICp0aW1lMiA9IG51bGxwdHIsIHN0cnVj
dCB0aW1lc3BlYyAqdGltZTMgPSBudWxscHRyKQo+ICtzZXRfdGltZXNfdG9fbm93KHN0cnVjdCB0
aW1lc3BlYyAqdGltZTEsIHN0cnVjdCB0aW1lc3BlYyAqdGltZTIsCj4gKwkJIHN0cnVjdCB0aW1l
c3BlYyAqdGltZTMpCj4gewo+IC0Jc3RydWN0IHRpbWVzcGVjIG5vdzsKPiAtCWNsb2NrX2dldHRp
bWUoQ0xPQ0tfUkVBTFRJTUUsICZub3cpOwo+ICsJc3RydWN0IHRpbWVzcGVjIG5vdyA9IHswLCAw
fTsKPiArCj4gKwkvKiBUT0RPOiBpbXBsZW1lbnQgdGhlIHJlYWwgY2xvY2tfZ2V0dGltZSAqLwo+
ICsJLyogY2xvY2tfZ2V0dGltZShDTE9DS19SRUFMVElNRSwgJm5vdyk7ICovCj4gCWlmICh0aW1l
MSkgewo+IAkJbWVtY3B5KHRpbWUxLCAmbm93LCBzaXplb2Yoc3RydWN0IHRpbWVzcGVjKSk7Cj4g
CX0KPiBAQCAtNzUsNyArODIsNyBAQCByYW1mc19hbGxvY2F0ZV9ub2RlKGNvbnN0IGNoYXIgKm5h
bWUsIGludCB0eXBlKQo+IHsKPiAJc3RydWN0IHJhbWZzX25vZGUgKm5wOwo+IAo+IC0JbnAgPSAo
cmFtZnNfbm9kZSAqKSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCByYW1mc19ub2RlKSk7Cj4gKwlucCA9
IG1hbGxvYyhzaXplb2Yoc3RydWN0IHJhbWZzX25vZGUpKTsKPiAJaWYgKG5wID09IE5VTEwpCj4g
CQlyZXR1cm4gTlVMTDsKPiAJbWVtc2V0KG5wLCAwLCBzaXplb2Yoc3RydWN0IHJhbWZzX25vZGUp
KTsKPiBAQCAtMTIxLDcgKzEyOCw3IEBAIHJhbWZzX2FkZF9ub2RlKHN0cnVjdCByYW1mc19ub2Rl
ICpkbnAsIGNoYXIgKm5hbWUsIGludCB0eXBlKQo+IAlpZiAobnAgPT0gTlVMTCkKPiAJCXJldHVy
biBOVUxMOwo+IAo+IC0JbXV0ZXhfbG9jaygmcmFtZnNfbG9jayk7Cj4gKwl1a19tdXRleF9sb2Nr
KCZyYW1mc19sb2NrKTsKPiAKPiAJLyogTGluayB0byB0aGUgZGlyZWN0b3J5IGxpc3QgKi8KPiAJ
aWYgKGRucC0+cm5fY2hpbGQgPT0gTlVMTCkgewo+IEBAIC0xMzMsOSArMTQwLDkgQEAgcmFtZnNf
YWRkX25vZGUoc3RydWN0IHJhbWZzX25vZGUgKmRucCwgY2hhciAqbmFtZSwgaW50IHR5cGUpCj4g
CQlwcmV2LT5ybl9uZXh0ID0gbnA7Cj4gCX0KPiAKPiAtCXNldF90aW1lc190b19ub3coJihkbnAt
PnJuX210aW1lKSwgJihkbnAtPnJuX2N0aW1lKSk7Cj4gKwlzZXRfdGltZXNfdG9fbm93KCYoZG5w
LT5ybl9tdGltZSksICYoZG5wLT5ybl9jdGltZSksIE5VTEwpOwo+IAo+IC0JbXV0ZXhfdW5sb2Nr
KCZyYW1mc19sb2NrKTsKPiArCXVrX211dGV4X3VubG9jaygmcmFtZnNfbG9jayk7Cj4gCXJldHVy
biBucDsKPiB9Cj4gCj4gQEAgLTE0Nyw3ICsxNTQsNyBAQCByYW1mc19yZW1vdmVfbm9kZShzdHJ1
Y3QgcmFtZnNfbm9kZSAqZG5wLCBzdHJ1Y3QgcmFtZnNfbm9kZSAqbnApCj4gCWlmIChkbnAtPnJu
X2NoaWxkID09IE5VTEwpCj4gCQlyZXR1cm4gRUJVU1k7Cj4gCj4gLQltdXRleF9sb2NrKCZyYW1m
c19sb2NrKTsKPiArCXVrX211dGV4X2xvY2soJnJhbWZzX2xvY2spOwo+IAo+IAkvKiBVbmxpbmsg
ZnJvbSB0aGUgZGlyZWN0b3J5IGxpc3QgKi8KPiAJaWYgKGRucC0+cm5fY2hpbGQgPT0gbnApIHsK
PiBAQCAtMTU2LDcgKzE2Myw3IEBAIHJhbWZzX3JlbW92ZV9ub2RlKHN0cnVjdCByYW1mc19ub2Rl
ICpkbnAsIHN0cnVjdCByYW1mc19ub2RlICpucCkKPiAJCWZvciAocHJldiA9IGRucC0+cm5fY2hp
bGQ7IHByZXYtPnJuX25leHQgIT0gbnA7Cj4gCQkJIHByZXYgPSBwcmV2LT5ybl9uZXh0KSB7Cj4g
CQkJaWYgKHByZXYtPnJuX25leHQgPT0gTlVMTCkgewo+IC0JCQkJbXV0ZXhfdW5sb2NrKCZyYW1m
c19sb2NrKTsKPiArCQkJCXVrX211dGV4X3VubG9jaygmcmFtZnNfbG9jayk7Cj4gCQkJCXJldHVy
biBFTk9FTlQ7Cj4gCQkJfQo+IAkJfQo+IEBAIC0xNjQsOSArMTcxLDkgQEAgcmFtZnNfcmVtb3Zl
X25vZGUoc3RydWN0IHJhbWZzX25vZGUgKmRucCwgc3RydWN0IHJhbWZzX25vZGUgKm5wKQo+IAl9
Cj4gCXJhbWZzX2ZyZWVfbm9kZShucCk7Cj4gCj4gLQlzZXRfdGltZXNfdG9fbm93KCYoZG5wLT5y
bl9tdGltZSksICYoZG5wLT5ybl9jdGltZSkpOwo+ICsJc2V0X3RpbWVzX3RvX25vdygmKGRucC0+
cm5fbXRpbWUpLCAmKGRucC0+cm5fY3RpbWUpLCBOVUxMKTsKPiAKPiAtCW11dGV4X3VubG9jaygm
cmFtZnNfbG9jayk7Cj4gKwl1a19tdXRleF91bmxvY2soJnJhbWZzX2xvY2spOwo+IAlyZXR1cm4g
MDsKPiB9Cj4gCj4gQEAgLTE5Myw3ICsyMDAsNyBAQCByYW1mc19yZW5hbWVfbm9kZShzdHJ1Y3Qg
cmFtZnNfbm9kZSAqbnAsIGNoYXIgKm5hbWUpCj4gCQlucC0+cm5fbmFtZSA9IHRtcDsKPiAJfQo+
IAlucC0+cm5fbmFtZWxlbiA9IGxlbjsKPiAtCXNldF90aW1lc190b19ub3coJihucC0+cm5fY3Rp
bWUpKTsKPiArCXNldF90aW1lc190b19ub3coJihucC0+cm5fY3RpbWUpLCBOVUxMLCBOVUxMKTsK
PiAJcmV0dXJuIDA7Cj4gfQo+IAo+IEBAIC0yMTAsMTAgKzIxNywxMCBAQCByYW1mc19sb29rdXAo
c3RydWN0IHZub2RlICpkdnAsIGNoYXIgKm5hbWUsIHN0cnVjdCB2bm9kZSAqKnZwcCkKPiAJaWYg
KCpuYW1lID09ICdcMCcpCj4gCQlyZXR1cm4gRU5PRU5UOwo+IAo+IC0JbXV0ZXhfbG9jaygmcmFt
ZnNfbG9jayk7Cj4gKwl1a19tdXRleF9sb2NrKCZyYW1mc19sb2NrKTsKPiAKPiAJbGVuID0gc3Ry
bGVuKG5hbWUpOwo+IC0JZG5wID0gKHJhbWZzX25vZGUgKikgZHZwLT52X2RhdGE7Cj4gKwlkbnAg
PSBkdnAtPnZfZGF0YTsKPiAJZm91bmQgPSAwOwo+IAlmb3IgKG5wID0gZG5wLT5ybl9jaGlsZDsg
bnAgIT0gTlVMTDsgbnAgPSBucC0+cm5fbmV4dCkgewo+IAkJaWYgKG5wLT5ybl9uYW1lbGVuID09
IGxlbiAmJgo+IEBAIC0yMjMsMTcgKzIzMCwxNyBAQCByYW1mc19sb29rdXAoc3RydWN0IHZub2Rl
ICpkdnAsIGNoYXIgKm5hbWUsIHN0cnVjdCB2bm9kZSAqKnZwcCkKPiAJCX0KPiAJfQo+IAlpZiAo
Zm91bmQgPT0gMCkgewo+IC0JCW11dGV4X3VubG9jaygmcmFtZnNfbG9jayk7Cj4gKwkJdWtfbXV0
ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsKPiAJCXJldHVybiBFTk9FTlQ7Cj4gCX0KPiAtCWlmICh2
Z2V0KGR2cC0+dl9tb3VudCwgaW5vZGVfY291bnQrKywgJnZwKSkgewo+ICsJaWYgKHZmc2NvcmVf
dmdldChkdnAtPnZfbW91bnQsIGlub2RlX2NvdW50KyssICZ2cCkpIHsKPiAJCS8qIGZvdW5kIGlu
IGNhY2hlICovCj4gCQkqdnBwID0gdnA7Cj4gLQkJbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsK
PiArCQl1a19tdXRleF91bmxvY2soJnJhbWZzX2xvY2spOwo+IAkJcmV0dXJuIDA7Cj4gCX0KPiAJ
aWYgKCF2cCkgewo+IC0JCW11dGV4X3VubG9jaygmcmFtZnNfbG9jayk7Cj4gKwkJdWtfbXV0ZXhf
dW5sb2NrKCZyYW1mc19sb2NrKTsKPiAJCXJldHVybiBFTk9NRU07Cj4gCX0KPiAJdnAtPnZfZGF0
YSA9IG5wOwo+IEBAIC0yNDEsNyArMjQ4LDcgQEAgcmFtZnNfbG9va3VwKHN0cnVjdCB2bm9kZSAq
ZHZwLCBjaGFyICpuYW1lLCBzdHJ1Y3Qgdm5vZGUgKip2cHApCj4gCXZwLT52X3R5cGUgPSBucC0+
cm5fdHlwZTsKPiAJdnAtPnZfc2l6ZSA9IG5wLT5ybl9zaXplOwo+IAo+IC0JbXV0ZXhfdW5sb2Nr
KCZyYW1mc19sb2NrKTsKPiArCXVrX211dGV4X3VubG9jaygmcmFtZnNfbG9jayk7Cj4gCj4gCSp2
cHAgPSB2cDsKPiAKPiBAQCAtMjYxLDcgKzI2OCw3IEBAIHJhbWZzX21rZGlyKHN0cnVjdCB2bm9k
ZSAqZHZwLCBjaGFyICpuYW1lLCBtb2RlX3QgbW9kZSkKPiAJaWYgKCFTX0lTRElSKG1vZGUpKQo+
IAkJcmV0dXJuIEVJTlZBTDsKPiAKPiAtCW5wID0gKHJhbWZzX25vZGUgKikgcmFtZnNfYWRkX25v
ZGUoKHJhbWZzX25vZGUgKikgZHZwLT52X2RhdGEsIG5hbWUsIFZESVIpOwo+ICsJbnAgPSByYW1m
c19hZGRfbm9kZShkdnAtPnZfZGF0YSwgbmFtZSwgVkRJUik7Cj4gCWlmIChucCA9PSBOVUxMKQo+
IAkJcmV0dXJuIEVOT01FTTsKPiAJbnAtPnJuX3NpemUgPSAwOwo+IEBAIC0yNzUsNyArMjgyLDcg
QEAgcmFtZnNfc3ltbGluayhzdHJ1Y3Qgdm5vZGUgKmR2cCwgY2hhciAqbmFtZSwgY2hhciAqbGlu
aykKPiAJaWYgKHN0cmxlbihuYW1lKSA+IE5BTUVfTUFYKSB7Cj4gCQlyZXR1cm4gRU5BTUVUT09M
T05HOwo+IAl9Cj4gLQlhdXRvIG5wID0gcmFtZnNfYWRkX25vZGUoKHJhbWZzX25vZGUgKikgZHZw
LT52X2RhdGEsIG5hbWUsIFZMTkspOwo+ICsJc3RydWN0IHJhbWZzX25vZGUgKm5wID0gcmFtZnNf
YWRkX25vZGUoZHZwLT52X2RhdGEsIG5hbWUsIFZMTkspOwo+IAlpZiAobnAgPT0gTlVMTCkKPiAJ
CXJldHVybiBFTk9NRU07Cj4gCS8vIFNhdmUgdGhlIGxpbmsgdGFyZ2V0IHdpdGhvdXQgdGhlIGZp
bmFsIG51bGwsIGFzIHJlYWRsaW5rKCkgd2FudHMgaXQuCj4gQEAgLTI4NiwxMCArMjkzLDEwIEBA
IHJhbWZzX3N5bWxpbmsoc3RydWN0IHZub2RlICpkdnAsIGNoYXIgKm5hbWUsIGNoYXIgKmxpbmsp
Cj4gCXJldHVybiAwOwo+IH0KPiAKPiAtc3RhdGljIGludAo+ICtzdGF0aWMgc3NpemVfdAo+IHJh
bWZzX3JlYWRsaW5rKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCB1aW8gKnVpbykKPiB7Cj4gLQlz
dHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSAocmFtZnNfbm9kZSAqKSB2cC0+dl9kYXRhOwo+ICsJc3Ry
dWN0IHJhbWZzX25vZGUgKm5wID0gdnAtPnZfZGF0YTsKPiAJc2l6ZV90IGxlbjsKPiAKPiAJaWYg
KHZwLT52X3R5cGUgIT0gVkxOSykgewo+IEBAIC0zMDgsMjMgKzMxNSwyMyBAQCByYW1mc19yZWFk
bGluayhzdHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3QgdWlvICp1aW8pCj4gCWVsc2UKPiAJCWxlbiA9
IHVpby0+dWlvX3Jlc2lkOwo+IAo+IC0Jc2V0X3RpbWVzX3RvX25vdyggJihucC0+cm5fYXRpbWUp
KTsKPiAtCXJldHVybiB1aW9tb3ZlKG5wLT5ybl9idWYgKyB1aW8tPnVpb19vZmZzZXQsIGxlbiwg
dWlvKTsKPiArCXNldF90aW1lc190b19ub3coJihucC0+cm5fYXRpbWUpLCBOVUxMLCBOVUxMKTsK
PiArCXJldHVybiB2ZnNjb3JlX3Vpb21vdmUobnAtPnJuX2J1ZiArIHVpby0+dWlvX29mZnNldCwg
bGVuLCB1aW8pOwo+IH0KPiAKPiAvKiBSZW1vdmUgYSBkaXJlY3RvcnkgKi8KPiBzdGF0aWMgaW50
Cj4gLXJhbWZzX3JtZGlyKHN0cnVjdCB2bm9kZSAqZHZwLCBzdHJ1Y3Qgdm5vZGUgKnZwLCBjaGFy
ICpuYW1lKQo+ICtyYW1mc19ybWRpcihzdHJ1Y3Qgdm5vZGUgKmR2cCwgc3RydWN0IHZub2RlICp2
cCwgY2hhciAqbmFtZSBfX3VudXNlZCkKPiB7Cj4gLQlyZXR1cm4gcmFtZnNfcmVtb3ZlX25vZGUo
KHJhbWZzX25vZGUgKikgZHZwLT52X2RhdGEsIChyYW1mc19ub2RlICopIHZwLT52X2RhdGEpOwo+
ICsJcmV0dXJuIHJhbWZzX3JlbW92ZV9ub2RlKGR2cC0+dl9kYXRhLCB2cC0+dl9kYXRhKTsKPiB9
Cj4gCj4gLyogUmVtb3ZlIGEgZmlsZSAqLwo+IHN0YXRpYyBpbnQKPiAtcmFtZnNfcmVtb3ZlKHN0
cnVjdCB2bm9kZSAqZHZwLCBzdHJ1Y3Qgdm5vZGUgKnZwLCBjaGFyICpuYW1lKQo+ICtyYW1mc19y
ZW1vdmUoc3RydWN0IHZub2RlICpkdnAsIHN0cnVjdCB2bm9kZSAqdnAsIGNoYXIgKm5hbWUgX191
bnVzZWQpCj4gewo+IAlEUFJJTlRGKCgicmVtb3ZlICVzIGluICVzXG4iLCBuYW1lLCBkdnAtPnZf
cGF0aCkpOwo+IC0JcmV0dXJuIHJhbWZzX3JlbW92ZV9ub2RlKChyYW1mc19ub2RlICopIGR2cC0+
dl9kYXRhLCAocmFtZnNfbm9kZSAqKSB2cC0+dl9kYXRhKTsKPiArCXJldHVybiByYW1mc19yZW1v
dmVfbm9kZShkdnAtPnZfZGF0YSwgdnAtPnZfZGF0YSk7Cj4gfQo+IAo+IC8qIFRydW5jYXRlIGZp
bGUgKi8KPiBAQCAtMzM2LDcgKzM0Myw3IEBAIHJhbWZzX3RydW5jYXRlKHN0cnVjdCB2bm9kZSAq
dnAsIG9mZl90IGxlbmd0aCkKPiAJc2l6ZV90IG5ld19zaXplOwo+IAo+IAlEUFJJTlRGKCgidHJ1
bmNhdGUgJXMgbGVuZ3RoPSVkXG4iLCB2cC0+dl9wYXRoLCBsZW5ndGgpKTsKPiAtCW5wID0gKHJh
bWZzX25vZGUgKikgdnAtPnZfZGF0YTsKPiArCW5wID0gdnAtPnZfZGF0YTsKPiAKPiAJaWYgKGxl
bmd0aCA9PSAwKSB7Cj4gCQlpZiAobnAtPnJuX2J1ZiAhPSBOVUxMKSB7Cj4gQEAgLTM0NSw4ICsz
NTIsOCBAQCByYW1mc190cnVuY2F0ZShzdHJ1Y3Qgdm5vZGUgKnZwLCBvZmZfdCBsZW5ndGgpCj4g
CQkJbnAtPnJuX2J1ZiA9IE5VTEw7Cj4gCQkJbnAtPnJuX2J1ZnNpemUgPSAwOwo+IAkJfQo+IC0J
fSBlbHNlIGlmIChzaXplX3QobGVuZ3RoKSA+IG5wLT5ybl9idWZzaXplKSB7Cj4gLQkJLy8gWFhY
OiB0aGlzIGNvdWxkIHVzZSBhIHBhZ2UgbGV2ZWwgYWxsb2NhdG9yCj4gKwl9IGVsc2UgaWYgKChz
aXplX3QpIGxlbmd0aCA+IG5wLT5ybl9idWZzaXplKSB7Cj4gKwkJLyogVE9ETzogdGhpcyBjb3Vs
ZCB1c2UgYSBwYWdlIGxldmVsIGFsbG9jYXRvciAqLwo+IAkJbmV3X3NpemUgPSByb3VuZF9wYWdl
KGxlbmd0aCk7Cj4gCQluZXdfYnVmID0gbWFsbG9jKG5ld19zaXplKTsKPiAJCWlmICghbmV3X2J1
ZikKPiBAQCAtMzYyLDcgKzM2OSw3IEBAIHJhbWZzX3RydW5jYXRlKHN0cnVjdCB2bm9kZSAqdnAs
IG9mZl90IGxlbmd0aCkKPiAJfQo+IAlucC0+cm5fc2l6ZSA9IGxlbmd0aDsKPiAJdnAtPnZfc2l6
ZSA9IGxlbmd0aDsKPiAtCXNldF90aW1lc190b19ub3coJihucC0+cm5fbXRpbWUpLCAmKG5wLT5y
bl9jdGltZSkpOwo+ICsJc2V0X3RpbWVzX3RvX25vdygmKG5wLT5ybl9tdGltZSksICYobnAtPnJu
X2N0aW1lKSwgTlVMTCk7Cj4gCXJldHVybiAwOwo+IH0KPiAKPiBAQCAtMzgyLDE2ICszODksMTcg
QEAgcmFtZnNfY3JlYXRlKHN0cnVjdCB2bm9kZSAqZHZwLCBjaGFyICpuYW1lLCBtb2RlX3QgbW9k
ZSkKPiAJaWYgKCFTX0lTUkVHKG1vZGUpKQo+IAkJcmV0dXJuIEVJTlZBTDsKPiAKPiAtCW5wID0g
cmFtZnNfYWRkX25vZGUoKHJhbWZzX25vZGUgKikgZHZwLT52X2RhdGEsIG5hbWUsIFZSRUcpOwo+
ICsJbnAgPSByYW1mc19hZGRfbm9kZShkdnAtPnZfZGF0YSwgbmFtZSwgVlJFRyk7Cj4gCWlmIChu
cCA9PSBOVUxMKQo+IAkJcmV0dXJuIEVOT01FTTsKPiAJcmV0dXJuIDA7Cj4gfQo+IAo+IC1zdGF0
aWMgaW50Cj4gLXJhbWZzX3JlYWQoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IGZpbGUgKmZwLCBz
dHJ1Y3QgdWlvICp1aW8sIGludCBpb2ZsYWcpCj4gK3N0YXRpYyBzc2l6ZV90Cj4gK3JhbWZzX3Jl
YWQoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAgX191bnVzZWQsCj4g
KwkgICBzdHJ1Y3QgdWlvICp1aW8sIGludCBpb2ZsYWcgX191bnVzZWQpCj4gewo+IC0Jc3RydWN0
IHJhbWZzX25vZGUgKm5wID0gKHJhbWZzX25vZGUgKikgdnAtPnZfZGF0YTsKPiArCXN0cnVjdCBy
YW1mc19ub2RlICpucCA9ICB2cC0+dl9kYXRhOwo+IAlzaXplX3QgbGVuOwo+IAo+IAlpZiAodnAt
PnZfdHlwZSA9PSBWRElSKSB7Cj4gQEAgLTQxNSwxNSArNDIzLDE1IEBAIHJhbWZzX3JlYWQoc3Ry
dWN0IHZub2RlICp2cCwgc3RydWN0IGZpbGUgKmZwLCBzdHJ1Y3QgdWlvICp1aW8sIGludCBpb2Zs
YWcpCj4gCWVsc2UKPiAJCWxlbiA9IHVpby0+dWlvX3Jlc2lkOwo+IAo+IC0Jc2V0X3RpbWVzX3Rv
X25vdygmKG5wLT5ybl9hdGltZSkpOwo+ICsJc2V0X3RpbWVzX3RvX25vdygmKG5wLT5ybl9hdGlt
ZSksIE5VTEwsIE5VTEwpOwo+IAo+IC0JcmV0dXJuIHVpb21vdmUobnAtPnJuX2J1ZiArIHVpby0+
dWlvX29mZnNldCwgbGVuLCB1aW8pOwo+ICsJcmV0dXJuIHZmc2NvcmVfdWlvbW92ZShucC0+cm5f
YnVmICsgdWlvLT51aW9fb2Zmc2V0LCBsZW4sIHVpbyk7Cj4gfQo+IAo+IGludAo+IHJhbWZzX3Nl
dF9maWxlX2RhdGEoc3RydWN0IHZub2RlICp2cCwgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNp
emUpCj4gewo+IC0Jc3RydWN0IHJhbWZzX25vZGUgKm5wID0gKHJhbWZzX25vZGUgKikgdnAtPnZf
ZGF0YTsKPiArCXN0cnVjdCByYW1mc19ub2RlICpucCA9ICB2cC0+dl9kYXRhOwo+IAo+IAlpZiAo
dnAtPnZfdHlwZSA9PSBWRElSKSB7Cj4gCQlyZXR1cm4gRUlTRElSOwo+IEBAIC00NDQsMTAgKzQ1
MiwxMCBAQCByYW1mc19zZXRfZmlsZV9kYXRhKHN0cnVjdCB2bm9kZSAqdnAsIGNvbnN0IHZvaWQg
KmRhdGEsIHNpemVfdCBzaXplKQo+IAlyZXR1cm4gMDsKPiB9Cj4gCj4gLXN0YXRpYyBpbnQKPiAr
c3RhdGljIHNzaXplX3QKPiByYW1mc193cml0ZShzdHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3QgdWlv
ICp1aW8sIGludCBpb2ZsYWcpCj4gewo+IC0Jc3RydWN0IHJhbWZzX25vZGUgKm5wID0gKHJhbWZz
X25vZGUgKikgdnAtPnZfZGF0YTsKPiArCXN0cnVjdCByYW1mc19ub2RlICpucCA9ICB2cC0+dl9k
YXRhOwo+IAo+IAlpZiAodnAtPnZfdHlwZSA9PSBWRElSKSB7Cj4gCQlyZXR1cm4gRUlTRElSOwo+
IEBAIC00NjgsNyArNDc2LDcgQEAgcmFtZnNfd3JpdGUoc3RydWN0IHZub2RlICp2cCwgc3RydWN0
IHVpbyAqdWlvLCBpbnQgaW9mbGFnKQo+IAlpZiAoaW9mbGFnICYgSU9fQVBQRU5EKQo+IAkJdWlv
LT51aW9fb2Zmc2V0ID0gbnAtPnJuX3NpemU7Cj4gCj4gLQlpZiAoc2l6ZV90KHVpby0+dWlvX29m
ZnNldCArIHVpby0+dWlvX3Jlc2lkKSA+IChzaXplX3QpIHZwLT52X3NpemUpIHsKPiArCWlmICgo
c2l6ZV90KSB1aW8tPnVpb19vZmZzZXQgKyB1aW8tPnVpb19yZXNpZCA+IChzaXplX3QpIHZwLT52
X3NpemUpIHsKPiAJCS8qIEV4cGFuZCB0aGUgZmlsZSBzaXplIGJlZm9yZSB3cml0aW5nIHRvIGl0
ICovCj4gCQlvZmZfdCBlbmRfcG9zID0gdWlvLT51aW9fb2Zmc2V0ICsgdWlvLT51aW9fcmVzaWQ7
Cj4gCQlpZiAoZW5kX3BvcyA+IChvZmZfdCkgbnAtPnJuX2J1ZnNpemUpIHsKPiBAQCAtNDkwLDEy
ICs0OTgsMTMgQEAgcmFtZnNfd3JpdGUoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IHVpbyAqdWlv
LCBpbnQgaW9mbGFnKQo+IAkJbnAtPnJuX293bnNfYnVmID0gdHJ1ZTsKPiAJfQo+IAo+IC0Jc2V0
X3RpbWVzX3RvX25vdygmKG5wLT5ybl9tdGltZSksICYobnAtPnJuX2N0aW1lKSk7Cj4gLQlyZXR1
cm4gdWlvbW92ZShucC0+cm5fYnVmICsgdWlvLT51aW9fb2Zmc2V0LCB1aW8tPnVpb19yZXNpZCwg
dWlvKTsKPiArCXNldF90aW1lc190b19ub3coJihucC0+cm5fbXRpbWUpLCAmKG5wLT5ybl9jdGlt
ZSksIE5VTEwpOwo+ICsJcmV0dXJuIHZmc2NvcmVfdWlvbW92ZShucC0+cm5fYnVmICsgdWlvLT51
aW9fb2Zmc2V0LCB1aW8tPnVpb19yZXNpZCwKPiArCQkJICAgICAgIHVpbyk7Cj4gfQo+IAo+IHN0
YXRpYyBpbnQKPiAtcmFtZnNfcmVuYW1lKHN0cnVjdCB2bm9kZSAqZHZwMSwgc3RydWN0IHZub2Rl
ICp2cDEsIGNoYXIgKm5hbWUxLAo+ICtyYW1mc19yZW5hbWUoc3RydWN0IHZub2RlICpkdnAxLCBz
dHJ1Y3Qgdm5vZGUgKnZwMSwgY2hhciAqbmFtZTEgX191bnVzZWQsCj4gCQkJIHN0cnVjdCB2bm9k
ZSAqZHZwMiwgc3RydWN0IHZub2RlICp2cDIsIGNoYXIgKm5hbWUyKQo+IHsKPiAJc3RydWN0IHJh
bWZzX25vZGUgKm5wLCAqb2xkX25wOwo+IEBAIC01MDMsMjAgKzUxMiwyMCBAQCByYW1mc19yZW5h
bWUoc3RydWN0IHZub2RlICpkdnAxLCBzdHJ1Y3Qgdm5vZGUgKnZwMSwgY2hhciAqbmFtZTEsCj4g
Cj4gCWlmICh2cDIpIHsKPiAJCS8qIFJlbW92ZSBkZXN0aW5hdGlvbiBmaWxlLCBmaXJzdCAqLwo+
IC0JCWVycm9yID0gcmFtZnNfcmVtb3ZlX25vZGUoKHJhbWZzX25vZGUgKikgZHZwMi0+dl9kYXRh
LCAocmFtZnNfbm9kZSAqKSB2cDItPnZfZGF0YSk7Cj4gKwkJZXJyb3IgPSByYW1mc19yZW1vdmVf
bm9kZShkdnAyLT52X2RhdGEsIHZwMi0+dl9kYXRhKTsKPiAJCWlmIChlcnJvcikKPiAJCQlyZXR1
cm4gZXJyb3I7Cj4gCX0KPiAJLyogU2FtZSBkaXJlY3RvcnkgPyAqLwo+IAlpZiAoZHZwMSA9PSBk
dnAyKSB7Cj4gCQkvKiBDaGFuZ2UgdGhlIG5hbWUgb2YgZXhpc3RpbmcgZmlsZSAqLwo+IC0JCWVy
cm9yID0gcmFtZnNfcmVuYW1lX25vZGUoKHJhbWZzX25vZGUgKikgdnAxLT52X2RhdGEsIG5hbWUy
KTsKPiArCQllcnJvciA9IHJhbWZzX3JlbmFtZV9ub2RlKHZwMS0+dl9kYXRhLCBuYW1lMik7Cj4g
CQlpZiAoZXJyb3IpCj4gCQkJcmV0dXJuIGVycm9yOwo+IAl9IGVsc2Ugewo+IAkJLyogQ3JlYXRl
IG5ldyBmaWxlIG9yIGRpcmVjdG9yeSAqLwo+IC0JCW9sZF9ucCA9IChyYW1mc19ub2RlICopIHZw
MS0+dl9kYXRhOwo+IC0JCW5wID0gcmFtZnNfYWRkX25vZGUoKHJhbWZzX25vZGUgKikgZHZwMi0+
dl9kYXRhLCBuYW1lMiwgb2xkX25wLT5ybl90eXBlKTsKPiArCQlvbGRfbnAgPSB2cDEtPnZfZGF0
YTsKPiArCQlucCA9IHJhbWZzX2FkZF9ub2RlKGR2cDItPnZfZGF0YSwgbmFtZTIsIG9sZF9ucC0+
cm5fdHlwZSk7Cj4gCQlpZiAobnAgPT0gTlVMTCkKPiAJCQlyZXR1cm4gRU5PTUVNOwo+IAo+IEBA
IC01MjgsNyArNTM3LDcgQEAgcmFtZnNfcmVuYW1lKHN0cnVjdCB2bm9kZSAqZHZwMSwgc3RydWN0
IHZub2RlICp2cDEsIGNoYXIgKm5hbWUxLAo+IAkJCW9sZF9ucC0+cm5fYnVmID0gTlVMTDsKPiAJ
CX0KPiAJCS8qIFJlbW92ZSBzb3VyY2UgZmlsZSAqLwo+IC0JCXJhbWZzX3JlbW92ZV9ub2RlKChy
YW1mc19ub2RlICopIGR2cDEtPnZfZGF0YSwgKHJhbWZzX25vZGUgKikgdnAxLT52X2RhdGEpOwo+
ICsJCXJhbWZzX3JlbW92ZV9ub2RlKGR2cDEtPnZfZGF0YSwgdnAxLT52X2RhdGEpOwo+IAl9Cj4g
CXJldHVybiAwOwo+IH0KPiBAQCAtNTM3LDE0ICs1NDYsMTUgQEAgcmFtZnNfcmVuYW1lKHN0cnVj
dCB2bm9kZSAqZHZwMSwgc3RydWN0IHZub2RlICp2cDEsIGNoYXIgKm5hbWUxLAo+ICAqIEB2cDog
dm5vZGUgb2YgdGhlIGRpcmVjdG9yeS4KPiAgKi8KPiBzdGF0aWMgaW50Cj4gLXJhbWZzX3JlYWRk
aXIoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IGZpbGUgKmZwLCBzdHJ1Y3QgZGlyZW50ICpkaXIp
Cj4gK3JhbWZzX3JlYWRkaXIoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IHZmc2NvcmVfZmlsZSAq
ZnAsIHN0cnVjdCBkaXJlbnQgKmRpcikKPiB7Cj4gCXN0cnVjdCByYW1mc19ub2RlICpucCwgKmRu
cDsKPiAJaW50IGk7Cj4gCj4gLQltdXRleF9sb2NrKCZyYW1mc19sb2NrKTsKPiArCXVrX211dGV4
X2xvY2soJnJhbWZzX2xvY2spOwo+IAo+IC0Jc2V0X3RpbWVzX3RvX25vdygmKCgocmFtZnNfbm9k
ZSAqKSB2cC0+dl9kYXRhKS0+cm5fYXRpbWUpKTsKPiArCXNldF90aW1lc190b19ub3coJigoKHN0
cnVjdCByYW1mc19ub2RlICopIHZwLT52X2RhdGEpLT5ybl9hdGltZSksCj4gKwkJCSBOVUxMLCBO
VUxMKTsKPiAKPiAJaWYgKGZwLT5mX29mZnNldCA9PSAwKSB7Cj4gCQlkaXItPmRfdHlwZSA9IERU
X0RJUjsKPiBAQCAtNTUzLDE3ICs1NjMsMTcgQEAgcmFtZnNfcmVhZGRpcihzdHJ1Y3Qgdm5vZGUg
KnZwLCBzdHJ1Y3QgZmlsZSAqZnAsIHN0cnVjdCBkaXJlbnQgKmRpcikKPiAJCWRpci0+ZF90eXBl
ID0gRFRfRElSOwo+IAkJc3RybGNweSgoY2hhciAqKSAmZGlyLT5kX25hbWUsICIuLiIsIHNpemVv
ZihkaXItPmRfbmFtZSkpOwo+IAl9IGVsc2Ugewo+IC0JCWRucCA9IChyYW1mc19ub2RlICopIHZw
LT52X2RhdGE7Cj4gKwkJZG5wID0gdnAtPnZfZGF0YTsKPiAJCW5wID0gZG5wLT5ybl9jaGlsZDsK
PiAJCWlmIChucCA9PSBOVUxMKSB7Cj4gLQkJCW11dGV4X3VubG9jaygmcmFtZnNfbG9jayk7Cj4g
KwkJCXVrX211dGV4X3VubG9jaygmcmFtZnNfbG9jayk7Cj4gCQkJcmV0dXJuIEVOT0VOVDsKPiAJ
CX0KPiAKPiAJCWZvciAoaSA9IDA7IGkgIT0gKGZwLT5mX29mZnNldCAtIDIpOyBpKyspIHsKPiAJ
CQlucCA9IG5wLT5ybl9uZXh0Owo+IAkJCWlmIChucCA9PSBOVUxMKSB7Cj4gLQkJCQltdXRleF91
bmxvY2soJnJhbWZzX2xvY2spOwo+ICsJCQkJdWtfbXV0ZXhfdW5sb2NrKCZyYW1mc19sb2NrKTsK
PiAJCQkJcmV0dXJuIEVOT0VOVDsKPiAJCQl9Cj4gCQl9Cj4gQEAgLTU4MSw3ICs1OTEsNyBAQCBy
YW1mc19yZWFkZGlyKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCBmaWxlICpmcCwgc3RydWN0IGRp
cmVudCAqZGlyKQo+IAo+IAlmcC0+Zl9vZmZzZXQrKzsKPiAKPiAtCW11dGV4X3VubG9jaygmcmFt
ZnNfbG9jayk7Cj4gKwl1a19tdXRleF91bmxvY2soJnJhbWZzX2xvY2spOwo+IAlyZXR1cm4gMDsK
PiB9Cj4gCj4gQEAgLTU5NCwxMSArNjA0LDEyIEBAIHJhbWZzX2luaXQodm9pZCkKPiBzdGF0aWMg
aW50Cj4gcmFtZnNfZ2V0YXR0cihzdHJ1Y3Qgdm5vZGUgKnZub2RlLCBzdHJ1Y3QgdmF0dHIgKmF0
dHIpCj4gewo+ICsJc3RydWN0IHJhbWZzX25vZGUgKm5wID0gdm5vZGUtPnZfZGF0YTsKPiArCj4g
CWF0dHItPnZhX25vZGVpZCA9IHZub2RlLT52X2lubzsKPiAJYXR0ci0+dmFfc2l6ZSA9IHZub2Rl
LT52X3NpemU7Cj4gCj4gLQlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSAocmFtZnNfbm9kZSAqKSB2
bm9kZS0+dl9kYXRhOwo+IC0JYXR0ci0+dmFfdHlwZSA9ICh2dHlwZSkgbnAtPnJuX3R5cGU7Cj4g
KwlhdHRyLT52YV90eXBlID0gbnAtPnJuX3R5cGU7Cj4gCj4gCW1lbWNweSgmKGF0dHItPnZhX2F0
aW1lKSwgJihucC0+cm5fYXRpbWUpLCBzaXplb2Yoc3RydWN0IHRpbWVzcGVjKSk7Cj4gCW1lbWNw
eSgmKGF0dHItPnZhX2N0aW1lKSwgJihucC0+cm5fY3RpbWUpLCBzaXplb2Yoc3RydWN0IHRpbWVz
cGVjKSk7Cj4gQEAgLTYxMSw3ICs2MjIsNyBAQCByYW1mc19nZXRhdHRyKHN0cnVjdCB2bm9kZSAq
dm5vZGUsIHN0cnVjdCB2YXR0ciAqYXR0cikKPiAKPiBzdGF0aWMgaW50Cj4gcmFtZnNfc2V0YXR0
cihzdHJ1Y3Qgdm5vZGUgKnZub2RlLCBzdHJ1Y3QgdmF0dHIgKmF0dHIpIHsKPiAtCXN0cnVjdCBy
YW1mc19ub2RlICpucCA9IChyYW1mc19ub2RlICopIHZub2RlLT52X2RhdGE7Cj4gKwlzdHJ1Y3Qg
cmFtZnNfbm9kZSAqbnAgPSB2bm9kZS0+dl9kYXRhOwo+IAo+IAlpZiAoYXR0ci0+dmFfbWFzayAm
IEFUX0FUSU1FKSB7Cj4gCQltZW1jcHkoJihucC0+cm5fYXRpbWUpLCAmKGF0dHItPnZhX2F0aW1l
KSwgc2l6ZW9mKHN0cnVjdCB0aW1lc3BlYykpOwo+IEBAIC02MzIsMTQgKzY0MywxNCBAQCByYW1m
c19zZXRhdHRyKHN0cnVjdCB2bm9kZSAqdm5vZGUsIHN0cnVjdCB2YXR0ciAqYXR0cikgewo+IAly
ZXR1cm4gMDsKPiB9Cj4gCj4gLSNkZWZpbmUgcmFtZnNfb3BlbiAgICAgICgodm5vcF9vcGVuX3Qp
dm9wX251bGxvcCkKPiAtI2RlZmluZSByYW1mc19jbG9zZSAgICAgKCh2bm9wX2Nsb3NlX3Qpdm9w
X251bGxvcCkKPiAtI2RlZmluZSByYW1mc19zZWVrICAgICAgKCh2bm9wX3NlZWtfdCl2b3BfbnVs
bG9wKQo+IC0jZGVmaW5lIHJhbWZzX2lvY3RsICAgICAoKHZub3BfaW9jdGxfdCl2b3BfZWludmFs
KQo+IC0jZGVmaW5lIHJhbWZzX2ZzeW5jICAgICAoKHZub3BfZnN5bmNfdCl2b3BfbnVsbG9wKQo+
IC0jZGVmaW5lIHJhbWZzX2luYWN0aXZlICAoKHZub3BfaW5hY3RpdmVfdCl2b3BfbnVsbG9wKQo+
IC0jZGVmaW5lIHJhbWZzX2xpbmsgICAgICAoKHZub3BfbGlua190KXZvcF9lcGVybSkKPiAtI2Rl
ZmluZSByYW1mc19mYWxsb2NhdGUgKCh2bm9wX2ZhbGxvY2F0ZV90KXZvcF9udWxsb3ApCj4gKyNk
ZWZpbmUgcmFtZnNfb3BlbiAgICAgICgodm5vcF9vcGVuX3QpdmZzY29yZV92b3BfbnVsbG9wKQo+
ICsjZGVmaW5lIHJhbWZzX2Nsb3NlICAgICAoKHZub3BfY2xvc2VfdCl2ZnNjb3JlX3ZvcF9udWxs
b3ApCj4gKyNkZWZpbmUgcmFtZnNfc2VlayAgICAgICgodm5vcF9zZWVrX3QpdmZzY29yZV92b3Bf
bnVsbG9wKQo+ICsjZGVmaW5lIHJhbWZzX2lvY3RsICAgICAoKHZub3BfaW9jdGxfdCl2ZnNjb3Jl
X3ZvcF9laW52YWwpCj4gKyNkZWZpbmUgcmFtZnNfZnN5bmMgICAgICgodm5vcF9mc3luY190KXZm
c2NvcmVfdm9wX251bGxvcCkKPiArI2RlZmluZSByYW1mc19pbmFjdGl2ZSAgKCh2bm9wX2luYWN0
aXZlX3QpdmZzY29yZV92b3BfbnVsbG9wKQo+ICsjZGVmaW5lIHJhbWZzX2xpbmsgICAgICAoKHZu
b3BfbGlua190KXZmc2NvcmVfdm9wX2VwZXJtKQo+ICsjZGVmaW5lIHJhbWZzX2ZhbGxvY2F0ZSAo
KHZub3BfZmFsbG9jYXRlX3QpdmZzY29yZV92b3BfbnVsbG9wKQo+IAo+IC8qCj4gICogdm5vZGUg
b3BlcmF0aW9ucwo+IEBAIC02NjQsNyArNjc1LDcgQEAgc3RydWN0IHZub3BzIHJhbWZzX3Zub3Bz
ID0gewo+IAkJcmFtZnNfaW5hY3RpdmUsICAgICAgICAgLyogaW5hY3RpdmUgKi8KPiAJCXJhbWZz
X3RydW5jYXRlLCAgICAgICAgIC8qIHRydW5jYXRlICovCj4gCQlyYW1mc19saW5rLCAgICAgICAg
ICAgICAvKiBsaW5rICovCj4gLQkJKHZub3BfY2FjaGVfdCkgbnVsbHB0ciwgLyogYXJjICovCj4g
KwkJKHZub3BfY2FjaGVfdCkgTlVMTCwgICAgLyogYXJjICovCj4gCQlyYW1mc19mYWxsb2NhdGUs
ICAgICAgICAvKiBmYWxsb2NhdGUgKi8KPiAJCXJhbWZzX3JlYWRsaW5rLCAgICAgICAgIC8qIHJl
YWQgbGluayAqLwo+IAkJcmFtZnNfc3ltbGluaywgICAgICAgICAgLyogc3ltYm9saWMgbGluayAq
Lwo+IC0tIAo+IDIuMTkuMgo+IAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3Rz
LnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0
aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Feb 20 17:47:00 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 20 Feb 2019 17:47:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gwVxU-0000Ux-3z; Wed, 20 Feb 2019 17:47:00 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=MYmH=Q3=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1gwVxS-0000Ue-SE
 for minios-devel@lists.xen.org; Wed, 20 Feb 2019 17:46:58 +0000
X-Inumbo-ID: 84393016-3537-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 84393016-3537-11e9-bc90-bc764e045a96;
 Wed, 20 Feb 2019 17:46:57 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 9721AF2059;
 Wed, 20 Feb 2019 18:46:56 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 6piKLdrlUxIr; Wed, 20 Feb 2019 18:46:56 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 6C0B1F2017
 for <minios-devel@lists.xen.org>; Wed, 20 Feb 2019 18:46:54 +0100 (CET)
Received: from PALLENE.office.hd ([169.254.1.27]) by METHONE.office.hd
 ([192.168.24.54]) with mapi id 14.03.0319.002; Wed, 20 Feb 2019 18:46:54
 +0100
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: Yuri Volchkov <yuri.volchkov@neclab.eu>
Thread-Topic: [UNIKRAFT PATCH v3 5/6] lib/ramfs: fix debug printouts
Thread-Index: AQHUyTUlyu9kw/aGBEeO1cATX864F6Xo5VgA
Date: Wed, 20 Feb 2019 17:46:53 +0000
Message-ID: <25C6D3C7-EBEA-421C-82ED-B5ECB4739656@neclab.eu>
References: <20190220155812.29546-1-yuri.volchkov@neclab.eu>
 <20190220155812.29546-6-yuri.volchkov@neclab.eu>
In-Reply-To: <20190220155812.29546-6-yuri.volchkov@neclab.eu>
Accept-Language: en-GB, gl-ES, de-DE, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [10.1.2.186]
Content-ID: <92AF3EC954BBFE4CB80E94F32F8BC0E2@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v3 5/6] lib/ramfs: fix debug
 printouts
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

UmV2aWV3ZWQtYnk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1PgoKPiBP
biAyMC4gRmViIDIwMTksIGF0IDE2OjU4LCBZdXJpIFZvbGNoa292IDx5dXJpLnZvbGNoa292QG5l
Y2xhYi5ldT4gd3JvdGU6Cj4gCj4gU2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52
b2xjaGtvdkBuZWNsYWIuZXU+Cj4gLS0tCj4gbGliL3JhbWZzL3JhbWZzLmggICAgICAgIHwgMTAg
KystLS0tLS0tLQo+IGxpYi9yYW1mcy9yYW1mc192ZnNvcHMuYyB8ICAyICstCj4gbGliL3JhbWZz
L3JhbWZzX3Zub3BzLmMgIHwgMTIgKysrKysrKy0tLS0tCj4gMyBmaWxlcyBjaGFuZ2VkLCAxMCBp
bnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvbGliL3JhbWZz
L3JhbWZzLmggYi9saWIvcmFtZnMvcmFtZnMuaAo+IGluZGV4IDYxZmYzNWQyLi45MGNiZWUyMCAx
MDA2NDQKPiAtLS0gYS9saWIvcmFtZnMvcmFtZnMuaAo+ICsrKyBiL2xpYi9yYW1mcy9yYW1mcy5o
Cj4gQEAgLTM2LDE0ICszNiw2IEBACj4gI2luY2x1ZGUgPHZmc2NvcmUvcHJleC5oPgo+ICNpbmNs
dWRlIDxzdGRib29sLmg+Cj4gCj4gLS8qICNkZWZpbmUgREVCVUdfUkFNRlMgMSAqLwo+IC0KPiAt
I2lmZGVmIERFQlVHX1JBTUZTCj4gLSNkZWZpbmUgRFBSSU5URihhKQlkcHJpbnRmIGEKPiAtI2Vs
c2UKPiAtI2RlZmluZSBEUFJJTlRGKGEpICAgIGRvIHt9IHdoaWxlICgwKQo+IC0jZW5kaWYKPiAt
Cj4gLyoKPiAgKiBGaWxlL2RpcmVjdG9yeSBub2RlIGZvciBSQU1GUwo+ICAqLwo+IEBAIC02Nyw0
ICs1OSw2IEBAIHN0cnVjdCByYW1mc19ub2RlICpyYW1mc19hbGxvY2F0ZV9ub2RlKGNvbnN0IGNo
YXIgKm5hbWUsIGludCB0eXBlKTsKPiAKPiB2b2lkIHJhbWZzX2ZyZWVfbm9kZShzdHJ1Y3QgcmFt
ZnNfbm9kZSAqbm9kZSk7Cj4gCj4gKyNkZWZpbmUgUkFNRlNfTk9ERSh2bm9kZSkgKChzdHJ1Y3Qg
cmFtZnNfbm9kZSAqKSB2bm9kZS0+dl9kYXRhKQo+ICsKPiAjZW5kaWYgLyogIV9SQU1GU19IICov
Cj4gZGlmZiAtLWdpdCBhL2xpYi9yYW1mcy9yYW1mc192ZnNvcHMuYyBiL2xpYi9yYW1mcy9yYW1m
c192ZnNvcHMuYwo+IGluZGV4IDNiNWMwNzVjLi41ZTBlYzRiOSAxMDA2NDQKPiAtLS0gYS9saWIv
cmFtZnMvcmFtZnNfdmZzb3BzLmMKPiArKysgYi9saWIvcmFtZnMvcmFtZnNfdmZzb3BzLmMKPiBA
QCAtNzgsNyArNzgsNyBAQCByYW1mc19tb3VudChzdHJ1Y3QgbW91bnQgKm1wLCBjb25zdCBjaGFy
ICpkZXYgX191bnVzZWQsCj4gewo+IAlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnA7Cj4gCj4gLQlEUFJJ
TlRGKCgicmFtZnNfbW91bnQ6IGRldj0lc1xuIiwgZGV2KSk7Cj4gKwl1a19wcl9kZWJ1ZygicmFt
ZnNfbW91bnQ6IGRldj0lc1xuIiwgZGV2KTsKPiAKPiAJLyogQ3JlYXRlIGEgcm9vdCBub2RlICov
Cj4gCW5wID0gcmFtZnNfYWxsb2NhdGVfbm9kZSgiLyIsIFZESVIpOwo+IGRpZmYgLS1naXQgYS9s
aWIvcmFtZnMvcmFtZnNfdm5vcHMuYyBiL2xpYi9yYW1mcy9yYW1mc192bm9wcy5jCj4gaW5kZXgg
NDc2MTRmZDMuLmIxNjZiNGE5IDEwMDY0NAo+IC0tLSBhL2xpYi9yYW1mcy9yYW1mc192bm9wcy5j
Cj4gKysrIGIvbGliL3JhbWZzL3JhbWZzX3Zub3BzLmMKPiBAQCAtMjYwLDcgKzI2MCw3IEBAIHJh
bWZzX21rZGlyKHN0cnVjdCB2bm9kZSAqZHZwLCBjaGFyICpuYW1lLCBtb2RlX3QgbW9kZSkKPiB7
Cj4gCXN0cnVjdCByYW1mc19ub2RlICpucDsKPiAKPiAtCURQUklOVEYoKCJta2RpciAlc1xuIiwg
bmFtZSkpOwo+ICsJdWtfcHJfZGVidWcoIm1rZGlyICVzXG4iLCBuYW1lKTsKPiAJaWYgKHN0cmxl
bihuYW1lKSA+IE5BTUVfTUFYKSB7Cj4gCQlyZXR1cm4gRU5BTUVUT09MT05HOwo+IAl9Cj4gQEAg
LTMyOCw5ICszMjgsMTAgQEAgcmFtZnNfcm1kaXIoc3RydWN0IHZub2RlICpkdnAsIHN0cnVjdCB2
bm9kZSAqdnAsIGNoYXIgKm5hbWUgX191bnVzZWQpCj4gCj4gLyogUmVtb3ZlIGEgZmlsZSAqLwo+
IHN0YXRpYyBpbnQKPiAtcmFtZnNfcmVtb3ZlKHN0cnVjdCB2bm9kZSAqZHZwLCBzdHJ1Y3Qgdm5v
ZGUgKnZwLCBjaGFyICpuYW1lIF9fdW51c2VkKQo+ICtyYW1mc19yZW1vdmUoc3RydWN0IHZub2Rl
ICpkdnAsIHN0cnVjdCB2bm9kZSAqdnAsIGNoYXIgKm5hbWUgX19tYXliZV91bnVzZWQpCj4gewo+
IC0JRFBSSU5URigoInJlbW92ZSAlcyBpbiAlc1xuIiwgbmFtZSwgZHZwLT52X3BhdGgpKTsKPiAr
CXVrX3ByX2RlYnVnKCJyZW1vdmUgJXMgaW4gJXNcbiIsIG5hbWUsCj4gKwkJIFJBTUZTX05PREUo
ZHZwKS0+cm5fbmFtZSk7Cj4gCXJldHVybiByYW1mc19yZW1vdmVfbm9kZShkdnAtPnZfZGF0YSwg
dnAtPnZfZGF0YSk7Cj4gfQo+IAo+IEBAIC0zNDIsNyArMzQzLDggQEAgcmFtZnNfdHJ1bmNhdGUo
c3RydWN0IHZub2RlICp2cCwgb2ZmX3QgbGVuZ3RoKQo+IAl2b2lkICpuZXdfYnVmOwo+IAlzaXpl
X3QgbmV3X3NpemU7Cj4gCj4gLQlEUFJJTlRGKCgidHJ1bmNhdGUgJXMgbGVuZ3RoPSVkXG4iLCB2
cC0+dl9wYXRoLCBsZW5ndGgpKTsKPiArCXVrX3ByX2RlYnVnKCJ0cnVuY2F0ZSAlcyBsZW5ndGg9
JWxsZFxuIiwgUkFNRlNfTk9ERSh2cCktPnJuX25hbWUsCj4gKwkJIChsb25nIGxvbmcpIGxlbmd0
aCk7Cj4gCW5wID0gdnAtPnZfZGF0YTsKPiAKPiAJaWYgKGxlbmd0aCA9PSAwKSB7Cj4gQEAgLTM4
NSw3ICszODcsNyBAQCByYW1mc19jcmVhdGUoc3RydWN0IHZub2RlICpkdnAsIGNoYXIgKm5hbWUs
IG1vZGVfdCBtb2RlKQo+IAkJcmV0dXJuIEVOQU1FVE9PTE9ORzsKPiAJfQo+IAo+IC0JRFBSSU5U
RigoImNyZWF0ZSAlcyBpbiAlc1xuIiwgbmFtZSwgZHZwLT52X3BhdGgpKTsKPiArCXVrX3ByX2Rl
YnVnKCJjcmVhdGUgJXMgaW4gJXNcbiIsIG5hbWUsIFJBTUZTX05PREUoZHZwKS0+cm5fbmFtZSk7
Cj4gCWlmICghU19JU1JFRyhtb2RlKSkKPiAJCXJldHVybiBFSU5WQUw7Cj4gCj4gLS0gCj4gMi4x
OS4yCj4gCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
TWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5v
cmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1k
ZXZlbA==

From minios-devel-bounces@lists.xenproject.org Thu Feb 21 02:06:48 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 21 Feb 2019 02:06:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gwdl7-00067v-Nx; Thu, 21 Feb 2019 02:06:45 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=YZXF=Q4=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1gwdl6-00067m-AE
 for minios-devel@lists.xenproject.org; Thu, 21 Feb 2019 02:06:44 +0000
X-Inumbo-ID: 545db3e3-357d-11e9-bc90-bc764e045a96
Received: from EUR02-VE1-obe.outbound.protection.outlook.com (unknown
 [2a01:111:f400:fe06::60e])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 545db3e3-357d-11e9-bc90-bc764e045a96;
 Thu, 21 Feb 2019 02:06:42 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; 
 s=selector1-arm-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=gbEH4y+9RPsjpM0QL6S3tCCnXEtwPPV62gN3v1+BTRc=;
 b=WedrFTURCKpXVveRqjxGN9sVJdcfB8axBnrqg6zjNGsJtKCCzoPfcGcTK0UyB7pZns638lZdyNMZc1z1iOFOx7CHCWCUZlKEtVciZPZcfe+WdWvaK8yQeSH1gHV3pGhrD7+dUpK4Inomh+/++QzXgJ7seAliyzKJmm1FFGjVEPs=
Received: from DB7PR08MB3082.eurprd08.prod.outlook.com (52.134.110.24) by
 DB7PR08MB3099.eurprd08.prod.outlook.com (52.134.110.29) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.1622.19; Thu, 21 Feb 2019 02:06:40 +0000
Received: from DB7PR08MB3082.eurprd08.prod.outlook.com
 ([fe80::99d4:808b:c303:ce65]) by DB7PR08MB3082.eurprd08.prod.outlook.com
 ([fe80::99d4:808b:c303:ce65%6]) with mapi id 15.20.1622.018; Thu, 21 Feb 2019
 02:06:40 +0000
From: "Justin He (Arm Technology China)" <Justin.He@arm.com>
To: Sharan Santhanam <sharan.santhanam@neclab.eu>,
 "minios-devel@lists.xenproject.org" <minios-devel@lists.xenproject.org>
Thread-Topic: [Minios-devel] [UNIKRAFT PATCHv5 00/23] Follow up patches for
 Arm64 support series#1/5
Thread-Index: AQHUt4BS3NCU85h58kaWnBBp8XTxVaXouB6AgADs4sA=
Date: Thu, 21 Feb 2019 02:06:40 +0000
Message-ID: <DB7PR08MB308273C09A59A6EC0494CB0BF77E0@DB7PR08MB3082.eurprd08.prod.outlook.com>
References: <20190129031056.142151-1-justin.he@arm.com>
 <cfcb66df-31a9-3534-1da7-62d82ece539c@neclab.eu>
In-Reply-To: <cfcb66df-31a9-3534-1da7-62d82ece539c@neclab.eu>
Accept-Language: en-US, zh-CN
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=Justin.He@arm.com; 
x-originating-ip: [113.29.88.7]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 847d0a6c-82a3-4853-4061-08d697a137f1
x-ms-office365-filtering-ht: Tenant
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(7168020)(4627221)(201703031133081)(201702281549075)(8990200)(5600110)(711020)(4605104)(4618075)(2017052603328)(7153060)(7193020);
 SRVR:DB7PR08MB3099; 
x-ms-traffictypediagnostic: DB7PR08MB3099:
x-ms-exchange-purlcount: 2
x-microsoft-exchange-diagnostics: 1; DB7PR08MB3099;
 20:VXsR6AU/Y6M09F0oADqiFYRANUGIguT1qi1n77D6qiKXtKa2mwh7yEr9O5u8b0TYe+GlX5uqnK4laMB7DEmeYn09J3W0zkMG7pzJ2xKUl6ztQOIzWYArRHH0V6vZCpE9dx4vlStJPkMJMEbfzjmfJzODZUBgFCWXOPmtotY/eHo=
x-microsoft-antispam-prvs: <DB7PR08MB3099FFC51E472478CB8C715AF77E0@DB7PR08MB3099.eurprd08.prod.outlook.com>
x-forefront-prvs: 09555FB1AD
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(136003)(376002)(396003)(366004)(346002)(39860400002)(40434004)(189003)(199004)(13464003)(9686003)(71200400001)(68736007)(71190400001)(72206003)(55016002)(186003)(6306002)(25786009)(33656002)(7696005)(76176011)(8676002)(81166006)(81156014)(486006)(6506007)(14444005)(53546011)(2906002)(55236004)(5024004)(966005)(478600001)(256004)(476003)(74316002)(316002)(102836004)(446003)(5660300002)(229853002)(6436002)(86362001)(110136005)(99286004)(14454004)(53936002)(6246003)(6116002)(11346002)(2501003)(105586002)(106356001)(26005)(3846002)(97736004)(7736002)(8936002)(305945005)(66066001)(17413003);
 DIR:OUT; SFP:1101; SCL:1; SRVR:DB7PR08MB3099;
 H:DB7PR08MB3082.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:1; 
received-spf: None (protection.outlook.com: arm.com does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: uhuJszjf0gbNzIFy8vbrqFPlkOxCiHOylEVS07T/zrO5GU+kz7KDUrMhUnZ4uNvtEBD8fNYLrEs/Njp8zwt9cuG7g2ziDCAMbZMPZXmJc2J2PmkjhE2/TO1V0ckj815FOxXU42NFyaymHep0EKyMUWrPKOlm81FPnnujjEYiwnNw/Mdfae1Oij2TjbhowOi+v1+mZSPf2xeZiWJtHvLJjAJLBV4V2zsb7qieTyuGAVmI2Ja+WuA7Wh1cAiL/PUK3Au7QKOCEn+wxrqP9JecAImdmQNj0d8lOjUMP+ABQX0JitMUKInWi95fklytKo0xa/Gy0vfMD3sCKZgPr3uwlvpS5CJ/OD0Busel8dHftfYM7E2/WzKr6p3xSQcuEkHFBIq1TJFTEUp9ie2+uUqhIM8Fm9QNP0CJKQe4fEvEPQ8k=
MIME-Version: 1.0
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 847d0a6c-82a3-4853-4061-08d697a137f1
X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Feb 2019 02:06:40.2409 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR08MB3099
Subject: Re: [Minios-devel] [UNIKRAFT PATCHv5 00/23] Follow up patches for
 Arm64 support series#1/5
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTWluaW9zLWRldmVsIDxt
aW5pb3MtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZz4gT24gQmVoYWxmIE9mDQo+
IFNoYXJhbiBTYW50aGFuYW0NCj4gU2VudDogMjAxOeW5tDLmnIgyMOaXpSAxOTo1OA0KPiBUbzog
bWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnDQo+IFN1YmplY3Q6IFJlOiBbTWluaW9z
LWRldmVsXSBbVU5JS1JBRlQgUEFUQ0h2NSAwMC8yM10gRm9sbG93IHVwIHBhdGNoZXMgZm9yDQo+
IEFybTY0IHN1cHBvcnQgc2VyaWVzIzEvNQ0KPg0KPiBIZWxsbyBKaWEgSGUsDQo+DQo+IFRoaXMg
cGF0Y2ggZG9lcyBub3QgYXBwbHkgY2xlYW5seS4gT24gdGhlIHBhdGNoDQo+ICJwbGF0L2NvbW1v
bjogTW92ZSBnbG9iYWwgdmFyaWFibGVzIGRlZmluZWQgaW4gbGluayBzY3JpcHRzIHRvIGEgaGVh
ZGVyIg0KPiB0aGVyZSBpcyBhIGNvbmZsaWN0IG9uDQo+IHBsYXQva3ZtL3g4Ni9zZXR1cC5jDQo+
DQo+IFBsZWFzZSBjYW4geW91IHJlYmFzZSB5b3VyIGNoYW5nZXMgb24gdGhlIGxhdGVzdCBjaGFu
Z2VzIGZyb20gdGhlIHN0YWdpbmcuDQo+DQpPaywNCg0KLS0NCkNoZWVycywNCkp1c3RpbiAoSmlh
IEhlKQ0KDQoNCj4gVGhhbmtzICYgUmVnYXJkcw0KPiBTaGFyYW4NCj4NCj4NCj4gT24gMS8yOS8x
OSA0OjEwIEFNLCBKaWEgSGUgd3JvdGU6DQo+ID4gVGhpcyBzZXJpZXMgYWRkcmVzcyBmb2xsb3dp
bmcgY29tbWVudHM6DQo+ID4gMDE6IFJlbW92ZSB0aGUgY2hlY2sgb2YgJy0tZW5hYmxlLWRlZmF1
bHQtcGllJyBpbiBNYWtlZmlsZS51aywNCj4gPiAwMjogVXNlIG1hY3JvLWVkIGhlbHBlciB0byBz
aW1wbGlmeSBpb3JlZ19yZWFkL3dyaXRlLA0KPiA+IDAzOiBVc2UgdGhlIHNhbWUgZGVjbGFyYXRp
b24gZm9yIF90ZXh0IGFuZCBfZW5kLA0KPiA+IDA0OiBBZGRyZXNzIGNvbW1lbnRzIGZvciBELUNh
Y2hlIG9wZXJhdGlvbiBmdW5jdGlvbiwNCj4gPiAwNTogR2V0IHZpcnR1YWwgYWRkcmVzcyBiaXRz
IGZyb20gaWRfYWE2NG1tZnIwX2VsMS5QQVJhbmdlLA0KPiA+IDA2OiBFbnN1cmUgc3RhY2sgYWxp
Z25tZW50IGZvciBleGNlcHRpb25zIGZyb20gRUwxLA0KPiA+IDA3OiBJbnZhbGlkYXRlIEQtQ2Fj
aGUgZm9yIG1vZGlmaWVkIGFyZWEgb25seSwNCj4gPiAwODogRGlzYWJsZSBELUNhY2hlIGJlZm9y
ZSBkb2luZyBhbnkgY2hhbmdlLA0KPiA+IDA5OiBDYWxjdWxhdGUgTDMgdGFibGUgYW5kIHBhZ2Ug
dGFibGUgc2l6ZSBieSBpbWFnZSBzaXplLA0KPiA+IDEwOiBSZW1vdmUgYSAtV3N0cmluZ29wLW92
ZXJmbG93IHdhcm5pbmcgZm9yIHN0cm5jcHksDQo+ID4gMTE6IFJlbW92ZSB1c2VsZXNzIGJsYW5r
IGxpbmUsDQo+ID4NCj4gPiBTb21lIGNvbW1lbnRzIHRoYXQgaGF2ZW4ndCBiZWVuIGFkZHJlc3Nl
ZDoNCj4gPiAwMTogQ2hlY2sgdGhlIE1JRFIgYW5kIGF2b2lkIHRoZSBlcnJhdHVtIG9uIGFmZmVj
dGVkIHBsYXRmb3JtDQo+ID4gICAgICAgdmlhIGFuIGFsdGVybmF0aXZlIG9yIGp1bXAgdGFibGUu
IC0tIFRoaXMgZXJyZXRhIGZyYW1ld29yaw0KPiA+ICAgICAgIGlzIG5vdCBvbmx5IGZvciBBcm0g
YnV0IGFsc28gZm9yIHg4Ni4gSSB0aGluayB3ZSdkIGJldHRlcg0KPiA+ICAgICAgIHRvIGRpc2N1
c3MgaW4gY29tbXVuaXR5Lg0KPiA+IDAyOiBFbmFibGUgRklGTyBzdXBwb3J0IGZvciBQTDAxMS4N
Cj4gPiAwMzogQ29tcGFyZSB0aGUgcG9pbnRlcnMgb2YgZGlmZmVyZW50IHR5cGUgaXMgYmVoYXZp
b3VyIHVuZGVmaW5lZA0KPiA+DQo+ID4gSWYgSSBmb3Jnb3QgYW55dGhpbmcgcGxlYXNlIHJlbWlu
ZCBtZS4NCj4gPg0KPiA+IFlvdSBjYW4gZ2V0IHRoZSAxc3Qgc2VyaWVzIGJ5Og0KPiA+IGdpdCBj
bG9uZSBodHRwczovL2dpdGh1Yi5jb20vaGVqaWFuZXQvVW5pa3JhZnRfYXJtNjQuZ2l0IC1iIFwN
Cj4gPiB3ZWlfMXN0X3Nlcmllc192NQ0KPiA+DQo+ID4gLS0tDQo+ID4gdjQgLT4gdjU6IGZpeCBj
b21waWxhdGlvbiBlcnJvcg0KPiA+IHYzIC0+IHY0Og0KPiA+ICAgIDEuIERyb3AgMDQgYW5kIDI0
IHBhdGNoZXMgaW4gdjMuIHBhdGNoIDA0IGlzIGdjYyBjb21waWxlcg0KPiA+ICAgIG9wdGltaXph
dGlvbiByZWxhdGVkLCBub3QgYSBibG9ja2luZyBpc3N1ZS4gVGhlIHJlc29sdXRpb24gaXMNCj4g
PiAgICB1bmRlciBkaXNjdXNzaW9uLiBQYXRjaCAyNCBpcyBub3QgY29uY2VybmVkIGJ5IFNoYXJh
bi4NCj4gPiAgICAyLiBSZXN0b3JlIHgxOCx4MTkgYWZ0ZXIgdXNpbmcgdGhlbS4NCj4gPiAgICAz
LiBGaXggSU1BR0VfUk9VTkRVUF9TSElGVCBmcm9tIDIwIHRvIDIxLg0KPiA+ICAgIDQuIGxvdHMg
b2YgY2hlY2twYXRjaCB3YXJuaW5nLg0KPiA+IHYyIC0+IHYzOiBSZWJhc2UgdG8gdGhlIGxhdGVz
dCB1cHN0cmVhbSBiYXNlLg0KPiA+DQo+ID4gdjEgLT4gdjI6DQo+ID4gICAgMS4gQWRkIFVSTCBs
aW5rIGZvciAiVXNlIG1hY3JvLWVkIGhlbHBlciB0byBzaW1wbGlmeSBpb3JlZ19yZWFkL3dyaXRl
IiwNCj4gPiAgICAyLiBJbnZhbGlkYXRlICYgY2xlYW4gQ2FjaGUgZm9yIG1lbW9yeSB0aGF0IHdv
dWxkIGJlIHVzZWQsDQo+ID4gICAgMy4gSW1wcm92ZSBjb2RlIGFuZCBjb21taXQgY29tbWVudHMg
Zm9yIGNhbGN1bGF0ZSBwYWdlYmFibGUgc2l6ZSwNCj4gPiAgICA0LiBVc2UgbWFjcm9zIHRvIHJl
cGxhY2UgaGFyZGNvZGUgdmFsdWVzLA0KPiA+ICAgIDUuIFVzZSBsc3IvbHNsIHRvIHNpbXBsaWZ5
IDJNQiByb3VuZCB1cCwNCj4gPiAgICA2LiBEbyBvYmZ1c2NhdGVzIGFyaXRobWV0aWMgZm9yIGtl
cm5lbCBpbWFnZSBzeW1ib2xzLA0KPiA+ICAgIDcuIENsZWFuIHVwIGtlcm5lbCBpbWFnZSBzeW1i
b2xzIGZvciBDIGZpbGVzLg0KPiA+DQo+ID4gSmlhIEhlICgyMyk6DQo+ID4gICAgYnVpbGQ6IFJl
bW92ZSB0aGUgY2hlY2sgb2YgJy0tZW5hYmxlLWRlZmF1bHQtcGllJyBpbiBNYWtlZmlsZS51aw0K
PiA+ICAgIHBsYXQvaW5jbHVkZTogVXNlIG1hY3JvLWVkIGhlbHBlciB0byBzaW1wbGlmeSBpb3Jl
Z19yZWFkL3dyaXRlIGZvcg0KPiA+ICAgICAgQXJtNjQNCj4gPiAgICBwbGF0L2NvbW1vbjogTW92
ZSBnbG9iYWwgdmFyaWFibGVzIGRlZmluZWQgaW4gbGluayBzY3JpcHRzIHRvIGEgaGVhZGVyDQo+
ID4gICAgcGxhdDogQ2xlYW4gdXAga2VybmVsIGltYWdlIHN5bWJvbHMNCj4gPiAgICBwbGF0L2Nv
bW1vbjogUmVtb3ZlIGVhcmx5Y2xvYmVyciBmcm9tIFNZU1JFR19SRUFEMzIgZm9yIEFybTY0DQo+
ID4gICAgcGxhdC9jb21tb246IENsZWFuIGFuZCBpbnZhbGlkYXRlIEQtQ2FjaGUgb25seSB3aGVu
IGJvb3QgZm9yIEFybTY0DQo+ID4gICAgcGxhdC9jb21tb246IFVzZSBjb3JyZWN0IGRzYiBvcGVy
YXRpb24gZmxhZyBmb3IgQXJtNjQNCj4gPiAgICBwbGF0L2NvbW1vbjogQWRkIHJlZmVycmVkIHNv
dXJjZSBjb2RlIFVSTCBmb3IgY2FjaGUgb3BlcmF0aW9uDQo+ID4gICAgcGxhdC9rdm06IENvcnJl
Y3QgaW52YWxpZCBpbmRlbnQgY2hhcmFjdGVyIGZvciBBcm02NA0KPiA+ICAgIHBsYXQva3ZtOiBH
ZXQgVklSVF9CSVRTIGZyb20gaWRfYWE2NG1tZnIwX2VsMS5QQVJhbmdlIGZvciBBcm02NA0KPiA+
ICAgIGFyY2gvaW5jbHVkZTogQWRkIGEgX3JlZ3MgbWVtYmVyIHRvIHNhdmUgb3JpZ2lhbCBzdGFj
ayBwb2ludGVyDQo+ID4gICAgcGxhdC9rdm06IEFkZCBfX1RSQVBfU1RBQ0tfU0laRSBmb3Igc3Rh
Y2sgcG9pbnRlciB3aGlsZSBleGl0aW5nIHRyYXANCj4gPiAgICBwbGF0L2t2bTogUmVtb3ZlIHJl
ZHVuZGFudCBzcGFjZSB3aGlsZSBlbnRlcmluZyB0cmFwIGZvciBBcm0NCj4gPiAgICBwbGF0L2t2
bTogRm9yY2UgYWxpZ24gdGhlIHN0YWNrIHBvaW50ZXIgZm9yIEFybTY0IEVMMSBleGNlcHRpb25z
DQo+ID4gICAgcGxhdC9rdm06IFJlbmFtZSBwYWdldGFibGUuUyB0byBwYWdldGFibGU2NC5TIGZv
ciBBcm02NA0KPiA+ICAgIHBsYXQva3ZtOiBJbnZhbGlkYXRlIEQtQ2FjaGUgdGhhdCBtYXkgaGF2
ZSBiZWVuIG1vZGlmaWVkIGZvciBBcm02NA0KPiA+ICAgIHBsYXQva3ZtOiBhcm02NDogQ2xlYXIg
cGFnZXRhYmxlIG1lbW9yeSB3aXRoIGJvb3Qgc3RhY2sNCj4gPiAgICBwbGF0L2t2bTogYXJtNjQ6
IENhbGN1bGF0ZSBwYWdldGFibGUgc2l6ZSBkeW5hbWljYWxseSBieSBpbWFnZSBzaXplDQo+ID4g
ICAgcGxhdC9rdm06IGFybTY0OiBCdWlsZCBMMyBwYWdlIHRhYmxlIGZvciByYW5nZSBncmVhdGVy
IHRoYW4gMk1CDQo+ID4gICAgcGxhdC9rdm06IGFybTY0OiBTdXBwb3J0IGJ1aWxkIEwzIHRhYmxl
IGZvciBsYXJnZSBpbWFnZSBzaXplDQo+ID4gICAgcGxhdC9rdm06IGFybTY0OiBSZW1vdmUgbmVl
ZGxlc3Mgc2VtaWNvbG9ucyBpbiBhc3NlbWJseQ0KPiA+ICAgIHBsYXQva3ZtOiBhcm02NDogRW5z
dXJlIHRoZXJlIGlzIG5vIHN0YWxsIGRhdGEgaW4gY2FjaGUgd2hlbiBib290DQo+ID4gICAgcGxh
dC9rdm06IGFybTY0OiBSZW1vdmUgc3VwZXJmbHVvdXMgYmxhbmsgbGluZQ0KPiA+DQo+ID4gICBN
YWtlZmlsZS51ayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA4ICstDQo+ID4g
ICBhcmNoL2FybS9hcm02NC9pbmNsdWRlL3VrL2FzbS9sY3B1LmggICAgICAgIHwgIDE2ICsrLQ0K
PiA+ICAgcGxhdC9jb21tb24vYXJtL2NhY2hlNjQuUyAgICAgICAgICAgICAgICAgICB8ICAzMSAr
Ky0tLS0NCj4gPiAgIHBsYXQvY29tbW9uL2luY2x1ZGUvYXJtL2FybTY0L2NwdS5oICAgICAgICAg
fCAgNTggKysrKy0tLS0tLQ0KPiA+ICAgcGxhdC9jb21tb24vaW5jbHVkZS9hcm0vYXJtNjQvY3B1
X2RlZnMuaCAgICB8ICAxNiArKy0NCj4gPiAgIHBsYXQvY29tbW9uL2luY2x1ZGUvc2VjdGlvbnMu
aCAgICAgICAgICAgICAgfCAxMTAgKysrKysrKysrKysrKysrKysrKw0KPiA+ICAgcGxhdC9rdm0v
TWFrZWZpbGUudWsgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQ0KPiA+ICAgcGxhdC9r
dm0vYXJtL2VudHJ5NjQuUyAgICAgICAgICAgICAgICAgICAgICB8ICA3NyArKysrKysrKystLS0t
DQo+ID4gICBwbGF0L2t2bS9hcm0vZXhjZXB0aW9ucy5TICAgICAgICAgICAgICAgICAgIHwgIDcz
ICsrKysrKysrKystLS0NCj4gPiAgIHBsYXQva3ZtL2FybS97cGFnZXRhYmxlLlMgPT4gcGFnZXRh
YmxlNjQuU30gfCAxMTUgKysrKysrKysrKysrKy0tLS0tLS0NCj4gPiAgIHBsYXQva3ZtL2FybS9z
ZXR1cC5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTIgKy0NCj4gPiAgIHBsYXQva3ZtL2lu
Y2x1ZGUva3ZtLWFybS9hcm02NC9tbS5oICAgICAgICAgfCAgMTQgKystDQo+ID4gICBwbGF0L2t2
bS9tZW1vcnkuYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIzICsrLS0NCj4gPiAgIHBs
YXQva3ZtL3g4Ni9zZXR1cC5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDYgKy0NCj4gPiAg
IHBsYXQveGVuL2FybS9zZXR1cC5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDYgKy0NCj4g
PiAgIHBsYXQveGVuL2luY2x1ZGUveGVuLWFybS9tbS5oICAgICAgICAgICAgICAgfCAgIDMgKy0N
Cj4gPiAgIHBsYXQveGVuL2luY2x1ZGUveGVuLXg4Ni9tbS5oICAgICAgICAgICAgICAgfCAgMjEg
KystLQ0KPiA+ICAgcGxhdC94ZW4vbWVtb3J5LmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8
ICAyMiArKy0tDQo+ID4gICBwbGF0L3hlbi94ODYvbW0uYyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgIDE3ICsrLQ0KPiA+ICAgcGxhdC94ZW4veDg2L3NldHVwLmMgICAgICAgICAgICAgICAg
ICAgICAgICB8ICAgMiArLQ0KPiA+ICAgMjAgZmlsZXMgY2hhbmdlZCwgNDE5IGluc2VydGlvbnMo
KyksIDIxMyBkZWxldGlvbnMoLSkNCj4gPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBwbGF0L2NvbW1v
bi9pbmNsdWRlL3NlY3Rpb25zLmgNCj4gPiAgIHJlbmFtZSBwbGF0L2t2bS9hcm0ve3BhZ2V0YWJs
ZS5TID0+IHBhZ2V0YWJsZTY0LlN9ICg4NCUpDQo+ID4NCj4NCj4gX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCj4gTWluaW9zLWRldmVsIG1haWxpbmcgbGlz
dA0KPiBNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcNCj4gaHR0cHM6Ly9saXN0cy54
ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA0KSU1QT1JUQU5UIE5P
VElDRTogVGhlIGNvbnRlbnRzIG9mIHRoaXMgZW1haWwgYW5kIGFueSBhdHRhY2htZW50cyBhcmUg
Y29uZmlkZW50aWFsIGFuZCBtYXkgYWxzbyBiZSBwcml2aWxlZ2VkLiBJZiB5b3UgYXJlIG5vdCB0
aGUgaW50ZW5kZWQgcmVjaXBpZW50LCBwbGVhc2Ugbm90aWZ5IHRoZSBzZW5kZXIgaW1tZWRpYXRl
bHkgYW5kIGRvIG5vdCBkaXNjbG9zZSB0aGUgY29udGVudHMgdG8gYW55IG90aGVyIHBlcnNvbiwg
dXNlIGl0IGZvciBhbnkgcHVycG9zZSwgb3Igc3RvcmUgb3IgY29weSB0aGUgaW5mb3JtYXRpb24g
aW4gYW55IG1lZGl1bS4gVGhhbmsgeW91Lg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxA
bGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFu
L2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Thu Feb 21 10:10:59 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 21 Feb 2019 10:10:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gwlJh-0004fv-7z; Thu, 21 Feb 2019 10:10:57 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=mQ+E=Q4=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1gwlJg-0004fq-9v
 for minios-devel@lists.xen.org; Thu, 21 Feb 2019 10:10:56 +0000
X-Inumbo-ID: f3d964a7-35c0-11e9-bc90-bc764e045a96
Received: from mail-wr1-x442.google.com (unknown [2a00:1450:4864:20::442])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id f3d964a7-35c0-11e9-bc90-bc764e045a96;
 Thu, 21 Feb 2019 10:10:45 +0000 (UTC)
Received: by mail-wr1-x442.google.com with SMTP id i16so21029284wrs.13
 for <minios-devel@lists.xen.org>; Thu, 21 Feb 2019 02:10:45 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=u18Ri0VwEu+DrYz4vwrJW+29neJPFrYozplvJ8gxL6M=;
 b=fGAWm4Npew5x4OUoA+ICHI7RIZcfoqfJRovU5XutqK5ZWM77sqWhvv4fEx/R7s+r8N
 BBPdJeEW68tdXTOOU7kbe9lC0vraAdTem6wxmFl26/UFk+9zrr0TUtUt1RnPO9lswdZn
 +b/4P7ySjp42EPxtqUMNIFuDKXaE/FxtRwziFpiYrtpfnfguNMOV+56TO54tp6q7GzUF
 gJYgwff7xCfsLAgEX1WKKMQvsYJUvdrgDcg+HK2yVuLArLORATMDude8O/8cur3+rlKf
 cDsgH85TPJeoi42NeW1pwHsUH6smyxcKbXN7qchThqohnx0INA3SqXcu9bVViSlJ5ukS
 9SLg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=u18Ri0VwEu+DrYz4vwrJW+29neJPFrYozplvJ8gxL6M=;
 b=PCGQArwgRrWmBEvyAcW3CiRM7wcpHRnekG3vc5xXuURKa9Yx0MGIY4tNn9Wh2XTwyT
 F/ZvnrTyEWJzH+POWuSAON9YhxcwA590DMhPdoMIVFwyCcmmWZIJp9CVo1ST9pluivMS
 pCIC/A8RuFBghzg2KwppgPrz5oYpMgaLbTFmGVDHWBO/teCElmNS4cbA+fd0CdATO075
 0toOKBQW2mGWTJ6xaZ47fEuOzfFzYDl01C0RuTcsGmBwpeV6W/k95I5c/BkXvX06064d
 ECaX1RJyPHx8qGmUXuqziX63eoxxla1Xoe+kts9qRHJVI8+05r3DhvuttUZoNZ7c77kL
 gm1Q==
X-Gm-Message-State: AHQUAua4W+XL0LKVawRjExiULaF885xz+3lMs24TGBsVbb2plYejV0be
 qfCvZEk4LkP3SdvhNNBoVNg=
X-Google-Smtp-Source: AHgI3IaO3SYVVlLZB3B+aWylBwmm5zmOhmjbfXgle5762gkSmxMFNCvL5xGh4CDgbkrQ2OJ8PqYTpA==
X-Received: by 2002:adf:e706:: with SMTP id c6mr28159073wrm.278.1550743844746; 
 Thu, 21 Feb 2019 02:10:44 -0800 (PST)
Received: from [172.19.2.117] ([141.85.233.142])
 by smtp.gmail.com with ESMTPSA id j1sm5696763wme.4.2019.02.21.02.10.43
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Thu, 21 Feb 2019 02:10:43 -0800 (PST)
To: Florian Schmidt <Florian.Schmidt@neclab.eu>, minios-devel@lists.xen.org
References: <20190110152212.14518-1-costin.lupu@cs.pub.ro>
 <20190110152212.14518-4-costin.lupu@cs.pub.ro>
 <310885cf-2f1b-0166-4433-4c60438c8998@neclab.eu>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <608cbd68-0c2c-73ca-5a32-9e16da24e579@gmail.com>
Date: Thu, 21 Feb 2019 12:10:42 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.5.1
MIME-Version: 1.0
In-Reply-To: <310885cf-2f1b-0166-4433-4c60438c8998@neclab.eu>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 3/8] lib/uksched: Introduce
 thread attributes
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: felipe.huici@neclab.eu, simon.kuenzer@neclab.eu, yuri.volchkov@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

T24gMS8yMy8xOSAxMDo0OSBBTSwgRmxvcmlhbiBTY2htaWR0IHdyb3RlOgo+IEhpIENvc3RpbiwK
PiAKPiBJIGNoZWNrZWQgRmVsaXBlJ3MgY29tbWVudHMsIGFuZCBJIGFncmVlIHdpdGggeW91ciBj
aGFuZ2VzIGluIHYyLiBoZQo+IHBhdGNoIGxvb2tzIGdvb2QgdG8gbWUsIGV4Y2VwdCBmb3Igb25l
IG1pbm9yIHRoaW5nOgo+IAo+IE9uIDEvMTEvMTkgMTI6MjIgQU0sIENvc3RpbiBMdXB1IHdyb3Rl
Ogo+PiBkaWZmIC0tZ2l0IGEvbGliL3Vrc2NoZWQvaW5jbHVkZS91ay90aHJlYWRfYXR0ci5oCj4+
IGIvbGliL3Vrc2NoZWQvaW5jbHVkZS91ay90aHJlYWRfYXR0ci5oCj4+IG5ldyBmaWxlIG1vZGUg
MTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAuLjkzZGNkNWMKPj4gLS0tIC9kZXYvbnVsbAo+PiArKysg
Yi9saWIvdWtzY2hlZC9pbmNsdWRlL3VrL3RocmVhZF9hdHRyLmgKPj4gQEAgLTAsMCArMSw4MSBA
QAo+PiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLwo+PiArLyoK
Pj4gKyAqIEF1dGhvcnM6IENvc3RpbiBMdXB1IDxjb3N0aW4ubHVwdUBjcy5wdWIucm8+Cj4+ICsg
Kgo+PiArICogQ29weXJpZ2h0IChjKSAyMDE5LCBORUMgRXVyb3BlIEx0ZC4sIE5FQyBDb3Jwb3Jh
dGlvbi4gQWxsIHJpZ2h0cwo+PiByZXNlcnZlZC4KPj4gKyAqCj4+ICsgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKPj4g
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwo+PiArICogYXJlIG1ldDoKPj4gKyAqCj4+ICsgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+PiAr
ICrCoMKgwqAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgo+PiArICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKPj4gKyAqwqDCoMKgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgo+PiB0
aGUKPj4gKyAqwqDCoMKgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQo+PiBkaXN0cmlidXRpb24uCj4+ICsgKiAzLiBOZWl0aGVyIHRoZSBuYW1l
IG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzCj4+ICsgKsKgwqDC
oCBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQKPj4gZnJvbQo+PiArICrCoMKgwqAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KPj4gKyAqCj4+ICsgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQKPj4gQ09OVFJJQlVUT1JT
ICJBUyBJUyIKPj4gKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVECj4+IFRPLCBUSEUKPj4gKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgo+PiBQ
VVJQT1NFCj4+ICsgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVCBIT0xERVIgT1IKPj4gQ09OVFJJQlVUT1JTIEJFCj4+ICsgKiBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCj4+ICsg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgo+PiArICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SCj4+IEJVU0lORVNTCj4+ICsgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwKPj4gV0hF
VEhFUiBJTgo+PiArICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SCj4+IE9USEVSV0lTRSkKPj4gKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGCj4+IEFEVklTRUQgT0Yg
VEhFCj4+ICsgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KPj4gKyAqCj4+ICsgKiBUSElT
IEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgo+PiAr
ICovCj4+ICsKPj4gKyNpZm5kZWYgX19VS19TQ0hFRF9USFJFQURfQVRUUl9IX18KPj4gKyNkZWZp
bmUgX19VS19TQ0hFRF9USFJFQURfQVRUUl9IX18KPj4gKwo+PiArI2luY2x1ZGUgPHVrL2FyY2gv
dGltZS5oPgo+PiArCj4+ICsjaWZkZWYgX19jcGx1c3BsdXMKPj4gK2V4dGVybiAiQyIgewo+PiAr
I2VuZGlmCj4+ICsKPj4gKyNkZWZpbmUgVUtfVEhSRUFEX0FUVFJfV0FJVEFCTEXCoMKgwqDCoMKg
wqDCoMKgIDAKPj4gKyNkZWZpbmUgVUtfVEhSRUFEX0FUVFJfREVUQUNIRUTCoMKgwqDCoMKgwqDC
oMKgIDEKPj4gKwo+PiArI2RlZmluZSBVS19USFJFQURfQVRUUl9QUklPX0lOVkFMSUTCoMKgwqDC
oCAoLTEpCj4+ICsjZGVmaW5lIFVLX1RIUkVBRF9BVFRSX1BSSU9fTUlOwqDCoMKgwqDCoMKgwqDC
oCAwCj4+ICsjZGVmaW5lIFVLX1RIUkVBRF9BVFRSX1BSSU9fTUFYwqDCoMKgwqDCoMKgwqDCoCAy
NTUKPj4gKyNkZWZpbmUgVUtfVEhSRUFEX0FUVFJfUFJJT19ERUZBVUxUwqDCoMKgwqAgMTI3Cj4+
ICsKPj4gKyNkZWZpbmUgVUtfVEhSRUFEX0FUVFJfVElNRVNMSUNFX05JTMKgwqDCoCAwCj4+ICsK
Pj4gK3R5cGVkZWYgaW50IHByaW9fdDsKPj4gKwo+PiArdHlwZWRlZiBzdHJ1Y3QgdWtfdGhyZWFk
X2F0dHIgewo+PiArwqDCoMKgIC8qKjwgSXMgbm9uLXplcm8gaWYgdGhyZWFkIHNob3VsZCBkZXRh
Y2ggKi8KPj4gK8KgwqDCoCBpbnQgaXNfZGV0YWNoZWQ7Cj4+ICvCoMKgwqAgLyoqPCBQcmlvcml0
eSAqLwo+PiArwqDCoMKgIHByaW9fdCBwcmlvOwo+PiArwqDCoMKgIC8qKjwgVGltZSBzbGljZSBp
biBuYW5vc2Vjb25kcyAqLwo+IAo+IElzIHRoZXJlIHNvbWUgcmVhc29uIGZvciB0aGlzIGNvbW1l
bnQgc3R5bGU/IChkb3VibGUtYXN0ZXJpc2sgYW5kCj4gbGVzcy10aGFuKQoKV2lsbCBnZXQgcmlk
IG9mIHRoYXQgaW4gdjMuCgpDb3N0aW4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxp
c3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9s
aXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Thu Feb 21 10:11:19 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 21 Feb 2019 10:11:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gwlK3-0004gz-Jb; Thu, 21 Feb 2019 10:11:19 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=mQ+E=Q4=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1gwlK1-0004gp-Gn
 for minios-devel@lists.xen.org; Thu, 21 Feb 2019 10:11:17 +0000
X-Inumbo-ID: 053c2aee-35c1-11e9-bc90-bc764e045a96
Received: from mail-wr1-x444.google.com (unknown [2a00:1450:4864:20::444])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 053c2aee-35c1-11e9-bc90-bc764e045a96;
 Thu, 21 Feb 2019 10:11:15 +0000 (UTC)
Received: by mail-wr1-x444.google.com with SMTP id r5so15911817wrg.9
 for <minios-devel@lists.xen.org>; Thu, 21 Feb 2019 02:11:15 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=n0iLFfXl6qg+vbybdNSDnJmgxV62iLNI8SHrYvE+3R8=;
 b=Xr48RLIc9XwkdubVeBud9Jmh1Un8yhC+xe3ZAX9jXze5a8AN8M4F0DrkBM3M1atQa/
 TLSwQCqtu7zIjH1ZMTNe7Y5VJ0+RnKgm6IV90599U4x27m34L3bZG3uy/YitGPXVl375
 iKgNlWtntwtUU2M0MxeXnbxIwikheyA8+2916Hj3/R5yEqhx+Sk3QuJq7+5LO9TSAoqB
 Cm5VH+2rqsgcPU12u9Hqgrtb+TKpeMDJU0b9rYzrAZPXSErNBbrM/wHc8r7EXUTu66AI
 CaTkoLkJ5CDPkj+wBOxJ9R4cfP6Qq+eXuCxdbaV+Eo9Ua5dEhu9OVVNJe04AxoJeXHT8
 K2ww==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=n0iLFfXl6qg+vbybdNSDnJmgxV62iLNI8SHrYvE+3R8=;
 b=QDeZ+kEVr3Nq4ncbRIkIYA0/BYtC5lNYXUv1cjBIcpdWUxO9qVRaE94URLh4gD1jT9
 QM5P83wT6NpDfosv4oazMtEvEaDWiIIcEFKfj5NosCW5lik5vslK/GXjH+zTxbyG5A+g
 hcfBDfZJgAV2xln/xTjP+UGbF/6AFdtaQutL7uA4UdfeDG1ha1mCR5Q0pafPCgeDN1lO
 azDJDRvA/lOMVk5EyqWwHrgLO8q3MEnV3vJ8Fi1D5mgkZtxfvoAPgKmgPwPAHzF7fFsn
 /TgivkhmsT9jpxipSPBqKtKJf57Mvpqa8YTqjwdK+M4YjZEGE5slwet5Pth6nO370BdB
 noPA==
X-Gm-Message-State: AHQUAuYEHxkwweEi506ut8OxbBptLeC3tCs1JacGJ/RhIUha9l+kQaOo
 QqRh3FCt/x2qPENTQ48kIq77BbZj
X-Google-Smtp-Source: AHgI3Ib27W5eEagReqIfZvFcG+mO6g7P3TBwPJzm/4EoMJwTX/CWQ7x72azGzZTq9ulWQeb2EbaT5Q==
X-Received: by 2002:adf:f70c:: with SMTP id r12mr28207319wrp.54.1550743873873; 
 Thu, 21 Feb 2019 02:11:13 -0800 (PST)
Received: from [172.19.2.117] ([141.85.233.142])
 by smtp.gmail.com with ESMTPSA id n9sm2307671wmi.33.2019.02.21.02.11.12
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Thu, 21 Feb 2019 02:11:13 -0800 (PST)
To: Florian Schmidt <Florian.Schmidt@neclab.eu>, minios-devel@lists.xen.org,
 Sharan Santhanam <sharan.santhanam@neclab.eu>
References: <20190110152212.14518-1-costin.lupu@cs.pub.ro>
 <20190110152212.14518-4-costin.lupu@cs.pub.ro>
 <1bdca0af-640a-f664-437f-d0d7ff4d1677@neclab.eu>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <cc2e5818-9783-28a0-a1a8-55466b986516@gmail.com>
Date: Thu, 21 Feb 2019 12:11:12 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.5.1
MIME-Version: 1.0
In-Reply-To: <1bdca0af-640a-f664-437f-d0d7ff4d1677@neclab.eu>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 3/8] lib/uksched: Introduce
 thread attributes
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: felipe.huici@neclab.eu, simon.kuenzer@neclab.eu, yuri.volchkov@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VXBkYXRlZCB0aGUgdWtfc2NoZWRfdGhyZWFkX2NyZWF0ZSBjYWxsIGluIHYzLgoKQ29zdGluCgpP
biAxLzIzLzE5IDQ6NTggUE0sIEZsb3JpYW4gU2NobWlkdCB3cm90ZToKPiBBaCwgb25lIG1vcmUg
dGhpbmcgYWJvdXQgdGhpcyBwYXRjaDogWW91IGNoYW5nZSB0aGUgc2lnbmF0dXJlIG9mCj4gdWtf
c2NoZWRfdGhyZWFkX2NyZWF0ZSBoZXJlLCBhbmQgdGhlcmUgaXMgYSBjYWxsIGluCj4gbGliL3Vr
bmV0ZGV2L25ldGRldi5jOjI5MiB0aGF0IHVzZXMgdGhlIG9sZCBzaWduYXR1cmUsIHNvIHRoaXMg
c2hvdWxkCj4gcHJvYmFibHkgYmUgY2hhbmdlZCBqdXN0IGJ5IGFkZGluZyBOVUxMIGZvciB0aGUg
YXR0cmlidXRlcy4KPiAKPiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGNvdWxkIGJlIGNoYW5nZWQgc28g
dGhhdCB0aGUgY29kZSB1c2VzCj4gdWtfdGhyZWFkX2NyZWF0ZSBpbnN0ZWFkLCBidXQgdGhpcyB3
b3VsZCBwcm9iYWJseSByZXF1aXJlIGEgYml0IG1vcmUKPiByZWZhY3RvcmluZyAoZm9yIGV4YW1w
bGUsIHJ4X2NvbmYgbWlnaHQgbm90IGV2ZW4gbmVlZCB0byBjb250YWluIHRoZQo+IHNjaGVkdWxl
ciBhbnkgbW9yZSBiZWNhdXNlIGl0IGNvdWxkIGp1c3QgYWx3YXlzIHVzZSB0aGUgZGVmYXVsdAo+
IHNjaGVkdWxlcj8pIEJ1dCB0aGF0J3MgbWF5YmUgbW9yZSBmb3IgU2hhcmFuIGFzIHRoZSBvcmln
aW5hbCBhdXRob3Igb2YKPiB0aGF0IGNvZGUgdG8gbG9vayBpbnRvLgo+IAo+IENoZWVycywKPiBG
bG9yaWFuCj4gCj4gCj4gT24gMS8xMS8xOSAxMjoyMiBBTSwgQ29zdGluIEx1cHUgd3JvdGU6Cj4+
IFdlIGludHJvZHVjZSBhIHRocmVhZCBhdHRyaWJ1dGVzIGFic3RyYWN0aW9uIHdoaWNoIGlzIHVz
ZWQgZm9yCj4+IGNvbmZpZ3VyaW5nIHRocmVhZCBiZWhhdmlvci4gVGhlIHNldCBvZiBjdXJyZW50
bHkgYXZhaWxhYmxlCj4+IGF0dHJpYnV0ZXMgd2FzIGluc3BpcmVkIGZyb20gdGhlIHB0aHJlYWQg
aW50ZXJmYWNlLgo+Pgo+PiBUaHJlYWQgYXR0cmlidXRlcyBjYW4gYmUgc2V0IGVpdGhlciB3aGVu
IGNyZWF0aW5nIHRoZSB0aHJlYWRzIG9yCj4+IGR1cmluZyB0aHJlYWQgZXhlY3V0aW9uIGJ5IGNh
bGxpbmcgdGhlIGNvcnJlc3BvbmRpbmcgc2V0dGVycy4gSWYKPj4gYW4gYXR0cmlidXRlIGlzIG5v
dCBzdXBwb3J0ZWQgYnkgdGhlIHVuZGVybHlpbmcgc2NoZWR1bGVyIHRoZW4KPj4gLUVJTlZBTCBp
cyByZXR1cm5lZCBieSBzZXR0ZXJzLgo+Pgo+PiBUaGUgZGV0YWNoIGF0dHJpYnV0ZSBpcyBjb21t
b24gdG8gYWxsIHRocmVhZHMsIHJlZ2FyZGxlc3Mgb2YgdGhlCj4+IHNjaGVkdWxpbmcgcG9saWN5
LCBhbmQgaWYgc2V0IGl0IG1lYW5zIHRoYXQgdGhlIHRocmVhZCByZXNvdXJjZXMKPj4gd2lsbCBi
ZSBhdXRvbWF0aWNhbGx5IGZyZWVkIG9uIHRocmVhZCBleGl0LiBCeSBkZWZhdWx0LCB0aHJlYWRz
Cj4+IGFyZSBub3QgZGV0YWNoZWQuIFRoZSBjb21wbGV0ZSBkZXRhY2ggc3VwcG9ydCB3aWxsIGJl
IGFkZGVkIGluIGEKPj4gZm9sbG93aW5nIGNvbW1pdC4KPj4KPj4gVGltZSBzbGljZSBhbmQgcHJp
b3JpdHkgbWFrZSBzZW5zZSBvbmx5IGZvciBwcmVlbXB0aXZlIHNjaGVkdWxlcnMuCj4+Cj4+IFNp
Z25lZC1vZmYtYnk6IENvc3RpbiBMdXB1IDxjb3N0aW4ubHVwdUBjcy5wdWIucm8+Cj4+IC0tLQo+
PiDCoCBsaWIvdWtzY2hlZC9NYWtlZmlsZS51a8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzC
oMKgIDEgKwo+PiDCoCBsaWIvdWtzY2hlZC9leHBvcnRzeW1zLnVrwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoCB8wqDCoCA4ICsrCj4+IMKgIGxpYi91a3NjaGVkL2luY2x1ZGUvdWsvc2NoZWQuaMKgwqDC
oMKgwqDCoCB8wqAgNzUgKysrKysrKysrKysrKysrKystLQo+PiDCoCBsaWIvdWtzY2hlZC9pbmNs
dWRlL3VrL3RocmVhZC5owqDCoMKgwqDCoCB8wqAgMTIgKystCj4+IMKgIGxpYi91a3NjaGVkL2lu
Y2x1ZGUvdWsvdGhyZWFkX2F0dHIuaCB8wqAgODEgKysrKysrKysrKysrKysrKysrKysKPj4gwqAg
bGliL3Vrc2NoZWQvc2NoZWQuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKg
wqAgNSArLQo+PiDCoCBsaWIvdWtzY2hlZC90aHJlYWQuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgIHzCoCAzNCArKysrKysrKysKPj4gwqAgbGliL3Vrc2NoZWQvdGhyZWFkX2F0dHIu
Y8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAxMzkKPj4gKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysKPj4gwqAgbGliL3Vrc2NoZWRjb29wL3NjaGVkY29vcC5jwqDCoMKgwqDCoMKg
wqDCoMKgIHzCoMKgIDYgKy0KPj4gwqAgOSBmaWxlcyBjaGFuZ2VkLCAzNTEgaW5zZXJ0aW9ucygr
KSwgMTAgZGVsZXRpb25zKC0pCj4+IMKgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdWtzY2hlZC9p
bmNsdWRlL3VrL3RocmVhZF9hdHRyLmgKPj4gwqAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi91a3Nj
aGVkL3RocmVhZF9hdHRyLmMKPj4KPj4gZGlmZiAtLWdpdCBhL2xpYi91a3NjaGVkL01ha2VmaWxl
LnVrIGIvbGliL3Vrc2NoZWQvTWFrZWZpbGUudWsKPj4gaW5kZXggMjQ4MTZmNi4uMjI5ZDg0NyAx
MDA2NDQKPj4gLS0tIGEvbGliL3Vrc2NoZWQvTWFrZWZpbGUudWsKPj4gKysrIGIvbGliL3Vrc2No
ZWQvTWFrZWZpbGUudWsKPj4gQEAgLTUsMyArNSw0IEBAIENYWElOQ0xVREVTLSQoQ09ORklHX0xJ
QlVLU0NIRUQpwqDCoCArPQo+PiAtSSQoTElCVUtTQ0hFRF9CQVNFKS9pbmNsdWRlCj4+IMKgIMKg
IExJQlVLU0NIRURfU1JDUy15ICs9ICQoTElCVUtTQ0hFRF9CQVNFKS9zY2hlZC5jCj4+IMKgIExJ
QlVLU0NIRURfU1JDUy15ICs9ICQoTElCVUtTQ0hFRF9CQVNFKS90aHJlYWQuYwo+PiArTElCVUtT
Q0hFRF9TUkNTLXkgKz0gJChMSUJVS1NDSEVEX0JBU0UpL3RocmVhZF9hdHRyLmMKPj4gZGlmZiAt
LWdpdCBhL2xpYi91a3NjaGVkL2V4cG9ydHN5bXMudWsgYi9saWIvdWtzY2hlZC9leHBvcnRzeW1z
LnVrCj4+IGluZGV4IDQ1YTk2OTQuLjBiMTA0MDUgMTAwNjQ0Cj4+IC0tLSBhL2xpYi91a3NjaGVk
L2V4cG9ydHN5bXMudWsKPj4gKysrIGIvbGliL3Vrc2NoZWQvZXhwb3J0c3ltcy51awo+PiBAQCAt
MTQsMyArMTQsMTEgQEAgdWtfdGhyZWFkX2ZpbmkKPj4gwqAgdWtfdGhyZWFkX2Jsb2NrX3RpbWVv
dXQKPj4gwqAgdWtfdGhyZWFkX2Jsb2NrCj4+IMKgIHVrX3RocmVhZF93YWtlCj4+ICt1a190aHJl
YWRfYXR0cl9pbml0Cj4+ICt1a190aHJlYWRfYXR0cl9maW5pCj4+ICt1a190aHJlYWRfYXR0cl9z
ZXRfZGV0YWNoc3RhdGUKPj4gK3VrX3RocmVhZF9hdHRyX2dldF9kZXRhY2hzdGF0ZQo+PiArdWtf
dGhyZWFkX2F0dHJfc2V0X3ByaW8KPj4gK3VrX3RocmVhZF9hdHRyX2dldF9wcmlvCj4+ICt1a190
aHJlYWRfYXR0cl9zZXRfdGltZXNsaWNlCj4+ICt1a190aHJlYWRfYXR0cl9nZXRfdGltZXNsaWNl
Cj4+IFwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo+PiBkaWZmIC0tZ2l0IGEvbGliL3Vrc2No
ZWQvaW5jbHVkZS91ay9zY2hlZC5oCj4+IGIvbGliL3Vrc2NoZWQvaW5jbHVkZS91ay9zY2hlZC5o
Cj4+IGluZGV4IGQyZmM4ZGYuLmIyMWQ2NWMgMTAwNjQ0Cj4+IC0tLSBhL2xpYi91a3NjaGVkL2lu
Y2x1ZGUvdWsvc2NoZWQuaAo+PiArKysgYi9saWIvdWtzY2hlZC9pbmNsdWRlL3VrL3NjaGVkLmgK
Pj4gQEAgLTYwLDE2ICs2MCwzMSBAQCB0eXBlZGVmIHZvaWTCoCAoKnVrX3NjaGVkX3lpZWxkX2Z1
bmNfdCkKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIChzdHJ1Y3QgdWtfc2NoZWQgKnMpOwo+PiDCoCDC
oCB0eXBlZGVmIHZvaWTCoCAoKnVrX3NjaGVkX3RocmVhZF9hZGRfZnVuY190KQo+PiAtwqDCoMKg
wqDCoMKgwqAgKHN0cnVjdCB1a19zY2hlZCAqcywgc3RydWN0IHVrX3RocmVhZCAqdCk7Cj4+ICvC
oMKgwqDCoMKgwqDCoCAoc3RydWN0IHVrX3NjaGVkICpzLCBzdHJ1Y3QgdWtfdGhyZWFkICp0LAo+
PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgdWtfdGhyZWFkX2F0dHIgKmF0dHIpOwo+
PiDCoCB0eXBlZGVmIHZvaWTCoCAoKnVrX3NjaGVkX3RocmVhZF9yZW1vdmVfZnVuY190KQo+PiDC
oMKgwqDCoMKgwqDCoMKgwqAgKHN0cnVjdCB1a19zY2hlZCAqcywgc3RydWN0IHVrX3RocmVhZCAq
dCk7Cj4+IMKgICt0eXBlZGVmIGludMKgwqAgKCp1a19zY2hlZF90aHJlYWRfc2V0X3ByaW9fZnVu
Y190KQo+PiArwqDCoMKgwqDCoMKgwqAgKHN0cnVjdCB1a19zY2hlZCAqcywgc3RydWN0IHVrX3Ro
cmVhZCAqdCwgcHJpb190IHByaW8pOwo+PiArdHlwZWRlZiBpbnTCoMKgICgqdWtfc2NoZWRfdGhy
ZWFkX2dldF9wcmlvX2Z1bmNfdCkKPj4gK8KgwqDCoMKgwqDCoMKgIChzdHJ1Y3QgdWtfc2NoZWQg
KnMsIGNvbnN0IHN0cnVjdCB1a190aHJlYWQgKnQsIHByaW9fdCAqcHJpbyk7Cj4+ICt0eXBlZGVm
IGludMKgwqAgKCp1a19zY2hlZF90aHJlYWRfc2V0X3RzbGljZV9mdW5jX3QpCj4+ICvCoMKgwqDC
oMKgwqDCoCAoc3RydWN0IHVrX3NjaGVkICpzLCBzdHJ1Y3QgdWtfdGhyZWFkICp0LCBpbnQgdHNs
aWNlKTsKPj4gK3R5cGVkZWYgaW50wqDCoCAoKnVrX3NjaGVkX3RocmVhZF9nZXRfdHNsaWNlX2Z1
bmNfdCkKPj4gK8KgwqDCoMKgwqDCoMKgIChzdHJ1Y3QgdWtfc2NoZWQgKnMsIGNvbnN0IHN0cnVj
dCB1a190aHJlYWQgKnQsIGludCAqdHNsaWNlKTsKPj4gKwo+PiDCoCBzdHJ1Y3QgdWtfc2NoZWQg
ewo+PiDCoMKgwqDCoMKgIHVrX3NjaGVkX3lpZWxkX2Z1bmNfdCB5aWVsZDsKPj4gwqAgwqDCoMKg
wqDCoCB1a19zY2hlZF90aHJlYWRfYWRkX2Z1bmNfdMKgwqDCoMKgwqAgdGhyZWFkX2FkZDsKPj4g
wqDCoMKgwqDCoCB1a19zY2hlZF90aHJlYWRfcmVtb3ZlX2Z1bmNfdMKgwqAgdGhyZWFkX3JlbW92
ZTsKPj4gwqAgK8KgwqDCoCB1a19zY2hlZF90aHJlYWRfc2V0X3ByaW9fZnVuY190wqDCoCB0aHJl
YWRfc2V0X3ByaW87Cj4+ICvCoMKgwqAgdWtfc2NoZWRfdGhyZWFkX2dldF9wcmlvX2Z1bmNfdMKg
wqAgdGhyZWFkX2dldF9wcmlvOwo+PiArwqDCoMKgIHVrX3NjaGVkX3RocmVhZF9zZXRfdHNsaWNl
X2Z1bmNfdCB0aHJlYWRfc2V0X3RzbGljZTsKPj4gK8KgwqDCoCB1a19zY2hlZF90aHJlYWRfZ2V0
X3RzbGljZV9mdW5jX3QgdGhyZWFkX2dldF90c2xpY2U7Cj4+ICsKPj4gwqDCoMKgwqDCoCAvKiBp
bnRlcm5hbCAqLwo+PiDCoMKgwqDCoMKgIHN0cnVjdCB1a190aHJlYWQgaWRsZTsKPj4gwqDCoMKg
wqDCoCBzdHJ1Y3QgdWtwbGF0X2N0eF9jYWxsYmFja3MgcGxhdF9jdHhfY2JzOwo+PiBAQCAtOTIs
MTIgKzEwNywxMiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgdWtfc2NoZWRfeWllbGQodm9pZCkKPj4g
wqAgfQo+PiDCoCDCoCBzdGF0aWMgaW5saW5lIHZvaWQgdWtfc2NoZWRfdGhyZWFkX2FkZChzdHJ1
Y3QgdWtfc2NoZWQgKnMsCj4+IC3CoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgdWtfdGhyZWFkICp0KQo+
PiArwqDCoMKgwqDCoMKgwqAgc3RydWN0IHVrX3RocmVhZCAqdCwgc3RydWN0IHVrX3RocmVhZF9h
dHRyICphdHRyKQo+PiDCoCB7Cj4+IMKgwqDCoMKgwqAgVUtfQVNTRVJUKHMpOwo+PiDCoMKgwqDC
oMKgIFVLX0FTU0VSVCh0KTsKPj4gwqDCoMKgwqDCoCB0LT5zY2hlZCA9IHM7Cj4+IC3CoMKgwqAg
cy0+dGhyZWFkX2FkZChzLCB0KTsKPj4gK8KgwqDCoCBzLT50aHJlYWRfYWRkKHMsIHQsIGF0dHIp
Owo+PiDCoCB9Cj4+IMKgIMKgIHN0YXRpYyBpbmxpbmUgdm9pZCB1a19zY2hlZF90aHJlYWRfcmVt
b3ZlKHN0cnVjdCB1a19zY2hlZCAqcywKPj4gQEAgLTEwOSw2ICsxMjQsNDkgQEAgc3RhdGljIGlu
bGluZSB2b2lkIHVrX3NjaGVkX3RocmVhZF9yZW1vdmUoc3RydWN0Cj4+IHVrX3NjaGVkICpzLAo+
PiDCoMKgwqDCoMKgIHQtPnNjaGVkID0gTlVMTDsKPj4gwqAgfQo+PiDCoCArc3RhdGljIGlubGlu
ZSBpbnQgdWtfc2NoZWRfdGhyZWFkX3NldF9wcmlvKHN0cnVjdCB1a19zY2hlZCAqcywKPj4gK8Kg
wqDCoMKgwqDCoMKgIHN0cnVjdCB1a190aHJlYWQgKnQsIHByaW9fdCBwcmlvKQo+PiArewo+PiAr
wqDCoMKgIFVLX0FTU0VSVChzKTsKPj4gKwo+PiArwqDCoMKgIGlmICghcy0+dGhyZWFkX3NldF9w
cmlvKQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FSU5WQUw7Cj4+ICsKPj4gK8KgwqDCoCBy
ZXR1cm4gcy0+dGhyZWFkX3NldF9wcmlvKHMsIHQsIHByaW8pOwo+PiArfQo+PiArCj4+ICtzdGF0
aWMgaW5saW5lIGludCB1a19zY2hlZF90aHJlYWRfZ2V0X3ByaW8oc3RydWN0IHVrX3NjaGVkICpz
LAo+PiArwqDCoMKgwqDCoMKgwqAgY29uc3Qgc3RydWN0IHVrX3RocmVhZCAqdCwgcHJpb190ICpw
cmlvKQo+PiArewo+PiArwqDCoMKgIFVLX0FTU0VSVChzKTsKPj4gKwo+PiArwqDCoMKgIGlmICgh
cy0+dGhyZWFkX2dldF9wcmlvKQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FSU5WQUw7Cj4+
ICsKPj4gK8KgwqDCoCByZXR1cm4gcy0+dGhyZWFkX2dldF9wcmlvKHMsIHQsIHByaW8pOwo+PiAr
fQo+PiArCj4+ICtzdGF0aWMgaW5saW5lIGludCB1a19zY2hlZF90aHJlYWRfc2V0X3RpbWVzbGlj
ZShzdHJ1Y3QgdWtfc2NoZWQgKnMsCj4+ICvCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgdWtfdGhyZWFk
ICp0LCBpbnQgdHNsaWNlKQo+PiArewo+PiArwqDCoMKgIFVLX0FTU0VSVChzKTsKPj4gKwo+PiAr
wqDCoMKgIGlmICghcy0+dGhyZWFkX3NldF90c2xpY2UpCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1
cm4gLUVJTlZBTDsKPj4gKwo+PiArwqDCoMKgIHJldHVybiBzLT50aHJlYWRfc2V0X3RzbGljZShz
LCB0LCB0c2xpY2UpOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW5saW5lIGludCB1a19zY2hlZF90
aHJlYWRfZ2V0X3RpbWVzbGljZShzdHJ1Y3QgdWtfc2NoZWQgKnMsCj4+ICvCoMKgwqDCoMKgwqDC
oCBjb25zdCBzdHJ1Y3QgdWtfdGhyZWFkICp0LCBpbnQgKnRzbGljZSkKPj4gK3sKPj4gK8KgwqDC
oCBVS19BU1NFUlQocyk7Cj4+ICsKPj4gK8KgwqDCoCBpZiAoIXMtPnRocmVhZF9nZXRfdHNsaWNl
KQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FSU5WQUw7Cj4+ICsKPj4gK8KgwqDCoCByZXR1
cm4gcy0+dGhyZWFkX2dldF90c2xpY2UocywgdCwgdHNsaWNlKTsKPj4gK30KPj4gwqAgwqAgLyoK
Pj4gwqDCoCAqIEludGVybmFsIHNjaGVkdWxlciBmdW5jdGlvbnMKPj4gQEAgLTEzMiwxMSArMTkw
LDE3IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IHVrX3RocmVhZAo+PiAqdWtfc2NoZWRfZ2V0X2lk
bGUoc3RydWN0IHVrX3NjaGVkICpzKQo+PiDCoCB2b2lkIHVrX3NjaGVkX3N0YXJ0KHN0cnVjdCB1
a19zY2hlZCAqc2NoZWQpIF9fbm9yZXR1cm47Cj4+IMKgIMKgICNkZWZpbmUgdWtfc2NoZWRfaW5p
dChzLCB5aWVsZF9mdW5jLCBcCj4+IC3CoMKgwqDCoMKgwqDCoCB0aHJlYWRfYWRkX2Z1bmMsIHRo
cmVhZF9yZW1vdmVfZnVuYykgXAo+PiArwqDCoMKgwqDCoMKgwqAgdGhyZWFkX2FkZF9mdW5jLCB0
aHJlYWRfcmVtb3ZlX2Z1bmMsIFwKPj4gK8KgwqDCoMKgwqDCoMKgIHRocmVhZF9zZXRfcHJpb19m
dW5jLCB0aHJlYWRfZ2V0X3ByaW9fZnVuYywgXAo+PiArwqDCoMKgwqDCoMKgwqAgdGhyZWFkX3Nl
dF90c2xpY2VfZnVuYywgdGhyZWFkX2dldF90c2xpY2VfZnVuYykgXAo+PiDCoMKgwqDCoMKgIGRv
IHsgXAo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgKHMpLT55aWVsZMKgwqDCoMKgwqDCoMKgwqDCoMKg
ID0geWllbGRfZnVuYzsgXAo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgKHMpLT50aHJlYWRfYWRkwqDC
oMKgwqDCoCA9IHRocmVhZF9hZGRfZnVuYzsgXAo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgKHMpLT50
aHJlYWRfcmVtb3ZlwqDCoCA9IHRocmVhZF9yZW1vdmVfZnVuYzsgXAo+PiArwqDCoMKgwqDCoMKg
wqAgKHMpLT50aHJlYWRfc2V0X3ByaW/CoMKgwqAgPSB0aHJlYWRfc2V0X3ByaW9fZnVuYzsgXAo+
PiArwqDCoMKgwqDCoMKgwqAgKHMpLT50aHJlYWRfZ2V0X3ByaW/CoMKgwqAgPSB0aHJlYWRfZ2V0
X3ByaW9fZnVuYzsgXAo+PiArwqDCoMKgwqDCoMKgwqAgKHMpLT50aHJlYWRfc2V0X3RzbGljZcKg
ID0gdGhyZWFkX3NldF90c2xpY2VfZnVuYzsgXAo+PiArwqDCoMKgwqDCoMKgwqAgKHMpLT50aHJl
YWRfZ2V0X3RzbGljZcKgID0gdGhyZWFkX2dldF90c2xpY2VfZnVuYzsgXAo+PiDCoMKgwqDCoMKg
wqDCoMKgwqAgdWtfc2NoZWRfcmVnaXN0ZXIoKHMpKTsgXAo+PiDCoMKgwqDCoMKgIH0gd2hpbGUg
KDApCj4+IMKgIEBAIC0xNDYsNyArMjEwLDggQEAgdm9pZCB1a19zY2hlZF9zdGFydChzdHJ1Y3Qg
dWtfc2NoZWQgKnNjaGVkKQo+PiBfX25vcmV0dXJuOwo+PiDCoMKgICovCj4+IMKgIMKgIHN0cnVj
dCB1a190aHJlYWQgKnVrX3NjaGVkX3RocmVhZF9jcmVhdGUoc3RydWN0IHVrX3NjaGVkICpzY2hl
ZCwKPj4gLcKgwqDCoMKgwqDCoMKgIGNvbnN0IGNoYXIgKm5hbWUsIHZvaWQgKCpmdW5jdGlvbiko
dm9pZCAqKSwgdm9pZCAqYXJnKTsKPj4gK8KgwqDCoMKgwqDCoMKgIGNvbnN0IGNoYXIgKm5hbWUs
IHN0cnVjdCB1a190aHJlYWRfYXR0ciAqYXR0ciwKPj4gK8KgwqDCoMKgwqDCoMKgIHZvaWQgKCpm
dW5jdGlvbikodm9pZCAqKSwgdm9pZCAqYXJnKTsKPj4gwqAgdm9pZCB1a19zY2hlZF90aHJlYWRf
ZGVzdHJveShzdHJ1Y3QgdWtfc2NoZWQgKnNjaGVkLAo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgc3Ry
dWN0IHVrX3RocmVhZCAqdGhyZWFkKTsKPj4gwqAgZGlmZiAtLWdpdCBhL2xpYi91a3NjaGVkL2lu
Y2x1ZGUvdWsvdGhyZWFkLmgKPj4gYi9saWIvdWtzY2hlZC9pbmNsdWRlL3VrL3RocmVhZC5oCj4+
IGluZGV4IGU2NmEwNWIuLjVmZjJkZDYgMTAwNjQ0Cj4+IC0tLSBhL2xpYi91a3NjaGVkL2luY2x1
ZGUvdWsvdGhyZWFkLmgKPj4gKysrIGIvbGliL3Vrc2NoZWQvaW5jbHVkZS91ay90aHJlYWQuaAo+
PiBAQCAtMzUsNiArMzUsNyBAQAo+PiDCoCAjaW5jbHVkZSA8dWsvYXJjaC9sY3B1Lmg+Cj4+IMKg
ICNpbmNsdWRlIDx1ay9hcmNoL3RpbWUuaD4KPj4gwqAgI2luY2x1ZGUgPHVrL3BsYXQvdGhyZWFk
Lmg+Cj4+ICsjaW5jbHVkZSA8dWsvdGhyZWFkX2F0dHIuaD4KPj4gwqAgI2luY2x1ZGUgPHVrL2xp
c3QuaD4KPj4gwqAgI2luY2x1ZGUgPHVrL2Vzc2VudGlhbHMuaD4KPj4gwqAgQEAgLTU5LDExICs2
MCwyMCBAQCBzdHJ1Y3QgdWtfdGhyZWFkIHsKPj4gwqAgwqAgVUtfVEFJTFFfSEVBRCh1a190aHJl
YWRfbGlzdCwgc3RydWN0IHVrX3RocmVhZCk7Cj4+IMKgICsjZGVmaW5lIHVrX3RocmVhZF9jcmVh
dGVfYXR0cihuYW1lLCBhdHRyLCBmdW5jdGlvbiwgZGF0YSkgXAo+PiArwqDCoMKgIHVrX3NjaGVk
X3RocmVhZF9jcmVhdGUodWtfc2NoZWRfZ2V0X2RlZmF1bHQoKSwgXAo+PiArwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoCBuYW1lLCBhdHRyLCBmdW5jdGlvbiwgZGF0YSkKPj4gwqAgI2RlZmluZSB1a190
aHJlYWRfY3JlYXRlKG5hbWUsIGZ1bmN0aW9uLCBkYXRhKSBcCj4+IC3CoMKgwqAgdWtfc2NoZWRf
dGhyZWFkX2NyZWF0ZSh1a19zY2hlZF9nZXRfZGVmYXVsdCgpLCBuYW1lLCBmdW5jdGlvbiwgZGF0
YSkKPj4gK8KgwqDCoCB1a190aHJlYWRfY3JlYXRlX2F0dHIobmFtZSwgTlVMTCwgZnVuY3Rpb24s
IGRhdGEpCj4+IMKgICNkZWZpbmUgdWtfdGhyZWFkX2Rlc3Ryb3kodGhyZWFkKSBcCj4+IMKgwqDC
oMKgwqAgdWtfc2NoZWRfdGhyZWFkX2Rlc3Ryb3kodGhyZWFkLT5zY2hlZCwgdGhyZWFkKQo+PiDC
oCAraW50IHVrX3RocmVhZF9zZXRfcHJpbyhzdHJ1Y3QgdWtfdGhyZWFkICp0aHJlYWQsIHByaW9f
dCBwcmlvKTsKPj4gK2ludCB1a190aHJlYWRfZ2V0X3ByaW8oY29uc3Qgc3RydWN0IHVrX3RocmVh
ZCAqdGhyZWFkLCBwcmlvX3QgKnByaW8pOwo+PiArCj4+ICtpbnQgdWtfdGhyZWFkX3NldF90aW1l
c2xpY2Uoc3RydWN0IHVrX3RocmVhZCAqdGhyZWFkLCBpbnQgdGltZXNsaWNlKTsKPj4gK2ludCB1
a190aHJlYWRfZ2V0X3RpbWVzbGljZShjb25zdCBzdHJ1Y3QgdWtfdGhyZWFkICp0aHJlYWQsIGlu
dAo+PiAqdGltZXNsaWNlKTsKPj4gKwo+PiDCoCBzdGF0aWMgaW5saW5lCj4+IMKgIHN0cnVjdCB1
a190aHJlYWQgKnVrX3RocmVhZF9jdXJyZW50KHZvaWQpCj4+IMKgIHsKPj4gZGlmZiAtLWdpdCBh
L2xpYi91a3NjaGVkL2luY2x1ZGUvdWsvdGhyZWFkX2F0dHIuaAo+PiBiL2xpYi91a3NjaGVkL2lu
Y2x1ZGUvdWsvdGhyZWFkX2F0dHIuaAo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAw
MDAwMDAwLi45M2RjZDVjCj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIvbGliL3Vrc2NoZWQvaW5j
bHVkZS91ay90aHJlYWRfYXR0ci5oCj4+IEBAIC0wLDAgKzEsODEgQEAKPj4gKy8qIFNQRFgtTGlj
ZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8KPj4gKy8qCj4+ICsgKiBBdXRob3JzOiBD
b3N0aW4gTHVwdSA8Y29zdGluLmx1cHVAY3MucHViLnJvPgo+PiArICoKPj4gKyAqIENvcHlyaWdo
dCAoYykgMjAxOSwgTkVDIEV1cm9wZSBMdGQuLCBORUMgQ29ycG9yYXRpb24uIEFsbCByaWdodHMK
Pj4gcmVzZXJ2ZWQuCj4+ICsgKgo+PiArICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cj4+ICsgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKPj4g
KyAqIGFyZSBtZXQ6Cj4+ICsgKgo+PiArICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKPj4gKyAqwqDCoMKgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KPj4g
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Cj4+ICsgKsKgwqDCoCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KPj4gdGhlCj4+ICsgKsKgwqDCoCBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKPj4g
ZGlzdHJpYnV0aW9uLgo+PiArICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0
IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cwo+PiArICrCoMKgwqAgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCj4+IGZyb20K
Pj4gKyAqwqDCoMKgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCj4+ICsgKgo+PiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5ECj4+IENPTlRSSUJVVE9SUyAiQVMgSVMiCj4+ICsgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRAo+PiBUTywgVEhFCj4+ICsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKPj4gUFVSUE9TRQo+PiArICogQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCj4+
IENPTlRSSUJVVE9SUyBCRQo+PiArICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgo+PiArICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKPj4g
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUgo+PiBCVVNJTkVTUwo+PiArICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksCj4+IFdIRVRIRVIgSU4KPj4gKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
Ugo+PiBPVEhFUldJU0UpCj4+ICsgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRgo+PiBBRFZJU0VEIE9GIFRIRQo+PiArICogUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCj4+ICsgKgo+PiArICogVEhJUyBIRUFERVIgTUFZIE5PVCBC
RSBFWFRSQUNURUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4KPj4gKyAqLwo+PiArCj4+ICsjaWZu
ZGVmIF9fVUtfU0NIRURfVEhSRUFEX0FUVFJfSF9fCj4+ICsjZGVmaW5lIF9fVUtfU0NIRURfVEhS
RUFEX0FUVFJfSF9fCj4+ICsKPj4gKyNpbmNsdWRlIDx1ay9hcmNoL3RpbWUuaD4KPj4gKwo+PiAr
I2lmZGVmIF9fY3BsdXNwbHVzCj4+ICtleHRlcm4gIkMiIHsKPj4gKyNlbmRpZgo+PiArCj4+ICsj
ZGVmaW5lIFVLX1RIUkVBRF9BVFRSX1dBSVRBQkxFwqDCoMKgwqDCoMKgwqDCoCAwCj4+ICsjZGVm
aW5lIFVLX1RIUkVBRF9BVFRSX0RFVEFDSEVEwqDCoMKgwqDCoMKgwqDCoCAxCj4+ICsKPj4gKyNk
ZWZpbmUgVUtfVEhSRUFEX0FUVFJfUFJJT19JTlZBTElEwqDCoMKgwqAgKC0xKQo+PiArI2RlZmlu
ZSBVS19USFJFQURfQVRUUl9QUklPX01JTsKgwqDCoMKgwqDCoMKgwqAgMAo+PiArI2RlZmluZSBV
S19USFJFQURfQVRUUl9QUklPX01BWMKgwqDCoMKgwqDCoMKgwqAgMjU1Cj4+ICsjZGVmaW5lIFVL
X1RIUkVBRF9BVFRSX1BSSU9fREVGQVVMVMKgwqDCoMKgIDEyNwo+PiArCj4+ICsjZGVmaW5lIFVL
X1RIUkVBRF9BVFRSX1RJTUVTTElDRV9OSUzCoMKgwqAgMAo+PiArCj4+ICt0eXBlZGVmIGludCBw
cmlvX3Q7Cj4+ICsKPj4gK3R5cGVkZWYgc3RydWN0IHVrX3RocmVhZF9hdHRyIHsKPj4gK8KgwqDC
oCAvKio8IElzIG5vbi16ZXJvIGlmIHRocmVhZCBzaG91bGQgZGV0YWNoICovCj4+ICvCoMKgwqAg
aW50IGlzX2RldGFjaGVkOwo+PiArwqDCoMKgIC8qKjwgUHJpb3JpdHkgKi8KPj4gK8KgwqDCoCBw
cmlvX3QgcHJpbzsKPj4gK8KgwqDCoCAvKio8IFRpbWUgc2xpY2UgaW4gbmFub3NlY29uZHMgKi8K
Pj4gK8KgwqDCoCBfX25zZWMgdGltZXNsaWNlOwo+PiArfSB1a190aHJlYWRfYXR0cl90Owo+PiAr
Cj4+ICtpbnQgdWtfdGhyZWFkX2F0dHJfaW5pdCh1a190aHJlYWRfYXR0cl90ICphdHRyKTsKPj4g
K2ludCB1a190aHJlYWRfYXR0cl9maW5pKHVrX3RocmVhZF9hdHRyX3QgKmF0dHIpOwo+PiArCj4+
ICtpbnQgdWtfdGhyZWFkX2F0dHJfc2V0X2RldGFjaHN0YXRlKHVrX3RocmVhZF9hdHRyX3QgKmF0
dHIsIGludCBzdGF0ZSk7Cj4+ICtpbnQgdWtfdGhyZWFkX2F0dHJfZ2V0X2RldGFjaHN0YXRlKGNv
bnN0IHVrX3RocmVhZF9hdHRyX3QgKmF0dHIsIGludAo+PiAqc3RhdGUpOwo+PiArCj4+ICtpbnQg
dWtfdGhyZWFkX2F0dHJfc2V0X3ByaW8odWtfdGhyZWFkX2F0dHJfdCAqYXR0ciwgcHJpb190IHBy
aW8pOwo+PiAraW50IHVrX3RocmVhZF9hdHRyX2dldF9wcmlvKGNvbnN0IHVrX3RocmVhZF9hdHRy
X3QgKmF0dHIsIHByaW9fdCAqcHJpbyk7Cj4+ICsKPj4gK2ludCB1a190aHJlYWRfYXR0cl9zZXRf
dGltZXNsaWNlKHVrX3RocmVhZF9hdHRyX3QgKmF0dHIsIF9fbnNlYwo+PiB0aW1lc2xpY2UpOwo+
PiAraW50IHVrX3RocmVhZF9hdHRyX2dldF90aW1lc2xpY2UoY29uc3QgdWtfdGhyZWFkX2F0dHJf
dCAqYXR0ciwgX19uc2VjCj4+ICp0aW1lc2xpY2UpOwo+PiArCj4+ICsjaWZkZWYgX19jcGx1c3Bs
dXMKPj4gK30KPj4gKyNlbmRpZgo+PiArCj4+ICsjZW5kaWYgLyogX19VS19TQ0hFRF9USFJFQURf
QVRUUl9IX18gKi8KPj4gZGlmZiAtLWdpdCBhL2xpYi91a3NjaGVkL3NjaGVkLmMgYi9saWIvdWtz
Y2hlZC9zY2hlZC5jCj4+IGluZGV4IGMzYmUyMDYuLmU4NTUyOTggMTAwNjQ0Cj4+IC0tLSBhL2xp
Yi91a3NjaGVkL3NjaGVkLmMKPj4gKysrIGIvbGliL3Vrc2NoZWQvc2NoZWQuYwo+PiBAQCAtMTcw
LDcgKzE3MCw4IEBAIHZvaWQgdWtfc2NoZWRfaWRsZV9pbml0KHN0cnVjdCB1a19zY2hlZCAqc2No
ZWQsCj4+IMKgIH0KPj4gwqAgwqAgc3RydWN0IHVrX3RocmVhZCAqdWtfc2NoZWRfdGhyZWFkX2Ny
ZWF0ZShzdHJ1Y3QgdWtfc2NoZWQgKnNjaGVkLAo+PiAtwqDCoMKgwqDCoMKgwqAgY29uc3QgY2hh
ciAqbmFtZSwgdm9pZCAoKmZ1bmN0aW9uKSh2b2lkICopLCB2b2lkICphcmcpCj4+ICvCoMKgwqDC
oMKgwqDCoCBjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3QgdWtfdGhyZWFkX2F0dHIgKmF0dHIsCj4+
ICvCoMKgwqDCoMKgwqDCoCB2b2lkICgqZnVuY3Rpb24pKHZvaWQgKiksIHZvaWQgKmFyZykKPj4g
wqAgewo+PiDCoMKgwqDCoMKgIHN0cnVjdCB1a190aHJlYWQgKnRocmVhZCA9IE5VTEw7Cj4+IMKg
wqDCoMKgwqAgdm9pZCAqc3RhY2sgPSBOVUxMOwo+PiBAQCAtMTk1LDcgKzE5Niw3IEBAIHN0cnVj
dCB1a190aHJlYWQgKnVrX3NjaGVkX3RocmVhZF9jcmVhdGUoc3RydWN0Cj4+IHVrX3NjaGVkICpz
Y2hlZCwKPj4gwqDCoMKgwqDCoCBpZiAocmMpCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIGVy
cjsKPj4gwqAgLcKgwqDCoCB1a19zY2hlZF90aHJlYWRfYWRkKHNjaGVkLCB0aHJlYWQpOwo+PiAr
wqDCoMKgIHVrX3NjaGVkX3RocmVhZF9hZGQoc2NoZWQsIHRocmVhZCwgYXR0cik7Cj4+IMKgIMKg
wqDCoMKgwqAgcmV0dXJuIHRocmVhZDsKPj4gwqAgZGlmZiAtLWdpdCBhL2xpYi91a3NjaGVkL3Ro
cmVhZC5jIGIvbGliL3Vrc2NoZWQvdGhyZWFkLmMKPj4gaW5kZXggMTIzNmI5OS4uOWQwNjU1MiAx
MDA2NDQKPj4gLS0tIGEvbGliL3Vrc2NoZWQvdGhyZWFkLmMKPj4gKysrIGIvbGliL3Vrc2NoZWQv
dGhyZWFkLmMKPj4gQEAgLTMwLDkgKzMwLDExIEBACj4+IMKgwqAgKiBQb3J0ZWQgZnJvbSBNaW5p
LU9TCj4+IMKgwqAgKi8KPj4gwqAgI2luY2x1ZGUgPHN0ZGxpYi5oPgo+PiArI2luY2x1ZGUgPGVy
cm5vLmg+Cj4+IMKgICNpbmNsdWRlIDx1ay9wbGF0L2NvbmZpZy5oPgo+PiDCoCAjaW5jbHVkZSA8
dWsvcGxhdC90aW1lLmg+Cj4+IMKgICNpbmNsdWRlIDx1ay90aHJlYWQuaD4KPj4gKyNpbmNsdWRl
IDx1ay9zY2hlZC5oPgo+PiDCoCAjaW5jbHVkZSA8dWsvcHJpbnQuaD4KPj4gwqAgI2luY2x1ZGUg
PHVrL2Fzc2VydC5oPgo+PiDCoCBAQCAtMTI3LDMgKzEyOSwzNSBAQCB2b2lkIHVrX3RocmVhZF93
YWtlKHN0cnVjdCB1a190aHJlYWQgKnRocmVhZCkKPj4gwqDCoMKgwqDCoCB0aHJlYWQtPndha2V1
cF90aW1lID0gMExMOwo+PiDCoMKgwqDCoMKgIHNldF9ydW5uYWJsZSh0aHJlYWQpOwo+PiDCoCB9
Cj4+ICsKPj4gK2ludCB1a190aHJlYWRfc2V0X3ByaW8oc3RydWN0IHVrX3RocmVhZCAqdGhyZWFk
LCBwcmlvX3QgcHJpbykKPj4gK3sKPj4gK8KgwqDCoCBpZiAoIXRocmVhZCkKPj4gK8KgwqDCoMKg
wqDCoMKgIHJldHVybiAtRUlOVkFMOwo+PiArCj4+ICvCoMKgwqAgcmV0dXJuIHVrX3NjaGVkX3Ro
cmVhZF9zZXRfcHJpbyh0aHJlYWQtPnNjaGVkLCB0aHJlYWQsIHByaW8pOwo+PiArfQo+PiArCj4+
ICtpbnQgdWtfdGhyZWFkX2dldF9wcmlvKGNvbnN0IHN0cnVjdCB1a190aHJlYWQgKnRocmVhZCwg
cHJpb190ICpwcmlvKQo+PiArewo+PiArwqDCoMKgIGlmICghdGhyZWFkKQo+PiArwqDCoMKgwqDC
oMKgwqAgcmV0dXJuIC1FSU5WQUw7Cj4+ICsKPj4gK8KgwqDCoCByZXR1cm4gdWtfc2NoZWRfdGhy
ZWFkX2dldF9wcmlvKHRocmVhZC0+c2NoZWQsIHRocmVhZCwgcHJpbyk7Cj4+ICt9Cj4+ICsKPj4g
K2ludCB1a190aHJlYWRfc2V0X3RpbWVzbGljZShzdHJ1Y3QgdWtfdGhyZWFkICp0aHJlYWQsIGlu
dCB0aW1lc2xpY2UpCj4+ICt7Cj4+ICvCoMKgwqAgaWYgKCF0aHJlYWQpCj4+ICvCoMKgwqDCoMKg
wqDCoCByZXR1cm4gLUVJTlZBTDsKPj4gKwo+PiArwqDCoMKgIHJldHVybiB1a19zY2hlZF90aHJl
YWRfc2V0X3RpbWVzbGljZSh0aHJlYWQtPnNjaGVkLCB0aHJlYWQsCj4+IHRpbWVzbGljZSk7Cj4+
ICt9Cj4+ICsKPj4gK2ludCB1a190aHJlYWRfZ2V0X3RpbWVzbGljZShjb25zdCBzdHJ1Y3QgdWtf
dGhyZWFkICp0aHJlYWQsIGludAo+PiAqdGltZXNsaWNlKQo+PiArewo+PiArwqDCoMKgIGlmICgh
dGhyZWFkKQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FSU5WQUw7Cj4+ICsKPj4gK8KgwqDC
oCByZXR1cm4gdWtfc2NoZWRfdGhyZWFkX2dldF90aW1lc2xpY2UodGhyZWFkLT5zY2hlZCwgdGhy
ZWFkLAo+PiB0aW1lc2xpY2UpOwo+PiArfQo+PiBkaWZmIC0tZ2l0IGEvbGliL3Vrc2NoZWQvdGhy
ZWFkX2F0dHIuYyBiL2xpYi91a3NjaGVkL3RocmVhZF9hdHRyLmMKPj4gbmV3IGZpbGUgbW9kZSAx
MDA2NDQKPj4gaW5kZXggMDAwMDAwMC4uNzM4NDVlYwo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBi
L2xpYi91a3NjaGVkL3RocmVhZF9hdHRyLmMKPj4gQEAgLTAsMCArMSwxMzkgQEAKPj4gKy8qIFNQ
RFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8KPj4gKy8qCj4+ICsgKiBBdXRo
b3JzOiBDb3N0aW4gTHVwdSA8Y29zdGluLmx1cHVAY3MucHViLnJvPgo+PiArICoKPj4gKyAqIENv
cHlyaWdodCAoYykgMjAxOSwgTkVDIEV1cm9wZSBMdGQuLCBORUMgQ29ycG9yYXRpb24uIEFsbCBy
aWdodHMKPj4gcmVzZXJ2ZWQuCj4+ICsgKgo+PiArICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cj4+ICsgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKPj4gKyAqIGFyZSBtZXQ6Cj4+ICsgKgo+PiArICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKPj4gKyAqwqDCoMKgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KPj4gKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Cj4+ICsgKsKgwqDCoCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KPj4gdGhlCj4+ICsgKsKg
wqDCoCBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKPj4gZGlzdHJpYnV0aW9uLgo+PiArICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29w
eXJpZ2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cwo+PiArICrCoMKgwqAgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCj4+
IGZyb20KPj4gKyAqwqDCoMKgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCj4+ICsgKgo+PiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5ECj4+IENPTlRSSUJVVE9SUyAiQVMgSVMiCj4+
ICsgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRAo+PiBUTywgVEhFCj4+ICsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKPj4gUFVSUE9TRQo+PiAr
ICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVS
IE9SCj4+IENPTlRSSUJVVE9SUyBCRQo+PiArICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgo+PiArICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKPj4gKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUgo+PiBCVVNJTkVTUwo+PiArICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksCj4+IFdIRVRIRVIgSU4KPj4g
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUgo+PiBPVEhFUldJU0UpCj4+ICsgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRgo+PiBBRFZJU0VEIE9GIFRIRQo+PiArICog
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCj4+ICsgKgo+PiArICogVEhJUyBIRUFERVIgTUFZ
IE5PVCBCRSBFWFRSQUNURUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4KPj4gKyAqLwo+PiArCj4+
ICsjaW5jbHVkZSA8c3RkbGliLmg+Cj4+ICsjaW5jbHVkZSA8ZXJybm8uaD4KPj4gKyNpbmNsdWRl
IDx1ay9wbGF0L3RpbWUuaD4KPj4gKyNpbmNsdWRlIDx1ay90aHJlYWRfYXR0ci5oPgo+PiArI2lu
Y2x1ZGUgPHVrL2Fzc2VydC5oPgo+PiArCj4+ICsKPj4gK2ludCB1a190aHJlYWRfYXR0cl9pbml0
KHVrX3RocmVhZF9hdHRyX3QgKmF0dHIpCj4+ICt7Cj4+ICvCoMKgwqAgaWYgKGF0dHIgPT0gTlVM
TCkKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAtRUlOVkFMOwo+PiArCj4+ICvCoMKgwqAgYXR0
ci0+aXNfZGV0YWNoZWQgPSAwOwo+PiArwqDCoMKgIGF0dHItPnByaW8gPSBVS19USFJFQURfQVRU
Ul9QUklPX0lOVkFMSUQ7Cj4+ICvCoMKgwqAgYXR0ci0+dGltZXNsaWNlID0gVUtfVEhSRUFEX0FU
VFJfVElNRVNMSUNFX05JTDsKPj4gKwo+PiArwqDCoMKgIHJldHVybiAwOwo+PiArfQo+PiArCj4+
ICtpbnQgdWtfdGhyZWFkX2F0dHJfZmluaSh1a190aHJlYWRfYXR0cl90ICphdHRyKQo+PiArewo+
PiArwqDCoMKgIGlmIChhdHRyID09IE5VTEwpCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVJ
TlZBTDsKPj4gKwo+PiArwqDCoMKgIHJldHVybiAwOwo+PiArfQo+PiArCj4+ICtpbnQgdWtfdGhy
ZWFkX2F0dHJfc2V0X2RldGFjaHN0YXRlKHVrX3RocmVhZF9hdHRyX3QgKmF0dHIsIGludCBzdGF0
ZSkKPj4gK3sKPj4gK8KgwqDCoCBpZiAoYXR0ciA9PSBOVUxMKQo+PiArwqDCoMKgwqDCoMKgwqAg
cmV0dXJuIC1FSU5WQUw7Cj4+ICsKPj4gK8KgwqDCoCBpZiAoc3RhdGUgPT0gVUtfVEhSRUFEX0FU
VFJfREVUQUNIRUQpCj4+ICvCoMKgwqDCoMKgwqDCoCBhdHRyLT5pc19kZXRhY2hlZCA9IDE7Cj4+
ICsKPj4gK8KgwqDCoCBlbHNlIGlmIChzdGF0ZSA9PSBVS19USFJFQURfQVRUUl9XQUlUQUJMRSkK
Pj4gK8KgwqDCoMKgwqDCoMKgIGF0dHItPmlzX2RldGFjaGVkID0gMDsKPj4gKwo+PiArwqDCoMKg
IGVsc2UKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAtRUlOVkFMOwo+PiArCj4+ICvCoMKgwqAg
cmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK2ludCB1a190aHJlYWRfYXR0cl9nZXRfZGV0YWNoc3Rh
dGUoY29uc3QgdWtfdGhyZWFkX2F0dHJfdCAqYXR0ciwgaW50Cj4+ICpzdGF0ZSkKPj4gK3sKPj4g
K8KgwqDCoCBpZiAoYXR0ciA9PSBOVUxMIHx8IHN0YXRlID09IE5VTEwpCj4+ICvCoMKgwqDCoMKg
wqDCoCByZXR1cm4gLUVJTlZBTDsKPj4gKwo+PiArwqDCoMKgIGlmIChhdHRyLT5pc19kZXRhY2hl
ZCkKPj4gK8KgwqDCoMKgwqDCoMKgICpzdGF0ZSA9IFVLX1RIUkVBRF9BVFRSX0RFVEFDSEVEOwo+
PiArwqDCoMKgIGVsc2UKPj4gK8KgwqDCoMKgwqDCoMKgICpzdGF0ZSA9IFVLX1RIUkVBRF9BVFRS
X1dBSVRBQkxFOwo+PiArCj4+ICvCoMKgwqAgcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK2ludCB1
a190aHJlYWRfYXR0cl9zZXRfcHJpbyh1a190aHJlYWRfYXR0cl90ICphdHRyLCBwcmlvX3QgcHJp
bykKPj4gK3sKPj4gK8KgwqDCoCBpbnQgcmMgPSAtRUlOVkFMOwo+PiArCj4+ICvCoMKgwqAgaWYg
KGF0dHIgPT0gTlVMTCkKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiByYzsKPj4gKwo+PiArwqDC
oMKgIGlmIChwcmlvID49IFVLX1RIUkVBRF9BVFRSX1BSSU9fTUlOICYmCj4+ICvCoMKgwqDCoMKg
wqDCoCBwcmlvIDw9IFVLX1RIUkVBRF9BVFRSX1BSSU9fTUFYKSB7Cj4+ICvCoMKgwqDCoMKgwqDC
oCBhdHRyLT5wcmlvID0gcHJpbzsKPj4gK8KgwqDCoMKgwqDCoMKgIHJjID0gMDsKPj4gK8KgwqDC
oCB9Cj4+ICsKPj4gK8KgwqDCoCByZXR1cm4gcmM7Cj4+ICt9Cj4+ICsKPj4gK2ludCB1a190aHJl
YWRfYXR0cl9nZXRfcHJpbyhjb25zdCB1a190aHJlYWRfYXR0cl90ICphdHRyLCBwcmlvX3QgKnBy
aW8pCj4+ICt7Cj4+ICvCoMKgwqAgaWYgKGF0dHIgPT0gTlVMTCB8fCBwcmlvID09IE5VTEwpCj4+
ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVJTlZBTDsKPj4gKwo+PiArwqDCoMKgICpwcmlvID0g
YXR0ci0+cHJpbzsKPj4gKwo+PiArwqDCoMKgIHJldHVybiAwOwo+PiArfQo+PiArCj4+ICtpbnQg
dWtfdGhyZWFkX2F0dHJfc2V0X3RpbWVzbGljZSh1a190aHJlYWRfYXR0cl90ICphdHRyLCBfX25z
ZWMKPj4gdGltZXNsaWNlKQo+PiArewo+PiArwqDCoMKgIGlmIChhdHRyID09IE5VTEwpCj4+ICvC
oMKgwqDCoMKgwqDCoCByZXR1cm4gLUVJTlZBTDsKPj4gKwo+PiArwqDCoMKgIGlmICh0aW1lc2xp
Y2UgPCBVS1BMQVRfVElNRV9USUNLX05TRUMpCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVJ
TlZBTDsKPj4gKwo+PiArwqDCoMKgIGF0dHItPnRpbWVzbGljZSA9IHRpbWVzbGljZTsKPj4gKwo+
PiArwqDCoMKgIHJldHVybiAwOwo+PiArfQo+PiArCj4+ICtpbnQgdWtfdGhyZWFkX2F0dHJfZ2V0
X3RpbWVzbGljZShjb25zdCB1a190aHJlYWRfYXR0cl90ICphdHRyLCBfX25zZWMKPj4gKnRpbWVz
bGljZSkKPj4gK3sKPj4gK8KgwqDCoCBpZiAoYXR0ciA9PSBOVUxMIHx8IHRpbWVzbGljZSA9PSBO
VUxMKQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FSU5WQUw7Cj4+ICsKPj4gK8KgwqDCoCAq
dGltZXNsaWNlID0gYXR0ci0+dGltZXNsaWNlOwo+PiArCj4+ICvCoMKgwqAgcmV0dXJuIDA7Cj4+
ICt9Cj4+IGRpZmYgLS1naXQgYS9saWIvdWtzY2hlZGNvb3Avc2NoZWRjb29wLmMgYi9saWIvdWtz
Y2hlZGNvb3Avc2NoZWRjb29wLmMKPj4gaW5kZXggM2UzYTkyZi4uOTdjMGQ3YyAxMDA2NDQKPj4g
LS0tIGEvbGliL3Vrc2NoZWRjb29wL3NjaGVkY29vcC5jCj4+ICsrKyBiL2xpYi91a3NjaGVkY29v
cC9zY2hlZGNvb3AuYwo+PiBAQCAtMTMyLDcgKzEzMiw4IEBAIHN0YXRpYyB2b2lkIHNjaGVkY29v
cF9zY2hlZHVsZShzdHJ1Y3QgdWtfc2NoZWQgKnMpCj4+IMKgwqDCoMKgwqAgfQo+PiDCoCB9Cj4+
IMKgIC1zdGF0aWMgdm9pZCBzY2hlZGNvb3BfdGhyZWFkX2FkZChzdHJ1Y3QgdWtfc2NoZWQgKnMs
IHN0cnVjdAo+PiB1a190aHJlYWQgKnQpCj4+ICtzdGF0aWMgdm9pZCBzY2hlZGNvb3BfdGhyZWFk
X2FkZChzdHJ1Y3QgdWtfc2NoZWQgKnMsIHN0cnVjdCB1a190aHJlYWQKPj4gKnQsCj4+ICvCoMKg
wqDCoMKgwqDCoCBzdHJ1Y3QgdWtfdGhyZWFkX2F0dHIgKmF0dHIpCj4+IMKgIHsKPj4gwqDCoMKg
wqDCoCB1bnNpZ25lZCBsb25nIGZsYWdzOwo+PiDCoMKgwqDCoMKgIHN0cnVjdCBzY2hlZGNvb3Bf
cHJpdmF0ZSAqcHJ2ID0gcy0+cHJ2Owo+PiBAQCAtMjEwLDcgKzIxMSw4IEBAIHN0cnVjdCB1a19z
Y2hlZCAqdWtfc2NoZWRjb29wX2luaXQoc3RydWN0IHVrX2FsbG9jCj4+ICphKQo+PiDCoMKgwqDC
oMKgIHVrX3NjaGVkX2luaXQoc2NoZWQsCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNj
aGVkY29vcF95aWVsZCwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc2NoZWRjb29wX3Ro
cmVhZF9hZGQsCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNjaGVkY29vcF90aHJlYWRfcmVt
b3ZlKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc2NoZWRjb29wX3RocmVhZF9yZW1vdmUs
Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwpOwo+PiDC
oCDCoMKgwqDCoMKgIHJldHVybiBzY2hlZDsKPj4gwqAgfQo+Pgo+IAoKX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlz
dApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9q
ZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Thu Feb 21 10:12:05 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 21 Feb 2019 10:12:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gwlKm-0004kF-NW; Thu, 21 Feb 2019 10:12:04 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=mQ+E=Q4=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1gwlKl-0004k5-0c
 for minios-devel@lists.xen.org; Thu, 21 Feb 2019 10:12:03 +0000
X-Inumbo-ID: 2148c22b-35c1-11e9-bc90-bc764e045a96
Received: from mail-wm1-x341.google.com (unknown [2a00:1450:4864:20::341])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 2148c22b-35c1-11e9-bc90-bc764e045a96;
 Thu, 21 Feb 2019 10:12:02 +0000 (UTC)
Received: by mail-wm1-x341.google.com with SMTP id h22so6691775wmb.0
 for <minios-devel@lists.xen.org>; Thu, 21 Feb 2019 02:12:02 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=8qCTHYtR90EnBm9hJJpFVEmAy9MO5UDhe/IBs0scQfw=;
 b=qHLbME0wheCusm430WS/MHzwWc8/V0nN86yQ1DEmzjDZoXgdJkgTLgijgVbwE65P3J
 ybfkD+WGeMk8cVwTlKrz9NyqOJknnM59mrHop2QB2g7V2II2inbQrwi4zsiShtUkSaV9
 ljqgs4gQch1iKewX+Zx/EcHlECGKn2qBNu1h6NPaKupAZJAagg+D3JXrgyczq4UUIift
 /qyI9prijsboyYtfoNqQSQOI66Hb1ZnQ++ApxWzWaPFvOEm/NOCxCWNBQD2d+5g0tiRv
 IkSqleUGILEv58Amn79alzv09YM7ZlwuIJX5fHxnWC8ozoeAvKnX5R34tT+8PzXj6ZNG
 0LBQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=8qCTHYtR90EnBm9hJJpFVEmAy9MO5UDhe/IBs0scQfw=;
 b=KmynJVg2wS5fD+RXyisHud73Joa6EMXmcyGWGAaMrzhrnpU7nMzdhv8vBuyR1OFyS7
 t1O3R1sjjHTM44jMLsR0gaTa3TMWBSlbEC21q3nqjt/ICaewePmfclY+Fa+IWu5omZKO
 iSn6NATp0e1gm6l9HF1AIGUd0nW449qCuiuznTsim5o26YluNNWl+FPmVOKVGUARXXs1
 Z55ngQ+ejkftK4OllxsABM65eWeIDIy/sFpOg5Aco49+wVkZKltj1qXDFCoWeczvq1sk
 IliOV0hq/9nr5nnGFy8YVm7BmRKQZepKZG4DdoIfYq1xFT7UwjXIZu2MWCKncB8p9GVf
 G8Lg==
X-Gm-Message-State: AHQUAub+tVrYlRog7xSmvdoVMXwZxtW7+nu2LnTP2aMIi50YxoZ0w5Db
 8xrGzmqtTEqtcfC3jXMu44E=
X-Google-Smtp-Source: AHgI3IaEsefjTcsoR+Bo6hrEG6QZVIJCyMKKaeFfDXOvVN0/GHuIxifpUik2sGFy8mGveYJwQ0YOCw==
X-Received: by 2002:a1c:20d0:: with SMTP id g199mr9783459wmg.111.1550743920955; 
 Thu, 21 Feb 2019 02:12:00 -0800 (PST)
Received: from [172.19.2.117] ([141.85.233.142])
 by smtp.gmail.com with ESMTPSA id m16sm16650617wro.78.2019.02.21.02.12.00
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Thu, 21 Feb 2019 02:12:00 -0800 (PST)
To: Florian Schmidt <Florian.Schmidt@neclab.eu>, minios-devel@lists.xen.org
References: <20190110152212.14518-1-costin.lupu@cs.pub.ro>
 <20190110152212.14518-6-costin.lupu@cs.pub.ro>
 <a622ac6c-6111-74a0-8200-6a5d49a6be42@neclab.eu>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <5a77912a-6b07-e679-7568-95108ea313ac@gmail.com>
Date: Thu, 21 Feb 2019 12:11:59 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.5.1
MIME-Version: 1.0
In-Reply-To: <a622ac6c-6111-74a0-8200-6a5d49a6be42@neclab.eu>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 5/8] lib/uksched: Add support
 for waiting threads
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: felipe.huici@neclab.eu, simon.kuenzer@neclab.eu, yuri.volchkov@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

T24gMS8yMy8xOSAxMDo0OSBBTSwgRmxvcmlhbiBTY2htaWR0IHdyb3RlOgo+IEhpIENvc3RpbiwK
PiAKPiBPbiAxLzExLzE5IDEyOjIyIEFNLCBDb3N0aW4gTHVwdSB3cm90ZToKPj4gU2ltaWxhciB0
byB3YWl0aW5nIHByb2Nlc3Nlcywgd2UgaW50cm9kdWNlIHN1cHBvcnQgZm9yIHdhaXRpbmcKPj4g
dGhyZWFkcy4gVGhpcyBpcyB0aGUgY29udmVudGlvbmFsIHdheSBvZiBnZXR0aW5nIG5vdGlmaWVk
IGJ5Cj4+IHRocmVhZCB0ZXJtaW5hdGlvbiBldmVudHMgYW5kIGZyZWVpbmcgdGhyZWFkcyByZXNv
dXJjZXMgdXBvbgo+PiBleGl0Lgo+IAo+IEEgdHlwbyBzbGlwcGVkIHRocm91Z2ggaGVyZTogaXQg
c2hvdWxkIGJlICJmcmVlaW5nIHRocmVhZCByZXNvdXJjZXMiCj4gaW5zdGVhZCBvZiAiZnJlZWlu
ZyB0aHJlYWRzIHJlc291cmNlcyIuCgpBY2suCgo+IAo+IE90aGVyd2lzZSB0aGlzIGlzIGZpbmUu
CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3Mt
ZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRw
czovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Thu Feb 21 10:57:14 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 21 Feb 2019 10:57:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gwm2S-0008GY-Q6; Thu, 21 Feb 2019 10:57:12 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=GXzC=Q4=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1gwm2R-0008GT-5y
 for minios-devel@lists.xen.org; Thu, 21 Feb 2019 10:57:11 +0000
X-Inumbo-ID: 6dc7b0d3-35c7-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 6dc7b0d3-35c7-11e9-bc90-bc764e045a96;
 Thu, 21 Feb 2019 10:57:07 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 8039F104E2A;
 Thu, 21 Feb 2019 11:57:06 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id gxc1lrSfBe7W; Thu, 21 Feb 2019 11:57:06 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 4C5AF104E26;
 Thu, 21 Feb 2019 11:57:02 +0100 (CET)
Received: from [10.1.2.30] (10.1.2.30) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Thu, 21 Feb 2019 11:56:59
 +0100
To: Costin Lupu <costin.lup@gmail.com>, <minios-devel@lists.xen.org>, Sharan
 Santhanam <sharan.santhanam@neclab.eu>
References: <20190110152212.14518-1-costin.lupu@cs.pub.ro>
 <20190110152212.14518-4-costin.lupu@cs.pub.ro>
 <1bdca0af-640a-f664-437f-d0d7ff4d1677@neclab.eu>
 <cc2e5818-9783-28a0-a1a8-55466b986516@gmail.com>
From: Florian Schmidt <Florian.Schmidt@neclab.eu>
Message-ID: <2914f4e5-9d20-2f2c-c1c8-f34abd10094c@neclab.eu>
Date: Thu, 21 Feb 2019 11:56:59 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <cc2e5818-9783-28a0-a1a8-55466b986516@gmail.com>
Content-Language: en-US
X-Originating-IP: [10.1.2.30]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 3/8] lib/uksched: Introduce
 thread attributes
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: felipe.huici@neclab.eu, simon.kuenzer@neclab.eu, yuri.volchkov@neclab.eu
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGkgQ29zdGluLAoKZ3JlYXQsIHRoYW5rcywgc291bmRzIGdvb2QuCgpDaGVlcnMsCkZsb3JpYW4K
Ck9uIDIvMjEvMTkgMTE6MTEgQU0sIENvc3RpbiBMdXB1IHdyb3RlOgo+IFVwZGF0ZWQgdGhlIHVr
X3NjaGVkX3RocmVhZF9jcmVhdGUgY2FsbCBpbiB2My4KPiAKPiBDb3N0aW4KPiAKPiBPbiAxLzIz
LzE5IDQ6NTggUE0sIEZsb3JpYW4gU2NobWlkdCB3cm90ZToKPj4gQWgsIG9uZSBtb3JlIHRoaW5n
IGFib3V0IHRoaXMgcGF0Y2g6IFlvdSBjaGFuZ2UgdGhlIHNpZ25hdHVyZSBvZgo+PiB1a19zY2hl
ZF90aHJlYWRfY3JlYXRlIGhlcmUsIGFuZCB0aGVyZSBpcyBhIGNhbGwgaW4KPj4gbGliL3VrbmV0
ZGV2L25ldGRldi5jOjI5MiB0aGF0IHVzZXMgdGhlIG9sZCBzaWduYXR1cmUsIHNvIHRoaXMgc2hv
dWxkCj4+IHByb2JhYmx5IGJlIGNoYW5nZWQganVzdCBieSBhZGRpbmcgTlVMTCBmb3IgdGhlIGF0
dHJpYnV0ZXMuCj4+Cj4+IEFsdGVybmF0aXZlbHksIHRoaXMgY291bGQgYmUgY2hhbmdlZCBzbyB0
aGF0IHRoZSBjb2RlIHVzZXMKPj4gdWtfdGhyZWFkX2NyZWF0ZSBpbnN0ZWFkLCBidXQgdGhpcyB3
b3VsZCBwcm9iYWJseSByZXF1aXJlIGEgYml0IG1vcmUKPj4gcmVmYWN0b3JpbmcgKGZvciBleGFt
cGxlLCByeF9jb25mIG1pZ2h0IG5vdCBldmVuIG5lZWQgdG8gY29udGFpbiB0aGUKPj4gc2NoZWR1
bGVyIGFueSBtb3JlIGJlY2F1c2UgaXQgY291bGQganVzdCBhbHdheXMgdXNlIHRoZSBkZWZhdWx0
Cj4+IHNjaGVkdWxlcj8pIEJ1dCB0aGF0J3MgbWF5YmUgbW9yZSBmb3IgU2hhcmFuIGFzIHRoZSBv
cmlnaW5hbCBhdXRob3Igb2YKPj4gdGhhdCBjb2RlIHRvIGxvb2sgaW50by4KPj4KPj4gQ2hlZXJz
LAo+PiBGbG9yaWFuCj4+Cj4+Cj4+IE9uIDEvMTEvMTkgMTI6MjIgQU0sIENvc3RpbiBMdXB1IHdy
b3RlOgo+Pj4gV2UgaW50cm9kdWNlIGEgdGhyZWFkIGF0dHJpYnV0ZXMgYWJzdHJhY3Rpb24gd2hp
Y2ggaXMgdXNlZCBmb3IKPj4+IGNvbmZpZ3VyaW5nIHRocmVhZCBiZWhhdmlvci4gVGhlIHNldCBv
ZiBjdXJyZW50bHkgYXZhaWxhYmxlCj4+PiBhdHRyaWJ1dGVzIHdhcyBpbnNwaXJlZCBmcm9tIHRo
ZSBwdGhyZWFkIGludGVyZmFjZS4KPj4+Cj4+PiBUaHJlYWQgYXR0cmlidXRlcyBjYW4gYmUgc2V0
IGVpdGhlciB3aGVuIGNyZWF0aW5nIHRoZSB0aHJlYWRzIG9yCj4+PiBkdXJpbmcgdGhyZWFkIGV4
ZWN1dGlvbiBieSBjYWxsaW5nIHRoZSBjb3JyZXNwb25kaW5nIHNldHRlcnMuIElmCj4+PiBhbiBh
dHRyaWJ1dGUgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgdW5kZXJseWluZyBzY2hlZHVsZXIgdGhl
bgo+Pj4gLUVJTlZBTCBpcyByZXR1cm5lZCBieSBzZXR0ZXJzLgo+Pj4KPj4+IFRoZSBkZXRhY2gg
YXR0cmlidXRlIGlzIGNvbW1vbiB0byBhbGwgdGhyZWFkcywgcmVnYXJkbGVzcyBvZiB0aGUKPj4+
IHNjaGVkdWxpbmcgcG9saWN5LCBhbmQgaWYgc2V0IGl0IG1lYW5zIHRoYXQgdGhlIHRocmVhZCBy
ZXNvdXJjZXMKPj4+IHdpbGwgYmUgYXV0b21hdGljYWxseSBmcmVlZCBvbiB0aHJlYWQgZXhpdC4g
QnkgZGVmYXVsdCwgdGhyZWFkcwo+Pj4gYXJlIG5vdCBkZXRhY2hlZC4gVGhlIGNvbXBsZXRlIGRl
dGFjaCBzdXBwb3J0IHdpbGwgYmUgYWRkZWQgaW4gYQo+Pj4gZm9sbG93aW5nIGNvbW1pdC4KPj4+
Cj4+PiBUaW1lIHNsaWNlIGFuZCBwcmlvcml0eSBtYWtlIHNlbnNlIG9ubHkgZm9yIHByZWVtcHRp
dmUgc2NoZWR1bGVycy4KPj4+Cj4+PiBTaWduZWQtb2ZmLWJ5OiBDb3N0aW4gTHVwdSA8Y29zdGlu
Lmx1cHVAY3MucHViLnJvPgo+Pj4gLS0tCj4+PiAgwqAgbGliL3Vrc2NoZWQvTWFrZWZpbGUudWvC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoCAxICsKPj4+ICDCoCBsaWIvdWtzY2hlZC9l
eHBvcnRzeW1zLnVrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoCA4ICsrCj4+PiAgwqAgbGli
L3Vrc2NoZWQvaW5jbHVkZS91ay9zY2hlZC5owqDCoMKgwqDCoMKgIHzCoCA3NSArKysrKysrKysr
KysrKysrKy0tCj4+PiAgwqAgbGliL3Vrc2NoZWQvaW5jbHVkZS91ay90aHJlYWQuaMKgwqDCoMKg
wqAgfMKgIDEyICsrLQo+Pj4gIMKgIGxpYi91a3NjaGVkL2luY2x1ZGUvdWsvdGhyZWFkX2F0dHIu
aCB8wqAgODEgKysrKysrKysrKysrKysrKysrKysKPj4+ICDCoCBsaWIvdWtzY2hlZC9zY2hlZC5j
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoCA1ICstCj4+PiAgwqAgbGli
L3Vrc2NoZWQvdGhyZWFkLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgMzQg
KysrKysrKysrCj4+PiAgwqAgbGliL3Vrc2NoZWQvdGhyZWFkX2F0dHIuY8KgwqDCoMKgwqDCoMKg
wqDCoMKgwqAgfCAxMzkKPj4+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4+
PiAgwqAgbGliL3Vrc2NoZWRjb29wL3NjaGVkY29vcC5jwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKg
IDYgKy0KPj4+ICDCoCA5IGZpbGVzIGNoYW5nZWQsIDM1MSBpbnNlcnRpb25zKCspLCAxMCBkZWxl
dGlvbnMoLSkKPj4+ICDCoCBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3Vrc2NoZWQvaW5jbHVkZS91
ay90aHJlYWRfYXR0ci5oCj4+PiAgwqAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi91a3NjaGVkL3Ro
cmVhZF9hdHRyLmMKPj4+Cj4+PiBkaWZmIC0tZ2l0IGEvbGliL3Vrc2NoZWQvTWFrZWZpbGUudWsg
Yi9saWIvdWtzY2hlZC9NYWtlZmlsZS51awo+Pj4gaW5kZXggMjQ4MTZmNi4uMjI5ZDg0NyAxMDA2
NDQKPj4+IC0tLSBhL2xpYi91a3NjaGVkL01ha2VmaWxlLnVrCj4+PiArKysgYi9saWIvdWtzY2hl
ZC9NYWtlZmlsZS51awo+Pj4gQEAgLTUsMyArNSw0IEBAIENYWElOQ0xVREVTLSQoQ09ORklHX0xJ
QlVLU0NIRUQpwqDCoCArPQo+Pj4gLUkkKExJQlVLU0NIRURfQkFTRSkvaW5jbHVkZQo+Pj4gIMKg
IMKgIExJQlVLU0NIRURfU1JDUy15ICs9ICQoTElCVUtTQ0hFRF9CQVNFKS9zY2hlZC5jCj4+PiAg
wqAgTElCVUtTQ0hFRF9TUkNTLXkgKz0gJChMSUJVS1NDSEVEX0JBU0UpL3RocmVhZC5jCj4+PiAr
TElCVUtTQ0hFRF9TUkNTLXkgKz0gJChMSUJVS1NDSEVEX0JBU0UpL3RocmVhZF9hdHRyLmMKPj4+
IGRpZmYgLS1naXQgYS9saWIvdWtzY2hlZC9leHBvcnRzeW1zLnVrIGIvbGliL3Vrc2NoZWQvZXhw
b3J0c3ltcy51awo+Pj4gaW5kZXggNDVhOTY5NC4uMGIxMDQwNSAxMDA2NDQKPj4+IC0tLSBhL2xp
Yi91a3NjaGVkL2V4cG9ydHN5bXMudWsKPj4+ICsrKyBiL2xpYi91a3NjaGVkL2V4cG9ydHN5bXMu
dWsKPj4+IEBAIC0xNCwzICsxNCwxMSBAQCB1a190aHJlYWRfZmluaQo+Pj4gIMKgIHVrX3RocmVh
ZF9ibG9ja190aW1lb3V0Cj4+PiAgwqAgdWtfdGhyZWFkX2Jsb2NrCj4+PiAgwqAgdWtfdGhyZWFk
X3dha2UKPj4+ICt1a190aHJlYWRfYXR0cl9pbml0Cj4+PiArdWtfdGhyZWFkX2F0dHJfZmluaQo+
Pj4gK3VrX3RocmVhZF9hdHRyX3NldF9kZXRhY2hzdGF0ZQo+Pj4gK3VrX3RocmVhZF9hdHRyX2dl
dF9kZXRhY2hzdGF0ZQo+Pj4gK3VrX3RocmVhZF9hdHRyX3NldF9wcmlvCj4+PiArdWtfdGhyZWFk
X2F0dHJfZ2V0X3ByaW8KPj4+ICt1a190aHJlYWRfYXR0cl9zZXRfdGltZXNsaWNlCj4+PiArdWtf
dGhyZWFkX2F0dHJfZ2V0X3RpbWVzbGljZQo+Pj4gXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
Cj4+PiBkaWZmIC0tZ2l0IGEvbGliL3Vrc2NoZWQvaW5jbHVkZS91ay9zY2hlZC5oCj4+PiBiL2xp
Yi91a3NjaGVkL2luY2x1ZGUvdWsvc2NoZWQuaAo+Pj4gaW5kZXggZDJmYzhkZi4uYjIxZDY1YyAx
MDA2NDQKPj4+IC0tLSBhL2xpYi91a3NjaGVkL2luY2x1ZGUvdWsvc2NoZWQuaAo+Pj4gKysrIGIv
bGliL3Vrc2NoZWQvaW5jbHVkZS91ay9zY2hlZC5oCj4+PiBAQCAtNjAsMTYgKzYwLDMxIEBAIHR5
cGVkZWYgdm9pZMKgICgqdWtfc2NoZWRfeWllbGRfZnVuY190KQo+Pj4gIMKgwqDCoMKgwqDCoMKg
wqDCoCAoc3RydWN0IHVrX3NjaGVkICpzKTsKPj4+ICDCoCDCoCB0eXBlZGVmIHZvaWTCoCAoKnVr
X3NjaGVkX3RocmVhZF9hZGRfZnVuY190KQo+Pj4gLcKgwqDCoMKgwqDCoMKgIChzdHJ1Y3QgdWtf
c2NoZWQgKnMsIHN0cnVjdCB1a190aHJlYWQgKnQpOwo+Pj4gK8KgwqDCoMKgwqDCoMKgIChzdHJ1
Y3QgdWtfc2NoZWQgKnMsIHN0cnVjdCB1a190aHJlYWQgKnQsCj4+PiArwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoCBzdHJ1Y3QgdWtfdGhyZWFkX2F0dHIgKmF0dHIpOwo+Pj4gIMKgIHR5cGVkZWYgdm9p
ZMKgICgqdWtfc2NoZWRfdGhyZWFkX3JlbW92ZV9mdW5jX3QpCj4+PiAgwqDCoMKgwqDCoMKgwqDC
oMKgIChzdHJ1Y3QgdWtfc2NoZWQgKnMsIHN0cnVjdCB1a190aHJlYWQgKnQpOwo+Pj4gIMKgICt0
eXBlZGVmIGludMKgwqAgKCp1a19zY2hlZF90aHJlYWRfc2V0X3ByaW9fZnVuY190KQo+Pj4gK8Kg
wqDCoMKgwqDCoMKgIChzdHJ1Y3QgdWtfc2NoZWQgKnMsIHN0cnVjdCB1a190aHJlYWQgKnQsIHBy
aW9fdCBwcmlvKTsKPj4+ICt0eXBlZGVmIGludMKgwqAgKCp1a19zY2hlZF90aHJlYWRfZ2V0X3By
aW9fZnVuY190KQo+Pj4gK8KgwqDCoMKgwqDCoMKgIChzdHJ1Y3QgdWtfc2NoZWQgKnMsIGNvbnN0
IHN0cnVjdCB1a190aHJlYWQgKnQsIHByaW9fdCAqcHJpbyk7Cj4+PiArdHlwZWRlZiBpbnTCoMKg
ICgqdWtfc2NoZWRfdGhyZWFkX3NldF90c2xpY2VfZnVuY190KQo+Pj4gK8KgwqDCoMKgwqDCoMKg
IChzdHJ1Y3QgdWtfc2NoZWQgKnMsIHN0cnVjdCB1a190aHJlYWQgKnQsIGludCB0c2xpY2UpOwo+
Pj4gK3R5cGVkZWYgaW50wqDCoCAoKnVrX3NjaGVkX3RocmVhZF9nZXRfdHNsaWNlX2Z1bmNfdCkK
Pj4+ICvCoMKgwqDCoMKgwqDCoCAoc3RydWN0IHVrX3NjaGVkICpzLCBjb25zdCBzdHJ1Y3QgdWtf
dGhyZWFkICp0LCBpbnQgKnRzbGljZSk7Cj4+PiArCj4+PiAgwqAgc3RydWN0IHVrX3NjaGVkIHsK
Pj4+ICDCoMKgwqDCoMKgIHVrX3NjaGVkX3lpZWxkX2Z1bmNfdCB5aWVsZDsKPj4+ICDCoCDCoMKg
wqDCoMKgIHVrX3NjaGVkX3RocmVhZF9hZGRfZnVuY190wqDCoMKgwqDCoCB0aHJlYWRfYWRkOwo+
Pj4gIMKgwqDCoMKgwqAgdWtfc2NoZWRfdGhyZWFkX3JlbW92ZV9mdW5jX3TCoMKgIHRocmVhZF9y
ZW1vdmU7Cj4+PiAgwqAgK8KgwqDCoCB1a19zY2hlZF90aHJlYWRfc2V0X3ByaW9fZnVuY190wqDC
oCB0aHJlYWRfc2V0X3ByaW87Cj4+PiArwqDCoMKgIHVrX3NjaGVkX3RocmVhZF9nZXRfcHJpb19m
dW5jX3TCoMKgIHRocmVhZF9nZXRfcHJpbzsKPj4+ICvCoMKgwqAgdWtfc2NoZWRfdGhyZWFkX3Nl
dF90c2xpY2VfZnVuY190IHRocmVhZF9zZXRfdHNsaWNlOwo+Pj4gK8KgwqDCoCB1a19zY2hlZF90
aHJlYWRfZ2V0X3RzbGljZV9mdW5jX3QgdGhyZWFkX2dldF90c2xpY2U7Cj4+PiArCj4+PiAgwqDC
oMKgwqDCoCAvKiBpbnRlcm5hbCAqLwo+Pj4gIMKgwqDCoMKgwqAgc3RydWN0IHVrX3RocmVhZCBp
ZGxlOwo+Pj4gIMKgwqDCoMKgwqAgc3RydWN0IHVrcGxhdF9jdHhfY2FsbGJhY2tzIHBsYXRfY3R4
X2NiczsKPj4+IEBAIC05MiwxMiArMTA3LDEyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB1a19zY2hl
ZF95aWVsZCh2b2lkKQo+Pj4gIMKgIH0KPj4+ICDCoCDCoCBzdGF0aWMgaW5saW5lIHZvaWQgdWtf
c2NoZWRfdGhyZWFkX2FkZChzdHJ1Y3QgdWtfc2NoZWQgKnMsCj4+PiAtwqDCoMKgwqDCoMKgwqAg
c3RydWN0IHVrX3RocmVhZCAqdCkKPj4+ICvCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgdWtfdGhyZWFk
ICp0LCBzdHJ1Y3QgdWtfdGhyZWFkX2F0dHIgKmF0dHIpCj4+PiAgwqAgewo+Pj4gIMKgwqDCoMKg
wqAgVUtfQVNTRVJUKHMpOwo+Pj4gIMKgwqDCoMKgwqAgVUtfQVNTRVJUKHQpOwo+Pj4gIMKgwqDC
oMKgwqAgdC0+c2NoZWQgPSBzOwo+Pj4gLcKgwqDCoCBzLT50aHJlYWRfYWRkKHMsIHQpOwo+Pj4g
K8KgwqDCoCBzLT50aHJlYWRfYWRkKHMsIHQsIGF0dHIpOwo+Pj4gIMKgIH0KPj4+ICDCoCDCoCBz
dGF0aWMgaW5saW5lIHZvaWQgdWtfc2NoZWRfdGhyZWFkX3JlbW92ZShzdHJ1Y3QgdWtfc2NoZWQg
KnMsCj4+PiBAQCAtMTA5LDYgKzEyNCw0OSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgdWtfc2NoZWRf
dGhyZWFkX3JlbW92ZShzdHJ1Y3QKPj4+IHVrX3NjaGVkICpzLAo+Pj4gIMKgwqDCoMKgwqAgdC0+
c2NoZWQgPSBOVUxMOwo+Pj4gIMKgIH0KPj4+ICDCoCArc3RhdGljIGlubGluZSBpbnQgdWtfc2No
ZWRfdGhyZWFkX3NldF9wcmlvKHN0cnVjdCB1a19zY2hlZCAqcywKPj4+ICvCoMKgwqDCoMKgwqDC
oCBzdHJ1Y3QgdWtfdGhyZWFkICp0LCBwcmlvX3QgcHJpbykKPj4+ICt7Cj4+PiArwqDCoMKgIFVL
X0FTU0VSVChzKTsKPj4+ICsKPj4+ICvCoMKgwqAgaWYgKCFzLT50aHJlYWRfc2V0X3ByaW8pCj4+
PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FSU5WQUw7Cj4+PiArCj4+PiArwqDCoMKgIHJldHVy
biBzLT50aHJlYWRfc2V0X3ByaW8ocywgdCwgcHJpbyk7Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRp
YyBpbmxpbmUgaW50IHVrX3NjaGVkX3RocmVhZF9nZXRfcHJpbyhzdHJ1Y3QgdWtfc2NoZWQgKnMs
Cj4+PiArwqDCoMKgwqDCoMKgwqAgY29uc3Qgc3RydWN0IHVrX3RocmVhZCAqdCwgcHJpb190ICpw
cmlvKQo+Pj4gK3sKPj4+ICvCoMKgwqAgVUtfQVNTRVJUKHMpOwo+Pj4gKwo+Pj4gK8KgwqDCoCBp
ZiAoIXMtPnRocmVhZF9nZXRfcHJpbykKPj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVJTlZB
TDsKPj4+ICsKPj4+ICvCoMKgwqAgcmV0dXJuIHMtPnRocmVhZF9nZXRfcHJpbyhzLCB0LCBwcmlv
KTsKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIGlubGluZSBpbnQgdWtfc2NoZWRfdGhyZWFkX3Nl
dF90aW1lc2xpY2Uoc3RydWN0IHVrX3NjaGVkICpzLAo+Pj4gK8KgwqDCoMKgwqDCoMKgIHN0cnVj
dCB1a190aHJlYWQgKnQsIGludCB0c2xpY2UpCj4+PiArewo+Pj4gK8KgwqDCoCBVS19BU1NFUlQo
cyk7Cj4+PiArCj4+PiArwqDCoMKgIGlmICghcy0+dGhyZWFkX3NldF90c2xpY2UpCj4+PiArwqDC
oMKgwqDCoMKgwqAgcmV0dXJuIC1FSU5WQUw7Cj4+PiArCj4+PiArwqDCoMKgIHJldHVybiBzLT50
aHJlYWRfc2V0X3RzbGljZShzLCB0LCB0c2xpY2UpOwo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMg
aW5saW5lIGludCB1a19zY2hlZF90aHJlYWRfZ2V0X3RpbWVzbGljZShzdHJ1Y3QgdWtfc2NoZWQg
KnMsCj4+PiArwqDCoMKgwqDCoMKgwqAgY29uc3Qgc3RydWN0IHVrX3RocmVhZCAqdCwgaW50ICp0
c2xpY2UpCj4+PiArewo+Pj4gK8KgwqDCoCBVS19BU1NFUlQocyk7Cj4+PiArCj4+PiArwqDCoMKg
IGlmICghcy0+dGhyZWFkX2dldF90c2xpY2UpCj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1F
SU5WQUw7Cj4+PiArCj4+PiArwqDCoMKgIHJldHVybiBzLT50aHJlYWRfZ2V0X3RzbGljZShzLCB0
LCB0c2xpY2UpOwo+Pj4gK30KPj4+ICDCoCDCoCAvKgo+Pj4gIMKgwqAgKiBJbnRlcm5hbCBzY2hl
ZHVsZXIgZnVuY3Rpb25zCj4+PiBAQCAtMTMyLDExICsxOTAsMTcgQEAgc3RhdGljIGlubGluZSBz
dHJ1Y3QgdWtfdGhyZWFkCj4+PiAqdWtfc2NoZWRfZ2V0X2lkbGUoc3RydWN0IHVrX3NjaGVkICpz
KQo+Pj4gIMKgIHZvaWQgdWtfc2NoZWRfc3RhcnQoc3RydWN0IHVrX3NjaGVkICpzY2hlZCkgX19u
b3JldHVybjsKPj4+ICDCoCDCoCAjZGVmaW5lIHVrX3NjaGVkX2luaXQocywgeWllbGRfZnVuYywg
XAo+Pj4gLcKgwqDCoMKgwqDCoMKgIHRocmVhZF9hZGRfZnVuYywgdGhyZWFkX3JlbW92ZV9mdW5j
KSBcCj4+PiArwqDCoMKgwqDCoMKgwqAgdGhyZWFkX2FkZF9mdW5jLCB0aHJlYWRfcmVtb3ZlX2Z1
bmMsIFwKPj4+ICvCoMKgwqDCoMKgwqDCoCB0aHJlYWRfc2V0X3ByaW9fZnVuYywgdGhyZWFkX2dl
dF9wcmlvX2Z1bmMsIFwKPj4+ICvCoMKgwqDCoMKgwqDCoCB0aHJlYWRfc2V0X3RzbGljZV9mdW5j
LCB0aHJlYWRfZ2V0X3RzbGljZV9mdW5jKSBcCj4+PiAgwqDCoMKgwqDCoCBkbyB7IFwKPj4+ICDC
oMKgwqDCoMKgwqDCoMKgwqAgKHMpLT55aWVsZMKgwqDCoMKgwqDCoMKgwqDCoMKgID0geWllbGRf
ZnVuYzsgXAo+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoCAocyktPnRocmVhZF9hZGTCoMKgwqDCoMKg
ID0gdGhyZWFkX2FkZF9mdW5jOyBcCj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgIChzKS0+dGhyZWFk
X3JlbW92ZcKgwqAgPSB0aHJlYWRfcmVtb3ZlX2Z1bmM7IFwKPj4+ICvCoMKgwqDCoMKgwqDCoCAo
cyktPnRocmVhZF9zZXRfcHJpb8KgwqDCoCA9IHRocmVhZF9zZXRfcHJpb19mdW5jOyBcCj4+PiAr
wqDCoMKgwqDCoMKgwqAgKHMpLT50aHJlYWRfZ2V0X3ByaW/CoMKgwqAgPSB0aHJlYWRfZ2V0X3By
aW9fZnVuYzsgXAo+Pj4gK8KgwqDCoMKgwqDCoMKgIChzKS0+dGhyZWFkX3NldF90c2xpY2XCoCA9
IHRocmVhZF9zZXRfdHNsaWNlX2Z1bmM7IFwKPj4+ICvCoMKgwqDCoMKgwqDCoCAocyktPnRocmVh
ZF9nZXRfdHNsaWNlwqAgPSB0aHJlYWRfZ2V0X3RzbGljZV9mdW5jOyBcCj4+PiAgwqDCoMKgwqDC
oMKgwqDCoMKgIHVrX3NjaGVkX3JlZ2lzdGVyKChzKSk7IFwKPj4+ICDCoMKgwqDCoMKgIH0gd2hp
bGUgKDApCj4+PiAgwqAgQEAgLTE0Niw3ICsyMTAsOCBAQCB2b2lkIHVrX3NjaGVkX3N0YXJ0KHN0
cnVjdCB1a19zY2hlZCAqc2NoZWQpCj4+PiBfX25vcmV0dXJuOwo+Pj4gIMKgwqAgKi8KPj4+ICDC
oCDCoCBzdHJ1Y3QgdWtfdGhyZWFkICp1a19zY2hlZF90aHJlYWRfY3JlYXRlKHN0cnVjdCB1a19z
Y2hlZCAqc2NoZWQsCj4+PiAtwqDCoMKgwqDCoMKgwqAgY29uc3QgY2hhciAqbmFtZSwgdm9pZCAo
KmZ1bmN0aW9uKSh2b2lkICopLCB2b2lkICphcmcpOwo+Pj4gK8KgwqDCoMKgwqDCoMKgIGNvbnN0
IGNoYXIgKm5hbWUsIHN0cnVjdCB1a190aHJlYWRfYXR0ciAqYXR0ciwKPj4+ICvCoMKgwqDCoMKg
wqDCoCB2b2lkICgqZnVuY3Rpb24pKHZvaWQgKiksIHZvaWQgKmFyZyk7Cj4+PiAgwqAgdm9pZCB1
a19zY2hlZF90aHJlYWRfZGVzdHJveShzdHJ1Y3QgdWtfc2NoZWQgKnNjaGVkLAo+Pj4gIMKgwqDC
oMKgwqDCoMKgwqDCoCBzdHJ1Y3QgdWtfdGhyZWFkICp0aHJlYWQpOwo+Pj4gIMKgIGRpZmYgLS1n
aXQgYS9saWIvdWtzY2hlZC9pbmNsdWRlL3VrL3RocmVhZC5oCj4+PiBiL2xpYi91a3NjaGVkL2lu
Y2x1ZGUvdWsvdGhyZWFkLmgKPj4+IGluZGV4IGU2NmEwNWIuLjVmZjJkZDYgMTAwNjQ0Cj4+PiAt
LS0gYS9saWIvdWtzY2hlZC9pbmNsdWRlL3VrL3RocmVhZC5oCj4+PiArKysgYi9saWIvdWtzY2hl
ZC9pbmNsdWRlL3VrL3RocmVhZC5oCj4+PiBAQCAtMzUsNiArMzUsNyBAQAo+Pj4gIMKgICNpbmNs
dWRlIDx1ay9hcmNoL2xjcHUuaD4KPj4+ICDCoCAjaW5jbHVkZSA8dWsvYXJjaC90aW1lLmg+Cj4+
PiAgwqAgI2luY2x1ZGUgPHVrL3BsYXQvdGhyZWFkLmg+Cj4+PiArI2luY2x1ZGUgPHVrL3RocmVh
ZF9hdHRyLmg+Cj4+PiAgwqAgI2luY2x1ZGUgPHVrL2xpc3QuaD4KPj4+ICDCoCAjaW5jbHVkZSA8
dWsvZXNzZW50aWFscy5oPgo+Pj4gIMKgIEBAIC01OSwxMSArNjAsMjAgQEAgc3RydWN0IHVrX3Ro
cmVhZCB7Cj4+PiAgwqAgwqAgVUtfVEFJTFFfSEVBRCh1a190aHJlYWRfbGlzdCwgc3RydWN0IHVr
X3RocmVhZCk7Cj4+PiAgwqAgKyNkZWZpbmUgdWtfdGhyZWFkX2NyZWF0ZV9hdHRyKG5hbWUsIGF0
dHIsIGZ1bmN0aW9uLCBkYXRhKSBcCj4+PiArwqDCoMKgIHVrX3NjaGVkX3RocmVhZF9jcmVhdGUo
dWtfc2NoZWRfZ2V0X2RlZmF1bHQoKSwgXAo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbmFt
ZSwgYXR0ciwgZnVuY3Rpb24sIGRhdGEpCj4+PiAgwqAgI2RlZmluZSB1a190aHJlYWRfY3JlYXRl
KG5hbWUsIGZ1bmN0aW9uLCBkYXRhKSBcCj4+PiAtwqDCoMKgIHVrX3NjaGVkX3RocmVhZF9jcmVh
dGUodWtfc2NoZWRfZ2V0X2RlZmF1bHQoKSwgbmFtZSwgZnVuY3Rpb24sIGRhdGEpCj4+PiArwqDC
oMKgIHVrX3RocmVhZF9jcmVhdGVfYXR0cihuYW1lLCBOVUxMLCBmdW5jdGlvbiwgZGF0YSkKPj4+
ICDCoCAjZGVmaW5lIHVrX3RocmVhZF9kZXN0cm95KHRocmVhZCkgXAo+Pj4gIMKgwqDCoMKgwqAg
dWtfc2NoZWRfdGhyZWFkX2Rlc3Ryb3kodGhyZWFkLT5zY2hlZCwgdGhyZWFkKQo+Pj4gIMKgICtp
bnQgdWtfdGhyZWFkX3NldF9wcmlvKHN0cnVjdCB1a190aHJlYWQgKnRocmVhZCwgcHJpb190IHBy
aW8pOwo+Pj4gK2ludCB1a190aHJlYWRfZ2V0X3ByaW8oY29uc3Qgc3RydWN0IHVrX3RocmVhZCAq
dGhyZWFkLCBwcmlvX3QgKnByaW8pOwo+Pj4gKwo+Pj4gK2ludCB1a190aHJlYWRfc2V0X3RpbWVz
bGljZShzdHJ1Y3QgdWtfdGhyZWFkICp0aHJlYWQsIGludCB0aW1lc2xpY2UpOwo+Pj4gK2ludCB1
a190aHJlYWRfZ2V0X3RpbWVzbGljZShjb25zdCBzdHJ1Y3QgdWtfdGhyZWFkICp0aHJlYWQsIGlu
dAo+Pj4gKnRpbWVzbGljZSk7Cj4+PiArCj4+PiAgwqAgc3RhdGljIGlubGluZQo+Pj4gIMKgIHN0
cnVjdCB1a190aHJlYWQgKnVrX3RocmVhZF9jdXJyZW50KHZvaWQpCj4+PiAgwqAgewo+Pj4gZGlm
ZiAtLWdpdCBhL2xpYi91a3NjaGVkL2luY2x1ZGUvdWsvdGhyZWFkX2F0dHIuaAo+Pj4gYi9saWIv
dWtzY2hlZC9pbmNsdWRlL3VrL3RocmVhZF9hdHRyLmgKPj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0
Cj4+PiBpbmRleCAwMDAwMDAwLi45M2RjZDVjCj4+PiAtLS0gL2Rldi9udWxsCj4+PiArKysgYi9s
aWIvdWtzY2hlZC9pbmNsdWRlL3VrL3RocmVhZF9hdHRyLmgKPj4+IEBAIC0wLDAgKzEsODEgQEAK
Pj4+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCj4+PiArLyoK
Pj4+ICsgKiBBdXRob3JzOiBDb3N0aW4gTHVwdSA8Y29zdGluLmx1cHVAY3MucHViLnJvPgo+Pj4g
KyAqCj4+PiArICogQ29weXJpZ2h0IChjKSAyMDE5LCBORUMgRXVyb3BlIEx0ZC4sIE5FQyBDb3Jw
b3JhdGlvbi4gQWxsIHJpZ2h0cwo+Pj4gcmVzZXJ2ZWQuCj4+PiArICoKPj4+ICsgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKPj4+ICsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKPj4+ICsgKiBhcmUgbWV0Ogo+Pj4gKyAqCj4+PiArICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKPj4+ICsgKsKgwqDCoCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCj4+PiArICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKPj4+ICsgKsKgwqDC
oCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4KPj4+IHRoZQo+Pj4gKyAqwqDCoMKgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQo+Pj4gZGlzdHJpYnV0aW9uLgo+Pj4gKyAqIDMu
IE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKPj4+ICsgKsKgwqDCoCBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKPj4+IGZyb20KPj4+ICsgKsKgwqDCoCB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgo+Pj4gKyAq
Cj4+PiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5ECj4+PiBDT05UUklCVVRPUlMgIkFTIElTIgo+Pj4gKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVECj4+PiBUTywg
VEhFCj4+PiArICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCj4+PiBQVVJQT1NFCj4+PiArICogQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCj4+PiBDT05UUklCVVRP
UlMgQkUKPj4+ICsgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCj4+PiArICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKPj4+ICsgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IKPj4+IEJVU0lORVNTCj4+PiArICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksCj4+PiBXSEVUSEVSIElOCj4+PiArICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SCj4+
PiBPVEhFUldJU0UpCj4+PiArICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYKPj4+IEFEVklTRUQgT0YgVEhFCj4+PiArICogUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCj4+PiArICoKPj4+ICsgKiBUSElTIEhFQURFUiBNQVkgTk9U
IEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgo+Pj4gKyAqLwo+Pj4gKwo+Pj4g
KyNpZm5kZWYgX19VS19TQ0hFRF9USFJFQURfQVRUUl9IX18KPj4+ICsjZGVmaW5lIF9fVUtfU0NI
RURfVEhSRUFEX0FUVFJfSF9fCj4+PiArCj4+PiArI2luY2x1ZGUgPHVrL2FyY2gvdGltZS5oPgo+
Pj4gKwo+Pj4gKyNpZmRlZiBfX2NwbHVzcGx1cwo+Pj4gK2V4dGVybiAiQyIgewo+Pj4gKyNlbmRp
Zgo+Pj4gKwo+Pj4gKyNkZWZpbmUgVUtfVEhSRUFEX0FUVFJfV0FJVEFCTEXCoMKgwqDCoMKgwqDC
oMKgIDAKPj4+ICsjZGVmaW5lIFVLX1RIUkVBRF9BVFRSX0RFVEFDSEVEwqDCoMKgwqDCoMKgwqDC
oCAxCj4+PiArCj4+PiArI2RlZmluZSBVS19USFJFQURfQVRUUl9QUklPX0lOVkFMSUTCoMKgwqDC
oCAoLTEpCj4+PiArI2RlZmluZSBVS19USFJFQURfQVRUUl9QUklPX01JTsKgwqDCoMKgwqDCoMKg
wqAgMAo+Pj4gKyNkZWZpbmUgVUtfVEhSRUFEX0FUVFJfUFJJT19NQVjCoMKgwqDCoMKgwqDCoMKg
IDI1NQo+Pj4gKyNkZWZpbmUgVUtfVEhSRUFEX0FUVFJfUFJJT19ERUZBVUxUwqDCoMKgwqAgMTI3
Cj4+PiArCj4+PiArI2RlZmluZSBVS19USFJFQURfQVRUUl9USU1FU0xJQ0VfTklMwqDCoMKgIDAK
Pj4+ICsKPj4+ICt0eXBlZGVmIGludCBwcmlvX3Q7Cj4+PiArCj4+PiArdHlwZWRlZiBzdHJ1Y3Qg
dWtfdGhyZWFkX2F0dHIgewo+Pj4gK8KgwqDCoCAvKio8IElzIG5vbi16ZXJvIGlmIHRocmVhZCBz
aG91bGQgZGV0YWNoICovCj4+PiArwqDCoMKgIGludCBpc19kZXRhY2hlZDsKPj4+ICvCoMKgwqAg
LyoqPCBQcmlvcml0eSAqLwo+Pj4gK8KgwqDCoCBwcmlvX3QgcHJpbzsKPj4+ICvCoMKgwqAgLyoq
PCBUaW1lIHNsaWNlIGluIG5hbm9zZWNvbmRzICovCj4+PiArwqDCoMKgIF9fbnNlYyB0aW1lc2xp
Y2U7Cj4+PiArfSB1a190aHJlYWRfYXR0cl90Owo+Pj4gKwo+Pj4gK2ludCB1a190aHJlYWRfYXR0
cl9pbml0KHVrX3RocmVhZF9hdHRyX3QgKmF0dHIpOwo+Pj4gK2ludCB1a190aHJlYWRfYXR0cl9m
aW5pKHVrX3RocmVhZF9hdHRyX3QgKmF0dHIpOwo+Pj4gKwo+Pj4gK2ludCB1a190aHJlYWRfYXR0
cl9zZXRfZGV0YWNoc3RhdGUodWtfdGhyZWFkX2F0dHJfdCAqYXR0ciwgaW50IHN0YXRlKTsKPj4+
ICtpbnQgdWtfdGhyZWFkX2F0dHJfZ2V0X2RldGFjaHN0YXRlKGNvbnN0IHVrX3RocmVhZF9hdHRy
X3QgKmF0dHIsIGludAo+Pj4gKnN0YXRlKTsKPj4+ICsKPj4+ICtpbnQgdWtfdGhyZWFkX2F0dHJf
c2V0X3ByaW8odWtfdGhyZWFkX2F0dHJfdCAqYXR0ciwgcHJpb190IHByaW8pOwo+Pj4gK2ludCB1
a190aHJlYWRfYXR0cl9nZXRfcHJpbyhjb25zdCB1a190aHJlYWRfYXR0cl90ICphdHRyLCBwcmlv
X3QgKnByaW8pOwo+Pj4gKwo+Pj4gK2ludCB1a190aHJlYWRfYXR0cl9zZXRfdGltZXNsaWNlKHVr
X3RocmVhZF9hdHRyX3QgKmF0dHIsIF9fbnNlYwo+Pj4gdGltZXNsaWNlKTsKPj4+ICtpbnQgdWtf
dGhyZWFkX2F0dHJfZ2V0X3RpbWVzbGljZShjb25zdCB1a190aHJlYWRfYXR0cl90ICphdHRyLCBf
X25zZWMKPj4+ICp0aW1lc2xpY2UpOwo+Pj4gKwo+Pj4gKyNpZmRlZiBfX2NwbHVzcGx1cwo+Pj4g
K30KPj4+ICsjZW5kaWYKPj4+ICsKPj4+ICsjZW5kaWYgLyogX19VS19TQ0hFRF9USFJFQURfQVRU
Ul9IX18gKi8KPj4+IGRpZmYgLS1naXQgYS9saWIvdWtzY2hlZC9zY2hlZC5jIGIvbGliL3Vrc2No
ZWQvc2NoZWQuYwo+Pj4gaW5kZXggYzNiZTIwNi4uZTg1NTI5OCAxMDA2NDQKPj4+IC0tLSBhL2xp
Yi91a3NjaGVkL3NjaGVkLmMKPj4+ICsrKyBiL2xpYi91a3NjaGVkL3NjaGVkLmMKPj4+IEBAIC0x
NzAsNyArMTcwLDggQEAgdm9pZCB1a19zY2hlZF9pZGxlX2luaXQoc3RydWN0IHVrX3NjaGVkICpz
Y2hlZCwKPj4+ICDCoCB9Cj4+PiAgwqAgwqAgc3RydWN0IHVrX3RocmVhZCAqdWtfc2NoZWRfdGhy
ZWFkX2NyZWF0ZShzdHJ1Y3QgdWtfc2NoZWQgKnNjaGVkLAo+Pj4gLcKgwqDCoMKgwqDCoMKgIGNv
bnN0IGNoYXIgKm5hbWUsIHZvaWQgKCpmdW5jdGlvbikodm9pZCAqKSwgdm9pZCAqYXJnKQo+Pj4g
K8KgwqDCoMKgwqDCoMKgIGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCB1a190aHJlYWRfYXR0ciAq
YXR0ciwKPj4+ICvCoMKgwqDCoMKgwqDCoCB2b2lkICgqZnVuY3Rpb24pKHZvaWQgKiksIHZvaWQg
KmFyZykKPj4+ICDCoCB7Cj4+PiAgwqDCoMKgwqDCoCBzdHJ1Y3QgdWtfdGhyZWFkICp0aHJlYWQg
PSBOVUxMOwo+Pj4gIMKgwqDCoMKgwqAgdm9pZCAqc3RhY2sgPSBOVUxMOwo+Pj4gQEAgLTE5NSw3
ICsxOTYsNyBAQCBzdHJ1Y3QgdWtfdGhyZWFkICp1a19zY2hlZF90aHJlYWRfY3JlYXRlKHN0cnVj
dAo+Pj4gdWtfc2NoZWQgKnNjaGVkLAo+Pj4gIMKgwqDCoMKgwqAgaWYgKHJjKQo+Pj4gIMKgwqDC
oMKgwqDCoMKgwqDCoCBnb3RvIGVycjsKPj4+ICDCoCAtwqDCoMKgIHVrX3NjaGVkX3RocmVhZF9h
ZGQoc2NoZWQsIHRocmVhZCk7Cj4+PiArwqDCoMKgIHVrX3NjaGVkX3RocmVhZF9hZGQoc2NoZWQs
IHRocmVhZCwgYXR0cik7Cj4+PiAgwqAgwqDCoMKgwqDCoCByZXR1cm4gdGhyZWFkOwo+Pj4gIMKg
IGRpZmYgLS1naXQgYS9saWIvdWtzY2hlZC90aHJlYWQuYyBiL2xpYi91a3NjaGVkL3RocmVhZC5j
Cj4+PiBpbmRleCAxMjM2Yjk5Li45ZDA2NTUyIDEwMDY0NAo+Pj4gLS0tIGEvbGliL3Vrc2NoZWQv
dGhyZWFkLmMKPj4+ICsrKyBiL2xpYi91a3NjaGVkL3RocmVhZC5jCj4+PiBAQCAtMzAsOSArMzAs
MTEgQEAKPj4+ICDCoMKgICogUG9ydGVkIGZyb20gTWluaS1PUwo+Pj4gIMKgwqAgKi8KPj4+ICDC
oCAjaW5jbHVkZSA8c3RkbGliLmg+Cj4+PiArI2luY2x1ZGUgPGVycm5vLmg+Cj4+PiAgwqAgI2lu
Y2x1ZGUgPHVrL3BsYXQvY29uZmlnLmg+Cj4+PiAgwqAgI2luY2x1ZGUgPHVrL3BsYXQvdGltZS5o
Pgo+Pj4gIMKgICNpbmNsdWRlIDx1ay90aHJlYWQuaD4KPj4+ICsjaW5jbHVkZSA8dWsvc2NoZWQu
aD4KPj4+ICDCoCAjaW5jbHVkZSA8dWsvcHJpbnQuaD4KPj4+ICDCoCAjaW5jbHVkZSA8dWsvYXNz
ZXJ0Lmg+Cj4+PiAgwqAgQEAgLTEyNywzICsxMjksMzUgQEAgdm9pZCB1a190aHJlYWRfd2FrZShz
dHJ1Y3QgdWtfdGhyZWFkICp0aHJlYWQpCj4+PiAgwqDCoMKgwqDCoCB0aHJlYWQtPndha2V1cF90
aW1lID0gMExMOwo+Pj4gIMKgwqDCoMKgwqAgc2V0X3J1bm5hYmxlKHRocmVhZCk7Cj4+PiAgwqAg
fQo+Pj4gKwo+Pj4gK2ludCB1a190aHJlYWRfc2V0X3ByaW8oc3RydWN0IHVrX3RocmVhZCAqdGhy
ZWFkLCBwcmlvX3QgcHJpbykKPj4+ICt7Cj4+PiArwqDCoMKgIGlmICghdGhyZWFkKQo+Pj4gK8Kg
wqDCoMKgwqDCoMKgIHJldHVybiAtRUlOVkFMOwo+Pj4gKwo+Pj4gK8KgwqDCoCByZXR1cm4gdWtf
c2NoZWRfdGhyZWFkX3NldF9wcmlvKHRocmVhZC0+c2NoZWQsIHRocmVhZCwgcHJpbyk7Cj4+PiAr
fQo+Pj4gKwo+Pj4gK2ludCB1a190aHJlYWRfZ2V0X3ByaW8oY29uc3Qgc3RydWN0IHVrX3RocmVh
ZCAqdGhyZWFkLCBwcmlvX3QgKnByaW8pCj4+PiArewo+Pj4gK8KgwqDCoCBpZiAoIXRocmVhZCkK
Pj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVJTlZBTDsKPj4+ICsKPj4+ICvCoMKgwqAgcmV0
dXJuIHVrX3NjaGVkX3RocmVhZF9nZXRfcHJpbyh0aHJlYWQtPnNjaGVkLCB0aHJlYWQsIHByaW8p
Owo+Pj4gK30KPj4+ICsKPj4+ICtpbnQgdWtfdGhyZWFkX3NldF90aW1lc2xpY2Uoc3RydWN0IHVr
X3RocmVhZCAqdGhyZWFkLCBpbnQgdGltZXNsaWNlKQo+Pj4gK3sKPj4+ICvCoMKgwqAgaWYgKCF0
aHJlYWQpCj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FSU5WQUw7Cj4+PiArCj4+PiArwqDC
oMKgIHJldHVybiB1a19zY2hlZF90aHJlYWRfc2V0X3RpbWVzbGljZSh0aHJlYWQtPnNjaGVkLCB0
aHJlYWQsCj4+PiB0aW1lc2xpY2UpOwo+Pj4gK30KPj4+ICsKPj4+ICtpbnQgdWtfdGhyZWFkX2dl
dF90aW1lc2xpY2UoY29uc3Qgc3RydWN0IHVrX3RocmVhZCAqdGhyZWFkLCBpbnQKPj4+ICp0aW1l
c2xpY2UpCj4+PiArewo+Pj4gK8KgwqDCoCBpZiAoIXRocmVhZCkKPj4+ICvCoMKgwqDCoMKgwqDC
oCByZXR1cm4gLUVJTlZBTDsKPj4+ICsKPj4+ICvCoMKgwqAgcmV0dXJuIHVrX3NjaGVkX3RocmVh
ZF9nZXRfdGltZXNsaWNlKHRocmVhZC0+c2NoZWQsIHRocmVhZCwKPj4+IHRpbWVzbGljZSk7Cj4+
PiArfQo+Pj4gZGlmZiAtLWdpdCBhL2xpYi91a3NjaGVkL3RocmVhZF9hdHRyLmMgYi9saWIvdWtz
Y2hlZC90aHJlYWRfYXR0ci5jCj4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+Pj4gaW5kZXggMDAw
MDAwMC4uNzM4NDVlYwo+Pj4gLS0tIC9kZXYvbnVsbAo+Pj4gKysrIGIvbGliL3Vrc2NoZWQvdGhy
ZWFkX2F0dHIuYwo+Pj4gQEAgLTAsMCArMSwxMzkgQEAKPj4+ICsvKiBTUERYLUxpY2Vuc2UtSWRl
bnRpZmllcjogQlNELTMtQ2xhdXNlICovCj4+PiArLyoKPj4+ICsgKiBBdXRob3JzOiBDb3N0aW4g
THVwdSA8Y29zdGluLmx1cHVAY3MucHViLnJvPgo+Pj4gKyAqCj4+PiArICogQ29weXJpZ2h0IChj
KSAyMDE5LCBORUMgRXVyb3BlIEx0ZC4sIE5FQyBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cwo+Pj4g
cmVzZXJ2ZWQuCj4+PiArICoKPj4+ICsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKPj4+ICsgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKPj4+
ICsgKiBhcmUgbWV0Ogo+Pj4gKyAqCj4+PiArICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKPj4+ICsgKsKgwqDCoCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Cj4+PiArICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKPj4+ICsgKsKgwqDCoCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KPj4+IHRoZQo+Pj4gKyAq
wqDCoMKgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQo+Pj4gZGlzdHJpYnV0aW9uLgo+Pj4gKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhl
IGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKPj4+ICsgKsKgwqDCoCBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQKPj4+IGZyb20KPj4+ICsgKsKgwqDCoCB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgo+Pj4gKyAqCj4+PiArICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5ECj4+PiBDT05UUklCVVRPUlMg
IkFTIElTIgo+Pj4gKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVECj4+PiBUTywgVEhFCj4+PiArICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCj4+
PiBQVVJQT1NFCj4+PiArICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQgSE9MREVSIE9SCj4+PiBDT05UUklCVVRPUlMgQkUKPj4+ICsgKiBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Cj4+PiArICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKPj4+ICsgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IKPj4+IEJVU0lORVNTCj4+PiArICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksCj4+PiBXSEVUSEVSIElOCj4+PiArICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SCj4+PiBPVEhFUldJU0UpCj4+PiArICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYK
Pj4+IEFEVklTRUQgT0YgVEhFCj4+PiArICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCj4+
PiArICoKPj4+ICsgKiBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklF
RCBJTiBBTlkgV0FZLgo+Pj4gKyAqLwo+Pj4gKwo+Pj4gKyNpbmNsdWRlIDxzdGRsaWIuaD4KPj4+
ICsjaW5jbHVkZSA8ZXJybm8uaD4KPj4+ICsjaW5jbHVkZSA8dWsvcGxhdC90aW1lLmg+Cj4+PiAr
I2luY2x1ZGUgPHVrL3RocmVhZF9hdHRyLmg+Cj4+PiArI2luY2x1ZGUgPHVrL2Fzc2VydC5oPgo+
Pj4gKwo+Pj4gKwo+Pj4gK2ludCB1a190aHJlYWRfYXR0cl9pbml0KHVrX3RocmVhZF9hdHRyX3Qg
KmF0dHIpCj4+PiArewo+Pj4gK8KgwqDCoCBpZiAoYXR0ciA9PSBOVUxMKQo+Pj4gK8KgwqDCoMKg
wqDCoMKgIHJldHVybiAtRUlOVkFMOwo+Pj4gKwo+Pj4gK8KgwqDCoCBhdHRyLT5pc19kZXRhY2hl
ZCA9IDA7Cj4+PiArwqDCoMKgIGF0dHItPnByaW8gPSBVS19USFJFQURfQVRUUl9QUklPX0lOVkFM
SUQ7Cj4+PiArwqDCoMKgIGF0dHItPnRpbWVzbGljZSA9IFVLX1RIUkVBRF9BVFRSX1RJTUVTTElD
RV9OSUw7Cj4+PiArCj4+PiArwqDCoMKgIHJldHVybiAwOwo+Pj4gK30KPj4+ICsKPj4+ICtpbnQg
dWtfdGhyZWFkX2F0dHJfZmluaSh1a190aHJlYWRfYXR0cl90ICphdHRyKQo+Pj4gK3sKPj4+ICvC
oMKgwqAgaWYgKGF0dHIgPT0gTlVMTCkKPj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVJTlZB
TDsKPj4+ICsKPj4+ICvCoMKgwqAgcmV0dXJuIDA7Cj4+PiArfQo+Pj4gKwo+Pj4gK2ludCB1a190
aHJlYWRfYXR0cl9zZXRfZGV0YWNoc3RhdGUodWtfdGhyZWFkX2F0dHJfdCAqYXR0ciwgaW50IHN0
YXRlKQo+Pj4gK3sKPj4+ICvCoMKgwqAgaWYgKGF0dHIgPT0gTlVMTCkKPj4+ICvCoMKgwqDCoMKg
wqDCoCByZXR1cm4gLUVJTlZBTDsKPj4+ICsKPj4+ICvCoMKgwqAgaWYgKHN0YXRlID09IFVLX1RI
UkVBRF9BVFRSX0RFVEFDSEVEKQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGF0dHItPmlzX2RldGFjaGVk
ID0gMTsKPj4+ICsKPj4+ICvCoMKgwqAgZWxzZSBpZiAoc3RhdGUgPT0gVUtfVEhSRUFEX0FUVFJf
V0FJVEFCTEUpCj4+PiArwqDCoMKgwqDCoMKgwqAgYXR0ci0+aXNfZGV0YWNoZWQgPSAwOwo+Pj4g
Kwo+Pj4gK8KgwqDCoCBlbHNlCj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FSU5WQUw7Cj4+
PiArCj4+PiArwqDCoMKgIHJldHVybiAwOwo+Pj4gK30KPj4+ICsKPj4+ICtpbnQgdWtfdGhyZWFk
X2F0dHJfZ2V0X2RldGFjaHN0YXRlKGNvbnN0IHVrX3RocmVhZF9hdHRyX3QgKmF0dHIsIGludAo+
Pj4gKnN0YXRlKQo+Pj4gK3sKPj4+ICvCoMKgwqAgaWYgKGF0dHIgPT0gTlVMTCB8fCBzdGF0ZSA9
PSBOVUxMKQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAtRUlOVkFMOwo+Pj4gKwo+Pj4gK8Kg
wqDCoCBpZiAoYXR0ci0+aXNfZGV0YWNoZWQpCj4+PiArwqDCoMKgwqDCoMKgwqAgKnN0YXRlID0g
VUtfVEhSRUFEX0FUVFJfREVUQUNIRUQ7Cj4+PiArwqDCoMKgIGVsc2UKPj4+ICvCoMKgwqDCoMKg
wqDCoCAqc3RhdGUgPSBVS19USFJFQURfQVRUUl9XQUlUQUJMRTsKPj4+ICsKPj4+ICvCoMKgwqAg
cmV0dXJuIDA7Cj4+PiArfQo+Pj4gKwo+Pj4gK2ludCB1a190aHJlYWRfYXR0cl9zZXRfcHJpbyh1
a190aHJlYWRfYXR0cl90ICphdHRyLCBwcmlvX3QgcHJpbykKPj4+ICt7Cj4+PiArwqDCoMKgIGlu
dCByYyA9IC1FSU5WQUw7Cj4+PiArCj4+PiArwqDCoMKgIGlmIChhdHRyID09IE5VTEwpCj4+PiAr
wqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJjOwo+Pj4gKwo+Pj4gK8KgwqDCoCBpZiAocHJpbyA+PSBV
S19USFJFQURfQVRUUl9QUklPX01JTiAmJgo+Pj4gK8KgwqDCoMKgwqDCoMKgIHByaW8gPD0gVUtf
VEhSRUFEX0FUVFJfUFJJT19NQVgpIHsKPj4+ICvCoMKgwqDCoMKgwqDCoCBhdHRyLT5wcmlvID0g
cHJpbzsKPj4+ICvCoMKgwqDCoMKgwqDCoCByYyA9IDA7Cj4+PiArwqDCoMKgIH0KPj4+ICsKPj4+
ICvCoMKgwqAgcmV0dXJuIHJjOwo+Pj4gK30KPj4+ICsKPj4+ICtpbnQgdWtfdGhyZWFkX2F0dHJf
Z2V0X3ByaW8oY29uc3QgdWtfdGhyZWFkX2F0dHJfdCAqYXR0ciwgcHJpb190ICpwcmlvKQo+Pj4g
K3sKPj4+ICvCoMKgwqAgaWYgKGF0dHIgPT0gTlVMTCB8fCBwcmlvID09IE5VTEwpCj4+PiArwqDC
oMKgwqDCoMKgwqAgcmV0dXJuIC1FSU5WQUw7Cj4+PiArCj4+PiArwqDCoMKgICpwcmlvID0gYXR0
ci0+cHJpbzsKPj4+ICsKPj4+ICvCoMKgwqAgcmV0dXJuIDA7Cj4+PiArfQo+Pj4gKwo+Pj4gK2lu
dCB1a190aHJlYWRfYXR0cl9zZXRfdGltZXNsaWNlKHVrX3RocmVhZF9hdHRyX3QgKmF0dHIsIF9f
bnNlYwo+Pj4gdGltZXNsaWNlKQo+Pj4gK3sKPj4+ICvCoMKgwqAgaWYgKGF0dHIgPT0gTlVMTCkK
Pj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVJTlZBTDsKPj4+ICsKPj4+ICvCoMKgwqAgaWYg
KHRpbWVzbGljZSA8IFVLUExBVF9USU1FX1RJQ0tfTlNFQykKPj4+ICvCoMKgwqDCoMKgwqDCoCBy
ZXR1cm4gLUVJTlZBTDsKPj4+ICsKPj4+ICvCoMKgwqAgYXR0ci0+dGltZXNsaWNlID0gdGltZXNs
aWNlOwo+Pj4gKwo+Pj4gK8KgwqDCoCByZXR1cm4gMDsKPj4+ICt9Cj4+PiArCj4+PiAraW50IHVr
X3RocmVhZF9hdHRyX2dldF90aW1lc2xpY2UoY29uc3QgdWtfdGhyZWFkX2F0dHJfdCAqYXR0ciwg
X19uc2VjCj4+PiAqdGltZXNsaWNlKQo+Pj4gK3sKPj4+ICvCoMKgwqAgaWYgKGF0dHIgPT0gTlVM
TCB8fCB0aW1lc2xpY2UgPT0gTlVMTCkKPj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVJTlZB
TDsKPj4+ICsKPj4+ICvCoMKgwqAgKnRpbWVzbGljZSA9IGF0dHItPnRpbWVzbGljZTsKPj4+ICsK
Pj4+ICvCoMKgwqAgcmV0dXJuIDA7Cj4+PiArfQo+Pj4gZGlmZiAtLWdpdCBhL2xpYi91a3NjaGVk
Y29vcC9zY2hlZGNvb3AuYyBiL2xpYi91a3NjaGVkY29vcC9zY2hlZGNvb3AuYwo+Pj4gaW5kZXgg
M2UzYTkyZi4uOTdjMGQ3YyAxMDA2NDQKPj4+IC0tLSBhL2xpYi91a3NjaGVkY29vcC9zY2hlZGNv
b3AuYwo+Pj4gKysrIGIvbGliL3Vrc2NoZWRjb29wL3NjaGVkY29vcC5jCj4+PiBAQCAtMTMyLDcg
KzEzMiw4IEBAIHN0YXRpYyB2b2lkIHNjaGVkY29vcF9zY2hlZHVsZShzdHJ1Y3QgdWtfc2NoZWQg
KnMpCj4+PiAgwqDCoMKgwqDCoCB9Cj4+PiAgwqAgfQo+Pj4gIMKgIC1zdGF0aWMgdm9pZCBzY2hl
ZGNvb3BfdGhyZWFkX2FkZChzdHJ1Y3QgdWtfc2NoZWQgKnMsIHN0cnVjdAo+Pj4gdWtfdGhyZWFk
ICp0KQo+Pj4gK3N0YXRpYyB2b2lkIHNjaGVkY29vcF90aHJlYWRfYWRkKHN0cnVjdCB1a19zY2hl
ZCAqcywgc3RydWN0IHVrX3RocmVhZAo+Pj4gKnQsCj4+PiArwqDCoMKgwqDCoMKgwqAgc3RydWN0
IHVrX3RocmVhZF9hdHRyICphdHRyKQo+Pj4gIMKgIHsKPj4+ICDCoMKgwqDCoMKgIHVuc2lnbmVk
IGxvbmcgZmxhZ3M7Cj4+PiAgwqDCoMKgwqDCoCBzdHJ1Y3Qgc2NoZWRjb29wX3ByaXZhdGUgKnBy
diA9IHMtPnBydjsKPj4+IEBAIC0yMTAsNyArMjExLDggQEAgc3RydWN0IHVrX3NjaGVkICp1a19z
Y2hlZGNvb3BfaW5pdChzdHJ1Y3QgdWtfYWxsb2MKPj4+ICphKQo+Pj4gIMKgwqDCoMKgwqAgdWtf
c2NoZWRfaW5pdChzY2hlZCwKPj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzY2hlZGNv
b3BfeWllbGQsCj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc2NoZWRjb29wX3RocmVh
ZF9hZGQsCj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzY2hlZGNvb3BfdGhyZWFkX3JlbW92
ZSk7Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzY2hlZGNvb3BfdGhyZWFkX3JlbW92ZSwK
Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwpOwo+Pj4g
IMKgIMKgwqDCoMKgwqAgcmV0dXJuIHNjaGVkOwo+Pj4gIMKgIH0KPj4+Cj4+CgotLSAKRHIuIEZs
b3JpYW4gU2NobWlkdArjg5Xjg63jg7zjg6rjgqLjg7Pjg7vjgrfjg6Xjg5/jg4Pjg4gKUmVzZWFy
Y2ggU2NpZW50aXN0LApTeXN0ZW1zIGFuZCBNYWNoaW5lIExlYXJuaW5nIEdyb3VwCk5FQyBMYWJv
cmF0b3JpZXMgRXVyb3BlCkt1cmbDvHJzdGVuLUFubGFnZSAzNiwgRC02OTExNSBIZWlkZWxiZXJn
ClRlbC4gICAgICs0OSAoMCk2MjIxIDQzNDItMjY1CkZheDogICAgICs0OSAoMCk2MjIxIDQzNDIt
MTU1CmUtbWFpbDogIGZsb3JpYW4uc2NobWlkdEBuZWNsYWIuZXUKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJlZ2lzdGVyZWQgYXQg
QW10c2dlcmljaHQgTWFubmhlaW0sIEdlcm1hbnksIEhSQjcyODU1OAoKX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlz
dApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9q
ZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Thu Feb 21 10:59:35 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 21 Feb 2019 10:59:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gwm4l-0008Hr-0p; Thu, 21 Feb 2019 10:59:35 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=GXzC=Q4=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1gwm4i-0008Hk-VT
 for minios-devel@lists.xen.org; Thu, 21 Feb 2019 10:59:33 +0000
X-Inumbo-ID: c3b02617-35c7-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id c3b02617-35c7-11e9-bc90-bc764e045a96;
 Thu, 21 Feb 2019 10:59:31 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id D104AF2087;
 Thu, 21 Feb 2019 11:57:20 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id DgK0x0746LUS; Thu, 21 Feb 2019 11:57:20 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 9F77DF2062;
 Thu, 21 Feb 2019 11:57:16 +0100 (CET)
Received: from [10.1.2.30] (10.1.2.30) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Thu, 21 Feb 2019 11:57:16
 +0100
To: Costin Lupu <costin.lup@gmail.com>, <minios-devel@lists.xen.org>
References: <20190110152212.14518-1-costin.lupu@cs.pub.ro>
 <20190110152212.14518-4-costin.lupu@cs.pub.ro>
 <310885cf-2f1b-0166-4433-4c60438c8998@neclab.eu>
 <608cbd68-0c2c-73ca-5a32-9e16da24e579@gmail.com>
From: Florian Schmidt <Florian.Schmidt@neclab.eu>
Message-ID: <12e6563d-70f2-45c7-e3f4-f189513963b3@neclab.eu>
Date: Thu, 21 Feb 2019 11:57:15 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <608cbd68-0c2c-73ca-5a32-9e16da24e579@gmail.com>
Content-Language: en-US
X-Originating-IP: [10.1.2.30]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 3/8] lib/uksched: Introduce
 thread attributes
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: felipe.huici@neclab.eu, simon.kuenzer@neclab.eu, yuri.volchkov@neclab.eu
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

UGVyZmVjdCwgdGhhbmtzIQoKT24gMi8yMS8xOSAxMToxMCBBTSwgQ29zdGluIEx1cHUgd3JvdGU6
Cj4gT24gMS8yMy8xOSAxMDo0OSBBTSwgRmxvcmlhbiBTY2htaWR0IHdyb3RlOgo+PiBIaSBDb3N0
aW4sCj4+Cj4+IEkgY2hlY2tlZCBGZWxpcGUncyBjb21tZW50cywgYW5kIEkgYWdyZWUgd2l0aCB5
b3VyIGNoYW5nZXMgaW4gdjIuIGhlCj4+IHBhdGNoIGxvb2tzIGdvb2QgdG8gbWUsIGV4Y2VwdCBm
b3Igb25lIG1pbm9yIHRoaW5nOgo+Pgo+PiBPbiAxLzExLzE5IDEyOjIyIEFNLCBDb3N0aW4gTHVw
dSB3cm90ZToKPj4+IGRpZmYgLS1naXQgYS9saWIvdWtzY2hlZC9pbmNsdWRlL3VrL3RocmVhZF9h
dHRyLmgKPj4+IGIvbGliL3Vrc2NoZWQvaW5jbHVkZS91ay90aHJlYWRfYXR0ci5oCj4+PiBuZXcg
ZmlsZSBtb2RlIDEwMDY0NAo+Pj4gaW5kZXggMDAwMDAwMC4uOTNkY2Q1Ywo+Pj4gLS0tIC9kZXYv
bnVsbAo+Pj4gKysrIGIvbGliL3Vrc2NoZWQvaW5jbHVkZS91ay90aHJlYWRfYXR0ci5oCj4+PiBA
QCAtMCwwICsxLDgxIEBACj4+PiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNs
YXVzZSAqLwo+Pj4gKy8qCj4+PiArICogQXV0aG9yczogQ29zdGluIEx1cHUgPGNvc3Rpbi5sdXB1
QGNzLnB1Yi5ybz4KPj4+ICsgKgo+Pj4gKyAqIENvcHlyaWdodCAoYykgMjAxOSwgTkVDIEV1cm9w
ZSBMdGQuLCBORUMgQ29ycG9yYXRpb24uIEFsbCByaWdodHMKPj4+IHJlc2VydmVkLgo+Pj4gKyAq
Cj4+PiArICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Cj4+PiArICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCj4+PiArICogYXJlIG1ldDoKPj4+
ICsgKgo+Pj4gKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Cj4+PiArICrCoMKgwqAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgo+Pj4gKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Cj4+PiArICrCoMKgwqAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCj4+PiB0aGUKPj4+ICsgKsKgwqDCoCBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKPj4+IGRpc3RyaWJ1
dGlvbi4KPj4+ICsgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVy
IG5vciB0aGUgbmFtZXMgb2YgaXRzCj4+PiArICrCoMKgwqAgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCj4+PiBmcm9tCj4+PiAr
ICrCoMKgwqAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KPj4+ICsgKgo+Pj4gKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORAo+Pj4gQ09OVFJJQlVUT1JTICJBUyBJUyIKPj4+ICsgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRAo+Pj4gVE8sIFRIRQo+Pj4gKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgo+Pj4gUFVSUE9TRQo+Pj4gKyAq
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBP
Ugo+Pj4gQ09OVFJJQlVUT1JTIEJFCj4+PiArICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgo+Pj4gKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCj4+PiArICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SCj4+PiBCVVNJTkVTUwo+Pj4gKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLAo+Pj4gV0hFVEhFUiBJ
Tgo+Pj4gKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUgo+Pj4gT1RIRVJXSVNFKQo+Pj4gKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGCj4+PiBBRFZJU0VEIE9GIFRI
RQo+Pj4gKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgo+Pj4gKyAqCj4+PiArICogVEhJ
UyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4KPj4+
ICsgKi8KPj4+ICsKPj4+ICsjaWZuZGVmIF9fVUtfU0NIRURfVEhSRUFEX0FUVFJfSF9fCj4+PiAr
I2RlZmluZSBfX1VLX1NDSEVEX1RIUkVBRF9BVFRSX0hfXwo+Pj4gKwo+Pj4gKyNpbmNsdWRlIDx1
ay9hcmNoL3RpbWUuaD4KPj4+ICsKPj4+ICsjaWZkZWYgX19jcGx1c3BsdXMKPj4+ICtleHRlcm4g
IkMiIHsKPj4+ICsjZW5kaWYKPj4+ICsKPj4+ICsjZGVmaW5lIFVLX1RIUkVBRF9BVFRSX1dBSVRB
QkxFwqDCoMKgwqDCoMKgwqDCoCAwCj4+PiArI2RlZmluZSBVS19USFJFQURfQVRUUl9ERVRBQ0hF
RMKgwqDCoMKgwqDCoMKgwqAgMQo+Pj4gKwo+Pj4gKyNkZWZpbmUgVUtfVEhSRUFEX0FUVFJfUFJJ
T19JTlZBTElEwqDCoMKgwqAgKC0xKQo+Pj4gKyNkZWZpbmUgVUtfVEhSRUFEX0FUVFJfUFJJT19N
SU7CoMKgwqDCoMKgwqDCoMKgIDAKPj4+ICsjZGVmaW5lIFVLX1RIUkVBRF9BVFRSX1BSSU9fTUFY
wqDCoMKgwqDCoMKgwqDCoCAyNTUKPj4+ICsjZGVmaW5lIFVLX1RIUkVBRF9BVFRSX1BSSU9fREVG
QVVMVMKgwqDCoMKgIDEyNwo+Pj4gKwo+Pj4gKyNkZWZpbmUgVUtfVEhSRUFEX0FUVFJfVElNRVNM
SUNFX05JTMKgwqDCoCAwCj4+PiArCj4+PiArdHlwZWRlZiBpbnQgcHJpb190Owo+Pj4gKwo+Pj4g
K3R5cGVkZWYgc3RydWN0IHVrX3RocmVhZF9hdHRyIHsKPj4+ICvCoMKgwqAgLyoqPCBJcyBub24t
emVybyBpZiB0aHJlYWQgc2hvdWxkIGRldGFjaCAqLwo+Pj4gK8KgwqDCoCBpbnQgaXNfZGV0YWNo
ZWQ7Cj4+PiArwqDCoMKgIC8qKjwgUHJpb3JpdHkgKi8KPj4+ICvCoMKgwqAgcHJpb190IHByaW87
Cj4+PiArwqDCoMKgIC8qKjwgVGltZSBzbGljZSBpbiBuYW5vc2Vjb25kcyAqLwo+Pgo+PiBJcyB0
aGVyZSBzb21lIHJlYXNvbiBmb3IgdGhpcyBjb21tZW50IHN0eWxlPyAoZG91YmxlLWFzdGVyaXNr
IGFuZAo+PiBsZXNzLXRoYW4pCj4gCj4gV2lsbCBnZXQgcmlkIG9mIHRoYXQgaW4gdjMuCj4gCj4g
Q29zdGluCj4gCgotLSAKRHIuIEZsb3JpYW4gU2NobWlkdArjg5Xjg63jg7zjg6rjgqLjg7Pjg7vj
grfjg6Xjg5/jg4Pjg4gKUmVzZWFyY2ggU2NpZW50aXN0LApTeXN0ZW1zIGFuZCBNYWNoaW5lIExl
YXJuaW5nIEdyb3VwCk5FQyBMYWJvcmF0b3JpZXMgRXVyb3BlCkt1cmbDvHJzdGVuLUFubGFnZSAz
NiwgRC02OTExNSBIZWlkZWxiZXJnClRlbC4gICAgICs0OSAoMCk2MjIxIDQzNDItMjY1CkZheDog
ICAgICs0OSAoMCk2MjIxIDQzNDItMTU1CmUtbWFpbDogIGZsb3JpYW4uc2NobWlkdEBuZWNsYWIu
ZXUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09ClJlZ2lzdGVyZWQgYXQgQW10c2dlcmljaHQgTWFubmhlaW0sIEdlcm1hbnksIEhSQjcy
ODU1OAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWlu
aW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcK
aHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZl
bA==

From minios-devel-bounces@lists.xenproject.org Thu Feb 21 11:07:49 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 21 Feb 2019 11:07:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gwmCi-0000eF-Lj; Thu, 21 Feb 2019 11:07:48 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=gHww=Q4=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1gwmCg-0000eA-NW
 for minios-devel@lists.xen.org; Thu, 21 Feb 2019 11:07:46 +0000
X-Inumbo-ID: e9aa423e-35c8-11e9-bc90-bc764e045a96
Received: from queen.nlehd.de (unknown [195.37.154.80])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id e9aa423e-35c8-11e9-bc90-bc764e045a96;
 Thu, 21 Feb 2019 11:07:44 +0000 (UTC)
Received: from c414.ant-net (c414.ant-net [192.168.0.156])
 by queen.nlehd.de (Postfix) with ESMTP id 9EDB841677;
 Thu, 21 Feb 2019 12:07:44 +0100 (CET)
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: minios-devel@lists.xen.org
Date: Thu, 21 Feb 2019 12:07:40 +0100
Message-Id: <20190221110740.21467-1-simon.kuenzer@neclab.eu>
X-Mailer: git-send-email 2.11.0
Subject: [Minios-devel] [UNIKRAFT/HELLOWORLD PATCH] Use $(MAKE) for invoking
 make
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: florian.schmidt@neclab.eu, Simon Kuenzer <simon.kuenzer@neclab.eu>,
 sharan.santhanam@neclab.eu, yuri.volchkov@neclab.eu
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VXNlICQoTUFLRSkgZm9yIGludm9raW5nIG1ha2UgaW5zdGVhZCBvZiBgbWFrZWAuIFRoaXMgbWFr
ZXMgYnVpbGRpbmcKd29ya2luZyBldmVuIG9uIHN5c3RlbXMgd2hlcmUgYG1ha2VgIGlzIGluc3Rh
bGxlZCB1bmRlciBhIGRpZmZlcmVudApuYW1lLgoKU2lnbmVkLW9mZi1ieTogU2ltb24gS3Vlbnpl
ciA8c2ltb24ua3VlbnplckBuZWNsYWIuZXU+Ci0tLQogTWFrZWZpbGUgfCA0ICsrLS0KIDEgZmls
ZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv
TWFrZWZpbGUgYi9NYWtlZmlsZQppbmRleCA2MDEyNTI4Li41NDI2YmFlIDEwMDY0NAotLS0gYS9N
YWtlZmlsZQorKysgYi9NYWtlZmlsZQpAQCAtMyw3ICszLDcgQEAgVUtfTElCUyA/PSAkKFBXRCkv
Li4vLi4vbGlicwogTElCUyA6PQogCiBhbGw6Ci0JQG1ha2UgLUMgJChVS19ST09UKSBBPSQoUFdE
KSBMPSQoTElCUykKKwlAJChNQUtFKSAtQyAkKFVLX1JPT1QpIEE9JChQV0QpIEw9JChMSUJTKQog
CiAkKE1BS0VDTURHT0FMUyk6Ci0JQG1ha2UgLUMgJChVS19ST09UKSBBPSQoUFdEKSBMPSQoTElC
UykgJChNQUtFQ01ER09BTFMpCisJQCQoTUFLRSkgLUMgJChVS19ST09UKSBBPSQoUFdEKSBMPSQo
TElCUykgJChNQUtFQ01ER09BTFMpCi0tIAoyLjExLjAKCgpfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlv
cy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3Jn
L21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Thu Feb 21 11:17:32 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 21 Feb 2019 11:17:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gwmM7-0001GL-D7; Thu, 21 Feb 2019 11:17:31 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=mQ+E=Q4=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1gwmM5-0001GG-Ty
 for minios-devel@lists.xen.org; Thu, 21 Feb 2019 11:17:29 +0000
X-Inumbo-ID: 45ac78c0-35ca-11e9-bc90-bc764e045a96
Received: from mail-wr1-x442.google.com (unknown [2a00:1450:4864:20::442])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 45ac78c0-35ca-11e9-bc90-bc764e045a96;
 Thu, 21 Feb 2019 11:17:28 +0000 (UTC)
Received: by mail-wr1-x442.google.com with SMTP id q1so29562159wrp.7
 for <minios-devel@lists.xen.org>; Thu, 21 Feb 2019 03:17:28 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=LNgivzAXm7Ph96NhybzJALJ9EbFjjiWiUisQTgMS0g8=;
 b=dNC/1R0uKQDLoVCx2kgW54n0i3ByyIFX/3+K3Ci1q6It4YpdI40yOdzRXvh6afQQ0P
 nmbFBkHyLgQGScTnu/CYWpjybXPg2qYEXLcvreQGeKsL+RFK6WCvoghD2R8SnMqTBQwn
 ElhJhpBjM3U1+NXP0D/LyWAQNjl7VJRFK3Yd53oJHvSjpSdkoRMdJPyRDIMdDF1lVpY6
 7FgMaPdL7Vd5t3e3QPD+dB55bUKP1fw9cSJdpueUfp9TC6zQobOj56hQgK1mL9NX9Lkx
 FGCHA4D6I0a/HP9jC7yiJ88HUCFip1kvamKeUxd/hukKBwzwwooCXkDOYNXRgPuc80qD
 QI/w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=LNgivzAXm7Ph96NhybzJALJ9EbFjjiWiUisQTgMS0g8=;
 b=EP8qaXkq5Zs/IioviKAvsIl+27ZWiUjxUY8SPMvFElawBUlsQo55h9aDMrTTtLT+++
 R1RQqdgQG6xFFoSDJi+r8/GQi92I1X1O3hpdeMUkIqT+09qZin1UqcEjQZCefpRu1aVN
 aPkvP5BJMJlMTya9ZolusBaHsWAuj2WXgx00rjlPj33ld9IkqnI6Z122lLVYuO7vIWmk
 CeVPv+wMN1mboQN7nB437WNoBni5hpUl8A27VMheiWKfXpuDvL0YxXMfrDcP5TdSuw11
 R4J5FQqs6bRBO2dS6wcXWrKyVeISpYPk0cgn067NkFtguNN+HS5DGrL6sOQOuHG3d7gK
 HHUg==
X-Gm-Message-State: AHQUAuZaMASR63yL9OPlR6EL3g70wwEBoz1N62o/WzStJw9B/TtshnzR
 4Ep/5VOhTCRanPi83PRXwz0=
X-Google-Smtp-Source: AHgI3IaQxpwFXY2JW02jgJyO/InVDwp7q2AJkXwc2gpxn79Nf3R/iEjyhhy+IP6CXIzi9c/ywwGmFg==
X-Received: by 2002:adf:ba12:: with SMTP id o18mr30423400wrg.326.1550747847588; 
 Thu, 21 Feb 2019 03:17:27 -0800 (PST)
Received: from [172.19.2.117] ([141.85.233.142])
 by smtp.gmail.com with ESMTPSA id e6sm25063033wrt.14.2019.02.21.03.17.26
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Thu, 21 Feb 2019 03:17:27 -0800 (PST)
To: Florian Schmidt <Florian.Schmidt@neclab.eu>, minios-devel@lists.xen.org
References: <20190110152212.14518-1-costin.lupu@cs.pub.ro>
 <20190110152212.14518-9-costin.lupu@cs.pub.ro>
 <40a7c59b-644e-8f27-17bb-4e8bfb994d28@neclab.eu>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <6c74b309-af48-e3df-963e-ef4c1362ee81@gmail.com>
Date: Thu, 21 Feb 2019 13:17:26 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.5.1
MIME-Version: 1.0
In-Reply-To: <40a7c59b-644e-8f27-17bb-4e8bfb994d28@neclab.eu>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 8/8] lib/uksched: Minor
 refinements
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: felipe.huici@neclab.eu, simon.kuenzer@neclab.eu, yuri.volchkov@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGkgRmxvcmlhbiwKCk9uIDEvMjMvMTkgNDoxNSBQTSwgRmxvcmlhbiBTY2htaWR0IHdyb3RlOgo+
IEhpIENvc3RpbiwKPiAKPiBteSBzdWdnZXN0aW9uIGZvciB0aGlzIHBhdGNoIHdvdWxkIGJlIHRv
IGFjdHVhbGx5IHNwbGl0IGl0LiBBbGwgdGhvc2UKPiB0aGluZ3MgYXJlIG1vcmUgb3IgbGVzcyBp
bmRlcGVuZGVudCwgYW5kIHdoaWxlIGVhY2ggcGF0Y2ggd291bGQgdGhlbiBiZQo+IHZlcnkgc21h
bGwsIEkgdGhpbmsgaXQncyBiZXR0ZXIgdG8gaGF2ZSBjb25jZXB0dWFsbHkgZGlmZmVyZW50IGNv
ZGUKPiBjaGFuZ2VzIGluIHNlcGFyYXRlIGNvbW1pdHMuIFRoYXQgd2F5IHlvdSBjb3VsZCBhbHNv
IGFkZCBzb21lIHNob3J0Cj4gZGVzY3JpcHRpb24gYWJvdXQgdGhlIHdoeSdzIG9mIHRoZSBwYXRj
aGVzLiBGb3IgZXhhbXBsZSwgd2h5IHRoZQo+IHNjaGVkdWxlcnMgc2hvdWxkIHNldCB0aGUgc2No
ZWR1bGVyIHJlZmVyZW5jZSBvbiB0aGUgdGhyZWFkIGluc3RlYWQgb2YKPiB0aHJlYWQgYWRkaW5n
IGxvZ2ljLCBvciB3aHkgdWtfc2NoZWRfc3RhcnQgc2hvdWxkIGJlIHB1YmxpYy4KPiAKCnYzIHdp
bGwgaGF2ZSB0aGVzZSBzcGxpdCBpbiBzZXBhcmF0ZSBwYXRjaGVzLgoKPiBBbHNvLCBJJ20gbm90
IHN1cmUgSSB1bmRlcnN0YW5kIHRoZSByZWVudCBwYXJ0LiBUaGUgUkVFTlRfUFRSIGdldHMKPiBp
bml0aWFsaXplZCwgYnV0IHRoZW4gbmV2ZXIgdXNlZD8gSXMgdGhpcyBzdHJpY3RseSBmb3IgdGhl
IF9yIGZ1bmN0aW9ucwo+IG9mIG5ld2xpYj8gQW5kIHdoYXQgaGFwcGVucyBpZiB5b3UgZG9uJ3Qg
YWRkIHRoaXM/IEkgaGF2ZSB0byBzYXkgSSdtIG5vdAo+IGEgaHVnZSBmYW4gb2YgaGF2aW5nIGNv
ZGUgdGhhdCBkZWFscyB3aXRoIGV4dGVybmFsIGxpYnJhcmllcyBpbiB0aGUgbWFpbgo+IHVuaWty
YWZ0IGNvZGUgYmFzZSwgYnV0IEknbSBvcGVuIHRvIGFyZ3VtZW50cy4KCkluIGRlZWQsIEkgZm9y
Z290IHRvIGNvcHkgdGhlIF9fZ2V0cmVlbnQgZnVuY3Rpb24gZnJvbSBtaW5pb3MgWzFdIHdoaWNo
CnJldHVybnMgdGhlIHJlZmVyZW5jZSB0byB0aGUgUkVFTlRfUFRSIG9mIHRoZSBjdXJyZW50IHRo
cmVhZC4KCkFuZCB5ZXMsIGl0J3MgZm9yIHRoZSByZWVudHJhbnQgZnVuY3Rpb25zIG9mIG5ld2xp
Yi4KClRvIGNvbnRpbnVlIGFuc3dlcmluZyB0byB5b3VyIHF1ZXN0aW9ucywgcmVlbnQgc3RydWN0
dXJlIGlzb2xhdGVzIHRoZQpjdXJyZW50IHRocmVhZCBjb250ZXh0IChlLmcuIGl0IGFsc28gY29u
dGFpbnMgdGhlIGVycm5vIGZvciB0aGUgY3VycmVudAp0aHJlYWQpLiBJdCdzIGEgd2F5IG9mIGNv
bW11bmljYXRpbmcgdGhlIHRocmVhZCBjb250ZXh0IGJldHdlZW4gdGhlCmxpYnJhcnkgYW5kIGFw
cGxpY2F0aW9uIFsyXS4KCkl0J3MgdHJ1ZSBJIGRpZG4ndCBmaW5kIGl0IGVsc2V3aGVyZSwgbm90
IGluIG11c2wgb3IgZ2xpYmMuIFNvIHdoYXQgZG8KeW91IGFkdmlzZSBvbiB0aGlzIG9uZT8KClsx
XQpodHRwOi8veGVuYml0cy54ZW5wcm9qZWN0Lm9yZy9naXR3ZWIvP3A9bWluaS1vcy5naXQ7YT1i
bG9iO2Y9c2NoZWQuYztoYj1IRUFEI2wxNTEKWzJdCmh0dHBzOi8vd3d3LmVtYmVkZGVkLmNvbS9l
bGVjdHJvbmljcy1ibG9ncy9pbmR1c3RyeS1jb21tZW50LzQwMjM5MjIvRW1iZWRkaW5nLUdOVS1O
ZXdsaWItUGFydC0yCgpDb3N0aW4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3Rz
LnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0
aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Thu Feb 21 11:22:44 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 21 Feb 2019 11:22:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gwmR8-00020g-Qc; Thu, 21 Feb 2019 11:22:42 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=GXzC=Q4=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1gwmR7-00020b-4Q
 for minios-devel@lists.xen.org; Thu, 21 Feb 2019 11:22:41 +0000
X-Inumbo-ID: ff06b59b-35ca-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id ff06b59b-35ca-11e9-bc90-bc764e045a96;
 Thu, 21 Feb 2019 11:22:39 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 5DE4A104E37;
 Thu, 21 Feb 2019 12:20:29 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 1uMEBgzckgNr; Thu, 21 Feb 2019 12:20:29 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 38E30104E2C
 for <minios-devel@lists.xen.org>; Thu, 21 Feb 2019 12:20:27 +0100 (CET)
Received: from [10.1.2.30] (10.1.2.30) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Thu, 21 Feb 2019 12:20:26
 +0100
To: Simon Kuenzer <simon.kuenzer@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190221110740.21467-1-simon.kuenzer@neclab.eu>
From: Florian Schmidt <Florian.Schmidt@neclab.eu>
Message-ID: <9b7d0c10-482e-fe54-1533-0ebcfcab2f00@neclab.eu>
Date: Thu, 21 Feb 2019 12:20:26 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190221110740.21467-1-simon.kuenzer@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.30]
Subject: Re: [Minios-devel] [UNIKRAFT/HELLOWORLD PATCH] Use $(MAKE) for
 invoking make
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: sharan.santhanam@neclab.eu, yuri.volchkov@neclab.eu
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

UmV2aWV3ZWQtYnk6IEZsb3JpYW4gU2NobWlkdCA8Zmxvcmlhbi5zY2htaWR0QG5lY2xhYi5ldT4K
Ck9uIDIvMjEvMTkgMTI6MDcgUE0sIFNpbW9uIEt1ZW56ZXIgd3JvdGU6Cj4gVXNlICQoTUFLRSkg
Zm9yIGludm9raW5nIG1ha2UgaW5zdGVhZCBvZiBgbWFrZWAuIFRoaXMgbWFrZXMgYnVpbGRpbmcK
PiB3b3JraW5nIGV2ZW4gb24gc3lzdGVtcyB3aGVyZSBgbWFrZWAgaXMgaW5zdGFsbGVkIHVuZGVy
IGEgZGlmZmVyZW50Cj4gbmFtZS4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBTaW1vbiBLdWVuemVyIDxz
aW1vbi5rdWVuemVyQG5lY2xhYi5ldT4KPiAtLS0KPiAgIE1ha2VmaWxlIHwgNCArKy0tCj4gICAx
IGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYg
LS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCj4gaW5kZXggNjAxMjUyOC4uNTQyNmJhZSAxMDA2
NDQKPiAtLS0gYS9NYWtlZmlsZQo+ICsrKyBiL01ha2VmaWxlCj4gQEAgLTMsNyArMyw3IEBAIFVL
X0xJQlMgPz0gJChQV0QpLy4uLy4uL2xpYnMKPiAgIExJQlMgOj0KPiAgIAo+ICAgYWxsOgo+IC0J
QG1ha2UgLUMgJChVS19ST09UKSBBPSQoUFdEKSBMPSQoTElCUykKPiArCUAkKE1BS0UpIC1DICQo
VUtfUk9PVCkgQT0kKFBXRCkgTD0kKExJQlMpCj4gICAKPiAgICQoTUFLRUNNREdPQUxTKToKPiAt
CUBtYWtlIC1DICQoVUtfUk9PVCkgQT0kKFBXRCkgTD0kKExJQlMpICQoTUFLRUNNREdPQUxTKQo+
ICsJQCQoTUFLRSkgLUMgJChVS19ST09UKSBBPSQoUFdEKSBMPSQoTElCUykgJChNQUtFQ01ER09B
TFMpCj4gCgotLSAKRHIuIEZsb3JpYW4gU2NobWlkdArjg5Xjg63jg7zjg6rjgqLjg7Pjg7vjgrfj
g6Xjg5/jg4Pjg4gKUmVzZWFyY2ggU2NpZW50aXN0LApTeXN0ZW1zIGFuZCBNYWNoaW5lIExlYXJu
aW5nIEdyb3VwCk5FQyBMYWJvcmF0b3JpZXMgRXVyb3BlCkt1cmbDvHJzdGVuLUFubGFnZSAzNiwg
RC02OTExNSBIZWlkZWxiZXJnClRlbC4gICAgICs0OSAoMCk2MjIxIDQzNDItMjY1CkZheDogICAg
ICs0OSAoMCk2MjIxIDQzNDItMTU1CmUtbWFpbDogIGZsb3JpYW4uc2NobWlkdEBuZWNsYWIuZXUK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09ClJlZ2lzdGVyZWQgYXQgQW10c2dlcmljaHQgTWFubmhlaW0sIEdlcm1hbnksIEhSQjcyODU1
OAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9z
LWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0
cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Thu Feb 21 11:46:35 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 21 Feb 2019 11:46:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gwmoF-0003tk-6y; Thu, 21 Feb 2019 11:46:35 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=mQ+E=Q4=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1gwmoE-0003te-1d
 for minios-devel@lists.xen.org; Thu, 21 Feb 2019 11:46:34 +0000
X-Inumbo-ID: 5541a8a1-35ce-11e9-bc90-bc764e045a96
Received: from mail-wr1-x443.google.com (unknown [2a00:1450:4864:20::443])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 5541a8a1-35ce-11e9-bc90-bc764e045a96;
 Thu, 21 Feb 2019 11:46:32 +0000 (UTC)
Received: by mail-wr1-x443.google.com with SMTP id w17so29618885wrn.12
 for <minios-devel@lists.xen.org>; Thu, 21 Feb 2019 03:46:32 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=yOZ9wqqiS8ksLb+A1Nz2gHimuGT6ob9ZFSeCeIkYJCM=;
 b=VWwl1xWQZU0wCtCcEAwalq6g0e6/HB+ukzEjfUYJwYZap2lC6+HQSDWojhuaxmnORs
 M4Pi4D7Wqd3tmr6Fo3y1tj/dGwVckQL8QIFsMbc5kpW0sf0775IrMUddSh2bwaw88vU4
 hVuDg93iRDbIB5CWRX96QrWAn1TZARoTEKB05LVhBip/x8I+9SM67zkDzBjsDNH5Q5dy
 ghPQn+OwtixkFvBBlTt9h7gNjEToggjsnMEQWAEwvBSvTgn3GF+AnbG2UE9DCufgZOL/
 +NDnNOfFXhH6vOVYhXEj0FeEbHEF3/QjOnU+Q3rYuITSVtYQ+pJhmMHMaMZeADwsdLNZ
 SopA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=yOZ9wqqiS8ksLb+A1Nz2gHimuGT6ob9ZFSeCeIkYJCM=;
 b=jPY0G9UojJVPaag+RdGFAkPLkWjrGxYm5EjPX1LCT6wPZoEd78sGbLuQa1ftuUljXp
 IACqsbZ4yoVsvBqX1AaaV6f5RdjUMcHH7Keez02MHSUHopWeMBMX9QbitQ0AQhcKNAja
 dL1t1tFvxq2yQfDXD/Ei4DFef2FoW/WClWISNUI+Wv4w2lDdf8G4tbSAS0Y65fT7xZ7N
 tfaMFkgAY5yFpUKVzil3ob3b0n8o5OPXKKPLAIYiML894OCMWyaqUc4T5Dg2VmPe3DJv
 k/YX5dPIloy0llVuzcdlEoOpOPWDXkSx/TsBeV65E24UdnqKmqpAD6zUpmJLB873qzpt
 poPw==
X-Gm-Message-State: AHQUAuYLlNCT2OPxVgy3+0SXQYJChBl/fzwb9tn84yDaByL3UFggheTX
 3p6wiDUajf7iXDybSWw1sg0=
X-Google-Smtp-Source: AHgI3Ia2wvfg4sO2z2Fz5dSft2wVlSswboe/YwRxEpg6WJfz92l5UJeu4ZduWdEBeuppJzM5nDTMNQ==
X-Received: by 2002:adf:fb05:: with SMTP id c5mr5137276wrr.297.1550749591628; 
 Thu, 21 Feb 2019 03:46:31 -0800 (PST)
Received: from [172.19.2.117] ([141.85.233.142])
 by smtp.gmail.com with ESMTPSA id r6sm9342559wrx.48.2019.02.21.03.46.30
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Thu, 21 Feb 2019 03:46:31 -0800 (PST)
To: Florian Schmidt <Florian.Schmidt@neclab.eu>, minios-devel@lists.xen.org
References: <20190110152212.14518-1-costin.lupu@cs.pub.ro>
 <20190110152212.14518-6-costin.lupu@cs.pub.ro>
 <2cb20775-7345-277a-820d-e5722003066d@neclab.eu>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <adf4df76-0a10-34a4-845d-51e446294a68@gmail.com>
Date: Thu, 21 Feb 2019 13:46:30 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.5.1
MIME-Version: 1.0
In-Reply-To: <2cb20775-7345-277a-820d-e5722003066d@neclab.eu>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 5/8] lib/uksched: Add support
 for waiting threads
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: felipe.huici@neclab.eu, simon.kuenzer@neclab.eu, yuri.volchkov@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGkgRmxvcmlhbiwKClBsZWFzZSBzZWUgbXkgY29tbWVudHMgaW5saW5lLgoKT24gMS8yMy8xOSAz
OjQ4IFBNLCBGbG9yaWFuIFNjaG1pZHQgd3JvdGU6Cj4gQWN0dWFsbHksIG5vdyB0aGF0IEkgbG9v
ayBhdCB0aGUgbmV4dCBwYXRjaC4uLgo+IAo+IE9uIDEvMTEvMTkgMTI6MjIgQU0sIENvc3RpbiBM
dXB1IHdyb3RlOgo+IAo+PiBkaWZmIC0tZ2l0IGEvbGliL3Vrc2NoZWRjb29wL3NjaGVkY29vcC5j
IGIvbGliL3Vrc2NoZWRjb29wL3NjaGVkY29vcC5jCj4+IGluZGV4IGU1NjUyNDAuLmY3YWI5MmQg
MTAwNjQ0Cj4+IC0tLSBhL2xpYi91a3NjaGVkY29vcC9zY2hlZGNvb3AuYwo+PiArKysgYi9saWIv
dWtzY2hlZGNvb3Avc2NoZWRjb29wLmMKPj4gQEAgLTEyNSw2ICsxMjUsMTIgQEAgc3RhdGljIHZv
aWQgc2NoZWRjb29wX3NjaGVkdWxlKHN0cnVjdCB1a19zY2hlZCAqcykKPj4gwqDCoMKgwqDCoMKg
wqDCoMKgIHVrX3NjaGVkX3RocmVhZF9zd2l0Y2gocywgcHJldiwgbmV4dCk7Cj4+IMKgIMKgwqDC
oMKgwqAgVUtfVEFJTFFfRk9SRUFDSF9TQUZFKHRocmVhZCwgJnBydi0+ZXhpdGVkX3RocmVhZHMs
Cj4+IHRocmVhZF9saXN0LCB0bXApIHsKPj4gK8KgwqDCoMKgwqDCoMKgIHN0cnVjdCB0aHJlYWRf
aW5mb19iYXNlICp0aWIgPSB0aHJlYWQtPnNjaGVkX2luZm87Cj4+ICsKPj4gK8KgwqDCoMKgwqDC
oMKgIGlmICghdGliLT5pc19kZXRhY2hlZCkKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyog
c29tZW9uZSB3aWxsIGV2ZW50dWFsbHkgd2FpdCBmb3IgaXQgKi8KPj4gK8KgwqDCoMKgwqDCoMKg
wqDCoMKgwqAgY29udGludWU7Cj4+ICsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGlmICh0aHJlYWQg
IT0gcHJldikgewo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBVS19UQUlMUV9SRU1PVkUo
JnBydi0+ZXhpdGVkX3RocmVhZHMsCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoCB0aHJlYWQsIHRocmVhZF9saXN0KTsKPj4gQEAgLTE2Nyw2ICsxNzMsNyBAQCBz
dGF0aWMgdm9pZCBzY2hlZGNvb3BfdGhyZWFkX3JlbW92ZShzdHJ1Y3QKPj4gdWtfc2NoZWQgKnMs
IHN0cnVjdCB1a190aHJlYWQgKnQpCj4+IMKgIMKgwqDCoMKgwqAgLyogUHV0IG9udG8gZXhpdGVk
IGxpc3QgKi8KPj4gwqDCoMKgwqDCoCBVS19UQUlMUV9JTlNFUlRfSEVBRCgmcHJ2LT5leGl0ZWRf
dGhyZWFkcywgdCwgdGhyZWFkX2xpc3QpOwo+PiArwqDCoMKgIHVrX3RocmVhZF9leGl0KHQpOwo+
PiDCoCDCoMKgwqDCoMKgIHVrcGxhdF9sY3B1X3Jlc3RvcmVfaXJxZihmbGFncyk7Cj4gCj4gRG9l
c24ndCBjYWxsaW5nIHVrX3RocmVhZF9leGl0KHQpIG9ubHkgYWZ0ZXIgcHV0dGluZyBpdCBvbiB0
aGUKPiBleGl0ZWRfdGhyZWFkcyBsaXN0IGEgcmFjZSBjb25kaXRpb24/IEJlY2F1c2UgaWYgbm93
IHRoZSBtYWluIHNjaGVkdWxpbmcKPiBsb29wIChhcyBpbiBzY2hlZGNvb3Bfc2NoZWR1bGUoKSBp
cyBjYWxsZWQgYWdhaW4gYWZ0ZXIgaW5zZXJ0aW5nLCBidXQKPiBiZWZvcmUgdGhyZWFkX2V4aXQo
KSBpcyBjYWxsZWQsIHRoZSBjb3VsZCBsZWFkIHRvIGFuIGFzc2VydGlvbiBmYWlsdXJlCj4gd2hl
biBzY2hlZGNvb3Bfc2NoZWR1bGUoKSBjYWxscyB1a19zY2hlZF90aHJlYWRfZGVzdHJveSgpIG9u
IHRoYXQKPiB0aHJlYWQsIGJ1dCB1a190aHJlYWRfZXhpdCgpIGhhc24ndCBmaW5pc2hlZCB5ZXQu
Cj4gCgpXaWxsIG1vdmUgdGhpcyBiZWZvcmUgdGhlIGluc2VydGlvbiBpbiB2My4KCj4gSSB1bmRl
cnN0YW5kIHRoYXQgdGhpcyBwcm9iYWJseSBpcyBhIGNyYXp5IGNvcm5lciBjYXNlLCBhbmQgSSdt
IG5vdCBzdXJlCj4gSSBjYW4gZXZlbiBldmVyIG9jY3VyIHdpdGhvdXQgU01QIHN1cHBvcnQsIGJ1
dCwgb24gdGhlIG90aGVyIGhhbmQ6IGlzCj4gdGhlcmUgYW55IGhhcm0gaW4gc3dpdGNoaW5nIHRo
ZSBvcmRlcj8gQW5kIGFjdHVhbGx5LCB3b3VsZG4ndCBpdCBtYWtlCj4gc2Vuc2UgdG8gcHV0IHRo
ZSBsaXN0IGluc2VydGlvbiBpbnRvIHVrX3RocmVhZF9leGl0KCk/IEl0J3MgYW4gaW1wb3J0YW50
Cj4gcGFydCBvZiB0aHJlYWQgaGFuZGxpbmcsIHNvIGl0IGNvdWxkIGp1c3QgYmUgZG9uZSBpbiB0
aGVyZSwgcmlnaHQ/Cj4gQWx0aG91Z2ggSSByZWFsaXplIHRoYXQgeW91IG9ubHkgZG8gdGhpcyBp
biB0aGUgbmV4dCBwYXRjaCwgc28uLi4gbWF5YmUKPiBvbmx5IGRvIHRoYXQgaW4gdGhlcmU/IFNl
ZW1zIHJlZ2FyZGxlc3Mgb2YgdGhlIG9yZGVyLCBvbmUgdGhpbmcgZnJvbSB0aGUKPiBlYXJsaWVy
IHBhdGNoIGFsd2F5cyBiZXR0ZXIgd2FpdHMgdW50aWwgdGhlIGxhdHRlciBwYXRjaC4KCnVrX3Ro
cmVhZF9leGl0KCkgaXMgYSB0aHJlYWQgJ21ldGhvZCcsIHdoaWxlIHRoZSBleGl0ZWRfdGhyZWFk
cyBsaXN0CmJlbG9uZ3MgdG8gdGhlIHNjaGVkdWxlci4gU2luY2UgdGhlIHRocmVhZCBkb2Vzbid0
IGhhdmUgYW55IGtpbmQgb2YKb3duZXJzaGlwIG9mIHRoZSBleGl0ZWRfdGhyZWFkcyBsaXN0LCBp
dCdzIGJldHRlciB0byBub3QgbW92ZSB0aGUKaW5zZXJ0aW9uIGluIHVrX3RocmVhZF9saXN0KCku
CgpDb3N0aW4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
Ck1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qu
b3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3Mt
ZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Thu Feb 21 14:42:23 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 21 Feb 2019 14:42:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gwpYK-0001zD-Ka; Thu, 21 Feb 2019 14:42:20 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=gHww=Q4=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1gwpYJ-0001z8-L5
 for minios-devel@lists.xen.org; Thu, 21 Feb 2019 14:42:19 +0000
X-Inumbo-ID: e116df77-35e6-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id e116df77-35e6-11e9-bc90-bc764e045a96;
 Thu, 21 Feb 2019 14:42:15 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 1B023104E09;
 Thu, 21 Feb 2019 15:42:14 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id ZZcA3iXwENFz; Thu, 21 Feb 2019 15:42:13 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id E8A5C104DD9
 for <minios-devel@lists.xen.org>; Thu, 21 Feb 2019 15:42:11 +0100 (CET)
Received: from PALLENE.office.hd ([169.254.1.27]) by ENCELADUS.office.hd
 ([192.168.24.52]) with mapi id 14.03.0319.002; Thu, 21 Feb 2019 15:42:11
 +0100
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: Unikraft 0.3 Iapetus Release
Thread-Index: AQHUyfOgVH+46NhPrEeGc7ZbSrAaEQ==
Date: Thu, 21 Feb 2019 14:42:10 +0000
Message-ID: <A91B08E0-2F1F-44B8-928B-A3F135980B54@neclab.eu>
Accept-Language: en-GB, gl-ES, de-DE, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [10.1.2.186]
Content-ID: <E575FA55BC5659429BF0A4D85D09CACE@office.hd>
MIME-Version: 1.0
Subject: [Minios-devel] Unikraft 0.3 Iapetus Release
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGkgYWxsLA0KDQp0aGUgVW5pa3JhZnQgdGVhbSBpcyBwcm91ZCB0byBhbm5vdW5jZSB0aGF0IGEg
bmV3IHJlbGVhc2UgaXMgb3V0Og0KICAgIDAuMyBJYXBldHVzDQoNClRoaXMgcmVsZWFzZSBpcyB0
YWdnZWQgd2l0aCBgUkVMRUFTRS0wLjNgIGluIHRoZSByZXBvc2l0b3JpZXMuDQpJdCBpbmNsdWRl
cyBtYW55IGV4Y2l0aW5nIGZlYXR1cmVzLCB0aGUgYmlnZ2VzdCBvbmVzIGFyZToNCg0KIC0gWGVu
c3RvcmUgYW5kIFhlbiBidXMgc3VwcG9ydA0KIC0gQVJNMzIgc3VwcG9ydCBmb3IgWGVuDQogLSBB
Uk02NCBzdXBwb3J0IGZvciBRRU1VL0tWTQ0KIC0gWDg2XzY0IGJhcmUgbWV0YWwgc3VwcG9ydA0K
IC0gTmV0d29ya2luZyBzdXBwb3J0LCB3aXRoIHZpcnRpbyBkcml2ZXJzDQogLSBBIGxpZ2h0d2Vp
Z2h0IG5ldHdvcmsgc3RhY2sgKGx3aXApDQogLSBJbml0aWFsIFZGUyBzdXBwb3J0IGFsb25nIHdp
dGggYW4gaW4tUkFNIGZpbGVzeXN0ZW0NCg0KV2Ugd2FudCB0byBzZW5kIGEgYmlnIHRoYW5rIHlv
dSB0byBhbGwgY29udHJpYnV0b3JzOg0KV2l0aG91dCB5b3VyIGVmZm9ydCB3ZSB3b3VsZG4ndCBo
YXZlIGFjaGlldmVkIHNvIG11Y2ghDQoNCiAgICAxMDYgIFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1
ZW56ZXJAbmVjbGFiLmV1Pg0KICAgICA5NiAgWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBu
ZWNsYWIuZXU+DQogICAgIDcwICBDb3N0aW4gTHVwdSA8Y29zdGluLmx1cHVAY3MucHViLnJvPg0K
ICAgICA1NiAgV2VpIENoZW4gPFdlaS5DaGVuQGFybS5jb20+DQogICAgIDM3ICBGbG9yaWFuIFNj
aG1pZHQgPGZsb3JpYW4uc2NobWlkdEBuZWNsYWIuZXU+DQogICAgIDM0ICBTaGFyYW4gU2FudGhh
bmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xhYi5ldT4NCiAgICAgMTcgIFJhenZhbiBDb2pvY2Fy
dSA8cmF6dmFuLmNvam9jYXJ1OTNAZ21haWwuY29tPg0KICAgICAxMyAgRGFmbmEgSGlyc2NoZmVs
ZCA8ZGFmbmEzQGdtYWlsLmNvbT4NCiAgICAgIDYgIFJhZHUgTmljb2xhdSA8cmFkdW5pY29sYXUx
MDJAZ21haWwuY29tPg0KICAgICAgNCAgRmVsaXBlIEh1aWNpIDxmZWxpcGUuaHVpY2lAbmVjbGFi
LmV1Pg0KICAgICAgMyAgVmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1
ZC5hY3MudXBiLnJvPg0KICAgICAgMiAgQ3Jpc3RpYW4gQmFudSA8Y3Jpc3RiQGdtYWlsLmNvbT4N
CiAgICAgIDIgIEJydW5vIEFsdmlzaW8gPGJydW5vLmFsdmlzaW9AZ21haWwuY29tPg0KICAgICAg
MiAgQmlybGVhIENvc3RpbiA8Y29zdGluLmJpcmxlYUBnbWFpbC5jb20+DQogICAgICAxICBUZW9k
b3JhIFNlcmJhbmVzY3UgPHRlby5zZXJiYW5lc2N1MTZAZ21haWwuY29tPg0KICAgICAgMSAgUm94
YW5hIE5pY29sZXNjdSA8bmljb2xlc2N1LnJveGFuYTE5OTZAZ21haWwuY29tPg0KICAgICAgMSAg
UmF6dmFuIFJvdGFydSA8cmF6dmFucnRyQG91dGxvb2suY29tPg0KICAgICAgMSAgTWloYWkgUG9n
b25hcnUgPHBvZ29uYXJ1bWloYWlAZ21haWwuY29tPg0KICAgICAgMSAgS2VuaWNoaSBZYXN1a2F0
YSA8a2VuaWNoaS55YXN1a2F0YUBuZWNsYWIuZXU+DQogICAgICAxICBCb2dkYW4gTGFzY3UgPGxh
c2N1LmJvZ2Rhbjk2QGdtYWlsLmNvbT4NCiAgICAgIDEgIEFuZHJlaSBHb2dvbmVhIDxhbmRyZWku
Z29nb25lYTA5QGdtYWlsLmNvbT4NCiAgICAgIDEgIEFsaW5hIFZvbGNoa292YSA8dm9sY2hva2Fs
aW5lQGdtYWlsLmNvbT4NCg0KICAgICAgICAgKE51bWJlcnMgYXJlIGJhc2VkIG9uIFNpZ25lZC1v
ZmYtYnkgdGFncykNCg0KQW5vdGhlciB0aGFuayB5b3UgZ29lcyB0byBhbGwgb2Ygb3VyIHJldmll
d2VyczoNClRoYW5rIHlvdSBzbyBtdWNoIGZvciB5b3VyIGVmZm9ydHMhDQoNCiAgICAxNjYgIFNp
bW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1Pg0KICAgIDEwNCAgU2hhcmFuIFNh
bnRoYW5hbSA8c2hhcmFuLnNhbnRoYW5hbUBuZWNsYWIuZXU+DQogICAgIDkwICBZdXJpIFZvbGNo
a292IDx5dXJpLnZvbGNoa292QG5lY2xhYi5ldT4NCiAgICAgMzIgIEZsb3JpYW4gU2NobWlkdCA8
Zmxvcmlhbi5zY2htaWR0QG5lY2xhYi5ldT4NCiAgICAgIDggIENvc3RpbiBMdXB1IDxjb3N0aW4u
bHVwdUBjcy5wdWIucm8+DQogICAgICAxICBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPg0K
ICAgICAgMSAgSnVsaWVuIEdyYWxsIDxqdWxpZW4uZ3JhbGxAYXJtLmNvbT4NCiAgICAgIDEgIEZl
bGlwZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4NCg0KICAgICAgICAgKE51bWJlcnMg
YXJlIGJhc2VkIG9uIFJldmlld2VkLWJ5IHRhZ3MpDQoNClRoYW5rcywNCg0KU2ltb24NCg0KX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVs
IG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9s
aXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Fri Feb 22 01:18:41 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 22 Feb 2019 01:18:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gwzU8-0008Mk-0V; Fri, 22 Feb 2019 01:18:40 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=WrH0=Q5=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1gwzU6-0008Md-KA
 for minios-devel@lists.xenproject.org; Fri, 22 Feb 2019 01:18:38 +0000
X-Inumbo-ID: bc72832e-363f-11e9-bc90-bc764e045a96
Received: from EUR04-DB3-obe.outbound.protection.outlook.com (unknown
 [2a01:111:f400:fe0c::620])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id bc72832e-363f-11e9-bc90-bc764e045a96;
 Fri, 22 Feb 2019 01:18:19 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; 
 s=selector1-arm-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=UURrzJnGjBTLIRiocUzYbFsWHGqYqaiwrBCa2GJbhPE=;
 b=NRUX2voXkFqZYgD+S/bjYEoYzXhS4kGycuvWZx9wJ8YpKKRMZoigbKuEj+D0scDxXiils1H1FfIYI41ajU0d7ds+AAS5IlZQGT7WpZaav1i3vFybZ15qQxwybhhi1oSbAbum+NHZynCFhDJYM7p7uLFd5fyNiYT/LdTnCAWjMiQ=
Received: from DB7PR08MB3082.eurprd08.prod.outlook.com (52.134.110.24) by
 DB7PR08MB3674.eurprd08.prod.outlook.com (20.177.120.156) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.1643.16; Fri, 22 Feb 2019 01:18:17 +0000
Received: from DB7PR08MB3082.eurprd08.prod.outlook.com
 ([fe80::99d4:808b:c303:ce65]) by DB7PR08MB3082.eurprd08.prod.outlook.com
 ([fe80::99d4:808b:c303:ce65%6]) with mapi id 15.20.1622.020; Fri, 22 Feb 2019
 01:18:17 +0000
From: "Justin He (Arm Technology China)" <Justin.He@arm.com>
To: Sharan Santhanam <sharan.santhanam@neclab.eu>,
 "minios-devel@lists.xenproject.org" <minios-devel@lists.xenproject.org>
Thread-Topic: [Minios-devel] [UNIKRAFT PATCHv5 04/23] plat: Clean up kernel
 image symbols
Thread-Index: AQHUt4BaContreXZE0yKWkuhtwyPn6Xotd4AgADyGqA=
Date: Fri, 22 Feb 2019 01:18:17 +0000
Message-ID: <DB7PR08MB3082C6D944985076828A737CF77F0@DB7PR08MB3082.eurprd08.prod.outlook.com>
References: <20190129031056.142151-1-justin.he@arm.com>
 <20190129031056.142151-5-justin.he@arm.com>
 <7c9f6790-c468-f552-26e2-77f9fb2b8d3f@neclab.eu>
In-Reply-To: <7c9f6790-c468-f552-26e2-77f9fb2b8d3f@neclab.eu>
Accept-Language: en-US, zh-CN
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=Justin.He@arm.com; 
x-originating-ip: [113.29.88.7]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 3d8e2221-4847-4725-ef34-08d69863a005
x-ms-office365-filtering-ht: Tenant
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(8989299)(5600110)(711020)(4605104)(4618075)(4534185)(7168020)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060)(7193020);
 SRVR:DB7PR08MB3674; 
x-ms-traffictypediagnostic: DB7PR08MB3674:
x-microsoft-exchange-diagnostics: 1; DB7PR08MB3674;
 20:VgXljvFDl8g1BlPluqO9850JBAOq21x95HSIJExzZ0v82HMzIn/hLIhYE9IE0K/PYIc9b/WIgVPNlHDO5aFV5cL0RsZg03XI3G31w/7GWu9hLOUfHH8oFFW3axWyXYWFcZxrurBHLRK6km9Z8/4TK673FG7EOPuovtaLc4Anhtc=
x-microsoft-antispam-prvs: <DB7PR08MB36746ED86B762B0874E5795AF77F0@DB7PR08MB3674.eurprd08.prod.outlook.com>
x-forefront-prvs: 09565527D6
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(366004)(376002)(346002)(396003)(39860400002)(136003)(13464003)(189003)(199004)(40434004)(81156014)(81166006)(66066001)(8676002)(26005)(6246003)(86362001)(72206003)(186003)(3846002)(6116002)(105586002)(99286004)(25786009)(7736002)(33656002)(106356001)(5660300002)(74316002)(305945005)(102836004)(6506007)(76176011)(316002)(478600001)(7696005)(110136005)(256004)(53546011)(55236004)(97736004)(2501003)(68736007)(5024004)(14444005)(6436002)(2906002)(229853002)(71190400001)(71200400001)(14454004)(8936002)(11346002)(486006)(53936002)(55016002)(9686003)(446003)(476003);
 DIR:OUT; SFP:1101; SCL:1; SRVR:DB7PR08MB3674;
 H:DB7PR08MB3082.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:1; 
received-spf: None (protection.outlook.com: arm.com does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: 1INCcqztQf3CRQbRuFNxwcy7cIEU+KcQ8WeX4SY5V1cxOHP4XHqXgq2zSd2f7kiiSIKPSGi+UsPUwk3lMvQIOsiR4zs4d68Kj9U/6RuSdGp95fgZLTujEnwmFeaTHmusFbzMBmrzPE0PvKetZ4rHEzpDgY2Epha/OI5sy5VYvh0+vBvwP32+3gI8CouBhikBaWyyJTCW3jHTp2P0zLyN3DMwaJENWeGFav9u0Ntfh872OqhqQuuLxL4I2CuzS5PPYQ94G4x/dEgDP77MAOm0gZwPuqZ7/WhV4fz2Vhy5SkmMYmnOel0HQ1ankHLMits7cDtpw+vD0LbmFGFPQe1bXoUIfGt+Gqeep3pftcCjgqYEW+JJSz21dtfYk68vER7ezhJHplbdMwwQ84rluma13l6crjGZPLKbSCbktAGcXgw=
MIME-Version: 1.0
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 3d8e2221-4847-4725-ef34-08d69863a005
X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Feb 2019 01:18:17.3141 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR08MB3674
Subject: Re: [Minios-devel] [UNIKRAFT PATCHv5 04/23] plat: Clean up kernel
 image symbols
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGkgU2hhcmFuDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTWluaW9z
LWRldmVsIDxtaW5pb3MtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZz4gT24gQmVo
YWxmDQo+IE9mIFNoYXJhbiBTYW50aGFuYW0NCj4gU2VudDogMjAxOeW5tDLmnIgyMOaXpSAxOTo1
MA0KPiBUbzogbWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnDQo+IFN1YmplY3Q6IFJl
OiBbTWluaW9zLWRldmVsXSBbVU5JS1JBRlQgUEFUQ0h2NSAwNC8yM10gcGxhdDogQ2xlYW4gdXAg
a2VybmVsDQo+IGltYWdlIHN5bWJvbHMNCj4NCj4gSGVsbG8gSmlhIEhlLA0KPg0KPiBQbGVhc2Ug
ZmluZCB0aGUgY29tbWVudHMgaW5saW5lLiBUaGlzIHBhdGNoIGRvZXMgbm90IGNvbXBpbGUgb24g
eGVuDQo+IHBsYXRmb3JtIGZvciB4ODYuIEZhaWxzIHdpdGggdGhlIGZvbGxvd2luZyBlcnJvcjoN
Cj4NCj4gSW4gZmlsZSBpbmNsdWRlZCBmcm9tDQo+IC9tbnQvZmlsZXN5c3RlbXMvcm9hbWluZy93
b3Jrc3BhY2UvUHJvamVjdC9VbmlrcmFmdF9SZXZpZXcvVW5pa3JhZnQvcGxhDQo+IHQveGVuL2lu
Y2x1ZGUveGVuLXg4Ni9tbS5oOjQ2OjAsDQo+ICAgICAgICAgICAgICAgICAgIGZyb20NCj4gL21u
dC9maWxlc3lzdGVtcy9yb2FtaW5nL3dvcmtzcGFjZS9Qcm9qZWN0L1VuaWtyYWZ0X1Jldmlldy9V
bmlrcmFmdC9wbGENCj4gdC94ZW4vaW8uYzozNzoNCj4gL21udC9maWxlc3lzdGVtcy9yb2FtaW5n
L3dvcmtzcGFjZS9Qcm9qZWN0L1VuaWtyYWZ0X1Jldmlldy9VbmlrcmFmdC9wbGENCj4gdC94ZW4v
aW8uYzoNCj4gSW4gZnVuY3Rpb24g4oCYdWtwbGF0X3ZpcnRfdG9fcGh5c+KAmToNCj4gL21udC9m
aWxlc3lzdGVtcy9yb2FtaW5nL3dvcmtzcGFjZS9Qcm9qZWN0L1VuaWtyYWZ0X1Jldmlldy9Vbmlr
cmFmdC9wbGENCj4gdC94ZW4vaW5jbHVkZS94ZW4teDg2L21tLmg6MjQzOjU1Og0KPiBlcnJvcjog
aW52YWxpZCBvcGVyYW5kcyB0byBiaW5hcnkgLSAoaGF2ZSDigJhsb25nIHVuc2lnbmVkIGludOKA
mSBhbmQg4oCYY2hhciAq4oCZKQ0KPiAgICNkZWZpbmUgdG9fcGh5cyh4KSAgICAgICAgICAgICAg
ICAgKCh1bnNpZ25lZCBsb25nKSh4KS1WSVJUX1NUQVJUKQ0KPg0KPiBQbGVhc2UgZmluZCBpbmxp
bmUgdGhlIHBvc3NpYmxlIGZpeC4NCg0KVGhhbmtzLCB0aGlzIGZpeCB3b3Jrcy4gSSB2ZXJpZmll
ZCBpdCBvbiB4ODYgeGVuIHBsYXQNCkNoZWVycywNCkp1c3RpbiAoSmlhIEhlKQ0KSU1QT1JUQU5U
IE5PVElDRTogVGhlIGNvbnRlbnRzIG9mIHRoaXMgZW1haWwgYW5kIGFueSBhdHRhY2htZW50cyBh
cmUgY29uZmlkZW50aWFsIGFuZCBtYXkgYWxzbyBiZSBwcml2aWxlZ2VkLiBJZiB5b3UgYXJlIG5v
dCB0aGUgaW50ZW5kZWQgcmVjaXBpZW50LCBwbGVhc2Ugbm90aWZ5IHRoZSBzZW5kZXIgaW1tZWRp
YXRlbHkgYW5kIGRvIG5vdCBkaXNjbG9zZSB0aGUgY29udGVudHMgdG8gYW55IG90aGVyIHBlcnNv
biwgdXNlIGl0IGZvciBhbnkgcHVycG9zZSwgb3Igc3RvcmUgb3IgY29weSB0aGUgaW5mb3JtYXRp
b24gaW4gYW55IG1lZGl1bS4gVGhhbmsgeW91Lg0KX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2
ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWls
bWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Fri Feb 22 06:22:19 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 22 Feb 2019 06:22:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gx4Dx-0001VA-Jn; Fri, 22 Feb 2019 06:22:17 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=WrH0=Q5=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1gx4Dw-0001V5-6x
 for minios-devel@lists.xenproject.org; Fri, 22 Feb 2019 06:22:16 +0000
X-Inumbo-ID: 309e1feb-366a-11e9-bc90-bc764e045a96
Received: from EUR04-VI1-obe.outbound.protection.outlook.com (unknown
 [2a01:111:f400:fe0e::607])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 309e1feb-366a-11e9-bc90-bc764e045a96;
 Fri, 22 Feb 2019 06:22:13 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; 
 s=selector1-arm-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=rsj2Bv2nto9hCvbygRU6zgS8z+4LUkvQ+lq5E7MnUJI=;
 b=VXaXju+XEWw+F8oO4RubM/a5XNqHVgQP/DIuLQ8Ad8L/i3v0iG9KP3g04XeoM9Qpi193sLlSVihkPm8P1YDd4ShUr45icY5s1UnLhm92olFPvTP8HVSy9pWsUM+isZ7DjyECgu4YJv8YcWs9lQuN+L685OjL8rw1Pl5HGiBMuyk=
Received: from VI1PR08CA0214.eurprd08.prod.outlook.com (2603:10a6:802:15::23)
 by DB6PR0802MB2533.eurprd08.prod.outlook.com (2603:10a6:4:a0::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1643.16; Fri, 22 Feb
 2019 06:22:11 +0000
Received: from DB5EUR03FT056.eop-EUR03.prod.protection.outlook.com
 (2a01:111:f400:7e0a::200) by VI1PR08CA0214.outlook.office365.com
 (2603:10a6:802:15::23) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.1643.16 via Frontend
 Transport; Fri, 22 Feb 2019 06:22:10 +0000
Authentication-Results: spf=pass (sender IP is 40.67.248.234)
 smtp.mailfrom=arm.com; lists.xenproject.org; dkim=none (message not signed)
 header.d=none;lists.xenproject.org; dmarc=bestguesspass action=none
 header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 40.67.248.234 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.67.248.234; helo=nebula.arm.com;
Received: from nebula.arm.com (40.67.248.234) by
 DB5EUR03FT056.mail.protection.outlook.com (10.152.21.124) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id
 15.20.1643.11 via Frontend Transport; Fri, 22 Feb 2019 06:22:10 +0000
Received: from AZ-NEU-EX03.Arm.com (10.251.24.31) by AZ-NEU-EX03.Arm.com
 (10.251.24.31) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1415.2; Fri, 22 Feb
 2019 06:22:07 +0000
Received: from localhost.localdomain (10.169.40.37) by mail.arm.com
 (10.251.24.31) with Microsoft SMTP Server id 15.1.1415.2 via Frontend
 Transport; Fri, 22 Feb 2019 06:22:04 +0000
From: Jia He <justin.he@arm.com>
To: <minios-devel@lists.xenproject.org>, Simon Kuenzer
 <simon.kuenzer@neclab.eu>, <Sharan.Santhanam@neclab.eu>
Date: Fri, 22 Feb 2019 14:21:37 +0800
Message-ID: <20190222062200.26602-1-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
MIME-Version: 1.0
X-EOPAttributedMessage: 0
X-MS-Office365-Filtering-HT: Tenant
X-Forefront-Antispam-Report: CIP:40.67.248.234; IPV:NLI; CTRY:US; EFV:NLI;
 SFV:NSPM;
 SFS:(10009020)(396003)(346002)(376002)(136003)(39860400002)(2980300002)(40434004)(189003)(199004)(966005)(47776003)(486006)(51416003)(48376002)(50466002)(68736007)(81166006)(4326008)(81156014)(8676002)(8746002)(50226002)(5660300002)(53936002)(8936002)(1076003)(97736004)(356004)(6666004)(2906002)(6306002)(36756003)(106002)(49486002)(478600001)(14444005)(305945005)(5024004)(316002)(72206003)(106466001)(26005)(186003)(77096007)(86362001)(54906003)(336012)(426003)(110136005)(2616005)(126002)(476003)(17413003);
 DIR:OUT; SFP:1101; SCL:1; SRVR:DB6PR0802MB2533; H:nebula.arm.com; FPR:;
 SPF:Pass; LANG:en; PTR:InfoDomainNonexistent; MX:1; A:1; 
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id: 40cca24c-faa1-473f-50ca-08d6988e13ad
X-Microsoft-Antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(8989299)(5600110)(711020)(4605104)(4608103)(4709054)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060);
 SRVR:DB6PR0802MB2533; 
X-MS-TrafficTypeDiagnostic: DB6PR0802MB2533:
X-MS-Exchange-PUrlCount: 1
X-Microsoft-Exchange-Diagnostics: 1; DB6PR0802MB2533;
 20:vGvMpVm6q0thBAMcZR16oNo5eMtRykStRG34eviCkdz2KwOGfgUox/m+CsTv4GuFZppC3NKAwm7m0bYcQACvtdFdS9vITnPGdmEPLv63MxUMdpZrMCyxBr1UDUOdgutRDg461XSWAR4+nVCay8aY5FSQSWkM847lf7uyZPOMiRIzS1jPbAe1a1vLdC4zcXO34EEL4IB/A/NDR4VvClrnPMoo+33q2OcoC1UTgT/68B9vzB8I/79djlhs2ems+swn0YyvV67guDWz1st0ZF3f5kFPkqVT2iW4n1LBcSJIB7KIONsXWshMR/aUH1YJypoFt08NNvPZOrppTkUaMp3nzNTJKIXkCIo4qwzXFqjbbQoBpWn5oWhOoFIZxYbsAhnry+OE8m8v6pcMo9vpHGkZYOx2CqOa0v25DzxCwMnVA8ZJAjDS/TvGCNCh8g0JkLixi7GMU+ijy1cro82m7snGpuhrcRtSUK8s7Uq6DIzsfPdxdw377ttzS85CYoYdF3gp
X-Microsoft-Antispam-PRVS: <DB6PR0802MB253319E36C96401F5E1CA60DF77F0@DB6PR0802MB2533.eurprd08.prod.outlook.com>
X-Forefront-PRVS: 09565527D6
X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB6PR0802MB2533;
 23:SMEpV2oq/13jD08umfHrOz4ZnbZv9Un/5BbTutY?=
 =?us-ascii?Q?pWhenea328qFl5mYUeweVDcdV1LflWiKk11db2ZQhw7eYzlrDYuxzXyDpUs1?=
 =?us-ascii?Q?dHVeJmGQ+7yUlcQ4TjuL51CUmQnQJj+lXO01IDVzLdsJeZ8PPeFhk2x4z0Gz?=
 =?us-ascii?Q?DlISS+hNLFV155rJwJxKZJ3AaTAW1ESbV67mOF5rx/9ANoaMWgprBZ8HI4Vb?=
 =?us-ascii?Q?LaK0FnchEwkeu4r3EdeyDx9TdEY4tELIqiKB982khyT+F+OtJ84HmEnj/6OW?=
 =?us-ascii?Q?HdI7sV/qZmzWQE/CojAF8UXXdhc1EBHr7wm89MUNAq6GnPs0ym8lZDF/SgBM?=
 =?us-ascii?Q?95vm6cGxVJYIiBoP+nyC3gYH2xapA1u0kjQmjBB1165qNZ0qkfVbv0nkmQLB?=
 =?us-ascii?Q?GnFQE35FDOrSPR4K+vbE0luhYVt9GcF/uIQ7a+A4KtpvT4omvZbXBQUIXhW1?=
 =?us-ascii?Q?Ovam9NYUds0zisrOf6P4xet8YPo1/UvNGHu0xK/lj9tfn0PUt0ihTfW9YuuE?=
 =?us-ascii?Q?OzldzajHlwysME+leMGIZX8/QU05XsZ38cGQgkJe37s0LkVRqHIyv3h2GWYd?=
 =?us-ascii?Q?aVXcwDcGftvo6dKY7Awq/qkGenO0oN6wt0PuQfWKL1cFp8rfD8HkdNrat1kB?=
 =?us-ascii?Q?AbLXVcOe4s70RR3LR7Kc8S2n3pjRPd9a5f5GjlfGmxb0+JEOQkXnuYVwnVnA?=
 =?us-ascii?Q?hdf7TpLYFvtGO2UetmRlCJcGnZRKmHCoC8AQlHZlLo2TzqWOcT8cNNJipX98?=
 =?us-ascii?Q?lk6/AO401kjBd54ed/OFCt5dJzsiMOopxhZg9XhvFcFdrfz2+0IBjOYtCPEX?=
 =?us-ascii?Q?FCMSSCpLTT/8e3gBQpCQHTd4nfYErNI582rVD9XzhhsNkXIxnqZHthHzaZHa?=
 =?us-ascii?Q?lO4rYi0SEBfDbkA1yfqdQXodfrAujyUH5aquQv2haCqikPRN4Dn499iavQQ5?=
 =?us-ascii?Q?qRtUoRCCJnu/IcoXAs5pfNJkw8hreXHg/5SrdAvjP4Y7BuNefNsuGd/NnNTP?=
 =?us-ascii?Q?Whj0wBTI23Dsvd62vO13GNKh1Yw3cEuH6skAs9RNfu69M1OPCyBa34daQr7R?=
 =?us-ascii?Q?i4NlbhReimGLVOiBS2G4Bbn/NZ/hOSH4VwI6395CWsAlKDzYYaogue2rSHfG?=
 =?us-ascii?Q?LlzhqSuVATdIasAPf0zLZMcckjz2T2lo9eLkPQUpUEhm71tHkeAfUvA=3D?=
 =?us-ascii?Q?=3D?=
X-MS-Exchange-SenderADCheck: 1
X-Microsoft-Antispam-Message-Info: h26mPJgPZmuKtfqCvXfqM1TnDalIpwfnP3deHFIHm1ARpTNrzzjnwhiYn1TDoJoM6vlfj0imBFNWAkEBiQlVAARZsjTd3EZ3/rrNkHVxJm2AVapcFerHm6xS9ZDbrES3Kl4ZHjUhLDMrxKF5c16Hra2YF2CLbQYnMkmnl8K2yp9rLY8geaiqIf0d9a7q8ntudRpmmxeBcoICe9Q4rsJUXYcX4A2vnWbfo4uEvaDVSNujPMfQ6GVHZ5LdNLL5Pp1IXs/IYi9K8XwnnJjMdwvfvMkEaoLv+Ay0tz5JN0UIQ3EkAMQV3X5Bj8Q+NfJuLIjj+EmMM+hMKQNv7z4plX3ZacQr85dgeWKJkhZUQLcjvM8mriIzes12YF/5IpdcyERWLGhQkPRWCn8/56i8GLaoKzw6gNq4hrZ/VxL2/1Si3Dg=
X-Microsoft-Exchange-Diagnostics: 1; DB6PR0802MB2533;
 20:FT7zBUox1eZEkKNd3vgK2DXm0swwHP9/neW2ib7XJbwCTv7nZvLUqEm45V3zHu9Od2hJ7XjtQelg9FN/rekBXVrr5Z3rYv/ncV2nYDWIOLvl0rr+F+Gc3o8CqB6XaNvBaGYYdHhk4e0LrGIi8+gb7cPt7le5Dmt0LiTVduSHxC8=
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Feb 2019 06:22:10.2277 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 40cca24c-faa1-473f-50ca-08d6988e13ad
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[40.67.248.234];
 Helo=[nebula.arm.com]
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0802MB2533
Subject: [Minios-devel] [UNIKRAFT PATCHv6 00/23] Follow up patches for Arm64
 support series#1/5
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>, Jia He <justin.he@arm.com>,
 Kaly Xin <Kaly.Xin@arm.com>, Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhpcyBzZXJpZXMgYWRkcmVzcyBmb2xsb3dpbmcgY29tbWVudHM6CjAxOiBSZW1vdmUgdGhlIGNo
ZWNrIG9mICctLWVuYWJsZS1kZWZhdWx0LXBpZScgaW4gTWFrZWZpbGUudWssCjAyOiBVc2UgbWFj
cm8tZWQgaGVscGVyIHRvIHNpbXBsaWZ5IGlvcmVnX3JlYWQvd3JpdGUsCjAzOiBVc2UgdGhlIHNh
bWUgZGVjbGFyYXRpb24gZm9yIF90ZXh0IGFuZCBfZW5kLAowNDogQWRkcmVzcyBjb21tZW50cyBm
b3IgRC1DYWNoZSBvcGVyYXRpb24gZnVuY3Rpb24sCjA1OiBHZXQgdmlydHVhbCBhZGRyZXNzIGJp
dHMgZnJvbSBpZF9hYTY0bW1mcjBfZWwxLlBBUmFuZ2UsCjA2OiBFbnN1cmUgc3RhY2sgYWxpZ25t
ZW50IGZvciBleGNlcHRpb25zIGZyb20gRUwxLAowNzogSW52YWxpZGF0ZSBELUNhY2hlIGZvciBt
b2RpZmllZCBhcmVhIG9ubHksCjA4OiBEaXNhYmxlIEQtQ2FjaGUgYmVmb3JlIGRvaW5nIGFueSBj
aGFuZ2UsCjA5OiBDYWxjdWxhdGUgTDMgdGFibGUgYW5kIHBhZ2UgdGFibGUgc2l6ZSBieSBpbWFn
ZSBzaXplLAoxMDogUmVtb3ZlIGEgLVdzdHJpbmdvcC1vdmVyZmxvdyB3YXJuaW5nIGZvciBzdHJu
Y3B5LAoxMTogUmVtb3ZlIHVzZWxlc3MgYmxhbmsgbGluZSwKClNvbWUgY29tbWVudHMgdGhhdCBo
YXZlbid0IGJlZW4gYWRkcmVzc2VkOgowMTogQ2hlY2sgdGhlIE1JRFIgYW5kIGF2b2lkIHRoZSBl
cnJhdHVtIG9uIGFmZmVjdGVkIHBsYXRmb3JtCiAgICAgdmlhIGFuIGFsdGVybmF0aXZlIG9yIGp1
bXAgdGFibGUuIC0tIFRoaXMgZXJyZXRhIGZyYW1ld29yawogICAgIGlzIG5vdCBvbmx5IGZvciBB
cm0gYnV0IGFsc28gZm9yIHg4Ni4gSSB0aGluayB3ZSdkIGJldHRlcgogICAgIHRvIGRpc2N1c3Mg
aW4gY29tbXVuaXR5LgowMjogRW5hYmxlIEZJRk8gc3VwcG9ydCBmb3IgUEwwMTEuCjAzOiBDb21w
YXJlIHRoZSBwb2ludGVycyBvZiBkaWZmZXJlbnQgdHlwZSBpcyBiZWhhdmlvdXIgdW5kZWZpbmVk
CgpJZiBJIGZvcmdvdCBhbnl0aGluZyBwbGVhc2UgcmVtaW5kIG1lLgoKWW91IGNhbiBnZXQgdGhl
IHdob2xlIHBhdGNoIHNldCBieToKZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9oZWppYW5l
dC91bmlrcmFmdF9hcm02NC5naXQgLWIgMXN0c2V0X3Y2Ci0tLQp2NSAtPiB2NjoKICBmaXggZXJy
b3Igb24gWDg2IHhlbiBwbGF0LgogIHJlYmFzZSB0aGUgY29kZXMgdG8gVW5pa3JhZnQgMC4zIElh
cGV0dXMgUmVsZWFzZQp2NCAtPiB2NTogZml4IGNvbXBpbGF0aW9uIGVycm9yCnYzIC0+IHY0Ogog
IDEuIERyb3AgMDQgYW5kIDI0IHBhdGNoZXMgaW4gdjMuIHBhdGNoIDA0IGlzIGdjYyBjb21waWxl
cgogIG9wdGltaXphdGlvbiByZWxhdGVkLCBub3QgYSBibG9ja2luZyBpc3N1ZS4gVGhlIHJlc29s
dXRpb24gaXMKICB1bmRlciBkaXNjdXNzaW9uLiBQYXRjaCAyNCBpcyBub3QgY29uY2VybmVkIGJ5
IFNoYXJhbi4KICAyLiBSZXN0b3JlIHgxOCx4MTkgYWZ0ZXIgdXNpbmcgdGhlbS4KICAzLiBGaXgg
SU1BR0VfUk9VTkRVUF9TSElGVCBmcm9tIDIwIHRvIDIxLgogIDQuIGxvdHMgb2YgY2hlY2twYXRj
aCB3YXJuaW5nLgp2MiAtPiB2MzogUmViYXNlIHRvIHRoZSBsYXRlc3QgdXBzdHJlYW0gYmFzZS4K
CnYxIC0+IHYyOgogIDEuIEFkZCBVUkwgbGluayBmb3IgIlVzZSBtYWNyby1lZCBoZWxwZXIgdG8g
c2ltcGxpZnkgaW9yZWdfcmVhZC93cml0ZSIsCiAgMi4gSW52YWxpZGF0ZSAmIGNsZWFuIENhY2hl
IGZvciBtZW1vcnkgdGhhdCB3b3VsZCBiZSB1c2VkLAogIDMuIEltcHJvdmUgY29kZSBhbmQgY29t
bWl0IGNvbW1lbnRzIGZvciBjYWxjdWxhdGUgcGFnZWJhYmxlIHNpemUsCiAgNC4gVXNlIG1hY3Jv
cyB0byByZXBsYWNlIGhhcmRjb2RlIHZhbHVlcywKICA1LiBVc2UgbHNyL2xzbCB0byBzaW1wbGlm
eSAyTUIgcm91bmQgdXAsCiAgNi4gRG8gb2JmdXNjYXRlcyBhcml0aG1ldGljIGZvciBrZXJuZWwg
aW1hZ2Ugc3ltYm9scywKICA3LiBDbGVhbiB1cCBrZXJuZWwgaW1hZ2Ugc3ltYm9scyBmb3IgQyBm
aWxlcy4KCkppYSBIZSAoMjMpOgogIGJ1aWxkOiBSZW1vdmUgdGhlIGNoZWNrIG9mICctLWVuYWJs
ZS1kZWZhdWx0LXBpZScgaW4gTWFrZWZpbGUudWsKICBwbGF0L2luY2x1ZGU6IFVzZSBtYWNyby1l
ZCBoZWxwZXIgdG8gc2ltcGxpZnkgaW9yZWdfcmVhZC93cml0ZSBmb3IKICAgIEFybTY0CiAgcGxh
dC9jb21tb246IE1vdmUgZ2xvYmFsIHZhcmlhYmxlcyBkZWZpbmVkIGluIGxpbmsgc2NyaXB0cyB0
byBhIGhlYWRlcgogIHBsYXQ6IENsZWFuIHVwIGtlcm5lbCBpbWFnZSBzeW1ib2xzCiAgcGxhdC9j
b21tb246IFJlbW92ZSBlYXJseWNsb2JlcnIgZnJvbSBTWVNSRUdfUkVBRDMyIGZvciBBcm02NAog
IHBsYXQvY29tbW9uOiBDbGVhbiBhbmQgaW52YWxpZGF0ZSBELUNhY2hlIG9ubHkgd2hlbiBib290
IGZvciBBcm02NAogIHBsYXQvY29tbW9uOiBVc2UgY29ycmVjdCBkc2Igb3BlcmF0aW9uIGZsYWcg
Zm9yIEFybTY0CiAgcGxhdC9jb21tb246IEFkZCByZWZlcnJlZCBzb3VyY2UgY29kZSBVUkwgZm9y
IGNhY2hlIG9wZXJhdGlvbgogIHBsYXQva3ZtOiBDb3JyZWN0IGludmFsaWQgaW5kZW50IGNoYXJh
Y3RlciBmb3IgQXJtNjQKICBwbGF0L2t2bTogR2V0IFZJUlRfQklUUyBmcm9tIGlkX2FhNjRtbWZy
MF9lbDEuUEFSYW5nZSBmb3IgQXJtNjQKICBhcmNoL2luY2x1ZGU6IEFkZCBhIF9yZWdzIG1lbWJl
ciB0byBzYXZlIG9yaWdpYWwgc3RhY2sgcG9pbnRlcgogIHBsYXQva3ZtOiBBZGQgX19UUkFQX1NU
QUNLX1NJWkUgZm9yIHN0YWNrIHBvaW50ZXIgd2hpbGUgZXhpdGluZyB0cmFwCiAgcGxhdC9rdm06
IFJlbW92ZSByZWR1bmRhbnQgc3BhY2Ugd2hpbGUgZW50ZXJpbmcgdHJhcCBmb3IgQXJtCiAgcGxh
dC9rdm06IEZvcmNlIGFsaWduIHRoZSBzdGFjayBwb2ludGVyIGZvciBBcm02NCBFTDEgZXhjZXB0
aW9ucwogIHBsYXQva3ZtOiBSZW5hbWUgcGFnZXRhYmxlLlMgdG8gcGFnZXRhYmxlNjQuUyBmb3Ig
QXJtNjQKICBwbGF0L2t2bTogSW52YWxpZGF0ZSBELUNhY2hlIHRoYXQgbWF5IGhhdmUgYmVlbiBt
b2RpZmllZCBmb3IgQXJtNjQKICBwbGF0L2t2bTogYXJtNjQ6IENsZWFyIHBhZ2V0YWJsZSBtZW1v
cnkgd2l0aCBib290IHN0YWNrCiAgcGxhdC9rdm06IGFybTY0OiBDYWxjdWxhdGUgcGFnZXRhYmxl
IHNpemUgZHluYW1pY2FsbHkgYnkgaW1hZ2Ugc2l6ZQogIHBsYXQva3ZtOiBhcm02NDogQnVpbGQg
TDMgcGFnZSB0YWJsZSBmb3IgcmFuZ2UgZ3JlYXRlciB0aGFuIDJNQgogIHBsYXQva3ZtOiBhcm02
NDogU3VwcG9ydCBidWlsZCBMMyB0YWJsZSBmb3IgbGFyZ2UgaW1hZ2Ugc2l6ZQogIHBsYXQva3Zt
OiBhcm02NDogUmVtb3ZlIG5lZWRsZXNzIHNlbWljb2xvbnMgaW4gYXNzZW1ibHkKICBwbGF0L2t2
bTogYXJtNjQ6IEVuc3VyZSB0aGVyZSBpcyBubyBzdGFsbCBkYXRhIGluIGNhY2hlIHdoZW4gYm9v
dAogIHBsYXQva3ZtOiBhcm02NDogUmVtb3ZlIHN1cGVyZmx1b3VzIGJsYW5rIGxpbmUKCiBNYWtl
ZmlsZS51ayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA4ICstCiBhcmNoL2Fy
bS9hcm02NC9pbmNsdWRlL3VrL2FzbS9sY3B1LmggICAgICAgIHwgIDE2ICsrLQogcGxhdC9jb21t
b24vYXJtL2NhY2hlNjQuUyAgICAgICAgICAgICAgICAgICB8ICAzMSArKy0tLS0KIHBsYXQvY29t
bW9uL2luY2x1ZGUvYXJtL2FybTY0L2NwdS5oICAgICAgICAgfCAgNTggKysrKy0tLS0tLQogcGxh
dC9jb21tb24vaW5jbHVkZS9hcm0vYXJtNjQvY3B1X2RlZnMuaCAgICB8ICAxNiArKy0KIHBsYXQv
Y29tbW9uL2luY2x1ZGUvc2VjdGlvbnMuaCAgICAgICAgICAgICAgfCAxMTAgKysrKysrKysrKysr
KysrKysrKwogcGxhdC9rdm0vTWFrZWZpbGUudWsgICAgICAgICAgICAgICAgICAgICAgICB8ICAg
MiArLQogcGxhdC9rdm0vYXJtL2VudHJ5NjQuUyAgICAgICAgICAgICAgICAgICAgICB8ICA3NyAr
KysrKysrKystLS0tCiBwbGF0L2t2bS9hcm0vZXhjZXB0aW9ucy5TICAgICAgICAgICAgICAgICAg
IHwgIDczICsrKysrKysrKystLS0KIHBsYXQva3ZtL2FybS97cGFnZXRhYmxlLlMgPT4gcGFnZXRh
YmxlNjQuU30gfCAxMTUgKysrKysrKysrKysrKy0tLS0tLS0KIHBsYXQva3ZtL2FybS9zZXR1cC5j
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTIgKy0KIHBsYXQva3ZtL2luY2x1ZGUva3ZtLWFy
bS9hcm02NC9tbS5oICAgICAgICAgfCAgMTQgKystCiBwbGF0L2t2bS9tZW1vcnkuYyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgIDIzICsrLS0KIHBsYXQva3ZtL3g4Ni9zZXR1cC5jICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgIDYgKy0KIHBsYXQveGVuL2FybS9zZXR1cC5jICAgICAgICAg
ICAgICAgICAgICAgICAgfCAgIDYgKy0KIHBsYXQveGVuL2luY2x1ZGUveGVuLWFybS9tbS5oICAg
ICAgICAgICAgICAgfCAgIDMgKy0KIHBsYXQveGVuL2luY2x1ZGUveGVuLXg4Ni9tbS5oICAgICAg
ICAgICAgICAgfCAgMjEgKystLQogcGxhdC94ZW4vbWVtb3J5LmMgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICAyMiArKy0tCiBwbGF0L3hlbi94ODYvbW0uYyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgIDE3ICsrLQogcGxhdC94ZW4veDg2L3NldHVwLmMgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAgMiArLQogMjAgZmlsZXMgY2hhbmdlZCwgNDE5IGluc2VydGlvbnMoKyksIDIxMyBk
ZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBwbGF0L2NvbW1vbi9pbmNsdWRlL3NlY3Rp
b25zLmgKIHJlbmFtZSBwbGF0L2t2bS9hcm0ve3BhZ2V0YWJsZS5TID0+IHBhZ2V0YWJsZTY0LlN9
ICg4NCUpCgotLQoyLjE3LjEKCklNUE9SVEFOVCBOT1RJQ0U6IFRoZSBjb250ZW50cyBvZiB0aGlz
IGVtYWlsIGFuZCBhbnkgYXR0YWNobWVudHMgYXJlIGNvbmZpZGVudGlhbCBhbmQgbWF5IGFsc28g
YmUgcHJpdmlsZWdlZC4gSWYgeW91IGFyZSBub3QgdGhlIGludGVuZGVkIHJlY2lwaWVudCwgcGxl
YXNlIG5vdGlmeSB0aGUgc2VuZGVyIGltbWVkaWF0ZWx5IGFuZCBkbyBub3QgZGlzY2xvc2UgdGhl
IGNvbnRlbnRzIHRvIGFueSBvdGhlciBwZXJzb24sIHVzZSBpdCBmb3IgYW55IHB1cnBvc2UsIG9y
IHN0b3JlIG9yIGNvcHkgdGhlIGluZm9ybWF0aW9uIGluIGFueSBtZWRpdW0uIFRoYW5rIHlvdS4K
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1k
ZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBz
Oi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Fri Feb 22 06:22:21 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 22 Feb 2019 06:22:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gx4E1-0001VZ-LQ; Fri, 22 Feb 2019 06:22:21 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=WrH0=Q5=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1gx4Dz-0001VG-G8
 for minios-devel@lists.xenproject.org; Fri, 22 Feb 2019 06:22:19 +0000
X-Inumbo-ID: 33512352-366a-11e9-bc90-bc764e045a96
Received: from EUR02-VE1-obe.outbound.protection.outlook.com (unknown
 [2a01:111:f400:fe06::603])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 33512352-366a-11e9-bc90-bc764e045a96;
 Fri, 22 Feb 2019 06:22:18 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; 
 s=selector1-arm-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=aH2UU30G8H30TKzXxZjiGOq3I/u7B/Z6pjE0FHPcjWw=;
 b=UfOdleRDowpzWzxJI302992So731I2csFiFvDjUMTyjCtviN3KdWaEdo4Xa3mA7xMTpTxBcaKiPBT5KSNA74aeyuEcuAXnAZ67WhOZfylbrHqJ7AG6tYPJLlKXtMAjGQgRo4alEbbYqvrXqOKtTB83YVJswMX5+FBTVz37HXEFM=
Received: from VI1PR08CA0210.eurprd08.prod.outlook.com (2603:10a6:802:15::19)
 by HE1PR0802MB2538.eurprd08.prod.outlook.com (2603:10a6:3:e1::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1643.16; Fri, 22 Feb
 2019 06:22:14 +0000
Received: from DB5EUR03FT056.eop-EUR03.prod.protection.outlook.com
 (2a01:111:f400:7e0a::207) by VI1PR08CA0210.outlook.office365.com
 (2603:10a6:802:15::19) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.1643.16 via Frontend
 Transport; Fri, 22 Feb 2019 06:22:14 +0000
Authentication-Results: spf=pass (sender IP is 40.67.248.234)
 smtp.mailfrom=arm.com; lists.xenproject.org; dkim=none (message not signed)
 header.d=none;lists.xenproject.org; dmarc=bestguesspass action=none
 header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 40.67.248.234 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.67.248.234; helo=nebula.arm.com;
Received: from nebula.arm.com (40.67.248.234) by
 DB5EUR03FT056.mail.protection.outlook.com (10.152.21.124) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id
 15.20.1643.11 via Frontend Transport; Fri, 22 Feb 2019 06:22:14 +0000
Received: from AZ-NEU-EX03.Arm.com (10.251.24.31) by AZ-NEU-EX03.Arm.com
 (10.251.24.31) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1415.2; Fri, 22 Feb
 2019 06:22:11 +0000
Received: from localhost.localdomain (10.169.40.37) by mail.arm.com
 (10.251.24.31) with Microsoft SMTP Server id 15.1.1415.2 via Frontend
 Transport; Fri, 22 Feb 2019 06:22:08 +0000
From: Jia He <justin.he@arm.com>
To: <minios-devel@lists.xenproject.org>, Simon Kuenzer
 <simon.kuenzer@neclab.eu>, <Sharan.Santhanam@neclab.eu>
Date: Fri, 22 Feb 2019 14:21:38 +0800
Message-ID: <20190222062200.26602-2-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190222062200.26602-1-justin.he@arm.com>
References: <20190222062200.26602-1-justin.he@arm.com>
MIME-Version: 1.0
X-EOPAttributedMessage: 0
X-MS-Office365-Filtering-HT: Tenant
X-Forefront-Antispam-Report: CIP:40.67.248.234; IPV:NLI; CTRY:US; EFV:NLI;
 SFV:NSPM;
 SFS:(10009020)(346002)(396003)(136003)(39860400002)(376002)(2980300002)(189003)(199004)(40434004)(186003)(305945005)(6306002)(50226002)(2906002)(8936002)(81156014)(8676002)(106466001)(77096007)(53936002)(72206003)(26005)(478600001)(8746002)(68736007)(81166006)(14444005)(6666004)(356004)(5024004)(49486002)(1076003)(476003)(54906003)(4326008)(86362001)(2616005)(446003)(11346002)(76176011)(48376002)(50466002)(106002)(126002)(5660300002)(51416003)(336012)(486006)(426003)(36756003)(47776003)(97736004)(316002)(110136005);
 DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR0802MB2538; H:nebula.arm.com; FPR:;
 SPF:Pass; LANG:en; PTR:InfoDomainNonexistent; MX:1; A:1; 
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id: 7f54b3a8-1470-424a-110e-08d6988e1602
X-Microsoft-Antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600110)(711020)(4605104)(4608103)(4709054)(2017052603328)(7153060);
 SRVR:HE1PR0802MB2538; 
X-MS-TrafficTypeDiagnostic: HE1PR0802MB2538:
X-MS-Exchange-PUrlCount: 1
X-Microsoft-Exchange-Diagnostics: 1; HE1PR0802MB2538;
 20:ZkqQMX+kL+w03BaKN5Ibll8V4i9XwE+ul1+Sl0q+kBQV8tqS51CaIVun3sZjzwO0rkMGl0uPekqJX+RqvQQVKzQccH6Pd/1dX3C+huRJwInwbji8Cj0iqKX3jTbx0g8taENZ+5t74nMXgmFu0DaCmLAqYUZg0qCOj+vLo7egbxX50xDddGdllpJJr+87Di1WC+CfC3I8hbadTDvOYDNpxS8xB5/ZSX8KNdp++SLJydKLx8qjTTzfI2NTWOmudV2bYxPYpprkLPHtc5Vim/UeLV3MkuF8a7lOmzq9anjppnJJD9jEoEdtcm2m3MtAXhBGLSjyGUI6IA0iqXp2/hkrw8HgyDBhI8U8cnw4BrllVvJp8m3ZPCwjEb0/Y+g2E0ILjR+Q4EuM8uGJ1qdq+1b551rIuDMMSGWMlgnQGHHAcZ1HcyQ8gVdEPG4vwkyWtbp1DOGRkRKbByNUiU9wuxW27slbZP39pAi/qKtHfxPqvxP7RcriExIN9ckK5H2iZMxg
X-Microsoft-Antispam-PRVS: <HE1PR0802MB2538E005959EDE739AE03040F77F0@HE1PR0802MB2538.eurprd08.prod.outlook.com>
X-Forefront-PRVS: 09565527D6
X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0802MB2538;
 23:mJQ56ydphDn2dHfsDJh1r2cKEu3fPXfSVx7dDNa?=
 =?us-ascii?Q?urgbURJCH9t8oSEYLXRwoLL9ZjkMhKu2SxM0/skUoiYBjMFLLsg3HeItK5dL?=
 =?us-ascii?Q?fkngzKy/GI1PtBiFDLEjHO+NOPuxhsoJqC42mUNpoevqODjBusyHR5hq0FSY?=
 =?us-ascii?Q?hMJHGGUHWEUlrx5Tjxk64mFo/fl1RHJT5DyBJuEzsvmpdw3WmsKjhmQWV9lC?=
 =?us-ascii?Q?pDx1FBEvs7wDlkum/+mcN/vG3HUG5bGctKMWn1T7K3ng0gIeuvCU98IlXdS0?=
 =?us-ascii?Q?LfcYk3yrEqOPFs4r/nmzAZoAVLPpy0BDSE2a5BYIynJQFmh33o0TM//0ygmh?=
 =?us-ascii?Q?MvVyitlLcpVcprvu/Sn+NvVwdF0KZLNb0ufmVLxKsbBwTUwgj9mF74JCd5iV?=
 =?us-ascii?Q?9AKq5+OhpIVPjpbcviiCIF6adkLIO/KcbM5SRPNPZpyb18Tw56ghrjOz1mVj?=
 =?us-ascii?Q?QVyVtLNFiuxKOcB1c6lGcz3uyV20B4GMDVm/MXo3s7eZGjcuJ1kdfIz7FWA1?=
 =?us-ascii?Q?51LOO91JRJZ9h5I2cS4sPOq4Ef/l8/ViYpmsA53npFrFhKATxFauhMlXxOgC?=
 =?us-ascii?Q?YQHcZr6C2AwCxmidkVFaLZ0vkb8cTYqcHPAH6daVVI59Anwu8qISkVfDdQi+?=
 =?us-ascii?Q?yzRZqiSUGmHCQlsQxSHadN9tQYLtBTpninQ6fodUHEiJsoaKmi+WDBSwYe1H?=
 =?us-ascii?Q?2XW57GJKN19VvWge0+lOZ6QliTEL38CQLKx75N+XiK8Nb9hmiRYd28nExOdJ?=
 =?us-ascii?Q?wGJ/HK/MLOPkS5WzD8z/Ryj49Hqipnby+dU8cPa1mIUoukKD08kxRAhn8iHr?=
 =?us-ascii?Q?YOMwobEV+AvTWwqYzC1Ptu7MqkKsBCb7UYVJOoU4VswNdUIpKumFrj9E1rti?=
 =?us-ascii?Q?+Td2t1EMTMbV4yXXIauHNErqOb5HVsUsIAIIz55f8ml6SsGGH/fvnja3nQ00?=
 =?us-ascii?Q?35qt3jxixm9aJ0VfvVmmk2MqdxYAmKpF6t1pxT0oag25WO5ygFMpyGujeztS?=
 =?us-ascii?Q?0PVVyGqKvGYrA74VwgM58ILb3P11Zpp+oo3UoIC993bRs2F8M0Wba4WvxzrZ?=
 =?us-ascii?Q?x517PsMO4Ec7R01rEbvdtLggl5USnBSB6f7DAFujANYCVh8FGdtyj83koVb9?=
 =?us-ascii?Q?awOXlEOhT/JaClKE0DwVOBEXj9gjNH/OQKallWEqS9R6V5xk4+t3wYNKOFDH?=
 =?us-ascii?Q?niVbht8TOLcLKUnc=3D?=
X-MS-Exchange-SenderADCheck: 1
X-Microsoft-Antispam-Message-Info: 0u78guSKmxDjuXe2T4K4k8mYfZfbaF+Sv7lsmBWI5J5ALbSmTg2K7fP3ekdXjuVd2Lvvp8/iA7MzjrmT39r7xh51ZZjO9cgBq2lrNiFKBVPY0kD0Fu44h92kHago+c30R6tRlZzA79xM1Wfg46VFYOAdNtwtxhsLTgBw8kJUVMTMahvz/uAKPhm/SAIjqR+s1t3itiZz4KwPB1uudCyH3uwdV+f+1jQUa9mdXQ5infbbCo4hokFA8q67eFHzslo4FDNiwo5F9wX9nUWOUEtOpDKtTVVD5DqHG5MI4ijY83IuvSaEdMrKqwGfP7JIEpRRjsV9dTaUWzDbs8htubOz/DHtVtGvREt86ThDqNI/pMdpgdk0ev1MPU7Rt4KU0rZEwIXebn0bLfUq4w9oRRViRWqoNFAHc9GUsGIPQ4Ygwks=
X-Microsoft-Exchange-Diagnostics: 1; HE1PR0802MB2538;
 20:GbItBW0yntU6959qj9w5YBft5UJXY+7KGjjtawqcCTZF/6fF4qE+J13FbVrCW3MJO9umdoCUUIGgolLgHH6QZYs/f0U4++Z7lb2dE/f9EwA2CvMxxafck60AKlt0yc9O8YpkJWxk5lyFzXe46wIpqOylaLwut+ccw9VQBM4K8AM=
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Feb 2019 06:22:14.1295 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 7f54b3a8-1470-424a-110e-08d6988e1602
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[40.67.248.234];
 Helo=[nebula.arm.com]
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0802MB2538
Subject: [Minios-devel] [UNIKRAFT PATCHv6 01/23] build: Remove the check of
 '--enable-default-pie' in Makefile.uk
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>, Jia He <justin.he@arm.com>,
 Wei Chen <wei.chen@arm.com>, Kaly Xin <Kaly.Xin@arm.com>,
 Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

RnJvbTogV2VpIENoZW4gPHdlaS5jaGVuQGFybS5jb20+CkFzIGRpc2N1c3NlZCBpbiBtYWlsaW5n
IGxpc3QgWzFdLCB0aGUgY2hlY2sgZm9yICctLWVuYWJsZS1kZWZhdWx0LXBpZScKaXMgdW5uZWNl
c3NhcnksIGJlY2F1c2UgR0NDIHN1cHBvcnRzICctbm8tcGllJyBhcyBzb29uIGFzIGl0LgpXZSBo
YXZlIGNoZWNrZWQgJy1uby1waWUnIGFscmVhZHkuIFNvIHdlIGNhbiByZW1vdmUgdGhlIGNoZWNr
IGZvcgonLS1lbmFibGUtZGVmYXVsdC1waWUnIHRvIGdldCByaWQgb2YgdGhlIGNvbnNvbGUgY29t
bWFuZC4KClsxXWh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvYXJjaGl2ZXMvaHRtbC9taW5p
b3MtZGV2ZWwvMjAxOC0wOS9tc2cwMDA2Ny5odG1sCgpTaWduZWQtb2ZmLWJ5OiBXZWkgQ2hlbiA8
d2VpLmNoZW5AYXJtLmNvbT4KU2lnbmVkLW9mZi1ieTogSmlhIEhlIDxqdXN0aW4uaGVAYXJtLmNv
bT4KUmV2aWV3ZWQtYnk6IFNoYXJhbiBTYW50aGFuYW0gPHNoYXJhbi5zYW50aGFuYW1AbmVjbGFi
LmV1PgotLS0KIE1ha2VmaWxlLnVrIHwgOCArKystLS0tLQogMSBmaWxlIGNoYW5nZWQsIDMgaW5z
ZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9NYWtlZmlsZS51ayBiL01h
a2VmaWxlLnVrCmluZGV4IDI4OTMwNWEuLjU4YjBmMWYgMTAwNjQ0Ci0tLSBhL01ha2VmaWxlLnVr
CisrKyBiL01ha2VmaWxlLnVrCkBAIC01NywxMyArNTcsMTEgQEAgQVNGTEFHUyAgKz0gLURVS19W
RVJTSU9OPSQoVUtfVkVSU0lPTikuJChVS19TVUJWRVJTSU9OKSAtRFVLX0ZVTExWRVJTSU9OPSQo
VUtfRlUKIENGTEFHUyAgICs9IC1EVUtfVkVSU0lPTj0kKFVLX1ZFUlNJT04pLiQoVUtfU1VCVkVS
U0lPTikgLURVS19GVUxMVkVSU0lPTj0kKFVLX0ZVTExWRVJTSU9OKSAtRFVLX0NPREVOQU1FPSIk
KFVLX0NPREVOQU1FKSIKIENYWEZMQUdTICs9IC1EVUtfVkVSU0lPTj0kKFVLX1ZFUlNJT04pLiQo
VUtfU1VCVkVSU0lPTikgLURVS19GVUxMVkVSU0lPTj0kKFVLX0ZVTExWRVJTSU9OKSAtRFVLX0NP
REVOQU1FPSIkKFVLX0NPREVOQU1FKSIKCi0jIENoZWNrIHdoZXRoZXIgdGhlIHBpZSBvcHRpb24g
aXMgZW5hYmxlZCBieSBkZWZhdWx0LiBJZiBwb3NzaWJsZSwKLSMgYWRkIC1uby1waWUgdG8gbGlu
ayBmbGFncyB0byBvdmVycmlkZSBkZWZhdWx0IHBpZSBvcHRpb24uCi1QSUVfT04gPSAkKHNoZWxs
ICQoQ0MpIC12IDI+JjEgfCBncmVwIC1GbyAiZW5hYmxlLWRlZmF1bHQtcGllIikKLWlmbmVxICgk
KFBJRV9PTiksKQorIyBJZiBHQ0Mgc3VwcG9ydHMgIi1uby1waWUiIGZsYWcsIHdlIHdpbGwgYWRk
IHRoaXMgZmxhZyB0byBsaW5rIGZsYWdzIHRvCisjIG92ZXJyaWRlICJwaWUiIG9wdGlvbiwgYmVj
YXVzZSBzb21lIGRpc3RyaWJ1dGlvbnMgd2lsbCBzZXQKKyMgIi0tZW5hYmxlLWRlZmF1bHQtcGll
IiBieSBkZWZhdWx0LgogQVNGTEFHUy0kKGNhbGwgZ2NjX3ZlcnNpb25fZ2UsNiwxKSAgICAgKz0g
LW5vLXBpZQogQ0ZMQUdTLSQoY2FsbCBnY2NfdmVyc2lvbl9nZSw2LDEpICAgICAgKz0gLW5vLXBp
ZQogQ1hYRkxBR1MtJChjYWxsIGdjY192ZXJzaW9uX2dlLDYsMSkgICAgKz0gLW5vLXBpZQogTElC
TERGTEFHUy0kKGNhbGwgZ2NjX3ZlcnNpb25fZ2UsNiwxKSAgKz0gLW5vLXBpZQogTERGTEFHUy0k
KGNhbGwgZ2NjX3ZlcnNpb25fZ2UsNiwxKSAgICAgKz0gLW5vLXBpZQotZW5kaWYKLS0KMi4xNy4x
CgpJTVBPUlRBTlQgTk9USUNFOiBUaGUgY29udGVudHMgb2YgdGhpcyBlbWFpbCBhbmQgYW55IGF0
dGFjaG1lbnRzIGFyZSBjb25maWRlbnRpYWwgYW5kIG1heSBhbHNvIGJlIHByaXZpbGVnZWQuIElm
IHlvdSBhcmUgbm90IHRoZSBpbnRlbmRlZCByZWNpcGllbnQsIHBsZWFzZSBub3RpZnkgdGhlIHNl
bmRlciBpbW1lZGlhdGVseSBhbmQgZG8gbm90IGRpc2Nsb3NlIHRoZSBjb250ZW50cyB0byBhbnkg
b3RoZXIgcGVyc29uLCB1c2UgaXQgZm9yIGFueSBwdXJwb3NlLCBvciBzdG9yZSBvciBjb3B5IHRo
ZSBpbmZvcm1hdGlvbiBpbiBhbnkgbWVkaXVtLiBUaGFuayB5b3UuCgpfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0
Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2pl
Y3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Fri Feb 22 06:22:43 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 22 Feb 2019 06:22:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gx4EN-0001X6-Od; Fri, 22 Feb 2019 06:22:43 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=WrH0=Q5=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1gx4EL-0001Ww-J8
 for minios-devel@lists.xenproject.org; Fri, 22 Feb 2019 06:22:41 +0000
X-Inumbo-ID: 4106c937-366a-11e9-bc90-bc764e045a96
Received: from EUR01-VE1-obe.outbound.protection.outlook.com (unknown
 [2a01:111:f400:fe1f::630])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 4106c937-366a-11e9-bc90-bc764e045a96;
 Fri, 22 Feb 2019 06:22:40 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; 
 s=selector1-arm-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=yqbxQ9r/I/z8fUsVIo8Sj6sxjxlJQ0kNJQnsU50ww88=;
 b=Yu+5I584nD6TxUdHo7wuS7dPliTm+387o0v+y6JJ5lzxDYiL7QYYAcLit2rSBAQHA8w+vEhhSpE9xDVured5ncIKdX6KG7vDWM7xzPra4LWZIjRJox84y86FpKuyG/Q8Ms4DVaPX7PZ1pXED3wMH1l2pWnCtDKMyYHGT7HuQDps=
Received: from VI1PR08CA0089.eurprd08.prod.outlook.com (2603:10a6:800:d3::15)
 by AM5PR0802MB2530.eurprd08.prod.outlook.com (2603:10a6:203:a0::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1643.16; Fri, 22 Feb
 2019 06:22:38 +0000
Received: from AM5EUR03FT008.eop-EUR03.prod.protection.outlook.com
 (2a01:111:f400:7e08::202) by VI1PR08CA0089.outlook.office365.com
 (2603:10a6:800:d3::15) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1643.14 via Frontend
 Transport; Fri, 22 Feb 2019 06:22:38 +0000
Authentication-Results: spf=pass (sender IP is 40.67.248.234)
 smtp.mailfrom=arm.com; lists.xenproject.org; dkim=none (message not signed)
 header.d=none;lists.xenproject.org; dmarc=bestguesspass action=none
 header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 40.67.248.234 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.67.248.234; helo=nebula.arm.com;
Received: from nebula.arm.com (40.67.248.234) by
 AM5EUR03FT008.mail.protection.outlook.com (10.152.16.123) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.1643.11 via Frontend Transport; Fri, 22 Feb 2019 06:22:37 +0000
Received: from AZ-NEU-EX01.Emea.Arm.com (10.251.26.4) by AZ-NEU-EX04.Arm.com
 (10.251.24.32) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.1415.2; Fri, 22 Feb
 2019 06:22:36 +0000
Received: from AZ-NEU-EX03.Arm.com (10.251.24.31) by AZ-NEU-EX01.Emea.Arm.com
 (10.251.26.4) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1415.2; Fri, 22
 Feb 2019 06:22:35 +0000
Received: from localhost.localdomain (10.169.40.37) by mail.arm.com
 (10.251.24.31) with Microsoft SMTP Server id 15.1.1415.2 via Frontend
 Transport; Fri, 22 Feb 2019 06:22:32 +0000
From: Jia He <justin.he@arm.com>
To: <minios-devel@lists.xenproject.org>, Simon Kuenzer
 <simon.kuenzer@neclab.eu>, <Sharan.Santhanam@neclab.eu>
Date: Fri, 22 Feb 2019 14:21:45 +0800
Message-ID: <20190222062200.26602-9-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190222062200.26602-1-justin.he@arm.com>
References: <20190222062200.26602-1-justin.he@arm.com>
MIME-Version: 1.0
X-EOPAttributedMessage: 0
X-MS-Office365-Filtering-HT: Tenant
X-Forefront-Antispam-Report: CIP:40.67.248.234; IPV:NLI; CTRY:US; EFV:NLI;
 SFV:NSPM;
 SFS:(10009020)(376002)(396003)(39860400002)(346002)(136003)(2980300002)(199004)(189003)(40434004)(186003)(26005)(48376002)(305945005)(50466002)(106002)(50226002)(47776003)(77096007)(6666004)(356004)(36756003)(1076003)(2906002)(86362001)(68736007)(53936002)(8936002)(49486002)(5024004)(14444005)(5660300002)(4326008)(336012)(72206003)(54906003)(316002)(51416003)(478600001)(11346002)(8746002)(426003)(446003)(2616005)(81156014)(97736004)(76176011)(81166006)(126002)(8676002)(106466001)(486006)(476003)(110136005);
 DIR:OUT; SFP:1101; SCL:1; SRVR:AM5PR0802MB2530; H:nebula.arm.com; FPR:;
 SPF:Pass; LANG:en; PTR:InfoDomainNonexistent; A:1; MX:1; 
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id: 87f627da-5e17-4eb6-4169-08d6988e2446
X-Microsoft-Antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(8989299)(5600110)(711020)(4605104)(4608103)(4709054)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060);
 SRVR:AM5PR0802MB2530; 
X-MS-TrafficTypeDiagnostic: AM5PR0802MB2530:
X-Microsoft-Exchange-Diagnostics: 1; AM5PR0802MB2530;
 20:b+I+e/Bit0ggpQ0RNyUoE9PHH4OQ5klzNtOssvGxc6YZwf8ZKr9N9g+dO+mmdiGS6hSdEBjZ4R7LA2YyG8EtXmZ7uUftbsSrWeseg1bMg+QUU45BY+KbcG7RQNaodkdTEazPirTK22zQkTHCUSX3NNwezED+8aAJ+Ne3LWbTnYdquWdNGCv/eCamTwAilHIl5rys1f0ZcMMIfEVHIq96HiafBY7ofRAw2Gk+3V+DEyKmFEh9hHLSny6Kyd2ArDonk4+Y9itTVWUI/UKnBfcRElet7PohVkxfLXlXc98bC/4hzCJviCC9e5VuUDYcE2ig1JicyD4IuEXVbICAFWYMG3bijGe/lsRGAEN+eAJGUcYwm+s3ygBj/5I9H/X0gd7LXZuVtJ8Fi545Qj/8T0xikgkYktSS8Wxc1GAQngosPatMjQDx/1uhmHdl9uuLHUmNOWdps/O8TcqNiMJPhnCr0ec+dRVY+DD+6gtq5up1p5Vu1X7mdHsTFQISUPVKeHS8
X-Microsoft-Antispam-PRVS: <AM5PR0802MB2530B5F6A65D734AABA64FFDF77F0@AM5PR0802MB2530.eurprd08.prod.outlook.com>
X-Forefront-PRVS: 09565527D6
X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; AM5PR0802MB2530;
 23:74qFwOsR4RQb4FFpvyB157cOivIl960DV2IObDR?=
 =?us-ascii?Q?31wdj4rZ/1sxT9D7zv88OOXQgjhK6kdQ8Dikw7SMKxVQj0++O7bJ2JtW81iS?=
 =?us-ascii?Q?6m5aYB2B/i2LCZ1JaLMnqiiM8cRIOVWdzbpSBNLF3xKkBlyvRoRgrsKwTSRZ?=
 =?us-ascii?Q?S57DKkiojUQQJeRUdH2hANz3EofSZ7Iem4OU4lEsj6DKn83o2C2yOxb8b6ug?=
 =?us-ascii?Q?2Py9DmN1JWpwoCQRqmR5jG/hmTABoExIb5WRNl8o6YGJimP49iBhJveAmH01?=
 =?us-ascii?Q?Te0NWVdeNjsGayAEr9WzaAMS/laeXbxLs7Ca/mQXp8cnMTOEnilEUgYhO2jI?=
 =?us-ascii?Q?sBNlwScHcBnhCwslb+o2oSxIYcrKE7DCt1Vqj0nbYpNuZ2jrlVU6E38ru1Gd?=
 =?us-ascii?Q?WtnOkjQhETBHkfOXs8blRzb8SaqOfEEMGv/kZOY6uP0VEMMuhgc1Y7IexgB6?=
 =?us-ascii?Q?eww9LS8Hkh0txAFBwaNNp/NLN4RGGBYWSmgqtzt7ofMwns2PHyvmypAsrI8w?=
 =?us-ascii?Q?NBq6MZNGahiIvi5GeMFpEVvsJxyVmqtYqJ97Yhasyy3WPC0BfQWzr7Ku4YM5?=
 =?us-ascii?Q?8wvn9TWinr/yAF/VEJcEhZFb0ddGJU5TQqk0v1LckRDGokC1U9qTuzgzGxPO?=
 =?us-ascii?Q?Hanqzkrxk08tOaQpDtTMfCBXDPACZoxrM4ihwdB8JeWBIcriditv44HG+O1u?=
 =?us-ascii?Q?y1I2Jk4XKWaNAaOM71bqr42QsSGFzIcIXtE6pD9bObuE0/PxBVb871wFT6gf?=
 =?us-ascii?Q?D08w8MQErrkS34G+1SOHirBqry4EQ0KIFCw/E0A6DjShrd3ABV4ypkgfLCYO?=
 =?us-ascii?Q?k/0WMe3ww+eUdQY07dsTImzv9pm5QHPOyTc7Wa54Q6wXWXp0RzO8rawW4MNI?=
 =?us-ascii?Q?RfvVyMjjIg2e+3RvixBLPvaTORU/ByjX6w7P2cYIphnGRi1xvxy6dEjC0Ka1?=
 =?us-ascii?Q?T3PjStnNsJKDVVMFdxJLRjhtQUIgMU8EjC4mUianKzObOmEH8Grq5X2dDm4e?=
 =?us-ascii?Q?bGE4wMpqiRW4fimnVSDWCX0teAPW/3F6Froc50CvwvTrIW1znRCIgUyLW5y1?=
 =?us-ascii?Q?ZYUJXzIQIUeqPH4m5MjGIwH7kLiM2g47y9md2zLzkb4alHpIZnh4FkElyXap?=
 =?us-ascii?Q?VA1CQZGDxFWrmBLMivrDlnhbkrzn1Dg7nVcIL1MlE9qzxvrfoXT8e5J/84Ur?=
 =?us-ascii?Q?GuZy9JPQXnHCUEbY=3D?=
X-MS-Exchange-SenderADCheck: 1
X-Microsoft-Antispam-Message-Info: UD2naalbvZhdzsGaEs5O3LUAM9InuipQczlutjFdw7HSAO5nweRtCtf3IISf2esAWlTURc5ZndwOyJ4oqR2KpAY7pe9nTnOHnj+ebfnNhOukM1yYpuYzjTg/wyxPqckmnEFuIpO8HIQJd4DL9ui8lgtxLJ6anrjFjZvhURmUluDwGEGfYAm5fCZdi7G+FYqQ+8tfFWsxhAFG8RccOyOKpIlLH6hh0MXw5mTd3BPVIlOx8IAnk/TT2FTUf7IK7ClCJ1/iMHZG8xKCGBBaHh+CUns+DdV1QKwpCdLR+a8JmJmbhMmfGVZ2/ocpcJoBb9gWryPbhY6je9XnTtaOdTWtOLMfdPKdaBg+4V61h8mx+NQUp8laZyAFG0GV2bTvQnM11PW4G6dTRqEaeqGbBRQxn3ACBU1ESje+2F4vo/WR94E=
X-Microsoft-Exchange-Diagnostics: 1; AM5PR0802MB2530;
 20:pIY9r2LcLuWYeIC8NcaLwoHTRrKygHBB+CuZmCZ4HybcnC52d/hStXr2+AGOLj5usnus3b1HNLSLefXEKvX/vfLDWMH7rVotg19Dp6cMCdEWZQGYRKpXW5LI/51q0jMymKcCvatEfqiDOR5oURYxmy3bHEDg5GRqghunfDqestc=
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Feb 2019 06:22:37.9524 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 87f627da-5e17-4eb6-4169-08d6988e2446
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[40.67.248.234];
 Helo=[nebula.arm.com]
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0802MB2530
Subject: [Minios-devel] [UNIKRAFT PATCHv6 08/23] plat/common: Add referred
 source code URL for cache operation
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>, Jia He <justin.he@arm.com>,
 Wei Chen <wei.chen@arm.com>, Kaly Xin <Kaly.Xin@arm.com>,
 Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

RnJvbTogV2VpIENoZW4gPHdlaS5jaGVuQGFybS5jb20+CldlJ2QgYmV0dGVyIHRvIG1lbnRpb24g
d2hlcmUgb3VyIGNvZGUgY29tZXMgZnJvbSwgdGhpcyBoZWxwcyB0bwpjaGVjayB3aGV0aGVyIGNv
ZGUgaGFzIGJlZW4gdXBkYXRlZCBhZnRlcndhcmRzLgoKU2lnbmVkLW9mZi1ieTogV2VpIENoZW4g
PHdlaS5jaGVuQGFybS5jb20+ClNpZ25lZC1vZmYtYnk6IEppYSBIZSA8anVzdGluLmhlQGFybS5j
b20+Ci0tLQogcGxhdC9jb21tb24vYXJtL2NhY2hlNjQuUyB8IDMgKysrCiAxIGZpbGUgY2hhbmdl
ZCwgMyBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvcGxhdC9jb21tb24vYXJtL2NhY2hlNjQu
UyBiL3BsYXQvY29tbW9uL2FybS9jYWNoZTY0LlMKaW5kZXggYmFkYTQxNy4uZWFiN2E3MyAxMDA2
NDQKLS0tIGEvcGxhdC9jb21tb24vYXJtL2NhY2hlNjQuUworKysgYi9wbGF0L2NvbW1vbi9hcm0v
Y2FjaGU2NC5TCkBAIC0xLDUgKzEsOCBAQAogLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJT
RC0zLUNsYXVzZSAqLwogLyoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgYmFzZWQgb246CisgKiBn
aXRodWIuY29tL2ZyZWVic2QvZnJlZWJzZC9ibG9iL2RlNDFjNDYvc3lzL2FybTY0L2FybTY0L2Nw
dWZ1bmNfYXNtLlMKKyAqCiAgKiBBdXRob3JzOiBXZWkgQ2hlbiA8d2VpLmNoZW5AYXJtLmNvbT4K
ICAqCiAgKiBDb3B5cmlnaHQgKGMpIDIwMTQgUm9iaW4gUmFuZGhhd2EKLS0KMi4xNy4xCgpJTVBP
UlRBTlQgTk9USUNFOiBUaGUgY29udGVudHMgb2YgdGhpcyBlbWFpbCBhbmQgYW55IGF0dGFjaG1l
bnRzIGFyZSBjb25maWRlbnRpYWwgYW5kIG1heSBhbHNvIGJlIHByaXZpbGVnZWQuIElmIHlvdSBh
cmUgbm90IHRoZSBpbnRlbmRlZCByZWNpcGllbnQsIHBsZWFzZSBub3RpZnkgdGhlIHNlbmRlciBp
bW1lZGlhdGVseSBhbmQgZG8gbm90IGRpc2Nsb3NlIHRoZSBjb250ZW50cyB0byBhbnkgb3RoZXIg
cGVyc29uLCB1c2UgaXQgZm9yIGFueSBwdXJwb3NlLCBvciBzdG9yZSBvciBjb3B5IHRoZSBpbmZv
cm1hdGlvbiBpbiBhbnkgbWVkaXVtLiBUaGFuayB5b3UuCgpfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlv
cy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3Jn
L21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Fri Feb 22 06:22:44 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 22 Feb 2019 06:22:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gx4EO-0001XU-QH; Fri, 22 Feb 2019 06:22:44 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=WrH0=Q5=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1gx4EM-0001X1-Ou
 for minios-devel@lists.xenproject.org; Fri, 22 Feb 2019 06:22:42 +0000
X-Inumbo-ID: 416c22b0-366a-11e9-bc90-bc764e045a96
Received: from EUR01-DB5-obe.outbound.protection.outlook.com (unknown
 [2a01:111:f400:fe02::608])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 416c22b0-366a-11e9-bc90-bc764e045a96;
 Fri, 22 Feb 2019 06:22:41 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; 
 s=selector1-arm-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=2sc7wTyxFDGPeAalXkeqQ9/lSpleIec/zExB3f+XZkI=;
 b=ZVJC3tuRquZ2Qi+1iWQRsMy97j9SLnyNs+lqSst2drJ64zenAO7bK5BsCFxhkurqS7HU+vNZanfp44/D/3TpWQ92hSlo/uB4WUICCAkmTwfvnvjpJFM3zGeqZHFGvysUP0ZZy2syUiQzAD/q5oMSAp/vgVnSE+amPG3e1FuD4yA=
Received: from VI1PR08CA0212.eurprd08.prod.outlook.com (2603:10a6:802:15::21)
 by VI1PR08MB3263.eurprd08.prod.outlook.com (2603:10a6:803:3d::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1622.19; Fri, 22 Feb
 2019 06:22:39 +0000
Received: from DB5EUR03FT006.eop-EUR03.prod.protection.outlook.com
 (2a01:111:f400:7e0a::206) by VI1PR08CA0212.outlook.office365.com
 (2603:10a6:802:15::21) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1643.16 via Frontend
 Transport; Fri, 22 Feb 2019 06:22:38 +0000
Authentication-Results: spf=pass (sender IP is 40.67.248.234)
 smtp.mailfrom=arm.com; lists.xenproject.org; dkim=none (message not signed)
 header.d=none;lists.xenproject.org; dmarc=bestguesspass action=none
 header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 40.67.248.234 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.67.248.234; helo=nebula.arm.com;
Received: from nebula.arm.com (40.67.248.234) by
 DB5EUR03FT006.mail.protection.outlook.com (10.152.20.106) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.1643.11 via Frontend Transport; Fri, 22 Feb 2019 06:22:38 +0000
Received: from AZ-NEU-EX03.Arm.com (10.251.24.31) by AZ-NEU-EX03.Arm.com
 (10.251.24.31) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1415.2; Fri, 22 Feb
 2019 06:22:25 +0000
Received: from localhost.localdomain (10.169.40.37) by mail.arm.com
 (10.251.24.31) with Microsoft SMTP Server id 15.1.1415.2 via Frontend
 Transport; Fri, 22 Feb 2019 06:22:22 +0000
From: Jia He <justin.he@arm.com>
To: <minios-devel@lists.xenproject.org>, Simon Kuenzer
 <simon.kuenzer@neclab.eu>, <Sharan.Santhanam@neclab.eu>
Date: Fri, 22 Feb 2019 14:21:42 +0800
Message-ID: <20190222062200.26602-6-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190222062200.26602-1-justin.he@arm.com>
References: <20190222062200.26602-1-justin.he@arm.com>
MIME-Version: 1.0
X-EOPAttributedMessage: 0
X-MS-Office365-Filtering-HT: Tenant
X-Forefront-Antispam-Report: CIP:40.67.248.234; IPV:NLI; CTRY:US; EFV:NLI;
 SFV:NSPM;
 SFS:(10009020)(39860400002)(396003)(346002)(376002)(136003)(2980300002)(199004)(189003)(40434004)(6666004)(50466002)(356004)(8746002)(478600001)(336012)(50226002)(81166006)(426003)(8936002)(26005)(77096007)(186003)(48376002)(53936002)(305945005)(36756003)(8676002)(81156014)(68736007)(126002)(2616005)(476003)(446003)(72206003)(486006)(11346002)(5660300002)(76176011)(51416003)(49486002)(14444005)(5024004)(4326008)(106002)(86362001)(2906002)(54906003)(110136005)(316002)(97736004)(47776003)(106466001)(1076003);
 DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR08MB3263; H:nebula.arm.com; FPR:; SPF:Pass;
 LANG:en; PTR:InfoDomainNonexistent; A:1; MX:1; 
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id: 4621374b-1734-41dd-b049-08d6988e24a3
X-Microsoft-Antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(8989299)(5600110)(711020)(4605104)(4608103)(4709054)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060);
 SRVR:VI1PR08MB3263; 
X-MS-TrafficTypeDiagnostic: VI1PR08MB3263:
X-Microsoft-Exchange-Diagnostics: 1; VI1PR08MB3263;
 20:fzSTMQXgLKoMrUeCLzglgmiIGnKmeTU3xtt56jMn87SIlnUXzcl72Pw8QSGDJnftuIPjdQoSokUz6CR3SFXUyrBGn93BLpAlay/qzirJ46nJhL4bu5MoeKxoMj3Elm0pli15SB2YmO5q+2hbKVW5kZmu+yJgxrTaeqd2qUqoFzLmQ2ghuoY52DWpYF8ExKTL+ZRCAYENQt4wU+oqPLPiBIpAwqxg0QnnYoOxI/dCRDKYS0ANPA4GOwmLLLDtmwFWk81w2prhaewMZ8UbxLrdff0IFJuc702rvu5reisjgEUiyvEELz821+cgc/rVmK1AT8xxyMPF49R2szTD/qk7cMNr3T2t56b/L+Zs54QgmzJU9ePPozuYoVfQN3PdBzPgzDeY6P8wztr/f/317jayI5x35gP16aEofczOjgDutcep1mKRFwp+r3AXCuppZUJ/lyeU6GbBu1OSmLmyOZVgrWWXxs2NNLcFocdo4x/9IV02WDbQ1z5F7fCI4r5NjbLN
X-Microsoft-Antispam-PRVS: <VI1PR08MB326300909D4986DC507A2C00F77F0@VI1PR08MB3263.eurprd08.prod.outlook.com>
X-Forefront-PRVS: 09565527D6
X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR08MB3263;
 23:ZgUr6s8w5YPx8WgnwG+asVZrDKtcJkRv4DnWGQ8HN?=
 =?us-ascii?Q?AMk/sX6U1xyPrSU8l4aljLIwtrbqzDcV+7Fz/fnX2FGOpKw7Seu1yJjZwIic?=
 =?us-ascii?Q?tEq5LdqvGkL396HUfNfGT3oYB3kImaAInzNY0AzBJ/SddzFxBS0BCQ0fyMtu?=
 =?us-ascii?Q?eTj61mIC0EqpXJ710ZjwPOEuB+BTK3vmyY17mtGoAlArmcm6bI4NzwKNkLKU?=
 =?us-ascii?Q?gdQH/osE24/tvnpSJya+KTcefmn5jWltRqkB3DzYfTfkZTP3rpg1rWGNQd1X?=
 =?us-ascii?Q?Lt6jNXwPsvWSgkA0DvhNRQWx6QZ+Y5C7F9YnJbKr84z2InEK3yqBcA0iZgIV?=
 =?us-ascii?Q?9MDEg/dSTDFOPWOmB7J7t2KsIfmpIxiXn0bulLiJyjm1uWGZtPxUdaPEs4Fx?=
 =?us-ascii?Q?PHWtDmzYg1SaAL59tp4+Om9aI7YyY4tqFbyyrBAZYkobEt9kND/DhHoe70/g?=
 =?us-ascii?Q?aEK7lpgUxA3zCy6l2iJjbMD2A39Jec9Y5WsBG6L80crDOwHGaskrxayp8Foz?=
 =?us-ascii?Q?YqMck5uhLjxCm5TG4gurCe2dYgKHHXPUzXcRx4SOyCuggXBDKWt2bwb05/Z/?=
 =?us-ascii?Q?muGRb86Dx6Z/yhXPa5QNzhVtUpa0bMagy8PrWfIrLqFZrEUUhzZfLtUafevr?=
 =?us-ascii?Q?r44xTWX42EmEt1YLavpDSX2R9ZtAtabxma1OK+RJGIdqPvxyaoCd69HBjiZz?=
 =?us-ascii?Q?xVAHPLW4FY3ryNW3f2Cl+v2Wo41r2zFU8aNR7nETiqhCWQabPIIQbPlM2eM/?=
 =?us-ascii?Q?lQuLyfuXVAIm9Ed/zDvxmeW5kEnig327HQe0WapfDnlBZgRIwFvtjQj2B4Nw?=
 =?us-ascii?Q?PYYQcC1PmVYlOKbJQ/IVBQ7LegHVzG6BWKPV6Xdl64qONCrVK09KxAVKoVko?=
 =?us-ascii?Q?k17CDPWQgFKmtivLOkkb3/WUYzgHaR5pjMSwa4j4Jq4UNnLqFHlHhyH/Ewti?=
 =?us-ascii?Q?gJGEYvpyDpJGCV3nI1j/I/Zt9gQIS0k+B3TibHnodXC9KWETTqYaJTLLeWqG?=
 =?us-ascii?Q?kfRgbzyACZbHOiEnybW1jL0HHL+0cXIXQxY5lGmvNcmwEkgZQYImAfD63GX9?=
 =?us-ascii?Q?afgeMS3++ZM/ykuj3N0OajRQcm5BaEz1aVOejzCPK+T3dn/77GT0qVfFOInP?=
 =?us-ascii?Q?x4vcFFDiAbaPfv56GQKaUZwGFR+NREBF1DXgORR8TpxKqmv8wL3EVxolwvFQ?=
 =?us-ascii?Q?Qq99k1FT0Ytmgk=3D?=
X-MS-Exchange-SenderADCheck: 1
X-Microsoft-Antispam-Message-Info: v11im7jIzuqNqBHRgLUCH3deDZpO6n4IizuLJq9nV6NC8CJgqHJg5P82UhOnHxPvz4IZNeE3ERkHkyWKc7a49gUMvh8G50OQf1+rAeBRe/tXkA/Bu1QfntqNYKElBK9Wf3yC14m4Q9/XID4JtSuoelEPqXG7L+jmdFE5meQY5yh7BZ9Naizkbnu4LPqIAQlxmzWyE7Wv4qWlB8cELUnxnEZM/bgT2vmEvPKO2tYW1f1PTPVK1Z09kyRps7F+BI6X/prN9zsn8Jw8BHMoZBeZhtGQQh9jhTMWwTUhTalUBlPf9c4vurrl8A1gIMlRk4CSmrwQbcI0MgZ+o9Hp2wVlAwmSPSD3UnmnvYuBRKvD2+rmOOtBbFSiy4BDfJaXPpECMY4vrcTNw3ySJMUpOgC2nmv3fk/1/wD/4kafbfS/2Fg=
X-Microsoft-Exchange-Diagnostics: 1; VI1PR08MB3263;
 20:Y9ddF5vXdNVL6PgeejVoteu0tw/gnXC9w92CsYvvmZM5oxmx4ZJU/RBCNRD4SKxqAMln6Svvp72pbTP6gCG1LmI6Kkwh3RPAwsfrs2bkfyymWolwwejoodjOOJTWw2w6zbHvGdpBAeE8+YvtBlIX5ExlqlYhdSqZWHu+OL5Y5EY=
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Feb 2019 06:22:38.6879 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 4621374b-1734-41dd-b049-08d6988e24a3
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[40.67.248.234];
 Helo=[nebula.arm.com]
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB3263
Subject: [Minios-devel] [UNIKRAFT PATCHv6 05/23] plat/common: Remove
 earlycloberr from SYSREG_READ32 for Arm64
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>, Jia He <justin.he@arm.com>,
 Wei Chen <wei.chen@arm.com>, Kaly Xin <Kaly.Xin@arm.com>,
 Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

RnJvbTogV2VpIENoZW4gPHdlaS5jaGVuQGFybS5jb20+CkFzIHRoZSBvcGVyYW5kIHdpbGwgbm90
IGJlIHdyaXR0ZW4gYmVmb3JlIHRoZSBpbnN0cnVjdGlvbiBoYXMgZmluaXNoZWQuClNvLCB3ZSBk
b24ndCBuZWVkIHRoZSBlYXJseWNsb2JlcnIgKCYpIGluIFNZU1JFR19SRUFEMzIuCgpTaWduZWQt
b2ZmLWJ5OiBXZWkgQ2hlbiA8d2VpLmNoZW5AYXJtLmNvbT4KU2lnbmVkLW9mZi1ieTogSmlhIEhl
IDxqdXN0aW4uaGVAYXJtLmNvbT4KUmV2aWV3ZWQtYnk6IFNoYXJhbiBTYW50aGFuYW0gPHNoYXJh
bi5zYW50aGFuYW1AbmVjbGFiLmV1PgotLS0KIHBsYXQvY29tbW9uL2luY2x1ZGUvYXJtL2FybTY0
L2NwdS5oIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0
aW9ucygtKQoKZGlmZiAtLWdpdCBhL3BsYXQvY29tbW9uL2luY2x1ZGUvYXJtL2FybTY0L2NwdS5o
IGIvcGxhdC9jb21tb24vaW5jbHVkZS9hcm0vYXJtNjQvY3B1LmgKaW5kZXggYzAwOWZjOC4uMTQ5
NTE5MiAxMDA2NDQKLS0tIGEvcGxhdC9jb21tb24vaW5jbHVkZS9hcm0vYXJtNjQvY3B1LmgKKysr
IGIvcGxhdC9jb21tb24vaW5jbHVkZS9hcm0vYXJtNjQvY3B1LmgKQEAgLTczLDcgKzczLDcgQEAg
c3RhdGljIGlubGluZSB2b2lkIF9pbml0X2NwdWZlYXR1cmVzKHZvaWQpCiAjZGVmaW5lIFNZU1JF
R19SRUFEKHJlZykgXAogKHsgICAgIHVpbnQ2NF90IHZhbDsgXAogICAgICAgIF9fYXNtX18gX192
b2xhdGlsZV9fKCJtcnMgJTAsICIgX19TVFJJTkdJRlkocmVnKSBcCi0gICAgICAgICAgICAgICAg
ICAgICAgIDogIj0mciIgKHZhbCkpOyBcCisgICAgICAgICAgICAgICAgICAgICAgIDogIj1yIiAo
dmFsKSk7IFwKICAgICAgICB2YWw7IFwKIH0pCgpAQCAtODQsNyArODQsNyBAQCBzdGF0aWMgaW5s
aW5lIHZvaWQgX2luaXRfY3B1ZmVhdHVyZXModm9pZCkKICNkZWZpbmUgU1lTUkVHX1JFQUQzMihy
ZWcpIFwKICh7ICAgICB1aW50MzJfdCB2YWw7IFwKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVf
XygibXJzICUwLCAiIF9fU1RSSU5HSUZZKHJlZykgXAotICAgICAgICAgICAgICAgICAgICAgICA6
ICI9JnIiICh2YWwpKTsgXAorICAgICAgICAgICAgICAgICAgICAgICA6ICI9ciIgKHZhbCkpOyBc
CiAgICAgICAgdmFsOyBcCiB9KQoKLS0KMi4xNy4xCgpJTVBPUlRBTlQgTk9USUNFOiBUaGUgY29u
dGVudHMgb2YgdGhpcyBlbWFpbCBhbmQgYW55IGF0dGFjaG1lbnRzIGFyZSBjb25maWRlbnRpYWwg
YW5kIG1heSBhbHNvIGJlIHByaXZpbGVnZWQuIElmIHlvdSBhcmUgbm90IHRoZSBpbnRlbmRlZCBy
ZWNpcGllbnQsIHBsZWFzZSBub3RpZnkgdGhlIHNlbmRlciBpbW1lZGlhdGVseSBhbmQgZG8gbm90
IGRpc2Nsb3NlIHRoZSBjb250ZW50cyB0byBhbnkgb3RoZXIgcGVyc29uLCB1c2UgaXQgZm9yIGFu
eSBwdXJwb3NlLCBvciBzdG9yZSBvciBjb3B5IHRoZSBpbmZvcm1hdGlvbiBpbiBhbnkgbWVkaXVt
LiBUaGFuayB5b3UuCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9q
ZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWlu
aW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Fri Feb 22 06:22:45 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 22 Feb 2019 06:22:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gx4EP-0001Xv-Rq; Fri, 22 Feb 2019 06:22:45 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=WrH0=Q5=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1gx4EN-0001XJ-VE
 for minios-devel@lists.xenproject.org; Fri, 22 Feb 2019 06:22:44 +0000
X-Inumbo-ID: 411ec38f-366a-11e9-bc90-bc764e045a96
Received: from EUR01-HE1-obe.outbound.protection.outlook.com (unknown
 [2a01:111:f400:fe1e::60d])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 411ec38f-366a-11e9-bc90-bc764e045a96;
 Fri, 22 Feb 2019 06:22:41 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; 
 s=selector1-arm-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=trUcCLKpot3tBOl6RI7IUUuWn85ERf98uPWypI5iyps=;
 b=OySjGMY1LhL1+pBNnmF64M2ABS9VBF3huBUsXG60kJ04ZnijtLxsWQRutl7AC3gH6/kcT0HY1VwslZfm4sghGICJ2sZAiDOLUbjOaNEkAbmv82Xy7dSh4z+v8ddZIBh42opWvkNubX58HhWZ27nXOQ88zsIP74vdLFiktcwgbVY=
Received: from VI1PR08CA0212.eurprd08.prod.outlook.com (2603:10a6:802:15::21)
 by AM4PR0801MB1476.eurprd08.prod.outlook.com (2603:10a6:200:3d::10)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1622.18; Fri, 22 Feb
 2019 06:22:37 +0000
Received: from DB5EUR03FT006.eop-EUR03.prod.protection.outlook.com
 (2a01:111:f400:7e0a::206) by VI1PR08CA0212.outlook.office365.com
 (2603:10a6:802:15::21) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1643.16 via Frontend
 Transport; Fri, 22 Feb 2019 06:22:37 +0000
Authentication-Results: spf=pass (sender IP is 40.67.248.234)
 smtp.mailfrom=arm.com; lists.xenproject.org; dkim=none (message not signed)
 header.d=none;lists.xenproject.org; dmarc=bestguesspass action=none
 header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 40.67.248.234 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.67.248.234; helo=nebula.arm.com;
Received: from nebula.arm.com (40.67.248.234) by
 DB5EUR03FT006.mail.protection.outlook.com (10.152.20.106) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.1643.11 via Frontend Transport; Fri, 22 Feb 2019 06:22:37 +0000
Received: from AZ-NEU-EX03.Arm.com (10.251.24.31) by AZ-NEU-EX03.Arm.com
 (10.251.24.31) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1415.2; Fri, 22 Feb
 2019 06:22:21 +0000
Received: from localhost.localdomain (10.169.40.37) by mail.arm.com
 (10.251.24.31) with Microsoft SMTP Server id 15.1.1415.2 via Frontend
 Transport; Fri, 22 Feb 2019 06:22:18 +0000
From: Jia He <justin.he@arm.com>
To: <minios-devel@lists.xenproject.org>, Simon Kuenzer
 <simon.kuenzer@neclab.eu>, <Sharan.Santhanam@neclab.eu>
Date: Fri, 22 Feb 2019 14:21:41 +0800
Message-ID: <20190222062200.26602-5-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190222062200.26602-1-justin.he@arm.com>
References: <20190222062200.26602-1-justin.he@arm.com>
MIME-Version: 1.0
X-EOPAttributedMessage: 0
X-MS-Office365-Filtering-HT: Tenant
X-Forefront-Antispam-Report: CIP:40.67.248.234; IPV:NLI; CTRY:US; EFV:NLI;
 SFV:NSPM;
 SFS:(10009020)(346002)(136003)(376002)(39860400002)(396003)(2980300002)(40434004)(199004)(189003)(426003)(106002)(4326008)(50226002)(48376002)(14444005)(5024004)(478600001)(305945005)(2616005)(1076003)(49486002)(110136005)(316002)(72206003)(336012)(36756003)(5660300002)(86362001)(53936002)(54906003)(76176011)(2906002)(30864003)(446003)(51416003)(8676002)(77096007)(81166006)(486006)(81156014)(97736004)(8746002)(106466001)(186003)(11346002)(50466002)(476003)(356004)(47776003)(8936002)(68736007)(126002)(6666004)(26005);
 DIR:OUT; SFP:1101; SCL:1; SRVR:AM4PR0801MB1476; H:nebula.arm.com; FPR:;
 SPF:Pass; LANG:en; PTR:InfoDomainNonexistent; A:1; MX:1; 
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id: f0b59c3f-a76e-4f19-001c-08d6988e23d9
X-Microsoft-Antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600110)(711020)(4605104)(4608103)(4709054)(2017052603328)(7153060);
 SRVR:AM4PR0801MB1476; 
X-MS-TrafficTypeDiagnostic: AM4PR0801MB1476:
X-Microsoft-Exchange-Diagnostics: 1; AM4PR0801MB1476;
 20:4QtmqFO7vh8xnei53WpzrFRxea/c0JAsQ/UYXaKT7abfvr0N3lTxwfVRPmvN89mXB6lqRi1L7T5vMGS/9PK9bLLFu7ognGEb/XwVUBn8Bwrs64DZNWxWj4vKgl2ngCCb0jj2dlBcB2vpV22gQ9DBM7f+J9WPYLJb5e9pHsiXLJw69+uX+xslqp+2KVnGlalxUOqcFoXOJUtQ21hHp7q7yWQKrfTaRHCIK1a6jnKjUwqwRFPT2r/kCXCCKkpWJBSlt5Fx7bndilyGXKvRlUjzY9cuBLnEvOUG0KxWtZ2X+Fs+0rWtk2XedrbJ0ZfqTb7n8lKK4Wu90xfMGgwVrD0C5xU0nLC4RENqVsBNcTyW7AYHEOOZAoqIseG9g5phO69+gWMvsuNJ1V0FgPEKFVDpIFuRIe7A4FseXYwii4jPa9N91M9jVQqcJyR2ar9Cz9zt1AXxovARwW4EgWKWqH5Qkna/8ZmIJ1T4cdhKhAIpmj34QD775MR/VnMQ0XJTpKGJ
X-Microsoft-Antispam-PRVS: <AM4PR0801MB1476892A35C90319AB99411EF77F0@AM4PR0801MB1476.eurprd08.prod.outlook.com>
X-Forefront-PRVS: 09565527D6
X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; AM4PR0801MB1476;
 23:o/oW7/lE8fULMdp9slOguVJshvleKvw1B4EClxK?=
 =?us-ascii?Q?iX8fAD4ahBddLrddtiXgpkjhaGGV6HHermsKPsWyqrd7X3Q6xuhD42rejDPJ?=
 =?us-ascii?Q?Tl+zLeu5JCFM9ol8DfPsR6gzPABrO4l+NzCyvwy5JND4Zqf5rprZsJcdsEOW?=
 =?us-ascii?Q?UqTIyQRU39HoRM1CWTbnsw6LIPrI9tB+qwRI/JNZFMOYYUWRb1ukcY03fgpD?=
 =?us-ascii?Q?NXEdgwoj11vqkavAndVJRaVLOHtsC0OhcsVtvm5iWR13oy4dKHM0MlzcLm3P?=
 =?us-ascii?Q?xIuqOivWyO0wEpKSje/gRGa86FqnfTG+WrRoGSZ/0YBnq0uWucJO+JRe6ZDT?=
 =?us-ascii?Q?ARXvRXJDbgWO2vacTUghRuEMNtRZ/D/G3BmCAg8HQd6YdCtNH5TNtCcongw8?=
 =?us-ascii?Q?q9NHKiRtzxbDakaiMahzJ8/xioEGgNtHdRReKm0LihyY2pI6TxxQAkBJrCjq?=
 =?us-ascii?Q?rsri4QOx/pc+mEgqHHtRu8W/brmVACml/WMaxQlRKyT4+Zm/f7++imXdCCXJ?=
 =?us-ascii?Q?n5A6K6KURx/ecgsoyIb3cfLBqsO6K3hrvol84dN1+j3nf8WexWhn7y8ZRz+2?=
 =?us-ascii?Q?fYO8JnULmMvFFeKEotEHytVrpZ0ulCqLN6FrjVtjwiaF+xz1xQLO6Qg9OIEZ?=
 =?us-ascii?Q?SpEiFCiTAmouxmaZu5E1/vsRVU7MZ8U3NAzblEoLE5G+fPxGPEusIrr+68TM?=
 =?us-ascii?Q?9vW68FNgxYVif2ptGR7UF0o3Hxb34DtEY38142L2OWJidctTQY7vFLYjdGY0?=
 =?us-ascii?Q?PiQXDSWsmwjxs6/AsrxE6LeFahUeSFcC7DMO9hqQDwg9oaU5hFCyo1ee3Mw/?=
 =?us-ascii?Q?rZlS3nyStV3vD77IQWadlJyUY5rXM8nTqnAsLfQOGwbILj5sdKF1NwYYlEGN?=
 =?us-ascii?Q?5F7PwGbqxV6BT3vhgsX/CEYIpWMkGh5PT7MBWLF96g+z1Prya35TbY42SGQ8?=
 =?us-ascii?Q?jSmLEagXtoUAH34Bq1HIyPjghPMO5bjroPQzQ/8RSxa/5fmZh9/+AknWKKlA?=
 =?us-ascii?Q?oD7NwgQoYHMpnKM4Gu4OiICv9T40dd/hPpNU7HfDRTLZaTCf2Q6omxUWSF41?=
 =?us-ascii?Q?9Q/Au2uONwfq3psGp+3i0YzL8hV9UM1wwQ+uyoCcJG7zhbEvdgtqs35zwsz9?=
 =?us-ascii?Q?wrLJDc5smmQstxhxGZdRFmgqSkDAuq66BaupUyCRWowD8R5Egx2BIcmY3uDw?=
 =?us-ascii?Q?JuOjoNEVGEOf1ndUi2kh7dDkeYrkS3MMKbDBm?=
X-MS-Exchange-SenderADCheck: 1
X-Microsoft-Antispam-Message-Info: Roft2Jfvr6ixniTr42trQQrAAC05nNpQkxK49Hx7G1M2rmsdLRjBTuTuHOXgNWlNY9LyHPdSgZUHczmPjNVztUyTS3kr9dJNXwZVlUrEbxGSbcPAUvufPRbkt/yuAkOSd/JDRnAbNc6P0JrkJSSdvudDi02DysWzkc1/ZPAXlTJWnmOANIwlufJb85i9hf8HunrBC5dpMNklUdmwrfBuZQIoCBcbylHz7XXLSMLmVDcW4w6k6QXQdXeF76qhiZ2nRuIXwBR44a1YBPQ3zmhTkP1UKXsyGKGdjp/Imql8RSs6TmfZmE/b4mFL43CVgGr0XDojxbswQnqNon5wXO7njiW3oU+Cml6mTZnenS7ltW6Au13XPFDmaujrSc/6Aoke9HUPDUKIPIG52fzJW9MJ7WPODyYC9gfQu41Qzoulu3c=
X-Microsoft-Exchange-Diagnostics: 1; AM4PR0801MB1476;
 20:y0sOFmbQ8AL8gR6pVc4LDxEUg634maw91dcGeL2UZsRG/g0JrIqZblg1NNl6c2YYwVBeDf/H/7e/f2xBuPSABnsGJf2aCcj2uBmaYXFrDIN6U6o8248JGbbgBiZFYn1jrl4nT5tQ765rbBcBBn1lNhiaa1dp5RnVKdYIStjHNUQ=
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Feb 2019 06:22:37.3575 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: f0b59c3f-a76e-4f19-001c-08d6988e23d9
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[40.67.248.234];
 Helo=[nebula.arm.com]
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM4PR0801MB1476
Subject: [Minios-devel] [UNIKRAFT PATCHv6 04/23] plat: Clean up kernel image
 symbols
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>, Jia He <justin.he@arm.com>,
 Wei Chen <wei.chen@arm.com>, Kaly Xin <Kaly.Xin@arm.com>,
 Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

RnJvbTogV2VpIENoZW4gPHdlaS5jaGVuQGFybS5jb20+ClRoZXJlIGlzIGEgcG90ZW50aWFsIHVu
ZGVmaW5lZCBiZWhhdmlvdXIgZm9yIHBvaW50ZXIgY29tcGFyaXNpb24uCkhvdyB0byBhdm9pZCB0
aGlzIGdjYyBvcHRpbWl6YXRpb24gaXMgdW5kZXIgZGlzY3Vzc2luZy4gU2luY2UgaXQKaXMgbm90
IGEgYmxvY2sgaXNzdWUuIEkgd2lsbCBmb2xsb3cgaXQgdXAgaW4gdGhlIGZ1dHVyZS4KUHJvdmlk
ZSBtYWNybyBkZWZpbml0aW9ucyBmb3IgdGV4dCxic3MsZGF0YS4uLiBpcyB0aGUgcHJlY29uZGl0
aW9uCmZvciBmdXR1cmUgc29sdXRpb24uCgpTaWduZWQtb2ZmLWJ5OiBXZWkgQ2hlbiA8d2VpLmNo
ZW5AYXJtLmNvbT4KU2lnbmVkLW9mZi1ieTogSmlhIEhlIDxqdXN0aW4uaGVAYXJtLmNvbT4KUmV2
aWV3ZWQtYnk6IFNoYXJhbiBTYW50aGFuYW0gPHNoYXJhbi5zYW50aGFuYW1AbmVjbGFiLmV1Pgot
LS0KdjUtPnY2OiBmaXggY29tcGlsYXRpb24gZXJyb3Igb24geDg2IHhlbiBwbGF0LgoKLS0tCiBw
bGF0L2NvbW1vbi9pbmNsdWRlL3NlY3Rpb25zLmggfCAxNCArKysrKysrKysrKysrKwogcGxhdC9r
dm0vYXJtL3NldHVwLmMgICAgICAgICAgIHwgIDcgKysrLS0tLQogcGxhdC9rdm0vbWVtb3J5LmMg
ICAgICAgICAgICAgIHwgMjMgKysrKysrKysrKystLS0tLS0tLS0tLS0KIHBsYXQva3ZtL3g4Ni9z
ZXR1cC5jICAgICAgICAgICB8ICA2ICsrKy0tLQogcGxhdC94ZW4vYXJtL3NldHVwLmMgICAgICAg
ICAgIHwgIDYgKysrLS0tCiBwbGF0L3hlbi9pbmNsdWRlL3hlbi1hcm0vbW0uaCAgfCAgMyArLS0K
IHBsYXQveGVuL2luY2x1ZGUveGVuLXg4Ni9tbS5oICB8IDIxICsrKysrKysrKysrLS0tLS0tLS0t
LQogcGxhdC94ZW4vbWVtb3J5LmMgICAgICAgICAgICAgIHwgMjIgKysrKysrKysrKystLS0tLS0t
LS0tLQogcGxhdC94ZW4veDg2L21tLmMgICAgICAgICAgICAgIHwgMTcgKysrKysrKystLS0tLS0t
LS0KIHBsYXQveGVuL3g4Ni9zZXR1cC5jICAgICAgICAgICB8ICAyICstCiAxMCBmaWxlcyBjaGFu
Z2VkLCA2NiBpbnNlcnRpb25zKCspLCA1NSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9wbGF0
L2NvbW1vbi9pbmNsdWRlL3NlY3Rpb25zLmggYi9wbGF0L2NvbW1vbi9pbmNsdWRlL3NlY3Rpb25z
LmgKaW5kZXggNDJmNDFkMi4uMTcwMWIwMCAxMDA2NDQKLS0tIGEvcGxhdC9jb21tb24vaW5jbHVk
ZS9zZWN0aW9ucy5oCisrKyBiL3BsYXQvY29tbW9uL2luY2x1ZGUvc2VjdGlvbnMuaApAQCAtNjIs
NCArNjIsMTggQEAgZXh0ZXJuIGNoYXIgX19ic3Nfc3RhcnRbXTsKIC8qIF9lbmQ6IGVuZCBvZiBr
ZXJuZWwgaW1hZ2UgKi8KIGV4dGVybiBjaGFyIF9lbmRbXTsKCisjZGVmaW5lIF9fdWtfaW1hZ2Vf
c3ltYm9sKGFkZHIpICAgICgodW5zaWduZWQgbG9uZykoYWRkcikpCisKKyNkZWZpbmUgX19EVEIg
ICAgICAgICAgX191a19pbWFnZV9zeW1ib2woX2R0YikKKyNkZWZpbmUgX19URVhUICAgICAgICAg
X191a19pbWFnZV9zeW1ib2woX3RleHQpCisjZGVmaW5lIF9fRVRFWFQgICAgICAgICAgICAgICAg
X191a19pbWFnZV9zeW1ib2woX2V0ZXh0KQorI2RlZmluZSBfX1JPREFUQSAgICAgICBfX3VrX2lt
YWdlX3N5bWJvbChfcm9kYXRhKQorI2RlZmluZSBfX0VST0RBVEEgICAgICBfX3VrX2ltYWdlX3N5
bWJvbChfZXJvZGF0YSkKKyNkZWZpbmUgX19EQVRBICAgICAgICAgX191a19pbWFnZV9zeW1ib2wo
X2RhdGEpCisjZGVmaW5lIF9fRURBVEEgICAgICAgICAgICAgICAgX191a19pbWFnZV9zeW1ib2wo
X2VkYXRhKQorI2RlZmluZSBfX0NUT1JTICAgICAgICAgICAgICAgIF9fdWtfaW1hZ2Vfc3ltYm9s
KF9jdG9ycykKKyNkZWZpbmUgX19FQ1RPUlMgICAgICAgX191a19pbWFnZV9zeW1ib2woX2VjdG9y
cykKKyNkZWZpbmUgX19CU1NfU1RBUlQgICAgX191a19pbWFnZV9zeW1ib2woX19ic3Nfc3RhcnQp
CisjZGVmaW5lIF9fRU5EICAgICAgICAgIF9fdWtfaW1hZ2Vfc3ltYm9sKF9lbmQpCisKICNlbmRp
ZiAvKiBfX1BMQVRfQ01OX1NFQ1RJT05TX0hfXyAqLwpkaWZmIC0tZ2l0IGEvcGxhdC9rdm0vYXJt
L3NldHVwLmMgYi9wbGF0L2t2bS9hcm0vc2V0dXAuYwppbmRleCAwOTUzMGJiLi4xODYyMTE4IDEw
MDY0NAotLS0gYS9wbGF0L2t2bS9hcm0vc2V0dXAuYworKysgYi9wbGF0L2t2bS9hcm0vc2V0dXAu
YwpAQCAtMTksNiArMTksNyBAQAogICogQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9S
TUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4KICAqLwogI2luY2x1ZGUgPGxpYmZkdC5oPgorI2luY2x1
ZGUgPHNlY3Rpb25zLmg+CiAjaW5jbHVkZSA8a3ZtL2NvbnNvbGUuaD4KICNpbmNsdWRlIDx1ay9h
c3NlcnQuaD4KICNpbmNsdWRlIDxrdm0tYXJtL21tLmg+CkBAIC05NSw4ICs5Niw2IEBAIGVub21l
dGhvZDoKCiBzdGF0aWMgdm9pZCBfaW5pdF9kdGJfbWVtKHZvaWQpCiB7Ci0gICAgICAgZXh0ZXJu
IGNoYXIgX3RleHRbXTsKLSAgICAgICBleHRlcm4gY2hhciBfZW5kW107CiAgICAgICAgaW50IGZk
dF9tZW0sIHByb3BfbGVuID0gMCwgcHJvcF9taW5fbGVuOwogICAgICAgIGludCBuYWRkciwgbnNp
emU7CiAgICAgICAgY29uc3QgdWludDY0X3QgKnJlZ3M7CkBAIC0xNDIsMTEgKzE0MSwxMSBAQCBz
dGF0aWMgdm9pZCBfaW5pdF9kdGJfbWVtKHZvaWQpCgogICAgICAgIG1lbV9iYXNlID0gZmR0NjRf
dG9fY3B1KHJlZ3NbMF0pOwogICAgICAgIG1lbV9zaXplID0gZmR0NjRfdG9fY3B1KHJlZ3NbMV0p
OwotICAgICAgIGlmIChtZW1fYmFzZSA+ICh1aW50NjRfdCkmX3RleHQpCisgICAgICAgaWYgKG1l
bV9iYXNlID4gKHVuc2lnbmVkIGxvbmcpX19URVhUKQogICAgICAgICAgICAgICAgVUtfQ1JBU0go
IkZhdGFsOiBJbWFnZSBvdXRzaWRlIG9mIFJBTVxuIik7CgogICAgICAgIG1heF9hZGRyID0gbWVt
X2Jhc2UgKyBtZW1fc2l6ZTsKLSAgICAgICBfbGlia3ZtcGxhdF9wYWdldGFibGUgPSh2b2lkICop
IEFMSUdOX0RPV04oKHNpemVfdCkmX2VuZCwgX19QQUdFX1NJWkUpOworICAgICAgIF9saWJrdm1w
bGF0X3BhZ2V0YWJsZSA9ICh2b2lkICopIEFMSUdOX0RPV04oKHNpemVfdClfX0VORCwgX19QQUdF
X1NJWkUpOwogICAgICAgIF9saWJrdm1wbGF0X2hlYXBfc3RhcnQgPSBfbGlia3ZtcGxhdF9wYWdl
dGFibGUgKyBQQUdFX1RBQkxFX1NJWkU7CiAgICAgICAgX2xpYmt2bXBsYXRfbWVtX2VuZCA9ICh2
b2lkICopIG1heF9hZGRyOwoKZGlmZiAtLWdpdCBhL3BsYXQva3ZtL21lbW9yeS5jIGIvcGxhdC9r
dm0vbWVtb3J5LmMKaW5kZXggMTFjOTkzZC4uYTdiNGQ1ZSAxMDA2NDQKLS0tIGEvcGxhdC9rdm0v
bWVtb3J5LmMKKysrIGIvcGxhdC9rdm0vbWVtb3J5LmMKQEAgLTE5LDYgKzE5LDcgQEAKICAqIENP
Tk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuCiAg
Ki8KCisjaW5jbHVkZSA8c2VjdGlvbnMuaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNs
dWRlIDx1ay9wbGF0L21lbW9yeS5oPgogI2luY2x1ZGUgPHVrL2Fzc2VydC5oPgpAQCAtMzcsMTYg
KzM4LDE0IEBAIGludCB1a3BsYXRfbWVtcmVnaW9uX2NvdW50KHZvaWQpCgogaW50IHVrcGxhdF9t
ZW1yZWdpb25fZ2V0KGludCBpLCBzdHJ1Y3QgdWtwbGF0X21lbXJlZ2lvbl9kZXNjICptKQogewot
ICAgICAgIGV4dGVybiBjaGFyIF90ZXh0LCBfZXRleHQsIF9kYXRhLCBfZWRhdGEsIF9yb2RhdGEs
IF9lcm9kYXRhLAotICAgICAgICAgICAgICAgICAgIF9jdG9ycywgX2VjdG9ycywgX19ic3Nfc3Rh
cnQsIF9lbmQ7CiAgICAgICAgaW50IHJldDsKCiAgICAgICAgVUtfQVNTRVJUKG0pOwoKICAgICAg
ICBzd2l0Y2ggKGkpIHsKICAgICAgICBjYXNlIDA6IC8qIHRleHQgKi8KLSAgICAgICAgICAgICAg
IG0tPmJhc2UgID0gJl90ZXh0OwotICAgICAgICAgICAgICAgbS0+bGVuICAgPSAoc2l6ZV90KSAm
X2V0ZXh0IC0gKHNpemVfdCkgJl90ZXh0OworICAgICAgICAgICAgICAgbS0+YmFzZSAgPSAodm9p
ZCAqKSBfX1RFWFQ7CisgICAgICAgICAgICAgICBtLT5sZW4gICA9IChzaXplX3QpIF9fRVRFWFQg
LSAoc2l6ZV90KSBfX1RFWFQ7CiAgICAgICAgICAgICAgICBtLT5mbGFncyA9IChVS1BMQVRfTUVN
UkZfUkVTRVJWRUQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVUtQTEFUX01FTVJGX1JF
QURBQkxFKTsKICNpZiBDT05GSUdfVUtQTEFUX01FTVJOQU1FCkBAIC01NSw4ICs1NCw4IEBAIGlu
dCB1a3BsYXRfbWVtcmVnaW9uX2dldChpbnQgaSwgc3RydWN0IHVrcGxhdF9tZW1yZWdpb25fZGVz
YyAqbSkKICAgICAgICAgICAgICAgIHJldCA9IDA7CiAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICBjYXNlIDE6IC8qIHJvZGF0YSAqLwotICAgICAgICAgICAgICAgbS0+YmFzZSAgPSAmX3Jv
ZGF0YTsKLSAgICAgICAgICAgICAgIG0tPmxlbiAgID0gKHNpemVfdCkgJl9lcm9kYXRhIC0gKHNp
emVfdCkgJl9yb2RhdGE7CisgICAgICAgICAgICAgICBtLT5iYXNlICA9ICh2b2lkICopIF9fUk9E
QVRBOworICAgICAgICAgICAgICAgbS0+bGVuICAgPSAoc2l6ZV90KSBfX0VST0RBVEEgLSAoc2l6
ZV90KSBfX1JPREFUQTsKICAgICAgICAgICAgICAgIG0tPmZsYWdzID0gKFVLUExBVF9NRU1SRl9S
RVNFUlZFRAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBVS1BMQVRfTUVNUkZfUkVBREFC
TEUpOwogI2lmIENPTkZJR19VS1BMQVRfTUVNUk5BTUUKQEAgLTY1LDggKzY0LDggQEAgaW50IHVr
cGxhdF9tZW1yZWdpb25fZ2V0KGludCBpLCBzdHJ1Y3QgdWtwbGF0X21lbXJlZ2lvbl9kZXNjICpt
KQogICAgICAgICAgICAgICAgcmV0ID0gMDsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
IGNhc2UgMjogLyogY3RvcnMgKi8KLSAgICAgICAgICAgICAgIG0tPmJhc2UgID0gJl9jdG9yczsK
LSAgICAgICAgICAgICAgIG0tPmxlbiAgID0gKHNpemVfdCkgJl9lY3RvcnMgLSAoc2l6ZV90KSAm
X2N0b3JzOworICAgICAgICAgICAgICAgbS0+YmFzZSAgPSAodm9pZCAqKSBfX0NUT1JTOworICAg
ICAgICAgICAgICAgbS0+bGVuICAgPSAoc2l6ZV90KSBfX0VDVE9SUyAtIChzaXplX3QpIF9fQ1RP
UlM7CiAgICAgICAgICAgICAgICBtLT5mbGFncyA9IChVS1BMQVRfTUVNUkZfUkVTRVJWRUQKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgVUtQTEFUX01FTVJGX1JFQURBQkxFKTsKICNpZiBD
T05GSUdfVUtQTEFUX01FTVJOQU1FCkBAIC03NSw4ICs3NCw4IEBAIGludCB1a3BsYXRfbWVtcmVn
aW9uX2dldChpbnQgaSwgc3RydWN0IHVrcGxhdF9tZW1yZWdpb25fZGVzYyAqbSkKICAgICAgICAg
ICAgICAgIHJldCA9IDA7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDM6IC8q
IGRhdGEgKi8KLSAgICAgICAgICAgICAgIG0tPmJhc2UgID0gJl9kYXRhOwotICAgICAgICAgICAg
ICAgbS0+bGVuICAgPSAoc2l6ZV90KSAmX2VkYXRhIC0gKHNpemVfdCkgJl9kYXRhOworICAgICAg
ICAgICAgICAgbS0+YmFzZSAgPSAodm9pZCAqKSBfX0RBVEE7CisgICAgICAgICAgICAgICBtLT5s
ZW4gICA9IChzaXplX3QpIF9fRURBVEEgLSAoc2l6ZV90KSBfX0RBVEE7CiAgICAgICAgICAgICAg
ICBtLT5mbGFncyA9IChVS1BMQVRfTUVNUkZfUkVTRVJWRUQKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgVUtQTEFUX01FTVJGX1JFQURBQkxFCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8IFVLUExBVF9NRU1SRl9XUklUQUJMRSk7CkBAIC04Niw4ICs4NSw4IEBAIGludCB1a3BsYXRf
bWVtcmVnaW9uX2dldChpbnQgaSwgc3RydWN0IHVrcGxhdF9tZW1yZWdpb25fZGVzYyAqbSkKICAg
ICAgICAgICAgICAgIHJldCA9IDA7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNl
IDQ6IC8qIGJzcyAqLwotICAgICAgICAgICAgICAgbS0+YmFzZSAgPSAmX19ic3Nfc3RhcnQ7Ci0g
ICAgICAgICAgICAgICBtLT5sZW4gICA9IChzaXplX3QpICZfZW5kIC0gKHNpemVfdCkgJl9fYnNz
X3N0YXJ0OworICAgICAgICAgICAgICAgbS0+YmFzZSAgPSAodm9pZCAqKSBfX0JTU19TVEFSVDsK
KyAgICAgICAgICAgICAgIG0tPmxlbiAgID0gKHNpemVfdCkgX19FTkQgLSAoc2l6ZV90KSBfX0JT
U19TVEFSVDsKICAgICAgICAgICAgICAgIG0tPmZsYWdzID0gKFVLUExBVF9NRU1SRl9SRVNFUlZF
RAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBVS1BMQVRfTUVNUkZfUkVBREFCTEUKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgVUtQTEFUX01FTVJGX1dSSVRBQkxFKTsKZGlmZiAt
LWdpdCBhL3BsYXQva3ZtL3g4Ni9zZXR1cC5jIGIvcGxhdC9rdm0veDg2L3NldHVwLmMKaW5kZXgg
YzE3YTdkZC4uNGNjZDk0NyAxMDA2NDQKLS0tIGEvcGxhdC9rdm0veDg2L3NldHVwLmMKKysrIGIv
cGxhdC9rdm0veDg2L3NldHVwLmMKQEAgLTI3LDYgKzI3LDcgQEAKICAqLwoKICNpbmNsdWRlIDxz
dHJpbmcuaD4KKyNpbmNsdWRlIDxzZWN0aW9ucy5oPgogI2luY2x1ZGUgPHg4Ni9jcHUuaD4KICNp
bmNsdWRlIDx4ODYvdHJhcHMuaD4KICNpbmNsdWRlIDxrdm0vY29uc29sZS5oPgpAQCAtNzksNyAr
ODAsNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX21iX2dldF9jbWRsaW5lKHN0cnVjdCBtdWx0aWJv
b3RfaW5mbyAqbWksIGNoYXIgKmNtZGxpbmUsCgogc3RhdGljIGlubGluZSB2b2lkIF9tYl9pbml0
X21lbShzdHJ1Y3QgbXVsdGlib290X2luZm8gKm1pKQogewotICAgICAgIGV4dGVybiBjaGFyIF9l
bmQ7CiAgICAgICAgbXVsdGlib290X21lbW9yeV9tYXBfdCAqbTsKICAgICAgICBzaXplX3Qgb2Zm
c2V0LCBtYXhfYWRkcjsKCkBAIC0xMDMsOSArMTAzLDkgQEAgc3RhdGljIGlubGluZSB2b2lkIF9t
Yl9pbml0X21lbShzdHJ1Y3QgbXVsdGlib290X2luZm8gKm1pKQogICAgICAgIG1heF9hZGRyID0g
bS0+YWRkciArIG0tPmxlbjsKICAgICAgICBpZiAobWF4X2FkZHIgPiBQTEFURk9STV9NQVhfTUVN
X0FERFIpCiAgICAgICAgICAgICAgICBtYXhfYWRkciA9IFBMQVRGT1JNX01BWF9NRU1fQUREUjsK
LSAgICAgICBVS19BU1NFUlQoKHNpemVfdCkmX2VuZCA8PSBtYXhfYWRkcik7CisgICAgICAgVUtf
QVNTRVJUKChzaXplX3QpX19FTkQgPD0gbWF4X2FkZHIpOwoKLSAgICAgICBfbGlia3ZtcGxhdF9o
ZWFwX3N0YXJ0ID0gKHZvaWQgKikgQUxJR05fVVAoKHNpemVfdCkmX2VuZCwgX19QQUdFX1NJWkUp
OworICAgICAgIF9saWJrdm1wbGF0X2hlYXBfc3RhcnQgPSAodm9pZCAqKSBBTElHTl9VUCgoc2l6
ZV90KV9fRU5ELCBfX1BBR0VfU0laRSk7CiAgICAgICAgX2xpYmt2bXBsYXRfbWVtX2VuZCAgICA9
ICh2b2lkICopIG1heF9hZGRyOwogICAgICAgIF9saWJrdm1wbGF0X3N0YWNrX3RvcCAgPSAodm9p
ZCAqKSAobWF4X2FkZHIgLSBfX1NUQUNLX1NJWkUpOwogfQpkaWZmIC0tZ2l0IGEvcGxhdC94ZW4v
YXJtL3NldHVwLmMgYi9wbGF0L3hlbi9hcm0vc2V0dXAuYwppbmRleCBiOTFjMGJkLi41NmYxNTY0
IDEwMDY0NAotLS0gYS9wbGF0L3hlbi9hcm0vc2V0dXAuYworKysgYi9wbGF0L3hlbi9hcm0vc2V0
dXAuYwpAQCAtMjUsNyArMjUsNyBAQAogLyogUG9ydGVkIGZyb20gTWluaS1PUyAqLwoKICNpbmNs
dWRlIDxzdHJpbmcuaD4KLQorI2luY2x1ZGUgPHNlY3Rpb25zLmg+CiAjaW5jbHVkZSA8eGVuLWFy
bS9vcy5oPgogI2luY2x1ZGUgPHhlbi1hcm0vbW0uaD4KICNpbmNsdWRlIDx4ZW4veGVuLmg+CkBA
IC0xNDIsMTAgKzE0MiwxMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX2R0Yl9pbml0X21lbSh1aW50
MzJfdCBwaHlzaWNhbF9vZmZzZXQpCiAgICAgICAgaWYgKHJlZ3MgPT0gTlVMTCAmJiBwcm9wX2xl
biA8IDE2KQogICAgICAgICAgICAgICAgVUtfQ1JBU0goIkJhZCAncmVnJyBwcm9wZXJ0eTogJXAg
JWRcbiIsIHJlZ3MsIHByb3BfbGVuKTsKCi0gICAgICAgZW5kID0gKHVpbnRwdHJfdCkgJl9lbmQ7
CisgICAgICAgZW5kID0gKHVpbnRwdHJfdCkgX19FTkQ7CiAgICAgICAgbWVtX2Jhc2UgPSBmZHQ2
NF90b19jcHUocmVnc1swXSk7CiAgICAgICAgbWVtX3NpemUgPSBmZHQ2NF90b19jcHUocmVnc1sx
XSk7Ci0gICAgICAgaWYgKHRvX3ZpcnQobWVtX2Jhc2UpID4gKHZvaWQgKikmX3RleHQpCisgICAg
ICAgaWYgKHRvX3ZpcnQobWVtX2Jhc2UpID4gKHZvaWQgKilfX1RFWFQpCiAgICAgICAgICAgICAg
ICBVS19DUkFTSCgiRmF0YWw6IEltYWdlIG91dHNpZGUgb2YgUkFNXG4iKTsKCiAgICAgICAgc3Rh
cnRfcGZuX3AgPSBQRk5fVVAodG9fcGh5cyhlbmQpKTsKZGlmZiAtLWdpdCBhL3BsYXQveGVuL2lu
Y2x1ZGUveGVuLWFybS9tbS5oIGIvcGxhdC94ZW4vaW5jbHVkZS94ZW4tYXJtL21tLmgKaW5kZXgg
OWI4ZWE4NS4uMGY1YzhmNSAxMDA2NDQKLS0tIGEvcGxhdC94ZW4vaW5jbHVkZS94ZW4tYXJtL21t
LmgKKysrIGIvcGxhdC94ZW4vaW5jbHVkZS94ZW4tYXJtL21tLmgKQEAgLTI4LDExICsyOCwxMCBA
QAogI2RlZmluZSBfQVJDSF9NTV9IXwoKICNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxz
ZWN0aW9ucy5oPgogI2luY2x1ZGUgPHVrL2FyY2gvbGltaXRzLmg+CgogdHlwZWRlZiB1aW50NjRf
dCBwYWRkcl90OwotCi1leHRlcm4gY2hhciBfdGV4dCwgX2V0ZXh0LCBfZGF0YSwgX2VkYXRhLCBf
cm9kYXRhLCBfZXJvZGF0YSwgX2VuZCwgX19ic3Nfc3RhcnQ7CiBleHRlcm4gaW50IF9ib290X3N0
YWNrW107CiBleHRlcm4gaW50IF9ib290X3N0YWNrX2VuZFtdOwogLyogQWRkIHRoaXMgdG8gYSB2
aXJ0dWFsIGFkZHJlc3MgdG8gZ2V0IHRoZSBwaHlzaWNhbCBhZGRyZXNzICh3cmFwcyBhdCA0R0Ip
ICovCmRpZmYgLS1naXQgYS9wbGF0L3hlbi9pbmNsdWRlL3hlbi14ODYvbW0uaCBiL3BsYXQveGVu
L2luY2x1ZGUveGVuLXg4Ni9tbS5oCmluZGV4IDBlNTk3OTYuLjMyZDg3NmEgMTAwNjQ0Ci0tLSBh
L3BsYXQveGVuL2luY2x1ZGUveGVuLXg4Ni9tbS5oCisrKyBiL3BsYXQveGVuL2luY2x1ZGUveGVu
LXg4Ni9tbS5oCkBAIC05LDIyICs5LDIzIEBACiAgKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2Rp
ZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKICAqIHNl
bGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20g
dGhlIFNvZnR3YXJlIGlzCiAgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zOgotICoKKyAqCiAgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGlj
ZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgogICogYWxs
IGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0gKgotICog
VEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5Z
IEtJTkQsIEVYUFJFU1MgT1IKLSAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQg
VE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAotICogRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFCi0gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENM
QUlNLCBEQU1BR0VTIE9SIE9USEVSCi0gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9O
IE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwotICogRlJPTSwgT1VUIE9G
IE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgor
ICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZ
IE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBM
SU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRQorICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9S
IEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFO
IEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00s
IE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1Ig
T1RIRVIKICAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KICAqLwoKICNpZm5kZWYgX0FSQ0hf
TU1fSF8KICNkZWZpbmUgX0FSQ0hfTU1fSF8KCisjaW5jbHVkZSA8c2VjdGlvbnMuaD4KICNpZm5k
ZWYgX19BU1NFTUJMWV9fCiAjaW5jbHVkZSA8eGVuL3hlbi5oPgogI2lmIGRlZmluZWQoX19pMzg2
X18pCkBAIC0yMjEsNyArMjIyLDcgQEAgZXh0ZXJuIHVuc2lnbmVkIGxvbmcgKnBoeXNfdG9fbWFj
aGluZV9tYXBwaW5nOwogI2Vsc2UKIGV4dGVybiBwZ2VudHJ5X3QgcGFnZV90YWJsZV9iYXNlW107
CiAjZW5kaWYKLWV4dGVybiBjaGFyIF90ZXh0LCBfZXRleHQsIF9lcm9kYXRhLCBfZWRhdGEsIF9l
bmQ7CisKIGV4dGVybiB1bnNpZ25lZCBsb25nIG1mbl96ZXJvOwogc3RhdGljIF9faW5saW5lX18g
bWFkZHJfdCBwaHlzX3RvX21hY2hpbmUocGFkZHJfdCBwaHlzKQogewpAQCAtMjM3LDcgKzIzOCw3
IEBAIHN0YXRpYyBfX2lubGluZV9fIHBhZGRyX3QgbWFjaGluZV90b19waHlzKG1hZGRyX3QgbWFj
aGluZSkKICAgICAgICByZXR1cm4gcGh5czsKIH0KCi0jZGVmaW5lIFZJUlRfU1RBUlQgICAgICAg
ICAgICAgICAgICgodW5zaWduZWQgbG9uZykmX3RleHQpCisjZGVmaW5lIFZJUlRfU1RBUlQgICAg
ICAgICAgICAgICAgICgodW5zaWduZWQgbG9uZykoX19URVhUKSkKCiAjZGVmaW5lIHRvX3BoeXMo
eCkgICAgICAgICAgICAgICAgICgodW5zaWduZWQgbG9uZykoeCktVklSVF9TVEFSVCkKICNkZWZp
bmUgdG9fdmlydCh4KSAgICAgICAgICAgICAgICAgKCh2b2lkICopKCh1bnNpZ25lZCBsb25nKSh4
KStWSVJUX1NUQVJUKSkKZGlmZiAtLWdpdCBhL3BsYXQveGVuL21lbW9yeS5jIGIvcGxhdC94ZW4v
bWVtb3J5LmMKaW5kZXggMWY1NTg4Ny4uYjYzZjExYiAxMDA2NDQKLS0tIGEvcGxhdC94ZW4vbWVt
b3J5LmMKKysrIGIvcGxhdC94ZW4vbWVtb3J5LmMKQEAgLTM0LDYgKzM0LDcgQEAKICAqLwoKICNp
bmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzZWN0aW9ucy5oPgoKICNpbmNsdWRlIDxjb21t
b24vZ250dGFiLmg+CiAjaWYgKGRlZmluZWQgX19YODZfMzJfXykgfHwgKGRlZmluZWQgX19YODZf
NjRfXykKQEAgLTUxLDE0ICs1MiwxMyBAQCBpbnQgdWtwbGF0X21lbXJlZ2lvbl9jb3VudCh2b2lk
KQoKIGludCB1a3BsYXRfbWVtcmVnaW9uX2dldChpbnQgaSwgc3RydWN0IHVrcGxhdF9tZW1yZWdp
b25fZGVzYyAqbSkKIHsKLSAgICAgICBleHRlcm4gY2hhciBfdGV4dCwgX2V0ZXh0LCBfZGF0YSwg
X2VkYXRhLCBfcm9kYXRhLCBfZXJvZGF0YSwgX2N0b3JzLCBfZWN0b3JzLCBfZW5kLCBfX2Jzc19z
dGFydDsKCiAgICAgICAgVUtfQVNTRVJUKG0pOwoKICAgICAgICBzd2l0Y2goaSkgewogICAgICAg
IGNhc2UgMDogLyogdGV4dCAqLwotICAgICAgICAgICAgICAgbS0+YmFzZSAgICAgPSAmX3RleHQ7
Ci0gICAgICAgICAgICAgICBtLT5sZW4gICA9IChzaXplX3QpICZfZXRleHQgLSAoc2l6ZV90KSAm
X3RleHQ7CisgICAgICAgICAgICAgICBtLT5iYXNlICA9ICh2b2lkICopIF9fVEVYVDsKKyAgICAg
ICAgICAgICAgIG0tPmxlbiAgID0gKHNpemVfdCkgX19FVEVYVCAtIChzaXplX3QpIF9fVEVYVDsK
ICAgICAgICAgICAgICAgIG0tPmZsYWdzID0gKFVLUExBVF9NRU1SRl9SRVNFUlZFRAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCBVS1BMQVRfTUVNUkZfUkVBREFCTEUpOwogI2lmIENPTkZJ
R19VS1BMQVRfTUVNUk5BTUUKQEAgLTY2LDggKzY2LDggQEAgaW50IHVrcGxhdF9tZW1yZWdpb25f
Z2V0KGludCBpLCBzdHJ1Y3QgdWtwbGF0X21lbXJlZ2lvbl9kZXNjICptKQogI2VuZGlmCiAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDE6IC8qIHJvIGRhdGEgKi8KLSAgICAgICAg
ICAgICAgIG0tPmJhc2UgID0gJl9yb2RhdGE7Ci0gICAgICAgICAgICAgICBtLT5sZW4gICA9IChz
aXplX3QpICZfZXJvZGF0YSAtIChzaXplX3QpICZfcm9kYXRhOworICAgICAgICAgICAgICAgbS0+
YmFzZSAgPSAodm9pZCAqKSBfX1JPREFUQTsKKyAgICAgICAgICAgICAgIG0tPmxlbiAgID0gKHNp
emVfdCkgX19FUk9EQVRBIC0gKHNpemVfdCkgX19ST0RBVEE7CiAgICAgICAgICAgICAgICBtLT5m
bGFncyA9IChVS1BMQVRfTUVNUkZfUkVTRVJWRUQKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgVUtQTEFUX01FTVJGX1JFQURBQkxFKTsKICNpZiBDT05GSUdfVUtQTEFUX01FTVJOQU1F
CkBAIC03NSw4ICs3NSw4IEBAIGludCB1a3BsYXRfbWVtcmVnaW9uX2dldChpbnQgaSwgc3RydWN0
IHVrcGxhdF9tZW1yZWdpb25fZGVzYyAqbSkKICNlbmRpZgogICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgY2FzZSAyOiAvKiBjdG9ycyAqLwotICAgICAgICAgICAgICAgbS0+YmFzZSAgPSAm
X2N0b3JzOwotICAgICAgICAgICAgICAgbS0+bGVuICAgPSAoc2l6ZV90KSAmX2VjdG9ycyAtIChz
aXplX3QpICZfY3RvcnM7CisgICAgICAgICAgICAgICBtLT5iYXNlICA9ICh2b2lkICopIF9fQ1RP
UlM7CisgICAgICAgICAgICAgICBtLT5sZW4gICA9IChzaXplX3QpIF9fRUNUT1JTIC0gKHNpemVf
dCkgX19DVE9SUzsKICAgICAgICAgICAgICAgIG0tPmZsYWdzID0gKFVLUExBVF9NRU1SRl9SRVNF
UlZFRAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBVS1BMQVRfTUVNUkZfUkVBREFCTEUp
OwogI2lmIENPTkZJR19VS1BMQVRfTUVNUk5BTUUKQEAgLTg0LDggKzg0LDggQEAgaW50IHVrcGxh
dF9tZW1yZWdpb25fZ2V0KGludCBpLCBzdHJ1Y3QgdWtwbGF0X21lbXJlZ2lvbl9kZXNjICptKQog
I2VuZGlmCiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDM6IC8qIGRhdGEgKi8K
LSAgICAgICAgICAgICAgIG0tPmJhc2UgID0gJl9kYXRhOwotICAgICAgICAgICAgICAgbS0+bGVu
ICAgPSAoc2l6ZV90KSAmX2VkYXRhIC0gKHNpemVfdCkgJl9kYXRhOworICAgICAgICAgICAgICAg
bS0+YmFzZSAgPSAodm9pZCAqKSBfX0RBVEE7CisgICAgICAgICAgICAgICBtLT5sZW4gICA9IChz
aXplX3QpIF9fRURBVEEgLSAoc2l6ZV90KSBfX0RBVEE7CiAgICAgICAgICAgICAgICBtLT5mbGFn
cyA9IChVS1BMQVRfTUVNUkZfUkVTRVJWRUQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
VUtQTEFUX01FTVJGX1JFQURBQkxFCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFVLUExB
VF9NRU1SRl9XUklUQUJMRSk7CkBAIC05NCw4ICs5NCw4IEBAIGludCB1a3BsYXRfbWVtcmVnaW9u
X2dldChpbnQgaSwgc3RydWN0IHVrcGxhdF9tZW1yZWdpb25fZGVzYyAqbSkKICNlbmRpZgogICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSA0OiAvKiBic3MgKi8KLSAgICAgICAgICAg
ICAgIG0tPmJhc2UgID0gJl9fYnNzX3N0YXJ0OwotICAgICAgICAgICAgICAgbS0+bGVuICAgPSAo
c2l6ZV90KSAmX2VuZCAtIChzaXplX3QpICZfX2Jzc19zdGFydDsKKyAgICAgICAgICAgICAgIG0t
PmJhc2UgID0gKHZvaWQgKikgX19CU1NfU1RBUlQ7CisgICAgICAgICAgICAgICBtLT5sZW4gICA9
IChzaXplX3QpIF9fRU5EIC0gKHNpemVfdCkgX19CU1NfU1RBUlQ7CiAgICAgICAgICAgICAgICBt
LT5mbGFncyA9IChVS1BMQVRfTUVNUkZfUkVTRVJWRUQKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgVUtQTEFUX01FTVJGX1JFQURBQkxFCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
IFVLUExBVF9NRU1SRl9XUklUQUJMRSk7CmRpZmYgLS1naXQgYS9wbGF0L3hlbi94ODYvbW0uYyBi
L3BsYXQveGVuL3g4Ni9tbS5jCmluZGV4IGI4OTM4NGYuLjJmMjM4NTUgMTAwNjQ0Ci0tLSBhL3Bs
YXQveGVuL3g4Ni9tbS5jCisrKyBiL3BsYXQveGVuL3g4Ni9tbS5jCkBAIC0zNiw2ICszNiw3IEBA
CiAgKi8KCiAjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c2VjdGlvbnMuaD4KICNpbmNs
dWRlIDxlcnJuby5oPgogI2luY2x1ZGUgPHVrL2FsbG9jLmg+CiAjaW5jbHVkZSA8dWsvcGxhdC9j
b25maWcuaD4KQEAgLTE0MiwxMiArMTQzLDEwIEBAIHZvaWQgX2luaXRfbWVtX2J1aWxkX3BhZ2V0
YWJsZSh1bnNpZ25lZCBsb25nICpzdGFydF9wZm4sIHVuc2lnbmVkIGxvbmcgKm1heF9wZm4pCiAg
ICAgewogICAgICAgICAgICB1a19wcl93YXJuKCJUcnlpbmcgdG8gdXNlIFhlbiB2aXJ0dWFsIHNw
YWNlLiAiCiAgICAgICAgICAgICAgICAgICAgICAgIlRydW5jYXRpbmcgbWVtb3J5IGZyb20gJWx1
TUIgdG8gIiwKLSAgICAgICAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIGxvbmcpcGZuX3RvX3Zp
cnQoKm1heF9wZm4pIC0KLSAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpJl90
ZXh0KT4+MjApOworICAgICAgICAgICAgICAgICAgICAgICgodW5zaWduZWQgbG9uZylwZm5fdG9f
dmlydCgqbWF4X3BmbikgLSBfX1RFWFQpPj4yMCk7CiAgICAgICAgICAgICptYXhfcGZuID0gdmly
dF90b19wZm4oSFlQRVJWSVNPUl9WSVJUX1NUQVJUIC0gUEFHRV9TSVpFKTsKICAgICAgICAgICAg
dWtfcHJfd2FybigiJWx1TUJcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBs
b25nKXBmbl90b192aXJ0KCptYXhfcGZuKSAtCi0gICAgICAgICAgICAgICAgICAgICAgICh1bnNp
Z25lZCBsb25nKSZfdGV4dCk+PjIwKTsKKyAgICAgICAgICAgICAgICAgICAgICAoKHVuc2lnbmVk
IGxvbmcpcGZuX3RvX3ZpcnQoKm1heF9wZm4pIC0gX19URVhUKT4+MjApOwogICAgIH0KICNlbHNl
CiAgICAgLyogUm91bmQgdXAgdG8gbmV4dCAyTUIgYm91bmRhcnkgYXMgd2UgYXJlIHVzaW5nIDJN
QiBwYWdlcyBvbiBIVk1saXRlLiAqLwpAQCAtNjcwLDE4ICs2NjksMTggQEAgdm9pZCBfaW5pdF9t
ZW1fY2xlYXJfYm9vdHN0cmFwKHZvaWQpCiAgICAgcGdlbnRyeV90ICpwZ3Q7CiAjZW5kaWYKCi0g
ICAgdWtfcHJfZGVidWcoIkNsZWFyIGJvb3RzdHJhcHBpbmcgbWVtb3J5OiAlcFxuIiwgJl90ZXh0
KTsKKyAgICAgICB1a19wcl9kZWJ1ZygiQ2xlYXIgYm9vdHN0cmFwcGluZyBtZW1vcnk6ICVwXG4i
LCAodm9pZCAqKV9fVEVYVCk7CgogICAgIC8qIFVzZSBmaXJzdCBwYWdlIGFzIHRoZSBDb1cgemVy
byBwYWdlICovCi0gICAgbWVtc2V0KCZfdGV4dCwgMCwgUEFHRV9TSVpFKTsKLSAgICBtZm5femVy
byA9IHZpcnRfdG9fbWZuKCh1bnNpZ25lZCBsb25nKSAmX3RleHQpOworICAgICAgIG1lbXNldCgo
dm9pZCAqKV9fVEVYVCwgMCwgUEFHRV9TSVpFKTsKKyAgICAgICBtZm5femVybyA9IHZpcnRfdG9f
bWZuKF9fVEVYVCk7CiAjaWZkZWYgQ09ORklHX1BBUkFWSVJUCiAgICAgaWYgKCAocmMgPSBIWVBF
UlZJU09SX3VwZGF0ZV92YV9tYXBwaW5nKDAsIG51bGxwdGUsIFVWTUZfSU5WTFBHKSkgKQogICAg
ICAgICAgICB1a19wcl9lcnIoIlVuYWJsZSB0byB1bm1hcCBOVUxMIHBhZ2UuIHJjPSVkXG4iLCBy
Yyk7CiAjZWxzZQotICAgIHBndCA9IGdldF9wZ3QoKHVuc2lnbmVkIGxvbmcpJl90ZXh0KTsKKyAg
ICAgICBwZ3QgPSBnZXRfcGd0KF9fVEVYVCk7CiAgICAgKnBndCA9IDA7Ci0gICAgaW52bHBnKCh1
bnNpZ25lZCBsb25nKSZfdGV4dCk7CisgICAgICAgaW52bHBnKF9fVEVYVCk7CiAjZW5kaWYKIH0K
CmRpZmYgLS1naXQgYS9wbGF0L3hlbi94ODYvc2V0dXAuYyBiL3BsYXQveGVuL3g4Ni9zZXR1cC5j
CmluZGV4IDNjNTYzMWQuLjE0YjJjMjYgMTAwNjQ0Ci0tLSBhL3BsYXQveGVuL3g4Ni9zZXR1cC5j
CisrKyBiL3BsYXQveGVuL3g4Ni9zZXR1cC5jCkBAIC0xNDEsNyArMTQxLDcgQEAgc3RhdGljIGlu
bGluZSB2b2lkIF9pbml0X21lbSh2b2lkKQoKICAgICAgICBfaW5pdF9tZW1fYnVpbGRfcGFnZXRh
YmxlKCZzdGFydF9wZm4sICZtYXhfcGZuKTsKICAgICAgICBfaW5pdF9tZW1fY2xlYXJfYm9vdHN0
cmFwKCk7Ci0gICAgICAgX2luaXRfbWVtX3NldF9yZWFkb25seSgmX3RleHQsICZfZXJvZGF0YSk7
CisgICAgICAgX2luaXRfbWVtX3NldF9yZWFkb25seSgodm9pZCAqKV9fVEVYVCwgKHZvaWQgKilf
X0VST0RBVEEpOwoKICAgICAgICAvKiBGaWxsIG91dCBtcmQgYXJyYXkgKi8KICAgICAgICAvKiBo
ZWFwICovCi0tCjIuMTcuMQoKSU1QT1JUQU5UIE5PVElDRTogVGhlIGNvbnRlbnRzIG9mIHRoaXMg
ZW1haWwgYW5kIGFueSBhdHRhY2htZW50cyBhcmUgY29uZmlkZW50aWFsIGFuZCBtYXkgYWxzbyBi
ZSBwcml2aWxlZ2VkLiBJZiB5b3UgYXJlIG5vdCB0aGUgaW50ZW5kZWQgcmVjaXBpZW50LCBwbGVh
c2Ugbm90aWZ5IHRoZSBzZW5kZXIgaW1tZWRpYXRlbHkgYW5kIGRvIG5vdCBkaXNjbG9zZSB0aGUg
Y29udGVudHMgdG8gYW55IG90aGVyIHBlcnNvbiwgdXNlIGl0IGZvciBhbnkgcHVycG9zZSwgb3Ig
c3RvcmUgb3IgY29weSB0aGUgaW5mb3JtYXRpb24gaW4gYW55IG1lZGl1bS4gVGhhbmsgeW91LgoK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRl
dmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Fri Feb 22 06:22:47 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 22 Feb 2019 06:22:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gx4EQ-0001Yc-UY; Fri, 22 Feb 2019 06:22:46 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=WrH0=Q5=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1gx4EP-0001Xn-5U
 for minios-devel@lists.xenproject.org; Fri, 22 Feb 2019 06:22:45 +0000
X-Inumbo-ID: 42afebce-366a-11e9-bc90-bc764e045a96
Received: from EUR04-VI1-obe.outbound.protection.outlook.com (unknown
 [40.107.8.70]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 42afebce-366a-11e9-bc90-bc764e045a96;
 Fri, 22 Feb 2019 06:22:43 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; 
 s=selector1-arm-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=Ap92cESgYejUmaGQlUdw5/pUz60+TfINiLFQIU/b35o=;
 b=Mzs2lMq1DGt0PZqUzVv9v+RsuB2M4caB0i0g7EdaRAcEB/FClOMr6Z3adf0QgVBjgTf0Gh4iu9Vil4t+ysFhHj6LQsyThXEC92vmNzg1ojCoHzedVlKJeiaVjU3tUcLBycSWXbN0YhLuUywSLMzAL1IZZzAT441KtMaOr+k23bA=
Received: from VI1PR08CA0210.eurprd08.prod.outlook.com (2603:10a6:802:15::19)
 by VI1PR0802MB2544.eurprd08.prod.outlook.com (2603:10a6:800:b0::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1643.16; Fri, 22 Feb
 2019 06:22:26 +0000
Received: from DB5EUR03FT056.eop-EUR03.prod.protection.outlook.com
 (2a01:111:f400:7e0a::207) by VI1PR08CA0210.outlook.office365.com
 (2603:10a6:802:15::19) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.1643.16 via Frontend
 Transport; Fri, 22 Feb 2019 06:22:26 +0000
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 40.67.248.234 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.67.248.234; helo=nebula.arm.com;
Received: from nebula.arm.com (40.67.248.234) by
 DB5EUR03FT056.mail.protection.outlook.com (10.152.21.124) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id
 15.20.1643.11 via Frontend Transport; Fri, 22 Feb 2019 06:22:26 +0000
Received: from AZ-NEU-EX03.Arm.com (10.251.24.31) by AZ-NEU-EX03.Arm.com
 (10.251.24.31) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1415.2; Fri, 22 Feb
 2019 06:22:14 +0000
Received: from localhost.localdomain (10.169.40.37) by mail.arm.com
 (10.251.24.31) with Microsoft SMTP Server id 15.1.1415.2 via Frontend
 Transport; Fri, 22 Feb 2019 06:22:11 +0000
From: Jia He <justin.he@arm.com>
To: <minios-devel@lists.xenproject.org>, Simon Kuenzer
 <simon.kuenzer@neclab.eu>, <Sharan.Santhanam@neclab.eu>
Date: Fri, 22 Feb 2019 14:21:39 +0800
Message-ID: <20190222062200.26602-3-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190222062200.26602-1-justin.he@arm.com>
References: <20190222062200.26602-1-justin.he@arm.com>
MIME-Version: 1.0
X-EOPAttributedMessage: 0
X-MS-Office365-Filtering-HT: Tenant
X-Forefront-Antispam-Report: CIP:40.67.248.234; IPV:NLI; CTRY:US; EFV:NLI;
 SFV:NSPM;
 SFS:(10009020)(376002)(396003)(39860400002)(346002)(136003)(2980300002)(40434004)(189003)(199004)(478600001)(11346002)(126002)(97736004)(486006)(336012)(2616005)(50226002)(5024004)(14444005)(476003)(86362001)(106002)(72206003)(1076003)(54906003)(426003)(316002)(8936002)(5660300002)(4326008)(356004)(6666004)(446003)(49486002)(110136005)(48376002)(50466002)(47776003)(53936002)(186003)(2906002)(51416003)(6346003)(68736007)(81156014)(81166006)(8746002)(77096007)(26005)(76176011)(8676002)(106466001)(36756003)(305945005);
 DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR0802MB2544; H:nebula.arm.com; FPR:;
 SPF:Pass; LANG:en; PTR:InfoDomainNonexistent; MX:1; A:1; 
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id: 535ca28c-7169-4f5b-f6a1-08d6988e1d1f
X-Microsoft-Antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(8989299)(5600110)(711020)(4605104)(4608103)(4709054)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060);
 SRVR:VI1PR0802MB2544; 
X-MS-TrafficTypeDiagnostic: VI1PR0802MB2544:
X-Microsoft-Exchange-Diagnostics: 1; VI1PR0802MB2544;
 20:Ds6IBSE1DsK45vbRLrEntPortllVLR8nm4WQBjXd7EYrYJBBPAvNqVuy1SpKMTOxc4NLmiwYKu2zRpHUKDoFExEVypH24p7VCDcYnOo6phWeObu2vX4YceIrYRLre/LT0IUAoilND2gG22eTTNhplUhqijgO/MsQGEDIdcIAcvWpWsKN7m7qho5aI/1RX6YrGDsVWrZ6CIoYHaEjjlo2x4Cumj1G8ONdL5ACwq+FNc67tfFgWN7gibjPLWcyVJMNvJZCmMuQQ60UQY2fgJha1qGHOg/qsr+5e22c6GLAAxl+XK3a7sSTEgeXmlyP5u98+/P99O52TcwQONrmEXOmO06Ami99dieiNFuRsfvoEKsoQCd6qWWJXvygmwuJu+QEa13YezZWaiuJ6QG7n7YfrIT9264gdVjwV31WFyq3gMrpNdFf6crPW+wSDHMlVMLLx6GBGb2T1q725gmxiEu/7OE1X99dDU7x6JgJzewAyVL29hOUUz6A3KPX0irvSpFC
X-Microsoft-Antispam-PRVS: <VI1PR0802MB2544EA05089DBC643139B4B2F77F0@VI1PR0802MB2544.eurprd08.prod.outlook.com>
X-Forefront-PRVS: 09565527D6
X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0802MB2544;
 23:KzlnST8DxL8P+8LgGgUEcjrpvbFFEdSjakEGCDD?=
 =?us-ascii?Q?fJysQW0EVy1DbNRWfsLGZet1GGIpqzanUOoLe0SW7xPnb3zE6BMndZ1dTv8B?=
 =?us-ascii?Q?e9zEjf0bhgoGMWk1vYSJUnOQIM5J1Wb3rwlJVPf9VtkJusnkWrvaf0Nc4wSE?=
 =?us-ascii?Q?oEqWwVAtOSGfd6uBqDfqMKvIFEBKUt0GUUIM1ae5oYhL0fGO3BAtJYBTtisy?=
 =?us-ascii?Q?DMLcxyw0Zr8fEVrSKQUz0Ye6eu1H3xmoovhSSyrt8VYtrO+KwdKA9m4/sCLW?=
 =?us-ascii?Q?G4Mbx4x3lQZhLZAY5u41BMdpjOE61qv0XWworYOEM4xVS9SvNcBRmpJNW/SZ?=
 =?us-ascii?Q?ODJ1awACvOcNtiC1mBPfGJk3bOzEbPFy/xoeVr2cxRMKUYr82qsYDIz+MvWP?=
 =?us-ascii?Q?TF1mdil8pcTYZ+1FeixJbcyzZNSTCKrvh35hdOWTEE7nXZ3uBwP1nQxu5rAf?=
 =?us-ascii?Q?fIFue3weZLVBb4dpmxGOzbgpWLP36F3dwTUTbw5f6cVtsfxtsMfFqiyIlDUD?=
 =?us-ascii?Q?Bd9mQFZyaaWDwF1PPqL4m+kn5SGx3a2lJxivb84v3tACSI37WJWp1JXhoUqB?=
 =?us-ascii?Q?kH8kRBGl0TS/wtZ8kGAolKgGmqog5dQrwLenP0sVkzOHeUEUX4O7AV015T5o?=
 =?us-ascii?Q?Kp9kkeAuU4rTEfKiAl8QC95ZSNSYctByhtWxC6xwaSaAT9Pj/WhaQmc9vOy8?=
 =?us-ascii?Q?izMzpzPEGC6wpZ0dbjJWiEKO2wWmJjCMDPH6w1+1oyhm9lMPe0PHwNf3P91/?=
 =?us-ascii?Q?6bjx9fITbfFC5qnt7dXdPMw6eAtu6TFFHA2dn2y9JE0tPDOiOCv82ILFzKMi?=
 =?us-ascii?Q?yAugH07rP73sW91fDGgz2JVL+NcwceT9L5Xr31AGZeTv0/TkANZj1Lpz5x3I?=
 =?us-ascii?Q?XdTcyu469xZu7Xnqf70LXPXXSF2V9KJvg15CcpkQoKKNfZ4C4gbE54Goyuey?=
 =?us-ascii?Q?JnQKUINosABsdQcvXhu1EoGDwati8o0hFotfBlP5z5Ps9EPMgtEuo85GXoNE?=
 =?us-ascii?Q?fq89Qfll4SrTPuoAqXH7BGk5kzd+Bf8BcKUePBinNycYw2hYjWiE+n/qQ3TS?=
 =?us-ascii?Q?Ppib3aGJannpY95a8qLSgOaxEQ1Ad5JVzGWXudcxEpvQFAZy1f1ufYGwRr79?=
 =?us-ascii?Q?KCU3/QX0+mnCBv4rIhCBqT7tiZ7KX5sV0Vk87zrxFUOUgxa8Ebm4397VpABL?=
 =?us-ascii?Q?KJHJ4TnMY3mppV+c=3D?=
X-MS-Exchange-SenderADCheck: 1
X-Microsoft-Antispam-Message-Info: 5/WcZ1mZa14WaZ5avyG/jxa3C2G1rM5lEYrJh2Y6tqys5OR9E+nDwv5rhfdYdf+DMv+31ZVHKQE5mDeLvc1Fs8m5U1AArhXkagqMb38k8F/7GNfC0HSoFMA9lOAJx3DU91JigqMqyRz5MPu8Z2g25RokEq1cCfmBf/gIo7DTebUM7w9/FH4zumXF0OgJaMabbTkNje/K0KzkDxKT0iEO6O+k6/zhQelo30NJJmgGErTYt6zx2eUYz5Uxa5gfdwj4WCYQw/j514l67I/KLgnqUHp/m3jvcbr9MOdiNiYB+Rc82q1MBEzzQ6B6H85MNhxn8zjD61ICrkGgKrZ7+jPLWZdfEdUdLDhQ0IYQXtr9+A6+dQvvvK9GxI3HKUmYn4XrXHGVUHr2EeDu9VT9qjWldR1ZqLdmsa8QmD2dz2Rdt3k=
X-Microsoft-Exchange-Diagnostics: 1; VI1PR0802MB2544;
 20:LA/rWlY3cpS8fJx3jbWlQwG5zLhJ0K4uIVXGWLEAsl8usPNPddAfb03W3k0pkRLOxOqQIg48/95eJo1x17H81tZtpR5o9dJFL9KXK1itBKvCMtrR1JJb977vaCZiCSHIo49hyG9BL2zKrn51S/RvFXJMrjIOQPadSRqB1VRIXrM=
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Feb 2019 06:22:26.0795 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 535ca28c-7169-4f5b-f6a1-08d6988e1d1f
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[40.67.248.234];
 Helo=[nebula.arm.com]
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0802MB2544
Subject: [Minios-devel] [UNIKRAFT PATCHv6 02/23] plat/include: Use macro-ed
 helper to simplify ioreg_read/write for Arm64
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>, Jia He <justin.he@arm.com>,
 Wei Chen <wei.chen@arm.com>, Kaly Xin <Kaly.Xin@arm.com>,
 Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

RnJvbTogV2VpIENoZW4gPHdlaS5jaGVuQGFybS5jb20+CkFzIGRpc2N1c3NlZCBpbiBtYWlsaW5n
IGxpc3QgWzFdLCB3ZSBjYW4gdXNlIG1hY3JvLWVkIGhlbHBlcnMgdG8gYXZvaWQKaGF2aW5nIHRv
IHdyaXRlIDQgdGltZXMgb2YgdGhlIHNhbWUgdGhpbmdzIG9mIGlvcmVnX3JlYWRfOC8xNi8zMi82
NCBhbmQKaW9yZWdfd3JpdGU4LzE2LzMyLzY0LgoKU2lnbmVkLW9mZi1ieTogV2VpIENoZW4gPHdl
aS5jaGVuQGFybS5jb20+ClNpZ25lZC1vZmYtYnk6IEppYSBIZSA8anVzdGluLmhlQGFybS5jb20+
ClJldmlld2VkLWJ5OiBTaGFyYW4gU2FudGhhbmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xhYi5l
dT4KLS0tCiBwbGF0L2NvbW1vbi9pbmNsdWRlL2FybS9hcm02NC9jcHUuaCB8IDY0ICsrKysrKysr
KysrLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMjUgaW5zZXJ0aW9ucygrKSwg
MzkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvcGxhdC9jb21tb24vaW5jbHVkZS9hcm0vYXJt
NjQvY3B1LmggYi9wbGF0L2NvbW1vbi9pbmNsdWRlL2FybS9hcm02NC9jcHUuaAppbmRleCA1MDNi
YzY4Li5jMDA5ZmM4IDEwMDY0NAotLS0gYS9wbGF0L2NvbW1vbi9pbmNsdWRlL2FybS9hcm02NC9j
cHUuaAorKysgYi9wbGF0L2NvbW1vbi9pbmNsdWRlL2FybS9hcm02NC9jcHUuaApAQCAtMzQsNDUg
KzM0LDMxIEBACgogI2luY2x1ZGUgPGludHR5cGVzLmg+Cgotc3RhdGljIGlubGluZSB1aW50OF90
IGlvcmVnX3JlYWQ4KGNvbnN0IHZvbGF0aWxlIHVpbnQ4X3QgKmFkZHIpCi17Ci0gICAgICAgcmV0
dXJuICphZGRyOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgaW9yZWdfd3JpdGU4KHZvbGF0aWxl
IHVpbnQ4X3QgKmFkZHIsIHVpbnQ4X3QgdmFsdWUpCi17Ci0gICAgICAgKmFkZHIgPSB2YWx1ZTsK
LX0KLQotc3RhdGljIGlubGluZSB1aW50MTZfdCBpb3JlZ19yZWFkMTYoY29uc3Qgdm9sYXRpbGUg
dWludDE2X3QgKmFkZHIpCi17Ci0gICAgICAgcmV0dXJuICphZGRyOwotfQotCi1zdGF0aWMgaW5s
aW5lIHZvaWQgaW9yZWdfd3JpdGUxNih2b2xhdGlsZSB1aW50MTZfdCAqYWRkciwgdWludDE2X3Qg
dmFsdWUpCi17Ci0gICAgICAgKmFkZHIgPSB2YWx1ZTsKLX0KLQotc3RhdGljIGlubGluZSB1aW50
MzJfdCBpb3JlZ19yZWFkMzIoY29uc3Qgdm9sYXRpbGUgdWludDMyX3QgKmFkZHIpCi17Ci0gICAg
ICAgcmV0dXJuICphZGRyOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgaW9yZWdfd3JpdGUzMih2
b2xhdGlsZSB1aW50MzJfdCAqYWRkciwgdWludDMyX3QgdmFsdWUpCi17Ci0gICAgICAgKmFkZHIg
PSB2YWx1ZTsKLX0KLQotc3RhdGljIGlubGluZSB1aW50NjRfdCBpb3JlZ19yZWFkNjQoY29uc3Qg
dm9sYXRpbGUgdWludDY0X3QgKmFkZHIpCi17Ci0gICAgICAgcmV0dXJuICphZGRyOwotfQotCi1z
dGF0aWMgaW5saW5lIHZvaWQgaW9yZWdfd3JpdGU2NCh2b2xhdGlsZSB1aW50NjRfdCAqYWRkciwg
dWludDY0X3QgdmFsdWUpCi17Ci0gICAgICAgKmFkZHIgPSB2YWx1ZTsKLX0KKy8qIERlZmluZSBt
YWNyb3MgdG8gYWNjZXNzIElPIHJlZ2lzdGVycyAqLworI2RlZmluZSBfX0lPUkVHX1JFQUQoYml0
cykgXAorc3RhdGljIGlubGluZSB1aW50IyNiaXRzIyNfdCBcCisgICAgICAgaW9yZWdfcmVhZCMj
Yml0cyhjb25zdCB2b2xhdGlsZSB1aW50IyNiaXRzIyNfdCAqYWRkcikgXAorICAgICAgICAgICAg
ICAgeyByZXR1cm4gKmFkZHI7IH0KKworI2RlZmluZSBfX0lPUkVHX1dSSVRFKGJpdHMpIFwKK3N0
YXRpYyBpbmxpbmUgdm9pZCBcCisgICAgICAgaW9yZWdfd3JpdGUjI2JpdHModm9sYXRpbGUgdWlu
dCMjYml0cyMjX3QgKmFkZHIsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdWludCMjYml0cyMjX3QgdmFsdWUpIFwKKyAgICAgICAgICAgICAgIHsgKmFk
ZHIgPSB2YWx1ZTsgfQorCisKKyNkZWZpbmUgX19JT1JFR19SRUFEX0FMTCgpIF9fSU9SRUdfUkVB
RCg4KSAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICBfX0lPUkVHX1JFQUQoMTYpIFwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgX19JT1JFR19SRUFEKDMyKSBcCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIF9fSU9SRUdfUkVBRCg2NCkgXAorCisjZGVmaW5lIF9fSU9SRUdfV1JJVEVf
QUxMKCkgICAgX19JT1JFR19XUklURSg4KSAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICBf
X0lPUkVHX1dSSVRFKDE2KSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIF9fSU9SRUdfV1JJ
VEUoMzIpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgX19JT1JFR19XUklURSg2NCkgXAor
CitfX0lPUkVHX1JFQURfQUxMKCkKK19fSU9SRUdfV1JJVEVfQUxMKCkKCiBzdGF0aWMgaW5saW5l
IHZvaWQgX2luaXRfY3B1ZmVhdHVyZXModm9pZCkKIHsKLS0KMi4xNy4xCgpJTVBPUlRBTlQgTk9U
SUNFOiBUaGUgY29udGVudHMgb2YgdGhpcyBlbWFpbCBhbmQgYW55IGF0dGFjaG1lbnRzIGFyZSBj
b25maWRlbnRpYWwgYW5kIG1heSBhbHNvIGJlIHByaXZpbGVnZWQuIElmIHlvdSBhcmUgbm90IHRo
ZSBpbnRlbmRlZCByZWNpcGllbnQsIHBsZWFzZSBub3RpZnkgdGhlIHNlbmRlciBpbW1lZGlhdGVs
eSBhbmQgZG8gbm90IGRpc2Nsb3NlIHRoZSBjb250ZW50cyB0byBhbnkgb3RoZXIgcGVyc29uLCB1
c2UgaXQgZm9yIGFueSBwdXJwb3NlLCBvciBzdG9yZSBvciBjb3B5IHRoZSBpbmZvcm1hdGlvbiBp
biBhbnkgbWVkaXVtLiBUaGFuayB5b3UuCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBs
aXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4v
bGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Fri Feb 22 06:22:48 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 22 Feb 2019 06:22:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gx4ER-0001Z3-WE; Fri, 22 Feb 2019 06:22:47 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=WrH0=Q5=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1gx4EQ-0001YP-BK
 for minios-devel@lists.xenproject.org; Fri, 22 Feb 2019 06:22:46 +0000
X-Inumbo-ID: 42660852-366a-11e9-bc90-bc764e045a96
Received: from EUR02-HE1-obe.outbound.protection.outlook.com (unknown
 [40.107.1.77]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 42660852-366a-11e9-bc90-bc764e045a96;
 Fri, 22 Feb 2019 06:22:44 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; 
 s=selector1-arm-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=yF+nzUupb+50y4j0YR/VlLPrilcq/V6uOlDURLTPGfY=;
 b=KW7HE4JT4N3D7UlvX+c121UPmkUx5R4bFE4zPsD9wUbmj/cXwearR/QVbwXxdaGbUq+sNgm15M+VngMTAQPiMgc9UsdNtDgXwh4HpYy7ZyvwjO5wmMCO2KcxaKuUKI9P4yvmuhe9moTdOT+hkzezhUy7F6vKcta5nMQoEMS2b5c=
Received: from VI1PR08CA0212.eurprd08.prod.outlook.com (2603:10a6:802:15::21)
 by DB7PR08MB3258.eurprd08.prod.outlook.com (2603:10a6:5:1f::20) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1622.19; Fri, 22 Feb
 2019 06:22:40 +0000
Received: from DB5EUR03FT006.eop-EUR03.prod.protection.outlook.com
 (2a01:111:f400:7e0a::206) by VI1PR08CA0212.outlook.office365.com
 (2603:10a6:802:15::21) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1643.16 via Frontend
 Transport; Fri, 22 Feb 2019 06:22:40 +0000
Authentication-Results: spf=pass (sender IP is 40.67.248.234)
 smtp.mailfrom=arm.com; lists.xenproject.org; dkim=none (message not signed)
 header.d=none;lists.xenproject.org; dmarc=bestguesspass action=none
 header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 40.67.248.234 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.67.248.234; helo=nebula.arm.com;
Received: from nebula.arm.com (40.67.248.234) by
 DB5EUR03FT006.mail.protection.outlook.com (10.152.20.106) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.1643.11 via Frontend Transport; Fri, 22 Feb 2019 06:22:39 +0000
Received: from AZ-NEU-EX03.Arm.com (10.251.24.31) by AZ-NEU-EX03.Arm.com
 (10.251.24.31) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1415.2; Fri, 22 Feb
 2019 06:22:28 +0000
Received: from localhost.localdomain (10.169.40.37) by mail.arm.com
 (10.251.24.31) with Microsoft SMTP Server id 15.1.1415.2 via Frontend
 Transport; Fri, 22 Feb 2019 06:22:25 +0000
From: Jia He <justin.he@arm.com>
To: <minios-devel@lists.xenproject.org>, Simon Kuenzer
 <simon.kuenzer@neclab.eu>, <Sharan.Santhanam@neclab.eu>
Date: Fri, 22 Feb 2019 14:21:43 +0800
Message-ID: <20190222062200.26602-7-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190222062200.26602-1-justin.he@arm.com>
References: <20190222062200.26602-1-justin.he@arm.com>
MIME-Version: 1.0
X-EOPAttributedMessage: 0
X-MS-Office365-Filtering-HT: Tenant
X-Forefront-Antispam-Report: CIP:40.67.248.234; IPV:NLI; CTRY:US; EFV:NLI;
 SFV:NSPM;
 SFS:(10009020)(396003)(136003)(346002)(376002)(39860400002)(2980300002)(199004)(189003)(40434004)(47776003)(81156014)(81166006)(76176011)(2906002)(36756003)(446003)(68736007)(48376002)(1076003)(8676002)(486006)(50466002)(5660300002)(97736004)(426003)(336012)(49486002)(356004)(6666004)(77096007)(186003)(476003)(4326008)(72206003)(5024004)(14444005)(126002)(53936002)(478600001)(54906003)(110136005)(316002)(86362001)(11346002)(51416003)(8936002)(106466001)(8746002)(50226002)(26005)(305945005)(2616005)(106002);
 DIR:OUT; SFP:1101; SCL:1; SRVR:DB7PR08MB3258; H:nebula.arm.com; FPR:; SPF:Pass;
 LANG:en; PTR:InfoDomainNonexistent; A:1; MX:1; 
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id: 1b4bbbe4-d85e-46cf-95b8-08d6988e256b
X-Microsoft-Antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(8989299)(5600110)(711020)(4605104)(4608103)(4709054)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060);
 SRVR:DB7PR08MB3258; 
X-MS-TrafficTypeDiagnostic: DB7PR08MB3258:
X-Microsoft-Exchange-Diagnostics: 1; DB7PR08MB3258;
 20:0Tl08e7JW4BDE9dwX6/LcdrUN9o76ptSGt7W7D1d2Rc1aaYMtHezyWtiUPXL7LdNd8m7xo+bfkduJUvcENILSju9+vRTq083R58kGrrCazeDvtJco0TAmDraLlVixIXZM3H21dFEEO6GimHSf4qp+abO0VmvJkmDmZaVIWeQQjUt61W4cNfz4x7RcH+u7fPsTkHYZOLWLU9ZLRmKx/y/uJLfOju1f1we4atAYkiceq6/Q0XqiP5LNWcwVPjKu66BDBesQUq69GAMxHzDv7ulESRG69rzjRn4eQDZPI+eLokpWR/iHe4Eo+DLPBGILG3DZ4zVCgPSRSzdW2YZrv20zN6zpk1BVwMWkHPj98dC01oAvixwtO2qtGIbeWOa+BG6ZIY6v/LPzhjp95fyY7csQ8AG2/Pk/vs0RFcINs7TecqZ3rNfqD91Gg2OKbEpreIGnUm2JftVtMblcjg12sVSiX56YUKd/fzPDFroPUrzOoQfWEtDe6a56yu/yxuzKdyu
X-Microsoft-Antispam-PRVS: <DB7PR08MB32584DFDF66D370AED2038A4F77F0@DB7PR08MB3258.eurprd08.prod.outlook.com>
X-Forefront-PRVS: 09565527D6
X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB7PR08MB3258;
 23:J85LvK0BCQWdKLjcU/r/6cyelqc2NiEY8luCsOJTY?=
 =?us-ascii?Q?eAjRTaDUVA0s4e+L5K09PmoBOwGknGg96q3K8mzOh5fIoA6ndk8dZpO6tmPe?=
 =?us-ascii?Q?DY8c0oDrJqQM+FCz9vdSXoVDhRMXt7YMSeqbxUnPdVDw7UfTVSM69eBRq7hL?=
 =?us-ascii?Q?1n1dX4yuQpN52HSstY9+8+7WAIf6qNKGaQVgUyuDsLMv7u0Bjy9P374iz+qH?=
 =?us-ascii?Q?mOcrBug/fbvCOgczSs54bQWGMrYARvD+u5AxUJ9pKX+MQiww3GuX7fxru4wU?=
 =?us-ascii?Q?JFQJehDsbb3mGNG+pEk2Ns64OBEuEU8oTjAnGo2UsTiptKMWjAClgZQaZnBD?=
 =?us-ascii?Q?0kEp92wuRwndt2o6/956K38U9IJztgr2EcindaVI0puNbpsBPrWoNvAADpLJ?=
 =?us-ascii?Q?QMMdcflq8JrLjWC2r+GfnJp0hiN2MrFSRVy2zKKgRsX93PzH8I/Q1KNDboeA?=
 =?us-ascii?Q?G0p5Oi84cmTIm0ebQFUTxO7CY8x5bYrcXATH9wzLA2UPVVzIrAxqrKKHZynX?=
 =?us-ascii?Q?ZhAUPWRXxec8cp6tY4XUMO4RXzVQcoxC1kvMV6xEE0LjoCOOa+TJEm/DaNPs?=
 =?us-ascii?Q?BtbgQ9h0TJPyu+bsKsjxq3kY8Au1v+rJrZzYHZBQ7h61C9V8E5lPP2LNqvA0?=
 =?us-ascii?Q?XiCqGNe9yae3PzmRwuIQaIZwu5777Fzm4QpYi21otoPH9ku+n65qKzGoBPr8?=
 =?us-ascii?Q?hvQ+zeLkv8UWIEB3zTQgyn/ZmSBT4WQrwFxzFOTkvg5ecOJ+GQpdr1qlwPn6?=
 =?us-ascii?Q?uDVcQyRXSmOrTZZGR20qRRbBueYjPY4x0D+X4xJf0aDiXZqoAlwcnW7STClB?=
 =?us-ascii?Q?LgPtklbqV5pfIKiSUMLCWNx2VRt8vJEDQrXSweLhuixy6Ur/hKK+lbVm+a0v?=
 =?us-ascii?Q?o+ihlUxI/6zcp8E5WAJjx38br62uwKSskU8wam+W58r3MC1A2mQ1n4ESEXrf?=
 =?us-ascii?Q?SM9DJ9DzNnyvG4M0Ks3k3S2KxiIQta6bSyuMzlaqEAoqsPgcmAjol0aLg0Nq?=
 =?us-ascii?Q?dOte4F3fLY4W5mFNOd0t9guEAUsqt3N1S9b999jdCr32apWkXMi3rD06cucn?=
 =?us-ascii?Q?ESVm71+qnGSJqiWY11cviiwIqNShOj2IQEOGXJ6dCXcBV2jOzxg0mpo87Bla?=
 =?us-ascii?Q?F82vUsG1kIMEPGoVvPDzIOPas9FaW1TPwwqYimArQgA6y++wtxcl/ki75cBu?=
 =?us-ascii?Q?E3kgy5D7sp53aA=3D?=
X-MS-Exchange-SenderADCheck: 1
X-Microsoft-Antispam-Message-Info: O11plK0imeyDkJWukHx9BmTby+RYwpA+VwbfFlo2Davkhnaa9hSWAmlWs1/xiMEvjZgX3bmSAQ/IAOW8gdKNMckxrhprqXDhA3DhAmXPK+UnvFzjON2GmSHUDjiyyc132acfJ3IIGqzybB3s2K2ylKjRxAAuUV5Qy9i3DkjeIGc/wqxA3V7QxwRpfE95uX13SAKz0pKS85FC/hTMFGuUuXAR1VYotxGRC/xptol7hpQ1kZt6DypHFb6MPwT3Q/Qfzzos8qytD91NL3K669DUbmio1VVqHJrM+DPVyFbKXD+p+eQ84U9vFQ+rSeRGDfq3Y3iGZU7z0gSTaJcyUqkgdLJUUwaH2t1vrQu83Vt8+R+xm/VGRDzlQFvBJ/otqbYFVx87fC/VSE0oMYu4IkJIkdKnoZUyq/2DLUBtTfRHTBo=
X-Microsoft-Exchange-Diagnostics: 1; DB7PR08MB3258;
 20:OWGsfbIyRpZNUM440XuyDeBtlNjAPKZR5CrmSmId8sGVeNEe183FpxWEYPKKVjypq81fIRGKaj6FKDuFUAuq/M3e1JmTtXIs0VdJNVXHgxyorM9hgJjjyBk9igFPQqeKdBU0ct7iMEngI2Jp6DDv10ziok7DqncQzk5ZbAw12KI=
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Feb 2019 06:22:39.9909 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 1b4bbbe4-d85e-46cf-95b8-08d6988e256b
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[40.67.248.234];
 Helo=[nebula.arm.com]
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR08MB3258
Subject: [Minios-devel] [UNIKRAFT PATCHv6 06/23] plat/common: Clean and
 invalidate D-Cache only when boot for Arm64
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>, Jia He <justin.he@arm.com>,
 Wei Chen <wei.chen@arm.com>, Kaly Xin <Kaly.Xin@arm.com>,
 Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

RnJvbTogV2VpIENoZW4gPHdlaS5jaGVuQGFybS5jb20+ClRoZSBib290IGNvZGUgd2lsbCBub3Qg
cmV3cml0ZSBpdHNlbGYsIGFuZCB3ZSBkb24ndCBoYXZlIGFueSByZWxvY2F0aW9uCm9wZXJhdGlv
biBmb3IgY29kZSBhcmVhLiBTbyBjbGVhbiZpbnZhbGlkYXRlIEktQ2FjaGUgaXMgdW5uZWNlc3Nh
cnkuCgpTaWduZWQtb2ZmLWJ5OiBXZWkgQ2hlbiA8d2VpLmNoZW5AYXJtLmNvbT4KU2lnbmVkLW9m
Zi1ieTogSmlhIEhlIDxqdXN0aW4uaGVAYXJtLmNvbT4KUmV2aWV3ZWQtYnk6IFNoYXJhbiBTYW50
aGFuYW0gPHNoYXJhbi5zYW50aGFuYW1AbmVjbGFiLmV1PgotLS0KIHBsYXQvY29tbW9uL2FybS9j
YWNoZTY0LlMgfCAyNiArKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLQogcGxhdC9rdm0vYXJtL3Bh
Z2V0YWJsZS5TICB8ICA2ICsrKy0tLQogMiBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCsp
LCAyMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9wbGF0L2NvbW1vbi9hcm0vY2FjaGU2NC5T
IGIvcGxhdC9jb21tb24vYXJtL2NhY2hlNjQuUwppbmRleCBhNzI1NTU3Li45OTYyZDcxIDEwMDY0
NAotLS0gYS9wbGF0L2NvbW1vbi9hcm0vY2FjaGU2NC5TCisrKyBiL3BsYXQvY29tbW9uL2FybS9j
YWNoZTY0LlMKQEAgLTM4LDI1ICszOCwxNyBAQAogI2luY2x1ZGUgPGFybS9jcHVfZGVmcy5oPgoK
IC8qCi0gKiBGdW5jdGlvbiB0byBpbnZhbGlkYXRlIEkvRCBjYWNoZS4gVGhpcyB0YWtlcyB0aGUg
c3RhcnQgYWRkcmVzcyBpbiB4MCwKKyAqIENsZWFuIGFuZCBpbnZhbGlkYXRlIGRhdGEgY2FjaGUu
IFRoaXMgdGFrZXMgdGhlIHN0YXJ0IGFkZHJlc3MgaW4geDAsCiAgKiBsZW5ndGggaW4geDEuIEl0
IHdpbGwgY29ycnVwdCB4MCB+IHg1LgogICovCi1FTlRSWShpbnZhbGlkYXRlX2lkY2FjaGVfcmFu
Z2UpCitFTlRSWShjbGVhbl9hbmRfaW52YWxpZGF0ZV9kY2FjaGVfcmFuZ2UpCiAgICAgICAgLyog
R2V0IGluZm9ybWF0aW9uIGFib3V0IHRoZSBjYWNoZXMgZnJvbSBDVFJfRUwwICovCi0gICAgICAg
bXJzICAgICB4MywgY3RyX2VsMAorICAgICAgIG1ycyAgICAgeDQsIGN0cl9lbDAKICAgICAgICBt
b3YgICAgIHgyLCAjQ1RSX0JZVEVTX1BFUl9XT1JECgogICAgICAgIC8qIEdldCBtaW5pbXVtIEQg
Y2FjaGUgbGluZSBzaXplICovCi0gICAgICAgdWJmeCAgICB4NCwgeDMsICNDVFJfRE1JTkxJTkVf
U0hJRlQsICNDVFJfRE1JTkxJTkVfV0lEVEgKLSAgICAgICBsc2wgICAgIHg0LCB4MiwgeDQKLQot
ICAgICAgIC8qIEdldCBtaW5pbXVtIEkgY2FjaGUgbGluZSBzaXplICovCi0gICAgICAgYW5kICAg
ICB4NSwgeDMsICNDVFJfSU1JTkxJTkVfTUFTSwotICAgICAgIGxzbCAgICAgeDUsIHgyLCB4NQot
Ci0gICAgICAgLyogU2VsZWN0IHRoZSBzbWFsbGVyIG9uZSBhcyBJL0QgY2FjaGUgbGluZSBzaXpl
ICovCi0gICAgICAgY21wICAgICB4NSwgeDQKLSAgICAgICBjc2VsICAgIHgzLCB4NSwgeDQsIGxl
CisgICAgICAgdWJmeCAgICB4MywgeDQsICNDVFJfRE1JTkxJTkVfU0hJRlQsICNDVFJfRE1JTkxJ
TkVfV0lEVEgKKyAgICAgICBsc2wgICAgIHgzLCB4MiwgeDMKCiAgICAgICAgLyogQWxpZ24gdGhl
IHN0YXJ0IGFkZHJlc3MgdG8gbGluZSBzaXplICovCiAgICAgICAgc3ViICAgICB4NCwgeDMsICMx
CkBAIC02NCwxNCArNTYsMTAgQEAgRU5UUlkoaW52YWxpZGF0ZV9pZGNhY2hlX3JhbmdlKQogICAg
ICAgIGFkZCAgICAgeDEsIHgxLCB4MgogICAgICAgIGJpYyAgICAgeDAsIHgwLCB4NAogMToKLSAg
ICAgICAvKiBjbGVhbiBhbmQgaW52YWxpZGF0ZSBEIGNhY2hlIGJ5IEkvRCBjYWNoZSBsaW5lIHNp
emUgKi8KKyAgICAgICAvKiBjbGVhbiBhbmQgaW52YWxpZGF0ZSBEIGNhY2hlIGJ5IEQgY2FjaGUg
bGluZSBzaXplICovCiAgICAgICAgZGMgICAgICBjaXZhYywgeDAKICAgICAgICBkc2IgICAgIGlz
aAoKLSAgICAgICAvKiBjbGVhbiBhbmQgaW52YWxpZGF0ZSBJIGNhY2hlIGJ5IEkvRCBjYWNoZSBs
aW5lIHNpemUgKi8KLSAgICAgICBpYyAgICAgIGl2YXUsIHgwCi0gICAgICAgZHNiICAgICBpc2gK
LQogICAgICAgIC8qIE1vdmUgdG8gbmV4dCBsaW5lIGFuZCByZWR1Y2UgdGhlIHNpemUgKi8KICAg
ICAgICBhZGQgICAgIHgwLCB4MCwgeDMKICAgICAgICBzdWJzICAgIHgxLCB4MSwgeDMKQEAgLTgy
LDQgKzcwLDQgQEAgRU5UUlkoaW52YWxpZGF0ZV9pZGNhY2hlX3JhbmdlKQogICAgICAgIGlzYgoK
ICAgICAgICByZXQKLUVORChpbnZhbGlkYXRlX2lkY2FjaGVfcmFuZ2UpCitFTkQoY2xlYW5fYW5k
X2ludmFsaWRhdGVfZGNhY2hlX3JhbmdlKQpkaWZmIC0tZ2l0IGEvcGxhdC9rdm0vYXJtL3BhZ2V0
YWJsZS5TIGIvcGxhdC9rdm0vYXJtL3BhZ2V0YWJsZS5TCmluZGV4IDkxMjBjNGUuLmEzYzgyZTIg
MTAwNjQ0Ci0tLSBhL3BsYXQva3ZtL2FybS9wYWdldGFibGUuUworKysgYi9wbGF0L2t2bS9hcm0v
cGFnZXRhYmxlLlMKQEAgLTIyMiw4ICsyMjIsOCBAQCBFTlRSWShzdGFydF9tbXUpCiAgICAgICAg
bW92IHgyMiwgeDMwCgogICAgICAgICAvKgotICAgICAgICAqIEludmFsaWRhdGUgdGhlIEkvRCBj
YWNoZSB0byBhdm9pZCB1c2luZyBpbnZhbGlkIGRhdGEgdGhhdCBleGlzdGVkCi0gICAgICAgICog
aW4gSS9EIGNhY2hlLiBJbnZhbGlkYXRlIHJhbmdlczogRFRCLCBURVhULCBEQVRBLCBCU1MsIFBB
R0VUQUJMRQorICAgICAgICAqIEludmFsaWRhdGUgdGhlIEQtQ2FjaGUgdG8gYXZvaWQgdXNpbmcg
aW52YWxpZCBkYXRhIHRoYXQgZXhpc3RlZAorICAgICAgICAqIGluIEQtQ2FjaGUuIEludmFsaWRh
dGUgcmFuZ2VzOiBEVEIsIFRFWFQsIERBVEEsIEJTUywgUEFHRVRBQkxFCiAgICAgICAgICogYW5k
IEJPT1RTVEFDSy4KICAgICAgICAgKi8KICAgICAgICBsZHIgeDAsID1fZHRiCkBAIC0yMzEsNyAr
MjMxLDcgQEAgRU5UUlkoc3RhcnRfbW11KQogICAgICAgIGFkZCB4MSwgeDEsICNQQUdFX1RBQkxF
X1NJWkUKICAgICAgICBhZGQgeDEsIHgxLCAjX19TVEFDS19TSVpFCiAgICAgICAgc3ViIHgxLCB4
MSwgeDAKLSAgICAgICBibCBpbnZhbGlkYXRlX2lkY2FjaGVfcmFuZ2UKKyAgICAgICBibCBjbGVh
bl9hbmRfaW52YWxpZGF0ZV9kY2FjaGVfcmFuZ2UKCiAgICAgICAgLyogU2V0dXAgU0NUTFIgKi8K
ICAgICAgICBsZHIgeDIsID1TQ1RMUl9TRVRfQklUUwotLQoyLjE3LjEKCklNUE9SVEFOVCBOT1RJ
Q0U6IFRoZSBjb250ZW50cyBvZiB0aGlzIGVtYWlsIGFuZCBhbnkgYXR0YWNobWVudHMgYXJlIGNv
bmZpZGVudGlhbCBhbmQgbWF5IGFsc28gYmUgcHJpdmlsZWdlZC4gSWYgeW91IGFyZSBub3QgdGhl
IGludGVuZGVkIHJlY2lwaWVudCwgcGxlYXNlIG5vdGlmeSB0aGUgc2VuZGVyIGltbWVkaWF0ZWx5
IGFuZCBkbyBub3QgZGlzY2xvc2UgdGhlIGNvbnRlbnRzIHRvIGFueSBvdGhlciBwZXJzb24sIHVz
ZSBpdCBmb3IgYW55IHB1cnBvc2UsIG9yIHN0b3JlIG9yIGNvcHkgdGhlIGluZm9ybWF0aW9uIGlu
IGFueSBtZWRpdW0uIFRoYW5rIHlvdS4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxp
c3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9s
aXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Fri Feb 22 06:22:48 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 22 Feb 2019 06:22:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gx4ES-0001Z9-22; Fri, 22 Feb 2019 06:22:48 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=WrH0=Q5=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1gx4EQ-0001YS-Ge
 for minios-devel@lists.xenproject.org; Fri, 22 Feb 2019 06:22:46 +0000
X-Inumbo-ID: 43ee2911-366a-11e9-bc90-bc764e045a96
Received: from EUR01-DB5-obe.outbound.protection.outlook.com (unknown
 [2a01:111:f400:fe02::60c])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 43ee2911-366a-11e9-bc90-bc764e045a96;
 Fri, 22 Feb 2019 06:22:45 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; 
 s=selector1-arm-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=00jjeHyKB7rjiq6iOybNwq4F8FVq/PYG+wFxKpQZCv4=;
 b=DZ0aDd8kXurRhraPHJHUMqaYq+6b6KBO4zHSOMH3mnfZtzbSCduFqc9ChwxYqgPn1B/NxN/e3YVQPpE66+pKeB+cNEC6l4o2D36CSk+uBpClhdDswvOiVFBqgTnYsA2Tbf2DFrf1vp1aijCsOB1jhk5tQkgbdptJpPTjYjUOwRU=
Received: from VI1PR08CA0212.eurprd08.prod.outlook.com (2603:10a6:802:15::21)
 by VI1PR08MB3263.eurprd08.prod.outlook.com (2603:10a6:803:3d::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1622.19; Fri, 22 Feb
 2019 06:22:42 +0000
Received: from DB5EUR03FT006.eop-EUR03.prod.protection.outlook.com
 (2a01:111:f400:7e0a::206) by VI1PR08CA0212.outlook.office365.com
 (2603:10a6:802:15::21) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1643.16 via Frontend
 Transport; Fri, 22 Feb 2019 06:22:42 +0000
Authentication-Results: spf=pass (sender IP is 40.67.248.234)
 smtp.mailfrom=arm.com; lists.xenproject.org; dkim=none (message not signed)
 header.d=none;lists.xenproject.org; dmarc=bestguesspass action=none
 header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 40.67.248.234 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.67.248.234; helo=nebula.arm.com;
Received: from nebula.arm.com (40.67.248.234) by
 DB5EUR03FT006.mail.protection.outlook.com (10.152.20.106) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.1643.11 via Frontend Transport; Fri, 22 Feb 2019 06:22:42 +0000
Received: from AZ-NEU-EX03.Arm.com (10.251.24.31) by AZ-NEU-EX03.Arm.com
 (10.251.24.31) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1415.2; Fri, 22 Feb
 2019 06:22:32 +0000
Received: from localhost.localdomain (10.169.40.37) by mail.arm.com
 (10.251.24.31) with Microsoft SMTP Server id 15.1.1415.2 via Frontend
 Transport; Fri, 22 Feb 2019 06:22:29 +0000
From: Jia He <justin.he@arm.com>
To: <minios-devel@lists.xenproject.org>, Simon Kuenzer
 <simon.kuenzer@neclab.eu>, <Sharan.Santhanam@neclab.eu>
Date: Fri, 22 Feb 2019 14:21:44 +0800
Message-ID: <20190222062200.26602-8-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190222062200.26602-1-justin.he@arm.com>
References: <20190222062200.26602-1-justin.he@arm.com>
MIME-Version: 1.0
X-EOPAttributedMessage: 0
X-MS-Office365-Filtering-HT: Tenant
X-Forefront-Antispam-Report: CIP:40.67.248.234; IPV:NLI; CTRY:US; EFV:NLI;
 SFV:NSPM;
 SFS:(10009020)(39860400002)(396003)(346002)(376002)(136003)(2980300002)(199004)(189003)(40434004)(6666004)(50466002)(356004)(8746002)(478600001)(336012)(50226002)(81166006)(426003)(8936002)(26005)(77096007)(186003)(48376002)(53936002)(305945005)(36756003)(8676002)(81156014)(68736007)(126002)(2616005)(476003)(446003)(72206003)(486006)(11346002)(5660300002)(76176011)(51416003)(49486002)(14444005)(5024004)(4326008)(106002)(86362001)(2906002)(54906003)(110136005)(316002)(97736004)(47776003)(106466001)(1076003);
 DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR08MB3263; H:nebula.arm.com; FPR:; SPF:Pass;
 LANG:en; PTR:InfoDomainNonexistent; A:1; MX:1; 
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id: 1f1c643f-8ceb-4e3d-842c-08d6988e26fd
X-Microsoft-Antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(8989299)(5600110)(711020)(4605104)(4608103)(4709054)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060);
 SRVR:VI1PR08MB3263; 
X-MS-TrafficTypeDiagnostic: VI1PR08MB3263:
X-Microsoft-Exchange-Diagnostics: 1; VI1PR08MB3263;
 20:SxN5iJGnk3topuWEtF+QRrH3sY7GnQ4FHGKXRQ3nmmWi04SCuGugsRBiK5PkTnXAnWL88OiKndCjmITFXyyC9nuuxKq9lQBXSzqHQ4g5bKpIj5lM4HNnsGdJFeuW6g7lbexXqdMYyox8wxU8CurVpZUdSPMYvF0qdQGs2ip1D+BAzzP2dZ6v2LhhHbLwnZ/03bZVVqnIEm6zCtHQeDYJMKP0Q2pYbzLzkriTYBGfnTXZc8aSRnu4BnP2iyeI/uqcNKexoJpR5yjtWofnNEehQlY+pAIcVnr4tcB5//H4b38fe2iDpdzkVf921+OR7ydNkkfjrIbogQ3VwrOzrnkeNcbifnSLBxwxxrXshFnm5TFQ1ioHXonOxqjoiXlzWR95RQ26UYlYaHEhuj29jlqpxb+su/1uRJH+HW57qAu4nEPuy/aJDwv7hU2aHSj/y/3+rvoBr9ROOxxDOZl5oR5+GxeUsVFB9eppJjlWCMZHg/H8KRG7Z0y2yeoyKf9fg2Nw
X-Microsoft-Antispam-PRVS: <VI1PR08MB32638B73AD55BE3EE0E917FCF77F0@VI1PR08MB3263.eurprd08.prod.outlook.com>
X-Forefront-PRVS: 09565527D6
X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR08MB3263;
 23:1g8F0J6XWFOEF/TBzvQd5Qrdg+pl3OcfQc+cU7moM?=
 =?us-ascii?Q?2WyvDkSL9CBlGHUGPjn8N5ay+oLM48FlW0ooyQOfBeXBD6l+Dy64RKugCNfT?=
 =?us-ascii?Q?WcarH45w80hVQlkA/GohIPXqcS+imk+mJrb/qtip3iKJxoGSIZEVSWMXT+QG?=
 =?us-ascii?Q?iM6R/g/akuUigy3YOuZQSHWzvojpDcRlwPBdf9RmDMvk2qvLzR0U00Y19q7S?=
 =?us-ascii?Q?yurnXd7WkPsXphc1zW9cXfIE7tdQWTncmjMDElXBIVqno1hCoeQSQos8TaQb?=
 =?us-ascii?Q?tAnEh8Nh5fIBBShvGHm5Nfz4RL8uxWx/5Kh9iFH6WbS8Fx7wyQZk+L0jV4Fa?=
 =?us-ascii?Q?eqVlv1zxDJQ8xZSAw9g5gXwa4va9nRBcWlFHEdLcXe7JkJXJt5q3OgYxANUF?=
 =?us-ascii?Q?fXdcOUHGAjbC5AwG+97TF3TNCfC7vL2IAurrttIg50cZEkl9xdac/zGY1wpf?=
 =?us-ascii?Q?BS+GXopfANxO0VEQmpi6kwPddoFz3GQigosLAB7BDxHn7aQSAk2ZqcsEKT18?=
 =?us-ascii?Q?d6Ja1RkIBeyXUeaJ1mRlSnQjoYJ+fzMcMiL/j+nhQh2vJ6tckn0L8o1NL/F3?=
 =?us-ascii?Q?ZSnXnfke2NAJvBm5OFni3/4wTQE7g1Va5AY0ux2/fdWqdgJsfhhLUXGlhjnj?=
 =?us-ascii?Q?Od8LBV74u6BX1aBCWEVOu6XP5kVtmD1CeN8X8UqrrL4mTlwqis4/+sYu+JAj?=
 =?us-ascii?Q?Zbg7ex00hfE5KjoOIjzlrP6D01WIS5RYkC5ZyjxRRlJpVhfK71BMHJi8qud/?=
 =?us-ascii?Q?T7pSoLg0U982KBYWNIBpYz1cr5BCtueGjvQE70jW5LdtUyHJLrsTJqlx4vq4?=
 =?us-ascii?Q?crT5WTAYcfcLYaviFZSjSTzTWwjSCualdFINSYbwBXly2P7gqi2GSAkKPMq2?=
 =?us-ascii?Q?guy6mMfpyNC7d1RNXJjAi0/Vv/xarH8fpCq1V6paSYaWV4OwU8LzMYxL1ckV?=
 =?us-ascii?Q?UJYjsrXDLF9VrsKb0AjpNcXyFGmcW/R/dtFOGjqmamCNsU/AixUxe4txwVWW?=
 =?us-ascii?Q?CPEKp/dlfrc07YBr/xB3IRL7SpOo2Cv9izCL+ih5vumSEQwALjFLkFih9OJq?=
 =?us-ascii?Q?ZIkIisMGenKP+64zrw0+erWKR36pq6eQd6EZqupvGSlAP89gpWktmhnf6P6Y?=
 =?us-ascii?Q?NZxnrtcdTJ50zChsjDI7f4p7Tkf9d/xKW+Pyq3oahePjAZsqmgdz7TehBNOU?=
 =?us-ascii?Q?Aq9YC/W6fATIgc=3D?=
X-MS-Exchange-SenderADCheck: 1
X-Microsoft-Antispam-Message-Info: 80+3Wx2IDlYt/kGrRwKsIPQc38EF6B0b9DGv7E4jDJPVePTD3Y1r3XeNjN6GJ8VvwjGy3953HUzVOpil8BMr8ut/4Im0OJ8o9ELqt6dheAz+GbyOnGHUoq8gj3/YYEVvG7k8qWNHxwkgDqMqkdKoE0BM/v4PHov4ySmhef8HXazvDXmBPOw35pN7s0N/DtnxFSJ/5vrB0zhWyOfe0lInKi1ZavBJLhEt0H3VZSdJf6+U2OW+GWaOLVcw+dij5Usxb49CwYyU4uhDNXRD3giZ59rnPuknSdxPEdbNhVJQKh/vj01/m5rKV832kVXOU98JISM+1xlDW/j1RSznJ/948zMFSw/ZcsC5uED4gCQukVF5yZY102bCHuInvMu7ut0L0j8iG5c7AIVUVouEmzgbjuI+lG0l4SOGSLf8aRtvUFQ=
X-Microsoft-Exchange-Diagnostics: 1; VI1PR08MB3263;
 20:U1yPO7MU9nTuc26/jf52urLQKt7P4Tr44OGpvUSt0bf3LECjrMLN7kBfsglR6XB1F2M+PDu+lfIz5QWD7jKyWMqv0O1iH94UdgvAZwLXFJx8HdTVq1n4qDGk6iGhUjHnJTy86fhn8WJwvNCMrsrrXdhv7qkl95Fy8bui53hyrqY=
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Feb 2019 06:22:42.6300 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 1f1c643f-8ceb-4e3d-842c-08d6988e26fd
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[40.67.248.234];
 Helo=[nebula.arm.com]
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB3263
Subject: [Minios-devel] [UNIKRAFT PATCHv6 07/23] plat/common: Use correct
 dsb operation flag for Arm64
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>, Jia He <justin.he@arm.com>,
 Wei Chen <wei.chen@arm.com>, Kaly Xin <Kaly.Xin@arm.com>,
 Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

RnJvbTogV2VpIENoZW4gPHdlaS5jaGVuQGFybS5jb20+CkJlZm9yZSBNTVUgdHVybiBvbiwgdGhl
IERTQiBvcGVyYXRpb24gb25seSBuZWVkIHRvIGFwcGx5IG91dAp0byB0aGUgcG9pbnQgb2YgdW5p
ZmljYXRpb24uCgpTaWduZWQtb2ZmLWJ5OiBXZWkgQ2hlbiA8d2VpLmNoZW5AYXJtLmNvbT4KU2ln
bmVkLW9mZi1ieTogSmlhIEhlIDxqdXN0aW4uaGVAYXJtLmNvbT4KUmV2aWV3ZWQtYnk6IFNoYXJh
biBTYW50aGFuYW0gPHNoYXJhbi5zYW50aGFuYW1AbmVjbGFiLmV1PgotLS0KIHBsYXQvY29tbW9u
L2FybS9jYWNoZTY0LlMgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEg
ZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9wbGF0L2NvbW1vbi9hcm0vY2FjaGU2NC5TIGIvcGxh
dC9jb21tb24vYXJtL2NhY2hlNjQuUwppbmRleCA5OTYyZDcxLi5iYWRhNDE3IDEwMDY0NAotLS0g
YS9wbGF0L2NvbW1vbi9hcm0vY2FjaGU2NC5TCisrKyBiL3BsYXQvY29tbW9uL2FybS9jYWNoZTY0
LlMKQEAgLTU4LDcgKzU4LDcgQEAgRU5UUlkoY2xlYW5fYW5kX2ludmFsaWRhdGVfZGNhY2hlX3Jh
bmdlKQogMToKICAgICAgICAvKiBjbGVhbiBhbmQgaW52YWxpZGF0ZSBEIGNhY2hlIGJ5IEQgY2Fj
aGUgbGluZSBzaXplICovCiAgICAgICAgZGMgICAgICBjaXZhYywgeDAKLSAgICAgICBkc2IgICAg
IGlzaAorICAgICAgIGRzYiAgICAgbnNoCgogICAgICAgIC8qIE1vdmUgdG8gbmV4dCBsaW5lIGFu
ZCByZWR1Y2UgdGhlIHNpemUgKi8KICAgICAgICBhZGQgICAgIHgwLCB4MCwgeDMKLS0KMi4xNy4x
CgpJTVBPUlRBTlQgTk9USUNFOiBUaGUgY29udGVudHMgb2YgdGhpcyBlbWFpbCBhbmQgYW55IGF0
dGFjaG1lbnRzIGFyZSBjb25maWRlbnRpYWwgYW5kIG1heSBhbHNvIGJlIHByaXZpbGVnZWQuIElm
IHlvdSBhcmUgbm90IHRoZSBpbnRlbmRlZCByZWNpcGllbnQsIHBsZWFzZSBub3RpZnkgdGhlIHNl
bmRlciBpbW1lZGlhdGVseSBhbmQgZG8gbm90IGRpc2Nsb3NlIHRoZSBjb250ZW50cyB0byBhbnkg
b3RoZXIgcGVyc29uLCB1c2UgaXQgZm9yIGFueSBwdXJwb3NlLCBvciBzdG9yZSBvciBjb3B5IHRo
ZSBpbmZvcm1hdGlvbiBpbiBhbnkgbWVkaXVtLiBUaGFuayB5b3UuCgpfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0
Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2pl
Y3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Fri Feb 22 06:22:51 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 22 Feb 2019 06:22:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gx4EV-0001ad-4s; Fri, 22 Feb 2019 06:22:51 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=WrH0=Q5=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1gx4ET-0001a8-NN
 for minios-devel@lists.xenproject.org; Fri, 22 Feb 2019 06:22:49 +0000
X-Inumbo-ID: 45abfeec-366a-11e9-bc90-bc764e045a96
Received: from EUR01-VE1-obe.outbound.protection.outlook.com (unknown
 [2a01:111:f400:fe1f::631])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 45abfeec-366a-11e9-bc90-bc764e045a96;
 Fri, 22 Feb 2019 06:22:48 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; 
 s=selector1-arm-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=p3jQ88MnLhMLFJLYmqgUYIH7m2zYoMxFG4aJ1QxSJMc=;
 b=rkqNRlprNTQjulSUiKLRi7ATaG9whK4NzQ+GxeZNMnMvm/tZnxl1L3zwqYiTkvcsEfxz6OZEshgCfdqCmHf1mXHBgy414u9jDBKMCLG2FMEkImrWpRe1fxATVyWmRc+UGArfOUdrzBY6Krngb9Gzt2foFScqDg1KImoplR8lvUs=
Received: from VI1PR08CA0178.eurprd08.prod.outlook.com (2603:10a6:800:d1::32)
 by AM5PR0802MB2530.eurprd08.prod.outlook.com (2603:10a6:203:a0::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1643.16; Fri, 22 Feb
 2019 06:22:46 +0000
Received: from DB5EUR03FT008.eop-EUR03.prod.protection.outlook.com
 (2a01:111:f400:7e0a::208) by VI1PR08CA0178.outlook.office365.com
 (2603:10a6:800:d1::32) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.1643.16 via Frontend
 Transport; Fri, 22 Feb 2019 06:22:46 +0000
Authentication-Results: spf=pass (sender IP is 40.67.248.234)
 smtp.mailfrom=arm.com; lists.xenproject.org; dkim=none (message not signed)
 header.d=none;lists.xenproject.org; dmarc=bestguesspass action=none
 header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 40.67.248.234 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.67.248.234; helo=nebula.arm.com;
Received: from nebula.arm.com (40.67.248.234) by
 DB5EUR03FT008.mail.protection.outlook.com (10.152.20.98) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id
 15.20.1643.11 via Frontend Transport; Fri, 22 Feb 2019 06:22:46 +0000
Received: from AZ-NEU-EX03.Arm.com (10.251.24.31) by AZ-NEU-EX03.Arm.com
 (10.251.24.31) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1415.2; Fri, 22 Feb
 2019 06:22:39 +0000
Received: from localhost.localdomain (10.169.40.37) by mail.arm.com
 (10.251.24.31) with Microsoft SMTP Server id 15.1.1415.2 via Frontend
 Transport; Fri, 22 Feb 2019 06:22:36 +0000
From: Jia He <justin.he@arm.com>
To: <minios-devel@lists.xenproject.org>, Simon Kuenzer
 <simon.kuenzer@neclab.eu>, <Sharan.Santhanam@neclab.eu>
Date: Fri, 22 Feb 2019 14:21:46 +0800
Message-ID: <20190222062200.26602-10-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190222062200.26602-1-justin.he@arm.com>
References: <20190222062200.26602-1-justin.he@arm.com>
MIME-Version: 1.0
X-EOPAttributedMessage: 0
X-MS-Office365-Filtering-HT: Tenant
X-Forefront-Antispam-Report: CIP:40.67.248.234; IPV:NLI; CTRY:US; EFV:NLI;
 SFV:NSPM;
 SFS:(10009020)(376002)(396003)(39860400002)(346002)(136003)(2980300002)(199004)(189003)(40434004)(186003)(26005)(48376002)(305945005)(50466002)(106002)(50226002)(47776003)(77096007)(6666004)(356004)(36756003)(1076003)(2906002)(86362001)(68736007)(53936002)(8936002)(49486002)(5024004)(14444005)(5660300002)(4326008)(336012)(72206003)(54906003)(316002)(51416003)(478600001)(11346002)(8746002)(426003)(446003)(2616005)(81156014)(97736004)(76176011)(81166006)(126002)(8676002)(106466001)(486006)(476003)(110136005);
 DIR:OUT; SFP:1101; SCL:1; SRVR:AM5PR0802MB2530; H:nebula.arm.com; FPR:;
 SPF:Pass; LANG:en; PTR:InfoDomainNonexistent; A:1; MX:1; 
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id: eb985e5e-eb24-4092-fdf4-08d6988e2926
X-Microsoft-Antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(8989299)(5600110)(711020)(4605104)(4608103)(4709054)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060);
 SRVR:AM5PR0802MB2530; 
X-MS-TrafficTypeDiagnostic: AM5PR0802MB2530:
X-Microsoft-Exchange-Diagnostics: 1; AM5PR0802MB2530;
 20:Juumio4k0+CKY2om8oUaBXD3u+CZ7HM0BLCdDv0248136uCXpzstt3F1pXDmYJ09RFq4trwjGYBtsx9jO/ILzWG/97H3Bxx1pmuTs+FPTxUjzs4CwC2Dt83aIE1WjXp/AXjNmedvM9zMJCa0jhYxykuJRzG+pSSKqWp5MIctvphEl1Dq0iuv6sa7/I4m4cdq4wcz4Jtl7CKhOF37BfsPMFtlz8bipwEwNx5+SjMgxEJC8HEkoLGTR+uP1/WyfKJoHZj8hRmxX5YtfOIFqJEB9BZGXvwT04jTv8Pf8pA6glpiEX8pBXjbFbRNrVz6oELfskZj/uddFfDeH/eBjrkuPZ0XOkD0CfTpmjar3a03oVKQsLqwWm0HpUW99SmMuTjec8VO3EMf2IjOMwk7n9IG2nszqp1bNHiiaSwdATvdskYW1YPmAfVLfSXHndiL1vKbZ0k/JtlAV2Ik3f6Y/OGoGc9YpAGHoLDgLjnpsrlc9uvUyWifrJnLtMCzA6/okj3S
X-Microsoft-Antispam-PRVS: <AM5PR0802MB2530681BA91B9B1B786B774BF77F0@AM5PR0802MB2530.eurprd08.prod.outlook.com>
X-Forefront-PRVS: 09565527D6
X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; AM5PR0802MB2530;
 23:lJu45LNJHdyjl6hcZXnPM2fWiK1eiDUB9htb1hd?=
 =?us-ascii?Q?JjYh/yVAmSvr6BG1HyiHpirHwo8Pr2Blrfy1tRPUrw6K8z9iMrXloo/meBYI?=
 =?us-ascii?Q?gDp/gTjJYMOnCDA5cHE2hzYBLEzvmUx7mq/5gUh6uXopCwg62ia7d6j/BbwP?=
 =?us-ascii?Q?bfgtv2iJis0P2StLpFkq00uQxYWeGJ5P6piRhHjALXGjrMuqpqlrgNCIS1Jv?=
 =?us-ascii?Q?kYQNNWtFIS2hpaZ+2Ql4/scIELc9L2B1DbBg7pNMRSfLcHmAsoBOou50zM2L?=
 =?us-ascii?Q?awDozgxI22JtF56LSCPGN/h10WQg1Dyik/DyTkN076MfbrXE3Y60UHE9K5kk?=
 =?us-ascii?Q?wEEQy5peF80G01ubvad29Ch4bIDykbzPNFzsg9cfPPDn+LiPRgBChHXDXc4A?=
 =?us-ascii?Q?8JzXTUddJ5uE+U+oFnAViuXwL/m4c0aTiwbOUtKq9CZ0GdjvUeoYT6ZgCm8Z?=
 =?us-ascii?Q?em0KJ6oQi6MBZth2qn1qqGR7JQk24F9jsacmbSZmqkVZBTCLfZfI7no2pzbk?=
 =?us-ascii?Q?Bng5nGMVwf2ZEuEJOdLvRC8lIhEeq3CztlXs+B69xBPL/Znz2dVUNBFWyCPz?=
 =?us-ascii?Q?Z848qnPdocLPTPyT3pca6KlvXd7xZO5B2niA5JYMgU+NBjJbyD2aW4bJQEmM?=
 =?us-ascii?Q?MDn47/wQwXuHpDo5tfsVIVMhW1uA+PwSaQKPIaheSklEePUlo6wsFLsuiJ0p?=
 =?us-ascii?Q?XudtiFZvhxOW0ErHGKahDPqwX6ncoLc0tXVlarAVx3yKsALyyS/uK/QSLhfk?=
 =?us-ascii?Q?JCXml607zV3jkU9rMxdlENkLUzpWz7KM/S7rTU0sP+kHmxxYQ/RhzbFtoUtX?=
 =?us-ascii?Q?GK5WbYOJj02Oott2gJLDLsSZDOkXtjNuusnCBw+3k9pTLwppe0x1L7eHcvB7?=
 =?us-ascii?Q?jRgSzTGP8ISVfb2Rd3P096vxsYjd0ss5RLiF+541mIRWhJJFKrfuqc6ZkKdJ?=
 =?us-ascii?Q?krAebhnEHC2IVp24jF0aTZAq7DBcIsq+qmwnSCaPTCUhAqX6QWa9zwhk2uAz?=
 =?us-ascii?Q?cKE+k3IG2QsRnA274CAKQhpG2M9BFjqnQx6D+HakbrwGHO4Mni3xKvIC9sP1?=
 =?us-ascii?Q?Lig58pKBRxsDvl1sFHIwqszZZ9KeZMasmhRXZenD2vY5baz907TnH2z6nTXO?=
 =?us-ascii?Q?3Te92fP3U4iEVsQhlG/5QBuZ7SmrBB0YRB8t9OXEogOIEjNl6M2l9XjNWgvl?=
 =?us-ascii?Q?z6HaGTNDAY5WMeXI=3D?=
X-MS-Exchange-SenderADCheck: 1
X-Microsoft-Antispam-Message-Info: Rx9+y2+9gQ7jKw5wRAvolMJoy5yC5q+0E/HqGv5b8hk66u7cJrN/lx9DR57bIiCsyUNux566e1HGYk+wYCSlE7yzqQJefHrgUdkChrEGeaNDEJeu3NkyeLBbdRwrRVbVNVs2/XW0arQ8wBbMXW21zTmkLfPrHmMss/C8wUzJ/+G7qoLm+m0LKSF1ZjNINCn2Wc8AK7XuctWyNwvg0bVNgKZIfjhmEttksTDkIseO5hicocgpaePn9aylMncItf5gGK4oCr7NA9QKWZBArgMqz/SjnFW5/jSNyNbfCpduZkk7+4eGnQdbWm+jv3ZAQ9D6/RHHYUz42zurPNvUNSC2NmGWe6tR4qkkrRBcap1ATCYhgC6IFDLmqzziyKW95pzlbO/K9x/C1LzI88UnvGJVpbXL64oi7ef4oxtHqmF0/Yc=
X-Microsoft-Exchange-Diagnostics: 1; AM5PR0802MB2530;
 20:kaWo39zCgQUsX6mvmueSYGbMJLMlNleBc0njoKhq+oZoblweOTk9mSX3rO6Uf80V57eWJNTZQ1I+lYT6luX74oBHVRsclNBWHOmB21Xr5crUm6KDrs1bKZ7LfTtYJIS0AqbOarJwWpHikeV72eBHFOpMQudPYppvViyN0fo9YS4=
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Feb 2019 06:22:46.2572 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: eb985e5e-eb24-4092-fdf4-08d6988e2926
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[40.67.248.234];
 Helo=[nebula.arm.com]
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0802MB2530
Subject: [Minios-devel] [UNIKRAFT PATCHv6 09/23] plat/kvm: Correct invalid
 indent character for Arm64
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>, Jia He <justin.he@arm.com>,
 Wei Chen <wei.chen@arm.com>, Kaly Xin <Kaly.Xin@arm.com>,
 Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

RnJvbTogV2VpIENoZW4gPHdlaS5jaGVuQGFybS5jb20+ClVzaW5nIHRhYiB0byByZXBsYWNlIHNw
YWNlcyBmb3IgdGhlIGluZGVudCBiZWZvcmUgdWtwbGF0X2VudHJ5X2FyZ3AuCgpTaWduZWQtb2Zm
LWJ5OiBXZWkgQ2hlbiA8d2VpLmNoZW5AYXJtLmNvbT4KU2lnbmVkLW9mZi1ieTogSmlhIEhlIDxq
dXN0aW4uaGVAYXJtLmNvbT4KUmV2aWV3ZWQtYnk6IFNoYXJhbiBTYW50aGFuYW0gPHNoYXJhbi5z
YW50aGFuYW1AbmVjbGFiLmV1PgotLS0KIHBsYXQva3ZtL2FybS9zZXR1cC5jIHwgMiArLQogMSBm
aWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEv
cGxhdC9rdm0vYXJtL3NldHVwLmMgYi9wbGF0L2t2bS9hcm0vc2V0dXAuYwppbmRleCAxODYyMTE4
Li5iN2I4MWFjIDEwMDY0NAotLS0gYS9wbGF0L2t2bS9hcm0vc2V0dXAuYworKysgYi9wbGF0L2t2
bS9hcm0vc2V0dXAuYwpAQCAtMTgxLDcgKzE4MSw3IEBAIGVub2NtZGw6Cgogc3RhdGljIHZvaWQg
X2xpYmt2bXBsYXRfZW50cnkyKHZvaWQgKmFyZyBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSkKIHsK
LSAgICAgICB1a3BsYXRfZW50cnlfYXJncChOVUxMLCAoY2hhciAqKWNtZGxpbmUsIHN0cmxlbihj
bWRsaW5lKSk7CisgICAgICAgdWtwbGF0X2VudHJ5X2FyZ3AoTlVMTCwgKGNoYXIgKiljbWRsaW5l
LCBzdHJsZW4oY21kbGluZSkpOwogfQoKIHZvaWQgX2xpYmt2bXBsYXRfc3RhcnQodm9pZCAqZHRi
X3BvaW50ZXIpCi0tCjIuMTcuMQoKSU1QT1JUQU5UIE5PVElDRTogVGhlIGNvbnRlbnRzIG9mIHRo
aXMgZW1haWwgYW5kIGFueSBhdHRhY2htZW50cyBhcmUgY29uZmlkZW50aWFsIGFuZCBtYXkgYWxz
byBiZSBwcml2aWxlZ2VkLiBJZiB5b3UgYXJlIG5vdCB0aGUgaW50ZW5kZWQgcmVjaXBpZW50LCBw
bGVhc2Ugbm90aWZ5IHRoZSBzZW5kZXIgaW1tZWRpYXRlbHkgYW5kIGRvIG5vdCBkaXNjbG9zZSB0
aGUgY29udGVudHMgdG8gYW55IG90aGVyIHBlcnNvbiwgdXNlIGl0IGZvciBhbnkgcHVycG9zZSwg
b3Igc3RvcmUgb3IgY29weSB0aGUgaW5mb3JtYXRpb24gaW4gYW55IG1lZGl1bS4gVGhhbmsgeW91
LgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9z
LWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0
cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Fri Feb 22 06:22:53 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 22 Feb 2019 06:22:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gx4EX-0001bT-6U; Fri, 22 Feb 2019 06:22:53 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=WrH0=Q5=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1gx4EV-0001b5-TV
 for minios-devel@lists.xenproject.org; Fri, 22 Feb 2019 06:22:51 +0000
X-Inumbo-ID: 471196ac-366a-11e9-bc90-bc764e045a96
Received: from EUR02-AM5-obe.outbound.protection.outlook.com (unknown
 [40.107.0.73]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 471196ac-366a-11e9-bc90-bc764e045a96;
 Fri, 22 Feb 2019 06:22:50 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; 
 s=selector1-arm-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=spFg/m1GYIw50+lcSwUbVJmiArl4FeIeOM+pwag72h8=;
 b=sCu6aVDupb2oFYspINmHFjwIWM/zFUmPG7cBwWI2Xem50OBuZqwR3yuV8rjSTUfiBIeJyh7uavDy5FkvOVLRv5SmY9li22pytBWQ97UrpBaISWOPiprKR0dmw34bNt0m3y5IpeTWEDCKaXBHMx32ZyFtvBxUIgk1puzX1Uu0CAA=
Received: from VI1PR08CA0212.eurprd08.prod.outlook.com (2603:10a6:802:15::21)
 by DB6PR0802MB2535.eurprd08.prod.outlook.com (2603:10a6:4:a1::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1643.18; Fri, 22 Feb
 2019 06:22:30 +0000
Received: from DB5EUR03FT006.eop-EUR03.prod.protection.outlook.com
 (2a01:111:f400:7e0a::206) by VI1PR08CA0212.outlook.office365.com
 (2603:10a6:802:15::21) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1643.16 via Frontend
 Transport; Fri, 22 Feb 2019 06:22:29 +0000
Authentication-Results: spf=pass (sender IP is 40.67.248.234)
 smtp.mailfrom=arm.com; lists.xenproject.org; dkim=none (message not signed)
 header.d=none;lists.xenproject.org; dmarc=bestguesspass action=none
 header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 40.67.248.234 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.67.248.234; helo=nebula.arm.com;
Received: from nebula.arm.com (40.67.248.234) by
 DB5EUR03FT006.mail.protection.outlook.com (10.152.20.106) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.1643.11 via Frontend Transport; Fri, 22 Feb 2019 06:22:29 +0000
Received: from AZ-NEU-EX01.Emea.Arm.com (10.251.26.4) by AZ-NEU-EX03.Arm.com
 (10.251.24.31) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.1415.2; Fri, 22 Feb
 2019 06:22:18 +0000
Received: from AZ-NEU-EX03.Arm.com (10.251.24.31) by AZ-NEU-EX01.Emea.Arm.com
 (10.251.26.4) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1415.2; Fri, 22
 Feb 2019 06:22:18 +0000
Received: from localhost.localdomain (10.169.40.37) by mail.arm.com
 (10.251.24.31) with Microsoft SMTP Server id 15.1.1415.2 via Frontend
 Transport; Fri, 22 Feb 2019 06:22:15 +0000
From: Jia He <justin.he@arm.com>
To: <minios-devel@lists.xenproject.org>, Simon Kuenzer
 <simon.kuenzer@neclab.eu>, <Sharan.Santhanam@neclab.eu>
Date: Fri, 22 Feb 2019 14:21:40 +0800
Message-ID: <20190222062200.26602-4-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190222062200.26602-1-justin.he@arm.com>
References: <20190222062200.26602-1-justin.he@arm.com>
MIME-Version: 1.0
X-EOPAttributedMessage: 0
X-MS-Office365-Filtering-HT: Tenant
X-Forefront-Antispam-Report: CIP:40.67.248.234; IPV:NLI; CTRY:US; EFV:NLI;
 SFV:NSPM;
 SFS:(10009020)(396003)(376002)(346002)(136003)(39860400002)(2980300002)(40434004)(189003)(199004)(97736004)(26005)(305945005)(72206003)(51416003)(76176011)(68736007)(50466002)(48376002)(36756003)(106002)(53936002)(49486002)(478600001)(6666004)(356004)(77096007)(5660300002)(186003)(336012)(81156014)(316002)(110136005)(81166006)(5024004)(8936002)(47776003)(486006)(54906003)(8746002)(14444005)(50226002)(1076003)(86362001)(4326008)(2906002)(11346002)(446003)(2616005)(126002)(106466001)(476003)(8676002)(426003);
 DIR:OUT; SFP:1101; SCL:1; SRVR:DB6PR0802MB2535; H:nebula.arm.com; FPR:;
 SPF:Pass; LANG:en; PTR:InfoDomainNonexistent; MX:1; A:1; 
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id: 4c0fdbf5-50c2-4b00-40a8-08d6988e1f02
X-Microsoft-Antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(8989299)(5600110)(711020)(4605104)(4608103)(4709054)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060);
 SRVR:DB6PR0802MB2535; 
X-MS-TrafficTypeDiagnostic: DB6PR0802MB2535:
X-Microsoft-Exchange-Diagnostics: 1; DB6PR0802MB2535;
 20:UuB77VeDAqg9OPY4PvKfVvSLBQ66+1HkRp/p+EamwZ78rrECNG9bhv5dM2e+o05Vn7IVwXioXhbXTC318FcpWqo2YtgWmR+eV/tLSOMFc3KlqnadHW+CJb8R9fHHDDuGHRHaB0xVRINfyPv/wIWux35G7f1zDuy3BBgb4li2dQB6ynC/iH+y+MglZHpAXg/KyS3uQiZ3Qlx9BBs1eNfw5VJYkZ5tRttShXIg/rxTBrrTVrDk3oJGbfSq4yMQ+8ZbuB0sYny8PqIJXKbA13MWGiQzzCM8XC51MbsBupGSVWdRXtRd3dBilTTK+6zzS8cjIshRvyqfigru3OgBi8+lXjq/hA4V9MLlzLjnKIjodjMozWkAtd2RxMTM4/Fg8un0Wb7yF9Tw9muUPnB7LDihXc5mct3J9jTZHxBEs31vVfHSGAdGi2mf8gXWdbx/+yP6Y84nASnJ0Vzt8KoRKdKBM43g0vSWmx/r/Mh1oJr5m0jgDIwfhgEjA8LaivodfG4o
X-Microsoft-Antispam-PRVS: <DB6PR0802MB2535EF42FDD6B94C95DE7B1DF77F0@DB6PR0802MB2535.eurprd08.prod.outlook.com>
X-Forefront-PRVS: 09565527D6
X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB6PR0802MB2535;
 23:68rpnU2kYNCTNdX6DYH4K6FoxMVCHgTj+ejlWku?=
 =?us-ascii?Q?lWDpGm0agEHlizV2c0pzULP69uejzdR16JT8iIJvv30GAPdnwh1TEpD4bQxZ?=
 =?us-ascii?Q?K1ydmuxoK+8GkTEPVELoN0bpp46DNol303NpRPo1dUGKpIXMjFmMe+Cp82xn?=
 =?us-ascii?Q?rwzR5fDBzQc+5OLURfWA63PY7XaEFQvuLsPtyCnL8mZf8XU6UsTufhfa0/PF?=
 =?us-ascii?Q?ZA8c95UnskROWN7LHLewiK/I88ZbH/hPvNdOZSS2/dCpSLSUPdel0WsXLc9E?=
 =?us-ascii?Q?QBqyeJk+qGY5AC7zA/U8P4LgaHAczJEwRpuzB4nKbb/wqXMlsGmM7mAZGuuJ?=
 =?us-ascii?Q?3lkZaq/cSpR5BprDAeqkcy7mok8vYfGB5N6D7/7oQCluhqAvMzVh2c2I3Rdp?=
 =?us-ascii?Q?qfHzsfLapmF+/94m4/M/w7ucnyB3bxXrZDlUOg+ABHt7+4+lT87QAG9eOA/x?=
 =?us-ascii?Q?knDJ+cTaL0EQoWa4mZBFcvrEsMm99GJylAOPJm3pK0jg2JKMDbOZ/5uxZQjA?=
 =?us-ascii?Q?Yfw4zfHh6meQDPdmHXHKn3OtsMwAdl6QgGWHyCVk3SBiT0Wzk7gTWcdUB1AI?=
 =?us-ascii?Q?Hn2EnZxyQh0RQkceNtrN94puCFei5Mfmag8Y0N2r3icbv0s4qsLG36SGO+7+?=
 =?us-ascii?Q?u019OdsTAk1h9aY1hMj9GOztJOSuDsRm5zTAxzhXtZiNLRZ4tveGjHwUIRL0?=
 =?us-ascii?Q?DhEvSB6hfwe5LHPoRzj8WwFIM7+P3OSJNfwb4mi/QwnstkqhUYbxnzejgZ1H?=
 =?us-ascii?Q?Dunwzpw70Bi8Rg2FpkVUIqOI7VITmv0urPrkLHya6jaedJQd7vcvyK8ZRWW2?=
 =?us-ascii?Q?Oypx4Z1+9GZtCP1Yixvi8INUvuerWsceUZM552p7+Mx6F2qq/Az8Wmum+HDw?=
 =?us-ascii?Q?DFclw0BvZ572woWrPls9Oq0y3EL9LnLnxcEjqhOpmAshFfVBNlejWOsBjNci?=
 =?us-ascii?Q?tuVLArW6N8kG+s3HheHxFmrPecTiBZx3sXqonMXFhG53KCsrhlbDYjPYRq5x?=
 =?us-ascii?Q?x13zvgYTBK4H1trIdbdBhQAkHRjkeFhvUtk0UBVBTJQwLvAAlYwp2vTumdba?=
 =?us-ascii?Q?/2VZ/PRIZZlnOZoz8UaVc5vyNrEBOiGgZZesJNGDgMwvmtu4I8Zd1EozfB8K?=
 =?us-ascii?Q?domNGlC+Hl5FjfEfNg5h5XB1UEtLOG9PkCnzROJAHVR4MC/Quol8uXWmr3+x?=
 =?us-ascii?Q?7V4/7XEsx6Xt1tPQ=3D?=
X-MS-Exchange-SenderADCheck: 1
X-Microsoft-Antispam-Message-Info: OHLkHBEQuvLfv5xtkwumKBOnwk6g3gmDkULPiawNJ90onKjkKmknMhvvekyE8f3oiiyq9wNAjWBiHu71sH83zDww8dITF6oz2ra+sYUZPqODHQejq+ZgtKn6nrJDWuyOs28q7XJTW6UZtL/UhWb+EgUDtYfXU3JHD0wFhrB44Y4naWdLahCLSBTH+o3evRQ0Py9Nivlb+fP8+NZ7A3BYtjpZNcQ7TPohFRG90kH32/eZ6AEozKraJNxkScS9qMaa6RDii30ZBfADN9orhHeZ258JkTp4B7FCkGhUrYsKvfCIGJSx5n36Wrjl2WTvSgEdUt/g/PCccyfeXh/EmC+VfQ2Mf5GMhiZtntJdI2IiYMuugIpq0OHXePINTS0e3PHL/D58PbE+mfY/3Wz2pL7Pz7jUgAIP09YSnYOcVoAaSSc=
X-Microsoft-Exchange-Diagnostics: 1; DB6PR0802MB2535;
 20:VtSa+41yVVDEi3tbM+mE6aPZM+SmL8YIItB3rEXvhm79YBxtnbMTRe5ra/cBnA8IInKH45dN9L2wScAt6pYrDN7s3WETpaIXS/zC38T9HcVwOXyvyLvZJMlY9KTlBhySUhLWQWm8A6g1MnYMoH0496B7e6JzqbVPLewYfDrvwo8=
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Feb 2019 06:22:29.2403 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 4c0fdbf5-50c2-4b00-40a8-08d6988e1f02
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[40.67.248.234];
 Helo=[nebula.arm.com]
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0802MB2535
Subject: [Minios-devel] [UNIKRAFT PATCHv6 03/23] plat/common: Move global
 variables defined in link scripts to a header
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>, Jia He <justin.he@arm.com>,
 Wei Chen <wei.chen@arm.com>, Kaly Xin <Kaly.Xin@arm.com>,
 Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

RnJvbTogV2VpIENoZW4gPHdlaS5jaGVuQGFybS5jb20+ClRoZSBnbG9iYWwgdmFyaWFibGVzIGRl
ZmluZWQgaW4gbGluayBzY3JpcHRzIGxpa2UgX3RleHQsIF9ldGV4dCBhbmQgX2VuZAphcmUgZGVj
bGFyZWQgaW4gbXVsdGlwbGUgZmlsZXMuIFdlIHVzZSBhIGhlYWRlciB0byBpbmNsdWRlIHRoZXNl
IGdsb2JhbAp2YXJpYWJsZXMgdG8gYXZvaWQgc28gbWFueSBkdXBsaWNhdGVkIGRlY2xhcmF0aW9u
cy4KClNpZ25lZC1vZmYtYnk6IFdlaSBDaGVuIDx3ZWkuY2hlbkBhcm0uY29tPgpTaWduZWQtb2Zm
LWJ5OiBKaWEgSGUgPGp1c3Rpbi5oZUBhcm0uY29tPgpSZXZpZXdlZC1ieTogU2hhcmFuIFNhbnRo
YW5hbSA8c2hhcmFuLnNhbnRoYW5hbUBuZWNsYWIuZXU+Ci0tLQogcGxhdC9jb21tb24vaW5jbHVk
ZS9zZWN0aW9ucy5oIHwgNjUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMSBm
aWxlIGNoYW5nZWQsIDY1IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBwbGF0L2Nv
bW1vbi9pbmNsdWRlL3NlY3Rpb25zLmgKCmRpZmYgLS1naXQgYS9wbGF0L2NvbW1vbi9pbmNsdWRl
L3NlY3Rpb25zLmggYi9wbGF0L2NvbW1vbi9pbmNsdWRlL3NlY3Rpb25zLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDJmNDFkMgotLS0gL2Rldi9udWxsCisrKyBiL3BsYXQv
Y29tbW9uL2luY2x1ZGUvc2VjdGlvbnMuaApAQCAtMCwwICsxLDY1IEBACisvKiBTUERYLUxpY2Vu
c2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCisvKgorICogQXV0aG9yczogV2VpIENoZW4g
PHdlaS5jaGVuQGFybS5jb20+CisgKgorICogQ29weXJpZ2h0IChjKSAyMDE4LCBBcm0gTHRkLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUg
b2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqICAgIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiAgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgorICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFD
VEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCisgKi8KKworI2lmbmRlZiBfX1BMQVRfQ01OX1NF
Q1RJT05TX0hfXworI2RlZmluZSBfX1BMQVRfQ01OX1NFQ1RJT05TX0hfXworCisvKgorICogRm9s
bG93aW5nIGdsb2JhbCB2YXJpYWJsZXMgYXJlIGRlZmluZWQgaW4gaW1hZ2UgbGluayBzY3JpcHRz
LCBhbmQgc29tZQorICogdmFyaWFibGVzIGFyZSBvcHRpb25hbCBhbmQgbWF5IGJlIHVuYXZhaWxh
YmxlIG9uIHNvbWUgYXJjaGl0ZWN0dXJlcworICogb3IgY29uZmlndXJhdGlvbnMuCisgKi8KKwor
LyogX2R0Yjogc3RhcnQgb2YgZGV2aWNlIHRyZWUgKi8KK2V4dGVybiBjaGFyIF9kdGJbXTsKKwor
LyogW190ZXh0LCBfZXRleHRdOiBjb250YWlucyAudGV4dC4qIHNlY3Rpb25zICovCitleHRlcm4g
Y2hhciBfdGV4dFtdLCBfZXRleHRbXTsKKworLyogW19yb2RhdGEsIF9lcm9kYXRhXTogY29udGFp
bnMgLnJvZGF0YS4qIHNlY3Rpb25zICovCitleHRlcm4gY2hhciBfcm9kYXRhW10sIF9lcm9kYXRh
W107CisKKy8qIFtfZGF0YSwgX2VkYXRhXTogY29udGFpbnMgLmRhdGEuKiBzZWN0aW9ucyAqLwor
ZXh0ZXJuIGNoYXIgX2RhdGFbXSwgX2VkYXRhW107CisKKy8qIFtfY3RvcnMsIF9lY3RvcnNdOiBj
b250YWlucyBjb25zdHJ1Y3RvciB0YWJsZXMgKHJlYWQtb25seSkgKi8KK2V4dGVybiBjaGFyIF9j
dG9yc1tdLCBfZWN0b3JzW107CisKKy8qIF9fYnNzX3N0YXJ0OiBzdGFydCBvZiBCU1Mgc2VjdGlv
bnMgKi8KK2V4dGVybiBjaGFyIF9fYnNzX3N0YXJ0W107CisKKy8qIF9lbmQ6IGVuZCBvZiBrZXJu
ZWwgaW1hZ2UgKi8KK2V4dGVybiBjaGFyIF9lbmRbXTsKKworI2VuZGlmIC8qIF9fUExBVF9DTU5f
U0VDVElPTlNfSF9fICovCi0tCjIuMTcuMQoKSU1QT1JUQU5UIE5PVElDRTogVGhlIGNvbnRlbnRz
IG9mIHRoaXMgZW1haWwgYW5kIGFueSBhdHRhY2htZW50cyBhcmUgY29uZmlkZW50aWFsIGFuZCBt
YXkgYWxzbyBiZSBwcml2aWxlZ2VkLiBJZiB5b3UgYXJlIG5vdCB0aGUgaW50ZW5kZWQgcmVjaXBp
ZW50LCBwbGVhc2Ugbm90aWZ5IHRoZSBzZW5kZXIgaW1tZWRpYXRlbHkgYW5kIGRvIG5vdCBkaXNj
bG9zZSB0aGUgY29udGVudHMgdG8gYW55IG90aGVyIHBlcnNvbiwgdXNlIGl0IGZvciBhbnkgcHVy
cG9zZSwgb3Igc3RvcmUgb3IgY29weSB0aGUgaW5mb3JtYXRpb24gaW4gYW55IG1lZGl1bS4gVGhh
bmsgeW91LgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
TWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5v
cmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1k
ZXZlbA==

From minios-devel-bounces@lists.xenproject.org Fri Feb 22 06:22:56 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 22 Feb 2019 06:22:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gx4Ea-0001cv-8U; Fri, 22 Feb 2019 06:22:56 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=WrH0=Q5=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1gx4EY-0001c5-3G
 for minios-devel@lists.xenproject.org; Fri, 22 Feb 2019 06:22:54 +0000
X-Inumbo-ID: 47f7c3c6-366a-11e9-bc90-bc764e045a96
Received: from EUR03-VE1-obe.outbound.protection.outlook.com (unknown
 [40.107.5.41]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 47f7c3c6-366a-11e9-bc90-bc764e045a96;
 Fri, 22 Feb 2019 06:22:52 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; 
 s=selector1-arm-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=S3QvyKrR/y6StsOt629DlajQDFyuQ2lwHGlNUvnsKA0=;
 b=JWotv0yt9BJBcv2K15zkt62Bm7A52/5DE2GQHqpFZ67AJKxknNY93kH4sp1q7X9jm4E4TSvbXdtBSxnsqE6NTk1M/3lgEkggzpb5TQGDbxtlgLCy3nDzyPthjxZwjgIEYdZwFsmHIWN2rRvSR7wCsb5tEqOhPhns4K18Y7f9A9o=
Received: from VI1PR08CA0178.eurprd08.prod.outlook.com (2603:10a6:800:d1::32)
 by VI1PR0802MB2542.eurprd08.prod.outlook.com (2603:10a6:800:b0::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1643.14; Fri, 22 Feb
 2019 06:22:49 +0000
Received: from DB5EUR03FT008.eop-EUR03.prod.protection.outlook.com
 (2a01:111:f400:7e0a::208) by VI1PR08CA0178.outlook.office365.com
 (2603:10a6:800:d1::32) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.1643.16 via Frontend
 Transport; Fri, 22 Feb 2019 06:22:49 +0000
Authentication-Results: spf=pass (sender IP is 40.67.248.234)
 smtp.mailfrom=arm.com; lists.xenproject.org; dkim=none (message not signed)
 header.d=none;lists.xenproject.org; dmarc=bestguesspass action=none
 header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 40.67.248.234 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.67.248.234; helo=nebula.arm.com;
Received: from nebula.arm.com (40.67.248.234) by
 DB5EUR03FT008.mail.protection.outlook.com (10.152.20.98) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id
 15.20.1643.11 via Frontend Transport; Fri, 22 Feb 2019 06:22:49 +0000
Received: from AZ-NEU-EX01.Emea.Arm.com (10.251.26.4) by AZ-NEU-EX03.Arm.com
 (10.251.24.31) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.1415.2; Fri, 22 Feb
 2019 06:22:43 +0000
Received: from AZ-NEU-EX03.Arm.com (10.251.24.31) by AZ-NEU-EX01.Emea.Arm.com
 (10.251.26.4) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1415.2; Fri, 22
 Feb 2019 06:22:42 +0000
Received: from localhost.localdomain (10.169.40.37) by mail.arm.com
 (10.251.24.31) with Microsoft SMTP Server id 15.1.1415.2 via Frontend
 Transport; Fri, 22 Feb 2019 06:22:40 +0000
From: Jia He <justin.he@arm.com>
To: <minios-devel@lists.xenproject.org>, Simon Kuenzer
 <simon.kuenzer@neclab.eu>, <Sharan.Santhanam@neclab.eu>
Date: Fri, 22 Feb 2019 14:21:47 +0800
Message-ID: <20190222062200.26602-11-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190222062200.26602-1-justin.he@arm.com>
References: <20190222062200.26602-1-justin.he@arm.com>
MIME-Version: 1.0
X-EOPAttributedMessage: 0
X-MS-Office365-Filtering-HT: Tenant
X-Forefront-Antispam-Report: CIP:40.67.248.234; IPV:NLI; CTRY:US; EFV:NLI;
 SFV:NSPM;
 SFS:(10009020)(376002)(346002)(39860400002)(396003)(136003)(2980300002)(199004)(189003)(40434004)(1076003)(49486002)(8936002)(8746002)(97736004)(5660300002)(356004)(305945005)(51416003)(50466002)(81166006)(11346002)(81156014)(48376002)(426003)(26005)(336012)(77096007)(2616005)(76176011)(14444005)(5024004)(476003)(106002)(86362001)(8676002)(486006)(36756003)(446003)(126002)(186003)(54906003)(106466001)(53936002)(110136005)(316002)(478600001)(50226002)(68736007)(2906002)(47776003)(4326008)(72206003);
 DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR0802MB2542; H:nebula.arm.com; FPR:;
 SPF:Pass; LANG:en; PTR:InfoDomainNonexistent; A:1; MX:1; 
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id: 336ca2ab-2c98-4784-6f5b-08d6988e2b05
X-Microsoft-Antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600110)(711020)(4605104)(4608103)(4709054)(2017052603328)(7153060);
 SRVR:VI1PR0802MB2542; 
X-MS-TrafficTypeDiagnostic: VI1PR0802MB2542:
X-Microsoft-Exchange-Diagnostics: 1; VI1PR0802MB2542;
 20:ExTsPWXvVKvPdat2D4Z+Wk1K8u1y4An138VEg7l81GbJPJcu9WtQTPlTldNMQB/sYdrrOUGOOrDxlo0ZsBdPu+tKUO7a3iQZ71LpgVtfKzLXh8CKssMqs/w7PLvkS1tZfkbzs3VdVDu+SE4k00hz1yXpoa8sCtOy77VjBPLYcsoUu6xw3CAy7yFiB5xKJEWnsPxBiWgNjl84s9+WiLgydZh/A2+uY1f20zekB7zyMCaZCVFLYj/YPao7vdYwygp9wdB249UF4xw2E5EvipFbzAjwXwLof378H4IAbg36E0wosT23VsxtPkGDTE3JUbplorUv3XW8dJI+AriVMxiR3/Dnl2L6FX83aSPm5MTL0+pWMtk6B6uayd0qZk9JcBbE4WMg1JTejMzLslMJRZQXY2R4usAqsV9jTnM9P2iRRndyoFTtUQ6UurrI7RuGCV7Tcg+jC5wnpkwpq3fOrT5M7OM0MmOTLX55Ggo9SICLtP/gOuqVYsNh9xEx/AI94BOM
X-Microsoft-Antispam-PRVS: <VI1PR0802MB2542A3E31B799E594D188EC9F77F0@VI1PR0802MB2542.eurprd08.prod.outlook.com>
X-Forefront-PRVS: 09565527D6
X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0802MB2542;
 23:epHYG7hihsiv/VU161lVOen1mp0jm2uusZyAEor?=
 =?us-ascii?Q?gTvoJjzqON/5papv4ymSPqmUhqAGOY2gIBLDUEDmPK0qLZ+25nZQ+VlzSmdz?=
 =?us-ascii?Q?eR138NnaPBe9mzPDChmYBYW63Ew4SdcccuzB4aCACFwZd/YP42YzmpgeHfIb?=
 =?us-ascii?Q?L/OqDIfHREAmOZLI6vv7LdWsJ1t+PvlrzpI3u9a7OMVzK2nBh1XBfYuIxku1?=
 =?us-ascii?Q?FAHwMWHXpHC0UCBjIpivoo01Z+BZhe1hi/be6gdfn86ab6llMJJdkaMJZ/Ka?=
 =?us-ascii?Q?vyPsSbCSxL02vQgyN656z+hZpXoUaawXsy/st6szpb2BN9L3E60oE5QyNlEu?=
 =?us-ascii?Q?tbIKOn8x9Ey2v9cHKM0fimWPVb5pBc+fBBoNDQoFfKGS76RI1JNlpoOxwb6u?=
 =?us-ascii?Q?PuF+69pdBWYAGiuom2UwwzBG/NFpGEPYRfu83wx5wXjTQYfmEbuLYR7nOHzB?=
 =?us-ascii?Q?6ANn0pFF7/nBRrK9khOeZprDChKHFe0T/OzqhvCuSCBOrlb3qUByQJ/ci2nv?=
 =?us-ascii?Q?GZ4V11ekwTfdS8gfdiCmRCdid1cSMKmjZ721mv6ab/V8DIWYfxVyZcJMOoMK?=
 =?us-ascii?Q?EdohDOS8xGW1gcLSBp51CKIfFqodBJf3D8xQFgkqCeQLZnEks6JcOFbopnG/?=
 =?us-ascii?Q?l4CD6sx+2lZzc3HRHyY6k4lbrWxh/7+gft2F4MmzltauKlGHbmBJot8R9Cz9?=
 =?us-ascii?Q?RT3256co17/klYWxOvlZ948ISIeGlY09yn1CvV0W1oC0vxIHk2nqiCH5G3t9?=
 =?us-ascii?Q?iSX4xz0ZJynZlHeFJ0LYwovClMeMydQk6rkqfPpVznvfIV6uRt1GY+x+0Wzp?=
 =?us-ascii?Q?jey9GSwerdZHJlcDHegAmcWTgYg4mw2xlp1IvBqeHVj82AdjXceIktwFjArQ?=
 =?us-ascii?Q?lK0p3tY1eUMPLPxsuux7xXCLo93MAVySZjl7CrtSN0wDYXHQLsb9QhIKNJBs?=
 =?us-ascii?Q?aZTwNoFw7/twIsWF7zU1j6wTan2Ipd/amJZ6byVbMPXzOBAaCmlH1sgtRE4P?=
 =?us-ascii?Q?9nU9mynry1gR/oSIKv8ONDfdbdCJQUHUT2IJGzu8z+atIf6o94ARGwgCNipp?=
 =?us-ascii?Q?04xEZW+glz2U4t6oGhqwbxY5aonxcz3z8Sb3S9TnMtJO/B/LtLu+vHVZhb9r?=
 =?us-ascii?Q?5C7M0i5gDcOrUI1u2JA8/mk2tVkssgY6/tz3ZyFH7yIwhGuraOBL3eA=3D?=
 =?us-ascii?Q?=3D?=
X-MS-Exchange-SenderADCheck: 1
X-Microsoft-Antispam-Message-Info: TeYdBt1B3RvAKJrpr8UrNeczWGqqpAaECGCl2+H10JNcNG0KJo+/BJQ3NaXfPEDPcwUN9htJd1isBgyFS8RDKcXg1mNXNT2d5htul4z1IHKhd9qeCR5n9M1c9pVlSLj5sgmMacVM7G9mb0KRsQgZydvMn45WOqWCG+tFkMRmXlfY8PRJhRKW65w4u5Zns3zO7oaJ8yMUupXXzGZszKlBf0w7z5yxCTX8kzVkVMX9NFD3hL2NdJH65KIJjn29INGgRbGUY2PfA91gYPIwk8oOROnjR4nDBrtJur8zoQQY0uflJ73az1d5IVhP28jLcxBUJrLwIPTrpNMvufVRZMBZI3lf6HghSBfu18oiuXAL7PRxYji72oh0p5xaKBrlGo+53/dlnTuWNzr1qbKr4wrJzZPiFAay436S17jCJ7k1qu0=
X-Microsoft-Exchange-Diagnostics: 1; VI1PR0802MB2542;
 20:OwinzQJSZbNs1JEkCL2fwJzdsVrC8tBbdkO8Jdlg+5qeARF4WPe4oS2huU2+V3hVyT8LYL5f81lA423B85azDp3J+4vv3fYms5FxSH7YzGRgan+sZzNBCiZ0j+kYNGkJP6+Ja+Jgh1XXGa66uNLB5s6V6FfLblddDvP/c4t2nTg=
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Feb 2019 06:22:49.3938 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 336ca2ab-2c98-4784-6f5b-08d6988e2b05
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[40.67.248.234];
 Helo=[nebula.arm.com]
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0802MB2542
Subject: [Minios-devel] [UNIKRAFT PATCHv6 10/23] plat/kvm: Get VIRT_BITS
 from id_aa64mmfr0_el1.PARange for Arm64
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>, Jia He <justin.he@arm.com>,
 Wei Chen <wei.chen@arm.com>, Kaly Xin <Kaly.Xin@arm.com>,
 Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

RnJvbTogV2VpIENoZW4gPHdlaS5jaGVuQGFybS5jb20+CkFzIHdlIHVzZSBWQSA9PSBQQSBtYXBw
aW5nLCBzbyB0aGUgVklSVF9CSVRTIG11c3QgYmUgdGhlIHNhbWUgYXMKUEFfQklUUy4gV2UgY2Fu
IGdldCBQQV9CSVRTIGZyb20gSURfQUE2NE1NRlIwX0VMMS5QQVJhbmdlIGFuZCB0aGUKVHhTWiBv
ZiBUQ1JfSU5JVF9GTEFHUyB3aWxsIGJlIGNhbGN1bGF0ZSBkeW5hbWljYWxseS4KClNpZ25lZC1v
ZmYtYnk6IFdlaSBDaGVuIDx3ZWkuY2hlbkBhcm0uY29tPgpTaWduZWQtb2ZmLWJ5OiBKaWEgSGUg
PGp1c3Rpbi5oZUBhcm0uY29tPgpSZXZpZXdlZC1ieTogU2hhcmFuIFNhbnRoYW5hbSA8c2hhcmFu
LnNhbnRoYW5hbUBuZWNsYWIuZXU+Ci0tLQogcGxhdC9jb21tb24vaW5jbHVkZS9hcm0vYXJtNjQv
Y3B1X2RlZnMuaCB8IDE2ICsrKysrKystLS0tLS0tLS0KIHBsYXQva3ZtL2FybS9wYWdldGFibGUu
UyAgICAgICAgICAgICAgICAgfCAyNCArKysrKysrKysrKysrKysrKysrKy0tLS0KIDIgZmlsZXMg
Y2hhbmdlZCwgMjcgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv
cGxhdC9jb21tb24vaW5jbHVkZS9hcm0vYXJtNjQvY3B1X2RlZnMuaCBiL3BsYXQvY29tbW9uL2lu
Y2x1ZGUvYXJtL2FybTY0L2NwdV9kZWZzLmgKaW5kZXggZTZmMjBhMy4uNjc1YjllNiAxMDA2NDQK
LS0tIGEvcGxhdC9jb21tb24vaW5jbHVkZS9hcm0vYXJtNjQvY3B1X2RlZnMuaAorKysgYi9wbGF0
L2NvbW1vbi9pbmNsdWRlL2FybS9hcm02NC9jcHVfZGVmcy5oCkBAIC00OCwxMyArNDgsNiBAQAog
I2RlZmluZSBQU0NJX0ZOSURfU1lTVEVNX09GRiAgICAgICAgICAgMHg4NDAwMDAwOAogI2RlZmlu
ZSBQU0NJX0ZOSURfU1lTVEVNX1JFU0VUICAgICAgICAgMHg4NDAwMDAwOQoKLS8qCi0gKiBUaGUg
c3VwcG9ydGVkIHZpcnR1YWwgYWRkcmVzcyBiaXRzLgotICogV2Ugd2lsbCBkbyAxOjEgVkEgdG8g
UEEgTWFwcGluZywgc28gd2UgZGVmaW5lIHRoZSBzYW1lIGFkZHJlc3Mgc2l6ZQotICogZm9yIFZB
IGFuZCBQQS4gMVRCIHNpemUgZm9yIFZpcnR1YWwgYW5kIFBoeXNpY2FsIEFkZHJlc3MgU3BhY2Uu
Ci0gKi8KLSNkZWZpbmUgVklSVF9CSVRTIDQwCi0KIC8qCiAgKiBDVFJfRUwwLCBDYWNoZSBUeXBl
IFJlZ2lzdGVyCiAgKiBQcm92aWRlcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYXJjaGl0ZWN0dXJl
IG9mIHRoZSBjYWNoZXMuCkBAIC0xNDYsOCArMTM5LDEzIEBACiAjZGVmaW5lIFRDUl9UMFNaKHgp
ICAgICgoeCkgPDwgVENSX1QwU1pfU0hJRlQpCiAjZGVmaW5lIFRDUl9UeFNaKHgpICAgIChUQ1Jf
VDFTWih4KSB8IFRDUl9UMFNaKHgpKQoKLSNkZWZpbmUgVENSX0lOSVRfRkxBR1MgKFRDUl9UeFNa
KDY0IC0gVklSVF9CSVRTKSB8IFRDUl9BU0lEXzE2IHwgXAotICAgICAgICAgICAgICAgICAgICAg
ICBUQ1JfVEcwXzRLIHwgVENSX0NBQ0hFX0FUVFJTIHwgVENSX1NNUF9BVFRSUykKKy8qCisgKiBB
cyB3ZSB1c2UgVkEgPT0gUEEgbWFwcGluZywgc28gdGhlIFZJUlRfQklUUyBtdXN0IGJlIHRoZSBz
YW1lCisgKiBhcyBQQV9CSVRTLiBXZSBjYW4gZ2V0IFBBX0JJVFMgZnJvbSBJRF9BQTY0TU1GUjBf
RUwxLlBBUmFuZ2UuCisgKiBTbyB0aGUgVHhTWiB3aWxsIGJlIGNhbGN1bGF0ZSBkeW5hbWljYWxs
eS4KKyAqLworI2RlZmluZSBUQ1JfSU5JVF9GTEFHUyAoVENSX0FTSURfMTYgfCBUQ1JfVEcwXzRL
IHwgXAorICAgICAgICAgICAgICAgICAgICAgICBUQ1JfQ0FDSEVfQVRUUlMgfCBUQ1JfU01QX0FU
VFJTKQoKIC8qIFNDVExSX0VMMSAtIFN5c3RlbSBDb250cm9sIFJlZ2lzdGVyICovCiAjZGVmaW5l
IFNDVExSX00gICAgICAgICAgICAgICAgKF9BQygxLCBVTCkgPDwgMCkgICAgICAgLyogTU1VIGVu
YWJsZSAqLwpkaWZmIC0tZ2l0IGEvcGxhdC9rdm0vYXJtL3BhZ2V0YWJsZS5TIGIvcGxhdC9rdm0v
YXJtL3BhZ2V0YWJsZS5TCmluZGV4IGEzYzgyZTIuLmQ0YWJhZmYgMTAwNjQ0Ci0tLSBhL3BsYXQv
a3ZtL2FybS9wYWdldGFibGUuUworKysgYi9wbGF0L2t2bS9hcm0vcGFnZXRhYmxlLlMKQEAgLTUy
LDYgKzUyLDEzIEBACiAjZGVmaW5lIFBDSUVfTDJfRU5UUklFUyAgIDUxMgogI2RlZmluZSBQQ0lF
X0FERFJfU0laRSAgICAweDgwMDAwMDAwMDAKCisvKgorICogQXMgd2UgdXNlIFZBID09IFBBIG1h
cHBpbmcsIHNvIHRoZSBWSVJUX0JJVFMgbXVzdCBiZSB0aGUgc2FtZQorICogYXMgUEFfQklUUy4g
V2UgY2FuIGdldCBQQV9CSVRTIGZyb20gSURfQUE2NE1NRlIwX0VMMS5QQVJhbmdlLgorICovCit2
aXJ0X2JpdHM6CisgICAgICAgLmJ5dGUgMzIsIDM2LCA0MCwgNDIsIDQ0LCA0OAorCiAvKgogICog
V2Ugd2lsbCB1c2UgYSBkaXJlY3QgbWFwIGZvciBwaHlzaWNhbCBhZGRyZXNzIGFuZCB2aXJ0dWFs
IGFkZHJlc3MKICAqIChQQSA9IFZBIDE6MSBtYXBwaW5nKQpAQCAtMjEwLDExICsyMTcsMjAgQEAg
RU5UUlkoc3RhcnRfbW11KQogICAgICAgIGxkciB4MiwgPU1BSVJfSU5JVF9BVFRSCiAgICAgICAg
bXNyIG1haXJfZWwxLCB4MgoKLSAgICAgICAvKgotICAgICAgICAqIFNldHVwIFRDUiBhY2NvcmRp
bmcgdG8gUEFSYW5nZSBiaXRzIGZyb20gSURfQUE2NE1NRlIwX0VMMS4KLSAgICAgICAgKi8KLSAg
ICAgICBsZHIgeDIsID1UQ1JfSU5JVF9GTEFHUworICAgICAgIC8qIEdldCBWSVJUX0JJVFMgZnJv
bSBpZF9hYTY0bW1mcjBfZWwxLlBBUmFuZ2UgKi8KICAgICAgICBtcnMgeDMsIGlkX2FhNjRtbWZy
MF9lbDEKKyAgICAgICBsZHIgeDUsID12aXJ0X2JpdHMKKyAgICAgICB1YmZ4IHg0LCB4MywgIzAs
ICM0CisgICAgICAgbGRyYiB3NCwgW3g1LCB4NF0KKworICAgICAgIC8qIFNldHVwIFRDUl9UeFNa
KDY0IC0gVklSVF9CSVRTKSBmb3IgVENSX0lOSVRfRkxBR1MgKi8KKyAgICAgICBtb3YgeDUsICM2
NAorICAgICAgIHN1YiB4NSwgeDUsIHg0CisgICAgICAgbW92IHg0LCB4NQorICAgICAgIGxzbCB4
NSwgeDUsICNUQ1JfVDFTWl9TSElGVAorICAgICAgIG9yciB4NSwgeDQsIHg1CisgICAgICAgbGRy
IHgyLCA9VENSX0lOSVRfRkxBR1MKKyAgICAgICBvcnIgeDIsIHg1LCB4MgogICAgICAgIGJmaSB4
MiwgeDMsICMzMiwgIzMKICAgICAgICBtc3IgdGNyX2VsMSwgeDIKCi0tCjIuMTcuMQoKSU1QT1JU
QU5UIE5PVElDRTogVGhlIGNvbnRlbnRzIG9mIHRoaXMgZW1haWwgYW5kIGFueSBhdHRhY2htZW50
cyBhcmUgY29uZmlkZW50aWFsIGFuZCBtYXkgYWxzbyBiZSBwcml2aWxlZ2VkLiBJZiB5b3UgYXJl
IG5vdCB0aGUgaW50ZW5kZWQgcmVjaXBpZW50LCBwbGVhc2Ugbm90aWZ5IHRoZSBzZW5kZXIgaW1t
ZWRpYXRlbHkgYW5kIGRvIG5vdCBkaXNjbG9zZSB0aGUgY29udGVudHMgdG8gYW55IG90aGVyIHBl
cnNvbiwgdXNlIGl0IGZvciBhbnkgcHVycG9zZSwgb3Igc3RvcmUgb3IgY29weSB0aGUgaW5mb3Jt
YXRpb24gaW4gYW55IG1lZGl1bS4gVGhhbmsgeW91LgoKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3Mt
ZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9t
YWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Fri Feb 22 06:22:56 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 22 Feb 2019 06:22:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gx4Ea-0001d4-An; Fri, 22 Feb 2019 06:22:56 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=WrH0=Q5=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1gx4EY-0001c9-8a
 for minios-devel@lists.xenproject.org; Fri, 22 Feb 2019 06:22:54 +0000
X-Inumbo-ID: 482bd4d2-366a-11e9-bc90-bc764e045a96
Received: from EUR01-VE1-obe.outbound.protection.outlook.com (unknown
 [2a01:111:f400:fe1f::61f])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 482bd4d2-366a-11e9-bc90-bc764e045a96;
 Fri, 22 Feb 2019 06:22:53 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; 
 s=selector1-arm-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=k5E0BKxvwRLN84e7CzhIiKmnPd98rbXOckIF3k+DIzo=;
 b=oOf4YSjC5xNqTE0rJGp0OV6AODidn6+ZaId6AFV99LazeDQ+jnBCsAKkVPVY8AkLSpem4+KIlZ2jBQLC+5aXInleZ/PfO9Dvajkf2TP+v8CCIhYcakKv7XJTZTTjwy5SZEsvXxX4R2S7F8sf8P9XRG48OPmDRPiy2AwA3jKm+aE=
Received: from VI1PR08CA0178.eurprd08.prod.outlook.com (2603:10a6:800:d1::32)
 by AM5PR0802MB2530.eurprd08.prod.outlook.com (2603:10a6:203:a0::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1643.16; Fri, 22 Feb
 2019 06:22:50 +0000
Received: from DB5EUR03FT008.eop-EUR03.prod.protection.outlook.com
 (2a01:111:f400:7e0a::208) by VI1PR08CA0178.outlook.office365.com
 (2603:10a6:800:d1::32) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.1643.16 via Frontend
 Transport; Fri, 22 Feb 2019 06:22:50 +0000
Authentication-Results: spf=pass (sender IP is 40.67.248.234)
 smtp.mailfrom=arm.com; lists.xenproject.org; dkim=none (message not signed)
 header.d=none;lists.xenproject.org; dmarc=bestguesspass action=none
 header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 40.67.248.234 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.67.248.234; helo=nebula.arm.com;
Received: from nebula.arm.com (40.67.248.234) by
 DB5EUR03FT008.mail.protection.outlook.com (10.152.20.98) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id
 15.20.1643.11 via Frontend Transport; Fri, 22 Feb 2019 06:22:50 +0000
Received: from AZ-NEU-EX01.Emea.Arm.com (10.251.26.4) by AZ-NEU-EX03.Arm.com
 (10.251.24.31) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.1415.2; Fri, 22 Feb
 2019 06:22:47 +0000
Received: from AZ-NEU-EX03.Arm.com (10.251.24.31) by AZ-NEU-EX01.Emea.Arm.com
 (10.251.26.4) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1415.2; Fri, 22
 Feb 2019 06:22:46 +0000
Received: from localhost.localdomain (10.169.40.37) by mail.arm.com
 (10.251.24.31) with Microsoft SMTP Server id 15.1.1415.2 via Frontend
 Transport; Fri, 22 Feb 2019 06:22:43 +0000
From: Jia He <justin.he@arm.com>
To: <minios-devel@lists.xenproject.org>, Simon Kuenzer
 <simon.kuenzer@neclab.eu>, <Sharan.Santhanam@neclab.eu>
Date: Fri, 22 Feb 2019 14:21:48 +0800
Message-ID: <20190222062200.26602-12-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190222062200.26602-1-justin.he@arm.com>
References: <20190222062200.26602-1-justin.he@arm.com>
MIME-Version: 1.0
X-EOPAttributedMessage: 0
X-MS-Office365-Filtering-HT: Tenant
X-Forefront-Antispam-Report: CIP:40.67.248.234; IPV:NLI; CTRY:US; EFV:NLI;
 SFV:NSPM;
 SFS:(10009020)(376002)(396003)(39860400002)(346002)(136003)(2980300002)(199004)(189003)(40434004)(186003)(26005)(48376002)(305945005)(50466002)(106002)(50226002)(47776003)(77096007)(356004)(36756003)(1076003)(2906002)(86362001)(68736007)(53936002)(6306002)(8936002)(49486002)(5024004)(14444005)(5660300002)(4326008)(336012)(72206003)(54906003)(316002)(51416003)(478600001)(11346002)(8746002)(426003)(446003)(2616005)(81156014)(97736004)(76176011)(81166006)(126002)(8676002)(966005)(106466001)(486006)(476003)(110136005);
 DIR:OUT; SFP:1101; SCL:1; SRVR:AM5PR0802MB2530; H:nebula.arm.com; FPR:;
 SPF:Pass; LANG:en; PTR:InfoDomainNonexistent; A:1; MX:1; 
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id: c7f57afb-1993-44f5-21a5-08d6988e2bbf
X-Microsoft-Antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(8989299)(5600110)(711020)(4605104)(4608103)(4709054)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060);
 SRVR:AM5PR0802MB2530; 
X-MS-TrafficTypeDiagnostic: AM5PR0802MB2530:
X-MS-Exchange-PUrlCount: 1
X-Microsoft-Exchange-Diagnostics: 1; AM5PR0802MB2530;
 20:jrnoB9Ge0cCKvQx/3an27QNmYH41sf2ss6fjcYsg3uUVXLwkCy7ilcafFo2esTuPCqj+4rqmMpnNts2aywQ2SeTf5wiLGmNqc95vD2ZuU8QtcbUJLb1dvTC1GOWemTWzs8e4QORtoBGyfomFz5n1iHyJa9bVIt9Y0xWK9ItUiLKNKbtZkEc82GfDIWGrSaGZmYDn8EW7pBpaXw2EDnH6lh3MVbklLKnRLbrbrNHQbr+n8o9NiOdgbscaQm9r2c7UY2ya26M10VSZfkUdOo8McoE1mYvnA1mTECIZDwnlcTjK4fZ/Au014iZmmERlBHqm1RJXJ594umfHzB0yZVZ2bXM6K396ALWTlW8BNeeEVpyLzy+tTrMaiN9tKLgzPKbToREErJygZIXvkUkMYU/FHcQwLjoaTmTvHblAHHi5SY9dv3lBuIsnWTwvAYaxw3ZDxuxIhMWO550R7HWj49AMZ2jj3o+80iHX5JiobBqMWGLdq6gtuSJ+fa4RwIrDpH3a
X-Microsoft-Antispam-PRVS: <AM5PR0802MB25309870940EA06D51B929C8F77F0@AM5PR0802MB2530.eurprd08.prod.outlook.com>
X-Forefront-PRVS: 09565527D6
X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; AM5PR0802MB2530;
 23:di/yvbk+ez9FhmqLB33DSykqsjXJbwMNuMAGnPp?=
 =?us-ascii?Q?ehORqnL3yQi9tiqVnI0qf78GgDNFt49z6H3ZWzqDdO8WfKKd0zQygc7NvRJ4?=
 =?us-ascii?Q?6sibdof+8BDbTkhZ4VynPAd1F3nzBNMSz5hYo5fwlJIDyg6T445SfOOAwfOq?=
 =?us-ascii?Q?QxXHEPYXP6kxugWZnJQdX4hne2VadjbDAMbh7fEjHQII+MeJzaQf0QSluQuY?=
 =?us-ascii?Q?taMc23WKk3UmOBg7CxOYvYLLepE7cGOPTE+86pllbQzZvQaccB3NLlcIoYgd?=
 =?us-ascii?Q?dCt4+ulv+NEejsUFhMLgYjfrF9wQX3K6aF7NUo4XmJT5dYy/Cdug/YdVe50s?=
 =?us-ascii?Q?gm/v1wCqYXy1GupJ9qUDMzHssTNosUlK3pMWs+aI+ndYWOGz/DV3BPZRybGX?=
 =?us-ascii?Q?PDLTIIQ2b/12CkYTvABYfi3rGKK4ahqQQd60vuadRxy+T60PTWcE/gqLLQJm?=
 =?us-ascii?Q?Y3hjOrMGjyM1zk5QTkiG7ehScKKCZRD3VocsSPxgmt2soJq8G58ErNmWSCif?=
 =?us-ascii?Q?p/Si0xdKmgnK7RMuIuL/ncWxlLrrcIUNn6o3kGJFBmAYMNXFb+EssVdVGN0c?=
 =?us-ascii?Q?vOZYPAi4g4XU52ihHpNA4elbg/VckZ+Tql1GZmSLsURJMamItuRSHkz57+UG?=
 =?us-ascii?Q?2vKmlheHn8Il2G1/Y7RFhpNSdPCCcPoWFJyl5g9DoMZjzVS3z4tUjujbt8lz?=
 =?us-ascii?Q?M4VdeOD7HJ6a0/sWsw8HMoGwNFIqBrl/z9qSx9Fm4fcvXu4eKMW2dq+HV1oD?=
 =?us-ascii?Q?ZsOlq0dW9zOC6AIvRd3kK4XjiobpwVzbMVrJEqydq/Ye/8xN03WS8uJULQqV?=
 =?us-ascii?Q?aS9BwiQdc0ygqJghJpejeHyVKygjRl/KWE8d6b6FOzN+5WHKou7GoL396Saa?=
 =?us-ascii?Q?KtMRqVeZ/HPgxqg8FU+/63/FLRR6hWkUkHkj0NVKcRnML21xIRDzwJ3m0xT0?=
 =?us-ascii?Q?q/Y8rcPn+dbQrdY1ddc0qEUk5jhh+Z6y5oW9xyWyLLerCDWNmvFwFXqjnyyX?=
 =?us-ascii?Q?DRfrRbsuXHKTbt6GboJhyurc941JVCOXNGIJSaaPSACAvJP2fyyZKgdztAyC?=
 =?us-ascii?Q?jMBTYoBU5dTFFStdOMq/GI32FTSN4WyX5vGThIH8uN0/v8kCQNr/+97s4VY3?=
 =?us-ascii?Q?7eYe3jRe6PoQwNk+NFB7qMhGsa/FZQGQurqSIWQ2qs7a5ke/mhsdwd/cAjLg?=
 =?us-ascii?Q?NIhyGGbZskqGcKhI=3D?=
X-MS-Exchange-SenderADCheck: 1
X-Microsoft-Antispam-Message-Info: zUz+Fq+l5EH2EtrdZDD8LmxVcNcXWtIpdloggUflDoES2UWwPuTeQ5JpN+JyUzyHp3ShwPodzwtvkv8+EvDlFMdi+ImLoH9WVPmFgDw5pq/avo0PIukv7z/gewLj5XokWqKABWxGFg3xSWfSJcqdzih3ybWP8gIZrzvSB5egTIPDAwwipu03nMdcNTqSx3XgdGEJcAG4iXW7FwqR3Z07I/MbMqWIVNKTGmriUkmVsHQ2tQUqmabI73KVX4XyMoRNhQavfcvxOi4GS2NFXdtHHaNbVPdFJZtzCEny2bHb01eQT66DbifWvMHZuBlBYP49jCffSUCXlXsEFlragbNL5NDhXCYZMfGtlZebfu3i7ZifltMAKr6UDyiD5WjwE6ZdSpEE3mVrC3Ov6XrCB9PM6J5SQDSvtu/1GFWHPwm85aI=
X-Microsoft-Exchange-Diagnostics: 1; AM5PR0802MB2530;
 20:b5Z56rRdVMyc6aJK9oeH22Q0mI19dJhFcy3flM0M+/v4x3FvnD+I2yX3GUm7//d+Pd2H+LK3VcWB8AtuPS11IXExmdSE4McF6vJJoEK5SKbnvLwygY/fBc0jIAgmc6BKJFPLNMSScK0iv/lqJSeE4CBOuUfp6dk7pRHHtIFE9B0=
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Feb 2019 06:22:50.6108 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: c7f57afb-1993-44f5-21a5-08d6988e2bbf
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[40.67.248.234];
 Helo=[nebula.arm.com]
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0802MB2530
Subject: [Minios-devel] [UNIKRAFT PATCHv6 11/23] arch/include: Add a _regs
 member to save origial stack pointer
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>, Jia He <justin.he@arm.com>,
 Wei Chen <wei.chen@arm.com>, Kaly Xin <Kaly.Xin@arm.com>,
 Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

RnJvbTogV2VpIENoZW4gPHdlaS5jaGVuQGFybS5jb20+ClRoZXJlIGlzIGEgaXNzdWUgYWJvdXQg
c3RhY2sgYWxpZ25tZW50IGNoZWNrIGluIHVybFsxXS4gVGhlcmUKbWlnaHQgYmUgY2FzZSB3aGVy
ZSB0aGUgc3RhY2sgcG9pbnRlciBpcyBub3QgYWxpZ25lZCBhdCBFTDEKZXhjZXB0aW9uLiBXZSB3
aWxsIGZvcmNlIGFsaWduIHRoZSBzdGFjayBmb3IgRUwxIGV4Y2VwdGlvbnMsCnNvIHdlIGFkZCBh
IHNwIHRvIHNhdmUgb3JpZ2luYWwgc3RhY2sgcG9pbnRlciBpbiB0aGlzIHBhdGNoLgoKWzFdIGh0
dHBzOi8vd3d3LnNwaW5pY3MubmV0L2xpc3RzL2FybS1rZXJuZWwvbXNnNjc4NzYxLmh0bWwKClNp
Z25lZC1vZmYtYnk6IFdlaSBDaGVuIDx3ZWkuY2hlbkBhcm0uY29tPgpTaWduZWQtb2ZmLWJ5OiBK
aWEgSGUgPGp1c3Rpbi5oZUBhcm0uY29tPgpSZXZpZXdlZC1ieTogU2hhcmFuIFNhbnRoYW5hbSA8
c2hhcmFuLnNhbnRoYW5hbUBuZWNsYWIuZXU+Ci0tLQogYXJjaC9hcm0vYXJtNjQvaW5jbHVkZS91
ay9hc20vbGNwdS5oIHwgMTYgKysrKysrKysrKysrKy0tLQogMSBmaWxlIGNoYW5nZWQsIDEzIGlu
c2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vYXJtNjQv
aW5jbHVkZS91ay9hc20vbGNwdS5oIGIvYXJjaC9hcm0vYXJtNjQvaW5jbHVkZS91ay9hc20vbGNw
dS5oCmluZGV4IDI3MTkzMTMuLjllZWE3NDYgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL2FybTY0L2lu
Y2x1ZGUvdWsvYXNtL2xjcHUuaAorKysgYi9hcmNoL2FybS9hcm02NC9pbmNsdWRlL3VrL2FzbS9s
Y3B1LmgKQEAgLTM1LDEzICszNSwyMCBAQAogICogU3RhY2sgc2l6ZSB0byBzYXZlIGdlbmVyYWwg
cHVycG9zZSByZWdpc3RlcnMgYW5kIGVzc2VudGlhbCBzeXN0ZW0KICAqIHJlZ2lzdGVycy4gOCAq
ICgzMCArIGxyICsgZWxyX2VsMSArIHNwc3JfZWwxICsgZXNyX2VsMSkgPSAyNzIuCiAgKiBGcm9t
IGV4Y2VwdGlvbnMgY29tZSBmcm9tIEVMMCwgd2UgaGF2ZSB0byBzYXZlIHNwX2VsMC4gU28gdGhl
Ci0gKiBUUkFQX1NUQUNLX1NJWkUgc2hvdWxkIGJlIDI3MiArIDggPSAyODAKKyAqIFRSQVBfU1RB
Q0tfU0laRSBzaG91bGQgYmUgMjcyICsgOCA9IDI4MC4gQnV0IHdlIGVuYWJsZSB0aGUgc3RhY2sK
KyAqIGFsaWdubWVudCBjaGVjaywgd2Ugd2lsbCBmb3JjZSBhbGlnbiB0aGUgc3RhY2sgZm9yIEVM
MSBleGNlcHRpb25zLAorICogc28gd2UgYWRkIGEgc3AgdG8gc2F2ZSBvcmlnaW5hbCBzdGFjayBw
b2ludGVyOiAyODAgKyA4ID0gMjg4CiAgKgogICogVE9ETzogV2UnZCBiZXR0ZXIgdG8gY2FsY3Vs
YXRlIHRoaXMgc2l6ZSBhdXRvbWF0aWNhbGx5IGxhdGVyLgogICovCi0jZGVmaW5lIF9fVFJBUF9T
VEFDS19TSVpFIDI4MAorI2RlZmluZSBfX1RSQVBfU1RBQ0tfU0laRSAgICAgIDI4OAorI2RlZmlu
ZSBfX1NQX09GRlNFVCAgICAgICAgICAgIDI3MgorI2RlZmluZSBfX1NQX0VMMF9PRkZTRVQgICAg
ICAgICAgICAgICAgMjgwCiAjZWxzZQotLyogQ2hhbmdlIHRoaXMgc3RydWN0dXJlIG11c3QgdXBk
YXRlIFRSQVBfU1RBQ0tfU0laRSBhdCB0aGUgc2FtZSB0aW1lICovCisvKgorICogQ2hhbmdlIHRo
aXMgc3RydWN0dXJlIG11c3QgdXBkYXRlIFRSQVBfU1RBQ0tfU0laRSBhdCB0aGUgc2FtZSB0aW1l
LgorICogVGhpcyBkYXRhIHN0cnVjdHVyZSBtdXN0IGJlIDE2LWJ5dGUgYWxpZ25tZW50LgorICov
CiBzdHJ1Y3QgX19yZWdzIHsKICAgICAgICAvKiBHZW5lcmljIFB1cnBvc2UgcmVnaXN0ZXJzLCBm
cm9tIHgwIH4geDI5ICovCiAgICAgICAgdW5zaWduZWQgbG9uZyB4WzMwXTsKQEAgLTYwLDYgKzY3
LDkgQEAgc3RydWN0IF9fcmVncyB7CgogICAgICAgIC8qIFN0YWNrIFBvaW50ZXIgKi8KICAgICAg
ICB1bnNpZ25lZCBsb25nIHNwOworCisgICAgICAgLyogU3RhY2sgUG9pbnRlciBmcm9tIGVsMCAq
LworICAgICAgIHVuc2lnbmVkIGxvbmcgc3BfZWwwOwogfTsKCiAvKgotLQoyLjE3LjEKCklNUE9S
VEFOVCBOT1RJQ0U6IFRoZSBjb250ZW50cyBvZiB0aGlzIGVtYWlsIGFuZCBhbnkgYXR0YWNobWVu
dHMgYXJlIGNvbmZpZGVudGlhbCBhbmQgbWF5IGFsc28gYmUgcHJpdmlsZWdlZC4gSWYgeW91IGFy
ZSBub3QgdGhlIGludGVuZGVkIHJlY2lwaWVudCwgcGxlYXNlIG5vdGlmeSB0aGUgc2VuZGVyIGlt
bWVkaWF0ZWx5IGFuZCBkbyBub3QgZGlzY2xvc2UgdGhlIGNvbnRlbnRzIHRvIGFueSBvdGhlciBw
ZXJzb24sIHVzZSBpdCBmb3IgYW55IHB1cnBvc2UsIG9yIHN0b3JlIG9yIGNvcHkgdGhlIGluZm9y
bWF0aW9uIGluIGFueSBtZWRpdW0uIFRoYW5rIHlvdS4KCl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9z
LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcv
bWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Fri Feb 22 06:22:57 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 22 Feb 2019 06:22:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gx4Eb-0001dx-Cp; Fri, 22 Feb 2019 06:22:57 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=WrH0=Q5=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1gx4EZ-0001cg-EX
 for minios-devel@lists.xenproject.org; Fri, 22 Feb 2019 06:22:55 +0000
X-Inumbo-ID: 49a52c1d-366a-11e9-bc90-bc764e045a96
Received: from EUR01-VE1-obe.outbound.protection.outlook.com (unknown
 [2a01:111:f400:fe1f::61f])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 49a52c1d-366a-11e9-bc90-bc764e045a96;
 Fri, 22 Feb 2019 06:22:54 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; 
 s=selector1-arm-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=XlUvjqidWk4+N602p+nA0y8MSf7mcO8pVBglqdw+FwU=;
 b=b9ZP299Bey9QRj12JInso4cvI7/8rqDeaP5mh69QAhw8a0JoqCYQQKVM5qmNYIQ45oYw3VmWXDr/1d5FC1ielTmGY33T4zzcmhAJbikERGjqDvcKxEhzEN+uL7zvH0fCW+payhL0Fwcc8kwpld8Rmwd/y61ZCGCFeuDT/4IEX54=
Received: from VI1PR08CA0178.eurprd08.prod.outlook.com (2603:10a6:800:d1::32)
 by AM5PR0802MB2530.eurprd08.prod.outlook.com (2603:10a6:203:a0::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1643.16; Fri, 22 Feb
 2019 06:22:52 +0000
Received: from DB5EUR03FT008.eop-EUR03.prod.protection.outlook.com
 (2a01:111:f400:7e0a::208) by VI1PR08CA0178.outlook.office365.com
 (2603:10a6:800:d1::32) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.1643.16 via Frontend
 Transport; Fri, 22 Feb 2019 06:22:51 +0000
Authentication-Results: spf=pass (sender IP is 40.67.248.234)
 smtp.mailfrom=arm.com; lists.xenproject.org; dkim=none (message not signed)
 header.d=none;lists.xenproject.org; dmarc=bestguesspass action=none
 header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 40.67.248.234 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.67.248.234; helo=nebula.arm.com;
Received: from nebula.arm.com (40.67.248.234) by
 DB5EUR03FT008.mail.protection.outlook.com (10.152.20.98) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id
 15.20.1643.11 via Frontend Transport; Fri, 22 Feb 2019 06:22:51 +0000
Received: from AZ-NEU-EX03.Arm.com (10.251.24.31) by AZ-NEU-EX03.Arm.com
 (10.251.24.31) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1415.2; Fri, 22 Feb
 2019 06:22:50 +0000
Received: from localhost.localdomain (10.169.40.37) by mail.arm.com
 (10.251.24.31) with Microsoft SMTP Server id 15.1.1415.2 via Frontend
 Transport; Fri, 22 Feb 2019 06:22:47 +0000
From: Jia He <justin.he@arm.com>
To: <minios-devel@lists.xenproject.org>, Simon Kuenzer
 <simon.kuenzer@neclab.eu>, <Sharan.Santhanam@neclab.eu>
Date: Fri, 22 Feb 2019 14:21:49 +0800
Message-ID: <20190222062200.26602-13-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190222062200.26602-1-justin.he@arm.com>
References: <20190222062200.26602-1-justin.he@arm.com>
MIME-Version: 1.0
X-EOPAttributedMessage: 0
X-MS-Office365-Filtering-HT: Tenant
X-Forefront-Antispam-Report: CIP:40.67.248.234; IPV:NLI; CTRY:US; EFV:NLI;
 SFV:NSPM;
 SFS:(10009020)(1496009)(376002)(396003)(39860400002)(346002)(136003)(2980300002)(199004)(189003)(40434004)(186003)(26005)(48376002)(305945005)(50466002)(106002)(50226002)(47776003)(77096007)(356004)(36756003)(1076003)(2906002)(86362001)(68736007)(53936002)(8936002)(49486002)(5024004)(14444005)(5660300002)(4326008)(336012)(72206003)(54906003)(316002)(51416003)(478600001)(11346002)(8746002)(426003)(446003)(2616005)(81156014)(97736004)(76176011)(81166006)(126002)(8676002)(106466001)(486006)(476003)(110136005);
 DIR:OUT; SFP:1101; SCL:1; SRVR:AM5PR0802MB2530; H:nebula.arm.com; FPR:;
 SPF:Pass; LANG:en; PTR:InfoDomainNonexistent; A:1; MX:1; 
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id: b9b89c15-16fb-4402-55ea-08d6988e2c68
X-Microsoft-Antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(8989299)(5600110)(711020)(4605104)(4608103)(4709054)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060);
 SRVR:AM5PR0802MB2530; 
X-MS-TrafficTypeDiagnostic: AM5PR0802MB2530:
X-Microsoft-Exchange-Diagnostics: 1; AM5PR0802MB2530;
 20:IXxSI9cDfAByoBPQJiIqIyiRgG1tAAT0bdnEhnA73A73X6kFD5zMmTrvPKgxALZKX534zmyEYnXJLCAVzfNf/yBoRf4bcgIh4O8uZYkmQvFvJnEEieaWPbsnhy9AdvB4PHJkGH6Itic6iSfCMt4d5JZqyG1fTf8ab978/IOrg4Sksg1WhLIbwlmibdjv9PmDQp1jwjh3aj9H4xPVH1cnquUtSjm1rQPu9+CLqmpxD3dlRI7LdZ6bpiIVW2ME0d+/IvfqS9OinMewXcbdXRwiJ5D8k8CcPPMl3qMk9YOvnFWkUXjuxwcNpElO3MAvoXrXftposHjFDm8M8WQhj1MIVcFMq4lB2kj9RYV/0o0VAfk2/j8DSqCI/P2wuW1O7of7VQV57UxCsbAHrK38lRpgz7SwfgftUr0S9tgyjgIlhlfdqs9424gTB7Nb3n3JWJSb+bKKG7UXyIXNNsksM4IdhMKXKWoMIdZgxTxZBiYZwADHV5XhUjszxoBa4+0cSltp
X-Microsoft-Antispam-PRVS: <AM5PR0802MB2530DB365AFAC064758E8976F77F0@AM5PR0802MB2530.eurprd08.prod.outlook.com>
X-Forefront-PRVS: 09565527D6
X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; AM5PR0802MB2530;
 23:0H3PdiS1uwfGEb5JV5mL368VLvxHsU0xeplz0yV?=
 =?us-ascii?Q?Fhw1WibvNjQnFn/zn3l1rHnx/jxM8NFuMnyWr3e7lfCxb1hR1Kv/hycMJXYb?=
 =?us-ascii?Q?5TbH23JA1eWRpwzhftu6A5GPNYmSioZlm4RhmAMSn3mps7uxMNFT1neZi3rZ?=
 =?us-ascii?Q?AxJh0scEHTMd84W6b9Cw6aUYnlYu9tnNnkO4lOwjHoSDrcTFEO6pb8iPSis6?=
 =?us-ascii?Q?LLk46teRMdZFAbW8+EV5zt7xGtOi9KgVtLBIwCsmJRvv7zr6+feEawiNQH37?=
 =?us-ascii?Q?20T5RoWF/ED+8YoKm/NYDpiCqJpyILbYr/s+q/o+CDWHgGQGFQxDinms+2EN?=
 =?us-ascii?Q?b+mogNeP+3QdkwRmN25vaBkvcOzVf+Kcf6NFwraygGqtkgUsO9oRMYwyZe8P?=
 =?us-ascii?Q?QhPgHUYqR/RIBeSaHMTilprQWw5alhD8tysqVJbCp7cW0xOzCCCAsVOSTtF8?=
 =?us-ascii?Q?FW5GtO5fWa04qoGFXGyZPUlmmJbZakKpGxYZ2j4PtJPbTP14BoCALv6wape2?=
 =?us-ascii?Q?aT2Tlu0Fn+522/AK7igt2mU5vGhS7EcrEA+IzM0rVtWeH7QJtPJx0e6yd4OH?=
 =?us-ascii?Q?yH0cgeG9MDEil+JBWExVO/n5XIuHLPQn8bDpYTG8Hvj+WT6Q33kkJIRQbGdv?=
 =?us-ascii?Q?MRMeQ7pZqb5P3aPo/t+Zg9Hvp/lUfFITrI9B9DktpzLtoPSaMxyajXNgRgEp?=
 =?us-ascii?Q?JNCcR0ELq29Qq3T6+/QZ/6xo8G/+lbz0DofEi3fYWKMnS9u/zub9CUip7Zt0?=
 =?us-ascii?Q?CflNp0TJ1tHFoCQcFtkpoh5bFX/jjRJt/OdvhvERYOgcgbC62lOjTIYI35ZI?=
 =?us-ascii?Q?W6lt7lnfWDlzQpicjDGlvzWNCXaWtmGZIQvBNrnjWdlSzm0/QuivOKuyLf7j?=
 =?us-ascii?Q?4N13MHvcKTCvrqxGB/SaeCAZrFyfnWkTvKmmYqJjaeVTHiFPmt2nbgksd57E?=
 =?us-ascii?Q?75xjitbv52wj0wfmbZSJXrDrzs+SCMj7q4BsqB4K70Fb9/pzkeVUN5/Suc4X?=
 =?us-ascii?Q?W4qpWx06mcZQqfah1V2gAxaIH+x5hfiRSmRArP1uzbAbkDl7RT+tRVph0TsY?=
 =?us-ascii?Q?XiKSquJ/SKAUppsVMyNymMDwRHs7ZVmxtSU4GbCpJWNgENvibJOvbzvhpTqO?=
 =?us-ascii?Q?hsStSQzr5J6unMxezJq01/NG50mWYsnTtVwjMaCSSHPYw9o12bRvF7bP2rVV?=
 =?us-ascii?Q?16sTy6RlE7tuUKpY=3D?=
X-MS-Exchange-SenderADCheck: 1
X-Microsoft-Antispam-Message-Info: JF14GTZUi5PYhUuPPLNbfCsbb6ua03g4BYNCAz/t3628HUsKqmEHPE+7TMWZoIlEKc4CP7AVbZWzL0GEXI5JN+8ANtltvbRo2VAkJE2vj39eEUmhuR2ZhBLI90vwQcAzHu0ZC3YTcf6EQiaNUgZmteLL5HIg4faVRQ9JnS2RbfppDVeM5Ylucv+CRYKg9rhuGz3TDFQO3Dat85L42TDVe6gJzaVBspxVMnz8EXe27P2/YAq94nqvU4y1sMXFJ7UtVr7inUEnhoeFTKgOQ1grCkEygoQU9O8R5ahMerpVeMwPLnBcVhxHRNcJV1+JrPWhrJr+2EGgE0UdBYrqpBvJgXovE1QqrBNxrMGwk9JhGzmhqZy4A0tQpPBZemfjPA8MiVyVCgUaId76OeLkn9SZ/GMTjmdKhH+4IrqCzruImcc=
X-Microsoft-Exchange-Diagnostics: 1; AM5PR0802MB2530;
 20:uOb3oIfhyBLg5P3BnnXTLSZ3jt6WHKoFNvv7n/LoQ/P5GTvCZ3gw3vMbtymGnzIx45MtGEuqE3G+M2CKu5xR1VDSjaswNKhjnEc6NvDsewfQ8q7p5NDPLtmuyZw9lHpc5dEdQWgR7tk1cltl552iFfnPqef+ObNTT4FlrB7itW8=
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Feb 2019 06:22:51.7197 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: b9b89c15-16fb-4402-55ea-08d6988e2c68
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[40.67.248.234];
 Helo=[nebula.arm.com]
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0802MB2530
Subject: [Minios-devel] [UNIKRAFT PATCHv6 12/23] plat/kvm: Add
 __TRAP_STACK_SIZE for stack pointer while exiting trap
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>, Jia He <justin.he@arm.com>,
 Wei Chen <wei.chen@arm.com>, Kaly Xin <Kaly.Xin@arm.com>,
 Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

RnJvbTogV2VpIENoZW4gPHdlaS5jaGVuQGFybS5jb20+CldlIGhhdmUgc3VidHJhY3QgdGhlIF9f
VFJBUF9TVEFDS19TSVpFIGZyb20gc3Agd2hpbGUgZW50ZXJpbmcgdGhlIHRhcnAsCmJ1dCB3aGls
ZSBleGl0aW5nIHRoZSB0cmFwLCB3ZSBmb3Jnb3QgdG8gYWRkIF9fVFJBUF9TVEFDS19TSVpFIGJh
Y2sgdG8Kc3AuCgpTaWduZWQtb2ZmLWJ5OiBXZWkgQ2hlbiA8d2VpLmNoZW5AYXJtLmNvbT4KU2ln
bmVkLW9mZi1ieTogSmlhIEhlIDxqdXN0aW4uaGVAYXJtLmNvbT4KUmV2aWV3ZWQtYnk6IFNoYXJh
biBTYW50aGFuYW0gPHNoYXJhbi5zYW50aGFuYW1AbmVjbGFiLmV1PgotLS0KIHBsYXQva3ZtL2Fy
bS9leGNlcHRpb25zLlMgfCAyICsrCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCgpk
aWZmIC0tZ2l0IGEvcGxhdC9rdm0vYXJtL2V4Y2VwdGlvbnMuUyBiL3BsYXQva3ZtL2FybS9leGNl
cHRpb25zLlMKaW5kZXggYWYwMzlkOC4uZWRjZTdkMyAxMDA2NDQKLS0tIGEvcGxhdC9rdm0vYXJt
L2V4Y2VwdGlvbnMuUworKysgYi9wbGF0L2t2bS9hcm0vZXhjZXB0aW9ucy5TCkBAIC0xMDMsNiAr
MTAzLDggQEAKICAgICAgICBsZHAgeDIsIHgzLCBbc3AsICMxNiAqIDFdCiAgICAgICAgbGRwIHgw
LCB4MSwgW3NwLCAjMTYgKiAwXQoKKyAgICAgICBhZGQgc3AsIHNwLCAjX19UUkFQX1NUQUNLX1NJ
WkUKKwogICAgICAgIGVyZXQKIC5lbmRtCgotLQoyLjE3LjEKCklNUE9SVEFOVCBOT1RJQ0U6IFRo
ZSBjb250ZW50cyBvZiB0aGlzIGVtYWlsIGFuZCBhbnkgYXR0YWNobWVudHMgYXJlIGNvbmZpZGVu
dGlhbCBhbmQgbWF5IGFsc28gYmUgcHJpdmlsZWdlZC4gSWYgeW91IGFyZSBub3QgdGhlIGludGVu
ZGVkIHJlY2lwaWVudCwgcGxlYXNlIG5vdGlmeSB0aGUgc2VuZGVyIGltbWVkaWF0ZWx5IGFuZCBk
byBub3QgZGlzY2xvc2UgdGhlIGNvbnRlbnRzIHRvIGFueSBvdGhlciBwZXJzb24sIHVzZSBpdCBm
b3IgYW55IHB1cnBvc2UsIG9yIHN0b3JlIG9yIGNvcHkgdGhlIGluZm9ybWF0aW9uIGluIGFueSBt
ZWRpdW0uIFRoYW5rIHlvdS4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhl
bnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5m
by9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Fri Feb 22 06:23:15 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 22 Feb 2019 06:23:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gx4Et-0001go-Fu; Fri, 22 Feb 2019 06:23:15 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=WrH0=Q5=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1gx4Er-0001gj-MS
 for minios-devel@lists.xenproject.org; Fri, 22 Feb 2019 06:23:13 +0000
X-Inumbo-ID: 542b306f-366a-11e9-bc90-bc764e045a96
Received: from EUR03-DB5-obe.outbound.protection.outlook.com (unknown
 [2a01:111:f400:fe0a::619])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 542b306f-366a-11e9-bc90-bc764e045a96;
 Fri, 22 Feb 2019 06:23:12 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; 
 s=selector1-arm-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=GZmAUdMdY2+9q9GMyCCqgds840NCu+2D/W68PrnJuy0=;
 b=qvkrHB4DVmsgokjF64y9hNik3HnUE1yBxdBcat9+UzWN8gKYqkt/2cNguHr4Y6VMVV7fm8FllGOLqfRkRcGKFxgOk45xlzhlL5XZ/KPAq5y1WC4QnPnJo7DRF0RhlQJUAzrgXY/mDj2TXw128I8eBKk5k1NjvBYDW9IgqMl+gsQ=
Received: from VI1PR08CA0115.eurprd08.prod.outlook.com (2603:10a6:800:d4::17)
 by VI1PR08MB3262.eurprd08.prod.outlook.com (2603:10a6:803:3d::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1643.15; Fri, 22 Feb
 2019 06:23:10 +0000
Received: from AM5EUR03FT020.eop-EUR03.prod.protection.outlook.com
 (2a01:111:f400:7e08::204) by VI1PR08CA0115.outlook.office365.com
 (2603:10a6:800:d4::17) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1643.14 via Frontend
 Transport; Fri, 22 Feb 2019 06:23:10 +0000
Authentication-Results: spf=pass (sender IP is 40.67.248.234)
 smtp.mailfrom=arm.com; lists.xenproject.org; dkim=none (message not signed)
 header.d=none;lists.xenproject.org; dmarc=bestguesspass action=none
 header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 40.67.248.234 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.67.248.234; helo=nebula.arm.com;
Received: from nebula.arm.com (40.67.248.234) by
 AM5EUR03FT020.mail.protection.outlook.com (10.152.16.116) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.1643.11 via Frontend Transport; Fri, 22 Feb 2019 06:23:10 +0000
Received: from AZ-NEU-EX01.Emea.Arm.com (10.251.26.4) by AZ-NEU-EX04.Arm.com
 (10.251.24.32) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.1415.2; Fri, 22 Feb
 2019 06:23:08 +0000
Received: from AZ-NEU-EX03.Arm.com (10.251.24.31) by AZ-NEU-EX01.Emea.Arm.com
 (10.251.26.4) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1415.2; Fri, 22
 Feb 2019 06:23:07 +0000
Received: from localhost.localdomain (10.169.40.37) by mail.arm.com
 (10.251.24.31) with Microsoft SMTP Server id 15.1.1415.2 via Frontend
 Transport; Fri, 22 Feb 2019 06:23:04 +0000
From: Jia He <justin.he@arm.com>
To: <minios-devel@lists.xenproject.org>, Simon Kuenzer
 <simon.kuenzer@neclab.eu>, <Sharan.Santhanam@neclab.eu>
Date: Fri, 22 Feb 2019 14:21:54 +0800
Message-ID: <20190222062200.26602-18-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190222062200.26602-1-justin.he@arm.com>
References: <20190222062200.26602-1-justin.he@arm.com>
MIME-Version: 1.0
X-EOPAttributedMessage: 0
X-MS-Office365-Filtering-HT: Tenant
X-Forefront-Antispam-Report: CIP:40.67.248.234; IPV:NLI; CTRY:US; EFV:NLI;
 SFV:NSPM;
 SFS:(10009020)(376002)(136003)(39860400002)(346002)(396003)(2980300002)(189003)(199004)(40434004)(2616005)(2906002)(126002)(8936002)(5660300002)(478600001)(476003)(446003)(97736004)(486006)(76176011)(110136005)(68736007)(106466001)(50226002)(72206003)(49486002)(11346002)(316002)(1076003)(426003)(106002)(54906003)(356004)(6666004)(36756003)(4326008)(305945005)(8676002)(336012)(48376002)(8746002)(81156014)(81166006)(50466002)(47776003)(5024004)(14444005)(86362001)(53936002)(186003)(77096007)(51416003)(26005);
 DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR08MB3262; H:nebula.arm.com; FPR:; SPF:Pass;
 LANG:en; PTR:InfoDomainNonexistent; MX:1; A:1; 
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id: 96ee41a0-f6d0-4526-7100-08d6988e3765
X-Microsoft-Antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(8989299)(5600110)(711020)(4605104)(4608103)(4709054)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060);
 SRVR:VI1PR08MB3262; 
X-MS-TrafficTypeDiagnostic: VI1PR08MB3262:
X-Microsoft-Exchange-Diagnostics: 1; VI1PR08MB3262;
 20:PXISq7Z2J83yzYzUip2BvBYyg0a8u/tCvrwI5E/m6+vONhDIKchXb/ta3CU/gx4mmK9cocpDyqDoPRvg0x+plEayWlbY+FM1MVcUkX/N50BzJ6XLfUSBSzSJcTgbZU3BQHVEEjHe3jY7uFppvWdd4x9yEJWtPVxSNJCEAwWPIyV9kKkP1PwVqChJcNH66p+5K6REBH8qTCYYvdgiI1iG7TPVpsLqIh+acZeWMjIDCgvam2r5s6GOKjFClzO+YdzAOgMhVNJG8dOxoK0Geylcd5FTrZ11CWP0DY74IcjNZlFJUNVf0Mt0rRXbzlFpImesPyc7tT8yvMtPOgYNtW/QwBY++xe4myTUaAJRW49hSLvneX0Q8OfqiIO0LPvdT7aYE0rfgy2lj7+v8W4sLXJDnvzpq8YZC239eL3C71B3ej5hejAm+6xhSdjZGP9tGIkBqxPnvaRduwPBfP5uNjBDhO8IbIs/u6di6TIoxBn2++AFq0MWOrXaHuJHAFDo824O
X-Microsoft-Antispam-PRVS: <VI1PR08MB326221269C54738F9D9370F9F77F0@VI1PR08MB3262.eurprd08.prod.outlook.com>
X-Forefront-PRVS: 09565527D6
X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR08MB3262;
 23:AWaV4rcSLut40VMHg+A0jFlXA4/q2Nk2gZn3aOCNc?=
 =?us-ascii?Q?GX1xNBY21BbC6u4UAw/rS4VXg4JSajjI7qudlHP2tvBvSobvR8RKArGZgh+X?=
 =?us-ascii?Q?UBr56nfI9Mu3oevLNGEhHyYl1oMt/jSFpjRoRg3WIArFhNbHsrRFlcgDzc2D?=
 =?us-ascii?Q?Xw5As4hzto13CR8zbWeg62CH+gz+wfm49sKrr7rACLU2m3LCa8Acg+ofQ1Ou?=
 =?us-ascii?Q?5pYlgt+vji2DI8QOlvOo+b8G7ay0CKVZFFQEJdLL/oxmMeGHLk5jv62/+Uvq?=
 =?us-ascii?Q?kXL4FEKEz3ztzH3M9ywMFL48Ntel8lpIziuUSs3LLQKyh7hkX+nHdumT+i8g?=
 =?us-ascii?Q?Yi/mkFYscKaybcWml8h4blIAndc/RrUg36yzeBStL+cPPzivZom4xBiuRLWU?=
 =?us-ascii?Q?4d1YVZ6qolIs3vH6xjUX/0MuIRkIVjEvQnrDlcWOkArQ99XHdlDi5w/bI/ll?=
 =?us-ascii?Q?z0zotA5km/5Bo1RinwQH6hiCclLlYhn3vM8Go8p6w3UI5Xt+9AZ9MQUg/Ukw?=
 =?us-ascii?Q?8E77nXgPcGqhX1x/UrcKqcB1O0rU30HzvVrS6ZmW5/ArL0CPzfyE8lJXpaZx?=
 =?us-ascii?Q?RTQZvo3fThxk8nQpDq1sKWkiKZZUiKoXqkg5wLMEJX6qrLDNOF2xyN1TcM6J?=
 =?us-ascii?Q?nzv8L9OyD25/Q5WYuhd9gFs+34uby1rGS31GbIoOTAnTywN2WEH7J0eXHY/z?=
 =?us-ascii?Q?wf0OQY9sh7fQW7oFK1AL/xcobeloGR7h0nTxul/FnTgSHz4Qo1xq/LMFMk+i?=
 =?us-ascii?Q?b3bPwUp9JGCSKM/g3LVify+1ezQDDyoFAwDn3zbwcwozC7HKv+cNJMe2zSQr?=
 =?us-ascii?Q?taGrx1JE0TAPONaeDyDwn7mgsi9/7qs7qj26CUmIH7vwizYMgQ7ijbLRD27p?=
 =?us-ascii?Q?big4NeHM4eRYc/EL9zA+y1n6/2Bd4aP/h1fCAhNrFSHH9NesHTO6tNt0aBoz?=
 =?us-ascii?Q?Beu47PC8b/+zpwNKLFthKC9QSJQ9ZjRmhJUdIDjurN6mSmfJa/t+Uc8GKXXV?=
 =?us-ascii?Q?AjKvfB5hnOb/FgdtvgabnAOs8HVMLR/3E6AVkPPrW4LMunG9BRHxMOzlDM2A?=
 =?us-ascii?Q?nMCdKbSXJpcaDKBgivOxSALOXatnopcJIMxpPwihclYqBU3USxLrk1oSng87?=
 =?us-ascii?Q?YoJXX9DSGzGthrNuWsqZkYGtaw3P6Cn1o97RrM2RhsONkfNbxLNDEplyT/GC?=
 =?us-ascii?Q?dC6GX75GH73Rm0=3D?=
X-MS-Exchange-SenderADCheck: 1
X-Microsoft-Antispam-Message-Info: vjc1wy2Huk2E6c10k8SFfj+mA3E2JdDSnH4xllUlsKwUdcOLJSe+TNnHiV4NsFrT/7kwFx6yRE9A331pksaBSC3vEL8bXSCx7qRiwi3oVtGu7r3Mp2YjwP1i+QTM9TyBLyRiHNBqTLVcCFpENNFPXd40fy9r4KABYPHtEgCFfEhFTNkDgfORQ+y8CO7pty8FvzcDSz9dt7sK57YHYoMoHc7QQZVQc80LfZABfKWOjrdhI73+DIOiWqOGHnjk0iiAYMzGGkeWzGbhjUcBE03bTQ+KNFwClDJVKcFIWY7hqjZsS2OE1q3CuUu00p6LGM1RrvkzFcL5aJLLJv19l+3RUMe/SGM1u+0KqqkQgbBdyi5PF0kaRfiEq6wUNMICPZneTK7MEzGFU/87FncJtZOan4snp80uKu+m8mp9gZaJN4c=
X-Microsoft-Exchange-Diagnostics: 1; VI1PR08MB3262;
 20:LS/CPun7pbPgjiOuuGuENhR4boJKttvJnjBCHr7YRCZNABv1C1MCOfT8hAYca7jWoytjJWGc6M1K8i9dMdUkpfXFOUjQNqydHd3LuzMYO2o1QKTMLi1T72rvkf/ng2UXjzTlVS6wrgYYnKL/akMndENqYd8Ga7MlSJplIQp/Yk8=
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Feb 2019 06:23:10.0355 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 96ee41a0-f6d0-4526-7100-08d6988e3765
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[40.67.248.234];
 Helo=[nebula.arm.com]
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB3262
Subject: [Minios-devel] [UNIKRAFT PATCHv6 17/23] plat/kvm: arm64: Clear
 pagetable memory with boot stack
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>, Jia He <justin.he@arm.com>,
 Wei Chen <wei.chen@arm.com>, Kaly Xin <Kaly.Xin@arm.com>,
 Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

RnJvbTogV2VpIENoZW4gPHdlaS5jaGVuQGFybS5jb20+ClRoZSBwYWdldGFibGUgbWVtb3J5IGFu
ZCBib290IHN0YWNrIGFyZSBjb250aWd1b3VzLCBzbyB3ZSBjYW4KY2xlYXIgdGhlc2UgdHdvIGFy
ZWFzIGF0IHRoZSBzYW1lIHRpbWUuCgpTaWduZWQtb2ZmLWJ5OiBXZWkgQ2hlbiA8d2VpLmNoZW5A
YXJtLmNvbT4KU2lnbmVkLW9mZi1ieTogSmlhIEhlIDxqdXN0aW4uaGVAYXJtLmNvbT4KUmV2aWV3
ZWQtYnk6IFNoYXJhbiBTYW50aGFuYW0gPHNoYXJhbi5zYW50aGFuYW1AbmVjbGFiLmV1PgotLS0K
IHBsYXQva3ZtL2FybS9lbnRyeTY0LlMgICAgIHwgMTUgKysrKysrKy0tLS0tLS0tCiBwbGF0L2t2
bS9hcm0vcGFnZXRhYmxlNjQuUyB8IDExIC0tLS0tLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDcg
aW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvcGxhdC9rdm0vYXJt
L2VudHJ5NjQuUyBiL3BsYXQva3ZtL2FybS9lbnRyeTY0LlMKaW5kZXggZjFiYmViNi4uZDA4YjQ5
ZSAxMDA2NDQKLS0tIGEvcGxhdC9rdm0vYXJtL2VudHJ5NjQuUworKysgYi9wbGF0L2t2bS9hcm0v
ZW50cnk2NC5TCkBAIC00MywxNyArNDMsMTYgQEAKCiAudGV4dAogRU5UUlkoX2xpYmt2bXBsYXRf
ZW50cnkpCi0gICAgICAgLyogQm9vdCBzdGFjayBpcyBwbGFjZWQgYWZ0ZXIgcGFnZXRhYmxlIGFy
ZWEgdGVtcG9yYXJpbHkgKi8KLSAgICAgICBsZHIgeDI2LCA9X2VuZAotICAgICAgIGFkZCB4MjYs
IHgyNiwgI1BBR0VfVEFCTEVfU0laRQotICAgICAgIGFkZCB4MjcsIHgyNiwgI19fU1RBQ0tfU0la
RQoKICAgICAgICAvKgotICAgICAgICAqIENsZWFuIHRoZSBib290IHN0YWNrLiBBcyBfZW5kLCBQ
QUdFX1RBQkxFX1NJWkUgYW5kIEJPT1RfU1RBQ0tfU0laRQotICAgICAgICAqIGFyZSBwYWdlX3Np
emUgYWxpZ25tZW50LCB0aGUgYm9vdCBzdGFjayBjYW4gYmUgNjQtYnl0ZXMgYWxpZ25tZW50Ci0g
ICAgICAgICogdG9vLiBFeGVjdXRlIDQgc3RwIGNvbnNlY3V0aXZlbHkgd2l0aG91dCBib3VuZGFy
eSBjaGVjayB3b3VsZCBiZQotICAgICAgICAqIHNhZmUgaGVyZS4KKyAgICAgICAgKiBDbGVhbiB0
aGUgYm9vdCBzdGFjayBhbmQgcGFnZSB0YWJsZS4gQXMgX2VuZCwgUEFHRV9UQUJMRV9TSVpFIGFu
ZAorICAgICAgICAqIEJPT1RfU1RBQ0tfU0laRSBhcmUgcGFnZV9zaXplIGFsaWdubWVudCwgdGhl
IGJvb3Qgc3RhY2sgY2FuIGJlCisgICAgICAgICogNjQtYnl0ZXMgYWxpZ25tZW50IHRvby4gRXhl
Y3V0ZSA0IHN0cCBjb25zZWN1dGl2ZWx5IHdpdGhvdXQgYm91bmRhcnkKKyAgICAgICAgKiBjaGVj
ayB3b3VsZCBiZSBzYWZlIGhlcmUuCiAgICAgICAgICovCisgICAgICAgbGRyIHgyNiwgPV9lbmQK
KyAgICAgICBhZGQgeDI3LCB4MjYsICNQQUdFX1RBQkxFX1NJWkUKKyAgICAgICBhZGQgeDI3LCB4
MjcsICNfX1NUQUNLX1NJWkUKIDE6CiAgICAgICAgc3RwIHh6ciwgeHpyLCBbeDI2XSwgIzE2CiAg
ICAgICAgc3RwIHh6ciwgeHpyLCBbeDI2XSwgIzE2CmRpZmYgLS1naXQgYS9wbGF0L2t2bS9hcm0v
cGFnZXRhYmxlNjQuUyBiL3BsYXQva3ZtL2FybS9wYWdldGFibGU2NC5TCmluZGV4IGNmMzA1ODQu
LmEwMGI3MWMgMTAwNjQ0Ci0tLSBhL3BsYXQva3ZtL2FybS9wYWdldGFibGU2NC5TCisrKyBiL3Bs
YXQva3ZtL2FybS9wYWdldGFibGU2NC5TCkBAIC03MCwxNyArNzAsNiBAQCBFTlRSWShjcmVhdGVf
cGFnZXRhYmxlcykKICAgICAgICAvKiBQYWdldGFibGUgc3RhcnRzIGZyb20gX2VuZCAqLwogICAg
ICAgIGxkciB4MTQsID1fZW5kCgotICAgICAgIC8qIENsZWFuIHRoZSBwYWdlIHRhYmxlICovCi0g
ICAgICAgbW92IHg2LCB4MTQKLSAgICAgICBhZGQgeDEzLCB4MTQsICNQQUdFX1RBQkxFX1NJWkUK
LTE6Ci0gICAgICAgc3RwICB4enIsIHh6ciwgW3g2XSwgIzE2Ci0gICAgICAgc3RwICB4enIsIHh6
ciwgW3g2XSwgIzE2Ci0gICAgICAgc3RwICB4enIsIHh6ciwgW3g2XSwgIzE2Ci0gICAgICAgc3Rw
ICB4enIsIHh6ciwgW3g2XSwgIzE2Ci0gICAgICAgY21wICB4NiwgeDEzCi0gICAgICAgYi5sbyAx
YgotCiAgICAgICAgLyoKICAgICAgICAgKiBXZSBoYXZlIDIgTDEgdGFibGVzIHRvIG1hcCAwIH4g
NTEyR0IsIDUxMiBHQiB+IDFUQi4KICAgICAgICAgKiBMaW5rIHRoZXNlIHR3byB0YWJsZXMgdG8g
TDAgZW50cmllcyMwLCAjMQotLQoyLjE3LjEKCklNUE9SVEFOVCBOT1RJQ0U6IFRoZSBjb250ZW50
cyBvZiB0aGlzIGVtYWlsIGFuZCBhbnkgYXR0YWNobWVudHMgYXJlIGNvbmZpZGVudGlhbCBhbmQg
bWF5IGFsc28gYmUgcHJpdmlsZWdlZC4gSWYgeW91IGFyZSBub3QgdGhlIGludGVuZGVkIHJlY2lw
aWVudCwgcGxlYXNlIG5vdGlmeSB0aGUgc2VuZGVyIGltbWVkaWF0ZWx5IGFuZCBkbyBub3QgZGlz
Y2xvc2UgdGhlIGNvbnRlbnRzIHRvIGFueSBvdGhlciBwZXJzb24sIHVzZSBpdCBmb3IgYW55IHB1
cnBvc2UsIG9yIHN0b3JlIG9yIGNvcHkgdGhlIGluZm9ybWF0aW9uIGluIGFueSBtZWRpdW0uIFRo
YW5rIHlvdS4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
Ck1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qu
b3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3Mt
ZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Fri Feb 22 06:23:40 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 22 Feb 2019 06:23:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gx4FI-0001ho-JK; Fri, 22 Feb 2019 06:23:40 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=WrH0=Q5=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1gx4FG-0001hj-TN
 for minios-devel@lists.xenproject.org; Fri, 22 Feb 2019 06:23:38 +0000
X-Inumbo-ID: 62b74fee-366a-11e9-bc90-bc764e045a96
Received: from EUR03-VE1-obe.outbound.protection.outlook.com (unknown
 [40.107.5.58]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 62b74fee-366a-11e9-bc90-bc764e045a96;
 Fri, 22 Feb 2019 06:23:37 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; 
 s=selector1-arm-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=DweYrxm/xB0468ID4w/vmk0d1XQZploCkOtd6G0N1lk=;
 b=Irx23jSWeYyxrCmadSBx8xd7v35RP8B4pgEYD40UPnH2UoYE6v8K4NmS3hG4MnBktR9oSRam8AFFNTCJVfgt7Fb/NZ2JZqY6XsDWcfShSBvQJBsgF3b7qnZwEjqb3AY8s/AKHKOovV0ELlws0lFBmM7peJXmh9eiEgGXE0LJXTs=
Received: from VI1PR0801CA0089.eurprd08.prod.outlook.com
 (2603:10a6:800:7d::33) by DB7PR08MB3260.eurprd08.prod.outlook.com
 (2603:10a6:5:1f::22) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1622.19; Fri, 22 Feb
 2019 06:23:19 +0000
Received: from DB5EUR03FT059.eop-EUR03.prod.protection.outlook.com
 (2a01:111:f400:7e0a::206) by VI1PR0801CA0089.outlook.office365.com
 (2603:10a6:800:7d::33) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1643.15 via Frontend
 Transport; Fri, 22 Feb 2019 06:23:19 +0000
Authentication-Results: spf=pass (sender IP is 40.67.248.234)
 smtp.mailfrom=arm.com; lists.xenproject.org; dkim=none (message not signed)
 header.d=none;lists.xenproject.org; dmarc=bestguesspass action=none
 header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 40.67.248.234 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.67.248.234; helo=nebula.arm.com;
Received: from nebula.arm.com (40.67.248.234) by
 DB5EUR03FT059.mail.protection.outlook.com (10.152.21.175) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.1643.11 via Frontend Transport; Fri, 22 Feb 2019 06:23:19 +0000
Received: from AZ-NEU-EX03.Arm.com (10.251.24.31) by AZ-NEU-EX03.Arm.com
 (10.251.24.31) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1415.2; Fri, 22 Feb
 2019 06:22:57 +0000
Received: from localhost.localdomain (10.169.40.37) by mail.arm.com
 (10.251.24.31) with Microsoft SMTP Server id 15.1.1415.2 via Frontend
 Transport; Fri, 22 Feb 2019 06:22:54 +0000
From: Jia He <justin.he@arm.com>
To: <minios-devel@lists.xenproject.org>, Simon Kuenzer
 <simon.kuenzer@neclab.eu>, <Sharan.Santhanam@neclab.eu>
Date: Fri, 22 Feb 2019 14:21:51 +0800
Message-ID: <20190222062200.26602-15-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190222062200.26602-1-justin.he@arm.com>
References: <20190222062200.26602-1-justin.he@arm.com>
MIME-Version: 1.0
X-EOPAttributedMessage: 0
X-MS-Office365-Filtering-HT: Tenant
X-Forefront-Antispam-Report: CIP:40.67.248.234; IPV:NLI; CTRY:US; EFV:NLI;
 SFV:NSPM;
 SFS:(10009020)(346002)(376002)(39860400002)(136003)(396003)(2980300002)(40434004)(189003)(199004)(97736004)(4326008)(72206003)(14444005)(5024004)(110136005)(49486002)(316002)(53936002)(50226002)(5660300002)(305945005)(1076003)(8676002)(81156014)(81166006)(54906003)(8936002)(8746002)(106002)(356004)(6666004)(336012)(186003)(26005)(77096007)(47776003)(2906002)(106466001)(126002)(51416003)(68736007)(48376002)(36756003)(50466002)(478600001)(486006)(11346002)(2616005)(86362001)(476003)(76176011)(446003)(426003);
 DIR:OUT; SFP:1101; SCL:1; SRVR:DB7PR08MB3260; H:nebula.arm.com; FPR:; SPF:Pass;
 LANG:en; PTR:InfoDomainNonexistent; MX:1; A:1; 
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id: 7e6f23cc-f9b2-4a7f-323f-08d6988e3cee
X-Microsoft-Antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(8989299)(5600110)(711020)(4605104)(4608103)(4709054)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060);
 SRVR:DB7PR08MB3260; 
X-MS-TrafficTypeDiagnostic: DB7PR08MB3260:
X-Microsoft-Exchange-Diagnostics: 1; DB7PR08MB3260;
 20:HFW2zoKlmzwgPgHN/R8DtWvsSuYvVLpTjUMDEQuDd5zicv+gr3eSajbhvXeo87Jv+81ZBqq+XsZZpgCgDjlNF/SIk7I41HpvnCDlNGfSJLxWULsOLh9HUhpWYKmaYdIPB/O0R+TSdiJ/cEvtPwOynLbjFKZZIZ0BMd55l74UFs2j13Emr6FKvpGPNUWYrsG82ofwsX9rmZiI9oyPvzxoZNXe7S5QQEVUTm09yAOO3Me2iYqL0ccFI7ll2JeLnq69roFfTxzlQ30fBhkEf9LMPgBp6mneOVn+RuNpf0cgSFJx40BRWyXKbGW/u0p/bwbuoifPZ3Cpshg9nnqV6QhgZa6mZZRdAI9aWb7ItlJA7g2ujk0i9FZUtG9hCp1UAPa7VHTXsa5QmhFH586r4dO8AX4e2doY3G8bGOGy3IgWDdmNzDJYX2wHaU8beBVVYz5ARBUbGF3Qnsz0ZSo+BwN2w2488HLlPcEIOslBU86R3UnQZelR0CH614C9muQFgTSq
X-Microsoft-Antispam-PRVS: <DB7PR08MB3260FB84B25C11C2C0834552F77F0@DB7PR08MB3260.eurprd08.prod.outlook.com>
X-Forefront-PRVS: 09565527D6
X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB7PR08MB3260;
 23:4McB1Pf2W/4o55bqNuBXSJNE/xAj8zplp7zbYe7Xf?=
 =?us-ascii?Q?t6j+dVodL2/LoGmWhhGRSyHaeaP2FfZjp71nYKJ8aC5Fw2zg6N/uXf7ERBpI?=
 =?us-ascii?Q?9SLY6wV7Wqr51iyFQLU8GeSpNJtYcwgSpbjzW3O2/3I1o2mUBiCeMUmCfk34?=
 =?us-ascii?Q?/fcalCqfkkUsg+y9pp9A+o7xVFyeICSwLShF62RLQVug3bm9ifmG6TxvhtrW?=
 =?us-ascii?Q?obiCoug/p6CTy0vucB8GHPnpLg6ZaUzJi44cCvRWoOH2BrouAqZxvXClUvZH?=
 =?us-ascii?Q?JRS8gTcpaPLCJMDJsk/7Hj0X0DhjJEPrjud4Ko6ytR7W0aZy66zOCd5bUPQA?=
 =?us-ascii?Q?wELiT4/TR6ZWFFjwItSRc5vnGEUfjU6pqv5VSbrVkDYVSqZDF6MVa7sYPMnp?=
 =?us-ascii?Q?mLCSKA43SWytMXCyucP12ZnnNpqRyDeMBIchtiwGyXi8F0frzibdDvRaShlG?=
 =?us-ascii?Q?DBdxNgSizCOILf5ER4Jiaw/UCz99mHQQqsg86OWwVUUURky5EOmSoyxyn/hA?=
 =?us-ascii?Q?Mkq6YVRMGaQvZFEHNran0YiqKv96mJXjntbmlUetySvxGE3L0nefeiaeCiB5?=
 =?us-ascii?Q?oJzOVy5eZFf5jbUyngr73TKHNz9gkTa8RGzOHzyhEFmQYOXWCrvaNl88hGUS?=
 =?us-ascii?Q?QHZnGkbNSqCXn/xU0t0WQ7db/YZNiLQA8Xkf+U/CLC9EBY1qMWFb3AkZr5rr?=
 =?us-ascii?Q?i8AfFO3tQBJqQzn3EQkpS6uUFF2zXkOUwBQTpUVUjoEZPGsoJ3eYv/NZxoPr?=
 =?us-ascii?Q?NRpjvBFp1vBfPdmRqTHGdXZsxchSQ5rr23u6qJmNIYEHIrum0zpSGQBd9phy?=
 =?us-ascii?Q?uDkPcNu0pR7hmveKS9tnmDlNyV1YorndJnlOM+/NijFEitYhtUeuNPBcLyFJ?=
 =?us-ascii?Q?Bcd9o9eEWLhthB7mm8tOz8L4BVsBzGRt0kHjHjyfwgH6ZlT9ETi/MZbWfXzQ?=
 =?us-ascii?Q?oUUW5UefRoF38MrTbgwp/P1VnCwVEngaP7JybaV8oBiEKPiHZjg9EOXyogME?=
 =?us-ascii?Q?jEWuD1o4gliIpTYDsHyPxvNMesUsLaKn1Ap1kfZmfBgJfkIJZOSoDPR2MW64?=
 =?us-ascii?Q?JvbM7sMQQAqFjVDWppVTBXrQl+XiwvuvjdMK3q51kIECRqhkdEvx8CYfY7UQ?=
 =?us-ascii?Q?5Bf3ud5/IHGcEL1oMpQwdoxvzewIc4iJd0d9NJh4DXd4XCiGxAF6MPbp5Qv1?=
 =?us-ascii?Q?APzCJ9hmgbj2cs=3D?=
X-MS-Exchange-SenderADCheck: 1
X-Microsoft-Antispam-Message-Info: oQbSeN+vw2XIDqQMYKkA+gNtC603stSJFqp5F/JUzgUmlkSJckuuFDkBiZ+epj9a9vo413p5wxb4N6lG9mb46ISseszmwig7IixUbZTCcw/RPC7jPvxGlx3hr7Drt7xv0H4WRrt1vNyklEgTOsnkBiPB5SzSywiJntu5QXKh/vdreagpA+2O0Qcg/lnjlgw5LAr5DlCOl7wqzFJmRcB63+F7jV1NvpDzttptmK0AznXDqCnEarjqHszUvG27SldWQlMdYTskkXcs2tN30tV1f3gMcikVPwAT9edXDvuwgldnST3MGwVMtr5BQdLUeU6ZHBYdrOVTNpWp78RLzizH1SroD2AmH7f8xadt5DhN/gnkemdfqMAt9SWzFjuh9WmV3vkf9J1aOgUDjMq+T/WJUQdB7zVCN06Wv2sVNzNUvcs=
X-Microsoft-Exchange-Diagnostics: 1; DB7PR08MB3260;
 20:Ednz2CBpBc3MXA0+xrA4E1p4UhRIiLciPYfaNl2ssoAfC5f33V6j3aKcmk6iJIagkHANDquYD5+4HV0YB7jH7YCHDFPVZjSF+dQv2NuJuQNHtaNLiaAbTarId555+ilRgLWkvWKMHQsb5QGbJo33Qs84jpjYY8Qcxw4rGU1jD7k=
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Feb 2019 06:23:19.4305 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 7e6f23cc-f9b2-4a7f-323f-08d6988e3cee
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[40.67.248.234];
 Helo=[nebula.arm.com]
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR08MB3260
Subject: [Minios-devel] [UNIKRAFT PATCHv6 14/23] plat/kvm: Force align the
 stack pointer for Arm64 EL1 exceptions
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>, Jia He <justin.he@arm.com>,
 Wei Chen <wei.chen@arm.com>, Kaly Xin <Kaly.Xin@arm.com>,
 Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

RnJvbTogV2VpIENoZW4gPHdlaS5jaGVuQGFybS5jb20+CklmIHdlIGVuYWJsZSB0aGUgU0NUTFJf
RUx4LlNBLCBBcm02NCBzdGFjayBwb2ludGVyIG11c3QgYmUgYWxpZ25lZCB0bwoxNi1ieXRlIGJl
Zm9yZSBiZWluZyB1c2VkIGFzIGJhc2UgYWRkcmVzcy4gQnV0IHNvbWUgdmFsaWQgRUwxIGV4Y2Vw
dGlvbnMKZG9uJ3QgZ3VhcmFudGVlIHRoYXQgU1BfRUwxIHdhcyBhbGlnbmVkIHdoZW4gZW50ZXJp
bmcgdGhlIGV4Y2VwdGlvbnMuCgpTaWduZWQtb2ZmLWJ5OiBXZWkgQ2hlbiA8d2VpLmNoZW5AYXJt
LmNvbT4KU2lnbmVkLW9mZi1ieTogSmlhIEhlIDxqdXN0aW4uaGVAYXJtLmNvbT4KLS0tCiBwbGF0
L2t2bS9hcm0vZXhjZXB0aW9ucy5TIHwgNjkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KystLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNTcgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25z
KC0pCgpkaWZmIC0tZ2l0IGEvcGxhdC9rdm0vYXJtL2V4Y2VwdGlvbnMuUyBiL3BsYXQva3ZtL2Fy
bS9leGNlcHRpb25zLlMKaW5kZXggZTRhNWM3NC4uNzA0YmQwYSAxMDA2NDQKLS0tIGEvcGxhdC9r
dm0vYXJtL2V4Y2VwdGlvbnMuUworKysgYi9wbGF0L2t2bS9hcm0vZXhjZXB0aW9ucy5TCkBAIC0y
OSw5ICsyOSw1MSBAQAogI2luY2x1ZGUgPHVrL2FyY2gvbGNwdS5oPgogI2luY2x1ZGUgPHVrL2Fz
bS5oPgoKKy5tYWNybyBFWENIQU5HRV9TUF9XSVRIX1gwCisgICAgICAgYWRkIHNwLCBzcCwgeDAg
IC8vIG5ld19zcCA9IHNwICsgeDAKKyAgICAgICBzdWIgeDAsIHNwLCB4MCAgLy8gbmV3X3gwID0g
bmV3X3NwIC0geDAgPSBzcCArIHgwIC0geDAgPSBzcAorICAgICAgIHN1YiBzcCwgc3AsIHgwICAv
LyBuZXdfc3AgPSBuZXdfc3AgLSBuZXdfeDAgPSBzcCArIHgwIC0gc3AgPSB4MAorLmVuZG0KKwor
Lm1hY3JvIEFMSUdOX1NUQUNLCisgICAgICAgLy8gRmlyc3QsIGV4Y2hhbmdlIHRoZSBTUCB3aXRo
IHgwCisgICAgICAgRVhDSEFOR0VfU1BfV0lUSF9YMAorCisgICAgICAgLy8gQ2hlY2sgd2hldGhl
ciB0aGUgc3RhY2sgaXMgYWxpZ25tZW50CisgICAgICAgdHN0IHgwLCAjMHhmCisgICAgICAgLy8g
SWYgeWVzLCBzYXZlIGFuZCBnbyBvdXQuIElmIG5vdCwgYWxpZ24gdGhlIHN0YWNrCisgICAgICAg
Yi5lcSAwZgorCisgICAgICAgLy8gU3RhcnQgdG8gYWxpZ24gdGhlIHN0YWNrLgorCisgICAgICAg
Ly8gV2Ugd2lsbCB1c2UgdGhlIHgxIGFzIHRlbXBvcmFyeSwgc2F2ZSB4MSB0byBzdGFjayB0ZW1w
b3JhcnkKKyAgICAgICBzdHIgeDEsIFt4MF0KKworICAgICAgIC8vIEFsaWduIGRvd24gc3AgdG8g
MTYtYnl0ZSwgc2F2ZSBvbGQgc3AgdG8gYWxpZ25lZF9zcFtfX1NQX09GRlNFVF0KKyAgICAgICBi
aWMgeDEsIHgwLCAjMHhmCisgICAgICAgc3RyIHgwLCBbeDEsICNfX1NQX09GRlNFVF0KKworICAg
ICAgIC8vIFJlc3RvcmUgeDEgYmVmb3JlIHgwIGlzIG92ZXJyaWRkZW4KKyAgICAgICBsZHIgeDEs
IFt4MF0KKworICAgICAgIC8vIFNhdmUgYWxpZ25lZF9zcCB0byB4MAorICAgICAgIGJpYyB4MCwg
eDAsICMweGYKKyAgICAgICBiIDFmCiswOgorICAgICAgIHN0ciB4MCwgW3gwLCAjX19TUF9PRkZT
RVRdCisxOgorICAgICAgIC8vIENoYW5nZSBiYWNrIHRoZSBTUCBmcm9tIHgwCisgICAgICAgRVhD
SEFOR0VfU1BfV0lUSF9YMAorLmVuZG0KKwogLm1hY3JvIEVOVEVSX1RSQVAsIGVsCiAgICAgICAg
c3ViIHNwLCBzcCwgI19fVFJBUF9TVEFDS19TSVpFCgorLmlmICAgIFxlbCAhPSAwCisgICAgICAg
LyogRm9yY2UgYWxpZ24gdGhlIHN0YWNrLCBhbmQgc2F2ZSBTUCB0byBfX1NQX09GRlNFVCAqLwor
ICAgICAgIEFMSUdOX1NUQUNLCisuZW5kaWYKKwogICAgICAgIC8qIFNhdmUgZ2VuZXJhbCBwdXJw
b3NlIHJlZ2lzdGVycyAqLwogICAgICAgIHN0cCB4MCwgeDEsIFtzcCwgIzE2ICogMF0KICAgICAg
ICBzdHAgeDIsIHgzLCBbc3AsICMxNiAqIDFdCkBAIC01OCwyNSArMTAwLDE3IEBACiAgICAgICAg
bXJzIHgyMywgZXNyX2VsMQogICAgICAgIHN0cCB4MjIsIHgyMywgW3NwLCAjMTYgKiAxNl0KCi0g
ICAgICAgLyogU2F2ZSBzdGFjayBwb2ludGVyIGZvciBsb3dlciBsZXZlbCBleGNlcHRpb24gKi8K
IC5pZiBcZWwgPT0gMAorICAgICAgIC8qIFNhdmUgc3RhY2sgcG9pbnRlciBmb3IgbG93ZXIgbGV2
ZWwgZXhjZXB0aW9uICovCiAgICAgICAgbXJzIHgxOCwgc3BfZWwwCi0uZWxzZQotICAgICAgIGFk
ZCB4MTgsIHNwLCAjX19UUkFQX1NUQUNLX1NJWkUKKyAgICAgICBzdHIgeDE4LCBbc3AsICNfX1NQ
X0VMMF9PRkZTRVRdCiAuZW5kaWYKLSAgICAgICBzdHIgeDE4LCBbc3AsICMxNiAqIDE3XQorCiAu
ZW5kbQoKIC5tYWNybyBMRUFWRV9UUkFQLCBlbAogICAgICAgIC8qIE1hc2sgSVJRIHRvIG1ha2Ug
c3VyZSByZXN0b3JlIHdvdWxkIG5vdCBiZSBpbnRlcnJ1cHRlZCBieSBJUlEgKi8KICAgICAgICBt
c3IgZGFpZnNldCwgIzIKLQotICAgICAgIC8qIFJlc3RvcmUgc3RhY2sgcG9pbnRlciBmb3IgbG93
ZXIgbGV2ZWwgZXhjZXB0aW9uICovCi0gICAgICAgbGRyIHgxOCwgW3NwLCAjMTYgKiAxN10KLS5p
ZiBcZWwgPT0gMAotICAgICAgIG1zciBzcF9lbDAsIHgxOAotLmVuZGlmCi0KICAgICAgICAvKiBS
ZXN0b3JlIHBzdGF0ZSBhbmQgZXhjZXB0aW9uIHN0YXR1cyByZWdpc3RlciAqLwogICAgICAgIGxk
cCB4MjIsIHgyMywgW3NwLCAjMTYgKiAxNl0KICAgICAgICBtc3Igc3Bzcl9lbDEsIHgyMgpAQCAt
OTIsNyArMTI2LDYgQEAKICAgICAgICBsZHAgeDI0LCB4MjUsIFtzcCwgIzE2ICogMTJdCiAgICAg
ICAgbGRwIHgyMiwgeDIzLCBbc3AsICMxNiAqIDExXQogICAgICAgIGxkcCB4MjAsIHgyMSwgW3Nw
LCAjMTYgKiAxMF0KLSAgICAgICBsZHAgeDE4LCB4MTksIFtzcCwgIzE2ICogOV0KICAgICAgICBs
ZHAgeDE2LCB4MTcsIFtzcCwgIzE2ICogOF0KICAgICAgICBsZHAgeDE0LCB4MTUsIFtzcCwgIzE2
ICogN10KICAgICAgICBsZHAgeDEyLCB4MTMsIFtzcCwgIzE2ICogNl0KQEAgLTEwMyw4ICsxMzYs
MjAgQEAKICAgICAgICBsZHAgeDIsIHgzLCBbc3AsICMxNiAqIDFdCiAgICAgICAgbGRwIHgwLCB4
MSwgW3NwLCAjMTYgKiAwXQoKKy5pZiBcZWwgPT0gMAorICAgICAgIC8qIFJlc3RvcmUgc3RhY2sg
cG9pbnRlciBmb3IgZXhjZXB0aW9uIGZyb20gRUwwICovCisgICAgICAgbGRyIHgxOCwgW3NwLCAj
X19TUF9FTDBfT0ZGU0VUXQorICAgICAgIG1zciBzcF9lbDAsIHgxOAorLmVsc2UKKyAgICAgICAv
KiBSZXN0b3JlIHN0YWNrIHBvaW50ZXIgZm9yIGV4Y2VwdGlvbiBmcm9tIEVMMSAqLworICAgICAg
IGxkciB4MTgsIFtzcCwgI19fU1BfT0ZGU0VUXQorICAgICAgIG1vdiBzcCwgeDE4CisuZW5kaWYK
ICAgICAgICBhZGQgc3AsIHNwLCAjX19UUkFQX1NUQUNLX1NJWkUKCisgICAgICAgLyogUmVzdG9y
ZSB4MTgseDE5ICovCisgICAgICAgbGRwIHgxOCwgeDE5LCBbc3AsICMxNiAqIDldCisKICAgICAg
ICBlcmV0CiAuZW5kbQoKLS0KMi4xNy4xCgpJTVBPUlRBTlQgTk9USUNFOiBUaGUgY29udGVudHMg
b2YgdGhpcyBlbWFpbCBhbmQgYW55IGF0dGFjaG1lbnRzIGFyZSBjb25maWRlbnRpYWwgYW5kIG1h
eSBhbHNvIGJlIHByaXZpbGVnZWQuIElmIHlvdSBhcmUgbm90IHRoZSBpbnRlbmRlZCByZWNpcGll
bnQsIHBsZWFzZSBub3RpZnkgdGhlIHNlbmRlciBpbW1lZGlhdGVseSBhbmQgZG8gbm90IGRpc2Ns
b3NlIHRoZSBjb250ZW50cyB0byBhbnkgb3RoZXIgcGVyc29uLCB1c2UgaXQgZm9yIGFueSBwdXJw
b3NlLCBvciBzdG9yZSBvciBjb3B5IHRoZSBpbmZvcm1hdGlvbiBpbiBhbnkgbWVkaXVtLiBUaGFu
ayB5b3UuCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpN
aW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9y
ZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRl
dmVs

From minios-devel-bounces@lists.xenproject.org Fri Feb 22 06:23:46 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 22 Feb 2019 06:23:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gx4FO-0001iZ-L7; Fri, 22 Feb 2019 06:23:46 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=WrH0=Q5=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1gx4FM-0001iF-Iw
 for minios-devel@lists.xenproject.org; Fri, 22 Feb 2019 06:23:44 +0000
X-Inumbo-ID: 65ec7336-366a-11e9-bc90-bc764e045a96
Received: from EUR02-HE1-obe.outbound.protection.outlook.com (unknown
 [2a01:111:f400:fe05::61f])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 65ec7336-366a-11e9-bc90-bc764e045a96;
 Fri, 22 Feb 2019 06:23:42 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; 
 s=selector1-arm-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=ZMJ8kHcLDkLu3XvkJs3Ag0D7NtP9SOjDhlm0+gxGvws=;
 b=VuREr+LzZGfOhOz0besAcgC5/fYrTpnjgOKEcWIG+L3AppSNESPcuq52E1XQpNvuaPl+6r5U8DtYSoj4ZLaK0EUE+uDKl/wk1MRyBW4rM/WlpGBV+9FMITXPE1uWajLVHPymeEypkXAJkeCWYHf2GlcHq7CpaOlC4+q9EmNCp6g=
Received: from VI1PR0801CA0080.eurprd08.prod.outlook.com
 (2603:10a6:800:7d::24) by DB5PR0801MB1479.eurprd08.prod.outlook.com
 (2603:10a6:0:3a::9) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1622.19; Fri, 22 Feb
 2019 06:23:38 +0000
Received: from DB5EUR03FT063.eop-EUR03.prod.protection.outlook.com
 (2a01:111:f400:7e0a::204) by VI1PR0801CA0080.outlook.office365.com
 (2603:10a6:800:7d::24) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.1643.15 via Frontend
 Transport; Fri, 22 Feb 2019 06:23:38 +0000
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 40.67.248.234 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.67.248.234; helo=nebula.arm.com;
Received: from nebula.arm.com (40.67.248.234) by
 DB5EUR03FT063.mail.protection.outlook.com (10.152.20.209) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id
 15.20.1643.11 via Frontend Transport; Fri, 22 Feb 2019 06:23:38 +0000
Received: from AZ-NEU-EX03.Arm.com (10.251.24.31) by AZ-NEU-EX03.Arm.com
 (10.251.24.31) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1415.2; Fri, 22 Feb
 2019 06:23:00 +0000
Received: from localhost.localdomain (10.169.40.37) by mail.arm.com
 (10.251.24.31) with Microsoft SMTP Server id 15.1.1415.2 via Frontend
 Transport; Fri, 22 Feb 2019 06:22:57 +0000
From: Jia He <justin.he@arm.com>
To: <minios-devel@lists.xenproject.org>, Simon Kuenzer
 <simon.kuenzer@neclab.eu>, <Sharan.Santhanam@neclab.eu>
Date: Fri, 22 Feb 2019 14:21:52 +0800
Message-ID: <20190222062200.26602-16-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190222062200.26602-1-justin.he@arm.com>
References: <20190222062200.26602-1-justin.he@arm.com>
MIME-Version: 1.0
X-EOPAttributedMessage: 0
X-MS-Office365-Filtering-HT: Tenant
X-Forefront-Antispam-Report: CIP:40.67.248.234; IPV:NLI; CTRY:US; EFV:NLI;
 SFV:NSPM;
 SFS:(10009020)(39860400002)(376002)(346002)(136003)(396003)(2980300002)(40434004)(189003)(199004)(72206003)(97736004)(186003)(36756003)(106002)(81156014)(77096007)(1076003)(478600001)(81166006)(356004)(54906003)(110136005)(26005)(6346003)(86362001)(316002)(6666004)(8676002)(2906002)(305945005)(47776003)(49486002)(486006)(14444005)(48376002)(126002)(476003)(50226002)(336012)(8936002)(76176011)(11346002)(5024004)(68736007)(426003)(4326008)(106466001)(50466002)(51416003)(5660300002)(2616005)(446003)(53936002)(8746002);
 DIR:OUT; SFP:1101; SCL:1; SRVR:DB5PR0801MB1479; H:nebula.arm.com; FPR:;
 SPF:Pass; LANG:en; PTR:InfoDomainNonexistent; MX:1; A:1; 
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id: 9a1d6f70-9796-49ce-5d97-08d6988e480b
X-Microsoft-Antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(8989299)(5600110)(711020)(4605104)(4608103)(4709054)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060);
 SRVR:DB5PR0801MB1479; 
X-MS-TrafficTypeDiagnostic: DB5PR0801MB1479:
X-Microsoft-Exchange-Diagnostics: 1; DB5PR0801MB1479;
 20:4yHB6lX9k9pOZGDBLQ7u5+SJgLzK6f8IFFhI129dQ2Nb5+2vKjUN6XcXykGaSass9bsd68YUdPxcHVEyQPXqjYmuapMorxQAKbgdH6gHsTsggoOCSTpB5z/EiPkbLZ1C6MLZHC/FGCwdeNyK6gH4ZIcJpAnBEMDmH0Xt9V9fVo4Fpwt4SOtDjLEmacFMkkibuA1xDXbHUMjM46iEqOKgbTGiPA95QxzawLL+7SmAc55v59hW1blZSloB6cEJYQuaYuBN5G/FAxqYw3Dr+l1Y8hw6Qm4Ae5xhSMYmSnknKSoWZT55HX/+VmM5hxQPisLyEYc/S2CccmA2Ci4gb6VuCy3O+j7aZOaPAxuJfTGnQXEZb1v6yLCPkCqPPmXHQwF7J5w5EpFeLzm+V0+8R57TS6j1BXfe0eELrUx7MFAG3lAckozPAL8nho38IG2Z/J2XHlC3lCiZmR0pBI/qbsgByfJmCFrLOpBqZxLADxebYtL7CzDtkos58suA8OSPRPr5
X-Microsoft-Antispam-PRVS: <DB5PR0801MB1479DFEB0FB1564EFEFA7243F77F0@DB5PR0801MB1479.eurprd08.prod.outlook.com>
X-Forefront-PRVS: 09565527D6
X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB5PR0801MB1479;
 23:YPhJDghbLisR8eAefGXgIQKeZB6+2zAUcIYteJQ?=
 =?us-ascii?Q?nTuQ/ZZ2733ZN86UjWSQBnJp5YkNVu9Y3azHu30AJDkxWfYlsAHBMSWJ1M0K?=
 =?us-ascii?Q?bTQjKhk/B1WmJ1yIHud2zkh8uWyYE7iTUtYauPO5iBOBEHIe4kMXE/92Kgr1?=
 =?us-ascii?Q?fPNQXEO0mRDEzSMTjc5O4e4vtnbWFa1c8Xc8GFTXHu5YA3zJd94Xp0glKSyb?=
 =?us-ascii?Q?rPm+tVpQcDLDh3IGnCJTWx2oRr3lmTE9/fdd/NAxNdj0hBUPlym1XiGxNPnR?=
 =?us-ascii?Q?S+aKXFffooHpy7MRmBMV/Fi0EvptZ4DIn3DxtUlRkIPnyLxYhZtKliTTIIRw?=
 =?us-ascii?Q?iO8uVTDdTkcNLSt0OyiRE9rxn8LAAv1eHxP5U8Yp6X7mKPF2RXa8HiCPZ2+r?=
 =?us-ascii?Q?qozPZ8XJ8nFY2YXCd8+cfgI+OcEtLHiZbbEispfTnJ2LwvK8eNE0FU5kx/8y?=
 =?us-ascii?Q?JG78peaLMOOzMOJmPPzqScwHvby4o0+Sk9IVFQ9wNEmIwqdgzYv03hTzRR0e?=
 =?us-ascii?Q?ApOLncGI0nYXd/rsBQhqkzMwXWIT4uK7bG1+BTO4aiI7x2SKe/r7DOB/TEH1?=
 =?us-ascii?Q?1rU/XMpCzjHNb39uDst2K0rR41W2wu6994jZZHADl54XUsV2hhiXtKw88/ZQ?=
 =?us-ascii?Q?5Y1Gw59kk4UERknyohQjHYiThcfOtFruu9UH1XpcktFHgunf26l/34QvzpGo?=
 =?us-ascii?Q?aI43PhxnWUEYpl8UTdANNitGfitEP0d+VDpVts4rC5mzgzYFytqMAeMG4iLI?=
 =?us-ascii?Q?Ak281kk+Ta5cRggXD0tqIpPR1YrNqwUAVDW6ElXb+NLQrmqmDmvRXiz411O3?=
 =?us-ascii?Q?K+7RiGADBzJl4MvsuCme6Dt8d4pKiAFxPZELHG/V9CJf8/1JI8g8OMISjufs?=
 =?us-ascii?Q?5zBjVDqJwwMn21I0LTIYapiNe2NZyyxUktbBx1DGOWRiqc649hnNabw+/2Kb?=
 =?us-ascii?Q?jK9TNbQxoiSICVDlX9qO1LxBRH2PKJK9WDCdbZb8S3YFKDcpe/+RDnnxdKMK?=
 =?us-ascii?Q?3sXvmwoHZUdA9KZ8zXu3i8g+94lJcCjfcbI5wEq4tJAFOeMzlqHRKHWMyWua?=
 =?us-ascii?Q?0DHnc4PyO3MdJernzMvpCtOKsg3O6aq8JpjIEMNckyeCqD7ubRERwDAtW7Vl?=
 =?us-ascii?Q?WRlPU512P0+vfPQWHjhoigDk9S1Xoqm8XFKUStr/nQBGciodicff9HIH9yB5?=
 =?us-ascii?Q?YLeS7bI+Nu6DrHyM=3D?=
X-MS-Exchange-SenderADCheck: 1
X-Microsoft-Antispam-Message-Info: lU4lmmA29zLfHx7130ycIbXyfbIN/liykp+aPKQf98r0E+LmxspOSIKVQzgi5LFoe5kaLcQJ6xMgj+CFSUdELzQIROMQNejYbHprh2ZOWXMEqnhp6ciwhfA6KRTn444CHaWxH2QTYzB83xb0mJWzfQFcSpCoM0tgBe5lJkxt5QX/amZZgmuEw7Tl+m08PUl1TGxZn7gg9C/tTykyaaqVEyL2/4GYO6SYbAdmzgTa/+Jcq2lzl9u0ySPTwq8AOZnuqj9/Pi0rRbN/eiYpVGcYVia0U5pWEVbvNZBkVV8AekJLKlwpeUyILpK8WLLqY/zJ/Zxt35qDcEa1b7ufpJwo1WSQnkCI5oqe70ZZVg1vyoOgirdJ8aMOYL8JGec60cFzYsuV1S98E5hSlz+9m0JWJvQ9MVcO2eqil+ojlrGoNfU=
X-Microsoft-Exchange-Diagnostics: 1; DB5PR0801MB1479;
 20:/Y1PefN3/WXe7AaIJuHLx1ospjQfRyWa4CT2AT+i6LBCpfRWicb5Wpkm8uCM6SQ35VslfP0gcvfbs6OQrOhcddXVeBfxns4usYWcwGVm4sODUMfaQafu/iHVnaRiBdVYs6M2XVZpgpxTGs7RehKhmPdASumVWPkbnWQxgDjDCjg=
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Feb 2019 06:23:38.0856 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 9a1d6f70-9796-49ce-5d97-08d6988e480b
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[40.67.248.234];
 Helo=[nebula.arm.com]
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB5PR0801MB1479
Subject: [Minios-devel] [UNIKRAFT PATCHv6 15/23] plat/kvm: Rename
 pagetable.S to pagetable64.S for Arm64
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>, Jia He <justin.he@arm.com>,
 Wei Chen <wei.chen@arm.com>, Kaly Xin <Kaly.Xin@arm.com>,
 Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

RnJvbTogV2VpIENoZW4gPHdlaS5jaGVuQGFybS5jb20+ClRoaXMgZmlsZSBpcyBmb3IgQXJtNjQg
b25seSwgc28gd2UgcmVuYW1lIGl0IHRvIHBhZ2V0YWJsZTY0LlMuCgpTaWduZWQtb2ZmLWJ5OiBX
ZWkgQ2hlbiA8d2VpLmNoZW5AYXJtLmNvbT4KU2lnbmVkLW9mZi1ieTogSmlhIEhlIDxqdXN0aW4u
aGVAYXJtLmNvbT4KUmV2aWV3ZWQtYnk6IFNoYXJhbiBTYW50aGFuYW0gPHNoYXJhbi5zYW50aGFu
YW1AbmVjbGFiLmV1PgotLS0KIHBsYXQva3ZtL01ha2VmaWxlLnVrICAgICAgICAgICAgICAgICAg
ICAgICAgfCAyICstCiBwbGF0L2t2bS9hcm0ve3BhZ2V0YWJsZS5TID0+IHBhZ2V0YWJsZTY0LlN9
IHwgMAogMiBmaWxlcyBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogcmVu
YW1lIHBsYXQva3ZtL2FybS97cGFnZXRhYmxlLlMgPT4gcGFnZXRhYmxlNjQuU30gKDEwMCUpCgpk
aWZmIC0tZ2l0IGEvcGxhdC9rdm0vTWFrZWZpbGUudWsgYi9wbGF0L2t2bS9NYWtlZmlsZS51awpp
bmRleCAxOWFkM2Q2Li42MjBjNjI2IDEwMDY0NAotLS0gYS9wbGF0L2t2bS9NYWtlZmlsZS51awor
KysgYi9wbGF0L2t2bS9NYWtlZmlsZS51awpAQCAtNjQsNyArNjQsNyBAQCBMSUJLVk1QTEFUX1NS
Q1MtJChDT05GSUdfQVJDSF9BUk1fNjQpICs9ICQoVUtfUExBVF9DT01NT05fQkFTRSkvYXJtL3Rp
bWUuY3xjb21tbwogTElCS1ZNUExBVF9TUkNTLSQoQ09ORklHX0FSQ0hfQVJNXzY0KSArPSAkKFVL
X1BMQVRfQ09NTU9OX0JBU0UpL2FybS90cmFwcy5jfGNvbW1vbgogTElCS1ZNUExBVF9TUkNTLSQo
Q09ORklHX0FSQ0hfQVJNXzY0KSArPSAkKExJQktWTVBMQVRfQkFTRSkvYXJtL2VudHJ5NjQuUwog
TElCS1ZNUExBVF9TUkNTLSQoQ09ORklHX0FSQ0hfQVJNXzY0KSArPSAkKExJQktWTVBMQVRfQkFT
RSkvYXJtL2V4Y2VwdGlvbnMuUwotTElCS1ZNUExBVF9TUkNTLSQoQ09ORklHX0FSQ0hfQVJNXzY0
KSArPSAkKExJQktWTVBMQVRfQkFTRSkvYXJtL3BhZ2V0YWJsZS5TCitMSUJLVk1QTEFUX1NSQ1Mt
JChDT05GSUdfQVJDSF9BUk1fNjQpICs9ICQoTElCS1ZNUExBVF9CQVNFKS9hcm0vcGFnZXRhYmxl
NjQuUwogTElCS1ZNUExBVF9TUkNTLSQoQ09ORklHX0FSQ0hfQVJNXzY0KSArPSAkKExJQktWTVBM
QVRfQkFTRSkvYXJtL3NldHVwLmMKIExJQktWTVBMQVRfU1JDUy0kKENPTkZJR19BUkNIX0FSTV82
NCkgKz0gJChMSUJLVk1QTEFUX0JBU0UpL2FybS9sY3B1LmMKIExJQktWTVBMQVRfU1JDUy0kKENP
TkZJR19BUkNIX0FSTV82NCkgKz0gJChMSUJLVk1QTEFUX0JBU0UpL2FybS9pbnRjdHJsLmMKZGlm
ZiAtLWdpdCBhL3BsYXQva3ZtL2FybS9wYWdldGFibGUuUyBiL3BsYXQva3ZtL2FybS9wYWdldGFi
bGU2NC5TCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwbGF0L2t2bS9hcm0vcGFn
ZXRhYmxlLlMKcmVuYW1lIHRvIHBsYXQva3ZtL2FybS9wYWdldGFibGU2NC5TCi0tCjIuMTcuMQoK
SU1QT1JUQU5UIE5PVElDRTogVGhlIGNvbnRlbnRzIG9mIHRoaXMgZW1haWwgYW5kIGFueSBhdHRh
Y2htZW50cyBhcmUgY29uZmlkZW50aWFsIGFuZCBtYXkgYWxzbyBiZSBwcml2aWxlZ2VkLiBJZiB5
b3UgYXJlIG5vdCB0aGUgaW50ZW5kZWQgcmVjaXBpZW50LCBwbGVhc2Ugbm90aWZ5IHRoZSBzZW5k
ZXIgaW1tZWRpYXRlbHkgYW5kIGRvIG5vdCBkaXNjbG9zZSB0aGUgY29udGVudHMgdG8gYW55IG90
aGVyIHBlcnNvbiwgdXNlIGl0IGZvciBhbnkgcHVycG9zZSwgb3Igc3RvcmUgb3IgY29weSB0aGUg
aW5mb3JtYXRpb24gaW4gYW55IG1lZGl1bS4gVGhhbmsgeW91LgoKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApN
aW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0
Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Fri Feb 22 06:23:46 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 22 Feb 2019 06:23:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gx4FO-0001ie-Mm; Fri, 22 Feb 2019 06:23:46 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=WrH0=Q5=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1gx4FM-0001iE-Ix
 for minios-devel@lists.xenproject.org; Fri, 22 Feb 2019 06:23:44 +0000
X-Inumbo-ID: 66655083-366a-11e9-bc90-bc764e045a96
Received: from EUR01-VE1-obe.outbound.protection.outlook.com (unknown
 [2a01:111:f400:fe1f::61b])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 66655083-366a-11e9-bc90-bc764e045a96;
 Fri, 22 Feb 2019 06:23:43 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; 
 s=selector1-arm-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=i2+Adkbry5/7CjS7/QtiSxyaD0M6aCKtMTdl3rRLm3E=;
 b=cGj5DkZYewAuoFdijMuhd5NlIMLH4YUBI/xtSjf2E/1iqfkCyy65DcwOGD13fL6PWUFJmxK9O6KqOYKDureBQdqCNEFkQWZDckaEjTYw1XgdbqbjvvXe7uNsYo6UbPTeqiAAIMuV4QiDGg/bRbuDSHCzjM0qIY1BqaszTRBudwQ=
Received: from VI1PR0801CA0080.eurprd08.prod.outlook.com
 (2603:10a6:800:7d::24) by VI1PR0801MB1488.eurprd08.prod.outlook.com
 (2603:10a6:800:18::10) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1643.14; Fri, 22 Feb
 2019 06:23:37 +0000
Received: from DB5EUR03FT063.eop-EUR03.prod.protection.outlook.com
 (2a01:111:f400:7e0a::204) by VI1PR0801CA0080.outlook.office365.com
 (2603:10a6:800:7d::24) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.1643.15 via Frontend
 Transport; Fri, 22 Feb 2019 06:22:55 +0000
Authentication-Results: spf=pass (sender IP is 40.67.248.234)
 smtp.mailfrom=arm.com; lists.xenproject.org; dkim=none (message not signed)
 header.d=none;lists.xenproject.org; dmarc=bestguesspass action=none
 header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 40.67.248.234 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.67.248.234; helo=nebula.arm.com;
Received: from nebula.arm.com (40.67.248.234) by
 DB5EUR03FT063.mail.protection.outlook.com (10.152.20.209) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id
 15.20.1643.11 via Frontend Transport; Fri, 22 Feb 2019 06:22:55 +0000
Received: from AZ-NEU-EX03.Arm.com (10.251.24.31) by AZ-NEU-EX03.Arm.com
 (10.251.24.31) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1415.2; Fri, 22 Feb
 2019 06:22:53 +0000
Received: from localhost.localdomain (10.169.40.37) by mail.arm.com
 (10.251.24.31) with Microsoft SMTP Server id 15.1.1415.2 via Frontend
 Transport; Fri, 22 Feb 2019 06:22:50 +0000
From: Jia He <justin.he@arm.com>
To: <minios-devel@lists.xenproject.org>, Simon Kuenzer
 <simon.kuenzer@neclab.eu>, <Sharan.Santhanam@neclab.eu>
Date: Fri, 22 Feb 2019 14:21:50 +0800
Message-ID: <20190222062200.26602-14-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190222062200.26602-1-justin.he@arm.com>
References: <20190222062200.26602-1-justin.he@arm.com>
MIME-Version: 1.0
X-EOPAttributedMessage: 0
X-MS-Office365-Filtering-HT: Tenant
X-Forefront-Antispam-Report: CIP:40.67.248.234; IPV:NLI; CTRY:US; EFV:NLI;
 SFV:NSPM;
 SFS:(10009020)(376002)(39860400002)(136003)(396003)(346002)(2980300002)(199004)(189003)(40434004)(81156014)(81166006)(76176011)(26005)(54906003)(4326008)(336012)(11346002)(51416003)(476003)(110136005)(50226002)(8936002)(14444005)(316002)(2616005)(5024004)(446003)(126002)(47776003)(486006)(77096007)(97736004)(186003)(426003)(4744005)(72206003)(305945005)(8676002)(36756003)(8746002)(49486002)(106002)(86362001)(356004)(68736007)(5660300002)(53936002)(106466001)(478600001)(1076003)(48376002)(2906002)(50466002);
 DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR0801MB1488; H:nebula.arm.com; FPR:;
 SPF:Pass; LANG:en; PTR:InfoDomainNonexistent; A:1; MX:1; 
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id: 237fdb78-f631-4fa6-04a1-08d6988e2e5f
X-Microsoft-Antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(8989299)(5600110)(711020)(4605104)(4608103)(4709054)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060);
 SRVR:VI1PR0801MB1488; 
X-MS-TrafficTypeDiagnostic: VI1PR0801MB1488:
X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1488;
 20:ASLpwjTj8llBxG/WAwT0Uv4PRdDc+Gj+Ffd14SUI3ddYOnMcmCRcTTYe/mY5pRiHHZnuituIM/551gOcSm4aNs1+5epima5enTKzezm/BZDWD00rVgewrNvDv1XlZzt5CQqS6XairxKGb+5z+I5kb19WgLXdXqRkbtsb6iAaeB1iOAie8HgA9UXpsoskQie0mp10rjOXr1lK6s8Yq/211HWbV7mSPt+iar791fxSTRjLVrWYV+2KmwcYDDuzXSOi18WPDo0IOj7clEdi9NSO1BP76/gQuWuq14/NAbl8/RxWDpNhREY1pVBRPAoo6i3optyLCkvtq2UR257bX9gAlc6/cYJivzpqW6aFOO83D+8K2GZtrmVGGoWLeZM+os0B3KyoM34THyCYpGH8fVf3OX3Ms4KnG+9tR5zL4cEkIOjbxstq/XmbYZ/ahX5w6cNiN8TDSheNpJxSGF5jTQNCeIZdDacV4ZMqMxLr7qy11db5XSy1dazHRvJw5iskHsXo
X-Microsoft-Antispam-PRVS: <VI1PR0801MB148840AF8CB71B275C56E873F77F0@VI1PR0801MB1488.eurprd08.prod.outlook.com>
X-Forefront-PRVS: 09565527D6
X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0801MB1488;
 23:DUQHo6AUU+Tlwmdv8kJFhbCXSPm1ibbhrpic2Ug?=
 =?us-ascii?Q?Gq1418CagjTwlYAqxFaEZsDerl0UQLqPdB9yKFn+dfZZZHH9+q5XTIcdzvbM?=
 =?us-ascii?Q?IVMuVyvbZIUGFcKfXjPImuVrfDknkO+k9+aSdFnw2yPXPZic9JFlWbQwJxhx?=
 =?us-ascii?Q?o0TBv86FSvx1Jnd8iiWGXmP8HEF84j8/f0SPZg1v4/hMnaLdEV+UI01I5bK9?=
 =?us-ascii?Q?7+7FCt8aqOk583Qt4nn0WZ9msuXg3cETPXCsT+l+uiT9iBdMFoxnPOdiI36q?=
 =?us-ascii?Q?JTdPiBIVLvYu8DYHbBy1zLUiMfMyaN5l7ksgRkj5nj2ZV4YE5gUl8wMIe5OF?=
 =?us-ascii?Q?vhrhkNr8S4FmYXgedc4zqj1fhOsMVDvTJNrhhaG6ml8SHPzQ2dBdUl1spPVY?=
 =?us-ascii?Q?rvG46EGkEchALJjrBF8bAGzI6PxomvYrPvrxjYYvYFNilxWhuXZqfD1+5/vI?=
 =?us-ascii?Q?6dZP5Z39diL4DZISik98MA9BVaPZ7TpmgxKZofV6Lmef8/FTSawGczd+Wve3?=
 =?us-ascii?Q?bDCQReYzV2EIE2EBOCr5l/jdPVqt/aHiV8XTgb98yEYQ5ays8DB8WVcc1xQ1?=
 =?us-ascii?Q?YG5COl+rST9znUSvXwJCFfAEX+g7Aiz9r5wBPm/iuCBopkkIk23Xp8Qg/saE?=
 =?us-ascii?Q?aRpnnod6Fn4nzQAIBrOAk+CwoPC1qCFAhZSKwGtlTNGf8HX2mj5Et+5ISJ6n?=
 =?us-ascii?Q?by4B0fAvyXMZ4wkWZk7FcoPyMQ5casjPmG/oaDKhLsHjQuawvWqZYjficuZ5?=
 =?us-ascii?Q?+j0+hTiMWiJlXcnYeAw+foNMLv0TMQG/MT2+tw7VcdVu+ID/ITIM5c0u9mJL?=
 =?us-ascii?Q?9tdUPTjGW392+2qvltMeGAx8Zr4xw3lu7xESKRLRt33KSRoXkzojpgl2G8BC?=
 =?us-ascii?Q?LUYqpS8VxLqNvrC4p31kkX7J1At9GX+OYzcQXfvLdvfvntB7VQsvPJh4Pp1D?=
 =?us-ascii?Q?0TpKByw95OdEwCzx6Uvnec38z0JqzvtoRqak42EmlvIw3rF6yOhK92//3+46?=
 =?us-ascii?Q?AoApusNJE3IQT4ubiYL1jZetTpgPTF/VemcO5s2VownSCIq5sRYVQZYz76tZ?=
 =?us-ascii?Q?XJ3j+3ltaC6K7zdZLNDyEWVa/3RN3Fc8quMDHB+l4p5/XMN2WHVpLwUoL2Fj?=
 =?us-ascii?Q?CbF7jaejS3ESUp3vUsFtsF7t9wBF70Is8D4r0paN5uPivS36+0ZxZsUDgTmj?=
 =?us-ascii?Q?NmeKZYRngj3V05qU=3D?=
X-MS-Exchange-SenderADCheck: 1
X-Microsoft-Antispam-Message-Info: +6NtiKTJxllowH9Zel4gQdN+k2RTPPnpZiWDKGUeTZOrMUkOvYvnlx3xT5D7FjWN6yewmywUkZtVpbHayYeP8vbAXGfbYjAIb29D0L+p6l3W11a3buH6VSNAlBrROV7nUYThX7SsLxRizc8SwN37dr1BUUxp3utykADKZ5NcG8aBgaYYjhOLiVHzEczP+w8t/Mxpa45HdxzG0p8R5r7XUlqevFjnJwD6rjZL69KR43qx91T74Gztt30HoGL6pp4TKLxOu/hy1uss4dblIMHzvA+udBkfKJluLe2bdqOXF3tYBegboBjzfmpvV9qOQ5vdX0RJ+f/9OyJs90KSszl3oK/XnTS/EcRYPLBdSH0iIB09cCfCojb/XHwldI0PgMoKcJ6PlklbwBaBWbvhSo52WiQNLoURRpL3lw6wM7/kmyo=
X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1488;
 20:kquVPbABONykX5sZH3ZBLRt5Aps17SbTanR2ljhbR0QniGeiI5WkhoDgLI0BXVkmYOgsVBVHu9Bhx1Cbru09FFgaFWhqn3DS5hEqGwym/tPTO6pQxwW/2YeOkU+Cwqk20tgh/vnZdJMLItC1duQjngr00LXKwHTlvk5AX/KIoOw=
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Feb 2019 06:22:55.0130 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 237fdb78-f631-4fa6-04a1-08d6988e2e5f
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[40.67.248.234];
 Helo=[nebula.arm.com]
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0801MB1488
Subject: [Minios-devel] [UNIKRAFT PATCHv6 13/23] plat/kvm: Remove redundant
 space while entering trap for Arm
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>, Jia He <justin.he@arm.com>,
 Wei Chen <wei.chen@arm.com>, Kaly Xin <Kaly.Xin@arm.com>,
 Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

RnJvbTogV2VpIENoZW4gPHdlaS5jaGVuQGFybS5jb20+ClJlbW92ZSByZWR1bmRhbnQgc3BhY2Ug
d2hpbGUgZW50ZXJpbmcgdHJhcC4KClNpZ25lZC1vZmYtYnk6IFdlaSBDaGVuIDx3ZWkuY2hlbkBh
cm0uY29tPgpTaWduZWQtb2ZmLWJ5OiBKaWEgSGUgPGp1c3Rpbi5oZUBhcm0uY29tPgpSZXZpZXdl
ZC1ieTogU2hhcmFuIFNhbnRoYW5hbSA8c2hhcmFuLnNhbnRoYW5hbUBuZWNsYWIuZXU+Ci0tLQog
cGxhdC9rdm0vYXJtL2V4Y2VwdGlvbnMuUyB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2Vy
dGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3BsYXQva3ZtL2FybS9leGNlcHRp
b25zLlMgYi9wbGF0L2t2bS9hcm0vZXhjZXB0aW9ucy5TCmluZGV4IGVkY2U3ZDMuLmU0YTVjNzQg
MTAwNjQ0Ci0tLSBhL3BsYXQva3ZtL2FybS9leGNlcHRpb25zLlMKKysrIGIvcGxhdC9rdm0vYXJt
L2V4Y2VwdGlvbnMuUwpAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgPHVrL2FzbS5oPgoKIC5t
YWNybyBFTlRFUl9UUkFQLCBlbAotICAgICAgIHN1YiAgc3AsIHNwLCAjX19UUkFQX1NUQUNLX1NJ
WkUKKyAgICAgICBzdWIgc3AsIHNwLCAjX19UUkFQX1NUQUNLX1NJWkUKCiAgICAgICAgLyogU2F2
ZSBnZW5lcmFsIHB1cnBvc2UgcmVnaXN0ZXJzICovCiAgICAgICAgc3RwIHgwLCB4MSwgW3NwLCAj
MTYgKiAwXQotLQoyLjE3LjEKCklNUE9SVEFOVCBOT1RJQ0U6IFRoZSBjb250ZW50cyBvZiB0aGlz
IGVtYWlsIGFuZCBhbnkgYXR0YWNobWVudHMgYXJlIGNvbmZpZGVudGlhbCBhbmQgbWF5IGFsc28g
YmUgcHJpdmlsZWdlZC4gSWYgeW91IGFyZSBub3QgdGhlIGludGVuZGVkIHJlY2lwaWVudCwgcGxl
YXNlIG5vdGlmeSB0aGUgc2VuZGVyIGltbWVkaWF0ZWx5IGFuZCBkbyBub3QgZGlzY2xvc2UgdGhl
IGNvbnRlbnRzIHRvIGFueSBvdGhlciBwZXJzb24sIHVzZSBpdCBmb3IgYW55IHB1cnBvc2UsIG9y
IHN0b3JlIG9yIGNvcHkgdGhlIGluZm9ybWF0aW9uIGluIGFueSBtZWRpdW0uIFRoYW5rIHlvdS4K
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1k
ZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBz
Oi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Fri Feb 22 06:23:47 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 22 Feb 2019 06:23:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gx4FP-0001jT-Q3; Fri, 22 Feb 2019 06:23:47 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=WrH0=Q5=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1gx4FN-0001iR-Nb
 for minios-devel@lists.xenproject.org; Fri, 22 Feb 2019 06:23:45 +0000
X-Inumbo-ID: 66ea67bb-366a-11e9-bc90-bc764e045a96
Received: from EUR02-AM5-obe.outbound.protection.outlook.com (unknown
 [40.107.0.86]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 66ea67bb-366a-11e9-bc90-bc764e045a96;
 Fri, 22 Feb 2019 06:23:44 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; 
 s=selector1-arm-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=Y913cCNXNZMoyjI31clzahlhZZNhqEdud+TWTVf1T7w=;
 b=TCGPUIPhm7xTFakgbJ0SEUQG0zn5dHx/lm6H8rA7DazEB3KTyXJnIoz/kPApxKf0HQPlOSdYgHQckC6IRaEKeQZAa1l/8fFE07UHmSnebQE9MeFgEedEJy97fO68crrbmMzaTZrZGypW/DGFunrKaNb+ylLXhfy7GjfnxBWS86Y=
Received: from VI1PR0801CA0080.eurprd08.prod.outlook.com
 (2603:10a6:800:7d::24) by DB6PR0802MB2535.eurprd08.prod.outlook.com
 (2603:10a6:4:a1::17) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1643.18; Fri, 22 Feb
 2019 06:23:42 +0000
Received: from DB5EUR03FT063.eop-EUR03.prod.protection.outlook.com
 (2a01:111:f400:7e0a::204) by VI1PR0801CA0080.outlook.office365.com
 (2603:10a6:800:7d::24) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.1643.15 via Frontend
 Transport; Fri, 22 Feb 2019 06:23:42 +0000
Authentication-Results: spf=pass (sender IP is 40.67.248.234)
 smtp.mailfrom=arm.com; lists.xenproject.org; dkim=none (message not signed)
 header.d=none;lists.xenproject.org; dmarc=bestguesspass action=none
 header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 40.67.248.234 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.67.248.234; helo=nebula.arm.com;
Received: from nebula.arm.com (40.67.248.234) by
 DB5EUR03FT063.mail.protection.outlook.com (10.152.20.209) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id
 15.20.1643.11 via Frontend Transport; Fri, 22 Feb 2019 06:23:42 +0000
Received: from AZ-NEU-EX01.Emea.Arm.com (10.251.26.4) by AZ-NEU-EX03.Arm.com
 (10.251.24.31) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.1415.2; Fri, 22 Feb
 2019 06:23:04 +0000
Received: from AZ-NEU-EX03.Arm.com (10.251.24.31) by AZ-NEU-EX01.Emea.Arm.com
 (10.251.26.4) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1415.2; Fri, 22
 Feb 2019 06:23:04 +0000
Received: from localhost.localdomain (10.169.40.37) by mail.arm.com
 (10.251.24.31) with Microsoft SMTP Server id 15.1.1415.2 via Frontend
 Transport; Fri, 22 Feb 2019 06:23:01 +0000
From: Jia He <justin.he@arm.com>
To: <minios-devel@lists.xenproject.org>, Simon Kuenzer
 <simon.kuenzer@neclab.eu>, <Sharan.Santhanam@neclab.eu>
Date: Fri, 22 Feb 2019 14:21:53 +0800
Message-ID: <20190222062200.26602-17-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190222062200.26602-1-justin.he@arm.com>
References: <20190222062200.26602-1-justin.he@arm.com>
MIME-Version: 1.0
X-EOPAttributedMessage: 0
X-MS-Office365-Filtering-HT: Tenant
X-Forefront-Antispam-Report: CIP:40.67.248.234; IPV:NLI; CTRY:US; EFV:NLI;
 SFV:NSPM;
 SFS:(10009020)(396003)(376002)(346002)(136003)(39860400002)(2980300002)(40434004)(189003)(199004)(97736004)(26005)(305945005)(72206003)(51416003)(76176011)(68736007)(50466002)(48376002)(36756003)(106002)(53936002)(49486002)(478600001)(6666004)(356004)(77096007)(5660300002)(186003)(336012)(81156014)(316002)(110136005)(81166006)(5024004)(8936002)(47776003)(486006)(54906003)(8746002)(14444005)(50226002)(1076003)(86362001)(4326008)(2906002)(11346002)(446003)(2616005)(126002)(106466001)(476003)(8676002)(426003)(232263001);
 DIR:OUT; SFP:1101; SCL:1; SRVR:DB6PR0802MB2535; H:nebula.arm.com; FPR:;
 SPF:Pass; LANG:en; PTR:InfoDomainNonexistent; MX:1; A:1; 
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id: f11cfa78-261d-48fd-35c4-08d6988e4a76
X-Microsoft-Antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(8989299)(5600110)(711020)(4605104)(4608103)(4709054)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060);
 SRVR:DB6PR0802MB2535; 
X-MS-TrafficTypeDiagnostic: DB6PR0802MB2535:
X-Microsoft-Exchange-Diagnostics: 1; DB6PR0802MB2535;
 20:Gj15wjMvlrqxY0iY1UmXCPn3iP4FuKN6ryAve+l3eYgbokI4UlCyYgGrRw+VWwU9AaqkQ0tV40PU175EWL2ZyXnXBrk+dF4ZTsI89zp4Au4cDdGeIzi+I/tKT6F0yb060XM3fkIbrGxMX14Cex9yphkBif2vvMBG47EGTiFdpGFSand/qZtJj41Z7wt+tDgKvtdpfMVIqjdpZ0IVB8VwZcfkwuiXyYd+8UeBq/rJXapYQ59HidJvjqFPLodlT3Nk/s60+CvjS3zlRIqHnB+Hegfj7Ua0KSyfxSgPBLZ4LdXLWZsvohSJkPG1xsNMQMwK6irvpJETBUrpJ+4Dd2mLNhJwIZuHr2jMIsJuorEcK6HoRFZbZzFtNH1SWajsHKPPKmzrUz7skjbV3PkrJ9Duk2HccHgu3yQFPO4pjtcl55YKZwKvO6ehG2noUJSvoOvmMtau8b/LuEC9aLX59GZwa66KzTNKoZP/3kZEGDePtCqemBGJJOWqzpE94Pwfg1af
X-Microsoft-Antispam-PRVS: <DB6PR0802MB2535BBBB94920F0AA5220537F77F0@DB6PR0802MB2535.eurprd08.prod.outlook.com>
X-Forefront-PRVS: 09565527D6
X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB6PR0802MB2535;
 23:zIh2D9KWPjdVONE4F6Apcy7D4ktCPsNZqej0FyM?=
 =?us-ascii?Q?VsehPBmxi1Sq5b7c89P+ii9nWskK/QeSvG5iCUrljQC4tEQEJ2YrDfW9GJhs?=
 =?us-ascii?Q?EEAfxhts9j5sMjzIVPrgZRbVpux8Wlbnom0Sueb0IxkZNtQoIcWxSPZBvzlq?=
 =?us-ascii?Q?yOd72uFAl+HRnzPcWpGvkNLNPEPrc4h3DYqjUTTqqgWkZGIglaVvX7kAbXCQ?=
 =?us-ascii?Q?f7WvjbTL8nA/ZGbt3zPtqf/v9LVoa8igZzKWIS6LpixPoVea1cU812gwiW8t?=
 =?us-ascii?Q?d4KJFQHHUsVJmOSuM79tTQAnQb8n7uzbrpAYMuyXYWqZqjrjMKss4uDDF2ja?=
 =?us-ascii?Q?N6QbSQmgRTdpb4OD6OQnJSzx12yM9V1tfkKLb7rKWsuReOHqpv4ywB+wZN/B?=
 =?us-ascii?Q?3IRX/lEhv6AkTZwo/enQ/gUPljzaAnLHxKEppoLTlWuEB19IZPwQY8eV5epo?=
 =?us-ascii?Q?+7GAzdPzLAKED/RABIq4TNmW5ilTYisyl9AFrpnjN//7SWFpnrYswPVogRWF?=
 =?us-ascii?Q?QiKNDIMycfJBHyvwpWWpMsKFlEXI4buha+6bTaBAJbsYvhYQ2KxXcO/bG70A?=
 =?us-ascii?Q?mEs11e9pKO5hAuadFmCrYRpNxMGZhXhJV96urq+1H+R7h79ZgXjdkJ9+UKWQ?=
 =?us-ascii?Q?VgDn6JYW17/a5hyJoiB9UjVaf88uFVjm+cy0Dza38LGk5vIk+OTWsBopCUQa?=
 =?us-ascii?Q?BJAV5o1T7fvL7eeqDtngVJb5lr6EcCa63CouXguVXVaWF4DKs/VqowAfFG5f?=
 =?us-ascii?Q?NvBBbQ47WKS/Fp+sH5hSLcMl3WfgaIUbihVf3KXj1nn4IT2yEH84WzrDswdR?=
 =?us-ascii?Q?yLrT5LcZmKMXlkGzjg88a4QxjJvJo7E1xXchDjpxvDqyzt9bcjJnC6mYiWBj?=
 =?us-ascii?Q?KcyhzoG2Zlo9vyQJs/Bh10tA282Dmsw2wfvDtpvoNm2IZT+gCzCl+K0eYCme?=
 =?us-ascii?Q?EcwI+rzt6WQkx8/EvgrrYnq6SSnkVK79QURp9qE/F05MMLZC4DHNmWw8oyAD?=
 =?us-ascii?Q?67HyWeY+f207Ct21Bwxo4ZV/VFVo4xxHofPWP2J00j4Y84PyXI9QmrP1HCPB?=
 =?us-ascii?Q?Ey83XfEcy5wCpI2HvC9LGlHnr4yAby7waaj5nPXZMoqEz7f32jpkGRgJbBRl?=
 =?us-ascii?Q?cgiPHs5UojIVZLr+Uz3ISVhi0hCsUlWxp8Qpidvq3ft4k7GupoM6qPnFjAlr?=
 =?us-ascii?Q?uM6riTXsuGZ474Kw=3D?=
X-MS-Exchange-SenderADCheck: 1
X-Microsoft-Antispam-Message-Info: +yBXA+Q++/s0iZxtlVL5mIyspgkTgL3zZAU0hJeLbQwRqRO5DdTS5o2FH6Anmm17Eg7NTEFuZGW/BKSnslQ9npFns7QLHml5mYD69h0/A2xfhlheamjr1aqe2z7JpjUEcu6pQkGGERiwuxeG7QaQgHe6goi88Kpqiw5UkEof9V9hYVYg6GM5piS+DmCCNV5Rpk4KQUUN0M/8vJJh8avxFm9A/9rj4eNX3tzTGz5auBHIZi9fD9PwhtBGoapL+5kHHNRQ7scIktsKorDN5w0+O4Q2Tpw8hE4F1CJy9/i2vWDlR8FKY5f8LYpZQsXtTB75IQjCv2OuO+saWXVRkMrt9U/iY4W9ovUFF0IW3VK1HMvIGgZyHTWcuQ2p0lLXMkd57++/+otsf58vWJeQ9aOGWDNo8oXH1o/RtISlAkHo9oM=
X-Microsoft-Exchange-Diagnostics: 1; DB6PR0802MB2535;
 20:HFJlnl25kidG+LiNGpPKGFtzM+U+Y/rZrj67AR0tpJvVrEmMUAFtml6XFjl4LEiD1heQzutzm16xdBk744v4KMNh7TH1WjTf0z+IxGrC/B0PgfUnPQSau3PGlW8S11UmqwE1PqT3NRIHLO+v979a8M1LokaLkPQaixHDFtC0f4M=
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Feb 2019 06:23:42.1402 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: f11cfa78-261d-48fd-35c4-08d6988e4a76
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[40.67.248.234];
 Helo=[nebula.arm.com]
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0802MB2535
Subject: [Minios-devel] [UNIKRAFT PATCHv6 16/23] plat/kvm: Invalidate
 D-Cache that may have been modified for Arm64
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>, Jia He <justin.he@arm.com>,
 Wei Chen <wei.chen@arm.com>, Kaly Xin <Kaly.Xin@arm.com>,
 Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

RnJvbTogV2VpIENoZW4gPHdlaS5jaGVuQGFybS5jb20+CkRUQiwgVEVYVCBhbmQgUk9EQVRBIHdv
dWxkIG5vdCBiZSBtb2RpZmllZCB3aGlsZSBib290aW5nLCBzbyB3ZSBqdXN0Cm5lZWQgdG8gaW52
YWxpZGF0ZSBhbmQgY2xlYW4gdGhlIGFyZWEgdGhhdCBtYXkgaGF2ZSBiZWVuIG1vZGlmaWVkOgpE
QVRBLCBCU1MsIFBBR0VUQUJMRSBhbmQgQk9PVFNUQUNLLgoKU2lnbmVkLW9mZi1ieTogV2VpIENo
ZW4gPHdlaS5jaGVuQGFybS5jb20+ClNpZ25lZC1vZmYtYnk6IEppYSBIZSA8anVzdGluLmhlQGFy
bS5jb20+ClJldmlld2VkLWJ5OiBTaGFyYW4gU2FudGhhbmFtIDxzaGFyYW4uc2FudGhhbmFtQG5l
Y2xhYi5ldT4KLS0tCiBwbGF0L2t2bS9hcm0vcGFnZXRhYmxlNjQuUyB8IDYgKysrLS0tCiAxIGZp
bGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh
L3BsYXQva3ZtL2FybS9wYWdldGFibGU2NC5TIGIvcGxhdC9rdm0vYXJtL3BhZ2V0YWJsZTY0LlMK
aW5kZXggZDRhYmFmZi4uY2YzMDU4NCAxMDA2NDQKLS0tIGEvcGxhdC9rdm0vYXJtL3BhZ2V0YWJs
ZTY0LlMKKysrIGIvcGxhdC9rdm0vYXJtL3BhZ2V0YWJsZTY0LlMKQEAgLTIzOSwxMCArMjM5LDEw
IEBAIEVOVFJZKHN0YXJ0X21tdSkKCiAgICAgICAgIC8qCiAgICAgICAgICogSW52YWxpZGF0ZSB0
aGUgRC1DYWNoZSB0byBhdm9pZCB1c2luZyBpbnZhbGlkIGRhdGEgdGhhdCBleGlzdGVkCi0gICAg
ICAgICogaW4gRC1DYWNoZS4gSW52YWxpZGF0ZSByYW5nZXM6IERUQiwgVEVYVCwgREFUQSwgQlNT
LCBQQUdFVEFCTEUKLSAgICAgICAgKiBhbmQgQk9PVFNUQUNLLgorICAgICAgICAqIGluIEQtQ2Fj
aGUuIEludmFsaWRhdGUgcmFuZ2VzIHRoYXQgbWF5IGhhdmUgYmVlbiBtb2RpZmllZDoKKyAgICAg
ICAgKiBEQVRBLCBCU1MsIFBBR0VUQUJMRSBhbmQgQk9PVFNUQUNLLgogICAgICAgICAqLwotICAg
ICAgIGxkciB4MCwgPV9kdGIKKyAgICAgICBsZHIgeDAsID1fZGF0YQogICAgICAgIGxkciB4MSwg
PV9lbmQKICAgICAgICBhZGQgeDEsIHgxLCAjUEFHRV9UQUJMRV9TSVpFCiAgICAgICAgYWRkIHgx
LCB4MSwgI19fU1RBQ0tfU0laRQotLQoyLjE3LjEKCklNUE9SVEFOVCBOT1RJQ0U6IFRoZSBjb250
ZW50cyBvZiB0aGlzIGVtYWlsIGFuZCBhbnkgYXR0YWNobWVudHMgYXJlIGNvbmZpZGVudGlhbCBh
bmQgbWF5IGFsc28gYmUgcHJpdmlsZWdlZC4gSWYgeW91IGFyZSBub3QgdGhlIGludGVuZGVkIHJl
Y2lwaWVudCwgcGxlYXNlIG5vdGlmeSB0aGUgc2VuZGVyIGltbWVkaWF0ZWx5IGFuZCBkbyBub3Qg
ZGlzY2xvc2UgdGhlIGNvbnRlbnRzIHRvIGFueSBvdGhlciBwZXJzb24sIHVzZSBpdCBmb3IgYW55
IHB1cnBvc2UsIG9yIHN0b3JlIG9yIGNvcHkgdGhlIGluZm9ybWF0aW9uIGluIGFueSBtZWRpdW0u
IFRoYW5rIHlvdS4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2pl
Y3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5p
b3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Fri Feb 22 06:23:48 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 22 Feb 2019 06:23:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gx4FQ-0001jz-S2; Fri, 22 Feb 2019 06:23:48 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=WrH0=Q5=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1gx4FO-0001iv-Tf
 for minios-devel@lists.xenproject.org; Fri, 22 Feb 2019 06:23:46 +0000
X-Inumbo-ID: 681c2797-366a-11e9-bc90-bc764e045a96
Received: from EUR02-AM5-obe.outbound.protection.outlook.com (unknown
 [40.107.0.86]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 681c2797-366a-11e9-bc90-bc764e045a96;
 Fri, 22 Feb 2019 06:23:45 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; 
 s=selector1-arm-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=yeTgD4P1ZMBCkoS+GiQ+aJSNevfmPf+ast/tBwuuY8w=;
 b=NpUkVB7++vlNHBHqXCZE4W7qVRfpmKAU0fyRvZlauWJVJCXf/fpCdyqoi5rz28eLXCct23utMOCi11HZX8+E5KE6GgckGnDHURNPYSATso9/APRmxHSBF5sM1zHl7/A6vUzCYFXx+BkqobG+n0casyW2VZq4eZRrTkS75T+dA64=
Received: from VI1PR0801CA0080.eurprd08.prod.outlook.com
 (2603:10a6:800:7d::24) by DB6PR0802MB2535.eurprd08.prod.outlook.com
 (2603:10a6:4:a1::17) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1643.18; Fri, 22 Feb
 2019 06:23:43 +0000
Received: from DB5EUR03FT063.eop-EUR03.prod.protection.outlook.com
 (2a01:111:f400:7e0a::204) by VI1PR0801CA0080.outlook.office365.com
 (2603:10a6:800:7d::24) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.1643.15 via Frontend
 Transport; Fri, 22 Feb 2019 06:23:43 +0000
Authentication-Results: spf=pass (sender IP is 40.67.248.234)
 smtp.mailfrom=arm.com; lists.xenproject.org; dkim=none (message not signed)
 header.d=none;lists.xenproject.org; dmarc=bestguesspass action=none
 header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 40.67.248.234 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.67.248.234; helo=nebula.arm.com;
Received: from nebula.arm.com (40.67.248.234) by
 DB5EUR03FT063.mail.protection.outlook.com (10.152.20.209) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id
 15.20.1643.11 via Frontend Transport; Fri, 22 Feb 2019 06:23:43 +0000
Received: from AZ-NEU-EX01.Emea.Arm.com (10.251.26.4) by AZ-NEU-EX03.Arm.com
 (10.251.24.31) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.1415.2; Fri, 22 Feb
 2019 06:23:11 +0000
Received: from AZ-NEU-EX03.Arm.com (10.251.24.31) by AZ-NEU-EX01.Emea.Arm.com
 (10.251.26.4) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1415.2; Fri, 22
 Feb 2019 06:23:11 +0000
Received: from localhost.localdomain (10.169.40.37) by mail.arm.com
 (10.251.24.31) with Microsoft SMTP Server id 15.1.1415.2 via Frontend
 Transport; Fri, 22 Feb 2019 06:23:08 +0000
From: Jia He <justin.he@arm.com>
To: <minios-devel@lists.xenproject.org>, Simon Kuenzer
 <simon.kuenzer@neclab.eu>, <Sharan.Santhanam@neclab.eu>
Date: Fri, 22 Feb 2019 14:21:55 +0800
Message-ID: <20190222062200.26602-19-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190222062200.26602-1-justin.he@arm.com>
References: <20190222062200.26602-1-justin.he@arm.com>
MIME-Version: 1.0
X-EOPAttributedMessage: 0
X-MS-Office365-Filtering-HT: Tenant
X-Forefront-Antispam-Report: CIP:40.67.248.234; IPV:NLI; CTRY:US; EFV:NLI;
 SFV:NSPM;
 SFS:(10009020)(396003)(376002)(346002)(136003)(39860400002)(2980300002)(40434004)(189003)(199004)(97736004)(26005)(305945005)(72206003)(51416003)(76176011)(68736007)(50466002)(48376002)(36756003)(106002)(53936002)(49486002)(478600001)(6666004)(356004)(77096007)(5660300002)(186003)(336012)(81156014)(316002)(110136005)(81166006)(5024004)(8936002)(47776003)(486006)(54906003)(8746002)(14444005)(50226002)(1076003)(86362001)(4326008)(2906002)(11346002)(446003)(2616005)(126002)(106466001)(476003)(8676002)(426003);
 DIR:OUT; SFP:1101; SCL:1; SRVR:DB6PR0802MB2535; H:nebula.arm.com; FPR:;
 SPF:Pass; LANG:en; PTR:InfoDomainNonexistent; MX:1; A:1; 
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id: 46a573c7-1612-478f-7fd0-08d6988e4b21
X-Microsoft-Antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(8989299)(5600110)(711020)(4605104)(4608103)(4709054)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060);
 SRVR:DB6PR0802MB2535; 
X-MS-TrafficTypeDiagnostic: DB6PR0802MB2535:
X-Microsoft-Exchange-Diagnostics: 1; DB6PR0802MB2535;
 20:uW8GxdI6K/HJRPxn1IgkETgmAuPl+uuxlnF8O4HJjJR44KUmyHJS3QFtNYaIIEQmaaUaPHvDuOl5/LDDC4YjxmNCKKRABM0HGJBMI8jNGBxZZOJYC90k38W2IBbYaEGuS8/NGtn7pIcxaOUXeoEuO5bRppVW7/Lpcv4mxaZGQA98xmrEB/EkkHcoIeTwPUroomOdIXprMwxCG0HkpRmQYgz+/g/hXZM5S5A80fbft/I4fXjAWGI4zPjjt39jE3eAShaF5jdkmUzNqmv9M1cc7BsjcO85FYWUYGvHnk+7zM1oKFEKRokZUF+Ze+4n4rSPf7882TO72UGnKyHQ9Vi7x8yNw0haGZJtTMiBe+++N0189HwiCc3tGK+m4G14eX/dF0J1NYfuz1oIsmYnWOrYgXsLUzpbQJrHhPmYgNUzqM4gT58blWVpE6P3AeF8RJgeAyBwhUce8Q+qkW/iVNfHVafM8n6YXcvZXoosXclAA0viRy44vVnT5D3qOT8D0yWR
X-Microsoft-Antispam-PRVS: <DB6PR0802MB2535547FDF22E6A4FA180A67F77F0@DB6PR0802MB2535.eurprd08.prod.outlook.com>
X-Forefront-PRVS: 09565527D6
X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB6PR0802MB2535;
 23:Zz45NTN+0/i4XOHshxXNJ5zIgJb4UHiP4IzKVMz?=
 =?us-ascii?Q?DtbRPfWUPJWy+FUZywIxVlGfMrxwd1acPxn7tUqGNGsCvDGh1UVe6pf6Tmq9?=
 =?us-ascii?Q?xa8jRduBMvuDgsl9XwTPTDyFk5Ugf5aM7kMnQFJFJcJzcdj6F/DjfFqcwcS8?=
 =?us-ascii?Q?AMIlTA6YyCnbcydSZDPdFj7Dcv1g+2kfIB0FOeaZqOzZDXEcE5UE9Vj66H4z?=
 =?us-ascii?Q?MoiZXyX8bLx4Jd1hZI7MQFBo9bkuD5cwM0nqQHcHEMtaLFwPalceapMunIVm?=
 =?us-ascii?Q?7IUBg+ednHrvHOcgTC9+QrEwGLjby0ReOBt5dJv+BZihSBACz3oCjxo8NYn1?=
 =?us-ascii?Q?Aw05hFnDCH4SazTXb8nx/e6zF9/5rtwZRufY4hoE4+V228uBVgHSBnmxRnh7?=
 =?us-ascii?Q?GikWtyFGWeNBf78Uc6Q7TFio1VdhUsUsABY7gKDveTprFBdzWZBS35kpnd0Z?=
 =?us-ascii?Q?owgbFocWDCp19bhUsEhy2bVO97DUuiffN9pV2GosaGEoDOMMnPy+chBHs48m?=
 =?us-ascii?Q?uisy8llsncXAWiX7EDceFr6S48HoUkdefdhlK1gzoVMFwkSBlWe0QllhU7ct?=
 =?us-ascii?Q?KFGeEwIMxvDx1XfOIxVBeHXg4JZECIkRgIxkX4B8j3Kzog2Wuov6w0dw25oV?=
 =?us-ascii?Q?KbHAuA5Ziwk6dz3oNMXQQTEnceG6aX8j1gNeGLlnuv22fZyfEmLmbUBeGarl?=
 =?us-ascii?Q?/9wRm2d2Qd+d13I2CsTUdhO1tumpEtU7VXUfh0y7JRxrzSrSa7M71wcImt8r?=
 =?us-ascii?Q?B2KVlK49cvgwATJ4ekzZGsjQdeTOnnUzG6h7nJHcT/ljJz6cU9xDMB6q2jLY?=
 =?us-ascii?Q?bnsKhTCjzQKd+EVx7GEJxPRQ3lp0KsGQvLcMk3KCNBAahf1ZATeMkNxh+lqb?=
 =?us-ascii?Q?ghUSd5uB9DgOqBTYF6YYITJElusSCxNaiymd6euu9BA7oRM5iie5KcjiLPKC?=
 =?us-ascii?Q?79uznwyHnQW6YdWpQsNF7eyTqNJuIyDw0Eb2WmhtRG+dblk2Gp4kP0mKm75a?=
 =?us-ascii?Q?0p42+2RvojaozSoXZVbTbhh1PKqtV8/2A5001U3IEPU2Npkl7mYFpTzSoVTb?=
 =?us-ascii?Q?mo2mlpATKVT3l+uVfdalMVepcGOcDFT2CnhShbqUhbRwu6Fa4ReHGxoLt9Wn?=
 =?us-ascii?Q?kWCPschue4Jl+rlgFPWrQjKbxHcWULShmnP/Di9AziQ0CRucRctqIZSPcRdw?=
 =?us-ascii?Q?xfZ+1QCUNqyt366g=3D?=
X-MS-Exchange-SenderADCheck: 1
X-Microsoft-Antispam-Message-Info: rGJC2x63AKsa30K1m9tRCGjtvydNmMvs5Khwto69xNryjnYV0wX2GQKHITz4NRAYESefokiMgn/65Hi2NwZP/c2t6WMcD75wo16IWwt8lqOZsyd2UYfrxDGrawW1aAtWe6hjGieuqEVBGZZkooEprL6YrxwjEQqdzwI9TmT6tUMIyrFB1W1iqewVSFqim0yxopu1cEaiGi92AUR1qB/AAKw3XS3FozI/zB3TOG6tq0iC92m9Q99HGfItBbWwFGn8W8v92/ueG2Y2WFNNPvlUpxyXhXarrIDlzA9XhtE+nhVOxirhpyeUJx5uiWo4tYqfWW8E4DrzJrxLO1QTuctsqDU4Ars22K3HvjvAGdU9AfQ1JOiPSdxfugMfzYAFkpcx0884e7Y1jjha264Df2vJZe5VuI+eslV1ZIKDTWk7Gy8=
X-Microsoft-Exchange-Diagnostics: 1; DB6PR0802MB2535;
 20:xzyFGh7JW7llCTRHjo/qOm9E/wiUveSYfjxhQWwdasszKtEyBUkrMr9OrqX52wukZ/Lrc0xEyJ3umhiC1K2cTabi0kb9fek7SbiP9hTzagJug7Mxlhjg7drAy032SY/8s8gOGOKVJew1wqXHjB+5LMhTutHONLCJEn9sU9LKETE=
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Feb 2019 06:23:43.2608 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 46a573c7-1612-478f-7fd0-08d6988e4b21
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[40.67.248.234];
 Helo=[nebula.arm.com]
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0802MB2535
Subject: [Minios-devel] [UNIKRAFT PATCHv6 18/23] plat/kvm: arm64: Calculate
 pagetable size dynamically by image size
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>, Jia He <justin.he@arm.com>,
 Wei Chen <wei.chen@arm.com>, Kaly Xin <Kaly.Xin@arm.com>,
 Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

RnJvbTogV2VpIENoZW4gPHdlaS5jaGVuQGFybS5jb20+ClRoZSBwcmV2aW91cyBMMyBwYWdlIHRh
YmxlIHNpemUgaXMgYSBmaXhlZCB2YWx1ZSBiYXNlZCBvbiB0aGUKYXNzdW1wdGlvbiB0aGF0LCBp
bWFnZSBzaXplIHdpbGwgbm90IGV4Y2VlZCAyTUIuIEJ1dCB0aGF0J3Mgbm90CnRydWUsIHNvbWUg
YXBwbGljYXRpb25zIGxpa2Ugbm9kZS5qcyB3aWxsIGJlIGFib3V0IDQwTUIgYWZ0ZXIKY29udmVy
dGluZyB0byBVbmlrZXJuZWwuIFNvIGluIHRoaXMgcGF0Y2gsIHdlIGNhbGN1bGF0ZSB0aGUKcGFn
ZSB0YWJsZSBzaXplIGJ5IHJlYWwgaW1hZ2Ugc2l6ZS4gSW4gb3JkZXIgdG8gbWFwcGluZyB0aGUK
aW1hZ2Ugb2NjdXBpZWQgbWVtb3J5IHRvIEwzIHBhZ2UgdGFibGUsIHdlIHJvdW5kIHVwIHRoZSBp
bWFnZQpzaXplIHdpdGggMk1CLiBJZiB3ZSBkb24ndCByb3VuZCB1cCB0aGUgaW1hZ2Ugc2l6ZSB3
aXRoIDJNQi4KU29tZSBtZW1vcnkgdGhhdCBpcyBub3Qgb2NjdXBpZWQgYnkgaW1hZ2UgYnV0IHNo
YXJlZCB0aGUgc2FtZQoyTUIgYmxvY2sgd2l0aCBpbWFnZSB0YWlsIHdpbGwgYmUgdW5tYXBwZWQg
aW4gcGFnZSB0YWJsZS4KClNpZ25lZC1vZmYtYnk6IFdlaSBDaGVuIDx3ZWkuY2hlbkBhcm0uY29t
PgpTaWduZWQtb2ZmLWJ5OiBKaWEgSGUgPGp1c3Rpbi5oZUBhcm0uY29tPmAKLS0tCiBwbGF0L2Nv
bW1vbi9pbmNsdWRlL3NlY3Rpb25zLmggICAgICB8IDMxICsrKysrKysrKysrKysrKysrKysrKysr
KysKIHBsYXQva3ZtL2FybS9lbnRyeTY0LlMgICAgICAgICAgICAgIHwgMzUgKysrKysrKysrKysr
KysrKysrKysrKysrKysrLS0KIHBsYXQva3ZtL2FybS9wYWdldGFibGU2NC5TICAgICAgICAgIHwg
IDQgKysrLQogcGxhdC9rdm0vYXJtL3NldHVwLmMgICAgICAgICAgICAgICAgfCAgMiArLQogcGxh
dC9rdm0vaW5jbHVkZS9rdm0tYXJtL2FybTY0L21tLmggfCAxNCArKysrKysrLS0tLS0KIDUgZmls
ZXMgY2hhbmdlZCwgNzYgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0
IGEvcGxhdC9jb21tb24vaW5jbHVkZS9zZWN0aW9ucy5oIGIvcGxhdC9jb21tb24vaW5jbHVkZS9z
ZWN0aW9ucy5oCmluZGV4IDE3MDFiMDAuLmVjYjM2MDcgMTAwNjQ0Ci0tLSBhL3BsYXQvY29tbW9u
L2luY2x1ZGUvc2VjdGlvbnMuaAorKysgYi9wbGF0L2NvbW1vbi9pbmNsdWRlL3NlY3Rpb25zLmgK
QEAgLTM1LDYgKzM1LDcgQEAKICNpZm5kZWYgX19QTEFUX0NNTl9TRUNUSU9OU19IX18KICNkZWZp
bmUgX19QTEFUX0NNTl9TRUNUSU9OU19IX18KCisjaWZuZGVmIF9fQVNTRU1CTFlfXwogLyoKICAq
IEZvbGxvd2luZyBnbG9iYWwgdmFyaWFibGVzIGFyZSBkZWZpbmVkIGluIGltYWdlIGxpbmsgc2Ny
aXB0cywgYW5kIHNvbWUKICAqIHZhcmlhYmxlcyBhcmUgb3B0aW9uYWwgYW5kIG1heSBiZSB1bmF2
YWlsYWJsZSBvbiBzb21lIGFyY2hpdGVjdHVyZXMKQEAgLTc2LDQgKzc3LDM0IEBAIGV4dGVybiBj
aGFyIF9lbmRbXTsKICNkZWZpbmUgX19CU1NfU1RBUlQgICAgX191a19pbWFnZV9zeW1ib2woX19i
c3Nfc3RhcnQpCiAjZGVmaW5lIF9fRU5EICAgICAgICAgIF9fdWtfaW1hZ2Vfc3ltYm9sKF9lbmQp
CgorI2VuZGlmIC8qX19BU1NFTUJMWV9fKi8KKworLyoKKyAqIEJlY2F1c2UgdGhlIHNlY3Rpb24g
aXMgNEtCIGFsaWdubWVudCwgYW5kIHdlIHdpbGwgYXNzaWduIGRpZmZlcmVudAorICogYXR0cmli
dXRlcyBmb3IgZGlmZmVyZW50IHNlY3Rpb25zLiBXZSByb3VuZHVwIGltYWdlIHNpemUgdG8gMk1C
IHRvCisgKiBhdm9pZCBtYWtpbmcgaG9sZXMgaW4gTDMgdGFibGUKKyAqCisgKiBMMiB0YWJsZQor
ICogfC0tLS0tLS0tLS0tfCAgICBMMyB0YWJsZQorICogfCAgIDJNQiAgICAgfD09PT58LS0tLS0t
LS0tLS18CisgKiB8LS0tLS0tLS0tLS18ICAgIHwgIDRLQiAgICAgIHwgZW50cnkjMAorICogICAg
ICAgICAgICAgICAgICB8LS0tLS0tLS0tLS18CisgKiAgICAgICAgICAgICAgICAgIHwgIC4uLiAg
ICAgIHwKKyAqICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgfAorICogICAgICAgICAgICAg
ICAgICB8LS0tLS0tLS0tLS18CisgKiAgICAgICAgICAgICAgICAgIHwgIDRLQiAgICAgIHwgZW50
cnkjIGZvciBsYXN0IHBhZ2Ugb2YgcmVhbCBpbWFnZQorICogICAgICAgICAgICAgICAgICB8LS0t
LS0tLS0tLS18CisgKiAgICAgICAgICAgICAgICAgIHwgIDRLQiAgICAgIHwgZW50cnkjIGZvciBy
b3VuZCB1cCBtZW1vcnkKKyAqICAgICAgICAgICAgICAgICAgfC0tLS0tLS0tLS0tfAorICogICAg
ICAgICAgICAgICAgICB8ICAuLi4gICAgICB8CisgKiAgICAgICAgICAgICAgICAgIHwtLS0tLS0t
LS0tLXwKKyAqICAgICAgICAgICAgICAgICAgfCAgNEtCICAgICAgfCBlbnRyeSM1MTEKKyAqICAg
ICAgICAgICAgICAgICAgfC0tLS0tLS0tLS0tfAorICogSWYgd2UgZG9uJ3Qgcm91bmR1cCB0aGUg
aW1hZ2Ugc2l6ZSB0byAyTUIsIHNvbWUgbWVtb3J5IHRoYXQgaXMgbm90CisgKiBvY2N1cGllZCBi
eSBpbWFnZSBidXQgc2hhcmVkIHRoZSBzYW1lIDJNQiBibG9jayB3aXRoIGltYWdlIHRhaWwgd2ls
bAorICogbm90IGJlIG1hcHBlZCBpbiBwYWdlIHRhYmxlLgorICovCisjZGVmaW5lIElNQUdFX1JP
VU5EVVBfU0hJRlQgMjEKKyNkZWZpbmUgSU1BR0VfUk9VTkRVUF9TSVpFICgweDEgPDwgKElNQUdF
X1JPVU5EVVBfU0hJRlQpKQorCiAjZW5kaWYgLyogX19QTEFUX0NNTl9TRUNUSU9OU19IX18gKi8K
ZGlmZiAtLWdpdCBhL3BsYXQva3ZtL2FybS9lbnRyeTY0LlMgYi9wbGF0L2t2bS9hcm0vZW50cnk2
NC5TCmluZGV4IGQwOGI0OWUuLjEyMjAxYTkgMTAwNjQ0Ci0tLSBhL3BsYXQva3ZtL2FybS9lbnRy
eTY0LlMKKysrIGIvcGxhdC9rdm0vYXJtL2VudHJ5NjQuUwpAQCAtMzUsNiArMzUsMTIgQEAKICNp
bmNsdWRlIDx1ay9hc20uaD4KICNpbmNsdWRlIDxrdm0tYXJtL21tLmg+CiAjaW5jbHVkZSA8YXJt
L2NwdV9kZWZzLmg+CisjaW5jbHVkZSA8c2VjdGlvbnMuaD4KKworLmdsb2JhbCBwYWdlX3RhYmxl
X3NpemUKKy5kYXRhCitwYWdlX3RhYmxlX3NpemU6CisgICAgICAgLmR3b3JkIDB4MAoKIC8qCiAg
KiBUaGUgcmVnaXN0ZXJzIHVzZWQgYnkgX2xpYmt2bXBsYXRfc3RhcnQ6CkBAIC00Myw2ICs0OSwy
OCBAQAoKIC50ZXh0CiBFTlRSWShfbGlia3ZtcGxhdF9lbnRyeSkKKyAgICAgICAvKiBDYWxjdWxh
dGUgdGhlIGltYWdlIHNpemUgKi8KKyAgICAgICBsZHIgeDI1LCA9X2R0YgorICAgICAgIGxkciB4
MjYsID1fZW5kCisgICAgICAgbW92IHgxNSwgeDI1CisgICAgICAgc3ViIHgxNSwgeDI2LCB4MTUK
KworICAgICAgIC8qIFJvdW5kIHVwIHRoZSBzaXplIHRvIDJNQiAqLworICAgICAgIG1vdiB4MTcs
ICMoSU1BR0VfUk9VTkRVUF9TSVpFIC0gMSkKKyAgICAgICBhZGQgeDE1LCB4MTUsIHgxNworICAg
ICAgIGxzciB4MTUsIHgxNSwgI0lNQUdFX1JPVU5EVVBfU0hJRlQKKyAgICAgICBsc2wgeDE1LCB4
MTUsICNJTUFHRV9ST1VORFVQX1NISUZUCisKKyAgICAgICAvKgorICAgICAgICAqIEhvdyBtYW55
IGJ5dGVzIHdvdWxkIGJlIHVzZWQgZm9yIEwzX1RBQkxFCisgICAgICAgICogKCh4MTUgPj4gMjEp
IDw8IDEyKQorICAgICAgICAqLworICAgICAgIGxzciB4MTcsIHgxNSwgIzkKKworICAgICAgIC8q
IFRvdGFsIGJ5dGVzIGZvciBwYWdldGFibGUgKi8KKyAgICAgICBhZGQgeDE3LCB4MTcsICNMMF9U
QUJMRV9TSVpFCisgICAgICAgYWRkIHgxNywgeDE3LCAjTDFfVEFCTEVfU0laRQorICAgICAgIGFk
ZCB4MTcsIHgxNywgI0wyX1RBQkxFX1NJWkUKCiAgICAgICAgLyoKICAgICAgICAgKiBDbGVhbiB0
aGUgYm9vdCBzdGFjayBhbmQgcGFnZSB0YWJsZS4gQXMgX2VuZCwgUEFHRV9UQUJMRV9TSVpFIGFu
ZApAQCAtNTAsOCArNzgsNyBAQCBFTlRSWShfbGlia3ZtcGxhdF9lbnRyeSkKICAgICAgICAgKiA2
NC1ieXRlcyBhbGlnbm1lbnQgdG9vLiBFeGVjdXRlIDQgc3RwIGNvbnNlY3V0aXZlbHkgd2l0aG91
dCBib3VuZGFyeQogICAgICAgICAqIGNoZWNrIHdvdWxkIGJlIHNhZmUgaGVyZS4KICAgICAgICAg
Ki8KLSAgICAgICBsZHIgeDI2LCA9X2VuZAotICAgICAgIGFkZCB4MjcsIHgyNiwgI1BBR0VfVEFC
TEVfU0laRQorICAgICAgIGFkZCB4MjcsIHgyNiwgeDE3CiAgICAgICAgYWRkIHgyNywgeDI3LCAj
X19TVEFDS19TSVpFCiAxOgogICAgICAgIHN0cCB4enIsIHh6ciwgW3gyNl0sICMxNgpAQCAtNzks
NiArMTA2LDEwIEBAIEVOVFJZKF9saWJrdm1wbGF0X2VudHJ5KQogICAgICAgIC8qIFNldCB0aGUg
Y29udGV4dCBpZCAqLwogICAgICAgIG1zciBjb250ZXh0aWRyX2VsMSwgeHpyCgorICAgICAgIC8q
IFNhdmUgcGFnZSB0YWJsZSBzaXplIGZvciBsYXRlciB1c2FnZSAqLworICAgICAgIGxkciB4MjYs
ID1wYWdlX3RhYmxlX3NpemUKKyAgICAgICBzdHIgeDE3LCBbeDI2XQorCiAgICAgICAgLyogQ3Jl
YXRlIGEgcGFnZXRhYmxlIHRvIGRvIFBBID09IFZBIG1hcHBpbmcgKi8KICAgICAgICBibCBjcmVh
dGVfcGFnZXRhYmxlcwoKZGlmZiAtLWdpdCBhL3BsYXQva3ZtL2FybS9wYWdldGFibGU2NC5TIGIv
cGxhdC9rdm0vYXJtL3BhZ2V0YWJsZTY0LlMKaW5kZXggYTAwYjcxYy4uYmQ0NzNiZiAxMDA2NDQK
LS0tIGEvcGxhdC9rdm0vYXJtL3BhZ2V0YWJsZTY0LlMKKysrIGIvcGxhdC9rdm0vYXJtL3BhZ2V0
YWJsZTY0LlMKQEAgLTIzMyw3ICsyMzMsOSBAQCBFTlRSWShzdGFydF9tbXUpCiAgICAgICAgICov
CiAgICAgICAgbGRyIHgwLCA9X2RhdGEKICAgICAgICBsZHIgeDEsID1fZW5kCi0gICAgICAgYWRk
IHgxLCB4MSwgI1BBR0VfVEFCTEVfU0laRQorICAgICAgIGxkciB4MiwgPXBhZ2VfdGFibGVfc2l6
ZQorICAgICAgIGxkciB4MiwgW3gyXQorICAgICAgIGFkZCB4MSwgeDIsIHgxCiAgICAgICAgYWRk
IHgxLCB4MSwgI19fU1RBQ0tfU0laRQogICAgICAgIHN1YiB4MSwgeDEsIHgwCiAgICAgICAgYmwg
Y2xlYW5fYW5kX2ludmFsaWRhdGVfZGNhY2hlX3JhbmdlCmRpZmYgLS1naXQgYS9wbGF0L2t2bS9h
cm0vc2V0dXAuYyBiL3BsYXQva3ZtL2FybS9zZXR1cC5jCmluZGV4IGI3YjgxYWMuLjkyYTBkNjcg
MTAwNjQ0Ci0tLSBhL3BsYXQva3ZtL2FybS9zZXR1cC5jCisrKyBiL3BsYXQva3ZtL2FybS9zZXR1
cC5jCkBAIC0xNDYsNyArMTQ2LDcgQEAgc3RhdGljIHZvaWQgX2luaXRfZHRiX21lbSh2b2lkKQoK
ICAgICAgICBtYXhfYWRkciA9IG1lbV9iYXNlICsgbWVtX3NpemU7CiAgICAgICAgX2xpYmt2bXBs
YXRfcGFnZXRhYmxlID0gKHZvaWQgKikgQUxJR05fRE9XTigoc2l6ZV90KV9fRU5ELCBfX1BBR0Vf
U0laRSk7Ci0gICAgICAgX2xpYmt2bXBsYXRfaGVhcF9zdGFydCA9IF9saWJrdm1wbGF0X3BhZ2V0
YWJsZSArIFBBR0VfVEFCTEVfU0laRTsKKyAgICAgICBfbGlia3ZtcGxhdF9oZWFwX3N0YXJ0ID0g
X2xpYmt2bXBsYXRfcGFnZXRhYmxlICsgcGFnZV90YWJsZV9zaXplOwogICAgICAgIF9saWJrdm1w
bGF0X21lbV9lbmQgPSAodm9pZCAqKSBtYXhfYWRkcjsKCiAgICAgICAgLyogQUFyY2g2NCByZXF1
aXJlIHN0YWNrIGJlIDE2LWJ5dGVzIGFsaWdubWVudCBieSBkZWZhdWx0ICovCmRpZmYgLS1naXQg
YS9wbGF0L2t2bS9pbmNsdWRlL2t2bS1hcm0vYXJtNjQvbW0uaCBiL3BsYXQva3ZtL2luY2x1ZGUv
a3ZtLWFybS9hcm02NC9tbS5oCmluZGV4IDIzYmM2NTguLjllYzEyNzMgMTAwNjQ0Ci0tLSBhL3Bs
YXQva3ZtL2luY2x1ZGUva3ZtLWFybS9hcm02NC9tbS5oCisrKyBiL3BsYXQva3ZtL2luY2x1ZGUv
a3ZtLWFybS9hcm02NC9tbS5oCkBAIC02OSwxNSArNjksMTcgQEAKICNkZWZpbmUgTDJfVEFCTEVf
U0laRSAgIF9fUEFHRV9TSVpFCgogLyoKLSAqIEFzIFVuaWtyYWZ0IGltYWdlJ3Mgc2l6ZSBpcyB2
ZXJ5IHRpbnksIGZyb20gdGVucyB0byBodW5kcmVkcyBraWxvCi0gKiBieXRlcy4gU28gb25lIHBh
Z2UgZm9yIEwzX1RBQkxFIGlzIGVub3VnaCBmb3IgdXMgdG8gbWFuYWdlIHNlY3Rpb24KLSAqIGF0
dHJpYnV0ZXMgb2YgaW1hZ2UuCisgKiBXZSB3aWxsIHVzZSBVbmlrcmFmdCBpbWFnZSdzIHNpemUg
dG8gY2FjdWxhdGUgdGhlIEwzX1RBQkxFX1NJWkUuCisgKiBCZWNhdXNlIHdlIGFsbG9jYXRlIG9u
ZSBwYWdlIGZvciBMMiBUQUJMRSwgZm8gdGhlIG1heCBpbWFnZSBzaXplCisgKiB3b3VsZCBiZSAx
R0IuIEl0IHdvdWxkIGJlIGVub3VnaCBmb3IgY3VycmVudCBzdGFnZS4KICAqLwogI2RlZmluZSBM
M19UQUJMRV9PRkZTRVQgKEwyX1RBQkxFX09GRlNFVCArIEwyX1RBQkxFX1NJWkUpCi0jZGVmaW5l
IEwzX1RBQkxFX1NJWkUgICBfX1BBR0VfU0laRQorCisjaWZuZGVmIF9fQVNTRU1CTFlfXwoKIC8q
IFRvdGFsIG1lbW9yeSBzaXplIHRoYXQgd2lsbCBiZSB1c2VkIGJ5IHBhZ2V0YWJsZSAqLwotI2Rl
ZmluZSBQQUdFX1RBQkxFX1NJWkUgKEwwX1RBQkxFX1NJWkUgKyBMMV9UQUJMRV9TSVpFICsgXAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEwyX1RBQkxFX1NJWkUgKyBMM19UQUJMRV9T
SVpFKQorZXh0ZXJuIHVpbnQ2NF90IHBhZ2VfdGFibGVfc2l6ZTsKKworI2VuZGlmIC8qX19BU1NF
TUJMWV9fICovCgogI2VuZGlmIC8qIF9fS1ZNX0FSTV82NF9NTV9IX18gKi8KLS0KMi4xNy4xCgpJ
TVBPUlRBTlQgTk9USUNFOiBUaGUgY29udGVudHMgb2YgdGhpcyBlbWFpbCBhbmQgYW55IGF0dGFj
aG1lbnRzIGFyZSBjb25maWRlbnRpYWwgYW5kIG1heSBhbHNvIGJlIHByaXZpbGVnZWQuIElmIHlv
dSBhcmUgbm90IHRoZSBpbnRlbmRlZCByZWNpcGllbnQsIHBsZWFzZSBub3RpZnkgdGhlIHNlbmRl
ciBpbW1lZGlhdGVseSBhbmQgZG8gbm90IGRpc2Nsb3NlIHRoZSBjb250ZW50cyB0byBhbnkgb3Ro
ZXIgcGVyc29uLCB1c2UgaXQgZm9yIGFueSBwdXJwb3NlLCBvciBzdG9yZSBvciBjb3B5IHRoZSBp
bmZvcm1hdGlvbiBpbiBhbnkgbWVkaXVtLiBUaGFuayB5b3UuCgpfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1p
bmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qu
b3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Fri Feb 22 06:23:49 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 22 Feb 2019 06:23:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gx4FR-0001kV-Th; Fri, 22 Feb 2019 06:23:49 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=WrH0=Q5=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1gx4FP-0001jQ-Pj
 for minios-devel@lists.xenproject.org; Fri, 22 Feb 2019 06:23:47 +0000
X-Inumbo-ID: 685b2a65-366a-11e9-bc90-bc764e045a96
Received: from EUR02-HE1-obe.outbound.protection.outlook.com (unknown
 [2a01:111:f400:fe05::62b])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 685b2a65-366a-11e9-bc90-bc764e045a96;
 Fri, 22 Feb 2019 06:23:46 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; 
 s=selector1-arm-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=8NgFqMyrESeHCgwaUz4xPHlickTBgRcnSHMZqrH7aqo=;
 b=I2u2mgUPuN7FXn3zr0jFmwFPR2MWz8nLVZhOWI8MU9JCYcJz6xJkk7aopNkxPeuO9bU3Gg/GSQ78Y5k+lb1Wkm4fUDIvHQy97QvWsvIaUB/LrB/uucAOn9pP3a5nTetAfyyFwlMNwl1SLo3bKAFx+zgd4tCHxbEUoGZEQp85Kko=
Received: from VI1PR0801CA0080.eurprd08.prod.outlook.com
 (2603:10a6:800:7d::24) by DB5PR0801MB1479.eurprd08.prod.outlook.com
 (2603:10a6:0:3a::9) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1622.19; Fri, 22 Feb
 2019 06:23:44 +0000
Received: from DB5EUR03FT063.eop-EUR03.prod.protection.outlook.com
 (2a01:111:f400:7e0a::204) by VI1PR0801CA0080.outlook.office365.com
 (2603:10a6:800:7d::24) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.1643.15 via Frontend
 Transport; Fri, 22 Feb 2019 06:23:44 +0000
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 40.67.248.234 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.67.248.234; helo=nebula.arm.com;
Received: from nebula.arm.com (40.67.248.234) by
 DB5EUR03FT063.mail.protection.outlook.com (10.152.20.209) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id
 15.20.1643.11 via Frontend Transport; Fri, 22 Feb 2019 06:23:44 +0000
Received: from AZ-NEU-EX03.Arm.com (10.251.24.31) by AZ-NEU-EX03.Arm.com
 (10.251.24.31) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1415.2; Fri, 22 Feb
 2019 06:23:15 +0000
Received: from localhost.localdomain (10.169.40.37) by mail.arm.com
 (10.251.24.31) with Microsoft SMTP Server id 15.1.1415.2 via Frontend
 Transport; Fri, 22 Feb 2019 06:23:11 +0000
From: Jia He <justin.he@arm.com>
To: <minios-devel@lists.xenproject.org>, Simon Kuenzer
 <simon.kuenzer@neclab.eu>, <Sharan.Santhanam@neclab.eu>
Date: Fri, 22 Feb 2019 14:21:56 +0800
Message-ID: <20190222062200.26602-20-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190222062200.26602-1-justin.he@arm.com>
References: <20190222062200.26602-1-justin.he@arm.com>
MIME-Version: 1.0
X-EOPAttributedMessage: 0
X-MS-Office365-Filtering-HT: Tenant
X-Forefront-Antispam-Report: CIP:40.67.248.234; IPV:NLI; CTRY:US; EFV:NLI;
 SFV:NSPM;
 SFS:(10009020)(39860400002)(376002)(346002)(136003)(396003)(2980300002)(40434004)(189003)(199004)(72206003)(97736004)(186003)(36756003)(106002)(81156014)(77096007)(1076003)(478600001)(81166006)(356004)(54906003)(110136005)(26005)(6346003)(86362001)(316002)(6666004)(8676002)(2906002)(305945005)(47776003)(49486002)(486006)(14444005)(48376002)(126002)(476003)(50226002)(336012)(8936002)(76176011)(11346002)(5024004)(68736007)(426003)(4326008)(106466001)(50466002)(51416003)(5660300002)(2616005)(446003)(53936002)(8746002);
 DIR:OUT; SFP:1101; SCL:1; SRVR:DB5PR0801MB1479; H:nebula.arm.com; FPR:;
 SPF:Pass; LANG:en; PTR:InfoDomainNonexistent; MX:1; A:1; 
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id: 0873d5a3-0882-443a-76a2-08d6988e4bd1
X-Microsoft-Antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(8989299)(5600110)(711020)(4605104)(4608103)(4709054)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060);
 SRVR:DB5PR0801MB1479; 
X-MS-TrafficTypeDiagnostic: DB5PR0801MB1479:
X-Microsoft-Exchange-Diagnostics: 1; DB5PR0801MB1479;
 20:cDZhK/wdtYnd+iALAUjEgnV8bIgJm1UWc34Ov3bU4fEh9SNW0uYco60QRLzCM9Os3/v1oaY0rbnrIM5pWHQ/velbpfMOshJwNkcLwClZLPODt9J0WDHngWqYwdd/SjNXMyfxHEbzwt3DQYBoeq3Lyh/OxyudlQyk2GCVTT6Obvf9SqaomSnbLKWei/fjybd86Urz4DOsy6+bouruZoLzSWp+Nmj4KQm+kvmXkfpKZAuhR5AHFSIoxYlLf6YXmGd3/XsnanwH4tnFZr52DKacLNnPpTlnAj3LNWeMOGJKb7ZtVSF+IOVmmTGptyiy9lEiF9QfGWjYa8UQA46qnexR3bio7UAABUwqgIXavUyPPXMzdL+umeZhleaaZ4Dk2VpTw7Si6YtVH161g/8n7I5v4Dwc4Mb6JpgdWNgd04SBVo4pCphAGW5QvwV9k58lDe/2M+0QXQ453VduhGhBOf3pEGofQkEDqgidzzhHUlntHsjU/kD9Y/CJRJHojxsyxkRn
X-Microsoft-Antispam-PRVS: <DB5PR0801MB1479640AFF59C1395F71E69DF77F0@DB5PR0801MB1479.eurprd08.prod.outlook.com>
X-Forefront-PRVS: 09565527D6
X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB5PR0801MB1479;
 23:kfQA52NYEjvDB3iLwBKX6wsSXqpxm3x5Ll73uDF?=
 =?us-ascii?Q?Dqzd7CkWbDHtsH34gIj44q8F9O5BqjflBk+o84WlYB2ZCbbIQnnxzuPuUisa?=
 =?us-ascii?Q?fdgH7uUwi46WYSRlVGbC/NQvzEHPdZBsTjr/s3DzfvjeeOQBtI/TPdDKOYc3?=
 =?us-ascii?Q?6VJTTjRxJ+7FZ+QjepnNVHNuWImrDKy2d7IcB4TusrEwUD27eZWk5OJllMgh?=
 =?us-ascii?Q?Azv4jcsfWxruLv8QFvfK7wLYu6UqD8D54vDFvkTQjkY3Mlj2cHv2rS4Jcmho?=
 =?us-ascii?Q?VdvmjiJPl6mwOCm0HKGeVATXVSV5zP3unj1DEJijpqxWAsAcbuKM5TQbCW5J?=
 =?us-ascii?Q?1sbORSPUZIRukJxophYiP5HiAuuJiXSXX+kl+/ZjXv1SD2bpvChldgFt+5JE?=
 =?us-ascii?Q?3LgvODY8EQM5/HpoPBKFJHMdRN35o/u2OeIHMTP1+NsnCrhNJDG8BEMzih7q?=
 =?us-ascii?Q?3x98syMIfRTf/THvmmcFrN5Aqc/bgAq4N/GN95Z2TMoL51+MQjlfKAUTQwci?=
 =?us-ascii?Q?0RaUjSn00/hXQd0JbT4j/wYlkE+rpTM8LalRMTvEWBG1MeuTwHjHGeyb5Bj4?=
 =?us-ascii?Q?+cM2b624HwdWZomVS+uxUXrO6IhruNDfmfT3y1BMQ3egpRad5MqX697Naqbl?=
 =?us-ascii?Q?humsOvkfzG3XMAPr5qU/oy/JM4FD9TCHXf0/skOinQX7qaNvRvIyGjFU1H/o?=
 =?us-ascii?Q?UQY+buoj/6oFyCaLhdSYeY5fkPJdUQxEidyJKkYUctHo91A/UanCk3L0mW44?=
 =?us-ascii?Q?mGXAIx8XJeH46PJFWjPE6oOa3wV5wbWwxauKjOTy/AGN0vJcsop09Rc8heED?=
 =?us-ascii?Q?NzpdHqwildFcxmZdbGbCIVgtwxPFib9YnUxq8UCaxXtjd4newg7CqBXCoI4G?=
 =?us-ascii?Q?TtUcdfCu2uIpLGgVY7GdcH+5gjjT92aedTMUy6lXT4QvN3CwDPo7M7z9ugLe?=
 =?us-ascii?Q?ijM2iO/X6196LkWM8+ElbwQ2j20gZHkle2M22hS1yDOSp8S1OFN46CHH2H4T?=
 =?us-ascii?Q?G8RDUgRPqHo2v4q7yIVTQghGVR6pgmeoGG6RNDLZdumD36nKV42NNv61/ZvT?=
 =?us-ascii?Q?nOU8Eq593yvH5IqGxKXsRGqwvF4lD8y47GQAmHKmtUS978rPqGBtRUZOfiCv?=
 =?us-ascii?Q?YOoGEbbfPBuVuX+PsEYOyI9X7/SvhYVSwv58yVWJkPsjisNjMy+DMpZKG39F?=
 =?us-ascii?Q?FXVmcr0vWdP1wSCU=3D?=
X-MS-Exchange-SenderADCheck: 1
X-Microsoft-Antispam-Message-Info: BfjdfKvRM9rts9M9G30HJEyrzwvlFMv78JaizFAECqOjVHpvJ9jWbvStbAtOnZj9t/bYhdsbN1VZuOyUONSbYku3N+u9FqJzNN6MnP03xltbVMOVkln5O9O4FM9sFmIVfU5CFNMlHclPJFKvX4hxJHWDYeTt+jm6/DWJJIyiDzTPT7OptQ73N3Bz+HWeOnQGKZnOAExrljt/k6PoDdMl8St/g/ccPgZxnDr+14VCVfrWChoOIEN/VecX0qGaFU/WZqNIij2omwxHBhaMCAuR6SbcAb5Q2MM42AQ/lVF538I43FiV9/2tC8Hx6WTOvh4VkWVTtKnAQ8rFizIItby9vO1sA1hdQoNqGLzubiHT0WK/fM/7Ew1Tgsw2Rmi1ZQNRP/+3hYJ6K6vjZNkSHIfA1LfJWN5dTMqHF1AWMJyovEY=
X-Microsoft-Exchange-Diagnostics: 1; DB5PR0801MB1479;
 20:qtGUfwiYhrD0CEWOdK3wWc9HsIpeJzwEpdmx8WjEF7ku3MyK5tHz56jZenM4S4nJWZJXMal6hkbkFXYn6j9pMIqcL49ddOtXs9pgbp3seUwI96feRSMgxHSCVHj1IwGPdIdyQPfLfMF+uzaLdGfz546OOYmx8AfKJyvEus9zDR0=
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Feb 2019 06:23:44.4150 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 0873d5a3-0882-443a-76a2-08d6988e4bd1
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[40.67.248.234];
 Helo=[nebula.arm.com]
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB5PR0801MB1479
Subject: [Minios-devel] [UNIKRAFT PATCHv6 19/23] plat/kvm: arm64: Build L3
 page table for range greater than 2MB
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>, Jia He <justin.he@arm.com>,
 Wei Chen <wei.chen@arm.com>, Kaly Xin <Kaly.Xin@arm.com>,
 Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

RnJvbTogV2VpIENoZW4gPHdlaS5jaGVuQGFybS5jb20+CkN1cnJlbnQgTDMgdGFibGUgYnVpbGQg
ZnVuY3Rpb24gb25seSBzdXBwb3J0cyB0byBidWlsZCBMMyB0YWJsZSBmb3IKbWVtb3J5IHJhbmdl
IG5vdCBleGNlZWRlZCB0aGFuIDJNQi4gQnV0IGFzIHdlIG1lbnRpb25lZCBpbiBwcmV2aW91cwpw
YXRjaCwgdGhlIGltYWdlIHNpemUgd2lsbCBiZSBncmVhdGVyIHRoYW4gMk1CLiBTbyBpbiB0aGlz
IGNhc2UsIGJ1aWxkCkwzIHRhYmxlIGZvciBiaWdnZXIgaW1hZ2UgaXMgbm90IGNvbnZlbmllbnQu
IFdlIGhhdmUgaW1wcm92ZSB0aGUKZnVuY3Rpb24gb2YgYnVpbGRpbmcgTDMgdGFibGUgdG8gc3Vw
cG9ydCBiaWdnZXIgbWVtb3J5IHJhbmdlLgoKU2lnbmVkLW9mZi1ieTogV2VpIENoZW4gPHdlaS5j
aGVuQGFybS5jb20+ClNpZ25lZC1vZmYtYnk6IEppYSBIZSA8anVzdGluLmhlQGFybS5jb20+ClJl
dmlld2VkLWJ5OiBTaGFyYW4gU2FudGhhbmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xhYi5ldT4K
LS0tCiBwbGF0L2t2bS9hcm0vcGFnZXRhYmxlNjQuUyB8IDE5ICsrKysrKysrKysrKysrKystLS0K
IDEgZmlsZSBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAt
LWdpdCBhL3BsYXQva3ZtL2FybS9wYWdldGFibGU2NC5TIGIvcGxhdC9rdm0vYXJtL3BhZ2V0YWJs
ZTY0LlMKaW5kZXggYmQ0NzNiZi4uMjEyZjhlMCAxMDA2NDQKLS0tIGEvcGxhdC9rdm0vYXJtL3Bh
Z2V0YWJsZTY0LlMKKysrIGIvcGxhdC9rdm0vYXJtL3BhZ2V0YWJsZTY0LlMKQEAgLTQyNyw3ICs0
MjcsMTMgQEAgbGlua19sMl9wYWdldGFibGU6CiAgKiAgeDExLCB4MTIgYW5kIHgxMyBhcmUgdHJh
c2hlZAogICovCiBidWlsZF9sM19wYWdldGFibGU6Ci0gICAgICAgLyogRmluZCB0aGUgdGFibGUg
aW5kZXggKi8KKyAgICAgICAvKiBGaW5kIHRoZSBmaXJzdCBMMyB0YWJsZSB0byBiZSB1cGRhdGVk
ICovCisgICAgICAgbHNyIHgxMSwgeDgsICNMMl9TSElGVAorICAgICAgIGFuZCB4MTEsIHgxMSwg
I0xuX0FERFJfTUFTSworICAgICAgIGxzbCB4MTEsIHgxMSwgI0wzX1NISUZUCisgICAgICAgYWRk
IHg2LCB4MTEsIHg2CisKKyAgICAgICAvKiBGaW5kIHRoZSBmaXJzdCBlbnRyeSBpbmRleCBpbiBM
MyB0YWJsZSAqLwogICAgICAgIGxzciB4MTEsIHg4LCAjTDNfU0hJRlQKICAgICAgICBhbmQgeDEx
LCB4MTEsICNMbl9BRERSX01BU0sKCkBAIC00NDYsMTAgKzQ1MiwxNyBAQCBidWlsZF9sM19wYWdl
dGFibGU6CgogICAgICAgIC8qIFN0b3JlIHRoZSBlbnRyeSAqLwogICAgICAgIHN0ciB4MTMsIFt4
NiwgeDExLCBsc2wgIzNdCisgICAgICAgYWRkIHgxMSwgeDExLCAjMQoKKyAgICAgICAvKiBDcm9z
cyBMMyBQYWdlPyAqLworICAgICAgIGFuZCB4MTEsIHgxMSwgI0xuX0FERFJfTUFTSworICAgICAg
IGNibnogeDExLCAyZgorCisgICAgICAgLyogVG8gbmV4dCBMMyB0YWJsZSAqLworICAgICAgIGFk
ZCB4NiwgeDYsICNfX1BBR0VfU0laRQorCisyOiAgICAgYWRkIHg5LCB4OSwgIzEKICAgICAgICBz
dWIgeDEwLCB4MTAsICMxCi0gICAgICAgYWRkIHgxMSwgeDExLCAjMQotICAgICAgIGFkZCB4OSwg
eDksICMxCiAgICAgICAgY2JueiB4MTAsIDFiCgogICAgICAgIHJldAotLQoyLjE3LjEKCklNUE9S
VEFOVCBOT1RJQ0U6IFRoZSBjb250ZW50cyBvZiB0aGlzIGVtYWlsIGFuZCBhbnkgYXR0YWNobWVu
dHMgYXJlIGNvbmZpZGVudGlhbCBhbmQgbWF5IGFsc28gYmUgcHJpdmlsZWdlZC4gSWYgeW91IGFy
ZSBub3QgdGhlIGludGVuZGVkIHJlY2lwaWVudCwgcGxlYXNlIG5vdGlmeSB0aGUgc2VuZGVyIGlt
bWVkaWF0ZWx5IGFuZCBkbyBub3QgZGlzY2xvc2UgdGhlIGNvbnRlbnRzIHRvIGFueSBvdGhlciBw
ZXJzb24sIHVzZSBpdCBmb3IgYW55IHB1cnBvc2UsIG9yIHN0b3JlIG9yIGNvcHkgdGhlIGluZm9y
bWF0aW9uIGluIGFueSBtZWRpdW0uIFRoYW5rIHlvdS4KCl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9z
LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcv
bWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Fri Feb 22 06:23:54 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 22 Feb 2019 06:23:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gx4FW-0001mA-0h; Fri, 22 Feb 2019 06:23:54 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=WrH0=Q5=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1gx4FU-0001lV-1H
 for minios-devel@lists.xenproject.org; Fri, 22 Feb 2019 06:23:52 +0000
X-Inumbo-ID: 6ac0f75b-366a-11e9-bc90-bc764e045a96
Received: from EUR02-HE1-obe.outbound.protection.outlook.com (unknown
 [2a01:111:f400:fe05::61a])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 6ac0f75b-366a-11e9-bc90-bc764e045a96;
 Fri, 22 Feb 2019 06:23:50 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; 
 s=selector1-arm-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=D+DocCaj/0b6HdtBq5fZUsE2Mxv+BxtB+dK052BBuVw=;
 b=nTx90PXSzA0ilXfLMfdqs6a3dGeZ/dxin5k0XsMj9Owc8KjSZmA2cE4Wocmzg7KeXSqS/ql8dofm2ZZ3Tq8GNzQwB8DCg+caAa18J28Rnca2eXfGEiwn7u7/T8la9AJo1OXj9LIDlT4CvdL37Ti/6ljwtnauxpD9pgWOEhTaxR8=
Received: from VI1PR0801CA0080.eurprd08.prod.outlook.com
 (2603:10a6:800:7d::24) by DB5PR0801MB1479.eurprd08.prod.outlook.com
 (2603:10a6:0:3a::9) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1622.19; Fri, 22 Feb
 2019 06:23:48 +0000
Received: from DB5EUR03FT063.eop-EUR03.prod.protection.outlook.com
 (2a01:111:f400:7e0a::204) by VI1PR0801CA0080.outlook.office365.com
 (2603:10a6:800:7d::24) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.1643.15 via Frontend
 Transport; Fri, 22 Feb 2019 06:23:48 +0000
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 40.67.248.234 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.67.248.234; helo=nebula.arm.com;
Received: from nebula.arm.com (40.67.248.234) by
 DB5EUR03FT063.mail.protection.outlook.com (10.152.20.209) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id
 15.20.1643.11 via Frontend Transport; Fri, 22 Feb 2019 06:23:48 +0000
Received: from AZ-NEU-EX01.Emea.Arm.com (10.251.26.4) by AZ-NEU-EX03.Arm.com
 (10.251.24.31) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.1415.2; Fri, 22 Feb
 2019 06:23:26 +0000
Received: from AZ-NEU-EX03.Arm.com (10.251.24.31) by AZ-NEU-EX01.Emea.Arm.com
 (10.251.26.4) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1415.2; Fri, 22
 Feb 2019 06:23:25 +0000
Received: from localhost.localdomain (10.169.40.37) by mail.arm.com
 (10.251.24.31) with Microsoft SMTP Server id 15.1.1415.2 via Frontend
 Transport; Fri, 22 Feb 2019 06:23:22 +0000
From: Jia He <justin.he@arm.com>
To: <minios-devel@lists.xenproject.org>, Simon Kuenzer
 <simon.kuenzer@neclab.eu>, <Sharan.Santhanam@neclab.eu>
Date: Fri, 22 Feb 2019 14:21:59 +0800
Message-ID: <20190222062200.26602-23-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190222062200.26602-1-justin.he@arm.com>
References: <20190222062200.26602-1-justin.he@arm.com>
MIME-Version: 1.0
X-EOPAttributedMessage: 0
X-MS-Office365-Filtering-HT: Tenant
X-Forefront-Antispam-Report: CIP:40.67.248.234; IPV:NLI; CTRY:US; EFV:NLI;
 SFV:NSPM;
 SFS:(10009020)(39860400002)(376002)(346002)(136003)(396003)(2980300002)(40434004)(189003)(199004)(72206003)(97736004)(186003)(36756003)(106002)(81156014)(77096007)(1076003)(478600001)(81166006)(356004)(54906003)(110136005)(26005)(6346003)(86362001)(316002)(6666004)(8676002)(2906002)(305945005)(47776003)(49486002)(486006)(14444005)(48376002)(126002)(476003)(50226002)(336012)(8936002)(76176011)(11346002)(5024004)(68736007)(426003)(4326008)(106466001)(50466002)(51416003)(5660300002)(2616005)(446003)(53936002)(8746002);
 DIR:OUT; SFP:1101; SCL:1; SRVR:DB5PR0801MB1479; H:nebula.arm.com; FPR:;
 SPF:Pass; LANG:en; PTR:InfoDomainNonexistent; MX:1; A:1; 
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id: 806db3fa-6c23-4973-f141-08d6988e4e34
X-Microsoft-Antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(8989299)(5600110)(711020)(4605104)(4608103)(4709054)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060);
 SRVR:DB5PR0801MB1479; 
X-MS-TrafficTypeDiagnostic: DB5PR0801MB1479:
X-Microsoft-Exchange-Diagnostics: 1; DB5PR0801MB1479;
 20:BDHENyoqkWEWG9v8OePvaVLVqRwsuIj2/SDAuDNhFEXMva6vlK1zXqCqMa8iOPZ7DKEpZ/g9xljipgkPs/XIVxMntQpaXCSJobsB2jOOR9/yvhdf1CtNvsCb7WR3RLTSjq2qX6dxz7YLXm+nVGhQz6zxMhKDXEXgP3L7PArm1cl96Lg2Av5VycTk4/2CDYrkKqEQMOjaq/7TlK2Klgsip30OOjHnanL+YqUgBx61IQ91BVntkiPR7DLD2SJAi/eOx+XfSvNVA2P9W4toPAS/tb4WFQxgdCKU5ZxB/nYPrmoke8EUfsrNCnUzNVY9dYICyyoeE/BlNtSlLwyhO+GYX/xySomEYi/sKk1IxGyE9evSMLYhvyapOdj+o80LYRPa+ksma6Qkx1eYNRu6Thv+PUFanoCB7OIxVy9W2zRMpwtiEuu5upgEu8l/jMJuT7ZRvF5ClBJULHpdzdRi1L88QjOdKJ/P4JWF8wj4GlFHBTWiSLLnpIlmm5LkCtZuCMst
X-Microsoft-Antispam-PRVS: <DB5PR0801MB1479491B116A88498C35BC37F77F0@DB5PR0801MB1479.eurprd08.prod.outlook.com>
X-Forefront-PRVS: 09565527D6
X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB5PR0801MB1479;
 23:5KGPoqzSVOFIBb6cojYRHTLyOD0T2WI3At86Goy?=
 =?us-ascii?Q?RZauMzw5LJnYUhaizsmg/N8zd+CPxm353e/L/YPjRAKht3YtfIHjg3RA2CQO?=
 =?us-ascii?Q?PiXL9nAywojNhb6bYkWBndriCfNEVv6baNcykJRhAavT20AjmIZAzoCna5d7?=
 =?us-ascii?Q?3TtWH8o2maIcmtF+B5kLrDodRhigu9+EfZcSRT//8vxEVqUdJPHfdPx58RVs?=
 =?us-ascii?Q?vx6g0qgnAt2spiXBYSXSjy6tEovJt1GBL4iBLQVikBThfarIQB4nwNbuIWs5?=
 =?us-ascii?Q?MpWMrB7tcdxnfX4XqcF+yIbL/+k2ww72utlwyhotPUPu5ufTlmoG7U2SVsE7?=
 =?us-ascii?Q?tQcYjAJOWdZViYG13QsLTT2rYCddqf2miZwP+Fb+hQn2SdUAKPRKVqm8yYNJ?=
 =?us-ascii?Q?m2GgIpeaUqS9DqERj0lHLUvwXblXdjH7IQ8/Z1xnBCJ1tJpbpY3HcmkZnIBB?=
 =?us-ascii?Q?QSdMF4T/p2s2XErecHPOh9xElFff50wJhYB6742uZgTcsatDGpk8jzmvb86z?=
 =?us-ascii?Q?SwuqVuIV6fqUIo87525xkmCBnE9w7Z7GKstzJZ7jXxTpXqkyhefUBYBHGQ0t?=
 =?us-ascii?Q?T4o7tftDVaFCkhikr5iThzyM7GCDv7YU76w9ukgolTlQuE8GM4zYj2IsuV1Z?=
 =?us-ascii?Q?B9hhBmfdmOcCtkNknLBjVv3gbWKpzQznAmw8xncgg1dqO+JqPo/h9RA/hFDz?=
 =?us-ascii?Q?tfQucUsQhHVjbiFQUlyL08SiIcVX397Y7y28q95ieg9K4RUVnsvmjLxRqTk9?=
 =?us-ascii?Q?9ChZ7u8vOYvNmhs92bhN07D+0778bDu5kqCMLZcYBoMe1PoLRW6R99Z1V+L6?=
 =?us-ascii?Q?/2sL4I85AwWWmHehXNSnQcmkg3sD86ix0PdrTY37lXeRvzMk92P3tttSEbMQ?=
 =?us-ascii?Q?O/z+gMvJsmVAKUkD+f7bxJaMt2NgDySOyzU2sDElJ87ahm4va4sJ7+mOlBr5?=
 =?us-ascii?Q?q+Uf17F1CZpxX30TOv70CfAx4SxD95EXivc2Ty5s1h+FYBlbaCAte3bRk/3R?=
 =?us-ascii?Q?zACiOj8U7aOrrugcmPsBX3NfQFiffnwufzUMwLJgOrhhezzzgxWcRbUdK6+5?=
 =?us-ascii?Q?FTcTmNaGpecsst6lEYKlwmMotK9CLbuKEspTGfJNF3tmvmR4QFRiaxwAK0gT?=
 =?us-ascii?Q?O514vV4PDahU1FKFuqUQ2XKQGxKPgC4MjgiizEH7+00R2KqIyw7SVn2jj+5Q?=
 =?us-ascii?Q?hna60yAZ43Q3w1vA=3D?=
X-MS-Exchange-SenderADCheck: 1
X-Microsoft-Antispam-Message-Info: jeIdHqY1oJDVCmCDS83uRK/cykpHavUHGWXHIhuLfqWihYZJoV3p0p0MdnaNTF7C9m7QzRBxafYVFkw6NrQlqq7xLnygW4yhcyKunIGLQykD4r/vwCqGTcZ5OvVv017x7EVvZ7ZwKsXj9UJ5Pyfup0Kh+Ggug+FKpHHeC+o/xHxqZbTyWCzhb11yNFkbxIId/Es7MgNCN6nhFc2E9a8ffmurISruLqkTcCFhssrrQ2xcqx+5z3Wj1pKABFUMWotsQ/EKD1civ8GvyHhXRzBew7OUVOrJBzEFcbx1ncdS8bJWG8z+VT4wwvPagLKoHnnHyemkKJ3TXiK2wPHoGtL3xz1a6PnbR5/lpPSptWHzxMfAVj45XpPAE1C91ZxPZjrTsd4+Neu8Ve29SxtqsBFYJrVRxgrOrOpvHOqh1zdy3wY=
X-Microsoft-Exchange-Diagnostics: 1; DB5PR0801MB1479;
 20:f+p41NCqMbHr4lZW7fP3rNDKL7GhLSW9W4vObD/1BZYeX2j8/Z5IJVtCFyBugs8P4sdH6xsu8q/yD3IWGPDZRjdMt17Tk8Kd6NW8ucMCALKjK7FFEd239hwWO8hnXANVclzQ+tKKx7FSQ+zf1iedxxQUjqbpRq4H1gd8dysuJxg=
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Feb 2019 06:23:48.4254 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 806db3fa-6c23-4973-f141-08d6988e4e34
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[40.67.248.234];
 Helo=[nebula.arm.com]
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB5PR0801MB1479
Subject: [Minios-devel] [UNIKRAFT PATCHv6 22/23] plat/kvm: arm64: Ensure
 there is no stall data in cache when boot
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>, Jia He <justin.he@arm.com>,
 Wei Chen <wei.chen@arm.com>, Kaly Xin <Kaly.Xin@arm.com>,
 Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

RnJvbTogV2VpIENoZW4gPHdlaS5jaGVuQGFybS5jb20+CldlIHdpbGwgZGlzYWJsZSBNTVUgYW5k
IENBQ0hFIGJlZm9yZSBwYWdldGFibGUgaXMgcmVhZHkuIFRoaXMKbWVhbnMgd2Ugd2lsbCBjaGFu
Z2UgbWVtb3J5IHdpdGggY2FjaGUgZGlzYWJsZWQsIHNvIHdlIG5lZWQgdG8KaW52YWxpZGF0ZSB0
aGUgY2FjaGUgdG8gZW5zdXJlIHRoZXJlIGlzIG5vIHN0YWxsIGRhdGEgaW4gaXQuCkJ1dCB3ZSBk
b24ndCBrbm93IHRoZSBzaXplIG9mIHRoZSBSQU0gZWl0aGVyLiBBbmQgaXQgd291bGQgYmUKZXhw
ZW5zaXZlIHRvIGludmFsaWRhdGUgdGhlIHdob2xlIGNhY2hlLiBJbiB0aGlzIGNhc2UsIGp1c3QK
anVzdCBuZWVkIHRvIGludmFsaWRhdGUgd2hhdCB3ZSBhcmUgZ29pbmcgdG8gdXNlOgpEVEIsIFRF
WFQsIERBVEEsIEJTUywgcGFnZXRhYmxlcyBhbmQgYm9vdHN0YWNrLgoKU2lnbmVkLW9mZi1ieTog
V2VpIENoZW4gPHdlaS5jaGVuQGFybS5jb20+ClNpZ25lZC1vZmYtYnk6IEppYSBIZSA8anVzdGlu
LmhlQGFybS5jb20+ClJldmlld2VkLWJ5OiBTaGFyYW4gU2FudGhhbmFtIDxzaGFyYW4uc2FudGhh
bmFtQG5lY2xhYi5ldT4KUmV2aWV3ZWQtYnk6IEp1bGllbiBHcmFsbCA8anVsaWVuLmdyYWxsQGFy
bS5jb20+Ci0tLQogcGxhdC9rdm0vYXJtL2VudHJ5NjQuUyB8IDM3ICsrKysrKysrKysrKysrKysr
KysrKystLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAyMiBpbnNlcnRpb25zKCspLCAx
NSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9wbGF0L2t2bS9hcm0vZW50cnk2NC5TIGIvcGxh
dC9rdm0vYXJtL2VudHJ5NjQuUwppbmRleCAxMjIwMWE5Li5mZjYzZWUwIDEwMDY0NAotLS0gYS9w
bGF0L2t2bS9hcm0vZW50cnk2NC5TCisrKyBiL3BsYXQva3ZtL2FybS9lbnRyeTY0LlMKQEAgLTcy
LDE0ICs3MiwzNCBAQCBFTlRSWShfbGlia3ZtcGxhdF9lbnRyeSkKICAgICAgICBhZGQgeDE3LCB4
MTcsICNMMV9UQUJMRV9TSVpFCiAgICAgICAgYWRkIHgxNywgeDE3LCAjTDJfVEFCTEVfU0laRQoK
KyAgICAgICAvKgorICAgICAgICAqIFdlIHdpbGwgZGlzYWJsZSBNTVUgYW5kIENBQ0hFIGJlZm9y
ZSBwYWdldGFibGUgaXMgcmVhZHkuIFRoaXMKKyAgICAgICAgKiBtZWFucyB3ZSB3aWxsIGNoYW5n
ZSBtZW1vcnkgd2l0aCBjYWNoZSBkaXNhYmxlZCwgc28gd2UgbmVlZCB0bworICAgICAgICAqIGlu
dmFsaWRhdGUgdGhlIGNhY2hlIHRvIGVuc3VyZSB0aGVyZSBpcyBubyBzdGFsbCBkYXRhIGluIGl0
LgorICAgICAgICAqIEJ1dCB3ZSBkb24ndCBrbm93IHRoZSBzaXplIG9mIHRoZSBSQU0gZWl0aGVy
LiBBbmQgaXQgd291bGQgYmUKKyAgICAgICAgKiBleHBlbnNpdmUgdG8gaW52YWxpZGF0ZSB0aGUg
d2hvbGUgY2FjaGUuIEluIHRoaXMgY2FzZSwganVzdAorICAgICAgICAqIGp1c3QgbmVlZCB0byBp
bnZhbGlkYXRlIHdoYXQgd2UgYXJlIGdvaW5nIHRvIHVzZToKKyAgICAgICAgKiBEVEIsIFRFWFQs
IERBVEEsIEJTUywgcGFnZXRhYmxlcyBhbmQgYm9vdHN0YWNrLgorICAgICAgICAqLworICAgICAg
IGFkZCB4MjcsIHgyNiwgeDE3CisgICAgICAgYWRkIHgyNywgeDI3LCAjX19TVEFDS19TSVpFCisg
ICAgICAgc3ViIHgxLCB4MjcsIHgyNQorICAgICAgIGJsIGNsZWFuX2FuZF9pbnZhbGlkYXRlX2Rj
YWNoZV9yYW5nZQorCisgICAgICAgLyogRGlzYWJsZSB0aGUgTU1VIGFuZCBELUNhY2hlLiAqLwor
ICAgICAgIGRzYiBzeQorICAgICAgIG1ycyB4Miwgc2N0bHJfZWwxCisgICAgICAgbW92IHgzLCAj
U0NUTFJfTXxTQ1RMUl9DCisgICAgICAgYmljIHgyLCB4MiwgeDMKKyAgICAgICBtc3Igc2N0bHJf
ZWwxLCB4MgorICAgICAgIGlzYgorCiAgICAgICAgLyoKICAgICAgICAgKiBDbGVhbiB0aGUgYm9v
dCBzdGFjayBhbmQgcGFnZSB0YWJsZS4gQXMgX2VuZCwgUEFHRV9UQUJMRV9TSVpFIGFuZAogICAg
ICAgICAqIEJPT1RfU1RBQ0tfU0laRSBhcmUgcGFnZV9zaXplIGFsaWdubWVudCwgdGhlIGJvb3Qg
c3RhY2sgY2FuIGJlCiAgICAgICAgICogNjQtYnl0ZXMgYWxpZ25tZW50IHRvby4gRXhlY3V0ZSA0
IHN0cCBjb25zZWN1dGl2ZWx5IHdpdGhvdXQgYm91bmRhcnkKICAgICAgICAgKiBjaGVjayB3b3Vs
ZCBiZSBzYWZlIGhlcmUuCiAgICAgICAgICovCi0gICAgICAgYWRkIHgyNywgeDI2LCB4MTcKLSAg
ICAgICBhZGQgeDI3LCB4MjcsICNfX1NUQUNLX1NJWkUKIDE6CiAgICAgICAgc3RwIHh6ciwgeHpy
LCBbeDI2XSwgIzE2CiAgICAgICAgc3RwIHh6ciwgeHpyLCBbeDI2XSwgIzE2CkBAIC05MCwxOSAr
MTEwLDYgQEAgRU5UUlkoX2xpYmt2bXBsYXRfZW50cnkpCgogICAgICAgIG1vdiBzcCwgeDI3Cgot
ICAgICAgIC8qCi0gICAgICAgICogRGlzYWJsZSB0aGUgTU1VLiBXZSBtYXkgaGF2ZSBlbnRlcmVk
IHRoZSBrZXJuZWwgd2l0aCBpdCBvbiBhbmQKLSAgICAgICAgKiB3aWxsIG5lZWQgdG8gdXBkYXRl
IHRoZSB0YWJsZXMgbGF0ZXIuIElmIHRoaXMgaGFzIGJlZW4gc2V0IHVwCi0gICAgICAgICogd2l0
aCBhbnl0aGluZyBvdGhlciB0aGFuIGEgVkEgPT0gUEEgbWFwIHRoZW4gdGhpcyB3aWxsIGZhaWws
Ci0gICAgICAgICogYnV0IGluIHRoaXMgY2FzZSB0aGUgY29kZSB0byBmaW5kIHdoZXJlIHdlIGFy
ZSBydW5uaW5nIGZyb20KLSAgICAgICAgKiB3b3VsZCBoYXZlIGFsc28gZmFpbGVkLgotICAgICAg
ICAqLwotICAgICAgIGRzYiBzeQotICAgICAgIG1ycyB4Miwgc2N0bHJfZWwxCi0gICAgICAgYmlj
IHgyLCB4MiwgI1NDVExSX00KLSAgICAgICBtc3Igc2N0bHJfZWwxLCB4MgotICAgICAgIGlzYgot
CiAgICAgICAgLyogU2V0IHRoZSBjb250ZXh0IGlkICovCiAgICAgICAgbXNyIGNvbnRleHRpZHJf
ZWwxLCB4enIKCi0tCjIuMTcuMQoKSU1QT1JUQU5UIE5PVElDRTogVGhlIGNvbnRlbnRzIG9mIHRo
aXMgZW1haWwgYW5kIGFueSBhdHRhY2htZW50cyBhcmUgY29uZmlkZW50aWFsIGFuZCBtYXkgYWxz
byBiZSBwcml2aWxlZ2VkLiBJZiB5b3UgYXJlIG5vdCB0aGUgaW50ZW5kZWQgcmVjaXBpZW50LCBw
bGVhc2Ugbm90aWZ5IHRoZSBzZW5kZXIgaW1tZWRpYXRlbHkgYW5kIGRvIG5vdCBkaXNjbG9zZSB0
aGUgY29udGVudHMgdG8gYW55IG90aGVyIHBlcnNvbiwgdXNlIGl0IGZvciBhbnkgcHVycG9zZSwg
b3Igc3RvcmUgb3IgY29weSB0aGUgaW5mb3JtYXRpb24gaW4gYW55IG1lZGl1bS4gVGhhbmsgeW91
LgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9z
LWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0
cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Fri Feb 22 06:23:54 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 22 Feb 2019 06:23:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gx4FW-0001mF-2R; Fri, 22 Feb 2019 06:23:54 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=WrH0=Q5=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1gx4FU-0001lX-1I
 for minios-devel@lists.xenproject.org; Fri, 22 Feb 2019 06:23:52 +0000
X-Inumbo-ID: 6a63ecc0-366a-11e9-bc90-bc764e045a96
Received: from EUR03-VE1-obe.outbound.protection.outlook.com (unknown
 [40.107.5.84]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 6a63ecc0-366a-11e9-bc90-bc764e045a96;
 Fri, 22 Feb 2019 06:23:50 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; 
 s=selector1-arm-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=3osUg6MdGkwrUXOEQc+FTVcJoHLTDVPbeKHCSKd6Ipg=;
 b=EBto4bcDiQrhZpqQp0Zc7Q2wO+DczccHUdmG4LNSeegbJGeqr7dgVUTQNGCbZxtpCbbIoMKRF8fNb6bhVDZJxVrdty4YRU283kTwy5nynsm7A2YTkhQdCRASyXNDx9IdT1gJbXhSugVpbUDRInM1sXakqfwfozRj5zuyouCvGwU=
Received: from VI1PR0801CA0080.eurprd08.prod.outlook.com
 (2603:10a6:800:7d::24) by VI1PR0802MB2542.eurprd08.prod.outlook.com
 (2603:10a6:800:b0::16) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1643.14; Fri, 22 Feb
 2019 06:23:47 +0000
Received: from DB5EUR03FT063.eop-EUR03.prod.protection.outlook.com
 (2a01:111:f400:7e0a::204) by VI1PR0801CA0080.outlook.office365.com
 (2603:10a6:800:7d::24) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.1643.15 via Frontend
 Transport; Fri, 22 Feb 2019 06:23:47 +0000
Authentication-Results: spf=pass (sender IP is 40.67.248.234)
 smtp.mailfrom=arm.com; lists.xenproject.org; dkim=none (message not signed)
 header.d=none;lists.xenproject.org; dmarc=bestguesspass action=none
 header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 40.67.248.234 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.67.248.234; helo=nebula.arm.com;
Received: from nebula.arm.com (40.67.248.234) by
 DB5EUR03FT063.mail.protection.outlook.com (10.152.20.209) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id
 15.20.1643.11 via Frontend Transport; Fri, 22 Feb 2019 06:23:47 +0000
Received: from AZ-NEU-EX03.Arm.com (10.251.24.31) by AZ-NEU-EX03.Arm.com
 (10.251.24.31) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1415.2; Fri, 22 Feb
 2019 06:23:21 +0000
Received: from localhost.localdomain (10.169.40.37) by mail.arm.com
 (10.251.24.31) with Microsoft SMTP Server id 15.1.1415.2 via Frontend
 Transport; Fri, 22 Feb 2019 06:23:19 +0000
From: Jia He <justin.he@arm.com>
To: <minios-devel@lists.xenproject.org>, Simon Kuenzer
 <simon.kuenzer@neclab.eu>, <Sharan.Santhanam@neclab.eu>
Date: Fri, 22 Feb 2019 14:21:58 +0800
Message-ID: <20190222062200.26602-22-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190222062200.26602-1-justin.he@arm.com>
References: <20190222062200.26602-1-justin.he@arm.com>
MIME-Version: 1.0
X-EOPAttributedMessage: 0
X-MS-Office365-Filtering-HT: Tenant
X-Forefront-Antispam-Report: CIP:40.67.248.234; IPV:NLI; CTRY:US; EFV:NLI;
 SFV:NSPM;
 SFS:(10009020)(376002)(346002)(39860400002)(396003)(136003)(2980300002)(199004)(189003)(40434004)(1076003)(6666004)(49486002)(8936002)(8746002)(97736004)(5660300002)(356004)(305945005)(51416003)(50466002)(81166006)(11346002)(81156014)(48376002)(426003)(26005)(336012)(77096007)(2616005)(76176011)(14444005)(5024004)(476003)(106002)(86362001)(8676002)(486006)(36756003)(446003)(126002)(186003)(54906003)(106466001)(53936002)(110136005)(316002)(478600001)(50226002)(68736007)(2906002)(47776003)(4326008)(72206003);
 DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR0802MB2542; H:nebula.arm.com; FPR:;
 SPF:Pass; LANG:en; PTR:InfoDomainNonexistent; A:1; MX:1; 
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id: 2f7e5614-f21e-43a9-0acd-08d6988e4d5e
X-Microsoft-Antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600110)(711020)(4605104)(4608103)(4709054)(2017052603328)(7153060);
 SRVR:VI1PR0802MB2542; 
X-MS-TrafficTypeDiagnostic: VI1PR0802MB2542:
X-Microsoft-Exchange-Diagnostics: 1; VI1PR0802MB2542;
 20:DhLc+/SUvFwQa7/O4hzPVry0dAKLZhR1B2UErKUY/Q/ITQi/pkxuE9p+1Q7ZpbGm9fp7A2zQDwabKC34I+XxwK1JfEvKxsMkhVt/F+sj7o6Sl/5ZvwHDv072M7IW99TiZNhiVAVYVsoIZWDr7805x36zNFd0ShNDFtfhEjL4x0N8ztWiXezA5X2JDPKknme+Zt7eIYwKkD1kgXXg2iVCovAMkzlFlXwpw31K3GcgLD389jvPngNbRk2BJlr0nMDUJFcnJe7sUSoN+6Cj2cxm01NfexaOeBx09AwNaXDdqwvKwmB50hP+U4MHEqss7Mq1XumOPHigotNKm6FCCJtXyfRfnEehBN2FMuVLcFAmBnhJk2T7Iu58N3GFisuEU44nYKOrxGAyoe+FzuMIpiI/PZ/iY4s/pKGGh7HUGZxE9eXBk940gkpWVO9LchRzYbA3kV3pDUJvsTsNmfMdRnqebdcbWEom/Jgsgy/B3y7CDv6CC1EFk4cCywjIDddQfc+5
X-Microsoft-Antispam-PRVS: <VI1PR0802MB2542A619F4DC2716634F2A04F77F0@VI1PR0802MB2542.eurprd08.prod.outlook.com>
X-Forefront-PRVS: 09565527D6
X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0802MB2542;
 23:aRjvB+Ks7/yKlDuzjzOWkRRcKKN4ENK4puIUvLB?=
 =?us-ascii?Q?jx/a7F/6hiH0tYN3pVW44g1GvZNk8gX1W0VVYWsLgjGo9d5XQl/oYbxluN0I?=
 =?us-ascii?Q?gNal10Aqf7xn6BSKKDWzkFUBFDqd73joMM3X4lbkUw6P5CeVO9fmTFBfuLjS?=
 =?us-ascii?Q?a/E7zYyZrFePOMai8UgzXCmolF2hKVbGYanHSzJTMdfw7tmlLcNZB1PM4sug?=
 =?us-ascii?Q?3gI9KfCwXU+2bpvhdCQ5okxM4/UoxgXQrjneRUZTwuvbq5iTxxb2FSbDtiHf?=
 =?us-ascii?Q?Zc2jgfDOdWV1pZyFtSDMIOnfl2J6fzn3rVGUofEXZ559VBH8czcc09XezoI6?=
 =?us-ascii?Q?NlRhBAVi+cvjkCvOt3c5uRiG624Jy0HYweZPXkE7i8yZe82Crw9k/DvWjHR6?=
 =?us-ascii?Q?MozxdnbyHLKc9pnlpi2lpbgvQJQnLTweRv+iUc/t7CVFxrW0QTMC+2lZhy38?=
 =?us-ascii?Q?kZ+p+NV59EEnHiBRQDj3MPtV2rN+7l6isCjOHAEemIFYvS93NhdrnkeMqZfc?=
 =?us-ascii?Q?FAD5QEQNZsK8jAP002kOeGxCv+natvRLr4p8G+NVXpqiBSzKbEt7lrUw6fot?=
 =?us-ascii?Q?2xdbs3f1gRrdGvCFSq+/MeeALKgj81xZKLJpLqhtugpXFHg/VlfHza+yRI6k?=
 =?us-ascii?Q?vXqf5CpDfgYf8FxNn0terFlHhtzMHh6rwlYiTV5BS28KuAYciTxnaDMbzXIX?=
 =?us-ascii?Q?LAo6/3MXOQojAsBdxEjMAeKi0X6ukqPuvuT+45rnXs7zEO6Hd67pJe2D6SRe?=
 =?us-ascii?Q?wxXw83zCHlrTSfsS8l5OYQMgdiwddadlCl1r/qkQmnhRJrfSRfpnnOxJ9q2X?=
 =?us-ascii?Q?4cnLuREqE3p6J2hhPZD03xAX85bLHTes9ioEpYh+GN3ZCoajZM8ukwIV2rjD?=
 =?us-ascii?Q?OgRHP7WeySfDnmfQtjHI15uyDfQ7T/czJD4XPcA/dd7BT4CO5OoxixdZjHKd?=
 =?us-ascii?Q?01GXiaaIp7/mekVoMA9NlP1bJ39UWCVMmct8vx8rJGFsGh9nwvPEKr7BR8Ns?=
 =?us-ascii?Q?HZcVKirP6MgCjftxB3g6C16wUsSOc8cOhnQBudM9G4evLng66UGAQZ27tYqT?=
 =?us-ascii?Q?Yiu6mLEItWB1k2XHSGCW2CIVexigfY6+uwYHqfuMmcAhbMCT2Etz62zzk/Ei?=
 =?us-ascii?Q?lJOGChB7RgmooPHGQyAhxob5ZLOoEzoUiUYW3mAycJn4urd+0TZfIH1jXffp?=
 =?us-ascii?Q?Qe3UAxrYkhRDmMNo=3D?=
X-MS-Exchange-SenderADCheck: 1
X-Microsoft-Antispam-Message-Info: fEKJdc4ENfyogar6UPjvF/8jWKej+mGbWIy5F8wpq2D3V+bxxQI6ItQJOXjhqZegJ/E76Ic/yWaHdXG7Q6Qe9E8a6WKtUwEULqQZiQz9MrNlWb3xlf4L4R/Kbx7isoJyPOJrMD2iZOmsvfm9NJZVKmqJoywyP2otLN9fgKZXw0qlXWI2kUtVvon8SWJav6lmv3yQf4vLLQoGmB6NHTh94iqxwuVIgOg6TIHNfQYJdI6VdvS6tX4UY/8LqdvU8fsCqglDkdQy1ue2Lsh7zWpcZITEe/xN6sjSfMDYIL2ipU7aCfLtVxXh4q+DK3qi1Uzvrf027i9mBe4blJnJWdb+uwAe3W6pI+EARo+CrzidqSOz7WOilQYYhVV7pGg+miPrWlYsnY7iqchKuwJ12zEfj0qMi7Yj/aFxK+rfUlACWg4=
X-Microsoft-Exchange-Diagnostics: 1; VI1PR0802MB2542;
 20:Rwq2Di2nQbBBgtGtx0AnsSHv5L4XYd4ewlHqjozYbq8OX3rF5DmEaRkr0UlXpdLaTu0/0J1pBt0bjn+PBoaA0LEFb/1bkjfJuogYGKhG8uaChzj4UtjrOsE7SXZhewwVxzc+jcMdm3TEjKleLw16Kvd9nxXWoIA3ZCEpe6yqhI0=
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Feb 2019 06:23:47.0170 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 2f7e5614-f21e-43a9-0acd-08d6988e4d5e
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[40.67.248.234];
 Helo=[nebula.arm.com]
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0802MB2542
Subject: [Minios-devel] [UNIKRAFT PATCHv6 21/23] plat/kvm: arm64: Remove
 needless semicolons in assembly
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>, Jia He <justin.he@arm.com>,
 Wei Chen <wei.chen@arm.com>, Kaly Xin <Kaly.Xin@arm.com>,
 Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

RnJvbTogV2VpIENoZW4gPHdlaS5jaGVuQGFybS5jb20+ClNvbWUgc2VtaWNvbG9ucyBhcmUgbmVl
ZGxlc3MgaW4gYXNzZW1ibHkgc291cmNlIGNvZGUuIFNvIHdlIHJlbW92ZQp0aGVtIGZyb20gY29k
ZS4KClNpZ25lZC1vZmYtYnk6IFdlaSBDaGVuIDx3ZWkuY2hlbkBhcm0uY29tPgpTaWduZWQtb2Zm
LWJ5OiBKaWEgSGUgPGp1c3Rpbi5oZUBhcm0uY29tPgpSZXZpZXdlZC1ieTogU2hhcmFuIFNhbnRo
YW5hbSA8c2hhcmFuLnNhbnRoYW5hbUBuZWNsYWIuZXU+Ci0tLQogcGxhdC9rdm0vYXJtL3BhZ2V0
YWJsZTY0LlMgfCAyMCArKysrKysrKysrLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDEwIGlu
c2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3BsYXQva3ZtL2FybS9w
YWdldGFibGU2NC5TIGIvcGxhdC9rdm0vYXJtL3BhZ2V0YWJsZTY0LlMKaW5kZXggOGQ5ZTkyMy4u
Nzg5OWMxOSAxMDA2NDQKLS0tIGEvcGxhdC9rdm0vYXJtL3BhZ2V0YWJsZTY0LlMKKysrIGIvcGxh
dC9rdm0vYXJtL3BhZ2V0YWJsZTY0LlMKQEAgLTc3LDE0ICs3NywxNCBAQCBFTlRSWShjcmVhdGVf
cGFnZXRhYmxlcykKICAgICAgICAgKi8KICAgICAgICBtb3YgeDYsIHgxNAogICAgICAgIG1vdiB4
OCwgIzAKLSAgICAgICBhZGQgeDksIHgxNCwgI0wxX1RBQkxFX09GRlNFVDsKKyAgICAgICBhZGQg
eDksIHgxNCwgI0wxX1RBQkxFX09GRlNFVAogICAgICAgIG1vdiB4MTAsICMyCiAgICAgICAgYmwg
IGxpbmtfbDBfcGFnZXRhYmxlCgogICAgICAgIC8qCiAgICAgICAgICogVXNpbmcgMUdpQiBibG9j
ayB0byBtYXAgZGV2aWNlIGFkZHJlc3Mgc3BhY2UgKDB4MCB+IDB4M2ZmZmZmZmYpCiAgICAgICAg
ICovCi0gICAgICAgYWRkIHg2LCB4MTQsICNMMV9UQUJMRV9PRkZTRVQ7CisgICAgICAgYWRkIHg2
LCB4MTQsICNMMV9UQUJMRV9PRkZTRVQKICAgICAgICBsZHIgeDcsID1TRUNUX0FUVFJfREVWSUNF
X25HblJFCiAgICAgICAgbW92IHg4LCAjREVWSUNFX0FERFJfU1RBUlQKICAgICAgICBtb3YgeDks
IHg4CkBAIC05Niw3ICs5Niw3IEBAIEVOVFJZKGNyZWF0ZV9wYWdldGFibGVzKQogICAgICAgICAq
ICgweDQwMDAwMDAwIH4gKDI1NkdpQiAtMSkpLiBUaGUgUkFNIGFyZWFzIHRoYXQgY29udGFpbiBr
ZXJuZWwKICAgICAgICAgKiBzZWN0aW9ucyB3aWxsIGJlIHVwZGF0ZSBsYXRlci4KICAgICAgICAg
Ki8KLSAgICAgICBhZGQgeDYsIHgxNCwgI0wxX1RBQkxFX09GRlNFVDsKKyAgICAgICBhZGQgeDYs
IHgxNCwgI0wxX1RBQkxFX09GRlNFVAogICAgICAgIGxkciB4NywgPVNFQ1RfQVRUUl9OT1JNQUwK
ICAgICAgICBtb3YgeDgsICNSQU1fQUREUl9TVEFSVAogICAgICAgIG1vdiB4OSwgeDgKQEAgLTEw
Nyw3ICsxMDcsNyBAQCBFTlRSWShjcmVhdGVfcGFnZXRhYmxlcykKICAgICAgICAgKiBVc2luZyAx
R2lCIGJsb2NrIHRvIG1hcCBoaWdoIFBDSWUgYWRkcmVzcyBzcGFjZQogICAgICAgICAqICgweDUx
MkdpQiB+ICgxVGlCIC0xKSkuCiAgICAgICAgICovCi0gICAgICAgYWRkIHg2LCB4MTQsICNMMV9U
QUJMRV9PRkZTRVQ7CisgICAgICAgYWRkIHg2LCB4MTQsICNMMV9UQUJMRV9PRkZTRVQKICAgICAg
ICBhZGQgeDYsIHg2LCAjX19QQUdFX1NJWkUKICAgICAgICBsZHIgeDcsID1TRUNUX0FUVFJfREVW
SUNFX25HblJFCiAgICAgICAgbW92IHg4LCAjUENJRV9BRERSX1NUQVJUCkBAIC0xMjIsNyArMTIy
LDcgQEAgRU5UUlkoY3JlYXRlX3BhZ2V0YWJsZXMpCiAgICAgICAgICogTDEgLT4gTDIgLT4gTDMg
KDRLKQogICAgICAgICAqLwogICAgICAgIC8qIDFzdDogQnVpbGQgYSBMMiBibG9jayBwYWdldGFi
bGUgKi8KLSAgICAgICBhZGQgeDYsIHgxNCwgI0wyX1RBQkxFX09GRlNFVDsKKyAgICAgICBhZGQg
eDYsIHgxNCwgI0wyX1RBQkxFX09GRlNFVAogICAgICAgIGxkciB4NywgPVNFQ1RfQVRUUl9OT1JN
QUwKICAgICAgICBtb3YgeDgsICNSQU1fQUREUl9TVEFSVAogICAgICAgIG1vdiB4OSwgeDgKQEAg
LTEzMCw5ICsxMzAsOSBAQCBFTlRSWShjcmVhdGVfcGFnZXRhYmxlcykKICAgICAgICBibCAgYnVp
bGRfbDJfYmxvY2tfcGFnZXRhYmxlCgogICAgICAgIC8qIDJuZDogTGluayB0aGlzIEwyIGJsb2Nr
IHBhZ2V0YWJsZSB0byBMMSBlbnRyeSAqLwotICAgICAgIGFkZCB4NiwgeDE0LCAjTDFfVEFCTEVf
T0ZGU0VUOworICAgICAgIGFkZCB4NiwgeDE0LCAjTDFfVEFCTEVfT0ZGU0VUCiAgICAgICAgbW92
IHg4LCAjUkFNX0FERFJfU1RBUlQKLSAgICAgICBhZGQgeDksIHgxNCwgI0wyX1RBQkxFX09GRlNF
VDsKKyAgICAgICBhZGQgeDksIHgxNCwgI0wyX1RBQkxFX09GRlNFVAogICAgICAgIGJsICBsaW5r
X2wxX3BhZ2V0YWJsZQoKICAgICAgICAvKiAzcmQ6IEJ1aWxkIGEgTDMgcGFnZXRhYmxlIGZvciBp
bWFnZSBvY2N1cGllZCBtZW1vcnkgKi8KQEAgLTE2Myw3ICsxNjMsNyBAQCBFTlRSWShjcmVhdGVf
cGFnZXRhYmxlcykKICAgICAgICBsZHIgeDgsID1fZHRiCiAgICAgICAgbGRyIHg5LCA9X3RleHQK
ICAgICAgICBzdWIgeDEwLCB4OSwgeDgKLSAgICAgICBhZGQgeDYsIHgxNCwgI0wzX1RBQkxFX09G
RlNFVDsKKyAgICAgICBhZGQgeDYsIHgxNCwgI0wzX1RBQkxFX09GRlNFVAogICAgICAgIGxkciB4
NywgPVNFQ1RfQVRUUl9OT1JNQUxfUk8KICAgICAgICBtb3YgeDksIHg4CiAgICAgICAgbHNyIHgx
MCwgeDEwLCBMM19TSElGVApAQCAtMTczLDcgKzE3Myw3IEBAIEVOVFJZKGNyZWF0ZV9wYWdldGFi
bGVzKQogICAgICAgIGxkciB4OCwgPV90ZXh0CiAgICAgICAgbGRyIHg5LCA9X2V0ZXh0CiAgICAg
ICAgc3ViIHgxMCwgeDksIHg4Ci0gICAgICAgYWRkIHg2LCB4MTQsICNMM19UQUJMRV9PRkZTRVQ7
CisgICAgICAgYWRkIHg2LCB4MTQsICNMM19UQUJMRV9PRkZTRVQKICAgICAgICBsZHIgeDcsID1T
RUNUX0FUVFJfTk9STUFMX0VYRUMKICAgICAgICBtb3YgeDksIHg4CiAgICAgICAgbHNyIHgxMCwg
eDEwLCBMM19TSElGVApAQCAtMTgzLDcgKzE4Myw3IEBAIEVOVFJZKGNyZWF0ZV9wYWdldGFibGVz
KQogICAgICAgIGxkciB4OCwgPV9yb2RhdGEKICAgICAgICBsZHIgeDksID1fZWN0b3JzCiAgICAg
ICAgc3ViIHgxMCwgeDksIHg4Ci0gICAgICAgYWRkIHg2LCB4MTQsICNMM19UQUJMRV9PRkZTRVQ7
CisgICAgICAgYWRkIHg2LCB4MTQsICNMM19UQUJMRV9PRkZTRVQKICAgICAgICBsZHIgeDcsID1T
RUNUX0FUVFJfTk9STUFMX1JPCiAgICAgICAgbW92IHg5LCB4OAogICAgICAgIGxzciB4MTAsIHgx
MCwgTDNfU0hJRlQKLS0KMi4xNy4xCgpJTVBPUlRBTlQgTk9USUNFOiBUaGUgY29udGVudHMgb2Yg
dGhpcyBlbWFpbCBhbmQgYW55IGF0dGFjaG1lbnRzIGFyZSBjb25maWRlbnRpYWwgYW5kIG1heSBh
bHNvIGJlIHByaXZpbGVnZWQuIElmIHlvdSBhcmUgbm90IHRoZSBpbnRlbmRlZCByZWNpcGllbnQs
IHBsZWFzZSBub3RpZnkgdGhlIHNlbmRlciBpbW1lZGlhdGVseSBhbmQgZG8gbm90IGRpc2Nsb3Nl
IHRoZSBjb250ZW50cyB0byBhbnkgb3RoZXIgcGVyc29uLCB1c2UgaXQgZm9yIGFueSBwdXJwb3Nl
LCBvciBzdG9yZSBvciBjb3B5IHRoZSBpbmZvcm1hdGlvbiBpbiBhbnkgbWVkaXVtLiBUaGFuayB5
b3UuCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5p
b3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpo
dHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Fri Feb 22 06:23:54 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 22 Feb 2019 06:23:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gx4FW-0001mP-4r; Fri, 22 Feb 2019 06:23:54 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=WrH0=Q5=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1gx4FU-0001lW-1R
 for minios-devel@lists.xenproject.org; Fri, 22 Feb 2019 06:23:52 +0000
X-Inumbo-ID: 6badb07c-366a-11e9-bc90-bc764e045a96
Received: from EUR03-VE1-obe.outbound.protection.outlook.com (unknown
 [40.107.5.84]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 6badb07c-366a-11e9-bc90-bc764e045a96;
 Fri, 22 Feb 2019 06:23:51 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; 
 s=selector1-arm-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=SUk43o1xfGsrSq9pKszzWV6At50BMaTJBeRP1ocGmGI=;
 b=LDhuIK1IMXrslz12YFC8WGpAhUP6c9ERB80xjBvuth/jwoil+rncYIKaci1DA4FBgKAs4lBPxEz+kjW0AMEs3XwBvhYliJ0JgT74n9TJU4euL3aSBXUE35VnnYn8+hJ0MxZIOGIyGOyYDGLVZvHaf59UHlG05Av9s+/p5gaTGUk=
Received: from VI1PR0801CA0080.eurprd08.prod.outlook.com
 (2603:10a6:800:7d::24) by VI1PR0802MB2542.eurprd08.prod.outlook.com
 (2603:10a6:800:b0::16) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1643.14; Fri, 22 Feb
 2019 06:23:50 +0000
Received: from DB5EUR03FT063.eop-EUR03.prod.protection.outlook.com
 (2a01:111:f400:7e0a::204) by VI1PR0801CA0080.outlook.office365.com
 (2603:10a6:800:7d::24) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.1643.15 via Frontend
 Transport; Fri, 22 Feb 2019 06:23:49 +0000
Authentication-Results: spf=pass (sender IP is 40.67.248.234)
 smtp.mailfrom=arm.com; lists.xenproject.org; dkim=none (message not signed)
 header.d=none;lists.xenproject.org; dmarc=bestguesspass action=none
 header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 40.67.248.234 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.67.248.234; helo=nebula.arm.com;
Received: from nebula.arm.com (40.67.248.234) by
 DB5EUR03FT063.mail.protection.outlook.com (10.152.20.209) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id
 15.20.1643.11 via Frontend Transport; Fri, 22 Feb 2019 06:23:49 +0000
Received: from AZ-NEU-EX03.Arm.com (10.251.24.31) by AZ-NEU-EX03.Arm.com
 (10.251.24.31) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1415.2; Fri, 22 Feb
 2019 06:23:28 +0000
Received: from localhost.localdomain (10.169.40.37) by mail.arm.com
 (10.251.24.31) with Microsoft SMTP Server id 15.1.1415.2 via Frontend
 Transport; Fri, 22 Feb 2019 06:23:26 +0000
From: Jia He <justin.he@arm.com>
To: <minios-devel@lists.xenproject.org>, Simon Kuenzer
 <simon.kuenzer@neclab.eu>, <Sharan.Santhanam@neclab.eu>
Date: Fri, 22 Feb 2019 14:22:00 +0800
Message-ID: <20190222062200.26602-24-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190222062200.26602-1-justin.he@arm.com>
References: <20190222062200.26602-1-justin.he@arm.com>
MIME-Version: 1.0
X-EOPAttributedMessage: 0
X-MS-Office365-Filtering-HT: Tenant
X-Forefront-Antispam-Report: CIP:40.67.248.234; IPV:NLI; CTRY:US; EFV:NLI;
 SFV:NSPM;
 SFS:(10009020)(376002)(346002)(39860400002)(396003)(136003)(2980300002)(199004)(189003)(40434004)(1076003)(6666004)(49486002)(8936002)(8746002)(97736004)(5660300002)(356004)(305945005)(51416003)(50466002)(81166006)(11346002)(81156014)(48376002)(426003)(26005)(336012)(77096007)(2616005)(76176011)(14444005)(5024004)(476003)(106002)(86362001)(8676002)(486006)(36756003)(446003)(126002)(186003)(54906003)(106466001)(53936002)(110136005)(316002)(478600001)(50226002)(68736007)(2906002)(47776003)(4326008)(72206003);
 DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR0802MB2542; H:nebula.arm.com; FPR:;
 SPF:Pass; LANG:en; PTR:InfoDomainNonexistent; A:1; MX:1; 
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id: dd92abaa-0fca-4e39-4f14-08d6988e4f02
X-Microsoft-Antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600110)(711020)(4605104)(4608103)(4709054)(2017052603328)(7153060);
 SRVR:VI1PR0802MB2542; 
X-MS-TrafficTypeDiagnostic: VI1PR0802MB2542:
X-Microsoft-Exchange-Diagnostics: 1; VI1PR0802MB2542;
 20:MpJoNGspwq0fPGD0f6Bad9Gx9NnZz1B2saenY83ebNNThVpD2g6fkmra0OpmjN09VZDxL0RbeSLTcgRqZ39YYSAgj3K9jDCxCoQ5Fbox9jRPwF/aldk/HrOAWiluALQ4k5EMNaHiiPLDc4qHhSLyDp+DweGOB52cge75b2Gdy01tMaMM+KoQoHGNI/Sdqs6a4VU3LzvLr22SpZB+3P+fntK5kNZaMpBwL8E1Y50xxalUjiXOmJF/GJp7RMFU79sbOX7WyI3DqpFSty/UTmagSx24R/sbSgcEnPaWaiGxzZXESNjiIxmTBAYfZoz06CkfI9eAVGaOfyxbWAaA3zEMF4jrURLpmxNPki6fyvqSvblazM2pyUUVDRZiAVGxg1Zlc4tM0oly3BwCH3wdAltrOLf5/W47n2/eUgcDoZjUUO+I5aatvZBFGlekpuQRgKhhLPhVLeOEB8UBjZ2V5ccfme1o1zm6Q9gCELXkQAY89NqlINGV5I17KB+Ch1+RoP51
X-Microsoft-Antispam-PRVS: <VI1PR0802MB2542F57ECF6C129EDF850BFCF77F0@VI1PR0802MB2542.eurprd08.prod.outlook.com>
X-Forefront-PRVS: 09565527D6
X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0802MB2542;
 23:HRhF5PYMIYH//VaPBTdIALXX8vogXK7jFY4OYEK?=
 =?us-ascii?Q?xPKvSmkgg9uPKyK2KgCsCMfPYdSXg1qIfKtpxHwjHrCJ/fCl1KDsRKo/czzC?=
 =?us-ascii?Q?6XG3apB0GMan0T//LCYSplgvi4iZK1lAiyhunWcN0J3l5NAKV4x2EHAAUPc6?=
 =?us-ascii?Q?Mv2sw6BUvY00qWDoQ/pxx/qtMgLi5AXJtW1/fHo2+ywoXDC4b5uubcbAii28?=
 =?us-ascii?Q?K1B+R/FoNouw5KzIOLkJWNn6Z1bHXTwmoTfQYHqvqLr8ZP//IXP4f440z6Qv?=
 =?us-ascii?Q?h3img2pgOqpcOJwnkAcOYJMyP6BakWvughb6/csJpP/qYVyGyTh7id6hAbC5?=
 =?us-ascii?Q?0dTvxgh28PfSh5Qc6t7Mrtk9b3jjc4HlvVDjlIRm3GgI0g+E9uvi8UyBf3oa?=
 =?us-ascii?Q?duLyanTdys+4vK7tMp9ynVEZs0J/vHWIFu9mPO3khsY6tKwJ80oH5jTDmhLQ?=
 =?us-ascii?Q?zlJRZHf56oWEoCSdIR5vXBFqcZGg44Ya8IwKHvbHqZpn0FOpq/Bz4JWMCtcx?=
 =?us-ascii?Q?/Kaa/G/sPxBfZTp+DsSGPhj5BKtuKxN+FGApDFeqE7C2J4nC0TAtVMeVxwLU?=
 =?us-ascii?Q?q69UGhhvW0lmshBzstj9cOiof4+H42QXiRft9z9CdTj+d8DlJpqaaWLDuu8n?=
 =?us-ascii?Q?4G454b4iEEydk1CPv+mabhin98RSSTe9IQot1eIZrLubKnaic6ABA0prkxIY?=
 =?us-ascii?Q?eAC9c1xEVpwdH5sE5HTXfT/b7sTXoB1rMyTioQIKNIdn55Mm5z7fqjj1sB9S?=
 =?us-ascii?Q?9JGzVeKoGHAtrBPXgGgvkqeRAIpnUTsMlB4KaiHgx2SRBehFAtpaJyBKPzmh?=
 =?us-ascii?Q?CXNc7ItXw0fHIgqqb2dr0Q1KTje4//72e16EJLK7AQPEubLzYpWyO1pwrRIG?=
 =?us-ascii?Q?hKSkbB3YCZXuFfHkk53cpsehuS2UeZPa6DiKz9on7vQk4u0KoZVhlJAilZW1?=
 =?us-ascii?Q?JR5fLSVeqZU1Qbt4pB9tnCxUbsTSPu7mOd2920/aANo1hSjnY19noU2fqe36?=
 =?us-ascii?Q?cZxkw3/gIijdMIXk9KFbN66Arlvv7y5iQWnKeK1a+Ag5vCpg8bUFLaXL2Q73?=
 =?us-ascii?Q?l3tf950fcmApv32B0W2FS8M5HDSFfi9YYzdTilmz3LWScREv4osoq3BBreIB?=
 =?us-ascii?Q?052971wSKEfUpKH2iQ5Njjv/+gvtFFTsUAzaMPsMM0TRfyE3ImRlvyuyQSqZ?=
 =?us-ascii?Q?iOweNBlDRNYzCFzQ=3D?=
X-MS-Exchange-SenderADCheck: 1
X-Microsoft-Antispam-Message-Info: pKI0LmyvULx7imd0XM8sLJZCf0gEhXAj+odDF2CAAElDvpNdN6VNoY4UO1kAKAo4ZDjv4cNSwvX3tMNLjaxJoTURSQlrrzq2+rOUaxtxWT0s3xtdLeQGdyCKiE7NjvdFeNJkQ1EoFxhKnZN/4SN6aWOS4vqe+Y/PkVuhb+uxD6s9TEJVzM6yx12lmf7zx1B9F3ccxk+4rqVlinUXFy+oWzwSVDy2mu5/5a1fPuh7OkXUBTneOvM2goAP/S3CqFJGtN1wvxMovEEvXsKJ5w8FVKtG/iYOvN7MaTvA40UjeHZVsJ15RT4rTNvm+2dVWe7saO4H5izRJKSsTqo5WSHQA3wY7OvIPm4+IoaojZpNcKVxqshwh3xaKZq+RiRGIN3/cGUVWc756ikFAvvPufiqyTRIJtZhTBlqmjQAOErnGts=
X-Microsoft-Exchange-Diagnostics: 1; VI1PR0802MB2542;
 20:iVGLJitsOcAnPvaSwN55pXA16Q63+Gbc6uapKcI8igs/zkJ28WaElZMiv+xXOx9GQhWwoPxemhhuavkB8SNuTLbX9yPRTZg34B/ctRfu6TsfDE5MNrAtIgDjn8rC+Jnlf2kZTkQ9B8cnMiBtdvPpJ83ZUa9u4sN18e7QLlGHS60=
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Feb 2019 06:23:49.7709 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: dd92abaa-0fca-4e39-4f14-08d6988e4f02
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[40.67.248.234];
 Helo=[nebula.arm.com]
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0802MB2542
Subject: [Minios-devel] [UNIKRAFT PATCHv6 23/23] plat/kvm: arm64: Remove
 superfluous blank line
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>, Jia He <justin.he@arm.com>,
 Wei Chen <wei.chen@arm.com>, Kaly Xin <Kaly.Xin@arm.com>,
 Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

RnJvbTogV2VpIENoZW4gPHdlaS5jaGVuQGFybS5jb20+ClRoZXJlIGlzIHN1cGVyZmx1b3VzIGJs
YW5rIGxpbmUgYmVmb3JlIF9kdGJfZ2V0X2NtZGxpbmUsCndlIHJlbW92ZSBpdCBpbiBwYXNzaW5n
LgoKU2lnbmVkLW9mZi1ieTogV2VpIENoZW4gPHdlaS5jaGVuQGFybS5jb20+ClNpZ25lZC1vZmYt
Ynk6IEppYSBIZSA8anVzdGluLmhlQGFybS5jb20+ClJldmlld2VkLWJ5OiBTaGFyYW4gU2FudGhh
bmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xhYi5ldT4KLS0tCiBwbGF0L2t2bS9hcm0vc2V0dXAu
YyB8IDEgLQogMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9wbGF0
L2t2bS9hcm0vc2V0dXAuYyBiL3BsYXQva3ZtL2FybS9zZXR1cC5jCmluZGV4IDkyYTBkNjcuLjRi
NjA1ZDQgMTAwNjQ0Ci0tLSBhL3BsYXQva3ZtL2FybS9zZXR1cC5jCisrKyBiL3BsYXQva3ZtL2Fy
bS9zZXR1cC5jCkBAIC0xOTIsNyArMTkyLDYgQEAgdm9pZCBfbGlia3ZtcGxhdF9zdGFydCh2b2lk
ICpkdGJfcG9pbnRlcikKICAgICAgICB1a19wcl9pbmZvKCJFbnRlcmluZyBmcm9tIEtWTSAoYXJt
NjQpLi4uXG4iKTsKCiAgICAgICAgLyogR2V0IGNvbW1hbmQgbGluZSBmcm9tIERUQiAqLwotCiAg
ICAgICAgX2R0Yl9nZXRfY21kbGluZShjbWRsaW5lLCBzaXplb2YoY21kbGluZSkpOwoKICAgICAg
ICAvKiBHZXQgUFNDSSBtZXRob2QgZnJvbSBEVEIgKi8KLS0KMi4xNy4xCgpJTVBPUlRBTlQgTk9U
SUNFOiBUaGUgY29udGVudHMgb2YgdGhpcyBlbWFpbCBhbmQgYW55IGF0dGFjaG1lbnRzIGFyZSBj
b25maWRlbnRpYWwgYW5kIG1heSBhbHNvIGJlIHByaXZpbGVnZWQuIElmIHlvdSBhcmUgbm90IHRo
ZSBpbnRlbmRlZCByZWNpcGllbnQsIHBsZWFzZSBub3RpZnkgdGhlIHNlbmRlciBpbW1lZGlhdGVs
eSBhbmQgZG8gbm90IGRpc2Nsb3NlIHRoZSBjb250ZW50cyB0byBhbnkgb3RoZXIgcGVyc29uLCB1
c2UgaXQgZm9yIGFueSBwdXJwb3NlLCBvciBzdG9yZSBvciBjb3B5IHRoZSBpbmZvcm1hdGlvbiBp
biBhbnkgbWVkaXVtLiBUaGFuayB5b3UuCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBs
aXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4v
bGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Fri Feb 22 06:24:03 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 22 Feb 2019 06:24:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gx4Ff-0001pO-81; Fri, 22 Feb 2019 06:24:03 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=WrH0=Q5=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1gx4Fe-0001pI-Mu
 for minios-devel@lists.xenproject.org; Fri, 22 Feb 2019 06:24:02 +0000
X-Inumbo-ID: 7123ff5d-366a-11e9-bc90-bc764e045a96
Received: from EUR02-VE1-obe.outbound.protection.outlook.com (unknown
 [40.107.2.70]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 7123ff5d-366a-11e9-bc90-bc764e045a96;
 Fri, 22 Feb 2019 06:24:01 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; 
 s=selector1-arm-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=8gglnAHQY5Mg7b/WDGkN5nRJ8jRZVimpAuRPh5vfKws=;
 b=Rbo8JpSne5gd0AWXYBRzwvt7joYAs2Qs1Gh7X8X6FDnkVxYme9Mw5pG3rQ8xvMue6PSJ8KvS4mvNFc8V/4bzkWmavccldzoO4kY0MlI6IrMw9b3d2lSoD02PAi38hnA7BQlIhxZVQbpsUfRWZynSZw+82qLQOQDTQvjeCHULZf0=
Received: from VI1PR0801CA0080.eurprd08.prod.outlook.com
 (2603:10a6:800:7d::24) by AM5PR0802MB2532.eurprd08.prod.outlook.com
 (2603:10a6:203:a0::20) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1643.14; Fri, 22 Feb
 2019 06:23:45 +0000
Received: from DB5EUR03FT063.eop-EUR03.prod.protection.outlook.com
 (2a01:111:f400:7e0a::204) by VI1PR0801CA0080.outlook.office365.com
 (2603:10a6:800:7d::24) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.1643.15 via Frontend
 Transport; Fri, 22 Feb 2019 06:23:45 +0000
Authentication-Results: spf=pass (sender IP is 40.67.248.234)
 smtp.mailfrom=arm.com; lists.xenproject.org; dkim=none (message not signed)
 header.d=none;lists.xenproject.org; dmarc=bestguesspass action=none
 header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 40.67.248.234 as permitted sender) receiver=protection.outlook.com;
 client-ip=40.67.248.234; helo=nebula.arm.com;
Received: from nebula.arm.com (40.67.248.234) by
 DB5EUR03FT063.mail.protection.outlook.com (10.152.20.209) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id
 15.20.1643.11 via Frontend Transport; Fri, 22 Feb 2019 06:23:45 +0000
Received: from AZ-NEU-EX03.Arm.com (10.251.24.31) by AZ-NEU-EX03.Arm.com
 (10.251.24.31) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1415.2; Fri, 22 Feb
 2019 06:23:18 +0000
Received: from localhost.localdomain (10.169.40.37) by mail.arm.com
 (10.251.24.31) with Microsoft SMTP Server id 15.1.1415.2 via Frontend
 Transport; Fri, 22 Feb 2019 06:23:15 +0000
From: Jia He <justin.he@arm.com>
To: <minios-devel@lists.xenproject.org>, Simon Kuenzer
 <simon.kuenzer@neclab.eu>, <Sharan.Santhanam@neclab.eu>
Date: Fri, 22 Feb 2019 14:21:57 +0800
Message-ID: <20190222062200.26602-21-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190222062200.26602-1-justin.he@arm.com>
References: <20190222062200.26602-1-justin.he@arm.com>
MIME-Version: 1.0
X-EOPAttributedMessage: 0
X-MS-Office365-Filtering-HT: Tenant
X-Forefront-Antispam-Report: CIP:40.67.248.234; IPV:NLI; CTRY:US; EFV:NLI;
 SFV:NSPM;
 SFS:(10009020)(346002)(396003)(136003)(39860400002)(376002)(2980300002)(199004)(189003)(40434004)(186003)(2906002)(50466002)(97736004)(76176011)(48376002)(26005)(478600001)(486006)(77096007)(6666004)(356004)(426003)(2616005)(305945005)(126002)(72206003)(106466001)(336012)(86362001)(446003)(68736007)(11346002)(476003)(51416003)(106002)(4326008)(53936002)(47776003)(81166006)(54906003)(316002)(81156014)(5660300002)(8746002)(50226002)(49486002)(8676002)(1076003)(110136005)(36756003)(8936002)(14444005)(5024004);
 DIR:OUT; SFP:1101; SCL:1; SRVR:AM5PR0802MB2532; H:nebula.arm.com; FPR:;
 SPF:Pass; LANG:en; PTR:InfoDomainNonexistent; A:1; MX:1; 
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id: 182476ce-ae51-44e0-9631-08d6988e4c85
X-Microsoft-Antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600110)(711020)(4605104)(4608103)(4709054)(2017052603328)(7153060);
 SRVR:AM5PR0802MB2532; 
X-MS-TrafficTypeDiagnostic: AM5PR0802MB2532:
X-Microsoft-Exchange-Diagnostics: 1; AM5PR0802MB2532;
 20:lNrbT2z0ksG4oHXdwuj45meqFWZtoB4dN0PQJIsbp9ue/Zn4YYeNNT0tJU2i88JK+EaU5LVlSWsjoGZpsPXzTQdC02ojamPZOBRUjZyzalDI4Dx+9c0ieWBl+gvVsv2avxVDgH9M5MLr/JK1Yyrs9NLWebZk/ZbHCa4sXFYCsZL5oozWFPQefeIUMLSRpZ5XDaBC1fKOXdDZhGEotKqL4K6gSr/a02+t1O4FLU0Xw2NkMZeZUBBBmm5cWqPLUuYhn7X8mFvPs78KdRCHKSs05o6vHkRrihp3thxL9ndFns97tuXevV94jpLC0Dkh6wHxeOiwKk9qSKu0r9rLvJH6e7eaVmK6Z3EOP4wy7Wmc0Qnjx1/rE1Lw5h+oGnSmBvy16iof1JdJ9BmB8fWgVKVn+GVFOnhMt9eWUNBJYxvvOWY1mYBvAYU3Fywna1+8Hx0azToHpqsf4tYUDdBXtnyXOM3KygRIzQvzUZ8fWHxY++k0fACY/tuP/ag40PKJDyVB
X-Microsoft-Antispam-PRVS: <AM5PR0802MB253251FFE8C0C4FF96152A71F77F0@AM5PR0802MB2532.eurprd08.prod.outlook.com>
X-Forefront-PRVS: 09565527D6
X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; AM5PR0802MB2532;
 23:GoECwf2PkuCG5McSH1tDnzcPravO8uCaopie374?=
 =?us-ascii?Q?ImJZfak1PWpFZPMxernHQwgCRdGd2mNliKcASeVF7fPBBQPdEF1veWlUPPeY?=
 =?us-ascii?Q?7ytD8mK6RKPl0+IZm0pGETYGBGmwdGMwHassCtQVCcMPS0umqyzEnM79BaMu?=
 =?us-ascii?Q?siSI9vYfnH2SoxkThw9pJZyJC3RBGYTnrPKmWej2Ms5IsZfd+pE4PBtwPmOh?=
 =?us-ascii?Q?TNZ3QGZllj0hGv2rrwkf9ebkxDoapjQsVY6A5IWziqsrRWpsnfMLuFACcsng?=
 =?us-ascii?Q?iGQpqNxArPJ66aLcIx2NvhUcPn8QB6d83wo6HrZOltUu4DvMMPsIfmEmvWfN?=
 =?us-ascii?Q?767i3BVSQlT3jlcVlFcBI6K9BYDu4SZeX93ByO4SzcFvEkHlT4btqGM+QZA8?=
 =?us-ascii?Q?mWxuJDsVziMwwavUpwHSFuuBTX38SduGrvGsC9PVxkj0Gd3H6JIyBXgUdKbV?=
 =?us-ascii?Q?kCtLO/2Ub/xo3xPauU/TedDD4F6aUBxmSdhu4e44ASK1Ojf7OJ7E7aq5mPps?=
 =?us-ascii?Q?VgJBAZYIn9x/gIW3KgmxtpRgv5THkUyKwQMhMvZ0AV+FY7icfP0BENaB/trK?=
 =?us-ascii?Q?iTChi9W+U1pEGeQjw6AgQkuspHzdaJEQNvFUdi8KtM66R+dn0BJPfVRN1dvl?=
 =?us-ascii?Q?u23Q740b2ItkySqXDH0Ei804pbltVLFXZQ2HCZ7GPiPjGoUkLTazHjm670eh?=
 =?us-ascii?Q?CBBv4ENE1JI0eOifRyTXG1xlGFW4EnDQ+Yc5mGGDYDjELxuTstUa+LxfeChE?=
 =?us-ascii?Q?l1gsQn0jlHCJhhYkdcesYE5zntpqMgMCAAFnpug22yZh+7yRgjtSM1Qprzpq?=
 =?us-ascii?Q?qIOFsRaQ0GYHJgXIQlAW5NyZEsdekbaZI14f0lX11BCUflIiPbPgIRYFSagu?=
 =?us-ascii?Q?ipaTFA6/VtJt6+u7r809kn5ax18ZZ8NVuwf0WRVAi4+UI79TvwLzuUnuZukz?=
 =?us-ascii?Q?USHC+Anh7MJENIJrpWECzYEjs9iT2XF+DzJo+WSVG7lzldbeQAhQZPtMYn8O?=
 =?us-ascii?Q?uKNXe2Df3zVh5Mv1Xy8kxOJIGmDrhpUFe41EjEniK5C5fW0yeAF6Zwj8XZfL?=
 =?us-ascii?Q?53aAv2d2FJZ7M7llTGeRHPA9riFGYonIqlMINp8EajDW/fsnbzuW2QQQ8Cki?=
 =?us-ascii?Q?C9GPaGgdy/6d9icnJq8tw7lLFThXcEIgRywtVTfpVOZ61PUHLeRaMUBNt6WB?=
 =?us-ascii?Q?Dp7uDI2pU9DFgbDQ=3D?=
X-MS-Exchange-SenderADCheck: 1
X-Microsoft-Antispam-Message-Info: SZYRRqsn2IE6gqp/ytckReX9j3wi+0VHiRdQugI0TqWyNZLNIe9M4lF4yj2WDTFTKkukGQLqRmX99RNJZCJgwPSJOVm7RBV8/gcX49wS/4oQ29sSV+O1AKLMAjYVzRcGQKAyeIpmPyrObJOptU7yWAmM9AgfNRlGE22MrR7npzYYQpfdnKKRxUhR1XLmrBPVWoiExEQu2uMrFlPqisK3wQ1mFLwB48e2kMCe7xhBNAgp1eJtvG+tQkg6p4Lf5UdSOUJ6c0Va69e80IuB19g5fMAbIaZgm8F3V/6j9GqBV4Q40POSjV0LR/42IOd43x3TZTSMqdihrmwqj4W33yuKTYzymHNBikwQ037/GM7Ay3SwDXl0LqxAhJkDNiXBOQAKF32U5gcby0+c5KCc4IY48BmX8wr5I59IIOjxXo5J8aQ=
X-Microsoft-Exchange-Diagnostics: 1; AM5PR0802MB2532;
 20:uahdghYPwHP1GGA0ym+mw2bM/Qty4AiP7fL02n22sybf1IQEERU0Vnr6x4jsPQmGxz55NdDjR4DI1+da/DoMIXYH65i5Di94rnCy/NT0HkEfYIrx09SBSl4bjaB3lYpPrx+cwDzjDKJ68sZu3CuoRu0pr2N4jDBkXQZ58vLFGCY=
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Feb 2019 06:23:45.5944 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 182476ce-ae51-44e0-9631-08d6988e4c85
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[40.67.248.234];
 Helo=[nebula.arm.com]
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0802MB2532
Subject: [Minios-devel] [UNIKRAFT PATCHv6 20/23] plat/kvm: arm64: Support
 build L3 table for large image size
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>, Jia He <justin.he@arm.com>,
 Wei Chen <wei.chen@arm.com>, Kaly Xin <Kaly.Xin@arm.com>,
 Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

RnJvbTogV2VpIENoZW4gPHdlaS5jaGVuQGFybS5jb20+CldlIGhhdmUgdXBkYXRlZCB0aGUgTDMg
dGFibGUgYnVpbGQgZnVuY3Rpb24gdG8gc3VwcG9ydCBsYXJnZSBtZW1vcnkKcmFuZ2UuIEluIHRo
aXMgY2FzZSwgd2UgY2FuIHN1cHBvcnQgYnVpbGQgTDMgdGFibGVzIGZvciBpbWFnZXMgZXhjZWVk
ZWQKMk1CLgoKU2lnbmVkLW9mZi1ieTogV2VpIENoZW4gPHdlaS5jaGVuQGFybS5jb20+ClNpZ25l
ZC1vZmYtYnk6IEppYSBIZSA8anVzdGluLmhlQGFybS5jb20+ClJldmlld2VkLWJ5OiBTaGFyYW4g
U2FudGhhbmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xhYi5ldT4KLS0tCiBwbGF0L2t2bS9hcm0v
cGFnZXRhYmxlNjQuUyB8IDI3ICsrKysrKysrKysrKysrKysrKystLS0tLS0tLQogMSBmaWxlIGNo
YW5nZWQsIDE5IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvcGxh
dC9rdm0vYXJtL3BhZ2V0YWJsZTY0LlMgYi9wbGF0L2t2bS9hcm0vcGFnZXRhYmxlNjQuUwppbmRl
eCAyMTJmOGUwLi44ZDllOTIzIDEwMDY0NAotLS0gYS9wbGF0L2t2bS9hcm0vcGFnZXRhYmxlNjQu
UworKysgYi9wbGF0L2t2bS9hcm0vcGFnZXRhYmxlNjQuUwpAQCAtNjIsNiArNjIsNyBAQCB2aXJ0
X2JpdHM6CiAvKgogICogV2Ugd2lsbCB1c2UgYSBkaXJlY3QgbWFwIGZvciBwaHlzaWNhbCBhZGRy
ZXNzIGFuZCB2aXJ0dWFsIGFkZHJlc3MKICAqIChQQSA9IFZBIDE6MSBtYXBwaW5nKQorICogIHgx
NSA9IGltYWdlIHNpemUgKHRyYXNoZWQpCiAgKi8KIEVOVFJZKGNyZWF0ZV9wYWdldGFibGVzKQog
ICAgICAgIC8qIFNhdmUgbGluayBhZGRyZXNzICovCkBAIC0xMzQsMjAgKzEzNSwzMCBAQCBFTlRS
WShjcmVhdGVfcGFnZXRhYmxlcykKICAgICAgICBhZGQgeDksIHgxNCwgI0wyX1RBQkxFX09GRlNF
VDsKICAgICAgICBibCAgbGlua19sMV9wYWdldGFibGUKCi0gICAgICAgLyogM3JkOiBCdWlsZCBh
IEwzIHBhZ2V0YWJsZSBmb3IgMH4yTUIqLwotICAgICAgIGFkZCB4NiwgeDE0LCAjTDNfVEFCTEVf
T0ZGU0VUOworICAgICAgIC8qIDNyZDogQnVpbGQgYSBMMyBwYWdldGFibGUgZm9yIGltYWdlIG9j
Y3VwaWVkIG1lbW9yeSAqLworICAgICAgIGFkZCB4MTYsIHgxNCwgI0wzX1RBQkxFX09GRlNFVAor
ICAgICAgIG1vdiB4MTcsICNSQU1fQUREUl9TVEFSVAorCisgICAgICAgbW92IHg2LCB4MTYKICAg
ICAgICBsZHIgeDcsID1TRUNUX0FUVFJfTk9STUFMCi0gICAgICAgbW92IHg4LCAjUkFNX0FERFJf
U1RBUlQKLSAgICAgICBtb3YgeDksIHg4Ci0gICAgICAgbW92IHgxMCwgNTEyCisgICAgICAgbW92
IHg4LCB4MTcKKyAgICAgICBtb3YgeDksIHgxNworICAgICAgIGxzciB4MTAsIHgxNSwgTDNfU0hJ
RlQKICAgICAgICBibCAgYnVpbGRfbDNfcGFnZXRhYmxlCgogICAgICAgIC8qIDR0aDogTGluayB0
aGlzIEwzIHBhZ2V0YWJsZSB0byBMMiBlbnRyeSAqLwotICAgICAgIGFkZCB4NiwgeDE0LCAjTDJf
VEFCTEVfT0ZGU0VUOwotICAgICAgIG1vdiB4OCwgI1JBTV9BRERSX1NUQVJUCi0gICAgICAgYWRk
IHg5LCB4MTQsICNMM19UQUJMRV9PRkZTRVQ7CisgICAgICAgYWRkIHg2LCB4MTQsICNMMl9UQUJM
RV9PRkZTRVQKKzE6CisgICAgICAgbW92IHg4LCB4MTcKKyAgICAgICBtb3YgeDksIHgxNgogICAg
ICAgIGJsICBsaW5rX2wyX3BhZ2V0YWJsZQoKKyAgICAgICAvKiBDaGVjayB3aGV0aGVyIHRoZSBp
bWFnZSBtYXBwaW5nIGhhcyBiZWVuIGRvbmUgKi8KKyAgICAgICBhZGQgeDE2LCB4MTYsICNfX1BB
R0VfU0laRQorICAgICAgIGFkZCB4MTcsIHgxNywgI0wyX1NJWkUKKyAgICAgICBzdWIgeDE1LCB4
MTUsICNMMl9TSVpFCisgICAgICAgY2JueiB4MTUsIDFiCisKICAgICAgICAvKiA1dGg6IFVwZGF0
ZSBkdGIgc2VjdGlvbiB0byByZWFkb25seSAqLwogICAgICAgIGxkciB4OCwgPV9kdGIKICAgICAg
ICBsZHIgeDksID1fdGV4dAotLQoyLjE3LjEKCklNUE9SVEFOVCBOT1RJQ0U6IFRoZSBjb250ZW50
cyBvZiB0aGlzIGVtYWlsIGFuZCBhbnkgYXR0YWNobWVudHMgYXJlIGNvbmZpZGVudGlhbCBhbmQg
bWF5IGFsc28gYmUgcHJpdmlsZWdlZC4gSWYgeW91IGFyZSBub3QgdGhlIGludGVuZGVkIHJlY2lw
aWVudCwgcGxlYXNlIG5vdGlmeSB0aGUgc2VuZGVyIGltbWVkaWF0ZWx5IGFuZCBkbyBub3QgZGlz
Y2xvc2UgdGhlIGNvbnRlbnRzIHRvIGFueSBvdGhlciBwZXJzb24sIHVzZSBpdCBmb3IgYW55IHB1
cnBvc2UsIG9yIHN0b3JlIG9yIGNvcHkgdGhlIGluZm9ybWF0aW9uIGluIGFueSBtZWRpdW0uIFRo
YW5rIHlvdS4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
Ck1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qu
b3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3Mt
ZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Fri Feb 22 08:28:31 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 22 Feb 2019 08:28:31 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gx6C4-0003ZF-PS; Fri, 22 Feb 2019 08:28:28 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=qdOw=Q3=arm.com=haibo.xu@srs-us1.protection.inumbo.net>)
 id 1gwOR1-0005Di-Fj
 for minios-devel@lists.xen.org; Wed, 20 Feb 2019 09:44:59 +0000
X-Inumbo-ID: 2e567869-34f4-11e9-bc90-bc764e045a96
Received: from EUR03-DB5-obe.outbound.protection.outlook.com (unknown
 [40.107.4.48]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 2e567869-34f4-11e9-bc90-bc764e045a96;
 Wed, 20 Feb 2019 09:44:57 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; 
 s=selector1-arm-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=bbG620UIfYbTpMuhmyxgR4Tb7uzcHQwy57IAP5mcxUA=;
 b=qv/8W7mpXjv0j3ZgHMH+E7XD5Vg0CXhxzZMHQ8CO9IvA80DTudnVUqEMGcwxlgtuY7VxwfGSNpYdxFtEtBZQ2OF3Vck0ucl8VTKCpT6kKqMVa39VZiUN5JC+LUac709DUSu26vllJnP9erMrn3lrwPkX1lqs45Dn3m9zTDzToTg=
Received: from AM4PR08MB2929.eurprd08.prod.outlook.com (10.171.190.138) by
 AM6SPR01MB0054.eurprd08.prod.outlook.com (20.179.4.141) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.1622.19; Wed, 20 Feb 2019 09:44:55 +0000
Received: from AM4PR08MB2929.eurprd08.prod.outlook.com
 ([fe80::e522:c03f:3d0c:f4ce]) by AM4PR08MB2929.eurprd08.prod.outlook.com
 ([fe80::e522:c03f:3d0c:f4ce%4]) with mapi id 15.20.1643.014; Wed, 20 Feb 2019
 09:44:55 +0000
From: "Haibo Xu (Arm Technology China)" <Haibo.Xu@arm.com>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [Minios-devel] [UNIKRAFT]  Add Solo5 platform support to unikraft
Thread-Index: AdTI/6PPz4G3OUv1QUeKyv4Hwa8Dbg==
Date: Wed, 20 Feb 2019 09:44:55 +0000
Message-ID: <AM4PR08MB29295D9B3DAC9DDE91EB0064857D0@AM4PR08MB2929.eurprd08.prod.outlook.com>
Accept-Language: en-US
Content-Language: zh-CN
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [113.29.88.7]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: d6863328-4520-4f75-686c-08d697181207
x-ms-office365-filtering-ht: Tenant
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(7168020)(4627221)(201703031133081)(201702281549075)(8990200)(5600110)(711020)(4605104)(4618075)(2017052603328)(7153060)(7193020);
 SRVR:AM6SPR01MB0054; 
x-ms-traffictypediagnostic: AM6SPR01MB0054:
x-microsoft-exchange-diagnostics: 1; AM6SPR01MB0054;
 20:iU8d/4KgGP/mpOBFxne8lFazA/Mc+yw3R1T522Bls/62lWv7qmj3YZsBWUOLXqdGKKtCcLtM7UpgosYfUwbxgeM2BAhNZebOZRDxJ90sxrrslo+qFLd4nwKDmiiuO7Lp2U73NmoUSrII0NL3Jr0PCvss3gYAPcmY/SAgSLM0x40=
x-microsoft-antispam-prvs: <AM6SPR01MB00543F6227CD59B538CE6303857D0@AM6SPR01MB0054.eurprd08.prod.outlook.com>
x-forefront-prvs: 0954EE4910
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(39860400002)(346002)(366004)(376002)(396003)(136003)(189003)(199004)(40434004)(186003)(102836004)(6346003)(14454004)(72206003)(106356001)(6436002)(55236004)(478600001)(6506007)(71190400001)(105586002)(5640700003)(71200400001)(6306002)(7696005)(9686003)(54906003)(5024004)(54896002)(256004)(14444005)(2906002)(26005)(53936002)(6916009)(3846002)(6116002)(316002)(99286004)(4326008)(2501003)(55016002)(790700001)(74316002)(7736002)(5660300002)(8676002)(81156014)(9326002)(33656002)(8936002)(25786009)(68736007)(486006)(81166006)(97736004)(4744005)(476003)(86362001)(2351001)(66066001);
 DIR:OUT; SFP:1101; SCL:1; SRVR:AM6SPR01MB0054;
 H:AM4PR08MB2929.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:1; 
received-spf: None (protection.outlook.com: arm.com does not designate
 permitted sender hosts)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=Haibo.Xu@arm.com; 
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: W7JodAl4olIKOHqlDw2AkegdmIs3QFDEpTofS1ayQ2UX58+IxDWuwz+LrMZc/1cOfAjH9sCKaLrR6LirFFT9ijunymlX52zUy9VBql8ISO7QgAq4XvnAH8wJQq0ARr0Vc+dasFERoRoe9OSZ0horO+VQ6Tnyy6v1Qy0Q1UIAByzUg5T3h7HVOa8AHaRfFg03LKaUJ7dBJ0r6dlr0UM6jim085CDiOzJfELci/bXTXmGuO6mhrPAafevdjjvOBXSFoyP3+66i7GfZYlo07SDygLAXOteaWvYoxNyzArr1aM/xCx6CxYas8w/otHlH4ELuykxg1eqjYj1EeF5z/k4nmLqeMzdjECzaad1ErVixVi+vmIJFql0vVDfLGyLN+WDNDzuu0CtT1d1h1+bcdHHTiTkgjuc3sXGC57bZ5DWXYkI=
MIME-Version: 1.0
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-Network-Message-Id: d6863328-4520-4f75-686c-08d697181207
X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Feb 2019 09:44:55.6067 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6SPR01MB0054
X-Mailman-Approved-At: Fri, 22 Feb 2019 08:28:27 +0000
Subject: [Minios-devel] [UNIKRAFT] Add Solo5 platform support to unikraft
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>
Content-Type: multipart/mixed; boundary="===============2078877343676254561=="
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

--===============2078877343676254561==
Content-Language: zh-CN
Content-Type: multipart/alternative;
	boundary="_000_AM4PR08MB29295D9B3DAC9DDE91EB0064857D0AM4PR08MB2929eurp_"

--_000_AM4PR08MB29295D9B3DAC9DDE91EB0064857D0AM4PR08MB2929eurp_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Hi,

Recently, I had a try to enable the solo5 platform support in unikraft,
and the hello-world app now can run in the Solo5 sandboxed environment.

Just wondering whether it's necessary to add the solo5 platform to
unikraft which have already supported the KVM platform?

Regards,

Haibo
IMPORTANT NOTICE: The contents of this email and any attachments are confid=
ential and may also be privileged. If you are not the intended recipient, p=
lease notify the sender immediately and do not disclose the contents to any=
 other person, use it for any purpose, or store or copy the information in =
any medium. Thank you.

--_000_AM4PR08MB29295D9B3DAC9DDE91EB0064857D0AM4PR08MB2929eurp_
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http:=
//www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
<meta name=3D"Generator" content=3D"Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
	{font-family:DengXian;
	panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
	{font-family:"\@DengXian";
	panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0cm;
	margin-bottom:.0001pt;
	font-size:11.0pt;
	font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:#0563C1;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-priority:99;
	color:#954F72;
	text-decoration:underline;}
span.EmailStyle17
	{mso-style-type:personal-compose;
	font-family:"Calibri",sans-serif;
	color:windowtext;}
.MsoChpDefault
	{mso-style-type:export-only;
	font-family:"Calibri",sans-serif;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang=3D"EN-US" link=3D"#0563C1" vlink=3D"#954F72">
<div class=3D"WordSection1">
<p class=3D"MsoNormal">Hi,<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">Recently, I had a try to enable the solo5 platform s=
upport in unikraft,
<o:p></o:p></p>
<p class=3D"MsoNormal">and the hello-world app now can run in the Solo5 san=
dboxed environment.<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">Just wondering whether it&#8217;s necessary to add t=
he solo5 platform to<o:p></o:p></p>
<p class=3D"MsoNormal">unikraft which have already supported the KVM platfo=
rm?<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">Regards,<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">Haibo<o:p></o:p></p>
</div>
IMPORTANT NOTICE: The contents of this email and any attachments are confid=
ential and may also be privileged. If you are not the intended recipient, p=
lease notify the sender immediately and do not disclose the contents to any=
 other person, use it for any purpose,
 or store or copy the information in any medium. Thank you.
</body>
</html>

--_000_AM4PR08MB29295D9B3DAC9DDE91EB0064857D0AM4PR08MB2929eurp_--


--===============2078877343676254561==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRl
dmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

--===============2078877343676254561==--


From minios-devel-bounces@lists.xenproject.org Fri Feb 22 11:10:18 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 22 Feb 2019 11:10:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gx8ie-0001It-DX; Fri, 22 Feb 2019 11:10:16 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=aYYY=Q5=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1gx8id-0001Io-AZ
 for minios-devel@lists.xen.org; Fri, 22 Feb 2019 11:10:15 +0000
X-Inumbo-ID: 6c7ea184-3692-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 6c7ea184-3692-11e9-bc90-bc764e045a96;
 Fri, 22 Feb 2019 11:10:13 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 65D23104E8E;
 Fri, 22 Feb 2019 12:08:01 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id rkwehufChOyv; Fri, 22 Feb 2019 12:08:01 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 3E4F2104E80;
 Fri, 22 Feb 2019 12:07:57 +0100 (CET)
Received: from [10.1.2.30] (10.1.2.30) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 22 Feb 2019 12:07:57
 +0100
To: =?UTF-8?Q?Vlad-Andrei_B=c4=82DOIU_=2878692=29?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
References: <20190109135235.24024-1-vlad_andrei.badoiu@stud.acs.upb.ro>
From: Florian Schmidt <Florian.Schmidt@neclab.eu>
Message-ID: <f0f8b852-950c-5f60-3745-78f12fd03f7f@neclab.eu>
Date: Fri, 22 Feb 2019 12:07:56 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190109135235.24024-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Content-Language: en-US
X-Originating-IP: [10.1.2.30]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 1/1] support/build: Add support
 for the tar.xz and .txz format
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 "simon.kuenzer@neclab.eu" <simon.kuenzer@neclab.eu>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGkgVmxhZCwKCnNvcnJ5LCB0aGlzIHBhdGNoIGRpZG4ndCBnZXQgcGlja2VkIHVwIGJ5IHBhdGNo
d29yayBmb3Igc29tZSByZWFzb24sIHNvIAppdCBnb3Qgb3Zlcmxvb2tlZC4KClBhdGNoIGxvb2tz
IGdvb2QsIHRoYW5rcy4KClJldmlld2VkLWJ5OiBGbG9yaWFuIFNjaG1pZHQgPGZsb3JpYW4uc2No
bWlkdEBuZWNsYWIuZXU+CgpPbiAxLzkvMTkgMjo1MiBQTSwgVmxhZC1BbmRyZWkgQsSCRE9JVSAo
Nzg2OTIpIHdyb3RlOgo+IEZyb206IFZsYWQgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1
ZC5hY3MudXBiLnJvPgo+IAo+IFRoaXMgcGF0Y2ggYWRkcyB0aGUgLnR4eiBhbmQgdGFyLnh6IGZv
cm1hdHMgaW50byB0aGUgYnVpbGQgc3lzdGVtLgo+IFRoaXMgaXMgbmVlZGVkIGZvciB0aGUgQysr
IGxpYnJhcmllcyBzaW5jZSBMTFZNIHVzZXMgdGFyLnh6Cj4gZm9yIHRoZWlyIHJlbGVhc2VzICho
dHRwOi8vcmVsZWFzZXMubGx2bS5vcmcvZG93bmxvYWQuaHRtbCkuCj4gCj4gU2lnbmVkLW9mZi1i
eTogVmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1ZC5hY3MudXBiLnJv
Pgo+IC0tLQo+ICAgc3VwcG9ydC9idWlsZC9NYWtlZmlsZS5ydWxlcyB8IDExICsrKysrKysrKyst
Cj4gICAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQo+IAo+
IGRpZmYgLS1naXQgYS9zdXBwb3J0L2J1aWxkL01ha2VmaWxlLnJ1bGVzIGIvc3VwcG9ydC9idWls
ZC9NYWtlZmlsZS5ydWxlcwo+IGluZGV4IDM2ZmI4ZGIuLjk5OWUxN2UgMTAwNjQ0Cj4gLS0tIGEv
c3VwcG9ydC9idWlsZC9NYWtlZmlsZS5ydWxlcwo+ICsrKyBiL3N1cHBvcnQvYnVpbGQvTWFrZWZp
bGUucnVsZXMKPiBAQCAtMjU3LDYgKzI1NywxNCBAQCAkKEJVSUxEX0RJUikvJCgxKS8ub3JpZ2lu
OiAkKDIpCj4gICAJICAkKFRPVUNIKSAkKEJVSUxEX0RJUikvJCgxKS8ub3JpZ2luKQo+ICAgZW5k
ZWYKPiAgIAo+ICtkZWZpbmUgX2V4dHJhY3R0b29yaWdpbl90Z3pfeHogPQo+ICskKEJVSUxEX0RJ
UikvJCgxKS8ub3JpZ2luOiAkKDIpCj4gKwkkKGNhbGwgdmVyYm9zZV9jbWQsVU5UQVIsJCgxKSc6
JyAkKG5vdGRpciAkKDIpKSwgXAo+ICsJICAkKFRBUikgLXhKZiAkKDIpIFwKPiArCSAgICAgICAg
IC1DICQoQlVJTERfRElSKS8kKDEpL29yaWdpbiAmJiBcCj4gKwkgICQoVE9VQ0gpICQoQlVJTERf
RElSKS8kKDEpLy5vcmlnaW4pCj4gK2VuZGVmCj4gKwo+ICAgZGVmaW5lIF9leHRyYWN0dG9vcmln
aW5femlwID0KPiAgICQoQlVJTERfRElSKS8kKDEpLy5vcmlnaW46ICQoMikKPiAgIAkkKGNhbGwg
dmVyYm9zZV9jbWQsVU5aSVAsJCgxKSc6JyAkKG5vdGRpciAkKDIpKSwgXAo+IEBAIC0yOTAsOSAr
Mjk4LDEwIEBAIGVuZGVmCj4gICAjIHVuYXJjaGl2ZSAkbGlibmFtZSwkYXJjaGl2ZV9mbmFtZSwk
ZGlyX3dpdGhfcGF0Y2hlcyhvcHRpb25hbCkKPiAgIGRlZmluZSB1bmFyY2hpdmUgPQo+ICAgJChp
ZiAkKGZpbHRlciAlLnRhci5neiAlLnRneiwkKDIpKSwkKGNhbGwgX2V4dHJhY3R0b29yaWdpbl90
Z3osJCgxKSwkKDIpKSxcCj4gKyQoaWYgJChmaWx0ZXIgJS50YXIueHogJS50eHosJCgyKSksJChj
YWxsIF9leHRyYWN0dG9vcmlnaW5fdGd6X3h6LCQoMSksJCgyKSksXAo+ICAgJChpZiAkKGZpbHRl
ciAlLnppcCwkKDIpKSwkKGNhbGwgICAgICAgICAgX2V4dHJhY3R0b29yaWdpbl96aXAsJCgxKSwk
KDIpKSxcCj4gICAkKGVycm9yICQoMik6IG1pc3NpbmcgZXh0cmFjdGlvbiBydWxlIGZvciBhcmNo
aXZlIHR5cGUpXAo+IC0pKQo+ICspKSkKPiAgIFVLX0ZFVENILXkgKz0gJChCVUlMRF9ESVIpLyQo
MSkvLm9yaWdpbiBcCj4gICAkKGV2YWwgJChjYWxsIHZwcmVmaXhfbGliLCQoMSksT1JJR0lOKSA9
ICQoQlVJTERfRElSKS8kKDEpL29yaWdpbikKPiAgICQoY2FsbCBta19zdWJfYnVpbGRfZGlyLCQo
MSkvb3JpZ2luKQo+IAoKLS0gCkRyLiBGbG9yaWFuIFNjaG1pZHQK44OV44Ot44O844Oq44Ki44Oz
44O744K344Ol44Of44OD44OIClJlc2VhcmNoIFNjaWVudGlzdCwKU3lzdGVtcyBhbmQgTWFjaGlu
ZSBMZWFybmluZyBHcm91cApORUMgTGFib3JhdG9yaWVzIEV1cm9wZQpLdXJmw7xyc3Rlbi1Bbmxh
Z2UgMzYsIEQtNjkxMTUgSGVpZGVsYmVyZwpUZWwuICAgICArNDkgKDApNjIyMSA0MzQyLTI2NQpG
YXg6ICAgICArNDkgKDApNjIyMSA0MzQyLTE1NQplLW1haWw6ICBmbG9yaWFuLnNjaG1pZHRAbmVj
bGFiLmV1Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQpSZWdpc3RlcmVkIGF0IEFtdHNnZXJpY2h0IE1hbm5oZWltLCBHZXJtYW55LCBI
UkI3Mjg1NTgKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
Ck1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qu
b3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3Mt
ZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Fri Feb 22 13:16:36 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 22 Feb 2019 13:16:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gxAgt-0006VH-FK; Fri, 22 Feb 2019 13:16:35 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=aYYY=Q5=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1gxAgr-0006V8-Ep
 for minios-devel@lists.xen.org; Fri, 22 Feb 2019 13:16:33 +0000
X-Inumbo-ID: 11650b69-36a4-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 11650b69-36a4-11e9-bc90-bc764e045a96;
 Fri, 22 Feb 2019 13:16:31 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 8B0F1F2047;
 Fri, 22 Feb 2019 14:14:20 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id lecOABwjY7Da; Fri, 22 Feb 2019 14:14:20 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 51606F2045;
 Fri, 22 Feb 2019 14:14:16 +0100 (CET)
Received: from [10.1.2.30] (10.1.2.30) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 22 Feb 2019 14:14:15
 +0100
To: Costin Lupu <costin.lup@gmail.com>, <minios-devel@lists.xen.org>
References: <20190110152212.14518-1-costin.lupu@cs.pub.ro>
 <20190110152212.14518-6-costin.lupu@cs.pub.ro>
 <2cb20775-7345-277a-820d-e5722003066d@neclab.eu>
 <adf4df76-0a10-34a4-845d-51e446294a68@gmail.com>
From: Florian Schmidt <Florian.Schmidt@neclab.eu>
Message-ID: <2ccaad02-5f14-877f-e0a5-bac0364e346e@neclab.eu>
Date: Fri, 22 Feb 2019 14:14:15 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <adf4df76-0a10-34a4-845d-51e446294a68@gmail.com>
Content-Language: en-US
X-Originating-IP: [10.1.2.30]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 5/8] lib/uksched: Add support
 for waiting threads
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: felipe.huici@neclab.eu, simon.kuenzer@neclab.eu, yuri.volchkov@neclab.eu
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGkgQ29zdGluLAoKT24gMi8yMS8xOSAxMjo0NiBQTSwgQ29zdGluIEx1cHUgd3JvdGU6Cj4gSGkg
RmxvcmlhbiwKPiAKPiBQbGVhc2Ugc2VlIG15IGNvbW1lbnRzIGlubGluZS4KPiAKPiBPbiAxLzIz
LzE5IDM6NDggUE0sIEZsb3JpYW4gU2NobWlkdCB3cm90ZToKPj4gQWN0dWFsbHksIG5vdyB0aGF0
IEkgbG9vayBhdCB0aGUgbmV4dCBwYXRjaC4uLgo+Pgo+PiBPbiAxLzExLzE5IDEyOjIyIEFNLCBD
b3N0aW4gTHVwdSB3cm90ZToKPj4KPj4+IGRpZmYgLS1naXQgYS9saWIvdWtzY2hlZGNvb3Avc2No
ZWRjb29wLmMgYi9saWIvdWtzY2hlZGNvb3Avc2NoZWRjb29wLmMKPj4+IGluZGV4IGU1NjUyNDAu
LmY3YWI5MmQgMTAwNjQ0Cj4+PiAtLS0gYS9saWIvdWtzY2hlZGNvb3Avc2NoZWRjb29wLmMKPj4+
ICsrKyBiL2xpYi91a3NjaGVkY29vcC9zY2hlZGNvb3AuYwo+Pj4gQEAgLTEyNSw2ICsxMjUsMTIg
QEAgc3RhdGljIHZvaWQgc2NoZWRjb29wX3NjaGVkdWxlKHN0cnVjdCB1a19zY2hlZCAqcykKPj4+
ICDCoMKgwqDCoMKgwqDCoMKgwqAgdWtfc2NoZWRfdGhyZWFkX3N3aXRjaChzLCBwcmV2LCBuZXh0
KTsKPj4+ICDCoCDCoMKgwqDCoMKgIFVLX1RBSUxRX0ZPUkVBQ0hfU0FGRSh0aHJlYWQsICZwcnYt
PmV4aXRlZF90aHJlYWRzLAo+Pj4gdGhyZWFkX2xpc3QsIHRtcCkgewo+Pj4gK8KgwqDCoMKgwqDC
oMKgIHN0cnVjdCB0aHJlYWRfaW5mb19iYXNlICp0aWIgPSB0aHJlYWQtPnNjaGVkX2luZm87Cj4+
PiArCj4+PiArwqDCoMKgwqDCoMKgwqAgaWYgKCF0aWItPmlzX2RldGFjaGVkKQo+Pj4gK8KgwqDC
oMKgwqDCoMKgwqDCoMKgwqAgLyogc29tZW9uZSB3aWxsIGV2ZW50dWFsbHkgd2FpdCBmb3IgaXQg
Ki8KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnRpbnVlOwo+Pj4gKwo+Pj4gIMKgwqDC
oMKgwqDCoMKgwqDCoCBpZiAodGhyZWFkICE9IHByZXYpIHsKPj4+ICDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoCBVS19UQUlMUV9SRU1PVkUoJnBydi0+ZXhpdGVkX3RocmVhZHMsCj4+PiAgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHRocmVhZCwgdGhyZWFkX2xp
c3QpOwo+Pj4gQEAgLTE2Nyw2ICsxNzMsNyBAQCBzdGF0aWMgdm9pZCBzY2hlZGNvb3BfdGhyZWFk
X3JlbW92ZShzdHJ1Y3QKPj4+IHVrX3NjaGVkICpzLCBzdHJ1Y3QgdWtfdGhyZWFkICp0KQo+Pj4g
IMKgIMKgwqDCoMKgwqAgLyogUHV0IG9udG8gZXhpdGVkIGxpc3QgKi8KPj4+ICDCoMKgwqDCoMKg
IFVLX1RBSUxRX0lOU0VSVF9IRUFEKCZwcnYtPmV4aXRlZF90aHJlYWRzLCB0LCB0aHJlYWRfbGlz
dCk7Cj4+PiArwqDCoMKgIHVrX3RocmVhZF9leGl0KHQpOwo+Pj4gIMKgIMKgwqDCoMKgwqAgdWtw
bGF0X2xjcHVfcmVzdG9yZV9pcnFmKGZsYWdzKTsKPj4KPj4gRG9lc24ndCBjYWxsaW5nIHVrX3Ro
cmVhZF9leGl0KHQpIG9ubHkgYWZ0ZXIgcHV0dGluZyBpdCBvbiB0aGUKPj4gZXhpdGVkX3RocmVh
ZHMgbGlzdCBhIHJhY2UgY29uZGl0aW9uPyBCZWNhdXNlIGlmIG5vdyB0aGUgbWFpbiBzY2hlZHVs
aW5nCj4+IGxvb3AgKGFzIGluIHNjaGVkY29vcF9zY2hlZHVsZSgpIGlzIGNhbGxlZCBhZ2FpbiBh
ZnRlciBpbnNlcnRpbmcsIGJ1dAo+PiBiZWZvcmUgdGhyZWFkX2V4aXQoKSBpcyBjYWxsZWQsIHRo
ZSBjb3VsZCBsZWFkIHRvIGFuIGFzc2VydGlvbiBmYWlsdXJlCj4+IHdoZW4gc2NoZWRjb29wX3Nj
aGVkdWxlKCkgY2FsbHMgdWtfc2NoZWRfdGhyZWFkX2Rlc3Ryb3koKSBvbiB0aGF0Cj4+IHRocmVh
ZCwgYnV0IHVrX3RocmVhZF9leGl0KCkgaGFzbid0IGZpbmlzaGVkIHlldC4KPj4KPiAKPiBXaWxs
IG1vdmUgdGhpcyBiZWZvcmUgdGhlIGluc2VydGlvbiBpbiB2My4KCkdyZWF0LCB0aGFua3MhCgoK
Pj4gSSB1bmRlcnN0YW5kIHRoYXQgdGhpcyBwcm9iYWJseSBpcyBhIGNyYXp5IGNvcm5lciBjYXNl
LCBhbmQgSSdtIG5vdCBzdXJlCj4+IEkgY2FuIGV2ZW4gZXZlciBvY2N1ciB3aXRob3V0IFNNUCBz
dXBwb3J0LCBidXQsIG9uIHRoZSBvdGhlciBoYW5kOiBpcwo+PiB0aGVyZSBhbnkgaGFybSBpbiBz
d2l0Y2hpbmcgdGhlIG9yZGVyPyBBbmQgYWN0dWFsbHksIHdvdWxkbid0IGl0IG1ha2UKPj4gc2Vu
c2UgdG8gcHV0IHRoZSBsaXN0IGluc2VydGlvbiBpbnRvIHVrX3RocmVhZF9leGl0KCk/IEl0J3Mg
YW4gaW1wb3J0YW50Cj4+IHBhcnQgb2YgdGhyZWFkIGhhbmRsaW5nLCBzbyBpdCBjb3VsZCBqdXN0
IGJlIGRvbmUgaW4gdGhlcmUsIHJpZ2h0Pwo+PiBBbHRob3VnaCBJIHJlYWxpemUgdGhhdCB5b3Ug
b25seSBkbyB0aGlzIGluIHRoZSBuZXh0IHBhdGNoLCBzby4uLiBtYXliZQo+PiBvbmx5IGRvIHRo
YXQgaW4gdGhlcmU/IFNlZW1zIHJlZ2FyZGxlc3Mgb2YgdGhlIG9yZGVyLCBvbmUgdGhpbmcgZnJv
bSB0aGUKPj4gZWFybGllciBwYXRjaCBhbHdheXMgYmV0dGVyIHdhaXRzIHVudGlsIHRoZSBsYXR0
ZXIgcGF0Y2guCj4gCj4gdWtfdGhyZWFkX2V4aXQoKSBpcyBhIHRocmVhZCAnbWV0aG9kJywgd2hp
bGUgdGhlIGV4aXRlZF90aHJlYWRzIGxpc3QKPiBiZWxvbmdzIHRvIHRoZSBzY2hlZHVsZXIuIFNp
bmNlIHRoZSB0aHJlYWQgZG9lc24ndCBoYXZlIGFueSBraW5kIG9mCj4gb3duZXJzaGlwIG9mIHRo
ZSBleGl0ZWRfdGhyZWFkcyBsaXN0LCBpdCdzIGJldHRlciB0byBub3QgbW92ZSB0aGUKPiBpbnNl
cnRpb24gaW4gdWtfdGhyZWFkX2xpc3QoKS4KCkFscmlnaHQsIHRoZW4gbGV0J3MganVzdCBrZWVw
IGl0IGFzIGl0IGlzIGluIHRoaXMgcGF0Y2guCgpDaGVlcnMsCkZsb3JpYW4KCi0tIApEci4gRmxv
cmlhbiBTY2htaWR0CuODleODreODvOODquOCouODs+ODu+OCt+ODpeODn+ODg+ODiApSZXNlYXJj
aCBTY2llbnRpc3QsClN5c3RlbXMgYW5kIE1hY2hpbmUgTGVhcm5pbmcgR3JvdXAKTkVDIExhYm9y
YXRvcmllcyBFdXJvcGUKS3VyZsO8cnN0ZW4tQW5sYWdlIDM2LCBELTY5MTE1IEhlaWRlbGJlcmcK
VGVsLiAgICAgKzQ5ICgwKTYyMjEgNDM0Mi0yNjUKRmF4OiAgICAgKzQ5ICgwKTYyMjEgNDM0Mi0x
NTUKZS1tYWlsOiAgZmxvcmlhbi5zY2htaWR0QG5lY2xhYi5ldQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmVnaXN0ZXJlZCBhdCBB
bXRzZ2VyaWNodCBNYW5uaGVpbSwgR2VybWFueSwgSFJCNzI4NTU4CgpfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0
Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2pl
Y3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Fri Feb 22 14:12:56 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 22 Feb 2019 14:12:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gxBZQ-0004Xc-06; Fri, 22 Feb 2019 14:12:56 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=aYYY=Q5=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1gxBZO-0004XR-KO
 for minios-devel@lists.xen.org; Fri, 22 Feb 2019 14:12:54 +0000
X-Inumbo-ID: f188f1e9-36ab-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id f188f1e9-36ab-11e9-bc90-bc764e045a96;
 Fri, 22 Feb 2019 14:12:53 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id D52C1F2047;
 Fri, 22 Feb 2019 15:12:52 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id hxb78y_i5EcC; Fri, 22 Feb 2019 15:12:52 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id A7DD7F2045
 for <minios-devel@lists.xen.org>; Fri, 22 Feb 2019 15:12:50 +0100 (CET)
Received: from vortex.office.hd (10.1.2.30) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 22 Feb
 2019 15:12:50 +0100
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Fri, 22 Feb 2019 15:12:30 +0100
Message-ID: <20190222141236.23993-2-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20190222141236.23993-1-florian.schmidt@neclab.eu>
References: <20190222141236.23993-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.30]
Subject: [Minios-devel] [UNIKRAFT PATCH 1/7] plat/kvm: Rename
 ukplat_clock_wall() to ukplat_wall_clock()
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Florian Schmidt <florian.schmidt@neclab.eu>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhpcyBuYW1pbmcgZm9sbG93cyB0aGUgbmFtaW5nIG9mIHVrcGxhdF9tb25vdG9uaWNfY2xvY2so
KS4KClNpZ25lZC1vZmYtYnk6IEZsb3JpYW4gU2NobWlkdCA8Zmxvcmlhbi5zY2htaWR0QG5lY2xh
Yi5ldT4KLS0tCiBwbGF0L2NvbW1vbi9hcm0vdGltZS5jIHwgMiArLQogcGxhdC9rdm0veDg2L3Rp
bWUuYyAgICB8IDIgKy0KIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0
aW9ucygtKQoKZGlmZiAtLWdpdCBhL3BsYXQvY29tbW9uL2FybS90aW1lLmMgYi9wbGF0L2NvbW1v
bi9hcm0vdGltZS5jCmluZGV4IDU4MzM4N2JlLi41N2E2MjM1NCAxMDA2NDQKLS0tIGEvcGxhdC9j
b21tb24vYXJtL3RpbWUuYworKysgYi9wbGF0L2NvbW1vbi9hcm0vdGltZS5jCkBAIC0xOTQsNyAr
MTk0LDcgQEAgX19uc2VjIHVrcGxhdF9tb25vdG9uaWNfY2xvY2sodm9pZCkKIH0KIAogLyogcmV0
dXJuIHdhbGwgdGltZSBpbiBuc2VjcyAqLwotX19uc2VjIHVrcGxhdF9jbG9ja193YWxsKHZvaWQp
CitfX25zZWMgdWtwbGF0X3dhbGxfY2xvY2sodm9pZCkKIHsKIAlyZXR1cm4gZ2VuZXJpY190aW1l
cl9tb25vdG9uaWMoKSArIGdlbmVyaWNfdGltZXJfZXBvY2hvZmZzZXQoKTsKIH0KZGlmZiAtLWdp
dCBhL3BsYXQva3ZtL3g4Ni90aW1lLmMgYi9wbGF0L2t2bS94ODYvdGltZS5jCmluZGV4IGQ2MjE0
MmZmLi4zMzNhZDlmMyAxMDA2NDQKLS0tIGEvcGxhdC9rdm0veDg2L3RpbWUuYworKysgYi9wbGF0
L2t2bS94ODYvdGltZS5jCkBAIC01Myw3ICs1Myw3IEBAIF9fbnNlYyB1a3BsYXRfbW9ub3Rvbmlj
X2Nsb2NrKHZvaWQpCiB9CiAKIC8qIHJldHVybiB3YWxsIHRpbWUgaW4gbnNlY3MgKi8KLV9fbnNl
YyB1a3BsYXRfY2xvY2tfd2FsbCh2b2lkKQorX19uc2VjIHVrcGxhdF93YWxsX2Nsb2NrKHZvaWQp
CiB7CiAJcmV0dXJuIHRzY2Nsb2NrX21vbm90b25pYygpICsgdHNjY2xvY2tfZXBvY2hvZmZzZXQo
KTsKIH0KLS0gCjIuMjAuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhl
bnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5m
by9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Fri Feb 22 14:12:56 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 22 Feb 2019 14:12:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gxBZO-0004XW-Uy; Fri, 22 Feb 2019 14:12:54 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=aYYY=Q5=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1gxBZN-0004XM-Cl
 for minios-devel@lists.xen.org; Fri, 22 Feb 2019 14:12:53 +0000
X-Inumbo-ID: f038c988-36ab-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id f038c988-36ab-11e9-bc90-bc764e045a96;
 Fri, 22 Feb 2019 14:12:51 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 9961E104E4F;
 Fri, 22 Feb 2019 15:12:50 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id LwOpUE9zVLfu; Fri, 22 Feb 2019 15:12:50 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 759A8104D1D
 for <minios-devel@lists.xen.org>; Fri, 22 Feb 2019 15:12:48 +0100 (CET)
Received: from vortex.office.hd (10.1.2.30) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 22 Feb
 2019 15:12:48 +0100
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Fri, 22 Feb 2019 15:12:29 +0100
Message-ID: <20190222141236.23993-1-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.20.1
MIME-Version: 1.0
X-Originating-IP: [10.1.2.30]
Subject: [Minios-devel] [UNIKRAFT PATCH 0/7] Expose wallclock time
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Florian Schmidt <florian.schmidt@neclab.eu>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhlcmUgd2FzIGFscmVhZHkgd2FsbGNsb2NrIHRpbWUgc3VwcG9ydCBpbiB2YXJ5aW5nIHN0YWdl
cyBvZiBjb21wbGV0ZW5lc3MKZm9yIGRpZmZlcmVudCBhcmNoaXRlY3R1cmVzIGFuZCBwbGF0Zm9y
bXMsIGJ1dCBubyB3YXkgdG8gYWNjZXNzIGl0IGZyb20geW91cgphcHBsaWNhdGlvbiB2aWEgc3Rh
bmRhcmQgbGlicmFyeSBmdW5jdGlvbnMuIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyB3YWxsY2xvY2sK
c3VwcG9ydCBmb3IgbGludXh1LCBrdm0gKHg4Nl82NCkgYW5kIFhlbiAoeDg2XzY0KSwgYXMgd2Vs
bCBhcyBnZXR0aW1lb2ZkYXkoKQphbmQgY2xvY2tfZ2V0dGltZSgpIGluIG5vbGliYy4KClRoZSBB
cm0gYXJjaGl0ZWN0dXJlIGltcGxlbWVudGF0aW9ucyBkb24ndCBoYXZlIHdhbGxjbG9jayB0aW1l
IHN1cHBvcnQgeWV0LApzbyBmb3IgdGhlIHRpbWUgYmVpbmcsIHdhbGxjbG9jayB0aW1lIHJldHVy
bnMgbW9ub3RvbmljIHRpbWUgKHRpbWUgc2luY2UKYm9vdCkgaW5zdGVhZCBvbiB0aG9zZSBhcmNo
aXRlY3R1cmVzLgoKRmxvcmlhbiBTY2htaWR0ICg3KToKICBwbGF0L2t2bTogUmVuYW1lIHVrcGxh
dF9jbG9ja193YWxsKCkgdG8gdWtwbGF0X3dhbGxfY2xvY2soKQogIHBsYXQvbGludXh1OiBJbXBs
ZW1lbnQgdWtwbGF0X3dhbGxfY2xvY2soKQogIHBsYXQveGVuOiBJbXBsZW1lbnQgdWtwbGF0X3dh
bGxfY2xvY2soKSBmb3IgeDg2CiAgcGxhdC94ZW46IER1bW15IGltcGxlbWVudGF0aW9uIG9mIHVr
cGxhdF93YWxsX2Nsb2NrKCkgZm9yIGFybTMyCiAgcGxhdDogQWRkIGRlY2xhcmF0aW9uIG9mIHVr
cGxhdF93YWxsX2Nsb2NrKCkgdG8gdGltZS5oCiAgbGliL25vbGliYzogSW1wbGVtZW50IGdldHRp
bWVvZmRheSgpCiAgbGliL25vbGliYzogSW1wbGVtZW50IGNsb2NrX2dldHRpbWUoKQoKIGluY2x1
ZGUvdWsvcGxhdC90aW1lLmggICAgICAgICAgICAgICAgICAgICAgICB8ICAxICsKIGxpYi9ub2xp
YmMvZXhwb3J0c3ltcy51ayAgICAgICAgICAgICAgICAgICAgICB8ICA0ICsrCiAuLi4vaW5jbHVk
ZS9ub2xpYmMtaW50ZXJuYWwvc2hhcmVkZGVmcy5oICAgICAgfCAgNSArKysKIGxpYi9ub2xpYmMv
aW5jbHVkZS9zeXMvdGltZS5oICAgICAgICAgICAgICAgICB8ICAxIC0KIGxpYi9ub2xpYmMvaW5j
bHVkZS9zeXMvdHlwZXMuaCAgICAgICAgICAgICAgICB8ICAxICsKIGxpYi9ub2xpYmMvaW5jbHVk
ZS90aW1lLmggICAgICAgICAgICAgICAgICAgICB8ICA3ICsrKysKIGxpYi9ub2xpYmMvdGltZS5j
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQxICsrKysrKysrKysrKysrKysrKysKIHBs
YXQvY29tbW9uL2FybS90aW1lLmMgICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBwbGF0
L2t2bS94ODYvdGltZS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogcGxhdC9s
aW51eHUvdGltZS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTYgKysrKysrKysKIHBs
YXQveGVuL2FybS9hcmNoX3RpbWUuYyAgICAgICAgICAgICAgICAgICAgICB8ICA2ICsrKwogcGxh
dC94ZW4veDg2L2FyY2hfdGltZS5jICAgICAgICAgICAgICAgICAgICAgIHwgMjIgKysrLS0tLS0t
LQogMTIgZmlsZXMgY2hhbmdlZCwgODkgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCgot
LSAKMi4yMC4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVj
dC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlv
cy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Fri Feb 22 14:12:58 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 22 Feb 2019 14:12:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gxBZS-0004YB-1W; Fri, 22 Feb 2019 14:12:58 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=aYYY=Q5=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1gxBZQ-0004Xi-Hk
 for minios-devel@lists.xen.org; Fri, 22 Feb 2019 14:12:56 +0000
X-Inumbo-ID: f2dc8efb-36ab-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id f2dc8efb-36ab-11e9-bc90-bc764e045a96;
 Fri, 22 Feb 2019 14:12:56 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 20E7F104E4F;
 Fri, 22 Feb 2019 15:12:55 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 2H4N8QaMAyiI; Fri, 22 Feb 2019 15:12:55 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id F2BB5104D1D
 for <minios-devel@lists.xen.org>; Fri, 22 Feb 2019 15:12:52 +0100 (CET)
Received: from vortex.office.hd (10.1.2.30) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 22 Feb
 2019 15:12:52 +0100
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Fri, 22 Feb 2019 15:12:31 +0100
Message-ID: <20190222141236.23993-3-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20190222141236.23993-1-florian.schmidt@neclab.eu>
References: <20190222141236.23993-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.30]
Subject: [Minios-devel] [UNIKRAFT PATCH 2/7] plat/linuxu: Implement
 ukplat_wall_clock()
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Florian Schmidt <florian.schmidt@neclab.eu>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogRmxvcmlhbiBTY2htaWR0IDxmbG9yaWFuLnNjaG1pZHRAbmVjbGFiLmV1
PgotLS0KIHBsYXQvbGludXh1L3RpbWUuYyB8IDE2ICsrKysrKysrKysrKysrKysKIDEgZmlsZSBj
aGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvcGxhdC9saW51eHUvdGltZS5j
IGIvcGxhdC9saW51eHUvdGltZS5jCmluZGV4IDEzNDM5YWQ1Li43Yjg4ZWQ0YiAxMDA2NDQKLS0t
IGEvcGxhdC9saW51eHUvdGltZS5jCisrKyBiL3BsYXQvbGludXh1L3RpbWUuYwpAQCAtNTksNiAr
NTksMjIgQEAgX19uc2VjIHVrcGxhdF9tb25vdG9uaWNfY2xvY2sodm9pZCkKIAlyZXR1cm4gcmV0
OwogfQogCitfX25zZWMgdWtwbGF0X3dhbGxfY2xvY2sodm9pZCkKK3sKKwlzdHJ1Y3Qga190aW1l
c3BlYyB0cDsKKwlfX25zZWMgcmV0OworCWludCByYzsKKworCXJjID0gc3lzX2Nsb2NrX2dldHRp
bWUoQ0xPQ0tfUkVBTFRJTUUsICZ0cCk7CisJaWYgKHVubGlrZWx5KHJjICE9IDApKQorCQlyZXR1
cm4gMDsKKworCXJldCA9IHVrYXJjaF90aW1lX3NlY190b19uc2VjKChfX25zZWMpIHRwLnR2X3Nl
Yyk7CisJcmV0ICs9IChfX25zZWMpIHRwLnR2X25zZWM7CisKKwlyZXR1cm4gcmV0OworfQorCiBz
dGF0aWMgaW50IHRpbWVyX2hhbmRsZXIodm9pZCAqYXJnIF9fdW51c2VkKQogewogCS8qIFdlIG9u
bHkgdXNlIHRoZSB0aW1lciBpbnRlcnJ1cHQgdG8gd2FrZSB1cC4gQXMgd2UgZW5kIHVwIGhlcmUs
IHRoZQotLSAKMi4yMC4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVu
cHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZv
L21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Fri Feb 22 14:13:05 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 22 Feb 2019 14:13:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gxBZZ-0004ZQ-3O; Fri, 22 Feb 2019 14:13:05 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=aYYY=Q5=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1gxBZX-0004Z3-Dk
 for minios-devel@lists.xen.org; Fri, 22 Feb 2019 14:13:03 +0000
X-Inumbo-ID: f6aaad62-36ab-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id f6aaad62-36ab-11e9-bc90-bc764e045a96;
 Fri, 22 Feb 2019 14:13:02 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 74156F2047;
 Fri, 22 Feb 2019 15:13:01 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id NfEjNIzp8t0V; Fri, 22 Feb 2019 15:13:01 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 47B1AF2045
 for <minios-devel@lists.xen.org>; Fri, 22 Feb 2019 15:12:59 +0100 (CET)
Received: from vortex.office.hd (10.1.2.30) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 22 Feb
 2019 15:12:59 +0100
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Fri, 22 Feb 2019 15:12:33 +0100
Message-ID: <20190222141236.23993-5-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20190222141236.23993-1-florian.schmidt@neclab.eu>
References: <20190222141236.23993-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.30]
Subject: [Minios-devel] [UNIKRAFT PATCH 4/7] plat/xen: Dummy implementation
 of ukplat_wall_clock() for arm32
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Florian Schmidt <florian.schmidt@neclab.eu>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogRmxvcmlhbiBTY2htaWR0IDxmbG9yaWFuLnNjaG1pZHRAbmVjbGFiLmV1
PgotLS0KIHBsYXQveGVuL2FybS9hcmNoX3RpbWUuYyB8IDYgKysrKysrCiAxIGZpbGUgY2hhbmdl
ZCwgNiBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvcGxhdC94ZW4vYXJtL2FyY2hfdGltZS5j
IGIvcGxhdC94ZW4vYXJtL2FyY2hfdGltZS5jCmluZGV4IGZlYzg5ZGE4Li5jZDk2ZTcxMCAxMDA2
NDQKLS0tIGEvcGxhdC94ZW4vYXJtL2FyY2hfdGltZS5jCisrKyBiL3BsYXQveGVuL2FybS9hcmNo
X3RpbWUuYwpAQCAtOTcsNiArOTcsMTIgQEAgX19uc2VjIHVrcGxhdF9tb25vdG9uaWNfY2xvY2so
dm9pZCkKIAlyZXR1cm4gKF9fbnNlYykgdGlja3NfdG9fbnMocmVhZF92aXJ0dWFsX2NvdW50KCkg
LSBjbnR2Y3RfYXRfaW5pdCk7CiB9CiAKKy8qIFRPRE86IHByb3BlciBpbXBsZW1lbnRhdGlvbiBv
ZiB3YWxsIGNsb2NrIHRpbWUgKi8KK19fbnNlYyB1a3BsYXRfd2FsbF9jbG9jayh2b2lkKQorewor
CXJldHVybiB1a3BsYXRfbW9ub3RvbmljX2Nsb2NrKCk7Cit9CisKIC8qIFNldCB0aGUgdGltZXIg
YW5kIG1hc2suICovCiB2b2lkIHdyaXRlX3RpbWVyX2N0bCh1aW50MzJfdCB2YWx1ZSkKIHsKLS0g
CjIuMjAuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
Ck1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qu
b3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3Mt
ZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Fri Feb 22 14:15:13 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 22 Feb 2019 14:15:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gxBbd-0004hM-9d; Fri, 22 Feb 2019 14:15:13 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=aYYY=Q5=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1gxBbc-0004hG-5G
 for minios-devel@lists.xen.org; Fri, 22 Feb 2019 14:15:12 +0000
X-Inumbo-ID: 437bfa71-36ac-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 437bfa71-36ac-11e9-bc90-bc764e045a96;
 Fri, 22 Feb 2019 14:15:11 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 30AF0104E4F;
 Fri, 22 Feb 2019 15:12:59 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id eyVZpqUJ-0_1; Fri, 22 Feb 2019 15:12:59 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 0CEBA104D1D
 for <minios-devel@lists.xen.org>; Fri, 22 Feb 2019 15:12:57 +0100 (CET)
Received: from vortex.office.hd (10.1.2.30) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 22 Feb
 2019 15:12:55 +0100
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Fri, 22 Feb 2019 15:12:32 +0100
Message-ID: <20190222141236.23993-4-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20190222141236.23993-1-florian.schmidt@neclab.eu>
References: <20190222141236.23993-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.30]
Subject: [Minios-devel] [UNIKRAFT PATCH 3/7] plat/xen: Implement
 ukplat_wall_clock() for x86
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Florian Schmidt <florian.schmidt@neclab.eu>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogRmxvcmlhbiBTY2htaWR0IDxmbG9yaWFuLnNjaG1pZHRAbmVjbGFiLmV1
PgotLS0KIHBsYXQveGVuL3g4Ni9hcmNoX3RpbWUuYyB8IDE5ICsrKysrKysrKysrKysrLS0tLS0K
IDEgZmlsZSBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQoKZGlmZiAt
LWdpdCBhL3BsYXQveGVuL3g4Ni9hcmNoX3RpbWUuYyBiL3BsYXQveGVuL3g4Ni9hcmNoX3RpbWUu
YwppbmRleCBhNGI3N2I5My4uZDM2Zjk2MzIgMTAwNjQ0Ci0tLSBhL3BsYXQveGVuL3g4Ni9hcmNo
X3RpbWUuYworKysgYi9wbGF0L3hlbi94ODYvYXJjaF90aW1lLmMKQEAgLTU4LDkgKzU4LDggQEAg
c3RydWN0IHNoYWRvd190aW1lX2luZm8gewogCXVpbnQzMl90IHZlcnNpb247CiB9OwogCi0jaWYg
MCAvKiBUT0RPICovCiBzdGF0aWMgc3RydWN0IHRpbWVzcGVjIHNoYWRvd190czsKLSNlbmRpZgor
CiBzdGF0aWMgdWludDMyX3Qgc2hhZG93X3RzX3ZlcnNpb247CiAKIHN0YXRpYyBzdHJ1Y3Qgc2hh
ZG93X3RpbWVfaW5mbyBzaGFkb3c7CkBAIC0xODQsOCArMTgzLDYgQEAgX19uc2VjIHVrcGxhdF9t
b25vdG9uaWNfY2xvY2sodm9pZCkKIAlyZXR1cm4gdGltZTsKIH0KIAotI2lmIDAgLyogVE9ETyAq
LwotCiBzdGF0aWMgdm9pZCB1cGRhdGVfd2FsbGNsb2NrKHZvaWQpCiB7CiAJc2hhcmVkX2luZm9f
dCAqcyA9IEhZUEVSVklTT1Jfc2hhcmVkX2luZm87CkBAIC0xOTgsNyArMTk1LDE5IEBAIHN0YXRp
YyB2b2lkIHVwZGF0ZV93YWxsY2xvY2sodm9pZCkKIAkJcm1iKCk7CiAJfSB3aGlsZSAoKHMtPndj
X3ZlcnNpb24gJiAxKSB8IChzaGFkb3dfdHNfdmVyc2lvbiBeIHMtPndjX3ZlcnNpb24pKTsKIH0K
LSNlbmRpZgorCitfX25zZWMgdWtwbGF0X3dhbGxfY2xvY2sodm9pZCkKK3sKKwlfX25zZWMgcmV0
ID0gdWtwbGF0X21vbm90b25pY19jbG9jaygpOworCisJaWYgKCF3Y192YWx1ZXNfdXBfdG9fZGF0
ZSgpKQorCQl1cGRhdGVfd2FsbGNsb2NrKCk7CisKKwlyZXQgKz0gdWthcmNoX3RpbWVfc2VjX3Rv
X25zZWMoKF9fbnNlYykgc2hhZG93X3RzLnR2X3NlYyk7CisJcmV0ICs9IChfX25zZWMpIHNoYWRv
d190cy50dl9uc2VjOworCisJcmV0dXJuIHJldDsKK30KIAogI2lmIDAgLyogVE9ETyAqLwogaW50
IGdldHRpbWVvZmRheShzdHJ1Y3QgdGltZXZhbCAqdHYsIHZvaWQgKnR6KQotLSAKMi4yMC4xCgoK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRl
dmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Fri Feb 22 14:15:18 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 22 Feb 2019 14:15:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gxBbi-0004hz-BL; Fri, 22 Feb 2019 14:15:18 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=aYYY=Q5=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1gxBbg-0004hp-G9
 for minios-devel@lists.xen.org; Fri, 22 Feb 2019 14:15:16 +0000
X-Inumbo-ID: 45ecfb4a-36ac-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 45ecfb4a-36ac-11e9-bc90-bc764e045a96;
 Fri, 22 Feb 2019 14:15:15 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id EA7A8104E8B;
 Fri, 22 Feb 2019 15:13:03 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id R_cy48GzukH7; Fri, 22 Feb 2019 15:13:03 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id C8463104D1D
 for <minios-devel@lists.xen.org>; Fri, 22 Feb 2019 15:13:01 +0100 (CET)
Received: from vortex.office.hd (10.1.2.30) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 22 Feb
 2019 15:13:01 +0100
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Fri, 22 Feb 2019 15:12:34 +0100
Message-ID: <20190222141236.23993-6-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20190222141236.23993-1-florian.schmidt@neclab.eu>
References: <20190222141236.23993-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.30]
Subject: [Minios-devel] [UNIKRAFT PATCH 5/7] plat: Add declaration of
 ukplat_wall_clock() to time.h
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Florian Schmidt <florian.schmidt@neclab.eu>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogRmxvcmlhbiBTY2htaWR0IDxmbG9yaWFuLnNjaG1pZHRAbmVjbGFiLmV1
PgotLS0KIGluY2x1ZGUvdWsvcGxhdC90aW1lLmggfCAxICsKIDEgZmlsZSBjaGFuZ2VkLCAxIGlu
c2VydGlvbigrKQoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWsvcGxhdC90aW1lLmggYi9pbmNsdWRl
L3VrL3BsYXQvdGltZS5oCmluZGV4IGI0MDJlYzI0Li5hZDNmZDk1NCAxMDA2NDQKLS0tIGEvaW5j
bHVkZS91ay9wbGF0L3RpbWUuaAorKysgYi9pbmNsdWRlL3VrL3BsYXQvdGltZS5oCkBAIC00Niw2
ICs0Niw3IEBAIHZvaWQgdWtwbGF0X3RpbWVfaW5pdCh2b2lkKTsKIHZvaWQgdWtwbGF0X3RpbWVf
ZmluaSh2b2lkKTsKIAogX19uc2VjIHVrcGxhdF9tb25vdG9uaWNfY2xvY2sodm9pZCk7CitfX25z
ZWMgdWtwbGF0X3dhbGxfY2xvY2sodm9pZCk7CiAKIC8qIFRpbWUgdGljayBsZW5ndGggKi8KICNk
ZWZpbmUgVUtQTEFUX1RJTUVfVElDS19OU0VDICAoVUtBUkNIX05TRUNfUEVSX1NFQyAvIENPTkZJ
R19IWikKLS0gCjIuMjAuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhl
bnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5m
by9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Fri Feb 22 14:15:20 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 22 Feb 2019 14:15:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gxBbk-0004iU-D0; Fri, 22 Feb 2019 14:15:20 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=aYYY=Q5=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1gxBbi-0004iG-MS
 for minios-devel@lists.xen.org; Fri, 22 Feb 2019 14:15:18 +0000
X-Inumbo-ID: 4771eb55-36ac-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 4771eb55-36ac-11e9-bc90-bc764e045a96;
 Fri, 22 Feb 2019 14:15:17 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 6CC03F2047;
 Fri, 22 Feb 2019 15:13:06 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id SNzgEjhlBeGA; Fri, 22 Feb 2019 15:13:06 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 3DA3BF2045
 for <minios-devel@lists.xen.org>; Fri, 22 Feb 2019 15:13:04 +0100 (CET)
Received: from vortex.office.hd (10.1.2.30) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 22 Feb
 2019 15:13:03 +0100
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Fri, 22 Feb 2019 15:12:35 +0100
Message-ID: <20190222141236.23993-7-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20190222141236.23993-1-florian.schmidt@neclab.eu>
References: <20190222141236.23993-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.30]
Subject: [Minios-devel] [UNIKRAFT PATCH 6/7] lib/nolibc: Implement
 gettimeofday()
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Florian Schmidt <florian.schmidt@neclab.eu>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogRmxvcmlhbiBTY2htaWR0IDxmbG9yaWFuLnNjaG1pZHRAbmVjbGFiLmV1
PgotLS0KIGxpYi9ub2xpYmMvZXhwb3J0c3ltcy51ayAgICAgIHwgIDMgKysrCiBsaWIvbm9saWJj
L2luY2x1ZGUvc3lzL3RpbWUuaCB8ICAxIC0KIGxpYi9ub2xpYmMvdGltZS5jICAgICAgICAgICAg
IHwgMTUgKysrKysrKysrKysrKysrCiBwbGF0L3hlbi94ODYvYXJjaF90aW1lLmMgICAgICB8IDE5
IC0tLS0tLS0tLS0tLS0tLS0tLS0KIDQgZmlsZXMgY2hhbmdlZCwgMTggaW5zZXJ0aW9ucygrKSwg
MjAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliL25vbGliYy9leHBvcnRzeW1zLnVrIGIv
bGliL25vbGliYy9leHBvcnRzeW1zLnVrCmluZGV4IGIyZWJiOGQ2Li5hMjY0NDBjOSAxMDA2NDQK
LS0tIGEvbGliL25vbGliYy9leHBvcnRzeW1zLnVrCisrKyBiL2xpYi9ub2xpYmMvZXhwb3J0c3lt
cy51awpAQCAtNzIsNiArNzIsOSBAQCBzdHJsY2F0CiAjIHRpbWUKIG5hbm9zbGVlcAogCisjIHN5
cy90aW1lCitnZXR0aW1lb2ZkYXkKKwogIyBjdHlwZQogX25vbGliY19jdHlwZQogCmRpZmYgLS1n
aXQgYS9saWIvbm9saWJjL2luY2x1ZGUvc3lzL3RpbWUuaCBiL2xpYi9ub2xpYmMvaW5jbHVkZS9z
eXMvdGltZS5oCmluZGV4IGUwOGZhODVlLi5kMmM4OTA0ZCAxMDA2NDQKLS0tIGEvbGliL25vbGli
Yy9pbmNsdWRlL3N5cy90aW1lLmgKKysrIGIvbGliL25vbGliYy9pbmNsdWRlL3N5cy90aW1lLmgK
QEAgLTUyLDcgKzUyLDYgQEAgc3RydWN0IGl0aW1lcnZhbCB7CiAJc3RydWN0IHRpbWV2YWwgaXRf
dmFsdWU7CiB9OwogCi0vKiBUT0RPOiBJbXBsZW1lbnQgKi8KIGludCBnZXR0aW1lb2ZkYXkoc3Ry
dWN0IHRpbWV2YWwgKnR2LCB2b2lkICp0eik7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0t
Z2l0IGEvbGliL25vbGliYy90aW1lLmMgYi9saWIvbm9saWJjL3RpbWUuYwppbmRleCA3OGIxYjRi
Ny4uYjE1ZDdlMGQgMTAwNjQ0Ci0tLSBhL2xpYi9ub2xpYmMvdGltZS5jCisrKyBiL2xpYi9ub2xp
YmMvdGltZS5jCkBAIC00NCw2ICs0NCw3IEBACiAjZWxzZQogI2luY2x1ZGUgPHVrL3BsYXQvbGNw
dS5oPgogI2VuZGlmCisjaW5jbHVkZSA8dWsvZXNzZW50aWFscy5oPgogCiAjaWZuZGVmIENPTkZJ
R19IQVZFX1NDSEVECiAvKiBXb3JrYXJvdW5kIHVudGlsIFVuaWtyYWZ0IGNoYW5nZXMgaW50ZXJm
YWNlIGZvciBzb21ldGhpbmcgbW9yZQpAQCAtOTAsMyArOTEsMTcgQEAgaW50IG5hbm9zbGVlcChj
b25zdCBzdHJ1Y3QgdGltZXNwZWMgKnJlcSwgc3RydWN0IHRpbWVzcGVjICpyZW0pCiAJfQogCXJl
dHVybiAwOwogfQorCitpbnQgZ2V0dGltZW9mZGF5KHN0cnVjdCB0aW1ldmFsICp0diwgdm9pZCAq
dHogX191bnVzZWQpCit7CisJX19uc2VjIG5vdyA9IHVrcGxhdF93YWxsX2Nsb2NrKCk7CisKKwlp
ZiAoIXR2KSB7CisJCWVycm5vID0gRUlOVkFMOworCQlyZXR1cm4gLTE7CisJfQorCisJdHYtPnR2
X3NlYyA9IHVrYXJjaF90aW1lX25zZWNfdG9fc2VjKG5vdyk7CisJdHYtPnR2X3VzZWMgPSB1a2Fy
Y2hfdGltZV9uc2VjX3RvX3VzZWModWthcmNoX3RpbWVfc3Vic2VjKG5vdykpOworCXJldHVybiAw
OworfQpkaWZmIC0tZ2l0IGEvcGxhdC94ZW4veDg2L2FyY2hfdGltZS5jIGIvcGxhdC94ZW4veDg2
L2FyY2hfdGltZS5jCmluZGV4IGQzNmY5NjMyLi5jNmI4ZDAyZCAxMDA2NDQKLS0tIGEvcGxhdC94
ZW4veDg2L2FyY2hfdGltZS5jCisrKyBiL3BsYXQveGVuL3g4Ni9hcmNoX3RpbWUuYwpAQCAtMjA5
LDI1ICsyMDksNiBAQCBfX25zZWMgdWtwbGF0X3dhbGxfY2xvY2sodm9pZCkKIAlyZXR1cm4gcmV0
OwogfQogCi0jaWYgMCAvKiBUT0RPICovCi1pbnQgZ2V0dGltZW9mZGF5KHN0cnVjdCB0aW1ldmFs
ICp0diwgdm9pZCAqdHopCi17Ci0JdWludDY0X3QgbnNlYyA9IG1vbm90b25pY19jbG9jaygpOwot
Ci0JaWYgKCF3Y192YWx1ZXNfdXBfdG9fZGF0ZSgpKQotCQl1cGRhdGVfd2FsbGNsb2NrKCk7Ci0K
LQluc2VjICs9IHNoYWRvd190cy50dl9uc2VjOwotCi0JdHYtPnR2X3NlYyA9IHNoYWRvd190cy50
dl9zZWM7Ci0JdHYtPnR2X3NlYyArPSBOU0VDX1RPX1NFQyhuc2VjKTsKLQl0di0+dHZfdXNlYyA9
IE5TRUNfVE9fVVNFQyhuc2VjICUgMTAwMDAwMDAwMFVMKTsKLQotCXJldHVybiAwOwotfQotI2Vu
ZGlmCi0KLQogdm9pZCB0aW1lX2Jsb2NrX3VudGlsKF9fc25zZWMgdW50aWwpCiB7CiAJVUtfQVNT
RVJUKGlycXNfZGlzYWJsZWQoKSk7Ci0tIAoyLjIwLjEKCgpfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlv
cy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3Jn
L21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Fri Feb 22 14:15:21 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 22 Feb 2019 14:15:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gxBbl-0004j0-FS; Fri, 22 Feb 2019 14:15:21 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=aYYY=Q5=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1gxBbk-0004iq-Sz
 for minios-devel@lists.xen.org; Fri, 22 Feb 2019 14:15:20 +0000
X-Inumbo-ID: 485dfe7e-36ac-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 485dfe7e-36ac-11e9-bc90-bc764e045a96;
 Fri, 22 Feb 2019 14:15:19 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id E8EE4104E8E;
 Fri, 22 Feb 2019 15:13:08 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id Gi_AIihoGPiX; Fri, 22 Feb 2019 15:13:08 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id C325F104D1D
 for <minios-devel@lists.xen.org>; Fri, 22 Feb 2019 15:13:06 +0100 (CET)
Received: from vortex.office.hd (10.1.2.30) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 22 Feb
 2019 15:13:06 +0100
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Fri, 22 Feb 2019 15:12:36 +0100
Message-ID: <20190222141236.23993-8-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20190222141236.23993-1-florian.schmidt@neclab.eu>
References: <20190222141236.23993-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.30]
Subject: [Minios-devel] [UNIKRAFT PATCH 7/7] lib/nolibc: Implement
 clock_gettime()
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Florian Schmidt <florian.schmidt@neclab.eu>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogRmxvcmlhbiBTY2htaWR0IDxmbG9yaWFuLnNjaG1pZHRAbmVjbGFiLmV1
PgotLS0KIGxpYi9ub2xpYmMvZXhwb3J0c3ltcy51ayAgICAgICAgICAgICAgICAgICAgICB8ICAx
ICsKIC4uLi9pbmNsdWRlL25vbGliYy1pbnRlcm5hbC9zaGFyZWRkZWZzLmggICAgICB8ICA1ICsr
KysKIGxpYi9ub2xpYmMvaW5jbHVkZS9zeXMvdHlwZXMuaCAgICAgICAgICAgICAgICB8ICAxICsK
IGxpYi9ub2xpYmMvaW5jbHVkZS90aW1lLmggICAgICAgICAgICAgICAgICAgICB8ICA3ICsrKysr
CiBsaWIvbm9saWJjL3RpbWUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyNiArKysr
KysrKysrKysrKysrKysrCiA1IGZpbGVzIGNoYW5nZWQsIDQwIGluc2VydGlvbnMoKykKCmRpZmYg
LS1naXQgYS9saWIvbm9saWJjL2V4cG9ydHN5bXMudWsgYi9saWIvbm9saWJjL2V4cG9ydHN5bXMu
dWsKaW5kZXggYTI2NDQwYzkuLmRkYzczYmYxIDEwMDY0NAotLS0gYS9saWIvbm9saWJjL2V4cG9y
dHN5bXMudWsKKysrIGIvbGliL25vbGliYy9leHBvcnRzeW1zLnVrCkBAIC03MSw2ICs3MSw3IEBA
IHN0cmxjYXQKIAogIyB0aW1lCiBuYW5vc2xlZXAKK2Nsb2NrX2dldHRpbWUKIAogIyBzeXMvdGlt
ZQogZ2V0dGltZW9mZGF5CmRpZmYgLS1naXQgYS9saWIvbm9saWJjL2luY2x1ZGUvbm9saWJjLWlu
dGVybmFsL3NoYXJlZGRlZnMuaCBiL2xpYi9ub2xpYmMvaW5jbHVkZS9ub2xpYmMtaW50ZXJuYWwv
c2hhcmVkZGVmcy5oCmluZGV4IDc1NzJlMmQzLi5mYjdkOTViMiAxMDA2NDQKLS0tIGEvbGliL25v
bGliYy9pbmNsdWRlL25vbGliYy1pbnRlcm5hbC9zaGFyZWRkZWZzLmgKKysrIGIvbGliL25vbGli
Yy9pbmNsdWRlL25vbGliYy1pbnRlcm5hbC9zaGFyZWRkZWZzLmgKQEAgLTkxLDYgKzkxLDExIEBA
IHN0cnVjdCB0aW1lc3BlYyB7CiAjZGVmaW5lIF9fREVGSU5FRF9zdHJ1Y3RfdGltZXNwZWMKICNl
bmRpZgogCisjaWYgKGRlZmluZWQgX19ORUVEX2Nsb2NraWRfdCAmJiAhZGVmaW5lZCBfX0RFRklO
RURfY2xvY2tpZF90KQordHlwZWRlZiBpbnQgY2xvY2tpZF90OworI2RlZmluZSBfX0RFRklORURf
Y2xvY2tpZF90CisjZW5kaWYKKwogI2lmIChkZWZpbmVkIF9fTkVFRF9tb2RlX3QgJiYgIWRlZmlu
ZWQgX19ERUZJTkVEX21vZGVfdCkKIHR5cGVkZWYgdW5zaWduZWQgbW9kZV90OwogI2RlZmluZSBf
X0RFRklORURfbW9kZV90CmRpZmYgLS1naXQgYS9saWIvbm9saWJjL2luY2x1ZGUvc3lzL3R5cGVz
LmggYi9saWIvbm9saWJjL2luY2x1ZGUvc3lzL3R5cGVzLmgKaW5kZXggN2M0M2VmM2YuLjIwYTNj
OTdkIDEwMDY0NAotLS0gYS9saWIvbm9saWJjL2luY2x1ZGUvc3lzL3R5cGVzLmgKKysrIGIvbGli
L25vbGliYy9pbmNsdWRlL3N5cy90eXBlcy5oCkBAIC00OCw2ICs0OCw3IEBAIGV4dGVybiAiQyIg
ewogI2RlZmluZSBfX05FRURfb2ZmX3QKICNkZWZpbmUgX19ORUVEX3RpbWVfdAogI2RlZmluZSBf
X05FRURfc3VzZWNvbmRzX3QKKyNkZWZpbmUgX19ORUVEX2Nsb2NraWRfdAogI2RlZmluZSBfX05F
RURfbW9kZV90CiAjZGVmaW5lIF9fTkVFRF91aWRfdAogI2RlZmluZSBfX05FRURfZ2lkX3QKZGlm
ZiAtLWdpdCBhL2xpYi9ub2xpYmMvaW5jbHVkZS90aW1lLmggYi9saWIvbm9saWJjL2luY2x1ZGUv
dGltZS5oCmluZGV4IGE2Yjk1ODViLi41MjIzOTE0YSAxMDA2NDQKLS0tIGEvbGliL25vbGliYy9p
bmNsdWRlL3RpbWUuaAorKysgYi9saWIvbm9saWJjL2luY2x1ZGUvdGltZS5oCkBAIC00NCwxNCAr
NDQsMjEgQEAgZXh0ZXJuICJDIiB7CiAjZGVmaW5lIF9fTkVFRF9OVUxMCiAjZGVmaW5lIF9fTkVF
RF90aW1lX3QKICNkZWZpbmUgX19ORUVEX3N0cnVjdF90aW1lc3BlYworI2RlZmluZSBfX05FRURf
Y2xvY2tpZF90CiAjaW5jbHVkZSA8bm9saWJjLWludGVybmFsL3NoYXJlZGRlZnMuaD4KIAorI2Rl
ZmluZSBDTE9DS19SRUFMVElNRSAgMAorI2RlZmluZSBDTE9DS19NT05PVE9OSUMgMQorCisjZGVm
aW5lIFRJTUVSX0FCU1RJTUUgMQorCiBzdHJ1Y3QgaXRpbWVyc3BlYyB7CiAJc3RydWN0IHRpbWVz
cGVjIGl0X2ludGVydmFsOwogCXN0cnVjdCB0aW1lc3BlYyBpdF92YWx1ZTsKIH07CiAKIGludCBu
YW5vc2xlZXAoY29uc3Qgc3RydWN0IHRpbWVzcGVjICpyZXEsIHN0cnVjdCB0aW1lc3BlYyAqcmVt
KTsKK2ludCBjbG9ja19nZXR0aW1lKGNsb2NraWRfdCBjbGssIHN0cnVjdCB0aW1lc3BlYyAqdHAp
OwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL2xpYi9ub2xpYmMvdGltZS5j
IGIvbGliL25vbGliYy90aW1lLmMKaW5kZXggYjE1ZDdlMGQuLjY5ZjI5MzAwIDEwMDY0NAotLS0g
YS9saWIvbm9saWJjL3RpbWUuYworKysgYi9saWIvbm9saWJjL3RpbWUuYwpAQCAtMTA1LDMgKzEw
NSwyOSBAQCBpbnQgZ2V0dGltZW9mZGF5KHN0cnVjdCB0aW1ldmFsICp0diwgdm9pZCAqdHogX191
bnVzZWQpCiAJdHYtPnR2X3VzZWMgPSB1a2FyY2hfdGltZV9uc2VjX3RvX3VzZWModWthcmNoX3Rp
bWVfc3Vic2VjKG5vdykpOwogCXJldHVybiAwOwogfQorCitpbnQgY2xvY2tfZ2V0dGltZShjbG9j
a2lkX3QgY2xrX2lkLCBzdHJ1Y3QgdGltZXNwZWMgKnRwKQoreworCV9fbnNlYyBub3c7CisKKwlp
ZiAoIXRwKSB7CisJCWVycm5vID0gRUZBVUxUOworCQlyZXR1cm4gLTE7CisJfQorCisJc3dpdGNo
IChjbGtfaWQpIHsKKwljYXNlIENMT0NLX01PTk9UT05JQzoKKwkJbm93ID0gdWtwbGF0X21vbm90
b25pY19jbG9jaygpOworCQlicmVhazsKKwljYXNlIENMT0NLX1JFQUxUSU1FOgorCQlub3cgPSB1
a3BsYXRfd2FsbF9jbG9jaygpOworCQlicmVhazsKKwlkZWZhdWx0OgorCQllcnJubyA9IEVJTlZB
TDsKKwkJcmV0dXJuIC0xOworCX0KKworCXRwLT50dl9zZWMgPSB1a2FyY2hfdGltZV9uc2VjX3Rv
X3NlYyhub3cpOworCXRwLT50dl9uc2VjID0gdWthcmNoX3RpbWVfc3Vic2VjKG5vdyk7CisJcmV0
dXJuIDA7Cit9Ci0tIAoyLjIwLjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0
cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlz
dGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Feb 25 12:38:56 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 25 Feb 2019 12:38:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gyFX5-0001BZ-P1; Mon, 25 Feb 2019 12:38:55 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=1uC+=RA=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1gyFX4-0001BQ-LK
 for minios-devel@lists.xenproject.org; Mon, 25 Feb 2019 12:38:54 +0000
X-Inumbo-ID: 4dbbf322-38fa-11e9-bc90-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 4dbbf322-38fa-11e9-bc90-bc764e045a96;
 Mon, 25 Feb 2019 12:38:51 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 95882104D93;
 Mon, 25 Feb 2019 13:38:50 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id qG-3311ysReC; Mon, 25 Feb 2019 13:38:50 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 6CD56104B19;
 Mon, 25 Feb 2019 13:38:40 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 25 Feb 2019 13:38:40
 +0100
To: Jia He <justin.he@arm.com>, <minios-devel@lists.xenproject.org>, Simon
 Kuenzer <simon.kuenzer@neclab.eu>
References: <20190222062200.26602-1-justin.he@arm.com>
 <20190222062200.26602-3-justin.he@arm.com>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <240efcf5-7f2b-f47c-b69e-33c0e07eaeac@neclab.eu>
Date: Mon, 25 Feb 2019 13:38:39 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190222062200.26602-3-justin.he@arm.com>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCHv6 02/23] plat/include: Use
 macro-ed helper to simplify ioreg_read/write for Arm64
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>, Wei Chen <wei.chen@arm.com>,
 Kaly Xin <Kaly.Xin@arm.com>, Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gSmlhIEhlLAoKV2UgaGF2ZSBpbnRyb2R1Y2VkIHNvbWUgY2hlY2twYXRjaCBlcnJvcnMv
d2FybmluZyBpbiB0aGlzIHBhdGNoIHNlcmllcy4gCldlIGhhdmUgcmVwbGFjZWQgYWxsIHRoZSB0
YWJzIHdpdGggc3BhY2VzLgoKUGxlYXNlIGZpbmQgd2FybmluZy9lcnJvcnMgaW5saW5lLgoKVGhh
bmtzICYgUmVnYXJkcwpTaGFyYW4KCk9uIDIvMjIvMTkgNzoyMSBBTSwgSmlhIEhlIHdyb3RlOgo+
IEZyb206IFdlaSBDaGVuIDx3ZWkuY2hlbkBhcm0uY29tPgo+IEFzIGRpc2N1c3NlZCBpbiBtYWls
aW5nIGxpc3QgWzFdLCB3ZSBjYW4gdXNlIG1hY3JvLWVkIGhlbHBlcnMgdG8gYXZvaWQKPiBoYXZp
bmcgdG8gd3JpdGUgNCB0aW1lcyBvZiB0aGUgc2FtZSB0aGluZ3Mgb2YgaW9yZWdfcmVhZF84LzE2
LzMyLzY0IGFuZAo+IGlvcmVnX3dyaXRlOC8xNi8zMi82NC4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBX
ZWkgQ2hlbiA8d2VpLmNoZW5AYXJtLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBKaWEgSGUgPGp1c3Rp
bi5oZUBhcm0uY29tPgo+IFJldmlld2VkLWJ5OiBTaGFyYW4gU2FudGhhbmFtIDxzaGFyYW4uc2Fu
dGhhbmFtQG5lY2xhYi5ldT4KPiAtLS0KPiAgIHBsYXQvY29tbW9uL2luY2x1ZGUvYXJtL2FybTY0
L2NwdS5oIHwgNjQgKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0KPiAgIDEgZmlsZSBjaGFu
Z2VkLCAyNSBpbnNlcnRpb25zKCspLCAzOSBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEv
cGxhdC9jb21tb24vaW5jbHVkZS9hcm0vYXJtNjQvY3B1LmggYi9wbGF0L2NvbW1vbi9pbmNsdWRl
L2FybS9hcm02NC9jcHUuaAo+IGluZGV4IDUwM2JjNjguLmMwMDlmYzggMTAwNjQ0Cj4gLS0tIGEv
cGxhdC9jb21tb24vaW5jbHVkZS9hcm0vYXJtNjQvY3B1LmgKPiArKysgYi9wbGF0L2NvbW1vbi9p
bmNsdWRlL2FybS9hcm02NC9jcHUuaAo+IEBAIC0zNCw0NSArMzQsMzEgQEAKPiAKPiAgICNpbmNs
dWRlIDxpbnR0eXBlcy5oPgo+IAo+IC1zdGF0aWMgaW5saW5lIHVpbnQ4X3QgaW9yZWdfcmVhZDgo
Y29uc3Qgdm9sYXRpbGUgdWludDhfdCAqYWRkcikKPiAtewo+IC0gICAgICAgcmV0dXJuICphZGRy
Owo+IC19Cj4gLQo+IC1zdGF0aWMgaW5saW5lIHZvaWQgaW9yZWdfd3JpdGU4KHZvbGF0aWxlIHVp
bnQ4X3QgKmFkZHIsIHVpbnQ4X3QgdmFsdWUpCj4gLXsKPiAtICAgICAgICphZGRyID0gdmFsdWU7
Cj4gLX0KPiAtCj4gLXN0YXRpYyBpbmxpbmUgdWludDE2X3QgaW9yZWdfcmVhZDE2KGNvbnN0IHZv
bGF0aWxlIHVpbnQxNl90ICphZGRyKQo+IC17Cj4gLSAgICAgICByZXR1cm4gKmFkZHI7Cj4gLX0K
PiAtCj4gLXN0YXRpYyBpbmxpbmUgdm9pZCBpb3JlZ193cml0ZTE2KHZvbGF0aWxlIHVpbnQxNl90
ICphZGRyLCB1aW50MTZfdCB2YWx1ZSkKPiAtewo+IC0gICAgICAgKmFkZHIgPSB2YWx1ZTsKPiAt
fQo+IC0KPiAtc3RhdGljIGlubGluZSB1aW50MzJfdCBpb3JlZ19yZWFkMzIoY29uc3Qgdm9sYXRp
bGUgdWludDMyX3QgKmFkZHIpCj4gLXsKPiAtICAgICAgIHJldHVybiAqYWRkcjsKPiAtfQo+IC0K
PiAtc3RhdGljIGlubGluZSB2b2lkIGlvcmVnX3dyaXRlMzIodm9sYXRpbGUgdWludDMyX3QgKmFk
ZHIsIHVpbnQzMl90IHZhbHVlKQo+IC17Cj4gLSAgICAgICAqYWRkciA9IHZhbHVlOwo+IC19Cj4g
LQo+IC1zdGF0aWMgaW5saW5lIHVpbnQ2NF90IGlvcmVnX3JlYWQ2NChjb25zdCB2b2xhdGlsZSB1
aW50NjRfdCAqYWRkcikKPiAtewo+IC0gICAgICAgcmV0dXJuICphZGRyOwo+IC19Cj4gLQo+IC1z
dGF0aWMgaW5saW5lIHZvaWQgaW9yZWdfd3JpdGU2NCh2b2xhdGlsZSB1aW50NjRfdCAqYWRkciwg
dWludDY0X3QgdmFsdWUpCj4gLXsKPiAtICAgICAgICphZGRyID0gdmFsdWU7Cj4gLX0KCgpFUlJP
UjogY29kZSBpbmRlbnQgc2hvdWxkIHVzZSB0YWJzIHdoZXJlIHBvc3NpYmxlCiM2NjogRklMRTog
cGxhdC9jb21tb24vaW5jbHVkZS9hcm0vYXJtNjQvY3B1Lmg6NDE6CisgICAgICAgICAgICAgICB7
IHJldHVybiAqYWRkcjsgfSQKPiArLyogRGVmaW5lIG1hY3JvcyB0byBhY2Nlc3MgSU8gcmVnaXN0
ZXJzICovCj4gKyNkZWZpbmUgX19JT1JFR19SRUFEKGJpdHMpIFwKPiArc3RhdGljIGlubGluZSB1
aW50IyNiaXRzIyNfdCBcCj4gKyAgICAgICBpb3JlZ19yZWFkIyNiaXRzKGNvbnN0IHZvbGF0aWxl
IHVpbnQjI2JpdHMjI190ICphZGRyKSBcCj4gKyAgICAgICAgICAgICAgIHsgcmV0dXJuICphZGRy
OyB9Cj4gKwo+ICsjZGVmaW5lIF9fSU9SRUdfV1JJVEUoYml0cykgXAo+ICtzdGF0aWMgaW5saW5l
IHZvaWQgXAo+ICsgICAgICAgaW9yZWdfd3JpdGUjI2JpdHModm9sYXRpbGUgdWludCMjYml0cyMj
X3QgKmFkZHIsIFwKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgdXNlIHRhYnMgd2hlcmUgcG9z
c2libGUKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
aW50IyNiaXRzIyNfdCB2YWx1ZSkgXAoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCB1c2UgdGFi
cyB3aGVyZSBwb3NzaWJsZQo+ICsgICAgICAgICAgICAgICB7ICphZGRyID0gdmFsdWU7IH0KPiAr
Cj4gKwoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCB1c2UgdGFicyB3aGVyZSBwb3NzaWJsZQo+
ICsjZGVmaW5lIF9fSU9SRUdfUkVBRF9BTEwoKSBfX0lPUkVHX1JFQUQoOCkgIFwKPiArICAgICAg
ICAgICAgICAgICAgICAgICAgICBfX0lPUkVHX1JFQUQoMTYpIFwKPiArICAgICAgICAgICAgICAg
ICAgICAgICAgICBfX0lPUkVHX1JFQUQoMzIpIFwKPiArICAgICAgICAgICAgICAgICAgICAgICAg
ICBfX0lPUkVHX1JFQUQoNjQpIFwKPiArCj4gKyNkZWZpbmUgX19JT1JFR19XUklURV9BTEwoKSAg
ICBfX0lPUkVHX1dSSVRFKDgpICBcCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgX19JT1JF
R19XUklURSgxNikgXAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIF9fSU9SRUdfV1JJVEUo
MzIpIFwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICBfX0lPUkVHX1dSSVRFKDY0KSBcCj4g
Kwo+ICtfX0lPUkVHX1JFQURfQUxMKCkKPiArX19JT1JFR19XUklURV9BTEwoKQo+IAo+ICAgc3Rh
dGljIGlubGluZSB2b2lkIF9pbml0X2NwdWZlYXR1cmVzKHZvaWQpCj4gICB7Cj4gLS0KPiAyLjE3
LjEKPiAKPiBJTVBPUlRBTlQgTk9USUNFOiBUaGUgY29udGVudHMgb2YgdGhpcyBlbWFpbCBhbmQg
YW55IGF0dGFjaG1lbnRzIGFyZSBjb25maWRlbnRpYWwgYW5kIG1heSBhbHNvIGJlIHByaXZpbGVn
ZWQuIElmIHlvdSBhcmUgbm90IHRoZSBpbnRlbmRlZCByZWNpcGllbnQsIHBsZWFzZSBub3RpZnkg
dGhlIHNlbmRlciBpbW1lZGlhdGVseSBhbmQgZG8gbm90IGRpc2Nsb3NlIHRoZSBjb250ZW50cyB0
byBhbnkgb3RoZXIgcGVyc29uLCB1c2UgaXQgZm9yIGFueSBwdXJwb3NlLCBvciBzdG9yZSBvciBj
b3B5IHRoZSBpbmZvcm1hdGlvbiBpbiBhbnkgbWVkaXVtLiBUaGFuayB5b3UuCj4gCgpfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFp
bGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3Rz
LnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Feb 25 12:40:18 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 25 Feb 2019 12:40:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gyFYP-0001mp-TU; Mon, 25 Feb 2019 12:40:17 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=1uC+=RA=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1gyFYP-0001mj-12
 for minios-devel@lists.xenproject.org; Mon, 25 Feb 2019 12:40:17 +0000
X-Inumbo-ID: 7fa28d82-38fa-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 7fa28d82-38fa-11e9-bc90-bc764e045a96;
 Mon, 25 Feb 2019 12:40:15 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id D4B94F2016;
 Mon, 25 Feb 2019 13:38:02 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id VjpDTMWoWx-U; Mon, 25 Feb 2019 13:38:02 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 9B1EFF2012;
 Mon, 25 Feb 2019 13:37:54 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 25 Feb 2019 13:37:54
 +0100
To: Jia He <justin.he@arm.com>, <minios-devel@lists.xenproject.org>, Simon
 Kuenzer <simon.kuenzer@neclab.eu>
References: <20190222062200.26602-1-justin.he@arm.com>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <f8caa22d-93b5-0079-0145-13f8beb1018a@neclab.eu>
Date: Mon, 25 Feb 2019 13:37:54 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190222062200.26602-1-justin.he@arm.com>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCHv6 00/23] Follow up patches for
 Arm64 support series#1/5
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>,
 Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu,
 Kaly Xin <Kaly.Xin@arm.com>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gSmlhIEhlLAoKVGhpcyBwYXRjaCBzZXJpZXMgZG9lcyBub3QgYXBwbHkgY2xlYW5seSBv
biBzdGFnaW5nLiBJdCBsb29rcyBsaWtlIHRoZXJlIAphcmUgc29tZSB3aGl0ZSBzcGFjZSBlcnJv
ciBpbiB0aGUgcGF0Y2guCgpQbGVhc2Ugbm90ZSwgeW91IG1heSBoYXZlIHRvIGFkZCAtLWlnbm9y
ZS13aGl0ZXNwYWNlIHdoaWxlIGFwcGx5aW5nIHRoaXMgCnBhdGNoIHNlcmllcy4KClRoYW5rcyAm
IFJlZ2FyZHMKU2hhcmFuCgpPbiAyLzIyLzE5IDc6MjEgQU0sIEppYSBIZSB3cm90ZToKPiBUaGlz
IHNlcmllcyBhZGRyZXNzIGZvbGxvd2luZyBjb21tZW50czoKPiAwMTogUmVtb3ZlIHRoZSBjaGVj
ayBvZiAnLS1lbmFibGUtZGVmYXVsdC1waWUnIGluIE1ha2VmaWxlLnVrLAo+IDAyOiBVc2UgbWFj
cm8tZWQgaGVscGVyIHRvIHNpbXBsaWZ5IGlvcmVnX3JlYWQvd3JpdGUsCj4gMDM6IFVzZSB0aGUg
c2FtZSBkZWNsYXJhdGlvbiBmb3IgX3RleHQgYW5kIF9lbmQsCj4gMDQ6IEFkZHJlc3MgY29tbWVu
dHMgZm9yIEQtQ2FjaGUgb3BlcmF0aW9uIGZ1bmN0aW9uLAo+IDA1OiBHZXQgdmlydHVhbCBhZGRy
ZXNzIGJpdHMgZnJvbSBpZF9hYTY0bW1mcjBfZWwxLlBBUmFuZ2UsCj4gMDY6IEVuc3VyZSBzdGFj
ayBhbGlnbm1lbnQgZm9yIGV4Y2VwdGlvbnMgZnJvbSBFTDEsCj4gMDc6IEludmFsaWRhdGUgRC1D
YWNoZSBmb3IgbW9kaWZpZWQgYXJlYSBvbmx5LAo+IDA4OiBEaXNhYmxlIEQtQ2FjaGUgYmVmb3Jl
IGRvaW5nIGFueSBjaGFuZ2UsCj4gMDk6IENhbGN1bGF0ZSBMMyB0YWJsZSBhbmQgcGFnZSB0YWJs
ZSBzaXplIGJ5IGltYWdlIHNpemUsCj4gMTA6IFJlbW92ZSBhIC1Xc3RyaW5nb3Atb3ZlcmZsb3cg
d2FybmluZyBmb3Igc3RybmNweSwKPiAxMTogUmVtb3ZlIHVzZWxlc3MgYmxhbmsgbGluZSwKPiAK
PiBTb21lIGNvbW1lbnRzIHRoYXQgaGF2ZW4ndCBiZWVuIGFkZHJlc3NlZDoKPiAwMTogQ2hlY2sg
dGhlIE1JRFIgYW5kIGF2b2lkIHRoZSBlcnJhdHVtIG9uIGFmZmVjdGVkIHBsYXRmb3JtCj4gICAg
ICAgdmlhIGFuIGFsdGVybmF0aXZlIG9yIGp1bXAgdGFibGUuIC0tIFRoaXMgZXJyZXRhIGZyYW1l
d29yawo+ICAgICAgIGlzIG5vdCBvbmx5IGZvciBBcm0gYnV0IGFsc28gZm9yIHg4Ni4gSSB0aGlu
ayB3ZSdkIGJldHRlcgo+ICAgICAgIHRvIGRpc2N1c3MgaW4gY29tbXVuaXR5Lgo+IDAyOiBFbmFi
bGUgRklGTyBzdXBwb3J0IGZvciBQTDAxMS4KPiAwMzogQ29tcGFyZSB0aGUgcG9pbnRlcnMgb2Yg
ZGlmZmVyZW50IHR5cGUgaXMgYmVoYXZpb3VyIHVuZGVmaW5lZAo+IAo+IElmIEkgZm9yZ290IGFu
eXRoaW5nIHBsZWFzZSByZW1pbmQgbWUuCj4gCj4gWW91IGNhbiBnZXQgdGhlIHdob2xlIHBhdGNo
IHNldCBieToKPiBnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL2hlamlhbmV0L3VuaWtyYWZ0
X2FybTY0LmdpdCAtYiAxc3RzZXRfdjYKPiAtLS0KPiB2NSAtPiB2NjoKPiAgICBmaXggZXJyb3Ig
b24gWDg2IHhlbiBwbGF0Lgo+ICAgIHJlYmFzZSB0aGUgY29kZXMgdG8gVW5pa3JhZnQgMC4zIElh
cGV0dXMgUmVsZWFzZQo+IHY0IC0+IHY1OiBmaXggY29tcGlsYXRpb24gZXJyb3IKPiB2MyAtPiB2
NDoKPiAgICAxLiBEcm9wIDA0IGFuZCAyNCBwYXRjaGVzIGluIHYzLiBwYXRjaCAwNCBpcyBnY2Mg
Y29tcGlsZXIKPiAgICBvcHRpbWl6YXRpb24gcmVsYXRlZCwgbm90IGEgYmxvY2tpbmcgaXNzdWUu
IFRoZSByZXNvbHV0aW9uIGlzCj4gICAgdW5kZXIgZGlzY3Vzc2lvbi4gUGF0Y2ggMjQgaXMgbm90
IGNvbmNlcm5lZCBieSBTaGFyYW4uCj4gICAgMi4gUmVzdG9yZSB4MTgseDE5IGFmdGVyIHVzaW5n
IHRoZW0uCj4gICAgMy4gRml4IElNQUdFX1JPVU5EVVBfU0hJRlQgZnJvbSAyMCB0byAyMS4KPiAg
ICA0LiBsb3RzIG9mIGNoZWNrcGF0Y2ggd2FybmluZy4KPiB2MiAtPiB2MzogUmViYXNlIHRvIHRo
ZSBsYXRlc3QgdXBzdHJlYW0gYmFzZS4KPiAKPiB2MSAtPiB2MjoKPiAgICAxLiBBZGQgVVJMIGxp
bmsgZm9yICJVc2UgbWFjcm8tZWQgaGVscGVyIHRvIHNpbXBsaWZ5IGlvcmVnX3JlYWQvd3JpdGUi
LAo+ICAgIDIuIEludmFsaWRhdGUgJiBjbGVhbiBDYWNoZSBmb3IgbWVtb3J5IHRoYXQgd291bGQg
YmUgdXNlZCwKPiAgICAzLiBJbXByb3ZlIGNvZGUgYW5kIGNvbW1pdCBjb21tZW50cyBmb3IgY2Fs
Y3VsYXRlIHBhZ2ViYWJsZSBzaXplLAo+ICAgIDQuIFVzZSBtYWNyb3MgdG8gcmVwbGFjZSBoYXJk
Y29kZSB2YWx1ZXMsCj4gICAgNS4gVXNlIGxzci9sc2wgdG8gc2ltcGxpZnkgMk1CIHJvdW5kIHVw
LAo+ICAgIDYuIERvIG9iZnVzY2F0ZXMgYXJpdGhtZXRpYyBmb3Iga2VybmVsIGltYWdlIHN5bWJv
bHMsCj4gICAgNy4gQ2xlYW4gdXAga2VybmVsIGltYWdlIHN5bWJvbHMgZm9yIEMgZmlsZXMuCj4g
Cj4gSmlhIEhlICgyMyk6Cj4gICAgYnVpbGQ6IFJlbW92ZSB0aGUgY2hlY2sgb2YgJy0tZW5hYmxl
LWRlZmF1bHQtcGllJyBpbiBNYWtlZmlsZS51awo+ICAgIHBsYXQvaW5jbHVkZTogVXNlIG1hY3Jv
LWVkIGhlbHBlciB0byBzaW1wbGlmeSBpb3JlZ19yZWFkL3dyaXRlIGZvcgo+ICAgICAgQXJtNjQK
PiAgICBwbGF0L2NvbW1vbjogTW92ZSBnbG9iYWwgdmFyaWFibGVzIGRlZmluZWQgaW4gbGluayBz
Y3JpcHRzIHRvIGEgaGVhZGVyCj4gICAgcGxhdDogQ2xlYW4gdXAga2VybmVsIGltYWdlIHN5bWJv
bHMKPiAgICBwbGF0L2NvbW1vbjogUmVtb3ZlIGVhcmx5Y2xvYmVyciBmcm9tIFNZU1JFR19SRUFE
MzIgZm9yIEFybTY0Cj4gICAgcGxhdC9jb21tb246IENsZWFuIGFuZCBpbnZhbGlkYXRlIEQtQ2Fj
aGUgb25seSB3aGVuIGJvb3QgZm9yIEFybTY0Cj4gICAgcGxhdC9jb21tb246IFVzZSBjb3JyZWN0
IGRzYiBvcGVyYXRpb24gZmxhZyBmb3IgQXJtNjQKPiAgICBwbGF0L2NvbW1vbjogQWRkIHJlZmVy
cmVkIHNvdXJjZSBjb2RlIFVSTCBmb3IgY2FjaGUgb3BlcmF0aW9uCj4gICAgcGxhdC9rdm06IENv
cnJlY3QgaW52YWxpZCBpbmRlbnQgY2hhcmFjdGVyIGZvciBBcm02NAo+ICAgIHBsYXQva3ZtOiBH
ZXQgVklSVF9CSVRTIGZyb20gaWRfYWE2NG1tZnIwX2VsMS5QQVJhbmdlIGZvciBBcm02NAo+ICAg
IGFyY2gvaW5jbHVkZTogQWRkIGEgX3JlZ3MgbWVtYmVyIHRvIHNhdmUgb3JpZ2lhbCBzdGFjayBw
b2ludGVyCj4gICAgcGxhdC9rdm06IEFkZCBfX1RSQVBfU1RBQ0tfU0laRSBmb3Igc3RhY2sgcG9p
bnRlciB3aGlsZSBleGl0aW5nIHRyYXAKPiAgICBwbGF0L2t2bTogUmVtb3ZlIHJlZHVuZGFudCBz
cGFjZSB3aGlsZSBlbnRlcmluZyB0cmFwIGZvciBBcm0KPiAgICBwbGF0L2t2bTogRm9yY2UgYWxp
Z24gdGhlIHN0YWNrIHBvaW50ZXIgZm9yIEFybTY0IEVMMSBleGNlcHRpb25zCj4gICAgcGxhdC9r
dm06IFJlbmFtZSBwYWdldGFibGUuUyB0byBwYWdldGFibGU2NC5TIGZvciBBcm02NAo+ICAgIHBs
YXQva3ZtOiBJbnZhbGlkYXRlIEQtQ2FjaGUgdGhhdCBtYXkgaGF2ZSBiZWVuIG1vZGlmaWVkIGZv
ciBBcm02NAo+ICAgIHBsYXQva3ZtOiBhcm02NDogQ2xlYXIgcGFnZXRhYmxlIG1lbW9yeSB3aXRo
IGJvb3Qgc3RhY2sKPiAgICBwbGF0L2t2bTogYXJtNjQ6IENhbGN1bGF0ZSBwYWdldGFibGUgc2l6
ZSBkeW5hbWljYWxseSBieSBpbWFnZSBzaXplCj4gICAgcGxhdC9rdm06IGFybTY0OiBCdWlsZCBM
MyBwYWdlIHRhYmxlIGZvciByYW5nZSBncmVhdGVyIHRoYW4gMk1CCj4gICAgcGxhdC9rdm06IGFy
bTY0OiBTdXBwb3J0IGJ1aWxkIEwzIHRhYmxlIGZvciBsYXJnZSBpbWFnZSBzaXplCj4gICAgcGxh
dC9rdm06IGFybTY0OiBSZW1vdmUgbmVlZGxlc3Mgc2VtaWNvbG9ucyBpbiBhc3NlbWJseQo+ICAg
IHBsYXQva3ZtOiBhcm02NDogRW5zdXJlIHRoZXJlIGlzIG5vIHN0YWxsIGRhdGEgaW4gY2FjaGUg
d2hlbiBib290Cj4gICAgcGxhdC9rdm06IGFybTY0OiBSZW1vdmUgc3VwZXJmbHVvdXMgYmxhbmsg
bGluZQo+IAo+ICAgTWFrZWZpbGUudWsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
ICAgOCArLQo+ICAgYXJjaC9hcm0vYXJtNjQvaW5jbHVkZS91ay9hc20vbGNwdS5oICAgICAgICB8
ICAxNiArKy0KPiAgIHBsYXQvY29tbW9uL2FybS9jYWNoZTY0LlMgICAgICAgICAgICAgICAgICAg
fCAgMzEgKystLS0tCj4gICBwbGF0L2NvbW1vbi9pbmNsdWRlL2FybS9hcm02NC9jcHUuaCAgICAg
ICAgIHwgIDU4ICsrKystLS0tLS0KPiAgIHBsYXQvY29tbW9uL2luY2x1ZGUvYXJtL2FybTY0L2Nw
dV9kZWZzLmggICAgfCAgMTYgKystCj4gICBwbGF0L2NvbW1vbi9pbmNsdWRlL3NlY3Rpb25zLmgg
ICAgICAgICAgICAgIHwgMTEwICsrKysrKysrKysrKysrKysrKysKPiAgIHBsYXQva3ZtL01ha2Vm
aWxlLnVrICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KPiAgIHBsYXQva3ZtL2FybS9l
bnRyeTY0LlMgICAgICAgICAgICAgICAgICAgICAgfCAgNzcgKysrKysrKysrLS0tLQo+ICAgcGxh
dC9rdm0vYXJtL2V4Y2VwdGlvbnMuUyAgICAgICAgICAgICAgICAgICB8ICA3MyArKysrKysrKysr
LS0tCj4gICBwbGF0L2t2bS9hcm0ve3BhZ2V0YWJsZS5TID0+IHBhZ2V0YWJsZTY0LlN9IHwgMTE1
ICsrKysrKysrKysrKystLS0tLS0tCj4gICBwbGF0L2t2bS9hcm0vc2V0dXAuYyAgICAgICAgICAg
ICAgICAgICAgICAgIHwgIDEyICstCj4gICBwbGF0L2t2bS9pbmNsdWRlL2t2bS1hcm0vYXJtNjQv
bW0uaCAgICAgICAgIHwgIDE0ICsrLQo+ICAgcGxhdC9rdm0vbWVtb3J5LmMgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAyMyArKy0tCj4gICBwbGF0L2t2bS94ODYvc2V0dXAuYyAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICA2ICstCj4gICBwbGF0L3hlbi9hcm0vc2V0dXAuYyAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICA2ICstCj4gICBwbGF0L3hlbi9pbmNsdWRlL3hlbi1hcm0vbW0u
aCAgICAgICAgICAgICAgIHwgICAzICstCj4gICBwbGF0L3hlbi9pbmNsdWRlL3hlbi14ODYvbW0u
aCAgICAgICAgICAgICAgIHwgIDIxICsrLS0KPiAgIHBsYXQveGVuL21lbW9yeS5jICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgMjIgKystLQo+ICAgcGxhdC94ZW4veDg2L21tLmMgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAxNyArKy0KPiAgIHBsYXQveGVuL3g4Ni9zZXR1cC5jICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KPiAgIDIwIGZpbGVzIGNoYW5nZWQsIDQxOSBp
bnNlcnRpb25zKCspLCAyMTMgZGVsZXRpb25zKC0pCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgcGxh
dC9jb21tb24vaW5jbHVkZS9zZWN0aW9ucy5oCj4gICByZW5hbWUgcGxhdC9rdm0vYXJtL3twYWdl
dGFibGUuUyA9PiBwYWdldGFibGU2NC5TfSAoODQlKQo+IAo+IC0tCj4gMi4xNy4xCj4gCj4gSU1Q
T1JUQU5UIE5PVElDRTogVGhlIGNvbnRlbnRzIG9mIHRoaXMgZW1haWwgYW5kIGFueSBhdHRhY2ht
ZW50cyBhcmUgY29uZmlkZW50aWFsIGFuZCBtYXkgYWxzbyBiZSBwcml2aWxlZ2VkLiBJZiB5b3Ug
YXJlIG5vdCB0aGUgaW50ZW5kZWQgcmVjaXBpZW50LCBwbGVhc2Ugbm90aWZ5IHRoZSBzZW5kZXIg
aW1tZWRpYXRlbHkgYW5kIGRvIG5vdCBkaXNjbG9zZSB0aGUgY29udGVudHMgdG8gYW55IG90aGVy
IHBlcnNvbiwgdXNlIGl0IGZvciBhbnkgcHVycG9zZSwgb3Igc3RvcmUgb3IgY29weSB0aGUgaW5m
b3JtYXRpb24gaW4gYW55IG1lZGl1bS4gVGhhbmsgeW91Lgo+IAoKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApN
aW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0
Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Feb 25 18:36:37 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 25 Feb 2019 18:36:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gyL7D-0001G7-Fp; Mon, 25 Feb 2019 18:36:35 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=QGuB=RA=gmail.com=lars.kurth.xen@srs-us1.protection.inumbo.net>)
 id 1gyL7C-0001Fm-Cv
 for minios-devel@lists.xenproject.org; Mon, 25 Feb 2019 18:36:34 +0000
X-Inumbo-ID: 45c9e62a-392c-11e9-bc90-bc764e045a96
Received: from mail-wm1-x32e.google.com (unknown [2a00:1450:4864:20::32e])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 45c9e62a-392c-11e9-bc90-bc764e045a96;
 Mon, 25 Feb 2019 18:36:33 +0000 (UTC)
Received: by mail-wm1-x32e.google.com with SMTP id x10so185400wmg.2;
 Mon, 25 Feb 2019 10:36:32 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:mime-version:subject:in-reply-to:date:cc
 :content-transfer-encoding:message-id:references:to;
 bh=cUOfr9Fd/oN9KA1+BEERXq/jxQ/DcAFqpymhK4kg2Ik=;
 b=GhITHCKUyeLrgB72IPdX64UzG9IXTBw5aMv0/nFjg9fGBGpqDZTbJGNA40gUz1Wz7P
 yL4n4GhL+XApRAPJikosLCh0/UTKI59pqeyitG9pT9saS/SR1nECRkmYhyeHGbeeHMWE
 1dccE9Z7jufuff3VhHFs5LbZGY+YKuuJNkr0O+8/fcaOBiZQ0P/Gp69NWIasJ8D9Thcm
 3Xl+bWKwFKPsfgfSxCl2GfGT8GMmxRCMR8UNNJ7hffugp7pHLkH8Esajerb/tW3nwiEI
 TplNjWkcZz0Sobp/NJM1w6BqRI7zglzBVZ8CPmovk35O46iD6D5ClU/fUN4JAtlYHets
 pDlQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:mime-version:subject:in-reply-to:date:cc
 :content-transfer-encoding:message-id:references:to;
 bh=cUOfr9Fd/oN9KA1+BEERXq/jxQ/DcAFqpymhK4kg2Ik=;
 b=jVQ6oKq2qMXcUJkrRHdzv7zSBM9WwByrg2hwaj1rzQg7jENISmMJgz3TpXQZoL/+ck
 iwUBMTwo4P/yfIANqLxf4xRPdn52o7QkyhGVbftx4tvLoYCenxFMNTeGQDoLcLylaTF6
 9wwFleULgkYJX5qGaoXGp5l2sZt1YQVNz1UtmNcH8exAApg39dTWNOltIDpw7a80a9P1
 1eZlKCj5c5j28kjhdSwZSu4ehmCqrgeuogtBLvk1qg6iUyQ4AepqNbyuvx8IRM4DEYqh
 utadN15PI6AAZ2oK2yWDZFZKtdosMfUXQuoBiG8CtPZxn4UdG7iswhUvAdzB/BmQyh5S
 r5LQ==
X-Gm-Message-State: AHQUAuYSeqnJXzS7I/3OR7Y7jaZbLoDsrhOvN27IWXrlXUbfdNGKDsKe
 2sRbiqmt7JAHxHkrPFrhToQwst/vB9k=
X-Google-Smtp-Source: AHgI3IYbmsIAjWOxn0i0bV893p3hbpGgMvSScSmmLY0QEZDhKJ5EOHCPDEoPw+cnyFO/0tsIkOvHgg==
X-Received: by 2002:a05:600c:224c:: with SMTP id
 a12mr105180wmm.103.1551119791515; 
 Mon, 25 Feb 2019 10:36:31 -0800 (PST)
Received: from ?IPv6:2a02:c7f:ac18:da00:d536:d55f:bf66:bb7f?
 ([2a02:c7f:ac18:da00:d536:d55f:bf66:bb7f])
 by smtp.gmail.com with ESMTPSA id 2sm10350591wrg.89.2019.02.25.10.36.30
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Mon, 25 Feb 2019 10:36:30 -0800 (PST)
From: Lars Kurth <lars.kurth.xen@gmail.com>
X-Google-Original-From: Lars Kurth <lars.kurth@xenproject.org>
Mime-Version: 1.0 (Mac OS X Mail 11.5 \(3445.9.1\))
In-Reply-To: <25047BD8-F5B6-4F2A-9F4E-002BF51F5C6B@xenproject.org>
Date: Mon, 25 Feb 2019 18:36:29 +0000
Message-Id: <6B097DCF-C8D2-49A0-9ED0-F1369752D9D5@xenproject.org>
References: <25047BD8-F5B6-4F2A-9F4E-002BF51F5C6B@xenproject.org>
To: xen-devel <xen-devel@lists.xenproject.org>,
 mirageos-devel@lists.xenproject.org,
 Minios-devel <minios-devel@lists.xenproject.org>,
 Committers <committers@xenproject.org>
X-Mailer: Apple Mail (2.3445.9.1)
Subject: Re: [Minios-devel] Preparing for Xen Project GSoC applications :
 Deadline Feb 6
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "Felipe Huici <Felipe. Huici@neclab. eu>" <felipe.huici@neclab.eu>,
 Juergen Gross <jgross@suse.com>, Stefano Stabellini <sstabellini@kernel.org>,
 Wei Liu <Wei.Liu2@citrix.com>, George Dunlap <george.dunlap@eu.citrix.com>,
 Ian Jackson <ian.jackson@eu.citrix.com>, Julien Grall <julien.grall@arm.com>,
 Paul Durrant <paul.durrant@citrix.com>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>, mindy@somerandomidiot.com,
 Roger Pau Monne <roger.pau@citrix.com>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGkgYWxsOgoKYSBxdWljayBub3RlIHRoZSB3ZSBoYXZlICpub3QqIGJlZW4gYWNjZXB0ZWQgaW50
byBHU29DIHRoaXMgeWVhciAodGhlIGN1cnJlbnQgYWNjZXB0YW5jZSByYXRlIHNlZW1zIHRvIGJl
IHRoYXQgcHJvamVjdHMgZ2V0IEdTT0Mgc2xvdHMgZXZlcnkgMyB5ZWFycykuIEEgYmlnIHRoYW5r
IHlvdSB0byB0aG9zZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhlIHByb2plY3QgbGlzdC4gCgpUaGlz
IGRvZXMgbm90IG1lYW4gdGhhdCB0aGVyZSB3b24ndCBiZSBYZW4gcmVsYXRlZCBwcm9qZWN0cy4g
VGhlcmUgYXJlIGEgbnVtYmVyIG9mIFhlbiByZWxhdGVkIHByb2plY3RzIGluIGEgbnVtYmVyIG9m
IG90aGVyIGNvbW11bml0aWVzLiBPbmNlIHRoZSBmdWxsIGxpc3Qgb2YgYWNjZXB0ZWQgb3JnYW5p
c2F0aW9ucyBpcyBhdmFpbGFibGUsIEkgd2lsbCBjb2xsYXRlIGEgbGlzdCBhbmQgZ2V0IGJhY2sg
dG8geW91CgpCZXN0IFJlZ2FyZHMKTGFycwoKPiBPbiAxNSBKYW4gMjAxOSwgYXQgMTM6MzMsIExh
cnMgS3VydGggPGxhcnMua3VydGhAeGVucHJvamVjdC5vcmc+IHdyb3RlOgo+IAo+IEhpIGFsbCwg
Cj4gCj4gSSB3aWxsIGJlIGFwcGx5aW5nIGFzIGEgbWVudG9yaW5nIG9yZ2FuaXNhdGlvbiBmb3Ig
R1NvQyBhZ2FpbiB0aGlzIHllYXI6IHRoZSBhcHBsaWNhdGlvbiBkZWFkbGluZSBpcyBGZWIgNiBh
bmQgYnkgdGhlbiB3ZSBuZWVkIHRvIGhhdmUgaHR0cHM6Ly93aWtpLnhlbnByb2plY3Qub3JnL3dp
a2kvT3V0cmVhY2hfUHJvZ3JhbV9Qcm9qZWN0cyBpbiBvcmRlci4gR2l2ZW4gdGhhdCB3ZSBkaWRu
J3QgZ2V0IGluIGxhc3QgeWVhciwgdGhlcmUgaXMgYSA1MC81MCBjaGFuY2Ugd2UgZ2V0IGluIHRo
aXMgeWVhci4KPiAKPiBFdmVyeW9uZSBvbiB0aGUgQ0MgbGlzdCBoYXMgcHJvamVjdHMgbGlzdGVk
IG9uIGh0dHBzOi8vd2lraS54ZW5wcm9qZWN0Lm9yZy93aWtpL091dHJlYWNoX1Byb2dyYW1fUHJv
amVjdHMKPiAKPiBPdXIgcHJvamVjdCBsaXN0IGlzIGEgbGl0dGxlIG9sZCBhbmQgc3RhbGUgYW5k
IHRoYXQgc2hvd3M6IHdlIGRvIG5lZWQgdG8gYnJpbmcgdGhpcyB1cC10by1kYXRlIGFuZCBmcmVz
aGVuIGl0IHVwIHdpdGggbmV3IHByb2plY3RzLiBJIGJlbGlldmUgdGhhdCB0aGUgTWluaS1PUyBh
bmQgVW5pa3JhZnQgcHJvamVjdHMgbmVlZCBsb29raW5nIGF0LiBBbmQgd2UgbWF5IGhhdmUgc29t
ZSBuZXcgc2Vuc2libGUgcHJvamVjdHMgaW4gdGhlIEh5cGVydmlzb3IgaXRzZWxmLiBNaW5keSBh
bHJlYWR5IGFncmVlZCB0byBnbyBvdmVyIHRoZSBNaXJhZ2UgT1MgbGlzdC4KPiAKPiBJZiB5b3Ug
d2FudCB0byB3aXRoZHJhdyB5b3VyIHByb2plY3Q6IHBsZWFzZSBsZXQgbWUga25vdyBhbmQgSSBk
ZWxldGUgaXQ6IGJ1dCBsZXQgbWUga25vdyBXSFkgeW91IHdhbnQgdG8gd2l0aGRyYXcuIEUuZy4g
aXMgaXQgY29tcGxldGUKPiAKPiBARG91ZywgQENvbWl0dGVycwo+IFJlIGh0dHBzOi8vd2lraS54
ZW5wcm9qZWN0Lm9yZy93aWtpL091dHJlYWNoX1Byb2dyYW1fUHJvamVjdHMjQ29kZV9TdGFuZGFy
ZHNfQ2hlY2tpbmdfdXNpbmdfY2xhbmctZm9ybWF0Cj4gR2l2ZW4gdGhhdCB0aGVyZSBoYXMgYmVl
biBzb21lIHdvcmsgb24gY2xhbmctZm9ybWF0IGJ5IEVQQU0sIHdoaWNoIG5vLW9uZSBoYXMgbG9v
a2VkIGF0IEkgYW0gdGVtcHRlZCB0byB0aHJvdyB0aGlzIG91dCBvciByZS1kbyB0aGUgcHJvamVj
dC4gQWthLCBkaWUgYSBuZXh0IHBoYXNlIHdoaWNoIGluY2x1ZGVzIGludGVncmF0aW5nIHRoZSB0
b29sIGludG8gb3VyIHdvcmtmbG93LiBCdXQgdGhhdCBtYXkgYmUgdG9vIGhhcmQKPiBBbnkgdmll
d3M/Cj4gCj4gUmVnYXJkcwo+IExhcnMKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBs
aXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4v
bGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Feb 26 01:32:59 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 26 Feb 2019 01:32:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gyRc9-0004Ls-73; Tue, 26 Feb 2019 01:32:57 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=r4Vo=RB=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1gyRc8-0004Ln-98
 for minios-devel@lists.xenproject.org; Tue, 26 Feb 2019 01:32:56 +0000
X-Inumbo-ID: 6f323b54-3966-11e9-bc90-bc764e045a96
Received: from EUR03-AM5-obe.outbound.protection.outlook.com (unknown
 [2a01:111:f400:fe08::60d])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 6f323b54-3966-11e9-bc90-bc764e045a96;
 Tue, 26 Feb 2019 01:32:53 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; 
 s=selector1-arm-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=/01fWZd4z7eKfciURpnsyIghd1fn9AFV3R3KH1zsFfc=;
 b=rV5UV+ag7V6HqAuIgouaISpiHlGIspsYYYSdxThWkbQ7qc/6rlroQOp6N9LnQOFOMrHMXMTJEVz382RHeWCUCh3imvz20EG5MOnTzhvGaliCJ4WKdcfBA8CyeYLYb39YnedreQuqpFBEE/9vg14A+EIXhpPqko5klLbKrZJirbc=
Received: from DB7PR08MB3082.eurprd08.prod.outlook.com (52.134.110.24) by
 DB7PR08MB3883.eurprd08.prod.outlook.com (20.178.46.17) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.1643.19; Tue, 26 Feb 2019 01:32:51 +0000
Received: from DB7PR08MB3082.eurprd08.prod.outlook.com
 ([fe80::99d4:808b:c303:ce65]) by DB7PR08MB3082.eurprd08.prod.outlook.com
 ([fe80::99d4:808b:c303:ce65%6]) with mapi id 15.20.1643.019; Tue, 26 Feb 2019
 01:32:51 +0000
From: "Justin He (Arm Technology China)" <Justin.He@arm.com>
To: Sharan Santhanam <sharan.santhanam@neclab.eu>,
 "minios-devel@lists.xenproject.org" <minios-devel@lists.xenproject.org>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>
Thread-Topic: [UNIKRAFT PATCHv6 00/23] Follow up patches for Arm64 support
 series#1/5
Thread-Index: AQHUynbxdGXFI2Nn/kWf3iHV++f0o6XweO0AgADYLAA=
Date: Tue, 26 Feb 2019 01:32:51 +0000
Message-ID: <DB7PR08MB308244759EC960692DAD3D8CF77B0@DB7PR08MB3082.eurprd08.prod.outlook.com>
References: <20190222062200.26602-1-justin.he@arm.com>
 <f8caa22d-93b5-0079-0145-13f8beb1018a@neclab.eu>
In-Reply-To: <f8caa22d-93b5-0079-0145-13f8beb1018a@neclab.eu>
Accept-Language: en-US, zh-CN
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=Justin.He@arm.com; 
x-originating-ip: [113.29.88.7]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 244a6737-b74e-45e7-4e03-08d69b8a52b8
x-ms-office365-filtering-ht: Tenant
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(7168020)(4627221)(201703031133081)(201702281549075)(8990200)(5600127)(711020)(4605104)(4618075)(2017052603328)(7153060)(7193020);
 SRVR:DB7PR08MB3883; 
x-ms-traffictypediagnostic: DB7PR08MB3883:
x-ms-exchange-purlcount: 1
x-microsoft-exchange-diagnostics: 1; DB7PR08MB3883;
 20:0OK5qjcpJADneCU0aYz51+fkIvzNR9aXekJB2UxVRTJJR/kQUSB0+AuuDjvWdhgO5jDYlEU9dQk2U3VomAevz7xjA+QCsdDbDv68u/YXyhKG48C12f1NA5HHsBEkjsgHmzGJ0JLQ6B4eZR2RqdfvPGikPNiv2/0ZCdt4fFcy8Zc=
x-microsoft-antispam-prvs: <DB7PR08MB3883A1BABF8ECCC3269990B0F77B0@DB7PR08MB3883.eurprd08.prod.outlook.com>
x-forefront-prvs: 096029FF66
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(366004)(396003)(136003)(376002)(39860400002)(346002)(13464003)(189003)(40434004)(199004)(76176011)(186003)(55016002)(55236004)(33656002)(53546011)(102836004)(2501003)(6506007)(26005)(66066001)(14454004)(5660300002)(6436002)(478600001)(229853002)(52536013)(71190400001)(71200400001)(7696005)(72206003)(99286004)(966005)(74316002)(68736007)(305945005)(8936002)(7736002)(2906002)(54906003)(110136005)(86362001)(81156014)(81166006)(8676002)(316002)(4326008)(476003)(11346002)(446003)(6246003)(25786009)(106356001)(53936002)(105586002)(5024004)(486006)(9686003)(256004)(6306002)(14444005)(97736004)(6116002)(3846002)(17413003);
 DIR:OUT; SFP:1101; SCL:1; SRVR:DB7PR08MB3883;
 H:DB7PR08MB3082.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:1; 
received-spf: None (protection.outlook.com: arm.com does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: U/FdsjcMURP/zRQP3P1vcO2eISUuWsvPiVDATcLd0ONGaaN3WFul2ORhAFVRCc/iPOCWV5QNYPCgKxrvWwZLYkWpvA2Lq6dgcDSzwGjmJuaUctO/lgdXbPJEYaRTps3zYq84GQTvNAEuGYauIX+wzQAKS1fs2XxoxZQxnCS16cGs2K9ciqHg/SN0diktG7j5dthE1prJY0OF3rayckhCC69vZ2+h80O7tBQeLe/ENFpu5++FSkRL99OENKdWsZxbRcBVdgU9fwOUUCVfgV0Y8MsGN5aQsjEnx3PPeejGVVxuvFNyM+mRkoDyukV0aqn8cT5BIo9/vjcXGvkaMmPlPBXPR664247fu4kNAfMQKvaDpiB1rvC3kZKQ4k5BdPwVTOwgiIHe/ROzpcAbGhICZ+Yv3xq5+4Lrkr2zidf2bfM=
MIME-Version: 1.0
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 244a6737-b74e-45e7-4e03-08d69b8a52b8
X-MS-Exchange-CrossTenant-originalarrivaltime: 26 Feb 2019 01:32:51.3955 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR08MB3883
Subject: Re: [Minios-devel] [UNIKRAFT PATCHv6 00/23] Follow up patches for
 Arm64 support series#1/5
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>,
 Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <Julien.Grall@arm.com>,
 "yuri.volchkov@neclab.eu" <yuri.volchkov@neclab.eu>, "Kaly Xin \(Arm
 Technology China\)" <Kaly.Xin@arm.com>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGkgU2hhcmFuDQpTdXJlLCBJIHdpbGwgY2hlY2sgdGhlIGNvcnJlc3BvbmRpbmcgd2FybmluZy9l
cnJvciBhc2FwLg0KQ2hlZXJzLA0KSnVzdGluIChKaWEgSGUpDQoNCj4gLS0tLS1PcmlnaW5hbCBN
ZXNzYWdlLS0tLS0NCj4gRnJvbTogU2hhcmFuIFNhbnRoYW5hbSA8c2hhcmFuLnNhbnRoYW5hbUBu
ZWNsYWIuZXU+DQo+IFNlbnQ6IDIwMTnlubQy5pyIMjXml6UgMjA6MzgNCj4gVG86IEp1c3RpbiBI
ZSAoQXJtIFRlY2hub2xvZ3kgQ2hpbmEpIDxKdXN0aW4uSGVAYXJtLmNvbT47IG1pbmlvcy0NCj4g
ZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmc7IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJA
bmVjbGFiLmV1Pg0KPiBDYzogRmxvcmlhbiBTY2htaWR0IDxmbG9yaWFuLnNjaG1pZHRAbmVjbGFi
LmV1PjsgRmVsaXBlIEh1aWNpDQo+IDxmZWxpcGUuaHVpY2lAbmVjbGFiLmV1PjsgSnVsaWVuIEdy
YWxsIDxKdWxpZW4uR3JhbGxAYXJtLmNvbT47DQo+IHl1cmkudm9sY2hrb3ZAbmVjbGFiLmV1OyBL
YWx5IFhpbiAoQXJtIFRlY2hub2xvZ3kgQ2hpbmEpIDxLYWx5LlhpbkBhcm0uY29tPg0KPiBTdWJq
ZWN0OiBSZTogW1VOSUtSQUZUIFBBVENIdjYgMDAvMjNdIEZvbGxvdyB1cCBwYXRjaGVzIGZvciBB
cm02NCBzdXBwb3J0DQo+IHNlcmllcyMxLzUNCj4NCj4gSGVsbG8gSmlhIEhlLA0KPg0KPiBUaGlz
IHBhdGNoIHNlcmllcyBkb2VzIG5vdCBhcHBseSBjbGVhbmx5IG9uIHN0YWdpbmcuIEl0IGxvb2tz
IGxpa2UgdGhlcmUNCj4gYXJlIHNvbWUgd2hpdGUgc3BhY2UgZXJyb3IgaW4gdGhlIHBhdGNoLg0K
Pg0KPiBQbGVhc2Ugbm90ZSwgeW91IG1heSBoYXZlIHRvIGFkZCAtLWlnbm9yZS13aGl0ZXNwYWNl
IHdoaWxlIGFwcGx5aW5nIHRoaXMNCj4gcGF0Y2ggc2VyaWVzLg0KPg0KPiBUaGFua3MgJiBSZWdh
cmRzDQo+IFNoYXJhbg0KPg0KPiBPbiAyLzIyLzE5IDc6MjEgQU0sIEppYSBIZSB3cm90ZToNCj4g
PiBUaGlzIHNlcmllcyBhZGRyZXNzIGZvbGxvd2luZyBjb21tZW50czoNCj4gPiAwMTogUmVtb3Zl
IHRoZSBjaGVjayBvZiAnLS1lbmFibGUtZGVmYXVsdC1waWUnIGluIE1ha2VmaWxlLnVrLA0KPiA+
IDAyOiBVc2UgbWFjcm8tZWQgaGVscGVyIHRvIHNpbXBsaWZ5IGlvcmVnX3JlYWQvd3JpdGUsDQo+
ID4gMDM6IFVzZSB0aGUgc2FtZSBkZWNsYXJhdGlvbiBmb3IgX3RleHQgYW5kIF9lbmQsDQo+ID4g
MDQ6IEFkZHJlc3MgY29tbWVudHMgZm9yIEQtQ2FjaGUgb3BlcmF0aW9uIGZ1bmN0aW9uLA0KPiA+
IDA1OiBHZXQgdmlydHVhbCBhZGRyZXNzIGJpdHMgZnJvbSBpZF9hYTY0bW1mcjBfZWwxLlBBUmFu
Z2UsDQo+ID4gMDY6IEVuc3VyZSBzdGFjayBhbGlnbm1lbnQgZm9yIGV4Y2VwdGlvbnMgZnJvbSBF
TDEsDQo+ID4gMDc6IEludmFsaWRhdGUgRC1DYWNoZSBmb3IgbW9kaWZpZWQgYXJlYSBvbmx5LA0K
PiA+IDA4OiBEaXNhYmxlIEQtQ2FjaGUgYmVmb3JlIGRvaW5nIGFueSBjaGFuZ2UsDQo+ID4gMDk6
IENhbGN1bGF0ZSBMMyB0YWJsZSBhbmQgcGFnZSB0YWJsZSBzaXplIGJ5IGltYWdlIHNpemUsDQo+
ID4gMTA6IFJlbW92ZSBhIC1Xc3RyaW5nb3Atb3ZlcmZsb3cgd2FybmluZyBmb3Igc3RybmNweSwN
Cj4gPiAxMTogUmVtb3ZlIHVzZWxlc3MgYmxhbmsgbGluZSwNCj4gPg0KPiA+IFNvbWUgY29tbWVu
dHMgdGhhdCBoYXZlbid0IGJlZW4gYWRkcmVzc2VkOg0KPiA+IDAxOiBDaGVjayB0aGUgTUlEUiBh
bmQgYXZvaWQgdGhlIGVycmF0dW0gb24gYWZmZWN0ZWQgcGxhdGZvcm0NCj4gPiAgICAgICB2aWEg
YW4gYWx0ZXJuYXRpdmUgb3IganVtcCB0YWJsZS4gLS0gVGhpcyBlcnJldGEgZnJhbWV3b3JrDQo+
ID4gICAgICAgaXMgbm90IG9ubHkgZm9yIEFybSBidXQgYWxzbyBmb3IgeDg2LiBJIHRoaW5rIHdl
J2QgYmV0dGVyDQo+ID4gICAgICAgdG8gZGlzY3VzcyBpbiBjb21tdW5pdHkuDQo+ID4gMDI6IEVu
YWJsZSBGSUZPIHN1cHBvcnQgZm9yIFBMMDExLg0KPiA+IDAzOiBDb21wYXJlIHRoZSBwb2ludGVy
cyBvZiBkaWZmZXJlbnQgdHlwZSBpcyBiZWhhdmlvdXIgdW5kZWZpbmVkDQo+ID4NCj4gPiBJZiBJ
IGZvcmdvdCBhbnl0aGluZyBwbGVhc2UgcmVtaW5kIG1lLg0KPiA+DQo+ID4gWW91IGNhbiBnZXQg
dGhlIHdob2xlIHBhdGNoIHNldCBieToNCj4gPiBnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29t
L2hlamlhbmV0L3VuaWtyYWZ0X2FybTY0LmdpdCAtYiAxc3RzZXRfdjYNCj4gPiAtLS0NCj4gPiB2
NSAtPiB2NjoNCj4gPiAgICBmaXggZXJyb3Igb24gWDg2IHhlbiBwbGF0Lg0KPiA+ICAgIHJlYmFz
ZSB0aGUgY29kZXMgdG8gVW5pa3JhZnQgMC4zIElhcGV0dXMgUmVsZWFzZQ0KPiA+IHY0IC0+IHY1
OiBmaXggY29tcGlsYXRpb24gZXJyb3INCj4gPiB2MyAtPiB2NDoNCj4gPiAgICAxLiBEcm9wIDA0
IGFuZCAyNCBwYXRjaGVzIGluIHYzLiBwYXRjaCAwNCBpcyBnY2MgY29tcGlsZXINCj4gPiAgICBv
cHRpbWl6YXRpb24gcmVsYXRlZCwgbm90IGEgYmxvY2tpbmcgaXNzdWUuIFRoZSByZXNvbHV0aW9u
IGlzDQo+ID4gICAgdW5kZXIgZGlzY3Vzc2lvbi4gUGF0Y2ggMjQgaXMgbm90IGNvbmNlcm5lZCBi
eSBTaGFyYW4uDQo+ID4gICAgMi4gUmVzdG9yZSB4MTgseDE5IGFmdGVyIHVzaW5nIHRoZW0uDQo+
ID4gICAgMy4gRml4IElNQUdFX1JPVU5EVVBfU0hJRlQgZnJvbSAyMCB0byAyMS4NCj4gPiAgICA0
LiBsb3RzIG9mIGNoZWNrcGF0Y2ggd2FybmluZy4NCj4gPiB2MiAtPiB2MzogUmViYXNlIHRvIHRo
ZSBsYXRlc3QgdXBzdHJlYW0gYmFzZS4NCj4gPg0KPiA+IHYxIC0+IHYyOg0KPiA+ICAgIDEuIEFk
ZCBVUkwgbGluayBmb3IgIlVzZSBtYWNyby1lZCBoZWxwZXIgdG8gc2ltcGxpZnkgaW9yZWdfcmVh
ZC93cml0ZSIsDQo+ID4gICAgMi4gSW52YWxpZGF0ZSAmIGNsZWFuIENhY2hlIGZvciBtZW1vcnkg
dGhhdCB3b3VsZCBiZSB1c2VkLA0KPiA+ICAgIDMuIEltcHJvdmUgY29kZSBhbmQgY29tbWl0IGNv
bW1lbnRzIGZvciBjYWxjdWxhdGUgcGFnZWJhYmxlIHNpemUsDQo+ID4gICAgNC4gVXNlIG1hY3Jv
cyB0byByZXBsYWNlIGhhcmRjb2RlIHZhbHVlcywNCj4gPiAgICA1LiBVc2UgbHNyL2xzbCB0byBz
aW1wbGlmeSAyTUIgcm91bmQgdXAsDQo+ID4gICAgNi4gRG8gb2JmdXNjYXRlcyBhcml0aG1ldGlj
IGZvciBrZXJuZWwgaW1hZ2Ugc3ltYm9scywNCj4gPiAgICA3LiBDbGVhbiB1cCBrZXJuZWwgaW1h
Z2Ugc3ltYm9scyBmb3IgQyBmaWxlcy4NCj4gPg0KPiA+IEppYSBIZSAoMjMpOg0KPiA+ICAgIGJ1
aWxkOiBSZW1vdmUgdGhlIGNoZWNrIG9mICctLWVuYWJsZS1kZWZhdWx0LXBpZScgaW4gTWFrZWZp
bGUudWsNCj4gPiAgICBwbGF0L2luY2x1ZGU6IFVzZSBtYWNyby1lZCBoZWxwZXIgdG8gc2ltcGxp
ZnkgaW9yZWdfcmVhZC93cml0ZSBmb3INCj4gPiAgICAgIEFybTY0DQo+ID4gICAgcGxhdC9jb21t
b246IE1vdmUgZ2xvYmFsIHZhcmlhYmxlcyBkZWZpbmVkIGluIGxpbmsgc2NyaXB0cyB0byBhIGhl
YWRlcg0KPiA+ICAgIHBsYXQ6IENsZWFuIHVwIGtlcm5lbCBpbWFnZSBzeW1ib2xzDQo+ID4gICAg
cGxhdC9jb21tb246IFJlbW92ZSBlYXJseWNsb2JlcnIgZnJvbSBTWVNSRUdfUkVBRDMyIGZvciBB
cm02NA0KPiA+ICAgIHBsYXQvY29tbW9uOiBDbGVhbiBhbmQgaW52YWxpZGF0ZSBELUNhY2hlIG9u
bHkgd2hlbiBib290IGZvciBBcm02NA0KPiA+ICAgIHBsYXQvY29tbW9uOiBVc2UgY29ycmVjdCBk
c2Igb3BlcmF0aW9uIGZsYWcgZm9yIEFybTY0DQo+ID4gICAgcGxhdC9jb21tb246IEFkZCByZWZl
cnJlZCBzb3VyY2UgY29kZSBVUkwgZm9yIGNhY2hlIG9wZXJhdGlvbg0KPiA+ICAgIHBsYXQva3Zt
OiBDb3JyZWN0IGludmFsaWQgaW5kZW50IGNoYXJhY3RlciBmb3IgQXJtNjQNCj4gPiAgICBwbGF0
L2t2bTogR2V0IFZJUlRfQklUUyBmcm9tIGlkX2FhNjRtbWZyMF9lbDEuUEFSYW5nZSBmb3IgQXJt
NjQNCj4gPiAgICBhcmNoL2luY2x1ZGU6IEFkZCBhIF9yZWdzIG1lbWJlciB0byBzYXZlIG9yaWdp
YWwgc3RhY2sgcG9pbnRlcg0KPiA+ICAgIHBsYXQva3ZtOiBBZGQgX19UUkFQX1NUQUNLX1NJWkUg
Zm9yIHN0YWNrIHBvaW50ZXIgd2hpbGUgZXhpdGluZyB0cmFwDQo+ID4gICAgcGxhdC9rdm06IFJl
bW92ZSByZWR1bmRhbnQgc3BhY2Ugd2hpbGUgZW50ZXJpbmcgdHJhcCBmb3IgQXJtDQo+ID4gICAg
cGxhdC9rdm06IEZvcmNlIGFsaWduIHRoZSBzdGFjayBwb2ludGVyIGZvciBBcm02NCBFTDEgZXhj
ZXB0aW9ucw0KPiA+ICAgIHBsYXQva3ZtOiBSZW5hbWUgcGFnZXRhYmxlLlMgdG8gcGFnZXRhYmxl
NjQuUyBmb3IgQXJtNjQNCj4gPiAgICBwbGF0L2t2bTogSW52YWxpZGF0ZSBELUNhY2hlIHRoYXQg
bWF5IGhhdmUgYmVlbiBtb2RpZmllZCBmb3IgQXJtNjQNCj4gPiAgICBwbGF0L2t2bTogYXJtNjQ6
IENsZWFyIHBhZ2V0YWJsZSBtZW1vcnkgd2l0aCBib290IHN0YWNrDQo+ID4gICAgcGxhdC9rdm06
IGFybTY0OiBDYWxjdWxhdGUgcGFnZXRhYmxlIHNpemUgZHluYW1pY2FsbHkgYnkgaW1hZ2Ugc2l6
ZQ0KPiA+ICAgIHBsYXQva3ZtOiBhcm02NDogQnVpbGQgTDMgcGFnZSB0YWJsZSBmb3IgcmFuZ2Ug
Z3JlYXRlciB0aGFuIDJNQg0KPiA+ICAgIHBsYXQva3ZtOiBhcm02NDogU3VwcG9ydCBidWlsZCBM
MyB0YWJsZSBmb3IgbGFyZ2UgaW1hZ2Ugc2l6ZQ0KPiA+ICAgIHBsYXQva3ZtOiBhcm02NDogUmVt
b3ZlIG5lZWRsZXNzIHNlbWljb2xvbnMgaW4gYXNzZW1ibHkNCj4gPiAgICBwbGF0L2t2bTogYXJt
NjQ6IEVuc3VyZSB0aGVyZSBpcyBubyBzdGFsbCBkYXRhIGluIGNhY2hlIHdoZW4gYm9vdA0KPiA+
ICAgIHBsYXQva3ZtOiBhcm02NDogUmVtb3ZlIHN1cGVyZmx1b3VzIGJsYW5rIGxpbmUNCj4gPg0K
PiA+ICAgTWFrZWZpbGUudWsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgOCAr
LQ0KPiA+ICAgYXJjaC9hcm0vYXJtNjQvaW5jbHVkZS91ay9hc20vbGNwdS5oICAgICAgICB8ICAx
NiArKy0NCj4gPiAgIHBsYXQvY29tbW9uL2FybS9jYWNoZTY0LlMgICAgICAgICAgICAgICAgICAg
fCAgMzEgKystLS0tDQo+ID4gICBwbGF0L2NvbW1vbi9pbmNsdWRlL2FybS9hcm02NC9jcHUuaCAg
ICAgICAgIHwgIDU4ICsrKystLS0tLS0NCj4gPiAgIHBsYXQvY29tbW9uL2luY2x1ZGUvYXJtL2Fy
bTY0L2NwdV9kZWZzLmggICAgfCAgMTYgKystDQo+ID4gICBwbGF0L2NvbW1vbi9pbmNsdWRlL3Nl
Y3Rpb25zLmggICAgICAgICAgICAgIHwgMTEwICsrKysrKysrKysrKysrKysrKysNCj4gPiAgIHBs
YXQva3ZtL01ha2VmaWxlLnVrICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0NCj4gPiAg
IHBsYXQva3ZtL2FybS9lbnRyeTY0LlMgICAgICAgICAgICAgICAgICAgICAgfCAgNzcgKysrKysr
KysrLS0tLQ0KPiA+ICAgcGxhdC9rdm0vYXJtL2V4Y2VwdGlvbnMuUyAgICAgICAgICAgICAgICAg
ICB8ICA3MyArKysrKysrKysrLS0tDQo+ID4gICBwbGF0L2t2bS9hcm0ve3BhZ2V0YWJsZS5TID0+
IHBhZ2V0YWJsZTY0LlN9IHwgMTE1ICsrKysrKysrKysrKystLS0tLS0tDQo+ID4gICBwbGF0L2t2
bS9hcm0vc2V0dXAuYyAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEyICstDQo+ID4gICBwbGF0
L2t2bS9pbmNsdWRlL2t2bS1hcm0vYXJtNjQvbW0uaCAgICAgICAgIHwgIDE0ICsrLQ0KPiA+ICAg
cGxhdC9rdm0vbWVtb3J5LmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyMyArKy0tDQo+
ID4gICBwbGF0L2t2bS94ODYvc2V0dXAuYyAgICAgICAgICAgICAgICAgICAgICAgIHwgICA2ICst
DQo+ID4gICBwbGF0L3hlbi9hcm0vc2V0dXAuYyAgICAgICAgICAgICAgICAgICAgICAgIHwgICA2
ICstDQo+ID4gICBwbGF0L3hlbi9pbmNsdWRlL3hlbi1hcm0vbW0uaCAgICAgICAgICAgICAgIHwg
ICAzICstDQo+ID4gICBwbGF0L3hlbi9pbmNsdWRlL3hlbi14ODYvbW0uaCAgICAgICAgICAgICAg
IHwgIDIxICsrLS0NCj4gPiAgIHBsYXQveGVuL21lbW9yeS5jICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgMjIgKystLQ0KPiA+ICAgcGxhdC94ZW4veDg2L21tLmMgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8ICAxNyArKy0NCj4gPiAgIHBsYXQveGVuL3g4Ni9zZXR1cC5jICAgICAgICAg
ICAgICAgICAgICAgICAgfCAgIDIgKy0NCj4gPiAgIDIwIGZpbGVzIGNoYW5nZWQsIDQxOSBpbnNl
cnRpb25zKCspLCAyMTMgZGVsZXRpb25zKC0pDQo+ID4gICBjcmVhdGUgbW9kZSAxMDA2NDQgcGxh
dC9jb21tb24vaW5jbHVkZS9zZWN0aW9ucy5oDQo+ID4gICByZW5hbWUgcGxhdC9rdm0vYXJtL3tw
YWdldGFibGUuUyA9PiBwYWdldGFibGU2NC5TfSAoODQlKQ0KPiA+DQo+ID4gLS0NCj4gPiAyLjE3
LjENCj4gPg0KPiA+IElNUE9SVEFOVCBOT1RJQ0U6IFRoZSBjb250ZW50cyBvZiB0aGlzIGVtYWls
IGFuZCBhbnkgYXR0YWNobWVudHMgYXJlDQo+IGNvbmZpZGVudGlhbCBhbmQgbWF5IGFsc28gYmUg
cHJpdmlsZWdlZC4gSWYgeW91IGFyZSBub3QgdGhlIGludGVuZGVkIHJlY2lwaWVudCwNCj4gcGxl
YXNlIG5vdGlmeSB0aGUgc2VuZGVyIGltbWVkaWF0ZWx5IGFuZCBkbyBub3QgZGlzY2xvc2UgdGhl
IGNvbnRlbnRzIHRvIGFueQ0KPiBvdGhlciBwZXJzb24sIHVzZSBpdCBmb3IgYW55IHB1cnBvc2Us
IG9yIHN0b3JlIG9yIGNvcHkgdGhlIGluZm9ybWF0aW9uIGluIGFueQ0KPiBtZWRpdW0uIFRoYW5r
IHlvdS4NCj4gPg0KSU1QT1JUQU5UIE5PVElDRTogVGhlIGNvbnRlbnRzIG9mIHRoaXMgZW1haWwg
YW5kIGFueSBhdHRhY2htZW50cyBhcmUgY29uZmlkZW50aWFsIGFuZCBtYXkgYWxzbyBiZSBwcml2
aWxlZ2VkLiBJZiB5b3UgYXJlIG5vdCB0aGUgaW50ZW5kZWQgcmVjaXBpZW50LCBwbGVhc2Ugbm90
aWZ5IHRoZSBzZW5kZXIgaW1tZWRpYXRlbHkgYW5kIGRvIG5vdCBkaXNjbG9zZSB0aGUgY29udGVu
dHMgdG8gYW55IG90aGVyIHBlcnNvbiwgdXNlIGl0IGZvciBhbnkgcHVycG9zZSwgb3Igc3RvcmUg
b3IgY29weSB0aGUgaW5mb3JtYXRpb24gaW4gYW55IG1lZGl1bS4gVGhhbmsgeW91Lg0KX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1h
aWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0
cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Tue Feb 26 02:07:43 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 26 Feb 2019 02:07:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gyS9l-0007It-Qd; Tue, 26 Feb 2019 02:07:41 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=r4Vo=RB=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1gyS9k-0007Io-Hc
 for minios-devel@lists.xenproject.org; Tue, 26 Feb 2019 02:07:40 +0000
X-Inumbo-ID: 49b44518-396b-11e9-bc90-bc764e045a96
Received: from EUR03-VE1-obe.outbound.protection.outlook.com (unknown
 [2a01:111:f400:fe09::609])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 49b44518-396b-11e9-bc90-bc764e045a96;
 Tue, 26 Feb 2019 02:07:38 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; 
 s=selector1-arm-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=E+ABKkeWWjOAqXuyjNLfc2wMYmDy4rVzSR+VVpZQijQ=;
 b=V8jwXyQb7Bg9MhCXP+lFnG0cQ0xBRDvvz/3b+Uf7R5WaEPKV1UTpJr6wEyYPLL/dFClJWcYjQzmHn9KfqVb2qPCBvXdzXqr5Ho7FmNPok4CQBnILQxXPQt9uqp+jgKF626K917zo80jR7//Jh4rBoWJQN8dHyOlY6rI/IUEYYhU=
Received: from DB7PR08MB3082.eurprd08.prod.outlook.com (52.134.110.24) by
 DB7PR08MB3129.eurprd08.prod.outlook.com (52.134.110.139) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.1643.20; Tue, 26 Feb 2019 02:07:35 +0000
Received: from DB7PR08MB3082.eurprd08.prod.outlook.com
 ([fe80::99d4:808b:c303:ce65]) by DB7PR08MB3082.eurprd08.prod.outlook.com
 ([fe80::99d4:808b:c303:ce65%6]) with mapi id 15.20.1643.019; Tue, 26 Feb 2019
 02:07:35 +0000
From: "Justin He (Arm Technology China)" <Justin.He@arm.com>
To: Sharan Santhanam <sharan.santhanam@neclab.eu>,
 "minios-devel@lists.xenproject.org" <minios-devel@lists.xenproject.org>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>
Thread-Topic: [UNIKRAFT PATCHv6 02/23] plat/include: Use macro-ed helper to
 simplify ioreg_read/write for Arm64
Thread-Index: AQHUynb7y6JGGZeKEkufWN2D/xLc9KXweSKAgADcjdA=
Date: Tue, 26 Feb 2019 02:07:35 +0000
Message-ID: <DB7PR08MB3082F4977F5F3EB904CAE542F77B0@DB7PR08MB3082.eurprd08.prod.outlook.com>
References: <20190222062200.26602-1-justin.he@arm.com>
 <20190222062200.26602-3-justin.he@arm.com>
 <240efcf5-7f2b-f47c-b69e-33c0e07eaeac@neclab.eu>
In-Reply-To: <240efcf5-7f2b-f47c-b69e-33c0e07eaeac@neclab.eu>
Accept-Language: en-US, zh-CN
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=Justin.He@arm.com; 
x-originating-ip: [113.29.88.7]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: a8970f62-ddba-46fe-f0e4-08d69b8f2d01
x-ms-office365-filtering-ht: Tenant
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(7168020)(4627221)(201703031133081)(201702281549075)(8990200)(5600127)(711020)(4605104)(4618075)(2017052603328)(7153060)(7193020);
 SRVR:DB7PR08MB3129; 
x-ms-traffictypediagnostic: DB7PR08MB3129:
x-ms-exchange-purlcount: 1
x-microsoft-exchange-diagnostics: 1; DB7PR08MB3129;
 20:irS71bX8zrP42c6JnSaibJeMmwDzf4AaTam6MkyM8Tlpwi42Bod+mL6TgoW9QAIsY+VWUZkhQsyD7YEXWhZIMS2eSQC9q+sFS0u5RnF27AzB1kyM8qd3HF/Oho9qUcsogbGxEM9ycCQc0b64SDsXFQ6HC1CFCk2dmc4HZrrFOnU=
x-microsoft-antispam-prvs: <DB7PR08MB3129B16EA433C62C12303898F77B0@DB7PR08MB3129.eurprd08.prod.outlook.com>
x-forefront-prvs: 096029FF66
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(366004)(396003)(136003)(346002)(376002)(39860400002)(40434004)(13464003)(189003)(199004)(97736004)(186003)(14454004)(6116002)(3846002)(4326008)(25786009)(105586002)(106356001)(8936002)(316002)(2501003)(54906003)(110136005)(966005)(33656002)(446003)(476003)(11346002)(72206003)(478600001)(486006)(305945005)(99286004)(5024004)(14444005)(53936002)(8676002)(7736002)(256004)(81166006)(86362001)(81156014)(5660300002)(2906002)(52536013)(55016002)(6246003)(68736007)(55236004)(76176011)(74316002)(6436002)(6506007)(53546011)(102836004)(7696005)(71190400001)(26005)(229853002)(71200400001)(9686003)(6306002)(66066001);
 DIR:OUT; SFP:1101; SCL:1; SRVR:DB7PR08MB3129;
 H:DB7PR08MB3082.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:1; 
received-spf: None (protection.outlook.com: arm.com does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: DDS9+V7yO63RNuwWmsIHmHr9A3IToA4i2afYeh2txDPObjvByIPpMxq2tPK8Igj/uypFTs8s+rGE8pAEOQXnXdoG/7V4u3RYX98Ks8HhPGtdGJjdFGu9mNJBqXXA+SvnHeh823t7VD4YgTQnhQbaR6CTy4NzPyLmx8Rbb+k94DHiWjUKUknXTgSZrIKxPBkSVIE4u7mRwJpJrp1nCYXbRMQCQ4ipG66KKm3uOidB85ZfvSgv+Z3TEeoVeXO4Ccb1MMDY7yR+QxvMVPH00tBl7X4nPHNoVn/PaQNFh4VSufRGxapzCiGO3MmJweVNxPEqMGUeJUseZ0nlor0U4Lh0DMATXW1+wpFCrE8HCtCxVMKBzkGEpT0YMSG6PqevysxiPLQ0tB2Hx2brVzV/qDyl3JqIXibTB7exqdr5XH1X6VQ=
MIME-Version: 1.0
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-Network-Message-Id: a8970f62-ddba-46fe-f0e4-08d69b8f2d01
X-MS-Exchange-CrossTenant-originalarrivaltime: 26 Feb 2019 02:07:35.6303 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR08MB3129
Subject: Re: [Minios-devel] [UNIKRAFT PATCHv6 02/23] plat/include: Use
 macro-ed helper to simplify ioreg_read/write for Arm64
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>,
 "Wei Chen \(Arm Technology China\)" <Wei.Chen@arm.com>, "Kaly Xin \(Arm
 Technology China\)" <Kaly.Xin@arm.com>,
 Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <Julien.Grall@arm.com>,
 "yuri.volchkov@neclab.eu" <yuri.volchkov@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGkgU2hhcmFuDQpTb3JyeSwgaXQgaXMgYSBsaXR0bGUgYml0IHN0cmFuZ2UgdG8gbWUuIEkgY2Fu
J3QgcmVwcm9kdWNlIHRvIGdldCB5b3VyIGNoZWNrcGF0Y2ggd2FybmluZyBsb2NhbGx5IOKYuQ0K
Q291bGQgeW91IHBsZWFzZSB0ZWxsIGhvdyBkbyB5b3UiIGdpdCBhbSIgdGhlIHBhdGNoIHNldD8N
Cg0KSGVyZSBpcyBteSByZXN1bHQsIGFsdGhvdWdoIHRoZXJlIGFyZSBzb21lIGZhbHNlIHBvc2l0
aXZlIGVycm9yL3dhcm5pbmdzIHlvdSBvbmNlIG1lbnRpb25lZC4NCiMgLi9zdXBwb3J0L3Njcmlw
dHMvY2hlY2twYXRjaC5wbCBwYXRjaF92Ni8wMDAyLXBsYXQtaW5jbHVkZS1Vc2UtbWFjcm8tZWQt
aGVscGVyLXRvLXNpbXBsaWZ5LWlvcmVnX3IucGF0Y2gNCkVSUk9SOiBuZWVkIGNvbnNpc3RlbnQg
c3BhY2luZyBhcm91bmQgJyonIChjdHg6V3hWKQ0KIzY5OiBGSUxFOiBwbGF0L2NvbW1vbi9pbmNs
dWRlL2FybS9hcm02NC9jcHUuaDo0MDoNCisgICAgICAgaW9yZWdfcmVhZCMjYml0cyhjb25zdCB2
b2xhdGlsZSB1aW50IyNiaXRzIyNfdCAqYWRkcikgXA0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4NCg0KV0FSTklORzogVXNlIG9mIHZvbGF0
aWxlIGlzIHVzdWFsbHkgd3Jvbmc6IHNlZSBEb2N1bWVudGF0aW9uL3Byb2Nlc3Mvdm9sYXRpbGUt
Y29uc2lkZXJlZC1oYXJtZnVsLnJzdA0KIzY5OiBGSUxFOiBwbGF0L2NvbW1vbi9pbmNsdWRlL2Fy
bS9hcm02NC9jcHUuaDo0MDoNCisgICAgICAgaW9yZWdfcmVhZCMjYml0cyhjb25zdCB2b2xhdGls
ZSB1aW50IyNiaXRzIyNfdCAqYWRkcikgXA0KDQpFUlJPUjogbmVlZCBjb25zaXN0ZW50IHNwYWNp
bmcgYXJvdW5kICcqJyAoY3R4Old4VikNCiM3NDogRklMRTogcGxhdC9jb21tb24vaW5jbHVkZS9h
cm0vYXJtNjQvY3B1Lmg6NDU6DQorICAgICAgIGlvcmVnX3dyaXRlIyNiaXRzKHZvbGF0aWxlIHVp
bnQjI2JpdHMjI190ICphZGRyLCBcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF4NCg0KV0FSTklORzogVXNlIG9mIHZvbGF0aWxlIGlzIHVzdWFsbHkg
d3Jvbmc6IHNlZSBEb2N1bWVudGF0aW9uL3Byb2Nlc3Mvdm9sYXRpbGUtY29uc2lkZXJlZC1oYXJt
ZnVsLnJzdA0KIzc0OiBGSUxFOiBwbGF0L2NvbW1vbi9pbmNsdWRlL2FybS9hcm02NC9jcHUuaDo0
NToNCisgICAgICAgaW9yZWdfd3JpdGUjI2JpdHModm9sYXRpbGUgdWludCMjYml0cyMjX3QgKmFk
ZHIsIFwNCg0KRVJST1I6IE1hY3JvcyB3aXRoIGNvbXBsZXggdmFsdWVzIHNob3VsZCBiZSBlbmNs
b3NlZCBpbiBwYXJlbnRoZXNlcw0KIzc5OiBGSUxFOiBwbGF0L2NvbW1vbi9pbmNsdWRlL2FybS9h
cm02NC9jcHUuaDo1MDoNCisjZGVmaW5lIF9fSU9SRUdfUkVBRF9BTEwoKSBfX0lPUkVHX1JFQUQo
OCkgIFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgIF9fSU9SRUdfUkVBRCgxNikgXA0KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgX19JT1JFR19SRUFEKDMyKSBcDQorICAgICAgICAgICAg
ICAgICAgICAgICAgICBfX0lPUkVHX1JFQUQoNjQpIFwNCisNCg0KRVJST1I6IE1hY3JvcyB3aXRo
IGNvbXBsZXggdmFsdWVzIHNob3VsZCBiZSBlbmNsb3NlZCBpbiBwYXJlbnRoZXNlcw0KIzg0OiBG
SUxFOiBwbGF0L2NvbW1vbi9pbmNsdWRlL2FybS9hcm02NC9jcHUuaDo1NToNCisjZGVmaW5lIF9f
SU9SRUdfV1JJVEVfQUxMKCkgICAgX19JT1JFR19XUklURSg4KSAgXA0KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgX19JT1JFR19XUklURSgxNikgXA0KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgX19JT1JFR19XUklURSgzMikgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgX19JT1JF
R19XUklURSg2NCkgXA0KKw0KDQp0b3RhbDogNCBlcnJvcnMsIDIgd2FybmluZ3MsIDcwIGxpbmVz
IGNoZWNrZWQNCg0KTk9URTogRm9yIHNvbWUgb2YgdGhlIHJlcG9ydGVkIGRlZmVjdHMsIGNoZWNr
cGF0Y2ggbWF5IGJlIGFibGUgdG8NCiAgICAgIG1lY2hhbmljYWxseSBjb252ZXJ0IHRvIHRoZSB0
eXBpY2FsIHN0eWxlIHVzaW5nIC0tZml4IG9yIC0tZml4LWlucGxhY2UuDQoNCnBhdGNoX3Y2LzAw
MDItcGxhdC1pbmNsdWRlLVVzZS1tYWNyby1lZC1oZWxwZXItdG8tc2ltcGxpZnktaW9yZWdfci5w
YXRjaCBoYXMgc3R5bGUgcHJvYmxlbXMsIHBsZWFzZSByZXZpZXcuDQoNCk5PVEU6IElnbm9yZWQg
bWVzc2FnZSB0eXBlczogQVNTSUdOX0lOX0lGIE5FV19UWVBFREVGUw0KDQpOT1RFOiBJZiBhbnkg
b2YgdGhlIGVycm9ycyBhcmUgZmFsc2UgcG9zaXRpdmVzLCBwbGVhc2UgcmVwb3J0DQogICAgICB0
aGVtIHRvIHRoZSBtYWludGFpbmVyLCBzZWUgQ0hFQ0tQQVRDSCBpbiBNQUlOVEFJTkVSUy4NCg0K
SW4gdGhlIG90aGVyIHdheSwgeW91IGNhbiBhbHNvIGdldCB0aGUgd2hvbGUgcGF0Y2ggc2VyaWVz
IGJ5DQpnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL2hlamlhbmV0L3VuaWtyYWZ0X2FybTY0
LmdpdCAtYiAxc3RzZXRfdjYNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9t
OiBTaGFyYW4gU2FudGhhbmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xhYi5ldT4NCj4gU2VudDog
MjAxOeW5tDLmnIgyNeaXpSAyMDozOQ0KPiBUbzogSnVzdGluIEhlIChBcm0gVGVjaG5vbG9neSBD
aGluYSkgPEp1c3Rpbi5IZUBhcm0uY29tPjsgbWluaW9zLQ0KPiBkZXZlbEBsaXN0cy54ZW5wcm9q
ZWN0Lm9yZzsgU2ltb24gS3VlbnplciA8c2ltb24ua3VlbnplckBuZWNsYWIuZXU+DQo+IENjOiBG
bG9yaWFuIFNjaG1pZHQgPGZsb3JpYW4uc2NobWlkdEBuZWNsYWIuZXU+OyBGZWxpcGUgSHVpY2kN
Cj4gPGZlbGlwZS5odWljaUBuZWNsYWIuZXU+OyBKdWxpZW4gR3JhbGwgPEp1bGllbi5HcmFsbEBh
cm0uY29tPjsNCj4geXVyaS52b2xjaGtvdkBuZWNsYWIuZXU7IEthbHkgWGluIChBcm0gVGVjaG5v
bG9neSBDaGluYSkgPEthbHkuWGluQGFybS5jb20+Ow0KPiBXZWkgQ2hlbiAoQXJtIFRlY2hub2xv
Z3kgQ2hpbmEpIDxXZWkuQ2hlbkBhcm0uY29tPg0KPiBTdWJqZWN0OiBSZTogW1VOSUtSQUZUIFBB
VENIdjYgMDIvMjNdIHBsYXQvaW5jbHVkZTogVXNlIG1hY3JvLWVkIGhlbHBlciB0bw0KPiBzaW1w
bGlmeSBpb3JlZ19yZWFkL3dyaXRlIGZvciBBcm02NA0KPg0KPiBIZWxsbyBKaWEgSGUsDQo+DQo+
IFdlIGhhdmUgaW50cm9kdWNlZCBzb21lIGNoZWNrcGF0Y2ggZXJyb3JzL3dhcm5pbmcgaW4gdGhp
cyBwYXRjaCBzZXJpZXMuDQo+IFdlIGhhdmUgcmVwbGFjZWQgYWxsIHRoZSB0YWJzIHdpdGggc3Bh
Y2VzLg0KPg0KPiBQbGVhc2UgZmluZCB3YXJuaW5nL2Vycm9ycyBpbmxpbmUuDQo+DQo+IFRoYW5r
cyAmIFJlZ2FyZHMNCj4gU2hhcmFuDQo+DQo+IE9uIDIvMjIvMTkgNzoyMSBBTSwgSmlhIEhlIHdy
b3RlOg0KPiA+IEZyb206IFdlaSBDaGVuIDx3ZWkuY2hlbkBhcm0uY29tPg0KPiA+IEFzIGRpc2N1
c3NlZCBpbiBtYWlsaW5nIGxpc3QgWzFdLCB3ZSBjYW4gdXNlIG1hY3JvLWVkIGhlbHBlcnMgdG8g
YXZvaWQNCj4gPiBoYXZpbmcgdG8gd3JpdGUgNCB0aW1lcyBvZiB0aGUgc2FtZSB0aGluZ3Mgb2Yg
aW9yZWdfcmVhZF84LzE2LzMyLzY0IGFuZA0KPiA+IGlvcmVnX3dyaXRlOC8xNi8zMi82NC4NCj4g
Pg0KPiA+IFNpZ25lZC1vZmYtYnk6IFdlaSBDaGVuIDx3ZWkuY2hlbkBhcm0uY29tPg0KPiA+IFNp
Z25lZC1vZmYtYnk6IEppYSBIZSA8anVzdGluLmhlQGFybS5jb20+DQo+ID4gUmV2aWV3ZWQtYnk6
IFNoYXJhbiBTYW50aGFuYW0gPHNoYXJhbi5zYW50aGFuYW1AbmVjbGFiLmV1Pg0KPiA+IC0tLQ0K
PiA+ICAgcGxhdC9jb21tb24vaW5jbHVkZS9hcm0vYXJtNjQvY3B1LmggfCA2NCArKysrKysrKysr
Ky0tLS0tLS0tLS0tLS0tLS0tLQ0KPiA+ICAgMSBmaWxlIGNoYW5nZWQsIDI1IGluc2VydGlvbnMo
KyksIDM5IGRlbGV0aW9ucygtKQ0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL3BsYXQvY29tbW9uL2lu
Y2x1ZGUvYXJtL2FybTY0L2NwdS5oDQo+IGIvcGxhdC9jb21tb24vaW5jbHVkZS9hcm0vYXJtNjQv
Y3B1LmgNCj4gPiBpbmRleCA1MDNiYzY4Li5jMDA5ZmM4IDEwMDY0NA0KPiA+IC0tLSBhL3BsYXQv
Y29tbW9uL2luY2x1ZGUvYXJtL2FybTY0L2NwdS5oDQo+ID4gKysrIGIvcGxhdC9jb21tb24vaW5j
bHVkZS9hcm0vYXJtNjQvY3B1LmgNCj4gPiBAQCAtMzQsNDUgKzM0LDMxIEBADQo+ID4NCj4gPiAg
ICNpbmNsdWRlIDxpbnR0eXBlcy5oPg0KPiA+DQo+ID4gLXN0YXRpYyBpbmxpbmUgdWludDhfdCBp
b3JlZ19yZWFkOChjb25zdCB2b2xhdGlsZSB1aW50OF90ICphZGRyKQ0KPiA+IC17DQo+ID4gLSAg
ICAgICByZXR1cm4gKmFkZHI7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLXN0YXRpYyBpbmxpbmUgdm9p
ZCBpb3JlZ193cml0ZTgodm9sYXRpbGUgdWludDhfdCAqYWRkciwgdWludDhfdCB2YWx1ZSkNCj4g
PiAtew0KPiA+IC0gICAgICAgKmFkZHIgPSB2YWx1ZTsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAtc3Rh
dGljIGlubGluZSB1aW50MTZfdCBpb3JlZ19yZWFkMTYoY29uc3Qgdm9sYXRpbGUgdWludDE2X3Qg
KmFkZHIpDQo+ID4gLXsNCj4gPiAtICAgICAgIHJldHVybiAqYWRkcjsNCj4gPiAtfQ0KPiA+IC0N
Cj4gPiAtc3RhdGljIGlubGluZSB2b2lkIGlvcmVnX3dyaXRlMTYodm9sYXRpbGUgdWludDE2X3Qg
KmFkZHIsIHVpbnQxNl90IHZhbHVlKQ0KPiA+IC17DQo+ID4gLSAgICAgICAqYWRkciA9IHZhbHVl
Ow0KPiA+IC19DQo+ID4gLQ0KPiA+IC1zdGF0aWMgaW5saW5lIHVpbnQzMl90IGlvcmVnX3JlYWQz
Mihjb25zdCB2b2xhdGlsZSB1aW50MzJfdCAqYWRkcikNCj4gPiAtew0KPiA+IC0gICAgICAgcmV0
dXJuICphZGRyOw0KPiA+IC19DQo+ID4gLQ0KPiA+IC1zdGF0aWMgaW5saW5lIHZvaWQgaW9yZWdf
d3JpdGUzMih2b2xhdGlsZSB1aW50MzJfdCAqYWRkciwgdWludDMyX3QgdmFsdWUpDQo+ID4gLXsN
Cj4gPiAtICAgICAgICphZGRyID0gdmFsdWU7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLXN0YXRpYyBp
bmxpbmUgdWludDY0X3QgaW9yZWdfcmVhZDY0KGNvbnN0IHZvbGF0aWxlIHVpbnQ2NF90ICphZGRy
KQ0KPiA+IC17DQo+ID4gLSAgICAgICByZXR1cm4gKmFkZHI7DQo+ID4gLX0NCj4gPiAtDQo+ID4g
LXN0YXRpYyBpbmxpbmUgdm9pZCBpb3JlZ193cml0ZTY0KHZvbGF0aWxlIHVpbnQ2NF90ICphZGRy
LCB1aW50NjRfdCB2YWx1ZSkNCj4gPiAtew0KPiA+IC0gICAgICAgKmFkZHIgPSB2YWx1ZTsNCj4g
PiAtfQ0KPg0KPg0KPiBFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIHVzZSB0YWJzIHdoZXJlIHBv
c3NpYmxlDQo+ICM2NjogRklMRTogcGxhdC9jb21tb24vaW5jbHVkZS9hcm0vYXJtNjQvY3B1Lmg6
NDE6DQo+ICsgICAgICAgICAgICAgICB7IHJldHVybiAqYWRkcjsgfSQNCj4gPiArLyogRGVmaW5l
IG1hY3JvcyB0byBhY2Nlc3MgSU8gcmVnaXN0ZXJzICovDQo+ID4gKyNkZWZpbmUgX19JT1JFR19S
RUFEKGJpdHMpIFwNCj4gPiArc3RhdGljIGlubGluZSB1aW50IyNiaXRzIyNfdCBcDQo+ID4gKyAg
ICAgICBpb3JlZ19yZWFkIyNiaXRzKGNvbnN0IHZvbGF0aWxlIHVpbnQjI2JpdHMjI190ICphZGRy
KSBcDQo+ID4gKyAgICAgICAgICAgICAgIHsgcmV0dXJuICphZGRyOyB9DQo+ID4gKw0KPiA+ICsj
ZGVmaW5lIF9fSU9SRUdfV1JJVEUoYml0cykgXA0KPiA+ICtzdGF0aWMgaW5saW5lIHZvaWQgXA0K
PiA+ICsgICAgICAgaW9yZWdfd3JpdGUjI2JpdHModm9sYXRpbGUgdWludCMjYml0cyMjX3QgKmFk
ZHIsIFwNCj4NCj4gRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCB1c2UgdGFicyB3aGVyZSBwb3Nz
aWJsZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVpbnQjI2JpdHMjI190IHZhbHVlKSBcDQo+DQo+IEVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQg
dXNlIHRhYnMgd2hlcmUgcG9zc2libGUNCj4gPiArICAgICAgICAgICAgICAgeyAqYWRkciA9IHZh
bHVlOyB9DQo+ID4gKw0KPiA+ICsNCj4NCj4gRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCB1c2Ug
dGFicyB3aGVyZSBwb3NzaWJsZQ0KPiA+ICsjZGVmaW5lIF9fSU9SRUdfUkVBRF9BTEwoKSBfX0lP
UkVHX1JFQUQoOCkgIFwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICBfX0lPUkVHX1JF
QUQoMTYpIFwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICBfX0lPUkVHX1JFQUQoMzIp
IFwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICBfX0lPUkVHX1JFQUQoNjQpIFwNCj4g
PiArDQo+ID4gKyNkZWZpbmUgX19JT1JFR19XUklURV9BTEwoKSAgICBfX0lPUkVHX1dSSVRFKDgp
ICBcDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgX19JT1JFR19XUklURSgxNikgXA0K
PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIF9fSU9SRUdfV1JJVEUoMzIpIFwNCj4gPiAr
ICAgICAgICAgICAgICAgICAgICAgICAgICBfX0lPUkVHX1dSSVRFKDY0KSBcDQo+ID4gKw0KPiA+
ICtfX0lPUkVHX1JFQURfQUxMKCkNCj4gPiArX19JT1JFR19XUklURV9BTEwoKQ0KPiA+DQo+ID4g
ICBzdGF0aWMgaW5saW5lIHZvaWQgX2luaXRfY3B1ZmVhdHVyZXModm9pZCkNCj4gPiAgIHsNCj4g
PiAtLQ0KPiA+IDIuMTcuMQ0KPiA+DQo+ID4gSU1QT1JUQU5UIE5PVElDRTogVGhlIGNvbnRlbnRz
IG9mIHRoaXMgZW1haWwgYW5kIGFueSBhdHRhY2htZW50cyBhcmUNCj4gY29uZmlkZW50aWFsIGFu
ZCBtYXkgYWxzbyBiZSBwcml2aWxlZ2VkLiBJZiB5b3UgYXJlIG5vdCB0aGUgaW50ZW5kZWQgcmVj
aXBpZW50LA0KPiBwbGVhc2Ugbm90aWZ5IHRoZSBzZW5kZXIgaW1tZWRpYXRlbHkgYW5kIGRvIG5v
dCBkaXNjbG9zZSB0aGUgY29udGVudHMgdG8gYW55DQo+IG90aGVyIHBlcnNvbiwgdXNlIGl0IGZv
ciBhbnkgcHVycG9zZSwgb3Igc3RvcmUgb3IgY29weSB0aGUgaW5mb3JtYXRpb24gaW4gYW55DQo+
IG1lZGl1bS4gVGhhbmsgeW91Lg0KPiA+DQpJTVBPUlRBTlQgTk9USUNFOiBUaGUgY29udGVudHMg
b2YgdGhpcyBlbWFpbCBhbmQgYW55IGF0dGFjaG1lbnRzIGFyZSBjb25maWRlbnRpYWwgYW5kIG1h
eSBhbHNvIGJlIHByaXZpbGVnZWQuIElmIHlvdSBhcmUgbm90IHRoZSBpbnRlbmRlZCByZWNpcGll
bnQsIHBsZWFzZSBub3RpZnkgdGhlIHNlbmRlciBpbW1lZGlhdGVseSBhbmQgZG8gbm90IGRpc2Ns
b3NlIHRoZSBjb250ZW50cyB0byBhbnkgb3RoZXIgcGVyc29uLCB1c2UgaXQgZm9yIGFueSBwdXJw
b3NlLCBvciBzdG9yZSBvciBjb3B5IHRoZSBpbmZvcm1hdGlvbiBpbiBhbnkgbWVkaXVtLiBUaGFu
ayB5b3UuDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpN
aW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9y
ZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRl
dmVs

From minios-devel-bounces@lists.xenproject.org Tue Feb 26 16:04:51 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 26 Feb 2019 16:04:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gyfDt-0005cp-BL; Tue, 26 Feb 2019 16:04:49 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=1Gn8=RB=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1gyfDs-0005ck-4j
 for minios-devel@lists.xenproject.org; Tue, 26 Feb 2019 16:04:48 +0000
X-Inumbo-ID: 3b7dedf4-39e0-11e9-a766-6b4ecb408047
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 3b7dedf4-39e0-11e9-a766-6b4ecb408047;
 Tue, 26 Feb 2019 16:04:45 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id C0872F2042;
 Tue, 26 Feb 2019 17:04:43 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id bBmH0NrmkHLX; Tue, 26 Feb 2019 17:04:43 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 81FB0F2010;
 Tue, 26 Feb 2019 17:04:33 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 26 Feb 2019 17:04:33
 +0100
To: "Justin He (Arm Technology China)" <Justin.He@arm.com>,
 "minios-devel@lists.xenproject.org" <minios-devel@lists.xenproject.org>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>
References: <20190222062200.26602-1-justin.he@arm.com>
 <20190222062200.26602-3-justin.he@arm.com>
 <240efcf5-7f2b-f47c-b69e-33c0e07eaeac@neclab.eu>
 <DB7PR08MB3082F4977F5F3EB904CAE542F77B0@DB7PR08MB3082.eurprd08.prod.outlook.com>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <43f8c8bf-764a-43eb-15cf-0f12eaa9ce0c@neclab.eu>
Date: Tue, 26 Feb 2019 17:04:32 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <DB7PR08MB3082F4977F5F3EB904CAE542F77B0@DB7PR08MB3082.eurprd08.prod.outlook.com>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCHv6 02/23] plat/include: Use
 macro-ed helper to simplify ioreg_read/write for Arm64
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>,
 "Wei Chen \(Arm Technology China\)" <Wei.Chen@arm.com>, "Kaly Xin \(Arm
 Technology China\)" <Kaly.Xin@arm.com>,
 Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <Julien.Grall@arm.com>,
 "yuri.volchkov@neclab.eu" <yuri.volchkov@neclab.eu>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gSnVzdGluIEhlLAoKSSBkb3dubG9hZGVkIHRoZSBwYXRjaCBzZXJpZXMgZnJvbSB0aGUg
cGF0Y2h3b3JrIHNlcnZlciAKKGh0dHBzOi8vcGF0Y2h3b3JrLnVuaWtyYWZ0Lm9yZy8pIHNlcmll
cyA0MzguIEkgY291bGQgc2VlIHNwYWNlIGluc3RlYWQgCm9mIHRhYiBpbiB0aGUgcGF0Y2ggc2Vy
aWVzLiBUaGlzIGlzIGFsc28gdHJ1ZSBvZiB0aGUgcGF0Y2ggImNsZWFuIHVwIAprZXJuZWwgaW1h
Z2Ugc3ltYm9scyIuCgpUaGFua3MgJiBSZWdhcmRzClNoYXJhbgoKT24gMi8yNi8xOSAzOjA3IEFN
LCBKdXN0aW4gSGUgKEFybSBUZWNobm9sb2d5IENoaW5hKSB3cm90ZToKPiBIaSBTaGFyYW4KPiBT
b3JyeSwgaXQgaXMgYSBsaXR0bGUgYml0IHN0cmFuZ2UgdG8gbWUuIEkgY2FuJ3QgcmVwcm9kdWNl
IHRvIGdldCB5b3VyIGNoZWNrcGF0Y2ggd2FybmluZyBsb2NhbGx5IOKYuQo+IENvdWxkIHlvdSBw
bGVhc2UgdGVsbCBob3cgZG8geW91IiBnaXQgYW0iIHRoZSBwYXRjaCBzZXQ/Cj4gCj4gSGVyZSBp
cyBteSByZXN1bHQsIGFsdGhvdWdoIHRoZXJlIGFyZSBzb21lIGZhbHNlIHBvc2l0aXZlIGVycm9y
L3dhcm5pbmdzIHlvdSBvbmNlIG1lbnRpb25lZC4KPiAjIC4vc3VwcG9ydC9zY3JpcHRzL2NoZWNr
cGF0Y2gucGwgcGF0Y2hfdjYvMDAwMi1wbGF0LWluY2x1ZGUtVXNlLW1hY3JvLWVkLWhlbHBlci10
by1zaW1wbGlmeS1pb3JlZ19yLnBhdGNoCj4gRVJST1I6IG5lZWQgY29uc2lzdGVudCBzcGFjaW5n
IGFyb3VuZCAnKicgKGN0eDpXeFYpCj4gIzY5OiBGSUxFOiBwbGF0L2NvbW1vbi9pbmNsdWRlL2Fy
bS9hcm02NC9jcHUuaDo0MDoKPiArICAgICAgIGlvcmVnX3JlYWQjI2JpdHMoY29uc3Qgdm9sYXRp
bGUgdWludCMjYml0cyMjX3QgKmFkZHIpIFwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KPiAKPiBXQVJOSU5HOiBVc2Ugb2Ygdm9sYXRp
bGUgaXMgdXN1YWxseSB3cm9uZzogc2VlIERvY3VtZW50YXRpb24vcHJvY2Vzcy92b2xhdGlsZS1j
b25zaWRlcmVkLWhhcm1mdWwucnN0Cj4gIzY5OiBGSUxFOiBwbGF0L2NvbW1vbi9pbmNsdWRlL2Fy
bS9hcm02NC9jcHUuaDo0MDoKPiArICAgICAgIGlvcmVnX3JlYWQjI2JpdHMoY29uc3Qgdm9sYXRp
bGUgdWludCMjYml0cyMjX3QgKmFkZHIpIFwKPiAKPiBFUlJPUjogbmVlZCBjb25zaXN0ZW50IHNw
YWNpbmcgYXJvdW5kICcqJyAoY3R4Old4VikKPiAjNzQ6IEZJTEU6IHBsYXQvY29tbW9uL2luY2x1
ZGUvYXJtL2FybTY0L2NwdS5oOjQ1Ogo+ICsgICAgICAgaW9yZWdfd3JpdGUjI2JpdHModm9sYXRp
bGUgdWludCMjYml0cyMjX3QgKmFkZHIsIFwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBeCj4gCj4gV0FSTklORzogVXNlIG9mIHZvbGF0aWxlIGlz
IHVzdWFsbHkgd3Jvbmc6IHNlZSBEb2N1bWVudGF0aW9uL3Byb2Nlc3Mvdm9sYXRpbGUtY29uc2lk
ZXJlZC1oYXJtZnVsLnJzdAo+ICM3NDogRklMRTogcGxhdC9jb21tb24vaW5jbHVkZS9hcm0vYXJt
NjQvY3B1Lmg6NDU6Cj4gKyAgICAgICBpb3JlZ193cml0ZSMjYml0cyh2b2xhdGlsZSB1aW50IyNi
aXRzIyNfdCAqYWRkciwgXAo+IAo+IEVSUk9SOiBNYWNyb3Mgd2l0aCBjb21wbGV4IHZhbHVlcyBz
aG91bGQgYmUgZW5jbG9zZWQgaW4gcGFyZW50aGVzZXMKPiAjNzk6IEZJTEU6IHBsYXQvY29tbW9u
L2luY2x1ZGUvYXJtL2FybTY0L2NwdS5oOjUwOgo+ICsjZGVmaW5lIF9fSU9SRUdfUkVBRF9BTEwo
KSBfX0lPUkVHX1JFQUQoOCkgIFwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICBfX0lPUkVH
X1JFQUQoMTYpIFwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICBfX0lPUkVHX1JFQUQoMzIp
IFwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICBfX0lPUkVHX1JFQUQoNjQpIFwKPiArCj4g
Cj4gRVJST1I6IE1hY3JvcyB3aXRoIGNvbXBsZXggdmFsdWVzIHNob3VsZCBiZSBlbmNsb3NlZCBp
biBwYXJlbnRoZXNlcwo+ICM4NDogRklMRTogcGxhdC9jb21tb24vaW5jbHVkZS9hcm0vYXJtNjQv
Y3B1Lmg6NTU6Cj4gKyNkZWZpbmUgX19JT1JFR19XUklURV9BTEwoKSAgICBfX0lPUkVHX1dSSVRF
KDgpICBcCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgX19JT1JFR19XUklURSgxNikgXAo+
ICsgICAgICAgICAgICAgICAgICAgICAgICAgIF9fSU9SRUdfV1JJVEUoMzIpIFwKPiArICAgICAg
ICAgICAgICAgICAgICAgICAgICBfX0lPUkVHX1dSSVRFKDY0KSBcCj4gKwo+IAo+IHRvdGFsOiA0
IGVycm9ycywgMiB3YXJuaW5ncywgNzAgbGluZXMgY2hlY2tlZAo+IAo+IE5PVEU6IEZvciBzb21l
IG9mIHRoZSByZXBvcnRlZCBkZWZlY3RzLCBjaGVja3BhdGNoIG1heSBiZSBhYmxlIHRvCj4gICAg
ICAgIG1lY2hhbmljYWxseSBjb252ZXJ0IHRvIHRoZSB0eXBpY2FsIHN0eWxlIHVzaW5nIC0tZml4
IG9yIC0tZml4LWlucGxhY2UuCj4gCj4gcGF0Y2hfdjYvMDAwMi1wbGF0LWluY2x1ZGUtVXNlLW1h
Y3JvLWVkLWhlbHBlci10by1zaW1wbGlmeS1pb3JlZ19yLnBhdGNoIGhhcyBzdHlsZSBwcm9ibGVt
cywgcGxlYXNlIHJldmlldy4KPiAKPiBOT1RFOiBJZ25vcmVkIG1lc3NhZ2UgdHlwZXM6IEFTU0lH
Tl9JTl9JRiBORVdfVFlQRURFRlMKPiAKPiBOT1RFOiBJZiBhbnkgb2YgdGhlIGVycm9ycyBhcmUg
ZmFsc2UgcG9zaXRpdmVzLCBwbGVhc2UgcmVwb3J0Cj4gICAgICAgIHRoZW0gdG8gdGhlIG1haW50
YWluZXIsIHNlZSBDSEVDS1BBVENIIGluIE1BSU5UQUlORVJTLgo+IAo+IEluIHRoZSBvdGhlciB3
YXksIHlvdSBjYW4gYWxzbyBnZXQgdGhlIHdob2xlIHBhdGNoIHNlcmllcyBieQo+IGdpdCBjbG9u
ZSBodHRwczovL2dpdGh1Yi5jb20vaGVqaWFuZXQvdW5pa3JhZnRfYXJtNjQuZ2l0IC1iIDFzdHNl
dF92Ngo+IAo+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+PiBGcm9tOiBTaGFyYW4gU2Fu
dGhhbmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xhYi5ldT4KPj4gU2VudDogMjAxOeW5tDLmnIgy
NeaXpSAyMDozOQo+PiBUbzogSnVzdGluIEhlIChBcm0gVGVjaG5vbG9neSBDaGluYSkgPEp1c3Rp
bi5IZUBhcm0uY29tPjsgbWluaW9zLQo+PiBkZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZzsgU2lt
b24gS3VlbnplciA8c2ltb24ua3VlbnplckBuZWNsYWIuZXU+Cj4+IENjOiBGbG9yaWFuIFNjaG1p
ZHQgPGZsb3JpYW4uc2NobWlkdEBuZWNsYWIuZXU+OyBGZWxpcGUgSHVpY2kKPj4gPGZlbGlwZS5o
dWljaUBuZWNsYWIuZXU+OyBKdWxpZW4gR3JhbGwgPEp1bGllbi5HcmFsbEBhcm0uY29tPjsKPj4g
eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU7IEthbHkgWGluIChBcm0gVGVjaG5vbG9neSBDaGluYSkg
PEthbHkuWGluQGFybS5jb20+Owo+PiBXZWkgQ2hlbiAoQXJtIFRlY2hub2xvZ3kgQ2hpbmEpIDxX
ZWkuQ2hlbkBhcm0uY29tPgo+PiBTdWJqZWN0OiBSZTogW1VOSUtSQUZUIFBBVENIdjYgMDIvMjNd
IHBsYXQvaW5jbHVkZTogVXNlIG1hY3JvLWVkIGhlbHBlciB0bwo+PiBzaW1wbGlmeSBpb3JlZ19y
ZWFkL3dyaXRlIGZvciBBcm02NAo+Pgo+PiBIZWxsbyBKaWEgSGUsCj4+Cj4+IFdlIGhhdmUgaW50
cm9kdWNlZCBzb21lIGNoZWNrcGF0Y2ggZXJyb3JzL3dhcm5pbmcgaW4gdGhpcyBwYXRjaCBzZXJp
ZXMuCj4+IFdlIGhhdmUgcmVwbGFjZWQgYWxsIHRoZSB0YWJzIHdpdGggc3BhY2VzLgo+Pgo+PiBQ
bGVhc2UgZmluZCB3YXJuaW5nL2Vycm9ycyBpbmxpbmUuCj4+Cj4+IFRoYW5rcyAmIFJlZ2FyZHMK
Pj4gU2hhcmFuCj4+Cj4+IE9uIDIvMjIvMTkgNzoyMSBBTSwgSmlhIEhlIHdyb3RlOgo+Pj4gRnJv
bTogV2VpIENoZW4gPHdlaS5jaGVuQGFybS5jb20+Cj4+PiBBcyBkaXNjdXNzZWQgaW4gbWFpbGlu
ZyBsaXN0IFsxXSwgd2UgY2FuIHVzZSBtYWNyby1lZCBoZWxwZXJzIHRvIGF2b2lkCj4+PiBoYXZp
bmcgdG8gd3JpdGUgNCB0aW1lcyBvZiB0aGUgc2FtZSB0aGluZ3Mgb2YgaW9yZWdfcmVhZF84LzE2
LzMyLzY0IGFuZAo+Pj4gaW9yZWdfd3JpdGU4LzE2LzMyLzY0Lgo+Pj4KPj4+IFNpZ25lZC1vZmYt
Ynk6IFdlaSBDaGVuIDx3ZWkuY2hlbkBhcm0uY29tPgo+Pj4gU2lnbmVkLW9mZi1ieTogSmlhIEhl
IDxqdXN0aW4uaGVAYXJtLmNvbT4KPj4+IFJldmlld2VkLWJ5OiBTaGFyYW4gU2FudGhhbmFtIDxz
aGFyYW4uc2FudGhhbmFtQG5lY2xhYi5ldT4KPj4+IC0tLQo+Pj4gICAgcGxhdC9jb21tb24vaW5j
bHVkZS9hcm0vYXJtNjQvY3B1LmggfCA2NCArKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLQo+
Pj4gICAgMSBmaWxlIGNoYW5nZWQsIDI1IGluc2VydGlvbnMoKyksIDM5IGRlbGV0aW9ucygtKQo+
Pj4KPj4+IGRpZmYgLS1naXQgYS9wbGF0L2NvbW1vbi9pbmNsdWRlL2FybS9hcm02NC9jcHUuaAo+
PiBiL3BsYXQvY29tbW9uL2luY2x1ZGUvYXJtL2FybTY0L2NwdS5oCj4+PiBpbmRleCA1MDNiYzY4
Li5jMDA5ZmM4IDEwMDY0NAo+Pj4gLS0tIGEvcGxhdC9jb21tb24vaW5jbHVkZS9hcm0vYXJtNjQv
Y3B1LmgKPj4+ICsrKyBiL3BsYXQvY29tbW9uL2luY2x1ZGUvYXJtL2FybTY0L2NwdS5oCj4+PiBA
QCAtMzQsNDUgKzM0LDMxIEBACj4+Pgo+Pj4gICAgI2luY2x1ZGUgPGludHR5cGVzLmg+Cj4+Pgo+
Pj4gLXN0YXRpYyBpbmxpbmUgdWludDhfdCBpb3JlZ19yZWFkOChjb25zdCB2b2xhdGlsZSB1aW50
OF90ICphZGRyKQo+Pj4gLXsKPj4+IC0gICAgICAgcmV0dXJuICphZGRyOwo+Pj4gLX0KPj4+IC0K
Pj4+IC1zdGF0aWMgaW5saW5lIHZvaWQgaW9yZWdfd3JpdGU4KHZvbGF0aWxlIHVpbnQ4X3QgKmFk
ZHIsIHVpbnQ4X3QgdmFsdWUpCj4+PiAtewo+Pj4gLSAgICAgICAqYWRkciA9IHZhbHVlOwo+Pj4g
LX0KPj4+IC0KPj4+IC1zdGF0aWMgaW5saW5lIHVpbnQxNl90IGlvcmVnX3JlYWQxNihjb25zdCB2
b2xhdGlsZSB1aW50MTZfdCAqYWRkcikKPj4+IC17Cj4+PiAtICAgICAgIHJldHVybiAqYWRkcjsK
Pj4+IC19Cj4+PiAtCj4+PiAtc3RhdGljIGlubGluZSB2b2lkIGlvcmVnX3dyaXRlMTYodm9sYXRp
bGUgdWludDE2X3QgKmFkZHIsIHVpbnQxNl90IHZhbHVlKQo+Pj4gLXsKPj4+IC0gICAgICAgKmFk
ZHIgPSB2YWx1ZTsKPj4+IC19Cj4+PiAtCj4+PiAtc3RhdGljIGlubGluZSB1aW50MzJfdCBpb3Jl
Z19yZWFkMzIoY29uc3Qgdm9sYXRpbGUgdWludDMyX3QgKmFkZHIpCj4+PiAtewo+Pj4gLSAgICAg
ICByZXR1cm4gKmFkZHI7Cj4+PiAtfQo+Pj4gLQo+Pj4gLXN0YXRpYyBpbmxpbmUgdm9pZCBpb3Jl
Z193cml0ZTMyKHZvbGF0aWxlIHVpbnQzMl90ICphZGRyLCB1aW50MzJfdCB2YWx1ZSkKPj4+IC17
Cj4+PiAtICAgICAgICphZGRyID0gdmFsdWU7Cj4+PiAtfQo+Pj4gLQo+Pj4gLXN0YXRpYyBpbmxp
bmUgdWludDY0X3QgaW9yZWdfcmVhZDY0KGNvbnN0IHZvbGF0aWxlIHVpbnQ2NF90ICphZGRyKQo+
Pj4gLXsKPj4+IC0gICAgICAgcmV0dXJuICphZGRyOwo+Pj4gLX0KPj4+IC0KPj4+IC1zdGF0aWMg
aW5saW5lIHZvaWQgaW9yZWdfd3JpdGU2NCh2b2xhdGlsZSB1aW50NjRfdCAqYWRkciwgdWludDY0
X3QgdmFsdWUpCj4+PiAtewo+Pj4gLSAgICAgICAqYWRkciA9IHZhbHVlOwo+Pj4gLX0KPj4KPj4K
Pj4gRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCB1c2UgdGFicyB3aGVyZSBwb3NzaWJsZQo+PiAj
NjY6IEZJTEU6IHBsYXQvY29tbW9uL2luY2x1ZGUvYXJtL2FybTY0L2NwdS5oOjQxOgo+PiArICAg
ICAgICAgICAgICAgeyByZXR1cm4gKmFkZHI7IH0kCj4+PiArLyogRGVmaW5lIG1hY3JvcyB0byBh
Y2Nlc3MgSU8gcmVnaXN0ZXJzICovCj4+PiArI2RlZmluZSBfX0lPUkVHX1JFQUQoYml0cykgXAo+
Pj4gK3N0YXRpYyBpbmxpbmUgdWludCMjYml0cyMjX3QgXAo+Pj4gKyAgICAgICBpb3JlZ19yZWFk
IyNiaXRzKGNvbnN0IHZvbGF0aWxlIHVpbnQjI2JpdHMjI190ICphZGRyKSBcCj4+PiArICAgICAg
ICAgICAgICAgeyByZXR1cm4gKmFkZHI7IH0KPj4+ICsKPj4+ICsjZGVmaW5lIF9fSU9SRUdfV1JJ
VEUoYml0cykgXAo+Pj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBcCj4+PiArICAgICAgIGlvcmVnX3dy
aXRlIyNiaXRzKHZvbGF0aWxlIHVpbnQjI2JpdHMjI190ICphZGRyLCBcCj4+Cj4+IEVSUk9SOiBj
b2RlIGluZGVudCBzaG91bGQgdXNlIHRhYnMgd2hlcmUgcG9zc2libGUKPj4+ICsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQjI2JpdHMjI190IHZhbHVl
KSBcCj4+Cj4+IEVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgdXNlIHRhYnMgd2hlcmUgcG9zc2li
bGUKPj4+ICsgICAgICAgICAgICAgICB7ICphZGRyID0gdmFsdWU7IH0KPj4+ICsKPj4+ICsKPj4K
Pj4gRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCB1c2UgdGFicyB3aGVyZSBwb3NzaWJsZQo+Pj4g
KyNkZWZpbmUgX19JT1JFR19SRUFEX0FMTCgpIF9fSU9SRUdfUkVBRCg4KSAgXAo+Pj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgX19JT1JFR19SRUFEKDE2KSBcCj4+PiArICAgICAgICAgICAg
ICAgICAgICAgICAgICBfX0lPUkVHX1JFQUQoMzIpIFwKPj4+ICsgICAgICAgICAgICAgICAgICAg
ICAgICAgIF9fSU9SRUdfUkVBRCg2NCkgXAo+Pj4gKwo+Pj4gKyNkZWZpbmUgX19JT1JFR19XUklU
RV9BTEwoKSAgICBfX0lPUkVHX1dSSVRFKDgpICBcCj4+PiArICAgICAgICAgICAgICAgICAgICAg
ICAgICBfX0lPUkVHX1dSSVRFKDE2KSBcCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICBf
X0lPUkVHX1dSSVRFKDMyKSBcCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICBfX0lPUkVH
X1dSSVRFKDY0KSBcCj4+PiArCj4+PiArX19JT1JFR19SRUFEX0FMTCgpCj4+PiArX19JT1JFR19X
UklURV9BTEwoKQo+Pj4KPj4+ICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBfaW5pdF9jcHVmZWF0dXJl
cyh2b2lkKQo+Pj4gICAgewo+Pj4gLS0KPj4+IDIuMTcuMQo+Pj4KPj4+IElNUE9SVEFOVCBOT1RJ
Q0U6IFRoZSBjb250ZW50cyBvZiB0aGlzIGVtYWlsIGFuZCBhbnkgYXR0YWNobWVudHMgYXJlCj4+
IGNvbmZpZGVudGlhbCBhbmQgbWF5IGFsc28gYmUgcHJpdmlsZWdlZC4gSWYgeW91IGFyZSBub3Qg
dGhlIGludGVuZGVkIHJlY2lwaWVudCwKPj4gcGxlYXNlIG5vdGlmeSB0aGUgc2VuZGVyIGltbWVk
aWF0ZWx5IGFuZCBkbyBub3QgZGlzY2xvc2UgdGhlIGNvbnRlbnRzIHRvIGFueQo+PiBvdGhlciBw
ZXJzb24sIHVzZSBpdCBmb3IgYW55IHB1cnBvc2UsIG9yIHN0b3JlIG9yIGNvcHkgdGhlIGluZm9y
bWF0aW9uIGluIGFueQo+PiBtZWRpdW0uIFRoYW5rIHlvdS4KPj4+Cj4gSU1QT1JUQU5UIE5PVElD
RTogVGhlIGNvbnRlbnRzIG9mIHRoaXMgZW1haWwgYW5kIGFueSBhdHRhY2htZW50cyBhcmUgY29u
ZmlkZW50aWFsIGFuZCBtYXkgYWxzbyBiZSBwcml2aWxlZ2VkLiBJZiB5b3UgYXJlIG5vdCB0aGUg
aW50ZW5kZWQgcmVjaXBpZW50LCBwbGVhc2Ugbm90aWZ5IHRoZSBzZW5kZXIgaW1tZWRpYXRlbHkg
YW5kIGRvIG5vdCBkaXNjbG9zZSB0aGUgY29udGVudHMgdG8gYW55IG90aGVyIHBlcnNvbiwgdXNl
IGl0IGZvciBhbnkgcHVycG9zZSwgb3Igc3RvcmUgb3IgY29weSB0aGUgaW5mb3JtYXRpb24gaW4g
YW55IG1lZGl1bS4gVGhhbmsgeW91Lgo+IAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxA
bGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFu
L2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Feb 27 09:00:04 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 27 Feb 2019 09:00:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gyv4M-00044O-0C; Wed, 27 Feb 2019 09:00:02 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=nrM5=RC=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1gyv4K-00041J-Kw
 for minios-devel@lists.xenproject.org; Wed, 27 Feb 2019 09:00:00 +0000
X-Inumbo-ID: 0e0455c2-3a6e-11e9-bc90-bc764e045a96
Received: from EUR03-AM5-obe.outbound.protection.outlook.com (unknown
 [2a01:111:f400:fe08::603])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 0e0455c2-3a6e-11e9-bc90-bc764e045a96;
 Wed, 27 Feb 2019 08:59:58 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; 
 s=selector1-arm-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=bLtFjjg+drPmSVOswNTO8gKwjLaEaxxixlFL6HCw+Yk=;
 b=rdWQV3uRLH4Z0usrh85UcH4/fdROSGB7aZ5PcB/Obw5nL+hBbeGK9C9LvyILp+Htsfft3iiUeBkYSaA0SXJKNa7ALr+8/rhy+N6IVIQdXEauafrX3ukryOp4Nj9qyWuJWoEtyxBJg5g5/i/jBkoqtpM6JW1QQJJptdfUwRGWnx8=
Received: from DB7PR08MB3082.eurprd08.prod.outlook.com (52.134.110.24) by
 DB7PR08MB4219.eurprd08.prod.outlook.com (20.178.47.97) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.1643.19; Wed, 27 Feb 2019 08:59:55 +0000
Received: from DB7PR08MB3082.eurprd08.prod.outlook.com
 ([fe80::99d4:808b:c303:ce65]) by DB7PR08MB3082.eurprd08.prod.outlook.com
 ([fe80::99d4:808b:c303:ce65%6]) with mapi id 15.20.1643.019; Wed, 27 Feb 2019
 08:59:55 +0000
From: "Justin He (Arm Technology China)" <Justin.He@arm.com>
To: Sharan Santhanam <sharan.santhanam@neclab.eu>,
 "minios-devel@lists.xenproject.org" <minios-devel@lists.xenproject.org>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>
Thread-Topic: [UNIKRAFT PATCHv6 02/23] plat/include: Use macro-ed helper to
 simplify ioreg_read/write for Arm64
Thread-Index: AQHUynb7y6JGGZeKEkufWN2D/xLc9KXweSKAgADcjdCAAO9OAIABGxUA
Date: Wed, 27 Feb 2019 08:59:55 +0000
Message-ID: <DB7PR08MB308286BC2C22A9C81A0EE650F7740@DB7PR08MB3082.eurprd08.prod.outlook.com>
References: <20190222062200.26602-1-justin.he@arm.com>
 <20190222062200.26602-3-justin.he@arm.com>
 <240efcf5-7f2b-f47c-b69e-33c0e07eaeac@neclab.eu>
 <DB7PR08MB3082F4977F5F3EB904CAE542F77B0@DB7PR08MB3082.eurprd08.prod.outlook.com>
 <43f8c8bf-764a-43eb-15cf-0f12eaa9ce0c@neclab.eu>
In-Reply-To: <43f8c8bf-764a-43eb-15cf-0f12eaa9ce0c@neclab.eu>
Accept-Language: en-US, zh-CN
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=Justin.He@arm.com; 
x-originating-ip: [113.29.88.7]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: c2ddc862-8690-4578-77b0-08d69c91f195
x-ms-office365-filtering-ht: Tenant
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(7168020)(4627221)(201703031133081)(201702281549075)(8990200)(5600127)(711020)(4605104)(4618075)(2017052603328)(7153060)(7193020);
 SRVR:DB7PR08MB4219; 
x-ms-traffictypediagnostic: DB7PR08MB4219:
x-ms-exchange-purlcount: 2
x-microsoft-exchange-diagnostics: 1; DB7PR08MB4219;
 20:Wi3KAL3NhYXp6HZsUgQt5dMl4L7TWMiawCZEnWwAFaEKDtrgWdUCZlgdmU3DfDiYO7Jn4+svMNsNBjVVqb5Lfs+gYi74qbj3pGw61WufY0mgddkZZ8iHjuWMvneupLJbm4Nnl4D/rtN4yVKJtUDcn//QSv/j2Bx4eNv3g29Uruo=
x-microsoft-antispam-prvs: <DB7PR08MB42192DEEB2EF4E5D14464F5AF7740@DB7PR08MB4219.eurprd08.prod.outlook.com>
x-forefront-prvs: 0961DF5286
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(39860400002)(136003)(366004)(396003)(346002)(376002)(40434004)(199004)(189003)(13464003)(66066001)(2906002)(11346002)(25786009)(74316002)(446003)(486006)(4326008)(476003)(76176011)(86362001)(68736007)(106356001)(7696005)(97736004)(110136005)(33656002)(6246003)(105586002)(54906003)(2501003)(6116002)(53546011)(6506007)(316002)(256004)(14444005)(71200400001)(55236004)(3846002)(6436002)(52536013)(229853002)(966005)(72206003)(7736002)(6306002)(305945005)(81166006)(8936002)(26005)(81156014)(8676002)(14454004)(102836004)(99286004)(5024004)(93886005)(186003)(478600001)(5660300002)(55016002)(71190400001)(45080400002)(53936002)(9686003);
 DIR:OUT; SFP:1101; SCL:1; SRVR:DB7PR08MB4219;
 H:DB7PR08MB3082.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; A:1; MX:1; 
received-spf: None (protection.outlook.com: arm.com does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: BTp/fKcKq6ogwcAvGYuFZn1No5yWTA2tDZJsudcH4W1JDEfVyUSGZAczI4U9jIqjgNiGECKnMTVG8s+LO+G8t5zpc6enARLK629TS45/VM2GBiYAtBeG25qdARMqh15t2MneSYtmUBzpvJQecLgnHIDfVG0ZcgREbNbEJ+ul02vgYnCTtpM6irLd+QuJOfoe3EBK+EPu22iNYNSz1GCuIhCuUO/6N5BlI72dloVBuxC5Xc157Ycw+Ly/qTnDRJUTw9+eOUO7STRWyWbm8rr+cAIQBVQAqftJRGzXS9haMLO3wR2S6PtgaznGNtxIux7sJJEwBYxz7QL6Ppikn1ojEhsLNFsDQeOzj1i7i8pdt596+QmHkwli/Gh+lGJR5ojZYMNtZ7cRxGOf+uUR0hffq0jxmVFAukJGH2FXFpwS//c=
MIME-Version: 1.0
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-Network-Message-Id: c2ddc862-8690-4578-77b0-08d69c91f195
X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Feb 2019 08:59:55.6078 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR08MB4219
Subject: Re: [Minios-devel] [UNIKRAFT PATCHv6 02/23] plat/include: Use
 macro-ed helper to simplify ioreg_read/write for Arm64
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>,
 "Wei Chen \(Arm Technology China\)" <Wei.Chen@arm.com>, "Kaly Xin \(Arm
 Technology China\)" <Kaly.Xin@arm.com>,
 Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <Julien.Grall@arm.com>,
 "yuri.volchkov@neclab.eu" <yuri.volchkov@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGkgU2hhcmFuDQpPdXIgb3V0bG9vayBzZXJ2ZXIgY29udmVydGVkIGFsbCAgInRhYiIgdG8gInNw
YWNlcyIgaW4gbXkgcGF0Y2hlcy4NCkkgd2lsbCBkaWcgaW50byB0aGlzIGlzc3VlIGFuZCBmaW5k
IGhvdyB0byBhdm9pZCB0aGlzLg0KU29ycnkgYWJvdXQgdGhhdA0KDQpDaGVlcnMsDQpKdXN0aW4g
KEppYSBIZSkNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBTaGFyYW4g
U2FudGhhbmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xhYi5ldT4NCj4gU2VudDogMjAxOeW5tDLm
nIgyN+aXpSAwOjA1DQo+IFRvOiBKdXN0aW4gSGUgKEFybSBUZWNobm9sb2d5IENoaW5hKSA8SnVz
dGluLkhlQGFybS5jb20+OyBtaW5pb3MtDQo+IGRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnOyBT
aW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4NCj4gQ2M6IEZsb3JpYW4gU2No
bWlkdCA8Zmxvcmlhbi5zY2htaWR0QG5lY2xhYi5ldT47IEZlbGlwZSBIdWljaQ0KPiA8ZmVsaXBl
Lmh1aWNpQG5lY2xhYi5ldT47IEp1bGllbiBHcmFsbCA8SnVsaWVuLkdyYWxsQGFybS5jb20+Ow0K
PiB5dXJpLnZvbGNoa292QG5lY2xhYi5ldTsgS2FseSBYaW4gKEFybSBUZWNobm9sb2d5IENoaW5h
KSA8S2FseS5YaW5AYXJtLmNvbT47DQo+IFdlaSBDaGVuIChBcm0gVGVjaG5vbG9neSBDaGluYSkg
PFdlaS5DaGVuQGFybS5jb20+DQo+IFN1YmplY3Q6IFJlOiBbVU5JS1JBRlQgUEFUQ0h2NiAwMi8y
M10gcGxhdC9pbmNsdWRlOiBVc2UgbWFjcm8tZWQgaGVscGVyIHRvDQo+IHNpbXBsaWZ5IGlvcmVn
X3JlYWQvd3JpdGUgZm9yIEFybTY0DQo+DQo+IEhlbGxvIEp1c3RpbiBIZSwNCj4NCj4gSSBkb3du
bG9hZGVkIHRoZSBwYXRjaCBzZXJpZXMgZnJvbSB0aGUgcGF0Y2h3b3JrIHNlcnZlcg0KPiAoaHR0
cHM6Ly9wYXRjaHdvcmsudW5pa3JhZnQub3JnLykgc2VyaWVzIDQzOC4gSSBjb3VsZCBzZWUgc3Bh
Y2UgaW5zdGVhZA0KPiBvZiB0YWIgaW4gdGhlIHBhdGNoIHNlcmllcy4gVGhpcyBpcyBhbHNvIHRy
dWUgb2YgdGhlIHBhdGNoICJjbGVhbiB1cA0KPiBrZXJuZWwgaW1hZ2Ugc3ltYm9scyIuDQo+DQo+
IFRoYW5rcyAmIFJlZ2FyZHMNCj4gU2hhcmFuDQo+DQo+IE9uIDIvMjYvMTkgMzowNyBBTSwgSnVz
dGluIEhlIChBcm0gVGVjaG5vbG9neSBDaGluYSkgd3JvdGU6DQo+ID4gSGkgU2hhcmFuDQo+ID4g
U29ycnksIGl0IGlzIGEgbGl0dGxlIGJpdCBzdHJhbmdlIHRvIG1lLiBJIGNhbid0IHJlcHJvZHVj
ZSB0byBnZXQgeW91ciBjaGVja3BhdGNoDQo+IHdhcm5pbmcgbG9jYWxseSDimLkNCj4gPiBDb3Vs
ZCB5b3UgcGxlYXNlIHRlbGwgaG93IGRvIHlvdSIgZ2l0IGFtIiB0aGUgcGF0Y2ggc2V0Pw0KPiA+
DQo+ID4gSGVyZSBpcyBteSByZXN1bHQsIGFsdGhvdWdoIHRoZXJlIGFyZSBzb21lIGZhbHNlIHBv
c2l0aXZlIGVycm9yL3dhcm5pbmdzIHlvdQ0KPiBvbmNlIG1lbnRpb25lZC4NCj4gPiAjIC4vc3Vw
cG9ydC9zY3JpcHRzL2NoZWNrcGF0Y2gucGwgcGF0Y2hfdjYvMDAwMi1wbGF0LWluY2x1ZGUtVXNl
LW1hY3JvLWVkLQ0KPiBoZWxwZXItdG8tc2ltcGxpZnktaW9yZWdfci5wYXRjaA0KPiA+IEVSUk9S
OiBuZWVkIGNvbnNpc3RlbnQgc3BhY2luZyBhcm91bmQgJyonIChjdHg6V3hWKQ0KPiA+ICM2OTog
RklMRTogcGxhdC9jb21tb24vaW5jbHVkZS9hcm0vYXJtNjQvY3B1Lmg6NDA6DQo+ID4gKyAgICAg
ICBpb3JlZ19yZWFkIyNiaXRzKGNvbnN0IHZvbGF0aWxlIHVpbnQjI2JpdHMjI190ICphZGRyKSBc
DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBeDQo+ID4NCj4gPiBXQVJOSU5HOiBVc2Ugb2Ygdm9sYXRpbGUgaXMgdXN1YWxseSB3cm9u
Zzogc2VlDQo+IERvY3VtZW50YXRpb24vcHJvY2Vzcy92b2xhdGlsZS1jb25zaWRlcmVkLWhhcm1m
dWwucnN0DQo+ID4gIzY5OiBGSUxFOiBwbGF0L2NvbW1vbi9pbmNsdWRlL2FybS9hcm02NC9jcHUu
aDo0MDoNCj4gPiArICAgICAgIGlvcmVnX3JlYWQjI2JpdHMoY29uc3Qgdm9sYXRpbGUgdWludCMj
Yml0cyMjX3QgKmFkZHIpIFwNCj4gPg0KPiA+IEVSUk9SOiBuZWVkIGNvbnNpc3RlbnQgc3BhY2lu
ZyBhcm91bmQgJyonIChjdHg6V3hWKQ0KPiA+ICM3NDogRklMRTogcGxhdC9jb21tb24vaW5jbHVk
ZS9hcm0vYXJtNjQvY3B1Lmg6NDU6DQo+ID4gKyAgICAgICBpb3JlZ193cml0ZSMjYml0cyh2b2xh
dGlsZSB1aW50IyNiaXRzIyNfdCAqYWRkciwgXA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4NCj4gPg0KPiA+IFdBUk5JTkc6IFVzZSBvZiB2
b2xhdGlsZSBpcyB1c3VhbGx5IHdyb25nOiBzZWUNCj4gRG9jdW1lbnRhdGlvbi9wcm9jZXNzL3Zv
bGF0aWxlLWNvbnNpZGVyZWQtaGFybWZ1bC5yc3QNCj4gPiAjNzQ6IEZJTEU6IHBsYXQvY29tbW9u
L2luY2x1ZGUvYXJtL2FybTY0L2NwdS5oOjQ1Og0KPiA+ICsgICAgICAgaW9yZWdfd3JpdGUjI2Jp
dHModm9sYXRpbGUgdWludCMjYml0cyMjX3QgKmFkZHIsIFwNCj4gPg0KPiA+IEVSUk9SOiBNYWNy
b3Mgd2l0aCBjb21wbGV4IHZhbHVlcyBzaG91bGQgYmUgZW5jbG9zZWQgaW4gcGFyZW50aGVzZXMN
Cj4gPiAjNzk6IEZJTEU6IHBsYXQvY29tbW9uL2luY2x1ZGUvYXJtL2FybTY0L2NwdS5oOjUwOg0K
PiA+ICsjZGVmaW5lIF9fSU9SRUdfUkVBRF9BTEwoKSBfX0lPUkVHX1JFQUQoOCkgIFwNCj4gPiAr
ICAgICAgICAgICAgICAgICAgICAgICAgICBfX0lPUkVHX1JFQUQoMTYpIFwNCj4gPiArICAgICAg
ICAgICAgICAgICAgICAgICAgICBfX0lPUkVHX1JFQUQoMzIpIFwNCj4gPiArICAgICAgICAgICAg
ICAgICAgICAgICAgICBfX0lPUkVHX1JFQUQoNjQpIFwNCj4gPiArDQo+ID4NCj4gPiBFUlJPUjog
TWFjcm9zIHdpdGggY29tcGxleCB2YWx1ZXMgc2hvdWxkIGJlIGVuY2xvc2VkIGluIHBhcmVudGhl
c2VzDQo+ID4gIzg0OiBGSUxFOiBwbGF0L2NvbW1vbi9pbmNsdWRlL2FybS9hcm02NC9jcHUuaDo1
NToNCj4gPiArI2RlZmluZSBfX0lPUkVHX1dSSVRFX0FMTCgpICAgIF9fSU9SRUdfV1JJVEUoOCkg
IFwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICBfX0lPUkVHX1dSSVRFKDE2KSBcDQo+
ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgX19JT1JFR19XUklURSgzMikgXA0KPiA+ICsg
ICAgICAgICAgICAgICAgICAgICAgICAgIF9fSU9SRUdfV1JJVEUoNjQpIFwNCj4gPiArDQo+ID4N
Cj4gPiB0b3RhbDogNCBlcnJvcnMsIDIgd2FybmluZ3MsIDcwIGxpbmVzIGNoZWNrZWQNCj4gPg0K
PiA+IE5PVEU6IEZvciBzb21lIG9mIHRoZSByZXBvcnRlZCBkZWZlY3RzLCBjaGVja3BhdGNoIG1h
eSBiZSBhYmxlIHRvDQo+ID4gICAgICAgIG1lY2hhbmljYWxseSBjb252ZXJ0IHRvIHRoZSB0eXBp
Y2FsIHN0eWxlIHVzaW5nIC0tZml4IG9yIC0tZml4LWlucGxhY2UuDQo+ID4NCj4gPiBwYXRjaF92
Ni8wMDAyLXBsYXQtaW5jbHVkZS1Vc2UtbWFjcm8tZWQtaGVscGVyLXRvLXNpbXBsaWZ5LWlvcmVn
X3IucGF0Y2gNCj4gaGFzIHN0eWxlIHByb2JsZW1zLCBwbGVhc2UgcmV2aWV3Lg0KPiA+DQo+ID4g
Tk9URTogSWdub3JlZCBtZXNzYWdlIHR5cGVzOiBBU1NJR05fSU5fSUYgTkVXX1RZUEVERUZTDQo+
ID4NCj4gPiBOT1RFOiBJZiBhbnkgb2YgdGhlIGVycm9ycyBhcmUgZmFsc2UgcG9zaXRpdmVzLCBw
bGVhc2UgcmVwb3J0DQo+ID4gICAgICAgIHRoZW0gdG8gdGhlIG1haW50YWluZXIsIHNlZSBDSEVD
S1BBVENIIGluIE1BSU5UQUlORVJTLg0KPiA+DQo+ID4gSW4gdGhlIG90aGVyIHdheSwgeW91IGNh
biBhbHNvIGdldCB0aGUgd2hvbGUgcGF0Y2ggc2VyaWVzIGJ5DQo+ID4gZ2l0IGNsb25lIGh0dHBz
Oi8vZ2l0aHViLmNvbS9oZWppYW5ldC91bmlrcmFmdF9hcm02NC5naXQgLWIgMXN0c2V0X3Y2DQo+
ID4NCj4gPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4gRnJvbTogU2hhcmFuIFNh
bnRoYW5hbSA8c2hhcmFuLnNhbnRoYW5hbUBuZWNsYWIuZXU+DQo+ID4+IFNlbnQ6IDIwMTnlubQy
5pyIMjXml6UgMjA6MzkNCj4gPj4gVG86IEp1c3RpbiBIZSAoQXJtIFRlY2hub2xvZ3kgQ2hpbmEp
IDxKdXN0aW4uSGVAYXJtLmNvbT47IG1pbmlvcy0NCj4gPj4gZGV2ZWxAbGlzdHMueGVucHJvamVj
dC5vcmc7IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1Pg0KPiA+PiBDYzog
RmxvcmlhbiBTY2htaWR0IDxmbG9yaWFuLnNjaG1pZHRAbmVjbGFiLmV1PjsgRmVsaXBlIEh1aWNp
DQo+ID4+IDxmZWxpcGUuaHVpY2lAbmVjbGFiLmV1PjsgSnVsaWVuIEdyYWxsIDxKdWxpZW4uR3Jh
bGxAYXJtLmNvbT47DQo+ID4+IHl1cmkudm9sY2hrb3ZAbmVjbGFiLmV1OyBLYWx5IFhpbiAoQXJt
IFRlY2hub2xvZ3kgQ2hpbmEpDQo+IDxLYWx5LlhpbkBhcm0uY29tPjsNCj4gPj4gV2VpIENoZW4g
KEFybSBUZWNobm9sb2d5IENoaW5hKSA8V2VpLkNoZW5AYXJtLmNvbT4NCj4gPj4gU3ViamVjdDog
UmU6IFtVTklLUkFGVCBQQVRDSHY2IDAyLzIzXSBwbGF0L2luY2x1ZGU6IFVzZSBtYWNyby1lZCBo
ZWxwZXINCj4gdG8NCj4gPj4gc2ltcGxpZnkgaW9yZWdfcmVhZC93cml0ZSBmb3IgQXJtNjQNCj4g
Pj4NCj4gPj4gSGVsbG8gSmlhIEhlLA0KPiA+Pg0KPiA+PiBXZSBoYXZlIGludHJvZHVjZWQgc29t
ZSBjaGVja3BhdGNoIGVycm9ycy93YXJuaW5nIGluIHRoaXMgcGF0Y2ggc2VyaWVzLg0KPiA+PiBX
ZSBoYXZlIHJlcGxhY2VkIGFsbCB0aGUgdGFicyB3aXRoIHNwYWNlcy4NCj4gPj4NCj4gPj4gUGxl
YXNlIGZpbmQgd2FybmluZy9lcnJvcnMgaW5saW5lLg0KPiA+Pg0KPiA+PiBUaGFua3MgJiBSZWdh
cmRzDQo+ID4+IFNoYXJhbg0KPiA+Pg0KPiA+PiBPbiAyLzIyLzE5IDc6MjEgQU0sIEppYSBIZSB3
cm90ZToNCj4gPj4+IEZyb206IFdlaSBDaGVuIDx3ZWkuY2hlbkBhcm0uY29tPg0KPiA+Pj4gQXMg
ZGlzY3Vzc2VkIGluIG1haWxpbmcgbGlzdCBbMV0sIHdlIGNhbiB1c2UgbWFjcm8tZWQgaGVscGVy
cyB0byBhdm9pZA0KPiA+Pj4gaGF2aW5nIHRvIHdyaXRlIDQgdGltZXMgb2YgdGhlIHNhbWUgdGhp
bmdzIG9mIGlvcmVnX3JlYWRfOC8xNi8zMi82NCBhbmQNCj4gPj4+IGlvcmVnX3dyaXRlOC8xNi8z
Mi82NC4NCj4gPj4+DQo+ID4+PiBTaWduZWQtb2ZmLWJ5OiBXZWkgQ2hlbiA8d2VpLmNoZW5AYXJt
LmNvbT4NCj4gPj4+IFNpZ25lZC1vZmYtYnk6IEppYSBIZSA8anVzdGluLmhlQGFybS5jb20+DQo+
ID4+PiBSZXZpZXdlZC1ieTogU2hhcmFuIFNhbnRoYW5hbSA8c2hhcmFuLnNhbnRoYW5hbUBuZWNs
YWIuZXU+DQo+ID4+PiAtLS0NCj4gPj4+ICAgIHBsYXQvY29tbW9uL2luY2x1ZGUvYXJtL2FybTY0
L2NwdS5oIHwgNjQgKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0NCj4gPj4+ICAgIDEgZmls
ZSBjaGFuZ2VkLCAyNSBpbnNlcnRpb25zKCspLCAzOSBkZWxldGlvbnMoLSkNCj4gPj4+DQo+ID4+
PiBkaWZmIC0tZ2l0IGEvcGxhdC9jb21tb24vaW5jbHVkZS9hcm0vYXJtNjQvY3B1LmgNCj4gPj4g
Yi9wbGF0L2NvbW1vbi9pbmNsdWRlL2FybS9hcm02NC9jcHUuaA0KPiA+Pj4gaW5kZXggNTAzYmM2
OC4uYzAwOWZjOCAxMDA2NDQNCj4gPj4+IC0tLSBhL3BsYXQvY29tbW9uL2luY2x1ZGUvYXJtL2Fy
bTY0L2NwdS5oDQo+ID4+PiArKysgYi9wbGF0L2NvbW1vbi9pbmNsdWRlL2FybS9hcm02NC9jcHUu
aA0KPiA+Pj4gQEAgLTM0LDQ1ICszNCwzMSBAQA0KPiA+Pj4NCj4gPj4+ICAgICNpbmNsdWRlIDxp
bnR0eXBlcy5oPg0KPiA+Pj4NCj4gPj4+IC1zdGF0aWMgaW5saW5lIHVpbnQ4X3QgaW9yZWdfcmVh
ZDgoY29uc3Qgdm9sYXRpbGUgdWludDhfdCAqYWRkcikNCj4gPj4+IC17DQo+ID4+PiAtICAgICAg
IHJldHVybiAqYWRkcjsNCj4gPj4+IC19DQo+ID4+PiAtDQo+ID4+PiAtc3RhdGljIGlubGluZSB2
b2lkIGlvcmVnX3dyaXRlOCh2b2xhdGlsZSB1aW50OF90ICphZGRyLCB1aW50OF90IHZhbHVlKQ0K
PiA+Pj4gLXsNCj4gPj4+IC0gICAgICAgKmFkZHIgPSB2YWx1ZTsNCj4gPj4+IC19DQo+ID4+PiAt
DQo+ID4+PiAtc3RhdGljIGlubGluZSB1aW50MTZfdCBpb3JlZ19yZWFkMTYoY29uc3Qgdm9sYXRp
bGUgdWludDE2X3QgKmFkZHIpDQo+ID4+PiAtew0KPiA+Pj4gLSAgICAgICByZXR1cm4gKmFkZHI7
DQo+ID4+PiAtfQ0KPiA+Pj4gLQ0KPiA+Pj4gLXN0YXRpYyBpbmxpbmUgdm9pZCBpb3JlZ193cml0
ZTE2KHZvbGF0aWxlIHVpbnQxNl90ICphZGRyLCB1aW50MTZfdCB2YWx1ZSkNCj4gPj4+IC17DQo+
ID4+PiAtICAgICAgICphZGRyID0gdmFsdWU7DQo+ID4+PiAtfQ0KPiA+Pj4gLQ0KPiA+Pj4gLXN0
YXRpYyBpbmxpbmUgdWludDMyX3QgaW9yZWdfcmVhZDMyKGNvbnN0IHZvbGF0aWxlIHVpbnQzMl90
ICphZGRyKQ0KPiA+Pj4gLXsNCj4gPj4+IC0gICAgICAgcmV0dXJuICphZGRyOw0KPiA+Pj4gLX0N
Cj4gPj4+IC0NCj4gPj4+IC1zdGF0aWMgaW5saW5lIHZvaWQgaW9yZWdfd3JpdGUzMih2b2xhdGls
ZSB1aW50MzJfdCAqYWRkciwgdWludDMyX3QgdmFsdWUpDQo+ID4+PiAtew0KPiA+Pj4gLSAgICAg
ICAqYWRkciA9IHZhbHVlOw0KPiA+Pj4gLX0NCj4gPj4+IC0NCj4gPj4+IC1zdGF0aWMgaW5saW5l
IHVpbnQ2NF90IGlvcmVnX3JlYWQ2NChjb25zdCB2b2xhdGlsZSB1aW50NjRfdCAqYWRkcikNCj4g
Pj4+IC17DQo+ID4+PiAtICAgICAgIHJldHVybiAqYWRkcjsNCj4gPj4+IC19DQo+ID4+PiAtDQo+
ID4+PiAtc3RhdGljIGlubGluZSB2b2lkIGlvcmVnX3dyaXRlNjQodm9sYXRpbGUgdWludDY0X3Qg
KmFkZHIsIHVpbnQ2NF90IHZhbHVlKQ0KPiA+Pj4gLXsNCj4gPj4+IC0gICAgICAgKmFkZHIgPSB2
YWx1ZTsNCj4gPj4+IC19DQo+ID4+DQo+ID4+DQo+ID4+IEVSUk9SOiBjb2RlIGluZGVudCBzaG91
bGQgdXNlIHRhYnMgd2hlcmUgcG9zc2libGUNCj4gPj4gIzY2OiBGSUxFOiBwbGF0L2NvbW1vbi9p
bmNsdWRlL2FybS9hcm02NC9jcHUuaDo0MToNCj4gPj4gKyAgICAgICAgICAgICAgIHsgcmV0dXJu
ICphZGRyOyB9JA0KPiA+Pj4gKy8qIERlZmluZSBtYWNyb3MgdG8gYWNjZXNzIElPIHJlZ2lzdGVy
cyAqLw0KPiA+Pj4gKyNkZWZpbmUgX19JT1JFR19SRUFEKGJpdHMpIFwNCj4gPj4+ICtzdGF0aWMg
aW5saW5lIHVpbnQjI2JpdHMjI190IFwNCj4gPj4+ICsgICAgICAgaW9yZWdfcmVhZCMjYml0cyhj
b25zdCB2b2xhdGlsZSB1aW50IyNiaXRzIyNfdCAqYWRkcikgXA0KPiA+Pj4gKyAgICAgICAgICAg
ICAgIHsgcmV0dXJuICphZGRyOyB9DQo+ID4+PiArDQo+ID4+PiArI2RlZmluZSBfX0lPUkVHX1dS
SVRFKGJpdHMpIFwNCj4gPj4+ICtzdGF0aWMgaW5saW5lIHZvaWQgXA0KPiA+Pj4gKyAgICAgICBp
b3JlZ193cml0ZSMjYml0cyh2b2xhdGlsZSB1aW50IyNiaXRzIyNfdCAqYWRkciwgXA0KPiA+Pg0K
PiA+PiBFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIHVzZSB0YWJzIHdoZXJlIHBvc3NpYmxlDQo+
ID4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50
IyNiaXRzIyNfdCB2YWx1ZSkgXA0KPiA+Pg0KPiA+PiBFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxk
IHVzZSB0YWJzIHdoZXJlIHBvc3NpYmxlDQo+ID4+PiArICAgICAgICAgICAgICAgeyAqYWRkciA9
IHZhbHVlOyB9DQo+ID4+PiArDQo+ID4+PiArDQo+ID4+DQo+ID4+IEVSUk9SOiBjb2RlIGluZGVu
dCBzaG91bGQgdXNlIHRhYnMgd2hlcmUgcG9zc2libGUNCj4gPj4+ICsjZGVmaW5lIF9fSU9SRUdf
UkVBRF9BTEwoKSBfX0lPUkVHX1JFQUQoOCkgIFwNCj4gPj4+ICsgICAgICAgICAgICAgICAgICAg
ICAgICAgIF9fSU9SRUdfUkVBRCgxNikgXA0KPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgX19JT1JFR19SRUFEKDMyKSBcDQo+ID4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICBf
X0lPUkVHX1JFQUQoNjQpIFwNCj4gPj4+ICsNCj4gPj4+ICsjZGVmaW5lIF9fSU9SRUdfV1JJVEVf
QUxMKCkgICAgX19JT1JFR19XUklURSg4KSAgXA0KPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgX19JT1JFR19XUklURSgxNikgXA0KPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgX19JT1JFR19XUklURSgzMikgXA0KPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg
X19JT1JFR19XUklURSg2NCkgXA0KPiA+Pj4gKw0KPiA+Pj4gK19fSU9SRUdfUkVBRF9BTEwoKQ0K
PiA+Pj4gK19fSU9SRUdfV1JJVEVfQUxMKCkNCj4gPj4+DQo+ID4+PiAgICBzdGF0aWMgaW5saW5l
IHZvaWQgX2luaXRfY3B1ZmVhdHVyZXModm9pZCkNCj4gPj4+ICAgIHsNCj4gPj4+IC0tDQo+ID4+
PiAyLjE3LjENCj4gPj4+DQo+ID4+PiBJTVBPUlRBTlQgTk9USUNFOiBUaGUgY29udGVudHMgb2Yg
dGhpcyBlbWFpbCBhbmQgYW55IGF0dGFjaG1lbnRzIGFyZQ0KPiA+PiBjb25maWRlbnRpYWwgYW5k
IG1heSBhbHNvIGJlIHByaXZpbGVnZWQuIElmIHlvdSBhcmUgbm90IHRoZSBpbnRlbmRlZCByZWNp
cGllbnQsDQo+ID4+IHBsZWFzZSBub3RpZnkgdGhlIHNlbmRlciBpbW1lZGlhdGVseSBhbmQgZG8g
bm90IGRpc2Nsb3NlIHRoZSBjb250ZW50cyB0byBhbnkNCj4gPj4gb3RoZXIgcGVyc29uLCB1c2Ug
aXQgZm9yIGFueSBwdXJwb3NlLCBvciBzdG9yZSBvciBjb3B5IHRoZSBpbmZvcm1hdGlvbiBpbiBh
bnkNCj4gPj4gbWVkaXVtLiBUaGFuayB5b3UuDQo+ID4+Pg0KPiA+IElNUE9SVEFOVCBOT1RJQ0U6
IFRoZSBjb250ZW50cyBvZiB0aGlzIGVtYWlsIGFuZCBhbnkgYXR0YWNobWVudHMgYXJlDQo+IGNv
bmZpZGVudGlhbCBhbmQgbWF5IGFsc28gYmUgcHJpdmlsZWdlZC4gSWYgeW91IGFyZSBub3QgdGhl
IGludGVuZGVkIHJlY2lwaWVudCwNCj4gcGxlYXNlIG5vdGlmeSB0aGUgc2VuZGVyIGltbWVkaWF0
ZWx5IGFuZCBkbyBub3QgZGlzY2xvc2UgdGhlIGNvbnRlbnRzIHRvIGFueQ0KPiBvdGhlciBwZXJz
b24sIHVzZSBpdCBmb3IgYW55IHB1cnBvc2UsIG9yIHN0b3JlIG9yIGNvcHkgdGhlIGluZm9ybWF0
aW9uIGluIGFueQ0KPiBtZWRpdW0uIFRoYW5rIHlvdS4NCj4gPg0KSU1QT1JUQU5UIE5PVElDRTog
VGhlIGNvbnRlbnRzIG9mIHRoaXMgZW1haWwgYW5kIGFueSBhdHRhY2htZW50cyBhcmUgY29uZmlk
ZW50aWFsIGFuZCBtYXkgYWxzbyBiZSBwcml2aWxlZ2VkLiBJZiB5b3UgYXJlIG5vdCB0aGUgaW50
ZW5kZWQgcmVjaXBpZW50LCBwbGVhc2Ugbm90aWZ5IHRoZSBzZW5kZXIgaW1tZWRpYXRlbHkgYW5k
IGRvIG5vdCBkaXNjbG9zZSB0aGUgY29udGVudHMgdG8gYW55IG90aGVyIHBlcnNvbiwgdXNlIGl0
IGZvciBhbnkgcHVycG9zZSwgb3Igc3RvcmUgb3IgY29weSB0aGUgaW5mb3JtYXRpb24gaW4gYW55
IG1lZGl1bS4gVGhhbmsgeW91Lg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMu
eGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3Rp
bmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Feb 27 10:41:31 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 27 Feb 2019 10:41:31 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gyweX-0005WS-I3; Wed, 27 Feb 2019 10:41:29 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=aIM8=RC=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1gyweW-0005WN-Us
 for minios-devel@lists.xenproject.org; Wed, 27 Feb 2019 10:41:29 +0000
X-Inumbo-ID: 3895b332-3a7c-11e9-ac2a-5f69f29c625f
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 3895b332-3a7c-11e9-ac2a-5f69f29c625f;
 Wed, 27 Feb 2019 10:41:21 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id A6567F2046;
 Wed, 27 Feb 2019 11:41:20 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id DZlEhHCY-YMO; Wed, 27 Feb 2019 11:41:20 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 6CD42F201B;
 Wed, 27 Feb 2019 11:41:10 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 27 Feb 2019 11:41:10
 +0100
To: Jia He <justin.he@arm.com>, <minios-devel@lists.xenproject.org>, Simon
 Kuenzer <simon.kuenzer@neclab.eu>
References: <20190222062200.26602-1-justin.he@arm.com>
 <20190222062200.26602-5-justin.he@arm.com>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <161ddc49-439b-eae5-09bf-22b002b61e44@neclab.eu>
Date: Wed, 27 Feb 2019 11:41:09 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190222062200.26602-5-justin.he@arm.com>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCHv6 04/23] plat: Clean up kernel
 image symbols
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>, Wei Chen <wei.chen@arm.com>,
 Kaly Xin <Kaly.Xin@arm.com>, Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gSmlhIEhlLAoKUGxlYXNlIGZpbmQgYSBjb21tZW50IGlubGluZS4KClRoYW5rcyAmIFJl
Z2FyZHMKU2hhcmFuCgpPbiAyLzIyLzE5IDc6MjEgQU0sIEppYSBIZSB3cm90ZToKPiBGcm9tOiBX
ZWkgQ2hlbiA8d2VpLmNoZW5AYXJtLmNvbT4KPiBUaGVyZSBpcyBhIHBvdGVudGlhbCB1bmRlZmlu
ZWQgYmVoYXZpb3VyIGZvciBwb2ludGVyIGNvbXBhcmlzaW9uLgo+IEhvdyB0byBhdm9pZCB0aGlz
IGdjYyBvcHRpbWl6YXRpb24gaXMgdW5kZXIgZGlzY3Vzc2luZy4gU2luY2UgaXQKPiBpcyBub3Qg
YSBibG9jayBpc3N1ZS4gSSB3aWxsIGZvbGxvdyBpdCB1cCBpbiB0aGUgZnV0dXJlLgo+IFByb3Zp
ZGUgbWFjcm8gZGVmaW5pdGlvbnMgZm9yIHRleHQsYnNzLGRhdGEuLi4gaXMgdGhlIHByZWNvbmRp
dGlvbgo+IGZvciBmdXR1cmUgc29sdXRpb24uCj4gCj4gU2lnbmVkLW9mZi1ieTogV2VpIENoZW4g
PHdlaS5jaGVuQGFybS5jb20+Cj4gU2lnbmVkLW9mZi1ieTogSmlhIEhlIDxqdXN0aW4uaGVAYXJt
LmNvbT4KPiBSZXZpZXdlZC1ieTogU2hhcmFuIFNhbnRoYW5hbSA8c2hhcmFuLnNhbnRoYW5hbUBu
ZWNsYWIuZXU+Cj4gLS0tCj4gdjUtPnY2OiBmaXggY29tcGlsYXRpb24gZXJyb3Igb24geDg2IHhl
biBwbGF0Lgo+IAo+IC0tLQo+ICAgcGxhdC9jb21tb24vaW5jbHVkZS9zZWN0aW9ucy5oIHwgMTQg
KysrKysrKysrKysrKysKPiAgIHBsYXQva3ZtL2FybS9zZXR1cC5jICAgICAgICAgICB8ICA3ICsr
Ky0tLS0KPiAgIHBsYXQva3ZtL21lbW9yeS5jICAgICAgICAgICAgICB8IDIzICsrKysrKysrKysr
LS0tLS0tLS0tLS0tCj4gICBwbGF0L2t2bS94ODYvc2V0dXAuYyAgICAgICAgICAgfCAgNiArKyst
LS0KPiAgIHBsYXQveGVuL2FybS9zZXR1cC5jICAgICAgICAgICB8ICA2ICsrKy0tLQo+ICAgcGxh
dC94ZW4vaW5jbHVkZS94ZW4tYXJtL21tLmggIHwgIDMgKy0tCj4gICBwbGF0L3hlbi9pbmNsdWRl
L3hlbi14ODYvbW0uaCAgfCAyMSArKysrKysrKysrKy0tLS0tLS0tLS0KPiAgIHBsYXQveGVuL21l
bW9yeS5jICAgICAgICAgICAgICB8IDIyICsrKysrKysrKysrLS0tLS0tLS0tLS0KPiAgIHBsYXQv
eGVuL3g4Ni9tbS5jICAgICAgICAgICAgICB8IDE3ICsrKysrKysrLS0tLS0tLS0tCj4gICBwbGF0
L3hlbi94ODYvc2V0dXAuYyAgICAgICAgICAgfCAgMiArLQo+ICAgMTAgZmlsZXMgY2hhbmdlZCwg
NjYgaW5zZXJ0aW9ucygrKSwgNTUgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL3BsYXQv
Y29tbW9uL2luY2x1ZGUvc2VjdGlvbnMuaCBiL3BsYXQvY29tbW9uL2luY2x1ZGUvc2VjdGlvbnMu
aAo+IGluZGV4IDQyZjQxZDIuLjE3MDFiMDAgMTAwNjQ0Cj4gLS0tIGEvcGxhdC9jb21tb24vaW5j
bHVkZS9zZWN0aW9ucy5oCj4gKysrIGIvcGxhdC9jb21tb24vaW5jbHVkZS9zZWN0aW9ucy5oCj4g
QEAgLTYyLDQgKzYyLDE4IEBAIGV4dGVybiBjaGFyIF9fYnNzX3N0YXJ0W107Cj4gICAvKiBfZW5k
OiBlbmQgb2Yga2VybmVsIGltYWdlICovCj4gICBleHRlcm4gY2hhciBfZW5kW107Cj4gCj4gKyNk
ZWZpbmUgX191a19pbWFnZV9zeW1ib2woYWRkcikgICAgKCh1bnNpZ25lZCBsb25nKShhZGRyKSkK
PiArCj4gKyNkZWZpbmUgX19EVEIgICAgICAgICAgX191a19pbWFnZV9zeW1ib2woX2R0YikKPiAr
I2RlZmluZSBfX1RFWFQgICAgICAgICBfX3VrX2ltYWdlX3N5bWJvbChfdGV4dCkKPiArI2RlZmlu
ZSBfX0VURVhUICAgICAgICAgICAgICAgIF9fdWtfaW1hZ2Vfc3ltYm9sKF9ldGV4dCkKPiArI2Rl
ZmluZSBfX1JPREFUQSAgICAgICBfX3VrX2ltYWdlX3N5bWJvbChfcm9kYXRhKQo+ICsjZGVmaW5l
IF9fRVJPREFUQSAgICAgIF9fdWtfaW1hZ2Vfc3ltYm9sKF9lcm9kYXRhKQo+ICsjZGVmaW5lIF9f
REFUQSAgICAgICAgIF9fdWtfaW1hZ2Vfc3ltYm9sKF9kYXRhKQo+ICsjZGVmaW5lIF9fRURBVEEg
ICAgICAgICAgICAgICAgX191a19pbWFnZV9zeW1ib2woX2VkYXRhKQo+ICsjZGVmaW5lIF9fQ1RP
UlMgICAgICAgICAgICAgICAgX191a19pbWFnZV9zeW1ib2woX2N0b3JzKQo+ICsjZGVmaW5lIF9f
RUNUT1JTICAgICAgIF9fdWtfaW1hZ2Vfc3ltYm9sKF9lY3RvcnMpCj4gKyNkZWZpbmUgX19CU1Nf
U1RBUlQgICAgX191a19pbWFnZV9zeW1ib2woX19ic3Nfc3RhcnQpCj4gKyNkZWZpbmUgX19FTkQg
ICAgICAgICAgX191a19pbWFnZV9zeW1ib2woX2VuZCkKPiArCj4gICAjZW5kaWYgLyogX19QTEFU
X0NNTl9TRUNUSU9OU19IX18gKi8KPiBkaWZmIC0tZ2l0IGEvcGxhdC9rdm0vYXJtL3NldHVwLmMg
Yi9wbGF0L2t2bS9hcm0vc2V0dXAuYwo+IGluZGV4IDA5NTMwYmIuLjE4NjIxMTggMTAwNjQ0Cj4g
LS0tIGEvcGxhdC9rdm0vYXJtL3NldHVwLmMKPiArKysgYi9wbGF0L2t2bS9hcm0vc2V0dXAuYwo+
IEBAIC0xOSw2ICsxOSw3IEBACj4gICAgKiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQRVJG
T1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgo+ICAgICovCj4gICAjaW5jbHVkZSA8bGliZmR0Lmg+
Cj4gKyNpbmNsdWRlIDxzZWN0aW9ucy5oPgo+ICAgI2luY2x1ZGUgPGt2bS9jb25zb2xlLmg+Cj4g
ICAjaW5jbHVkZSA8dWsvYXNzZXJ0Lmg+Cj4gICAjaW5jbHVkZSA8a3ZtLWFybS9tbS5oPgo+IEBA
IC05NSw4ICs5Niw2IEBAIGVub21ldGhvZDoKPiAKPiAgIHN0YXRpYyB2b2lkIF9pbml0X2R0Yl9t
ZW0odm9pZCkKPiAgIHsKPiAtICAgICAgIGV4dGVybiBjaGFyIF90ZXh0W107Cj4gLSAgICAgICBl
eHRlcm4gY2hhciBfZW5kW107Cj4gICAgICAgICAgaW50IGZkdF9tZW0sIHByb3BfbGVuID0gMCwg
cHJvcF9taW5fbGVuOwo+ICAgICAgICAgIGludCBuYWRkciwgbnNpemU7Cj4gICAgICAgICAgY29u
c3QgdWludDY0X3QgKnJlZ3M7Cj4gQEAgLTE0MiwxMSArMTQxLDExIEBAIHN0YXRpYyB2b2lkIF9p
bml0X2R0Yl9tZW0odm9pZCkKPiAKPiAgICAgICAgICBtZW1fYmFzZSA9IGZkdDY0X3RvX2NwdShy
ZWdzWzBdKTsKPiAgICAgICAgICBtZW1fc2l6ZSA9IGZkdDY0X3RvX2NwdShyZWdzWzFdKTsKPiAt
ICAgICAgIGlmIChtZW1fYmFzZSA+ICh1aW50NjRfdCkmX3RleHQpCgpSZWR1bmRhbnQgdHlwZSBj
b252ZXJzaW9uLgo+ICsgICAgICAgaWYgKG1lbV9iYXNlID4gKHVuc2lnbmVkIGxvbmcpX19URVhU
KQo+ICAgICAgICAgICAgICAgICAgVUtfQ1JBU0goIkZhdGFsOiBJbWFnZSBvdXRzaWRlIG9mIFJB
TVxuIik7Cj4gCj4gICAgICAgICAgbWF4X2FkZHIgPSBtZW1fYmFzZSArIG1lbV9zaXplOwo+IC0g
ICAgICAgX2xpYmt2bXBsYXRfcGFnZXRhYmxlID0odm9pZCAqKSBBTElHTl9ET1dOKChzaXplX3Qp
Jl9lbmQsIF9fUEFHRV9TSVpFKTsKPiArICAgICAgIF9saWJrdm1wbGF0X3BhZ2V0YWJsZSA9ICh2
b2lkICopIEFMSUdOX0RPV04oKHNpemVfdClfX0VORCwgX19QQUdFX1NJWkUpOwo+ICAgICAgICAg
IF9saWJrdm1wbGF0X2hlYXBfc3RhcnQgPSBfbGlia3ZtcGxhdF9wYWdldGFibGUgKyBQQUdFX1RB
QkxFX1NJWkU7Cj4gICAgICAgICAgX2xpYmt2bXBsYXRfbWVtX2VuZCA9ICh2b2lkICopIG1heF9h
ZGRyOwo+IAo+IGRpZmYgLS1naXQgYS9wbGF0L2t2bS9tZW1vcnkuYyBiL3BsYXQva3ZtL21lbW9y
eS5jCj4gaW5kZXggMTFjOTkzZC4uYTdiNGQ1ZSAxMDA2NDQKPiAtLS0gYS9wbGF0L2t2bS9tZW1v
cnkuYwo+ICsrKyBiL3BsYXQva3ZtL21lbW9yeS5jCj4gQEAgLTE5LDYgKzE5LDcgQEAKPiAgICAq
IENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUu
Cj4gICAgKi8KPiAKPiArI2luY2x1ZGUgPHNlY3Rpb25zLmg+Cj4gICAjaW5jbHVkZSA8c3lzL3R5
cGVzLmg+Cj4gICAjaW5jbHVkZSA8dWsvcGxhdC9tZW1vcnkuaD4KPiAgICNpbmNsdWRlIDx1ay9h
c3NlcnQuaD4KPiBAQCAtMzcsMTYgKzM4LDE0IEBAIGludCB1a3BsYXRfbWVtcmVnaW9uX2NvdW50
KHZvaWQpCj4gCj4gICBpbnQgdWtwbGF0X21lbXJlZ2lvbl9nZXQoaW50IGksIHN0cnVjdCB1a3Bs
YXRfbWVtcmVnaW9uX2Rlc2MgKm0pCj4gICB7Cj4gLSAgICAgICBleHRlcm4gY2hhciBfdGV4dCwg
X2V0ZXh0LCBfZGF0YSwgX2VkYXRhLCBfcm9kYXRhLCBfZXJvZGF0YSwKPiAtICAgICAgICAgICAg
ICAgICAgIF9jdG9ycywgX2VjdG9ycywgX19ic3Nfc3RhcnQsIF9lbmQ7Cj4gICAgICAgICAgaW50
IHJldDsKPiAKPiAgICAgICAgICBVS19BU1NFUlQobSk7Cj4gCj4gICAgICAgICAgc3dpdGNoIChp
KSB7Cj4gICAgICAgICAgY2FzZSAwOiAvKiB0ZXh0ICovCj4gLSAgICAgICAgICAgICAgIG0tPmJh
c2UgID0gJl90ZXh0Owo+IC0gICAgICAgICAgICAgICBtLT5sZW4gICA9IChzaXplX3QpICZfZXRl
eHQgLSAoc2l6ZV90KSAmX3RleHQ7Cj4gKyAgICAgICAgICAgICAgIG0tPmJhc2UgID0gKHZvaWQg
KikgX19URVhUOwo+ICsgICAgICAgICAgICAgICBtLT5sZW4gICA9IChzaXplX3QpIF9fRVRFWFQg
LSAoc2l6ZV90KSBfX1RFWFQ7Cj4gICAgICAgICAgICAgICAgICBtLT5mbGFncyA9IChVS1BMQVRf
TUVNUkZfUkVTRVJWRUQKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVUtQTEFUX01F
TVJGX1JFQURBQkxFKTsKPiAgICNpZiBDT05GSUdfVUtQTEFUX01FTVJOQU1FCj4gQEAgLTU1LDgg
KzU0LDggQEAgaW50IHVrcGxhdF9tZW1yZWdpb25fZ2V0KGludCBpLCBzdHJ1Y3QgdWtwbGF0X21l
bXJlZ2lvbl9kZXNjICptKQo+ICAgICAgICAgICAgICAgICAgcmV0ID0gMDsKPiAgICAgICAgICAg
ICAgICAgIGJyZWFrOwo+ICAgICAgICAgIGNhc2UgMTogLyogcm9kYXRhICovCj4gLSAgICAgICAg
ICAgICAgIG0tPmJhc2UgID0gJl9yb2RhdGE7Cj4gLSAgICAgICAgICAgICAgIG0tPmxlbiAgID0g
KHNpemVfdCkgJl9lcm9kYXRhIC0gKHNpemVfdCkgJl9yb2RhdGE7Cj4gKyAgICAgICAgICAgICAg
IG0tPmJhc2UgID0gKHZvaWQgKikgX19ST0RBVEE7Cj4gKyAgICAgICAgICAgICAgIG0tPmxlbiAg
ID0gKHNpemVfdCkgX19FUk9EQVRBIC0gKHNpemVfdCkgX19ST0RBVEE7Cj4gICAgICAgICAgICAg
ICAgICBtLT5mbGFncyA9IChVS1BMQVRfTUVNUkZfUkVTRVJWRUQKPiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgVUtQTEFUX01FTVJGX1JFQURBQkxFKTsKPiAgICNpZiBDT05GSUdfVUtQ
TEFUX01FTVJOQU1FCj4gQEAgLTY1LDggKzY0LDggQEAgaW50IHVrcGxhdF9tZW1yZWdpb25fZ2V0
KGludCBpLCBzdHJ1Y3QgdWtwbGF0X21lbXJlZ2lvbl9kZXNjICptKQo+ICAgICAgICAgICAgICAg
ICAgcmV0ID0gMDsKPiAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICAgICAgICAgIGNhc2UgMjog
LyogY3RvcnMgKi8KPiAtICAgICAgICAgICAgICAgbS0+YmFzZSAgPSAmX2N0b3JzOwo+IC0gICAg
ICAgICAgICAgICBtLT5sZW4gICA9IChzaXplX3QpICZfZWN0b3JzIC0gKHNpemVfdCkgJl9jdG9y
czsKPiArICAgICAgICAgICAgICAgbS0+YmFzZSAgPSAodm9pZCAqKSBfX0NUT1JTOwo+ICsgICAg
ICAgICAgICAgICBtLT5sZW4gICA9IChzaXplX3QpIF9fRUNUT1JTIC0gKHNpemVfdCkgX19DVE9S
UzsKPiAgICAgICAgICAgICAgICAgIG0tPmZsYWdzID0gKFVLUExBVF9NRU1SRl9SRVNFUlZFRAo+
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBVS1BMQVRfTUVNUkZfUkVBREFCTEUpOwo+
ICAgI2lmIENPTkZJR19VS1BMQVRfTUVNUk5BTUUKPiBAQCAtNzUsOCArNzQsOCBAQCBpbnQgdWtw
bGF0X21lbXJlZ2lvbl9nZXQoaW50IGksIHN0cnVjdCB1a3BsYXRfbWVtcmVnaW9uX2Rlc2MgKm0p
Cj4gICAgICAgICAgICAgICAgICByZXQgPSAwOwo+ICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4g
ICAgICAgICAgY2FzZSAzOiAvKiBkYXRhICovCj4gLSAgICAgICAgICAgICAgIG0tPmJhc2UgID0g
Jl9kYXRhOwo+IC0gICAgICAgICAgICAgICBtLT5sZW4gICA9IChzaXplX3QpICZfZWRhdGEgLSAo
c2l6ZV90KSAmX2RhdGE7Cj4gKyAgICAgICAgICAgICAgIG0tPmJhc2UgID0gKHZvaWQgKikgX19E
QVRBOwo+ICsgICAgICAgICAgICAgICBtLT5sZW4gICA9IChzaXplX3QpIF9fRURBVEEgLSAoc2l6
ZV90KSBfX0RBVEE7Cj4gICAgICAgICAgICAgICAgICBtLT5mbGFncyA9IChVS1BMQVRfTUVNUkZf
UkVTRVJWRUQKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVUtQTEFUX01FTVJGX1JF
QURBQkxFCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFVLUExBVF9NRU1SRl9XUklU
QUJMRSk7Cj4gQEAgLTg2LDggKzg1LDggQEAgaW50IHVrcGxhdF9tZW1yZWdpb25fZ2V0KGludCBp
LCBzdHJ1Y3QgdWtwbGF0X21lbXJlZ2lvbl9kZXNjICptKQo+ICAgICAgICAgICAgICAgICAgcmV0
ID0gMDsKPiAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICAgICAgICAgIGNhc2UgNDogLyogYnNz
ICovCj4gLSAgICAgICAgICAgICAgIG0tPmJhc2UgID0gJl9fYnNzX3N0YXJ0Owo+IC0gICAgICAg
ICAgICAgICBtLT5sZW4gICA9IChzaXplX3QpICZfZW5kIC0gKHNpemVfdCkgJl9fYnNzX3N0YXJ0
Owo+ICsgICAgICAgICAgICAgICBtLT5iYXNlICA9ICh2b2lkICopIF9fQlNTX1NUQVJUOwo+ICsg
ICAgICAgICAgICAgICBtLT5sZW4gICA9IChzaXplX3QpIF9fRU5EIC0gKHNpemVfdCkgX19CU1Nf
U1RBUlQ7Cj4gICAgICAgICAgICAgICAgICBtLT5mbGFncyA9IChVS1BMQVRfTUVNUkZfUkVTRVJW
RUQKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVUtQTEFUX01FTVJGX1JFQURBQkxF
Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFVLUExBVF9NRU1SRl9XUklUQUJMRSk7
Cj4gZGlmZiAtLWdpdCBhL3BsYXQva3ZtL3g4Ni9zZXR1cC5jIGIvcGxhdC9rdm0veDg2L3NldHVw
LmMKPiBpbmRleCBjMTdhN2RkLi40Y2NkOTQ3IDEwMDY0NAo+IC0tLSBhL3BsYXQva3ZtL3g4Ni9z
ZXR1cC5jCj4gKysrIGIvcGxhdC9rdm0veDg2L3NldHVwLmMKPiBAQCAtMjcsNiArMjcsNyBAQAo+
ICAgICovCj4gCj4gICAjaW5jbHVkZSA8c3RyaW5nLmg+Cj4gKyNpbmNsdWRlIDxzZWN0aW9ucy5o
Pgo+ICAgI2luY2x1ZGUgPHg4Ni9jcHUuaD4KPiAgICNpbmNsdWRlIDx4ODYvdHJhcHMuaD4KPiAg
ICNpbmNsdWRlIDxrdm0vY29uc29sZS5oPgo+IEBAIC03OSw3ICs4MCw2IEBAIHN0YXRpYyBpbmxp
bmUgdm9pZCBfbWJfZ2V0X2NtZGxpbmUoc3RydWN0IG11bHRpYm9vdF9pbmZvICptaSwgY2hhciAq
Y21kbGluZSwKPiAKPiAgIHN0YXRpYyBpbmxpbmUgdm9pZCBfbWJfaW5pdF9tZW0oc3RydWN0IG11
bHRpYm9vdF9pbmZvICptaSkKPiAgIHsKPiAtICAgICAgIGV4dGVybiBjaGFyIF9lbmQ7Cj4gICAg
ICAgICAgbXVsdGlib290X21lbW9yeV9tYXBfdCAqbTsKPiAgICAgICAgICBzaXplX3Qgb2Zmc2V0
LCBtYXhfYWRkcjsKPiAKPiBAQCAtMTAzLDkgKzEwMyw5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBf
bWJfaW5pdF9tZW0oc3RydWN0IG11bHRpYm9vdF9pbmZvICptaSkKPiAgICAgICAgICBtYXhfYWRk
ciA9IG0tPmFkZHIgKyBtLT5sZW47Cj4gICAgICAgICAgaWYgKG1heF9hZGRyID4gUExBVEZPUk1f
TUFYX01FTV9BRERSKQo+ICAgICAgICAgICAgICAgICAgbWF4X2FkZHIgPSBQTEFURk9STV9NQVhf
TUVNX0FERFI7Cj4gLSAgICAgICBVS19BU1NFUlQoKHNpemVfdCkmX2VuZCA8PSBtYXhfYWRkcik7
Cj4gKyAgICAgICBVS19BU1NFUlQoKHNpemVfdClfX0VORCA8PSBtYXhfYWRkcik7Cj4gCj4gLSAg
ICAgICBfbGlia3ZtcGxhdF9oZWFwX3N0YXJ0ID0gKHZvaWQgKikgQUxJR05fVVAoKHNpemVfdCkm
X2VuZCwgX19QQUdFX1NJWkUpOwo+ICsgICAgICAgX2xpYmt2bXBsYXRfaGVhcF9zdGFydCA9ICh2
b2lkICopIEFMSUdOX1VQKChzaXplX3QpX19FTkQsIF9fUEFHRV9TSVpFKTsKPiAgICAgICAgICBf
bGlia3ZtcGxhdF9tZW1fZW5kICAgID0gKHZvaWQgKikgbWF4X2FkZHI7Cj4gICAgICAgICAgX2xp
Ymt2bXBsYXRfc3RhY2tfdG9wICA9ICh2b2lkICopIChtYXhfYWRkciAtIF9fU1RBQ0tfU0laRSk7
Cj4gICB9Cj4gZGlmZiAtLWdpdCBhL3BsYXQveGVuL2FybS9zZXR1cC5jIGIvcGxhdC94ZW4vYXJt
L3NldHVwLmMKPiBpbmRleCBiOTFjMGJkLi41NmYxNTY0IDEwMDY0NAo+IC0tLSBhL3BsYXQveGVu
L2FybS9zZXR1cC5jCj4gKysrIGIvcGxhdC94ZW4vYXJtL3NldHVwLmMKPiBAQCAtMjUsNyArMjUs
NyBAQAo+ICAgLyogUG9ydGVkIGZyb20gTWluaS1PUyAqLwo+IAo+ICAgI2luY2x1ZGUgPHN0cmlu
Zy5oPgo+IC0KPiArI2luY2x1ZGUgPHNlY3Rpb25zLmg+Cj4gICAjaW5jbHVkZSA8eGVuLWFybS9v
cy5oPgo+ICAgI2luY2x1ZGUgPHhlbi1hcm0vbW0uaD4KPiAgICNpbmNsdWRlIDx4ZW4veGVuLmg+
Cj4gQEAgLTE0MiwxMCArMTQyLDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfZHRiX2luaXRfbWVt
KHVpbnQzMl90IHBoeXNpY2FsX29mZnNldCkKPiAgICAgICAgICBpZiAocmVncyA9PSBOVUxMICYm
IHByb3BfbGVuIDwgMTYpCj4gICAgICAgICAgICAgICAgICBVS19DUkFTSCgiQmFkICdyZWcnIHBy
b3BlcnR5OiAlcCAlZFxuIiwgcmVncywgcHJvcF9sZW4pOwo+IAo+IC0gICAgICAgZW5kID0gKHVp
bnRwdHJfdCkgJl9lbmQ7Cj4gKyAgICAgICBlbmQgPSAodWludHB0cl90KSBfX0VORDsKPiAgICAg
ICAgICBtZW1fYmFzZSA9IGZkdDY0X3RvX2NwdShyZWdzWzBdKTsKPiAgICAgICAgICBtZW1fc2l6
ZSA9IGZkdDY0X3RvX2NwdShyZWdzWzFdKTsKPiAtICAgICAgIGlmICh0b192aXJ0KG1lbV9iYXNl
KSA+ICh2b2lkICopJl90ZXh0KQo+ICsgICAgICAgaWYgKHRvX3ZpcnQobWVtX2Jhc2UpID4gKHZv
aWQgKilfX1RFWFQpCj4gICAgICAgICAgICAgICAgICBVS19DUkFTSCgiRmF0YWw6IEltYWdlIG91
dHNpZGUgb2YgUkFNXG4iKTsKPiAKPiAgICAgICAgICBzdGFydF9wZm5fcCA9IFBGTl9VUCh0b19w
aHlzKGVuZCkpOwo+IGRpZmYgLS1naXQgYS9wbGF0L3hlbi9pbmNsdWRlL3hlbi1hcm0vbW0uaCBi
L3BsYXQveGVuL2luY2x1ZGUveGVuLWFybS9tbS5oCj4gaW5kZXggOWI4ZWE4NS4uMGY1YzhmNSAx
MDA2NDQKPiAtLS0gYS9wbGF0L3hlbi9pbmNsdWRlL3hlbi1hcm0vbW0uaAo+ICsrKyBiL3BsYXQv
eGVuL2luY2x1ZGUveGVuLWFybS9tbS5oCj4gQEAgLTI4LDExICsyOCwxMCBAQAo+ICAgI2RlZmlu
ZSBfQVJDSF9NTV9IXwo+IAo+ICAgI2luY2x1ZGUgPHN0ZGludC5oPgo+ICsjaW5jbHVkZSA8c2Vj
dGlvbnMuaD4KPiAgICNpbmNsdWRlIDx1ay9hcmNoL2xpbWl0cy5oPgo+IAo+ICAgdHlwZWRlZiB1
aW50NjRfdCBwYWRkcl90Owo+IC0KPiAtZXh0ZXJuIGNoYXIgX3RleHQsIF9ldGV4dCwgX2RhdGEs
IF9lZGF0YSwgX3JvZGF0YSwgX2Vyb2RhdGEsIF9lbmQsIF9fYnNzX3N0YXJ0Owo+ICAgZXh0ZXJu
IGludCBfYm9vdF9zdGFja1tdOwo+ICAgZXh0ZXJuIGludCBfYm9vdF9zdGFja19lbmRbXTsKPiAg
IC8qIEFkZCB0aGlzIHRvIGEgdmlydHVhbCBhZGRyZXNzIHRvIGdldCB0aGUgcGh5c2ljYWwgYWRk
cmVzcyAod3JhcHMgYXQgNEdCKSAqLwo+IGRpZmYgLS1naXQgYS9wbGF0L3hlbi9pbmNsdWRlL3hl
bi14ODYvbW0uaCBiL3BsYXQveGVuL2luY2x1ZGUveGVuLXg4Ni9tbS5oCj4gaW5kZXggMGU1OTc5
Ni4uMzJkODc2YSAxMDA2NDQKPiAtLS0gYS9wbGF0L3hlbi9pbmNsdWRlL3hlbi14ODYvbW0uaAo+
ICsrKyBiL3BsYXQveGVuL2luY2x1ZGUveGVuLXg4Ni9tbS5oCj4gQEAgLTksMjIgKzksMjMgQEAK
PiAgICAqIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3Ry
aWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vcgo+ICAgICogc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3
YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKPiAgICAq
IGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6
Cj4gLSAqCj4gKyAqCj4gICAgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBw
ZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgo+ICAgICogYWxsIGNvcGllcyBv
ciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCj4gLSAqCj4gLSAqIFRIRSBT
T0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5E
LCBFWFBSRVNTIE9SCj4gLSAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8g
VEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+IC0gKiBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUKPiAtICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBD
TEFJTSwgREFNQUdFUyBPUiBPVEhFUgo+IC0gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNU
SU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwo+IC0gKiBGUk9NLCBP
VVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9U
SEVSCj4gKyAqCj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VU
IFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCj4gKyAqIElNUExJRUQsIElOQ0xVRElO
RyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+
ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5U
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKPiArICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVS
UyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgo+ICsgKiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwg
QVJJU0lORwo+ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZU
V0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCj4gICAgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUu
Cj4gICAgKi8KPiAKPiAgICNpZm5kZWYgX0FSQ0hfTU1fSF8KPiAgICNkZWZpbmUgX0FSQ0hfTU1f
SF8KPiAKPiArI2luY2x1ZGUgPHNlY3Rpb25zLmg+Cj4gICAjaWZuZGVmIF9fQVNTRU1CTFlfXwo+
ICAgI2luY2x1ZGUgPHhlbi94ZW4uaD4KPiAgICNpZiBkZWZpbmVkKF9faTM4Nl9fKQo+IEBAIC0y
MjEsNyArMjIyLDcgQEAgZXh0ZXJuIHVuc2lnbmVkIGxvbmcgKnBoeXNfdG9fbWFjaGluZV9tYXBw
aW5nOwo+ICAgI2Vsc2UKPiAgIGV4dGVybiBwZ2VudHJ5X3QgcGFnZV90YWJsZV9iYXNlW107Cj4g
ICAjZW5kaWYKPiAtZXh0ZXJuIGNoYXIgX3RleHQsIF9ldGV4dCwgX2Vyb2RhdGEsIF9lZGF0YSwg
X2VuZDsKPiArCj4gICBleHRlcm4gdW5zaWduZWQgbG9uZyBtZm5femVybzsKPiAgIHN0YXRpYyBf
X2lubGluZV9fIG1hZGRyX3QgcGh5c190b19tYWNoaW5lKHBhZGRyX3QgcGh5cykKPiAgIHsKPiBA
QCAtMjM3LDcgKzIzOCw3IEBAIHN0YXRpYyBfX2lubGluZV9fIHBhZGRyX3QgbWFjaGluZV90b19w
aHlzKG1hZGRyX3QgbWFjaGluZSkKPiAgICAgICAgICByZXR1cm4gcGh5czsKPiAgIH0KPiAKPiAt
I2RlZmluZSBWSVJUX1NUQVJUICAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIGxvbmcpJl90ZXh0
KQo+ICsjZGVmaW5lIFZJUlRfU1RBUlQgICAgICAgICAgICAgICAgICgodW5zaWduZWQgbG9uZyko
X19URVhUKSkKPiAKPiAgICNkZWZpbmUgdG9fcGh5cyh4KSAgICAgICAgICAgICAgICAgKCh1bnNp
Z25lZCBsb25nKSh4KS1WSVJUX1NUQVJUKQo+ICAgI2RlZmluZSB0b192aXJ0KHgpICAgICAgICAg
ICAgICAgICAoKHZvaWQgKikoKHVuc2lnbmVkIGxvbmcpKHgpK1ZJUlRfU1RBUlQpKQo+IGRpZmYg
LS1naXQgYS9wbGF0L3hlbi9tZW1vcnkuYyBiL3BsYXQveGVuL21lbW9yeS5jCj4gaW5kZXggMWY1
NTg4Ny4uYjYzZjExYiAxMDA2NDQKPiAtLS0gYS9wbGF0L3hlbi9tZW1vcnkuYwo+ICsrKyBiL3Bs
YXQveGVuL21lbW9yeS5jCj4gQEAgLTM0LDYgKzM0LDcgQEAKPiAgICAqLwo+IAo+ICAgI2luY2x1
ZGUgPHN0cmluZy5oPgo+ICsjaW5jbHVkZSA8c2VjdGlvbnMuaD4KPiAKPiAgICNpbmNsdWRlIDxj
b21tb24vZ250dGFiLmg+Cj4gICAjaWYgKGRlZmluZWQgX19YODZfMzJfXykgfHwgKGRlZmluZWQg
X19YODZfNjRfXykKPiBAQCAtNTEsMTQgKzUyLDEzIEBAIGludCB1a3BsYXRfbWVtcmVnaW9uX2Nv
dW50KHZvaWQpCj4gCj4gICBpbnQgdWtwbGF0X21lbXJlZ2lvbl9nZXQoaW50IGksIHN0cnVjdCB1
a3BsYXRfbWVtcmVnaW9uX2Rlc2MgKm0pCj4gICB7Cj4gLSAgICAgICBleHRlcm4gY2hhciBfdGV4
dCwgX2V0ZXh0LCBfZGF0YSwgX2VkYXRhLCBfcm9kYXRhLCBfZXJvZGF0YSwgX2N0b3JzLCBfZWN0
b3JzLCBfZW5kLCBfX2Jzc19zdGFydDsKPiAKPiAgICAgICAgICBVS19BU1NFUlQobSk7Cj4gCj4g
ICAgICAgICAgc3dpdGNoKGkpIHsKPiAgICAgICAgICBjYXNlIDA6IC8qIHRleHQgKi8KPiAtICAg
ICAgICAgICAgICAgbS0+YmFzZSAgICAgPSAmX3RleHQ7Cj4gLSAgICAgICAgICAgICAgIG0tPmxl
biAgID0gKHNpemVfdCkgJl9ldGV4dCAtIChzaXplX3QpICZfdGV4dDsKPiArICAgICAgICAgICAg
ICAgbS0+YmFzZSAgPSAodm9pZCAqKSBfX1RFWFQ7Cj4gKyAgICAgICAgICAgICAgIG0tPmxlbiAg
ID0gKHNpemVfdCkgX19FVEVYVCAtIChzaXplX3QpIF9fVEVYVDsKPiAgICAgICAgICAgICAgICAg
IG0tPmZsYWdzID0gKFVLUExBVF9NRU1SRl9SRVNFUlZFRAo+ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCBVS1BMQVRfTUVNUkZfUkVBREFCTEUpOwo+ICAgI2lmIENPTkZJR19VS1BMQVRf
TUVNUk5BTUUKPiBAQCAtNjYsOCArNjYsOCBAQCBpbnQgdWtwbGF0X21lbXJlZ2lvbl9nZXQoaW50
IGksIHN0cnVjdCB1a3BsYXRfbWVtcmVnaW9uX2Rlc2MgKm0pCj4gICAjZW5kaWYKPiAgICAgICAg
ICAgICAgICAgIGJyZWFrOwo+ICAgICAgICAgIGNhc2UgMTogLyogcm8gZGF0YSAqLwo+IC0gICAg
ICAgICAgICAgICBtLT5iYXNlICA9ICZfcm9kYXRhOwo+IC0gICAgICAgICAgICAgICBtLT5sZW4g
ICA9IChzaXplX3QpICZfZXJvZGF0YSAtIChzaXplX3QpICZfcm9kYXRhOwo+ICsgICAgICAgICAg
ICAgICBtLT5iYXNlICA9ICh2b2lkICopIF9fUk9EQVRBOwo+ICsgICAgICAgICAgICAgICBtLT5s
ZW4gICA9IChzaXplX3QpIF9fRVJPREFUQSAtIChzaXplX3QpIF9fUk9EQVRBOwo+ICAgICAgICAg
ICAgICAgICAgbS0+ZmxhZ3MgPSAoVUtQTEFUX01FTVJGX1JFU0VSVkVECj4gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8IFVLUExBVF9NRU1SRl9SRUFEQUJMRSk7Cj4gICAjaWYgQ09O
RklHX1VLUExBVF9NRU1STkFNRQo+IEBAIC03NSw4ICs3NSw4IEBAIGludCB1a3BsYXRfbWVtcmVn
aW9uX2dldChpbnQgaSwgc3RydWN0IHVrcGxhdF9tZW1yZWdpb25fZGVzYyAqbSkKPiAgICNlbmRp
Zgo+ICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gICAgICAgICAgY2FzZSAyOiAvKiBjdG9ycyAq
Lwo+IC0gICAgICAgICAgICAgICBtLT5iYXNlICA9ICZfY3RvcnM7Cj4gLSAgICAgICAgICAgICAg
IG0tPmxlbiAgID0gKHNpemVfdCkgJl9lY3RvcnMgLSAoc2l6ZV90KSAmX2N0b3JzOwo+ICsgICAg
ICAgICAgICAgICBtLT5iYXNlICA9ICh2b2lkICopIF9fQ1RPUlM7Cj4gKyAgICAgICAgICAgICAg
IG0tPmxlbiAgID0gKHNpemVfdCkgX19FQ1RPUlMgLSAoc2l6ZV90KSBfX0NUT1JTOwo+ICAgICAg
ICAgICAgICAgICAgbS0+ZmxhZ3MgPSAoVUtQTEFUX01FTVJGX1JFU0VSVkVECj4gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8IFVLUExBVF9NRU1SRl9SRUFEQUJMRSk7Cj4gICAjaWYgQ09O
RklHX1VLUExBVF9NRU1STkFNRQo+IEBAIC04NCw4ICs4NCw4IEBAIGludCB1a3BsYXRfbWVtcmVn
aW9uX2dldChpbnQgaSwgc3RydWN0IHVrcGxhdF9tZW1yZWdpb25fZGVzYyAqbSkKPiAgICNlbmRp
Zgo+ICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gICAgICAgICAgY2FzZSAzOiAvKiBkYXRhICov
Cj4gLSAgICAgICAgICAgICAgIG0tPmJhc2UgID0gJl9kYXRhOwo+IC0gICAgICAgICAgICAgICBt
LT5sZW4gICA9IChzaXplX3QpICZfZWRhdGEgLSAoc2l6ZV90KSAmX2RhdGE7Cj4gKyAgICAgICAg
ICAgICAgIG0tPmJhc2UgID0gKHZvaWQgKikgX19EQVRBOwo+ICsgICAgICAgICAgICAgICBtLT5s
ZW4gICA9IChzaXplX3QpIF9fRURBVEEgLSAoc2l6ZV90KSBfX0RBVEE7Cj4gICAgICAgICAgICAg
ICAgICBtLT5mbGFncyA9IChVS1BMQVRfTUVNUkZfUkVTRVJWRUQKPiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgVUtQTEFUX01FTVJGX1JFQURBQkxFCj4gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8IFVLUExBVF9NRU1SRl9XUklUQUJMRSk7Cj4gQEAgLTk0LDggKzk0LDggQEAg
aW50IHVrcGxhdF9tZW1yZWdpb25fZ2V0KGludCBpLCBzdHJ1Y3QgdWtwbGF0X21lbXJlZ2lvbl9k
ZXNjICptKQo+ICAgI2VuZGlmCj4gICAgICAgICAgICAgICAgICBicmVhazsKPiAgICAgICAgICBj
YXNlIDQ6IC8qIGJzcyAqLwo+IC0gICAgICAgICAgICAgICBtLT5iYXNlICA9ICZfX2Jzc19zdGFy
dDsKPiAtICAgICAgICAgICAgICAgbS0+bGVuICAgPSAoc2l6ZV90KSAmX2VuZCAtIChzaXplX3Qp
ICZfX2Jzc19zdGFydDsKPiArICAgICAgICAgICAgICAgbS0+YmFzZSAgPSAodm9pZCAqKSBfX0JT
U19TVEFSVDsKPiArICAgICAgICAgICAgICAgbS0+bGVuICAgPSAoc2l6ZV90KSBfX0VORCAtIChz
aXplX3QpIF9fQlNTX1NUQVJUOwo+ICAgICAgICAgICAgICAgICAgbS0+ZmxhZ3MgPSAoVUtQTEFU
X01FTVJGX1JFU0VSVkVECj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFVLUExBVF9N
RU1SRl9SRUFEQUJMRQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBVS1BMQVRfTUVN
UkZfV1JJVEFCTEUpOwo+IGRpZmYgLS1naXQgYS9wbGF0L3hlbi94ODYvbW0uYyBiL3BsYXQveGVu
L3g4Ni9tbS5jCj4gaW5kZXggYjg5Mzg0Zi4uMmYyMzg1NSAxMDA2NDQKPiAtLS0gYS9wbGF0L3hl
bi94ODYvbW0uYwo+ICsrKyBiL3BsYXQveGVuL3g4Ni9tbS5jCj4gQEAgLTM2LDYgKzM2LDcgQEAK
PiAgICAqLwo+IAo+ICAgI2luY2x1ZGUgPHN0cmluZy5oPgo+ICsjaW5jbHVkZSA8c2VjdGlvbnMu
aD4KPiAgICNpbmNsdWRlIDxlcnJuby5oPgo+ICAgI2luY2x1ZGUgPHVrL2FsbG9jLmg+Cj4gICAj
aW5jbHVkZSA8dWsvcGxhdC9jb25maWcuaD4KPiBAQCAtMTQyLDEyICsxNDMsMTAgQEAgdm9pZCBf
aW5pdF9tZW1fYnVpbGRfcGFnZXRhYmxlKHVuc2lnbmVkIGxvbmcgKnN0YXJ0X3BmbiwgdW5zaWdu
ZWQgbG9uZyAqbWF4X3BmbikKPiAgICAgICB7Cj4gICAgICAgICAgICAgIHVrX3ByX3dhcm4oIlRy
eWluZyB0byB1c2UgWGVuIHZpcnR1YWwgc3BhY2UuICIKPiAgICAgICAgICAgICAgICAgICAgICAg
ICAiVHJ1bmNhdGluZyBtZW1vcnkgZnJvbSAlbHVNQiB0byAiLAo+IC0gICAgICAgICAgICAgICAg
ICAgICAgKCh1bnNpZ25lZCBsb25nKXBmbl90b192aXJ0KCptYXhfcGZuKSAtCj4gLSAgICAgICAg
ICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpJl90ZXh0KT4+MjApOwo+ICsgICAgICAgICAg
ICAgICAgICAgICAgKCh1bnNpZ25lZCBsb25nKXBmbl90b192aXJ0KCptYXhfcGZuKSAtIF9fVEVY
VCk+PjIwKTsKPiAgICAgICAgICAgICAgKm1heF9wZm4gPSB2aXJ0X3RvX3BmbihIWVBFUlZJU09S
X1ZJUlRfU1RBUlQgLSBQQUdFX1NJWkUpOwo+ICAgICAgICAgICAgICB1a19wcl93YXJuKCIlbHVN
QlxuIiwKPiAtICAgICAgICAgICAgICAgICAgICAgICgodW5zaWduZWQgbG9uZylwZm5fdG9fdmly
dCgqbWF4X3BmbikgLQo+IC0gICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKSZf
dGV4dCk+PjIwKTsKPiArICAgICAgICAgICAgICAgICAgICAgICgodW5zaWduZWQgbG9uZylwZm5f
dG9fdmlydCgqbWF4X3BmbikgLSBfX1RFWFQpPj4yMCk7Cj4gICAgICAgfQo+ICAgI2Vsc2UKPiAg
ICAgICAvKiBSb3VuZCB1cCB0byBuZXh0IDJNQiBib3VuZGFyeSBhcyB3ZSBhcmUgdXNpbmcgMk1C
IHBhZ2VzIG9uIEhWTWxpdGUuICovCj4gQEAgLTY3MCwxOCArNjY5LDE4IEBAIHZvaWQgX2luaXRf
bWVtX2NsZWFyX2Jvb3RzdHJhcCh2b2lkKQo+ICAgICAgIHBnZW50cnlfdCAqcGd0Owo+ICAgI2Vu
ZGlmCj4gCj4gLSAgICB1a19wcl9kZWJ1ZygiQ2xlYXIgYm9vdHN0cmFwcGluZyBtZW1vcnk6ICVw
XG4iLCAmX3RleHQpOwo+ICsgICAgICAgdWtfcHJfZGVidWcoIkNsZWFyIGJvb3RzdHJhcHBpbmcg
bWVtb3J5OiAlcFxuIiwgKHZvaWQgKilfX1RFWFQpOwo+IAo+ICAgICAgIC8qIFVzZSBmaXJzdCBw
YWdlIGFzIHRoZSBDb1cgemVybyBwYWdlICovCj4gLSAgICBtZW1zZXQoJl90ZXh0LCAwLCBQQUdF
X1NJWkUpOwo+IC0gICAgbWZuX3plcm8gPSB2aXJ0X3RvX21mbigodW5zaWduZWQgbG9uZykgJl90
ZXh0KTsKPiArICAgICAgIG1lbXNldCgodm9pZCAqKV9fVEVYVCwgMCwgUEFHRV9TSVpFKTsKPiAr
ICAgICAgIG1mbl96ZXJvID0gdmlydF90b19tZm4oX19URVhUKTsKPiAgICNpZmRlZiBDT05GSUdf
UEFSQVZJUlQKPiAgICAgICBpZiAoIChyYyA9IEhZUEVSVklTT1JfdXBkYXRlX3ZhX21hcHBpbmco
MCwgbnVsbHB0ZSwgVVZNRl9JTlZMUEcpKSApCj4gICAgICAgICAgICAgIHVrX3ByX2VycigiVW5h
YmxlIHRvIHVubWFwIE5VTEwgcGFnZS4gcmM9JWRcbiIsIHJjKTsKPiAgICNlbHNlCj4gLSAgICBw
Z3QgPSBnZXRfcGd0KCh1bnNpZ25lZCBsb25nKSZfdGV4dCk7Cj4gKyAgICAgICBwZ3QgPSBnZXRf
cGd0KF9fVEVYVCk7Cj4gICAgICAgKnBndCA9IDA7Cj4gLSAgICBpbnZscGcoKHVuc2lnbmVkIGxv
bmcpJl90ZXh0KTsKPiArICAgICAgIGludmxwZyhfX1RFWFQpOwo+ICAgI2VuZGlmCj4gICB9Cj4g
Cj4gZGlmZiAtLWdpdCBhL3BsYXQveGVuL3g4Ni9zZXR1cC5jIGIvcGxhdC94ZW4veDg2L3NldHVw
LmMKPiBpbmRleCAzYzU2MzFkLi4xNGIyYzI2IDEwMDY0NAo+IC0tLSBhL3BsYXQveGVuL3g4Ni9z
ZXR1cC5jCj4gKysrIGIvcGxhdC94ZW4veDg2L3NldHVwLmMKPiBAQCAtMTQxLDcgKzE0MSw3IEBA
IHN0YXRpYyBpbmxpbmUgdm9pZCBfaW5pdF9tZW0odm9pZCkKPiAKPiAgICAgICAgICBfaW5pdF9t
ZW1fYnVpbGRfcGFnZXRhYmxlKCZzdGFydF9wZm4sICZtYXhfcGZuKTsKPiAgICAgICAgICBfaW5p
dF9tZW1fY2xlYXJfYm9vdHN0cmFwKCk7Cj4gLSAgICAgICBfaW5pdF9tZW1fc2V0X3JlYWRvbmx5
KCZfdGV4dCwgJl9lcm9kYXRhKTsKPiArICAgICAgIF9pbml0X21lbV9zZXRfcmVhZG9ubHkoKHZv
aWQgKilfX1RFWFQsICh2b2lkICopX19FUk9EQVRBKTsKPiAKPiAgICAgICAgICAvKiBGaWxsIG91
dCBtcmQgYXJyYXkgKi8KPiAgICAgICAgICAvKiBoZWFwICovCj4gLS0KPiAyLjE3LjEKPiAKPiBJ
TVBPUlRBTlQgTk9USUNFOiBUaGUgY29udGVudHMgb2YgdGhpcyBlbWFpbCBhbmQgYW55IGF0dGFj
aG1lbnRzIGFyZSBjb25maWRlbnRpYWwgYW5kIG1heSBhbHNvIGJlIHByaXZpbGVnZWQuIElmIHlv
dSBhcmUgbm90IHRoZSBpbnRlbmRlZCByZWNpcGllbnQsIHBsZWFzZSBub3RpZnkgdGhlIHNlbmRl
ciBpbW1lZGlhdGVseSBhbmQgZG8gbm90IGRpc2Nsb3NlIHRoZSBjb250ZW50cyB0byBhbnkgb3Ro
ZXIgcGVyc29uLCB1c2UgaXQgZm9yIGFueSBwdXJwb3NlLCBvciBzdG9yZSBvciBjb3B5IHRoZSBp
bmZvcm1hdGlvbiBpbiBhbnkgbWVkaXVtLiBUaGFuayB5b3UuCj4gCgpfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0
Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2pl
Y3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Feb 27 12:21:14 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 27 Feb 2019 12:21:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gyyD2-0008GS-N3; Wed, 27 Feb 2019 12:21:12 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=aIM8=RC=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1gyyD1-0008GN-Tw
 for minios-devel@lists.xenproject.org; Wed, 27 Feb 2019 12:21:11 +0000
X-Inumbo-ID: 277ec300-3a8a-11e9-a60a-6707c3483d1e
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 277ec300-3a8a-11e9-a60a-6707c3483d1e;
 Wed, 27 Feb 2019 12:21:06 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 06A23F2046;
 Wed, 27 Feb 2019 13:21:05 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id kWlfDWE2N9Vc; Wed, 27 Feb 2019 13:21:04 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id CB972F201B;
 Wed, 27 Feb 2019 13:20:54 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 27 Feb 2019 13:20:54
 +0100
To: Jia He <justin.he@arm.com>, <minios-devel@lists.xenproject.org>, Simon
 Kuenzer <simon.kuenzer@neclab.eu>
References: <20190222062200.26602-1-justin.he@arm.com>
 <20190222062200.26602-7-justin.he@arm.com>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <6d7b9fdc-eb02-fcc0-6392-78eb0478c139@neclab.eu>
Date: Wed, 27 Feb 2019 13:20:54 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190222062200.26602-7-justin.he@arm.com>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCHv6 06/23] plat/common: Clean and
 invalidate D-Cache only when boot for Arm64
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>, Wei Chen <wei.chen@arm.com>,
 Kaly Xin <Kaly.Xin@arm.com>, Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gSmlhIEhlLAoKVGhhbmtzIGZvciB0aGUgZml4IG9uIHRoZSBjaGVja3BhdGNoIHdhcm5p
bmdzLgoKVGhhbmtzICYgUmVnYXJkcwpTaGFyYW4KCk9uIDIvMjIvMTkgNzoyMSBBTSwgSmlhIEhl
IHdyb3RlOgo+IEZyb206IFdlaSBDaGVuIDx3ZWkuY2hlbkBhcm0uY29tPgo+IFRoZSBib290IGNv
ZGUgd2lsbCBub3QgcmV3cml0ZSBpdHNlbGYsIGFuZCB3ZSBkb24ndCBoYXZlIGFueSByZWxvY2F0
aW9uCj4gb3BlcmF0aW9uIGZvciBjb2RlIGFyZWEuIFNvIGNsZWFuJmludmFsaWRhdGUgSS1DYWNo
ZSBpcyB1bm5lY2Vzc2FyeS4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBXZWkgQ2hlbiA8d2VpLmNoZW5A
YXJtLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBKaWEgSGUgPGp1c3Rpbi5oZUBhcm0uY29tPgo+IFJl
dmlld2VkLWJ5OiBTaGFyYW4gU2FudGhhbmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xhYi5ldT4K
PiAtLS0KPiAgIHBsYXQvY29tbW9uL2FybS9jYWNoZTY0LlMgfCAyNiArKysrKysrLS0tLS0tLS0t
LS0tLS0tLS0tLQo+ICAgcGxhdC9rdm0vYXJtL3BhZ2V0YWJsZS5TICB8ICA2ICsrKy0tLQo+ICAg
MiBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAyMiBkZWxldGlvbnMoLSkKPiAKPiBk
aWZmIC0tZ2l0IGEvcGxhdC9jb21tb24vYXJtL2NhY2hlNjQuUyBiL3BsYXQvY29tbW9uL2FybS9j
YWNoZTY0LlMKPiBpbmRleCBhNzI1NTU3Li45OTYyZDcxIDEwMDY0NAo+IC0tLSBhL3BsYXQvY29t
bW9uL2FybS9jYWNoZTY0LlMKPiArKysgYi9wbGF0L2NvbW1vbi9hcm0vY2FjaGU2NC5TCj4gQEAg
LTM4LDI1ICszOCwxNyBAQAo+ICAgI2luY2x1ZGUgPGFybS9jcHVfZGVmcy5oPgo+IAo+ICAgLyoK
PiAtICogRnVuY3Rpb24gdG8gaW52YWxpZGF0ZSBJL0QgY2FjaGUuIFRoaXMgdGFrZXMgdGhlIHN0
YXJ0IGFkZHJlc3MgaW4geDAsCj4gKyAqIENsZWFuIGFuZCBpbnZhbGlkYXRlIGRhdGEgY2FjaGUu
IFRoaXMgdGFrZXMgdGhlIHN0YXJ0IGFkZHJlc3MgaW4geDAsCj4gICAgKiBsZW5ndGggaW4geDEu
IEl0IHdpbGwgY29ycnVwdCB4MCB+IHg1Lgo+ICAgICovCj4gLUVOVFJZKGludmFsaWRhdGVfaWRj
YWNoZV9yYW5nZSkKPiArRU5UUlkoY2xlYW5fYW5kX2ludmFsaWRhdGVfZGNhY2hlX3JhbmdlKQo+
ICAgICAgICAgIC8qIEdldCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY2FjaGVzIGZyb20gQ1RSX0VM
MCAqLwo+IC0gICAgICAgbXJzICAgICB4MywgY3RyX2VsMAo+ICsgICAgICAgbXJzICAgICB4NCwg
Y3RyX2VsMAo+ICAgICAgICAgIG1vdiAgICAgeDIsICNDVFJfQllURVNfUEVSX1dPUkQKPiAKPiAg
ICAgICAgICAvKiBHZXQgbWluaW11bSBEIGNhY2hlIGxpbmUgc2l6ZSAqLwo+IC0gICAgICAgdWJm
eCAgICB4NCwgeDMsICNDVFJfRE1JTkxJTkVfU0hJRlQsICNDVFJfRE1JTkxJTkVfV0lEVEgKPiAt
ICAgICAgIGxzbCAgICAgeDQsIHgyLCB4NAo+IC0KPiAtICAgICAgIC8qIEdldCBtaW5pbXVtIEkg
Y2FjaGUgbGluZSBzaXplICovCj4gLSAgICAgICBhbmQgICAgIHg1LCB4MywgI0NUUl9JTUlOTElO
RV9NQVNLCj4gLSAgICAgICBsc2wgICAgIHg1LCB4MiwgeDUKPiAtCj4gLSAgICAgICAvKiBTZWxl
Y3QgdGhlIHNtYWxsZXIgb25lIGFzIEkvRCBjYWNoZSBsaW5lIHNpemUgKi8KPiAtICAgICAgIGNt
cCAgICAgeDUsIHg0Cj4gLSAgICAgICBjc2VsICAgIHgzLCB4NSwgeDQsIGxlCj4gKyAgICAgICB1
YmZ4ICAgIHgzLCB4NCwgI0NUUl9ETUlOTElORV9TSElGVCwgI0NUUl9ETUlOTElORV9XSURUSAo+
ICsgICAgICAgbHNsICAgICB4MywgeDIsIHgzCj4gCj4gICAgICAgICAgLyogQWxpZ24gdGhlIHN0
YXJ0IGFkZHJlc3MgdG8gbGluZSBzaXplICovCj4gICAgICAgICAgc3ViICAgICB4NCwgeDMsICMx
Cj4gQEAgLTY0LDE0ICs1NiwxMCBAQCBFTlRSWShpbnZhbGlkYXRlX2lkY2FjaGVfcmFuZ2UpCj4g
ICAgICAgICAgYWRkICAgICB4MSwgeDEsIHgyCj4gICAgICAgICAgYmljICAgICB4MCwgeDAsIHg0
Cj4gICAxOgo+IC0gICAgICAgLyogY2xlYW4gYW5kIGludmFsaWRhdGUgRCBjYWNoZSBieSBJL0Qg
Y2FjaGUgbGluZSBzaXplICovCj4gKyAgICAgICAvKiBjbGVhbiBhbmQgaW52YWxpZGF0ZSBEIGNh
Y2hlIGJ5IEQgY2FjaGUgbGluZSBzaXplICovCj4gICAgICAgICAgZGMgICAgICBjaXZhYywgeDAK
PiAgICAgICAgICBkc2IgICAgIGlzaAo+IAo+IC0gICAgICAgLyogY2xlYW4gYW5kIGludmFsaWRh
dGUgSSBjYWNoZSBieSBJL0QgY2FjaGUgbGluZSBzaXplICovCj4gLSAgICAgICBpYyAgICAgIGl2
YXUsIHgwCj4gLSAgICAgICBkc2IgICAgIGlzaAo+IC0KPiAgICAgICAgICAvKiBNb3ZlIHRvIG5l
eHQgbGluZSBhbmQgcmVkdWNlIHRoZSBzaXplICovCj4gICAgICAgICAgYWRkICAgICB4MCwgeDAs
IHgzCj4gICAgICAgICAgc3VicyAgICB4MSwgeDEsIHgzCj4gQEAgLTgyLDQgKzcwLDQgQEAgRU5U
UlkoaW52YWxpZGF0ZV9pZGNhY2hlX3JhbmdlKQo+ICAgICAgICAgIGlzYgo+IAo+ICAgICAgICAg
IHJldAo+IC1FTkQoaW52YWxpZGF0ZV9pZGNhY2hlX3JhbmdlKQo+ICtFTkQoY2xlYW5fYW5kX2lu
dmFsaWRhdGVfZGNhY2hlX3JhbmdlKQo+IGRpZmYgLS1naXQgYS9wbGF0L2t2bS9hcm0vcGFnZXRh
YmxlLlMgYi9wbGF0L2t2bS9hcm0vcGFnZXRhYmxlLlMKPiBpbmRleCA5MTIwYzRlLi5hM2M4MmUy
IDEwMDY0NAo+IC0tLSBhL3BsYXQva3ZtL2FybS9wYWdldGFibGUuUwo+ICsrKyBiL3BsYXQva3Zt
L2FybS9wYWdldGFibGUuUwo+IEBAIC0yMjIsOCArMjIyLDggQEAgRU5UUlkoc3RhcnRfbW11KQo+
ICAgICAgICAgIG1vdiB4MjIsIHgzMAo+IAo+ICAgICAgICAgICAvKgo+IC0gICAgICAgICogSW52
YWxpZGF0ZSB0aGUgSS9EIGNhY2hlIHRvIGF2b2lkIHVzaW5nIGludmFsaWQgZGF0YSB0aGF0IGV4
aXN0ZWQKPiAtICAgICAgICAqIGluIEkvRCBjYWNoZS4gSW52YWxpZGF0ZSByYW5nZXM6IERUQiwg
VEVYVCwgREFUQSwgQlNTLCBQQUdFVEFCTEUKPiArICAgICAgICAqIEludmFsaWRhdGUgdGhlIEQt
Q2FjaGUgdG8gYXZvaWQgdXNpbmcgaW52YWxpZCBkYXRhIHRoYXQgZXhpc3RlZAo+ICsgICAgICAg
ICogaW4gRC1DYWNoZS4gSW52YWxpZGF0ZSByYW5nZXM6IERUQiwgVEVYVCwgREFUQSwgQlNTLCBQ
QUdFVEFCTEUKPiAgICAgICAgICAgKiBhbmQgQk9PVFNUQUNLLgo+ICAgICAgICAgICAqLwo+ICAg
ICAgICAgIGxkciB4MCwgPV9kdGIKPiBAQCAtMjMxLDcgKzIzMSw3IEBAIEVOVFJZKHN0YXJ0X21t
dSkKPiAgICAgICAgICBhZGQgeDEsIHgxLCAjUEFHRV9UQUJMRV9TSVpFCj4gICAgICAgICAgYWRk
IHgxLCB4MSwgI19fU1RBQ0tfU0laRQo+ICAgICAgICAgIHN1YiB4MSwgeDEsIHgwCj4gLSAgICAg
ICBibCBpbnZhbGlkYXRlX2lkY2FjaGVfcmFuZ2UKPiArICAgICAgIGJsIGNsZWFuX2FuZF9pbnZh
bGlkYXRlX2RjYWNoZV9yYW5nZQo+IAo+ICAgICAgICAgIC8qIFNldHVwIFNDVExSICovCj4gICAg
ICAgICAgbGRyIHgyLCA9U0NUTFJfU0VUX0JJVFMKPiAtLQo+IDIuMTcuMQo+IAo+IElNUE9SVEFO
VCBOT1RJQ0U6IFRoZSBjb250ZW50cyBvZiB0aGlzIGVtYWlsIGFuZCBhbnkgYXR0YWNobWVudHMg
YXJlIGNvbmZpZGVudGlhbCBhbmQgbWF5IGFsc28gYmUgcHJpdmlsZWdlZC4gSWYgeW91IGFyZSBu
b3QgdGhlIGludGVuZGVkIHJlY2lwaWVudCwgcGxlYXNlIG5vdGlmeSB0aGUgc2VuZGVyIGltbWVk
aWF0ZWx5IGFuZCBkbyBub3QgZGlzY2xvc2UgdGhlIGNvbnRlbnRzIHRvIGFueSBvdGhlciBwZXJz
b24sIHVzZSBpdCBmb3IgYW55IHB1cnBvc2UsIG9yIHN0b3JlIG9yIGNvcHkgdGhlIGluZm9ybWF0
aW9uIGluIGFueSBtZWRpdW0uIFRoYW5rIHlvdS4KPiAKCl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9z
LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcv
bWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Feb 27 13:03:32 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 27 Feb 2019 13:03:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gyys0-00046t-I2; Wed, 27 Feb 2019 13:03:32 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=aIM8=RC=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1gyyrz-00046m-0r
 for minios-devel@lists.xenproject.org; Wed, 27 Feb 2019 13:03:31 +0000
X-Inumbo-ID: 125b8048-3a90-11e9-a631-0f5d24bd28e8
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 125b8048-3a90-11e9-a631-0f5d24bd28e8;
 Wed, 27 Feb 2019 13:03:27 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 9A50D104E43;
 Wed, 27 Feb 2019 14:03:26 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id xCvEwLsnXzg8; Wed, 27 Feb 2019 14:03:26 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 61253104BBC;
 Wed, 27 Feb 2019 14:03:16 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 27 Feb 2019 14:03:16
 +0100
To: Jia He <justin.he@arm.com>, <minios-devel@lists.xenproject.org>, Simon
 Kuenzer <simon.kuenzer@neclab.eu>
References: <20190222062200.26602-1-justin.he@arm.com>
 <20190222062200.26602-9-justin.he@arm.com>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <06dd12b9-8c93-420a-1032-72221ae5f14a@neclab.eu>
Date: Wed, 27 Feb 2019 14:03:15 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190222062200.26602-9-justin.he@arm.com>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCHv6 08/23] plat/common: Add
 referred source code URL for cache operation
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>, Wei Chen <wei.chen@arm.com>,
 Kaly Xin <Kaly.Xin@arm.com>, Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gSmlhIEhlLAoKSXQgd291bGQgYmUgd2lzZSB0byBhZGQgdGhlIDEyLWRpZ2l0IGdpdCBj
b21taXQgaWRlbnRpZmllciBmcm9tIGZyZWVic2QuCgpUaGFua3MgJiBSZWdhcmRzClNoYXJhbgoK
T24gMi8yMi8xOSA3OjIxIEFNLCBKaWEgSGUgd3JvdGU6Cj4gRnJvbTogV2VpIENoZW4gPHdlaS5j
aGVuQGFybS5jb20+Cj4gV2UnZCBiZXR0ZXIgdG8gbWVudGlvbiB3aGVyZSBvdXIgY29kZSBjb21l
cyBmcm9tLCB0aGlzIGhlbHBzIHRvCj4gY2hlY2sgd2hldGhlciBjb2RlIGhhcyBiZWVuIHVwZGF0
ZWQgYWZ0ZXJ3YXJkcy4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBXZWkgQ2hlbiA8d2VpLmNoZW5AYXJt
LmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBKaWEgSGUgPGp1c3Rpbi5oZUBhcm0uY29tPgo+IC0tLQo+
ICAgcGxhdC9jb21tb24vYXJtL2NhY2hlNjQuUyB8IDMgKysrCj4gICAxIGZpbGUgY2hhbmdlZCwg
MyBpbnNlcnRpb25zKCspCj4gCj4gZGlmZiAtLWdpdCBhL3BsYXQvY29tbW9uL2FybS9jYWNoZTY0
LlMgYi9wbGF0L2NvbW1vbi9hcm0vY2FjaGU2NC5TCj4gaW5kZXggYmFkYTQxNy4uZWFiN2E3MyAx
MDA2NDQKPiAtLS0gYS9wbGF0L2NvbW1vbi9hcm0vY2FjaGU2NC5TCj4gKysrIGIvcGxhdC9jb21t
b24vYXJtL2NhY2hlNjQuUwo+IEBAIC0xLDUgKzEsOCBAQAo+ICAgLyogU1BEWC1MaWNlbnNlLUlk
ZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLwo+ICAgLyoKPiArICogVGhpcyBzb3VyY2UgY29kZSBp
cyBiYXNlZCBvbjoKPiArICogZ2l0aHViLmNvbS9mcmVlYnNkL2ZyZWVic2QvYmxvYi9kZTQxYzQ2
L3N5cy9hcm02NC9hcm02NC9jcHVmdW5jX2FzbS5TCj4gKyAqCj4gICAgKiBBdXRob3JzOiBXZWkg
Q2hlbiA8d2VpLmNoZW5AYXJtLmNvbT4KPiAgICAqCj4gICAgKiBDb3B5cmlnaHQgKGMpIDIwMTQg
Um9iaW4gUmFuZGhhd2EKPiAtLQo+IDIuMTcuMQo+IAo+IElNUE9SVEFOVCBOT1RJQ0U6IFRoZSBj
b250ZW50cyBvZiB0aGlzIGVtYWlsIGFuZCBhbnkgYXR0YWNobWVudHMgYXJlIGNvbmZpZGVudGlh
bCBhbmQgbWF5IGFsc28gYmUgcHJpdmlsZWdlZC4gSWYgeW91IGFyZSBub3QgdGhlIGludGVuZGVk
IHJlY2lwaWVudCwgcGxlYXNlIG5vdGlmeSB0aGUgc2VuZGVyIGltbWVkaWF0ZWx5IGFuZCBkbyBu
b3QgZGlzY2xvc2UgdGhlIGNvbnRlbnRzIHRvIGFueSBvdGhlciBwZXJzb24sIHVzZSBpdCBmb3Ig
YW55IHB1cnBvc2UsIG9yIHN0b3JlIG9yIGNvcHkgdGhlIGluZm9ybWF0aW9uIGluIGFueSBtZWRp
dW0uIFRoYW5rIHlvdS4KPiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhl
bnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5m
by9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Feb 27 13:21:13 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 27 Feb 2019 13:21:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gyz95-0005u3-UI; Wed, 27 Feb 2019 13:21:11 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=aIM8=RC=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1gyz94-0005ty-It
 for minios-devel@lists.xenproject.org; Wed, 27 Feb 2019 13:21:10 +0000
X-Inumbo-ID: 8a2c65f3-3a92-11e9-bc90-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 8a2c65f3-3a92-11e9-bc90-bc764e045a96;
 Wed, 27 Feb 2019 13:21:07 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 884FCF2046;
 Wed, 27 Feb 2019 14:21:06 +0100 (CET)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id Brf1gxZ5CaKF; Wed, 27 Feb 2019 14:21:06 +0100 (CET)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 54D70F201B;
 Wed, 27 Feb 2019 14:20:56 +0100 (CET)
Received: from [10.1.2.132] (10.1.2.132) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 27 Feb 2019 14:20:56
 +0100
To: Jia He <justin.he@arm.com>, <minios-devel@lists.xenproject.org>, Simon
 Kuenzer <simon.kuenzer@neclab.eu>
References: <20190222062200.26602-1-justin.he@arm.com>
 <20190222062200.26602-10-justin.he@arm.com>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <a795ca6f-0f83-d0a4-c5c5-99c253ad8ecb@neclab.eu>
Date: Wed, 27 Feb 2019 14:20:55 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.4.0
MIME-Version: 1.0
In-Reply-To: <20190222062200.26602-10-justin.he@arm.com>
Content-Language: en-US
X-Originating-IP: [10.1.2.132]
Subject: Re: [Minios-devel] [UNIKRAFT PATCHv6 09/23] plat/kvm: Correct
 invalid indent character for Arm64
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>, Wei Chen <wei.chen@arm.com>,
 Kaly Xin <Kaly.Xin@arm.com>, Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGVsbG8gSmlhIEhlLAoKVGhpcyBwYXRjaCBoYXMgYSBwcm9ibGVtLiBUaGUgdGFicyBoYXZlIGJl
ZW4gcmVwbGFjZWQgd2hpbGUgdGhlIHBhdGNoIAp3YXMgc2VudCBvdXQuCgpUaGFua3MgJiBSZWdh
cmRzClNoYXJhbgoKT24gMi8yMi8xOSA3OjIxIEFNLCBKaWEgSGUgd3JvdGU6Cj4gRnJvbTogV2Vp
IENoZW4gPHdlaS5jaGVuQGFybS5jb20+Cj4gVXNpbmcgdGFiIHRvIHJlcGxhY2Ugc3BhY2VzIGZv
ciB0aGUgaW5kZW50IGJlZm9yZSB1a3BsYXRfZW50cnlfYXJncC4KPiAKPiBTaWduZWQtb2ZmLWJ5
OiBXZWkgQ2hlbiA8d2VpLmNoZW5AYXJtLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBKaWEgSGUgPGp1
c3Rpbi5oZUBhcm0uY29tPgo+IFJldmlld2VkLWJ5OiBTaGFyYW4gU2FudGhhbmFtIDxzaGFyYW4u
c2FudGhhbmFtQG5lY2xhYi5ldT4KPiAtLS0KPiAgIHBsYXQva3ZtL2FybS9zZXR1cC5jIHwgMiAr
LQo+ICAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCj4gCj4g
ZGlmZiAtLWdpdCBhL3BsYXQva3ZtL2FybS9zZXR1cC5jIGIvcGxhdC9rdm0vYXJtL3NldHVwLmMK
PiBpbmRleCAxODYyMTE4Li5iN2I4MWFjIDEwMDY0NAo+IC0tLSBhL3BsYXQva3ZtL2FybS9zZXR1
cC5jCj4gKysrIGIvcGxhdC9rdm0vYXJtL3NldHVwLmMKPiBAQCAtMTgxLDcgKzE4MSw3IEBAIGVu
b2NtZGw6Cj4gCj4gICBzdGF0aWMgdm9pZCBfbGlia3ZtcGxhdF9lbnRyeTIodm9pZCAqYXJnIF9f
YXR0cmlidXRlX18oKHVudXNlZCkpKQo+ICAgewo+IC0gICAgICAgdWtwbGF0X2VudHJ5X2FyZ3Ao
TlVMTCwgKGNoYXIgKiljbWRsaW5lLCBzdHJsZW4oY21kbGluZSkpOwo+ICsgICAgICAgdWtwbGF0
X2VudHJ5X2FyZ3AoTlVMTCwgKGNoYXIgKiljbWRsaW5lLCBzdHJsZW4oY21kbGluZSkpOwo+ICAg
fQo+IAo+ICAgdm9pZCBfbGlia3ZtcGxhdF9zdGFydCh2b2lkICpkdGJfcG9pbnRlcikKPiAtLQo+
IDIuMTcuMQo+IAo+IElNUE9SVEFOVCBOT1RJQ0U6IFRoZSBjb250ZW50cyBvZiB0aGlzIGVtYWls
IGFuZCBhbnkgYXR0YWNobWVudHMgYXJlIGNvbmZpZGVudGlhbCBhbmQgbWF5IGFsc28gYmUgcHJp
dmlsZWdlZC4gSWYgeW91IGFyZSBub3QgdGhlIGludGVuZGVkIHJlY2lwaWVudCwgcGxlYXNlIG5v
dGlmeSB0aGUgc2VuZGVyIGltbWVkaWF0ZWx5IGFuZCBkbyBub3QgZGlzY2xvc2UgdGhlIGNvbnRl
bnRzIHRvIGFueSBvdGhlciBwZXJzb24sIHVzZSBpdCBmb3IgYW55IHB1cnBvc2UsIG9yIHN0b3Jl
IG9yIGNvcHkgdGhlIGluZm9ybWF0aW9uIGluIGFueSBtZWRpdW0uIFRoYW5rIHlvdS4KPiAKCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZl
bCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8v
bGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Feb 27 18:22:04 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 27 Feb 2019 18:22:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gz3qD-0001l3-Td; Wed, 27 Feb 2019 18:22:01 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Vs71=RC=gmail.com=lars.kurth.xen@srs-us1.protection.inumbo.net>)
 id 1gz3qB-0001jj-Qh
 for minios-devel@lists.xenproject.org; Wed, 27 Feb 2019 18:21:59 +0000
X-Inumbo-ID: 90737a9c-3abc-11e9-bc90-bc764e045a96
Received: from mail-wr1-x432.google.com (unknown [2a00:1450:4864:20::432])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 90737a9c-3abc-11e9-bc90-bc764e045a96;
 Wed, 27 Feb 2019 18:21:57 +0000 (UTC)
Received: by mail-wr1-x432.google.com with SMTP id d17so19047452wre.10;
 Wed, 27 Feb 2019 10:21:56 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:mime-version:subject:in-reply-to:date:cc
 :content-transfer-encoding:message-id:references:to;
 bh=tTEROjr1r8oEbi/mvSKws/e7wkkg0baZLaWxUKIsGLw=;
 b=rzsHnDMLdWAaEa/9ZmOTxHlLtkmnSPRfpo3/1u37dsDpCLqiuwhxhiR960JXaLV5OW
 G5vpubBM44wWknd0InmGgyL04VPVC7WLdHltVvJh3cRv/TqLY3Kfp06etCSVTYETQC7O
 hOrzEMvFAKLW9lPEoKy9uoj7kUsK6OwN44oyfClum4emPSdZp63meYIBTkRsb00n7CRl
 b6UQlD9Hf0fctEsk2rm64qeEKpIasldNNLrw5DZGLc8OSO+bKTbYzeFTa3A+75FypuTC
 nz127MCfGOs2vzQyBvx2eXDPzblKj1chKK5+JaakseY/UwoE+vtaWDlib18b33KFCtfl
 ZBNw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:mime-version:subject:in-reply-to:date:cc
 :content-transfer-encoding:message-id:references:to;
 bh=tTEROjr1r8oEbi/mvSKws/e7wkkg0baZLaWxUKIsGLw=;
 b=KXwbbhclYvCm/8+GpVtX8loOPLuV2zZsHSTKSbQd3atrBYKnJSXeg1z3+TAjT0teCX
 sW7LLcbBvD60iB377uJvIA7yoZcs4b0PPFpuewEiVrj22+P4jIEkI8c6Exwu4KrZugYA
 PK0rnhC3OETDztw7e/3XhSKmmpckh64ltieQuM8xw+R+xNp1IFQmWZwLR7A8ztdagbQ9
 WfyWj+unBwQAP2E4Nq0jVv+V4Apn0eBphtqkQJYsgMzSGQhPSZWx0q+xzjeCWINIeSyG
 isZWxHGi51Y36V7hmcVnR8PrsWr0QGmeLV9oZxBuHcPIDDUqxMn1WcSZi8hYQGTnVJal
 Ld+g==
X-Gm-Message-State: APjAAAWEo5rcoh80HsXjO7eg3atkDZt/WkvF35V1uAHBLfsOi5BfpTrX
 uy/CVCOnTANmvmcUVAe2I5oYLdm7
X-Google-Smtp-Source: APXvYqxauw9KwCRpxcKwrcYtqUp+iGMuZOzoSHpFPIcOy+O6AFkWDk0Gr07gwKOFgalvrABFxXlHWg==
X-Received: by 2002:adf:e548:: with SMTP id z8mr3526729wrm.52.1551291715305;
 Wed, 27 Feb 2019 10:21:55 -0800 (PST)
Received: from [10.80.118.55] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194])
 by smtp.gmail.com with ESMTPSA id v20sm88479wmj.2.2019.02.27.10.21.53
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Wed, 27 Feb 2019 10:21:54 -0800 (PST)
From: Lars Kurth <lars.kurth.xen@gmail.com>
X-Google-Original-From: Lars Kurth <lars.kurth@xenproject.org>
Mime-Version: 1.0 (Mac OS X Mail 11.5 \(3445.9.1\))
In-Reply-To: <6B097DCF-C8D2-49A0-9ED0-F1369752D9D5@xenproject.org>
Date: Wed, 27 Feb 2019 18:21:52 +0000
Message-Id: <C4196E82-6392-4C5B-80CC-210F80EDFC67@xenproject.org>
References: <25047BD8-F5B6-4F2A-9F4E-002BF51F5C6B@xenproject.org>
 <6B097DCF-C8D2-49A0-9ED0-F1369752D9D5@xenproject.org>
To: xen-devel <xen-devel@lists.xenproject.org>,
 mirageos-devel@lists.xenproject.org,
 Minios-devel <minios-devel@lists.xenproject.org>,
 Committers <committers@xenproject.org>
X-Mailer: Apple Mail (2.3445.9.1)
Subject: Re: [Minios-devel] Preparing for Xen Project GSoC applications :
 Deadline Feb 6
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "Felipe Huici <Felipe. Huici@neclab. eu>" <felipe.huici@neclab.eu>,
 Juergen Gross <jgross@suse.com>, Stefano Stabellini <sstabellini@kernel.org>,
 Wei Liu <Wei.Liu2@citrix.com>, George Dunlap <george.dunlap@eu.citrix.com>,
 Ian Jackson <ian.jackson@eu.citrix.com>, Julien Grall <julien.grall@arm.com>,
 Paul Durrant <paul.durrant@citrix.com>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>, mindy@somerandomidiot.com,
 Roger Pau Monne <roger.pau@citrix.com>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGkgYWxsLAoKbG9va2luZyB0aHJvdWdoIHRoZSBsaXN0IG9mIEdTb0Mgb3JncywgdGhlIGZvbGxv
d2luZyBvcmdzIHRoYXQgc29tZXRpbWVzIGhhdmUgWGVuIHJlbGF0ZWQgcHJvamVjdHMgaGF2ZSBi
ZWVuIGFjY2VwdGVkIGludG8gR1NvQyB0aGlzIHllYXI6CiogaHR0cHM6Ly93aWtpLmZyZWVic2Qu
b3JnL1N1bW1lck9mQ29kZUlkZWFzCiogaHR0cHM6Ly9nc29jLmhvbmV5bmV0Lm9yZy8KKiBodHRw
czovL2VsaW51eC5vcmcvQmVhZ2xlQm9hcmQvR1NvQy9JZGVhcyBbdGhlcmUgaXMgYSBYZW4gc3Bl
Y2lmaWMgcHJvcG9zYWwgbm90IHlldCBvbiB0aGUgdGFibGVdCgpJZiB5b3UgY29tZSBhY3Jvc3Mg
YW55b25lIGFza2luZyB1cywgcGxlYXNlIHBvaW50IHRoZW0gaW4gdGhlIHJpZ2h0IGRpcmVjdGlv
bgoKQmVzdCBSZWdhcmRzCkxhcnMKCgo+IE9uIDI1IEZlYiAyMDE5LCBhdCAxODozNiwgTGFycyBL
dXJ0aCA8bGFycy5rdXJ0aEB4ZW5wcm9qZWN0Lm9yZz4gd3JvdGU6Cj4gCj4gSGkgYWxsOgo+IAo+
IGEgcXVpY2sgbm90ZSB0aGUgd2UgaGF2ZSAqbm90KiBiZWVuIGFjY2VwdGVkIGludG8gR1NvQyB0
aGlzIHllYXIgKHRoZSBjdXJyZW50IGFjY2VwdGFuY2UgcmF0ZSBzZWVtcyB0byBiZSB0aGF0IHBy
b2plY3RzIGdldCBHU09DIHNsb3RzIGV2ZXJ5IDMgeWVhcnMpLiBBIGJpZyB0aGFuayB5b3UgdG8g
dGhvc2Ugd2hvIGNvbnRyaWJ1dGVkIHRvIHRoZSBwcm9qZWN0IGxpc3QuIAo+IAo+IFRoaXMgZG9l
cyBub3QgbWVhbiB0aGF0IHRoZXJlIHdvbid0IGJlIFhlbiByZWxhdGVkIHByb2plY3RzLiBUaGVy
ZSBhcmUgYSBudW1iZXIgb2YgWGVuIHJlbGF0ZWQgcHJvamVjdHMgaW4gYSBudW1iZXIgb2Ygb3Ro
ZXIgY29tbXVuaXRpZXMuIE9uY2UgdGhlIGZ1bGwgbGlzdCBvZiBhY2NlcHRlZCBvcmdhbmlzYXRp
b25zIGlzIGF2YWlsYWJsZSwgSSB3aWxsIGNvbGxhdGUgYSBsaXN0IGFuZCBnZXQgYmFjayB0byB5
b3UKPiAKPiBCZXN0IFJlZ2FyZHMKPiBMYXJzCj4gCj4+IE9uIDE1IEphbiAyMDE5LCBhdCAxMzoz
MywgTGFycyBLdXJ0aCA8bGFycy5rdXJ0aEB4ZW5wcm9qZWN0Lm9yZz4gd3JvdGU6Cj4+IAo+PiBI
aSBhbGwsIAo+PiAKPj4gSSB3aWxsIGJlIGFwcGx5aW5nIGFzIGEgbWVudG9yaW5nIG9yZ2FuaXNh
dGlvbiBmb3IgR1NvQyBhZ2FpbiB0aGlzIHllYXI6IHRoZSBhcHBsaWNhdGlvbiBkZWFkbGluZSBp
cyBGZWIgNiBhbmQgYnkgdGhlbiB3ZSBuZWVkIHRvIGhhdmUgaHR0cHM6Ly93aWtpLnhlbnByb2pl
Y3Qub3JnL3dpa2kvT3V0cmVhY2hfUHJvZ3JhbV9Qcm9qZWN0cyBpbiBvcmRlci4gR2l2ZW4gdGhh
dCB3ZSBkaWRuJ3QgZ2V0IGluIGxhc3QgeWVhciwgdGhlcmUgaXMgYSA1MC81MCBjaGFuY2Ugd2Ug
Z2V0IGluIHRoaXMgeWVhci4KPj4gCj4+IEV2ZXJ5b25lIG9uIHRoZSBDQyBsaXN0IGhhcyBwcm9q
ZWN0cyBsaXN0ZWQgb24gaHR0cHM6Ly93aWtpLnhlbnByb2plY3Qub3JnL3dpa2kvT3V0cmVhY2hf
UHJvZ3JhbV9Qcm9qZWN0cwo+PiAKPj4gT3VyIHByb2plY3QgbGlzdCBpcyBhIGxpdHRsZSBvbGQg
YW5kIHN0YWxlIGFuZCB0aGF0IHNob3dzOiB3ZSBkbyBuZWVkIHRvIGJyaW5nIHRoaXMgdXAtdG8t
ZGF0ZSBhbmQgZnJlc2hlbiBpdCB1cCB3aXRoIG5ldyBwcm9qZWN0cy4gSSBiZWxpZXZlIHRoYXQg
dGhlIE1pbmktT1MgYW5kIFVuaWtyYWZ0IHByb2plY3RzIG5lZWQgbG9va2luZyBhdC4gQW5kIHdl
IG1heSBoYXZlIHNvbWUgbmV3IHNlbnNpYmxlIHByb2plY3RzIGluIHRoZSBIeXBlcnZpc29yIGl0
c2VsZi4gTWluZHkgYWxyZWFkeSBhZ3JlZWQgdG8gZ28gb3ZlciB0aGUgTWlyYWdlIE9TIGxpc3Qu
Cj4+IAo+PiBJZiB5b3Ugd2FudCB0byB3aXRoZHJhdyB5b3VyIHByb2plY3Q6IHBsZWFzZSBsZXQg
bWUga25vdyBhbmQgSSBkZWxldGUgaXQ6IGJ1dCBsZXQgbWUga25vdyBXSFkgeW91IHdhbnQgdG8g
d2l0aGRyYXcuIEUuZy4gaXMgaXQgY29tcGxldGUKPj4gCj4+IEBEb3VnLCBAQ29taXR0ZXJzCj4+
IFJlIGh0dHBzOi8vd2lraS54ZW5wcm9qZWN0Lm9yZy93aWtpL091dHJlYWNoX1Byb2dyYW1fUHJv
amVjdHMjQ29kZV9TdGFuZGFyZHNfQ2hlY2tpbmdfdXNpbmdfY2xhbmctZm9ybWF0Cj4+IEdpdmVu
IHRoYXQgdGhlcmUgaGFzIGJlZW4gc29tZSB3b3JrIG9uIGNsYW5nLWZvcm1hdCBieSBFUEFNLCB3
aGljaCBuby1vbmUgaGFzIGxvb2tlZCBhdCBJIGFtIHRlbXB0ZWQgdG8gdGhyb3cgdGhpcyBvdXQg
b3IgcmUtZG8gdGhlIHByb2plY3QuIEFrYSwgZGllIGEgbmV4dCBwaGFzZSB3aGljaCBpbmNsdWRl
cyBpbnRlZ3JhdGluZyB0aGUgdG9vbCBpbnRvIG91ciB3b3JrZmxvdy4gQnV0IHRoYXQgbWF5IGJl
IHRvbyBoYXJkCj4+IEFueSB2aWV3cz8KPj4gCj4+IFJlZ2FyZHMKPj4gTGFycwo+IAoKCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBt
YWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlz
dHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Thu Feb 28 01:07:32 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 28 Feb 2019 01:07:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1gzAAd-0005qk-Aq; Thu, 28 Feb 2019 01:07:31 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=IvdS=RD=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1gzAAb-0005qf-TV
 for minios-devel@lists.xenproject.org; Thu, 28 Feb 2019 01:07:30 +0000
X-Inumbo-ID: 35fbe973-3af5-11e9-bc90-bc764e045a96
Received: from EUR02-HE1-obe.outbound.protection.outlook.com (unknown
 [40.107.1.48]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 35fbe973-3af5-11e9-bc90-bc764e045a96;
 Thu, 28 Feb 2019 01:07:27 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; 
 s=selector1-arm-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=b7fSicCZwXofu1uiPqs1Gk/jGXFwvnN00AtEjE7+qBQ=;
 b=lev1tTdX6RHD2/fSP2Qwgcwq2TtdfyPyK+hEQd+s0zlbnKboUe6nPB+7RckP7HmMSCgK52Udc/sObVWshUsQ9wUZVFSN/W9POPP8rehqB05oikBf/oD1nqN9e2b/1hTfC8rpbUkDI8Js40VSX/EpSawTNwYlYdQ8VIJSMB0A4f8=
Received: from DB7PR08MB3082.eurprd08.prod.outlook.com (52.134.110.24) by
 DB7PR08MB3530.eurprd08.prod.outlook.com (20.177.120.80) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.1643.15; Thu, 28 Feb 2019 01:07:21 +0000
Received: from DB7PR08MB3082.eurprd08.prod.outlook.com
 ([fe80::99d4:808b:c303:ce65]) by DB7PR08MB3082.eurprd08.prod.outlook.com
 ([fe80::99d4:808b:c303:ce65%6]) with mapi id 15.20.1643.019; Thu, 28 Feb 2019
 01:07:21 +0000
From: "Justin He (Arm Technology China)" <Justin.He@arm.com>
To: Sharan Santhanam <sharan.santhanam@neclab.eu>,
 "minios-devel@lists.xenproject.org" <minios-devel@lists.xenproject.org>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>
Thread-Topic: [UNIKRAFT PATCHv6 04/23] plat: Clean up kernel image symbols
Thread-Index: AQHUyncB60JfYtse/ESyauGycHkCx6XzfPiAgADw6/A=
Date: Thu, 28 Feb 2019 01:07:21 +0000
Message-ID: <DB7PR08MB3082829A0E9B32C1BD6DFF95F7750@DB7PR08MB3082.eurprd08.prod.outlook.com>
References: <20190222062200.26602-1-justin.he@arm.com>
 <20190222062200.26602-5-justin.he@arm.com>
 <161ddc49-439b-eae5-09bf-22b002b61e44@neclab.eu>
In-Reply-To: <161ddc49-439b-eae5-09bf-22b002b61e44@neclab.eu>
Accept-Language: en-US, zh-CN
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=Justin.He@arm.com; 
x-originating-ip: [113.29.88.7]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 9392dbfe-35ac-476d-48b6-08d69d1917a6
x-ms-office365-filtering-ht: Tenant
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(7168020)(4627221)(201703031133081)(201702281549075)(8990200)(5600127)(711020)(4605104)(4618075)(2017052603328)(7153060)(7193020);
 SRVR:DB7PR08MB3530; 
x-ms-traffictypediagnostic: DB7PR08MB3530:
x-microsoft-exchange-diagnostics: 1; DB7PR08MB3530;
 20:Cv+cZ+UOvoIoUwqGZh496uN26DHd7/mKAmj2T3sn+7hGZ5BhFC/VK3hOHpwdeznQ4S5BqVlYkUJFxx0lDurn+lrRRrJurYw/7LUu6NRca+fmUqrzxl4PvTXDaSFnxRvIWeZrledPakkkRKBFhqc4x91gZqNelH5pHz9QiG1DJ80=
x-microsoft-antispam-prvs: <DB7PR08MB3530F1A548CF4BD6466F686EF7750@DB7PR08MB3530.eurprd08.prod.outlook.com>
x-forefront-prvs: 0962D394D2
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(366004)(376002)(396003)(136003)(39860400002)(346002)(40434004)(189003)(199004)(13464003)(256004)(97736004)(5024004)(86362001)(5660300002)(305945005)(7736002)(14454004)(72206003)(14444005)(66066001)(53936002)(6116002)(55016002)(478600001)(52536013)(186003)(26005)(74316002)(3846002)(2906002)(229853002)(6436002)(106356001)(68736007)(25786009)(11346002)(476003)(316002)(110136005)(4326008)(99286004)(446003)(33656002)(8676002)(81166006)(81156014)(6506007)(55236004)(9686003)(8936002)(71190400001)(71200400001)(76176011)(6246003)(54906003)(105586002)(7696005)(486006)(102836004)(2501003)(53546011);
 DIR:OUT; SFP:1101; SCL:1; SRVR:DB7PR08MB3530;
 H:DB7PR08MB3082.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:1; 
received-spf: None (protection.outlook.com: arm.com does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: HHN3jzZ2Fey+lVz6up7iQneiO6ReofzXSi12rRVMO3LtQR1Ya+W1+JTYw0hl1o+PBUzIciNZV8MY/TFJxie1cmlw5d4pgG6/AxJ+qs6bJIqBRSyCQgGkL5fWg4uSYMhrtu3nIuT3GeQk9ghbxOdWar7WHLXhsgPFylxlhZ9GELwwEXWbUGhJ95XSFuQBoBcXxh7wB1kug1e/52xzHALMkNZVib9eWumjkyPxZcX8P0uKak0U1kLc0dAOdDbUWSs/XDus8EASxGVt1Dmhx1iz4/kD4OcGg3UxPnp4bqq2QfYvP4WsTtPMWFhdPBtSJiQoy+CDMnmlkRmVXurfkPaxCi0GQwXsEooFe/3uL4L/gjUusadiAZC0cChNivdC92qASjMVn2xKfWNWCSt1Jzog16RZ/hdKisg8CegsKsj8Nco=
MIME-Version: 1.0
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 9392dbfe-35ac-476d-48b6-08d69d1917a6
X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Feb 2019 01:07:21.4949 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR08MB3530
Subject: Re: [Minios-devel] [UNIKRAFT PATCHv6 04/23] plat: Clean up kernel
 image symbols
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>,
 "Wei Chen \(Arm Technology China\)" <Wei.Chen@arm.com>, "Kaly Xin \(Arm
 Technology China\)" <Kaly.Xin@arm.com>,
 Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <Julien.Grall@arm.com>,
 "yuri.volchkov@neclab.eu" <yuri.volchkov@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGkgU2hhcmFuDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogU2hhcmFu
IFNhbnRoYW5hbSA8c2hhcmFuLnNhbnRoYW5hbUBuZWNsYWIuZXU+DQo+IFNlbnQ6IDIwMTnlubQy
5pyIMjfml6UgMTg6NDENCj4gVG86IEp1c3RpbiBIZSAoQXJtIFRlY2hub2xvZ3kgQ2hpbmEpIDxK
dXN0aW4uSGVAYXJtLmNvbT47IG1pbmlvcy0NCj4gZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmc7
IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1Pg0KPiBDYzogRmxvcmlhbiBT
Y2htaWR0IDxmbG9yaWFuLnNjaG1pZHRAbmVjbGFiLmV1PjsgRmVsaXBlIEh1aWNpDQo+IDxmZWxp
cGUuaHVpY2lAbmVjbGFiLmV1PjsgSnVsaWVuIEdyYWxsIDxKdWxpZW4uR3JhbGxAYXJtLmNvbT47
DQo+IHl1cmkudm9sY2hrb3ZAbmVjbGFiLmV1OyBLYWx5IFhpbiAoQXJtIFRlY2hub2xvZ3kgQ2hp
bmEpIDxLYWx5LlhpbkBhcm0uY29tPjsNCj4gV2VpIENoZW4gKEFybSBUZWNobm9sb2d5IENoaW5h
KSA8V2VpLkNoZW5AYXJtLmNvbT4NCj4gU3ViamVjdDogUmU6IFtVTklLUkFGVCBQQVRDSHY2IDA0
LzIzXSBwbGF0OiBDbGVhbiB1cCBrZXJuZWwgaW1hZ2Ugc3ltYm9scw0KPg0KPiBIZWxsbyBKaWEg
SGUsDQo+DQo+IFBsZWFzZSBmaW5kIGEgY29tbWVudCBpbmxpbmUuDQo+DQo+IFRoYW5rcyAmIFJl
Z2FyZHMNCj4gU2hhcmFuDQo+DQo+IE9uIDIvMjIvMTkgNzoyMSBBTSwgSmlhIEhlIHdyb3RlOg0K
PiA+IEZyb206IFdlaSBDaGVuIDx3ZWkuY2hlbkBhcm0uY29tPg0KPiA+IFRoZXJlIGlzIGEgcG90
ZW50aWFsIHVuZGVmaW5lZCBiZWhhdmlvdXIgZm9yIHBvaW50ZXIgY29tcGFyaXNpb24uDQo+ID4g
SG93IHRvIGF2b2lkIHRoaXMgZ2NjIG9wdGltaXphdGlvbiBpcyB1bmRlciBkaXNjdXNzaW5nLiBT
aW5jZSBpdA0KPiA+IC0gICAgICAgaWYgKG1lbV9iYXNlID4gKHVpbnQ2NF90KSZfdGV4dCkNCj4N
Cj4gUmVkdW5kYW50IHR5cGUgY29udmVyc2lvbi4NCg0KWWVzLCB3aWxsIHJlbW92ZSBpdCBpbiBu
ZXh0IHZlcnNpb24gYWZ0ZXIgSSByZXNvbHZlIHRoZSB0YWIgLT4gc3BhY2UgY29udmVydGluZyBp
c3N1ZS4NCg0KVGhhbmtzDQotLQ0KQ2hlZXJzLA0KSnVzdGluIChKaWEgSGUpDQoNCg0KPiA+ICsg
ICAgICAgaWYgKG1lbV9iYXNlID4gKHVuc2lnbmVkIGxvbmcpX19URVhUKQ0KPiA+ICAgICAgICAg
ICAgICAgICAgVUtfQ1JBU0goIkZhdGFsOiBJbWFnZSBvdXRzaWRlIG9mIFJBTVxuIik7DQo+ID4N
Cj4gPiAgICAgICAgICBtYXhfYWRkciA9IG1lbV9iYXNlICsgbWVtX3NpemU7DQo+ID4gLSAgICAg
ICBfbGlia3ZtcGxhdF9wYWdldGFibGUgPSh2b2lkICopIEFMSUdOX0RPV04oKHNpemVfdCkmX2Vu
ZCwNClsuLi5dDQpJTVBPUlRBTlQgTk9USUNFOiBUaGUgY29udGVudHMgb2YgdGhpcyBlbWFpbCBh
bmQgYW55IGF0dGFjaG1lbnRzIGFyZSBjb25maWRlbnRpYWwgYW5kIG1heSBhbHNvIGJlIHByaXZp
bGVnZWQuIElmIHlvdSBhcmUgbm90IHRoZSBpbnRlbmRlZCByZWNpcGllbnQsIHBsZWFzZSBub3Rp
ZnkgdGhlIHNlbmRlciBpbW1lZGlhdGVseSBhbmQgZG8gbm90IGRpc2Nsb3NlIHRoZSBjb250ZW50
cyB0byBhbnkgb3RoZXIgcGVyc29uLCB1c2UgaXQgZm9yIGFueSBwdXJwb3NlLCBvciBzdG9yZSBv
ciBjb3B5IHRoZSBpbmZvcm1hdGlvbiBpbiBhbnkgbWVkaXVtLiBUaGFuayB5b3UuDQpfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFp
bGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3Rz
LnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

